@peak-ai/canvas 1.4.35-rc.2 → 1.4.35-rc.5
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.
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import _extends from"@babel/runtime/helpers/extends";import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _regeneratorRuntime from"@babel/runtime/regenerator";import React,{useState,useEffect}from"react";import{CustomModal}from"./custom-modal";import{Copy,Check,ChevronDown,ChevronUp}from"lucide-react";import{formatQueryHeading}from"./query-heading-formatter";import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";function CopyButton(_ref){var onClick=_ref.onClick,isCopied=_ref.isCopied,_ref$variant=_ref.variant,variant=_ref$variant===void 0?"default":_ref$variant;var baseClasses="flex items-center gap-1 px-2 py-1 text-xs border rounded transition-colors";var variantClasses=variant==="light"?"bg-gray-50 border-gray-300 hover:bg-gray-100":"bg-gray-100 border-gray-300 hover:bg-gray-200";return/*#__PURE__*/_jsx("button",{onClick:onClick,className:baseClasses+" "+variantClasses,type:"button",children:isCopied?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Check,{className:"w-3 h-3 text-green-600"}),/*#__PURE__*/_jsx("span",{className:"text-green-600",children:"Copied!"})]}):/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Copy,{className:"w-3 h-3 text-gray-600"}),/*#__PURE__*/_jsx("span",{className:"text-gray-600",children:"Copy"})]})})}function ContentText(_ref2){var children=_ref2.children,_ref2$hasOverflowHand=_ref2.hasOverflowHandling,hasOverflowHandling=_ref2$hasOverflowHand===void 0?true:_ref2$hasOverflowHand;var overflowClasses=hasOverflowHandling?"overflow-hidden break-words":"";return/*#__PURE__*/_jsx("pre",{className:"whitespace-pre-wrap leading-relaxed text-xs text-gray-700 m-0 p-0 "+overflowClasses,children:children})}function ContentBlock(_ref3){var title=_ref3.title,children=_ref3.children,copyContent=_ref3.copyContent,copyId=_ref3.copyId,copied=_ref3.copied,onCopy=_ref3.onCopy,_ref3$variant=_ref3.variant,variant=_ref3$variant===void 0?"bordered":_ref3$variant,_ref3$copyButtonVaria=_ref3.copyButtonVariant,copyButtonVariant=_ref3$copyButtonVaria===void 0?"default":_ref3$copyButtonVaria;var containerClasses=variant==="bordered"?"rounded-lg p-3":"bg-white border border-gray-200 rounded-lg p-4";var containerStyle=variant==="bordered"?{border:"1px solid #E9EAF5"}:{};var titleClasses=variant==="bordered"?"text-sm font-medium text-gray-600":"font-semibold text-sm text-gray-500 m-0";return/*#__PURE__*/_jsxs("div",{className:containerClasses,style:containerStyle,children:[/*#__PURE__*/_jsxs("div",{className:"flex justify-between items-start mb-2",children:[/*#__PURE__*/_jsx("span",{className:titleClasses,children:title}),copyContent&&/*#__PURE__*/_jsx(CopyButton,{onClick:function onClick(){return onCopy(copyContent,copyId)},isCopied:copied[copyId]||false,variant:copyButtonVariant})]}),children]})}export function QueryDetailsModal(_ref4){var isOpen=_ref4.isOpen,onClose=_ref4.onClose,isLoading=_ref4.isLoading,error=_ref4.error,sqlQuery=_ref4.sqlQuery,_ref4$queryHeadings=_ref4.queryHeadings,queryHeadings=_ref4$queryHeadings===void 0?[]:_ref4$queryHeadings,_ref4$tableButtonExpl=_ref4.tableButtonExplanations,tableButtonExplanations=_ref4$tableButtonExpl===void 0?[]:_ref4$tableButtonExpl,onRetry=_ref4.onRetry;var _useState=useState({}),copied=_useState[0],setCopied=_useState[1];var _useState2=useState({}),expandedButtons=_useState2[0],setExpandedButtons=_useState2[1];// Reset expanded state when modal closes
|
|
2
2
|
useEffect(function(){if(!isOpen){setExpandedButtons({})}},[isOpen]);function copyToClipboard(_x,_x2){return _copyToClipboard.apply(this,arguments)}function _copyToClipboard(){_copyToClipboard=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(queryToCopy,copyId){var textToCopy,id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:textToCopy=queryToCopy;if(!textToCopy){if(Array.isArray(sqlQuery)){textToCopy=sqlQuery.filter(function(q){return q&&typeof q==="string"}).join("\n\n-- Next Query --\n\n")}else if(typeof sqlQuery==="string"){textToCopy=sqlQuery}else{textToCopy=""}}if(textToCopy){_context.next=4;break}return _context.abrupt("return");case 4:id=copyId||"main";_context.prev=5;_context.next=8;return navigator.clipboard.writeText(textToCopy);case 8:setCopied(function(prev){var _extends3;return _extends({},prev,(_extends3={},_extends3[id]=true,_extends3))});setTimeout(function(){return setCopied(function(prev){var _extends4;return _extends({},prev,(_extends4={},_extends4[id]=false,_extends4))})},2000);_context.next=14;break;case 12:_context.prev=12;_context.t0=_context["catch"](5);case 14:case"end":return _context.stop()}},_callee,null,[[5,12]])}));return _copyToClipboard.apply(this,arguments)}function toggleButtonExpansion(buttonIndex){setExpandedButtons(function(prev){var _extends2;return _extends({},prev,(_extends2={},_extends2[buttonIndex]=!prev[buttonIndex],_extends2))})}function renderTableButtonExplanations(){if(!tableButtonExplanations||tableButtonExplanations.length===0){return null}function hasValidJsonBody(jsonBody){return jsonBody!==null&&jsonBody!==undefined&&jsonBody!==""}function hasValidFormFields(formFields){return formFields!==null&&formFields!==undefined&&Object.keys(formFields||{}).length>0}return/*#__PURE__*/_jsx("div",{className:"mb-6",children:tableButtonExplanations.map(function(button,index){var _button$buttonStyle,_button$buttonStyle2,_button$buttonStyle3;return/*#__PURE__*/_jsxs("div",{className:"mb-3 border border-gray-200 rounded-lg",children:[/*#__PURE__*/_jsxs("div",{className:"w-full px-4 py-3 flex items-center justify-between rounded-lg",children:[/*#__PURE__*/_jsxs("div",{className:"flex items-center",children:[/*#__PURE__*/_jsx("button",{onClick:function onClick(){return toggleButtonExpansion(index)},className:button.buttonClassName||"flex items-center justify-center px-3 rounded text-xs font-medium",style:_extends({height:"35px",width:"fit-content",minWidth:"fit-content",backgroundColor:(_button$buttonStyle=button.buttonStyle)==null?void 0:_button$buttonStyle.backgroundColor,color:(_button$buttonStyle2=button.buttonStyle)==null?void 0:_button$buttonStyle2.color,border:(_button$buttonStyle3=button.buttonStyle)==null?void 0:_button$buttonStyle3.border},button.buttonStyle||{},button.buttonStyle||{},{display:"flex",alignItems:"center",justifyContent:"center"}),children:button.action}),/*#__PURE__*/_jsx("div",{className:"ml-3 flex flex-col",children:button.operationSummary&&/*#__PURE__*/_jsx("span",{className:"text-xs text-gray-700 font-medium",children:button.operationSummary})})]}),expandedButtons[index]?/*#__PURE__*/_jsx(ChevronUp,{className:"w-4 h-4 text-gray-500 transition-transform cursor-pointer",onClick:function onClick(){return toggleButtonExpansion(index)}}):/*#__PURE__*/_jsx(ChevronDown,{className:"w-4 h-4 text-gray-500 transition-transform cursor-pointer",onClick:function onClick(){return toggleButtonExpansion(index)}})]}),expandedButtons[index]&&/*#__PURE__*/_jsx("div",{className:"px-4 pb-3 border-t border-gray-200",children:/*#__PURE__*/_jsxs("div",{className:"mt-2 space-y-3",children:[button.operationDescription&&/*#__PURE__*/_jsx(ContentBlock,{title:"Description",copyId:"description-"+index,copied:copied,onCopy:copyToClipboard,variant:"bordered",children:/*#__PURE__*/_jsx(ContentText,{children:button.operationDescription})}),(button.requestUrl||button.explanation)&&/*#__PURE__*/_jsx(ContentBlock,{title:"URL",copyContent:button.requestUrl||button.explanation,copyId:"url-"+index,copied:copied,onCopy:copyToClipboard,variant:"bordered",children:/*#__PURE__*/_jsx(ContentText,{children:button.requestUrl||button.explanation})}),(hasValidJsonBody(button.jsonBody)||hasValidFormFields(button.formFields))&&/*#__PURE__*/_jsx(ContentBlock,{title:"Payload",copyContent:JSON.stringify(hasValidJsonBody(button.jsonBody)?button.jsonBody:button.formFields,null,2),copyId:"payload-"+index,copied:copied,onCopy:copyToClipboard,variant:"bordered",children:/*#__PURE__*/_jsx(ContentText,{children:hasValidJsonBody(button.jsonBody)?JSON.stringify(button.jsonBody,null,2):JSON.stringify(button.formFields,null,2)})})]})})]},index)})})}function renderModalContent(){if(isLoading){return/*#__PURE__*/_jsxs("div",{className:"flex flex-col items-center justify-center py-12",children:[/*#__PURE__*/_jsx("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-purple-600 mb-4"}),/*#__PURE__*/_jsx("span",{className:"text-xs text-gray-600",children:"Fetching query details from semantic layer..."}),/*#__PURE__*/_jsx("span",{className:"text-xs text-gray-400 mt-2",children:"This may take a few moments"})]})}if(error){return/*#__PURE__*/_jsxs("div",{className:"text-red-600 p-4 bg-red-50 rounded-lg border border-red-200 m-6",children:[/*#__PURE__*/_jsx("p",{className:"font-medium mb-2 text-xs",children:"Unable to fetch query details"}),/*#__PURE__*/_jsx("p",{className:"text-xs mb-3",children:error}),/*#__PURE__*/_jsx("button",{onClick:onRetry,className:"px-4 py-2 bg-red-100 hover:bg-red-200 rounded text-xs font-medium transition-colors",type:"button",children:"Retry"})]})}if(!sqlQuery||Array.isArray(sqlQuery)&&sqlQuery.length===0){return/*#__PURE__*/_jsx("div",{className:"text-gray-600 p-6",children:/*#__PURE__*/_jsx("p",{className:"text-xs",children:"No query details available"})})}// Handle multiple queries
|
|
3
|
-
if(Array.isArray(sqlQuery)){return/*#__PURE__*/_jsxs("div",{className:"p-6 space-y-4",children:[sqlQuery.filter(function(query){return query&&typeof query==="string"&&query.trim()}).map(function(query,index){var rawHeading=queryHeadings[index]||"Query "+(index+1);var heading=formatQueryHeading(rawHeading);return/*#__PURE__*/_jsx(ContentBlock,{title:heading,copyContent:query,copyId:"query-"+index,copied:copied,onCopy:copyToClipboard,variant:"default",copyButtonVariant:"light",children:/*#__PURE__*/_jsx(ContentText,{hasOverflowHandling:false,children:query})},index)}),renderTableButtonExplanations()]})}return/*#__PURE__*/_jsxs("div",{className:"p-6 space-y-4",children:[/*#__PURE__*/_jsx(ContentBlock,{title:formatQueryHeading(queryHeadings[0]||"Query details"),copyContent:typeof sqlQuery==="string"?sqlQuery:"",copyId:"single",copied:copied,onCopy:copyToClipboard,variant:"default",copyButtonVariant:"light",children:/*#__PURE__*/_jsx(ContentText,{hasOverflowHandling:false,children:sqlQuery})}),renderTableButtonExplanations()]})}return/*#__PURE__*/_jsx(CustomModal,{isOpen:isOpen,onClose:onClose,title:"
|
|
3
|
+
if(Array.isArray(sqlQuery)){return/*#__PURE__*/_jsxs("div",{className:"p-6 space-y-4",children:[sqlQuery.filter(function(query){return query&&typeof query==="string"&&query.trim()}).map(function(query,index){var rawHeading=queryHeadings[index]||"Query "+(index+1);var heading=formatQueryHeading(rawHeading);return/*#__PURE__*/_jsx(ContentBlock,{title:heading,copyContent:query,copyId:"query-"+index,copied:copied,onCopy:copyToClipboard,variant:"default",copyButtonVariant:"light",children:/*#__PURE__*/_jsx(ContentText,{hasOverflowHandling:false,children:query})},index)}),renderTableButtonExplanations()]})}return/*#__PURE__*/_jsxs("div",{className:"p-6 space-y-4",children:[/*#__PURE__*/_jsx(ContentBlock,{title:formatQueryHeading(queryHeadings[0]||"Query details"),copyContent:typeof sqlQuery==="string"?sqlQuery:"",copyId:"single",copied:copied,onCopy:copyToClipboard,variant:"default",copyButtonVariant:"light",children:/*#__PURE__*/_jsx(ContentText,{hasOverflowHandling:false,children:sqlQuery})}),renderTableButtonExplanations()]})}return/*#__PURE__*/_jsx(CustomModal,{isOpen:isOpen,onClose:onClose,title:"How was this metric calculated?",children:renderModalContent()})}export default QueryDetailsModal;
|
|
4
4
|
//# sourceMappingURL=query-details-modal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-details-modal.js","names":["React","useState","useEffect","CustomModal","Copy","Check","ChevronDown","ChevronUp","formatQueryHeading","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","CopyButton","_ref","onClick","isCopied","_ref$variant","variant","baseClasses","variantClasses","className","type","children","ContentText","_ref2","_ref2$hasOverflowHand","hasOverflowHandling","overflowClasses","ContentBlock","_ref3","title","copyContent","copyId","copied","onCopy","_ref3$variant","_ref3$copyButtonVaria","copyButtonVariant","containerClasses","containerStyle","border","titleClasses","style","QueryDetailsModal","_ref4","isOpen","onClose","isLoading","error","sqlQuery","_ref4$queryHeadings","queryHeadings","_ref4$tableButtonExpl","tableButtonExplanations","onRetry","_useState","setCopied","_useState2","expandedButtons","setExpandedButtons","copyToClipboard","_x","_x2","_copyToClipboard","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","queryToCopy","textToCopy","id","wrap","_callee$","_context","prev","next","Array","isArray","filter","q","join","abrupt","navigator","clipboard","writeText","_extends3","_extends","setTimeout","_extends4","t0","stop","toggleButtonExpansion","buttonIndex","_extends2","renderTableButtonExplanations","length","hasValidJsonBody","jsonBody","undefined","hasValidFormFields","formFields","Object","keys","map","button","index","_button$buttonStyle","_button$buttonStyle2","_button$buttonStyle3","buttonClassName","height","width","minWidth","backgroundColor","buttonStyle","color","display","alignItems","justifyContent","action","operationSummary","operationDescription","requestUrl","explanation","JSON","stringify","renderModalContent","query","trim","rawHeading","heading"],"sources":["../../../src/plugins/helpers/query-details-modal.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { CustomModal } from './custom-modal';\nimport { Copy, Check, ChevronDown, ChevronUp, X } from 'lucide-react';\nimport { formatQueryHeading } from './query-heading-formatter';\n\ntype CopyButtonProps = {\n onClick: () => void;\n isCopied: boolean;\n variant?: 'default' | 'light';\n};\n\nfunction CopyButton({ onClick, isCopied, variant = 'default' }: CopyButtonProps) {\n const baseClasses = \"flex items-center gap-1 px-2 py-1 text-xs border rounded transition-colors\";\n const variantClasses = variant === 'light' \n ? \"bg-gray-50 border-gray-300 hover:bg-gray-100\"\n : \"bg-gray-100 border-gray-300 hover:bg-gray-200\";\n\n return (\n <button\n onClick={onClick}\n className={`${baseClasses} ${variantClasses}`}\n type=\"button\"\n >\n {isCopied ? (\n <>\n <Check className=\"w-3 h-3 text-green-600\" />\n <span className=\"text-green-600\">Copied!</span>\n </>\n ) : (\n <>\n <Copy className=\"w-3 h-3 text-gray-600\" />\n <span className=\"text-gray-600\">Copy</span>\n </>\n )}\n </button>\n );\n}\n\ntype ContentTextProps = {\n children: React.ReactNode;\n hasOverflowHandling?: boolean;\n};\n\nfunction ContentText({ children, hasOverflowHandling = true }: ContentTextProps) {\n const overflowClasses = hasOverflowHandling ? \"overflow-hidden break-words\" : \"\";\n\n return (\n <pre className={`whitespace-pre-wrap leading-relaxed text-xs text-gray-700 m-0 p-0 ${overflowClasses}`}>\n {children}\n </pre>\n );\n}\n\ntype ContentBlockProps = {\n title: string;\n children: React.ReactNode;\n copyContent?: string;\n copyId: string;\n copied: Record<string, boolean>;\n onCopy: (content: string, id: string) => void;\n variant?: 'default' | 'bordered';\n copyButtonVariant?: 'default' | 'light';\n};\n\nfunction ContentBlock({ \n title, \n children, \n copyContent, \n copyId, \n copied, \n onCopy,\n variant = 'bordered',\n copyButtonVariant = 'default'\n}: ContentBlockProps) {\n const containerClasses = variant === 'bordered' \n ? \"rounded-lg p-3\"\n : \"bg-white border border-gray-200 rounded-lg p-4\";\n \n const containerStyle = variant === 'bordered' \n ? { border: '1px solid #E9EAF5' }\n : {};\n\n const titleClasses = variant === 'bordered'\n ? \"text-sm font-medium text-gray-600\"\n : \"font-semibold text-sm text-gray-500 m-0\";\n\n return (\n <div className={containerClasses} style={containerStyle}>\n <div className=\"flex justify-between items-start mb-2\">\n <span className={titleClasses}>{title}</span>\n {copyContent && (\n <CopyButton\n onClick={() => onCopy(copyContent, copyId)}\n isCopied={copied[copyId] || false}\n variant={copyButtonVariant}\n />\n )}\n </div>\n {children}\n </div>\n );\n}\n\ntype QueryDetailsModalProps = {\n isOpen: boolean;\n onClose: () => void;\n isLoading: boolean;\n error: string;\n sqlQuery: string | string[];\n queryHeadings?: string[];\n tableButtonExplanations?: Array<{\n action: string, \n explanation: string, \n operationSummary?: string,\n operationDescription?: string,\n buttonClassName?: string, \n buttonStyle?: Record<string, unknown>,\n formFields?: Record<string, unknown>;\n jsonBody?: unknown;\n requestUrl?: string;\n }>;\n onRetry: () => void;\n};\n\nexport function QueryDetailsModal({\n isOpen,\n onClose,\n isLoading,\n error,\n sqlQuery,\n queryHeadings = [],\n tableButtonExplanations = [],\n onRetry\n}: QueryDetailsModalProps) {\n const [copied, setCopied] = useState<{ [key: string]: boolean }>({});\n const [expandedButtons, setExpandedButtons] = useState<{ [key: string]: boolean }>({});\n\n // Reset expanded state when modal closes\n useEffect(() => {\n if (!isOpen) {\n setExpandedButtons({});\n }\n }, [isOpen]);\n\n async function copyToClipboard(queryToCopy?: string, copyId?: string) {\n let textToCopy = queryToCopy;\n \n if (!textToCopy) {\n if (Array.isArray(sqlQuery)) {\n textToCopy = sqlQuery.filter(q => q && typeof q === 'string').join('\\n\\n-- Next Query --\\n\\n');\n } else if (typeof sqlQuery === 'string') {\n textToCopy = sqlQuery;\n } else {\n textToCopy = '';\n }\n }\n \n if (!textToCopy) {\n return;\n }\n \n const id = copyId || 'main';\n \n try {\n await navigator.clipboard.writeText(textToCopy);\n setCopied(prev => ({ ...prev, [id]: true }));\n setTimeout(() => setCopied(prev => ({ ...prev, [id]: false })), 2000);\n } catch (err) {\n // Silently fail if clipboard API is not available\n }\n }\n\n function toggleButtonExpansion(buttonIndex: number) {\n setExpandedButtons(prev => ({\n ...prev,\n [buttonIndex]: !prev[buttonIndex]\n }));\n }\n\n function renderTableButtonExplanations() {\n if (!tableButtonExplanations || tableButtonExplanations.length === 0) {\n return null;\n }\n\n function hasValidJsonBody(jsonBody: unknown): boolean {\n return jsonBody !== null && jsonBody !== undefined && jsonBody !== '';\n }\n\n function hasValidFormFields(formFields: Record<string, unknown> | undefined): boolean {\n return formFields !== null && formFields !== undefined && Object.keys(formFields || {}).length > 0;\n }\n\n return (\n <div className=\"mb-6\">\n {tableButtonExplanations.map((button, index) => (\n <div key={index} className=\"mb-3 border border-gray-200 rounded-lg\">\n <div className=\"w-full px-4 py-3 flex items-center justify-between rounded-lg\">\n <div className=\"flex items-center\">\n <button\n onClick={() => toggleButtonExpansion(index)}\n className={button.buttonClassName || \"flex items-center justify-center px-3 rounded text-xs font-medium\"}\n style={{\n height: '35px',\n width: 'fit-content',\n minWidth: 'fit-content',\n backgroundColor: (button.buttonStyle?.backgroundColor as string),\n color: (button.buttonStyle?.color as string),\n border: (button.buttonStyle?.border as string),\n ...(button.buttonStyle as React.CSSProperties || {})\n , ...button.buttonStyle as React.CSSProperties || {},\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}\n >\n {button.action}\n </button>\n <div className=\"ml-3 flex flex-col\">\n {button.operationSummary && (\n <span className=\"text-xs text-gray-700 font-medium\">\n {button.operationSummary}\n </span>\n )}\n </div>\n </div>\n {expandedButtons[index] ? (\n <ChevronUp \n className=\"w-4 h-4 text-gray-500 transition-transform cursor-pointer\"\n onClick={() => toggleButtonExpansion(index)}\n />\n ) : (\n <ChevronDown \n className=\"w-4 h-4 text-gray-500 transition-transform cursor-pointer\"\n onClick={() => toggleButtonExpansion(index)}\n />\n )}\n </div>\n \n {expandedButtons[index] && (\n <div className=\"px-4 pb-3 border-t border-gray-200\">\n <div className=\"mt-2 space-y-3\">\n {/* Description Block */}\n {button.operationDescription && (\n <ContentBlock\n title=\"Description\"\n copyId={`description-${index}`}\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"bordered\"\n >\n <ContentText>\n {button.operationDescription}\n </ContentText>\n </ContentBlock>\n )}\n\n {(button.requestUrl || button.explanation) && (\n <ContentBlock\n title=\"URL\"\n copyContent={button.requestUrl || button.explanation}\n copyId={`url-${index}`}\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"bordered\"\n >\n <ContentText>\n {button.requestUrl || button.explanation}\n </ContentText>\n </ContentBlock>\n )}\n \n {(hasValidJsonBody(button.jsonBody) || hasValidFormFields(button.formFields)) && (\n <ContentBlock\n title=\"Payload\"\n copyContent={JSON.stringify(\n hasValidJsonBody(button.jsonBody) ? button.jsonBody : button.formFields, \n null, \n 2\n )}\n copyId={`payload-${index}`}\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"bordered\"\n >\n <ContentText>\n {hasValidJsonBody(button.jsonBody) \n ? JSON.stringify(button.jsonBody, null, 2)\n : JSON.stringify(button.formFields, null, 2)}\n </ContentText>\n </ContentBlock>\n )}\n </div>\n </div>\n )}\n </div>\n ))}\n </div>\n );\n }\n\n function renderModalContent() {\n if (isLoading) {\n return (\n <div className=\"flex flex-col items-center justify-center py-12\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-b-2 border-purple-600 mb-4\"></div>\n <span className=\"text-xs text-gray-600\">Fetching query details from semantic layer...</span>\n <span className=\"text-xs text-gray-400 mt-2\">This may take a few moments</span>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"text-red-600 p-4 bg-red-50 rounded-lg border border-red-200 m-6\">\n <p className=\"font-medium mb-2 text-xs\">Unable to fetch query details</p>\n <p className=\"text-xs mb-3\">{error}</p>\n <button \n onClick={onRetry}\n className=\"px-4 py-2 bg-red-100 hover:bg-red-200 rounded text-xs font-medium transition-colors\"\n type=\"button\"\n >\n Retry\n </button>\n </div>\n );\n }\n\n if (!sqlQuery || (Array.isArray(sqlQuery) && sqlQuery.length === 0)) {\n return (\n <div className=\"text-gray-600 p-6\">\n <p className=\"text-xs\">No query details available</p>\n </div>\n );\n }\n\n // Handle multiple queries\n if (Array.isArray(sqlQuery)) {\n return (\n <div className=\"p-6 space-y-4\">\n {sqlQuery\n .filter(query => query && typeof query === 'string' && query.trim())\n .map((query, index) => {\n\n const rawHeading = queryHeadings[index] || `Query ${index + 1}`;\n const heading = formatQueryHeading(rawHeading);\n\n return (\n <ContentBlock\n key={index}\n title={heading}\n copyContent={query}\n copyId={`query-${index}`}\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"default\"\n copyButtonVariant=\"light\"\n >\n <ContentText hasOverflowHandling={false}>\n {query}\n </ContentText>\n </ContentBlock>\n );\n })}\n {renderTableButtonExplanations()}\n </div>\n );\n }\n\n return (\n <div className=\"p-6 space-y-4\">\n <ContentBlock\n title={formatQueryHeading(queryHeadings[0] || \"Query details\")}\n copyContent={typeof sqlQuery === 'string' ? sqlQuery : ''}\n copyId=\"single\"\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"default\"\n copyButtonVariant=\"light\"\n >\n <ContentText hasOverflowHandling={false}>\n {sqlQuery}\n </ContentText>\n </ContentBlock>\n {renderTableButtonExplanations()}\n </div>\n );\n }\n\n return (\n <CustomModal\n isOpen={isOpen}\n onClose={onClose}\n title=\"blah\"\n >\n {renderModalContent()}\n </CustomModal>\n );\n}\n\nexport default QueryDetailsModal;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"query-details-modal.js","names":["React","useState","useEffect","CustomModal","Copy","Check","ChevronDown","ChevronUp","formatQueryHeading","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","CopyButton","_ref","onClick","isCopied","_ref$variant","variant","baseClasses","variantClasses","className","type","children","ContentText","_ref2","_ref2$hasOverflowHand","hasOverflowHandling","overflowClasses","ContentBlock","_ref3","title","copyContent","copyId","copied","onCopy","_ref3$variant","_ref3$copyButtonVaria","copyButtonVariant","containerClasses","containerStyle","border","titleClasses","style","QueryDetailsModal","_ref4","isOpen","onClose","isLoading","error","sqlQuery","_ref4$queryHeadings","queryHeadings","_ref4$tableButtonExpl","tableButtonExplanations","onRetry","_useState","setCopied","_useState2","expandedButtons","setExpandedButtons","copyToClipboard","_x","_x2","_copyToClipboard","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","queryToCopy","textToCopy","id","wrap","_callee$","_context","prev","next","Array","isArray","filter","q","join","abrupt","navigator","clipboard","writeText","_extends3","_extends","setTimeout","_extends4","t0","stop","toggleButtonExpansion","buttonIndex","_extends2","renderTableButtonExplanations","length","hasValidJsonBody","jsonBody","undefined","hasValidFormFields","formFields","Object","keys","map","button","index","_button$buttonStyle","_button$buttonStyle2","_button$buttonStyle3","buttonClassName","height","width","minWidth","backgroundColor","buttonStyle","color","display","alignItems","justifyContent","action","operationSummary","operationDescription","requestUrl","explanation","JSON","stringify","renderModalContent","query","trim","rawHeading","heading"],"sources":["../../../src/plugins/helpers/query-details-modal.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { CustomModal } from './custom-modal';\nimport { Copy, Check, ChevronDown, ChevronUp, X } from 'lucide-react';\nimport { formatQueryHeading } from './query-heading-formatter';\n\ntype CopyButtonProps = {\n onClick: () => void;\n isCopied: boolean;\n variant?: 'default' | 'light';\n};\n\nfunction CopyButton({ onClick, isCopied, variant = 'default' }: CopyButtonProps) {\n const baseClasses = \"flex items-center gap-1 px-2 py-1 text-xs border rounded transition-colors\";\n const variantClasses = variant === 'light' \n ? \"bg-gray-50 border-gray-300 hover:bg-gray-100\"\n : \"bg-gray-100 border-gray-300 hover:bg-gray-200\";\n\n return (\n <button\n onClick={onClick}\n className={`${baseClasses} ${variantClasses}`}\n type=\"button\"\n >\n {isCopied ? (\n <>\n <Check className=\"w-3 h-3 text-green-600\" />\n <span className=\"text-green-600\">Copied!</span>\n </>\n ) : (\n <>\n <Copy className=\"w-3 h-3 text-gray-600\" />\n <span className=\"text-gray-600\">Copy</span>\n </>\n )}\n </button>\n );\n}\n\ntype ContentTextProps = {\n children: React.ReactNode;\n hasOverflowHandling?: boolean;\n};\n\nfunction ContentText({ children, hasOverflowHandling = true }: ContentTextProps) {\n const overflowClasses = hasOverflowHandling ? \"overflow-hidden break-words\" : \"\";\n\n return (\n <pre className={`whitespace-pre-wrap leading-relaxed text-xs text-gray-700 m-0 p-0 ${overflowClasses}`}>\n {children}\n </pre>\n );\n}\n\ntype ContentBlockProps = {\n title: string;\n children: React.ReactNode;\n copyContent?: string;\n copyId: string;\n copied: Record<string, boolean>;\n onCopy: (content: string, id: string) => void;\n variant?: 'default' | 'bordered';\n copyButtonVariant?: 'default' | 'light';\n};\n\nfunction ContentBlock({ \n title, \n children, \n copyContent, \n copyId, \n copied, \n onCopy,\n variant = 'bordered',\n copyButtonVariant = 'default'\n}: ContentBlockProps) {\n const containerClasses = variant === 'bordered' \n ? \"rounded-lg p-3\"\n : \"bg-white border border-gray-200 rounded-lg p-4\";\n \n const containerStyle = variant === 'bordered' \n ? { border: '1px solid #E9EAF5' }\n : {};\n\n const titleClasses = variant === 'bordered'\n ? \"text-sm font-medium text-gray-600\"\n : \"font-semibold text-sm text-gray-500 m-0\";\n\n return (\n <div className={containerClasses} style={containerStyle}>\n <div className=\"flex justify-between items-start mb-2\">\n <span className={titleClasses}>{title}</span>\n {copyContent && (\n <CopyButton\n onClick={() => onCopy(copyContent, copyId)}\n isCopied={copied[copyId] || false}\n variant={copyButtonVariant}\n />\n )}\n </div>\n {children}\n </div>\n );\n}\n\ntype QueryDetailsModalProps = {\n isOpen: boolean;\n onClose: () => void;\n isLoading: boolean;\n error: string;\n sqlQuery: string | string[];\n queryHeadings?: string[];\n tableButtonExplanations?: Array<{\n action: string, \n explanation: string, \n operationSummary?: string,\n operationDescription?: string,\n buttonClassName?: string, \n buttonStyle?: Record<string, unknown>,\n formFields?: Record<string, unknown>;\n jsonBody?: unknown;\n requestUrl?: string;\n }>;\n onRetry: () => void;\n};\n\nexport function QueryDetailsModal({\n isOpen,\n onClose,\n isLoading,\n error,\n sqlQuery,\n queryHeadings = [],\n tableButtonExplanations = [],\n onRetry\n}: QueryDetailsModalProps) {\n const [copied, setCopied] = useState<{ [key: string]: boolean }>({});\n const [expandedButtons, setExpandedButtons] = useState<{ [key: string]: boolean }>({});\n\n // Reset expanded state when modal closes\n useEffect(() => {\n if (!isOpen) {\n setExpandedButtons({});\n }\n }, [isOpen]);\n\n async function copyToClipboard(queryToCopy?: string, copyId?: string) {\n let textToCopy = queryToCopy;\n \n if (!textToCopy) {\n if (Array.isArray(sqlQuery)) {\n textToCopy = sqlQuery.filter(q => q && typeof q === 'string').join('\\n\\n-- Next Query --\\n\\n');\n } else if (typeof sqlQuery === 'string') {\n textToCopy = sqlQuery;\n } else {\n textToCopy = '';\n }\n }\n \n if (!textToCopy) {\n return;\n }\n \n const id = copyId || 'main';\n \n try {\n await navigator.clipboard.writeText(textToCopy);\n setCopied(prev => ({ ...prev, [id]: true }));\n setTimeout(() => setCopied(prev => ({ ...prev, [id]: false })), 2000);\n } catch (err) {\n // Silently fail if clipboard API is not available\n }\n }\n\n function toggleButtonExpansion(buttonIndex: number) {\n setExpandedButtons(prev => ({\n ...prev,\n [buttonIndex]: !prev[buttonIndex]\n }));\n }\n\n function renderTableButtonExplanations() {\n if (!tableButtonExplanations || tableButtonExplanations.length === 0) {\n return null;\n }\n\n function hasValidJsonBody(jsonBody: unknown): boolean {\n return jsonBody !== null && jsonBody !== undefined && jsonBody !== '';\n }\n\n function hasValidFormFields(formFields: Record<string, unknown> | undefined): boolean {\n return formFields !== null && formFields !== undefined && Object.keys(formFields || {}).length > 0;\n }\n\n return (\n <div className=\"mb-6\">\n {tableButtonExplanations.map((button, index) => (\n <div key={index} className=\"mb-3 border border-gray-200 rounded-lg\">\n <div className=\"w-full px-4 py-3 flex items-center justify-between rounded-lg\">\n <div className=\"flex items-center\">\n <button\n onClick={() => toggleButtonExpansion(index)}\n className={button.buttonClassName || \"flex items-center justify-center px-3 rounded text-xs font-medium\"}\n style={{\n height: '35px',\n width: 'fit-content',\n minWidth: 'fit-content',\n backgroundColor: (button.buttonStyle?.backgroundColor as string),\n color: (button.buttonStyle?.color as string),\n border: (button.buttonStyle?.border as string),\n ...(button.buttonStyle as React.CSSProperties || {})\n , ...button.buttonStyle as React.CSSProperties || {},\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}\n >\n {button.action}\n </button>\n <div className=\"ml-3 flex flex-col\">\n {button.operationSummary && (\n <span className=\"text-xs text-gray-700 font-medium\">\n {button.operationSummary}\n </span>\n )}\n </div>\n </div>\n {expandedButtons[index] ? (\n <ChevronUp \n className=\"w-4 h-4 text-gray-500 transition-transform cursor-pointer\"\n onClick={() => toggleButtonExpansion(index)}\n />\n ) : (\n <ChevronDown \n className=\"w-4 h-4 text-gray-500 transition-transform cursor-pointer\"\n onClick={() => toggleButtonExpansion(index)}\n />\n )}\n </div>\n \n {expandedButtons[index] && (\n <div className=\"px-4 pb-3 border-t border-gray-200\">\n <div className=\"mt-2 space-y-3\">\n {/* Description Block */}\n {button.operationDescription && (\n <ContentBlock\n title=\"Description\"\n copyId={`description-${index}`}\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"bordered\"\n >\n <ContentText>\n {button.operationDescription}\n </ContentText>\n </ContentBlock>\n )}\n\n {(button.requestUrl || button.explanation) && (\n <ContentBlock\n title=\"URL\"\n copyContent={button.requestUrl || button.explanation}\n copyId={`url-${index}`}\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"bordered\"\n >\n <ContentText>\n {button.requestUrl || button.explanation}\n </ContentText>\n </ContentBlock>\n )}\n \n {(hasValidJsonBody(button.jsonBody) || hasValidFormFields(button.formFields)) && (\n <ContentBlock\n title=\"Payload\"\n copyContent={JSON.stringify(\n hasValidJsonBody(button.jsonBody) ? button.jsonBody : button.formFields, \n null, \n 2\n )}\n copyId={`payload-${index}`}\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"bordered\"\n >\n <ContentText>\n {hasValidJsonBody(button.jsonBody) \n ? JSON.stringify(button.jsonBody, null, 2)\n : JSON.stringify(button.formFields, null, 2)}\n </ContentText>\n </ContentBlock>\n )}\n </div>\n </div>\n )}\n </div>\n ))}\n </div>\n );\n }\n\n function renderModalContent() {\n if (isLoading) {\n return (\n <div className=\"flex flex-col items-center justify-center py-12\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-b-2 border-purple-600 mb-4\"></div>\n <span className=\"text-xs text-gray-600\">Fetching query details from semantic layer...</span>\n <span className=\"text-xs text-gray-400 mt-2\">This may take a few moments</span>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"text-red-600 p-4 bg-red-50 rounded-lg border border-red-200 m-6\">\n <p className=\"font-medium mb-2 text-xs\">Unable to fetch query details</p>\n <p className=\"text-xs mb-3\">{error}</p>\n <button \n onClick={onRetry}\n className=\"px-4 py-2 bg-red-100 hover:bg-red-200 rounded text-xs font-medium transition-colors\"\n type=\"button\"\n >\n Retry\n </button>\n </div>\n );\n }\n\n if (!sqlQuery || (Array.isArray(sqlQuery) && sqlQuery.length === 0)) {\n return (\n <div className=\"text-gray-600 p-6\">\n <p className=\"text-xs\">No query details available</p>\n </div>\n );\n }\n\n // Handle multiple queries\n if (Array.isArray(sqlQuery)) {\n return (\n <div className=\"p-6 space-y-4\">\n {sqlQuery\n .filter(query => query && typeof query === 'string' && query.trim())\n .map((query, index) => {\n\n const rawHeading = queryHeadings[index] || `Query ${index + 1}`;\n const heading = formatQueryHeading(rawHeading);\n\n return (\n <ContentBlock\n key={index}\n title={heading}\n copyContent={query}\n copyId={`query-${index}`}\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"default\"\n copyButtonVariant=\"light\"\n >\n <ContentText hasOverflowHandling={false}>\n {query}\n </ContentText>\n </ContentBlock>\n );\n })}\n {renderTableButtonExplanations()}\n </div>\n );\n }\n\n return (\n <div className=\"p-6 space-y-4\">\n <ContentBlock\n title={formatQueryHeading(queryHeadings[0] || \"Query details\")}\n copyContent={typeof sqlQuery === 'string' ? sqlQuery : ''}\n copyId=\"single\"\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"default\"\n copyButtonVariant=\"light\"\n >\n <ContentText hasOverflowHandling={false}>\n {sqlQuery}\n </ContentText>\n </ContentBlock>\n {renderTableButtonExplanations()}\n </div>\n );\n }\n\n return (\n <CustomModal\n isOpen={isOpen}\n onClose={onClose}\n title=\"How was this metric calculated?\"\n >\n {renderModalContent()}\n </CustomModal>\n );\n}\n\nexport default QueryDetailsModal;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,7 +5,8 @@ import*as domutil from"recharts/lib/util/DOMUtils";import{Group}from"@visx/group
|
|
|
5
5
|
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";domutil.getOffset=function(el){var html=el.ownerDocument.documentElement;var box={top:0,left:0};if(typeof el.getBoundingClientRect!=="undefined"){box=el.getBoundingClientRect()}var iframe=document.querySelector(".gjs-frame");var iframeWindow=iframe==null?void 0:iframe.contentWindow;return{top:box.top+iframeWindow.pageYOffset-html.clientTop,left:box.left+iframeWindow.pageXOffset-html.clientLeft}};var baseColors=[[theme.colors.Blue_100,theme.colors.Blue_30],[theme.colors.Purpley_100,theme.colors.Purpley_30],[theme.colors.Light_Bluish_Green,"#06601b"],[theme.colors.Wild_Strawberry,"#4d001c"]];var iconMap={TrendingUp:/*#__PURE__*/_jsx(TrendingUp,{}),TrendingDown:/*#__PURE__*/_jsx(TrendingDown,{}),ShoppingCart:/*#__PURE__*/_jsx(ShoppingCart,{}),Equalizer:/*#__PURE__*/_jsx(ChartBarBig,{}),Style:/*#__PURE__*/_jsx(Tag,{}),Place:/*#__PURE__*/_jsx(MapPin,{})};function getIconFromString(iconString){if(!iconString){return null}if(iconMap[iconString]){return iconMap[iconString]}var lowerIconString=iconString.toLowerCase();var matchingKey=Object.keys(iconMap).find(function(key){return key.toLowerCase()===lowerIconString});if(matchingKey){return iconMap[matchingKey]}return null}function getNColors(n){var colors=[];var safeBaseColors=Array.isArray(baseColors)?baseColors:[];for(var _iterator=_createForOfIteratorHelperLoose(safeBaseColors),_step;!(_step=_iterator()).done;){var baseColor=_step.value;// eslint-disable-next-line import/no-named-as-default-member
|
|
6
6
|
colors.push(chroma.scale(baseColor).mode("lab").colors(n))}function getOneColor(existing){var color=null;do{var base=colors[Math.floor(Math.random()*colors.length)];var selectedColorIndex=Math.floor(Math.random()*base.length);color=base[selectedColorIndex]}while(existing.includes(color));return color}var selectedColors=[];for(var i=0;i<n;i++){selectedColors.push(getOneColor(selectedColors))}return selectedColors}/* TODO: Loader remains */export function renderActionCard(props){var gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded);// Memoize filtered props to avoid re-filtering on every render
|
|
7
7
|
var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState=useState(initialData),allData=_useState[0],setAllData=_useState[1];var _allData$headerConten=allData.headerContent,headerContent=_allData$headerConten===void 0?"Default action card title":_allData$headerConten,icon=allData.icon,_allData$bodyContent=allData.bodyContent,bodyContent=_allData$bodyContent===void 0?"Default body content. Click to edit.":_allData$bodyContent;var _useState2=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState2[0],setAttributes=_useState2[1];useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);var defaultClasses="text-black p-4 rounded-lg shadow border flex flex-col h-full";return/*#__PURE__*/_jsx(Card,_extends({className:defaultClasses+" relative",style:{backgroundColor:"#f9f9fe"},isEditable:false,contentEditable:false},rest,{children:/*#__PURE__*/_jsx(CardContent,{className:"p-0",isEditable:false,contentEditable:false,children:/*#__PURE__*/_jsx("div",{className:"px-4 py-3",children:/*#__PURE__*/_jsxs("div",{className:"flex items-start flex-col",children:[/*#__PURE__*/_jsxs("div",{className:"flex items-center justify-between w-full",children:[/*#__PURE__*/_jsx("div",{className:"text-xl font-semibold",children:headerContent}),/*#__PURE__*/_jsx("div",{className:"text-5xl ml-2 flex items-center","aria-hidden":"true",children:getIconFromString(icon)})]}),/*#__PURE__*/_jsx("div",{className:"w-full mt-1",children:attributes.error||allData.error||attributes.isMissing||allData.isMissing||!bodyContent?/*#__PURE__*/_jsxs("span",{className:"flex flex-row items-center px-3 py-2",children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-3 h-3 text-gray-400 mr-1"}),/*#__PURE__*/_jsx("p",{className:"text-sm text-gray-500 max-w-md text-center",children:"No data available for given filters"})]}):/*#__PURE__*/_jsx("div",{className:"text-base leading-relaxed",children:bodyContent})})]})})})}))}export function renderCard(props){var _attributes$error,_attributes$isMissing;var _props$isEditable=props.isEditable,isEditable=_props$isEditable===void 0?false:_props$isEditable,gjsModel=props.gjsModel,_props$performInterac=props.performInteraction,performInteraction=_props$performInterac===void 0?function(){return Promise.resolve({})}:_props$performInterac,rest=_objectWithoutPropertiesLoose(props,_excluded2);// Memoize filtered props to avoid re-filtering on every render
|
|
8
|
-
var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState3=useState(initialData),allData=_useState3[0],setAllData=_useState3[1];var headerContent=allData.headerContent,headerDescription=allData.headerDescription,bodyContent=allData.bodyContent,footerContent=allData.footerContent,footerClass=allData.footerClass,footerIcon=allData.footerIcon,contentMetadata=allData.contentMetadata,contentMetadataClass=allData.contentMetadataClass,dataClassName=allData.className,dataError=allData.error,dataIsMissing=allData.isMissing;function toSafeText(value){if(value===null){return""}return typeof value==="string"?value:JSON.stringify(value)}var safeHeaderContent=toSafeText(headerContent);var safeHeaderDescription=toSafeText(headerDescription);var safeBodyContent=toSafeText(bodyContent);var safeFooterContent=toSafeText(footerContent);var safeContentMetadata=toSafeText(contentMetadata);var _useState4=useState(safeFooterContent.length>0),footerHasContent=_useState4[0],setFooterHasContent=_useState4[1];var _useState5=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState5[0],setAttributes=_useState5[1];useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);useEffect(function(){setFooterHasContent(safeFooterContent.length>0)},[safeFooterContent]);var defaultClasses="bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none";var defaultFooterClasses=footerHasContent?"text-sm bg-pink-50 text-pink-900 shadow-sm":"text-sm";var defaultContentMetadataClasses="text-xs";var mergedCardClassName=dataClassName?cn(defaultClasses,dataClassName):defaultClasses;var mergedFooterClassName=footerClass?cn(defaultFooterClasses,footerClass):defaultFooterClasses;var mergedContentMetadataClassName=contentMetadataClass?cn(defaultContentMetadataClasses,contentMetadataClass):defaultContentMetadataClasses;var hasError=Boolean((_attributes$error=attributes==null?void 0:attributes.error)!=null?_attributes$error:dataError);var hasMissing=Boolean((_attributes$isMissing=attributes==null?void 0:attributes.isMissing)!=null?_attributes$isMissing:dataIsMissing);var isLoading=Boolean(((attributes==null?void 0:attributes.interactionApiInProgress)||(attributes==null?void 0:attributes.loading))&&!hasError&&!hasMissing);var footerIconText=typeof footerIcon==="string"?footerIcon:footerIcon&&typeof footerIcon==="object"&&"icon"in footerIcon?String(footerIcon.icon):"";function getCardContent(){if(isLoading){return/*#__PURE__*/_jsx(CardContent,{children:/*#__PURE__*/_jsx(CardLoader,{})})}var showEmpty=hasError||hasMissing||!safeBodyContent;function handleFooterInput(event){var target=event.target;var content=target.textContent||"";var hasContent=content.trim().length>0;setFooterHasContent(hasContent);if(!hasContent){var currentProps=gjsModel.get("componentProps");gjsModel.set("componentProps",_extends({},currentProps,{footerContent:null,footerIcon:null,footerClass:null,isEmptied:true}))}}return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsx("div",{className:"flex items-start justify-between",children:/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"headerContent",contentEditable:isEditable,className:"text-lg",children:safeHeaderContent}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"headerDescription",contentEditable:isEditable,className:"text-sm",children:safeHeaderDescription})]})})}),showEmpty?/*#__PURE__*/_jsxs("span",{className:"flex flex-row items-center px-3 py-2",children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-3 h-3 text-gray-400 mr-1"}),/*#__PURE__*/_jsx("p",{className:"text-sm text-gray-500 max-w-md text-center",children:"No data available for given filters"})]}):/*#__PURE__*/_jsxs(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"flex-grow",children:[/*#__PURE__*/_jsx("div",{className:"text-3xl font-semibold truncate",children:safeBodyContent}),safeContentMetadata&&/*#__PURE__*/_jsx("div",{className:mergedContentMetadataClassName,style:{color:"#2A44D4"},children:safeContentMetadata})]}),/*#__PURE__*/_jsxs(CardFooter,{"data-slot":"footerContent",contentEditable:isEditable,className:mergedFooterClassName,onInput:handleFooterInput,children:[(footerIconText||"").trim()?/*#__PURE__*/_jsx("span",{className:"mr-2","aria-hidden":"true",children:footerIconText}):null,safeFooterContent||""]})]})}return/*#__PURE__*/_jsxs(Card,_extends({},rest,{className:mergedCardClassName+" relative",children:[getCardContent(),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]}))}function transformDataForScatter(data,xAxis,yAxis,dataKeys){if(!data||data.length===0){return[]}var scatterData=data.filter(function(item){return item[xAxis]!==null&&item[xAxis]!==undefined&&item[yAxis]!==null&&item[yAxis]!==undefined}).map(function(item){var _result;var result=(_result={},_result[xAxis]=Number(item[xAxis]),_result[yAxis]=Number(item[yAxis]),_result);if(dataKeys&&dataKeys.length>0){dataKeys.forEach(function(_ref){var key=_ref.key;if(item[key]!==null&&item[key]!==undefined){result[key]=Number(item[key])}})}return result});return scatterData}function binDataForHistogram(data,valueKey,bins){if(bins===void 0){bins=10}if(!data||data.length===0){return[]}var values=data.map(function(item){return Number(item[valueKey])}).filter(function(val){return!isNaN(val)});if(values.length===0){return[]}var min=Math.min.apply(Math,values);var max=Math.max.apply(Math,values);var binWidth=(max-min)/bins;var binsArray=new Array(bins).fill(0);var binLabels=[];for(var i=0;i<bins;i++){var binStart=min+i*binWidth;var binEnd=binStart+binWidth;binLabels.push(binStart.toFixed(1)+"-"+binEnd.toFixed(1))}values.forEach(function(value){var binIndex=Math.floor((value-min)/binWidth);if(binIndex>=bins){binIndex=bins-1}if(binIndex<0){binIndex=0}binsArray[binIndex]+=1});return binLabels.map(function(label,index){return{bin:label,frequency:binsArray[index]}})}function transformDataForBeeswarm(data,groupBy,valueKey){if(!data||data.length===0){return{nodes:[],groups:[]}}var grouped={};data.forEach(function(item){if(item[groupBy]!==null&&item[groupBy]!==undefined&&item[valueKey]!==null&&item[valueKey]!==undefined){var group=String(item[groupBy]);var value=Number(item[valueKey]);if(!isNaN(value)){if(!grouped[group]){grouped[group]=[]}grouped[group].push(value)}}});var groups=Object.keys(grouped).sort();var nodes=[];groups.forEach(function(group,groupIndex){var values=grouped[group];values.forEach(function(value){nodes.push({group:group,groupIndex:groupIndex,value:value,x:groupIndex,y:value,radius:4})})});return{nodes:nodes,groups:groups}}function BeeswarmChart(_ref2){var data=_ref2.data,groups=_ref2.groups,color=_ref2.color,groupBy=_ref2.groupBy,valueKey=_ref2.valueKey;var containerRef=useRef(null);var svgRef=useRef(null);var _useState6=useState({width:800,height:250}),dimensions=_useState6[0],setDimensions=_useState6[1];var _useState7=useState([]),simulatedNodes=_useState7[0],setSimulatedNodes=_useState7[1];var _useTooltip=useTooltip(),tooltipData=_useTooltip.tooltipData,tooltipLeft=_useTooltip.tooltipLeft,tooltipTop=_useTooltip.tooltipTop,tooltipOpen=_useTooltip.tooltipOpen,showTooltip=_useTooltip.showTooltip,hideTooltip=_useTooltip.hideTooltip;useEffect(function(){var updateDimensions=function updateDimensions(){if(containerRef.current){setDimensions({width:containerRef.current.offsetWidth||800,height:250})}};updateDimensions();var resizeObserver=new ResizeObserver(function(entries){for(var _iterator2=_createForOfIteratorHelperLoose(entries),_step2;!(_step2=_iterator2()).done;){var entry=_step2.value;setDimensions({width:entry.contentRect.width||800,height:250})}});if(containerRef.current){resizeObserver.observe(containerRef.current)}window.addEventListener("resize",updateDimensions);return function(){resizeObserver.disconnect();window.removeEventListener("resize",updateDimensions)}},[]);useEffect(function(){if(data.length===0||dimensions.width===0){return}var margin={top:20,right:20,bottom:60,left:60};var innerWidth=dimensions.width-margin.left-margin.right;var innerHeight=dimensions.height-margin.top-margin.bottom;var values=data.map(function(d){return d.value});var minValue=Math.min.apply(Math,values);var maxValue=Math.max.apply(Math,values);var valueRange=maxValue-minValue;var padding=valueRange*0.1;var xScale=scaleBand({domain:groups,range:[0,innerWidth],padding:0.3});var yScale=scaleLinear({domain:[minValue-padding,maxValue+padding],range:[innerHeight,0]});var RADIUS=4;var SPREAD_FACTOR=0.35;var RANDOM_FACTOR=1.5;var SIMULATION_ITERATIONS=300;var COLLISION_PADDING=3;var bounds={minY:RADIUS,maxY:innerHeight-RADIUS,minX:0,maxX:innerWidth};var nodes=data.map(function(d){var initialY=yScale(d.value);var clampedY=Math.max(bounds.minY,Math.min(bounds.maxY,initialY));var groupCenterX=(xScale(d.group)||0)+(xScale.bandwidth()||0)/2;var bandwidth=xScale.bandwidth()||0;var maxSpread=bandwidth*SPREAD_FACTOR;var randomOffset=(Math.random()-0.5)*maxSpread*RANDOM_FACTOR;return _extends({},d,{groupCenterX:groupCenterX,x:groupCenterX+randomOffset,y:clampedY,radius:RADIUS,maxSpread:maxSpread})});var simulation=forceSimulation(nodes).force("x",forceX(function(d){return d.groupCenterX}).strength(0.25)).force("y",forceY(function(d){var targetY=yScale(d.value);return Math.max(bounds.minY,Math.min(bounds.maxY,targetY))}).strength(1)).force("collide",forceCollide().radius(function(d){return d.radius+COLLISION_PADDING}).strength(0.9).iterations(3)).stop();var constrainNode=function constrainNode(node){var correctY=yScale(node.value);node.y=Math.max(bounds.minY,Math.min(bounds.maxY,correctY));node.vy=0;var nodeMinX=node.groupCenterX-node.maxSpread;var nodeMaxX=node.groupCenterX+node.maxSpread;var constrainedMinX=Math.max(bounds.minX,nodeMinX);var constrainedMaxX=Math.min(bounds.maxX,nodeMaxX);if(node.x<constrainedMinX){node.x=constrainedMinX;node.vx*=0.5}else if(node.x>constrainedMaxX){node.x=constrainedMaxX;node.vx*=0.5}};for(var i=0;i<SIMULATION_ITERATIONS;i++){simulation.tick();nodes.forEach(constrainNode)}nodes.forEach(function(node){constrainNode(node);node.vx=0});setSimulatedNodes([].concat(nodes))},[data,groups,dimensions]);if(simulatedNodes.length===0||dimensions.width===0){return/*#__PURE__*/_jsx("div",{ref:containerRef,style:{width:"100%",height:"250px"}})}var margin={top:20,right:20,bottom:60,left:60};var innerWidth=dimensions.width-margin.left-margin.right;var innerHeight=dimensions.height-margin.top-margin.bottom;var values=data.map(function(d){return d.value});var minValue=Math.min.apply(Math,values);var maxValue=Math.max.apply(Math,values);var xScale=scaleBand({domain:groups,range:[0,innerWidth],padding:0.3});var yScale=scaleLinear({domain:[minValue,maxValue],range:[innerHeight,0]});var handleMouseOver=function handleMouseOver(event,node){if(containerRef.current){var containerRect=containerRef.current.getBoundingClientRect();var x=event.clientX-containerRect.left+10;var y=event.clientY-containerRect.top-10;showTooltip({tooltipLeft:x,tooltipTop:y,tooltipData:node})}};return/*#__PURE__*/_jsxs("div",{ref:containerRef,style:{width:"100%",height:"250px",position:"relative"},children:[/*#__PURE__*/_jsx("svg",{ref:svgRef,width:dimensions.width,height:dimensions.height,onMouseLeave:hideTooltip,children:/*#__PURE__*/_jsxs(Group,{left:margin.left,top:margin.top,children:[/*#__PURE__*/_jsx(GridRows,{scale:yScale,width:innerWidth,strokeDasharray:"3,3",stroke:"#e0e0e0",strokeOpacity:0.5}),/*#__PURE__*/_jsx(AxisLeft,{scale:yScale,tickStroke:"#666",stroke:"#666",tickLabelProps:function tickLabelProps(){return{fill:"#666",fontSize:12,textAnchor:"end",dy:"0.33em"}}}),/*#__PURE__*/_jsx(AxisBottom,{top:innerHeight,scale:xScale,tickStroke:"#666",stroke:"#666",tickLabelProps:function tickLabelProps(){return{fill:"#666",fontSize:12,textAnchor:"middle"}}}),simulatedNodes.map(function(node,i){return/*#__PURE__*/_jsx(Circle,{cx:node.x||0,cy:node.y||0,r:node.radius,fill:color,opacity:0.8,stroke:color,strokeWidth:1,onMouseOver:function onMouseOver(e){return handleMouseOver(e,node)},style:{cursor:"pointer"}},i)})]})}),tooltipOpen&&tooltipData&&tooltipLeft!==null&&tooltipLeft!==undefined&&tooltipTop!==null&&tooltipTop!==undefined&&/*#__PURE__*/_jsx(TooltipWithBounds,{left:tooltipLeft,top:tooltipTop,style:_extends({},defaultStyles,{backgroundColor:"white",border:"1px solid #e0e0e0",borderRadius:"4px",padding:"8px 12px",boxShadow:"0 2px 8px rgba(0,0,0,0.15)",fontSize:"12px",position:"absolute",zIndex:1000,pointerEvents:"none"}),children:/*#__PURE__*/_jsxs("div",{children:[/*#__PURE__*/_jsxs("div",{style:{marginBottom:"4px",fontWeight:600},children:[groupBy,": ",tooltipData.group]}),/*#__PURE__*/_jsxs("div",{children:[valueKey,": ",tooltipData.value.toLocaleString()]})]})})]})}function renderChartComponent(chartType,data,config){var safeData=Array.isArray(data)?data:[];if(safeData.length===0){return renderNoDataFallback()}switch(chartType){case"pie":return/*#__PURE__*/_jsxs(PieChart,{children:[safeData.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:safeData,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:safeData.length<20?function(_ref3){var name=_ref3.name,percent=_ref3.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]});case"bar":{config.dataKeys=config.dataKeys||[];var barDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];return/*#__PURE__*/_jsxs(BarChart,_extends({data:safeData},config.chartUi,barDataKeys.length>1&&{barGap:0},{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(Legend,{align:"left",wrapperStyle:{marginLeft:20}}),barDataKeys.map(function(_ref4){var key=_ref4.key,name=_ref4.name,color=_ref4.color;return/*#__PURE__*/_jsx(Bar,{dataKey:key,fill:color!=null?color:"#4caf50",name:name,radius:2},key)}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})})]}))}case"line":{config.dataKeys=config.dataKeys||[];var safeDataKeysLine=Array.isArray(config.dataKeys)?config.dataKeys:[];return/*#__PURE__*/_jsxs(LineChart,_extends({data:safeData},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})}),safeDataKeysLine.map(function(_ref5){var key=_ref5.key,name=_ref5.name,color=_ref5.color;return/*#__PURE__*/_jsx(Line,{type:"monotone",dataKey:key,stroke:color!=null?color:"#4caf50",name:name},key)}),/*#__PURE__*/_jsx(Legend,{align:"left"})]}))}case"scatter":{config.dataKeys=config.dataKeys||[];var safeDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];var scatterData=transformDataForScatter(safeData,config.xAxis,config.yAxis,safeDataKeys);if(scatterData.length===0){return renderNoDataFallback()}var colors=safeDataKeys.length>0?safeDataKeys.map(function(_ref6){var color=_ref6.color;return color!=null?color:"#2A44D4"}):["#2A44D4"];return/*#__PURE__*/_jsxs(ScatterChart,_extends({data:scatterData},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{type:"number",dataKey:config.xAxis,name:config.xAxis||"X Axis",domain:["auto","auto"]}),/*#__PURE__*/_jsx(YAxis,{type:"number",dataKey:config.yAxis,name:config.yAxis||"Y Axis",domain:["auto","auto"]}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:{strokeDasharray:"3 3"},content:/*#__PURE__*/_jsx(ChartTooltipContent,{})}),safeDataKeys.length>0?safeDataKeys.map(function(_ref7,index){var key=_ref7.key,name=_ref7.name,color=_ref7.color;return/*#__PURE__*/_jsx(Scatter,{name:name||key,dataKey:key||config.yAxis,fill:color!=null?color:colors[index%colors.length]},key)}):/*#__PURE__*/_jsx(Scatter,{name:"Data",dataKey:config.yAxis,fill:colors[0]}),/*#__PURE__*/_jsx(Legend,{align:"left"})]}))}case"histogram":{config.dataKeys=config.dataKeys||[];var _safeDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];var valueKey=_safeDataKeys.length>0?_safeDataKeys[0].key:config.xAxis;var bins=config.bins||10;var binnedData=binDataForHistogram(safeData,valueKey,bins);if(binnedData.length===0){return renderNoDataFallback()}var color=_safeDataKeys.length>0?_safeDataKeys[0].color:"#2A44D4";return/*#__PURE__*/_jsxs(BarChart,_extends({data:binnedData},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:"bin",angle:-45,textAnchor:"end",height:80}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})}),/*#__PURE__*/_jsx(Bar,{dataKey:"frequency",fill:color,radius:2,children:binnedData.map(function(entry,index){return/*#__PURE__*/_jsx(Cell,{fill:color},"cell-"+index)})}),/*#__PURE__*/_jsx(Legend,{align:"left"})]}))}case"beeswarm":{var _config$dataKeys$,_config$dataKeys$2;var groupBy=config.groupBy||config.xAxis;var _valueKey=config.valueKey||config.dataKeys&&((_config$dataKeys$=config.dataKeys[0])==null?void 0:_config$dataKeys$.key)||"value";var _transformDataForBees=transformDataForBeeswarm(safeData,groupBy,_valueKey),nodes=_transformDataForBees.nodes,groups=_transformDataForBees.groups;if(nodes.length===0||groups.length===0){return renderNoDataFallback()}var _color=config.dataKeys&&(_config$dataKeys$2=config.dataKeys[0])!=null&&_config$dataKeys$2.color?config.dataKeys[0].color:"#2A44D4";return/*#__PURE__*/_jsx(BeeswarmChart,{data:nodes,groups:groups,color:_color,groupBy:groupBy,valueKey:_valueKey})}default:return/*#__PURE__*/_jsxs(PieChart,{children:[safeData.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:safeData,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:safeData.length<20?function(_ref8){var name=_ref8.name,percent=_ref8.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]})}}export function renderChart(props){var _props$isEditable2=props.isEditable,isEditable=_props$isEditable2===void 0?false:_props$isEditable2,gjsModel=props.gjsModel,_props$performInterac2=props.performInteraction,performInteraction=_props$performInterac2===void 0?function(){return Promise.resolve({})}:_props$performInterac2,rest=_objectWithoutPropertiesLoose(props,_excluded3);// Memoize filtered props to avoid re-filtering on every render
|
|
8
|
+
var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState3=useState(initialData),allData=_useState3[0],setAllData=_useState3[1];var headerContent=allData.headerContent,headerDescription=allData.headerDescription,bodyContent=allData.bodyContent,footerContent=allData.footerContent,footerClass=allData.footerClass,footerIcon=allData.footerIcon,contentMetadata=allData.contentMetadata,contentMetadataClass=allData.contentMetadataClass,dataClassName=allData.className,dataError=allData.error,dataIsMissing=allData.isMissing;function toSafeText(value){if(value===null){return""}return typeof value==="string"?value:JSON.stringify(value)}var safeHeaderContent=toSafeText(headerContent);var safeHeaderDescription=toSafeText(headerDescription);var safeBodyContent=toSafeText(bodyContent);var safeFooterContent=toSafeText(footerContent);var safeContentMetadata=toSafeText(contentMetadata);var _useState4=useState(safeFooterContent.length>0),footerHasContent=_useState4[0],setFooterHasContent=_useState4[1];var _useState5=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState5[0],setAttributes=_useState5[1];useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);useEffect(function(){setFooterHasContent(safeFooterContent.length>0)},[safeFooterContent]);var defaultClasses="bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none";var defaultFooterClasses=footerHasContent?"text-sm bg-pink-50 text-pink-900 shadow-sm":"text-sm";var defaultContentMetadataClasses="text-xs";var mergedCardClassName=dataClassName?cn(defaultClasses,dataClassName):defaultClasses;var mergedFooterClassName=footerClass?cn(defaultFooterClasses,footerClass):defaultFooterClasses;var mergedContentMetadataClassName=contentMetadataClass?cn(defaultContentMetadataClasses,contentMetadataClass):defaultContentMetadataClasses;var hasError=Boolean((_attributes$error=attributes==null?void 0:attributes.error)!=null?_attributes$error:dataError);var hasMissing=Boolean((_attributes$isMissing=attributes==null?void 0:attributes.isMissing)!=null?_attributes$isMissing:dataIsMissing);var isLoading=Boolean(((attributes==null?void 0:attributes.interactionApiInProgress)||(attributes==null?void 0:attributes.loading))&&!hasError&&!hasMissing);var footerIconText=typeof footerIcon==="string"?footerIcon:footerIcon&&typeof footerIcon==="object"&&"icon"in footerIcon?String(footerIcon.icon):"";function getCardContent(){if(isLoading){return/*#__PURE__*/_jsx(CardContent,{children:/*#__PURE__*/_jsx(CardLoader,{})})}var showEmpty=hasError||hasMissing||!safeBodyContent;function handleFooterInput(event){var target=event.target;var content=target.textContent||"";var hasContent=content.trim().length>0;setFooterHasContent(hasContent);if(!hasContent){var currentProps=gjsModel.get("componentProps");gjsModel.set("componentProps",_extends({},currentProps,{footerContent:null,footerIcon:null,footerClass:null,isEmptied:true}))}}return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsx("div",{className:"flex items-start justify-between",children:/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"headerContent",contentEditable:isEditable,className:"text-lg",children:safeHeaderContent}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"headerDescription",contentEditable:isEditable,className:"text-sm",children:safeHeaderDescription})]})})}),showEmpty?/*#__PURE__*/_jsxs("span",{className:"flex flex-row items-center px-3 py-2",children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-3 h-3 text-gray-400 mr-1"}),/*#__PURE__*/_jsx("p",{className:"text-sm text-gray-500 max-w-md text-center",children:"No data available for given filters"})]}):/*#__PURE__*/_jsxs(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"flex-grow",children:[/*#__PURE__*/_jsx("div",{className:"text-3xl font-semibold truncate",children:safeBodyContent}),safeContentMetadata&&/*#__PURE__*/_jsx("div",{className:mergedContentMetadataClassName,style:{color:"#2A44D4"},children:safeContentMetadata})]}),/*#__PURE__*/_jsxs(CardFooter,{"data-slot":"footerContent",contentEditable:isEditable,className:mergedFooterClassName,onInput:handleFooterInput,children:[(footerIconText||"").trim()?/*#__PURE__*/_jsx("span",{className:"mr-2","aria-hidden":"true",children:footerIconText}):null,safeFooterContent||""]})]})}return/*#__PURE__*/_jsxs(Card,_extends({},rest,{className:mergedCardClassName+" relative",children:[getCardContent(),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]}))}function transformDataForScatter(data,xAxis,yAxis,dataKeys){if(!data||data.length===0){return[]}var scatterData=data.filter(function(item){return item[xAxis]!==null&&item[xAxis]!==undefined&&item[yAxis]!==null&&item[yAxis]!==undefined}).map(function(item){var _result;var result=(_result={},_result[xAxis]=Number(item[xAxis]),_result[yAxis]=Number(item[yAxis]),_result);if(dataKeys&&dataKeys.length>0){dataKeys.forEach(function(_ref){var key=_ref.key;if(item[key]!==null&&item[key]!==undefined){result[key]=Number(item[key])}})}return result});return scatterData}function binDataForHistogram(data,valueKey,bins){if(bins===void 0){bins=10}if(!data||data.length===0){return[]}var values=data.map(function(item){return Number(item[valueKey])}).filter(function(val){return!isNaN(val)});if(values.length===0){return[]}var min=Math.min.apply(Math,values);var max=Math.max.apply(Math,values);var binWidth=(max-min)/bins;var binsArray=new Array(bins).fill(0);var binLabels=[];for(var i=0;i<bins;i++){var binStart=min+i*binWidth;var binEnd=binStart+binWidth;binLabels.push(binStart.toFixed(1)+"-"+binEnd.toFixed(1))}values.forEach(function(value){var binIndex=Math.floor((value-min)/binWidth);if(binIndex>=bins){binIndex=bins-1}if(binIndex<0){binIndex=0}binsArray[binIndex]+=1});return binLabels.map(function(label,index){return{bin:label,frequency:binsArray[index]}})}function transformDataForBeeswarm(data,groupBy,valueKey){if(!data||data.length===0){return{nodes:[],groups:[]}}var grouped={};data.forEach(function(item){if(item[groupBy]!==null&&item[groupBy]!==undefined&&item[valueKey]!==null&&item[valueKey]!==undefined){var group=String(item[groupBy]);var value=Number(item[valueKey]);if(!isNaN(value)){if(!grouped[group]){grouped[group]=[]}grouped[group].push(value)}}});var groups=Object.keys(grouped).sort();var nodes=[];groups.forEach(function(group,groupIndex){var values=grouped[group];values.forEach(function(value){nodes.push({group:group,groupIndex:groupIndex,value:value,x:groupIndex,y:value,radius:4})})});return{nodes:nodes,groups:groups}}function BeeswarmChart(_ref2){var data=_ref2.data,groups=_ref2.groups,color=_ref2.color,groupBy=_ref2.groupBy,valueKey=_ref2.valueKey;var containerRef=useRef(null);var svgRef=useRef(null);var _useState6=useState({width:800,height:250}),dimensions=_useState6[0],setDimensions=_useState6[1];var _useState7=useState([]),simulatedNodes=_useState7[0],setSimulatedNodes=_useState7[1];var _useTooltip=useTooltip(),tooltipData=_useTooltip.tooltipData,tooltipLeft=_useTooltip.tooltipLeft,tooltipTop=_useTooltip.tooltipTop,tooltipOpen=_useTooltip.tooltipOpen,showTooltip=_useTooltip.showTooltip,hideTooltip=_useTooltip.hideTooltip;useEffect(function(){var updateDimensions=function updateDimensions(){if(containerRef.current){setDimensions({width:containerRef.current.offsetWidth||800,height:250})}};updateDimensions();var resizeObserver=new ResizeObserver(function(entries){for(var _iterator2=_createForOfIteratorHelperLoose(entries),_step2;!(_step2=_iterator2()).done;){var entry=_step2.value;setDimensions({width:entry.contentRect.width||800,height:250})}});if(containerRef.current){resizeObserver.observe(containerRef.current)}window.addEventListener("resize",updateDimensions);return function(){resizeObserver.disconnect();window.removeEventListener("resize",updateDimensions)}},[]);useEffect(function(){if(data.length===0||dimensions.width===0){return}var margin={top:20,right:20,bottom:60,left:60};var innerWidth=dimensions.width-margin.left-margin.right;var innerHeight=dimensions.height-margin.top-margin.bottom;var values=data.map(function(d){return d.value});var minValue=Math.min.apply(Math,values);var maxValue=Math.max.apply(Math,values);var valueRange=maxValue-minValue;var padding=valueRange*0.1;var xScale=scaleBand({domain:groups,range:[0,innerWidth],padding:0.3});var yScale=scaleLinear({domain:[minValue-padding,maxValue+padding],range:[innerHeight,0]});var RADIUS=4;var SPREAD_FACTOR=0.45;var RANDOM_FACTOR=2;var SIMULATION_ITERATIONS=300;var COLLISION_PADDING=3;var bounds={minY:RADIUS,maxY:innerHeight-RADIUS,minX:0,maxX:innerWidth};var nodes=data.map(function(d){var initialY=yScale(d.value);var clampedY=Math.max(bounds.minY,Math.min(bounds.maxY,initialY));var groupCenterX=(xScale(d.group)||0)+(xScale.bandwidth()||0)/2;var bandwidth=xScale.bandwidth()||0;var maxSpread=bandwidth*SPREAD_FACTOR;var randomOffset=(Math.random()-0.5)*maxSpread*RANDOM_FACTOR;return _extends({},d,{groupCenterX:groupCenterX,x:groupCenterX+randomOffset,y:clampedY,radius:RADIUS,maxSpread:maxSpread})});var simulation=forceSimulation(nodes).force("x",forceX(function(d){return d.groupCenterX}).strength(0.15)).force("y",forceY(function(d){var targetY=yScale(d.value);return Math.max(bounds.minY,Math.min(bounds.maxY,targetY))}).strength(1)).force("collide",forceCollide().radius(function(d){return d.radius+COLLISION_PADDING}).strength(0.9).iterations(3)).stop();var constrainNode=function constrainNode(node,isFinal){if(isFinal===void 0){isFinal=false}var correctY=yScale(node.value);node.y=Math.max(bounds.minY,Math.min(bounds.maxY,correctY));node.vy=0;var nodeMinX=node.groupCenterX-node.maxSpread;var nodeMaxX=node.groupCenterX+node.maxSpread;var constrainedMinX=Math.max(bounds.minX,nodeMinX);var constrainedMaxX=Math.min(bounds.maxX,nodeMaxX);if(isFinal){if(node.x<constrainedMinX){node.x=constrainedMinX}else if(node.x>constrainedMaxX){node.x=constrainedMaxX}}else{var overflowMargin=node.maxSpread*0.1;if(node.x<constrainedMinX-overflowMargin){node.x=constrainedMinX-overflowMargin;node.vx*=0.7}else if(node.x>constrainedMaxX+overflowMargin){node.x=constrainedMaxX+overflowMargin;node.vx*=0.7}}};for(var i=0;i<SIMULATION_ITERATIONS;i++){simulation.tick();nodes.forEach(function(node){return constrainNode(node,false)})}// Final constraint pass
|
|
9
|
+
nodes.forEach(function(node){constrainNode(node,true);node.vx=0});setSimulatedNodes([].concat(nodes))},[data,groups,dimensions]);if(simulatedNodes.length===0||dimensions.width===0){return/*#__PURE__*/_jsx("div",{ref:containerRef,style:{width:"100%",height:"250px"}})}var margin={top:20,right:20,bottom:60,left:60};var innerWidth=dimensions.width-margin.left-margin.right;var innerHeight=dimensions.height-margin.top-margin.bottom;var values=data.map(function(d){return d.value});var minValue=Math.min.apply(Math,values);var maxValue=Math.max.apply(Math,values);var xScale=scaleBand({domain:groups,range:[0,innerWidth],padding:0.3});var yScale=scaleLinear({domain:[minValue,maxValue],range:[innerHeight,0]});var handleMouseOver=function handleMouseOver(event,node){if(containerRef.current){var containerRect=containerRef.current.getBoundingClientRect();var x=event.clientX-containerRect.left+10;var y=event.clientY-containerRect.top-10;showTooltip({tooltipLeft:x,tooltipTop:y,tooltipData:node})}};return/*#__PURE__*/_jsxs("div",{ref:containerRef,style:{width:"100%",height:"250px",position:"relative"},children:[/*#__PURE__*/_jsx("svg",{ref:svgRef,width:dimensions.width,height:dimensions.height,onMouseLeave:hideTooltip,children:/*#__PURE__*/_jsxs(Group,{left:margin.left,top:margin.top,children:[/*#__PURE__*/_jsx(GridRows,{scale:yScale,width:innerWidth,strokeDasharray:"3,3",stroke:"#e0e0e0",strokeOpacity:0.5}),/*#__PURE__*/_jsx(AxisLeft,{scale:yScale,tickStroke:"#666",stroke:"#666",tickLabelProps:function tickLabelProps(){return{fill:"#666",fontSize:12,textAnchor:"end",dy:"0.33em"}}}),/*#__PURE__*/_jsx(AxisBottom,{top:innerHeight,scale:xScale,tickStroke:"#666",stroke:"#666",tickLabelProps:function tickLabelProps(){return{fill:"#666",fontSize:12,textAnchor:"middle"}}}),simulatedNodes.map(function(node,i){return/*#__PURE__*/_jsx(Circle,{cx:node.x||0,cy:node.y||0,r:node.radius,fill:color,opacity:0.8,stroke:color,strokeWidth:1,onMouseOver:function onMouseOver(e){return handleMouseOver(e,node)},style:{cursor:"pointer"}},i)})]})}),tooltipOpen&&tooltipData&&tooltipLeft!==null&&tooltipLeft!==undefined&&tooltipTop!==null&&tooltipTop!==undefined&&/*#__PURE__*/_jsx(TooltipWithBounds,{left:tooltipLeft,top:tooltipTop,style:_extends({},defaultStyles,{backgroundColor:"white",border:"1px solid #e0e0e0",borderRadius:"4px",padding:"8px 12px",boxShadow:"0 2px 8px rgba(0,0,0,0.15)",fontSize:"12px",position:"absolute",zIndex:1000,pointerEvents:"none"}),children:/*#__PURE__*/_jsxs("div",{children:[/*#__PURE__*/_jsxs("div",{style:{marginBottom:"4px",fontWeight:600},children:[groupBy,": ",tooltipData.group]}),/*#__PURE__*/_jsxs("div",{children:[valueKey,": ",tooltipData.value.toLocaleString()]})]})})]})}function renderChartComponent(chartType,data,config){var safeData=Array.isArray(data)?data:[];if(safeData.length===0){return renderNoDataFallback()}switch(chartType){case"pie":return/*#__PURE__*/_jsxs(PieChart,{children:[safeData.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:safeData,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:safeData.length<20?function(_ref3){var name=_ref3.name,percent=_ref3.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]});case"bar":{config.dataKeys=config.dataKeys||[];var barDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];return/*#__PURE__*/_jsxs(BarChart,_extends({data:safeData},config.chartUi,barDataKeys.length>1&&{barGap:0},{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(Legend,{align:"left",wrapperStyle:{marginLeft:20}}),barDataKeys.map(function(_ref4){var key=_ref4.key,name=_ref4.name,color=_ref4.color;return/*#__PURE__*/_jsx(Bar,{dataKey:key,fill:color!=null?color:"#4caf50",name:name,radius:2},key)}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})})]}))}case"line":{config.dataKeys=config.dataKeys||[];var safeDataKeysLine=Array.isArray(config.dataKeys)?config.dataKeys:[];return/*#__PURE__*/_jsxs(LineChart,_extends({data:safeData},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})}),safeDataKeysLine.map(function(_ref5){var key=_ref5.key,name=_ref5.name,color=_ref5.color;return/*#__PURE__*/_jsx(Line,{type:"monotone",dataKey:key,stroke:color!=null?color:"#4caf50",name:name},key)}),/*#__PURE__*/_jsx(Legend,{align:"left"})]}))}case"scatter":{config.dataKeys=config.dataKeys||[];var safeDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];var scatterData=transformDataForScatter(safeData,config.xAxis,config.yAxis,safeDataKeys);if(scatterData.length===0){return renderNoDataFallback()}var colors=safeDataKeys.length>0?safeDataKeys.map(function(_ref6){var color=_ref6.color;return color!=null?color:"#2A44D4"}):["#2A44D4"];return/*#__PURE__*/_jsxs(ScatterChart,_extends({data:scatterData},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{type:"number",dataKey:config.xAxis,name:config.xAxis||"X Axis",domain:["auto","auto"]}),/*#__PURE__*/_jsx(YAxis,{type:"number",dataKey:config.yAxis,name:config.yAxis||"Y Axis",domain:["auto","auto"]}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:{strokeDasharray:"3 3"},content:/*#__PURE__*/_jsx(ChartTooltipContent,{})}),safeDataKeys.length>0?safeDataKeys.map(function(_ref7,index){var key=_ref7.key,name=_ref7.name,color=_ref7.color;return/*#__PURE__*/_jsx(Scatter,{name:name||key,dataKey:key||config.yAxis,fill:color!=null?color:colors[index%colors.length]},key)}):/*#__PURE__*/_jsx(Scatter,{name:"Data",dataKey:config.yAxis,fill:colors[0]}),/*#__PURE__*/_jsx(Legend,{align:"left"})]}))}case"histogram":{config.dataKeys=config.dataKeys||[];var _safeDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];var valueKey=_safeDataKeys.length>0?_safeDataKeys[0].key:config.xAxis;var bins=config.bins||10;var binnedData=binDataForHistogram(safeData,valueKey,bins);if(binnedData.length===0){return renderNoDataFallback()}var color=_safeDataKeys.length>0?_safeDataKeys[0].color:"#2A44D4";return/*#__PURE__*/_jsxs(BarChart,_extends({data:binnedData},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:"bin",angle:-45,textAnchor:"end",height:80}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})}),/*#__PURE__*/_jsx(Bar,{dataKey:"frequency",fill:color,radius:2,children:binnedData.map(function(entry,index){return/*#__PURE__*/_jsx(Cell,{fill:color},"cell-"+index)})}),/*#__PURE__*/_jsx(Legend,{align:"left"})]}))}case"beeswarm":{var _config$dataKeys$,_config$dataKeys$2;var groupBy=config.groupBy||config.xAxis;var _valueKey=config.valueKey||config.dataKeys&&((_config$dataKeys$=config.dataKeys[0])==null?void 0:_config$dataKeys$.key)||"value";var _transformDataForBees=transformDataForBeeswarm(safeData,groupBy,_valueKey),nodes=_transformDataForBees.nodes,groups=_transformDataForBees.groups;if(nodes.length===0||groups.length===0){return renderNoDataFallback()}var _color=config.dataKeys&&(_config$dataKeys$2=config.dataKeys[0])!=null&&_config$dataKeys$2.color?config.dataKeys[0].color:"#2A44D4";return/*#__PURE__*/_jsx(BeeswarmChart,{data:nodes,groups:groups,color:_color,groupBy:groupBy,valueKey:_valueKey})}default:return/*#__PURE__*/_jsxs(PieChart,{children:[safeData.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:safeData,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:safeData.length<20?function(_ref8){var name=_ref8.name,percent=_ref8.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]})}}export function renderChart(props){var _props$isEditable2=props.isEditable,isEditable=_props$isEditable2===void 0?false:_props$isEditable2,gjsModel=props.gjsModel,_props$performInterac2=props.performInteraction,performInteraction=_props$performInterac2===void 0?function(){return Promise.resolve({})}:_props$performInterac2,rest=_objectWithoutPropertiesLoose(props,_excluded3);// Memoize filtered props to avoid re-filtering on every render
|
|
9
10
|
var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState8=useState(initialData),allData=_useState8[0],setAllData=_useState8[1];var _useState9=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState9[0],setAttributes=_useState9[1];var containerRef=useRef(null);var _useState10=useState(0),containerWidth=_useState10[0],setContainerWidth=_useState10[1];useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){var handleAttributesChange=function handleAttributesChange(){var newAttributes=gjsModel.get("attributes");setAttributes(_extends({},newAttributes))};gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:attributes",handleAttributesChange)}},[gjsModel]);useEffect(function(){var updateContainerWidth=function updateContainerWidth(){if(containerRef.current){setContainerWidth(containerRef.current.offsetWidth||0)}};var resizeObserver=new ResizeObserver(function(entries){for(var _iterator3=_createForOfIteratorHelperLoose(entries),_step3;!(_step3=_iterator3()).done;){var entry=_step3.value;setContainerWidth(entry.contentRect.width||0)}});updateContainerWidth();var timeoutId=setTimeout(updateContainerWidth,50);if(containerRef.current){resizeObserver.observe(containerRef.current)}window.addEventListener("resize",updateContainerWidth);return function(){clearTimeout(timeoutId);resizeObserver.disconnect();window.removeEventListener("resize",updateContainerWidth)}},[]);var _allData$config=allData.config,config=_allData$config===void 0?{}:_allData$config,_allData$chartType=allData.chartType,chartType=_allData$chartType===void 0?"pie":_allData$chartType,_allData$chartData=allData.chartData,chartData=_allData$chartData===void 0?[]:_allData$chartData,className=allData.className,_allData$title=allData.title,title=_allData$title===void 0?"Title":_allData$title,_allData$subTitle=allData.subTitle,subTitle=_allData$subTitle===void 0?"Subtitle":_allData$subTitle;var defaultClasses="aspect-auto h-[250px] w-full";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;if(chartType==="pie"){var safeChartData=Array.isArray(chartData)?chartData:[];var colors=getNColors(safeChartData.length);safeChartData.forEach(function(data,i){if(!data.fill){data.fill=colors[i]}})}else if(!config.color){var safeBaseColors=Array.isArray(baseColors)?baseColors:[];if(safeBaseColors.length>0){config.color=safeBaseColors[Math.floor(Math.random()*safeBaseColors.length)]}}var totalDataPoints=0;if(chartType==="bar"||chartType==="line"||chartType==="scatter"||chartType==="histogram"||chartType==="beeswarm"){var _safeChartData=Array.isArray(chartData)?chartData:[];var safeDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];if(chartType==="bar"){totalDataPoints=_safeChartData.length*Math.max(1,safeDataKeys.length)}else if(chartType==="line"){totalDataPoints=_safeChartData.length}else if(chartType==="scatter"||chartType==="histogram"||chartType==="beeswarm"){totalDataPoints=_safeChartData.length}}var getScrollableWidth=function getScrollableWidth(){if(chartType==="line"){return totalDataPoints*20}if(chartType==="bar"){return totalDataPoints*20+(Array.isArray(config.dataKeys)?config.dataKeys.length:0)*8*(Array.isArray(chartData)?chartData.length:0)+(Array.isArray(chartData)?chartData.length:0)*15}if(chartType==="scatter"||chartType==="histogram"||chartType==="beeswarm"){return 800}return 800};var scrollWidth=getScrollableWidth();var shouldScroll=(chartType==="bar"||chartType==="line")&&totalDataPoints>15&&scrollWidth>containerWidth;var hasError=attributes.error||allData.error;var hasMissing=attributes.isMissing||allData.isMissing;var isLoading=(attributes.interactionApiInProgress||attributes.loading)&&!hasError&&!hasMissing;var ChartWrapper=function ChartWrapper(_ref9){var children=_ref9.children;if(shouldScroll){return/*#__PURE__*/_jsx("div",{className:"w-full h-[250px] overflow-x-auto",children:/*#__PURE__*/_jsx("div",{style:{minWidth:scrollWidth+"px",height:"250px"},children:children})})}return/*#__PURE__*/_jsx("div",{className:"w-full h-[250px]",children:children})};var isBeeswarmChart=chartType==="beeswarm";var chartUi=isLoading?/*#__PURE__*/_jsx(ChartLoader,{}):hasError||hasMissing||!chartData?renderNoDataFallback():isBeeswarmChart?/*#__PURE__*/_jsx(ChartWrapper,{children:/*#__PURE__*/_jsx(ChartContainer,_extends({},rest,{config:config,className:mergedClasses,children:renderChartComponent(chartType,chartData,config)}))}):/*#__PURE__*/_jsx(ChartWrapper,{children:/*#__PURE__*/_jsx(ResponsiveContainer,{width:"100%",height:250,children:/*#__PURE__*/_jsx(ChartContainer,_extends({},rest,{config:config,className:mergedClasses,children:renderChartComponent(chartType,chartData,config)}))})});return/*#__PURE__*/_jsxs(Card,{className:"shadow border mt-2 mb-2 relative",children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsx("div",{className:"flex items-start justify-between",children:/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"title",contentEditable:isEditable,className:"text-2xl",children:title}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"subTitle",contentEditable:isEditable,className:"text-sm",children:subTitle})]})})}),/*#__PURE__*/_jsx(CardContent,{ref:containerRef,"data-slot":"bodyContent",className:"px-6",children:chartUi}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]})}export function renderTable(props){var _props$isEditable3=props.isEditable,isEditable=_props$isEditable3===void 0?false:_props$isEditable3,gjsModel=props.gjsModel,_props$performInterac3=props.performInteraction,performInteraction=_props$performInterac3===void 0?function(){}:_props$performInterac3,rest=_objectWithoutPropertiesLoose(props,_excluded4);// Memoize filtered props to avoid re-filtering on every render
|
|
10
11
|
var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState11=useState(initialData),allData=_useState11[0],setAllData=_useState11[1];var cardRef=useRef(null);var _useState12=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState12[0],setAttributes=_useState12[1];var rawData=allData.data,_allData$headerMapper=allData.headerMapper,rawHeaderMapper=_allData$headerMapper===void 0?{}:_allData$headerMapper,className=allData.className,_allData$title2=allData.title,title=_allData$title2===void 0?"Title":_allData$title2,_allData$subTitle2=allData.subTitle,subTitle=_allData$subTitle2===void 0?"Subtitle":_allData$subTitle2,_allData$actions=allData.actions,actions=_allData$actions===void 0?[]:_allData$actions,pagination=allData.pagination;var data=Array.isArray(rawData)?rawData:[];var headerMapper=function(){var cleaned=_extends({},rawHeaderMapper);if("id"in cleaned){delete cleaned.id}if(data.length>0){var dataKeys=Object.keys(data[0]||{});return Object.fromEntries(Object.entries(cleaned).filter(function(_ref10){var key=_ref10[0];return dataKeys.includes(key)}))}return cleaned}();var sortConfig=function(_gjsModel$get,_ref12){var _ref11=(_gjsModel$get=gjsModel.get("componentProps"))!=null?_gjsModel$get:{},sortColumn=_ref11.sortColumn,sortDirection=_ref11.sortDirection;return sortColumn&&sortDirection?(_ref12={},_ref12[sortColumn]=sortDirection,_ref12):{}}();var _useState13=useState(0),viewportWidth=_useState13[0],setViewportWidth=_useState13[1];var _useState14=useState(250),scrollAreaHeight=_useState14[0],setScrollAreaHeight=_useState14[1];var calculateTableHeight=function calculateTableHeight(tableWidth,rowCount){if(viewportWidth>0){var _gjsModel$collection;var widthRatio=tableWidth/viewportWidth;var baseTableHeight=250;var targetScrollAreaHeight=baseTableHeight;if(widthRatio>=0.8){var headerHeight=48;var rowHeight=40;var calculatedHeight=headerHeight+rowCount*rowHeight;targetScrollAreaHeight=Math.min(calculatedHeight,baseTableHeight)}var tableId=gjsModel.get("id");var editor=gjsModel.em||((_gjsModel$collection=gjsModel.collection)==null?void 0:_gjsModel$collection.em);var canvasDocument=editor.Canvas.getDocument()||document;var tableElement=canvasDocument.querySelector("[data-table-id=\""+tableId+"\"]");if(tableElement){var headerElement=tableElement.querySelector("[data-slot=\"card-header\"]");if(headerElement&&headerElement.offsetHeight>0){var actualHeaderHeight=headerElement.offsetHeight;var standardHeaderHeight=58;var heightDifference=actualHeaderHeight-standardHeaderHeight;if(heightDifference>0){targetScrollAreaHeight=targetScrollAreaHeight-heightDifference}}}setScrollAreaHeight(targetScrollAreaHeight)}};useEffect(function(){var updateViewportWidth=function updateViewportWidth(){var iframe=document.querySelector(".gjs-frame");var iframeWindow=iframe==null?void 0:iframe.contentWindow;var iframeDocument=iframeWindow==null?void 0:iframeWindow.document;if(iframeDocument){var dashboardRoot=iframeDocument.getElementById("dashboard-root");var effectiveViewportWidth=(dashboardRoot==null?void 0:dashboardRoot.clientWidth)||iframeDocument.documentElement.clientWidth;setViewportWidth(effectiveViewportWidth)}};updateViewportWidth();window.addEventListener("resize",updateViewportWidth);var iframe=document.querySelector(".gjs-frame");var iframeWindow=iframe==null?void 0:iframe.contentWindow;if(iframeWindow){iframeWindow.addEventListener("resize",updateViewportWidth)}return function(){window.removeEventListener("resize",updateViewportWidth);if(iframeWindow){iframeWindow.removeEventListener("resize",updateViewportWidth)}}},[]);useEffect(function(){var updateTableWidthAndApplyCSS=function updateTableWidthAndApplyCSS(){var _gjsModel$collection2;var tableId=gjsModel.get("id");var editor=gjsModel.em||((_gjsModel$collection2=gjsModel.collection)==null?void 0:_gjsModel$collection2.em);var canvasDocument=editor.Canvas.getDocument()||document;var tableElement=canvasDocument.querySelector("[data-table-id=\""+tableId+"\"]");if(!tableElement&&window.parent!==window){tableElement=window.parent.document.querySelector("[data-table-id=\""+tableId+"\"]")}if(!tableElement){return}var tableActualWidth=tableElement.getBoundingClientRect().width;if(tableActualWidth>0){calculateTableHeight(tableActualWidth,Array.isArray(data)?data.length:0)}};var timeoutId=setTimeout(updateTableWidthAndApplyCSS,150);window.addEventListener("resize",updateTableWidthAndApplyCSS);return function(){clearTimeout(timeoutId);window.removeEventListener("resize",updateTableWidthAndApplyCSS)}},[allData,gjsModel,viewportWidth,data,calculateTableHeight]);useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){var handleAttributesChange=function handleAttributesChange(){setAttributes(_extends({},gjsModel.get("attributes")))};gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:attributes",handleAttributesChange)}},[gjsModel]);var parsedData=function(){if(typeof data==="object"&&data!==null&&!Array.isArray(data)&&data.name==="__peak_placeholder"){return[]}if(!Array.isArray(data)){return[]}return data.map(function(datum){var newData=_extends({},datum);delete newData.id;return newData})}();function onRowAction(_x,_x2){return _onRowAction.apply(this,arguments)}function _onRowAction(){_onRowAction=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(rowIndex,actionId){var id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:id=gjsModel.get("id");_context.next=3;return performInteraction({id:actionId,interactionType:"tableButton",payload:{row:data[rowIndex],tableId:id},affectedComponents:[]});case 3:case"end":return _context.stop()}},_callee)}));return _onRowAction.apply(this,arguments)}function onPageChange(_x3,_x4){return _onPageChange.apply(this,arguments)}function _onPageChange(){_onPageChange=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(pageNumber,pageSize){var _gjsModel$get2;var id,_ref13,sortColumn,sortDirection;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:id=gjsModel.get("id");_ref13=(_gjsModel$get2=gjsModel.get("componentProps"))!=null?_gjsModel$get2:{},sortColumn=_ref13.sortColumn,sortDirection=_ref13.sortDirection;_context2.next=4;return performInteraction({id:id,interactionType:"pagination",payload:_extends({pageNumber:pageNumber,pageSize:pageSize},sortColumn&&sortDirection&&{sortColumn:sortColumn,sortDirection:sortDirection}),affectedComponents:getAffectedComponentsWithLoader([id],true)});case 4:case"end":return _context2.stop()}},_callee2)}));return _onPageChange.apply(this,arguments)}function handleSort(_x5,_x6){return _handleSort.apply(this,arguments)}function _handleSort(){_handleSort=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(column,direction){var currentProps,id;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:currentProps=gjsModel.get("componentProps");id=gjsModel.get("id");gjsModel.set("componentProps",_extends({},currentProps,{sortColumn:direction?column:null,sortDirection:direction}));_context3.next=5;return performInteraction({id:id,interactionType:"tableSort",payload:{sortColumn:direction?column:null,sortDirection:direction,tableId:id},affectedComponents:getAffectedComponentsWithLoader([id],true)});case 5:case"end":return _context3.stop()}},_callee3)}));return _handleSort.apply(this,arguments)}return/*#__PURE__*/_jsxs(Card,{ref:cardRef,className:"shadow border relative flex flex-col h-fit overflow-hidden","data-component-type":"table","data-table-id":gjsModel.get("id"),children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsx("div",{className:"flex items-start justify-between",children:/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"title",contentEditable:isEditable,className:"text-2xl",children:title}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"subTitle",contentEditable:isEditable,className:"text-sm",children:subTitle})]})})}),/*#__PURE__*/_jsx(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"flex-1 flex flex-col overflow-hidden",children:attributes.error||allData.error||attributes.isMissing||allData.isMissing?renderNoDataFallback():/*#__PURE__*/_jsx(DataTable,{data:parsedData,headerMapper:headerMapper,className:className,isEditable:isEditable,actions:actions,pagination:pagination,isLoading:attributes.interactionApiInProgress||attributes.loading,onRowAction:onRowAction,onPageChange:onPageChange,onSort:handleSort,sortConfig:sortConfig,otherProps:rest,height:scrollAreaHeight})}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",tableActions:actions,firstRowData:Array.isArray(data)&&data.length>0?data[0]:{},isVisible:isEditable,componentProps:allData})]})}export function renderTab(props){var tabsWidth=157;var safeTabs=Array.isArray(props.tabs)?props.tabs:[];var showFallback=safeTabs.length===0;if(safeTabs.length>4){tabsWidth=157}var defaultValue=props.defaultValue||(safeTabs.length>0?safeTabs[0]:undefined);return/*#__PURE__*/_jsxs(Tabs,{defaultValue:defaultValue,children:[/*#__PURE__*/_jsx("div",{className:"text-center mb-4",children:/*#__PURE__*/_jsx(TabsList,{className:"bg-[#F9F9FE] border border-[#D4D5DE] p-1 rounded-lg h-auto",children:safeTabs.length>0?safeTabs.map(function(tab){return/*#__PURE__*/_jsx(TabsTrigger,{value:tab,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 ",style:{fontFamily:"Helvetica Neue",fontWeight:500,fontSize:"14px",lineHeight:"16px",letterSpacing:"0%"},children:tab},tab)}):/*#__PURE__*/_jsx(TabsTrigger,{value:"no-data",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 ",style:{fontFamily:"Helvetica Neue",fontWeight:500,fontSize:"14px",lineHeight:"16px",letterSpacing:"0%"},disabled:true,children:"No tabs"})})}),showFallback?/*#__PURE__*/_jsx(TabsContent,{value:defaultValue||"no-data",className:"tabs-content","data-fallback":"true",children:renderNoDataFallback()}):safeTabs.map(function(tab){return/*#__PURE__*/_jsx(TabsContent,{value:tab,className:"tabs-content"},tab)})]})}export function renderMarkdown(props){var _props$isEditable4=props.isEditable,isEditable=_props$isEditable4===void 0?false:_props$isEditable4,gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded5);// Memoize filtered props to avoid re-filtering on every render
|
|
11
12
|
var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState15=useState(initialData),allData=_useState15[0],setAllData=_useState15[1];var _useState16=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState16[0],setAttributes=_useState16[1];useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){var handleAttributesChange=function handleAttributesChange(){setAttributes(_extends({},gjsModel.get("attributes")))};gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:attributes",handleAttributesChange)}},[gjsModel]);var _useState17=useState(false),isEditing=_useState17[0],setIsEditing=_useState17[1];var _useState18=useState(false),isEditingHeading=_useState18[0],setIsEditingHeading=_useState18[1];var editRef=useRef(null);var headingEditRef=useRef(null);var startEditing=function startEditing(){setIsEditing(true);setTimeout(function(){setupEditor()},0)};var startEditingHeading=function startEditingHeading(){setIsEditingHeading(true);setTimeout(function(){setupHeadingEditor()},0)};var setupEditor=function setupEditor(){if(!editRef.current){return}var editor=editRef.current;editor.innerHTML="";editor.textContent=allData.summaryText;editor.focus()};var setupHeadingEditor=function setupHeadingEditor(){if(!headingEditRef.current){return}var editor=headingEditRef.current;editor.innerHTML="";editor.textContent=allData.summaryHeading||"Insights";editor.focus()};// Save changes and exit editing mode
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-components.js","names":["chroma","React","useEffect","useState","useMemo","useRef","renderNoDataFallback","CircleAlert","TrendingDown","TrendingUp","ShoppingCart","ChartBarBig","Tag","MapPin","StyledInfoButton","filterPlaceholders","theme","Markdown","Bar","BarChart","CartesianGrid","Legend","Line","LineChart","Pie","PieChart","ResponsiveContainer","Scatter","ScatterChart","XAxis","YAxis","Cell","domutil","Group","scaleBand","scaleLinear","AxisBottom","AxisLeft","GridRows","Circle","useTooltip","TooltipWithBounds","defaultStyles","forceSimulation","forceX","forceY","forceCollide","TooltipButton","Card","CardContent","CardDescription","CardFooter","CardHeader","CardTitle","ChartContainer","ChartTooltip","ChartTooltipContent","renderFilter","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","initialData","_useState","allData","setAllData","_allData$headerConten","headerContent","icon","_allData$bodyContent","bodyContent","_useState2","_extends","get","attributes","setAttributes","handlePropsChange","newComponentProps","filteredProps","prevData","on","off","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","footerHasContent","setFooterHasContent","_useState5","defaultFooterClasses","defaultContentMetadataClasses","mergedCardClassName","mergedFooterClassName","mergedContentMetadataClassName","hasError","Boolean","hasMissing","isLoading","interactionApiInProgress","loading","footerIconText","String","getCardContent","showEmpty","handleFooterInput","event","target","content","textContent","hasContent","trim","currentProps","set","isEmptied","Fragment","onInput","componentId","position","isVisible","componentProps","transformDataForScatter","data","xAxis","yAxis","dataKeys","scatterData","filter","item","undefined","map","_result","result","Number","forEach","_ref","binDataForHistogram","valueKey","bins","values","val","isNaN","min","apply","max","binWidth","binsArray","fill","binLabels","binStart","binEnd","toFixed","binIndex","label","index","bin","frequency","transformDataForBeeswarm","groupBy","nodes","groups","grouped","group","sort","groupIndex","x","y","radius","BeeswarmChart","_ref2","containerRef","svgRef","_useState6","width","height","dimensions","setDimensions","_useState7","simulatedNodes","setSimulatedNodes","_useTooltip","tooltipData","tooltipLeft","tooltipTop","tooltipOpen","showTooltip","hideTooltip","updateDimensions","current","offsetWidth","resizeObserver","ResizeObserver","entries","_iterator2","_step2","entry","contentRect","observe","window","addEventListener","disconnect","removeEventListener","margin","right","bottom","innerWidth","innerHeight","d","minValue","maxValue","valueRange","padding","xScale","domain","range","yScale","RADIUS","SPREAD_FACTOR","RANDOM_FACTOR","SIMULATION_ITERATIONS","COLLISION_PADDING","bounds","minY","maxY","minX","maxX","initialY","clampedY","groupCenterX","bandwidth","maxSpread","randomOffset","simulation","force","strength","targetY","iterations","stop","constrainNode","node","correctY","vy","nodeMinX","nodeMaxX","constrainedMinX","constrainedMaxX","vx","tick","concat","ref","handleMouseOver","containerRect","clientX","clientY","onMouseLeave","strokeDasharray","stroke","strokeOpacity","tickStroke","tickLabelProps","fontSize","textAnchor","dy","cx","cy","r","opacity","strokeWidth","onMouseOver","e","cursor","border","borderRadius","boxShadow","zIndex","pointerEvents","marginBottom","fontWeight","toLocaleString","renderChartComponent","chartType","config","safeData","hideLabel","dataKey","nameKey","innerRadius","_ref3","name","percent","labelLine","barDataKeys","chartUi","barGap","vertical","align","wrapperStyle","marginLeft","_ref4","indicator","safeDataKeysLine","_ref5","type","safeDataKeys","_ref6","_ref7","binnedData","angle","_config$dataKeys$","_config$dataKeys$2","_transformDataForBees","_ref8","renderChart","_props$isEditable2","_props$performInterac2","_excluded3","_useState8","_useState9","_useState10","containerWidth","setContainerWidth","handleAttributesChange","newAttributes","updateContainerWidth","_iterator3","_step3","timeoutId","setTimeout","clearTimeout","_allData$config","_allData$chartType","_allData$chartData","chartData","_allData$title","title","_allData$subTitle","subTitle","mergedClasses","safeChartData","totalDataPoints","getScrollableWidth","scrollWidth","shouldScroll","ChartWrapper","_ref9","minWidth","isBeeswarmChart","renderTable","_props$isEditable3","_props$performInterac3","_excluded4","_useState11","cardRef","_useState12","rawData","_allData$headerMapper","headerMapper","rawHeaderMapper","_allData$title2","_allData$subTitle2","_allData$actions","actions","pagination","cleaned","id","fromEntries","_ref10","sortConfig","_gjsModel$get","_ref12","_ref11","sortColumn","sortDirection","_useState13","viewportWidth","setViewportWidth","_useState14","scrollAreaHeight","setScrollAreaHeight","calculateTableHeight","tableWidth","rowCount","_gjsModel$collection","widthRatio","baseTableHeight","targetScrollAreaHeight","headerHeight","rowHeight","calculatedHeight","tableId","editor","em","collection","canvasDocument","Canvas","getDocument","tableElement","headerElement","offsetHeight","actualHeaderHeight","standardHeaderHeight","heightDifference","updateViewportWidth","iframeDocument","dashboardRoot","getElementById","effectiveViewportWidth","clientWidth","updateTableWidthAndApplyCSS","_gjsModel$collection2","parent","tableActualWidth","parsedData","datum","newData","onRowAction","_x","_x2","_onRowAction","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","rowIndex","actionId","wrap","_callee$","_context","prev","next","interactionType","payload","row","affectedComponents","onPageChange","_x3","_x4","_onPageChange","_callee2","pageNumber","pageSize","_gjsModel$get2","_ref13","_callee2$","_context2","handleSort","_x5","_x6","_handleSort","_callee3","column","direction","_callee3$","_context3","onSort","otherProps","tableActions","firstRowData","renderTab","tabsWidth","safeTabs","tabs","showFallback","defaultValue","tab","fontFamily","lineHeight","letterSpacing","disabled","renderMarkdown","_props$isEditable4","_excluded5","_useState15","_useState16","_useState17","isEditing","setIsEditing","_useState18","isEditingHeading","setIsEditingHeading","editRef","headingEditRef","startEditing","setupEditor","startEditingHeading","setupHeadingEditor","innerHTML","summaryText","focus","summaryHeading","saveChanges","innerText","saveHeadingChanges","markdownStyles","ul","h1","h2","h3","h4","h5","h6","minHeight","options","overrides","onBlur","suppressContentEditableWarning","onClick","whiteSpace","wordWrap","renderButton","_props$isEditable5","_props$performInterac4","_useState19","_useState20","text","_allData$variant","variant","_allData$size","size","tooltipContent","interact","renderActionCardWithWrapper","componentType","renderButtonWithWrapper","renderCardWithWrapper","renderChartWithWrapper","renderFilterWithWrapper","renderMarkdownWithWrapper","renderSearchWithWrapper","renderTableWithWrapper","renderTabWithWrapper","renderActions","_props$isEditable6","action","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, useMemo, 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 Scatter,\n ScatterChart,\n XAxis,\n YAxis,\n Cell,\n} from 'recharts/lib';\n\n// @ts-ignore\nimport * as domutil from 'recharts/lib/util/DOMUtils';\n\nimport { Group } from '@visx/group';\nimport { scaleBand, scaleLinear } from '@visx/scale';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { GridRows } from '@visx/grid';\nimport { Circle } from '@visx/shape';\nimport { useTooltip, TooltipWithBounds, defaultStyles } from '@visx/tooltip';\nimport { forceSimulation, forceX, forceY, forceCollide } from 'd3-force';\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 { 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 // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\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 const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData,\n ...filteredProps,\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 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 // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\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 [footerHasContent, setFooterHasContent] = useState(safeFooterContent.length > 0);\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData,\n ...filteredProps,\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 gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n useEffect(() => {\n setFooterHasContent(safeFooterContent.length > 0);\n }, [safeFooterContent]);\n\n const defaultClasses =\n 'bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none';\n const defaultFooterClasses = footerHasContent\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 function handleFooterInput(event: React.FormEvent<HTMLDivElement>) {\n const target = event.target as HTMLDivElement;\n const content = target.textContent || '';\n const hasContent = content.trim().length > 0;\n\n setFooterHasContent(hasContent);\n\n if (!hasContent) {\n const currentProps = gjsModel.get('componentProps');\n gjsModel.set('componentProps', {\n ...currentProps,\n footerContent: null,\n footerIcon: null,\n footerClass: null,\n isEmptied: true,\n });\n }\n }\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={mergedFooterClassName}\n onInput={handleFooterInput}\n >\n {(footerIconText || '').trim() ? (\n <span className=\"mr-2\" aria-hidden=\"true\">\n {footerIconText}\n </span>\n ) : null}\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\n\nfunction transformDataForScatter(data: any[], xAxis: string, yAxis: string, dataKeys: any[]): any[] {\n if (!data || data.length === 0) {\n return [];\n }\n \n\n const scatterData = data\n .filter((item) => item[xAxis] !== null && item[xAxis] !== undefined && item[yAxis] !== null && item[yAxis] !== undefined)\n .map((item) => {\n const result: any = {\n [xAxis]: Number(item[xAxis]),\n [yAxis]: Number(item[yAxis]),\n };\n \n\n if (dataKeys && dataKeys.length > 0) {\n dataKeys.forEach(({ key }: { key: string }) => {\n if (item[key] !== null && item[key] !== undefined) {\n result[key] = Number(item[key]);\n }\n });\n }\n \n return result;\n });\n \n return scatterData;\n}\n\nfunction binDataForHistogram(data: any[], valueKey: string, bins = 10): any[] {\n if (!data || data.length === 0) {\n return [];\n }\n \n const values = data\n .map((item) => Number(item[valueKey]))\n .filter((val) => !isNaN(val));\n \n if (values.length === 0) {\n return [];\n }\n \n const min = Math.min(...values);\n const max = Math.max(...values);\n const binWidth = (max - min) / bins;\n \n const binsArray: number[] = new Array(bins).fill(0);\n const binLabels: string[] = [];\n \n for (let i = 0; i < bins; i++) {\n const binStart = min + i * binWidth;\n const binEnd = binStart + binWidth;\n binLabels.push(`${binStart.toFixed(1)}-${binEnd.toFixed(1)}`);\n }\n \n values.forEach((value) => {\n let binIndex = Math.floor((value - min) / binWidth);\n\n if (binIndex >= bins) {\n binIndex = bins - 1;\n }\n\n if (binIndex < 0) {\n binIndex = 0;\n }\n\n binsArray[binIndex] += 1;\n });\n \n return binLabels.map((label, index) => ({\n bin: label,\n frequency: binsArray[index],\n }));\n}\n\n\nfunction transformDataForBeeswarm(data: any[], groupBy: string, valueKey: string): { nodes: any[]; groups: string[] } {\n if (!data || data.length === 0) {\n return { nodes: [], groups: [] };\n }\n \n const grouped: { [key: string]: number[] } = {};\n \n data.forEach((item) => {\n if (item[groupBy] !== null && item[groupBy] !== undefined && item[valueKey] !== null && item[valueKey] !== undefined) {\n const group = String(item[groupBy]);\n const value = Number(item[valueKey]);\n \n if (!isNaN(value)) {\n if (!grouped[group]) {\n grouped[group] = [];\n }\n\n grouped[group].push(value);\n }\n }\n });\n\n const groups = Object.keys(grouped).sort();\n const nodes: any[] = [];\n \n groups.forEach((group, groupIndex) => {\n const values = grouped[group];\n \n values.forEach((value) => {\n nodes.push({\n group: group,\n groupIndex: groupIndex,\n value: value,\n x: groupIndex,\n y: value,\n radius: 4,\n });\n });\n });\n \n return { nodes, groups };\n}\n\nfunction BeeswarmChart({ data, groups, color, groupBy, valueKey }: { data: any[]; groups: string[]; color: string; groupBy: string; valueKey: string }): JSX.Element {\n const containerRef = useRef<HTMLDivElement>(null);\n const svgRef = useRef<SVGSVGElement>(null);\n const [dimensions, setDimensions] = useState({ width: 800, height: 250 });\n const [simulatedNodes, setSimulatedNodes] = useState<any[]>([]);\n const {\n tooltipData,\n tooltipLeft,\n tooltipTop,\n tooltipOpen,\n showTooltip,\n hideTooltip,\n } = useTooltip<any>();\n\n useEffect(() => {\n const updateDimensions = () => {\n if (containerRef.current) {\n setDimensions({\n width: containerRef.current.offsetWidth || 800,\n height: 250,\n });\n }\n };\n\n updateDimensions();\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setDimensions({\n width: entry.contentRect.width || 800,\n height: 250,\n });\n }\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n window.addEventListener('resize', updateDimensions);\n\n return () => {\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateDimensions);\n };\n }, []);\n\n useEffect(() => {\n if (data.length === 0 || dimensions.width === 0) {\n return;\n }\n\n const margin = { top: 20, right: 20, bottom: 60, left: 60 };\n const innerWidth = dimensions.width - margin.left - margin.right;\n const innerHeight = dimensions.height - margin.top - margin.bottom;\n\n const values = data.map((d) => d.value);\n const minValue = Math.min(...values);\n const maxValue = Math.max(...values);\n const valueRange = maxValue - minValue;\n const padding = valueRange * 0.1;\n\n const xScale = scaleBand({\n domain: groups,\n range: [0, innerWidth],\n padding: 0.3,\n });\n\n const yScale = scaleLinear({\n domain: [minValue - padding, maxValue + padding],\n range: [innerHeight, 0],\n });\n\n const RADIUS = 4;\n const SPREAD_FACTOR = 0.35;\n const RANDOM_FACTOR = 1.5;\n const SIMULATION_ITERATIONS = 300;\n const COLLISION_PADDING = 3;\n \n const bounds = {\n minY: RADIUS,\n maxY: innerHeight - RADIUS,\n minX: 0,\n maxX: innerWidth,\n };\n\n const nodes = data.map((d) => {\n const initialY = yScale(d.value);\n const clampedY = Math.max(bounds.minY, Math.min(bounds.maxY, initialY));\n const groupCenterX = (xScale(d.group) || 0) + (xScale.bandwidth() || 0) / 2;\n const bandwidth = xScale.bandwidth() || 0;\n const maxSpread = bandwidth * SPREAD_FACTOR;\n const randomOffset = (Math.random() - 0.5) * maxSpread * RANDOM_FACTOR;\n \n return {\n ...d,\n groupCenterX,\n x: groupCenterX + randomOffset,\n y: clampedY,\n radius: RADIUS,\n maxSpread,\n };\n });\n\n const simulation = forceSimulation(nodes)\n .force('x', forceX((d: any) => d.groupCenterX).strength(0.25))\n .force('y', forceY((d: any) => {\n const targetY = yScale(d.value);\n\n return Math.max(bounds.minY, Math.min(bounds.maxY, targetY));\n }).strength(1.0))\n .force('collide', forceCollide().radius((d: any) => d.radius + COLLISION_PADDING).strength(0.9).iterations(3))\n .stop();\n\n const constrainNode = (node: any) => {\n const correctY = yScale(node.value);\n node.y = Math.max(bounds.minY, Math.min(bounds.maxY, correctY));\n node.vy = 0;\n \n const nodeMinX = node.groupCenterX - node.maxSpread;\n const nodeMaxX = node.groupCenterX + node.maxSpread;\n const constrainedMinX = Math.max(bounds.minX, nodeMinX);\n const constrainedMaxX = Math.min(bounds.maxX, nodeMaxX);\n \n if (node.x < constrainedMinX) {\n node.x = constrainedMinX;\n node.vx *= 0.5;\n } else if (node.x > constrainedMaxX) {\n node.x = constrainedMaxX;\n node.vx *= 0.5;\n }\n };\n\n for (let i = 0; i < SIMULATION_ITERATIONS; i++) {\n simulation.tick();\n nodes.forEach(constrainNode);\n }\n\n nodes.forEach((node: any) => {\n constrainNode(node);\n node.vx = 0;\n });\n\n setSimulatedNodes([...nodes]);\n }, [data, groups, dimensions]);\n\n if (simulatedNodes.length === 0 || dimensions.width === 0) {\n return <div ref={containerRef} style={{ width: '100%', height: '250px' }} />;\n }\n\n const margin = { top: 20, right: 20, bottom: 60, left: 60 };\n const innerWidth = dimensions.width - margin.left - margin.right;\n const innerHeight = dimensions.height - margin.top - margin.bottom;\n\n const values = data.map((d) => d.value);\n const minValue = Math.min(...values);\n const maxValue = Math.max(...values);\n\n const xScale = scaleBand({\n domain: groups,\n range: [0, innerWidth],\n padding: 0.3,\n });\n\n const yScale = scaleLinear({\n domain: [minValue, maxValue],\n range: [innerHeight, 0],\n });\n\n const handleMouseOver = (event: React.MouseEvent, node: any) => {\n if (containerRef.current) {\n const containerRect = containerRef.current.getBoundingClientRect();\n const x = event.clientX - containerRect.left + 10;\n const y = event.clientY - containerRect.top - 10;\n\n showTooltip({\n tooltipLeft: x,\n tooltipTop: y,\n tooltipData: node,\n });\n }\n };\n\n return (\n <div ref={containerRef} style={{ width: '100%', height: '250px', position: 'relative' }}>\n <svg \n ref={svgRef}\n width={dimensions.width} \n height={dimensions.height}\n onMouseLeave={hideTooltip}\n >\n <Group left={margin.left} top={margin.top}>\n <GridRows scale={yScale} width={innerWidth} strokeDasharray=\"3,3\" stroke=\"#e0e0e0\" strokeOpacity={0.5} />\n <AxisLeft\n scale={yScale}\n tickStroke=\"#666\"\n stroke=\"#666\"\n tickLabelProps={() => ({\n fill: '#666',\n fontSize: 12,\n textAnchor: 'end',\n dy: '0.33em',\n })}\n />\n <AxisBottom\n top={innerHeight}\n scale={xScale}\n tickStroke=\"#666\"\n stroke=\"#666\"\n tickLabelProps={() => ({\n fill: '#666',\n fontSize: 12,\n textAnchor: 'middle',\n })}\n />\n {simulatedNodes.map((node, i) => (\n <Circle\n key={i}\n cx={node.x || 0}\n cy={node.y || 0}\n r={node.radius}\n fill={color}\n opacity={0.8}\n stroke={color}\n strokeWidth={1}\n onMouseOver={(e) => handleMouseOver(e, node)}\n style={{ cursor: 'pointer' }}\n />\n ))}\n </Group>\n </svg>\n {tooltipOpen && tooltipData && tooltipLeft !== null && tooltipLeft !== undefined && tooltipTop !== null && tooltipTop !== undefined && (\n <TooltipWithBounds\n left={tooltipLeft}\n top={tooltipTop}\n style={{\n ...defaultStyles,\n backgroundColor: 'white',\n border: '1px solid #e0e0e0',\n borderRadius: '4px',\n padding: '8px 12px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.15)',\n fontSize: '12px',\n position: 'absolute',\n zIndex: 1000,\n pointerEvents: 'none',\n }}\n >\n <div>\n <div style={{ marginBottom: '4px', fontWeight: 600 }}>\n {groupBy}: {tooltipData.group}\n </div>\n <div>\n {valueKey}: {tooltipData.value.toLocaleString()}\n </div>\n </div>\n </TooltipWithBounds>\n )}\n </div>\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} {...(barDataKeys.length > 1 && { barGap: 0 })}>\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 case 'scatter': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n const scatterData = transformDataForScatter(safeData, config.xAxis, config.yAxis, safeDataKeys);\n \n if (scatterData.length === 0) {\n return renderNoDataFallback();\n }\n\n const colors = safeDataKeys.length > 0 \n ? safeDataKeys.map(({ color }: { color: string }) => color ?? '#2A44D4')\n : ['#2A44D4'];\n \n return (\n <ScatterChart data={scatterData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis \n type=\"number\" \n dataKey={config.xAxis} \n name={config.xAxis || 'X Axis'}\n domain={['auto', 'auto']}\n />\n <YAxis \n type=\"number\" \n dataKey={config.yAxis} \n name={config.yAxis || 'Y Axis'}\n domain={['auto', 'auto']}\n />\n <ChartTooltip cursor={{ strokeDasharray: '3 3' }} content={<ChartTooltipContent />} />\n {safeDataKeys.length > 0 ? (\n safeDataKeys.map(({ key, name, color }: { key: string; name: string; color: string }, index: number) => (\n <Scatter\n key={key}\n name={name || key}\n dataKey={key || config.yAxis}\n fill={color ?? colors[index % colors.length]}\n />\n ))\n ) : (\n <Scatter\n name=\"Data\"\n dataKey={config.yAxis}\n fill={colors[0]}\n />\n )}\n <Legend align=\"left\" />\n </ScatterChart>\n );\n }\n\n case 'histogram': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n const valueKey = safeDataKeys.length > 0 ? safeDataKeys[0].key : config.xAxis;\n const bins = config.bins || 10;\n const binnedData = binDataForHistogram(safeData, valueKey, bins);\n \n if (binnedData.length === 0) {\n return renderNoDataFallback();\n }\n\n const color = safeDataKeys.length > 0 ? safeDataKeys[0].color : '#2A44D4';\n \n return (\n <BarChart data={binnedData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis \n dataKey=\"bin\" \n angle={-45}\n textAnchor=\"end\"\n height={80}\n />\n <YAxis />\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n <Bar dataKey=\"frequency\" fill={color} radius={2}>\n {binnedData.map((entry, index) => (\n <Cell key={`cell-${index}`} fill={color} />\n ))}\n </Bar>\n <Legend align=\"left\" />\n </BarChart>\n );\n }\n\n case 'beeswarm': {\n const groupBy = config.groupBy || config.xAxis;\n const valueKey = config.valueKey || (config.dataKeys && config.dataKeys[0]?.key) || 'value';\n const { nodes, groups } = transformDataForBeeswarm(safeData, groupBy, valueKey);\n \n if (nodes.length === 0 || groups.length === 0) {\n return renderNoDataFallback();\n }\n\n const color = config.dataKeys && config.dataKeys[0]?.color ? config.dataKeys[0].color : '#2A44D4';\n \n return (\n <BeeswarmChart\n data={nodes}\n groups={groups}\n color={color}\n groupBy={groupBy}\n valueKey={valueKey}\n />\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 // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\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 newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\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 || 0);\n }\n };\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContainerWidth(entry.contentRect.width || 0);\n }\n });\n\n updateContainerWidth();\n\n const timeoutId = setTimeout(updateContainerWidth, 50);\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n window.addEventListener('resize', updateContainerWidth);\n\n return () => {\n clearTimeout(timeoutId);\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateContainerWidth);\n };\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 safeChartData.forEach((data, i) => {\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 totalDataPoints = 0;\n\n if (chartType === 'bar' || chartType === 'line' || chartType === 'scatter' || chartType === 'histogram' || chartType === 'beeswarm') {\n const safeChartData = Array.isArray(chartData) ? chartData : [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n if (chartType === 'bar') {\n totalDataPoints = safeChartData.length * Math.max(1, safeDataKeys.length);\n } else if (chartType === 'line') {\n totalDataPoints = safeChartData.length;\n } else if (chartType === 'scatter' || chartType === 'histogram' || chartType === 'beeswarm') {\n totalDataPoints = safeChartData.length;\n }\n }\n\n const getScrollableWidth = () => {\n if (chartType === 'line') {\n return totalDataPoints * 20;\n }\n\n if (chartType === 'bar') {\n return (\n totalDataPoints * 20 +\n (Array.isArray(config.dataKeys) ? config.dataKeys.length : 0) *\n 8 *\n (Array.isArray(chartData) ? chartData.length : 0) +\n (Array.isArray(chartData) ? chartData.length : 0) * 15\n );\n }\n\n if (chartType === 'scatter' || chartType === 'histogram' || chartType === 'beeswarm') {\n return 800;\n }\n\n return 800;\n };\n\n const scrollWidth = getScrollableWidth();\n const shouldScroll =\n (chartType === 'bar' || chartType === 'line') &&\n totalDataPoints > 15 &&\n scrollWidth > containerWidth;\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 ChartWrapper = ({ children }: { children: React.ReactNode }) => {\n if (shouldScroll) {\n return (\n <div className=\"w-full h-[250px] overflow-x-auto\">\n <div style={{ minWidth: `${scrollWidth}px`, height: '250px' }}>{children}</div>\n </div>\n );\n }\n\n return <div className=\"w-full h-[250px]\">{children}</div>;\n };\n\n\n const isBeeswarmChart = chartType === 'beeswarm';\n \n const chartUi = isLoading ? (\n <ChartLoader />\n ) : hasError || hasMissing || !chartData ? (\n renderNoDataFallback()\n ) : isBeeswarmChart ? (\n <ChartWrapper>\n <ChartContainer {...rest} config={config} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, config)}\n </ChartContainer>\n </ChartWrapper>\n ) : (\n <ChartWrapper>\n <ResponsiveContainer width=\"100%\" height={250}>\n <ChartContainer {...rest} config={config} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, config)}\n </ChartContainer>\n </ResponsiveContainer>\n </ChartWrapper>\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 ref={containerRef} data-slot=\"bodyContent\" className=\"px-6\">\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 // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\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 const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\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 setAttributes({\n ...gjsModel.get('attributes'),\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\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 || attributes.loading}\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 // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\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 setAttributes({\n ...gjsModel.get('attributes'),\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n const [isEditing, setIsEditing] = useState(false);\n const [isEditingHeading, setIsEditingHeading] = useState(false);\n const editRef = useRef<HTMLDivElement>(null);\n const headingEditRef = useRef<HTMLDivElement>(null);\n\n const startEditing = () => {\n setIsEditing(true);\n setTimeout(() => {\n setupEditor();\n }, 0);\n };\n\n const startEditingHeading = () => {\n setIsEditingHeading(true);\n setTimeout(() => {\n setupHeadingEditor();\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 const setupHeadingEditor = () => {\n if (!headingEditRef.current) {\n return;\n }\n\n const editor = headingEditRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryHeading || 'Insights';\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 saveHeadingChanges = () => {\n if (!headingEditRef.current) {\n return;\n }\n\n const content = headingEditRef.current.innerText || 'Insights';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryHeading: content,\n }));\n setIsEditingHeading(false);\n headingEditRef.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 =\n (attributes.loading && !hasError && !hasMissing) || attributes.interactionApiInProgress;\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\">{allData.summaryHeading || '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\">{allData.summaryHeading || '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 {isEditingHeading ? (\n <div\n ref={headingEditRef}\n contentEditable\n onBlur={saveHeadingChanges}\n data-slot=\"summaryHeading\"\n className=\"text-xl font-semibold text-left\"\n suppressContentEditableWarning={true}\n />\n ) : (\n <h3\n className=\"text-xl font-semibold text-left\"\n onClick={startEditingHeading}\n data-slot=\"summaryHeading\"\n >\n {allData.summaryHeading || 'Insights'}\n </h3>\n )}\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":[]}
|
|
1
|
+
{"version":3,"file":"render-components.js","names":["chroma","React","useEffect","useState","useMemo","useRef","renderNoDataFallback","CircleAlert","TrendingDown","TrendingUp","ShoppingCart","ChartBarBig","Tag","MapPin","StyledInfoButton","filterPlaceholders","theme","Markdown","Bar","BarChart","CartesianGrid","Legend","Line","LineChart","Pie","PieChart","ResponsiveContainer","Scatter","ScatterChart","XAxis","YAxis","Cell","domutil","Group","scaleBand","scaleLinear","AxisBottom","AxisLeft","GridRows","Circle","useTooltip","TooltipWithBounds","defaultStyles","forceSimulation","forceX","forceY","forceCollide","TooltipButton","Card","CardContent","CardDescription","CardFooter","CardHeader","CardTitle","ChartContainer","ChartTooltip","ChartTooltipContent","renderFilter","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","initialData","_useState","allData","setAllData","_allData$headerConten","headerContent","icon","_allData$bodyContent","bodyContent","_useState2","_extends","get","attributes","setAttributes","handlePropsChange","newComponentProps","filteredProps","prevData","on","off","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","footerHasContent","setFooterHasContent","_useState5","defaultFooterClasses","defaultContentMetadataClasses","mergedCardClassName","mergedFooterClassName","mergedContentMetadataClassName","hasError","Boolean","hasMissing","isLoading","interactionApiInProgress","loading","footerIconText","String","getCardContent","showEmpty","handleFooterInput","event","target","content","textContent","hasContent","trim","currentProps","set","isEmptied","Fragment","onInput","componentId","position","isVisible","componentProps","transformDataForScatter","data","xAxis","yAxis","dataKeys","scatterData","filter","item","undefined","map","_result","result","Number","forEach","_ref","binDataForHistogram","valueKey","bins","values","val","isNaN","min","apply","max","binWidth","binsArray","fill","binLabels","binStart","binEnd","toFixed","binIndex","label","index","bin","frequency","transformDataForBeeswarm","groupBy","nodes","groups","grouped","group","sort","groupIndex","x","y","radius","BeeswarmChart","_ref2","containerRef","svgRef","_useState6","width","height","dimensions","setDimensions","_useState7","simulatedNodes","setSimulatedNodes","_useTooltip","tooltipData","tooltipLeft","tooltipTop","tooltipOpen","showTooltip","hideTooltip","updateDimensions","current","offsetWidth","resizeObserver","ResizeObserver","entries","_iterator2","_step2","entry","contentRect","observe","window","addEventListener","disconnect","removeEventListener","margin","right","bottom","innerWidth","innerHeight","d","minValue","maxValue","valueRange","padding","xScale","domain","range","yScale","RADIUS","SPREAD_FACTOR","RANDOM_FACTOR","SIMULATION_ITERATIONS","COLLISION_PADDING","bounds","minY","maxY","minX","maxX","initialY","clampedY","groupCenterX","bandwidth","maxSpread","randomOffset","simulation","force","strength","targetY","iterations","stop","constrainNode","node","isFinal","correctY","vy","nodeMinX","nodeMaxX","constrainedMinX","constrainedMaxX","overflowMargin","vx","tick","concat","ref","handleMouseOver","containerRect","clientX","clientY","onMouseLeave","strokeDasharray","stroke","strokeOpacity","tickStroke","tickLabelProps","fontSize","textAnchor","dy","cx","cy","r","opacity","strokeWidth","onMouseOver","e","cursor","border","borderRadius","boxShadow","zIndex","pointerEvents","marginBottom","fontWeight","toLocaleString","renderChartComponent","chartType","config","safeData","hideLabel","dataKey","nameKey","innerRadius","_ref3","name","percent","labelLine","barDataKeys","chartUi","barGap","vertical","align","wrapperStyle","marginLeft","_ref4","indicator","safeDataKeysLine","_ref5","type","safeDataKeys","_ref6","_ref7","binnedData","angle","_config$dataKeys$","_config$dataKeys$2","_transformDataForBees","_ref8","renderChart","_props$isEditable2","_props$performInterac2","_excluded3","_useState8","_useState9","_useState10","containerWidth","setContainerWidth","handleAttributesChange","newAttributes","updateContainerWidth","_iterator3","_step3","timeoutId","setTimeout","clearTimeout","_allData$config","_allData$chartType","_allData$chartData","chartData","_allData$title","title","_allData$subTitle","subTitle","mergedClasses","safeChartData","totalDataPoints","getScrollableWidth","scrollWidth","shouldScroll","ChartWrapper","_ref9","minWidth","isBeeswarmChart","renderTable","_props$isEditable3","_props$performInterac3","_excluded4","_useState11","cardRef","_useState12","rawData","_allData$headerMapper","headerMapper","rawHeaderMapper","_allData$title2","_allData$subTitle2","_allData$actions","actions","pagination","cleaned","id","fromEntries","_ref10","sortConfig","_gjsModel$get","_ref12","_ref11","sortColumn","sortDirection","_useState13","viewportWidth","setViewportWidth","_useState14","scrollAreaHeight","setScrollAreaHeight","calculateTableHeight","tableWidth","rowCount","_gjsModel$collection","widthRatio","baseTableHeight","targetScrollAreaHeight","headerHeight","rowHeight","calculatedHeight","tableId","editor","em","collection","canvasDocument","Canvas","getDocument","tableElement","headerElement","offsetHeight","actualHeaderHeight","standardHeaderHeight","heightDifference","updateViewportWidth","iframeDocument","dashboardRoot","getElementById","effectiveViewportWidth","clientWidth","updateTableWidthAndApplyCSS","_gjsModel$collection2","parent","tableActualWidth","parsedData","datum","newData","onRowAction","_x","_x2","_onRowAction","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","rowIndex","actionId","wrap","_callee$","_context","prev","next","interactionType","payload","row","affectedComponents","onPageChange","_x3","_x4","_onPageChange","_callee2","pageNumber","pageSize","_gjsModel$get2","_ref13","_callee2$","_context2","handleSort","_x5","_x6","_handleSort","_callee3","column","direction","_callee3$","_context3","onSort","otherProps","tableActions","firstRowData","renderTab","tabsWidth","safeTabs","tabs","showFallback","defaultValue","tab","fontFamily","lineHeight","letterSpacing","disabled","renderMarkdown","_props$isEditable4","_excluded5","_useState15","_useState16","_useState17","isEditing","setIsEditing","_useState18","isEditingHeading","setIsEditingHeading","editRef","headingEditRef","startEditing","setupEditor","startEditingHeading","setupHeadingEditor","innerHTML","summaryText","focus","summaryHeading","saveChanges","innerText","saveHeadingChanges","markdownStyles","ul","h1","h2","h3","h4","h5","h6","minHeight","options","overrides","onBlur","suppressContentEditableWarning","onClick","whiteSpace","wordWrap","renderButton","_props$isEditable5","_props$performInterac4","_useState19","_useState20","text","_allData$variant","variant","_allData$size","size","tooltipContent","interact","renderActionCardWithWrapper","componentType","renderButtonWithWrapper","renderCardWithWrapper","renderChartWithWrapper","renderFilterWithWrapper","renderMarkdownWithWrapper","renderSearchWithWrapper","renderTableWithWrapper","renderTabWithWrapper","renderActions","_props$isEditable6","action","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, useMemo, 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 Scatter,\n ScatterChart,\n XAxis,\n YAxis,\n Cell,\n} from 'recharts/lib';\n\n// @ts-ignore\nimport * as domutil from 'recharts/lib/util/DOMUtils';\n\nimport { Group } from '@visx/group';\nimport { scaleBand, scaleLinear } from '@visx/scale';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { GridRows } from '@visx/grid';\nimport { Circle } from '@visx/shape';\nimport { useTooltip, TooltipWithBounds, defaultStyles } from '@visx/tooltip';\nimport { forceSimulation, forceX, forceY, forceCollide } from 'd3-force';\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 { 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 // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\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 const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData,\n ...filteredProps,\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 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 // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\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 [footerHasContent, setFooterHasContent] = useState(safeFooterContent.length > 0);\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData,\n ...filteredProps,\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 gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n useEffect(() => {\n setFooterHasContent(safeFooterContent.length > 0);\n }, [safeFooterContent]);\n\n const defaultClasses =\n 'bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none';\n const defaultFooterClasses = footerHasContent\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 function handleFooterInput(event: React.FormEvent<HTMLDivElement>) {\n const target = event.target as HTMLDivElement;\n const content = target.textContent || '';\n const hasContent = content.trim().length > 0;\n\n setFooterHasContent(hasContent);\n\n if (!hasContent) {\n const currentProps = gjsModel.get('componentProps');\n gjsModel.set('componentProps', {\n ...currentProps,\n footerContent: null,\n footerIcon: null,\n footerClass: null,\n isEmptied: true,\n });\n }\n }\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={mergedFooterClassName}\n onInput={handleFooterInput}\n >\n {(footerIconText || '').trim() ? (\n <span className=\"mr-2\" aria-hidden=\"true\">\n {footerIconText}\n </span>\n ) : null}\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\n\nfunction transformDataForScatter(data: any[], xAxis: string, yAxis: string, dataKeys: any[]): any[] {\n if (!data || data.length === 0) {\n return [];\n }\n \n\n const scatterData = data\n .filter((item) => item[xAxis] !== null && item[xAxis] !== undefined && item[yAxis] !== null && item[yAxis] !== undefined)\n .map((item) => {\n const result: any = {\n [xAxis]: Number(item[xAxis]),\n [yAxis]: Number(item[yAxis]),\n };\n \n\n if (dataKeys && dataKeys.length > 0) {\n dataKeys.forEach(({ key }: { key: string }) => {\n if (item[key] !== null && item[key] !== undefined) {\n result[key] = Number(item[key]);\n }\n });\n }\n \n return result;\n });\n \n return scatterData;\n}\n\nfunction binDataForHistogram(data: any[], valueKey: string, bins = 10): any[] {\n if (!data || data.length === 0) {\n return [];\n }\n \n const values = data\n .map((item) => Number(item[valueKey]))\n .filter((val) => !isNaN(val));\n \n if (values.length === 0) {\n return [];\n }\n \n const min = Math.min(...values);\n const max = Math.max(...values);\n const binWidth = (max - min) / bins;\n \n const binsArray: number[] = new Array(bins).fill(0);\n const binLabels: string[] = [];\n \n for (let i = 0; i < bins; i++) {\n const binStart = min + i * binWidth;\n const binEnd = binStart + binWidth;\n binLabels.push(`${binStart.toFixed(1)}-${binEnd.toFixed(1)}`);\n }\n \n values.forEach((value) => {\n let binIndex = Math.floor((value - min) / binWidth);\n\n if (binIndex >= bins) {\n binIndex = bins - 1;\n }\n\n if (binIndex < 0) {\n binIndex = 0;\n }\n\n binsArray[binIndex] += 1;\n });\n \n return binLabels.map((label, index) => ({\n bin: label,\n frequency: binsArray[index],\n }));\n}\n\n\nfunction transformDataForBeeswarm(data: any[], groupBy: string, valueKey: string): { nodes: any[]; groups: string[] } {\n if (!data || data.length === 0) {\n return { nodes: [], groups: [] };\n }\n \n const grouped: { [key: string]: number[] } = {};\n \n data.forEach((item) => {\n if (item[groupBy] !== null && item[groupBy] !== undefined && item[valueKey] !== null && item[valueKey] !== undefined) {\n const group = String(item[groupBy]);\n const value = Number(item[valueKey]);\n \n if (!isNaN(value)) {\n if (!grouped[group]) {\n grouped[group] = [];\n }\n\n grouped[group].push(value);\n }\n }\n });\n\n const groups = Object.keys(grouped).sort();\n const nodes: any[] = [];\n \n groups.forEach((group, groupIndex) => {\n const values = grouped[group];\n \n values.forEach((value) => {\n nodes.push({\n group: group,\n groupIndex: groupIndex,\n value: value,\n x: groupIndex,\n y: value,\n radius: 4,\n });\n });\n });\n \n return { nodes, groups };\n}\n\nfunction BeeswarmChart({ data, groups, color, groupBy, valueKey }: { data: any[]; groups: string[]; color: string; groupBy: string; valueKey: string }): JSX.Element {\n const containerRef = useRef<HTMLDivElement>(null);\n const svgRef = useRef<SVGSVGElement>(null);\n const [dimensions, setDimensions] = useState({ width: 800, height: 250 });\n const [simulatedNodes, setSimulatedNodes] = useState<any[]>([]);\n const {\n tooltipData,\n tooltipLeft,\n tooltipTop,\n tooltipOpen,\n showTooltip,\n hideTooltip,\n } = useTooltip<any>();\n\n useEffect(() => {\n const updateDimensions = () => {\n if (containerRef.current) {\n setDimensions({\n width: containerRef.current.offsetWidth || 800,\n height: 250,\n });\n }\n };\n\n updateDimensions();\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setDimensions({\n width: entry.contentRect.width || 800,\n height: 250,\n });\n }\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n window.addEventListener('resize', updateDimensions);\n\n return () => {\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateDimensions);\n };\n }, []);\n\n useEffect(() => {\n if (data.length === 0 || dimensions.width === 0) {\n return;\n }\n\n const margin = { top: 20, right: 20, bottom: 60, left: 60 };\n const innerWidth = dimensions.width - margin.left - margin.right;\n const innerHeight = dimensions.height - margin.top - margin.bottom;\n\n const values = data.map((d) => d.value);\n const minValue = Math.min(...values);\n const maxValue = Math.max(...values);\n const valueRange = maxValue - minValue;\n const padding = valueRange * 0.1;\n\n const xScale = scaleBand({\n domain: groups,\n range: [0, innerWidth],\n padding: 0.3,\n });\n\n const yScale = scaleLinear({\n domain: [minValue - padding, maxValue + padding],\n range: [innerHeight, 0],\n });\n\n const RADIUS = 4;\n const SPREAD_FACTOR = 0.45;\n const RANDOM_FACTOR = 2.0;\n const SIMULATION_ITERATIONS = 300;\n const COLLISION_PADDING = 3;\n \n const bounds = {\n minY: RADIUS,\n maxY: innerHeight - RADIUS,\n minX: 0,\n maxX: innerWidth,\n };\n\n const nodes = data.map((d) => {\n const initialY = yScale(d.value);\n const clampedY = Math.max(bounds.minY, Math.min(bounds.maxY, initialY));\n const groupCenterX = (xScale(d.group) || 0) + (xScale.bandwidth() || 0) / 2;\n const bandwidth = xScale.bandwidth() || 0;\n const maxSpread = bandwidth * SPREAD_FACTOR;\n const randomOffset = (Math.random() - 0.5) * maxSpread * RANDOM_FACTOR;\n \n return {\n ...d,\n groupCenterX,\n x: groupCenterX + randomOffset,\n y: clampedY,\n radius: RADIUS,\n maxSpread,\n };\n });\n\n const simulation = forceSimulation(nodes)\n .force('x', forceX((d: any) => d.groupCenterX).strength(0.15))\n .force('y', forceY((d: any) => {\n const targetY = yScale(d.value);\n\n return Math.max(bounds.minY, Math.min(bounds.maxY, targetY));\n }).strength(1.0))\n .force('collide', forceCollide().radius((d: any) => d.radius + COLLISION_PADDING).strength(0.9).iterations(3))\n .stop();\n\n const constrainNode = (node: any, isFinal = false) => {\n const correctY = yScale(node.value);\n node.y = Math.max(bounds.minY, Math.min(bounds.maxY, correctY));\n node.vy = 0;\n \n const nodeMinX = node.groupCenterX - node.maxSpread;\n const nodeMaxX = node.groupCenterX + node.maxSpread;\n const constrainedMinX = Math.max(bounds.minX, nodeMinX);\n const constrainedMaxX = Math.min(bounds.maxX, nodeMaxX);\n \n if (isFinal) {\n if (node.x < constrainedMinX) {\n node.x = constrainedMinX;\n } else if (node.x > constrainedMaxX) {\n node.x = constrainedMaxX;\n }\n } else {\n\n const overflowMargin = node.maxSpread * 0.1;\n\n if (node.x < constrainedMinX - overflowMargin) {\n node.x = constrainedMinX - overflowMargin;\n node.vx *= 0.7;\n } else if (node.x > constrainedMaxX + overflowMargin) {\n node.x = constrainedMaxX + overflowMargin;\n node.vx *= 0.7;\n }\n }\n };\n\n for (let i = 0; i < SIMULATION_ITERATIONS; i++) {\n simulation.tick();\n nodes.forEach((node) => constrainNode(node, false));\n }\n\n // Final constraint pass\n nodes.forEach((node: any) => {\n constrainNode(node, true);\n node.vx = 0;\n });\n\n setSimulatedNodes([...nodes]);\n }, [data, groups, dimensions]);\n\n if (simulatedNodes.length === 0 || dimensions.width === 0) {\n return <div ref={containerRef} style={{ width: '100%', height: '250px' }} />;\n }\n\n const margin = { top: 20, right: 20, bottom: 60, left: 60 };\n const innerWidth = dimensions.width - margin.left - margin.right;\n const innerHeight = dimensions.height - margin.top - margin.bottom;\n\n const values = data.map((d) => d.value);\n const minValue = Math.min(...values);\n const maxValue = Math.max(...values);\n\n const xScale = scaleBand({\n domain: groups,\n range: [0, innerWidth],\n padding: 0.3,\n });\n\n const yScale = scaleLinear({\n domain: [minValue, maxValue],\n range: [innerHeight, 0],\n });\n\n const handleMouseOver = (event: React.MouseEvent, node: any) => {\n if (containerRef.current) {\n const containerRect = containerRef.current.getBoundingClientRect();\n const x = event.clientX - containerRect.left + 10;\n const y = event.clientY - containerRect.top - 10;\n\n showTooltip({\n tooltipLeft: x,\n tooltipTop: y,\n tooltipData: node,\n });\n }\n };\n\n return (\n <div ref={containerRef} style={{ width: '100%', height: '250px', position: 'relative' }}>\n <svg \n ref={svgRef}\n width={dimensions.width} \n height={dimensions.height}\n onMouseLeave={hideTooltip}\n >\n <Group left={margin.left} top={margin.top}>\n <GridRows scale={yScale} width={innerWidth} strokeDasharray=\"3,3\" stroke=\"#e0e0e0\" strokeOpacity={0.5} />\n <AxisLeft\n scale={yScale}\n tickStroke=\"#666\"\n stroke=\"#666\"\n tickLabelProps={() => ({\n fill: '#666',\n fontSize: 12,\n textAnchor: 'end',\n dy: '0.33em',\n })}\n />\n <AxisBottom\n top={innerHeight}\n scale={xScale}\n tickStroke=\"#666\"\n stroke=\"#666\"\n tickLabelProps={() => ({\n fill: '#666',\n fontSize: 12,\n textAnchor: 'middle',\n })}\n />\n {simulatedNodes.map((node, i) => (\n <Circle\n key={i}\n cx={node.x || 0}\n cy={node.y || 0}\n r={node.radius}\n fill={color}\n opacity={0.8}\n stroke={color}\n strokeWidth={1}\n onMouseOver={(e) => handleMouseOver(e, node)}\n style={{ cursor: 'pointer' }}\n />\n ))}\n </Group>\n </svg>\n {tooltipOpen && tooltipData && tooltipLeft !== null && tooltipLeft !== undefined && tooltipTop !== null && tooltipTop !== undefined && (\n <TooltipWithBounds\n left={tooltipLeft}\n top={tooltipTop}\n style={{\n ...defaultStyles,\n backgroundColor: 'white',\n border: '1px solid #e0e0e0',\n borderRadius: '4px',\n padding: '8px 12px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.15)',\n fontSize: '12px',\n position: 'absolute',\n zIndex: 1000,\n pointerEvents: 'none',\n }}\n >\n <div>\n <div style={{ marginBottom: '4px', fontWeight: 600 }}>\n {groupBy}: {tooltipData.group}\n </div>\n <div>\n {valueKey}: {tooltipData.value.toLocaleString()}\n </div>\n </div>\n </TooltipWithBounds>\n )}\n </div>\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} {...(barDataKeys.length > 1 && { barGap: 0 })}>\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 case 'scatter': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n const scatterData = transformDataForScatter(safeData, config.xAxis, config.yAxis, safeDataKeys);\n \n if (scatterData.length === 0) {\n return renderNoDataFallback();\n }\n\n const colors = safeDataKeys.length > 0 \n ? safeDataKeys.map(({ color }: { color: string }) => color ?? '#2A44D4')\n : ['#2A44D4'];\n \n return (\n <ScatterChart data={scatterData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis \n type=\"number\" \n dataKey={config.xAxis} \n name={config.xAxis || 'X Axis'}\n domain={['auto', 'auto']}\n />\n <YAxis \n type=\"number\" \n dataKey={config.yAxis} \n name={config.yAxis || 'Y Axis'}\n domain={['auto', 'auto']}\n />\n <ChartTooltip cursor={{ strokeDasharray: '3 3' }} content={<ChartTooltipContent />} />\n {safeDataKeys.length > 0 ? (\n safeDataKeys.map(({ key, name, color }: { key: string; name: string; color: string }, index: number) => (\n <Scatter\n key={key}\n name={name || key}\n dataKey={key || config.yAxis}\n fill={color ?? colors[index % colors.length]}\n />\n ))\n ) : (\n <Scatter\n name=\"Data\"\n dataKey={config.yAxis}\n fill={colors[0]}\n />\n )}\n <Legend align=\"left\" />\n </ScatterChart>\n );\n }\n\n case 'histogram': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n const valueKey = safeDataKeys.length > 0 ? safeDataKeys[0].key : config.xAxis;\n const bins = config.bins || 10;\n const binnedData = binDataForHistogram(safeData, valueKey, bins);\n \n if (binnedData.length === 0) {\n return renderNoDataFallback();\n }\n\n const color = safeDataKeys.length > 0 ? safeDataKeys[0].color : '#2A44D4';\n \n return (\n <BarChart data={binnedData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis \n dataKey=\"bin\" \n angle={-45}\n textAnchor=\"end\"\n height={80}\n />\n <YAxis />\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n <Bar dataKey=\"frequency\" fill={color} radius={2}>\n {binnedData.map((entry, index) => (\n <Cell key={`cell-${index}`} fill={color} />\n ))}\n </Bar>\n <Legend align=\"left\" />\n </BarChart>\n );\n }\n\n case 'beeswarm': {\n const groupBy = config.groupBy || config.xAxis;\n const valueKey = config.valueKey || (config.dataKeys && config.dataKeys[0]?.key) || 'value';\n const { nodes, groups } = transformDataForBeeswarm(safeData, groupBy, valueKey);\n \n if (nodes.length === 0 || groups.length === 0) {\n return renderNoDataFallback();\n }\n\n const color = config.dataKeys && config.dataKeys[0]?.color ? config.dataKeys[0].color : '#2A44D4';\n \n return (\n <BeeswarmChart\n data={nodes}\n groups={groups}\n color={color}\n groupBy={groupBy}\n valueKey={valueKey}\n />\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 // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\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 newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\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 || 0);\n }\n };\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContainerWidth(entry.contentRect.width || 0);\n }\n });\n\n updateContainerWidth();\n\n const timeoutId = setTimeout(updateContainerWidth, 50);\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n window.addEventListener('resize', updateContainerWidth);\n\n return () => {\n clearTimeout(timeoutId);\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateContainerWidth);\n };\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 safeChartData.forEach((data, i) => {\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 totalDataPoints = 0;\n\n if (chartType === 'bar' || chartType === 'line' || chartType === 'scatter' || chartType === 'histogram' || chartType === 'beeswarm') {\n const safeChartData = Array.isArray(chartData) ? chartData : [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n if (chartType === 'bar') {\n totalDataPoints = safeChartData.length * Math.max(1, safeDataKeys.length);\n } else if (chartType === 'line') {\n totalDataPoints = safeChartData.length;\n } else if (chartType === 'scatter' || chartType === 'histogram' || chartType === 'beeswarm') {\n totalDataPoints = safeChartData.length;\n }\n }\n\n const getScrollableWidth = () => {\n if (chartType === 'line') {\n return totalDataPoints * 20;\n }\n\n if (chartType === 'bar') {\n return (\n totalDataPoints * 20 +\n (Array.isArray(config.dataKeys) ? config.dataKeys.length : 0) *\n 8 *\n (Array.isArray(chartData) ? chartData.length : 0) +\n (Array.isArray(chartData) ? chartData.length : 0) * 15\n );\n }\n\n if (chartType === 'scatter' || chartType === 'histogram' || chartType === 'beeswarm') {\n return 800;\n }\n\n return 800;\n };\n\n const scrollWidth = getScrollableWidth();\n const shouldScroll =\n (chartType === 'bar' || chartType === 'line') &&\n totalDataPoints > 15 &&\n scrollWidth > containerWidth;\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 ChartWrapper = ({ children }: { children: React.ReactNode }) => {\n if (shouldScroll) {\n return (\n <div className=\"w-full h-[250px] overflow-x-auto\">\n <div style={{ minWidth: `${scrollWidth}px`, height: '250px' }}>{children}</div>\n </div>\n );\n }\n\n return <div className=\"w-full h-[250px]\">{children}</div>;\n };\n\n\n const isBeeswarmChart = chartType === 'beeswarm';\n \n const chartUi = isLoading ? (\n <ChartLoader />\n ) : hasError || hasMissing || !chartData ? (\n renderNoDataFallback()\n ) : isBeeswarmChart ? (\n <ChartWrapper>\n <ChartContainer {...rest} config={config} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, config)}\n </ChartContainer>\n </ChartWrapper>\n ) : (\n <ChartWrapper>\n <ResponsiveContainer width=\"100%\" height={250}>\n <ChartContainer {...rest} config={config} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, config)}\n </ChartContainer>\n </ResponsiveContainer>\n </ChartWrapper>\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 ref={containerRef} data-slot=\"bodyContent\" className=\"px-6\">\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 // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\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 const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\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 setAttributes({\n ...gjsModel.get('attributes'),\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\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 || attributes.loading}\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 // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\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 setAttributes({\n ...gjsModel.get('attributes'),\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n const [isEditing, setIsEditing] = useState(false);\n const [isEditingHeading, setIsEditingHeading] = useState(false);\n const editRef = useRef<HTMLDivElement>(null);\n const headingEditRef = useRef<HTMLDivElement>(null);\n\n const startEditing = () => {\n setIsEditing(true);\n setTimeout(() => {\n setupEditor();\n }, 0);\n };\n\n const startEditingHeading = () => {\n setIsEditingHeading(true);\n setTimeout(() => {\n setupHeadingEditor();\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 const setupHeadingEditor = () => {\n if (!headingEditRef.current) {\n return;\n }\n\n const editor = headingEditRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryHeading || 'Insights';\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 saveHeadingChanges = () => {\n if (!headingEditRef.current) {\n return;\n }\n\n const content = headingEditRef.current.innerText || 'Insights';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryHeading: content,\n }));\n setIsEditingHeading(false);\n headingEditRef.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 =\n (attributes.loading && !hasError && !hasMissing) || attributes.interactionApiInProgress;\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\">{allData.summaryHeading || '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\">{allData.summaryHeading || '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 {isEditingHeading ? (\n <div\n ref={headingEditRef}\n contentEditable\n onBlur={saveHeadingChanges}\n data-slot=\"summaryHeading\"\n className=\"text-xl font-semibold text-left\"\n suppressContentEditableWarning={true}\n />\n ) : (\n <h3\n className=\"text-xl font-semibold text-left\"\n onClick={startEditingHeading}\n data-slot=\"summaryHeading\"\n >\n {allData.summaryHeading || 'Insights'}\n </h3>\n )}\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":"86CAAA,sCACA,sDACA,+BACA,yDACA,+BACA,uDACA,MAAO,CAAAA,MAAM,KAAM,WAAW,CAC9B,MAAO,CAAAC,KAAK,EAAIC,SAAS,CAAEC,QAAQ,CAAEC,OAAO,CAAOC,MAAM,KAAQ,OAAO,CACxE,OAASC,oBAAoB,KAAQ,SAAS,CAC9C,OACEC,WAAW,CACXC,YAAY,CACZC,UAAU,CACVC,YAAY,CACZC,WAAW,CACXC,GAAG,CACHC,MAAM,KACD,cAAc,CACrB,OAASC,gBAAgB,KAAQ,sBAAsB,CACvD,OAASC,kBAAkB,KAAQ,kCAAkC,CAErE,OAASC,KAAK,KAAQ,+BAA+B,CAErD,MAAO,CAAAC,QAAQ,KAAM,iBAAiB,CAEtC,OACEC,GAAG,CACHC,QAAQ,CACRC,aAAa,CACbC,MAAM,CACNC,IAAI,CACJC,SAAS,CACTC,GAAG,CACHC,QAAQ,CACRC,mBAAmB,CACnBC,OAAO,CACPC,YAAY,CACZC,KAAK,CACLC,KAAK,CACLC,IAAI,KACC,cAAc,CAErB;AACA,MAAO,GAAK,CAAAC,OAAO,KAAM,4BAA4B,CAErD,OAASC,KAAK,KAAQ,aAAa,CACnC,OAASC,SAAS,CAAEC,WAAW,KAAQ,aAAa,CACpD,OAASC,UAAU,CAAEC,QAAQ,KAAQ,YAAY,CACjD,OAASC,QAAQ,KAAQ,YAAY,CACrC,OAASC,MAAM,KAAQ,aAAa,CACpC,OAASC,UAAU,CAAEC,iBAAiB,CAAEC,aAAa,KAAQ,eAAe,CAC5E,OAASC,eAAe,CAAEC,MAAM,CAAEC,MAAM,CAAEC,YAAY,KAAQ,UAAU,CAExE,OAASC,aAAa,KAAQ,mCAAmC,CACjE,OACEC,IAAI,CACJC,WAAW,CACXC,eAAe,CACfC,UAAU,CACVC,UAAU,CACVC,SAAS,KACJ,iCAAiC,CACxC,OACEC,cAAc,CACdC,YAAY,CACZC,mBAAmB,KACd,kCAAkC,CACzC,OAASC,YAAY,KAAQ,mCAAmC,CAChE,OAASC,YAAY,KAAQ,mCAAmC,CAChE,OAASC,UAAU,CAAEC,WAAW,CAAEC,cAAc,KAAQ,qCAAqC,CAE7F,OAASC,IAAI,CAAEC,WAAW,CAAEC,QAAQ,CAAEC,WAAW,KAAQ,iCAAiC,CAE1F,OAASC,EAAE,KAAQ,oBAAoB,CACvC,OAASC,+BAA+B,KAAQ,eAAe,CAC/D,OAASC,SAAS,KAAQ,cAAc,CACxC,OAASC,gBAAgB,KAAQ,0CAA0C,CAE3E;AACA;AACA;AAAA,OAAAC,GAAA,IAAAC,IAAA,CAAAC,IAAA,IAAAC,KAAA,yBACAzC,OAAO,CAAC0C,SAAS,CAAG,SAClBC,EAAe,CAIZ,CACH,GAAM,CAAAC,IAAI,CAAGD,EAAE,CAACE,aAAa,CAACC,eAAe,CAC7C,GAAI,CAAAC,GAAG,CAAG,CAAEC,GAAG,CAAE,CAAC,CAAEC,IAAI,CAAE,CAAE,CAAC,CAE7B,GAAI,MAAO,CAAAN,EAAE,CAACO,qBAAqB,GAAK,WAAW,CAAE,CACnDH,GAAG,CAAGJ,EAAE,CAACO,qBAAqB,CAAC,CACjC,CAEA,GAAM,CAAAC,MAAM,CAAGC,QAAQ,CAACC,aAAa,CAAC,YAAY,CAAC,CACnD,GAAM,CAAAC,YAAY,CAAIH,MAAM,cAANA,MAAM,CAAUI,aAAa,CAEnD,MAAO,CACLP,GAAG,CAAED,GAAG,CAACC,GAAG,CAAGM,YAAY,CAACE,WAAW,CAAGZ,IAAI,CAACa,SAAS,CACxDR,IAAI,CAAEF,GAAG,CAACE,IAAI,CAAGK,YAAY,CAACI,WAAW,CAAGd,IAAI,CAACe,UACnD,CACF,CAAC,CAED,GAAM,CAAAC,UAAU,CAAG,CACjB,CAAC5E,KAAK,CAAC6E,MAAM,CAACC,QAAQ,CAAE9E,KAAK,CAAC6E,MAAM,CAACE,OAAO,CAAC,CAC7C,CAAC/E,KAAK,CAAC6E,MAAM,CAACG,WAAW,CAAEhF,KAAK,CAAC6E,MAAM,CAACI,UAAU,CAAC,CACnD,CAACjF,KAAK,CAAC6E,MAAM,CAACK,kBAAkB,CAAE,SAAS,CAAC,CAC5C,CAAClF,KAAK,CAAC6E,MAAM,CAACM,eAAe,CAAE,SAAS,CAAC,CAC1C,CAED,GAAM,CAAAC,OAAoC,CAAG,CAC3C3F,UAAU,cAAE8D,IAAA,CAAC9D,UAAU,GAAE,CAAC,CAC1BD,YAAY,cAAE+D,IAAA,CAAC/D,YAAY,GAAE,CAAC,CAC9BE,YAAY,cAAE6D,IAAA,CAAC7D,YAAY,GAAE,CAAC,CAC9B2F,SAAS,cAAE9B,IAAA,CAAC5D,WAAW,GAAE,CAAC,CAC1B2F,KAAK,cAAE/B,IAAA,CAAC3D,GAAG,GAAE,CAAC,CACd2F,KAAK,cAAEhC,IAAA,CAAC1D,MAAM,GAAE,CAClB,CAAC,CAED,QAAS,CAAA2F,iBAAiBA,CAACC,UAAkB,CAAsB,CACjE,GAAI,CAACA,UAAU,CAAE,CACf,MAAO,KACT,CAEA,GAAIL,OAAO,CAACK,UAAU,CAAC,CAAE,CACvB,MAAO,CAAAL,OAAO,CAACK,UAAU,CAC3B,CAEA,GAAM,CAAAC,eAAe,CAAGD,UAAU,CAACE,WAAW,CAAC,CAAC,CAChD,GAAM,CAAAC,WAAW,CAAGC,MAAM,CAACC,IAAI,CAACV,OAAO,CAAC,CAACW,IAAI,CAAC,SAACC,GAAG,QAAK,CAAAA,GAAG,CAACL,WAAW,CAAC,CAAC,GAAKD,eAAe,EAAC,CAE7F,GAAIE,WAAW,CAAE,CACf,MAAO,CAAAR,OAAO,CAACQ,WAAW,CAC5B,CAEA,MAAO,KACT,CAEA,QAAS,CAAAK,UAAUA,CAACC,CAAS,CAAE,CAC7B,GAAM,CAAArB,MAAuB,CAAG,EAAE,CAClC,GAAM,CAAAsB,cAAc,CAAGC,KAAK,CAACC,OAAO,CAACzB,UAAU,CAAC,CAAGA,UAAU,CAAG,EAAE,CAElE,QAAA0B,SAAA,CAAAC,+BAAA,CAAwBJ,cAAc,EAAAK,KAAA,GAAAA,KAAA,CAAAF,SAAA,IAAAG,IAAA,EAAE,IAA7B,CAAAC,SAAS,CAAAF,KAAA,CAAAG,KAAA,CAClB;AACA9B,MAAM,CAAC+B,IAAI,CAAC5H,MAAM,CAAC6H,KAAK,CAACH,SAAS,CAAC,CAACI,IAAI,CAAC,KAAK,CAAC,CAACjC,MAAM,CAACqB,CAAC,CAAC,CAC3D,CAEA,QAAS,CAAAa,WAAWA,CAACC,QAAuB,CAAE,CAC5C,GAAI,CAAAC,KAAoB,CAAG,IAAI,CAE/B,EAAG,CACD,GAAM,CAAAC,IAAI,CAAGrC,MAAM,CAACsC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,CAAGxC,MAAM,CAACyC,MAAM,CAAC,CAAC,CAC9D,GAAM,CAAAC,kBAAkB,CAAGJ,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,CAAGH,IAAI,CAACI,MAAM,CAAC,CAClEL,KAAK,CAAGC,IAAI,CAACK,kBAAkB,CACjC,CAAC,MAAQP,QAAQ,CAACQ,QAAQ,CAACP,KAAK,CAAC,EAEjC,MAAO,CAAAA,KACT,CAEA,GAAM,CAAAQ,cAA6B,CAAG,EAAE,CAExC,IAAK,GAAI,CAAAC,CAAC,CAAG,CAAC,CAAEA,CAAC,CAAGxB,CAAC,CAAEwB,CAAC,EAAE,CAAE,CAC1BD,cAAc,CAACb,IAAI,CAACG,WAAW,CAACU,cAAc,CAAC,CACjD,CAEA,MAAO,CAAAA,cACT,CAEA,0BACA,MAAO,SAAS,CAAAE,gBAAgBA,CAACC,KAAU,CAAe,CACxD,GAAQ,CAAAC,QAAQ,CAAcD,KAAK,CAA3BC,QAAQ,CAAKC,IAAI,CAAAC,6BAAA,CAAKH,KAAK,CAAAI,SAAA,EAEnC;AACA,GAAM,CAAAC,WAAW,CAAG7I,OAAO,CAAC,iBAAM,CAAAW,kBAAkB,CAAC6H,KAAK,CAAC,EAAE,EAAE,CAAC,CAChE,IAAAM,SAAA,CAA8B/I,QAAQ,CAAC8I,WAAW,CAAC,CAA5CE,OAAO,CAAAD,SAAA,IAAEE,UAAU,CAAAF,SAAA,IAE1B,IAAAG,qBAAA,CAIIF,OAAO,CAHTG,aAAa,CAAbA,aAAa,CAAAD,qBAAA,UAAG,2BAA2B,CAAAA,qBAAA,CAC3CE,IAAI,CAEFJ,OAAO,CAFTI,IAAI,CAAAC,oBAAA,CAEFL,OAAO,CADTM,WAAW,CAAXA,WAAW,CAAAD,oBAAA,UAAG,sCAAsC,CAAAA,oBAAA,CAGtD,IAAAE,UAAA,CAAoCvJ,QAAQ,CAAAwJ,QAAA,IACvCd,QAAQ,CAACe,GAAG,CAAC,YAAY,CAAC,CAC9B,CAAC,CAFKC,UAAU,CAAAH,UAAA,IAAEI,aAAa,CAAAJ,UAAA,IAIhCxJ,SAAS,CAAC,UAAM,CACd,GAAM,CAAA6J,iBAAiB,CAAG,QAApB,CAAAA,iBAAiBA,CAAA,CAAS,CAC9B,GAAM,CAAAC,iBAAiB,CAAGnB,QAAQ,CAACe,GAAG,CAAC,gBAAgB,CAAC,CACxD,GAAM,CAAAK,aAAa,CAAGlJ,kBAAkB,CAACiJ,iBAAiB,CAAC,CAE3DZ,UAAU,CAAC,SAACc,QAAa,SAAAP,QAAA,IACpBO,QAAQ,CACRD,aAAa,EAChB,CACJ,CAAC,CAEDpB,QAAQ,CAACsB,EAAE,CAAC,uBAAuB,CAAEJ,iBAAiB,CAAC,CAEvD,MAAO,WAAM,CACXlB,QAAQ,CAACuB,GAAG,CAAC,uBAAuB,CAAEL,iBAAiB,CACzD,CACF,CAAC,CAAE,CAAClB,QAAQ,CAAC,CAAC,CAEd3I,SAAS,CAAC,UAAM,CACd2I,QAAQ,CAACsB,EAAE,CAAC,mBAAmB,CAAE,UAAM,CACrCL,aAAa,CAAAH,QAAA,IACRd,QAAQ,CAACe,GAAG,CAAC,YAAY,CAAC,CAC9B,CACH,CAAC,CACH,CAAC,CAAE,EAAE,CAAC,CAEN,GAAM,CAAAS,cAAc,CAAG,8DAA8D,CAErF,mBACE9F,IAAA,CAACvB,IAAI,CAAA2G,QAAA,EACHW,SAAS,CAAKD,cAAc,YAAY,CACxCE,KAAK,CAAE,CAAEC,eAAe,CAAE,SAAU,CAAE,CACtCC,UAAU,CAAE,KAAM,CAClBC,eAAe,CAAE,KAAM,EACnB5B,IAAI,EAAA6B,QAAA,cAERpG,IAAA,CAACtB,WAAW,EAACqH,SAAS,CAAC,KAAK,CAACG,UAAU,CAAE,KAAM,CAACC,eAAe,CAAE,KAAM,CAAAC,QAAA,cACrEpG,IAAA,QAAK+F,SAAS,CAAC,WAAW,CAAAK,QAAA,cACxBlG,KAAA,QAAK6F,SAAS,CAAC,2BAA2B,CAAAK,QAAA,eACxClG,KAAA,QAAK6F,SAAS,CAAC,0CAA0C,CAAAK,QAAA,eACvDpG,IAAA,QAAK+F,SAAS,CAAC,uBAAuB,CAAAK,QAAA,CAAErB,aAAa,CAAM,CAAC,cAC5D/E,IAAA,QAAK+F,SAAS,CAAC,iCAAiC,CAAC,cAAY,MAAM,CAAAK,QAAA,CAChEnE,iBAAiB,CAAC+C,IAAI,CAAC,CACrB,CAAC,EACH,CAAC,cACNhF,IAAA,QAAK+F,SAAS,CAAC,aAAa,CAAAK,QAAA,CACzBd,UAAU,CAACe,KAAK,EACjBzB,OAAO,CAACyB,KAAK,EACbf,UAAU,CAACgB,SAAS,EACpB1B,OAAO,CAAC0B,SAAS,EACjB,CAACpB,WAAW,cACVhF,KAAA,SAAM6F,SAAS,CAAC,sCAAsC,CAAAK,QAAA,eACpDpG,IAAA,CAAChE,WAAW,EAAC+J,SAAS,CAAC,4BAA4B,CAAE,CAAC,cACtD/F,IAAA,MAAG+F,SAAS,CAAC,4CAA4C,CAAAK,QAAA,CAAC,qCAE1D,CAAG,CAAC,EACA,CAAC,cAEPpG,IAAA,QAAK+F,SAAS,CAAC,2BAA2B,CAAAK,QAAA,CAAElB,WAAW,CAAM,CAC9D,CACE,CAAC,EACH,CAAC,CACH,CAAC,CACK,CAAC,EACV,CAEV,CAEA,MAAO,SAAS,CAAAqB,UAAUA,CAAClC,KAAU,CAAe,KAAAmC,iBAAA,CAAAC,qBAAA,CAClD,IAAAC,iBAAA,CAKIrC,KAAK,CAJP6B,UAAU,CAAVA,UAAU,CAAAQ,iBAAA,UAAG,KAAK,CAAAA,iBAAA,CAClBpC,QAAQ,CAGND,KAAK,CAHPC,QAAQ,CAAAqC,qBAAA,CAGNtC,KAAK,CAFPuC,kBAAkB,CAAlBA,kBAAkB,CAAAD,qBAAA,UAAG,iBAAM,CAAAE,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAAH,qBAAA,CAC3CpC,IAAI,CAAAC,6BAAA,CACLH,KAAK,CAAA0C,UAAA,EAET;AACA,GAAM,CAAArC,WAAW,CAAG7I,OAAO,CAAC,iBAAM,CAAAW,kBAAkB,CAAC6H,KAAK,CAAC,EAAE,EAAE,CAAC,CAChE,IAAA2C,UAAA,CAA8BpL,QAAQ,CAAC8I,WAAW,CAAC,CAA5CE,OAAO,CAAAoC,UAAA,IAAEnC,UAAU,CAAAmC,UAAA,IAE1B,GACE,CAAAjC,aAAa,CAWXH,OAAO,CAXTG,aAAa,CACbkC,iBAAiB,CAUfrC,OAAO,CAVTqC,iBAAiB,CACjB/B,WAAW,CASTN,OAAO,CATTM,WAAW,CACXgC,aAAa,CAQXtC,OAAO,CARTsC,aAAa,CACbC,WAAW,CAOTvC,OAAO,CAPTuC,WAAW,CACXC,UAAU,CAMRxC,OAAO,CANTwC,UAAU,CACVC,eAAe,CAKbzC,OAAO,CALTyC,eAAe,CACfC,oBAAoB,CAIlB1C,OAAO,CAJT0C,oBAAoB,CACTC,aAAa,CAGtB3C,OAAO,CAHTmB,SAAS,CACFyB,SAAS,CAEd5C,OAAO,CAFTyB,KAAK,CACMoB,aAAa,CACtB7C,OAAO,CADT0B,SAAS,CAGX,QAAS,CAAAoB,UAAUA,CAACtE,KAAc,CAAU,CAC1C,GAAIA,KAAK,GAAK,IAAI,CAAE,CAClB,MAAO,EACT,CAEA,MAAO,OAAO,CAAAA,KAAK,GAAK,QAAQ,CAAGA,KAAK,CAAGuE,IAAI,CAACC,SAAS,CAACxE,KAAK,CACjE,CAEA,GAAM,CAAAyE,iBAAiB,CAAGH,UAAU,CAAC3C,aAAa,CAAC,CACnD,GAAM,CAAA+C,qBAAqB,CAAGJ,UAAU,CAACT,iBAAiB,CAAC,CAC3D,GAAM,CAAAc,eAAe,CAAGL,UAAU,CAACxC,WAAW,CAAC,CAC/C,GAAM,CAAA8C,iBAAiB,CAAGN,UAAU,CAACR,aAAa,CAAC,CACnD,GAAM,CAAAe,mBAAmB,CAAGP,UAAU,CAACL,eAAe,CAAC,CAEvD,IAAAa,UAAA,CAAgDtM,QAAQ,CAACoM,iBAAiB,CAACjE,MAAM,CAAG,CAAC,CAAC,CAA/EoE,gBAAgB,CAAAD,UAAA,IAAEE,mBAAmB,CAAAF,UAAA,IAC5C,IAAAG,UAAA,CAAoCzM,QAAQ,CAAAwJ,QAAA,IACvCd,QAAQ,CAACe,GAAG,CAAC,YAAY,CAAC,CAC9B,CAAC,CAFKC,UAAU,CAAA+C,UAAA,IAAE9C,aAAa,CAAA8C,UAAA,IAIhC1M,SAAS,CAAC,UAAM,CACd,GAAM,CAAA6J,iBAAiB,CAAG,QAApB,CAAAA,iBAAiBA,CAAA,CAAS,CAC9B,GAAM,CAAAC,iBAAiB,CAAGnB,QAAQ,CAACe,GAAG,CAAC,gBAAgB,CAAC,CACxD,GAAM,CAAAK,aAAa,CAAGlJ,kBAAkB,CAACiJ,iBAAiB,CAAC,CAE3DZ,UAAU,CAAC,SAACc,QAAa,SAAAP,QAAA,IACpBO,QAAQ,CACRD,aAAa,EAChB,CACJ,CAAC,CAEDpB,QAAQ,CAACsB,EAAE,CAAC,uBAAuB,CAAEJ,iBAAiB,CAAC,CAEvD,MAAO,WAAM,CACXlB,QAAQ,CAACuB,GAAG,CAAC,uBAAuB,CAAEL,iBAAiB,CACzD,CACF,CAAC,CAAE,CAAClB,QAAQ,CAAC,CAAC,CAEd3I,SAAS,CAAC,UAAM,CACd2I,QAAQ,CAACsB,EAAE,CAAC,mBAAmB,CAAE,UAAM,CACrCL,aAAa,CAAAH,QAAA,IACRd,QAAQ,CAACe,GAAG,CAAC,YAAY,CAAC,CAC9B,CACH,CAAC,CACH,CAAC,CAAE,EAAE,CAAC,CAEN1J,SAAS,CAAC,UAAM,CACdyM,mBAAmB,CAACJ,iBAAiB,CAACjE,MAAM,CAAG,CAAC,CAClD,CAAC,CAAE,CAACiE,iBAAiB,CAAC,CAAC,CAEvB,GAAM,CAAAlC,cAAc,CAClB,4EAA4E,CAC9E,GAAM,CAAAwC,oBAAoB,CAAGH,gBAAgB,CACzC,4CAA4C,CAC5C,SAAS,CACb,GAAM,CAAAI,6BAA6B,CAAG,SAAS,CAE/C,GAAM,CAAAC,mBAAmB,CAAGjB,aAAa,CAAG5H,EAAE,CAACmG,cAAc,CAAEyB,aAAa,CAAC,CAAGzB,cAAc,CAC9F,GAAM,CAAA2C,qBAAqB,CAAGtB,WAAW,CACrCxH,EAAE,CAAC2I,oBAAoB,CAAEnB,WAAW,CAAC,CACrCmB,oBAAoB,CACxB,GAAM,CAAAI,8BAA8B,CAAGpB,oBAAoB,CACvD3H,EAAE,CAAC4I,6BAA6B,CAAEjB,oBAAoB,CAAC,CACvDiB,6BAA6B,CAEjC,GAAM,CAAAI,QAAQ,CAAGC,OAAO,EAAApC,iBAAA,CAAClB,UAAU,cAAVA,UAAU,CAAEe,KAAK,QAAAG,iBAAA,CAAIgB,SAAS,CAAC,CACxD,GAAM,CAAAqB,UAAU,CAAGD,OAAO,EAAAnC,qBAAA,CAACnB,UAAU,cAAVA,UAAU,CAAEgB,SAAS,QAAAG,qBAAA,CAAIgB,aAAa,CAAC,CAClE,GAAM,CAAAqB,SAAS,CAAGF,OAAO,CACvB,CAAC,CAAAtD,UAAU,cAAVA,UAAU,CAAEyD,wBAAwB,IAAIzD,UAAU,cAAVA,UAAU,CAAE0D,OAAO,IAAK,CAACL,QAAQ,EAAI,CAACE,UACjF,CAAC,CAED,GAAM,CAAAI,cAAc,CAClB,MAAO,CAAA7B,UAAU,GAAK,QAAQ,CAC1BA,UAAU,CACVA,UAAU,EAAI,MAAO,CAAAA,UAAU,GAAK,QAAQ,EAAI,MAAM,EAAK,CAAAA,UAAkB,CAC7E8B,MAAM,CAAE9B,UAAU,CAASpC,IAAI,CAAC,CAChC,EAAE,CAER,QAAS,CAAAmE,cAAcA,CAAA,CAAG,CACxB,GAAIL,SAAS,CAAE,CACb,mBACE9I,IAAA,CAACtB,WAAW,EAAA0H,QAAA,cACVpG,IAAA,CAACZ,UAAU,GAAE,CAAC,CACH,CAEjB,CAEA,GAAM,CAAAgK,SAAS,CAAGT,QAAQ,EAAIE,UAAU,EAAI,CAACd,eAAe,CAE5D,QAAS,CAAAsB,iBAAiBA,CAACC,KAAsC,CAAE,CACjE,GAAM,CAAAC,MAAM,CAAGD,KAAK,CAACC,MAAwB,CAC7C,GAAM,CAAAC,OAAO,CAAGD,MAAM,CAACE,WAAW,EAAI,EAAE,CACxC,GAAM,CAAAC,UAAU,CAAGF,OAAO,CAACG,IAAI,CAAC,CAAC,CAAC5F,MAAM,CAAG,CAAC,CAE5CqE,mBAAmB,CAACsB,UAAU,CAAC,CAE/B,GAAI,CAACA,UAAU,CAAE,CACf,GAAM,CAAAE,YAAY,CAAGtF,QAAQ,CAACe,GAAG,CAAC,gBAAgB,CAAC,CACnDf,QAAQ,CAACuF,GAAG,CAAC,gBAAgB,CAAAzE,QAAA,IACxBwE,YAAY,EACf1C,aAAa,CAAE,IAAI,CACnBE,UAAU,CAAE,IAAI,CAChBD,WAAW,CAAE,IAAI,CACjB2C,SAAS,CAAE,IAAI,EAChB,CACH,CACF,CAEA,mBACE5J,KAAA,CAACxE,KAAK,CAACqO,QAAQ,EAAA3D,QAAA,eACbpG,IAAA,CAACnB,UAAU,EAAAuH,QAAA,cACTpG,IAAA,QAAK+F,SAAS,CAAC,kCAAkC,CAAAK,QAAA,cAC/ClG,KAAA,QAAK6F,SAAS,CAAC,QAAQ,CAAAK,QAAA,eACrBpG,IAAA,CAAClB,SAAS,EAAC,YAAU,eAAe,CAACqH,eAAe,CAAED,UAAW,CAACH,SAAS,CAAC,SAAS,CAAAK,QAAA,CAClFyB,iBAAiB,CACT,CAAC,cACZ7H,IAAA,CAACrB,eAAe,EACd,YAAU,mBAAmB,CAC7BwH,eAAe,CAAED,UAAW,CAC5BH,SAAS,CAAC,SAAS,CAAAK,QAAA,CAElB0B,qBAAqB,CACP,CAAC,EACf,CAAC,CACH,CAAC,CACI,CAAC,CAEZsB,SAAS,cACRlJ,KAAA,SAAM6F,SAAS,CAAC,sCAAsC,CAAAK,QAAA,eACpDpG,IAAA,CAAChE,WAAW,EAAC+J,SAAS,CAAC,4BAA4B,CAAE,CAAC,cACtD/F,IAAA,MAAG+F,SAAS,CAAC,4CAA4C,CAAAK,QAAA,CAAC,qCAE1D,CAAG,CAAC,EACA,CAAC,cAEPlG,KAAA,CAACxB,WAAW,EAAC,YAAU,aAAa,CAACyH,eAAe,CAAE,KAAM,CAACJ,SAAS,CAAC,WAAW,CAAAK,QAAA,eAChFpG,IAAA,QAAK+F,SAAS,CAAC,iCAAiC,CAAAK,QAAA,CAAE2B,eAAe,CAAM,CAAC,CACvEE,mBAAmB,eAClBjI,IAAA,QAAK+F,SAAS,CAAE2C,8BAA+B,CAAC1C,KAAK,CAAE,CAAEtC,KAAK,CAAE,SAAU,CAAE,CAAA0C,QAAA,CACzE6B,mBAAmB,CACjB,CACN,EACU,CACd,cAED/H,KAAA,CAACtB,UAAU,EACP,YAAU,eAAe,CACzBuH,eAAe,CAAED,UAAW,CAC5BH,SAAS,CAAE0C,qBAAsB,CACjCuB,OAAO,CAAEX,iBAAkB,CAAAjD,QAAA,EAE5B,CAAC6C,cAAc,EAAI,EAAE,EAAEU,IAAI,CAAC,CAAC,cAC5B3J,IAAA,SAAM+F,SAAS,CAAC,MAAM,CAAC,cAAY,MAAM,CAAAK,QAAA,CACtC6C,cAAc,CACX,CAAC,CACL,IAAI,CACPjB,iBAAiB,EAAI,EAAE,EACd,CAAC,EACC,CAEpB,CAEA,mBACE9H,KAAA,CAACzB,IAAI,CAAA2G,QAAA,IAAKb,IAAI,EAAEwB,SAAS,CAAKyC,mBAAmB,YAAY,CAAApC,QAAA,EAC1D+C,cAAc,CAAC,CAAC,cACjBnJ,IAAA,CAACzD,gBAAgB,EACf0N,WAAW,CAAE3F,QAAQ,CAACe,GAAG,CAAC,IAAI,CAAE,CAChCuB,kBAAkB,CAAEA,kBAAmB,CACvCsD,QAAQ,CAAC,WAAW,CACpBC,SAAS,CAAEjE,UAAW,CACtBkE,cAAc,CAAExF,OAAQ,CACzB,CAAC,GACE,CAEV,CAGA,QAAS,CAAAyF,uBAAuBA,CAACC,IAAW,CAAEC,KAAa,CAAEC,KAAa,CAAEC,QAAe,CAAS,CAClG,GAAI,CAACH,IAAI,EAAIA,IAAI,CAACvG,MAAM,GAAK,CAAC,CAAE,CAC9B,MAAO,EACT,CAGA,GAAM,CAAA2G,WAAW,CAAGJ,IAAI,CACrBK,MAAM,CAAC,SAACC,IAAI,QAAK,CAAAA,IAAI,CAACL,KAAK,CAAC,GAAK,IAAI,EAAIK,IAAI,CAACL,KAAK,CAAC,GAAKM,SAAS,EAAID,IAAI,CAACJ,KAAK,CAAC,GAAK,IAAI,EAAII,IAAI,CAACJ,KAAK,CAAC,GAAKK,SAAS,EAAC,CACxHC,GAAG,CAAC,SAACF,IAAI,CAAK,KAAAG,OAAA,CACb,GAAM,CAAAC,MAAW,EAAAD,OAAA,IAAAA,OAAA,CACdR,KAAK,EAAGU,MAAM,CAACL,IAAI,CAACL,KAAK,CAAC,CAAC,CAAAQ,OAAA,CAC3BP,KAAK,EAAGS,MAAM,CAACL,IAAI,CAACJ,KAAK,CAAC,CAAC,CAAAO,OAAA,CAC7B,CAGD,GAAIN,QAAQ,EAAIA,QAAQ,CAAC1G,MAAM,CAAG,CAAC,CAAE,CACnC0G,QAAQ,CAACS,OAAO,CAAC,SAAAC,IAAA,CAA8B,IAA3B,CAAA1I,GAAG,CAAA0I,IAAA,CAAH1I,GAAG,CACrB,GAAImI,IAAI,CAACnI,GAAG,CAAC,GAAK,IAAI,EAAImI,IAAI,CAACnI,GAAG,CAAC,GAAKoI,SAAS,CAAE,CACjDG,MAAM,CAACvI,GAAG,CAAC,CAAGwI,MAAM,CAACL,IAAI,CAACnI,GAAG,CAAC,CAChC,CACF,CAAC,CACH,CAEA,MAAO,CAAAuI,MACT,CAAC,CAAC,CAEJ,MAAO,CAAAN,WACT,CAEA,QAAS,CAAAU,mBAAmBA,CAACd,IAAW,CAAEe,QAAgB,CAAEC,IAAI,CAAc,IAAlBA,IAAI,WAAJA,IAAI,CAAG,EAAE,CACnE,GAAI,CAAChB,IAAI,EAAIA,IAAI,CAACvG,MAAM,GAAK,CAAC,CAAE,CAC9B,MAAO,EACT,CAEA,GAAM,CAAAwH,MAAM,CAAGjB,IAAI,CAChBQ,GAAG,CAAC,SAACF,IAAI,QAAK,CAAAK,MAAM,CAACL,IAAI,CAACS,QAAQ,CAAC,CAAC,EAAC,CACrCV,MAAM,CAAC,SAACa,GAAG,QAAK,CAACC,KAAK,CAACD,GAAG,CAAC,EAAC,CAE/B,GAAID,MAAM,CAACxH,MAAM,GAAK,CAAC,CAAE,CACvB,MAAO,EACT,CAEA,GAAM,CAAA2H,GAAG,CAAG9H,IAAI,CAAC8H,GAAG,CAAAC,KAAA,CAAR/H,IAAI,CAAQ2H,MAAM,CAAC,CAC/B,GAAM,CAAAK,GAAG,CAAGhI,IAAI,CAACgI,GAAG,CAAAD,KAAA,CAAR/H,IAAI,CAAQ2H,MAAM,CAAC,CAC/B,GAAM,CAAAM,QAAQ,CAAG,CAACD,GAAG,CAAGF,GAAG,EAAIJ,IAAI,CAEnC,GAAM,CAAAQ,SAAmB,CAAG,GAAI,CAAAjJ,KAAK,CAACyI,IAAI,CAAC,CAACS,IAAI,CAAC,CAAC,CAAC,CACnD,GAAM,CAAAC,SAAmB,CAAG,EAAE,CAE9B,IAAK,GAAI,CAAA7H,CAAC,CAAG,CAAC,CAAEA,CAAC,CAAGmH,IAAI,CAAEnH,CAAC,EAAE,CAAE,CAC7B,GAAM,CAAA8H,QAAQ,CAAGP,GAAG,CAAGvH,CAAC,CAAG0H,QAAQ,CACnC,GAAM,CAAAK,MAAM,CAAGD,QAAQ,CAAGJ,QAAQ,CAClCG,SAAS,CAAC3I,IAAI,CAAI4I,QAAQ,CAACE,OAAO,CAAC,CAAC,CAAC,KAAID,MAAM,CAACC,OAAO,CAAC,CAAC,CAAG,CAC9D,CAEAZ,MAAM,CAACL,OAAO,CAAC,SAAC9H,KAAK,CAAK,CACxB,GAAI,CAAAgJ,QAAQ,CAAGxI,IAAI,CAACC,KAAK,CAAC,CAACT,KAAK,CAAGsI,GAAG,EAAIG,QAAQ,CAAC,CAEnD,GAAIO,QAAQ,EAAId,IAAI,CAAE,CACpBc,QAAQ,CAAGd,IAAI,CAAG,CACpB,CAEA,GAAIc,QAAQ,CAAG,CAAC,CAAE,CAChBA,QAAQ,CAAG,CACb,CAEAN,SAAS,CAACM,QAAQ,CAAC,EAAI,CACzB,CAAC,CAAC,CAEF,MAAO,CAAAJ,SAAS,CAAClB,GAAG,CAAC,SAACuB,KAAK,CAAEC,KAAK,QAAM,CACtCC,GAAG,CAAEF,KAAK,CACVG,SAAS,CAAEV,SAAS,CAACQ,KAAK,CAC5B,CAAC,CAAC,CACJ,CAGA,QAAS,CAAAG,wBAAwBA,CAACnC,IAAW,CAAEoC,OAAe,CAAErB,QAAgB,CAAsC,CACpH,GAAI,CAACf,IAAI,EAAIA,IAAI,CAACvG,MAAM,GAAK,CAAC,CAAE,CAC9B,MAAO,CAAE4I,KAAK,CAAE,EAAE,CAAEC,MAAM,CAAE,EAAG,CACjC,CAEA,GAAM,CAAAC,OAAoC,CAAG,CAAC,CAAC,CAE/CvC,IAAI,CAACY,OAAO,CAAC,SAACN,IAAI,CAAK,CACrB,GAAIA,IAAI,CAAC8B,OAAO,CAAC,GAAK,IAAI,EAAI9B,IAAI,CAAC8B,OAAO,CAAC,GAAK7B,SAAS,EAAID,IAAI,CAACS,QAAQ,CAAC,GAAK,IAAI,EAAIT,IAAI,CAACS,QAAQ,CAAC,GAAKR,SAAS,CAAE,CACpH,GAAM,CAAAiC,KAAK,CAAG5D,MAAM,CAAC0B,IAAI,CAAC8B,OAAO,CAAC,CAAC,CACnC,GAAM,CAAAtJ,KAAK,CAAG6H,MAAM,CAACL,IAAI,CAACS,QAAQ,CAAC,CAAC,CAEpC,GAAI,CAACI,KAAK,CAACrI,KAAK,CAAC,CAAE,CACjB,GAAI,CAACyJ,OAAO,CAACC,KAAK,CAAC,CAAE,CACnBD,OAAO,CAACC,KAAK,CAAC,CAAG,EACnB,CAEAD,OAAO,CAACC,KAAK,CAAC,CAACzJ,IAAI,CAACD,KAAK,CAC3B,CACF,CACF,CAAC,CAAC,CAEF,GAAM,CAAAwJ,MAAM,CAAGtK,MAAM,CAACC,IAAI,CAACsK,OAAO,CAAC,CAACE,IAAI,CAAC,CAAC,CAC1C,GAAM,CAAAJ,KAAY,CAAG,EAAE,CAEvBC,MAAM,CAAC1B,OAAO,CAAC,SAAC4B,KAAK,CAAEE,UAAU,CAAK,CACpC,GAAM,CAAAzB,MAAM,CAAGsB,OAAO,CAACC,KAAK,CAAC,CAE7BvB,MAAM,CAACL,OAAO,CAAC,SAAC9H,KAAK,CAAK,CACxBuJ,KAAK,CAACtJ,IAAI,CAAC,CACTyJ,KAAK,CAAEA,KAAK,CACZE,UAAU,CAAEA,UAAU,CACtB5J,KAAK,CAAEA,KAAK,CACZ6J,CAAC,CAAED,UAAU,CACbE,CAAC,CAAE9J,KAAK,CACR+J,MAAM,CAAE,CACV,CAAC,CACH,CAAC,CACH,CAAC,CAAC,CAEF,MAAO,CAAER,KAAK,CAALA,KAAK,CAAEC,MAAM,CAANA,MAAO,CACzB,CAEA,QAAS,CAAAQ,aAAaA,CAAAC,KAAA,CAA+I,IAA5I,CAAA/C,IAAI,CAAA+C,KAAA,CAAJ/C,IAAI,CAAEsC,MAAM,CAAAS,KAAA,CAANT,MAAM,CAAElJ,KAAK,CAAA2J,KAAA,CAAL3J,KAAK,CAAEgJ,OAAO,CAAAW,KAAA,CAAPX,OAAO,CAAErB,QAAQ,CAAAgC,KAAA,CAARhC,QAAQ,CAC7D,GAAM,CAAAiC,YAAY,CAAGxR,MAAM,CAAiB,IAAI,CAAC,CACjD,GAAM,CAAAyR,MAAM,CAAGzR,MAAM,CAAgB,IAAI,CAAC,CAC1C,IAAA0R,UAAA,CAAoC5R,QAAQ,CAAC,CAAE6R,KAAK,CAAE,GAAG,CAAEC,MAAM,CAAE,GAAI,CAAC,CAAC,CAAlEC,UAAU,CAAAH,UAAA,IAAEI,aAAa,CAAAJ,UAAA,IAChC,IAAAK,UAAA,CAA4CjS,QAAQ,CAAQ,EAAE,CAAC,CAAxDkS,cAAc,CAAAD,UAAA,IAAEE,iBAAiB,CAAAF,UAAA,IACxC,IAAAG,WAAA,CAOI/P,UAAU,CAAM,CAAC,CANnBgQ,WAAW,CAAAD,WAAA,CAAXC,WAAW,CACXC,WAAW,CAAAF,WAAA,CAAXE,WAAW,CACXC,UAAU,CAAAH,WAAA,CAAVG,UAAU,CACVC,WAAW,CAAAJ,WAAA,CAAXI,WAAW,CACXC,WAAW,CAAAL,WAAA,CAAXK,WAAW,CACXC,WAAW,CAAAN,WAAA,CAAXM,WAAW,CAGb3S,SAAS,CAAC,UAAM,CACd,GAAM,CAAA4S,gBAAgB,CAAG,QAAnB,CAAAA,gBAAgBA,CAAA,CAAS,CAC7B,GAAIjB,YAAY,CAACkB,OAAO,CAAE,CACxBZ,aAAa,CAAC,CACZH,KAAK,CAAEH,YAAY,CAACkB,OAAO,CAACC,WAAW,EAAI,GAAG,CAC9Cf,MAAM,CAAE,GACV,CAAC,CACH,CACF,CAAC,CAEDa,gBAAgB,CAAC,CAAC,CAElB,GAAM,CAAAG,cAAc,CAAG,GAAI,CAAAC,cAAc,CAAC,SAACC,OAAO,CAAK,CACrD,QAAAC,UAAA,CAAA7L,+BAAA,CAAoB4L,OAAO,EAAAE,MAAA,GAAAA,MAAA,CAAAD,UAAA,IAAA3L,IAAA,EAAE,IAAlB,CAAA6L,KAAK,CAAAD,MAAA,CAAA1L,KAAA,CACdwK,aAAa,CAAC,CACZH,KAAK,CAAEsB,KAAK,CAACC,WAAW,CAACvB,KAAK,EAAI,GAAG,CACrCC,MAAM,CAAE,GACV,CAAC,CACH,CACF,CAAC,CAAC,CAEF,GAAIJ,YAAY,CAACkB,OAAO,CAAE,CACxBE,cAAc,CAACO,OAAO,CAAC3B,YAAY,CAACkB,OAAO,CAC7C,CAEAU,MAAM,CAACC,gBAAgB,CAAC,QAAQ,CAAEZ,gBAAgB,CAAC,CAEnD,MAAO,WAAM,CACXG,cAAc,CAACU,UAAU,CAAC,CAAC,CAC3BF,MAAM,CAACG,mBAAmB,CAAC,QAAQ,CAAEd,gBAAgB,CACvD,CACF,CAAC,CAAE,EAAE,CAAC,CAEN5S,SAAS,CAAC,UAAM,CACd,GAAI2O,IAAI,CAACvG,MAAM,GAAK,CAAC,EAAI4J,UAAU,CAACF,KAAK,GAAK,CAAC,CAAE,CAC/C,MACF,CAEA,GAAM,CAAA6B,MAAM,CAAG,CAAE7O,GAAG,CAAE,EAAE,CAAE8O,KAAK,CAAE,EAAE,CAAEC,MAAM,CAAE,EAAE,CAAE9O,IAAI,CAAE,EAAG,CAAC,CAC3D,GAAM,CAAA+O,UAAU,CAAG9B,UAAU,CAACF,KAAK,CAAG6B,MAAM,CAAC5O,IAAI,CAAG4O,MAAM,CAACC,KAAK,CAChE,GAAM,CAAAG,WAAW,CAAG/B,UAAU,CAACD,MAAM,CAAG4B,MAAM,CAAC7O,GAAG,CAAG6O,MAAM,CAACE,MAAM,CAElE,GAAM,CAAAjE,MAAM,CAAGjB,IAAI,CAACQ,GAAG,CAAC,SAAC6E,CAAC,QAAK,CAAAA,CAAC,CAACvM,KAAK,EAAC,CACvC,GAAM,CAAAwM,QAAQ,CAAGhM,IAAI,CAAC8H,GAAG,CAAAC,KAAA,CAAR/H,IAAI,CAAQ2H,MAAM,CAAC,CACpC,GAAM,CAAAsE,QAAQ,CAAGjM,IAAI,CAACgI,GAAG,CAAAD,KAAA,CAAR/H,IAAI,CAAQ2H,MAAM,CAAC,CACpC,GAAM,CAAAuE,UAAU,CAAGD,QAAQ,CAAGD,QAAQ,CACtC,GAAM,CAAAG,OAAO,CAAGD,UAAU,CAAG,GAAG,CAEhC,GAAM,CAAAE,MAAM,CAAGrS,SAAS,CAAC,CACvBsS,MAAM,CAAErD,MAAM,CACdsD,KAAK,CAAE,CAAC,CAAC,CAAET,UAAU,CAAC,CACtBM,OAAO,CAAE,GACX,CAAC,CAAC,CAEF,GAAM,CAAAI,MAAM,CAAGvS,WAAW,CAAC,CACzBqS,MAAM,CAAE,CAACL,QAAQ,CAAGG,OAAO,CAAEF,QAAQ,CAAGE,OAAO,CAAC,CAChDG,KAAK,CAAE,CAACR,WAAW,CAAE,CAAC,CACxB,CAAC,CAAC,CAEF,GAAM,CAAAU,MAAM,CAAG,CAAC,CAChB,GAAM,CAAAC,aAAa,CAAG,IAAI,CAC1B,GAAM,CAAAC,aAAa,CAAG,CAAG,CACzB,GAAM,CAAAC,qBAAqB,CAAG,GAAG,CACjC,GAAM,CAAAC,iBAAiB,CAAG,CAAC,CAE3B,GAAM,CAAAC,MAAM,CAAG,CACbC,IAAI,CAAEN,MAAM,CACZO,IAAI,CAAEjB,WAAW,CAAGU,MAAM,CAC1BQ,IAAI,CAAE,CAAC,CACPC,IAAI,CAAEpB,UACR,CAAC,CAED,GAAM,CAAA9C,KAAK,CAAGrC,IAAI,CAACQ,GAAG,CAAC,SAAC6E,CAAC,CAAK,CAC5B,GAAM,CAAAmB,QAAQ,CAAGX,MAAM,CAACR,CAAC,CAACvM,KAAK,CAAC,CAChC,GAAM,CAAA2N,QAAQ,CAAGnN,IAAI,CAACgI,GAAG,CAAC6E,MAAM,CAACC,IAAI,CAAE9M,IAAI,CAAC8H,GAAG,CAAC+E,MAAM,CAACE,IAAI,CAAEG,QAAQ,CAAC,CAAC,CACvE,GAAM,CAAAE,YAAY,CAAG,CAAChB,MAAM,CAACL,CAAC,CAAC7C,KAAK,CAAC,EAAI,CAAC,EAAI,CAACkD,MAAM,CAACiB,SAAS,CAAC,CAAC,EAAI,CAAC,EAAI,CAAC,CAC3E,GAAM,CAAAA,SAAS,CAAGjB,MAAM,CAACiB,SAAS,CAAC,CAAC,EAAI,CAAC,CACzC,GAAM,CAAAC,SAAS,CAAGD,SAAS,CAAGZ,aAAa,CAC3C,GAAM,CAAAc,YAAY,CAAG,CAACvN,IAAI,CAACE,MAAM,CAAC,CAAC,CAAG,GAAG,EAAIoN,SAAS,CAAGZ,aAAa,CAEtE,OAAAlL,QAAA,IACKuK,CAAC,EACJqB,YAAY,CAAZA,YAAY,CACZ/D,CAAC,CAAE+D,YAAY,CAAGG,YAAY,CAC9BjE,CAAC,CAAE6D,QAAQ,CACX5D,MAAM,CAAEiD,MAAM,CACdc,SAAS,CAATA,SAAS,EAEb,CAAC,CAAC,CAEF,GAAM,CAAAE,UAAU,CAAGhT,eAAe,CAACuO,KAAK,CAAC,CACtC0E,KAAK,CAAC,GAAG,CAAEhT,MAAM,CAAC,SAACsR,CAAM,QAAK,CAAAA,CAAC,CAACqB,YAAY,EAAC,CAACM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAC7DD,KAAK,CAAC,GAAG,CAAE/S,MAAM,CAAC,SAACqR,CAAM,CAAK,CAC7B,GAAM,CAAA4B,OAAO,CAAGpB,MAAM,CAACR,CAAC,CAACvM,KAAK,CAAC,CAE/B,MAAO,CAAAQ,IAAI,CAACgI,GAAG,CAAC6E,MAAM,CAACC,IAAI,CAAE9M,IAAI,CAAC8H,GAAG,CAAC+E,MAAM,CAACE,IAAI,CAAEY,OAAO,CAAC,CAC7D,CAAC,CAAC,CAACD,QAAQ,CAAC,CAAG,CAAC,CAAC,CAChBD,KAAK,CAAC,SAAS,CAAE9S,YAAY,CAAC,CAAC,CAAC4O,MAAM,CAAC,SAACwC,CAAM,QAAK,CAAAA,CAAC,CAACxC,MAAM,CAAGqD,iBAAiB,EAAC,CAACc,QAAQ,CAAC,GAAG,CAAC,CAACE,UAAU,CAAC,CAAC,CAAC,CAAC,CAC7GC,IAAI,CAAC,CAAC,CAET,GAAM,CAAAC,aAAa,CAAG,QAAhB,CAAAA,aAAaA,CAAIC,IAAS,CAAEC,OAAO,CAAa,IAApBA,OAAO,WAAPA,OAAO,CAAG,KAAK,CAC/C,GAAM,CAAAC,QAAQ,CAAG1B,MAAM,CAACwB,IAAI,CAACvO,KAAK,CAAC,CACnCuO,IAAI,CAACzE,CAAC,CAAGtJ,IAAI,CAACgI,GAAG,CAAC6E,MAAM,CAACC,IAAI,CAAE9M,IAAI,CAAC8H,GAAG,CAAC+E,MAAM,CAACE,IAAI,CAAEkB,QAAQ,CAAC,CAAC,CAC/DF,IAAI,CAACG,EAAE,CAAG,CAAC,CAEX,GAAM,CAAAC,QAAQ,CAAGJ,IAAI,CAACX,YAAY,CAAGW,IAAI,CAACT,SAAS,CACnD,GAAM,CAAAc,QAAQ,CAAGL,IAAI,CAACX,YAAY,CAAGW,IAAI,CAACT,SAAS,CACnD,GAAM,CAAAe,eAAe,CAAGrO,IAAI,CAACgI,GAAG,CAAC6E,MAAM,CAACG,IAAI,CAAEmB,QAAQ,CAAC,CACvD,GAAM,CAAAG,eAAe,CAAGtO,IAAI,CAAC8H,GAAG,CAAC+E,MAAM,CAACI,IAAI,CAAEmB,QAAQ,CAAC,CAEvD,GAAIJ,OAAO,CAAE,CACX,GAAID,IAAI,CAAC1E,CAAC,CAAGgF,eAAe,CAAE,CAC5BN,IAAI,CAAC1E,CAAC,CAAGgF,eACX,CAAC,IAAM,IAAIN,IAAI,CAAC1E,CAAC,CAAGiF,eAAe,CAAE,CACnCP,IAAI,CAAC1E,CAAC,CAAGiF,eACX,CACF,CAAC,IAAM,CAEL,GAAM,CAAAC,cAAc,CAAGR,IAAI,CAACT,SAAS,CAAG,GAAG,CAE3C,GAAIS,IAAI,CAAC1E,CAAC,CAAGgF,eAAe,CAAGE,cAAc,CAAE,CAC7CR,IAAI,CAAC1E,CAAC,CAAGgF,eAAe,CAAGE,cAAc,CACzCR,IAAI,CAACS,EAAE,EAAI,GACb,CAAC,IAAM,IAAIT,IAAI,CAAC1E,CAAC,CAAGiF,eAAe,CAAGC,cAAc,CAAE,CACpDR,IAAI,CAAC1E,CAAC,CAAGiF,eAAe,CAAGC,cAAc,CACzCR,IAAI,CAACS,EAAE,EAAI,GACb,CACF,CACF,CAAC,CAED,IAAK,GAAI,CAAAjO,CAAC,CAAG,CAAC,CAAEA,CAAC,CAAGoM,qBAAqB,CAAEpM,CAAC,EAAE,CAAE,CAC9CiN,UAAU,CAACiB,IAAI,CAAC,CAAC,CACjB1F,KAAK,CAACzB,OAAO,CAAC,SAACyG,IAAI,QAAK,CAAAD,aAAa,CAACC,IAAI,CAAE,KAAK,CAAC,EACpD,CAEA;AACAhF,KAAK,CAACzB,OAAO,CAAC,SAACyG,IAAS,CAAK,CAC3BD,aAAa,CAACC,IAAI,CAAE,IAAI,CAAC,CACzBA,IAAI,CAACS,EAAE,CAAG,CACZ,CAAC,CAAC,CAEFrE,iBAAiB,IAAAuE,MAAA,CAAK3F,KAAK,CAAC,CAC9B,CAAC,CAAE,CAACrC,IAAI,CAAEsC,MAAM,CAAEe,UAAU,CAAC,CAAC,CAE9B,GAAIG,cAAc,CAAC/J,MAAM,GAAK,CAAC,EAAI4J,UAAU,CAACF,KAAK,GAAK,CAAC,CAAE,CACzD,mBAAOzN,IAAA,QAAKuS,GAAG,CAAEjF,YAAa,CAACtH,KAAK,CAAE,CAAEyH,KAAK,CAAE,MAAM,CAAEC,MAAM,CAAE,OAAQ,CAAE,CAAE,CAC7E,CAEA,GAAM,CAAA4B,MAAM,CAAG,CAAE7O,GAAG,CAAE,EAAE,CAAE8O,KAAK,CAAE,EAAE,CAAEC,MAAM,CAAE,EAAE,CAAE9O,IAAI,CAAE,EAAG,CAAC,CAC3D,GAAM,CAAA+O,UAAU,CAAG9B,UAAU,CAACF,KAAK,CAAG6B,MAAM,CAAC5O,IAAI,CAAG4O,MAAM,CAACC,KAAK,CAChE,GAAM,CAAAG,WAAW,CAAG/B,UAAU,CAACD,MAAM,CAAG4B,MAAM,CAAC7O,GAAG,CAAG6O,MAAM,CAACE,MAAM,CAElE,GAAM,CAAAjE,MAAM,CAAGjB,IAAI,CAACQ,GAAG,CAAC,SAAC6E,CAAC,QAAK,CAAAA,CAAC,CAACvM,KAAK,EAAC,CACvC,GAAM,CAAAwM,QAAQ,CAAGhM,IAAI,CAAC8H,GAAG,CAAAC,KAAA,CAAR/H,IAAI,CAAQ2H,MAAM,CAAC,CACpC,GAAM,CAAAsE,QAAQ,CAAGjM,IAAI,CAACgI,GAAG,CAAAD,KAAA,CAAR/H,IAAI,CAAQ2H,MAAM,CAAC,CAEpC,GAAM,CAAAyE,MAAM,CAAGrS,SAAS,CAAC,CACvBsS,MAAM,CAAErD,MAAM,CACdsD,KAAK,CAAE,CAAC,CAAC,CAAET,UAAU,CAAC,CACtBM,OAAO,CAAE,GACX,CAAC,CAAC,CAEF,GAAM,CAAAI,MAAM,CAAGvS,WAAW,CAAC,CACzBqS,MAAM,CAAE,CAACL,QAAQ,CAAEC,QAAQ,CAAC,CAC5BK,KAAK,CAAE,CAACR,WAAW,CAAE,CAAC,CACxB,CAAC,CAAC,CAEF,GAAM,CAAA8C,eAAe,CAAG,QAAlB,CAAAA,eAAeA,CAAIlJ,KAAuB,CAAEqI,IAAS,CAAK,CAC9D,GAAIrE,YAAY,CAACkB,OAAO,CAAE,CACxB,GAAM,CAAAiE,aAAa,CAAGnF,YAAY,CAACkB,OAAO,CAAC7N,qBAAqB,CAAC,CAAC,CAClE,GAAM,CAAAsM,CAAC,CAAG3D,KAAK,CAACoJ,OAAO,CAAGD,aAAa,CAAC/R,IAAI,CAAG,EAAE,CACjD,GAAM,CAAAwM,CAAC,CAAG5D,KAAK,CAACqJ,OAAO,CAAGF,aAAa,CAAChS,GAAG,CAAG,EAAE,CAEhD4N,WAAW,CAAC,CACVH,WAAW,CAAEjB,CAAC,CACdkB,UAAU,CAAEjB,CAAC,CACbe,WAAW,CAAE0D,IACf,CAAC,CACH,CACF,CAAC,CAED,mBACEzR,KAAA,QAAKqS,GAAG,CAAEjF,YAAa,CAACtH,KAAK,CAAE,CAAEyH,KAAK,CAAE,MAAM,CAAEC,MAAM,CAAE,OAAO,CAAExD,QAAQ,CAAE,UAAW,CAAE,CAAA9D,QAAA,eACtFpG,IAAA,QACEuS,GAAG,CAAEhF,MAAO,CACZE,KAAK,CAAEE,UAAU,CAACF,KAAM,CACxBC,MAAM,CAAEC,UAAU,CAACD,MAAO,CAC1BkF,YAAY,CAAEtE,WAAY,CAAAlI,QAAA,cAE1BlG,KAAA,CAACxC,KAAK,EAACgD,IAAI,CAAE4O,MAAM,CAAC5O,IAAK,CAACD,GAAG,CAAE6O,MAAM,CAAC7O,GAAI,CAAA2F,QAAA,eACxCpG,IAAA,CAACjC,QAAQ,EAACuF,KAAK,CAAE6M,MAAO,CAAC1C,KAAK,CAAEgC,UAAW,CAACoD,eAAe,CAAC,KAAK,CAACC,MAAM,CAAC,SAAS,CAACC,aAAa,CAAE,GAAI,CAAE,CAAC,cACzG/S,IAAA,CAAClC,QAAQ,EACPwF,KAAK,CAAE6M,MAAO,CACd6C,UAAU,CAAC,MAAM,CACjBF,MAAM,CAAC,MAAM,CACbG,cAAc,CAAE,QAAhB,CAAAA,cAAcA,CAAA,QAAS,CACrBlH,IAAI,CAAE,MAAM,CACZmH,QAAQ,CAAE,EAAE,CACZC,UAAU,CAAE,KAAK,CACjBC,EAAE,CAAE,QACN,CAAC,CAAE,CACJ,CAAC,cACFpT,IAAA,CAACnC,UAAU,EACT4C,GAAG,CAAEiP,WAAY,CACjBpM,KAAK,CAAE0M,MAAO,CACdgD,UAAU,CAAC,MAAM,CACjBF,MAAM,CAAC,MAAM,CACbG,cAAc,CAAE,QAAhB,CAAAA,cAAcA,CAAA,QAAS,CACrBlH,IAAI,CAAE,MAAM,CACZmH,QAAQ,CAAE,EAAE,CACZC,UAAU,CAAE,QACd,CAAC,CAAE,CACJ,CAAC,CACDrF,cAAc,CAAChD,GAAG,CAAC,SAAC6G,IAAI,CAAExN,CAAC,qBAC1BnE,IAAA,CAAChC,MAAM,EAELqV,EAAE,CAAE1B,IAAI,CAAC1E,CAAC,EAAI,CAAE,CAChBqG,EAAE,CAAE3B,IAAI,CAACzE,CAAC,EAAI,CAAE,CAChBqG,CAAC,CAAE5B,IAAI,CAACxE,MAAO,CACfpB,IAAI,CAAErI,KAAM,CACZ8P,OAAO,CAAE,GAAI,CACbV,MAAM,CAAEpP,KAAM,CACd+P,WAAW,CAAE,CAAE,CACfC,WAAW,CAAE,QAAb,CAAAA,WAAWA,CAAGC,CAAC,QAAK,CAAAnB,eAAe,CAACmB,CAAC,CAAEhC,IAAI,CAAC,CAAC,CAC7C3L,KAAK,CAAE,CAAE4N,MAAM,CAAE,SAAU,CAAE,EATxBzP,CAUN,CAAC,CACH,CAAC,EACG,CAAC,CACL,CAAC,CACLiK,WAAW,EAAIH,WAAW,EAAIC,WAAW,GAAK,IAAI,EAAIA,WAAW,GAAKrD,SAAS,EAAIsD,UAAU,GAAK,IAAI,EAAIA,UAAU,GAAKtD,SAAS,eACjI7K,IAAA,CAAC9B,iBAAiB,EAChBwC,IAAI,CAAEwN,WAAY,CAClBzN,GAAG,CAAE0N,UAAW,CAChBnI,KAAK,CAAAZ,QAAA,IACAjH,aAAa,EAChB8H,eAAe,CAAE,OAAO,CACxB4N,MAAM,CAAE,mBAAmB,CAC3BC,YAAY,CAAE,KAAK,CACnB/D,OAAO,CAAE,UAAU,CACnBgE,SAAS,CAAE,4BAA4B,CACvCb,QAAQ,CAAE,MAAM,CAChBhJ,QAAQ,CAAE,UAAU,CACpB8J,MAAM,CAAE,IAAI,CACZC,aAAa,CAAE,MAAM,EACrB,CAAA7N,QAAA,cAEFlG,KAAA,QAAAkG,QAAA,eACElG,KAAA,QAAK8F,KAAK,CAAE,CAAEkO,YAAY,CAAE,KAAK,CAAEC,UAAU,CAAE,GAAI,CAAE,CAAA/N,QAAA,EAClDsG,OAAO,CAAC,IAAE,CAACuB,WAAW,CAACnB,KAAK,EAC1B,CAAC,cACN5M,KAAA,QAAAkG,QAAA,EACGiF,QAAQ,CAAC,IAAE,CAAC4C,WAAW,CAAC7K,KAAK,CAACgR,cAAc,CAAC,CAAC,EAC5C,CAAC,EACH,CAAC,CACW,CACpB,EACE,CAET,CAEA,QAAS,CAAAC,oBAAoBA,CAACC,SAAiB,CAAEhK,IAAS,CAAEiK,MAAW,CAAe,CACpF,GAAM,CAAAC,QAAQ,CAAG3R,KAAK,CAACC,OAAO,CAACwH,IAAI,CAAC,CAAGA,IAAI,CAAG,EAAE,CAEhD,GAAIkK,QAAQ,CAACzQ,MAAM,GAAK,CAAC,CAAE,CACzB,MAAO,CAAAhI,oBAAoB,CAAC,CAC9B,CAEA,OAAQuY,SAAS,EACf,IAAK,KAAK,CACR,mBACEpU,KAAA,CAAChD,QAAQ,EAAAkJ,QAAA,EACNoO,QAAQ,CAACzQ,MAAM,EAAI,EAAE,eACpB/D,IAAA,CAAChB,YAAY,EAAC4U,MAAM,CAAE,KAAM,CAACpK,OAAO,cAAExJ,IAAA,CAACf,mBAAmB,EAACwV,SAAS,MAAE,CAAE,CAAE,CAC3E,cACDzU,IAAA,CAAC/C,GAAG,EACFqN,IAAI,CAAEkK,QAAS,CACfE,OAAO,CAAEH,MAAM,CAACG,OAAQ,CACxBC,OAAO,CAAEJ,MAAM,CAACI,OAAQ,CACxBC,WAAW,CAAE,EAAG,CAChBnB,WAAW,CAAE,EAAG,CAChBpH,KAAK,CACHmI,QAAQ,CAACzQ,MAAM,CAAG,EAAE,CAChB,SAAA8Q,KAAA,KAAG,CAAAC,IAAI,CAAAD,KAAA,CAAJC,IAAI,CAAEC,OAAO,CAAAF,KAAA,CAAPE,OAAO,OACX,CAAAD,IAAI,MAAK,CAACC,OAAO,CAAG,GAAG,EAAE5I,OAAO,CAAC,CAAC,CAAC,KAAG,CAC3CtB,SACL,CACDmK,SAAS,CAAE,KAAM,CAClB,CAAC,EACM,CAAC,CAGf,IAAK,KAAK,CAAE,CACVT,MAAM,CAAC9J,QAAQ,CAAG8J,MAAM,CAAC9J,QAAQ,EAAI,EAAE,CAEvC,GAAM,CAAAwK,WAAW,CAAGpS,KAAK,CAACC,OAAO,CAACyR,MAAM,CAAC9J,QAAQ,CAAC,CAAG8J,MAAM,CAAC9J,QAAQ,CAAG,EAAE,CAEzE,mBACEvK,KAAA,CAACtD,QAAQ,CAAAwI,QAAA,EAACkF,IAAI,CAAEkK,QAAS,EAAKD,MAAM,CAACW,OAAO,CAAOD,WAAW,CAAClR,MAAM,CAAG,CAAC,EAAI,CAAEoR,MAAM,CAAE,CAAE,CAAC,EAAA/O,QAAA,eACxFpG,IAAA,CAACnD,aAAa,EAACuY,QAAQ,CAAE,KAAM,CAAE,CAAC,cAClCpV,IAAA,CAAC1C,KAAK,EAACoX,OAAO,CAAEH,MAAM,CAAChK,KAAM,CAAE,CAAC,cAChCvK,IAAA,CAACzC,KAAK,GAAE,CAAC,cACTyC,IAAA,CAAClD,MAAM,EAACuY,KAAK,CAAC,MAAM,CAACC,YAAY,CAAE,CAAEC,UAAU,CAAE,EAAG,CAAE,CAAE,CAAC,CACxDN,WAAW,CAACnK,GAAG,CAAC,SAAA0K,KAAA,CAAwE,IAArE,CAAA/S,GAAG,CAAA+S,KAAA,CAAH/S,GAAG,CAAEqS,IAAI,CAAAU,KAAA,CAAJV,IAAI,CAAEpR,KAAK,CAAA8R,KAAA,CAAL9R,KAAK,CAClC,mBAAO1D,IAAA,CAACrD,GAAG,EAAC+X,OAAO,CAAEjS,GAAI,CAACsJ,IAAI,CAAErI,KAAK,OAALA,KAAK,CAAI,SAAU,CAACoR,IAAI,CAAEA,IAAK,CAAW3H,MAAM,CAAE,CAAE,EAAf1K,GAAiB,CACxF,CAAC,CAAC,cACFzC,IAAA,CAAChB,YAAY,EAAC4U,MAAM,CAAE,KAAM,CAACpK,OAAO,cAAExJ,IAAA,CAACf,mBAAmB,EAACwW,SAAS,CAAC,QAAQ,CAAE,CAAE,CAAE,CAAC,GAC5E,CAEd,CAEA,IAAK,MAAM,CAAE,CACXlB,MAAM,CAAC9J,QAAQ,CAAG8J,MAAM,CAAC9J,QAAQ,EAAI,EAAE,CACvC,GAAM,CAAAiL,gBAAgB,CAAG7S,KAAK,CAACC,OAAO,CAACyR,MAAM,CAAC9J,QAAQ,CAAC,CAAG8J,MAAM,CAAC9J,QAAQ,CAAG,EAAE,CAE9E,mBACEvK,KAAA,CAAClD,SAAS,CAAAoI,QAAA,EAACkF,IAAI,CAAEkK,QAAS,EAAKD,MAAM,CAACW,OAAO,EAAA9O,QAAA,eAC3CpG,IAAA,CAACnD,aAAa,EAACuY,QAAQ,CAAE,KAAM,CAAE,CAAC,cAClCpV,IAAA,CAAC1C,KAAK,EAACoX,OAAO,CAAEH,MAAM,CAAChK,KAAM,CAAE,CAAC,cAChCvK,IAAA,CAACzC,KAAK,GAAE,CAAC,cACTyC,IAAA,CAAChB,YAAY,EAAC4U,MAAM,CAAE,KAAM,CAACpK,OAAO,cAAExJ,IAAA,CAACf,mBAAmB,EAACwW,SAAS,CAAC,QAAQ,CAAE,CAAE,CAAE,CAAC,CACnFC,gBAAgB,CAAC5K,GAAG,CACnB,SAAA6K,KAAA,CAAwE,IAArE,CAAAlT,GAAG,CAAAkT,KAAA,CAAHlT,GAAG,CAAEqS,IAAI,CAAAa,KAAA,CAAJb,IAAI,CAAEpR,KAAK,CAAAiS,KAAA,CAALjS,KAAK,CACjB,mBACE1D,IAAA,CAACjD,IAAI,EACH6Y,IAAI,CAAC,UAAU,CACflB,OAAO,CAAEjS,GAAI,CACbqQ,MAAM,CAAEpP,KAAK,OAALA,KAAK,CAAI,SAAU,CAC3BoR,IAAI,CAAEA,IAAK,EACNrS,GACN,CAEL,CACF,CAAC,cACDzC,IAAA,CAAClD,MAAM,EAACuY,KAAK,CAAC,MAAM,CAAE,CAAC,GACd,CAEf,CAEA,IAAK,SAAS,CAAE,CACdd,MAAM,CAAC9J,QAAQ,CAAG8J,MAAM,CAAC9J,QAAQ,EAAI,EAAE,CACvC,GAAM,CAAAoL,YAAY,CAAGhT,KAAK,CAACC,OAAO,CAACyR,MAAM,CAAC9J,QAAQ,CAAC,CAAG8J,MAAM,CAAC9J,QAAQ,CAAG,EAAE,CAC1E,GAAM,CAAAC,WAAW,CAAGL,uBAAuB,CAACmK,QAAQ,CAAED,MAAM,CAAChK,KAAK,CAAEgK,MAAM,CAAC/J,KAAK,CAAEqL,YAAY,CAAC,CAE/F,GAAInL,WAAW,CAAC3G,MAAM,GAAK,CAAC,CAAE,CAC5B,MAAO,CAAAhI,oBAAoB,CAAC,CAC9B,CAEA,GAAM,CAAAuF,MAAM,CAAGuU,YAAY,CAAC9R,MAAM,CAAG,CAAC,CAClC8R,YAAY,CAAC/K,GAAG,CAAC,SAAAgL,KAAA,KAAG,CAAApS,KAAK,CAAAoS,KAAA,CAALpS,KAAK,OAA0B,CAAAA,KAAK,OAALA,KAAK,CAAI,SAAS,EAAC,CACtE,CAAC,SAAS,CAAC,CAEf,mBACExD,KAAA,CAAC7C,YAAY,CAAA+H,QAAA,EAACkF,IAAI,CAAEI,WAAY,EAAK6J,MAAM,CAACW,OAAO,EAAA9O,QAAA,eACjDpG,IAAA,CAACnD,aAAa,EAACuY,QAAQ,CAAE,KAAM,CAAE,CAAC,cAClCpV,IAAA,CAAC1C,KAAK,EACJsY,IAAI,CAAC,QAAQ,CACblB,OAAO,CAAEH,MAAM,CAAChK,KAAM,CACtBuK,IAAI,CAAEP,MAAM,CAAChK,KAAK,EAAI,QAAS,CAC/B0F,MAAM,CAAE,CAAC,MAAM,CAAE,MAAM,CAAE,CAC1B,CAAC,cACFjQ,IAAA,CAACzC,KAAK,EACJqY,IAAI,CAAC,QAAQ,CACblB,OAAO,CAAEH,MAAM,CAAC/J,KAAM,CACtBsK,IAAI,CAAEP,MAAM,CAAC/J,KAAK,EAAI,QAAS,CAC/ByF,MAAM,CAAE,CAAC,MAAM,CAAE,MAAM,CAAE,CAC1B,CAAC,cACFjQ,IAAA,CAAChB,YAAY,EAAC4U,MAAM,CAAE,CAAEf,eAAe,CAAE,KAAM,CAAE,CAACrJ,OAAO,cAAExJ,IAAA,CAACf,mBAAmB,GAAE,CAAE,CAAE,CAAC,CACrF4W,YAAY,CAAC9R,MAAM,CAAG,CAAC,CACtB8R,YAAY,CAAC/K,GAAG,CAAC,SAAAiL,KAAA,CAAqEzJ,KAAa,KAA/E,CAAA7J,GAAG,CAAAsT,KAAA,CAAHtT,GAAG,CAAEqS,IAAI,CAAAiB,KAAA,CAAJjB,IAAI,CAAEpR,KAAK,CAAAqS,KAAA,CAALrS,KAAK,oBAClC1D,IAAA,CAAC5C,OAAO,EAEN0X,IAAI,CAAEA,IAAI,EAAIrS,GAAI,CAClBiS,OAAO,CAAEjS,GAAG,EAAI8R,MAAM,CAAC/J,KAAM,CAC7BuB,IAAI,CAAErI,KAAK,OAALA,KAAK,CAAIpC,MAAM,CAACgL,KAAK,CAAGhL,MAAM,CAACyC,MAAM,CAAE,EAHxCtB,GAIN,CAAC,CACH,CAAC,cAEFzC,IAAA,CAAC5C,OAAO,EACN0X,IAAI,CAAC,MAAM,CACXJ,OAAO,CAAEH,MAAM,CAAC/J,KAAM,CACtBuB,IAAI,CAAEzK,MAAM,CAAC,CAAC,CAAE,CACjB,CACF,cACDtB,IAAA,CAAClD,MAAM,EAACuY,KAAK,CAAC,MAAM,CAAE,CAAC,GACX,CAElB,CAEA,IAAK,WAAW,CAAE,CAChBd,MAAM,CAAC9J,QAAQ,CAAG8J,MAAM,CAAC9J,QAAQ,EAAI,EAAE,CACvC,GAAM,CAAAoL,aAAY,CAAGhT,KAAK,CAACC,OAAO,CAACyR,MAAM,CAAC9J,QAAQ,CAAC,CAAG8J,MAAM,CAAC9J,QAAQ,CAAG,EAAE,CAC1E,GAAM,CAAAY,QAAQ,CAAGwK,aAAY,CAAC9R,MAAM,CAAG,CAAC,CAAG8R,aAAY,CAAC,CAAC,CAAC,CAACpT,GAAG,CAAG8R,MAAM,CAAChK,KAAK,CAC7E,GAAM,CAAAe,IAAI,CAAGiJ,MAAM,CAACjJ,IAAI,EAAI,EAAE,CAC9B,GAAM,CAAA0K,UAAU,CAAG5K,mBAAmB,CAACoJ,QAAQ,CAAEnJ,QAAQ,CAAEC,IAAI,CAAC,CAEhE,GAAI0K,UAAU,CAACjS,MAAM,GAAK,CAAC,CAAE,CAC3B,MAAO,CAAAhI,oBAAoB,CAAC,CAC9B,CAEA,GAAM,CAAA2H,KAAK,CAAGmS,aAAY,CAAC9R,MAAM,CAAG,CAAC,CAAG8R,aAAY,CAAC,CAAC,CAAC,CAACnS,KAAK,CAAG,SAAS,CAEzE,mBACExD,KAAA,CAACtD,QAAQ,CAAAwI,QAAA,EAACkF,IAAI,CAAE0L,UAAW,EAAKzB,MAAM,CAACW,OAAO,EAAA9O,QAAA,eAC5CpG,IAAA,CAACnD,aAAa,EAACuY,QAAQ,CAAE,KAAM,CAAE,CAAC,cAClCpV,IAAA,CAAC1C,KAAK,EACJoX,OAAO,CAAC,KAAK,CACbuB,KAAK,CAAE,CAAC,EAAG,CACX9C,UAAU,CAAC,KAAK,CAChBzF,MAAM,CAAE,EAAG,CACZ,CAAC,cACF1N,IAAA,CAACzC,KAAK,GAAE,CAAC,cACTyC,IAAA,CAAChB,YAAY,EAAC4U,MAAM,CAAE,KAAM,CAACpK,OAAO,cAAExJ,IAAA,CAACf,mBAAmB,EAACwW,SAAS,CAAC,QAAQ,CAAE,CAAE,CAAE,CAAC,cACpFzV,IAAA,CAACrD,GAAG,EAAC+X,OAAO,CAAC,WAAW,CAAC3I,IAAI,CAAErI,KAAM,CAACyJ,MAAM,CAAE,CAAE,CAAA/G,QAAA,CAC7C4P,UAAU,CAAClL,GAAG,CAAC,SAACiE,KAAK,CAAEzC,KAAK,qBAC3BtM,IAAA,CAACxC,IAAI,EAAuBuO,IAAI,CAAErI,KAAM,UAArB4I,KAAuB,CAAC,CAC5C,CAAC,CACC,CAAC,cACNtM,IAAA,CAAClD,MAAM,EAACuY,KAAK,CAAC,MAAM,CAAE,CAAC,GACf,CAEd,CAEA,IAAK,UAAU,CAAE,KAAAa,iBAAA,CAAAC,kBAAA,CACf,GAAM,CAAAzJ,OAAO,CAAG6H,MAAM,CAAC7H,OAAO,EAAI6H,MAAM,CAAChK,KAAK,CAC9C,GAAM,CAAAc,SAAQ,CAAGkJ,MAAM,CAAClJ,QAAQ,EAAKkJ,MAAM,CAAC9J,QAAQ,IAAAyL,iBAAA,CAAI3B,MAAM,CAAC9J,QAAQ,CAAC,CAAC,CAAC,eAAlByL,iBAAA,CAAoBzT,GAAG,CAAC,EAAI,OAAO,CAC3F,IAAA2T,qBAAA,CAA0B3J,wBAAwB,CAAC+H,QAAQ,CAAE9H,OAAO,CAAErB,SAAQ,CAAC,CAAvEsB,KAAK,CAAAyJ,qBAAA,CAALzJ,KAAK,CAAEC,MAAM,CAAAwJ,qBAAA,CAANxJ,MAAM,CAErB,GAAID,KAAK,CAAC5I,MAAM,GAAK,CAAC,EAAI6I,MAAM,CAAC7I,MAAM,GAAK,CAAC,CAAE,CAC7C,MAAO,CAAAhI,oBAAoB,CAAC,CAC9B,CAEA,GAAM,CAAA2H,MAAK,CAAG6Q,MAAM,CAAC9J,QAAQ,GAAA0L,kBAAA,CAAI5B,MAAM,CAAC9J,QAAQ,CAAC,CAAC,CAAC,SAAlB0L,kBAAA,CAAoBzS,KAAK,CAAG6Q,MAAM,CAAC9J,QAAQ,CAAC,CAAC,CAAC,CAAC/G,KAAK,CAAG,SAAS,CAEjG,mBACE1D,IAAA,CAACoN,aAAa,EACZ9C,IAAI,CAAEqC,KAAM,CACZC,MAAM,CAAEA,MAAO,CACflJ,KAAK,CAAEA,MAAM,CACbgJ,OAAO,CAAEA,OAAQ,CACjBrB,QAAQ,CAAEA,SAAS,CACpB,CAEL,CAEA,QACE,mBACEnL,KAAA,CAAChD,QAAQ,EAAAkJ,QAAA,EACNoO,QAAQ,CAACzQ,MAAM,EAAI,EAAE,eACpB/D,IAAA,CAAChB,YAAY,EAAC4U,MAAM,CAAE,KAAM,CAACpK,OAAO,cAAExJ,IAAA,CAACf,mBAAmB,EAACwV,SAAS,MAAE,CAAE,CAAE,CAC3E,cACDzU,IAAA,CAAC/C,GAAG,EACFqN,IAAI,CAAEkK,QAAS,CACfE,OAAO,CAAEH,MAAM,CAACG,OAAQ,CACxBC,OAAO,CAAEJ,MAAM,CAACI,OAAQ,CACxBC,WAAW,CAAE,EAAG,CAChBnB,WAAW,CAAE,EAAG,CAChBpH,KAAK,CACHmI,QAAQ,CAACzQ,MAAM,CAAG,EAAE,CAChB,SAAAsS,KAAA,KAAG,CAAAvB,IAAI,CAAAuB,KAAA,CAAJvB,IAAI,CAAEC,OAAO,CAAAsB,KAAA,CAAPtB,OAAO,OACX,CAAAD,IAAI,MAAK,CAACC,OAAO,CAAG,GAAG,EAAE5I,OAAO,CAAC,CAAC,CAAC,KAAG,CAC3CtB,SACL,CACDmK,SAAS,CAAE,KAAM,CAClB,CAAC,EACM,CAEhB,CACF,CAEA,MAAO,SAAS,CAAAsB,WAAWA,CAACjS,KAAU,CAAe,CACnD,IAAAkS,kBAAA,CAKIlS,KAAK,CAJP6B,UAAU,CAAVA,UAAU,CAAAqQ,kBAAA,UAAG,KAAK,CAAAA,kBAAA,CAClBjS,QAAQ,CAGND,KAAK,CAHPC,QAAQ,CAAAkS,sBAAA,CAGNnS,KAAK,CAFPuC,kBAAkB,CAAlBA,kBAAkB,CAAA4P,sBAAA,UAAG,iBAAM,CAAA3P,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAA0P,sBAAA,CAC3CjS,IAAI,CAAAC,6BAAA,CACLH,KAAK,CAAAoS,UAAA,EAET;AACA,GAAM,CAAA/R,WAAW,CAAG7I,OAAO,CAAC,iBAAM,CAAAW,kBAAkB,CAAC6H,KAAK,CAAC,EAAE,EAAE,CAAC,CAChE,IAAAqS,UAAA,CAA8B9a,QAAQ,CAAC8I,WAAW,CAAC,CAA5CE,OAAO,CAAA8R,UAAA,IAAE7R,UAAU,CAAA6R,UAAA,IAE1B,IAAAC,UAAA,CAAoC/a,QAAQ,CAAAwJ,QAAA,IACvCd,QAAQ,CAACe,GAAG,CAAC,YAAY,CAAC,CAC9B,CAAC,CAFKC,UAAU,CAAAqR,UAAA,IAAEpR,aAAa,CAAAoR,UAAA,IAIhC,GAAM,CAAArJ,YAAY,CAAGxR,MAAM,CAAiB,IAAI,CAAC,CACjD,IAAA8a,WAAA,CAA4Chb,QAAQ,CAAS,CAAC,CAAC,CAAxDib,cAAc,CAAAD,WAAA,IAAEE,iBAAiB,CAAAF,WAAA,IAExCjb,SAAS,CAAC,UAAM,CACd,GAAM,CAAA6J,iBAAiB,CAAG,QAApB,CAAAA,iBAAiBA,CAAA,CAAS,CAC9B,GAAM,CAAAC,iBAAiB,CAAGnB,QAAQ,CAACe,GAAG,CAAC,gBAAgB,CAAC,CACxD,GAAM,CAAAK,aAAa,CAAGlJ,kBAAkB,CAACiJ,iBAAiB,CAAC,CAE3DZ,UAAU,CAAC,SAACc,QAAa,SAAAP,QAAA,IACpBO,QAAQ,CACRD,aAAa,EAChB,CACJ,CAAC,CAEDpB,QAAQ,CAACsB,EAAE,CAAC,uBAAuB,CAAEJ,iBAAiB,CAAC,CAEvD,MAAO,WAAM,CACXlB,QAAQ,CAACuB,GAAG,CAAC,uBAAuB,CAAEL,iBAAiB,CACzD,CACF,CAAC,CAAE,CAAClB,QAAQ,CAAC,CAAC,CAEd3I,SAAS,CAAC,UAAM,CACd,GAAM,CAAAob,sBAAsB,CAAG,QAAzB,CAAAA,sBAAsBA,CAAA,CAAS,CACnC,GAAM,CAAAC,aAAa,CAAG1S,QAAQ,CAACe,GAAG,CAAC,YAAY,CAAC,CAChDE,aAAa,CAAAH,QAAA,IACR4R,aAAa,CACjB,CACH,CAAC,CAED1S,QAAQ,CAACsB,EAAE,CAAC,mBAAmB,CAAEmR,sBAAsB,CAAC,CAExD,MAAO,WAAM,CACXzS,QAAQ,CAACuB,GAAG,CAAC,mBAAmB,CAAEkR,sBAAsB,CAC1D,CACF,CAAC,CAAE,CAACzS,QAAQ,CAAC,CAAC,CAEd3I,SAAS,CAAC,UAAM,CACd,GAAM,CAAAsb,oBAAoB,CAAG,QAAvB,CAAAA,oBAAoBA,CAAA,CAAS,CACjC,GAAI3J,YAAY,CAACkB,OAAO,CAAE,CACxBsI,iBAAiB,CAACxJ,YAAY,CAACkB,OAAO,CAACC,WAAW,EAAI,CAAC,CACzD,CACF,CAAC,CAED,GAAM,CAAAC,cAAc,CAAG,GAAI,CAAAC,cAAc,CAAC,SAACC,OAAO,CAAK,CACrD,QAAAsI,UAAA,CAAAlU,+BAAA,CAAoB4L,OAAO,EAAAuI,MAAA,GAAAA,MAAA,CAAAD,UAAA,IAAAhU,IAAA,EAAE,IAAlB,CAAA6L,KAAK,CAAAoI,MAAA,CAAA/T,KAAA,CACd0T,iBAAiB,CAAC/H,KAAK,CAACC,WAAW,CAACvB,KAAK,EAAI,CAAC,CAChD,CACF,CAAC,CAAC,CAEFwJ,oBAAoB,CAAC,CAAC,CAEtB,GAAM,CAAAG,SAAS,CAAGC,UAAU,CAACJ,oBAAoB,CAAE,EAAE,CAAC,CAEtD,GAAI3J,YAAY,CAACkB,OAAO,CAAE,CACxBE,cAAc,CAACO,OAAO,CAAC3B,YAAY,CAACkB,OAAO,CAC7C,CAEAU,MAAM,CAACC,gBAAgB,CAAC,QAAQ,CAAE8H,oBAAoB,CAAC,CAEvD,MAAO,WAAM,CACXK,YAAY,CAACF,SAAS,CAAC,CACvB1I,cAAc,CAACU,UAAU,CAAC,CAAC,CAC3BF,MAAM,CAACG,mBAAmB,CAAC,QAAQ,CAAE4H,oBAAoB,CAC3D,CACF,CAAC,CAAE,EAAE,CAAC,CAEN,IAAAM,eAAA,CAOI3S,OAAO,CANT2P,MAAM,CAANA,MAAM,CAAAgD,eAAA,UAAG,CAAC,CAAC,CAAAA,eAAA,CAAAC,kBAAA,CAMT5S,OAAO,CALT0P,SAAS,CAATA,SAAS,CAAAkD,kBAAA,UAAG,KAAK,CAAAA,kBAAA,CAAAC,kBAAA,CAKf7S,OAAO,CAJT8S,SAAS,CAATA,SAAS,CAAAD,kBAAA,UAAG,EAAE,CAAAA,kBAAA,CACd1R,SAAS,CAGPnB,OAAO,CAHTmB,SAAS,CAAA4R,cAAA,CAGP/S,OAAO,CAFTgT,KAAK,CAALA,KAAK,CAAAD,cAAA,UAAG,OAAO,CAAAA,cAAA,CAAAE,iBAAA,CAEbjT,OAAO,CADTkT,QAAQ,CAARA,QAAQ,CAAAD,iBAAA,UAAG,UAAU,CAAAA,iBAAA,CAGvB,GAAM,CAAA/R,cAAc,CAAG,8BAA8B,CACrD,GAAM,CAAAiS,aAAa,CAAGhS,SAAS,CAAGpG,EAAE,CAACmG,cAAc,CAAEC,SAAS,CAAC,CAAGD,cAAc,CAEhF,GAAIwO,SAAS,GAAK,KAAK,CAAE,CACvB,GAAM,CAAA0D,aAAa,CAAGnV,KAAK,CAACC,OAAO,CAAC4U,SAAS,CAAC,CAAGA,SAAS,CAAG,EAAE,CAC/D,GAAM,CAAApW,MAAM,CAAGoB,UAAU,CAACsV,aAAa,CAACjU,MAAM,CAAC,CAC/CiU,aAAa,CAAC9M,OAAO,CAAC,SAACZ,IAAI,CAAEnG,CAAC,CAAK,CACjC,GAAI,CAACmG,IAAI,CAACyB,IAAI,CAAE,CACdzB,IAAI,CAACyB,IAAI,CAAGzK,MAAM,CAAC6C,CAAC,CACtB,CACF,CAAC,CACH,CAAC,IAAM,IAAI,CAACoQ,MAAM,CAAC7Q,KAAK,CAAE,CACxB,GAAM,CAAAd,cAAc,CAAGC,KAAK,CAACC,OAAO,CAACzB,UAAU,CAAC,CAAGA,UAAU,CAAG,EAAE,CAElE,GAAIuB,cAAc,CAACmB,MAAM,CAAG,CAAC,CAAE,CAC7BwQ,MAAM,CAAC7Q,KAAK,CAAGd,cAAc,CAACgB,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,CAAGlB,cAAc,CAACmB,MAAM,CAAC,CACjF,CACF,CAEA,GAAI,CAAAkU,eAAe,CAAG,CAAC,CAEvB,GAAI3D,SAAS,GAAK,KAAK,EAAIA,SAAS,GAAK,MAAM,EAAIA,SAAS,GAAK,SAAS,EAAIA,SAAS,GAAK,WAAW,EAAIA,SAAS,GAAK,UAAU,CAAE,CACnI,GAAM,CAAA0D,cAAa,CAAGnV,KAAK,CAACC,OAAO,CAAC4U,SAAS,CAAC,CAAGA,SAAS,CAAG,EAAE,CAC/D,GAAM,CAAA7B,YAAY,CAAGhT,KAAK,CAACC,OAAO,CAACyR,MAAM,CAAC9J,QAAQ,CAAC,CAAG8J,MAAM,CAAC9J,QAAQ,CAAG,EAAE,CAE1E,GAAI6J,SAAS,GAAK,KAAK,CAAE,CACvB2D,eAAe,CAAGD,cAAa,CAACjU,MAAM,CAAGH,IAAI,CAACgI,GAAG,CAAC,CAAC,CAAEiK,YAAY,CAAC9R,MAAM,CAC1E,CAAC,IAAM,IAAIuQ,SAAS,GAAK,MAAM,CAAE,CAC/B2D,eAAe,CAAGD,cAAa,CAACjU,MAClC,CAAC,IAAM,IAAIuQ,SAAS,GAAK,SAAS,EAAIA,SAAS,GAAK,WAAW,EAAIA,SAAS,GAAK,UAAU,CAAE,CAC3F2D,eAAe,CAAGD,cAAa,CAACjU,MAClC,CACF,CAEA,GAAM,CAAAmU,kBAAkB,CAAG,QAArB,CAAAA,kBAAkBA,CAAA,CAAS,CAC/B,GAAI5D,SAAS,GAAK,MAAM,CAAE,CACxB,MAAO,CAAA2D,eAAe,CAAG,EAC3B,CAEA,GAAI3D,SAAS,GAAK,KAAK,CAAE,CACvB,MACE,CAAA2D,eAAe,CAAG,EAAE,CACpB,CAACpV,KAAK,CAACC,OAAO,CAACyR,MAAM,CAAC9J,QAAQ,CAAC,CAAG8J,MAAM,CAAC9J,QAAQ,CAAC1G,MAAM,CAAG,CAAC,EAC1D,CAAC,EACAlB,KAAK,CAACC,OAAO,CAAC4U,SAAS,CAAC,CAAGA,SAAS,CAAC3T,MAAM,CAAG,CAAC,CAAC,CACnD,CAAClB,KAAK,CAACC,OAAO,CAAC4U,SAAS,CAAC,CAAGA,SAAS,CAAC3T,MAAM,CAAG,CAAC,EAAI,EAExD,CAEA,GAAIuQ,SAAS,GAAK,SAAS,EAAIA,SAAS,GAAK,WAAW,EAAIA,SAAS,GAAK,UAAU,CAAE,CACpF,MAAO,IACT,CAEA,MAAO,IACT,CAAC,CAED,GAAM,CAAA6D,WAAW,CAAGD,kBAAkB,CAAC,CAAC,CACxC,GAAM,CAAAE,YAAY,CAChB,CAAC9D,SAAS,GAAK,KAAK,EAAIA,SAAS,GAAK,MAAM,GAC5C2D,eAAe,CAAG,EAAE,EACpBE,WAAW,CAAGtB,cAAc,CAE9B,GAAM,CAAAlO,QAAQ,CAAGrD,UAAU,CAACe,KAAK,EAAIzB,OAAO,CAACyB,KAAK,CAClD,GAAM,CAAAwC,UAAU,CAAGvD,UAAU,CAACgB,SAAS,EAAI1B,OAAO,CAAC0B,SAAS,CAC5D,GAAM,CAAAwC,SAAS,CACb,CAACxD,UAAU,CAACyD,wBAAwB,EAAIzD,UAAU,CAAC0D,OAAO,GAAK,CAACL,QAAQ,EAAI,CAACE,UAAU,CAEzF,GAAM,CAAAwP,YAAY,CAAG,QAAf,CAAAA,YAAYA,CAAAC,KAAA,CAAoD,IAA9C,CAAAlS,QAAQ,CAAAkS,KAAA,CAARlS,QAAQ,CAC9B,GAAIgS,YAAY,CAAE,CAChB,mBACEpY,IAAA,QAAK+F,SAAS,CAAC,kCAAkC,CAAAK,QAAA,cAC/CpG,IAAA,QAAKgG,KAAK,CAAE,CAAEuS,QAAQ,CAAKJ,WAAW,KAAI,CAAEzK,MAAM,CAAE,OAAQ,CAAE,CAAAtH,QAAA,CAAEA,QAAQ,CAAM,CAAC,CAC5E,CAET,CAEA,mBAAOpG,IAAA,QAAK+F,SAAS,CAAC,kBAAkB,CAAAK,QAAA,CAAEA,QAAQ,CAAM,CAC1D,CAAC,CAGD,GAAM,CAAAoS,eAAe,CAAGlE,SAAS,GAAK,UAAU,CAEhD,GAAM,CAAAY,OAAO,CAAGpM,SAAS,cACvB9I,IAAA,CAACX,WAAW,GAAE,CAAC,CACbsJ,QAAQ,EAAIE,UAAU,EAAI,CAAC6O,SAAS,CACtC3b,oBAAoB,CAAC,CAAC,CACpByc,eAAe,cACjBxY,IAAA,CAACqY,YAAY,EAAAjS,QAAA,cACXpG,IAAA,CAACjB,cAAc,CAAAqG,QAAA,IAAKb,IAAI,EAAEgQ,MAAM,CAAEA,MAAO,CAACxO,SAAS,CAAEgS,aAAc,CAAA3R,QAAA,CAChEiO,oBAAoB,CAACC,SAAS,CAAEoD,SAAS,CAAEnD,MAAM,CAAC,EACrC,CAAC,CACL,CAAC,cAEfvU,IAAA,CAACqY,YAAY,EAAAjS,QAAA,cACXpG,IAAA,CAAC7C,mBAAmB,EAACsQ,KAAK,CAAC,MAAM,CAACC,MAAM,CAAE,GAAI,CAAAtH,QAAA,cAC5CpG,IAAA,CAACjB,cAAc,CAAAqG,QAAA,IAAKb,IAAI,EAAEgQ,MAAM,CAAEA,MAAO,CAACxO,SAAS,CAAEgS,aAAc,CAAA3R,QAAA,CAChEiO,oBAAoB,CAACC,SAAS,CAAEoD,SAAS,CAAEnD,MAAM,CAAC,EACrC,CAAC,CACE,CAAC,CACV,CACf,CAED,mBACErU,KAAA,CAACzB,IAAI,EAACsH,SAAS,CAAC,kCAAkC,CAAAK,QAAA,eAChDpG,IAAA,CAACnB,UAAU,EAAAuH,QAAA,cACTpG,IAAA,QAAK+F,SAAS,CAAC,kCAAkC,CAAAK,QAAA,cAC/ClG,KAAA,QAAK6F,SAAS,CAAC,QAAQ,CAAAK,QAAA,eACrBpG,IAAA,CAAClB,SAAS,EAAC,YAAU,OAAO,CAACqH,eAAe,CAAED,UAAW,CAACH,SAAS,CAAC,UAAU,CAAAK,QAAA,CAC3EwR,KAAK,CACG,CAAC,cACZ5X,IAAA,CAACrB,eAAe,EAAC,YAAU,UAAU,CAACwH,eAAe,CAAED,UAAW,CAACH,SAAS,CAAC,SAAS,CAAAK,QAAA,CACnF0R,QAAQ,CACM,CAAC,EACf,CAAC,CACH,CAAC,CACI,CAAC,cACb9X,IAAA,CAACtB,WAAW,EAAC6T,GAAG,CAAEjF,YAAa,CAAC,YAAU,aAAa,CAACvH,SAAS,CAAC,MAAM,CAAAK,QAAA,CACrE8O,OAAO,CACG,CAAC,cACdlV,IAAA,CAACzD,gBAAgB,EACf0N,WAAW,CAAE3F,QAAQ,CAACe,GAAG,CAAC,IAAI,CAAE,CAChCuB,kBAAkB,CAAEA,kBAAmB,CACvCsD,QAAQ,CAAC,WAAW,CACpBC,SAAS,CAAEjE,UAAW,CACtBkE,cAAc,CAAExF,OAAQ,CACzB,CAAC,EACE,CAEV,CAEA,MAAO,SAAS,CAAA6T,WAAWA,CAACpU,KAAU,CAAe,CACnD,IAAAqU,kBAAA,CAAiFrU,KAAK,CAA9E6B,UAAU,CAAVA,UAAU,CAAAwS,kBAAA,UAAG,KAAK,CAAAA,kBAAA,CAAEpU,QAAQ,CAA6CD,KAAK,CAA1DC,QAAQ,CAAAqU,sBAAA,CAA6CtU,KAAK,CAAhDuC,kBAAkB,CAAlBA,kBAAkB,CAAA+R,sBAAA,UAAG,UAAM,CAAC,CAAC,CAAAA,sBAAA,CAAKpU,IAAI,CAAAC,6BAAA,CAAKH,KAAK,CAAAuU,UAAA,EAEtF;AACA,GAAM,CAAAlU,WAAW,CAAG7I,OAAO,CAAC,iBAAM,CAAAW,kBAAkB,CAAC6H,KAAK,CAAC,EAAE,EAAE,CAAC,CAChE,IAAAwU,WAAA,CAA8Bjd,QAAQ,CAAC8I,WAAW,CAAC,CAA5CE,OAAO,CAAAiU,WAAA,IAAEhU,UAAU,CAAAgU,WAAA,IAE1B,GAAM,CAAAC,OAAO,CAAGhd,MAAM,CAAiB,IAAI,CAAC,CAE5C,IAAAid,WAAA,CAAoCnd,QAAQ,CAAAwJ,QAAA,IACvCd,QAAQ,CAACe,GAAG,CAAC,YAAY,CAAC,CAC9B,CAAC,CAFKC,UAAU,CAAAyT,WAAA,IAAExT,aAAa,CAAAwT,WAAA,IAIhC,GACQ,CAAAC,OAAO,CAOXpU,OAAO,CAPT0F,IAAI,CAAA2O,qBAAA,CAOFrU,OAAO,CANTsU,YAAY,CAAEC,eAAe,CAAAF,qBAAA,UAAG,CAAC,CAAC,CAAAA,qBAAA,CAClClT,SAAS,CAKPnB,OAAO,CALTmB,SAAS,CAAAqT,eAAA,CAKPxU,OAAO,CAJTgT,KAAK,CAALA,KAAK,CAAAwB,eAAA,UAAG,OAAO,CAAAA,eAAA,CAAAC,kBAAA,CAIbzU,OAAO,CAHTkT,QAAQ,CAARA,QAAQ,CAAAuB,kBAAA,UAAG,UAAU,CAAAA,kBAAA,CAAAC,gBAAA,CAGnB1U,OAAO,CAFT2U,OAAO,CAAPA,OAAO,CAAAD,gBAAA,UAAG,EAAE,CAAAA,gBAAA,CACZE,UAAU,CACR5U,OAAO,CADT4U,UAAU,CAGZ,GAAM,CAAAlP,IAAI,CAAGzH,KAAK,CAACC,OAAO,CAACkW,OAAO,CAAC,CAAGA,OAAO,CAAG,EAAE,CAClD,GAAM,CAAAE,YAAY,CAAI,UAAM,CAC1B,GAAM,CAAAO,OAAO,CAAArU,QAAA,IAAQ+T,eAAe,CAAE,CAEtC,GAAI,IAAI,EAAI,CAAAM,OAAO,CAAE,CACnB,MAAO,CAAAA,OAAO,CAACC,EACjB,CAEA,GAAIpP,IAAI,CAACvG,MAAM,CAAG,CAAC,CAAE,CACnB,GAAM,CAAA0G,QAAQ,CAAGnI,MAAM,CAACC,IAAI,CAAC+H,IAAI,CAAC,CAAC,CAAC,EAAI,CAAC,CAAC,CAAC,CAE3C,MAAO,CAAAhI,MAAM,CAACqX,WAAW,CAACrX,MAAM,CAACsM,OAAO,CAAC6K,OAAO,CAAC,CAAC9O,MAAM,CAAC,SAAAiP,MAAA,KAAE,CAAAnX,GAAG,CAAAmX,MAAA,UAAM,CAAAnP,QAAQ,CAACxG,QAAQ,CAACxB,GAAG,CAAC,EAAC,CAC7F,CAEA,MAAO,CAAAgX,OACT,CAAC,CAAE,CAAC,CAEJ,GAAM,CAAAI,UAAU,CAAI,SAAAC,aAAA,CAAAC,MAAA,CAAM,CACxB,IAAAC,MAAA,EAAAF,aAAA,CAAsCxV,QAAQ,CAACe,GAAG,CAAC,gBAAgB,CAAC,QAAAyU,aAAA,CAAI,CAAC,CAAC,CAAlEG,UAAU,CAAAD,MAAA,CAAVC,UAAU,CAAEC,aAAa,CAAAF,MAAA,CAAbE,aAAa,CAEjC,MAAO,CAAAD,UAAU,EAAIC,aAAa,EAAAH,MAAA,IAAAA,MAAA,CAAME,UAAU,EAAGC,aAAa,CAAAH,MAAA,EAAK,CAAC,CAC1E,CAAC,CAAE,CAAC,CAEJ,IAAAI,WAAA,CAA0Cve,QAAQ,CAAS,CAAC,CAAC,CAAtDwe,aAAa,CAAAD,WAAA,IAAEE,gBAAgB,CAAAF,WAAA,IACtC,IAAAG,WAAA,CAAgD1e,QAAQ,CAAS,GAAG,CAAC,CAA9D2e,gBAAgB,CAAAD,WAAA,IAAEE,mBAAmB,CAAAF,WAAA,IAE5C,GAAM,CAAAG,oBAAoB,CAAG,QAAvB,CAAAA,oBAAoBA,CAAIC,UAAkB,CAAEC,QAAgB,CAAK,CACrE,GAAIP,aAAa,CAAG,CAAC,CAAE,KAAAQ,oBAAA,CACrB,GAAM,CAAAC,UAAU,CAAGH,UAAU,CAAGN,aAAa,CAC7C,GAAM,CAAAU,eAAe,CAAG,GAAG,CAC3B,GAAI,CAAAC,sBAAsB,CAAGD,eAAe,CAE5C,GAAID,UAAU,EAAI,GAAG,CAAE,CACrB,GAAM,CAAAG,YAAY,CAAG,EAAE,CACvB,GAAM,CAAAC,SAAS,CAAG,EAAE,CACpB,GAAM,CAAAC,gBAAgB,CAAGF,YAAY,CAAGL,QAAQ,CAAGM,SAAS,CAC5DF,sBAAsB,CAAGnX,IAAI,CAAC8H,GAAG,CAACwP,gBAAgB,CAAEJ,eAAe,CACrE,CAEA,GAAM,CAAAK,OAAO,CAAG7W,QAAQ,CAACe,GAAG,CAAC,IAAI,CAAC,CAClC,GAAM,CAAA+V,MAAM,CAAG9W,QAAQ,CAAC+W,EAAE,IAAAT,oBAAA,CAAItW,QAAQ,CAACgX,UAAU,eAAnBV,oBAAA,CAAqBS,EAAE,EACrD,GAAM,CAAAE,cAAc,CAAGH,MAAM,CAACI,MAAM,CAACC,WAAW,CAAC,CAAC,EAAI5a,QAAQ,CAC9D,GAAM,CAAA6a,YAAY,CAAGH,cAAc,CAACza,aAAa,qBAC5Bqa,OAAO,MAC5B,CAAgB,CAEhB,GAAIO,YAAY,CAAE,CAChB,GAAM,CAAAC,aAAa,CAAGD,YAAY,CAAC5a,aAAa,CAC9C,6BACF,CAAgB,CAEhB,GAAI6a,aAAa,EAAIA,aAAa,CAACC,YAAY,CAAG,CAAC,CAAE,CACnD,GAAM,CAAAC,kBAAkB,CAAGF,aAAa,CAACC,YAAY,CACrD,GAAM,CAAAE,oBAAoB,CAAG,EAAE,CAC/B,GAAM,CAAAC,gBAAgB,CAAGF,kBAAkB,CAAGC,oBAAoB,CAElE,GAAIC,gBAAgB,CAAG,CAAC,CAAE,CACxBhB,sBAAsB,CAAGA,sBAAsB,CAAGgB,gBACpD,CACF,CACF,CAEAvB,mBAAmB,CAACO,sBAAsB,CAC5C,CACF,CAAC,CAEDpf,SAAS,CAAC,UAAM,CACd,GAAM,CAAAqgB,mBAAmB,CAAG,QAAtB,CAAAA,mBAAmBA,CAAA,CAAS,CAChC,GAAM,CAAApb,MAAM,CAAGC,QAAQ,CAACC,aAAa,CAAC,YAAY,CAAC,CACnD,GAAM,CAAAC,YAAY,CAAIH,MAAM,cAANA,MAAM,CAAUI,aAAa,CACnD,GAAM,CAAAib,cAAc,CAAGlb,YAAY,cAAZA,YAAY,CAAEF,QAAQ,CAE7C,GAAIob,cAAc,CAAE,CAClB,GAAM,CAAAC,aAAa,CAAGD,cAAc,CAACE,cAAc,CAAC,gBAAgB,CAAC,CACrE,GAAM,CAAAC,sBAAsB,CAC1B,CAAAF,aAAa,cAAbA,aAAa,CAAEG,WAAW,GAAIJ,cAAc,CAAC1b,eAAe,CAAC8b,WAAW,CAC1EhC,gBAAgB,CAAC+B,sBAAsB,CACzC,CACF,CAAC,CAEDJ,mBAAmB,CAAC,CAAC,CACrB9M,MAAM,CAACC,gBAAgB,CAAC,QAAQ,CAAE6M,mBAAmB,CAAC,CAEtD,GAAM,CAAApb,MAAM,CAAGC,QAAQ,CAACC,aAAa,CAAC,YAAY,CAAC,CACnD,GAAM,CAAAC,YAAY,CAAIH,MAAM,cAANA,MAAM,CAAUI,aAAa,CAEnD,GAAID,YAAY,CAAE,CAChBA,YAAY,CAACoO,gBAAgB,CAAC,QAAQ,CAAE6M,mBAAmB,CAC7D,CAEA,MAAO,WAAM,CACX9M,MAAM,CAACG,mBAAmB,CAAC,QAAQ,CAAE2M,mBAAmB,CAAC,CAEzD,GAAIjb,YAAY,CAAE,CAChBA,YAAY,CAACsO,mBAAmB,CAAC,QAAQ,CAAE2M,mBAAmB,CAChE,CACF,CACF,CAAC,CAAE,EAAE,CAAC,CAENrgB,SAAS,CAAC,UAAM,CACd,GAAM,CAAA2gB,2BAA2B,CAAG,QAA9B,CAAAA,2BAA2BA,CAAA,CAAS,KAAAC,qBAAA,CACxC,GAAM,CAAApB,OAAO,CAAG7W,QAAQ,CAACe,GAAG,CAAC,IAAI,CAAC,CAClC,GAAM,CAAA+V,MAAM,CAAG9W,QAAQ,CAAC+W,EAAE,IAAAkB,qBAAA,CAAIjY,QAAQ,CAACgX,UAAU,eAAnBiB,qBAAA,CAAqBlB,EAAE,EACrD,GAAM,CAAAE,cAAc,CAAGH,MAAM,CAACI,MAAM,CAACC,WAAW,CAAC,CAAC,EAAI5a,QAAQ,CAE9D,GAAI,CAAA6a,YAAY,CAAGH,cAAc,CAACza,aAAa,qBAC1Bqa,OAAO,MAC5B,CAAgB,CAEhB,GAAI,CAACO,YAAY,EAAIxM,MAAM,CAACsN,MAAM,GAAKtN,MAAM,CAAE,CAC7CwM,YAAY,CAAGxM,MAAM,CAACsN,MAAM,CAAC3b,QAAQ,CAACC,aAAa,qBAC9Bqa,OAAO,MAC5B,CACF,CAEA,GAAI,CAACO,YAAY,CAAE,CACjB,MACF,CAEA,GAAM,CAAAe,gBAAgB,CAAGf,YAAY,CAAC/a,qBAAqB,CAAC,CAAC,CAAC8M,KAAK,CAEnE,GAAIgP,gBAAgB,CAAG,CAAC,CAAE,CACxBhC,oBAAoB,CAACgC,gBAAgB,CAAE5Z,KAAK,CAACC,OAAO,CAACwH,IAAI,CAAC,CAAGA,IAAI,CAACvG,MAAM,CAAG,CAAC,CAC9E,CACF,CAAC,CAED,GAAM,CAAAqT,SAAS,CAAGC,UAAU,CAACiF,2BAA2B,CAAE,GAAG,CAAC,CAC9DpN,MAAM,CAACC,gBAAgB,CAAC,QAAQ,CAAEmN,2BAA2B,CAAC,CAE9D,MAAO,WAAM,CACXhF,YAAY,CAACF,SAAS,CAAC,CACvBlI,MAAM,CAACG,mBAAmB,CAAC,QAAQ,CAAEiN,2BAA2B,CAClE,CACF,CAAC,CAAE,CAAC1X,OAAO,CAAEN,QAAQ,CAAE8V,aAAa,CAAE9P,IAAI,CAAEmQ,oBAAoB,CAAC,CAAC,CAElE9e,SAAS,CAAC,UAAM,CACd,GAAM,CAAA6J,iBAAiB,CAAG,QAApB,CAAAA,iBAAiBA,CAAA,CAAS,CAC9B,GAAM,CAAAC,iBAAiB,CAAGnB,QAAQ,CAACe,GAAG,CAAC,gBAAgB,CAAC,CACxD,GAAM,CAAAK,aAAa,CAAGlJ,kBAAkB,CAACiJ,iBAAiB,CAAC,CAE3DZ,UAAU,CAAC,SAACc,QAAa,SAAAP,QAAA,IACpBO,QAAQ,CACRD,aAAa,EAChB,CACJ,CAAC,CAEDpB,QAAQ,CAACsB,EAAE,CAAC,uBAAuB,CAAEJ,iBAAiB,CAAC,CAEvD,MAAO,WAAM,CACXlB,QAAQ,CAACuB,GAAG,CAAC,uBAAuB,CAAEL,iBAAiB,CACzD,CACF,CAAC,CAAE,CAAClB,QAAQ,CAAC,CAAC,CAEd3I,SAAS,CAAC,UAAM,CACd,GAAM,CAAAob,sBAAsB,CAAG,QAAzB,CAAAA,sBAAsBA,CAAA,CAAS,CACnCxR,aAAa,CAAAH,QAAA,IACRd,QAAQ,CAACe,GAAG,CAAC,YAAY,CAAC,CAC9B,CACH,CAAC,CAEDf,QAAQ,CAACsB,EAAE,CAAC,mBAAmB,CAAEmR,sBAAsB,CAAC,CAExD,MAAO,WAAM,CACXzS,QAAQ,CAACuB,GAAG,CAAC,mBAAmB,CAAEkR,sBAAsB,CAC1D,CACF,CAAC,CAAE,CAACzS,QAAQ,CAAC,CAAC,CAEd,GAAM,CAAAoY,UAAU,CAAI,UAAM,CACxB,GACE,MAAO,CAAApS,IAAI,GAAK,QAAQ,EACxBA,IAAI,GAAK,IAAI,EACb,CAACzH,KAAK,CAACC,OAAO,CAACwH,IAAI,CAAC,EACnBA,IAAI,CAASwK,IAAI,GAAK,oBAAoB,CAC3C,CACA,MAAO,EACT,CAEA,GAAI,CAACjS,KAAK,CAACC,OAAO,CAACwH,IAAI,CAAC,CAAE,CACxB,MAAO,EACT,CAEA,MAAO,CAAAA,IAAI,CAACQ,GAAG,CAAC,SAAC6R,KAAU,CAAK,CAC9B,GAAM,CAAAC,OAAO,CAAAxX,QAAA,IACRuX,KAAK,CACT,CAED,MAAO,CAAAC,OAAO,CAAClD,EAAE,CAEjB,MAAO,CAAAkD,OACT,CAAC,CACH,CAAC,CAAE,CAAC,CAAC,QAEU,CAAAC,WAAWA,CAAAC,EAAA,CAAAC,GAAA,SAAAC,YAAA,CAAArR,KAAA,MAAAsR,SAAA,WAAAD,aAAA,EAAAA,YAAA,CAAAE,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAA1B,SAAAC,QAA2BC,QAAgB,CAAEC,QAAgB,MAAA7D,EAAA,QAAAyD,mBAAA,CAAAK,IAAA,UAAAC,SAAAC,QAAA,iBAAAA,QAAA,CAAAC,IAAA,CAAAD,QAAA,CAAAE,IAAA,SACrDlE,EAAE,CAAGpV,QAAQ,CAACe,GAAG,CAAC,IAAI,CAAC,CAAAqY,QAAA,CAAAE,IAAA,SAEvB,CAAAhX,kBAAkB,CAAC,CACvB8S,EAAE,CAAE6D,QAAQ,CACZM,eAAe,CAAE,aAAa,CAC9BC,OAAO,CAAE,CACPC,GAAG,CAAEzT,IAAI,CAACgT,QAAQ,CAAC,CACnBnC,OAAO,CAAEzB,EACX,CAAC,CACDsE,kBAAkB,CAAE,EACtB,CAAC,CAAC,yBAAAN,QAAA,CAAAjM,IAAA,KAAA4L,OAAA,EACH,UAAAL,YAAA,CAAArR,KAAA,MAAAsR,SAAA,UAEc,CAAAgB,YAAYA,CAAAC,GAAA,CAAAC,GAAA,SAAAC,aAAA,CAAAzS,KAAA,MAAAsR,SAAA,WAAAmB,cAAA,EAAAA,aAAA,CAAAlB,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAA3B,SAAAiB,SAA4BC,UAAkB,CAAEC,QAAgB,MAAAC,cAAA,KAAA9E,EAAA,CAAA+E,MAAA,CAAAxE,UAAA,CAAAC,aAAA,QAAAiD,mBAAA,CAAAK,IAAA,UAAAkB,UAAAC,SAAA,iBAAAA,SAAA,CAAAhB,IAAA,CAAAgB,SAAA,CAAAf,IAAA,SACxDlE,EAAE,CAAGpV,QAAQ,CAACe,GAAG,CAAC,IAAI,CAAC,CAAAoZ,MAAA,EAAAD,cAAA,CACSla,QAAQ,CAACe,GAAG,CAAC,gBAAgB,CAAC,QAAAmZ,cAAA,CAAI,CAAC,CAAC,CAAlEvE,UAAU,CAAAwE,MAAA,CAAVxE,UAAU,CAAEC,aAAa,CAAAuE,MAAA,CAAbvE,aAAa,CAAAyE,SAAA,CAAAf,IAAA,SAE3B,CAAAhX,kBAAkB,CAAC,CACvB8S,EAAE,CAAFA,EAAE,CACFmE,eAAe,CAAE,YAAY,CAC7BC,OAAO,CAAA1Y,QAAA,EACLkZ,UAAU,CAAVA,UAAU,CACVC,QAAQ,CAARA,QAAQ,EACJtE,UAAU,EAAIC,aAAa,EAAI,CAAED,UAAU,CAAVA,UAAU,CAAEC,aAAa,CAAbA,aAAc,CAAC,CACjE,CACD8D,kBAAkB,CAAEpe,+BAA+B,CAAC,CAAC8Z,EAAE,CAAC,CAAE,IAAI,CAChE,CAAC,CAAC,yBAAAiF,SAAA,CAAAlN,IAAA,KAAA4M,QAAA,EACH,UAAAD,aAAA,CAAAzS,KAAA,MAAAsR,SAAA,UAEc,CAAA2B,UAAUA,CAAAC,GAAA,CAAAC,GAAA,SAAAC,WAAA,CAAApT,KAAA,MAAAsR,SAAA,WAAA8B,YAAA,EAAAA,WAAA,CAAA7B,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAAzB,SAAA4B,SAA0BC,MAAc,CAAEC,SAAwB,MAAAtV,YAAA,CAAA8P,EAAA,QAAAyD,mBAAA,CAAAK,IAAA,UAAA2B,UAAAC,SAAA,iBAAAA,SAAA,CAAAzB,IAAA,CAAAyB,SAAA,CAAAxB,IAAA,SAC1DhU,YAAY,CAAGtF,QAAQ,CAACe,GAAG,CAAC,gBAAgB,CAAC,CAC7CqU,EAAE,CAAGpV,QAAQ,CAACe,GAAG,CAAC,IAAI,CAAC,CAE7Bf,QAAQ,CAACuF,GAAG,CAAC,gBAAgB,CAAAzE,QAAA,IACxBwE,YAAY,EACfqQ,UAAU,CAAEiF,SAAS,CAAGD,MAAM,CAAG,IAAI,CACrC/E,aAAa,CAAEgF,SAAS,EACzB,CAAC,CAACE,SAAA,CAAAxB,IAAA,SAEG,CAAAhX,kBAAkB,CAAC,CACvB8S,EAAE,CAAFA,EAAE,CACFmE,eAAe,CAAE,WAAW,CAC5BC,OAAO,CAAE,CACP7D,UAAU,CAAEiF,SAAS,CAAGD,MAAM,CAAG,IAAI,CACrC/E,aAAa,CAAEgF,SAAS,CACxB/D,OAAO,CAAEzB,EACX,CAAC,CACDsE,kBAAkB,CAAEpe,+BAA+B,CAAC,CAAC8Z,EAAE,CAAC,CAAE,IAAI,CAChE,CAAC,CAAC,yBAAA0F,SAAA,CAAA3N,IAAA,KAAAuN,QAAA,EACH,UAAAD,WAAA,CAAApT,KAAA,MAAAsR,SAAA,EAED,mBACE/c,KAAA,CAACzB,IAAI,EACH8T,GAAG,CAAEuG,OAAQ,CACb/S,SAAS,CAAC,4DAA4D,CACtE,sBAAoB,OAAO,CAC3B,gBAAezB,QAAQ,CAACe,GAAG,CAAC,IAAI,CAAE,CAAAe,QAAA,eAElCpG,IAAA,CAACnB,UAAU,EAAAuH,QAAA,cACTpG,IAAA,QAAK+F,SAAS,CAAC,kCAAkC,CAAAK,QAAA,cAC/ClG,KAAA,QAAK6F,SAAS,CAAC,QAAQ,CAAAK,QAAA,eACrBpG,IAAA,CAAClB,SAAS,EAAC,YAAU,OAAO,CAACqH,eAAe,CAAED,UAAW,CAACH,SAAS,CAAC,UAAU,CAAAK,QAAA,CAC3EwR,KAAK,CACG,CAAC,cACZ5X,IAAA,CAACrB,eAAe,EAAC,YAAU,UAAU,CAACwH,eAAe,CAAED,UAAW,CAACH,SAAS,CAAC,SAAS,CAAAK,QAAA,CACnF0R,QAAQ,CACM,CAAC,EACf,CAAC,CACH,CAAC,CACI,CAAC,cACb9X,IAAA,CAACtB,WAAW,EACV,YAAU,aAAa,CACvByH,eAAe,CAAE,KAAM,CACvBJ,SAAS,CAAC,sCAAsC,CAAAK,QAAA,CAE/Cd,UAAU,CAACe,KAAK,EAAIzB,OAAO,CAACyB,KAAK,EAAIf,UAAU,CAACgB,SAAS,EAAI1B,OAAO,CAAC0B,SAAS,CAC7EvK,oBAAoB,CAAC,CAAC,cAEtBiE,IAAA,CAACH,SAAS,EACRyK,IAAI,CAAEoS,UAAW,CACjBxD,YAAY,CAAEA,YAAa,CAC3BnT,SAAS,CAAEA,SAAU,CACrBG,UAAU,CAAEA,UAAW,CACvBqT,OAAO,CAAEA,OAAQ,CACjBC,UAAU,CAAEA,UAAW,CACvB1Q,SAAS,CAAExD,UAAU,CAACyD,wBAAwB,EAAIzD,UAAU,CAAC0D,OAAQ,CACrE6T,WAAW,CAAEA,WAAY,CACzBoB,YAAY,CAAEA,YAAa,CAC3BoB,MAAM,CAAET,UAAW,CACnB/E,UAAU,CAAEA,UAAW,CACvByF,UAAU,CAAE/a,IAAK,CACjBmJ,MAAM,CAAE6M,gBAAiB,CAC1B,CACF,CACU,CAAC,cACdva,IAAA,CAACzD,gBAAgB,EACf0N,WAAW,CAAE3F,QAAQ,CAACe,GAAG,CAAC,IAAI,CAAE,CAChCuB,kBAAkB,CAAEA,kBAAmB,CACvCsD,QAAQ,CAAC,WAAW,CACpBqV,YAAY,CAAEhG,OAAQ,CACtBiG,YAAY,CAAE3c,KAAK,CAACC,OAAO,CAACwH,IAAI,CAAC,EAAIA,IAAI,CAACvG,MAAM,CAAG,CAAC,CAAGuG,IAAI,CAAC,CAAC,CAAC,CAAG,CAAC,CAAE,CACpEH,SAAS,CAAEjE,UAAW,CACtBkE,cAAc,CAAExF,OAAQ,CACzB,CAAC,EACE,CAEV,CAEA,MAAO,SAAS,CAAA6a,SAASA,CAACpb,KAAU,CAAe,CACjD,GAAI,CAAAqb,SAAS,CAAG,GAAG,CACnB,GAAM,CAAAC,QAAQ,CAAG9c,KAAK,CAACC,OAAO,CAACuB,KAAK,CAACub,IAAI,CAAC,CAAGvb,KAAK,CAACub,IAAI,CAAG,EAAE,CAC5D,GAAM,CAAAC,YAAY,CAAGF,QAAQ,CAAC5b,MAAM,GAAK,CAAC,CAE1C,GAAI4b,QAAQ,CAAC5b,MAAM,CAAG,CAAC,CAAE,CACvB2b,SAAS,CAAG,GACd,CAEA,GAAM,CAAAI,YAAY,CAAGzb,KAAK,CAACyb,YAAY,GAAKH,QAAQ,CAAC5b,MAAM,CAAG,CAAC,CAAG4b,QAAQ,CAAC,CAAC,CAAC,CAAG9U,SAAS,CAAC,CAE1F,mBACE3K,KAAA,CAACX,IAAI,EAACugB,YAAY,CAAEA,YAAa,CAAA1Z,QAAA,eAC/BpG,IAAA,QAAK+F,SAAS,CAAC,kBAAkB,CAAAK,QAAA,cAC/BpG,IAAA,CAACP,QAAQ,EAACsG,SAAS,CAAC,4DAA4D,CAAAK,QAAA,CAC7EuZ,QAAQ,CAAC5b,MAAM,CAAG,CAAC,CAClB4b,QAAQ,CAAC7U,GAAG,CAAC,SAACiV,GAAW,qBACvB/f,IAAA,CAACN,WAAW,EACV0D,KAAK,CAAE2c,GAAI,CAEXha,SAAS,2BACF2Z,SAAS,kdAKd,CACF1Z,KAAK,CAAE,CACLga,UAAU,CAAE,gBAAgB,CAC5B7L,UAAU,CAAE,GAAG,CACfjB,QAAQ,CAAE,MAAM,CAChB+M,UAAU,CAAE,MAAM,CAClBC,aAAa,CAAE,IACjB,CAAE,CAAA9Z,QAAA,CAED2Z,GAAG,EAhBCA,GAiBM,CAAC,CACf,CAAC,cAEF/f,IAAA,CAACN,WAAW,EACV0D,KAAK,CAAC,SAAS,CACf2C,SAAS,yBACF2Z,SAAS,wcAKd,CACF1Z,KAAK,CAAE,CACLga,UAAU,CAAE,gBAAgB,CAC5B7L,UAAU,CAAE,GAAG,CACfjB,QAAQ,CAAE,MAAM,CAChB+M,UAAU,CAAE,MAAM,CAClBC,aAAa,CAAE,IACjB,CAAE,CACFC,QAAQ,MAAA/Z,QAAA,CACT,SAED,CAAa,CACd,CACO,CAAC,CACR,CAAC,CACLyZ,YAAY,cACX7f,IAAA,CAACR,WAAW,EACV4D,KAAK,CAAE0c,YAAY,EAAI,SAAU,CACjC/Z,SAAS,CAAC,cAAc,CACxB,gBAAc,MAAM,CAAAK,QAAA,CAEnBrK,oBAAoB,CAAC,CAAC,CACZ,CAAC,CAEd4jB,QAAQ,CAAC7U,GAAG,CAAC,SAACiV,GAAW,qBACvB/f,IAAA,CAACR,WAAW,EAAC4D,KAAK,CAAE2c,GAAI,CAACha,SAAS,CAAC,cAAc,EAAMga,GAAM,CAAC,CAC/D,CACF,EACG,CAEV,CAEA,MAAO,SAAS,CAAAK,cAAcA,CAAC/b,KAAU,CAAe,CACtD,IAAAgc,kBAAA,CAAkDhc,KAAK,CAA/C6B,UAAU,CAAVA,UAAU,CAAAma,kBAAA,UAAG,KAAK,CAAAA,kBAAA,CAAE/b,QAAQ,CAAcD,KAAK,CAA3BC,QAAQ,CAAKC,IAAI,CAAAC,6BAAA,CAAKH,KAAK,CAAAic,UAAA,EAEvD;AACA,GAAM,CAAA5b,WAAW,CAAG7I,OAAO,CAAC,iBAAM,CAAAW,kBAAkB,CAAC6H,KAAK,CAAC,EAAE,EAAE,CAAC,CAChE,IAAAkc,WAAA,CAA8B3kB,QAAQ,CAAC8I,WAAW,CAAC,CAA5CE,OAAO,CAAA2b,WAAA,IAAE1b,UAAU,CAAA0b,WAAA,IAE1B,IAAAC,WAAA,CAAoC5kB,QAAQ,CAAAwJ,QAAA,IACvCd,QAAQ,CAACe,GAAG,CAAC,YAAY,CAAC,CAC9B,CAAC,CAFKC,UAAU,CAAAkb,WAAA,IAAEjb,aAAa,CAAAib,WAAA,IAIhC7kB,SAAS,CAAC,UAAM,CACd,GAAM,CAAA6J,iBAAiB,CAAG,QAApB,CAAAA,iBAAiBA,CAAA,CAAS,CAC9B,GAAM,CAAAC,iBAAiB,CAAGnB,QAAQ,CAACe,GAAG,CAAC,gBAAgB,CAAC,CACxD,GAAM,CAAAK,aAAa,CAAGlJ,kBAAkB,CAACiJ,iBAAiB,CAAC,CAE3DZ,UAAU,CAAC,SAACc,QAAa,SAAAP,QAAA,IACpBO,QAAQ,CACRD,aAAa,EAChB,CACJ,CAAC,CAEDpB,QAAQ,CAACsB,EAAE,CAAC,uBAAuB,CAAEJ,iBAAiB,CAAC,CAEvD,MAAO,WAAM,CACXlB,QAAQ,CAACuB,GAAG,CAAC,uBAAuB,CAAEL,iBAAiB,CACzD,CACF,CAAC,CAAE,CAAClB,QAAQ,CAAC,CAAC,CAEd3I,SAAS,CAAC,UAAM,CACd,GAAM,CAAAob,sBAAsB,CAAG,QAAzB,CAAAA,sBAAsBA,CAAA,CAAS,CACnCxR,aAAa,CAAAH,QAAA,IACRd,QAAQ,CAACe,GAAG,CAAC,YAAY,CAAC,CAC9B,CACH,CAAC,CAEDf,QAAQ,CAACsB,EAAE,CAAC,mBAAmB,CAAEmR,sBAAsB,CAAC,CAExD,MAAO,WAAM,CACXzS,QAAQ,CAACuB,GAAG,CAAC,mBAAmB,CAAEkR,sBAAsB,CAC1D,CACF,CAAC,CAAE,CAACzS,QAAQ,CAAC,CAAC,CAEd,IAAAmc,WAAA,CAAkC7kB,QAAQ,CAAC,KAAK,CAAC,CAA1C8kB,SAAS,CAAAD,WAAA,IAAEE,YAAY,CAAAF,WAAA,IAC9B,IAAAG,WAAA,CAAgDhlB,QAAQ,CAAC,KAAK,CAAC,CAAxDilB,gBAAgB,CAAAD,WAAA,IAAEE,mBAAmB,CAAAF,WAAA,IAC5C,GAAM,CAAAG,OAAO,CAAGjlB,MAAM,CAAiB,IAAI,CAAC,CAC5C,GAAM,CAAAklB,cAAc,CAAGllB,MAAM,CAAiB,IAAI,CAAC,CAEnD,GAAM,CAAAmlB,YAAY,CAAG,QAAf,CAAAA,YAAYA,CAAA,CAAS,CACzBN,YAAY,CAAC,IAAI,CAAC,CAClBtJ,UAAU,CAAC,UAAM,CACf6J,WAAW,CAAC,CACd,CAAC,CAAE,CAAC,CACN,CAAC,CAED,GAAM,CAAAC,mBAAmB,CAAG,QAAtB,CAAAA,mBAAmBA,CAAA,CAAS,CAChCL,mBAAmB,CAAC,IAAI,CAAC,CACzBzJ,UAAU,CAAC,UAAM,CACf+J,kBAAkB,CAAC,CACrB,CAAC,CAAE,CAAC,CACN,CAAC,CAED,GAAM,CAAAF,WAAW,CAAG,QAAd,CAAAA,WAAWA,CAAA,CAAS,CACxB,GAAI,CAACH,OAAO,CAACvS,OAAO,CAAE,CACpB,MACF,CAEA,GAAM,CAAA4M,MAAM,CAAG2F,OAAO,CAACvS,OAAO,CAC9B4M,MAAM,CAACiG,SAAS,CAAG,EAAE,CACrBjG,MAAM,CAAC3R,WAAW,CAAG7E,OAAO,CAAC0c,WAAW,CACxClG,MAAM,CAACmG,KAAK,CAAC,CACf,CAAC,CAED,GAAM,CAAAH,kBAAkB,CAAG,QAArB,CAAAA,kBAAkBA,CAAA,CAAS,CAC/B,GAAI,CAACJ,cAAc,CAACxS,OAAO,CAAE,CAC3B,MACF,CAEA,GAAM,CAAA4M,MAAM,CAAG4F,cAAc,CAACxS,OAAO,CACrC4M,MAAM,CAACiG,SAAS,CAAG,EAAE,CACrBjG,MAAM,CAAC3R,WAAW,CAAG7E,OAAO,CAAC4c,cAAc,EAAI,UAAU,CACzDpG,MAAM,CAACmG,KAAK,CAAC,CACf,CAAC,CAED;AACA,GAAM,CAAAE,WAAW,CAAG,QAAd,CAAAA,WAAWA,CAAA,CAAS,CACxB,GAAI,CAACV,OAAO,CAACvS,OAAO,CAAE,CACpB,MACF,CAEA,GAAM,CAAAhF,OAAO,CAAGuX,OAAO,CAACvS,OAAO,CAACkT,SAAS,EAAI,EAAE,CAC/C7c,UAAU,CAAC,SAAC8Y,IAAyB,SAAAvY,QAAA,IAChCuY,IAAI,EACP2D,WAAW,CAAE9X,OAAO,GACpB,CAAC,CACHmX,YAAY,CAAC,KAAK,CAAC,CACnBI,OAAO,CAACvS,OAAO,CAAC6S,SAAS,CAAG,EAC9B,CAAC,CAED,GAAM,CAAAM,kBAAkB,CAAG,QAArB,CAAAA,kBAAkBA,CAAA,CAAS,CAC/B,GAAI,CAACX,cAAc,CAACxS,OAAO,CAAE,CAC3B,MACF,CAEA,GAAM,CAAAhF,OAAO,CAAGwX,cAAc,CAACxS,OAAO,CAACkT,SAAS,EAAI,UAAU,CAC9D7c,UAAU,CAAC,SAAC8Y,IAAyB,SAAAvY,QAAA,IAChCuY,IAAI,EACP6D,cAAc,CAAEhY,OAAO,GACvB,CAAC,CACHsX,mBAAmB,CAAC,KAAK,CAAC,CAC1BE,cAAc,CAACxS,OAAO,CAAC6S,SAAS,CAAG,EACrC,CAAC,CAED,GAAM,CAAAO,cAAc,CAAG,CACrBC,EAAE,CAAE,CAAExd,KAAK,CAAE,CAAE0B,SAAS,CAAE,WAAY,CAAE,CAAC,CACzC+b,EAAE,CAAE,CAAEzd,KAAK,CAAE,CAAE0B,SAAS,CAAE,mCAAoC,CAAE,CAAC,CACjEgc,EAAE,CAAE,CAAE1d,KAAK,CAAE,CAAE0B,SAAS,CAAE,mCAAoC,CAAE,CAAC,CACjEic,EAAE,CAAE,CAAE3d,KAAK,CAAE,CAAE0B,SAAS,CAAE,mCAAoC,CAAE,CAAC,CACjEkc,EAAE,CAAE,CAAE5d,KAAK,CAAE,CAAE0B,SAAS,CAAE,oCAAqC,CAAE,CAAC,CAClEmc,EAAE,CAAE,CAAE7d,KAAK,CAAE,CAAE0B,SAAS,CAAE,oCAAqC,CAAE,CAAC,CAClEoc,EAAE,CAAE,CAAE9d,KAAK,CAAE,CAAE0B,SAAS,CAAE,oCAAqC,CAAE,CACnE,CAAC,CAED,GAAM,CAAA4C,QAAQ,CAAGrD,UAAU,CAACe,KAAK,EAAIzB,OAAO,CAACyB,KAAK,CAClD,GAAM,CAAAwC,UAAU,CAAGvD,UAAU,CAACgB,SAAS,EAAI1B,OAAO,CAAC0B,SAAS,CAC5D,GAAM,CAAAwC,SAAS,CACZxD,UAAU,CAAC0D,OAAO,EAAI,CAACL,QAAQ,EAAI,CAACE,UAAU,EAAKvD,UAAU,CAACyD,wBAAwB,CAEzF,GAAID,SAAS,CAAE,CACb,mBAAO9I,IAAA,CAACV,cAAc,GAAE,CAC1B,CAEA,GAAIqJ,QAAQ,EAAIE,UAAU,CAAE,CAC1B,mBACE3I,KAAA,OAAAkF,QAAA,EAAKW,SAAS,CAAC,mBAAmB,EAAKxB,IAAI,EAAA6B,QAAA,eACzCpG,IAAA,OAAI+F,SAAS,CAAC,iCAAiC,CAAAK,QAAA,CAAExB,OAAO,CAAC4c,cAAc,EAAI,UAAU,CAAK,CAAC,cAC3FthB,KAAA,QACE6F,SAAS,CAAC,wEAAwE,CAClFC,KAAK,CAAE,CAAEoc,SAAS,CAAE,OAAQ,CAAE,CAAAhc,QAAA,eAE9BpG,IAAA,CAAChE,WAAW,EAAC+J,SAAS,CAAC,8BAA8B,CAAE,CAAC,cACxD/F,IAAA,OAAI+F,SAAS,CAAC,mCAAmC,CAAAK,QAAA,CAAC,mBAAiB,CAAI,CAAC,cACxEpG,IAAA,MAAG+F,SAAS,CAAC,qCAAqC,CAAAK,QAAA,CAAC,mDAEnD,CAAG,CAAC,EACD,CAAC,cACNpG,IAAA,CAACzD,gBAAgB,EACf0N,WAAW,CAAE3F,QAAQ,CAACe,GAAG,CAAC,IAAI,CAAE,CAChCuB,kBAAkB,CAAEvC,KAAK,CAACuC,kBAAmB,CAC7CsD,QAAQ,CAAC,WAAW,CACpBC,SAAS,CAAEjE,UAAW,CACtBkE,cAAc,CAAExF,OAAQ,CACzB,CAAC,GACC,CAET,CAEA,GAAI,CAACA,OAAO,CAACsB,UAAU,CAAE,CACvB,mBACEhG,KAAA,OAAAkF,QAAA,EAAKW,SAAS,CAAC,mBAAmB,EAAKxB,IAAI,EAAA6B,QAAA,eACzCpG,IAAA,OAAI+F,SAAS,CAAC,iCAAiC,CAAAK,QAAA,CAAExB,OAAO,CAAC4c,cAAc,EAAI,UAAU,CAAK,CAAC,cAC3FxhB,IAAA,QAAK,YAAU,aAAa,CAAAoG,QAAA,cAC1BpG,IAAA,CAACtD,QAAQ,EAAC2lB,OAAO,CAAE,CAAEC,SAAS,CAAEV,cAAe,CAAE,CAAAxb,QAAA,CAAExB,OAAO,CAAC0c,WAAW,CAAW,CAAC,CAC/E,CAAC,cACNthB,IAAA,CAACzD,gBAAgB,EACf0N,WAAW,CAAE3F,QAAQ,CAACe,GAAG,CAAC,IAAI,CAAE,CAChCuB,kBAAkB,CAAEvC,KAAK,CAACuC,kBAAmB,CAC7CsD,QAAQ,CAAC,WAAW,CACpBC,SAAS,CAAEjE,UAAW,CACtBkE,cAAc,CAAExF,OAAQ,CACzB,CAAC,GACC,CAET,CAEA,mBACE1E,KAAA,OAAAkF,QAAA,EAAKW,SAAS,CAAC,kBAAkB,EAAKxB,IAAI,EAAA6B,QAAA,EACvCya,gBAAgB,cACf7gB,IAAA,QACEuS,GAAG,CAAEyO,cAAe,CACpB7a,eAAe,MACfoc,MAAM,CAAEZ,kBAAmB,CAC3B,YAAU,gBAAgB,CAC1B5b,SAAS,CAAC,iCAAiC,CAC3Cyc,8BAA8B,CAAE,IAAK,CACtC,CAAC,cAEFxiB,IAAA,OACE+F,SAAS,CAAC,iCAAiC,CAC3C0c,OAAO,CAAEtB,mBAAoB,CAC7B,YAAU,gBAAgB,CAAA/a,QAAA,CAEzBxB,OAAO,CAAC4c,cAAc,EAAI,UAAU,CACnC,CACL,CACAd,SAAS,cACR1gB,IAAA,QACEuS,GAAG,CAAEwO,OAAQ,CACb5a,eAAe,MACfoc,MAAM,CAAEd,WAAY,CACpB,YAAU,aAAa,CACvB1b,SAAS,CAAC,uCAAuC,CACjDyc,8BAA8B,CAAE,IAAK,CACrCxc,KAAK,CAAE,CACL0c,UAAU,CAAE,UAAU,CACtBC,QAAQ,CAAE,YACZ,CAAE,CACH,CAAC,cAEF3iB,IAAA,QACEyiB,OAAO,CAAExB,YAAa,CACtB,YAAU,aAAa,CACvBjb,KAAK,CAAE,CACL0c,UAAU,CAAE,UAAU,CACtBC,QAAQ,CAAE,YACZ,CAAE,CAAAvc,QAAA,cAEFpG,IAAA,CAACtD,QAAQ,EAAC2lB,OAAO,CAAE,CAAEC,SAAS,CAAEV,cAAe,CAAE,CAAAxb,QAAA,CAAExB,OAAO,CAAC0c,WAAW,CAAW,CAAC,CAC/E,CACN,cACDthB,IAAA,CAACzD,gBAAgB,EACf0N,WAAW,CAAE3F,QAAQ,CAACe,GAAG,CAAC,IAAI,CAAE,CAChCuB,kBAAkB,CAAEvC,KAAK,CAACuC,kBAAmB,CAC7CsD,QAAQ,CAAC,WAAW,CACpBC,SAAS,CAAEjE,UAAW,CACtBkE,cAAc,CAAExF,OAAQ,CACzB,CAAC,GACC,CAET,CAEA,MAAO,SAAS,CAAAge,YAAYA,CAACve,KAAU,CAAe,CACpD,IAAAwe,kBAAA,CAAwExe,KAAK,CAArE6B,UAAU,CAAVA,UAAU,CAAA2c,kBAAA,UAAG,KAAK,CAAAA,kBAAA,CAAEve,QAAQ,CAAoCD,KAAK,CAAjDC,QAAQ,CAAAwe,sBAAA,CAAoCze,KAAK,CAAvCuC,kBAAkB,CAAlBA,kBAAkB,CAAAkc,sBAAA,UAAG,UAAM,CAAC,CAAC,CAAAA,sBAAA,CAEnE,IAAAC,WAAA,CAA8BnnB,QAAQ,CAAAwJ,QAAA,IACjCf,KAAK,CACT,CAAC,CAFKO,OAAO,CAAAme,WAAA,IAAEle,UAAU,CAAAke,WAAA,IAI1B,IAAAC,WAAA,CAAoCpnB,QAAQ,CAAAwJ,QAAA,IACvCd,QAAQ,CAACe,GAAG,CAAC,YAAY,CAAC,CAC9B,CAAC,CAFKC,UAAU,CAAA0d,WAAA,IAAEzd,aAAa,CAAAyd,WAAA,IAIhCrnB,SAAS,CAAC,UAAM,CACd2I,QAAQ,CAACsB,EAAE,CAAC,uBAAuB,CAAE,UAAM,CACzCf,UAAU,CAAAO,QAAA,IACLd,QAAQ,CAACe,GAAG,CAAC,gBAAgB,CAAC,CAClC,CACH,CAAC,CACH,CAAC,CAAE,EAAE,CAAC,CAEN1J,SAAS,CAAC,UAAM,CACd2I,QAAQ,CAACsB,EAAE,CAAC,mBAAmB,CAAE,UAAM,CACrCL,aAAa,CAAAH,QAAA,IACRd,QAAQ,CAACe,GAAG,CAAC,YAAY,CAAC,CAC9B,CACH,CAAC,CACH,CAAC,CAAE,EAAE,CAAC,CAEN,GACE,CAAA4d,IAAI,CAOFre,OAAO,CAPTqe,IAAI,CACJld,SAAS,CAMPnB,OAAO,CANTmB,SAAS,CACT+X,OAAO,CAKLlZ,OAAO,CALTkZ,OAAO,CAAAoF,gBAAA,CAKLte,OAAO,CAJTue,OAAO,CAAPA,OAAO,CAAAD,gBAAA,UAAG,SAAS,CAAAA,gBAAA,CAAAE,aAAA,CAIjBxe,OAAO,CAHTye,IAAI,CAAJA,IAAI,CAAAD,aAAA,UAAG,IAAI,CAAAA,aAAA,CACXpF,kBAAkB,CAEhBpZ,OAAO,CAFToZ,kBAAkB,CAClBsF,cAAc,CACZ1e,OAAO,CADT0e,cAAc,CAGhB,QAAS,CAAAC,QAAQA,CAAA,CAAG,CAClB,GAAM,CAAA7J,EAAE,CAAGpV,QAAQ,CAACe,GAAG,CAAC,IAAI,CAAC,CAC7BuB,kBAAkB,CAAC,CACjB8S,EAAE,CAAFA,EAAE,CACFmE,eAAe,CAAE,QAAQ,CACzBG,kBAAkB,CAAEpe,+BAA+B,EAAE8Z,EAAE,EAAApH,MAAA,CAAK0L,kBAAkB,EAAG,IAAI,CAAC,CACtFF,OAAO,CAAPA,OACF,CAAC,CACH,CAEA,mBACE9d,IAAA,CAACxB,aAAa,EACZuH,SAAS,CAAEA,SAAU,CACrBG,UAAU,CAAEA,UAAW,CACvBqd,QAAQ,CAAEA,QAAS,CACnBje,UAAU,CAAEA,UAAW,CACvB6d,OAAO,CAAEA,OAAQ,CACjBE,IAAI,CAAEA,IAAK,CACXJ,IAAI,CAAEA,IAAK,CACXK,cAAc,CAAEA,cAAe,CAChC,CAEL,CAEA,GAAM,CAAAE,2BAA2B,CAAG,QAA9B,CAAAA,2BAA2BA,CAAInf,KAAU,qBAC7CrE,IAAA,CAACF,gBAAgB,EAACsK,cAAc,CAAAhF,QAAA,IAAOf,KAAK,EAAEof,aAAa,CAAE,YAAY,EAAG,CAAArd,QAAA,CACzEhC,gBAAgB,CAACC,KAAK,CAAC,CACR,CAAC,CACpB,CAED,GAAM,CAAAqf,uBAAuB,CAAG,QAA1B,CAAAA,uBAAuBA,CAAIrf,KAAU,qBACzCrE,IAAA,CAACF,gBAAgB,EAACsK,cAAc,CAAAhF,QAAA,IAAOf,KAAK,EAAEof,aAAa,CAAE,QAAQ,EAAG,CAAArd,QAAA,CACrEwc,YAAY,CAACve,KAAK,CAAC,CACJ,CAAC,CACpB,CAED,GAAM,CAAAsf,qBAAqB,CAAG,QAAxB,CAAAA,qBAAqBA,CAAItf,KAAU,qBACvCrE,IAAA,CAACF,gBAAgB,EAACsK,cAAc,CAAAhF,QAAA,IAAOf,KAAK,EAAEof,aAAa,CAAE,MAAM,EAAG,CAAArd,QAAA,CACnEG,UAAU,CAAClC,KAAK,CAAC,CACF,CAAC,CACpB,CAED,GAAM,CAAAuf,sBAAsB,CAAG,QAAzB,CAAAA,sBAAsBA,CAAIvf,KAAU,qBACxCrE,IAAA,CAACF,gBAAgB,EAACsK,cAAc,CAAAhF,QAAA,IAAOf,KAAK,EAAEof,aAAa,CAAE,OAAO,EAAG,CAAArd,QAAA,CACpEkQ,WAAW,CAACjS,KAAK,CAAC,CACH,CAAC,CACpB,CAED,GAAM,CAAAwf,uBAAuB,CAAG,QAA1B,CAAAA,uBAAuBA,CAAIxf,KAAU,qBACzCrE,IAAA,CAACF,gBAAgB,EAACsK,cAAc,CAAAhF,QAAA,IAAOf,KAAK,EAAEof,aAAa,CAAE,QAAQ,EAAG,CAAArd,QAAA,CACrElH,YAAY,CAACmF,KAAK,CAAC,CACJ,CAAC,CACpB,CAED,GAAM,CAAAyf,yBAAyB,CAAG,QAA5B,CAAAA,yBAAyBA,CAAIzf,KAAU,qBAC3CrE,IAAA,CAACF,gBAAgB,EAACsK,cAAc,CAAAhF,QAAA,IAAOf,KAAK,EAAEof,aAAa,CAAE,UAAU,EAAG,CAAArd,QAAA,CACvEga,cAAc,CAAC/b,KAAK,CAAC,CACN,CAAC,CACpB,CAED,GAAM,CAAA0f,uBAAuB,CAAG,QAA1B,CAAAA,uBAAuBA,CAAI1f,KAAU,qBACzCrE,IAAA,CAACF,gBAAgB,EAACsK,cAAc,CAAAhF,QAAA,IAAOf,KAAK,EAAEof,aAAa,CAAE,QAAQ,EAAG,CAAArd,QAAA,CACrEjH,YAAY,CAACkF,KAAK,CAAC,CACJ,CAAC,CACpB,CAED,GAAM,CAAA2f,sBAAsB,CAAG,QAAzB,CAAAA,sBAAsBA,CAAI3f,KAAU,qBACxCrE,IAAA,CAACF,gBAAgB,EAACsK,cAAc,CAAAhF,QAAA,IAAOf,KAAK,EAAEof,aAAa,CAAE,OAAO,EAAG,CAAArd,QAAA,CACpEqS,WAAW,CAACpU,KAAK,CAAC,CACH,CAAC,CACpB,CAED,GAAM,CAAA4f,oBAAoB,CAAG,QAAvB,CAAAA,oBAAoBA,CAAI5f,KAAU,qBACtCrE,IAAA,CAACF,gBAAgB,EAACsK,cAAc,CAAAhF,QAAA,IAAOf,KAAK,EAAEof,aAAa,CAAE,MAAM,EAAG,CAAArd,QAAA,CACnEqZ,SAAS,CAACpb,KAAK,CAAC,CACD,CAAC,CACpB,CAED,QAAS,CAAA6f,aAAaA,CAAC7f,KAAU,CAAe,CAC9C,GAAQ,CAAAkV,OAAO,CAAmClV,KAAK,CAA/CkV,OAAO,CAAA4K,kBAAA,CAAmC9f,KAAK,CAAtC6B,UAAU,CAAVA,UAAU,CAAAie,kBAAA,UAAG,KAAK,CAAAA,kBAAA,CAAE7f,QAAQ,CAAKD,KAAK,CAAlBC,QAAQ,CAE7C,GAAIiV,OAAO,GAAK,IAAI,CAAE,CACpB,mBAAOvZ,IAAA,SAAM,CACf,CAEA,GAAI,CAAC6C,KAAK,CAACC,OAAO,CAACyW,OAAO,CAAC,EAAIA,OAAO,CAACxV,MAAM,GAAK,CAAC,CAAE,CACnD,mBACE/D,IAAA,QAAK+F,SAAS,CAAC,qFAAqF,CAAAK,QAAA,cAClGpG,IAAA,CAACZ,UAAU,GAAE,CAAC,CACX,CAET,CAEA,mBACEY,IAAA,QAAK+F,SAAS,CAAC,sCAAsC,CAAAK,QAAA,CAClDmT,OAAO,CAACzO,GAAG,CAAC,SAACsZ,MAAW,CAAE9X,KAAa,CAAK,CAC3C,GAAQ,CAAAtH,IAAI,CAAyBof,MAAM,CAAnCpf,IAAI,CAAE4S,KAAK,CAAkBwM,MAAM,CAA7BxM,KAAK,CAAEyM,WAAW,CAAKD,MAAM,CAAtBC,WAAW,CAEhC,mBACErkB,IAAA,QAAiB+F,SAAS,CAAC,sBAAsB,CAAAK,QAAA,CAC9ChC,gBAAgB,CAAC,CAChBY,IAAI,CAAJA,IAAI,CACJD,aAAa,CAAE6S,KAAK,CACpB1S,WAAW,CAAEmf,WAAW,CACxBne,UAAU,CAAVA,UAAU,CACV5B,QAAQ,CAARA,QACF,CAAC,CAAC,EAPMgI,KAQL,CAET,CAAC,CAAC,CACC,CAET,CAEA,GAAM,CAAAgY,wBAAwB,CAAG,QAA3B,CAAAA,wBAAwBA,CAAIjgB,KAAU,qBAC1CrE,IAAA,CAACF,gBAAgB,EAACsK,cAAc,CAAAhF,QAAA,IAAOf,KAAK,EAAEof,aAAa,CAAE,SAAS,EAAG,CAAArd,QAAA,CACtE8d,aAAa,CAAC7f,KAAK,CAAC,CACL,CAAC,CACpB,CAED,MAAO,SAAS,CAAAkgB,YAAYA,CAAA,CAAgD,CAC1E,MAAO,CACLC,UAAU,CAAEhB,2BAA2B,CACvCiB,OAAO,CAAEH,wBAAwB,CACjCI,MAAM,CAAEhB,uBAAuB,CAC/BjlB,IAAI,CAAEklB,qBAAqB,CAC3BgB,KAAK,CAAEf,sBAAsB,CAC7BgB,MAAM,CAAEf,uBAAuB,CAC/BnnB,QAAQ,CAAEonB,yBAAyB,CACnCe,MAAM,CAAEd,uBAAuB,CAC/Be,KAAK,CAAEd,sBAAsB,CAC7BzkB,IAAI,CAAE0kB,oBACR,CACF","ignoreList":[]}
|