@clerk/shared
Version:
Internal package utils used by the Clerk SDKs
1 lines • 45 kB
Source Map (JSON)
{"version":3,"sources":["../../src/react/hooks/createContextAndHook.ts","../../src/react/clerk-swr.ts","../../src/react/contexts.tsx","../../src/react/hooks/usePagesOrInfinite.ts","../../src/react/hooks/useOrganization.tsx","../../src/react/hooks/useOrganizationList.tsx","../../src/react/hooks/useOrganizations.tsx","../../src/react/hooks/useSafeLayoutEffect.tsx"],"sourcesContent":["'use client';\nimport React from 'react';\n\nexport function assertContextExists(contextVal: unknown, msgOrCtx: string | React.Context<any>): asserts contextVal {\n if (!contextVal) {\n throw typeof msgOrCtx === 'string' ? new Error(msgOrCtx) : new Error(`${msgOrCtx.displayName} not found`);\n }\n}\n\ntype Options = { assertCtxFn?: (v: unknown, msg: string) => void };\ntype ContextOf<T> = React.Context<{ value: T } | undefined>;\ntype UseCtxFn<T> = () => T;\n\n/**\n * Creates and returns a Context and two hooks that return the context value.\n * The Context type is derived from the type passed in by the user.\n * The first hook returned guarantees that the context exists so the returned value is always CtxValue\n * The second hook makes no guarantees, so the returned value can be CtxValue | undefined\n */\nexport const createContextAndHook = <CtxVal>(\n displayName: string,\n options?: Options,\n): [ContextOf<CtxVal>, UseCtxFn<CtxVal>, UseCtxFn<CtxVal | Partial<CtxVal>>] => {\n const { assertCtxFn = assertContextExists } = options || {};\n const Ctx = React.createContext<{ value: CtxVal } | undefined>(undefined);\n Ctx.displayName = displayName;\n\n const useCtx = () => {\n const ctx = React.useContext(Ctx);\n assertCtxFn(ctx, `${displayName} not found`);\n return (ctx as any).value as CtxVal;\n };\n\n const useCtxWithoutGuarantee = () => {\n const ctx = React.useContext(Ctx);\n return ctx ? ctx.value : {};\n };\n\n return [Ctx, useCtx, useCtxWithoutGuarantee];\n};\n","'use client';\nexport * from 'swr';\nexport { default as useSWR, SWRConfig } from 'swr';\nexport { default as useSWRInfinite } from 'swr/infinite';\n","'use client';\n\nimport type {\n ActiveSessionResource,\n ClientResource,\n LoadedClerk,\n OrganizationInvitationResource,\n OrganizationMembershipResource,\n OrganizationResource,\n UserResource,\n} from '@clerk/types';\nimport type { PropsWithChildren } from 'react';\nimport React from 'react';\n\nimport { deprecated } from '../deprecated';\nimport { SWRConfig } from './clerk-swr';\nimport { createContextAndHook } from './hooks/createContextAndHook';\n\nconst [ClerkInstanceContext, useClerkInstanceContext] = createContextAndHook<LoadedClerk>('ClerkInstanceContext');\nconst [UserContext, useUserContext] = createContextAndHook<UserResource | null | undefined>('UserContext');\nconst [ClientContext, useClientContext] = createContextAndHook<ClientResource | null | undefined>('ClientContext');\nconst [SessionContext, useSessionContext] = createContextAndHook<ActiveSessionResource | null | undefined>(\n 'SessionContext',\n);\n\ntype OrganizationContextProps = {\n organization: OrganizationResource | null | undefined;\n\n /**\n * @deprecated This property will be dropped in the next major release.\n * This property is only used in another deprecated part: `invitationList` from useOrganization\n */\n lastOrganizationInvitation: OrganizationInvitationResource | null | undefined;\n /**\n * @deprecated This property will be dropped in the next major release.\n * This property is only used in another deprecated part: `membershipList` from useOrganization\n */\n lastOrganizationMember: OrganizationMembershipResource | null | undefined;\n};\nconst [OrganizationContextInternal, useOrganizationContext] = createContextAndHook<{\n organization: OrganizationResource | null | undefined;\n lastOrganizationInvitation: OrganizationInvitationResource | null | undefined;\n lastOrganizationMember: OrganizationMembershipResource | null | undefined;\n}>('OrganizationContext');\n\nconst OrganizationProvider = ({\n children,\n organization,\n lastOrganizationMember,\n lastOrganizationInvitation,\n swrConfig,\n}: PropsWithChildren<\n OrganizationContextProps & {\n // Exporting inferred types directly from SWR will result in error while building declarations\n swrConfig?: any;\n }\n>) => {\n return (\n <SWRConfig value={swrConfig}>\n <OrganizationContextInternal.Provider\n value={{\n value: {\n organization,\n lastOrganizationMember,\n lastOrganizationInvitation,\n },\n }}\n >\n {children}\n </OrganizationContextInternal.Provider>\n </SWRConfig>\n );\n};\n\n/**\n * @deprecated use OrganizationProvider instead\n */\nexport const OrganizationContext = (...args: Parameters<typeof OrganizationProvider>) => {\n deprecated('OrganizationContext', 'Use `OrganizationProvider` instead');\n return OrganizationProvider(...args);\n};\n\nexport {\n ClientContext,\n useClientContext,\n OrganizationProvider,\n useOrganizationContext,\n UserContext,\n useUserContext,\n SessionContext,\n useSessionContext,\n ClerkInstanceContext,\n useClerkInstanceContext,\n};\n","'use client';\n\nimport { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { useSWR, useSWRInfinite } from '../clerk-swr';\nimport type { ValueOrSetter } from '../types';\nimport type { PaginatedResources } from '../types';\n\nfunction getDifferentKeys(obj1: Record<string, unknown>, obj2: Record<string, unknown>): Record<string, unknown> {\n const keysSet = new Set(Object.keys(obj2));\n const differentKeysObject: Record<string, unknown> = {};\n\n for (const key1 of Object.keys(obj1)) {\n if (!keysSet.has(key1)) {\n differentKeysObject[key1] = obj1[key1];\n }\n }\n\n return differentKeysObject;\n}\n\ntype PagesOrInfiniteOptions = {\n /**\n * This the starting point for your fetched results. The initial value persists between re-renders\n */\n initialPage?: number;\n /**\n * Maximum number of items returned per request. The initial value persists between re-renders\n */\n pageSize?: number;\n};\n\nexport const useWithSafeValues = <T extends PagesOrInfiniteOptions>(params: T | true | undefined, defaultValues: T) => {\n const shouldUseDefaults = typeof params === 'boolean' && params;\n\n // Cache initialPage and initialPageSize until unmount\n const initialPageRef = useRef(\n shouldUseDefaults ? defaultValues.initialPage : params?.initialPage ?? defaultValues.initialPage,\n );\n const pageSizeRef = useRef(shouldUseDefaults ? defaultValues.pageSize : params?.pageSize ?? defaultValues.pageSize);\n\n const newObj: Record<string, unknown> = {};\n for (const key of Object.keys(defaultValues)) {\n // @ts-ignore\n newObj[key] = shouldUseDefaults ? defaultValues[key] : params?.[key] ?? defaultValues[key];\n }\n\n return {\n ...newObj,\n initialPage: initialPageRef.current,\n pageSize: pageSizeRef.current,\n } as T;\n};\n\ntype ArrayType<DataArray> = DataArray extends Array<infer ElementType> ? ElementType : never;\ntype ExtractData<Type> = Type extends { data: infer Data } ? ArrayType<Data> : Type;\n\ntype UsePagesOrInfinite = <\n Params extends PagesOrInfiniteOptions,\n FetcherReturnData extends Record<string, any>,\n CacheKeys = Record<string, unknown>,\n>(\n /**\n * The parameters will be passed to the fetcher\n */\n params: Params,\n /**\n * A Promise returning function to fetch your data\n */\n fetcher: ((p: Params) => FetcherReturnData | Promise<FetcherReturnData>) | undefined,\n /**\n * Internal configuration of the hook\n */\n options: {\n /**\n * Persists the previous pages with new ones in the same array\n */\n infinite?: boolean;\n /**\n * Return the previous key's data until the new data has been loaded\n */\n keepPreviousData?: boolean;\n /**\n * Should a request be triggered\n */\n enabled?: boolean;\n },\n cacheKeys: CacheKeys,\n) => PaginatedResources<ExtractData<FetcherReturnData>> & {\n unstable__mutate: () => Promise<unknown>;\n};\n\nexport const usePagesOrInfinite: UsePagesOrInfinite = (params, fetcher, options, cacheKeys) => {\n const [paginatedPage, setPaginatedPage] = useState(params.initialPage ?? 1);\n\n // Cache initialPage and initialPageSize until unmount\n const initialPageRef = useRef(params.initialPage ?? 1);\n const pageSizeRef = useRef(params.pageSize ?? 10);\n\n const enabled = options.enabled ?? true;\n const triggerInfinite = options.infinite ?? false;\n const keepPreviousData = options.keepPreviousData ?? false;\n\n const pagesCacheKey = {\n ...cacheKeys,\n ...params,\n initialPage: paginatedPage,\n pageSize: pageSizeRef.current,\n };\n\n const {\n data: swrData,\n isValidating: swrIsValidating,\n isLoading: swrIsLoading,\n error: swrError,\n mutate: swrMutate,\n } = useSWR(\n !triggerInfinite && !!fetcher && enabled ? pagesCacheKey : null,\n cacheKeyParams => {\n // @ts-ignore\n const requestParams = getDifferentKeys(cacheKeyParams, cacheKeys);\n // @ts-ignore\n return fetcher?.(requestParams);\n },\n { keepPreviousData },\n );\n\n const {\n data: swrInfiniteData,\n isLoading: swrInfiniteIsLoading,\n isValidating: swrInfiniteIsValidating,\n error: swrInfiniteError,\n size,\n setSize,\n mutate: swrInfiniteMutate,\n } = useSWRInfinite(\n pageIndex => {\n if (!triggerInfinite || !enabled) {\n return null;\n }\n\n return {\n ...params,\n ...cacheKeys,\n initialPage: initialPageRef.current + pageIndex,\n pageSize: pageSizeRef.current,\n };\n },\n cacheKeyParams => {\n // @ts-ignore\n const requestParams = getDifferentKeys(cacheKeyParams, cacheKeys);\n // @ts-ignore\n return fetcher?.(requestParams);\n },\n );\n\n const page = useMemo(() => {\n if (triggerInfinite) {\n return size;\n }\n return paginatedPage;\n }, [triggerInfinite, size, paginatedPage]);\n\n const fetchPage: ValueOrSetter<number> = useCallback(\n numberOrgFn => {\n if (triggerInfinite) {\n void setSize(numberOrgFn);\n return;\n }\n return setPaginatedPage(numberOrgFn);\n },\n [setSize],\n );\n\n const data = useMemo(() => {\n if (triggerInfinite) {\n return swrInfiniteData?.map(a => a?.data).flat() ?? [];\n }\n return swrData?.data ?? [];\n }, [triggerInfinite, swrData, swrInfiniteData]);\n\n const count = useMemo(() => {\n if (triggerInfinite) {\n return swrInfiniteData?.[swrInfiniteData?.length - 1]?.total_count || 0;\n }\n return swrData?.total_count ?? 0;\n }, [triggerInfinite, swrData, swrInfiniteData]);\n\n const isLoading = triggerInfinite ? swrInfiniteIsLoading : swrIsLoading;\n const isFetching = triggerInfinite ? swrInfiniteIsValidating : swrIsValidating;\n const isError = !!(triggerInfinite ? swrInfiniteError : swrError);\n /**\n * Helpers\n */\n const fetchNext = useCallback(() => {\n fetchPage(n => Math.max(0, n + 1));\n }, [fetchPage]);\n\n const fetchPrevious = useCallback(() => {\n fetchPage(n => Math.max(0, n - 1));\n }, [fetchPage]);\n\n const offsetCount = (initialPageRef.current - 1) * pageSizeRef.current;\n\n const pageCount = Math.ceil((count - offsetCount) / pageSizeRef.current);\n const hasNextPage = count - offsetCount * pageSizeRef.current > page * pageSizeRef.current;\n const hasPreviousPage = (page - 1) * pageSizeRef.current > offsetCount * pageSizeRef.current;\n\n const unstable__mutate = triggerInfinite ? swrInfiniteMutate : swrMutate;\n\n return {\n data,\n count,\n isLoading,\n isFetching,\n isError,\n page,\n pageCount,\n fetchPage,\n fetchNext,\n fetchPrevious,\n hasNextPage,\n hasPreviousPage,\n unstable__mutate,\n };\n};\n","import type {\n ClerkPaginationParams,\n GetDomainsParams,\n GetInvitationsParams,\n GetMembershipRequestParams,\n GetMembershipsParams,\n GetPendingInvitationsParams,\n OrganizationDomainResource,\n OrganizationInvitationResource,\n OrganizationMembershipRequestResource,\n OrganizationMembershipResource,\n OrganizationResource,\n} from '@clerk/types';\nimport type { ClerkPaginatedResponse } from '@clerk/types';\nimport type { GetMembersParams } from '@clerk/types';\n\nimport { deprecated } from '../../deprecated';\nimport { useSWR } from '../clerk-swr';\nimport { useClerkInstanceContext, useOrganizationContext, useSessionContext } from '../contexts';\nimport type { PaginatedResources, PaginatedResourcesWithDefault } from '../types';\nimport { usePagesOrInfinite, useWithSafeValues } from './usePagesOrInfinite';\n\ntype UseOrganizationParams = {\n /**\n * @deprecated Use `invitations` instead\n */\n invitationList?: GetPendingInvitationsParams;\n /**\n * @deprecated Use `memberships` instead\n */\n membershipList?: GetMembershipsParams;\n domains?:\n | true\n | (GetDomainsParams & {\n infinite?: boolean;\n keepPreviousData?: boolean;\n });\n membershipRequests?:\n | true\n | (GetMembershipRequestParams & {\n infinite?: boolean;\n keepPreviousData?: boolean;\n });\n memberships?:\n | true\n | (GetMembersParams & {\n infinite?: boolean;\n keepPreviousData?: boolean;\n });\n\n invitations?:\n | true\n | (GetInvitationsParams & {\n infinite?: boolean;\n keepPreviousData?: boolean;\n });\n};\n\ntype UseOrganizationReturn =\n | {\n isLoaded: false;\n organization: undefined;\n /**\n * @deprecated Use `invitations` instead\n */\n invitationList: undefined;\n /**\n * @deprecated Use `memberships` instead\n */\n membershipList: undefined;\n membership: undefined;\n domains: PaginatedResourcesWithDefault<OrganizationDomainResource>;\n membershipRequests: PaginatedResourcesWithDefault<OrganizationMembershipRequestResource>;\n memberships: PaginatedResourcesWithDefault<OrganizationMembershipResource>;\n invitations: PaginatedResourcesWithDefault<OrganizationInvitationResource>;\n }\n | {\n isLoaded: true;\n organization: OrganizationResource;\n /**\n * @deprecated Use `invitations` instead\n */\n invitationList: undefined;\n /**\n * @deprecated Use `memberships` instead\n */\n membershipList: undefined;\n membership: undefined;\n domains: PaginatedResourcesWithDefault<OrganizationDomainResource>;\n membershipRequests: PaginatedResourcesWithDefault<OrganizationMembershipRequestResource>;\n memberships: PaginatedResourcesWithDefault<OrganizationMembershipResource>;\n invitations: PaginatedResourcesWithDefault<OrganizationInvitationResource>;\n }\n | {\n isLoaded: boolean;\n organization: OrganizationResource | null;\n /**\n * @deprecated Use `invitations` instead\n */\n invitationList: OrganizationInvitationResource[] | null | undefined;\n /**\n * @deprecated Use `memberships` instead\n */\n membershipList: OrganizationMembershipResource[] | null | undefined;\n membership: OrganizationMembershipResource | null | undefined;\n domains: PaginatedResources<OrganizationDomainResource> | null;\n membershipRequests: PaginatedResources<OrganizationMembershipRequestResource> | null;\n memberships: PaginatedResources<OrganizationMembershipResource> | null;\n invitations: PaginatedResources<OrganizationInvitationResource> | null;\n };\n\ntype UseOrganization = (params?: UseOrganizationParams) => UseOrganizationReturn;\n\nconst undefinedPaginatedResource = {\n data: undefined,\n count: undefined,\n isLoading: false,\n isFetching: false,\n isError: false,\n page: undefined,\n pageCount: undefined,\n fetchPage: undefined,\n fetchNext: undefined,\n fetchPrevious: undefined,\n hasNextPage: false,\n hasPreviousPage: false,\n} as const;\n\nexport const useOrganization: UseOrganization = params => {\n const {\n invitationList: invitationListParams,\n membershipList: membershipListParams,\n domains: domainListParams,\n membershipRequests: membershipRequestsListParams,\n memberships: membersListParams,\n invitations: invitationsListParams,\n } = params || {};\n const { organization, lastOrganizationMember, lastOrganizationInvitation } = useOrganizationContext();\n const session = useSessionContext();\n\n const domainSafeValues = useWithSafeValues(domainListParams, {\n initialPage: 1,\n pageSize: 10,\n keepPreviousData: false,\n infinite: false,\n enrollmentMode: undefined,\n });\n\n const membershipRequestSafeValues = useWithSafeValues(membershipRequestsListParams, {\n initialPage: 1,\n pageSize: 10,\n status: 'pending',\n keepPreviousData: false,\n infinite: false,\n });\n\n const membersSafeValues = useWithSafeValues(membersListParams, {\n initialPage: 1,\n pageSize: 10,\n role: undefined,\n keepPreviousData: false,\n infinite: false,\n });\n\n const invitationsSafeValues = useWithSafeValues(invitationsListParams, {\n initialPage: 1,\n pageSize: 10,\n status: ['pending'],\n keepPreviousData: false,\n infinite: false,\n });\n\n const clerk = useClerkInstanceContext();\n\n const shouldFetch = !!(clerk.loaded && session && organization);\n\n const domainParams =\n typeof domainListParams === 'undefined'\n ? undefined\n : {\n initialPage: domainSafeValues.initialPage,\n pageSize: domainSafeValues.pageSize,\n enrollmentMode: domainSafeValues.enrollmentMode,\n };\n\n const membershipRequestParams =\n typeof membershipRequestsListParams === 'undefined'\n ? undefined\n : {\n initialPage: membershipRequestSafeValues.initialPage,\n pageSize: membershipRequestSafeValues.pageSize,\n status: membershipRequestSafeValues.status,\n };\n\n const membersParams =\n typeof membersListParams === 'undefined'\n ? undefined\n : {\n initialPage: membersSafeValues.initialPage,\n pageSize: membersSafeValues.pageSize,\n role: membersSafeValues.role,\n };\n\n const invitationsParams =\n typeof invitationsListParams === 'undefined'\n ? undefined\n : {\n initialPage: invitationsSafeValues.initialPage,\n pageSize: invitationsSafeValues.pageSize,\n status: invitationsSafeValues.status,\n };\n\n const domains = usePagesOrInfinite<GetDomainsParams, ClerkPaginatedResponse<OrganizationDomainResource>>(\n {\n ...domainParams,\n },\n organization?.getDomains,\n {\n keepPreviousData: domainSafeValues.keepPreviousData,\n infinite: domainSafeValues.infinite,\n enabled: !!domainParams,\n },\n {\n type: 'domains',\n organizationId: organization?.id,\n },\n );\n\n const membershipRequests = usePagesOrInfinite<\n GetMembershipRequestParams,\n ClerkPaginatedResponse<OrganizationMembershipRequestResource>\n >(\n {\n ...membershipRequestParams,\n },\n organization?.getMembershipRequests,\n {\n keepPreviousData: membershipRequestSafeValues.keepPreviousData,\n infinite: membershipRequestSafeValues.infinite,\n enabled: !!membershipRequestParams,\n },\n {\n type: 'membershipRequests',\n organizationId: organization?.id,\n },\n );\n\n const memberships = usePagesOrInfinite<GetMembersParams, ClerkPaginatedResponse<OrganizationMembershipResource>>(\n {\n ...membersParams,\n paginated: true,\n } as any,\n organization?.getMemberships as unknown as any,\n {\n keepPreviousData: membersSafeValues.keepPreviousData,\n infinite: membersSafeValues.infinite,\n enabled: !!membersParams,\n },\n {\n type: 'members',\n organizationId: organization?.id,\n },\n );\n\n const invitations = usePagesOrInfinite<GetInvitationsParams, ClerkPaginatedResponse<OrganizationInvitationResource>>(\n {\n ...invitationsParams,\n },\n organization?.getInvitations,\n {\n keepPreviousData: membersSafeValues.keepPreviousData,\n infinite: membersSafeValues.infinite,\n enabled: !!invitationsParams,\n },\n {\n type: 'invitations',\n organizationId: organization?.id,\n },\n );\n\n // Some gymnastics to adhere to the rules of hooks\n // We need to make sure useSWR is called on every render\n const pendingInvitations = !clerk.loaded\n ? () => [] as OrganizationInvitationResource[]\n : () => clerk.organization?.getPendingInvitations(invitationListParams);\n\n const currentOrganizationMemberships = !clerk.loaded\n ? () => [] as OrganizationMembershipResource[]\n : () => clerk.organization?.getMemberships(membershipListParams);\n\n if (invitationListParams) {\n deprecated('invitationList in useOrganization', 'Use the `invitations` property and return value instead.');\n }\n\n const {\n data: invitationList,\n isValidating: isInvitationsLoading,\n mutate: mutateInvitationList,\n } = useSWR(\n shouldFetch && invitationListParams\n ? cacheKey('invites', organization, lastOrganizationInvitation, invitationListParams)\n : null,\n pendingInvitations,\n );\n\n if (membershipListParams) {\n deprecated('membershipList in useOrganization', 'Use the `memberships` property and return value instead.');\n }\n\n const {\n data: membershipList,\n isValidating: isMembershipsLoading,\n mutate: mutateMembershipList,\n } = useSWR(\n shouldFetch && membershipListParams\n ? cacheKey('memberships', organization, lastOrganizationMember, membershipListParams)\n : null,\n currentOrganizationMemberships,\n );\n\n if (organization === undefined) {\n return {\n isLoaded: false,\n organization: undefined,\n invitationList: undefined,\n membershipList: undefined,\n membership: undefined,\n domains: undefinedPaginatedResource,\n membershipRequests: undefinedPaginatedResource,\n memberships: undefinedPaginatedResource,\n invitations: undefinedPaginatedResource,\n };\n }\n\n if (organization === null) {\n return {\n isLoaded: true,\n organization: null,\n invitationList: null,\n membershipList: null,\n membership: null,\n domains: null,\n membershipRequests: null,\n memberships: null,\n invitations: null,\n };\n }\n\n /** In SSR context we include only the organization object when loadOrg is set to true. */\n if (!clerk.loaded && organization) {\n return {\n isLoaded: true,\n organization,\n invitationList: undefined,\n membershipList: undefined,\n membership: undefined,\n domains: undefinedPaginatedResource,\n membershipRequests: undefinedPaginatedResource,\n memberships: undefinedPaginatedResource,\n invitations: undefinedPaginatedResource,\n };\n }\n\n return {\n isLoaded: !isMembershipsLoading && !isInvitationsLoading,\n organization,\n membershipList,\n membership: getCurrentOrganizationMembership(session!.user.organizationMemberships, organization.id), // your membership in the current org\n invitationList,\n unstable__mutate: () => {\n void mutateMembershipList();\n void mutateInvitationList();\n },\n domains,\n membershipRequests,\n memberships,\n invitations,\n };\n};\n\nfunction getCurrentOrganizationMembership(\n organizationMemberships: OrganizationMembershipResource[],\n activeOrganizationId: string,\n) {\n return organizationMemberships.find(\n organizationMembership => organizationMembership.organization.id === activeOrganizationId,\n );\n}\n\nfunction cacheKey(\n type: 'memberships' | 'invites',\n organization: OrganizationResource,\n resource: OrganizationInvitationResource | OrganizationMembershipResource | null | undefined,\n pagination: ClerkPaginationParams,\n) {\n return [type, organization.id, resource?.id, resource?.updatedAt, pagination.offset, pagination.limit]\n .filter(Boolean)\n .join('-');\n}\n","import type {\n ClerkPaginatedResponse,\n CreateOrganizationParams,\n GetUserOrganizationInvitationsParams,\n GetUserOrganizationMembershipParams,\n GetUserOrganizationSuggestionsParams,\n OrganizationMembershipResource,\n OrganizationResource,\n OrganizationSuggestionResource,\n SetActive,\n UserOrganizationInvitationResource,\n} from '@clerk/types';\n\nimport { deprecatedObjectProperty } from '../../deprecated';\nimport { useClerkInstanceContext, useUserContext } from '../contexts';\nimport type { PaginatedResources, PaginatedResourcesWithDefault } from '../types';\nimport { usePagesOrInfinite, useWithSafeValues } from './usePagesOrInfinite';\n\ntype UseOrganizationListParams = {\n userMemberships?:\n | true\n | (GetUserOrganizationMembershipParams & {\n infinite?: boolean;\n keepPreviousData?: boolean;\n });\n userInvitations?:\n | true\n | (GetUserOrganizationInvitationsParams & {\n infinite?: boolean;\n keepPreviousData?: boolean;\n });\n userSuggestions?:\n | true\n | (GetUserOrganizationSuggestionsParams & {\n infinite?: boolean;\n keepPreviousData?: boolean;\n });\n};\n\ntype OrganizationList = ReturnType<typeof createOrganizationList>;\n\ntype UseOrganizationListReturn =\n | {\n isLoaded: false;\n /**\n * @deprecated Use userMemberships instead\n */\n organizationList: undefined;\n createOrganization: undefined;\n setActive: undefined;\n userMemberships: PaginatedResourcesWithDefault<OrganizationMembershipResource>;\n userInvitations: PaginatedResourcesWithDefault<UserOrganizationInvitationResource>;\n userSuggestions: PaginatedResourcesWithDefault<OrganizationSuggestionResource>;\n }\n | {\n isLoaded: boolean;\n /**\n * @deprecated Use userMemberships instead\n */\n organizationList: OrganizationList;\n createOrganization: (params: CreateOrganizationParams) => Promise<OrganizationResource>;\n setActive: SetActive;\n userMemberships: PaginatedResources<OrganizationMembershipResource>;\n userInvitations: PaginatedResources<UserOrganizationInvitationResource>;\n userSuggestions: PaginatedResources<OrganizationSuggestionResource>;\n };\n\nconst undefinedPaginatedResource = {\n data: undefined,\n count: undefined,\n isLoading: false,\n isFetching: false,\n isError: false,\n page: undefined,\n pageCount: undefined,\n fetchPage: undefined,\n fetchNext: undefined,\n fetchPrevious: undefined,\n hasNextPage: false,\n hasPreviousPage: false,\n unstable__mutate: undefined,\n} as const;\n\ntype UseOrganizationList = (params?: UseOrganizationListParams) => UseOrganizationListReturn;\n\nexport const useOrganizationList: UseOrganizationList = params => {\n const { userMemberships, userInvitations, userSuggestions } = params || {};\n\n const userMembershipsSafeValues = useWithSafeValues(userMemberships, {\n initialPage: 1,\n pageSize: 10,\n keepPreviousData: false,\n infinite: false,\n });\n\n const userInvitationsSafeValues = useWithSafeValues(userInvitations, {\n initialPage: 1,\n pageSize: 10,\n status: 'pending',\n keepPreviousData: false,\n infinite: false,\n });\n\n const userSuggestionsSafeValues = useWithSafeValues(userSuggestions, {\n initialPage: 1,\n pageSize: 10,\n status: 'pending',\n keepPreviousData: false,\n infinite: false,\n });\n\n const clerk = useClerkInstanceContext();\n const user = useUserContext();\n\n const userMembershipsParams =\n typeof userMemberships === 'undefined'\n ? undefined\n : {\n initialPage: userMembershipsSafeValues.initialPage,\n pageSize: userMembershipsSafeValues.pageSize,\n };\n\n const userInvitationsParams =\n typeof userInvitations === 'undefined'\n ? undefined\n : {\n initialPage: userInvitationsSafeValues.initialPage,\n pageSize: userInvitationsSafeValues.pageSize,\n status: userInvitationsSafeValues.status,\n };\n\n const userSuggestionsParams =\n typeof userSuggestions === 'undefined'\n ? undefined\n : {\n initialPage: userSuggestionsSafeValues.initialPage,\n pageSize: userSuggestionsSafeValues.pageSize,\n status: userSuggestionsSafeValues.status,\n };\n\n const isClerkLoaded = !!(clerk.loaded && user);\n\n const memberships = usePagesOrInfinite<\n GetUserOrganizationMembershipParams,\n ClerkPaginatedResponse<OrganizationMembershipResource>\n >(\n {\n ...userMembershipsParams,\n paginated: true,\n } as any,\n user?.getOrganizationMemberships as unknown as any,\n {\n keepPreviousData: userMembershipsSafeValues.keepPreviousData,\n infinite: userMembershipsSafeValues.infinite,\n enabled: !!userMembershipsParams,\n },\n {\n type: 'userMemberships',\n userId: user?.id,\n },\n );\n\n const invitations = usePagesOrInfinite<\n GetUserOrganizationInvitationsParams,\n ClerkPaginatedResponse<UserOrganizationInvitationResource>\n >(\n {\n ...userInvitationsParams,\n },\n user?.getOrganizationInvitations,\n {\n keepPreviousData: userInvitationsSafeValues.keepPreviousData,\n infinite: userInvitationsSafeValues.infinite,\n enabled: !!userInvitationsParams,\n },\n {\n type: 'userInvitations',\n userId: user?.id,\n },\n );\n\n const suggestions = usePagesOrInfinite<\n GetUserOrganizationSuggestionsParams,\n ClerkPaginatedResponse<OrganizationSuggestionResource>\n >(\n {\n ...userSuggestionsParams,\n },\n user?.getOrganizationSuggestions,\n {\n keepPreviousData: userSuggestionsSafeValues.keepPreviousData,\n infinite: userSuggestionsSafeValues.infinite,\n enabled: !!userSuggestionsParams,\n },\n {\n type: 'userSuggestions',\n userId: user?.id,\n },\n );\n\n // TODO: Properly check for SSR user values\n if (!isClerkLoaded) {\n return {\n isLoaded: false,\n organizationList: undefined,\n createOrganization: undefined,\n setActive: undefined,\n userMemberships: undefinedPaginatedResource,\n userInvitations: undefinedPaginatedResource,\n userSuggestions: undefinedPaginatedResource,\n };\n }\n\n const result = {\n isLoaded: isClerkLoaded,\n organizationList: createOrganizationList(user.organizationMemberships),\n setActive: clerk.setActive,\n createOrganization: clerk.createOrganization,\n userMemberships: memberships,\n userInvitations: invitations,\n userSuggestions: suggestions,\n };\n deprecatedObjectProperty(result, 'organizationList', 'Use `userMemberships` instead.');\n\n return result;\n};\n\nfunction createOrganizationList(organizationMemberships: OrganizationMembershipResource[]) {\n return organizationMemberships.map(organizationMembership => ({\n membership: organizationMembership,\n organization: organizationMembership.organization,\n }));\n}\n","import type { CreateOrganizationParams, OrganizationMembershipResource, OrganizationResource } from '@clerk/types';\n\nimport { deprecated } from '../../deprecated';\nimport { useClerkInstanceContext } from '../contexts';\n\ntype UseOrganizationsReturn =\n | {\n isLoaded: false;\n\n /**\n * @deprecated Use `createOrganization` from `useOrganizationList`\n * Example: `const {createOrganization} = useOrganizationList()`\n */\n createOrganization: undefined;\n\n /**\n * @deprecated Use `memberships` from `useOrganization`\n * Example: `const {memberships} = useOrganization()`\n */\n getOrganizationMemberships: undefined;\n\n /**\n * @deprecated Use `getOrganization` from `useClerk`\n * Example: `const {getOrganization} = useClerk()`\n */\n getOrganization: undefined;\n }\n | {\n isLoaded: true;\n /**\n * @deprecated Use `createOrganization` from `useOrganizationList`\n * Example: `const {createOrganization} = useOrganizationList()`\n */\n createOrganization: (params: CreateOrganizationParams) => Promise<OrganizationResource>;\n\n /**\n * @deprecated Use `memberships` from `useOrganization`\n * Example: `const {memberships} = useOrganization()`\n */\n getOrganizationMemberships: () => Promise<OrganizationMembershipResource[]>;\n\n /**\n * @deprecated Use `getOrganization` from `useClerk`\n * Example: `const {getOrganization} = useClerk()`\n */\n getOrganization: (organizationId: string) => Promise<OrganizationResource | undefined>;\n };\n\ntype UseOrganizations = () => UseOrganizationsReturn;\n\n/**\n * @deprecated Use useOrganizationList, useOrganization, or useClerk instead\n */\nexport const useOrganizations: UseOrganizations = () => {\n deprecated('useOrganizations', 'Use useOrganizationList, useOrganization, or useClerk instead.');\n const clerk = useClerkInstanceContext();\n if (!clerk.loaded) {\n return {\n isLoaded: false,\n createOrganization: undefined,\n getOrganizationMemberships: undefined,\n getOrganization: undefined,\n };\n }\n\n return {\n isLoaded: true,\n createOrganization: clerk.createOrganization,\n getOrganizationMemberships: clerk.getOrganizationMemberships,\n getOrganization: clerk.getOrganization,\n };\n};\n","import React from 'react';\n\nexport const useSafeLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n"],"mappings":";;;;;;;;;;AACA,OAAO,WAAW;AAEX,SAAS,oBAAoB,YAAqB,UAA2D;AAClH,MAAI,CAAC,YAAY;AACf,UAAM,OAAO,aAAa,WAAW,IAAI,MAAM,QAAQ,IAAI,IAAI,MAAM,GAAG,SAAS,WAAW,YAAY;AAAA,EAC1G;AACF;AAYO,IAAM,uBAAuB,CAClC,aACA,YAC8E;AAC9E,QAAM,EAAE,cAAc,oBAAoB,IAAI,WAAW,CAAC;AAC1D,QAAM,MAAM,MAAM,cAA6C,MAAS;AACxE,MAAI,cAAc;AAElB,QAAM,SAAS,MAAM;AACnB,UAAM,MAAM,MAAM,WAAW,GAAG;AAChC,gBAAY,KAAK,GAAG,WAAW,YAAY;AAC3C,WAAQ,IAAY;AAAA,EACtB;AAEA,QAAM,yBAAyB,MAAM;AACnC,UAAM,MAAM,MAAM,WAAW,GAAG;AAChC,WAAO,MAAM,IAAI,QAAQ,CAAC;AAAA,EAC5B;AAEA,SAAO,CAAC,KAAK,QAAQ,sBAAsB;AAC7C;;;ACvCA;AAAA;AAAA;AAAA,gBAAAA;AAAA,EAAA,sBAAAA;AAAA;AACA;AAAA,0BAAc;AACd,SAAoB,WAAXA,UAAmB,iBAAiB;AAC7C,SAAoB,WAAXA,gBAAiC;;;ACS1C,OAAOC,YAAW;AAMlB,IAAM,CAAC,sBAAsB,uBAAuB,IAAI,qBAAkC,sBAAsB;AAChH,IAAM,CAAC,aAAa,cAAc,IAAI,qBAAsD,aAAa;AACzG,IAAM,CAAC,eAAe,gBAAgB,IAAI,qBAAwD,eAAe;AACjH,IAAM,CAAC,gBAAgB,iBAAiB,IAAI;AAAA,EAC1C;AACF;AAgBA,IAAM,CAAC,6BAA6B,sBAAsB,IAAI,qBAI3D,qBAAqB;AAExB,IAAM,uBAAuB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAKM;AACJ,SACE,gBAAAC,OAAA,cAAC,aAAU,OAAO,aAChB,gBAAAA,OAAA;AAAA,IAAC,4BAA4B;AAAA,IAA5B;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA;AAAA,IAEC;AAAA,EACH,CACF;AAEJ;AAKO,IAAM,sBAAsB,IAAI,SAAkD;AACvF,aAAW,uBAAuB,oCAAoC;AACtE,SAAO,qBAAqB,GAAG,IAAI;AACrC;;;AC9EA,SAAS,aAAa,SAAS,QAAQ,gBAAgB;AAMvD,SAAS,iBAAiB,MAA+B,MAAwD;AAC/G,QAAM,UAAU,IAAI,IAAI,OAAO,KAAK,IAAI,CAAC;AACzC,QAAM,sBAA+C,CAAC;AAEtD,aAAW,QAAQ,OAAO,KAAK,IAAI,GAAG;AACpC,QAAI,CAAC,QAAQ,IAAI,IAAI,GAAG;AACtB,0BAAoB,IAAI,IAAI,KAAK,IAAI;AAAA,IACvC;AAAA,EACF;AAEA,SAAO;AACT;AAaO,IAAM,oBAAoB,CAAmC,QAA8B,kBAAqB;AACrH,QAAM,oBAAoB,OAAO,WAAW,aAAa;AAGzD,QAAM,iBAAiB;AAAA,IACrB,oBAAoB,cAAc,cAAc,QAAQ,eAAe,cAAc;AAAA,EACvF;AACA,QAAM,cAAc,OAAO,oBAAoB,cAAc,WAAW,QAAQ,YAAY,cAAc,QAAQ;AAElH,QAAM,SAAkC,CAAC;AACzC,aAAW,OAAO,OAAO,KAAK,aAAa,GAAG;AAE5C,WAAO,GAAG,IAAI,oBAAoB,cAAc,GAAG,IAAI,SAAS,GAAG,KAAK,cAAc,GAAG;AAAA,EAC3F;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,aAAa,eAAe;AAAA,IAC5B,UAAU,YAAY;AAAA,EACxB;AACF;AAwCO,IAAM,qBAAyC,CAAC,QAAQ,SAAS,SAAS,cAAc;AAC7F,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,OAAO,eAAe,CAAC;AAG1E,QAAM,iBAAiB,OAAO,OAAO,eAAe,CAAC;AACrD,QAAM,cAAc,OAAO,OAAO,YAAY,EAAE;AAEhD,QAAM,UAAU,QAAQ,WAAW;AACnC,QAAM,kBAAkB,QAAQ,YAAY;AAC5C,QAAM,mBAAmB,QAAQ,oBAAoB;AAErD,QAAM,gBAAgB;AAAA,IACpB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,aAAa;AAAA,IACb,UAAU,YAAY;AAAA,EACxB;AAEA,QAAM;AAAA,IACJ,MAAM;AAAA,IACN,cAAc;AAAA,IACd,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ;AAAA,EACV,IAAIC;AAAA,IACF,CAAC,mBAAmB,CAAC,CAAC,WAAW,UAAU,gBAAgB;AAAA,IAC3D,oBAAkB;AAEhB,YAAM,gBAAgB,iBAAiB,gBAAgB,SAAS;AAEhE,aAAO,UAAU,aAAa;AAAA,IAChC;AAAA,IACA,EAAE,iBAAiB;AAAA,EACrB;AAEA,QAAM;AAAA,IACJ,MAAM;AAAA,IACN,WAAW;AAAA,IACX,cAAc;AAAA,IACd,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,EACV,IAAIA;AAAA,IACF,eAAa;AACX,UAAI,CAAC,mBAAmB,CAAC,SAAS;AAChC,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,QACH,aAAa,eAAe,UAAU;AAAA,QACtC,UAAU,YAAY;AAAA,MACxB;AAAA,IACF;AAAA,IACA,oBAAkB;AAEhB,YAAM,gBAAgB,iBAAiB,gBAAgB,SAAS;AAEhE,aAAO,UAAU,aAAa;AAAA,IAChC;AAAA,EACF;AAEA,QAAM,OAAO,QAAQ,MAAM;AACzB,QAAI,iBAAiB;AACnB,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,GAAG,CAAC,iBAAiB,MAAM,aAAa,CAAC;AAEzC,QAAM,YAAmC;AAAA,IACvC,iBAAe;AACb,UAAI,iBAAiB;AACnB,aAAK,QAAQ,WAAW;AACxB;AAAA,MACF;AACA,aAAO,iBAAiB,WAAW;AAAA,IACrC;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,QAAM,OAAO,QAAQ,MAAM;AACzB,QAAI,iBAAiB;AACnB,aAAO,iBAAiB,IAAI,OAAK,GAAG,IAAI,EAAE,KAAK,KAAK,CAAC;AAAA,IACvD;AACA,WAAO,SAAS,QAAQ,CAAC;AAAA,EAC3B,GAAG,CAAC,iBAAiB,SAAS,eAAe,CAAC;AAE9C,QAAM,QAAQ,QAAQ,MAAM;AAC1B,QAAI,iBAAiB;AACnB,aAAO,kBAAkB,iBAAiB,SAAS,CAAC,GAAG,eAAe;AAAA,IACxE;AACA,WAAO,SAAS,eAAe;AAAA,EACjC,GAAG,CAAC,iBAAiB,SAAS,eAAe,CAAC;AAE9C,QAAM,YAAY,kBAAkB,uBAAuB;AAC3D,QAAM,aAAa,kBAAkB,0BAA0B;AAC/D,QAAM,UAAU,CAAC,EAAE,kBAAkB,mBAAmB;AAIxD,QAAM,YAAY,YAAY,MAAM;AAClC,cAAU,OAAK,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;AAAA,EACnC,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,gBAAgB,YAAY,MAAM;AACtC,cAAU,OAAK,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;AAAA,EACnC,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,eAAe,eAAe,UAAU,KAAK,YAAY;AAE/D,QAAM,YAAY,KAAK,MAAM,QAAQ,eAAe,YAAY,OAAO;AACvE,QAAM,cAAc,QAAQ,cAAc,YAAY,UAAU,OAAO,YAAY;AACnF,QAAM,mBAAmB,OAAO,KAAK,YAAY,UAAU,cAAc,YAAY;AAErF,QAAM,mBAAmB,kBAAkB,oBAAoB;AAE/D,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AChHA,IAAM,6BAA6B;AAAA,EACjC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,eAAe;AAAA,EACf,aAAa;AAAA,EACb,iBAAiB;AACnB;AAEO,IAAM,kBAAmC,YAAU;AACxD,QAAM;AAAA,IACJ,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,SAAS;AAAA,IACT,oBAAoB;AAAA,IACpB,aAAa;AAAA,IACb,aAAa;AAAA,EACf,IAAI,UAAU,CAAC;AACf,QAAM,EAAE,cAAc,wBAAwB,2BAA2B,IAAI,uBAAuB;AACpG,QAAM,UAAU,kBAAkB;AAElC,QAAM,mBAAmB,kBAAkB,kBAAkB;AAAA,IAC3D,aAAa;AAAA,IACb,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,UAAU;AAAA,IACV,gBAAgB;AAAA,EAClB,CAAC;AAED,QAAM,8BAA8B,kBAAkB,8BAA8B;AAAA,IAClF,aAAa;AAAA,IACb,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,UAAU;AAAA,EACZ,CAAC;AAED,QAAM,oBAAoB,kBAAkB,mBAAmB;AAAA,IAC7D,aAAa;AAAA,IACb,UAAU;AAAA,IACV,MAAM;AAAA,IACN,kBAAkB;AAAA,IAClB,UAAU;AAAA,EACZ,CAAC;AAED,QAAM,wBAAwB,kBAAkB,uBAAuB;AAAA,IACrE,aAAa;AAAA,IACb,UAAU;AAAA,IACV,QAAQ,CAAC,SAAS;AAAA,IAClB,kBAAkB;AAAA,IAClB,UAAU;AAAA,EACZ,CAAC;AAED,QAAM,QAAQ,wBAAwB;AAEtC,QAAM,cAAc,CAAC,EAAE,MAAM,UAAU,WAAW;AAElD,QAAM,eACJ,OAAO,qBAAqB,cACxB,SACA;AAAA,IACE,aAAa,iBAAiB;AAAA,IAC9B,UAAU,iBAAiB;AAAA,IAC3B,gBAAgB,iBAAiB;AAAA,EACnC;AAEN,QAAM,0BACJ,OAAO,iCAAiC,cACpC,SACA;AAAA,IACE,aAAa,4BAA4B;AAAA,IACzC,UAAU,4BAA4B;AAAA,IACtC,QAAQ,4BAA4B;AAAA,EACtC;AAEN,QAAM,gBACJ,OAAO,sBAAsB,cACzB,SACA;AAAA,IACE,aAAa,kBAAkB;AAAA,IAC/B,UAAU,kBAAkB;AAAA,IAC5B,MAAM,kBAAkB;AAAA,EAC1B;AAEN,QAAM,oBACJ,OAAO,0BAA0B,cAC7B,SACA;AAAA,IACE,aAAa,sBAAsB;AAAA,IACnC,UAAU,sBAAsB;AAAA,IAChC,QAAQ,sBAAsB;AAAA,EAChC;AAEN,QAAM,UAAU;AAAA,IACd;AAAA,MACE,GAAG;AAAA,IACL;AAAA,IACA,cAAc;AAAA,IACd;AAAA,MACE,kBAAkB,iBAAiB;AAAA,MACnC,UAAU,iBAAiB;AAAA,MAC3B,SAAS,CAAC,CAAC;AAAA,IACb;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,gBAAgB,cAAc;AAAA,IAChC;AAAA,EACF;AAEA,QAAM,qBAAqB;AAAA,IAIzB;AAAA,MACE,GAAG;AAAA,IACL;AAAA,IACA,cAAc;AAAA,IACd;AAAA,MACE,kBAAkB,4BAA4B;AAAA,MAC9C,UAAU,4BAA4B;AAAA,MACtC,SAAS,CAAC,CAAC;AAAA,IACb;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,gBAAgB,cAAc;AAAA,IAChC;AAAA,EACF;AAEA,QAAM,cAAc;AAAA,IAClB;AAAA,MACE,GAAG;AAAA,MACH,WAAW;AAAA,IACb;AAAA,IACA,cAAc;AAAA,IACd;AAAA,MACE,kBAAkB,kBAAkB;AAAA,MACpC,UAAU,kBAAkB;AAAA,MAC5B,SAAS,CAAC,CAAC;AAAA,IACb;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,gBAAgB,cAAc;AAAA,IAChC;AAAA,EACF;AAEA,QAAM,cAAc;AAAA,IAClB;AAAA,MACE,GAAG;AAAA,IACL;AAAA,IACA,cAAc;AAAA,IACd;AAAA,MACE,kBAAkB,kBAAkB;AAAA,MACpC,UAAU,kBAAkB;AAAA,MAC5B,SAAS,CAAC,CAAC;AAAA,IACb;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,gBAAgB,cAAc;AAAA,IAChC;AAAA,EACF;AAIA,QAAM,qBAAqB,CAAC,MAAM,SAC9B,MAAM,CAAC,IACP,MAAM,MAAM,cAAc,sBAAsB,oBAAoB;AAExE,QAAM,iCAAiC,CAAC,MAAM,SAC1C,MAAM,CAAC,IACP,MAAM,MAAM,cAAc,eAAe,oBAAoB;AAEjE,MAAI,sBAAsB;AACxB,eAAW,qCAAqC,0DAA0D;AAAA,EAC5G;AAEA,QAAM;AAAA,IACJ,MAAM;AAAA,IACN,cAAc;AAAA,IACd,QAAQ;AAAA,EACV,IAAIC;AAAA,IACF,eAAe,uBACX,SAAS,WAAW,cAAc,4BAA4B,oBAAoB,IAClF;AAAA,IACJ;AAAA,EACF;AAEA,MAAI,sBAAsB;AACxB,eAAW,qCAAqC,0DAA0D;AAAA,EAC5G;AAEA,QAAM;AAAA,IACJ,MAAM;AAAA,IACN,cAAc;AAAA,IACd,QAAQ;AAAA,EACV,IAAIA;AAAA,IACF,eAAe,uBACX,SAAS,eAAe,cAAc,wBAAwB,oBAAoB,IAClF;AAAA,IACJ;AAAA,EACF;AAEA,MAAI,iBAAiB,QAAW;AAC9B,WAAO;AAAA,MACL,UAAU;AAAA,MACV,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,oBAAoB;AAAA,MACpB,aAAa;AAAA,MACb,aAAa;AAAA,IACf;AAAA,EACF;AAEA,MAAI,iBAAiB,MAAM;AACzB,WAAO;AAAA,MACL,UAAU;AAAA,MACV,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,oBAAoB;AAAA,MACpB,aAAa;AAAA,MACb,aAAa;AAAA,IACf;AAAA,EACF;AAGA,MAAI,CAAC,MAAM,UAAU,cAAc;AACjC,WAAO;AAAA,MACL,UAAU;AAAA,MACV;AAAA,MACA,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,oBAAoB;AAAA,MACpB,aAAa;AAAA,MACb,aAAa;AAAA,IACf;AAAA,EACF;AAEA,SAAO;AAAA,IACL,UAAU,CAAC,wBAAwB,CAAC;AAAA,IACpC;AAAA,IACA;AAAA,IACA,YAAY,iCAAiC,QAAS,KAAK,yBAAyB,aAAa,EAAE;AAAA;AAAA,IACnG;AAAA,IACA,kBAAkB,MAAM;AACtB,WAAK,qBAAqB;AAC1B,WAAK,qBAAqB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,iCACP,yBACA,sBACA;AACA,SAAO,wBAAwB;AAAA,IAC7B,4BAA0B,uBAAuB,aAAa,OAAO;AAAA,EACvE;AACF;AAEA,SAAS,SACP,MACA,cACA,UACA,YACA;AACA,SAAO,CAAC,MAAM,aAAa,IAAI,UAAU,IAAI,UAAU,WAAW,WAAW,QAAQ,WAAW,KAAK,EAClG,OAAO,OAAO,EACd,KAAK,GAAG;AACb;;;AC3UA,IAAMC,8BAA6B;AAAA,EACjC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,eAAe;AAAA,EACf,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,kBAAkB;AACpB;AAIO,IAAM,sBAA2C,YAAU;AAChE,QAAM,EAAE,iBAAiB,iBAAiB,gBAAgB,IAAI,UAAU,CAAC;AAEzE,QAAM,4BAA4B,kBAAkB,iBAAiB;AAAA,IACnE,aAAa;AAAA,IACb,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,UAAU;AAAA,EACZ,CAAC;AAED,QAAM,4BAA4B,kBAAkB,iBAAiB;AAAA,IACnE,aAAa;AAAA,IACb,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,UAAU;AAAA,EACZ,CAAC;AAED,QAAM,4BAA4B,kBAAkB,iBAAiB;AAAA,IACnE,aAAa;AAAA,IACb,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,UAAU;AAAA,EACZ,CAAC;AAED,QAAM,QAAQ,wBAAwB;AACtC,QAAM,OAAO,eAAe;AAE5B,QAAM,wBACJ,OAAO,oBAAoB,cACvB,SACA;AAAA,IACE,aAAa,0BAA0B;AAAA,IACvC,UAAU,0BAA0B;AAAA,EACtC;AAEN,QAAM,wBACJ,OAAO,oBAAoB,cACvB,SACA;AAAA,IACE,aAAa,0BAA0B;AAAA,IACvC,UAAU,0BAA0B;AAAA,IACpC,QAAQ,0BAA0B;AAAA,EACpC;AAEN,QAAM,wBACJ,OAAO,oBAAoB,cACvB,SACA;AAAA,IACE,aAAa,0BAA0B;AAAA,IACvC,UAAU,0BAA0B;AAAA,IACpC,QAAQ,0BAA0B;AAAA,EACpC;AAEN,QAAM,gBAAgB,CAAC,EAAE,MAAM,UAAU;AAEzC,QAAM,cAAc;AAAA,IAIlB;AAAA,MACE,GAAG;AAAA,MACH,WAAW;AAAA,IACb;AAAA,IACA,MAAM;AAAA,IACN;AAAA,MACE,kBAAkB,0BAA0B;AAAA,MAC5C,UAAU,0BAA0B;AAAA,MACpC,SAAS,CAAC,CAAC;AAAA,IACb;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,IAChB;AAAA,EACF;AAEA,QAAM,cAAc;AAAA,IAIlB;AAAA,MACE,GAAG;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN;AAAA,MACE,kBAAkB,0BAA0B;AAAA,MAC5C,UAAU,0BAA0B;AAAA,MACpC,SAAS,CAAC,CAAC;AAAA,IACb;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,IAChB;AAAA,EACF;AAEA,QAAM,cAAc;AAAA,IAIlB;AAAA,MACE,GAAG;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN;AAAA,MACE,kBAAkB,0BAA0B;AAAA,MAC5C,UAAU,0BAA0B;AAAA,MACpC,SAAS,CAAC,CAAC;AAAA,IACb;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ,MAAM;AAAA,IAChB;AAAA,EACF;AAGA,MAAI,CAAC,eAAe;AAClB,WAAO;AAAA,MACL,UAAU;AAAA,MACV,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,WAAW;AAAA,MACX,iBAAiBA;AAAA,MACjB,iBAAiBA;AAAA,MACjB,iBAAiBA;AAAA,IACnB;AAAA,EACF;AAEA,QAAM,SAAS;AAAA,IACb,UAAU;AAAA,IACV,kBAAkB,uBAAuB,KAAK,uBAAuB;AAAA,IACrE,WAAW,MAAM;AAAA,IACjB,oBAAoB,MAAM;AAAA,IAC1B,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,EACnB;AACA,2BAAyB,QAAQ,oBAAoB,gCAAgC;AAErF,SAAO;AACT;AAEA,SAAS,uBAAuB,yBAA2D;AACzF,SAAO,wBAAwB,IAAI,6BAA2B;AAAA,IAC5D,YAAY;AAAA,IACZ,cAAc,uBAAuB;AAAA,EACvC,EAAE;AACJ;;;ACnLO,IAAM,mBAAqC,MAAM;AACtD,aAAW,oBAAoB,gEAAgE;AAC/F,QAAM,QAAQ,wBAAwB;AACtC,MAAI,CAAC,MAAM,QAAQ;AACjB,WAAO;AAAA,MACL,UAAU;AAAA,MACV,oBAAoB;AAAA,MACpB,4BAA4B;AAAA,MAC5B,iBAAiB;AAAA,IACnB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,UAAU;AAAA,IACV,oBAAoB,MAAM;AAAA,IAC1B,4BAA4B,MAAM;AAAA,IAClC,iBAAiB,MAAM;AAAA,EACzB;AACF;;;ACvEA,OAAOC,YAAW;AAEX,IAAM,sBAAsB,OAAO,WAAW,cAAcA,OAAM,kBAAkBA,OAAM;","names":["default","React","React","default","default","undefinedPaginatedResource","React"]}