{
  "name": "spreadsheet-menubar-edit-menu",
  "type": "registry:component",
  "dependencies": [
    "@unsanity/spreadsheet",
    "lucide-react"
  ],
  "registryDependencies": [
    "menubar"
  ],
  "files": [
    {
      "path": "components/spreadsheet/spreadsheet-menubar-edit-menu.tsx",
      "content": "\"use client\";\n\nimport {\n  fromActive,\n  getSelectionMode,\n  primaryShortcut,\n  useIsApplePlatform,\n  useSpreadsheetClipboard,\n  useSpreadsheetColumnActions,\n  useSpreadsheetRowActions,\n  useUndoRedo,\n  useSpreadsheetStore,\n} from \"@unsanity/spreadsheet\";\nimport {\n  ClipboardPaste,\n  Copy,\n  Redo2,\n  Scissors,\n  Undo2,\n} from \"lucide-react\";\nimport {\n  MenubarContent,\n  MenubarItem,\n  MenubarMenu,\n  MenubarSeparator,\n  MenubarShortcut,\n  MenubarSub,\n  MenubarSubContent,\n  MenubarSubTrigger,\n  MenubarTrigger,\n} from \"@/components/ui/menubar\";\nexport function SpreadsheetMenubarEditMenu() {\n  const { undo, redo, canUndo, canRedo } = useUndoRedo();\n  const { cut, copy, paste, canCut, canCopy, canPaste } = useSpreadsheetClipboard();\n  const row = useSpreadsheetRowActions();\n  const col = useSpreadsheetColumnActions();\n  const clearSelection = useSpreadsheetStore((s) => s.clearSelection);\n\n  const selection = useSpreadsheetStore(fromActive((sh) => sh.selection));\n  const sheetData = useSpreadsheetStore(fromActive((sh) => sh.data));\n  const colCountVal = useSpreadsheetStore(fromActive((sh) => sh.colDefs.length));\n\n  const isApple = useIsApplePlatform();\n  const hasSelection = Boolean(selection);\n\n  const selectionMode = getSelectionMode(\n    selection,\n    colCountVal,\n    sheetData.length\n  );\n  const showRowDeleteInDeleteMenu = selectionMode !== \"col\";\n  const showColDeleteInDeleteMenu = selectionMode !== \"row\";\n\n  return (\n    <MenubarMenu>\n      <MenubarTrigger>Edit</MenubarTrigger>\n      <MenubarContent>\n        <MenubarItem onClick={undo} disabled={!canUndo}>\n          <Undo2 />\n          Undo\n          <MenubarShortcut>{primaryShortcut(\"Z\", isApple)}</MenubarShortcut>\n        </MenubarItem>\n        <MenubarItem onClick={redo} disabled={!canRedo}>\n          <Redo2 />\n          Redo\n          <MenubarShortcut>{primaryShortcut(\"Y\", isApple)}</MenubarShortcut>\n        </MenubarItem>\n        <MenubarSeparator />\n        <MenubarItem onClick={cut} disabled={!canCut}>\n          <Scissors />\n          Cut\n          <MenubarShortcut>{primaryShortcut(\"X\", isApple)}</MenubarShortcut>\n        </MenubarItem>\n        <MenubarItem onClick={copy} disabled={!canCopy}>\n          <Copy />\n          Copy\n          <MenubarShortcut>{primaryShortcut(\"C\", isApple)}</MenubarShortcut>\n        </MenubarItem>\n        <MenubarItem onClick={() => void paste()} disabled={!canPaste}>\n          <ClipboardPaste />\n          Paste\n          <MenubarShortcut>{primaryShortcut(\"V\", isApple)}</MenubarShortcut>\n        </MenubarItem>\n        <MenubarSeparator />\n        <MenubarSub>\n          <MenubarSubTrigger disabled={!hasSelection}>Delete</MenubarSubTrigger>\n          <MenubarSubContent>\n            <MenubarItem onClick={clearSelection} disabled={!hasSelection}>\n              Values\n              <MenubarShortcut>Del</MenubarShortcut>\n            </MenubarItem>\n            {showRowDeleteInDeleteMenu ? (\n              <MenubarItem\n                onClick={row.deleteSelectedRows}\n                disabled={!hasSelection || row.selectedRows.length === 0}\n              >\n                {row.deleteMenuRowLabel()}\n              </MenubarItem>\n            ) : null}\n            {showColDeleteInDeleteMenu ? (\n              <MenubarItem\n                onClick={col.deleteSelectedCols}\n                disabled={!hasSelection || col.selectedCols.length === 0}\n              >\n                {col.deleteMenuColLabel()}\n              </MenubarItem>\n            ) : null}\n          </MenubarSubContent>\n        </MenubarSub>\n      </MenubarContent>\n    </MenubarMenu>\n  );\n}\n",
      "type": "registry:component"
    }
  ]
}
