{"version":3,"file":"visualization-widget-CsBv0VlF.cjs","names":["__iconNode","createLucideIcon","createLucideIcon"],"sources":["../node_modules/lucide-react/dist/esm/icons/chevrons-left.js","../node_modules/lucide-react/dist/esm/icons/chevrons-right.js","../src/components/ui/visualization-widget.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"m11 17-5-5 5-5\", key: \"13zhaf\" }],\n  [\"path\", { d: \"m18 17-5-5 5-5\", key: \"h8a8et\" }]\n];\nconst ChevronsLeft = createLucideIcon(\"chevrons-left\", __iconNode);\n\nexport { __iconNode, ChevronsLeft as default };\n//# sourceMappingURL=chevrons-left.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"m6 17 5-5-5-5\", key: \"xnjwq\" }],\n  [\"path\", { d: \"m13 17 5-5-5-5\", key: \"17xmmf\" }]\n];\nconst ChevronsRight = createLucideIcon(\"chevrons-right\", __iconNode);\n\nexport { __iconNode, ChevronsRight as default };\n//# sourceMappingURL=chevrons-right.js.map\n","import { ChevronsLeft, ChevronsRight } from 'lucide-react';\nimport React from 'react';\nimport { cn } from '@/lib/utils';\nimport { Button } from './button';\n\nconst VisualizationWidget = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n  ({ className, children, ...props }, ref) => {\n    return (\n      <div className={cn('@container w-full border border-stroke', className)} ref={ref} {...props}>\n        {children}\n      </div>\n    );\n  },\n);\nVisualizationWidget.displayName = 'VisualizationWidget';\n\nconst VisualizationWidgetHeaderContext = React.createContext<{\n  selectedValue?: string;\n  activeItemClass?: string;\n  hoverItemClass?: string;\n  onValueChange: (value: string) => void;\n}>({\n  selectedValue: undefined,\n  hoverItemClass: undefined,\n  activeItemClass: undefined,\n  onValueChange: () => {},\n});\n\ninterface VisualizationWidgetHeaderProps\n  extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n  defaultValue?: string;\n  activeItemClass?: string;\n  hoverItemClass?: string;\n  onChange?: (value: string) => void;\n}\n\nconst VisualizationWidgetHeader = React.forwardRef<HTMLDivElement, VisualizationWidgetHeaderProps>(\n  (\n    { className, children, defaultValue, activeItemClass, hoverItemClass, onChange, ...props },\n    ref,\n  ) => {\n    const [selectedValue, setSelectedValue] = React.useState<string>(defaultValue || '');\n\n    // Handler for checkbox changes\n    const handleValueChange = React.useCallback(\n      (itemValue: string) => {\n        setSelectedValue(itemValue);\n\n        // Call onChange handler if provided\n        onChange?.(itemValue);\n      },\n      [onChange],\n    );\n    const contextValue = React.useMemo(\n      () => ({\n        activeItemClass,\n        selectedValue,\n        hoverItemClass,\n        onValueChange: handleValueChange,\n      }),\n      [selectedValue, activeItemClass, hoverItemClass, handleValueChange],\n    );\n    return (\n      <VisualizationWidgetHeaderContext.Provider value={contextValue}>\n        <div className={cn('flex w-full gap-0 bg-surface-sm', className)} ref={ref} {...props}>\n          {children}\n        </div>\n      </VisualizationWidgetHeaderContext.Provider>\n    );\n  },\n);\nVisualizationWidgetHeader.displayName = 'VisualizationWidgetHeader';\n\nconst VisualizationWidgetHeaderItem = React.forwardRef<\n  HTMLButtonElement,\n  React.ButtonHTMLAttributes<HTMLButtonElement> & { value: string }\n>(({ className, children, value, ...props }, ref) => {\n  const { selectedValue, activeItemClass, hoverItemClass, onValueChange } = React.useContext(\n    VisualizationWidgetHeaderContext,\n  );\n  return (\n    <button\n      ref={ref}\n      type='button'\n      {...props}\n      onClick={() => onValueChange(value)}\n      className={cn(\n        'flex grow cursor-pointer flex-col items-center justify-center gap-1 border-0 border-r border-r-stroke bg-surface-2xs p-3 font-medium text-content-secondary text-sm last:border-r-0',\n        selectedValue === value ? activeItemClass || 'bg-background text-primary' : '',\n        hoverItemClass ? `hover:${hoverItemClass}` : 'hover:bg-background',\n        className,\n      )}\n    >\n      {children}\n    </button>\n  );\n});\nVisualizationWidgetHeaderItem.displayName = 'VisualizationWidgetHeaderItem';\n\nconst VisualizationWidgetBody = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, children, ...props }, ref) => {\n  return (\n    <div\n      className={cn(\n        'flex @3xl:max-h-[80vh] max-h-none @3xl:flex-row flex-col flex-wrap items-stretch gap-0',\n        className,\n      )}\n      ref={ref}\n      {...props}\n    >\n      {children}\n    </div>\n  );\n});\nVisualizationWidgetBody.displayName = 'VisualizationWidgetBody';\n\nconst VisualizationWidgetBodySidebar = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement> & {\n    collapsible?: {\n      enabled: boolean;\n      triggerButtonClassName?: string;\n      triggerButtonChildren?: React.ReactNode;\n      triggerButtonStyles?: React.CSSProperties;\n      defaultCollapsed?: boolean;\n    };\n  }\n>(({ className, children, collapsible, ...props }, ref) => {\n  const [collapsed, setCollapsed] = React.useState(collapsible?.defaultCollapsed || false);\n  return (\n    <div\n      className={cn(\n        'undp-scrollbar @3xl:max-h-[80vh] max-h-none @3xl:border-r @3xl:border-r-stroke border-r-0 bg-surface',\n        collapsed ? '@3xl:w-10 w-full px-2 py-4' : '@3xl:w-1/3 @7xl:w-1/4 @8xl:w-1/5 w-full p-4',\n        className,\n      )}\n      ref={ref}\n      {...props}\n    >\n      <div className='relative @3xl:block hidden w-full'>\n        {collapsible?.enabled !== false ? (\n          <Button\n            type='button'\n            variant='surface-hard'\n            size='sm'\n            padding='none'\n            onClick={() => setCollapsed(!collapsed)}\n            className={cn(\n              'absolute top-0 right-0 flex h-6 w-6 rounded-full p-0 text-content-primary normal-case',\n              collapsible?.triggerButtonClassName,\n            )}\n            style={collapsible?.triggerButtonStyles}\n            arrow={false}\n          >\n            {collapsible?.triggerButtonChildren ||\n              (collapsed ? <ChevronsRight /> : <ChevronsLeft />)}\n          </Button>\n        ) : null}\n      </div>\n      {collapsible?.enabled !== false && collapsed ? null : children}\n    </div>\n  );\n});\nVisualizationWidgetBodySidebar.displayName = 'VisualizationWidgetBodySidebar';\n\nconst VisualizationWidgetBodyContent = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, children, ...props }, ref) => {\n  return (\n    <div\n      className={cn(\n        'undp-scrollbar flex @3xl:max-h-[80vh] max-h-none w-full flex-1 flex-wrap bg-background',\n        className,\n      )}\n      ref={ref}\n      {...props}\n    >\n      {children}\n    </div>\n  );\n});\nVisualizationWidgetBodyContent.displayName = 'VisualizationWidgetBodyContent';\n\nexport {\n  VisualizationWidget,\n  VisualizationWidgetBody,\n  VisualizationWidgetBodyContent,\n  VisualizationWidgetBodySidebar,\n  VisualizationWidgetHeader,\n  VisualizationWidgetHeaderItem,\n};\n"],"x_google_ignoreList":[0,1],"mappings":"iOAaA,IAAM,EAAeC,EAAAA,EAAiB,gBAAiBD,CAHrD,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAS,CAAC,EAC/C,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAS,CAAC,CAEMA,CAAU,ECA3D,EAAgBE,EAAAA,EAAiB,iBAAkB,CAHvD,CAAC,OAAQ,CAAE,EAAG,gBAAiB,IAAK,OAAQ,CAAC,EAC7C,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAS,CAAC,CAEQ,CAAU,ECR7D,EAAsB,EAAA,QAAM,YAC/B,CAAE,YAAW,WAAU,GAAG,GAAS,KAEhC,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,EAAG,yCAA0C,CAAS,EAAQ,MAAK,GAAI,EACpF,UACE,CAAA,CAGX,EACA,EAAoB,YAAc,sBAElC,IAAM,EAAmC,EAAA,QAAM,cAK5C,CACD,cAAe,IAAA,GACf,eAAgB,IAAA,GAChB,gBAAiB,IAAA,GACjB,kBAAqB,CAAC,CACxB,CAAC,EAUK,EAA4B,EAAA,QAAM,YAEpC,CAAE,YAAW,WAAU,eAAc,kBAAiB,iBAAgB,WAAU,GAAG,GACnF,IACG,CACH,GAAM,CAAC,EAAe,GAAoB,EAAA,QAAM,SAAiB,GAAgB,EAAE,EAG7E,EAAoB,EAAA,QAAM,YAC7B,GAAsB,CACrB,EAAiB,CAAS,EAG1B,IAAW,CAAS,CACtB,EACA,CAAC,CAAQ,CACX,EACM,EAAe,EAAA,QAAM,aAClB,CACL,kBACA,gBACA,iBACA,cAAe,CACjB,GACA,CAAC,EAAe,EAAiB,EAAgB,CAAiB,CACpE,EACA,OACE,EAAA,EAAA,IAAA,CAAC,EAAiC,SAAlC,CAA2C,MAAO,YAChD,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,EAAG,kCAAmC,CAAS,EAAQ,MAAK,GAAI,EAC7E,UACE,CAAA,CACoC,CAAA,CAE/C,CACF,EACA,EAA0B,YAAc,4BAExC,IAAM,EAAgC,EAAA,QAAM,YAGzC,CAAE,YAAW,WAAU,QAAO,GAAG,GAAS,IAAQ,CACnD,GAAM,CAAE,gBAAe,kBAAiB,iBAAgB,iBAAkB,EAAA,QAAM,WAC9E,CACF,EACA,OACE,EAAA,EAAA,IAAA,CAAC,SAAD,CACO,MACL,KAAK,SACL,GAAI,EACJ,YAAe,EAAc,CAAK,EAClC,UAAW,EAAA,EACT,sLACA,IAAkB,EAAQ,GAAmB,6BAA+B,GAC5E,EAAiB,SAAS,IAAmB,sBAC7C,CACF,EAEC,UACK,CAAA,CAEZ,CAAC,EACD,EAA8B,YAAc,gCAE5C,IAAM,EAA0B,EAAA,QAAM,YAGnC,CAAE,YAAW,WAAU,GAAG,GAAS,KAElC,EAAA,EAAA,IAAA,CAAC,MAAD,CACE,UAAW,EAAA,EACT,yFACA,CACF,EACK,MACL,GAAI,EAEH,UACE,CAAA,CAER,EACD,EAAwB,YAAc,0BAEtC,IAAM,EAAiC,EAAA,QAAM,YAW1C,CAAE,YAAW,WAAU,cAAa,GAAG,GAAS,IAAQ,CACzD,GAAM,CAAC,EAAW,GAAgB,EAAA,QAAM,SAAS,GAAa,kBAAoB,EAAK,EACvF,OACE,EAAA,EAAA,KAAA,CAAC,MAAD,CACE,UAAW,EAAA,EACT,uGACA,EAAY,6BAA+B,8CAC3C,CACF,EACK,MACL,GAAI,WAPN,EASE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,6CACZ,GAAa,UAAY,GAiBtB,MAhBF,EAAA,EAAA,IAAA,CAAC,EAAA,OAAD,CACE,KAAK,SACL,QAAQ,eACR,KAAK,KACL,QAAQ,OACR,YAAe,EAAa,CAAC,CAAS,EACtC,UAAW,EAAA,EACT,wFACA,GAAa,sBACf,EACA,MAAO,GAAa,oBACpB,MAAO,YAEN,GAAa,wBACX,GAAY,EAAA,EAAA,IAAA,CAAC,EAAD,CAAgB,CAAA,GAAI,EAAA,EAAA,IAAA,CAAC,EAAD,CAAe,CAAA,EAC5C,CAAA,CAEP,CAAA,EACJ,GAAa,UAAY,IAAS,EAAY,KAAO,CACnD,GAET,CAAC,EACD,EAA+B,YAAc,iCAE7C,IAAM,EAAiC,EAAA,QAAM,YAG1C,CAAE,YAAW,WAAU,GAAG,GAAS,KAElC,EAAA,EAAA,IAAA,CAAC,MAAD,CACE,UAAW,EAAA,EACT,yFACA,CACF,EACK,MACL,GAAI,EAEH,UACE,CAAA,CAER,EACD,EAA+B,YAAc"}