@sqlrooms/room-shell 0.27.0 → 0.28.0-rc.0

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/dist/RoomShell.js CHANGED
@@ -32,7 +32,7 @@ export const LayoutComposer = ({ className, tileClassName }) => {
32
32
  }
33
33
  return (_jsx(ErrorBoundary, { children: _jsx(PanelComp, {}) }, panelId));
34
34
  };
35
- return (_jsx("div", { className: cn('flex h-full w-full flex-grow flex-col items-stretch', className), children: layout ? (_jsx(MosaicLayout, { renderTile: renderTile, value: layout.nodes, onChange: handleLayoutChange, tileClassName: tileClassName })) : null }));
35
+ return (_jsx("div", { className: cn('flex h-full w-full grow flex-col items-stretch', className), children: layout ? (_jsx(MosaicLayout, { renderTile: renderTile, value: layout.nodes, onChange: handleLayoutChange, tileClassName: tileClassName })) : null }));
36
36
  };
37
37
  export const LoadingProgress = ({ className }) => {
38
38
  const loadingProgress = useBaseRoomShellStore((state) => state.room.getLoadingProgress());
@@ -1 +1 @@
1
- {"version":3,"file":"RoomShell.js","sourceRoot":"","sources":["../src/RoomShell.tsx"],"names":[],"mappings":"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","sourcesContent":["import {MosaicLayout} from '@sqlrooms/layout';\nimport {RoomStateProvider} from '@sqlrooms/room-store';\nimport {\n cn,\n ErrorBoundary,\n ProgressModal,\n SpinnerPane,\n Toaster,\n TooltipProvider,\n} from '@sqlrooms/ui';\nimport {FC, PropsWithChildren, Suspense, useCallback} from 'react';\nimport {MosaicNode} from 'react-mosaic-component';\nimport {\n RoomShellSidebarButtons,\n SidebarButton,\n} from './RoomShellSidebarButtons';\nimport {RoomShellStore, useBaseRoomShellStore} from './RoomShellSlice';\n\nexport function RoomShellBase({\n className,\n children,\n roomStore,\n}: React.PropsWithChildren<{\n className?: string;\n roomStore?: RoomShellStore;\n}>) {\n return (\n <RoomStateProvider roomStore={roomStore}>\n <div className={cn('flex h-full w-full', className)}>\n <ErrorBoundary>\n <Suspense fallback={<SpinnerPane h=\"100%\" />}>\n <TooltipProvider>{children}</TooltipProvider>\n <Toaster />\n </Suspense>\n </ErrorBoundary>\n </div>\n </RoomStateProvider>\n );\n}\n\nexport const RoomSidebar: FC<PropsWithChildren<{className?: string}>> = ({\n className,\n children,\n}) => {\n return (\n <div\n className={cn(\n 'bg-muted/70 flex h-full w-12 flex-col items-center px-1 py-4',\n className,\n )}\n >\n <RoomShellSidebarButtons />\n {children}\n </div>\n );\n};\n\nexport const LayoutComposer: FC<{\n className?: string;\n tileClassName?: string;\n}> = ({className, tileClassName}) => {\n const layout = useBaseRoomShellStore((state) => state.layout.config);\n const setLayout = useBaseRoomShellStore((state) => state.layout.setLayout);\n const panels = useBaseRoomShellStore((state) => state.layout.panels);\n const ErrorBoundary = useBaseRoomShellStore(\n (state) => state.room.CustomErrorBoundary,\n );\n\n const handleLayoutChange = useCallback(\n (nodes: MosaicNode<string> | null) => {\n // Keep layout properties, e.g. 'pinned' and 'fixed'\n setLayout({...layout, nodes});\n },\n [setLayout, layout],\n );\n\n // const visibleRoomPanels = useMemo(\n // () => getVisibleMosaicLayoutPanels(layout?.nodes),\n // [layout],\n // );\n\n const renderTile = (panelId: string) => {\n // const panelId = visibleRoomPanels.find((p) => p === id);\n const PanelComp = panelId && panels[panelId]?.component;\n if (!PanelComp) {\n return <></>;\n }\n return (\n <ErrorBoundary key={panelId}>\n <PanelComp />\n </ErrorBoundary>\n );\n };\n\n return (\n <div\n className={cn(\n 'flex h-full w-full flex-grow flex-col items-stretch',\n className,\n )}\n >\n {layout ? (\n <MosaicLayout\n renderTile={renderTile}\n value={layout.nodes}\n onChange={handleLayoutChange}\n tileClassName={tileClassName}\n />\n ) : null}\n </div>\n );\n};\n\nexport const LoadingProgress: FC<{className?: string}> = ({className}) => {\n const loadingProgress = useBaseRoomShellStore((state) =>\n state.room.getLoadingProgress(),\n );\n return (\n <ProgressModal\n className={className}\n isOpen={loadingProgress !== undefined}\n title=\"Loading\"\n loadingStage={loadingProgress?.message}\n indeterminate={true}\n // progress={loadingProgress?.progress}\n />\n );\n};\n\nexport const RoomShell = Object.assign(RoomShellBase, {\n Sidebar: RoomSidebar,\n SidebarButton: SidebarButton,\n SidebarButtons: RoomShellSidebarButtons,\n LayoutComposer: LayoutComposer,\n LoadingProgress: LoadingProgress,\n});\n"]}
1
+ {"version":3,"file":"RoomShell.js","sourceRoot":"","sources":["../src/RoomShell.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,EAAE,EACF,aAAa,EACb,aAAa,EACb,WAAW,EACX,OAAO,EACP,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAwB,QAAQ,EAAE,WAAW,EAAC,MAAM,OAAO,CAAC;AAEnE,OAAO,EACL,uBAAuB,EACvB,aAAa,GACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAiB,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AAEvE,MAAM,UAAU,aAAa,CAAC,EAC5B,SAAS,EACT,QAAQ,EACR,SAAS,GAIT;IACA,OAAO,CACL,KAAC,iBAAiB,IAAC,SAAS,EAAE,SAAS,YACrC,cAAK,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE,SAAS,CAAC,YACjD,KAAC,aAAa,cACZ,MAAC,QAAQ,IAAC,QAAQ,EAAE,KAAC,WAAW,IAAC,CAAC,EAAC,MAAM,GAAG,aAC1C,KAAC,eAAe,cAAE,QAAQ,GAAmB,EAC7C,KAAC,OAAO,KAAG,IACF,GACG,GACZ,GACY,CACrB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAgD,CAAC,EACvE,SAAS,EACT,QAAQ,GACT,EAAE,EAAE;IACH,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,8DAA8D,EAC9D,SAAS,CACV,aAED,KAAC,uBAAuB,KAAG,EAC1B,QAAQ,IACL,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAGtB,CAAC,EAAC,SAAS,EAAE,aAAa,EAAC,EAAE,EAAE;IAClC,MAAM,MAAM,GAAG,qBAAqB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,qBAAqB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,qBAAqB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,qBAAqB,CACzC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAC1C,CAAC;IAEF,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,KAAgC,EAAE,EAAE;QACnC,oDAAoD;QACpD,SAAS,CAAC,EAAC,GAAG,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC;IAChC,CAAC,EACD,CAAC,SAAS,EAAE,MAAM,CAAC,CACpB,CAAC;IAEF,qCAAqC;IACrC,uDAAuD;IACvD,cAAc;IACd,KAAK;IAEL,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,EAAE;QACrC,2DAA2D;QAC3D,MAAM,SAAS,GAAG,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;QACxD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,mBAAK,CAAC;QACf,CAAC;QACD,OAAO,CACL,KAAC,aAAa,cACZ,KAAC,SAAS,KAAG,IADK,OAAO,CAEX,CACjB,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,gDAAgD,EAChD,SAAS,CACV,YAEA,MAAM,CAAC,CAAC,CAAC,CACR,KAAC,YAAY,IACX,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,QAAQ,EAAE,kBAAkB,EAC5B,aAAa,EAAE,aAAa,GAC5B,CACH,CAAC,CAAC,CAAC,IAAI,GACJ,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAA6B,CAAC,EAAC,SAAS,EAAC,EAAE,EAAE;IACvE,MAAM,eAAe,GAAG,qBAAqB,CAAC,CAAC,KAAK,EAAE,EAAE,CACtD,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAChC,CAAC;IACF,OAAO,CACL,KAAC,aAAa,IACZ,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,eAAe,KAAK,SAAS,EACrC,KAAK,EAAC,SAAS,EACf,YAAY,EAAE,eAAe,EAAE,OAAO,EACtC,aAAa,EAAE,IAAI,GAEnB,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;IACpD,OAAO,EAAE,WAAW;IACpB,aAAa,EAAE,aAAa;IAC5B,cAAc,EAAE,uBAAuB;IACvC,cAAc,EAAE,cAAc;IAC9B,eAAe,EAAE,eAAe;CACjC,CAAC,CAAC","sourcesContent":["import {MosaicLayout} from '@sqlrooms/layout';\nimport {RoomStateProvider} from '@sqlrooms/room-store';\nimport {\n cn,\n ErrorBoundary,\n ProgressModal,\n SpinnerPane,\n Toaster,\n TooltipProvider,\n} from '@sqlrooms/ui';\nimport {FC, PropsWithChildren, Suspense, useCallback} from 'react';\nimport {MosaicNode} from 'react-mosaic-component';\nimport {\n RoomShellSidebarButtons,\n SidebarButton,\n} from './RoomShellSidebarButtons';\nimport {RoomShellStore, useBaseRoomShellStore} from './RoomShellSlice';\n\nexport function RoomShellBase({\n className,\n children,\n roomStore,\n}: React.PropsWithChildren<{\n className?: string;\n roomStore?: RoomShellStore;\n}>) {\n return (\n <RoomStateProvider roomStore={roomStore}>\n <div className={cn('flex h-full w-full', className)}>\n <ErrorBoundary>\n <Suspense fallback={<SpinnerPane h=\"100%\" />}>\n <TooltipProvider>{children}</TooltipProvider>\n <Toaster />\n </Suspense>\n </ErrorBoundary>\n </div>\n </RoomStateProvider>\n );\n}\n\nexport const RoomSidebar: FC<PropsWithChildren<{className?: string}>> = ({\n className,\n children,\n}) => {\n return (\n <div\n className={cn(\n 'bg-muted/70 flex h-full w-12 flex-col items-center px-1 py-4',\n className,\n )}\n >\n <RoomShellSidebarButtons />\n {children}\n </div>\n );\n};\n\nexport const LayoutComposer: FC<{\n className?: string;\n tileClassName?: string;\n}> = ({className, tileClassName}) => {\n const layout = useBaseRoomShellStore((state) => state.layout.config);\n const setLayout = useBaseRoomShellStore((state) => state.layout.setLayout);\n const panels = useBaseRoomShellStore((state) => state.layout.panels);\n const ErrorBoundary = useBaseRoomShellStore(\n (state) => state.room.CustomErrorBoundary,\n );\n\n const handleLayoutChange = useCallback(\n (nodes: MosaicNode<string> | null) => {\n // Keep layout properties, e.g. 'pinned' and 'fixed'\n setLayout({...layout, nodes});\n },\n [setLayout, layout],\n );\n\n // const visibleRoomPanels = useMemo(\n // () => getVisibleMosaicLayoutPanels(layout?.nodes),\n // [layout],\n // );\n\n const renderTile = (panelId: string) => {\n // const panelId = visibleRoomPanels.find((p) => p === id);\n const PanelComp = panelId && panels[panelId]?.component;\n if (!PanelComp) {\n return <></>;\n }\n return (\n <ErrorBoundary key={panelId}>\n <PanelComp />\n </ErrorBoundary>\n );\n };\n\n return (\n <div\n className={cn(\n 'flex h-full w-full grow flex-col items-stretch',\n className,\n )}\n >\n {layout ? (\n <MosaicLayout\n renderTile={renderTile}\n value={layout.nodes}\n onChange={handleLayoutChange}\n tileClassName={tileClassName}\n />\n ) : null}\n </div>\n );\n};\n\nexport const LoadingProgress: FC<{className?: string}> = ({className}) => {\n const loadingProgress = useBaseRoomShellStore((state) =>\n state.room.getLoadingProgress(),\n );\n return (\n <ProgressModal\n className={className}\n isOpen={loadingProgress !== undefined}\n title=\"Loading\"\n loadingStage={loadingProgress?.message}\n indeterminate={true}\n // progress={loadingProgress?.progress}\n />\n );\n};\n\nexport const RoomShell = Object.assign(RoomShellBase, {\n Sidebar: RoomSidebar,\n SidebarButton: SidebarButton,\n SidebarButtons: RoomShellSidebarButtons,\n LayoutComposer: LayoutComposer,\n LoadingProgress: LoadingProgress,\n});\n"]}
@@ -12,7 +12,7 @@ const FileDataSourceCard = (props) => {
12
12
  const handleRemoveFromRoom = useCallback(() => {
13
13
  removeRoomFile(fileInfo.pathname);
14
14
  }, [fileInfo.pathname, removeRoomFile]);
15
- return (_jsxs("div", { className: "flex flex-col gap-1 p-2", children: [_jsxs("div", { className: "flex cursor-pointer flex-row items-center gap-1", children: [_jsx("div", { className: "w-[15px] flex-none", children: _jsx(FileTextIcon, { className: "w-[15px]" }) }), _jsx("div", { className: "flex-1 overflow-hidden text-ellipsis whitespace-nowrap", children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { className: "break-words text-xs", children: filename }) }), _jsx(TooltipContent, { side: "bottom", children: _jsx("pre", { className: "w-[300px] text-wrap break-words text-xs", children: pathname }) })] }) }), _jsx("div", { className: "flex-none", children: !isReadOnly ? (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { size: "icon", variant: "ghost", className: "text-muted-foreground h-6 w-6", children: _jsx(EllipsisIcon, { className: "h-5 w-5" }) }) }), _jsxs(DropdownMenuContent, { align: "end", children: [_jsxs(DropdownMenuItem, { onClick: handleRemoveFromRoom, children: [_jsx(XIcon, { className: "mr-2 h-4 w-4" }), "Remove file"] }), _jsxs(DropdownMenuItem, { disabled: true, children: [_jsx(FileDownIcon, { className: "mr-2 h-4 w-4" }), "Download file"] })] })] })) : null })] }), _jsxs("div", { className: "flex flex-row items-center gap-1", children: [fileState?.status === 'error' ? (_jsx("div", { className: "bg-destructive/15 text-destructive flex-1 rounded p-1 text-xs", children: fileState.message })) : fileState?.status === 'download' ||
15
+ return (_jsxs("div", { className: "flex flex-col gap-1 p-2", children: [_jsxs("div", { className: "flex cursor-pointer flex-row items-center gap-1", children: [_jsx("div", { className: "w-[15px] flex-none", children: _jsx(FileTextIcon, { className: "w-[15px]" }) }), _jsx("div", { className: "flex-1 overflow-hidden text-ellipsis whitespace-nowrap", children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { className: "text-xs wrap-break-word", children: filename }) }), _jsx(TooltipContent, { side: "bottom", children: _jsx("pre", { className: "w-[300px] text-xs text-wrap wrap-break-word", children: pathname }) })] }) }), _jsx("div", { className: "flex-none", children: !isReadOnly ? (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { size: "icon", variant: "ghost", className: "text-muted-foreground h-6 w-6", children: _jsx(EllipsisIcon, { className: "h-5 w-5" }) }) }), _jsxs(DropdownMenuContent, { align: "end", children: [_jsxs(DropdownMenuItem, { onClick: handleRemoveFromRoom, children: [_jsx(XIcon, { className: "mr-2 h-4 w-4" }), "Remove file"] }), _jsxs(DropdownMenuItem, { disabled: true, children: [_jsx(FileDownIcon, { className: "mr-2 h-4 w-4" }), "Download file"] })] })] })) : null })] }), _jsxs("div", { className: "flex flex-row items-center gap-1", children: [fileState?.status === 'error' ? (_jsx("div", { className: "bg-destructive/15 text-destructive flex-1 rounded p-1 text-xs", children: fileState.message })) : fileState?.status === 'download' ||
16
16
  fileState?.status === 'upload' ? (_jsx("div", { className: "bg-secondary h-1 w-full overflow-hidden rounded", children: _jsx("div", { className: "bg-primary h-full transition-all duration-300", style: {
17
17
  width: `${(fileState.progress?.ratio ?? 0) * 100}%`,
18
18
  } }) })) : null, _jsx("div", { className: "flex-none", children: size !== undefined ? (_jsx("span", { className: "text-muted-foreground min-w-[70px] text-right text-xs", children: formatBytes(size) })) : null }), _jsx("div", { className: "cursor-pointer", title: fileState?.status === 'done'
@@ -1 +1 @@
1
- {"version":3,"file":"FileDataSourceCard.js","sourceRoot":"","sources":["../../src/data-sources/FileDataSourceCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from '@sqlrooms/ui';\nimport {formatBytes, splitFilePath} from '@sqlrooms/utils';\nimport {\n CloudDownloadIcon,\n CloudIcon,\n CloudUploadIcon,\n EllipsisIcon,\n FileDownIcon,\n FileTextIcon,\n XIcon,\n} from 'lucide-react';\nimport {FC, useCallback} from 'react';\nimport {useBaseRoomShellStore} from '../RoomShellSlice';\nimport {RoomFileInfo, RoomFileState} from '../types';\nconst FileDataSourceCard: FC<{\n isReadOnly?: boolean;\n fileInfo: RoomFileInfo;\n fileState?: RoomFileState;\n}> = (props) => {\n const {isReadOnly, fileInfo, fileState} = props;\n const {pathname, size} = fileInfo;\n const {filename} = splitFilePath(pathname);\n const removeRoomFile = useBaseRoomShellStore(\n (state) => state.room.removeRoomFile,\n );\n const handleRemoveFromRoom = useCallback(() => {\n removeRoomFile(fileInfo.pathname);\n }, [fileInfo.pathname, removeRoomFile]);\n\n return (\n <div className=\"flex flex-col gap-1 p-2\">\n <div className=\"flex cursor-pointer flex-row items-center gap-1\">\n <div className=\"w-[15px] flex-none\">\n <FileTextIcon className=\"w-[15px]\" />\n </div>\n <div className=\"flex-1 overflow-hidden text-ellipsis whitespace-nowrap\">\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"break-words text-xs\">{filename}</span>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n <pre className=\"w-[300px] text-wrap break-words text-xs\">\n {pathname}\n </pre>\n </TooltipContent>\n </Tooltip>\n </div>\n <div className=\"flex-none\">\n {!isReadOnly ? (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"text-muted-foreground h-6 w-6\"\n >\n <EllipsisIcon className=\"h-5 w-5\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={handleRemoveFromRoom}>\n <XIcon className=\"mr-2 h-4 w-4\" />\n Remove file\n </DropdownMenuItem>\n <DropdownMenuItem disabled>\n <FileDownIcon className=\"mr-2 h-4 w-4\" />\n Download file\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n ) : null}\n </div>\n </div>\n <div className=\"flex flex-row items-center gap-1\">\n {fileState?.status === 'error' ? (\n <div className=\"bg-destructive/15 text-destructive flex-1 rounded p-1 text-xs\">\n {fileState.message}\n </div>\n ) : fileState?.status === 'download' ||\n fileState?.status === 'upload' ? (\n <div className=\"bg-secondary h-1 w-full overflow-hidden rounded\">\n <div\n className=\"bg-primary h-full transition-all duration-300\"\n style={{\n width: `${(fileState.progress?.ratio ?? 0) * 100}%`,\n }}\n />\n </div>\n ) : null}\n <div className=\"flex-none\">\n {size !== undefined ? (\n <span className=\"text-muted-foreground min-w-[70px] text-right text-xs\">\n {formatBytes(size)}\n </span>\n ) : null}\n </div>\n <div\n className=\"cursor-pointer\"\n title={\n fileState?.status === 'done'\n ? 'File synced'\n : fileState?.status === 'download'\n ? 'Downloading file…'\n : fileState?.status === 'upload'\n ? 'Uploading file…'\n : fileState?.status === 'error'\n ? `Failed to sync file: ${fileState.message}`\n : 'File not synced'\n }\n >\n {fileState?.status === 'done' ? (\n <CloudIcon className=\"w-[15px] text-green-400\" />\n ) : fileState?.status === 'download' ? (\n <CloudDownloadIcon className=\"w-[15px] text-orange-400\" />\n ) : fileState?.status === 'upload' ? (\n <CloudUploadIcon className=\"w-[15px] text-orange-400\" />\n ) : fileState?.status === 'error' ? (\n <CloudIcon className=\"text-destructive w-[15px]\" />\n ) : (\n <CloudIcon className=\"w-[15px] text-orange-400\" />\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport {FileDataSourceCard};\n"]}
1
+ {"version":3,"file":"FileDataSourceCard.js","sourceRoot":"","sources":["../../src/data-sources/FileDataSourceCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,OAAO,EACP,cAAc,EACd,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,WAAW,EAAE,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,KAAK,GACN,MAAM,cAAc,CAAC;AACtB,OAAO,EAAK,WAAW,EAAC,MAAM,OAAO,CAAC;AACtC,OAAO,EAAC,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AAExD,MAAM,kBAAkB,GAInB,CAAC,KAAK,EAAE,EAAE;IACb,MAAM,EAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAC,GAAG,KAAK,CAAC;IAChD,MAAM,EAAC,QAAQ,EAAE,IAAI,EAAC,GAAG,QAAQ,CAAC;IAClC,MAAM,EAAC,QAAQ,EAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAG,qBAAqB,CAC1C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CACrC,CAAC;IACF,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5C,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IAExC,OAAO,CACL,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAK,SAAS,EAAC,iDAAiD,aAC9D,cAAK,SAAS,EAAC,oBAAoB,YACjC,KAAC,YAAY,IAAC,SAAS,EAAC,UAAU,GAAG,GACjC,EACN,cAAK,SAAS,EAAC,wDAAwD,YACrE,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,eAAM,SAAS,EAAC,yBAAyB,YAAE,QAAQ,GAAQ,GAC5C,EACjB,KAAC,cAAc,IAAC,IAAI,EAAC,QAAQ,YAC3B,cAAK,SAAS,EAAC,6CAA6C,YACzD,QAAQ,GACL,GACS,IACT,GACN,EACN,cAAK,SAAS,EAAC,WAAW,YACvB,CAAC,UAAU,CAAC,CAAC,CAAC,CACb,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,KAAC,MAAM,IACL,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,+BAA+B,YAEzC,KAAC,YAAY,IAAC,SAAS,EAAC,SAAS,GAAG,GAC7B,GACW,EACtB,MAAC,mBAAmB,IAAC,KAAK,EAAC,KAAK,aAC9B,MAAC,gBAAgB,IAAC,OAAO,EAAE,oBAAoB,aAC7C,KAAC,KAAK,IAAC,SAAS,EAAC,cAAc,GAAG,mBAEjB,EACnB,MAAC,gBAAgB,IAAC,QAAQ,mBACxB,KAAC,YAAY,IAAC,SAAS,EAAC,cAAc,GAAG,qBAExB,IACC,IACT,CAChB,CAAC,CAAC,CAAC,IAAI,GACJ,IACF,EACN,eAAK,SAAS,EAAC,kCAAkC,aAC9C,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAC/B,cAAK,SAAS,EAAC,+DAA+D,YAC3E,SAAS,CAAC,OAAO,GACd,CACP,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,UAAU;wBAClC,SAAS,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CACjC,cAAK,SAAS,EAAC,iDAAiD,YAC9D,cACE,SAAS,EAAC,+CAA+C,EACzD,KAAK,EAAE;gCACL,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG;6BACpD,GACD,GACE,CACP,CAAC,CAAC,CAAC,IAAI,EACR,cAAK,SAAS,EAAC,WAAW,YACvB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CACpB,eAAM,SAAS,EAAC,uDAAuD,YACpE,WAAW,CAAC,IAAI,CAAC,GACb,CACR,CAAC,CAAC,CAAC,IAAI,GACJ,EACN,cACE,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EACH,SAAS,EAAE,MAAM,KAAK,MAAM;4BAC1B,CAAC,CAAC,aAAa;4BACf,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,UAAU;gCAChC,CAAC,CAAC,mBAAmB;gCACrB,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,QAAQ;oCAC9B,CAAC,CAAC,iBAAiB;oCACnB,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO;wCAC7B,CAAC,CAAC,wBAAwB,SAAS,CAAC,OAAO,EAAE;wCAC7C,CAAC,CAAC,iBAAiB,YAG5B,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAC9B,KAAC,SAAS,IAAC,SAAS,EAAC,yBAAyB,GAAG,CAClD,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CACrC,KAAC,iBAAiB,IAAC,SAAS,EAAC,0BAA0B,GAAG,CAC3D,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CACnC,KAAC,eAAe,IAAC,SAAS,EAAC,0BAA0B,GAAG,CACzD,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAClC,KAAC,SAAS,IAAC,SAAS,EAAC,2BAA2B,GAAG,CACpD,CAAC,CAAC,CAAC,CACF,KAAC,SAAS,IAAC,SAAS,EAAC,0BAA0B,GAAG,CACnD,GACG,IACF,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAC,kBAAkB,EAAC,CAAC","sourcesContent":["import {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from '@sqlrooms/ui';\nimport {formatBytes, splitFilePath} from '@sqlrooms/utils';\nimport {\n CloudDownloadIcon,\n CloudIcon,\n CloudUploadIcon,\n EllipsisIcon,\n FileDownIcon,\n FileTextIcon,\n XIcon,\n} from 'lucide-react';\nimport {FC, useCallback} from 'react';\nimport {useBaseRoomShellStore} from '../RoomShellSlice';\nimport {RoomFileInfo, RoomFileState} from '../types';\nconst FileDataSourceCard: FC<{\n isReadOnly?: boolean;\n fileInfo: RoomFileInfo;\n fileState?: RoomFileState;\n}> = (props) => {\n const {isReadOnly, fileInfo, fileState} = props;\n const {pathname, size} = fileInfo;\n const {filename} = splitFilePath(pathname);\n const removeRoomFile = useBaseRoomShellStore(\n (state) => state.room.removeRoomFile,\n );\n const handleRemoveFromRoom = useCallback(() => {\n removeRoomFile(fileInfo.pathname);\n }, [fileInfo.pathname, removeRoomFile]);\n\n return (\n <div className=\"flex flex-col gap-1 p-2\">\n <div className=\"flex cursor-pointer flex-row items-center gap-1\">\n <div className=\"w-[15px] flex-none\">\n <FileTextIcon className=\"w-[15px]\" />\n </div>\n <div className=\"flex-1 overflow-hidden text-ellipsis whitespace-nowrap\">\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"text-xs wrap-break-word\">{filename}</span>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n <pre className=\"w-[300px] text-xs text-wrap wrap-break-word\">\n {pathname}\n </pre>\n </TooltipContent>\n </Tooltip>\n </div>\n <div className=\"flex-none\">\n {!isReadOnly ? (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"text-muted-foreground h-6 w-6\"\n >\n <EllipsisIcon className=\"h-5 w-5\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={handleRemoveFromRoom}>\n <XIcon className=\"mr-2 h-4 w-4\" />\n Remove file\n </DropdownMenuItem>\n <DropdownMenuItem disabled>\n <FileDownIcon className=\"mr-2 h-4 w-4\" />\n Download file\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n ) : null}\n </div>\n </div>\n <div className=\"flex flex-row items-center gap-1\">\n {fileState?.status === 'error' ? (\n <div className=\"bg-destructive/15 text-destructive flex-1 rounded p-1 text-xs\">\n {fileState.message}\n </div>\n ) : fileState?.status === 'download' ||\n fileState?.status === 'upload' ? (\n <div className=\"bg-secondary h-1 w-full overflow-hidden rounded\">\n <div\n className=\"bg-primary h-full transition-all duration-300\"\n style={{\n width: `${(fileState.progress?.ratio ?? 0) * 100}%`,\n }}\n />\n </div>\n ) : null}\n <div className=\"flex-none\">\n {size !== undefined ? (\n <span className=\"text-muted-foreground min-w-[70px] text-right text-xs\">\n {formatBytes(size)}\n </span>\n ) : null}\n </div>\n <div\n className=\"cursor-pointer\"\n title={\n fileState?.status === 'done'\n ? 'File synced'\n : fileState?.status === 'download'\n ? 'Downloading file…'\n : fileState?.status === 'upload'\n ? 'Uploading file…'\n : fileState?.status === 'error'\n ? `Failed to sync file: ${fileState.message}`\n : 'File not synced'\n }\n >\n {fileState?.status === 'done' ? (\n <CloudIcon className=\"w-[15px] text-green-400\" />\n ) : fileState?.status === 'download' ? (\n <CloudDownloadIcon className=\"w-[15px] text-orange-400\" />\n ) : fileState?.status === 'upload' ? (\n <CloudUploadIcon className=\"w-[15px] text-orange-400\" />\n ) : fileState?.status === 'error' ? (\n <CloudIcon className=\"text-destructive w-[15px]\" />\n ) : (\n <CloudIcon className=\"w-[15px] text-orange-400\" />\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport {FileDataSourceCard};\n"]}
@@ -4,7 +4,7 @@ import { useBaseRoomShellStore } from '../RoomShellSlice';
4
4
  const FileDataSourcesPanel = ({ isReadOnly }) => {
5
5
  const roomFiles = useBaseRoomShellStore((state) => state.room.roomFiles);
6
6
  const roomFilesProgress = useBaseRoomShellStore((state) => state.room.roomFilesProgress);
7
- return (_jsx("div", { className: "flex flex-grow flex-col overflow-auto", children: roomFiles.map((fileInfo, i) => (_jsx(FileDataSourceCard, { isReadOnly: isReadOnly, fileInfo: fileInfo, fileState: roomFilesProgress[fileInfo.pathname] }, i))) }));
7
+ return (_jsx("div", { className: "flex grow flex-col overflow-auto", children: roomFiles.map((fileInfo, i) => (_jsx(FileDataSourceCard, { isReadOnly: isReadOnly, fileInfo: fileInfo, fileState: roomFilesProgress[fileInfo.pathname] }, i))) }));
8
8
  };
9
9
  export { FileDataSourcesPanel };
10
10
  //# sourceMappingURL=FileDataSourcesPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileDataSourcesPanel.js","sourceRoot":"","sources":["../../src/data-sources/FileDataSourcesPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AAExD,MAAM,oBAAoB,GAA+B,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE;IACxE,MAAM,SAAS,GAAG,qBAAqB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzE,MAAM,iBAAiB,GAAG,qBAAqB,CAC7C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CACxC,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAC,uCAAuC,YACnD,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAC9B,KAAC,kBAAkB,IAEjB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAH1C,CAAC,CAIN,CACH,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAC,oBAAoB,EAAC,CAAC","sourcesContent":["import {FC} from 'react';\nimport {FileDataSourceCard} from './FileDataSourceCard';\nimport {useBaseRoomShellStore} from '../RoomShellSlice';\n\nconst FileDataSourcesPanel: FC<{isReadOnly?: boolean}> = ({isReadOnly}) => {\n const roomFiles = useBaseRoomShellStore((state) => state.room.roomFiles);\n const roomFilesProgress = useBaseRoomShellStore(\n (state) => state.room.roomFilesProgress,\n );\n\n return (\n <div className=\"flex flex-grow flex-col overflow-auto\">\n {roomFiles.map((fileInfo, i) => (\n <FileDataSourceCard\n key={i}\n isReadOnly={isReadOnly}\n fileInfo={fileInfo}\n fileState={roomFilesProgress[fileInfo.pathname]}\n />\n ))}\n </div>\n );\n};\n\nexport {FileDataSourcesPanel};\n"]}
1
+ {"version":3,"file":"FileDataSourcesPanel.js","sourceRoot":"","sources":["../../src/data-sources/FileDataSourcesPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AAExD,MAAM,oBAAoB,GAA+B,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE;IACxE,MAAM,SAAS,GAAG,qBAAqB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzE,MAAM,iBAAiB,GAAG,qBAAqB,CAC7C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CACxC,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAC,kCAAkC,YAC9C,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAC9B,KAAC,kBAAkB,IAEjB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAH1C,CAAC,CAIN,CACH,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAC,oBAAoB,EAAC,CAAC","sourcesContent":["import {FC} from 'react';\nimport {FileDataSourceCard} from './FileDataSourceCard';\nimport {useBaseRoomShellStore} from '../RoomShellSlice';\n\nconst FileDataSourcesPanel: FC<{isReadOnly?: boolean}> = ({isReadOnly}) => {\n const roomFiles = useBaseRoomShellStore((state) => state.room.roomFiles);\n const roomFilesProgress = useBaseRoomShellStore(\n (state) => state.room.roomFilesProgress,\n );\n\n return (\n <div className=\"flex grow flex-col overflow-auto\">\n {roomFiles.map((fileInfo, i) => (\n <FileDataSourceCard\n key={i}\n isReadOnly={isReadOnly}\n fileInfo={fileInfo}\n fileState={roomFilesProgress[fileInfo.pathname]}\n />\n ))}\n </div>\n );\n};\n\nexport {FileDataSourcesPanel};\n"]}
@@ -17,7 +17,7 @@ const TablesListPanel = ({ className, isReadOnly }) => {
17
17
  onClose();
18
18
  setSelectedTable(undefined);
19
19
  };
20
- return (_jsxs(_Fragment, { children: [_jsx("div", { className: cn('relative flex flex-grow flex-col items-stretch gap-2', className), children: tables?.length ? (_jsx("div", { className: "flex flex-col gap-2", children: tables.map((table, i) => (_jsx(TableCard, { onClick: () => handleClick(table), isReadOnly: isReadOnly, value: table, rowCount: tableRowCounts[table.tableName] }, i))) })) : null }), _jsx(DataTableModal, { className: "h-[80vh] max-w-[75vw]", tableModal: {
20
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: cn('relative flex grow flex-col items-stretch gap-2', className), children: tables?.length ? (_jsx("div", { className: "flex flex-col gap-2", children: tables.map((table, i) => (_jsx(TableCard, { onClick: () => handleClick(table), isReadOnly: isReadOnly, value: table, rowCount: tableRowCounts[table.tableName] }, i))) })) : null }), _jsx(DataTableModal, { className: "h-[80vh] max-w-[75vw]", tableModal: {
21
21
  isOpen: isOpen,
22
22
  onClose: handleClose,
23
23
  }, title: selectedTable?.tableName, query: `SELECT * FROM ${selectedTable?.tableName}` })] }));
@@ -1 +1 @@
1
- {"version":3,"file":"TablesListPanel.js","sourceRoot":"","sources":["../../src/data-sources/TablesListPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAC,EAAE,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAK,QAAQ,EAAC,MAAM,OAAO,CAAC;AACnC,OAAO,EAAC,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAEtC,MAAM,eAAe,GAGhB,CAAC,EAAC,SAAS,EAAE,UAAU,EAAC,EAAE,EAAE;IAC/B,MAAM,MAAM,GAAG,qBAAqB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,qBAAqB,CAC1C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,CACnC,CAAC;IAEF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAChD,SAAS,CACV,CAAC;IACF,MAAM,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAC,GAAG,aAAa,EAAE,CAAC;IAElD,MAAM,WAAW,GAAG,CAAC,KAAgB,EAAE,EAAE;QACvC,MAAM,EAAE,CAAC;QACT,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,OAAO,EAAE,CAAC;QACV,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,OAAO,CACL,8BACE,cACE,SAAS,EAAE,EAAE,CACX,sDAAsD,EACtD,SAAS,CACV,YAEA,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAChB,cAAK,SAAS,EAAC,qBAAqB,YACjC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CACxB,KAAC,SAAS,IAER,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EACjC,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,IAJpC,CAAC,CAKN,CACH,CAAC,GACE,CACP,CAAC,CAAC,CAAC,IAAI,GACJ,EAEN,KAAC,cAAc,IACb,SAAS,EAAC,uBAAuB,EACjC,UAAU,EAAE;oBACV,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,WAAW;iBACrB,EACD,KAAK,EAAE,aAAa,EAAE,SAAS,EAC/B,KAAK,EAAE,iBAAiB,aAAa,EAAE,SAAS,EAAE,GAClD,IACD,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAC,eAAe,EAAC,CAAC","sourcesContent":["import {DataTableModal} from '@sqlrooms/data-table';\nimport {DataTable} from '@sqlrooms/duckdb';\nimport {cn, useDisclosure} from '@sqlrooms/ui';\nimport {FC, useState} from 'react';\nimport {useBaseRoomShellStore} from '../RoomShellSlice';\nimport {TableCard} from './TableCard';\n\nconst TablesListPanel: FC<{\n className?: string;\n isReadOnly?: boolean;\n}> = ({className, isReadOnly}) => {\n const tables = useBaseRoomShellStore((state) => state.db.tables);\n const tableRowCounts = useBaseRoomShellStore(\n (state) => state.db.tableRowCounts,\n );\n\n const [selectedTable, setSelectedTable] = useState<DataTable | undefined>(\n undefined,\n );\n const {isOpen, onOpen, onClose} = useDisclosure();\n\n const handleClick = (table: DataTable) => {\n onOpen();\n setSelectedTable(table);\n };\n\n const handleClose = () => {\n onClose();\n setSelectedTable(undefined);\n };\n\n return (\n <>\n <div\n className={cn(\n 'relative flex flex-grow flex-col items-stretch gap-2',\n className,\n )}\n >\n {tables?.length ? (\n <div className=\"flex flex-col gap-2\">\n {tables.map((table, i) => (\n <TableCard\n key={i}\n onClick={() => handleClick(table)}\n isReadOnly={isReadOnly}\n value={table}\n rowCount={tableRowCounts[table.tableName]}\n />\n ))}\n </div>\n ) : null}\n </div>\n\n <DataTableModal\n className=\"h-[80vh] max-w-[75vw]\"\n tableModal={{\n isOpen: isOpen,\n onClose: handleClose,\n }}\n title={selectedTable?.tableName}\n query={`SELECT * FROM ${selectedTable?.tableName}`}\n />\n </>\n );\n};\n\nexport {TablesListPanel};\n"]}
1
+ {"version":3,"file":"TablesListPanel.js","sourceRoot":"","sources":["../../src/data-sources/TablesListPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAC,EAAE,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAK,QAAQ,EAAC,MAAM,OAAO,CAAC;AACnC,OAAO,EAAC,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAEtC,MAAM,eAAe,GAGhB,CAAC,EAAC,SAAS,EAAE,UAAU,EAAC,EAAE,EAAE;IAC/B,MAAM,MAAM,GAAG,qBAAqB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,qBAAqB,CAC1C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,CACnC,CAAC;IAEF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAChD,SAAS,CACV,CAAC;IACF,MAAM,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAC,GAAG,aAAa,EAAE,CAAC;IAElD,MAAM,WAAW,GAAG,CAAC,KAAgB,EAAE,EAAE;QACvC,MAAM,EAAE,CAAC;QACT,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,OAAO,EAAE,CAAC;QACV,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,OAAO,CACL,8BACE,cACE,SAAS,EAAE,EAAE,CACX,iDAAiD,EACjD,SAAS,CACV,YAEA,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAChB,cAAK,SAAS,EAAC,qBAAqB,YACjC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CACxB,KAAC,SAAS,IAER,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EACjC,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,IAJpC,CAAC,CAKN,CACH,CAAC,GACE,CACP,CAAC,CAAC,CAAC,IAAI,GACJ,EAEN,KAAC,cAAc,IACb,SAAS,EAAC,uBAAuB,EACjC,UAAU,EAAE;oBACV,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,WAAW;iBACrB,EACD,KAAK,EAAE,aAAa,EAAE,SAAS,EAC/B,KAAK,EAAE,iBAAiB,aAAa,EAAE,SAAS,EAAE,GAClD,IACD,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAC,eAAe,EAAC,CAAC","sourcesContent":["import {DataTableModal} from '@sqlrooms/data-table';\nimport {DataTable} from '@sqlrooms/duckdb';\nimport {cn, useDisclosure} from '@sqlrooms/ui';\nimport {FC, useState} from 'react';\nimport {useBaseRoomShellStore} from '../RoomShellSlice';\nimport {TableCard} from './TableCard';\n\nconst TablesListPanel: FC<{\n className?: string;\n isReadOnly?: boolean;\n}> = ({className, isReadOnly}) => {\n const tables = useBaseRoomShellStore((state) => state.db.tables);\n const tableRowCounts = useBaseRoomShellStore(\n (state) => state.db.tableRowCounts,\n );\n\n const [selectedTable, setSelectedTable] = useState<DataTable | undefined>(\n undefined,\n );\n const {isOpen, onOpen, onClose} = useDisclosure();\n\n const handleClick = (table: DataTable) => {\n onOpen();\n setSelectedTable(table);\n };\n\n const handleClose = () => {\n onClose();\n setSelectedTable(undefined);\n };\n\n return (\n <>\n <div\n className={cn(\n 'relative flex grow flex-col items-stretch gap-2',\n className,\n )}\n >\n {tables?.length ? (\n <div className=\"flex flex-col gap-2\">\n {tables.map((table, i) => (\n <TableCard\n key={i}\n onClick={() => handleClick(table)}\n isReadOnly={isReadOnly}\n value={table}\n rowCount={tableRowCounts[table.tableName]}\n />\n ))}\n </div>\n ) : null}\n </div>\n\n <DataTableModal\n className=\"h-[80vh] max-w-[75vw]\"\n tableModal={{\n isOpen: isOpen,\n onClose: handleClose,\n }}\n title={selectedTable?.tableName}\n query={`SELECT * FROM ${selectedTable?.tableName}`}\n />\n </>\n );\n};\n\nexport {TablesListPanel};\n"]}
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { cn } from '@sqlrooms/ui';
3
3
  import { RoomPanelHeader } from './RoomPanelHeader';
4
4
  const RoomPanel = ({ type: roomPanelType, children, className, showHeader = true }) => {
5
- return (_jsxs("div", { className: cn('flex h-full flex-grow flex-col gap-3', className), children: [showHeader && _jsx(RoomPanelHeader, { panelKey: roomPanelType }), _jsx("div", { className: "flex h-full flex-grow flex-col gap-3 overflow-auto", children: children })] }));
5
+ return (_jsxs("div", { className: cn('flex h-full grow flex-col gap-3', className), children: [showHeader && _jsx(RoomPanelHeader, { panelKey: roomPanelType }), _jsx("div", { className: "flex h-full grow flex-col gap-3 overflow-auto", children: children })] }));
6
6
  };
7
7
  export { RoomPanel };
8
8
  //# sourceMappingURL=RoomPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RoomPanel.js","sourceRoot":"","sources":["../../src/panels/RoomPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,cAAc,CAAC;AAEhC,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAElD,MAAM,SAAS,GAMX,CAAC,EAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,GAAG,IAAI,EAAC,EAAE,EAAE;IACpE,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,sCAAsC,EAAE,SAAS,CAAC,aAClE,UAAU,IAAI,KAAC,eAAe,IAAC,QAAQ,EAAE,aAAa,GAAI,EAC3D,cAAK,SAAS,EAAC,oDAAoD,YAChE,QAAQ,GACL,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAC,SAAS,EAAC,CAAC","sourcesContent":["import {cn} from '@sqlrooms/ui';\nimport {FC, PropsWithChildren} from 'react';\nimport {RoomPanelHeader} from './RoomPanelHeader';\n\nconst RoomPanel: FC<\n PropsWithChildren<{\n className?: string;\n type: string;\n showHeader?: boolean;\n }>\n> = ({type: roomPanelType, children, className, showHeader = true}) => {\n return (\n <div className={cn('flex h-full flex-grow flex-col gap-3', className)}>\n {showHeader && <RoomPanelHeader panelKey={roomPanelType} />}\n <div className=\"flex h-full flex-grow flex-col gap-3 overflow-auto\">\n {children}\n </div>\n </div>\n );\n};\n\nexport {RoomPanel};\n"]}
1
+ {"version":3,"file":"RoomPanel.js","sourceRoot":"","sources":["../../src/panels/RoomPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,cAAc,CAAC;AAEhC,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAElD,MAAM,SAAS,GAMX,CAAC,EAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,GAAG,IAAI,EAAC,EAAE,EAAE;IACpE,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,iCAAiC,EAAE,SAAS,CAAC,aAC7D,UAAU,IAAI,KAAC,eAAe,IAAC,QAAQ,EAAE,aAAa,GAAI,EAC3D,cAAK,SAAS,EAAC,+CAA+C,YAC3D,QAAQ,GACL,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAC,SAAS,EAAC,CAAC","sourcesContent":["import {cn} from '@sqlrooms/ui';\nimport {FC, PropsWithChildren} from 'react';\nimport {RoomPanelHeader} from './RoomPanelHeader';\n\nconst RoomPanel: FC<\n PropsWithChildren<{\n className?: string;\n type: string;\n showHeader?: boolean;\n }>\n> = ({type: roomPanelType, children, className, showHeader = true}) => {\n return (\n <div className={cn('flex h-full grow flex-col gap-3', className)}>\n {showHeader && <RoomPanelHeader panelKey={roomPanelType} />}\n <div className=\"flex h-full grow flex-col gap-3 overflow-auto\">\n {children}\n </div>\n </div>\n );\n};\n\nexport {RoomPanel};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sqlrooms/room-shell",
3
- "version": "0.27.0",
3
+ "version": "0.28.0-rc.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "module": "dist/index.js",
@@ -26,13 +26,13 @@
26
26
  "typedoc": "typedoc"
27
27
  },
28
28
  "dependencies": {
29
- "@sqlrooms/data-table": "0.27.0",
30
- "@sqlrooms/duckdb": "0.27.0",
31
- "@sqlrooms/layout": "0.27.0",
32
- "@sqlrooms/room-config": "0.27.0",
33
- "@sqlrooms/room-store": "0.27.0",
34
- "@sqlrooms/ui": "0.27.0",
35
- "@sqlrooms/utils": "0.27.0",
29
+ "@sqlrooms/data-table": "0.28.0-rc.0",
30
+ "@sqlrooms/duckdb": "0.28.0-rc.0",
31
+ "@sqlrooms/layout": "0.28.0-rc.0",
32
+ "@sqlrooms/room-config": "0.28.0-rc.0",
33
+ "@sqlrooms/room-store": "0.28.0-rc.0",
34
+ "@sqlrooms/ui": "0.28.0-rc.0",
35
+ "@sqlrooms/utils": "0.28.0-rc.0",
36
36
  "apache-arrow": "17.0.0",
37
37
  "immer": "^11.0.1",
38
38
  "lucide-react": "^0.556.0",
@@ -43,5 +43,5 @@
43
43
  "react": ">=18",
44
44
  "react-dom": ">=18"
45
45
  },
46
- "gitHead": "f215995ab4adeac4c58171739261a15cbba9e82b"
46
+ "gitHead": "87a478edbff690e04c38cc717db8e11e844565c8"
47
47
  }