udp-stencil-component-library 1.0.2 → 1.0.3

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 (638) hide show
  1. package/dist/cjs/add-map-feature-popup_4.cjs.entry.js +11 -11
  2. package/dist/cjs/advanced-search_50.cjs.entry.js +109 -41
  3. package/dist/cjs/advanced-search_50.cjs.entry.js.map +1 -1
  4. package/dist/cjs/ag-grid-base_2.cjs.entry.js +2 -2
  5. package/dist/cjs/api-method-grid.cjs.entry.js +1 -1
  6. package/dist/cjs/check-box.cjs.entry.js +2 -2
  7. package/dist/cjs/chip-section.cjs.entry.js +2 -2
  8. package/dist/cjs/client-side-grid.cjs.entry.js +1 -1
  9. package/dist/cjs/color-preview.cjs.entry.js +1 -1
  10. package/dist/cjs/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.text-input-renderer.entry.cjs.js.map +1 -1
  11. package/dist/cjs/date-time-renderer_5.cjs.entry.js +17 -16
  12. package/dist/cjs/date-time-renderer_5.cjs.entry.js.map +1 -1
  13. package/dist/cjs/enums-CA1UjPVU.js +25 -0
  14. package/dist/cjs/enums-CA1UjPVU.js.map +1 -0
  15. package/dist/cjs/feature-details-card_2.cjs.entry.js +5 -5
  16. package/dist/cjs/file-upload.selectable-list.stencil-field.entry.cjs.js.map +1 -1
  17. package/dist/cjs/file-upload_3.cjs.entry.js +73 -29
  18. package/dist/cjs/file-upload_3.cjs.entry.js.map +1 -1
  19. package/dist/cjs/index-Bu1pSYrV.js +8 -8
  20. package/dist/cjs/inputs-example.cjs.entry.js +2 -2
  21. package/dist/cjs/inputs-example.cjs.entry.js.map +1 -1
  22. package/dist/cjs/inputs-example.entry.cjs.js.map +1 -1
  23. package/dist/cjs/loader.cjs.js +1 -1
  24. package/dist/cjs/map-component_2.cjs.entry.js +2 -2
  25. package/dist/cjs/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.cjs.js.map +1 -1
  26. package/dist/cjs/numeric-field_5.cjs.entry.js +194 -19
  27. package/dist/cjs/numeric-field_5.cjs.entry.js.map +1 -1
  28. package/dist/cjs/page-renderer.cjs.entry.js +1 -1
  29. package/dist/cjs/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.cjs.js.map +1 -1
  30. package/dist/cjs/question-configs-renderer_5.cjs.entry.js +17 -4
  31. package/dist/cjs/question-configs-renderer_5.cjs.entry.js.map +1 -1
  32. package/dist/cjs/resource-timeline-calendar.cjs.entry.js +1 -1
  33. package/dist/cjs/resource-timeline-primary-bar.cjs.entry.js +1 -1
  34. package/dist/cjs/server-side-grid.cjs.entry.js +1 -1
  35. package/dist/cjs/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.cjs.js.map +1 -0
  36. package/dist/cjs/{signature-input_4.cjs.entry.js → signature-input_6.cjs.entry.js} +359 -157
  37. package/dist/cjs/signature-input_6.cjs.entry.js.map +1 -0
  38. package/dist/cjs/stencil-library.cjs.js +1 -1
  39. package/dist/cjs/udp-container-query-grid-item.cjs.entry.js +1 -1
  40. package/dist/cjs/udp-container-query-grid.cjs.entry.js +1 -1
  41. package/dist/cjs/udp-container-query.cjs.entry.js +2 -2
  42. package/dist/cjs/udp-container.cjs.entry.js +2 -2
  43. package/dist/cjs/udp-drive-utils-BOyI3h7K.js +180 -0
  44. package/dist/cjs/udp-drive-utils-BOyI3h7K.js.map +1 -0
  45. package/dist/cjs/udp-forms-builder.cjs.entry.js +133 -152
  46. package/dist/cjs/udp-forms-builder.cjs.entry.js.map +1 -1
  47. package/dist/cjs/udp-forms-builder.entry.cjs.js.map +1 -1
  48. package/dist/cjs/udp-forms-list-card_2.cjs.entry.js +5 -5
  49. package/dist/cjs/udp-forms-list.cjs.entry.js +1 -1
  50. package/dist/cjs/udp-forms-renderer.cjs.entry.js +185 -175
  51. package/dist/cjs/udp-forms-renderer.cjs.entry.js.map +1 -1
  52. package/dist/cjs/udp-forms-renderer.entry.cjs.js.map +1 -1
  53. package/dist/cjs/udp-forms-ui.cjs.entry.js +113 -82
  54. package/dist/cjs/udp-forms-ui.cjs.entry.js.map +1 -1
  55. package/dist/cjs/udp-forms-ui.entry.cjs.js.map +1 -1
  56. package/dist/cjs/udp-map.cjs.entry.js +3 -3
  57. package/dist/cjs/udp-page.cjs.entry.js +1 -1
  58. package/dist/cjs/udp-split-screen.cjs.entry.js +1 -1
  59. package/dist/cjs/udp-stepper-demo.cjs.entry.js +1 -1
  60. package/dist/cjs/udp-vertical-spacer.cjs.entry.js +1 -1
  61. package/dist/cjs/utils-CdiEmuDf.js +34 -0
  62. package/dist/cjs/utils-CdiEmuDf.js.map +1 -0
  63. package/dist/collection/collection-manifest.json +2 -0
  64. package/dist/collection/components/my-component/UI/buttons/icon-button/stencil-icon-button.js +22 -0
  65. package/dist/collection/components/my-component/UI/buttons/icon-button/stencil-icon-button.js.map +1 -1
  66. package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.css +269 -0
  67. package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.js +392 -0
  68. package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.js.map +1 -0
  69. package/dist/collection/components/my-component/UI/forms/form/stencil-field.js +38 -14
  70. package/dist/collection/components/my-component/UI/forms/form/stencil-field.js.map +1 -1
  71. package/dist/collection/components/my-component/UI/forms/form/stencil-form.js +81 -28
  72. package/dist/collection/components/my-component/UI/forms/form/stencil-form.js.map +1 -1
  73. package/dist/collection/components/my-component/UI/forms/udp-forms/mockData.js +1 -0
  74. package/dist/collection/components/my-component/UI/forms/udp-forms/mockData.js.map +1 -1
  75. package/dist/collection/components/my-component/UI/forms/udp-forms/types.js.map +1 -1
  76. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-specific-configs-renderer.js +13 -17
  77. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-specific-configs-renderer.js.map +1 -1
  78. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/date-time-renderer.js +4 -3
  79. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/date-time-renderer.js.map +1 -1
  80. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.css +0 -1
  81. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.js +16 -3
  82. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.js.map +1 -1
  83. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/text-input-renderer.js +2 -2
  84. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.js +135 -159
  85. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.js.map +1 -1
  86. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list-card.js +5 -5
  87. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list.js +1 -1
  88. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PrivateFormHandler.js +1 -5
  89. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PrivateFormHandler.js.map +1 -1
  90. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PublicFormHandler.js +1 -0
  91. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PublicFormHandler.js.map +1 -1
  92. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js +188 -172
  93. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js.map +1 -1
  94. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.css +175 -0
  95. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.js +211 -88
  96. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.js.map +1 -1
  97. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.css +166 -0
  98. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.js +215 -0
  99. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.js.map +1 -0
  100. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-question/udp-question.js +5 -5
  101. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-question/udp-question.js.map +1 -1
  102. package/dist/collection/components/my-component/UI/grid/ag-table/ag-table.js +1 -1
  103. package/dist/collection/components/my-component/UI/grid/ambient-template-grid/ambient-template-grid.js +15 -15
  104. package/dist/collection/components/my-component/UI/grid/grid-primary-bar/grid-primary-bar.js +2 -2
  105. package/dist/collection/components/my-component/UI/grid/hotlists/udp-hotlist-form/udp-hotlist-form.js +1 -1
  106. package/dist/collection/components/my-component/UI/grid/new-grid/ag-grid-base.js +1 -1
  107. package/dist/collection/components/my-component/UI/grid/new-grid/api-method-grid.js +1 -1
  108. package/dist/collection/components/my-component/UI/grid/new-grid/client-side-grid.js +1 -1
  109. package/dist/collection/components/my-component/UI/grid/new-grid/grid-header.js +1 -1
  110. package/dist/collection/components/my-component/UI/grid/new-grid/server-side-grid.js +1 -1
  111. package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-calendar.js +1 -1
  112. package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-primary-bar.js +1 -1
  113. package/dist/collection/components/my-component/UI/inputs/checkbox/check-box.js +2 -2
  114. package/dist/collection/components/my-component/UI/inputs/date-selector/udp-date-selector.js +3 -3
  115. package/dist/collection/components/my-component/UI/inputs/date-time-selector/udp-datetime-selector.js +3 -3
  116. package/dist/collection/components/my-component/UI/inputs/file-upload/file-upload.js +35 -22
  117. package/dist/collection/components/my-component/UI/inputs/file-upload/file-upload.js.map +1 -1
  118. package/dist/collection/components/my-component/UI/inputs/file-upload/udp-drive-utils.js +202 -10
  119. package/dist/collection/components/my-component/UI/inputs/file-upload/udp-drive-utils.js.map +1 -1
  120. package/dist/collection/components/my-component/UI/inputs/numeric-field/numeric-field.js +6 -6
  121. package/dist/collection/components/my-component/UI/inputs/numeric-field/numeric-field.js.map +1 -1
  122. package/dist/collection/components/my-component/UI/inputs/signature-input/signature-input.js +52 -22
  123. package/dist/collection/components/my-component/UI/inputs/signature-input/signature-input.js.map +1 -1
  124. package/dist/collection/components/my-component/UI/inputs/tally/tally.js +2 -2
  125. package/dist/collection/components/my-component/UI/inputs/text-area/text-area.js +99 -3
  126. package/dist/collection/components/my-component/UI/inputs/text-area/text-area.js.map +1 -1
  127. package/dist/collection/components/my-component/UI/inputs/text-field/text-field.js +99 -3
  128. package/dist/collection/components/my-component/UI/inputs/text-field/text-field.js.map +1 -1
  129. package/dist/collection/components/my-component/UI/inputs/time-selector/udp-time-selector.js +132 -6
  130. package/dist/collection/components/my-component/UI/inputs/time-selector/udp-time-selector.js.map +1 -1
  131. package/dist/collection/components/my-component/UI/inputs/toggle/stencil-toggle.js +4 -4
  132. package/dist/collection/components/my-component/UI/inputs/udp-selector/udp-selector.js +4 -4
  133. package/dist/collection/components/my-component/UI/layout/udp-container/udp-container.js +2 -2
  134. package/dist/collection/components/my-component/UI/layout/udp-container-query/udp-container-query.js +2 -2
  135. package/dist/collection/components/my-component/UI/layout/udp-container-query-grid/udp-container-query-grid.js +1 -1
  136. package/dist/collection/components/my-component/UI/layout/udp-container-query-grid-item/udp-container-query-grid-item.js +1 -1
  137. package/dist/collection/components/my-component/UI/layout/udp-page/udp-page.js +1 -1
  138. package/dist/collection/components/my-component/UI/layout/udp-split-screen/udp-split-screen.js +1 -1
  139. package/dist/collection/components/my-component/UI/layout/udp-vertical-spacer.js +1 -1
  140. package/dist/collection/components/my-component/UI/loaders/udp-grid-loader/udp-grid-loader.js +2 -2
  141. package/dist/collection/components/my-component/UI/loaders/udp-linear-loader/udp-linear-loader.js +1 -1
  142. package/dist/collection/components/my-component/UI/loaders/udp-skeleton-loading.js +1 -1
  143. package/dist/collection/components/my-component/UI/map/udp-map/map-component.js +1 -1
  144. package/dist/collection/components/my-component/UI/map/udp-map/popups/add-map-feature-popup.js +3 -3
  145. package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-card/feature-details-card.js +4 -4
  146. package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-popup.js +1 -1
  147. package/dist/collection/components/my-component/UI/map/udp-map/popups/select-layer-popup.js +1 -1
  148. package/dist/collection/components/my-component/UI/map/udp-map/popups/split-line-popup.js +1 -1
  149. package/dist/collection/components/my-component/UI/map/udp-map/toolbar/map-toolbar.js +6 -6
  150. package/dist/collection/components/my-component/UI/map/udp-map/udp-map-toolbar.js +1 -1
  151. package/dist/collection/components/my-component/UI/map/udp-map/udp-map.js +3 -3
  152. package/dist/collection/components/my-component/UI/menu/menu-item/udp-menu-item.js +2 -2
  153. package/dist/collection/components/my-component/UI/stepper/udp-stepper-demo.js +1 -1
  154. package/dist/collection/components/my-component/UI/tabs/tab/tabs/udp-tabs.js +1 -1
  155. package/dist/collection/components/my-component/UI/tabs/tab/udp-tab.js +1 -1
  156. package/dist/collection/components/my-component/UI/toolbars/app-bar/app-bar.js +1 -1
  157. package/dist/collection/components/my-component/demo/ambient-demo-container.js +1 -1
  158. package/dist/collection/components/test-component/inputs-example/inputs-example.js +2 -2
  159. package/dist/collection/components/test-component/inputs-example/inputs-example.js.map +1 -1
  160. package/dist/collection/page-renderer/page-renderer.js +1 -1
  161. package/dist/collection/theme/color-preview/color-preview.js +1 -1
  162. package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/chip-section/chip-section.js +2 -2
  163. package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/udp-dynamic-container-with-menu.js +1 -1
  164. package/dist/components/add-map-feature-popup.js +1 -1
  165. package/dist/components/advanced-search-grouped.js +1 -1
  166. package/dist/components/advanced-search.js +1 -1
  167. package/dist/components/ag-grid-base.js +1 -1
  168. package/dist/components/ag-table.js +1 -1
  169. package/dist/components/ambient-demo-container.js +1 -1
  170. package/dist/components/ambient-template-grid.js +1 -1
  171. package/dist/components/api-method-grid.js +4 -4
  172. package/dist/components/app-bar.js +1 -1
  173. package/dist/components/chart-container.js +1 -1
  174. package/dist/components/check-box-group.js +1 -1
  175. package/dist/components/check-box.js +1 -1
  176. package/dist/components/chip-section.js +3 -3
  177. package/dist/components/client-side-grid.js +3 -3
  178. package/dist/components/color-preview.js +1 -1
  179. package/dist/components/date-time-renderer.js +1 -1
  180. package/dist/components/edit-view-form-dialog.js +1 -1
  181. package/dist/components/feature-details-card.js +1 -1
  182. package/dist/components/feature-details-popup.js +1 -1
  183. package/dist/components/file-upload-renderer.js +1 -1
  184. package/dist/components/file-upload.js +1 -1
  185. package/dist/components/grid-header.js +1 -1
  186. package/dist/components/grid-primary-bar.js +1 -1
  187. package/dist/components/inputs-example.js +15 -15
  188. package/dist/components/inputs-example.js.map +1 -1
  189. package/dist/components/list-options-renderer.js +1 -1
  190. package/dist/components/map-component.js +1 -1
  191. package/dist/components/map-toolbar.js +1 -1
  192. package/dist/components/my-component.js +26 -26
  193. package/dist/components/numeric-field.js +1 -1
  194. package/dist/components/{p-CfZR5rek.js → p-0F2I6Qvn.js} +3 -3
  195. package/dist/components/{p-CfZR5rek.js.map → p-0F2I6Qvn.js.map} +1 -1
  196. package/dist/components/{p-BbC2Itep.js → p-1CPON0Xx.js} +5 -5
  197. package/dist/components/{p-BbC2Itep.js.map → p-1CPON0Xx.js.map} +1 -1
  198. package/dist/components/{p-IlXn87Ki.js → p-1Cv4cku0.js} +4 -14
  199. package/dist/components/p-1Cv4cku0.js.map +1 -0
  200. package/dist/components/{p-CTn3c76I.js → p-1uly65Sv.js} +3 -3
  201. package/dist/components/{p-CTn3c76I.js.map → p-1uly65Sv.js.map} +1 -1
  202. package/dist/components/{p-C8cWVxBF.js → p-26jyxB7s.js} +66 -27
  203. package/dist/components/p-26jyxB7s.js.map +1 -0
  204. package/dist/components/{p-GQEOUb0c.js → p-4hWvEEZf.js} +5 -5
  205. package/dist/components/{p-GQEOUb0c.js.map → p-4hWvEEZf.js.map} +1 -1
  206. package/dist/components/{p-HrsHnWeG.js → p-6EzLtNtq.js} +6 -6
  207. package/dist/components/{p-HrsHnWeG.js.map → p-6EzLtNtq.js.map} +1 -1
  208. package/dist/components/{p-syf9yo9-.js → p-8avkq8Fj.js} +4 -4
  209. package/dist/components/{p-syf9yo9-.js.map → p-8avkq8Fj.js.map} +1 -1
  210. package/dist/components/{p-B8k9GGZB.js → p-8paOuPay.js} +4 -4
  211. package/dist/components/{p-B8k9GGZB.js.map → p-8paOuPay.js.map} +1 -1
  212. package/dist/components/{p-DntePo7I.js → p-B2mj8zmp.js} +3 -3
  213. package/dist/components/{p-DntePo7I.js.map → p-B2mj8zmp.js.map} +1 -1
  214. package/dist/components/{p-Bv1MGbhE.js → p-B3gbGwCE.js} +50 -83
  215. package/dist/components/p-B3gbGwCE.js.map +1 -0
  216. package/dist/components/{p-ves_LtSN.js → p-B6A-djr0.js} +4 -4
  217. package/dist/components/{p-ves_LtSN.js.map → p-B6A-djr0.js.map} +1 -1
  218. package/dist/components/{p-D0T6NTw2.js → p-BANMRVyZ.js} +3 -3
  219. package/dist/components/{p-D0T6NTw2.js.map → p-BANMRVyZ.js.map} +1 -1
  220. package/dist/components/{p-D-JeGky8.js → p-BB2sALAW.js} +3 -3
  221. package/dist/components/{p-D-JeGky8.js.map → p-BB2sALAW.js.map} +1 -1
  222. package/dist/components/{p-DehJN46u.js → p-BLWvjl_b.js} +6 -6
  223. package/dist/components/{p-DehJN46u.js.map → p-BLWvjl_b.js.map} +1 -1
  224. package/dist/components/{p-y6ddPVSK.js → p-BO3Kzy6x.js} +6 -6
  225. package/dist/components/{p-y6ddPVSK.js.map → p-BO3Kzy6x.js.map} +1 -1
  226. package/dist/components/p-BY5RQ-T1.js +16 -0
  227. package/dist/components/p-BY5RQ-T1.js.map +1 -0
  228. package/dist/components/{p-ClToknIK.js → p-BbOHuqrJ.js} +5 -5
  229. package/dist/components/{p-ClToknIK.js.map → p-BbOHuqrJ.js.map} +1 -1
  230. package/dist/components/{p-CJsnV8uM.js → p-BfT3KUJC.js} +4 -4
  231. package/dist/components/{p-CJsnV8uM.js.map → p-BfT3KUJC.js.map} +1 -1
  232. package/dist/components/{p-BdWgc1UD.js → p-Bi8lqIP-.js} +8 -7
  233. package/dist/components/p-Bi8lqIP-.js.map +1 -0
  234. package/dist/components/{p-DNxY-i6k.js → p-BpD1NQKC.js} +5 -5
  235. package/dist/components/{p-DNxY-i6k.js.map → p-BpD1NQKC.js.map} +1 -1
  236. package/dist/components/p-BtOBW9_N.js +142 -0
  237. package/dist/components/p-BtOBW9_N.js.map +1 -0
  238. package/dist/components/{p-Akx0UDMW.js → p-BwPAbBUr.js} +4 -4
  239. package/dist/components/{p-Akx0UDMW.js.map → p-BwPAbBUr.js.map} +1 -1
  240. package/dist/components/p-BzH4NpB-.js +301 -0
  241. package/dist/components/p-BzH4NpB-.js.map +1 -0
  242. package/dist/components/{p-CSunqYw8.js → p-C-E6e6mL.js} +17 -17
  243. package/dist/components/{p-CSunqYw8.js.map → p-C-E6e6mL.js.map} +1 -1
  244. package/dist/components/{p-DWJbhjYR.js → p-C1K2NBql.js} +5 -5
  245. package/dist/components/{p-DWJbhjYR.js.map → p-C1K2NBql.js.map} +1 -1
  246. package/dist/components/{p-CNC3rtXm.js → p-C2j9tPIU.js} +4 -4
  247. package/dist/components/{p-CNC3rtXm.js.map → p-C2j9tPIU.js.map} +1 -1
  248. package/dist/components/p-C5aOw4Ij.js +168 -0
  249. package/dist/components/p-C5aOw4Ij.js.map +1 -0
  250. package/dist/components/{p-CJINZgmD.js → p-C6bm8Rs4.js} +17 -17
  251. package/dist/components/{p-CJINZgmD.js.map → p-C6bm8Rs4.js.map} +1 -1
  252. package/dist/components/{p-PqypuW_Q.js → p-CL4gkS6u.js} +22 -84
  253. package/dist/components/p-CL4gkS6u.js.map +1 -0
  254. package/dist/components/{p-DeS7YSzc.js → p-CMTLAuz8.js} +3 -3
  255. package/dist/components/{p-DeS7YSzc.js.map → p-CMTLAuz8.js.map} +1 -1
  256. package/dist/components/p-CWAWWTnd.js +47 -0
  257. package/dist/components/p-CWAWWTnd.js.map +1 -0
  258. package/dist/components/{p-B3-pcvgV.js → p-Cdz5sX_v.js} +38 -25
  259. package/dist/components/p-Cdz5sX_v.js.map +1 -0
  260. package/dist/components/{p-byKLubNE.js → p-Coa3kO6W.js} +3 -3
  261. package/dist/components/{p-byKLubNE.js.map → p-Coa3kO6W.js.map} +1 -1
  262. package/dist/components/{p-DzaN4l_Y.js → p-Cp1kbBGM.js} +5 -5
  263. package/dist/components/{p-DzaN4l_Y.js.map → p-Cp1kbBGM.js.map} +1 -1
  264. package/dist/components/{p-BYsLvu6g.js → p-CpMdhv3j.js} +69 -5
  265. package/dist/components/p-CpMdhv3j.js.map +1 -0
  266. package/dist/components/{p-BWI0GtPn.js → p-CpQin4NC.js} +7 -7
  267. package/dist/components/{p-BWI0GtPn.js.map → p-CpQin4NC.js.map} +1 -1
  268. package/dist/components/{p-DIPIddaO.js → p-CqiZ9SAU.js} +3 -3
  269. package/dist/components/{p-DIPIddaO.js.map → p-CqiZ9SAU.js.map} +1 -1
  270. package/dist/components/{p-DxJCXXmE.js → p-Cr_ifuX-.js} +27 -26
  271. package/dist/components/p-Cr_ifuX-.js.map +1 -0
  272. package/dist/components/{p-bLKTEsIH.js → p-CsMmUkoQ.js} +8 -8
  273. package/dist/components/{p-bLKTEsIH.js.map → p-CsMmUkoQ.js.map} +1 -1
  274. package/dist/components/{p-Cf-3pInV.js → p-Ct7EvUCI.js} +3 -3
  275. package/dist/components/{p-Cf-3pInV.js.map → p-Ct7EvUCI.js.map} +1 -1
  276. package/dist/components/{p-BbHv2Hzb.js → p-CvQ8X76F.js} +8 -8
  277. package/dist/components/{p-BbHv2Hzb.js.map → p-CvQ8X76F.js.map} +1 -1
  278. package/dist/components/{p-BEwTqpWE.js → p-CxOYMG-r.js} +4 -4
  279. package/dist/components/{p-BEwTqpWE.js.map → p-CxOYMG-r.js.map} +1 -1
  280. package/dist/components/{p-DOKGpXin.js → p-Cyigv-iT.js} +27 -8
  281. package/dist/components/p-Cyigv-iT.js.map +1 -0
  282. package/dist/components/{p-hRee3qYx.js → p-D6Wo7quX.js} +7 -2
  283. package/dist/components/p-D6Wo7quX.js.map +1 -0
  284. package/dist/components/{p-BUw3R0Ql.js → p-D9A5l8BE.js} +7 -7
  285. package/dist/components/{p-BUw3R0Ql.js.map → p-D9A5l8BE.js.map} +1 -1
  286. package/dist/components/{p-CDnOrzs3.js → p-DBtdo56U.js} +4 -4
  287. package/dist/components/{p-CDnOrzs3.js.map → p-DBtdo56U.js.map} +1 -1
  288. package/dist/components/{p-BIc3R4fE.js → p-DFKz-3Nr.js} +5 -5
  289. package/dist/components/{p-BIc3R4fE.js.map → p-DFKz-3Nr.js.map} +1 -1
  290. package/dist/components/{p-BJerffMg.js → p-DL9uHt-7.js} +5 -5
  291. package/dist/components/{p-BJerffMg.js.map → p-DL9uHt-7.js.map} +1 -1
  292. package/dist/components/{p-DIcPqQkn.js → p-DSIcWNUB.js} +5 -4
  293. package/dist/components/p-DSIcWNUB.js.map +1 -0
  294. package/dist/components/{p-CRiQA7Cy.js → p-DZaCCOXB.js} +69 -5
  295. package/dist/components/p-DZaCCOXB.js.map +1 -0
  296. package/dist/components/{p-BwHEv1Kb.js → p-DaMmzX_J.js} +13 -13
  297. package/dist/components/{p-BwHEv1Kb.js.map → p-DaMmzX_J.js.map} +1 -1
  298. package/dist/components/{p-CY0PAhIT.js → p-Dmmz74K2.js} +4 -4
  299. package/dist/components/{p-CY0PAhIT.js.map → p-Dmmz74K2.js.map} +1 -1
  300. package/dist/components/{p-DMcaGgHq.js → p-DnMRLbBX.js} +5 -5
  301. package/dist/components/{p-DMcaGgHq.js.map → p-DnMRLbBX.js.map} +1 -1
  302. package/dist/components/{p-ChdtzL8Z.js → p-Dpvhge5H.js} +10 -9
  303. package/dist/components/p-Dpvhge5H.js.map +1 -0
  304. package/dist/components/p-DtiAfg0X.js +25 -0
  305. package/dist/components/p-DtiAfg0X.js.map +1 -0
  306. package/dist/components/{p-XoXMxeuq.js → p-Dwnxv7WO.js} +3 -3
  307. package/dist/components/{p-XoXMxeuq.js.map → p-Dwnxv7WO.js.map} +1 -1
  308. package/dist/components/{p-BvSuY3tY.js → p-Dx5ehH3t.js} +7 -7
  309. package/dist/components/{p-BvSuY3tY.js.map → p-Dx5ehH3t.js.map} +1 -1
  310. package/dist/components/{p-DueJnVH4.js → p-DyC6jVV8.js} +10 -9
  311. package/dist/components/p-DyC6jVV8.js.map +1 -0
  312. package/dist/components/{p-Bdt-oOnd.js → p-Oil5iqFm.js} +120 -8
  313. package/dist/components/p-Oil5iqFm.js.map +1 -0
  314. package/dist/components/{p-C6aDnKNm.js → p-P3YTnOWe.js} +5 -5
  315. package/dist/components/{p-C6aDnKNm.js.map → p-P3YTnOWe.js.map} +1 -1
  316. package/dist/components/{p-CLvAjrtw.js → p-Qxi-zxd0.js} +8 -8
  317. package/dist/components/{p-CLvAjrtw.js.map → p-Qxi-zxd0.js.map} +1 -1
  318. package/dist/components/{p-DRO3I7Mm.js → p-Qxw1cxga.js} +8 -8
  319. package/dist/components/{p-DRO3I7Mm.js.map → p-Qxw1cxga.js.map} +1 -1
  320. package/dist/components/{p-DLWUrvpt.js → p-Tu9UB-v3.js} +5 -5
  321. package/dist/components/{p-DLWUrvpt.js.map → p-Tu9UB-v3.js.map} +1 -1
  322. package/dist/components/{p-DQIj9UI7.js → p-Ut5zP7nE.js} +5 -5
  323. package/dist/components/{p-DQIj9UI7.js.map → p-Ut5zP7nE.js.map} +1 -1
  324. package/dist/components/{p-Thx6k3Xp.js → p-WLd9SWLl.js} +4 -4
  325. package/dist/components/{p-Thx6k3Xp.js.map → p-WLd9SWLl.js.map} +1 -1
  326. package/dist/components/{p-BTIWOttf.js → p-W_kxEzVl.js} +6 -6
  327. package/dist/components/{p-BTIWOttf.js.map → p-W_kxEzVl.js.map} +1 -1
  328. package/dist/components/{p-BOW03S7b.js → p-XP8tp0pm.js} +5 -5
  329. package/dist/components/{p-BOW03S7b.js.map → p-XP8tp0pm.js.map} +1 -1
  330. package/dist/components/{p-w2FTnlQG.js → p-_HuUfybA.js} +3 -3
  331. package/dist/components/{p-w2FTnlQG.js.map → p-_HuUfybA.js.map} +1 -1
  332. package/dist/components/{p-BU706xtx.js → p-hWgAmNsF.js} +3 -3
  333. package/dist/components/{p-BU706xtx.js.map → p-hWgAmNsF.js.map} +1 -1
  334. package/dist/components/{p-Bykep8mm.js → p-ibwbE8nI.js} +4 -4
  335. package/dist/components/{p-Bykep8mm.js.map → p-ibwbE8nI.js.map} +1 -1
  336. package/dist/components/{p-CA-v1fbV.js → p-ill5r6eV.js} +40 -9
  337. package/dist/components/p-ill5r6eV.js.map +1 -0
  338. package/dist/components/{p-DqYsDDHy.js → p-jdqTpLxN.js} +4 -4
  339. package/dist/components/{p-DqYsDDHy.js.map → p-jdqTpLxN.js.map} +1 -1
  340. package/dist/components/{p-ByM88ZWk.js → p-jpt3zFdi.js} +3 -3
  341. package/dist/components/{p-ByM88ZWk.js.map → p-jpt3zFdi.js.map} +1 -1
  342. package/dist/components/{p-BEtm34A3.js → p-ncemY4Wx.js} +37 -36
  343. package/dist/components/p-ncemY4Wx.js.map +1 -0
  344. package/dist/components/{p-DqPGCQm2.js → p-s8qXxEgi.js} +3 -3
  345. package/dist/components/{p-DqPGCQm2.js.map → p-s8qXxEgi.js.map} +1 -1
  346. package/dist/components/p-vrP9HZiW.js +156 -0
  347. package/dist/components/p-vrP9HZiW.js.map +1 -0
  348. package/dist/components/{p-D32jPxWa.js → p-ycrk0Lr4.js} +5 -5
  349. package/dist/components/{p-D32jPxWa.js.map → p-ycrk0Lr4.js.map} +1 -1
  350. package/dist/components/page-renderer.js +21 -21
  351. package/dist/components/primary-action-header.js +1 -1
  352. package/dist/components/question-configs-renderer.js +1 -1
  353. package/dist/components/question-specific-configs-renderer.js +1 -1
  354. package/dist/components/resource-timeline-calendar.js +5 -5
  355. package/dist/components/resource-timeline-primary-bar.js +1 -1
  356. package/dist/components/save-view-form-dialog.js +1 -1
  357. package/dist/components/search-list-item.js +1 -1
  358. package/dist/components/section-configs-renderer.js +1 -1
  359. package/dist/components/select-layer-popup.js +1 -1
  360. package/dist/components/server-side-grid.js +1 -1
  361. package/dist/components/side-sheet.js +1 -1
  362. package/dist/components/signature-input.js +1 -1
  363. package/dist/components/split-line-popup.js +1 -1
  364. package/dist/components/stencil-field.js +1 -1
  365. package/dist/components/stencil-form.js +1 -1
  366. package/dist/components/stencil-icon-button.js +1 -1
  367. package/dist/components/stencil-toggle.js +1 -1
  368. package/dist/components/tally-display.js +1 -1
  369. package/dist/components/text-area.js +1 -1
  370. package/dist/components/text-field.js +1 -1
  371. package/dist/components/text-input-renderer.js +1 -1
  372. package/dist/components/udp-ambient-card.js +1 -1
  373. package/dist/components/udp-avatar.js +1 -1
  374. package/dist/components/udp-bar-chart.js +1 -1
  375. package/dist/components/udp-charts-example.js +7 -7
  376. package/dist/components/udp-container-query-grid-item.js +1 -1
  377. package/dist/components/udp-container-query-grid.js +2 -2
  378. package/dist/components/udp-container-query.js +1 -1
  379. package/dist/components/udp-container.js +1 -1
  380. package/dist/components/udp-date-selector.js +1 -1
  381. package/dist/components/udp-datetime-selector.js +1 -1
  382. package/dist/components/udp-distribution-chart.js +1 -1
  383. package/dist/components/udp-donut-chart.js +1 -1
  384. package/dist/components/udp-dynamic-container-with-menu.js +1 -1
  385. package/dist/components/udp-dynamic-form.js +4 -4
  386. package/dist/components/udp-forms-builder-menu.js +1 -1
  387. package/dist/components/udp-forms-builder-question-item.js +1 -1
  388. package/dist/components/udp-forms-builder-style-override.js +1 -1
  389. package/dist/components/udp-forms-builder.js +162 -183
  390. package/dist/components/udp-forms-builder.js.map +1 -1
  391. package/dist/components/udp-forms-list-card.js +1 -1
  392. package/dist/components/udp-forms-list.js +10 -10
  393. package/dist/components/udp-forms-renderer.js +244 -219
  394. package/dist/components/udp-forms-renderer.js.map +1 -1
  395. package/dist/components/udp-forms-ui.js +1 -1
  396. package/dist/components/udp-grid-loader.js +1 -1
  397. package/dist/components/udp-hotlist-form.js +1 -1
  398. package/dist/components/udp-icon-button.d.ts +11 -0
  399. package/dist/components/udp-icon-button.js +9 -0
  400. package/dist/components/udp-icon-button.js.map +1 -0
  401. package/dist/components/udp-icon.js +1 -1
  402. package/dist/components/udp-line-chart.js +1 -1
  403. package/dist/components/udp-linear-loader.js +1 -1
  404. package/dist/components/udp-list-item.js +2 -2
  405. package/dist/components/udp-map-toolbar.js +1 -1
  406. package/dist/components/udp-map.js +17 -17
  407. package/dist/components/udp-menu-item.js +1 -1
  408. package/dist/components/udp-page.js +1 -1
  409. package/dist/components/udp-question.js +1 -1
  410. package/dist/components/udp-save-draft-button.d.ts +11 -0
  411. package/dist/components/udp-save-draft-button.js +9 -0
  412. package/dist/components/udp-save-draft-button.js.map +1 -0
  413. package/dist/components/udp-selector.js +1 -1
  414. package/dist/components/udp-side-sheet.js +1 -1
  415. package/dist/components/udp-skeleton-loading.js +1 -1
  416. package/dist/components/udp-split-screen.js +1 -1
  417. package/dist/components/udp-stepper-demo.js +1 -1
  418. package/dist/components/udp-tab.js +1 -1
  419. package/dist/components/udp-tabs.js +1 -1
  420. package/dist/components/udp-time-selector.js +1 -1
  421. package/dist/components/udp-vertical-spacer.js +1 -1
  422. package/dist/esm/add-map-feature-popup_4.entry.js +11 -11
  423. package/dist/esm/advanced-search_50.entry.js +109 -41
  424. package/dist/esm/advanced-search_50.entry.js.map +1 -1
  425. package/dist/esm/ag-grid-base_2.entry.js +2 -2
  426. package/dist/esm/api-method-grid.entry.js +1 -1
  427. package/dist/esm/check-box.entry.js +2 -2
  428. package/dist/esm/chip-section.entry.js +2 -2
  429. package/dist/esm/client-side-grid.entry.js +1 -1
  430. package/dist/esm/color-preview.entry.js +1 -1
  431. package/dist/esm/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.text-input-renderer.entry.js.map +1 -1
  432. package/dist/esm/date-time-renderer_5.entry.js +17 -16
  433. package/dist/esm/date-time-renderer_5.entry.js.map +1 -1
  434. package/dist/esm/enums-DtiAfg0X.js +25 -0
  435. package/dist/esm/enums-DtiAfg0X.js.map +1 -0
  436. package/dist/esm/feature-details-card_2.entry.js +5 -5
  437. package/dist/esm/file-upload.selectable-list.stencil-field.entry.js.map +1 -1
  438. package/dist/esm/file-upload_3.entry.js +73 -29
  439. package/dist/esm/file-upload_3.entry.js.map +1 -1
  440. package/dist/esm/index-CaIWDYyq.js +8 -8
  441. package/dist/esm/inputs-example.entry.js +2 -2
  442. package/dist/esm/inputs-example.entry.js.map +1 -1
  443. package/dist/esm/loader.js +1 -1
  444. package/dist/esm/map-component_2.entry.js +2 -2
  445. package/dist/esm/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.js.map +1 -1
  446. package/dist/esm/numeric-field_5.entry.js +195 -20
  447. package/dist/esm/numeric-field_5.entry.js.map +1 -1
  448. package/dist/esm/page-renderer.entry.js +1 -1
  449. package/dist/esm/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.js.map +1 -1
  450. package/dist/esm/question-configs-renderer_5.entry.js +17 -4
  451. package/dist/esm/question-configs-renderer_5.entry.js.map +1 -1
  452. package/dist/esm/resource-timeline-calendar.entry.js +1 -1
  453. package/dist/esm/resource-timeline-primary-bar.entry.js +1 -1
  454. package/dist/esm/server-side-grid.entry.js +1 -1
  455. package/dist/esm/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.js.map +1 -0
  456. package/dist/esm/{signature-input_4.entry.js → signature-input_6.entry.js} +315 -115
  457. package/dist/esm/signature-input_6.entry.js.map +1 -0
  458. package/dist/esm/stencil-library.js +1 -1
  459. package/dist/esm/udp-container-query-grid-item.entry.js +1 -1
  460. package/dist/esm/udp-container-query-grid.entry.js +1 -1
  461. package/dist/esm/udp-container-query.entry.js +2 -2
  462. package/dist/esm/udp-container.entry.js +2 -2
  463. package/dist/esm/udp-drive-utils-Cm3Sms8t.js +168 -0
  464. package/dist/esm/udp-drive-utils-Cm3Sms8t.js.map +1 -0
  465. package/dist/esm/udp-forms-builder.entry.js +133 -152
  466. package/dist/esm/udp-forms-builder.entry.js.map +1 -1
  467. package/dist/esm/udp-forms-list-card_2.entry.js +5 -5
  468. package/dist/esm/udp-forms-list.entry.js +1 -1
  469. package/dist/esm/udp-forms-renderer.entry.js +186 -176
  470. package/dist/esm/udp-forms-renderer.entry.js.map +1 -1
  471. package/dist/esm/udp-forms-ui.entry.js +113 -82
  472. package/dist/esm/udp-forms-ui.entry.js.map +1 -1
  473. package/dist/esm/udp-map.entry.js +3 -3
  474. package/dist/esm/udp-page.entry.js +1 -1
  475. package/dist/esm/udp-split-screen.entry.js +1 -1
  476. package/dist/esm/udp-stepper-demo.entry.js +1 -1
  477. package/dist/esm/udp-vertical-spacer.entry.js +1 -1
  478. package/dist/esm/utils-DZv4MqyU.js +31 -0
  479. package/dist/esm/utils-DZv4MqyU.js.map +1 -0
  480. package/dist/stencil-library/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.text-input-renderer.entry.esm.js.map +1 -1
  481. package/dist/stencil-library/file-upload.selectable-list.stencil-field.entry.esm.js.map +1 -1
  482. package/dist/stencil-library/inputs-example.entry.esm.js.map +1 -1
  483. package/dist/stencil-library/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.esm.js.map +1 -1
  484. package/dist/stencil-library/p-09319660.entry.js +2 -0
  485. package/dist/stencil-library/p-09319660.entry.js.map +1 -0
  486. package/dist/stencil-library/p-146bc917.entry.js +2 -0
  487. package/dist/stencil-library/{p-b3b6310e.entry.js → p-147c4595.entry.js} +2 -2
  488. package/dist/stencil-library/{p-06ca29e0.entry.js → p-1b001f78.entry.js} +2 -2
  489. package/dist/stencil-library/{p-762591f6.entry.js → p-2635a6cc.entry.js} +2 -2
  490. package/dist/stencil-library/p-2f2fd111.entry.js +2 -0
  491. package/dist/stencil-library/{p-368be454.entry.js → p-2fc495ce.entry.js} +2 -2
  492. package/dist/stencil-library/{p-fdfa7087.entry.js → p-476c08df.entry.js} +2 -2
  493. package/dist/stencil-library/{p-ee1610d3.entry.js → p-4ab893a0.entry.js} +2 -2
  494. package/dist/stencil-library/p-4dac2b6d.entry.js +2 -0
  495. package/dist/stencil-library/p-4dac2b6d.entry.js.map +1 -0
  496. package/dist/stencil-library/p-556a182f.entry.js +2 -0
  497. package/dist/stencil-library/p-556a182f.entry.js.map +1 -0
  498. package/dist/stencil-library/p-5ac16f81.entry.js +2 -0
  499. package/dist/stencil-library/p-5ac16f81.entry.js.map +1 -0
  500. package/dist/stencil-library/p-609236fc.entry.js +2 -0
  501. package/dist/stencil-library/p-609236fc.entry.js.map +1 -0
  502. package/dist/stencil-library/{p-9b0b311b.entry.js → p-64330dbb.entry.js} +2 -2
  503. package/dist/stencil-library/p-65a5cce3.entry.js +2 -0
  504. package/dist/stencil-library/{p-5a946191.entry.js → p-70d8a0d8.entry.js} +2 -2
  505. package/dist/stencil-library/{p-79065768.entry.js → p-8119eb18.entry.js} +2 -2
  506. package/dist/stencil-library/{p-2f99476a.entry.js → p-86cd0134.entry.js} +2 -2
  507. package/dist/stencil-library/p-89aa56f1.entry.js +2 -0
  508. package/dist/stencil-library/p-89aa56f1.entry.js.map +1 -0
  509. package/dist/stencil-library/{p-767b7be7.entry.js → p-8a0b6bd4.entry.js} +2 -2
  510. package/dist/stencil-library/{p-40127f9f.entry.js → p-90fbca0f.entry.js} +2 -2
  511. package/dist/stencil-library/p-C5aOw4Ij.js +2 -0
  512. package/dist/stencil-library/p-C5aOw4Ij.js.map +1 -0
  513. package/dist/stencil-library/p-DZv4MqyU.js +2 -0
  514. package/dist/stencil-library/p-DZv4MqyU.js.map +1 -0
  515. package/dist/stencil-library/p-DtiAfg0X.js +2 -0
  516. package/dist/stencil-library/p-DtiAfg0X.js.map +1 -0
  517. package/dist/stencil-library/{p-f4f4ba61.entry.js → p-a98b033e.entry.js} +2 -2
  518. package/dist/stencil-library/p-a98b033e.entry.js.map +1 -0
  519. package/dist/stencil-library/{p-2a11c543.entry.js → p-ae167d4b.entry.js} +2 -2
  520. package/dist/stencil-library/{p-55459135.entry.js → p-b53e1b9a.entry.js} +2 -2
  521. package/dist/stencil-library/p-c1966f2c.entry.js +2 -0
  522. package/dist/stencil-library/p-c1966f2c.entry.js.map +1 -0
  523. package/dist/stencil-library/{p-0de6045a.entry.js → p-c9046d64.entry.js} +2 -2
  524. package/dist/stencil-library/{p-c1809ef3.entry.js → p-ca53be83.entry.js} +2 -2
  525. package/dist/stencil-library/p-d46dd16c.entry.js +2 -0
  526. package/dist/stencil-library/{p-09186dea.entry.js → p-d48b5599.entry.js} +2 -2
  527. package/dist/stencil-library/p-d4f31146.entry.js +2 -0
  528. package/dist/stencil-library/p-d4f31146.entry.js.map +1 -0
  529. package/dist/stencil-library/{p-b0b70c0b.entry.js → p-e7e8a8a3.entry.js} +2 -2
  530. package/dist/stencil-library/p-ea6e9a24.entry.js +2 -0
  531. package/dist/stencil-library/p-ea6e9a24.entry.js.map +1 -0
  532. package/dist/stencil-library/{p-79587009.entry.js → p-f4b5879d.entry.js} +2 -2
  533. package/dist/stencil-library/p-fbfbbcf1.entry.js +2 -0
  534. package/dist/stencil-library/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.esm.js.map +1 -1
  535. package/dist/stencil-library/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.esm.js.map +1 -0
  536. package/dist/stencil-library/stencil-library.esm.js +1 -1
  537. package/dist/stencil-library/udp-forms-builder.entry.esm.js.map +1 -1
  538. package/dist/stencil-library/udp-forms-renderer.entry.esm.js.map +1 -1
  539. package/dist/stencil-library/udp-forms-ui.entry.esm.js.map +1 -1
  540. package/dist/types/components/my-component/UI/buttons/icon-button/stencil-icon-button.d.ts +14 -0
  541. package/dist/types/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.d.ts +91 -0
  542. package/dist/types/components/my-component/UI/forms/form/stencil-field.d.ts +2 -1
  543. package/dist/types/components/my-component/UI/forms/form/stencil-form.d.ts +7 -5
  544. package/dist/types/components/my-component/UI/forms/udp-forms/types.d.ts +16 -0
  545. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.d.ts +1 -0
  546. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.d.ts +16 -19
  547. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.d.ts +14 -26
  548. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.d.ts +21 -7
  549. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.d.ts +20 -0
  550. package/dist/types/components/my-component/UI/inputs/file-upload/file-upload.d.ts +1 -1
  551. package/dist/types/components/my-component/UI/inputs/file-upload/udp-drive-utils.d.ts +68 -1
  552. package/dist/types/components/my-component/UI/inputs/numeric-field/numeric-field.d.ts +1 -1
  553. package/dist/types/components/my-component/UI/inputs/signature-input/signature-input.d.ts +1 -1
  554. package/dist/types/components/my-component/UI/inputs/text-area/text-area.d.ts +21 -0
  555. package/dist/types/components/my-component/UI/inputs/text-field/text-field.d.ts +21 -0
  556. package/dist/types/components/my-component/UI/inputs/time-selector/udp-time-selector.d.ts +33 -1
  557. package/dist/types/components.d.ts +384 -14
  558. package/package.json +1 -1
  559. package/dist/cjs/signature-input.stencil-form.tally-display.udp-question.entry.cjs.js.map +0 -1
  560. package/dist/cjs/signature-input_4.cjs.entry.js.map +0 -1
  561. package/dist/cjs/utils-DMhqs00g.js +0 -55
  562. package/dist/cjs/utils-DMhqs00g.js.map +0 -1
  563. package/dist/collection/components/my-component/UI/forms/form/stencil-field.css +0 -70
  564. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.css +0 -89
  565. package/dist/components/p-B3-pcvgV.js.map +0 -1
  566. package/dist/components/p-BEtm34A3.js.map +0 -1
  567. package/dist/components/p-BYsLvu6g.js.map +0 -1
  568. package/dist/components/p-BdWgc1UD.js.map +0 -1
  569. package/dist/components/p-Bdt-oOnd.js.map +0 -1
  570. package/dist/components/p-Bv1MGbhE.js.map +0 -1
  571. package/dist/components/p-C8cWVxBF.js.map +0 -1
  572. package/dist/components/p-C9cEH65u.js +0 -307
  573. package/dist/components/p-C9cEH65u.js.map +0 -1
  574. package/dist/components/p-CA-v1fbV.js.map +0 -1
  575. package/dist/components/p-CRiQA7Cy.js.map +0 -1
  576. package/dist/components/p-ChdtzL8Z.js.map +0 -1
  577. package/dist/components/p-DIcPqQkn.js.map +0 -1
  578. package/dist/components/p-DOKGpXin.js.map +0 -1
  579. package/dist/components/p-DueJnVH4.js.map +0 -1
  580. package/dist/components/p-DxJCXXmE.js.map +0 -1
  581. package/dist/components/p-IlXn87Ki.js.map +0 -1
  582. package/dist/components/p-PqypuW_Q.js.map +0 -1
  583. package/dist/components/p-hRee3qYx.js.map +0 -1
  584. package/dist/esm/signature-input.stencil-form.tally-display.udp-question.entry.js.map +0 -1
  585. package/dist/esm/signature-input_4.entry.js.map +0 -1
  586. package/dist/esm/utils-vXSpJxEK.js +0 -52
  587. package/dist/esm/utils-vXSpJxEK.js.map +0 -1
  588. package/dist/stencil-library/p-00c1ce44.entry.js +0 -2
  589. package/dist/stencil-library/p-00c1ce44.entry.js.map +0 -1
  590. package/dist/stencil-library/p-250a8400.entry.js +0 -2
  591. package/dist/stencil-library/p-2fda98ee.entry.js +0 -2
  592. package/dist/stencil-library/p-2fda98ee.entry.js.map +0 -1
  593. package/dist/stencil-library/p-50f67815.entry.js +0 -2
  594. package/dist/stencil-library/p-50f67815.entry.js.map +0 -1
  595. package/dist/stencil-library/p-584552e6.entry.js +0 -2
  596. package/dist/stencil-library/p-5e96c57a.entry.js +0 -2
  597. package/dist/stencil-library/p-5e96c57a.entry.js.map +0 -1
  598. package/dist/stencil-library/p-6a1febc9.entry.js +0 -2
  599. package/dist/stencil-library/p-6ed5258c.entry.js +0 -2
  600. package/dist/stencil-library/p-6ed5258c.entry.js.map +0 -1
  601. package/dist/stencil-library/p-77739d4b.entry.js +0 -2
  602. package/dist/stencil-library/p-77739d4b.entry.js.map +0 -1
  603. package/dist/stencil-library/p-7a2202b9.entry.js +0 -2
  604. package/dist/stencil-library/p-7a2202b9.entry.js.map +0 -1
  605. package/dist/stencil-library/p-84109194.entry.js +0 -2
  606. package/dist/stencil-library/p-b1d412a7.entry.js +0 -2
  607. package/dist/stencil-library/p-b1d412a7.entry.js.map +0 -1
  608. package/dist/stencil-library/p-f4f4ba61.entry.js.map +0 -1
  609. package/dist/stencil-library/p-f7c855d0.entry.js +0 -2
  610. package/dist/stencil-library/p-f889438a.entry.js +0 -2
  611. package/dist/stencil-library/p-f889438a.entry.js.map +0 -1
  612. package/dist/stencil-library/p-vXSpJxEK.js +0 -2
  613. package/dist/stencil-library/p-vXSpJxEK.js.map +0 -1
  614. package/dist/stencil-library/signature-input.stencil-form.tally-display.udp-question.entry.esm.js.map +0 -1
  615. /package/dist/stencil-library/{p-84109194.entry.js.map → p-146bc917.entry.js.map} +0 -0
  616. /package/dist/stencil-library/{p-b3b6310e.entry.js.map → p-147c4595.entry.js.map} +0 -0
  617. /package/dist/stencil-library/{p-06ca29e0.entry.js.map → p-1b001f78.entry.js.map} +0 -0
  618. /package/dist/stencil-library/{p-762591f6.entry.js.map → p-2635a6cc.entry.js.map} +0 -0
  619. /package/dist/stencil-library/{p-6a1febc9.entry.js.map → p-2f2fd111.entry.js.map} +0 -0
  620. /package/dist/stencil-library/{p-368be454.entry.js.map → p-2fc495ce.entry.js.map} +0 -0
  621. /package/dist/stencil-library/{p-fdfa7087.entry.js.map → p-476c08df.entry.js.map} +0 -0
  622. /package/dist/stencil-library/{p-ee1610d3.entry.js.map → p-4ab893a0.entry.js.map} +0 -0
  623. /package/dist/stencil-library/{p-9b0b311b.entry.js.map → p-64330dbb.entry.js.map} +0 -0
  624. /package/dist/stencil-library/{p-584552e6.entry.js.map → p-65a5cce3.entry.js.map} +0 -0
  625. /package/dist/stencil-library/{p-5a946191.entry.js.map → p-70d8a0d8.entry.js.map} +0 -0
  626. /package/dist/stencil-library/{p-79065768.entry.js.map → p-8119eb18.entry.js.map} +0 -0
  627. /package/dist/stencil-library/{p-2f99476a.entry.js.map → p-86cd0134.entry.js.map} +0 -0
  628. /package/dist/stencil-library/{p-767b7be7.entry.js.map → p-8a0b6bd4.entry.js.map} +0 -0
  629. /package/dist/stencil-library/{p-40127f9f.entry.js.map → p-90fbca0f.entry.js.map} +0 -0
  630. /package/dist/stencil-library/{p-2a11c543.entry.js.map → p-ae167d4b.entry.js.map} +0 -0
  631. /package/dist/stencil-library/{p-55459135.entry.js.map → p-b53e1b9a.entry.js.map} +0 -0
  632. /package/dist/stencil-library/{p-0de6045a.entry.js.map → p-c9046d64.entry.js.map} +0 -0
  633. /package/dist/stencil-library/{p-c1809ef3.entry.js.map → p-ca53be83.entry.js.map} +0 -0
  634. /package/dist/stencil-library/{p-f7c855d0.entry.js.map → p-d46dd16c.entry.js.map} +0 -0
  635. /package/dist/stencil-library/{p-09186dea.entry.js.map → p-d48b5599.entry.js.map} +0 -0
  636. /package/dist/stencil-library/{p-b0b70c0b.entry.js.map → p-e7e8a8a3.entry.js.map} +0 -0
  637. /package/dist/stencil-library/{p-79587009.entry.js.map → p-f4b5879d.entry.js.map} +0 -0
  638. /package/dist/stencil-library/{p-250a8400.entry.js.map → p-fbfbbcf1.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["toLowerFirstChar","field","charAt","toLowerCase","slice","toTitleCase","str","result","replace","trim","toUpperCase","defaultGridColumn","headerName","minWidth","autoHeight","sortable","headerComponentParams","id","headerComponent","UdpGridColumnDefs","entityAttributes","console","log","childEntityAttributes","reduce","defs","element","_a","extendedProperties","childEntity","push","columnDefs","find","ea","Object","keys","childEntityAssoc","length","_c","_b","UdpType","name","_d","Keys","k","includes","columnHeaderName","alias","reference","treatAsDate","def","assign","checkboxSelection","headerCheckboxSelection","cellRendererParams","checkbox","searchable","filterType","filterOptions","type","filter","filterParams","suppressAndOrCondition","numberParser","params","buttons","enableRowGroup","orderable","useTreeDatasource","apiCatalog","searchableOnly","includeReferenceNodes","parentFilter","parent","filteredCatalogObjects","ctlg","catalogObjectList","obj","catalogObjectName","catalogObject","error","rows","properties","map","parentPath","fromFilter","advancedSearchCss","AdvancedSearch","constructor","hostRef","this","filterList","filterRenderList","nestedData","Map","searchObject","tempNestedData","testData","showChildren","handleReferenceClick","async","referenceValue","parentReference","state","isLoadingCatalogData","catalogData","extendedSearchFilterList","Array","isArray","updateNestedData","from","entries","children","parentName","checkForName","testParentArray","forEach","parentItem","referenceNode","updateNestedDataRecursively","isItemPresent","array","item","some","existingItem","updateNestedDataHelper","newChildren","child","forceUpdate","nestedArray","onTreeListItemClick","event","detail","toPascalCase","split","part","join","searchField","handleItemClick","componentWillLoad","filterListWatcher","newValue","oldValue","render","safeTestData","safeFilterRenderList","h","key","class","style","marginRight","width","index","level","label","nestedItems","onItemClick","onValueChanged","handleValueChanged","filterElements","handleDelete","searchValue","AdvancedSearchGrouped","filterGroups","filterObjectsWithGroups","disableFilterSelection","sharedId","filters","recentSearchesOptions","currentLogicalOperator","filterObjectsWithGroupsChanged","updateFilterWithUserData","uniqueId","userData","updatedFilters","updateGroupLogicalOperator","groupId","newLogicalOperator","updateOperatorInNode","nodes","nodeId","newOperator","node","logicalOperator","handleSearchItemChange","searchOperator","filterGroupId","group","findGroupById","f","searchItemChanged","emit","handleOperatorSelected","selectedOptionValue","value","getLogicalOperatorValue","updateLogicalOperator","searchOperatorChanged","renderFilterGroup","filterGroup","isRoot","isDefault","paddingStyle","getLogicalOperatorCode","toString","operatorSelector","options","onChange","initialValue","disabled","deleteGroupButton","icon","Close24","onClick","handleGroupDelete","filterItems","operator","onSearchItemChanged","isInitialSearchItem","isInitialFilterElement","actionButtons","display","gap","marginTop","variant","addFilter","handleAddNewGroup","nestedGroups","childGroup","marginBottom","handleAddNewFilter","newFilterPlaceholder","uuid","selectRecentSearch","fullClearSearch","alignItems","e","delete","add","showAdd","height","background","position","zIndex","top","left","opacity","AgTable","ambientDemoContainerCss","AmbientDemoContainer","title","CustomRenderer","init","eGui","document","createElement","innerHTML","statusChip","querySelector","status","getGui","refresh","CustomActionsRenderer","iconButton","ChooseItem16","cellValue","addEventListener","LogicalSearchOperatorEnums","SearchGroupingType","SearchSortDirection","getSearchObject","searchFilterElements","page","pageSize","eagerLoad","logicalSearchOperator","And","pageNumber","orderElements","groupingType","groupProperty","groupOperationList","property","formattedPropertyName","sortDirection","orderElement","sortColumn","distinct","Distinct","rowGroups","SearchServiceDatasource","queryData","gridUID","isRecentSearch","apiMethodId","hotlistEmpty","lookupApiMethodId","executeQuery","lookupsMap","defaultFilterObject","onDataFetched","updateLoadingState","getRows","shouldForceEmptyResults","success","rowData","rowCount","endRow","rowGroupCols","groupKeys","filterModel","sortModel","request","sortItem","colId","sort","filterItem","FilterOperators","Asc","rowGroupCol","currentNode","api","forEachNode","nodeKey","data","cleanData","getCleanData","formattedPropertyNameForSearch","response","deepCopy","JSON","parse","stringify","mergeArrays","newElement","hasOwnProperty","filteredElements","concat","updatedSearchFilterElements","saveSearch","newSearchObj","currentTimeStamp","Date","now","formattedTimeStamp","toLocaleString","recentSearches","localStorage","getItem","currentGridSearchHistoryObj","searchHistory","unshift","timestamp","searchObj","setItem","prefetch","catch","message","pageList","total","toCamelCase","rankData","filterObjects","groupProps","prop","row","searchRank","fieldName","rowDataRanked","CustomEvent","dispatchEvent","rowDataRankedSorted","a","b","parseInt","EmailCellRenderer","applyStyles","clickListener","backgroundColor","borderRadius","paddingLeft","paddingRight","textAlign","margin","lineHeight","cursor","arrowStyle","head","appendChild","destroy","removeEventListener","SharedContext","myClickCallback","otherCellValue","callbackId","viewActionCallback","thirdActionCallback","hotListAddHandler","OpenFunctionCellRenderer","otherField","colDef","customEvent","bubbles","composed","HotListAddRenderer","viewActionElement","textContent","onViewActionClick","bind","thirdActionElement","onThirdActionClick","updateDisplay","showViewAction","showThirdAction","stopPropagation","hotListActive","color","symbol","specialContent","existingSpan","insertAdjacentHTML","remove","contains","border","padding","fontSize","marginLeft","transform","HoverContentCellRenderer","handleMouseOver","tooltip","visibility","hoverInfo","hideTooltip","tooltipField","getColumnDefs","columnDefToModify","col","updatedColDef","setColumnDefs","createTooltip","innerText","boxShadow","classList","LicenseKey","buildSearchPayload","currentGroupId","convertSearchOperator","convertLogicalOperator","traverse","filterObject","parentId","parentGroupId","DateTimeCellRenderer","formatMode","locale","formattedDate","formatDate","dateString","date","formatExactDate","includeTime","day","getDate","padStart","month","getMonth","year","getFullYear","formatted","hours","getHours","minutes","getMinutes","ampm","hour12","time","ActionsRenderer","actionList","cssText","hideActions","action","disabledAction","checkDisabled","actionTitle","getTitle","actionButton","buttonId","getIconFromName","iconName","handleOnClick","StatusRenderer","statusMappingClasses","warning","info","statusMappingConfig","currentValue","getStatusValue","statusValue","statusClasses","dense","IconRenderer","iconMappingConfig","iconType","text","fortmatCurrency","currency","locales","minimumFractionDigits","maximumFractionDigits","valueOrNull","Intl","NumberFormat","format","CurrencyRenderer","formattedCurrency","ambientTemplateGridCss","AmbientTemplateGrid","handleTriggerGridUpdate","agGrid","refreshServerSide","purge","updateServerSideDatasource","noDataHandler","linearLoading","noResults","watchHandler","newVal","_oldVal","filterByCatalogObjectName","entityName","getApiCatalogId","apiCatalogId","fetchedData","getApiCatalogAndProduct","getApiMethodId","apiMethodInstance","getApiMethodInstance","Error","getLookupApiMethod","promotedLookupMethod","getPromotedLookupMethod","unityBaseGetDataMethod","queryId","getApiMethod","getFilterBody","body","getColumnDefinitions","catalogModification","getEntityName","apiMethod","updateFilterObject","recipe","produce","catalogList","warn","object","names","advancedSearchFilterList","fullViewData","viewListrowData","gridState","gridId","userId","userPermissions","menuItems","gridBarTitle","viewChips","additionalFilterChips","kpiValues","showAdvancedSearchFeature","showFilterColumnFeature","defaultSearchObject","actionId","renderConfigs","externalPayload","dataEmitter","dataEmitterRequest","fitGrid","hotListIdentifier","searchKey","externalSearchFilter","maxChipsAllowed","suppressMenuHide","showRank","showHotlistButton","columnNames","buttonTransform","rowGrouping","restrictBulkActionsPermissions","restrictedGridFeatures","triggerGridUpdate","hideActionsColumn","showInsightsAction","hideBulkActions","enableCheckboxOnColumns","hiddenColumnsList","hideDefaultSearchFilterChips","bulkActionFunctions","rowIdField","defaultSearchMode","disableSearchSwitch","drawerOpen","filterPanelOpen","saveDialogOpen","editDialogOpen","editViewConfirmationDialogOpen","gridOptionsDrawerOpen","filterChips","promotedEntity","isServerSide","showNotification","notificationMessage","notificationStatus","loadedView","loadedViewTitle","loadedViewData","currentColumnOrdering","currentHiddenColumns","rowsSelected","selectedRowCount","serverColumnDefs","isSetupComplete","viewListRowData","bulkActions","sheetContent","configuredColumnDefs","hasConfiguredColumnDefs","fullDataColumns","filterOn","tempSearchObject","dataRowClicked","allHotlists","externalToggle","viewId","formattedBulkActions","advancedDrawerOpen","viewDrawerOpen","hotlistDrawerOpen","customSearchDrawerOpen","hotListCount","loadedHotlistTitle","showHotlistForm","confirmDialog","confirmDialogDeleteView","filteredCount","hotlistSelectedFull","advancedGroupSearchNodeId","otherId","updateForConfiguredColumnDefs","loadedGridView","selectedGridId","selectedViewName","selectedViewIsDefault","allFilters","overflowActive","setSearchStart","refreshChips","gridError","gridHeight","openActionPopoverMenu","initialFilterData","defaultColumnState","_distinctValueStore","_distinctsCached","enableAdvancedSearch","toggleSearchModeConfirmationDialogOpen","getExtendedAdvancedSearchFilterList","apiCatalogData","localforage","getApiCatalogById","transformedData","handleLinerLoading","isLoading","updateActionRendererState","selectedRowParams","actionMenuAnchorElement","currentTarget","handleOnCloseActionPopover","preventDefault","getOverflowActionList","overflowActions","selectedRowMap","handleGetPromotedLookupMethod","then","productList","handleGetInstanceAndMethod","catalogModificationP","getConfiguredColumnDefs","column","rowGroup","hide","getLookupsMap","refreshOnNoResults","resetFilters","lazySetupAgGridLibrary","handleSecondarySetup","resetToOriginalFilters","toggleServerSide","resetDefaultView","domain","updateView","gridViewId","gridViewVisibilityTypeId","toggleDeleteDialog","updateDefaultView","newDefault","fetchDataForViews","setTimeout","getCurrentGridState","savedStatesString","currentGridStateObj","savedStatesArray","i","tenantId","getCurrentTenantId","saveCurrentGridState","gridStateObject","savedGridStatesString","savedGridStatesArray","newArray","s","getAvailableViews","setDefaultView","defaultViewObj","callback","onFirstDataRendered","getSelectedView","openDeleteViewConfirmation","handleDeleteView","deleteSelectedView","toggleHotlistForm","handleGetAllHotlists","hotlistData","getAllHotlists","handleSetSingleHotlistItem","businessObjectKey","dataObject","hotListId","contextDate","entityBusinessObjectKey","currentUserId","addRecordToAHotlist","confirmRequestDelete","handleRequestDeleteHotlist","deleteAHotlist","extractContactIDs","payload","contactIDs","records","record","handleRequestHotlist","hotlistID","hotloadList","loadAHotlist","updateFilterObjectWithPayload","handleLoadView","currentGridStateObject","loadedGridViewName","getGridState","handleSaveHotlist","isPrivate","hostListRequestBody","createdBy","hotListDataSourceId","hotListTypeId","createAHotlist","hasInitializedDefaultFilter","activeChips","handleViewChipDelete","clearViewFilter","handleRemoveHotlist","updateFilterObjectsWithGroups","searchValues","searchFieldAlias","originalSearchOperator","originalSearchValue","targetFilterGroupId","found","val","equals","notEqual","greaterThan","lessThan","greaterThanOrEqual","lessThanOrEqual","startsWith","blank","inRange","handleSideSheetButtonClick","groupFilter","setGroupedSearchSections","isEmptyObject","handleDataEmitterRequest","undefined","emitterSearchObject","executeQueryAdHoc","externalEmitter","handleTransformSearchData","modifiedSearchObjects","transformSearchData","firstFilterElement","filterElementEvent","searchItemChangedHandler","searchGroupFilterPayload","updateChipLayout","requestAnimationFrame","chipsContainer","el","shadowRoot","getElementById","containerWidth","getBoundingClientRect","totalChipWidth","chipWidths","querySelectorAll","chip","maxVisible","acc","curr","collectAllFilters","getRecentSearches","recentSearchesString","selectedSearchObj","filterObjectsWithGroupsTemp","tempFilter","fetchAvailableGridActions","BulkActions","permission","getAvailableGridActions","changeOperator","convertedValue","updateFilterAndFetch","newFilter","buildSearchFilterElements","filterElement","forObject","filterElementObject","handleFilteringSetup","filterBodyStr","filterBody","intialFilterElements","updatedInitialFilterElementsForObject","rootFilterGroupId","cloneDeep","initialFilterObject","handleAdditionalSetup","viewListcolumnDefs","resizable","cellRenderer","waitForGrid","observer","MutationObserver","myGrid","disconnect","observe","childList","subtree","componentDidLoad","initializeGrid","cellClickHandler","viewActionClickHandler","cellClickHandlerX","findMatchingHotListId","parsedData","hotListRecordId","matchingHotListId","removeRecordFromHotlist","removeFilterItem","window","requestType","specialType","changeServerColumnDefs","updateColumnDefs","updatedColumns","columnDef","serverColumn","updatedColumnsWithNewNames","displayColumns","modifiedColumnDefs","isColumnDisplayed","displayColumn","hasSearchRank","addRenderers","config","cfg","Hotlist","rendererName","maximumVisibleActions","actionColumnWidth","getActionColumnWidth","maxWidth","sortedActionList","sortActionItemOrder","visibleActions","splitActionList","overflowActionMenuItems","addActionsColumn","actionsColumnExists","actionsColumn","shouldDisplayCustomContent","pinned","CHECKBOX_FIELD","addCheckboxColumn","checkboxColumnExists","checkboxColumn","lockVisible","menuTabs","addToolTip","headerTooltip","columnDefsWithCheckbox","columnDefsWithActions","reorderedColumns","currentColOrder","hiddenCol","columnDefsWithToolTips","columnDefsWithRenderers","watchServerColumnDefs","baseColumnDefs","shouldHide","columnApi","getColumnState","watchHiddenColumnList","newDefaultState","applyColumnState","applyOrder","configuredColumnDefsChanged","changeServerSideDatasource","_newValue","_oldValue","propName","datasource","executeQueryAdHocAndMapLookups","dataFetched","totalCount","convertToAgGridColumns","getDisplayedRowCount","serverSideDatasource","cacheDistinctValues","Set","withFilterTracking","originalGetRows","wrappedParams","updateColumnDefsWithFilterValues","currentDefs","getColumns","getColDef","newDefs","values","valuesArray","setServerSideDatasource","wrappedDatasource","context","startRow","valueCols","pivotCols","pivotMode","fail","adjustGridScroll","gridViewport","overflowY","scrollViewport","triggerResizeEvent","resizeEvent","handleResize","serverColumnDefsChanged","watchChipLayoutChanges","gridOptions","animateRows","rowModelType","serverSideStoreType","cacheOverflowSize","cacheBlockSize","maxConcurrentDatasourceRequests","pagination","paginationPageSize","rowHeight","defaultColDef","rowSelection","getRowId","suppressRowClickSelection","onRowSelected","rowId","isSelected","onCellClicked","components","emailCellRenderer","openFunctionCellRenderer","hoverContentCellRenderer","hotListAddRenderer","dateTimeCellRenderer","actionsRenderer","statusRenderer","iconRenderer","currencyRenderer","sideBar","toolPanels","labelDefault","labelKey","iconKey","toolPanel","toolPanelParams","suppressRowGroups","suppressValues","suppressPivots","suppressPivotMode","defaultToolPanel","onGridReady","tryResize","view","skipResize","sizeColumnsToFit","call","_f","_e","autoSizeAllColumns","_j","_h","_g","_m","_l","_k","delay","onColumnMoved","onColumnVisible","onColumnResized","gridFilters","onColumnPinned","onFilterChanged","getFilterModel","transformAndApplyFilters","onSortChanged","isPivotMode","prevPivotMode","getPivotModeState","onFilterOpened","customFilters","matchingFilters","filterInstance","getFilterInstance","setModel","refreshFilterUi","tooltipShowDelay","Grid","handleSearchModeToggle","toggleSearchModeConfirmation","confirmSearchModeToggle","handleDefaultSearchModeChange","onSearchModeChange","reinitializeGrid","show","getLookupId","lookupToFilterOn","lookupId","uuidPattern","test","executeQueryWithParameters","queryColumnsData","lookupColumns","lookupValue","lookup","lc","lookupKeyName","lookupValueName","keyString","transformBulkActions","setAutoGridState","columnState","columnGroupState","getColumnGroupState","columnGridConfiguration","gridStateTypeId","columnGroupGridConfiguration","columnSortGridConfiguration","columnFilterGridConfiguration","pivotGridConfiguration","setColumnState","castedState","gridData","gridConfigurations","gridConfigArray","gridViewGridViewGridConfiguration","gridViewGridConfigurationGridConfiguration","gridConfigurationId","setPivotMode","currentColumnState","newColumnState","mergedState","newCol","defaultFilter","filterExists","fo","match","target","flatMap","exists","setColumnGroupState","selectedGridViewGridConfigurations","primaryActionClick","showGridOptions","setQuickFilter","setRowGroupColumns","setFilterModel","refreshGrid","clearFilters","fitColumns","exportToCsv","exportDataAsCsv","expandColumns","togglePanel","panelType","panelTypes","otherPanelOpenKey","panelOpenKey","toolPanelConfig","setSideBarVisible","openToolPanel","closeToolPanel","sidebarElement","HTMLElement","showViews","showViewSave","setCurrentViewData","viewName","selectedViewGridViewVisibilityTypeId","openViewEdit","closeViewEdit","openViewEditConfirmation","showViewEditConfirmation","handleViewFormSubmit","isDefaultNum","saveView","gridView","updateGridConfigurationsWithIDsForUpdatingView","gridConfigs","gridConfigInfo","handleViewAndConfigurationsUpdate","updateViewAndConfigurations","handleViewUpdate","showHotlist","mapHotlistsToPayload","hotlistIdentifiers","keyID","hotlistSearchKeys","setFilterFromChips","chipText","isChipValid","description","findIndex","defaultFilterElements","splice","setFilterSelections","currentFilterObject","showCustomSearch","showAdvancedSearch","setGroupedFilterSelections","addFilterToNode","newChild","addChildToNode","updateOperator","g","filtersChangedHandler","searchAndRemoveGroup","groups","newGroup","op","updateFilterGroups","groupedFilterObjects","groupIdCounter","groupIdMap","transformGroup","has","set","get","fieldId","rootGroup","updatedFilterList","deepClonedList","advancedSearchFilter","configuredColumnDef","dateFrom","dateTo","setDate","dateOnly","currentModel","convertFilterToAgGridFilterModel","agGridModel","updateSearchObject","capitalizeFirstLetter","applyFilterDetail","selectedFilterOptions","groupCount","groupedFilterElements","filterObjectsWithGroupsFilters","setDetail","String","initCustomEvent","cancelBubble","cancelable","defaultPrevented","eventPhase","isTrusted","returnValue","srcElement","timeStamp","composedPath","initEvent","stopImmediatePropagation","NONE","CAPTURING_PHASE","AT_TARGET","BUBBLING_PHASE","slicedGroupedFilterElements","filterDetails","shouldApply","filterTo","filterChanged","shouldSkip","externalPayloadChanged","dataEmitterChanged","updatedFilterObjectsWithGroups","updatedFilterObject","allFiltersChanged","handleSelectedBulkOption","selectedNodes","getSelectedNodes","selectedData","selectedIds","selectedIdsChanged","actionData","selectedBulkActionFunction","execute","executeBulkAction","getSelectedRows","filterPanelWidth","shouldShowSecondRow","shouldHideSecondRow","actionMenuItems","isOpen","anchorElement","popoverWidth","popoverMaxHeight","handleOnClose","active","userCancel","customSaveViewClick","customShowViewClick","customShowHotlistClick","customShowCustomSearchClick","customClearClick","customRefreshClick","customExpandClick","customExportClick","exportFunction","customInsightsClick","insightsActionOnClick","hiddenActionButtons","primaryActionLabel","primaryActionOnClick","primaryActionIcon","customColumnViewClick","customFitColumnClick","customFilterViewClick","customToggleServerClientClick","customAdvancedSearchClick","customShowGridOptionsClick","hideExport","Export","size","content","onOnDelete","defaultToggled","leftIcon","Star16","List16","onUdpChipClicked","licensekey","sideSheetButtonLabel","handleSideSheetButton","open","toggleDrawer","onAdvancedSearchItemChange","fetchFilters","widthOption","hint","hideHintText","toLocaleLowerCase","showEditOption","showDeleteOption","editHandler","deleteHandler","showUpdateDefaultOption","updateDefaultHandler","showViewOption","handleFormSubmit","handleCancelClick","viewHandler","true","false","statusLabel","closeDialog","currentGridViewId","currentName","currentIsPrivate","currentIsDefault","handleViewAndConfigurationSubmit","currentGridId","currentGridViewVisibilityTypeId","actionOne","actionTwo","labelOne","labelTwo","__decorate","Memoize","prototype","appBarCss","AppBar","noBackground","darkIcon","Menu24","href","role","username","customButtonCss","CustomButton","secondary","handleButtonClick","handleClick","customClick","buttonClass","editViewFormDialogCss","EditViewFormDialog","fetchedCurrentView","handleGetExistingView","handleNameChange","handlePrivateChange","handleDefaultChange","handleSubmit","componentDidUpdate","componentWillRender","resetFetchedCurrentView","handleClose","disableOne","onInput","checked","onToggledChange","filterConditionsCss","fluentDialogCss","FluentDialog","buttonOneHidden","buttonTwoHidden","buttonThreeHidden","overlay","titleId","actionThree","disableThree","labelThree","progress","gridPrimaryBarCss","GridPrimaryBar","hiddenLabels","defaultActionButtons","showLabels","checkWindowWidth","windowWidth","innerWidth","onResize","initializeActionButtons","disconnectedCallback","Save16","visible","showLabel","iconClassName","clickHandler","AdvancedQuery16","Renew16","Close16","Download16","DataEnrichment16","btn","Settings16","handleAdvancedSearchToggle","hintPanelCss","HintPanel","showHint","handleHideHint","kpiListCss","KpiList","kpi","fontWeight","fontFamily","myComponentCss","MyComponent","toggled","dialogOpen","popoverOpen","mindscopeDemoPayload","dataEmitterDemo","activeTabIndex","TestcolumnDefs","cellStyle","overflow","keyName","accessTokenProp","clientDetails","accessToken","productId","handleChipDelete","setAdditionalFilterChips","newChips","setViewChips","setFilter","handlePopover","logTest","clusterId","serializeFields","gridViewGridViewVisibilityType","gridViewTenant","gridViewUser","gridViewGrid","gridViewApiCatalog","udpTags","gridViewVisibilityTypeGridView","tenantName","contactEmail","locked","theme","showUnsubscribedProducts","apiAuthKey","defaultVerticalId","tenantAggregateThreshold","tenantApiMethodInstanceTenant","tenantBillingDetails","tenantBlobDocument","tenantGridView","tenantGroup","tenantInquiryTreeTenant","tenantMenuInstanceTenant","tenantMenuItemInstanceTenant","tenantMenuItemInstanceTenantGroup","tenantMenuItemInstanceTenantRole","tenantMenuStructure","tenantPage","tenantPanel","tenantProperty","tenantRole","tenantRule","tenantSupportIntegration","tenantVertical","tenantTenantDriveConfig","tenantTenantProduct","tenantTenantProductApiCatalogBase","tenantTenantProductHomePage","tenantTenantUser","tenantTranslation","tenantUser","externalUUID","email","defaultTenantId","userApiCatalog","userApiCatalog2","userApiUrlBase","userApiUrlBase2","userBillingDetailUsers","userGridView","userInquiryTree","userLoadedInquiryTreeNode","userMenuInstanceUser","userPage","userRule","userTenantUser","userTranslation","userTenant","userUserGridConfiguration","userUserGroup","userUserProduct","userUserRole","gridGridConfiguration","gridGridView","gridViewGridConfigurationGridView","gridConfigurationApiMethodInstanceGridConfiguration","gridConfigurationGridStateType","gridConfigurationGrid","gridConfigurationGridViewGridConfiguration","gridConfigurationUserGridConfiguration","sortIndex","aggFunc","rowGroupIndex","pivot","pivotIndex","flex","alert","testPah","handleDataFetched","demoMSSearchData","SearchCriteriaEquationDetails","SkillSearchDetails","AnySkillDetails","AllSkillDetails","ExcludeSkillDetails","ValueExpression","DisplayExpression","SkillDetailsBoolOn","CustomFieldSearch","SearchName","CandidateID","IsCandidateIDOptional","CandidateIdID","CandidateIDLabelKey","FirstName","IsFirstNameOptional","FirstNameID","FirstNameLabelKey","LastName","IsLastNameOptional","LastNameID","LastNameLabelKey","PhoneNumber","IsPhoneNumberOptional","PhoneNumberID","PhoneNumberLabelKey","PhoneType","PhoneTypeID","PhoneTypeSelectedText","IsPhoneTypeOptional","Email","IsEmailOptional","EmailID","EmailLabelKey","ExcludeCandidatesPartOfText","IsExcludeCandidatesPartOfOptional","ExcludeCandidatesPartOfID","ListExcludeCandidatesPartOf","CheckExcludeOfflimits","CheckBoxExcludeOfflimitsID","IsDateAvailiabilityOptional","DateAvailiabilityID","ConditionAvailiabilityLabelKey","ConditionAvailiabilityRelation","IsDateLastContactedOptional","DateBoxLastContactID","ConditionLastContactLabelKey","ConditionLastContactedRelation","IsMustHaveNotInPlaceOptional","DatePlaceFromID","DatePlaceFromLabelKey","MustHaveNotInPlaceID","DatePlaceToID","ChkSun","ChkSunID","LabelSun","ChkMon","ChkMonID","LabelMon","ChkTue","ChkTueID","LabelTue","ChkWed","ChkWedID","LabelWed","ChkThu","ChkThuID","LabelThu","ChkFri","ChkFriID","LabelFri","ChkSat","ChkSatID","LabelSat","ScheduleActivitySelectedValue","ScheduleActivitySelectedText","IsScheduleActivityOptional","ScheduleActivityID","ScheduleActivityLabelKey","WithScheduleActivity","ScheduleStatusSelectedValue","ScheduleStatusSelectedText","IsScheduleStatusOptional","ScheduleStatusID","ScheduleStatusLabelKey","RecruiterSelectedValue","RecruiterSelectedText","RecruiterID","RecruiterLabelKey","IsRecruiterOptional","ResultOfActivitySelectedValue","ResultOfActivitySelectedText","ResultOfActivityID","ResultOfActivityLabelKey","IsResultOfActivityOptional","EnteredDateFromID","EnteredDateToID","EnteredDateLabelKey","IsEnteredDateOptional","StartDateFromID","StartDateToID","StartDateLabelKey","IsStartDateOptional","LastContactedDateFromID","LastContactedDateToID","LastContactedDateLabelKey","IsLastContactedDateOptional","ChkOriginalResume","ChkOriginalResumeID","ChkModifiedResume","ChkModifiedResumeID","ChkHistoricalResume","ChkHistoricalResumeID","ChkCandProfileNote","ChkCandProfileNoteID","ChkNotes","ChkNotesID","ChkEmail","ChkEmailID","IsKeyWordSearch","KeyWordsearch","County","IsCountyOptional","CountyID","CountyLabelKey","CountriesSelectedValue","CountriesSelectedText","CountryID","CountriesLabelKey","IsCountryOptional","ProvincesSelectedValue","ProvincesSelectedText","ProvincesID","ProvincesLabelKey","IsProvincesOptional","ListCitiesValue","ListCitiesID","ListCitiesLabelKey","LkCitiesLabelKey","LkCitiesID","LkCitiesValue","LkCitiesText","IsCityOptional","Address","AddressID","AddressLabelKey","IsAddressOptional","Address2","Address2ID","Address2LabelKey","IsAddress2Optional","PostalCode","PostalCodeID","PostalCodeLabelKey","IsPostalCodeOptional","LocatedFrom","LocatedFromID","LocatedDistanceSelectedValue","IsLocatedFromOptional","BirthID","BirthLabelKey","IsdateBirthOptional","AgeFrom","AgeFromID","IsAgeOptional","AgeTo","AgeToID","YearsExpFrom","YearsExpFromID","YearsExpTo","YearsExpToID","IsYearsExperienceOptional","TextSin","TextSinID","TextSinLabelKey","IsSinIDOptional","StatusSelectedValue","StatusSelectedText","StatusID","StatusLabelKey","IsStatusOptional","SecondStatusSelectedValue","SecondStatusSelectedText","SecondStatusID","SecondStatusLabelKey","IsSecondStatusOptional","RatingSelectedValue","RatingSelectedText","RatingID","RatingLabelKey","IsRatingOptional","MarketSrcSelectedValue","MarketSrcSelectedText","MarketSrcID","MarketSrcLabelKey","IsMarketSrcOptional","CandidateNpn","CandidateNpnID","CandidateNpnLabelKey","IsCandidateNpnOptional","TransportationTypeSelectedValue","TransportationTypeSelectedText","TransportationTypeID","TransportationTypeLabelKey","IsTransportationTypeOptional","EmploymentTypeSelectedValue","EmploymentTypeSelectedText","EmploymentTypeID","EmploymentTypeLabelKey","IsEmploymentTypeOptional","PayRateCurrencySelectedValue","PayRateCurrencySelectedText","PayRateCurrencyID","PayRateCurrencyLabelKey","IsPayRateCurrencyOptional","MinimumPayRateFrom","MinimumPayRateFromID","MinimumPayRateFromLabelKey","IsMinimumPayRateOptional","MinimumPayRateTo","MinimumPayRateToID","OvertimePayRateFrom","OvertimePayRateFromID","OvertimePayRateFromLabelKey","IsOvertimePayRateOptional","OvertimePayRateTo","OvertimePayRateToID","DivisionSelectedValue","DivisionSelectedText","DivisionID","DivisionLabelKey","IsDivisionOptional","DepartmentSelectedValue","DepartmentSelectedText","DepartmentID","DepartmentLabelKey","IsDeptOptional","OfficeSelectedValue","OfficeSelectedText","OfficeID","OfficeLabelKey","IsOfficeOptional","BusinessUnitSelectedValue","BusinessUnitSelectedText","BusinessUnitID","BusinessUnitLabelKey","IsBusinessUnitOptional","OwnershipValue","OwnershipText","OwnershipID","OwnershipLabelKey","IsOwnershipOptional","CustomUserList1Value","CustomUserList1Text","CustomUserList1ID","CustomUserList1LabelKey","IsCustomUserList1Optional","CustomUserList2Value","CustomUserList2Text","CustomUserList2ID","CustomUserList2LabelKey","IsCustomUserList2Optional","CustomUserList3Value","CustomUserList3Text","CustomUserList3ID","CustomUserList3LabelKey","IsCustomUserList3Optional","NoteTypeSelectedValue","NoteTypeSelectedText","NoteTypeID","NoteTypeLabelKey","IsNoteTypeOptional","ActMgrValue","ActMgrText","ActMgrID","ActMgrLabelKey","IsActMgrOptional","CompanyName","CompanyNameID","CompanyNameLabelKey","IsCompanyNameOptional","Title","TitleID","TitleLabelKey","IsTitleOptional","BaseSalaryID","ConditionBaseSalaryRelation","BaseSalaryLabelKey","IsBaseSalaryOptional","LastSalaryIncreaseID","LastSalaryIncreaseLabelKey","IsLastSalaryIncreaseOptional","TotalCompensationID","TotalCompensationLabelKey","IsTotalCompensationOptional","EnteredDateFrom","EnteredDateTo","StartDateFrom","StartDateTo","ListID","Append","handleApiResult","promotedEntityFromLocalStorage","handleCellClick","handleCellClickX","handleViewActionClick","defaultClient","pageData","pageId","layoutTypeId","section","sectionName","componentName","componentTypeId","sectionId","columnSize","xs","i18n","subheader","single","grid","tabList","component","button","opens","secondaryButtons","apiMethodInstanceId","handleUserData","userInfo","tenantIds","handleToggle","selectTab","searchData","transformed","updateDemoPayload","updateDemoEmitter","onExternalData","dataFromChild","ConfigService","UNITY_API_DOMAIN","usernames","_","fromCharCode","tabs","ref","childComponent","defaultPayload","fullName","city","candidateID","businessPhone","client_ContactClientID","client_ContactContactID","emailAddress","emailID","personID","phoneID","contactID","Asterisk16","actionButtonLabel","placeholder","slot","primaryActionHeaderCss","PrimaryActionHeader","getIconComponent","customIcon","iconMapping","renderIcon","ActualIcon","elem","attrs","saveViewFormDialogCss","SaveViewFormDialog","resetForm","handleModalOpen","searchListItemCss","SearchListItem","handleInputBlur","inputElement","inputVal","selectorOptions","operatorChanged","componentWillUpdate","conponentDidLoad","emitChange","onBlur","sideSheetCss","SideSheet","widthClass","sideSheetStyle","backdrop","close","onCustomClick","sideSheetContainerCss","SideSheetContainer","statusChipCss","StatusChip","statusValueWatcher","valueKey","internalStatusClass","stencilChipCss","StencilChip","showLeftIcon","showDelete","clickable","udpChipClicked","onDelete","externalStringChanged","toggleOff","onToggle","getLightenedColor","hslValues","primary","hue","saturation","lightness","lightnessIncrease","newLightness","Math","min","hueAdjustment","newHue","additionalPaddingWhenDeleteHidden","chipStyle","deleteButtonStyle","leftIconStyle","leftIconData","fill","stencilIconButtonCss","StencilIconButton","noTooltip","count","buttonStyle","iconColor","iconData","Content","stencilIconButtonGridActionHeaderCss","stencilToggleCss","StencilToggle","labelPosition","updateError","errorMessage","initialValueChanged","checkedChanged","_internalId","S_TOGGLE_ID_COUNTER","toggleButton","toggledChange","changeEvent","inputEvent","baseId","idItem","labelId","isError","labelElement","htmlFor","toggleElement","Host","textFieldCss","TextField","readonly","input","internalValue","change","updateInitialValue","updateValue","inputClass","required","hidden","maxLength","maxCharacter","inputMode","udprecordid","treeListItemCss","TreeListItem","showNested","updateTrigger","referenceClicked","onSelfClick","itemClick","handleViewClick","handleDeleteClick","handleEditClick","handleUpdateDefaultClick","nestedItemsChanged","indentationStyle","renderNestedItems","currentLevel","Private","Public","edit","expand","udpAmbientToolTipCss","UdpAmbientToolTip","isVisible","handleMouseOut","shouldDisplayTooltip","onMouseOver","onMouseOut","udpAvatarCss","UdpAvatar","colors","getInitial","getColorForUsername","charCode","charCodeAt","systemColors","isSystemColor","classes","udpBadgeCss","UdpBadge","max","displayContent","udpButtonCss","UdpButton","toolbarLayout","fullWidth","ariaLabel","tabIndex","click","TagType","classMap","startIcon","endIcon","attributes","tabindex","udpColumnHeaderCss","UdpColumnHeader","udpDividerCss","UdpDivider","udpDynamicContainerWithMenuCss","debounce","func","wait","timeout","args","clearTimeout","DynamicContainerWithMenu","visibleChildren","menuChildren","anchorEl","rerender","renderReady","boundCalculateChildren","calculateChildren","container","offsetWidth","currentWidth","newVisibleChildren","newMenuChildren","childWidth","props","childrenChanged","chips","handleChipClick","externalToggleString","udpFunctionButtonCss","UdpFunctionButton","iconStyles","TrashCan16","View16","StarFilled16","AddIcon16","Edit16","ChevronDownIcon24","btnClass","udpGridLoaderCss","UdpGridLoader","numColumns","numRows","headerBar","rowBars","udpHotlistFormCss","UdpHotlistForm","onCustomButtonClick","onSubmit","udpIconCss","UdpIcon","udpLinearLoaderCss","UdpLinearLoader","udpMenuItemCss","UdpMenuItem","udpNotificationCss","UdpNotification","activeChanged","statusClass","udpPageHeaderCss","selectedValue","radioClicked","valueChanged","udpPopOverCss","UdpPopOver","popoverPlacement","noPadding","path","Event","createPopperInstance","popoverInstance","createPopper","placement","modifiers","offset","update","maxHeight","popover","udpPopOverGridActionHeaderCss","right","rect","bottom","udpRadioButtonCss","UdpRadioButton","udpSelectorCss","UdpSelector","large","multiSelect","selectedOptions","selectedOption","handleBlur","handleOptionMouseDown","setSelectionFromValue","handleClickOutside","initValue","destroyPopper","handleOpenChange","setupPopper","toggleDropdown","referenceEl","popperEl","popperInstance","strategy","enabled","phase","requires","fn","styles","popper","rects","v","option","opt","optionsChanged","selectOption","selected","updateValueProp","emitSelectedOptions","selectedOptionIndex","selectedOptionElement","toggle","standardValue","selectedOptionClasses","focused","hasSelection","isOptionSelected","onMouseDown","udpSkeletonLoadingCss","UdpSkeletonLoading","udpTabCss","UdpTab","udpTabsCss","UdpTabs","activeTab","tabClicked","unityTypographyCss","typography","gutterBottom","bold","getClasses","baseClass","updAlertBannerCss","UpdAlertBanner"],"sources":["src/udp-utilities/string-utilities.ts","src/components/my-component/UI/grid/conversionFunctions/conversionFunctions.ts","src/components/my-component/UI/advanced-search/advanced-search.css?tag=advanced-search&encapsulation=shadow","src/components/my-component/UI/advanced-search/advanced-search.tsx","src/components/my-component/UI/advanced-search/advanced-search.css?tag=advanced-search-grouped&encapsulation=shadow","src/components/my-component/UI/advanced-search/advanced-search-grouped.tsx","src/components/my-component/UI/grid/ag-table/ag-table.tsx","src/components/my-component/demo/ambient-demo-container.css?tag=ambient-demo-container&encapsulation=shadow","src/components/my-component/demo/ambient-demo-container.tsx","src/components/my-component/UI/grid/renderers/custom-renderer.tsx","src/components/my-component/UI/grid/renderers/custom-actions-renderer.tsx","src/udp-utilities/grid/udp-grid-enums.ts","src/udp-utilities/grid/search/search-utilities.ts","src/udp-utilities/grid/data-source/SearchServiceDatasource.ts","src/components/my-component/UI/grid/renderers/email-cell-renderer.tsx","src/components/my-component/UI/grid/renderers/sharedContext.ts","src/components/my-component/UI/grid/renderers/open-function-cell-renderer.tsx","src/components/my-component/UI/grid/renderers/hot-list-add-renderer.tsx","src/components/my-component/UI/grid/renderers/hover-content-cell-renderer.tsx","src/components/my-component/UI/grid/ambient-template-grid/license/licenseKey.ts","src/components/my-component/UI/grid/ambient-template-grid/ambient-template-functions/buildGroupedSearchPayload.ts","src/components/my-component/UI/grid/renderers/date-time-cell-renderer.tsx","src/components/my-component/UI/grid/renderers/actions-renderer.tsx","src/components/my-component/UI/grid/renderers/status-renderer.tsx","src/components/my-component/UI/grid/renderers/icon-renderer.tsx","src/utils/utils.ts","src/components/my-component/UI/grid/renderers/currency-renderer.tsx","src/components/my-component/UI/grid/ambient-template-grid/ambient-template-grid.css?tag=ambient-template-grid&encapsulation=shadow","src/components/my-component/UI/grid/ambient-template-grid/ambient-template-grid.tsx","src/components/my-component/UI/toolbars/app-bar/app-bar.css?tag=app-bar&encapsulation=shadow","src/components/my-component/UI/toolbars/app-bar/app-bar.tsx","src/components/my-component/UI/buttons/icon-button/primary-button/custom-button.css?tag=custom-button&encapsulation=shadow","src/components/my-component/UI/buttons/icon-button/primary-button/custom-button.tsx","src/components/my-component/UI/forms/edit-view-form/edit-view-form-dialog.css?tag=edit-view-form-dialog&encapsulation=shadow","src/components/my-component/UI/forms/edit-view-form/edit-view-form.tsx","src/components/my-component/UI/advanced-search/filter-conditions/filter-conditions.css?tag=filter-conditions&encapsulation=shadow","src/components/my-component/UI/advanced-search/filter-conditions/filter-conditions.tsx","src/components/my-component/UI/dialogs/fluent-dialog/fluent-dialog.css?tag=fluent-dialog&encapsulation=shadow","src/components/my-component/UI/dialogs/fluent-dialog/fluent-dialog.tsx","src/components/my-component/UI/grid/grid-primary-bar/grid-primary-bar.css?tag=grid-primary-bar&encapsulation=shadow","src/components/my-component/UI/grid/grid-primary-bar/grid-primary-bar.tsx","src/components/my-component/UI/data-display/hint-panel/hint-panel.css?tag=hint-panel&encapsulation=shadow","src/components/my-component/UI/data-display/hint-panel/hint-panel.tsx","src/components/my-component/UI/data-display/kpi/kpi-list.css?tag=kpi-list","src/components/my-component/UI/data-display/kpi/kpi-list.tsx","src/components/my-component/my-component.css?tag=my-component&encapsulation=shadow","src/components/my-component/my-component.tsx","src/components/my-component/UI/data-display/primary-action-header/primary-action-header.css?tag=primary-action-header&encapsulation=shadow","src/components/my-component/UI/data-display/primary-action-header/primary-action-header.tsx","src/components/my-component/UI/forms/save-view-form/save-view-form-dialog.css?tag=save-view-form-dialog&encapsulation=shadow","src/components/my-component/UI/forms/save-view-form/save-view-form.tsx","src/components/my-component/UI/data-display/tree/tree-list-item/search-item/search-list-item.css?tag=search-list-item&encapsulation=shadow","src/components/my-component/UI/data-display/tree/tree-list-item/search-item/search-list-item.tsx","src/components/deprecated/side-sheet/side-sheet.css?tag=side-sheet","src/components/deprecated/side-sheet/side-sheet.tsx","src/components/deprecated/side-sheet/side-sheet-container.css?tag=side-sheet-container&encapsulation=shadow","src/components/deprecated/side-sheet/side-sheet-container.tsx","src/components/my-component/UI/data-display/chips/stencil-chip/status-chip/status-chip.css?tag=status-chip&encapsulation=shadow","src/components/my-component/UI/data-display/chips/stencil-chip/status-chip/status-chip.tsx","src/components/my-component/UI/data-display/chips/stencil-chip/stencil-chip.css?tag=stencil-chip&encapsulation=shadow","src/components/my-component/UI/data-display/chips/stencil-chip/stencil-chip.tsx","src/components/my-component/UI/buttons/icon-button/stencil-icon-button.css?tag=stencil-icon-button&encapsulation=shadow","src/components/my-component/UI/buttons/icon-button/stencil-icon-button.tsx","src/components/my-component/UI/buttons/icon-button/stencil-icon-button-grid-action-header.css?tag=stencil-icon-button-grid-action-header&encapsulation=shadow","src/components/my-component/UI/buttons/icon-button/stencil-icon-button-grid-action-header.tsx","src/components/my-component/UI/inputs/toggle/stencil-toggle.css?tag=stencil-toggle&encapsulation=shadow","src/components/my-component/UI/inputs/toggle/stencil-toggle.tsx","src/components/my-component/UI/inputs/text-field/text-field.css?tag=text-field&encapsulation=shadow","src/components/my-component/UI/inputs/text-field/text-field.tsx","src/components/my-component/UI/data-display/tree/tree-list-item/tree-list-item.css?tag=tree-list-item&encapsulation=shadow","src/components/my-component/UI/data-display/tree/tree-list-item/tree-list-item.tsx","src/components/my-component/UI/data-display/tool-tip/udp-ambient-tool-tip.css?tag=udp-ambient-tool-tip&encapsulation=shadow","src/components/my-component/UI/data-display/tool-tip/udp-ambient-tool-tip.tsx","src/components/my-component/UI/data-display/udp-avatar/udp-avatar.css?tag=udp-avatar&encapsulation=shadow","src/components/my-component/UI/data-display/udp-avatar/udp-avatar.tsx","src/components/my-component/UI/data-display/badge/udp-badge.css?tag=udp-badge&encapsulation=shadow","src/components/my-component/UI/data-display/badge/udp-badge.tsx","src/components/my-component/UI/buttons/udp-button/udp-button.css?tag=udp-button&encapsulation=shadow","src/components/my-component/UI/buttons/udp-button/udp-button.tsx","src/components/my-component/UI/data-display/headers/udp-column-header.css?tag=udp-column-header&encapsulation=shadow","src/components/my-component/UI/data-display/headers/udp-column-header.tsx","src/components/my-component/UI/data-display/divider/udp-divider.css?tag=udp-divider&encapsulation=shadow","src/components/my-component/UI/data-display/divider/udp-divider.tsx","src/udp-utilities/layout/udp-dynamic-container-with-menu/udp-dynamic-container-with-menu.css?tag=udp-dynamic-container-with-menu&encapsulation=shadow","src/udp-utilities/layout/udp-dynamic-container-with-menu/udp-dynamic-container-with-menu.tsx","src/components/my-component/UI/buttons/icon-button/function-button/udp-function-button.css?tag=udp-function-button&encapsulation=shadow","src/components/my-component/UI/buttons/icon-button/function-button/udp-function-button.tsx","src/components/my-component/UI/loaders/udp-grid-loader/udp-grid-loader.css?tag=udp-grid-loader&encapsulation=shadow","src/components/my-component/UI/loaders/udp-grid-loader/udp-grid-loader.tsx","src/components/my-component/UI/grid/hotlists/udp-hotlist-form/udp-hotlist-form.css?tag=udp-hotlist-form&encapsulation=shadow","src/components/my-component/UI/grid/hotlists/udp-hotlist-form/udp-hotlist-form.tsx","src/components/my-component/UI/data-display/icons/udp-icon.css?tag=udp-icon&encapsulation=shadow","src/components/my-component/UI/data-display/icons/udp-icon.tsx","src/components/my-component/UI/loaders/udp-linear-loader/udp-linear-loader.css?tag=udp-linear-loader&encapsulation=shadow","src/components/my-component/UI/loaders/udp-linear-loader/udp-linear-loader.tsx","src/components/my-component/UI/menu/menu-item/udp-menu-item.css?tag=udp-menu-item&encapsulation=shadow","src/components/my-component/UI/menu/menu-item/udp-menu-item.tsx","src/components/my-component/UI/feedback/udp-notification/udp-notification.css?tag=udp-notification&encapsulation=shadow","src/components/my-component/UI/feedback/udp-notification/udp-notification.tsx","src/components/my-component/UI/data-display/headers/udp-page-header/udp-page-header.css?tag=udp-page-header&encapsulation=shadow","src/components/my-component/UI/data-display/headers/udp-page-header/udp-page-header.tsx","src/components/my-component/UI/data-display/pop-over/udp-pop-over.css?tag=udp-pop-over&encapsulation=shadow","src/components/my-component/UI/data-display/pop-over/udp-pop-over.tsx","src/components/my-component/UI/data-display/pop-over-grid-action-header/udp-pop-over-grid-action-header.css?tag=udp-pop-over-grid-action-header&encapsulation=shadow","src/components/my-component/UI/data-display/pop-over-grid-action-header/udp-pop-over-grid-action-header.tsx","src/components/my-component/UI/buttons/icon-button/radio-button/udp-radio-button.css?tag=udp-radio-button","src/components/my-component/UI/buttons/icon-button/radio-button/udp-radio-button.tsx","src/components/my-component/UI/inputs/udp-selector/udp-selector.css?tag=udp-selector&encapsulation=shadow","src/components/my-component/UI/inputs/udp-selector/udp-selector.tsx","src/components/my-component/UI/loaders/udp-skeleton-loading.css?tag=udp-skeleton-loading&encapsulation=shadow","src/components/my-component/UI/loaders/udp-skeleton-loading.tsx","src/components/my-component/UI/tabs/tab/udp-tab.css?tag=udp-tab","src/components/my-component/UI/tabs/tab/udp-tab.tsx","src/components/my-component/UI/tabs/tab/tabs/udp-tabs.css?tag=udp-tabs","src/components/my-component/UI/tabs/tab/tabs/udp-tabs.tsx","src/components/my-component/UI/unity-typography/unity-typography.css?tag=unity-typography&encapsulation=shadow","src/components/my-component/UI/unity-typography/unity-typography.tsx","src/components/my-component/UI/feedback/udp-notification/alerts/upd-alert-banner.css?tag=upd-alert-banner&encapsulation=shadow","src/components/my-component/UI/feedback/udp-notification/alerts/upd-alert-banner.tsx"],"sourcesContent":["export const trimStringAfter = (str, character) => {\n const lastIndex = str.lastIndexOf(character);\n return str.substring(0, lastIndex === -1 ? str.length : lastIndex);\n };\n\n export const removeWhiteSpace = (str) => {\n if (!str) {\n return '';\n }\n return str.replace(/\\s/g, '');\n };\n \n export const camelToPascalCaseWithSpace = (str) => {\n const capitalizedStr = str.charAt(0).toUpperCase() + str.slice(1);\n return capitalizedStr.replace(/([a-z0-9])([A-Z])/g, '$1 $2');\n };\n \n\n \n export const toLowerFirstChar = (field) => {\n return field.charAt(0).toLowerCase() + field.slice(1);\n };\n \n export const toUpperFirstChar = (field) => {\n return field?.charAt(0)?.toUpperCase() + field?.slice(1);\n };\n \n export const toTitleCase = (str) => {\n const result = str.replace(/([A-Z][a-z]+)/g, ' $1').replace(/([A-Z]+)\\b/g, ' $1').trim();\n return result.charAt(0).toUpperCase() + result.slice(1);\n };\n \n export const pluralize = (str) => {\n const last = str.charAt(str.length - 1);\n if (last === 's') {\n return str;\n } else {\n return `${str}s`;\n }\n };\n ","import { toLowerFirstChar, toTitleCase } from '../../../../../udp-utilities/string-utilities';\n\n\n\nconst defaultGridColumn = {\n headerName: '',\n field: '',\n minWidth: 100,\n autoHeight: true,\n sortable: false,\n headerComponentParams: { id: 'myCustomId1' },\n headerComponent: 'CustomHeaderComponent',\n };\n\n\n export const defaultColActionsDef = {\n resizable: true,\n editable: false,\n sortable: true,\n filter: true,\n floatingFilter: false,\n enableRowGroup: true\n };\n\n type MyType = {\n headerName: any;\n field: any;\n checkboxSelection: boolean;\n headerCheckboxSelection: boolean;\n cellRendererParams: { checkbox: boolean };\n minWidth: number;\n autoHeight: boolean;\n sortable: boolean;\n filter: string; \n headerComponentParams: any; \n headerComponent: string; \n treatAsDate: boolean;\n };\n \n\n\nconst getModelProperties = (model, componentsObj) => {\n let modelPropertiesObj = null;\n if (model) {\n modelPropertiesObj = model.properties;\n if (!modelPropertiesObj) {\n const refKeys = [];\n if (model['allOf']?.length) {\n model['allOf'].forEach((reference) => {\n if (reference['$ref']) {\n const refString = reference['$ref'];\n if (refString) {\n const lastIndex = refString.lastIndexOf('/');\n const referenceModel = refString.substring(lastIndex + 1);\n refKeys.push(referenceModel);\n }\n }\n });\n }\n refKeys.forEach((key) => {\n const abstractModel = componentsObj[key];\n if (modelPropertiesObj && abstractModel?.properties) {\n modelPropertiesObj = {\n ...modelPropertiesObj,\n ...abstractModel.properties\n };\n } else {\n modelPropertiesObj = abstractModel?.properties;\n }\n });\n }\n }\n return modelPropertiesObj;\n };\n \n\nexport const getEntityAttributes = (catalog, entityName) => {\n console.log('catalog entityName', catalog, entityName);\n if (!catalog) {\n return [];\n }\n const catalogObjectList = catalog?.ctlg?.catalogObjectList;\n const componentsObj = catalog?.ctlg?.components;\n const entity = catalogObjectList?.find(\n (catalogObject) => catalogObject.catalogObjectName === entityName\n );\n const model = componentsObj[entityName];\n let modelPropertiesObj = getModelProperties(model, componentsObj);\n if (entity?.properties?.length) {\n entity.properties.forEach((property) => {\n let nullable = true;\n if (modelPropertiesObj) {\n const modelProperty = modelPropertiesObj[property['name']];\n if (modelProperty) {\n nullable = modelProperty.nullable || false;\n }\n }\n property['nullable'] = nullable;\n });\n }\n console.log('entity XXX', entity)\n return entity ? entity.properties : [];\n };\n \n\n\n export const UdpGridColumnDefs = (\n entityAttributes,\n // actionList,\n //columnName = 'Actions',\n // crudTableActionRenderName = 'actionsRenderer',\n // panelDirection = 'right'\n ) => {\n console.log('entityAttributes', entityAttributes)\n const childEntityAttributes = entityAttributes?.reduce((defs, element) => {\n if (element?.extendedProperties?.childEntity) {\n defs.push(element);\n }\n return defs;\n }, []);\n \n let columnDefs =\n entityAttributes?.reduce((defs, element) => {\n // if (element?.extendedProperties?.defaultVisible) {\n if (!element?.extendedProperties?.childEntity) {\n // update column header if attribute has a child entity\n const childEntity = childEntityAttributes.find(\n ea =>\n Object.keys(ea?.extendedProperties?.childEntityAssoc || {})\n .length &&\n !ea?.extendedProperties?.childEntityAssoc?.UdpType &&\n ea?.name === element?.name &&\n ea?.extendedProperties?.childEntityAssoc.Keys.find(k =>\n toLowerFirstChar(k).includes(element?.name)\n )\n );\n const columnHeaderName = element?.alias ? element?.alias : toTitleCase(\n childEntity ? childEntity?.reference : element?.name\n );\n\n const treatAsDate: boolean = element?.treatAsDate;\n \n let def = {\n ...defaultGridColumn,\n headerName: columnHeaderName,\n field: element?.name.charAt(0).toLowerCase() + element?.name.slice(1),\n //field: element?.name,\n // checkboxSelection: !defs.length && true,\n // headerCheckboxSelection: !defs.length && true,\n // Remove adding checkbox to the first column. This is now added as a single column in the grid, pinned to the left that the user cannot hide. \n checkboxSelection: false,\n headerCheckboxSelection: false,\n cellRendererParams: {\n // Remove adding checkbox to the first column. This is now added as a single column in the grid, pinned to the left that the user cannot hide. \n checkbox: false,\n },\n treatAsDate: treatAsDate\n };\n \n if (element?.extendedProperties?.searchable) {\n let filterType = 'agTextColumnFilter';\n let filterOptions = ['equals'];\n\n switch (element?.type) {\n case 'string':\n filterType = 'agTextColumnFilter';\n filterOptions = ['contains', 'equals', 'notEqual', 'startsWith'];\n break;\n case 'int':\n filterType = 'agNumberColumnFilter';\n filterOptions = [ 'equals', 'notEqual', 'greaterThan', 'greaterThanOrEqual', 'lessThan', 'lessThanOrEqual', 'inRange'];\n break;\n case 'DateTime':\n filterType = 'agDateColumnFilter';\n filterOptions = ['equals', 'notEqual', 'lessThan', 'greaterThan', 'inRange'];\n break;\n default:\n filterType = 'agTextColumnFilter';\n filterOptions = ['contains', 'equals', 'notEqual', 'startsWith'];\n break;\n }\n\n def = {\n ...def,\n filter: filterType,\n filterParams: {\n suppressAndOrCondition: true,\n numberParser: (params) => {\n return params === null ? null : params;\n },\n filterOptions: filterOptions,\n buttons: ['apply', 'clear']\n },\n enableRowGroup: true,\n } as MyType; // Add type assertion here\n }\n \n if (element?.extendedProperties?.orderable) {\n def = {\n ...def,\n sortable: true,\n };\n }\n \n defs.push(def);\n }\n // }\n return defs;\n }, []) || [];\n\n console.log('columnDefs from conversionFunctions', columnDefs)\n \n return columnDefs;\n };\n\n\n\n// Add in addition to 'name' 'parentName' - not to be confused with 'parentName currently in use'\n// use name + parentName and assign it to 'parentPath'\n// use parentPath to later set the object to set the search filter key.\n\nexport const useTreeDatasource = (\n apiCatalog,\n filter,\n searchableOnly = true,\n includeReferenceNodes = true,\n name,\n parentFilter,\n parent\n) => {\n console.log('apiCatalog', apiCatalog)\n const filteredCatalogObjects = apiCatalog.ctlg.catalogObjectList.filter(\n (obj) =>\n !(obj.catalogObjectName.includes('Page') &&\n obj.catalogObjectName.length !== 4)\n ); \n\n console.log(\n 'items sent to useTreeDatasource',\n apiCatalog,\n filter,\n searchableOnly,\n includeReferenceNodes,\n name,\n parentFilter,\n parent\n )\n\n const catalogObjectName = filter\n const catalogObject = filteredCatalogObjects.find(\n (obj) => obj.catalogObjectName === catalogObjectName\n );\n\n if (!catalogObject) {\n console.error('Catalog object not found');\n return [];\n }\n\n// const rows = catalogObject.properties.filter((obj) =>\n// (includeReferenceNodes || obj.reference == null) ||\n// (obj.extendedProperties.searchable && obj.name.includes(filter ?? '')) ||\n// (!searchableOnly && obj.name.includes(filter ?? ''))\n// ).map(obj => ({\n// ...obj,\n// extendedProperties: {\n// ...obj.extendedProperties,\n// parentFilter: filter, \n// parent: name, \n// fromFilter: parentFilter \n// }\n// }));\n\nconst rows = catalogObject.properties.filter((obj) =>\n(includeReferenceNodes || obj.reference == null) ||\n(obj.extendedProperties.searchable && obj.name.includes(filter ?? '')) ||\n(!searchableOnly && obj.name.includes(filter ?? ''))\n).map(obj => {\n// Create or update parentPath based on existing value and new parent argument\nlet parentPath = obj.extendedProperties.parentPath;\nif (parent) {\n parentPath = parentPath ? `${parentPath}.${parent}` : parent;\n}\n\nreturn {\n ...obj,\n extendedProperties: {\n ...obj.extendedProperties,\n parentFilter: filter, // Assigning the incoming filter argument to parentFilter\n parent: name, // Assigning the incoming name argument to parent\n fromFilter: parentFilter, // Assigning the incoming parentFilter argument to fromFilter\n parentPath: parentPath // Updated parentPath\n }\n};\n});\n\n\n\n\n console.log('Generated rows:', rows);\n return rows;\n};\n\n",":host {\n display: block;\n height: 100%;\n}\n\n.container {\n display: flex;\n /* height: 100%; */\n height: 100vh; \n}\n\n.left-column {\n flex: 1;\n background-color: white;\n height: 90vh;\n overflow: scroll;\n padding: 8px;\n}\n\n.right-column {\n flex: 2;\n margin-left: 16px;\n padding: 16px;\n /* padding-top: 0px; */\n}\n\n.filter-group[data-level=\"0\"] {\n padding-left: 0;\n}\n\n.filter-group[data-level=\"1\"] {\n padding-left: 20px;\n}\n\n.filter-group[data-level=\"2\"] {\n padding-left: 40px;\n}\n\n.filter-group {\n margin-top: 24px; \n border-left: 1px solid #bababa;\n}\n\n.search-input-list {\n height: 100%;\n max-height: 70vh;\n overflow: auto;\n}\n\n.recent-searches {\n min-width: 300px;\n margin-bottom: 10px;\n}","import { Component, Prop, State, Event, EventEmitter, h, Watch, forceUpdate } from '@stencil/core';\nimport { useTreeDatasource } from '../grid/conversionFunctions/conversionFunctions';\nimport { state } from '../../../../store/catalog-store';\n\n@Component({\n tag: 'advanced-search',\n styleUrl: 'advanced-search.css',\n shadow: true,\n})\nexport class AdvancedSearch {\n @Prop() filterList: any[] = [];\n @Prop() filterRenderList: any[] = [];\n @Prop() fetchFilters: Function; // Assuming this function is passed down as a prop correctly\n @Prop() handleItemClick: (item: { searchField: string, searchOperator: string, searchValue: string }) => void;\n @State() nestedData: Map<string, any[]> = new Map();\n @Prop() handleDelete: (arg0: object) => void;\n @Event() advancedSearchItemChange: EventEmitter;\n @Prop() handleValueChanged: (event: CustomEvent) => void;\n @State() searchObject: Array<any> = [];\n @State() tempNestedData: Map<string, any[]> = new Map(); \n //@Prop() parentFilter?: string; \n @State() testData: any[] = [];\n @State() showChildren: boolean = false;\n\n\n\ncomponentWillLoad() {\n console.log('this.testData', this.testData)\n}\n \n\n@Watch('filterList')\nfilterListWatcher(newValue: any[], oldValue: any[]) {\n if (newValue !== oldValue) {\n this.testData = newValue;\n console.log('filterList has changed, updated testData', this.testData);\n }\n}\n\n\n\nhandleReferenceClick = async (referenceValue: string, name: string, parentReference?: string, parentFilter?: string, parent?: string, parentPath?: string) => {\n console.log('Clicked reference:', referenceValue, 'Name:', name, 'Parent Reference:', parentReference, 'parentFilter', parentFilter, 'parent reference click test', parent, parentPath);\n\n if (state.isLoadingCatalogData || state.catalogData === null) {\n console.log('Catalog data is not ready yet.');\n return;\n }\n\n try {\n console.log('state.catalogData', state.catalogData)\n const extendedSearchFilterList = await useTreeDatasource(state.catalogData, referenceValue, true, true, name, parentFilter, parent);\n console.log('extendedSearchFilterList', extendedSearchFilterList);\n\n if (Array.isArray(extendedSearchFilterList)) {\n this.updateNestedData(extendedSearchFilterList);\n } else {\n console.error('Extended search filter list is not an array');\n }\n console.log('Updated nestedData:', Array.from(this.nestedData.entries()));\n } catch (error) {\n console.error('Error fetching filters:', error);\n }\n};\n\n\nupdateNestedData = (children) => {\n if (!Array.isArray(children) || children.length === 0) {\n console.error('Invalid or empty children data provided for updateNestedData');\n return;\n }\n\n\n console.log('children in updatedNest', children);\n const fromFilter = children[0].extendedProperties.fromFilter;\n const parentName = children[0].extendedProperties.parent;\n\n const checkForName = fromFilter;\n \n const testParentArray = useTreeDatasource(state.catalogData, checkForName, true, true, name, '', '');\n console.log('testParentArray', testParentArray);\n\n if (testParentArray) {\n testParentArray.forEach(parentItem => {\n if (parentItem.name === parentName) {\n parentItem.referenceNode = children;\n console.log('add referenceNode array', children, testParentArray);\n } else if (parentItem.reference && parentItem.referenceNode) {\n this.updateNestedDataRecursively(parentItem.referenceNode, children, parentName);\n }\n });\n }\n\n // Helper function to check if an item is already present in the array\n const isItemPresent = (array, item) => array.some(existingItem => existingItem.name === item.name);\n\n // Recursive function to update the nested data\n const updateNestedDataHelper = (array, children, parentName) => {\n return array.map(item => {\n if (item.name === parentName) {\n // Filter out children that are already present before appending\n const newChildren = children.filter(child => !isItemPresent(item.referenceNode || [], child));\n return { ...item, referenceNode: [...(item.referenceNode || []), ...newChildren] };\n } else if (item.referenceNode) {\n return { ...item, referenceNode: updateNestedDataHelper(item.referenceNode, children, parentName) };\n } else {\n return item;\n }\n });\n };\n\n // Start the recursive update and assign it to testData\n this.testData = updateNestedDataHelper(this.testData, children, parentName);\n\n console.log('Updated testData', this.testData);\n forceUpdate(this); // Not generally recommended, use as a last resort\n};\n\n\n\nupdateNestedDataRecursively = (nestedArray, children, parentName) => {\n nestedArray.forEach(item => {\n if (item.name === parentName) {\n item.referenceNode = children;\n } else if (item.referenceNode) {\n this.updateNestedDataRecursively(item.referenceNode, children, parentName);\n }\n });\n};\n\n\nprivate onTreeListItemClick = (event: CustomEvent<{ searchField: string, searchOperator: string, searchValue: string, parentName?: string, parent?: string, parentPath?: string }>) => {\n const detail = event.detail;\n \n // Function to convert string to PascalCase\n const toPascalCase = (str) => {\n return str.split('.').map(part => part.charAt(0).toUpperCase() + part.slice(1)).join('.');\n };\n\n // Check if both parentName and parentPath are present\n if (detail.parentName && detail.parentPath) {\n detail.searchField = `${detail.parentPath}.${detail.parentName}.${detail.searchField}`;\n } else if (detail.parentName) {\n // If only parentName is present, exclude parentPath\n detail.searchField = `${detail.parentName}.${detail.searchField}`;\n } else {\n // No parentName or parentPath, use searchField as is\n detail.searchField = `${detail.searchField}`;\n }\n\n // Convert searchField to PascalCase\n detail.searchField = toPascalCase(detail.searchField);\n\n this.handleItemClick(detail); // Perform the search with the modified search object\n};\n\nrender() {\n const safeTestData = Array.isArray(this.testData) ? this.testData : [];\n const safeFilterRenderList = Array.isArray(this.filterRenderList) ? this.filterRenderList : [];\n\n return (\n <div class=\"container\">\n <div class=\"left-column\">\n {!safeTestData.length && <div style={{ marginRight: '8px' }}><udp-grid-loader width=\"362px\" num-columns=\"1\" num-rows=\"20\"></udp-grid-loader></div>}\n <div>\n {safeTestData.map((filter, index) => (\n <tree-list-item\n key={`${filter.name}-${index}`}\n level={0}\n label={filter.name}\n reference={filter.reference}\n parentName=\"\"\n parentFilter={filter.extendedProperties.parentFilter}\n parentPath={'filter.extendedProperties.parentPath'}\n parent={filter.extendedProperties?.parent}\n nestedItems={filter.referenceNode}\n onReference-clicked={(event: CustomEvent<{ reference: string, name: string, parentReference?: string, parentFilter?: string, parent?: string, parentPath?: string }>) =>\n this.handleReferenceClick(event.detail.reference, event.detail.name, event.detail.parentReference, event.detail.parentFilter, event.detail.parent, event.detail.parentPath)}\n onItemClick={this.onTreeListItemClick}\n >\n </tree-list-item>\n ))}\n </div>\n </div>\n <div class=\"right-column\">\n <udp-page-header onValueChanged={this.handleValueChanged}></udp-page-header>\n <filter-conditions></filter-conditions>\n {safeFilterRenderList.map((filter) =>\n filter.filterElements.map((item, index) => (\n <search-list-item\n key={`${item.searchField}-${index}`}\n label={item.searchField}\n handleDelete={() => this.handleDelete({\"searchField\": item.searchField, \"searchValue\": item.searchValue })}\n name={item.searchValue}\n />\n ))\n )}\n </div>\n </div>\n );\n}\n}\n\n",":host {\n display: block;\n height: 100%;\n}\n\n.container {\n display: flex;\n /* height: 100%; */\n height: 100vh; \n}\n\n.left-column {\n flex: 1;\n background-color: white;\n height: 90vh;\n overflow: scroll;\n padding: 8px;\n}\n\n.right-column {\n flex: 2;\n margin-left: 16px;\n padding: 16px;\n /* padding-top: 0px; */\n}\n\n.filter-group[data-level=\"0\"] {\n padding-left: 0;\n}\n\n.filter-group[data-level=\"1\"] {\n padding-left: 20px;\n}\n\n.filter-group[data-level=\"2\"] {\n padding-left: 40px;\n}\n\n.filter-group {\n margin-top: 24px; \n border-left: 1px solid #bababa;\n}\n\n.search-input-list {\n height: 100%;\n max-height: 70vh;\n overflow: auto;\n}\n\n.recent-searches {\n min-width: 300px;\n margin-bottom: 10px;\n}","import Close24 from '@carbon/icons/es/close/24';\nimport { Component, Element, Event, EventEmitter, forceUpdate, h, Prop, State, Watch } from '@stencil/core';\nimport { v4 as uuid } from 'uuid';\nimport { state } from '../../../../store/catalog-store';\nimport { useTreeDatasource } from '../grid/conversionFunctions/conversionFunctions';\nimport { FilterGroup } from './types';\n\n@Component({\n tag: 'advanced-search-grouped',\n styleUrl: 'advanced-search.css',\n shadow: true,\n})\nexport class AdvancedSearchGrouped {\n @Prop() filterList: any[] = [];\n @Prop() filterRenderList: any[] = [];\n @Prop() fetchFilters: Function; // Assuming this function is passed down as a prop correctly\n @Prop() handleItemClick: (item: { searchField: string; searchOperator: string; searchValue: string }) => void;\n @State() nestedData: Map<string, any[]> = new Map();\n @Prop() handleDelete: (arg0: object) => void;\n @Prop() handleGroupDelete: (filterGroupId: string) => void;\n @Prop() findGroupById: (groups: FilterGroup[], id: string) => FilterGroup | null;\n\n @Event() advancedSearchItemChange: EventEmitter;\n @Prop() handleValueChanged: (event: CustomEvent) => void;\n @State() searchObject: Array<any> = [];\n @State() tempNestedData: Map<string, any[]> = new Map();\n //@Prop() parentFilter?: string;\n @State() testData: any[] = [];\n @State() showChildren: boolean = false;\n @Element() el: HTMLElement;\n @State() filterGroups: FilterGroup[] = [];\n\n @Prop() filterObjectsWithGroups: FilterGroup[] = [];\n @State() disableFilterSelection: boolean = true;\n @Prop() searchData: any;\n @Prop() updateLogicalOperator: (groupId: string, logicalOperator: 'AND' | 'OR') => void;\n\n @Prop() handleAddNewFilter: (groupId: string) => void;\n @Prop() handleAddNewGroup: (groupId: string, logicalOperator: 'AND' | 'OR') => void;\n @State() sharedId: string = '';\n\n @Event() searchItemChanged: EventEmitter;\n @Event() searchOperatorChanged: EventEmitter;\n\n @State() filters: Array<{\n id: string;\n groupId: string;\n searchField: string;\n searchOperator: string;\n searchValue: string;\n }> = [];\n\n @Prop() recentSearchesOptions: any[] = [];\n @Prop() selectRecentSearch: (e: any) => void;\n @Prop() fullClearSearch: () => void;\n @Prop() getLogicalOperatorCode: (logicalOperator: 'AND' | 'OR') => number;\n @Prop() getLogicalOperatorValue: (logicalOperator: number) => 'AND' | 'OR';\n\n componentWillLoad() {}\n\n @Watch('filterList')\n filterListWatcher(newValue: any[], oldValue: any[]) {\n if (newValue !== oldValue) {\n this.testData = newValue;\n console.log('filterList has changed, updated testData', this.testData);\n }\n }\n\n @Watch('filterObjectsWithGroups')\n filterObjectsWithGroupsChanged(newValue: FilterGroup[], oldValue: FilterGroup[]) {\n if (newValue !== oldValue) {\n console.log('filterObjectsWithGroups has been updated externally');\n // React to the change as necessary, e.g., re-initialize certain state based on the new prop value\n }\n }\n\n handleReferenceClick = async (referenceValue: string, name: string, parentReference?: string, parentFilter?: string, parent?: string, parentPath?: string) => {\n console.log(\n 'Clicked reference:',\n referenceValue,\n 'Name:',\n name,\n 'Parent Reference:',\n parentReference,\n 'parentFilter',\n parentFilter,\n 'parent reference click test',\n parent,\n parentPath,\n );\n\n if (state.isLoadingCatalogData || state.catalogData === null) {\n console.log('Catalog data is not ready yet.');\n return;\n }\n\n try {\n console.log('state.catalogData', state.catalogData);\n const extendedSearchFilterList = await useTreeDatasource(state.catalogData, referenceValue, true, true, name, parentFilter, parent);\n console.log('extendedSearchFilterList', extendedSearchFilterList);\n\n if (Array.isArray(extendedSearchFilterList)) {\n this.updateNestedData(extendedSearchFilterList);\n } else {\n console.error('Extended search filter list is not an array');\n }\n console.log('Updated nestedData:', Array.from(this.nestedData.entries()));\n } catch (error) {\n console.error('Error fetching filters:', error);\n }\n };\n\n updateNestedData = children => {\n if (!Array.isArray(children) || children.length === 0) {\n console.error('Invalid or empty children data provided for updateNestedData');\n return;\n }\n\n console.log('children in updatedNest', children);\n const fromFilter = children[0].extendedProperties.fromFilter;\n const parentName = children[0].extendedProperties.parent;\n\n const checkForName = fromFilter;\n\n const testParentArray = useTreeDatasource(state.catalogData, checkForName, true, true, name, '', '');\n console.log('testParentArray', testParentArray);\n\n if (testParentArray) {\n testParentArray.forEach(parentItem => {\n if (parentItem.name === parentName) {\n parentItem.referenceNode = children;\n console.log('add referenceNode array', children, testParentArray);\n } else if (parentItem.reference && parentItem.referenceNode) {\n this.updateNestedDataRecursively(parentItem.referenceNode, children, parentName);\n }\n });\n }\n\n // Helper function to check if an item is already present in the array\n const isItemPresent = (array, item) => array.some(existingItem => existingItem.name === item.name);\n\n // Recursive function to update the nested data\n const updateNestedDataHelper = (array, children, parentName) => {\n return array.map(item => {\n if (item.name === parentName) {\n // Filter out children that are already present before appending\n const newChildren = children.filter(child => !isItemPresent(item.referenceNode || [], child));\n return { ...item, referenceNode: [...(item.referenceNode || []), ...newChildren] };\n } else if (item.referenceNode) {\n return { ...item, referenceNode: updateNestedDataHelper(item.referenceNode, children, parentName) };\n } else {\n return item;\n }\n });\n };\n\n // Start the recursive update and assign it to testData\n this.testData = updateNestedDataHelper(this.testData, children, parentName);\n\n console.log('Updated testData', this.testData);\n forceUpdate(this); // Not generally recommended, use as a last resort\n };\n\n updateNestedDataRecursively = (nestedArray, children, parentName) => {\n nestedArray.forEach(item => {\n if (item.name === parentName) {\n item.referenceNode = children;\n } else if (item.referenceNode) {\n this.updateNestedDataRecursively(item.referenceNode, children, parentName);\n }\n });\n };\n\n private onTreeListItemClick = (\n event: CustomEvent<{ searchField: string; searchOperator: string; searchValue: string; parentName?: string; parent?: string; parentPath?: string; id?: string }>,\n ) => {\n const detail = event.detail;\n console.log('Tree list item clicked in grouped:', detail);\n // Function to convert string to PascalCase\n const toPascalCase = str => {\n return str\n .split('.')\n .map(part => part.charAt(0).toUpperCase() + part.slice(1))\n .join('.');\n };\n\n // Check if both parentName and parentPath are present\n if (detail.parentName && detail.parentPath) {\n detail.searchField = `${detail.parentPath}.${detail.parentName}.${detail.searchField}`;\n } else if (detail.parentName) {\n // If only parentName is present, exclude parentPath\n detail.searchField = `${detail.parentName}.${detail.searchField}`;\n } else {\n // No parentName or parentPath, use searchField as is\n detail.searchField = `${detail.searchField}`;\n }\n\n // Convert searchField to PascalCase\n detail.searchField = toPascalCase(detail.searchField);\n\n this.handleItemClick(detail); // Perform the search with the modified search object\n this.disableFilterSelection = true;\n };\n\n updateFilterWithUserData(uniqueId: string, userData: { searchField: string; searchOperator: string; searchValue: string }) {\n const updatedFilters = this.filters.map(filter => (filter.id === uniqueId ? { ...filter, ...userData } : filter));\n this.filters = updatedFilters; // Update the state with the modified filters array\n }\n\n updateGroupLogicalOperator(groupId: string, newLogicalOperator: 'AND' | 'OR') {\n const updateOperatorInNode = (nodes: any[], nodeId: string, newOperator: 'AND' | 'OR') => {\n for (const node of nodes) {\n if (node.id === nodeId) {\n node.logicalOperator = newOperator; // Update the operator\n return true;\n }\n if (node.children && updateOperatorInNode(node.children, nodeId, newOperator)) {\n return true; // Operator updated in a deeper level\n }\n }\n return false; // Node not found\n };\n\n // Attempt to update the operator in the node\n if (updateOperatorInNode(this.filterObjectsWithGroups, groupId, newLogicalOperator)) {\n // If the update was successful, trigger a state update\n this.filterObjectsWithGroups = [...this.filterObjectsWithGroups];\n }\n }\n\n handleSearchItemChange(event: CustomEvent) {\n const { searchOperator, searchValue, filterGroupId, id } = event.detail;\n const group = this.findGroupById(this.filterObjectsWithGroups, filterGroupId);\n\n if (group) {\n const filter = group.filters.find(f => f.id === id);\n if (filter) {\n filter.searchOperator = searchOperator;\n filter.searchValue = searchValue;\n this.filterObjectsWithGroups = [...this.filterObjectsWithGroups];\n }\n }\n\n this.searchItemChanged.emit(event.detail);\n }\n\n private handleOperatorSelected(event: CustomEvent, filterGroupId: string) {\n const selectedOptionValue = event.detail.value; // Assuming this is '1' for AND, '2' for OR\n const newLogicalOperator = this.getLogicalOperatorValue(selectedOptionValue);\n\n // Call the updateLogicalOperator prop function passed from the parent component\n this.updateLogicalOperator(filterGroupId, newLogicalOperator);\n this.searchOperatorChanged.emit();\n }\n\n currentLogicalOperator: 'AND' | 'OR' = 'AND';\n\n private renderFilterGroup(filterGroup: FilterGroup, level: number = 0) {\n const isRoot = filterGroup.id === 'root';\n const isDefault = filterGroup.id === 'default';\n const paddingStyle = { 'padding-left': `${20 * level}px` };\n\n const logicalOperator = this.getLogicalOperatorCode(filterGroup.logicalOperator).toString();\n\n const operatorSelector = (\n <udp-selector\n options={[\n { value: '1', label: 'AND' },\n { value: '2', label: 'OR' },\n ]}\n onChange={(event: CustomEvent) => this.handleOperatorSelected(event, filterGroup.filterGroupId)}\n initialValue={logicalOperator}\n disabled={isRoot || isDefault}\n />\n );\n\n const deleteGroupButton = !isRoot && !isDefault && <stencil-icon-button icon={Close24} onClick={() => this.handleGroupDelete(filterGroup.filterGroupId)} />;\n\n const filterItems = !isRoot && (\n <div class=\"search-input-list\">\n {filterGroup.filters.map((filter, index) => (\n <search-list-item\n key={`${filter.id}-${index}`}\n isDefault={isDefault}\n id={filter.id}\n filterGroupId={filter.filterGroupId}\n label={filter.searchField}\n handleDelete={() => this.handleDelete(filter)}\n name={filter.searchValue}\n operator={filter.searchOperator}\n onSearchItemChanged={event => this.handleSearchItemChange(event)}\n isInitialSearchItem={filter.isInitialFilterElement}\n />\n ))}\n </div>\n );\n\n const actionButtons = !isDefault && (\n <div style={{ display: 'flex', gap: '8px', marginTop: '8px' }}>\n {!isRoot && (\n <custom-button variant=\"outline\" onClick={() => this.addFilter(filterGroup.id, filterGroup.filterGroupId)}>\n + Field\n </custom-button>\n )}\n <custom-button variant=\"outline\" onClick={() => this.handleAddNewGroup(!isRoot ? filterGroup.id : 'root', this.currentLogicalOperator)}>\n + Group\n </custom-button>\n </div>\n );\n\n const nestedGroups = <div class=\"nested-groups\">{(filterGroup.children || []).map(childGroup => this.renderFilterGroup(childGroup, level + 1))}</div>;\n\n return (\n <div class={!isRoot && 'filter-group'} style={paddingStyle}>\n {isDefault && filterGroup.filters.length === 0 ? null : (\n <div style={{ marginBottom: '16px' }}>\n <div style={{ display: 'flex', gap: '8px' }}>\n {operatorSelector}\n {deleteGroupButton}\n </div>\n </div>\n )}\n\n {filterItems}\n {actionButtons}\n {nestedGroups}\n </div>\n );\n }\n\n private addFilter(groupId: string, filterGroupId: string) {\n console.log('Adding filter...');\n this.disableFilterSelection = false;\n if (this.handleAddNewFilter) {\n this.handleAddNewFilter(filterGroupId);\n }\n\n const newFilterPlaceholder = {\n id: uuid(),\n groupId: groupId,\n filterGroupId: filterGroupId,\n searchField: '', // Initial placeholder for the search field\n searchOperator: '=', // Default or initial placeholder for the search operator\n searchValue: '', // Initial placeholder for the search value\n };\n this.filters = [...this.filters, newFilterPlaceholder];\n }\n\n render() {\n const safeTestData = Array.isArray(this.testData) ? this.testData : [];\n //const safeFilterRenderList = Array.isArray(this.filterRenderList) ? this.filterRenderList : [];\n\n return (\n <div class=\"container\">\n <div class=\"left-column\">\n {this.selectRecentSearch !== null && this.fullClearSearch !== null && (\n <div class=\"recent-searches\">\n Recent Searches\n <div style={{ display: 'flex', alignItems: 'center' }}>\n <udp-selector options={this.recentSearchesOptions} onChange={(e: CustomEvent) => this.selectRecentSearch(e)} style={{ marginRight: '10px' }}></udp-selector>\n <udp-function-button delete onClick={this.fullClearSearch}></udp-function-button>\n </div>\n </div>\n )}\n\n {!safeTestData.length && (\n <div style={{ marginRight: '8px' }}>\n <udp-grid-loader width=\"362px\" num-columns=\"1\" num-rows=\"20\"></udp-grid-loader>\n </div>\n )}\n <div>\n {safeTestData.map((filter, index) => (\n <tree-list-item\n add={true}\n showAdd={true}\n key={`${filter.name}-${index}`}\n level={0}\n label={filter.name}\n reference={filter.reference}\n parentName=\"\"\n parentFilter={filter.extendedProperties.parentFilter}\n parentPath={'filter.extendedProperties.parentPath'}\n parent={filter.extendedProperties?.parent}\n nestedItems={filter.referenceNode}\n onReference-clicked={(\n event: CustomEvent<{ reference: string; name: string; parentReference?: string; parentFilter?: string; parent?: string; parentPath?: string }>,\n ) =>\n this.handleReferenceClick(\n event.detail.reference,\n event.detail.name,\n event.detail.parentReference,\n event.detail.parentFilter,\n event.detail.parent,\n event.detail.parentPath,\n )\n }\n onItemClick={this.onTreeListItemClick}\n ></tree-list-item>\n ))}\n </div>\n </div>\n <div class=\"right-column\">{this.filterObjectsWithGroups.map(group => this.renderFilterGroup(group))}</div>\n {this.disableFilterSelection && (\n <div style={{ width: '411px', height: '100vh', background: 'white', position: 'absolute', zIndex: '9', top: '45px', left: 'px', opacity: '0.7' }}></div>\n )}\n </div>\n );\n }\n}\n","import { Component, h, Prop, Element } from '@stencil/core';\nimport { GridOptions } from 'ag-grid-enterprise';\n\n@Component({\n tag: 'ag-table',\n shadow: false // Changed from true to false\n})\nexport class AgTable {\n @Element() el: HTMLElement;\n @Prop() gridOptions: GridOptions;\n @Prop() licensekey: string; // Changed to lowercase to match JSX/TSX\n @Prop() height: string = 'calc(100vh - 200px)';\n\n render() {\n return (\n <div id=\"myGrid\" style={{ height: this.height, width: '100%' }} class=\"ag-theme-material\"></div>\n );\n }\n}\n",".container {\n background-color: white;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n margin-top: 40px;\n margin-bottom: 40px;\n }\n \n .title {\n font-size: 1.2em;\n margin-bottom: 16px;\n }\n \n .title-container {\n margin-bottom: 16px;\n }","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'ambient-demo-container',\n styleUrl: 'ambient-demo-container.css',\n shadow: true,\n})\nexport class AmbientDemoContainer {\n @Prop() title: string;\n\n render() {\n return (\n <div class=\"container\">\n <div class=\"title-container\" > <unity-typography variant=\"button\"> {this.title} </unity-typography> </div>\n \n <slot></slot>\n </div>\n );\n }\n}\n ","import { ICellRenderer } from 'ag-grid-community';\n\nexport default class CustomRenderer implements ICellRenderer {\n private eGui: HTMLElement;\n private statusChip: any; // Use appropriate type\n\n public init(params: any): void {\n this.eGui = document.createElement('div');\n this.eGui.innerHTML = `\n <status-chip></status-chip>\n `;\n this.statusChip = this.eGui.querySelector('status-chip');\n this.statusChip.status = params.value;\n }\n\n public getGui(): HTMLElement {\n return this.eGui;\n }\n\n public refresh(params: any): boolean {\n this.statusChip.status = params.value;\n return true;\n }\n}\n","import { ICellRenderer } from 'ag-grid-community';\nimport ChooseItem16 from '@carbon/icons/es/choose-item/16';\n\nexport default class CustomActionsRenderer implements ICellRenderer {\n private eGui: HTMLElement;\n private iconButton: any; // Use appropriate type\n\n public init(params: any): void {\n this.eGui = document.createElement('div');\n\n this.eGui.innerHTML = `\n <stencil-icon-button></stencil-icon-button>\n `;\n\n this.iconButton = this.eGui.querySelector('stencil-icon-button');\n \n // Assuming `icon` is the attribute or property used to set the icon\n this.iconButton.icon = ChooseItem16;\n\n this.iconButton = this.eGui.querySelector('stencil-icon-button');\n\n // Assigning the cell value to some attribute or property\n this.iconButton.cellValue = params.value;\n\n // Use the provided onClick function if it exists\n const onClick = params.onClick || function() {};\n \n // Add an onClick event listener to the button\n this.iconButton.addEventListener('click', () => onClick(params.value));\n }\n\n public getGui(): HTMLElement {\n return this.eGui;\n }\n\n public refresh(params: any): boolean {\n this.iconButton.cellValue = params.value;\n return true;\n }\n}\n","export enum LogicalSearchOperatorEnums {\n And = 1,\n Or = 2\n }\n \n export enum SearchGroupingType {\n Distinct = 'DISTINCT',\n Aggregate = 'AGGREGATE'\n }\n \n \n export enum SearchSortDirection {\n Asc = 'ASC',\n Desc = 'DESC'\n }\n ","import { LogicalSearchOperatorEnums, SearchGroupingType } from '../udp-grid-enums';\nimport { Search } from '../search/inquiry-search-datasource';\n\nexport const getSearchObject = (\n searchFilterElements,\n page,\n pageSize,\n eagerLoad = false,\n logicalSearchOperator = LogicalSearchOperatorEnums.And\n ) => {\n\n console.log('Incoming arguments SearchUtility', searchFilterElements);\n const searchObject: Search = {\n pageNumber: page || 1,\n pageSize: pageSize || 20,\n filterElements: [],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: eagerLoad,\n logicalSearchOperator: logicalSearchOperator,\n };\n \n if (searchFilterElements) {\n searchFilterElements.forEach(property => {\n const formattedPropertyName = property.searchField;\n searchObject.filterElements = searchFilterElements;\n // adds order elements\n if (property.sortDirection) {\n const orderElement = {\n sortColumn: formattedPropertyName,\n sortDirection: property.sortDirection,\n };\n searchObject.orderElements.push(orderElement);\n }\n if (property.distinct) {\n searchObject.groupingType = SearchGroupingType.Distinct;\n searchObject.groupProperty?.push(formattedPropertyName);\n }\n });\n }\n console.log('SearchUtility output', searchObject)\n return searchObject;\n };","import { SearchGroupingType, SearchSortDirection } from '../udp-grid-enums';\nimport { FilterOperators } from '../models/udp-models';\nimport { getSearchObject } from '../search/search-utilities';\nimport { getCleanData } from '../../api-udp/apiUtils';\n\nlet rowGroups = [];\n\nexport const SearchServiceDatasource = (\n queryData,\n gridUID,\n isRecentSearch,\n apiMethodId,\n hotlistEmpty,\n searchFilterElements,\n logicalSearchOperator,\n lookupApiMethodId: Promise<string> | string,\n executeQuery,\n lookupsMap: object | null | undefined,\n defaultFilterObject,\n onDataFetched,\n updateLoadingState,\n) => {\n return {\n async getRows(params, shouldForceEmptyResults = false) {\n console.log(\n 'Incoming arguments get rows',\n // queryData,\n gridUID,\n isRecentSearch,\n // apiMethodId,\n searchFilterElements,\n defaultFilterObject,\n //logicalSearchOperator,\n //accessToken, // Add accessToken as an argument\n //tenantId, // Add tenantId as an argument\n // executeQuery,\n // onDataFetched\n );\n\n if (shouldForceEmptyResults) {\n params.success({\n rowData: [],\n rowCount: 0,\n });\n onDataFetched([], 0);\n return;\n }\n\n const {\n startRow,\n endRow,\n rowGroupCols,\n groupKeys,\n // valueCols,\n filterModel,\n sortModel,\n } = params.request;\n const page = endRow / 20;\n const searchObject = getSearchObject(\n //searchFilterElements,\n [],\n page,\n null,\n false,\n logicalSearchOperator,\n );\n updateLoadingState(true);\n\n // handle server-side sorting on ag-grid\n // const data = { data: searchObject, filterObject:searchFilterElements };\n // const response = await executeQuery(data, apiMethodId, accessToken, tenantId, searchFilterElements, defaultFilterObject, logicalSearchOperator);\n // console.log('early response', response.pageList)\n\n // if (response) {\n // if (response?.pageList?.length > 0) {\n // onDataFetched(response.pageList);\n // params.success({\n // rowData: response.pageList,\n // rowCount: parseInt(response.total)\n // });\n // } else {\n // params.success([], 0);\n // }\n // }\n\n if (Array.isArray(sortModel) && sortModel.length > 0) {\n const orderElements = searchObject.orderElements || [];\n sortModel.forEach(sortItem => {\n if (sortItem && sortItem.colId) {\n const formattedPropertyName = sortItem.colId.charAt(0).toUpperCase() + sortItem.colId.slice(1);\n const element = orderElements.find(element => element.sortColumn === formattedPropertyName);\n if (element) {\n element.sortDirection = sortItem.sort.toUpperCase();\n } else {\n orderElements.push({\n sortColumn: formattedPropertyName,\n sortDirection: sortItem.sort.toUpperCase(),\n });\n }\n }\n });\n }\n\n // handle server-side filtering on ag-grid\n if (Object.keys(filterModel).length) {\n const filterElements = searchObject.filterElements || [];\n Object.keys(filterModel).forEach(key => {\n const filterItem = filterModel[key];\n const formattedPropertyName = key.charAt(0).toUpperCase() + key.slice(1);\n const element = filterElements.find(element => element.searchField === formattedPropertyName);\n if (element) {\n element.searchValue = filterItem.filter;\n element.searchOperator = FilterOperators[filterItem.type];\n } else {\n filterElements.push({\n searchField: formattedPropertyName,\n searchValue: filterItem.filter,\n searchOperator: FilterOperators[filterItem.type],\n });\n }\n });\n }\n\n // construct search for initial grouping\n if (rowGroupCols.length && !groupKeys.length) {\n const formattedPropertyName = rowGroupCols[0].field.charAt(0).toUpperCase() + rowGroupCols[0].field.slice(1);\n searchObject.groupingType = SearchGroupingType.Distinct;\n if (!searchObject.groupProperty.includes(formattedPropertyName)) {\n searchObject.groupProperty.push(formattedPropertyName);\n\n const orderElements = searchObject.orderElements || [];\n const element = orderElements.find(element => element.sortColumn === formattedPropertyName);\n if (!element) {\n orderElements.push({\n sortColumn: formattedPropertyName,\n sortDirection: SearchSortDirection.Asc,\n });\n }\n }\n }\n\n // construct the filter for grouped columns\n // Check if groupKeys is an array and has elements\n if (Array.isArray(groupKeys) && groupKeys.length > 0) {\n // Check if the length of groupKeys is equal to the length of rowGroupCols\n if (groupKeys.length === rowGroupCols.length) {\n searchObject.groupingType = '';\n const filterElements = searchObject.filterElements || [];\n groupKeys.forEach((key, index) => {\n if (rowGroupCols[index]) {\n // Ensure rowGroupCols[index] is not undefined\n const rowGroupCol = rowGroupCols[index];\n const formattedPropertyName = rowGroupCol.field.charAt(0).toUpperCase() + rowGroupCol.field.slice(1);\n const element = filterElements.find(element => element.searchField === formattedPropertyName);\n let currentNode = null;\n\n params.api.forEachNode(node => {\n const nodeKey = node.field;\n if (nodeKey?.toLowerCase() === formattedPropertyName?.toLowerCase() && node?.data?.[nodeKey] === key) {\n currentNode = node;\n return;\n }\n });\n let searchValue = key;\n if (currentNode) {\n const cleanData = getCleanData(currentNode.data, lookupsMap) || null;\n if (cleanData) {\n searchValue = cleanData[currentNode.field];\n }\n }\n\n if (element) {\n element.searchValue = searchValue;\n element.searchOperator = '=';\n } else {\n filterElements.push({\n searchField: formattedPropertyName,\n searchValue: searchValue,\n searchOperator: '=',\n });\n }\n }\n });\n } else {\n // Construct search for the next grouped element\n groupKeys.forEach((key, index) => {\n if (rowGroupCols[index]) {\n // Ensure rowGroupCols[index] is not undefined\n const formattedPropertyNameForSearch = rowGroupCols[index].field.charAt(0).toUpperCase() + rowGroupCols[index].field.slice(1);\n\n searchObject.filterElements = searchObject.filterElements || [];\n let currentNode = null;\n params.api.forEachNode(node => {\n const nodeKey = node.field;\n if (nodeKey?.toLowerCase() === formattedPropertyNameForSearch?.toLowerCase() && node?.data?.[nodeKey] === key) {\n currentNode = node;\n return;\n }\n });\n let searchValue = key;\n if (currentNode) {\n const cleanData = getCleanData(currentNode.data, lookupsMap) || null;\n if (cleanData) {\n searchValue = cleanData[currentNode.field];\n }\n }\n\n searchObject.filterElements.push({\n searchField: formattedPropertyNameForSearch,\n searchValue: searchValue,\n searchOperator: '=',\n });\n }\n });\n\n searchObject.groupingType = SearchGroupingType.Distinct;\n if (groupKeys.length < rowGroupCols.length) {\n const rowGroupCol = rowGroupCols[groupKeys.length];\n if (rowGroupCol) {\n // Ensure rowGroupCol is not undefined\n const formattedPropertyName = rowGroupCol.field.charAt(0).toUpperCase() + rowGroupCol.field.slice(1);\n\n searchObject.groupProperty = searchObject.groupProperty || [];\n if (!searchObject.groupProperty.includes(formattedPropertyName)) {\n searchObject.groupProperty.push(formattedPropertyName);\n\n const orderElements = searchObject.orderElements || [];\n const element = orderElements.find(element => element.sortColumn === formattedPropertyName);\n if (!element) {\n orderElements.push({\n sortColumn: formattedPropertyName,\n sortDirection: SearchSortDirection.Asc,\n });\n }\n }\n }\n }\n }\n }\n\n if (!startRow && rowGroupCols.length === 0 && !sortModel.length && !Object.keys(filterModel).length && !groupKeys.length && queryData) {\n if (queryData.pageList && queryData.pageList) {\n params.successCallback(queryData.pageList, queryData.total);\n } else {\n // TODO: add an overlay to display no rows\n params.successCallback([], 0);\n }\n } else {\n let response = null;\n if (executeQuery) {\n function deepCopy(obj) {\n return JSON.parse(JSON.stringify(obj));\n }\n\n function mergeArrays(searchFilterElements, searchObject) {\n return searchFilterElements.map(element => {\n let newElement = deepCopy(element);\n for (const key in searchObject) {\n if (Array.isArray(newElement[key]) && newElement[key].length === 0 && searchObject[key].length > 0) {\n newElement[key] = deepCopy(searchObject[key]);\n } else if (!Array.isArray(newElement[key]) && searchObject.hasOwnProperty(key)) {\n newElement[key] = searchObject[key];\n } else if (key === 'filterElements' && searchObject[key].length > 0 && newElement[key].length > 0 && rowGroupCols.length > 0) {\n //If columnFiltering and grouping rows are present, then we need to merge the filter elements\n const filteredElements = searchObject[key].filter(element => element.searchOperator === '=');\n newElement[key] = newElement[key].concat(filteredElements);\n }\n }\n return newElement;\n });\n }\n rowGroups = rowGroupCols.map(group => group.field);\n const updatedSearchFilterElements = mergeArrays(searchFilterElements, searchObject);\n\n function saveSearch() {\n // Ignore if empty search\n if (updatedSearchFilterElements[0].filterElements.length == 0) {\n return;\n }\n\n // Define the new search\n var newSearchObj = updatedSearchFilterElements[0];\n\n // Add Timestamp\n const currentTimeStamp: number = Date.now();\n const formattedTimeStamp: string = new Date(currentTimeStamp).toLocaleString();\n\n // Get list of all search histories for all grids, we'll be replacing this entirely in localstorage\n var recentSearches = localStorage.getItem('recentSearches') ? JSON.parse(localStorage.getItem('recentSearches')) : [];\n\n // Get search history specific to current grid\n // Find current grid\n var currentGridSearchHistoryObj = recentSearches.find(item => item.gridUID === (gridUID || 'default_gridUID'));\n if (currentGridSearchHistoryObj) {\n // Update the searchHistory property of the found object\n currentGridSearchHistoryObj.searchHistory.unshift({ timestamp: formattedTimeStamp, searchObj: newSearchObj });\n // Limit length to 10\n if (currentGridSearchHistoryObj.searchHistory.length > 10) {\n currentGridSearchHistoryObj.searchHistory = currentGridSearchHistoryObj.searchHistory.slice(0, 10);\n }\n } else {\n // If the gridUID is not found, create a new object\n recentSearches.push({ gridUID: gridUID, searchHistory: [{ timestamp: formattedTimeStamp, searchObj: newSearchObj }] });\n }\n // Store the updated array back into localStorage\n localStorage.setItem('recentSearches', JSON.stringify(recentSearches));\n }\n if (isRecentSearch == false) {\n saveSearch();\n } else isRecentSearch = false;\n\n // const data = { data: searchObject, filterObject:searchFilterElements };\n //response = await executeQuery(data, apiMethodId);\n // Pass accessToken and tenantId to executeQueryAdHoc\n response = await executeQuery(updatedSearchFilterElements, defaultFilterObject, logicalSearchOperator, apiMethodId, lookupsMap, false, {\n lookupApiMethodId,\n prefetch: params.request.prefetch ?? false,\n }).catch(e => console.error(e.message));\n }\n //const rowData = response?.data;\n const rowData = response;\n\n if (hotlistEmpty) {\n rowData.pageList = [];\n rowData.total = 0;\n }\n\n console.log('early response', rowData?.pageList);\n console.log('filter object from SearchServiceDatasource', searchFilterElements[0].filterElements);\n\n function toCamelCase(str) {\n // Check if 'str' is a string\n if (typeof str === 'string') {\n return str.charAt(0).toLowerCase() + str.slice(1);\n } else {\n // Handle the case where 'str' is not a string\n return str;\n }\n }\n\n function rankData(rowData, filterObjects) {\n // If this is true then row grouping has been enabled and we need to hide values when row is collasped\n //by setting them to null\n if (searchObject.groupProperty.length > 0 && searchObject.groupProperty) {\n const groupProps = searchObject.groupProperty.map(prop => prop.toLowerCase());\n rowData.forEach(row => {\n // Loop through each property in the row\n for (let prop in row) {\n // Check if the property is not in the groupProperties since properties in groupProperties should not be NULL\n // but rather have its column hidden which is done in ambient-template-grid.tsx\n if (!groupProps.includes(prop.toLowerCase())) {\n // Set the property to null\n row[prop] = null;\n }\n }\n });\n }\n\n console.log('rankData, rd', rowData);\n console.log('rankData filterObjects', filterObjects);\n return rowData?.map(row => {\n let searchRank = 10;\n\n filterObjects.forEach(filter => {\n const fieldName = toCamelCase(filter.searchField);\n\n // Check if the field exists in the row\n if (row.hasOwnProperty(fieldName)) {\n console.log('pass this test? ', row.hasOwnProperty(fieldName));\n // Check if the field is a string and compare with lowercase, else compare directly\n if (typeof row[fieldName] === 'string') {\n console.log('pass test 2', typeof row[fieldName] === 'string');\n if (row[fieldName].toLowerCase() === filter.searchValue.toLowerCase()) {\n console.log('pass test 3', row[fieldName].toLowerCase() === filter.searchValue.toLowerCase());\n searchRank += 10;\n }\n } else if (row[fieldName] === filter.searchValue) {\n searchRank += 10;\n }\n }\n });\n\n return { ...row, searchRank };\n });\n }\n\n const rowDataRanked = rankData(rowData?.pageList, searchFilterElements[0].filterElements);\n\n console.log('rowDataRanked', rowDataRanked);\n\n //const rowDataRankedSorted = rowDataRanked.sort((a, b) => b.searchRank - a.searchRank);\n\n // if (rowData) {\n // if (rowData?.pageList?.length > 0) {\n // onDataFetched(rowDataRankedSorted);\n // params.success({\n // rowData: rowDataRankedSorted,\n // rowCount: parseInt(rowData.total)\n // });\n // } else {\n // params.success([], 0);\n // }\n // }\n\n if (!rowData || rowData.pageList.length === 0) {\n // When there are no records, ensure the format aligns with AG-Grid's expectations:\n console.log('No data to display.');\n const event = new CustomEvent('noDataDetected', { detail: {} });\n document.dispatchEvent(event);\n params.success({\n // Make sure to pass an object with rowData and rowCount\n rowData: [],\n rowCount: 0,\n });\n onDataFetched([], 0); // Indicating no data\n } else {\n // Handle the normal case with data\n const rowDataRanked = rankData(rowData.pageList, searchFilterElements[0].filterElements);\n const rowDataRankedSorted = rowDataRanked.sort((a, b) => b.searchRank - a.searchRank);\n onDataFetched(rowDataRankedSorted, parseInt(rowData.total));\n params.success({\n rowData: rowDataRankedSorted,\n rowCount: parseInt(rowData.total),\n });\n console.log('Data processed and sent to grid.');\n }\n }\n },\n };\n};\n\nexport { rowGroups };\n","import { ICellRenderer } from 'ag-grid-community';\n//import { SharedContext } from './sharedContext'; // Ensure the path is correct\n\nexport default class EmailCellRenderer implements ICellRenderer {\n private eGui: HTMLElement;\n //private otherCellValue: any;\n private clickListener: () => void;\n\n public init(params: any): void {\n this.eGui = document.createElement('div');\n\n // Set the cell's content with the arrow character appended\n this.eGui.innerHTML = `${params.value} <span style=\"padding-left: 5px; color: blue \">🡕</span>`;\n\n // Style the cell\n this.applyStyles();\n\n // Retrieve the value from another cell in the same row (update 'otherField' accordingly)\n //this.otherCellValue = params.data.contactID;\n\n // Create a click listener that calls the shared callback with the other cell's value\n //this.clickListener = () => SharedContext.myClickCallback(this.otherCellValue);\n\n // Add the click event listener to the cell\n this.eGui.addEventListener('click', this.clickListener);\n }\n\n private applyStyles(): void {\n // Apply your desired styling here\n this.eGui.style.backgroundColor = '#f0f0f0'; // Light grey background\n this.eGui.style.borderRadius = '50px'; // Rounded corners\n this.eGui.style.paddingLeft = '8px'; // Some padding\n this.eGui.style.paddingRight = '8px'; // Some padding\n this.eGui.style.textAlign = 'center'; // Center the text\n this.eGui.style.margin = '2px 0'; // Add a bit of margin for spacing\n this.eGui.style.lineHeight = '26px'; // Add a bit of margin for spacing\n this.eGui.style.cursor = 'pointer'; \n \n // Apply styles to the arrow\n const arrowStyle = document.createElement('style');\n arrowStyle.innerHTML = `\n .arrow {\n display: inline-block;\n \n }\n `;\n document.head.appendChild(arrowStyle);\n }\n\n public getGui(): HTMLElement {\n return this.eGui;\n }\n\n public refresh(params: any): boolean {\n // Update the content (with arrow) and other cell value when data changes\n this.eGui.innerHTML = `${params.value} <span style=\"padding-left: 6px; \">⇡</span>`;\n //this.otherCellValue = params.data.contactID;\n return true; // Return true to indicate the refresh happened\n }\n\n public destroy(): void {\n // Cleanup: remove the click event listener\n if (this.eGui && this.clickListener) {\n this.eGui.removeEventListener('click', this.clickListener);\n }\n }\n}\n","export const SharedContext = {\n myClickCallback: (otherCellValue, callbackId) => { \n console.log('In callback',otherCellValue, callbackId)\n },\n viewActionCallback: (otherCellValue, callbackId) => { \n console.log('In callback',otherCellValue, callbackId)\n },\n thirdActionCallback: (otherCellValue, callbackId) => { \n console.log('In callback',otherCellValue, callbackId)\n },\n hotListAddHandler: null, // New handler specifically for HotListAddRenderer\n \n};\n\n ","import { ICellRenderer } from 'ag-grid-community';\nimport { SharedContext } from './sharedContext'; // Ensure the path is correct\n\nexport default class OpenFunctionCellRenderer implements ICellRenderer {\n private eGui: HTMLElement;\n private otherCellValue: any;\n private otherField: string;\n private callbackId: string;\n \n public init(params: any): void {\n console.log('Renderer params:', params);\n \n this.eGui = document.createElement('div');\n\n // Check if we're in a group and if the specific field is available\n if(params.node.group) {\n // Possibly display something different for group rows or nothing at all\n if(params.value) {\n this.eGui.innerHTML = `${params.value} <span style=\"padding-left: 5px; color: blue;\">🡕</span>`;\n }else {\n this.eGui.style.display = 'none';\n }\n\n } else {\n // Normal row rendering\n if(params.value) {\n this.eGui.innerHTML = `${params.value} <span style=\"padding-left: 5px; color: blue;\">🡕</span>`;\n }\n }\n \n this.applyStyles();\n\n // Only proceed if not a group row\n if(!params.node.group) {\n this.otherField = params.colDef.cellRendererParams.otherField;\n this.otherCellValue = params.data[this.otherField];\n this.callbackId = params.colDef.cellRendererParams.callbackId;\n\n this.eGui.addEventListener('click', () => {\n console.log('Click event triggered');\n if (typeof SharedContext.myClickCallback === 'function') {\n console.log('Executing shared callback');\n SharedContext.myClickCallback(this.otherCellValue, this.callbackId);\n } else {\n console.log('Dispatching custom event');\n const customEvent = new CustomEvent('cellClick', {\n detail: { cellValue: this.otherCellValue, callbackId: this.callbackId },\n bubbles: true,\n composed: true\n });\n this.eGui.dispatchEvent(customEvent);\n }\n });\n }\n } \n\n private applyStyles(): void {\n this.eGui.style.backgroundColor = '#f0f0f0';\n this.eGui.style.borderRadius = '50px';\n this.eGui.style.paddingLeft = '8px';\n this.eGui.style.paddingRight = '8px';\n this.eGui.style.textAlign = 'center';\n this.eGui.style.margin = '2px 0';\n this.eGui.style.lineHeight = '26px';\n this.eGui.style.cursor = 'pointer';\n }\n\n public getGui(): HTMLElement {\n return this.eGui;\n }\n\n public refresh(params: any): boolean {\n // Make sure the renderer updates correctly for grouped/non-grouped rows\n if(!params.node.group && params.value) {\n this.eGui.innerHTML = `${params.value} <span style=\"padding-left: 5px; color: blue;\">🡕</span>`;\n this.otherCellValue = params.data[this.otherField];\n }\n return true;\n }\n\n public destroy(): void {\n // Cleanup if necessary\n }\n}","import { ICellRenderer } from 'ag-grid-community';\nimport { SharedContext } from './sharedContext';\nimport { state } from '../../../../../store/catalog-store';\n\nexport default class HotListAddRenderer implements ICellRenderer {\n private eGui: HTMLElement;\n private otherCellValue: any;\n private callbackId: string;\n private viewActionElement: HTMLButtonElement;\n private thirdActionElement: HTMLButtonElement;\n\n public init(params: any): void {\n this.eGui = document.createElement('div');\n this.otherCellValue = params.data;\n this.callbackId = params.colDef.cellRendererParams.callbackId;\n\n this.viewActionElement = document.createElement('button');\n this.viewActionElement.textContent = '⋯';\n this.viewActionElement.addEventListener('click', this.onViewActionClick.bind(this));\n \n\n this.thirdActionElement = document.createElement('button');\n this.thirdActionElement.textContent = 'Third Action'; // Example text\n this.thirdActionElement.addEventListener('click', this.onThirdActionClick.bind(this));\n\n // Update display based on hotListActive\n this.updateDisplay(params);\n\n // Append second action button if enabled\n if (params.colDef.cellRendererParams.showViewAction) {\n this.eGui.appendChild(this.viewActionElement);\n }\n if( params.node.group && !params.value){\n this.eGui.style.display = 'none';\n }\n\n this.eGui.addEventListener('click', () => {\n if (SharedContext.hotListAddHandler && params.colDef.cellRendererParams.showThirdAction) {\n SharedContext.hotListAddHandler(this.otherCellValue, this.callbackId);\n } else if (typeof SharedContext.myClickCallback === 'function') {\n SharedContext.myClickCallback(this.otherCellValue, this.callbackId);\n } else {\n const customEvent = new CustomEvent('cellClick', {\n detail: { cellValue: this.otherCellValue, callbackId: this.callbackId },\n bubbles: true,\n composed: true\n });\n this.eGui.dispatchEvent(customEvent);\n }\n });\n \n \n\n this.applyStyles(params);\n }\n\n private onViewActionClick(event: MouseEvent): void {\n event.stopPropagation();\n\n if (typeof SharedContext.viewActionCallback === 'function') {\n SharedContext.viewActionCallback(this.otherCellValue, this.callbackId);\n } else {\n const customEvent = new CustomEvent('viewActionClick', {\n detail: { cellValue: this.otherCellValue, callbackId: this.callbackId },\n bubbles: true,\n composed: true\n });\n this.eGui.dispatchEvent(customEvent);\n }\n }\n\n private onThirdActionClick(event: MouseEvent): void {\n event.stopPropagation();\n\n if (typeof SharedContext.thirdActionCallback === 'function') {\n SharedContext.thirdActionCallback(this.otherCellValue, this.callbackId);\n } else {\n const customEvent = new CustomEvent('thirdActionClick', {\n detail: { cellValue: this.otherCellValue, callbackId: this.callbackId },\n bubbles: true,\n composed: true\n });\n this.eGui.dispatchEvent(customEvent);\n }\n }\n\n // private updateDisplay(params: any): void {\n // console.log(params);\n // const hotListActive = state.hotListActive || '';\n\n // if (params.colDef.cellRendererParams.showThirdAction) {\n // const symbol = hotListActive !== '' ? '-' : '+';\n // const color = hotListActive !== '' ? '#dfd3ff' : '#f0f0f0';\n // this.eGui.innerHTML = `✱ <span style=\"padding-left: 5px; color: blue;\">${symbol}</span>`;\n // this.eGui.style.backgroundColor = color;\n // this.eGui.title = 'Hotlist';\n // this.thirdActionElement.disabled = !params.colDef.cellRendererParams.showThirdAction;\n // }\n // }\n\n// private updateDisplay(params: any): void {\n// console.log(params);\n// const hotListActive = state.hotListActive || '';\n\n\n// // This assumes that you're managing the visibility and interaction of both the symbol and the third action button\n// if (params.colDef.cellRendererParams.showThirdAction) {\n// // Update symbol container if necessary\n// const symbol = hotListActive !== '' ? '-' : '+';\n// const color = hotListActive !== '' ? 'green' : 'pink';\n// this.eGui.innerHTML = `✱ <span style=\"padding-left: 5px; color: grey;\">${symbol}</span>`;\n \n// this.eGui.style.backgroundColor = color;\n// this.eGui.title = 'Hotlist';\n\n// // Ensure third action element is ready for interaction\n// this.thirdActionElement.style.display = ''; // Ensure button is visible\n// this.thirdActionElement.disabled = false; // Ensure button is interactive\n// this.thirdActionElement.style.display = 'none'; // Hide the button\n// this.thirdActionElement.disabled = true; // Disable the button\n\n// // Optionally clear any innerHTML manipulation if it affects interaction\n// this.eGui.innerHTML = '';\n// } else {\n// // Hide and disable third action element when not needed\n// this.thirdActionElement.style.display = 'none'; // Hide the button\n// this.thirdActionElement.disabled = true; // Disable the button\n\n// // Optionally clear any innerHTML manipulation if it affects interaction\n// this.eGui.innerHTML = ''; // Remove other interactive elements or symbols\n// this.eGui.appendChild(this.viewActionElement); // Make sure to re-append view action element to maintain it in the DOM\n// }\n\n// // Ensure view action element is always interactive regardless of other conditions\n// this.viewActionElement.style.display = '';\n// this.viewActionElement.disabled = false;\n// }\n\nprivate updateDisplay(params: any): void {\n console.log(params);\n const hotListActive = state.hotListActive || '';\n\n \n\n // Conditionally add or remove the styled span based on `showThirdAction`\n if (params.colDef.cellRendererParams.showThirdAction) {\n // Determine the background color and symbol based on `hotListActive`\n const color = hotListActive !== '' ? 'rgb(224, 224, 224)' : 'rgb(201, 239, 224)';\n const symbol = hotListActive !== '' ? '-' : '+';\n\n // Set the title and background color of the entire GUI element\n this.eGui.title = 'Hotlist';\n this.eGui.style.backgroundColor = color;\n const specialContent = `✱ <span style=\"padding-left: 5px; color: grey;\">${symbol}</span>`;\n // Try to access the existing special content element if it exists\n let existingSpan = this.eGui.querySelector('span');\n if (!existingSpan) {\n // If it doesn't exist, use insertAdjacentHTML to add without overwriting\n this.eGui.insertAdjacentHTML('afterbegin', specialContent);\n }\n } else {\n // If `showThirdAction` is false, remove the span if it exists\n let existingSpan = this.eGui.querySelector('span');\n if (existingSpan) {\n existingSpan.remove(); // Remove the styled span\n }\n }\n\n // Control visibility and interaction of the third action button\n this.thirdActionElement.style.display = params.colDef.cellRendererParams.showThirdAction ? '' : 'none';\n this.thirdActionElement.disabled = !params.colDef.cellRendererParams.showThirdAction;\n\n // Ensure the view action element is maintained and always interactive\n if (!this.eGui.contains(this.viewActionElement)) {\n this.eGui.appendChild(this.viewActionElement);\n }\n this.viewActionElement.style.display = '';\n this.viewActionElement.disabled = false;\n}\n\n \n\n private applyStyles(params): void {\n \n this.eGui.style.borderRadius = '50px';\n this.eGui.style.paddingLeft = '8px';\n this.eGui.style.paddingRight = '8px';\n this.eGui.style.textAlign = 'center';\n this.eGui.style.margin = '2px 0';\n this.eGui.style.lineHeight = '26px';\n this.eGui.style.cursor = params.colDef.cellRendererParams.showThirdAction && 'pointer';\n this.eGui.style.width = '30px';\n\n // Additional styles for viewActionElement\n this.viewActionElement.style.backgroundColor = 'rgb(224, 224, 224)'; // light grey background\n this.viewActionElement.style.color = '#000'; // text color\n this.viewActionElement.style.border = 'none';\n this.viewActionElement.style.borderRadius = '15px'; // rounded corners\n this.viewActionElement.style.padding = '5px 10px'; // padding inside the button\n this.viewActionElement.style.margin = '2px';\n this.viewActionElement.style.cursor = 'pointer';\n this.viewActionElement.style.fontSize = '14px'; // font size\n this.viewActionElement.style.marginLeft = params.colDef.cellRendererParams.showThirdAction ? '16px' : '0px';\n this.viewActionElement.style.transform = params.colDef.cellRendererParams.showThirdAction ? 'none' : 'translateX(-10px)';\n this.viewActionElement.title = 'View More';\n this.thirdActionElement.title = 'Third Action';\n }\n\n public getGui(): HTMLElement {\n return this.eGui;\n }\n\n public refresh(params: any): boolean {\n this.updateDisplay(params);\n return true;\n }\n\n public destroy(): void {\n // Cleanup if necessary\n }\n}\n","import { ICellRenderer } from 'ag-grid-community';\nimport { SharedContext } from './sharedContext'; // Ensure the path is correct\n\nexport default class HoverContentCellRenderer implements ICellRenderer {\n private eGui: HTMLElement;\n private hoverInfo: string;\n private tooltipField: string;\n\n public init(params: any): void {\n console.log('Renderer params:', params);\n this.eGui = document.createElement('div');\n this.eGui.innerHTML = params.value;\n this.applyStyles();\n\n \n if (params.colDef.tooltipField) {\n const columnDefs = params.api.getColumnDefs();\n const columnDefToModify = columnDefs.find(col => col.colId === params.colDef.field);\n const updatedColDef = {\n ...columnDefToModify,\n tooltipField: \"\"\n };\n params.api.setColumnDefs(columnDefs.map(col =>\n col.field === params.colDef.field ? updatedColDef : col\n ));\n }\n\n this.tooltipField = params.colDef.cellRendererParams.otherField || 'defaultTooltipField';\n this.hoverInfo = params.data[this.tooltipField];\n this.createTooltip();\n\n this.eGui.addEventListener('mouseover', this.handleMouseOver);\n this.eGui.addEventListener('mouseout', this.hideTooltip);\n }\n\n private applyStyles(): void {\n (this.eGui as HTMLElement).style.cursor = 'help'; // Change as needed\n // Add more styles as needed\n }\n\n private createTooltip(): void {\n const tooltip = document.createElement('span');\n tooltip.innerText = this.hoverInfo;\n tooltip.style.visibility = 'hidden';\n tooltip.style.position = 'absolute';\n tooltip.style.zIndex = '999';\n tooltip.style.backgroundColor = 'white';\n tooltip.style.border = '1px solid grey';\n tooltip.style.padding = '5px';\n tooltip.style.boxShadow = '0px 4px 8px rgba(0, 0, 0, 0.1)'; \n tooltip.classList.add('cell-tooltip');\n this.eGui.appendChild(tooltip);\n }\n\n private handleMouseOver = () => {\n const tooltip = this.eGui.querySelector('.cell-tooltip') as HTMLElement;\n tooltip.style.visibility = 'visible';\n\n // Using SharedContext's myClickCallback\n SharedContext.myClickCallback(this.hoverInfo, 'someCallbackId');\n };\n\n private hideTooltip = () => {\n const tooltip = this.eGui.querySelector('.cell-tooltip') as HTMLElement;\n tooltip.style.visibility = 'hidden';\n };\n\n public getGui(): HTMLElement {\n return this.eGui;\n }\n\n public refresh(params: any): boolean {\n this.eGui.innerHTML = params.value;\n this.hoverInfo = params.data[this.tooltipField];\n // Update tooltip text if necessary\n return true;\n }\n\n public destroy(): void {\n // Cleanup if necessary\n }\n}\n","export const LicenseKey =\n'Using_this_{AG_Grid}_Enterprise_key_{AG-060880}_in_excess_of_the_licence_granted_is_not_permitted___Please_report_misuse_to_legal@ag-grid.com___For_help_with_changing_this_key_please_contact_info@ag-grid.com___{Univerus_Software_Inc}_is_granted_a_{Single_Application}_Developer_License_for_the_application_{MAIS_eRec}_only_for_{1}_Front-End_JavaScript_developer___All_Front-End_JavaScript_developers_working_on_{MAIS_eRec}_need_to_be_licensed___{MAIS_eRec}_has_not_been_granted_a_Deployment_License_Add-on___This_key_works_with_{AG_Grid}_Enterprise_versions_released_before_{28_June_2025}____[v3]_[01]_MTc1MTA2NTIwMDAwMA==17ac166e7bb5dcca7f3eaa21c79da63b'\n","export function buildSearchPayload(filterObjectsWithGroups) {\n let currentGroupId = 0;\n console.log('filterObjectsWithGroups', filterObjectsWithGroups);\n // Converts the search operator to its symbolic form\n const convertSearchOperator = (operator) => {\n switch (operator) {\n case 'equals':\n return '=';\n case '<>':\n return '<>'; // Assuming this is already the symbolic form\n case '=': // Added to handle cases where the operator might already be in symbolic form\n return '=';\n // Add more cases as needed\n default:\n return operator; // Default case returns the operator as is\n }\n };\n \n // Converts the logical operator to its numeric form\n const convertLogicalOperator = (logicalOperator) => {\n return logicalOperator === 'AND' ? 1 : 2; // Assuming only AND/OR are used\n };\n \n const filterElements = [];\n const filterGroups = [];\n \n const traverse = (filterObject, parentId = null) => {\n currentGroupId++;\n const groupId = currentGroupId;\n \n filterGroups.push({\n groupId,\n logicalSearchOperator: convertLogicalOperator(filterObject.logicalOperator),\n parentGroupId: parentId,\n });\n \n filterObject.filters.forEach(filter => {\n filterElements.push({\n searchField: filter.searchField,\n searchOperator: convertSearchOperator(filter.searchOperator),\n searchValue: filter.searchValue, // Ensure this is correctly accessing the searchValue\n groupId,\n });\n });\n \n filterObject.children?.forEach(child => {\n traverse(child, groupId);\n });\n };\n \n filterObjectsWithGroups.forEach(filterObject => traverse(filterObject));\n \n return {\n pageNumber: 1,\n pageSize: 20,\n filterElements,\n orderElements: [],\n groupingType: \"\",\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: filterGroups.length > 0 ? filterGroups[0].logicalSearchOperator : 1, // Default to 1 if no groups\n type: \"advanced\",\n filterGroups,\n };\n }\n \n\n ","import { ICellRenderer } from 'ag-grid-community';\n\nexport default class DateTimeCellRenderer implements ICellRenderer {\n private eGui: HTMLElement;\n private formatMode: 'exact' | 'relative' | 'exact-with-time' = 'exact'; // Default to 'relative'\n private locale: 'UK' | 'US' = 'UK'; // Default locale\n\n public init(params: any): void {\n console.log('Renderer init called.'); // Check if init is called\n this.eGui = document.createElement('div');\n this.formatMode = params.formatMode || this.formatMode;\n this.locale = params.locale || this.locale;\n\n // If we are grouping by row and value is null we want to hide the cell\n if (params.node.group && !params.value) {\n this.eGui.style.display = 'none';\n } else {\n const formattedDate = this.formatDate(params.value);\n this.eGui.innerHTML = `${formattedDate}`;\n }\n this.applyStyles();\n }\n\n private formatDate(dateString: string): string {\n console.log('formatDate called with:', dateString); // Log when formatDate is called\n if (!dateString) {\n return '';\n }\n\n const date = new Date(dateString);\n if (this.formatMode === 'exact-with-time') {\n return this.formatExactDate(date, true);\n }\n\n return this.formatExactDate(date);\n }\n\n private formatExactDate(date: Date, includeTime: boolean = false): string {\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear().toString();\n\n let formatted = this.locale === 'UK' ? `${day}/${month}/${year}` : `${month}/${day}/${year}`;\n\n if (includeTime) {\n const hours = date.getHours();\n const minutes = date.getMinutes().toString().padStart(2, '0');\n const ampm = hours >= 12 ? 'PM' : 'AM';\n const hour12 = (hours % 12 || 12).toString().padStart(2, '0');\n const time = `${hour12}:${minutes}${ampm}`;\n\n formatted += ` ${time}`;\n }\n\n console.log(`Formatting date${includeTime ? '/time' : ''} for locale: ${this.locale}`);\n return formatted;\n }\n\n public refresh(params: any): boolean {\n console.log('Renderer refresh called.'); // Check if refresh is called\n if (params.formatMode && params.formatMode !== this.formatMode) {\n this.formatMode = params.formatMode;\n }\n if (params.locale && params.locale !== this.locale) {\n this.locale = params.locale;\n }\n const formattedDate = this.formatDate(params.value);\n this.eGui.innerHTML = `${formattedDate}`;\n return true;\n }\n\n private applyStyles(): void {\n // this.eGui.style.padding = '8px';\n this.eGui.style.textAlign = 'left';\n this.eGui.style.cursor = 'default';\n }\n\n public getGui(): HTMLElement {\n return this.eGui;\n }\n\n public destroy(): void {\n // Optionally, clean up any added listeners, etc.\n }\n}\n","import { ICellRenderer } from 'ag-grid-community';\nimport { ActionItem } from '../ambient-template-grid/interfaces/gridInterfaces';\nimport { getIconFromName } from '../../data-display/icons/iconUtils';\n\nexport default class ActionsRenderer implements ICellRenderer {\n private eGui: HTMLElement;\n private actionList: ActionItem[] = [];\n\n public init(params: any): void {\n this.eGui = document.createElement('div');\n this.eGui.style.cssText = `display: flex;\n width: 100%;\n gap: 4px;\n justify-content: center;\n `;\n\n if (params?.hideActions && params?.hideActions(params?.node)) {\n return;\n }\n\n this.actionList = params?.actionList;\n this.actionList?.forEach(action => {\n const disabledAction = action?.checkDisabled ? action?.checkDisabled(params?.node) : action?.disabled ?? false;\n const actionTitle = action?.getTitle ? action?.getTitle(params?.node) : action?.title;\n const actionButton = document.createElement('stencil-icon-button');\n\n actionButton.buttonId = action?.id.toString();\n actionButton.icon = getIconFromName(action?.iconName);\n actionButton.tooltip = actionTitle;\n actionButton.disabled = disabledAction;\n actionButton.onClick = e => {\n action?.handleOnClick(e, params?.node);\n };\n\n this.eGui.appendChild(actionButton);\n });\n }\n\n public getGui(): HTMLElement {\n return this.eGui;\n }\n\n public refresh(): boolean {\n return true;\n }\n}\n","import { ICellRenderer } from 'ag-grid-community';\n\nexport default class StatusRenderer implements ICellRenderer {\n private eGui: HTMLElement;\n private statusMappingClasses: { [key: string]: string } = {\n error: 'error',\n warning: 'warning',\n success: 'success',\n info: 'info',\n };\n\n public init(params: any): void {\n this.eGui = document.createElement('div');\n\n if (params?.statusMappingConfig) {\n this.statusMappingClasses = params?.statusMappingConfig;\n }\n const statusChip = document.createElement('status-chip');\n const currentValue = params?.getStatusValue ? params?.getStatusValue(params?.node?.data) : params.value;\n \n statusChip.statusValue = currentValue;\n statusChip.statusClasses = this.statusMappingClasses;\n statusChip.dense = true;\n statusChip.innerHTML = currentValue;\n this.eGui.appendChild(statusChip);\n }\n\n public getGui(): HTMLElement {\n return this.eGui;\n }\n\n public refresh(): boolean {\n return true;\n }\n}\n","import { ICellRenderer } from 'ag-grid-community';\n\nexport default class IconRenderer implements ICellRenderer {\n private eGui: HTMLElement;\n private iconMappingConfig: { [key: string]: { label: string; iconName: string; iconType: string } } = {};\n\n public init(params: any): void {\n this.eGui = document.createElement('div');\n this.eGui.style.cssText = `display: flex;\n width: 100%;\n height: 100%;\n gap: 8px;\n justify-content: center;\n align-items: center;\n height: 32px;\n `;\n if (params?.iconMappingConfig) {\n this.iconMappingConfig = params?.iconMappingConfig;\n }\n const icon = document.createElement('udp-icon');\n\n icon.iconType = this.iconMappingConfig[params.value]?.iconType;\n icon.iconName = this.iconMappingConfig[params.value]?.iconName;\n this.eGui.appendChild(icon);\n\n if (this.iconMappingConfig[params.value]?.label) {\n const text = document.createElement('p');\n text.innerHTML = this.iconMappingConfig[params.value]?.label;\n text.style.cssText = 'margin: 0px';\n this.eGui.appendChild(text);\n } \n }\n\n public getGui(): HTMLElement {\n return this.eGui;\n }\n\n public refresh(): boolean {\n return true;\n }\n}\n","export function format(first: string, middle: string, last: string): string {\n return (first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : '');\n}\n\nexport function fortmatCurrency(\n value: number | undefined | null,\n currency: string = 'USD',\n locales: string = 'en-US',\n minimumFractionDigits: number = 2,\n maximumFractionDigits: number = 3,\n) {\n const valueOrNull = value ?? null;\n\n return !!valueOrNull\n ? new Intl.NumberFormat(locales, {\n style: 'currency',\n currency: currency,\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits,\n }).format(valueOrNull)\n : '';\n}\n","import { ICellRenderer } from 'ag-grid-community';\nimport { fortmatCurrency } from 'src/utils/utils';\n\nexport default class CurrencyRenderer implements ICellRenderer {\n private eGui: HTMLElement;\n\n public init(params: any): void {\n this.eGui = document.createElement('div');\n const formattedCurrency = fortmatCurrency(params?.value, params?.currency, params?.locales, params?.minimumFractionDigits, params?.maximumFractionDigits);\n this.eGui.innerHTML = formattedCurrency;\n }\n\n public getGui(): HTMLElement {\n return this.eGui;\n }\n\n public refresh(): boolean {\n return true;\n }\n}\n","@import '~ag-grid-enterprise/styles/ag-grid.css';\n@import '~ag-grid-enterprise/styles/ag-theme-material.css';\n\n.ag-virtual-list-viewport {\n background-color: rgb(214, 218, 223) !important;\n}\n\n.ag-column-panel {\n background-color: rgb(214, 218, 223) !important;\n}\n\n.ag-checkbox-input-wrapper.ag-checked::after {\n color: var(--primary-color);\n}\n\n.ag-header-cell,\n.ag-header-group-cell {\n background: var(--primary-color);\n color: rgb(214, 218, 223);\n}\n\n.ag-filter-toolpanel {\n background-color: rgb(214, 218, 223) !important;\n}\n\n.ag-row {\n border-bottom: 1px solid #ccc;\n}\n\n.ag-body-horizontal-scroll-viewport {\n overflow-x: hidden;\n}\n\n.ag-center-cols-viewport {\n width: 100% !important;\n /* overflow-x: scroll !important; */\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n.ag-cell {\n display: flex;\n align-items: center; /* Ensures vertical centering */\n justify-content: start; /* Adjusts horizontal alignment as needed */\n padding-top: 6px;\n padding-bottom: 2px;\n line-height: 16px;\n}\n\n/* Specific adjustments for text content */\n.ag-cell .ag-text-cell,\n.ag-cell .ag-text-area {\n line-height: 16px; /* Ensure line height matches the general adjustment */\n}\n\n/* .ag-row .ag-cell:last-child {\njustify-content: flex-end;\n} */\n\n.second-row {\n display: flex;\n align-items: center;\n width: 100%;\n /* background-color: #ccc; */\n background-color: rgb(247, 245, 243);\n padding-left: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n\n.chip-section {\n /* flex: 1; */\n display: flex;\n margin-left: 8px;\n}\n\n.chip-wrapper {\n display: flex;\n}\n\n.advanced-search-chips {\n margin-right: 16px;\n display: flex;\n gap: 8px;\n}\n\n.logical-operator {\n margin-right: 16px;\n}\n\n.kpi {\n margin-right: 16px;\n}\n\n.bulk-select {\n margin-right: 16px;\n}\n\n.ag-body-viewport.ag-layout-normal {\n /* overflow-y: hidden !important; */\n /* height: 100vh; */\n overflow-y: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n /* Hide scrollbar for Chrome, Safari */\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n/* .ag-center-cols-viewport {\n height: 150vh !important;\n} */\n\n.ag-side-button {\n display: none;\n}\n\n.ag-root-wrapper {\n box-sizing: content-box;\n}\n\n.ag-side-buttons {\n width: 0px !important;\n}\n\n.ag-header-container,\n.ag-floating-top-container,\n.ag-floating-bottom-container,\n.ag-sticky-top-container {\n background: var(--primary-color);\n}\n\n.advanced-group-search-chips {\n display: flex;\n gap: 8px;\n flex: 1;\n /* width: 400px; */\n}\n\n.chip-container {\n display: flex;\n gap: 8px;\n}\n\n.overflowChip {\n width: 200px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n/* ag-grid.css */\n.ag-icon {\n font-family: var(--ag-icon-font-family);\n font-size: var(--ag-icon-size);\n line-height: var(--ag-icon-size);\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.ag-icon-aggregation::before {\n content: var(--ag-icon-font-code-aggregation, '\\f101');\n}\n\n.ag-icon-arrows::before {\n content: var(--ag-icon-font-code-arrows, '\\f102');\n}\n\n.ag-icon-asc::before {\n content: var(--ag-icon-font-code-asc, '\\f103');\n}\n\n.ag-icon-cancel::before {\n content: var(--ag-icon-font-code-cancel, '\\f104');\n}\n\n.ag-icon-chart::before {\n content: var(--ag-icon-font-code-chart, '\\f105');\n}\n\n.ag-icon-checkbox-checked::before {\n content: var(--ag-icon-font-code-checkbox-checked, '\\f106');\n}\n\n.ag-icon-checkbox-indeterminate::before {\n content: var(--ag-icon-font-code-checkbox-indeterminate, '\\f107');\n}\n\n.ag-icon-checkbox-unchecked::before {\n content: var(--ag-icon-font-code-checkbox-unchecked, '\\f108');\n}\n\n.ag-icon-color-picker::before {\n content: var(--ag-icon-font-code-color-picker, '\\f109');\n}\n\n.ag-icon-columns::before {\n content: var(--ag-icon-font-code-columns, '\\f10a');\n}\n\n.ag-icon-contracted::before {\n content: var(--ag-icon-font-code-contracted, '\\f10b');\n}\n\n.ag-icon-copy::before {\n content: var(--ag-icon-font-code-copy, '\\f10c');\n}\n\n.ag-icon-cross::before {\n content: var(--ag-icon-font-code-cross, '\\f10d');\n}\n\n.ag-icon-csv::before {\n content: var(--ag-icon-font-code-csv, '\\f10e');\n}\n\n.ag-icon-cut::before {\n content: var(--ag-icon-font-code-cut, '\\f10f');\n}\n\n.ag-icon-desc::before {\n content: var(--ag-icon-font-code-desc, '\\f110');\n}\n\n.ag-icon-excel::before {\n content: var(--ag-icon-font-code-excel, '\\f111');\n}\n\n.ag-icon-expanded::before {\n content: var(--ag-icon-font-code-expanded, '\\f112');\n}\n\n.ag-icon-eye-slash::before {\n content: var(--ag-icon-font-code-eye-slash, '\\f113');\n}\n\n.ag-icon-eye::before {\n content: var(--ag-icon-font-code-eye, '\\f114');\n}\n\n.ag-icon-filter::before {\n content: var(--ag-icon-font-code-filter, '\\f115');\n}\n\n.ag-icon-first::before {\n content: var(--ag-icon-font-code-first, '\\f116');\n}\n\n.ag-icon-grip::before {\n content: var(--ag-icon-font-code-grip, '\\f117');\n}\n\n.ag-icon-group::before {\n content: var(--ag-icon-font-code-group, '\\f118');\n}\n\n.ag-icon-last::before {\n content: var(--ag-icon-font-code-last, '\\f119');\n}\n\n.ag-icon-left::before {\n content: var(--ag-icon-font-code-left, '\\f11a');\n}\n\n.ag-icon-linked::before {\n content: var(--ag-icon-font-code-linked, '\\f11b');\n}\n\n.ag-icon-loading::before {\n content: var(--ag-icon-font-code-loading, '\\f11c');\n}\n\n.ag-icon-maximize::before {\n content: var(--ag-icon-font-code-maximize, '\\f11d');\n}\n\n.ag-icon-menu::before {\n content: var(--ag-icon-font-code-menu, '\\f11e');\n}\n\n.ag-icon-minimize::before {\n content: var(--ag-icon-font-code-minimize, '\\f11f');\n}\n\n.ag-icon-next::before {\n content: var(--ag-icon-font-code-next, '\\f120');\n}\n\n.ag-icon-none::before {\n content: var(--ag-icon-font-code-none, '\\f121');\n}\n\n.ag-icon-not-allowed::before {\n content: var(--ag-icon-font-code-not-allowed, '\\f122');\n}\n\n.ag-icon-paste::before {\n content: var(--ag-icon-font-code-paste, '\\f123');\n}\n\n.ag-icon-pin::before {\n content: var(--ag-icon-font-code-pin, '\\f124');\n}\n\n.ag-icon-pivot::before {\n content: var(--ag-icon-font-code-pivot, '\\f125');\n}\n\n.ag-icon-previous::before {\n content: var(--ag-icon-font-code-previous, '\\f126');\n}\n\n.ag-icon-radio-button-off::before {\n content: var(--ag-icon-font-code-radio-button-off, '\\f127');\n}\n\n.ag-icon-radio-button-on::before {\n content: var(--ag-icon-font-code-radio-button-on, '\\f128');\n}\n\n.ag-icon-right::before {\n content: var(--ag-icon-font-code-right, '\\f129');\n}\n\n.ag-icon-save::before {\n content: var(--ag-icon-font-code-save, '\\f12a');\n}\n\n.ag-icon-small-down::before {\n content: var(--ag-icon-font-code-small-down, '\\f12b');\n}\n\n.ag-icon-small-left::before {\n content: var(--ag-icon-font-code-small-left, '\\f12c');\n}\n\n.ag-icon-small-right::before {\n content: var(--ag-icon-font-code-small-right, '\\f12d');\n}\n\n.ag-icon-small-up::before {\n content: var(--ag-icon-font-code-small-up, '\\f12e');\n}\n\n.ag-icon-tick::before {\n content: var(--ag-icon-font-code-tick, '\\f12f');\n}\n\n.ag-icon-tree-closed::before {\n content: var(--ag-icon-font-code-tree-closed, '\\f130');\n}\n\n.ag-icon-tree-indeterminate::before {\n content: var(--ag-icon-font-code-tree-indeterminate, '\\f131');\n}\n\n.ag-icon-tree-open::before {\n content: var(--ag-icon-font-code-tree-open, '\\f132');\n}\n\n.ag-icon-unlinked::before {\n content: var(--ag-icon-font-code-unlinked, '\\f133');\n}\n\n.ag-icon-row-drag::before {\n content: var(--ag-icon-font-code-grip);\n}\n\n.ag-left-arrow::before {\n content: var(--ag-icon-font-code-left);\n}\n\n.ag-right-arrow::before {\n content: var(--ag-icon-font-code-right);\n}\n\n[class*='ag-theme-'] {\n --ag-foreground-color: #000;\n --ag-data-color: var(--ag-foreground-color);\n --ag-secondary-foreground-color: var(--ag-foreground-color);\n --ag-header-foreground-color: var(--ag-secondary-foreground-color);\n --ag-disabled-foreground-color: rgba(0, 0, 0, 0.5);\n --ag-background-color: #fff;\n --ag-header-background-color: transparent;\n --ag-tooltip-background-color: transparent;\n --ag-subheader-background-color: transparent;\n --ag-subheader-toolbar-background-color: transparent;\n --ag-control-panel-background-color: transparent;\n --ag-side-button-selected-background-color: var(--ag-control-panel-background-color);\n --ag-selected-row-background-color: #bbb;\n --ag-odd-row-background-color: var(--ag-background-color);\n --ag-modal-overlay-background-color: rgba(255, 255, 255, 0.66);\n --ag-row-hover-color: transparent;\n --ag-column-hover-color: transparent;\n --ag-range-selection-border-color: var(--ag-foreground-color);\n --ag-range-selection-border-style: solid;\n --ag-range-selection-background-color: rgba(0, 0, 0, 0.2);\n --ag-range-selection-background-color-2: var(--ag-range-selection-background-color);\n --ag-range-selection-background-color-3: var(--ag-range-selection-background-color);\n --ag-range-selection-background-color-4: var(--ag-range-selection-background-color);\n --ag-range-selection-highlight-color: var(--ag-range-selection-border-color);\n --ag-selected-tab-underline-color: var(--ag-range-selection-border-color);\n --ag-selected-tab-underline-width: 0;\n --ag-selected-tab-underline-transition-speed: 0s;\n --ag-range-selection-chart-category-background-color: rgba(0, 255, 132, 0.1);\n --ag-range-selection-chart-background-color: rgba(0, 88, 255, 0.1);\n --ag-header-cell-hover-background-color: transparent;\n --ag-header-cell-moving-background-color: var(--ag-background-color);\n --ag-value-change-value-highlight-background-color: rgba(22, 160, 133, 0.5);\n --ag-value-change-delta-up-color: #43a047;\n --ag-value-change-delta-down-color: #e53935;\n --ag-chip-background-color: transparent;\n --ag-borders: solid 1px;\n --ag-border-color: rgba(0, 0, 0, 0.25);\n --ag-borders-critical: var(--ag-borders);\n --ag-borders-secondary: var(--ag-borders);\n --ag-secondary-border-color: var(--ag-border-color);\n --ag-row-border-style: solid;\n --ag-row-border-color: var(--ag-secondary-border-color);\n --ag-row-border-width: 1px;\n --ag-cell-horizontal-border: solid transparent;\n --ag-borders-input: var(--ag-borders-secondary);\n --ag-input-border-color: var(--ag-secondary-border-color);\n --ag-borders-input-invalid: solid 2px;\n --ag-input-border-color-invalid: var(--ag-invalid-color);\n --ag-borders-side-button: var(--ag-borders);\n --ag-border-radius: 0px;\n --ag-row-border-color: var(--ag-secondary-border-color);\n --ag-header-column-separator-display: none;\n --ag-header-column-separator-height: 100%;\n --ag-header-column-separator-width: 1px;\n --ag-header-column-separator-color: var(--ag-secondary-border-color);\n --ag-header-column-resize-handle-display: none;\n --ag-header-column-resize-handle-height: 50%;\n --ag-header-column-resize-handle-width: 1px;\n --ag-header-column-resize-handle-color: var(--ag-secondary-border-color);\n --ag-invalid-color: red;\n --ag-input-disabled-border-color: var(--ag-input-border-color);\n --ag-input-disabled-background-color: transparent;\n --ag-checkbox-background-color: transparent;\n --ag-checkbox-border-radius: var(--ag-border-radius);\n --ag-checkbox-checked-color: var(--ag-foreground-color);\n --ag-checkbox-unchecked-color: var(--ag-foreground-color);\n --ag-checkbox-indeterminate-color: var(--ag-checkbox-unchecked-color);\n --ag-toggle-button-off-border-color: var(--ag-checkbox-unchecked-color);\n --ag-toggle-button-off-background-color: var(--ag-checkbox-unchecked-color);\n --ag-toggle-button-on-border-color: var(--ag-checkbox-checked-color);\n --ag-toggle-button-on-background-color: var(--ag-checkbox-checked-color);\n --ag-toggle-button-switch-background-color: var(--ag-background-color);\n --ag-toggle-button-switch-border-color: var(--ag-toggle-button-off-border-color);\n --ag-toggle-button-border-width: 1px;\n --ag-toggle-button-height: var(--ag-icon-size);\n --ag-toggle-button-width: calc(var(--ag-toggle-button-height) * 2);\n --ag-input-focus-box-shadow: none;\n --ag-input-focus-border-color: none;\n --ag-minichart-selected-chart-color: var(--ag-checkbox-checked-color);\n --ag-minichart-selected-page-color: var(--ag-checkbox-checked-color);\n --ag-grid-size: 4px;\n --ag-icon-size: 12px;\n --ag-widget-container-horizontal-padding: calc(var(--ag-grid-size) * 1.5);\n --ag-widget-container-vertical-padding: calc(var(--ag-grid-size) * 1.5);\n --ag-widget-horizontal-spacing: calc(var(--ag-grid-size) * 2);\n --ag-widget-vertical-spacing: var(--ag-grid-size);\n --ag-cell-horizontal-padding: calc(var(--ag-grid-size) * 3);\n --ag-cell-widget-spacing: var(--ag-cell-horizontal-padding);\n --ag-row-height: calc(var(--ag-grid-size) * 6 + 1px);\n --ag-header-height: var(--ag-row-height);\n --ag-list-item-height: calc(var(--ag-grid-size) * 5);\n --ag-column-select-indent-size: calc(var(--ag-grid-size) + var(--ag-icon-size));\n --ag-set-filter-indent-size: calc(var(--ag-grid-size) + var(--ag-icon-size));\n --ag-row-group-indent-size: calc(var(--ag-cell-widget-spacing) + var(--ag-icon-size));\n --ag-filter-tool-panel-group-indent: 16px;\n --ag-tab-min-width: 220px;\n --ag-menu-min-width: 181px;\n --ag-side-bar-panel-width: 200px;\n --ag-font-family: 'Helvetica Neue', sans-serif;\n --ag-font-size: 14px;\n --ag-card-radius: var(--ag-border-radius);\n --ag-card-shadow: none;\n --ag-popup-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);\n}\n\n.ag-root-wrapper,\n.ag-sticky-top,\n.ag-dnd-ghost {\n background-color: var(--ag-background-color);\n}\n\n[class*='ag-theme-'] {\n -webkit-font-smoothing: antialiased;\n font-family: var(--ag-font-family);\n font-size: var(--ag-font-size);\n line-height: normal;\n color: var(--ag-foreground-color);\n}\n\nag-grid,\nag-grid-angular,\nag-grid-ng2,\nag-grid-polymer,\nag-grid-aurelia {\n display: block;\n}\n\n.ag-hidden {\n display: none !important;\n}\n\n.ag-invisible {\n visibility: hidden !important;\n}\n\n.ag-no-transition {\n transition: none !important;\n}\n\n.ag-drag-handle {\n cursor: grab;\n}\n\n.ag-column-drop-wrapper {\n display: flex;\n}\n\n.ag-column-drop-horizontal-half-width {\n display: inline-block;\n width: 50% !important;\n}\n\n.ag-unselectable {\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.ag-selectable {\n -moz-user-select: text;\n -webkit-user-select: text;\n -ms-user-select: text;\n user-select: text;\n}\n\n.ag-tab {\n position: relative;\n}\n\n.ag-tab-guard {\n position: absolute;\n width: 0;\n height: 0;\n display: block;\n}\n\n.ag-select-agg-func-popup {\n position: absolute;\n}\n\n.ag-input-wrapper,\n.ag-picker-field-wrapper {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n line-height: normal;\n position: relative;\n}\n\n.ag-shake-left-to-right {\n animation-direction: alternate;\n animation-duration: 0.2s;\n animation-iteration-count: infinite;\n animation-name: ag-shake-left-to-right;\n}\n\n@keyframes ag-shake-left-to-right {\n from {\n padding-left: 6px;\n padding-right: 2px;\n }\n to {\n padding-left: 2px;\n padding-right: 6px;\n }\n}\n.ag-root-wrapper {\n cursor: default;\n position: relative;\n display: flex;\n flex-direction: column;\n /* overflow: hidden; */\n}\n.ag-root-wrapper.ag-layout-normal {\n height: 100%;\n}\n\n.ag-watermark {\n position: absolute;\n bottom: 20px;\n right: 25px;\n opacity: 0.5;\n transition: opacity 1s ease-out 3s;\n}\n.ag-watermark::before {\n content: '';\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDIzNSA0MCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzZXJpZj0iaHR0cDovL3d3dy5zZXJpZi5jb20vIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjI7Ij4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuNjM1NzIzLDAsMCwwLjYzNTcyMywtNDkyLjkyMSwtMzIzLjYwOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0xMDk5LjQsNTQ5LjRMMTA5OS40LDUzNi45TDEwNzguMSw1MzYuOUwxMDY1LjYsNTQ5LjRMMTA5OS40LDU0OS40WiIgc3R5bGU9ImZpbGw6cmdiKDI0LDI5LDMxKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgICAgICA8cGF0aCBkPSJNMTEyMy40LDUxOC40TDEwOTYuNyw1MTguNEwxMDg0LjEsNTMwLjlMMTEyMy40LDUzMC45TDExMjMuNCw1MTguNFoiIHN0eWxlPSJmaWxsOnJnYigyNCwyOSwzMSk7ZmlsbC1ydWxlOm5vbnplcm87Ii8+CiAgICAgICAgPHBhdGggZD0iTTEwNTMuMiw1NjEuOUwxMDU5LjYsNTU1LjVMMTA4MS4yLDU1NS41TDEwODEuMiw1NjhMMTA1My4yLDU2OEwxMDUzLjIsNTYxLjlaIiBzdHlsZT0iZmlsbDpyZ2IoMjQsMjksMzEpO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgICAgIDxwYXRoIGQ9Ik0xMDU3LjksNTQzLjNMMTA3MS43LDU0My4zTDEwODQuMyw1MzAuOEwxMDU3LjksNTMwLjhMMTA1Ny45LDU0My4zWiIgc3R5bGU9ImZpbGw6cmdiKDI0LDI5LDMxKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgICAgICA8cGF0aCBkPSJNMTA0Mi44LDU2MS45TDEwNTMuMiw1NjEuOUwxMDY1LjYsNTQ5LjRMMTA0Mi44LDU0OS40TDEwNDIuOCw1NjEuOVoiIHN0eWxlPSJmaWxsOnJnYigyNCwyOSwzMSk7ZmlsbC1ydWxlOm5vbnplcm87Ii8+CiAgICAgICAgPHBhdGggZD0iTTEwOTYuNyw1MTguNEwxMDkwLjMsNTI0LjhMMTA0OS41LDUyNC44TDEwNDkuNSw1MTIuM0wxMDk2LjcsNTEyLjNMMTA5Ni43LDUxOC40WiIgc3R5bGU9ImZpbGw6cmdiKDI0LDI5LDMxKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgICAgICA8cGF0aCBkPSJNODI4LjYsNTU5LjdMODA5LDU1OS43TDgwNS42LDU2OC4xTDc5Nyw1NjguMUw4MTUuMSw1MjUuN0w4MjIuNiw1MjUuN0w4NDAuNyw1NjguMUw4MzIsNTY4LjFMODI4LjYsNTU5LjdaTTgyNS45LDU1M0w4MTguOCw1MzUuN0w4MTEuNyw1NTNMODI1LjksNTUzWiIgc3R5bGU9ImZpbGw6cmdiKDI0LDI5LDMxKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgICAgICA8cGF0aCBkPSJNOTYwLjEsNTQxLjNDOTYyLjYsNTM3LjYgOTY4LjksNTM3LjIgOTcxLjUsNTM3LjJMOTcxLjUsNTQ0LjRDOTY4LjMsNTQ0LjQgOTY1LjEsNTQ0LjUgOTYzLjIsNTQ1LjlDOTYxLjMsNTQ3LjMgOTYwLjMsNTQ5LjIgOTYwLjMsNTUxLjVMOTYwLjMsNTY4LjFMOTUyLjUsNTY4LjFMOTUyLjUsNTM3LjJMOTYwLDUzNy4yTDk2MC4xLDU0MS4zWiIgc3R5bGU9ImZpbGw6cmdiKDI0LDI5LDMxKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgICAgICA8cmVjdCB4PSI5NzUuOCIgeT0iNTM3LjIiIHdpZHRoPSI3LjgiIGhlaWdodD0iMzAuOSIgc3R5bGU9ImZpbGw6cmdiKDI0LDI5LDMxKTsiLz4KICAgICAgICA8cmVjdCB4PSI5NzUuOCIgeT0iNTIzLjQiIHdpZHRoPSI3LjgiIGhlaWdodD0iOS4yIiBzdHlsZT0iZmlsbDpyZ2IoMjQsMjksMzEpOyIvPgogICAgICAgIDxwYXRoIGQ9Ik0xMDIyLjMsNTIzLjRMMTAyMi4zLDU2OC4xTDEwMTQuOCw1NjguMUwxMDE0LjYsNTYzLjRDMTAxMy41LDU2NSAxMDEyLjEsNTY2LjMgMTAxMC40LDU2Ny4zQzEwMDguNyw1NjguMiAxMDA2LjYsNTY4LjcgMTAwNC4yLDU2OC43QzEwMDIuMSw1NjguNyAxMDAwLjEsNTY4LjMgOTk4LjQsNTY3LjZDOTk2LjYsNTY2LjggOTk1LDU2NS44IDk5My43LDU2NC40Qzk5Mi40LDU2MyA5OTEuMyw1NjEuMyA5OTAuNiw1NTkuNEM5ODkuOCw1NTcuNSA5ODkuNSw1NTUuMyA5ODkuNSw1NTIuOUM5ODkuNSw1NTAuNSA5ODkuOSw1NDguMyA5OTAuNiw1NDYuM0M5OTEuNCw1NDQuMyA5OTIuNCw1NDIuNiA5OTMuNyw1NDEuMkM5OTUsNTM5LjggOTk2LjYsNTM4LjcgOTk4LjQsNTM3LjlDMTAwMC4yLDUzNy4xIDEwMDIuMSw1MzYuNyAxMDA0LjIsNTM2LjdDMTAwNi42LDUzNi43IDEwMDguNiw1MzcuMSAxMDEwLjMsNTM4QzEwMTIsNTM4LjkgMTAxMy40LDU0MC4xIDEwMTQuNSw1NDEuOEwxMDE0LjUsNTIzLjVMMTAyMi4zLDUyMy41TDEwMjIuMyw1MjMuNFpNMTAwNS45LDU2MkMxMDA4LjUsNTYyIDEwMTAuNSw1NjEuMSAxMDEyLjEsNTU5LjRDMTAxMy43LDU1Ny43IDEwMTQuNSw1NTUuNCAxMDE0LjUsNTUyLjZDMTAxNC41LDU0OS44IDEwMTMuNyw1NDcuNiAxMDEyLjEsNTQ1LjhDMTAxMC41LDU0NC4xIDEwMDguNSw1NDMuMiAxMDA1LjksNTQzLjJDMTAwMy40LDU0My4yIDEwMDEuMyw1NDQuMSA5OTkuOCw1NDUuOEM5OTguMiw1NDcuNSA5OTcuNCw1NDkuOCA5OTcuNCw1NTIuNkM5OTcuNCw1NTUuNCA5OTguMiw1NTcuNiA5OTkuOCw1NTkuM0MxMDAxLjQsNTYxLjEgMTAwMy40LDU2MiAxMDA1LjksNTYyIiBzdHlsZT0iZmlsbDpyZ2IoMjQsMjksMzEpO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgICAgIDxwYXRoIGQ9Ik04ODUuOCw1NDQuMkw4NjYuNSw1NDQuMkw4NjYuNSw1NTAuOUw4NzcuNSw1NTAuOUM4NzcuMiw1NTQuMyA4NzUuOSw1NTYuOSA4NzMuNyw1NTlDODcxLjUsNTYxIDg2OC43LDU2MiA4NjUuMSw1NjJDODYzLjEsNTYyIDg2MS4yLDU2MS42IDg1OS42LDU2MC45Qzg1Ny45LDU2MC4yIDg1Ni41LDU1OS4yIDg1NS4zLDU1Ny44Qzg1NC4xLDU1Ni41IDg1My4yLDU1NC45IDg1Mi41LDU1M0M4NTEuOCw1NTEuMSA4NTEuNSw1NDkuMSA4NTEuNSw1NDYuOEM4NTEuNSw1NDQuNSA4NTEuOCw1NDIuNSA4NTIuNSw1NDAuNkM4NTMuMSw1MzguNyA4NTQuMSw1MzcuMiA4NTUuMyw1MzUuOEM4NTYuNSw1MzQuNSA4NTcuOSw1MzMuNSA4NTkuNiw1MzIuN0M4NjEuMyw1MzIgODYzLjEsNTMxLjYgODY1LjIsNTMxLjZDODY5LjQsNTMxLjYgODcyLjYsNTMyLjYgODc0LjgsNTM0LjZMODgwLDUyOS40Qzg3Ni4xLDUyNi40IDg3MS4xLDUyNC44IDg2NS4yLDUyNC44Qzg2MS45LDUyNC44IDg1OC45LDUyNS4zIDg1Ni4yLDUyNi40Qzg1My41LDUyNy41IDg1MS4yLDUyOC45IDg0OS4zLDUzMC44Qzg0Ny40LDUzMi43IDg0NS45LDUzNSA4NDQuOSw1MzcuN0M4NDMuOSw1NDAuNCA4NDMuNCw1NDMuNCA4NDMuNCw1NDYuNkM4NDMuNCw1NDkuOCA4NDMuOSw1NTIuOCA4NDUsNTU1LjVDODQ2LjEsNTU4LjIgODQ3LjUsNTYwLjUgODQ5LjQsNTYyLjRDODUxLjMsNTY0LjMgODUzLjYsNTY1LjggODU2LjMsNTY2LjhDODU5LDU2Ny45IDg2Miw1NjguNCA4NjUuMiw1NjguNEM4NjguNCw1NjguNCA4NzEuMyw1NjcuOSA4NzMuOSw1NjYuOEM4NzYuNSw1NjUuNyA4NzguNyw1NjQuMyA4ODAuNSw1NjIuNEM4ODIuMyw1NjAuNSA4ODMuNyw1NTguMiA4ODQuNyw1NTUuNUM4ODUuNyw1NTIuOCA4ODYuMiw1NDkuOCA4ODYuMiw1NDYuNkw4ODYuMiw1NDUuM0M4ODUuOSw1NDUuMSA4ODUuOCw1NDQuNiA4ODUuOCw1NDQuMiIgc3R5bGU9ImZpbGw6cmdiKDI0LDI5LDMxKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgICAgICA8cGF0aCBkPSJNOTQ2LjgsNTQ0LjJMOTI3LjUsNTQ0LjJMOTI3LjUsNTUwLjlMOTM4LjUsNTUwLjlDOTM4LjIsNTU0LjMgOTM2LjksNTU2LjkgOTM0LjcsNTU5QzkzMi41LDU2MSA5MjkuNyw1NjIgOTI2LjEsNTYyQzkyNC4xLDU2MiA5MjIuMiw1NjEuNiA5MjAuNiw1NjAuOUM5MTguOSw1NjAuMiA5MTcuNSw1NTkuMiA5MTYuMyw1NTcuOEM5MTUuMSw1NTYuNSA5MTQuMiw1NTQuOSA5MTMuNSw1NTNDOTEyLjgsNTUxLjEgOTEyLjUsNTQ5LjEgOTEyLjUsNTQ2LjhDOTEyLjUsNTQ0LjUgOTEyLjgsNTQyLjUgOTEzLjUsNTQwLjZDOTE0LjEsNTM4LjcgOTE1LjEsNTM3LjIgOTE2LjMsNTM1LjhDOTE3LjUsNTM0LjUgOTE4LjksNTMzLjUgOTIwLjYsNTMyLjdDOTIyLjMsNTMyIDkyNC4xLDUzMS42IDkyNi4yLDUzMS42QzkzMC40LDUzMS42IDkzMy42LDUzMi42IDkzNS44LDUzNC42TDk0MSw1MjkuNEM5MzcuMSw1MjYuNCA5MzIuMSw1MjQuOCA5MjYuMiw1MjQuOEM5MjIuOSw1MjQuOCA5MTkuOSw1MjUuMyA5MTcuMiw1MjYuNEM5MTQuNSw1MjcuNSA5MTIuMiw1MjguOSA5MTAuMyw1MzAuOEM5MDguNCw1MzIuNyA5MDYuOSw1MzUgOTA1LjksNTM3LjdDOTA0LjksNTQwLjQgOTA0LjQsNTQzLjQgOTA0LjQsNTQ2LjZDOTA0LjQsNTQ5LjggOTA0LjksNTUyLjggOTA2LDU1NS41QzkwNy4xLDU1OC4yIDkwOC41LDU2MC41IDkxMC40LDU2Mi40QzkxMi4zLDU2NC4zIDkxNC42LDU2NS44IDkxNy4zLDU2Ni44QzkyMCw1NjcuOSA5MjMsNTY4LjQgOTI2LjIsNTY4LjRDOTI5LjQsNTY4LjQgOTMyLjMsNTY3LjkgOTM0LjksNTY2LjhDOTM3LjUsNTY1LjcgOTM5LjcsNTY0LjMgOTQxLjUsNTYyLjRDOTQzLjMsNTYwLjUgOTQ0LjcsNTU4LjIgOTQ1LjcsNTU1LjVDOTQ2LjcsNTUyLjggOTQ3LjIsNTQ5LjggOTQ3LjIsNTQ2LjZMOTQ3LjIsNTQ1LjNDOTQ2LjksNTQ1LjEgOTQ2LjgsNTQ0LjYgOTQ2LjgsNTQ0LjIiIHN0eWxlPSJmaWxsOnJnYigyNCwyOSwzMSk7ZmlsbC1ydWxlOm5vbnplcm87Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);\n background-repeat: no-repeat;\n background-size: 170px 40px;\n display: block;\n height: 40px;\n width: 170px;\n opacity: 0.5;\n}\n\n.ag-watermark-text {\n opacity: 0.5;\n font-weight: bold;\n font-family: Impact, sans-serif;\n font-size: 19px;\n padding-left: 0.7rem;\n}\n\n.ag-root-wrapper-body {\n display: flex;\n flex-direction: row;\n}\n.ag-root-wrapper-body.ag-layout-normal {\n flex: 1 1 auto;\n height: 0;\n min-height: 0;\n}\n\n.ag-root {\n position: relative;\n display: flex;\n flex-direction: column;\n}\n.ag-root.ag-layout-normal,\n.ag-root.ag-layout-auto-height {\n overflow: hidden;\n flex: 1 1 auto;\n width: 0;\n}\n.ag-root.ag-layout-normal {\n height: 100%;\n}\n\n.ag-header-viewport,\n.ag-floating-top-viewport,\n.ag-body-viewport,\n.ag-center-cols-viewport,\n.ag-floating-bottom-viewport,\n.ag-body-horizontal-scroll-viewport,\n.ag-body-vertical-scroll-viewport,\n.ag-virtual-list-viewport,\n.ag-sticky-top-viewport {\n position: relative;\n height: 100%;\n min-width: 0px;\n overflow: hidden;\n flex: 1 1 auto;\n}\n\n.ag-body-viewport {\n display: flex;\n}\n.ag-body-viewport.ag-layout-normal {\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.ag-center-cols-viewport {\n width: 100%;\n overflow-x: auto;\n}\n\n.ag-body-horizontal-scroll-viewport {\n overflow-x: scroll;\n}\n\n.ag-body-vertical-scroll-viewport {\n overflow-y: scroll;\n}\n\n.ag-virtual-list-viewport {\n overflow: auto;\n width: 100%;\n}\n\n.ag-header-container,\n.ag-floating-top-container,\n.ag-body-container,\n.ag-pinned-right-cols-container,\n.ag-center-cols-container,\n.ag-pinned-left-cols-container,\n.ag-floating-bottom-container,\n.ag-body-horizontal-scroll-container,\n.ag-body-vertical-scroll-container,\n.ag-full-width-container,\n.ag-floating-bottom-full-width-container,\n.ag-virtual-list-container,\n.ag-sticky-top-container {\n position: relative;\n}\n\n.ag-header-container,\n.ag-floating-top-container,\n.ag-floating-bottom-container,\n.ag-sticky-top-container {\n height: 100%;\n white-space: nowrap;\n}\n\n.ag-center-cols-container {\n display: block;\n}\n\n.ag-pinned-right-cols-container {\n display: block;\n}\n\n.ag-body-horizontal-scroll-container {\n height: 100%;\n}\n\n.ag-body-vertical-scroll-container {\n width: 100%;\n}\n\n.ag-full-width-container,\n.ag-floating-top-full-width-container,\n.ag-floating-bottom-full-width-container,\n.ag-sticky-top-full-width-container {\n position: absolute;\n top: 0px;\n pointer-events: none;\n}\n.ag-ltr .ag-full-width-container,\n.ag-ltr .ag-floating-top-full-width-container,\n.ag-ltr .ag-floating-bottom-full-width-container,\n.ag-ltr .ag-sticky-top-full-width-container {\n left: 0;\n}\n.ag-rtl .ag-full-width-container,\n.ag-rtl .ag-floating-top-full-width-container,\n.ag-rtl .ag-floating-bottom-full-width-container,\n.ag-rtl .ag-sticky-top-full-width-container {\n right: 0;\n}\n\n.ag-floating-bottom-full-width-container,\n.ag-floating-top-full-width-container {\n display: inline-block;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n\n.ag-virtual-list-container {\n overflow: hidden;\n}\n\n.ag-center-cols-clipper {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n min-height: 100%;\n transform: translate3d(0, 0, 0);\n}\n\n.ag-body {\n position: relative;\n display: flex;\n flex: 1 1 auto;\n flex-direction: row !important;\n min-height: 0;\n}\n\n.ag-body-clipper {\n overflow: hidden;\n min-width: 0px;\n flex: 1 1 auto;\n height: 100%;\n transform: translate3d(0, 0, 0);\n}\n\n.ag-body-horizontal-scroll,\n.ag-body-vertical-scroll {\n min-height: 0;\n min-width: 0;\n display: flex;\n position: relative;\n}\n.ag-body-horizontal-scroll.ag-scrollbar-invisible,\n.ag-body-vertical-scroll.ag-scrollbar-invisible {\n position: absolute;\n bottom: 0;\n}\n.ag-body-horizontal-scroll.ag-scrollbar-invisible.ag-apple-scrollbar,\n.ag-body-vertical-scroll.ag-scrollbar-invisible.ag-apple-scrollbar {\n opacity: 0;\n transition: opacity 400ms;\n visibility: hidden;\n}\n.ag-body-horizontal-scroll.ag-scrollbar-invisible.ag-apple-scrollbar.ag-scrollbar-scrolling,\n.ag-body-horizontal-scroll.ag-scrollbar-invisible.ag-apple-scrollbar.ag-scrollbar-active,\n.ag-body-vertical-scroll.ag-scrollbar-invisible.ag-apple-scrollbar.ag-scrollbar-scrolling,\n.ag-body-vertical-scroll.ag-scrollbar-invisible.ag-apple-scrollbar.ag-scrollbar-active {\n visibility: visible;\n opacity: 1;\n}\n\n.ag-body-horizontal-scroll {\n width: 100%;\n}\n.ag-body-horizontal-scroll.ag-scrollbar-invisible {\n left: 0;\n right: 0;\n}\n\n.ag-body-vertical-scroll {\n height: 100%;\n}\n.ag-body-vertical-scroll.ag-scrollbar-invisible {\n top: 0;\n z-index: 10;\n}\n.ag-ltr .ag-body-vertical-scroll.ag-scrollbar-invisible {\n right: 0;\n}\n.ag-rtl .ag-body-vertical-scroll.ag-scrollbar-invisible {\n left: 0;\n}\n\n.ag-force-vertical-scroll {\n overflow-y: scroll !important;\n}\n\n.ag-horizontal-left-spacer,\n.ag-horizontal-right-spacer {\n height: 100%;\n min-width: 0;\n overflow-x: scroll;\n}\n.ag-horizontal-left-spacer.ag-scroller-corner,\n.ag-horizontal-right-spacer.ag-scroller-corner {\n overflow-x: hidden;\n}\n\n.ag-header,\n.ag-pinned-left-header,\n.ag-pinned-right-header {\n display: inline-block;\n overflow: hidden;\n position: relative;\n}\n\n.ag-header-cell-sortable .ag-header-cell-label {\n cursor: pointer;\n}\n\n.ag-header {\n display: flex;\n width: 100%;\n white-space: nowrap;\n background-color: var(--primary-color);\n}\n\n.ag-pinned-left-header {\n height: 100%;\n}\n\n.ag-pinned-right-header {\n height: 100%;\n}\n\n.ag-header-row {\n position: absolute;\n}\n\n.ag-header-row:not(.ag-header-row-column-group) {\n overflow: hidden;\n}\n\n.ag-header.ag-header-allow-overflow .ag-header-row {\n overflow: visible;\n}\n\n.ag-header-cell {\n display: inline-flex;\n align-items: center;\n position: absolute;\n height: 100%;\n overflow: hidden;\n}\n\n.ag-header-cell.ag-header-active .ag-header-cell-menu-button {\n opacity: 1;\n}\n\n.ag-header-cell-menu-button:not(.ag-header-menu-always-show) {\n transition: opacity 0.2s;\n opacity: 0;\n}\n\n.ag-header-group-cell-label,\n.ag-header-cell-label {\n display: flex;\n flex: 1 1 auto;\n overflow: hidden;\n align-items: center;\n text-overflow: ellipsis;\n align-self: stretch;\n}\n\n.ag-header-group-cell-label.ag-sticky-label {\n position: sticky;\n flex: none;\n max-width: 100%;\n}\n\n.ag-header-cell-text {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.ag-header-cell:not(.ag-header-cell-auto-height) .ag-header-cell-comp-wrapper {\n height: 100%;\n display: flex;\n align-items: center;\n}\n\n.ag-header-cell-comp-wrapper {\n width: 100%;\n overflow: hidden;\n}\n\n.ag-header-cell-wrap-text .ag-header-cell-comp-wrapper {\n white-space: normal;\n}\n\n.ag-right-aligned-header .ag-header-cell-label {\n flex-direction: row-reverse;\n}\n\n.ag-header-group-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ag-header-cell-resize {\n position: absolute;\n z-index: 2;\n height: 100%;\n width: 8px;\n top: 0;\n cursor: ew-resize;\n}\n.ag-ltr .ag-header-cell-resize {\n right: -4px;\n}\n.ag-rtl .ag-header-cell-resize {\n left: -4px;\n}\n\n.ag-pinned-left-header .ag-header-cell-resize {\n right: -4px;\n}\n\n.ag-pinned-right-header .ag-header-cell-resize {\n left: -4px;\n}\n\n.ag-header-select-all {\n display: flex;\n}\n\n.ag-column-moving .ag-cell {\n transition: left 0.2s;\n}\n.ag-column-moving .ag-header-cell {\n transition: left 0.2s;\n}\n.ag-column-moving .ag-header-group-cell {\n transition: left 0.2s, width 0.2s;\n}\n\n.ag-column-panel {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n flex: 1 1 auto;\n}\n\n.ag-column-select {\n position: relative;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n flex: 3 1 0px;\n}\n\n.ag-column-select-header {\n position: relative;\n display: flex;\n flex: none;\n}\n\n.ag-column-select-header-icon {\n position: relative;\n}\n\n.ag-column-select-header-filter-wrapper {\n flex: 1 1 auto;\n}\n\n.ag-column-select-header-filter {\n width: 100%;\n}\n\n.ag-column-select-list {\n flex: 1 1 0px;\n overflow: hidden;\n}\n\n.ag-column-drop {\n position: relative;\n display: inline-flex;\n align-items: center;\n overflow: auto;\n width: 100%;\n}\n\n.ag-column-drop-list {\n display: flex;\n align-items: center;\n}\n\n.ag-column-drop-cell {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.ag-column-drop-cell-text {\n overflow: hidden;\n flex: 1 1 auto;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ag-column-drop-vertical {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n align-items: stretch;\n flex: 1 1 0px;\n}\n\n.ag-column-drop-vertical-title-bar {\n display: flex;\n align-items: center;\n flex: none;\n}\n\n.ag-column-drop-vertical-list {\n position: relative;\n align-items: stretch;\n flex-grow: 1;\n flex-direction: column;\n overflow-x: auto;\n}\n.ag-column-drop-vertical-list > * {\n flex: none;\n}\n\n.ag-column-drop-empty .ag-column-drop-vertical-list {\n overflow: hidden;\n}\n\n.ag-column-drop-vertical-empty-message {\n display: block;\n}\n\n.ag-column-drop.ag-column-drop-horizontal {\n white-space: nowrap;\n overflow: hidden;\n}\n\n.ag-column-drop-cell-button {\n cursor: pointer;\n}\n\n.ag-filter-toolpanel {\n flex: 1 1 0px;\n min-width: 0;\n}\n\n.ag-filter-toolpanel-header {\n position: relative;\n}\n\n.ag-filter-toolpanel-header,\n.ag-filter-toolpanel-search {\n display: flex;\n align-items: center;\n}\n.ag-filter-toolpanel-header > *,\n.ag-filter-toolpanel-search > * {\n display: flex;\n align-items: center;\n}\n\n.ag-filter-apply-panel {\n display: flex;\n justify-content: flex-end;\n overflow: hidden;\n}\n\n.ag-row-animation .ag-row {\n transition: transform 0.4s, top 0.4s, background-color 0.1s, opacity 0.2s;\n}\n\n.ag-row-animation .ag-row.ag-after-created {\n transition: transform 0.4s, top 0.4s, height 0.4s, background-color 0.1s, opacity 0.2s;\n}\n\n.ag-row-no-animation .ag-row {\n transition: background-color 0.1s;\n}\n\n.ag-row {\n white-space: nowrap;\n width: 100%;\n}\n\n.ag-row-loading {\n display: flex;\n align-items: center;\n}\n\n.ag-row-position-absolute {\n position: absolute;\n}\n\n.ag-row-position-relative {\n position: relative;\n}\n\n.ag-full-width-row {\n overflow: hidden;\n pointer-events: all;\n}\n\n.ag-row-inline-editing {\n z-index: 1;\n}\n\n.ag-row-dragging {\n z-index: 2;\n}\n\n.ag-stub-cell {\n display: flex;\n align-items: center;\n}\n\n.ag-cell {\n display: inline-block;\n position: absolute;\n white-space: nowrap;\n height: 100%;\n}\n\n.ag-cell-value {\n flex: 1 1 auto;\n min-height: 36px;\n}\n\n.ag-cell-value,\n.ag-group-value {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.ag-cell-wrap-text {\n white-space: normal;\n word-break: break-all;\n}\n\n.ag-cell-wrapper {\n display: flex;\n align-items: center;\n}\n.ag-cell-wrapper.ag-row-group {\n align-items: flex-start;\n}\n\n.ag-sparkline-wrapper {\n position: absolute;\n height: 100%;\n width: 100%;\n left: 0;\n top: 0;\n}\n\n.ag-full-width-row .ag-cell-wrapper.ag-row-group {\n height: 100%;\n align-items: center;\n}\n\n.ag-cell-inline-editing {\n z-index: 1;\n}\n.ag-cell-inline-editing .ag-cell-wrapper,\n.ag-cell-inline-editing .ag-cell-edit-wrapper,\n.ag-cell-inline-editing .ag-cell-editor,\n.ag-cell-inline-editing .ag-cell-editor .ag-wrapper,\n.ag-cell-inline-editing .ag-cell-editor input {\n height: 100%;\n width: 100%;\n line-height: normal;\n}\n\n.ag-cell .ag-icon {\n display: inline-block;\n vertical-align: middle;\n}\n\n.ag-set-filter-item {\n display: flex;\n align-items: center;\n height: 100%;\n}\n\n.ag-set-filter-item-checkbox {\n display: flex;\n overflow: hidden;\n}\n\n.ag-set-filter-group-icons {\n display: block;\n}\n.ag-set-filter-group-icons > * {\n cursor: pointer;\n}\n\n.ag-filter-body-wrapper {\n display: flex;\n flex-direction: column;\n}\n\n.ag-filter-filter {\n flex: 1 1 0px;\n}\n\n.ag-filter-condition {\n display: flex;\n justify-content: center;\n}\n\n.ag-advanced-filter-header {\n position: relative;\n display: flex;\n align-items: center;\n padding-left: var(--ag-cell-horizontal-padding);\n padding-right: var(--ag-cell-horizontal-padding);\n}\n\n.ag-advanced-filter {\n display: flex;\n align-items: center;\n width: 100%;\n}\n\n.ag-advanced-filter-apply-button {\n line-height: normal;\n}\n.ag-ltr .ag-advanced-filter-apply-button {\n margin-left: calc(var(--ag-grid-size) * 2);\n}\n.ag-rtl .ag-advanced-filter-apply-button {\n margin-right: calc(var(--ag-grid-size) * 2);\n}\n\n.ag-floating-filter-body {\n position: relative;\n display: flex;\n flex: 1 1 auto;\n height: 100%;\n}\n\n.ag-floating-filter-full-body {\n display: flex;\n flex: 1 1 auto;\n height: 100%;\n width: 100%;\n align-items: center;\n overflow: hidden;\n}\n\n.ag-floating-filter-full-body > div {\n flex: 1 1 auto;\n}\n\n.ag-floating-filter-input {\n align-items: center;\n display: flex;\n width: 100%;\n}\n.ag-floating-filter-input > * {\n flex: 1 1 auto;\n}\n\n.ag-floating-filter-button {\n display: flex;\n flex: none;\n}\n\n.ag-set-floating-filter-input input[disabled] {\n pointer-events: none;\n}\n\n.ag-dnd-ghost {\n position: absolute;\n display: inline-flex;\n align-items: center;\n cursor: move;\n white-space: nowrap;\n z-index: 9999;\n}\n\n.ag-overlay {\n height: 100%;\n left: 0;\n pointer-events: none;\n position: absolute;\n top: 0;\n width: 100%;\n}\n\n.ag-overlay-panel {\n display: flex;\n height: 100%;\n width: 100%;\n}\n\n.ag-overlay-wrapper {\n display: flex;\n flex: none;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n\n.ag-overlay-loading-wrapper {\n pointer-events: all;\n}\n\n.ag-popup-child {\n z-index: 5;\n top: 0;\n}\n\n.ag-popup-editor {\n position: absolute;\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.ag-large-text-input {\n display: block;\n}\n\n.ag-virtual-list-item {\n position: absolute;\n width: 100%;\n}\n\n.ag-floating-top {\n overflow: hidden;\n white-space: nowrap;\n width: 100%;\n position: relative;\n display: flex;\n}\n\n.ag-pinned-left-floating-top {\n display: inline-block;\n overflow: hidden;\n position: relative;\n min-width: 0px;\n}\n\n.ag-pinned-right-floating-top {\n display: inline-block;\n overflow: hidden;\n position: relative;\n min-width: 0px;\n}\n\n.ag-floating-bottom {\n overflow: hidden;\n white-space: nowrap;\n width: 100%;\n position: relative;\n display: flex;\n}\n\n.ag-pinned-left-floating-bottom {\n display: inline-block;\n overflow: hidden;\n position: relative;\n min-width: 0px;\n}\n\n.ag-pinned-right-floating-bottom {\n display: inline-block;\n overflow: hidden;\n position: relative;\n min-width: 0px;\n}\n\n.ag-sticky-top {\n position: absolute;\n display: flex;\n width: 100%;\n}\n\n.ag-pinned-left-sticky-top,\n.ag-pinned-right-sticky-top {\n position: relative;\n height: 100%;\n overflow: hidden;\n}\n\n.ag-sticky-top-full-width-container {\n overflow: hidden;\n width: 100%;\n height: 100%;\n}\n\n.ag-dialog,\n.ag-panel {\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n}\n\n.ag-panel-title-bar {\n display: flex;\n flex: none;\n align-items: center;\n cursor: default;\n}\n\n.ag-panel-title-bar-title {\n flex: 1 1 auto;\n}\n\n.ag-panel-title-bar-buttons {\n display: flex;\n}\n\n.ag-panel-title-bar-button {\n cursor: pointer;\n}\n\n.ag-panel-content-wrapper {\n display: flex;\n flex: 1 1 auto;\n position: relative;\n overflow: hidden;\n}\n\n.ag-dialog {\n position: absolute;\n}\n\n.ag-resizer {\n position: absolute;\n pointer-events: none;\n z-index: 1;\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.ag-resizer.ag-resizer-topLeft {\n top: 0;\n left: 0;\n height: 5px;\n width: 5px;\n cursor: nwse-resize;\n}\n.ag-resizer.ag-resizer-top {\n top: 0;\n left: 5px;\n right: 5px;\n height: 5px;\n cursor: ns-resize;\n}\n.ag-resizer.ag-resizer-topRight {\n top: 0;\n right: 0;\n height: 5px;\n width: 5px;\n cursor: nesw-resize;\n}\n.ag-resizer.ag-resizer-right {\n top: 5px;\n right: 0;\n bottom: 5px;\n width: 5px;\n cursor: ew-resize;\n}\n.ag-resizer.ag-resizer-bottomRight {\n bottom: 0;\n right: 0;\n height: 5px;\n width: 5px;\n cursor: nwse-resize;\n}\n.ag-resizer.ag-resizer-bottom {\n bottom: 0;\n left: 5px;\n right: 5px;\n height: 5px;\n cursor: ns-resize;\n}\n.ag-resizer.ag-resizer-bottomLeft {\n bottom: 0;\n left: 0;\n height: 5px;\n width: 5px;\n cursor: nesw-resize;\n}\n.ag-resizer.ag-resizer-left {\n left: 0;\n top: 5px;\n bottom: 5px;\n width: 5px;\n cursor: ew-resize;\n}\n\n.ag-tooltip {\n position: absolute;\n z-index: 99999;\n}\n\n.ag-tooltip-custom {\n position: absolute;\n z-index: 99999;\n}\n\n.ag-tooltip:not(.ag-tooltip-interactive),\n.ag-tooltip-custom:not(.ag-tooltip-interactive) {\n pointer-events: none;\n}\n\n.ag-value-slide-out {\n margin-right: 5px;\n opacity: 1;\n transition: opacity 3s, margin-right 3s;\n transition-timing-function: linear;\n}\n\n.ag-value-slide-out-end {\n margin-right: 10px;\n opacity: 0;\n}\n\n.ag-opacity-zero {\n opacity: 0 !important;\n}\n\n.ag-menu {\n max-height: 100%;\n overflow-y: auto;\n position: absolute;\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.ag-menu-column-select-wrapper {\n height: 265px;\n overflow: auto;\n}\n.ag-menu-column-select-wrapper .ag-column-select {\n height: 100%;\n}\n\n.ag-menu-list {\n display: table;\n width: 100%;\n}\n\n.ag-menu-option,\n.ag-menu-separator {\n display: table-row;\n}\n\n.ag-menu-option-part,\n.ag-menu-separator-part {\n display: table-cell;\n vertical-align: middle;\n}\n\n.ag-menu-option-text {\n white-space: nowrap;\n}\n\n.ag-compact-menu-option {\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n}\n\n.ag-compact-menu-option-text {\n white-space: nowrap;\n flex: 1 1 auto;\n}\n\n.ag-rich-select {\n cursor: default;\n outline: none;\n height: 100%;\n}\n\n.ag-rich-select-value {\n display: flex;\n align-items: center;\n height: 100%;\n}\n.ag-rich-select-value .ag-picker-field-display {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.ag-rich-select-list {\n position: relative;\n}\n\n.ag-rich-select-row {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n height: 100%;\n}\n\n.ag-autocomplete {\n align-items: center;\n display: flex;\n}\n.ag-autocomplete > * {\n flex: 1 1 auto;\n}\n\n.ag-autocomplete-list-popup {\n position: absolute;\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.ag-autocomplete-list {\n position: relative;\n}\n\n.ag-autocomplete-virtual-list-item {\n display: flex;\n}\n\n.ag-autocomplete-row {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n overflow: hidden;\n}\n\n.ag-autocomplete-row-label {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.ag-paging-panel {\n align-items: center;\n display: flex;\n justify-content: flex-end;\n}\n\n.ag-paging-page-summary-panel {\n display: flex;\n align-items: center;\n}\n\n.ag-paging-button {\n position: relative;\n}\n\n.ag-disabled .ag-paging-page-summary-panel {\n pointer-events: none;\n}\n\n.ag-tool-panel-wrapper {\n display: flex;\n overflow-y: auto;\n overflow-x: hidden;\n cursor: default;\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.ag-column-select-column,\n.ag-column-select-column-group,\n.ag-select-agg-func-item {\n position: relative;\n align-items: center;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n height: 100%;\n}\n.ag-column-select-column > *,\n.ag-column-select-column-group > *,\n.ag-select-agg-func-item > * {\n flex: none;\n}\n\n.ag-select-agg-func-item,\n.ag-column-select-column-label {\n flex: 1 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ag-column-select-checkbox {\n display: flex;\n}\n\n.ag-tool-panel-horizontal-resize {\n cursor: ew-resize;\n height: 100%;\n position: absolute;\n top: 0;\n width: 5px;\n z-index: 1;\n}\n\n.ag-ltr .ag-side-bar-left .ag-tool-panel-horizontal-resize {\n right: -3px;\n}\n.ag-rtl .ag-side-bar-left .ag-tool-panel-horizontal-resize {\n left: -3px;\n}\n\n.ag-ltr .ag-side-bar-right .ag-tool-panel-horizontal-resize {\n left: -3px;\n}\n.ag-rtl .ag-side-bar-right .ag-tool-panel-horizontal-resize {\n right: -3px;\n}\n\n.ag-details-row {\n width: 100%;\n}\n\n.ag-details-row-fixed-height {\n height: 100%;\n}\n\n.ag-details-grid {\n width: 100%;\n}\n\n.ag-details-grid-fixed-height {\n height: 100%;\n}\n\n.ag-header-group-cell {\n display: flex;\n align-items: center;\n height: 100%;\n position: absolute;\n}\n\n.ag-header-group-cell-no-group.ag-header-span-height .ag-header-cell-resize {\n display: none;\n}\n\n.ag-cell-label-container {\n display: flex;\n justify-content: space-between;\n flex-direction: row-reverse;\n align-items: center;\n height: 100%;\n width: 100%;\n overflow: hidden;\n padding: 5px 0px;\n}\n\n.ag-right-aligned-header .ag-cell-label-container {\n flex-direction: row;\n}\n.ag-right-aligned-header .ag-header-cell-text {\n text-align: end;\n}\n\n.ag-side-bar {\n display: flex;\n flex-direction: row-reverse;\n}\n\n.ag-side-bar-left {\n order: -1;\n flex-direction: row;\n}\n\n.ag-side-button-button {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex-wrap: nowrap;\n white-space: nowrap;\n outline: none;\n cursor: pointer;\n}\n\n.ag-side-button-label {\n writing-mode: vertical-lr;\n}\n\n.ag-status-bar {\n display: flex;\n justify-content: space-between;\n overflow: hidden;\n}\n\n.ag-status-panel {\n display: inline-flex;\n}\n\n.ag-status-name-value {\n white-space: nowrap;\n}\n\n.ag-status-bar-left {\n display: inline-flex;\n}\n\n.ag-status-bar-center {\n display: inline-flex;\n}\n\n.ag-status-bar-right {\n display: inline-flex;\n}\n\n.ag-icon {\n display: block;\n speak: none;\n}\n\n.ag-group {\n position: relative;\n width: 100%;\n}\n\n.ag-group-title-bar {\n display: flex;\n align-items: center;\n}\n\n.ag-group-title {\n display: block;\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.ag-group-title-bar .ag-group-title {\n cursor: default;\n}\n\n.ag-group-toolbar {\n display: flex;\n align-items: center;\n}\n\n.ag-group-container {\n display: flex;\n}\n\n.ag-disabled .ag-group-container {\n pointer-events: none;\n}\n\n.ag-group-container-horizontal {\n flex-direction: row;\n flex-wrap: wrap;\n}\n\n.ag-group-container-vertical {\n flex-direction: column;\n}\n\n.ag-column-group-icons {\n display: block;\n}\n.ag-column-group-icons > * {\n cursor: pointer;\n}\n\n.ag-group-item-alignment-stretch .ag-group-item {\n align-items: stretch;\n}\n\n.ag-group-item-alignment-start .ag-group-item {\n align-items: flex-start;\n}\n\n.ag-group-item-alignment-end .ag-group-item {\n align-items: flex-end;\n}\n\n.ag-toggle-button-icon {\n transition: right 0.3s;\n position: absolute;\n top: -1px;\n}\n\n.ag-input-field,\n.ag-select {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.ag-input-field-input {\n flex: 1 1 auto;\n}\n\n.ag-floating-filter-input .ag-input-field-input[type='date'] {\n width: 1px;\n}\n\n.ag-range-field {\n display: flex;\n align-items: center;\n}\n\n.ag-angle-select {\n display: flex;\n align-items: center;\n}\n\n.ag-angle-select-wrapper {\n display: flex;\n}\n\n.ag-angle-select-parent-circle {\n display: block;\n position: relative;\n}\n\n.ag-angle-select-child-circle {\n position: absolute;\n}\n\n.ag-slider-wrapper {\n display: flex;\n}\n.ag-slider-wrapper .ag-input-field {\n flex: 1 1 auto;\n}\n\n.ag-picker-field-display {\n flex: 1 1 auto;\n}\n\n.ag-picker-field {\n display: flex;\n align-items: center;\n}\n\n.ag-picker-field-icon {\n display: flex;\n border: 0;\n padding: 0;\n margin: 0;\n cursor: pointer;\n}\n\n.ag-picker-field-wrapper {\n overflow: hidden;\n}\n\n.ag-label-align-right .ag-label {\n order: 1;\n}\n.ag-label-align-right > * {\n flex: none;\n}\n\n.ag-label-align-top {\n flex-direction: column;\n align-items: flex-start;\n}\n.ag-label-align-top > * {\n align-self: stretch;\n}\n\n.ag-label-ellipsis {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n}\n\n.ag-color-panel {\n width: 100%;\n display: flex;\n flex-direction: column;\n text-align: center;\n}\n\n.ag-spectrum-color {\n flex: 1 1 auto;\n position: relative;\n overflow: hidden;\n cursor: default;\n}\n\n.ag-spectrum-fill {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n\n.ag-spectrum-val {\n cursor: pointer;\n}\n\n.ag-spectrum-dragger {\n position: absolute;\n pointer-events: none;\n cursor: pointer;\n}\n\n.ag-spectrum-hue {\n cursor: default;\n background: linear-gradient(to left, #ff0000 3%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);\n}\n\n.ag-spectrum-alpha {\n cursor: default;\n}\n\n.ag-spectrum-hue-background {\n width: 100%;\n height: 100%;\n}\n\n.ag-spectrum-alpha-background {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0), rgb(0, 0, 0));\n width: 100%;\n height: 100%;\n}\n\n.ag-spectrum-tool {\n cursor: pointer;\n}\n\n.ag-spectrum-slider {\n position: absolute;\n pointer-events: none;\n}\n\n.ag-recent-colors {\n display: flex;\n}\n\n.ag-recent-color {\n cursor: pointer;\n}\n\n.ag-ltr .ag-column-select-indent-1 {\n padding-left: 20px;\n}\n.ag-rtl .ag-column-select-indent-1 {\n padding-right: 20px;\n}\n\n.ag-ltr .ag-set-filter-indent-1 {\n padding-left: 20px;\n}\n.ag-rtl .ag-set-filter-indent-1 {\n padding-right: 20px;\n}\n\n.ag-ltr .ag-row-group-indent-1 {\n padding-left: 20px;\n}\n.ag-rtl .ag-row-group-indent-1 {\n padding-right: 20px;\n}\n\n.ag-ltr .ag-column-select-indent-2 {\n padding-left: 40px;\n}\n.ag-rtl .ag-column-select-indent-2 {\n padding-right: 40px;\n}\n\n.ag-ltr .ag-set-filter-indent-2 {\n padding-left: 40px;\n}\n.ag-rtl .ag-set-filter-indent-2 {\n padding-right: 40px;\n}\n\n.ag-ltr .ag-row-group-indent-2 {\n padding-left: 40px;\n}\n.ag-rtl .ag-row-group-indent-2 {\n padding-right: 40px;\n}\n\n.ag-ltr .ag-column-select-indent-3 {\n padding-left: 60px;\n}\n.ag-rtl .ag-column-select-indent-3 {\n padding-right: 60px;\n}\n\n.ag-ltr .ag-set-filter-indent-3 {\n padding-left: 60px;\n}\n.ag-rtl .ag-set-filter-indent-3 {\n padding-right: 60px;\n}\n\n.ag-ltr .ag-row-group-indent-3 {\n padding-left: 60px;\n}\n.ag-rtl .ag-row-group-indent-3 {\n padding-right: 60px;\n}\n\n.ag-ltr .ag-column-select-indent-4 {\n padding-left: 80px;\n}\n.ag-rtl .ag-column-select-indent-4 {\n padding-right: 80px;\n}\n\n.ag-ltr .ag-set-filter-indent-4 {\n padding-left: 80px;\n}\n.ag-rtl .ag-set-filter-indent-4 {\n padding-right: 80px;\n}\n\n.ag-ltr .ag-row-group-indent-4 {\n padding-left: 80px;\n}\n.ag-rtl .ag-row-group-indent-4 {\n padding-right: 80px;\n}\n\n.ag-ltr .ag-column-select-indent-5 {\n padding-left: 100px;\n}\n.ag-rtl .ag-column-select-indent-5 {\n padding-right: 100px;\n}\n\n.ag-ltr .ag-set-filter-indent-5 {\n padding-left: 100px;\n}\n.ag-rtl .ag-set-filter-indent-5 {\n padding-right: 100px;\n}\n\n.ag-ltr .ag-row-group-indent-5 {\n padding-left: 100px;\n}\n.ag-rtl .ag-row-group-indent-5 {\n padding-right: 100px;\n}\n\n.ag-ltr .ag-column-select-indent-6 {\n padding-left: 120px;\n}\n.ag-rtl .ag-column-select-indent-6 {\n padding-right: 120px;\n}\n\n.ag-ltr .ag-set-filter-indent-6 {\n padding-left: 120px;\n}\n.ag-rtl .ag-set-filter-indent-6 {\n padding-right: 120px;\n}\n\n.ag-ltr .ag-row-group-indent-6 {\n padding-left: 120px;\n}\n.ag-rtl .ag-row-group-indent-6 {\n padding-right: 120px;\n}\n\n.ag-ltr .ag-column-select-indent-7 {\n padding-left: 140px;\n}\n.ag-rtl .ag-column-select-indent-7 {\n padding-right: 140px;\n}\n\n.ag-ltr .ag-set-filter-indent-7 {\n padding-left: 140px;\n}\n.ag-rtl .ag-set-filter-indent-7 {\n padding-right: 140px;\n}\n\n.ag-ltr .ag-row-group-indent-7 {\n padding-left: 140px;\n}\n.ag-rtl .ag-row-group-indent-7 {\n padding-right: 140px;\n}\n\n.ag-ltr .ag-column-select-indent-8 {\n padding-left: 160px;\n}\n.ag-rtl .ag-column-select-indent-8 {\n padding-right: 160px;\n}\n\n.ag-ltr .ag-set-filter-indent-8 {\n padding-left: 160px;\n}\n.ag-rtl .ag-set-filter-indent-8 {\n padding-right: 160px;\n}\n\n.ag-ltr .ag-row-group-indent-8 {\n padding-left: 160px;\n}\n.ag-rtl .ag-row-group-indent-8 {\n padding-right: 160px;\n}\n\n.ag-ltr .ag-column-select-indent-9 {\n padding-left: 180px;\n}\n.ag-rtl .ag-column-select-indent-9 {\n padding-right: 180px;\n}\n\n.ag-ltr .ag-set-filter-indent-9 {\n padding-left: 180px;\n}\n.ag-rtl .ag-set-filter-indent-9 {\n padding-right: 180px;\n}\n\n.ag-ltr .ag-row-group-indent-9 {\n padding-left: 180px;\n}\n.ag-rtl .ag-row-group-indent-9 {\n padding-right: 180px;\n}\n\n.ag-ltr {\n direction: ltr;\n}\n.ag-ltr .ag-body,\n.ag-ltr .ag-floating-top,\n.ag-ltr .ag-floating-bottom,\n.ag-ltr .ag-header,\n.ag-ltr .ag-sticky-top,\n.ag-ltr .ag-body-viewport,\n.ag-ltr .ag-body-horizontal-scroll {\n flex-direction: row;\n}\n\n.ag-rtl {\n direction: rtl;\n}\n.ag-rtl .ag-body,\n.ag-rtl .ag-floating-top,\n.ag-rtl .ag-floating-bottom,\n.ag-rtl .ag-header,\n.ag-rtl .ag-sticky-top,\n.ag-rtl .ag-body-viewport,\n.ag-rtl .ag-body-horizontal-scroll {\n flex-direction: row-reverse;\n}\n.ag-rtl .ag-icon-contracted,\n.ag-rtl .ag-icon-expanded,\n.ag-rtl .ag-icon-tree-closed {\n display: block;\n transform: rotate(180deg);\n}\n\n.ag-body .ag-body-viewport {\n -webkit-overflow-scrolling: touch;\n overflow: auto;\n}\n\n.ag-layout-print.ag-body {\n display: block;\n height: unset;\n}\n.ag-layout-print.ag-body-clipper {\n height: unset;\n}\n.ag-layout-print.ag-root-wrapper {\n display: inline-flex;\n}\n.ag-layout-print .ag-center-cols-clipper {\n min-width: 100%;\n}\n.ag-layout-print .ag-body-vertical-scroll {\n display: none;\n}\n.ag-layout-print .ag-body-horizontal-scroll {\n display: none;\n}\n.ag-layout-print.ag-force-vertical-scroll {\n overflow-y: visible !important;\n}\n\n@media print {\n .ag-root-wrapper.ag-layout-print {\n display: table;\n }\n .ag-root-wrapper.ag-layout-print .ag-root-wrapper-body,\n .ag-root-wrapper.ag-layout-print .ag-root,\n .ag-root-wrapper.ag-layout-print .ag-body-viewport,\n .ag-root-wrapper.ag-layout-print .ag-center-cols-container,\n .ag-root-wrapper.ag-layout-print .ag-center-cols-viewport,\n .ag-root-wrapper.ag-layout-print .ag-center-cols-clipper,\n .ag-root-wrapper.ag-layout-print .ag-body-horizontal-scroll-viewport,\n .ag-root-wrapper.ag-layout-print .ag-virtual-list-viewport {\n height: auto !important;\n overflow: hidden !important;\n display: block !important;\n }\n .ag-root-wrapper.ag-layout-print .ag-row,\n .ag-root-wrapper.ag-layout-print .ag-cell {\n break-inside: avoid;\n }\n}\n[class^='ag-'],\n[class^='ag-']:focus,\n[class^='ag-']:after,\n[class^='ag-']:before {\n box-sizing: border-box;\n outline: none;\n}\n\n[class^='ag-']::-ms-clear {\n display: none;\n}\n\n.ag-checkbox .ag-input-wrapper,\n.ag-radio-button .ag-input-wrapper {\n overflow: visible;\n}\n\n.ag-range-field .ag-input-wrapper {\n height: 100%;\n}\n\n.ag-toggle-button {\n flex: none;\n width: unset;\n min-width: unset;\n}\n\n.ag-button {\n border-radius: 0px;\n color: var(--ag-foreground-color);\n}\n\n.ag-button:hover {\n background-color: transparent;\n}\n\n.ag-ltr .ag-label-align-right .ag-label {\n margin-left: var(--ag-grid-size);\n}\n.ag-rtl .ag-label-align-right .ag-label {\n margin-right: var(--ag-grid-size);\n}\n\ninput[class^='ag-'] {\n margin: 0;\n background-color: var(--ag-background-color);\n}\n\ntextarea[class^='ag-'],\nselect[class^='ag-'] {\n background-color: var(--ag-background-color);\n}\n\ninput[class^='ag-']:not([type]),\ninput[class^='ag-'][type='text'],\ninput[class^='ag-'][type='number'],\ninput[class^='ag-'][type='tel'],\ninput[class^='ag-'][type='date'],\ninput[class^='ag-'][type='datetime-local'],\ntextarea[class^='ag-'] {\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n border: var(--ag-borders-input) var(--ag-input-border-color);\n}\ninput[class^='ag-']:not([type]):disabled,\ninput[class^='ag-'][type='text']:disabled,\ninput[class^='ag-'][type='number']:disabled,\ninput[class^='ag-'][type='tel']:disabled,\ninput[class^='ag-'][type='date']:disabled,\ninput[class^='ag-'][type='datetime-local']:disabled,\ntextarea[class^='ag-']:disabled {\n color: var(--ag-disabled-foreground-color);\n background-color: var(--ag-input-disabled-background-color);\n border-color: var(--ag-input-disabled-border-color);\n}\ninput[class^='ag-']:not([type]):focus,\ninput[class^='ag-'][type='text']:focus,\ninput[class^='ag-'][type='number']:focus,\ninput[class^='ag-'][type='tel']:focus,\ninput[class^='ag-'][type='date']:focus,\ninput[class^='ag-'][type='datetime-local']:focus,\ntextarea[class^='ag-']:focus {\n outline: none;\n box-shadow: var(--ag-input-focus-box-shadow);\n border-color: var(--ag-input-focus-border-color);\n}\ninput[class^='ag-']:not([type]):invalid,\ninput[class^='ag-'][type='text']:invalid,\ninput[class^='ag-'][type='number']:invalid,\ninput[class^='ag-'][type='tel']:invalid,\ninput[class^='ag-'][type='date']:invalid,\ninput[class^='ag-'][type='datetime-local']:invalid,\ntextarea[class^='ag-']:invalid {\n border: var(--ag-borders-input-invalid) var(--ag-input-border-color-invalid);\n}\n\ninput[class^='ag-'][type='number']:not(.ag-number-field-input-stepper) {\n -moz-appearance: textfield;\n}\ninput[class^='ag-'][type='number']:not(.ag-number-field-input-stepper)::-webkit-outer-spin-button,\ninput[class^='ag-'][type='number']:not(.ag-number-field-input-stepper)::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\ninput[class^='ag-'][type='range'] {\n padding: 0;\n}\n\ninput[class^='ag-'][type='button']:focus,\nbutton[class^='ag-']:focus {\n box-shadow: var(--ag-input-focus-box-shadow);\n}\n\n.ag-drag-handle {\n color: var(--ag-secondary-foreground-color);\n}\n\n.ag-list-item,\n.ag-virtual-list-item {\n height: var(--ag-list-item-height);\n}\n\n.ag-keyboard-focus .ag-virtual-list-item:focus {\n outline: none;\n}\n.ag-keyboard-focus .ag-virtual-list-item:focus::after {\n content: '';\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n\n.ag-select-list {\n background-color: var(--ag-background-color);\n overflow-y: auto;\n overflow-x: hidden;\n border-radius: var(--ag-border-radius);\n border: var(--ag-borders) var(--ag-border-color);\n}\n\n.ag-list-item {\n display: flex;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-list-item.ag-active-item {\n background-color: var(--ag-row-hover-color);\n}\n\n.ag-select-list-item {\n padding-left: 4px;\n padding-right: 4px;\n cursor: default;\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.ag-select-list-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.ag-row-drag,\n.ag-selection-checkbox,\n.ag-group-expanded,\n.ag-group-contracted {\n color: var(--ag-secondary-foreground-color);\n}\n.ag-ltr .ag-row-drag,\n.ag-ltr .ag-selection-checkbox,\n.ag-ltr .ag-group-expanded,\n.ag-ltr .ag-group-contracted {\n margin-right: var(--ag-cell-widget-spacing);\n}\n.ag-rtl .ag-row-drag,\n.ag-rtl .ag-selection-checkbox,\n.ag-rtl .ag-group-expanded,\n.ag-rtl .ag-group-contracted {\n margin-left: var(--ag-cell-widget-spacing);\n}\n\n.ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {\n --ag-internal-calculated-line-height: var(--ag-line-height, calc(var(--ag-row-height) - var(--ag-row-border-width)));\n --ag-internal-padded-row-height: calc(var(--ag-row-height) - var(--ag-row-border-width));\n height: min(var(--ag-internal-calculated-line-height), var(--ag-internal-padded-row-height));\n display: flex;\n align-items: center;\n flex: none;\n}\n\n.ag-group-expanded,\n.ag-group-contracted {\n cursor: pointer;\n}\n\n.ag-group-title-bar-icon {\n cursor: pointer;\n flex: none;\n color: var(--ag-secondary-foreground-color);\n}\n\n.ag-ltr .ag-group-child-count {\n margin-left: 2px;\n}\n.ag-rtl .ag-group-child-count {\n margin-right: 2px;\n}\n\n.ag-group-title-bar {\n background-color: var(--ag-subheader-background-color);\n padding: var(--ag-grid-size);\n}\n\n.ag-group-toolbar {\n padding: var(--ag-grid-size);\n background-color: var(--ag-subheader-toolbar-background-color);\n}\n\n.ag-disabled-group-title-bar,\n.ag-disabled-group-container {\n opacity: 0.5;\n}\n\n.group-item {\n margin: calc(var(--ag-grid-size) * 0.5) 0;\n}\n\n.ag-label {\n white-space: nowrap;\n}\n.ag-ltr .ag-label {\n margin-right: var(--ag-grid-size);\n}\n.ag-rtl .ag-label {\n margin-left: var(--ag-grid-size);\n}\n\n.ag-label-align-top .ag-label {\n margin-bottom: calc(var(--ag-grid-size) * 0.5);\n}\n\n.ag-angle-select[disabled] {\n color: var(--ag-disabled-foreground-color);\n pointer-events: none;\n}\n.ag-angle-select[disabled] .ag-angle-select-field {\n opacity: 0.4;\n}\n\n.ag-ltr .ag-slider-field,\n.ag-ltr .ag-angle-select-field {\n margin-right: calc(var(--ag-grid-size) * 2);\n}\n.ag-rtl .ag-slider-field,\n.ag-rtl .ag-angle-select-field {\n margin-left: calc(var(--ag-grid-size) * 2);\n}\n\n.ag-angle-select-parent-circle {\n width: 24px;\n height: 24px;\n border-radius: 12px;\n border: solid 1px;\n border-color: var(--ag-border-color);\n background-color: var(--ag-background-color);\n}\n\n.ag-angle-select-child-circle {\n top: 4px;\n left: 12px;\n width: 6px;\n height: 6px;\n margin-left: -3px;\n margin-top: -4px;\n border-radius: 3px;\n background-color: var(--ag-secondary-foreground-color);\n}\n\n.ag-picker-field-wrapper {\n border: var(--ag-borders);\n border-color: var(--ag-border-color);\n border-radius: 5px;\n}\n.ag-picker-field-wrapper:disabled {\n color: var(--ag-disabled-foreground-color);\n background-color: var(--ag-input-disabled-background-color);\n border-color: var(--ag-input-disabled-border-color);\n}\n.ag-picker-field-wrapper.ag-picker-has-focus,\n.ag-picker-field-wrapper:focus {\n outline: none;\n box-shadow: var(--ag-input-focus-box-shadow);\n border-color: var(--ag-input-focus-border-color);\n}\n\n.ag-picker-field-button {\n background-color: var(--ag-background-color);\n color: var(--ag-secondary-foreground-color);\n}\n\n.ag-dialog.ag-color-dialog {\n border-radius: 5px;\n}\n\n.ag-color-picker .ag-picker-field-display {\n height: var(--ag-icon-size);\n}\n\n.ag-color-panel {\n padding: var(--ag-grid-size);\n}\n\n.ag-spectrum-color {\n background-color: rgb(255, 0, 0);\n border-radius: 2px;\n}\n\n.ag-spectrum-tools {\n padding: 10px;\n}\n\n.ag-spectrum-sat {\n background-image: linear-gradient(to right, white, rgba(204, 154, 129, 0));\n}\n\n.ag-spectrum-val {\n background-image: linear-gradient(to top, black, rgba(204, 154, 129, 0));\n}\n\n.ag-spectrum-dragger {\n border-radius: 12px;\n height: 12px;\n width: 12px;\n border: 1px solid white;\n background: black;\n box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n}\n\n.ag-spectrum-hue-background {\n border-radius: 2px;\n}\n\n.ag-spectrum-alpha-background {\n border-radius: 2px;\n}\n\n.ag-spectrum-tool {\n margin-bottom: 10px;\n height: 11px;\n border-radius: 2px;\n}\n\n.ag-spectrum-slider {\n margin-top: -12px;\n width: 13px;\n height: 13px;\n border-radius: 13px;\n background-color: rgb(248, 248, 248);\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n}\n\n.ag-recent-color {\n margin: 0 3px;\n}\n.ag-recent-color:first-child {\n margin-left: 0;\n}\n.ag-recent-color:last-child {\n margin-right: 0;\n}\n\n.ag-spectrum-color:focus-visible:not(:disabled):not([readonly]),\n.ag-spectrum-slider:focus-visible:not(:disabled):not([readonly]),\n.ag-recent-color:focus-visible:not(:disabled):not([readonly]) {\n box-shadow: var(--ag-input-focus-box-shadow);\n}\n\n.ag-dnd-ghost {\n border: var(--ag-borders) var(--ag-border-color);\n background: var(--ag-background-color);\n border-radius: var(--ag-card-radius);\n box-shadow: var(--ag-card-shadow);\n padding: var(--ag-grid-size);\n overflow: hidden;\n text-overflow: ellipsis;\n border: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n color: var(--ag-secondary-foreground-color);\n height: var(--ag-header-height) !important;\n line-height: var(--ag-header-height);\n margin: 0;\n padding: 0 calc(var(--ag-grid-size) * 2);\n transform: translateY(calc(var(--ag-grid-size) * 2));\n}\n\n.ag-dnd-ghost-icon {\n margin-right: var(--ag-grid-size);\n color: var(--ag-foreground-color);\n}\n\n.ag-popup-child:not(.ag-tooltip-custom) {\n box-shadow: var(--ag-popup-shadow);\n}\n\n.ag-select .ag-picker-field-wrapper {\n background-color: var(--ag-background-color);\n min-height: var(--ag-list-item-height);\n cursor: default;\n}\n.ag-select.ag-disabled .ag-picker-field-wrapper:focus {\n box-shadow: none;\n}\n.ag-select:not(.ag-cell-editor, .ag-label-align-top) {\n height: var(--ag-list-item-height);\n}\n.ag-select .ag-picker-field-display {\n margin: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-select .ag-picker-field-icon {\n display: flex;\n align-items: center;\n}\n.ag-select.ag-disabled {\n opacity: 0.5;\n}\n\n.ag-rich-select-value,\n.ag-rich-select-list {\n background-color: var(--ag-background-color);\n}\n\n.ag-rich-select-list {\n width: 100%;\n height: auto;\n border-radius: var(--ag-border-radius);\n border: var(--ag-borders) var(--ag-border-color);\n max-height: calc(var(--ag-row-height) * 6.5);\n}\n\n.ag-rich-select-value {\n border-bottom: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n padding-top: 0;\n padding-bottom: 0;\n}\n.ag-ltr .ag-rich-select-value {\n padding-left: var(--ag-cell-horizontal-padding);\n}\n.ag-rtl .ag-rich-select-value {\n padding-right: var(--ag-cell-horizontal-padding);\n}\n.ag-ltr .ag-rich-select-value {\n padding-right: var(--ag-grid-size);\n}\n.ag-rtl .ag-rich-select-value {\n padding-left: var(--ag-grid-size);\n}\n\n.ag-popup-editor .ag-rich-select-value {\n height: var(--ag-row-height);\n min-width: 200px;\n}\n\n.ag-rich-select-virtual-list-item {\n cursor: default;\n height: var(--ag-list-item-height);\n}\n.ag-keyboard-focus .ag-rich-select-virtual-list-item:focus::after {\n content: none;\n}\n.ag-rich-select-virtual-list-item:hover {\n background-color: var(--ag-row-hover-color);\n}\n\n.ag-ltr .ag-rich-select-row {\n padding-left: var(--ag-cell-horizontal-padding);\n}\n.ag-rtl .ag-rich-select-row {\n padding-right: var(--ag-cell-horizontal-padding);\n}\n\n.ag-rich-select-row-selected {\n background-color: var(--ag-selected-row-background-color);\n}\n\n.ag-autocomplete {\n width: 100%;\n}\n\n.ag-autocomplete-list {\n width: 100%;\n min-width: 200px;\n height: calc(var(--ag-row-height) * 6.5);\n}\n\n.ag-autocomplete-virtual-list-item {\n cursor: default;\n height: var(--ag-list-item-height);\n}\n.ag-keyboard-focus .ag-autocomplete-virtual-list-item:focus::after {\n content: none;\n}\n.ag-autocomplete-virtual-list-item:hover {\n background-color: var(--ag-row-hover-color);\n}\n\n.ag-autocomplete-row-label {\n margin: 0px var(--ag-widget-container-horizontal-padding);\n}\n\n.ag-autocomplete-row-selected {\n background-color: var(--ag-selected-row-background-color);\n}\n\n.ag-dragging-range-handle .ag-dialog,\n.ag-dragging-fill-handle .ag-dialog {\n opacity: 0.7;\n pointer-events: none;\n}\n\n.ag-dialog {\n border-radius: var(--ag-border-radius);\n border: var(--ag-borders) var(--ag-border-color);\n box-shadow: var(--ag-popup-shadow);\n}\n\n.ag-panel {\n background-color: var(--ag-background-color);\n}\n\n.ag-panel-title-bar {\n background-color: var(--ag-header-background-color);\n color: var(--ag-header-foreground-color);\n height: var(--ag-header-height);\n padding: var(--ag-grid-size) var(--ag-cell-horizontal-padding);\n border-bottom: var(--ag-borders) var(--ag-border-color);\n}\n\n.ag-ltr .ag-panel-title-bar-button {\n margin-left: var(--ag-grid-size);\n}\n.ag-rtl .ag-panel-title-bar-button {\n margin-right: var(--ag-grid-size);\n}\n\n.ag-tooltip {\n background-color: var(--ag-tooltip-background-color);\n color: var(--ag-foreground-color);\n padding: var(--ag-grid-size);\n border: var(--ag-borders) var(--ag-border-color);\n border-radius: var(--ag-card-radius);\n white-space: normal;\n}\n\n.ag-tooltip.ag-tooltip-animate,\n.ag-tooltip-custom.ag-tooltip-animate {\n transition: opacity 1s;\n}\n.ag-tooltip.ag-tooltip-animate.ag-tooltip-hiding,\n.ag-tooltip-custom.ag-tooltip-animate.ag-tooltip-hiding {\n opacity: 0;\n}\n\n.ag-ltr .ag-column-select-indent-1 {\n padding-left: calc(1 * var(--ag-column-select-indent-size));\n}\n.ag-rtl .ag-column-select-indent-1 {\n padding-right: calc(1 * var(--ag-column-select-indent-size));\n}\n\n.ag-ltr .ag-column-select-indent-2 {\n padding-left: calc(2 * var(--ag-column-select-indent-size));\n}\n.ag-rtl .ag-column-select-indent-2 {\n padding-right: calc(2 * var(--ag-column-select-indent-size));\n}\n\n.ag-ltr .ag-column-select-indent-3 {\n padding-left: calc(3 * var(--ag-column-select-indent-size));\n}\n.ag-rtl .ag-column-select-indent-3 {\n padding-right: calc(3 * var(--ag-column-select-indent-size));\n}\n\n.ag-ltr .ag-column-select-indent-4 {\n padding-left: calc(4 * var(--ag-column-select-indent-size));\n}\n.ag-rtl .ag-column-select-indent-4 {\n padding-right: calc(4 * var(--ag-column-select-indent-size));\n}\n\n.ag-ltr .ag-column-select-indent-5 {\n padding-left: calc(5 * var(--ag-column-select-indent-size));\n}\n.ag-rtl .ag-column-select-indent-5 {\n padding-right: calc(5 * var(--ag-column-select-indent-size));\n}\n\n.ag-ltr .ag-column-select-indent-6 {\n padding-left: calc(6 * var(--ag-column-select-indent-size));\n}\n.ag-rtl .ag-column-select-indent-6 {\n padding-right: calc(6 * var(--ag-column-select-indent-size));\n}\n\n.ag-ltr .ag-column-select-indent-7 {\n padding-left: calc(7 * var(--ag-column-select-indent-size));\n}\n.ag-rtl .ag-column-select-indent-7 {\n padding-right: calc(7 * var(--ag-column-select-indent-size));\n}\n\n.ag-ltr .ag-column-select-indent-8 {\n padding-left: calc(8 * var(--ag-column-select-indent-size));\n}\n.ag-rtl .ag-column-select-indent-8 {\n padding-right: calc(8 * var(--ag-column-select-indent-size));\n}\n\n.ag-ltr .ag-column-select-indent-9 {\n padding-left: calc(9 * var(--ag-column-select-indent-size));\n}\n.ag-rtl .ag-column-select-indent-9 {\n padding-right: calc(9 * var(--ag-column-select-indent-size));\n}\n\n.ag-column-select-header-icon {\n cursor: pointer;\n}\n\n.ag-keyboard-focus .ag-column-select-header-icon:focus {\n outline: none;\n}\n.ag-keyboard-focus .ag-column-select-header-icon:focus::after {\n content: '';\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n\n.ag-ltr .ag-column-group-icons:not(:last-child),\n.ag-ltr .ag-column-select-header-icon:not(:last-child),\n.ag-ltr .ag-column-select-header-checkbox:not(:last-child),\n.ag-ltr .ag-column-select-header-filter-wrapper:not(:last-child),\n.ag-ltr .ag-column-select-checkbox:not(:last-child),\n.ag-ltr .ag-column-select-column-drag-handle:not(:last-child),\n.ag-ltr .ag-column-select-column-group-drag-handle:not(:last-child),\n.ag-ltr .ag-column-select-column-label:not(:last-child) {\n margin-right: var(--ag-widget-horizontal-spacing);\n}\n.ag-rtl .ag-column-group-icons:not(:last-child),\n.ag-rtl .ag-column-select-header-icon:not(:last-child),\n.ag-rtl .ag-column-select-header-checkbox:not(:last-child),\n.ag-rtl .ag-column-select-header-filter-wrapper:not(:last-child),\n.ag-rtl .ag-column-select-checkbox:not(:last-child),\n.ag-rtl .ag-column-select-column-drag-handle:not(:last-child),\n.ag-rtl .ag-column-select-column-group-drag-handle:not(:last-child),\n.ag-rtl .ag-column-select-column-label:not(:last-child) {\n margin-left: var(--ag-widget-horizontal-spacing);\n}\n\n.ag-keyboard-focus .ag-column-select-virtual-list-item:focus {\n outline: none;\n}\n.ag-keyboard-focus .ag-column-select-virtual-list-item:focus::after {\n content: '';\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n\n.ag-column-select-column-group:not(:last-child),\n.ag-column-select-column:not(:last-child) {\n margin-bottom: var(--ag-widget-vertical-spacing);\n}\n\n.ag-column-select-column-readonly,\n.ag-column-select-column-group-readonly {\n color: var(--ag-disabled-foreground-color);\n pointer-events: none;\n}\n\n.ag-ltr .ag-column-select-add-group-indent {\n margin-left: calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);\n}\n.ag-rtl .ag-column-select-add-group-indent {\n margin-right: calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);\n}\n\n.ag-column-select-virtual-list-viewport {\n padding: calc(var(--ag-widget-container-vertical-padding) * 0.5) 0px;\n}\n\n.ag-column-select-virtual-list-item {\n padding: 0 var(--ag-widget-container-horizontal-padding);\n}\n\n.ag-checkbox-edit {\n padding-left: var(--ag-cell-horizontal-padding);\n padding-right: var(--ag-cell-horizontal-padding);\n}\n\n.ag-rtl {\n text-align: right;\n}\n\n.ag-root-wrapper {\n border: var(--ag-borders) var(--ag-border-color);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 1);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 1);\n}\n\n.ag-ltr .ag-row-group-indent-1 {\n padding-left: calc(1 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-1 {\n padding-right: calc(1 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-1 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-1 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 2);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 2);\n}\n\n.ag-ltr .ag-row-group-indent-2 {\n padding-left: calc(2 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-2 {\n padding-right: calc(2 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-2 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-2 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 3);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 3);\n}\n\n.ag-ltr .ag-row-group-indent-3 {\n padding-left: calc(3 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-3 {\n padding-right: calc(3 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-3 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-3 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 4);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 4);\n}\n\n.ag-ltr .ag-row-group-indent-4 {\n padding-left: calc(4 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-4 {\n padding-right: calc(4 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-4 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-4 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 5);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 5);\n}\n\n.ag-ltr .ag-row-group-indent-5 {\n padding-left: calc(5 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-5 {\n padding-right: calc(5 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-5 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-5 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 6);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 6);\n}\n\n.ag-ltr .ag-row-group-indent-6 {\n padding-left: calc(6 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-6 {\n padding-right: calc(6 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-6 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-6 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 7);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 7);\n}\n\n.ag-ltr .ag-row-group-indent-7 {\n padding-left: calc(7 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-7 {\n padding-right: calc(7 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-7 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-7 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 8);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 8);\n}\n\n.ag-ltr .ag-row-group-indent-8 {\n padding-left: calc(8 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-8 {\n padding-right: calc(8 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-8 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-8 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 9);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 9);\n}\n\n.ag-ltr .ag-row-group-indent-9 {\n padding-left: calc(9 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-9 {\n padding-right: calc(9 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-9 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-9 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 10);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 10);\n}\n\n.ag-ltr .ag-row-group-indent-10 {\n padding-left: calc(10 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-10 {\n padding-right: calc(10 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-10 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-10 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 11);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 11);\n}\n\n.ag-ltr .ag-row-group-indent-11 {\n padding-left: calc(11 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-11 {\n padding-right: calc(11 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-11 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-11 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 12);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 12);\n}\n\n.ag-ltr .ag-row-group-indent-12 {\n padding-left: calc(12 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-12 {\n padding-right: calc(12 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-12 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-12 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 13);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 13);\n}\n\n.ag-ltr .ag-row-group-indent-13 {\n padding-left: calc(13 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-13 {\n padding-right: calc(13 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-13 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-13 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 14);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 14);\n}\n\n.ag-ltr .ag-row-group-indent-14 {\n padding-left: calc(14 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-14 {\n padding-right: calc(14 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-14 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-14 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 15);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 15);\n}\n\n.ag-ltr .ag-row-group-indent-15 {\n padding-left: calc(15 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-15 {\n padding-right: calc(15 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-15 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-15 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 16);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 16);\n}\n\n.ag-ltr .ag-row-group-indent-16 {\n padding-left: calc(16 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-16 {\n padding-right: calc(16 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-16 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-16 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 17);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 17);\n}\n\n.ag-ltr .ag-row-group-indent-17 {\n padding-left: calc(17 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-17 {\n padding-right: calc(17 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-17 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-17 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 18);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 18);\n}\n\n.ag-ltr .ag-row-group-indent-18 {\n padding-left: calc(18 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-18 {\n padding-right: calc(18 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-18 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-18 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 19);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 19);\n}\n\n.ag-ltr .ag-row-group-indent-19 {\n padding-left: calc(19 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-19 {\n padding-right: calc(19 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-19 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-19 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 20);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 20);\n}\n\n.ag-ltr .ag-row-group-indent-20 {\n padding-left: calc(20 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-20 {\n padding-right: calc(20 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-20 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-20 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 21);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 21);\n}\n\n.ag-ltr .ag-row-group-indent-21 {\n padding-left: calc(21 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-21 {\n padding-right: calc(21 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-21 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-21 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 22);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 22);\n}\n\n.ag-ltr .ag-row-group-indent-22 {\n padding-left: calc(22 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-22 {\n padding-right: calc(22 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-22 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-22 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 23);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 23);\n}\n\n.ag-ltr .ag-row-group-indent-23 {\n padding-left: calc(23 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-23 {\n padding-right: calc(23 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-23 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-23 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 24);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 24);\n}\n\n.ag-ltr .ag-row-group-indent-24 {\n padding-left: calc(24 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-24 {\n padding-right: calc(24 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-24 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-24 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 25);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 25);\n}\n\n.ag-ltr .ag-row-group-indent-25 {\n padding-left: calc(25 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-25 {\n padding-right: calc(25 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-25 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-25 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 26);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 26);\n}\n\n.ag-ltr .ag-row-group-indent-26 {\n padding-left: calc(26 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-26 {\n padding-right: calc(26 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-26 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-26 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 27);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 27);\n}\n\n.ag-ltr .ag-row-group-indent-27 {\n padding-left: calc(27 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-27 {\n padding-right: calc(27 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-27 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-27 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 28);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 28);\n}\n\n.ag-ltr .ag-row-group-indent-28 {\n padding-left: calc(28 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-28 {\n padding-right: calc(28 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-28 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-28 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 29);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 29);\n}\n\n.ag-ltr .ag-row-group-indent-29 {\n padding-left: calc(29 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-29 {\n padding-right: calc(29 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-29 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-29 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 30);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 30);\n}\n\n.ag-ltr .ag-row-group-indent-30 {\n padding-left: calc(30 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-30 {\n padding-right: calc(30 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-30 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-30 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 31);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 31);\n}\n\n.ag-ltr .ag-row-group-indent-31 {\n padding-left: calc(31 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-31 {\n padding-right: calc(31 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-31 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-31 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 32);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 32);\n}\n\n.ag-ltr .ag-row-group-indent-32 {\n padding-left: calc(32 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-32 {\n padding-right: calc(32 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-32 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-32 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 33);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 33);\n}\n\n.ag-ltr .ag-row-group-indent-33 {\n padding-left: calc(33 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-33 {\n padding-right: calc(33 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-33 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-33 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 34);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 34);\n}\n\n.ag-ltr .ag-row-group-indent-34 {\n padding-left: calc(34 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-34 {\n padding-right: calc(34 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-34 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-34 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 35);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 35);\n}\n\n.ag-ltr .ag-row-group-indent-35 {\n padding-left: calc(35 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-35 {\n padding-right: calc(35 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-35 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-35 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 36);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 36);\n}\n\n.ag-ltr .ag-row-group-indent-36 {\n padding-left: calc(36 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-36 {\n padding-right: calc(36 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-36 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-36 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 37);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 37);\n}\n\n.ag-ltr .ag-row-group-indent-37 {\n padding-left: calc(37 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-37 {\n padding-right: calc(37 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-37 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-37 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 38);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 38);\n}\n\n.ag-ltr .ag-row-group-indent-38 {\n padding-left: calc(38 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-38 {\n padding-right: calc(38 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-38 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-38 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 39);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 39);\n}\n\n.ag-ltr .ag-row-group-indent-39 {\n padding-left: calc(39 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-39 {\n padding-right: calc(39 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-39 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-39 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 40);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 40);\n}\n\n.ag-ltr .ag-row-group-indent-40 {\n padding-left: calc(40 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-40 {\n padding-right: calc(40 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-40 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-40 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 41);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 41);\n}\n\n.ag-ltr .ag-row-group-indent-41 {\n padding-left: calc(41 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-41 {\n padding-right: calc(41 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-41 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-41 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 42);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 42);\n}\n\n.ag-ltr .ag-row-group-indent-42 {\n padding-left: calc(42 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-42 {\n padding-right: calc(42 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-42 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-42 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 43);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 43);\n}\n\n.ag-ltr .ag-row-group-indent-43 {\n padding-left: calc(43 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-43 {\n padding-right: calc(43 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-43 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-43 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 44);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 44);\n}\n\n.ag-ltr .ag-row-group-indent-44 {\n padding-left: calc(44 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-44 {\n padding-right: calc(44 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-44 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-44 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 45);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 45);\n}\n\n.ag-ltr .ag-row-group-indent-45 {\n padding-left: calc(45 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-45 {\n padding-right: calc(45 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-45 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-45 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 46);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 46);\n}\n\n.ag-ltr .ag-row-group-indent-46 {\n padding-left: calc(46 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-46 {\n padding-right: calc(46 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-46 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-46 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 47);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 47);\n}\n\n.ag-ltr .ag-row-group-indent-47 {\n padding-left: calc(47 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-47 {\n padding-right: calc(47 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-47 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-47 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 48);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 48);\n}\n\n.ag-ltr .ag-row-group-indent-48 {\n padding-left: calc(48 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-48 {\n padding-right: calc(48 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-48 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-48 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 49);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 49);\n}\n\n.ag-ltr .ag-row-group-indent-49 {\n padding-left: calc(49 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-49 {\n padding-right: calc(49 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-49 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-49 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 50);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 50);\n}\n\n.ag-ltr .ag-row-group-indent-50 {\n padding-left: calc(50 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-50 {\n padding-right: calc(50 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-50 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-50 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 51);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 51);\n}\n\n.ag-ltr .ag-row-group-indent-51 {\n padding-left: calc(51 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-51 {\n padding-right: calc(51 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-51 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-51 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 52);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 52);\n}\n\n.ag-ltr .ag-row-group-indent-52 {\n padding-left: calc(52 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-52 {\n padding-right: calc(52 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-52 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-52 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 53);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 53);\n}\n\n.ag-ltr .ag-row-group-indent-53 {\n padding-left: calc(53 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-53 {\n padding-right: calc(53 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-53 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-53 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 54);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 54);\n}\n\n.ag-ltr .ag-row-group-indent-54 {\n padding-left: calc(54 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-54 {\n padding-right: calc(54 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-54 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-54 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 55);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 55);\n}\n\n.ag-ltr .ag-row-group-indent-55 {\n padding-left: calc(55 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-55 {\n padding-right: calc(55 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-55 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-55 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 56);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 56);\n}\n\n.ag-ltr .ag-row-group-indent-56 {\n padding-left: calc(56 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-56 {\n padding-right: calc(56 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-56 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-56 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 57);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 57);\n}\n\n.ag-ltr .ag-row-group-indent-57 {\n padding-left: calc(57 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-57 {\n padding-right: calc(57 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-57 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-57 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 58);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 58);\n}\n\n.ag-ltr .ag-row-group-indent-58 {\n padding-left: calc(58 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-58 {\n padding-right: calc(58 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-58 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-58 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 59);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 59);\n}\n\n.ag-ltr .ag-row-group-indent-59 {\n padding-left: calc(59 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-59 {\n padding-right: calc(59 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-59 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-59 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 60);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 60);\n}\n\n.ag-ltr .ag-row-group-indent-60 {\n padding-left: calc(60 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-60 {\n padding-right: calc(60 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-60 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-60 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 61);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 61);\n}\n\n.ag-ltr .ag-row-group-indent-61 {\n padding-left: calc(61 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-61 {\n padding-right: calc(61 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-61 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-61 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 62);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 62);\n}\n\n.ag-ltr .ag-row-group-indent-62 {\n padding-left: calc(62 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-62 {\n padding-right: calc(62 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-62 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-62 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 63);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 63);\n}\n\n.ag-ltr .ag-row-group-indent-63 {\n padding-left: calc(63 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-63 {\n padding-right: calc(63 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-63 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-63 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 64);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 64);\n}\n\n.ag-ltr .ag-row-group-indent-64 {\n padding-left: calc(64 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-64 {\n padding-right: calc(64 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-64 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-64 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 65);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 65);\n}\n\n.ag-ltr .ag-row-group-indent-65 {\n padding-left: calc(65 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-65 {\n padding-right: calc(65 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-65 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-65 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 66);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 66);\n}\n\n.ag-ltr .ag-row-group-indent-66 {\n padding-left: calc(66 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-66 {\n padding-right: calc(66 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-66 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-66 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 67);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 67);\n}\n\n.ag-ltr .ag-row-group-indent-67 {\n padding-left: calc(67 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-67 {\n padding-right: calc(67 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-67 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-67 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 68);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 68);\n}\n\n.ag-ltr .ag-row-group-indent-68 {\n padding-left: calc(68 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-68 {\n padding-right: calc(68 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-68 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-68 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 69);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 69);\n}\n\n.ag-ltr .ag-row-group-indent-69 {\n padding-left: calc(69 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-69 {\n padding-right: calc(69 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-69 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-69 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 70);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 70);\n}\n\n.ag-ltr .ag-row-group-indent-70 {\n padding-left: calc(70 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-70 {\n padding-right: calc(70 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-70 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-70 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 71);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 71);\n}\n\n.ag-ltr .ag-row-group-indent-71 {\n padding-left: calc(71 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-71 {\n padding-right: calc(71 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-71 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-71 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 72);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 72);\n}\n\n.ag-ltr .ag-row-group-indent-72 {\n padding-left: calc(72 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-72 {\n padding-right: calc(72 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-72 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-72 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 73);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 73);\n}\n\n.ag-ltr .ag-row-group-indent-73 {\n padding-left: calc(73 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-73 {\n padding-right: calc(73 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-73 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-73 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 74);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 74);\n}\n\n.ag-ltr .ag-row-group-indent-74 {\n padding-left: calc(74 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-74 {\n padding-right: calc(74 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-74 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-74 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 75);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 75);\n}\n\n.ag-ltr .ag-row-group-indent-75 {\n padding-left: calc(75 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-75 {\n padding-right: calc(75 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-75 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-75 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 76);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 76);\n}\n\n.ag-ltr .ag-row-group-indent-76 {\n padding-left: calc(76 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-76 {\n padding-right: calc(76 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-76 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-76 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 77);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 77);\n}\n\n.ag-ltr .ag-row-group-indent-77 {\n padding-left: calc(77 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-77 {\n padding-right: calc(77 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-77 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-77 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 78);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 78);\n}\n\n.ag-ltr .ag-row-group-indent-78 {\n padding-left: calc(78 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-78 {\n padding-right: calc(78 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-78 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-78 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 79);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 79);\n}\n\n.ag-ltr .ag-row-group-indent-79 {\n padding-left: calc(79 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-79 {\n padding-right: calc(79 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-79 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-79 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 80);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 80);\n}\n\n.ag-ltr .ag-row-group-indent-80 {\n padding-left: calc(80 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-80 {\n padding-right: calc(80 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-80 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-80 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 81);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 81);\n}\n\n.ag-ltr .ag-row-group-indent-81 {\n padding-left: calc(81 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-81 {\n padding-right: calc(81 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-81 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-81 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 82);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 82);\n}\n\n.ag-ltr .ag-row-group-indent-82 {\n padding-left: calc(82 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-82 {\n padding-right: calc(82 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-82 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-82 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 83);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 83);\n}\n\n.ag-ltr .ag-row-group-indent-83 {\n padding-left: calc(83 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-83 {\n padding-right: calc(83 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-83 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-83 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 84);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 84);\n}\n\n.ag-ltr .ag-row-group-indent-84 {\n padding-left: calc(84 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-84 {\n padding-right: calc(84 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-84 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-84 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 85);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 85);\n}\n\n.ag-ltr .ag-row-group-indent-85 {\n padding-left: calc(85 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-85 {\n padding-right: calc(85 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-85 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-85 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 86);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 86);\n}\n\n.ag-ltr .ag-row-group-indent-86 {\n padding-left: calc(86 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-86 {\n padding-right: calc(86 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-86 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-86 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 87);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 87);\n}\n\n.ag-ltr .ag-row-group-indent-87 {\n padding-left: calc(87 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-87 {\n padding-right: calc(87 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-87 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-87 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 88);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 88);\n}\n\n.ag-ltr .ag-row-group-indent-88 {\n padding-left: calc(88 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-88 {\n padding-right: calc(88 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-88 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-88 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 89);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 89);\n}\n\n.ag-ltr .ag-row-group-indent-89 {\n padding-left: calc(89 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-89 {\n padding-right: calc(89 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-89 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-89 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 90);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 90);\n}\n\n.ag-ltr .ag-row-group-indent-90 {\n padding-left: calc(90 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-90 {\n padding-right: calc(90 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-90 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-90 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 91);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 91);\n}\n\n.ag-ltr .ag-row-group-indent-91 {\n padding-left: calc(91 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-91 {\n padding-right: calc(91 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-91 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-91 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 92);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 92);\n}\n\n.ag-ltr .ag-row-group-indent-92 {\n padding-left: calc(92 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-92 {\n padding-right: calc(92 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-92 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-92 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 93);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 93);\n}\n\n.ag-ltr .ag-row-group-indent-93 {\n padding-left: calc(93 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-93 {\n padding-right: calc(93 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-93 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-93 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 94);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 94);\n}\n\n.ag-ltr .ag-row-group-indent-94 {\n padding-left: calc(94 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-94 {\n padding-right: calc(94 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-94 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-94 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 95);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 95);\n}\n\n.ag-ltr .ag-row-group-indent-95 {\n padding-left: calc(95 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-95 {\n padding-right: calc(95 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-95 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-95 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 96);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 96);\n}\n\n.ag-ltr .ag-row-group-indent-96 {\n padding-left: calc(96 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-96 {\n padding-right: calc(96 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-96 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-96 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 97);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 97);\n}\n\n.ag-ltr .ag-row-group-indent-97 {\n padding-left: calc(97 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-97 {\n padding-right: calc(97 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-97 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-97 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 98);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 98);\n}\n\n.ag-ltr .ag-row-group-indent-98 {\n padding-left: calc(98 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-98 {\n padding-right: calc(98 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-98 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-98 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 99);\n}\n.ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 99);\n}\n\n.ag-ltr .ag-row-group-indent-99 {\n padding-left: calc(99 * var(--ag-row-group-indent-size));\n}\n.ag-rtl .ag-row-group-indent-99 {\n padding-right: calc(99 * var(--ag-row-group-indent-size));\n}\n\n.ag-ltr .ag-row-level-99 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-level-99 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-ltr .ag-row-group-leaf-indent {\n margin-left: var(--ag-row-group-indent-size);\n}\n.ag-rtl .ag-row-group-leaf-indent {\n margin-right: var(--ag-row-group-indent-size);\n}\n\n.ag-value-change-delta {\n padding-right: 2px;\n}\n\n.ag-value-change-delta-up {\n color: var(--ag-value-change-delta-up-color);\n}\n\n.ag-value-change-delta-down {\n color: var(--ag-value-change-delta-down-color);\n}\n\n.ag-value-change-value {\n background-color: transparent;\n border-radius: 1px;\n padding-left: 1px;\n padding-right: 1px;\n transition: background-color 1s;\n}\n\n.ag-value-change-value-highlight {\n background-color: var(--ag-value-change-value-highlight-background-color);\n transition: background-color 0.1s;\n}\n\n.ag-cell-data-changed {\n background-color: var(--ag-value-change-value-highlight-background-color) !important;\n}\n\n.ag-cell-data-changed-animation {\n background-color: transparent;\n}\n\n.ag-cell-highlight {\n background-color: var(--ag-range-selection-highlight-color) !important;\n}\n\n.ag-row {\n height: var(--ag-row-height);\n background-color: var(--ag-background-color);\n color: var(--ag-data-color);\n border-bottom: var(--ag-row-border-style) var(--ag-row-border-color) var(--ag-row-border-width);\n}\n\n.ag-row-highlight-above::after,\n.ag-row-highlight-below::after {\n content: '';\n position: absolute;\n width: calc(100% - 1px);\n height: 1px;\n background-color: var(--ag-range-selection-border-color);\n left: 1px;\n}\n\n.ag-row-highlight-above::after {\n top: -1px;\n}\n\n.ag-row-highlight-above.ag-row-first::after {\n top: 0;\n}\n\n.ag-row-highlight-below::after {\n bottom: 0px;\n}\n\n.ag-row-odd {\n background-color: var(--ag-odd-row-background-color);\n}\n\n.ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-left-spacer:not(.ag-scroller-corner) {\n border-right: var(--ag-borders-critical) var(--ag-border-color);\n}\n.ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-right-spacer:not(.ag-scroller-corner) {\n border-left: var(--ag-borders-critical) var(--ag-border-color);\n}\n\n.ag-row-selected::before {\n content: '';\n background-color: var(--ag-selected-row-background-color);\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n\n.ag-row-hover:not(.ag-full-width-row)::before,\n.ag-row-hover.ag-full-width-row.ag-row-group::before {\n content: '';\n background-color: var(--ag-row-hover-color);\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n}\n\n.ag-row-hover.ag-full-width-row.ag-row-group > * {\n position: relative;\n}\n\n.ag-row-hover.ag-row-selected::before {\n background-color: var(--ag-row-hover-color);\n background-image: linear-gradient(var(--ag-selected-row-background-color), var(--ag-selected-row-background-color));\n}\n\n.ag-column-hover {\n background-color: var(--ag-column-hover-color);\n}\n\n.ag-ltr .ag-right-aligned-cell {\n text-align: right;\n}\n.ag-rtl .ag-right-aligned-cell {\n text-align: left;\n}\n\n.ag-ltr .ag-right-aligned-cell .ag-cell-value,\n.ag-ltr .ag-right-aligned-cell .ag-group-value {\n margin-left: auto;\n}\n.ag-rtl .ag-right-aligned-cell .ag-cell-value,\n.ag-rtl .ag-right-aligned-cell .ag-group-value {\n margin-right: auto;\n}\n\n.ag-cell,\n.ag-full-width-row .ag-cell-wrapper.ag-row-group {\n --ag-internal-calculated-line-height: var(--ag-line-height, calc(var(--ag-row-height) - var(--ag-row-border-width)));\n --ag-internal-padded-row-height: calc(var(--ag-row-height) - var(--ag-row-border-width));\n border: 1px solid transparent;\n line-height: min(var(--ag-internal-calculated-line-height), var(--ag-internal-padded-row-height));\n padding-left: calc(var(--ag-cell-horizontal-padding) - 1px);\n padding-right: calc(var(--ag-cell-horizontal-padding) - 1px);\n -webkit-font-smoothing: subpixel-antialiased;\n}\n\n.ag-row > .ag-cell-wrapper {\n padding-left: calc(var(--ag-cell-horizontal-padding) - 1px);\n padding-right: calc(var(--ag-cell-horizontal-padding) - 1px);\n}\n\n.ag-row-dragging {\n cursor: move;\n opacity: 0.5;\n}\n\n.ag-cell-inline-editing {\n border: 1px solid var(--ag-border-color);\n border-radius: var(--ag-card-radius);\n box-shadow: var(--ag-card-shadow);\n padding: 0;\n background-color: var(--ag-control-panel-background-color);\n}\n\n.ag-popup-editor .ag-large-text,\n.ag-autocomplete-list-popup {\n border: var(--ag-borders) var(--ag-border-color);\n background: var(--ag-background-color);\n border-radius: var(--ag-card-radius);\n box-shadow: var(--ag-card-shadow);\n padding: var(--ag-grid-size);\n background-color: var(--ag-control-panel-background-color);\n padding: 0;\n}\n\n.ag-large-text-input {\n height: auto;\n padding: var(--ag-cell-horizontal-padding);\n}\n\n.ag-rtl .ag-large-text-input textarea {\n resize: none;\n}\n\n.ag-details-row {\n padding: calc(var(--ag-grid-size) * 5);\n background-color: var(--ag-background-color);\n}\n\n.ag-layout-auto-height .ag-center-cols-clipper,\n.ag-layout-auto-height .ag-center-cols-container,\n.ag-layout-print .ag-center-cols-clipper,\n.ag-layout-print .ag-center-cols-container {\n min-height: 50px;\n}\n\n.ag-overlay-loading-wrapper {\n background-color: var(--ag-modal-overlay-background-color);\n}\n\n.ag-overlay-loading-center {\n border: var(--ag-borders) var(--ag-border-color);\n background: var(--ag-background-color);\n border-radius: var(--ag-card-radius);\n box-shadow: var(--ag-card-shadow);\n padding: var(--ag-grid-size);\n}\n\n.ag-overlay-no-rows-wrapper.ag-layout-auto-height {\n padding-top: 30px;\n}\n\n.ag-loading {\n display: flex;\n height: 100%;\n align-items: center;\n}\n.ag-ltr .ag-loading {\n padding-left: var(--ag-cell-horizontal-padding);\n}\n.ag-rtl .ag-loading {\n padding-right: var(--ag-cell-horizontal-padding);\n}\n\n.ag-ltr .ag-loading-icon {\n padding-right: var(--ag-cell-widget-spacing);\n}\n.ag-rtl .ag-loading-icon {\n padding-left: var(--ag-cell-widget-spacing);\n}\n\n.ag-icon-loading {\n animation-name: spin;\n animation-duration: 1000ms;\n animation-iteration-count: infinite;\n animation-timing-function: linear;\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n.ag-floating-top {\n border-bottom: var(--ag-borders-critical) var(--ag-border-color);\n}\n\n.ag-floating-bottom {\n border-top: var(--ag-borders-critical) var(--ag-border-color);\n}\n\n.ag-ltr .ag-cell {\n border-right: var(--ag-cell-horizontal-border);\n}\n.ag-rtl .ag-cell {\n border-left: var(--ag-cell-horizontal-border);\n}\n.ag-ltr .ag-cell {\n border-right-width: 1px;\n}\n.ag-rtl .ag-cell {\n border-left-width: 1px;\n}\n\n.ag-cell.ag-cell-first-right-pinned:not(.ag-cell-range-left):not(.ag-cell-range-single-cell) {\n border-left: var(--ag-borders-critical) var(--ag-border-color);\n}\n\n.ag-cell.ag-cell-last-left-pinned:not(.ag-cell-range-right):not(.ag-cell-range-single-cell) {\n border-right: var(--ag-borders-critical) var(--ag-border-color);\n}\n\n.ag-cell-range-selected:not(.ag-cell-focus),\n.ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing) {\n background-color: var(--ag-range-selection-background-color);\n}\n.ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart,\n.ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart {\n background-color: var(--ag-range-selection-chart-background-color) !important;\n}\n.ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart.ag-cell-range-chart-category,\n.ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart.ag-cell-range-chart-category {\n background-color: var(--ag-range-selection-chart-category-background-color) !important;\n}\n\n.ag-cell-range-selected-1:not(.ag-cell-focus),\n.ag-root:not(.ag-context-menu-open) .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-1:not(.ag-cell-inline-editing) {\n background-color: var(--ag-range-selection-background-color);\n}\n\n.ag-cell-range-selected-2:not(.ag-cell-focus),\n.ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-2 {\n background-color: var(--ag-range-selection-background-color-2);\n}\n\n.ag-cell-range-selected-3:not(.ag-cell-focus),\n.ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-3 {\n background-color: var(--ag-range-selection-background-color-3);\n}\n\n.ag-cell-range-selected-4:not(.ag-cell-focus),\n.ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-4 {\n background-color: var(--ag-range-selection-background-color-4);\n}\n\n.ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-top {\n border-top-color: var(--ag-range-selection-border-color);\n border-top-style: var(--ag-range-selection-border-style);\n}\n.ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-right {\n border-right-color: var(--ag-range-selection-border-color);\n border-right-style: var(--ag-range-selection-border-style);\n}\n.ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-bottom {\n border-bottom-color: var(--ag-range-selection-border-color);\n border-bottom-style: var(--ag-range-selection-border-style);\n}\n.ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-left {\n border-left-color: var(--ag-range-selection-border-color);\n border-left-style: var(--ag-range-selection-border-style);\n}\n\n.ag-ltr .ag-cell-focus:not(.ag-cell-range-selected):focus-within,\n.ag-ltr .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-ltr .ag-full-width-row.ag-row-focus:focus .ag-cell-wrapper.ag-row-group,\n.ag-ltr .ag-cell-range-single-cell,\n.ag-ltr .ag-cell-range-single-cell.ag-cell-range-handle,\n.ag-rtl .ag-cell-focus:not(.ag-cell-range-selected):focus-within,\n.ag-rtl .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-rtl .ag-full-width-row.ag-row-focus:focus .ag-cell-wrapper.ag-row-group,\n.ag-rtl .ag-cell-range-single-cell,\n.ag-rtl .ag-cell-range-single-cell.ag-cell-range-handle {\n border: 1px solid;\n border-color: var(--ag-range-selection-border-color);\n border-style: var(--ag-range-selection-border-style);\n outline: initial;\n}\n\n.ag-cell.ag-selection-fill-top,\n.ag-cell.ag-selection-fill-top.ag-cell-range-selected {\n border-top: 1px dashed;\n border-top-color: var(--ag-range-selection-border-color);\n}\n\n.ag-ltr .ag-cell.ag-selection-fill-right,\n.ag-ltr .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-right: 1px dashed var(--ag-range-selection-border-color) !important;\n}\n.ag-rtl .ag-cell.ag-selection-fill-right,\n.ag-rtl .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-left: 1px dashed var(--ag-range-selection-border-color) !important;\n}\n\n.ag-cell.ag-selection-fill-bottom,\n.ag-cell.ag-selection-fill-bottom.ag-cell-range-selected {\n border-bottom: 1px dashed;\n border-bottom-color: var(--ag-range-selection-border-color);\n}\n\n.ag-ltr .ag-cell.ag-selection-fill-left,\n.ag-ltr .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-left: 1px dashed var(--ag-range-selection-border-color) !important;\n}\n.ag-rtl .ag-cell.ag-selection-fill-left,\n.ag-rtl .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-right: 1px dashed var(--ag-range-selection-border-color) !important;\n}\n\n.ag-fill-handle,\n.ag-range-handle {\n position: absolute;\n width: 6px;\n height: 6px;\n bottom: -1px;\n background-color: var(--ag-range-selection-border-color);\n}\n.ag-ltr .ag-fill-handle,\n.ag-ltr .ag-range-handle {\n right: -1px;\n}\n.ag-rtl .ag-fill-handle,\n.ag-rtl .ag-range-handle {\n left: -1px;\n}\n\n.ag-fill-handle {\n cursor: cell;\n}\n\n.ag-range-handle {\n cursor: nwse-resize;\n}\n\n.ag-cell-inline-editing {\n border-color: var(--ag-input-focus-border-color) !important;\n}\n\n.ag-menu {\n border: var(--ag-borders) var(--ag-border-color);\n background: var(--ag-background-color);\n border-radius: var(--ag-card-radius);\n box-shadow: var(--ag-card-shadow);\n padding: var(--ag-grid-size);\n padding: 0;\n}\n\n.ag-menu-list {\n cursor: default;\n padding: var(--ag-grid-size) 0;\n}\n\n.ag-menu-separator {\n height: calc(var(--ag-grid-size) * 2 + 1px);\n}\n\n.ag-menu-separator-part::after {\n content: '';\n display: block;\n border-top: var(--ag-borders-critical) var(--ag-border-color);\n}\n\n.ag-menu-option-active,\n.ag-compact-menu-option-active {\n background-color: var(--ag-row-hover-color);\n}\n\n.ag-menu-option-part,\n.ag-compact-menu-option-part {\n line-height: var(--ag-icon-size);\n padding: calc(var(--ag-grid-size) + 2px) 0;\n}\n\n.ag-menu-option-disabled,\n.ag-compact-menu-option-disabled {\n opacity: 0.5;\n}\n\n.ag-menu-option-icon,\n.ag-compact-menu-option-icon {\n width: var(--ag-icon-size);\n}\n.ag-ltr .ag-menu-option-icon,\n.ag-ltr .ag-compact-menu-option-icon {\n padding-left: calc(var(--ag-grid-size) * 2);\n}\n.ag-rtl .ag-menu-option-icon,\n.ag-rtl .ag-compact-menu-option-icon {\n padding-right: calc(var(--ag-grid-size) * 2);\n}\n\n.ag-menu-option-text,\n.ag-compact-menu-option-text {\n padding-left: calc(var(--ag-grid-size) * 2);\n padding-right: calc(var(--ag-grid-size) * 2);\n}\n\n.ag-ltr .ag-menu-option-shortcut,\n.ag-ltr .ag-compact-menu-option-shortcut {\n padding-right: var(--ag-grid-size);\n}\n.ag-rtl .ag-menu-option-shortcut,\n.ag-rtl .ag-compact-menu-option-shortcut {\n padding-left: var(--ag-grid-size);\n}\n\n.ag-menu-option-popup-pointer,\n.ag-compact-menu-option-popup-pointer {\n padding-right: var(--ag-grid-size);\n}\n\n.ag-tabs {\n min-width: var(--ag-tab-min-width);\n}\n\n.ag-tabs-header {\n width: 100%;\n display: flex;\n}\n\n.ag-tab {\n border-bottom: var(--ag-selected-tab-underline-width) solid transparent;\n transition: border-bottom var(--ag-selected-tab-underline-transition-speed);\n display: flex;\n flex: none;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n}\n\n.ag-keyboard-focus .ag-tab:focus {\n outline: none;\n}\n.ag-keyboard-focus .ag-tab:focus::after {\n content: '';\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n\n.ag-tab-selected {\n border-bottom-color: var(--ag-selected-tab-underline-color);\n}\n\n.ag-menu-header {\n color: var(--ag-secondary-foreground-color);\n}\n\n.ag-filter-separator {\n border-top: var(--ag-borders-critical) var(--ag-border-color);\n}\n\n.ag-filter-select .ag-picker-field-wrapper {\n width: 0;\n}\n\n.ag-filter-condition-operator {\n height: 17px;\n}\n\n.ag-ltr .ag-filter-condition-operator-or {\n margin-left: calc(var(--ag-grid-size) * 2);\n}\n.ag-rtl .ag-filter-condition-operator-or {\n margin-right: calc(var(--ag-grid-size) * 2);\n}\n\n.ag-set-filter-select-all {\n padding-top: var(--ag-widget-container-vertical-padding);\n}\n\n.ag-set-filter-list,\n.ag-filter-no-matches {\n height: calc(var(--ag-list-item-height) * 6);\n}\n\n.ag-set-filter-tree-list {\n height: calc(var(--ag-list-item-height) * 10);\n}\n\n.ag-set-filter-filter {\n margin-top: var(--ag-widget-container-vertical-padding);\n margin-left: var(--ag-widget-container-horizontal-padding);\n margin-right: var(--ag-widget-container-horizontal-padding);\n}\n\n.ag-filter-to {\n margin-top: var(--ag-widget-vertical-spacing);\n}\n\n.ag-mini-filter {\n margin: var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);\n}\n\n.ag-set-filter-item {\n margin: 0px var(--ag-widget-container-horizontal-padding);\n}\n\n.ag-ltr .ag-set-filter-add-group-indent {\n margin-left: calc(var(--ag-widget-container-horizontal-padding) + var(--ag-icon-size) + var(--ag-grid-size) * 2);\n}\n.ag-rtl .ag-set-filter-add-group-indent {\n margin-right: calc(var(--ag-widget-container-horizontal-padding) + var(--ag-icon-size) + var(--ag-grid-size) * 2);\n}\n\n.ag-ltr .ag-set-filter-indent-1 {\n padding-left: calc(1 * var(--ag-set-filter-indent-size));\n}\n.ag-rtl .ag-set-filter-indent-1 {\n padding-right: calc(1 * var(--ag-set-filter-indent-size));\n}\n\n.ag-ltr .ag-set-filter-indent-2 {\n padding-left: calc(2 * var(--ag-set-filter-indent-size));\n}\n.ag-rtl .ag-set-filter-indent-2 {\n padding-right: calc(2 * var(--ag-set-filter-indent-size));\n}\n\n.ag-ltr .ag-set-filter-indent-3 {\n padding-left: calc(3 * var(--ag-set-filter-indent-size));\n}\n.ag-rtl .ag-set-filter-indent-3 {\n padding-right: calc(3 * var(--ag-set-filter-indent-size));\n}\n\n.ag-ltr .ag-set-filter-indent-4 {\n padding-left: calc(4 * var(--ag-set-filter-indent-size));\n}\n.ag-rtl .ag-set-filter-indent-4 {\n padding-right: calc(4 * var(--ag-set-filter-indent-size));\n}\n\n.ag-ltr .ag-set-filter-indent-5 {\n padding-left: calc(5 * var(--ag-set-filter-indent-size));\n}\n.ag-rtl .ag-set-filter-indent-5 {\n padding-right: calc(5 * var(--ag-set-filter-indent-size));\n}\n\n.ag-ltr .ag-set-filter-indent-6 {\n padding-left: calc(6 * var(--ag-set-filter-indent-size));\n}\n.ag-rtl .ag-set-filter-indent-6 {\n padding-right: calc(6 * var(--ag-set-filter-indent-size));\n}\n\n.ag-ltr .ag-set-filter-indent-7 {\n padding-left: calc(7 * var(--ag-set-filter-indent-size));\n}\n.ag-rtl .ag-set-filter-indent-7 {\n padding-right: calc(7 * var(--ag-set-filter-indent-size));\n}\n\n.ag-ltr .ag-set-filter-indent-8 {\n padding-left: calc(8 * var(--ag-set-filter-indent-size));\n}\n.ag-rtl .ag-set-filter-indent-8 {\n padding-right: calc(8 * var(--ag-set-filter-indent-size));\n}\n\n.ag-ltr .ag-set-filter-indent-9 {\n padding-left: calc(9 * var(--ag-set-filter-indent-size));\n}\n.ag-rtl .ag-set-filter-indent-9 {\n padding-right: calc(9 * var(--ag-set-filter-indent-size));\n}\n\n.ag-ltr .ag-set-filter-group-icons {\n margin-right: var(--ag-widget-container-horizontal-padding);\n}\n.ag-rtl .ag-set-filter-group-icons {\n margin-left: var(--ag-widget-container-horizontal-padding);\n}\n\n.ag-filter-apply-panel {\n padding: var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);\n border-top: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n}\n\n.ag-filter-apply-panel-button {\n line-height: 1.5;\n}\n.ag-ltr .ag-filter-apply-panel-button {\n margin-left: calc(var(--ag-grid-size) * 2);\n}\n.ag-rtl .ag-filter-apply-panel-button {\n margin-right: calc(var(--ag-grid-size) * 2);\n}\n\n.ag-simple-filter-body-wrapper {\n padding: var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);\n padding-bottom: calc(var(--ag-widget-container-vertical-padding) - var(--ag-widget-vertical-spacing));\n overflow-y: auto;\n min-height: calc(var(--ag-list-item-height) + var(--ag-widget-container-vertical-padding) + var(--ag-widget-vertical-spacing));\n}\n.ag-simple-filter-body-wrapper > * {\n margin-bottom: var(--ag-widget-vertical-spacing);\n}\n.ag-simple-filter-body-wrapper .ag-resizer-wrapper {\n margin: 0;\n}\n\n.ag-menu:not(.ag-tabs) .ag-filter .ag-simple-filter-body-wrapper,\n.ag-menu:not(.ag-tabs) .ag-filter > *:not(.ag-filter-wrapper) {\n min-width: calc(var(--ag-menu-min-width) - 2px);\n}\n\n.ag-filter-no-matches {\n padding: var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);\n}\n\n.ag-multi-filter-menu-item {\n margin: var(--ag-grid-size) 0;\n}\n\n.ag-multi-filter-group-title-bar {\n padding: calc(var(--ag-grid-size) * 2) var(--ag-grid-size);\n background-color: transparent;\n}\n\n.ag-group-filter-field-select-wrapper {\n padding: var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);\n padding-bottom: calc(var(--ag-widget-container-vertical-padding) - var(--ag-widget-vertical-spacing));\n}\n.ag-group-filter-field-select-wrapper > * {\n margin-bottom: var(--ag-widget-vertical-spacing);\n}\n\n.ag-keyboard-focus .ag-multi-filter-group-title-bar:focus {\n outline: none;\n}\n.ag-keyboard-focus .ag-multi-filter-group-title-bar:focus::after {\n content: '';\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n\n.ag-side-bar {\n position: relative;\n}\n\n.ag-tool-panel-wrapper {\n width: var(--ag-side-bar-panel-width);\n background-color: var(--ag-control-panel-background-color);\n}\n\n.ag-side-buttons {\n padding-top: calc(var(--ag-grid-size) * 4);\n width: calc(var(--ag-icon-size) + 4px);\n position: relative;\n overflow: hidden;\n}\n\nbutton.ag-side-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n background: transparent;\n padding: calc(var(--ag-grid-size) * 2) 0 calc(var(--ag-grid-size) * 2) 0;\n width: 100%;\n margin: 0;\n min-height: calc(var(--ag-grid-size) * 18);\n background-position-y: center;\n background-position-x: center;\n background-repeat: no-repeat;\n border: none;\n border-top: var(--ag-borders-side-button) var(--ag-border-color);\n border-bottom: var(--ag-borders-side-button) var(--ag-border-color);\n}\nbutton.ag-side-button-button:focus {\n box-shadow: none;\n}\n\n.ag-keyboard-focus .ag-side-button-button:focus {\n outline: none;\n}\n.ag-keyboard-focus .ag-side-button-button:focus::after {\n content: '';\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n\n.ag-selected button.ag-side-button-button {\n background-color: var(--ag-side-button-selected-background-color);\n}\n\n.ag-side-button-icon-wrapper {\n margin-bottom: 3px;\n}\n\n.ag-ltr .ag-side-bar-left,\n.ag-rtl .ag-side-bar-right {\n border-right: var(--ag-borders) var(--ag-border-color);\n}\n.ag-ltr .ag-side-bar-left .ag-tool-panel-wrapper,\n.ag-rtl .ag-side-bar-right .ag-tool-panel-wrapper {\n border-left: var(--ag-borders) var(--ag-border-color);\n}\n.ag-ltr .ag-side-bar-left .ag-side-button-button,\n.ag-rtl .ag-side-bar-right .ag-side-button-button {\n border-right: var(--ag-selected-tab-underline-width) solid transparent;\n transition: border-right var(--ag-selected-tab-underline-transition-speed);\n}\n.ag-ltr .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-rtl .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-right-color: var(--ag-selected-tab-underline-color);\n}\n\n.ag-rtl .ag-side-bar-left,\n.ag-ltr .ag-side-bar-right {\n border-left: var(--ag-borders) var(--ag-border-color);\n}\n.ag-rtl .ag-side-bar-left .ag-tool-panel-wrapper,\n.ag-ltr .ag-side-bar-right .ag-tool-panel-wrapper {\n border-right: var(--ag-borders) var(--ag-border-color);\n}\n.ag-rtl .ag-side-bar-left .ag-side-button-button,\n.ag-ltr .ag-side-bar-right .ag-side-button-button {\n border-left: var(--ag-selected-tab-underline-width) solid transparent;\n transition: border-left var(--ag-selected-tab-underline-transition-speed);\n}\n.ag-rtl .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-ltr .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-left-color: var(--ag-selected-tab-underline-color);\n}\n\n.ag-filter-toolpanel-header {\n height: calc(var(--ag-grid-size) * 6);\n}\n\n.ag-ltr .ag-filter-toolpanel-header,\n.ag-ltr .ag-filter-toolpanel-search {\n padding-left: var(--ag-grid-size);\n}\n.ag-rtl .ag-filter-toolpanel-header,\n.ag-rtl .ag-filter-toolpanel-search {\n padding-right: var(--ag-grid-size);\n}\n\n.ag-keyboard-focus .ag-filter-toolpanel-header:focus {\n outline: none;\n}\n.ag-keyboard-focus .ag-filter-toolpanel-header:focus::after {\n content: '';\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n\n.ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n font-family: var(--ag-icon-font-family);\n font-size: var(--ag-icon-size);\n line-height: var(--ag-icon-size);\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n content: var(--ag-icon-font-code-filter, '\\f115');\n position: absolute;\n}\n.ag-ltr .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-left: var(--ag-grid-size);\n}\n.ag-rtl .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-right: var(--ag-grid-size);\n}\n\n.ag-filter-toolpanel-group-level-0-header {\n height: calc(var(--ag-grid-size) * 8);\n}\n\n.ag-filter-toolpanel-group-item {\n margin-top: calc(var(--ag-grid-size) * 0.5);\n margin-bottom: calc(var(--ag-grid-size) * 0.5);\n}\n\n.ag-filter-toolpanel-search {\n height: var(--ag-header-height);\n}\n\n.ag-filter-toolpanel-search-input {\n flex-grow: 1;\n height: calc(var(--ag-grid-size) * 4);\n}\n.ag-ltr .ag-filter-toolpanel-search-input {\n margin-right: var(--ag-grid-size);\n}\n.ag-rtl .ag-filter-toolpanel-search-input {\n margin-left: var(--ag-grid-size);\n}\n\n.ag-filter-toolpanel-group-level-0 {\n border-top: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n}\n\n.ag-ltr .ag-filter-toolpanel-expand,\n.ag-ltr .ag-filter-toolpanel-group-title-bar-icon {\n margin-right: var(--ag-grid-size);\n}\n.ag-rtl .ag-filter-toolpanel-expand,\n.ag-rtl .ag-filter-toolpanel-group-title-bar-icon {\n margin-left: var(--ag-grid-size);\n}\n\n.ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-1-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-ltr .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 1 + var(--ag-grid-size));\n}\n.ag-rtl .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 1 + var(--ag-grid-size));\n}\n\n.ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-2-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-ltr .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 2 + var(--ag-grid-size));\n}\n.ag-rtl .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 2 + var(--ag-grid-size));\n}\n\n.ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-3-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-ltr .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 3 + var(--ag-grid-size));\n}\n.ag-rtl .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 3 + var(--ag-grid-size));\n}\n\n.ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-4-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-ltr .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 4 + var(--ag-grid-size));\n}\n.ag-rtl .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 4 + var(--ag-grid-size));\n}\n\n.ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-5-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-ltr .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 5 + var(--ag-grid-size));\n}\n.ag-rtl .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 5 + var(--ag-grid-size));\n}\n\n.ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-6-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-ltr .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 6 + var(--ag-grid-size));\n}\n.ag-rtl .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 6 + var(--ag-grid-size));\n}\n\n.ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-7-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-ltr .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 7 + var(--ag-grid-size));\n}\n.ag-rtl .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 7 + var(--ag-grid-size));\n}\n\n.ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-8-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-ltr .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 8 + var(--ag-grid-size));\n}\n.ag-rtl .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 8 + var(--ag-grid-size));\n}\n\n.ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-9-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-ltr .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 9 + var(--ag-grid-size));\n}\n.ag-rtl .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 9 + var(--ag-grid-size));\n}\n\n.ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-10-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-ltr .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 10 + var(--ag-grid-size));\n}\n.ag-rtl .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 10 + var(--ag-grid-size));\n}\n\n.ag-filter-toolpanel-instance-header.ag-filter-toolpanel-group-level-1-header {\n padding-left: var(--ag-grid-size);\n}\n\n.ag-filter-toolpanel-instance-filter {\n border-bottom: var(--ag-borders) var(--ag-border-color);\n border-top: var(--ag-borders) var(--ag-border-color);\n margin-top: var(--ag-grid-size);\n}\n\n.ag-ltr .ag-filter-toolpanel-instance-header-icon {\n margin-left: var(--ag-grid-size);\n}\n.ag-rtl .ag-filter-toolpanel-instance-header-icon {\n margin-right: var(--ag-grid-size);\n}\n\n.ag-set-filter-group-icons {\n color: var(--ag-secondary-foreground-color);\n}\n\n.ag-pivot-mode-panel {\n min-height: var(--ag-header-height);\n height: var(--ag-header-height);\n display: flex;\n}\n\n.ag-pivot-mode-select {\n display: flex;\n align-items: center;\n}\n.ag-ltr .ag-pivot-mode-select {\n margin-left: var(--ag-widget-container-horizontal-padding);\n}\n.ag-rtl .ag-pivot-mode-select {\n margin-right: var(--ag-widget-container-horizontal-padding);\n}\n\n.ag-keyboard-focus .ag-column-select-header:focus {\n outline: none;\n}\n.ag-keyboard-focus .ag-column-select-header:focus::after {\n content: '';\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n\n.ag-column-select-header {\n height: var(--ag-header-height);\n align-items: center;\n padding: 0 var(--ag-widget-container-horizontal-padding);\n border-bottom: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n}\n\n.ag-column-panel-column-select {\n border-bottom: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n border-top: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n}\n\n.ag-column-group-icons,\n.ag-column-select-header-icon {\n color: var(--ag-secondary-foreground-color);\n}\n\n.ag-column-select-list .ag-list-item-hovered::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: var(--ag-range-selection-border-color);\n}\n.ag-column-select-list .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-column-select-list .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n\n.ag-header,\n.ag-advanced-filter-header {\n background-color: var(--primary-color);\n border-bottom: var(--ag-borders-critical) var(--ag-border-color);\n}\n\n.ag-header-row {\n color: var(--ag-header-foreground-color);\n height: var(--ag-header-height);\n background-color: #344861;\n}\n\n.ag-pinned-right-header {\n border-left: var(--ag-borders-critical) var(--ag-border-color);\n}\n\n.ag-pinned-left-header {\n border-right: var(--ag-borders-critical) var(--ag-border-color);\n}\n\n.ag-ltr .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-left: var(--ag-grid-size);\n}\n.ag-rtl .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-right: var(--ag-grid-size);\n}\n\n.ag-ltr .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-right: var(--ag-grid-size);\n}\n.ag-rtl .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-left: var(--ag-grid-size);\n}\n\n.ag-header-cell,\n.ag-header-group-cell {\n padding-left: var(--ag-cell-horizontal-padding);\n padding-right: var(--ag-cell-horizontal-padding);\n}\n.ag-header-cell.ag-header-cell-moving,\n.ag-header-group-cell.ag-header-cell-moving {\n background-color: var(--ag-header-cell-moving-background-color);\n}\n\n.ag-ltr .ag-header-group-cell-label.ag-sticky-label {\n left: var(--ag-cell-horizontal-padding);\n}\n.ag-rtl .ag-header-group-cell-label.ag-sticky-label {\n right: var(--ag-cell-horizontal-padding);\n}\n\n.ag-header-cell.ag-header-span-height::after,\n.ag-header-cell.ag-header-span-height .ag-header-cell-resize::after {\n height: calc(100% - var(--ag-grid-size) * 4);\n top: calc(var(--ag-grid-size) * 2);\n}\n\n.ag-keyboard-focus .ag-header-cell:focus {\n outline: none;\n}\n.ag-keyboard-focus .ag-header-cell:focus::after {\n content: '';\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-keyboard-focus .ag-header-group-cell:focus {\n outline: none;\n}\n.ag-keyboard-focus .ag-header-group-cell:focus::after {\n content: '';\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-keyboard-focus .ag-advanced-filter-header-cell:focus {\n outline: none;\n}\n.ag-keyboard-focus .ag-advanced-filter-header-cell:focus::after {\n content: '';\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n\n.ag-header-icon {\n color: var(--ag-secondary-foreground-color);\n}\n\n.ag-header-expand-icon {\n cursor: pointer;\n}\n.ag-ltr .ag-header-expand-icon {\n padding-left: 4px;\n}\n.ag-rtl .ag-header-expand-icon {\n padding-right: 4px;\n}\n\n.ag-header-row:not(:first-child) .ag-header-cell:not(.ag-header-span-height.ag-header-span-total),\n.ag-header-row:not(:first-child) .ag-header-group-cell.ag-header-group-cell-with-group {\n border-top: var(--ag-borders-critical) var(--ag-border-color);\n}\n\n.ag-header-group-cell:not(.ag-column-resizing) + .ag-header-group-cell:not(.ag-column-hover):not(.ag-header-cell-moving):hover,\n.ag-header-group-cell:not(.ag-column-resizing) + .ag-header-group-cell:not(.ag-column-hover).ag-column-resizing,\n.ag-header-cell:not(.ag-column-resizing) + .ag-header-cell:not(.ag-column-hover):not(.ag-header-cell-moving):hover,\n.ag-header-cell:not(.ag-column-resizing) + .ag-header-cell:not(.ag-column-hover).ag-column-resizing,\n.ag-header-group-cell:first-of-type:not(.ag-header-cell-moving):hover,\n.ag-header-group-cell:first-of-type.ag-column-resizing,\n.ag-header-cell:not(.ag-column-hover):first-of-type:not(.ag-header-cell-moving):hover,\n.ag-header-cell:not(.ag-column-hover):first-of-type.ag-column-resizing {\n background-color: var(--ag-header-cell-hover-background-color);\n}\n\n.ag-header-cell::after,\n.ag-header-group-cell::after {\n content: '';\n position: absolute;\n z-index: 1;\n display: var(--ag-header-column-separator-display);\n width: var(--ag-header-column-separator-width);\n height: var(--ag-header-column-separator-height);\n top: calc(50% - var(--ag-header-column-separator-height) * 0.5);\n background-color: var(--ag-header-column-separator-color);\n}\n.ag-ltr .ag-header-cell::after,\n.ag-ltr .ag-header-group-cell::after {\n right: 0;\n}\n.ag-rtl .ag-header-cell::after,\n.ag-rtl .ag-header-group-cell::after {\n left: 0;\n}\n\n.ag-header-cell-resize {\n display: flex;\n align-items: center;\n}\n\n.ag-header-cell-resize::after {\n content: '';\n position: absolute;\n z-index: 1;\n display: var(--ag-header-column-resize-handle-display);\n width: var(--ag-header-column-resize-handle-width);\n height: var(--ag-header-column-resize-handle-height);\n top: calc(50% - var(--ag-header-column-resize-handle-height) * 0.5);\n background-color: var(--ag-header-column-resize-handle-color);\n}\n\n.ag-header-cell.ag-header-span-height::after,\n.ag-header-cell.ag-header-span-height .ag-header-cell-resize::after {\n height: calc(100% - var(--ag-grid-size) * 4);\n top: calc(var(--ag-grid-size) * 2);\n}\n\n.ag-ltr .ag-header-viewport .ag-header-cell-resize::after {\n left: calc(50% - var(--ag-header-column-resize-handle-width));\n}\n.ag-rtl .ag-header-viewport .ag-header-cell-resize::after {\n right: calc(50% - var(--ag-header-column-resize-handle-width));\n}\n\n.ag-pinned-left-header .ag-header-cell-resize::after {\n left: calc(50% - var(--ag-header-column-resize-handle-width));\n}\n\n.ag-pinned-right-header .ag-header-cell-resize::after {\n left: 50%;\n}\n\n.ag-ltr .ag-header-select-all {\n margin-right: var(--ag-cell-horizontal-padding);\n}\n.ag-rtl .ag-header-select-all {\n margin-left: var(--ag-cell-horizontal-padding);\n}\n\n.ag-ltr .ag-floating-filter-button {\n margin-left: calc(var(--ag-grid-size) * 3);\n}\n.ag-rtl .ag-floating-filter-button {\n margin-right: calc(var(--ag-grid-size) * 3);\n}\n\n.ag-floating-filter-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n appearance: none;\n background: transparent;\n border: none;\n height: var(--ag-icon-size);\n padding: 0;\n width: var(--ag-icon-size);\n}\n\n.ag-filter-loading {\n background-color: var(--ag-control-panel-background-color);\n height: 100%;\n padding: var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);\n position: absolute;\n width: 100%;\n z-index: 1;\n}\n\n.ag-paging-panel {\n border-top: 1px solid;\n border-top-color: var(--ag-border-color);\n color: var(--ag-secondary-foreground-color);\n height: var(--ag-header-height);\n}\n.ag-paging-panel > * {\n margin: 0 var(--ag-cell-horizontal-padding);\n}\n\n.ag-paging-button {\n cursor: pointer;\n}\n\n.ag-paging-button.ag-disabled {\n cursor: default;\n color: var(--ag-disabled-foreground-color);\n}\n\n.ag-keyboard-focus .ag-paging-button:focus {\n outline: none;\n}\n.ag-keyboard-focus .ag-paging-button:focus::after {\n content: '';\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n\n.ag-paging-button,\n.ag-paging-description {\n margin: 0 var(--ag-grid-size);\n}\n\n.ag-status-bar {\n border-top: var(--ag-borders) var(--ag-border-color);\n color: var(--ag-disabled-foreground-color);\n padding-right: calc(var(--ag-grid-size) * 4);\n padding-left: calc(var(--ag-grid-size) * 4);\n line-height: 1.5;\n}\n\n.ag-status-name-value-value {\n color: var(--ag-foreground-color);\n}\n\n.ag-status-bar-center {\n text-align: center;\n}\n\n.ag-status-name-value {\n margin-left: var(--ag-grid-size);\n margin-right: var(--ag-grid-size);\n padding-top: calc(var(--ag-grid-size) * 2);\n padding-bottom: calc(var(--ag-grid-size) * 2);\n}\n\n.ag-column-drop-cell {\n background: var(--ag-chip-background-color);\n border-radius: calc(var(--ag-grid-size) * 4);\n height: calc(var(--ag-grid-size) * 4);\n padding: 0 calc(var(--ag-grid-size) * 0.5);\n border: 1px solid transparent;\n}\n\n.ag-keyboard-focus .ag-column-drop-cell:focus {\n outline: none;\n}\n.ag-keyboard-focus .ag-column-drop-cell:focus::after {\n content: '';\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 2px;\n left: 2px;\n display: block;\n width: calc(100% - 4px);\n height: calc(100% - 4px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n\n.ag-column-drop-cell-text {\n margin: 0 var(--ag-grid-size);\n}\n\n.ag-column-drop-cell-button {\n min-width: calc(var(--ag-grid-size) * 4);\n margin: 0 calc(var(--ag-grid-size) * 0.5);\n color: var(--ag-secondary-foreground-color);\n}\n\n.ag-column-drop-cell-drag-handle {\n margin-left: calc(var(--ag-grid-size) * 2);\n}\n\n.ag-column-drop-cell-ghost {\n opacity: 0.5;\n}\n\n.ag-column-drop-horizontal {\n background-color: var(--ag-control-panel-background-color);\n color: var(--ag-secondary-foreground-color);\n height: var(--ag-row-height);\n border-bottom: var(--ag-borders) var(--ag-border-color);\n}\n.ag-ltr .ag-column-drop-horizontal {\n padding-left: var(--ag-cell-horizontal-padding);\n}\n.ag-rtl .ag-column-drop-horizontal {\n padding-right: var(--ag-cell-horizontal-padding);\n}\n\n.ag-ltr .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-right: var(--ag-borders) var(--ag-border-color);\n}\n.ag-rtl .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-left: var(--ag-borders) var(--ag-border-color);\n}\n\n.ag-column-drop-horizontal-cell-separator {\n margin: 0 var(--ag-grid-size);\n color: var(--ag-secondary-foreground-color);\n}\n\n.ag-column-drop-horizontal-empty-message {\n color: var(--ag-disabled-foreground-color);\n}\n\n.ag-ltr .ag-column-drop-horizontal-icon {\n margin-right: var(--ag-cell-horizontal-padding);\n}\n.ag-rtl .ag-column-drop-horizontal-icon {\n margin-left: var(--ag-cell-horizontal-padding);\n}\n\n.ag-column-drop-vertical-list {\n padding-bottom: var(--ag-grid-size);\n padding-right: var(--ag-grid-size);\n padding-left: var(--ag-grid-size);\n}\n\n.ag-column-drop-vertical-cell {\n margin-top: var(--ag-grid-size);\n}\n\n.ag-column-drop-vertical {\n min-height: 50px;\n border-bottom: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n}\n.ag-column-drop-vertical.ag-last-column-drop {\n border-bottom: none;\n}\n\n.ag-column-drop-vertical-icon {\n margin-left: var(--ag-grid-size);\n margin-right: var(--ag-grid-size);\n}\n\n.ag-column-drop-vertical-empty-message {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n color: var(--ag-disabled-foreground-color);\n margin-top: var(--ag-grid-size);\n}\n\n.ag-select-agg-func-popup {\n border: var(--ag-borders) var(--ag-border-color);\n background: var(--ag-background-color);\n border-radius: var(--ag-card-radius);\n box-shadow: var(--ag-card-shadow);\n padding: var(--ag-grid-size);\n background: var(--ag-background-color);\n height: calc(var(--ag-grid-size) * 5 * 3.5);\n padding: 0;\n}\n\n.ag-select-agg-func-virtual-list-item {\n cursor: default;\n}\n.ag-ltr .ag-select-agg-func-virtual-list-item {\n padding-left: calc(var(--ag-grid-size) * 2);\n}\n.ag-rtl .ag-select-agg-func-virtual-list-item {\n padding-right: calc(var(--ag-grid-size) * 2);\n}\n.ag-select-agg-func-virtual-list-item:hover {\n background-color: var(--ag-selected-row-background-color);\n}\n\n.ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus {\n outline: none;\n}\n.ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus::after {\n content: '';\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n\n.ag-sort-indicator-container {\n display: flex;\n}\n\n.ag-ltr .ag-sort-indicator-icon {\n padding-left: var(--ag-grid-size);\n}\n.ag-rtl .ag-sort-indicator-icon {\n padding-right: var(--ag-grid-size);\n}\n\n.ag-chart {\n position: relative;\n display: flex;\n overflow: hidden;\n width: 100%;\n height: 100%;\n}\n\n.ag-chart-components-wrapper {\n position: relative;\n display: flex;\n flex: 1 1 auto;\n overflow: hidden;\n}\n\n.ag-chart-title-edit {\n position: absolute;\n display: none;\n top: 0;\n left: 0;\n text-align: center;\n}\n\n.ag-chart-title-edit.currently-editing {\n display: inline-block;\n}\n\n.ag-chart-canvas-wrapper {\n position: relative;\n flex: 1 1 auto;\n overflow: hidden;\n}\n\n.ag-charts-canvas {\n display: block;\n}\n\n.ag-chart-menu {\n position: absolute;\n top: 10px;\n width: 24px;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n.ag-ltr .ag-chart-menu {\n right: 20px;\n}\n.ag-rtl .ag-chart-menu {\n left: 20px;\n}\n\n.ag-chart-docked-container {\n position: relative;\n width: 0;\n min-width: 0;\n transition: min-width 0.4s;\n}\n\n.ag-chart-menu-hidden ~ .ag-chart-docked-container {\n max-width: 0;\n overflow: hidden;\n}\n\n.ag-chart-tabbed-menu {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.ag-chart-tabbed-menu-header {\n flex: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n}\n\n.ag-chart-tabbed-menu-body {\n display: flex;\n flex: 1 1 auto;\n align-items: stretch;\n overflow: hidden;\n}\n\n.ag-chart-tab {\n width: 100%;\n overflow: hidden;\n overflow-y: auto;\n}\n\n.ag-chart-settings {\n overflow-x: hidden;\n}\n\n.ag-chart-settings-wrapper {\n position: relative;\n flex-direction: column;\n width: 100%;\n height: 100%;\n display: flex;\n overflow: hidden;\n}\n\n.ag-chart-settings-nav-bar {\n display: flex;\n align-items: center;\n width: 100%;\n height: 30px;\n padding: 0 10px;\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.ag-chart-settings-card-selector {\n display: flex;\n align-items: center;\n justify-content: space-around;\n flex: 1 1 auto;\n height: 100%;\n padding: 0 10px;\n}\n\n.ag-chart-settings-card-item {\n cursor: pointer;\n width: 10px;\n height: 10px;\n background-color: #000;\n position: relative;\n}\n.ag-chart-settings-card-item.ag-not-selected {\n opacity: 0.2;\n}\n.ag-chart-settings-card-item::before {\n content: ' ';\n display: block;\n position: absolute;\n background-color: transparent;\n left: 50%;\n top: 50%;\n margin-left: -10px;\n margin-top: -10px;\n width: 20px;\n height: 20px;\n}\n\n.ag-chart-settings-prev,\n.ag-chart-settings-next {\n position: relative;\n flex: none;\n}\n\n.ag-chart-settings-prev-button,\n.ag-chart-settings-next-button {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n cursor: pointer;\n opacity: 0;\n}\n\n.ag-chart-settings-mini-charts-container {\n position: relative;\n flex: 1 1 auto;\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.ag-chart-settings-mini-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n flex-direction: column;\n width: 100%;\n min-height: 100%;\n overflow: hidden;\n}\n.ag-chart-settings-mini-wrapper.ag-animating {\n transition: left 0.3s;\n transition-timing-function: ease-in-out;\n}\n\n.ag-chart-mini-thumbnail {\n cursor: pointer;\n}\n\n.ag-chart-mini-thumbnail-canvas {\n display: block;\n}\n\n.ag-chart-data-wrapper,\n.ag-chart-format-wrapper {\n display: flex;\n flex-direction: column;\n position: relative;\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.ag-chart-data-wrapper {\n height: 100%;\n overflow-y: auto;\n}\n\n.ag-chart-data-section,\n.ag-chart-format-section {\n display: flex;\n margin: 0;\n}\n\n.ag-chart-empty-text {\n display: flex;\n top: 0;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n}\n\n.ag-chart .ag-chart-menu {\n display: none;\n}\n\n.ag-chart-menu-hidden:hover .ag-chart-menu {\n display: block;\n}\n\n.ag-chart .ag-chart-tool-panel-button-enable .ag-chart-menu {\n display: flex;\n flex-direction: row;\n overflow: auto;\n top: 5px;\n gap: calc(var(--ag-grid-size) * 3 - 8px);\n width: auto;\n}\n.ag-ltr .ag-chart .ag-chart-tool-panel-button-enable .ag-chart-menu {\n right: calc(var(--ag-cell-horizontal-padding) + var(--ag-grid-size) - 4px);\n justify-content: right;\n}\n.ag-rtl .ag-chart .ag-chart-tool-panel-button-enable .ag-chart-menu {\n left: calc(var(--ag-cell-horizontal-padding) + var(--ag-grid-size) - 4px);\n justify-content: left;\n}\n\n.ag-chart-menu-close {\n display: none;\n}\n\n.ag-chart-tool-panel-button-enable .ag-chart-menu-close {\n position: absolute;\n top: 50%;\n transition: transform 0.33s ease-in-out;\n padding: 0;\n display: block;\n cursor: pointer;\n border: none;\n}\n.ag-ltr .ag-chart-tool-panel-button-enable .ag-chart-menu-close {\n right: 0px;\n}\n.ag-rtl .ag-chart-tool-panel-button-enable .ag-chart-menu-close {\n left: 0px;\n}\n.ag-chart-tool-panel-button-enable .ag-chart-menu-close .ag-icon {\n padding: 14px 5px 14px 2px;\n}\n.ag-chart-tool-panel-button-enable .ag-chart-menu-close:before {\n content: '';\n position: absolute;\n top: -40px;\n bottom: -40px;\n}\n.ag-ltr .ag-chart-tool-panel-button-enable .ag-chart-menu-close:before {\n right: 0px;\n}\n.ag-rtl .ag-chart-tool-panel-button-enable .ag-chart-menu-close:before {\n left: 0px;\n}\n.ag-ltr .ag-chart-tool-panel-button-enable .ag-chart-menu-close:before {\n left: -10px;\n}\n.ag-rtl .ag-chart-tool-panel-button-enable .ag-chart-menu-close:before {\n right: -10px;\n}\n.ag-chart-tool-panel-button-enable .ag-icon-menu {\n display: none;\n}\n\n.ag-ltr .ag-chart-tool-panel-button-enable .ag-chart-menu-close {\n transform: translate(3px, -50%);\n}\n.ag-ltr .ag-chart-tool-panel-button-enable .ag-chart-menu-close:hover {\n transform: translate(0, -50%);\n}\n.ag-ltr .ag-chart-menu-visible .ag-chart-tool-panel-button-enable .ag-chart-menu-close:hover {\n transform: translate(5px, -50%);\n}\n\n.ag-rtl .ag-chart-tool-panel-button-enable .ag-chart-menu-close {\n transform: translate(-3px, -50%);\n}\n.ag-rtl .ag-chart-tool-panel-button-enable .ag-chart-menu-close:hover {\n transform: translate(0, -50%);\n}\n.ag-rtl .ag-chart-menu-visible .ag-chart-tool-panel-button-enable .ag-chart-menu-close:hover {\n transform: translate(-5px, -50%);\n}\n\n.ag-charts-font-size-color {\n display: flex;\n align-self: stretch;\n justify-content: space-between;\n}\n\n.ag-charts-data-group-item {\n position: relative;\n}\n\n.ag-chart-menu {\n border-radius: var(--ag-card-radius);\n background: var(--ag-background-color);\n}\n\n.ag-chart-menu-icon {\n opacity: 0.5;\n line-height: 24px;\n font-size: 24px;\n width: 24px;\n height: 24px;\n margin: 2px 0;\n cursor: pointer;\n border-radius: var(--ag-card-radius);\n color: var(--ag-secondary-foreground-color);\n}\n.ag-chart-menu-icon:hover {\n opacity: 1;\n}\n\n.ag-chart-mini-thumbnail {\n border: 1px solid var(--ag-secondary-border-color);\n border-radius: 5px;\n margin: 5px;\n}\n.ag-chart-mini-thumbnail:nth-last-child(3),\n.ag-chart-mini-thumbnail:nth-last-child(3) ~ .ag-chart-mini-thumbnail {\n margin-left: auto;\n margin-right: auto;\n}\n.ag-ltr .ag-chart-mini-thumbnail:first-child {\n margin-left: 0;\n}\n.ag-rtl .ag-chart-mini-thumbnail:first-child {\n margin-right: 0;\n}\n.ag-ltr .ag-chart-mini-thumbnail:last-child {\n margin-right: 0;\n}\n.ag-rtl .ag-chart-mini-thumbnail:last-child {\n margin-left: 0;\n}\n.ag-chart-mini-thumbnail.ag-selected {\n border-color: var(--ag-minichart-selected-chart-color);\n}\n\n.ag-chart-settings-card-item {\n background: var(--ag-foreground-color);\n width: 8px;\n height: 8px;\n border-radius: 4px;\n}\n.ag-chart-settings-card-item.ag-selected {\n background-color: var(--ag-minichart-selected-page-color);\n}\n\n.ag-chart-data-column-drag-handle {\n margin-left: var(--ag-grid-size);\n}\n\n.ag-charts-settings-group-title-bar,\n.ag-charts-data-group-title-bar,\n.ag-charts-format-top-level-group-title-bar {\n border-top: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n}\n\n.ag-charts-settings-group-container {\n padding: var(--ag-grid-size);\n}\n\n.ag-charts-data-group-container {\n padding: calc(var(--ag-widget-container-vertical-padding) * 0.5) var(--ag-widget-container-horizontal-padding);\n}\n.ag-charts-data-group-container .ag-charts-data-group-item:not(.ag-charts-format-sub-level-group) {\n height: var(--ag-list-item-height);\n}\n.ag-charts-data-group-container .ag-list-item-hovered::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: var(--ag-range-selection-border-color);\n}\n.ag-charts-data-group-container .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-charts-data-group-container .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n\n.ag-charts-format-top-level-group-container {\n margin-left: calc(var(--ag-grid-size) * 2);\n padding: var(--ag-grid-size);\n}\n\n.ag-charts-format-top-level-group-item {\n margin: var(--ag-grid-size) 0;\n}\n\n.ag-charts-format-sub-level-group-container {\n padding: var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);\n padding-bottom: calc(var(--ag-widget-container-vertical-padding) - var(--ag-widget-vertical-spacing));\n}\n.ag-charts-format-sub-level-group-container > * {\n margin-bottom: var(--ag-widget-vertical-spacing);\n}\n\n.ag-charts-group-container.ag-group-container-horizontal {\n padding: var(--ag-grid-size);\n}\n\n.ag-chart-data-section,\n.ag-chart-format-section {\n display: flex;\n margin: 0;\n}\n\n.ag-chart-menu-panel {\n background-color: var(--ag-control-panel-background-color);\n}\n.ag-ltr .ag-chart-menu-panel {\n border-left: solid 1px var(--ag-border-color);\n}\n.ag-rtl .ag-chart-menu-panel {\n border-right: solid 1px var(--ag-border-color);\n}\n\n.ag-date-time-list-page-title-bar {\n display: flex;\n}\n\n.ag-date-time-list-page-title {\n flex-grow: 1;\n text-align: center;\n}\n\n.ag-date-time-list-page-column-labels-row,\n.ag-date-time-list-page-entries-row {\n display: flex;\n}\n\n.ag-date-time-list-page-column-label,\n.ag-date-time-list-page-entry {\n flex-basis: 0;\n flex-grow: 1;\n}\n\n.ag-date-time-list-page-entry {\n cursor: pointer;\n text-align: center;\n}\n\n.ag-date-time-list-page-column-label {\n text-align: center;\n}\n\n.ag-input-field-input {\n width: 100%;\n min-width: 0;\n}\n\n.ag-checkbox-input-wrapper {\n font-family: var(--ag-icon-font-family);\n font-size: var(--ag-icon-size);\n line-height: var(--ag-icon-size);\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: var(--ag-icon-size);\n height: var(--ag-icon-size);\n background-color: var(--ag-checkbox-background-color);\n border-radius: var(--ag-checkbox-border-radius);\n display: inline-block;\n vertical-align: middle;\n flex: none;\n}\n.ag-checkbox-input-wrapper input,\n.ag-checkbox-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-checkbox-input-wrapper:focus-within,\n.ag-checkbox-input-wrapper:active {\n outline: none;\n box-shadow: var(--ag-input-focus-box-shadow);\n}\n.ag-checkbox-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-checkbox-input-wrapper::after {\n content: var(--ag-icon-font-code-checkbox-unchecked, '\\f108');\n color: var(--ag-checkbox-unchecked-color);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-checkbox-input-wrapper.ag-checked::after {\n content: var(--ag-icon-font-code-checkbox-checked, '\\f106');\n color: var(--ag-checkbox-checked-color);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-checkbox-input-wrapper.ag-indeterminate::after {\n content: var(--ag-icon-font-code-checkbox-indeterminate, '\\f107');\n color: var(--ag-checkbox-indeterminate-color);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n\n.ag-toggle-button-input-wrapper {\n box-sizing: border-box;\n width: var(--ag-toggle-button-width);\n height: var(--ag-toggle-button-height);\n background-color: var(--ag-toggle-button-off-background-color);\n border-radius: calc(var(--ag-toggle-button-height) * 0.5);\n position: relative;\n flex: none;\n border: var(--ag-toggle-button-border-width) solid;\n border-color: var(--ag-toggle-button-off-border-color);\n}\n.ag-toggle-button-input-wrapper input {\n opacity: 0;\n height: 100%;\n width: 100%;\n}\n.ag-toggle-button-input-wrapper:focus-within {\n outline: none;\n box-shadow: var(--ag-input-focus-box-shadow);\n}\n.ag-toggle-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-toggle-button-input-wrapper.ag-checked {\n background-color: var(--ag-toggle-button-on-background-color);\n border-color: var(--ag-toggle-button-on-border-color);\n}\n.ag-toggle-button-input-wrapper::before {\n content: ' ';\n position: absolute;\n top: calc(0px - var(--ag-toggle-button-border-width));\n left: calc(0px - var(--ag-toggle-button-border-width));\n display: block;\n box-sizing: border-box;\n height: var(--ag-toggle-button-height);\n width: var(--ag-toggle-button-height);\n background-color: var(--ag-toggle-button-switch-background-color);\n border-radius: 100%;\n transition: left 100ms;\n border: var(--ag-toggle-button-border-width) solid;\n border-color: var(--ag-toggle-button-switch-border-color);\n}\n.ag-toggle-button-input-wrapper.ag-checked::before {\n left: calc(100% - var(--ag-toggle-button-height));\n border-color: var(--ag-toggle-button-on-border-color);\n}\n\n.ag-radio-button-input-wrapper {\n font-family: var(--ag-icon-font-family);\n font-size: var(--ag-icon-size);\n line-height: var(--ag-icon-size);\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: var(--ag-icon-size);\n height: var(--ag-icon-size);\n background-color: var(--ag-checkbox-background-color);\n border-radius: var(--ag-checkbox-border-radius);\n display: inline-block;\n vertical-align: middle;\n flex: none;\n border-radius: var(--ag-icon-size);\n}\n.ag-radio-button-input-wrapper input,\n.ag-radio-button-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-radio-button-input-wrapper:focus-within,\n.ag-radio-button-input-wrapper:active {\n outline: none;\n box-shadow: var(--ag-input-focus-box-shadow);\n}\n.ag-radio-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-radio-button-input-wrapper::after {\n content: var(--ag-icon-font-code-radio-button-off, '\\f127');\n color: var(--ag-checkbox-unchecked-color);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-radio-button-input-wrapper.ag-checked::after {\n content: var(--ag-icon-font-code-radio-button-on, '\\f128');\n color: var(--ag-checkbox-checked-color);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n\ninput[class^='ag-'][type='range'] {\n -webkit-appearance: none;\n width: 100%;\n height: 100%;\n background: none;\n overflow: visible;\n}\ninput[class^='ag-'][type='range']::-webkit-slider-runnable-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: var(--ag-border-color);\n border-radius: var(--ag-border-radius);\n border-radius: var(--ag-checkbox-border-radius);\n}\ninput[class^='ag-'][type='range']::-moz-range-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: var(--ag-border-color);\n border-radius: var(--ag-border-radius);\n border-radius: var(--ag-checkbox-border-radius);\n}\ninput[class^='ag-'][type='range']::-ms-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: var(--ag-border-color);\n border-radius: var(--ag-border-radius);\n border-radius: var(--ag-checkbox-border-radius);\n color: transparent;\n width: calc(100% - 2px);\n}\ninput[class^='ag-'][type='range']::-webkit-slider-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: var(--ag-icon-size);\n height: var(--ag-icon-size);\n background-color: var(--ag-background-color);\n border: 1px solid;\n border-color: var(--ag-checkbox-unchecked-color);\n border-radius: var(--ag-icon-size);\n transform: translateY(calc(var(--ag-icon-size) * -0.5 + 1.5px));\n}\ninput[class^='ag-'][type='range']::-ms-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: var(--ag-icon-size);\n height: var(--ag-icon-size);\n background-color: var(--ag-background-color);\n border: 1px solid;\n border-color: var(--ag-checkbox-unchecked-color);\n border-radius: var(--ag-icon-size);\n}\ninput[class^='ag-'][type='range']::-moz-ag-range-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: var(--ag-icon-size);\n height: var(--ag-icon-size);\n background-color: var(--ag-background-color);\n border: 1px solid;\n border-color: var(--ag-checkbox-unchecked-color);\n border-radius: var(--ag-icon-size);\n}\ninput[class^='ag-'][type='range']:focus {\n outline: none;\n}\ninput[class^='ag-'][type='range']:focus::-webkit-slider-thumb {\n box-shadow: var(--ag-input-focus-box-shadow);\n border-color: var(--ag-checkbox-checked-color);\n}\ninput[class^='ag-'][type='range']:focus::-ms-thumb {\n box-shadow: var(--ag-input-focus-box-shadow);\n border-color: var(--ag-checkbox-checked-color);\n}\ninput[class^='ag-'][type='range']:focus::-moz-ag-range-thumb {\n box-shadow: var(--ag-input-focus-box-shadow);\n border-color: var(--ag-checkbox-checked-color);\n}\ninput[class^='ag-'][type='range']:active::-webkit-slider-runnable-track {\n background-color: var(--ag-input-focus-border-color);\n}\ninput[class^='ag-'][type='range']:active::-moz-ag-range-track {\n background-color: var(--ag-input-focus-border-color);\n}\ninput[class^='ag-'][type='range']:active::-ms-track {\n background-color: var(--ag-input-focus-border-color);\n}\ninput[class^='ag-'][type='range']:disabled {\n opacity: 0.5;\n}\n\n/* ag-theme-material.css */\n\n@font-face {\n font-family: 'agGridMaterial';\n src: url(data:font/woff2;charset=utf-8;base64,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);\n font-weight: normal;\n font-style: normal;\n}\n.ag-theme-material {\n --ag-material-primary-color: #0074cc;\n --ag-material-accent-color: #494647;\n --ag-foreground-color: rgba(0, 0, 0, 0.87);\n --ag-secondary-foreground-color: rgba(0, 0, 0, 0.54);\n --ag-disabled-foreground-color: rgba(0, 0, 0, 0.38);\n --ag-background-color: #fff;\n --ag-header-background-color: #344861;\n --ag-tooltip-background-color: #fff;\n --ag-subheader-background-color: #eee;\n --ag-subheader-toolbar-background-color: rgba(238, 238, 238, 0.5);\n --ag-header-cell-hover-background-color: #f2f2f2;\n --ag-chip-background-color: #e2e2e2;\n --ag-range-selection-background-color: rgba(122, 134, 203, 0.1);\n --ag-range-selection-background-color-2: rgba(122, 134, 203, 0.19);\n --ag-range-selection-background-color-3: rgba(122, 134, 203, 0.27);\n --ag-range-selection-background-color-4: rgba(122, 134, 203, 0.34);\n --ag-range-selection-highlight-color: #fce4ec;\n --ag-row-hover-color: #fafafa;\n --ag-column-hover-color: #fafafa;\n --ag-control-panel-background-color: #fafafa;\n --ag-selected-row-background-color: rgba(33, 150, 243, 0.3);\n --ag-checkbox-unchecked-color: #333;\n --ag-value-change-value-highlight-background-color: #00acc1;\n --ag-side-button-selected-background-color: transparent;\n --ag-range-selection-border-color: var(--ag-material-primary-color);\n --ag-checkbox-checked-color: var(--ag-material-accent-color);\n --ag-borders: none;\n --ag-borders-critical: solid 1px;\n --ag-border-color: #e2e2e2;\n --ag-grid-size: 8px;\n --ag-icon-size: 18px;\n --ag-header-height: calc(var(--ag-grid-size) * 7);\n --ag-row-height: calc(var(--ag-grid-size) * 6);\n --ag-cell-horizontal-padding: calc(var(--ag-grid-size) * 3);\n --ag-list-item-height: calc(var(--ag-grid-size) * 4);\n --ag-row-group-indent-size: calc(var(--ag-grid-size) * 3 + var(--ag-icon-size));\n --ag-filter-tool-panel-sub-level-row-height: calc(var(--ag-grid-size) * 4);\n --ag-checkbox-border-radius: 2px;\n --ag-toggle-button-switch-border-width: 2px;\n --ag-toggle-button-height: var(--ag-icon-size);\n --ag-widget-container-horizontal-padding: calc(var(--ag-grid-size) * 1.5);\n --ag-widget-container-vertical-padding: calc(var(--ag-grid-size) * 2);\n --ag-widget-vertical-spacing: calc(var(--ag-grid-size) * 1.75);\n --ag-font-family: 'Roboto', sans-serif;\n --ag-font-size: 13px;\n --ag-icon-font-family: agGridMaterial;\n --ag-selected-tab-underline-color: var(--ag-material-primary-color);\n --ag-selected-tab-underline-width: 2px;\n --ag-input-focus-border-color: var(--ag-material-primary-color);\n --ag-input-focus-box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n --ag-card-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n --ag-card-radius: 2px;\n --ag-invalid-color: #e02525;\n}\n\n.ag-theme-material .ag-filter-toolpanel-header,\n.ag-theme-material .ag-filter-toolpanel-search,\n.ag-theme-material .ag-status-bar,\n.ag-theme-material .ag-header-row,\n.ag-theme-material .ag-panel-title-bar-title,\n.ag-theme-material .ag-multi-filter-group-title-bar {\n font-size: calc(var(--ag-font-size) - 1px);\n font-weight: 600;\n color: var(--ag-header-foreground-color);\n}\n.ag-theme-material .ag-tab {\n height: calc(var(--ag-grid-size) * 4.5);\n flex: 1 1 auto;\n}\n.ag-theme-material .ag-tabs-header,\n.ag-theme-material .ag-column-drop-horizontal {\n background-color: var(--ag-subheader-background-color);\n}\n.ag-theme-material .ag-tabs-body {\n padding: calc(var(--ag-grid-size) * 0.5) 0;\n}\n.ag-theme-material .ag-tabs-body .ag-menu-list {\n padding-top: 0;\n padding-bottom: 0;\n}\n.ag-theme-material .ag-header-cell,\n.ag-theme-material .ag-header-group-cell {\n transition: background-color 0.5s;\n}\n.ag-theme-material .ag-row-last:not(.ag-row-first) .ag-cell-inline-editing {\n bottom: 0;\n}\n.ag-theme-material .ag-cell-inline-editing {\n padding: var(--ag-grid-size);\n height: calc(var(--ag-row-height) + var(--ag-grid-size) * 3);\n border-color: var(--ag-border-color) !important;\n}\n.ag-theme-material .ag-has-focus .ag-cell-inline-editing {\n border-color: var(--ag-input-focus-border-color) !important;\n}\n.ag-theme-material .ag-column-drop-vertical {\n border-bottom: solid 1px;\n border-bottom-color: var(--ag-border-color);\n padding-top: var(--ag-grid-size);\n}\n.ag-theme-material .ag-column-drop-vertical.ag-last-column-drop {\n border-bottom: none;\n}\n.ag-theme-material .ag-column-drop-vertical-cell {\n margin-left: 0;\n}\n.ag-theme-material .ag-column-drop-vertical-empty-message {\n font-size: calc(var(--ag-font-size) - 1px);\n font-weight: 600;\n color: var(--ag-disabled-foreground-color);\n}\n.ag-theme-material .ag-ltr .ag-column-drop-vertical-empty-message {\n padding-left: calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);\n padding-right: var(--ag-grid-size);\n}\n\n.ag-theme-material .ag-rtl .ag-column-drop-vertical-empty-message {\n padding-right: calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);\n padding-left: var(--ag-grid-size);\n}\n\n.ag-theme-material .ag-status-bar {\n border: solid 1px;\n border-color: var(--ag-border-color);\n}\n.ag-theme-material .ag-column-panel-column-select {\n border-top: solid 1px;\n border-top-color: var(--ag-border-color);\n}\n.ag-theme-material .ag-column-select,\n.ag-theme-material .ag-column-select-header {\n border-bottom: solid 1px;\n border-bottom-color: var(--ag-border-color);\n}\n.ag-theme-material .ag-column-select-header {\n height: var(--ag-header-height);\n}\n.ag-theme-material .ag-group-title-bar {\n padding: calc(var(--ag-grid-size) * 0.75) var(--ag-grid-size);\n}\n.ag-theme-material .ag-charts-format-sub-level-group-title-bar {\n padding: calc(var(--ag-grid-size) * 0.5) var(--ag-grid-size);\n}\n.ag-theme-material .ag-chart-data-section,\n.ag-theme-material .ag-chart-format-section {\n padding-bottom: calc(var(--ag-grid-size) * 0.5);\n}\n.ag-theme-material .ag-chart-menu-close {\n background: var(--ag-background-color);\n}\n.ag-theme-material .ag-chart-menu-close .ag-icon {\n background: var(--ag-subheader-background-color);\n}\n.ag-theme-material input[class^='ag-']:not([type]),\n.ag-theme-material input[class^='ag-'][type='text'],\n.ag-theme-material input[class^='ag-'][type='number'],\n.ag-theme-material input[class^='ag-'][type='tel'],\n.ag-theme-material input[class^='ag-'][type='date'],\n.ag-theme-material input[class^='ag-'][type='datetime-local'],\n.ag-theme-material textarea[class^='ag-'] {\n background: transparent;\n color: var(--ag-foreground-color);\n font-family: inherit;\n font-size: inherit;\n height: calc(var(--ag-grid-size) * 5);\n padding-bottom: var(--ag-grid-size);\n border-width: 0;\n border-bottom: 2px solid;\n border-bottom-color: var(--ag-border-color);\n}\n.ag-theme-material input[class^='ag-']:not([type]):focus,\n.ag-theme-material input[class^='ag-'][type='text']:focus,\n.ag-theme-material input[class^='ag-'][type='number']:focus,\n.ag-theme-material input[class^='ag-'][type='tel']:focus,\n.ag-theme-material input[class^='ag-'][type='date']:focus,\n.ag-theme-material input[class^='ag-'][type='datetime-local']:focus,\n.ag-theme-material textarea[class^='ag-']:focus {\n border-bottom: 2px solid;\n border-bottom-color: var(--ag-material-primary-color);\n outline: none;\n box-shadow: none;\n}\n.ag-theme-material input[class^='ag-']:not([type])::placeholder,\n.ag-theme-material input[class^='ag-'][type='text']::placeholder,\n.ag-theme-material input[class^='ag-'][type='number']::placeholder,\n.ag-theme-material input[class^='ag-'][type='tel']::placeholder,\n.ag-theme-material input[class^='ag-'][type='date']::placeholder,\n.ag-theme-material input[class^='ag-'][type='datetime-local']::placeholder,\n.ag-theme-material textarea[class^='ag-']::placeholder {\n color: var(--ag-disabled-foreground-color);\n}\n.ag-theme-material input[class^='ag-']:not([type]):disabled,\n.ag-theme-material input[class^='ag-'][type='text']:disabled,\n.ag-theme-material input[class^='ag-'][type='number']:disabled,\n.ag-theme-material input[class^='ag-'][type='tel']:disabled,\n.ag-theme-material input[class^='ag-'][type='date']:disabled,\n.ag-theme-material input[class^='ag-'][type='datetime-local']:disabled,\n.ag-theme-material textarea[class^='ag-']:disabled {\n border-bottom: 1px solid;\n border-bottom-color: var(--ag-border-color);\n}\n.ag-theme-material input[class^='ag-']:not([type]):invalid,\n.ag-theme-material input[class^='ag-'][type='text']:invalid,\n.ag-theme-material input[class^='ag-'][type='number']:invalid,\n.ag-theme-material input[class^='ag-'][type='tel']:invalid,\n.ag-theme-material input[class^='ag-'][type='date']:invalid,\n.ag-theme-material input[class^='ag-'][type='datetime-local']:invalid,\n.ag-theme-material textarea[class^='ag-']:invalid {\n border-width: 0;\n border-bottom: 1px solid;\n border-bottom-color: var(--ag-invalid-color);\n color: var(--ag-invalid-color);\n}\n.ag-theme-material .ag-standard-button {\n appearance: none;\n background-color: transparent;\n border: 0;\n color: var(--ag-material-primary-color);\n font-family: inherit;\n font-size: inherit;\n margin: 0;\n padding: 0;\n text-transform: uppercase;\n}\n.ag-theme-material .ag-standard-button:disabled {\n color: var(--ag-disabled-foreground-color);\n background-color: var(--ag-input-disabled-background-color);\n border-color: var(--ag-input-disabled-border-color);\n}\n.ag-theme-material.ag-dnd-ghost {\n font-size: calc(var(--ag-font-size) - 1px);\n font-weight: 600;\n}\n.ag-theme-material .ag-filter-toolpanel-header {\n height: calc(var(--ag-grid-size) * 4);\n}\n.ag-theme-material .ag-filter-toolpanel-group-level-0-header {\n height: calc(var(--ag-grid-size) * 7);\n}\n.ag-theme-material .ag-ltr .ag-filter-apply-panel-button,\n.ag-theme-material .ag-ltr .ag-advanced-filter-apply-button {\n margin-left: var(--ag-grid-size);\n}\n\n.ag-theme-material .ag-rtl .ag-filter-apply-panel-button,\n.ag-theme-material .ag-rtl .ag-advanced-filter-apply-button {\n margin-right: var(--ag-grid-size);\n}\n\n.ag-theme-material .ag-layout-auto-height .ag-center-cols-clipper,\n.ag-theme-material .ag-layout-auto-height .ag-center-cols-container,\n.ag-theme-material .ag-layout-print .ag-center-cols-clipper,\n.ag-theme-material .ag-layout-print .ag-center-cols-container {\n min-height: 150px;\n}\n.ag-theme-material .ag-overlay-no-rows-wrapper.ag-layout-auto-height {\n padding-top: 60px;\n}\n.ag-theme-material .ag-picker-field-wrapper:focus {\n box-shadow: 0 0 0 1px var(--ag-material-primary-color);\n}\n.ag-theme-material .ag-rich-select-list {\n box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 5px -3px, rgba(0, 0, 0, 0.14) 0px 8px 10px 1px, rgba(0, 0, 0, 0.12) 0px 3px 14px 2px;\n}\n\n.ag-aria-description-container {\n display: none !important;\n}\n","import { Draft, produce } from 'immer';\nimport { Component, Element, h, State, Prop, Event, EventEmitter, Watch, Listen, Method } from '@stencil/core';\nimport { state } from '../../../../../store/catalog-store';\nimport type { ColumnApi, GridOptions, ICellRendererParams, IServerSideDatasource } from 'ag-grid-enterprise';\nimport CustomRenderer from '../../../../my-component/UI/grid/renderers/custom-renderer';\nimport CustomActionsRenderer from '../../../../my-component/UI/grid/renderers/custom-actions-renderer';\nimport Star16 from '@carbon/icons/es/star/16';\nimport List16 from '@carbon/icons/es/list/16';\nimport { SearchServiceDatasource, rowGroups } from '../../../../../udp-utilities/grid/data-source/SearchServiceDatasource';\nimport { convertToAgGridColumns } from '../../../../../udp-utilities/grid/convertToAgGridColumns';\nimport {\n getSelectedView,\n getAvailableViews,\n saveView,\n updateView,\n updateViewAndConfigurations,\n getAvailableGridActions,\n getPromotedLookupMethod,\n executeQueryAdHocAndMapLookups,\n executeQueryWithParameters,\n getApiCatalogAndProduct,\n getApiCatalogById,\n executeQueryAdHoc,\n getAllHotlists,\n createAHotlist,\n deleteAHotlist,\n addRecordToAHotlist,\n loadAHotlist,\n removeRecordFromHotlist,\n deleteSelectedView,\n getApiMethodInstance,\n getApiMethod,\n} from '../../../../../udp-utilities/api-udp/apiUtils';\nimport { UdpGridColumnDefs, useTreeDatasource } from '../conversionFunctions/conversionFunctions';\nimport '../../../../my-component/ag-grid.css';\nimport EmailCellRenderer from '../renderers/email-cell-renderer';\nimport OpenFunctionCellRenderer from '../renderers/open-function-cell-renderer';\nimport HotListAddRenderer from '../renderers/hot-list-add-renderer';\nimport { SharedContext } from '../renderers/sharedContext';\nimport HoverContentCellRenderer from '../renderers/hover-content-cell-renderer';\nimport { GridStateTypeEnums } from './enums/gridEnums';\nimport { SearchObject, FilterDetail, HotListObject, ActionItem } from './interfaces/gridInterfaces';\nimport { transformSearchData } from '../../../../../udp-utilities/grid/data-converters/transformSearchData';\nimport { LicenseKey } from './license/licenseKey';\nimport { buildSearchPayload } from './ambient-template-functions/buildGroupedSearchPayload';\n// import { FilterElement } from '../../advanced-search/advanced-search-grouped';\nimport * as localforage from 'localforage';\nimport '../../../../../global/app.css';\n// import OverflowMenuHorizontal16 from '@carbon/icons/es/overflow-menu--horizontal/16';\nimport DateTimeCellRenderer from '../renderers/date-time-cell-renderer';\nimport { RenderConfig } from './interfaces/gridInterfaces';\nimport ActionsRenderer from '../renderers/actions-renderer';\nimport { getActionColumnWidth, sortActionItemOrder, splitActionList } from '../../../../../udp-utilities/grid/action-renderers/action-column-util';\nimport { GridApi } from 'ag-grid-enterprise';\nimport { lazySetupAgGridLibrary } from '../../../../../global/ag-grid';\nimport { Memoize } from 'fast-typescript-memoize';\nimport { GridReadyEvent } from 'ag-grid-community';\nimport StatusRenderer from '../renderers/status-renderer';\nimport IconRenderer from '../renderers/icon-renderer';\nimport CurrencyRenderer from '../renderers/currency-renderer';\nimport { cloneDeep } from 'lodash';\nimport { v4 as uuid } from 'uuid';\nimport { getCurrentTenantId } from 'src/udp-utilities/tenant/tenantUtils';\n\ntype NotificationStatus = 'error' | 'success' | 'warning';\n\n@Component({\n tag: 'ambient-template-grid',\n styleUrl: './ambient-template-grid.css',\n shadow: true,\n})\nexport class AmbientTemplateGrid {\n private prevPivotMode: boolean;\n //private dynamicFormRef: HTMLUdpDynamicFormElement;\n\n @Event() viewSaved: EventEmitter;\n @Event() externalEmitter: EventEmitter;\n @Event() filterChanged: EventEmitter;\n @Element() el: HTMLElement;\n\n @Prop() columnDefs: any[] = [];\n @Prop() fullViewData: any = {};\n @Prop() rowData: any[] = [];\n @Prop() viewListrowData: any[] = [];\n @Prop() gridState: any[] = [];\n @Prop() gridId: string = '';\n @Prop({ mutable: true }) apiCatalogId: string = '';\n @Prop() userId: string = '';\n @Prop() userPermissions: any[] = [];\n @Prop({ mutable: true }) apiMethodId: string = '';\n @Prop({ mutable: true }) lookupApiMethodId: string = '';\n @Prop({ mutable: true }) entityName: string = '';\n @Prop() menuItems: Array<any> = [];\n @Prop() gridBarTitle: string = '';\n @Prop() viewChips: Array<any> = [];\n @Prop() additionalFilterChips: Array<any> = [];\n @Prop() kpiValues: Array<any> = [];\n @Prop() showAdvancedSearchFeature: boolean = true;\n @Prop() showFilterColumnFeature: boolean = true;\n @Prop() queryId: string = '';\n @Prop() defaultSearchObject: Array<any> = [];\n @Prop() actionId: string = '';\n @Prop() cellClickHandler: (value: any, callback: any) => void;\n @Prop() cellClickHandlerX: (value: any, callback: any) => void;\n @Prop() viewActionClickHandler: (value: any, callback: any) => void;\n @Prop() renderConfigs: RenderConfig[] = [];\n // @Prop() externalPayload: any = {}; // check to see if it fixes the issue with adding an empty object\n @Prop() externalPayload: any = null;\n @Prop() dataEmitter: any = {};\n @Prop() dataEmitterRequest: any = {};\n @Prop() fitGrid: string = '';\n @Prop() hotListIdentifier: string = '';\n @Prop() searchKey: Object = {};\n @Prop({ mutable: true }) filterObject: any = [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 2,\n type: 'advanced',\n },\n ];\n @Prop({ mutable: true }) externalSearchFilter: Array<any> = [];\n @Prop() noResults: boolean = false;\n @Prop() maxChipsAllowed: number = 5;\n @Prop() suppressMenuHide: boolean = true; // default show column menu option without hovering\n @Prop() showRank: boolean = false;\n @Prop() showHotlistButton: boolean = false;\n @Prop() columnNames: { [key: string]: string } = {};\n @Prop() buttonTransform: string = '';\n @Prop() rowGrouping: Array<any> = [];\n @Prop() restrictBulkActionsPermissions: boolean = false;\n @Prop() restrictedGridFeatures: { [key: string]: string } = {};\n @Prop() triggerGridUpdate: boolean = false;\n @Prop() hideActionsColumn: boolean = false; //temporary, need better approach\n @Prop() primaryActionLabel: string;\n @Prop() primaryActionOnClick: (e: any) => void;\n @Prop() primaryActionIcon: string;\n @Prop() showInsightsAction: boolean = false;\n @Prop() insightsActionOnClick: (e: any) => void;\n @Prop() hideBulkActions: boolean = false;\n @Prop() enableCheckboxOnColumns: boolean = false;\n @Prop() hiddenColumnsList: Array<string> = [];\n @Prop() hideDefaultSearchFilterChips: boolean = false;\n @Prop() executeBulkAction: (actionId: string, data: any) => void;\n @Prop() bulkActionFunctions: Object = {};\n @Prop() exportFunction: (entityName: string, searchObject: Object) => void;\n @Prop() rowIdField: string | null = null;\n @Prop() defaultSearchMode: 'advanced' | 'standard' = 'standard';\n @Prop() disableSearchSwitch: boolean = false;\n\n @State() drawerOpen: boolean = false;\n @State() filterPanelOpen: boolean = true;\n @State() saveDialogOpen: boolean = false;\n @State() editDialogOpen: boolean = false;\n @State() editViewConfirmationDialogOpen: boolean = false;\n @State() gridOptionsDrawerOpen: boolean = false;\n @State() viewListGridOptions: GridOptions;\n @State() filterChips: Array<any> = [];\n @State() promotedEntity: any = {};\n @State() isServerSide: boolean = true;\n @State() showNotification: boolean = false;\n @State() notificationMessage: string = '';\n @State() notificationStatus: NotificationStatus = 'success';\n @State() loadedView: Array<any> = [];\n @State() loadedViewTitle: string = '';\n @State() loadedViewData: string = '';\n @State() currentColumnOrdering: Array<any> = [];\n @State() currentHiddenColumns: Array<any> = [];\n @State() rowsSelected: boolean = false;\n @State() selectedRowCount: number = 0;\n @State() serverColumnDefs: Array<any> = [];\n @State() isSetupComplete: boolean = false;\n @State() extendedSearchFilterList: Array<any> = [];\n @State() viewListRowData: Array<any> = [];\n @State() bulkActions: Array<any> = [];\n @State() sheetContent: string = 'advancedSearch';\n @State() searchObject: SearchObject = { filterElements: [] };\n @State() configuredColumnDefs: Array<any> = [];\n @State() hasConfiguredColumnDefs: boolean = false;\n @State() fullDataColumns: any[] = [];\n @State() filterOn: string = '';\n @State() gridOptions: GridOptions;\n @State() agGrid:\n | undefined\n | {\n api: GridApi<any>;\n // @note As of ag-grid@v31 ColumnApi has been deprecated and all methods will move to api.\n columnApi: ColumnApi;\n };\n @State() hasSearchRank: boolean;\n @State() serverSideDatasource: IServerSideDatasource | undefined;\n @State() tempSearchObject: { searchField: string; searchOperator: string; searchValue: any; groupId: number } = {\n searchField: '',\n searchOperator: '',\n searchValue: '',\n groupId: 1,\n };\n @State() catalogList: any = {};\n @State() dataRowClicked: any = {};\n @State() advancedSearchFilterList: Array<any> = [];\n @State() allHotlists: Array<any> = [];\n @State() externalToggle: string = '';\n @State() viewId: string = '';\n @State() defaultFilterObject: Array<any> = [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [\n // {\n // \"searchField\": \"genderCode\",\n // \"searchOperator\": \"=\",\n // \"searchValue\" : \"1\"\n // }\n ],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 1,\n type: 'advanced',\n },\n ];\n\n @State() filterRenderList: Array<any> = [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [\n // {\n // \"searchField\": \"Title\",\n // \"searchOperator\": \"IN\",\n // \"searchValue\": \"VP\"\n // }\n ],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 1,\n type: 'advanced',\n },\n ];\n @State() logicalSearchOperator: number = 1;\n @State() lookupsMap: any = null;\n @State() formattedBulkActions: { label: string; value: string }[] = [];\n @State() advancedDrawerOpen: boolean = false;\n @State() viewDrawerOpen: boolean = false;\n @State() hotlistDrawerOpen: boolean = false;\n @State() customSearchDrawerOpen: boolean = false;\n @State() businessObjectKey: string;\n @State() hotListActive: string;\n @State() hotListCount: number = 0;\n @State() hotListId: string;\n @State() loadedHotlistTitle: string = '';\n @State() showHotlistForm: boolean = false;\n @State() confirmDialog: boolean = false;\n @State() confirmDialogDeleteView: boolean = false;\n @State() filteredCount: Array<any> = [];\n @State() hotlistSelectedFull: object = {};\n @State() advancedGroupSearchNodeId: string = '';\n @State() otherId: string = '';\n @State() updateForConfiguredColumnDefs: boolean = true;\n @State() filterObjectsWithGroups: Array<any> = [\n {\n id: 'root',\n filterGroupId: null,\n logicalOperator: 'AND',\n filters: [],\n },\n ];\n @State() loadedGridView: object = {};\n @State() linearLoading: boolean = false;\n @State() selectedGridId: string = '';\n @State() selectedViewName: string = '';\n @State() selectedViewIsDefault: boolean = false;\n @State() selectedViewGridViewVisibilityTypeId: number;\n @State() selectedGridViewGridConfigurations: any[];\n @State() allFilters: Array<any> = [];\n @State() visibleChips: any[];\n @State() overflowChips: any[];\n @State() overflowActive: boolean = false;\n @State() setSearchStart: boolean = false;\n @State() refreshChips: boolean = false;\n @State() gridUID: string = '';\n @State() recentSearches: any[] = [];\n @State() recentSearchesOptions: any[] = [];\n @State() isRecentSearch: boolean = false;\n @State() gridError: boolean = false;\n @State() gridHeight: string = 'calc(100vh - 200px)';\n @State() openActionPopoverMenu: boolean = false;\n @State() selectedRowParams: ICellRendererParams;\n @State() actionMenuAnchorElement: HTMLElement;\n @State() overflowActionMenuItems: ActionItem[];\n @State() initialFilterData: any = {\n filterObjectsWithGroups: [\n {\n id: 'root',\n filterGroupId: null,\n logicalOperator: 'AND',\n filters: [],\n },\n ],\n logicalSearchOperator: 1,\n filterObject: [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 2,\n type: 'advanced',\n },\n ],\n filterRenderList: [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 1,\n type: 'advanced',\n },\n ],\n };\n @State() defaultColumnState: any[] = null;\n @State() _distinctValueStore: any = {};\n @State() _distinctsCached: boolean = false;\n @State() shouldForceEmptyResults: boolean = false;\n @State() enableAdvancedSearch: boolean = true;\n @State() toggleSearchModeConfirmationDialogOpen: boolean = false;\n viewListcolumnDefs: any[];\n\n @Watch('triggerGridUpdate')\n handleTriggerGridUpdate(newValue: boolean, oldValue: boolean) {\n if (newValue !== oldValue && this.agGrid) {\n this.agGrid?.api?.refreshServerSide({ purge: true });\n this.updateServerSideDatasource('', 'advanced search sheet');\n }\n }\n\n @Event() selectedIdsChanged: EventEmitter<number[]>;\n\n @Listen('noDataDetected', { target: 'document' })\n noDataHandler() {\n this.linearLoading = false;\n this.noResults = true;\n }\n\n\n @Watch('catalogList')\n watchHandler(newVal: any, _oldVal: any) {\n if (newVal) {\n this.filterByCatalogObjectName(this.entityName);\n }\n }\n\n @Memoize()\n async getApiCatalogId(): Promise<string> {\n if (this.apiCatalogId) return this.apiCatalogId;\n\n const fetchedData = await getApiCatalogAndProduct();\n return (this.apiCatalogId = fetchedData.apiCatalogId);\n }\n\n async getApiMethodId(): Promise<string> {\n if (this.apiMethodId) return this.apiMethodId;\n\n const apiMethodInstance = await this.getApiMethodInstance();\n const apiMethodId = apiMethodInstance.apiMethodId;\n if (!apiMethodId) {\n throw new Error('apiMethodId not found');\n }\n\n return (this.apiMethodId = apiMethodId);\n }\n\n async getLookupApiMethod(): Promise<string> {\n if (this.lookupApiMethodId) return this.lookupApiMethodId;\n\n const promotedLookupMethod = await this.getPromotedLookupMethod();\n return (this.lookupApiMethodId = promotedLookupMethod?.unityBaseGetDataMethod?.apiMethodId);\n }\n\n @Memoize()\n async getApiMethodInstance() {\n return await getApiMethodInstance(this.queryId);\n }\n\n @Memoize()\n async getApiMethod() {\n return await getApiMethod(await this.getApiMethodId());\n }\n\n @Memoize()\n async getPromotedLookupMethod() {\n return await getPromotedLookupMethod(await this.getApiCatalogId());\n }\n\n @Memoize()\n async getFilterBody() {\n const apiMethodInstance = await this.getApiMethodInstance();\n return apiMethodInstance.body;\n }\n\n /**\n * Get column definitions from props or API Method Instance catalogModification\n */\n async getColumnDefinitions(): Promise<any[]> {\n if (this.columnDefs && this.columnDefs.length > 0) return this.columnDefs;\n\n const apiMethodInstance = await this.getApiMethodInstance();\n return JSON.parse(apiMethodInstance.catalogModification);\n }\n\n async getEntityName() {\n if (this.entityName) return this.entityName;\n\n const apiMethod = await this.getApiMethod();\n return (this.entityName = apiMethod.entityName);\n }\n\n updateFilterObject(recipe: (state: Draft<any[]>) => any[] | void | undefined) {\n this.filterObject = produce(this.filterObject, recipe);\n }\n\n async filterByCatalogObjectName(catalogObjectName: string) {\n if (!this.catalogList) {\n console.warn('catalogList is empty or undefined.');\n return;\n }\n // change to list from UdpGridColumnDefs\n const catalogObjectList = this.catalogList?.ctlg?.catalogObjectList;\n if (Array.isArray(catalogObjectList)) {\n catalogObjectList.forEach(object => {\n if (object.catalogObjectName === catalogObjectName) {\n const names = object.properties.map(property => {\n return { name: property.name };\n });\n this.advancedSearchFilterList = names;\n }\n });\n } else {\n console.warn('catalogObjectList is not an array or is undefined.');\n }\n }\n\n // PUTS apiCatalogData into localStorage\n getExtendedAdvancedSearchFilterList = async () => {\n\n try {\n const apiCatalogId = await this.getApiCatalogId();\n let apiCatalogData: any;\n\n // Retrieve apiCatalogData from localForage or make the API call if not found\n apiCatalogData = await localforage.getItem('apiCatalogData');\n if (!apiCatalogData) {\n // Fetch data from the API if not available in localForage\n apiCatalogData = await getApiCatalogById(apiCatalogId);\n // Store the fetched data in localForage for future use\n await localforage.setItem('apiCatalogData', apiCatalogData);\n }\n\n const transformedData = useTreeDatasource(apiCatalogData, await this.getEntityName(), true, true, '', '', '');\n\n if (transformedData) {\n state.catalogData = apiCatalogData;\n this.extendedSearchFilterList = transformedData;\n } else {\n console.error('No data returned from useTreeDatasource');\n }\n } catch (error) {\n this.gridError = true;\n console.error('Error fetching API Catalog:', error);\n }\n };\n\n constructor() {\n this.changeOperator = this.changeOperator?.bind(this);\n }\n changeOperator(event: CustomEvent) {\n // Convert string to integer\n const convertedValue = parseInt(event.detail, 10);\n // Update the state\n this.logicalSearchOperator = convertedValue;\n }\n\n @Method()\n async updateFilterAndFetch(newFilter: Array<any>) {\n this.updateFilterObject(() => [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [...newFilter],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 2,\n type: 'advanced',\n },\n ]);\n // Now call updateServerSideDatasource\n this.updateServerSideDatasource('', 'updateFilterAndFetch');\n }\n\n buildSearchFilterElements(filterElement, forObject, isInitialFilterElement) {\n let filterElementObject = {\n id: uuid(),\n groupId: 1,\n isInitialFilterElement: isInitialFilterElement,\n originalSearchOperator: filterElement.searchOperator,\n originalSearchValue: filterElement.searchValue,\n ...filterElement,\n };\n\n if (forObject) {\n filterElementObject = {\n id: uuid(),\n otherId: uuid(),\n level: 0,\n ...filterElementObject,\n };\n }\n\n return filterElementObject;\n }\n\n @Watch('externalSearchFilter')\n @Watch('defaultSearchObject')\n async handleFilteringSetup() {\n const filterBodyStr = await this.getFilterBody();\n const filterBody = !!filterBodyStr && typeof filterBodyStr === 'string' ? JSON.parse(filterBodyStr) : {};\n const intialFilterElements = filterBody?.filterElements || [];\n const updatedInitialFilterElementsForObject = [];\n\n const rootFilterGroupId = uuid();\n intialFilterElements.forEach(filterElement => {\n updatedInitialFilterElementsForObject.push({\n id: uuid(),\n filterGroupId: rootFilterGroupId,\n groupId: 1,\n isInitialFilterElement: true,\n ...filterElement,\n });\n });\n\n // construct filterElements from defaultSearchObject props\n this.defaultSearchObject.forEach(searchObj => {\n updatedInitialFilterElementsForObject.push(this.buildSearchFilterElements(searchObj, false, true));\n });\n\n // construct filterElements from filterObject props\n this.externalSearchFilter.forEach(filterElement => {\n updatedInitialFilterElementsForObject.push(this.buildSearchFilterElements(filterElement, false, false));\n });\n\n this.filterObjectsWithGroups = [\n {\n id: 'root',\n filterGroupId: null,\n logicalOperator: this.getLogicalOperatorValue(1), // defaulted to 1/AND\n filters: [],\n children: [\n {\n id: 'default',\n filterGroupId: rootFilterGroupId,\n logicalOperator: this.getLogicalOperatorValue(filterBody?.logicalSearchOperator),\n filters: updatedInitialFilterElementsForObject,\n },\n ],\n },\n ];\n\n this.initialFilterData.filterObjectsWithGroups = cloneDeep(this.filterObjectsWithGroups);\n\n this.logicalSearchOperator = filterBody?.logicalSearchOperator || 1;\n this.initialFilterData.logicalSearchOperator = filterBody?.logicalSearchOperator || 1;\n\n this.updateFilterObject(filterObject => {\n filterObject[0].filterElements = [...updatedInitialFilterElementsForObject];\n });\n const initialFilterObject = cloneDeep(this.initialFilterData.filterObject);\n initialFilterObject[0].filterElements = [...updatedInitialFilterElementsForObject];\n\n this.initialFilterData.filterObject = initialFilterObject;\n\n this.filterRenderList = cloneDeep(this.filterObject);\n this.initialFilterData.filterRenderList = cloneDeep(this.initialFilterData.filterObject);\n\n this.updateChipLayout();\n }\n\n async componentWillLoad() {\n lazySetupAgGridLibrary({ LicenseKey });\n\n this.gridError = false;\n\n\n this.gridUID = this.gridId + '-' + this.queryId;\n\n this.handleAdditionalSetup();\n this.handleFilteringSetup();\n\n this.viewListcolumnDefs = [\n {\n headerName: 'Name',\n field: 'name',\n resizable: true, // Enable resizing\n height: 100,\n },\n {\n field: 'gridViewVisibilityTypeId',\n cellRenderer: CustomRenderer,\n height: '100px',\n },\n {\n headerName: 'Actions',\n field: 'gridViewId',\n cellRenderer: CustomActionsRenderer,\n cellRendererParams: {\n onClick: this.handleLoadView,\n },\n },\n ];\n\n // Preload the ag-Grid library\n\n // Grab list of recent searches from local storage\n this.getRecentSearches();\n\n this.enableAdvancedSearch = this.defaultSearchMode === 'advanced';\n }\n\n waitForGrid(callback: () => void) {\n const observer = new MutationObserver(([], observer) => {\n const myGrid = this.el.shadowRoot.querySelector('#myGrid');\n if (myGrid) {\n observer.disconnect(); // Stop observing once the grid is found\n callback();\n }\n });\n\n observer.observe(this.el.shadowRoot, {\n childList: true, // Observe direct children changes\n subtree: true, // Observe nested children changes\n });\n }\n\n componentDidLoad() {\n lazySetupAgGridLibrary({ LicenseKey })\n .then(() => {\n // Initialize the ag-Grid\n this.waitForGrid(() => this.initializeGrid());\n })\n .catch(error => {\n this.gridError = true;\n console.error('Error during grid initialization:', error);\n });\n\n SharedContext.myClickCallback = this.cellClickHandler?.bind(this);\n SharedContext.viewActionCallback = this.viewActionClickHandler?.bind(this);\n SharedContext.thirdActionCallback = this.cellClickHandlerX?.bind(this);\n SharedContext.hotListAddHandler = (otherCellValue, callbackId) => {\n this.businessObjectKey = otherCellValue;\n console.log(callbackId);\n };\n\n // Can handle add or delete hotlist record from a list\n SharedContext.hotListAddHandler = (otherCellValue, callbackId) => {\n console.log(callbackId);\n\n function findMatchingHotListId(dataObject: any, otherCellValue: any): string | null {\n for (const record of dataObject.records) {\n const parsedData = JSON.parse(record.data);\n\n if (parsedData.businessObjectKey === otherCellValue.businessObjectKey) {\n return record.hotListRecordId;\n }\n }\n return null;\n }\n\n this.businessObjectKey = otherCellValue;\n if (!this.hotListActive) {\n this.hotlistDrawerOpen = true;\n } else {\n const matchingHotListId = findMatchingHotListId(this.hotlistSelectedFull, otherCellValue);\n removeRecordFromHotlist(matchingHotListId);\n const hotlistSelectedFull: HotListObject = this.hotlistSelectedFull as HotListObject;\n this.removeFilterItem({\n searchField: 'contactId',\n searchValue: matchingHotListId,\n });\n this.handleRequestHotlist(hotlistSelectedFull.hotListId);\n }\n };\n\n this.updateChipLayout();\n window.addEventListener('resize', this.updateChipLayout);\n }\n\n handleLinerLoading = (isLoading: boolean) => {\n this.linearLoading = isLoading;\n };\n\n //#region Action Renderer\n updateActionRendererState = (event: any, params: any) => {\n this.openActionPopoverMenu = !this.openActionPopoverMenu;\n this.selectedRowParams = params;\n this.actionMenuAnchorElement = event.currentTarget;\n };\n\n handleOnCloseActionPopover = event => {\n event?.preventDefault();\n this.selectedRowParams = null;\n this.openActionPopoverMenu = false;\n this.actionMenuAnchorElement = null;\n };\n\n getOverflowActionList = (overflowActions, params) => {\n return overflowActions?.map((action: ActionItem) => {\n const disabledAction = action?.checkDisabled ? action?.checkDisabled(params) : action?.disabled ?? false;\n const actionTitle = action?.getTitle ? action?.getTitle(params) : action?.title;\n return (\n <udp-menu-item\n label={actionTitle}\n iconName={action?.iconName}\n disabled={disabledAction}\n handleOnClick={e => {\n action?.handleOnClick(e, params);\n }}\n />\n );\n });\n };\n //#endregion\n\n // Main search call to server (old)\n updateServerSideDatasource(requestType: string, specialType: string) {\n console.warn('(dead branch) updateServerSideDataSouced: ', specialType);\n\n // Optionally close the drawer.\n if (requestType !== 'remove') {\n this.drawerOpen = false;\n this.advancedDrawerOpen = false;\n }\n }\n //#region Column Defs\n @Watch('configuredColumnDefs')\n @Watch('columnNames')\n @Watch('bulkActions')\n changeServerColumnDefs() {\n const updateColumnDefs = serverColumnDefs => {\n // Create a Set of fields from fullDataColumns for quick lookup\n // const fullDataFieldsSet = new Set(this.fullDataColumns.map(column => column.field));\n\n // Start with serverColumnDefs and update hide property\n let updatedColumns = serverColumnDefs.map(columnDef => {\n // Check if the field is 'searchRank' or in fullDataFieldsSet\n\n const hide = false;\n return {\n ...columnDef,\n hide: hide,\n };\n });\n\n // Add any columns from fullDataColumns that are not in serverColumnDefs\n this.fullDataColumns.forEach(column => {\n if (!serverColumnDefs.some(serverColumn => serverColumn.field === column.field) && this.showRank) {\n const hide = column.field !== 'searchRank';\n updatedColumns.push({ ...column, hide: hide });\n }\n });\n\n // Update the column header names\n if (this.columnNames) {\n const updatedColumnsWithNewNames = updatedColumns.map(obj => ({\n ...obj,\n headerName: this.columnNames[obj.headerName] || obj.headerName, // Use dictionary value or fallback to original value\n }));\n\n // Update the state or the updatedColumns with the new names\n updatedColumns = updatedColumnsWithNewNames;\n }\n\n // Hide column\n if (rowGroups.length > 0 && rowGroups) {\n let groupProps = null;\n groupProps = rowGroups.map(prop => prop.toLowerCase());\n updatedColumns = updatedColumns.map(column => {\n // Check if this column's field is present in groupProperty\n const hide = groupProps.includes(column.field.toLowerCase());\n return {\n ...column,\n hide: hide,\n };\n });\n }\n\n return updatedColumns;\n };\n\n const displayColumns = updateColumnDefs(this.configuredColumnDefs);\n\n const modifiedColumnDefs = displayColumns.map(column => {\n // Check if this column's headerName is present in displayColumns\n const isColumnDisplayed = displayColumns.find(displayColumn => displayColumn.headerName === column.headerName);\n // If it's not present, add the 'hide' property\n if (!isColumnDisplayed) {\n if (column.headerName === 'Search Rank') {\n return { ...column, sortable: false, hide: this.hasSearchRank ? false : true };\n } else {\n return { ...column, hide: true };\n }\n }\n // If it is present, return the column as is\n return column;\n });\n\n const addRenderers = (columnDefs, renderConfigs) => {\n return columnDefs.map(colDef => {\n // Find a matching configuration for this column\n const config = renderConfigs.find(cfg => cfg.field === colDef.field);\n if (config) {\n // Merge existing cellRendererParams with ones from config, prioritizing config params\n const cellRendererParams = {\n ...colDef.cellRendererParams,\n ...config.cellRendererParams,\n otherField: config.otherField, // Assuming you might want to keep using this pattern\n callbackId: config.callbackId,\n showViewAction: true,\n showThirdAction:\n this.showHotlistButton &&\n !(this.restrictedGridFeatures?.Hotlist && !this.userPermissions.some(permission => permission.name === this.restrictedGridFeatures.Hotlist)),\n };\n\n if (config?.rendererName === 'actionsRenderer') {\n const maximumVisibleActions = 4;\n //set minWidth and maxWidth for action columns\n const actionColumnWidth = getActionColumnWidth(config?.cellRendererParams?.actionList);\n colDef.minWidth = actionColumnWidth;\n colDef.maxWidth = actionColumnWidth;\n\n //sort action list\n const sortedActionList = sortActionItemOrder([...config.cellRendererParams.actionList]);\n\n if (config?.cellRendererParams?.actionList?.length > maximumVisibleActions) {\n // Split the action list if there are more than 4 actions\n const { visibleActions, overflowActions } = splitActionList(sortedActionList, maximumVisibleActions - 1);\n this.overflowActionMenuItems = overflowActions;\n visibleActions.push({\n id: 100,\n iconName: 'overflowMenuVertical',\n title: 'View More',\n handleOnClick: this.updateActionRendererState.bind(this),\n disabled: false,\n });\n\n cellRendererParams.actionList = visibleActions;\n }\n }\n\n if (config.rendererName === 'currencyRenderer') {\n colDef.type = 'rightAligned';\n }\n\n return {\n ...colDef,\n cellRenderer: config.rendererName,\n cellRendererParams: cellRendererParams,\n };\n }\n return colDef; // Return original colDef if no matching config is found\n });\n };\n\n const addActionsColumn = columnDefs => {\n const actionsColumnExists = columnDefs.some(column => column.field === 'actions');\n if (!actionsColumnExists && !this.hideActionsColumn) {\n const actionsColumn = {\n headerName: 'Actions',\n field: 'actions',\n cellRendererParams: {\n shouldDisplayCustomContent: false,\n },\n cellRenderer: 'hotListAddRenderer',\n pinned: 'right',\n };\n columnDefs.push(actionsColumn);\n }\n return columnDefs;\n };\n\n const CHECKBOX_FIELD = 'checkbox';\n const addCheckboxColumn = columnDefs => {\n var bulkActions = this.bulkActions; // check if bulk actions are configured, if not then skip adding checkboxes\n if (bulkActions?.length > 0 || this.enableCheckboxOnColumns) {\n const checkboxColumnExists = columnDefs.some(column => column.field === CHECKBOX_FIELD);\n if (!checkboxColumnExists) {\n const checkboxColumn = {\n headerName: '', // No title for the checkbox column\n field: CHECKBOX_FIELD,\n checkboxSelection: true, // This enables the checkbox selection feature\n headerCheckboxSelection: this.enableCheckboxOnColumns, // set to false now as the server-size for select all is not fully implemented\n pinned: 'left', // Pinned to the left\n lockVisible: true, // This prevents the column from being hideable\n maxWidth: 70,\n filter: false, // no need to show filter for this column\n menuTabs: [], // Disables the menu in the column header\n sortable: false, // Disables sorting for this column\n };\n columnDefs.unshift(checkboxColumn); // Use unshift to add it at the start of the array\n }\n }\n return columnDefs;\n };\n\n const addToolTip = columnDefs => {\n return columnDefs.map(colDef => {\n colDef.tooltipField = colDef.field;\n colDef.headerTooltip = colDef.headerName;\n return { ...colDef };\n });\n };\n\n // Usage of the function to add checkbox column\n const columnDefsWithCheckbox = addCheckboxColumn(modifiedColumnDefs);\n\n // Add the Actions column to the definitions with checkbox\n let columnDefsWithActions = addActionsColumn(columnDefsWithCheckbox);\n\n // Reorder the columns based on the currentColumnOrdering\n if (this.currentColumnOrdering.length > 0) {\n const reorderedColumns = this.currentColumnOrdering.map(currentColOrder => columnDefsWithActions.find(col => col.field === currentColOrder.colId));\n // Update the columnDefs with the reordered columns\n columnDefsWithActions = reorderedColumns;\n }\n\n // Update each column definition's 'hide' property with the value from grid state\n if (this.currentHiddenColumns?.length > 0) {\n columnDefsWithActions = columnDefsWithActions.map(colDef => {\n const hiddenCol = this.currentHiddenColumns.find(hiddenCol => hiddenCol.colId === colDef.field);\n if (hiddenCol) {\n return { ...colDef, hide: hiddenCol.hide };\n }\n return colDef;\n });\n }\n\n const columnDefsWithToolTips = addToolTip(columnDefsWithActions);\n\n // Now pass this updated array to addRenderers or other manipulation functions\n const columnDefsWithRenderers = addRenderers(columnDefsWithToolTips, this.renderConfigs);\n\n this.serverColumnDefs = columnDefsWithRenderers;\n }\n\n @Watch('agGrid')\n @Watch('serverColumnDefs')\n watchServerColumnDefs() {\n if (this.agGrid && this.serverColumnDefs.length > 0) {\n const baseColumnDefs = this.serverColumnDefs.map(colDef => {\n const shouldHide = this.hiddenColumnsList.includes(colDef.field);\n return {\n ...colDef,\n hide: shouldHide,\n };\n });\n\n this.agGrid.api.setColumnDefs(baseColumnDefs);\n this.defaultColumnState = this.agGrid.columnApi.getColumnState();\n }\n }\n\n @Watch('hiddenColumnsList')\n watchHiddenColumnList() {\n if (this.agGrid) {\n const newDefaultState = this.defaultColumnState.map(col => {\n const shouldHide = this.hiddenColumnsList.includes(col.colId);\n return {\n ...col,\n hide: shouldHide,\n };\n });\n this.defaultColumnState = newDefaultState;\n //TODO here might not want to apply column state if a view is active\n if (this.loadedView.length === 0) {\n this.agGrid.columnApi.applyColumnState({ state: this.defaultColumnState, applyOrder: true });\n }\n }\n }\n\n @Watch('configuredColumnDefs')\n configuredColumnDefsChanged(newValue: Array<any>) {\n this.hasConfiguredColumnDefs = newValue.length > 0;\n }\n //#endregion\n\n @Watch('isServerSide')\n @Watch('apiMethodId')\n @Watch('agGrid')\n @Watch('filterObject')\n @Watch('logicalSearchOperator')\n @Watch('lookupsMap')\n changeServerSideDatasource(_newValue?: any, _oldValue?: any, propName?: string) {\n console.log(`changeServerSideDatasource triggered by ${propName || 'unknown'}`);\n this.linearLoading = true;\n\n // Ensure all prerequisites are met before attempting to update the data source.\n if (!this.isServerSide || !this.apiMethodId) {\n this.linearLoading = false;\n console.warn('Grid update prerequisites not met..');\n return;\n }\n\n this.noResults = false;\n\n let datasource = SearchServiceDatasource(\n null,\n this.gridUID,\n this.isRecentSearch,\n this.apiMethodId,\n this.hotListActive && this.extractContactIDs(this.hotlistSelectedFull).length === 0,\n this.filterObject,\n this.logicalSearchOperator,\n this.getLookupApiMethod(),\n executeQueryAdHocAndMapLookups,\n this.lookupsMap,\n this.defaultSearchObject,\n (dataFetched, totalCount) => {\n try {\n if (totalCount === 0) {\n this.linearLoading = false;\n }\n\n // Convert the fetched data to ag-grid columns, representing the full set of data columns\n this.fullDataColumns = convertToAgGridColumns(dataFetched);\n\n this.hasSearchRank = !!dataFetched?.[0]?.searchRank;\n\n if (this.agGrid) {\n // Assuming api is initialized\n\n // Listen for any event that signifies data has been updated or loaded\n this.agGrid.api.addEventListener('modelUpdated', () => {\n const rowCount = this.agGrid.api.getDisplayedRowCount();\n\n this.getExtendedAdvancedSearchFilterList();\n\n // Check if the grid has no rows displayed after a data update\n if (rowCount === 0) {\n // No rows in the grid, meaning the data source returned an empty pageList\n this.linearLoading = false; // Stop the loading animation\n // Optionally, trigger any other UI updates to reflect the empty state\n } else {\n // Rows are present, data loading was successful with content\n // Any additional handling for successful data load with rows\n }\n });\n }\n\n if (this.agGrid) {\n this.linearLoading = false;\n // load ctlg for advanced search after setting column defs\n }\n } catch (error) {\n this.gridError = true;\n console.error('Error processing data fetched for the grid:', error);\n }\n\n // Update list of recent searches\n this.getRecentSearches();\n this.isRecentSearch = false;\n },\n this.handleLinerLoading,\n );\n\n // Set the new data source and trigger a refresh.\n this.serverSideDatasource = datasource;\n\n this.getGridState();\n }\n\n cacheDistinctValues(rowData) {\n rowData.forEach(row => {\n Object.keys(row).forEach(field => {\n if (!this._distinctValueStore[field]) {\n this._distinctValueStore[field] = new Set();\n }\n this._distinctValueStore[field].add(row[field]);\n });\n });\n }\n\n withFilterTracking(datasource) {\n const originalGetRows = datasource.getRows;\n\n this._distinctValueStore = {};\n\n datasource.getRows = params => {\n const wrappedParams = {\n ...params,\n success: data => {\n const rowData = data?.rowData || [];\n\n if (Array.isArray(rowData) && rowData.length > 0 && !this._distinctsCached) {\n this.cacheDistinctValues(rowData);\n this._distinctsCached = true;\n\n this.updateColumnDefsWithFilterValues();\n }\n\n params.success(data);\n },\n };\n\n originalGetRows(wrappedParams, this.shouldForceEmptyResults);\n };\n\n return datasource;\n }\n\n updateColumnDefsWithFilterValues() {\n const currentDefs = this.agGrid.columnApi.getColumns().map(col => col.getColDef());\n\n const newDefs = currentDefs.map(col => {\n if (!col.field) return col;\n\n const distinct = Array.from(this._distinctValueStore[col.field] || []);\n\n return {\n ...col,\n filter: 'agSetColumnFilter',\n filterParams: {\n values: params => {\n params.success(distinct);\n },\n valuesArray: distinct,\n },\n };\n });\n\n this.agGrid.api.setColumnDefs(newDefs);\n }\n\n @Watch('serverSideDatasource')\n @Watch('agGrid')\n setServerSideDatasource() {\n // Set the new data source and trigger a refresh.\n if (this.agGrid) {\n try {\n const wrappedDatasource = this.withFilterTracking(this.serverSideDatasource);\n this.agGrid.api.setServerSideDatasource(wrappedDatasource);\n this.gridError = false;\n // No need to call refreshServerSide() as setting the datasource will implicitly refresh it.\n } catch (error) {\n this.gridError = true;\n console.error('Error setting server-side datasource:', error);\n }\n } else {\n this.serverSideDatasource.getRows({\n api: undefined,\n columnApi: undefined,\n context: undefined,\n request: {\n startRow: 0,\n endRow: 20,\n rowGroupCols: [],\n valueCols: [],\n pivotCols: [],\n pivotMode: false,\n groupKeys: [],\n filterModel: {},\n sortModel: [],\n // @ts-expect-error -- Prefetch property is custom\n prefetch: true,\n },\n fail() {},\n success() {},\n });\n }\n }\n\n adjustGridScroll() {\n const gridViewport = this.el.querySelector('.ag-center-cols-viewport') as HTMLElement;\n if (gridViewport && gridViewport.style) {\n gridViewport.style.overflowY = 'hidden';\n }\n const scrollViewport = this.el.querySelector('.ag-body-viewport.ag-layout-normal') as HTMLElement;\n if (scrollViewport && scrollViewport.style) {\n scrollViewport.style.overflowY = 'hidden';\n }\n }\n\n triggerResizeEvent() {\n let resizeEvent = new CustomEvent('resize');\n window.dispatchEvent(resizeEvent);\n }\n\n @Listen('resize', { target: 'window' })\n handleResize() {\n this.updateChipLayout();\n }\n\n @Watch('serverColumnDefs')\n serverColumnDefsChanged(newValue: any[]) {\n if (newValue && newValue.length != 0 && !this.isSetupComplete) {\n this.handleSecondarySetup();\n this.isSetupComplete = true;\n }\n this.updateChipLayout();\n }\n\n @Watch('filterRenderList')\n watchChipLayoutChanges() {\n this.updateChipLayout();\n }\n\n private selectedRowMap: Record<string, any> = {};\n initializeGrid() {\n this.gridOptions = {\n animateRows: true,\n ...(this.isServerSide ? { rowModelType: 'serverSide' } : {}),\n ...(this.isServerSide ? { serverSideStoreType: 'partial' } : {}),\n ...(this.isServerSide ? { cacheOverflowSize: 2 } : {}),\n ...(this.isServerSide ? { cacheBlockSize: 20 } : {}),\n ...(this.isServerSide ? { maxConcurrentDatasourceRequests: 1 } : {}),\n pagination: true,\n paginationPageSize: 20,\n rowHeight: 32,\n defaultColDef: {\n filter: !this.enableAdvancedSearch,\n menuTabs: this.enableAdvancedSearch ? ['generalMenuTab', 'columnsMenuTab'] : ['generalMenuTab', 'filterMenuTab', 'columnsMenuTab'],\n resizable: true,\n },\n rowSelection: 'multiple',\n ...(this.rowIdField\n ? {\n getRowId: params => {\n const id = params.data?.[this.rowIdField];\n if (!id) {\n console.warn(`Missing ID for row using rowIdField=\"${this.rowIdField}\"`, params.data);\n return undefined;\n }\n return id;\n },\n }\n : {}),\n suppressRowClickSelection: true,\n onRowSelected: event => {\n const node = event.node;\n const rowId = node.id;\n\n if (!rowId) return;\n\n if (node.isSelected()) {\n this.selectedRowMap[rowId] = node.data;\n } else {\n delete this.selectedRowMap[rowId];\n }\n\n this.selectedRowCount = Object.keys(this.selectedRowMap).length;\n this.rowsSelected = this.selectedRowCount > 0;\n },\n onCellClicked: event => {\n this.dataRowClicked = event.data;\n },\n\n // frameworkComponents: {\n // emailCellRenderer: 'email-cell-renderer',\n // },\n components: {\n emailCellRenderer: EmailCellRenderer,\n openFunctionCellRenderer: OpenFunctionCellRenderer,\n hoverContentCellRenderer: HoverContentCellRenderer,\n hotListAddRenderer: HotListAddRenderer,\n dateTimeCellRenderer: DateTimeCellRenderer,\n actionsRenderer: ActionsRenderer,\n statusRenderer: StatusRenderer,\n iconRenderer: IconRenderer,\n currencyRenderer: CurrencyRenderer,\n },\n columnDefs: this.serverColumnDefs, // getting defs for server side fetch\n rowData: this.rowData,\n serverSideDatasource: this.serverSideDatasource,\n sideBar: this.filterPanelOpen\n ? {\n toolPanels: [\n {\n id: 'filters',\n labelDefault: 'Filters',\n labelKey: 'filters',\n iconKey: 'filter',\n toolPanel: 'agFiltersToolPanel',\n },\n {\n id: 'columns',\n labelDefault: 'Columns',\n labelKey: 'columns',\n iconKey: 'columns',\n toolPanel: 'agColumnsToolPanel',\n toolPanelParams: {\n suppressRowGroups: true,\n suppressValues: true,\n suppressPivots: true,\n suppressPivotMode: true,\n },\n },\n ],\n defaultToolPanel: '',\n }\n : null,\n onGridReady: (event: GridReadyEvent<any>) => {\n this.agGrid = {\n api: event.api,\n columnApi: event.columnApi, // still needed for now\n };\n\n const tryResize = () => {\n try {\n // If loadedView/loadedViewData aren't ready or throw, fallback to just resizing\n const view = this.loadedView;\n const data = this.loadedViewData;\n\n const skipResize = Array.isArray(view) && Array.isArray(data) ? view.length !== 0 || data.length !== 0 : false;\n\n if (!skipResize) {\n if (this.fitGrid === 'fit') {\n this.agGrid?.api?.sizeColumnsToFit?.();\n } else {\n this.agGrid?.columnApi?.autoSizeAllColumns?.();\n }\n }\n } catch (error) {\n // Fallback: just attempt resizing if any error occurs\n if (this.fitGrid === 'fit') {\n this.agGrid?.api?.sizeColumnsToFit?.();\n } else {\n this.agGrid?.columnApi?.autoSizeAllColumns?.();\n }\n }\n };\n\n [500, 1000, 2000, 3000, 4000, 5000, 6000, 10000, 20000].forEach(delay => {\n setTimeout(tryResize, delay);\n });\n\n this.getGridState?.();\n this.adjustGridScroll?.();\n },\n onColumnMoved: () => {\n this.currentColumnOrdering = this.agGrid.columnApi.getColumnState();\n this.getGridState(true);\n },\n onColumnVisible: () => {\n this.currentHiddenColumns = this.agGrid.columnApi.getColumnState();\n this.getGridState(true);\n },\n onColumnResized: () => {\n let gridFilters = localStorage.getItem('currentGridFilters');\n if (!gridFilters || gridFilters?.length === 0) {\n this.getGridState();\n } else {\n this.getGridState(true);\n }\n },\n onColumnPinned: () => {\n this.getGridState(true);\n },\n onFilterChanged: () => {\n const filterModel = this.agGrid.api.getFilterModel();\n this.transformAndApplyFilters(filterModel);\n this.getGridState();\n },\n onSortChanged: () => {\n this.getGridState(true);\n },\n onFirstDataRendered: () => {\n this.getGridState();\n // Here you can also check if pivot mode has changed\n const isPivotMode = this.agGrid.columnApi.isPivotMode();\n if (isPivotMode !== this.prevPivotMode) {\n this.getPivotModeState(); // Replace with your actual method\n this.prevPivotMode = isPivotMode;\n }\n },\n onFilterOpened: params => {\n const field = params.column.getColDef().field;\n const customFilters = this.filterObject?.[0]?.filterElements || [];\n\n // Get all filterElements matching the column and operator '='\n const matchingFilters = customFilters.filter(f => f.searchField.toLowerCase() === field.toLowerCase() && f.searchOperator === '=');\n\n if (matchingFilters.length === 0) return;\n\n const filterInstance = params.api.getFilterInstance(field);\n\n if (filterInstance) {\n const values = matchingFilters.map(f => f.searchValue);\n filterInstance.setModel({\n values,\n });\n\n if (typeof filterInstance.refreshFilterUi === 'function') {\n filterInstance.refreshFilterUi();\n }\n }\n },\n suppressMenuHide: this.suppressMenuHide,\n tooltipShowDelay: 1000,\n } as unknown as GridOptions;\n const myGrid = this.el.shadowRoot.querySelector('#myGrid');\n if (!myGrid) throw new Error('#myGrid did not exist when trying to initalize agGrid');\n new window['agGrid'].Grid(myGrid, this.gridOptions);\n }\n\n handleSearchModeToggle() {\n this.toggleSearchModeConfirmation(true);\n }\n\n confirmSearchModeToggle() {\n this.enableAdvancedSearch = !this.enableAdvancedSearch;\n // switching from advanced to standard\n if (!this.enableAdvancedSearch) {\n this.noResults = true;\n this.refreshOnNoResults();\n } else {\n this.noResults = true;\n this.refreshOnNoResults(false);\n }\n this.toggleSearchModeConfirmation(false);\n }\n\n @Watch('defaultSearchMode')\n handleDefaultSearchModeChange(newValue: 'advanced' | 'standard') {\n this.enableAdvancedSearch = newValue === 'advanced';\n }\n\n @Watch('enableAdvancedSearch')\n onSearchModeChange() {\n this.reinitializeGrid();\n }\n\n toggleSearchModeConfirmation(show: boolean) {\n this.toggleSearchModeConfirmationDialogOpen = show;\n }\n\n reinitializeGrid() {\n if (this.agGrid?.api) {\n this.agGrid.api.destroy();\n this._distinctsCached = false; // Reset distincts cache\n this._distinctValueStore = {}; // Reset distinct value store\n }\n this.initializeGrid();\n }\n\n // After apiCatalogId is pushed into localStorage\n handleGetPromotedLookupMethod = async () => {\n try {\n // Fetch the API Catalog ID, but don't await it since may not be needed yet\n this.getApiCatalogId().then(apiCatalogId => {\n if (!apiCatalogId) {\n this.gridError = true;\n throw new Error('apiCatalogId is undefined');\n }\n });\n\n localStorage.setItem('lookupApiMethodId', await this.getLookupApiMethod());\n\n let productList = state.catalogData;\n this.catalogList = productList;\n } catch (error) {\n this.gridError = true;\n console.error('Error performing API call:', error);\n }\n };\n\n handleGetInstanceAndMethod = async () => {\n localStorage.setItem('apiMethodId', await this.getApiMethodId());\n\n // Save data to local storage\n const catalogModificationP = this.getColumnDefinitions();\n\n const getConfiguredColumnDefs = UdpGridColumnDefs(await catalogModificationP);\n getConfiguredColumnDefs.forEach(column => {\n if (this.rowGrouping.includes(column.field)) {\n column.rowGroup = true;\n column.hide = true;\n }\n });\n this.configuredColumnDefs = getConfiguredColumnDefs;\n this.lookupsMap = this.getLookupsMap(await catalogModificationP);\n };\n\n async getLookupId(lookupsMap: any) {\n if (!lookupsMap) return null;\n\n const lookupToFilterOn = Object.values(lookupsMap).find((item: any) => item.filterOn);\n const lookupId = (lookupToFilterOn as any)?.value || '';\n\n const uuidPattern = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;\n\n if (!lookupId || typeof lookupId !== 'string' || !uuidPattern.test(lookupId)) {\n console.error('Invalid lookupId', lookupId);\n return null;\n }\n\n // Call the function and await its result\n const data = await executeQueryWithParameters(\n {\n data: {\n id: lookupId,\n },\n },\n await this.getLookupApiMethod()\n );\n this.filterChips = data.data;\n return lookupId;\n }\n\n getLookupsMap(queryColumnsData) {\n if (!queryColumnsData.length) return null;\n const map = {};\n const lookupColumns = queryColumnsData.filter(column => {\n const lookupValue = column.extendedProperties?.lookup;\n return !!lookupValue;\n });\n\n lookupColumns.forEach(lc => {\n map[lc.name] = {\n lookupKeyName: lc.extendedProperties?.lookupKeyName || '',\n lookupValueName: lc.extendedProperties?.lookupValueName || '',\n value: lc.extendedProperties?.lookup || '',\n filterOn: !!lc.filterOn || false,\n };\n });\n this.getLookupId(map);\n const keys = Object.keys(map);\n const keyString = keys[0];\n this.filterOn = keyString;\n return map;\n }\n\n async handleAdditionalSetup() {\n // Ensure handleGetPromotedLookupMethod is awaited to complete before proceeding.\n await this.handleGetPromotedLookupMethod();\n\n // After awaiting, check again for lookupApiMethodId in localStorage.\n if (await this.getLookupApiMethod()) {\n this.handleGetInstanceAndMethod();\n } else {\n // If lookupApiMethodId is still not set, it means there was an issue in handleGetPromotedLookupMethod.\n console.error('Failed to retrieve lookupApiMethodId - handleAdditionalSetup aborted.');\n // Return or handle the error as needed.\n }\n }\n\n handleSecondarySetup() {\n this.fetchAvailableGridActions();\n this.filterByCatalogObjectName(this.entityName);\n this.fetchDataForViews();\n this.transformBulkActions();\n this.handleGetAllHotlists();\n }\n\n getGridState(setAutoGridState = false) {\n if (this.gridOptions && this.agGrid) {\n const columnState = this.agGrid.columnApi.getColumnState();\n const columnGroupState = this.agGrid.columnApi.getColumnGroupState();\n const filterModel = this.filterObjectsWithGroups;\n const isPivotMode = this.agGrid.columnApi.isPivotMode();\n const sortModel = columnState.filter(column => column.sort != null);\n\n const gridState = [];\n const columnGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column,\n gridId: this.gridId,\n values: JSON.stringify(columnState),\n };\n const columnGroupGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column_Group,\n gridId: this.gridId,\n values: JSON.stringify(columnGroupState),\n };\n const columnSortGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column_Sort,\n gridId: this.gridId,\n values: JSON.stringify(sortModel),\n };\n const columnFilterGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column_Filter,\n gridId: this.gridId,\n values: JSON.stringify(filterModel),\n };\n const pivotGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Pivot_Mode,\n gridId: this.gridId,\n values: JSON.stringify(isPivotMode),\n };\n gridState.push(columnGridConfiguration);\n gridState.push(columnGroupGridConfiguration);\n gridState.push(columnSortGridConfiguration);\n gridState.push(columnFilterGridConfiguration);\n gridState.push(pivotGridConfiguration);\n\n this.gridState = gridState;\n let gridStateObject = {\n state: gridState,\n tenantId: getCurrentTenantId(),\n gridId: this.gridId,\n loadedGridViewName: null,\n };\n\n if (setAutoGridState) {\n let savedGridStatesString = localStorage.getItem('savedGridStates');\n if (!savedGridStatesString) {\n localStorage.setItem('savedGridStates', JSON.stringify([gridStateObject]));\n } else {\n let currentGridStateObj = this.getCurrentGridState();\n if (!currentGridStateObj) {\n let savedGridStatesArray = JSON.parse(savedGridStatesString) ?? [];\n savedGridStatesArray.push(gridStateObject);\n localStorage.setItem('savedGridStates', JSON.stringify(savedGridStatesArray));\n } else {\n this.saveCurrentGridState({\n ...currentGridStateObj,\n state: gridState,\n });\n }\n }\n }\n // Do something with columnState\n }\n }\n setColumnState(state: Array<{ [key: string]: any }>) {\n if (this.gridOptions && this.agGrid.columnApi) {\n const castedState = state as any;\n this.agGrid.columnApi.applyColumnState({ state: castedState, applyOrder: true });\n } else {\n console.warn('Grid options or Column API not available.');\n }\n }\n\n onFirstDataRendered(gridData) {\n if (this.hotListActive) {\n this.handleRemoveHotlist();\n }\n let gridConfigurations = [];\n let gridConfigArray = [];\n if (gridData?.state) {\n gridConfigArray = gridData.state;\n let loadedGridViewName = gridData.loadedGridViewName;\n if (loadedGridViewName?.length > 0) {\n this.loadedViewTitle = loadedGridViewName;\n }\n this.loadedView = gridConfigArray;\n }\n if (gridData?.gridViewGridViewGridConfiguration) {\n this.loadedViewTitle = gridData.name;\n gridConfigArray = gridData?.gridViewGridViewGridConfiguration;\n }\n if (gridConfigArray && gridConfigArray?.length > 0) {\n gridConfigArray.forEach(config => {\n let state = config;\n if (config?.gridViewGridConfigurationGridConfiguration) {\n state = config?.gridViewGridConfigurationGridConfiguration;\n }\n if (state) {\n gridConfigurations.push({\n gridConfigurationId: state?.gridConfigurationId ?? 0,\n gridStateTypeId: state?.gridStateTypeId,\n });\n switch (state.gridStateTypeId) {\n case 1:\n // this.agGrid.columnApi.applyColumnState({state: JSON.parse(state.values)});\n this.loadedViewData = state.values;\n this.setColumnState(JSON.parse(state.values));\n //this.agGrid.api.refreshServerSide();\n break;\n case GridStateTypeEnums.Pivot_Mode:\n this.agGrid.columnApi.setPivotMode(JSON.parse(state.values));\n\n break;\n case GridStateTypeEnums.Column_Sort:\n const currentColumnState = this.agGrid.columnApi.getColumnState();\n const newColumnState = JSON.parse(state.values);\n const mergedState = currentColumnState.map(col => newColumnState.find(newCol => newCol.colId === col.colId) || col);\n this.agGrid.columnApi.applyColumnState({ state: mergedState });\n\n break;\n case GridStateTypeEnums.Column_Filter:\n let filterObjects = JSON.parse(state.values);\n this.defaultSearchObject.forEach(defaultFilter => {\n let filterExists = false;\n\n for (let fo of filterObjects) {\n if (Array.isArray(fo.filters)) {\n const match = fo.filters.find(f => f.searchField === defaultFilter.searchField);\n if (match) {\n match.isInitialFilterElement = true;\n filterExists = true;\n break;\n }\n }\n }\n\n if (!filterExists) {\n const newFilter = this.buildSearchFilterElements(defaultFilter, true, true);\n const target = filterObjects.find(fo => Array.isArray(fo.filters));\n if (target) {\n target.filters.push(newFilter);\n } else {\n filterObjects.push({ filters: [newFilter] });\n }\n }\n });\n\n this.filterObject\n .flatMap(({ filterElements }) => filterElements)\n .forEach(filterElement => {\n const exists = filterObjects[0].filters.some(filter => filter.searchField === filterElement.searchField);\n if (!exists) {\n filterObjects[0].filters.push(this.buildSearchFilterElements(filterElement, true, false));\n }\n });\n\n this.filterObjectsWithGroups = filterObjects;\n this.handleSideSheetButtonClick();\n break;\n case GridStateTypeEnums.Column_Group:\n this.agGrid.columnApi.setColumnGroupState(JSON.parse(state.values));\n break;\n default:\n break;\n }\n }\n });\n if (this.filterChips?.length === 0) {\n let currentGridStateObj = this.getCurrentGridState();\n let filters = currentGridStateObj;\n if (currentGridStateObj?.gridViewGridViewGridConfiguration) {\n filters = currentGridStateObj?.gridViewGridViewGridConfiguration;\n }\n if (filters) {\n this.updateChipLayout();\n }\n }\n } else {\n }\n this.selectedGridViewGridConfigurations = gridConfigurations;\n }\n\n primaryActionClick(type: string) {\n if (type === 'advancedSearch') {\n this.advancedDrawerOpen = !this.advancedDrawerOpen;\n } else if (type === 'views') {\n this.viewDrawerOpen = !this.viewDrawerOpen;\n } else if (type === 'customSearch') {\n this.customSearchDrawerOpen = !this.customSearchDrawerOpen;\n } else {\n this.hotlistDrawerOpen = !this.hotlistDrawerOpen;\n }\n }\n\n // Opens the drop down menu of the gear icon in the header\n showGridOptions() {\n this.gridOptionsDrawerOpen = !this.gridOptionsDrawerOpen;\n }\n\n resetToOriginalFilters() {\n this.filterObjectsWithGroups = cloneDeep(this.initialFilterData.filterObjectsWithGroups);\n this.filterObject = cloneDeep(this.initialFilterData.filterObject);\n this.logicalSearchOperator = cloneDeep(this.initialFilterData.logicalSearchOperator);\n this.filterRenderList = cloneDeep(this.initialFilterData.filterRenderList);\n this.updateChipLayout();\n }\n\n clearViewFilter() {\n if (this.gridOptions && this.agGrid) {\n const { api, columnApi } = this.agGrid;\n\n api.setQuickFilter('');\n columnApi.setRowGroupColumns([]);\n api.setFilterModel(null);\n columnApi.applyColumnState({ state: this.defaultColumnState, applyOrder: true });\n this.loadedView = [];\n }\n state.hotListActive = '';\n let currentGridStateObj = this.getCurrentGridState();\n if (currentGridStateObj) {\n this.saveCurrentGridState({\n ...currentGridStateObj,\n state: null,\n loadedGridViewName: null,\n });\n }\n this.loadedViewTitle = '';\n this.refreshGrid();\n }\n\n clearFilters() {\n this.refreshOnNoResults();\n if (this.gridOptions && this.agGrid) {\n const { api } = this.agGrid;\n\n api.setQuickFilter('');\n api.setFilterModel(null);\n }\n }\n\n refreshGrid() {\n this.changeServerSideDatasource();\n this.fitColumns();\n }\n\n refreshOnNoResults = (resetFilters: boolean = true) => {\n this.hotListActive = '';\n this.loadedView = [];\n\n if (this.noResults) {\n lazySetupAgGridLibrary({ LicenseKey })\n .then(() => {\n this.handleSecondarySetup();\n })\n .catch(error => {\n this.gridError = true;\n console.error('Error refreshing the grid on no results:', error);\n });\n }\n this.updateServerSideDatasource('', 'advanced search sheet');\n if (resetFilters) {\n this.resetToOriginalFilters();\n }\n this.noResults = false;\n };\n\n // ONCLICK FUNCTIONS for grid-primary-bar and stencil-icon-button-grid-action-header\n exportToCsv() {\n if (this.agGrid) {\n const params = {};\n this.agGrid.api.exportDataAsCsv(params);\n }\n }\n fitColumns() {\n if (this.gridOptions && this.agGrid) {\n this.agGrid.api.sizeColumnsToFit();\n }\n }\n expandColumns() {\n if (this.gridOptions && this.agGrid && this.agGrid.columnApi) {\n this.agGrid.columnApi.autoSizeAllColumns();\n }\n }\n togglePanel(panelType) {\n const panelTypes = ['filters', 'columns'];\n panelTypes.forEach(type => {\n if (type !== panelType) {\n const otherPanelOpenKey = `${type}PanelOpen`;\n this[otherPanelOpenKey] = false; // Close other panel if open\n }\n });\n\n const panelOpenKey = `${panelType}PanelOpen`;\n this[panelOpenKey] = !this[panelOpenKey]; // Toggle the current panel\n\n // Create the toolPanel configuration based on the panelType\n const toolPanelConfig = {\n id: panelType,\n labelDefault: panelType.charAt(0).toUpperCase() + panelType.slice(1),\n labelKey: panelType,\n iconKey: panelType === 'filters' ? 'filter' : 'columns',\n toolPanel: panelType === 'filters' ? 'agFiltersToolPanel' : 'agColumnsToolPanel',\n toolPanelParams: {\n suppressRowGroups: true,\n suppressValues: true,\n suppressPivots: true,\n suppressPivotMode: true,\n },\n };\n\n // Update gridOptions to reflect new sidebar settings\n this.gridOptions.sideBar = this[panelOpenKey]\n ? {\n toolPanels: [toolPanelConfig],\n defaultToolPanel: panelType,\n }\n : null;\n\n this.agGrid.api.setSideBarVisible(this[panelOpenKey]);\n\n if (this[panelOpenKey]) {\n this.agGrid.api.openToolPanel(panelType);\n } else {\n this.agGrid.api.closeToolPanel();\n }\n\n // Apply Direct DOM Manipulation\n const sidebarElement = this.el.shadowRoot.querySelector('.ag-side-bar');\n if (sidebarElement instanceof HTMLElement) {\n sidebarElement.style.width = this[panelOpenKey] ? '200px' : 'initial';\n }\n }\n toggleServerSide = () => {\n this.isServerSide = !this.isServerSide;\n };\n getPivotModeState() {\n if (this.gridOptions && this.agGrid.columnApi) {\n return this.agGrid.columnApi.isPivotMode();\n }\n return false;\n }\n\n // VIEW FUNCTIONS\n showViews() {\n this.viewDrawerOpen = !this.viewDrawerOpen;\n this.sheetContent = 'views';\n }\n showViewSave() {\n this.saveDialogOpen = !this.saveDialogOpen;\n }\n resetDefaultView = () => {\n const domain = this.entityName;\n this.viewListRowData.forEach(item => {\n if (item.isDefault === true) {\n try {\n updateView(item.gridViewId, this.userId, this.gridId, this.apiCatalogId, item.name, 0, domain, item.gridViewVisibilityTypeId, data => {\n console.log('updateView, data: ', data);\n });\n } catch (error) {\n console.error('Error updating view, data:', error);\n }\n }\n });\n };\n setCurrentViewData(viewName: string, isDefault: boolean, gridViewVisibilityTypeId: number, gridViewId: string = '') {\n this.selectedGridId = gridViewId || this.selectedGridId;\n this.selectedViewName = viewName;\n this.selectedViewIsDefault = isDefault;\n this.selectedViewGridViewVisibilityTypeId = gridViewVisibilityTypeId;\n }\n openViewEdit(gridViewId: string, viewName: string, isDefault: boolean, gridViewVisibilityTypeId: number) {\n this.editDialogOpen = !this.editDialogOpen;\n this.setCurrentViewData(viewName, isDefault, gridViewVisibilityTypeId, gridViewId);\n }\n closeViewEdit() {\n this.editDialogOpen = !this.editDialogOpen;\n }\n openViewEditConfirmation(name: string, isPrivate: number, isDefault: boolean) {\n this.showViewEditConfirmation(true);\n this.setCurrentViewData(name, isDefault, isPrivate);\n }\n showViewEditConfirmation(show: boolean) {\n this.editViewConfirmationDialogOpen = show;\n }\n\n async handleViewFormSubmit(name: string, isPrivate: number, isDefault: boolean, columnState) {\n const userId = this.userId;\n const gridId = this.gridId;\n const apiCatalogId = this.apiCatalogId;\n const gridConfigurations = columnState; // The columnState from the argument\n const isDefaultNum: number = isDefault ? 1 : 0;\n const domain = await this.getEntityName();\n // if newDefault == 1, then we need to make sure any existing view with isDefault=1 is set to =0\n if (isDefaultNum == 1) {\n this.resetDefaultView();\n }\n\n // Now call saveView\n try {\n await saveView(userId, gridId, apiCatalogId, name, domain, gridConfigurations, isPrivate, isDefaultNum, data => {\n this.saveDialogOpen = !this.saveDialogOpen; // closes form\n this.showNotification = true;\n this.notificationMessage = `${data.gridView.name} has been saved successfully.`;\n this.notificationStatus = 'success';\n this.fetchDataForViews();\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n });\n } catch (error) {\n console.error('Error saving data:', error);\n }\n }\n // Ensures each GridConfiguration has the correct GridConfigurationID for updating in the database\n updateGridConfigurationsWithIDsForUpdatingView(gridConfigs: any[]) {\n gridConfigs.forEach(config => {\n if (this.selectedGridViewGridConfigurations) {\n const gridConfigInfo = this.selectedGridViewGridConfigurations.find(item => item.gridStateTypeId === config.gridStateTypeId);\n config.gridConfigurationId = gridConfigInfo?.gridConfigurationId;\n }\n });\n return gridConfigs;\n }\n // Handler for saving changes to an existing GridView and its GridConfigurations\n async handleViewAndConfigurationsUpdate(name: string, isPrivate: number, isDefault: boolean, columnState) {\n const gridConfigurations = this.updateGridConfigurationsWithIDsForUpdatingView(columnState);\n const isDefaultNum: number = isDefault ? 1 : 0;\n const domain = await this.getEntityName();\n if (isDefaultNum == 1) {\n this.resetDefaultView();\n }\n\n try {\n await updateViewAndConfigurations(\n this.selectedGridId,\n this.userId,\n this.gridId,\n this.apiCatalogId,\n name,\n gridConfigurations,\n isDefaultNum,\n domain,\n isPrivate,\n () => {\n this.saveDialogOpen = !this.saveDialogOpen; // closes form\n this.showViewEditConfirmation(false);\n this.showNotification = true;\n this.notificationMessage = `${name} has been saved successfully.`;\n this.notificationStatus = 'success';\n this.fetchDataForViews();\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n },\n );\n } catch (error) {\n console.error('Error saving data:', error);\n }\n }\n\n // Used for both hotlists and views\n toggleDeleteDialog = type => {\n switch (type) {\n case 'hotlist':\n this.confirmDialog = !this.confirmDialog;\n break;\n case 'view':\n this.confirmDialogDeleteView = !this.confirmDialogDeleteView;\n break;\n default:\n break;\n }\n };\n updateDefaultView = item => {\n var newDefault = item.isDefault ? 0 : 1;\n const domain = this.entityName;\n // if newDefault == 1, then we need to make sure any existing view with isDefault=1 is set to =0\n if (newDefault == 1) {\n this.resetDefaultView();\n }\n try {\n updateView(\n item.gridViewId,\n this.userId,\n this.gridId,\n this.apiCatalogId,\n item.name,\n newDefault,\n domain,\n item.gridViewVisibilityTypeId,\n data => {\n console.log('updateView, data:', data);\n },\n ).then(() => {\n this.fetchDataForViews();\n this.confirmDialog = false;\n this.showNotification = true;\n this.notificationMessage = `Updated default view.`;\n this.notificationStatus = 'success';\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n });\n } catch (error) {\n this.gridError = true;\n console.error('Error updating view, data:', error);\n }\n };\n\n getCurrentGridState = () => {\n let savedStatesString = localStorage.getItem('savedGridStates');\n let currentGridStateObj = null;\n if (savedStatesString) {\n let savedStatesArray = JSON.parse(savedStatesString) ?? [];\n if (savedStatesArray?.length > 0) {\n currentGridStateObj = savedStatesArray?.filter((i: any) => i?.tenantId && i?.tenantId === getCurrentTenantId() && i?.gridId && i?.gridId === this.gridId)[0];\n } else {\n }\n }\n return currentGridStateObj;\n };\n\n saveCurrentGridState = (gridStateObject: any) => {\n let savedGridStatesString = localStorage.getItem('savedGridStates');\n if (savedGridStatesString) {\n let savedGridStatesArray = JSON.parse(savedGridStatesString) ?? [];\n let newArray = savedGridStatesArray.map((s: any) => {\n if (s?.tenantId && s?.tenantId === getCurrentTenantId() && s?.gridId && s?.gridId === this.gridId) {\n s = gridStateObject;\n }\n return s;\n });\n localStorage.setItem('savedGridStates', JSON.stringify(newArray));\n } else {\n localStorage.setItem('savedGridStates', JSON.stringify([gridStateObject]));\n }\n };\n\n async handleViewUpdate(gridId: any, name: string, isPrivate: number, isDefault: boolean) {\n var isDefaultNum = isDefault ? 1 : 0;\n const domain = await this.getEntityName();\n\n // if this isDefault is true, then we need to make sure any existing view with isDefault=1 is set to =0\n if (isDefaultNum == 1) {\n this.resetDefaultView();\n }\n try {\n updateView(gridId, this.userId, this.gridId, this.apiCatalogId, name, isDefaultNum, domain, isPrivate, data => {\n console.log('updateView, data:', data);\n }).then(() => {\n this.fetchDataForViews();\n this.confirmDialog = false;\n this.showNotification = true;\n this.notificationMessage = `Updated view.`;\n this.notificationStatus = 'success';\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n });\n } catch (error) {\n this.gridError = true;\n console.error('Error updating view, data:', error);\n }\n }\n fetchDataForViews = async () => {\n try {\n let apiCatalogId = await this.getApiCatalogId();\n if (!apiCatalogId) {\n console.warn('apiCatalogId is not yet defined');\n return;\n }\n\n const userId = this.userId;\n const gridId = this.gridId;\n\n getAvailableViews(userId, gridId, apiCatalogId, await this.getEntityName(), data => {\n this.viewListRowData = data; // Ensure this correctly updates the state\n this.setDefaultView();\n });\n this.updateForConfiguredColumnDefs = false;\n } catch (error) {\n this.gridError = true;\n console.error('Error fetching data for views:', error);\n }\n };\n setDefaultView = () => {\n const defaultViewObj = this.viewListRowData.find(item => item.isDefault === true);\n let currentGridStateObj = this.getCurrentGridState();\n if (defaultViewObj) {\n const callback = data => {\n this.onFirstDataRendered(data);\n };\n getSelectedView(defaultViewObj.gridViewId, callback);\n } else if (currentGridStateObj) {\n this.onFirstDataRendered(currentGridStateObj);\n }\n };\n openDeleteViewConfirmation = gridViewId => {\n this.viewId = gridViewId;\n this.confirmDialogDeleteView = true;\n };\n handleDeleteView = () => {\n this.confirmDialogDeleteView = false;\n const callback = () => {\n // Will send to grid to update view\n getAvailableViews(this.userId, this.gridId, this.apiCatalogId, this.entityName, data => {\n this.viewListRowData = data; // Ensure this correctly updates the state\n });\n };\n deleteSelectedView(this.viewId, callback);\n this.showNotification = true;\n this.notificationMessage = `Deleted view`;\n this.notificationStatus = 'success';\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n };\n\n // HOTLIST FUNCTIONS\n showHotlist() {\n this.hotlistDrawerOpen = !this.hotlistDrawerOpen;\n this.businessObjectKey = null;\n this.logicalSearchOperator = 2;\n }\n // set hotlist form open\n toggleHotlistForm = () => {\n this.showHotlistForm = !this.showHotlistForm;\n };\n handleGetAllHotlists = async () => {\n try {\n const hotlistData = await getAllHotlists();\n this.allHotlists = hotlistData;\n } catch (error) {\n console.error('Error fetching hotlists:', error);\n }\n };\n // Add a hotlist item single\n handleSetSingleHotlistItem = id => {\n this.showNotification = true;\n this.notificationMessage = `Record added to hotlist`;\n this.notificationStatus = 'success';\n setTimeout(() => {\n this.showNotification = !this.showNotification;\n }, 4000);\n this.hotlistDrawerOpen = !this.hotlistDrawerOpen;\n const businessObjectKey = this.dataRowClicked.businessObjectKey;\n // Update the dataObject\n const dataObject = {\n hotListId: id, // Assuming id is already defined\n contextDate: '2023/01/01',\n data: JSON.stringify(this.dataRowClicked),\n entityBusinessObjectKey: businessObjectKey,\n currentUserId: '8fe3b5ce-6a94-4ff4-b35c-be2596ea1380',\n };\n addRecordToAHotlist(dataObject);\n };\n // delete a selected hotlist\n confirmRequestDelete = hotListId => {\n this.confirmDialog = !this.confirmDialog;\n this.hotListId = hotListId;\n };\n handleRequestDeleteHotlist = () => {\n deleteAHotlist(this.hotListId)\n .then(() => {\n this.handleGetAllHotlists();\n this.confirmDialog = false;\n })\n .catch(error => {\n console.error('Error deleting hotlist:', error);\n // handle any errors here\n });\n };\n // convert hotlist to payload\n mapHotlistsToPayload(hotlistIdentifiers) {\n return hotlistIdentifiers.map(keyID => ({\n searchField: this.hotListIdentifier,\n searchOperator: '=',\n searchValue: keyID,\n }));\n }\n updateFilterObjectWithPayload(hotlistSearchKeys) {\n // clear view if active\n this.loadedView = [];\n this.resetToOriginalFilters();\n this.updateChipLayout();\n\n const payload = this.mapHotlistsToPayload(hotlistSearchKeys);\n this.hotListCount = payload.length;\n this.updateFilterObject(() => [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: payload,\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 2,\n type: 'hotlist',\n },\n ]);\n this.updateServerSideDatasource('', 'updateFilterObjectWithPayload');\n this.hotlistDrawerOpen = false;\n }\n // extract id to process for search object\n extractContactIDs = payload => {\n const contactIDs = payload.records.map(record => {\n const dataObject = JSON.parse(record.data);\n return dataObject[this.hotListIdentifier];\n });\n return contactIDs;\n };\n // view a selected hotlist\n handleRequestHotlist = async hotlistID => {\n try {\n // Await for the Promise to resolve and then store the result\n const hotloadList = await loadAHotlist(hotlistID);\n\n // Process the data with extractContactIDs\n const contactIDs = this.extractContactIDs(hotloadList);\n this.hotListActive = hotloadList.name;\n state.hotListActive = this.hotListActive;\n\n // Set full list hotlist data\n this.hotlistSelectedFull = hotloadList;\n\n // Send the processed data to sendAsSearchObject\n this.updateFilterObjectWithPayload(contactIDs);\n } catch (error) {\n // Handle any errors that occur during the API call\n this.gridError = true;\n console.error('Error in handleRequestHotlist:', error);\n }\n };\n handleLoadView = cellValue => {\n // Define the callback\n const callback = data => {\n // Will send to grid to update view\n this.onFirstDataRendered(data);\n this.loadedGridView = data;\n if (data?.name) {\n this.loadedViewTitle = data.name;\n let currentGridStateObject = this.getCurrentGridState();\n if (currentGridStateObject) {\n this.saveCurrentGridState({\n ...currentGridStateObject,\n loadedGridViewName: data?.name,\n });\n } else {\n this.saveCurrentGridState({\n gridId: this.gridId,\n tenantId: getCurrentTenantId(),\n gridState: null,\n loadedGridViewName: data?.name,\n });\n }\n }\n this.getGridState(true);\n };\n\n getSelectedView(cellValue, callback);\n this.viewDrawerOpen = !this.viewDrawerOpen;\n };\n // Submit to save hotlist\n handleSaveHotlist = async (name: string, isPrivate: boolean) => {\n const hostListRequestBody = {\n domain: this.entityName,\n name: name,\n tenantId: getCurrentTenantId(),\n isPrivate: isPrivate,\n createdBy: this.userId,\n hotListDataSourceId: 1,\n hotListTypeId: 2,\n };\n\n try {\n await createAHotlist(hostListRequestBody);\n this.showHotlistForm = false;\n this.handleGetAllHotlists();\n } catch (error) {\n console.error('Error creating hotlist:', error);\n // handle any errors here\n }\n };\n\n // FILTER CHIP FUNCTIONS\n hasInitializedDefaultFilter = false; // Add this flag as a property in your class\n defaultFilterElements: any; // Replace any with your specific type\n activeChips: any[] = [];\n\n handleViewChipDelete = () => {\n // Your delete logic here\n // alert('Chip deleted!');\n this.loadedView = [];\n this.clearViewFilter();\n };\n\n handleRemoveHotlist = () => {\n this.hotListActive = '';\n this.loadedView = [];\n this.clearViewFilter();\n state.hotListActive = '';\n };\n\n fullClearSearch = () => {\n // this.filterObjectsWithGroups[0].filters.length = 0; // clears the form UI\n\n // this.updateFilterObject(() => [\n // {\n // pageNumber: 1,\n // pageSize: 20,\n // filterElements: [],\n // orderElements: [],\n // groupingType: '',\n // groupProperty: [],\n // groupOperationList: [],\n // eagerLoad: false,\n // logicalSearchOperator: 2,\n // type: 'advanced',\n // },\n // ]);\n this.resetToOriginalFilters();\n\n this.hotListActive = null;\n state.hotListActive = null;\n this.updateServerSideDatasource('', 'clearSearch');\n };\n\n setFilterFromChips(chipText: string) {\n const isChipValid = this.filterChips.some(chip => chip.description === chipText);\n if (!isChipValid) {\n return;\n }\n\n const index = this.activeChips.findIndex(chip => chip.description === chipText);\n // Initialize defaultFilterElements once, and only once\n if (!this.hasInitializedDefaultFilter) {\n if (this.filterObject && this.filterObject[0] && this.filterObject[0].filterElements) {\n this.defaultFilterElements = JSON.parse(JSON.stringify(this.filterObject[0].filterElements));\n this.hasInitializedDefaultFilter = true;\n }\n }\n\n // Toggle the chip on or off in activeChips\n if (index !== -1) {\n this.activeChips.splice(index, 1);\n } else {\n const chip = this.filterChips.find(chip => chip.description === chipText);\n this.activeChips.push(chip);\n }\n\n this.updateFilterObject(filterObject => {\n // Clear existing FirstName filters from filterElements\n filterObject[0].filterElements = filterObject[0].filterElements.filter(element => {\n return element.searchField !== this.filterOn;\n });\n\n // Re-add filters based on activeChips\n for (const chip of this.activeChips) {\n const searchValue = chip[this.filterOn] ? chip[this.filterOn] : chip.description;\n filterObject[0].filterElements.push({\n searchField: this.filterOn, // @todo: make this dynamic from api\n searchOperator: '=',\n searchValue: searchValue,\n });\n }\n\n // If all chips are deactivated, revert to default pre-set filter\n if (this.activeChips.length === 0) {\n filterObject[0].filterElements = JSON.parse(JSON.stringify(this.defaultFilterElements));\n }\n });\n\n this.logicalSearchOperator = 2;\n // Update the server-side datasource to apply the new filters\n this.updateServerSideDatasource('', 'setFilterChips');\n }\n\n setFilterSelections(filter) {\n const currentFilterObject = this.filterRenderList[0];\n currentFilterObject.filterElements = [...currentFilterObject.filterElements, filter];\n // Update the filterRenderList with the modified filter object\n this.filterRenderList = [currentFilterObject, ...this.filterRenderList.slice(1)];\n }\n\n // ADVANCED SEARCH FUNCTIONS\n showCustomSearch() {\n this.customSearchDrawerOpen = !this.customSearchDrawerOpen;\n }\n showAdvancedSearch() {\n this.advancedDrawerOpen = !this.advancedDrawerOpen;\n this.logicalSearchOperator = 1;\n this.setSearchStart = false;\n }\n\n setGroupedFilterSelections(filter: any) {\n // Try to find corresponding domain field from configuredColumnDefs because only grid columns configured in query builder could have an alias.\n const searchFieldAlias = this.configuredColumnDefs?.find(col => col.field.toLowerCase() === filter.searchField.toLowerCase())?.headerName;\n\n // Prepare the filter object with the new ID\n const newFilter = { ...filter, searchFieldAlias: searchFieldAlias };\n\n // Function to recursively find and update the correct node\n const addFilterToNode = (nodes: any[], nodeId: string, filter: any) => {\n for (const node of nodes) {\n if (node.filterGroupId === nodeId) {\n const newFilter = { ...filter, id: uuid(), filterGroupId: node.filterGroupId };\n node.filters.push(newFilter);\n return true; // Stop searching when the correct node is updated\n }\n if (node.children && node.children.length > 0) {\n if (addFilterToNode(node.children, nodeId, filter)) {\n return true; // Stop searching if the correct node was found in the children\n }\n }\n }\n return false; // Node not found in this branch\n };\n\n addFilterToNode(this.filterObjectsWithGroups, this.advancedGroupSearchNodeId, newFilter);\n this.handleSearchItemChange();\n }\n\n setGroupedSearchSections(groupId: string, filterGroupId: string, logicalOperator: 'AND' | 'OR') {\n const newChild = {\n id: uuid(),\n filterGroupId: filterGroupId,\n logicalOperator: logicalOperator,\n filters: [],\n children: [],\n };\n\n // Recursive function to find the correct node and add the new child\n const addChildToNode = (nodes: any[], nodeId: string, child: any) => {\n for (const node of nodes) {\n if (node.id === nodeId) {\n if (!node.children) {\n node.children = []; // Ensure the children array exists\n }\n node.children.push(child);\n return true; // Node updated, stop the search\n }\n if (node.children && node.children.length > 0) {\n if (addChildToNode(node.children, nodeId, child)) {\n return true; // Child added in a deeper level\n }\n }\n }\n return false; // Node not found in this branch\n };\n\n // Attempt to add the new child to the node identified by groupId\n addChildToNode(this.filterObjectsWithGroups, groupId, newChild);\n\n // Trigger a state update to reflect the change\n this.filterObjectsWithGroups = [...this.filterObjectsWithGroups];\n }\n\n updateGroupLogicalOperator(groupId: string, logicalOperator: 'AND' | 'OR') {\n const updateOperator = (nodes: any[], nodeId: string, newOperator: 'AND' | 'OR') => {\n for (const node of nodes) {\n if (node.filterGroupId === nodeId) {\n if (node.id === 'root') {\n this.logicalSearchOperator = this.getLogicalOperatorCode(newOperator);\n }\n node.logicalOperator = newOperator; // Update the logical operator here\n return true; // Successfully updated, stop the search\n }\n if (node.children && updateOperator(node.children, nodeId, newOperator)) {\n return true; // Successfully updated in a deeper level\n }\n }\n return false; // Node not found\n };\n\n // Attempt to update the logical operator in the node identified by groupId\n if (updateOperator(this.filterObjectsWithGroups, groupId, logicalOperator)) {\n // If the group was found and updated, trigger a state update\n this.filterObjectsWithGroups = [...this.filterObjectsWithGroups];\n }\n }\n\n removeFilterItem(filter) {\n this.setFilterFromChips(filter.searchValue);\n this.externalToggle = filter.searchValue;\n\n const group = this.findGroupById(this.filterObjectsWithGroups, filter.filterGroupId);\n if (group) {\n group.filters = group.filters.filter(item => item.id !== filter.id);\n\n this.filterObjectsWithGroups = this.filterObjectsWithGroups.map(g => (g.filterGroupId === group.filterGroupId ? { ...group } : g));\n }\n\n this.filtersChangedHandler();\n\n this.agGrid.api.setFilterModel(this.filterObject[0].filterElements);\n this.getGridState();\n }\n\n handleGroupDelete(groupId) {\n // Recursive function to search for and remove the group by ID\n const searchAndRemoveGroup = (groups, groupId) => {\n return groups.reduce((acc, group) => {\n // If the current group matches the groupId, do not add it to the accumulator\n if (group.filterGroupId === groupId) {\n return acc;\n }\n\n // Otherwise, add the group to the accumulator\n const newGroup = { ...group };\n\n // If the group has children, recurse to potentially remove from children\n if (newGroup.children && newGroup.children.length > 0) {\n newGroup.children = searchAndRemoveGroup(newGroup.children, groupId);\n }\n\n acc.push(newGroup);\n return acc;\n }, []);\n };\n\n // Start the recursive search and remove process\n this.filterObjectsWithGroups = searchAndRemoveGroup(this.filterObjectsWithGroups, groupId);\n this.filtersChangedHandler();\n }\n\n // Function to update filter list with groups\n updateFilterObjectsWithGroups = (\n searchField: string,\n searchOperator: string,\n searchValues: string[],\n searchFieldAlias: string,\n originalSearchOperator: string,\n originalSearchValue: string,\n targetFilterGroupId: string,\n ) => {\n let found = false;\n\n const traverse = group => {\n if (group.filterGroupId === targetFilterGroupId) {\n // Remove any existing filters for this fieldId (optional)\n group.filters = [];\n\n // Add new filters for each searchValue\n for (let val of searchValues) {\n group.filters.push({\n id: uuid(),\n searchField,\n searchOperator,\n searchValue: val,\n parentName: '',\n parentPath: 'filter.extendedProperties.parentPath',\n searchFieldAlias,\n originalSearchOperator,\n originalSearchValue,\n filterGroupId: targetFilterGroupId,\n });\n }\n\n found = true;\n return;\n }\n\n for (let child of group.children || []) {\n if (found) return;\n traverse(child);\n }\n };\n\n for (let group of this.filterObjectsWithGroups) {\n traverse(group);\n if (found) break;\n }\n\n // If target group not found, fallback to root\n if (!found) {\n for (let val of searchValues) {\n this.filterObjectsWithGroups[0].filters.push({\n id: uuid(),\n searchField,\n searchOperator,\n searchValue: val,\n parentName: '',\n parentPath: 'filter.extendedProperties.parentPath',\n searchFieldAlias,\n originalSearchOperator,\n originalSearchValue,\n });\n }\n }\n };\n\n getLogicalOperatorCode(op: string) {\n return op === 'AND' ? 1 : 2;\n }\n\n getLogicalOperatorValue(op: number) {\n return op.toString() === '1' ? 'AND' : 'OR';\n }\n\n findGroupById(groups, id) {\n for (const group of groups) {\n if (group.filterGroupId === id) return group;\n const result = group.children && this.findGroupById(group.children, id);\n if (result) return result;\n }\n return null;\n }\n\n updateFilterGroups(groupedFilterObjects) {\n let groupIdCounter = 1;\n const groupIdMap = new Map();\n\n const filterElements = [];\n const filterGroups = [];\n\n const transformGroup = (group, parentGroupId = null) => {\n let currentGroupId = null;\n\n if (group.filters.length === 0 && group.id === 'default') {\n return;\n }\n\n if (group.filterGroupId) {\n if (!groupIdMap.has(group.filterGroupId)) {\n groupIdMap.set(group.filterGroupId, groupIdCounter++);\n }\n currentGroupId = groupIdMap.get(group.filterGroupId);\n\n filterGroups.push({\n groupId: currentGroupId,\n logicalSearchOperator: this.getLogicalOperatorCode(group.logicalOperator),\n parentGroupId: parentGroupId,\n });\n }\n\n // Add all filters in this group\n (group.filters || []).forEach(filter => {\n filterElements.push({\n searchField: filter.searchField,\n searchOperator: filter.searchOperator,\n searchValue: filter.searchValue,\n fieldId: filter.otherId,\n groupId: currentGroupId,\n });\n });\n\n // Recurse children\n (group.children || []).forEach(child => {\n transformGroup(child, currentGroupId);\n });\n };\n\n // Start with each top-level group (usually just one root)\n groupedFilterObjects.forEach(rootGroup => {\n transformGroup(rootGroup);\n });\n\n return [\n {\n pageNumber: 1,\n pageSize: 20,\n type: 'advanced',\n eagerLoad: false,\n logicalSearchOperator: 1,\n filterElements,\n filterGroups,\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n },\n ];\n }\n\n @Listen('searchOperatorChanged')\n filtersChangedHandler() {\n const updatedFilterList = this.updateFilterGroups(this.filterObjectsWithGroups);\n const deepClonedList = cloneDeep(updatedFilterList);\n\n this.filterObject = deepClonedList;\n this.filterRenderList = deepClonedList;\n this.filterObjectsWithGroups = [...this.filterObjectsWithGroups];\n }\n\n @Listen('filterChanged')\n @Listen('searchItemChanged')\n searchItemChangedHandler(event: CustomEvent) {\n let { searchField, searchOperator, searchValue, searchFieldAlias, type, originalSearchOperator, originalSearchValue } = event.detail;\n this.refreshChips = true;\n this.setSearchStart = true;\n let updatedFilterList = [...this.filterObject];\n\n if (!type && type === 'agGridColumnFilter') {\n // Only apply the following logic if event is not from the native ag grid column filter\n let advancedSearchFilter = this.extendedSearchFilterList?.find(filter => filter.name.toLowerCase() === searchField.toLowerCase());\n if (advancedSearchFilter?.type?.toLowerCase() === 'datetime') {\n const configuredColumnDef = this.configuredColumnDefs?.find(col => col.field.toLowerCase() === searchField.toLowerCase());\n searchFieldAlias = configuredColumnDef?.headerName;\n if (searchOperator === this.filterOptions['equals'] && configuredColumnDef?.treatAsDate) {\n let dateFrom = new Date(searchValue);\n let dateTo = new Date(dateFrom);\n\n // Set dateTo to one day ahead\n dateTo.setDate(dateFrom.getDate() + 1);\n\n // Convert the dates to the required format (YYYY-MM-DD HH:mm:ss)\n const formatDate = (date, dateOnly: boolean = false) => {\n const year = date.getFullYear();\n const month = ('0' + (date.getMonth() + 1)).slice(-2);\n const day = ('0' + date.getDate()).slice(-2);\n return dateOnly ? `${year}-${month}-${day}` : `${year}-${month}-${day} 00:00:00`;\n };\n originalSearchOperator = searchOperator;\n originalSearchValue = searchValue;\n searchOperator = this.filterOptions['inRange'];\n searchValue = formatDate(dateFrom) + ',' + formatDate(dateTo);\n }\n }\n this.getGridState(true);\n }\n\n if (type === 'set') {\n if (searchValue.length > 0) {\n if (!this.findGroupById(this.filterObjectsWithGroups, `set-${searchField}-group`)) {\n this.handleAddNewGroup('root', searchOperator, `set-${searchField}-group`);\n }\n this.updateFilterObjectsWithGroups(\n searchField,\n searchOperator.value ? searchOperator.value : searchOperator,\n searchValue,\n searchFieldAlias,\n originalSearchOperator,\n originalSearchValue,\n `set-${searchField}-group`,\n );\n\n // update the AG Grid filter model explicitly\n const currentModel = this.agGrid.api.getFilterModel() || {};\n currentModel[searchField] = {\n filterType: 'set',\n values: searchValue,\n };\n this.agGrid.api.setFilterModel(currentModel);\n } else {\n this.handleGroupDelete(`set-${searchField}-group`);\n return;\n }\n }\n updatedFilterList = this.updateFilterGroups(this.filterObjectsWithGroups);\n\n // Immutably update the state for both lists\n this.filterObject = [...updatedFilterList];\n this.filterRenderList = [...updatedFilterList];\n this.filterObjectsWithGroups = [...this.filterObjectsWithGroups];\n\n if (type !== 'set') {\n this.agGrid.api.setFilterModel(this.convertFilterToAgGridFilterModel(this.filterObject[0].filterElements));\n this.filterObject[0].filterElements.forEach(filter => {\n if (filter.searchOperator === '=') {\n const filterInstance = this.agGrid.api.getFilterInstance(filter.searchField);\n\n if (filterInstance && 'setModel' in filterInstance && 'onFilterChanged' in filterInstance) {\n (filterInstance as any).setModel({ values: [filter.searchValue] });\n (filterInstance as any).onFilterChanged();\n }\n }\n });\n }\n }\n\n convertFilterToAgGridFilterModel(customFilters) {\n const agGridModel = {};\n\n customFilters.forEach(filter => {\n if (filter.searchOperator === '=') {\n agGridModel[filter.searchField] = {\n filterType: 'set',\n values: [filter.searchValue],\n };\n }\n });\n\n return agGridModel;\n }\n\n updateSearchObject(detail: { searchField: string; searchOperator: string; searchValue: any }) {\n this.updateFilterObject(filterObject => {\n // Append the new filter element to filterElements array\n filterObject[0].filterElements.push(detail);\n });\n [500, 1000, 2000, 3000, 4000, 5000, 6000, 10000, 20000].forEach(delay => {\n setTimeout(() => {\n this.getGridState(true);\n }, delay);\n });\n }\n\n // Commented out filter options are currently not suppored in the regex\n filterOptions = {\n equals: '=',\n contains: 'LIKE',\n // notContains: 'NOT LIKE',\n notEqual: '<>',\n greaterThan: '>',\n lessThan: '<',\n greaterThanOrEqual: '>=',\n lessThanOrEqual: '<=',\n startsWith: 'STARTSWITH',\n // endsWith: 'ENDSWITH',\n blank: 'IS NULL',\n // notBlank: 'IS NOT NULL',\n inRange: 'BETWEEN',\n };\n\n // FOR HANDLING NATIVE AG-grid filter\n capitalizeFirstLetter(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n applyFilterDetail(\n column: string,\n selectedFilterOptions: string,\n value: string,\n searchFieldAlias: string | undefined,\n originalSearchOperator: string,\n originalSearchValue: string,\n groupCount: number,\n groupedFilterElements: {\n groupId: number;\n searchField: string;\n searchOperator: string;\n searchValue: string;\n searchFieldAlias?: string;\n originalSearchOperator: string;\n originalSearchValue: string;\n }[],\n filterObjectsWithGroupsFilters: {\n searchField: string;\n searchOperator: string;\n searchValue: string;\n otherId: string;\n parentName: string;\n parentPath: string;\n searchFieldAlias?: string;\n originalSearchOperator: string;\n originalSearchValue: string;\n }[],\n ) {\n const setDetail = {\n searchField: column,\n searchOperator: selectedFilterOptions,\n searchValue: value,\n searchFieldAlias: searchFieldAlias,\n originalSearchOperator: originalSearchOperator || '',\n originalSearchValue: originalSearchValue || '',\n };\n\n if (this.hotListActive) {\n groupedFilterElements.push({\n groupId: groupCount,\n searchField: this.capitalizeFirstLetter(setDetail.searchField),\n searchOperator: setDetail.searchOperator,\n searchValue: String(setDetail.searchValue),\n searchFieldAlias: setDetail.searchFieldAlias,\n originalSearchOperator: setDetail.originalSearchOperator,\n originalSearchValue: setDetail.originalSearchValue,\n });\n filterObjectsWithGroupsFilters.push({\n searchField: setDetail.searchField,\n searchOperator: setDetail.searchOperator,\n searchValue: setDetail.searchValue,\n otherId: uuid(),\n parentName: '',\n parentPath: 'filter.extendedProperties.parentPath',\n searchFieldAlias: setDetail.searchFieldAlias,\n originalSearchOperator: setDetail.originalSearchOperator,\n originalSearchValue: setDetail.originalSearchValue,\n });\n if (groupCount === 1) {\n groupCount = 3;\n } else {\n groupCount++;\n }\n return true;\n }\n\n //this.updateSearchObject(detail);\n this.searchItemChangedHandler({\n detail: setDetail,\n initCustomEvent: function (): void {\n throw new Error('Function not implemented.');\n },\n bubbles: false,\n cancelBubble: false,\n cancelable: false,\n composed: false,\n currentTarget: undefined,\n defaultPrevented: false,\n eventPhase: 0,\n isTrusted: false,\n returnValue: false,\n srcElement: undefined,\n target: undefined,\n timeStamp: 0,\n type: 'agGridColumnFilter',\n composedPath: function (): EventTarget[] {\n throw new Error('Function not implemented.');\n },\n initEvent: function (): void {\n throw new Error('Function not implemented.');\n },\n preventDefault: function (): void {\n throw new Error('Function not implemented.');\n },\n stopImmediatePropagation: function (): void {\n throw new Error('Function not implemented.');\n },\n stopPropagation: function (): void {\n throw new Error('Function not implemented.');\n },\n NONE: 0,\n CAPTURING_PHASE: 1,\n AT_TARGET: 2,\n BUBBLING_PHASE: 3,\n });\n return false;\n }\n\n transformAndApplyFilters(filterModel: { [key: string]: FilterDetail }) {\n let groupedFilterElements;\n let filterObjectsWithGroupsFilters = [];\n\n if (this.hotListActive) {\n // first group all the hotlist origin filters\n groupedFilterElements = this.filterObject[0].filterElements.map(element => ({\n ...element,\n searchField: this.capitalizeFirstLetter(element.searchField),\n groupId: 2,\n }));\n\n // slicing because need to remove duplicate native filters\n let slicedGroupedFilterElements = groupedFilterElements.slice(0, this.hotListCount);\n groupedFilterElements = slicedGroupedFilterElements;\n\n // this.filterRenderList = [...this.filterRenderList, ...groupedFilterElements]\n this.filterObject[0].filterElements.map(element => this.filterRenderList.push(element));\n }\n var groupCount = 1;\n const formatDate = (date: Date, dateOnly: boolean = false) => {\n const year = date.getFullYear();\n const month = ('0' + (date.getMonth() + 1)).slice(-2);\n const day = ('0' + date.getDate()).slice(-2);\n return dateOnly ? `${year}-${month}-${day}` : `${year}-${month}-${day} 00:00:00`;\n };\n\n if (Object.entries(filterModel).length === 0) {\n this.shouldForceEmptyResults = false;\n this.noResults = false;\n }\n\n for (const [column, filterDetails] of Object.entries(filterModel)) {\n if (!filterDetails || !(filterDetails.type || filterDetails.filterType)) continue;\n\n const configuredColumnDef = this.configuredColumnDefs?.find(col => col.field === column);\n const searchFieldAlias = configuredColumnDef?.headerName;\n const treatAsDate = configuredColumnDef?.treatAsDate;\n\n const filterType = filterDetails.filterType;\n let selectedFilterOptions = this.filterOptions[filterDetails.type] || this.filterOptions['equals'];\n\n let value = '';\n let originalSearchOperator = '';\n let originalSearchValue = '';\n\n let shouldApply = true;\n switch (filterType) {\n case 'date':\n if (filterDetails.type === 'inRange') {\n value = `${filterDetails.dateFrom},${filterDetails.dateTo}`;\n } else if (filterDetails.type === 'equals' && treatAsDate) {\n const dateFrom = new Date(filterDetails.dateFrom);\n const dateTo = new Date(dateFrom);\n dateTo.setDate(dateFrom.getDate() + 1);\n\n originalSearchOperator = selectedFilterOptions;\n originalSearchValue = formatDate(dateFrom, treatAsDate);\n\n selectedFilterOptions = this.filterOptions['inRange'];\n value = `${formatDate(dateFrom)},${formatDate(dateTo)}`;\n } else {\n value = filterDetails.dateFrom;\n originalSearchOperator = selectedFilterOptions;\n originalSearchValue = value;\n }\n break;\n case 'number':\n originalSearchOperator = selectedFilterOptions;\n originalSearchValue = filterDetails.filter;\n value = filterDetails.type === 'inRange' ? `${filterDetails.filter},${filterDetails.filterTo}` : filterDetails.filter;\n break;\n case 'text':\n originalSearchOperator = selectedFilterOptions;\n originalSearchValue = value = filterDetails.filter;\n break;\n case 'set':\n const values = (filterDetails as { values: string[] }).values || [];\n this.shouldForceEmptyResults = false;\n\n if (values.length === 0) {\n this.noResults = true;\n this.shouldForceEmptyResults = true;\n\n shouldApply = false;\n continue;\n }\n\n this.filterChanged.emit({\n searchField: configuredColumnDef?.field,\n searchOperator: selectedFilterOptions,\n searchValue: values,\n searchFieldAlias,\n type: 'set',\n originalSearchOperator,\n originalSearchValue,\n });\n\n shouldApply = false;\n continue;\n default:\n shouldApply = false;\n continue;\n }\n\n if (shouldApply) {\n const shouldSkip = this.applyFilterDetail(\n column,\n selectedFilterOptions,\n value,\n searchFieldAlias,\n originalSearchOperator,\n originalSearchValue,\n groupCount,\n groupedFilterElements,\n filterObjectsWithGroupsFilters,\n );\n\n if (shouldSkip) {\n groupCount = groupCount === 1 ? 3 : groupCount + 1;\n }\n }\n }\n\n if (this.hotListActive) {\n this.updateFilterObject(filterObject => {\n filterObject[0].filterElements = groupedFilterElements;\n filterObject[0].filterGroups = [\n {\n groupId: 1,\n logicalSearchOperator: 1,\n parentGroupId: null,\n },\n {\n groupId: 2,\n logicalSearchOperator: 2,\n parentGroupId: 1,\n },\n ];\n\n // Adds additional native grid filters\n for (let i = 3; i < groupCount; i++) {\n filterObject[0].filterGroups.push({\n groupId: i,\n logicalSearchOperator: 1,\n parentGroupId: 1,\n });\n }\n\n filterObject[0].logicalSearchOperator = 1;\n filterObject[0].type = 'advanced';\n });\n\n this.logicalSearchOperator = 1;\n this.updateChipLayout();\n\n this.filterObjectsWithGroups[0].filters = filterObjectsWithGroupsFilters;\n this.refreshChips = true;\n }\n }\n\n handleSideSheetButtonClick = async () => {\n this.groupFilter();\n this.customSearchDrawerOpen = false;\n };\n\n // advanced search grouping\n handleAddNewFilter = (filterGroupId: string) => {\n this.advancedGroupSearchNodeId = filterGroupId;\n };\n\n handleAddNewGroup = (groupId: string, logicalOperator: 'AND' | 'OR', filterGroupId = null) => {\n this.setGroupedSearchSections(groupId, filterGroupId ?? uuid(), logicalOperator);\n };\n\n updateLogicalOperator = (groupId: string, logicalOperator: 'AND' | 'OR') => {\n // Implement the logic to update the logical operator for the group\n this.updateGroupLogicalOperator(groupId, logicalOperator);\n };\n\n @Watch('externalPayload')\n externalPayloadChanged(newValue: any, oldValue: any) {\n if (newValue !== oldValue) {\n this.handleTransformSearchData();\n }\n }\n\n @Watch('dataEmitterRequest')\n dataEmitterChanged(newValue: any, oldValue: any) {\n if (newValue !== oldValue) {\n this.handleDataEmitterRequest(newValue);\n }\n }\n\n isEmptyObject = obj => {\n return obj && Object.keys(obj).length === 0 && obj.constructor === Object;\n };\n\n handleDataEmitterRequest = async newValue => {\n // Check if newValue is null, undefined, or an empty object\n if (newValue === null || newValue === undefined || this.isEmptyObject(newValue)) {\n // Handle the case where newValue is not usable\n return;\n }\n\n const emitterSearchObject = {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [newValue],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 1,\n type: 'advanced',\n };\n\n try {\n const response = await executeQueryAdHoc(emitterSearchObject, await this.getApiMethodId(), '');\n this.externalEmitter.emit(response); // Emitting the response data\n } catch (error) {\n this.gridError = true;\n console.error('Error fetching data:', error);\n }\n };\n\n handleTransformSearchData = () => {\n const modifiedSearchObjects = transformSearchData(this.externalPayload, this.searchKey);\n\n // Merge the filterElements\n if (modifiedSearchObjects.filterElements) {\n this.updateFilterObject(filterObject => {\n filterObject[0].filterElements.push(...modifiedSearchObjects.filterElements);\n });\n }\n\n // Handle filterGroups (assuming you want to replace the existing ones)\n if (modifiedSearchObjects.filterGroups) {\n this.updateFilterObject(filterObject => {\n filterObject[0].filterGroups = modifiedSearchObjects.filterGroups;\n });\n }\n\n // Extract the first element to send as an individual object\n const firstFilterElement = this.filterObject[0].filterElements[0];\n\n // Create a new CustomEvent with the first object as detail (instead of the entire array)\n const filterElementEvent = new CustomEvent('filterElementChange', {\n detail: firstFilterElement,\n });\n\n // Pass the event to the handler function\n this.searchItemChangedHandler(filterElementEvent);\n\n this.updateServerSideDatasource('', 'handleTransformSearchData');\n };\n\n // FOR HANDLING IF SELECT OR GROUPING IN ADVANCED SEARCH\n groupFilter = () => {\n const searchGroupFilterPayload = buildSearchPayload(this.filterObjectsWithGroups);\n this.updateFilterObject(() => [searchGroupFilterPayload]);\n this.setSearchStart = true;\n };\n\n handleSearchItemChange() {\n const updatedFilterObjectsWithGroups = cloneDeep(this.filterObjectsWithGroups);\n const updatedFilterObject = cloneDeep(this.filterObject);\n\n this.filterObjectsWithGroups = updatedFilterObjectsWithGroups;\n this.filterObject = updatedFilterObject;\n }\n\n collectAllFilters(filterGroup, level = 0) {\n let allFilters = [];\n\n // Collect top-level filters and include the current level\n if (filterGroup.filters && filterGroup.filters.length > 0) {\n allFilters = allFilters.concat(filterGroup.filters.map(filter => ({ ...filter, level })));\n }\n\n // Recursively collect filters from children, incrementing the level\n if (filterGroup.children && filterGroup.children.length > 0) {\n filterGroup.children.forEach(child => {\n allFilters = allFilters.concat(this.collectAllFilters(child, level + 1));\n });\n }\n\n return allFilters;\n }\n\n updateChipLayout = () => {\n requestAnimationFrame(() => {\n const chipsContainer = this.el.shadowRoot ? this.el.shadowRoot.getElementById('advanced-group-search-chips') : document.getElementById('advanced-group-search-chips');\n\n if (chipsContainer) {\n // Force reflow if necessary\n chipsContainer.offsetWidth;\n\n const containerWidth = chipsContainer.getBoundingClientRect().width;\n let totalChipWidth = 0;\n const chipWidths = Array.from(chipsContainer.querySelectorAll('stencil-chip')).map(chip => chip.getBoundingClientRect().width);\n let maxVisible = 1;\n\n for (let width of chipWidths) {\n if (totalChipWidth + width + 400 > containerWidth) break;\n if (maxVisible >= this.maxChipsAllowed) break; // Limit the number of visible chips to 7, but only after width check\n totalChipWidth += width;\n maxVisible++;\n }\n this.allFilters = this.filterObjectsWithGroups.reduce((acc, curr) => {\n return acc.concat(this.collectAllFilters(curr));\n }, []);\n\n if (this.hideDefaultSearchFilterChips) {\n this.allFilters = this.allFilters.filter(f => !f.isInitialFilterElement);\n }\n this.refreshChips = false;\n } else {\n console.warn('Chips container not found');\n }\n });\n };\n\n // Fetch recentSearches from local storage\n getRecentSearches = () => {\n const recentSearchesString = localStorage.getItem('recentSearches');\n if (recentSearchesString == null) {\n return;\n }\n const recentSearches: any[] = JSON.parse(recentSearchesString);\n var currentGridSearchHistoryObj = recentSearches.find(item => item.gridUID === this.gridUID);\n if (!currentGridSearchHistoryObj) {\n this.recentSearches = [];\n } else {\n this.recentSearches = recentSearches.length > 0 ? currentGridSearchHistoryObj.searchHistory : [];\n }\n this.recentSearchesOptions = this.recentSearches.map(item => ({\n label: item.timestamp,\n value: item.searchObj,\n }));\n };\n // Handle selecting a recent search from the drop down udp-selector\n selectRecentSearch = e => {\n this.fullClearSearch(); // Clear previous searches first\n var selectedSearchObj = e.detail.value;\n this.updateFilterObject(filterObject => {\n filterObject[0] = selectedSearchObj;\n });\n this.filterRenderList[0] = selectedSearchObj;\n this.isRecentSearch = true;\n this.updateServerSideDatasource('', 'advanced grouped search');\n // this.customSearchDrawerOpen = false; // uncomment if want advanced search sidesheet to close after clicking\n\n var filterObjectsWithGroupsTemp = this.filterObjectsWithGroups;\n selectedSearchObj.filterElements.map((tempFilter, index) => {\n filterObjectsWithGroupsTemp[0].filters[index] = { ...tempFilter };\n });\n this.filterObjectsWithGroups = filterObjectsWithGroupsTemp;\n };\n\n @Watch('allFilters')\n allFiltersChanged() {\n if (this.refreshChips) {\n this.updateChipLayout();\n }\n }\n\n // BULK ACTIONS FUNCTIONS\n fetchAvailableGridActions = () => {\n if (this.restrictedGridFeatures?.BulkActions && !this.userPermissions.some(permission => permission.name === this.restrictedGridFeatures.BulkActions)) {\n localStorage.setItem('bulkActions', JSON.stringify([]));\n return;\n }\n const callback = data => {\n // Will send to grid to update view\n localStorage.setItem('bulkActions', JSON.stringify(data));\n this.bulkActions = data;\n };\n\n\n getAvailableGridActions(this.gridId, this.restrictBulkActionsPermissions, this.userPermissions, callback);\n\n this.updateServerSideDatasource('', 'configuredColumnDefs');\n };\n\n async handleSelectedBulkOption(event: CustomEvent) {\n // Assuming `event.detail` includes the selected option's identifier, like `value`\n const { value } = event.detail; // You might need to adjust based on the actual structure\n // Find the index of the selected option based on its value\n\n if (this.gridOptions && this.agGrid) {\n const selectedNodes = this.agGrid.api.getSelectedNodes();\n\n // Extract the data from selected nodes\n let selectedData = selectedNodes.map(node => node.data);\n\n // Extract just the ids from the selectedData\n const selectedIds = selectedData.map(data => data.id);\n\n // Emit the selectedIds array so parent components can listen to it\n this.selectedIdsChanged.emit(selectedIds);\n\n let actionData;\n\n if (this.bulkActionFunctions[value.value]) {\n //There exists a bulk action function corresponding to the actions value. Passing the function as the actionData to the action executor\n const selectedBulkActionFunction = this.bulkActionFunctions[value.value];\n actionData = { execute: () => selectedBulkActionFunction(selectedData) };\n } else {\n actionData = selectedData;\n }\n\n await this.executeBulkAction(value.actionId, actionData);\n }\n }\n\n @Watch('bulkActions')\n transformBulkActions() {\n if (this.bulkActions) {\n this.formattedBulkActions = this.bulkActions.map(action => ({\n label: action.name,\n value: action,\n }));\n }\n }\n\n getSelectedRows() {\n return Object.values(this.selectedRowMap);\n }\n\n render() {\n const filterPanelWidth = this.filterPanelOpen ? '200px' : 'initial';\n const shouldShowSecondRow =\n (this.setSearchStart && this.filterObjectsWithGroups?.[0]?.filters?.[0]?.searchValue) ||\n this.filterChips.length > 0 ||\n this.loadedViewTitle.length > 0 ||\n this.hotListActive ||\n this.kpiValues.length > 0 ||\n this.selectedRowCount > 0;\n\n const shouldHideSecondRow = !shouldShowSecondRow;\n if (shouldShowSecondRow) {\n this.gridHeight = 'calc(100vh - 245px)';\n } else {\n this.gridHeight = 'calc(100vh - 200px)';\n }\n\n const actionMenuItems = this.getOverflowActionList(this.overflowActionMenuItems, this.selectedRowParams);\n return (\n <div>\n {this.openActionPopoverMenu && (\n <udp-pop-over\n isOpen={this.openActionPopoverMenu}\n anchorElement={this.actionMenuAnchorElement}\n popoverWidth=\"170px\"\n popoverMaxHeight=\"250px\"\n handleOnClose={event => {\n this.handleOnCloseActionPopover(event);\n }}\n >\n <div class=\"overflowActionButtons\">{actionMenuItems}</div>\n </udp-pop-over>\n )}\n <div>\n {this.showNotification && (\n <udp-notification\n active={this.showNotification}\n message={this.notificationMessage}\n status={this.notificationStatus}\n userCancel\n style={{ zIndex: '999991', transform: 'translateY(20px)' }}\n ></udp-notification>\n )}\n </div>\n <style>\n {`:host ::slotted(.ag-side-bar) {\n width: ${filterPanelWidth} !important;\n }`}\n </style>\n\n <grid-primary-bar\n title={this.gridBarTitle}\n customSaveViewClick={() => this.showViewSave()}\n customShowViewClick={() => this.showViews()}\n customShowHotlistClick={() => this.showHotlist()}\n customShowCustomSearchClick={() => this.showCustomSearch()}\n customClearClick={() => this.clearFilters()}\n customRefreshClick={() => this.refreshGrid()}\n customExpandClick={() => this.expandColumns()}\n customExportClick={this.exportFunction ? () => this.exportFunction(this.entityName, this.filterRenderList[0]) : () => this.exportToCsv()}\n customInsightsClick={e => {\n this.insightsActionOnClick(e);\n }}\n showInsightsAction={this.showInsightsAction}\n hiddenActionButtons={['saveView', 'filter']}\n primaryActionLabel={this.primaryActionLabel}\n primaryActionClick={e => {\n this.primaryActionOnClick(e);\n }}\n primaryActionIcon={this.primaryActionIcon}\n customColumnViewClick={() => this.togglePanel('columns')}\n customFitColumnClick={() => this.fitColumns()}\n customFilterViewClick={() => this.togglePanel('filters')}\n customToggleServerClientClick={() => this.toggleServerSide()}\n customAdvancedSearchClick={() => this.showAdvancedSearch()}\n customShowGridOptionsClick={() => this.showGridOptions()}\n showAdvancedSearchFeature={this.showAdvancedSearchFeature}\n showFilterColumnFeature={this.showFilterColumnFeature}\n showHotlistButton={\n this.showHotlistButton && !(this.restrictedGridFeatures?.Hotlist && !this.userPermissions.some(permission => permission.name === this.restrictedGridFeatures.Hotlist))\n }\n hideExport={this.restrictedGridFeatures?.Export && !this.userPermissions.some(permission => permission.name === this.restrictedGridFeatures.Export)}\n enableAdvancedSearch={this.enableAdvancedSearch}\n ></grid-primary-bar>\n\n <udp-pop-over-grid-action-header isOpen={this.gridOptionsDrawerOpen} anchorElement={document.querySelector('grid-primary-bar')}>\n <stencil-icon-button-grid-action-header\n onClick={() => {\n this.togglePanel('columns');\n this.showGridOptions();\n }}\n tooltip=\"Show/Hide Columns\"\n >\n <unity-typography variant=\"button\">Show/Hide Columns</unity-typography>\n </stencil-icon-button-grid-action-header>\n <udp-divider size=\"100%\"></udp-divider>\n <stencil-icon-button-grid-action-header\n onClick={() => {\n this.fitColumns();\n this.showGridOptions();\n }}\n tooltip=\"Fit to Column\"\n >\n <unity-typography variant=\"button\">Fit to Column</unity-typography>\n </stencil-icon-button-grid-action-header>\n <udp-divider size=\"0px\"></udp-divider>\n <stencil-icon-button-grid-action-header\n onClick={() => {\n this.expandColumns();\n this.showGridOptions();\n }}\n tooltip=\"Expand Grid\"\n >\n <unity-typography variant=\"button\">Expand Grid</unity-typography>\n </stencil-icon-button-grid-action-header>\n <udp-divider size=\"0px\"></udp-divider>\n {!this.disableSearchSwitch && (\n <stencil-icon-button-grid-action-header\n onClick={() => {\n this.handleSearchModeToggle();\n this.showGridOptions();\n }}\n tooltip={this.enableAdvancedSearch ? 'Standard Search' : 'Advanced Search'}\n >\n <unity-typography variant=\"button\">{this.enableAdvancedSearch ? 'Standard Search' : 'Advanced Search'}</unity-typography>\n </stencil-icon-button-grid-action-header>\n )}\n </udp-pop-over-grid-action-header>\n\n <div class=\"second-row\" style={{ display: shouldHideSecondRow ? 'none' : '' }}>\n {!this.hideBulkActions && this.rowsSelected && (\n <div class=\"bulk-select\">\n <udp-badge content={this.selectedRowCount}>\n <udp-selector options={this.bulkActions.length > 0 ? this.formattedBulkActions : []} onChange={(e: CustomEvent) => this.handleSelectedBulkOption(e)}></udp-selector>\n </udp-badge>\n </div>\n )}\n\n {this.loadedViewTitle?.length !== 0 && (\n <div class=\"chip-wrapper\">\n <stencil-chip\n text={this.loadedViewTitle}\n // onOnDelete={this.handleDelete as any}\n onOnDelete={this.handleViewChipDelete}\n color=\"secondary\"\n defaultToggled={true}\n leftIcon={Star16}\n ></stencil-chip>\n <udp-divider variant=\"vertical\" size=\"30px\"></udp-divider>\n </div>\n )}\n\n {this.hotListActive && (\n <div class=\"chip-wrapper\">\n <stencil-chip text={this.hotListActive} color=\"secondary\" onOnDelete={this.handleRemoveHotlist} defaultToggled={true} leftIcon={List16}></stencil-chip>\n <udp-divider variant=\"vertical\" size=\"30px\"></udp-divider>\n </div>\n )}\n\n <div class=\"chip-section\">\n {this.filterChips.length > 0 && (\n <udp-dynamic-container-with-menu\n id=\"filterChipsContainer\"\n externalToggle={this.externalToggle}\n onUdpChipClicked={(event: CustomEvent) => this.setFilterFromChips(event.detail)}\n menuItems={this.filterChips}\n ></udp-dynamic-container-with-menu>\n )}\n </div>\n <div class=\"kpi\">\n <kpi-list kpiValues={this.kpiValues}></kpi-list>\n </div>\n </div>\n\n {this.gridError && (\n <div>\n <upd-alert-banner type=\"error\" message={`An error occurred with loading the grid with data.`}></upd-alert-banner>\n </div>\n )}\n\n <div style={{ height: '4px', backgroundColor: shouldHideSecondRow ? 'var(--accent-color)' : 'rgb(247, 245, 243)' }}>{this.linearLoading && <udp-linear-loader />}</div>\n\n {this.noResults && (\n <div>\n <upd-alert-banner onClick={() => this.refreshOnNoResults()} type=\"info\" message=\"Sorry, no records meet your search criteria\"></upd-alert-banner>\n </div>\n )}\n\n <div>\n {' '}\n <ag-table gridOptions={this.gridOptions} licensekey={LicenseKey} height={this.gridHeight}></ag-table>{' '}\n </div>\n\n <side-sheet\n sideSheetButtonLabel=\"Search\"\n handleSideSheetButton={() => this.updateServerSideDatasource('', 'advanced search sheet')}\n title=\"Advanced Search\"\n open={this.advancedDrawerOpen}\n toggleDrawer={() => this.primaryActionClick('advancedSearch')}\n position=\"right\"\n >\n <div style={{ width: '1200px' }}>\n <advanced-search\n handleDelete={filter => this.removeFilterItem(filter)}\n filterRenderList={this.filterRenderList}\n filterList={this.extendedSearchFilterList} // list that shows available filters\n handleItemClick={headerName => this.setFilterSelections(headerName)}\n onAdvancedSearchItemChange={(event: CustomEvent) => this.updateSearchObject(event.detail)}\n handleValueChanged={this.changeOperator}\n fetchFilters={() => this.getExtendedAdvancedSearchFilterList()}\n />\n </div>\n </side-sheet>\n\n <side-sheet widthOption=\"short\" title=\"Views\" open={this.viewDrawerOpen} toggleDrawer={() => this.primaryActionClick('views')} position=\"right\">\n <div>\n <div style={{ width: '450px', marginBottom: '8px' }}>\n <hint-panel\n hint=\"Quickly access and manage your pre-configured table/grid views. These views are designed to help you focus on specific sets of data and streamline your workflow.\"\n hideHintText=\"Hide Hint\"\n ></hint-panel>\n </div>\n\n <div style={{ width: '446px' }}>\n {this.viewListRowData &&\n this.viewListRowData.map(item => {\n if (item.gridViewVisibilityTypeId === 2 || item.userId.toLowerCase() === this.userId.toLocaleLowerCase()) {\n return (\n <tree-list-item\n // key={index}\n showEditOption\n showDeleteOption\n label={item.name}\n onClick={() => {\n this.handleLoadView(item.gridViewId);\n this.setCurrentViewData(item.name, item.isDefault, item.gridViewVisibilityTypeId, item.gridViewId);\n }}\n editHandler={() => this.openViewEdit(item.gridViewId, item.name, item.isDefault, item.gridViewVisibilityTypeId)}\n deleteHandler={() => this.openDeleteViewConfirmation(item.gridViewId)}\n showUpdateDefaultOption={true}\n updateDefaultHandler={() => this.updateDefaultView(item)}\n isDefault={item.isDefault}\n gridViewVisibilityTypeId={item.gridViewVisibilityTypeId}\n showAdd={false}\n showViewOption={false}\n ></tree-list-item>\n );\n }\n })}\n </div>\n </div>\n </side-sheet>\n\n <side-sheet\n title=\"Search\"\n sideSheetButtonLabel=\"Search\"\n handleSideSheetButton={this.handleSideSheetButtonClick}\n open={this.customSearchDrawerOpen}\n toggleDrawer={() => this.primaryActionClick('customSearch')}\n position=\"right\"\n buttonTransform={this.buttonTransform}\n >\n <advanced-search-grouped\n getLogicalOperatorValue={this.getLogicalOperatorValue}\n getLogicalOperatorCode={this.getLogicalOperatorCode}\n handleAddNewFilter={this.handleAddNewFilter}\n handleAddNewGroup={this.handleAddNewGroup}\n handleDelete={filter => this.removeFilterItem(filter)}\n filterRenderList={this.filterRenderList}\n filterList={this.extendedSearchFilterList} // list that shows available filters\n handleItemClick={headerName => this.setGroupedFilterSelections(headerName)}\n onAdvancedSearchItemChange={(event: CustomEvent) => this.updateSearchObject(event.detail)}\n handleValueChanged={this.changeOperator}\n filterObjectsWithGroups={this.filterObjectsWithGroups}\n fetchFilters={() => this.getExtendedAdvancedSearchFilterList()}\n // onSearchItemChanged={() => this.handleSearchItemChange()}\n updateLogicalOperator={this.updateLogicalOperator?.bind(this)}\n handleGroupDelete={groupId => this.handleGroupDelete(groupId)}\n recentSearchesOptions={this.recentSearchesOptions}\n selectRecentSearch={this.selectRecentSearch}\n fullClearSearch={this.fullClearSearch}\n findGroupById={this.findGroupById}\n />\n </side-sheet>\n\n <side-sheet\n disabled={this.showHotlistForm}\n widthOption=\"short\"\n sideSheetButtonLabel=\"Create New Hotlist\"\n handleSideSheetButton={() => this.toggleHotlistForm()}\n title=\"Hot Lists\"\n open={this.hotlistDrawerOpen}\n toggleDrawer={() => this.primaryActionClick('hotlists')}\n position=\"right\"\n >\n <div>\n {this.showHotlistForm && <udp-hotlist-form handleFormSubmit={this.handleSaveHotlist} handleCancelClick={() => this.toggleHotlistForm()}></udp-hotlist-form>}\n\n <div style={{ width: '446px' }}>\n {this.allHotlists &&\n this.allHotlists.map(item => {\n if (item.domain === this.entityName) {\n return (\n <tree-list-item\n label={item.name}\n showViewOption={true}\n showAdd={this.businessObjectKey ? true : false}\n showDeleteOption={true}\n viewHandler={() => this.handleRequestHotlist(item.hotListId)}\n deleteHandler={() => this.confirmRequestDelete(item.hotListId)}\n onClick={() => this.handleSetSingleHotlistItem(item.hotListId)}\n statusValue={item.isPrivate}\n statusClasses={{\n true: 'default',\n false: 'neutral',\n }}\n statusLabel={item.isPrivate ? 'Private' : 'Shared'}\n ></tree-list-item>\n );\n }\n })}\n </div>\n </div>\n </side-sheet>\n\n <save-view-form-dialog\n open={this.saveDialogOpen}\n title=\"Save New View\"\n closeDialog={() => this.showViewSave()}\n currentGridViewId={this.selectedGridId}\n currentName={this.selectedViewName}\n currentIsPrivate={this.selectedViewGridViewVisibilityTypeId}\n currentIsDefault={this.selectedViewIsDefault}\n handleFormSubmit={(name: string, isPrivate: number, isDefault: boolean) => {\n // Assuming this.columnState exists in this component's scope\n this.handleViewFormSubmit(name, isPrivate, isDefault, this.gridState);\n }}\n handleViewAndConfigurationSubmit={(name: string, isPrivate: number, isDefault: boolean) => {\n if (this.selectedGridId) {\n if (this.selectedViewGridViewVisibilityTypeId === 2) {\n this.openViewEditConfirmation(name, isPrivate, isDefault);\n } else {\n this.setCurrentViewData(name, isDefault, isPrivate);\n this.handleViewAndConfigurationsUpdate(this.selectedViewName, this.selectedViewGridViewVisibilityTypeId, this.selectedViewIsDefault, this.gridState);\n }\n }\n }}\n />\n\n <edit-view-form-dialog\n open={this.editDialogOpen}\n title=\"Edit View\"\n closeDialog={() => this.closeViewEdit()}\n currentGridId={this.selectedGridId}\n currentName={this.selectedViewName}\n currentGridViewVisibilityTypeId={this.selectedViewGridViewVisibilityTypeId}\n currentIsDefault={this.selectedViewIsDefault}\n handleFormSubmit={(gridId: any, name: string, isPrivate: number, isDefault: boolean) => {\n this.handleViewUpdate(gridId, name, isPrivate, isDefault);\n }}\n />\n\n <div />\n <fluent-dialog\n title=\"Delete Hotlist\"\n message=\"Are you sure you want to delete this hotlist?\"\n actionOne={() => this.handleRequestDeleteHotlist()}\n actionTwo={() => this.toggleDeleteDialog('hotlist')}\n labelOne=\"Confirm\"\n labelTwo=\"Cancel\"\n open={this.confirmDialog} // Use state to control dialog visibility\n >\n <div>\n This will not delete any of the data but only the records <br />\n from the hotlist and the hotlist itself.{' '}\n </div>\n </fluent-dialog>\n\n <fluent-dialog\n title=\"Delete View\"\n message=\"Are you sure you want to delete this view?\"\n actionOne={() => this.handleDeleteView()}\n actionTwo={() => this.toggleDeleteDialog('View')}\n labelOne=\"Confirm\"\n labelTwo=\"Cancel\"\n open={this.confirmDialogDeleteView} // Use state to control dialog visibility\n >\n <div>\n This will not delete any of the data but only the settings <br />\n saved to display this view.{' '}\n </div>\n </fluent-dialog>\n\n <fluent-dialog\n title=\"Update View\"\n message=\"Are you sure you want to update this view?\"\n actionOne={() => this.handleViewAndConfigurationsUpdate(this.selectedViewName, this.selectedViewGridViewVisibilityTypeId, this.selectedViewIsDefault, this.gridState)}\n actionTwo={() => this.showViewEditConfirmation(false)}\n labelOne=\"Confirm\"\n labelTwo=\"Cancel\"\n open={this.editViewConfirmationDialogOpen}\n >\n <div>This is a public view. Any changes made to it will be seen by others when they load this view. </div>\n </fluent-dialog>\n\n <fluent-dialog\n title={'Toggle Search Mode to ' + (this.enableAdvancedSearch ? 'Standard' : 'Advanced') + ' Search'}\n message={\n this.enableAdvancedSearch\n ? `Are you sure you want to toggle the search mode to standard search?`\n : `Are you sure you want to toggle the search mode to advanced search?`\n }\n actionOne={() => this.confirmSearchModeToggle()}\n actionTwo={() => this.toggleSearchModeConfirmation(false)}\n labelOne=\"Confirm\"\n labelTwo=\"Cancel\"\n open={this.toggleSearchModeConfirmationDialogOpen}\n >\n <div>\n {this.enableAdvancedSearch\n ? 'The advanced search functionality will be disabled, all advanced search filters will be cleared and the grid will be reset to its default state.'\n : 'The standard search functionality will be disabled and any existing standard filters will persist to the advanced search.'}\n </div>\n </fluent-dialog>\n </div>\n );\n }\n}\n",".header {\n display: flex;\n align-items: center;\n height: 3rem;\n background-color: #262626;\n color: #fff;\n padding-right: 1rem;\n }\n \n .skip-to-content {\n position: absolute;\n top: -40px;\n }\n \n .header__logo {\n /* Add your logo styles here */\n }\n \n .header__nav {\n flex: 1;\n display: flex;\n justify-content: space-between;\n }\n \n .header__global {\n /* Global actions styling here */\n }\n ","import { Component, Prop, h } from '@stencil/core';\nimport Menu24 from '@carbon/icons/es/menu/24';\n\n@Component({\n tag: 'app-bar',\n styleUrl: 'app-bar.css',\n shadow: true\n})\nexport class AppBar {\n @Prop() username: string;\n\n render() {\n\n return (\n <div class=\"header\">\n <stencil-icon-button noBackground darkIcon={false} icon={Menu24} ></stencil-icon-button>\n <unity-typography variant='data-display-one'> <slot></slot> </unity-typography> \n <a class=\"skip-to-content\" href=\"#main-content\">Skip to main content</a>\n <div class=\"header__logo\">\n {/* Logo here */}\n </div>\n <div class=\"header__nav\" role=\"navigation\" aria-label=\"Carbon Design System\">\n {/* Navigation here */}\n </div>\n <div class=\"header__global\">\n {/* Global actions here */}\n <udp-avatar username={this.username}/>\n </div>\n </div>\n );\n }\n}\n","/* Base class */\n.my-button {\n background-color: var(--primary-color);\n box-sizing: border-box;\n border: none;\n color: white;\n padding: 8px 24px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: background-color 0.3s ease;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n text-decoration: none;\n min-width: 48px;\n min-height: 24px; /* Default size */\n}\n\n.my-button:hover {\n background-color: var(--primary-color-dark) \n}\n\n.my-button:disabled {\n background-color: #c6c6c6;\n color: #6f6f6f;\n cursor: not-allowed;\n}\n\n/* Outline variant */\n.my-button--outline {\n background-color: transparent;\n border: 1px solid var(--primary-color);\n color: var(--primary-color);\n /* padding: calc(8px - 1px) 24px; */\n padding: 5px 15px;\n min-width: 64px;\n}\n\n.my-button--outline:hover {\n background-color: rgba(0, 0, 0, 0.1);\n}\n\n/* Secondary variant */\n.my-button--secondary {\n background-color: var(--accent-color-two);\n}\n\n.my-button--secondary:hover {\n background-color: brightness(var(--accent-color-two, 90%)); \n}\n\n/* Text variant */\n.my-button--text {\n background-color: transparent;\n color: var(--primary-color);\n padding: 5px 15px; /* Matching outline padding */\n min-width: 64px; /* Matching outline min-width */\n border: none;\n}\n\n.my-button--text:hover {\n background-color: rgba(0, 0, 0, 0.1); /* Consistent hover with outline/secondary */\n}\n\n/* Size Variants */\n.my-button--short {\n min-height: 24px; /* Shorter button */\n}\n\n.my-button--tall {\n min-height: 48px; /* Taller button */\n}\n","import { Component, Prop, h, Event, EventEmitter, Element } from '@stencil/core';\n\n@Component({\n tag: 'custom-button',\n styleUrl: 'custom-button.css',\n shadow: true,\n})\nexport class CustomButton {\n @Element() el: HTMLElement;\n @Prop() label: string;\n\n @Prop() variant: 'default' | 'outline' | 'text' = 'default';\n @Prop() secondary: boolean = false;\n @Prop() type: 'button' | 'submit' | 'reset' = 'button';\n @Prop() disabled: boolean = false; \n @Prop() size: 'default' | 'short' | 'tall' = 'default'; \n @Prop() handleClick: any \n\n @Event() customClick: EventEmitter<void>;\n\n handleButtonClick = (event: Event) => {\n if (this.type === 'submit') {\n event.preventDefault();\n }\n if (!this.disabled) {\n if(this.handleClick){\n this.handleClick(event)\n }\n this.customClick.emit();\n }\n };\n\n render() {\n let buttonClass = 'my-button';\n\n if (this.variant === 'outline') {\n buttonClass += ' my-button--outline';\n } else if (this.variant === 'text') {\n buttonClass += ' my-button--text';\n } else if (this.secondary) {\n buttonClass += ' my-button--secondary';\n }\n\n if (this.size === 'short') {\n buttonClass += ' my-button--short';\n } else if (this.size === 'tall') {\n buttonClass += ' my-button--tall';\n }\n\n return (\n <button type={this.type} class={buttonClass} onClick={this.handleButtonClick} disabled={this.disabled}>\n {this.label}\n <slot></slot>\n </button>\n );\n }\n}\n",".info-columns{\n display: flex;\n}\n\n.column{\n width: 100px\n}\n\n.toggle-options {\n display: flex;\n gap: 16px;\n align-items: center;\n margin-bottom: 16px;\n}","import { Component, Prop, h, State, Element } from '@stencil/core';\n\n@Component({\n tag: 'edit-view-form-dialog',\n styleUrl: 'edit-view-form-dialog.css',\n shadow: true,\n})\nexport class EditViewFormDialog {\n @Element() el: HTMLElement;\n @Prop() open: boolean;\n @Prop() title: string;\n @Prop() handleClose: Function;\n @Prop() tenant: string;\n @Prop() application: string;\n @Prop() entity: string;\n @Prop() user: any;\n @Prop() refetchViews: () => void;\n @Prop() gApi: any;\n @Prop() gcApi: any;\n @Prop() gridId: any;\n @Prop() domain: any;\n @Prop() apiCatalogId: any;\n @Prop() closeDialog: any;\n @Prop() currentGridId: string;\n @Prop() currentName: string;\n @Prop() currentGridViewVisibilityTypeId: number;\n @Prop() currentIsDefault: boolean;\n\n // Adjust the handleFormSubmit to accept a number for isPrivate\n @Prop() handleFormSubmit: (gridId: any, name: string, isPrivate: number, isDefault: boolean) => void;\n\n // Initialize name with the value of currentName\n @State() name: string = '';\n // Change isPrivate to be a number, defaulting to 2 (false/not private)\n @State() isPrivate: number = 2;\n @State() isDefault: boolean = false;\n @State() fetchedCurrentView: boolean = false;\n\n componentDidUpdate() {\n if (this.open) {\n this.handleGetExistingView();\n }\n }\n\n componentWillRender() {\n // console.log(\"rerendered name\");\n this.name = this.currentName;\n this.gridId = this.currentGridId;\n }\n\n handleGetExistingView = () => {\n this.isPrivate = this.currentGridViewVisibilityTypeId;\n this.isDefault = this.currentIsDefault;\n console.log(\"isPrivate:\", this.isPrivate, \"isDefault:\", this.isDefault);\n this.fetchedCurrentView = true;\n };\n\n resetFetchedCurrentView() {\n this.fetchedCurrentView = false;\n }\n\n handleNameChange = (event) => {\n this.currentName = event.target.value;\n this.name = event.target.value;\n };\n\n handlePrivateChange = () => {\n this.isPrivate = this.isPrivate === 1 ? 2 : 1;\n this.currentGridViewVisibilityTypeId = this.currentGridViewVisibilityTypeId === 1 ? 2 : 1;\n console.log(this.isPrivate);\n };\n\n handleDefaultChange = () => {\n this.isDefault = !this.isDefault;\n this.currentIsDefault = !this.currentIsDefault;\n console.log(this.isDefault);\n };\n\n handleSubmit = () => {\n this.handleFormSubmit(this.gridId, this.name, this.isPrivate, this.isDefault );\n };\n\n render() {\n return (\n <fluent-dialog\n open={this.open}\n actionOne={() => { this.handleSubmit(); this.closeDialog(); this.resetFetchedCurrentView(); }}\n actionTwo={() => { this.closeDialog(); this.resetFetchedCurrentView(); }}\n handleClose={this.handleClose}\n labelOne=\"Save Update\"\n labelTwo=\"Cancel\"\n title={this.title}\n disableOne={!this.name}\n >\n <form class=\"edit-form\">\n <text-field\n label=\"View Name\"\n value={this.name}\n onInput={(event: any) => this.handleNameChange(event)}\n ></text-field>\n { this.fetchedCurrentView &&\n <div class=\"toggle-options\" >\n <div><stencil-toggle label=\"Private\" checked={this.isPrivate === 1} onToggledChange={this.handlePrivateChange}></stencil-toggle> </div>\n <div><stencil-toggle label=\"Default\" checked={this.isDefault} onToggledChange={this.handleDefaultChange} style={{ marginTop: '10px' }}></stencil-toggle></div>\n </div>\n }\n </form>\n </fluent-dialog>\n );\n }\n}\n",null,"import { Component, h } from '@stencil/core';\n\n@Component({\n tag: 'filter-conditions',\n styleUrl: 'filter-conditions.css',\n shadow: true,\n})\nexport class AdvancedSearch {\n render() {\n return (\n <div class=\"container\">\n <udp-column-header></udp-column-header>\n </div>\n );\n }\n}\n","\n:host([open]) {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 9999;\n background-color: rgba(0, 0, 0, 0.5); /* Greyed-out background */\n }\n\n\n.dialog-container {\n display: none;\n /* Additional styles for the container */\n }\n \n .dialog-container.open {\n display: block;\n /* Additional styles for when the dialog is open */\n }\n \n .dialog-container {\n display: none; /* Hide the dialog by default */\n position: fixed; /* Position in relation to the viewport */\n top: 50%; /* Start at the center vertically */\n left: 50%; /* Start at the center horizontally */\n transform: translate(-50%, -50%); /* Shift the dialog to be truly centered */\n background-color: #fff;\n box-shadow: 0 12px 24px rgba(0, 0, 0, 0.16), 0 12px 24px rgba(0, 0, 0, 0.23);\n max-width: 90%;\n min-width: 500px;\n overflow: hidden;\n z-index: 10000; /* Make sure it's above the overlay */\n }\n \n \n .dialog-title {\n padding: 16px;\n font-size: 20px;\n }\n \n .dialog-content {\n padding-left: 16px;\n padding-right: 16px;\n }\n \n .dialog-actions {\n /* padding: 16px; */\n display: flex;\n justify-content: flex-end;\n }\n \n \n button {\n margin-left: 8px;\n }\n \n\n .overlay {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 9998;\n }\n \n .overlay-open {\n display: block;\n }\n \n .dialog-open {\n display: block;\n }","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'fluent-dialog',\n styleUrl: 'fluent-dialog.css',\n shadow: true,\n})\nexport class FluentDialog {\n @Prop() title: string;\n @Prop() message: string;\n @Prop() actionOne: Function;\n @Prop() actionTwo: Function;\n @Prop() actionThree: Function;\n @Prop() labelOne: string;\n @Prop() labelTwo: string;\n @Prop() labelThree: string;\n @Prop() open: boolean;\n @Prop() handleClose: Function;\n @Prop() ariaLabelledby: string;\n @Prop() ariaDescribedby: string;\n @Prop() titleId: string;\n @Prop() descriptionId: string;\n @Prop() buttonOneHidden: boolean = false;\n @Prop() buttonTwoHidden: boolean = false;\n @Prop() buttonThreeHidden: boolean = true;\n @Prop() disableOne: boolean;\n @Prop() disableTwo: boolean;\n @Prop() disableThree: boolean;\n @Prop() progress: number;\n\n render() {\n return (\n <div class={{ 'overlay': true, 'overlay-open': this.open }}>\n <div class={{ 'dialog-container': true, 'dialog-open': this.open }}>\n <div class=\"dialog-title\" id={this.titleId}>\n <unity-typography variant=\"h3\">{this.title}</unity-typography>\n </div>\n <div class=\"dialog-content\">\n <unity-typography variant=\"h6\">{this.message}</unity-typography>\n <unity-typography variant=\"body\">\n <slot />\n </unity-typography>\n </div>\n <div class=\"dialog-actions\">\n {!this.buttonTwoHidden && (\n <custom-button size=\"tall\" variant=\"text\" onClick={() => this.actionTwo()}>\n {this.labelTwo}\n </custom-button>\n )}\n {!this.buttonThreeHidden && (\n <custom-button\n //class=\"primary-action\"\n onClick={() => this.actionThree()}\n size=\"tall\"\n variant=\"text\"\n disabled={this.disableThree}\n >\n {this.labelThree}\n </custom-button>\n )}\n {!this.buttonOneHidden && (\n <custom-button class=\"primary-action\" variant=\"text\" onClick={() => this.actionOne()} size=\"tall\" disabled={this.disableOne}>\n {this.labelOne}\n </custom-button>\n )}\n </div>\n {this.progress && <div class=\"linear-progress\"></div>}\n </div>\n </div>\n );\n }\n}\n","/* grid-primary-bar.css */\n.header-bar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n background: var(--accent-color);\n }\n \n .title-section {\n flex: 1;\n margin-left: 16px;\n display: flex;\n gap: 16px;\n align-items: center;\n }\n \n .button-section {\n display: flex;\n gap: 8px;\n align-items: center;\n padding-right: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n }\n \n\n /* Targeting by class added to grid-primary-bar */\n/* grid-primary-bar.custom-class {\n overflow: hidden;\n} */\n\n/* .hydrated {\n overflow: hidden;\n} */\n\n","import { Component, Prop, h, State, Watch } from '@stencil/core';\nimport Save16 from '@carbon/icons/es/save/16';\nimport Close16 from '@carbon/icons/es/close/16';\nimport List16 from '@carbon/icons/es/list/16';\nimport Download16 from '@carbon/icons/es/download/16';\nimport Settings16 from '@carbon/icons/es/settings/16';\nimport Star16 from '@carbon/icons/es/star/16';\nimport AdvancedQuery16 from '@carbon/icons/es/ibm-watson--discovery/16';\nimport DataEnrichment16 from '@carbon/icons/es/idea/16';\nimport Renew16 from '@carbon/icons/es/renew/16';\n\n@Component({\n tag: 'grid-primary-bar',\n styleUrl: 'grid-primary-bar.css',\n shadow: true,\n})\nexport class GridPrimaryBar {\n @Prop() title: string;\n @Prop() hiddenActionButtons: string[] = [];\n @Prop() hiddenLabels: string[] = [];\n @Prop() actionButtons: any[] = [];\n @Prop() customSaveViewClick?: (event?: MouseEvent) => void;\n @Prop() customSizeToFitClick?: (event?: MouseEvent) => void;\n @Prop() customExportClick?: (event?: MouseEvent) => void;\n @Prop() primaryActionClick?: (event?: MouseEvent) => void;\n @Prop() customColumnViewClick?: (event?: MouseEvent) => void;\n @Prop() customFitColumnClick?: (event?: MouseEvent) => void;\n @Prop() customFilterViewClick?: (event?: MouseEvent) => void;\n @Prop() customClearClick?: (event?: MouseEvent) => void;\n @Prop() customRefreshClick?: (event?: MouseEvent) => void;\n @Prop() customExpandClick?: (event?: MouseEvent) => void;\n @Prop() customShowViewClick?: (event?: MouseEvent) => void;\n @Prop() customShowHotlistClick?: (event?: MouseEvent) => void;\n @Prop() customShowCustomSearchClick?: (event?: MouseEvent) => void;\n @Prop() customToggleServerClientClick?: (event?: MouseEvent) => void;\n @Prop() customAdvancedSearchClick?: (event?: MouseEvent) => void;\n @Prop() customInsightsClick?: (event?: MouseEvent) => void;\n @Prop() customShowGridOptionsClick?: (event?: MouseEvent) => void;\n @Prop() showAdvancedSearchFeature: boolean = true;\n @Prop() showFilterColumnFeature: boolean = true;\n @Prop() showGridOptions: boolean = true;\n @Prop() showHotlistButton: boolean = false;\n @Prop() hideExport: boolean = false;\n @Prop() showInsightsAction: boolean = false;\n @Prop() primaryActionLabel: string;\n @Prop() primaryActionIcon: string;\n @Prop() enableAdvancedSearch: boolean = true;\n\n @State() defaultActionButtons: any[] = [];\n @State() showLabels: boolean = true;\n\n checkWindowWidth() {\n const windowWidth = window.innerWidth;\n this.showLabels = windowWidth >= 1000;\n }\n\n @Watch('window:resize')\n onResize() {\n this.checkWindowWidth();\n }\n\n componentWillLoad() {\n this.checkWindowWidth();\n this.defaultActionButtons = this.initializeActionButtons();\n }\n\n componentDidLoad() {\n // Add event listener for window resize\n window.addEventListener('resize', this.checkWindowWidth.bind(this));\n }\n\n disconnectedCallback() {\n // Remove event listener when component is unloaded\n window.removeEventListener('resize', this.checkWindowWidth.bind(this));\n }\n\n private initializeActionButtons() {\n let buttons = [\n {\n icon: Save16,\n tooltip: 'Save View',\n label: 'Save View',\n visible: true,\n showLabel: true,\n iconClassName: 'save-icon-class',\n clickHandler: this.customSaveViewClick,\n },\n {\n icon: Star16,\n tooltip: 'Views',\n label: 'Views',\n visible: true,\n showLabel: true,\n iconClassName: 'save-icon-class',\n clickHandler: this.customShowViewClick,\n },\n {\n icon: List16,\n tooltip: 'Hotlists',\n label: 'Hotlists',\n visible: true,\n showLabel: true,\n iconClassName: 'save-icon-class',\n clickHandler: this.customShowHotlistClick,\n },\n {\n icon: AdvancedQuery16,\n tooltip: 'Search',\n label: 'Search',\n visible: this.enableAdvancedSearch,\n showLabel: true,\n iconClassName: 'save-icon-class',\n clickHandler: this.customShowCustomSearchClick,\n },\n {\n icon: Renew16,\n tooltip: 'Refresh',\n label: 'Refresh',\n visible: true,\n showLabel: true,\n iconClassName: 'save-icon-class',\n clickHandler: this.customRefreshClick,\n },\n {\n icon: Close16,\n tooltip: 'Clear Search',\n label: 'Clear Search',\n visible: true,\n showLabel: true,\n iconClassName: 'save-icon-class',\n clickHandler: this.customClearClick,\n },\n ];\n\n if (!this.hideExport) {\n buttons.splice(3, 0, {\n icon: Download16,\n tooltip: 'Export',\n label: 'Export',\n visible: true,\n showLabel: true,\n iconClassName: 'size-to-fit-icon-class',\n clickHandler: this.customExportClick,\n });\n }\n\n if (this.showInsightsAction) {\n buttons.splice(this.hideExport ? 3 : 4, 0, {\n icon: DataEnrichment16,\n tooltip: 'Insights',\n label: 'Insights',\n visible: true,\n showLabel: true,\n iconClassName: 'save-icon-class',\n clickHandler: this.customInsightsClick,\n });\n }\n\n if (!this.showHotlistButton) {\n buttons = buttons.filter((btn: { label: string }) => btn.label !== 'Hotlists');\n }\n\n if (this.showGridOptions) {\n buttons.push({\n icon: Settings16,\n tooltip: 'Grid Options',\n label: 'Grid Options',\n visible: true,\n showLabel: false,\n iconClassName: 'save-icon-class',\n clickHandler: this.customShowGridOptionsClick,\n });\n }\n\n return buttons;\n }\n\n @Watch('enableAdvancedSearch')\n handleAdvancedSearchToggle() {\n this.defaultActionButtons = this.initializeActionButtons();\n }\n\n render() {\n return (\n <div class=\"header-bar\">\n <div class=\"title-section\">\n <div>\n <unity-typography variant=\"h4\">{this.title} </unity-typography>{' '}\n </div>\n </div>\n <div class=\"button-section\">\n <div>\n <slot></slot>\n </div>\n\n {this.defaultActionButtons.map(btn => {\n const clickHandler = (event?: MouseEvent) => {\n if (btn.clickHandler) {\n btn.clickHandler(event);\n } else {\n console.log(`${btn.label} Clicked but no custom handler defined`);\n }\n };\n\n if (!this.hiddenActionButtons.includes(btn.label) && btn.visible) {\n return (\n <stencil-icon-button-grid-action-header\n showLabel={this.showLabels}\n secondary={btn.secondary}\n icon={btn.icon}\n onClick={clickHandler}\n tooltip={btn.tooltip}\n iconClassName={btn.iconClassName}\n >\n {btn.icon && <i class={btn.icon}></i>}\n {btn.label.toLowerCase() === 'save' || (!this.hiddenLabels.includes(btn.label) && btn.showLabel) ? <span>{btn.label}</span> : null}\n </stencil-icon-button-grid-action-header>\n );\n }\n return null;\n })}\n {this.primaryActionClick && this.primaryActionLabel && (\n <custom-button label={this.primaryActionLabel} onClick={(event: MouseEvent) => this.primaryActionClick(event)} size=\"tall\">\n {this.primaryActionIcon && <udp-icon iconName={this.primaryActionIcon} darkIcon={false} />}\n </custom-button>\n )}\n </div>\n </div>\n );\n }\n}\n",".hint-container {\n border-left: 3px solid blue; /* Replace with your primary color */\n }\n \n .hint-content {\n background-color: #F3F9FE;\n padding: 1rem;\n }\n \n .hide-hint-button {\n border: none;\n background: none;\n cursor: pointer;\n color: #0B79D0;\n text-decoration: none;\n }\n \n .hide-help {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: 100%;\n }\n ","import { Component, Prop, State, h } from '@stencil/core';\n\n@Component({\n tag: 'hint-panel',\n styleUrl: 'hint-panel.css',\n shadow: true,\n})\nexport class HintPanel {\n @Prop() hint: string;\n @Prop() hideHintText: string;\n @State() showHint: boolean = true;\n\n handleHideHint = () => {\n this.showHint = false;\n };\n\n render() {\n return (\n <div class=\"hint-container\">\n {this.showHint && (\n <div class=\"hint-content\">\n <div><unity-typography variant='body' > {this.hint} </unity-typography>\n \n </div>\n <div class=\"hide-help\">\n <button class=\"hide-hint-button\" onClick={this.handleHideHint}>\n {this.hideHintText}\n </button>\n </div>\n </div>\n )}\n </div>\n );\n }\n \n}\n",".kpi-container {\n display: flex;\n align-items: center;\n padding-top: 8px;\n padding-bottom: 8px;\n justify-content: flex-end;\n padding-right: 16px;\n background-color: rgb(247, 245, 243);\n }\n \n .kpi-item {\n display: flex;\n align-items: center;\n }\n \n .kpi-label {\n margin-right: 5px;\n font-weight: 700;\n }\n \n .kpi-value {\n margin-left: 5px;\n }\n \n .divider {\n border-left: 1px solid black;\n height: 20px;\n margin: 0 10px;\n }\n ","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'kpi-list',\n styleUrl: 'kpi-list.css',\n})\nexport class KpiList {\n @Prop() kpiValues: Array<{ label: string, value: number }>;\n\n render() {\n return (\n <div class=\"kpi-container\">\n {this.kpiValues.map((kpi, index) => (\n <div class=\"kpi-item\">\n <span class=\"kpi-label\"\n style={{\n fontSize:' 0.875rem',\n fontWeight: '300',\n lineHeight: '0.25',\n fontFamily: 'sans-serif'\n }} > <unity-typography > {kpi.label}: </unity-typography> </span>\n <span class=\"kpi-value\"\n style={{\n fontSize:' 0.875rem',\n fontWeight: '600',\n lineHeight: '0.25',\n fontFamily: 'sans-serif'\n }}\n > <unity-typography > {kpi.value.toLocaleString()} </unity-typography> </span>\n {index < this.kpiValues.length - 1 && <div class=\"divider\"></div>}\n </div>\n ))}\n </div>\n );\n }\n}\n",":host {\n display: block;\n}\n.wrapper {\n display: flex;\n width: 100%;\n border-bottom: 1px solid #e5e5e5;\n background-color: #344861;\n}\n\n.titleWrapper {\n flex: 1;\n margin-left: 16px;\n color: white\n}\n\nbody {\n margin: 0;\n font-family: sans-serif;\n padding: 0;\n}\n\n.container {\n /* margin: 16px; */\n padding: 16px;\n background-color: rgb(249, 249, 249);\n}","import { Component, Prop, h, State, Listen } from '@stencil/core';\nimport Asterisk16 from '@carbon/icons/es/asterisk/16';\nimport { ConfigService } from 'src/udp-utilities/api-config'\nimport '../my-component/ag-grid.css';\nimport { defaultPayload, demoMSSearchData } from '../../udp-utilities/grid/data-converters/transformSearchData';\nimport { RenderConfig } from '../my-component/UI/grid/ambient-template-grid/interfaces/gridInterfaces';\n\n@Component({\n tag: 'my-component',\n styleUrl: 'my-component.css',\n shadow: true,\n})\nexport class MyComponent {\n @Prop() first: string;\n @Prop() middle: string;\n @Prop() last: string;\n\n @State() toggled: boolean = false;\n @State() dialogOpen: boolean = false; // new State property for dialog\n @State() drawerOpen: boolean = false;\n @State() popoverOpen: boolean = false;\n @State() loadedView: Array<any> = [];\n @State() loadedViewTitle: string = 'Root View';\n @State() tenantId: string = '034A2261-E825-4857-9EC5-E1DC2E577EEB';\n @State() externalSearchFilter: Array<any> = [];\n\n @State() mindscopeDemoPayload: Object = {};\n @State() dataEmitterDemo: Object = {};\n\n // In your root Stencil component\n @State() renderConfigs = [\n {\n field: 'ownership',\n rendererName: 'emailCellRenderer',\n otherField: 'emailAddress',\n callbackId: 'handleContactClick',\n },\n {\n field: 'fullName',\n rendererName: 'openFunctionCellRenderer',\n otherField: 'fullName',\n callbackId: 'handleDefaultContactClick',\n },\n {\n field: 'actions',\n rendererName: 'hotListAddRenderer',\n otherField: 'businessObjectKey',\n callbackId: 'handleActionClick',\n },\n {\n field: 'lastUpdate',\n rendererName: 'dateTimeCellRenderer',\n otherField: 'lastUpdate',\n callbackId: 'handleContactClick',\n cellRendererParams: {\n formatMode: 'exact' as 'exact', // Type assertion\n locale: 'US' as 'US', // Type assertion\n },\n } as RenderConfig,\n ];\n\n @State() filterObject: Array<any> = [\n {\n pageNumber: 1,\n pageSize: 20,\n filterElements: [],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 1,\n },\n ];\n\n @State() activeTabIndex: number = 0;\n @State() viewChips: Array<any> = [];\n @State() additionalFilterChips: Array<any> = [];\n @State() kpiValues: Array<any> = [\n { label: 'Avg per cycle', value: 2.3 },\n { label: 'Water', value: 2.3 },\n { label: 'Electric', value: 16.7 },\n { label: 'Sewer', value: 5600 },\n ];\n @State() rowData: Array<any> = [];\n @State() columnDefs: Array<any> = [];\n @State() TestcolumnDefs: Array<any> = [\n {\n name: 'BusinessObjectKeyA',\n field: 'businessObjectKeyB',\n minWidth: 80,\n autoHeight: true,\n sortable: true,\n cellStyle: {\n 'white-space': 'nowrap',\n 'overflow': 'hidden',\n 'text-overflow': 'ellipsis',\n },\n filter: 'agTextColumnFilter',\n resizable: true,\n },\n {\n headerName: 'Id',\n field: 'id',\n minWidth: 80,\n autoHeight: true,\n sortable: true,\n cellStyle: {\n 'white-space': 'nowrap',\n 'overflow': 'hidden',\n 'text-overflow': 'ellipsis',\n },\n filter: 'agTextColumnFilter',\n resizable: true,\n },\n {\n headerName: 'FirstName',\n field: 'firstName',\n minWidth: 80,\n autoHeight: true,\n sortable: true,\n cellStyle: {\n 'white-space': 'nowrap',\n 'overflow': 'hidden',\n 'text-overflow': 'ellipsis',\n },\n filter: 'agTextColumnFilter',\n resizable: true,\n },\n {\n headerName: 'LastName',\n field: 'lastName',\n minWidth: 80,\n autoHeight: true,\n sortable: true,\n cellStyle: {\n 'white-space': 'nowrap',\n 'overflow': 'hidden',\n 'text-overflow': 'ellipsis',\n },\n filter: 'agTextColumnFilter',\n resizable: true,\n },\n {\n headerName: 'GenderCode',\n field: 'genderCode',\n minWidth: 80,\n autoHeight: true,\n sortable: true,\n cellStyle: {\n 'white-space': 'nowrap',\n 'overflow': 'hidden',\n 'text-overflow': 'ellipsis',\n },\n filter: 'agTextColumnFilter',\n resizable: true,\n },\n {\n headerName: 'Birthdate',\n field: 'birthdate',\n minWidth: 80,\n autoHeight: true,\n sortable: true,\n cellStyle: {\n 'white-space': 'nowrap',\n 'overflow': 'hidden',\n 'text-overflow': 'ellipsis',\n },\n filter: 'agTextColumnFilter',\n resizable: true,\n },\n {\n headerName: 'DeathDate',\n field: 'deathDate',\n minWidth: 80,\n autoHeight: true,\n sortable: true,\n cellStyle: {\n 'white-space': 'nowrap',\n 'overflow': 'hidden',\n 'text-overflow': 'ellipsis',\n },\n filter: 'agTextColumnFilter',\n resizable: true,\n },\n {\n headerName: 'SerializeFields',\n field: 'serializeFields',\n minWidth: 80,\n autoHeight: true,\n sortable: true,\n cellStyle: {\n 'white-space': 'nowrap',\n 'overflow': 'hidden',\n 'text-overflow': 'ellipsis',\n },\n filter: 'agTextColumnFilter',\n resizable: true,\n },\n {\n headerName: 'ActorGender',\n field: 'actorGender',\n minWidth: 80,\n autoHeight: true,\n sortable: true,\n cellStyle: {\n 'white-space': 'nowrap',\n 'overflow': 'hidden',\n 'text-overflow': 'ellipsis',\n },\n filter: 'agTextColumnFilter',\n resizable: true,\n },\n {\n headerName: 'ActorMovieActors',\n field: 'actorMovieActors',\n minWidth: 80,\n autoHeight: true,\n sortable: true,\n cellStyle: {\n 'white-space': 'nowrap',\n 'overflow': 'hidden',\n 'text-overflow': 'ellipsis',\n },\n filter: 'agTextColumnFilter',\n resizable: true,\n },\n {\n headerName: 'UdpTags',\n field: 'udpTags',\n minWidth: 80,\n autoHeight: true,\n sortable: true,\n cellStyle: {\n 'white-space': 'nowrap',\n 'overflow': 'hidden',\n 'text-overflow': 'ellipsis',\n },\n filter: 'agTextColumnFilter',\n resizable: true,\n },\n ];\n\n @State() filterChips: Array<any> = [\n {\n label: 'Brad',\n value: 'Brad',\n id: 0,\n keyName: 'firstName',\n },\n {\n label: 'Bruce',\n value: 'Bruce',\n id: 1,\n keyName: 'firstName',\n },\n {\n label: 'Tom',\n value: 'Tom',\n id: 2,\n keyName: 'firstName',\n },\n {\n label: 'Dispatched',\n value: 0,\n id: 3,\n keyName: 'firstName',\n },\n {\n label: 'Field Mobility',\n value: 0,\n id: 4,\n keyName: 'firstName',\n },\n {\n label: 'Fleet Management X',\n value: 0,\n id: 5,\n keyName: 'firstName',\n },\n {\n label: 'Crew Routing',\n value: 0,\n id: 6,\n keyName: 'firstName',\n },\n {\n label: 'Asset Routing',\n value: 0,\n id: 7,\n keyName: 'firstName',\n },\n {\n label: 'Work Orders',\n value: 0,\n id: 8,\n keyName: 'firstName',\n },\n {\n label: 'Consumer Information',\n value: 0,\n id: 9,\n keyName: 'firstName',\n },\n {\n label: 'Cashiering',\n value: 0,\n id: 10,\n keyName: 'firstName',\n },\n {\n label: 'Consumer Engagement',\n value: 0,\n id: 11,\n keyName: 'firstName',\n },\n {\n label: 'Contact Center',\n value: 0,\n id: 12,\n keyName: 'firstName',\n },\n {\n label: 'MDM',\n value: 0,\n id: 13,\n keyName: 'firstName',\n },\n {\n label: 'Course Management',\n value: 0,\n id: 14,\n keyName: 'firstName',\n },\n {\n label: 'Facility Management',\n value: 0,\n id: 15,\n keyName: 'firstName',\n },\n {\n label: 'Instructor Application',\n value: 0,\n id: 16,\n keyName: 'firstName',\n },\n {\n label: 'Member Management',\n value: 0,\n id: 17,\n keyName: 'firstName',\n },\n ];\n @Prop() accessTokenProp: string = '';\n\n @State() clientDetails: Array<any> = [];\n @State() viewDrawerOpen: boolean = false;\n\n //accessToken = accessToken\n accessToken = localStorage.getItem('accessToken');\n entityName = 'Actor';\n productId = parseInt(localStorage.getItem('productId'), 10);\n apiCatalogId = localStorage.getItem('apiCatalogId');\n userId = '8fe3b5ce-6a94-4ff4-b35c-be2596ea1380';\n gridId = 'CC8529E0-1CDD-4FC2-820A-50F76433B19E';\n\n toggleDrawer = () => {\n this.drawerOpen = !this.drawerOpen;\n };\n\n handleUserData(event: CustomEvent) {\n const userInfo = event.detail;\n // Do something with userInfo\n console.log('USER::::', userInfo);\n this.tenantId = userInfo.tenantIds[0];\n }\n\n handleChipDelete = () => {\n // Your delete logic here\n this.loadedView = [];\n };\n\n setAdditionalFilterChips = newChips => {\n this.additionalFilterChips = newChips;\n };\n\n setViewChips = newChips => {\n this.viewChips = newChips;\n };\n\n setFilter = () => {\n // Your set filter logic here\n };\n\n handleToggle() {\n this.toggled = !this.toggled;\n }\n\n handlePopover = () => {\n this.popoverOpen = !this.popoverOpen;\n };\n\n logTest = () => {\n console.log('log Test...!');\n this.dialogOpen = !this.dialogOpen; // Toggle dialog state\n };\n\n viewListrowData = [\n {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.GridView|f8defdca-2ffe-4064-a208-730ab9c46357',\n gridViewId: 'f8defdca-2ffe-4064-a208-730ab9c46357',\n name: 'Test Page View',\n clusterId: 4,\n gridViewVisibilityTypeId: 2,\n isDefault: false,\n tenantId: 'f86a9b7c-bab0-4281-89a2-52b4caf89fab',\n userId: '26c5be02-219d-4a8b-896a-4da10bde0839',\n gridId: '678410c2-430b-454b-bbef-1a6236a686ec',\n domain: 'Page',\n apiCatalogId: '5ee7b3ed-8aba-4c40-8b61-fabdcf9a440c',\n serializeFields: null,\n gridViewGridViewVisibilityType: null,\n gridViewTenant: null,\n gridViewUser: null,\n gridViewGrid: null,\n gridViewApiCatalog: null,\n gridViewGridViewGridConfiguration: [],\n udpTags: [],\n },\n {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.GridView|ef966d75-07e8-4664-ae08-ec30adf756f7',\n gridViewId: 'ef966d75-07e8-4664-ae08-ec30adf756f7',\n name: 'Test view',\n clusterId: 5,\n gridViewVisibilityTypeId: 1,\n isDefault: false,\n tenantId: 'f86a9b7c-bab0-4281-89a2-52b4caf89fab',\n userId: '8fe3b5ce-6a94-4ff4-b35c-be2596ea1380',\n gridId: '678410c2-430b-454b-bbef-1a6236a686ec',\n domain: 'Page',\n apiCatalogId: '5ee7b3ed-8aba-4c40-8b61-fabdcf9a440c',\n serializeFields: null,\n gridViewGridViewVisibilityType: null,\n gridViewTenant: null,\n gridViewUser: null,\n gridViewGrid: null,\n gridViewApiCatalog: null,\n gridViewGridViewGridConfiguration: [],\n udpTags: [],\n },\n ];\n\n fullViewData = {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.GridView|f8defdca-2ffe-4064-a208-730ab9c46357',\n gridViewId: 'f8defdca-2ffe-4064-a208-730ab9c46357',\n name: 'Test Page View',\n clusterId: 4,\n gridViewVisibilityTypeId: 2,\n isDefault: false,\n tenantId: 'f86a9b7c-bab0-4281-89a2-52b4caf89fab',\n userId: '26c5be02-219d-4a8b-896a-4da10bde0839',\n gridId: '678410c2-430b-454b-bbef-1a6236a686ec',\n domain: 'Page',\n apiCatalogId: '5ee7b3ed-8aba-4c40-8b61-fabdcf9a440c',\n serializeFields: null,\n gridViewGridViewVisibilityType: {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.GridViewVisibilityType|2',\n gridViewVisibilityTypeId: 2,\n name: 'Public',\n serializeFields: null,\n gridViewVisibilityTypeGridView: [],\n udpTags: [],\n },\n gridViewTenant: {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.Tenant|f86a9b7c-bab0-4281-89a2-52b4caf89fab',\n tenantId: 'f86a9b7c-bab0-4281-89a2-52b4caf89fab',\n clusterId: 1,\n tenantName: 'Univerus Software Inc',\n contactEmail: 'userdemo@outlook.com',\n locked: false,\n theme: 'sap',\n showUnsubscribedProducts: false,\n description: 'Univerus Software',\n apiAuthKey: '220b069a-5598-4ed6-b3fa-893ca0220f32',\n defaultVerticalId: 2,\n serializeFields: null,\n tenantAggregateThreshold: [],\n tenantApiMethodInstanceTenant: [],\n tenantBillingDetails: [],\n tenantBlobDocument: [],\n tenantGridView: [],\n tenantGroup: [],\n tenantInquiryTreeTenant: [],\n tenantMenuInstanceTenant: [],\n tenantMenuItemInstanceTenant: [],\n tenantMenuItemInstanceTenantGroup: [],\n tenantMenuItemInstanceTenantRole: [],\n tenantMenuStructure: [],\n tenantPage: [],\n tenantPanel: [],\n tenantProperty: [],\n tenantRole: [],\n tenantRule: [],\n tenantSupportIntegration: [],\n tenantVertical: null,\n tenantTenantDriveConfig: [],\n tenantTenantProduct: [],\n tenantTenantProductApiCatalogBase: [],\n tenantTenantProductHomePage: [],\n tenantTenantUser: [],\n tenantTranslation: [],\n tenantUser: [],\n udpTags: [],\n },\n gridViewUser: {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.User|26c5be02-219d-4a8b-896a-4da10bde0839',\n userId: '26c5be02-219d-4a8b-896a-4da10bde0839',\n clusterId: 778,\n externalUUID: '22248368-9a38-41b7-9980-e7b3b79f5990',\n email: 'ckung@univerus.com',\n locked: false,\n defaultTenantId: 'f86a9b7c-bab0-4281-89a2-52b4caf89fab',\n serializeFields: null,\n userApiCatalog: [],\n userApiCatalog2: [],\n userApiUrlBase: [],\n userApiUrlBase2: [],\n userBillingDetailUsers: [],\n userGridView: [],\n userInquiryTree: [],\n userLoadedInquiryTreeNode: [],\n userMenuInstanceUser: [],\n userPage: [],\n userRule: [],\n userTenantUser: [],\n userTranslation: [],\n userTenant: null,\n userUserGridConfiguration: [],\n userUserGroup: [],\n userUserProduct: [],\n userUserRole: [],\n udpTags: [],\n },\n gridViewGrid: {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.Grid|678410c2-430b-454b-bbef-1a6236a686ec',\n gridId: '678410c2-430b-454b-bbef-1a6236a686ec',\n clusterId: 31,\n name: 'UDP_Grid_UI_UX_Sandbox',\n serializeFields: null,\n gridGridConfiguration: [],\n gridGridView: [],\n udpTags: [],\n },\n gridViewApiCatalog: null,\n gridViewGridViewGridConfiguration: [\n {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.GridViewGridConfiguration|f8defdca-2ffe-4064-a208-730ab9c46357,27c4125d-2d39-4753-aba6-1a24581ba5b5',\n gridViewId: 'f8defdca-2ffe-4064-a208-730ab9c46357',\n gridConfigurationId: '27c4125d-2d39-4753-aba6-1a24581ba5b5',\n serializeFields: null,\n gridViewGridConfigurationGridView: null,\n gridViewGridConfigurationGridConfiguration: {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.GridConfiguration|27c4125d-2d39-4753-aba6-1a24581ba5b5',\n gridConfigurationId: '27c4125d-2d39-4753-aba6-1a24581ba5b5',\n clusterId: 2927,\n gridStateTypeId: 5,\n gridId: '678410c2-430b-454b-bbef-1a6236a686ec',\n values: '[]',\n serializeFields: null,\n gridConfigurationApiMethodInstanceGridConfiguration: [],\n gridConfigurationGridStateType: null,\n gridConfigurationGrid: null,\n gridConfigurationGridViewGridConfiguration: [],\n gridConfigurationUserGridConfiguration: [],\n udpTags: [],\n },\n udpTags: [],\n },\n {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.GridViewGridConfiguration|f8defdca-2ffe-4064-a208-730ab9c46357,341f3721-60d5-445c-b2c8-2959c679bbc2',\n gridViewId: 'f8defdca-2ffe-4064-a208-730ab9c46357',\n gridConfigurationId: '341f3721-60d5-445c-b2c8-2959c679bbc2',\n serializeFields: null,\n gridViewGridConfigurationGridView: null,\n gridViewGridConfigurationGridConfiguration: {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.GridConfiguration|341f3721-60d5-445c-b2c8-2959c679bbc2',\n gridConfigurationId: '341f3721-60d5-445c-b2c8-2959c679bbc2',\n clusterId: 2926,\n gridStateTypeId: 1,\n gridId: '678410c2-430b-454b-bbef-1a6236a686ec',\n values: [\n {\n colId: 'data1',\n width: 200,\n hide: false,\n pinned: null,\n sort: null,\n sortIndex: null,\n aggFunc: null,\n rowGroup: false,\n rowGroupIndex: null,\n pivot: false,\n pivotIndex: null,\n flex: null,\n },\n {\n colId: 'data2',\n width: 200,\n hide: false,\n pinned: null,\n sort: null,\n sortIndex: null,\n aggFunc: null,\n rowGroup: false,\n rowGroupIndex: null,\n pivot: false,\n pivotIndex: null,\n flex: null,\n },\n {\n colId: 'data3',\n width: 200,\n hide: false,\n pinned: null,\n sort: null,\n sortIndex: null,\n aggFunc: null,\n rowGroup: false,\n rowGroupIndex: null,\n pivot: false,\n pivotIndex: null,\n flex: null,\n },\n {\n colId: 'data4',\n width: 200,\n hide: false,\n pinned: null,\n sort: null,\n sortIndex: null,\n aggFunc: null,\n rowGroup: false,\n rowGroupIndex: null,\n pivot: false,\n pivotIndex: null,\n flex: null,\n },\n {\n colId: 'productId',\n width: 200,\n hide: false,\n pinned: null,\n sort: null,\n sortIndex: null,\n aggFunc: null,\n rowGroup: false,\n rowGroupIndex: null,\n pivot: false,\n pivotIndex: null,\n flex: null,\n },\n {\n colId: 'tenantId',\n width: 200,\n hide: false,\n pinned: null,\n sort: null,\n sortIndex: null,\n aggFunc: null,\n rowGroup: false,\n rowGroupIndex: null,\n pivot: false,\n pivotIndex: null,\n flex: null,\n },\n {\n colId: 'userId',\n width: 200,\n hide: false,\n pinned: null,\n sort: null,\n sortIndex: null,\n aggFunc: null,\n rowGroup: false,\n rowGroupIndex: null,\n pivot: false,\n pivotIndex: null,\n flex: null,\n },\n {\n colId: 'pageTypeId',\n width: 200,\n hide: false,\n pinned: null,\n sort: null,\n sortIndex: null,\n aggFunc: null,\n rowGroup: false,\n rowGroupIndex: null,\n pivot: false,\n pivotIndex: null,\n flex: null,\n },\n {\n colId: 'gridProperties',\n width: 200,\n hide: false,\n pinned: null,\n sort: null,\n sortIndex: null,\n aggFunc: null,\n rowGroup: false,\n rowGroupIndex: null,\n pivot: false,\n pivotIndex: null,\n flex: null,\n },\n {\n colId: 'widgets',\n width: 200,\n hide: false,\n pinned: null,\n sort: null,\n sortIndex: null,\n aggFunc: null,\n rowGroup: false,\n rowGroupIndex: null,\n pivot: false,\n pivotIndex: null,\n flex: null,\n },\n {\n colId: 'basePageId',\n width: 200,\n hide: false,\n pinned: null,\n sort: null,\n sortIndex: null,\n aggFunc: null,\n rowGroup: false,\n rowGroupIndex: null,\n pivot: false,\n pivotIndex: null,\n flex: null,\n },\n {\n colId: 'showPageName',\n width: 200,\n hide: false,\n pinned: null,\n sort: null,\n sortIndex: null,\n aggFunc: null,\n rowGroup: false,\n rowGroupIndex: null,\n pivot: false,\n pivotIndex: null,\n flex: null,\n },\n {\n colId: 'isUdpPage',\n width: 200,\n hide: false,\n pinned: null,\n sort: null,\n sortIndex: null,\n aggFunc: null,\n rowGroup: false,\n rowGroupIndex: null,\n pivot: false,\n pivotIndex: null,\n flex: null,\n },\n {\n colId: 'version',\n width: 200,\n hide: false,\n pinned: null,\n sort: null,\n sortIndex: null,\n aggFunc: null,\n rowGroup: false,\n rowGroupIndex: null,\n pivot: false,\n pivotIndex: null,\n flex: null,\n },\n {\n colId: 'layoutTypeId',\n width: 200,\n hide: false,\n pinned: null,\n sort: null,\n sortIndex: null,\n aggFunc: null,\n rowGroup: false,\n rowGroupIndex: null,\n pivot: false,\n pivotIndex: null,\n flex: null,\n },\n ],\n\n serializeFields: null,\n gridConfigurationApiMethodInstanceGridConfiguration: [],\n gridConfigurationGridStateType: null,\n gridConfigurationGrid: null,\n gridConfigurationGridViewGridConfiguration: [],\n gridConfigurationUserGridConfiguration: [],\n udpTags: [],\n },\n udpTags: [],\n },\n {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.GridViewGridConfiguration|f8defdca-2ffe-4064-a208-730ab9c46357,e422b3bd-9752-423b-ab40-a887b453bab3',\n gridViewId: 'f8defdca-2ffe-4064-a208-730ab9c46357',\n gridConfigurationId: 'e422b3bd-9752-423b-ab40-a887b453bab3',\n serializeFields: null,\n gridViewGridConfigurationGridView: null,\n gridViewGridConfigurationGridConfiguration: {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.GridConfiguration|e422b3bd-9752-423b-ab40-a887b453bab3',\n gridConfigurationId: 'e422b3bd-9752-423b-ab40-a887b453bab3',\n clusterId: 2928,\n gridStateTypeId: 3,\n gridId: '678410c2-430b-454b-bbef-1a6236a686ec',\n values: '[]',\n serializeFields: null,\n gridConfigurationApiMethodInstanceGridConfiguration: [],\n gridConfigurationGridStateType: null,\n gridConfigurationGrid: null,\n gridConfigurationGridViewGridConfiguration: [],\n gridConfigurationUserGridConfiguration: [],\n udpTags: [],\n },\n udpTags: [],\n },\n {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.GridViewGridConfiguration|f8defdca-2ffe-4064-a208-730ab9c46357,b3d19bb6-feda-4746-8df5-d2f677faa3b2',\n gridViewId: 'f8defdca-2ffe-4064-a208-730ab9c46357',\n gridConfigurationId: 'b3d19bb6-feda-4746-8df5-d2f677faa3b2',\n serializeFields: null,\n gridViewGridConfigurationGridView: null,\n gridViewGridConfigurationGridConfiguration: {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.GridConfiguration|b3d19bb6-feda-4746-8df5-d2f677faa3b2',\n gridConfigurationId: 'b3d19bb6-feda-4746-8df5-d2f677faa3b2',\n clusterId: 2929,\n gridStateTypeId: 4,\n gridId: '678410c2-430b-454b-bbef-1a6236a686ec',\n values: '{}',\n serializeFields: null,\n gridConfigurationApiMethodInstanceGridConfiguration: [],\n gridConfigurationGridStateType: null,\n gridConfigurationGrid: null,\n gridConfigurationGridViewGridConfiguration: [],\n gridConfigurationUserGridConfiguration: [],\n udpTags: [],\n },\n udpTags: [],\n },\n {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.GridViewGridConfiguration|f8defdca-2ffe-4064-a208-730ab9c46357,30a5a78a-0ff0-45c3-a6ff-f7716ad3b8a1',\n gridViewId: 'f8defdca-2ffe-4064-a208-730ab9c46357',\n gridConfigurationId: '30a5a78a-0ff0-45c3-a6ff-f7716ad3b8a1',\n serializeFields: null,\n gridViewGridConfigurationGridView: null,\n gridViewGridConfigurationGridConfiguration: {\n businessObjectKey: 'Univerus.Unity.Crm.Domain.Models.GridConfiguration|30a5a78a-0ff0-45c3-a6ff-f7716ad3b8a1',\n gridConfigurationId: '30a5a78a-0ff0-45c3-a6ff-f7716ad3b8a1',\n clusterId: 2930,\n gridStateTypeId: 2,\n gridId: '678410c2-430b-454b-bbef-1a6236a686ec',\n values: 'false',\n serializeFields: null,\n gridConfigurationApiMethodInstanceGridConfiguration: [],\n gridConfigurationGridStateType: null,\n gridConfigurationGrid: null,\n gridConfigurationGridViewGridConfiguration: [],\n gridConfigurationUserGridConfiguration: [],\n udpTags: [],\n },\n udpTags: [],\n },\n ],\n udpTags: [],\n };\n\n customSaveViewClick = () => {\n alert('Save View Clicked');\n };\n\n defaultActionButtons = [\n {\n icon: 'user',\n label: 'Add Candidate',\n visible: true,\n showLabel: true,\n clickHandler: this.customSaveViewClick,\n },\n {\n icon: 'wizard',\n label: 'Candidate Wizard',\n visible: true,\n showLabel: true,\n clickHandler: this.customSaveViewClick,\n },\n ];\n\n handleLoadView = () => {\n this.loadedView = [this.fullViewData];\n };\n\n testPah = () => {\n // alert('Primary Action Header Function')\n };\n\n selectTab(index: number) {\n this.activeTabIndex = index;\n console.log('select tab');\n }\n\n handleDataFetched = (event: CustomEvent) => {\n console.log('Data fetched in parent:', event.detail);\n };\n\n // Test search convertor:\n\n transformSearchData(searchData) {\n const transformed = [];\n\n // Iterate over all keys in searchData\n Object.keys(searchData).forEach(key => {\n const value = searchData[key];\n\n // Skip non-searchable, empty fields, or boolean values\n if (value === null || value === '' || typeof value === 'boolean' || (Array.isArray(value) && value.length === 0)) {\n return;\n }\n\n // Determine the appropriate operator for each field.\n // For example, if the field should use \"IN\" operator\n // This is a placeholder, implement your logic here\n const operator = 'IN';\n\n // Push a new search criteria object into the transformed array\n transformed.push({\n searchField: key,\n searchOperator: operator,\n searchValue: value,\n });\n });\n\n console.log('Transformed search data:', transformed);\n\n return transformed;\n }\n\n demoMSSearchData = {\n SearchCriteriaEquationDetails: {\n SkillSearchDetails: {\n AnySkillDetails: [],\n AllSkillDetails: [],\n ExcludeSkillDetails: [],\n ValueExpression: '',\n DisplayExpression: '',\n SkillDetailsBoolOn: [],\n },\n },\n CustomFieldSearch: [],\n SearchName: null,\n CandidateID: null,\n IsCandidateIDOptional: false,\n CandidateIdID: '_textCandidateId',\n CandidateIDLabelKey: '26',\n FirstName: null,\n IsFirstNameOptional: false,\n FirstNameID: '_textFirstName',\n FirstNameLabelKey: '28',\n LastName: null,\n IsLastNameOptional: false,\n LastNameID: '_textLastName',\n LastNameLabelKey: '30',\n PhoneNumber: null,\n IsPhoneNumberOptional: false,\n PhoneNumberID: '_textPhone',\n PhoneNumberLabelKey: '21',\n PhoneType: null,\n PhoneTypeID: '_listPhoneType',\n PhoneTypeSelectedText: null,\n IsPhoneTypeOptional: false,\n Email: null,\n IsEmailOptional: false,\n EmailID: '_textEmail',\n EmailLabelKey: '1000',\n ExcludeCandidatesPartOfText: null,\n IsExcludeCandidatesPartOfOptional: false,\n ExcludeCandidatesPartOfID: '_autoExcludeCandidatesPartOf',\n ListExcludeCandidatesPartOf: null,\n CheckExcludeOfflimits: false,\n CheckBoxExcludeOfflimitsID: '_checkBoxExcludeOfflimits',\n IsDateAvailiabilityOptional: false,\n DateAvailiabilityID: '_dateAvailiability',\n ConditionAvailiabilityLabelKey: '1413',\n ConditionAvailiabilityRelation: null,\n IsDateLastContactedOptional: false,\n DateBoxLastContactID: '_dateBoxLastContact',\n ConditionLastContactLabelKey: '151',\n ConditionLastContactedRelation: null,\n IsMustHaveNotInPlaceOptional: false,\n DatePlaceFromID: '_datePlaceFrom',\n DatePlaceFromLabelKey: '1727',\n MustHaveNotInPlaceID: '_mustHaveNotInPlace',\n DatePlaceToID: '_datePlaceTo',\n ChkSun: false,\n ChkSunID: '_ckSun',\n LabelSun: 'Sun',\n ChkMon: false,\n ChkMonID: '_ckMon',\n LabelMon: 'Mon',\n ChkTue: false,\n ChkTueID: '_ckTue',\n LabelTue: 'Tue',\n ChkWed: false,\n ChkWedID: '_ckWed',\n LabelWed: 'Wed',\n ChkThu: false,\n ChkThuID: '_ckThu',\n LabelThu: 'Thu',\n ChkFri: false,\n ChkFriID: '_ckFri',\n LabelFri: 'Fri',\n ChkSat: false,\n ChkSatID: '_ckSat',\n LabelSat: 'Sat',\n ScheduleActivitySelectedValue: '1059',\n ScheduleActivitySelectedText: 'ANNIVERSARY',\n IsScheduleActivityOptional: false,\n ScheduleActivityID: '_listScheduleActivityId',\n ScheduleActivityLabelKey: '4684',\n WithScheduleActivity: true,\n ScheduleStatusSelectedValue: 2,\n ScheduleStatusSelectedText: 'Completed',\n IsScheduleStatusOptional: true,\n ScheduleStatusID: '_listScheduleStatusId',\n ScheduleStatusLabelKey: '4684',\n RecruiterSelectedValue: '13',\n RecruiterSelectedText: 'Brad Atchison',\n RecruiterID: '_listRecruiterId',\n RecruiterLabelKey: '4684',\n IsRecruiterOptional: true,\n ResultOfActivitySelectedValue: null,\n ResultOfActivitySelectedText: null,\n ResultOfActivityID: '_listResultOfActivityId',\n ResultOfActivityLabelKey: '4684',\n IsResultOfActivityOptional: false,\n EnteredDateFromID: 'EnteredDateFromID',\n EnteredDateToID: 'EnteredDateToID',\n EnteredDateLabelKey: null,\n IsEnteredDateOptional: false,\n StartDateFromID: 'StartDateFromID',\n StartDateToID: 'StartDateToID',\n StartDateLabelKey: null,\n IsStartDateOptional: false,\n LastContactedDateFromID: 'LastContactedDateFromID',\n LastContactedDateToID: 'LastContactedDateToID',\n LastContactedDateLabelKey: null,\n IsLastContactedDateOptional: false,\n ChkOriginalResume: false,\n ChkOriginalResumeID: '_checkBoxOriginalResume',\n ChkModifiedResume: false,\n ChkModifiedResumeID: '_checkBoxModifiedResume',\n ChkHistoricalResume: false,\n ChkHistoricalResumeID: '_checkBoxHistoricalResume',\n ChkCandProfileNote: false,\n ChkCandProfileNoteID: '_checkBoxCandProfileNote',\n ChkNotes: false,\n ChkNotesID: '_checkBoxNotes',\n ChkEmail: false,\n ChkEmailID: '_checkBoxEmail',\n IsKeyWordSearch: false,\n KeyWordsearch: null,\n County: null,\n IsCountyOptional: false,\n CountyID: '_textCounty',\n CountyLabelKey: '4684',\n CountriesSelectedValue: null,\n CountriesSelectedText: null,\n CountryID: '_listCountries',\n CountriesLabelKey: '56',\n IsCountryOptional: false,\n ProvincesSelectedValue: null,\n ProvincesSelectedText: null,\n ProvincesID: '_listProvinces',\n ProvincesLabelKey: '55',\n IsProvincesOptional: false,\n ListCitiesValue: null,\n ListCitiesID: '_listCities',\n ListCitiesLabelKey: '9',\n LkCitiesLabelKey: '9',\n LkCitiesID: '_lkCities',\n LkCitiesValue: null,\n LkCitiesText: null,\n IsCityOptional: false,\n Address: null,\n AddressID: '_textAddress',\n AddressLabelKey: '8',\n IsAddressOptional: false,\n Address2: null,\n Address2ID: '_textAddress2',\n Address2LabelKey: '4004',\n IsAddress2Optional: false,\n PostalCode: null,\n PostalCodeID: '_textPostalCode',\n PostalCodeLabelKey: '10',\n IsPostalCodeOptional: false,\n LocatedFrom: null,\n LocatedFromID: '_textLocatedFrom',\n LocatedDistanceSelectedValue: null,\n IsLocatedFromOptional: false,\n BirthID: '_dateBirth',\n BirthLabelKey: '32',\n IsdateBirthOptional: false,\n AgeFrom: null,\n AgeFromID: '_txtAgeFrom',\n IsAgeOptional: false,\n AgeTo: null,\n AgeToID: '_txtAgeTo',\n YearsExpFrom: null,\n YearsExpFromID: '_txtYearsExpFrom',\n YearsExpTo: null,\n YearsExpToID: '_txtYearsExpTo',\n IsYearsExperienceOptional: false,\n TextSin: null,\n TextSinID: '_textSin',\n TextSinLabelKey: '128',\n IsSinIDOptional: false,\n StatusSelectedValue: null,\n StatusSelectedText: null,\n StatusID: '_listStatus',\n StatusLabelKey: '34',\n IsStatusOptional: false,\n SecondStatusSelectedValue: null,\n SecondStatusSelectedText: null,\n SecondStatusID: '_listSecondStatus',\n SecondStatusLabelKey: '4529',\n IsSecondStatusOptional: false,\n RatingSelectedValue: null,\n RatingSelectedText: null,\n RatingID: '_listRating',\n RatingLabelKey: '35',\n IsRatingOptional: false,\n MarketSrcSelectedValue: null,\n MarketSrcSelectedText: null,\n MarketSrcID: '_listMarketSrc',\n MarketSrcLabelKey: '1084',\n IsMarketSrcOptional: false,\n CandidateNpn: null,\n CandidateNpnID: '_txtCandidateNpn',\n CandidateNpnLabelKey: '4275',\n IsCandidateNpnOptional: false,\n TransportationTypeSelectedValue: null,\n TransportationTypeSelectedText: null,\n TransportationTypeID: '_listTransportation',\n TransportationTypeLabelKey: '3149',\n IsTransportationTypeOptional: false,\n EmploymentTypeSelectedValue: null,\n EmploymentTypeSelectedText: null,\n EmploymentTypeID: '_listEmploymentType',\n EmploymentTypeLabelKey: '117',\n IsEmploymentTypeOptional: false,\n PayRateCurrencySelectedValue: null,\n PayRateCurrencySelectedText: null,\n PayRateCurrencyID: '_listPayRateCurrency',\n PayRateCurrencyLabelKey: '5070',\n IsPayRateCurrencyOptional: false,\n MinimumPayRateFrom: null,\n MinimumPayRateFromID: '_txtMinimumPayRateFrom',\n MinimumPayRateFromLabelKey: '118',\n IsMinimumPayRateOptional: false,\n MinimumPayRateTo: null,\n MinimumPayRateToID: '_txtMinimumPayRateTo',\n OvertimePayRateFrom: null,\n OvertimePayRateFromID: '_txtOvertimePayRateFrom',\n OvertimePayRateFromLabelKey: '4982',\n IsOvertimePayRateOptional: false,\n OvertimePayRateTo: null,\n OvertimePayRateToID: '_txtOvertimePayRateTo',\n DivisionSelectedValue: null,\n DivisionSelectedText: null,\n DivisionID: '_listDivision',\n DivisionLabelKey: '143',\n IsDivisionOptional: false,\n DepartmentSelectedValue: null,\n DepartmentSelectedText: null,\n DepartmentID: '_listDepartment',\n DepartmentLabelKey: '146',\n IsDeptOptional: false,\n OfficeSelectedValue: null,\n OfficeSelectedText: null,\n OfficeID: '_listOffice',\n OfficeLabelKey: '1876',\n IsOfficeOptional: false,\n BusinessUnitSelectedValue: null,\n BusinessUnitSelectedText: null,\n BusinessUnitID: '_listBusinessUnit',\n BusinessUnitLabelKey: '556',\n IsBusinessUnitOptional: false,\n OwnershipValue: null,\n OwnershipText: null,\n OwnershipID: '_autoOwnership',\n OwnershipLabelKey: '1694',\n IsOwnershipOptional: false,\n CustomUserList1Value: null,\n CustomUserList1Text: null,\n CustomUserList1ID: '_listCustomUserList1',\n CustomUserList1LabelKey: '11414',\n IsCustomUserList1Optional: false,\n CustomUserList2Value: null,\n CustomUserList2Text: null,\n CustomUserList2ID: '_listCustomUserList2',\n CustomUserList2LabelKey: '11415',\n IsCustomUserList2Optional: false,\n CustomUserList3Value: null,\n CustomUserList3Text: null,\n CustomUserList3ID: '_listCustomUserList3',\n CustomUserList3LabelKey: '11416',\n IsCustomUserList3Optional: false,\n NoteTypeSelectedValue: null,\n NoteTypeSelectedText: null,\n NoteTypeID: '_listNoteType',\n NoteTypeLabelKey: '63',\n IsNoteTypeOptional: false,\n ActMgrValue: null,\n ActMgrText: null,\n ActMgrID: '_autoActMgr',\n ActMgrLabelKey: '1818',\n IsActMgrOptional: false,\n CompanyName: null,\n CompanyNameID: '_txtCompanyName',\n CompanyNameLabelKey: '37',\n IsCompanyNameOptional: false,\n Title: null,\n TitleID: '_txtTitle',\n TitleLabelKey: '149',\n IsTitleOptional: false,\n BaseSalaryID: '_txtBaseSalary',\n ConditionBaseSalaryRelation: null,\n BaseSalaryLabelKey: null,\n IsBaseSalaryOptional: false,\n LastSalaryIncreaseID: '_txtLastSalaryIncrease',\n LastSalaryIncreaseLabelKey: '4952',\n IsLastSalaryIncreaseOptional: false,\n TotalCompensationID: '_txtTotalCompensation',\n TotalCompensationLabelKey: '4953',\n IsTotalCompensationOptional: false,\n EnteredDateFrom: '2023-12-01',\n EnteredDateTo: '2023-12-10',\n StartDateFrom: '2023-12-07',\n StartDateTo: '2023-12-10',\n ListID: 0,\n Append: false,\n };\n\n handleApiResult = result => {\n console.log('Received result in parent:', result);\n // Save to local storage\n localStorage.setItem('promotedMethod', JSON.stringify(result));\n localStorage.setItem('promotedMethodDemo', JSON.stringify(result));\n };\n\n promotedEntityFromLocalStorage = JSON.parse(localStorage.getItem('promotedEntity'));\n\n handleCellClick = (cellValue: any, callbackId: any) => {\n // Your Angular-specific logic here\n console.log('Cell clicked in Angular. Value:', cellValue, 'CB', callbackId);\n if (callbackId === 'handleContactClick') {\n this.dataEmitterDemo = {\n searchField: 'clientContact',\n searchOperator: '=',\n searchValue: cellValue,\n };\n } else if (callbackId === 'handleActionClick') {\n alert(`Second action clicked in my test..., ${callbackId}, ${cellValue}`);\n } else {\n console.log(`A second function in parent, ${callbackId}`);\n }\n };\n handleCellClickX = (cellValue: any, callbackId: any) => {\n alert(`Third action clicked, ${callbackId}, ${cellValue}`);\n };\n\n handleViewActionClick = (cellValue: any, callbackId: any) => {\n alert(`VIEW !! in my test, ${callbackId}, ${cellValue}`);\n console.log('get full data list from grid:', cellValue.defaultClient);\n };\n\n cellClickHandler(otherCellValue, callbackId) {\n console.log('In Angular Parent:', otherCellValue, 'Callback ID:', callbackId);\n // Additional logic here\n }\n\n // @ts-ignore: 'childComponent' is declared but its value is never read.\n private childComponent: HTMLAmbientTemplateGridElement;\n\n updateDemoPayload() {\n this.mindscopeDemoPayload = demoMSSearchData;\n }\n\n updateDemoEmitter() {\n this.dataEmitterDemo = {\n searchField: 'city',\n searchOperator: '=',\n searchValue: 'San Diego',\n };\n }\n\n @Listen('externalEmitter')\n onExternalData(event: CustomEvent) {\n const dataFromChild = event.detail; // Data from the child component\n console.log('Received data from child:', dataFromChild);\n\n if (dataFromChild && dataFromChild.pageList) {\n this.clientDetails = dataFromChild.pageList;\n this.viewDrawerOpen = true; // Assuming this is part of your component's state\n console.log('clientDetails list...', this.clientDetails);\n }\n }\n\n componentWillLoad() {\n // Set configuration before the component loads\n ConfigService.config = {\n UNITY_API_DOMAIN: 'https://gateway.unitydev.ca',\n };\n }\n\n pageData = {\n pageId: 'b3854182-009b-4396-b51d-fbec4b732dca',\n name: 'New PAH',\n userId: '8fe3b5ce-6a94-4ff4-b35c-be2596ea1380',\n tenantId: 'f86a9b7c-bab0-4281-89a2-52b4caf89fab',\n productId: 3,\n layoutTypeId: 5,\n pageData: [\n {\n section: 1,\n position: 1,\n sectionName: 'Section One',\n componentName: 'Header',\n componentTypeId: 12,\n sectionId: '21e8ccff-71c6-49ad-999b-7969bc13b539',\n id: '9acb3088-ceff-4bc2-9ae5-71cf9d265c9d',\n columnSize: {\n xs: 12,\n },\n properties: {\n title: {\n key: null,\n i18n: 'utilitiesLabel',\n label: 'Primary Action Header',\n type: 'label',\n },\n subheader: {\n key: null,\n i18n: 'utilitiesDescription',\n label: 'Primary Action Button',\n type: 'label',\n },\n single: {\n value: true,\n type: 'bool',\n },\n grid: {\n value: false,\n type: 'bool',\n },\n tabList: {\n value: [\n {\n icon: 'ChannelIcon',\n label: 'Channel',\n i18n: 'channelLabel',\n view: {\n id: '5c69deb2-0d55-4245-9950-3d4087736567',\n component: 'Page',\n type: 'page',\n properties: {},\n },\n },\n {\n icon: 'RegisterIcon',\n label: 'Registry',\n i18n: 'registryLabel',\n view: {\n id: '954e62ed-42c4-470b-ae20-b6538c229ee2',\n component: 'Page',\n type: 'page',\n properties: {},\n },\n },\n ],\n type: 'tabs',\n },\n button: {\n id: 'd428b3a7-15fc-47e8-9328-07311e6c8811',\n key: null,\n i18n: 'createLabel',\n label: 'Create',\n opens: 'sideSheet',\n view: {\n id: '1724bbc2-62ba-4fcf-97f8-4a49c1393672',\n component: 'Form',\n type: 'form',\n properties: {},\n },\n type: 'button',\n },\n secondaryButtons: {\n value: [\n {\n id: '52b093b8-d9b5-4fff-96b6-086f25a2254a',\n icon: 'RefreshIcon',\n label: 'Refresh',\n i18n: 'refreshLabel',\n opens: null,\n apiMethodInstanceId: null,\n apiMethod: {\n apiMethodId: '71d826dc-88b0-46fe-85c3-ad53a72f0efc',\n apiCatalogId: '95aa404c-48c4-43b7-a908-13f97172a170',\n },\n },\n {\n id: 'e7db268b-f829-450d-8113-8696a9ed04e7',\n icon: 'DetailIcon',\n label: 'Details',\n i18n: 'detailsLabel',\n opens: 'sideSheet',\n view: {\n id: 'b1f4001f-1d5f-485f-a36c-3eba8a621a64',\n component: 'DisplayCard',\n type: 'card',\n properties: {},\n },\n apiMethodInstanceId: null,\n apiMethod: null,\n },\n ],\n type: 'secondaryActions',\n },\n },\n },\n {\n section: 2,\n position: 1,\n sectionName: 'Section Two',\n componentName: 'AmbientGrid',\n componentTypeId: 12,\n sectionId: 'dea1a869-a29e-4e74-bad8-57634feaf796',\n id: 'baab045a-7ff6-4083-99bd-71ccbe77b06c',\n columnSize: {\n xs: 12,\n },\n properties: {\n tenantId: '034A2261-E825-4857-9EC5-E1DC2E577EEB',\n productId: 44,\n queryId: 'de331702-3ada-4f61-91ba-4772b758a691',\n gridId: 'CC8529E0-1CDD-4FC2-820A-50F76433B19E',\n hotListIdentifier: 'candidateID',\n userId: '8fe3b5ce-6a94-4ff4-b35c-be2596ea1380',\n gridBarTitle: 'Data Bar',\n renderConfigs: [\n {\n field: 'clientContact',\n rendererName: 'openFunctionCellRenderer',\n otherField: 'defaultClient',\n callbackId: 'handleContactClick',\n },\n {\n field: 'defaultClient',\n rendererName: 'hoverContentCellRenderer',\n otherField: 'title',\n callbackId: 'handleDefaultContactClick',\n },\n {\n field: 'actions',\n rendererName: 'hotListAddRenderer',\n otherField: 'businessObjectKey',\n callbackId: 'handleDefaultContactClickX',\n },\n ],\n },\n },\n ],\n };\n\n render() {\n const usernames = Array.from({ length: 26 }, (_, i) => String.fromCharCode(97 + i));\n return (\n <div>\n <app-bar username=\"joey\"> Unity Ambient X </app-bar>\n <primary-action-header\n title=\"Primary Action Header\"\n onClick={() => this.testPah()}\n defaultActionButtons={this.defaultActionButtons}\n activeTabIndex={this.activeTabIndex}\n selectTab={index => this.selectTab(index)}\n primaryActionClick={() => this.handleLoadView()}\n tabs={false}\n ></primary-action-header>\n\n <div>\n <udp-tab active={this.activeTabIndex === 0}>\n <custom-button variant=\"outline\" onClick={() => this.updateDemoPayload()}>\n Demo External Search\n </custom-button>\n {\n <div>\n <ambient-template-grid\n ref={el => (this.childComponent = el as HTMLAmbientTemplateGridElement)}\n maxChipsAllowed={6}\n showHotlistButton={true}\n dataEmitterRequest={this.dataEmitterDemo}\n externalPayload={this.mindscopeDemoPayload}\n renderConfigs={this.renderConfigs}\n cellClickHandler={this.handleCellClick}\n cellClickHandlerX={this.handleCellClickX}\n viewActionClickHandler={this.handleViewActionClick}\n hotListIdentifier=\"contactID\"\n queryId=\"97a18cdb-2484-4720-ad37-e11e43ad4866\" // Contact\n userId={this.userId}\n gridId={this.gridId}\n fullViewData={this.fullViewData}\n externalSearchFilter={this.externalSearchFilter}\n gridBarTitle=\"Data Bar\"\n searchKey={defaultPayload}\n ></ambient-template-grid>\n </div>\n }\n\n <side-sheet widthOption=\"short\" title=\"Details\" open={this.viewDrawerOpen} toggleDrawer={() => (this.viewDrawerOpen = false)} position=\"right\">\n <div>\n <div style={{ width: '450px', marginBottom: '8px' }}>\n <hint-panel\n hint=\"Quickly access and manage your pre-configured table/grid views. These views are designed to help you focus on specific sets of data and streamline your workflow.\"\n hideHintText=\"Hide Hint\"\n ></hint-panel>\n </div>\n <div>\n {this.clientDetails &&\n this.clientDetails.map(item => {\n return (\n <div>\n <tree-list-item label={'Name : ' + item.fullName} />\n <tree-list-item label={'City : ' + item.city} />\n <tree-list-item label={'Candidate ID : ' + item.candidateID} />\n <tree-list-item label={'Phone : ' + item.businessPhone} />\n <tree-list-item label={item.client_ContactClientID} />\n <tree-list-item label={item.client_ContactContactID} />\n\n <tree-list-item label={item.emailAddress} />\n <tree-list-item label={item.emailID} />\n <tree-list-item label={item.personID} />\n <tree-list-item label={item.phoneID} />\n\n <tree-list-item label={item.contactID} />\n <tree-list-item label={item.businessObjectKey} />\n </div>\n );\n })}\n </div>\n </div>\n </side-sheet>\n </udp-tab>\n <udp-tab active={this.activeTabIndex === 1}>\n <div class=\"container\">\n <ambient-demo-container title=\"Hint Panel\">\n <hint-panel\n hint=\"Quickly access and manage your pre-configured table/grid views. These views are designed to help you focus on specific sets of data and streamline your workflow.\"\n hideHintText=\"Hide Hint\"\n ></hint-panel>\n </ambient-demo-container>\n\n <ambient-demo-container title=\"Primary Button\">\n <custom-button>Main Button</custom-button>\n </ambient-demo-container>\n\n <ambient-demo-container title=\"Secondary Button\">\n <custom-button variant=\"outline\">Secondary Button</custom-button>\n </ambient-demo-container>\n\n <ambient-demo-container title=\"Chip\">\n <stencil-chip text=\"Chip\" color=\"secondary\" />\n </ambient-demo-container>\n\n <ambient-demo-container title=\"Chip\">\n <stencil-chip text=\"Chip\" defaultToggled={true} leftIcon={Asterisk16} />\n </ambient-demo-container>\n\n <ambient-demo-container title=\"Icon Button\">\n <div style={{ display: 'flex', gap: '8px' }}>\n <div>\n <stencil-icon-button noBackground darkIcon={true} icon={Asterisk16}>\n Secondary Action\n </stencil-icon-button>\n </div>\n <div style={{ background: 'black' }}>\n <stencil-icon-button noBackground darkIcon={false} icon={Asterisk16}>\n Secondary Action\n </stencil-icon-button>\n </div>\n </div>\n </ambient-demo-container>\n\n <ambient-demo-container title=\"Popover\">\n <div style={{ width: '100px', height: '170px' }}>\n <udp-pop-over isOpen={true}>\n <div style={{ width: '100px', height: '150px' }}></div>\n </udp-pop-over>\n </div>\n </ambient-demo-container>\n\n <ambient-demo-container title=\"Primary Action Header\">\n <primary-action-header\n title=\"Primary Action Header\"\n onClick={() => this.testPah()}\n defaultActionButtons={this.defaultActionButtons}\n activeTabIndex={this.activeTabIndex}\n selectTab={index => this.selectTab(index)}\n primaryActionClick={() => this.handleLoadView()}\n actionButtonLabel=\"Add\"\n ></primary-action-header>\n </ambient-demo-container>\n\n <ambient-demo-container title=\"Tooltip\">\n <udp-ambient-tool-tip content=\"Tool tip content\">\n <unity-typography>Hover for tooltip </unity-typography>\n </udp-ambient-tool-tip>\n </ambient-demo-container>\n\n <ambient-demo-container title=\"Textfield\">\n <text-field label=\"View Name\" placeholder=\"Create a name for your view\"></text-field>\n </ambient-demo-container>\n\n <ambient-demo-container title=\"Toggle\">\n <stencil-toggle label=\"Private\" checked={true}></stencil-toggle>\n </ambient-demo-container>\n\n <ambient-demo-container title=\"Selector\"></ambient-demo-container>\n\n <ambient-demo-container title=\"Badge\">\n <udp-badge content={5}>\n <custom-button>Main Button</custom-button>\n </udp-badge>\n </ambient-demo-container>\n\n <ambient-demo-container title=\"Tabs\">\n <div class=\"tabs\">\n <udp-tabs>\n <button class={this.activeTabIndex === 0 ? 'active' : ''} slot=\"tab-title\" onClick={() => this.selectTab(0)}>\n Demo Grid\n </button>\n <button class={this.activeTabIndex === 1 ? 'active' : ''} slot=\"tab-title\" onClick={() => this.selectTab(1)}>\n Other Content\n </button>\n </udp-tabs>\n </div>\n </ambient-demo-container>\n\n <ambient-demo-container title=\"App bar\">\n <app-bar username=\"joey\"> Unity Ambient X </app-bar>\n </ambient-demo-container>\n\n <div style={{ display: 'flex', gap: '8px' }}>\n <ambient-demo-container title=\"Avatar\">\n <div style={{ display: 'flex', gap: '8px' }}>\n {usernames.map(username => (\n <udp-avatar username={username}></udp-avatar>\n ))}\n </div>\n </ambient-demo-container>\n </div>\n\n <ambient-demo-container title=\"Typography\">\n <unity-typography variant=\"body\">Body</unity-typography>\n <unity-typography variant=\"h1\">H1</unity-typography>\n <unity-typography variant=\"h2\">H2</unity-typography>\n <unity-typography variant=\"h3\">H3</unity-typography>\n <unity-typography variant=\"h4\">H4</unity-typography>\n <unity-typography variant=\"h4\">H5</unity-typography>\n <unity-typography variant=\"h4\">H6</unity-typography>\n <unity-typography variant=\"h4\">caption-text</unity-typography>\n <unity-typography variant=\"h4\">data-display-one</unity-typography>\n <unity-typography variant=\"h4\">data-display-two</unity-typography>\n <unity-typography variant=\"h4\">button</unity-typography>\n </ambient-demo-container>\n\n <ambient-demo-container title=\"theme color\">\n <div style={{ display: 'flex', gap: '8px' }}>\n <div style={{ width: '50px', height: '50px', background: 'var(--primary-color)' }}></div>\n <div style={{ width: '50px', height: '50px', background: 'var(--secondary-color)' }}></div>\n </div>\n </ambient-demo-container>\n\n <ambient-demo-container title=\"new\"></ambient-demo-container>\n </div>\n </udp-tab>\n </div>\n\n <div />\n <fluent-dialog\n title=\"Sample Dialog\"\n message=\"This is a message.\"\n actionOne={() => alert('Action One Clicked')}\n actionTwo={() => alert('Action Two Clicked')}\n labelOne=\"Confirm\"\n labelTwo=\"Cancel\"\n open={this.dialogOpen} // Use state to control dialog visibility\n >\n <div>Here is some dialog content...</div>\n </fluent-dialog>\n </div>\n );\n }\n}\n","/* grid-primary-bar.css */\n:host {\n display: block;\n font-family: var(--font-family-base, sans-serif); \n background-color: var(--primary-action-header-background, #ffffff);\n color: var(--primary-action-header-text-color, rgba(0, 0, 0, 0.87));\n box-shadow: var(--primary-action-header-shadow, 0px 2px 4px -1px rgba(0,0,0,0.2));\n height: var(--primary-action-header-height, 48px);\n padding: var(--primary-action-header-padding, 0 var(--spacing-04));\n box-sizing: border-box;\n}\n\n.header-bar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n\n.title-section {\n flex-shrink: 0;\n margin-right: var(--spacing-md, 16px);\n}\n\n/* Tabs are not fully supported yet - this is leftover from work Greg did with Mindscope */\n.tabs {\n flex-grow: 1;\n display: flex;\n justify-content: center;\n align-items: stretch;\n min-width: 0;\n}\n\n.tabs udp-tabs {\n width: 100%;\n display: flex;\n justify-content: center;\n}\n\n.tabs udp-tabs::part(tab-list) {\n /* This rule targets the 'tab-list' part within the udp-tabs component's shadow DOM. */\n /* It's a placeholder for any specific styling needed for the tab list container itself. */\n /* For example: display: flex; align-items: stretch; height: 100%; */\n}\n\n.tabs udp-tabs button {\n padding: 0 16px;\n margin: 0 var(--spacing-xxs, 4px);\n height: 100%;\n border: none;\n background-color: transparent;\n cursor: pointer;\n font-size: var(--font-size-sm, 0.875rem);\n color: var(--text-color-secondary, rgba(0, 0, 0, 0.6));\n text-transform: uppercase;\n font-weight: var(--font-weight-medium, 500);\n border-bottom: 2px solid transparent;\n transition: color 0.3s ease, border-bottom-color 0.3s ease;\n}\n\n.tabs udp-tabs button:hover {\n color: var(--primary-color-hover, var(--primary-color, #1976d2));\n}\n\n.tabs udp-tabs button.active {\n color: var(--primary-color, #1976d2);\n border-bottom: 2px solid var(--primary-color, #1976d2);\n}\n\n.button-section {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n gap: var(--spacing-sm, 8px);\n}\n\n.button-section stencil-icon-button {\n color: var(--primary-action-header-icon-color, var(--text-color-primary, rgba(0, 0, 0, 0.54)));\n}\n\n.button-section stencil-icon-button:hover {\n background-color: rgba(0,0,0,0.04);\n}\n\n\n.button-section custom-button {\n /* Styles for the primary action button */\n /* You might want to use your design system's button styles here */\n /* Example: margin-left: var(--spacing-sm, 8px); */\n}\n","import { Component, Prop, h } from '@stencil/core';\nimport iconMapping from '../icons/iconMapping';\n\n@Component({\n tag: 'primary-action-header',\n styleUrl: 'primary-action-header.css',\n shadow: true,\n})\nexport class PrimaryActionHeader {\n @Prop() title: string;\n @Prop() hiddenActionButtons: string[] = [];\n @Prop() hiddenLabels: string[] = [];\n @Prop() actionButtons: any[] = [];\n @Prop() defaultActionButtons: any[] = [];\n @Prop() customSaveViewClick?: (event?: MouseEvent) => void;\n @Prop() customSizeToFitClick?: (event?: MouseEvent) => void;\n @Prop() customExportClick?: (event?: MouseEvent) => void;\n @Prop() primaryActionClick?: (event?: MouseEvent) => void;\n @Prop() customColumnViewClick?: (event?: MouseEvent) => void;\n @Prop() customFitColumnClick?: (event?: MouseEvent) => void;\n @Prop() customFilterViewClick?: (event?: MouseEvent) => void;\n @Prop() customClearClick?: (event?: MouseEvent) => void;\n @Prop() customExpandClick?: (event?: MouseEvent) => void;\n @Prop() customShowViewClick?: (event?: MouseEvent) => void;\n @Prop() activeTabIndex: number;\n @Prop() selectTab: (index: number) => void;\n @Prop() tabs: boolean = true;\n @Prop() actionButtonLabel: string = '';\n // @State() activeTabIndex: number = 0;\n\n getIconComponent(icon: string | Function, customIcon: Function) {\n if (customIcon) {\n return customIcon;\n }\n\n if (typeof icon === 'string') {\n return iconMapping[icon];\n }\n\n return icon;\n }\n\n renderIcon(ActualIcon: any) {\n if (ActualIcon && ActualIcon.elem === 'svg') {\n return (\n <svg {...ActualIcon.attrs}>\n {ActualIcon.content.map((content: any, index: number) => {\n return <path key={index} {...content.attrs} />;\n })}\n </svg>\n );\n }\n return null;\n }\n\n // selectTab(index: number) {\n // this.activeTabIndex = index;\n // }\n\n render() {\n console.log('active tab', this.activeTabIndex);\n\n return (\n <div class=\"header-bar\">\n <div class=\"title-section\">\n <unity-typography variant=\"h4\">{this.title}</unity-typography>\n </div>\n\n {/* IMPORTANT: NEED TO ADD A TABS COMPONENT SUPPORT - This is from work Greg did for mindscope demo */}\n {this.tabs && (\n <div class=\"tabs\">\n <udp-tabs>\n <button class={this.activeTabIndex === 0 ? 'active' : ''} slot=\"tab-title\" onClick={() => this.selectTab(0)}>\n Demo Grid\n </button>\n <button class={this.activeTabIndex === 1 ? 'active' : ''} slot=\"tab-title\" onClick={() => this.selectTab(1)}>\n Other Content\n </button>\n </udp-tabs>\n </div>\n )}\n\n <div class=\"button-section\">\n {this.defaultActionButtons.map(btn => {\n // Determine the actual icon to use\n const ActualIcon = this.getIconComponent(btn.icon, btn.customIcon);\n\n const clickHandler = (event?: MouseEvent) => {\n if (btn.clickHandler) {\n btn.clickHandler(event);\n } else {\n console.log(`${btn.label} Clicked but no custom handler defined`);\n }\n };\n\n if (!this.hiddenActionButtons.includes(btn.label) && btn.visible) {\n return (\n <stencil-icon-button secondary={btn.secondary} onClick={clickHandler} tooltip={btn.tooltip}>\n {/* Render icon directly */}\n {this.renderIcon(ActualIcon)}\n\n {/* Show label if it's not hidden and should be shown */}\n {!this.hiddenLabels.includes(btn.label) && btn.showLabel && <span>{btn.label}</span>}\n </stencil-icon-button>\n );\n }\n return null;\n })}\n {!this.actionButtonLabel && <div class=\"right-margin\" />}\n\n {this.actionButtonLabel && (\n <udp-button variant=\"contained\" color=\"secondary\" onClick={event => this.primaryActionClick(event.detail)}>\n {this.actionButtonLabel}\n </udp-button>\n )}\n </div>\n </div>\n );\n }\n}\n",".info-columns{\n display: flex;\n}\n\n.column{\n width: 100px\n}\n\n.toggle-options {\n display: flex;\n gap: 16px;\n align-items: center;\n margin-bottom: 16px;\n}","import { Component, Prop, h, State, Element, Watch } from '@stencil/core';\n\n@Component({\n tag: 'save-view-form-dialog',\n styleUrl: 'save-view-form-dialog.css',\n shadow: true,\n})\nexport class SaveViewFormDialog {\n @Element() el: HTMLElement;\n @Prop() open: boolean;\n @Prop() title: string;\n @Prop() handleClose: Function;\n @Prop() tenant: string;\n @Prop() application: string;\n @Prop() entity: string;\n @Prop() user: any;\n @Prop() refetchViews: () => void;\n @Prop() gApi: any;\n @Prop() gcApi: any;\n @Prop() gridId: any;\n @Prop() domain: any;\n @Prop() apiCatalogId: any;\n @Prop() closeDialog: any;\n // Adjust the handleFormSubmit to accept a number for isPrivate\n @Prop() handleFormSubmit: (name: string, isPrivate: number, isDefault: boolean) => void;\n @Prop() handleViewAndConfigurationSubmit: (name: string, isPrivate: number, isDefault: boolean) => void;\n @Prop() currentName: string;\n @Prop() currentIsPrivate: number;\n @Prop() currentIsDefault: boolean;\n @Prop() currentGridViewId: string;\n\n @State() name: string = '';\n // Change isPrivate to be a number, defaulting to 2 (false/not private)\n @State() isPrivate: number = 2;\n @State() isDefault: boolean = false;\n @State() gridViewId: string = '';\n @State() fetchedCurrentView: boolean = false;\n\n @Watch(\"open\")\n handleModalOpen(newValue: boolean) {\n if (newValue) {\n // Reset the state every time the modal opens\n this.name = this.currentName || '';\n this.isPrivate = this.currentIsPrivate ?? 2; // Set to 2 if null/undefined\n this.isDefault = this.currentIsDefault ?? false;\n this.gridViewId = this.currentGridViewId || '';\n }\n }\n\n handleNameChange = (event) => {\n this.name = event.target.value;\n };\n\n // Update the toggle method to flip between 1 (true/private) and 2 (false/not private)\n handlePrivateChange = () => {\n this.isPrivate = this.isPrivate === 1 ? 2 : 1;\n };\n\n handleDefaultChange = () => {\n this.isDefault = !this.isDefault;\n };\n\n // Ensure handleSubmit correctly handles the isPrivate number\n handleSubmit = () => {\n this.handleFormSubmit(this.name, this.isPrivate, this.isDefault );\n this.resetForm();\n };\n\n handleViewUpdate = () => {\n this.handleViewAndConfigurationSubmit(this.name, this.isPrivate, this.isDefault);\n };\n\n resetForm = () => {\n this.name = '';\n this.isPrivate = 2;\n this.isDefault = false;\n }\n\n render() {\n return (\n <fluent-dialog\n open={this.open}\n actionOne={() => { this.handleSubmit();}}\n actionTwo={this.closeDialog}\n actionThree={() => { this.handleViewUpdate();}}\n handleClose={this.handleClose}\n labelOne=\"Save Copy\"\n labelTwo=\"Cancel\"\n labelThree=\"Save View\"\n title={this.title}\n disableOne={!this.name}\n buttonThreeHidden={!this.gridViewId} // Hidden when no view has been loaded into the grid\n >\n <form class=\"save-form\">\n <text-field\n label=\"View Name\"\n placeholder=\"Create a name for your view\"\n value={this.name}\n onInput={(event: any) => this.handleNameChange(event)}\n ></text-field>\n {/* Adjust the toggle to reflect isPrivate's state accurately, might need custom handling based on stencil-toggle's API */}\n\n <div class=\"toggle-options\" >\n <div><stencil-toggle label=\"Private\" checked={this.isPrivate === 1} onToggledChange={this.handlePrivateChange}></stencil-toggle> </div>\n <div><stencil-toggle label=\"Default\" checked={this.isDefault} onToggledChange={this.handleDefaultChange} style={{ marginTop: '10px' }}></stencil-toggle></div>\n </div>\n\n </form>\n </fluent-dialog>\n );\n }\n}\n",".list-item {\n display: flex;\n gap: 8px;\n align-items: center;\n background-color: white;\n border-bottom: 1px solid rgba(0,0,0,.12);\n}\n.list-body {\n display: flex;\n padding-left: 16px;\n gap: 8px;\n align-items: center;\n flex: 1;\n}\n\n.input {\n margin-top: 5.5px;\n}\n\n\n.list-inputs {\n display: flex;\n flex: 1;\n gap: 24px;\n align-items: center;\n}\n\n.close-button {\n display: flex;\n align-items: center;\n}\n\n.name {\n min-width: 215px;\n white-space: nowrap; \n overflow: hidden; \n text-overflow: ellipsis; \n max-width: 215px; \n}\n\n.select-container {\n width: \"200px\";\n}","import { Component, Prop, State, Watch, Event, EventEmitter, h, Element } from '@stencil/core';\nimport Close24 from '@carbon/icons/es/close/24';\n\n@Component({\n tag: 'search-list-item',\n styleUrl: 'search-list-item.css',\n shadow: true,\n})\nexport class SearchListItem {\n @Element() el: HTMLElement;\n\n @Prop() id: string;\n @Prop() isDefault: boolean = false;\n @Prop() filterGroupId: string;\n @Prop() label: string;\n @Prop() name: string;\n @Prop() handleDelete: (event: MouseEvent) => void;\n @Prop() operator: string; // Prop to receive the current operator\n @Prop() isInitialSearchItem: boolean | undefined | null;\n\n @State() searchOperator: string = '='; // Default value\n\n @Event({ bubbles: true, composed: true }) searchItemChanged: EventEmitter;\n\n @Watch('operator')\n operatorChanged(newValue: string) {\n if (newValue !== this.searchOperator && newValue !== null) {\n this.searchOperator = newValue;\n console.log('Operator changed:', newValue);\n }\n }\n\n componentWillUpdate() {\n if (this.operator && this.operator.length > 0) {\n this.searchOperator = this.operator; // Manually sync inside lifecycle if @Watch doesn't catch\n }\n }\n\n conponentDidLoad() {\n console.log('Component did load:', this.operator);\n }\n\n handleOperatorSelected(event: CustomEvent) {\n console.log('event.detail', event.detail.value);\n // const newOperator = newOperator;\n this.searchOperator = event.detail.value;\n this.emitChange(); // Emit the change to ensure it is captured\n }\n\n emitChange(newValue = this.name) {\n // Ensure the operator is passed as a string, not an object\n this.searchItemChanged.emit({\n id: this.id,\n searchField: this.label,\n filterGroupId: this.filterGroupId,\n searchOperator: this.searchOperator || '=', // Ensure default to '=' if undefined\n searchValue: newValue,\n });\n }\n\n handleInputBlur = (event: Event) => {\n const inputElement = event.target as HTMLInputElement;\n const inputVal = inputElement.value;\n\n if (inputVal !== this.name) {\n this.searchItemChanged.emit({\n id: this.id,\n searchField: this.label,\n filterGroupId: this.filterGroupId,\n searchOperator: this.searchOperator,\n searchValue: inputVal,\n });\n }\n }\n\n private selectorOptions = [\n {\n value: '=',\n label: 'Equals',\n },\n {\n value: 'IN',\n label: 'Contains',\n },\n {\n value: '<>',\n label: 'Does not Equal',\n },\n {\n value: '>',\n label: 'Greater Than',\n },\n {\n value: '<',\n label: 'Less Than',\n },\n {\n value: '>=',\n label: 'Greater Than or Equal To',\n },\n {\n value: '<=',\n label: 'Less Than or Equal To',\n },\n {\n value: 'LIKE',\n label: 'Like',\n },\n {\n value: 'STARTSWITH',\n label: 'Starts With',\n },\n {\n value: 'BETWEEN',\n label: 'Between',\n },\n ];\n\n render() {\n return (\n <div class=\"list-item\">\n <div class=\"list-body\">\n <div class=\"name\">\n <unity-typography variant=\"button\">{this.label}</unity-typography>\n </div>\n <div style={{ width: '200px' }}>\n <udp-selector\n key={this.searchOperator}\n initialValue={this.searchOperator}\n options={this.selectorOptions}\n disabled={this.isInitialSearchItem || this.isDefault}\n onChange={(event: CustomEvent) => this.handleOperatorSelected(event)}\n ></udp-selector>\n </div>\n <div class=\"input\">\n <text-field\n value={this.name}\n disabled={this.isInitialSearchItem}\n onBlur={this.handleInputBlur}\n ></text-field>\n </div>\n </div>\n\n {(!this.isInitialSearchItem || !this.isDefault) && <stencil-icon-button icon={Close24} onClick={this.handleDelete}></stencil-icon-button>}\n </div>\n );\n }\n}\n",".side-sheet {\n width: 0;\n height: 100%;\n position: fixed;\n z-index: 9999; /* High z-index to overlay page content */\n top: 0;\n bottom: 0;\n overflow-x: hidden;\n overflow-y: hidden; /* change to auto to enable vertical scrolling */\n transition: width 0.5s ease;\n background-color: #ffffff; /* Add background color */\n \n /* Hide scrollbar for Chrome, Safari and Opera */\n ::-webkit-scrollbar {\n display: none;\n }\n \n /* Hide scrollbar for Firefox */\n scrollbar-width: none;\n \n /* Hide scrollbar for IE and Edge */\n -ms-overflow-style: none;\n }\n \n \n .side-sheet.left {\n left: 0;\n }\n \n .side-sheet.right {\n right: 0;\n }\n \n .side-sheet.open {\n width: 1300px\n }\n\n .side-sheet.short.open {\n width: 480px;\n }\n \n \n .backdrop {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5);\n z-index: 9; /* Lower than the side-sheet but higher than page content */\n opacity: 0;\n pointer-events: none; /* By default, do not block interactions */\n transition: opacity 0.5s ease;\n }\n \n .backdrop.open {\n opacity: 1;\n pointer-events: auto; /* Allow interactions when visible */\n }\n\n .title {\n display: flex;\n flex: 1;\n align-items: center;\n }\n \n .close-button {\n display: flex;\n align-items: center;\n }\n\n .ag-root.ag-layout-normal {\n font-family: sans-serif !important;\n font-size: 13px;\n }\n\n .side-sheet.custom-width.open {\n transition: width 0.5s ease; /* Same transition */\n }","import { Component, Prop, h } from '@stencil/core';\nimport Close24 from '@carbon/icons/es/close/24';\n\n@Component({\n tag: 'side-sheet',\n styleUrl: 'side-sheet.css',\n})\nexport class SideSheet {\n @Prop() open: boolean;\n @Prop() title: string;\n @Prop() buttonLabel: string;\n @Prop() toggleDrawer: () => void;\n @Prop() position: 'left' | 'right' = 'left';\n @Prop() handleSideSheetButton: () => void;\n @Prop() sideSheetButtonLabel: string;\n @Prop() widthOption: 'short' | 'long' | number = 'long';\n @Prop() disabled: boolean = false;\n @Prop() padding: boolean = true;\n @Prop() buttonTransform: string = \"translate(0,0)\";\n \n render() {\n const widthClass = typeof this.widthOption === 'number' ? 'custom-width' : this.widthOption;\n const sideSheetStyle = typeof this.widthOption === 'number' ? { width: `${this.widthOption}px` } : {};\n\n return (\n <div>\n <div class={{ 'backdrop': true, 'open': this.open }} onClick={this.toggleDrawer}></div>\n \n <div class={{ 'side-sheet': true, 'open': this.open, 'close': !this.open, [this.position]: true, [widthClass]: true }}\n style={sideSheetStyle}>\n <div class=\"title\">\n <div class='close-button'>\n <stencil-icon-button icon={Close24} onClick={this.toggleDrawer}></stencil-icon-button>\n </div>\n <div class='title'>\n <unity-typography variant=\"data-display-four\">{this.title}</unity-typography>\n </div>\n { this.sideSheetButtonLabel && <custom-button style={{ transform: this.buttonTransform, }} size='tall' disabled={this.disabled} onCustomClick={() => this.handleSideSheetButton()}>\n {this.sideSheetButtonLabel}\n </custom-button>}\n </div>\n \n <side-sheet-container padding={this.padding} >\n <slot></slot>\n </side-sheet-container>\n </div>\n </div>\n );\n }\n}\n\n","/* @import '../../../../../../node_modules/ag-grid-enterprise/styles/ag-grid.css';\n@import '../../../../../../node_modules/ag-grid-enterprise/styles/ag-theme-material.css'; */\n\n.container {\n width: 100%;\n height: 100%;\n background-color: #f2f2f2; /* light grey background */\n overflow: auto; /* enable scrolling */\n \n /* Hide scrollbar for Chrome, Safari and Opera */\n ::-webkit-scrollbar {\n display: none;\n }\n \n /* Hide scrollbar for Firefox */\n scrollbar-width: none;\n \n /* Hide scrollbar for IE and Edge */\n -ms-overflow-style: none;\n }\n ","import { Component, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'side-sheet-container',\n styleUrl: 'side-sheet-container.css',\n shadow: true,\n})\nexport class SideSheetContainer {\n @Prop() padding: boolean = true;\n\n render() {\n const style = this.padding ? {'padding': '16px'} : {};\n return (\n <div class=\"container\" style={style}>\n <slot />\n </div>\n );\n }\n \n}\n","/* Base style for the chip */\n.chip {\n padding: 0.3em 1em;\n border-radius: 16px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n /* margin: 0.5em; */\n transition: background-color 0.3s, color 0.3s;\n max-width: 100%; /* Ensures it fits the container */\n max-height: 100%;\n}\n\n/* Styles for different statuses */\n.success {\n background-color: #4caf50; /* Green */\n color: white;\n}\n\n.warning {\n background-color: #ffeb3b; /* Yellow */\n color: #212121; /* Use a darker text color for contrast */\n}\n\n.error {\n background-color: #f44336; /* Red */\n color: white;\n}\n\n.info {\n background-color: rgb(52, 120, 176);\n color: white;\n}\n\n/* Default style if no status is matched */\n.default {\n background-color: rgb(207, 207, 207);\n color: black; /* Dark Grey */\n}\n\n.dense {\n padding-top: 0;\n padding-bottom: 0;\n}\n\np {\n margin-top: 0;\n margin-bottom: 0;\n}","import { Component, Prop, h, State, Watch } from '@stencil/core';\n\n@Component({\n tag: 'status-chip',\n styleUrl: 'status-chip.css',\n shadow: true,\n})\nexport class StatusChip {\n // State to handle the internal status class\n @State() internalStatusClass: string;\n\n // Prop for the status value, which now can be string or boolean\n @Prop() statusValue: string | boolean;\n\n // Define a mapping of possible status values to CSS classes\n @Prop() statusClasses: { [key: string]: string } = {};\n \n @Prop() dense: boolean = false;\n\n // Watch for changes in statusValue\n @Watch('statusValue')\n protected statusValueWatcher(newValue: string | boolean) {\n const valueKey = typeof newValue === 'boolean' ? newValue.toString() : newValue;\n this.internalStatusClass = this.statusClasses && this.statusClasses[valueKey] ? this.statusClasses[valueKey] : 'default';\n }\n\n // Initial call to set the status based on the initial statusValue\n componentWillLoad() {\n this.statusValueWatcher(this.statusValue);\n }\n\n render() {\n return (\n <div class={`chip ${this.internalStatusClass} ${this.dense ? 'dense' : ''}`}>\n <p>\n <slot></slot> {/* Slot for content */}\n </p>\n </div>\n );\n }\n}\n",".chip {\n display: inline-flex; /* changed from inline-block */\n align-items: center;\n padding: 3px;\n padding-left: 8px;\n font-size: 14px;\n border-radius: 16px;\n color: #333;\n cursor: pointer;\n /* border: 1px solid #393939; */\n background-color: transparent; /* Make background transparent */\n height: 26px;\n}\n\n.chip--unclickable {\n cursor: default;\n}\n\n.delete-button {\n margin-left: 12px; /* Increased spacing */\n background-color: #fff; /* light circle */\n border: none;\n border-radius: 50%; /* make it round */\n cursor: pointer;\n width: 24px; /* Increased button dimensions */\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.delete-button svg {\n width: 20px; /* Increased SVG dimensions */\n height: 20px;\n fill: #333; /* dark 'x' */\n}\n\n\n.left-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%; /* makes it round */\n width: 24px;\n height: 24px;\n margin-right: 8px; /* add some spacing between the icon and the text */\n}\n\n\n","import { Component, Prop, h, Event, EventEmitter, State, Watch } from '@stencil/core';\nimport Close16 from '@carbon/icons/es/close/16';\n\n@Component({\n tag: 'stencil-chip',\n styleUrl: 'stencil-chip.css',\n shadow: true\n})\nexport class StencilChip {\n\n @Prop() text: string;\n @Prop() color: 'primary' | 'secondary' = 'primary';\n @Prop() level: number = 0;\n @Prop() defaultToggled: boolean = false; // New Prop\n @Prop() leftIcon: any; // New Prop for Left Icon\n @Prop() showLeftIcon: boolean = false; // New Prop to control display of Left Icon\n @Prop() showDelete: boolean = true;\n @Prop() externalToggleString: string;\n @Prop() clickable: boolean = true; // New Prop to turn off click ability\n\n @Event() onDelete: EventEmitter<void>;\n @Event() onToggle: EventEmitter<boolean>; \n @Event({ bubbles: true }) udpChipClicked: EventEmitter<string>;\n\n\n\n @State() toggled: boolean;\n\n @Watch('externalToggleString')\n externalStringChanged(newValue: string) {\n if (newValue && newValue === this.text ) {\n this.toggleOff();\n }\n }\n \n\n private toggleOff() {\n if (this.toggled) {\n this.toggled = false;\n this.onToggle.emit(this.toggled); // Optionally emit an event\n }\n }\n\n // Initialize the toggle state with the default value\n componentWillLoad() {\n this.toggled = this.defaultToggled;\n }\n\n handleClick = () => {\n this.toggled = !this.toggled;\n this.udpChipClicked.emit(this.text); // emit the event when clicked\n }\n\n handleDelete = (event: Event) => {\n event.stopPropagation();\n this.onDelete.emit();\n }\n\n// Method to lighten the color based on the level\ngetLightenedColor(color: 'primary' | 'secondary', level: number): string {\n // Static HSL values for primary and secondary colors\n const hslValues = {\n primary: { hue: 156, saturation: 58, lightness: 67 }, \n secondary: { hue: 156, saturation: 58, lightness: 67 }, \n };\n\n // Retrieve the correct color values\n const { hue, saturation, lightness } = hslValues[color];\n\n // Dramatically increase the lightness based on the level to ensure a noticeable difference\n const lightnessIncrease = 15; // More substantial increase per level\n const newLightness = Math.min(100, lightness + level * lightnessIncrease);\n\n // Optional: Adjust hue for a more drastic change (future-proofing)\n const hueAdjustment = 50; // Set to non-zero to see hue changes; keep at 0 for no change\n const newHue = (hue + hueAdjustment * level) % 360; // Adjust hue based on level if needed\n\n // Construct and return the HSL color string\n return `hsl(${newHue}, ${saturation}%, ${newLightness}%)`;\n}\n\n\n\n render() {\n\n\n \n\n const additionalPaddingWhenDeleteHidden = {\n paddingRight: '8px', // Adjust this value according to your needs\n };\n\n const chipStyle = this.toggled ? {\n //backgroundColor: this.color === 'primary' ? 'var(--primary-color)' : 'var(--secondary-color)',\n backgroundColor: this.getLightenedColor(this.color, this.level),\n color: '#000',\n border: '1px solid var(--secondary-color)',\n ...(!this.showDelete ? additionalPaddingWhenDeleteHidden : {}),\n } : {\n backgroundColor: 'transparent',\n color: '#393939',\n border: '1px solid var(--secondary-color)',\n ...(!this.showDelete ? additionalPaddingWhenDeleteHidden : {}),\n }; \n\n const deleteButtonStyle = this.toggled ? {\n backgroundColor: '#fff',\n color: '#333'\n } : {\n backgroundColor: '#d3d3d3', // light grey background\n color: '#393939'\n };\n\n const leftIconStyle = this.toggled ? {\n backgroundColor: '#fff',\n color: '#333'\n } : {\n backgroundColor: 'var(--primary-color)', // Or some darker shade\n color: '#fff'\n };\n\n const leftIconData = this.leftIcon || Close16; // Fallback to Add16 if no icon is provided\n\n console.log(leftIconStyle);\n console.log(leftIconData);\n\nreturn (\n <div class={`chip${!this.clickable ? ' chip--unclickable' : ''}`} style={chipStyle} onClick={this.clickable ? this.handleClick : undefined}>\n {/* {this.leftIcon && (\n <span class=\"left-icon\" style={leftIconStyle}>\n <svg {...leftIconData.attrs} fill={leftIconStyle.color}>\n {leftIconData.content.map((item, index) => {\n if (item.elem === 'path') {\n return <path {...item.attrs} key={index} />;\n }\n return null;\n })}\n </svg>\n </span>\n )} */}\n {this.leftIcon && (\n <span class=\"left-icon\" style={leftIconStyle}>\n <svg {...leftIconData.attrs} fill={leftIconStyle.color}>\n {leftIconData.content.map((item, index) => {\n if (item.elem === 'path') {\n return <path {...item.attrs} key={index} />;\n }\n return null;\n })}\n </svg>\n </span>\n )}\n <unity-typography variant='caption-text'>\n <span class='remove-height'>{this.text}</span>\n </unity-typography>\n {this.showDelete && (\n <button class=\"delete-button\" style={deleteButtonStyle} onClick={this.handleDelete}>\n <svg {...Close16.attrs} fill={deleteButtonStyle.color}>\n {Close16.content.map((item, index) => {\n if (item.elem === 'path') {\n return <path {...item.attrs} key={index} />;\n }\n return null;\n })}\n </svg>\n </button>\n )}\n </div>\n);\n\n }\n}",".icon-button {\n background: rgb(255, 255, 255);\n /* border: 1px solid rgb(171, 177, 174); */\n border: 0px;\n border-radius: 25px; /* Changed from 50% to 25px */\n /* min-width: 110px; */\n /* height: 34px; */\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n gap: 4px;\n /* padding-right: 16px;\n padding-left: 16px; */\n padding: 10px;\n}\n\n.icon-button-secondary {\n background: transparent;\n border: 0px;\n color: var(--primary-color);\n border-radius: 25px;\n height: 34px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n gap: 4px;\n padding-right: 16px;\n padding-left: 16px;\n}\n\n.icon-button:hover {\n background: rgba(255, 255, 255, 0.539);\n}\n\n.icon-button.no-background {\n background: transparent;\n border: 0px;\n}\n\n.icon-button.no-background:hover {\n background-color: var(--primary-color-alpha-15);\n}\n\n.icon-button:disabled {\n opacity: 0.4;\n pointer-events: none;\n}\n\n.icon-button-secondary:disabled {\n opacity: 0.4;\n pointer-events: none;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'stencil-icon-button',\n styleUrl: 'stencil-icon-button.css',\n shadow: true,\n})\nexport class StencilIconButton {\n @Prop() iconName: string;\n //@Prop() onClick: () => void;\n @Prop() onClick: (event: MouseEvent) => void;\n\n @Prop() iconClassName: string;\n @Prop() tooltip: string;\n @Prop() icon: any; // Removed the default value\n @Prop() secondary: boolean = false;\n @Prop() noBackground: boolean = false;\n @Prop() noTooltip: boolean = false;\n @Prop() darkIcon: boolean = true;\n @Prop() showLabel: boolean = true;\n @Prop() disabled: boolean = false;\n @Prop() buttonId: string;\n @Prop() count : number | null = null\n\n render() {\n let buttonClass = this.secondary ? 'icon-button-secondary' : 'icon-button'; // conditional class\n let buttonStyle = this.showLabel ? {} : { paddingLeft: '10px', paddingRight: '10px' }; // conditional style\n\n // Use the 'noBackground' prop to add another conditional class\n if (this.noBackground) {\n buttonClass += ' no-background';\n }\n\n // Your existing code for setting up the icon\n const iconColor = this.darkIcon ? 'black' : 'white';\n const iconData = this.icon; // Removed the default value\n\n const Content = () =>{\n return (\n <button disabled={this.disabled} class={buttonClass} onClick={this.onClick} title={this.showLabel ? this.tooltip : null} style={buttonStyle} id={this.buttonId}>\n {/* Conditionally render the icon if one is provided */}\n {iconData && (\n <svg {...iconData.attrs} fill={iconColor}>\n {iconData.content.map((item, index) => {\n if (item.elem === 'path') {\n return <path {...item.attrs} key={index} />;\n } else if (item.elem === 'circle') {\n return <circle {...item.attrs} key={index} />;\n }\n return null;\n })}\n </svg>\n )}\n {this.showLabel && <slot></slot>}\n </button>\n )\n }\n return (\n <udp-ambient-tool-tip content={this.showLabel ? '' : this.tooltip} noTooltip={this.noTooltip}>\n { this.count ? (\n <udp-badge content={this.count}>\n <Content/>\n </udp-badge>\n ) : (\n <Content/>\n )\n }\n </udp-ambient-tool-tip>\n );\n }\n}\n",".icon-button {\n background: rgb(255, 255, 255);\n /* border: 1px solid rgb(171, 177, 174); */\n border: 0px;\n border-radius: 25px; /* Changed from 50% to 25px */\n /* min-width: 110px; */\n /* height: 34px; */\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n gap: 4px;\n /* padding-right: 16px;\n padding-left: 16px; */\n padding: 10px;\n }\n \n .icon-button-secondary {\n background: transparent; \n border: 0px;\n color: var(--primary-color);\n border-radius: 25px;\n height: 34px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n gap: 4px;\n padding-right: 16px;\n padding-left: 16px;\n }\n \n .icon-button.no-background {\n background: transparent;\n border: 0px;\n }\n\n button{\n position: relative;\n }\n\n button[title]:not([title=\"Save View\"]):not([title='']):hover:after{\n content: attr(title);\n background-color: black;\n color:white;\n position:absolute;\n top:110%;\n padding: 5px;\n border-radius: 5px;\n z-index: 10;\n }","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'stencil-icon-button-grid-action-header',\n styleUrl: 'stencil-icon-button-grid-action-header.css',\n shadow: true,\n})\nexport class StencilIconButton {\n @Prop() iconName: string;\n //@Prop() onClick: () => void;\n @Prop() onClick: (event: MouseEvent) => void;\n @Prop() iconClassName: string;\n @Prop() tooltip: string;\n @Prop() icon: any; // Removed the default value\n @Prop() secondary: boolean = false;\n @Prop() noBackground: boolean = false;\n @Prop() darkIcon: boolean = true;\n @Prop() showLabel: boolean = true;\n @Prop() count: number | null = null\n\n render() {\n let buttonClass = this.secondary ? 'icon-button-secondary' : 'icon-button'; // conditional class\n let buttonStyle = this.showLabel ? {} : { paddingLeft: '10px', paddingRight: '10px' }; // conditional style\n\n // Use the 'noBackground' prop to add another conditional class\n if (this.noBackground) {\n buttonClass += ' no-background';\n }\n\n // Your existing code for setting up the icon\n let iconColor = this.darkIcon ? 'black' : 'white';\n iconColor = this.tooltip.toLowerCase() === 'save view' ? '#1d6bfd' : iconColor;\n const iconData = this.icon; // Removed the default value\n\n // ToolTip style is being modified in the CSS under title\n\n const Content = () =>{\n return (\n <button class={buttonClass} onClick={this.onClick} title={this.showLabel ? '' : this.tooltip} style={buttonStyle}>\n {/* Conditionally render the icon if one is provided */}\n {iconData && (\n <svg {...iconData.attrs} fill={iconColor}>\n {iconData.content.map((item, index) => {\n if (item.elem === 'path') {\n return <path {...item.attrs} key={index} />;\n }\n return null;\n })}\n </svg>\n )}\n {/* Render slot conditionally based on showLabel */}\n {this.showLabel\n ? !['grid options', 'clear grid'].includes(this.tooltip.toLocaleLowerCase()) && <slot></slot>\n : (this.showLabel || this.tooltip.toLowerCase() === 'save view') && <slot></slot>}\n </button>\n )\n }\n return ( \n this.count ? (\n <udp-badge content={this.count}>\n <Content/>\n </udp-badge>\n ) : (\n <Content/>\n ))\n \n }\n}\n","@import '../inputs.css';\n\n/* Size variants for toggle sizing */\n:host(.udp-input--size-small) .toggle-container {\n width: 32px;\n height: 18px;\n}\n\n:host(.udp-input--size-small) button {\n border-radius: 18px;\n}\n\n:host(.udp-input--size-small) .toggle-knob {\n width: 14px;\n height: 14px;\n top: 2px;\n left: 2px;\n}\n\n:host(.udp-input--size-small) .toggled .toggle-knob {\n left: 16px;\n}\n\n:host(.udp-input--size-normal) .toggle-container {\n width: 38px;\n height: 22px;\n}\n\n:host(.udp-input--size-normal) button {\n border-radius: 22px;\n}\n\n:host(.udp-input--size-normal) .toggle-knob {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 18px;\n height: 18px;\n}\n\n:host(.udp-input--size-normal) .toggled .toggle-knob {\n left: 18px;\n}\n\n:host(.udp-input--size-large) .toggle-container {\n width: 44px;\n height: 26px;\n}\n\n:host(.udp-input--size-large) button {\n border-radius: 26px;\n}\n\n:host(.udp-input--size-large) .toggle-knob {\n width: 22px;\n height: 22px;\n top: 2px;\n left: 2px;\n}\n\n:host(.udp-input--size-large) .toggled .toggle-knob {\n left: 20px;\n}\n\n.toggle-container {\n position: relative;\n display: inline-block;\n}\n\nbutton {\n appearance: none;\n background-color: var(--gray-04, #ccc);\n width: 100%;\n height: 100%;\n position: relative;\n outline: none;\n border: none;\n cursor: pointer;\n transition: background-color 0.2s ease;\n}\n\n.toggled button {\n background-color: var(--primary-color, #344861);\n}\n\n.toggle-knob {\n position: absolute;\n background-color: var(--white, #ffffff);\n border-radius: 50%;\n transition: left 0.2s ease;\n}\n\n/* Size variants for label spacing */\n:host(.udp-input--size-small) .label-left {\n margin-right: var(--spacing-02);\n}\n\n:host(.udp-input--size-small) .label-right {\n margin-left: var(--spacing-02);\n}\n\n:host(.udp-input--size-small) .label-bottom {\n margin-top: var(--spacing-02);\n}\n\n:host(.udp-input--size-normal) .label-left {\n margin-right: var(--spacing-03);\n}\n\n:host(.udp-input--size-normal) .label-right {\n margin-left: var(--spacing-03);\n}\n\n:host(.udp-input--size-normal) .label-bottom {\n margin-top: var(--spacing-03);\n}\n\n:host(.udp-input--size-large) .label-left {\n margin-right: var(--spacing-04);\n}\n\n:host(.udp-input--size-large) .label-right {\n margin-left: var(--spacing-04);\n}\n\n:host(.udp-input--size-large) .label-bottom {\n margin-top: var(--spacing-04);\n}\n\n.toggle-wrapper {\n display: flex;\n align-items: center;\n}\n\n.toggle-wrapper.position-left {\n flex-direction: row;\n}\n\n.toggle-wrapper.position-right {\n flex-direction: row;\n}\n\n.toggle-wrapper.position-bottom {\n flex-direction: column;\n align-items: flex-start;\n}\n\n.toggle-label {\n font-size: var(--caption-font-size, 0.875rem);\n}\n\n.label-left {\n margin-right: var(--spacing-03);\n}\n\n.label-right {\n margin-left: var(--spacing-03);\n}\n\n.label-bottom {\n margin-top: var(--spacing-03);\n}\n","import { Component, Prop, State, h, Host, Event, EventEmitter, Watch, Element } from '@stencil/core';\nimport { InputMargin, InputSize } from '../input-types';\n\n/**\n * A standardized toggle/switch component with customizable positioning and comprehensive state management.\n * Supports both controlled and uncontrolled modes with proper accessibility features and standard DOM events.\n *\n * **Toggle States:**\n * - Uses boolean internal state with string value emission for form compatibility\n * - Accepts various string formats for initial values ('true', '1', 'on')\n * - Emits string values ('true'/'false') for consistent form integration\n *\n * **Accessibility:**\n * - Proper ARIA attributes (role=\"switch\", aria-checked, aria-labelledby)\n * - Keyboard navigation support\n * - Semantic label association with htmlFor attribute\n *\n * @example\n * ```tsx\n * // Uncontrolled component with initial value\n * <stencil-toggle\n * label=\"Enable notifications\"\n * initialValue=\"false\"\n * onChange={(e) => console.log('Toggled:', e.detail)}\n * />\n *\n * // Controlled component\n * <stencil-toggle\n * label=\"Dark mode\"\n * checked={isDarkMode}\n * onChange={(e) => setIsDarkMode(e.detail === 'true')}\n * />\n *\n * // With custom positioning and validation\n * <stencil-toggle\n * label=\"Accept terms\"\n * labelPosition=\"right\"\n * required={true}\n * error={termsError}\n * checked={acceptTerms}\n * onChange={handleTermsChange}\n * />\n * ```\n */\n@Component({\n tag: 'stencil-toggle',\n styleUrl: 'stencil-toggle.css',\n shadow: true,\n})\nexport class StencilToggle {\n @Element() el: HTMLElement;\n\n @State() toggled: boolean = false;\n\n /**\n * Initial value for the toggle. Used for uncontrolled components to set the default state.\n * Accepts string values: 'true', '1', 'on' for true state, anything else for false.\n * Only used when `checked` prop is not provided.\n */\n @Prop() initialValue: string;\n\n /**\n * Current checked state of the toggle. When provided, makes this a controlled component.\n * The component will use this value and update it through events.\n */\n @Prop({ mutable: true }) checked: boolean;\n\n /**\n * Label text displayed next to the toggle. Used for accessibility and user guidance.\n */\n @Prop() label: string;\n\n /**\n * Position of the label relative to the toggle switch.\n * - 'left': Label appears to the left of the toggle (default)\n * - 'right': Label appears to the right of the toggle\n * - 'bottom': Label appears below the toggle\n */\n @Prop() labelPosition: 'left' | 'right' | 'bottom' = 'left';\n\n /**\n * Whether the toggle is disabled. Users cannot interact with the toggle when disabled.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Legacy ID property for the toggle element. Use `id` prop instead for new implementations.\n * @deprecated Use the standard `id` prop instead\n */\n @Prop() idItem: string;\n\n /**\n * Unique identifier for the toggle element. Used for form association and accessibility.\n */\n @Prop() id: string;\n\n /**\n * Name attribute for the toggle element. Used for form submission.\n */\n @Prop() name: string;\n\n /**\n * Error message to display below the toggle. Shows validation errors or other issues.\n */\n @Prop() error: string;\n\n /**\n * Whether the toggle is required for form submission. Adds visual indicator and validation.\n */\n @Prop() required: boolean;\n\n /**\n * Margin spacing around the component. Affects vertical spacing in form layouts.\n * - 'none': No margin\n * - 'dense': Reduced margin for compact layouts\n * - 'normal': Standard margin spacing (default)\n */\n @Prop() margin: InputMargin = 'normal';\n\n /**\n * Size variant for the toggle component.\n * - 'small': Smaller toggle size.\n * - 'normal': Standard toggle size (default).\n * - 'large': Larger toggle size.\n */\n @Prop() size: InputSize = 'normal';\n\n @State() errorMessage: string;\n\n /**\n * Emitted when the toggle state changes through user interaction.\n * Contains the new state as a string value ('true' or 'false') for form compatibility.\n * @deprecated Use standard 'change' event instead for better integration\n */\n @Event() toggledChange: EventEmitter;\n\n // Static counter to ensure unique IDs for generated fallbacks\n private static S_TOGGLE_ID_COUNTER = 0;\n // Internally generated ID if no idItem is provided\n private _internalId: string;\n\n /**\n * Watcher for the error prop. Updates the internal error message when the error prop changes.\n */\n @Watch('error')\n updateError() {\n this.errorMessage = this.error;\n }\n\n /**\n * Watcher for the initialValue prop. Updates the toggle state when initialValue changes\n * (useful for form resets, dynamic initial values, etc.).\n * @param newValue - The new initial value\n */\n @Watch('initialValue')\n initialValueChanged(newValue: string) {\n // Update toggled when initialValue changes (for form resets, etc.)\n if (newValue !== undefined) {\n this.toggled = newValue === 'true' || newValue === '1' || newValue === 'on';\n }\n }\n\n /**\n * Watcher for the checked prop. Updates the toggle state when the checked prop changes\n * (controlled component behavior).\n */\n @Watch('checked')\n checkedChanged() {\n // Backward compatibility: if checked prop is set directly, use it\n if (this.checked !== undefined && this.checked !== this.toggled) {\n this.toggled = this.checked;\n }\n }\n\n /**\n * Component lifecycle method called when the component is about to load.\n * Initializes the toggle state from either the checked prop or initialValue prop.\n */\n componentWillLoad() {\n // Initialize toggled from initialValue or checked prop (backward compatibility)\n if (this.initialValue !== undefined) {\n this.toggled = this.initialValue === 'true' || this.initialValue === '1' || this.initialValue === 'on';\n } else {\n this.toggled = this.checked || false;\n }\n\n if (this.error) {\n this.errorMessage = this.error;\n }\n\n // Generate a unique ID for the toggle instance if idItem is not provided.\n // This ensures the label's htmlFor can always link to the button's id.\n this._internalId = `stencil-toggle-generated-${StencilToggle.S_TOGGLE_ID_COUNTER++}`;\n }\n\n /**\n * Legacy lifecycle method - no longer needed with current state management.\n * @deprecated This method is no longer used\n */\n componentWillUpdate() {\n // Remove this since we're handling state differently now\n }\n\n /**\n * Handles toggle button clicks and keyboard interactions.\n * Updates internal state and emits both legacy and standard DOM events.\n */\n toggleButton() {\n if (this.disabled) return;\n\n this.toggled = !this.toggled;\n\n // Update controlled value if this is a controlled component\n if (this.checked !== undefined) {\n this.checked = this.toggled;\n }\n\n // Emit for backward compatibility\n this.toggledChange.emit(this.toggled);\n\n // Emit standard DOM events that stencil-field and form libraries can handle\n const changeEvent = new CustomEvent('change', {\n detail: this.toggled ? 'true' : 'false',\n bubbles: true\n });\n this.el.dispatchEvent(changeEvent);\n\n const inputEvent = new CustomEvent('input', {\n detail: this.toggled ? 'true' : 'false',\n bubbles: true\n });\n this.el.dispatchEvent(inputEvent);\n }\n\n /**\n * Renders the toggle component with proper accessibility attributes and layout.\n * Handles label positioning and generates unique IDs for form association.\n */\n render() {\n // Use the provided idItem, id, or fall back to the internally generated ID\n const baseId = this.idItem || this.id || this._internalId;\n const buttonId = `${baseId}-button`;\n const labelId = `${baseId}-label`;\n const isError = !!this.errorMessage;\n\n const labelElement = this.label && (\n <label id={labelId} class={`toggle-label label-${this.labelPosition}`} htmlFor={!this.disabled ? buttonId : undefined}>\n <unity-typography variant=\"caption-text\">{this.label}</unity-typography>\n </label>\n );\n\n const toggleElement = (\n <div class={`toggle-container ${this.toggled ? 'toggled' : ''}`}>\n <button\n id={buttonId}\n onClick={() => this.toggleButton()}\n disabled={this.disabled}\n aria-checked={this.toggled.toString()}\n aria-labelledby={labelId}\n role=\"switch\"\n >\n <span class=\"toggle-knob\"></span>\n </button>\n </div>\n );\n\n return (\n <Host\n class={{\n 'udp-input': true,\n 'udp-input--error': isError,\n 'udp-input--disabled': this.disabled,\n 'udp-input--checked': this.toggled,\n [`udp-input--margin-${this.margin}`]: true,\n [`udp-input--size-${this.size}`]: true,\n }}\n aria-invalid={isError ? 'true' : 'false'}\n >\n <div class={`toggle-wrapper position-${this.labelPosition}`}>\n {this.labelPosition === 'left' && labelElement}\n {toggleElement}\n {this.labelPosition === 'right' && labelElement}\n {this.labelPosition === 'bottom' && labelElement}\n {this.errorMessage && <div class=\"error-message\">{this.errorMessage}</div>}\n </div>\n </Host>\n );\n }\n}\n","@import '../inputs.css';","import {\n Component,\n Prop,\n h,\n Host,\n State,\n Watch,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { InputSize, InputMargin } from '../input-types';\n\n/**\n * A standardized text input field component with error handling, validation, and custom styling.\n * Supports both controlled and uncontrolled modes with proper event emission for integration\n * with form libraries and custom event handlers.\n *\n * @example\n * ```tsx\n * // Uncontrolled component with initial value\n * <text-field\n * placeholder=\"Enter your name\"\n * initialValue=\"John Doe\"\n * onChange={(e) => console.log('Final value:', e.detail)}\n * />\n *\n * // Controlled component\n * <text-field\n * placeholder=\"Enter your name\"\n * value={nameValue}\n * onChange={(e) => setNameValue(e.detail)}\n * />\n *\n * // With validation and error handling\n * <text-field\n * label=\"Email Address\"\n * placeholder=\"user@example.com\"\n * required={true}\n * error={emailError}\n * value={email}\n * onChange={handleEmailChange}\n * />\n * ```\n */\n@Component({\n tag: 'text-field',\n styleUrl: 'text-field.css',\n shadow: true,\n})\nexport class TextField {\n /**\n * Unique identifier for the input element. Used for form association and accessibility.\n */\n @Prop() id: string;\n\n /**\n * Label text displayed above the input field. Used for accessibility and user guidance.\n */\n @Prop() label: string;\n\n /**\n * Placeholder text shown when the input is empty. Provides hints about expected input format.\n */\n @Prop() placeholder: string;\n\n /**\n * Whether the field is required for form submission. Adds visual indicator (*) and validation.\n */\n @Prop() required: boolean;\n\n /**\n * Whether the field is read-only. Users can see the value but cannot modify it.\n */\n @Prop() readonly: boolean;\n\n /**\n * Whether the field is disabled. Users cannot interact with the field.\n */\n @Prop() disabled: boolean;\n\n /**\n * Maximum number of characters allowed in the input. Enforces character limits.\n */\n @Prop() maxCharacter: number;\n\n /**\n * Current value of the input field. When provided, makes this a controlled component.\n * The component will use this value and update it through events.\n */\n @Prop({ mutable: true }) value: string;\n\n /**\n * Initial value for the input field. Used for uncontrolled components to set the default value.\n * Only used when `value` prop is not provided.\n */\n @Prop() initialValue: string;\n\n /**\n * Whether the field should be hidden from display while maintaining form functionality.\n */\n @Prop() hidden: boolean;\n\n /**\n * Error message to display below the input field. Shows validation errors or other issues.\n */\n @Prop() error: string = '';\n\n /**\n * Input mode hint for mobile keyboards. Optimizes keyboard layout for specific input types.\n * Common values: 'text', 'email', 'tel', 'url', 'numeric', 'decimal', 'search'\n */\n @Prop() inputMode: string;\n\n /**\n * Size variant controlling the padding and spacing of the input.\n * - 'small': Compact spacing for data-heavy interfaces\n * - 'normal': Standard spacing (default)\n * - 'large': Generous spacing for accessibility\n */\n @Prop() size: InputSize = 'normal';\n\n /**\n * Margin variant for the input spacing.\n * - 'none': No margin\n * - 'dense': Minimal margin spacing\n * - 'normal': Standard margin spacing (default)\n */\n @Prop() margin: InputMargin = 'normal';\n\n /**\n * Internal error message state. Manages display of validation errors.\n * @internal\n */\n @State() errorMessage: string;\n\n /**\n * Internal value state. Manages the current input value independently of props.\n * @internal\n */\n @State() internalValue: string;\n\n /**\n * Emitted when the text field value changes (on blur, enter, etc.).\n * Provides the final committed value when user finishes editing.\n *\n * @event change\n * @param {string} value - The current value of the text field\n *\n * @example\n * ```tsx\n * <text-field onChange={(e) => handleValueChange(e.detail)} />\n * ```\n */\n @Event() change: EventEmitter<string>;\n\n /**\n * Updates the error message when the error prop changes.\n * @internal\n */\n @Watch('error')\n updateError() {\n this.errorMessage = this.error;\n }\n\n /**\n * Updates the internal value when initialValue prop changes.\n * Only updates if current value is empty to avoid overriding user input.\n * @internal\n */\n @Watch('initialValue')\n updateInitialValue() {\n // Only update if we don't have a value yet or if explicitly resetting\n if (this.internalValue === '' || this.internalValue === undefined) {\n this.internalValue = this.initialValue || '';\n }\n }\n\n /**\n * Updates the internal value when value prop changes.\n * For controlled components, the value prop takes precedence.\n * @internal\n */\n @Watch('value')\n updateValue() {\n // If value prop is provided, this is a controlled component\n if (this.value !== undefined) {\n this.internalValue = this.value;\n }\n }\n\n /**\n * Component lifecycle method. Initializes error message and internal value.\n * @internal\n */\n componentWillLoad() {\n // Initialize error message\n if (this.error) {\n this.errorMessage = this.error;\n }\n // Initialize value: use value prop if provided (controlled), otherwise use initialValue (uncontrolled)\n this.internalValue = this.value !== undefined ? this.value : (this.initialValue || '');\n }\n\n /**\n * Handles input events (real-time typing). Updates internal state and emits input event.\n * For controlled components, also updates the value prop.\n * @param event - The native input event\n * @internal\n */\n private onInput = (event: InputEvent) => {\n if (this.readonly) {\n // Prevent typing if the field is read-only\n const input = event.target as HTMLInputElement;\n input.value = this.internalValue;\n return;\n }\n const newValue = (event.target as HTMLInputElement).value;\n this.internalValue = newValue; // Update internal state\n\n // If this is a controlled component (value prop provided), update the value prop\n if (this.value !== undefined) {\n this.value = newValue;\n }\n }\n\n /**\n * Handles change events (committed changes on blur/enter). Emits change event.\n * @param event - The native change event\n * @internal\n */\n private onChange = (event: Event) => {\n if (this.readonly) {\n return;\n }\n const newValue = (event.target as HTMLInputElement).value;\n // Emit change event when user finishes editing (blur, enter, etc.)\n this.change.emit(newValue);\n }\n\n render() {\n const isError = !!this.errorMessage;\n\n const inputClass = {\n 'bx--text-input': true,\n 'bx--text-input--error': isError,\n 'bx--text-input:user-invalid': isError,\n 'text-field--disabled': this.disabled,\n };\n return (\n <Host\n class={{\n 'udp-input': true,\n 'udp-input--error': isError,\n 'udp-input--disabled': this.disabled,\n 'udp-input--readonly': this.readonly,\n 'udp-input--required': this.required,\n [`udp-input--size-${this.size}`]: true,\n [`udp-input--margin-${this.margin}`]: true,\n }}\n aria-invalid={isError ? 'true' : 'false'}\n aria-required={this.required ? 'true' : 'false'}\n >\n <div class=\"bx--form-item\">\n <unity-typography variant=\"caption-text\">\n <label htmlFor={this.id} class=\"bx--label\">\n {this.label}\n {this.required ? '*' : ''}\n </label>\n </unity-typography>\n {this.hidden ? (\n <input id={this.id} type=\"hidden\" value={this.internalValue} />\n ) : (\n <input\n id={this.id}\n type=\"text\"\n class={{ ...inputClass }}\n placeholder={this.placeholder}\n value={this.internalValue}\n required={this.required}\n disabled={this.disabled}\n readonly={this.readonly}\n maxLength={this.maxCharacter}\n inputMode={this.inputMode}\n onInput={this.onInput}\n onChange={this.onChange}\n //@ts-ignore\n udprecordid={'udpRecord-text-field-' + this.id}\n />\n )}\n {isError && (\n <div class=\"error-message\">\n <unity-typography variant=\"caption-text\" color=\"error\">{this.errorMessage}</unity-typography>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n",".tree-item {\n display: flex;\n\n border-bottom: 1px solid rgba(0,0,0,.12);\n padding-bottom: 8px;\n margin-bottom: 6px;\n}\n\n.label {\n flex: 1;\n padding-left: 8px;\n}\n\n.arrow-icon {\n cursor: pointer;\n font-size: 20px; /* Adjust size as needed */\n}\n\n.tree-item-label {\n display: flex;\n /* align-items: center; */\n justify-content: space-between; /* Aligns children at opposite ends */\n width: 100%; /* Ensures the container takes the full width */\n gap: 16px\n}\n\n.tree-label-select {\n flex: 1;\n /* align-items: center; */\n display: flex;\n /* padding-top: 6px; */\n padding-right: 8px;\n align-items: center;\n}\n\n.tree-item {\n border-bottom: 1px solid rgba(0,0,0,.12);\n padding-bottom: 8px;\n margin-bottom: 6px;\n}\n\n.tree-item-label {\n display: flex; \n width: 100%;\n cursor: pointer;\n}\n\n.nested-list {\n margin-left: 20px; \n}\n\n.label-icon-container {\n display: flex;\n align-items: center; \n border-bottom: 1px solid rgba(0,0,0,.12);\n padding: 4px;\n}\n\n/* .tree-label-select {\n \n} */\n\n\n[level=\"1\"] .nested-list { margin-left: 10px; }\n[level=\"2\"] .nested-list { margin-left: 20px; }\n[level=\"3\"] .nested-list { margin-left: 30px; }\n[level=\"4\"] .nested-list { margin-left: 40px; }\n[level=\"5\"] .nested-list { margin-left: 50px; }\n[level=\"6\"] .nested-list { margin-left: 60px; }\n","import { Component, Prop, Event, EventEmitter, h, State, Watch, forceUpdate } from '@stencil/core';\n\n\n@Component({\n tag: 'tree-list-item',\n styleUrl: 'tree-list-item.css',\n shadow: true\n})\n\nexport class TreeListItem {\n @Prop() label: string;\n @Prop() reference: string | null;\n @Prop() nestedItems?: any[];\n @State() showNested: boolean = false;\n @Prop() level: number = 0;\n @Event() itemClick: EventEmitter<{ searchField: string, searchOperator: string, searchValue: string, parentName?: string, parentPath?: string }>;\n @Prop() parentFilter: any; \n @Prop() parentPath: string;\n @Prop() parentName: string = 'defaultParentName';\n @State() showChildren: boolean = false;\n @State() updateTrigger: boolean = false;\n @Prop() customAttribute: string; // New property added\n @Prop() test: string; // New property added\n @Prop() parent: string; // New property added\n @Prop() dataOne: string; // New property added\n @Prop() dataTwo: string; // New property added\n @Prop() statusKey: string;\n @Prop() statusClasses: { [key: string]: string };\n @Prop() statusLabel: string;\n @Prop() statusValue: boolean;\n @Prop() showViewOption: boolean = false; \n @Prop() showDeleteOption: boolean = false; \n @Prop() showEditOption: boolean = false; \n @Prop() showUpdateDefaultOption: boolean = false; \n @Prop() showAdd: boolean = true; \n @Prop() viewHandler: (event: MouseEvent) => void;\n @Prop() deleteHandler: (event: MouseEvent) => void;\n @Prop() editHandler: (event: MouseEvent) => void;\n @Prop() updateDefaultHandler: (event: MouseEvent) => void;\n @Prop() isDefault: boolean = false; \n @Prop() add: boolean = false;\n @Prop() gridViewVisibilityTypeId : number;\n \n@Watch('nestedItems')\nnestedItemsChanged(newValue: any[], oldValue: any[]) { \n if (newValue !== oldValue) {\n console.log('Nested items have changed');\n // Perform necessary actions or state updates based on the new value \n forceUpdate(this); \n }\n}\n\n @Event({\n eventName: 'reference-clicked',\n bubbles: true,\n composed: true,\n cancelable: true,\n }) referenceClicked: EventEmitter<{ reference: string, name: string, parentReference?: string, parentFilter?: string, parent?: string, parentPath?: string }>;\n \n\n// componentWillRender() {\n// console.log('Rendering TreeListItem:', this.label, 'Nested Items:', this.nestedItems);\n// }\n\n \n private handleButtonClick = (event: MouseEvent) => {\n this.showChildren = !this.showChildren;\n event.stopPropagation();\n if (this.reference) {\n this.showNested = !this.showNested;\n this.updateTrigger = !this.updateTrigger;\n this.referenceClicked.emit({\n reference: this.reference,\n name: this.label,\n parentReference: this.parentName,\n parentFilter: this.parentFilter,\n parent: this.parent,\n parentPath: this.parentPath\n });\n forceUpdate(this);\n } \n } \n \n \nprivate onSelfClick = () => {\n \n if (!this.reference) {\n this.itemClick.emit({\n searchField: this.label,\n searchOperator: \"\", \n searchValue: \"\", \n parentName: this.parentName,\n parentPath: this.parentPath\n });\n } else {\n // Handle the case for items with children\n }\n};\n\n// private someOtherHandler = (event: MouseEvent) => {\n// event.stopPropagation();\n// console.log('someOtherHandler called');\n// }\n\n\nprivate handleViewClick = (event: MouseEvent) => {\n event.stopPropagation();\n if (this.viewHandler) {\n this.viewHandler(event);\n }\n}\n\n\nprivate handleDeleteClick = (event: MouseEvent) => {\n event.stopPropagation();\n if (this.deleteHandler) {\n this.deleteHandler(event);\n }\n}\n\nprivate handleEditClick = (event: MouseEvent) => {\n event.stopPropagation();\n if (this.editHandler) {\n this.editHandler(event);\n }\n}\n\nprivate handleUpdateDefaultClick = (event: MouseEvent) => {\n event.stopPropagation();\n if (this.updateDefaultHandler) {\n this.updateDefaultHandler(event);\n }\n}\n\n\nrender() {\n \n const indentationStyle = { 'marginLeft': `${this.level * 20}px` };\n\n // Recursive function to render nested items\n const renderNestedItems = (nestedItems, currentLevel) => {\n \n return nestedItems.map((item, index) => (\n \n <tree-list-item\n key={`${item.name}-${currentLevel}-${index}`}\n label={item.name}\n reference={item.reference}\n nestedItems={item.referenceNode} // Pass the nested items for further recursion\n level={currentLevel + 1} // Increment the level for each nested item\n parentName={this.label}\n parentFilter={item.extendedProperties?.parentFilter}\n parent={item.extendedProperties?.parent}\n parentPath={item.extendedProperties?.parentPath}\n onReference-clicked={(event: CustomEvent<{ reference: string; name: string; parentReference?: string; parentFilter?: string, parent?: string; parentPath?: string }>) => {\n event.stopPropagation();\n // Emitting referenceClicked event with detailed payload\n this.referenceClicked.emit({\n reference: event.detail.reference,\n name: event.detail.name,\n parentReference: this.label,\n parentFilter: event.detail.parentFilter,\n parent: event.detail.parent,\n parentPath: event.detail.parentPath\n });\n }}\n />\n ));\n }; \n \n return (\n <div class=\"tree-list-item\" style={indentationStyle}>\n <div class=\"label-icon-container\" onClick={this.onSelfClick}>\n <div class=\"tree-label-select\">\n <unity-typography variant='data-display-three'>{this.label}</unity-typography>\n </div>\n {/* Conditionally rendered buttons alongside the label */}\n {this.gridViewVisibilityTypeId && <status-chip statusClasses={{\"Private\" : \"error\", \"Public\" : \"success\" }} statusValue={this.gridViewVisibilityTypeId === 1 ? \"Private\" : \"Public\"}>{this.gridViewVisibilityTypeId === 1 ? \"Private\" : \"Public\"}</status-chip>}\n {this.showEditOption && <udp-function-button edit onClick={this.handleEditClick}>Edit</udp-function-button>}\n {this.showDeleteOption && <udp-function-button delete onClick={this.handleDeleteClick}>Delete</udp-function-button>}\n {this.showUpdateDefaultOption && <udp-function-button isDefault={this.isDefault} onClick={this.handleUpdateDefaultClick}>Make Default</udp-function-button>}\n {this.showViewOption && <udp-function-button view onClick={this.handleViewClick}>Other Action</udp-function-button>}\n {this.reference ? (\n <udp-function-button expand={true} noBackground onClick={this.handleButtonClick}>Details</udp-function-button>\n ) : (\n this.showAdd && <udp-function-button add={true}></udp-function-button>\n )}\n </div>\n {this.showNested && this.nestedItems && (\n <div class=\"nested-list\">\n {renderNestedItems(this.nestedItems, this.level)}\n </div>\n )}\n </div>\n );\n \n \n}\n\n\n}",".tooltip-wrapper {\n position: relative;\n display: inline-block;\n}\n\n.tooltip-content {\nvisibility: hidden;\nbackground-color: #000;\ncolor: #fff;\ntext-align: center;\nborder-radius: 4px;\nposition: absolute;\nz-index: 99;\ntransform: translateY(-20px);\ntransform: translateX(-50px);\npadding: 5px;\ncursor: pointer;\n/* more styles here, matching Carbon Design System */\n}\n\n.tooltip-wrapper:hover .tooltip-content {\nvisibility: visible;\n}\n","import { Component, Prop, State, h } from '@stencil/core';\n\n@Component({\n tag: 'udp-ambient-tool-tip',\n styleUrl: 'udp-ambient-tool-tip.css',\n shadow: true,\n})\nexport class UdpAmbientToolTip {\n\n @Prop() content: string;\n @Prop() noTooltip: boolean\n @State() isVisible: boolean = false;\n\n handleMouseOver = () => {\n // Only set isVisible to true if there is content.\n if (this.content && this.content.trim() !== '') {\n this.isVisible = true;\n }\n }\n\n handleMouseOut = () => {\n this.isVisible = false;\n }\n\n render() {\n // Check if content is provided before rendering the tooltip content.\n const shouldDisplayTooltip = this.isVisible && this.content && this.content.trim() !== '';\n\n return (\n <div class=\"tooltip-wrapper\" onMouseOver={!this.noTooltip &&this.handleMouseOver} onMouseOut={this.handleMouseOut}>\n {shouldDisplayTooltip && (\n <div class=\"tooltip-content\">\n <unity-typography variant='caption-text'>{this.content}</unity-typography>\n </div>\n )}\n <slot></slot>\n </div>\n );\n }\n}\n",".avatar {\n width: 35px;\n height: 35px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-weight: bold;\n }\n\n .avatar.circular {\n border-radius: 50%;\n }\n \n .avatar.rounded {\n border-radius: 4px;\n }\n \n .avatar.square {\n border-radius: 0;\n }\n \n .avatar.color-primary {\n background-color: var(--primary-color);\n }\n \n .avatar.color-secondary {\n background-color: var(--secondary-color);\n }\n \n .avatar.color-success {\n background-color: var(--success-color-main);\n }\n \n .avatar.color-warning {\n background-color: var(--warning-color-main);\n }\n \n .avatar.color-error {\n background-color: var(--error-color-main);\n }\n \n .avatar.color-info {\n background-color: var(--info-color-main);\n }\n \n .avatar.color-note {\n background-color: var(--note-color-main);\n }\n ","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'udp-avatar',\n styleUrl: 'udp-avatar.css',\n shadow: true,\n})\nexport class UdpAvatar {\n @Prop() username: string;\n @Prop() iconName: string;\n @Prop() variant: 'circular' | 'rounded' | 'square' = 'circular';\n @Prop() color: string;\n\n private colors = [\n '#F44336',\n '#E91E63',\n '#9C27B0',\n '#673AB7',\n '#3F51B5',\n '#2196F3',\n '#03A9F4',\n '#00BCD4',\n '#009688',\n '#4CAF50',\n '#8BC34A',\n '#CDDC39',\n '#FFC107',\n '#FF9800',\n '#FF5722',\n '#795548',\n ];\n\n getInitial() {\n return this.username ? this.username[0].toUpperCase() : '?';\n }\n\n private getColorForUsername() {\n const charCode = this.username ? this.username.charCodeAt(0) : 0;\n return this.colors[charCode % this.colors.length];\n }\n\n render() {\n const systemColors = ['primary', 'secondary', 'info', 'error', 'success', 'warning', 'note'];\n const isSystemColor = systemColors.includes(this.color);\n\n const style = {};\n const classes = ['avatar', this.variant];\n\n if (isSystemColor) {\n classes.push(`color-${this.color}`);\n } else if (this.color) {\n style['background-color'] = this.color;\n } else {\n style['background-color'] = this.getColorForUsername();\n }\n\n return (\n <div class={classes.join(' ')} style={style}>\n {this.iconName ? <udp-icon iconName={this.iconName} darkIcon={false}></udp-icon> : <unity-typography variant=\"data-display-two\"> {this.getInitial()}</unity-typography>}\n </div>\n );\n }\n}\n",".badge-wrapper {\n position: relative;\n display: inline-block;\n }\n \n .badge-content {\n position: absolute;\n top: -12px;\n right: -8px;\n background-color: var(--primary-color);\n color: white;\n border-radius: 50%;\n padding: 4px;\n min-width: 18px;\n text-align: center;\n z-index: 1;\n }\n ","import { Component, h, Prop } from '@stencil/core';\nimport './udp-badge.css';\n\n@Component({\n tag: 'udp-badge',\n styleUrl: 'udp-badge.css',\n shadow: true,\n})\nexport class UdpBadge {\n @Prop() content: number = 0;\n @Prop() max: number = 99;\n\n render() {\n const displayContent =\n this.content > this.max ? `${this.max}+` : this.content;\n\n return (\n <div class=\"badge-wrapper\">\n <slot></slot>\n <span class=\"badge-content\">\n <unity-typography variant='caption-text' > {displayContent} </unity-typography>\n \n </span>\n </div>\n );\n }\n}\n",":host {\n display: inline-flex;\n vertical-align: middle;\n --udp-button-primary-color: var(--primary-color, #000);\n --udp-button-primary-color-text: var(--primary-contrast-text, #fff);\n --udp-button-secondary-color: var(--secondary-color, #000);\n --udp-button-secondary-color-text: var(--secondary-contrast-text, #fff);\n --udp-button-success-color: var(--success-color, #0da40d);\n --udp-button-success-color-text: var(--success-contrast-text, #fff);\n --udp-button-error-color: var(--error-color, #ff0000);\n --udp-button-error-color-text: var(--error-contrast-text, #fff);\n --udp-button-warning-color: var(--warning-color, #ffa500);\n --udp-button-warning-color-text: var(--warning-contrast-text, #fff);\n --udp-button-info-color: var(--info-color, #2953ff);\n --udp-button-info-color-text: var(--info-contrast-text, #fff);\n\n /* Define base padding variables */\n --host-udp-btn-padding-y: var(--spacing-03);\n --host-udp-btn-padding-x: var(--spacing-05);\n --host-udp-btn-padding-x-with-start-icon: var(--spacing-03);\n --host-udp-btn-padding-x-with-end-icon: var(--spacing-03);\n}\n\n \n/* Base styles for udp-button */\n.udp-button {\n width: 100%;\n font-family: var(--font-family);\n /* font-weight: var(--button-font-weight); */\n font-size: var(--button-font-size);\n line-height: var(--button-line-height);\n /* padding: var(--spacing-03) var(--spacing-05); */\n padding-top: var(--host-udp-btn-padding-y);\n padding-bottom: var(--host-udp-btn-padding-y);\n padding-left: var(--host-udp-btn-padding-x);\n padding-right: var(--host-udp-btn-padding-x);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n text-decoration: none; /* For <a> tags */\n background-color: var(--host-udp-btn-base-bg, transparent);\n color: var(--host-udp-btn-base-text, inherit);\n border: 1px solid var(--host-udp-btn-base-border, transparent);\n transition: background-color var(--animation-duration) var(--animation-easing),\n border-color var(--animation-duration) var(--animation-easing),\n color var(--animation-duration) var(--animation-easing),\n box-shadow var(--animation-duration) var(--animation-easing);\n min-width: 64px;\n user-select: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n gap: var(--host-udp-btn-icon-gap, var(--spacing-03)); /* Gap between icon and text */\n}\n\n/* Adjust padding when icons are present */\n.udp-button--has-start-icon {\n padding-left: var(--host-udp-btn-padding-x-with-start-icon);\n}\n\n.udp-button--has-end-icon {\n padding-right: var(--host-udp-btn-padding-x-with-end-icon);\n}\n\n.udp-button:focus-visible {\n outline: var(--host-udp-btn-focus-outline, var(--focus-outline, 2px solid blue));\n outline-offset: 0;\n}\n\n/* Styles for the icon containers and text content */\n.udp-button__icon,\n.udp-button__text-content {\n display: inline-flex; /* Ensures proper alignment and wrapping */\n align-items: center;\n}\n\n.udp-button__icon svg {\n /* Default icon size, can be overridden by specific icon styles or button size variants */\n width: var(--host-udp-btn-icon-size, 1.25em); /* Relative to current font size */\n height: var(--host-udp-btn-icon-size, 1.25em);\n /* fill: currentColor; Icons inherit button text color */\n}\n\n/* Spacing for icons when text is also present. Gap property on .udp-button handles this generally. */\n/* If more specific margin control is needed: */\n/* .udp-button__icon--start:not(:only-child) {\n margin-right: var(--host-udp-btn-icon-gap, var(--spacing-02));\n}\n.udp-button__icon--end:not(:only-child) {\n margin-left: var(--host-udp-btn-icon-gap, var(--spacing-02));\n} */\n\n/* Hide text content span if it's empty and there are icons, \n so the gap doesn't create extra space. \n The `gap` property on the parent flex container handles this well usually.\n If slot is empty, its span won't render content to create a gap against. \n*/\n.udp-button__text-content:empty {\n display: none;\n}\n\n.udp-button__label {\n display: inherit; /* Allows slot content (e.g. icons) to align correctly */\n align-items: inherit;\n justify-content: inherit;\n width: 100%; /* Ensure label fills the button */\n}\n\n/* Full width variant */\n.udp-button--full-width {\n width: 100%;\n}\n\n/* --- Size Variants --- */\n.udp-button--small {\n font-size: calc(var(--button-font-size) * 0.9); /* Slightly smaller font */\n padding: var(--spacing-02) var(--spacing-04);\n min-width: 48px;\n}\n\n.udp-button--large {\n font-size: calc(var(--button-font-size) * 1.1); /* Slightly larger font */\n padding: var(--spacing-04) var(--spacing-06);\n min-width: 80px;\n}\n\n.udp-button--small .udp-button__icon svg {\n width: var(--host-udp-btn-small-icon-size, 1.1em);\n height: var(--host-udp-btn-small-icon-size, 1.1em);\n}\n\n.udp-button--large .udp-button__icon svg {\n width: var(--host-udp-btn-large-icon-size, 1.4em);\n height: var(--host-udp-btn-large-icon-size, 1.4em);\n}\n\n/* --- Contained Variant --- */\n/* \n box-shadow: var(--host-udp-btn-contained-shadow, var(--elevation-02, none));\n box-shadow: var(--host-udp-btn-contained-hover-shadow, var(--elevation-04, none));\n box-shadow: var(--host-udp-btn-contained-active-shadow, var(--elevation-01, none));\n*/\n\n/* Contained - Primary */\n.udp-button--contained.udp-button--color-primary {\n background-color: var(--host-udp-btn-contained-primary-bg, var(--primary-color, black));\n color: var(--host-udp-btn-contained-primary-text, var(--primary-contrast-text, white));\n}\n.udp-button--contained.udp-button--color-primary:hover {\n background-color: var(--host-udp-btn-contained-primary-hover-bg, var(--primary-color-dark, dimgray));\n}\n\n/* Contained - Secondary */\n.udp-button--contained.udp-button--color-secondary {\n background-color: var(--host-udp-btn-contained-secondary-bg, var(--secondary-color, black));\n color: var(--host-udp-btn-contained-secondary-text, var(--secondary-contrast-text, white));\n}\n.udp-button--contained.udp-button--color-secondary:hover {\n background-color: var(--host-udp-btn-contained-secondary-hover-bg, var(--secondary-color-dark, dimgray));\n}\n\n/* Contained - Success */\n.udp-button--contained.udp-button--color-success {\n background-color: var(--host-udp-btn-contained-success-bg, var(--success-color-main, green));\n color: var(--host-udp-btn-contained-success-text, var(--success-contrast-text, white));\n}\n.udp-button--contained.udp-button--color-success:hover {\n background-color: var(--host-udp-btn-contained-success-hover-bg, var(--success-color-dark, darkgreen));\n}\n\n/* Contained - Error */\n.udp-button--contained.udp-button--color-error {\n background-color: var(--host-udp-btn-contained-error-bg, var(--error-color-main, red));\n color: var(--host-udp-btn-contained-error-text, var(--error-contrast-text, white));\n}\n.udp-button--contained.udp-button--color-error:hover {\n background-color: var(--host-udp-btn-contained-error-hover-bg, var(--error-color-dark, darkred));\n}\n\n/* Contained - Warning */\n.udp-button--contained.udp-button--color-warning {\n background-color: var(--host-udp-btn-contained-warning-bg, var(--warning-color-main, orange));\n color: var(--host-udp-btn-contained-warning-text, var(--warning-contrast-text, white));\n}\n.udp-button--contained.udp-button--color-warning:hover {\n background-color: var(--host-udp-btn-contained-warning-hover-bg, var(--warning-color-dark, darkorange));\n}\n\n/* Contained - Info */\n.udp-button--contained.udp-button--color-info {\n background-color: var(--host-udp-btn-contained-info-bg, var(--info-color-main, blue));\n color: var(--host-udp-btn-contained-info-text, var(--info-contrast-text, white));\n}\n.udp-button--contained.udp-button--color-info:hover {\n background-color: var(--host-udp-btn-contained-info-hover-bg, var(--info-color-dark, darkblue));\n}\n\n\n/* --- Outlined Variant --- */\n.udp-button--outlined {\n background-color: var(--host-udp-btn-outlined-default-bg, transparent);\n}\n.udp-button--outlined:active {\n background-color: var(--host-udp-btn-outlined-default-active-bg, rgba(0,0,0, 0.04));\n}\n\n/* Outlined - Primary */\n.udp-button--outlined.udp-button--color-primary {\n border-color: var(--host-udp-btn-outlined-primary-border, var(--primary-color, black));\n color: var(--host-udp-btn-outlined-primary-text, var(--primary-color, black));\n}\n.udp-button--outlined.udp-button--color-primary:hover {\n background-color: var(--host-udp-btn-outlined-primary-hover-bg, var(--primary-color-hint, lightgray));\n border-color: var(--host-udp-btn-outlined-primary-hover-border, var(--primary-color-dark, dimgray));\n}\n\n/* Outlined - Secondary */\n.udp-button--outlined.udp-button--color-secondary {\n border-color: var(--host-udp-btn-outlined-secondary-border, var(--secondary-color, black));\n color: var(--host-udp-btn-outlined-secondary-text, var(--secondary-color, black));\n}\n.udp-button--outlined.udp-button--color-secondary:hover {\n background-color: var(--host-udp-btn-outlined-secondary-hover-bg, var(--secondary-color-hint, lightgray));\n border-color: var(--host-udp-btn-outlined-secondary-hover-border, var(--secondary-color-dark, dimgray));\n}\n\n/* Outlined - Success */\n.udp-button--outlined.udp-button--color-success {\n border-color: var(--host-udp-btn-outlined-success-border, var(--success-color-main, green));\n color: var(--host-udp-btn-outlined-success-text, var(--success-color-main, green));\n}\n.udp-button--outlined.udp-button--color-success:hover {\n background-color: var(--host-udp-btn-outlined-success-hover-bg, var(--success-color-hint, lightgreen));\n border-color: var(--host-udp-btn-outlined-success-hover-border, var(--success-color-dark, darkgreen));\n}\n\n/* Outlined - Error */\n.udp-button--outlined.udp-button--color-error {\n border-color: var(--host-udp-btn-outlined-error-border, var(--error-color-main, red));\n color: var(--host-udp-btn-outlined-error-text, var(--error-color-main, red));\n}\n.udp-button--outlined.udp-button--color-error:hover {\n background-color: var(--host-udp-btn-outlined-error-hover-bg, var(--error-color-hint, lightpink));\n border-color: var(--host-udp-btn-outlined-error-hover-border, var(--error-color-dark, darkred));\n}\n\n/* Outlined - Warning */\n.udp-button--outlined.udp-button--color-warning {\n border-color: var(--host-udp-btn-outlined-warning-border, var(--warning-color-main, orange));\n color: var(--host-udp-btn-outlined-warning-text, var(--warning-color-main, orange));\n}\n.udp-button--outlined.udp-button--color-warning:hover {\n background-color: var(--host-udp-btn-outlined-warning-hover-bg, var(--warning-color-hint, lightyellow));\n border-color: var(--host-udp-btn-outlined-warning-hover-border, var(--warning-color-dark, darkorange));\n}\n\n/* Outlined - Info */\n.udp-button--outlined.udp-button--color-info {\n border-color: var(--host-udp-btn-outlined-info-border, var(--info-color-main, blue));\n color: var(--host-udp-btn-outlined-info-text, var(--info-color-main, blue));\n}\n.udp-button--outlined.udp-button--color-info:hover {\n background-color: var(--host-udp-btn-outlined-info-hover-bg, var(--info-color-hint, lightblue));\n border-color: var(--host-udp-btn-outlined-info-hover-border, var(--info-color-dark, darkblue));\n}\n\n\n/* --- Text Variant --- */\n.udp-button--text {\n background-color: var(--host-udp-btn-text-default-bg, transparent);\n border-color: var(--host-udp-btn-text-default-border, transparent); /* Ensure no border unless outlined */\n}\n.udp-button--text:active {\n background-color: var(--host-udp-btn-text-default-active-bg, rgba(0,0,0, 0.04));\n}\n\n/* Text - Primary */\n.udp-button--text.udp-button--color-primary {\n color: var(--host-udp-btn-text-primary-text, var(--primary-color, black));\n}\n.udp-button--text.udp-button--color-primary:hover {\n background-color: var(--host-udp-btn-text-primary-hover-bg, var(--primary-color-hint, lightgray));\n}\n\n/* Text - Secondary */\n.udp-button--text.udp-button--color-secondary {\n color: var(--host-udp-btn-text-secondary-text, var(--secondary-color, black));\n}\n.udp-button--text.udp-button--color-secondary:hover {\n background-color: var(--host-udp-btn-text-secondary-hover-bg, var(--secondary-color-hint, lightgray));\n}\n\n/* Text - Success */\n.udp-button--text.udp-button--color-success {\n color: var(--host-udp-btn-text-success-text, var(--success-color-main, green));\n}\n.udp-button--text.udp-button--color-success:hover {\n background-color: var(--host-udp-btn-text-success-hover-bg, var(--success-color-hint, lightgreen));\n}\n\n/* Text - Error */\n.udp-button--text.udp-button--color-error {\n color: var(--host-udp-btn-text-error-text, var(--error-color-main, red));\n}\n.udp-button--text.udp-button--color-error:hover {\n background-color: var(--host-udp-btn-text-error-hover-bg, var(--error-color-hint, lightpink));\n}\n\n/* Text - Warning */\n.udp-button--text.udp-button--color-warning {\n color: var(--host-udp-btn-text-warning-text, var(--warning-color-main, orange));\n}\n.udp-button--text.udp-button--color-warning:hover {\n background-color: var(--host-udp-btn-text-warning-hover-bg, var(--warning-color-hint, lightyellow));\n}\n\n/* Text - Info */\n.udp-button--text.udp-button--color-info {\n color: var(--host-udp-btn-text-info-text, var(--info-color-main, blue));\n}\n.udp-button--text.udp-button--color-info:hover {\n background-color: var(--host-udp-btn-text-info-hover-bg, var(--info-color-hint, lightblue));\n}\n\n\n/* Inherit color variant */\n.udp-button--color-inherit {\n color: var(--host-udp-btn-inherit-text, inherit);\n}\n.udp-button--text.udp-button--color-inherit:hover {\n background-color: var(--host-udp-btn-text-inherit-hover-bg, var(--gray-02, #e0e0e0));\n}\n.udp-button--outlined.udp-button--color-inherit {\n border-color: var(--host-udp-btn-outlined-inherit-border, currentColor);\n}\n.udp-button--outlined.udp-button--color-inherit:hover {\n background-color: var(--host-udp-btn-outlined-inherit-hover-bg, var(--gray-02, #e0e0e0));\n border-color: var(--host-udp-btn-outlined-inherit-hover-border, currentColor);\n}\n.udp-button--contained.udp-button--color-inherit {\n background-color: var(--host-udp-btn-contained-inherit-bg, var(--gray-03, #c0c0c0));\n color: var(--host-udp-btn-contained-inherit-text, var(--text-main, black));\n}\n.udp-button--contained.udp-button--color-inherit:hover {\n background-color: var(--host-udp-btn-contained-inherit-hover-bg, var(--gray-04, #b0b0b0));\n}\n\n\n/* --- Disabled State (applies to all variants) --- */\n.udp-button--disabled {\n cursor: not-allowed;\n pointer-events: none; /* Prevents click events */\n color: var(--host-udp-btn-disabled-general-text, var(--text-disabled, #a0a0a0)) !important;\n}\n\n/* Disabled Contained */\n.udp-button--contained.udp-button--disabled {\n background-color: var(--host-udp-btn-contained-disabled-bg, var(--disabled-color-main, #e0e0e0)) !important;\n color: var(--host-udp-btn-contained-disabled-text, var(--text-disabled, #a0a0a0)) !important;\n box-shadow: var(--host-udp-btn-contained-disabled-shadow, none) !important;\n}\n\n/* Disabled Outlined */\n.udp-button--outlined.udp-button--disabled {\n border-color: var(--host-udp-btn-outlined-disabled-border, var(--disabled-color-main, #e0e0e0)) !important;\n color: var(--host-udp-btn-outlined-disabled-text, var(--text-disabled, #a0a0a0)) !important; /* Explicitly set for outlined disabled text */\n}\n\n/* Disabled Text */\n.udp-button--text.udp-button--disabled {\n color: var(--host-udp-btn-text-disabled-text, var(--text-disabled, #a0a0a0)) !important;\n background-color: var(--host-udp-btn-text-disabled-bg, transparent) !important; /* Ensure text buttons remain transparent */\n}\n\n\n/* Ensure no hover/active effects when disabled by resetting properties potentially set by general hover/active rules */\n.udp-button--disabled:hover,\n.udp-button--disabled:active {\n /* These might need to be more specific if there are general hover/active styles on .udp-button not covered by variant styles */\n /* For now, variant-specific disabled styles handle most overrides. */\n /* Example of a general reset if needed:\n background-color: var(--host-udp-btn-disabled-general-bg-override, transparent) !important;\n box-shadow: var(--host-udp-btn-disabled-general-shadow-override, none) !important;\n */\n}\n\n/* Reset hover/active for contained disabled (already specific, but defensive) */\n.udp-button--contained.udp-button--disabled:hover,\n.udp-button--contained.udp-button--disabled:active {\n background-color: var(--host-udp-btn-contained-disabled-bg, var(--disabled-color-main, #e0e0e0)) !important;\n box-shadow: var(--host-udp-btn-contained-disabled-shadow, none) !important;\n}\n\n/* Reset hover/active for outlined disabled */\n.udp-button--outlined.udp-button--disabled:hover,\n.udp-button--outlined.udp-button--disabled:active {\n background-color: var(--host-udp-btn-outlined-disabled-hover-bg, transparent) !important; /* Usually no background for outlined hover when disabled */\n border-color: var(--host-udp-btn-outlined-disabled-border, var(--disabled-color-main, #e0e0e0)) !important;\n}\n\n/* Reset hover/active for text disabled */\n.udp-button--text.udp-button--disabled:hover,\n.udp-button--text.udp-button--disabled:active {\n background-color: var(--host-udp-btn-text-disabled-hover-bg, transparent) !important; /* Text buttons remain transparent */\n}\n\n/* --- Toolbar Layout --- */\n/* Applied when toolbarLayout prop is true. Can be combined with variants like text, outlined, contained. */\n.udp-button--toolbar-layout {\n flex-direction: column;\n justify-content: center; /* Center content vertically */\n align-items: center; /* Center content horizontally */\n padding: var(--host-udp-btn-toolbar-padding, var(--spacing-03)); /* Overall padding */\n /* Default to medium size for toolbar layout */\n width: var(--host-udp-btn-toolbar-fixed-size-medium, 80px);\n height: var(--host-udp-btn-toolbar-fixed-size-medium, 80px);\n gap: var(--host-udp-btn-toolbar-gap-medium, var(--spacing-01));\n\n /* Base appearance for toolbarLayout, if needed (user removed default border/bg) */\n /* border: 1px solid var(--host-udp-btn-toolbar-layout-base-border-color, transparent); */\n /* background-color: var(--host-udp-btn-toolbar-layout-base-bg, transparent); */\n}\n\n/* Icon styling within toolbarLayout - default (medium) */\n.udp-button--toolbar-layout .udp-button__icon svg {\n width: var(--host-udp-btn-toolbar-icon-size-medium, 2em);\n height: var(--host-udp-btn-toolbar-icon-size-medium, 2em);\n fill: currentColor;\n}\n\n/* Text content styling within toolbarLayout - default (medium) */\n.udp-button--toolbar-layout .udp-button__text-content {\n font-size: var(--host-udp-btn-toolbar-font-size-medium, var(--font-size-caption, 0.75rem));\n line-height: var(--host-udp-btn-toolbar-line-height-medium, var(--line-height-caption, 1.2));\n text-align: center;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n max-height: calc(var(--host-udp-btn-toolbar-line-height-medium, 1.2) * 2em);\n word-break: break-word;\n}\n\n/* Toolbar Layout - Small Size */\n.udp-button--toolbar-layout.udp-button--small {\n width: var(--host-udp-btn-toolbar-fixed-size-small, 60px);\n height: var(--host-udp-btn-toolbar-fixed-size-small, 60px);\n gap: var(--host-udp-btn-toolbar-gap-small, var(--spacing-01));\n padding: var(--host-udp-btn-toolbar-padding-small, var(--spacing-02));\n}\n.udp-button--toolbar-layout.udp-button--small .udp-button__icon svg {\n width: var(--host-udp-btn-toolbar-icon-size-small, 1.6em);\n height: var(--host-udp-btn-toolbar-icon-size-small, 1.6em);\n}\n.udp-button--toolbar-layout.udp-button--small .udp-button__text-content {\n font-size: var(--host-udp-btn-toolbar-font-size-small, calc(var(--font-size-caption, 0.75rem) * 0.9));\n line-height: var(--host-udp-btn-toolbar-line-height-small, var(--line-height-caption, 1.2));\n max-height: calc(var(--host-udp-btn-toolbar-line-height-small, 1.2) * 2em); /* Adjust max-height based on smaller font */\n}\n\n/* Toolbar Layout - Large Size */\n.udp-button--toolbar-layout.udp-button--large {\n width: var(--host-udp-btn-toolbar-fixed-size-large, 100px);\n height: var(--host-udp-btn-toolbar-fixed-size-large, 100px);\n gap: var(--host-udp-btn-toolbar-gap-large, var(--spacing-02));\n padding: var(--host-udp-btn-toolbar-padding-large, var(--spacing-04));\n}\n.udp-button--toolbar-layout.udp-button--large .udp-button__icon svg {\n width: var(--host-udp-btn-toolbar-icon-size-large, 2.4em);\n height: var(--host-udp-btn-toolbar-icon-size-large, 2.4em);\n}\n.udp-button--toolbar-layout.udp-button--large .udp-button__text-content {\n max-height: calc(var(--host-udp-btn-toolbar-line-height-large, 1.2) * 2em); /* Adjust max-height based on larger font */\n}\n\n/* Base hover/active for toolbarLayout (when variant=\"text\" or not strongly styled by other variants) */\n.udp-button--toolbar-layout:hover:not(.udp-button--contained):not(.udp-button--outlined) {\n background-color: var(--host-udp-btn-toolbar-layout-base-hover-bg, var(--gray-02, #e0e0e0));\n border-color: var(--host-udp-btn-toolbar-layout-base-hover-border-color, var(--gray-04, #b0b0b0));\n}\n.udp-button--toolbar-layout:active:not(.udp-button--contained):not(.udp-button--outlined) {\n background-color: var(--host-udp-btn-toolbar-layout-base-active-bg, var(--gray-03, #c0c0c0));\n}\n\n/* Inherit color variant */\n.udp-button--color-inherit {\n color: var(--host-udp-btn-inherit-text, inherit);\n}\n.udp-button--text.udp-button--color-inherit:hover {\n background-color: var(--host-udp-btn-text-inherit-hover-bg, var(--gray-02, #e0e0e0));\n}\n.udp-button--outlined.udp-button--color-inherit {\n border-color: var(--host-udp-btn-outlined-inherit-border, currentColor);\n}\n.udp-button--outlined.udp-button--color-inherit:hover {\n background-color: var(--host-udp-btn-outlined-inherit-hover-bg, var(--gray-02, #e0e0e0));\n border-color: var(--host-udp-btn-outlined-inherit-hover-border, currentColor);\n}\n.udp-button--contained.udp-button--color-inherit {\n background-color: var(--host-udp-btn-contained-inherit-bg, var(--gray-03, #c0c0c0));\n color: var(--host-udp-btn-contained-inherit-text, var(--text-main, black));\n}\n.udp-button--contained.udp-button--color-inherit:hover {\n background-color: var(--host-udp-btn-contained-inherit-hover-bg, var(--gray-04, #b0b0b0));\n} ","import { Component, Prop, h, Event, EventEmitter, Element } from '@stencil/core';\n\n/**\n * UdpButton is a versatile button component inspired by MUI, using global theme variables.\n * It aims to replace and improve upon the older `custom-button`.\n *\n * Features from `custom-button` and their `udp-button` equivalents:\n * - `label` prop from `custom-button`: Replaced by placing content directly within the\n * `<udp-button></udp-button>` tags (default slot).\n * - `variant='default'`: Maps to `udp-button`'s `variant='contained'`.\n * - `variant='outline'`: Maps to `udp-button`'s `variant='outlined'`.\n * - `secondary=true` (from `custom-button`): Similar to `udp-button`'s `variant='text'`\n * with a `color` prop (e.g., `color='secondary'` or `color='primary'`).\n * - `size`: Values 'short', 'default', 'tall' map to 'small', 'medium', 'large'.\n * - `type`, `disabled`: Directly supported.\n * - `customClick` (from `custom-button`): Replaced by the `click` event.\n *\n * New features:\n * - `startIcon`: Allows placing an icon (JSX/VNode) before the button text.\n * - `endIcon`: Allows placing an icon (JSX/VNode) after the button text.\n */\n@Component({\n tag: 'udp-button',\n styleUrl: 'udp-button.css',\n shadow: true,\n})\nexport class UdpButton {\n @Element() el: HTMLElement;\n\n /**\n * The variant to use.\n * - `text`: Typically used for less-pronounced actions.\n * - `outlined`: Emphasizes actions with a border.\n * - `contained`: High-emphasis, distinguished by a background color.\n */\n @Prop() variant: 'text' | 'outlined' | 'contained' = 'text';\n\n /**\n * If true, applies styling suitable for a toolbar button (e.g., icon above text, caption-style text).\n * This can be combined with other variants like 'text', 'outlined', or 'contained'.\n */\n @Prop() toolbarLayout: boolean = false;\n\n /**\n * The color of the component. It supports theming using global CSS variables.\n * `inherit` will inherit the color from its parent.\n */\n @Prop() color: 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' | 'inherit' = 'primary';\n\n /**\n * The size of the component.\n * `custom-button`'s 'short', 'default', 'tall' map to 'small', 'medium', 'large'.\n */\n @Prop() size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * If `true`, the component is disabled.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * The URL to link to when the button is clicked. If provided, the component renders as an `<a>` tag.\n */\n @Prop() href?: string;\n\n /**\n * If `true`, the button will take up the full width of its container.\n */\n @Prop() fullWidth: boolean = false;\n\n /**\n * The type of the button. Only used if `href` is not set.\n * Corresponds to the native `type` attribute of a `<button>` element.\n */\n @Prop() type: 'button' | 'submit' | 'reset' = 'button';\n\n /**\n * If provided, will display an icon before the button's content.\n * Accepts JSX (e.g., an <svg> element or another Stencil component).\n */\n @Prop() startIcon?: any;\n\n /**\n * If provided, will display an icon after the button's content.\n * Accepts JSX (e.g., an <svg> element or another Stencil component).\n */\n @Prop() endIcon?: any;\n\n /**\n * Emitted when the button is clicked.\n */\n @Event() click: EventEmitter<MouseEvent>;\n\n /**\n * Optional aria-label for accessibility.\n * If not provided, it defaults to null.\n */\n @Prop() ariaLabel: string | null = null;\n\n /**\n * Tabindex for accessibility.\n * Defaults to 0 if not disabled, and -1 if disabled.\n * If the user does not provide a value, it defaults to 0.\n */\n @Prop() tabIndex: number = 0;\n\n private handleClick = (event: MouseEvent) => {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n // If it's a submit button type and not a link, let the form handle submission.\n // For other types or if it's a link, prevent default if needed by consumers.\n if (this.type === 'submit' && !this.href) {\n // Allow native form submission\n }\n this.click.emit(event);\n event.stopPropagation();\n };\n\n render() {\n const TagType = this.href ? 'a' : 'button';\n\n const classMap = {\n 'udp-button': true,\n [`udp-button--${this.variant}`]: true,\n [`udp-button--toolbar-layout`]: this.toolbarLayout,\n [`udp-button--${this.size}`]: true,\n [`udp-button--color-${this.color}`]: this.color !== 'inherit',\n 'udp-button--disabled': this.disabled,\n 'udp-button--full-width': this.fullWidth,\n 'udp-button--has-start-icon': !!this.startIcon,\n 'udp-button--has-end-icon': !!this.endIcon,\n };\n\n const attributes: any = {\n class: Object.keys(classMap)\n .filter(key => classMap[key])\n .join(' '),\n disabled: this.disabled && !this.href, // disabled attribute not valid on <a>\n onClick: this.handleClick,\n };\n\n if (this.ariaLabel) {\n attributes['aria-label'] = this.ariaLabel;\n }\n\n attributes.tabindex = this.disabled ? -1 : this.tabIndex;\n\n if (this.href) {\n attributes.href = this.href;\n // Add rel=\"noopener noreferrer\" for security if target=\"_blank\" is used by consumer\n } else {\n attributes.type = this.type;\n }\n\n return (\n <TagType {...attributes}>\n {this.startIcon && (\n <span class=\"udp-button__icon udp-button__icon--start\" aria-hidden=\"true\">\n {this.startIcon}\n </span>\n )}\n <span class=\"udp-button__text-content\">\n <slot></slot>\n </span>\n {this.endIcon && (\n <span class=\"udp-button__icon udp-button__icon--end\" aria-hidden=\"true\">\n {this.endIcon}\n </span>\n )}\n </TagType>\n );\n }\n}\n",".header-container {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px;\n border-bottom: 1px solid #ccc;\n background-color: var(--accent-color-two);\n color: white;\n \n }\n \n .column, .operator, .criteria {\n flex: 1;\n text-align: left;\n padding: 4px;\n }\n ","import { Component, h } from '@stencil/core';\n\n@Component({\n tag: 'udp-column-header',\n styleUrl: 'udp-column-header.css',\n shadow: true\n})\nexport class UdpColumnHeader {\n render() {\n return (\n <div class=\"header-container\">\n <div class=\"column\"> <unity-typography variant=\"button\" >Column </unity-typography> </div>\n <div class=\"operator\"><unity-typography variant=\"button\" >Operator </unity-typography> </div>\n <div class=\"criteria\"><unity-typography variant=\"button\" >Criteria </unity-typography> </div>\n </div>\n );\n }\n}\n",":host {\n display: block;\n }\n \n .horizontal {\n width: 100%;\n height: 1px;\n background-color: rgba(0, 0, 0, 0.12);\n min-width: 1px;\n }\n \n .vertical {\n width: 1px;\n background-color: rgba(0, 0, 0, 0.12);\n min-height: 1px;\n }\n ","import { Component, Prop, h, Host } from '@stencil/core';\n\n@Component({\n tag: 'udp-divider',\n styleUrl: 'udp-divider.css',\n shadow: true,\n})\nexport class UdpDivider {\n @Prop() variant: 'horizontal' | 'vertical' = 'horizontal';\n @Prop() size: string; // new Prop for size\n\n render() {\n const style = this.variant === 'vertical'\n ? { height: this.size }\n : { width: this.size };\n\n return (\n <Host style={style}>\n <div class={this.variant === 'horizontal' ? 'horizontal' : 'vertical'}></div>\n </Host>\n );\n }\n}\n",".container {\n width: 100%;\n overflow: hidden;\n display: flex;\n flex-wrap: nowrap;\n flex: 1;\n min-width: 600px;\n /* background-color: azure; */\n }\n \n.menu {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.chips {\n display: flex; \n gap: 8px; \n flex-grow: 1;\n /* padding-top: 8px;\n padding-bottom: 8px; */\n}\n\n.overflow {\n display: flex;\n}","import { Component, State, h, Prop, Element, Watch, Method, Event, EventEmitter } from '@stencil/core';\n//import Menu16 from '@carbon/icons/es/menu/16';\n\nfunction debounce(func: (...args: any[]) => void, wait: number): (...args: any[]) => void {\n let timeout: NodeJS.Timeout | null = null;\n return (...args: any[]) => {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n func(...args);\n }, wait);\n };\n}\n\n@Component({\n tag: 'udp-dynamic-container-with-menu',\n styleUrl: 'udp-dynamic-container-with-menu.css',\n shadow: true,\n})\nexport class DynamicContainerWithMenu {\n @Element() el: HTMLElement;\n @State() visibleChildren: any[] | null = null;\n\n @State() menuChildren = [];\n @State() anchorEl: HTMLElement | null = null;\n containerWidth: number = 0;\n @State() rerender: number = 0;\n @State() renderReady: boolean = false; // a flag to indicate readiness to render\n @State() popoverOpen: boolean = false;\n @Prop() externalToggle: string = '';\n\n @Prop() menuItems: any[] = []; // renamed from children\n\n @Event() udpChipClicked: EventEmitter<string>;\n\n open: boolean = false;\n id: string = '';\n boundCalculateChildren: any;\n\n constructor() {\n this.boundCalculateChildren = debounce(this.calculateChildren.bind(this), 300);\n }\n \n// Was causing a loop when connected to the api\n // connectedCallback() {\n // this.calculateChildren();\n // }\n\n\n componentWillLoad() {\n // This lifecycle hook will be called before the first render,\n // ensuring calculateChildren is called before the component renders\n // this.calculateChildren();\n }\n\n componentWillUpdate() {\n // This lifecycle hook will be called before every update (re-render),\n // ensuring calculateChildren is called before the component re-renders\n // this.calculateChildren();\n }\n\n \n \n\n\n @Method()\n async calculateChildren() {\n if (!this.el.shadowRoot) return;\n \n console.log('Calculating children...');\n console.log('Menu Items:', JSON.stringify(this.menuItems));\n \n const container: HTMLElement | null = this.el.shadowRoot.querySelector('.container') ;\n console.log('Container:', container);\n\n\n \n if (container) {\n this.containerWidth = container.offsetWidth ;\n console.log('Container Width:', this.containerWidth);\n }\n \n let currentWidth = 0;\n const newVisibleChildren = [];\n const newMenuChildren = [];\n \n this.menuItems.forEach((child) => {\n if (child) {\n const childWidth = (child as any).props?.width || 100;\n // console.log(`Child[${index}] Width:`, childWidth);\n \n if (currentWidth + childWidth <= this.containerWidth) {\n currentWidth += childWidth;\n newVisibleChildren.push(child);\n } else {\n newMenuChildren.push(child);\n }\n }\n });\n\n \n this.visibleChildren = [...newVisibleChildren];\n this.menuChildren = [...newMenuChildren];\n this.rerender += 1;\n }\n \n\n @Watch('menuItems')\n childrenChanged() {\n this.calculateChildren();\n }\n\n async componentDidLoad() {\n // Existing logic\n await this.calculateChildren().then(() => {\n this.renderReady = true; // set the flag to true after calculating\n });\n window.addEventListener('resize', this.boundCalculateChildren);\n\n // New logic for listening to stencil-chip click events\n const chips = Array.from(document.querySelectorAll('stencil-chip'));\n chips.forEach(chip => {\n chip.addEventListener('chipClicked', (event: CustomEvent) => {\n // Forward this data to the upper-level parent\n const chipText = event.detail;\n this.handleChipClick(chipText);\n });\n });\n }\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.boundCalculateChildren);\n }\n\n // handlePopoverClick(event?: Event) {\n // if (!event) return;\n // this.anchorEl = event.target as HTMLElement;\n // this.open = Boolean(this.anchorEl);\n // this.id = this.open ? 'simple-popover' : undefined;\n // }\n\n // handlePopoverClose() {\n // this.anchorEl = null;\n // this.open = false;\n // }\n\n handlePopover = () => {\n this.popoverOpen = !this.popoverOpen;\n }\n\n\n // handleChipClick = (event: CustomEvent) => {\n // const chipLabel = event.detail;\n \n // }\n\n handleChipClick(chipText: string) {\n this.udpChipClicked.emit(chipText);\n }\n\n\n render() {\n \n return (\n <div class=\"container\">\n {/* <div class=\"chips\">\n {this.visibleChildren && this.visibleChildren.map((child, index) => (\n <stencil-chip color=\"secondary\" key={index} text={child.label} show-delete=\"false\" > </stencil-chip>\n ))}\n </div> */}\n\n<div class=\"chips\">\n{console.log('Received data for chips via executeQwith', this.visibleChildren)}\n {this.visibleChildren && this.visibleChildren.map((child, index) => (\n <stencil-chip\n color=\"secondary\"\n key={index}\n text={child.description\n }\n show-delete=\"false\"\n externalToggleString={this.externalToggle}\n >\n </stencil-chip>\n ))}\n \n </div>\n\n\n <div class=\"overflow\" >\n {/* @todo: overflow button commented out */}\n {/* <stencil-icon-button showLabel={false} icon={Menu16} onClick={this.handlePopover}></stencil-icon-button> */}\n <udp-pop-over isOpen={this.popoverOpen} anchorElement={document.getElementById('anchorElement')}>\n <div class=\"menu\" >\n {this.menuChildren && this.menuChildren.map((child, index) => (\n <stencil-chip key={index} text={child.label} show-delete=\"false\" > </stencil-chip>\n ))}\n </div>\n </udp-pop-over>\n \n </div> \n </div>\n );\n }\n \n \n\n}\n",".udp-btn {\n border: 0;\n border-radius: 50%;\n padding: 1px 3px;\n cursor: pointer;\n background-color: var(--accent-color-three);\n transition: background-color 0.3s;\n}\n\n.udp-btn.no-bg {\n background-color: transparent; /* Override for no background */\n}\n\n.udp-btn:hover {\n background-color: #f0f0f0; \n}\n\n.btn-content {\n color: var(--accent-color-four)\n}\n\n.btn-content svg {\n fill: currentColor; \n}\n","import { Component, Prop, h } from '@stencil/core';\nimport './udp-function-button.css';\nimport AddIcon16 from '@carbon/icons/es/add/16';\nimport ChevronDownIcon24 from '@carbon/icons/es/chevron--down/16';\nimport View16 from '@carbon/icons/es/view/16';\nimport TrashCan16 from '@carbon/icons/es/trash-can/16';\n// import FlagFilled16 from '@carbon/icons/es/flag--filled/16'\nimport Star16 from '@carbon/icons/es/star/16';\nimport StarFilled16 from '@carbon/icons/es/star--filled/16';\nimport Edit16 from '@carbon/icons/es/edit/16'\n\n@Component({\n tag: 'udp-function-button',\n styleUrl: 'udp-function-button.css',\n shadow: true\n})\nexport class UdpFunctionButton {\n @Prop() expand: boolean = false;\n @Prop() view: boolean = false; \n @Prop() add: boolean = false; \n @Prop() edit: boolean = false;\n @Prop() delete: boolean = false; \n @Prop() isDefault: boolean = false;\n @Prop() noBackground: boolean = false; // New property for controlling background\n\n renderIcon() {\n let icon;\n let iconStyles = {};\n\n if (this.delete) {\n icon = TrashCan16;\n iconStyles = { padding: '5px' }; \n } else if (this.view) {\n icon = View16;\n iconStyles = { padding: '5px' }; \n } else if (this.isDefault) {\n icon = StarFilled16;\n iconStyles = { padding: '5px' };\n } else if (this.add) {\n icon = AddIcon16; \n iconStyles = { padding: '5px' };\n } else if (this.edit) {\n icon = Edit16; \n iconStyles = { padding: '5px' };\n } else if (this.expand) { \n icon = ChevronDownIcon24; \n iconStyles = { padding: '5px', color: 'black'}; \n } else {\n icon = Star16;\n iconStyles = { padding: '5px' };\n }\n \n return (\n <svg {...icon.attrs} style={iconStyles}>\n {icon.content.map((item, index) => {\n if (item.elem === 'path') {\n return <path {...item.attrs} key={index} />;\n }\n return null;\n })}\n </svg>\n );\n }\n\n render() {\n const btnClass = this.noBackground ? 'udp-btn no-bg' : 'udp-btn';\n return (\n <button class={btnClass}>\n <span class=\"btn-content\">\n {this.renderIcon()}\n </span>\n </button>\n );\n }\n}\n\n",":host {\n display: block;\n }\n \n .grid-row {\n display: flex;\n justify-content: space-between;\n }\n \n udp-skeleton-loading {\n flex-grow: 1;\n margin: 2px;\n }\n ","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'udp-grid-loader',\n styleUrl: 'udp-grid-loader.css',\n shadow: true\n})\nexport class UdpGridLoader {\n @Prop() numColumns: number = 8;\n @Prop() numRows: number = 5; // Default number of rows\n @Prop() width: string = 'calc(100vw - 70px)';\n\n render() {\n // Header bar (fatter, divided into columns)\n const headerBar = (\n <div class=\"grid-row\">\n {Array.from({ length: this.numColumns }).map(() => (\n <udp-skeleton-loading width=\"100%\" height=\"55px\"></udp-skeleton-loading>\n ))}\n </div>\n );\n\n // Row bars (each divided into columns)\n const rowBars = Array.from({ length: this.numRows }).map(() => (\n <div class=\"grid-row\">\n {Array.from({ length: this.numColumns }).map(() => (\n <udp-skeleton-loading width=\"100%\" height=\"30px\"></udp-skeleton-loading>\n ))}\n </div>\n ));\n\n return (\n <div style={{width: this.width }} >\n {headerBar}\n {rowBars}\n </div>\n );\n }\n}\n",".submit-button {\n margin-top: 18px;\n display: flex;\n justify-content: flex-end;\n margin-right: 24px;\n gap: 8px;\n}\n\n.wrapper {\n border-bottom: 1px solid #d9d9d9;\n padding-bottom: 16px;\n margin-bottom: 10px;\n width: 480px;\n}","import { Component, Prop, h, State, Element } from '@stencil/core';\n\n@Component({\n tag: 'udp-hotlist-form',\n styleUrl: 'udp-hotlist-form.css',\n shadow: true,\n})\nexport class UdpHotlistForm {\n @Element() el: HTMLElement;\n @Prop() refetchViews: () => void;\n @Prop() handleFormSubmit: (name: string, isPrivate: boolean, columnState: any) => void;\n @Prop() handleCancelClick: () => void;\n\n @State() name: string = '';\n @State() isPrivate: boolean = false;\n // Add a state or prop for columnState\n @State() columnState: any; // Adjust this according to your needs\n\n handleNameChange = (event) => {\n this.name = event.target.value;\n };\n\n handlePrivateChange = () => {\n this.isPrivate = !this.isPrivate;\n };\n\n// Refreshes the page\n// handleSubmit = () => {\n// // Now passing columnState as well\n// this.handleFormSubmit(this.name, this.isPrivate, this.columnState);\n// };\n\n\nhandleSubmit = (event: Event) => {\n event.preventDefault();\n this.handleFormSubmit(this.name, this.isPrivate, this.columnState);\n };\n\n // Handling custom button click\n onCustomButtonClick = () => {\n this.handleFormSubmit(this.name, this.isPrivate, this.columnState);\n };\n\n\n// handleCancelClick = () => {\n// console.log('Cancel button clicked');\n// }\n\n render() {\n return (\n <div class=\"wrapper\" >\n <form class=\"save-form\" onSubmit={this.handleSubmit}>\n <text-field\n label=\"Hotlist Name\"\n placeholder=\"Create a name for your Hotlist\"\n value={this.name}\n onChange={(event: any) => this.handleNameChange(event)}\n ></text-field>\n <stencil-toggle\n label=\"Private\"\n checked={this.isPrivate}\n onToggledChange={this.handlePrivateChange}\n ></stencil-toggle>\n {/* <button type=\"submit\">Save List</button> */}\n <div class=\"submit-button\" >\n <custom-button\n variant='outline'\n type=\"submit\"\n onCustomClick={this.handleCancelClick}>\n Cancel\n </custom-button>\n <custom-button\n disabled={!this.name}\n type=\"submit\"\n onCustomClick={this.onCustomButtonClick}>\n Create List\n </custom-button>\n </div>\n\n </form>\n </div>\n );\n }\n}\n\n\n",".icon-container{\n height: 100%;\n display: flex;\n align-items: center;\n color: inherit;\n}","import { Component, h, Prop } from '@stencil/core';\nimport { getIconFromName } from './iconUtils';\n\n@Component({\n tag: 'udp-icon',\n styleUrl: 'udp-icon.css',\n shadow: true,\n})\nexport class UdpIcon {\n @Prop() iconName: string;\n @Prop() iconType: string = 'carbon';\n /**\n * @deprecated Use color prop instead\n */\n @Prop() darkIcon: boolean = true;\n @Prop() color: 'primary' | 'secondary' | 'error' | 'info' | 'success' | 'inherit' | string;\n\n render() {\n const iconData = getIconFromName(this.iconName, this.iconType);\n let iconColor: string;\n\n if (this.color) {\n switch (this.color) {\n case 'primary':\n iconColor = 'var(--primary-color)';\n break;\n case 'secondary':\n iconColor = 'var(--secondary-color)';\n break;\n case 'error':\n iconColor = 'var(--error-color-main)';\n break;\n case 'info':\n iconColor = 'var(--info-color-main)';\n break;\n case 'success':\n iconColor = 'var(--success-color-main)';\n break;\n case 'inherit':\n iconColor = 'currentColor';\n break;\n default:\n iconColor = this.color;\n }\n } else {\n iconColor = this.darkIcon ? 'black' : 'white';\n }\n\n return (\n <div class=\"icon-container\">\n <svg {...(iconData?.attrs ?? {})} fill={iconColor}>\n {iconData?.content?.map((item, index) => {\n if (item?.elem === 'path') {\n return <path {...(item?.attrs ?? {})} key={index} />;\n } else if (item?.elem === 'circle') {\n return <circle {...(item?.attrs ?? {})} key={index} />;\n }\n return null;\n })}\n </svg>\n </div>\n );\n }\n}\n",".loader {\n position: relative;\n width: 100%;\n height: 4px;\n background-color: #e0e0e0;\n }\n \n .indeterminate {\n background-color: var(--primary-color);\n position: absolute;\n width: 50%;\n height: 100%;\n animation: indeterminate 2s linear infinite;\n }\n \n @keyframes indeterminate {\n 0% {\n left: -50%;\n }\n 50% {\n left: 100%;\n width: 100%;\n }\n 100% {\n left: 100%;\n width: 50%;\n }\n }\n ","import { Component, h, Host } from '@stencil/core';\nimport './udp-linear-loader.css';\n\n@Component({\n tag: 'udp-linear-loader',\n styleUrl: 'udp-linear-loader.css',\n shadow: true,\n})\nexport class UdpLinearLoader {\n render() {\n return (\n <Host>\n <div class=\"loader\">\n <div class=\"indeterminate\"></div>\n </div>\n </Host>\n );\n }\n}\n",".menu-item-root {\n padding: 8px 16px;\n cursor: pointer;\n transition: background-color 0.3s ease-in-out;\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.menu-item-root:hover {\n background-color: rgba(0, 0, 0, 0.1);\n}\n\n.menu-item-label {\n font-size: 14px;\n}\n\n.menu-item-root[disabled] {\n pointer-events: none;\n opacity: 0.4;\n}\n\n.menu-icon {\n height: 100%;\n text-align: center;\n}\n\n.menu-icon[disabled] {\n opacity: 0.4;\n}\n","// udp-menu-item.tsx\nimport { Component, Prop, h, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'udp-menu-item',\n styleUrl: 'udp-menu-item.css',\n shadow: true\n})\nexport class UdpMenuItem {\n @Prop() label: string;\n @Prop() handleOnClick: (e: Event) => void;\n @Prop() iconName: string;\n @Prop() disabled: boolean = false;\n\n @Event() itemClick: EventEmitter;\n\n handleItemClick = (e: Event) => {\n if (this.handleOnClick) {\n this.handleOnClick(e);\n }\n this.itemClick.emit();\n }\n\n render() {\n return (\n <div \n class=\"menu-item-root\" \n onClick={this.handleItemClick}\n id={\"udpRecord-udp-menu-item-ItemClick\"}\n //@ts-ignore\n udprecordid={\"udpRecord-udp-menu-item-ItemClick\"}\n disabled={this.disabled}\n >\n {this.iconName && <udp-icon iconName={this.iconName} class=\"menu-icon\"/>}\n <span class=\"menu-item-label\">\n <unity-typography variant='button' > {this.label} </unity-typography> \n </span>\n </div>\n );\n }\n}\n","/* src/components/udp-notification/udp-notification.css */\n\n:host {\n position: fixed;\n top: 1rem;\n right: 1rem;\n z-index: 1000;\n display: block; /* Ensure that :host is not display: inline by default */\n }\n \n .udp-notification {\n min-width: 250px; /* or any other dimension you prefer */\n margin: 0.5rem;\n padding: 0.5rem 1rem;\n border-radius: 4px; /* Carbon design system notification style */\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); /* Optional: add shadow for better visibility */\n display: flex;\n align-items: center;\n justify-content: space-between;\n transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;\n transform: translateY(-100%);\n opacity: 0;\n visibility: hidden;\n background-color: #f4f4f4; /* Default background; replace with your preferred default */\n }\n \n .visible {\n transform: translateY(0);\n opacity: 1;\n visibility: visible;\n }\n \n .status-success {\n border-left: 4px solid #5aa700; /* Success color */\n }\n \n .status-error {\n border-left: 4px solid #e0182d; /* Error color */\n }\n \n .status-warning {\n border-left: 4px solid #ff832b; /* Warning color */\n }\n \n .message {\n flex: 1;\n padding: 0 1rem;\n }\n \n .close-button {\n background: none;\n border: none;\n font-size: 1.5rem;\n cursor: pointer;\n }\n \n /* Rest of your styles... */\n ","// src/components/udp-notification/udp-notification.tsx\n\nimport { Component, Prop, h, Watch } from '@stencil/core';\n\n@Component({\n tag: 'udp-notification',\n styleUrl: 'udp-notification.css',\n shadow: true\n})\nexport class UdpNotification {\n @Prop() message: string;\n @Prop() status: 'success' | 'error' | 'warning';\n @Prop() userCancel: boolean = false;\n @Prop({ mutable: true, reflect: true }) active: boolean = false;\n\n @Watch('active')\n activeChanged(newValue: boolean) {\n if (newValue && !this.userCancel) {\n // Hide the notification after 3 seconds only if userCancel is false\n setTimeout(() => this.active = false, 3000);\n }\n }\n \n render() {\n const statusClass = `status-${this.status}`;\n \n return (\n <div class={{\n 'udp-notification': true,\n 'visible': this.active,\n [statusClass]: true // This will apply the correct class based on the status\n }}>\n {this.userCancel && (\n <button class=\"close-button\" onClick={() => this.active = false}>\n &times;\n </button>\n )}\n <span class=\"message\"> <unity-typography variant='body' > {this.message} </unity-typography></span>\n </div>\n );\n }\n \n}\n",".header-container {\n display: flex;\n width: 100%;\n padding: 16px;\n padding-left: 0px\n}\n\n.title {\n flex: 1;\n width: 100%;\n display: 'none';\n}\n\n.radio-group {\n display: flex;\n gap: 16px;\n}","import { Component, h, Event, EventEmitter, State } from '@stencil/core';\n\n@Component({\n tag: 'udp-page-header',\n styleUrl: 'udp-page-header.css',\n shadow: true\n})\nexport class UdpColumnHeader {\n \n @Event() valueChanged: EventEmitter;\n @State() selectedValue: string = '1'; // '1' corresponds to the \"And\" radio button\n\n radioClicked(value: string) {\n this.selectedValue = value;\n this.valueChanged.emit(value);\n }\n\n render() {\n return (\n <div class=\"header-container\">\n <div class=\"title\"> \n <unity-typography variant=\"button\">Filter Conditions </unity-typography> \n </div>\n <div class=\"radio-group\"> \n <div onClick={() => this.radioClicked('1')}>\n <udp-radio-button name=\"group1\" value=\"1\" label=\"And\" checked={this.selectedValue === '1'}></udp-radio-button>\n </div>\n <div onClick={() => this.radioClicked('2')}>\n <udp-radio-button name=\"group1\" value=\"2\" label=\"Or\" checked={this.selectedValue === '2'}></udp-radio-button>\n </div> \n </div>\n </div>\n );\n }\n}\n",".popover {\n background-color: white;\n border: 1px solid #ccc;\n padding: 10px;\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.1);\n z-index: 1000;\n}\n\n.popover[data-popper-reference-hidden] {\n visibility: hidden;\n pointer-events: none;\n}\n\n.no-padding {\n padding: 0;\n}\n","import { createPopper } from '@popperjs/core';\nimport { Component, h, Prop, Element, Watch } from '@stencil/core';\nimport { PopoverPlacement } from './interfaces/popoverInterfaces';\n\n@Component({\n tag: 'udp-pop-over',\n styleUrl: 'udp-pop-over.css',\n shadow: true,\n})\nexport class UdpPopOver {\n @Prop({ mutable: true }) isOpen: boolean = false;\n @Prop() anchorElement: HTMLElement;\n @Prop() popoverWidth: string;\n @Prop() popoverMaxHeight: string;\n @Prop() handleOnClose: (event: Event) => void;\n @Prop() popoverPlacement: PopoverPlacement = 'bottom-end';\n @Prop() overflow = 'auto';\n @Prop() noPadding? = false;\n @Element() el: HTMLElement;\n popoverInstance: any;\n\n componentWillLoad() {\n if (this.isOpen) {\n document.addEventListener('click', this.handleClose);\n } else {\n document.removeEventListener('click', this.handleClose);\n }\n }\n\n @Watch('isOpen')\n watchHandler(newValue: boolean, oldValue: boolean) {\n if (newValue) {\n document.addEventListener('click', this.handleClose);\n } else {\n document.removeEventListener('click', this.handleClose);\n if (oldValue && this.handleOnClose) {\n this.handleOnClose(new Event('close'));\n }\n }\n }\n\n handleClose = (event?: Event) => {\n const path = event.composedPath();\n if (path.includes(this.el) || path.includes(this.anchorElement)) {\n return; // Clicked inside, do nothing\n }\n document.removeEventListener('click', this.handleClose);\n this.isOpen = false;\n };\n\n createPopperInstance() {\n if (this.anchorElement) {\n this.popoverInstance = createPopper(this.anchorElement, this.el.shadowRoot.querySelector('.popover'), {\n placement: this.popoverPlacement,\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 5],\n },\n },\n ],\n });\n }\n }\n\n componentDidLoad() {\n if (this.popoverInstance) {\n this.popoverInstance?.update();\n } else {\n this.createPopperInstance();\n }\n }\n\n disconnectedCallback() {\n if (this.popoverInstance) {\n this.popoverInstance.destroy();\n }\n }\n\n render() {\n const style = {\n display: this.isOpen ? 'block' : 'none',\n position: 'absolute',\n width: this.popoverWidth,\n maxHeight: this.popoverMaxHeight,\n overflow: this.overflow,\n };\n\n return (\n <div class={{ 'popover': true, 'no-padding': this.noPadding }} style={style}>\n <slot></slot>\n </div>\n );\n }\n}\n",".popover {\n background-color: white;\n border: 1px solid #ccc;\n padding: 10px;\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.1);\n z-index: 1000;\n position: relative\n }\n ","import { Component, h, Prop, Element, Watch } from '@stencil/core';\n\n@Component({\n tag: 'udp-pop-over-grid-action-header',\n styleUrl: 'udp-pop-over-grid-action-header.css',\n shadow: true,\n})\nexport class UdpPopOver {\n @Prop() isOpen: boolean = false;\n @Prop() anchorElement: HTMLElement;\n\n @Element() el: HTMLElement;\n\n componentWillLoad() {\n if (this.isOpen) {\n document.addEventListener('click', this.handleClose);\n }\n document.removeEventListener('click', this.handleClose);\n }\n\n @Watch('isOpen')\n watchHandler(newValue: boolean) {\n if (newValue) {\n document.addEventListener('click', this.handleClose);\n } else {\n document.removeEventListener('click', this.handleClose);\n }\n }\n\n handleClose = (event?: Event) => {\n if (event && this.el.shadowRoot.contains(event.target as Node)) {\n return; // Clicked inside, do nothing\n }\n this.isOpen = false;\n document.removeEventListener('click', this.handleClose);\n };\n\n render() {\n const style = {\n display: this.isOpen ? 'block' : 'none',\n position: 'absolute',\n right: '6px',\n };\n\n if (this.anchorElement) {\n const rect = this.anchorElement.getBoundingClientRect();\n style['top'] = `${rect.bottom}px`;\n style['left'] = `${rect.left}px`;\n }\n\n return (\n <div class=\"popover\" style={style}>\n <unity-typography variant=\"caption-text\">\n <slot></slot>\n </unity-typography>\n </div>\n );\n }\n}\n",".udp-radio-button {\n display: inline-flex;\n align-items: center;\n }\n \n input[type=\"radio\"] {\n opacity: 0;\n width: 0;\n height: 0;\n margin: 0;\n z-index: -1;\n \n }\n \n input[type=\"radio\"] + label {\n position: relative;\n padding-left: 20px; /* Space for custom radio */\n cursor: pointer;\n font-size: 16px;\n font-family: 'Roboto', sans-serif;\n }\n \n /* Custom radio button */\n input[type=\"radio\"] + label:before {\n content: \"\";\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 17px;\n height: 17px;\n border: 1px solid #000;\n border-radius: 50%;\n }\n \n /* Checked state */\n input[type=\"radio\"]:checked + label:after {\n content: \"\";\n position: absolute;\n left: 4px;\n top: 50%;\n transform: translateY(-50%);\n width: 10px;\n height: 10px;\n background-color: #000;\n border-radius: 50%;\n }\n \n /* Disabled state */\n input[type=\"radio\"]:disabled + label {\n opacity: 0.5;\n cursor: not-allowed;\n }\n ","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'udp-radio-button',\n styleUrl: 'udp-radio-button.css',\n shadow: false\n})\nexport class UdpRadioButton {\n \n @Prop() name: string;\n @Prop() value: string;\n @Prop() checked: boolean = false;\n @Prop() disabled: boolean = false;\n @Prop() label: string;\n\n render() {\n return (\n <div class=\"udp-radio-button\">\n {/* Moved input and label out of shadow root */}\n <slot>\n <input \n type=\"radio\" \n name={this.name} \n value={this.value}\n checked={this.checked}\n disabled={this.disabled}\n id={`radio-${this.name}-${this.value}`}\n />\n <label htmlFor={`radio-${this.name}-${this.value}`}> <unity-typography variant='caption-text' > {this.label} </unity-typography> </label>\n </slot>\n </div>\n );\n }\n}\n","@import '../inputs.css';\n\n/* UDP Selector specific styles */\n\n/* Size variants for selector */\n:host(.udp-input--size-small) .selected-option {\n padding: var(--spacing-02);\n padding-bottom: 6px;\n font-size: var(--caption-font-size, 0.875rem);\n}\n\n:host(.udp-input--size-normal) .selected-option {\n padding: var(--spacing-03);\n padding-bottom: 9px;\n font-size: var(--body-font-size);\n}\n\n:host(.udp-input--size-large) .selected-option {\n padding: var(--spacing-04);\n padding-bottom: 12px;\n font-size: var(--body-font-size);\n}\n\n.selected-option {\n border: none;\n border-bottom: var(--underline-standard) solid var(--input-underline-color, var(--gray-08));\n box-sizing: border-box;\n cursor: pointer;\n background-color: var(--input-background);\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--spacing-03);\n padding-bottom: 9px;\n width: 100%;\n font-size: var(--body-font-size);\n font-family: var(--font-family);\n transition: border-bottom-color 0.15s ease-in-out;\n}\n\n.selected-option:active,\n.selected-option:focus,\n.selected-option.focused {\n outline: none;\n border-bottom-color: var(--input-underline-color-focus, var(--primary-color));\n border-bottom-width: 2px;\n}\n\n/* Error state for selector */\n:host(.udp-input--error) .selected-option,\n:host(.udp-input--error) .selected-option:focus,\n:host(.udp-input--error) .selected-option:active,\n:host(.udp-input--error) .selected-option.focused {\n border-bottom-color: var(--input-underline-color-error, var(--error-color-main)) !important;\n}\n\n/* Disabled state for selector */\n:host(.udp-input--disabled) .selected-option {\n border-bottom-color: var(--input-underline-color-disabled, var(--gray-08));\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.selected-option-label {\n flex-grow: 1;\n color: var(--ag-foreground-color, #000);\n}\n\n.selected-option-label.placeholder {\n color: var(--placeholder-color, #999);\n}\n\n.udp-selector--large .selected-option {\n background-color: var(--gray-08);\n color: white;\n width: 60px;\n padding: var(--spacing-05);\n box-shadow: var(--elevation-08);\n width: 100px;\n border-radius: 50px;\n font-size: var(--body-font-size);\n}\n\n.arrow {\n position: relative;\n display: inline-block;\n width: 10px;\n height: 5px;\n}\n\n.arrow::before,\n.arrow::after {\n content: '';\n position: absolute;\n bottom: 0;\n width: 0.6em;\n height: 10px;\n border-bottom: var(--underline-standard) solid var(--gray-09);\n}\n\n.udp-selector--large .selected-option .arrow::before,\n.udp-selector--large .selected-option .arrow::after {\n border-bottom: 1px solid white;\n}\n\n.arrow::before {\n left: -0.1em;\n transform: rotate(-45deg);\n}\n\n.arrow::after {\n /* left: 0.5em; */\n transform: rotate(45deg);\n}\n\n.udp-selector__container {\n position: relative;\n}\n\n.options-list {\n max-width: 100%;\n border: none;\n margin: 4px 0 0 0;\n padding: 0;\n list-style: none;\n z-index: 9999;\n max-height: 150px;\n overflow-y: auto;\n overflow-x: hidden;\n border-radius: var(--border-radius);\n box-shadow: var(--elevation-08);\n position: absolute;\n width: 100%;\n box-sizing: border-box;\n}\n\n.options-list li {\n position: relative;\n padding: 10px;\n cursor: pointer;\n background-color: var(--input-background);\n}\n\n.options-list li:hover {\n background-color: var(--primary-color);\n color: white;\n}\n","import { Component, Prop, State, h, Watch, Element, Listen, Host } from '@stencil/core';\nimport { createPopper, Instance as PopperInstance } from '@popperjs/core';\nimport { InputSize, InputMargin } from '../input-types';\n\n/**\n * A standardized selector component with single/multi-select support and various display options.\n * Supports both controlled and uncontrolled modes.\n *\n * This component emits a custom `change` event with the committed value and also\n * propagates standard DOM events like `input`, `focus`, and `blur` from the\n * underlying input element.\n *\n * @example\n * ```tsx\n * // Uncontrolled component with initial selection\n * <udp-selector\n * options={[{ value: '1', label: 'Option 1' }, { value: '2', label: 'Option 2' } ]}\n * initialValue=\"1\"\n * label=\"Select an option\"\n * onChange={(e) => console.log('Selected:', e.detail)}\n * />\n *\n * // Controlled component with multi-select\n * <udp-selector\n * options={[{ value: 'a', label: 'Apple' }, { value: 'b', label: 'Banana' } ]}\n * value={selectedFruits}\n * multiSelect={true}\n * label=\"Select fruits\"\n * onChange={(e) => setSelectedFruits(e.detail)}\n * />\n *\n * // With validation and density\n * <udp-selector\n * options={[{ value: 'x', label: 'X-ray' }, { value: 'y', label: 'Yacht' } ]}\n * label=\"Choose type\"\n * required={true}\n * error={selectionError}\n * density=\"dense\"\n * onChange={handleTypeChange}\n * />\n * ```\n */\n@Component({\n tag: 'udp-selector',\n styleUrl: 'udp-selector.css',\n shadow: true,\n})\nexport class UdpSelector {\n @Element() el: HTMLElement;\n\n /**\n * Array of options to display in the selector. Each option should be an object with `value` and `label` properties.\n */\n @Prop() options: Array<{ value: string; label: string }> = [];\n\n /**\n * Initial value for the selector. Used for uncontrolled components to set the default selection.\n * For multi-select, use comma-separated values (e.g., \"1,2,3\").\n * Only used when `value` prop is not provided.\n */\n @Prop() initialValue: string;\n\n /**\n * Current value of the selector. When provided, makes this a controlled component.\n * For multi-select, use comma-separated values (e.g., \"1,2,3\").\n * The component will use this value and update it through events.\n */\n @Prop({ mutable: true }) value: string;\n\n /**\n * Whether the selector should display in a large style.\n */\n @Prop() large: boolean = false;\n\n /**\n * Whether multiple items can be selected. When false, only one item can be selected at a time.\n */\n @Prop() multiSelect: boolean = false;\n\n /**\n * Name attribute for form submission. Used for form data collection.\n */\n @Prop() name: string;\n\n /**\n * Label text displayed above the selector. Used for accessibility and user guidance.\n */\n @Prop() label: string;\n\n /**\n * Error message to display below the selector. Shows validation errors or other issues.\n */\n @Prop() error: string;\n\n /**\n * Whether the field is required for form submission. Adds validation behavior.\n */\n @Prop() required: boolean;\n\n /**\n * Unique identifier for the selector element. Used for form association and accessibility.\n */\n @Prop() id: string;\n\n /**\n * Whether the selector is disabled. Users cannot interact with the selector when disabled.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Whether the selector is in a read-only state. Users can see the value but cannot modify it.\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Size variant controlling the padding and spacing of the selector.\n * - 'small': Compact spacing for data-heavy interfaces\n * - 'normal': Standard spacing (default)\n * - 'large': Generous spacing for accessibility\n */\n @Prop() size: InputSize = 'normal';\n\n /**\n * Margin variant for the input spacing.\n * - 'none': No margin\n * - 'dense': Minimal margin spacing\n * - 'normal': Standard margin spacing (default)\n */\n @Prop() margin: InputMargin = 'normal';\n\n /**\n * Internal state to control the visibility of the dropdown options.\n * @internal\n */\n @State() isOpen = false;\n\n /**\n * Internal state to manage selected options for multi-select mode.\n * @internal\n */\n @State() selectedOptions: Array<{ value: string; label: string }> = [];\n\n /**\n * Internal state to manage the selected option for single-select mode.\n * @internal\n */\n @State() selectedOption: { value: string; label: string } | null = null;\n\n /**\n * Internal error message state. Manages display of validation errors.\n * @internal\n */\n @State() errorMessage: string;\n\n private popperInstance: PopperInstance;\n\n /**\n * Updates the error message when the error prop changes.\n * @internal\n */\n @Watch('error')\n updateError() {\n this.errorMessage = this.error;\n }\n\n /**\n * Updates the selection when the `initialValue` prop changes.\n * @param newValue - The new initial value.\n * @internal\n */\n @Watch('initialValue')\n initialValueChanged(newValue: string) {\n if (newValue !== undefined) {\n this.setSelectionFromValue(newValue);\n }\n }\n\n /**\n * Updates the selection when the `value` prop changes.\n * @internal\n */\n @Watch('value')\n valueChanged() {\n if (this.value !== undefined) {\n this.setSelectionFromValue(this.value);\n }\n }\n\n /**\n * Handles clicks outside the component to close the dropdown.\n * @param event - The mouse event.\n * @internal\n */\n @Listen('click', { target: 'document' })\n handleClickOutside(event: MouseEvent) {\n if (this.isOpen && !event.composedPath().includes(this.el)) {\n this.isOpen = false;\n }\n }\n\n /**\n * Component lifecycle method. Initializes error message and selection state.\n * @internal\n */\n componentWillLoad() {\n if (this.error) {\n this.errorMessage = this.error;\n }\n\n const initValue = this.initialValue || this.value;\n if (initValue) {\n this.setSelectionFromValue(initValue);\n }\n }\n\n /**\n * Component lifecycle method. Destroys the Popper.js instance when the component is removed from the DOM.\n * @internal\n */\n disconnectedCallback() {\n this.destroyPopper();\n }\n\n /**\n * Handles the blur event on the selector. Delays closing the dropdown to allow option clicks.\n * @internal\n */\n handleBlur = () => {\n setTimeout(() => {\n this.isOpen = false;\n }, 200);\n };\n\n /**\n * Prevents the blur event on the main input when an option is clicked.\n * @param event - The mouse event.\n * @internal\n */\n handleOptionMouseDown = (event: MouseEvent) => {\n event.preventDefault();\n };\n\n /**\n * Watches for changes in the `isOpen` state and sets up/destroys the Popper.js instance accordingly.\n * @param isOpen - The new state of `isOpen`.\n * @internal\n */\n @Watch('isOpen')\n handleOpenChange(isOpen: boolean) {\n if (isOpen) {\n requestAnimationFrame(() => this.setupPopper());\n } else {\n this.destroyPopper();\n }\n }\n\n /**\n * Toggles the visibility of the dropdown options.\n * @internal\n */\n toggleDropdown() {\n if (this.disabled || this.readonly) {\n return;\n }\n this.isOpen = !this.isOpen;\n }\n\n /**\n * Sets up the Popper.js instance for positioning the dropdown.\n * @internal\n */\n setupPopper() {\n const referenceEl = this.el.shadowRoot.querySelector('.selected-option');\n const popperEl = this.el.shadowRoot.querySelector('.options-list');\n\n if (referenceEl && popperEl) {\n this.popperInstance = createPopper(referenceEl, popperEl as HTMLElement, {\n strategy: 'fixed',\n placement: 'bottom-start',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 4],\n },\n },\n {\n name: 'preventOverflow',\n options: {\n padding: 8,\n },\n },\n {\n name: 'flip',\n },\n {\n name: 'sameWidth',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: ({ state }) => {\n state.styles.popper.width = `${state.rects.reference.width}px`;\n },\n },\n ],\n });\n }\n }\n\n /**\n * Destroys the Popper.js instance.\n * @internal\n */\n destroyPopper() {\n if (this.popperInstance) {\n this.popperInstance.destroy();\n this.popperInstance = null;\n }\n }\n\n /**\n * Sets the selected option(s) based on a provided value string.\n * @param value - The value string (comma-separated for multi-select).\n * @internal\n */\n setSelectionFromValue(value: string) {\n if (!value || this.options.length === 0) {\n if (this.multiSelect) {\n this.selectedOptions = [];\n } else {\n this.selectedOption = null;\n }\n return;\n }\n\n if (this.multiSelect) {\n const values = value.split(',').map(v => v.trim()).filter(v => v);\n this.selectedOptions = this.options.filter(option => values.includes(option.value));\n } else {\n const option = this.options.find(opt => opt.value === value);\n this.selectedOption = option || null;\n }\n }\n\n /**\n * Re-applies the current selection when the `options` prop changes.\n * @internal\n */\n @Watch('options')\n optionsChanged() {\n const currentValue = this.multiSelect\n ? this.selectedOptions.map(option => option.value).join(',')\n : this.selectedOption?.value || '';\n\n if (currentValue) {\n this.setSelectionFromValue(currentValue);\n }\n }\n\n /**\n * Handles the selection of an option from the dropdown.\n * @param option - The selected option object.\n * @internal\n */\n selectOption(option: { value: string; label: string }) {\n if (this.disabled || this.readonly) {\n return;\n }\n\n if (this.multiSelect) {\n const isSelected = this.selectedOptions.some(selected => selected.value === option.value);\n if (isSelected) {\n this.selectedOptions = this.selectedOptions.filter(selected => selected.value !== option.value);\n } else {\n this.selectedOptions = [...this.selectedOptions, option];\n }\n } else {\n this.selectedOption = option;\n this.isOpen = false;\n }\n\n this.updateValueProp();\n this.emitSelectedOptions();\n\n const selectedOptionIndex = this.options.findIndex(opt => opt.value === option.value);\n if (selectedOptionIndex !== -1) {\n const selectedOptionElement = document.querySelector(`.options-list li:nth-child(${selectedOptionIndex + 1})`);\n if (selectedOptionElement) {\n selectedOptionElement.classList.toggle('selected');\n }\n }\n }\n\n /**\n * Updates the mutable `value` prop to reflect the current selection.\n * @internal\n */\n updateValueProp() {\n if (this.multiSelect) {\n this.value = this.selectedOptions.map(option => option.value).join(',');\n } else {\n this.value = this.selectedOption ? this.selectedOption.value : '';\n }\n }\n\n /**\n * Emits custom `change` and `input` events with the current selection.\n * @event change\n * @event input\n * @param {string} value - The current selected value(s), comma-separated for multi-select.\n * @internal\n */\n emitSelectedOptions() {\n let standardValue;\n\n if (this.multiSelect) {\n standardValue = this.selectedOptions.map(option => option.value).join(',');\n } else {\n standardValue = this.selectedOption ? this.selectedOption.value : '';\n }\n\n const changeEvent = new CustomEvent('change', {\n detail: standardValue,\n bubbles: true,\n composed: true\n });\n this.el.dispatchEvent(changeEvent);\n\n const inputEvent = new CustomEvent('input', {\n detail: standardValue,\n bubbles: true,\n composed: true\n });\n this.el.dispatchEvent(inputEvent);\n }\n\n /**\n * Renders the UDP Selector component.\n * @returns JSX element.\n * @internal\n */\n render() {\n const isError = !!this.errorMessage;\n\n const selectedOptionClasses = {\n 'selected-option': true,\n 'focused': this.isOpen,\n };\n\n const hasSelection = this.multiSelect ? this.selectedOptions.length > 0 : !!this.selectedOption;\n\n return (\n <Host\n class={{\n 'udp-input': true,\n 'udp-selector': true,\n 'udp-input--error': isError,\n 'udp-input--disabled': this.disabled,\n 'udp-input--readonly': this.readonly,\n 'udp-input--required': this.required,\n 'udp-input--large': this.large,\n [`udp-input--size-${this.size}`]: true,\n [`udp-input--margin-${this.margin}`]: true,\n }}\n aria-invalid={isError ? 'true' : 'false'}\n aria-required={this.required ? 'true' : 'false'}\n >\n <div class=\"bx--form-item\">\n {this.label && (\n <unity-typography variant=\"caption-text\">\n <label htmlFor={this.id} class=\"bx--label\">\n {this.label}\n {this.required ? '*' : ''}\n </label>\n </unity-typography>\n )}\n <div class=\"udp-selector__container\">\n <div\n class={selectedOptionClasses}\n onClick={() => this.toggleDropdown()}\n onBlur={this.handleBlur}\n tabindex={this.disabled || this.readonly ? '-1' : '0'}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={this.isOpen.toString()}\n id={'udpRecord-udp-selector-' + this.id}\n // @ts-ignore\n udprecordid={'udpRecord-udp-selector-' + this.id}\n >\n <div\n class={{\n 'selected-option-label': true,\n 'placeholder': !hasSelection,\n }}\n >\n {this.multiSelect\n ? this.selectedOptions.length > 0\n ? this.selectedOptions.map(option => option.label).join(', ')\n : 'Select option(s)'\n : this.selectedOption\n ? this.selectedOption.label\n : 'Select an option'}\n </div>\n {this.multiSelect && this.selectedOptions.length > 0 && <span class=\"checkmark\"></span>}\n <div class=\"arrow\"></div>\n </div>\n {this.isOpen && (\n <ul class=\"options-list\">\n {this.options.map(option => (\n <unity-typography variant=\"button\">\n <li class={this.isOptionSelected(option) ? 'selected' : ''} onClick={() => this.selectOption(option)} onMouseDown={this.handleOptionMouseDown}>\n {option.label}\n {this.isOptionSelected(option) && <span class=\"checkmark\"></span>}\n </li>\n </unity-typography>\n ))}\n </ul>\n )}\n </div>\n {this.errorMessage && (\n <div class=\"error-message\">\n <unity-typography variant=\"caption-text\" color=\"error\">\n {this.errorMessage}\n </unity-typography>\n </div>\n )}\n </div>\n </Host>\n );\n }\n\n /**\n * Checks if a given option is currently selected.\n * @param option - The option to check.\n * @returns True if the option is selected, false otherwise.\n * @internal\n */\n isOptionSelected(option: { value: string; label: string }) {\n if (this.multiSelect) {\n return this.selectedOptions.some(selected => selected.value === option.value);\n } else {\n return this.selectedOption && this.selectedOption.value === option.value;\n }\n }\n}\n","/* udp-skeleton-loading.css */\n.skeleton-loader {\n background: linear-gradient(to right, #eeeeee 8%, #dddddd 18%, #eeeeee 33%);\n background-size: 1000px 100%;\n display: inline-block;\n position: relative;\n overflow: hidden;\n }\n \n /* Animation */\n .skeleton-loader::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-image: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.5), transparent);\n animation: load 1.5s infinite;\n }\n \n @keyframes load {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(100%);\n }\n }\n ","import { Component, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'udp-skeleton-loading',\n styleUrl: 'udp-skeleton-loading.css',\n shadow: true\n})\nexport class UdpSkeletonLoading {\n // You can use properties to define the size, shape, etc.\n @Prop() width: string = '100%';\n @Prop() height: string = '20px';\n @Prop() borderRadius: string = '4px';\n\n render() {\n return (\n <div class=\"skeleton-loader\" style={{ width: this.width, height: this.height, borderRadius: this.borderRadius }}>\n {/* Additional markup if needed */}\n </div>\n );\n }\n}\n",".tab-panel {\n display: none;\n background-color: #ffffff;\n }\n \n .tab-panel.active {\n display: block;\n }\n \n\n ","import { Component, h, Prop, Watch } from '@stencil/core';\n\n@Component({\n tag: 'udp-tab',\n styleUrl: 'udp-tab.css',\n})\nexport class UdpTab {\n @Prop() title: string;\n @Prop() active: boolean;\n\n @Watch('active')\n activeChanged() {\n // Handle the active state change, if needed\n }\n\n render() {\n return (\n <div class={{ 'tab-panel': true, 'active': this.active }}>\n <slot></slot>\n </div>\n );\n }\n}\n",".tab-header {\n display: flex;\n background-color: #ffffff;\n border-bottom: 1px solid #e0e0e0;\n }\n \n .tab-header button {\n flex-grow: 1;\n padding: 16px;\n font-size: 14px;\n text-align: center;\n border: none;\n background: none;\n cursor: pointer;\n outline: none;\n transition: all 0.3s ease;\n }\n \n .tab-header button.active {\n border-bottom: 2px solid 'var(--secondary-color)';\n font-weight: 600;\n }\n \n .tab-content {\n display: flex;\n flex-direction: column;\n padding: 16px;\n background-color: #ffffff;\n }\n \n .tab-header button {\n cursor: pointer;\n border: none;\n padding: 16px;\n background-color: transparent;\n color: #757575;\n }\n \n .tab-header button.active {\n border-bottom: 2px solid #344861;\n color: #344861;\n font-weight: 600;\n }\n ","import { Component, h, State } from '@stencil/core';\n\n@Component({\n tag: 'udp-tabs',\n styleUrl: 'udp-tabs.css',\n})\nexport class UdpTabs {\n @State() activeTab: number = 0;\n\n tabClicked(tabIndex: number) {\n this.activeTab = tabIndex;\n }\n\n render() {\n return (\n <div>\n <div class=\"tab-header\">\n <slot name=\"tab-title\">\n {/* Titles go here */}\n </slot>\n </div>\n <div>\n <slot></slot>\n </div>\n </div>\n );\n }\n}\n","body {\n font-family: var(--font-family);\n}\n\n:host {\n display: block;\n}\n\n/* Reset margins for all typography elements */\nh1, h2, h3, h4, h5, h6, p, span {\n margin: 0;\n padding: 0;\n}\n\n/* Add specific margins only when gutterBottom prop is true */\n:host([gutterBottom]) h1,\n:host([gutterBottom]) h2,\n:host([gutterBottom]) h3,\n:host([gutterBottom]) h4,\n:host([gutterBottom]) h5,\n:host([gutterBottom]) h6,\n:host([gutterBottom]) p,\n:host([gutterBottom]) span {\n margin-bottom: var(--spacing-02);\n}\n\n/* Body Text */\n.body1 {\n font-size: var(--body-font-size);\n font-weight: var(--body-font-weight);\n line-height: var(--body-line-height);\n font-family: var(--font-family);\n}\n\n.body2 {\n font-size: var(--body-font-size);\n font-weight: var(--body-font-weight);\n line-height: var(--body-line-height);\n font-family: var(--font-family);\n}\n\n/* Headings */\nh1 {\n font-size: var(--h1-font-size);\n font-weight: var(--h1-font-weight);\n line-height: var(--h1-line-height);\n font-family: var(--font-family);\n}\n\nh2 {\n font-size: var(--h2-font-size);\n font-weight: var(--h2-font-weight);\n line-height: var(--h2-line-height);\n font-family: var(--font-family);\n}\n\nh3 {\n font-size: var(--h3-font-size);\n font-weight: var(--h3-font-weight);\n line-height: var(--h3-line-height);\n font-family: var(--font-family);\n}\n\nh4 {\n font-size: var(--h4-font-size);\n font-weight: var(--h4-font-weight);\n line-height: var(--h4-line-height);\n font-family: var(--font-family);\n}\n\nh5 {\n font-size: var(--h5-font-size);\n font-weight: var(--h5-font-weight);\n line-height: var(--h5-line-height);\n font-family: var(--font-family);\n}\n\nh6 {\n font-size: var(--h6-font-size);\n font-weight: var(--h6-font-weight);\n line-height: var(--h6-line-height);\n font-family: var(--font-family);\n}\n\n/* Body */\np {\n font-size: var(--body-font-size);\n font-weight: var(--body-font-weight);\n line-height: var(--body-line-height);\n font-family: var(--font-family);\n}\n\n/* Caption Text */\n.caption-text {\n font-size: var(--caption-text-font-size);\n font-weight: var(--caption-text-font-weight);\n line-height: var(--caption-text-line-height);\n font-family: var(--font-family);\n}\n\n/* Data Display One */\n.data-display-one {\n font-size: var(--data-display-one-font-size);\n font-weight: var(--data-display-one-font-weight);\n line-height: var(--data-display-one-line-height);\n font-family: var(--font-family);\n}\n\n/* Data Display Two */\n.data-display-two {\n font-size: var(--data-display-two-font-size);\n font-weight: var(--data-display-two-font-weight);\n line-height: var(--data-display-two-line-height);\n font-family: var(--font-family);\n}\n\n/* Data Display Three */\n.data-display-three {\n font-size: var(--data-display-three-font-size);\n font-weight: var(--data-display-three-font-weight);\n line-height: var(--data-display-three-line-height);\n font-family: var(--font-family);\n}\n\n/* Data Display Four */\n.data-display-four {\n font-size: var(--data-display-four-font-size);\n font-weight: var(--data-display-four-font-weight);\n line-height: var(--data-display-four-line-height);\n font-family: var(--font-family);\n}\n\n/* Button */\n.button {\n font-size: var(--button-font-size);\n font-weight: var(--button-font-weight);\n line-height: var(--button-line-height);\n font-family: var(--font-family);\n}\n\n/* Add this after your existing styles */\n\n/* Bold modifier */\n.bold {\n font-weight: var(--font-weight-bold, 700) !important;\n}\n\n/* Add after existing styles */\n\n/* Color variants */\n.color-main {\n color: var(--text-main);\n}\n\n.color-textSecondary {\n color: var(--text-secondary);\n}\n\n.color-primary {\n color: var(--primary-color);\n}\n\n.color-secondary {\n color: var(--secondary-color);\n}\n\n.color-disabled {\n color: var(--text-disabled);\n}\n\n.color-hint {\n color: var(--text-hint);\n}\n\n/* Add this to your color variants section */\n.color-inherit {\n color: inherit;\n}\n\n/* Error color variant for form error messages */\n.color-error {\n color: var(--error-color-main, #d32f2f) !important;\n}\n","import { Component, h, Prop } from '@stencil/core';\nimport { TypographyVariant, TypographyColor, UnityTypographyProps } from './types';\n\n\n@Component({\n tag: 'unity-typography',\n styleUrl: 'unity-typography.css',\n shadow: true\n})\nexport class typography implements UnityTypographyProps {\n @Prop() variant: TypographyVariant = 'body';\n @Prop() gutterBottom: boolean = false;\n @Prop() bold: boolean = false;\n @Prop() color: TypographyColor = 'main';\n\n private getClasses(baseClass: string): { [key: string]: boolean } {\n return {\n [baseClass]: true,\n 'bold': this.bold,\n [`color-${this.color}`]: true\n };\n }\n\n render() {\n if (this.variant === 'body') {\n return <span class={this.getClasses('body')}><slot /></span>;\n }\n\n switch (this.variant) {\n case 'h1':\n return <h1 class={this.getClasses('h1')}><slot /></h1>;\n case 'h2':\n return <h2 class={this.getClasses('h2')}><slot /></h2>;\n case 'h3':\n return <h3 class={this.getClasses('h3')}><slot /></h3>;\n case 'h4':\n return <h4 class={this.getClasses('h4')}><slot /></h4>;\n case 'h5':\n return <h5 class={this.getClasses('h5')}><slot /></h5>;\n case 'h6':\n return <h6 class={this.getClasses('h6')}><slot /></h6>;\n case 'body1':\n return <p class={this.getClasses('body1')}><slot /></p>;\n case 'body2':\n return <p class={this.getClasses('body2')}><slot /></p>;\n case 'caption-text':\n return <span class={this.getClasses('caption-text')}><slot /></span>;\n case 'data-display-one':\n return <span class={this.getClasses('data-display-one')}><slot /></span>;\n case 'data-display-two':\n return <span class={this.getClasses('data-display-two')}><slot /></span>;\n case 'data-display-three':\n return <span class={this.getClasses('data-display-three')}><slot /></span>;\n case 'data-display-four':\n return <span class={this.getClasses('data-display-four')}><slot /></span>;\n case 'button':\n return <span class={this.getClasses('button')}><slot /></span>;\n default:\n return <p class={this.getClasses('body1')}><slot /></p>;\n }\n }\n}\n",":host {\n display: block;\n width: 100%;\n box-sizing: border-box;\n }\n \n .alert-banner {\n display: flex; /* Use flex display for horizontal alignment */\n align-items: center; /* Center items vertically */\n justify-content: space-between; /* Space between text and button */\n padding: 5px;\n padding-left: 24px;\n padding-right: 8px;\n box-sizing: border-box;\n background-color: var(--success-color-light); /* Use a variable for background */\n color: #000;\n \n}\n\n .banner-group {\n display: flex;\n width: 500px;\n /* flex-direction: column;\n align-items: center;\n justify-content: center; */\n }\n \n .info {\n background-color: var(--success-color-light); /* Adjust colors as needed */\n color: #000;\n }\n \n .warning {\n background-color: var(--warning-color-main);\n color: #000;\n }\n \n .error {\n background-color: var(--error-color-light);\n color: #000;\n }\n \n .success {\n background-color: var(--success-color-light);\n color: #000;\n }\n \n\n .stencil-icon-button {\n /* your styles for the icon button */\n margin-left: auto; /* Pushes the button to the right */\n}","import { Component, Prop, h } from '@stencil/core';\n// import Reset16 from '@carbon/icons/es/reset/16';\n\n@Component({\n tag: 'upd-alert-banner',\n styleUrl: 'upd-alert-banner.css',\n shadow: true,\n})\nexport class UpdAlertBanner {\n // Define properties here\n @Prop() type: 'info' | 'warning' | 'error' | 'success' = 'info';\n @Prop() message: string = '';\n @Prop() onClick: () => void;\n\n render() {\n return (\n <div class={`alert-banner ${this.type}`}>\n <unity-typography variant=\"data-display-three\"> {this.message} </unity-typography>\n {/* <stencil-icon-button icon={Reset16} showLabel={false} onClick={this.onClick} tooltip='Refresh Search' ></stencil-icon-button> */}\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}