@sqlrooms/notebook 0.29.0-rc.2 → 0.29.0-rc.4
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/README.md +10 -10
- package/dist/Notebook.d.ts +3 -1
- package/dist/Notebook.d.ts.map +1 -1
- package/dist/Notebook.js +12 -15
- package/dist/Notebook.js.map +1 -1
- package/dist/NotebookSlice.d.ts.map +1 -1
- package/dist/NotebookSlice.js +47 -67
- package/dist/NotebookSlice.js.map +1 -1
- package/dist/NotebookStateTypes.d.ts +6 -11
- package/dist/NotebookStateTypes.d.ts.map +1 -1
- package/dist/NotebookStateTypes.js.map +1 -1
- package/dist/NotebookUtils.d.ts +5 -5
- package/dist/NotebookUtils.d.ts.map +1 -1
- package/dist/NotebookUtils.js +10 -10
- package/dist/NotebookUtils.js.map +1 -1
- package/dist/cellOperations/AddNewCellDropdown.d.ts +2 -1
- package/dist/cellOperations/AddNewCellDropdown.d.ts.map +1 -1
- package/dist/cellOperations/AddNewCellDropdown.js +5 -6
- package/dist/cellOperations/AddNewCellDropdown.js.map +1 -1
- package/dist/cellOperations/AddNewCellTabs.d.ts +1 -0
- package/dist/cellOperations/AddNewCellTabs.d.ts.map +1 -1
- package/dist/cellOperations/AddNewCellTabs.js +2 -3
- package/dist/cellOperations/AddNewCellTabs.js.map +1 -1
- package/dist/cellOperations/MoveCellButtons.d.ts +1 -0
- package/dist/cellOperations/MoveCellButtons.d.ts.map +1 -1
- package/dist/cellOperations/MoveCellButtons.js +3 -4
- package/dist/cellOperations/MoveCellButtons.js.map +1 -1
- package/dist/cellSchemas.d.ts +9 -9
- package/dist/cellSchemas.d.ts.map +1 -1
- package/dist/cellSchemas.js +8 -8
- package/dist/cellSchemas.js.map +1 -1
- package/dist/cells/CellContainer.d.ts.map +1 -1
- package/dist/cells/CellContainer.js +11 -4
- package/dist/cells/CellContainer.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +22 -22
- package/dist/cellOperations/AddSqlCellResultToNewTable.d.ts +0 -4
- package/dist/cellOperations/AddSqlCellResultToNewTable.d.ts.map +0 -1
- package/dist/cellOperations/AddSqlCellResultToNewTable.js +0 -12
- package/dist/cellOperations/AddSqlCellResultToNewTable.js.map +0 -1
- package/dist/cellOperations/IconWithTooltip.d.ts +0 -10
- package/dist/cellOperations/IconWithTooltip.d.ts.map +0 -1
- package/dist/cellOperations/IconWithTooltip.js +0 -9
- package/dist/cellOperations/IconWithTooltip.js.map +0 -1
- package/dist/cells/Input/InputCell.d.ts +0 -8
- package/dist/cells/Input/InputCell.d.ts.map +0 -1
- package/dist/cells/Input/InputCell.js +0 -40
- package/dist/cells/Input/InputCell.js.map +0 -1
- package/dist/cells/Input/InputConfigPanel/DropdownConfig.d.ts +0 -2
- package/dist/cells/Input/InputConfigPanel/DropdownConfig.d.ts.map +0 -1
- package/dist/cells/Input/InputConfigPanel/DropdownConfig.js +0 -44
- package/dist/cells/Input/InputConfigPanel/DropdownConfig.js.map +0 -1
- package/dist/cells/Input/InputConfigPanel/InputConfigPanel.d.ts +0 -11
- package/dist/cells/Input/InputConfigPanel/InputConfigPanel.d.ts.map +0 -1
- package/dist/cells/Input/InputConfigPanel/InputConfigPanel.js +0 -65
- package/dist/cells/Input/InputConfigPanel/InputConfigPanel.js.map +0 -1
- package/dist/cells/Input/InputConfigPanel/SliderConfig.d.ts +0 -2
- package/dist/cells/Input/InputConfigPanel/SliderConfig.d.ts.map +0 -1
- package/dist/cells/Input/InputConfigPanel/SliderConfig.js +0 -18
- package/dist/cells/Input/InputConfigPanel/SliderConfig.js.map +0 -1
- package/dist/cells/Input/InputConfigPanel/TextConfig.d.ts +0 -2
- package/dist/cells/Input/InputConfigPanel/TextConfig.d.ts.map +0 -1
- package/dist/cells/Input/InputConfigPanel/TextConfig.js +0 -8
- package/dist/cells/Input/InputConfigPanel/TextConfig.js.map +0 -1
- package/dist/cells/InputBar.d.ts +0 -9
- package/dist/cells/InputBar.d.ts.map +0 -1
- package/dist/cells/InputBar.js +0 -23
- package/dist/cells/InputBar.js.map +0 -1
- package/dist/cells/SqlCell.d.ts +0 -5
- package/dist/cells/SqlCell.d.ts.map +0 -1
- package/dist/cells/SqlCell.js +0 -29
- package/dist/cells/SqlCell.js.map +0 -1
- package/dist/cells/TextCell.d.ts +0 -5
- package/dist/cells/TextCell.d.ts.map +0 -1
- package/dist/cells/TextCell.js +0 -36
- package/dist/cells/TextCell.js.map +0 -1
- package/dist/cells/Vega/VegaCell.d.ts +0 -5
- package/dist/cells/Vega/VegaCell.d.ts.map +0 -1
- package/dist/cells/Vega/VegaCell.js +0 -78
- package/dist/cells/Vega/VegaCell.js.map +0 -1
- package/dist/cells/Vega/VegaConfigPanel.d.ts +0 -8
- package/dist/cells/Vega/VegaConfigPanel.d.ts.map +0 -1
- package/dist/cells/Vega/VegaConfigPanel.js +0 -72
- package/dist/cells/Vega/VegaConfigPanel.js.map +0 -1
- package/dist/crdt.d.ts +0 -51
- package/dist/crdt.d.ts.map +0 -1
- package/dist/crdt.js +0 -74
- package/dist/crdt.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddNewCellDropdown.d.ts","sourceRoot":"","sources":["../../src/cellOperations/AddNewCellDropdown.tsx"],"names":[],"mappings":"AASA,OAAO,EAAC,EAAE,EAAsB,MAAM,OAAO,CAAC;AAM9C,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"AddNewCellDropdown.d.ts","sourceRoot":"","sources":["../../src/cellOperations/AddNewCellDropdown.tsx"],"names":[],"mappings":"AASA,OAAO,EAAC,EAAE,EAAsB,MAAM,OAAO,CAAC;AAM9C,KAAK,KAAK,GAAG;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,KAAK,CAkCxC,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,YAAY,CAwCtD,CAAC"}
|
|
@@ -4,11 +4,10 @@ import { useEffect, useState } from 'react';
|
|
|
4
4
|
import { useStoreWithNotebook } from '../useStoreWithNotebook';
|
|
5
5
|
import { TriggerButton } from './AddNewCellTrigger';
|
|
6
6
|
import { getCellTypeLabel } from '../NotebookUtils';
|
|
7
|
-
export const AddNewCellDropdown = ({ onAdd, enableShortcut = false, triggerComponent = _jsx(TriggerButton, {}), }) => {
|
|
8
|
-
const currentTabId = useStoreWithNotebook((s) => s.cells.config.currentSheetId);
|
|
7
|
+
export const AddNewCellDropdown = ({ artifactId, onAdd, enableShortcut = false, triggerComponent = _jsx(TriggerButton, {}), }) => {
|
|
9
8
|
const [open, setOpen] = useState(false);
|
|
10
9
|
useEffect(() => {
|
|
11
|
-
if (!
|
|
10
|
+
if (!artifactId || !enableShortcut) {
|
|
12
11
|
return;
|
|
13
12
|
}
|
|
14
13
|
const onKeyDown = (e) => {
|
|
@@ -21,13 +20,13 @@ export const AddNewCellDropdown = ({ onAdd, enableShortcut = false, triggerCompo
|
|
|
21
20
|
return () => document.removeEventListener('keydown', onKeyDown);
|
|
22
21
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
23
22
|
}, []);
|
|
24
|
-
return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: triggerComponent }), _jsx(AddNewCellDropdownContent, { onAddCell: onAdd,
|
|
23
|
+
return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: triggerComponent }), _jsx(AddNewCellDropdownContent, { onAddCell: onAdd, artifactId: artifactId, setOpen: setOpen })] }));
|
|
25
24
|
};
|
|
26
|
-
export const AddNewCellDropdownContent = ({ onAddCell,
|
|
25
|
+
export const AddNewCellDropdownContent = ({ onAddCell, artifactId, align = 'center', setOpen, }) => {
|
|
27
26
|
const cellRegistry = useStoreWithNotebook((s) => s.cells.cellRegistry);
|
|
28
27
|
const availableTypes = Object.keys(cellRegistry);
|
|
29
28
|
return (_jsx(PopoverContent, { align: align, className: "w-auto p-0", onCloseAutoFocus: (e) => e.preventDefault(), children: _jsx(Command, { tabIndex: 0, loop: true, className: "focus-visible:outline-none", children: _jsx(CommandList, { className: "focus-visible:outline-none", children: _jsx(CommandGroup, { className: "**:[[cmdk-group-heading]]:text-foreground p-1 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-sm **:[[cmdk-group-heading]]:font-semibold", children: availableTypes.map((type) => {
|
|
30
|
-
return (_jsx(CommandItem, { disabled: !
|
|
29
|
+
return (_jsx(CommandItem, { disabled: !artifactId, onSelect: () => {
|
|
31
30
|
onAddCell(type);
|
|
32
31
|
setOpen?.(false);
|
|
33
32
|
}, className: "cursor-pointer", children: _jsx("span", { className: "text-xs whitespace-nowrap capitalize", children: getCellTypeLabel(type, cellRegistry) }) }, type));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddNewCellDropdown.js","sourceRoot":"","sources":["../../src/cellOperations/AddNewCellDropdown.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EACP,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACd,OAAO,EACP,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAK,SAAS,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAC,oBAAoB,EAAC,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"AddNewCellDropdown.js","sourceRoot":"","sources":["../../src/cellOperations/AddNewCellDropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Command,\n CommandList,\n CommandItem,\n CommandGroup,\n PopoverContent,\n Popover,\n PopoverTrigger,\n} from '@sqlrooms/ui';\nimport {FC, useEffect, useState} from 'react';\n\nimport {useStoreWithNotebook} from '../useStoreWithNotebook';\nimport {TriggerButton} from './AddNewCellTrigger';\nimport {getCellTypeLabel} from '../NotebookUtils';\n\ntype Props = {\n artifactId: string;\n onAdd: (type: string) => void;\n enableShortcut?: boolean;\n triggerComponent?: React.ReactNode;\n};\n\nexport const AddNewCellDropdown: FC<Props> = ({\n artifactId,\n onAdd,\n enableShortcut = false,\n triggerComponent = <TriggerButton />,\n}) => {\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n if (!artifactId || !enableShortcut) {\n return;\n }\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'j' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setOpen((prev) => !prev);\n }\n };\n document.addEventListener('keydown', onKeyDown);\n return () => document.removeEventListener('keydown', onKeyDown);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>{triggerComponent}</PopoverTrigger>\n\n <AddNewCellDropdownContent\n onAddCell={onAdd}\n artifactId={artifactId}\n setOpen={setOpen}\n />\n </Popover>\n );\n};\n\ntype ContentProps = {\n onAddCell: (type: string) => void;\n artifactId?: string | null;\n align?: 'center' | 'start' | 'end';\n setOpen?: (open: boolean) => void;\n};\n\nexport const AddNewCellDropdownContent: FC<ContentProps> = ({\n onAddCell,\n artifactId,\n align = 'center',\n setOpen,\n}) => {\n const cellRegistry = useStoreWithNotebook((s) => s.cells.cellRegistry);\n const availableTypes = Object.keys(cellRegistry);\n\n return (\n <PopoverContent\n align={align}\n className=\"w-auto p-0\"\n onCloseAutoFocus={(e) => e.preventDefault()}\n >\n <Command tabIndex={0} loop className=\"focus-visible:outline-none\">\n <CommandList className=\"focus-visible:outline-none\">\n <CommandGroup className=\"**:[[cmdk-group-heading]]:text-foreground p-1 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-sm **:[[cmdk-group-heading]]:font-semibold\">\n {availableTypes.map((type: string) => {\n return (\n <CommandItem\n key={type}\n disabled={!artifactId}\n onSelect={() => {\n onAddCell(type);\n setOpen?.(false);\n }}\n className=\"cursor-pointer\"\n >\n <span className=\"text-xs whitespace-nowrap capitalize\">\n {getCellTypeLabel(type, cellRegistry)}\n </span>\n </CommandItem>\n );\n })}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddNewCellTabs.d.ts","sourceRoot":"","sources":["../../src/cellOperations/AddNewCellTabs.tsx"],"names":[],"mappings":"AACA,OAAO,EAAC,EAAE,EAAC,MAAM,OAAO,CAAC;AAMzB,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"AddNewCellTabs.d.ts","sourceRoot":"","sources":["../../src/cellOperations/AddNewCellTabs.tsx"],"names":[],"mappings":"AACA,OAAO,EAAC,EAAE,EAAC,MAAM,OAAO,CAAC;AAMzB,KAAK,KAAK,GAAG;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,KAAK,CA2BpC,CAAC"}
|
|
@@ -3,12 +3,11 @@ import { Separator, Button } from '@sqlrooms/ui';
|
|
|
3
3
|
import { useStoreWithNotebook } from '../useStoreWithNotebook';
|
|
4
4
|
import { getCellTypeLabel } from '../NotebookUtils';
|
|
5
5
|
import { PlusIcon } from 'lucide-react';
|
|
6
|
-
export const AddNewCellTabs = ({ onAdd }) => {
|
|
7
|
-
const currentTabId = useStoreWithNotebook((s) => s.cells.config.currentSheetId);
|
|
6
|
+
export const AddNewCellTabs = ({ artifactId, onAdd }) => {
|
|
8
7
|
const cellRegistry = useStoreWithNotebook((s) => s.cells.cellRegistry);
|
|
9
8
|
const cellTypes = Object.keys(cellRegistry);
|
|
10
9
|
return (_jsxs("div", { className: "grid w-full grid-cols-[1fr_auto_1fr] items-center gap-2 opacity-0 transition-opacity hover:opacity-100", children: [_jsx(Separator, { className: "w-full bg-gray-500" }), _jsx("div", { className: "flex gap-1", children: cellTypes.map((type) => {
|
|
11
|
-
return (_jsxs(Button, { disabled: !
|
|
10
|
+
return (_jsxs(Button, { disabled: !artifactId, onClick: () => onAdd(type), className: "h-6 gap-1 py-0 text-gray-500 capitalize", variant: "ghost", size: "xs", children: [_jsx(PlusIcon, { size: 12, strokeWidth: 1.5 }), getCellTypeLabel(type, cellRegistry)] }, type));
|
|
12
11
|
}) }), _jsx(Separator, { className: "w-full bg-gray-500" })] }));
|
|
13
12
|
};
|
|
14
13
|
//# sourceMappingURL=AddNewCellTabs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddNewCellTabs.js","sourceRoot":"","sources":["../../src/cellOperations/AddNewCellTabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,SAAS,EAAE,MAAM,EAAC,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAC,oBAAoB,EAAC,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAC,QAAQ,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"AddNewCellTabs.js","sourceRoot":"","sources":["../../src/cellOperations/AddNewCellTabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,SAAS,EAAE,MAAM,EAAC,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAC,oBAAoB,EAAC,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAC,QAAQ,EAAC,MAAM,cAAc,CAAC;AAOtC,MAAM,CAAC,MAAM,cAAc,GAAc,CAAC,EAAC,UAAU,EAAE,KAAK,EAAC,EAAE,EAAE;IAC/D,MAAM,YAAY,GAAG,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE5C,OAAO,CACL,eAAK,SAAS,EAAC,wGAAwG,aACrH,KAAC,SAAS,IAAC,SAAS,EAAC,oBAAoB,GAAG,EAC5C,cAAK,SAAS,EAAC,YAAY,YACxB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE;oBAC9B,OAAO,CACL,MAAC,MAAM,IAEL,QAAQ,EAAE,CAAC,UAAU,EACrB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAC1B,SAAS,EAAC,yCAAyC,EACnD,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,aAET,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,GAAI,EACvC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,KARhC,IAAI,CASF,CACV,CAAC;gBACJ,CAAC,CAAC,GACE,EACN,KAAC,SAAS,IAAC,SAAS,EAAC,oBAAoB,GAAG,IACxC,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {Separator, Button} from '@sqlrooms/ui';\nimport {FC} from 'react';\n\nimport {useStoreWithNotebook} from '../useStoreWithNotebook';\nimport {getCellTypeLabel} from '../NotebookUtils';\nimport {PlusIcon} from 'lucide-react';\n\ntype Props = {\n artifactId: string;\n onAdd: (type: string) => void;\n};\n\nexport const AddNewCellTabs: FC<Props> = ({artifactId, onAdd}) => {\n const cellRegistry = useStoreWithNotebook((s) => s.cells.cellRegistry);\n const cellTypes = Object.keys(cellRegistry);\n\n return (\n <div className=\"grid w-full grid-cols-[1fr_auto_1fr] items-center gap-2 opacity-0 transition-opacity hover:opacity-100\">\n <Separator className=\"w-full bg-gray-500\" />\n <div className=\"flex gap-1\">\n {cellTypes.map((type: string) => {\n return (\n <Button\n key={type}\n disabled={!artifactId}\n onClick={() => onAdd(type)}\n className=\"h-6 gap-1 py-0 text-gray-500 capitalize\"\n variant=\"ghost\"\n size=\"xs\"\n >\n <PlusIcon size={12} strokeWidth={1.5} />\n {getCellTypeLabel(type, cellRegistry)}\n </Button>\n );\n })}\n </div>\n <Separator className=\"w-full bg-gray-500\" />\n </div>\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoveCellButtons.d.ts","sourceRoot":"","sources":["../../src/cellOperations/MoveCellButtons.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAC,EAAE,EAAC,MAAM,OAAO,CAAC;AAMhC,KAAK,KAAK,GAAG;IACX,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"MoveCellButtons.d.ts","sourceRoot":"","sources":["../../src/cellOperations/MoveCellButtons.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAC,EAAE,EAAC,MAAM,OAAO,CAAC;AAMhC,KAAK,KAAK,GAAG;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,KAAK,CAwBrC,CAAC"}
|
|
@@ -2,11 +2,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Button } from '@sqlrooms/ui';
|
|
3
3
|
import { ArrowDownIcon, ArrowUpIcon } from 'lucide-react';
|
|
4
4
|
import { useStoreWithNotebook } from '../useStoreWithNotebook';
|
|
5
|
-
export const MoveCellButtons = ({ id }) => {
|
|
5
|
+
export const MoveCellButtons = ({ artifactId, id }) => {
|
|
6
6
|
const moveCell = useStoreWithNotebook((s) => s.notebook.moveCell);
|
|
7
|
-
|
|
8
|
-
if (!currentTabId)
|
|
7
|
+
if (!artifactId)
|
|
9
8
|
return null;
|
|
10
|
-
return (_jsxs("div", { className: "flex gap-1", children: [_jsx(Button, { variant: "ghost", className: "h-6 w-6", size: "xs", onClick: () => moveCell(
|
|
9
|
+
return (_jsxs("div", { className: "flex gap-1", children: [_jsx(Button, { variant: "ghost", className: "h-6 w-6", size: "xs", onClick: () => moveCell(artifactId, id, 'up'), children: _jsx(ArrowUpIcon, { className: "text-gray-500" }) }), _jsx(Button, { variant: "ghost", className: "h-6 w-6", size: "xs", onClick: () => moveCell(artifactId, id, 'down'), children: _jsx(ArrowDownIcon, { className: "text-gray-500" }) })] }));
|
|
11
10
|
};
|
|
12
11
|
//# sourceMappingURL=MoveCellButtons.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoveCellButtons.js","sourceRoot":"","sources":["../../src/cellOperations/MoveCellButtons.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AACpC,OAAO,EAAC,aAAa,EAAE,WAAW,EAAC,MAAM,cAAc,CAAC;AAExD,OAAO,EAAC,oBAAoB,EAAC,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"MoveCellButtons.js","sourceRoot":"","sources":["../../src/cellOperations/MoveCellButtons.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AACpC,OAAO,EAAC,aAAa,EAAE,WAAW,EAAC,MAAM,cAAc,CAAC;AAExD,OAAO,EAAC,oBAAoB,EAAC,MAAM,yBAAyB,CAAC;AAO7D,MAAM,CAAC,MAAM,eAAe,GAAc,CAAC,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,EAAE;IAC7D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,OAAO,CACL,eAAK,SAAS,EAAC,YAAY,aACzB,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,YAE7C,KAAC,WAAW,IAAC,SAAS,EAAC,eAAe,GAAG,GAClC,EACT,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,YAE/C,KAAC,aAAa,IAAC,SAAS,EAAC,eAAe,GAAG,GACpC,IACL,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React, {FC} from 'react';\nimport {Button} from '@sqlrooms/ui';\nimport {ArrowDownIcon, ArrowUpIcon} from 'lucide-react';\n\nimport {useStoreWithNotebook} from '../useStoreWithNotebook';\n\ntype Props = {\n artifactId: string;\n id: string;\n};\n\nexport const MoveCellButtons: FC<Props> = ({artifactId, id}) => {\n const moveCell = useStoreWithNotebook((s) => s.notebook.moveCell);\n if (!artifactId) return null;\n\n return (\n <div className=\"flex gap-1\">\n <Button\n variant=\"ghost\"\n className=\"h-6 w-6\"\n size=\"xs\"\n onClick={() => moveCell(artifactId, id, 'up')}\n >\n <ArrowUpIcon className=\"text-gray-500\" />\n </Button>\n <Button\n variant=\"ghost\"\n className=\"h-6 w-6\"\n size=\"xs\"\n onClick={() => moveCell(artifactId, id, 'down')}\n >\n <ArrowDownIcon className=\"text-gray-500\" />\n </Button>\n </div>\n );\n};\n"]}
|
package/dist/cellSchemas.d.ts
CHANGED
|
@@ -89,21 +89,21 @@ export declare const NotebookCell: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
89
89
|
}, z.core.$strip>], "type">;
|
|
90
90
|
export type NotebookCell = z.infer<typeof NotebookCell>;
|
|
91
91
|
export type NotebookCellType = NotebookCell['type'];
|
|
92
|
-
/** Notebook
|
|
93
|
-
export declare const
|
|
92
|
+
/** Notebook view metadata for a single artifact. */
|
|
93
|
+
export declare const NotebookArtifactMeta: z.ZodObject<{
|
|
94
94
|
cellOrder: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
95
95
|
}, z.core.$strip>;
|
|
96
|
-
export type
|
|
97
|
-
export declare const
|
|
96
|
+
export type NotebookArtifactMeta = z.infer<typeof NotebookArtifactMeta>;
|
|
97
|
+
export declare const NotebookArtifact: z.ZodObject<{
|
|
98
98
|
id: z.ZodString;
|
|
99
99
|
meta: z.ZodObject<{
|
|
100
100
|
cellOrder: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
101
101
|
}, z.core.$strip>;
|
|
102
102
|
}, z.core.$strip>;
|
|
103
|
-
export type
|
|
104
|
-
/** Notebook Slice Config (
|
|
103
|
+
export type NotebookArtifact = z.infer<typeof NotebookArtifact>;
|
|
104
|
+
/** Notebook Slice Config (view-only artifact runtime metadata). */
|
|
105
105
|
export declare const NotebookSliceConfig: z.ZodObject<{
|
|
106
|
-
|
|
106
|
+
artifacts: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
107
107
|
id: z.ZodString;
|
|
108
108
|
meta: z.ZodObject<{
|
|
109
109
|
cellOrder: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
@@ -112,11 +112,11 @@ export declare const NotebookSliceConfig: z.ZodObject<{
|
|
|
112
112
|
currentCellId: z.ZodOptional<z.ZodString>;
|
|
113
113
|
}, z.core.$strip>;
|
|
114
114
|
export type NotebookSliceConfig = z.infer<typeof NotebookSliceConfig>;
|
|
115
|
-
export declare const
|
|
115
|
+
export declare const NotebookArtifactView: z.ZodObject<{
|
|
116
116
|
id: z.ZodString;
|
|
117
117
|
cellOrder: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
118
118
|
name: z.ZodString;
|
|
119
119
|
}, z.core.$strip>;
|
|
120
|
-
export type
|
|
120
|
+
export type NotebookArtifactView = z.infer<typeof NotebookArtifactView>;
|
|
121
121
|
export type InputUnion = z.infer<typeof import('@sqlrooms/cells').InputUnion>;
|
|
122
122
|
//# sourceMappingURL=cellSchemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cellSchemas.d.ts","sourceRoot":"","sources":["../src/cellSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAGL,UAAU,EAIX,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAC,UAAU,EAAC,CAAC;AAEpB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;iBAIpB,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAElD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAMvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AACxD,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAEpD,
|
|
1
|
+
{"version":3,"file":"cellSchemas.d.ts","sourceRoot":"","sources":["../src/cellSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAGL,UAAU,EAIX,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAC,UAAU,EAAC,CAAC;AAEpB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;iBAIpB,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAElD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAMvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AACxD,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAEpD,oDAAoD;AACpD,eAAO,MAAM,oBAAoB;;iBAE/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,eAAO,MAAM,gBAAgB;;;;;iBAG3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,mEAAmE;AACnE,eAAO,MAAM,mBAAmB;;;;;;;;iBAG9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,eAAO,MAAM,oBAAoB;;;;iBAI/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,iBAAiB,EAAE,UAAU,CAAC,CAAC"}
|
package/dist/cellSchemas.js
CHANGED
|
@@ -14,22 +14,22 @@ export const NotebookCell = z.discriminatedUnion('type', [
|
|
|
14
14
|
InputCellSchema,
|
|
15
15
|
PivotCellSchema,
|
|
16
16
|
]);
|
|
17
|
-
/** Notebook
|
|
18
|
-
export const
|
|
17
|
+
/** Notebook view metadata for a single artifact. */
|
|
18
|
+
export const NotebookArtifactMeta = z.object({
|
|
19
19
|
cellOrder: z.array(z.string()).default([]),
|
|
20
20
|
});
|
|
21
|
-
export const
|
|
21
|
+
export const NotebookArtifact = z.object({
|
|
22
22
|
id: z.string(),
|
|
23
|
-
meta:
|
|
23
|
+
meta: NotebookArtifactMeta,
|
|
24
24
|
});
|
|
25
|
-
/** Notebook Slice Config (
|
|
25
|
+
/** Notebook Slice Config (view-only artifact runtime metadata). */
|
|
26
26
|
export const NotebookSliceConfig = z.object({
|
|
27
|
-
|
|
27
|
+
artifacts: z.record(z.string(), NotebookArtifact).default({}),
|
|
28
28
|
currentCellId: z.string().optional(),
|
|
29
29
|
});
|
|
30
|
-
export const
|
|
30
|
+
export const NotebookArtifactView = z.object({
|
|
31
31
|
id: z.string(),
|
|
32
32
|
cellOrder: z.array(z.string()).default([]),
|
|
33
|
-
name: z.string(),
|
|
33
|
+
name: z.string(),
|
|
34
34
|
});
|
|
35
35
|
//# sourceMappingURL=cellSchemas.js.map
|
package/dist/cellSchemas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cellSchemas.js","sourceRoot":"","sources":["../src/cellSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,EACV,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAC,UAAU,EAAC,CAAC;AAEpB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,IAAI,EAAE,aAAa;CACpB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACvD,aAAa;IACb,cAAc;IACd,cAAc;IACd,eAAe;IACf,eAAe;CAChB,CAAC,CAAC;AAIH,
|
|
1
|
+
{"version":3,"file":"cellSchemas.js","sourceRoot":"","sources":["../src/cellSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,EACV,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAC,UAAU,EAAC,CAAC;AAEpB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,IAAI,EAAE,aAAa;CACpB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACvD,aAAa;IACb,cAAc;IACd,cAAc;IACd,eAAe;IACf,eAAe;CAChB,CAAC,CAAC;AAIH,oDAAoD;AACpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,oBAAoB;CAC3B,CAAC,CAAC;AAGH,mEAAmE;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7D,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC","sourcesContent":["import {z} from 'zod';\nimport {\n InputCellData,\n InputCellSchema,\n InputTypes,\n SqlCellSchema,\n TextCellSchema,\n VegaCellSchema,\n} from '@sqlrooms/cells';\nimport {PivotCellSchema} from '@sqlrooms/pivot';\n\nexport {InputTypes};\n\nexport const InputCell = z.object({\n id: z.string(),\n type: z.literal('input'),\n data: InputCellData,\n});\nexport type InputCell = z.infer<typeof InputCell>;\n\nexport const NotebookCell = z.discriminatedUnion('type', [\n SqlCellSchema,\n TextCellSchema,\n VegaCellSchema,\n InputCellSchema,\n PivotCellSchema,\n]);\nexport type NotebookCell = z.infer<typeof NotebookCell>;\nexport type NotebookCellType = NotebookCell['type'];\n\n/** Notebook view metadata for a single artifact. */\nexport const NotebookArtifactMeta = z.object({\n cellOrder: z.array(z.string()).default([]),\n});\nexport type NotebookArtifactMeta = z.infer<typeof NotebookArtifactMeta>;\n\nexport const NotebookArtifact = z.object({\n id: z.string(),\n meta: NotebookArtifactMeta,\n});\nexport type NotebookArtifact = z.infer<typeof NotebookArtifact>;\n\n/** Notebook Slice Config (view-only artifact runtime metadata). */\nexport const NotebookSliceConfig = z.object({\n artifacts: z.record(z.string(), NotebookArtifact).default({}),\n currentCellId: z.string().optional(),\n});\nexport type NotebookSliceConfig = z.infer<typeof NotebookSliceConfig>;\n\nexport const NotebookArtifactView = z.object({\n id: z.string(),\n cellOrder: z.array(z.string()).default([]),\n name: z.string(),\n});\nexport type NotebookArtifactView = z.infer<typeof NotebookArtifactView>;\n\nexport type InputUnion = z.infer<typeof import('@sqlrooms/cells').InputUnion>;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellContainer.d.ts","sourceRoot":"","sources":["../../src/cells/CellContainer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"CellContainer.d.ts","sourceRoot":"","sources":["../../src/cells/CellContainer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAmFtD,CAAC"}
|
|
@@ -2,10 +2,17 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { cn, EditableText } from '@sqlrooms/ui';
|
|
3
3
|
import { DeleteCellDialog } from '../cellOperations/DeleteCellDialog';
|
|
4
4
|
import { MoveCellButtons } from '../cellOperations/MoveCellButtons';
|
|
5
|
-
import { findCellInNotebook } from '../NotebookUtils';
|
|
6
5
|
import { useStoreWithNotebook } from '../useStoreWithNotebook';
|
|
7
6
|
export const CellContainer = ({ id, header, footer, children, className, showHeader = true, }) => {
|
|
8
|
-
const cell = useStoreWithNotebook((s) =>
|
|
7
|
+
const cell = useStoreWithNotebook((s) => s.cells.config.data[id]);
|
|
8
|
+
const artifactId = useStoreWithNotebook((s) => {
|
|
9
|
+
for (const [candidateArtifactId, artifact] of Object.entries(s.notebook.config.artifacts)) {
|
|
10
|
+
if (artifact.meta.cellOrder.includes(id)) {
|
|
11
|
+
return candidateArtifactId;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return undefined;
|
|
15
|
+
});
|
|
9
16
|
const onRename = useStoreWithNotebook((s) => s.notebook.renameCell);
|
|
10
17
|
const setCurrentCell = useStoreWithNotebook((s) => s.notebook.setCurrentCell);
|
|
11
18
|
const currentCellId = useStoreWithNotebook((s) => s.notebook.config.currentCellId);
|
|
@@ -18,9 +25,9 @@ export const CellContainer = ({ id, header, footer, children, className, showHea
|
|
|
18
25
|
: ''
|
|
19
26
|
: cn('bg-card border', isCurrent && 'border-primary'), className), onClick: () => setCurrentCell(id), children: [!showHeader ? (_jsxs("div", { className: cn('absolute top-1 right-1 z-10 items-center gap-1', isCurrent
|
|
20
27
|
? 'flex'
|
|
21
|
-
: 'hidden group-focus-within:flex group-hover:flex'), onMouseDown: (e) => e.preventDefault(), children: [_jsx(DeleteCellDialog, { cell: cell }), _jsx(MoveCellButtons, { id: id })] })) : (_jsxs("div", { className: "flex min-h-[36px] items-center justify-between gap-2 border-b px-2", children: [_jsx("div", { className: "flex h-6 flex-1 items-center gap-2", children: _jsx(EditableText, { editTrigger: "doubleClick", value: cell.data.title, onChange: (v) => onRename(id, v), className: "h-full text-sm font-medium shadow-none ring-0 outline-none" }) }), _jsxs("div", { className: "flex items-center justify-end gap-2 text-xs", children: [_jsxs("div", { className: cn('flex items-center gap-2', {
|
|
28
|
+
: 'hidden group-focus-within:flex group-hover:flex'), onMouseDown: (e) => e.preventDefault(), children: [_jsx(DeleteCellDialog, { cell: cell }), _jsx(MoveCellButtons, { artifactId: artifactId ?? '', id: id })] })) : (_jsxs("div", { className: "flex min-h-[36px] items-center justify-between gap-2 border-b px-2", children: [_jsx("div", { className: "flex h-6 flex-1 items-center gap-2", children: _jsx(EditableText, { editTrigger: "doubleClick", value: cell.data.title, onChange: (v) => onRename(id, v), className: "h-full text-sm font-medium shadow-none ring-0 outline-none" }) }), _jsxs("div", { className: "flex items-center justify-end gap-2 text-xs", children: [_jsxs("div", { className: cn('flex items-center gap-2', {
|
|
22
29
|
'group-hover:flex': !isCurrent,
|
|
23
30
|
hidden: !isCurrent,
|
|
24
|
-
}), children: [_jsx(DeleteCellDialog, { cell: cell }), _jsx(MoveCellButtons, { id: id })] }), _jsx("div", { children: header })] })] })), _jsx("div", { className: "flex-1 overflow-auto", children: children }), footer && _jsx("div", { className: "border-t", children: footer })] }));
|
|
31
|
+
}), children: [_jsx(DeleteCellDialog, { cell: cell }), _jsx(MoveCellButtons, { artifactId: artifactId ?? '', id: id })] }), _jsx("div", { children: header })] })] })), _jsx("div", { className: "flex-1 overflow-auto", children: children }), footer && _jsx("div", { className: "border-t", children: footer })] }));
|
|
25
32
|
};
|
|
26
33
|
//# sourceMappingURL=CellContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellContainer.js","sourceRoot":"","sources":["../../src/cells/CellContainer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,EAAE,EAAE,YAAY,EAAC,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAC,gBAAgB,EAAC,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAC,eAAe,EAAC,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"CellContainer.js","sourceRoot":"","sources":["../../src/cells/CellContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["import {cn, EditableText} from '@sqlrooms/ui';\nimport React from 'react';\n\nimport {DeleteCellDialog} from '../cellOperations/DeleteCellDialog';\nimport {MoveCellButtons} from '../cellOperations/MoveCellButtons';\nimport {useStoreWithNotebook} from '../useStoreWithNotebook';\n\nexport type CellContainerProps = {\n id: string;\n header?: React.ReactNode;\n footer?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n showHeader?: boolean;\n};\n\nexport const CellContainer: React.FC<CellContainerProps> = ({\n id,\n header,\n footer,\n children,\n className,\n showHeader = true,\n}) => {\n const cell = useStoreWithNotebook((s) => s.cells.config.data[id]);\n const artifactId = useStoreWithNotebook((s) => {\n for (const [candidateArtifactId, artifact] of Object.entries(\n s.notebook.config.artifacts,\n )) {\n if (artifact.meta.cellOrder.includes(id)) {\n return candidateArtifactId;\n }\n }\n return undefined;\n });\n const onRename = useStoreWithNotebook((s) => s.notebook.renameCell);\n const setCurrentCell = useStoreWithNotebook((s) => s.notebook.setCurrentCell);\n const currentCellId = useStoreWithNotebook(\n (s) => s.notebook.config.currentCellId,\n );\n const isCurrent = currentCellId === id;\n\n if (!cell) return null;\n return (\n <div\n id={`cell-${id}`}\n data-cell-container-id={id}\n className={cn(\n 'group relative rounded',\n !showHeader\n ? isCurrent\n ? 'border-primary border'\n : ''\n : cn('bg-card border', isCurrent && 'border-primary'),\n className,\n )}\n onClick={() => setCurrentCell(id)}\n >\n {!showHeader ? (\n <div\n className={cn(\n 'absolute top-1 right-1 z-10 items-center gap-1',\n isCurrent\n ? 'flex'\n : 'hidden group-focus-within:flex group-hover:flex',\n )}\n onMouseDown={(e) => e.preventDefault()}\n >\n <DeleteCellDialog cell={cell as any} />\n <MoveCellButtons artifactId={artifactId ?? ''} id={id} />\n </div>\n ) : (\n <div className=\"flex min-h-[36px] items-center justify-between gap-2 border-b px-2\">\n <div className=\"flex h-6 flex-1 items-center gap-2\">\n <EditableText\n editTrigger=\"doubleClick\"\n value={(cell.data as any).title}\n onChange={(v) => onRename(id, v)}\n className=\"h-full text-sm font-medium shadow-none ring-0 outline-none\"\n />\n </div>\n <div className=\"flex items-center justify-end gap-2 text-xs\">\n <div\n className={cn('flex items-center gap-2', {\n 'group-hover:flex': !isCurrent,\n hidden: !isCurrent,\n })}\n >\n <DeleteCellDialog cell={cell as any} />\n <MoveCellButtons artifactId={artifactId ?? ''} id={id} />\n </div>\n <div>{header}</div>\n </div>\n </div>\n )}\n <div className=\"flex-1 overflow-auto\">{children}</div>\n {footer && <div className=\"border-t\">{footer}</div>}\n </div>\n );\n};\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,5 +6,5 @@ export { createDefaultNotebookConfig, createNotebookSlice, } from './NotebookSli
|
|
|
6
6
|
export { Notebook } from './Notebook';
|
|
7
7
|
export { useStoreWithNotebook } from './useStoreWithNotebook';
|
|
8
8
|
export type { NotebookSliceState } from './NotebookStateTypes';
|
|
9
|
-
export { InputTypes, NotebookSliceConfig,
|
|
9
|
+
export { InputTypes, NotebookSliceConfig, NotebookArtifactView, InputCell, NotebookCell, NotebookArtifact, NotebookArtifactMeta, } from './cellSchemas';
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAE5D,YAAY,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAE5D,YAAY,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
export { createDefaultNotebookConfig, createNotebookSlice, } from './NotebookSlice';
|
|
6
6
|
export { Notebook } from './Notebook';
|
|
7
7
|
export { useStoreWithNotebook } from './useStoreWithNotebook';
|
|
8
|
-
export { InputTypes, NotebookSliceConfig,
|
|
8
|
+
export { InputTypes, NotebookSliceConfig, NotebookArtifactView, InputCell, NotebookCell, NotebookArtifact, NotebookArtifactMeta, } from './cellSchemas';
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAI5D,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAI5D,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,eAAe,CAAC","sourcesContent":["/**\n * {@include ../README.md}\n * @packageDocumentation\n */\n\nexport {\n createDefaultNotebookConfig,\n createNotebookSlice,\n} from './NotebookSlice';\n\nexport {Notebook} from './Notebook';\nexport {useStoreWithNotebook} from './useStoreWithNotebook';\n\nexport type {NotebookSliceState} from './NotebookStateTypes';\n\nexport {\n InputTypes,\n NotebookSliceConfig,\n NotebookArtifactView,\n InputCell,\n NotebookCell,\n NotebookArtifact,\n NotebookArtifactMeta,\n} from './cellSchemas';\n"]}
|
package/package.json
CHANGED
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sqlrooms/notebook",
|
|
3
|
-
"version": "0.29.0-rc.
|
|
4
|
-
"type": "module",
|
|
5
|
-
"author": "SQLRooms Contributors",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"main": "dist/index.js",
|
|
8
|
-
"module": "dist/index.js",
|
|
9
|
-
"types": "dist/index.d.ts",
|
|
10
|
-
"files": [
|
|
11
|
-
"dist"
|
|
12
|
-
],
|
|
3
|
+
"version": "0.29.0-rc.4",
|
|
13
4
|
"repository": {
|
|
14
5
|
"type": "git",
|
|
15
6
|
"url": "git+https://github.com/sqlrooms/sqlrooms.git"
|
|
16
7
|
},
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"author": "SQLRooms Contributors",
|
|
10
|
+
"type": "module",
|
|
17
11
|
"exports": {
|
|
18
12
|
".": {
|
|
19
13
|
"types": "./dist/index.d.ts",
|
|
@@ -21,28 +15,34 @@
|
|
|
21
15
|
"default": "./dist/index.js"
|
|
22
16
|
}
|
|
23
17
|
},
|
|
18
|
+
"main": "dist/index.js",
|
|
19
|
+
"module": "dist/index.js",
|
|
20
|
+
"types": "dist/index.d.ts",
|
|
21
|
+
"files": [
|
|
22
|
+
"dist"
|
|
23
|
+
],
|
|
24
24
|
"scripts": {
|
|
25
|
-
"dev": "tsc -w",
|
|
26
25
|
"build": "tsc",
|
|
26
|
+
"dev": "tsc -w",
|
|
27
27
|
"lint": "eslint .",
|
|
28
28
|
"typecheck": "tsc --noEmit",
|
|
29
29
|
"typedoc": "typedoc"
|
|
30
30
|
},
|
|
31
|
-
"peerDependencies": {
|
|
32
|
-
"react": "^18 || ^19",
|
|
33
|
-
"react-dom": "^18 || ^19"
|
|
34
|
-
},
|
|
35
31
|
"dependencies": {
|
|
36
32
|
"@paralleldrive/cuid2": "^2.2.2",
|
|
37
|
-
"@sqlrooms/cells": "0.29.0-rc.
|
|
38
|
-
"@sqlrooms/db": "0.29.0-rc.
|
|
39
|
-
"@sqlrooms/pivot": "0.29.0-rc.
|
|
40
|
-
"@sqlrooms/room-store": "0.29.0-rc.
|
|
41
|
-
"@sqlrooms/ui": "0.29.0-rc.
|
|
42
|
-
"@sqlrooms/utils": "0.29.0-rc.
|
|
33
|
+
"@sqlrooms/cells": "0.29.0-rc.4",
|
|
34
|
+
"@sqlrooms/db": "0.29.0-rc.4",
|
|
35
|
+
"@sqlrooms/pivot": "0.29.0-rc.4",
|
|
36
|
+
"@sqlrooms/room-store": "0.29.0-rc.4",
|
|
37
|
+
"@sqlrooms/ui": "0.29.0-rc.4",
|
|
38
|
+
"@sqlrooms/utils": "0.29.0-rc.4",
|
|
43
39
|
"immer": "^11.0.1",
|
|
44
40
|
"lucide-react": "^0.555.0",
|
|
45
41
|
"zod": "^4.1.13"
|
|
46
42
|
},
|
|
47
|
-
"
|
|
43
|
+
"peerDependencies": {
|
|
44
|
+
"react": "^18 || ^19",
|
|
45
|
+
"react-dom": "^18 || ^19"
|
|
46
|
+
},
|
|
47
|
+
"gitHead": "8694bab9d3d915a06d28675ad801b21444bcc55f"
|
|
48
48
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AddSqlCellResultToNewTable.d.ts","sourceRoot":"","sources":["../../src/cellOperations/AddSqlCellResultToNewTable.tsx"],"names":[],"mappings":"AAMA,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC;CACf,CA0BA,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { useBaseRoomShellStore } from '@sqlrooms/room-shell';
|
|
3
|
-
import { CreateTableModal } from '@sqlrooms/sql-editor';
|
|
4
|
-
import { Button } from '@sqlrooms/ui';
|
|
5
|
-
import { PlusIcon } from 'lucide-react';
|
|
6
|
-
import { useState } from 'react';
|
|
7
|
-
export const AddSqlCellResultToNewTable = ({ query }) => {
|
|
8
|
-
const [createTableModalOpen, setCreateTableModalOpen] = useState(false);
|
|
9
|
-
const addOrUpdateSqlQueryDataSource = useBaseRoomShellStore((state) => state.room.addOrUpdateSqlQueryDataSource);
|
|
10
|
-
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "flex gap-2", children: _jsxs(Button, { variant: "secondary", size: "xs", onClick: () => setCreateTableModalOpen(true), className: "h-7", children: [_jsx(PlusIcon, { size: 16 }), "New table"] }) }), _jsx(CreateTableModal, { query: query, isOpen: createTableModalOpen, onClose: () => setCreateTableModalOpen(false), onAddOrUpdateSqlQuery: addOrUpdateSqlQueryDataSource })] }));
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=AddSqlCellResultToNewTable.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AddSqlCellResultToNewTable.js","sourceRoot":"","sources":["../../src/cellOperations/AddSqlCellResultToNewTable.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AACpC,OAAO,EAAC,QAAQ,EAAC,MAAM,cAAc,CAAC;AACtC,OAAO,EAAC,QAAQ,EAAC,MAAM,OAAO,CAAC;AAE/B,MAAM,CAAC,MAAM,0BAA0B,GAElC,CAAC,EAAC,KAAK,EAAC,EAAE,EAAE;IACf,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxE,MAAM,6BAA6B,GAAG,qBAAqB,CACzD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CACpD,CAAC;IACF,OAAO,CACL,8BACE,cAAK,SAAS,EAAC,YAAY,YACzB,MAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAC5C,SAAS,EAAC,KAAK,aAEf,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,iBAEf,GACL,EACN,KAAC,gBAAgB,IACf,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAC7C,qBAAqB,EAAE,6BAA6B,GACpD,IACD,CACJ,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {useBaseRoomShellStore} from '@sqlrooms/room-shell';\nimport {CreateTableModal} from '@sqlrooms/sql-editor';\nimport {Button} from '@sqlrooms/ui';\nimport {PlusIcon} from 'lucide-react';\nimport {useState} from 'react';\n\nexport const AddSqlCellResultToNewTable: React.FC<{\n query: string;\n}> = ({query}) => {\n const [createTableModalOpen, setCreateTableModalOpen] = useState(false);\n const addOrUpdateSqlQueryDataSource = useBaseRoomShellStore(\n (state) => state.room.addOrUpdateSqlQueryDataSource,\n );\n return (\n <>\n <div className=\"flex gap-2\">\n <Button\n variant=\"secondary\"\n size=\"xs\"\n onClick={() => setCreateTableModalOpen(true)}\n className=\"h-7\"\n >\n <PlusIcon size={16} />\n New table\n </Button>\n </div>\n <CreateTableModal\n query={query}\n isOpen={createTableModalOpen}\n onClose={() => setCreateTableModalOpen(false)}\n onAddOrUpdateSqlQuery={addOrUpdateSqlQueryDataSource}\n />\n </>\n );\n};\n"]}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export declare const IconWithTooltip: import("react").ForwardRefExoticComponent<{
|
|
2
|
-
tooltipContent?: React.ReactNode;
|
|
3
|
-
icon: React.ReactNode;
|
|
4
|
-
side?: "right" | "left" | "top" | "bottom";
|
|
5
|
-
align?: "start" | "center" | "end";
|
|
6
|
-
sideOffset?: number;
|
|
7
|
-
onClick?: () => void;
|
|
8
|
-
disabled?: boolean;
|
|
9
|
-
} & import("react").HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
|
|
10
|
-
//# sourceMappingURL=IconWithTooltip.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IconWithTooltip.d.ts","sourceRoot":"","sources":["../../src/cellOperations/IconWithTooltip.tsx"],"names":[],"mappings":"AAaA,eAAO,MAAM,eAAe;qBATT,KAAK,CAAC,SAAS;UAC1B,KAAK,CAAC,SAAS;WACd,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ;YAClC,OAAO,GAAG,QAAQ,GAAG,KAAK;iBACrB,MAAM;cACT,MAAM,IAAI;eACT,OAAO;mGA8CnB,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { cn, Tooltip, TooltipContent, TooltipTrigger } from '@sqlrooms/ui';
|
|
3
|
-
import { forwardRef } from 'react';
|
|
4
|
-
export const IconWithTooltip = forwardRef((props, ref) => {
|
|
5
|
-
const { className, title, tooltipContent, icon, align = 'center', side = 'bottom', sideOffset = 10, onClick, disabled = false, ...restOfProps } = props;
|
|
6
|
-
return (_jsxs(Tooltip, { delayDuration: 100, children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { ref: ref, ...restOfProps, className: cn('flex w-full cursor-pointer items-center justify-center rounded', disabled && 'pointer-events-none cursor-not-allowed opacity-50', className), onClick: onClick, children: icon }) }), title && (_jsx(TooltipContent, { className: "text-xs", side: side, align: align, sideOffset: sideOffset, children: tooltipContent ? tooltipContent : title }))] }));
|
|
7
|
-
});
|
|
8
|
-
IconWithTooltip.displayName = 'IconWithTooltip';
|
|
9
|
-
//# sourceMappingURL=IconWithTooltip.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IconWithTooltip.js","sourceRoot":"","sources":["../../src/cellOperations/IconWithTooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AACzE,OAAO,EAAa,UAAU,EAAC,MAAM,OAAO,CAAC;AAY7C,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CACvC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACb,MAAM,EACJ,SAAS,EACT,KAAK,EACL,cAAc,EACd,IAAI,EACJ,KAAK,GAAG,QAAQ,EAChB,IAAI,GAAG,QAAQ,EACf,UAAU,GAAG,EAAE,EACf,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,GAAG,WAAW,EACf,GAAG,KAAK,CAAC;IACV,OAAO,CACL,MAAC,OAAO,IAAC,aAAa,EAAE,GAAG,aACzB,KAAC,cAAc,IAAC,OAAO,kBACrB,cACE,GAAG,EAAE,GAAG,KACJ,WAAW,EACf,SAAS,EAAE,EAAE,CACX,gEAAgE,EAChE,QAAQ,IAAI,mDAAmD,EAC/D,SAAS,CACV,EACD,OAAO,EAAE,OAAO,YAEf,IAAI,GACD,GACS,EAChB,KAAK,IAAI,CACR,KAAC,cAAc,IACb,SAAS,EAAC,SAAS,EACnB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,YAErB,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,GACzB,CAClB,IACO,CACX,CAAC;AACJ,CAAC,CACF,CAAC;AACF,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAC","sourcesContent":["import {cn, Tooltip, TooltipContent, TooltipTrigger} from '@sqlrooms/ui';\nimport {ElementRef, forwardRef} from 'react';\n\ntype Props = {\n tooltipContent?: React.ReactNode;\n icon: React.ReactNode;\n side?: 'right' | 'left' | 'top' | 'bottom';\n align?: 'start' | 'center' | 'end';\n sideOffset?: number;\n onClick?: () => void;\n disabled?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nexport const IconWithTooltip = forwardRef<ElementRef<'div'>, Props>(\n (props, ref) => {\n const {\n className,\n title,\n tooltipContent,\n icon,\n align = 'center',\n side = 'bottom',\n sideOffset = 10,\n onClick,\n disabled = false,\n ...restOfProps\n } = props;\n return (\n <Tooltip delayDuration={100}>\n <TooltipTrigger asChild>\n <div\n ref={ref}\n {...restOfProps}\n className={cn(\n 'flex w-full cursor-pointer items-center justify-center rounded',\n disabled && 'pointer-events-none cursor-not-allowed opacity-50',\n className,\n )}\n onClick={onClick}\n >\n {icon}\n </div>\n </TooltipTrigger>\n {title && (\n <TooltipContent\n className=\"text-xs\"\n side={side}\n align={align}\n sideOffset={sideOffset}\n >\n {tooltipContent ? tooltipContent : title}\n </TooltipContent>\n )}\n </Tooltip>\n );\n },\n);\nIconWithTooltip.displayName = 'IconWithTooltip';\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InputCell.d.ts","sourceRoot":"","sources":["../../../src/cells/Input/InputCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAqE1B,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAC,CAqC5C,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAC,CAQ5C,CAAC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { EditableText, Input, Slider, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@sqlrooms/ui';
|
|
3
|
-
import { CellContainer } from '../CellContainer';
|
|
4
|
-
import { useStoreWithNotebook } from '../../useStoreWithNotebook';
|
|
5
|
-
import { InputConfigPanel } from './InputConfigPanel/InputConfigPanel';
|
|
6
|
-
import { findCellInNotebook } from '../../NotebookUtils';
|
|
7
|
-
const RenderInput = ({ input, updateInput }) => {
|
|
8
|
-
switch (input.kind) {
|
|
9
|
-
case 'text':
|
|
10
|
-
return (_jsx(Input, { className: "h-8 w-full rounded border px-2 py-1 text-sm", value: input.value, onChange: (e) => updateInput({ value: e.target.value }) }));
|
|
11
|
-
case 'slider':
|
|
12
|
-
return (_jsxs("div", { className: "flex h-8 items-center space-x-1", children: [_jsx(Slider, { min: input.min, max: input.max, step: input.step, value: [input.value], onValueChange: (value) => updateInput({ value: Number(value) }) }), _jsx("span", { className: "min-w-[3ch] text-right text-sm font-medium", children: input.value })] }));
|
|
13
|
-
case 'dropdown':
|
|
14
|
-
return (_jsxs(Select, { value: input.value, onValueChange: (value) => updateInput({ value }), children: [_jsx(SelectTrigger, { className: "h-8 text-xs shadow-none", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { onCloseAutoFocus: (e) => e.preventDefault(), children: input.options.map((option) => (_jsx(SelectItem, { className: "text-xs", value: option, children: option }, option))) })] }));
|
|
15
|
-
default:
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
export const InputItem = ({ id }) => {
|
|
20
|
-
const cell = useStoreWithNotebook((s) => findCellInNotebook(s, id)?.cell);
|
|
21
|
-
const remove = useStoreWithNotebook((s) => s.notebook.removeCell);
|
|
22
|
-
const update = useStoreWithNotebook((s) => s.notebook.updateCell);
|
|
23
|
-
if (!cell || cell.type !== 'input')
|
|
24
|
-
return null;
|
|
25
|
-
const input = cell.data.input;
|
|
26
|
-
const updateInput = (patch) => update(id, (c) => {
|
|
27
|
-
return {
|
|
28
|
-
...c,
|
|
29
|
-
data: {
|
|
30
|
-
...c.data,
|
|
31
|
-
input: { ...c.data.input, ...patch },
|
|
32
|
-
},
|
|
33
|
-
};
|
|
34
|
-
});
|
|
35
|
-
return (_jsxs("div", { className: "mx-2 flex w-[200px] flex-col gap-1 py-1 text-sm", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx(EditableText, { value: input.varName, onChange: (varName) => updateInput({ varName }), className: "h-6 text-xs font-semibold shadow-none outline-none ring-0" }), _jsx(InputConfigPanel, { input: input, updateInput: updateInput, onRemove: () => remove(id) })] }), _jsx(RenderInput, { input: input, updateInput: updateInput })] }));
|
|
36
|
-
};
|
|
37
|
-
export const InputCell = ({ id }) => {
|
|
38
|
-
return (_jsx(CellContainer, { id: id, typeLabel: "Input", children: _jsx("div", { className: "p-2", children: _jsx(InputItem, { id: id }) }) }));
|
|
39
|
-
};
|
|
40
|
-
//# sourceMappingURL=InputCell.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InputCell.js","sourceRoot":"","sources":["../../../src/cells/Input/InputCell.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n EditableText,\n Input,\n Slider,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@sqlrooms/ui';\n\nimport {CellContainer} from '../CellContainer';\nimport {useStoreWithNotebook} from '../../useStoreWithNotebook';\nimport {InputConfigPanel} from './InputConfigPanel/InputConfigPanel';\nimport {InputUnion, InputCell as InputCellType} from '../../cellSchemas';\nimport {findCellInNotebook} from '../../NotebookUtils';\n\nconst RenderInput: React.FC<{\n input: InputUnion;\n updateInput: (patch: Partial<InputUnion>) => void;\n}> = ({input, updateInput}) => {\n switch (input.kind) {\n case 'text':\n return (\n <Input\n className=\"h-8 w-full rounded border px-2 py-1 text-sm\"\n value={input.value}\n onChange={(e) => updateInput({value: e.target.value})}\n />\n );\n case 'slider':\n return (\n <div className=\"flex h-8 items-center space-x-1\">\n <Slider\n min={input.min}\n max={input.max}\n step={input.step}\n value={[input.value as number]}\n onValueChange={(value) => updateInput({value: Number(value)})}\n />\n <span className=\"min-w-[3ch] text-right text-sm font-medium\">\n {input.value}\n </span>\n </div>\n );\n case 'dropdown':\n return (\n <Select\n value={input.value as string}\n onValueChange={(value) => updateInput({value})}\n >\n <SelectTrigger className=\"h-8 text-xs shadow-none\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent onCloseAutoFocus={(e) => e.preventDefault()}>\n {input.options.map((option) => (\n <SelectItem className=\"text-xs\" key={option} value={option}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n default:\n return null;\n }\n};\n\nexport const InputItem: React.FC<{id: string}> = ({id}) => {\n const cell = useStoreWithNotebook(\n (s) => findCellInNotebook(s as any, id)?.cell,\n );\n const remove = useStoreWithNotebook((s) => s.notebook.removeCell);\n const update = useStoreWithNotebook((s) => s.notebook.updateCell);\n if (!cell || cell.type !== 'input') return null;\n const input = cell.data.input;\n\n const updateInput = (patch: Partial<InputUnion>) =>\n update(id, (c: any) => {\n return {\n ...c,\n data: {\n ...c.data,\n input: {...c.data.input, ...patch},\n },\n } as any;\n });\n\n return (\n <div className=\"mx-2 flex w-[200px] flex-col gap-1 py-1 text-sm\">\n <div className=\"flex items-center justify-between gap-2\">\n <EditableText\n value={input.varName}\n onChange={(varName) => updateInput({varName})}\n className=\"h-6 text-xs font-semibold shadow-none outline-none ring-0\"\n />\n <InputConfigPanel\n input={input}\n updateInput={updateInput}\n onRemove={() => remove(id)}\n />\n </div>\n <RenderInput input={input} updateInput={updateInput} />\n </div>\n );\n};\n\nexport const InputCell: React.FC<{id: string}> = ({id}) => {\n return (\n <CellContainer id={id} typeLabel=\"Input\">\n <div className=\"p-2\">\n <InputItem id={id} />\n </div>\n </CellContainer>\n );\n};\n"]}
|