@payloadcms/ui 4.0.0-internal.f11981a → 4.0.0-internal.f715c6e

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.
Files changed (89) hide show
  1. package/dist/elements/CopyToClipboard/index.d.ts +0 -1
  2. package/dist/elements/CopyToClipboard/index.d.ts.map +1 -1
  3. package/dist/elements/CopyToClipboard/index.js +8 -10
  4. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  5. package/dist/elements/FileManager/FileToolbar/index.d.ts.map +1 -1
  6. package/dist/elements/FileManager/FileToolbar/index.js +0 -3
  7. package/dist/elements/FileManager/FileToolbar/index.js.map +1 -1
  8. package/dist/exports/client/index.d.ts +1 -2
  9. package/dist/exports/client/index.d.ts.map +1 -1
  10. package/dist/exports/client/index.js +1 -1
  11. package/dist/exports/client/index.js.map +3 -3
  12. package/dist/forms/Form/index.d.ts.map +1 -1
  13. package/dist/forms/Form/index.js +1 -4
  14. package/dist/forms/Form/index.js.map +1 -1
  15. package/dist/providers/Auth/index.d.ts +56 -2
  16. package/dist/providers/Auth/index.d.ts.map +1 -1
  17. package/dist/providers/Auth/index.js +135 -283
  18. package/dist/providers/Auth/index.js.map +1 -1
  19. package/dist/providers/FormErrorHandler/index.d.ts +1 -5
  20. package/dist/providers/FormErrorHandler/index.d.ts.map +1 -1
  21. package/dist/providers/FormErrorHandler/index.js.map +1 -1
  22. package/dist/providers/Root/index.js +4 -4
  23. package/dist/providers/Root/index.js.map +1 -1
  24. package/dist/providers/RouteTransition/ProgressBar/index.js +1 -4
  25. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  26. package/dist/providers/RouteTransition/index.d.ts +0 -2
  27. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  28. package/dist/providers/RouteTransition/index.js +14 -42
  29. package/dist/providers/RouteTransition/index.js.map +1 -1
  30. package/dist/styles.css +1 -1
  31. package/dist/utilities/filterOutUploadFields.d.ts.map +1 -1
  32. package/dist/utilities/filterOutUploadFields.js +1 -1
  33. package/dist/utilities/filterOutUploadFields.js.map +1 -1
  34. package/package.json +5 -5
  35. package/dist/providers/Auth/AuthSessionDebug/index.css +0 -48
  36. package/dist/providers/Auth/AuthSessionDebug/index.d.ts +0 -13
  37. package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +0 -1
  38. package/dist/providers/Auth/AuthSessionDebug/index.js +0 -93
  39. package/dist/providers/Auth/AuthSessionDebug/index.js.map +0 -1
  40. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +0 -21
  41. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +0 -1
  42. package/dist/providers/Auth/AuthSessionDebug/utilities.js +0 -53
  43. package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +0 -1
  44. package/dist/providers/Auth/authSessionRequests.d.ts +0 -27
  45. package/dist/providers/Auth/authSessionRequests.d.ts.map +0 -1
  46. package/dist/providers/Auth/authSessionRequests.js +0 -119
  47. package/dist/providers/Auth/authSessionRequests.js.map +0 -1
  48. package/dist/providers/Auth/authSessionRequests.spec.js +0 -121
  49. package/dist/providers/Auth/authSessionRequests.spec.js.map +0 -1
  50. package/dist/providers/Auth/sessionActivity.d.ts +0 -23
  51. package/dist/providers/Auth/sessionActivity.d.ts.map +0 -1
  52. package/dist/providers/Auth/sessionActivity.js +0 -49
  53. package/dist/providers/Auth/sessionActivity.js.map +0 -1
  54. package/dist/providers/Auth/sessionActivity.spec.js +0 -44
  55. package/dist/providers/Auth/sessionActivity.spec.js.map +0 -1
  56. package/dist/providers/Auth/sessionTiming.d.ts +0 -11
  57. package/dist/providers/Auth/sessionTiming.d.ts.map +0 -1
  58. package/dist/providers/Auth/sessionTiming.js +0 -18
  59. package/dist/providers/Auth/sessionTiming.js.map +0 -1
  60. package/dist/providers/Auth/tabSessionSync/index.d.ts +0 -17
  61. package/dist/providers/Auth/tabSessionSync/index.d.ts.map +0 -1
  62. package/dist/providers/Auth/tabSessionSync/index.js +0 -263
  63. package/dist/providers/Auth/tabSessionSync/index.js.map +0 -1
  64. package/dist/providers/Auth/tabSessionSync/index.spec.js +0 -463
  65. package/dist/providers/Auth/tabSessionSync/index.spec.js.map +0 -1
  66. package/dist/providers/Auth/tabSessionSync/types.d.ts +0 -107
  67. package/dist/providers/Auth/tabSessionSync/types.d.ts.map +0 -1
  68. package/dist/providers/Auth/tabSessionSync/types.js +0 -6
  69. package/dist/providers/Auth/tabSessionSync/types.js.map +0 -1
  70. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +0 -11
  71. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +0 -1
  72. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +0 -90
  73. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +0 -1
  74. package/dist/providers/Auth/tabSessionSync/utilities.d.ts +0 -26
  75. package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +0 -1
  76. package/dist/providers/Auth/tabSessionSync/utilities.js +0 -159
  77. package/dist/providers/Auth/tabSessionSync/utilities.js.map +0 -1
  78. package/dist/providers/Auth/types.d.ts +0 -66
  79. package/dist/providers/Auth/types.d.ts.map +0 -1
  80. package/dist/providers/Auth/types.js +0 -2
  81. package/dist/providers/Auth/types.js.map +0 -1
  82. package/dist/providers/Auth/useAuthSessionTimers.d.ts +0 -26
  83. package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +0 -1
  84. package/dist/providers/Auth/useAuthSessionTimers.js +0 -203
  85. package/dist/providers/Auth/useAuthSessionTimers.js.map +0 -1
  86. package/dist/providers/Auth/useAuthSessionTimers.spec.js +0 -311
  87. package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +0 -1
  88. package/dist/providers/RouteTransition/ProgressBar/index.spec.js +0 -44
  89. package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["createContext","use","FormErrorHandlerContext","undefined","useFormErrorHandler"],"sources":["../../../src/providers/FormErrorHandler/index.tsx"],"sourcesContent":["'use client'\nimport { createContext, use } from 'react'\n\nexport type NonFieldError = {\n data?: unknown\n message: string\n}\n\n/**\n * A callback that a plugin can provide to intercept non-field form errors before\n * Payload shows its default error toast. Return `true` to claim the error (the\n * default toast is suppressed). Return `false` to let Payload handle it normally.\n *\n * Set via `<FormErrorHandlerContext value={handler}>` inside an\n * `admin.components.providers` entry. The Form reads this automatically — no\n * changes to collection config or the edit view are required.\n *\n * Multiple handlers can be chained by composing providers; the first one to\n * return `true` wins.\n *\n * `retry` re-submits the form that produced the error, allowing the user to\n * retry after resolving the underlying issue (e.g. deleting documents to free\n * up quota).\n */\nexport type FormErrorHandler = (err: NonFieldError, retry: () => void) => boolean\n\nexport const FormErrorHandlerContext = createContext<FormErrorHandler | undefined>(undefined)\n\nexport const useFormErrorHandler = (): FormErrorHandler | undefined => use(FormErrorHandlerContext)\n"],"mappings":"AAAA;;AACA,SAASA,aAAa,EAAEC,GAAG,QAAQ;AAyBnC,OAAO,MAAMC,uBAAA,gBAA0BF,aAAA,CAA4CG,SAAA;AAEnF,OAAO,MAAMC,mBAAA,GAAsBA,CAAA,KAAoCH,GAAA,CAAIC,uBAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["createContext","use","FormErrorHandlerContext","undefined","useFormErrorHandler"],"sources":["../../../src/providers/FormErrorHandler/index.tsx"],"sourcesContent":["'use client'\nimport { createContext, use } from 'react'\n\nexport type NonFieldError = {\n data?: unknown\n message: string\n}\n\n/**\n * A callback that a plugin can provide to intercept non-field form errors before\n * Payload shows its default error toast. Return `true` to claim the error (the\n * default toast is suppressed). Return `false` to let Payload handle it normally.\n *\n * Set via `<FormErrorHandlerContext value={handler}>` inside an\n * `admin.components.providers` entry. The Form reads this automatically — no\n * changes to collection config or the edit view are required.\n *\n * Multiple handlers can be chained by composing providers; the first one to\n * return `true` wins.\n */\nexport type FormErrorHandler = (err: NonFieldError) => boolean\n\nexport const FormErrorHandlerContext = createContext<FormErrorHandler | undefined>(undefined)\n\nexport const useFormErrorHandler = (): FormErrorHandler | undefined => use(FormErrorHandlerContext)\n"],"mappings":"AAAA;;AACA,SAASA,aAAa,EAAEC,GAAG,QAAQ;AAqBnC,OAAO,MAAMC,uBAAA,gBAA0BF,aAAA,CAA4CG,SAAA;AAEnF,OAAO,MAAMC,mBAAA,GAAsBA,CAAA,KAAoCH,GAAA,CAAIC,uBAAA","ignoreList":[]}
@@ -53,10 +53,10 @@ export const RootProvider = t0 => {
53
53
  let t1;
54
54
  if ($[0] !== RouterAdapter || $[1] !== children || $[2] !== config || $[3] !== dateFNSKey || $[4] !== dndContextID || $[5] !== embed || $[6] !== fallbackLang || $[7] !== highContrastMode || $[8] !== isNavOpen || $[9] !== languageCode || $[10] !== languageOptions || $[11] !== locale || $[12] !== permissions || $[13] !== serverFunction || $[14] !== theme || $[15] !== translations || $[16] !== user) {
55
55
  t1 = _jsxs(ClickOutsideProvider, {
56
- children: [_jsx(RouteTransitionProvider, {
57
- children: _jsx(RouterAdapter, {
58
- children: _jsx(ServerFunctionsProvider, {
59
- serverFunction,
56
+ children: [_jsx(RouterAdapter, {
57
+ children: _jsx(ServerFunctionsProvider, {
58
+ serverFunction,
59
+ children: _jsx(RouteTransitionProvider, {
60
60
  children: _jsx(RouteCache, {
61
61
  cachingEnabled: process.env.NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH === "true",
62
62
  children: _jsx(ConfigProvider, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","DndContext","pointerWithin","ModalContainer","ModalProvider","ScrollInfoProvider","React","CloseModalOnRouteChange","DrawerStackProvider","LoadingOverlayProvider","NavProvider","StayLoggedInModal","StepNavProvider","ClickOutsideProvider","WindowInfoProvider","AuthProvider","ClientFunctionProvider","ConfigProvider","DocumentEventsProvider","EmbedProvider","HierarchyProvider","LocaleProvider","PreferencesProvider","RouteCache","RouteTransitionProvider","ServerFunctionsProvider","ThemeProvider","ToastContainer","TranslationProvider","UploadHandlersProvider","RootProvider","t0","$","children","config","dateFNSKey","embed","fallbackLang","highContrastMode","isNavOpen","languageCode","languageOptions","locale","permissions","RouterAdapter","serverFunction","theme","translations","user","dndContextID","useId","t1","_jsxs","_jsx","cachingEnabled","process","env","NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH","language","breakpoints","l","m","s","xs","classPrefix","transTime","zIndex","initialIsOpen","collisionDetection","id"],"sources":["../../../src/providers/Root/index.tsx"],"sourcesContent":["'use client'\nimport type { I18nClient, I18nOptions, Language } from '@payloadcms/translations'\nimport type {\n ClientConfig,\n LanguageOptions,\n Locale,\n RouterAdapterComponent,\n SanitizedPermissions,\n ServerFunctionClient,\n User,\n} from 'payload'\n\nimport { DndContext, pointerWithin } from '@dnd-kit/core'\nimport { ModalContainer, ModalProvider } from '@faceless-ui/modal'\nimport { ScrollInfoProvider } from '@faceless-ui/scroll-info'\nimport React from 'react'\n\nimport type { Theme } from '../Theme/index.js'\n\nimport { CloseModalOnRouteChange } from '../../elements/CloseModalOnRouteChange/index.js'\nimport { DrawerStackProvider } from '../../elements/Drawer/index.js'\nimport { LoadingOverlayProvider } from '../../elements/LoadingOverlay/index.js'\nimport { NavProvider } from '../../elements/Nav/context.js'\nimport { StayLoggedInModal } from '../../elements/StayLoggedIn/index.js'\nimport { StepNavProvider } from '../../elements/StepNav/index.js'\nimport { ClickOutsideProvider } from '../../providers/ClickOutside/index.js'\nimport { WindowInfoProvider } from '../../providers/WindowInfo/index.js'\nimport { AuthProvider } from '../Auth/index.js'\nimport { ClientFunctionProvider } from '../ClientFunction/index.js'\nimport { ConfigProvider } from '../Config/index.js'\nimport { DocumentEventsProvider } from '../DocumentEvents/index.js'\nimport { EmbedProvider } from '../Embed/index.js'\nimport { HierarchyProvider } from '../Hierarchy/index.js'\nimport { LocaleProvider } from '../Locale/index.js'\nimport { PreferencesProvider } from '../Preferences/index.js'\nimport { RouteCache } from '../RouteCache/index.js'\nimport { RouteTransitionProvider } from '../RouteTransition/index.js'\nimport { ServerFunctionsProvider } from '../ServerFunctions/index.js'\nimport { ThemeProvider } from '../Theme/index.js'\nimport { ToastContainer } from '../ToastContainer/index.js'\nimport { TranslationProvider } from '../Translation/index.js'\nimport { UploadHandlersProvider } from '../UploadHandlers/index.js'\n\ntype Props = {\n readonly children: React.ReactNode\n readonly config: ClientConfig\n readonly dateFNSKey: Language['dateFNSKey']\n readonly embed?: boolean\n readonly fallbackLang: I18nOptions['fallbackLanguage']\n readonly highContrastMode: boolean\n readonly isNavOpen?: boolean\n readonly languageCode: string\n readonly languageOptions: LanguageOptions\n readonly locale?: Locale['code']\n readonly permissions: SanitizedPermissions\n readonly RouterAdapter: RouterAdapterComponent\n readonly serverFunction: ServerFunctionClient\n readonly theme: Theme\n readonly translations: I18nClient['translations']\n readonly user: null | User\n}\n\nexport const RootProvider: React.FC<Props> = ({\n children,\n config,\n dateFNSKey,\n embed,\n fallbackLang,\n highContrastMode,\n isNavOpen,\n languageCode,\n languageOptions,\n locale,\n permissions,\n RouterAdapter,\n serverFunction,\n theme,\n translations,\n user,\n}) => {\n const dndContextID = React.useId()\n\n return (\n <ClickOutsideProvider>\n <RouteTransitionProvider>\n <RouterAdapter>\n <ServerFunctionsProvider serverFunction={serverFunction}>\n <RouteCache\n cachingEnabled={process.env.NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH === 'true'}\n >\n <ConfigProvider config={config}>\n <ClientFunctionProvider>\n <TranslationProvider\n dateFNSKey={dateFNSKey}\n fallbackLang={fallbackLang}\n language={languageCode}\n languageOptions={languageOptions}\n translations={translations}\n >\n <WindowInfoProvider\n breakpoints={{\n l: '(max-width: 1440px)',\n m: '(max-width: 1024px)',\n s: '(max-width: 768px)',\n xs: '(max-width: 400px)',\n }}\n >\n <ScrollInfoProvider>\n <ModalProvider classPrefix=\"payload\" transTime={0} zIndex=\"var(--z-modal)\">\n <DrawerStackProvider>\n <CloseModalOnRouteChange />\n <AuthProvider permissions={permissions} user={user}>\n <PreferencesProvider>\n <HierarchyProvider>\n <ThemeProvider highContrastMode={highContrastMode} theme={theme}>\n <EmbedProvider embed={embed}>\n <LocaleProvider locale={locale}>\n <StepNavProvider>\n <LoadingOverlayProvider>\n <DocumentEventsProvider>\n <NavProvider initialIsOpen={isNavOpen}>\n <UploadHandlersProvider>\n <DndContext\n collisionDetection={pointerWithin}\n // Provide stable ID to fix hydration issues: https://github.com/clauderic/dnd-kit/issues/926\n id={dndContextID}\n >\n {children}\n </DndContext>\n </UploadHandlersProvider>\n </NavProvider>\n </DocumentEventsProvider>\n </LoadingOverlayProvider>\n </StepNavProvider>\n </LocaleProvider>\n </EmbedProvider>\n </ThemeProvider>\n </HierarchyProvider>\n </PreferencesProvider>\n <ModalContainer />\n <StayLoggedInModal />\n </AuthProvider>\n </DrawerStackProvider>\n </ModalProvider>\n </ScrollInfoProvider>\n </WindowInfoProvider>\n </TranslationProvider>\n </ClientFunctionProvider>\n </ConfigProvider>\n </RouteCache>\n </ServerFunctionsProvider>\n </RouterAdapter>\n </RouteTransitionProvider>\n <ToastContainer config={config} />\n </ClickOutsideProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","DndContext","pointerWithin","ModalContainer","ModalProvider","ScrollInfoProvider","React","CloseModalOnRouteChange","DrawerStackProvider","LoadingOverlayProvider","NavProvider","StayLoggedInModal","StepNavProvider","ClickOutsideProvider","WindowInfoProvider","AuthProvider","ClientFunctionProvider","ConfigProvider","DocumentEventsProvider","EmbedProvider","HierarchyProvider","LocaleProvider","PreferencesProvider","RouteCache","RouteTransitionProvider","ServerFunctionsProvider","ThemeProvider","ToastContainer","TranslationProvider","UploadHandlersProvider","RootProvider","t0","$","children","config","dateFNSKey","embed","fallbackLang","highContrastMode","isNavOpen","languageCode","languageOptions","locale","permissions","RouterAdapter","serverFunction","theme","translations","user","dndContextID","useId","t1","_jsxs","_jsx","cachingEnabled","process","env","NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH","language","breakpoints","l","m","s","xs","classPrefix","transTime","zIndex","initialIsOpen","collisionDetection","id"],"sources":["../../../src/providers/Root/index.tsx"],"sourcesContent":["'use client'\nimport type { I18nClient, I18nOptions, Language } from '@payloadcms/translations'\nimport type {\n ClientConfig,\n LanguageOptions,\n Locale,\n RouterAdapterComponent,\n SanitizedPermissions,\n ServerFunctionClient,\n User,\n} from 'payload'\n\nimport { DndContext, pointerWithin } from '@dnd-kit/core'\nimport { ModalContainer, ModalProvider } from '@faceless-ui/modal'\nimport { ScrollInfoProvider } from '@faceless-ui/scroll-info'\nimport React from 'react'\n\nimport type { Theme } from '../Theme/index.js'\n\nimport { CloseModalOnRouteChange } from '../../elements/CloseModalOnRouteChange/index.js'\nimport { DrawerStackProvider } from '../../elements/Drawer/index.js'\nimport { LoadingOverlayProvider } from '../../elements/LoadingOverlay/index.js'\nimport { NavProvider } from '../../elements/Nav/context.js'\nimport { StayLoggedInModal } from '../../elements/StayLoggedIn/index.js'\nimport { StepNavProvider } from '../../elements/StepNav/index.js'\nimport { ClickOutsideProvider } from '../../providers/ClickOutside/index.js'\nimport { WindowInfoProvider } from '../../providers/WindowInfo/index.js'\nimport { AuthProvider } from '../Auth/index.js'\nimport { ClientFunctionProvider } from '../ClientFunction/index.js'\nimport { ConfigProvider } from '../Config/index.js'\nimport { DocumentEventsProvider } from '../DocumentEvents/index.js'\nimport { EmbedProvider } from '../Embed/index.js'\nimport { HierarchyProvider } from '../Hierarchy/index.js'\nimport { LocaleProvider } from '../Locale/index.js'\nimport { PreferencesProvider } from '../Preferences/index.js'\nimport { RouteCache } from '../RouteCache/index.js'\nimport { RouteTransitionProvider } from '../RouteTransition/index.js'\nimport { ServerFunctionsProvider } from '../ServerFunctions/index.js'\nimport { ThemeProvider } from '../Theme/index.js'\nimport { ToastContainer } from '../ToastContainer/index.js'\nimport { TranslationProvider } from '../Translation/index.js'\nimport { UploadHandlersProvider } from '../UploadHandlers/index.js'\n\ntype Props = {\n readonly children: React.ReactNode\n readonly config: ClientConfig\n readonly dateFNSKey: Language['dateFNSKey']\n readonly embed?: boolean\n readonly fallbackLang: I18nOptions['fallbackLanguage']\n readonly highContrastMode: boolean\n readonly isNavOpen?: boolean\n readonly languageCode: string\n readonly languageOptions: LanguageOptions\n readonly locale?: Locale['code']\n readonly permissions: SanitizedPermissions\n readonly RouterAdapter: RouterAdapterComponent\n readonly serverFunction: ServerFunctionClient\n readonly theme: Theme\n readonly translations: I18nClient['translations']\n readonly user: null | User\n}\n\nexport const RootProvider: React.FC<Props> = ({\n children,\n config,\n dateFNSKey,\n embed,\n fallbackLang,\n highContrastMode,\n isNavOpen,\n languageCode,\n languageOptions,\n locale,\n permissions,\n RouterAdapter,\n serverFunction,\n theme,\n translations,\n user,\n}) => {\n const dndContextID = React.useId()\n\n return (\n <ClickOutsideProvider>\n <RouterAdapter>\n <ServerFunctionsProvider serverFunction={serverFunction}>\n <RouteTransitionProvider>\n <RouteCache\n cachingEnabled={process.env.NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH === 'true'}\n >\n <ConfigProvider config={config}>\n <ClientFunctionProvider>\n <TranslationProvider\n dateFNSKey={dateFNSKey}\n fallbackLang={fallbackLang}\n language={languageCode}\n languageOptions={languageOptions}\n translations={translations}\n >\n <WindowInfoProvider\n breakpoints={{\n l: '(max-width: 1440px)',\n m: '(max-width: 1024px)',\n s: '(max-width: 768px)',\n xs: '(max-width: 400px)',\n }}\n >\n <ScrollInfoProvider>\n <ModalProvider classPrefix=\"payload\" transTime={0} zIndex=\"var(--z-modal)\">\n <DrawerStackProvider>\n <CloseModalOnRouteChange />\n <AuthProvider permissions={permissions} user={user}>\n <PreferencesProvider>\n <HierarchyProvider>\n <ThemeProvider highContrastMode={highContrastMode} theme={theme}>\n <EmbedProvider embed={embed}>\n <LocaleProvider locale={locale}>\n <StepNavProvider>\n <LoadingOverlayProvider>\n <DocumentEventsProvider>\n <NavProvider initialIsOpen={isNavOpen}>\n <UploadHandlersProvider>\n <DndContext\n collisionDetection={pointerWithin}\n // Provide stable ID to fix hydration issues: https://github.com/clauderic/dnd-kit/issues/926\n id={dndContextID}\n >\n {children}\n </DndContext>\n </UploadHandlersProvider>\n </NavProvider>\n </DocumentEventsProvider>\n </LoadingOverlayProvider>\n </StepNavProvider>\n </LocaleProvider>\n </EmbedProvider>\n </ThemeProvider>\n </HierarchyProvider>\n </PreferencesProvider>\n <ModalContainer />\n <StayLoggedInModal />\n </AuthProvider>\n </DrawerStackProvider>\n </ModalProvider>\n </ScrollInfoProvider>\n </WindowInfoProvider>\n </TranslationProvider>\n </ClientFunctionProvider>\n </ConfigProvider>\n </RouteCache>\n </RouteTransitionProvider>\n </ServerFunctionsProvider>\n </RouterAdapter>\n <ToastContainer config={config} />\n </ClickOutsideProvider>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAYA,SAASC,UAAU,EAAEC,aAAa,QAAQ;AAC1C,SAASC,cAAc,EAAEC,aAAa,QAAQ;AAC9C,SAASC,kBAAkB,QAAQ;AACnC,OAAOC,KAAA,MAAW;AAIlB,SAASC,uBAAuB,QAAQ;AACxC,SAASC,mBAAmB,QAAQ;AACpC,SAASC,sBAAsB,QAAQ;AACvC,SAASC,WAAW,QAAQ;AAC5B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,eAAe,QAAQ;AAChC,SAASC,oBAAoB,QAAQ;AACrC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,YAAY,QAAQ;AAC7B,SAASC,sBAAsB,QAAQ;AACvC,SAASC,cAAc,QAAQ;AAC/B,SAASC,sBAAsB,QAAQ;AACvC,SAASC,aAAa,QAAQ;AAC9B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,cAAc,QAAQ;AAC/B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,UAAU,QAAQ;AAC3B,SAASC,uBAAuB,QAAQ;AACxC,SAASC,uBAAuB,QAAQ;AACxC,SAASC,aAAa,QAAQ;AAC9B,SAASC,cAAc,QAAQ;AAC/B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,sBAAsB,QAAQ;AAqBvC,OAAO,MAAMC,YAAA,GAAgCC,EAAA;EAAA,MAAAC,CAAA,GAAAhC,EAAA;EAAC;IAAAiC,QAAA;IAAAC,MAAA;IAAAC,UAAA;IAAAC,KAAA;IAAAC,YAAA;IAAAC,gBAAA;IAAAC,SAAA;IAAAC,YAAA;IAAAC,eAAA;IAAAC,MAAA;IAAAC,WAAA;IAAAC,aAAA;IAAAC,cAAA;IAAAC,KAAA;IAAAC,YAAA;IAAAC;EAAA,IAAAjB,EAiB7C;EACC,MAAAkB,YAAA,GAAqB3C,KAAA,CAAA4C,KAAA,CAAW;EAAA,IAAAC,EAAA;EAAA,IAAAnB,CAAA,QAAAY,aAAA,IAAAZ,CAAA,QAAAC,QAAA,IAAAD,CAAA,QAAAE,MAAA,IAAAF,CAAA,QAAAG,UAAA,IAAAH,CAAA,QAAAiB,YAAA,IAAAjB,CAAA,QAAAI,KAAA,IAAAJ,CAAA,QAAAK,YAAA,IAAAL,CAAA,QAAAM,gBAAA,IAAAN,CAAA,QAAAO,SAAA,IAAAP,CAAA,QAAAQ,YAAA,IAAAR,CAAA,SAAAS,eAAA,IAAAT,CAAA,SAAAU,MAAA,IAAAV,CAAA,SAAAW,WAAA,IAAAX,CAAA,SAAAa,cAAA,IAAAb,CAAA,SAAAc,KAAA,IAAAd,CAAA,SAAAe,YAAA,IAAAf,CAAA,SAAAgB,IAAA;IAG9BG,EAAA,GAAAC,KAAA,CAAAvC,oBAAA;MAAAoB,QAAA,GACEoB,IAAA,CAACT,aAAA;QAAAX,QAAA,EACCoB,IAAA,CAAA5B,uBAAA;UAAAoB,cAAA;UAAAZ,QAAA,EACEoB,IAAA,CAAA7B,uBAAA;YAAAS,QAAA,EACEoB,IAAA,CAAA9B,UAAA;cAAA+B,cAAA,EACkBC,OAAA,CAAAC,GAAA,CAAAC,uCAAA,KAAwD;cAAAxB,QAAA,EAExEoB,IAAA,CAAApC,cAAA;gBAAAiB,MAAA;gBAAAD,QAAA,EACEoB,IAAA,CAAArC,sBAAA;kBAAAiB,QAAA,EACEoB,IAAA,CAAAzB,mBAAA;oBAAAO,UAAA;oBAAAE,YAAA;oBAAAqB,QAAA,EAGYlB,YAAA;oBAAAC,eAAA;oBAAAM,YAAA;oBAAAd,QAAA,EAIVoB,IAAA,CAAAvC,kBAAA;sBAAA6C,WAAA;wBAAAC,CAAA,EAEO;wBAAAC,CAAA,EACA;wBAAAC,CAAA,EACA;wBAAAC,EAAA,EACC;sBAAA;sBAAA9B,QAAA,EAGNoB,IAAA,CAAAhD,kBAAA;wBAAA4B,QAAA,EACEoB,IAAA,CAAAjD,aAAA;0BAAA4D,WAAA,EAA2B;0BAAAC,SAAA;0BAAAC,MAAA,EAA+B;0BAAAjC,QAAA,EACxDmB,KAAA,CAAA5C,mBAAA;4BAAAyB,QAAA,GACEoB,IAAA,CAAA9C,uBAAA,IAAC,GACD6C,KAAA,CAAArC,YAAA;8BAAA4B,WAAA;8BAAAK,IAAA;8BAAAf,QAAA,GACEoB,IAAA,CAAA/B,mBAAA;gCAAAW,QAAA,EACEoB,IAAA,CAAAjC,iBAAA;kCAAAa,QAAA,EACEoB,IAAA,CAAA3B,aAAA;oCAAAY,gBAAA;oCAAAQ,KAAA;oCAAAb,QAAA,EACEoB,IAAA,CAAAlC,aAAA;sCAAAiB,KAAA;sCAAAH,QAAA,EACEoB,IAAA,CAAAhC,cAAA;wCAAAqB,MAAA;wCAAAT,QAAA,EACEoB,IAAA,CAAAzC,eAAA;0CAAAqB,QAAA,EACEoB,IAAA,CAAA5C,sBAAA;4CAAAwB,QAAA,EACEoB,IAAA,CAAAnC,sBAAA;8CAAAe,QAAA,EACEoB,IAAA,CAAA3C,WAAA;gDAAAyD,aAAA,EAA4B5B,SAAA;gDAAAN,QAAA,EAC1BoB,IAAA,CAAAxB,sBAAA;kDAAAI,QAAA,EACEoB,IAAA,CAAApD,UAAA;oDAAAmE,kBAAA,EAAAlE,aAAA;oDAAAmE,EAAA,EAGMpB,YAAA;oDAAAhB;kDAAA,C;;;;;;;;;;kCAc1BoB,IAAA,CAAAlD,cAAA,IAAC,GACDkD,IAAA,CAAA1C,iBAAA,IAAC;4BAAA,C;;;;;;;;;;;UAazB0C,IAAA,CAAA1B,cAAA;QAAAO;MAAA,C;;;;;;;;;;;;;;;;;;;;;;;SAtEFiB,E;CAyEJ","ignoreList":[]}
@@ -46,7 +46,7 @@ export const ProgressBar = () => {
46
46
  }
47
47
  } else {
48
48
  shouldDelayProgress.current = true;
49
- setProgressToShow(_temp);
49
+ setProgressToShow(1);
50
50
  clearTimerID = setTimeout(() => {
51
51
  setProgressToShow(null);
52
52
  }, transitionDuration * 2);
@@ -101,7 +101,4 @@ export const ProgressBar = () => {
101
101
  }
102
102
  return null;
103
103
  };
104
- function _temp(currentProgress) {
105
- return currentProgress === null ? null : 1;
106
- }
107
104
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useEffect","useRef","useRouteTransition","transitionDuration","baseClass","initialDelay","ProgressBar","$","isTransitioning","transitionProgress","progressToShow","setProgressToShow","useState","shouldDelayProgress","t0","t1","clearTimerID","delayTimerID","current","_temp","clearTimeout","t2","t3","filter","Boolean","t4","join","t5","_jsx","className","style","children","width","currentProgress"],"sources":["../../../../src/providers/RouteTransition/ProgressBar/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect, useRef } from 'react'\n\nimport { useRouteTransition } from '../index.js'\nimport './index.css'\n\nconst transitionDuration = 200\nconst baseClass = 'progress-bar'\nconst initialDelay = 150\n\n/**\n * Renders a progress bar that shows the progress of a route transition.\n * Place this at the root of your application, inside of the `RouteTransitionProvider`.\n * When a transition is triggered, the progress bar will show the progress of that transition and exit when the transition is complete.\n * @returns A progress bar that shows the progress of a route transition\n * @example\n * import { RouteTransitionProvider, ProgressBar, Link } from '@payloadcms/ui'\n * const App = () => (\n * <RouteTransitionProvider>\n * <ProgressBar />\n * <Link href=\"/somewhere\">Go Somewhere</Link>\n * </RouteTransitionProvider>\n */\nexport const ProgressBar = () => {\n const { isTransitioning, transitionProgress } = useRouteTransition()\n const [progressToShow, setProgressToShow] = React.useState<null | number>(null)\n const shouldDelayProgress = useRef(true)\n\n useEffect(() => {\n let clearTimerID: NodeJS.Timeout\n let delayTimerID: NodeJS.Timeout\n\n if (isTransitioning) {\n if (shouldDelayProgress.current) {\n delayTimerID = setTimeout(() => {\n setProgressToShow(transitionProgress)\n shouldDelayProgress.current = false\n }, initialDelay)\n } else {\n setProgressToShow(transitionProgress)\n }\n } else {\n shouldDelayProgress.current = true\n\n // Fast forward to 100% when the transition is complete\n // Then fade out the progress bar directly after\n setProgressToShow((currentProgress) => (currentProgress === null ? null : 1))\n\n // Wait for CSS transition to finish before hiding the progress bar\n // This includes both the fast-forward to 100% and the subsequent fade-out\n clearTimerID = setTimeout(() => {\n setProgressToShow(null)\n }, transitionDuration * 2)\n }\n\n return () => {\n clearTimeout(clearTimerID)\n clearTimeout(delayTimerID)\n }\n }, [isTransitioning, transitionProgress])\n\n if (typeof progressToShow === 'number') {\n return (\n <div\n className={[baseClass, progressToShow === 1 && `${baseClass}--fade-out`]\n .filter(Boolean)\n .join(' ')}\n style={{\n // @ts-expect-error - TS doesn't like custom CSS properties\n '--transition-duration': `${transitionDuration}ms`,\n }}\n >\n <div\n className={`${baseClass}__progress`}\n style={{\n width: `${(progressToShow || 0) * 100}%`,\n }}\n />\n </div>\n )\n }\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,SAAS,EAAEC,MAAM,QAAQ;AAEzC,SAASC,kBAAkB,QAAQ;AACnC,OAAO;AAEP,MAAMC,kBAAA,GAAqB;AAC3B,MAAMC,SAAA,GAAY;AAClB,MAAMC,YAAA,GAAe;AAErB;;;;;;;;;;;;;AAaA,OAAO,MAAMC,WAAA,GAAcA,CAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EACzB;IAAAU,eAAA;IAAAC;EAAA,IAAgDP,kBAAA;EAChD,OAAAQ,cAAA,EAAAC,iBAAA,IAA4CZ,KAAA,CAAAa,QAAA,KAA8B;EAC1E,MAAAC,mBAAA,GAA4BZ,MAAA,KAAO;EAAA,IAAAa,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAR,CAAA,QAAAC,eAAA,IAAAD,CAAA,QAAAE,kBAAA;IAEzBK,EAAA,GAAAA,CAAA;MACJE,GAAA,CAAAA,YAAA;MACAC,GAAA,CAAAA,YAAA;MAAA,IAEAT,eAAA;QAAA,IACEK,mBAAA,CAAAK,OAAA;UACFD,YAAA,CAAAA,CAAA,CAAeA,aAAA,CAAAA,EAAA,CAAAA;YACbN,iBAAA,CAAkBF,kBAAA;YAClBI,mBAAA,CAAAK,OAAA;UAAA,GAAAb,YACC;QAHH;UAKAM,iBAAA,CAAkBF,kBAAA;QAAA;MAAA;QAGpBI,mBAAA,CAAAK,OAAA;QAIAP,iBAAA,CAAAQ,KAA0E;QAI1EH,YAAA,CAAAA,CAAA,CAAeA,aAAA,CAAAA,EAAA,CAAAA;UACbL,iBAAA,KAAkB;QAAA,GACjBR,kBAAA,IAAqB;MAFxB;MAAA;QAMAiB,YAAA,CAAaJ,YAAA;QACbI,YAAA,CAAaH,YAAA;MAAA;IAAA;IAEdF,EAAA,IAACP,eAAA,EAAiBC,kBAAA;IAAmBF,CAAA,MAAAC,eAAA;IAAAD,CAAA,MAAAE,kBAAA;IAAAF,CAAA,MAAAO,EAAA;IAAAP,CAAA,MAAAQ,EAAA;EAAA;IAAAD,EAAA,GAAAP,CAAA;IAAAQ,EAAA,GAAAR,CAAA;EAAA;EA/BxCP,SAAA,CAAUc,EA+BV,EAAGC,EAAqC;EAAA,IAEpC,OAAOL,cAAA,KAAmB;IAGD,MAAAW,EAAA,GAAAX,cAAA,MAAmB,IAAK,GAAAN,SAAA,YAAwB;IAAA,IAAAkB,EAAA;IAAA,IAAAf,CAAA,QAAAc,EAAA;MAA5DC,EAAA,IAAAlB,SAAA,EAAYiB,EAAgD,EAAAE,MAAA,CAAAC,OAC7D;MAAAjB,CAAA,MAAAc,EAAA;MAAAd,CAAA,MAAAe,EAAA;IAAA;MAAAA,EAAA,GAAAf,CAAA;IAAA;IADC,MAAAkB,EAAA,GAAAH,EACD,CAAAI,IAAA,CACF;IAAA,IAAAC,EAAA;IAAA,IAAApB,CAAA,QAAAG,cAAA,IAAAH,CAAA,QAAAkB,EAAA;MAHVE,EAAA,GAAAC,IAAA,CAAC;QAAAC,SAAA,EACYJ,EAEH;QAAAK,KAAA;UAAA,yBAGmB,GAAA3B,kBAAA;QAAyB;QAAA4B,QAAA,EAGpDH,IAAA,CAAC;UAAAC,SAAA,EACY,GAAAzB,SAAA,YAAwB;UAAA0B,KAAA;YAAAE,KAAA,EAE1B,GAAG,CAACtB,cAAA,KAAkB,OAAK;UAAM;QAAA,C;;;;;;;;WAZ9CiB,E;;;CAoBN;AA5D2B,SAAAR,MAAAc,eAAA;EAAA,OAuBmBA,eAAA,SAAoB,WAAc;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useEffect","useRef","useRouteTransition","transitionDuration","baseClass","initialDelay","ProgressBar","$","isTransitioning","transitionProgress","progressToShow","setProgressToShow","useState","shouldDelayProgress","t0","t1","clearTimerID","delayTimerID","current","clearTimeout","t2","t3","filter","Boolean","t4","join","t5","_jsx","className","style","children","width"],"sources":["../../../../src/providers/RouteTransition/ProgressBar/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect, useRef } from 'react'\n\nimport { useRouteTransition } from '../index.js'\nimport './index.css'\n\nconst transitionDuration = 200\nconst baseClass = 'progress-bar'\nconst initialDelay = 150\n\n/**\n * Renders a progress bar that shows the progress of a route transition.\n * Place this at the root of your application, inside of the `RouteTransitionProvider`.\n * When a transition is triggered, the progress bar will show the progress of that transition and exit when the transition is complete.\n * @returns A progress bar that shows the progress of a route transition\n * @example\n * import { RouteTransitionProvider, ProgressBar, Link } from '@payloadcms/ui'\n * const App = () => (\n * <RouteTransitionProvider>\n * <ProgressBar />\n * <Link href=\"/somewhere\">Go Somewhere</Link>\n * </RouteTransitionProvider>\n */\nexport const ProgressBar = () => {\n const { isTransitioning, transitionProgress } = useRouteTransition()\n const [progressToShow, setProgressToShow] = React.useState<null | number>(null)\n const shouldDelayProgress = useRef(true)\n\n useEffect(() => {\n let clearTimerID: NodeJS.Timeout\n let delayTimerID: NodeJS.Timeout\n\n if (isTransitioning) {\n if (shouldDelayProgress.current) {\n delayTimerID = setTimeout(() => {\n setProgressToShow(transitionProgress)\n shouldDelayProgress.current = false\n }, initialDelay)\n } else {\n setProgressToShow(transitionProgress)\n }\n } else {\n shouldDelayProgress.current = true\n\n // Fast forward to 100% when the transition is complete\n // Then fade out the progress bar directly after\n setProgressToShow(1)\n\n // Wait for CSS transition to finish before hiding the progress bar\n // This includes both the fast-forward to 100% and the subsequent fade-out\n clearTimerID = setTimeout(() => {\n setProgressToShow(null)\n }, transitionDuration * 2)\n }\n\n return () => {\n clearTimeout(clearTimerID)\n clearTimeout(delayTimerID)\n }\n }, [isTransitioning, transitionProgress])\n\n if (typeof progressToShow === 'number') {\n return (\n <div\n className={[baseClass, progressToShow === 1 && `${baseClass}--fade-out`]\n .filter(Boolean)\n .join(' ')}\n style={{\n // @ts-expect-error - TS doesn't like custom CSS properties\n '--transition-duration': `${transitionDuration}ms`,\n }}\n >\n <div\n className={`${baseClass}__progress`}\n style={{\n width: `${(progressToShow || 0) * 100}%`,\n }}\n />\n </div>\n )\n }\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,SAAS,EAAEC,MAAM,QAAQ;AAEzC,SAASC,kBAAkB,QAAQ;AACnC,OAAO;AAEP,MAAMC,kBAAA,GAAqB;AAC3B,MAAMC,SAAA,GAAY;AAClB,MAAMC,YAAA,GAAe;AAErB;;;;;;;;;;;;;AAaA,OAAO,MAAMC,WAAA,GAAcA,CAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EACzB;IAAAU,eAAA;IAAAC;EAAA,IAAgDP,kBAAA;EAChD,OAAAQ,cAAA,EAAAC,iBAAA,IAA4CZ,KAAA,CAAAa,QAAA,KAA8B;EAC1E,MAAAC,mBAAA,GAA4BZ,MAAA,KAAO;EAAA,IAAAa,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAR,CAAA,QAAAC,eAAA,IAAAD,CAAA,QAAAE,kBAAA;IAEzBK,EAAA,GAAAA,CAAA;MACJE,GAAA,CAAAA,YAAA;MACAC,GAAA,CAAAA,YAAA;MAAA,IAEAT,eAAA;QAAA,IACEK,mBAAA,CAAAK,OAAA;UACFD,YAAA,CAAAA,CAAA,CAAeA,aAAA,CAAAA,EAAA,CAAAA;YACbN,iBAAA,CAAkBF,kBAAA;YAClBI,mBAAA,CAAAK,OAAA;UAAA,GAAAb,YACC;QAHH;UAKAM,iBAAA,CAAkBF,kBAAA;QAAA;MAAA;QAGpBI,mBAAA,CAAAK,OAAA;QAIAP,iBAAA,EAAkB;QAIlBK,YAAA,CAAAA,CAAA,CAAeA,aAAA,CAAAA,EAAA,CAAAA;UACbL,iBAAA,KAAkB;QAAA,GACjBR,kBAAA,IAAqB;MAFxB;MAAA;QAMAgB,YAAA,CAAaH,YAAA;QACbG,YAAA,CAAaF,YAAA;MAAA;IAAA;IAEdF,EAAA,IAACP,eAAA,EAAiBC,kBAAA;IAAmBF,CAAA,MAAAC,eAAA;IAAAD,CAAA,MAAAE,kBAAA;IAAAF,CAAA,MAAAO,EAAA;IAAAP,CAAA,MAAAQ,EAAA;EAAA;IAAAD,EAAA,GAAAP,CAAA;IAAAQ,EAAA,GAAAR,CAAA;EAAA;EA/BxCP,SAAA,CAAUc,EA+BV,EAAGC,EAAqC;EAAA,IAEpC,OAAOL,cAAA,KAAmB;IAGD,MAAAU,EAAA,GAAAV,cAAA,MAAmB,IAAK,GAAAN,SAAA,YAAwB;IAAA,IAAAiB,EAAA;IAAA,IAAAd,CAAA,QAAAa,EAAA;MAA5DC,EAAA,IAAAjB,SAAA,EAAYgB,EAAgD,EAAAE,MAAA,CAAAC,OAC7D;MAAAhB,CAAA,MAAAa,EAAA;MAAAb,CAAA,MAAAc,EAAA;IAAA;MAAAA,EAAA,GAAAd,CAAA;IAAA;IADC,MAAAiB,EAAA,GAAAH,EACD,CAAAI,IAAA,CACF;IAAA,IAAAC,EAAA;IAAA,IAAAnB,CAAA,QAAAG,cAAA,IAAAH,CAAA,QAAAiB,EAAA;MAHVE,EAAA,GAAAC,IAAA,CAAC;QAAAC,SAAA,EACYJ,EAEH;QAAAK,KAAA;UAAA,yBAGmB,GAAA1B,kBAAA;QAAyB;QAAA2B,QAAA,EAGpDH,IAAA,CAAC;UAAAC,SAAA,EACY,GAAAxB,SAAA,YAAwB;UAAAyB,KAAA;YAAAE,KAAA,EAE1B,GAAG,CAACrB,cAAA,KAAkB,OAAK;UAAM;QAAA,C;;;;;;;;WAZ9CgB,E;;;CAoBN","ignoreList":[]}
@@ -21,8 +21,6 @@ type RouteTransitionProps = {
21
21
  };
22
22
  type StartRouteTransition = (callback?: () => void) => void;
23
23
  type RouteTransitionContextValue = {
24
- /** Keeps the transition active until the returned release function is called. */
25
- holdRouteTransition: () => () => void;
26
24
  isTransitioning: boolean;
27
25
  startRouteTransition: StartRouteTransition;
28
26
  transitionProgress: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/RouteTransition/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAyE,MAAM,OAAO,CAAA;AAE7F;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAqFlE,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAAA;AAED,KAAK,oBAAoB,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;AAE3D,KAAK,2BAA2B,GAAG;IACjC,iFAAiF;IACjF,mBAAmB,EAAE,MAAM,MAAM,IAAI,CAAA;IACrC,eAAe,EAAE,OAAO,CAAA;IACxB,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAcD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,mCAA0C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/RouteTransition/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAyE,MAAM,OAAO,CAAA;AAE7F;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA6DlE,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAAA;AAED,KAAK,oBAAoB,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;AAE3D,KAAK,2BAA2B,GAAG;IACjC,eAAe,EAAE,OAAO,CAAA;IACxB,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAaD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,mCAA0C,CAAA"}
@@ -20,14 +20,12 @@ import React, { startTransition, useCallback, useEffect, useOptimistic, useRef }
20
20
  * )
21
21
  */
22
22
  export const RouteTransitionProvider = t0 => {
23
- const $ = _c(12);
23
+ const $ = _c(11);
24
24
  const {
25
25
  children
26
26
  } = t0;
27
- const [isOptimisticallyTransitioning, setIsOptimisticallyTransitioning] = useOptimistic(false);
28
- const [activeRouteTransitionHolds, setActiveRouteTransitionHolds] = React.useState(0);
27
+ const [isTransitioning, setIsTransitioning] = useOptimistic(false);
29
28
  const [transitionProgress, setTransitionProgress] = React.useState(0);
30
- const isTransitioning = isOptimisticallyTransitioning || activeRouteTransitionHolds > 0;
31
29
  const transitionProgressRef = useRef(transitionProgress);
32
30
  const timerID = useRef(null);
33
31
  let t1;
@@ -68,62 +66,42 @@ export const RouteTransitionProvider = t0 => {
68
66
  }
69
67
  useEffect(t2, t3);
70
68
  let t4;
71
- if ($[4] !== setIsOptimisticallyTransitioning) {
69
+ if ($[4] !== setIsTransitioning) {
72
70
  t4 = callback => {
73
71
  startTransition(() => {
74
- setIsOptimisticallyTransitioning(true);
72
+ setIsTransitioning(true);
75
73
  if (typeof callback === "function") {
76
74
  callback();
77
75
  }
78
76
  });
79
77
  };
80
- $[4] = setIsOptimisticallyTransitioning;
78
+ $[4] = setIsTransitioning;
81
79
  $[5] = t4;
82
80
  } else {
83
81
  t4 = $[5];
84
82
  }
85
83
  const startRouteTransition = t4;
86
84
  let t5;
87
- if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
88
- t5 = () => {
89
- let hasReleased = false;
90
- setActiveRouteTransitionHolds(_temp);
91
- return () => {
92
- if (hasReleased) {
93
- return;
94
- }
95
- hasReleased = true;
96
- setActiveRouteTransitionHolds(_temp2);
97
- };
98
- };
99
- $[6] = t5;
100
- } else {
101
- t5 = $[6];
102
- }
103
- const holdRouteTransition = t5;
104
- let t6;
105
- if ($[7] !== children || $[8] !== isTransitioning || $[9] !== startRouteTransition || $[10] !== transitionProgress) {
106
- t6 = _jsx(RouteTransitionContext, {
85
+ if ($[6] !== children || $[7] !== isTransitioning || $[8] !== startRouteTransition || $[9] !== transitionProgress) {
86
+ t5 = _jsx(RouteTransitionContext, {
107
87
  value: {
108
- holdRouteTransition,
109
88
  isTransitioning,
110
89
  startRouteTransition,
111
90
  transitionProgress
112
91
  },
113
92
  children
114
93
  });
115
- $[7] = children;
116
- $[8] = isTransitioning;
117
- $[9] = startRouteTransition;
118
- $[10] = transitionProgress;
119
- $[11] = t6;
94
+ $[6] = children;
95
+ $[7] = isTransitioning;
96
+ $[8] = startRouteTransition;
97
+ $[9] = transitionProgress;
98
+ $[10] = t5;
120
99
  } else {
121
- t6 = $[11];
100
+ t5 = $[10];
122
101
  }
123
- return t6;
102
+ return t5;
124
103
  };
125
104
  const RouteTransitionContext = /*#__PURE__*/React.createContext({
126
- holdRouteTransition: () => () => undefined,
127
105
  isTransitioning: false,
128
106
  // Default implementation: just call the callback directly (no transition animation)
129
107
  startRouteTransition: callback => {
@@ -154,10 +132,4 @@ const RouteTransitionContext = /*#__PURE__*/React.createContext({
154
132
  * }
155
133
  */
156
134
  export const useRouteTransition = () => React.use(RouteTransitionContext);
157
- function _temp(count) {
158
- return count + 1;
159
- }
160
- function _temp2(count_0) {
161
- return Math.max(0, count_0 - 1);
162
- }
163
135
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","startTransition","useCallback","useEffect","useOptimistic","useRef","RouteTransitionProvider","t0","$","children","isOptimisticallyTransitioning","setIsOptimisticallyTransitioning","activeRouteTransitionHolds","setActiveRouteTransitionHolds","useState","transitionProgress","setTransitionProgress","isTransitioning","transitionProgressRef","timerID","t1","Symbol","for","current","setInterval","newProgress","Math","random","pow","log","initiateProgress","t2","t3","clearInterval","t4","callback","startRouteTransition","t5","hasReleased","_temp","_temp2","holdRouteTransition","t6","_jsx","RouteTransitionContext","value","createContext","undefined","useRouteTransition","use","count","count_0","max"],"sources":["../../../src/providers/RouteTransition/index.tsx"],"sourcesContent":["'use client'\nimport React, { startTransition, useCallback, useEffect, useOptimistic, useRef } from 'react'\n\n/**\n * Route transitions are useful in showing immediate visual feedback to the user when navigating between pages. This is especially useful on slow networks when navigating to data heavy or process intensive pages.\n * To use route transitions, place the `RouteTransitionProvider` at the root of your application, outside of the `ProgressBar` component.\n * To trigger a route transition, use the `Link` component from `@payloadcms/ui`,\n * or wrap a callback function with the `startRouteTransition` method.\n * To gain access to the `RouteTransitionContext`, call the `useRouteTransition` hook in your component.\n * @returns A context provider with methods and state for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * import { RouteTransitionProvider, ProgressBar, Link } from '@payloadcms/ui'\n * const App = () => (\n * <RouteTransitionProvider>\n * <ProgressBar />\n * <Link href=\"/somewhere\">Go Somewhere</Link>\n * </RouteTransitionProvider>\n * )\n */\nexport const RouteTransitionProvider: React.FC<RouteTransitionProps> = ({ children }) => {\n const [isOptimisticallyTransitioning, setIsOptimisticallyTransitioning] = useOptimistic(false)\n const [activeRouteTransitionHolds, setActiveRouteTransitionHolds] = React.useState(0)\n const [transitionProgress, setTransitionProgress] = React.useState<number>(0)\n const isTransitioning = isOptimisticallyTransitioning || activeRouteTransitionHolds > 0\n\n const transitionProgressRef = useRef(transitionProgress)\n\n const timerID = useRef(null)\n\n const initiateProgress = useCallback(() => {\n timerID.current = setInterval(() => {\n // randomly update progress using an exponential curve\n // cap the progress to ensure it never fully reaches completion\n // accelerate quickly then decelerate slowly\n const maxProgress = 0.93\n const jumpFactor = 0.2 // lower to reduce jumps in progress\n const growthFactor = 0.75 // adjust to control acceleration\n const slowdownFactor = 0.75 // adjust to control deceleration\n\n const newProgress =\n transitionProgressRef.current +\n (maxProgress - transitionProgressRef.current) *\n Math.random() *\n jumpFactor *\n Math.pow(Math.log(1 + (1 - transitionProgressRef.current) * growthFactor), slowdownFactor)\n\n setTransitionProgress(newProgress)\n transitionProgressRef.current = newProgress\n }, 250) // every n ms, update progress\n }, [])\n\n useEffect(() => {\n setTransitionProgress(0)\n transitionProgressRef.current = 0\n\n if (isTransitioning) {\n initiateProgress()\n } else {\n if (timerID.current) {\n clearInterval(timerID.current)\n }\n }\n }, [isTransitioning, initiateProgress])\n\n const startRouteTransition: StartRouteTransition = useCallback(\n (callback?: () => void) => {\n startTransition(() => {\n setIsOptimisticallyTransitioning(true)\n\n if (typeof callback === 'function') {\n callback()\n }\n })\n },\n [setIsOptimisticallyTransitioning],\n )\n\n const holdRouteTransition = useCallback(() => {\n let hasReleased = false\n\n setActiveRouteTransitionHolds((count) => count + 1)\n\n return () => {\n if (hasReleased) {\n return\n }\n\n hasReleased = true\n setActiveRouteTransitionHolds((count) => Math.max(0, count - 1))\n }\n }, [])\n\n return (\n <RouteTransitionContext\n value={{\n holdRouteTransition,\n isTransitioning,\n startRouteTransition,\n transitionProgress,\n }}\n >\n {children}\n </RouteTransitionContext>\n )\n}\n\ntype RouteTransitionProps = {\n children: React.ReactNode\n}\n\ntype StartRouteTransition = (callback?: () => void) => void\n\ntype RouteTransitionContextValue = {\n /** Keeps the transition active until the returned release function is called. */\n holdRouteTransition: () => () => void\n isTransitioning: boolean\n startRouteTransition: StartRouteTransition\n transitionProgress: number\n}\n\nconst RouteTransitionContext = React.createContext<RouteTransitionContextValue>({\n holdRouteTransition: () => () => undefined,\n isTransitioning: false,\n // Default implementation: just call the callback directly (no transition animation)\n startRouteTransition: (callback) => {\n if (typeof callback === 'function') {\n callback()\n }\n },\n transitionProgress: 0,\n})\n\n/**\n * Use this hook to access the `RouteTransitionContext` provided by the `RouteTransitionProvider`.\n * To start a transition, fire the `startRouteTransition` method with a provided callback to run while the transition takes place.\n * @returns The `RouteTransitionContext` needed for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * 'use client'\n * import React, { useCallback } from 'react'\n * import { useTransition, useRouter } from '@payloadcms/ui'\n *\n * const MyComponent: React.FC = () => {\n * const router = useRouter()\n * const { startRouteTransition } = useRouteTransition()\n *\n * const redirectSomewhere = useCallback(() => {\n * startRouteTransition(() => router.push('/somewhere'))\n * }, [startRouteTransition, router])\n *\n * // ...\n * }\n */\nexport const useRouteTransition = () => React.use(RouteTransitionContext)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","startTransition","useCallback","useEffect","useOptimistic","useRef","RouteTransitionProvider","t0","$","children","isTransitioning","setIsTransitioning","transitionProgress","setTransitionProgress","useState","transitionProgressRef","timerID","t1","Symbol","for","current","setInterval","newProgress","Math","random","pow","log","initiateProgress","t2","t3","clearInterval","t4","callback","startRouteTransition","t5","_jsx","RouteTransitionContext","value","createContext","useRouteTransition","use"],"sources":["../../../src/providers/RouteTransition/index.tsx"],"sourcesContent":["'use client'\nimport React, { startTransition, useCallback, useEffect, useOptimistic, useRef } from 'react'\n\n/**\n * Route transitions are useful in showing immediate visual feedback to the user when navigating between pages. This is especially useful on slow networks when navigating to data heavy or process intensive pages.\n * To use route transitions, place the `RouteTransitionProvider` at the root of your application, outside of the `ProgressBar` component.\n * To trigger a route transition, use the `Link` component from `@payloadcms/ui`,\n * or wrap a callback function with the `startRouteTransition` method.\n * To gain access to the `RouteTransitionContext`, call the `useRouteTransition` hook in your component.\n * @returns A context provider with methods and state for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * import { RouteTransitionProvider, ProgressBar, Link } from '@payloadcms/ui'\n * const App = () => (\n * <RouteTransitionProvider>\n * <ProgressBar />\n * <Link href=\"/somewhere\">Go Somewhere</Link>\n * </RouteTransitionProvider>\n * )\n */\nexport const RouteTransitionProvider: React.FC<RouteTransitionProps> = ({ children }) => {\n const [isTransitioning, setIsTransitioning] = useOptimistic(false)\n const [transitionProgress, setTransitionProgress] = React.useState<number>(0)\n\n const transitionProgressRef = useRef(transitionProgress)\n\n const timerID = useRef(null)\n\n const initiateProgress = useCallback(() => {\n timerID.current = setInterval(() => {\n // randomly update progress using an exponential curve\n // cap the progress to ensure it never fully reaches completion\n // accelerate quickly then decelerate slowly\n const maxProgress = 0.93\n const jumpFactor = 0.2 // lower to reduce jumps in progress\n const growthFactor = 0.75 // adjust to control acceleration\n const slowdownFactor = 0.75 // adjust to control deceleration\n\n const newProgress =\n transitionProgressRef.current +\n (maxProgress - transitionProgressRef.current) *\n Math.random() *\n jumpFactor *\n Math.pow(Math.log(1 + (1 - transitionProgressRef.current) * growthFactor), slowdownFactor)\n\n setTransitionProgress(newProgress)\n transitionProgressRef.current = newProgress\n }, 250) // every n ms, update progress\n }, [])\n\n useEffect(() => {\n setTransitionProgress(0)\n transitionProgressRef.current = 0\n\n if (isTransitioning) {\n initiateProgress()\n } else {\n if (timerID.current) {\n clearInterval(timerID.current)\n }\n }\n }, [isTransitioning, initiateProgress])\n\n const startRouteTransition: StartRouteTransition = useCallback(\n (callback?: () => void) => {\n startTransition(() => {\n setIsTransitioning(true)\n\n if (typeof callback === 'function') {\n callback()\n }\n })\n },\n [setIsTransitioning],\n )\n\n return (\n <RouteTransitionContext value={{ isTransitioning, startRouteTransition, transitionProgress }}>\n {children}\n </RouteTransitionContext>\n )\n}\n\ntype RouteTransitionProps = {\n children: React.ReactNode\n}\n\ntype StartRouteTransition = (callback?: () => void) => void\n\ntype RouteTransitionContextValue = {\n isTransitioning: boolean\n startRouteTransition: StartRouteTransition\n transitionProgress: number\n}\n\nconst RouteTransitionContext = React.createContext<RouteTransitionContextValue>({\n isTransitioning: false,\n // Default implementation: just call the callback directly (no transition animation)\n startRouteTransition: (callback) => {\n if (typeof callback === 'function') {\n callback()\n }\n },\n transitionProgress: 0,\n})\n\n/**\n * Use this hook to access the `RouteTransitionContext` provided by the `RouteTransitionProvider`.\n * To start a transition, fire the `startRouteTransition` method with a provided callback to run while the transition takes place.\n * @returns The `RouteTransitionContext` needed for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * 'use client'\n * import React, { useCallback } from 'react'\n * import { useTransition, useRouter } from '@payloadcms/ui'\n *\n * const MyComponent: React.FC = () => {\n * const router = useRouter()\n * const { startRouteTransition } = useRouteTransition()\n *\n * const redirectSomewhere = useCallback(() => {\n * startRouteTransition(() => router.push('/somewhere'))\n * }, [startRouteTransition, router])\n *\n * // ...\n * }\n */\nexport const useRouteTransition = () => React.use(RouteTransitionContext)\n"],"mappings":"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","ignoreList":[]}