@payloadcms/ui 3.0.0-beta.43 → 3.0.0-beta.44

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 (101) hide show
  1. package/dist/elements/Autosave/index.d.ts.map +1 -1
  2. package/dist/elements/Autosave/index.js +90 -69
  3. package/dist/elements/Autosave/index.js.map +1 -1
  4. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  5. package/dist/elements/DeleteDocument/index.js +1 -2
  6. package/dist/elements/DeleteDocument/index.js.map +1 -1
  7. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  8. package/dist/elements/DeleteMany/index.js +1 -2
  9. package/dist/elements/DeleteMany/index.js.map +1 -1
  10. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  11. package/dist/elements/DocumentDrawer/DrawerContent.js +1 -2
  12. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  13. package/dist/elements/DocumentDrawer/index.d.ts.map +1 -1
  14. package/dist/elements/DocumentDrawer/index.js +1 -2
  15. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  16. package/dist/elements/Drawer/index.d.ts.map +1 -1
  17. package/dist/elements/Drawer/index.js +1 -3
  18. package/dist/elements/Drawer/index.js.map +1 -1
  19. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  20. package/dist/elements/DuplicateDocument/index.js +1 -2
  21. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  22. package/dist/elements/EditMany/index.d.ts.map +1 -1
  23. package/dist/elements/EditMany/index.js +1 -2
  24. package/dist/elements/EditMany/index.js.map +1 -1
  25. package/dist/elements/EditUpload/index.d.ts.map +1 -1
  26. package/dist/elements/EditUpload/index.js +1 -5
  27. package/dist/elements/EditUpload/index.js.map +1 -1
  28. package/dist/elements/GenerateConfirmation/index.d.ts.map +1 -1
  29. package/dist/elements/GenerateConfirmation/index.js +1 -2
  30. package/dist/elements/GenerateConfirmation/index.js.map +1 -1
  31. package/dist/elements/ListControls/index.d.ts.map +1 -1
  32. package/dist/elements/ListControls/index.js +1 -2
  33. package/dist/elements/ListControls/index.js.map +1 -1
  34. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  35. package/dist/elements/ListDrawer/DrawerContent.js +1 -2
  36. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  37. package/dist/elements/ListDrawer/index.d.ts.map +1 -1
  38. package/dist/elements/ListDrawer/index.js +1 -2
  39. package/dist/elements/ListDrawer/index.js.map +1 -1
  40. package/dist/elements/Modal/index.d.ts +1 -7
  41. package/dist/elements/Modal/index.d.ts.map +1 -1
  42. package/dist/elements/Modal/index.js +1 -7
  43. package/dist/elements/Modal/index.js.map +1 -1
  44. package/dist/elements/Nav/NavToggler/index.d.ts.map +1 -1
  45. package/dist/elements/Nav/NavToggler/index.js +1 -2
  46. package/dist/elements/Nav/NavToggler/index.js.map +1 -1
  47. package/dist/elements/Nav/context.d.ts.map +1 -1
  48. package/dist/elements/Nav/context.js +1 -2
  49. package/dist/elements/Nav/context.js.map +1 -1
  50. package/dist/elements/Popup/index.d.ts.map +1 -1
  51. package/dist/elements/Popup/index.js +1 -2
  52. package/dist/elements/Popup/index.js.map +1 -1
  53. package/dist/elements/PublishMany/index.d.ts.map +1 -1
  54. package/dist/elements/PublishMany/index.js +1 -2
  55. package/dist/elements/PublishMany/index.js.map +1 -1
  56. package/dist/elements/Status/index.d.ts.map +1 -1
  57. package/dist/elements/Status/index.js +1 -2
  58. package/dist/elements/Status/index.js.map +1 -1
  59. package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
  60. package/dist/elements/StayLoggedIn/index.js +1 -2
  61. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  62. package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
  63. package/dist/elements/TableColumns/buildColumnState.js +2 -1
  64. package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
  65. package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
  66. package/dist/elements/UnpublishMany/index.js +1 -2
  67. package/dist/elements/UnpublishMany/index.js.map +1 -1
  68. package/dist/elements/WindowInfo/index.d.ts +1 -3
  69. package/dist/elements/WindowInfo/index.d.ts.map +1 -1
  70. package/dist/elements/WindowInfo/index.js +1 -7
  71. package/dist/elements/WindowInfo/index.js.map +1 -1
  72. package/dist/exports/elements.d.ts +1 -6
  73. package/dist/exports/elements.d.ts.map +1 -1
  74. package/dist/exports/elements.js +1 -4
  75. package/dist/exports/elements.js.map +1 -1
  76. package/dist/fields/Blocks/BlocksDrawer/index.d.ts.map +1 -1
  77. package/dist/fields/Blocks/BlocksDrawer/index.js +1 -2
  78. package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
  79. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  80. package/dist/fields/Blocks/RowActions.js +1 -2
  81. package/dist/fields/Blocks/RowActions.js.map +1 -1
  82. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  83. package/dist/fields/Checkbox/Input.js +1 -0
  84. package/dist/fields/Checkbox/Input.js.map +1 -1
  85. package/dist/fields/Tabs/index.d.ts.map +1 -1
  86. package/dist/fields/Tabs/index.js +10 -1
  87. package/dist/fields/Tabs/index.js.map +1 -1
  88. package/dist/hooks/useHotkey.d.ts.map +1 -1
  89. package/dist/hooks/useHotkey.js +1 -2
  90. package/dist/hooks/useHotkey.js.map +1 -1
  91. package/dist/providers/Auth/index.d.ts.map +1 -1
  92. package/dist/providers/Auth/index.js +1 -2
  93. package/dist/providers/Auth/index.js.map +1 -1
  94. package/dist/providers/Root/index.d.ts.map +1 -1
  95. package/dist/providers/Root/index.js +3 -13
  96. package/dist/providers/Root/index.js.map +1 -1
  97. package/dist/utilities/reduceFieldsToValuesWithValidation.d.ts +15 -0
  98. package/dist/utilities/reduceFieldsToValuesWithValidation.d.ts.map +1 -0
  99. package/dist/utilities/reduceFieldsToValuesWithValidation.js +29 -0
  100. package/dist/utilities/reduceFieldsToValuesWithValidation.js.map +1 -0
  101. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useHotkey.ts"],"sourcesContent":["'use client'\n/* eslint-disable no-shadow */\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport { setsAreEqual } from 'payload/utilities'\nimport { useCallback, useEffect } from 'react'\n\n// Required to be outside of hook, else debounce would be necessary\n// and then one could not prevent the default behaviour.\n\n// It maps the pressed keys with the time they were pressed, in order to implement a maximum time\n// for the user to press the next key in the sequence\n\n// This is necessary to prevent a bug where the keyup event, which unsets the key as pressed\n// is not fired when the window is not focused.\n// When the user then comes back to the window, the key is still registered as pressed, even though it's not.\nconst pressedKeys = new Map<string, number>([])\n\nconst map = {\n altleft: 'alt',\n altright: 'alt',\n controlleft: 'ctrl',\n controlright: 'ctrl',\n ctrlleft: 'ctrl',\n ctrlright: 'ctrl',\n escape: 'esc',\n metaleft: 'meta',\n metaright: 'meta',\n osleft: 'meta',\n osright: 'meta',\n shiftleft: 'shift',\n shiftright: 'shift',\n}\n\nconst stripKey = (key: string) => {\n return (map[key.toLowerCase()] || key).trim().toLowerCase().replace('key', '')\n}\n\nconst pushToKeys = (code: string) => {\n const key = stripKey(code)\n\n // There is a weird bug with macos that if the keys are not cleared they remain in the\n // pressed keys set.\n if (key === 'meta') {\n pressedKeys.forEach(\n (time, pressedKey) => pressedKey !== 'meta' && pressedKeys.delete(pressedKey),\n )\n }\n\n pressedKeys.set(key, Date.now())\n}\n\nconst removeFromKeys = (code: string) => {\n const key = stripKey(code)\n // There is a weird bug with macos that if the keys are not cleared they remain in the\n // pressed keys set.\n if (key === 'meta') {\n pressedKeys.clear()\n }\n pressedKeys.delete(key)\n}\n\n/**\n * Hook function to work with hotkeys.\n * @param param0.keyCode {string[]} The keys to listen for (`Event.code` without `'Key'` and lowercased)\n * @param param0.cmdCtrlKey {boolean} Whether Ctrl on windows or Cmd on mac must be pressed\n * @param param0.editDepth {boolean} This ensures that the hotkey is only triggered for the most top-level drawer in case there are nested drawers\n * @param func The callback function\n */\nexport const useHotkey = (\n options: {\n cmdCtrlKey: boolean\n editDepth: number\n keyCodes: string[]\n },\n func: (e: KeyboardEvent) => void,\n): void => {\n const { useModal } = facelessUIImport\n\n const { cmdCtrlKey, editDepth, keyCodes } = options\n\n const { modalState } = useModal()\n\n const keydown = useCallback(\n (event: CustomEvent | KeyboardEvent) => {\n const e: KeyboardEvent = event.detail?.key ? event.detail : event\n if (e.key === undefined) {\n // Autofill events, or other synthetic events, can be ignored\n return\n }\n\n // Filter out pressed keys which have been pressed > 3 seconds ago\n pressedKeys.forEach((time, key) => {\n if (Date.now() - time > 3000) {\n pressedKeys.delete(key)\n }\n })\n\n if (e.code) pushToKeys(e.code)\n\n // Check for Mac and iPad\n const hasCmd = window.navigator.userAgent.includes('Mac OS X')\n const pressedWithoutModifier = [...pressedKeys.keys()].filter(\n (key) => !['alt', 'ctrl', 'meta', 'shift'].includes(key),\n )\n\n // Check whether arrays contain the same values (regardless of number of occurrences)\n if (\n setsAreEqual(new Set(pressedWithoutModifier), new Set(keyCodes)) &&\n (!cmdCtrlKey || (hasCmd && pressedKeys.has('meta')) || (!hasCmd && e.ctrlKey))\n ) {\n // get the maximum edit depth by counting the number of open drawers. modalState is and object which contains the state of all drawers.\n const maxEditDepth =\n Object.keys(modalState).filter((key) => modalState[key]?.isOpen)?.length + 1 ?? 1\n\n if (maxEditDepth !== editDepth) {\n // We only want to execute the hotkey from the most top-level drawer / edit depth.\n return\n }\n // execute the function associated with the maximum edit depth\n func(e)\n }\n },\n [keyCodes, cmdCtrlKey, editDepth, modalState, func],\n )\n\n const keyup = useCallback((e: KeyboardEvent) => {\n if (e.code) removeFromKeys(e.code)\n }, [])\n\n useEffect(() => {\n document.addEventListener('keydown', keydown, false)\n document.addEventListener('bypassKeyDown', keydown, false) // this is called if the keydown event's propagation is stopped by react-select\n document.addEventListener('keyup', keyup, false)\n\n return () => {\n document.removeEventListener('keydown', keydown)\n document.removeEventListener('bypassKeyDown', keydown)\n document.removeEventListener('keyup', keyup)\n }\n }, [keydown, keyup])\n}\n"],"names":["facelessUIImport","setsAreEqual","useCallback","useEffect","pressedKeys","Map","map","altleft","altright","controlleft","controlright","ctrlleft","ctrlright","escape","metaleft","metaright","osleft","osright","shiftleft","shiftright","stripKey","key","toLowerCase","trim","replace","pushToKeys","code","forEach","time","pressedKey","delete","set","Date","now","removeFromKeys","clear","useHotkey","options","func","useModal","cmdCtrlKey","editDepth","keyCodes","modalState","keydown","event","e","detail","undefined","hasCmd","window","navigator","userAgent","includes","pressedWithoutModifier","keys","filter","Set","has","ctrlKey","maxEditDepth","Object","isOpen","length","keyup","document","addEventListener","removeEventListener"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/hooks/useHotkey.ts"],"sourcesContent":["'use client'\n/* eslint-disable no-shadow */\nimport { useModal } from '@faceless-ui/modal'\nimport { setsAreEqual } from 'payload/utilities'\nimport { useCallback, useEffect } from 'react'\n\n// Required to be outside of hook, else debounce would be necessary\n// and then one could not prevent the default behaviour.\n\n// It maps the pressed keys with the time they were pressed, in order to implement a maximum time\n// for the user to press the next key in the sequence\n\n// This is necessary to prevent a bug where the keyup event, which unsets the key as pressed\n// is not fired when the window is not focused.\n// When the user then comes back to the window, the key is still registered as pressed, even though it's not.\nconst pressedKeys = new Map<string, number>([])\n\nconst map = {\n altleft: 'alt',\n altright: 'alt',\n controlleft: 'ctrl',\n controlright: 'ctrl',\n ctrlleft: 'ctrl',\n ctrlright: 'ctrl',\n escape: 'esc',\n metaleft: 'meta',\n metaright: 'meta',\n osleft: 'meta',\n osright: 'meta',\n shiftleft: 'shift',\n shiftright: 'shift',\n}\n\nconst stripKey = (key: string) => {\n return (map[key.toLowerCase()] || key).trim().toLowerCase().replace('key', '')\n}\n\nconst pushToKeys = (code: string) => {\n const key = stripKey(code)\n\n // There is a weird bug with macos that if the keys are not cleared they remain in the\n // pressed keys set.\n if (key === 'meta') {\n pressedKeys.forEach(\n (time, pressedKey) => pressedKey !== 'meta' && pressedKeys.delete(pressedKey),\n )\n }\n\n pressedKeys.set(key, Date.now())\n}\n\nconst removeFromKeys = (code: string) => {\n const key = stripKey(code)\n // There is a weird bug with macos that if the keys are not cleared they remain in the\n // pressed keys set.\n if (key === 'meta') {\n pressedKeys.clear()\n }\n pressedKeys.delete(key)\n}\n\n/**\n * Hook function to work with hotkeys.\n * @param param0.keyCode {string[]} The keys to listen for (`Event.code` without `'Key'` and lowercased)\n * @param param0.cmdCtrlKey {boolean} Whether Ctrl on windows or Cmd on mac must be pressed\n * @param param0.editDepth {boolean} This ensures that the hotkey is only triggered for the most top-level drawer in case there are nested drawers\n * @param func The callback function\n */\nexport const useHotkey = (\n options: {\n cmdCtrlKey: boolean\n editDepth: number\n keyCodes: string[]\n },\n func: (e: KeyboardEvent) => void,\n): void => {\n const { cmdCtrlKey, editDepth, keyCodes } = options\n\n const { modalState } = useModal()\n\n const keydown = useCallback(\n (event: CustomEvent | KeyboardEvent) => {\n const e: KeyboardEvent = event.detail?.key ? event.detail : event\n if (e.key === undefined) {\n // Autofill events, or other synthetic events, can be ignored\n return\n }\n\n // Filter out pressed keys which have been pressed > 3 seconds ago\n pressedKeys.forEach((time, key) => {\n if (Date.now() - time > 3000) {\n pressedKeys.delete(key)\n }\n })\n\n if (e.code) pushToKeys(e.code)\n\n // Check for Mac and iPad\n const hasCmd = window.navigator.userAgent.includes('Mac OS X')\n const pressedWithoutModifier = [...pressedKeys.keys()].filter(\n (key) => !['alt', 'ctrl', 'meta', 'shift'].includes(key),\n )\n\n // Check whether arrays contain the same values (regardless of number of occurrences)\n if (\n setsAreEqual(new Set(pressedWithoutModifier), new Set(keyCodes)) &&\n (!cmdCtrlKey || (hasCmd && pressedKeys.has('meta')) || (!hasCmd && e.ctrlKey))\n ) {\n // get the maximum edit depth by counting the number of open drawers. modalState is and object which contains the state of all drawers.\n const maxEditDepth =\n Object.keys(modalState).filter((key) => modalState[key]?.isOpen)?.length + 1 ?? 1\n\n if (maxEditDepth !== editDepth) {\n // We only want to execute the hotkey from the most top-level drawer / edit depth.\n return\n }\n // execute the function associated with the maximum edit depth\n func(e)\n }\n },\n [keyCodes, cmdCtrlKey, editDepth, modalState, func],\n )\n\n const keyup = useCallback((e: KeyboardEvent) => {\n if (e.code) removeFromKeys(e.code)\n }, [])\n\n useEffect(() => {\n document.addEventListener('keydown', keydown, false)\n document.addEventListener('bypassKeyDown', keydown, false) // this is called if the keydown event's propagation is stopped by react-select\n document.addEventListener('keyup', keyup, false)\n\n return () => {\n document.removeEventListener('keydown', keydown)\n document.removeEventListener('bypassKeyDown', keydown)\n document.removeEventListener('keyup', keyup)\n }\n }, [keydown, keyup])\n}\n"],"names":["useModal","setsAreEqual","useCallback","useEffect","pressedKeys","Map","map","altleft","altright","controlleft","controlright","ctrlleft","ctrlright","escape","metaleft","metaright","osleft","osright","shiftleft","shiftright","stripKey","key","toLowerCase","trim","replace","pushToKeys","code","forEach","time","pressedKey","delete","set","Date","now","removeFromKeys","clear","useHotkey","options","func","cmdCtrlKey","editDepth","keyCodes","modalState","keydown","event","e","detail","undefined","hasCmd","window","navigator","userAgent","includes","pressedWithoutModifier","keys","filter","Set","has","ctrlKey","maxEditDepth","Object","isOpen","length","keyup","document","addEventListener","removeEventListener"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAM3D,OAAO,KAAsE,MAAM,OAAO,CAAA;AAU1F,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,UAAU,IAAI;IACxC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,cAAc,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAA;IAClD,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;CAChB,CAAA;AAMD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAkThE,CAAA;AAED,eAAO,MAAM,OAAO,wBAAwB,YAAY,CAAC,CAA0C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAM3D,OAAO,KAAsE,MAAM,OAAO,CAAA;AAU1F,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,UAAU,IAAI;IACxC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,cAAc,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAA;IAClD,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;CAChB,CAAA;AAMD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAgThE,CAAA;AAED,eAAO,MAAM,OAAO,wBAAwB,YAAY,CAAC,CAA0C,CAAA"}
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import * as facelessUIImport from '@faceless-ui/modal';
3
+ import { useModal } from '@faceless-ui/modal';
4
4
  import { usePathname, useRouter } from 'next/navigation.js';
5
5
  import qs from 'qs';
6
6
  import React, { createContext, useCallback, useContext, useEffect, useState } from 'react';
@@ -14,7 +14,6 @@ import { useSearchParams } from '../SearchParams/index.js';
14
14
  const Context = /*#__PURE__*/ createContext({});
15
15
  const maxTimeoutTime = 2147483647;
16
16
  export const AuthProvider = ({ children })=>{
17
- const { useModal } = facelessUIImport;
18
17
  const { searchParams } = useSearchParams();
19
18
  const [user, setUser] = useState();
20
19
  const [tokenInMemory, setTokenInMemory] = useState();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/providers/Auth/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, Permissions } from 'payload/auth'\nimport type { MeOperationResult } from 'payload/types'\n\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport qs from 'qs'\nimport React, { createContext, useCallback, useContext, useEffect, useState } from 'react'\nimport { toast } from 'react-toastify'\n\nimport { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { useConfig } from '../Config/index.js'\nimport { useSearchParams } from '../SearchParams/index.js'\n\nexport type AuthContext<T = ClientUser> = {\n fetchFullUser: () => Promise<void>\n logOut: () => void\n permissions?: Permissions\n refreshCookie: (forceRefresh?: boolean) => void\n refreshCookieAsync: () => Promise<ClientUser>\n refreshPermissions: () => Promise<void>\n setPermissions: (permissions: Permissions) => void\n setUser: (user: T) => void\n token?: string\n user?: T | null\n}\n\nconst Context = createContext({} as AuthContext)\n\nconst maxTimeoutTime = 2147483647\n\nexport const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const { useModal } = facelessUIImport\n\n const { searchParams } = useSearchParams()\n const [user, setUser] = useState<ClientUser | null>()\n const [tokenInMemory, setTokenInMemory] = useState<string>()\n const [tokenExpiration, setTokenExpiration] = useState<number>()\n const pathname = usePathname()\n const router = useRouter()\n // const { code } = useLocale()\n const code = 'en' // TODO: re-enable i18n asap\n\n const config = useConfig()\n\n const {\n admin: {\n autoLogin,\n routes: { inactivity: logoutInactivityRoute },\n routes: { login: loginRoute },\n user: userSlug,\n },\n routes: { admin, api },\n serverURL,\n } = config\n\n const [permissions, setPermissions] = useState<Permissions>()\n\n const { i18n } = useTranslation()\n const { closeAllModals, openModal } = useModal()\n const [lastLocationChange, setLastLocationChange] = useState(0)\n const debouncedLocationChange = useDebounce(lastLocationChange, 10000)\n\n const id = user?.id\n\n const redirectToInactivityRoute = useCallback(() => {\n if (window.location.pathname.startsWith(admin)) {\n const redirectParam = `?redirect=${encodeURIComponent(window.location.pathname)}`\n router.replace(`${admin}${logoutInactivityRoute}${redirectParam}`)\n } else {\n router.replace(`${admin}${logoutInactivityRoute}`)\n }\n closeAllModals()\n }, [router, admin, logoutInactivityRoute, closeAllModals])\n\n const revokeTokenAndExpire = useCallback(() => {\n setTokenInMemory(undefined)\n setTokenExpiration(undefined)\n }, [])\n\n const setTokenAndExpiration = useCallback(\n (json) => {\n const token = json?.token || json?.refreshedToken\n if (token && json?.exp) {\n setTokenInMemory(token)\n setTokenExpiration(json.exp)\n } else {\n revokeTokenAndExpire()\n }\n },\n [revokeTokenAndExpire],\n )\n\n const refreshCookie = useCallback(\n (forceRefresh?: boolean) => {\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = (typeof tokenExpiration === 'number' ? tokenExpiration : 0) - now\n\n if (forceRefresh || (tokenExpiration && remainingTime < 120)) {\n setTimeout(async () => {\n try {\n const request = await requests.post(`${serverURL}${api}/${userSlug}/refresh-token`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json = await request.json()\n setUser(json.user)\n\n setTokenAndExpiration(json)\n } else {\n setUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(e.message)\n }\n }, 1000)\n }\n },\n [\n tokenExpiration,\n serverURL,\n api,\n userSlug,\n i18n,\n redirectToInactivityRoute,\n setTokenAndExpiration,\n ],\n )\n\n const refreshCookieAsync = useCallback(\n async (skipSetUser?: boolean): Promise<ClientUser> => {\n try {\n const request = await requests.post(`${serverURL}${api}/${userSlug}/refresh-token`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json = await request.json()\n if (!skipSetUser) {\n setUser(json.user)\n setTokenAndExpiration(json)\n }\n return json.user\n }\n\n setUser(null)\n redirectToInactivityRoute()\n return null\n } catch (e) {\n toast.error(`Refreshing token failed: ${e.message}`)\n return null\n }\n },\n [serverURL, api, userSlug, i18n, redirectToInactivityRoute, setTokenAndExpiration],\n )\n\n const logOut = useCallback(async () => {\n setUser(null)\n revokeTokenAndExpire()\n try {\n await requests.post(`${serverURL}${api}/${userSlug}/logout`)\n } catch (e) {\n toast.error(`Logging out failed: ${e.message}`)\n }\n }, [serverURL, api, userSlug, revokeTokenAndExpire])\n\n const refreshPermissions = useCallback(async () => {\n const params = {\n locale: code,\n }\n\n try {\n const request = await requests.get(`${serverURL}${api}/access?${qs.stringify(params)}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: Permissions = await request.json()\n setPermissions(json)\n } else {\n throw new Error(`Fetching permissions failed with status code ${request.status}`)\n }\n } catch (e) {\n toast.error(`Refreshing permissions failed: ${e.message}`)\n }\n }, [serverURL, api, i18n, code])\n\n const fetchFullUser = React.useCallback(async () => {\n try {\n const request = await requests.get(`${serverURL}${api}/${userSlug}/me`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: MeOperationResult = await request.json()\n\n if (json?.user) {\n setUser(json.user)\n\n if (json?.token) {\n setTokenAndExpiration(json)\n }\n } else if (autoLogin && autoLogin.prefillOnly !== true) {\n // auto log-in with the provided autoLogin credentials. This is used in dev mode\n // so you don't have to log in over and over again\n const autoLoginResult = await requests.post(\n `${serverURL}${api}/${userSlug}${loginRoute}`,\n {\n body: JSON.stringify({\n email: autoLogin.email,\n password: autoLogin.password,\n }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n },\n )\n if (autoLoginResult.status === 200) {\n const autoLoginJson = await autoLoginResult.json()\n setUser(autoLoginJson.user)\n if (autoLoginJson?.token) {\n setTokenAndExpiration(autoLoginJson)\n }\n router.replace(\n typeof searchParams['redirect'] === 'string' ? searchParams['redirect'] : admin,\n )\n } else {\n setUser(null)\n revokeTokenAndExpire()\n }\n } else {\n setUser(null)\n revokeTokenAndExpire()\n }\n }\n } catch (e) {\n toast.error(`Fetching user failed: ${e.message}`)\n }\n }, [\n serverURL,\n api,\n userSlug,\n i18n.language,\n autoLogin,\n setTokenAndExpiration,\n router,\n searchParams,\n admin,\n revokeTokenAndExpire,\n loginRoute,\n ])\n\n // On mount, get user and set\n useEffect(() => {\n void fetchFullUser()\n }, [fetchFullUser])\n\n // When location changes, refresh cookie\n useEffect(() => {\n if (id) {\n refreshCookie()\n }\n }, [debouncedLocationChange, refreshCookie, id])\n\n useEffect(() => {\n setLastLocationChange(Date.now())\n }, [pathname])\n\n useEffect(() => {\n let reminder: ReturnType<typeof setTimeout>\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0\n\n if (remainingTime > 0) {\n reminder = setTimeout(\n () => {\n openModal(stayLoggedInModalSlug)\n },\n Math.max(Math.min((remainingTime - 60) * 1000, maxTimeoutTime)),\n )\n }\n\n return () => {\n if (reminder) clearTimeout(reminder)\n }\n }, [tokenExpiration, openModal])\n\n useEffect(() => {\n let forceLogOut: ReturnType<typeof setTimeout>\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0\n\n if (remainingTime > 0) {\n forceLogOut = setTimeout(\n () => {\n setUser(null)\n revokeTokenAndExpire()\n redirectToInactivityRoute()\n },\n Math.max(Math.min(remainingTime * 1000, maxTimeoutTime), 0),\n )\n }\n\n return () => {\n if (forceLogOut) clearTimeout(forceLogOut)\n }\n }, [tokenExpiration, closeAllModals, i18n, redirectToInactivityRoute, revokeTokenAndExpire])\n\n return (\n <Context.Provider\n value={{\n fetchFullUser,\n logOut,\n permissions,\n refreshCookie,\n refreshCookieAsync,\n refreshPermissions,\n setPermissions,\n setUser,\n token: tokenInMemory,\n user,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n\nexport const useAuth = <T = ClientUser,>(): AuthContext<T> => useContext(Context) as AuthContext<T>\n"],"names":["facelessUIImport","usePathname","useRouter","qs","React","createContext","useCallback","useContext","useEffect","useState","toast","stayLoggedInModalSlug","useDebounce","useTranslation","requests","useConfig","useSearchParams","Context","maxTimeoutTime","AuthProvider","children","useModal","searchParams","user","setUser","tokenInMemory","setTokenInMemory","tokenExpiration","setTokenExpiration","pathname","router","code","config","admin","autoLogin","routes","inactivity","logoutInactivityRoute","login","loginRoute","userSlug","api","serverURL","permissions","setPermissions","i18n","closeAllModals","openModal","lastLocationChange","setLastLocationChange","debouncedLocationChange","id","redirectToInactivityRoute","window","location","startsWith","redirectParam","encodeURIComponent","replace","revokeTokenAndExpire","undefined","setTokenAndExpiration","json","token","refreshedToken","exp","refreshCookie","forceRefresh","now","Math","round","Date","getTime","remainingTime","setTimeout","request","post","headers","language","status","e","error","message","refreshCookieAsync","skipSetUser","logOut","refreshPermissions","params","locale","get","stringify","Error","fetchFullUser","prefillOnly","autoLoginResult","body","JSON","email","password","autoLoginJson","reminder","max","min","clearTimeout","forceLogOut","Provider","value","useAuth"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../src/providers/Auth/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, Permissions } from 'payload/auth'\nimport type { MeOperationResult } from 'payload/types'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport qs from 'qs'\nimport React, { createContext, useCallback, useContext, useEffect, useState } from 'react'\nimport { toast } from 'react-toastify'\n\nimport { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { useConfig } from '../Config/index.js'\nimport { useSearchParams } from '../SearchParams/index.js'\n\nexport type AuthContext<T = ClientUser> = {\n fetchFullUser: () => Promise<void>\n logOut: () => void\n permissions?: Permissions\n refreshCookie: (forceRefresh?: boolean) => void\n refreshCookieAsync: () => Promise<ClientUser>\n refreshPermissions: () => Promise<void>\n setPermissions: (permissions: Permissions) => void\n setUser: (user: T) => void\n token?: string\n user?: T | null\n}\n\nconst Context = createContext({} as AuthContext)\n\nconst maxTimeoutTime = 2147483647\n\nexport const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const { searchParams } = useSearchParams()\n const [user, setUser] = useState<ClientUser | null>()\n const [tokenInMemory, setTokenInMemory] = useState<string>()\n const [tokenExpiration, setTokenExpiration] = useState<number>()\n const pathname = usePathname()\n const router = useRouter()\n // const { code } = useLocale()\n const code = 'en' // TODO: re-enable i18n asap\n\n const config = useConfig()\n\n const {\n admin: {\n autoLogin,\n routes: { inactivity: logoutInactivityRoute },\n routes: { login: loginRoute },\n user: userSlug,\n },\n routes: { admin, api },\n serverURL,\n } = config\n\n const [permissions, setPermissions] = useState<Permissions>()\n\n const { i18n } = useTranslation()\n const { closeAllModals, openModal } = useModal()\n const [lastLocationChange, setLastLocationChange] = useState(0)\n const debouncedLocationChange = useDebounce(lastLocationChange, 10000)\n\n const id = user?.id\n\n const redirectToInactivityRoute = useCallback(() => {\n if (window.location.pathname.startsWith(admin)) {\n const redirectParam = `?redirect=${encodeURIComponent(window.location.pathname)}`\n router.replace(`${admin}${logoutInactivityRoute}${redirectParam}`)\n } else {\n router.replace(`${admin}${logoutInactivityRoute}`)\n }\n closeAllModals()\n }, [router, admin, logoutInactivityRoute, closeAllModals])\n\n const revokeTokenAndExpire = useCallback(() => {\n setTokenInMemory(undefined)\n setTokenExpiration(undefined)\n }, [])\n\n const setTokenAndExpiration = useCallback(\n (json) => {\n const token = json?.token || json?.refreshedToken\n if (token && json?.exp) {\n setTokenInMemory(token)\n setTokenExpiration(json.exp)\n } else {\n revokeTokenAndExpire()\n }\n },\n [revokeTokenAndExpire],\n )\n\n const refreshCookie = useCallback(\n (forceRefresh?: boolean) => {\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = (typeof tokenExpiration === 'number' ? tokenExpiration : 0) - now\n\n if (forceRefresh || (tokenExpiration && remainingTime < 120)) {\n setTimeout(async () => {\n try {\n const request = await requests.post(`${serverURL}${api}/${userSlug}/refresh-token`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json = await request.json()\n setUser(json.user)\n\n setTokenAndExpiration(json)\n } else {\n setUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(e.message)\n }\n }, 1000)\n }\n },\n [\n tokenExpiration,\n serverURL,\n api,\n userSlug,\n i18n,\n redirectToInactivityRoute,\n setTokenAndExpiration,\n ],\n )\n\n const refreshCookieAsync = useCallback(\n async (skipSetUser?: boolean): Promise<ClientUser> => {\n try {\n const request = await requests.post(`${serverURL}${api}/${userSlug}/refresh-token`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json = await request.json()\n if (!skipSetUser) {\n setUser(json.user)\n setTokenAndExpiration(json)\n }\n return json.user\n }\n\n setUser(null)\n redirectToInactivityRoute()\n return null\n } catch (e) {\n toast.error(`Refreshing token failed: ${e.message}`)\n return null\n }\n },\n [serverURL, api, userSlug, i18n, redirectToInactivityRoute, setTokenAndExpiration],\n )\n\n const logOut = useCallback(async () => {\n setUser(null)\n revokeTokenAndExpire()\n try {\n await requests.post(`${serverURL}${api}/${userSlug}/logout`)\n } catch (e) {\n toast.error(`Logging out failed: ${e.message}`)\n }\n }, [serverURL, api, userSlug, revokeTokenAndExpire])\n\n const refreshPermissions = useCallback(async () => {\n const params = {\n locale: code,\n }\n\n try {\n const request = await requests.get(`${serverURL}${api}/access?${qs.stringify(params)}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: Permissions = await request.json()\n setPermissions(json)\n } else {\n throw new Error(`Fetching permissions failed with status code ${request.status}`)\n }\n } catch (e) {\n toast.error(`Refreshing permissions failed: ${e.message}`)\n }\n }, [serverURL, api, i18n, code])\n\n const fetchFullUser = React.useCallback(async () => {\n try {\n const request = await requests.get(`${serverURL}${api}/${userSlug}/me`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: MeOperationResult = await request.json()\n\n if (json?.user) {\n setUser(json.user)\n\n if (json?.token) {\n setTokenAndExpiration(json)\n }\n } else if (autoLogin && autoLogin.prefillOnly !== true) {\n // auto log-in with the provided autoLogin credentials. This is used in dev mode\n // so you don't have to log in over and over again\n const autoLoginResult = await requests.post(\n `${serverURL}${api}/${userSlug}${loginRoute}`,\n {\n body: JSON.stringify({\n email: autoLogin.email,\n password: autoLogin.password,\n }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n },\n )\n if (autoLoginResult.status === 200) {\n const autoLoginJson = await autoLoginResult.json()\n setUser(autoLoginJson.user)\n if (autoLoginJson?.token) {\n setTokenAndExpiration(autoLoginJson)\n }\n router.replace(\n typeof searchParams['redirect'] === 'string' ? searchParams['redirect'] : admin,\n )\n } else {\n setUser(null)\n revokeTokenAndExpire()\n }\n } else {\n setUser(null)\n revokeTokenAndExpire()\n }\n }\n } catch (e) {\n toast.error(`Fetching user failed: ${e.message}`)\n }\n }, [\n serverURL,\n api,\n userSlug,\n i18n.language,\n autoLogin,\n setTokenAndExpiration,\n router,\n searchParams,\n admin,\n revokeTokenAndExpire,\n loginRoute,\n ])\n\n // On mount, get user and set\n useEffect(() => {\n void fetchFullUser()\n }, [fetchFullUser])\n\n // When location changes, refresh cookie\n useEffect(() => {\n if (id) {\n refreshCookie()\n }\n }, [debouncedLocationChange, refreshCookie, id])\n\n useEffect(() => {\n setLastLocationChange(Date.now())\n }, [pathname])\n\n useEffect(() => {\n let reminder: ReturnType<typeof setTimeout>\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0\n\n if (remainingTime > 0) {\n reminder = setTimeout(\n () => {\n openModal(stayLoggedInModalSlug)\n },\n Math.max(Math.min((remainingTime - 60) * 1000, maxTimeoutTime)),\n )\n }\n\n return () => {\n if (reminder) clearTimeout(reminder)\n }\n }, [tokenExpiration, openModal])\n\n useEffect(() => {\n let forceLogOut: ReturnType<typeof setTimeout>\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0\n\n if (remainingTime > 0) {\n forceLogOut = setTimeout(\n () => {\n setUser(null)\n revokeTokenAndExpire()\n redirectToInactivityRoute()\n },\n Math.max(Math.min(remainingTime * 1000, maxTimeoutTime), 0),\n )\n }\n\n return () => {\n if (forceLogOut) clearTimeout(forceLogOut)\n }\n }, [tokenExpiration, closeAllModals, i18n, redirectToInactivityRoute, revokeTokenAndExpire])\n\n return (\n <Context.Provider\n value={{\n fetchFullUser,\n logOut,\n permissions,\n refreshCookie,\n refreshCookieAsync,\n refreshPermissions,\n setPermissions,\n setUser,\n token: tokenInMemory,\n user,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n\nexport const useAuth = <T = ClientUser,>(): AuthContext<T> => useContext(Context) as AuthContext<T>\n"],"names":["useModal","usePathname","useRouter","qs","React","createContext","useCallback","useContext","useEffect","useState","toast","stayLoggedInModalSlug","useDebounce","useTranslation","requests","useConfig","useSearchParams","Context","maxTimeoutTime","AuthProvider","children","searchParams","user","setUser","tokenInMemory","setTokenInMemory","tokenExpiration","setTokenExpiration","pathname","router","code","config","admin","autoLogin","routes","inactivity","logoutInactivityRoute","login","loginRoute","userSlug","api","serverURL","permissions","setPermissions","i18n","closeAllModals","openModal","lastLocationChange","setLastLocationChange","debouncedLocationChange","id","redirectToInactivityRoute","window","location","startsWith","redirectParam","encodeURIComponent","replace","revokeTokenAndExpire","undefined","setTokenAndExpiration","json","token","refreshedToken","exp","refreshCookie","forceRefresh","now","Math","round","Date","getTime","remainingTime","setTimeout","request","post","headers","language","status","e","error","message","refreshCookieAsync","skipSetUser","logOut","refreshPermissions","params","locale","get","stringify","Error","fetchFullUser","prefillOnly","autoLoginResult","body","JSON","email","password","autoLoginJson","reminder","max","min","clearTimeout","forceLogOut","Provider","value","useAuth"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Root/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAKlE,OAAO,KAAmB,MAAM,OAAO,CAAA;AAGvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAC9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAqB9C,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,YAAY,CAAA;IACpB,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;IAClC,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAA;IACtD,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,eAAe,CAAA;IAChC,0BAA0B,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,KAAK,EAAE,KAAK,CAAA;IACZ,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,CAAA;CACzC,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA+ExC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Root/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAKlE,OAAO,KAAmB,MAAM,OAAO,CAAA;AAGvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAC9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAqB9C,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,YAAY,CAAA;IACpB,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;IAClC,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAA;IACtD,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,eAAe,CAAA;IAChC,0BAA0B,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,KAAK,EAAE,KAAK,CAAA;IACZ,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,CAAA;CACzC,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAwExC,CAAA"}
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as facelessUIImport from '@faceless-ui/modal';
4
- import * as facelessUIImport3 from '@faceless-ui/scroll-info';
5
- import * as facelessUIImport2 from '@faceless-ui/window-info';
3
+ import { ModalContainer, ModalProvider } from '@faceless-ui/modal';
4
+ import { ScrollInfoProvider } from '@faceless-ui/scroll-info';
5
+ import { WindowInfoProvider } from '@faceless-ui/window-info';
6
6
  import React, { Fragment } from 'react';
7
7
  import { Slide, ToastContainer } from 'react-toastify';
8
8
  import { LoadingOverlayProvider } from '../../elements/LoadingOverlay/index.js';
@@ -24,16 +24,6 @@ import { SearchParamsProvider } from '../SearchParams/index.js';
24
24
  import { ThemeProvider } from '../Theme/index.js';
25
25
  import { TranslationProvider } from '../Translation/index.js';
26
26
  export const RootProvider = ({ children, componentMap, config, dateFNSKey, fallbackLang, languageCode, languageOptions, switchLanguageServerAction, theme, translations })=>{
27
- const { ModalContainer, ModalProvider } = facelessUIImport || {
28
- ModalContainer: React.Fragment,
29
- ModalProvider: React.Fragment
30
- };
31
- const { WindowInfoProvider } = facelessUIImport2 || {
32
- WindowInfoProvider: React.Fragment
33
- };
34
- const { ScrollInfoProvider } = facelessUIImport3 || {
35
- ScrollInfoProvider: React.Fragment
36
- };
37
27
  return /*#__PURE__*/ _jsxs(Fragment, {
38
28
  children: [
39
29
  /*#__PURE__*/ _jsx(RouteCache, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/providers/Root/index.tsx"],"sourcesContent":["'use client'\nimport type { I18nClient, Language } from '@payloadcms/translations'\nimport type { ClientConfig, LanguageOptions } from 'payload/types'\n\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport * as facelessUIImport3 from '@faceless-ui/scroll-info'\nimport * as facelessUIImport2 from '@faceless-ui/window-info'\nimport React, { Fragment } from 'react'\nimport { Slide, ToastContainer } from 'react-toastify'\n\nimport type { ComponentMap } from '../ComponentMap/buildComponentMap/types.js'\nimport type { Theme } from '../Theme/index.js'\n\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 { ActionsProvider } from '../Actions/index.js'\nimport { AuthProvider } from '../Auth/index.js'\nimport { ClientFunctionProvider } from '../ClientFunction/index.js'\nimport { ComponentMapProvider } from '../ComponentMap/index.js'\nimport { ConfigProvider } from '../Config/index.js'\nimport { DocumentEventsProvider } from '../DocumentEvents/index.js'\nimport { FieldComponentsProvider } from '../FieldComponents/index.js'\nimport { LocaleProvider } from '../Locale/index.js'\nimport { ParamsProvider } from '../Params/index.js'\nimport { PreferencesProvider } from '../Preferences/index.js'\nimport { RouteCache } from '../RouteCache/index.js'\nimport { SearchParamsProvider } from '../SearchParams/index.js'\nimport { ThemeProvider } from '../Theme/index.js'\nimport { TranslationProvider } from '../Translation/index.js'\n\ntype Props = {\n children: React.ReactNode\n componentMap: ComponentMap\n config: ClientConfig\n dateFNSKey: Language['dateFNSKey']\n fallbackLang: ClientConfig['i18n']['fallbackLanguage']\n languageCode: string\n languageOptions: LanguageOptions\n switchLanguageServerAction?: (lang: string) => Promise<void>\n theme: Theme\n translations: I18nClient['translations']\n}\n\nexport const RootProvider: React.FC<Props> = ({\n children,\n componentMap,\n config,\n dateFNSKey,\n fallbackLang,\n languageCode,\n languageOptions,\n switchLanguageServerAction,\n theme,\n translations,\n}) => {\n const { ModalContainer, ModalProvider } = facelessUIImport || {\n ModalContainer: React.Fragment,\n ModalProvider: React.Fragment,\n }\n const { WindowInfoProvider } = facelessUIImport2 || { WindowInfoProvider: React.Fragment }\n const { ScrollInfoProvider } = facelessUIImport3 || { ScrollInfoProvider: React.Fragment }\n\n return (\n <Fragment>\n <RouteCache>\n <ConfigProvider config={config}>\n <ComponentMapProvider componentMap={componentMap}>\n <FieldComponentsProvider>\n <ClientFunctionProvider>\n <TranslationProvider\n dateFNSKey={dateFNSKey}\n fallbackLang={fallbackLang}\n language={languageCode}\n languageOptions={languageOptions}\n switchLanguageServerAction={switchLanguageServerAction}\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 <SearchParamsProvider>\n <ModalProvider classPrefix=\"payload\" transTime={0} zIndex=\"var(--z-modal)\">\n <AuthProvider>\n <PreferencesProvider>\n <ThemeProvider cookiePrefix={config.cookiePrefix} theme={theme}>\n <ParamsProvider>\n <LocaleProvider>\n <StepNavProvider>\n <LoadingOverlayProvider>\n <DocumentEventsProvider>\n <ActionsProvider>\n <NavProvider>{children}</NavProvider>\n </ActionsProvider>\n </DocumentEventsProvider>\n </LoadingOverlayProvider>\n </StepNavProvider>\n </LocaleProvider>\n </ParamsProvider>\n </ThemeProvider>\n </PreferencesProvider>\n <ModalContainer />\n <StayLoggedInModal />\n </AuthProvider>\n </ModalProvider>\n </SearchParamsProvider>\n </ScrollInfoProvider>\n </WindowInfoProvider>\n </TranslationProvider>\n </ClientFunctionProvider>\n </FieldComponentsProvider>\n </ComponentMapProvider>\n </ConfigProvider>\n </RouteCache>\n <ToastContainer icon={false} position=\"bottom-center\" transition={Slide} />\n </Fragment>\n )\n}\n"],"names":["facelessUIImport","facelessUIImport3","facelessUIImport2","React","Fragment","Slide","ToastContainer","LoadingOverlayProvider","NavProvider","StayLoggedInModal","StepNavProvider","ActionsProvider","AuthProvider","ClientFunctionProvider","ComponentMapProvider","ConfigProvider","DocumentEventsProvider","FieldComponentsProvider","LocaleProvider","ParamsProvider","PreferencesProvider","RouteCache","SearchParamsProvider","ThemeProvider","TranslationProvider","RootProvider","children","componentMap","config","dateFNSKey","fallbackLang","languageCode","languageOptions","switchLanguageServerAction","theme","translations","ModalContainer","ModalProvider","WindowInfoProvider","ScrollInfoProvider","language","breakpoints","l","m","s","xs","classPrefix","transTime","zIndex","cookiePrefix","icon","position","transition"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;AAIA,YAAYA,sBAAsB,qBAAoB;AACtD,YAAYC,uBAAuB,2BAA0B;AAC7D,YAAYC,uBAAuB,2BAA0B;AAC7D,OAAOC,SAASC,QAAQ,QAAQ,QAAO;AACvC,SAASC,KAAK,EAAEC,cAAc,QAAQ,iBAAgB;AAKtD,SAASC,sBAAsB,QAAQ,yCAAwC;AAC/E,SAASC,WAAW,QAAQ,gCAA+B;AAC3D,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,kCAAiC;AACjE,SAASC,eAAe,QAAQ,sBAAqB;AACrD,SAASC,YAAY,QAAQ,mBAAkB;AAC/C,SAASC,sBAAsB,QAAQ,6BAA4B;AACnE,SAASC,oBAAoB,QAAQ,2BAA0B;AAC/D,SAASC,cAAc,QAAQ,qBAAoB;AACnD,SAASC,sBAAsB,QAAQ,6BAA4B;AACnE,SAASC,uBAAuB,QAAQ,8BAA6B;AACrE,SAASC,cAAc,QAAQ,qBAAoB;AACnD,SAASC,cAAc,QAAQ,qBAAoB;AACnD,SAASC,mBAAmB,QAAQ,0BAAyB;AAC7D,SAASC,UAAU,QAAQ,yBAAwB;AACnD,SAASC,oBAAoB,QAAQ,2BAA0B;AAC/D,SAASC,aAAa,QAAQ,oBAAmB;AACjD,SAASC,mBAAmB,QAAQ,0BAAyB;AAe7D,OAAO,MAAMC,eAAgC,CAAC,EAC5CC,QAAQ,EACRC,YAAY,EACZC,MAAM,EACNC,UAAU,EACVC,YAAY,EACZC,YAAY,EACZC,eAAe,EACfC,0BAA0B,EAC1BC,KAAK,EACLC,YAAY,EACb;IACC,MAAM,EAAEC,cAAc,EAAEC,aAAa,EAAE,GAAGrC,oBAAoB;QAC5DoC,gBAAgBjC,MAAMC,QAAQ;QAC9BiC,eAAelC,MAAMC,QAAQ;IAC/B;IACA,MAAM,EAAEkC,kBAAkB,EAAE,GAAGpC,qBAAqB;QAAEoC,oBAAoBnC,MAAMC,QAAQ;IAAC;IACzF,MAAM,EAAEmC,kBAAkB,EAAE,GAAGtC,qBAAqB;QAAEsC,oBAAoBpC,MAAMC,QAAQ;IAAC;IAEzF,qBACE,MAACA;;0BACC,KAACiB;0BACC,cAAA,KAACN;oBAAea,QAAQA;8BACtB,cAAA,KAACd;wBAAqBa,cAAcA;kCAClC,cAAA,KAACV;sCACC,cAAA,KAACJ;0CACC,cAAA,KAACW;oCACCK,YAAYA;oCACZC,cAAcA;oCACdU,UAAUT;oCACVC,iBAAiBA;oCACjBC,4BAA4BA;oCAC5BE,cAAcA;8CAEd,cAAA,KAACG;wCACCG,aAAa;4CACXC,GAAG;4CACHC,GAAG;4CACHC,GAAG;4CACHC,IAAI;wCACN;kDAEA,cAAA,KAACN;sDACC,cAAA,KAACjB;0DACC,cAAA,KAACe;oDAAcS,aAAY;oDAAUC,WAAW;oDAAGC,QAAO;8DACxD,cAAA,MAACpC;;0EACC,KAACQ;0EACC,cAAA,KAACG;oEAAc0B,cAAcrB,OAAOqB,YAAY;oEAAEf,OAAOA;8EACvD,cAAA,KAACf;kFACC,cAAA,KAACD;sFACC,cAAA,KAACR;0FACC,cAAA,KAACH;8FACC,cAAA,KAACS;kGACC,cAAA,KAACL;sGACC,cAAA,KAACH;0GAAakB;;;;;;;;;;0EAS9B,KAACU;0EACD,KAAC3B;;;;;;;;;;;;;0BAYvB,KAACH;gBAAe4C,MAAM;gBAAOC,UAAS;gBAAgBC,YAAY/C;;;;AAGxE,EAAC"}
1
+ {"version":3,"sources":["../../../src/providers/Root/index.tsx"],"sourcesContent":["'use client'\nimport type { I18nClient, Language } from '@payloadcms/translations'\nimport type { ClientConfig, LanguageOptions } from 'payload/types'\n\nimport { ModalContainer, ModalProvider } from '@faceless-ui/modal'\nimport { ScrollInfoProvider } from '@faceless-ui/scroll-info'\nimport { WindowInfoProvider } from '@faceless-ui/window-info'\nimport React, { Fragment } from 'react'\nimport { Slide, ToastContainer } from 'react-toastify'\n\nimport type { ComponentMap } from '../ComponentMap/buildComponentMap/types.js'\nimport type { Theme } from '../Theme/index.js'\n\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 { ActionsProvider } from '../Actions/index.js'\nimport { AuthProvider } from '../Auth/index.js'\nimport { ClientFunctionProvider } from '../ClientFunction/index.js'\nimport { ComponentMapProvider } from '../ComponentMap/index.js'\nimport { ConfigProvider } from '../Config/index.js'\nimport { DocumentEventsProvider } from '../DocumentEvents/index.js'\nimport { FieldComponentsProvider } from '../FieldComponents/index.js'\nimport { LocaleProvider } from '../Locale/index.js'\nimport { ParamsProvider } from '../Params/index.js'\nimport { PreferencesProvider } from '../Preferences/index.js'\nimport { RouteCache } from '../RouteCache/index.js'\nimport { SearchParamsProvider } from '../SearchParams/index.js'\nimport { ThemeProvider } from '../Theme/index.js'\nimport { TranslationProvider } from '../Translation/index.js'\n\ntype Props = {\n children: React.ReactNode\n componentMap: ComponentMap\n config: ClientConfig\n dateFNSKey: Language['dateFNSKey']\n fallbackLang: ClientConfig['i18n']['fallbackLanguage']\n languageCode: string\n languageOptions: LanguageOptions\n switchLanguageServerAction?: (lang: string) => Promise<void>\n theme: Theme\n translations: I18nClient['translations']\n}\n\nexport const RootProvider: React.FC<Props> = ({\n children,\n componentMap,\n config,\n dateFNSKey,\n fallbackLang,\n languageCode,\n languageOptions,\n switchLanguageServerAction,\n theme,\n translations,\n}) => {\n return (\n <Fragment>\n <RouteCache>\n <ConfigProvider config={config}>\n <ComponentMapProvider componentMap={componentMap}>\n <FieldComponentsProvider>\n <ClientFunctionProvider>\n <TranslationProvider\n dateFNSKey={dateFNSKey}\n fallbackLang={fallbackLang}\n language={languageCode}\n languageOptions={languageOptions}\n switchLanguageServerAction={switchLanguageServerAction}\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 <SearchParamsProvider>\n <ModalProvider classPrefix=\"payload\" transTime={0} zIndex=\"var(--z-modal)\">\n <AuthProvider>\n <PreferencesProvider>\n <ThemeProvider cookiePrefix={config.cookiePrefix} theme={theme}>\n <ParamsProvider>\n <LocaleProvider>\n <StepNavProvider>\n <LoadingOverlayProvider>\n <DocumentEventsProvider>\n <ActionsProvider>\n <NavProvider>{children}</NavProvider>\n </ActionsProvider>\n </DocumentEventsProvider>\n </LoadingOverlayProvider>\n </StepNavProvider>\n </LocaleProvider>\n </ParamsProvider>\n </ThemeProvider>\n </PreferencesProvider>\n <ModalContainer />\n <StayLoggedInModal />\n </AuthProvider>\n </ModalProvider>\n </SearchParamsProvider>\n </ScrollInfoProvider>\n </WindowInfoProvider>\n </TranslationProvider>\n </ClientFunctionProvider>\n </FieldComponentsProvider>\n </ComponentMapProvider>\n </ConfigProvider>\n </RouteCache>\n <ToastContainer icon={false} position=\"bottom-center\" transition={Slide} />\n </Fragment>\n )\n}\n"],"names":["ModalContainer","ModalProvider","ScrollInfoProvider","WindowInfoProvider","React","Fragment","Slide","ToastContainer","LoadingOverlayProvider","NavProvider","StayLoggedInModal","StepNavProvider","ActionsProvider","AuthProvider","ClientFunctionProvider","ComponentMapProvider","ConfigProvider","DocumentEventsProvider","FieldComponentsProvider","LocaleProvider","ParamsProvider","PreferencesProvider","RouteCache","SearchParamsProvider","ThemeProvider","TranslationProvider","RootProvider","children","componentMap","config","dateFNSKey","fallbackLang","languageCode","languageOptions","switchLanguageServerAction","theme","translations","language","breakpoints","l","m","s","xs","classPrefix","transTime","zIndex","cookiePrefix","icon","position","transition"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;AAIA,SAASA,cAAc,EAAEC,aAAa,QAAQ,qBAAoB;AAClE,SAASC,kBAAkB,QAAQ,2BAA0B;AAC7D,SAASC,kBAAkB,QAAQ,2BAA0B;AAC7D,OAAOC,SAASC,QAAQ,QAAQ,QAAO;AACvC,SAASC,KAAK,EAAEC,cAAc,QAAQ,iBAAgB;AAKtD,SAASC,sBAAsB,QAAQ,yCAAwC;AAC/E,SAASC,WAAW,QAAQ,gCAA+B;AAC3D,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,kCAAiC;AACjE,SAASC,eAAe,QAAQ,sBAAqB;AACrD,SAASC,YAAY,QAAQ,mBAAkB;AAC/C,SAASC,sBAAsB,QAAQ,6BAA4B;AACnE,SAASC,oBAAoB,QAAQ,2BAA0B;AAC/D,SAASC,cAAc,QAAQ,qBAAoB;AACnD,SAASC,sBAAsB,QAAQ,6BAA4B;AACnE,SAASC,uBAAuB,QAAQ,8BAA6B;AACrE,SAASC,cAAc,QAAQ,qBAAoB;AACnD,SAASC,cAAc,QAAQ,qBAAoB;AACnD,SAASC,mBAAmB,QAAQ,0BAAyB;AAC7D,SAASC,UAAU,QAAQ,yBAAwB;AACnD,SAASC,oBAAoB,QAAQ,2BAA0B;AAC/D,SAASC,aAAa,QAAQ,oBAAmB;AACjD,SAASC,mBAAmB,QAAQ,0BAAyB;AAe7D,OAAO,MAAMC,eAAgC,CAAC,EAC5CC,QAAQ,EACRC,YAAY,EACZC,MAAM,EACNC,UAAU,EACVC,YAAY,EACZC,YAAY,EACZC,eAAe,EACfC,0BAA0B,EAC1BC,KAAK,EACLC,YAAY,EACb;IACC,qBACE,MAAC/B;;0BACC,KAACiB;0BACC,cAAA,KAACN;oBAAea,QAAQA;8BACtB,cAAA,KAACd;wBAAqBa,cAAcA;kCAClC,cAAA,KAACV;sCACC,cAAA,KAACJ;0CACC,cAAA,KAACW;oCACCK,YAAYA;oCACZC,cAAcA;oCACdM,UAAUL;oCACVC,iBAAiBA;oCACjBC,4BAA4BA;oCAC5BE,cAAcA;8CAEd,cAAA,KAACjC;wCACCmC,aAAa;4CACXC,GAAG;4CACHC,GAAG;4CACHC,GAAG;4CACHC,IAAI;wCACN;kDAEA,cAAA,KAACxC;sDACC,cAAA,KAACqB;0DACC,cAAA,KAACtB;oDAAc0C,aAAY;oDAAUC,WAAW;oDAAGC,QAAO;8DACxD,cAAA,MAAChC;;0EACC,KAACQ;0EACC,cAAA,KAACG;oEAAcsB,cAAcjB,OAAOiB,YAAY;oEAAEX,OAAOA;8EACvD,cAAA,KAACf;kFACC,cAAA,KAACD;sFACC,cAAA,KAACR;0FACC,cAAA,KAACH;8FACC,cAAA,KAACS;kGACC,cAAA,KAACL;sGACC,cAAA,KAACH;0GAAakB;;;;;;;;;;0EAS9B,KAAC3B;0EACD,KAACU;;;;;;;;;;;;;0BAYvB,KAACH;gBAAewC,MAAM;gBAAOC,UAAS;gBAAgBC,YAAY3C;;;;AAGxE,EAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Data, FormState } from 'payload/types';
2
+ type ReturnType = {
3
+ data: Data;
4
+ valid: boolean;
5
+ };
6
+ /**
7
+ * Reduce flattened form fields (Fields) to just map to the respective values instead of the full FormField object
8
+ *
9
+ * @param unflatten This also unflattens the data if `unflatten` is true. The unflattened data should match the original data structure
10
+ * @param ignoreDisableFormData - if true, will include fields that have `disableFormData` set to true, for example, blocks or arrays fields.
11
+ *
12
+ */
13
+ export declare const reduceFieldsToValuesWithValidation: (fields: FormState, unflatten?: boolean, ignoreDisableFormData?: boolean) => ReturnType;
14
+ export {};
15
+ //# sourceMappingURL=reduceFieldsToValuesWithValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reduceFieldsToValuesWithValidation.d.ts","sourceRoot":"","sources":["../../src/utilities/reduceFieldsToValuesWithValidation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAKpD,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kCAAkC,WACrC,SAAS,cACL,OAAO,0BACK,OAAO,KAC9B,UAoBF,CAAA"}
@@ -0,0 +1,29 @@
1
+ import flatleyImport from 'flatley';
2
+ const { unflatten: flatleyUnflatten } = flatleyImport;
3
+ /**
4
+ * Reduce flattened form fields (Fields) to just map to the respective values instead of the full FormField object
5
+ *
6
+ * @param unflatten This also unflattens the data if `unflatten` is true. The unflattened data should match the original data structure
7
+ * @param ignoreDisableFormData - if true, will include fields that have `disableFormData` set to true, for example, blocks or arrays fields.
8
+ *
9
+ */ export const reduceFieldsToValuesWithValidation = (fields, unflatten, ignoreDisableFormData)=>{
10
+ const state = {
11
+ data: {},
12
+ valid: true
13
+ };
14
+ if (!fields) return state;
15
+ Object.keys(fields).forEach((key)=>{
16
+ if (ignoreDisableFormData === true || !fields[key]?.disableFormData) {
17
+ state.data[key] = fields[key]?.value;
18
+ if (!fields[key].valid) state.valid = false;
19
+ }
20
+ });
21
+ if (unflatten) {
22
+ state.data = flatleyUnflatten(state.data, {
23
+ safe: true
24
+ });
25
+ }
26
+ return state;
27
+ };
28
+
29
+ //# sourceMappingURL=reduceFieldsToValuesWithValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/reduceFieldsToValuesWithValidation.ts"],"sourcesContent":["import type { Data, FormState } from 'payload/types'\n\nimport flatleyImport from 'flatley'\nconst { unflatten: flatleyUnflatten } = flatleyImport\n\ntype ReturnType = {\n data: Data\n valid: boolean\n}\n\n/**\n * Reduce flattened form fields (Fields) to just map to the respective values instead of the full FormField object\n *\n * @param unflatten This also unflattens the data if `unflatten` is true. The unflattened data should match the original data structure\n * @param ignoreDisableFormData - if true, will include fields that have `disableFormData` set to true, for example, blocks or arrays fields.\n *\n */\nexport const reduceFieldsToValuesWithValidation = (\n fields: FormState,\n unflatten?: boolean,\n ignoreDisableFormData?: boolean,\n): ReturnType => {\n const state: ReturnType = {\n data: {},\n valid: true,\n }\n\n if (!fields) return state\n\n Object.keys(fields).forEach((key) => {\n if (ignoreDisableFormData === true || !fields[key]?.disableFormData) {\n state.data[key] = fields[key]?.value\n if (!fields[key].valid) state.valid = false\n }\n })\n\n if (unflatten) {\n state.data = flatleyUnflatten(state.data, { safe: true })\n }\n\n return state\n}\n"],"names":["flatleyImport","unflatten","flatleyUnflatten","reduceFieldsToValuesWithValidation","fields","ignoreDisableFormData","state","data","valid","Object","keys","forEach","key","disableFormData","value","safe"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAOA,mBAAmB,UAAS;AACnC,MAAM,EAAEC,WAAWC,gBAAgB,EAAE,GAAGF;AAOxC;;;;;;CAMC,GACD,OAAO,MAAMG,qCAAqC,CAChDC,QACAH,WACAI;IAEA,MAAMC,QAAoB;QACxBC,MAAM,CAAC;QACPC,OAAO;IACT;IAEA,IAAI,CAACJ,QAAQ,OAAOE;IAEpBG,OAAOC,IAAI,CAACN,QAAQO,OAAO,CAAC,CAACC;QAC3B,IAAIP,0BAA0B,QAAQ,CAACD,MAAM,CAACQ,IAAI,EAAEC,iBAAiB;YACnEP,MAAMC,IAAI,CAACK,IAAI,GAAGR,MAAM,CAACQ,IAAI,EAAEE;YAC/B,IAAI,CAACV,MAAM,CAACQ,IAAI,CAACJ,KAAK,EAAEF,MAAME,KAAK,GAAG;QACxC;IACF;IAEA,IAAIP,WAAW;QACbK,MAAMC,IAAI,GAAGL,iBAAiBI,MAAMC,IAAI,EAAE;YAAEQ,MAAM;QAAK;IACzD;IAEA,OAAOT;AACT,EAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/ui",
3
- "version": "3.0.0-beta.43",
3
+ "version": "3.0.0-beta.44",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -94,9 +94,9 @@
94
94
  "dependencies": {
95
95
  "@dnd-kit/core": "6.0.8",
96
96
  "@dnd-kit/sortable": "7.0.2",
97
- "@faceless-ui/modal": "2.1.0-rc.0",
98
- "@faceless-ui/scroll-info": "1.4.0-rc.0",
99
- "@faceless-ui/window-info": "2.2.0-rc.0",
97
+ "@faceless-ui/modal": "3.0.0-beta.0",
98
+ "@faceless-ui/scroll-info": "2.0.0-beta.0",
99
+ "@faceless-ui/window-info": "3.0.0-beta.0",
100
100
  "@monaco-editor/react": "4.5.1",
101
101
  "body-scroll-lock": "4.0.0-beta.0",
102
102
  "bson-objectid": "2.0.4",
@@ -114,7 +114,7 @@
114
114
  "scheduler": "0.25.0-rc-f994737d14-20240522",
115
115
  "use-context-selector": "2.0.0",
116
116
  "uuid": "^9.0.1",
117
- "@payloadcms/translations": "3.0.0-beta.43"
117
+ "@payloadcms/translations": "3.0.0-beta.44"
118
118
  },
119
119
  "devDependencies": {
120
120
  "@babel/cli": "^7.24.5",
@@ -141,14 +141,14 @@
141
141
  "terser-webpack-plugin": "^5.3.10",
142
142
  "webpack": "^5.78.0",
143
143
  "webpack-cli": "^5.1.4",
144
- "payload": "3.0.0-beta.43",
145
- "@payloadcms/eslint-config": "1.1.1"
144
+ "@payloadcms/eslint-config": "1.1.1",
145
+ "payload": "3.0.0-beta.44"
146
146
  },
147
147
  "peerDependencies": {
148
148
  "next": "^15.0.0-rc.0",
149
149
  "react": "^19.0.0 || ^19.0.0-rc-f994737d14-20240522",
150
150
  "react-dom": "^19.0.0 || ^19.0.0-rc-f994737d14-20240522",
151
- "payload": "3.0.0-beta.43"
151
+ "payload": "3.0.0-beta.44"
152
152
  },
153
153
  "engines": {
154
154
  "node": "^18.20.2 || >=20.9.0"