@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.
Files changed (91) hide show
  1. package/README.md +10 -10
  2. package/dist/Notebook.d.ts +3 -1
  3. package/dist/Notebook.d.ts.map +1 -1
  4. package/dist/Notebook.js +12 -15
  5. package/dist/Notebook.js.map +1 -1
  6. package/dist/NotebookSlice.d.ts.map +1 -1
  7. package/dist/NotebookSlice.js +47 -67
  8. package/dist/NotebookSlice.js.map +1 -1
  9. package/dist/NotebookStateTypes.d.ts +6 -11
  10. package/dist/NotebookStateTypes.d.ts.map +1 -1
  11. package/dist/NotebookStateTypes.js.map +1 -1
  12. package/dist/NotebookUtils.d.ts +5 -5
  13. package/dist/NotebookUtils.d.ts.map +1 -1
  14. package/dist/NotebookUtils.js +10 -10
  15. package/dist/NotebookUtils.js.map +1 -1
  16. package/dist/cellOperations/AddNewCellDropdown.d.ts +2 -1
  17. package/dist/cellOperations/AddNewCellDropdown.d.ts.map +1 -1
  18. package/dist/cellOperations/AddNewCellDropdown.js +5 -6
  19. package/dist/cellOperations/AddNewCellDropdown.js.map +1 -1
  20. package/dist/cellOperations/AddNewCellTabs.d.ts +1 -0
  21. package/dist/cellOperations/AddNewCellTabs.d.ts.map +1 -1
  22. package/dist/cellOperations/AddNewCellTabs.js +2 -3
  23. package/dist/cellOperations/AddNewCellTabs.js.map +1 -1
  24. package/dist/cellOperations/MoveCellButtons.d.ts +1 -0
  25. package/dist/cellOperations/MoveCellButtons.d.ts.map +1 -1
  26. package/dist/cellOperations/MoveCellButtons.js +3 -4
  27. package/dist/cellOperations/MoveCellButtons.js.map +1 -1
  28. package/dist/cellSchemas.d.ts +9 -9
  29. package/dist/cellSchemas.d.ts.map +1 -1
  30. package/dist/cellSchemas.js +8 -8
  31. package/dist/cellSchemas.js.map +1 -1
  32. package/dist/cells/CellContainer.d.ts.map +1 -1
  33. package/dist/cells/CellContainer.js +11 -4
  34. package/dist/cells/CellContainer.js.map +1 -1
  35. package/dist/index.d.ts +1 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +1 -1
  38. package/dist/index.js.map +1 -1
  39. package/package.json +22 -22
  40. package/dist/cellOperations/AddSqlCellResultToNewTable.d.ts +0 -4
  41. package/dist/cellOperations/AddSqlCellResultToNewTable.d.ts.map +0 -1
  42. package/dist/cellOperations/AddSqlCellResultToNewTable.js +0 -12
  43. package/dist/cellOperations/AddSqlCellResultToNewTable.js.map +0 -1
  44. package/dist/cellOperations/IconWithTooltip.d.ts +0 -10
  45. package/dist/cellOperations/IconWithTooltip.d.ts.map +0 -1
  46. package/dist/cellOperations/IconWithTooltip.js +0 -9
  47. package/dist/cellOperations/IconWithTooltip.js.map +0 -1
  48. package/dist/cells/Input/InputCell.d.ts +0 -8
  49. package/dist/cells/Input/InputCell.d.ts.map +0 -1
  50. package/dist/cells/Input/InputCell.js +0 -40
  51. package/dist/cells/Input/InputCell.js.map +0 -1
  52. package/dist/cells/Input/InputConfigPanel/DropdownConfig.d.ts +0 -2
  53. package/dist/cells/Input/InputConfigPanel/DropdownConfig.d.ts.map +0 -1
  54. package/dist/cells/Input/InputConfigPanel/DropdownConfig.js +0 -44
  55. package/dist/cells/Input/InputConfigPanel/DropdownConfig.js.map +0 -1
  56. package/dist/cells/Input/InputConfigPanel/InputConfigPanel.d.ts +0 -11
  57. package/dist/cells/Input/InputConfigPanel/InputConfigPanel.d.ts.map +0 -1
  58. package/dist/cells/Input/InputConfigPanel/InputConfigPanel.js +0 -65
  59. package/dist/cells/Input/InputConfigPanel/InputConfigPanel.js.map +0 -1
  60. package/dist/cells/Input/InputConfigPanel/SliderConfig.d.ts +0 -2
  61. package/dist/cells/Input/InputConfigPanel/SliderConfig.d.ts.map +0 -1
  62. package/dist/cells/Input/InputConfigPanel/SliderConfig.js +0 -18
  63. package/dist/cells/Input/InputConfigPanel/SliderConfig.js.map +0 -1
  64. package/dist/cells/Input/InputConfigPanel/TextConfig.d.ts +0 -2
  65. package/dist/cells/Input/InputConfigPanel/TextConfig.d.ts.map +0 -1
  66. package/dist/cells/Input/InputConfigPanel/TextConfig.js +0 -8
  67. package/dist/cells/Input/InputConfigPanel/TextConfig.js.map +0 -1
  68. package/dist/cells/InputBar.d.ts +0 -9
  69. package/dist/cells/InputBar.d.ts.map +0 -1
  70. package/dist/cells/InputBar.js +0 -23
  71. package/dist/cells/InputBar.js.map +0 -1
  72. package/dist/cells/SqlCell.d.ts +0 -5
  73. package/dist/cells/SqlCell.d.ts.map +0 -1
  74. package/dist/cells/SqlCell.js +0 -29
  75. package/dist/cells/SqlCell.js.map +0 -1
  76. package/dist/cells/TextCell.d.ts +0 -5
  77. package/dist/cells/TextCell.d.ts.map +0 -1
  78. package/dist/cells/TextCell.js +0 -36
  79. package/dist/cells/TextCell.js.map +0 -1
  80. package/dist/cells/Vega/VegaCell.d.ts +0 -5
  81. package/dist/cells/Vega/VegaCell.d.ts.map +0 -1
  82. package/dist/cells/Vega/VegaCell.js +0 -78
  83. package/dist/cells/Vega/VegaCell.js.map +0 -1
  84. package/dist/cells/Vega/VegaConfigPanel.d.ts +0 -8
  85. package/dist/cells/Vega/VegaConfigPanel.d.ts.map +0 -1
  86. package/dist/cells/Vega/VegaConfigPanel.js +0 -72
  87. package/dist/cells/Vega/VegaConfigPanel.js.map +0 -1
  88. package/dist/crdt.d.ts +0 -51
  89. package/dist/crdt.d.ts.map +0 -1
  90. package/dist/crdt.js +0 -74
  91. 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,CAoCxC,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,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"}
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 (!currentTabId || !enableShortcut) {
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, currentTabId: currentTabId, setOpen: setOpen })] }));
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, currentTabId, align = 'center', setOpen, }) => {
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: !currentTabId, onSelect: () => {
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":"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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 onAdd: (type: string) => void;\n enableShortcut?: boolean;\n triggerComponent?: React.ReactNode;\n};\n\nexport const AddNewCellDropdown: FC<Props> = ({\n onAdd,\n enableShortcut = false,\n triggerComponent = <TriggerButton />,\n}) => {\n const currentTabId = useStoreWithNotebook(\n (s) => s.cells.config.currentSheetId,\n );\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n if (!currentTabId || !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 currentTabId={currentTabId}\n setOpen={setOpen}\n />\n </Popover>\n );\n};\n\ntype ContentProps = {\n onAddCell: (type: string) => void;\n currentTabId?: string | null;\n align?: 'center' | 'start' | 'end';\n setOpen?: (open: boolean) => void;\n};\n\nexport const AddNewCellDropdownContent: FC<ContentProps> = ({\n onAddCell,\n currentTabId,\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={!currentTabId}\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
+ {"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;AASlD,MAAM,CAAC,MAAM,kBAAkB,GAAc,CAAC,EAC5C,UAAU,EACV,KAAK,EACL,cAAc,GAAG,KAAK,EACtB,gBAAgB,GAAG,KAAC,aAAa,KAAG,GACrC,EAAE,EAAE;IACH,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU,IAAI,CAAC,cAAc,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,CAAC,CAAgB,EAAE,EAAE;YACrC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChE,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,MAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,aACxC,KAAC,cAAc,IAAC,OAAO,kBAAE,gBAAgB,GAAkB,EAE3D,KAAC,yBAAyB,IACxB,SAAS,EAAE,KAAK,EAChB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,GAChB,IACM,CACX,CAAC;AACJ,CAAC,CAAC;AASF,MAAM,CAAC,MAAM,yBAAyB,GAAqB,CAAC,EAC1D,SAAS,EACT,UAAU,EACV,KAAK,GAAG,QAAQ,EAChB,OAAO,GACR,EAAE,EAAE;IACH,MAAM,YAAY,GAAG,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvE,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAEjD,OAAO,CACL,KAAC,cAAc,IACb,KAAK,EAAE,KAAK,EACZ,SAAS,EAAC,YAAY,EACtB,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,YAE3C,KAAC,OAAO,IAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,QAAC,SAAS,EAAC,4BAA4B,YAC/D,KAAC,WAAW,IAAC,SAAS,EAAC,4BAA4B,YACjD,KAAC,YAAY,IAAC,SAAS,EAAC,0JAA0J,YAC/K,cAAc,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE;wBACnC,OAAO,CACL,KAAC,WAAW,IAEV,QAAQ,EAAE,CAAC,UAAU,EACrB,QAAQ,EAAE,GAAG,EAAE;gCACb,SAAS,CAAC,IAAI,CAAC,CAAC;gCAChB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;4BACnB,CAAC,EACD,SAAS,EAAC,gBAAgB,YAE1B,eAAM,SAAS,EAAC,sCAAsC,YACnD,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,GAChC,IAVF,IAAI,CAWG,CACf,CAAC;oBACJ,CAAC,CAAC,GACW,GACH,GACN,GACK,CAClB,CAAC;AACJ,CAAC,CAAC","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,5 +1,6 @@
1
1
  import { FC } from 'react';
2
2
  type Props = {
3
+ artifactId: string;
3
4
  onAdd: (type: string) => void;
4
5
  };
5
6
  export declare const AddNewCellTabs: FC<Props>;
@@ -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,CA8BpC,CAAC"}
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: !currentTabId, 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));
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;AAMtC,MAAM,CAAC,MAAM,cAAc,GAAc,CAAC,EAAC,KAAK,EAAC,EAAE,EAAE;IACnD,MAAM,YAAY,GAAG,oBAAoB,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CACrC,CAAC;IACF,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,YAAY,EACvB,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 onAdd: (type: string) => void;\n};\n\nexport const AddNewCellTabs: FC<Props> = ({onAdd}) => {\n const currentTabId = useStoreWithNotebook(\n (s) => s.cells.config.currentSheetId,\n );\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={!currentTabId}\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
+ {"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,5 +1,6 @@
1
1
  import { FC } from 'react';
2
2
  type Props = {
3
+ artifactId: string;
3
4
  id: string;
4
5
  };
5
6
  export declare const MoveCellButtons: FC<Props>;
@@ -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,CA2BrC,CAAC"}
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
- const currentTabId = useStoreWithNotebook((s) => s.cells.config.currentSheetId);
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(currentTabId, id, 'up'), children: _jsx(ArrowUpIcon, { className: "text-gray-500" }) }), _jsx(Button, { variant: "ghost", className: "h-6 w-6", size: "xs", onClick: () => moveCell(currentTabId, id, 'down'), children: _jsx(ArrowDownIcon, { className: "text-gray-500" }) })] }));
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;AAM7D,MAAM,CAAC,MAAM,eAAe,GAAc,CAAC,EAAC,EAAE,EAAC,EAAE,EAAE;IACjD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClE,MAAM,YAAY,GAAG,oBAAoB,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CACrC,CAAC;IACF,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAE/B,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,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,YAE/C,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,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,YAEjD,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 id: string;\n};\n\nexport const MoveCellButtons: FC<Props> = ({id}) => {\n const moveCell = useStoreWithNotebook((s) => s.notebook.moveCell);\n const currentTabId = useStoreWithNotebook(\n (s) => s.cells.config.currentSheetId,\n );\n if (!currentTabId) 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(currentTabId, 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(currentTabId, id, 'down')}\n >\n <ArrowDownIcon className=\"text-gray-500\" />\n </Button>\n </div>\n );\n};\n"]}
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"]}
@@ -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 View Meta */
93
- export declare const NotebookSheetMeta: z.ZodObject<{
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 NotebookSheetMeta = z.infer<typeof NotebookSheetMeta>;
97
- export declare const NotebookSheet: z.ZodObject<{
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 NotebookSheet = z.infer<typeof NotebookSheet>;
104
- /** Notebook Slice Config (View only) */
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
- sheets: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
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 NotebookTab: z.ZodObject<{
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 NotebookTab = z.infer<typeof NotebookTab>;
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,yBAAyB;AACzB,eAAO,MAAM,iBAAiB;;iBAE5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,aAAa;;;;;iBAGxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,wCAAwC;AACxC,eAAO,MAAM,mBAAmB;;;;;;;;iBAG9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,eAAO,MAAM,WAAW;;;;iBAItB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,iBAAiB,EAAE,UAAU,CAAC,CAAC"}
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"}
@@ -14,22 +14,22 @@ export const NotebookCell = z.discriminatedUnion('type', [
14
14
  InputCellSchema,
15
15
  PivotCellSchema,
16
16
  ]);
17
- /** Notebook View Meta */
18
- export const NotebookSheetMeta = z.object({
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 NotebookSheet = z.object({
21
+ export const NotebookArtifact = z.object({
22
22
  id: z.string(),
23
- meta: NotebookSheetMeta,
23
+ meta: NotebookArtifactMeta,
24
24
  });
25
- /** Notebook Slice Config (View only) */
25
+ /** Notebook Slice Config (view-only artifact runtime metadata). */
26
26
  export const NotebookSliceConfig = z.object({
27
- sheets: z.record(z.string(), NotebookSheet).default({}),
27
+ artifacts: z.record(z.string(), NotebookArtifact).default({}),
28
28
  currentCellId: z.string().optional(),
29
29
  });
30
- export const NotebookTab = z.object({
30
+ export const NotebookArtifactView = z.object({
31
31
  id: z.string(),
32
32
  cellOrder: z.array(z.string()).default([]),
33
- name: z.string(), // Title from CellsSlice
33
+ name: z.string(),
34
34
  });
35
35
  //# sourceMappingURL=cellSchemas.js.map
@@ -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,yBAAyB;AACzB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,iBAAiB;CACxB,CAAC,CAAC;AAGH,wCAAwC;AACxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACvD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,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,EAAE,wBAAwB;CAC3C,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 Meta */\nexport const NotebookSheetMeta = z.object({\n cellOrder: z.array(z.string()).default([]),\n});\nexport type NotebookSheetMeta = z.infer<typeof NotebookSheetMeta>;\n\nexport const NotebookSheet = z.object({\n id: z.string(),\n meta: NotebookSheetMeta,\n});\nexport type NotebookSheet = z.infer<typeof NotebookSheet>;\n\n/** Notebook Slice Config (View only) */\nexport const NotebookSliceConfig = z.object({\n sheets: z.record(z.string(), NotebookSheet).default({}),\n currentCellId: z.string().optional(),\n});\nexport type NotebookSliceConfig = z.infer<typeof NotebookSliceConfig>;\n\nexport const NotebookTab = z.object({\n id: z.string(),\n cellOrder: z.array(z.string()).default([]),\n name: z.string(), // Title from CellsSlice\n});\nexport type NotebookTab = z.infer<typeof NotebookTab>;\n\nexport type InputUnion = z.infer<typeof import('@sqlrooms/cells').InputUnion>;\n"]}
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;AAO1B,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,CA2EtD,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) => findCellInNotebook(s, id)?.cell);
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":"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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 {findCellInNotebook} from '../NotebookUtils';\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(\n (s) => findCellInNotebook(s as any, id)?.cell,\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 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 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"]}
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, NotebookTab, InputCell, NotebookCell, NotebookSheet, NotebookSheetMeta, } from './cellSchemas';
9
+ export { InputTypes, NotebookSliceConfig, NotebookArtifactView, InputCell, NotebookCell, NotebookArtifact, NotebookArtifactMeta, } from './cellSchemas';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -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,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC"}
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, NotebookTab, InputCell, NotebookCell, NotebookSheet, NotebookSheetMeta, } from './cellSchemas';
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,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,iBAAiB,GAClB,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 NotebookTab,\n InputCell,\n NotebookCell,\n NotebookSheet,\n NotebookSheetMeta,\n} from './cellSchemas';\n"]}
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.2",
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.2",
38
- "@sqlrooms/db": "0.29.0-rc.2",
39
- "@sqlrooms/pivot": "0.29.0-rc.2",
40
- "@sqlrooms/room-store": "0.29.0-rc.2",
41
- "@sqlrooms/ui": "0.29.0-rc.2",
42
- "@sqlrooms/utils": "0.29.0-rc.2",
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
- "gitHead": "5d511631992c1af8852ea79ced488867aad4a555"
43
+ "peerDependencies": {
44
+ "react": "^18 || ^19",
45
+ "react-dom": "^18 || ^19"
46
+ },
47
+ "gitHead": "8694bab9d3d915a06d28675ad801b21444bcc55f"
48
48
  }
@@ -1,4 +0,0 @@
1
- export declare const AddSqlCellResultToNewTable: React.FC<{
2
- query: string;
3
- }>;
4
- //# sourceMappingURL=AddSqlCellResultToNewTable.d.ts.map
@@ -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,8 +0,0 @@
1
- import React from 'react';
2
- export declare const InputItem: React.FC<{
3
- id: string;
4
- }>;
5
- export declare const InputCell: React.FC<{
6
- id: string;
7
- }>;
8
- //# sourceMappingURL=InputCell.d.ts.map
@@ -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"]}
@@ -1,2 +0,0 @@
1
- export declare const DropdownConfig: () => import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=DropdownConfig.d.ts.map