@converge-cloudops/gaia-ui 0.3.2 → 0.3.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/dist/api/createRemoteBaseQuery.d.ts +1 -1
- package/dist/api/createRemoteBaseQuery.d.ts.map +1 -1
- package/dist/index.cjs +14 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4008 -146
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/assets/cloud.png","../src/components/layouts/GaiaHeader/GaiaHeader.tsx","../src/components/links/NavbarLinksGroup/NavbarLinksGroup.tsx","../src/components/layouts/GaiaNavbar/GaiaNavbar.tsx","../src/components/layouts/SubHeader/SubHeader.tsx","../src/components/layouts/GaiaShellLayout/GaiaShellLayout.tsx","../src/context/GaiaShellContext.ts","../src/context/GaiaShellProvider.tsx"],"sourcesContent":["export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAADlsAAAW5CAYAAABH9EexAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAALiMAAC4jAXilP3YAAP+lSURBVHhe7N3rVZt39vfhve8GYCowU4FJBSYV2FOBmQqGVBBSwZAKTCoYUoHlCkIqCO7ANHB/nxd/MQ/zy8EnBLek61rLK157O4cXsiIjPtpVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOFr/H1OT4ez948+FAAAAAElFTkSuQmCC\"","import cloudLogo from \"../../../assets/cloud.png\";\nimport { Box, Button, Group, Image, Menu, Title } from \"@mantine/core\";\nimport { IconChevronDown } from \"@tabler/icons-react\";\nimport { useNavigate } from \"react-router\";\n\nexport interface GaiaHeaderMenuItem {\n label: string;\n path: string;\n}\n\nexport interface GaiaHeaderMenuGroup {\n label: string;\n items: GaiaHeaderMenuItem[];\n}\n\nexport interface GaiaHeaderProps {\n /** Path to the logo image. Defaults to \"/Cloud.png\" */\n logoSrc?: string;\n /** Alt text for the logo */\n logoAlt?: string;\n /** Title displayed in the center of the header */\n title?: string;\n /** Menu groups rendered in the left nav area of the header */\n menuGroups?: GaiaHeaderMenuGroup[];\n /** Slot for extra content on the right side (e.g. user avatar, notifications) */\n rightSection?: React.ReactNode;\n /** Slot to inject a burger button (passed in from ShellLayout) */\n burgerSlot?: React.ReactNode;\n}\n\nexport function GaiaHeader({\n logoSrc = cloudLogo,\n logoAlt = \"Logo\",\n title = \"GAIA\",\n menuGroups = [],\n rightSection,\n burgerSlot,\n}: GaiaHeaderProps) {\n const navigate = useNavigate();\n return (\n <Box\n h=\"inherit\"\n bg=\"black\"\n px=\"md\"\n c=\"white\"\n style={{ border: \"1px solid var(--mantine-color-dark-4)\" }}\n >\n <Group h=\"inherit\" align=\"center\" justify=\"space-between\" wrap=\"nowrap\">\n <Group gap=\"xs\">\n {burgerSlot}\n <Image\n src={logoSrc}\n alt={logoAlt}\n mah=\"100%\"\n maw={120}\n fit=\"contain\"\n />\n\n {menuGroups.map((group) => (\n <Menu\n key={group.label}\n shadow=\"md\"\n width={200}\n position=\"bottom-start\"\n >\n <Menu.Target>\n <Button\n color=\"white\"\n variant=\"transparent\"\n rightSection={<IconChevronDown size={18} stroke={1.5} />}\n >\n {group.label}\n </Button>\n </Menu.Target>\n <Menu.Dropdown>\n {group.items.map((item) => (\n <Menu.Item\n key={item.label}\n onClick={() => navigate(item.path)}\n >\n {item.label}\n </Menu.Item>\n ))}\n </Menu.Dropdown>\n </Menu>\n ))}\n </Group>\n\n <Title order={4}>{title}</Title>\n\n {rightSection && <Box>{rightSection}</Box>}\n </Group>\n </Box>\n );\n}\n","import { useState } from \"react\";\r\nimport { Box, Collapse, Group, Text, UnstyledButton } from \"@mantine/core\";\r\nimport { Link } from \"react-router\";\r\nimport { IconChevronRight, type Icon } from \"@tabler/icons-react\";\r\n\r\nimport classes from \"./NavbarLinksGroup.module.css\";\r\n\r\nexport interface NavbarLinksGroupItem {\r\n label: string;\r\n link: string;\r\n}\r\n\r\nexport interface NavbarLinksGroupProps {\r\n icon: Icon;\r\n label: string;\r\n link?: string;\r\n initiallyOpened?: boolean;\r\n links?: NavbarLinksGroupItem[];\r\n currentPath: string;\r\n}\r\n\r\nexport function NavbarLinksGroup({\r\n icon: Icon,\r\n label,\r\n link,\r\n initiallyOpened,\r\n links,\r\n currentPath,\r\n}: NavbarLinksGroupProps) {\r\n const hasLinks = Array.isArray(links) && links.length > 0;\r\n const [opened, setOpened] = useState(initiallyOpened ?? false);\r\n\r\n if (!hasLinks && link) {\r\n return (\r\n <Text\r\n component={Link}\r\n to={link}\r\n className={classes[\"simple-link\"]}\r\n data-active={link === currentPath || undefined}\r\n >\r\n <Group gap=\"md\">\r\n <Group w={30} h={30} align=\"center\" justify=\"center\">\r\n <Icon size={18} />\r\n </Group>\r\n <Box>{label}</Box>\r\n </Group>\r\n </Text>\r\n );\r\n }\r\n\r\n const items = links!.map((item) => (\r\n <Text\r\n component={Link}\r\n to={item.link}\r\n key={item.label}\r\n className={classes[\"collapsible-link\"]}\r\n data-active={item.link === currentPath || undefined}\r\n >\r\n {item.label}\r\n </Text>\r\n ));\r\n\r\n return (\r\n <>\r\n <UnstyledButton\r\n onClick={() => setOpened((o) => !o)}\r\n className={classes.control}\r\n >\r\n <Group justify=\"space-between\" gap={0}>\r\n <Group align=\"center\" gap=\"md\">\r\n <Group w={30} h={30} align=\"center\" justify=\"center\">\r\n <Icon size={18} />\r\n </Group>\r\n <Box>{label}</Box>\r\n </Group>\r\n {hasLinks && (\r\n <IconChevronRight\r\n className={classes.chevron}\r\n stroke={1.5}\r\n size={16}\r\n style={{ transform: opened ? \"rotate(-90deg)\" : \"none\" }}\r\n />\r\n )}\r\n </Group>\r\n </UnstyledButton>\r\n {hasLinks && <Collapse in={opened}>{items}</Collapse>}\r\n </>\r\n );\r\n}\r\n","import { Box, ScrollArea, Title } from \"@mantine/core\";\nimport { type Icon } from \"@tabler/icons-react\";\nimport { useLocation } from \"react-router\";\nimport { NavbarLinksGroup } from \"../../links/NavbarLinksGroup\";\n\nexport interface GaiaNavbarLink {\n icon: Icon;\n label: string;\n link?: string;\n initiallyOpened?: boolean;\n links?: { label: string; link: string }[];\n}\n\nexport interface GaiaNavbarSection {\n title: string;\n links: GaiaNavbarLink[];\n}\n\nexport interface GaiaNavbarProps {\n /** All nav sections — the correct one is resolved from the current pathname */\n sections: GaiaNavbarSection[];\n /**\n * Given the current pathname, return the title of the section to display.\n *\n * @example\n * resolveSection={(pathname) => {\n * if (pathname.includes(\"/infrastructure\")) return \"Infrastructure\";\n * return \"Dashboard\";\n * }}\n */\n resolveSection: (pathname: string) => string;\n}\n\nexport function GaiaNavbar({ sections, resolveSection }: GaiaNavbarProps) {\n const { pathname } = useLocation();\n const section = sections.find((s) => s.title === resolveSection(pathname));\n\n if (!section) return null;\n\n return (\n <Box\n bg=\"black\"\n c=\"white\"\n h=\"100%\"\n display=\"flex\"\n style={{ flexDirection: \"column\" }}\n >\n <Box\n p=\"sm\"\n style={{ borderBottom: \"1px solid var(--mantine-color-dark-4)\" }}\n >\n <Title order={4}>{section.title}</Title>\n </Box>\n\n <ScrollArea flex={1}>\n <Box>\n {section.links.map((link) => (\n <NavbarLinksGroup\n key={link.label}\n {...link}\n currentPath={pathname}\n />\n ))}\n </Box>\n </ScrollArea>\n </Box>\n );\n}\n","import { Group, Title } from \"@mantine/core\";\r\n\r\nexport interface SubHeaderProps {\r\n title: string;\r\n content?: React.ReactNode;\r\n}\r\n\r\nexport function SubHeader({ title, content }: SubHeaderProps) {\r\n return (\r\n <Group bg=\"white\" px=\"md\" justify=\"space-between\" align=\"center\" h={50}>\r\n <Title order={5}>{title}</Title>\r\n <Group>{content}</Group>\r\n </Group>\r\n );\r\n}\r\n","import { AppShell, Burger, Container } from \"@mantine/core\";\nimport { useDisclosure } from \"@mantine/hooks\";\nimport { useLocation } from \"react-router\";\nimport { GaiaHeader, type GaiaHeaderProps } from \"../GaiaHeader\";\nimport {\n GaiaNavbar,\n type GaiaNavbarProps,\n type GaiaNavbarSection,\n} from \"../GaiaNavbar\";\nimport { SubHeader, type SubHeaderProps } from \"../SubHeader\";\n\nfunction resolveSubHeaderTitle(\n pathname: string,\n sections: GaiaNavbarSection[],\n resolveSection: (pathname: string) => string,\n): string {\n const sectionTitle = resolveSection(pathname);\n const section = sections.find((s) => s.title === sectionTitle);\n if (!section) return sectionTitle;\n\n for (const link of section.links) {\n if (link.link && pathname.includes(link.link)) return link.label;\n if (link.links) {\n for (const child of link.links) {\n if (pathname.includes(child.link)) return child.label;\n }\n }\n }\n\n return sectionTitle;\n}\n\nexport interface GaiaShellLayoutProps {\n /** Props forwarded to GaiaHeader */\n headerProps: Omit<GaiaHeaderProps, \"burgerSlot\">;\n /** Props forwarded to GaiaNavbar */\n navbarProps: GaiaNavbarProps;\n /**\n * When provided, renders a SubHeader bar above the main content.\n * Title is automatically resolved from the current pathname — you\n * only need to pass `content` for extra controls on the right side.\n */\n subHeaderProps?: Omit<SubHeaderProps, \"title\"> & { title?: string };\n /** Header height in px. Defaults to 50 */\n headerHeight?: number;\n /** Navbar width in px. Defaults to 240 */\n navbarWidth?: number;\n /** Breakpoint at which the navbar collapses. Defaults to \"sm\" */\n navbarBreakpoint?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n /** Main content */\n children: React.ReactNode;\n}\n\nexport function GaiaShellLayout({\n headerProps,\n navbarProps,\n subHeaderProps,\n headerHeight = 50,\n navbarWidth = 240,\n navbarBreakpoint = \"sm\",\n children,\n}: GaiaShellLayoutProps) {\n const [opened, { toggle }] = useDisclosure(false);\n const { pathname } = useLocation();\n\n const burger = (\n <Burger\n opened={opened}\n onClick={toggle}\n color=\"white\"\n size=\"sm\"\n hiddenFrom={navbarBreakpoint}\n />\n );\n\n const subHeaderTitle =\n subHeaderProps?.title ??\n resolveSubHeaderTitle(\n pathname,\n navbarProps.sections,\n navbarProps.resolveSection,\n );\n\n return (\n <AppShell\n header={{ height: headerHeight }}\n navbar={{\n width: navbarWidth,\n breakpoint: navbarBreakpoint,\n collapsed: { mobile: !opened },\n }}\n withBorder={false}\n padding={0}\n >\n <AppShell.Header>\n <GaiaHeader {...headerProps} burgerSlot={burger} />\n </AppShell.Header>\n\n <AppShell.Navbar>\n <GaiaNavbar {...navbarProps} />\n </AppShell.Navbar>\n\n <AppShell.Main bg=\"#f0f0f0\">\n {subHeaderProps !== undefined && (\n <SubHeader {...subHeaderProps} title={subHeaderTitle} />\n )}\n <Container fluid p=\"md\" h=\"inherit\">\n {children}\n </Container>\n </AppShell.Main>\n </AppShell>\n );\n}\n","import { createContext, useContext } from \"react\";\r\n\r\nexport interface GaiaRemoteConfigs {\r\n tropos?: { baseUrl: string };\r\n pleco?: { baseUrl: string };\r\n // Add more systems here\r\n}\r\n\r\ntype Department = {\r\n code: string;\r\n name: string;\r\n};\r\n\r\nexport interface GaiaShellUser {\r\n id: string;\r\n username: string;\r\n email: string;\r\n is_superuser: boolean;\r\n permissions: string[];\r\n}\r\n\r\nexport interface GaiaShellContextValue {\r\n user: GaiaShellUser | null;\r\n remotes: GaiaRemoteConfigs;\r\n}\r\n\r\nconst GaiaShellContext = createContext<GaiaShellContextValue>({\r\n user: null,\r\n remotes: {},\r\n});\r\n\r\nexport const useGaiaShellContext = () => useContext(GaiaShellContext);\r\n\r\nexport const useGaiaRemoteConfig = <K extends keyof GaiaRemoteConfigs>(\r\n remote: K\r\n): GaiaRemoteConfigs[K] => {\r\n return useContext(GaiaShellContext).remotes[remote];\r\n};\r\n\r\nexport { GaiaShellContext };","import {\r\n GaiaShellContext,\r\n type GaiaShellContextValue,\r\n} from \"./GaiaShellContext\";\r\n\r\ninterface Props {\r\n value: GaiaShellContextValue;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function GaiaShellProvider({ value, children }: Props) {\r\n return (\r\n <GaiaShellContext.Provider value={value}>\r\n {children}\r\n </GaiaShellContext.Provider>\r\n );\r\n}\r\n"],"names":["cloudLogo","GaiaHeader","logoSrc","logoAlt","title","menuGroups","rightSection","burgerSlot","navigate","useNavigate","jsx","Box","jsxs","Group","Image","group","Menu","Button","IconChevronDown","item","Title","NavbarLinksGroup","Icon","label","link","initiallyOpened","links","currentPath","hasLinks","opened","setOpened","useState","Text","Link","classes","items","Fragment","UnstyledButton","o","IconChevronRight","Collapse","GaiaNavbar","sections","resolveSection","pathname","useLocation","section","s","ScrollArea","SubHeader","content","resolveSubHeaderTitle","sectionTitle","child","GaiaShellLayout","headerProps","navbarProps","subHeaderProps","headerHeight","navbarWidth","navbarBreakpoint","children","toggle","useDisclosure","burger","Burger","subHeaderTitle","AppShell","Container","GaiaShellContext","createContext","useGaiaShellContext","useContext","useGaiaRemoteConfig","remote","GaiaShellProvider","value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/assets/cloud.png","../src/components/layouts/GaiaHeader/GaiaHeader.tsx","../src/components/links/NavbarLinksGroup/NavbarLinksGroup.tsx","../src/components/layouts/GaiaNavbar/GaiaNavbar.tsx","../src/components/layouts/SubHeader/SubHeader.tsx","../src/components/layouts/GaiaShellLayout/GaiaShellLayout.tsx","../src/context/GaiaShellContext.ts","../src/context/GaiaShellProvider.tsx","../node_modules/redux/dist/redux.mjs","../node_modules/immer/dist/immer.mjs","../node_modules/reselect/dist/reselect.mjs","../node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs","../node_modules/@standard-schema/utils/dist/index.js","../node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.mjs","../src/api/createRemoteBaseQuery.ts","../src/api/createRemoteConfigProvider.tsx"],"sourcesContent":["export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAADlsAAAW5CAYAAABH9EexAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAALiMAAC4jAXilP3YAAP+lSURBVHhe7N3rVZt39vfhve8GYCowU4FJBSYV2FOBmQqGVBBSwZAKTCoYUoHlCkIqCO7ANHB/nxd/MQ/zy8EnBLek61rLK157O4cXsiIjPtpVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOFr/H1OT4ez948+FAAAAAElFTkSuQmCC\"","import cloudLogo from \"../../../assets/cloud.png\";\nimport { Box, Button, Group, Image, Menu, Title } from \"@mantine/core\";\nimport { IconChevronDown } from \"@tabler/icons-react\";\nimport { useNavigate } from \"react-router\";\n\nexport interface GaiaHeaderMenuItem {\n label: string;\n path: string;\n}\n\nexport interface GaiaHeaderMenuGroup {\n label: string;\n items: GaiaHeaderMenuItem[];\n}\n\nexport interface GaiaHeaderProps {\n /** Path to the logo image. Defaults to \"/Cloud.png\" */\n logoSrc?: string;\n /** Alt text for the logo */\n logoAlt?: string;\n /** Title displayed in the center of the header */\n title?: string;\n /** Menu groups rendered in the left nav area of the header */\n menuGroups?: GaiaHeaderMenuGroup[];\n /** Slot for extra content on the right side (e.g. user avatar, notifications) */\n rightSection?: React.ReactNode;\n /** Slot to inject a burger button (passed in from ShellLayout) */\n burgerSlot?: React.ReactNode;\n}\n\nexport function GaiaHeader({\n logoSrc = cloudLogo,\n logoAlt = \"Logo\",\n title = \"GAIA\",\n menuGroups = [],\n rightSection,\n burgerSlot,\n}: GaiaHeaderProps) {\n const navigate = useNavigate();\n return (\n <Box\n h=\"inherit\"\n bg=\"black\"\n px=\"md\"\n c=\"white\"\n style={{ border: \"1px solid var(--mantine-color-dark-4)\" }}\n >\n <Group h=\"inherit\" align=\"center\" justify=\"space-between\" wrap=\"nowrap\">\n <Group gap=\"xs\">\n {burgerSlot}\n <Image\n src={logoSrc}\n alt={logoAlt}\n mah=\"100%\"\n maw={120}\n fit=\"contain\"\n />\n\n {menuGroups.map((group) => (\n <Menu\n key={group.label}\n shadow=\"md\"\n width={200}\n position=\"bottom-start\"\n >\n <Menu.Target>\n <Button\n color=\"white\"\n variant=\"transparent\"\n rightSection={<IconChevronDown size={18} stroke={1.5} />}\n >\n {group.label}\n </Button>\n </Menu.Target>\n <Menu.Dropdown>\n {group.items.map((item) => (\n <Menu.Item\n key={item.label}\n onClick={() => navigate(item.path)}\n >\n {item.label}\n </Menu.Item>\n ))}\n </Menu.Dropdown>\n </Menu>\n ))}\n </Group>\n\n <Title order={4}>{title}</Title>\n\n {rightSection && <Box>{rightSection}</Box>}\n </Group>\n </Box>\n );\n}\n","import { useState } from \"react\";\r\nimport { Box, Collapse, Group, Text, UnstyledButton } from \"@mantine/core\";\r\nimport { Link } from \"react-router\";\r\nimport { IconChevronRight, type Icon } from \"@tabler/icons-react\";\r\n\r\nimport classes from \"./NavbarLinksGroup.module.css\";\r\n\r\nexport interface NavbarLinksGroupItem {\r\n label: string;\r\n link: string;\r\n}\r\n\r\nexport interface NavbarLinksGroupProps {\r\n icon: Icon;\r\n label: string;\r\n link?: string;\r\n initiallyOpened?: boolean;\r\n links?: NavbarLinksGroupItem[];\r\n currentPath: string;\r\n}\r\n\r\nexport function NavbarLinksGroup({\r\n icon: Icon,\r\n label,\r\n link,\r\n initiallyOpened,\r\n links,\r\n currentPath,\r\n}: NavbarLinksGroupProps) {\r\n const hasLinks = Array.isArray(links) && links.length > 0;\r\n const [opened, setOpened] = useState(initiallyOpened ?? false);\r\n\r\n if (!hasLinks && link) {\r\n return (\r\n <Text\r\n component={Link}\r\n to={link}\r\n className={classes[\"simple-link\"]}\r\n data-active={link === currentPath || undefined}\r\n >\r\n <Group gap=\"md\">\r\n <Group w={30} h={30} align=\"center\" justify=\"center\">\r\n <Icon size={18} />\r\n </Group>\r\n <Box>{label}</Box>\r\n </Group>\r\n </Text>\r\n );\r\n }\r\n\r\n const items = links!.map((item) => (\r\n <Text\r\n component={Link}\r\n to={item.link}\r\n key={item.label}\r\n className={classes[\"collapsible-link\"]}\r\n data-active={item.link === currentPath || undefined}\r\n >\r\n {item.label}\r\n </Text>\r\n ));\r\n\r\n return (\r\n <>\r\n <UnstyledButton\r\n onClick={() => setOpened((o) => !o)}\r\n className={classes.control}\r\n >\r\n <Group justify=\"space-between\" gap={0}>\r\n <Group align=\"center\" gap=\"md\">\r\n <Group w={30} h={30} align=\"center\" justify=\"center\">\r\n <Icon size={18} />\r\n </Group>\r\n <Box>{label}</Box>\r\n </Group>\r\n {hasLinks && (\r\n <IconChevronRight\r\n className={classes.chevron}\r\n stroke={1.5}\r\n size={16}\r\n style={{ transform: opened ? \"rotate(-90deg)\" : \"none\" }}\r\n />\r\n )}\r\n </Group>\r\n </UnstyledButton>\r\n {hasLinks && <Collapse in={opened}>{items}</Collapse>}\r\n </>\r\n );\r\n}\r\n","import { Box, ScrollArea, Title } from \"@mantine/core\";\nimport { type Icon } from \"@tabler/icons-react\";\nimport { useLocation } from \"react-router\";\nimport { NavbarLinksGroup } from \"../../links/NavbarLinksGroup\";\n\nexport interface GaiaNavbarLink {\n icon: Icon;\n label: string;\n link?: string;\n initiallyOpened?: boolean;\n links?: { label: string; link: string }[];\n}\n\nexport interface GaiaNavbarSection {\n title: string;\n links: GaiaNavbarLink[];\n}\n\nexport interface GaiaNavbarProps {\n /** All nav sections — the correct one is resolved from the current pathname */\n sections: GaiaNavbarSection[];\n /**\n * Given the current pathname, return the title of the section to display.\n *\n * @example\n * resolveSection={(pathname) => {\n * if (pathname.includes(\"/infrastructure\")) return \"Infrastructure\";\n * return \"Dashboard\";\n * }}\n */\n resolveSection: (pathname: string) => string;\n}\n\nexport function GaiaNavbar({ sections, resolveSection }: GaiaNavbarProps) {\n const { pathname } = useLocation();\n const section = sections.find((s) => s.title === resolveSection(pathname));\n\n if (!section) return null;\n\n return (\n <Box\n bg=\"black\"\n c=\"white\"\n h=\"100%\"\n display=\"flex\"\n style={{ flexDirection: \"column\" }}\n >\n <Box\n p=\"sm\"\n style={{ borderBottom: \"1px solid var(--mantine-color-dark-4)\" }}\n >\n <Title order={4}>{section.title}</Title>\n </Box>\n\n <ScrollArea flex={1}>\n <Box>\n {section.links.map((link) => (\n <NavbarLinksGroup\n key={link.label}\n {...link}\n currentPath={pathname}\n />\n ))}\n </Box>\n </ScrollArea>\n </Box>\n );\n}\n","import { Group, Title } from \"@mantine/core\";\r\n\r\nexport interface SubHeaderProps {\r\n title: string;\r\n content?: React.ReactNode;\r\n}\r\n\r\nexport function SubHeader({ title, content }: SubHeaderProps) {\r\n return (\r\n <Group bg=\"white\" px=\"md\" justify=\"space-between\" align=\"center\" h={50}>\r\n <Title order={5}>{title}</Title>\r\n <Group>{content}</Group>\r\n </Group>\r\n );\r\n}\r\n","import { AppShell, Burger, Container } from \"@mantine/core\";\nimport { useDisclosure } from \"@mantine/hooks\";\nimport { useLocation } from \"react-router\";\nimport { GaiaHeader, type GaiaHeaderProps } from \"../GaiaHeader\";\nimport {\n GaiaNavbar,\n type GaiaNavbarProps,\n type GaiaNavbarSection,\n} from \"../GaiaNavbar\";\nimport { SubHeader, type SubHeaderProps } from \"../SubHeader\";\n\nfunction resolveSubHeaderTitle(\n pathname: string,\n sections: GaiaNavbarSection[],\n resolveSection: (pathname: string) => string,\n): string {\n const sectionTitle = resolveSection(pathname);\n const section = sections.find((s) => s.title === sectionTitle);\n if (!section) return sectionTitle;\n\n for (const link of section.links) {\n if (link.link && pathname.includes(link.link)) return link.label;\n if (link.links) {\n for (const child of link.links) {\n if (pathname.includes(child.link)) return child.label;\n }\n }\n }\n\n return sectionTitle;\n}\n\nexport interface GaiaShellLayoutProps {\n /** Props forwarded to GaiaHeader */\n headerProps: Omit<GaiaHeaderProps, \"burgerSlot\">;\n /** Props forwarded to GaiaNavbar */\n navbarProps: GaiaNavbarProps;\n /**\n * When provided, renders a SubHeader bar above the main content.\n * Title is automatically resolved from the current pathname — you\n * only need to pass `content` for extra controls on the right side.\n */\n subHeaderProps?: Omit<SubHeaderProps, \"title\"> & { title?: string };\n /** Header height in px. Defaults to 50 */\n headerHeight?: number;\n /** Navbar width in px. Defaults to 240 */\n navbarWidth?: number;\n /** Breakpoint at which the navbar collapses. Defaults to \"sm\" */\n navbarBreakpoint?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n /** Main content */\n children: React.ReactNode;\n}\n\nexport function GaiaShellLayout({\n headerProps,\n navbarProps,\n subHeaderProps,\n headerHeight = 50,\n navbarWidth = 240,\n navbarBreakpoint = \"sm\",\n children,\n}: GaiaShellLayoutProps) {\n const [opened, { toggle }] = useDisclosure(false);\n const { pathname } = useLocation();\n\n const burger = (\n <Burger\n opened={opened}\n onClick={toggle}\n color=\"white\"\n size=\"sm\"\n hiddenFrom={navbarBreakpoint}\n />\n );\n\n const subHeaderTitle =\n subHeaderProps?.title ??\n resolveSubHeaderTitle(\n pathname,\n navbarProps.sections,\n navbarProps.resolveSection,\n );\n\n return (\n <AppShell\n header={{ height: headerHeight }}\n navbar={{\n width: navbarWidth,\n breakpoint: navbarBreakpoint,\n collapsed: { mobile: !opened },\n }}\n withBorder={false}\n padding={0}\n >\n <AppShell.Header>\n <GaiaHeader {...headerProps} burgerSlot={burger} />\n </AppShell.Header>\n\n <AppShell.Navbar>\n <GaiaNavbar {...navbarProps} />\n </AppShell.Navbar>\n\n <AppShell.Main bg=\"#f0f0f0\">\n {subHeaderProps !== undefined && (\n <SubHeader {...subHeaderProps} title={subHeaderTitle} />\n )}\n <Container fluid p=\"md\" h=\"inherit\">\n {children}\n </Container>\n </AppShell.Main>\n </AppShell>\n );\n}\n","import { createContext, useContext } from \"react\";\r\n\r\nexport interface GaiaRemoteConfigs {\r\n tropos?: { baseUrl: string };\r\n pleco?: { baseUrl: string };\r\n // Add more systems here\r\n}\r\n\r\ntype Department = {\r\n code: string;\r\n name: string;\r\n};\r\n\r\nexport interface GaiaShellUser {\r\n id: string;\r\n username: string;\r\n email: string;\r\n is_superuser: boolean;\r\n permissions: string[];\r\n}\r\n\r\nexport interface GaiaShellContextValue {\r\n user: GaiaShellUser | null;\r\n remotes: GaiaRemoteConfigs;\r\n}\r\n\r\nconst GaiaShellContext = createContext<GaiaShellContextValue>({\r\n user: null,\r\n remotes: {},\r\n});\r\n\r\nexport const useGaiaShellContext = () => useContext(GaiaShellContext);\r\n\r\nexport const useGaiaRemoteConfig = <K extends keyof GaiaRemoteConfigs>(\r\n remote: K\r\n): GaiaRemoteConfigs[K] => {\r\n return useContext(GaiaShellContext).remotes[remote];\r\n};\r\n\r\nexport { GaiaShellContext };","import {\r\n GaiaShellContext,\r\n type GaiaShellContextValue,\r\n} from \"./GaiaShellContext\";\r\n\r\ninterface Props {\r\n value: GaiaShellContextValue;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function GaiaShellProvider({ value, children }: Props) {\r\n return (\r\n <GaiaShellContext.Provider value={value}>\r\n {children}\r\n </GaiaShellContext.Provider>\r\n );\r\n}\r\n","// src/utils/formatProdErrorMessage.ts\nfunction formatProdErrorMessage(code) {\n return `Minified Redux error #${code}; visit https://redux.js.org/Errors?code=${code} for the full message or use the non-minified dev environment for full errors. `;\n}\n\n// src/utils/symbol-observable.ts\nvar $$observable = /* @__PURE__ */ (() => typeof Symbol === \"function\" && Symbol.observable || \"@@observable\")();\nvar symbol_observable_default = $$observable;\n\n// src/utils/actionTypes.ts\nvar randomString = () => Math.random().toString(36).substring(7).split(\"\").join(\".\");\nvar ActionTypes = {\n INIT: `@@redux/INIT${/* @__PURE__ */ randomString()}`,\n REPLACE: `@@redux/REPLACE${/* @__PURE__ */ randomString()}`,\n PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`\n};\nvar actionTypes_default = ActionTypes;\n\n// src/utils/isPlainObject.ts\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" || obj === null)\n return false;\n let proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;\n}\n\n// src/utils/kindOf.ts\nfunction miniKindOf(val) {\n if (val === void 0)\n return \"undefined\";\n if (val === null)\n return \"null\";\n const type = typeof val;\n switch (type) {\n case \"boolean\":\n case \"string\":\n case \"number\":\n case \"symbol\":\n case \"function\": {\n return type;\n }\n }\n if (Array.isArray(val))\n return \"array\";\n if (isDate(val))\n return \"date\";\n if (isError(val))\n return \"error\";\n const constructorName = ctorName(val);\n switch (constructorName) {\n case \"Symbol\":\n case \"Promise\":\n case \"WeakMap\":\n case \"WeakSet\":\n case \"Map\":\n case \"Set\":\n return constructorName;\n }\n return Object.prototype.toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, \"\");\n}\nfunction ctorName(val) {\n return typeof val.constructor === \"function\" ? val.constructor.name : null;\n}\nfunction isError(val) {\n return val instanceof Error || typeof val.message === \"string\" && val.constructor && typeof val.constructor.stackTraceLimit === \"number\";\n}\nfunction isDate(val) {\n if (val instanceof Date)\n return true;\n return typeof val.toDateString === \"function\" && typeof val.getDate === \"function\" && typeof val.setDate === \"function\";\n}\nfunction kindOf(val) {\n let typeOfVal = typeof val;\n if (process.env.NODE_ENV !== \"production\") {\n typeOfVal = miniKindOf(val);\n }\n return typeOfVal;\n}\n\n// src/createStore.ts\nfunction createStore(reducer, preloadedState, enhancer) {\n if (typeof reducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"function\" || typeof enhancer === \"function\" && typeof arguments[3] === \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : \"It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.\");\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"undefined\") {\n enhancer = preloadedState;\n preloadedState = void 0;\n }\n if (typeof enhancer !== \"undefined\") {\n if (typeof enhancer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);\n }\n return enhancer(createStore)(reducer, preloadedState);\n }\n let currentReducer = reducer;\n let currentState = preloadedState;\n let currentListeners = /* @__PURE__ */ new Map();\n let nextListeners = currentListeners;\n let listenerIdCounter = 0;\n let isDispatching = false;\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = /* @__PURE__ */ new Map();\n currentListeners.forEach((listener, key) => {\n nextListeners.set(key, listener);\n });\n }\n }\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : \"You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.\");\n }\n return currentState;\n }\n function subscribe(listener) {\n if (typeof listener !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : `Expected the listener to be a function. Instead, received: '${kindOf(listener)}'`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : \"You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n let isSubscribed = true;\n ensureCanMutateNextListeners();\n const listenerId = listenerIdCounter++;\n nextListeners.set(listenerId, listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : \"You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n isSubscribed = false;\n ensureCanMutateNextListeners();\n nextListeners.delete(listenerId);\n currentListeners = null;\n };\n }\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);\n }\n if (typeof action.type === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n if (typeof action.type !== \"string\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(17) : `Action \"type\" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : \"Reducers may not dispatch actions.\");\n }\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n const listeners = currentListeners = nextListeners;\n listeners.forEach((listener) => {\n listener();\n });\n return action;\n }\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);\n }\n currentReducer = nextReducer;\n dispatch({\n type: actionTypes_default.REPLACE\n });\n }\n function observable() {\n const outerSubscribe = subscribe;\n return {\n /**\n * The minimal observable subscription method.\n * @param observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe(observer) {\n if (typeof observer !== \"object\" || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);\n }\n function observeState() {\n const observerAsObserver = observer;\n if (observerAsObserver.next) {\n observerAsObserver.next(getState());\n }\n }\n observeState();\n const unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe\n };\n },\n [symbol_observable_default]() {\n return this;\n }\n };\n }\n dispatch({\n type: actionTypes_default.INIT\n });\n const store = {\n dispatch,\n subscribe,\n getState,\n replaceReducer,\n [symbol_observable_default]: observable\n };\n return store;\n}\nfunction legacy_createStore(reducer, preloadedState, enhancer) {\n return createStore(reducer, preloadedState, enhancer);\n}\n\n// src/utils/warning.ts\nfunction warning(message) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(message);\n }\n try {\n throw new Error(message);\n } catch (e) {\n }\n}\n\n// src/combineReducers.ts\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n const reducerKeys = Object.keys(reducers);\n const argumentName = action && action.type === actionTypes_default.INIT ? \"preloadedState argument passed to createStore\" : \"previous state received by the reducer\";\n if (reducerKeys.length === 0) {\n return \"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.\";\n }\n if (!isPlainObject(inputState)) {\n return `The ${argumentName} has unexpected type of \"${kindOf(inputState)}\". Expected argument to be an object with the following keys: \"${reducerKeys.join('\", \"')}\"`;\n }\n const unexpectedKeys = Object.keys(inputState).filter((key) => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);\n unexpectedKeys.forEach((key) => {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === actionTypes_default.REPLACE)\n return;\n if (unexpectedKeys.length > 0) {\n return `Unexpected ${unexpectedKeys.length > 1 ? \"keys\" : \"key\"} \"${unexpectedKeys.join('\", \"')}\" found in ${argumentName}. Expected to find one of the known reducer keys instead: \"${reducerKeys.join('\", \"')}\". Unexpected keys will be ignored.`;\n }\n}\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach((key) => {\n const reducer = reducers[key];\n const initialState = reducer(void 0, {\n type: actionTypes_default.INIT\n });\n if (typeof initialState === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : `The slice reducer for key \"${key}\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);\n }\n if (typeof reducer(void 0, {\n type: actionTypes_default.PROBE_UNKNOWN_ACTION()\n }) === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : `The slice reducer for key \"${key}\" returned undefined when probed with a random type. Don't try to handle '${actionTypes_default.INIT}' or other actions in \"redux/*\" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`);\n }\n });\n}\nfunction combineReducers(reducers) {\n const reducerKeys = Object.keys(reducers);\n const finalReducers = {};\n for (let i = 0; i < reducerKeys.length; i++) {\n const key = reducerKeys[i];\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof reducers[key] === \"undefined\") {\n warning(`No reducer provided for key \"${key}\"`);\n }\n }\n if (typeof reducers[key] === \"function\") {\n finalReducers[key] = reducers[key];\n }\n }\n const finalReducerKeys = Object.keys(finalReducers);\n let unexpectedKeyCache;\n if (process.env.NODE_ENV !== \"production\") {\n unexpectedKeyCache = {};\n }\n let shapeAssertionError;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n return function combination(state = {}, action) {\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n if (process.env.NODE_ENV !== \"production\") {\n const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n let hasChanged = false;\n const nextState = {};\n for (let i = 0; i < finalReducerKeys.length; i++) {\n const key = finalReducerKeys[i];\n const reducer = finalReducers[key];\n const previousStateForKey = state[key];\n const nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === \"undefined\") {\n const actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : `When called with an action of type ${actionType ? `\"${String(actionType)}\"` : \"(unknown type)\"}, the slice reducer for key \"${key}\" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`);\n }\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\n// src/bindActionCreators.ts\nfunction bindActionCreator(actionCreator, dispatch) {\n return function(...args) {\n return dispatch(actionCreator.apply(this, args));\n };\n}\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === \"function\") {\n return bindActionCreator(actionCreators, dispatch);\n }\n if (typeof actionCreators !== \"object\" || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : `bindActionCreators expected an object or a function, but instead received: '${kindOf(actionCreators)}'. Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?`);\n }\n const boundActionCreators = {};\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n if (typeof actionCreator === \"function\") {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\n\n// src/compose.ts\nfunction compose(...funcs) {\n if (funcs.length === 0) {\n return (arg) => arg;\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce((a, b) => (...args) => a(b(...args)));\n}\n\n// src/applyMiddleware.ts\nfunction applyMiddleware(...middlewares) {\n return (createStore2) => (reducer, preloadedState) => {\n const store = createStore2(reducer, preloadedState);\n let dispatch = () => {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : \"Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.\");\n };\n const middlewareAPI = {\n getState: store.getState,\n dispatch: (action, ...args) => dispatch(action, ...args)\n };\n const chain = middlewares.map((middleware) => middleware(middlewareAPI));\n dispatch = compose(...chain)(store.dispatch);\n return {\n ...store,\n dispatch\n };\n };\n}\n\n// src/utils/isAction.ts\nfunction isAction(action) {\n return isPlainObject(action) && \"type\" in action && typeof action.type === \"string\";\n}\nexport {\n actionTypes_default as __DO_NOT_USE__ActionTypes,\n applyMiddleware,\n bindActionCreators,\n combineReducers,\n compose,\n createStore,\n isAction,\n isPlainObject,\n legacy_createStore\n};\n//# sourceMappingURL=redux.mjs.map","// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = isFunction(e) ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar O = Object;\nvar getPrototypeOf = O.getPrototypeOf;\nvar CONSTRUCTOR = \"constructor\";\nvar PROTOTYPE = \"prototype\";\nvar CONFIGURABLE = \"configurable\";\nvar ENUMERABLE = \"enumerable\";\nvar WRITABLE = \"writable\";\nvar VALUE = \"value\";\nvar isDraft = (value) => !!value && !!value[DRAFT_STATE];\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || isArray(value) || !!value[DRAFTABLE] || !!value[CONSTRUCTOR]?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = O[PROTOTYPE][CONSTRUCTOR].toString();\nvar cachedCtorStrings = /* @__PURE__ */ new WeakMap();\nfunction isPlainObject(value) {\n if (!value || !isObjectish(value))\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null || proto === O[PROTOTYPE])\n return true;\n const Ctor = O.hasOwnProperty.call(proto, CONSTRUCTOR) && proto[CONSTRUCTOR];\n if (Ctor === Object)\n return true;\n if (!isFunction(Ctor))\n return false;\n let ctorString = cachedCtorStrings.get(Ctor);\n if (ctorString === void 0) {\n ctorString = Function.toString.call(Ctor);\n cachedCtorStrings.set(Ctor, ctorString);\n }\n return ctorString === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter, strict = true) {\n if (getArchtype(obj) === 0 /* Object */) {\n const keys = strict ? Reflect.ownKeys(obj) : O.keys(obj);\n keys.forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nvar has = (thing, prop, type = getArchtype(thing)) => type === 2 /* Map */ ? thing.has(prop) : O[PROTOTYPE].hasOwnProperty.call(thing, prop);\nvar get = (thing, prop, type = getArchtype(thing)) => (\n // @ts-ignore\n type === 2 /* Map */ ? thing.get(prop) : thing[prop]\n);\nvar set = (thing, propOrOldValue, value, type = getArchtype(thing)) => {\n if (type === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (type === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n};\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nvar isArray = Array.isArray;\nvar isMap = (target) => target instanceof Map;\nvar isSet = (target) => target instanceof Set;\nvar isObjectish = (target) => typeof target === \"object\";\nvar isFunction = (target) => typeof target === \"function\";\nvar isBoolean = (target) => typeof target === \"boolean\";\nfunction isArrayIndex(value) {\n const n = +value;\n return Number.isInteger(n) && String(n) === value;\n}\nvar getProxyDraft = (value) => {\n if (!isObjectish(value))\n return null;\n return value?.[DRAFT_STATE];\n};\nvar latest = (state) => state.copy_ || state.base_;\nvar getValue = (value) => {\n const proxyDraft = getProxyDraft(value);\n return proxyDraft ? proxyDraft.copy_ ?? proxyDraft.base_ : value;\n};\nvar getFinalValue = (state) => state.modified_ ? state.copy_ : state.base_;\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (isArray(base))\n return Array[PROTOTYPE].slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = O.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc[WRITABLE] === false) {\n desc[WRITABLE] = true;\n desc[CONFIGURABLE] = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n [CONFIGURABLE]: true,\n [WRITABLE]: true,\n // could live with !!desc.set as well here...\n [ENUMERABLE]: desc[ENUMERABLE],\n [VALUE]: base[key]\n };\n }\n return O.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = O.create(proto);\n return O.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n O.defineProperties(obj, {\n set: dontMutateMethodOverride,\n add: dontMutateMethodOverride,\n clear: dontMutateMethodOverride,\n delete: dontMutateMethodOverride\n });\n }\n O.freeze(obj);\n if (deep)\n each(\n obj,\n (_key, value) => {\n freeze(value, true);\n },\n false\n );\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nvar dontMutateMethodOverride = {\n [VALUE]: dontMutateFrozenCollections\n};\nfunction isFrozen(obj) {\n if (obj === null || !isObjectish(obj))\n return true;\n return O.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar PluginMapSet = \"MapSet\";\nvar PluginPatches = \"Patches\";\nvar PluginArrayMethods = \"ArrayMethods\";\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nvar isPluginLoaded = (pluginKey) => !!plugins[pluginKey];\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nvar getCurrentScope = () => currentScope;\nvar createScope = (parent_, immer_) => ({\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0,\n handledSet_: /* @__PURE__ */ new Set(),\n processedForPatches_: /* @__PURE__ */ new Set(),\n mapSetPlugin_: isPluginLoaded(PluginMapSet) ? getPlugin(PluginMapSet) : void 0,\n arrayMethodsPlugin_: isPluginLoaded(PluginArrayMethods) ? getPlugin(PluginArrayMethods) : void 0\n});\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n scope.patchPlugin_ = getPlugin(PluginPatches);\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nvar enterScope = (immer2) => currentScope = createScope(currentScope, immer2);\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n }\n const { patchPlugin_ } = scope;\n if (patchPlugin_) {\n patchPlugin_.generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope\n );\n }\n } else {\n result = finalize(scope, baseDraft);\n }\n maybeFreeze(scope, result, true);\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n const finalValue = handleValue(value, rootScope.handledSet_, rootScope);\n return finalValue;\n }\n if (!isSameScope(state, rootScope)) {\n return value;\n }\n if (!state.modified_) {\n return state.base_;\n }\n if (!state.finalized_) {\n const { callbacks_ } = state;\n if (callbacks_) {\n while (callbacks_.length > 0) {\n const callback = callbacks_.pop();\n callback(rootScope);\n }\n }\n generatePatchesAndFinalize(state, rootScope);\n }\n return state.copy_;\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\nfunction markStateFinalized(state) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n}\nvar isSameScope = (state, rootScope) => state.scope_ === rootScope;\nvar EMPTY_LOCATIONS_RESULT = [];\nfunction updateDraftInParent(parent, draftValue, finalizedValue, originalKey) {\n const parentCopy = latest(parent);\n const parentType = parent.type_;\n if (originalKey !== void 0) {\n const currentValue = get(parentCopy, originalKey, parentType);\n if (currentValue === draftValue) {\n set(parentCopy, originalKey, finalizedValue, parentType);\n return;\n }\n }\n if (!parent.draftLocations_) {\n const draftLocations = parent.draftLocations_ = /* @__PURE__ */ new Map();\n each(parentCopy, (key, value) => {\n if (isDraft(value)) {\n const keys = draftLocations.get(value) || [];\n keys.push(key);\n draftLocations.set(value, keys);\n }\n });\n }\n const locations = parent.draftLocations_.get(draftValue) ?? EMPTY_LOCATIONS_RESULT;\n for (const location of locations) {\n set(parentCopy, location, finalizedValue, parentType);\n }\n}\nfunction registerChildFinalizationCallback(parent, child, key) {\n parent.callbacks_.push(function childCleanup(rootScope) {\n const state = child;\n if (!state || !isSameScope(state, rootScope)) {\n return;\n }\n rootScope.mapSetPlugin_?.fixSetContents(state);\n const finalizedValue = getFinalValue(state);\n updateDraftInParent(parent, state.draft_ ?? state, finalizedValue, key);\n generatePatchesAndFinalize(state, rootScope);\n });\n}\nfunction generatePatchesAndFinalize(state, rootScope) {\n const shouldFinalize = state.modified_ && !state.finalized_ && (state.type_ === 3 /* Set */ || state.type_ === 1 /* Array */ && state.allIndicesReassigned_ || (state.assigned_?.size ?? 0) > 0);\n if (shouldFinalize) {\n const { patchPlugin_ } = rootScope;\n if (patchPlugin_) {\n const basePath = patchPlugin_.getPath(state);\n if (basePath) {\n patchPlugin_.generatePatches_(state, basePath, rootScope);\n }\n }\n markStateFinalized(state);\n }\n}\nfunction handleCrossReference(target, key, value) {\n const { scope_ } = target;\n if (isDraft(value)) {\n const state = value[DRAFT_STATE];\n if (isSameScope(state, scope_)) {\n state.callbacks_.push(function crossReferenceCleanup() {\n prepareCopy(target);\n const finalizedValue = getFinalValue(state);\n updateDraftInParent(target, value, finalizedValue, key);\n });\n }\n } else if (isDraftable(value)) {\n target.callbacks_.push(function nestedDraftCleanup() {\n const targetCopy = latest(target);\n if (target.type_ === 3 /* Set */) {\n if (targetCopy.has(value)) {\n handleValue(value, scope_.handledSet_, scope_);\n }\n } else {\n if (get(targetCopy, key, target.type_) === value) {\n if (scope_.drafts_.length > 1 && (target.assigned_.get(key) ?? false) === true && target.copy_) {\n handleValue(\n get(target.copy_, key, target.type_),\n scope_.handledSet_,\n scope_\n );\n }\n }\n }\n });\n }\n}\nfunction handleValue(target, handledSet, rootScope) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return target;\n }\n if (isDraft(target) || handledSet.has(target) || !isDraftable(target) || isFrozen(target)) {\n return target;\n }\n handledSet.add(target);\n each(target, (key, value) => {\n if (isDraft(value)) {\n const state = value[DRAFT_STATE];\n if (isSameScope(state, rootScope)) {\n const updatedValue = getFinalValue(state);\n set(target, key, updatedValue, target.type_);\n markStateFinalized(state);\n }\n } else if (isDraftable(value)) {\n handleValue(value, handledSet, rootScope);\n }\n });\n return target;\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const baseIsArray = isArray(base);\n const state = {\n type_: baseIsArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n // actually instantiated in `prepareCopy()`\n assigned_: void 0,\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false,\n // `callbacks` actually gets assigned in `createProxy`\n callbacks_: void 0\n };\n let target = state;\n let traps = objectTraps;\n if (baseIsArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return [proxy, state];\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n let arrayPlugin = state.scope_.arrayMethodsPlugin_;\n const isArrayWithStringProp = state.type_ === 1 /* Array */ && typeof prop === \"string\";\n if (isArrayWithStringProp) {\n if (arrayPlugin?.isArrayOperationMethod(prop)) {\n return arrayPlugin.createMethodInterceptor(state, prop);\n }\n }\n const source = latest(state);\n if (!has(source, prop, state.type_)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (isArrayWithStringProp && state.operationMethod && arrayPlugin?.isMutatingArrayMethod(\n state.operationMethod\n ) && isArrayIndex(prop)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n const childKey = state.type_ === 1 /* Array */ ? +prop : prop;\n const childDraft = createProxy(state.scope_, value, state, childKey);\n return state.copy_[childKey] = childDraft;\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_.set(prop, false);\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop, state.type_)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_.set(prop, true);\n handleCrossReference(state, prop, value);\n return true;\n },\n deleteProperty(state, prop) {\n prepareCopy(state);\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_.set(prop, false);\n markChanged(state);\n } else {\n state.assigned_.delete(prop);\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n [WRITABLE]: true,\n [CONFIGURABLE]: state.type_ !== 1 /* Array */ || prop !== \"length\",\n [ENUMERABLE]: desc[ENUMERABLE],\n [VALUE]: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\nfor (let key in objectTraps) {\n let fn = objectTraps[key];\n arrayTraps[key] = function() {\n const args = arguments;\n args[0] = args[0][0];\n return fn.apply(this, args);\n };\n}\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? VALUE in desc ? desc[VALUE] : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n this.useStrictIteration_ = false;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (isFunction(base) && !isFunction(recipe)) {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (!isFunction(recipe))\n die(6);\n if (patchListener !== void 0 && !isFunction(patchListener))\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(scope, base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || !isObjectish(base)) {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(PluginPatches).generateReplacementPatches_(base, result, {\n patches_: p,\n inversePatches_: ip\n });\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (isFunction(base)) {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (isBoolean(config?.autoFreeze))\n this.setAutoFreeze(config.autoFreeze);\n if (isBoolean(config?.useStrictShallowCopy))\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n if (isBoolean(config?.useStrictIteration))\n this.setUseStrictIteration(config.useStrictIteration);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(scope, base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n /**\n * Pass false to use faster iteration that skips non-enumerable properties\n * but still handles symbols for compatibility.\n *\n * By default, strict iteration is enabled (includes all own properties).\n */\n setUseStrictIteration(value) {\n this.useStrictIteration_ = value;\n }\n shouldUseStrictIteration() {\n return this.useStrictIteration_;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(PluginPatches).applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(rootScope, value, parent, key) {\n const [draft, state] = isMap(value) ? getPlugin(PluginMapSet).proxyMap_(value, parent) : isSet(value) ? getPlugin(PluginMapSet).proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent?.scope_ ?? getCurrentScope();\n scope.drafts_.push(draft);\n state.callbacks_ = parent?.callbacks_ ?? [];\n state.key_ = key;\n if (parent && key !== void 0) {\n registerChildFinalizationCallback(parent, state, key);\n } else {\n state.callbacks_.push(function rootDraftCleanup(rootScope2) {\n rootScope2.mapSetPlugin_?.fixSetContents(state);\n const { patchPlugin_ } = rootScope2;\n if (state.modified_ && patchPlugin_) {\n patchPlugin_.generatePatches_(state, [], rootScope2);\n }\n });\n }\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n let strict = true;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n strict = state.scope_.immer_.shouldUseStrictIteration();\n } else {\n copy = shallowCopy(value, true);\n }\n each(\n copy,\n (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n },\n strict\n );\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n function getPath(state, path = []) {\n if (state.key_ !== void 0) {\n const parentCopy = state.parent_.copy_ ?? state.parent_.base_;\n const proxyDraft = getProxyDraft(get(parentCopy, state.key_));\n const valueAtKey = get(parentCopy, state.key_);\n if (valueAtKey === void 0) {\n return null;\n }\n if (valueAtKey !== state.draft_ && valueAtKey !== state.base_ && valueAtKey !== state.copy_) {\n return null;\n }\n if (proxyDraft != null && proxyDraft.base_ !== state.base_) {\n return null;\n }\n const isSet2 = state.parent_.type_ === 3 /* Set */;\n let key;\n if (isSet2) {\n const setParent = state.parent_;\n key = Array.from(setParent.drafts_.keys()).indexOf(state.key_);\n } else {\n key = state.key_;\n }\n if (!(isSet2 && parentCopy.size > key || has(parentCopy, key))) {\n return null;\n }\n path.push(key);\n }\n if (state.parent_) {\n return getPath(state.parent_, path);\n }\n path.reverse();\n try {\n resolvePath(state.copy_, path);\n } catch (e) {\n return null;\n }\n return path;\n }\n function resolvePath(base, path) {\n let current2 = base;\n for (let i = 0; i < path.length - 1; i++) {\n const key = path[i];\n current2 = get(current2, key);\n if (!isObjectish(current2) || current2 === null) {\n throw new Error(`Cannot resolve path at '${path.join(\"/\")}'`);\n }\n }\n return current2;\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, scope) {\n if (state.scope_.processedForPatches_.has(state)) {\n return;\n }\n state.scope_.processedForPatches_.add(state);\n const { patches_, inversePatches_ } = scope;\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches_,\n inversePatches_\n );\n case 1 /* Array */:\n return generateArrayPatches(\n state,\n basePath,\n patches_,\n inversePatches_\n );\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches_,\n inversePatches_\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n const allReassigned = state.allIndicesReassigned_ === true;\n for (let i = 0; i < base_.length; i++) {\n const copiedItem = copy_[i];\n const baseItem = base_[i];\n const isAssigned = allReassigned || assigned_?.get(i.toString());\n if (isAssigned && copiedItem !== baseItem) {\n const childState = copiedItem?.[DRAFT_STATE];\n if (childState && childState.modified_) {\n continue;\n }\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copiedItem)\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(baseItem)\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_, type_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key, type_);\n const value = get(copy_, key, type_);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(\n op === REMOVE ? { op, path } : { op, path, value: clonePatchValueIfNeeded(value) }\n );\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, scope) {\n const { patches_, inversePatches_ } = scope;\n patches_.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches_.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === CONSTRUCTOR))\n die(errorOffset + 3);\n if (isFunction(base) && p === PROTOTYPE)\n die(errorOffset + 3);\n base = get(base, p);\n if (!isObjectish(base))\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(PluginPatches, {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_,\n getPath\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false,\n callbacks_: []\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n handleCrossReference(state, key, value);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(state.scope_, value, state, key);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n const map = new DraftMap(target, parent);\n return [map, map[DRAFT_STATE]];\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false,\n assigned_: void 0,\n callbacks_: []\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n handleCrossReference(state, value, value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n const set2 = new DraftSet(target, parent);\n return [set2, set2[DRAFT_STATE]];\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(state.scope_, value, state, value);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n function fixSetContents(target) {\n if (target.type_ === 3 /* Set */ && target.copy_) {\n const copy = new Set(target.copy_);\n target.copy_.clear();\n copy.forEach((value) => {\n target.copy_.add(getValue(value));\n });\n }\n }\n loadPlugin(PluginMapSet, { proxyMap_, proxySet_, fixSetContents });\n}\n\n// src/plugins/arrayMethods.ts\nfunction enableArrayMethods() {\n const SHIFTING_METHODS = /* @__PURE__ */ new Set([\"shift\", \"unshift\"]);\n const QUEUE_METHODS = /* @__PURE__ */ new Set([\"push\", \"pop\"]);\n const RESULT_RETURNING_METHODS = /* @__PURE__ */ new Set([\n ...QUEUE_METHODS,\n ...SHIFTING_METHODS\n ]);\n const REORDERING_METHODS = /* @__PURE__ */ new Set([\"reverse\", \"sort\"]);\n const MUTATING_METHODS = /* @__PURE__ */ new Set([\n ...RESULT_RETURNING_METHODS,\n ...REORDERING_METHODS,\n \"splice\"\n ]);\n const FIND_METHODS = /* @__PURE__ */ new Set([\"find\", \"findLast\"]);\n const NON_MUTATING_METHODS = /* @__PURE__ */ new Set([\n \"filter\",\n \"slice\",\n \"concat\",\n \"flat\",\n ...FIND_METHODS,\n \"findIndex\",\n \"findLastIndex\",\n \"some\",\n \"every\",\n \"indexOf\",\n \"lastIndexOf\",\n \"includes\",\n \"join\",\n \"toString\",\n \"toLocaleString\"\n ]);\n function isMutatingArrayMethod(method) {\n return MUTATING_METHODS.has(method);\n }\n function isNonMutatingArrayMethod(method) {\n return NON_MUTATING_METHODS.has(method);\n }\n function isArrayOperationMethod(method) {\n return isMutatingArrayMethod(method) || isNonMutatingArrayMethod(method);\n }\n function enterOperation(state, method) {\n state.operationMethod = method;\n }\n function exitOperation(state) {\n state.operationMethod = void 0;\n }\n function executeArrayMethod(state, operation, markLength = true) {\n prepareCopy(state);\n const result = operation();\n markChanged(state);\n if (markLength)\n state.assigned_.set(\"length\", true);\n return result;\n }\n function markAllIndicesReassigned(state) {\n state.allIndicesReassigned_ = true;\n }\n function normalizeSliceIndex(index, length) {\n if (index < 0) {\n return Math.max(length + index, 0);\n }\n return Math.min(index, length);\n }\n function handleInsertedValues(state, startIndex, values) {\n for (let i = 0; i < values.length; i++) {\n const index = startIndex + i;\n state.assigned_.set(index, true);\n handleCrossReference(state, index, values[i]);\n }\n }\n function handleSimpleOperation(state, method, args) {\n return executeArrayMethod(state, () => {\n const lengthBefore = state.copy_.length;\n const result = state.copy_[method](...args);\n if (SHIFTING_METHODS.has(method)) {\n markAllIndicesReassigned(state);\n }\n if (method === \"push\" && args.length > 0) {\n handleInsertedValues(state, lengthBefore, args);\n } else if (method === \"unshift\" && args.length > 0) {\n handleInsertedValues(state, 0, args);\n }\n return RESULT_RETURNING_METHODS.has(method) ? result : state.draft_;\n });\n }\n function handleReorderingOperation(state, method, args) {\n return executeArrayMethod(\n state,\n () => {\n ;\n state.copy_[method](...args);\n markAllIndicesReassigned(state);\n return state.draft_;\n },\n false\n );\n }\n function createMethodInterceptor(state, originalMethod) {\n return function interceptedMethod(...args) {\n const method = originalMethod;\n enterOperation(state, method);\n try {\n if (isMutatingArrayMethod(method)) {\n if (RESULT_RETURNING_METHODS.has(method)) {\n return handleSimpleOperation(state, method, args);\n }\n if (REORDERING_METHODS.has(method)) {\n return handleReorderingOperation(state, method, args);\n }\n if (method === \"splice\") {\n const res = executeArrayMethod(\n state,\n () => state.copy_.splice(...args)\n );\n markAllIndicesReassigned(state);\n if (args.length > 2) {\n const startIndex = normalizeSliceIndex(\n args[0] ?? 0,\n state.copy_.length\n );\n handleInsertedValues(state, startIndex, args.slice(2));\n }\n return res;\n }\n } else {\n return handleNonMutatingOperation(state, method, args);\n }\n } finally {\n exitOperation(state);\n }\n };\n }\n function handleNonMutatingOperation(state, method, args) {\n const source = latest(state);\n if (method === \"filter\") {\n const predicate = args[0];\n const result = [];\n for (let i = 0; i < source.length; i++) {\n if (predicate(source[i], i, source)) {\n result.push(state.draft_[i]);\n }\n }\n return result;\n }\n if (FIND_METHODS.has(method)) {\n const predicate = args[0];\n const isForward = method === \"find\";\n const step = isForward ? 1 : -1;\n const start = isForward ? 0 : source.length - 1;\n for (let i = start; i >= 0 && i < source.length; i += step) {\n if (predicate(source[i], i, source)) {\n return state.draft_[i];\n }\n }\n return void 0;\n }\n if (method === \"slice\") {\n const rawStart = args[0] ?? 0;\n const rawEnd = args[1] ?? source.length;\n const start = normalizeSliceIndex(rawStart, source.length);\n const end = normalizeSliceIndex(rawEnd, source.length);\n const result = [];\n for (let i = start; i < end; i++) {\n result.push(state.draft_[i]);\n }\n return result;\n }\n return source[method](...args);\n }\n loadPlugin(PluginArrayMethods, {\n createMethodInterceptor,\n isArrayOperationMethod,\n isMutatingArrayMethod\n });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = /* @__PURE__ */ immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = /* @__PURE__ */ immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = /* @__PURE__ */ immer.setUseStrictShallowCopy.bind(\n immer\n);\nvar setUseStrictIteration = /* @__PURE__ */ immer.setUseStrictIteration.bind(\n immer\n);\nvar applyPatches = /* @__PURE__ */ immer.applyPatches.bind(immer);\nvar createDraft = /* @__PURE__ */ immer.createDraft.bind(immer);\nvar finishDraft = /* @__PURE__ */ immer.finishDraft.bind(immer);\nvar castDraft = (value) => value;\nvar castImmutable = (value) => value;\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableArrayMethods,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictIteration,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","// src/devModeChecks/identityFunctionCheck.ts\nvar runIdentityFunctionCheck = (resultFunc, inputSelectorsResults, outputSelectorResult) => {\n if (inputSelectorsResults.length === 1 && inputSelectorsResults[0] === outputSelectorResult) {\n let isInputSameAsOutput = false;\n try {\n const emptyObject = {};\n if (resultFunc(emptyObject) === emptyObject)\n isInputSameAsOutput = true;\n } catch {\n }\n if (isInputSameAsOutput) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"The result function returned its own inputs without modification. e.g\\n`createSelector([state => state.todos], todos => todos)`\\nThis could lead to inefficient memoization and unnecessary re-renders.\\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.\",\n { stack }\n );\n }\n }\n};\n\n// src/devModeChecks/inputStabilityCheck.ts\nvar runInputStabilityCheck = (inputSelectorResultsObject, options, inputSelectorArgs) => {\n const { memoize, memoizeOptions } = options;\n const { inputSelectorResults, inputSelectorResultsCopy } = inputSelectorResultsObject;\n const createAnEmptyObject = memoize(() => ({}), ...memoizeOptions);\n const areInputSelectorResultsEqual = createAnEmptyObject.apply(null, inputSelectorResults) === createAnEmptyObject.apply(null, inputSelectorResultsCopy);\n if (!areInputSelectorResultsEqual) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"An input selector returned a different result when passed same arguments.\\nThis means your output selector will likely run more frequently than intended.\\nAvoid returning a new reference inside your input selector, e.g.\\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`\",\n {\n arguments: inputSelectorArgs,\n firstInputs: inputSelectorResults,\n secondInputs: inputSelectorResultsCopy,\n stack\n }\n );\n }\n};\n\n// src/devModeChecks/setGlobalDevModeChecks.ts\nvar globalDevModeChecks = {\n inputStabilityCheck: \"once\",\n identityFunctionCheck: \"once\"\n};\nvar setGlobalDevModeChecks = (devModeChecks) => {\n Object.assign(globalDevModeChecks, devModeChecks);\n};\n\n// src/utils.ts\nvar NOT_FOUND = /* @__PURE__ */ Symbol(\"NOT_FOUND\");\nfunction assertIsFunction(func, errorMessage = `expected a function, instead received ${typeof func}`) {\n if (typeof func !== \"function\") {\n throw new TypeError(errorMessage);\n }\n}\nfunction assertIsObject(object, errorMessage = `expected an object, instead received ${typeof object}`) {\n if (typeof object !== \"object\") {\n throw new TypeError(errorMessage);\n }\n}\nfunction assertIsArrayOfFunctions(array, errorMessage = `expected all items to be functions, instead received the following types: `) {\n if (!array.every((item) => typeof item === \"function\")) {\n const itemTypes = array.map(\n (item) => typeof item === \"function\" ? `function ${item.name || \"unnamed\"}()` : typeof item\n ).join(\", \");\n throw new TypeError(`${errorMessage}[${itemTypes}]`);\n }\n}\nvar ensureIsArray = (item) => {\n return Array.isArray(item) ? item : [item];\n};\nfunction getDependencies(createSelectorArgs) {\n const dependencies = Array.isArray(createSelectorArgs[0]) ? createSelectorArgs[0] : createSelectorArgs;\n assertIsArrayOfFunctions(\n dependencies,\n `createSelector expects all input-selectors to be functions, but received the following types: `\n );\n return dependencies;\n}\nfunction collectInputSelectorResults(dependencies, inputSelectorArgs) {\n const inputSelectorResults = [];\n const { length } = dependencies;\n for (let i = 0; i < length; i++) {\n inputSelectorResults.push(dependencies[i].apply(null, inputSelectorArgs));\n }\n return inputSelectorResults;\n}\nvar getDevModeChecksExecutionInfo = (firstRun, devModeChecks) => {\n const { identityFunctionCheck, inputStabilityCheck } = {\n ...globalDevModeChecks,\n ...devModeChecks\n };\n return {\n identityFunctionCheck: {\n shouldRun: identityFunctionCheck === \"always\" || identityFunctionCheck === \"once\" && firstRun,\n run: runIdentityFunctionCheck\n },\n inputStabilityCheck: {\n shouldRun: inputStabilityCheck === \"always\" || inputStabilityCheck === \"once\" && firstRun,\n run: runInputStabilityCheck\n }\n };\n};\n\n// src/autotrackMemoize/autotracking.ts\nvar $REVISION = 0;\nvar CURRENT_TRACKER = null;\nvar Cell = class {\n revision = $REVISION;\n _value;\n _lastValue;\n _isEqual = tripleEq;\n constructor(initialValue, isEqual = tripleEq) {\n this._value = this._lastValue = initialValue;\n this._isEqual = isEqual;\n }\n // Whenever a storage value is read, it'll add itself to the current tracker if\n // one exists, entangling its state with that cache.\n get value() {\n CURRENT_TRACKER?.add(this);\n return this._value;\n }\n // Whenever a storage value is updated, we bump the global revision clock,\n // assign the revision for this storage to the new value, _and_ we schedule a\n // rerender. This is important, and it's what makes autotracking _pull_\n // based. We don't actively tell the caches which depend on the storage that\n // anything has happened. Instead, we recompute the caches when needed.\n set value(newValue) {\n if (this.value === newValue)\n return;\n this._value = newValue;\n this.revision = ++$REVISION;\n }\n};\nfunction tripleEq(a, b) {\n return a === b;\n}\nvar TrackingCache = class {\n _cachedValue;\n _cachedRevision = -1;\n _deps = [];\n hits = 0;\n fn;\n constructor(fn) {\n this.fn = fn;\n }\n clear() {\n this._cachedValue = void 0;\n this._cachedRevision = -1;\n this._deps = [];\n this.hits = 0;\n }\n get value() {\n if (this.revision > this._cachedRevision) {\n const { fn } = this;\n const currentTracker = /* @__PURE__ */ new Set();\n const prevTracker = CURRENT_TRACKER;\n CURRENT_TRACKER = currentTracker;\n this._cachedValue = fn();\n CURRENT_TRACKER = prevTracker;\n this.hits++;\n this._deps = Array.from(currentTracker);\n this._cachedRevision = this.revision;\n }\n CURRENT_TRACKER?.add(this);\n return this._cachedValue;\n }\n get revision() {\n return Math.max(...this._deps.map((d) => d.revision), 0);\n }\n};\nfunction getValue(cell) {\n if (!(cell instanceof Cell)) {\n console.warn(\"Not a valid cell! \", cell);\n }\n return cell.value;\n}\nfunction setValue(storage, value) {\n if (!(storage instanceof Cell)) {\n throw new TypeError(\n \"setValue must be passed a tracked store created with `createStorage`.\"\n );\n }\n storage.value = storage._lastValue = value;\n}\nfunction createCell(initialValue, isEqual = tripleEq) {\n return new Cell(initialValue, isEqual);\n}\nfunction createCache(fn) {\n assertIsFunction(\n fn,\n \"the first parameter to `createCache` must be a function\"\n );\n return new TrackingCache(fn);\n}\n\n// src/autotrackMemoize/tracking.ts\nvar neverEq = (a, b) => false;\nfunction createTag() {\n return createCell(null, neverEq);\n}\nfunction dirtyTag(tag, value) {\n setValue(tag, value);\n}\nvar consumeCollection = (node) => {\n let tag = node.collectionTag;\n if (tag === null) {\n tag = node.collectionTag = createTag();\n }\n getValue(tag);\n};\nvar dirtyCollection = (node) => {\n const tag = node.collectionTag;\n if (tag !== null) {\n dirtyTag(tag, null);\n }\n};\n\n// src/autotrackMemoize/proxy.ts\nvar REDUX_PROXY_LABEL = Symbol();\nvar nextId = 0;\nvar proto = Object.getPrototypeOf({});\nvar ObjectTreeNode = class {\n constructor(value) {\n this.value = value;\n this.value = value;\n this.tag.value = value;\n }\n proxy = new Proxy(this, objectProxyHandler);\n tag = createTag();\n tags = {};\n children = {};\n collectionTag = null;\n id = nextId++;\n};\nvar objectProxyHandler = {\n get(node, key) {\n function calculateResult() {\n const { value } = node;\n const childValue = Reflect.get(value, key);\n if (typeof key === \"symbol\") {\n return childValue;\n }\n if (key in proto) {\n return childValue;\n }\n if (typeof childValue === \"object\" && childValue !== null) {\n let childNode = node.children[key];\n if (childNode === void 0) {\n childNode = node.children[key] = createNode(childValue);\n }\n if (childNode.tag) {\n getValue(childNode.tag);\n }\n return childNode.proxy;\n } else {\n let tag = node.tags[key];\n if (tag === void 0) {\n tag = node.tags[key] = createTag();\n tag.value = childValue;\n }\n getValue(tag);\n return childValue;\n }\n }\n const res = calculateResult();\n return res;\n },\n ownKeys(node) {\n consumeCollection(node);\n return Reflect.ownKeys(node.value);\n },\n getOwnPropertyDescriptor(node, prop) {\n return Reflect.getOwnPropertyDescriptor(node.value, prop);\n },\n has(node, prop) {\n return Reflect.has(node.value, prop);\n }\n};\nvar ArrayTreeNode = class {\n constructor(value) {\n this.value = value;\n this.value = value;\n this.tag.value = value;\n }\n proxy = new Proxy([this], arrayProxyHandler);\n tag = createTag();\n tags = {};\n children = {};\n collectionTag = null;\n id = nextId++;\n};\nvar arrayProxyHandler = {\n get([node], key) {\n if (key === \"length\") {\n consumeCollection(node);\n }\n return objectProxyHandler.get(node, key);\n },\n ownKeys([node]) {\n return objectProxyHandler.ownKeys(node);\n },\n getOwnPropertyDescriptor([node], prop) {\n return objectProxyHandler.getOwnPropertyDescriptor(node, prop);\n },\n has([node], prop) {\n return objectProxyHandler.has(node, prop);\n }\n};\nfunction createNode(value) {\n if (Array.isArray(value)) {\n return new ArrayTreeNode(value);\n }\n return new ObjectTreeNode(value);\n}\nfunction updateNode(node, newValue) {\n const { value, tags, children } = node;\n node.value = newValue;\n if (Array.isArray(value) && Array.isArray(newValue) && value.length !== newValue.length) {\n dirtyCollection(node);\n } else {\n if (value !== newValue) {\n let oldKeysSize = 0;\n let newKeysSize = 0;\n let anyKeysAdded = false;\n for (const _key in value) {\n oldKeysSize++;\n }\n for (const key in newValue) {\n newKeysSize++;\n if (!(key in value)) {\n anyKeysAdded = true;\n break;\n }\n }\n const isDifferent = anyKeysAdded || oldKeysSize !== newKeysSize;\n if (isDifferent) {\n dirtyCollection(node);\n }\n }\n }\n for (const key in tags) {\n const childValue = value[key];\n const newChildValue = newValue[key];\n if (childValue !== newChildValue) {\n dirtyCollection(node);\n dirtyTag(tags[key], newChildValue);\n }\n if (typeof newChildValue === \"object\" && newChildValue !== null) {\n delete tags[key];\n }\n }\n for (const key in children) {\n const childNode = children[key];\n const newChildValue = newValue[key];\n const childValue = childNode.value;\n if (childValue === newChildValue) {\n continue;\n } else if (typeof newChildValue === \"object\" && newChildValue !== null) {\n updateNode(childNode, newChildValue);\n } else {\n deleteNode(childNode);\n delete children[key];\n }\n }\n}\nfunction deleteNode(node) {\n if (node.tag) {\n dirtyTag(node.tag, null);\n }\n dirtyCollection(node);\n for (const key in node.tags) {\n dirtyTag(node.tags[key], null);\n }\n for (const key in node.children) {\n deleteNode(node.children[key]);\n }\n}\n\n// src/lruMemoize.ts\nfunction createSingletonCache(equals) {\n let entry;\n return {\n get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n return NOT_FOUND;\n },\n put(key, value) {\n entry = { key, value };\n },\n getEntries() {\n return entry ? [entry] : [];\n },\n clear() {\n entry = void 0;\n }\n };\n}\nfunction createLruCache(maxSize, equals) {\n let entries = [];\n function get(key) {\n const cacheIndex = entries.findIndex((entry) => equals(key, entry.key));\n if (cacheIndex > -1) {\n const entry = entries[cacheIndex];\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n return entry.value;\n }\n return NOT_FOUND;\n }\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n entries.unshift({ key, value });\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n function getEntries() {\n return entries;\n }\n function clear() {\n entries = [];\n }\n return { get, put, getEntries, clear };\n}\nvar referenceEqualityCheck = (a, b) => a === b;\nfunction createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n const { length } = prev;\n for (let i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n return true;\n };\n}\nfunction lruMemoize(func, equalityCheckOrOptions) {\n const providedOptions = typeof equalityCheckOrOptions === \"object\" ? equalityCheckOrOptions : { equalityCheck: equalityCheckOrOptions };\n const {\n equalityCheck = referenceEqualityCheck,\n maxSize = 1,\n resultEqualityCheck\n } = providedOptions;\n const comparator = createCacheKeyComparator(equalityCheck);\n let resultsCount = 0;\n const cache = maxSize <= 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);\n function memoized() {\n let value = cache.get(arguments);\n if (value === NOT_FOUND) {\n value = func.apply(null, arguments);\n resultsCount++;\n if (resultEqualityCheck) {\n const entries = cache.getEntries();\n const matchingEntry = entries.find(\n (entry) => resultEqualityCheck(entry.value, value)\n );\n if (matchingEntry) {\n value = matchingEntry.value;\n resultsCount !== 0 && resultsCount--;\n }\n }\n cache.put(arguments, value);\n }\n return value;\n }\n memoized.clearCache = () => {\n cache.clear();\n memoized.resetResultsCount();\n };\n memoized.resultsCount = () => resultsCount;\n memoized.resetResultsCount = () => {\n resultsCount = 0;\n };\n return memoized;\n}\n\n// src/autotrackMemoize/autotrackMemoize.ts\nfunction autotrackMemoize(func) {\n const node = createNode(\n []\n );\n let lastArgs = null;\n const shallowEqual = createCacheKeyComparator(referenceEqualityCheck);\n const cache = createCache(() => {\n const res = func.apply(null, node.proxy);\n return res;\n });\n function memoized() {\n if (!shallowEqual(lastArgs, arguments)) {\n updateNode(node, arguments);\n lastArgs = arguments;\n }\n return cache.value;\n }\n memoized.clearCache = () => {\n return cache.clear();\n };\n return memoized;\n}\n\n// src/weakMapMemoize.ts\nvar StrongRef = class {\n constructor(value) {\n this.value = value;\n }\n deref() {\n return this.value;\n }\n};\nvar Ref = typeof WeakRef !== \"undefined\" ? WeakRef : StrongRef;\nvar UNTERMINATED = 0;\nvar TERMINATED = 1;\nfunction createCacheNode() {\n return {\n s: UNTERMINATED,\n v: void 0,\n o: null,\n p: null\n };\n}\nfunction weakMapMemoize(func, options = {}) {\n let fnNode = createCacheNode();\n const { resultEqualityCheck } = options;\n let lastResult;\n let resultsCount = 0;\n function memoized() {\n let cacheNode = fnNode;\n const { length } = arguments;\n for (let i = 0, l = length; i < l; i++) {\n const arg = arguments[i];\n if (typeof arg === \"function\" || typeof arg === \"object\" && arg !== null) {\n let objectCache = cacheNode.o;\n if (objectCache === null) {\n cacheNode.o = objectCache = /* @__PURE__ */ new WeakMap();\n }\n const objectNode = objectCache.get(arg);\n if (objectNode === void 0) {\n cacheNode = createCacheNode();\n objectCache.set(arg, cacheNode);\n } else {\n cacheNode = objectNode;\n }\n } else {\n let primitiveCache = cacheNode.p;\n if (primitiveCache === null) {\n cacheNode.p = primitiveCache = /* @__PURE__ */ new Map();\n }\n const primitiveNode = primitiveCache.get(arg);\n if (primitiveNode === void 0) {\n cacheNode = createCacheNode();\n primitiveCache.set(arg, cacheNode);\n } else {\n cacheNode = primitiveNode;\n }\n }\n }\n const terminatedNode = cacheNode;\n let result;\n if (cacheNode.s === TERMINATED) {\n result = cacheNode.v;\n } else {\n result = func.apply(null, arguments);\n resultsCount++;\n if (resultEqualityCheck) {\n const lastResultValue = lastResult?.deref?.() ?? lastResult;\n if (lastResultValue != null && resultEqualityCheck(lastResultValue, result)) {\n result = lastResultValue;\n resultsCount !== 0 && resultsCount--;\n }\n const needsWeakRef = typeof result === \"object\" && result !== null || typeof result === \"function\";\n lastResult = needsWeakRef ? new Ref(result) : result;\n }\n }\n terminatedNode.s = TERMINATED;\n terminatedNode.v = result;\n return result;\n }\n memoized.clearCache = () => {\n fnNode = createCacheNode();\n memoized.resetResultsCount();\n };\n memoized.resultsCount = () => resultsCount;\n memoized.resetResultsCount = () => {\n resultsCount = 0;\n };\n return memoized;\n}\n\n// src/createSelectorCreator.ts\nfunction createSelectorCreator(memoizeOrOptions, ...memoizeOptionsFromArgs) {\n const createSelectorCreatorOptions = typeof memoizeOrOptions === \"function\" ? {\n memoize: memoizeOrOptions,\n memoizeOptions: memoizeOptionsFromArgs\n } : memoizeOrOptions;\n const createSelector2 = (...createSelectorArgs) => {\n let recomputations = 0;\n let dependencyRecomputations = 0;\n let lastResult;\n let directlyPassedOptions = {};\n let resultFunc = createSelectorArgs.pop();\n if (typeof resultFunc === \"object\") {\n directlyPassedOptions = resultFunc;\n resultFunc = createSelectorArgs.pop();\n }\n assertIsFunction(\n resultFunc,\n `createSelector expects an output function after the inputs, but received: [${typeof resultFunc}]`\n );\n const combinedOptions = {\n ...createSelectorCreatorOptions,\n ...directlyPassedOptions\n };\n const {\n memoize,\n memoizeOptions = [],\n argsMemoize = weakMapMemoize,\n argsMemoizeOptions = [],\n devModeChecks = {}\n } = combinedOptions;\n const finalMemoizeOptions = ensureIsArray(memoizeOptions);\n const finalArgsMemoizeOptions = ensureIsArray(argsMemoizeOptions);\n const dependencies = getDependencies(createSelectorArgs);\n const memoizedResultFunc = memoize(function recomputationWrapper() {\n recomputations++;\n return resultFunc.apply(\n null,\n arguments\n );\n }, ...finalMemoizeOptions);\n let firstRun = true;\n const selector = argsMemoize(function dependenciesChecker() {\n dependencyRecomputations++;\n const inputSelectorResults = collectInputSelectorResults(\n dependencies,\n arguments\n );\n lastResult = memoizedResultFunc.apply(null, inputSelectorResults);\n if (process.env.NODE_ENV !== \"production\") {\n const { identityFunctionCheck, inputStabilityCheck } = getDevModeChecksExecutionInfo(firstRun, devModeChecks);\n if (identityFunctionCheck.shouldRun) {\n identityFunctionCheck.run(\n resultFunc,\n inputSelectorResults,\n lastResult\n );\n }\n if (inputStabilityCheck.shouldRun) {\n const inputSelectorResultsCopy = collectInputSelectorResults(\n dependencies,\n arguments\n );\n inputStabilityCheck.run(\n { inputSelectorResults, inputSelectorResultsCopy },\n { memoize, memoizeOptions: finalMemoizeOptions },\n arguments\n );\n }\n if (firstRun)\n firstRun = false;\n }\n return lastResult;\n }, ...finalArgsMemoizeOptions);\n return Object.assign(selector, {\n resultFunc,\n memoizedResultFunc,\n dependencies,\n dependencyRecomputations: () => dependencyRecomputations,\n resetDependencyRecomputations: () => {\n dependencyRecomputations = 0;\n },\n lastResult: () => lastResult,\n recomputations: () => recomputations,\n resetRecomputations: () => {\n recomputations = 0;\n },\n memoize,\n argsMemoize\n });\n };\n Object.assign(createSelector2, {\n withTypes: () => createSelector2\n });\n return createSelector2;\n}\nvar createSelector = /* @__PURE__ */ createSelectorCreator(weakMapMemoize);\n\n// src/createStructuredSelector.ts\nvar createStructuredSelector = Object.assign(\n (inputSelectorsObject, selectorCreator = createSelector) => {\n assertIsObject(\n inputSelectorsObject,\n `createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof inputSelectorsObject}`\n );\n const inputSelectorKeys = Object.keys(inputSelectorsObject);\n const dependencies = inputSelectorKeys.map(\n (key) => inputSelectorsObject[key]\n );\n const structuredSelector = selectorCreator(\n dependencies,\n (...inputSelectorResults) => {\n return inputSelectorResults.reduce((composition, value, index) => {\n composition[inputSelectorKeys[index]] = value;\n return composition;\n }, {});\n }\n );\n return structuredSelector;\n },\n { withTypes: () => createStructuredSelector }\n);\nexport {\n createSelector,\n createSelectorCreator,\n createStructuredSelector,\n lruMemoize,\n referenceEqualityCheck,\n setGlobalDevModeChecks,\n autotrackMemoize as unstable_autotrackMemoize,\n weakMapMemoize\n};\n//# sourceMappingURL=reselect.mjs.map","// src/index.ts\nexport * from \"redux\";\nimport { freeze, original as original2 } from \"immer\";\n\n// src/immerImports.ts\nimport { current, isDraft, produce, isDraftable, setUseStrictIteration } from \"immer\";\n\n// src/index.ts\nimport { createSelector, lruMemoize } from \"reselect\";\n\n// src/reselectImports.ts\nimport { createSelectorCreator, weakMapMemoize } from \"reselect\";\n\n// src/createDraftSafeSelector.ts\nvar createDraftSafeSelectorCreator = (...args) => {\n const createSelector2 = createSelectorCreator(...args);\n const createDraftSafeSelector2 = Object.assign((...args2) => {\n const selector = createSelector2(...args2);\n const wrappedSelector = (value, ...rest) => selector(isDraft(value) ? current(value) : value, ...rest);\n Object.assign(wrappedSelector, selector);\n return wrappedSelector;\n }, {\n withTypes: () => createDraftSafeSelector2\n });\n return createDraftSafeSelector2;\n};\nvar createDraftSafeSelector = /* @__PURE__ */ createDraftSafeSelectorCreator(weakMapMemoize);\n\n// src/reduxImports.ts\nimport { createStore, combineReducers, applyMiddleware, compose, isPlainObject, isAction } from \"redux\";\n\n// src/devtoolsExtension.ts\nvar composeWithDevTools = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function() {\n if (arguments.length === 0) return void 0;\n if (typeof arguments[0] === \"object\") return compose;\n return compose.apply(null, arguments);\n};\nvar devToolsEnhancer = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function() {\n return function(noop3) {\n return noop3;\n };\n};\n\n// src/getDefaultMiddleware.ts\nimport { thunk as thunkMiddleware, withExtraArgument } from \"redux-thunk\";\n\n// src/tsHelpers.ts\nvar hasMatchFunction = (v) => {\n return v && typeof v.match === \"function\";\n};\n\n// src/createAction.ts\nfunction createAction(type, prepareAction) {\n function actionCreator(...args) {\n if (prepareAction) {\n let prepared = prepareAction(...args);\n if (!prepared) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : \"prepareAction did not return an object\");\n }\n return {\n type,\n payload: prepared.payload,\n ...\"meta\" in prepared && {\n meta: prepared.meta\n },\n ...\"error\" in prepared && {\n error: prepared.error\n }\n };\n }\n return {\n type,\n payload: args[0]\n };\n }\n actionCreator.toString = () => `${type}`;\n actionCreator.type = type;\n actionCreator.match = (action) => isAction(action) && action.type === type;\n return actionCreator;\n}\nfunction isActionCreator(action) {\n return typeof action === \"function\" && \"type\" in action && // hasMatchFunction only wants Matchers but I don't see the point in rewriting it\n hasMatchFunction(action);\n}\nfunction isFSA(action) {\n return isAction(action) && Object.keys(action).every(isValidKey);\n}\nfunction isValidKey(key) {\n return [\"type\", \"payload\", \"error\", \"meta\"].indexOf(key) > -1;\n}\n\n// src/actionCreatorInvariantMiddleware.ts\nfunction getMessage(type) {\n const splitType = type ? `${type}`.split(\"/\") : [];\n const actionName = splitType[splitType.length - 1] || \"actionCreator\";\n return `Detected an action creator with type \"${type || \"unknown\"}\" being dispatched. \nMake sure you're calling the action creator before dispatching, i.e. \\`dispatch(${actionName}())\\` instead of \\`dispatch(${actionName})\\`. This is necessary even if the action has no payload.`;\n}\nfunction createActionCreatorInvariantMiddleware(options = {}) {\n if (process.env.NODE_ENV === \"production\") {\n return () => (next) => (action) => next(action);\n }\n const {\n isActionCreator: isActionCreator2 = isActionCreator\n } = options;\n return () => (next) => (action) => {\n if (isActionCreator2(action)) {\n console.warn(getMessage(action.type));\n }\n return next(action);\n };\n}\n\n// src/utils.ts\nfunction getTimeMeasureUtils(maxDelay, fnName) {\n let elapsed = 0;\n return {\n measureTime(fn) {\n const started = Date.now();\n try {\n return fn();\n } finally {\n const finished = Date.now();\n elapsed += finished - started;\n }\n },\n warnIfExceeded() {\n if (elapsed > maxDelay) {\n console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that.`);\n }\n }\n };\n}\nvar Tuple = class _Tuple extends Array {\n constructor(...items) {\n super(...items);\n Object.setPrototypeOf(this, _Tuple.prototype);\n }\n static get [Symbol.species]() {\n return _Tuple;\n }\n concat(...arr) {\n return super.concat.apply(this, arr);\n }\n prepend(...arr) {\n if (arr.length === 1 && Array.isArray(arr[0])) {\n return new _Tuple(...arr[0].concat(this));\n }\n return new _Tuple(...arr.concat(this));\n }\n};\nfunction freezeDraftable(val) {\n return isDraftable(val) ? produce(val, () => {\n }) : val;\n}\nfunction getOrInsertComputed(map, key, compute) {\n if (map.has(key)) return map.get(key);\n return map.set(key, compute(key)).get(key);\n}\n\n// src/immutableStateInvariantMiddleware.ts\nfunction isImmutableDefault(value) {\n return typeof value !== \"object\" || value == null || Object.isFrozen(value);\n}\nfunction trackForMutations(isImmutable, ignoredPaths, obj) {\n const trackedProperties = trackProperties(isImmutable, ignoredPaths, obj);\n return {\n detectMutations() {\n return detectMutations(isImmutable, ignoredPaths, trackedProperties, obj);\n }\n };\n}\nfunction trackProperties(isImmutable, ignoredPaths = [], obj, path = \"\", checkedObjects = /* @__PURE__ */ new Set()) {\n const tracked = {\n value: obj\n };\n if (!isImmutable(obj) && !checkedObjects.has(obj)) {\n checkedObjects.add(obj);\n tracked.children = {};\n const hasIgnoredPaths = ignoredPaths.length > 0;\n for (const key in obj) {\n const nestedPath = path ? path + \".\" + key : key;\n if (hasIgnoredPaths) {\n const hasMatches = ignoredPaths.some((ignored) => {\n if (ignored instanceof RegExp) {\n return ignored.test(nestedPath);\n }\n return nestedPath === ignored;\n });\n if (hasMatches) {\n continue;\n }\n }\n tracked.children[key] = trackProperties(isImmutable, ignoredPaths, obj[key], nestedPath);\n }\n }\n return tracked;\n}\nfunction detectMutations(isImmutable, ignoredPaths = [], trackedProperty, obj, sameParentRef = false, path = \"\") {\n const prevObj = trackedProperty ? trackedProperty.value : void 0;\n const sameRef = prevObj === obj;\n if (sameParentRef && !sameRef && !Number.isNaN(obj)) {\n return {\n wasMutated: true,\n path\n };\n }\n if (isImmutable(prevObj) || isImmutable(obj)) {\n return {\n wasMutated: false\n };\n }\n const keysToDetect = {};\n for (let key in trackedProperty.children) {\n keysToDetect[key] = true;\n }\n for (let key in obj) {\n keysToDetect[key] = true;\n }\n const hasIgnoredPaths = ignoredPaths.length > 0;\n for (let key in keysToDetect) {\n const nestedPath = path ? path + \".\" + key : key;\n if (hasIgnoredPaths) {\n const hasMatches = ignoredPaths.some((ignored) => {\n if (ignored instanceof RegExp) {\n return ignored.test(nestedPath);\n }\n return nestedPath === ignored;\n });\n if (hasMatches) {\n continue;\n }\n }\n const result = detectMutations(isImmutable, ignoredPaths, trackedProperty.children[key], obj[key], sameRef, nestedPath);\n if (result.wasMutated) {\n return result;\n }\n }\n return {\n wasMutated: false\n };\n}\nfunction createImmutableStateInvariantMiddleware(options = {}) {\n if (process.env.NODE_ENV === \"production\") {\n return () => (next) => (action) => next(action);\n } else {\n let stringify2 = function(obj, serializer, indent, decycler) {\n return JSON.stringify(obj, getSerialize2(serializer, decycler), indent);\n }, getSerialize2 = function(serializer, decycler) {\n let stack = [], keys = [];\n if (!decycler) decycler = function(_, value) {\n if (stack[0] === value) return \"[Circular ~]\";\n return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\";\n };\n return function(key, value) {\n if (stack.length > 0) {\n var thisPos = stack.indexOf(this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n if (~stack.indexOf(value)) value = decycler.call(this, key, value);\n } else stack.push(value);\n return serializer == null ? value : serializer.call(this, key, value);\n };\n };\n var stringify = stringify2, getSerialize = getSerialize2;\n let {\n isImmutable = isImmutableDefault,\n ignoredPaths,\n warnAfter = 32\n } = options;\n const track = trackForMutations.bind(null, isImmutable, ignoredPaths);\n return ({\n getState\n }) => {\n let state = getState();\n let tracker = track(state);\n let result;\n return (next) => (action) => {\n const measureUtils = getTimeMeasureUtils(warnAfter, \"ImmutableStateInvariantMiddleware\");\n measureUtils.measureTime(() => {\n state = getState();\n result = tracker.detectMutations();\n tracker = track(state);\n if (result.wasMutated) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(19) : `A state mutation was detected between dispatches, in the path '${result.path || \"\"}'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`);\n }\n });\n const dispatchedAction = next(action);\n measureUtils.measureTime(() => {\n state = getState();\n result = tracker.detectMutations();\n tracker = track(state);\n if (result.wasMutated) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(20) : `A state mutation was detected inside a dispatch, in the path: ${result.path || \"\"}. Take a look at the reducer(s) handling the action ${stringify2(action)}. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`);\n }\n });\n measureUtils.warnIfExceeded();\n return dispatchedAction;\n };\n };\n }\n}\n\n// src/serializableStateInvariantMiddleware.ts\nfunction isPlain(val) {\n const type = typeof val;\n return val == null || type === \"string\" || type === \"boolean\" || type === \"number\" || Array.isArray(val) || isPlainObject(val);\n}\nfunction findNonSerializableValue(value, path = \"\", isSerializable = isPlain, getEntries, ignoredPaths = [], cache) {\n let foundNestedSerializable;\n if (!isSerializable(value)) {\n return {\n keyPath: path || \"<root>\",\n value\n };\n }\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n if (cache?.has(value)) return false;\n const entries = getEntries != null ? getEntries(value) : Object.entries(value);\n const hasIgnoredPaths = ignoredPaths.length > 0;\n for (const [key, nestedValue] of entries) {\n const nestedPath = path ? path + \".\" + key : key;\n if (hasIgnoredPaths) {\n const hasMatches = ignoredPaths.some((ignored) => {\n if (ignored instanceof RegExp) {\n return ignored.test(nestedPath);\n }\n return nestedPath === ignored;\n });\n if (hasMatches) {\n continue;\n }\n }\n if (!isSerializable(nestedValue)) {\n return {\n keyPath: nestedPath,\n value: nestedValue\n };\n }\n if (typeof nestedValue === \"object\") {\n foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths, cache);\n if (foundNestedSerializable) {\n return foundNestedSerializable;\n }\n }\n }\n if (cache && isNestedFrozen(value)) cache.add(value);\n return false;\n}\nfunction isNestedFrozen(value) {\n if (!Object.isFrozen(value)) return false;\n for (const nestedValue of Object.values(value)) {\n if (typeof nestedValue !== \"object\" || nestedValue === null) continue;\n if (!isNestedFrozen(nestedValue)) return false;\n }\n return true;\n}\nfunction createSerializableStateInvariantMiddleware(options = {}) {\n if (process.env.NODE_ENV === \"production\") {\n return () => (next) => (action) => next(action);\n } else {\n const {\n isSerializable = isPlain,\n getEntries,\n ignoredActions = [],\n ignoredActionPaths = [\"meta.arg\", \"meta.baseQueryMeta\"],\n ignoredPaths = [],\n warnAfter = 32,\n ignoreState = false,\n ignoreActions = false,\n disableCache = false\n } = options;\n const cache = !disableCache && WeakSet ? /* @__PURE__ */ new WeakSet() : void 0;\n return (storeAPI) => (next) => (action) => {\n if (!isAction(action)) {\n return next(action);\n }\n const result = next(action);\n const measureUtils = getTimeMeasureUtils(warnAfter, \"SerializableStateInvariantMiddleware\");\n if (!ignoreActions && !(ignoredActions.length && ignoredActions.indexOf(action.type) !== -1)) {\n measureUtils.measureTime(() => {\n const foundActionNonSerializableValue = findNonSerializableValue(action, \"\", isSerializable, getEntries, ignoredActionPaths, cache);\n if (foundActionNonSerializableValue) {\n const {\n keyPath,\n value\n } = foundActionNonSerializableValue;\n console.error(`A non-serializable value was detected in an action, in the path: \\`${keyPath}\\`. Value:`, value, \"\\nTake a look at the logic that dispatched this action: \", action, \"\\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)\", \"\\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)\");\n }\n });\n }\n if (!ignoreState) {\n measureUtils.measureTime(() => {\n const state = storeAPI.getState();\n const foundStateNonSerializableValue = findNonSerializableValue(state, \"\", isSerializable, getEntries, ignoredPaths, cache);\n if (foundStateNonSerializableValue) {\n const {\n keyPath,\n value\n } = foundStateNonSerializableValue;\n console.error(`A non-serializable value was detected in the state, in the path: \\`${keyPath}\\`. Value:`, value, `\nTake a look at the reducer(s) handling this action type: ${action.type}.\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)`);\n }\n });\n measureUtils.warnIfExceeded();\n }\n return result;\n };\n }\n}\n\n// src/getDefaultMiddleware.ts\nfunction isBoolean(x) {\n return typeof x === \"boolean\";\n}\nvar buildGetDefaultMiddleware = () => function getDefaultMiddleware(options) {\n const {\n thunk = true,\n immutableCheck = true,\n serializableCheck = true,\n actionCreatorCheck = true\n } = options ?? {};\n let middlewareArray = new Tuple();\n if (thunk) {\n if (isBoolean(thunk)) {\n middlewareArray.push(thunkMiddleware);\n } else {\n middlewareArray.push(withExtraArgument(thunk.extraArgument));\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (immutableCheck) {\n let immutableOptions = {};\n if (!isBoolean(immutableCheck)) {\n immutableOptions = immutableCheck;\n }\n middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions));\n }\n if (serializableCheck) {\n let serializableOptions = {};\n if (!isBoolean(serializableCheck)) {\n serializableOptions = serializableCheck;\n }\n middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions));\n }\n if (actionCreatorCheck) {\n let actionCreatorOptions = {};\n if (!isBoolean(actionCreatorCheck)) {\n actionCreatorOptions = actionCreatorCheck;\n }\n middlewareArray.unshift(createActionCreatorInvariantMiddleware(actionCreatorOptions));\n }\n }\n return middlewareArray;\n};\n\n// src/autoBatchEnhancer.ts\nvar SHOULD_AUTOBATCH = \"RTK_autoBatch\";\nvar prepareAutoBatched = () => (payload) => ({\n payload,\n meta: {\n [SHOULD_AUTOBATCH]: true\n }\n});\nvar createQueueWithTimer = (timeout) => {\n return (notify) => {\n setTimeout(notify, timeout);\n };\n};\nvar autoBatchEnhancer = (options = {\n type: \"raf\"\n}) => (next) => (...args) => {\n const store = next(...args);\n let notifying = true;\n let shouldNotifyAtEndOfTick = false;\n let notificationQueued = false;\n const listeners = /* @__PURE__ */ new Set();\n const queueCallback = options.type === \"tick\" ? queueMicrotask : options.type === \"raf\" ? (\n // requestAnimationFrame won't exist in SSR environments. Fall back to a vague approximation just to keep from erroring.\n typeof window !== \"undefined\" && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10)\n ) : options.type === \"callback\" ? options.queueNotification : createQueueWithTimer(options.timeout);\n const notifyListeners = () => {\n notificationQueued = false;\n if (shouldNotifyAtEndOfTick) {\n shouldNotifyAtEndOfTick = false;\n listeners.forEach((l) => l());\n }\n };\n return Object.assign({}, store, {\n // Override the base `store.subscribe` method to keep original listeners\n // from running if we're delaying notifications\n subscribe(listener2) {\n const wrappedListener = () => notifying && listener2();\n const unsubscribe = store.subscribe(wrappedListener);\n listeners.add(listener2);\n return () => {\n unsubscribe();\n listeners.delete(listener2);\n };\n },\n // Override the base `store.dispatch` method so that we can check actions\n // for the `shouldAutoBatch` flag and determine if batching is active\n dispatch(action) {\n try {\n notifying = !action?.meta?.[SHOULD_AUTOBATCH];\n shouldNotifyAtEndOfTick = !notifying;\n if (shouldNotifyAtEndOfTick) {\n if (!notificationQueued) {\n notificationQueued = true;\n queueCallback(notifyListeners);\n }\n }\n return store.dispatch(action);\n } finally {\n notifying = true;\n }\n }\n });\n};\n\n// src/getDefaultEnhancers.ts\nvar buildGetDefaultEnhancers = (middlewareEnhancer) => function getDefaultEnhancers(options) {\n const {\n autoBatch = true\n } = options ?? {};\n let enhancerArray = new Tuple(middlewareEnhancer);\n if (autoBatch) {\n enhancerArray.push(autoBatchEnhancer(typeof autoBatch === \"object\" ? autoBatch : void 0));\n }\n return enhancerArray;\n};\n\n// src/configureStore.ts\nfunction configureStore(options) {\n const getDefaultMiddleware = buildGetDefaultMiddleware();\n const {\n reducer = void 0,\n middleware,\n devTools = true,\n duplicateMiddlewareCheck = true,\n preloadedState = void 0,\n enhancers = void 0\n } = options || {};\n let rootReducer;\n if (typeof reducer === \"function\") {\n rootReducer = reducer;\n } else if (isPlainObject(reducer)) {\n rootReducer = combineReducers(reducer);\n } else {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"`reducer` is a required argument, and must be a function or an object of functions that can be passed to combineReducers\");\n }\n if (process.env.NODE_ENV !== \"production\" && middleware && typeof middleware !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"`middleware` field must be a callback\");\n }\n let finalMiddleware;\n if (typeof middleware === \"function\") {\n finalMiddleware = middleware(getDefaultMiddleware);\n if (process.env.NODE_ENV !== \"production\" && !Array.isArray(finalMiddleware)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : \"when using a middleware builder function, an array of middleware must be returned\");\n }\n } else {\n finalMiddleware = getDefaultMiddleware();\n }\n if (process.env.NODE_ENV !== \"production\" && finalMiddleware.some((item) => typeof item !== \"function\")) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"each middleware provided to configureStore must be a function\");\n }\n if (process.env.NODE_ENV !== \"production\" && duplicateMiddlewareCheck) {\n let middlewareReferences = /* @__PURE__ */ new Set();\n finalMiddleware.forEach((middleware2) => {\n if (middlewareReferences.has(middleware2)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(42) : \"Duplicate middleware references found when creating the store. Ensure that each middleware is only included once.\");\n }\n middlewareReferences.add(middleware2);\n });\n }\n let finalCompose = compose;\n if (devTools) {\n finalCompose = composeWithDevTools({\n // Enable capture of stack traces for dispatched Redux actions\n trace: process.env.NODE_ENV !== \"production\",\n ...typeof devTools === \"object\" && devTools\n });\n }\n const middlewareEnhancer = applyMiddleware(...finalMiddleware);\n const getDefaultEnhancers = buildGetDefaultEnhancers(middlewareEnhancer);\n if (process.env.NODE_ENV !== \"production\" && enhancers && typeof enhancers !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : \"`enhancers` field must be a callback\");\n }\n let storeEnhancers = typeof enhancers === \"function\" ? enhancers(getDefaultEnhancers) : getDefaultEnhancers();\n if (process.env.NODE_ENV !== \"production\" && !Array.isArray(storeEnhancers)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : \"`enhancers` callback must return an array\");\n }\n if (process.env.NODE_ENV !== \"production\" && storeEnhancers.some((item) => typeof item !== \"function\")) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"each enhancer provided to configureStore must be a function\");\n }\n if (process.env.NODE_ENV !== \"production\" && finalMiddleware.length && !storeEnhancers.includes(middlewareEnhancer)) {\n console.error(\"middlewares were provided, but middleware enhancer was not included in final enhancers - make sure to call `getDefaultEnhancers`\");\n }\n const composedEnhancer = finalCompose(...storeEnhancers);\n return createStore(rootReducer, preloadedState, composedEnhancer);\n}\n\n// src/mapBuilders.ts\nfunction executeReducerBuilderCallback(builderCallback) {\n const actionsMap = {};\n const actionMatchers = [];\n let defaultCaseReducer;\n const builder = {\n addCase(typeOrActionCreator, reducer) {\n if (process.env.NODE_ENV !== \"production\") {\n if (actionMatchers.length > 0) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(26) : \"`builder.addCase` should only be called before calling `builder.addMatcher`\");\n }\n if (defaultCaseReducer) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(27) : \"`builder.addCase` should only be called before calling `builder.addDefaultCase`\");\n }\n }\n const type = typeof typeOrActionCreator === \"string\" ? typeOrActionCreator : typeOrActionCreator.type;\n if (!type) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(28) : \"`builder.addCase` cannot be called with an empty action type\");\n }\n if (type in actionsMap) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(29) : `\\`builder.addCase\\` cannot be called with two reducers for the same action type '${type}'`);\n }\n actionsMap[type] = reducer;\n return builder;\n },\n addAsyncThunk(asyncThunk, reducers) {\n if (process.env.NODE_ENV !== \"production\") {\n if (defaultCaseReducer) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(43) : \"`builder.addAsyncThunk` should only be called before calling `builder.addDefaultCase`\");\n }\n }\n if (reducers.pending) actionsMap[asyncThunk.pending.type] = reducers.pending;\n if (reducers.rejected) actionsMap[asyncThunk.rejected.type] = reducers.rejected;\n if (reducers.fulfilled) actionsMap[asyncThunk.fulfilled.type] = reducers.fulfilled;\n if (reducers.settled) actionMatchers.push({\n matcher: asyncThunk.settled,\n reducer: reducers.settled\n });\n return builder;\n },\n addMatcher(matcher, reducer) {\n if (process.env.NODE_ENV !== \"production\") {\n if (defaultCaseReducer) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(30) : \"`builder.addMatcher` should only be called before calling `builder.addDefaultCase`\");\n }\n }\n actionMatchers.push({\n matcher,\n reducer\n });\n return builder;\n },\n addDefaultCase(reducer) {\n if (process.env.NODE_ENV !== \"production\") {\n if (defaultCaseReducer) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(31) : \"`builder.addDefaultCase` can only be called once\");\n }\n }\n defaultCaseReducer = reducer;\n return builder;\n }\n };\n builderCallback(builder);\n return [actionsMap, actionMatchers, defaultCaseReducer];\n}\n\n// src/createReducer.ts\nfunction isStateFunction(x) {\n return typeof x === \"function\";\n}\nfunction createReducer(initialState, mapOrBuilderCallback) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof mapOrBuilderCallback === \"object\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : \"The object notation for `createReducer` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\");\n }\n }\n let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] = executeReducerBuilderCallback(mapOrBuilderCallback);\n let getInitialState;\n if (isStateFunction(initialState)) {\n getInitialState = () => freezeDraftable(initialState());\n } else {\n const frozenInitialState = freezeDraftable(initialState);\n getInitialState = () => frozenInitialState;\n }\n function reducer(state = getInitialState(), action) {\n let caseReducers = [actionsMap[action.type], ...finalActionMatchers.filter(({\n matcher\n }) => matcher(action)).map(({\n reducer: reducer2\n }) => reducer2)];\n if (caseReducers.filter((cr) => !!cr).length === 0) {\n caseReducers = [finalDefaultCaseReducer];\n }\n return caseReducers.reduce((previousState, caseReducer) => {\n if (caseReducer) {\n if (isDraft(previousState)) {\n const draft = previousState;\n const result = caseReducer(draft, action);\n if (result === void 0) {\n return previousState;\n }\n return result;\n } else if (!isDraftable(previousState)) {\n const result = caseReducer(previousState, action);\n if (result === void 0) {\n if (previousState === null) {\n return previousState;\n }\n throw Error(\"A case reducer on a non-draftable value must not return undefined\");\n }\n return result;\n } else {\n return produce(previousState, (draft) => {\n return caseReducer(draft, action);\n });\n }\n }\n return previousState;\n }, state);\n }\n reducer.getInitialState = getInitialState;\n return reducer;\n}\n\n// src/matchers.ts\nvar matches = (matcher, action) => {\n if (hasMatchFunction(matcher)) {\n return matcher.match(action);\n } else {\n return matcher(action);\n }\n};\nfunction isAnyOf(...matchers) {\n return (action) => {\n return matchers.some((matcher) => matches(matcher, action));\n };\n}\nfunction isAllOf(...matchers) {\n return (action) => {\n return matchers.every((matcher) => matches(matcher, action));\n };\n}\nfunction hasExpectedRequestMetadata(action, validStatus) {\n if (!action || !action.meta) return false;\n const hasValidRequestId = typeof action.meta.requestId === \"string\";\n const hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1;\n return hasValidRequestId && hasValidRequestStatus;\n}\nfunction isAsyncThunkArray(a) {\n return typeof a[0] === \"function\" && \"pending\" in a[0] && \"fulfilled\" in a[0] && \"rejected\" in a[0];\n}\nfunction isPending(...asyncThunks) {\n if (asyncThunks.length === 0) {\n return (action) => hasExpectedRequestMetadata(action, [\"pending\"]);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isPending()(asyncThunks[0]);\n }\n return isAnyOf(...asyncThunks.map((asyncThunk) => asyncThunk.pending));\n}\nfunction isRejected(...asyncThunks) {\n if (asyncThunks.length === 0) {\n return (action) => hasExpectedRequestMetadata(action, [\"rejected\"]);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isRejected()(asyncThunks[0]);\n }\n return isAnyOf(...asyncThunks.map((asyncThunk) => asyncThunk.rejected));\n}\nfunction isRejectedWithValue(...asyncThunks) {\n const hasFlag = (action) => {\n return action && action.meta && action.meta.rejectedWithValue;\n };\n if (asyncThunks.length === 0) {\n return isAllOf(isRejected(...asyncThunks), hasFlag);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isRejectedWithValue()(asyncThunks[0]);\n }\n return isAllOf(isRejected(...asyncThunks), hasFlag);\n}\nfunction isFulfilled(...asyncThunks) {\n if (asyncThunks.length === 0) {\n return (action) => hasExpectedRequestMetadata(action, [\"fulfilled\"]);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isFulfilled()(asyncThunks[0]);\n }\n return isAnyOf(...asyncThunks.map((asyncThunk) => asyncThunk.fulfilled));\n}\nfunction isAsyncThunkAction(...asyncThunks) {\n if (asyncThunks.length === 0) {\n return (action) => hasExpectedRequestMetadata(action, [\"pending\", \"fulfilled\", \"rejected\"]);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isAsyncThunkAction()(asyncThunks[0]);\n }\n return isAnyOf(...asyncThunks.flatMap((asyncThunk) => [asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled]));\n}\n\n// src/nanoid.ts\nvar urlAlphabet = \"ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW\";\nvar nanoid = (size = 21) => {\n let id = \"\";\n let i = size;\n while (i--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\n\n// src/createAsyncThunk.ts\nvar commonProperties = [\"name\", \"message\", \"stack\", \"code\"];\nvar RejectWithValue = class {\n constructor(payload, meta) {\n this.payload = payload;\n this.meta = meta;\n }\n /*\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\n does not exist at runtime\n */\n _type;\n};\nvar FulfillWithMeta = class {\n constructor(payload, meta) {\n this.payload = payload;\n this.meta = meta;\n }\n /*\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\n does not exist at runtime\n */\n _type;\n};\nvar miniSerializeError = (value) => {\n if (typeof value === \"object\" && value !== null) {\n const simpleError = {};\n for (const property of commonProperties) {\n if (typeof value[property] === \"string\") {\n simpleError[property] = value[property];\n }\n }\n return simpleError;\n }\n return {\n message: String(value)\n };\n};\nvar externalAbortMessage = \"External signal was aborted\";\nvar createAsyncThunk = /* @__PURE__ */ (() => {\n function createAsyncThunk2(typePrefix, payloadCreator, options) {\n const fulfilled = createAction(typePrefix + \"/fulfilled\", (payload, requestId, arg, meta) => ({\n payload,\n meta: {\n ...meta || {},\n arg,\n requestId,\n requestStatus: \"fulfilled\"\n }\n }));\n const pending = createAction(typePrefix + \"/pending\", (requestId, arg, meta) => ({\n payload: void 0,\n meta: {\n ...meta || {},\n arg,\n requestId,\n requestStatus: \"pending\"\n }\n }));\n const rejected = createAction(typePrefix + \"/rejected\", (error, requestId, arg, payload, meta) => ({\n payload,\n error: (options && options.serializeError || miniSerializeError)(error || \"Rejected\"),\n meta: {\n ...meta || {},\n arg,\n requestId,\n rejectedWithValue: !!payload,\n requestStatus: \"rejected\",\n aborted: error?.name === \"AbortError\",\n condition: error?.name === \"ConditionError\"\n }\n }));\n function actionCreator(arg, {\n signal\n } = {}) {\n return (dispatch, getState, extra) => {\n const requestId = options?.idGenerator ? options.idGenerator(arg) : nanoid();\n const abortController = new AbortController();\n let abortHandler;\n let abortReason;\n function abort(reason) {\n abortReason = reason;\n abortController.abort();\n }\n if (signal) {\n if (signal.aborted) {\n abort(externalAbortMessage);\n } else {\n signal.addEventListener(\"abort\", () => abort(externalAbortMessage), {\n once: true\n });\n }\n }\n const promise = async function() {\n let finalAction;\n try {\n let conditionResult = options?.condition?.(arg, {\n getState,\n extra\n });\n if (isThenable(conditionResult)) {\n conditionResult = await conditionResult;\n }\n if (conditionResult === false || abortController.signal.aborted) {\n throw {\n name: \"ConditionError\",\n message: \"Aborted due to condition callback returning false.\"\n };\n }\n const abortedPromise = new Promise((_, reject) => {\n abortHandler = () => {\n reject({\n name: \"AbortError\",\n message: abortReason || \"Aborted\"\n });\n };\n abortController.signal.addEventListener(\"abort\", abortHandler, {\n once: true\n });\n });\n dispatch(pending(requestId, arg, options?.getPendingMeta?.({\n requestId,\n arg\n }, {\n getState,\n extra\n })));\n finalAction = await Promise.race([abortedPromise, Promise.resolve(payloadCreator(arg, {\n dispatch,\n getState,\n extra,\n requestId,\n signal: abortController.signal,\n abort,\n rejectWithValue: (value, meta) => {\n return new RejectWithValue(value, meta);\n },\n fulfillWithValue: (value, meta) => {\n return new FulfillWithMeta(value, meta);\n }\n })).then((result) => {\n if (result instanceof RejectWithValue) {\n throw result;\n }\n if (result instanceof FulfillWithMeta) {\n return fulfilled(result.payload, requestId, arg, result.meta);\n }\n return fulfilled(result, requestId, arg);\n })]);\n } catch (err) {\n finalAction = err instanceof RejectWithValue ? rejected(null, requestId, arg, err.payload, err.meta) : rejected(err, requestId, arg);\n } finally {\n if (abortHandler) {\n abortController.signal.removeEventListener(\"abort\", abortHandler);\n }\n }\n const skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition;\n if (!skipDispatch) {\n dispatch(finalAction);\n }\n return finalAction;\n }();\n return Object.assign(promise, {\n abort,\n requestId,\n arg,\n unwrap() {\n return promise.then(unwrapResult);\n }\n });\n };\n }\n return Object.assign(actionCreator, {\n pending,\n rejected,\n fulfilled,\n settled: isAnyOf(rejected, fulfilled),\n typePrefix\n });\n }\n createAsyncThunk2.withTypes = () => createAsyncThunk2;\n return createAsyncThunk2;\n})();\nfunction unwrapResult(action) {\n if (action.meta && action.meta.rejectedWithValue) {\n throw action.payload;\n }\n if (action.error) {\n throw action.error;\n }\n return action.payload;\n}\nfunction isThenable(value) {\n return value !== null && typeof value === \"object\" && typeof value.then === \"function\";\n}\n\n// src/createSlice.ts\nvar asyncThunkSymbol = /* @__PURE__ */ Symbol.for(\"rtk-slice-createasyncthunk\");\nvar asyncThunkCreator = {\n [asyncThunkSymbol]: createAsyncThunk\n};\nvar ReducerType = /* @__PURE__ */ ((ReducerType2) => {\n ReducerType2[\"reducer\"] = \"reducer\";\n ReducerType2[\"reducerWithPrepare\"] = \"reducerWithPrepare\";\n ReducerType2[\"asyncThunk\"] = \"asyncThunk\";\n return ReducerType2;\n})(ReducerType || {});\nfunction getType(slice, actionKey) {\n return `${slice}/${actionKey}`;\n}\nfunction buildCreateSlice({\n creators\n} = {}) {\n const cAT = creators?.asyncThunk?.[asyncThunkSymbol];\n return function createSlice2(options) {\n const {\n name,\n reducerPath = name\n } = options;\n if (!name) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"`name` is a required option for createSlice\");\n }\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\n if (options.initialState === void 0) {\n console.error(\"You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`\");\n }\n }\n const reducers = (typeof options.reducers === \"function\" ? options.reducers(buildReducerCreators()) : options.reducers) || {};\n const reducerNames = Object.keys(reducers);\n const context = {\n sliceCaseReducersByName: {},\n sliceCaseReducersByType: {},\n actionCreators: {},\n sliceMatchers: []\n };\n const contextMethods = {\n addCase(typeOrActionCreator, reducer2) {\n const type = typeof typeOrActionCreator === \"string\" ? typeOrActionCreator : typeOrActionCreator.type;\n if (!type) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"`context.addCase` cannot be called with an empty action type\");\n }\n if (type in context.sliceCaseReducersByType) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"`context.addCase` cannot be called with two reducers for the same action type: \" + type);\n }\n context.sliceCaseReducersByType[type] = reducer2;\n return contextMethods;\n },\n addMatcher(matcher, reducer2) {\n context.sliceMatchers.push({\n matcher,\n reducer: reducer2\n });\n return contextMethods;\n },\n exposeAction(name2, actionCreator) {\n context.actionCreators[name2] = actionCreator;\n return contextMethods;\n },\n exposeCaseReducer(name2, reducer2) {\n context.sliceCaseReducersByName[name2] = reducer2;\n return contextMethods;\n }\n };\n reducerNames.forEach((reducerName) => {\n const reducerDefinition = reducers[reducerName];\n const reducerDetails = {\n reducerName,\n type: getType(name, reducerName),\n createNotation: typeof options.reducers === \"function\"\n };\n if (isAsyncThunkSliceReducerDefinition(reducerDefinition)) {\n handleThunkCaseReducerDefinition(reducerDetails, reducerDefinition, contextMethods, cAT);\n } else {\n handleNormalReducerDefinition(reducerDetails, reducerDefinition, contextMethods);\n }\n });\n function buildReducer() {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof options.extraReducers === \"object\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\");\n }\n }\n const [extraReducers = {}, actionMatchers = [], defaultCaseReducer = void 0] = typeof options.extraReducers === \"function\" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers];\n const finalCaseReducers = {\n ...extraReducers,\n ...context.sliceCaseReducersByType\n };\n return createReducer(options.initialState, (builder) => {\n for (let key in finalCaseReducers) {\n builder.addCase(key, finalCaseReducers[key]);\n }\n for (let sM of context.sliceMatchers) {\n builder.addMatcher(sM.matcher, sM.reducer);\n }\n for (let m of actionMatchers) {\n builder.addMatcher(m.matcher, m.reducer);\n }\n if (defaultCaseReducer) {\n builder.addDefaultCase(defaultCaseReducer);\n }\n });\n }\n const selectSelf = (state) => state;\n const injectedSelectorCache = /* @__PURE__ */ new Map();\n const injectedStateCache = /* @__PURE__ */ new WeakMap();\n let _reducer;\n function reducer(state, action) {\n if (!_reducer) _reducer = buildReducer();\n return _reducer(state, action);\n }\n function getInitialState() {\n if (!_reducer) _reducer = buildReducer();\n return _reducer.getInitialState();\n }\n function makeSelectorProps(reducerPath2, injected = false) {\n function selectSlice(state) {\n let sliceState = state[reducerPath2];\n if (typeof sliceState === \"undefined\") {\n if (injected) {\n sliceState = getOrInsertComputed(injectedStateCache, selectSlice, getInitialState);\n } else if (process.env.NODE_ENV !== \"production\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : \"selectSlice returned undefined for an uninjected slice reducer\");\n }\n }\n return sliceState;\n }\n function getSelectors(selectState = selectSelf) {\n const selectorCache = getOrInsertComputed(injectedSelectorCache, injected, () => /* @__PURE__ */ new WeakMap());\n return getOrInsertComputed(selectorCache, selectState, () => {\n const map = {};\n for (const [name2, selector] of Object.entries(options.selectors ?? {})) {\n map[name2] = wrapSelector(selector, selectState, () => getOrInsertComputed(injectedStateCache, selectState, getInitialState), injected);\n }\n return map;\n });\n }\n return {\n reducerPath: reducerPath2,\n getSelectors,\n get selectors() {\n return getSelectors(selectSlice);\n },\n selectSlice\n };\n }\n const slice = {\n name,\n reducer,\n actions: context.actionCreators,\n caseReducers: context.sliceCaseReducersByName,\n getInitialState,\n ...makeSelectorProps(reducerPath),\n injectInto(injectable, {\n reducerPath: pathOpt,\n ...config\n } = {}) {\n const newReducerPath = pathOpt ?? reducerPath;\n injectable.inject({\n reducerPath: newReducerPath,\n reducer\n }, config);\n return {\n ...slice,\n ...makeSelectorProps(newReducerPath, true)\n };\n }\n };\n return slice;\n };\n}\nfunction wrapSelector(selector, selectState, getInitialState, injected) {\n function wrapper(rootState, ...args) {\n let sliceState = selectState(rootState);\n if (typeof sliceState === \"undefined\") {\n if (injected) {\n sliceState = getInitialState();\n } else if (process.env.NODE_ENV !== \"production\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"selectState returned undefined for an uninjected slice reducer\");\n }\n }\n return selector(sliceState, ...args);\n }\n wrapper.unwrapped = selector;\n return wrapper;\n}\nvar createSlice = /* @__PURE__ */ buildCreateSlice();\nfunction buildReducerCreators() {\n function asyncThunk(payloadCreator, config) {\n return {\n _reducerDefinitionType: \"asyncThunk\" /* asyncThunk */,\n payloadCreator,\n ...config\n };\n }\n asyncThunk.withTypes = () => asyncThunk;\n return {\n reducer(caseReducer) {\n return Object.assign({\n // hack so the wrapping function has the same name as the original\n // we need to create a wrapper so the `reducerDefinitionType` is not assigned to the original\n [caseReducer.name](...args) {\n return caseReducer(...args);\n }\n }[caseReducer.name], {\n _reducerDefinitionType: \"reducer\" /* reducer */\n });\n },\n preparedReducer(prepare, reducer) {\n return {\n _reducerDefinitionType: \"reducerWithPrepare\" /* reducerWithPrepare */,\n prepare,\n reducer\n };\n },\n asyncThunk\n };\n}\nfunction handleNormalReducerDefinition({\n type,\n reducerName,\n createNotation\n}, maybeReducerWithPrepare, context) {\n let caseReducer;\n let prepareCallback;\n if (\"reducer\" in maybeReducerWithPrepare) {\n if (createNotation && !isCaseReducerWithPrepareDefinition(maybeReducerWithPrepare)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(17) : \"Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.\");\n }\n caseReducer = maybeReducerWithPrepare.reducer;\n prepareCallback = maybeReducerWithPrepare.prepare;\n } else {\n caseReducer = maybeReducerWithPrepare;\n }\n context.addCase(type, caseReducer).exposeCaseReducer(reducerName, caseReducer).exposeAction(reducerName, prepareCallback ? createAction(type, prepareCallback) : createAction(type));\n}\nfunction isAsyncThunkSliceReducerDefinition(reducerDefinition) {\n return reducerDefinition._reducerDefinitionType === \"asyncThunk\" /* asyncThunk */;\n}\nfunction isCaseReducerWithPrepareDefinition(reducerDefinition) {\n return reducerDefinition._reducerDefinitionType === \"reducerWithPrepare\" /* reducerWithPrepare */;\n}\nfunction handleThunkCaseReducerDefinition({\n type,\n reducerName\n}, reducerDefinition, context, cAT) {\n if (!cAT) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(18) : \"Cannot use `create.asyncThunk` in the built-in `createSlice`. Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.\");\n }\n const {\n payloadCreator,\n fulfilled,\n pending,\n rejected,\n settled,\n options\n } = reducerDefinition;\n const thunk = cAT(type, payloadCreator, options);\n context.exposeAction(reducerName, thunk);\n if (fulfilled) {\n context.addCase(thunk.fulfilled, fulfilled);\n }\n if (pending) {\n context.addCase(thunk.pending, pending);\n }\n if (rejected) {\n context.addCase(thunk.rejected, rejected);\n }\n if (settled) {\n context.addMatcher(thunk.settled, settled);\n }\n context.exposeCaseReducer(reducerName, {\n fulfilled: fulfilled || noop,\n pending: pending || noop,\n rejected: rejected || noop,\n settled: settled || noop\n });\n}\nfunction noop() {\n}\n\n// src/entities/entity_state.ts\nfunction getInitialEntityState() {\n return {\n ids: [],\n entities: {}\n };\n}\nfunction createInitialStateFactory(stateAdapter) {\n function getInitialState(additionalState = {}, entities) {\n const state = Object.assign(getInitialEntityState(), additionalState);\n return entities ? stateAdapter.setAll(state, entities) : state;\n }\n return {\n getInitialState\n };\n}\n\n// src/entities/state_selectors.ts\nfunction createSelectorsFactory() {\n function getSelectors(selectState, options = {}) {\n const {\n createSelector: createSelector2 = createDraftSafeSelector\n } = options;\n const selectIds = (state) => state.ids;\n const selectEntities = (state) => state.entities;\n const selectAll = createSelector2(selectIds, selectEntities, (ids, entities) => ids.map((id) => entities[id]));\n const selectId = (_, id) => id;\n const selectById = (entities, id) => entities[id];\n const selectTotal = createSelector2(selectIds, (ids) => ids.length);\n if (!selectState) {\n return {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n selectById: createSelector2(selectEntities, selectId, selectById)\n };\n }\n const selectGlobalizedEntities = createSelector2(selectState, selectEntities);\n return {\n selectIds: createSelector2(selectState, selectIds),\n selectEntities: selectGlobalizedEntities,\n selectAll: createSelector2(selectState, selectAll),\n selectTotal: createSelector2(selectState, selectTotal),\n selectById: createSelector2(selectGlobalizedEntities, selectId, selectById)\n };\n }\n return {\n getSelectors\n };\n}\n\n// src/entities/state_adapter.ts\nvar isDraftTyped = isDraft;\nfunction createSingleArgumentStateOperator(mutator) {\n const operator = createStateOperator((_, state) => mutator(state));\n return function operation(state) {\n return operator(state, void 0);\n };\n}\nfunction createStateOperator(mutator) {\n return function operation(state, arg) {\n function isPayloadActionArgument(arg2) {\n return isFSA(arg2);\n }\n const runMutator = (draft) => {\n if (isPayloadActionArgument(arg)) {\n mutator(arg.payload, draft);\n } else {\n mutator(arg, draft);\n }\n };\n if (isDraftTyped(state)) {\n runMutator(state);\n return state;\n }\n return produce(state, runMutator);\n };\n}\n\n// src/entities/utils.ts\nfunction selectIdValue(entity, selectId) {\n const key = selectId(entity);\n if (process.env.NODE_ENV !== \"production\" && key === void 0) {\n console.warn(\"The entity passed to the `selectId` implementation returned undefined.\", \"You should probably provide your own `selectId` implementation.\", \"The entity that was passed:\", entity, \"The `selectId` implementation:\", selectId.toString());\n }\n return key;\n}\nfunction ensureEntitiesArray(entities) {\n if (!Array.isArray(entities)) {\n entities = Object.values(entities);\n }\n return entities;\n}\nfunction getCurrent(value) {\n return isDraft(value) ? current(value) : value;\n}\nfunction splitAddedUpdatedEntities(newEntities, selectId, state) {\n newEntities = ensureEntitiesArray(newEntities);\n const existingIdsArray = getCurrent(state.ids);\n const existingIds = new Set(existingIdsArray);\n const added = [];\n const addedIds = /* @__PURE__ */ new Set([]);\n const updated = [];\n for (const entity of newEntities) {\n const id = selectIdValue(entity, selectId);\n if (existingIds.has(id) || addedIds.has(id)) {\n updated.push({\n id,\n changes: entity\n });\n } else {\n addedIds.add(id);\n added.push(entity);\n }\n }\n return [added, updated, existingIdsArray];\n}\n\n// src/entities/unsorted_state_adapter.ts\nfunction createUnsortedStateAdapter(selectId) {\n function addOneMutably(entity, state) {\n const key = selectIdValue(entity, selectId);\n if (key in state.entities) {\n return;\n }\n state.ids.push(key);\n state.entities[key] = entity;\n }\n function addManyMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n for (const entity of newEntities) {\n addOneMutably(entity, state);\n }\n }\n function setOneMutably(entity, state) {\n const key = selectIdValue(entity, selectId);\n if (!(key in state.entities)) {\n state.ids.push(key);\n }\n ;\n state.entities[key] = entity;\n }\n function setManyMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n for (const entity of newEntities) {\n setOneMutably(entity, state);\n }\n }\n function setAllMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n state.ids = [];\n state.entities = {};\n addManyMutably(newEntities, state);\n }\n function removeOneMutably(key, state) {\n return removeManyMutably([key], state);\n }\n function removeManyMutably(keys, state) {\n let didMutate = false;\n keys.forEach((key) => {\n if (key in state.entities) {\n delete state.entities[key];\n didMutate = true;\n }\n });\n if (didMutate) {\n state.ids = state.ids.filter((id) => id in state.entities);\n }\n }\n function removeAllMutably(state) {\n Object.assign(state, {\n ids: [],\n entities: {}\n });\n }\n function takeNewKey(keys, update, state) {\n const original3 = state.entities[update.id];\n if (original3 === void 0) {\n return false;\n }\n const updated = Object.assign({}, original3, update.changes);\n const newKey = selectIdValue(updated, selectId);\n const hasNewKey = newKey !== update.id;\n if (hasNewKey) {\n keys[update.id] = newKey;\n delete state.entities[update.id];\n }\n ;\n state.entities[newKey] = updated;\n return hasNewKey;\n }\n function updateOneMutably(update, state) {\n return updateManyMutably([update], state);\n }\n function updateManyMutably(updates, state) {\n const newKeys = {};\n const updatesPerEntity = {};\n updates.forEach((update) => {\n if (update.id in state.entities) {\n updatesPerEntity[update.id] = {\n id: update.id,\n // Spreads ignore falsy values, so this works even if there isn't\n // an existing update already at this key\n changes: {\n ...updatesPerEntity[update.id]?.changes,\n ...update.changes\n }\n };\n }\n });\n updates = Object.values(updatesPerEntity);\n const didMutateEntities = updates.length > 0;\n if (didMutateEntities) {\n const didMutateIds = updates.filter((update) => takeNewKey(newKeys, update, state)).length > 0;\n if (didMutateIds) {\n state.ids = Object.values(state.entities).map((e) => selectIdValue(e, selectId));\n }\n }\n }\n function upsertOneMutably(entity, state) {\n return upsertManyMutably([entity], state);\n }\n function upsertManyMutably(newEntities, state) {\n const [added, updated] = splitAddedUpdatedEntities(newEntities, selectId, state);\n addManyMutably(added, state);\n updateManyMutably(updated, state);\n }\n return {\n removeAll: createSingleArgumentStateOperator(removeAllMutably),\n addOne: createStateOperator(addOneMutably),\n addMany: createStateOperator(addManyMutably),\n setOne: createStateOperator(setOneMutably),\n setMany: createStateOperator(setManyMutably),\n setAll: createStateOperator(setAllMutably),\n updateOne: createStateOperator(updateOneMutably),\n updateMany: createStateOperator(updateManyMutably),\n upsertOne: createStateOperator(upsertOneMutably),\n upsertMany: createStateOperator(upsertManyMutably),\n removeOne: createStateOperator(removeOneMutably),\n removeMany: createStateOperator(removeManyMutably)\n };\n}\n\n// src/entities/sorted_state_adapter.ts\nfunction findInsertIndex(sortedItems, item, comparisonFunction) {\n let lowIndex = 0;\n let highIndex = sortedItems.length;\n while (lowIndex < highIndex) {\n let middleIndex = lowIndex + highIndex >>> 1;\n const currentItem = sortedItems[middleIndex];\n const res = comparisonFunction(item, currentItem);\n if (res >= 0) {\n lowIndex = middleIndex + 1;\n } else {\n highIndex = middleIndex;\n }\n }\n return lowIndex;\n}\nfunction insert(sortedItems, item, comparisonFunction) {\n const insertAtIndex = findInsertIndex(sortedItems, item, comparisonFunction);\n sortedItems.splice(insertAtIndex, 0, item);\n return sortedItems;\n}\nfunction createSortedStateAdapter(selectId, comparer) {\n const {\n removeOne,\n removeMany,\n removeAll\n } = createUnsortedStateAdapter(selectId);\n function addOneMutably(entity, state) {\n return addManyMutably([entity], state);\n }\n function addManyMutably(newEntities, state, existingIds) {\n newEntities = ensureEntitiesArray(newEntities);\n const existingKeys = new Set(existingIds ?? getCurrent(state.ids));\n const addedKeys = /* @__PURE__ */ new Set();\n const models = newEntities.filter((model) => {\n const modelId = selectIdValue(model, selectId);\n const notAdded = !addedKeys.has(modelId);\n if (notAdded) addedKeys.add(modelId);\n return !existingKeys.has(modelId) && notAdded;\n });\n if (models.length !== 0) {\n mergeFunction(state, models);\n }\n }\n function setOneMutably(entity, state) {\n return setManyMutably([entity], state);\n }\n function setManyMutably(newEntities, state) {\n let deduplicatedEntities = {};\n newEntities = ensureEntitiesArray(newEntities);\n if (newEntities.length !== 0) {\n for (const item of newEntities) {\n const entityId = selectId(item);\n deduplicatedEntities[entityId] = item;\n delete state.entities[entityId];\n }\n newEntities = ensureEntitiesArray(deduplicatedEntities);\n mergeFunction(state, newEntities);\n }\n }\n function setAllMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n state.entities = {};\n state.ids = [];\n addManyMutably(newEntities, state, []);\n }\n function updateOneMutably(update, state) {\n return updateManyMutably([update], state);\n }\n function updateManyMutably(updates, state) {\n let appliedUpdates = false;\n let replacedIds = false;\n for (let update of updates) {\n const entity = state.entities[update.id];\n if (!entity) {\n continue;\n }\n appliedUpdates = true;\n Object.assign(entity, update.changes);\n const newId = selectId(entity);\n if (update.id !== newId) {\n replacedIds = true;\n delete state.entities[update.id];\n const oldIndex = state.ids.indexOf(update.id);\n state.ids[oldIndex] = newId;\n state.entities[newId] = entity;\n }\n }\n if (appliedUpdates) {\n mergeFunction(state, [], appliedUpdates, replacedIds);\n }\n }\n function upsertOneMutably(entity, state) {\n return upsertManyMutably([entity], state);\n }\n function upsertManyMutably(newEntities, state) {\n const [added, updated, existingIdsArray] = splitAddedUpdatedEntities(newEntities, selectId, state);\n if (added.length) {\n addManyMutably(added, state, existingIdsArray);\n }\n if (updated.length) {\n updateManyMutably(updated, state);\n }\n }\n function areArraysEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] === b[i]) {\n continue;\n }\n return false;\n }\n return true;\n }\n const mergeFunction = (state, addedItems, appliedUpdates, replacedIds) => {\n const currentEntities = getCurrent(state.entities);\n const currentIds = getCurrent(state.ids);\n const stateEntities = state.entities;\n let ids = currentIds;\n if (replacedIds) {\n ids = new Set(currentIds);\n }\n let sortedEntities = [];\n for (const id of ids) {\n const entity = currentEntities[id];\n if (entity) {\n sortedEntities.push(entity);\n }\n }\n const wasPreviouslyEmpty = sortedEntities.length === 0;\n for (const item of addedItems) {\n stateEntities[selectId(item)] = item;\n if (!wasPreviouslyEmpty) {\n insert(sortedEntities, item, comparer);\n }\n }\n if (wasPreviouslyEmpty) {\n sortedEntities = addedItems.slice().sort(comparer);\n } else if (appliedUpdates) {\n sortedEntities.sort(comparer);\n }\n const newSortedIds = sortedEntities.map(selectId);\n if (!areArraysEqual(currentIds, newSortedIds)) {\n state.ids = newSortedIds;\n }\n };\n return {\n removeOne,\n removeMany,\n removeAll,\n addOne: createStateOperator(addOneMutably),\n updateOne: createStateOperator(updateOneMutably),\n upsertOne: createStateOperator(upsertOneMutably),\n setOne: createStateOperator(setOneMutably),\n setMany: createStateOperator(setManyMutably),\n setAll: createStateOperator(setAllMutably),\n addMany: createStateOperator(addManyMutably),\n updateMany: createStateOperator(updateManyMutably),\n upsertMany: createStateOperator(upsertManyMutably)\n };\n}\n\n// src/entities/create_adapter.ts\nfunction createEntityAdapter(options = {}) {\n const {\n selectId,\n sortComparer\n } = {\n sortComparer: false,\n selectId: (instance) => instance.id,\n ...options\n };\n const stateAdapter = sortComparer ? createSortedStateAdapter(selectId, sortComparer) : createUnsortedStateAdapter(selectId);\n const stateFactory = createInitialStateFactory(stateAdapter);\n const selectorsFactory = createSelectorsFactory();\n return {\n selectId,\n sortComparer,\n ...stateFactory,\n ...selectorsFactory,\n ...stateAdapter\n };\n}\n\n// src/listenerMiddleware/exceptions.ts\nvar task = \"task\";\nvar listener = \"listener\";\nvar completed = \"completed\";\nvar cancelled = \"cancelled\";\nvar taskCancelled = `task-${cancelled}`;\nvar taskCompleted = `task-${completed}`;\nvar listenerCancelled = `${listener}-${cancelled}`;\nvar listenerCompleted = `${listener}-${completed}`;\nvar TaskAbortError = class {\n constructor(code) {\n this.code = code;\n this.message = `${task} ${cancelled} (reason: ${code})`;\n }\n name = \"TaskAbortError\";\n message;\n};\n\n// src/listenerMiddleware/utils.ts\nvar assertFunction = (func, expected) => {\n if (typeof func !== \"function\") {\n throw new TypeError(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(32) : `${expected} is not a function`);\n }\n};\nvar noop2 = () => {\n};\nvar catchRejection = (promise, onError = noop2) => {\n promise.catch(onError);\n return promise;\n};\nvar addAbortSignalListener = (abortSignal, callback) => {\n abortSignal.addEventListener(\"abort\", callback, {\n once: true\n });\n return () => abortSignal.removeEventListener(\"abort\", callback);\n};\n\n// src/listenerMiddleware/task.ts\nvar validateActive = (signal) => {\n if (signal.aborted) {\n throw new TaskAbortError(signal.reason);\n }\n};\nfunction raceWithSignal(signal, promise) {\n let cleanup = noop2;\n return new Promise((resolve, reject) => {\n const notifyRejection = () => reject(new TaskAbortError(signal.reason));\n if (signal.aborted) {\n notifyRejection();\n return;\n }\n cleanup = addAbortSignalListener(signal, notifyRejection);\n promise.finally(() => cleanup()).then(resolve, reject);\n }).finally(() => {\n cleanup = noop2;\n });\n}\nvar runTask = async (task2, cleanUp) => {\n try {\n await Promise.resolve();\n const value = await task2();\n return {\n status: \"ok\",\n value\n };\n } catch (error) {\n return {\n status: error instanceof TaskAbortError ? \"cancelled\" : \"rejected\",\n error\n };\n } finally {\n cleanUp?.();\n }\n};\nvar createPause = (signal) => {\n return (promise) => {\n return catchRejection(raceWithSignal(signal, promise).then((output) => {\n validateActive(signal);\n return output;\n }));\n };\n};\nvar createDelay = (signal) => {\n const pause = createPause(signal);\n return (timeoutMs) => {\n return pause(new Promise((resolve) => setTimeout(resolve, timeoutMs)));\n };\n};\n\n// src/listenerMiddleware/index.ts\nvar {\n assign\n} = Object;\nvar INTERNAL_NIL_TOKEN = {};\nvar alm = \"listenerMiddleware\";\nvar createFork = (parentAbortSignal, parentBlockingPromises) => {\n const linkControllers = (controller) => addAbortSignalListener(parentAbortSignal, () => controller.abort(parentAbortSignal.reason));\n return (taskExecutor, opts) => {\n assertFunction(taskExecutor, \"taskExecutor\");\n const childAbortController = new AbortController();\n linkControllers(childAbortController);\n const result = runTask(async () => {\n validateActive(parentAbortSignal);\n validateActive(childAbortController.signal);\n const result2 = await taskExecutor({\n pause: createPause(childAbortController.signal),\n delay: createDelay(childAbortController.signal),\n signal: childAbortController.signal\n });\n validateActive(childAbortController.signal);\n return result2;\n }, () => childAbortController.abort(taskCompleted));\n if (opts?.autoJoin) {\n parentBlockingPromises.push(result.catch(noop2));\n }\n return {\n result: createPause(parentAbortSignal)(result),\n cancel() {\n childAbortController.abort(taskCancelled);\n }\n };\n };\n};\nvar createTakePattern = (startListening, signal) => {\n const take = async (predicate, timeout) => {\n validateActive(signal);\n let unsubscribe = () => {\n };\n const tuplePromise = new Promise((resolve, reject) => {\n let stopListening = startListening({\n predicate,\n effect: (action, listenerApi) => {\n listenerApi.unsubscribe();\n resolve([action, listenerApi.getState(), listenerApi.getOriginalState()]);\n }\n });\n unsubscribe = () => {\n stopListening();\n reject();\n };\n });\n const promises = [tuplePromise];\n if (timeout != null) {\n promises.push(new Promise((resolve) => setTimeout(resolve, timeout, null)));\n }\n try {\n const output = await raceWithSignal(signal, Promise.race(promises));\n validateActive(signal);\n return output;\n } finally {\n unsubscribe();\n }\n };\n return (predicate, timeout) => catchRejection(take(predicate, timeout));\n};\nvar getListenerEntryPropsFrom = (options) => {\n let {\n type,\n actionCreator,\n matcher,\n predicate,\n effect\n } = options;\n if (type) {\n predicate = createAction(type).match;\n } else if (actionCreator) {\n type = actionCreator.type;\n predicate = actionCreator.match;\n } else if (matcher) {\n predicate = matcher;\n } else if (predicate) {\n } else {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(21) : \"Creating or removing a listener requires one of the known fields for matching an action\");\n }\n assertFunction(effect, \"options.listener\");\n return {\n predicate,\n type,\n effect\n };\n};\nvar createListenerEntry = /* @__PURE__ */ assign((options) => {\n const {\n type,\n predicate,\n effect\n } = getListenerEntryPropsFrom(options);\n const entry = {\n id: nanoid(),\n effect,\n type,\n predicate,\n pending: /* @__PURE__ */ new Set(),\n unsubscribe: () => {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(22) : \"Unsubscribe not initialized\");\n }\n };\n return entry;\n}, {\n withTypes: () => createListenerEntry\n});\nvar findListenerEntry = (listenerMap, options) => {\n const {\n type,\n effect,\n predicate\n } = getListenerEntryPropsFrom(options);\n return Array.from(listenerMap.values()).find((entry) => {\n const matchPredicateOrType = typeof type === \"string\" ? entry.type === type : entry.predicate === predicate;\n return matchPredicateOrType && entry.effect === effect;\n });\n};\nvar cancelActiveListeners = (entry) => {\n entry.pending.forEach((controller) => {\n controller.abort(listenerCancelled);\n });\n};\nvar createClearListenerMiddleware = (listenerMap, executingListeners) => {\n return () => {\n for (const listener2 of executingListeners.keys()) {\n cancelActiveListeners(listener2);\n }\n listenerMap.clear();\n };\n};\nvar safelyNotifyError = (errorHandler, errorToNotify, errorInfo) => {\n try {\n errorHandler(errorToNotify, errorInfo);\n } catch (errorHandlerError) {\n setTimeout(() => {\n throw errorHandlerError;\n }, 0);\n }\n};\nvar addListener = /* @__PURE__ */ assign(/* @__PURE__ */ createAction(`${alm}/add`), {\n withTypes: () => addListener\n});\nvar clearAllListeners = /* @__PURE__ */ createAction(`${alm}/removeAll`);\nvar removeListener = /* @__PURE__ */ assign(/* @__PURE__ */ createAction(`${alm}/remove`), {\n withTypes: () => removeListener\n});\nvar defaultErrorHandler = (...args) => {\n console.error(`${alm}/error`, ...args);\n};\nvar createListenerMiddleware = (middlewareOptions = {}) => {\n const listenerMap = /* @__PURE__ */ new Map();\n const executingListeners = /* @__PURE__ */ new Map();\n const trackExecutingListener = (entry) => {\n const count = executingListeners.get(entry) ?? 0;\n executingListeners.set(entry, count + 1);\n };\n const untrackExecutingListener = (entry) => {\n const count = executingListeners.get(entry) ?? 1;\n if (count === 1) {\n executingListeners.delete(entry);\n } else {\n executingListeners.set(entry, count - 1);\n }\n };\n const {\n extra,\n onError = defaultErrorHandler\n } = middlewareOptions;\n assertFunction(onError, \"onError\");\n const insertEntry = (entry) => {\n entry.unsubscribe = () => listenerMap.delete(entry.id);\n listenerMap.set(entry.id, entry);\n return (cancelOptions) => {\n entry.unsubscribe();\n if (cancelOptions?.cancelActive) {\n cancelActiveListeners(entry);\n }\n };\n };\n const startListening = (options) => {\n const entry = findListenerEntry(listenerMap, options) ?? createListenerEntry(options);\n return insertEntry(entry);\n };\n assign(startListening, {\n withTypes: () => startListening\n });\n const stopListening = (options) => {\n const entry = findListenerEntry(listenerMap, options);\n if (entry) {\n entry.unsubscribe();\n if (options.cancelActive) {\n cancelActiveListeners(entry);\n }\n }\n return !!entry;\n };\n assign(stopListening, {\n withTypes: () => stopListening\n });\n const notifyListener = async (entry, action, api, getOriginalState) => {\n const internalTaskController = new AbortController();\n const take = createTakePattern(startListening, internalTaskController.signal);\n const autoJoinPromises = [];\n try {\n entry.pending.add(internalTaskController);\n trackExecutingListener(entry);\n await Promise.resolve(entry.effect(\n action,\n // Use assign() rather than ... to avoid extra helper functions added to bundle\n assign({}, api, {\n getOriginalState,\n condition: (predicate, timeout) => take(predicate, timeout).then(Boolean),\n take,\n delay: createDelay(internalTaskController.signal),\n pause: createPause(internalTaskController.signal),\n extra,\n signal: internalTaskController.signal,\n fork: createFork(internalTaskController.signal, autoJoinPromises),\n unsubscribe: entry.unsubscribe,\n subscribe: () => {\n listenerMap.set(entry.id, entry);\n },\n cancelActiveListeners: () => {\n entry.pending.forEach((controller, _, set) => {\n if (controller !== internalTaskController) {\n controller.abort(listenerCancelled);\n set.delete(controller);\n }\n });\n },\n cancel: () => {\n internalTaskController.abort(listenerCancelled);\n entry.pending.delete(internalTaskController);\n },\n throwIfCancelled: () => {\n validateActive(internalTaskController.signal);\n }\n })\n ));\n } catch (listenerError) {\n if (!(listenerError instanceof TaskAbortError)) {\n safelyNotifyError(onError, listenerError, {\n raisedBy: \"effect\"\n });\n }\n } finally {\n await Promise.all(autoJoinPromises);\n internalTaskController.abort(listenerCompleted);\n untrackExecutingListener(entry);\n entry.pending.delete(internalTaskController);\n }\n };\n const clearListenerMiddleware = createClearListenerMiddleware(listenerMap, executingListeners);\n const middleware = (api) => (next) => (action) => {\n if (!isAction(action)) {\n return next(action);\n }\n if (addListener.match(action)) {\n return startListening(action.payload);\n }\n if (clearAllListeners.match(action)) {\n clearListenerMiddleware();\n return;\n }\n if (removeListener.match(action)) {\n return stopListening(action.payload);\n }\n let originalState = api.getState();\n const getOriginalState = () => {\n if (originalState === INTERNAL_NIL_TOKEN) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(23) : `${alm}: getOriginalState can only be called synchronously`);\n }\n return originalState;\n };\n let result;\n try {\n result = next(action);\n if (listenerMap.size > 0) {\n const currentState = api.getState();\n const listenerEntries = Array.from(listenerMap.values());\n for (const entry of listenerEntries) {\n let runListener = false;\n try {\n runListener = entry.predicate(action, currentState, originalState);\n } catch (predicateError) {\n runListener = false;\n safelyNotifyError(onError, predicateError, {\n raisedBy: \"predicate\"\n });\n }\n if (!runListener) {\n continue;\n }\n notifyListener(entry, action, api, getOriginalState);\n }\n }\n } finally {\n originalState = INTERNAL_NIL_TOKEN;\n }\n return result;\n };\n return {\n middleware,\n startListening,\n stopListening,\n clearListeners: clearListenerMiddleware\n };\n};\n\n// src/dynamicMiddleware/index.ts\nvar createMiddlewareEntry = (middleware) => ({\n middleware,\n applied: /* @__PURE__ */ new Map()\n});\nvar matchInstance = (instanceId) => (action) => action?.meta?.instanceId === instanceId;\nvar createDynamicMiddleware = () => {\n const instanceId = nanoid();\n const middlewareMap = /* @__PURE__ */ new Map();\n const withMiddleware = Object.assign(createAction(\"dynamicMiddleware/add\", (...middlewares) => ({\n payload: middlewares,\n meta: {\n instanceId\n }\n })), {\n withTypes: () => withMiddleware\n });\n const addMiddleware = Object.assign(function addMiddleware2(...middlewares) {\n middlewares.forEach((middleware2) => {\n getOrInsertComputed(middlewareMap, middleware2, createMiddlewareEntry);\n });\n }, {\n withTypes: () => addMiddleware\n });\n const getFinalMiddleware = (api) => {\n const appliedMiddleware = Array.from(middlewareMap.values()).map((entry) => getOrInsertComputed(entry.applied, api, entry.middleware));\n return compose(...appliedMiddleware);\n };\n const isWithMiddleware = isAllOf(withMiddleware, matchInstance(instanceId));\n const middleware = (api) => (next) => (action) => {\n if (isWithMiddleware(action)) {\n addMiddleware(...action.payload);\n return api.dispatch;\n }\n return getFinalMiddleware(api)(next)(action);\n };\n return {\n middleware,\n addMiddleware,\n withMiddleware,\n instanceId\n };\n};\n\n// src/combineSlices.ts\nimport { combineReducers as combineReducers2 } from \"redux\";\nvar isSliceLike = (maybeSliceLike) => \"reducerPath\" in maybeSliceLike && typeof maybeSliceLike.reducerPath === \"string\";\nvar getReducers = (slices) => slices.flatMap((sliceOrMap) => isSliceLike(sliceOrMap) ? [[sliceOrMap.reducerPath, sliceOrMap.reducer]] : Object.entries(sliceOrMap));\nvar ORIGINAL_STATE = Symbol.for(\"rtk-state-proxy-original\");\nvar isStateProxy = (value) => !!value && !!value[ORIGINAL_STATE];\nvar stateProxyMap = /* @__PURE__ */ new WeakMap();\nvar createStateProxy = (state, reducerMap, initialStateCache) => getOrInsertComputed(stateProxyMap, state, () => new Proxy(state, {\n get: (target, prop, receiver) => {\n if (prop === ORIGINAL_STATE) return target;\n const result = Reflect.get(target, prop, receiver);\n if (typeof result === \"undefined\") {\n const cached = initialStateCache[prop];\n if (typeof cached !== \"undefined\") return cached;\n const reducer = reducerMap[prop];\n if (reducer) {\n const reducerResult = reducer(void 0, {\n type: nanoid()\n });\n if (typeof reducerResult === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(24) : `The slice reducer for key \"${prop.toString()}\" returned undefined when called for selector(). If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);\n }\n initialStateCache[prop] = reducerResult;\n return reducerResult;\n }\n }\n return result;\n }\n}));\nvar original = (state) => {\n if (!isStateProxy(state)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(25) : \"original must be used on state Proxy\");\n }\n return state[ORIGINAL_STATE];\n};\nvar emptyObject = {};\nvar noopReducer = (state = emptyObject) => state;\nfunction combineSlices(...slices) {\n const reducerMap = Object.fromEntries(getReducers(slices));\n const getReducer = () => Object.keys(reducerMap).length ? combineReducers2(reducerMap) : noopReducer;\n let reducer = getReducer();\n function combinedReducer(state, action) {\n return reducer(state, action);\n }\n combinedReducer.withLazyLoadedSlices = () => combinedReducer;\n const initialStateCache = {};\n const inject = (slice, config = {}) => {\n const {\n reducerPath,\n reducer: reducerToInject\n } = slice;\n const currentReducer = reducerMap[reducerPath];\n if (!config.overrideExisting && currentReducer && currentReducer !== reducerToInject) {\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\n console.error(`called \\`inject\\` to override already-existing reducer ${reducerPath} without specifying \\`overrideExisting: true\\``);\n }\n return combinedReducer;\n }\n if (config.overrideExisting && currentReducer !== reducerToInject) {\n delete initialStateCache[reducerPath];\n }\n reducerMap[reducerPath] = reducerToInject;\n reducer = getReducer();\n return combinedReducer;\n };\n const selector = Object.assign(function makeSelector(selectorFn, selectState) {\n return function selector2(state, ...args) {\n return selectorFn(createStateProxy(selectState ? selectState(state, ...args) : state, reducerMap, initialStateCache), ...args);\n };\n }, {\n original\n });\n return Object.assign(combinedReducer, {\n inject,\n selector\n });\n}\n\n// src/formatProdErrorMessage.ts\nfunction formatProdErrorMessage(code) {\n return `Minified Redux Toolkit error #${code}; visit https://redux-toolkit.js.org/Errors?code=${code} for the full message or use the non-minified dev environment for full errors. `;\n}\nexport {\n ReducerType,\n SHOULD_AUTOBATCH,\n TaskAbortError,\n Tuple,\n addListener,\n asyncThunkCreator,\n autoBatchEnhancer,\n buildCreateSlice,\n clearAllListeners,\n combineSlices,\n configureStore,\n createAction,\n createActionCreatorInvariantMiddleware,\n createAsyncThunk,\n createDraftSafeSelector,\n createDraftSafeSelectorCreator,\n createDynamicMiddleware,\n createEntityAdapter,\n createImmutableStateInvariantMiddleware,\n createListenerMiddleware,\n produce as createNextState,\n createReducer,\n createSelector,\n createSelectorCreator,\n createSerializableStateInvariantMiddleware,\n createSlice,\n current,\n findNonSerializableValue,\n formatProdErrorMessage,\n freeze,\n isActionCreator,\n isAllOf,\n isAnyOf,\n isAsyncThunkAction,\n isDraft,\n isFSA as isFluxStandardAction,\n isFulfilled,\n isImmutableDefault,\n isPending,\n isPlain,\n isRejected,\n isRejectedWithValue,\n lruMemoize,\n miniSerializeError,\n nanoid,\n original2 as original,\n prepareAutoBatched,\n removeListener,\n unwrapResult,\n weakMapMemoize\n};\n//# sourceMappingURL=redux-toolkit.modern.mjs.map","// src/getDotPath/getDotPath.ts\nfunction getDotPath(issue) {\n if (issue.path?.length) {\n let dotPath = \"\";\n for (const item of issue.path) {\n const key = typeof item === \"object\" ? item.key : item;\n if (typeof key === \"string\" || typeof key === \"number\") {\n if (dotPath) {\n dotPath += `.${key}`;\n } else {\n dotPath += key;\n }\n } else {\n return null;\n }\n }\n return dotPath;\n }\n return null;\n}\n\n// src/SchemaError/SchemaError.ts\nvar SchemaError = class extends Error {\n /**\n * The schema issues.\n */\n issues;\n /**\n * Creates a schema error with useful information.\n *\n * @param issues The schema issues.\n */\n constructor(issues) {\n super(issues[0].message);\n this.name = \"SchemaError\";\n this.issues = issues;\n }\n};\nexport {\n SchemaError,\n getDotPath\n};\n","// src/query/core/apiState.ts\nvar QueryStatus = /* @__PURE__ */ ((QueryStatus7) => {\n QueryStatus7[\"uninitialized\"] = \"uninitialized\";\n QueryStatus7[\"pending\"] = \"pending\";\n QueryStatus7[\"fulfilled\"] = \"fulfilled\";\n QueryStatus7[\"rejected\"] = \"rejected\";\n return QueryStatus7;\n})(QueryStatus || {});\nvar STATUS_UNINITIALIZED = \"uninitialized\" /* uninitialized */;\nvar STATUS_PENDING = \"pending\" /* pending */;\nvar STATUS_FULFILLED = \"fulfilled\" /* fulfilled */;\nvar STATUS_REJECTED = \"rejected\" /* rejected */;\nfunction getRequestStatusFlags(status) {\n return {\n status,\n isUninitialized: status === STATUS_UNINITIALIZED,\n isLoading: status === STATUS_PENDING,\n isSuccess: status === STATUS_FULFILLED,\n isError: status === STATUS_REJECTED\n };\n}\n\n// src/query/core/rtkImports.ts\nimport { createAction, createSlice, createSelector, createAsyncThunk, combineReducers, createNextState, isAnyOf, isAllOf, isAction, isPending, isRejected, isFulfilled, isRejectedWithValue, isAsyncThunkAction, prepareAutoBatched, SHOULD_AUTOBATCH, isPlainObject, nanoid } from \"@reduxjs/toolkit\";\n\n// src/query/utils/copyWithStructuralSharing.ts\nvar isPlainObject2 = isPlainObject;\nfunction copyWithStructuralSharing(oldObj, newObj) {\n if (oldObj === newObj || !(isPlainObject2(oldObj) && isPlainObject2(newObj) || Array.isArray(oldObj) && Array.isArray(newObj))) {\n return newObj;\n }\n const newKeys = Object.keys(newObj);\n const oldKeys = Object.keys(oldObj);\n let isSameObject = newKeys.length === oldKeys.length;\n const mergeObj = Array.isArray(newObj) ? [] : {};\n for (const key of newKeys) {\n mergeObj[key] = copyWithStructuralSharing(oldObj[key], newObj[key]);\n if (isSameObject) isSameObject = oldObj[key] === mergeObj[key];\n }\n return isSameObject ? oldObj : mergeObj;\n}\n\n// src/query/utils/filterMap.ts\nfunction filterMap(array, predicate, mapper) {\n return array.reduce((acc, item, i) => {\n if (predicate(item, i)) {\n acc.push(mapper(item, i));\n }\n return acc;\n }, []).flat();\n}\n\n// src/query/utils/isAbsoluteUrl.ts\nfunction isAbsoluteUrl(url) {\n return new RegExp(`(^|:)//`).test(url);\n}\n\n// src/query/utils/isDocumentVisible.ts\nfunction isDocumentVisible() {\n if (typeof document === \"undefined\") {\n return true;\n }\n return document.visibilityState !== \"hidden\";\n}\n\n// src/query/utils/isNotNullish.ts\nfunction isNotNullish(v) {\n return v != null;\n}\nfunction filterNullishValues(map) {\n return [...map?.values() ?? []].filter(isNotNullish);\n}\n\n// src/query/utils/isOnline.ts\nfunction isOnline() {\n return typeof navigator === \"undefined\" ? true : navigator.onLine === void 0 ? true : navigator.onLine;\n}\n\n// src/query/utils/joinUrls.ts\nvar withoutTrailingSlash = (url) => url.replace(/\\/$/, \"\");\nvar withoutLeadingSlash = (url) => url.replace(/^\\//, \"\");\nfunction joinUrls(base, url) {\n if (!base) {\n return url;\n }\n if (!url) {\n return base;\n }\n if (isAbsoluteUrl(url)) {\n return url;\n }\n const delimiter = base.endsWith(\"/\") || !url.startsWith(\"?\") ? \"/\" : \"\";\n base = withoutTrailingSlash(base);\n url = withoutLeadingSlash(url);\n return `${base}${delimiter}${url}`;\n}\n\n// src/query/utils/getOrInsert.ts\nfunction getOrInsertComputed(map, key, compute) {\n if (map.has(key)) return map.get(key);\n return map.set(key, compute(key)).get(key);\n}\nvar createNewMap = () => /* @__PURE__ */ new Map();\n\n// src/query/utils/signals.ts\nvar timeoutSignal = (milliseconds) => {\n const abortController = new AbortController();\n setTimeout(() => {\n const message = \"signal timed out\";\n const name = \"TimeoutError\";\n abortController.abort(\n // some environments (React Native, Node) don't have DOMException\n typeof DOMException !== \"undefined\" ? new DOMException(message, name) : Object.assign(new Error(message), {\n name\n })\n );\n }, milliseconds);\n return abortController.signal;\n};\nvar anySignal = (...signals) => {\n for (const signal of signals) if (signal.aborted) return AbortSignal.abort(signal.reason);\n const abortController = new AbortController();\n for (const signal of signals) {\n signal.addEventListener(\"abort\", () => abortController.abort(signal.reason), {\n signal: abortController.signal,\n once: true\n });\n }\n return abortController.signal;\n};\n\n// src/query/fetchBaseQuery.ts\nvar defaultFetchFn = (...args) => fetch(...args);\nvar defaultValidateStatus = (response) => response.status >= 200 && response.status <= 299;\nvar defaultIsJsonContentType = (headers) => (\n /*applicat*/\n /ion\\/(vnd\\.api\\+)?json/.test(headers.get(\"content-type\") || \"\")\n);\nfunction stripUndefined(obj) {\n if (!isPlainObject(obj)) {\n return obj;\n }\n const copy = {\n ...obj\n };\n for (const [k, v] of Object.entries(copy)) {\n if (v === void 0) delete copy[k];\n }\n return copy;\n}\nvar isJsonifiable = (body) => typeof body === \"object\" && (isPlainObject(body) || Array.isArray(body) || typeof body.toJSON === \"function\");\nfunction fetchBaseQuery({\n baseUrl,\n prepareHeaders = (x) => x,\n fetchFn = defaultFetchFn,\n paramsSerializer,\n isJsonContentType = defaultIsJsonContentType,\n jsonContentType = \"application/json\",\n jsonReplacer,\n timeout: defaultTimeout,\n responseHandler: globalResponseHandler,\n validateStatus: globalValidateStatus,\n ...baseFetchOptions\n} = {}) {\n if (typeof fetch === \"undefined\" && fetchFn === defaultFetchFn) {\n console.warn(\"Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments.\");\n }\n return async (arg, api, extraOptions) => {\n const {\n getState,\n extra,\n endpoint,\n forced,\n type\n } = api;\n let meta;\n let {\n url,\n headers = new Headers(baseFetchOptions.headers),\n params = void 0,\n responseHandler = globalResponseHandler ?? \"json\",\n validateStatus = globalValidateStatus ?? defaultValidateStatus,\n timeout = defaultTimeout,\n ...rest\n } = typeof arg == \"string\" ? {\n url: arg\n } : arg;\n let config = {\n ...baseFetchOptions,\n signal: timeout ? anySignal(api.signal, timeoutSignal(timeout)) : api.signal,\n ...rest\n };\n headers = new Headers(stripUndefined(headers));\n config.headers = await prepareHeaders(headers, {\n getState,\n arg,\n extra,\n endpoint,\n forced,\n type,\n extraOptions\n }) || headers;\n const bodyIsJsonifiable = isJsonifiable(config.body);\n if (config.body != null && !bodyIsJsonifiable && typeof config.body !== \"string\") {\n config.headers.delete(\"content-type\");\n }\n if (!config.headers.has(\"content-type\") && bodyIsJsonifiable) {\n config.headers.set(\"content-type\", jsonContentType);\n }\n if (bodyIsJsonifiable && isJsonContentType(config.headers)) {\n config.body = JSON.stringify(config.body, jsonReplacer);\n }\n if (!config.headers.has(\"accept\")) {\n if (responseHandler === \"json\") {\n config.headers.set(\"accept\", \"application/json\");\n } else if (responseHandler === \"text\") {\n config.headers.set(\"accept\", \"text/plain, text/html, */*\");\n }\n }\n if (params) {\n const divider = ~url.indexOf(\"?\") ? \"&\" : \"?\";\n const query = paramsSerializer ? paramsSerializer(params) : new URLSearchParams(stripUndefined(params));\n url += divider + query;\n }\n url = joinUrls(baseUrl, url);\n const request = new Request(url, config);\n const requestClone = new Request(url, config);\n meta = {\n request: requestClone\n };\n let response;\n try {\n response = await fetchFn(request);\n } catch (e) {\n return {\n error: {\n status: (e instanceof Error || typeof DOMException !== \"undefined\" && e instanceof DOMException) && e.name === \"TimeoutError\" ? \"TIMEOUT_ERROR\" : \"FETCH_ERROR\",\n error: String(e)\n },\n meta\n };\n }\n const responseClone = response.clone();\n meta.response = responseClone;\n let resultData;\n let responseText = \"\";\n try {\n let handleResponseError;\n await Promise.all([\n handleResponse(response, responseHandler).then((r) => resultData = r, (e) => handleResponseError = e),\n // see https://github.com/node-fetch/node-fetch/issues/665#issuecomment-538995182\n // we *have* to \"use up\" both streams at the same time or they will stop running in node-fetch scenarios\n responseClone.text().then((r) => responseText = r, () => {\n })\n ]);\n if (handleResponseError) throw handleResponseError;\n } catch (e) {\n return {\n error: {\n status: \"PARSING_ERROR\",\n originalStatus: response.status,\n data: responseText,\n error: String(e)\n },\n meta\n };\n }\n return validateStatus(response, resultData) ? {\n data: resultData,\n meta\n } : {\n error: {\n status: response.status,\n data: resultData\n },\n meta\n };\n };\n async function handleResponse(response, responseHandler) {\n if (typeof responseHandler === \"function\") {\n return responseHandler(response);\n }\n if (responseHandler === \"content-type\") {\n responseHandler = isJsonContentType(response.headers) ? \"json\" : \"text\";\n }\n if (responseHandler === \"json\") {\n const text = await response.text();\n return text.length ? JSON.parse(text) : null;\n }\n return response.text();\n }\n}\n\n// src/query/HandledError.ts\nvar HandledError = class {\n constructor(value, meta = void 0) {\n this.value = value;\n this.meta = meta;\n }\n};\n\n// src/query/retry.ts\nasync function defaultBackoff(attempt = 0, maxRetries = 5, signal) {\n const attempts = Math.min(attempt, maxRetries);\n const timeout = ~~((Math.random() + 0.4) * (300 << attempts));\n await new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => resolve(), timeout);\n if (signal) {\n const abortHandler = () => {\n clearTimeout(timeoutId);\n reject(new Error(\"Aborted\"));\n };\n if (signal.aborted) {\n clearTimeout(timeoutId);\n reject(new Error(\"Aborted\"));\n } else {\n signal.addEventListener(\"abort\", abortHandler, {\n once: true\n });\n }\n }\n });\n}\nfunction fail(error, meta) {\n throw Object.assign(new HandledError({\n error,\n meta\n }), {\n throwImmediately: true\n });\n}\nfunction failIfAborted(signal) {\n if (signal.aborted) {\n fail({\n status: \"CUSTOM_ERROR\",\n error: \"Aborted\"\n });\n }\n}\nvar EMPTY_OPTIONS = {};\nvar retryWithBackoff = (baseQuery, defaultOptions) => async (args, api, extraOptions) => {\n const possibleMaxRetries = [5, (defaultOptions || EMPTY_OPTIONS).maxRetries, (extraOptions || EMPTY_OPTIONS).maxRetries].filter((x) => x !== void 0);\n const [maxRetries] = possibleMaxRetries.slice(-1);\n const defaultRetryCondition = (_, __, {\n attempt\n }) => attempt <= maxRetries;\n const options = {\n maxRetries,\n backoff: defaultBackoff,\n retryCondition: defaultRetryCondition,\n ...defaultOptions,\n ...extraOptions\n };\n let retry2 = 0;\n while (true) {\n failIfAborted(api.signal);\n try {\n const result = await baseQuery(args, api, extraOptions);\n if (result.error) {\n throw new HandledError(result);\n }\n return result;\n } catch (e) {\n retry2++;\n if (e.throwImmediately) {\n if (e instanceof HandledError) {\n return e.value;\n }\n throw e;\n }\n if (e instanceof HandledError) {\n if (!options.retryCondition(e.value.error, args, {\n attempt: retry2,\n baseQueryApi: api,\n extraOptions\n })) {\n return e.value;\n }\n } else {\n if (retry2 > options.maxRetries) {\n return {\n error: e\n };\n }\n }\n failIfAborted(api.signal);\n try {\n await options.backoff(retry2, options.maxRetries, api.signal);\n } catch (backoffError) {\n failIfAborted(api.signal);\n throw backoffError;\n }\n }\n }\n};\nvar retry = /* @__PURE__ */ Object.assign(retryWithBackoff, {\n fail\n});\n\n// src/query/core/setupListeners.ts\nvar INTERNAL_PREFIX = \"__rtkq/\";\nvar ONLINE = \"online\";\nvar OFFLINE = \"offline\";\nvar FOCUS = \"focus\";\nvar FOCUSED = \"focused\";\nvar VISIBILITYCHANGE = \"visibilitychange\";\nvar onFocus = /* @__PURE__ */ createAction(`${INTERNAL_PREFIX}${FOCUSED}`);\nvar onFocusLost = /* @__PURE__ */ createAction(`${INTERNAL_PREFIX}un${FOCUSED}`);\nvar onOnline = /* @__PURE__ */ createAction(`${INTERNAL_PREFIX}${ONLINE}`);\nvar onOffline = /* @__PURE__ */ createAction(`${INTERNAL_PREFIX}${OFFLINE}`);\nvar actions = {\n onFocus,\n onFocusLost,\n onOnline,\n onOffline\n};\nvar initialized = false;\nfunction setupListeners(dispatch, customHandler) {\n function defaultHandler() {\n const [handleFocus, handleFocusLost, handleOnline, handleOffline] = [onFocus, onFocusLost, onOnline, onOffline].map((action) => () => dispatch(action()));\n const handleVisibilityChange = () => {\n if (window.document.visibilityState === \"visible\") {\n handleFocus();\n } else {\n handleFocusLost();\n }\n };\n let unsubscribe = () => {\n initialized = false;\n };\n if (!initialized) {\n if (typeof window !== \"undefined\" && window.addEventListener) {\n let updateListeners2 = function(add) {\n Object.entries(handlers).forEach(([event, handler]) => {\n if (add) {\n window.addEventListener(event, handler, false);\n } else {\n window.removeEventListener(event, handler);\n }\n });\n };\n var updateListeners = updateListeners2;\n const handlers = {\n [FOCUS]: handleFocus,\n [VISIBILITYCHANGE]: handleVisibilityChange,\n [ONLINE]: handleOnline,\n [OFFLINE]: handleOffline\n };\n updateListeners2(true);\n initialized = true;\n unsubscribe = () => {\n updateListeners2(false);\n initialized = false;\n };\n }\n }\n return unsubscribe;\n }\n return customHandler ? customHandler(dispatch, actions) : defaultHandler();\n}\n\n// src/query/endpointDefinitions.ts\nvar ENDPOINT_QUERY = \"query\" /* query */;\nvar ENDPOINT_MUTATION = \"mutation\" /* mutation */;\nvar ENDPOINT_INFINITEQUERY = \"infinitequery\" /* infinitequery */;\nfunction isQueryDefinition(e) {\n return e.type === ENDPOINT_QUERY;\n}\nfunction isMutationDefinition(e) {\n return e.type === ENDPOINT_MUTATION;\n}\nfunction isInfiniteQueryDefinition(e) {\n return e.type === ENDPOINT_INFINITEQUERY;\n}\nfunction isAnyQueryDefinition(e) {\n return isQueryDefinition(e) || isInfiniteQueryDefinition(e);\n}\nfunction calculateProvidedBy(description, result, error, queryArg, meta, assertTagTypes) {\n const finalDescription = isFunction(description) ? description(result, error, queryArg, meta) : description;\n if (finalDescription) {\n return filterMap(finalDescription, isNotNullish, (tag) => assertTagTypes(expandTagDescription(tag)));\n }\n return [];\n}\nfunction isFunction(t) {\n return typeof t === \"function\";\n}\nfunction expandTagDescription(description) {\n return typeof description === \"string\" ? {\n type: description\n } : description;\n}\n\n// src/query/utils/immerImports.ts\nimport { current, isDraft, applyPatches, original, isDraftable, produceWithPatches, enablePatches } from \"immer\";\n\n// src/query/core/buildInitiate.ts\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"@reduxjs/toolkit\";\n\n// src/tsHelpers.ts\nfunction asSafePromise(promise, fallback) {\n return promise.catch(fallback);\n}\n\n// src/query/apiTypes.ts\nvar getEndpointDefinition = (context, endpointName) => context.endpointDefinitions[endpointName];\n\n// src/query/core/buildInitiate.ts\nvar forceQueryFnSymbol = Symbol(\"forceQueryFn\");\nvar isUpsertQuery = (arg) => typeof arg[forceQueryFnSymbol] === \"function\";\nfunction buildInitiate({\n serializeQueryArgs,\n queryThunk,\n infiniteQueryThunk,\n mutationThunk,\n api,\n context,\n getInternalState\n}) {\n const getRunningQueries = (dispatch) => getInternalState(dispatch)?.runningQueries;\n const getRunningMutations = (dispatch) => getInternalState(dispatch)?.runningMutations;\n const {\n unsubscribeQueryResult,\n removeMutationResult,\n updateSubscriptionOptions\n } = api.internalActions;\n return {\n buildInitiateQuery,\n buildInitiateInfiniteQuery,\n buildInitiateMutation,\n getRunningQueryThunk,\n getRunningMutationThunk,\n getRunningQueriesThunk,\n getRunningMutationsThunk\n };\n function getRunningQueryThunk(endpointName, queryArgs) {\n return (dispatch) => {\n const endpointDefinition = getEndpointDefinition(context, endpointName);\n const queryCacheKey = serializeQueryArgs({\n queryArgs,\n endpointDefinition,\n endpointName\n });\n return getRunningQueries(dispatch)?.get(queryCacheKey);\n };\n }\n function getRunningMutationThunk(_endpointName, fixedCacheKeyOrRequestId) {\n return (dispatch) => {\n return getRunningMutations(dispatch)?.get(fixedCacheKeyOrRequestId);\n };\n }\n function getRunningQueriesThunk() {\n return (dispatch) => filterNullishValues(getRunningQueries(dispatch));\n }\n function getRunningMutationsThunk() {\n return (dispatch) => filterNullishValues(getRunningMutations(dispatch));\n }\n function middlewareWarning(dispatch) {\n if (process.env.NODE_ENV !== \"production\") {\n if (middlewareWarning.triggered) return;\n const returnedValue = dispatch(api.internalActions.internal_getRTKQSubscriptions());\n middlewareWarning.triggered = true;\n if (typeof returnedValue !== \"object\" || typeof returnedValue?.type === \"string\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(34) : `Warning: Middleware for RTK-Query API at reducerPath \"${api.reducerPath}\" has not been added to the store.\nYou must add the middleware for RTK-Query to function correctly!`);\n }\n }\n }\n function buildInitiateAnyQuery(endpointName, endpointDefinition) {\n const queryAction = (arg, {\n subscribe = true,\n forceRefetch,\n subscriptionOptions,\n [forceQueryFnSymbol]: forceQueryFn,\n ...rest\n } = {}) => (dispatch, getState) => {\n const queryCacheKey = serializeQueryArgs({\n queryArgs: arg,\n endpointDefinition,\n endpointName\n });\n let thunk;\n const commonThunkArgs = {\n ...rest,\n type: ENDPOINT_QUERY,\n subscribe,\n forceRefetch,\n subscriptionOptions,\n endpointName,\n originalArgs: arg,\n queryCacheKey,\n [forceQueryFnSymbol]: forceQueryFn\n };\n if (isQueryDefinition(endpointDefinition)) {\n thunk = queryThunk(commonThunkArgs);\n } else {\n const {\n direction,\n initialPageParam,\n refetchCachedPages\n } = rest;\n thunk = infiniteQueryThunk({\n ...commonThunkArgs,\n // Supply these even if undefined. This helps with a field existence\n // check over in `buildSlice.ts`\n direction,\n initialPageParam,\n refetchCachedPages\n });\n }\n const selector = api.endpoints[endpointName].select(arg);\n const thunkResult = dispatch(thunk);\n const stateAfter = selector(getState());\n middlewareWarning(dispatch);\n const {\n requestId,\n abort\n } = thunkResult;\n const skippedSynchronously = stateAfter.requestId !== requestId;\n const runningQuery = getRunningQueries(dispatch)?.get(queryCacheKey);\n const selectFromState = () => selector(getState());\n const statePromise = Object.assign(forceQueryFn ? (\n // a query has been forced (upsertQueryData)\n // -> we want to resolve it once data has been written with the data that will be written\n thunkResult.then(selectFromState)\n ) : skippedSynchronously && !runningQuery ? (\n // a query has been skipped due to a condition and we do not have any currently running query\n // -> we want to resolve it immediately with the current data\n Promise.resolve(stateAfter)\n ) : (\n // query just started or one is already in flight\n // -> wait for the running query, then resolve with data from after that\n Promise.all([runningQuery, thunkResult]).then(selectFromState)\n ), {\n arg,\n requestId,\n subscriptionOptions,\n queryCacheKey,\n abort,\n async unwrap() {\n const result = await statePromise;\n if (result.isError) {\n throw result.error;\n }\n return result.data;\n },\n refetch: (options) => dispatch(queryAction(arg, {\n subscribe: false,\n forceRefetch: true,\n ...options\n })),\n unsubscribe() {\n if (subscribe) dispatch(unsubscribeQueryResult({\n queryCacheKey,\n requestId\n }));\n },\n updateSubscriptionOptions(options) {\n statePromise.subscriptionOptions = options;\n dispatch(updateSubscriptionOptions({\n endpointName,\n requestId,\n queryCacheKey,\n options\n }));\n }\n });\n if (!runningQuery && !skippedSynchronously && !forceQueryFn) {\n const runningQueries = getRunningQueries(dispatch);\n runningQueries.set(queryCacheKey, statePromise);\n statePromise.then(() => {\n runningQueries.delete(queryCacheKey);\n });\n }\n return statePromise;\n };\n return queryAction;\n }\n function buildInitiateQuery(endpointName, endpointDefinition) {\n const queryAction = buildInitiateAnyQuery(endpointName, endpointDefinition);\n return queryAction;\n }\n function buildInitiateInfiniteQuery(endpointName, endpointDefinition) {\n const infiniteQueryAction = buildInitiateAnyQuery(endpointName, endpointDefinition);\n return infiniteQueryAction;\n }\n function buildInitiateMutation(endpointName) {\n return (arg, {\n track = true,\n fixedCacheKey\n } = {}) => (dispatch, getState) => {\n const thunk = mutationThunk({\n type: \"mutation\",\n endpointName,\n originalArgs: arg,\n track,\n fixedCacheKey\n });\n const thunkResult = dispatch(thunk);\n middlewareWarning(dispatch);\n const {\n requestId,\n abort,\n unwrap\n } = thunkResult;\n const returnValuePromise = asSafePromise(thunkResult.unwrap().then((data) => ({\n data\n })), (error) => ({\n error\n }));\n const reset = () => {\n dispatch(removeMutationResult({\n requestId,\n fixedCacheKey\n }));\n };\n const ret = Object.assign(returnValuePromise, {\n arg: thunkResult.arg,\n requestId,\n abort,\n unwrap,\n reset\n });\n const runningMutations = getRunningMutations(dispatch);\n runningMutations.set(requestId, ret);\n ret.then(() => {\n runningMutations.delete(requestId);\n });\n if (fixedCacheKey) {\n runningMutations.set(fixedCacheKey, ret);\n ret.then(() => {\n if (runningMutations.get(fixedCacheKey) === ret) {\n runningMutations.delete(fixedCacheKey);\n }\n });\n }\n return ret;\n };\n }\n}\n\n// src/query/standardSchema.ts\nimport { SchemaError } from \"@standard-schema/utils\";\nvar NamedSchemaError = class extends SchemaError {\n constructor(issues, value, schemaName, _bqMeta) {\n super(issues);\n this.value = value;\n this.schemaName = schemaName;\n this._bqMeta = _bqMeta;\n }\n};\nvar shouldSkip = (skipSchemaValidation, schemaName) => Array.isArray(skipSchemaValidation) ? skipSchemaValidation.includes(schemaName) : !!skipSchemaValidation;\nasync function parseWithSchema(schema, data, schemaName, bqMeta) {\n const result = await schema[\"~standard\"].validate(data);\n if (result.issues) {\n throw new NamedSchemaError(result.issues, data, schemaName, bqMeta);\n }\n return result.value;\n}\n\n// src/query/core/buildThunks.ts\nfunction defaultTransformResponse(baseQueryReturnValue) {\n return baseQueryReturnValue;\n}\nvar addShouldAutoBatch = (arg = {}) => {\n return {\n ...arg,\n [SHOULD_AUTOBATCH]: true\n };\n};\nfunction buildThunks({\n reducerPath,\n baseQuery,\n context: {\n endpointDefinitions\n },\n serializeQueryArgs,\n api,\n assertTagType,\n selectors,\n onSchemaFailure,\n catchSchemaFailure: globalCatchSchemaFailure,\n skipSchemaValidation: globalSkipSchemaValidation\n}) {\n const patchQueryData = (endpointName, arg, patches, updateProvided) => (dispatch, getState) => {\n const endpointDefinition = endpointDefinitions[endpointName];\n const queryCacheKey = serializeQueryArgs({\n queryArgs: arg,\n endpointDefinition,\n endpointName\n });\n dispatch(api.internalActions.queryResultPatched({\n queryCacheKey,\n patches\n }));\n if (!updateProvided) {\n return;\n }\n const newValue = api.endpoints[endpointName].select(arg)(\n // Work around TS 4.1 mismatch\n getState()\n );\n const providedTags = calculateProvidedBy(endpointDefinition.providesTags, newValue.data, void 0, arg, {}, assertTagType);\n dispatch(api.internalActions.updateProvidedBy([{\n queryCacheKey,\n providedTags\n }]));\n };\n function addToStart(items, item, max = 0) {\n const newItems = [item, ...items];\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n }\n function addToEnd(items, item, max = 0) {\n const newItems = [...items, item];\n return max && newItems.length > max ? newItems.slice(1) : newItems;\n }\n const updateQueryData = (endpointName, arg, updateRecipe, updateProvided = true) => (dispatch, getState) => {\n const endpointDefinition = api.endpoints[endpointName];\n const currentState = endpointDefinition.select(arg)(\n // Work around TS 4.1 mismatch\n getState()\n );\n const ret = {\n patches: [],\n inversePatches: [],\n undo: () => dispatch(api.util.patchQueryData(endpointName, arg, ret.inversePatches, updateProvided))\n };\n if (currentState.status === STATUS_UNINITIALIZED) {\n return ret;\n }\n let newValue;\n if (\"data\" in currentState) {\n if (isDraftable(currentState.data)) {\n const [value, patches, inversePatches] = produceWithPatches(currentState.data, updateRecipe);\n ret.patches.push(...patches);\n ret.inversePatches.push(...inversePatches);\n newValue = value;\n } else {\n newValue = updateRecipe(currentState.data);\n ret.patches.push({\n op: \"replace\",\n path: [],\n value: newValue\n });\n ret.inversePatches.push({\n op: \"replace\",\n path: [],\n value: currentState.data\n });\n }\n }\n if (ret.patches.length === 0) {\n return ret;\n }\n dispatch(api.util.patchQueryData(endpointName, arg, ret.patches, updateProvided));\n return ret;\n };\n const upsertQueryData = (endpointName, arg, value) => (dispatch) => {\n const res = dispatch(api.endpoints[endpointName].initiate(arg, {\n subscribe: false,\n forceRefetch: true,\n [forceQueryFnSymbol]: () => ({\n data: value\n })\n }));\n return res;\n };\n const getTransformCallbackForEndpoint = (endpointDefinition, transformFieldName) => {\n return endpointDefinition.query && endpointDefinition[transformFieldName] ? endpointDefinition[transformFieldName] : defaultTransformResponse;\n };\n const executeEndpoint = async (arg, {\n signal,\n abort,\n rejectWithValue,\n fulfillWithValue,\n dispatch,\n getState,\n extra\n }) => {\n const endpointDefinition = endpointDefinitions[arg.endpointName];\n const {\n metaSchema,\n skipSchemaValidation = globalSkipSchemaValidation\n } = endpointDefinition;\n const isQuery = arg.type === ENDPOINT_QUERY;\n try {\n let transformResponse = defaultTransformResponse;\n const baseQueryApi = {\n signal,\n abort,\n dispatch,\n getState,\n extra,\n endpoint: arg.endpointName,\n type: arg.type,\n forced: isQuery ? isForcedQuery(arg, getState()) : void 0,\n queryCacheKey: isQuery ? arg.queryCacheKey : void 0\n };\n const forceQueryFn = isQuery ? arg[forceQueryFnSymbol] : void 0;\n let finalQueryReturnValue;\n const fetchPage = async (data, param, maxPages, previous) => {\n if (param == null && data.pages.length) {\n return Promise.resolve({\n data\n });\n }\n const finalQueryArg = {\n queryArg: arg.originalArgs,\n pageParam: param\n };\n const pageResponse = await executeRequest(finalQueryArg);\n const addTo = previous ? addToStart : addToEnd;\n return {\n data: {\n pages: addTo(data.pages, pageResponse.data, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n },\n meta: pageResponse.meta\n };\n };\n async function executeRequest(finalQueryArg) {\n let result;\n const {\n extraOptions,\n argSchema,\n rawResponseSchema,\n responseSchema\n } = endpointDefinition;\n if (argSchema && !shouldSkip(skipSchemaValidation, \"arg\")) {\n finalQueryArg = await parseWithSchema(\n argSchema,\n finalQueryArg,\n \"argSchema\",\n {}\n // we don't have a meta yet, so we can't pass it\n );\n }\n if (forceQueryFn) {\n result = forceQueryFn();\n } else if (endpointDefinition.query) {\n transformResponse = getTransformCallbackForEndpoint(endpointDefinition, \"transformResponse\");\n result = await baseQuery(endpointDefinition.query(finalQueryArg), baseQueryApi, extraOptions);\n } else {\n result = await endpointDefinition.queryFn(finalQueryArg, baseQueryApi, extraOptions, (arg2) => baseQuery(arg2, baseQueryApi, extraOptions));\n }\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\n const what = endpointDefinition.query ? \"`baseQuery`\" : \"`queryFn`\";\n let err;\n if (!result) {\n err = `${what} did not return anything.`;\n } else if (typeof result !== \"object\") {\n err = `${what} did not return an object.`;\n } else if (result.error && result.data) {\n err = `${what} returned an object containing both \\`error\\` and \\`result\\`.`;\n } else if (result.error === void 0 && result.data === void 0) {\n err = `${what} returned an object containing neither a valid \\`error\\` and \\`result\\`. At least one of them should not be \\`undefined\\``;\n } else {\n for (const key of Object.keys(result)) {\n if (key !== \"error\" && key !== \"data\" && key !== \"meta\") {\n err = `The object returned by ${what} has the unknown property ${key}.`;\n break;\n }\n }\n }\n if (err) {\n console.error(`Error encountered handling the endpoint ${arg.endpointName}.\n ${err}\n It needs to return an object with either the shape \\`{ data: <value> }\\` or \\`{ error: <value> }\\` that may contain an optional \\`meta\\` property.\n Object returned was:`, result);\n }\n }\n if (result.error) throw new HandledError(result.error, result.meta);\n let {\n data\n } = result;\n if (rawResponseSchema && !shouldSkip(skipSchemaValidation, \"rawResponse\")) {\n data = await parseWithSchema(rawResponseSchema, result.data, \"rawResponseSchema\", result.meta);\n }\n let transformedResponse = await transformResponse(data, result.meta, finalQueryArg);\n if (responseSchema && !shouldSkip(skipSchemaValidation, \"response\")) {\n transformedResponse = await parseWithSchema(responseSchema, transformedResponse, \"responseSchema\", result.meta);\n }\n return {\n ...result,\n data: transformedResponse\n };\n }\n if (isQuery && \"infiniteQueryOptions\" in endpointDefinition) {\n const {\n infiniteQueryOptions\n } = endpointDefinition;\n const {\n maxPages = Infinity\n } = infiniteQueryOptions;\n const refetchCachedPages = arg.refetchCachedPages ?? infiniteQueryOptions.refetchCachedPages ?? true;\n let result;\n const blankData = {\n pages: [],\n pageParams: []\n };\n const cachedData = selectors.selectQueryEntry(getState(), arg.queryCacheKey)?.data;\n const isForcedQueryNeedingRefetch = (\n // arg.forceRefetch\n isForcedQuery(arg, getState()) && !arg.direction\n );\n const existingData = isForcedQueryNeedingRefetch || !cachedData ? blankData : cachedData;\n if (\"direction\" in arg && arg.direction && existingData.pages.length) {\n const previous = arg.direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const param = pageParamFn(infiniteQueryOptions, existingData, arg.originalArgs);\n result = await fetchPage(existingData, param, maxPages, previous);\n } else {\n const {\n initialPageParam = infiniteQueryOptions.initialPageParam\n } = arg;\n const cachedPageParams = cachedData?.pageParams ?? [];\n const firstPageParam = cachedPageParams[0] ?? initialPageParam;\n const totalPages = cachedPageParams.length;\n result = await fetchPage(existingData, firstPageParam, maxPages);\n if (forceQueryFn) {\n result = {\n data: result.data.pages[0]\n };\n }\n if (refetchCachedPages) {\n for (let i = 1; i < totalPages; i++) {\n const param = getNextPageParam(infiniteQueryOptions, result.data, arg.originalArgs);\n result = await fetchPage(result.data, param, maxPages);\n }\n }\n }\n finalQueryReturnValue = result;\n } else {\n finalQueryReturnValue = await executeRequest(arg.originalArgs);\n }\n if (metaSchema && !shouldSkip(skipSchemaValidation, \"meta\") && finalQueryReturnValue.meta) {\n finalQueryReturnValue.meta = await parseWithSchema(metaSchema, finalQueryReturnValue.meta, \"metaSchema\", finalQueryReturnValue.meta);\n }\n return fulfillWithValue(finalQueryReturnValue.data, addShouldAutoBatch({\n fulfilledTimeStamp: Date.now(),\n baseQueryMeta: finalQueryReturnValue.meta\n }));\n } catch (error) {\n let caughtError = error;\n if (caughtError instanceof HandledError) {\n let transformErrorResponse = getTransformCallbackForEndpoint(endpointDefinition, \"transformErrorResponse\");\n const {\n rawErrorResponseSchema,\n errorResponseSchema\n } = endpointDefinition;\n let {\n value,\n meta\n } = caughtError;\n try {\n if (rawErrorResponseSchema && !shouldSkip(skipSchemaValidation, \"rawErrorResponse\")) {\n value = await parseWithSchema(rawErrorResponseSchema, value, \"rawErrorResponseSchema\", meta);\n }\n if (metaSchema && !shouldSkip(skipSchemaValidation, \"meta\")) {\n meta = await parseWithSchema(metaSchema, meta, \"metaSchema\", meta);\n }\n let transformedErrorResponse = await transformErrorResponse(value, meta, arg.originalArgs);\n if (errorResponseSchema && !shouldSkip(skipSchemaValidation, \"errorResponse\")) {\n transformedErrorResponse = await parseWithSchema(errorResponseSchema, transformedErrorResponse, \"errorResponseSchema\", meta);\n }\n return rejectWithValue(transformedErrorResponse, addShouldAutoBatch({\n baseQueryMeta: meta\n }));\n } catch (e) {\n caughtError = e;\n }\n }\n try {\n if (caughtError instanceof NamedSchemaError) {\n const info = {\n endpoint: arg.endpointName,\n arg: arg.originalArgs,\n type: arg.type,\n queryCacheKey: isQuery ? arg.queryCacheKey : void 0\n };\n endpointDefinition.onSchemaFailure?.(caughtError, info);\n onSchemaFailure?.(caughtError, info);\n const {\n catchSchemaFailure = globalCatchSchemaFailure\n } = endpointDefinition;\n if (catchSchemaFailure) {\n return rejectWithValue(catchSchemaFailure(caughtError, info), addShouldAutoBatch({\n baseQueryMeta: caughtError._bqMeta\n }));\n }\n }\n } catch (e) {\n caughtError = e;\n }\n if (typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\") {\n console.error(`An unhandled error occurred processing a request for the endpoint \"${arg.endpointName}\".\nIn the case of an unhandled error, no tags will be \"provided\" or \"invalidated\".`, caughtError);\n } else {\n console.error(caughtError);\n }\n throw caughtError;\n }\n };\n function isForcedQuery(arg, state) {\n const requestState = selectors.selectQueryEntry(state, arg.queryCacheKey);\n const baseFetchOnMountOrArgChange = selectors.selectConfig(state).refetchOnMountOrArgChange;\n const fulfilledVal = requestState?.fulfilledTimeStamp;\n const refetchVal = arg.forceRefetch ?? (arg.subscribe && baseFetchOnMountOrArgChange);\n if (refetchVal) {\n return refetchVal === true || (Number(/* @__PURE__ */ new Date()) - Number(fulfilledVal)) / 1e3 >= refetchVal;\n }\n return false;\n }\n const createQueryThunk = () => {\n const generatedQueryThunk = createAsyncThunk(`${reducerPath}/executeQuery`, executeEndpoint, {\n getPendingMeta({\n arg\n }) {\n const endpointDefinition = endpointDefinitions[arg.endpointName];\n return addShouldAutoBatch({\n startedTimeStamp: Date.now(),\n ...isInfiniteQueryDefinition(endpointDefinition) ? {\n direction: arg.direction\n } : {}\n });\n },\n condition(queryThunkArg, {\n getState\n }) {\n const state = getState();\n const requestState = selectors.selectQueryEntry(state, queryThunkArg.queryCacheKey);\n const fulfilledVal = requestState?.fulfilledTimeStamp;\n const currentArg = queryThunkArg.originalArgs;\n const previousArg = requestState?.originalArgs;\n const endpointDefinition = endpointDefinitions[queryThunkArg.endpointName];\n const direction = queryThunkArg.direction;\n if (isUpsertQuery(queryThunkArg)) {\n return true;\n }\n if (requestState?.status === \"pending\") {\n return false;\n }\n if (isForcedQuery(queryThunkArg, state)) {\n return true;\n }\n if (isQueryDefinition(endpointDefinition) && endpointDefinition?.forceRefetch?.({\n currentArg,\n previousArg,\n endpointState: requestState,\n state\n })) {\n return true;\n }\n if (fulfilledVal && !direction) {\n return false;\n }\n return true;\n },\n dispatchConditionRejection: true\n });\n return generatedQueryThunk;\n };\n const queryThunk = createQueryThunk();\n const infiniteQueryThunk = createQueryThunk();\n const mutationThunk = createAsyncThunk(`${reducerPath}/executeMutation`, executeEndpoint, {\n getPendingMeta() {\n return addShouldAutoBatch({\n startedTimeStamp: Date.now()\n });\n }\n });\n const hasTheForce = (options) => \"force\" in options;\n const hasMaxAge = (options) => \"ifOlderThan\" in options;\n const prefetch = (endpointName, arg, options = {}) => (dispatch, getState) => {\n const force = hasTheForce(options) && options.force;\n const maxAge = hasMaxAge(options) && options.ifOlderThan;\n const queryAction = (force2 = true) => {\n const options2 = {\n forceRefetch: force2,\n subscribe: false\n };\n return api.endpoints[endpointName].initiate(arg, options2);\n };\n const latestStateValue = api.endpoints[endpointName].select(arg)(getState());\n if (force) {\n dispatch(queryAction());\n } else if (maxAge) {\n const lastFulfilledTs = latestStateValue?.fulfilledTimeStamp;\n if (!lastFulfilledTs) {\n dispatch(queryAction());\n return;\n }\n const shouldRetrigger = (Number(/* @__PURE__ */ new Date()) - Number(new Date(lastFulfilledTs))) / 1e3 >= maxAge;\n if (shouldRetrigger) {\n dispatch(queryAction());\n }\n } else {\n dispatch(queryAction(false));\n }\n };\n function matchesEndpoint(endpointName) {\n return (action) => action?.meta?.arg?.endpointName === endpointName;\n }\n function buildMatchThunkActions(thunk, endpointName) {\n return {\n matchPending: isAllOf(isPending(thunk), matchesEndpoint(endpointName)),\n matchFulfilled: isAllOf(isFulfilled(thunk), matchesEndpoint(endpointName)),\n matchRejected: isAllOf(isRejected(thunk), matchesEndpoint(endpointName))\n };\n }\n return {\n queryThunk,\n mutationThunk,\n infiniteQueryThunk,\n prefetch,\n updateQueryData,\n upsertQueryData,\n patchQueryData,\n buildMatchThunkActions\n };\n}\nfunction getNextPageParam(options, {\n pages,\n pageParams\n}, queryArg) {\n const lastIndex = pages.length - 1;\n return options.getNextPageParam(pages[lastIndex], pages, pageParams[lastIndex], pageParams, queryArg);\n}\nfunction getPreviousPageParam(options, {\n pages,\n pageParams\n}, queryArg) {\n return options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams, queryArg);\n}\nfunction calculateProvidedByThunk(action, type, endpointDefinitions, assertTagType) {\n return calculateProvidedBy(endpointDefinitions[action.meta.arg.endpointName][type], isFulfilled(action) ? action.payload : void 0, isRejectedWithValue(action) ? action.payload : void 0, action.meta.arg.originalArgs, \"baseQueryMeta\" in action.meta ? action.meta.baseQueryMeta : void 0, assertTagType);\n}\n\n// src/query/utils/getCurrent.ts\nfunction getCurrent(value) {\n return isDraft(value) ? current(value) : value;\n}\n\n// src/query/core/buildSlice.ts\nfunction updateQuerySubstateIfExists(state, queryCacheKey, update) {\n const substate = state[queryCacheKey];\n if (substate) {\n update(substate);\n }\n}\nfunction getMutationCacheKey(id) {\n return (\"arg\" in id ? id.arg.fixedCacheKey : id.fixedCacheKey) ?? id.requestId;\n}\nfunction updateMutationSubstateIfExists(state, id, update) {\n const substate = state[getMutationCacheKey(id)];\n if (substate) {\n update(substate);\n }\n}\nvar initialState = {};\nfunction buildSlice({\n reducerPath,\n queryThunk,\n mutationThunk,\n serializeQueryArgs,\n context: {\n endpointDefinitions: definitions,\n apiUid,\n extractRehydrationInfo,\n hasRehydrationInfo\n },\n assertTagType,\n config\n}) {\n const resetApiState = createAction(`${reducerPath}/resetApiState`);\n function writePendingCacheEntry(draft, arg, upserting, meta) {\n draft[arg.queryCacheKey] ??= {\n status: STATUS_UNINITIALIZED,\n endpointName: arg.endpointName\n };\n updateQuerySubstateIfExists(draft, arg.queryCacheKey, (substate) => {\n substate.status = STATUS_PENDING;\n substate.requestId = upserting && substate.requestId ? (\n // for `upsertQuery` **updates**, keep the current `requestId`\n substate.requestId\n ) : (\n // for normal queries or `upsertQuery` **inserts** always update the `requestId`\n meta.requestId\n );\n if (arg.originalArgs !== void 0) {\n substate.originalArgs = arg.originalArgs;\n }\n substate.startedTimeStamp = meta.startedTimeStamp;\n const endpointDefinition = definitions[meta.arg.endpointName];\n if (isInfiniteQueryDefinition(endpointDefinition) && \"direction\" in arg) {\n ;\n substate.direction = arg.direction;\n }\n });\n }\n function writeFulfilledCacheEntry(draft, meta, payload, upserting) {\n updateQuerySubstateIfExists(draft, meta.arg.queryCacheKey, (substate) => {\n if (substate.requestId !== meta.requestId && !upserting) return;\n const {\n merge\n } = definitions[meta.arg.endpointName];\n substate.status = STATUS_FULFILLED;\n if (merge) {\n if (substate.data !== void 0) {\n const {\n fulfilledTimeStamp,\n arg,\n baseQueryMeta,\n requestId\n } = meta;\n let newData = createNextState(substate.data, (draftSubstateData) => {\n return merge(draftSubstateData, payload, {\n arg: arg.originalArgs,\n baseQueryMeta,\n fulfilledTimeStamp,\n requestId\n });\n });\n substate.data = newData;\n } else {\n substate.data = payload;\n }\n } else {\n substate.data = definitions[meta.arg.endpointName].structuralSharing ?? true ? copyWithStructuralSharing(isDraft(substate.data) ? original(substate.data) : substate.data, payload) : payload;\n }\n delete substate.error;\n substate.fulfilledTimeStamp = meta.fulfilledTimeStamp;\n });\n }\n const querySlice = createSlice({\n name: `${reducerPath}/queries`,\n initialState,\n reducers: {\n removeQueryResult: {\n reducer(draft, {\n payload: {\n queryCacheKey\n }\n }) {\n delete draft[queryCacheKey];\n },\n prepare: prepareAutoBatched()\n },\n cacheEntriesUpserted: {\n reducer(draft, action) {\n for (const entry of action.payload) {\n const {\n queryDescription: arg,\n value\n } = entry;\n writePendingCacheEntry(draft, arg, true, {\n arg,\n requestId: action.meta.requestId,\n startedTimeStamp: action.meta.timestamp\n });\n writeFulfilledCacheEntry(\n draft,\n {\n arg,\n requestId: action.meta.requestId,\n fulfilledTimeStamp: action.meta.timestamp,\n baseQueryMeta: {}\n },\n value,\n // We know we're upserting here\n true\n );\n }\n },\n prepare: (payload) => {\n const queryDescriptions = payload.map((entry) => {\n const {\n endpointName,\n arg,\n value\n } = entry;\n const endpointDefinition = definitions[endpointName];\n const queryDescription = {\n type: ENDPOINT_QUERY,\n endpointName,\n originalArgs: entry.arg,\n queryCacheKey: serializeQueryArgs({\n queryArgs: arg,\n endpointDefinition,\n endpointName\n })\n };\n return {\n queryDescription,\n value\n };\n });\n const result = {\n payload: queryDescriptions,\n meta: {\n [SHOULD_AUTOBATCH]: true,\n requestId: nanoid(),\n timestamp: Date.now()\n }\n };\n return result;\n }\n },\n queryResultPatched: {\n reducer(draft, {\n payload: {\n queryCacheKey,\n patches\n }\n }) {\n updateQuerySubstateIfExists(draft, queryCacheKey, (substate) => {\n substate.data = applyPatches(substate.data, patches.concat());\n });\n },\n prepare: prepareAutoBatched()\n }\n },\n extraReducers(builder) {\n builder.addCase(queryThunk.pending, (draft, {\n meta,\n meta: {\n arg\n }\n }) => {\n const upserting = isUpsertQuery(arg);\n writePendingCacheEntry(draft, arg, upserting, meta);\n }).addCase(queryThunk.fulfilled, (draft, {\n meta,\n payload\n }) => {\n const upserting = isUpsertQuery(meta.arg);\n writeFulfilledCacheEntry(draft, meta, payload, upserting);\n }).addCase(queryThunk.rejected, (draft, {\n meta: {\n condition,\n arg,\n requestId\n },\n error,\n payload\n }) => {\n updateQuerySubstateIfExists(draft, arg.queryCacheKey, (substate) => {\n if (condition) {\n } else {\n if (substate.requestId !== requestId) return;\n substate.status = STATUS_REJECTED;\n substate.error = payload ?? error;\n }\n });\n }).addMatcher(hasRehydrationInfo, (draft, action) => {\n const {\n queries\n } = extractRehydrationInfo(action);\n for (const [key, entry] of Object.entries(queries)) {\n if (\n // do not rehydrate entries that were currently in flight.\n entry?.status === STATUS_FULFILLED || entry?.status === STATUS_REJECTED\n ) {\n draft[key] = entry;\n }\n }\n });\n }\n });\n const mutationSlice = createSlice({\n name: `${reducerPath}/mutations`,\n initialState,\n reducers: {\n removeMutationResult: {\n reducer(draft, {\n payload\n }) {\n const cacheKey = getMutationCacheKey(payload);\n if (cacheKey in draft) {\n delete draft[cacheKey];\n }\n },\n prepare: prepareAutoBatched()\n }\n },\n extraReducers(builder) {\n builder.addCase(mutationThunk.pending, (draft, {\n meta,\n meta: {\n requestId,\n arg,\n startedTimeStamp\n }\n }) => {\n if (!arg.track) return;\n draft[getMutationCacheKey(meta)] = {\n requestId,\n status: STATUS_PENDING,\n endpointName: arg.endpointName,\n startedTimeStamp\n };\n }).addCase(mutationThunk.fulfilled, (draft, {\n payload,\n meta\n }) => {\n if (!meta.arg.track) return;\n updateMutationSubstateIfExists(draft, meta, (substate) => {\n if (substate.requestId !== meta.requestId) return;\n substate.status = STATUS_FULFILLED;\n substate.data = payload;\n substate.fulfilledTimeStamp = meta.fulfilledTimeStamp;\n });\n }).addCase(mutationThunk.rejected, (draft, {\n payload,\n error,\n meta\n }) => {\n if (!meta.arg.track) return;\n updateMutationSubstateIfExists(draft, meta, (substate) => {\n if (substate.requestId !== meta.requestId) return;\n substate.status = STATUS_REJECTED;\n substate.error = payload ?? error;\n });\n }).addMatcher(hasRehydrationInfo, (draft, action) => {\n const {\n mutations\n } = extractRehydrationInfo(action);\n for (const [key, entry] of Object.entries(mutations)) {\n if (\n // do not rehydrate entries that were currently in flight.\n (entry?.status === STATUS_FULFILLED || entry?.status === STATUS_REJECTED) && // only rehydrate endpoints that were persisted using a `fixedCacheKey`\n key !== entry?.requestId\n ) {\n draft[key] = entry;\n }\n }\n });\n }\n });\n const initialInvalidationState = {\n tags: {},\n keys: {}\n };\n const invalidationSlice = createSlice({\n name: `${reducerPath}/invalidation`,\n initialState: initialInvalidationState,\n reducers: {\n updateProvidedBy: {\n reducer(draft, action) {\n for (const {\n queryCacheKey,\n providedTags\n } of action.payload) {\n removeCacheKeyFromTags(draft, queryCacheKey);\n for (const {\n type,\n id\n } of providedTags) {\n const subscribedQueries = (draft.tags[type] ??= {})[id || \"__internal_without_id\"] ??= [];\n const alreadySubscribed = subscribedQueries.includes(queryCacheKey);\n if (!alreadySubscribed) {\n subscribedQueries.push(queryCacheKey);\n }\n }\n draft.keys[queryCacheKey] = providedTags;\n }\n },\n prepare: prepareAutoBatched()\n }\n },\n extraReducers(builder) {\n builder.addCase(querySlice.actions.removeQueryResult, (draft, {\n payload: {\n queryCacheKey\n }\n }) => {\n removeCacheKeyFromTags(draft, queryCacheKey);\n }).addMatcher(hasRehydrationInfo, (draft, action) => {\n const {\n provided\n } = extractRehydrationInfo(action);\n for (const [type, incomingTags] of Object.entries(provided.tags ?? {})) {\n for (const [id, cacheKeys] of Object.entries(incomingTags)) {\n const subscribedQueries = (draft.tags[type] ??= {})[id || \"__internal_without_id\"] ??= [];\n for (const queryCacheKey of cacheKeys) {\n const alreadySubscribed = subscribedQueries.includes(queryCacheKey);\n if (!alreadySubscribed) {\n subscribedQueries.push(queryCacheKey);\n }\n draft.keys[queryCacheKey] = provided.keys[queryCacheKey];\n }\n }\n }\n }).addMatcher(isAnyOf(isFulfilled(queryThunk), isRejectedWithValue(queryThunk)), (draft, action) => {\n writeProvidedTagsForQueries(draft, [action]);\n }).addMatcher(querySlice.actions.cacheEntriesUpserted.match, (draft, action) => {\n const mockActions = action.payload.map(({\n queryDescription,\n value\n }) => {\n return {\n type: \"UNKNOWN\",\n payload: value,\n meta: {\n requestStatus: \"fulfilled\",\n requestId: \"UNKNOWN\",\n arg: queryDescription\n }\n };\n });\n writeProvidedTagsForQueries(draft, mockActions);\n });\n }\n });\n function removeCacheKeyFromTags(draft, queryCacheKey) {\n const existingTags = getCurrent(draft.keys[queryCacheKey] ?? []);\n for (const tag of existingTags) {\n const tagType = tag.type;\n const tagId = tag.id ?? \"__internal_without_id\";\n const tagSubscriptions = draft.tags[tagType]?.[tagId];\n if (tagSubscriptions) {\n draft.tags[tagType][tagId] = getCurrent(tagSubscriptions).filter((qc) => qc !== queryCacheKey);\n }\n }\n delete draft.keys[queryCacheKey];\n }\n function writeProvidedTagsForQueries(draft, actions3) {\n const providedByEntries = actions3.map((action) => {\n const providedTags = calculateProvidedByThunk(action, \"providesTags\", definitions, assertTagType);\n const {\n queryCacheKey\n } = action.meta.arg;\n return {\n queryCacheKey,\n providedTags\n };\n });\n invalidationSlice.caseReducers.updateProvidedBy(draft, invalidationSlice.actions.updateProvidedBy(providedByEntries));\n }\n const subscriptionSlice = createSlice({\n name: `${reducerPath}/subscriptions`,\n initialState,\n reducers: {\n updateSubscriptionOptions(d, a) {\n },\n unsubscribeQueryResult(d, a) {\n },\n internal_getRTKQSubscriptions() {\n }\n }\n });\n const internalSubscriptionsSlice = createSlice({\n name: `${reducerPath}/internalSubscriptions`,\n initialState,\n reducers: {\n subscriptionsUpdated: {\n reducer(state, action) {\n return applyPatches(state, action.payload);\n },\n prepare: prepareAutoBatched()\n }\n }\n });\n const configSlice = createSlice({\n name: `${reducerPath}/config`,\n initialState: {\n online: isOnline(),\n focused: isDocumentVisible(),\n middlewareRegistered: false,\n ...config\n },\n reducers: {\n middlewareRegistered(state, {\n payload\n }) {\n state.middlewareRegistered = state.middlewareRegistered === \"conflict\" || apiUid !== payload ? \"conflict\" : true;\n }\n },\n extraReducers: (builder) => {\n builder.addCase(onOnline, (state) => {\n state.online = true;\n }).addCase(onOffline, (state) => {\n state.online = false;\n }).addCase(onFocus, (state) => {\n state.focused = true;\n }).addCase(onFocusLost, (state) => {\n state.focused = false;\n }).addMatcher(hasRehydrationInfo, (draft) => ({\n ...draft\n }));\n }\n });\n const combinedReducer = combineReducers({\n queries: querySlice.reducer,\n mutations: mutationSlice.reducer,\n provided: invalidationSlice.reducer,\n subscriptions: internalSubscriptionsSlice.reducer,\n config: configSlice.reducer\n });\n const reducer = (state, action) => combinedReducer(resetApiState.match(action) ? void 0 : state, action);\n const actions2 = {\n ...configSlice.actions,\n ...querySlice.actions,\n ...subscriptionSlice.actions,\n ...internalSubscriptionsSlice.actions,\n ...mutationSlice.actions,\n ...invalidationSlice.actions,\n resetApiState\n };\n return {\n reducer,\n actions: actions2\n };\n}\n\n// src/query/core/buildSelectors.ts\nvar skipToken = /* @__PURE__ */ Symbol.for(\"RTKQ/skipToken\");\nvar initialSubState = {\n status: STATUS_UNINITIALIZED\n};\nvar defaultQuerySubState = /* @__PURE__ */ createNextState(initialSubState, () => {\n});\nvar defaultMutationSubState = /* @__PURE__ */ createNextState(initialSubState, () => {\n});\nfunction buildSelectors({\n serializeQueryArgs,\n reducerPath,\n createSelector: createSelector2\n}) {\n const selectSkippedQuery = (state) => defaultQuerySubState;\n const selectSkippedMutation = (state) => defaultMutationSubState;\n return {\n buildQuerySelector,\n buildInfiniteQuerySelector,\n buildMutationSelector,\n selectInvalidatedBy,\n selectCachedArgsForQuery,\n selectApiState,\n selectQueries,\n selectMutations,\n selectQueryEntry,\n selectConfig\n };\n function withRequestFlags(substate) {\n return {\n ...substate,\n ...getRequestStatusFlags(substate.status)\n };\n }\n function selectApiState(rootState) {\n const state = rootState[reducerPath];\n if (process.env.NODE_ENV !== \"production\") {\n if (!state) {\n if (selectApiState.triggered) return state;\n selectApiState.triggered = true;\n console.error(`Error: No data found at \\`state.${reducerPath}\\`. Did you forget to add the reducer to the store?`);\n }\n }\n return state;\n }\n function selectQueries(rootState) {\n return selectApiState(rootState)?.queries;\n }\n function selectQueryEntry(rootState, cacheKey) {\n return selectQueries(rootState)?.[cacheKey];\n }\n function selectMutations(rootState) {\n return selectApiState(rootState)?.mutations;\n }\n function selectConfig(rootState) {\n return selectApiState(rootState)?.config;\n }\n function buildAnyQuerySelector(endpointName, endpointDefinition, combiner) {\n return (queryArgs) => {\n if (queryArgs === skipToken) {\n return createSelector2(selectSkippedQuery, combiner);\n }\n const serializedArgs = serializeQueryArgs({\n queryArgs,\n endpointDefinition,\n endpointName\n });\n const selectQuerySubstate = (state) => selectQueryEntry(state, serializedArgs) ?? defaultQuerySubState;\n return createSelector2(selectQuerySubstate, combiner);\n };\n }\n function buildQuerySelector(endpointName, endpointDefinition) {\n return buildAnyQuerySelector(endpointName, endpointDefinition, withRequestFlags);\n }\n function buildInfiniteQuerySelector(endpointName, endpointDefinition) {\n const {\n infiniteQueryOptions\n } = endpointDefinition;\n function withInfiniteQueryResultFlags(substate) {\n const stateWithRequestFlags = {\n ...substate,\n ...getRequestStatusFlags(substate.status)\n };\n const {\n isLoading,\n isError,\n direction\n } = stateWithRequestFlags;\n const isForward = direction === \"forward\";\n const isBackward = direction === \"backward\";\n return {\n ...stateWithRequestFlags,\n hasNextPage: getHasNextPage(infiniteQueryOptions, stateWithRequestFlags.data, stateWithRequestFlags.originalArgs),\n hasPreviousPage: getHasPreviousPage(infiniteQueryOptions, stateWithRequestFlags.data, stateWithRequestFlags.originalArgs),\n isFetchingNextPage: isLoading && isForward,\n isFetchingPreviousPage: isLoading && isBackward,\n isFetchNextPageError: isError && isForward,\n isFetchPreviousPageError: isError && isBackward\n };\n }\n return buildAnyQuerySelector(endpointName, endpointDefinition, withInfiniteQueryResultFlags);\n }\n function buildMutationSelector() {\n return (id) => {\n let mutationId;\n if (typeof id === \"object\") {\n mutationId = getMutationCacheKey(id) ?? skipToken;\n } else {\n mutationId = id;\n }\n const selectMutationSubstate = (state) => selectApiState(state)?.mutations?.[mutationId] ?? defaultMutationSubState;\n const finalSelectMutationSubstate = mutationId === skipToken ? selectSkippedMutation : selectMutationSubstate;\n return createSelector2(finalSelectMutationSubstate, withRequestFlags);\n };\n }\n function selectInvalidatedBy(state, tags) {\n const apiState = state[reducerPath];\n const toInvalidate = /* @__PURE__ */ new Set();\n const finalTags = filterMap(tags, isNotNullish, expandTagDescription);\n for (const tag of finalTags) {\n const provided = apiState.provided.tags[tag.type];\n if (!provided) {\n continue;\n }\n let invalidateSubscriptions = (tag.id !== void 0 ? (\n // id given: invalidate all queries that provide this type & id\n provided[tag.id]\n ) : (\n // no id: invalidate all queries that provide this type\n Object.values(provided).flat()\n )) ?? [];\n for (const invalidate of invalidateSubscriptions) {\n toInvalidate.add(invalidate);\n }\n }\n return Array.from(toInvalidate.values()).flatMap((queryCacheKey) => {\n const querySubState = apiState.queries[queryCacheKey];\n return querySubState ? {\n queryCacheKey,\n endpointName: querySubState.endpointName,\n originalArgs: querySubState.originalArgs\n } : [];\n });\n }\n function selectCachedArgsForQuery(state, queryName) {\n return filterMap(Object.values(selectQueries(state)), (entry) => entry?.endpointName === queryName && entry.status !== STATUS_UNINITIALIZED, (entry) => entry.originalArgs);\n }\n function getHasNextPage(options, data, queryArg) {\n if (!data) return false;\n return getNextPageParam(options, data, queryArg) != null;\n }\n function getHasPreviousPage(options, data, queryArg) {\n if (!data || !options.getPreviousPageParam) return false;\n return getPreviousPageParam(options, data, queryArg) != null;\n }\n}\n\n// src/query/createApi.ts\nimport { formatProdErrorMessage as _formatProdErrorMessage2, formatProdErrorMessage as _formatProdErrorMessage22, formatProdErrorMessage as _formatProdErrorMessage3 } from \"@reduxjs/toolkit\";\n\n// src/query/defaultSerializeQueryArgs.ts\nvar cache = WeakMap ? /* @__PURE__ */ new WeakMap() : void 0;\nvar defaultSerializeQueryArgs = ({\n endpointName,\n queryArgs\n}) => {\n let serialized = \"\";\n const cached = cache?.get(queryArgs);\n if (typeof cached === \"string\") {\n serialized = cached;\n } else {\n const stringified = JSON.stringify(queryArgs, (key, value) => {\n value = typeof value === \"bigint\" ? {\n $bigint: value.toString()\n } : value;\n value = isPlainObject(value) ? Object.keys(value).sort().reduce((acc, key2) => {\n acc[key2] = value[key2];\n return acc;\n }, {}) : value;\n return value;\n });\n if (isPlainObject(queryArgs)) {\n cache?.set(queryArgs, stringified);\n }\n serialized = stringified;\n }\n return `${endpointName}(${serialized})`;\n};\n\n// src/query/createApi.ts\nimport { weakMapMemoize } from \"reselect\";\nfunction buildCreateApi(...modules) {\n return function baseCreateApi(options) {\n const extractRehydrationInfo = weakMapMemoize((action) => options.extractRehydrationInfo?.(action, {\n reducerPath: options.reducerPath ?? \"api\"\n }));\n const optionsWithDefaults = {\n reducerPath: \"api\",\n keepUnusedDataFor: 60,\n refetchOnMountOrArgChange: false,\n refetchOnFocus: false,\n refetchOnReconnect: false,\n invalidationBehavior: \"delayed\",\n ...options,\n extractRehydrationInfo,\n serializeQueryArgs(queryArgsApi) {\n let finalSerializeQueryArgs = defaultSerializeQueryArgs;\n if (\"serializeQueryArgs\" in queryArgsApi.endpointDefinition) {\n const endpointSQA = queryArgsApi.endpointDefinition.serializeQueryArgs;\n finalSerializeQueryArgs = (queryArgsApi2) => {\n const initialResult = endpointSQA(queryArgsApi2);\n if (typeof initialResult === \"string\") {\n return initialResult;\n } else {\n return defaultSerializeQueryArgs({\n ...queryArgsApi2,\n queryArgs: initialResult\n });\n }\n };\n } else if (options.serializeQueryArgs) {\n finalSerializeQueryArgs = options.serializeQueryArgs;\n }\n return finalSerializeQueryArgs(queryArgsApi);\n },\n tagTypes: [...options.tagTypes || []]\n };\n const context = {\n endpointDefinitions: {},\n batch(fn) {\n fn();\n },\n apiUid: nanoid(),\n extractRehydrationInfo,\n hasRehydrationInfo: weakMapMemoize((action) => extractRehydrationInfo(action) != null)\n };\n const api = {\n injectEndpoints,\n enhanceEndpoints({\n addTagTypes,\n endpoints\n }) {\n if (addTagTypes) {\n for (const eT of addTagTypes) {\n if (!optionsWithDefaults.tagTypes.includes(eT)) {\n ;\n optionsWithDefaults.tagTypes.push(eT);\n }\n }\n }\n if (endpoints) {\n for (const [endpointName, partialDefinition] of Object.entries(endpoints)) {\n if (typeof partialDefinition === \"function\") {\n partialDefinition(getEndpointDefinition(context, endpointName));\n } else {\n Object.assign(getEndpointDefinition(context, endpointName) || {}, partialDefinition);\n }\n }\n }\n return api;\n }\n };\n const initializedModules = modules.map((m) => m.init(api, optionsWithDefaults, context));\n function injectEndpoints(inject) {\n const evaluatedEndpoints = inject.endpoints({\n query: (x) => ({\n ...x,\n type: ENDPOINT_QUERY\n }),\n mutation: (x) => ({\n ...x,\n type: ENDPOINT_MUTATION\n }),\n infiniteQuery: (x) => ({\n ...x,\n type: ENDPOINT_INFINITEQUERY\n })\n });\n for (const [endpointName, definition] of Object.entries(evaluatedEndpoints)) {\n if (inject.overrideExisting !== true && endpointName in context.endpointDefinitions) {\n if (inject.overrideExisting === \"throw\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(39) : `called \\`injectEndpoints\\` to override already-existing endpointName ${endpointName} without specifying \\`overrideExisting: true\\``);\n } else if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\n console.error(`called \\`injectEndpoints\\` to override already-existing endpointName ${endpointName} without specifying \\`overrideExisting: true\\``);\n }\n continue;\n }\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\n if (isInfiniteQueryDefinition(definition)) {\n const {\n infiniteQueryOptions\n } = definition;\n const {\n maxPages,\n getPreviousPageParam: getPreviousPageParam2\n } = infiniteQueryOptions;\n if (typeof maxPages === \"number\") {\n if (maxPages < 1) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage22(40) : `maxPages for endpoint '${endpointName}' must be a number greater than 0`);\n }\n if (typeof getPreviousPageParam2 !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(41) : `getPreviousPageParam for endpoint '${endpointName}' must be a function if maxPages is used`);\n }\n }\n }\n }\n context.endpointDefinitions[endpointName] = definition;\n for (const m of initializedModules) {\n m.injectEndpoint(endpointName, definition);\n }\n }\n return api;\n }\n return api.injectEndpoints({\n endpoints: options.endpoints\n });\n };\n}\n\n// src/query/fakeBaseQuery.ts\nimport { formatProdErrorMessage as _formatProdErrorMessage4 } from \"@reduxjs/toolkit\";\nvar _NEVER = /* @__PURE__ */ Symbol();\nfunction fakeBaseQuery() {\n return function() {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(33) : \"When using `fakeBaseQuery`, all queries & mutations must use the `queryFn` definition syntax.\");\n };\n}\n\n// src/query/tsHelpers.ts\nfunction assertCast(v) {\n}\nfunction safeAssign(target, ...args) {\n return Object.assign(target, ...args);\n}\n\n// src/query/core/buildMiddleware/batchActions.ts\nvar buildBatchedActionsHandler = ({\n api,\n queryThunk,\n internalState,\n mwApi\n}) => {\n const subscriptionsPrefix = `${api.reducerPath}/subscriptions`;\n let previousSubscriptions = null;\n let updateSyncTimer = null;\n const {\n updateSubscriptionOptions,\n unsubscribeQueryResult\n } = api.internalActions;\n const actuallyMutateSubscriptions = (currentSubscriptions, action) => {\n if (updateSubscriptionOptions.match(action)) {\n const {\n queryCacheKey,\n requestId,\n options\n } = action.payload;\n const sub = currentSubscriptions.get(queryCacheKey);\n if (sub?.has(requestId)) {\n sub.set(requestId, options);\n }\n return true;\n }\n if (unsubscribeQueryResult.match(action)) {\n const {\n queryCacheKey,\n requestId\n } = action.payload;\n const sub = currentSubscriptions.get(queryCacheKey);\n if (sub) {\n sub.delete(requestId);\n }\n return true;\n }\n if (api.internalActions.removeQueryResult.match(action)) {\n currentSubscriptions.delete(action.payload.queryCacheKey);\n return true;\n }\n if (queryThunk.pending.match(action)) {\n const {\n meta: {\n arg,\n requestId\n }\n } = action;\n const substate = getOrInsertComputed(currentSubscriptions, arg.queryCacheKey, createNewMap);\n if (arg.subscribe) {\n substate.set(requestId, arg.subscriptionOptions ?? substate.get(requestId) ?? {});\n }\n return true;\n }\n let mutated = false;\n if (queryThunk.rejected.match(action)) {\n const {\n meta: {\n condition,\n arg,\n requestId\n }\n } = action;\n if (condition && arg.subscribe) {\n const substate = getOrInsertComputed(currentSubscriptions, arg.queryCacheKey, createNewMap);\n substate.set(requestId, arg.subscriptionOptions ?? substate.get(requestId) ?? {});\n mutated = true;\n }\n }\n return mutated;\n };\n const getSubscriptions = () => internalState.currentSubscriptions;\n const getSubscriptionCount = (queryCacheKey) => {\n const subscriptions = getSubscriptions();\n const subscriptionsForQueryArg = subscriptions.get(queryCacheKey);\n return subscriptionsForQueryArg?.size ?? 0;\n };\n const isRequestSubscribed = (queryCacheKey, requestId) => {\n const subscriptions = getSubscriptions();\n return !!subscriptions?.get(queryCacheKey)?.get(requestId);\n };\n const subscriptionSelectors = {\n getSubscriptions,\n getSubscriptionCount,\n isRequestSubscribed\n };\n function serializeSubscriptions(currentSubscriptions) {\n return JSON.parse(JSON.stringify(Object.fromEntries([...currentSubscriptions].map(([k, v]) => [k, Object.fromEntries(v)]))));\n }\n return (action, mwApi2) => {\n if (!previousSubscriptions) {\n previousSubscriptions = serializeSubscriptions(internalState.currentSubscriptions);\n }\n if (api.util.resetApiState.match(action)) {\n previousSubscriptions = {};\n internalState.currentSubscriptions.clear();\n updateSyncTimer = null;\n return [true, false];\n }\n if (api.internalActions.internal_getRTKQSubscriptions.match(action)) {\n return [false, subscriptionSelectors];\n }\n const didMutate = actuallyMutateSubscriptions(internalState.currentSubscriptions, action);\n let actionShouldContinue = true;\n if (process.env.NODE_ENV === \"test\" && typeof action.type === \"string\" && action.type === `${api.reducerPath}/getPolling`) {\n return [false, internalState.currentPolls];\n }\n if (didMutate) {\n if (!updateSyncTimer) {\n updateSyncTimer = setTimeout(() => {\n const newSubscriptions = serializeSubscriptions(internalState.currentSubscriptions);\n const [, patches] = produceWithPatches(previousSubscriptions, () => newSubscriptions);\n mwApi2.next(api.internalActions.subscriptionsUpdated(patches));\n previousSubscriptions = newSubscriptions;\n updateSyncTimer = null;\n }, 500);\n }\n const isSubscriptionSliceAction = typeof action.type == \"string\" && !!action.type.startsWith(subscriptionsPrefix);\n const isAdditionalSubscriptionAction = queryThunk.rejected.match(action) && action.meta.condition && !!action.meta.arg.subscribe;\n actionShouldContinue = !isSubscriptionSliceAction && !isAdditionalSubscriptionAction;\n }\n return [actionShouldContinue, false];\n };\n};\n\n// src/query/core/buildMiddleware/cacheCollection.ts\nvar THIRTY_TWO_BIT_MAX_TIMER_SECONDS = 2147483647 / 1e3 - 1;\nvar buildCacheCollectionHandler = ({\n reducerPath,\n api,\n queryThunk,\n context,\n internalState,\n selectors: {\n selectQueryEntry,\n selectConfig\n },\n getRunningQueryThunk,\n mwApi\n}) => {\n const {\n removeQueryResult,\n unsubscribeQueryResult,\n cacheEntriesUpserted\n } = api.internalActions;\n const canTriggerUnsubscribe = isAnyOf(unsubscribeQueryResult.match, queryThunk.fulfilled, queryThunk.rejected, cacheEntriesUpserted.match);\n function anySubscriptionsRemainingForKey(queryCacheKey) {\n const subscriptions = internalState.currentSubscriptions.get(queryCacheKey);\n if (!subscriptions) {\n return false;\n }\n const hasSubscriptions = subscriptions.size > 0;\n return hasSubscriptions;\n }\n const currentRemovalTimeouts = {};\n function abortAllPromises(promiseMap) {\n for (const promise of promiseMap.values()) {\n promise?.abort?.();\n }\n }\n const handler = (action, mwApi2) => {\n const state = mwApi2.getState();\n const config = selectConfig(state);\n if (canTriggerUnsubscribe(action)) {\n let queryCacheKeys;\n if (cacheEntriesUpserted.match(action)) {\n queryCacheKeys = action.payload.map((entry) => entry.queryDescription.queryCacheKey);\n } else {\n const {\n queryCacheKey\n } = unsubscribeQueryResult.match(action) ? action.payload : action.meta.arg;\n queryCacheKeys = [queryCacheKey];\n }\n handleUnsubscribeMany(queryCacheKeys, mwApi2, config);\n }\n if (api.util.resetApiState.match(action)) {\n for (const [key, timeout] of Object.entries(currentRemovalTimeouts)) {\n if (timeout) clearTimeout(timeout);\n delete currentRemovalTimeouts[key];\n }\n abortAllPromises(internalState.runningQueries);\n abortAllPromises(internalState.runningMutations);\n }\n if (context.hasRehydrationInfo(action)) {\n const {\n queries\n } = context.extractRehydrationInfo(action);\n handleUnsubscribeMany(Object.keys(queries), mwApi2, config);\n }\n };\n function handleUnsubscribeMany(cacheKeys, api2, config) {\n const state = api2.getState();\n for (const queryCacheKey of cacheKeys) {\n const entry = selectQueryEntry(state, queryCacheKey);\n if (entry?.endpointName) {\n handleUnsubscribe(queryCacheKey, entry.endpointName, api2, config);\n }\n }\n }\n function handleUnsubscribe(queryCacheKey, endpointName, api2, config) {\n const endpointDefinition = getEndpointDefinition(context, endpointName);\n const keepUnusedDataFor = endpointDefinition?.keepUnusedDataFor ?? config.keepUnusedDataFor;\n if (keepUnusedDataFor === Infinity) {\n return;\n }\n const finalKeepUnusedDataFor = Math.max(0, Math.min(keepUnusedDataFor, THIRTY_TWO_BIT_MAX_TIMER_SECONDS));\n if (!anySubscriptionsRemainingForKey(queryCacheKey)) {\n const currentTimeout = currentRemovalTimeouts[queryCacheKey];\n if (currentTimeout) {\n clearTimeout(currentTimeout);\n }\n currentRemovalTimeouts[queryCacheKey] = setTimeout(() => {\n if (!anySubscriptionsRemainingForKey(queryCacheKey)) {\n const entry = selectQueryEntry(api2.getState(), queryCacheKey);\n if (entry?.endpointName) {\n const runningQuery = api2.dispatch(getRunningQueryThunk(entry.endpointName, entry.originalArgs));\n runningQuery?.abort();\n }\n api2.dispatch(removeQueryResult({\n queryCacheKey\n }));\n }\n delete currentRemovalTimeouts[queryCacheKey];\n }, finalKeepUnusedDataFor * 1e3);\n }\n }\n return handler;\n};\n\n// src/query/core/buildMiddleware/cacheLifecycle.ts\nvar neverResolvedError = new Error(\"Promise never resolved before cacheEntryRemoved.\");\nvar buildCacheLifecycleHandler = ({\n api,\n reducerPath,\n context,\n queryThunk,\n mutationThunk,\n internalState,\n selectors: {\n selectQueryEntry,\n selectApiState\n }\n}) => {\n const isQueryThunk = isAsyncThunkAction(queryThunk);\n const isMutationThunk = isAsyncThunkAction(mutationThunk);\n const isFulfilledThunk = isFulfilled(queryThunk, mutationThunk);\n const lifecycleMap = {};\n const {\n removeQueryResult,\n removeMutationResult,\n cacheEntriesUpserted\n } = api.internalActions;\n function resolveLifecycleEntry(cacheKey, data, meta) {\n const lifecycle = lifecycleMap[cacheKey];\n if (lifecycle?.valueResolved) {\n lifecycle.valueResolved({\n data,\n meta\n });\n delete lifecycle.valueResolved;\n }\n }\n function removeLifecycleEntry(cacheKey) {\n const lifecycle = lifecycleMap[cacheKey];\n if (lifecycle) {\n delete lifecycleMap[cacheKey];\n lifecycle.cacheEntryRemoved();\n }\n }\n function getActionMetaFields(action) {\n const {\n arg,\n requestId\n } = action.meta;\n const {\n endpointName,\n originalArgs\n } = arg;\n return [endpointName, originalArgs, requestId];\n }\n const handler = (action, mwApi, stateBefore) => {\n const cacheKey = getCacheKey(action);\n function checkForNewCacheKey(endpointName, cacheKey2, requestId, originalArgs) {\n const oldEntry = selectQueryEntry(stateBefore, cacheKey2);\n const newEntry = selectQueryEntry(mwApi.getState(), cacheKey2);\n if (!oldEntry && newEntry) {\n handleNewKey(endpointName, originalArgs, cacheKey2, mwApi, requestId);\n }\n }\n if (queryThunk.pending.match(action)) {\n const [endpointName, originalArgs, requestId] = getActionMetaFields(action);\n checkForNewCacheKey(endpointName, cacheKey, requestId, originalArgs);\n } else if (cacheEntriesUpserted.match(action)) {\n for (const {\n queryDescription,\n value\n } of action.payload) {\n const {\n endpointName,\n originalArgs,\n queryCacheKey\n } = queryDescription;\n checkForNewCacheKey(endpointName, queryCacheKey, action.meta.requestId, originalArgs);\n resolveLifecycleEntry(queryCacheKey, value, {});\n }\n } else if (mutationThunk.pending.match(action)) {\n const state = mwApi.getState()[reducerPath].mutations[cacheKey];\n if (state) {\n const [endpointName, originalArgs, requestId] = getActionMetaFields(action);\n handleNewKey(endpointName, originalArgs, cacheKey, mwApi, requestId);\n }\n } else if (isFulfilledThunk(action)) {\n resolveLifecycleEntry(cacheKey, action.payload, action.meta.baseQueryMeta);\n } else if (removeQueryResult.match(action) || removeMutationResult.match(action)) {\n removeLifecycleEntry(cacheKey);\n } else if (api.util.resetApiState.match(action)) {\n for (const cacheKey2 of Object.keys(lifecycleMap)) {\n removeLifecycleEntry(cacheKey2);\n }\n }\n };\n function getCacheKey(action) {\n if (isQueryThunk(action)) return action.meta.arg.queryCacheKey;\n if (isMutationThunk(action)) {\n return action.meta.arg.fixedCacheKey ?? action.meta.requestId;\n }\n if (removeQueryResult.match(action)) return action.payload.queryCacheKey;\n if (removeMutationResult.match(action)) return getMutationCacheKey(action.payload);\n return \"\";\n }\n function handleNewKey(endpointName, originalArgs, queryCacheKey, mwApi, requestId) {\n const endpointDefinition = getEndpointDefinition(context, endpointName);\n const onCacheEntryAdded = endpointDefinition?.onCacheEntryAdded;\n if (!onCacheEntryAdded) return;\n const lifecycle = {};\n const cacheEntryRemoved = new Promise((resolve) => {\n lifecycle.cacheEntryRemoved = resolve;\n });\n const cacheDataLoaded = Promise.race([new Promise((resolve) => {\n lifecycle.valueResolved = resolve;\n }), cacheEntryRemoved.then(() => {\n throw neverResolvedError;\n })]);\n cacheDataLoaded.catch(() => {\n });\n lifecycleMap[queryCacheKey] = lifecycle;\n const selector = api.endpoints[endpointName].select(isAnyQueryDefinition(endpointDefinition) ? originalArgs : queryCacheKey);\n const extra = mwApi.dispatch((_, __, extra2) => extra2);\n const lifecycleApi = {\n ...mwApi,\n getCacheEntry: () => selector(mwApi.getState()),\n requestId,\n extra,\n updateCachedData: isAnyQueryDefinition(endpointDefinition) ? (updateRecipe) => mwApi.dispatch(api.util.updateQueryData(endpointName, originalArgs, updateRecipe)) : void 0,\n cacheDataLoaded,\n cacheEntryRemoved\n };\n const runningHandler = onCacheEntryAdded(originalArgs, lifecycleApi);\n Promise.resolve(runningHandler).catch((e) => {\n if (e === neverResolvedError) return;\n throw e;\n });\n }\n return handler;\n};\n\n// src/query/core/buildMiddleware/devMiddleware.ts\nvar buildDevCheckHandler = ({\n api,\n context: {\n apiUid\n },\n reducerPath\n}) => {\n return (action, mwApi) => {\n if (api.util.resetApiState.match(action)) {\n mwApi.dispatch(api.internalActions.middlewareRegistered(apiUid));\n }\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\n if (api.internalActions.middlewareRegistered.match(action) && action.payload === apiUid && mwApi.getState()[reducerPath]?.config?.middlewareRegistered === \"conflict\") {\n console.warn(`There is a mismatch between slice and middleware for the reducerPath \"${reducerPath}\".\nYou can only have one api per reducer path, this will lead to crashes in various situations!${reducerPath === \"api\" ? `\nIf you have multiple apis, you *have* to specify the reducerPath option when using createApi!` : \"\"}`);\n }\n }\n };\n};\n\n// src/query/core/buildMiddleware/invalidationByTags.ts\nvar buildInvalidationByTagsHandler = ({\n reducerPath,\n context,\n context: {\n endpointDefinitions\n },\n mutationThunk,\n queryThunk,\n api,\n assertTagType,\n refetchQuery,\n internalState\n}) => {\n const {\n removeQueryResult\n } = api.internalActions;\n const isThunkActionWithTags = isAnyOf(isFulfilled(mutationThunk), isRejectedWithValue(mutationThunk));\n const isQueryEnd = isAnyOf(isFulfilled(queryThunk, mutationThunk), isRejected(queryThunk, mutationThunk));\n let pendingTagInvalidations = [];\n let pendingRequestCount = 0;\n const handler = (action, mwApi) => {\n if (queryThunk.pending.match(action) || mutationThunk.pending.match(action)) {\n pendingRequestCount++;\n }\n if (isQueryEnd(action)) {\n pendingRequestCount = Math.max(0, pendingRequestCount - 1);\n }\n if (isThunkActionWithTags(action)) {\n invalidateTags(calculateProvidedByThunk(action, \"invalidatesTags\", endpointDefinitions, assertTagType), mwApi);\n } else if (isQueryEnd(action)) {\n invalidateTags([], mwApi);\n } else if (api.util.invalidateTags.match(action)) {\n invalidateTags(calculateProvidedBy(action.payload, void 0, void 0, void 0, void 0, assertTagType), mwApi);\n }\n };\n function hasPendingRequests() {\n return pendingRequestCount > 0;\n }\n function invalidateTags(newTags, mwApi) {\n const rootState = mwApi.getState();\n const state = rootState[reducerPath];\n pendingTagInvalidations.push(...newTags);\n if (state.config.invalidationBehavior === \"delayed\" && hasPendingRequests()) {\n return;\n }\n const tags = pendingTagInvalidations;\n pendingTagInvalidations = [];\n if (tags.length === 0) return;\n const toInvalidate = api.util.selectInvalidatedBy(rootState, tags);\n context.batch(() => {\n const valuesArray = Array.from(toInvalidate.values());\n for (const {\n queryCacheKey\n } of valuesArray) {\n const querySubState = state.queries[queryCacheKey];\n const subscriptionSubState = getOrInsertComputed(internalState.currentSubscriptions, queryCacheKey, createNewMap);\n if (querySubState) {\n if (subscriptionSubState.size === 0) {\n mwApi.dispatch(removeQueryResult({\n queryCacheKey\n }));\n } else if (querySubState.status !== STATUS_UNINITIALIZED) {\n mwApi.dispatch(refetchQuery(querySubState));\n }\n }\n }\n });\n }\n return handler;\n};\n\n// src/query/core/buildMiddleware/polling.ts\nvar buildPollingHandler = ({\n reducerPath,\n queryThunk,\n api,\n refetchQuery,\n internalState\n}) => {\n const {\n currentPolls,\n currentSubscriptions\n } = internalState;\n const pendingPollingUpdates = /* @__PURE__ */ new Set();\n let pollingUpdateTimer = null;\n const handler = (action, mwApi) => {\n if (api.internalActions.updateSubscriptionOptions.match(action) || api.internalActions.unsubscribeQueryResult.match(action)) {\n schedulePollingUpdate(action.payload.queryCacheKey, mwApi);\n }\n if (queryThunk.pending.match(action) || queryThunk.rejected.match(action) && action.meta.condition) {\n schedulePollingUpdate(action.meta.arg.queryCacheKey, mwApi);\n }\n if (queryThunk.fulfilled.match(action) || queryThunk.rejected.match(action) && !action.meta.condition) {\n startNextPoll(action.meta.arg, mwApi);\n }\n if (api.util.resetApiState.match(action)) {\n clearPolls();\n if (pollingUpdateTimer) {\n clearTimeout(pollingUpdateTimer);\n pollingUpdateTimer = null;\n }\n pendingPollingUpdates.clear();\n }\n };\n function schedulePollingUpdate(queryCacheKey, api2) {\n pendingPollingUpdates.add(queryCacheKey);\n if (!pollingUpdateTimer) {\n pollingUpdateTimer = setTimeout(() => {\n for (const key of pendingPollingUpdates) {\n updatePollingInterval({\n queryCacheKey: key\n }, api2);\n }\n pendingPollingUpdates.clear();\n pollingUpdateTimer = null;\n }, 0);\n }\n }\n function startNextPoll({\n queryCacheKey\n }, api2) {\n const state = api2.getState()[reducerPath];\n const querySubState = state.queries[queryCacheKey];\n const subscriptions = currentSubscriptions.get(queryCacheKey);\n if (!querySubState || querySubState.status === STATUS_UNINITIALIZED) return;\n const {\n lowestPollingInterval,\n skipPollingIfUnfocused\n } = findLowestPollingInterval(subscriptions);\n if (!Number.isFinite(lowestPollingInterval)) return;\n const currentPoll = currentPolls.get(queryCacheKey);\n if (currentPoll?.timeout) {\n clearTimeout(currentPoll.timeout);\n currentPoll.timeout = void 0;\n }\n const nextPollTimestamp = Date.now() + lowestPollingInterval;\n currentPolls.set(queryCacheKey, {\n nextPollTimestamp,\n pollingInterval: lowestPollingInterval,\n timeout: setTimeout(() => {\n if (state.config.focused || !skipPollingIfUnfocused) {\n api2.dispatch(refetchQuery(querySubState));\n }\n startNextPoll({\n queryCacheKey\n }, api2);\n }, lowestPollingInterval)\n });\n }\n function updatePollingInterval({\n queryCacheKey\n }, api2) {\n const state = api2.getState()[reducerPath];\n const querySubState = state.queries[queryCacheKey];\n const subscriptions = currentSubscriptions.get(queryCacheKey);\n if (!querySubState || querySubState.status === STATUS_UNINITIALIZED) {\n return;\n }\n const {\n lowestPollingInterval\n } = findLowestPollingInterval(subscriptions);\n if (process.env.NODE_ENV === \"test\") {\n const updateCounters = currentPolls.pollUpdateCounters ??= {};\n updateCounters[queryCacheKey] ??= 0;\n updateCounters[queryCacheKey]++;\n }\n if (!Number.isFinite(lowestPollingInterval)) {\n cleanupPollForKey(queryCacheKey);\n return;\n }\n const currentPoll = currentPolls.get(queryCacheKey);\n const nextPollTimestamp = Date.now() + lowestPollingInterval;\n if (!currentPoll || nextPollTimestamp < currentPoll.nextPollTimestamp) {\n startNextPoll({\n queryCacheKey\n }, api2);\n }\n }\n function cleanupPollForKey(key) {\n const existingPoll = currentPolls.get(key);\n if (existingPoll?.timeout) {\n clearTimeout(existingPoll.timeout);\n }\n currentPolls.delete(key);\n }\n function clearPolls() {\n for (const key of currentPolls.keys()) {\n cleanupPollForKey(key);\n }\n }\n function findLowestPollingInterval(subscribers = /* @__PURE__ */ new Map()) {\n let skipPollingIfUnfocused = false;\n let lowestPollingInterval = Number.POSITIVE_INFINITY;\n for (const entry of subscribers.values()) {\n if (!!entry.pollingInterval) {\n lowestPollingInterval = Math.min(entry.pollingInterval, lowestPollingInterval);\n skipPollingIfUnfocused = entry.skipPollingIfUnfocused || skipPollingIfUnfocused;\n }\n }\n return {\n lowestPollingInterval,\n skipPollingIfUnfocused\n };\n }\n return handler;\n};\n\n// src/query/core/buildMiddleware/queryLifecycle.ts\nvar buildQueryLifecycleHandler = ({\n api,\n context,\n queryThunk,\n mutationThunk\n}) => {\n const isPendingThunk = isPending(queryThunk, mutationThunk);\n const isRejectedThunk = isRejected(queryThunk, mutationThunk);\n const isFullfilledThunk = isFulfilled(queryThunk, mutationThunk);\n const lifecycleMap = {};\n const handler = (action, mwApi) => {\n if (isPendingThunk(action)) {\n const {\n requestId,\n arg: {\n endpointName,\n originalArgs\n }\n } = action.meta;\n const endpointDefinition = getEndpointDefinition(context, endpointName);\n const onQueryStarted = endpointDefinition?.onQueryStarted;\n if (onQueryStarted) {\n const lifecycle = {};\n const queryFulfilled = new Promise((resolve, reject) => {\n lifecycle.resolve = resolve;\n lifecycle.reject = reject;\n });\n queryFulfilled.catch(() => {\n });\n lifecycleMap[requestId] = lifecycle;\n const selector = api.endpoints[endpointName].select(isAnyQueryDefinition(endpointDefinition) ? originalArgs : requestId);\n const extra = mwApi.dispatch((_, __, extra2) => extra2);\n const lifecycleApi = {\n ...mwApi,\n getCacheEntry: () => selector(mwApi.getState()),\n requestId,\n extra,\n updateCachedData: isAnyQueryDefinition(endpointDefinition) ? (updateRecipe) => mwApi.dispatch(api.util.updateQueryData(endpointName, originalArgs, updateRecipe)) : void 0,\n queryFulfilled\n };\n onQueryStarted(originalArgs, lifecycleApi);\n }\n } else if (isFullfilledThunk(action)) {\n const {\n requestId,\n baseQueryMeta\n } = action.meta;\n lifecycleMap[requestId]?.resolve({\n data: action.payload,\n meta: baseQueryMeta\n });\n delete lifecycleMap[requestId];\n } else if (isRejectedThunk(action)) {\n const {\n requestId,\n rejectedWithValue,\n baseQueryMeta\n } = action.meta;\n lifecycleMap[requestId]?.reject({\n error: action.payload ?? action.error,\n isUnhandledError: !rejectedWithValue,\n meta: baseQueryMeta\n });\n delete lifecycleMap[requestId];\n }\n };\n return handler;\n};\n\n// src/query/core/buildMiddleware/windowEventHandling.ts\nvar buildWindowEventHandler = ({\n reducerPath,\n context,\n api,\n refetchQuery,\n internalState\n}) => {\n const {\n removeQueryResult\n } = api.internalActions;\n const handler = (action, mwApi) => {\n if (onFocus.match(action)) {\n refetchValidQueries(mwApi, \"refetchOnFocus\");\n }\n if (onOnline.match(action)) {\n refetchValidQueries(mwApi, \"refetchOnReconnect\");\n }\n };\n function refetchValidQueries(api2, type) {\n const state = api2.getState()[reducerPath];\n const queries = state.queries;\n const subscriptions = internalState.currentSubscriptions;\n context.batch(() => {\n for (const queryCacheKey of subscriptions.keys()) {\n const querySubState = queries[queryCacheKey];\n const subscriptionSubState = subscriptions.get(queryCacheKey);\n if (!subscriptionSubState || !querySubState) continue;\n const values = [...subscriptionSubState.values()];\n const shouldRefetch = values.some((sub) => sub[type] === true) || values.every((sub) => sub[type] === void 0) && state.config[type];\n if (shouldRefetch) {\n if (subscriptionSubState.size === 0) {\n api2.dispatch(removeQueryResult({\n queryCacheKey\n }));\n } else if (querySubState.status !== STATUS_UNINITIALIZED) {\n api2.dispatch(refetchQuery(querySubState));\n }\n }\n }\n });\n }\n return handler;\n};\n\n// src/query/core/buildMiddleware/index.ts\nfunction buildMiddleware(input) {\n const {\n reducerPath,\n queryThunk,\n api,\n context,\n getInternalState\n } = input;\n const {\n apiUid\n } = context;\n const actions2 = {\n invalidateTags: createAction(`${reducerPath}/invalidateTags`)\n };\n const isThisApiSliceAction = (action) => action.type.startsWith(`${reducerPath}/`);\n const handlerBuilders = [buildDevCheckHandler, buildCacheCollectionHandler, buildInvalidationByTagsHandler, buildPollingHandler, buildCacheLifecycleHandler, buildQueryLifecycleHandler];\n const middleware = (mwApi) => {\n let initialized2 = false;\n const internalState = getInternalState(mwApi.dispatch);\n const builderArgs = {\n ...input,\n internalState,\n refetchQuery,\n isThisApiSliceAction,\n mwApi\n };\n const handlers = handlerBuilders.map((build) => build(builderArgs));\n const batchedActionsHandler = buildBatchedActionsHandler(builderArgs);\n const windowEventsHandler = buildWindowEventHandler(builderArgs);\n return (next) => {\n return (action) => {\n if (!isAction(action)) {\n return next(action);\n }\n if (!initialized2) {\n initialized2 = true;\n mwApi.dispatch(api.internalActions.middlewareRegistered(apiUid));\n }\n const mwApiWithNext = {\n ...mwApi,\n next\n };\n const stateBefore = mwApi.getState();\n const [actionShouldContinue, internalProbeResult] = batchedActionsHandler(action, mwApiWithNext, stateBefore);\n let res;\n if (actionShouldContinue) {\n res = next(action);\n } else {\n res = internalProbeResult;\n }\n if (!!mwApi.getState()[reducerPath]) {\n windowEventsHandler(action, mwApiWithNext, stateBefore);\n if (isThisApiSliceAction(action) || context.hasRehydrationInfo(action)) {\n for (const handler of handlers) {\n handler(action, mwApiWithNext, stateBefore);\n }\n }\n }\n return res;\n };\n };\n };\n return {\n middleware,\n actions: actions2\n };\n function refetchQuery(querySubState) {\n return input.api.endpoints[querySubState.endpointName].initiate(querySubState.originalArgs, {\n subscribe: false,\n forceRefetch: true\n });\n }\n}\n\n// src/query/core/module.ts\nvar coreModuleName = /* @__PURE__ */ Symbol();\nvar coreModule = ({\n createSelector: createSelector2 = createSelector\n} = {}) => ({\n name: coreModuleName,\n init(api, {\n baseQuery,\n tagTypes,\n reducerPath,\n serializeQueryArgs,\n keepUnusedDataFor,\n refetchOnMountOrArgChange,\n refetchOnFocus,\n refetchOnReconnect,\n invalidationBehavior,\n onSchemaFailure,\n catchSchemaFailure,\n skipSchemaValidation\n }, context) {\n enablePatches();\n assertCast(serializeQueryArgs);\n const assertTagType = (tag) => {\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\n if (!tagTypes.includes(tag.type)) {\n console.error(`Tag type '${tag.type}' was used, but not specified in \\`tagTypes\\`!`);\n }\n }\n return tag;\n };\n Object.assign(api, {\n reducerPath,\n endpoints: {},\n internalActions: {\n onOnline,\n onOffline,\n onFocus,\n onFocusLost\n },\n util: {}\n });\n const selectors = buildSelectors({\n serializeQueryArgs,\n reducerPath,\n createSelector: createSelector2\n });\n const {\n selectInvalidatedBy,\n selectCachedArgsForQuery,\n buildQuerySelector,\n buildInfiniteQuerySelector,\n buildMutationSelector\n } = selectors;\n safeAssign(api.util, {\n selectInvalidatedBy,\n selectCachedArgsForQuery\n });\n const {\n queryThunk,\n infiniteQueryThunk,\n mutationThunk,\n patchQueryData,\n updateQueryData,\n upsertQueryData,\n prefetch,\n buildMatchThunkActions\n } = buildThunks({\n baseQuery,\n reducerPath,\n context,\n api,\n serializeQueryArgs,\n assertTagType,\n selectors,\n onSchemaFailure,\n catchSchemaFailure,\n skipSchemaValidation\n });\n const {\n reducer,\n actions: sliceActions\n } = buildSlice({\n context,\n queryThunk,\n infiniteQueryThunk,\n mutationThunk,\n serializeQueryArgs,\n reducerPath,\n assertTagType,\n config: {\n refetchOnFocus,\n refetchOnReconnect,\n refetchOnMountOrArgChange,\n keepUnusedDataFor,\n reducerPath,\n invalidationBehavior\n }\n });\n safeAssign(api.util, {\n patchQueryData,\n updateQueryData,\n upsertQueryData,\n prefetch,\n resetApiState: sliceActions.resetApiState,\n upsertQueryEntries: sliceActions.cacheEntriesUpserted\n });\n safeAssign(api.internalActions, sliceActions);\n const internalStateMap = /* @__PURE__ */ new WeakMap();\n const getInternalState = (dispatch) => {\n const state = getOrInsertComputed(internalStateMap, dispatch, () => ({\n currentSubscriptions: /* @__PURE__ */ new Map(),\n currentPolls: /* @__PURE__ */ new Map(),\n runningQueries: /* @__PURE__ */ new Map(),\n runningMutations: /* @__PURE__ */ new Map()\n }));\n return state;\n };\n const {\n buildInitiateQuery,\n buildInitiateInfiniteQuery,\n buildInitiateMutation,\n getRunningMutationThunk,\n getRunningMutationsThunk,\n getRunningQueriesThunk,\n getRunningQueryThunk\n } = buildInitiate({\n queryThunk,\n mutationThunk,\n infiniteQueryThunk,\n api,\n serializeQueryArgs,\n context,\n getInternalState\n });\n safeAssign(api.util, {\n getRunningMutationThunk,\n getRunningMutationsThunk,\n getRunningQueryThunk,\n getRunningQueriesThunk\n });\n const {\n middleware,\n actions: middlewareActions\n } = buildMiddleware({\n reducerPath,\n context,\n queryThunk,\n mutationThunk,\n infiniteQueryThunk,\n api,\n assertTagType,\n selectors,\n getRunningQueryThunk,\n getInternalState\n });\n safeAssign(api.util, middlewareActions);\n safeAssign(api, {\n reducer,\n middleware\n });\n return {\n name: coreModuleName,\n injectEndpoint(endpointName, definition) {\n const anyApi = api;\n const endpoint = anyApi.endpoints[endpointName] ??= {};\n if (isQueryDefinition(definition)) {\n safeAssign(endpoint, {\n name: endpointName,\n select: buildQuerySelector(endpointName, definition),\n initiate: buildInitiateQuery(endpointName, definition)\n }, buildMatchThunkActions(queryThunk, endpointName));\n }\n if (isMutationDefinition(definition)) {\n safeAssign(endpoint, {\n name: endpointName,\n select: buildMutationSelector(),\n initiate: buildInitiateMutation(endpointName)\n }, buildMatchThunkActions(mutationThunk, endpointName));\n }\n if (isInfiniteQueryDefinition(definition)) {\n safeAssign(endpoint, {\n name: endpointName,\n select: buildInfiniteQuerySelector(endpointName, definition),\n initiate: buildInitiateInfiniteQuery(endpointName, definition)\n }, buildMatchThunkActions(queryThunk, endpointName));\n }\n }\n };\n }\n});\n\n// src/query/core/index.ts\nvar createApi = /* @__PURE__ */ buildCreateApi(coreModule());\nexport {\n NamedSchemaError,\n QueryStatus,\n _NEVER,\n buildCreateApi,\n copyWithStructuralSharing,\n coreModule,\n coreModuleName,\n createApi,\n defaultSerializeQueryArgs,\n fakeBaseQuery,\n fetchBaseQuery,\n retry,\n setupListeners,\n skipToken\n};\n//# sourceMappingURL=rtk-query.modern.mjs.map","import { fetchBaseQuery } from \"@reduxjs/toolkit/query/react\";\r\nimport type { BaseQueryFn, FetchArgs, FetchBaseQueryError } from \"@reduxjs/toolkit/query\";\r\n\r\nexport function createRemoteBaseQuery(standaloneUrl: string, path?: string) {\r\n let _baseUrl = standaloneUrl;\r\n\r\n function setBaseUrl(url: string) {\r\n _baseUrl = url;\r\n }\r\n\r\n const baseQuery: BaseQueryFn<string | FetchArgs, unknown, FetchBaseQueryError> =\r\n async (args, api, extraOptions) => {\r\n return fetchBaseQuery({\r\n baseUrl: path ? `${_baseUrl}/${path}` : _baseUrl,\r\n credentials: \"include\",\r\n })(args, api, extraOptions);\r\n };\r\n\r\n return { baseQuery, setBaseUrl };\r\n}","import { useState, useEffect, type ReactNode } from \"react\";\r\nimport {\r\n useGaiaRemoteConfig,\r\n type GaiaRemoteConfigs,\r\n} from \"../context/GaiaShellContext\";\r\n\r\nexport function createRemoteConfigProvider(\r\n remote: keyof GaiaRemoteConfigs,\r\n setBaseUrl: (url: string) => void,\r\n standaloneUrl: string,\r\n) {\r\n return function RemoteConfigProvider({ children }: { children: ReactNode }) {\r\n const config = useGaiaRemoteConfig(remote);\r\n const [ready, setReady] = useState(false);\r\n\r\n useEffect(() => {\r\n setBaseUrl(config?.baseUrl ?? standaloneUrl);\r\n setReady(true);\r\n }, [config?.baseUrl]);\r\n\r\n if (!ready) return null;\r\n\r\n return <>{children}</>;\r\n };\r\n}\r\n"],"names":["cloudLogo","GaiaHeader","logoSrc","logoAlt","title","menuGroups","rightSection","burgerSlot","navigate","useNavigate","jsx","Box","jsxs","Group","Image","group","Menu","Button","IconChevronDown","item","Title","NavbarLinksGroup","Icon","label","link","initiallyOpened","links","currentPath","hasLinks","opened","setOpened","useState","Text","Link","classes","items","Fragment","UnstyledButton","o","IconChevronRight","Collapse","GaiaNavbar","sections","resolveSection","pathname","useLocation","section","s","ScrollArea","SubHeader","content","resolveSubHeaderTitle","sectionTitle","child","GaiaShellLayout","headerProps","navbarProps","subHeaderProps","headerHeight","navbarWidth","navbarBreakpoint","children","toggle","useDisclosure","burger","Burger","subHeaderTitle","AppShell","Container","GaiaShellContext","createContext","useGaiaShellContext","useContext","useGaiaRemoteConfig","remote","GaiaShellProvider","value","formatProdErrorMessage","code","randomString","ActionTypes","actionTypes_default","isPlainObject","obj","proto","miniKindOf","val","type","isDate","isError","constructorName","ctorName","kindOf","typeOfVal","warning","message","getUnexpectedStateShapeWarningMessage","inputState","reducers","action","unexpectedKeyCache","reducerKeys","argumentName","unexpectedKeys","key","assertReducerShape","reducer","combineReducers","finalReducers","i","finalReducerKeys","shapeAssertionError","e","state","warningMessage","hasChanged","nextState","previousStateForKey","nextStateForKey","actionType","isAction","NOTHING","DRAFTABLE","DRAFT_STATE","errors","plugin","thing","data","die","error","args","msg","isFunction","O","getPrototypeOf","CONSTRUCTOR","PROTOTYPE","CONFIGURABLE","ENUMERABLE","WRITABLE","VALUE","isDraft","isDraftable","isArray","isMap","isSet","objectCtorString","cachedCtorStrings","isObjectish","Ctor","ctorString","original","each","iter","strict","getArchtype","entry","index","has","prop","get","set","propOrOldValue","is","x","y","target","isBoolean","isArrayIndex","n","getProxyDraft","latest","getFinalValue","shallowCopy","base","isPlain","descriptors","keys","desc","freeze","deep","isFrozen","dontMutateMethodOverride","_key","dontMutateFrozenCollections","PluginMapSet","PluginPatches","PluginArrayMethods","plugins","getPlugin","pluginKey","isPluginLoaded","loadPlugin","implementation","currentScope","getCurrentScope","createScope","parent_","immer_","usePatchesInScope","scope","patchListener","revokeScope","leaveScope","revokeDraft","enterScope","immer2","draft","processResult","result","baseDraft","finalize","patchPlugin_","maybeFreeze","rootScope","handleValue","isSameScope","callbacks_","generatePatchesAndFinalize","markStateFinalized","EMPTY_LOCATIONS_RESULT","updateDraftInParent","parent","draftValue","finalizedValue","originalKey","parentCopy","parentType","draftLocations","locations","location","registerChildFinalizationCallback","basePath","handleCrossReference","scope_","prepareCopy","targetCopy","handledSet","updatedValue","createProxyProxy","baseIsArray","traps","objectTraps","arrayTraps","revoke","proxy","arrayPlugin","isArrayWithStringProp","source","readPropFromProto","peek","childKey","childDraft","createProxy","getDescriptorFromProto","current2","currentState","markChanged","owner","fn","Immer2","config","recipe","defaultBase","self","base2","hasError","p","ip","patches","inversePatches","current","patch","applyPatchesImpl","rootScope2","currentImpl","copy","childValue","enablePatches","op","path","getPath","proxyDraft","valueAtKey","isSet2","setParent","resolvePath","REPLACE","ADD","REMOVE","generatePatches_","patches_","inversePatches_","generatePatchesFromAssigned","generateArrayPatches","generateSetPatches","base_","assigned_","copy_","allReassigned","copiedItem","baseItem","childState","clonePatchValueIfNeeded","type_","assignedValue","origValue","generateReplacementPatches_","baseValue","replacement","applyPatches_","deepClonePatchValue","k","v","cloned","immer","produce","produceWithPatches","applyPatches","runIdentityFunctionCheck","resultFunc","inputSelectorsResults","outputSelectorResult","isInputSameAsOutput","emptyObject","stack","runInputStabilityCheck","inputSelectorResultsObject","options","inputSelectorArgs","memoize","memoizeOptions","inputSelectorResults","inputSelectorResultsCopy","createAnEmptyObject","globalDevModeChecks","assertIsFunction","func","errorMessage","assertIsObject","object","assertIsArrayOfFunctions","array","itemTypes","ensureIsArray","getDependencies","createSelectorArgs","dependencies","collectInputSelectorResults","length","getDevModeChecksExecutionInfo","firstRun","devModeChecks","identityFunctionCheck","inputStabilityCheck","StrongRef","Ref","UNTERMINATED","TERMINATED","createCacheNode","weakMapMemoize","fnNode","resultEqualityCheck","lastResult","resultsCount","memoized","cacheNode","l","arg","objectCache","objectNode","primitiveCache","primitiveNode","terminatedNode","lastResultValue","createSelectorCreator","memoizeOrOptions","memoizeOptionsFromArgs","createSelectorCreatorOptions","createSelector2","recomputations","dependencyRecomputations","directlyPassedOptions","combinedOptions","argsMemoize","argsMemoizeOptions","finalMemoizeOptions","finalArgsMemoizeOptions","memoizedResultFunc","selector","createSelector","createStructuredSelector","inputSelectorsObject","selectorCreator","inputSelectorKeys","composition","hasMatchFunction","createAction","prepareAction","actionCreator","prepared","freezeDraftable","getOrInsertComputed","map","compute","SHOULD_AUTOBATCH","prepareAutoBatched","payload","executeReducerBuilderCallback","builderCallback","actionsMap","actionMatchers","defaultCaseReducer","builder","typeOrActionCreator","asyncThunk","matcher","isStateFunction","createReducer","initialState","mapOrBuilderCallback","finalActionMatchers","finalDefaultCaseReducer","getInitialState","frozenInitialState","caseReducers","reducer2","cr","previousState","caseReducer","matches","isAnyOf","matchers","isAllOf","hasExpectedRequestMetadata","validStatus","hasValidRequestId","hasValidRequestStatus","isAsyncThunkArray","a","isPending","asyncThunks","isRejected","isRejectedWithValue","hasFlag","isFulfilled","isAsyncThunkAction","urlAlphabet","nanoid","size","id","commonProperties","RejectWithValue","meta","FulfillWithMeta","miniSerializeError","simpleError","property","externalAbortMessage","createAsyncThunk","createAsyncThunk2","typePrefix","payloadCreator","fulfilled","requestId","pending","rejected","signal","dispatch","getState","extra","abortController","abortHandler","abortReason","abort","reason","promise","finalAction","conditionResult","isThenable","abortedPromise","_","reject","err","unwrapResult","asyncThunkSymbol","getType","slice","actionKey","buildCreateSlice","creators","cAT","name","reducerPath","buildReducerCreators","reducerNames","context","contextMethods","name2","reducerName","reducerDefinition","reducerDetails","isAsyncThunkSliceReducerDefinition","handleThunkCaseReducerDefinition","handleNormalReducerDefinition","buildReducer","extraReducers","finalCaseReducers","sM","m","selectSelf","injectedSelectorCache","injectedStateCache","_reducer","makeSelectorProps","reducerPath2","injected","selectSlice","sliceState","getSelectors","selectState","selectorCache","wrapSelector","injectable","pathOpt","newReducerPath","wrapper","rootState","createSlice","prepare","createNotation","maybeReducerWithPrepare","prepareCallback","isCaseReducerWithPrepareDefinition","settled","thunk","noop","SchemaError","issues","STATUS_UNINITIALIZED","STATUS_PENDING","STATUS_FULFILLED","STATUS_REJECTED","getRequestStatusFlags","status","isPlainObject2","copyWithStructuralSharing","oldObj","newObj","newKeys","oldKeys","isSameObject","mergeObj","filterMap","predicate","mapper","acc","isAbsoluteUrl","url","isDocumentVisible","isNotNullish","filterNullishValues","isOnline","withoutTrailingSlash","withoutLeadingSlash","joinUrls","delimiter","createNewMap","timeoutSignal","milliseconds","anySignal","signals","defaultFetchFn","defaultValidateStatus","response","defaultIsJsonContentType","headers","stripUndefined","isJsonifiable","body","fetchBaseQuery","baseUrl","prepareHeaders","fetchFn","paramsSerializer","isJsonContentType","jsonContentType","jsonReplacer","defaultTimeout","globalResponseHandler","globalValidateStatus","baseFetchOptions","api","extraOptions","endpoint","forced","params","responseHandler","validateStatus","timeout","rest","bodyIsJsonifiable","divider","query","request","responseClone","resultData","responseText","handleResponseError","handleResponse","r","text","HandledError","INTERNAL_PREFIX","ONLINE","OFFLINE","FOCUSED","onFocus","onFocusLost","onOnline","onOffline","ENDPOINT_QUERY","ENDPOINT_MUTATION","ENDPOINT_INFINITEQUERY","isQueryDefinition","isMutationDefinition","isInfiniteQueryDefinition","isAnyQueryDefinition","calculateProvidedBy","description","queryArg","assertTagTypes","finalDescription","tag","expandTagDescription","t","asSafePromise","fallback","getEndpointDefinition","endpointName","forceQueryFnSymbol","isUpsertQuery","buildInitiate","serializeQueryArgs","queryThunk","infiniteQueryThunk","mutationThunk","getInternalState","getRunningQueries","getRunningMutations","unsubscribeQueryResult","removeMutationResult","updateSubscriptionOptions","buildInitiateQuery","buildInitiateInfiniteQuery","buildInitiateMutation","getRunningQueryThunk","getRunningMutationThunk","getRunningQueriesThunk","getRunningMutationsThunk","queryArgs","endpointDefinition","queryCacheKey","_endpointName","fixedCacheKeyOrRequestId","middlewareWarning","returnedValue","_formatProdErrorMessage","buildInitiateAnyQuery","queryAction","subscribe","forceRefetch","subscriptionOptions","forceQueryFn","commonThunkArgs","direction","initialPageParam","refetchCachedPages","thunkResult","stateAfter","skippedSynchronously","runningQuery","selectFromState","statePromise","runningQueries","track","fixedCacheKey","unwrap","returnValuePromise","reset","ret","runningMutations","NamedSchemaError","schemaName","_bqMeta","shouldSkip","skipSchemaValidation","parseWithSchema","schema","bqMeta","defaultTransformResponse","baseQueryReturnValue","addShouldAutoBatch","buildThunks","baseQuery","endpointDefinitions","assertTagType","selectors","onSchemaFailure","globalCatchSchemaFailure","globalSkipSchemaValidation","patchQueryData","updateProvided","newValue","providedTags","addToStart","max","newItems","addToEnd","updateQueryData","updateRecipe","upsertQueryData","getTransformCallbackForEndpoint","transformFieldName","executeEndpoint","rejectWithValue","fulfillWithValue","metaSchema","isQuery","transformResponse","baseQueryApi","isForcedQuery","finalQueryReturnValue","fetchPage","param","maxPages","previous","finalQueryArg","pageResponse","executeRequest","addTo","argSchema","rawResponseSchema","responseSchema","arg2","what","transformedResponse","infiniteQueryOptions","blankData","cachedData","existingData","getPreviousPageParam","getNextPageParam","cachedPageParams","firstPageParam","totalPages","caughtError","transformErrorResponse","rawErrorResponseSchema","errorResponseSchema","transformedErrorResponse","info","catchSchemaFailure","requestState","baseFetchOnMountOrArgChange","fulfilledVal","refetchVal","createQueryThunk","queryThunkArg","currentArg","previousArg","hasTheForce","hasMaxAge","prefetch","force","maxAge","force2","options2","latestStateValue","lastFulfilledTs","matchesEndpoint","buildMatchThunkActions","pages","pageParams","lastIndex","calculateProvidedByThunk","getCurrent","updateQuerySubstateIfExists","update","substate","getMutationCacheKey","updateMutationSubstateIfExists","buildSlice","definitions","apiUid","extractRehydrationInfo","hasRehydrationInfo","resetApiState","writePendingCacheEntry","upserting","writeFulfilledCacheEntry","merge","fulfilledTimeStamp","baseQueryMeta","newData","createNextState","draftSubstateData","querySlice","condition","queries","mutationSlice","cacheKey","startedTimeStamp","mutations","initialInvalidationState","invalidationSlice","removeCacheKeyFromTags","subscribedQueries","provided","incomingTags","cacheKeys","writeProvidedTagsForQueries","mockActions","queryDescription","existingTags","tagType","tagId","tagSubscriptions","qc","actions3","providedByEntries","subscriptionSlice","d","internalSubscriptionsSlice","configSlice","combinedReducer","actions2","skipToken","initialSubState","defaultQuerySubState","defaultMutationSubState","buildSelectors","selectSkippedQuery","selectSkippedMutation","buildQuerySelector","buildInfiniteQuerySelector","buildMutationSelector","selectInvalidatedBy","selectCachedArgsForQuery","selectApiState","selectQueries","selectMutations","selectQueryEntry","selectConfig","withRequestFlags","buildAnyQuerySelector","combiner","serializedArgs","withInfiniteQueryResultFlags","stateWithRequestFlags","isLoading","isForward","isBackward","getHasNextPage","getHasPreviousPage","mutationId","tags","apiState","toInvalidate","finalTags","invalidateSubscriptions","invalidate","querySubState","queryName","cache","defaultSerializeQueryArgs","serialized","cached","stringified","key2","buildCreateApi","modules","optionsWithDefaults","queryArgsApi","finalSerializeQueryArgs","endpointSQA","queryArgsApi2","initialResult","injectEndpoints","addTagTypes","endpoints","eT","partialDefinition","initializedModules","inject","evaluatedEndpoints","definition","_formatProdErrorMessage2","getPreviousPageParam2","_formatProdErrorMessage22","_formatProdErrorMessage3","safeAssign","buildBatchedActionsHandler","internalState","mwApi","subscriptionsPrefix","previousSubscriptions","updateSyncTimer","actuallyMutateSubscriptions","currentSubscriptions","sub","mutated","getSubscriptions","subscriptionSelectors","serializeSubscriptions","mwApi2","didMutate","actionShouldContinue","newSubscriptions","isSubscriptionSliceAction","isAdditionalSubscriptionAction","THIRTY_TWO_BIT_MAX_TIMER_SECONDS","buildCacheCollectionHandler","removeQueryResult","cacheEntriesUpserted","canTriggerUnsubscribe","anySubscriptionsRemainingForKey","subscriptions","currentRemovalTimeouts","abortAllPromises","promiseMap","handler","queryCacheKeys","handleUnsubscribeMany","api2","handleUnsubscribe","keepUnusedDataFor","finalKeepUnusedDataFor","currentTimeout","neverResolvedError","buildCacheLifecycleHandler","isQueryThunk","isMutationThunk","isFulfilledThunk","lifecycleMap","resolveLifecycleEntry","lifecycle","removeLifecycleEntry","getActionMetaFields","originalArgs","stateBefore","getCacheKey","checkForNewCacheKey","cacheKey2","oldEntry","newEntry","handleNewKey","onCacheEntryAdded","cacheEntryRemoved","resolve","cacheDataLoaded","__","extra2","lifecycleApi","runningHandler","buildDevCheckHandler","buildInvalidationByTagsHandler","refetchQuery","isThunkActionWithTags","isQueryEnd","pendingTagInvalidations","pendingRequestCount","invalidateTags","hasPendingRequests","newTags","valuesArray","subscriptionSubState","buildPollingHandler","currentPolls","pendingPollingUpdates","pollingUpdateTimer","schedulePollingUpdate","startNextPoll","clearPolls","updatePollingInterval","lowestPollingInterval","skipPollingIfUnfocused","findLowestPollingInterval","currentPoll","nextPollTimestamp","updateCounters","cleanupPollForKey","existingPoll","subscribers","buildQueryLifecycleHandler","isPendingThunk","isRejectedThunk","isFullfilledThunk","onQueryStarted","queryFulfilled","rejectedWithValue","buildWindowEventHandler","refetchValidQueries","values","buildMiddleware","input","isThisApiSliceAction","handlerBuilders","initialized2","builderArgs","handlers","build","batchedActionsHandler","windowEventsHandler","next","mwApiWithNext","internalProbeResult","res","coreModuleName","coreModule","tagTypes","refetchOnMountOrArgChange","refetchOnFocus","refetchOnReconnect","invalidationBehavior","sliceActions","internalStateMap","middleware","middlewareActions","anyApi","createRemoteBaseQuery","standaloneUrl","_baseUrl","setBaseUrl","createRemoteConfigProvider","ready","setReady","useEffect"],"mappings":"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","x_google_ignoreList":[8,9,10,11,12,13]}
|