@peak-ai/canvas 1.4.20 → 1.4.22

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 (225) hide show
  1. package/.babelrc +14 -0
  2. package/.eslintcache +1 -0
  3. package/.eslintignore +5 -0
  4. package/.eslintrc.js +29 -0
  5. package/{GrapesjsCanvas.js → dist/GrapesjsCanvas.js} +3 -2
  6. package/dist/GrapesjsCanvas.js.map +1 -0
  7. package/dist/declaration.d.js +2 -0
  8. package/dist/declaration.d.js.map +1 -0
  9. package/dist/package.json +62 -0
  10. package/dist/plugins/grapejs-plugin.js +7 -0
  11. package/dist/plugins/grapejs-plugin.js.map +1 -0
  12. package/dist/plugins/helpers/custom-modal.js +2 -0
  13. package/dist/plugins/helpers/custom-modal.js.map +1 -0
  14. package/dist/plugins/helpers/query-cache-context.d.ts +18 -0
  15. package/dist/plugins/helpers/query-cache-context.js +2 -0
  16. package/dist/plugins/helpers/query-cache-context.js.map +1 -0
  17. package/dist/plugins/helpers/query-cache-singleton.d.ts +25 -0
  18. package/dist/plugins/helpers/query-cache-singleton.js +4 -0
  19. package/dist/plugins/helpers/query-cache-singleton.js.map +1 -0
  20. package/dist/plugins/helpers/query-cache-utils.d.ts +48 -0
  21. package/dist/plugins/helpers/query-cache-utils.js +6 -0
  22. package/dist/plugins/helpers/query-cache-utils.js.map +1 -0
  23. package/{plugins → dist/plugins}/helpers/query-details-modal.d.ts +7 -2
  24. package/dist/plugins/helpers/query-details-modal.js +4 -0
  25. package/dist/plugins/helpers/query-details-modal.js.map +1 -0
  26. package/dist/plugins/helpers/query-heading-formatter.d.ts +1 -0
  27. package/dist/plugins/helpers/query-heading-formatter.js +5 -0
  28. package/dist/plugins/helpers/query-heading-formatter.js.map +1 -0
  29. package/dist/plugins/helpers/query-loading-modal.d.ts +6 -0
  30. package/dist/plugins/helpers/query-loading-modal.js +2 -0
  31. package/dist/plugins/helpers/query-loading-modal.js.map +1 -0
  32. package/dist/plugins/helpers/render-components.js +10 -0
  33. package/dist/plugins/helpers/render-components.js.map +1 -0
  34. package/{plugins → dist/plugins}/helpers/styled-info-button.d.ts +2 -1
  35. package/dist/plugins/helpers/styled-info-button.js +6 -0
  36. package/dist/plugins/helpers/styled-info-button.js.map +1 -0
  37. package/dist/shadcn/components/icons/thinking.gif +0 -0
  38. package/dist/shadcn/components/ui/error-wrapper.js +2 -0
  39. package/dist/shadcn/components/ui/error-wrapper.js.map +1 -0
  40. package/dist/types/images.d.js +2 -0
  41. package/dist/types/images.d.js.map +1 -0
  42. package/package.json +45 -7
  43. package/scripts/build.ts +120 -0
  44. package/src/GrapesjsCanvas.tsx +494 -0
  45. package/src/constants/index.ts +25 -0
  46. package/src/declaration.d.ts +1 -0
  47. package/src/helpers/compiled-table.css +2429 -0
  48. package/src/helpers/css.ts +2667 -0
  49. package/src/helpers/date-picker.ts +807 -0
  50. package/src/helpers/filter-placeholder.ts +18 -0
  51. package/src/helpers/index.ts +13 -0
  52. package/src/helpers/merge-json.ts +106 -0
  53. package/src/index.styles.ts +58 -0
  54. package/src/index.ts +9 -0
  55. package/src/plugins/grapejs-plugin.tsx +196 -0
  56. package/src/plugins/helpers/custom-modal.tsx +123 -0
  57. package/src/plugins/helpers/data-table.tsx +300 -0
  58. package/src/plugins/helpers/extra.tsx +164 -0
  59. package/src/plugins/helpers/query-cache-context.tsx +154 -0
  60. package/src/plugins/helpers/query-cache-singleton.ts +176 -0
  61. package/src/plugins/helpers/query-cache-utils.ts +226 -0
  62. package/src/plugins/helpers/query-details-modal.tsx +400 -0
  63. package/src/plugins/helpers/query-heading-formatter.ts +24 -0
  64. package/src/plugins/helpers/query-loading-modal.tsx +94 -0
  65. package/src/plugins/helpers/render-components.tsx +1450 -0
  66. package/src/plugins/helpers/styled-info-button.tsx +504 -0
  67. package/src/public/canvas.css +42 -0
  68. package/src/public/components-css/table/table-output.css +2436 -0
  69. package/src/public/components-css/table/table.css +30 -0
  70. package/src/public/output.css +2465 -0
  71. package/src/public/table.css +135 -0
  72. package/src/shadcn/components/icons/AiAvatarIcon.tsx +47 -0
  73. package/src/shadcn/components/icons/Co_driver Expanding button copy.svg +21 -0
  74. package/src/shadcn/components/icons/ai-avatar.svg +7 -0
  75. package/src/shadcn/components/icons/thinking.gif +0 -0
  76. package/src/shadcn/components/ui/button.tsx +132 -0
  77. package/src/shadcn/components/ui/card.tsx +92 -0
  78. package/src/shadcn/components/ui/chart.tsx +324 -0
  79. package/src/shadcn/components/ui/checkbox.tsx +27 -0
  80. package/src/shadcn/components/ui/component-wrapper.tsx +61 -0
  81. package/src/shadcn/components/ui/date-filter.tsx +816 -0
  82. package/src/shadcn/components/ui/error-container.tsx +125 -0
  83. package/src/shadcn/components/ui/error-wrapper.tsx +99 -0
  84. package/src/shadcn/components/ui/filter.tsx +368 -0
  85. package/src/shadcn/components/ui/hover-card.tsx +36 -0
  86. package/src/shadcn/components/ui/input.tsx +20 -0
  87. package/src/shadcn/components/ui/label.tsx +24 -0
  88. package/src/shadcn/components/ui/pagination.tsx +213 -0
  89. package/src/shadcn/components/ui/scroll-area.tsx +59 -0
  90. package/src/shadcn/components/ui/search.tsx +150 -0
  91. package/src/shadcn/components/ui/separator.tsx +26 -0
  92. package/src/shadcn/components/ui/skeleton.tsx +69 -0
  93. package/src/shadcn/components/ui/table.tsx +196 -0
  94. package/src/shadcn/components/ui/tabs.tsx +55 -0
  95. package/src/shadcn/components/ui/textarea.tsx +18 -0
  96. package/src/shadcn/components/ui/tooltip.tsx +87 -0
  97. package/src/shadcn/utils.ts +6 -0
  98. package/src/types/grapesjs-tailwind.d.ts +61 -0
  99. package/src/types/images.d.ts +1 -0
  100. package/tailwind.config.js +5 -0
  101. package/tooling/tailwind-compiler/index.js +99 -0
  102. package/tooling/tailwind-compiler/package.json +11 -0
  103. package/tooling/tailwind-compiler/yarn.lock +123 -0
  104. package/tsconfig.build.json +15 -0
  105. package/tsconfig.json +8 -0
  106. package/GrapesjsCanvas.js.map +0 -1
  107. package/plugins/grapejs-plugin.js +0 -7
  108. package/plugins/grapejs-plugin.js.map +0 -1
  109. package/plugins/helpers/custom-modal.js +0 -2
  110. package/plugins/helpers/custom-modal.js.map +0 -1
  111. package/plugins/helpers/query-details-modal.js +0 -4
  112. package/plugins/helpers/query-details-modal.js.map +0 -1
  113. package/plugins/helpers/query-loading-modal.d.ts +0 -5
  114. package/plugins/helpers/query-loading-modal.js +0 -2
  115. package/plugins/helpers/query-loading-modal.js.map +0 -1
  116. package/plugins/helpers/render-components.js +0 -10
  117. package/plugins/helpers/render-components.js.map +0 -1
  118. package/plugins/helpers/styled-info-button.js +0 -2
  119. package/plugins/helpers/styled-info-button.js.map +0 -1
  120. package/shadcn/components/ui/error-wrapper.js +0 -2
  121. package/shadcn/components/ui/error-wrapper.js.map +0 -1
  122. /package/{GrapesjsCanvas.d.ts → dist/GrapesjsCanvas.d.ts} +0 -0
  123. /package/{constants → dist/constants}/index.d.ts +0 -0
  124. /package/{constants → dist/constants}/index.js +0 -0
  125. /package/{constants → dist/constants}/index.js.map +0 -0
  126. /package/{helpers → dist/helpers}/compiled-table.css +0 -0
  127. /package/{helpers → dist/helpers}/css.d.ts +0 -0
  128. /package/{helpers → dist/helpers}/css.js +0 -0
  129. /package/{helpers → dist/helpers}/css.js.map +0 -0
  130. /package/{helpers → dist/helpers}/date-picker.d.ts +0 -0
  131. /package/{helpers → dist/helpers}/date-picker.js +0 -0
  132. /package/{helpers → dist/helpers}/date-picker.js.map +0 -0
  133. /package/{helpers → dist/helpers}/filter-placeholder.d.ts +0 -0
  134. /package/{helpers → dist/helpers}/filter-placeholder.js +0 -0
  135. /package/{helpers → dist/helpers}/filter-placeholder.js.map +0 -0
  136. /package/{helpers → dist/helpers}/index.d.ts +0 -0
  137. /package/{helpers → dist/helpers}/index.js +0 -0
  138. /package/{helpers → dist/helpers}/index.js.map +0 -0
  139. /package/{helpers → dist/helpers}/merge-json.d.ts +0 -0
  140. /package/{helpers → dist/helpers}/merge-json.js +0 -0
  141. /package/{helpers → dist/helpers}/merge-json.js.map +0 -0
  142. /package/{index.d.ts → dist/index.d.ts} +0 -0
  143. /package/{index.js → dist/index.js} +0 -0
  144. /package/{index.js.map → dist/index.js.map} +0 -0
  145. /package/{index.styles.d.ts → dist/index.styles.d.ts} +0 -0
  146. /package/{index.styles.js → dist/index.styles.js} +0 -0
  147. /package/{index.styles.js.map → dist/index.styles.js.map} +0 -0
  148. /package/{plugins → dist/plugins}/grapejs-plugin.d.ts +0 -0
  149. /package/{plugins → dist/plugins}/helpers/custom-modal.d.ts +0 -0
  150. /package/{plugins → dist/plugins}/helpers/data-table.d.ts +0 -0
  151. /package/{plugins → dist/plugins}/helpers/data-table.js +0 -0
  152. /package/{plugins → dist/plugins}/helpers/data-table.js.map +0 -0
  153. /package/{plugins → dist/plugins}/helpers/extra.d.ts +0 -0
  154. /package/{plugins → dist/plugins}/helpers/extra.js +0 -0
  155. /package/{plugins → dist/plugins}/helpers/extra.js.map +0 -0
  156. /package/{plugins → dist/plugins}/helpers/render-components.d.ts +0 -0
  157. /package/{shadcn → dist/shadcn}/components/icons/AiAvatarIcon.d.ts +0 -0
  158. /package/{shadcn → dist/shadcn}/components/icons/AiAvatarIcon.js +0 -0
  159. /package/{shadcn → dist/shadcn}/components/icons/AiAvatarIcon.js.map +0 -0
  160. /package/{shadcn → dist/shadcn}/components/ui/button.d.ts +0 -0
  161. /package/{shadcn → dist/shadcn}/components/ui/button.js +0 -0
  162. /package/{shadcn → dist/shadcn}/components/ui/button.js.map +0 -0
  163. /package/{shadcn → dist/shadcn}/components/ui/card.d.ts +0 -0
  164. /package/{shadcn → dist/shadcn}/components/ui/card.js +0 -0
  165. /package/{shadcn → dist/shadcn}/components/ui/card.js.map +0 -0
  166. /package/{shadcn → dist/shadcn}/components/ui/chart.d.ts +0 -0
  167. /package/{shadcn → dist/shadcn}/components/ui/chart.js +0 -0
  168. /package/{shadcn → dist/shadcn}/components/ui/chart.js.map +0 -0
  169. /package/{shadcn → dist/shadcn}/components/ui/checkbox.d.ts +0 -0
  170. /package/{shadcn → dist/shadcn}/components/ui/checkbox.js +0 -0
  171. /package/{shadcn → dist/shadcn}/components/ui/checkbox.js.map +0 -0
  172. /package/{shadcn → dist/shadcn}/components/ui/component-wrapper.d.ts +0 -0
  173. /package/{shadcn → dist/shadcn}/components/ui/component-wrapper.js +0 -0
  174. /package/{shadcn → dist/shadcn}/components/ui/component-wrapper.js.map +0 -0
  175. /package/{shadcn → dist/shadcn}/components/ui/date-filter.d.ts +0 -0
  176. /package/{shadcn → dist/shadcn}/components/ui/date-filter.js +0 -0
  177. /package/{shadcn → dist/shadcn}/components/ui/date-filter.js.map +0 -0
  178. /package/{shadcn → dist/shadcn}/components/ui/error-container.d.ts +0 -0
  179. /package/{shadcn → dist/shadcn}/components/ui/error-container.js +0 -0
  180. /package/{shadcn → dist/shadcn}/components/ui/error-container.js.map +0 -0
  181. /package/{shadcn → dist/shadcn}/components/ui/error-wrapper.d.ts +0 -0
  182. /package/{shadcn → dist/shadcn}/components/ui/filter.d.ts +0 -0
  183. /package/{shadcn → dist/shadcn}/components/ui/filter.js +0 -0
  184. /package/{shadcn → dist/shadcn}/components/ui/filter.js.map +0 -0
  185. /package/{shadcn → dist/shadcn}/components/ui/hover-card.d.ts +0 -0
  186. /package/{shadcn → dist/shadcn}/components/ui/hover-card.js +0 -0
  187. /package/{shadcn → dist/shadcn}/components/ui/hover-card.js.map +0 -0
  188. /package/{shadcn → dist/shadcn}/components/ui/input.d.ts +0 -0
  189. /package/{shadcn → dist/shadcn}/components/ui/input.js +0 -0
  190. /package/{shadcn → dist/shadcn}/components/ui/input.js.map +0 -0
  191. /package/{shadcn → dist/shadcn}/components/ui/label.d.ts +0 -0
  192. /package/{shadcn → dist/shadcn}/components/ui/label.js +0 -0
  193. /package/{shadcn → dist/shadcn}/components/ui/label.js.map +0 -0
  194. /package/{shadcn → dist/shadcn}/components/ui/pagination.d.ts +0 -0
  195. /package/{shadcn → dist/shadcn}/components/ui/pagination.js +0 -0
  196. /package/{shadcn → dist/shadcn}/components/ui/pagination.js.map +0 -0
  197. /package/{shadcn → dist/shadcn}/components/ui/scroll-area.d.ts +0 -0
  198. /package/{shadcn → dist/shadcn}/components/ui/scroll-area.js +0 -0
  199. /package/{shadcn → dist/shadcn}/components/ui/scroll-area.js.map +0 -0
  200. /package/{shadcn → dist/shadcn}/components/ui/search.d.ts +0 -0
  201. /package/{shadcn → dist/shadcn}/components/ui/search.js +0 -0
  202. /package/{shadcn → dist/shadcn}/components/ui/search.js.map +0 -0
  203. /package/{shadcn → dist/shadcn}/components/ui/separator.d.ts +0 -0
  204. /package/{shadcn → dist/shadcn}/components/ui/separator.js +0 -0
  205. /package/{shadcn → dist/shadcn}/components/ui/separator.js.map +0 -0
  206. /package/{shadcn → dist/shadcn}/components/ui/skeleton.d.ts +0 -0
  207. /package/{shadcn → dist/shadcn}/components/ui/skeleton.js +0 -0
  208. /package/{shadcn → dist/shadcn}/components/ui/skeleton.js.map +0 -0
  209. /package/{shadcn → dist/shadcn}/components/ui/table.d.ts +0 -0
  210. /package/{shadcn → dist/shadcn}/components/ui/table.js +0 -0
  211. /package/{shadcn → dist/shadcn}/components/ui/table.js.map +0 -0
  212. /package/{shadcn → dist/shadcn}/components/ui/tabs.d.ts +0 -0
  213. /package/{shadcn → dist/shadcn}/components/ui/tabs.js +0 -0
  214. /package/{shadcn → dist/shadcn}/components/ui/tabs.js.map +0 -0
  215. /package/{shadcn → dist/shadcn}/components/ui/textarea.d.ts +0 -0
  216. /package/{shadcn → dist/shadcn}/components/ui/textarea.js +0 -0
  217. /package/{shadcn → dist/shadcn}/components/ui/textarea.js.map +0 -0
  218. /package/{shadcn → dist/shadcn}/components/ui/tooltip.d.ts +0 -0
  219. /package/{shadcn → dist/shadcn}/components/ui/tooltip.js +0 -0
  220. /package/{shadcn → dist/shadcn}/components/ui/tooltip.js.map +0 -0
  221. /package/{shadcn → dist/shadcn}/utils.d.ts +0 -0
  222. /package/{shadcn → dist/shadcn}/utils.js +0 -0
  223. /package/{shadcn → dist/shadcn}/utils.js.map +0 -0
  224. /package/{types → dist/types}/grapesjs-tailwind.d.js +0 -0
  225. /package/{types → dist/types}/grapesjs-tailwind.d.js.map +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-components.js","names":["chroma","React","useEffect","useState","useRef","renderNoDataFallback","CircleAlert","TrendingDown","TrendingUp","ShoppingCart","ChartBarBig","Tag","MapPin","StyledInfoButton","filterPlaceholders","theme","Markdown","Bar","BarChart","CartesianGrid","Legend","Line","LineChart","Pie","PieChart","ResponsiveContainer","XAxis","YAxis","domutil","TooltipButton","Card","CardContent","CardDescription","CardFooter","CardHeader","CardTitle","ChartContainer","ChartTooltip","ChartTooltipContent","renderFilter","ScrollArea","ScrollBar","renderSearch","CardLoader","ChartLoader","MarkdownLoader","Tabs","TabsContent","TabsList","TabsTrigger","cn","getAffectedComponentsWithLoader","DataTable","ComponentWrapper","jsx","_jsx","jsxs","_jsxs","getOffset","el","html","ownerDocument","documentElement","box","top","left","getBoundingClientRect","iframe","document","querySelector","iframeWindow","contentWindow","pageYOffset","clientTop","pageXOffset","clientLeft","baseColors","colors","Blue_100","Blue_30","Purpley_100","Purpley_30","Light_Bluish_Green","Wild_Strawberry","iconMap","Equalizer","Style","Place","getIconFromString","iconString","lowerIconString","toLowerCase","matchingKey","Object","keys","find","key","getNColors","n","safeBaseColors","Array","isArray","_iterator","_createForOfIteratorHelperLoose","_step","done","baseColor","value","push","scale","mode","getOneColor","existing","color","base","Math","floor","random","length","selectedColorIndex","includes","selectedColors","i","renderActionCard","props","gjsModel","rest","_objectWithoutPropertiesLoose","_excluded","_useState","_extends","get","allData","setAllData","_allData$headerConten","headerContent","icon","_allData$bodyContent","bodyContent","_useState2","attributes","setAttributes","on","prevData","defaultClasses","className","style","backgroundColor","isEditable","contentEditable","children","error","isMissing","renderCard","_attributes$error","_attributes$isMissing","_props$isEditable","_props$performInterac","performInteraction","Promise","resolve","_excluded2","_useState3","headerDescription","footerContent","footerClass","footerIcon","contentMetadata","contentMetadataClass","dataClassName","dataError","dataIsMissing","toSafeText","JSON","stringify","safeHeaderContent","safeHeaderDescription","safeBodyContent","safeFooterContent","safeContentMetadata","_useState4","defaultFooterClasses","defaultContentMetadataClasses","mergedCardClassName","mergedFooterClassName","mergedContentMetadataClassName","hasError","Boolean","hasMissing","isLoading","interactionApiInProgress","loading","footerIconText","String","getCardContent","showEmpty","Fragment","trim","componentId","position","isVisible","componentProps","renderChartComponent","chartType","data","config","safeData","cursor","content","hideLabel","dataKey","nameKey","innerRadius","strokeWidth","label","_ref","name","percent","toFixed","undefined","labelLine","dataKeys","barDataKeys","chartUi","vertical","xAxis","align","wrapperStyle","marginLeft","map","_ref2","fill","radius","indicator","safeDataKeysLine","_ref3","type","stroke","_ref4","renderChart","_props$isEditable2","_props$performInterac2","_excluded3","_useState5","_useState6","containerRef","_useState7","containerWidth","setContainerWidth","handlePropsChange","newProps","off","handleAttributesChange","newAttributes","updateContainerWidth","current","offsetWidth","window","addEventListener","removeEventListener","_allData$config","_allData$chartType","_allData$chartData","chartData","_allData$title","title","_allData$subTitle","subTitle","mergedClasses","safeChartData","width","totalDataPoints","getResponsiveConfig","safeDataKeys","max","barCategoryGap","minWidth","height","orientation","ref","renderTable","_props$isEditable3","_props$performInterac3","_excluded4","_useState8","cardRef","_useState9","rawData","_allData$headerMapper","headerMapper","rawHeaderMapper","_allData$title2","_allData$subTitle2","_allData$actions","actions","pagination","cleaned","id","fromEntries","entries","filter","_ref5","sortConfig","_gjsModel$get","_ref7","_ref6","sortColumn","sortDirection","_useState10","viewportWidth","setViewportWidth","_useState11","scrollAreaHeight","setScrollAreaHeight","calculateTableHeight","tableWidth","rowCount","_gjsModel$collection","widthRatio","baseTableHeight","targetScrollAreaHeight","headerHeight","rowHeight","calculatedHeight","min","tableId","editor","em","collection","canvasDocument","Canvas","getDocument","tableElement","headerElement","offsetHeight","actualHeaderHeight","standardHeaderHeight","heightDifference","updateViewportWidth","iframeDocument","dashboardRoot","getElementById","effectiveViewportWidth","clientWidth","updateTableWidthAndApplyCSS","_gjsModel$collection2","parent","tableActualWidth","timeoutId","setTimeout","clearTimeout","parsedData","datum","newData","onRowAction","_x","_x2","_onRowAction","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","rowIndex","actionId","wrap","_callee$","_context","prev","next","interactionType","payload","row","affectedComponents","stop","onPageChange","_x3","_x4","_onPageChange","_callee2","pageNumber","pageSize","_gjsModel$get2","_ref8","_callee2$","_context2","handleSort","_x5","_x6","_handleSort","_callee3","column","direction","currentProps","_callee3$","_context3","set","onSort","otherProps","tableActions","firstRowData","renderTab","tabsWidth","safeTabs","tabs","showFallback","defaultValue","tab","fontFamily","fontWeight","fontSize","lineHeight","letterSpacing","disabled","renderMarkdown","_props$isEditable4","_excluded5","_useState12","_useState13","_useState14","isEditing","setIsEditing","editRef","startEditing","setupEditor","innerHTML","textContent","summaryText","focus","saveChanges","innerText","markdownStyles","ul","h1","h2","h3","h4","h5","h6","minHeight","options","overrides","onBlur","suppressContentEditableWarning","whiteSpace","wordWrap","onClick","renderButton","_props$isEditable5","_props$performInterac4","_useState15","_useState16","text","_allData$variant","variant","_allData$size","size","tooltipContent","interact","concat","renderActionCardWithWrapper","componentType","renderButtonWithWrapper","renderCardWithWrapper","renderChartWithWrapper","renderFilterWithWrapper","renderMarkdownWithWrapper","renderSearchWithWrapper","renderTableWithWrapper","renderTabWithWrapper","renderActions","_props$isEditable6","action","index","description","renderActionsWithWrapper","getRenderers","ActionCard","Actions","Button","Chart","Filter","Search","Table"],"sources":["../../../src/plugins/helpers/render-components.tsx"],"sourcesContent":["/* eslint-disable no-nested-ternary */\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable func-style */\n/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable func-names */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport chroma from 'chroma-js';\nimport React, { useEffect, useState, JSX, useRef } from 'react';\nimport { renderNoDataFallback } from './extra';\nimport {\n CircleAlert,\n TrendingDown,\n TrendingUp,\n ShoppingCart,\n ChartBarBig,\n Tag,\n MapPin,\n} from 'lucide-react';\nimport { StyledInfoButton } from './styled-info-button';\nimport { filterPlaceholders } from '../../helpers/filter-placeholder';\n\nimport { theme } from '@peak-ai/ais-components/theme';\n\nimport Markdown from 'markdown-to-jsx';\n\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n Line,\n LineChart,\n Pie,\n PieChart,\n ResponsiveContainer,\n XAxis,\n YAxis,\n} from 'recharts/lib';\n\n// @ts-ignore\nimport * as domutil from 'recharts/lib/util/DOMUtils';\n\nimport { TooltipButton } from '../../shadcn/components/ui/button';\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from '../../shadcn/components/ui/card';\nimport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n} from '../../shadcn/components/ui/chart';\nimport { renderFilter } from '../../shadcn/components/ui/filter';\nimport { ScrollArea, ScrollBar } from '../../shadcn/components/ui/scroll-area';\nimport { renderSearch } from '../../shadcn/components/ui/search';\nimport { CardLoader, ChartLoader, MarkdownLoader } from '../../shadcn/components/ui/skeleton';\nimport { SortDirection } from '../../shadcn/components/ui/table';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '../../shadcn/components/ui/tabs';\n\nimport { cn } from '../../shadcn/utils';\nimport { getAffectedComponentsWithLoader } from '../../helpers';\nimport { DataTable } from './data-table';\nimport { ComponentWrapper } from '../../shadcn/components/ui/error-wrapper';\n\n// Monkey-patching the getOffset function to use iframe's window instead of global one\n// REMEMBER TO UDPATE THIS WHEN recharts IS UPGRADED\n// @ts-ignore\ndomutil.getOffset = (\n el: HTMLElement,\n): {\n top: number;\n left: number;\n} => {\n const html = el.ownerDocument.documentElement;\n let box = { top: 0, left: 0 };\n\n if (typeof el.getBoundingClientRect !== 'undefined') {\n box = el.getBoundingClientRect();\n }\n\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n\n return {\n top: box.top + iframeWindow.pageYOffset - html.clientTop,\n left: box.left + iframeWindow.pageXOffset - html.clientLeft,\n };\n};\n\nconst baseColors = [\n [theme.colors.Blue_100, theme.colors.Blue_30],\n [theme.colors.Purpley_100, theme.colors.Purpley_30],\n [theme.colors.Light_Bluish_Green, '#06601b'],\n [theme.colors.Wild_Strawberry, '#4d001c'],\n];\n\nconst iconMap: Record<string, JSX.Element> = {\n TrendingUp: <TrendingUp />,\n TrendingDown: <TrendingDown />,\n ShoppingCart: <ShoppingCart />,\n Equalizer: <ChartBarBig />,\n Style: <Tag />,\n Place: <MapPin />,\n};\n\nfunction getIconFromString(iconString: string): JSX.Element | null {\n if (!iconString) {\n return null;\n }\n\n if (iconMap[iconString]) {\n return iconMap[iconString];\n }\n\n const lowerIconString = iconString.toLowerCase();\n const matchingKey = Object.keys(iconMap).find((key) => key.toLowerCase() === lowerIconString);\n\n if (matchingKey) {\n return iconMap[matchingKey];\n }\n\n return null;\n}\n\nfunction getNColors(n: number) {\n const colors: Array<string[]> = [];\n const safeBaseColors = Array.isArray(baseColors) ? baseColors : [];\n\n for (const baseColor of safeBaseColors) {\n // eslint-disable-next-line import/no-named-as-default-member\n colors.push(chroma.scale(baseColor).mode('lab').colors(n));\n }\n\n function getOneColor(existing: Array<string>) {\n let color: null | string = null;\n\n do {\n const base = colors[Math.floor(Math.random() * colors.length)];\n const selectedColorIndex = Math.floor(Math.random() * base.length);\n color = base[selectedColorIndex];\n } while (existing.includes(color));\n\n return color as string;\n }\n\n const selectedColors: Array<string> = [];\n\n for (let i = 0; i < n; i++) {\n selectedColors.push(getOneColor(selectedColors));\n }\n\n return selectedColors;\n}\n\n/* TODO: Loader remains */\nexport function renderActionCard(props: any): JSX.Element {\n const { gjsModel, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...filterPlaceholders(gjsModel.get('componentProps')),\n ...filterPlaceholders(props),\n });\n\n const {\n headerContent = 'Default action card title',\n icon,\n bodyContent = 'Default body content. Click to edit.',\n } = allData;\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n gjsModel.on('change:componentProps', () => {\n setAllData((prevData: any) => ({\n ...prevData,\n ...filterPlaceholders(gjsModel.get('componentProps')),\n }));\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const defaultClasses = 'text-black p-4 rounded-lg shadow border flex flex-col h-full';\n\n return (\n <Card\n className={`${defaultClasses} relative`}\n style={{ backgroundColor: '#f9f9fe' }}\n isEditable={false}\n contentEditable={false}\n {...rest}\n >\n <CardContent className=\"p-0\" isEditable={false} contentEditable={false}>\n <div className=\"px-4 py-3\">\n <div className=\"flex items-start flex-col\">\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"text-xl font-semibold\">{headerContent}</div>\n <div className=\"text-5xl ml-2 flex items-center\" aria-hidden=\"true\">\n {getIconFromString(icon)}\n </div>\n </div>\n <div className=\"w-full mt-1\">\n {attributes.error ||\n allData.error ||\n attributes.isMissing ||\n allData.isMissing ||\n !bodyContent ? (\n <span className=\"flex flex-row items-center px-3 py-2\">\n <CircleAlert className=\"w-3 h-3 text-gray-400 mr-1\" />\n <p className=\"text-sm text-gray-500 max-w-md text-center\">\n No data available for given filters\n </p>\n </span>\n ) : (\n <div className=\"text-base leading-relaxed\">{bodyContent}</div>\n )}\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n );\n}\n\nexport function renderCard(props: any): JSX.Element {\n const {\n isEditable = false,\n gjsModel,\n performInteraction = () => Promise.resolve({}),\n ...rest\n } = props;\n\n const [allData, setAllData] = useState({\n ...filterPlaceholders(gjsModel.get('componentProps')),\n ...filterPlaceholders(props),\n });\n\n const {\n headerContent,\n headerDescription,\n bodyContent,\n footerContent,\n footerClass,\n footerIcon,\n contentMetadata,\n contentMetadataClass,\n className: dataClassName,\n error: dataError,\n isMissing: dataIsMissing,\n } = allData;\n\n function toSafeText(value: unknown): string {\n if (value === null) {\n return '';\n }\n\n return typeof value === 'string' ? value : JSON.stringify(value);\n }\n\n const safeHeaderContent = toSafeText(headerContent);\n const safeHeaderDescription = toSafeText(headerDescription);\n const safeBodyContent = toSafeText(bodyContent);\n const safeFooterContent = toSafeText(footerContent);\n const safeContentMetadata = toSafeText(contentMetadata);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n gjsModel.on('change:componentProps', () => {\n setAllData((prevData: any) => ({\n ...prevData,\n ...filterPlaceholders(gjsModel.get('componentProps')),\n }));\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const defaultClasses =\n 'bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none';\n const defaultFooterClasses = safeFooterContent\n ? 'text-sm bg-pink-50 text-pink-900 shadow-sm'\n : 'text-sm';\n const defaultContentMetadataClasses = 'text-xs';\n\n const mergedCardClassName = dataClassName ? cn(defaultClasses, dataClassName) : defaultClasses;\n const mergedFooterClassName = footerClass\n ? cn(defaultFooterClasses, footerClass)\n : defaultFooterClasses;\n const mergedContentMetadataClassName = contentMetadataClass\n ? cn(defaultContentMetadataClasses, contentMetadataClass)\n : defaultContentMetadataClasses;\n\n const hasError = Boolean(attributes?.error ?? dataError);\n const hasMissing = Boolean(attributes?.isMissing ?? dataIsMissing);\n const isLoading = Boolean(\n (attributes?.interactionApiInProgress || attributes?.loading) && !hasError && !hasMissing,\n );\n\n const footerIconText =\n typeof footerIcon === 'string'\n ? footerIcon\n : footerIcon && typeof footerIcon === 'object' && 'icon' in (footerIcon as any)\n ? String((footerIcon as any).icon)\n : '';\n\n function getCardContent() {\n if (isLoading) {\n return (\n <CardContent>\n <CardLoader />\n </CardContent>\n );\n }\n\n const showEmpty = hasError || hasMissing || !safeBodyContent;\n\n return (\n <React.Fragment>\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"headerContent\" contentEditable={isEditable} className=\"text-lg\">\n {safeHeaderContent}\n </CardTitle>\n <CardDescription\n data-slot=\"headerDescription\"\n contentEditable={isEditable}\n className=\"text-sm\"\n >\n {safeHeaderDescription}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n\n {showEmpty ? (\n <span className=\"flex flex-row items-center px-3 py-2\">\n <CircleAlert className=\"w-3 h-3 text-gray-400 mr-1\" />\n <p className=\"text-sm text-gray-500 max-w-md text-center\">\n No data available for given filters\n </p>\n </span>\n ) : (\n <CardContent data-slot=\"bodyContent\" contentEditable={false} className=\"flex-grow\">\n <div className=\"text-3xl font-semibold truncate\">{safeBodyContent}</div>\n {safeContentMetadata && (\n <div className={mergedContentMetadataClassName} style={{ color: '#2A44D4' }}>\n {safeContentMetadata}\n </div>\n )}\n </CardContent>\n )}\n\n <CardFooter\n data-slot=\"footerContent\"\n contentEditable={isEditable}\n className={cn(mergedFooterClassName)}\n >\n {(footerIconText || '').trim() && (\n <span className=\"mr-2\" aria-hidden=\"true\">\n {footerIconText}\n </span>\n )}\n {safeFooterContent || ''}\n </CardFooter>\n </React.Fragment>\n );\n }\n\n return (\n <Card {...rest} className={`${mergedCardClassName} relative`}>\n {getCardContent()}\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nfunction renderChartComponent(chartType: string, data: any, config: any): JSX.Element {\n const safeData = Array.isArray(data) ? data : [];\n\n if (safeData.length === 0) {\n return renderNoDataFallback();\n }\n\n switch (chartType) {\n case 'pie':\n return (\n <PieChart>\n {safeData.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={safeData}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n safeData.length < 20\n ? ({ name, percent }: { name: string; percent: number }) =>\n `${name}: ${(percent * 100).toFixed(0)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n\n case 'bar': {\n config.dataKeys = config.dataKeys || [];\n\n const barDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n return (\n <BarChart data={safeData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <Legend align=\"left\" wrapperStyle={{ marginLeft: 20 }} />\n {barDataKeys.map(({ key, name, color }: { key: string; name: string; color: string }) => {\n return <Bar dataKey={key} fill={color ?? '#4caf50'} name={name} key={key} radius={2} />;\n })}\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n </BarChart>\n );\n }\n\n case 'line': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeysLine = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n return (\n <LineChart data={safeData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n {safeDataKeysLine.map(\n ({ key, name, color }: { key: string; name: string; color: string }) => {\n return (\n <Line\n type=\"monotone\"\n dataKey={key}\n stroke={color ?? '#4caf50'}\n name={name}\n key={key}\n />\n );\n },\n )}\n <Legend align=\"left\" />\n </LineChart>\n );\n }\n\n default:\n return (\n <PieChart>\n {safeData.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={safeData}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n safeData.length < 20\n ? ({ name, percent }: { name: string; percent: number }) =>\n `${name}: ${(percent * 100).toFixed(0)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n }\n}\n\nexport function renderChart(props: any): JSX.Element {\n const {\n isEditable = false,\n gjsModel,\n performInteraction = () => Promise.resolve({}),\n ...rest\n } = props;\n\n const [allData, setAllData] = useState({\n ...filterPlaceholders(gjsModel.get('componentProps')),\n ...filterPlaceholders(props),\n });\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newProps = filterPlaceholders(gjsModel.get('componentProps'));\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...newProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n const newAttributes = gjsModel.get('attributes');\n setAttributes({\n ...newAttributes,\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const updateContainerWidth = () => {\n if (containerRef.current) {\n setContainerWidth(containerRef.current.offsetWidth);\n }\n };\n\n updateContainerWidth();\n window.addEventListener('resize', updateContainerWidth);\n\n return () => window.removeEventListener('resize', updateContainerWidth);\n }, []);\n\n const {\n config = {},\n chartType = 'pie',\n chartData = [],\n className,\n title = 'Title',\n subTitle = 'Subtitle',\n } = allData;\n\n const defaultClasses = 'aspect-auto h-[250px] w-full';\n const mergedClasses = className ? cn(defaultClasses, className) : defaultClasses;\n\n if (chartType === 'pie') {\n const safeChartData = Array.isArray(chartData) ? chartData : [];\n const colors = getNColors(safeChartData.length);\n\n for (let i = 0; i < safeChartData.length; i++) {\n const data = safeChartData[i];\n\n if (!data.fill) {\n data.fill = colors[i];\n }\n }\n } else if (!config.color) {\n const safeBaseColors = Array.isArray(baseColors) ? baseColors : [];\n\n if (safeBaseColors.length > 0) {\n config.color = safeBaseColors[Math.floor(Math.random() * safeBaseColors.length)];\n }\n }\n\n let width: number | undefined = undefined;\n let totalDataPoints = 0;\n\n // Helper function to get responsive config\n const getResponsiveConfig = () => {\n if (\n chartType === 'bar' &&\n totalDataPoints > 15 &&\n containerWidth > 0 &&\n width &&\n width <= containerWidth\n ) {\n // If chart fits in container, use responsive behavior\n return { ...config, chartUi: {} };\n }\n\n return config;\n };\n\n if (chartType === 'bar') {\n config.dataKeys = config.dataKeys || [];\n const safeChartData = Array.isArray(chartData) ? chartData : [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n totalDataPoints = safeChartData.length * Math.max(1, safeDataKeys.length);\n\n if (totalDataPoints > 15) {\n width =\n totalDataPoints * 20 +\n safeDataKeys.length * 8 * safeChartData.length +\n safeChartData.length * 15;\n config.chartUi = {\n barCategoryGap: '10%',\n width,\n };\n } else {\n config.chartUi = {};\n }\n } else if (chartType === 'line') {\n config.dataKeys = config.dataKeys || [];\n const safeChartData = Array.isArray(chartData) ? chartData : [];\n totalDataPoints = safeChartData.length;\n\n if (totalDataPoints > 15) {\n width = Math.max(800, totalDataPoints * 20);\n config.chartUi = {\n width,\n };\n } else {\n config.chartUi = {};\n }\n }\n\n const hasError = attributes.error || allData.error;\n const hasMissing = attributes.isMissing || allData.isMissing;\n const isLoading =\n (attributes.interactionApiInProgress || attributes.loading) && !hasError && !hasMissing;\n\n const chartUi = isLoading ? (\n <ChartLoader />\n ) : hasError || hasMissing || !chartData ? (\n renderNoDataFallback()\n ) : (\n <React.Fragment>\n {(chartType === 'bar' || chartType === 'line') &&\n totalDataPoints > 15 &&\n width &&\n (containerWidth === 0 || width > containerWidth) ? (\n <div className=\"w-full h-[250px]\">\n <ScrollArea className=\"w-full h-full\">\n <div style={{ minWidth: `${width}px`, width: 'max-content', height: '250px' }}>\n <ResponsiveContainer width={width} height={250}>\n <ChartContainer {...rest} config={config} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, config)}\n </ChartContainer>\n </ResponsiveContainer>\n </div>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n </div>\n ) : (\n <ResponsiveContainer width=\"100%\" height={250}>\n <ChartContainer {...rest} config={getResponsiveConfig()} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, getResponsiveConfig())}\n </ChartContainer>\n </ResponsiveContainer>\n )}\n </React.Fragment>\n );\n\n return (\n <Card className=\"shadow border mt-2 mb-2 relative\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"title\" contentEditable={isEditable} className=\"text-2xl\">\n {title}\n </CardTitle>\n <CardDescription data-slot=\"subTitle\" contentEditable={isEditable} className=\"text-sm\">\n {subTitle}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent\n ref={containerRef}\n data-slot=\"bodyContent\"\n contentEditable={false}\n className=\"px-6\"\n >\n {chartUi}\n </CardContent>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nexport function renderTable(props: any): JSX.Element {\n const { isEditable = false, gjsModel, performInteraction = () => {}, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...filterPlaceholders(gjsModel.get('componentProps')),\n ...filterPlaceholders(props),\n });\n\n const cardRef = useRef<HTMLDivElement>(null);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n const {\n data: rawData,\n headerMapper: rawHeaderMapper = {},\n className,\n title = 'Title',\n subTitle = 'Subtitle',\n actions = [],\n pagination,\n } = allData;\n\n const data = Array.isArray(rawData) ? rawData : [];\n const headerMapper = (() => {\n const cleaned = { ...rawHeaderMapper };\n\n if ('id' in cleaned) {\n delete cleaned.id;\n }\n\n if (data.length > 0) {\n const dataKeys = Object.keys(data[0] || {});\n\n return Object.fromEntries(Object.entries(cleaned).filter(([key]) => dataKeys.includes(key)));\n }\n\n return cleaned;\n })();\n\n const sortConfig = (() => {\n const { sortColumn, sortDirection } = gjsModel.get('componentProps') ?? {};\n\n return sortColumn && sortDirection ? { [sortColumn]: sortDirection } : {};\n })();\n\n const [viewportWidth, setViewportWidth] = useState<number>(0);\n const [scrollAreaHeight, setScrollAreaHeight] = useState<number>(250);\n\n const calculateTableHeight = (tableWidth: number, rowCount: number) => {\n if (viewportWidth > 0) {\n const widthRatio = tableWidth / viewportWidth;\n const baseTableHeight = 250;\n let targetScrollAreaHeight = baseTableHeight;\n\n if (widthRatio >= 0.8) {\n const headerHeight = 48;\n const rowHeight = 40;\n const calculatedHeight = headerHeight + rowCount * rowHeight;\n targetScrollAreaHeight = Math.min(calculatedHeight, baseTableHeight);\n }\n\n const tableId = gjsModel.get('id');\n const editor = gjsModel.em || gjsModel.collection?.em;\n const canvasDocument = editor.Canvas.getDocument() || document;\n const tableElement = canvasDocument.querySelector(\n `[data-table-id=\"${tableId}\"]`,\n ) as HTMLElement;\n\n if (tableElement) {\n const headerElement = tableElement.querySelector(\n '[data-slot=\"card-header\"]',\n ) as HTMLElement;\n\n if (headerElement && headerElement.offsetHeight > 0) {\n const actualHeaderHeight = headerElement.offsetHeight;\n const standardHeaderHeight = 58;\n const heightDifference = actualHeaderHeight - standardHeaderHeight;\n\n if (heightDifference > 0) {\n targetScrollAreaHeight = targetScrollAreaHeight - heightDifference;\n }\n }\n }\n\n setScrollAreaHeight(targetScrollAreaHeight);\n }\n };\n\n useEffect(() => {\n const updateViewportWidth = () => {\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n const iframeDocument = iframeWindow?.document;\n\n if (iframeDocument) {\n const dashboardRoot = iframeDocument.getElementById('dashboard-root');\n const effectiveViewportWidth =\n dashboardRoot?.clientWidth || iframeDocument.documentElement.clientWidth;\n setViewportWidth(effectiveViewportWidth);\n }\n };\n\n updateViewportWidth();\n window.addEventListener('resize', updateViewportWidth);\n\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n\n if (iframeWindow) {\n iframeWindow.addEventListener('resize', updateViewportWidth);\n }\n\n return () => {\n window.removeEventListener('resize', updateViewportWidth);\n\n if (iframeWindow) {\n iframeWindow.removeEventListener('resize', updateViewportWidth);\n }\n };\n }, []);\n\n useEffect(() => {\n const updateTableWidthAndApplyCSS = () => {\n const tableId = gjsModel.get('id');\n const editor = gjsModel.em || gjsModel.collection?.em;\n const canvasDocument = editor.Canvas.getDocument() || document;\n\n let tableElement = canvasDocument.querySelector(\n `[data-table-id=\"${tableId}\"]`,\n ) as HTMLElement;\n\n if (!tableElement && window.parent !== window) {\n tableElement = window.parent.document.querySelector(\n `[data-table-id=\"${tableId}\"]`,\n ) as HTMLElement;\n }\n\n if (!tableElement) {\n return;\n }\n\n const tableActualWidth = tableElement.getBoundingClientRect().width;\n\n if (tableActualWidth > 0) {\n calculateTableHeight(tableActualWidth, Array.isArray(data) ? data.length : 0);\n }\n };\n\n const timeoutId = setTimeout(updateTableWidthAndApplyCSS, 150);\n window.addEventListener('resize', updateTableWidthAndApplyCSS);\n\n return () => {\n clearTimeout(timeoutId);\n window.removeEventListener('resize', updateTableWidthAndApplyCSS);\n };\n }, [allData, gjsModel, viewportWidth, data, calculateTableHeight]);\n\n useEffect(() => {\n gjsModel.on('change:componentProps', () => {\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filterPlaceholders(gjsModel.get('componentProps')),\n }));\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const parsedData = (() => {\n if (\n typeof data === 'object' &&\n data !== null &&\n !Array.isArray(data) &&\n (data as any).name === '__peak_placeholder'\n ) {\n return [];\n }\n\n if (!Array.isArray(data)) {\n return [];\n }\n\n return data.map((datum: any) => {\n const newData = {\n ...datum,\n };\n\n delete newData.id;\n\n return newData;\n });\n })();\n\n async function onRowAction(rowIndex: number, actionId: string) {\n const id = gjsModel.get('id');\n\n await performInteraction({\n id: actionId,\n interactionType: 'tableButton',\n payload: {\n row: data[rowIndex],\n tableId: id,\n },\n affectedComponents: [],\n });\n }\n\n async function onPageChange(pageNumber: number, pageSize: number) {\n const id = gjsModel.get('id');\n const { sortColumn, sortDirection } = gjsModel.get('componentProps') ?? {};\n\n await performInteraction({\n id,\n interactionType: 'pagination',\n payload: {\n pageNumber,\n pageSize,\n ...(sortColumn && sortDirection && { sortColumn, sortDirection }),\n },\n affectedComponents: getAffectedComponentsWithLoader([id], true),\n });\n }\n\n async function handleSort(column: string, direction: SortDirection) {\n const currentProps = gjsModel.get('componentProps');\n const id = gjsModel.get('id');\n\n gjsModel.set('componentProps', {\n ...currentProps,\n sortColumn: direction ? column : null,\n sortDirection: direction,\n });\n\n await performInteraction({\n id,\n interactionType: 'tableSort',\n payload: {\n sortColumn: direction ? column : null,\n sortDirection: direction,\n tableId: id,\n },\n affectedComponents: getAffectedComponentsWithLoader([id], true),\n });\n }\n\n return (\n <Card\n ref={cardRef}\n className=\"shadow border relative flex flex-col h-fit overflow-hidden\"\n data-component-type=\"table\"\n data-table-id={gjsModel.get('id')}\n >\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"title\" contentEditable={isEditable} className=\"text-2xl\">\n {title}\n </CardTitle>\n <CardDescription data-slot=\"subTitle\" contentEditable={isEditable} className=\"text-sm\">\n {subTitle}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent\n data-slot=\"bodyContent\"\n contentEditable={false}\n className=\"flex-1 flex flex-col overflow-hidden\"\n >\n {attributes.error || allData.error || attributes.isMissing || allData.isMissing ? (\n renderNoDataFallback()\n ) : (\n <DataTable\n data={parsedData}\n headerMapper={headerMapper}\n className={className}\n isEditable={isEditable}\n actions={actions}\n pagination={pagination}\n isLoading={attributes.interactionApiInProgress}\n onRowAction={onRowAction}\n onPageChange={onPageChange}\n onSort={handleSort}\n sortConfig={sortConfig}\n otherProps={rest}\n height={scrollAreaHeight}\n />\n )}\n </CardContent>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n tableActions={actions}\n firstRowData={Array.isArray(data) && data.length > 0 ? data[0] : {}}\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nexport function renderTab(props: any): JSX.Element {\n let tabsWidth = 157;\n const safeTabs = Array.isArray(props.tabs) ? props.tabs : [];\n const showFallback = safeTabs.length === 0;\n\n if (safeTabs.length > 4) {\n tabsWidth = 157;\n }\n\n const defaultValue = props.defaultValue || (safeTabs.length > 0 ? safeTabs[0] : undefined);\n\n return (\n <Tabs defaultValue={defaultValue}>\n <div className=\"text-center mb-4\">\n <TabsList className=\"bg-[#F9F9FE] border border-[#D4D5DE] p-1 rounded-lg h-auto\">\n {safeTabs.length > 0 ? (\n safeTabs.map((tab: string) => (\n <TabsTrigger\n value={tab}\n key={tab}\n className={`\n w-[${tabsWidth}px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n `}\n style={{\n fontFamily: 'Helvetica Neue',\n fontWeight: 500,\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: '0%',\n }}\n >\n {tab}\n </TabsTrigger>\n ))\n ) : (\n <TabsTrigger\n value=\"no-data\"\n className={`\n w-[${tabsWidth}px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n `}\n style={{\n fontFamily: 'Helvetica Neue',\n fontWeight: 500,\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: '0%',\n }}\n disabled\n >\n No tabs\n </TabsTrigger>\n )}\n </TabsList>\n </div>\n {showFallback ? (\n <TabsContent\n value={defaultValue || 'no-data'}\n className=\"tabs-content\"\n data-fallback=\"true\"\n >\n {renderNoDataFallback()}\n </TabsContent>\n ) : (\n safeTabs.map((tab: string) => (\n <TabsContent value={tab} className=\"tabs-content\" key={tab} />\n ))\n )}\n </Tabs>\n );\n}\n\nexport function renderMarkdown(props: any): JSX.Element {\n const { isEditable = false, gjsModel, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...filterPlaceholders(gjsModel.get('componentProps')),\n ...filterPlaceholders(props),\n });\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n gjsModel.on('change:componentProps', () => {\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filterPlaceholders(gjsModel.get('componentProps')),\n }));\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const [isEditing, setIsEditing] = useState(false);\n const editRef = useRef<HTMLDivElement>(null);\n\n const startEditing = () => {\n setIsEditing(true);\n setTimeout(() => {\n setupEditor();\n }, 0);\n };\n\n const setupEditor = () => {\n if (!editRef.current) {\n return;\n }\n\n const editor = editRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryText;\n editor.focus();\n };\n\n // Save changes and exit editing mode\n const saveChanges = () => {\n if (!editRef.current) {\n return;\n }\n\n const content = editRef.current.innerText || '';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryText: content,\n }));\n setIsEditing(false);\n editRef.current.innerHTML = '';\n };\n\n const markdownStyles = {\n ul: { props: { className: 'list-disc' } },\n h1: { props: { className: 'text-4xl font-bold leading-[4rem]' } },\n h2: { props: { className: 'text-3xl font-bold leading-[3rem]' } },\n h3: { props: { className: 'text-2xl font-bold leading-[2rem]' } },\n h4: { props: { className: 'text-xl font-bold leading-[2.5rem]' } },\n h5: { props: { className: 'text-lg font-bold leading-[2.5rem]' } },\n h6: { props: { className: 'text-base font-bold leading-[2rem]' } },\n };\n\n const hasError = attributes.error || allData.error;\n const hasMissing = attributes.isMissing || allData.isMissing;\n const isLoading = attributes.loading && !hasError && !hasMissing;\n\n if (isLoading) {\n return <MarkdownLoader />;\n }\n\n if (hasError || hasMissing) {\n return (\n <div className=\"px-[1em] relative\" {...rest}>\n <h3 className=\"text-xl font-semibold text-left\">Insights</h3>\n <div\n className=\"w-full py-8 flex flex-col items-center justify-center px-6 text-center\"\n style={{ minHeight: '180px' }}\n >\n <CircleAlert className=\"w-12 h-12 text-gray-400 mb-2\" />\n <h3 className=\"text-lg font-medium text-gray-900\">No data available</h3>\n <p className=\"mt-2 text-sm text-gray-500 max-w-md\">\n Check your filters or try a different time range.\n </p>\n </div>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n }\n\n if (!allData.isEditable) {\n return (\n <div className=\"px-[1em] relative\" {...rest}>\n <h3 className=\"text-xl font-semibold text-left\">Insights</h3>\n <div data-slot=\"summaryText\">\n <Markdown options={{ overrides: markdownStyles }}>{allData.summaryText}</Markdown>\n </div>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n }\n\n return (\n <div className=\"p-[1em] relative\" {...rest}>\n <h3 className=\"text-xl font-semibold text-left\">Insights</h3>\n {isEditing ? (\n <div\n ref={editRef}\n contentEditable\n onBlur={saveChanges}\n data-slot=\"summaryText\"\n className=\"p-2 min-h-[100px] whitespace-pre-wrap\"\n suppressContentEditableWarning={true}\n style={{\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n }}\n />\n ) : (\n <div\n onClick={startEditing}\n data-slot=\"summaryText\"\n style={{\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n }}\n >\n <Markdown options={{ overrides: markdownStyles }}>{allData.summaryText}</Markdown>\n </div>\n )}\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n}\n\nexport function renderButton(props: any): JSX.Element {\n const { isEditable = false, gjsModel, performInteraction = () => {} } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n gjsModel.on('change:componentProps', () => {\n setAllData({\n ...gjsModel.get('componentProps'),\n });\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const {\n text,\n className,\n payload,\n variant = 'default',\n size = 'sm',\n affectedComponents,\n tooltipContent,\n } = allData;\n\n function interact() {\n const id = gjsModel.get('id');\n performInteraction({\n id,\n interactionType: 'button',\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n payload,\n });\n }\n\n return (\n <TooltipButton\n className={className}\n isEditable={isEditable}\n interact={interact}\n attributes={attributes}\n variant={variant}\n size={size}\n text={text}\n tooltipContent={tooltipContent}\n />\n );\n}\n\nconst renderActionCardWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'ActionCard' }}>\n {renderActionCard(props)}\n </ComponentWrapper>\n);\n\nconst renderButtonWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Button' }}>\n {renderButton(props)}\n </ComponentWrapper>\n);\n\nconst renderCardWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Card' }}>\n {renderCard(props)}\n </ComponentWrapper>\n);\n\nconst renderChartWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Chart' }}>\n {renderChart(props)}\n </ComponentWrapper>\n);\n\nconst renderFilterWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Filter' }}>\n {renderFilter(props)}\n </ComponentWrapper>\n);\n\nconst renderMarkdownWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Markdown' }}>\n {renderMarkdown(props)}\n </ComponentWrapper>\n);\n\nconst renderSearchWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Search' }}>\n {renderSearch(props)}\n </ComponentWrapper>\n);\n\nconst renderTableWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Table' }}>\n {renderTable(props)}\n </ComponentWrapper>\n);\n\nconst renderTabWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Tabs' }}>\n {renderTab(props)}\n </ComponentWrapper>\n);\n\nfunction renderActions(props: any): JSX.Element {\n const { actions, isEditable = false, gjsModel } = props;\n\n if (actions === null) {\n return <div />;\n }\n\n if (!Array.isArray(actions) || actions.length === 0) {\n return (\n <div className=\"bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none relative\">\n <CardLoader />\n </div>\n );\n }\n\n return (\n <div className=\"dashboard-cards flex flex-wrap gap-4\">\n {actions.map((action: any, index: number) => {\n const { icon, title, description } = action;\n\n return (\n <div key={index} className=\"flex-1 min-w-[200px]\">\n {renderActionCard({\n icon,\n headerContent: title,\n bodyContent: description,\n isEditable,\n gjsModel,\n })}\n </div>\n );\n })}\n </div>\n );\n}\n\nconst renderActionsWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Actions' }}>\n {renderActions(props)}\n </ComponentWrapper>\n);\n\nexport function getRenderers(): Record<string, (props: any) => JSX.Element> {\n return {\n ActionCard: renderActionCardWithWrapper,\n Actions: renderActionsWithWrapper,\n Button: renderButtonWithWrapper,\n Card: renderCardWithWrapper,\n Chart: renderChartWithWrapper,\n Filter: renderFilterWithWrapper,\n Markdown: renderMarkdownWithWrapper,\n Search: renderSearchWithWrapper,\n Table: renderTableWithWrapper,\n Tabs: renderTabWithWrapper,\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -23,6 +23,7 @@ type StyledInfoButtonProps = {
23
23
  performInteraction?: (payload: Record<string, unknown>) => Promise<Record<string, unknown>>;
24
24
  tableActions?: TableAction[];
25
25
  firstRowData?: Record<string, unknown>;
26
+ componentProps?: Record<string, unknown>;
26
27
  };
27
- export declare function StyledInfoButton({ position, componentId, className, isVisible, onSqlFetch, performInteraction, tableActions, firstRowData }: StyledInfoButtonProps): import("react/jsx-runtime").JSX.Element | null;
28
+ export declare function StyledInfoButton({ position, componentId, className, isVisible, onSqlFetch, performInteraction, tableActions, firstRowData, componentProps }: StyledInfoButtonProps): import("react/jsx-runtime").JSX.Element | null;
28
29
  export {};
@@ -0,0 +1,6 @@
1
+ import _extends from"@babel/runtime/helpers/extends";import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _regeneratorRuntime from"@babel/runtime/regenerator";import React,{useState,useRef,useEffect}from"react";import{QueryDetailsModal}from"./query-details-modal";import{QueryLoadingModal}from"./query-loading-modal";import{formatQueryHeading}from"./query-heading-formatter";import{useQueryCache}from"./query-cache-context";import{extractInteractionState}from"./query-cache-utils";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";var POSITION_CLASSES={"top-right":"absolute top-0 right-0","top-left":"absolute top-2 left-2","bottom-left":"absolute bottom-0 left-1/2 transform -translate-x-1/2","bottom-right":"absolute bottom-0 right-0 ","card-overlay":"absolute bottom-0 right-0"};var ERROR_MESSAGES={FETCH_FAILED:"Failed to fetch query details from semantic layer",LOAD_FAILED:"Failed to load query information",SQL_NOT_AVAILABLE:"SQL not available"};export function StyledInfoButton(_ref){var _ref$position=_ref.position,position=_ref$position===void 0?"bottom-right":_ref$position,componentId=_ref.componentId,_ref$className=_ref.className,className=_ref$className===void 0?"":_ref$className,_ref$isVisible=_ref.isVisible,isVisible=_ref$isVisible===void 0?true:_ref$isVisible,onSqlFetch=_ref.onSqlFetch,_ref$performInteracti=_ref.performInteraction,performInteraction=_ref$performInteracti===void 0?function(){return Promise.resolve({})}:_ref$performInteracti,_ref$tableActions=_ref.tableActions,tableActions=_ref$tableActions===void 0?[]:_ref$tableActions,_ref$firstRowData=_ref.firstRowData,firstRowData=_ref$firstRowData===void 0?{}:_ref$firstRowData,_ref$componentProps=_ref.componentProps,componentProps=_ref$componentProps===void 0?{}:_ref$componentProps;var _useState=useState(false),isModalOpen=_useState[0],setIsModalOpen=_useState[1];var _useState2=useState(false),isLoadingModalOpen=_useState2[0],setIsLoadingModalOpen=_useState2[1];var _useState3=useState(""),sqlQuery=_useState3[0],setSqlQuery=_useState3[1];var _useState4=useState([]),queryHeadings=_useState4[0],setQueryHeadings=_useState4[1];var _useState5=useState([]),tableButtonExplanations=_useState5[0],setTableButtonExplanations=_useState5[1];var _useState6=useState(false),isLoading=_useState6[0],setIsLoading=_useState6[1];var _useState7=useState(""),error=_useState7[0],setError=_useState7[1];var modalOpen=useRef(false);var queryCache=useQueryCache();var currentInteractionState=extractInteractionState(componentProps);var interactionStateKey="";try{interactionStateKey=JSON.stringify(currentInteractionState)}catch(err){// eslint-disable-next-line no-console
2
+ console.warn("Failed to serialize interaction state:",err);interactionStateKey="fallback_"+Date.now()+"_"+Math.random()}var prevInteractionStateKeyRef=useRef(undefined);var interactionState=currentInteractionState;useEffect(function(){var prevKey=prevInteractionStateKeyRef.current;var currentKey=interactionStateKey;if(prevKey!==currentKey&&prevKey!==undefined){if(componentId){queryCache.invalidateComponent(componentId);setSqlQuery("");setQueryHeadings([]);setTableButtonExplanations([]);setError("")}}prevInteractionStateKeyRef.current=currentKey},[interactionStateKey,componentId,queryCache]);function fetchTableButtonExplanations(){return _fetchTableButtonExplanations.apply(this,arguments)}function _fetchTableButtonExplanations(){_fetchTableButtonExplanations=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){var buttonPromises,results;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.prev=0;if(!(!tableActions||tableActions.length===0)){_context2.next=3;break}return _context2.abrupt("return",[]);case 3:buttonPromises=tableActions.map(/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(action){var result,response,buttonStyle,actionClassName,bgMatch,textMatch,borderMatch,formFields,jsonBody,filesArg,hasFormFields,hasJsonBody,hasFilesArg,hasPayload;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.prev=0;_context.next=3;return performInteraction({id:action.id||componentId,interactionType:"tableButton",payload:{row:firstRowData,params:{isInfoButtonInteraction:true}},affectedComponents:[]});case 3:result=_context.sent;if(!(result&&typeof result==="object"&&"apiResponse"in result&&result.apiResponse&&typeof result.apiResponse==="object")){_context.next=18;break}response=result.apiResponse;if(!(response.request_url&&typeof response.request_url==="string")){_context.next=18;break}buttonStyle={};actionClassName=action.className||"";if(typeof actionClassName==="string"){bgMatch=actionClassName.match(/bg-\[(#[0-9A-Fa-f]{6})\]/);if(bgMatch){buttonStyle.backgroundColor=bgMatch[1]}textMatch=actionClassName.match(/text-\[(#[0-9A-Fa-f]{6})\]/);if(textMatch){buttonStyle.color=textMatch[1]}borderMatch=actionClassName.match(/border-\[(#[0-9A-Fa-f]{6})\]/);if(borderMatch){buttonStyle.border="1px solid "+borderMatch[1]}}formFields=response.form_fields||{};jsonBody=response.json_body;filesArg=response.files_arg||{};// Check if any payload fields have content
3
+ hasFormFields=Object.keys(formFields).length>0;hasJsonBody=jsonBody!==null&&jsonBody!==undefined&&jsonBody!=="";hasFilesArg=Object.keys(filesArg).length>0;hasPayload=hasFormFields||hasJsonBody||hasFilesArg;return _context.abrupt("return",{action:action.text||action.id||"Button Action",explanation:response.request_url,operationName:response.operation_name,operationSummary:response.operation_summary,operationDescription:response.operation_description,buttonClassName:actionClassName,buttonStyle:buttonStyle,formFields:formFields,jsonBody:jsonBody,filesArg:filesArg,hasPayload:hasPayload});case 18:return _context.abrupt("return",null);case 21:_context.prev=21;_context.t0=_context["catch"](0);return _context.abrupt("return",null);case 24:case"end":return _context.stop()}},_callee,null,[[0,21]])}));return function(_x2){return _ref2.apply(this,arguments)}}());_context2.next=6;return Promise.all(buttonPromises);case 6:results=_context2.sent;return _context2.abrupt("return",results.filter(function(result){return result!==null}));case 10:_context2.prev=10;_context2.t0=_context2["catch"](0);return _context2.abrupt("return",[]);case 13:case"end":return _context2.stop()}},_callee2,null,[[0,10]])}));return _fetchTableButtonExplanations.apply(this,arguments)}function fetchSemanticLayerQuery(){return _fetchSemanticLayerQuery.apply(this,arguments)}function _fetchSemanticLayerQuery(){_fetchSemanticLayerQuery=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(){var result,apiResponse,sqlResponse,successArray,hasAnyValidQuery,validQueries,sqlQueries,extractedHeadings,sqlObjects,_validQueries,_sqlQueries,_extractedHeadings;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:_context3.prev=0;setIsLoading(true);setError("");_context3.next=5;return performInteraction({id:componentId||"styled-info-button",interactionType:"semanticLayerQuery",affectedComponents:[]});case 5:result=_context3.sent;if(!(result&&typeof result==="object"&&"apiResponse"in result&&result.apiResponse&&typeof result.apiResponse==="object")){_context3.next=35;break}apiResponse=result.apiResponse;if("sql"in apiResponse){_context3.next=10;break}return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 10:sqlResponse=apiResponse.sql;if(!(!sqlResponse||typeof sqlResponse!=="object")){_context3.next=13;break}return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 13:if(!("success"in sqlResponse&&Array.isArray(sqlResponse.success))){_context3.next=24;break}successArray=sqlResponse.success;hasAnyValidQuery=successArray.some(function(item){return item&&typeof item==="object"&&item.error===false&&"sql"in item&&typeof item.sql==="string"&&item.sql.trim()});if(hasAnyValidQuery){_context3.next=18;break}return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 18:validQueries=successArray.filter(function(item){return item&&typeof item==="object"&&item.error===false&&"sql"in item&&typeof item.sql==="string"&&item.sql.trim()}).map(function(item){return{sql:item.sql,queryKey:item.query_key||"Query details"}});if(!(validQueries.length===0)){_context3.next=21;break}return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 21:// Extract SQL and headings in the correct order
4
+ sqlQueries=validQueries.map(function(q){return q.sql});extractedHeadings=validQueries.map(function(q){return formatQueryHeading(q.queryKey)});return _context3.abrupt("return",{sql:sqlQueries.length>1?sqlQueries:sqlQueries[0],headings:extractedHeadings});case 24:if(!("error"in sqlResponse&&typeof sqlResponse.error==="string")){_context3.next=26;break}return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 26:if(!Array.isArray(sqlResponse)){_context3.next=34;break}sqlObjects=sqlResponse;_validQueries=sqlObjects.filter(function(obj){return obj&&typeof obj==="object"&&"sql"in obj&&"error"in obj&&!obj.error&&obj.sql&&obj.sql.trim()}).map(function(obj){return{sql:obj.sql,queryKey:obj.query_key||"Query details"}});if(!(_validQueries.length===0)){_context3.next=31;break}return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 31:_sqlQueries=_validQueries.map(function(q){return q.sql});_extractedHeadings=_validQueries.map(function(q){return formatQueryHeading(q.queryKey)});return _context3.abrupt("return",{sql:_sqlQueries.length>1?_sqlQueries:_sqlQueries[0],headings:_extractedHeadings});case 34:return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 35:return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 38:_context3.prev=38;_context3.t0=_context3["catch"](0);return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 41:_context3.prev=41;setIsLoading(false);return _context3.finish(41);case 44:case"end":return _context3.stop()}},_callee3,null,[[0,38,41,44]])}));return _fetchSemanticLayerQuery.apply(this,arguments)}function handleInfoClick(_x){return _handleInfoClick.apply(this,arguments)}function _handleInfoClick(){_handleInfoClick=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(e){var cachedSemanticQuery,cachedTableButton,_yield$Promise$all,sqlResult,buttonExplanations,cacheEntry;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:e.stopPropagation();e.preventDefault();modalOpen.current=true;_context4.prev=3;cachedSemanticQuery=componentId?queryCache.getCachedQuery(componentId,"semanticLayerQuery",interactionState):null;cachedTableButton=componentId&&tableActions.length>0?queryCache.getCachedQuery(componentId,"tableButton",interactionState):null;if(!(cachedSemanticQuery&&(tableActions.length===0||cachedTableButton))){_context4.next=14;break}setSqlQuery(cachedSemanticQuery.sqlQuery);setQueryHeadings(cachedSemanticQuery.queryHeadings);setTableButtonExplanations((cachedTableButton==null?void 0:cachedTableButton.tableButtonExplanations)||cachedSemanticQuery.tableButtonExplanations);setError("");if(modalOpen.current){setIsModalOpen(true)}if(onSqlFetch&&cachedSemanticQuery.sqlQuery&&cachedSemanticQuery.sqlQuery!==ERROR_MESSAGES.SQL_NOT_AVAILABLE){onSqlFetch(cachedSemanticQuery.sqlQuery)}return _context4.abrupt("return");case 14:setIsLoadingModalOpen(true);setError("");_context4.next=18;return Promise.all([fetchSemanticLayerQuery(),fetchTableButtonExplanations()]);case 18:_yield$Promise$all=_context4.sent;sqlResult=_yield$Promise$all[0];buttonExplanations=_yield$Promise$all[1];if(componentId){cacheEntry={sqlQuery:sqlResult.sql||ERROR_MESSAGES.SQL_NOT_AVAILABLE,queryHeadings:sqlResult.headings||[],tableButtonExplanations:buttonExplanations,timestamp:Date.now()};queryCache.setCachedQuery(componentId,"semanticLayerQuery",interactionState,cacheEntry);if(tableActions.length>0){queryCache.setCachedQuery(componentId,"tableButton",interactionState,_extends({},cacheEntry,{tableButtonExplanations:buttonExplanations}))}}setSqlQuery(sqlResult.sql||ERROR_MESSAGES.SQL_NOT_AVAILABLE);setQueryHeadings(sqlResult.headings||[]);setTableButtonExplanations(buttonExplanations);setIsLoadingModalOpen(false);if(modalOpen.current){setIsModalOpen(true)}if(onSqlFetch&&sqlResult.sql&&sqlResult.sql!==ERROR_MESSAGES.SQL_NOT_AVAILABLE){onSqlFetch(sqlResult.sql)}_context4.next=36;break;case 30:_context4.prev=30;_context4.t0=_context4["catch"](3);setSqlQuery(ERROR_MESSAGES.SQL_NOT_AVAILABLE);setTableButtonExplanations([]);setIsLoadingModalOpen(false);if(modalOpen.current){setIsModalOpen(true)}case 36:case"end":return _context4.stop()}},_callee4,null,[[3,30]])}));return _handleInfoClick.apply(this,arguments)}function resetState(){setIsModalOpen(false);setIsLoadingModalOpen(false);setSqlQuery("");setQueryHeadings([]);setTableButtonExplanations([]);setError("");setIsLoading(false)}function handleModalClose(){// User explicitly closed the modal
5
+ modalOpen.current=false;resetState()}function handleRetry(){resetState();var mockEvent={stopPropagation:function stopPropagation(){return void 0},preventDefault:function preventDefault(){return void 0}};handleInfoClick(mockEvent)}if(!isVisible){return null}return/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx("button",{className:POSITION_CLASSES[position]+" "+className,onClick:handleInfoClick,title:"View Query Details",type:"button",style:{width:"60px",height:"60px",transform:"rotate(0deg)",opacity:1,border:"none",background:"transparent",padding:0},children:/*#__PURE__*/_jsxs("svg",{width:"50",height:"50",viewBox:"0 0 67 66",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[/*#__PURE__*/_jsxs("g",{filter:"url(#filter0_d_4766_2811)",children:[/*#__PURE__*/_jsx("rect",{x:"16.1667",y:"15.5",width:"35",height:"35",rx:"7.5",stroke:"#A601FF",strokeWidth:"1",shapeRendering:"crispEdges"}),/*#__PURE__*/_jsx("path",{d:"M33.0756 28.0171C33.3312 27.5498 34.0023 27.5498 34.2578 28.0171L35.7159 30.683C35.7777 30.7961 35.8706 30.889 35.9837 30.9508L38.6496 32.4089C39.1169 32.6644 39.1169 33.3355 38.6496 33.5911L35.9837 35.0491C35.8706 35.111 35.7777 35.2039 35.7159 35.317L34.2578 37.9829C34.0023 38.4501 33.3312 38.4501 33.0756 37.9829L31.6176 35.317C31.5557 35.2039 31.4628 35.111 31.3497 35.0491L28.6838 33.5911C28.2166 33.3355 28.2166 32.6644 28.6838 32.4089L31.3497 30.9508C31.4628 30.889 31.5557 30.7961 31.6176 30.683L33.0756 28.0171Z",fill:"#A601FF"}),/*#__PURE__*/_jsx("path",{d:"M29.0634 27.1601C29.1801 26.9466 29.4866 26.9466 29.6033 27.1601L29.9973 27.8804C30.0255 27.932 30.068 27.9745 30.1196 28.0027L30.84 28.3967C31.0534 28.5134 31.0534 28.8199 30.84 28.9367L30.1196 29.3306C30.068 29.3589 30.0255 29.4013 29.9973 29.4529L29.6033 30.1733C29.4866 30.3867 29.1801 30.3867 29.0634 30.1733L28.6694 29.4529C28.6412 29.4013 28.5987 29.3589 28.5471 29.3306L27.8268 28.9367C27.6133 28.8199 27.6133 28.5134 27.8268 28.3967L28.5471 28.0027C28.5987 27.9745 28.6412 27.932 28.6694 27.8804L29.0634 27.1601Z",fill:"#A601FF"}),/*#__PURE__*/_jsx("path",{d:"M38.0346 36.5104C38.1638 36.2743 38.5029 36.2743 38.6321 36.5105L38.8874 36.9773C38.9186 37.0344 38.9656 37.0814 39.0227 37.1126L39.4896 37.368C39.7257 37.4971 39.7257 37.8363 39.4896 37.9654L39.0227 38.2207C38.9656 38.252 38.9186 38.2989 38.8874 38.3561L38.6321 38.8229C38.5029 39.059 38.1638 39.059 38.0346 38.8229L37.7793 38.3561C37.748 38.2989 37.7011 38.252 37.6439 38.2207L37.1771 37.9654C36.941 37.8363 36.941 37.4971 37.1771 37.368L37.6439 37.1126C37.7011 37.0814 37.748 37.0344 37.7793 36.9773L38.0346 36.5104Z",fill:"#A601FF"})]}),/*#__PURE__*/_jsx("defs",{children:/*#__PURE__*/_jsxs("filter",{id:"filter0_d_4766_2811",x:"0.666687",y:"0",width:"66",height:"66",filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB",children:[/*#__PURE__*/_jsx("feFlood",{floodOpacity:"0",result:"BackgroundImageFix"}),/*#__PURE__*/_jsx("feColorMatrix",{"in":"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),/*#__PURE__*/_jsx("feMorphology",{radius:"5",operator:"dilate","in":"SourceAlpha",result:"effect1_dropShadow_4766_2811"}),/*#__PURE__*/_jsx("feOffset",{}),/*#__PURE__*/_jsx("feGaussianBlur",{stdDeviation:"5"}),/*#__PURE__*/_jsx("feComposite",{in2:"hardAlpha",operator:"out"}),/*#__PURE__*/_jsx("feColorMatrix",{type:"matrix",values:"0 0 0 0 0.0317231 0 0 0 0 0.0834676 0 0 0 0 0.370052 0 0 0 0.05 0"}),/*#__PURE__*/_jsx("feBlend",{mode:"normal",in2:"BackgroundImageFix",result:"effect1_dropShadow_4766_2811"}),/*#__PURE__*/_jsx("feBlend",{mode:"normal","in":"SourceGraphic",in2:"effect1_dropShadow_4766_2811",result:"shape"})]})})]})}),/*#__PURE__*/_jsx(QueryLoadingModal,{isOpen:isLoadingModalOpen,onClose:handleModalClose}),/*#__PURE__*/_jsx(QueryDetailsModal,{isOpen:isModalOpen,onClose:handleModalClose,isLoading:isLoading,error:error,sqlQuery:sqlQuery,queryHeadings:queryHeadings,tableButtonExplanations:tableButtonExplanations,onRetry:handleRetry})]})}
6
+ //# sourceMappingURL=styled-info-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styled-info-button.js","names":["React","useState","useRef","useEffect","QueryDetailsModal","QueryLoadingModal","formatQueryHeading","useQueryCache","extractInteractionState","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","POSITION_CLASSES","ERROR_MESSAGES","FETCH_FAILED","LOAD_FAILED","SQL_NOT_AVAILABLE","StyledInfoButton","_ref","_ref$position","position","componentId","_ref$className","className","_ref$isVisible","isVisible","onSqlFetch","_ref$performInteracti","performInteraction","Promise","resolve","_ref$tableActions","tableActions","_ref$firstRowData","firstRowData","_ref$componentProps","componentProps","_useState","isModalOpen","setIsModalOpen","_useState2","isLoadingModalOpen","setIsLoadingModalOpen","_useState3","sqlQuery","setSqlQuery","_useState4","queryHeadings","setQueryHeadings","_useState5","tableButtonExplanations","setTableButtonExplanations","_useState6","isLoading","setIsLoading","_useState7","error","setError","modalOpen","queryCache","currentInteractionState","interactionStateKey","JSON","stringify","err","console","warn","Date","now","Math","random","prevInteractionStateKeyRef","undefined","interactionState","prevKey","current","currentKey","invalidateComponent","fetchTableButtonExplanations","_fetchTableButtonExplanations","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","buttonPromises","results","wrap","_callee2$","_context2","prev","next","length","abrupt","map","_ref2","_callee","action","result","response","buttonStyle","actionClassName","bgMatch","textMatch","borderMatch","formFields","jsonBody","filesArg","hasFormFields","hasJsonBody","hasFilesArg","hasPayload","_callee$","_context","id","interactionType","payload","row","params","isInfoButtonInteraction","affectedComponents","sent","apiResponse","request_url","match","backgroundColor","color","border","form_fields","json_body","files_arg","Object","keys","text","explanation","operationName","operation_name","operationSummary","operation_summary","operationDescription","operation_description","buttonClassName","t0","stop","_x2","all","filter","fetchSemanticLayerQuery","_fetchSemanticLayerQuery","_callee3","sqlResponse","successArray","hasAnyValidQuery","validQueries","sqlQueries","extractedHeadings","sqlObjects","_validQueries","_sqlQueries","_extractedHeadings","_callee3$","_context3","sql","headings","Array","isArray","success","some","item","trim","queryKey","query_key","q","obj","finish","handleInfoClick","_x","_handleInfoClick","_callee4","e","cachedSemanticQuery","cachedTableButton","_yield$Promise$all","sqlResult","buttonExplanations","cacheEntry","_callee4$","_context4","stopPropagation","preventDefault","getCachedQuery","timestamp","setCachedQuery","_extends","resetState","handleModalClose","handleRetry","mockEvent","children","onClick","title","type","style","width","height","transform","opacity","background","padding","viewBox","fill","xmlns","x","y","rx","stroke","strokeWidth","shapeRendering","d","filterUnits","colorInterpolationFilters","floodOpacity","values","radius","operator","stdDeviation","in2","mode","isOpen","onClose","onRetry"],"sources":["../../../src/plugins/helpers/styled-info-button.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport { QueryDetailsModal } from './query-details-modal';\nimport { QueryLoadingModal } from './query-loading-modal';\nimport { formatQueryHeading } from './query-heading-formatter';\nimport { useQueryCache } from './query-cache-context';\nimport { extractInteractionState } from './query-cache-utils';\n\nconst POSITION_CLASSES = {\n 'top-right': 'absolute top-0 right-0',\n 'top-left': 'absolute top-2 left-2', \n 'bottom-left': 'absolute bottom-0 left-1/2 transform -translate-x-1/2',\n 'bottom-right': 'absolute bottom-0 right-0 ',\n 'card-overlay': 'absolute bottom-0 right-0'\n} as const;\n\nconst ERROR_MESSAGES = {\n FETCH_FAILED: 'Failed to fetch query details from semantic layer',\n LOAD_FAILED: 'Failed to load query information',\n SQL_NOT_AVAILABLE: 'SQL not available'\n} as const;\n\n\ntype ButtonStyle = {\n backgroundColor?: string;\n color?: string;\n border?: string;\n [key: string]: unknown;\n};\n\ntype TableButtonExplanation = {\n action: string;\n explanation: string;\n operationName?: string;\n operationSummary?: string;\n operationDescription?: string;\n buttonClassName?: string;\n buttonStyle?: ButtonStyle;\n formFields?: Record<string, unknown>;\n jsonBody?: unknown;\n filesArg?: Record<string, unknown>;\n hasPayload?: boolean;\n};\n\ntype TableAction = {\n id: string;\n text: string;\n className?: string;\n [key: string]: unknown;\n};\n\ntype Position = 'top-right' | 'top-left' | 'bottom-left' | 'bottom-right' | 'card-overlay';\n\ntype StyledInfoButtonProps = {\n buttonStyle?: ButtonStyle;\n onClick?: () => void;\n isVisible?: boolean;\n tableName?: string;\n position?: Position;\n componentId?: string;\n className?: string;\n onSqlFetch?: (sql: string | string[]) => void;\n performInteraction?: (payload: Record<string, unknown>) => Promise<Record<string, unknown>>;\n tableActions?: TableAction[];\n firstRowData?: Record<string, unknown>;\n componentProps?: Record<string, unknown>;\n}\n\n\nexport function StyledInfoButton({ \n position = 'bottom-right', \n componentId,\n className = '',\n isVisible = true,\n onSqlFetch,\n performInteraction = () => Promise.resolve({} as Record<string, unknown>),\n tableActions = [],\n firstRowData = {},\n componentProps = {}\n}: StyledInfoButtonProps) {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [isLoadingModalOpen, setIsLoadingModalOpen] = useState(false);\n \n const [sqlQuery, setSqlQuery] = useState<string | string[]>('');\n const [queryHeadings, setQueryHeadings] = useState<string[]>([]);\n const [tableButtonExplanations, setTableButtonExplanations] = useState<TableButtonExplanation[]>([]);\n \n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string>('');\n \n const modalOpen = useRef(false);\n \n const queryCache = useQueryCache();\n \n const currentInteractionState = extractInteractionState(componentProps);\n \n let interactionStateKey = '';\n\n try {\n interactionStateKey = JSON.stringify(currentInteractionState);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.warn('Failed to serialize interaction state:', err);\n interactionStateKey = `fallback_${Date.now()}_${Math.random()}`;\n }\n \n const prevInteractionStateKeyRef = useRef<string | undefined>(undefined);\n \n const interactionState = currentInteractionState;\n\n useEffect(() => {\n const prevKey = prevInteractionStateKeyRef.current;\n const currentKey = interactionStateKey;\n \n if (prevKey !== currentKey && prevKey !== undefined) {\n if (componentId) {\n queryCache.invalidateComponent(componentId);\n \n setSqlQuery('');\n setQueryHeadings([]);\n setTableButtonExplanations([]);\n setError('');\n }\n }\n \n prevInteractionStateKeyRef.current = currentKey;\n }, [interactionStateKey, componentId, queryCache]);\n\n async function fetchTableButtonExplanations(): Promise<TableButtonExplanation[]> {\n try {\n if (!tableActions || tableActions.length === 0) {\n return [];\n }\n \n\n const buttonPromises = tableActions.map(async (action) => {\n try {\n const result = await performInteraction({\n id: action.id || componentId,\n interactionType: 'tableButton',\n payload: {\n row: firstRowData,\n params: { isInfoButtonInteraction: true }\n },\n affectedComponents: []\n });\n\n if (result && typeof result === 'object' && 'apiResponse' in result && \n result.apiResponse && typeof result.apiResponse === 'object') {\n const response = result.apiResponse as Record<string, unknown>;\n \n if (response.request_url && typeof response.request_url === 'string') {\n const buttonStyle: ButtonStyle = {};\n const actionClassName = (action.className as string) || '';\n \n if (typeof actionClassName === 'string') {\n const bgMatch = actionClassName.match(/bg-\\[(#[0-9A-Fa-f]{6})\\]/);\n\n if (bgMatch) {\n buttonStyle.backgroundColor = bgMatch[1];\n }\n \n const textMatch = actionClassName.match(/text-\\[(#[0-9A-Fa-f]{6})\\]/);\n\n if (textMatch) {\n buttonStyle.color = textMatch[1];\n }\n \n const borderMatch = actionClassName.match(/border-\\[(#[0-9A-Fa-f]{6})\\]/);\n\n if (borderMatch) {\n buttonStyle.border = `1px solid ${borderMatch[1]}`;\n }\n }\n \n const formFields = response.form_fields as Record<string, unknown> || {};\n const jsonBody = response.json_body;\n const filesArg = response.files_arg as Record<string, unknown> || {};\n \n // Check if any payload fields have content\n const hasFormFields = Object.keys(formFields).length > 0;\n const hasJsonBody = jsonBody !== null && jsonBody !== undefined && jsonBody !== '';\n const hasFilesArg = Object.keys(filesArg).length > 0;\n const hasPayload = hasFormFields || hasJsonBody || hasFilesArg;\n \n return {\n action: action.text || action.id || 'Button Action',\n explanation: response.request_url,\n operationName: response.operation_name as string,\n operationSummary: response.operation_summary as string,\n operationDescription: response.operation_description as string,\n buttonClassName: actionClassName,\n buttonStyle,\n formFields,\n jsonBody,\n filesArg,\n hasPayload\n };\n }\n }\n\n return null;\n } catch (err) {\n return null;\n }\n });\n\n const results = await Promise.all(buttonPromises);\n\n return results.filter((result) => result !== null) as TableButtonExplanation[];\n } catch (err) {\n return [];\n }\n }\n\n async function fetchSemanticLayerQuery(): Promise<{sql: string | string[], headings: string[]}> {\n try {\n setIsLoading(true);\n setError('');\n \n const result = await performInteraction({\n id: componentId || 'styled-info-button',\n interactionType: 'semanticLayerQuery',\n affectedComponents: []\n });\n\n if (result && typeof result === 'object' && 'apiResponse' in result && \n result.apiResponse && typeof result.apiResponse === 'object') {\n const apiResponse = result.apiResponse as Record<string, unknown>;\n \n if (!('sql' in apiResponse)) {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n \n const sqlResponse = apiResponse.sql;\n \n if (!sqlResponse || (typeof sqlResponse !== 'object')) {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n \n if ('success' in sqlResponse && Array.isArray(sqlResponse.success)) {\n const successArray = sqlResponse.success as Array<{\n error: boolean;\n sql?: string;\n errorMessage?: string;\n query_key?: string;\n }>;\n \n const hasAnyValidQuery = successArray.some(item => \n item && typeof item === 'object' && \n item.error === false && \n 'sql' in item && \n typeof item.sql === 'string' && \n item.sql.trim()\n );\n \n if (!hasAnyValidQuery) {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n \n const validQueries = successArray\n .filter(item => \n item && \n typeof item === 'object' && \n item.error === false && \n 'sql' in item && \n typeof item.sql === 'string' && \n item.sql.trim()\n )\n .map(item => ({\n sql: item.sql as string,\n queryKey: item.query_key || 'Query details'\n }));\n \n if (validQueries.length === 0) {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n \n // Extract SQL and headings in the correct order\n const sqlQueries = validQueries.map(q => q.sql);\n const extractedHeadings = validQueries.map(q => formatQueryHeading(q.queryKey));\n \n return {\n sql: sqlQueries.length > 1 ? sqlQueries : sqlQueries[0],\n headings: extractedHeadings\n };\n }\n \n if ('error' in sqlResponse && typeof sqlResponse.error === 'string') {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n \n if (Array.isArray(sqlResponse)) {\n const sqlObjects = sqlResponse as Array<{sql: string, error: boolean, query_key?: string}>;\n \n const validQueries = sqlObjects\n .filter(obj => obj && typeof obj === 'object' && 'sql' in obj && 'error' in obj && !obj.error && obj.sql && obj.sql.trim())\n .map(obj => ({\n sql: obj.sql,\n queryKey: obj.query_key || 'Query details'\n }));\n \n if (validQueries.length === 0) {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n \n const sqlQueries = validQueries.map(q => q.sql);\n const extractedHeadings = validQueries.map(q => formatQueryHeading(q.queryKey));\n \n return {\n sql: sqlQueries.length > 1 ? sqlQueries : sqlQueries[0],\n headings: extractedHeadings\n };\n }\n \n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n\n } catch (err) {\n\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n\n } finally {\n setIsLoading(false);\n }\n }\n\n async function handleInfoClick(e: React.MouseEvent) {\n e.stopPropagation();\n e.preventDefault();\n \n modalOpen.current = true;\n \n try {\n const cachedSemanticQuery = componentId \n ? queryCache.getCachedQuery(componentId, 'semanticLayerQuery', interactionState)\n : null;\n \n const cachedTableButton = componentId && tableActions.length > 0\n ? queryCache.getCachedQuery(componentId, 'tableButton', interactionState)\n : null;\n \n if (cachedSemanticQuery && (tableActions.length === 0 || cachedTableButton)) {\n setSqlQuery(cachedSemanticQuery.sqlQuery);\n setQueryHeadings(cachedSemanticQuery.queryHeadings);\n setTableButtonExplanations(\n cachedTableButton?.tableButtonExplanations || cachedSemanticQuery.tableButtonExplanations\n );\n setError('');\n \n if (modalOpen.current) {\n setIsModalOpen(true);\n }\n \n if (onSqlFetch && cachedSemanticQuery.sqlQuery && \n cachedSemanticQuery.sqlQuery !== ERROR_MESSAGES.SQL_NOT_AVAILABLE) {\n onSqlFetch(cachedSemanticQuery.sqlQuery);\n }\n \n return;\n }\n \n setIsLoadingModalOpen(true);\n setError('');\n\n const [sqlResult, buttonExplanations] = await Promise.all([\n fetchSemanticLayerQuery(),\n fetchTableButtonExplanations()\n ]);\n \n if (componentId) {\n const cacheEntry = {\n sqlQuery: sqlResult.sql || ERROR_MESSAGES.SQL_NOT_AVAILABLE,\n queryHeadings: sqlResult.headings || [],\n tableButtonExplanations: buttonExplanations,\n timestamp: Date.now(),\n };\n \n queryCache.setCachedQuery(componentId, 'semanticLayerQuery', interactionState, cacheEntry);\n \n if (tableActions.length > 0) {\n queryCache.setCachedQuery(componentId, 'tableButton', interactionState, {\n ...cacheEntry,\n tableButtonExplanations: buttonExplanations,\n });\n }\n }\n \n setSqlQuery(sqlResult.sql || ERROR_MESSAGES.SQL_NOT_AVAILABLE);\n setQueryHeadings(sqlResult.headings || []);\n setTableButtonExplanations(buttonExplanations);\n \n setIsLoadingModalOpen(false);\n \n if (modalOpen.current) {\n setIsModalOpen(true);\n }\n \n if (onSqlFetch && sqlResult.sql && sqlResult.sql !== ERROR_MESSAGES.SQL_NOT_AVAILABLE) {\n onSqlFetch(sqlResult.sql);\n }\n } catch (err) {\n setSqlQuery(ERROR_MESSAGES.SQL_NOT_AVAILABLE);\n setTableButtonExplanations([]);\n setIsLoadingModalOpen(false);\n \n if (modalOpen.current) {\n setIsModalOpen(true);\n }\n }\n }\n\n function resetState() {\n setIsModalOpen(false);\n setIsLoadingModalOpen(false);\n setSqlQuery('');\n setQueryHeadings([]);\n setTableButtonExplanations([]);\n setError('');\n setIsLoading(false);\n }\n\n function handleModalClose() {\n // User explicitly closed the modal\n modalOpen.current = false;\n resetState();\n }\n\n function handleRetry() {\n resetState();\n const mockEvent = { \n stopPropagation: () => void 0,\n preventDefault: () => void 0\n } as React.MouseEvent;\n handleInfoClick(mockEvent);\n }\n\n\n if (!isVisible) {\n return null;\n }\n\n return (\n <>\n <button\n className={`${POSITION_CLASSES[position]} ${className}`}\n onClick={handleInfoClick}\n title=\"View Query Details\"\n type=\"button\"\n style={{\n width: '60px',\n height: '60px',\n transform: 'rotate(0deg)',\n opacity: 1,\n border: 'none',\n background: 'transparent',\n padding: 0,\n }}\n >\n <svg \n width=\"50\" \n height=\"50\" \n viewBox=\"0 0 67 66\" \n fill=\"none\" \n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g filter=\"url(#filter0_d_4766_2811)\">\n <rect x=\"16.1667\" y=\"15.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#A601FF\" strokeWidth=\"1\" shapeRendering=\"crispEdges\"/>\n <path d=\"M33.0756 28.0171C33.3312 27.5498 34.0023 27.5498 34.2578 28.0171L35.7159 30.683C35.7777 30.7961 35.8706 30.889 35.9837 30.9508L38.6496 32.4089C39.1169 32.6644 39.1169 33.3355 38.6496 33.5911L35.9837 35.0491C35.8706 35.111 35.7777 35.2039 35.7159 35.317L34.2578 37.9829C34.0023 38.4501 33.3312 38.4501 33.0756 37.9829L31.6176 35.317C31.5557 35.2039 31.4628 35.111 31.3497 35.0491L28.6838 33.5911C28.2166 33.3355 28.2166 32.6644 28.6838 32.4089L31.3497 30.9508C31.4628 30.889 31.5557 30.7961 31.6176 30.683L33.0756 28.0171Z\" fill=\"#A601FF\"/>\n <path d=\"M29.0634 27.1601C29.1801 26.9466 29.4866 26.9466 29.6033 27.1601L29.9973 27.8804C30.0255 27.932 30.068 27.9745 30.1196 28.0027L30.84 28.3967C31.0534 28.5134 31.0534 28.8199 30.84 28.9367L30.1196 29.3306C30.068 29.3589 30.0255 29.4013 29.9973 29.4529L29.6033 30.1733C29.4866 30.3867 29.1801 30.3867 29.0634 30.1733L28.6694 29.4529C28.6412 29.4013 28.5987 29.3589 28.5471 29.3306L27.8268 28.9367C27.6133 28.8199 27.6133 28.5134 27.8268 28.3967L28.5471 28.0027C28.5987 27.9745 28.6412 27.932 28.6694 27.8804L29.0634 27.1601Z\" fill=\"#A601FF\"/>\n <path d=\"M38.0346 36.5104C38.1638 36.2743 38.5029 36.2743 38.6321 36.5105L38.8874 36.9773C38.9186 37.0344 38.9656 37.0814 39.0227 37.1126L39.4896 37.368C39.7257 37.4971 39.7257 37.8363 39.4896 37.9654L39.0227 38.2207C38.9656 38.252 38.9186 38.2989 38.8874 38.3561L38.6321 38.8229C38.5029 39.059 38.1638 39.059 38.0346 38.8229L37.7793 38.3561C37.748 38.2989 37.7011 38.252 37.6439 38.2207L37.1771 37.9654C36.941 37.8363 36.941 37.4971 37.1771 37.368L37.6439 37.1126C37.7011 37.0814 37.748 37.0344 37.7793 36.9773L38.0346 36.5104Z\" fill=\"#A601FF\"/>\n </g>\n <defs>\n <filter id=\"filter0_d_4766_2811\" x=\"0.666687\" y=\"0\" width=\"66\" height=\"66\" filterUnits=\"userSpaceOnUse\" colorInterpolationFilters=\"sRGB\">\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\"/>\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/>\n <feMorphology radius=\"5\" operator=\"dilate\" in=\"SourceAlpha\" result=\"effect1_dropShadow_4766_2811\"/>\n <feOffset/>\n <feGaussianBlur stdDeviation=\"5\"/>\n <feComposite in2=\"hardAlpha\" operator=\"out\"/>\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.0317231 0 0 0 0 0.0834676 0 0 0 0 0.370052 0 0 0 0.05 0\"/>\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_4766_2811\"/>\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_4766_2811\" result=\"shape\"/>\n </filter>\n </defs>\n </svg>\n </button>\n \n <QueryLoadingModal isOpen={isLoadingModalOpen} onClose={handleModalClose} />\n \n <QueryDetailsModal\n isOpen={isModalOpen}\n onClose={handleModalClose}\n isLoading={isLoading}\n error={error}\n sqlQuery={sqlQuery}\n queryHeadings={queryHeadings}\n tableButtonExplanations={tableButtonExplanations}\n onRetry={handleRetry}\n />\n </>\n );\n}"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import _extends from"@babel/runtime/helpers/extends";/* eslint-disable @typescript-eslint/no-explicit-any */import React,{useEffect,useState}from"react";import{CircleAlert}from"lucide-react";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";function renderNoDataFallback(){return/*#__PURE__*/_jsxs("div",{className:"w-full py-8 flex flex-col items-center justify-center px-6 text-center",style:{minHeight:"180px"},children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-12 h-12 text-gray-400 mb-2"}),/*#__PURE__*/_jsx("h3",{className:"text-lg font-medium text-gray-900",children:"No data available"}),/*#__PURE__*/_jsx("p",{className:"mt-2 text-sm text-gray-500 max-w-md",children:"Check your filters or try a different time range."})]})}var COMPONENTS_WITH_CUSTOM_ERROR_HANDLING=new Set(["Actions","ActionCard","Card","Chart","Markdown","Table","Tabs"]);export function ComponentWrapper(_ref){var children=_ref.children,componentProps=_ref.componentProps,_ref$className=_ref.className,className=_ref$className===void 0?"":_ref$className;var gjsModel=componentProps.gjsModel,componentType=componentProps.componentType;var _useState=useState(componentProps),currentProps=_useState[0],setCurrentProps=_useState[1];var _useState2=useState((gjsModel==null?void 0:gjsModel.get("attributes"))||{}),currentAttributes=_useState2[0],setCurrentAttributes=_useState2[1];function handlePropsChange(model){var updatedModelProps=model.get("componentProps");setCurrentProps(_extends({},componentProps,updatedModelProps))}function handleAttributesChange(model){var updatedAttributes=model.get("attributes");setCurrentAttributes(updatedAttributes)}useEffect(function(){if(gjsModel){gjsModel.on("change:componentProps",function(){return handlePropsChange(gjsModel)});gjsModel.on("change:attributes",function(){return handleAttributesChange(gjsModel)});return function(){gjsModel.off("change:componentProps",function(){return handlePropsChange(gjsModel)});gjsModel.off("change:attributes",function(){return handleAttributesChange(gjsModel)})}}return undefined},[gjsModel,componentProps,componentType]);var error=currentAttributes.error||currentProps.error;var isMissing=currentAttributes.isMissing||currentProps.isMissing;var hasCustomErrorHandling=componentType&&COMPONENTS_WITH_CUSTOM_ERROR_HANDLING.has(componentType);var shouldShowWrapperFallback=!hasCustomErrorHandling&&(isMissing||error);if(shouldShowWrapperFallback){return/*#__PURE__*/_jsx("div",{className:className,children:renderNoDataFallback()})}return/*#__PURE__*/_jsx(_Fragment,{children:children})}
2
+ //# sourceMappingURL=error-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-wrapper.js","names":["React","useEffect","useState","CircleAlert","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","renderNoDataFallback","className","style","minHeight","children","COMPONENTS_WITH_CUSTOM_ERROR_HANDLING","Set","ComponentWrapper","_ref","componentProps","_ref$className","gjsModel","componentType","_useState","currentProps","setCurrentProps","_useState2","get","currentAttributes","setCurrentAttributes","handlePropsChange","model","updatedModelProps","_extends","handleAttributesChange","updatedAttributes","on","off","undefined","error","isMissing","hasCustomErrorHandling","has","shouldShowWrapperFallback"],"sources":["../../../../src/shadcn/components/ui/error-wrapper.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useState } from 'react';\nimport { CircleAlert } from 'lucide-react';\n\ntype IssueInfo = {\n message: string;\n type?: string;\n};\n\ntype ComponentProps = {\n error?: IssueInfo;\n isMissing?: boolean;\n componentType?: string;\n gjsModel?: any;\n onDismissMissing?: (componentId: string) => void;\n [key: string]: unknown;\n};\n\ntype ComponentWrapperProps = {\n children: React.ReactNode;\n componentProps: ComponentProps;\n className?: string;\n};\n\nfunction renderNoDataFallback() {\n return (\n <div\n className=\"w-full py-8 flex flex-col items-center justify-center px-6 text-center\"\n style={{ minHeight: '180px' }}\n >\n <CircleAlert className=\"w-12 h-12 text-gray-400 mb-2\" />\n <h3 className=\"text-lg font-medium text-gray-900\">No data available</h3>\n <p className=\"mt-2 text-sm text-gray-500 max-w-md\">\n Check your filters or try a different time range.\n </p>\n </div>\n );\n}\n\nconst COMPONENTS_WITH_CUSTOM_ERROR_HANDLING = new Set([\n 'Actions',\n 'ActionCard',\n 'Card',\n 'Chart',\n 'Markdown',\n 'Table',\n 'Tabs',\n]);\n\nexport function ComponentWrapper({\n children,\n componentProps,\n className = '',\n}: ComponentWrapperProps) {\n const { gjsModel, componentType } = componentProps;\n\n const [currentProps, setCurrentProps] = useState(componentProps);\n const [currentAttributes, setCurrentAttributes] = useState(gjsModel?.get('attributes') || {});\n\n function handlePropsChange(model: any) {\n const updatedModelProps = model.get('componentProps');\n setCurrentProps({\n ...componentProps,\n ...updatedModelProps,\n });\n }\n\n function handleAttributesChange(model: any) {\n const updatedAttributes = model.get('attributes');\n setCurrentAttributes(updatedAttributes);\n }\n\n useEffect(() => {\n if (gjsModel) {\n gjsModel.on('change:componentProps', () => handlePropsChange(gjsModel));\n gjsModel.on('change:attributes', () => handleAttributesChange(gjsModel));\n\n return () => {\n gjsModel.off('change:componentProps', () => handlePropsChange(gjsModel));\n gjsModel.off('change:attributes', () => handleAttributesChange(gjsModel));\n };\n }\n\n return undefined;\n }, [gjsModel, componentProps, componentType]);\n\n const error = currentAttributes.error || currentProps.error;\n const isMissing = currentAttributes.isMissing || currentProps.isMissing;\n\n const hasCustomErrorHandling =\n componentType && COMPONENTS_WITH_CUSTOM_ERROR_HANDLING.has(componentType);\n const shouldShowWrapperFallback = !hasCustomErrorHandling && (isMissing || error);\n\n if (shouldShowWrapperFallback) {\n return <div className={className}>{renderNoDataFallback()}</div>;\n }\n\n return <>{children}</>;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=images.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"images.d.js","names":[],"sources":["../../src/types/images.d.ts"],"sourcesContent":["declare module '*.gif';"],"mappings":"","ignoreList":[]}
package/package.json CHANGED
@@ -2,8 +2,50 @@
2
2
  "name": "@peak-ai/canvas",
3
3
  "author": "squad-builder-experience",
4
4
  "license": "UNLICENSED",
5
- "version": "1.4.20",
5
+ "version": "1.4.22",
6
6
  "description": "",
7
+ "scripts": {
8
+ "prepublishOnly": "yarn build",
9
+ "format": "prettier . --write && eslint src --fix",
10
+ "lint": "eslint src --cache --ext .js,.jsx,.ts,.tsx",
11
+ "build": "ts-node scripts/build.ts",
12
+ "precommit": "lint-staged",
13
+ "prettier": "prettier --write ."
14
+ },
15
+ "devDependencies": {
16
+ "@babel/cli": "^7.10.5",
17
+ "@babel/core": "^7.26.7",
18
+ "@babel/plugin-proposal-class-properties": "^7.16.0",
19
+ "@babel/plugin-transform-runtime": "^7.27.1",
20
+ "@babel/preset-env": "^7.20.2",
21
+ "@babel/preset-react": "^7.10.4",
22
+ "@babel/preset-typescript": "^7.15.0",
23
+ "@commitlint/cli": "^16.1.0",
24
+ "@commitlint/config-conventional": "^16.0.0",
25
+ "@peak-ai/eslint-config-peak-api": "^1.3.2",
26
+ "@peak-ai/eslint-config-peak-base": "^1.0.1",
27
+ "@peak-ai/eslint-config-peak-typescript": "^1.1.0",
28
+ "@semantic-release/changelog": "^6.0.1",
29
+ "@semantic-release/commit-analyzer": "^9.0.2",
30
+ "@semantic-release/git": "^10.0.1",
31
+ "@semantic-release/npm": "^9.0.0",
32
+ "@semantic-release/release-notes-generator": "^10.0.3",
33
+ "@types/lodash": "^4.17.20",
34
+ "@types/node": "^16.11.7",
35
+ "@types/react-dom": "17.0.3",
36
+ "@types/styled-components": "^5.1.11",
37
+ "babel-plugin-styled-components": "^2.1.4",
38
+ "eslint": "^8.9.0",
39
+ "eslint-plugin-react": "^7.37.5",
40
+ "eslint-plugin-react-hooks": "^5.2.0",
41
+ "husky": "^7.0.4",
42
+ "lint-staged": "^12.3.1",
43
+ "prettier": "^2.5.1",
44
+ "rimraf": "^3.0.2",
45
+ "semantic-release": "^19.0.2",
46
+ "typescript": "^4.5.5",
47
+ "typescript-styled-plugin": "^0.18.0"
48
+ },
7
49
  "dependencies": {
8
50
  "@emotion/react": "^11.11.4",
9
51
  "@emotion/styled": "^11.11.5",
@@ -54,9 +96,5 @@
54
96
  "@babel/traverse": "7.25.7",
55
97
  "minimist": "1.2.6",
56
98
  "tar": "^6.1.11"
57
- },
58
- "main": "index.js",
59
- "types": "index.d.ts",
60
- "module": "index.js",
61
- "sideEffects": false
62
- }
99
+ }
100
+ }