@solidxai/core-ui 0.1.5-beta.5 → 0.1.5-beta.8

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 (87) hide show
  1. package/dist/components/core/chatter/SolidChatterDateDivider.js +1 -1
  2. package/dist/components/core/chatter/SolidChatterDateDivider.js.map +1 -1
  3. package/dist/components/core/chatter/SolidChatterDateDivider.tsx +1 -1
  4. package/dist/components/core/dashboard/DashboardFilter.js +1 -1
  5. package/dist/components/core/dashboard/DashboardFilter.js.map +1 -1
  6. package/dist/components/core/dashboard/DashboardFilter.tsx +5 -5
  7. package/dist/components/core/dashboard/PrimeDataTableWrapper.d.ts +3 -0
  8. package/dist/components/core/dashboard/PrimeDataTableWrapper.d.ts.map +1 -0
  9. package/dist/components/core/dashboard/PrimeDataTableWrapper.js +21 -0
  10. package/dist/components/core/dashboard/PrimeDataTableWrapper.js.map +1 -0
  11. package/dist/components/core/dashboard/PrimeDataTableWrapper.tsx +40 -0
  12. package/dist/components/core/dashboard/SolidDashboard.d.ts +0 -1
  13. package/dist/components/core/dashboard/SolidDashboard.d.ts.map +1 -1
  14. package/dist/components/core/dashboard/SolidDashboard.js +50 -26
  15. package/dist/components/core/dashboard/SolidDashboard.js.map +1 -1
  16. package/dist/components/core/dashboard/SolidDashboard.module.css +6 -2
  17. package/dist/components/core/dashboard/SolidDashboard.tsx +112 -65
  18. package/dist/components/core/dashboard/SolidDashboardBody.d.ts +13 -1
  19. package/dist/components/core/dashboard/SolidDashboardBody.d.ts.map +1 -1
  20. package/dist/components/core/dashboard/SolidDashboardBody.js +134 -48
  21. package/dist/components/core/dashboard/SolidDashboardBody.js.map +1 -1
  22. package/dist/components/core/dashboard/SolidDashboardBody.tsx +143 -91
  23. package/dist/components/core/dashboard/SolidQuestionRenderer.d.ts.map +1 -1
  24. package/dist/components/core/dashboard/SolidQuestionRenderer.js +1 -1
  25. package/dist/components/core/dashboard/SolidQuestionRenderer.js.map +1 -1
  26. package/dist/components/core/dashboard/SolidQuestionRenderer.tsx +12 -10
  27. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.d.ts.map +1 -1
  28. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js +29 -2
  29. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js.map +1 -1
  30. package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.tsx +33 -3
  31. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.d.ts +10 -0
  32. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.d.ts.map +1 -0
  33. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.js +16 -0
  34. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.js.map +1 -0
  35. package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.ts +19 -0
  36. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.d.ts +8 -0
  37. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.d.ts.map +1 -0
  38. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.js +64 -0
  39. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.js.map +1 -0
  40. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.ts +30 -0
  41. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.d.ts +8 -0
  42. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.d.ts.map +1 -0
  43. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.js +62 -0
  44. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.js.map +1 -0
  45. package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.ts +29 -0
  46. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +2 -2
  47. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
  48. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +2 -2
  49. package/dist/components/core/form/SolidFormView.js +1 -1
  50. package/dist/components/core/form/SolidFormView.js.map +1 -1
  51. package/dist/components/core/form/SolidFormView.tsx +1 -1
  52. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  53. package/dist/components/core/list/SolidListView.js +7 -4
  54. package/dist/components/core/list/SolidListView.js.map +1 -1
  55. package/dist/components/core/list/SolidListView.tsx +4 -2
  56. package/dist/constants/error-messages.d.ts +3 -0
  57. package/dist/constants/error-messages.d.ts.map +1 -1
  58. package/dist/constants/error-messages.js +3 -0
  59. package/dist/constants/error-messages.js.map +1 -1
  60. package/dist/constants/error-messages.ts +24 -20
  61. package/dist/helpers/registry.d.ts.map +1 -1
  62. package/dist/helpers/registry.js +7 -0
  63. package/dist/helpers/registry.js.map +1 -1
  64. package/dist/helpers/registry.ts +8 -0
  65. package/dist/index.d.ts +2 -0
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +2 -0
  68. package/dist/index.js.map +1 -1
  69. package/dist/index.ts +8 -0
  70. package/dist/redux/api/dashboardLayoutApi.d.ts +24 -0
  71. package/dist/redux/api/dashboardLayoutApi.d.ts.map +1 -0
  72. package/dist/redux/api/dashboardLayoutApi.js +34 -0
  73. package/dist/redux/api/dashboardLayoutApi.js.map +1 -0
  74. package/dist/redux/api/dashboardLayoutApi.ts +55 -0
  75. package/dist/redux/store/defaultStoreConfig.d.ts +4 -0
  76. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  77. package/dist/redux/store/defaultStoreConfig.js +3 -2
  78. package/dist/redux/store/defaultStoreConfig.js.map +1 -1
  79. package/dist/redux/store/defaultStoreConfig.ts +4 -2
  80. package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -1
  81. package/dist/routes/pages/admin/core/DashboardPage.js +3 -7
  82. package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -1
  83. package/dist/routes/pages/admin/core/DashboardPage.tsx +2 -5
  84. package/dist/routes/solidRoutes.js +1 -1
  85. package/dist/routes/solidRoutes.js.map +1 -1
  86. package/dist/routes/solidRoutes.tsx +1 -1
  87. package/package.json +13 -11
@@ -1 +1 @@
1
- {"version":3,"file":"SolidDashboard.js","sourceRoot":"","sources":["../../../../src/components/core/dashboard/SolidDashboard.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EAAqB,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE1F,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAA4B,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,MAAM,MAAM,6BAA6B,CAAC;AACjD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAE1G,MAAM,CAAN,IAAY,qBAIX;AAJD,WAAY,qBAAqB;IAC/B,sCAAa,CAAA;IACb,6DAAoC,CAAA;IACpC,+DAAsC,CAAA;AACxC,CAAC,EAJW,qBAAqB,KAArB,qBAAqB,QAIhC;AAED,IAAK,WAGJ;AAHD,WAAK,WAAW;IACd,0BAAW,CAAA;IACX,oCAAqB,CAAA;AACvB,CAAC,EAHI,WAAW,KAAX,WAAW,QAGf;AAeD,SAAS,mBAAmB,CAC1B,IAAuB,EACvB,qBAA0E,EAC1E,YAA6C;IAErC,IAAA,OAAO,GAAW,IAAI,QAAf,EAAE,IAAI,GAAK,IAAI,KAAT,CAAU;IAC/B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QACjC,gDAAgD;QAChD,IAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,uCAAuC;QAEzE,8BAA8B;QAC9B,qBAAqB,CAAC,aAAa,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;QAE9D,8BAA8B;QAC9B,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;KAEtC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,UAAkB,EAAE,WAAoB,EAAE,aAAsB;IACtF,IAAM,OAAO,GAAQ;QACnB,MAAM,EAAE;YACN,IAAI,EAAE;gBACJ,GAAG,EAAE,UAAU;aAChB;SACF;KACF,CAAC;IAEF,IAAI,WAAW,KAAK,SAAS,EAAE;QAC7B,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;KACnC;SAAM,IAAI,aAAa,KAAK,SAAS,EAAE;QACtC,OAAO,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;KACvC;IAED,IAAM,KAAK,GAAG;QACZ,OAAO,SAAA;QACP,QAAQ,EAAE,CAAC,oBAAoB,EAAE,WAAW,CAAC;KAC9C,CAAC;IACF,IAAM,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE;QACnC,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,qCAAqC;AACrC,mCAAmC;AACnC,MAAM;AACN,IAAI;AACJ,8IAA8I;AAC9I,MAAM;AACN,sCAAsC;AACtC,IAAI;AACJ,GAAG;AACH,SAAS,qBAAqB,CAAC,SAAgB,EAAE,kBAA6C,EAAE,OAAwB;IACtH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1B,OAAO,KAAK,CAAC;KACd;IAED,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE;QACnC,OAAO,IAAI,CAAC;KACb;IAED,sEAAsE;IACtE,IAAM,oBAAoB,GAAG,kBAAkB,CAAC,KAAK,CAAC,UAAA,QAAQ;QAC5D,OAAA,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,EAA7C,CAA6C,CAAC;IAArE,CAAqE,CACtE,CAAC;IAEF,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAQD,IAAM,cAAc,GAAG,UAAC,MAA+B;;IAC/C,IAAA,KAA6B,oBAAoB,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,EAA5H,IAAI,UAAA,EAAE,SAAS,eAAA,EAAE,KAAK,WAAsG,CAAA,CAAC,iDAAiD;IACtL,4HAA4H;IAC5H,gJAAgJ;IAChJ,sKAAsK;IACtK,oCAAoC;IACpC,8EAA8E;IAC9E,iBAAiB;IACjB,mBAAmB;IACnB,MAAM;IAEN,6EAA6E;IAC7E,6HAA6H;IAC7H,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAM,aAAa,GAAG,WAAW,CAAC,UAAC,KAAU,YAAK,OAAA,MAAA,KAAK,CAAC,WAAW,0CAAE,aAAa,CAAA,EAAA,CAAC,CAAC;IAC9E,IAAA,KAAwB,QAAQ,CAAkB,EAAE,CAAC,EAApD,OAAO,QAAA,EAAE,UAAU,QAAiC,CAAC;IACtD,IAAA,KAAgD,QAAQ,CAAC,KAAK,CAAC,EAA9D,mBAAmB,QAAA,EAAE,sBAAsB,QAAmB,CAAC;IAChE,IAAA,KAAkC,QAAQ,CAAC,GAAG,CAAC,EAA9C,YAAY,QAAA,EAAE,eAAe,QAAiB,CAAC;IAChD,IAAA,KAA8B,QAAQ,CAAC,KAAK,CAAC,EAA5C,UAAU,QAAA,EAAE,aAAa,QAAmB,CAAC;IAC9C,IAAA,KAA4B,QAAQ,CAAQ,EAAE,CAAC,EAA9C,SAAS,QAAA,EAAE,YAAY,QAAuB,CAAC;IAChD,IAAA,KAA8C,QAAQ,CAA4B,EAAE,CAAC,EAApF,kBAAkB,QAAA,EAAE,qBAAqB,QAA2C,CAAC;IACtF,IAAA,KAA0D,QAAQ,CAAC,KAAK,CAAC,EAAxE,wBAAwB,QAAA,EAAE,2BAA2B,QAAmB,CAAC;IAGhF,SAAS,CAAC;QACR,uDAAuD;QACvD,kEAAkE;QAClE,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YACtB,4CAA4C;YAC5C,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,EAAE,YAAY,CAAC,CAAC;SAChE;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAEtB,SAAS,CAAC;QACR,IAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC3D,IAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAE7D,IAAI,UAAU,KAAK,IAAI,EAAE;YACvB,sBAAsB,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC;SAC/C;QAED,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,IAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACjB,eAAe,CAAC,KAAK,CAAC,CAAC;aACxB;SACF;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAGP,SAAS,CAAC;QACR,IAAI,UAAU,EAAE;YACd,IAAM,iBAAe,GAAG,UAAC,CAAa;gBACpC,IAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC;gBAC/C,IAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC5D,eAAe,CAAC,YAAY,CAAC,CAAC;gBAC9B,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpE,CAAC,CAAC;YAEF,IAAM,eAAa,GAAG;gBACpB,aAAa,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC,CAAC;YAEF,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,iBAAe,CAAC,CAAC;YACtD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAa,CAAC,CAAC;YAElD,OAAO;gBACL,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,iBAAe,CAAC,CAAC;gBACzD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAa,CAAC,CAAC;YACvD,CAAC,CAAC;SACH;IACH,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAGjB,IAAM,UAAU,GAAG;QACjB,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC7B,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,IAAM,WAAW,GAAG;QAClB,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC9B,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,IAAM,kBAAkB,GAAG;QACzB,IAAI,aAAa,EAAE;YACjB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAG,aAAa;SAC1C;aAAM;YACL,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAK,YAAY;SACzC;IACH,CAAC,CAAC;IAII,IAAA,KAAsB,QAAQ,CAAgB,IAAI,CAAC,EAAlD,MAAM,QAAA,EAAE,SAAS,QAAiC,CAAC;IACnD,IAAA,SAAS,GAAI,qBAAqB,EAAE,GAA3B,CAA4B;IAEtC,IAAA,KAAyC,4BAA4B,EAAE,EAAtE,OAAO,QAAA,EAAU,iBAAiB,aAAoC,CAAC;IAC9E,SAAS,CAAC;QACR,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC,0BAA0B;IACxC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,SAAS,CAAC;;QACR,IAAI,CAAA,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,IAAI,0CAAE,UAAU,MAAI,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,IAAI,0CAAE,YAAY,CAAA,EAAE;YAChF,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExB,IAAM,mBAAmB,GAAG;;;;;;;oBAElB,SAAS,GAAG;wBAChB,UAAU,EAAE,MAAM;wBAClB,UAAU,EAAE,MAAM;qBACnB,CAAC;oBACI,WAAW,GAAG,EAAE,CAAC,SAAS,cAAM,SAAS,GAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC9D,qBAAM,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,EAAA;;oBAAhD,QAAQ,GAAG,SAAqC;oBACtD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;oBAClC,IAAI,QAAQ,KAAI,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,MAAM,CAAA,EAAE;wBACtC,SAAS,CAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,MAAM,CAAC,CAAC;qBACnC;;;;;;;;SAIJ,CAAA;IAGD,OAAO,CACL,eAAK,SAAS,EAAE,yBAAyB,aACvC,eAAK,SAAS,EAAE,6BAAsB,MAAM,CAAC,gCAAgC,CAAE,aAC5E,SAAS,IAAI,KAAC,qBAAqB,KAAG,EACtC,KAAK,IAAI,KAAC,yBAAyB,KAAG,EACtC,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAC5D,KAAC,0BAA0B,KAAG,CAC/B,EACA,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAC1D,8BACE,eAAK,SAAS,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,sCAAsC,EAAE,aAC1F,eAAK,SAAS,EAAC,+BAA+B,aAC5C,cAAK,SAAS,EAAC,0CAA0C,EAAC,OAAO,EAAE,kBAAkB,YACnF,YAAG,SAAS,EAAC,gBAAgB,GAAK,GAC9B,EACN,aAAG,SAAS,EAAE,sEAA+D,MAAM,CAAC,mBAAmB,CAAE,aACtG,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAC,CAAC,CAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,CAAC,0CAAE,WAAW,CAAC,CAAC,CAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,CAAC,0CAAE,IAAI,EACtF,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,CAAC,0CAAE,WAAW;wDAC5B,8BACE,KAAC,OAAO,IAAC,SAAS,EAAC,qBAAqB,EAAC,MAAM,EAAC,2BAA2B,GAAG,EAC9E,YAAG,SAAS,EAAC,4CAA4C,qBACtC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,CAAC,0CAAE,WAAW,sBAC5B,OAAO,GACzB,IACD,IAEH,IACA,EACL,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,CACtD,8BACE,eAAK,SAAS,EAAC,YAAY,aACzB,KAAC,MAAM,IACL,KAAK,EAAC,QAAQ,EACd,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,cAAc,EAC/D,QAAQ,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,EAC9B,QAAQ,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EACnD,KAAK,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,EACpE,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,cAAM,OAAA,2BAA2B,CAAC,IAAI,CAAC,EAAjC,CAAiC,GAChD,EACD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CACrB,KAAC,MAAM;oDACL,wBAAwB;;wDAAxB,wBAAwB;wDACxB,IAAI,EAAC,oBAAoB,EACzB,QAAQ,EAAC,QAAQ,EACjB,OAAO,EAAE,cAAQ,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GACtE,CACH,IACG,EACN,KAAC,eAAe,IACd,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,wBAAwB,EACjC,MAAM,EAAE,cAAM,OAAA,2BAA2B,CAAC,KAAK,CAAC,EAAlC,CAAkC,GAChD,IACD,CACJ,IACG,EACL,CAAC,qBAAqB,CAAC,SAAS,EAAE,kBAAkB,EAAE,OAAO,CAAC,IAAI,KAAC,4BAA4B,KAAG,EAClG,qBAAqB,CAAC,SAAS,EAAE,kBAAkB,EAAE,OAAO,CAAC,IAAI,KAAC,kBAAkB,IAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAI,IAC/H,CACJ,IACG,EACL,MAAM,IAAI,CACT,eAAK,SAAS,EAAE,0BAAmB,mBAAmB,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,aACtH,mBAAmB,IAAI,CACtB,cACE,KAAK,EAAE;4BACL,KAAK,EAAE,CAAC;4BACR,MAAM,EAAE,YAAY;4BACpB,QAAQ,EAAE,UAAU;4BACpB,IAAI,EAAE,CAAC;4BACP,GAAG,EAAE,CAAC;4BACN,MAAM,EAAE,CAAC;4BACT,MAAM,EAAE,MAAM;4BACd,MAAM,EAAE,CAAC;yBACV,EACD,WAAW,EAAE,cAAM,OAAA,aAAa,CAAC,IAAI,CAAC,EAAnB,CAAmB,GACtC,CACH,EACA,mBAAmB;wBAClB,KAAC,MAAM,IACL,IAAI,EAAC,0BAA0B,EAC/B,IAAI,EAAC,OAAO,EACZ,IAAI,QACJ,SAAS,EAAC,sBAAsB,EAChC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EACpD,OAAO,EAAE,WAAW,GACpB,EAGH,mBAAmB,KAAK,KAAK,CAAC,CAAC;wBAC9B,eAAK,SAAS,EAAC,mDAAmD,aAChE,cAAK,SAAS,EAAC,2BAA2B,EAAC,OAAO,EAAE,UAAU,YAC5D,eAAK,SAAS,EAAC,YAAY,kBAAE,KAAC,YAAY,KAAG,mBAAiB,GAC1D,EACN,KAAC,MAAM,IACL,IAAI,EAAC,oBAAoB,EACzB,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,MAAM,EAChB,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EACpB,OAAO,EAAE,UAAU,GACnB,IACE;wBACN,CAAC;4BACD,KAAC,kBAAkB,IAAC,MAAM,EAAE,MAAM,GAAI,IAEpC,CACP,IAEG,CACP,CAAC;AACJ,CAAC,CAAA;AAED,eAAe,cAAc,CAAC","sourcesContent":["\nimport { DashboardResponse, useGetDashboardQuery } from '../../../redux/api/dashboardApi';\nimport { SqlExpression } from '../../../types/solid-core';\nimport { Button } from 'primereact/button';\nimport { Tooltip } from \"primereact/tooltip\";\nimport qs from 'qs';\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react';\nimport { SolidXAIIcon } from '../solid-ai/SolidXAIIcon';\nimport styles from './SolidDashboard.module.css';\nimport SolidDashboardBody from './SolidDashboardBody';\nimport { DashboardFilter } from './DashboardFilter';\nimport { SolidAiMainWrapper } from '../solid-ai/SolidAiMainWrapper';\nimport { SolidDashboardFilterRequired } from './SolidDashboardFilterRequired';\nimport { SolidDashboardLoading } from './SolidDashboardLoading';\nimport { SolidDashboardRenderError } from './SolidDashboardRenderError';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { showNavbar, toggleNavbar } from \"../../../redux/features/navbarSlice\";\nimport SolidDashboardNotAvailable from './SolidDashboardNotAvailable';\nimport { useLazyGetMcpUrlQuery, useLazyGetSolidSettingsQuery } from '../../../redux/api/solidSettingsApi';\n\nexport enum DashboardVariableType {\n DATE = 'date',\n SELECTION_STATIC = 'selectionStatic',\n SELECTION_DYNAMIC = 'selectionDynamic',\n}\n\nenum SOURCE_TYPE {\n SQL = 'sql',\n PROVIDER = 'provider',\n}\n\nexport interface DashboardVariableRecord {\n id: number;\n variableName: string;\n variableType: DashboardVariableType;\n selectionStaticValues?: string;\n selectionDynamicSourceType?: SOURCE_TYPE;\n selectionDynamicProviderName?: string;\n selectionDynamicSQL?: string;\n isMultiSelect?: boolean;\n defaultValue?: string;\n defaultOperator?: string;\n}\n\nfunction handleDashboardData(\n data: DashboardResponse,\n setDashboardVariables: Dispatch<SetStateAction<DashboardVariableRecord[]>>,\n setQuestions: Dispatch<SetStateAction<any[]>>,\n) {\n const { records, meta } = data;\n if (records && records.length > 0) {\n // Set the layout options for the dashboard body\n const dashboardData = records[0]; // Assuming we want the first dashboard\n\n // Set the dashboard variables\n setDashboardVariables(dashboardData.dashboardVariables || []);\n\n // Set the dashboard questions\n setQuestions(dashboardData.questions)\n\n }\n}\n\nfunction getQueryParams(moduleName: string, dashboardId?: number, dashboardName?: string) {\n const filters: any = {\n module: {\n name: {\n $eq: moduleName\n }\n }\n };\n\n if (dashboardId !== undefined) {\n filters.id = { $eq: dashboardId };\n } else if (dashboardName !== undefined) {\n filters.name = { $eq: dashboardName };\n }\n\n const query = {\n filters,\n populate: ['dashboardVariables', 'questions']\n };\n const urlQuery = qs.stringify(query, {\n encodeValuesOnly: true,\n });\n return urlQuery;\n}\n\n// Render the dashboard body only if:\n// 1. There are dashboard questions\n// AND\n// (\n// 1. There are dashboard variables and all dashboard variable filter rules have been applied i.e (all dashboard variables have been selected)\n//. OR\n// 2. There are no dashboard variables\n// )\n// \nfunction isRenderDashboardBody(questions: any[], dashboardVariables: DashboardVariableRecord[], filters: SqlExpression[]) {\n if (questions.length === 0) {\n return false;\n }\n\n if (dashboardVariables.length === 0) {\n return true;\n }\n\n // Check if all dashboard variables have corresponding filters applied\n const allVariablesFiltered = dashboardVariables.every(variable =>\n filters.some(filter => filter.variableName === variable.variableName)\n );\n\n return allVariablesFiltered;\n}\n\ntype SolidDashboardViewProps = {\n moduleName: string;\n dashboardId?: number;\n dashboardName?: string;\n};\n\nconst SolidDashboard = (params: SolidDashboardViewProps) => {\n const { data, isLoading, error } = useGetDashboardQuery(getQueryParams(params.moduleName, params.dashboardId, params.dashboardName)) // FIXME : error handling should be done properly\n // Define a state called layoutOption and pass it after destructing the widgetOptions and dashboardOptions from layoutOption\n // TODO [HP]: Shouldn't the type of this state variable be something different? Why are we muddling this with layout but calling it body props? \n // TODO [HP]: Body props should be clearly made up of Gridstack layout options, the questions that make up the body & the filter[] which is an array of SqlExpressions\n // TODO [HP]: This is fully CONFUSED\n // const [layoutOption, setLayoutOption] = useState<SolidDashboardBodyProps>({\n // filters: [],\n // questions: [],\n // });\n\n // TODO [HP]: replace dashboardVariableFilterRules with filters everywhere...\n // const [dashboardVariableFilterRules, setDashboardVariableFilterRules] = useState<ISolidDashboardVariableFilterRule[]>([]);\n const dispatch = useDispatch();\n const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);\n const [filters, setFilters] = useState<SqlExpression[]>([]);\n const [isOpenSolidXAiPanel, setIsOpenSolidXAiPanel] = useState(false);\n const [chatterWidth, setChatterWidth] = useState(380);\n const [isResizing, setIsResizing] = useState(false);\n const [questions, setQuestions] = useState<any[]>([]);\n const [dashboardVariables, setDashboardVariables] = useState<DashboardVariableRecord[]>([]);\n const [isDashboardFilterVisible, setIsDashboardFilterVisible] = useState(false);\n\n\n useEffect(() => {\n // Invoke the dashboard api to fetch the dashboard data\n // console.log('Dashboard Data testing:', isLoading, data, error);\n if (!isLoading && data) {\n // Assuming data contains the layout options\n handleDashboardData(data, setDashboardVariables, setQuestions);\n }\n }, [isLoading, data]);\n\n useEffect(() => {\n const storedOpen = localStorage.getItem('d_solidxai_open');\n const storedWidth = localStorage.getItem('d_solidxai_width');\n\n if (storedOpen !== null) {\n setIsOpenSolidXAiPanel(storedOpen === 'true');\n }\n\n if (storedWidth !== null) {\n const width = parseInt(storedWidth, 10);\n if (!isNaN(width)) {\n setChatterWidth(width);\n }\n }\n }, []);\n\n\n useEffect(() => {\n if (isResizing) {\n const handleMouseMove = (e: MouseEvent) => {\n const newWidth = window.innerWidth - e.clientX;\n const clampedWidth = Math.max(280, Math.min(newWidth, 700));\n setChatterWidth(clampedWidth);\n localStorage.setItem('d_solidxai_width', clampedWidth.toString());\n };\n\n const handleMouseUp = () => {\n setIsResizing(false);\n };\n\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n };\n }\n }, [isResizing]);\n\n\n const handleOpen = () => {\n setIsOpenSolidXAiPanel(true);\n localStorage.setItem('d_solidxai_open', 'true');\n };\n\n const handleClose = () => {\n setIsOpenSolidXAiPanel(false);\n localStorage.setItem('d_solidxai_open', 'false');\n };\n\n const toggleBothSidebars = () => {\n if (visibleNavbar) {\n dispatch(toggleNavbar()); // close both\n } else {\n dispatch(showNavbar()); // open both\n }\n };\n\n\n\n const [mcpUrl, setMcpUrl] = useState<string | null>(null);\n const [getMcpUrl] = useLazyGetMcpUrlQuery();\n\n const [trigger, { data: solidSettingsData }] = useLazyGetSolidSettingsQuery();\n useEffect(() => {\n trigger(\"\") // Fetch settings on mount\n }, [])\n\n useEffect(() => {\n if (solidSettingsData?.data?.mcpEnabled && solidSettingsData?.data?.mcpServerUrl) {\n enableSolidXAiPanel();\n }\n }, [solidSettingsData]);\n\n const enableSolidXAiPanel = async () => {\n try {\n const queryData = {\n showHeader: \"true\",\n inListView: \"true\"\n };\n const queryString = qs.stringify({ ...queryData }, { encodeValuesOnly: true });\n const response = await getMcpUrl(queryString).unwrap();\n console.log(\"response\", response);\n if (response && response?.data?.mcpUrl) {\n setMcpUrl(response?.data?.mcpUrl);\n }\n } catch (error) {\n\n }\n }\n\n\n return (\n <div className={`h-screen surface-0 flex`}>\n <div className={`h-full flex-grow-1 ${styles.SolidDashboardPageContentWrapper}`}>\n {isLoading && <SolidDashboardLoading />}\n {error && <SolidDashboardRenderError />}\n {!isLoading && !error && data && data.records.length === 0 && (\n <SolidDashboardNotAvailable />\n )}\n {!isLoading && !error && data && data.records.length > 0 && (\n <>\n <div className=\"page-header\" style={{ borderBottom: '1px solid var(--primary-light-color)' }}>\n <div className='flex align-items-center gap-2'>\n <div className=\"apps-icon block md:hidden cursor-pointer\" onClick={toggleBothSidebars}>\n <i className=\"pi pi-th-large\"></i>\n </div>\n <p className={`view-title solid-text-wrapper flex align-items-center gap-1 ${styles.SolidDashboardTitle}`}>\n {data?.records[0]?.displayName ? data?.records[0]?.displayName : data?.records[0]?.name}\n {data?.records[0]?.description &&\n <>\n <Tooltip className='solid-field-tooltip' target=\".solid-field-tooltip-icon\" />\n <i className=\"pi pi-info-circle solid-field-tooltip-icon\"\n data-pr-tooltip={data?.records[0]?.description}\n data-pr-position={'right'}\n />\n </>\n }\n </p>\n </div>\n {dashboardVariables && dashboardVariables.length > 0 && (\n <>\n <div className='flex gap-2'>\n <Button\n label=\"Filter\"\n icon={filters.length > 0 ? \"pi pi-filter-fill\" : \"pi pi-filter\"}\n outlined={filters.length === 0}\n severity={filters.length > 0 ? \"info\" : \"secondary\"}\n style={filters.length > 0 ? { background: \"rgb(114, 46, 209)\" } : {}}\n size=\"small\"\n onClick={() => setIsDashboardFilterVisible(true)}\n />\n {filters.length > 0 && (\n <Button\n // label=\"Clear Filters\"\n icon=\"pi pi-filter-slash\"\n severity=\"danger\"\n onClick={() => { setFilters([]); setIsDashboardFilterVisible(false); }}\n />\n )}\n </div>\n <DashboardFilter\n dashboardVariables={dashboardVariables}\n initialFilters={filters}\n onApply={setFilters}\n visible={isDashboardFilterVisible}\n onHide={() => setIsDashboardFilterVisible(false)}\n />\n </>\n )}\n </div>\n {!isRenderDashboardBody(questions, dashboardVariables, filters) && <SolidDashboardFilterRequired />}\n {isRenderDashboardBody(questions, dashboardVariables, filters) && <SolidDashboardBody questions={questions} filters={filters} />}\n </>\n )}\n </div>\n {mcpUrl && (\n <div className={`chatter-section ${isOpenSolidXAiPanel === false ? 'collapsed' : 'open'}`} style={{ width: chatterWidth }}>\n {isOpenSolidXAiPanel && (\n <div\n style={{\n width: 5,\n cursor: 'col-resize',\n position: 'absolute',\n left: 0,\n top: 0,\n bottom: 0,\n height: '100%',\n zIndex: 9,\n }}\n onMouseDown={() => setIsResizing(true)}\n />\n )}\n {isOpenSolidXAiPanel &&\n <Button\n icon=\"pi pi-angle-double-right\"\n size=\"small\"\n text\n className=\"chatter-collapse-btn\"\n style={{ width: 30, height: 30, aspectRatio: '1/1' }}\n onClick={handleClose}\n />\n }\n\n {isOpenSolidXAiPanel === false ?\n <div className=\"flex flex-column gap-2 justify-content-center p-2\">\n <div className=\"chatter-collapsed-content\" onClick={handleOpen}>\n <div className=\"flex gap-2\"> <SolidXAIIcon /> SolidX AI </div>\n </div>\n <Button\n icon=\"pi pi-chevron-left\"\n size=\"small\"\n className=\"px-0\"\n style={{ width: 30 }}\n onClick={handleOpen}\n />\n </div>\n :\n <SolidAiMainWrapper mcpUrl={mcpUrl} />\n }\n </div>\n )}\n\n </div>\n );\n}\n\nexport default SolidDashboard;\n"]}
1
+ {"version":3,"file":"SolidDashboard.js","sourceRoot":"","sources":["../../../../src/components/core/dashboard/SolidDashboard.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { DashboardResponse, useGetDashboardQuery } from '../../../redux/api/dashboardApi';\nimport { SqlExpression } from '../../../types/solid-core';\nimport { Button } from 'primereact/button';\nimport { Tooltip } from \"primereact/tooltip\";\nimport qs from 'qs';\nimport { Dispatch, SetStateAction, useEffect, useRef, useState } from 'react';\nimport { SolidXAIIcon } from '../solid-ai/SolidXAIIcon';\nimport styles from './SolidDashboard.module.css';\nimport SolidDashboardBody, { GridItem } from './SolidDashboardBody';\nimport { DashboardFilter } from './DashboardFilter';\nimport { SolidAiMainWrapper } from '../solid-ai/SolidAiMainWrapper';\nimport { SolidDashboardFilterRequired } from './SolidDashboardFilterRequired';\nimport { SolidDashboardLoading } from './SolidDashboardLoading';\nimport { SolidDashboardRenderError } from './SolidDashboardRenderError';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { showNavbar, toggleNavbar } from \"../../../redux/features/navbarSlice\";\nimport SolidDashboardNotAvailable from './SolidDashboardNotAvailable';\nimport { useLazyGetMcpUrlQuery, useLazyGetSolidSettingsQuery } from '../../../redux/api/solidSettingsApi';\nimport showToast from '../../../helpers/showToast';\nimport { Toast } from \"primereact/toast\";\nimport { ERROR_MESSAGES } from '../../../constants/error-messages';\nimport { useUpsertUserDashboardLayoutMutation } from '../../../redux/api/dashboardLayoutApi';\n\nexport enum DashboardVariableType {\n DATE = 'date',\n SELECTION_STATIC = 'selectionStatic',\n SELECTION_DYNAMIC = 'selectionDynamic',\n}\n\nenum SOURCE_TYPE {\n SQL = 'sql',\n PROVIDER = 'provider',\n}\n\nexport interface DashboardVariableRecord {\n id: number;\n variableName: string;\n variableType: DashboardVariableType;\n selectionStaticValues?: string;\n selectionDynamicSourceType?: SOURCE_TYPE;\n selectionDynamicProviderName?: string;\n selectionDynamicSQL?: string;\n isMultiSelect?: boolean;\n defaultValue?: string;\n defaultOperator?: string;\n}\n\nfunction handleDashboardData(\n data: DashboardResponse,\n setDashboardVariables: Dispatch<SetStateAction<DashboardVariableRecord[]>>,\n setQuestions: Dispatch<SetStateAction<any[]>>,\n) {\n const { records, meta } = data;\n if (records && records.length > 0) {\n // Set the layout options for the dashboard body\n const dashboardData = records[0]; // Assuming we want the first dashboard\n\n // Set the dashboard variables\n setDashboardVariables(dashboardData.dashboardVariables || []);\n\n // Set the dashboard questions\n setQuestions(dashboardData.questions)\n\n }\n}\n\nfunction getQueryParams(moduleName: string, dashboardName?: string) {\n const filters: any = {\n module: {\n name: {\n $eq: moduleName\n }\n }\n };\n\n if (dashboardName !== undefined) {\n filters.name = { $eqi: dashboardName };\n }\n\n const query = {\n filters,\n populate: ['dashboardVariables', 'questions']\n };\n const urlQuery = qs.stringify(query, {\n encodeValuesOnly: true,\n });\n return urlQuery;\n}\n\n// Render the dashboard body only if:\n// 1. There are dashboard questions\n// AND\n// (\n// 1. There are dashboard variables and all dashboard variable filter rules have been applied i.e (all dashboard variables have been selected)\n//. OR\n// 2. There are no dashboard variables\n// )\n// \nfunction isRenderDashboardBody(questions: any[], dashboardVariables: DashboardVariableRecord[], filters: SqlExpression[]) {\n if (questions.length === 0) {\n return false;\n }\n\n if (dashboardVariables.length === 0) {\n return true;\n }\n\n // Check if all dashboard variables have corresponding filters applied\n const allVariablesFiltered = dashboardVariables.every(variable =>\n filters.some(filter => filter.variableName === variable.variableName)\n );\n\n return allVariablesFiltered;\n}\n\ntype SolidDashboardViewProps = {\n moduleName: string;\n dashboardName?: string;\n};\n\nconst SolidDashboard = (params: SolidDashboardViewProps) => {\n const { data, isLoading, error } = useGetDashboardQuery(getQueryParams(params.moduleName, params.dashboardName)) // FIXME : error handling should be done properly\n // Define a state called layoutOption and pass it after destructing the widgetOptions and dashboardOptions from layoutOption\n // TODO [HP]: Shouldn't the type of this state variable be something different? Why are we muddling this with layout but calling it body props? \n // TODO [HP]: Body props should be clearly made up of Gridstack layout options, the questions that make up the body & the filter[] which is an array of SqlExpressions\n // TODO [HP]: This is fully CONFUSED\n // const [layoutOption, setLayoutOption] = useState<SolidDashboardBodyProps>({\n // filters: [],\n // questions: [],\n // });\n\n // TODO [HP]: replace dashboardVariableFilterRules with filters everywhere...\n // const [dashboardVariableFilterRules, setDashboardVariableFilterRules] = useState<ISolidDashboardVariableFilterRule[]>([]);\n const dispatch = useDispatch();\n const toast = useRef<Toast>(null);\n\n const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);\n const [filters, setFilters] = useState<SqlExpression[]>([]);\n const [isOpenSolidXAiPanel, setIsOpenSolidXAiPanel] = useState(false);\n const [chatterWidth, setChatterWidth] = useState(380);\n const [isResizing, setIsResizing] = useState(false);\n const [questions, setQuestions] = useState<any[]>([]);\n const [dashboardVariables, setDashboardVariables] = useState<DashboardVariableRecord[]>([]);\n const [isDashboardFilterVisible, setIsDashboardFilterVisible] = useState(false);\n\n\n const [upsertDashboardLayout, { isLoading: isDashboardLayoutLoading, error: dashboardLayoutError, isSuccess: isDashboardLayoutSuccess, data: dashboardLayoutData }] = useUpsertUserDashboardLayoutMutation();\n\n const [dashboardLayout, setDashboardLayout] = useState<GridItem[]>([]);\n\n const updateUserDashboardLayout = async () => {\n try {\n const response = await upsertDashboardLayout({\n dashboardId: data?.records[0].id,\n layout: JSON.stringify(dashboardLayout),\n }).unwrap();\n if (response.statusCode === 200) {\n showToast(toast, \"success\", ERROR_MESSAGES.LAYOUT, ERROR_MESSAGES.DASHBOARD_LAYOUT_UPDATE_SUCCESSFULLY);\n }\n } catch (error) {\n showToast(toast, \"error\", ERROR_MESSAGES.LAYOUT, ERROR_MESSAGES.DASHBOARD_LAYOUT_UPDATE_FAILED);\n }\n }\n\n\n useEffect(() => {\n // Invoke the dashboard api to fetch the dashboard data\n // console.log('Dashboard Data testing:', isLoading, data, error);\n if (!isLoading && data) {\n // Assuming data contains the layout options\n handleDashboardData(data, setDashboardVariables, setQuestions);\n }\n }, [isLoading, data]);\n\n useEffect(() => {\n const storedOpen = localStorage.getItem('d_solidxai_open');\n const storedWidth = localStorage.getItem('d_solidxai_width');\n\n if (storedOpen !== null) {\n setIsOpenSolidXAiPanel(storedOpen === 'true');\n }\n\n if (storedWidth !== null) {\n const width = parseInt(storedWidth, 10);\n if (!isNaN(width)) {\n setChatterWidth(width);\n }\n }\n }, []);\n\n\n useEffect(() => {\n if (isResizing) {\n const handleMouseMove = (e: MouseEvent) => {\n const newWidth = window.innerWidth - e.clientX;\n const clampedWidth = Math.max(280, Math.min(newWidth, 700));\n setChatterWidth(clampedWidth);\n localStorage.setItem('d_solidxai_width', clampedWidth.toString());\n };\n\n const handleMouseUp = () => {\n setIsResizing(false);\n };\n\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n };\n }\n }, [isResizing]);\n\n\n const handleOpen = () => {\n setIsOpenSolidXAiPanel(true);\n localStorage.setItem('d_solidxai_open', 'true');\n };\n\n const handleClose = () => {\n setIsOpenSolidXAiPanel(false);\n localStorage.setItem('d_solidxai_open', 'false');\n };\n\n const toggleBothSidebars = () => {\n if (visibleNavbar) {\n dispatch(toggleNavbar()); // close both\n } else {\n dispatch(showNavbar()); // open both\n }\n };\n\n\n\n const [mcpUrl, setMcpUrl] = useState<string | null>(null);\n const [getMcpUrl] = useLazyGetMcpUrlQuery();\n\n const [trigger, { data: solidSettingsData }] = useLazyGetSolidSettingsQuery();\n useEffect(() => {\n trigger(\"\") // Fetch settings on mount\n }, [])\n\n useEffect(() => {\n if (solidSettingsData?.data?.mcpEnabled && solidSettingsData?.data?.mcpServerUrl) {\n enableSolidXAiPanel();\n }\n }, [solidSettingsData]);\n\n const enableSolidXAiPanel = async () => {\n try {\n const queryData = {\n showHeader: \"true\",\n inListView: \"true\"\n };\n const queryString = qs.stringify({ ...queryData }, { encodeValuesOnly: true });\n const response = await getMcpUrl(queryString).unwrap();\n console.log(\"response\", response);\n if (response && response?.data?.mcpUrl) {\n setMcpUrl(response?.data?.mcpUrl);\n }\n } catch (error) {\n\n }\n }\n\n\n return (\n <div className={`h-screen surface-0 flex`}>\n <Toast ref={toast} />\n\n <div className={`h-full flex-grow-1 ${styles.SolidDashboardPageContentWrapper}`}>\n {isLoading && <SolidDashboardLoading />}\n {error && <SolidDashboardRenderError />}\n {!isLoading && !error && data && data.records.length === 0 && (\n <SolidDashboardNotAvailable />\n )}\n {!isLoading && !error && data && data.records.length > 0 && (\n <>\n <div className=\"page-header\" style={{ borderBottom: '1px solid var(--primary-light-color)' }}>\n <div className='flex align-items-center gap-2'>\n <div className=\"apps-icon block md:hidden cursor-pointer\" onClick={toggleBothSidebars}>\n <i className=\"pi pi-th-large\"></i>\n </div>\n <p className={`view-title solid-text-wrapper flex align-items-center gap-1 ${styles.SolidDashboardTitle}`}>\n {data?.records[0]?.displayName ? data?.records[0]?.displayName : data?.records[0]?.name}\n {data?.records[0]?.description &&\n <>\n <Tooltip className='solid-field-tooltip' target=\".solid-field-tooltip-icon\" />\n <i className=\"pi pi-info-circle solid-field-tooltip-icon\"\n data-pr-tooltip={data?.records[0]?.description}\n data-pr-position={'right'}\n />\n </>\n }\n </p>\n </div>\n {dashboardVariables && dashboardVariables.length > 0 && (\n <>\n <div className='flex gap-2'>\n <a onClick={() => setIsDashboardFilterVisible(true)}>\n <>\n <Button\n type=\"button\"\n icon={filters.length > 0 ? \"pi pi-filter-fill\" : \"pi pi-filter\"}\n className={`p-button-sm lg:hidden solid-icon-button `}\n size='small'\n />\n\n <Button\n type=\"button\"\n icon={filters.length > 0 ? \"pi pi-filter-fill\" : \"pi pi-filter\"}\n label={\"Filter\"}\n className={`hidden lg:inline-flex`}\n size='small'\n\n />\n </>\n </a>\n {filters.length > 0 && (\n <Button\n type=\"button\"\n size=\"small\"\n icon=\"pi pi-filter-slash\"\n severity=\"secondary\"\n className=\"solid-icon-button \"\n outlined\n onClick={() => { setFilters([]); setIsDashboardFilterVisible(false); }}\n />\n )}\n <Button\n type=\"button\"\n size=\"small\"\n icon=\"pi pi-save\"\n severity=\"secondary\"\n className=\"solid-icon-button \"\n outlined\n onClick={() => updateUserDashboardLayout()} />\n </div>\n <DashboardFilter\n dashboardVariables={dashboardVariables}\n initialFilters={filters}\n onApply={setFilters}\n visible={isDashboardFilterVisible}\n onHide={() => setIsDashboardFilterVisible(false)}\n />\n </>\n )}\n </div>\n {!isRenderDashboardBody(questions, dashboardVariables, filters) && <SolidDashboardFilterRequired />}\n {isRenderDashboardBody(questions, dashboardVariables, filters) && <SolidDashboardBody dashboardId={data?.records[0]?.id} questions={questions} filters={filters} dashboardLayout={dashboardLayout} setDashboardLayout={setDashboardLayout} />}\n </>\n )}\n </div>\n {\n mcpUrl && (\n <div className={`chatter-section ${isOpenSolidXAiPanel === false ? 'collapsed' : 'open'}`} style={{ width: chatterWidth }}>\n {isOpenSolidXAiPanel && (\n <div\n style={{\n width: 5,\n cursor: 'col-resize',\n position: 'absolute',\n left: 0,\n top: 0,\n bottom: 0,\n height: '100%',\n zIndex: 9,\n }}\n onMouseDown={() => setIsResizing(true)}\n />\n )}\n {isOpenSolidXAiPanel &&\n <Button\n icon=\"pi pi-angle-double-right\"\n size=\"small\"\n text\n className=\"chatter-collapse-btn\"\n style={{ width: 30, height: 30, aspectRatio: '1/1' }}\n onClick={handleClose}\n />\n }\n\n {isOpenSolidXAiPanel === false ?\n <div className=\"flex flex-column gap-2 justify-content-center p-2\">\n <div className=\"chatter-collapsed-content\" onClick={handleOpen}>\n <div className=\"flex gap-2\"> <SolidXAIIcon /> SolidX AI </div>\n </div>\n <Button\n icon=\"pi pi-chevron-left\"\n size=\"small\"\n className=\"px-0\"\n style={{ width: 30 }}\n onClick={handleOpen}\n />\n </div>\n :\n <SolidAiMainWrapper mcpUrl={mcpUrl} />\n }\n </div>\n )\n }\n\n </div >\n );\n}\n\nexport default SolidDashboard;\n"]}
@@ -8,9 +8,13 @@
8
8
  }
9
9
 
10
10
  .SolidChartCardWrapper {
11
- box-shadow: 0px 6px 15px 1px rgba(0, 0, 0, 0.05);
12
- border-radius: 8px;
11
+ /* box-shadow: 0px 6px 15px 1px rgb(0 0 0 / 6%); */
12
+ border: 1px solid #e4e3e3;
13
+ border-radius: 12px;
13
14
  background-color: var(--surface-card);
15
+ height: 100%;
16
+ display: flex;
17
+ flex-direction: column;
14
18
  }
15
19
 
16
20
  .SolidChartTitle {
@@ -4,10 +4,10 @@ import { SqlExpression } from '../../../types/solid-core';
4
4
  import { Button } from 'primereact/button';
5
5
  import { Tooltip } from "primereact/tooltip";
6
6
  import qs from 'qs';
7
- import { Dispatch, SetStateAction, useEffect, useState } from 'react';
7
+ import { Dispatch, SetStateAction, useEffect, useRef, useState } from 'react';
8
8
  import { SolidXAIIcon } from '../solid-ai/SolidXAIIcon';
9
9
  import styles from './SolidDashboard.module.css';
10
- import SolidDashboardBody from './SolidDashboardBody';
10
+ import SolidDashboardBody, { GridItem } from './SolidDashboardBody';
11
11
  import { DashboardFilter } from './DashboardFilter';
12
12
  import { SolidAiMainWrapper } from '../solid-ai/SolidAiMainWrapper';
13
13
  import { SolidDashboardFilterRequired } from './SolidDashboardFilterRequired';
@@ -17,6 +17,10 @@ import { useDispatch, useSelector } from "react-redux";
17
17
  import { showNavbar, toggleNavbar } from "../../../redux/features/navbarSlice";
18
18
  import SolidDashboardNotAvailable from './SolidDashboardNotAvailable';
19
19
  import { useLazyGetMcpUrlQuery, useLazyGetSolidSettingsQuery } from '../../../redux/api/solidSettingsApi';
20
+ import showToast from '../../../helpers/showToast';
21
+ import { Toast } from "primereact/toast";
22
+ import { ERROR_MESSAGES } from '../../../constants/error-messages';
23
+ import { useUpsertUserDashboardLayoutMutation } from '../../../redux/api/dashboardLayoutApi';
20
24
 
21
25
  export enum DashboardVariableType {
22
26
  DATE = 'date',
@@ -61,7 +65,7 @@ function handleDashboardData(
61
65
  }
62
66
  }
63
67
 
64
- function getQueryParams(moduleName: string, dashboardId?: number, dashboardName?: string) {
68
+ function getQueryParams(moduleName: string, dashboardName?: string) {
65
69
  const filters: any = {
66
70
  module: {
67
71
  name: {
@@ -70,10 +74,8 @@ function getQueryParams(moduleName: string, dashboardId?: number, dashboardName?
70
74
  }
71
75
  };
72
76
 
73
- if (dashboardId !== undefined) {
74
- filters.id = { $eq: dashboardId };
75
- } else if (dashboardName !== undefined) {
76
- filters.name = { $eq: dashboardName };
77
+ if (dashboardName !== undefined) {
78
+ filters.name = { $eqi: dashboardName };
77
79
  }
78
80
 
79
81
  const query = {
@@ -114,12 +116,11 @@ function isRenderDashboardBody(questions: any[], dashboardVariables: DashboardVa
114
116
 
115
117
  type SolidDashboardViewProps = {
116
118
  moduleName: string;
117
- dashboardId?: number;
118
119
  dashboardName?: string;
119
120
  };
120
121
 
121
122
  const SolidDashboard = (params: SolidDashboardViewProps) => {
122
- const { data, isLoading, error } = useGetDashboardQuery(getQueryParams(params.moduleName, params.dashboardId, params.dashboardName)) // FIXME : error handling should be done properly
123
+ const { data, isLoading, error } = useGetDashboardQuery(getQueryParams(params.moduleName, params.dashboardName)) // FIXME : error handling should be done properly
123
124
  // Define a state called layoutOption and pass it after destructing the widgetOptions and dashboardOptions from layoutOption
124
125
  // TODO [HP]: Shouldn't the type of this state variable be something different? Why are we muddling this with layout but calling it body props?
125
126
  // TODO [HP]: Body props should be clearly made up of Gridstack layout options, the questions that make up the body & the filter[] which is an array of SqlExpressions
@@ -132,6 +133,8 @@ const SolidDashboard = (params: SolidDashboardViewProps) => {
132
133
  // TODO [HP]: replace dashboardVariableFilterRules with filters everywhere...
133
134
  // const [dashboardVariableFilterRules, setDashboardVariableFilterRules] = useState<ISolidDashboardVariableFilterRule[]>([]);
134
135
  const dispatch = useDispatch();
136
+ const toast = useRef<Toast>(null);
137
+
135
138
  const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);
136
139
  const [filters, setFilters] = useState<SqlExpression[]>([]);
137
140
  const [isOpenSolidXAiPanel, setIsOpenSolidXAiPanel] = useState(false);
@@ -142,6 +145,25 @@ const SolidDashboard = (params: SolidDashboardViewProps) => {
142
145
  const [isDashboardFilterVisible, setIsDashboardFilterVisible] = useState(false);
143
146
 
144
147
 
148
+ const [upsertDashboardLayout, { isLoading: isDashboardLayoutLoading, error: dashboardLayoutError, isSuccess: isDashboardLayoutSuccess, data: dashboardLayoutData }] = useUpsertUserDashboardLayoutMutation();
149
+
150
+ const [dashboardLayout, setDashboardLayout] = useState<GridItem[]>([]);
151
+
152
+ const updateUserDashboardLayout = async () => {
153
+ try {
154
+ const response = await upsertDashboardLayout({
155
+ dashboardId: data?.records[0].id,
156
+ layout: JSON.stringify(dashboardLayout),
157
+ }).unwrap();
158
+ if (response.statusCode === 200) {
159
+ showToast(toast, "success", ERROR_MESSAGES.LAYOUT, ERROR_MESSAGES.DASHBOARD_LAYOUT_UPDATE_SUCCESSFULLY);
160
+ }
161
+ } catch (error) {
162
+ showToast(toast, "error", ERROR_MESSAGES.LAYOUT, ERROR_MESSAGES.DASHBOARD_LAYOUT_UPDATE_FAILED);
163
+ }
164
+ }
165
+
166
+
145
167
  useEffect(() => {
146
168
  // Invoke the dashboard api to fetch the dashboard data
147
169
  // console.log('Dashboard Data testing:', isLoading, data, error);
@@ -246,6 +268,8 @@ const SolidDashboard = (params: SolidDashboardViewProps) => {
246
268
 
247
269
  return (
248
270
  <div className={`h-screen surface-0 flex`}>
271
+ <Toast ref={toast} />
272
+
249
273
  <div className={`h-full flex-grow-1 ${styles.SolidDashboardPageContentWrapper}`}>
250
274
  {isLoading && <SolidDashboardLoading />}
251
275
  {error && <SolidDashboardRenderError />}
@@ -275,23 +299,44 @@ const SolidDashboard = (params: SolidDashboardViewProps) => {
275
299
  {dashboardVariables && dashboardVariables.length > 0 && (
276
300
  <>
277
301
  <div className='flex gap-2'>
278
- <Button
279
- label="Filter"
280
- icon={filters.length > 0 ? "pi pi-filter-fill" : "pi pi-filter"}
281
- outlined={filters.length === 0}
282
- severity={filters.length > 0 ? "info" : "secondary"}
283
- style={filters.length > 0 ? { background: "rgb(114, 46, 209)" } : {}}
284
- size="small"
285
- onClick={() => setIsDashboardFilterVisible(true)}
286
- />
302
+ <a onClick={() => setIsDashboardFilterVisible(true)}>
303
+ <>
304
+ <Button
305
+ type="button"
306
+ icon={filters.length > 0 ? "pi pi-filter-fill" : "pi pi-filter"}
307
+ className={`p-button-sm lg:hidden solid-icon-button `}
308
+ size='small'
309
+ />
310
+
311
+ <Button
312
+ type="button"
313
+ icon={filters.length > 0 ? "pi pi-filter-fill" : "pi pi-filter"}
314
+ label={"Filter"}
315
+ className={`hidden lg:inline-flex`}
316
+ size='small'
317
+
318
+ />
319
+ </>
320
+ </a>
287
321
  {filters.length > 0 && (
288
322
  <Button
289
- // label="Clear Filters"
323
+ type="button"
324
+ size="small"
290
325
  icon="pi pi-filter-slash"
291
- severity="danger"
326
+ severity="secondary"
327
+ className="solid-icon-button "
328
+ outlined
292
329
  onClick={() => { setFilters([]); setIsDashboardFilterVisible(false); }}
293
330
  />
294
331
  )}
332
+ <Button
333
+ type="button"
334
+ size="small"
335
+ icon="pi pi-save"
336
+ severity="secondary"
337
+ className="solid-icon-button "
338
+ outlined
339
+ onClick={() => updateUserDashboardLayout()} />
295
340
  </div>
296
341
  <DashboardFilter
297
342
  dashboardVariables={dashboardVariables}
@@ -304,58 +349,60 @@ const SolidDashboard = (params: SolidDashboardViewProps) => {
304
349
  )}
305
350
  </div>
306
351
  {!isRenderDashboardBody(questions, dashboardVariables, filters) && <SolidDashboardFilterRequired />}
307
- {isRenderDashboardBody(questions, dashboardVariables, filters) && <SolidDashboardBody questions={questions} filters={filters} />}
352
+ {isRenderDashboardBody(questions, dashboardVariables, filters) && <SolidDashboardBody dashboardId={data?.records[0]?.id} questions={questions} filters={filters} dashboardLayout={dashboardLayout} setDashboardLayout={setDashboardLayout} />}
308
353
  </>
309
354
  )}
310
355
  </div>
311
- {mcpUrl && (
312
- <div className={`chatter-section ${isOpenSolidXAiPanel === false ? 'collapsed' : 'open'}`} style={{ width: chatterWidth }}>
313
- {isOpenSolidXAiPanel && (
314
- <div
315
- style={{
316
- width: 5,
317
- cursor: 'col-resize',
318
- position: 'absolute',
319
- left: 0,
320
- top: 0,
321
- bottom: 0,
322
- height: '100%',
323
- zIndex: 9,
324
- }}
325
- onMouseDown={() => setIsResizing(true)}
326
- />
327
- )}
328
- {isOpenSolidXAiPanel &&
329
- <Button
330
- icon="pi pi-angle-double-right"
331
- size="small"
332
- text
333
- className="chatter-collapse-btn"
334
- style={{ width: 30, height: 30, aspectRatio: '1/1' }}
335
- onClick={handleClose}
336
- />
337
- }
338
-
339
- {isOpenSolidXAiPanel === false ?
340
- <div className="flex flex-column gap-2 justify-content-center p-2">
341
- <div className="chatter-collapsed-content" onClick={handleOpen}>
342
- <div className="flex gap-2"> <SolidXAIIcon /> SolidX AI </div>
343
- </div>
356
+ {
357
+ mcpUrl && (
358
+ <div className={`chatter-section ${isOpenSolidXAiPanel === false ? 'collapsed' : 'open'}`} style={{ width: chatterWidth }}>
359
+ {isOpenSolidXAiPanel && (
360
+ <div
361
+ style={{
362
+ width: 5,
363
+ cursor: 'col-resize',
364
+ position: 'absolute',
365
+ left: 0,
366
+ top: 0,
367
+ bottom: 0,
368
+ height: '100%',
369
+ zIndex: 9,
370
+ }}
371
+ onMouseDown={() => setIsResizing(true)}
372
+ />
373
+ )}
374
+ {isOpenSolidXAiPanel &&
344
375
  <Button
345
- icon="pi pi-chevron-left"
376
+ icon="pi pi-angle-double-right"
346
377
  size="small"
347
- className="px-0"
348
- style={{ width: 30 }}
349
- onClick={handleOpen}
378
+ text
379
+ className="chatter-collapse-btn"
380
+ style={{ width: 30, height: 30, aspectRatio: '1/1' }}
381
+ onClick={handleClose}
350
382
  />
351
- </div>
352
- :
353
- <SolidAiMainWrapper mcpUrl={mcpUrl} />
354
- }
355
- </div>
356
- )}
383
+ }
384
+
385
+ {isOpenSolidXAiPanel === false ?
386
+ <div className="flex flex-column gap-2 justify-content-center p-2">
387
+ <div className="chatter-collapsed-content" onClick={handleOpen}>
388
+ <div className="flex gap-2"> <SolidXAIIcon /> SolidX AI </div>
389
+ </div>
390
+ <Button
391
+ icon="pi pi-chevron-left"
392
+ size="small"
393
+ className="px-0"
394
+ style={{ width: 30 }}
395
+ onClick={handleOpen}
396
+ />
397
+ </div>
398
+ :
399
+ <SolidAiMainWrapper mcpUrl={mcpUrl} />
400
+ }
401
+ </div>
402
+ )
403
+ }
357
404
 
358
- </div>
405
+ </div >
359
406
  );
360
407
  }
361
408
 
@@ -1,12 +1,24 @@
1
1
  import 'gridstack/dist/gridstack.min.css';
2
2
  import { GridStackOptions, GridStackWidget } from 'gridstack';
3
3
  import { SqlExpression } from '../../../types/solid-core';
4
+ import 'react-grid-layout/css/styles.css';
5
+ import 'react-resizable/css/styles.css';
4
6
  export interface SolidDashboardBodyProps {
5
7
  dashboardOptions?: GridStackOptions;
6
8
  widgetOptions?: GridStackWidget[];
9
+ dashboardId: string;
7
10
  questions: any[];
8
11
  filters: SqlExpression[];
12
+ dashboardLayout: GridItem[];
13
+ setDashboardLayout: (dashboardLayout: GridItem[]) => void;
9
14
  }
10
- declare const SolidDashboardBody: ({ questions, filters }: SolidDashboardBodyProps) => import("react/jsx-runtime").JSX.Element;
15
+ export type GridItem = {
16
+ i: string;
17
+ x: number;
18
+ y: number;
19
+ w: number;
20
+ h: number;
21
+ };
22
+ declare const SolidDashboardBody: ({ dashboardId, questions, filters, dashboardLayout, setDashboardLayout }: SolidDashboardBodyProps) => import("react/jsx-runtime").JSX.Element;
11
23
  export default SolidDashboardBody;
12
24
  //# sourceMappingURL=SolidDashboardBody.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidDashboardBody.d.ts","sourceRoot":"","sources":["../../../../src/components/core/dashboard/SolidDashboardBody.tsx"],"names":[],"mappings":"AACA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAM1D,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;IAElC,SAAS,EAAE,GAAG,EAAE,CAAC;IACjB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,QAAA,MAAM,kBAAkB,2BAAiC,uBAAuB,4CA+F/E,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"SolidDashboardBody.d.ts","sourceRoot":"","sources":["../../../../src/components/core/dashboard/SolidDashboardBody.tsx"],"names":[],"mappings":"AACA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI1D,OAAO,kCAAkC,CAAC;AAC1C,OAAO,gCAAgC,CAAC;AAMxC,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;IAElC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,GAAG,EAAE,CAAC;IACjB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,eAAe,EAAE,QAAQ,EAAE,CAAC;IAC5B,kBAAkB,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;CAC3D;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAqBF,QAAA,MAAM,kBAAkB,6EAAmF,uBAAuB,4CAgHjI,CAAC;AAEF,eAAe,kBAAkB,CAAC"}