{"version":3,"file":"LayoutSwitcher.cjs","names":["_react","require","_MenuButton","_MenuItem","_i18n","_jsxRuntime","LayoutSwitcher","availableLayouts","currentLayout","setCurrentLayout","t","useTranslation","changeLayout","useCallback","value","memoizedMenuItems","useMemo","map","onClick","label","jsx","MenuButton","ariaLabel","buttonLabel","menuAlignment","shouldCloseOnSelect","children","MenuItem","isSelected","MemoizedLayoutSwitcher","exports","memo","displayName"],"sources":["../../../../src/labs/DataView/LayoutSwitcher.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Dispatch, memo, SetStateAction, useCallback, useMemo } from \"react\";\n\nimport { MenuButton } from \"../../Buttons/MenuButton.js\";\nimport { MenuItem } from \"../../Buttons/MenuItem.js\";\nimport { useTranslation } from \"../../i18n.generated/i18n.js\";\nimport { AvailableLayouts, DataLayout } from \"./componentTypes.js\";\n\nexport type LayoutSwitcherProps = {\n  availableLayouts: AvailableLayouts;\n  currentLayout: DataLayout;\n  setCurrentLayout: Dispatch<SetStateAction<DataLayout>>;\n};\n\nconst LayoutSwitcher = ({\n  availableLayouts,\n  currentLayout,\n  setCurrentLayout,\n}: LayoutSwitcherProps) => {\n  const { t } = useTranslation();\n\n  const changeLayout = useCallback(\n    (value: DataLayout) => {\n      setCurrentLayout(value);\n    },\n    [setCurrentLayout],\n  );\n\n  const memoizedMenuItems = useMemo(\n    () =>\n      availableLayouts.map((value: DataLayout) => ({\n        value,\n        onClick: () => changeLayout(value),\n        label: t(`dataview.layout.${value}`),\n      })),\n    [availableLayouts, changeLayout, t],\n  );\n\n  return (\n    <MenuButton\n      ariaLabel={t(\"dataview.layout.arialabel\")}\n      buttonLabel={t(`dataview.layout.${currentLayout}`)}\n      menuAlignment=\"right\"\n      shouldCloseOnSelect={false}\n    >\n      {memoizedMenuItems.map(({ value, onClick, label }) => (\n        <MenuItem\n          isSelected={currentLayout === value}\n          key={value}\n          onClick={onClick}\n        >\n          {label}\n        </MenuItem>\n      ))}\n    </MenuButton>\n  );\n};\n\nconst MemoizedLayoutSwitcher = memo(LayoutSwitcher);\nMemoizedLayoutSwitcher.displayName = \"LayoutSwitcher\";\n\nexport { MemoizedLayoutSwitcher as LayoutSwitcher };\n"],"mappings":";;;;;;AAYA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAA8D,IAAAI,WAAA,GAAAJ,OAAA;AAhB9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAeA,MAAMK,cAAc,GAAGA,CAAC;EACtBC,gBAAgB;EAChBC,aAAa;EACbC;AACmB,CAAC,KAAK;EACzB,MAAM;IAAEC;EAAE,CAAC,GAAG,IAAAC,oBAAc,EAAC,CAAC;EAE9B,MAAMC,YAAY,GAAG,IAAAC,kBAAW,EAC7BC,KAAiB,IAAK;IACrBL,gBAAgB,CAACK,KAAK,CAAC;EACzB,CAAC,EACD,CAACL,gBAAgB,CACnB,CAAC;EAED,MAAMM,iBAAiB,GAAG,IAAAC,cAAO,EAC/B,MACET,gBAAgB,CAACU,GAAG,CAAEH,KAAiB,KAAM;IAC3CA,KAAK;IACLI,OAAO,EAAEA,CAAA,KAAMN,YAAY,CAACE,KAAK,CAAC;IAClCK,KAAK,EAAET,CAAC,CAAC,mBAAmBI,KAAK,EAAE;EACrC,CAAC,CAAC,CAAC,EACL,CAACP,gBAAgB,EAAEK,YAAY,EAAEF,CAAC,CACpC,CAAC;EAED,OACE,IAAAL,WAAA,CAAAe,GAAA,EAAClB,WAAA,CAAAmB,UAAU;IACTC,SAAS,EAAEZ,CAAC,CAAC,2BAA2B,CAAE;IAC1Ca,WAAW,EAAEb,CAAC,CAAC,mBAAmBF,aAAa,EAAE,CAAE;IACnDgB,aAAa,EAAC,OAAO;IACrBC,mBAAmB,EAAE,KAAM;IAAAC,QAAA,EAE1BX,iBAAiB,CAACE,GAAG,CAAC,CAAC;MAAEH,KAAK;MAAEI,OAAO;MAAEC;IAAM,CAAC,KAC/C,IAAAd,WAAA,CAAAe,GAAA,EAACjB,SAAA,CAAAwB,QAAQ;MACPC,UAAU,EAAEpB,aAAa,KAAKM,KAAM;MAEpCI,OAAO,EAAEA,OAAQ;MAAAQ,QAAA,EAEhBP;IAAK,GAHDL,KAIG,CACX;EAAC,CACQ,CAAC;AAEjB,CAAC;AAED,MAAMe,sBAAsB,GAAAC,OAAA,CAAAxB,cAAA,GAAG,IAAAyB,WAAI,EAACzB,cAAc,CAAC;AACnDuB,sBAAsB,CAACG,WAAW,gDAAmB","ignoreList":[]}