@payloadcms/ui 4.0.0-internal.e55ccef → 4.0.0-internal.e7d4ebc

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 (98) hide show
  1. package/dist/css/spacing.css +1 -0
  2. package/dist/elements/ArrayAction/index.d.ts +2 -0
  3. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  4. package/dist/elements/ArrayAction/index.js +65 -24
  5. package/dist/elements/ArrayAction/index.js.map +1 -1
  6. package/dist/elements/BulkUpload/FileSidebar/index.css +4 -0
  7. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts +2 -2
  8. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
  9. package/dist/elements/BulkUpload/FormsManager/createFormData.js +4 -15
  10. package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
  11. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  12. package/dist/elements/BulkUpload/FormsManager/index.js +1 -1
  13. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  14. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts +8 -1
  15. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts.map +1 -1
  16. package/dist/elements/ClipboardAction/clipboardUtilities.js +40 -8
  17. package/dist/elements/ClipboardAction/clipboardUtilities.js.map +1 -1
  18. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js +120 -0
  19. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js.map +1 -0
  20. package/dist/elements/ClipboardAction/index.d.ts.map +1 -1
  21. package/dist/elements/ClipboardAction/index.js +17 -1
  22. package/dist/elements/ClipboardAction/index.js.map +1 -1
  23. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js +144 -0
  24. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js.map +1 -0
  25. package/dist/elements/ClipboardAction/types.d.ts +3 -0
  26. package/dist/elements/ClipboardAction/types.d.ts.map +1 -1
  27. package/dist/elements/ClipboardAction/types.js.map +1 -1
  28. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts +10 -0
  29. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts.map +1 -0
  30. package/dist/elements/ClipboardAction/useCanPasteClipboard.js +21 -0
  31. package/dist/elements/ClipboardAction/useCanPasteClipboard.js.map +1 -0
  32. package/dist/elements/FileManager/FilePreview/index.css +3 -3
  33. package/dist/elements/FileManager/index.css +36 -23
  34. package/dist/elements/FileManager/index.d.ts +1 -1
  35. package/dist/elements/FileManager/index.d.ts.map +1 -1
  36. package/dist/elements/FileManager/index.js +14 -4
  37. package/dist/elements/FileManager/index.js.map +1 -1
  38. package/dist/elements/MiniCarousel/index.css +39 -37
  39. package/dist/elements/ReactSelect/MultiValueLabel/index.css +2 -2
  40. package/dist/elements/RelationshipTable/index.css +0 -2
  41. package/dist/elements/RenderTitle/index.css +4 -0
  42. package/dist/elements/RenderTitle/index.d.ts.map +1 -1
  43. package/dist/elements/RenderTitle/index.js +18 -13
  44. package/dist/elements/RenderTitle/index.js.map +1 -1
  45. package/dist/elements/Table/index.css +1 -0
  46. package/dist/elements/Thumbnail/index.d.ts +1 -1
  47. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  48. package/dist/elements/Thumbnail/index.js.map +1 -1
  49. package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
  50. package/dist/elements/TimezonePicker/index.js +5 -1
  51. package/dist/elements/TimezonePicker/index.js.map +1 -1
  52. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  53. package/dist/fields/Array/ArrayRow.js +97 -160
  54. package/dist/fields/Array/ArrayRow.js.map +1 -1
  55. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  56. package/dist/fields/Blocks/BlockRow.js +134 -195
  57. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  58. package/dist/fields/Blocks/RowActions.d.ts +2 -0
  59. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  60. package/dist/fields/Blocks/RowActions.js +23 -20
  61. package/dist/fields/Blocks/RowActions.js.map +1 -1
  62. package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +1 -1
  63. package/dist/fields/Slug/index.d.ts.map +1 -1
  64. package/dist/fields/Slug/index.js +33 -24
  65. package/dist/fields/Slug/index.js.map +1 -1
  66. package/dist/fields/Upload/index.css +19 -4
  67. package/dist/forms/Form/index.d.ts.map +1 -1
  68. package/dist/forms/Form/index.js +3 -14
  69. package/dist/forms/Form/index.js.map +1 -1
  70. package/dist/forms/RenderFields/index.css +16 -2
  71. package/dist/providers/DocumentTitle/index.d.ts +1 -0
  72. package/dist/providers/DocumentTitle/index.d.ts.map +1 -1
  73. package/dist/providers/DocumentTitle/index.js +2 -0
  74. package/dist/providers/DocumentTitle/index.js.map +1 -1
  75. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  76. package/dist/providers/TableColumns/buildColumnState/index.js +1 -1
  77. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  78. package/dist/providers/TableColumns/buildColumnState/index.spec.js +40 -0
  79. package/dist/providers/TableColumns/buildColumnState/index.spec.js.map +1 -0
  80. package/dist/providers/UploadHandlers/index.d.ts +2 -7
  81. package/dist/providers/UploadHandlers/index.d.ts.map +1 -1
  82. package/dist/providers/UploadHandlers/index.js +102 -42
  83. package/dist/providers/UploadHandlers/index.js.map +1 -1
  84. package/dist/styles.css +2 -1
  85. package/dist/utilities/handleServerFunctions.d.ts +32 -8
  86. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  87. package/dist/utilities/handleServerFunctions.js +17 -37
  88. package/dist/utilities/handleServerFunctions.js.map +1 -1
  89. package/dist/utilities/serverFunctionRegistry.d.ts +12 -7
  90. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  91. package/dist/utilities/serverFunctionRegistry.js +25 -7
  92. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  93. package/dist/views/Edit/index.css +61 -53
  94. package/dist/views/Root/index.d.ts +12 -1
  95. package/dist/views/Root/index.d.ts.map +1 -1
  96. package/dist/views/Root/index.js +10 -3
  97. package/dist/views/Root/index.js.map +1 -1
  98. package/package.json +4 -4
@@ -1,11 +1,35 @@
1
- import type { ServerAdapter, ServerFunctionHandler } from 'payload';
1
+ import type { ImportMap, InitReqResult, SanitizedConfig, ServerFunction, ServerFunctionHandler } from 'payload';
2
+ type InitReq = (args: {
3
+ configPromise: Promise<SanitizedConfig> | SanitizedConfig;
4
+ importMap: ImportMap;
5
+ }) => Promise<InitReqResult>;
6
+ type CreateServerFunctionHandlerArgs = {
7
+ /**
8
+ * Framework-specific request initialization. The adapter closes over its own
9
+ * `ServerAdapter` / request source (Next.js: `initReq` + `nextServerAdapter`;
10
+ * TanStack Start: its `getRequest()`-based `initReq`).
11
+ */
12
+ initReq: InitReq;
13
+ /**
14
+ * Additional handlers registered alongside `sharedServerFunctions`. Reserved
15
+ * for adapter-specific functions; today both adapters run the shared set only.
16
+ */
17
+ serverFunctions?: Record<string, ServerFunction<any, any>>;
18
+ /**
19
+ * Post-processes each handler's return value before it goes over the wire.
20
+ * The TanStack Start adapter passes `serializeForRsc` to convert React
21
+ * elements into RSC handles; Next.js ships them natively and omits this.
22
+ */
23
+ transformResult?: (result: unknown) => Promise<unknown> | unknown;
24
+ };
2
25
  /**
3
- * Factory for the framework-agnostic `handleServerFunctions` entry point. The
4
- * caller (a framework adapter, e.g. `@payloadcms/next`) supplies the
5
- * `ServerAdapter` once, and the returned handler can be wired directly into
6
- * the framework's server-action dispatcher.
26
+ * Factory for the framework-agnostic `handleServerFunctions` entry point.
27
+ *
28
+ * All adapters dispatch from the shared registry (`sharedServerFunctions`) and
29
+ * differ only in the two injected hooks below — `initReq` and `transformResult`
30
+ * — so there is a single dispatch implementation and the handler sets cannot
31
+ * drift between frameworks.
7
32
  */
8
- export declare const createServerFunctionHandler: ({ serverAdapter, }: {
9
- serverAdapter: ServerAdapter;
10
- }) => ServerFunctionHandler;
33
+ export declare const createServerFunctionHandler: ({ initReq, serverFunctions, transformResult, }: CreateServerFunctionHandlerArgs) => ServerFunctionHandler;
34
+ export {};
11
35
  //# sourceMappingURL=handleServerFunctions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handleServerFunctions.d.ts","sourceRoot":"","sources":["../../src/utilities/handleServerFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EAEb,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAgChB;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,uBAErC;IACD,aAAa,EAAE,aAAa,CAAA;CAC7B,KAAG,qBAkCH,CAAA"}
1
+ {"version":3,"file":"handleServerFunctions.d.ts","sourceRoot":"","sources":["../../src/utilities/handleServerFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EACT,aAAa,EACb,eAAe,EACf,cAAc,EACd,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAIhB,KAAK,OAAO,GAAG,CAAC,IAAI,EAAE;IACpB,aAAa,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAA;IACzD,SAAS,EAAE,SAAS,CAAA;CACrB,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;AAE5B,KAAK,+BAA+B,GAAG;IACrC;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;IAC1D;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;CAClE,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,mDAIrC,+BAA+B,KAAG,qBAmCpC,CAAA"}
@@ -1,40 +1,21 @@
1
- import { renderTabHandler } from '../elements/Nav/SidebarTabs/renderTabServerFn.js';
2
- import { _internal_renderFieldHandler } from '../forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js';
3
- import { getDefaultLayoutHandler, renderWidgetHandler } from '../views/Dashboard/serverFunctions.js';
4
- import { renderDocumentHandler } from '../views/Document/handleServerFunction.js';
5
- import { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js';
6
- import { renderListHandler } from '../views/List/handleServerFunction.js';
7
- import { buildFormStateHandler } from './buildFormState.js';
8
- import { buildTableStateHandler } from './buildTableState.js';
9
- import { copyDataFromLocaleHandler } from './copyDataFromLocale.js';
10
- import { initReq } from './initReq.js';
11
- import { schedulePublishHandler } from './schedulePublishHandler.js';
12
- import { slugifyHandler } from './slugify.js';
13
- import { switchLanguageHandler } from './switchLanguageHandler.js';
14
- const baseServerFunctions = {
15
- 'copy-data-from-locale': copyDataFromLocaleHandler,
16
- 'form-state': buildFormStateHandler,
17
- 'get-default-layout': getDefaultLayoutHandler,
18
- 'render-document': renderDocumentHandler,
19
- 'render-document-slots': renderDocumentSlotsHandler,
20
- 'render-field': _internal_renderFieldHandler,
21
- 'render-list': renderListHandler,
22
- 'render-tab': renderTabHandler,
23
- 'render-widget': renderWidgetHandler,
24
- 'schedule-publish': schedulePublishHandler,
25
- slugify: slugifyHandler,
26
- 'switch-language': switchLanguageHandler,
27
- 'table-state': buildTableStateHandler
28
- };
1
+ import { sharedServerFunctions } from './serverFunctionRegistry.js';
29
2
  /**
30
- * Factory for the framework-agnostic `handleServerFunctions` entry point. The
31
- * caller (a framework adapter, e.g. `@payloadcms/next`) supplies the
32
- * `ServerAdapter` once, and the returned handler can be wired directly into
33
- * the framework's server-action dispatcher.
3
+ * Factory for the framework-agnostic `handleServerFunctions` entry point.
4
+ *
5
+ * All adapters dispatch from the shared registry (`sharedServerFunctions`) and
6
+ * differ only in the two injected hooks below — `initReq` and `transformResult`
7
+ * — so there is a single dispatch implementation and the handler sets cannot
8
+ * drift between frameworks.
34
9
  */
35
10
  export const createServerFunctionHandler = ({
36
- serverAdapter
11
+ initReq,
12
+ serverFunctions,
13
+ transformResult
37
14
  }) => {
15
+ const baseServerFunctions = serverFunctions ? {
16
+ ...sharedServerFunctions,
17
+ ...serverFunctions
18
+ } : sharedServerFunctions;
38
19
  return async args => {
39
20
  const {
40
21
  name: fnKey,
@@ -50,9 +31,7 @@ export const createServerFunctionHandler = ({
50
31
  req
51
32
  } = await initReq({
52
33
  configPromise,
53
- importMap,
54
- key: 'RootLayout',
55
- serverAdapter
34
+ importMap
56
35
  });
57
36
  const augmentedArgs = {
58
37
  ...fnArgs,
@@ -66,7 +45,8 @@ export const createServerFunctionHandler = ({
66
45
  if (!fn) {
67
46
  throw new Error(`Unknown Server Function: ${fnKey}`);
68
47
  }
69
- return fn(augmentedArgs);
48
+ const result = await fn(augmentedArgs);
49
+ return transformResult ? await transformResult(result) : result;
70
50
  };
71
51
  };
72
52
  //# sourceMappingURL=handleServerFunctions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handleServerFunctions.js","names":["renderTabHandler","_internal_renderFieldHandler","getDefaultLayoutHandler","renderWidgetHandler","renderDocumentHandler","renderDocumentSlotsHandler","renderListHandler","buildFormStateHandler","buildTableStateHandler","copyDataFromLocaleHandler","initReq","schedulePublishHandler","slugifyHandler","switchLanguageHandler","baseServerFunctions","slugify","createServerFunctionHandler","serverAdapter","args","name","fnKey","fnArgs","config","configPromise","importMap","serverFunctions","extraServerFunctions","cookies","locale","permissions","req","key","augmentedArgs","fn","Error"],"sources":["../../src/utilities/handleServerFunctions.ts"],"sourcesContent":["import type {\n DefaultServerFunctionArgs,\n ServerAdapter,\n ServerFunction,\n ServerFunctionHandler,\n} from 'payload'\n\nimport { renderTabHandler } from '../elements/Nav/SidebarTabs/renderTabServerFn.js'\nimport { _internal_renderFieldHandler } from '../forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js'\nimport { getDefaultLayoutHandler, renderWidgetHandler } from '../views/Dashboard/serverFunctions.js'\nimport { renderDocumentHandler } from '../views/Document/handleServerFunction.js'\nimport { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js'\nimport { renderListHandler } from '../views/List/handleServerFunction.js'\nimport { buildFormStateHandler } from './buildFormState.js'\nimport { buildTableStateHandler } from './buildTableState.js'\nimport { copyDataFromLocaleHandler } from './copyDataFromLocale.js'\nimport { initReq } from './initReq.js'\nimport { schedulePublishHandler } from './schedulePublishHandler.js'\nimport { slugifyHandler } from './slugify.js'\nimport { switchLanguageHandler } from './switchLanguageHandler.js'\n\nconst baseServerFunctions: Record<string, ServerFunction<any, any>> = {\n 'copy-data-from-locale': copyDataFromLocaleHandler,\n 'form-state': buildFormStateHandler,\n 'get-default-layout': getDefaultLayoutHandler,\n 'render-document': renderDocumentHandler,\n 'render-document-slots': renderDocumentSlotsHandler,\n 'render-field': _internal_renderFieldHandler,\n 'render-list': renderListHandler,\n 'render-tab': renderTabHandler,\n 'render-widget': renderWidgetHandler,\n 'schedule-publish': schedulePublishHandler,\n slugify: slugifyHandler,\n 'switch-language': switchLanguageHandler,\n 'table-state': buildTableStateHandler,\n}\n\n/**\n * Factory for the framework-agnostic `handleServerFunctions` entry point. The\n * caller (a framework adapter, e.g. `@payloadcms/next`) supplies the\n * `ServerAdapter` once, and the returned handler can be wired directly into\n * the framework's server-action dispatcher.\n */\nexport const createServerFunctionHandler = ({\n serverAdapter,\n}: {\n serverAdapter: ServerAdapter\n}): ServerFunctionHandler => {\n return async (args) => {\n const {\n name: fnKey,\n args: fnArgs,\n config: configPromise,\n importMap,\n serverFunctions: extraServerFunctions,\n } = args\n\n const { cookies, locale, permissions, req } = await initReq({\n configPromise,\n importMap,\n key: 'RootLayout',\n serverAdapter,\n })\n\n const augmentedArgs: DefaultServerFunctionArgs = {\n ...fnArgs,\n cookies,\n importMap,\n locale,\n permissions,\n req,\n }\n\n const fn = extraServerFunctions?.[fnKey] || baseServerFunctions[fnKey]\n\n if (!fn) {\n throw new Error(`Unknown Server Function: ${fnKey}`)\n }\n\n return fn(augmentedArgs)\n }\n}\n"],"mappings":"AAOA,SAASA,gBAAgB,QAAQ;AACjC,SAASC,4BAA4B,QAAQ;AAC7C,SAASC,uBAAuB,EAAEC,mBAAmB,QAAQ;AAC7D,SAASC,qBAAqB,QAAQ;AACtC,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,iBAAiB,QAAQ;AAClC,SAASC,qBAAqB,QAAQ;AACtC,SAASC,sBAAsB,QAAQ;AACvC,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,OAAO,QAAQ;AACxB,SAASC,sBAAsB,QAAQ;AACvC,SAASC,cAAc,QAAQ;AAC/B,SAASC,qBAAqB,QAAQ;AAEtC,MAAMC,mBAAA,GAAgE;EACpE,yBAAyBL,yBAAA;EACzB,cAAcF,qBAAA;EACd,sBAAsBL,uBAAA;EACtB,mBAAmBE,qBAAA;EACnB,yBAAyBC,0BAAA;EACzB,gBAAgBJ,4BAAA;EAChB,eAAeK,iBAAA;EACf,cAAcN,gBAAA;EACd,iBAAiBG,mBAAA;EACjB,oBAAoBQ,sBAAA;EACpBI,OAAA,EAASH,cAAA;EACT,mBAAmBC,qBAAA;EACnB,eAAeL;AACjB;AAEA;;;;;;AAMA,OAAO,MAAMQ,2BAAA,GAA8BA,CAAC;EAC1CC;AAAa,CAGd;EACC,OAAO,MAAOC,IAAA;IACZ,MAAM;MACJC,IAAA,EAAMC,KAAK;MACXF,IAAA,EAAMG,MAAM;MACZC,MAAA,EAAQC,aAAa;MACrBC,SAAS;MACTC,eAAA,EAAiBC;IAAoB,CACtC,GAAGR,IAAA;IAEJ,MAAM;MAAES,OAAO;MAAEC,MAAM;MAAEC,WAAW;MAAEC;IAAG,CAAE,GAAG,MAAMpB,OAAA,CAAQ;MAC1Da,aAAA;MACAC,SAAA;MACAO,GAAA,EAAK;MACLd;IACF;IAEA,MAAMe,aAAA,GAA2C;MAC/C,GAAGX,MAAM;MACTM,OAAA;MACAH,SAAA;MACAI,MAAA;MACAC,WAAA;MACAC;IACF;IAEA,MAAMG,EAAA,GAAKP,oBAAA,GAAuBN,KAAA,CAAM,IAAIN,mBAAmB,CAACM,KAAA,CAAM;IAEtE,IAAI,CAACa,EAAA,EAAI;MACP,MAAM,IAAIC,KAAA,CAAM,4BAA4Bd,KAAA,EAAO;IACrD;IAEA,OAAOa,EAAA,CAAGD,aAAA;EACZ;AACF","ignoreList":[]}
1
+ {"version":3,"file":"handleServerFunctions.js","names":["sharedServerFunctions","createServerFunctionHandler","initReq","serverFunctions","transformResult","baseServerFunctions","args","name","fnKey","fnArgs","config","configPromise","importMap","extraServerFunctions","cookies","locale","permissions","req","augmentedArgs","fn","Error","result"],"sources":["../../src/utilities/handleServerFunctions.ts"],"sourcesContent":["import type {\n DefaultServerFunctionArgs,\n ImportMap,\n InitReqResult,\n SanitizedConfig,\n ServerFunction,\n ServerFunctionHandler,\n} from 'payload'\n\nimport { sharedServerFunctions } from './serverFunctionRegistry.js'\n\ntype InitReq = (args: {\n configPromise: Promise<SanitizedConfig> | SanitizedConfig\n importMap: ImportMap\n}) => Promise<InitReqResult>\n\ntype CreateServerFunctionHandlerArgs = {\n /**\n * Framework-specific request initialization. The adapter closes over its own\n * `ServerAdapter` / request source (Next.js: `initReq` + `nextServerAdapter`;\n * TanStack Start: its `getRequest()`-based `initReq`).\n */\n initReq: InitReq\n /**\n * Additional handlers registered alongside `sharedServerFunctions`. Reserved\n * for adapter-specific functions; today both adapters run the shared set only.\n */\n serverFunctions?: Record<string, ServerFunction<any, any>>\n /**\n * Post-processes each handler's return value before it goes over the wire.\n * The TanStack Start adapter passes `serializeForRsc` to convert React\n * elements into RSC handles; Next.js ships them natively and omits this.\n */\n transformResult?: (result: unknown) => Promise<unknown> | unknown\n}\n\n/**\n * Factory for the framework-agnostic `handleServerFunctions` entry point.\n *\n * All adapters dispatch from the shared registry (`sharedServerFunctions`) and\n * differ only in the two injected hooks below — `initReq` and `transformResult`\n * so there is a single dispatch implementation and the handler sets cannot\n * drift between frameworks.\n */\nexport const createServerFunctionHandler = ({\n initReq,\n serverFunctions,\n transformResult,\n}: CreateServerFunctionHandlerArgs): ServerFunctionHandler => {\n const baseServerFunctions: Record<string, ServerFunction<any, any>> = serverFunctions\n ? { ...sharedServerFunctions, ...serverFunctions }\n : sharedServerFunctions\n\n return async (args) => {\n const {\n name: fnKey,\n args: fnArgs,\n config: configPromise,\n importMap,\n serverFunctions: extraServerFunctions,\n } = args\n\n const { cookies, locale, permissions, req } = await initReq({ configPromise, importMap })\n\n const augmentedArgs: DefaultServerFunctionArgs = {\n ...fnArgs,\n cookies,\n importMap,\n locale,\n permissions,\n req,\n }\n\n const fn = extraServerFunctions?.[fnKey] || baseServerFunctions[fnKey]\n\n if (!fn) {\n throw new Error(`Unknown Server Function: ${fnKey}`)\n }\n\n const result = await fn(augmentedArgs)\n\n return transformResult ? await transformResult(result) : result\n }\n}\n"],"mappings":"AASA,SAASA,qBAAqB,QAAQ;AA2BtC;;;;;;;;AAQA,OAAO,MAAMC,2BAAA,GAA8BA,CAAC;EAC1CC,OAAO;EACPC,eAAe;EACfC;AAAe,CACiB;EAChC,MAAMC,mBAAA,GAAgEF,eAAA,GAClE;IAAE,GAAGH,qBAAqB;IAAE,GAAGG;EAAgB,IAC/CH,qBAAA;EAEJ,OAAO,MAAOM,IAAA;IACZ,MAAM;MACJC,IAAA,EAAMC,KAAK;MACXF,IAAA,EAAMG,MAAM;MACZC,MAAA,EAAQC,aAAa;MACrBC,SAAS;MACTT,eAAA,EAAiBU;IAAoB,CACtC,GAAGP,IAAA;IAEJ,MAAM;MAAEQ,OAAO;MAAEC,MAAM;MAAEC,WAAW;MAAEC;IAAG,CAAE,GAAG,MAAMf,OAAA,CAAQ;MAAES,aAAA;MAAeC;IAAU;IAEvF,MAAMM,aAAA,GAA2C;MAC/C,GAAGT,MAAM;MACTK,OAAA;MACAF,SAAA;MACAG,MAAA;MACAC,WAAA;MACAC;IACF;IAEA,MAAME,EAAA,GAAKN,oBAAA,GAAuBL,KAAA,CAAM,IAAIH,mBAAmB,CAACG,KAAA,CAAM;IAEtE,IAAI,CAACW,EAAA,EAAI;MACP,MAAM,IAAIC,KAAA,CAAM,4BAA4BZ,KAAA,EAAO;IACrD;IAEA,MAAMa,MAAA,GAAS,MAAMF,EAAA,CAAGD,aAAA;IAExB,OAAOd,eAAA,GAAkB,MAAMA,eAAA,CAAgBiB,MAAA,IAAUA,MAAA;EAC3D;AACF","ignoreList":[]}
@@ -1,13 +1,18 @@
1
1
  import type { ServerFunction } from 'payload';
2
2
  /**
3
- * Framework-agnostic server function handlers shared across all adapters.
3
+ * The complete, framework-agnostic set of Payload server functions.
4
4
  *
5
- * Each handler returns a value that may contain React elements (e.g.
6
- * `customComponents` inside form state, the `Document` / `List` nodes returned
7
- * by render-document / render-list). Adapters are expected to ship those over
8
- * the wire as RSC payloads — Next.js's runtime does this natively, while the
9
- * TanStack Start adapter pipes the result through `serializeForRsc` to convert
10
- * elements into `renderServerComponent` handles.
5
+ * Every adapter (`@payloadcms/next`, `@payloadcms/tanstack-start`) dispatches
6
+ * from this single registry via `createServerFunctionHandler`, so a handler
7
+ * added here reaches every framework and the adapter lists can't drift.
8
+ *
9
+ * Handlers may return values containing React elements (e.g. `customComponents`
10
+ * inside form state, the `Document` / `List` nodes from render-document /
11
+ * render-list, the render-field / render-widget output). Adapters ship those
12
+ * over the wire as RSC payloads: Next.js does this natively, while the TanStack
13
+ * Start adapter passes a `transformResult` (`serializeForRsc`) to
14
+ * `createServerFunctionHandler` that converts elements into
15
+ * `renderServerComponent` handles.
11
16
  */
12
17
  export declare const sharedServerFunctions: Record<string, ServerFunction<any, any>>;
13
18
  //# sourceMappingURL=serverFunctionRegistry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serverFunctionRegistry.d.ts","sourceRoot":"","sources":["../../src/utilities/serverFunctionRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAS7C;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAO1E,CAAA"}
1
+ {"version":3,"file":"serverFunctionRegistry.d.ts","sourceRoot":"","sources":["../../src/utilities/serverFunctionRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAe7C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAc1E,CAAA"}
@@ -1,25 +1,43 @@
1
+ import { renderTabHandler } from '../elements/Nav/SidebarTabs/renderTabServerFn.js';
2
+ import { _internal_renderFieldHandler } from '../forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js';
3
+ import { getDefaultLayoutHandler, renderWidgetHandler } from '../views/Dashboard/serverFunctions.js';
1
4
  import { renderDocumentHandler } from '../views/Document/handleServerFunction.js';
5
+ import { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js';
2
6
  import { renderListHandler } from '../views/List/handleServerFunction.js';
3
7
  import { buildFormStateHandler } from './buildFormState.js';
4
8
  import { buildTableStateHandler } from './buildTableState.js';
5
9
  import { copyDataFromLocaleHandler } from './copyDataFromLocale.js';
6
10
  import { schedulePublishHandler } from './schedulePublishHandler.js';
11
+ import { slugifyHandler } from './slugify.js';
12
+ import { switchLanguageHandler } from './switchLanguageHandler.js';
7
13
  /**
8
- * Framework-agnostic server function handlers shared across all adapters.
14
+ * The complete, framework-agnostic set of Payload server functions.
9
15
  *
10
- * Each handler returns a value that may contain React elements (e.g.
11
- * `customComponents` inside form state, the `Document` / `List` nodes returned
12
- * by render-document / render-list). Adapters are expected to ship those over
13
- * the wire as RSC payloads — Next.js's runtime does this natively, while the
14
- * TanStack Start adapter pipes the result through `serializeForRsc` to convert
15
- * elements into `renderServerComponent` handles.
16
+ * Every adapter (`@payloadcms/next`, `@payloadcms/tanstack-start`) dispatches
17
+ * from this single registry via `createServerFunctionHandler`, so a handler
18
+ * added here reaches every framework and the adapter lists can't drift.
19
+ *
20
+ * Handlers may return values containing React elements (e.g. `customComponents`
21
+ * inside form state, the `Document` / `List` nodes from render-document /
22
+ * render-list, the render-field / render-widget output). Adapters ship those
23
+ * over the wire as RSC payloads: Next.js does this natively, while the TanStack
24
+ * Start adapter passes a `transformResult` (`serializeForRsc`) to
25
+ * `createServerFunctionHandler` that converts elements into
26
+ * `renderServerComponent` handles.
16
27
  */
17
28
  export const sharedServerFunctions = {
18
29
  'copy-data-from-locale': copyDataFromLocaleHandler,
19
30
  'form-state': buildFormStateHandler,
31
+ 'get-default-layout': getDefaultLayoutHandler,
20
32
  'render-document': renderDocumentHandler,
33
+ 'render-document-slots': renderDocumentSlotsHandler,
34
+ 'render-field': _internal_renderFieldHandler,
21
35
  'render-list': renderListHandler,
36
+ 'render-tab': renderTabHandler,
37
+ 'render-widget': renderWidgetHandler,
22
38
  'schedule-publish': schedulePublishHandler,
39
+ slugify: slugifyHandler,
40
+ 'switch-language': switchLanguageHandler,
23
41
  'table-state': buildTableStateHandler
24
42
  };
25
43
  //# sourceMappingURL=serverFunctionRegistry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serverFunctionRegistry.js","names":["renderDocumentHandler","renderListHandler","buildFormStateHandler","buildTableStateHandler","copyDataFromLocaleHandler","schedulePublishHandler","sharedServerFunctions"],"sources":["../../src/utilities/serverFunctionRegistry.ts"],"sourcesContent":["import type { ServerFunction } from 'payload'\n\nimport { renderDocumentHandler } from '../views/Document/handleServerFunction.js'\nimport { renderListHandler } from '../views/List/handleServerFunction.js'\nimport { buildFormStateHandler } from './buildFormState.js'\nimport { buildTableStateHandler } from './buildTableState.js'\nimport { copyDataFromLocaleHandler } from './copyDataFromLocale.js'\nimport { schedulePublishHandler } from './schedulePublishHandler.js'\n\n/**\n * Framework-agnostic server function handlers shared across all adapters.\n *\n * Each handler returns a value that may contain React elements (e.g.\n * `customComponents` inside form state, the `Document` / `List` nodes returned\n * by render-document / render-list). Adapters are expected to ship those over\n * the wire as RSC payloads Next.js's runtime does this natively, while the\n * TanStack Start adapter pipes the result through `serializeForRsc` to convert\n * elements into `renderServerComponent` handles.\n */\nexport const sharedServerFunctions: Record<string, ServerFunction<any, any>> = {\n 'copy-data-from-locale': copyDataFromLocaleHandler,\n 'form-state': buildFormStateHandler,\n 'render-document': renderDocumentHandler,\n 'render-list': renderListHandler,\n 'schedule-publish': schedulePublishHandler,\n 'table-state': buildTableStateHandler,\n}\n"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ;AACtC,SAASC,iBAAiB,QAAQ;AAClC,SAASC,qBAAqB,QAAQ;AACtC,SAASC,sBAAsB,QAAQ;AACvC,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,sBAAsB,QAAQ;AAEvC;;;;;;;;;;AAUA,OAAO,MAAMC,qBAAA,GAAkE;EAC7E,yBAAyBF,yBAAA;EACzB,cAAcF,qBAAA;EACd,mBAAmBF,qBAAA;EACnB,eAAeC,iBAAA;EACf,oBAAoBI,sBAAA;EACpB,eAAeF;AACjB","ignoreList":[]}
1
+ {"version":3,"file":"serverFunctionRegistry.js","names":["renderTabHandler","_internal_renderFieldHandler","getDefaultLayoutHandler","renderWidgetHandler","renderDocumentHandler","renderDocumentSlotsHandler","renderListHandler","buildFormStateHandler","buildTableStateHandler","copyDataFromLocaleHandler","schedulePublishHandler","slugifyHandler","switchLanguageHandler","sharedServerFunctions","slugify"],"sources":["../../src/utilities/serverFunctionRegistry.ts"],"sourcesContent":["import type { ServerFunction } from 'payload'\n\nimport { renderTabHandler } from '../elements/Nav/SidebarTabs/renderTabServerFn.js'\nimport { _internal_renderFieldHandler } from '../forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js'\nimport { getDefaultLayoutHandler, renderWidgetHandler } from '../views/Dashboard/serverFunctions.js'\nimport { renderDocumentHandler } from '../views/Document/handleServerFunction.js'\nimport { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js'\nimport { renderListHandler } from '../views/List/handleServerFunction.js'\nimport { buildFormStateHandler } from './buildFormState.js'\nimport { buildTableStateHandler } from './buildTableState.js'\nimport { copyDataFromLocaleHandler } from './copyDataFromLocale.js'\nimport { schedulePublishHandler } from './schedulePublishHandler.js'\nimport { slugifyHandler } from './slugify.js'\nimport { switchLanguageHandler } from './switchLanguageHandler.js'\n\n/**\n * The complete, framework-agnostic set of Payload server functions.\n *\n * Every adapter (`@payloadcms/next`, `@payloadcms/tanstack-start`) dispatches\n * from this single registry via `createServerFunctionHandler`, so a handler\n * added here reaches every framework and the adapter lists can't drift.\n *\n * Handlers may return values containing React elements (e.g. `customComponents`\n * inside form state, the `Document` / `List` nodes from render-document /\n * render-list, the render-field / render-widget output). Adapters ship those\n * over the wire as RSC payloads: Next.js does this natively, while the TanStack\n * Start adapter passes a `transformResult` (`serializeForRsc`) to\n * `createServerFunctionHandler` that converts elements into\n * `renderServerComponent` handles.\n */\nexport const sharedServerFunctions: Record<string, ServerFunction<any, any>> = {\n 'copy-data-from-locale': copyDataFromLocaleHandler,\n 'form-state': buildFormStateHandler,\n 'get-default-layout': getDefaultLayoutHandler,\n 'render-document': renderDocumentHandler,\n 'render-document-slots': renderDocumentSlotsHandler,\n 'render-field': _internal_renderFieldHandler,\n 'render-list': renderListHandler,\n 'render-tab': renderTabHandler,\n 'render-widget': renderWidgetHandler,\n 'schedule-publish': schedulePublishHandler,\n slugify: slugifyHandler,\n 'switch-language': switchLanguageHandler,\n 'table-state': buildTableStateHandler,\n}\n"],"mappings":"AAEA,SAASA,gBAAgB,QAAQ;AACjC,SAASC,4BAA4B,QAAQ;AAC7C,SAASC,uBAAuB,EAAEC,mBAAmB,QAAQ;AAC7D,SAASC,qBAAqB,QAAQ;AACtC,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,iBAAiB,QAAQ;AAClC,SAASC,qBAAqB,QAAQ;AACtC,SAASC,sBAAsB,QAAQ;AACvC,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,sBAAsB,QAAQ;AACvC,SAASC,cAAc,QAAQ;AAC/B,SAASC,qBAAqB,QAAQ;AAEtC;;;;;;;;;;;;;;;AAeA,OAAO,MAAMC,qBAAA,GAAkE;EAC7E,yBAAyBJ,yBAAA;EACzB,cAAcF,qBAAA;EACd,sBAAsBL,uBAAA;EACtB,mBAAmBE,qBAAA;EACnB,yBAAyBC,0BAAA;EACzB,gBAAgBJ,4BAAA;EAChB,eAAeK,iBAAA;EACf,cAAcN,gBAAA;EACd,iBAAiBG,mBAAA;EACjB,oBAAoBO,sBAAA;EACpBI,OAAA,EAASH,cAAA;EACT,mBAAmBC,qBAAA;EACnB,eAAeJ;AACjB","ignoreList":[]}
@@ -12,35 +12,32 @@
12
12
  }
13
13
 
14
14
  .collection-edit__main-wrapper--scroll-fields-only {
15
- height: calc(
16
- 100dvh - var(--app-header-height, 0px) - var(--doc-controls-height, 0px) -
17
- var(--doc-header-height, 0px)
18
- );
19
- overflow: hidden;
15
+ height: auto;
16
+ overflow: visible;
20
17
 
21
18
  .collection-edit__main {
22
- min-height: 0;
23
- overflow: hidden;
19
+ min-height: initial;
20
+ overflow: visible;
24
21
  }
25
22
 
26
23
  .document-fields {
27
- height: 100%;
28
- min-height: 0;
24
+ height: auto;
25
+ min-height: initial;
29
26
  }
30
27
 
31
28
  .document-fields--force-sidebar-wrap {
32
- overflow-y: auto;
33
- overscroll-behavior: contain;
34
- scrollbar-width: thin;
35
- scrollbar-color: var(--scrollbar-color) transparent;
29
+ overflow-y: visible;
30
+ overscroll-behavior: auto;
31
+ scrollbar-width: auto;
32
+ scrollbar-color: auto;
36
33
  }
37
34
 
38
35
  .document-fields:not(.document-fields--force-sidebar-wrap) .document-fields__main {
39
- min-height: 0;
40
- overflow-y: auto;
41
- overscroll-behavior: contain;
42
- scrollbar-width: thin;
43
- scrollbar-color: var(--scrollbar-color) transparent;
36
+ min-height: initial;
37
+ overflow-y: visible;
38
+ overscroll-behavior: auto;
39
+ scrollbar-width: auto;
40
+ scrollbar-color: auto;
44
41
  }
45
42
 
46
43
  .document-fields--force-sidebar-wrap .document-fields__main {
@@ -51,9 +48,9 @@
51
48
  }
52
49
 
53
50
  .document-fields__sidebar {
54
- overscroll-behavior: contain;
55
- scrollbar-width: thin;
56
- scrollbar-color: var(--scrollbar-color) transparent;
51
+ overscroll-behavior: auto;
52
+ scrollbar-width: auto;
53
+ scrollbar-color: auto;
57
54
  }
58
55
 
59
56
  .document-fields__sidebar-wrap {
@@ -63,8 +60,8 @@
63
60
  }
64
61
 
65
62
  .template-default__wrap:has(.collection-edit__main-wrapper--scroll-fields-only) {
66
- height: 100dvh;
67
- overflow: hidden;
63
+ height: auto;
64
+ overflow: visible;
68
65
  }
69
66
 
70
67
  .collection-edit__main {
@@ -76,12 +73,22 @@
76
73
  }
77
74
 
78
75
  .collection-edit__main-wrapper--has-upload-panel {
76
+ flex-direction: column-reverse;
77
+ gap: var(--spacer-5);
78
+
79
79
  .collection-edit__main {
80
80
  flex: 1;
81
81
  }
82
+
82
83
  .file-manager {
83
- flex: 2;
84
- border-inline-start: var(--stroke-width-small) solid var(--color-border);
84
+ order: 0;
85
+ /* Stacked — no vertical divider; the file manager's own bottom border separates it. */
86
+ border-inline-start: 0;
87
+ }
88
+
89
+ .document-fields {
90
+ flex: 0 0 auto;
91
+ width: 100%;
85
92
  }
86
93
 
87
94
  .collection-edit__main:not(:has(.field-type)) {
@@ -95,61 +102,62 @@
95
102
 
96
103
  /* Container query (not viewport) so the layout stacks based on the space actually available
97
104
  to the edit view — e.g. inside a narrow document drawer it uses the stacked mobile layout. */
98
- @container edit-main (max-width: 1024px) {
105
+ @container edit-main (min-width: 1024px) {
99
106
  .collection-edit__main-wrapper--scroll-fields-only {
100
- height: auto;
101
- overflow: visible;
107
+ height: calc(
108
+ 100dvh - var(--app-header-height, 0px) - var(--doc-controls-height, 0px) -
109
+ var(--doc-header-height, 0px)
110
+ );
111
+ overflow: hidden;
102
112
 
103
113
  .collection-edit__main {
104
- min-height: initial;
105
- overflow: visible;
114
+ min-height: 0;
115
+ overflow: hidden;
106
116
  }
107
117
 
108
118
  .document-fields {
109
- height: auto;
110
- min-height: initial;
119
+ height: 100%;
120
+ min-height: 0;
111
121
  }
112
122
 
113
123
  .document-fields--force-sidebar-wrap {
114
- overflow-y: visible;
115
- overscroll-behavior: auto;
116
- scrollbar-width: auto;
117
- scrollbar-color: auto;
124
+ overflow-y: auto;
125
+ overscroll-behavior: contain;
126
+ scrollbar-width: thin;
127
+ scrollbar-color: var(--scrollbar-color) transparent;
118
128
  }
119
129
 
120
130
  .document-fields:not(.document-fields--force-sidebar-wrap) .document-fields__main {
121
- min-height: initial;
122
- overflow-y: visible;
123
- overscroll-behavior: auto;
124
- scrollbar-width: auto;
125
- scrollbar-color: auto;
131
+ min-height: 0;
132
+ overflow-y: auto;
133
+ overscroll-behavior: contain;
134
+ scrollbar-width: thin;
135
+ scrollbar-color: var(--scrollbar-color) transparent;
126
136
  }
127
137
 
128
138
  .document-fields__sidebar {
129
- overscroll-behavior: auto;
130
- scrollbar-width: auto;
131
- scrollbar-color: auto;
139
+ overscroll-behavior: contain;
140
+ scrollbar-width: thin;
141
+ scrollbar-color: var(--scrollbar-color) transparent;
132
142
  }
133
143
  }
134
144
 
135
145
  .template-default__wrap:has(.collection-edit__main-wrapper--scroll-fields-only) {
136
- height: auto;
137
- overflow: visible;
146
+ height: 100dvh;
147
+ overflow: hidden;
138
148
  }
139
149
 
140
150
  .collection-edit__main-wrapper--has-upload-panel {
141
- flex-direction: column-reverse;
142
- gap: var(--spacer-5);
151
+ flex-direction: row;
152
+ gap: 0;
143
153
 
144
154
  .file-manager {
145
- order: 0;
146
- flex: 1 0 0;
147
- /* Stacked — no vertical divider; the file manager's own bottom border separates it. */
148
- border-inline-start: 0;
155
+ flex: 2;
156
+ border-inline-start: var(--stroke-width-small) solid var(--color-border);
149
157
  }
150
158
 
151
159
  .document-fields {
152
- flex: 0 0 auto;
160
+ flex: initial;
153
161
  width: 100%;
154
162
  }
155
163
  }
@@ -12,6 +12,17 @@ export type RenderRootArgs = {
12
12
  config: Promise<SanitizedConfig>;
13
13
  importMap: ImportMap;
14
14
  initReq: InitReqFn;
15
+ /**
16
+ * Optional React `key` applied to the rendered view (not the surrounding admin
17
+ * template/nav). Adapters whose router reconciles a single RSC payload in place
18
+ * across navigations (e.g. TanStack Start) pass a per-route key here so the
19
+ * *view* remounts on route change — resetting view-scoped client providers like
20
+ * `DocumentInfoProvider` that hold uncontrolled `useState` from the prior
21
+ * document — while the persistent nav/template reconciles in place (no flash).
22
+ * Left `undefined` by Next.js, whose App Router already remounts the page
23
+ * segment while its layout (nav) persists.
24
+ */
25
+ key?: string;
15
26
  /** Framework notFound implementation (e.g. next/navigation notFound). Called before req is available. */
16
27
  notFound: () => never;
17
28
  params: Promise<{
@@ -23,6 +34,6 @@ export type RenderRootArgs = {
23
34
  [key: string]: string | string[];
24
35
  }>;
25
36
  };
26
- export declare const renderRoot: ({ adminViews, config: configPromise, importMap, initReq, notFound, params: paramsPromise, redirect, searchParams: searchParamsPromise, }: RenderRootArgs) => Promise<React.JSX.Element>;
37
+ export declare const renderRoot: ({ adminViews, config: configPromise, importMap, initReq, key, notFound, params: paramsPromise, redirect, searchParams: searchParamsPromise, }: RenderRootArgs) => Promise<React.JSX.Element>;
27
38
  export {};
28
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Root/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAIhB,cAAc,EACd,SAAS,EACT,aAAa,EAEb,eAAe,EAEhB,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAgBzB,KAAK,SAAS,GAAG,CAAC,IAAI,EAAE;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAA;IACzD,SAAS,EAAE,SAAS,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;CACjD,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;AAE5B,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,gBAAgB,CAAA;IAC5B,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAChC,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,SAAS,CAAA;IAClB,yGAAyG;IACzG,QAAQ,EAAE,MAAM,KAAK,CAAA;IACrB,MAAM,EAAE,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;IACvC,yGAAyG;IACzG,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,CAAA;IAChC,YAAY,EAAE,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAC5D,CAAA;AAED,eAAO,MAAM,UAAU,6IASpB,cAAc,+BAqThB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Root/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAIhB,cAAc,EACd,SAAS,EACT,aAAa,EAEb,eAAe,EAEhB,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAgBzB,KAAK,SAAS,GAAG,CAAC,IAAI,EAAE;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAA;IACzD,SAAS,EAAE,SAAS,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;CACjD,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;AAE5B,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,gBAAgB,CAAA;IAC5B,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAChC,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,SAAS,CAAA;IAClB;;;;;;;;;OASG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,yGAAyG;IACzG,QAAQ,EAAE,MAAM,KAAK,CAAA;IACrB,MAAM,EAAE,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;IACvC,yGAAyG;IACzG,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,CAAA;IAChC,YAAY,EAAE,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAC5D,CAAA;AAED,eAAO,MAAM,UAAU,kJAUpB,cAAc,+BA0ThB,CAAA"}
@@ -22,6 +22,7 @@ export const renderRoot = async ({
22
22
  config: configPromise,
23
23
  importMap,
24
24
  initReq,
25
+ key,
25
26
  notFound,
26
27
  params: paramsPromise,
27
28
  redirect,
@@ -269,13 +270,19 @@ export const renderRoot = async ({
269
270
  viewActions
270
271
  }
271
272
  });
273
+ // Wrap the view in a keyed boundary so it remounts on route change while the
274
+ // surrounding template/nav reconciles in place. `key={undefined}` (Next.js) is
275
+ // a no-op, preserving prior behavior.
276
+ const KeyedView = /*#__PURE__*/_jsx(React.Fragment, {
277
+ children: RenderedView
278
+ }, key);
272
279
  return /*#__PURE__*/_jsxs(PageConfigProvider, {
273
280
  config: clientConfig,
274
281
  children: [!templateType && /*#__PURE__*/_jsx(React.Fragment, {
275
- children: RenderedView
282
+ children: KeyedView
276
283
  }), templateType === 'minimal' && /*#__PURE__*/_jsx(MinimalTemplate, {
277
284
  className: templateClassName,
278
- children: RenderedView
285
+ children: KeyedView
279
286
  }), templateType === 'default' && /*#__PURE__*/_jsx(DefaultTemplate, {
280
287
  collectionSlug: collectionConfig?.slug,
281
288
  docID: routeParams.id,
@@ -297,7 +304,7 @@ export const renderRoot = async ({
297
304
  collections: visibleEntities?.collections,
298
305
  globals: visibleEntities?.globals
299
306
  },
300
- children: RenderedView
307
+ children: KeyedView
301
308
  })]
302
309
  });
303
310
  };