{"version":3,"file":"SavedViewsMenu-BjtHxy7l.cjs","names":["useSavedViews","Box","Button","Divider","IconButton","Popover","Stack","TextField","useState","SavedViewsMenu","t0","$","_c","options","labels","views","save","apply","remove","anchor","setAnchor","name","setName","t1","trim","trimmed","t2","t3","Symbol","for","e","currentTarget","t4","savedViews","t5","t6","t7","t8","vertical","horizontal","t9","Math","max","min","window","innerHeight","getBoundingClientRect","bottom","t10","p","minWidth","maxHeight","overflowY","t11","deleteView","t12","view","alignItems","justifyContent","map","my","t13","t14","viewName","htmlInput","t15","e_0","target","value","t16","t17","t18","t19","saveView","t20","t21","t22","t23"],"sources":["../src/components/SavedViewsMenu.tsx"],"sourcesContent":["import type { TableLabels } from \"@adapttable/core\";\nimport { useSavedViews, type UseSavedViewsOptions } from \"@adapttable/react\";\nimport {\n  Box,\n  Button,\n  Divider,\n  IconButton,\n  Popover,\n  Stack,\n  TextField,\n} from \"@mui/material\";\nimport { useState } from \"react\";\n\n/**\n * The label strings the saved-views menu renders.\n *\n * @public\n */\nexport type SavedViewsLabels = Pick<\n  Required<TableLabels>,\n  \"savedViews\" | \"saveView\" | \"viewName\" | \"deleteView\"\n>;\n\n/**\n * Props for the saved-views menu.\n *\n * @public\n */\nexport interface SavedViewsMenuProps {\n  /** Storage + URL backend wiring, forwarded to core's `useSavedViews`. */\n  options: UseSavedViewsOptions;\n  /** Resolved table labels (trigger, save row, delete action). */\n  labels: SavedViewsLabels;\n}\n\n/**\n * MUI saved-views menu: a toolbar button opening a popover that lists the\n * saved views — click applies one and closes, the trailing × deletes it —\n * above a save row that captures the table's CURRENT URL state (search,\n * sort, page, filters, column layout) under a typed name.\n *\n * @public\n */\nexport function SavedViewsMenu({\n  options,\n  labels,\n}: Readonly<SavedViewsMenuProps>) {\n  const { views, save, apply, remove } = useSavedViews(options);\n  const [anchor, setAnchor] = useState<null | HTMLElement>(null);\n  const [name, setName] = useState(\"\");\n  const trimmed = name.trim();\n  return (\n    <>\n      <Button\n        size=\"small\"\n        variant=\"outlined\"\n        aria-expanded={anchor !== null}\n        aria-haspopup=\"true\"\n        onClick={(e) => setAnchor(e.currentTarget)}\n      >\n        {labels.savedViews}\n      </Button>\n      <Popover\n        anchorEl={anchor}\n        open={anchor !== null}\n        onClose={() => setAnchor(null)}\n        anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n        transformOrigin={{ vertical: \"top\", horizontal: \"left\" }}\n        marginThreshold={0}\n      >\n        <Box\n          sx={{\n            p: 0.75,\n            minWidth: 250,\n            maxHeight: anchor\n              ? Math.max(\n                  120,\n                  Math.min(\n                    360,\n                    window.innerHeight -\n                      anchor.getBoundingClientRect().bottom -\n                      8\n                  )\n                )\n              : 360,\n            overflowY: \"auto\",\n          }}\n        >\n          {views.map((view) => (\n            <Stack\n              key={view.name}\n              direction=\"row\"\n              spacing={0.5}\n              sx={{ alignItems: \"center\" }}\n            >\n              <Button\n                size=\"small\"\n                fullWidth\n                sx={{ justifyContent: \"flex-start\" }}\n                onClick={() => {\n                  apply(view.name);\n                  setAnchor(null);\n                }}\n              >\n                {view.name}\n              </Button>\n              <IconButton\n                size=\"small\"\n                aria-label={`${labels.deleteView}: ${view.name}`}\n                onClick={() => remove(view.name)}\n              >\n                ×\n              </IconButton>\n            </Stack>\n          ))}\n          <Divider sx={{ my: 0.5 }} />\n          <Stack direction=\"row\" spacing={0.5} sx={{ alignItems: \"center\" }}>\n            <TextField\n              size=\"small\"\n              value={name}\n              placeholder={labels.viewName}\n              slotProps={{ htmlInput: { \"aria-label\": labels.viewName } }}\n              onChange={(e) => setName(e.target.value)}\n            />\n            <Button\n              size=\"small\"\n              variant=\"contained\"\n              disabled={trimmed === \"\"}\n              onClick={() => {\n                save(trimmed);\n                setName(\"\");\n              }}\n            >\n              {labels.saveView}\n            </Button>\n          </Stack>\n        </Box>\n      </Popover>\n    </>\n  );\n}\n"],"mappings":"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"}