@payloadcms/ui 3.65.0-internal.ef3958a → 3.65.0

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 (65) hide show
  1. package/dist/elements/AppHeader/index.scss +2 -2
  2. package/dist/elements/CloseModalOnRouteChange/index.d.ts +2 -0
  3. package/dist/elements/CloseModalOnRouteChange/index.d.ts.map +1 -0
  4. package/dist/elements/CloseModalOnRouteChange/index.js +51 -0
  5. package/dist/elements/CloseModalOnRouteChange/index.js.map +1 -0
  6. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  7. package/dist/elements/PublishButton/index.js +13 -16
  8. package/dist/elements/PublishButton/index.js.map +1 -1
  9. package/dist/elements/QueryPresets/cells/WhereCell/index.js +2 -2
  10. package/dist/elements/QueryPresets/cells/WhereCell/index.js.map +1 -1
  11. package/dist/elements/QueryPresets/fields/WhereField/index.d.ts.map +1 -1
  12. package/dist/elements/QueryPresets/fields/WhereField/index.js +4 -1
  13. package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
  14. package/dist/elements/ReactSelect/MultiValueLabel/index.d.ts.map +1 -1
  15. package/dist/elements/ReactSelect/MultiValueLabel/index.js +18 -9
  16. package/dist/elements/ReactSelect/MultiValueLabel/index.js.map +1 -1
  17. package/dist/elements/ReactSelect/ValueContainer/index.d.ts.map +1 -1
  18. package/dist/elements/ReactSelect/ValueContainer/index.js +19 -7
  19. package/dist/elements/ReactSelect/ValueContainer/index.js.map +1 -1
  20. package/dist/elements/WhereBuilder/Condition/index.js +1 -1
  21. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  22. package/dist/exports/client/{CodeEditor-IVFMKS4Z.js → CodeEditor-ORMD3ID3.js} +2 -2
  23. package/dist/exports/client/{chunk-XUCNM5EK.js → chunk-PXD7OIXB.js} +1 -1
  24. package/dist/exports/client/{chunk-XUCNM5EK.js.map → chunk-PXD7OIXB.js.map} +2 -2
  25. package/dist/exports/client/index.d.ts +1 -0
  26. package/dist/exports/client/index.d.ts.map +1 -1
  27. package/dist/exports/client/index.js +12 -12
  28. package/dist/exports/client/index.js.map +4 -4
  29. package/dist/fields/Array/index.js +1 -1
  30. package/dist/fields/Array/index.js.map +1 -1
  31. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.d.ts.map +1 -0
  32. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.js.map +1 -0
  33. package/dist/fields/Blocks/BlockSelector/index.d.ts +13 -0
  34. package/dist/fields/Blocks/BlockSelector/index.d.ts.map +1 -0
  35. package/dist/fields/Blocks/BlockSelector/index.js +116 -0
  36. package/dist/fields/Blocks/BlockSelector/index.js.map +1 -0
  37. package/dist/fields/Blocks/BlocksDrawer/index.d.ts +0 -1
  38. package/dist/fields/Blocks/BlocksDrawer/index.d.ts.map +1 -1
  39. package/dist/fields/Blocks/BlocksDrawer/index.js +62 -105
  40. package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
  41. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js +1 -0
  42. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
  43. package/dist/fields/Relationship/select-components/SingleValue/index.js +11 -8
  44. package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
  45. package/dist/hooks/useControllableState.d.ts.map +1 -1
  46. package/dist/hooks/useControllableState.js.map +1 -1
  47. package/dist/providers/Auth/index.d.ts.map +1 -1
  48. package/dist/providers/Auth/index.js +10 -8
  49. package/dist/providers/Auth/index.js.map +1 -1
  50. package/dist/providers/ListQuery/sanitizeQuery.d.ts.map +1 -1
  51. package/dist/providers/ListQuery/sanitizeQuery.js +1 -1
  52. package/dist/providers/ListQuery/sanitizeQuery.js.map +1 -1
  53. package/dist/providers/Root/index.d.ts.map +1 -1
  54. package/dist/providers/Root/index.js +4 -3
  55. package/dist/providers/Root/index.js.map +1 -1
  56. package/dist/styles.css +1 -1
  57. package/dist/utilities/handleLivePreview.d.ts.map +1 -1
  58. package/package.json +5 -5
  59. package/dist/fields/Blocks/BlocksDrawer/BlockSearch/index.d.ts.map +0 -1
  60. package/dist/fields/Blocks/BlocksDrawer/BlockSearch/index.js.map +0 -1
  61. /package/dist/exports/client/{CodeEditor-IVFMKS4Z.js.map → CodeEditor-ORMD3ID3.js.map} +0 -0
  62. /package/dist/fields/Blocks/{BlocksDrawer → BlockSelector}/BlockSearch/index.d.ts +0 -0
  63. /package/dist/fields/Blocks/{BlocksDrawer → BlockSelector}/BlockSearch/index.js +0 -0
  64. /package/dist/fields/Blocks/{BlocksDrawer → BlockSelector}/BlockSearch/index.scss +0 -0
  65. /package/dist/fields/Blocks/{BlocksDrawer → BlockSelector}/index.scss +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","Fragment","useState","components","Tooltip","EditIcon","useAuth","useTranslation","baseClass","MultiValueLabel","props","data","t0","selectProps","t1","allowEdit","label","relationTo","value","customProps","t2","undefined","draggableProps","onDocumentOpen","permissions","showTooltip","setShowTooltip","t","hasReadPermission","Boolean","collections","read","_jsxs","className","children","_jsx","innerProps","onClick","event","id","collectionSlug","openInNewTab","metaKey","ctrlKey","onKeyDown","_temp","onMouseDown","_temp2","onMouseEnter","onMouseLeave","onTouchEnd","_temp3","type","show","e","key","stopPropagation","e_0","e_1"],"sources":["../../../../../src/fields/Relationship/select-components/MultiValueLabel/index.tsx"],"sourcesContent":["'use client'\nimport type { MultiValueProps } from 'react-select'\n\nimport React, { Fragment, useState } from 'react'\nimport { components } from 'react-select'\n\nimport type { ReactSelectAdapterProps } from '../../../../elements/ReactSelect/types.js'\nimport type { Option } from '../../types.js'\n\nimport { Tooltip } from '../../../../elements/Tooltip/index.js'\nimport { EditIcon } from '../../../../icons/Edit/index.js'\nimport { useAuth } from '../../../../providers/Auth/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'relationship--multi-value-label'\n\nexport const MultiValueLabel: React.FC<\n {\n selectProps: {\n // TODO Fix this - moduleResolution 16 breaks our declare module\n customProps: ReactSelectAdapterProps['customProps']\n }\n } & MultiValueProps<Option>\n> = (props) => {\n const {\n data: { allowEdit, label, relationTo, value },\n selectProps: { customProps: { draggableProps, onDocumentOpen } = {} } = {},\n } = props\n\n const { permissions } = useAuth()\n const [showTooltip, setShowTooltip] = useState(false)\n const { t } = useTranslation()\n const hasReadPermission = Boolean(permissions?.collections?.[relationTo]?.read)\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__content`}>\n <components.MultiValueLabel\n {...props}\n innerProps={{\n className: `${baseClass}__text`,\n ...(draggableProps || {}),\n }}\n />\n </div>\n {relationTo && hasReadPermission && allowEdit !== false && (\n <Fragment>\n <button\n aria-label={`Edit ${label}`}\n className={`${baseClass}__drawer-toggler`}\n onClick={(event) => {\n setShowTooltip(false)\n onDocumentOpen({\n id: value,\n collectionSlug: relationTo,\n hasReadPermission,\n openInNewTab: event.metaKey || event.ctrlKey,\n })\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.stopPropagation()\n }\n }}\n onMouseDown={(e) => e.stopPropagation()} // prevents react-select dropdown from opening\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onTouchEnd={(e) => e.stopPropagation()} // prevents react-select dropdown from opening\n type=\"button\"\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('general:editLabel', { label: '' })}\n </Tooltip>\n <EditIcon className={`${baseClass}__icon`} />\n </button>\n </Fragment>\n )}\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAGA,OAAOA,KAAA,IAASC,QAAQ,EAAEC,QAAQ,QAAQ;AAC1C,SAASC,UAAU,QAAQ;AAK3B,SAASC,OAAO,QAAQ;AACxB,SAASC,QAAQ,QAAQ;AACzB,SAASC,OAAO,QAAQ;AACxB,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,eAAA,GAOTC,KAAA;EACF;IAAAC,IAAA,EAAAC,EAAA;IAAAC,WAAA,EAAAC;EAAA,IAGIJ,KAAA;EAFI;IAAAK,SAAA;IAAAC,KAAA;IAAAC,UAAA;IAAAC;EAAA,IAAAN,EAAuC;EAChC;IAAAO,WAAA,EAAAC;EAAA,IAAAN,EAA6D,KAAAO,SAAA,QAA7DP,EAA6D;EAA9C;IAAAQ,cAAA;IAAAC;EAAA,IAAAH,EAAuC,KAAAC,SAAA,QAAvCD,EAAuC;EAGrE;IAAAI;EAAA,IAAwBlB,OAAA;EACxB,OAAAmB,WAAA,EAAAC,cAAA,IAAsCxB,QAAA,MAAS;EAC/C;IAAAyB;EAAA,IAAcpB,cAAA;EACd,MAAAqB,iBAAA,GAA0BC,OAAA,CAAQL,WAAA,EAAAM,WAAA,GAA2Bb,UAAA,GAAAc,IAAa;EAAA,OAGxEC,KAAA,CAAC;IAAAC,SAAA,EAAAzB,SAAA;IAAA0B,QAAA,GACCC,IAAA,CAAC;MAAAF,SAAA,EAAe,GAAAzB,SAAA,WAAuB;MAAA0B,QAAA,EACrCC,IAAA,CAAAhC,UAAA,CAAAM,eAAA;QAAA,GACMC,KAAK;QAAA0B,UAAA;UAAAH,SAAA,EAEI,GAAAzB,SAAA,QAAoB;UAAA,IAC3Bc,cAAA,MAAoB;QAAA;MAAA,C;QAI7BL,UAAA,IAAcW,iBAAA,IAAqBb,SAAA,UAAc,IAChDoB,IAAA,CAAAlC,QAAA;MAAAiC,QAAA,EACEF,KAAA,CAAC;QAAA,cACa,QAAQhB,KAAA,EAAO;QAAAiB,SAAA,EAChB,GAAAzB,SAAA,kBAA8B;QAAA6B,OAAA,EAAAC,KAAA;UAEvCZ,cAAA,MAAe;UACfH,cAAA;YAAAgB,EAAA,EACMrB,KAAA;YAAAsB,cAAA,EACYvB,UAAA;YAAAW,iBAAA;YAAAa,YAAA,EAEFH,KAAA,CAAAI,OAAA,IAAiBJ,KAAA,CAAAK;UAAa,CAC9C;QAAA;QAAAC,SAAA,EAAAC,KAAA;QAAAC,WAAA,EAAAC,MAAA;QAAAC,YAAA,EAAAA,CAAA,KAQkBtB,cAAA,KAAe;QAAAuB,YAAA,EAAAA,CAAA,KACfvB,cAAA,MAAe;QAAAwB,UAAA,EAAAC,MAAA;QAAAC,IAAA,EAE9B;QAAAlB,QAAA,GAELC,IAAA,CAAA/B,OAAA;UAAA6B,SAAA,EAAoB,GAAAzB,SAAA,WAAuB;UAAA6C,IAAA,EAAQ5B,WAAA;UAAAS,QAAA,EAChDP,CAAA,CAAE;YAAAX,KAAA,EAA8B;UAAA,CAAG;QAAA,C,GAEtCmB,IAAA,CAAA9B,QAAA;UAAA4B,SAAA,EAAqB,GAAAzB,SAAA;QAAoB,C;;;;CAMrD;AAxDI,SAAAqC,MAAAS,CAAA;EAAA,IAqCcA,CAAA,CAAAC,GAAA,KAAU;IACZD,CAAA,CAAAE,eAAA,CAAiB;EAAA;AAAA;AAtC7B,SAAAT,OAAAU,GAAA;EAAA,OAyC4BH,GAAA,CAAAE,eAAA,CAAiB;AAAA;AAzC7C,SAAAL,OAAAO,GAAA;EAAA,OA4C2BJ,GAAA,CAAAE,eAAA,CAAiB;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","Fragment","useState","components","Tooltip","EditIcon","useAuth","useTranslation","baseClass","MultiValueLabel","props","data","t0","selectProps","t1","allowEdit","label","relationTo","value","customProps","t2","undefined","draggableProps","onDocumentOpen","permissions","showTooltip","setShowTooltip","t","hasReadPermission","Boolean","collections","read","_jsxs","className","title","children","_jsx","innerProps","onClick","event","id","collectionSlug","openInNewTab","metaKey","ctrlKey","onKeyDown","_temp","onMouseDown","_temp2","onMouseEnter","onMouseLeave","onTouchEnd","_temp3","type","show","e","key","stopPropagation","e_0","e_1"],"sources":["../../../../../src/fields/Relationship/select-components/MultiValueLabel/index.tsx"],"sourcesContent":["'use client'\nimport type { MultiValueProps } from 'react-select'\n\nimport React, { Fragment, useState } from 'react'\nimport { components } from 'react-select'\n\nimport type { ReactSelectAdapterProps } from '../../../../elements/ReactSelect/types.js'\nimport type { Option } from '../../types.js'\n\nimport { Tooltip } from '../../../../elements/Tooltip/index.js'\nimport { EditIcon } from '../../../../icons/Edit/index.js'\nimport { useAuth } from '../../../../providers/Auth/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'relationship--multi-value-label'\n\nexport const MultiValueLabel: React.FC<\n {\n selectProps: {\n // TODO Fix this - moduleResolution 16 breaks our declare module\n customProps: ReactSelectAdapterProps['customProps']\n }\n } & MultiValueProps<Option>\n> = (props) => {\n const {\n data: { allowEdit, label, relationTo, value },\n selectProps: { customProps: { draggableProps, onDocumentOpen } = {} } = {},\n } = props\n\n const { permissions } = useAuth()\n const [showTooltip, setShowTooltip] = useState(false)\n const { t } = useTranslation()\n const hasReadPermission = Boolean(permissions?.collections?.[relationTo]?.read)\n\n return (\n <div className={baseClass} title={label || ''}>\n <div className={`${baseClass}__content`}>\n <components.MultiValueLabel\n {...props}\n innerProps={{\n className: `${baseClass}__text`,\n ...(draggableProps || {}),\n }}\n />\n </div>\n {relationTo && hasReadPermission && allowEdit !== false && (\n <Fragment>\n <button\n aria-label={`Edit ${label}`}\n className={`${baseClass}__drawer-toggler`}\n onClick={(event) => {\n setShowTooltip(false)\n onDocumentOpen({\n id: value,\n collectionSlug: relationTo,\n hasReadPermission,\n openInNewTab: event.metaKey || event.ctrlKey,\n })\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.stopPropagation()\n }\n }}\n onMouseDown={(e) => e.stopPropagation()} // prevents react-select dropdown from opening\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onTouchEnd={(e) => e.stopPropagation()} // prevents react-select dropdown from opening\n type=\"button\"\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('general:editLabel', { label: '' })}\n </Tooltip>\n <EditIcon className={`${baseClass}__icon`} />\n </button>\n </Fragment>\n )}\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAGA,OAAOA,KAAA,IAASC,QAAQ,EAAEC,QAAQ,QAAQ;AAC1C,SAASC,UAAU,QAAQ;AAK3B,SAASC,OAAO,QAAQ;AACxB,SAASC,QAAQ,QAAQ;AACzB,SAASC,OAAO,QAAQ;AACxB,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,eAAA,GAOTC,KAAA;EACF;IAAAC,IAAA,EAAAC,EAAA;IAAAC,WAAA,EAAAC;EAAA,IAGIJ,KAAA;EAFI;IAAAK,SAAA;IAAAC,KAAA;IAAAC,UAAA;IAAAC;EAAA,IAAAN,EAAuC;EAChC;IAAAO,WAAA,EAAAC;EAAA,IAAAN,EAA6D,KAAAO,SAAA,QAA7DP,EAA6D;EAA9C;IAAAQ,cAAA;IAAAC;EAAA,IAAAH,EAAuC,KAAAC,SAAA,QAAvCD,EAAuC;EAGrE;IAAAI;EAAA,IAAwBlB,OAAA;EACxB,OAAAmB,WAAA,EAAAC,cAAA,IAAsCxB,QAAA,MAAS;EAC/C;IAAAyB;EAAA,IAAcpB,cAAA;EACd,MAAAqB,iBAAA,GAA0BC,OAAA,CAAQL,WAAA,EAAAM,WAAA,GAA2Bb,UAAA,GAAAc,IAAa;EAAA,OAGxEC,KAAA,CAAC;IAAAC,SAAA,EAAAzB,SAAA;IAAA0B,KAAA,EAAiClB,KAAA,IAAS;IAAAmB,QAAA,GACzCC,IAAA,CAAC;MAAAH,SAAA,EAAe,GAAAzB,SAAA,WAAuB;MAAA2B,QAAA,EACrCC,IAAA,CAAAjC,UAAA,CAAAM,eAAA;QAAA,GACMC,KAAK;QAAA2B,UAAA;UAAAJ,SAAA,EAEI,GAAAzB,SAAA,QAAoB;UAAA,IAC3Bc,cAAA,MAAoB;QAAA;MAAA,C;QAI7BL,UAAA,IAAcW,iBAAA,IAAqBb,SAAA,UAAc,IAChDqB,IAAA,CAAAnC,QAAA;MAAAkC,QAAA,EACEH,KAAA,CAAC;QAAA,cACa,QAAQhB,KAAA,EAAO;QAAAiB,SAAA,EAChB,GAAAzB,SAAA,kBAA8B;QAAA8B,OAAA,EAAAC,KAAA;UAEvCb,cAAA,MAAe;UACfH,cAAA;YAAAiB,EAAA,EACMtB,KAAA;YAAAuB,cAAA,EACYxB,UAAA;YAAAW,iBAAA;YAAAc,YAAA,EAEFH,KAAA,CAAAI,OAAA,IAAiBJ,KAAA,CAAAK;UAAa,CAC9C;QAAA;QAAAC,SAAA,EAAAC,KAAA;QAAAC,WAAA,EAAAC,MAAA;QAAAC,YAAA,EAAAA,CAAA,KAQkBvB,cAAA,KAAe;QAAAwB,YAAA,EAAAA,CAAA,KACfxB,cAAA,MAAe;QAAAyB,UAAA,EAAAC,MAAA;QAAAC,IAAA,EAE9B;QAAAlB,QAAA,GAELC,IAAA,CAAAhC,OAAA;UAAA6B,SAAA,EAAoB,GAAAzB,SAAA,WAAuB;UAAA8C,IAAA,EAAQ7B,WAAA;UAAAU,QAAA,EAChDR,CAAA,CAAE;YAAAX,KAAA,EAA8B;UAAA,CAAG;QAAA,C,GAEtCoB,IAAA,CAAA/B,QAAA;UAAA4B,SAAA,EAAqB,GAAAzB,SAAA;QAAoB,C;;;;CAMrD;AAxDI,SAAAsC,MAAAS,CAAA;EAAA,IAqCcA,CAAA,CAAAC,GAAA,KAAU;IACZD,CAAA,CAAAE,eAAA,CAAiB;EAAA;AAAA;AAtC7B,SAAAT,OAAAU,GAAA;EAAA,OAyC4BH,GAAA,CAAAE,eAAA,CAAiB;AAAA;AAzC7C,SAAAL,OAAAO,GAAA;EAAA,OA4C2BJ,GAAA,CAAAE,eAAA,CAAiB;AAAA","ignoreList":[]}
@@ -11,7 +11,7 @@ import { useTranslation } from '../../../../providers/Translation/index.js';
11
11
  import './index.scss';
12
12
  const baseClass = 'relationship--single-value';
13
13
  export const SingleValue = props => {
14
- const $ = _c(15);
14
+ const $ = _c(16);
15
15
  const {
16
16
  children,
17
17
  data: t0,
@@ -53,13 +53,15 @@ export const SingleValue = props => {
53
53
  permissions
54
54
  } = useAuth();
55
55
  const hasReadPermission = Boolean(permissions?.collections?.[relationTo]?.read);
56
- let t5;
57
- if ($[4] !== allowEdit || $[5] !== children || $[6] !== hasReadPermission || $[7] !== label || $[8] !== onDocumentOpen || $[9] !== props || $[10] !== relationTo || $[11] !== showTooltip || $[12] !== t || $[13] !== value) {
58
- t5 = _jsx(SelectComponents.SingleValue, {
56
+ const t5 = label || "";
57
+ let t6;
58
+ if ($[4] !== allowEdit || $[5] !== children || $[6] !== hasReadPermission || $[7] !== label || $[8] !== onDocumentOpen || $[9] !== props || $[10] !== relationTo || $[11] !== showTooltip || $[12] !== t || $[13] !== t5 || $[14] !== value) {
59
+ t6 = _jsx(SelectComponents.SingleValue, {
59
60
  ...props,
60
61
  className: baseClass,
61
62
  children: _jsx("div", {
62
63
  className: `${baseClass}__label`,
64
+ title: t5,
63
65
  children: _jsxs("div", {
64
66
  className: `${baseClass}__label-text`,
65
67
  children: [_jsx("div", {
@@ -105,12 +107,13 @@ export const SingleValue = props => {
105
107
  $[10] = relationTo;
106
108
  $[11] = showTooltip;
107
109
  $[12] = t;
108
- $[13] = value;
109
- $[14] = t5;
110
+ $[13] = t5;
111
+ $[14] = value;
112
+ $[15] = t6;
110
113
  } else {
111
- t5 = $[14];
114
+ t6 = $[15];
112
115
  }
113
- return t5;
116
+ return t6;
114
117
  };
115
118
  function _temp(e) {
116
119
  if (e.key === "Enter") {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","Fragment","useState","components","SelectComponents","Tooltip","EditIcon","useAuth","useTranslation","baseClass","SingleValue","props","$","children","data","t0","selectProps","t1","allowEdit","label","relationTo","value","t2","undefined","customProps","t3","t4","onDocumentOpen","showTooltip","setShowTooltip","t","permissions","hasReadPermission","Boolean","collections","read","t5","_jsx","className","_jsxs","onClick","event","id","collectionSlug","openInNewTab","metaKey","ctrlKey","onKeyDown","_temp","onMouseDown","_temp2","onMouseEnter","onMouseLeave","onTouchEnd","_temp3","type","show","e","key","stopPropagation","e_0","e_1"],"sources":["../../../../../src/fields/Relationship/select-components/SingleValue/index.tsx"],"sourcesContent":["'use client'\nimport type { SingleValueProps } from 'react-select'\n\nimport React, { Fragment, useState } from 'react'\nimport { components as SelectComponents } from 'react-select'\n\nimport type { ReactSelectAdapterProps } from '../../../../elements/ReactSelect/types.js'\nimport type { Option } from '../../types.js'\n\nimport { Tooltip } from '../../../../elements/Tooltip/index.js'\nimport { EditIcon } from '../../../../icons/Edit/index.js'\nimport { useAuth } from '../../../../providers/Auth/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'relationship--single-value'\n\nexport const SingleValue: React.FC<\n {\n selectProps: {\n // TODO Fix this - moduleResolution 16 breaks our declare module\n customProps: ReactSelectAdapterProps['customProps']\n }\n } & SingleValueProps<Option>\n> = (props) => {\n const {\n children,\n data: { allowEdit, label, relationTo, value },\n selectProps: { customProps: { onDocumentOpen } = {} } = {},\n } = props\n\n const [showTooltip, setShowTooltip] = useState(false)\n const { t } = useTranslation()\n const { permissions } = useAuth()\n const hasReadPermission = Boolean(permissions?.collections?.[relationTo]?.read)\n\n return (\n <SelectComponents.SingleValue {...props} className={baseClass}>\n <div className={`${baseClass}__label`}>\n <div className={`${baseClass}__label-text`}>\n <div className={`${baseClass}__text`}>{children}</div>\n {relationTo && hasReadPermission && allowEdit !== false && (\n <Fragment>\n <button\n aria-label={t('general:editLabel', { label })}\n className={`${baseClass}__drawer-toggler`}\n onClick={(event) => {\n setShowTooltip(false)\n onDocumentOpen({\n id: value,\n collectionSlug: relationTo,\n hasReadPermission,\n openInNewTab: event.metaKey || event.ctrlKey,\n })\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.stopPropagation()\n }\n }}\n onMouseDown={(e) => e.stopPropagation()} // prevents react-select dropdown from opening\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onTouchEnd={(e) => e.stopPropagation()} // prevents react-select dropdown from openingtype=\"button\"\n type=\"button\"\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('general:edit')}\n </Tooltip>\n <EditIcon />\n </button>\n </Fragment>\n )}\n </div>\n </div>\n </SelectComponents.SingleValue>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,OAAOC,KAAA,IAASC,QAAQ,EAAEC,QAAQ,QAAQ;AAC1C,SAASC,UAAA,IAAcC,gBAAgB,QAAQ;AAK/C,SAASC,OAAO,QAAQ;AACxB,SAASC,QAAQ,QAAQ;AACzB,SAASC,OAAO,QAAQ;AACxB,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,WAAA,GAOTC,KAAA;EAAA,MAAAC,CAAA,GAAAb,EAAA;EACF;IAAAc,QAAA;IAAAC,IAAA,EAAAC,EAAA;IAAAC,WAAA,EAAAC;EAAA,IAIIN,KAAA;EAFI;IAAAO,SAAA;IAAAC,KAAA;IAAAC,UAAA;IAAAC;EAAA,IAAAN,EAAuC;EAAA,IAAAO,EAAA;EAAA,IAAAV,CAAA,QAAAK,EAAA;IAChCK,EAAA,GAAAL,EAA6C,KAAAM,SAAA,QAA7CN,EAA6C;IAAAL,CAAA,MAAAK,EAAA;IAAAL,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAA7C;IAAAY,WAAA,EAAAC;EAAA,IAAAH,EAA6C;EAAA,IAAAI,EAAA;EAAA,IAAAd,CAAA,QAAAa,EAAA;IAA9BC,EAAA,GAAAD,EAAuB,KAAAF,SAAA,QAAvBE,EAAuB;IAAAb,CAAA,MAAAa,EAAA;IAAAb,CAAA,MAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EAAvB;IAAAe;EAAA,IAAAD,EAAuB;EAGrD,OAAAE,WAAA,EAAAC,cAAA,IAAsC3B,QAAA,MAAS;EAC/C;IAAA4B;EAAA,IAActB,cAAA;EACd;IAAAuB;EAAA,IAAwBxB,OAAA;EACxB,MAAAyB,iBAAA,GAA0BC,OAAA,CAAQF,WAAA,EAAAG,WAAA,GAA2Bd,UAAA,GAAAe,IAAa;EAAA,IAAAC,EAAA;EAAA,IAAAxB,CAAA,QAAAM,SAAA,IAAAN,CAAA,QAAAC,QAAA,IAAAD,CAAA,QAAAoB,iBAAA,IAAApB,CAAA,QAAAO,KAAA,IAAAP,CAAA,QAAAe,cAAA,IAAAf,CAAA,QAAAD,KAAA,IAAAC,CAAA,SAAAQ,UAAA,IAAAR,CAAA,SAAAgB,WAAA,IAAAhB,CAAA,SAAAkB,CAAA,IAAAlB,CAAA,SAAAS,KAAA;IAGxEe,EAAA,GAAAC,IAAA,CAAAjC,gBAAA,CAAAM,WAAA;MAAA,GAAkCC,KAAK;MAAA2B,SAAA,EAAA7B,SAAA;MAAAI,QAAA,EACrCwB,IAAA,CAAC;QAAAC,SAAA,EAAe,GAAA7B,SAAA,SAAqB;QAAAI,QAAA,EACnC0B,KAAA,CAAC;UAAAD,SAAA,EAAe,GAAA7B,SAAA,cAA0B;UAAAI,QAAA,GACxCwB,IAAA,CAAC;YAAAC,SAAA,EAAe,GAAA7B,SAAA,QAAoB;YAAAI;UAAA,C,GACnCO,UAAA,IAAcY,iBAAA,IAAqBd,SAAA,UAAc,IAChDmB,IAAA,CAAApC,QAAA;YAAAY,QAAA,EACE0B,KAAA,CAAC;cAAA,cACaT,CAAA,CAAE;gBAAAX;cAAA,CAA6B;cAAAmB,SAAA,EAChC,GAAA7B,SAAA,kBAA8B;cAAA+B,OAAA,EAAAC,KAAA;gBAEvCZ,cAAA,MAAe;gBACfF,cAAA;kBAAAe,EAAA,EACMrB,KAAA;kBAAAsB,cAAA,EACYvB,UAAA;kBAAAY,iBAAA;kBAAAY,YAAA,EAEFH,KAAA,CAAAI,OAAA,IAAiBJ,KAAA,CAAAK;gBAAa,CAC9C;cAAA;cAAAC,SAAA,EAAAC,KAAA;cAAAC,WAAA,EAAAC,MAAA;cAAAC,YAAA,EAAAA,CAAA,KAQkBtB,cAAA,KAAe;cAAAuB,YAAA,EAAAA,CAAA,KACfvB,cAAA,MAAe;cAAAwB,UAAA,EAAAC,MAAA;cAAAC,IAAA,EAE9B;cAAA1C,QAAA,GAELwB,IAAA,CAAAhC,OAAA;gBAAAiC,SAAA,EAAoB,GAAA7B,SAAA,WAAuB;gBAAA+C,IAAA,EAAQ5B,WAAA;gBAAAf,QAAA,EAChDiB,CAAA,CAAE;cAAA,C,GAELO,IAAA,CAAA/B,QAAA,IAAC;YAAA,C;;;;;;;;;;;;;;;;;;;SAhCb8B,E;CAwCJ;AArDI,SAAAY,MAAAS,CAAA;EAAA,IAgCkBA,CAAA,CAAAC,GAAA,KAAU;IACZD,CAAA,CAAAE,eAAA,CAAiB;EAAA;AAAA;AAjCjC,SAAAT,OAAAU,GAAA;EAAA,OAoCgCH,GAAA,CAAAE,eAAA,CAAiB;AAAA;AApCjD,SAAAL,OAAAO,GAAA;EAAA,OAuC+BJ,GAAA,CAAAE,eAAA,CAAiB;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","Fragment","useState","components","SelectComponents","Tooltip","EditIcon","useAuth","useTranslation","baseClass","SingleValue","props","$","children","data","t0","selectProps","t1","allowEdit","label","relationTo","value","t2","undefined","customProps","t3","t4","onDocumentOpen","showTooltip","setShowTooltip","t","permissions","hasReadPermission","Boolean","collections","read","t5","t6","_jsx","className","title","_jsxs","onClick","event","id","collectionSlug","openInNewTab","metaKey","ctrlKey","onKeyDown","_temp","onMouseDown","_temp2","onMouseEnter","onMouseLeave","onTouchEnd","_temp3","type","show","e","key","stopPropagation","e_0","e_1"],"sources":["../../../../../src/fields/Relationship/select-components/SingleValue/index.tsx"],"sourcesContent":["'use client'\nimport type { SingleValueProps } from 'react-select'\n\nimport React, { Fragment, useState } from 'react'\nimport { components as SelectComponents } from 'react-select'\n\nimport type { ReactSelectAdapterProps } from '../../../../elements/ReactSelect/types.js'\nimport type { Option } from '../../types.js'\n\nimport { Tooltip } from '../../../../elements/Tooltip/index.js'\nimport { EditIcon } from '../../../../icons/Edit/index.js'\nimport { useAuth } from '../../../../providers/Auth/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'relationship--single-value'\n\nexport const SingleValue: React.FC<\n {\n selectProps: {\n // TODO Fix this - moduleResolution 16 breaks our declare module\n customProps: ReactSelectAdapterProps['customProps']\n }\n } & SingleValueProps<Option>\n> = (props) => {\n const {\n children,\n data: { allowEdit, label, relationTo, value },\n selectProps: { customProps: { onDocumentOpen } = {} } = {},\n } = props\n\n const [showTooltip, setShowTooltip] = useState(false)\n const { t } = useTranslation()\n const { permissions } = useAuth()\n const hasReadPermission = Boolean(permissions?.collections?.[relationTo]?.read)\n\n return (\n <SelectComponents.SingleValue {...props} className={baseClass}>\n <div className={`${baseClass}__label`} title={label || ''}>\n <div className={`${baseClass}__label-text`}>\n <div className={`${baseClass}__text`}>{children}</div>\n {relationTo && hasReadPermission && allowEdit !== false && (\n <Fragment>\n <button\n aria-label={t('general:editLabel', { label })}\n className={`${baseClass}__drawer-toggler`}\n onClick={(event) => {\n setShowTooltip(false)\n onDocumentOpen({\n id: value,\n collectionSlug: relationTo,\n hasReadPermission,\n openInNewTab: event.metaKey || event.ctrlKey,\n })\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.stopPropagation()\n }\n }}\n onMouseDown={(e) => e.stopPropagation()} // prevents react-select dropdown from opening\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onTouchEnd={(e) => e.stopPropagation()} // prevents react-select dropdown from openingtype=\"button\"\n type=\"button\"\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('general:edit')}\n </Tooltip>\n <EditIcon />\n </button>\n </Fragment>\n )}\n </div>\n </div>\n </SelectComponents.SingleValue>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useControllableState.d.ts","sourceRoot":"","sources":["../../src/hooks/useControllableState.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EACvC,SAAS,EAAE,CAAC,EACZ,aAAa,EAAE,CAAC,GACf,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAA;AAC7F,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"useControllableState.d.ts","sourceRoot":"","sources":["../../src/hooks/useControllableState.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EACvC,SAAS,EAAE,CAAC,EACZ,aAAa,EAAE,CAAC,GACf,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAA;AAE7F,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useControllableState.js","names":["c","_c","useEffect","useRef","useState","useControllableState","propValue","fallbackValue","$","localValue","setLocalValue","initialRenderRef","t0","t1","current","t2","t3"],"sources":["../../src/hooks/useControllableState.ts"],"sourcesContent":["'use client'\nimport { useEffect, useRef, useState } from 'react'\n\n/**\n * A hook for managing state that can be controlled by props but also overridden locally.\n * Props always take precedence if they change, but local state can override them temporarily.\n *\n * @param propValue - The controlled value from props\n * @param fallbackValue - Value to use when propValue is null or undefined\n *\n * @internal - may change or be removed without a major version bump\n */\nexport function useControllableState<T, D>(\n propValue: T,\n fallbackValue: D,\n): [T extends NonNullable<T> ? T : D | NonNullable<T>, (value: ((prev: T) => T) | T) => void]\nexport function useControllableState<T>(propValue: T): [T, (value: ((prev: T) => T) | T) => void]\nexport function useControllableState<T, D>(\n propValue: T,\n fallbackValue?: D,\n): [T extends NonNullable<T> ? T : D | NonNullable<T>, (value: ((prev: T) => T) | T) => void] {\n const [localValue, setLocalValue] = useState<T>(propValue)\n const initialRenderRef = useRef(true)\n\n useEffect(() => {\n if (initialRenderRef.current) {\n initialRenderRef.current = false\n return\n }\n\n setLocalValue(propValue)\n }, [propValue])\n\n return [localValue ?? fallbackValue, setLocalValue] as [\n T extends NonNullable<T> ? T : D | NonNullable<T>,\n (value: ((prev: T) => T) | T) => void,\n ]\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAgB5C,OAAO,SAAAC,qBAAAC,SAAA,EAAAC,aAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAIL,OAAAQ,UAAA,EAAAC,aAAA,IAAoCN,QAAA,CAAYE,SAAA;EAChD,MAAAK,gBAAA,GAAyBR,MAAA,KAAO;EAAA,IAAAS,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAF,SAAA;IAEtBM,EAAA,GAAAA,CAAA;MAAA,IACJD,gBAAA,CAAAG,OAAA;QACFH,gBAAA,CAAAG,OAAA;QAAA;MAAA;MAIFJ,aAAA,CAAcJ,SAAA;IAAA;IACbO,EAAA,IAACP,SAAA;IAAUE,CAAA,MAAAF,SAAA;IAAAE,CAAA,MAAAI,EAAA;IAAAJ,CAAA,MAAAK,EAAA;EAAA;IAAAD,EAAA,GAAAJ,CAAA;IAAAK,EAAA,GAAAL,CAAA;EAAA;EAPdN,SAAA,CAAUU,EAOV,EAAGC,EAAW;EAEN,MAAAE,EAAA,GAAAN,UAAA,IAAcF,aAAA;EAAA,IAAAS,EAAA;EAAA,IAAAR,CAAA,QAAAO,EAAA;IAAfC,EAAA,IAACD,EAAc,EAAeL,aAAA;IAAcF,CAAA,MAAAO,EAAA;IAAAP,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EAAA,OAA5CQ,EAA4C;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"useControllableState.js","names":["c","_c","useEffect","useRef","useState","useControllableState","propValue","fallbackValue","$","localValue","setLocalValue","initialRenderRef","t0","t1","current","t2","t3"],"sources":["../../src/hooks/useControllableState.ts"],"sourcesContent":["'use client'\nimport { useEffect, useRef, useState } from 'react'\n\n/**\n * A hook for managing state that can be controlled by props but also overridden locally.\n * Props always take precedence if they change, but local state can override them temporarily.\n *\n * @param propValue - The controlled value from props\n * @param fallbackValue - Value to use when propValue is null or undefined\n *\n * @internal - may change or be removed without a major version bump\n */\nexport function useControllableState<T, D>(\n propValue: T,\n fallbackValue: D,\n): [T extends NonNullable<T> ? T : D | NonNullable<T>, (value: ((prev: T) => T) | T) => void]\n\nexport function useControllableState<T>(propValue: T): [T, (value: ((prev: T) => T) | T) => void]\n\nexport function useControllableState<T, D>(\n propValue: T,\n fallbackValue?: D,\n): [T extends NonNullable<T> ? T : D | NonNullable<T>, (value: ((prev: T) => T) | T) => void] {\n const [localValue, setLocalValue] = useState<T>(propValue)\n const initialRenderRef = useRef(true)\n\n useEffect(() => {\n if (initialRenderRef.current) {\n initialRenderRef.current = false\n return\n }\n\n setLocalValue(propValue)\n }, [propValue])\n\n return [localValue ?? fallbackValue, setLocalValue] as [\n T extends NonNullable<T> ? T : D | NonNullable<T>,\n (value: ((prev: T) => T) | T) => void,\n ]\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAkB5C,OAAO,SAAAC,qBAAAC,SAAA,EAAAC,aAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAIL,OAAAQ,UAAA,EAAAC,aAAA,IAAoCN,QAAA,CAAYE,SAAA;EAChD,MAAAK,gBAAA,GAAyBR,MAAA,KAAO;EAAA,IAAAS,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAF,SAAA;IAEtBM,EAAA,GAAAA,CAAA;MAAA,IACJD,gBAAA,CAAAG,OAAA;QACFH,gBAAA,CAAAG,OAAA;QAAA;MAAA;MAIFJ,aAAA,CAAcJ,SAAA;IAAA;IACbO,EAAA,IAACP,SAAA;IAAUE,CAAA,MAAAF,SAAA;IAAAE,CAAA,MAAAI,EAAA;IAAAJ,CAAA,MAAAK,EAAA;EAAA;IAAAD,EAAA,GAAAJ,CAAA;IAAAK,EAAA,GAAAL,CAAA;EAAA;EAPdN,SAAA,CAAUU,EAOV,EAAGC,EAAW;EAEN,MAAAE,EAAA,GAAAN,UAAA,IAAcF,aAAA;EAAA,IAAAS,EAAA;EAAA,IAAAR,CAAA,QAAAO,EAAA;IAAfC,EAAA,IAACD,EAAc,EAAeL,aAAA;IAAcF,CAAA,MAAAO,EAAA;IAAAP,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EAAA,OAA5CQ,EAA4C;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAM1E,OAAO,KAA+D,MAAM,OAAO,CAAA;AAUnF,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,UAAU,IAAI;IAC1C,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,CAAC,CAAA;CACR,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,UAAU,IAAI;IACxC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;IAC9C,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,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,oBAAoB,KAAK,IAAI,CAAA;IAC3D,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAA;CAChB,CAAA;AAMD,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;CACzB,CAAA;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,WAAW,GAClB,EAAE,KAAK,qBAoSP;AAED,eAAO,MAAM,OAAO,GAAI,CAAC,oBAAmB,WAAW,CAAC,CAAC,CAAmC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAM1E,OAAO,KAA+D,MAAM,OAAO,CAAA;AAUnF,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,UAAU,IAAI;IAC1C,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,CAAC,CAAA;CACR,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,UAAU,IAAI;IACxC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;IAC9C,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,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,oBAAoB,KAAK,IAAI,CAAA;IAC3D,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAA;CAChB,CAAA;AAMD,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;CACzB,CAAA;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,WAAW,GAClB,EAAE,KAAK,qBAuSP;AAED,eAAO,MAAM,OAAO,GAAI,CAAC,oBAAmB,WAAW,CAAC,CAAC,CAAmC,CAAA"}
@@ -73,6 +73,14 @@ export function AuthProvider({
73
73
  setTokenExpirationMs(undefined);
74
74
  clearTimeout(refreshTokenTimeoutRef.current);
75
75
  }, []);
76
+ // Handler for reminder timeout - uses useEffectEvent to capture latest autoRefresh value
77
+ const handleReminderTimeout = useEffectEvent(() => {
78
+ if (autoRefresh) {
79
+ refreshCookieEvent();
80
+ } else {
81
+ openModal(stayLoggedInModalSlug);
82
+ }
83
+ });
76
84
  const setNewUser = useCallback(userResponse => {
77
85
  clearTimeout(reminderTimeoutRef.current);
78
86
  clearTimeout(forceLogOutTimeoutRef.current);
@@ -84,13 +92,7 @@ export function AuthProvider({
84
92
  if (expiresInMs) {
85
93
  const nextForceLogoutBufferMs = Math.min(60_000, expiresInMs / 2);
86
94
  setForceLogoutBufferMs(nextForceLogoutBufferMs);
87
- reminderTimeoutRef.current = setTimeout(() => {
88
- if (autoRefresh) {
89
- refreshCookieEvent();
90
- } else {
91
- openModal(stayLoggedInModalSlug);
92
- }
93
- }, Math.max(expiresInMs - nextForceLogoutBufferMs, 0));
95
+ reminderTimeoutRef.current = setTimeout(handleReminderTimeout, Math.max(expiresInMs - nextForceLogoutBufferMs, 0));
94
96
  forceLogOutTimeoutRef.current = setTimeout(() => {
95
97
  revokeTokenAndExpire();
96
98
  redirectToInactivityRoute();
@@ -99,7 +101,7 @@ export function AuthProvider({
99
101
  } else {
100
102
  revokeTokenAndExpire();
101
103
  }
102
- }, [autoRefresh, redirectToInactivityRoute, revokeTokenAndExpire, openModal]);
104
+ }, [redirectToInactivityRoute, revokeTokenAndExpire]);
103
105
  const refreshCookie = useCallback(forceRefresh => {
104
106
  if (!id) {
105
107
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","usePathname","useRouter","formatAdminURL","qs","React","createContext","use","useCallback","useEffect","useState","toast","stayLoggedInModalSlug","useEffectEvent","useTranslation","requests","useConfig","useRouteTransition","Context","maxTimeoutMs","AuthProvider","children","permissions","initialPermissions","user","initialUser","pathname","router","config","admin","autoLogin","autoRefresh","routes","inactivity","logoutInactivityRoute","userSlug","adminRoute","api","apiRoute","serverURL","i18n","closeAllModals","openModal","startRouteTransition","setUserInMemory","tokenInMemory","setTokenInMemory","tokenExpirationMs","setTokenExpirationMs","setPermissions","forceLogoutBufferMs","setForceLogoutBufferMs","fetchedUserOnMount","setFetchedUserOnMount","refreshTokenTimeoutRef","useRef","reminderTimeoutRef","forceLogOutTimeoutRef","id","redirectToInactivityRoute","replace","path","window","location","startsWith","encodeURIComponent","revokeTokenAndExpire","undefined","clearTimeout","current","setNewUser","userResponse","token","exp","expiresInMs","Math","max","min","Date","now","nextForceLogoutBufferMs","setTimeout","refreshCookieEvent","refreshCookie","forceRefresh","request","post","headers","language","status","json","e","error","message","refreshCookieAsync","skipSetUser","logOut","collection","_","refreshPermissions","locale","params","stringify","addQueryPrefix","get","Error","fetchFullUser","credentials","fetchFullUserEvent","fetchUserOnMount","prefillOnly","_jsx","value","setUser","useAuth"],"sources":["../../../src/providers/Auth/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, SanitizedPermissions, TypedUser } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { useConfig } from '../Config/index.js'\nimport { useRouteTransition } from '../RouteTransition/index.js'\n\nexport type UserWithToken<T = ClientUser> = {\n /** seconds until expiration */\n exp: number\n token: string\n user: T\n}\n\nexport type AuthContext<T = ClientUser> = {\n fetchFullUser: () => Promise<null | TypedUser>\n logOut: () => Promise<boolean>\n /**\n * These are the permissions for the current user from a global scope.\n *\n * When checking for permissions on document specific level, use the `useDocumentInfo` hook instead.\n *\n * @example\n *\n * ```tsx\n * import { useAuth } from 'payload/ui'\n *\n * const MyComponent: React.FC = () => {\n * const { permissions } = useAuth()\n *\n * if (permissions?.collections?.myCollection?.create) {\n * // user can create documents in 'myCollection'\n * }\n *\n * return null\n * }\n * ```\n *\n * with useDocumentInfo:\n *\n * ```tsx\n * import { useDocumentInfo } from 'payload/ui'\n *\n * const MyComponent: React.FC = () => {\n * const { docPermissions } = useDocumentInfo()\n * if (docPermissions?.create) {\n * // user can create this document\n * }\n * return null\n * } ```\n */\n permissions?: SanitizedPermissions\n refreshCookie: (forceRefresh?: boolean) => void\n refreshCookieAsync: () => Promise<ClientUser>\n refreshPermissions: () => Promise<void>\n setPermissions: (permissions: SanitizedPermissions) => void\n setUser: (user: null | UserWithToken<T>) => void\n strategy?: string\n token?: string\n tokenExpirationMs?: number\n user?: null | T\n}\n\nconst Context = createContext({} as AuthContext)\n\nconst maxTimeoutMs = 2147483647\n\ntype Props = {\n children: React.ReactNode\n permissions?: SanitizedPermissions\n user?: ClientUser | null\n}\n\nexport function AuthProvider({\n children,\n permissions: initialPermissions,\n user: initialUser,\n}: Props) {\n const pathname = usePathname()\n const router = useRouter()\n\n const { config } = useConfig()\n\n const {\n admin: {\n autoLogin,\n autoRefresh,\n routes: { inactivity: logoutInactivityRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n } = config\n\n const { i18n } = useTranslation()\n const { closeAllModals, openModal } = useModal()\n const { startRouteTransition } = useRouteTransition()\n\n const [user, setUserInMemory] = useState<ClientUser | null>(initialUser)\n const [tokenInMemory, setTokenInMemory] = useState<string>()\n const [tokenExpirationMs, setTokenExpirationMs] = useState<number>()\n const [permissions, setPermissions] = useState<SanitizedPermissions>(initialPermissions)\n const [forceLogoutBufferMs, setForceLogoutBufferMs] = useState<number>(120_000)\n const [fetchedUserOnMount, setFetchedUserOnMount] = useState(false)\n\n const refreshTokenTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n const reminderTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n const forceLogOutTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n\n const id = user?.id\n\n const redirectToInactivityRoute = useCallback(() => {\n startRouteTransition(() =>\n router.replace(\n formatAdminURL({\n adminRoute,\n path: `${logoutInactivityRoute}${window.location.pathname.startsWith(adminRoute) ? `?redirect=${encodeURIComponent(window.location.pathname)}` : ''}`,\n }),\n ),\n )\n\n closeAllModals()\n }, [router, adminRoute, logoutInactivityRoute, closeAllModals, startRouteTransition])\n\n const revokeTokenAndExpire = useCallback(() => {\n setUserInMemory(null)\n setTokenInMemory(undefined)\n setTokenExpirationMs(undefined)\n clearTimeout(refreshTokenTimeoutRef.current)\n }, [])\n\n const setNewUser = useCallback(\n (userResponse: null | UserWithToken) => {\n clearTimeout(reminderTimeoutRef.current)\n clearTimeout(forceLogOutTimeoutRef.current)\n\n if (userResponse?.user) {\n setUserInMemory(userResponse.user)\n setTokenInMemory(userResponse.token)\n setTokenExpirationMs(userResponse.exp * 1000)\n\n const expiresInMs = Math.max(\n 0,\n Math.min((userResponse.exp ?? 0) * 1000 - Date.now(), maxTimeoutMs),\n )\n\n if (expiresInMs) {\n const nextForceLogoutBufferMs = Math.min(60_000, expiresInMs / 2)\n setForceLogoutBufferMs(nextForceLogoutBufferMs)\n\n reminderTimeoutRef.current = setTimeout(\n () => {\n if (autoRefresh) {\n refreshCookieEvent()\n } else {\n openModal(stayLoggedInModalSlug)\n }\n },\n Math.max(expiresInMs - nextForceLogoutBufferMs, 0),\n )\n\n forceLogOutTimeoutRef.current = setTimeout(() => {\n revokeTokenAndExpire()\n redirectToInactivityRoute()\n }, expiresInMs)\n }\n } else {\n revokeTokenAndExpire()\n }\n },\n [autoRefresh, redirectToInactivityRoute, revokeTokenAndExpire, openModal],\n )\n\n const refreshCookie = useCallback(\n (forceRefresh?: boolean) => {\n if (!id) {\n return\n }\n\n const expiresInMs = Math.max(0, (tokenExpirationMs ?? 0) - Date.now())\n\n if (forceRefresh || (tokenExpirationMs && expiresInMs < forceLogoutBufferMs * 2)) {\n clearTimeout(refreshTokenTimeoutRef.current)\n refreshTokenTimeoutRef.current = setTimeout(async () => {\n try {\n const request = await requests.post(\n `${serverURL}${apiRoute}/${userSlug}/refresh-token?refresh`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n setNewUser(json)\n } else {\n setNewUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(e.message)\n }\n }, 1000)\n }\n },\n [\n apiRoute,\n i18n.language,\n redirectToInactivityRoute,\n serverURL,\n setNewUser,\n tokenExpirationMs,\n userSlug,\n forceLogoutBufferMs,\n id,\n ],\n )\n\n const refreshCookieAsync = useCallback(\n async (skipSetUser?: boolean): Promise<ClientUser> => {\n try {\n const request = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n if (!skipSetUser) {\n setNewUser(json)\n }\n return json.user\n }\n\n if (user) {\n setNewUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(`Refreshing token failed: ${e.message}`)\n }\n return null\n },\n [apiRoute, i18n.language, redirectToInactivityRoute, serverURL, setNewUser, userSlug, user],\n )\n\n const logOut = useCallback(async () => {\n try {\n if (user && user.collection) {\n setNewUser(null)\n await requests.post(`${serverURL}${apiRoute}/${user.collection}/logout`)\n }\n } catch (_) {\n // fail silently and log the user out in state\n }\n\n return true\n }, [apiRoute, serverURL, setNewUser, user])\n\n const refreshPermissions = useCallback(\n async ({ locale }: { locale?: string } = {}) => {\n const params = qs.stringify(\n {\n locale,\n },\n {\n addQueryPrefix: true,\n },\n )\n\n try {\n const request = await requests.get(`${serverURL}${apiRoute}/access${params}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: SanitizedPermissions = 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 },\n [serverURL, apiRoute, i18n],\n )\n\n const fetchFullUser = React.useCallback(async () => {\n try {\n const request = await requests.get(`${serverURL}${apiRoute}/${userSlug}/me`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n setNewUser(json)\n return json?.user || null\n }\n } catch (e) {\n toast.error(`Fetching user failed: ${e.message}`)\n }\n\n return null\n }, [serverURL, apiRoute, userSlug, i18n.language, setNewUser])\n\n const refreshCookieEvent = useEffectEvent(refreshCookie)\n useEffect(() => {\n // when location changes, refresh cookie\n refreshCookieEvent()\n }, [pathname])\n\n const fetchFullUserEvent = useEffectEvent(fetchFullUser)\n useEffect(() => {\n async function fetchUserOnMount() {\n await fetchFullUserEvent()\n setFetchedUserOnMount(true)\n }\n\n void fetchUserOnMount()\n }, [])\n\n useEffect(() => {\n if (!user && autoLogin && !autoLogin.prefillOnly) {\n void fetchFullUserEvent()\n }\n }, [user, autoLogin])\n\n useEffect(\n () => () => {\n // remove all timeouts on unmount\n clearTimeout(refreshTokenTimeoutRef.current)\n clearTimeout(reminderTimeoutRef.current)\n clearTimeout(forceLogOutTimeoutRef.current)\n },\n [],\n )\n\n if (!user && !fetchedUserOnMount) {\n return null\n }\n\n return (\n <Context\n value={{\n fetchFullUser,\n logOut,\n permissions,\n refreshCookie,\n refreshCookieAsync,\n refreshPermissions,\n setPermissions,\n setUser: setNewUser,\n token: tokenInMemory,\n tokenExpirationMs,\n user,\n }}\n >\n {children}\n </Context>\n )\n}\n\nexport const useAuth = <T = ClientUser,>(): AuthContext<T> => use(Context) as AuthContext<T>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","usePathname","useRouter","formatAdminURL","qs","React","createContext","use","useCallback","useEffect","useState","toast","stayLoggedInModalSlug","useEffectEvent","useTranslation","requests","useConfig","useRouteTransition","Context","maxTimeoutMs","AuthProvider","children","permissions","initialPermissions","user","initialUser","pathname","router","config","admin","autoLogin","autoRefresh","routes","inactivity","logoutInactivityRoute","userSlug","adminRoute","api","apiRoute","serverURL","i18n","closeAllModals","openModal","startRouteTransition","setUserInMemory","tokenInMemory","setTokenInMemory","tokenExpirationMs","setTokenExpirationMs","setPermissions","forceLogoutBufferMs","setForceLogoutBufferMs","fetchedUserOnMount","setFetchedUserOnMount","refreshTokenTimeoutRef","useRef","reminderTimeoutRef","forceLogOutTimeoutRef","id","redirectToInactivityRoute","replace","path","window","location","startsWith","encodeURIComponent","revokeTokenAndExpire","undefined","clearTimeout","current","handleReminderTimeout","refreshCookieEvent","setNewUser","userResponse","token","exp","expiresInMs","Math","max","min","Date","now","nextForceLogoutBufferMs","setTimeout","refreshCookie","forceRefresh","request","post","headers","language","status","json","e","error","message","refreshCookieAsync","skipSetUser","logOut","collection","_","refreshPermissions","locale","params","stringify","addQueryPrefix","get","Error","fetchFullUser","credentials","fetchFullUserEvent","fetchUserOnMount","prefillOnly","_jsx","value","setUser","useAuth"],"sources":["../../../src/providers/Auth/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, SanitizedPermissions, TypedUser } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { useConfig } from '../Config/index.js'\nimport { useRouteTransition } from '../RouteTransition/index.js'\n\nexport type UserWithToken<T = ClientUser> = {\n /** seconds until expiration */\n exp: number\n token: string\n user: T\n}\n\nexport type AuthContext<T = ClientUser> = {\n fetchFullUser: () => Promise<null | TypedUser>\n logOut: () => Promise<boolean>\n /**\n * These are the permissions for the current user from a global scope.\n *\n * When checking for permissions on document specific level, use the `useDocumentInfo` hook instead.\n *\n * @example\n *\n * ```tsx\n * import { useAuth } from 'payload/ui'\n *\n * const MyComponent: React.FC = () => {\n * const { permissions } = useAuth()\n *\n * if (permissions?.collections?.myCollection?.create) {\n * // user can create documents in 'myCollection'\n * }\n *\n * return null\n * }\n * ```\n *\n * with useDocumentInfo:\n *\n * ```tsx\n * import { useDocumentInfo } from 'payload/ui'\n *\n * const MyComponent: React.FC = () => {\n * const { docPermissions } = useDocumentInfo()\n * if (docPermissions?.create) {\n * // user can create this document\n * }\n * return null\n * } ```\n */\n permissions?: SanitizedPermissions\n refreshCookie: (forceRefresh?: boolean) => void\n refreshCookieAsync: () => Promise<ClientUser>\n refreshPermissions: () => Promise<void>\n setPermissions: (permissions: SanitizedPermissions) => void\n setUser: (user: null | UserWithToken<T>) => void\n strategy?: string\n token?: string\n tokenExpirationMs?: number\n user?: null | T\n}\n\nconst Context = createContext({} as AuthContext)\n\nconst maxTimeoutMs = 2147483647\n\ntype Props = {\n children: React.ReactNode\n permissions?: SanitizedPermissions\n user?: ClientUser | null\n}\n\nexport function AuthProvider({\n children,\n permissions: initialPermissions,\n user: initialUser,\n}: Props) {\n const pathname = usePathname()\n const router = useRouter()\n\n const { config } = useConfig()\n\n const {\n admin: {\n autoLogin,\n autoRefresh,\n routes: { inactivity: logoutInactivityRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n } = config\n\n const { i18n } = useTranslation()\n const { closeAllModals, openModal } = useModal()\n const { startRouteTransition } = useRouteTransition()\n\n const [user, setUserInMemory] = useState<ClientUser | null>(initialUser)\n const [tokenInMemory, setTokenInMemory] = useState<string>()\n const [tokenExpirationMs, setTokenExpirationMs] = useState<number>()\n const [permissions, setPermissions] = useState<SanitizedPermissions>(initialPermissions)\n const [forceLogoutBufferMs, setForceLogoutBufferMs] = useState<number>(120_000)\n const [fetchedUserOnMount, setFetchedUserOnMount] = useState(false)\n\n const refreshTokenTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n const reminderTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n const forceLogOutTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n\n const id = user?.id\n\n const redirectToInactivityRoute = useCallback(() => {\n startRouteTransition(() =>\n router.replace(\n formatAdminURL({\n adminRoute,\n path: `${logoutInactivityRoute}${window.location.pathname.startsWith(adminRoute) ? `?redirect=${encodeURIComponent(window.location.pathname)}` : ''}`,\n }),\n ),\n )\n\n closeAllModals()\n }, [router, adminRoute, logoutInactivityRoute, closeAllModals, startRouteTransition])\n\n const revokeTokenAndExpire = useCallback(() => {\n setUserInMemory(null)\n setTokenInMemory(undefined)\n setTokenExpirationMs(undefined)\n clearTimeout(refreshTokenTimeoutRef.current)\n }, [])\n\n // Handler for reminder timeout - uses useEffectEvent to capture latest autoRefresh value\n const handleReminderTimeout = useEffectEvent(() => {\n if (autoRefresh) {\n refreshCookieEvent()\n } else {\n openModal(stayLoggedInModalSlug)\n }\n })\n\n const setNewUser = useCallback(\n (userResponse: null | UserWithToken) => {\n clearTimeout(reminderTimeoutRef.current)\n clearTimeout(forceLogOutTimeoutRef.current)\n\n if (userResponse?.user) {\n setUserInMemory(userResponse.user)\n setTokenInMemory(userResponse.token)\n setTokenExpirationMs(userResponse.exp * 1000)\n\n const expiresInMs = Math.max(\n 0,\n Math.min((userResponse.exp ?? 0) * 1000 - Date.now(), maxTimeoutMs),\n )\n\n if (expiresInMs) {\n const nextForceLogoutBufferMs = Math.min(60_000, expiresInMs / 2)\n setForceLogoutBufferMs(nextForceLogoutBufferMs)\n\n reminderTimeoutRef.current = setTimeout(\n handleReminderTimeout,\n Math.max(expiresInMs - nextForceLogoutBufferMs, 0),\n )\n\n forceLogOutTimeoutRef.current = setTimeout(() => {\n revokeTokenAndExpire()\n redirectToInactivityRoute()\n }, expiresInMs)\n }\n } else {\n revokeTokenAndExpire()\n }\n },\n [redirectToInactivityRoute, revokeTokenAndExpire],\n )\n\n const refreshCookie = useCallback(\n (forceRefresh?: boolean) => {\n if (!id) {\n return\n }\n\n const expiresInMs = Math.max(0, (tokenExpirationMs ?? 0) - Date.now())\n\n if (forceRefresh || (tokenExpirationMs && expiresInMs < forceLogoutBufferMs * 2)) {\n clearTimeout(refreshTokenTimeoutRef.current)\n refreshTokenTimeoutRef.current = setTimeout(async () => {\n try {\n const request = await requests.post(\n `${serverURL}${apiRoute}/${userSlug}/refresh-token?refresh`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n setNewUser(json)\n } else {\n setNewUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(e.message)\n }\n }, 1000)\n }\n },\n [\n apiRoute,\n i18n.language,\n redirectToInactivityRoute,\n serverURL,\n setNewUser,\n tokenExpirationMs,\n userSlug,\n forceLogoutBufferMs,\n id,\n ],\n )\n\n const refreshCookieAsync = useCallback(\n async (skipSetUser?: boolean): Promise<ClientUser> => {\n try {\n const request = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n if (!skipSetUser) {\n setNewUser(json)\n }\n return json.user\n }\n\n if (user) {\n setNewUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(`Refreshing token failed: ${e.message}`)\n }\n return null\n },\n [apiRoute, i18n.language, redirectToInactivityRoute, serverURL, setNewUser, userSlug, user],\n )\n\n const logOut = useCallback(async () => {\n try {\n if (user && user.collection) {\n setNewUser(null)\n await requests.post(`${serverURL}${apiRoute}/${user.collection}/logout`)\n }\n } catch (_) {\n // fail silently and log the user out in state\n }\n\n return true\n }, [apiRoute, serverURL, setNewUser, user])\n\n const refreshPermissions = useCallback(\n async ({ locale }: { locale?: string } = {}) => {\n const params = qs.stringify(\n {\n locale,\n },\n {\n addQueryPrefix: true,\n },\n )\n\n try {\n const request = await requests.get(`${serverURL}${apiRoute}/access${params}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: SanitizedPermissions = 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 },\n [serverURL, apiRoute, i18n],\n )\n\n const fetchFullUser = React.useCallback(async () => {\n try {\n const request = await requests.get(`${serverURL}${apiRoute}/${userSlug}/me`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n setNewUser(json)\n return json?.user || null\n }\n } catch (e) {\n toast.error(`Fetching user failed: ${e.message}`)\n }\n\n return null\n }, [serverURL, apiRoute, userSlug, i18n.language, setNewUser])\n\n const refreshCookieEvent = useEffectEvent(refreshCookie)\n useEffect(() => {\n // when location changes, refresh cookie\n refreshCookieEvent()\n }, [pathname])\n\n const fetchFullUserEvent = useEffectEvent(fetchFullUser)\n useEffect(() => {\n async function fetchUserOnMount() {\n await fetchFullUserEvent()\n setFetchedUserOnMount(true)\n }\n\n void fetchUserOnMount()\n }, [])\n\n useEffect(() => {\n if (!user && autoLogin && !autoLogin.prefillOnly) {\n void fetchFullUserEvent()\n }\n }, [user, autoLogin])\n\n useEffect(\n () => () => {\n // remove all timeouts on unmount\n clearTimeout(refreshTokenTimeoutRef.current)\n clearTimeout(reminderTimeoutRef.current)\n clearTimeout(forceLogOutTimeoutRef.current)\n },\n [],\n )\n\n if (!user && !fetchedUserOnMount) {\n return null\n }\n\n return (\n <Context\n value={{\n fetchFullUser,\n logOut,\n permissions,\n refreshCookie,\n refreshCookieAsync,\n refreshPermissions,\n setPermissions,\n setUser: setNewUser,\n token: tokenInMemory,\n tokenExpirationMs,\n user,\n }}\n >\n {children}\n </Context>\n )\n}\n\nexport const useAuth = <T = ClientUser,>(): AuthContext<T> => use(Context) as AuthContext<T>\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizeQuery.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/sanitizeQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAS,MAAM,SAAS,CAAA;AAE/C;;;;GAIG;AACH,eAAO,MAAM,aAAa,eAAgB,SAAS,KAAG,SA8BrD,CAAA"}
1
+ {"version":3,"file":"sanitizeQuery.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/sanitizeQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAS,MAAM,SAAS,CAAA;AAE/C;;;;GAIG;AACH,eAAO,MAAM,aAAa,eAAgB,SAAS,KAAG,SAmCrD,CAAA"}
@@ -10,7 +10,7 @@
10
10
  if (key === 'columns' && (value === '[]' || Array.isArray(sanitized[key]) && sanitized[key].length === 0)) {
11
11
  delete sanitized[key];
12
12
  }
13
- if (key === 'where' && typeof value === 'object' && !Object.keys(value).length) {
13
+ if (key === 'where' && typeof value === 'object' && value !== null && !Object.keys(value).length) {
14
14
  delete sanitized[key];
15
15
  }
16
16
  if ((key === 'limit' || key === 'page') && typeof value === 'string') {
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizeQuery.js","names":["sanitizeQuery","toSanitize","sanitized","Object","entries","forEach","key","value","Array","isArray","length","keys","parsed","parseInt","Number","isNaN","undefined"],"sources":["../../../src/providers/ListQuery/sanitizeQuery.ts"],"sourcesContent":["import type { ListQuery, Where } from 'payload'\n\n/**\n * Sanitize empty strings from the query, e.g. `?preset=`\n * This is how we determine whether to clear user preferences for certain params\n * Once cleared, they are no longer needed in the URL\n */\nexport const sanitizeQuery = (toSanitize: ListQuery): ListQuery => {\n const sanitized = { ...toSanitize }\n\n Object.entries(sanitized).forEach(([key, value]) => {\n if (\n key === 'columns' &&\n (value === '[]' || (Array.isArray(sanitized[key]) && sanitized[key].length === 0))\n ) {\n delete sanitized[key]\n }\n\n if (key === 'where' && typeof value === 'object' && !Object.keys(value as Where).length) {\n delete sanitized[key]\n }\n\n if ((key === 'limit' || key === 'page') && typeof value === 'string') {\n const parsed = parseInt(value, 10)\n sanitized[key] = Number.isNaN(parsed) ? undefined : parsed\n }\n\n if (key === 'page' && value === 0) {\n delete sanitized[key]\n }\n\n if (value === '') {\n delete sanitized[key]\n }\n })\n\n return sanitized\n}\n"],"mappings":"AAEA;;;;GAKA,OAAO,MAAMA,aAAA,GAAiBC,UAAA;EAC5B,MAAMC,SAAA,GAAY;IAAE,GAAGD;EAAW;EAElCE,MAAA,CAAOC,OAAO,CAACF,SAAA,EAAWG,OAAO,CAAC,CAAC,CAACC,GAAA,EAAKC,KAAA,CAAM;IAC7C,IACED,GAAA,KAAQ,cACPC,KAAA,KAAU,QAASC,KAAA,CAAMC,OAAO,CAACP,SAAS,CAACI,GAAA,CAAI,KAAKJ,SAAS,CAACI,GAAA,CAAI,CAACI,MAAM,KAAK,CAAC,GAChF;MACA,OAAOR,SAAS,CAACI,GAAA,CAAI;IACvB;IAEA,IAAIA,GAAA,KAAQ,WAAW,OAAOC,KAAA,KAAU,YAAY,CAACJ,MAAA,CAAOQ,IAAI,CAACJ,KAAA,EAAgBG,MAAM,EAAE;MACvF,OAAOR,SAAS,CAACI,GAAA,CAAI;IACvB;IAEA,IAAI,CAACA,GAAA,KAAQ,WAAWA,GAAA,KAAQ,MAAK,KAAM,OAAOC,KAAA,KAAU,UAAU;MACpE,MAAMK,MAAA,GAASC,QAAA,CAASN,KAAA,EAAO;MAC/BL,SAAS,CAACI,GAAA,CAAI,GAAGQ,MAAA,CAAOC,KAAK,CAACH,MAAA,IAAUI,SAAA,GAAYJ,MAAA;IACtD;IAEA,IAAIN,GAAA,KAAQ,UAAUC,KAAA,KAAU,GAAG;MACjC,OAAOL,SAAS,CAACI,GAAA,CAAI;IACvB;IAEA,IAAIC,KAAA,KAAU,IAAI;MAChB,OAAOL,SAAS,CAACI,GAAA,CAAI;IACvB;EACF;EAEA,OAAOJ,SAAA;AACT","ignoreList":[]}
1
+ {"version":3,"file":"sanitizeQuery.js","names":["sanitizeQuery","toSanitize","sanitized","Object","entries","forEach","key","value","Array","isArray","length","keys","parsed","parseInt","Number","isNaN","undefined"],"sources":["../../../src/providers/ListQuery/sanitizeQuery.ts"],"sourcesContent":["import type { ListQuery, Where } from 'payload'\n\n/**\n * Sanitize empty strings from the query, e.g. `?preset=`\n * This is how we determine whether to clear user preferences for certain params\n * Once cleared, they are no longer needed in the URL\n */\nexport const sanitizeQuery = (toSanitize: ListQuery): ListQuery => {\n const sanitized = { ...toSanitize }\n\n Object.entries(sanitized).forEach(([key, value]) => {\n if (\n key === 'columns' &&\n (value === '[]' || (Array.isArray(sanitized[key]) && sanitized[key].length === 0))\n ) {\n delete sanitized[key]\n }\n\n if (\n key === 'where' &&\n typeof value === 'object' &&\n value !== null &&\n !Object.keys(value as Where).length\n ) {\n delete sanitized[key]\n }\n\n if ((key === 'limit' || key === 'page') && typeof value === 'string') {\n const parsed = parseInt(value, 10)\n sanitized[key] = Number.isNaN(parsed) ? undefined : parsed\n }\n\n if (key === 'page' && value === 0) {\n delete sanitized[key]\n }\n\n if (value === '') {\n delete sanitized[key]\n }\n })\n\n return sanitized\n}\n"],"mappings":"AAEA;;;;GAKA,OAAO,MAAMA,aAAA,GAAiBC,UAAA;EAC5B,MAAMC,SAAA,GAAY;IAAE,GAAGD;EAAW;EAElCE,MAAA,CAAOC,OAAO,CAACF,SAAA,EAAWG,OAAO,CAAC,CAAC,CAACC,GAAA,EAAKC,KAAA,CAAM;IAC7C,IACED,GAAA,KAAQ,cACPC,KAAA,KAAU,QAASC,KAAA,CAAMC,OAAO,CAACP,SAAS,CAACI,GAAA,CAAI,KAAKJ,SAAS,CAACI,GAAA,CAAI,CAACI,MAAM,KAAK,CAAC,GAChF;MACA,OAAOR,SAAS,CAACI,GAAA,CAAI;IACvB;IAEA,IACEA,GAAA,KAAQ,WACR,OAAOC,KAAA,KAAU,YACjBA,KAAA,KAAU,QACV,CAACJ,MAAA,CAAOQ,IAAI,CAACJ,KAAA,EAAgBG,MAAM,EACnC;MACA,OAAOR,SAAS,CAACI,GAAA,CAAI;IACvB;IAEA,IAAI,CAACA,GAAA,KAAQ,WAAWA,GAAA,KAAQ,MAAK,KAAM,OAAOC,KAAA,KAAU,UAAU;MACpE,MAAMK,MAAA,GAASC,QAAA,CAASN,KAAA,EAAO;MAC/BL,SAAS,CAACI,GAAA,CAAI,GAAGQ,MAAA,CAAOC,KAAK,CAACH,MAAA,IAAUI,SAAA,GAAYJ,MAAA;IACtD;IAEA,IAAIN,GAAA,KAAQ,UAAUC,KAAA,KAAU,GAAG;MACjC,OAAOL,SAAS,CAACI,GAAA,CAAI;IACvB;IAEA,IAAIC,KAAA,KAAU,IAAI;MAChB,OAAOL,SAAS,CAACI,GAAA,CAAI;IACvB;EACF;EAEA,OAAOJ,SAAA;AACT","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Root/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACjF,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,MAAM,EACN,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACV,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAwB9C,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;IAC3C,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAA;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IAChC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAA;IAC1C,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAA;IAC7C,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,CAAA;IACjD,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuFxC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Root/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACjF,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,MAAM,EACN,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACV,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAyB9C,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;IAC3C,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAA;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IAChC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAA;IAC1C,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAA;IAC7C,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,CAAA;IACjD,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAwFxC,CAAA"}
@@ -6,6 +6,7 @@ import { DndContext, pointerWithin } from '@dnd-kit/core';
6
6
  import { ModalContainer, ModalProvider } from '@faceless-ui/modal';
7
7
  import { ScrollInfoProvider } from '@faceless-ui/scroll-info';
8
8
  import React from 'react';
9
+ import { CloseModalOnRouteChange } from '../../elements/CloseModalOnRouteChange/index.js';
9
10
  import { LoadingOverlayProvider } from '../../elements/LoadingOverlay/index.js';
10
11
  import { NavProvider } from '../../elements/Nav/context.js';
11
12
  import { StayLoggedInModal } from '../../elements/StayLoggedIn/index.js';
@@ -73,11 +74,11 @@ export const RootProvider = t0 => {
73
74
  },
74
75
  children: _jsx(ScrollInfoProvider, {
75
76
  children: _jsx(SearchParamsProvider, {
76
- children: _jsx(ModalProvider, {
77
+ children: _jsxs(ModalProvider, {
77
78
  classPrefix: "payload",
78
79
  transTime: 0,
79
80
  zIndex: "var(--z-modal)",
80
- children: _jsxs(AuthProvider, {
81
+ children: [_jsx(CloseModalOnRouteChange, {}), _jsxs(AuthProvider, {
81
82
  permissions,
82
83
  user,
83
84
  children: [_jsx(PreferencesProvider, {
@@ -106,7 +107,7 @@ export const RootProvider = t0 => {
106
107
  })
107
108
  })
108
109
  }), _jsx(ModalContainer, {}), _jsx(StayLoggedInModal, {})]
109
- })
110
+ })]
110
111
  })
111
112
  })
112
113
  })
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","DndContext","pointerWithin","ModalContainer","ModalProvider","ScrollInfoProvider","React","LoadingOverlayProvider","NavProvider","StayLoggedInModal","StepNavProvider","ClickOutsideProvider","WindowInfoProvider","AuthProvider","ClientFunctionProvider","ConfigProvider","DocumentEventsProvider","LocaleProvider","ParamsProvider","PreferencesProvider","RouteCache","RouteTransitionProvider","SearchParamsProvider","ServerFunctionsProvider","ThemeProvider","ToastContainer","TranslationProvider","UploadHandlersProvider","RootProvider","t0","$","children","config","dateFNSKey","fallbackLang","isNavOpen","languageCode","languageOptions","locale","permissions","serverFunction","switchLanguageServerAction","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 SanitizedPermissions,\n ServerFunctionClient,\n TypedUser,\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 { 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 { LocaleProvider } from '../Locale/index.js'\nimport { ParamsProvider } from '../Params/index.js'\nimport { PreferencesProvider } from '../Preferences/index.js'\nimport { RouteCache } from '../RouteCache/index.js'\nimport { RouteTransitionProvider } from '../RouteTransition/index.js'\nimport { SearchParamsProvider } from '../SearchParams/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 fallbackLang: I18nOptions['fallbackLanguage']\n readonly isNavOpen?: boolean\n readonly languageCode: string\n readonly languageOptions: LanguageOptions\n readonly locale?: Locale['code']\n readonly permissions: SanitizedPermissions\n readonly serverFunction: ServerFunctionClient\n readonly switchLanguageServerAction?: (lang: string) => Promise<void>\n readonly theme: Theme\n readonly translations: I18nClient['translations']\n readonly user: null | TypedUser\n}\n\nexport const RootProvider: React.FC<Props> = ({\n children,\n config,\n dateFNSKey,\n fallbackLang,\n isNavOpen,\n languageCode,\n languageOptions,\n locale,\n permissions,\n serverFunction,\n switchLanguageServerAction,\n theme,\n translations,\n user,\n}) => {\n const dndContextID = React.useId()\n\n return (\n <ClickOutsideProvider>\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 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 permissions={permissions} user={user}>\n <PreferencesProvider>\n <ThemeProvider theme={theme}>\n <ParamsProvider>\n <LocaleProvider locale={locale}>\n <StepNavProvider>\n <LoadingOverlayProvider>\n <DocumentEventsProvider>\n <NavProvider initialIsOpen={isNavOpen}>\n <UploadHandlersProvider>\n <DndContext\n collisionDetection={pointerWithin}\n id={dndContextID}\n >\n {children}\n </DndContext>\n </UploadHandlersProvider>\n </NavProvider>\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 </ConfigProvider>\n </RouteCache>\n </RouteTransitionProvider>\n </ServerFunctionsProvider>\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","LoadingOverlayProvider","NavProvider","StayLoggedInModal","StepNavProvider","ClickOutsideProvider","WindowInfoProvider","AuthProvider","ClientFunctionProvider","ConfigProvider","DocumentEventsProvider","LocaleProvider","ParamsProvider","PreferencesProvider","RouteCache","RouteTransitionProvider","SearchParamsProvider","ServerFunctionsProvider","ThemeProvider","ToastContainer","TranslationProvider","UploadHandlersProvider","RootProvider","t0","$","children","config","dateFNSKey","fallbackLang","isNavOpen","languageCode","languageOptions","locale","permissions","serverFunction","switchLanguageServerAction","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 SanitizedPermissions,\n ServerFunctionClient,\n TypedUser,\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 { 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 { LocaleProvider } from '../Locale/index.js'\nimport { ParamsProvider } from '../Params/index.js'\nimport { PreferencesProvider } from '../Preferences/index.js'\nimport { RouteCache } from '../RouteCache/index.js'\nimport { RouteTransitionProvider } from '../RouteTransition/index.js'\nimport { SearchParamsProvider } from '../SearchParams/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 fallbackLang: I18nOptions['fallbackLanguage']\n readonly isNavOpen?: boolean\n readonly languageCode: string\n readonly languageOptions: LanguageOptions\n readonly locale?: Locale['code']\n readonly permissions: SanitizedPermissions\n readonly serverFunction: ServerFunctionClient\n readonly switchLanguageServerAction?: (lang: string) => Promise<void>\n readonly theme: Theme\n readonly translations: I18nClient['translations']\n readonly user: null | TypedUser\n}\n\nexport const RootProvider: React.FC<Props> = ({\n children,\n config,\n dateFNSKey,\n fallbackLang,\n isNavOpen,\n languageCode,\n languageOptions,\n locale,\n permissions,\n serverFunction,\n switchLanguageServerAction,\n theme,\n translations,\n user,\n}) => {\n const dndContextID = React.useId()\n\n return (\n <ClickOutsideProvider>\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 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 <CloseModalOnRouteChange />\n <AuthProvider permissions={permissions} user={user}>\n <PreferencesProvider>\n <ThemeProvider theme={theme}>\n <ParamsProvider>\n <LocaleProvider locale={locale}>\n <StepNavProvider>\n <LoadingOverlayProvider>\n <DocumentEventsProvider>\n <NavProvider initialIsOpen={isNavOpen}>\n <UploadHandlersProvider>\n <DndContext\n collisionDetection={pointerWithin}\n id={dndContextID}\n >\n {children}\n </DndContext>\n </UploadHandlersProvider>\n </NavProvider>\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 </ConfigProvider>\n </RouteCache>\n </RouteTransitionProvider>\n </ServerFunctionsProvider>\n <ToastContainer config={config} />\n </ClickOutsideProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}