payload-nested-docs-page-tree 1.2.4 → 1.4.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 (46) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +136 -47
  3. package/dist/components/PageTreeContext.d.ts +13 -1
  4. package/dist/components/PageTreeContext.js +11 -1
  5. package/dist/components/PageTreeContext.js.map +1 -1
  6. package/dist/components/PageTreeListView.client.d.ts +4 -5
  7. package/dist/components/PageTreeListView.client.js +668 -128
  8. package/dist/components/PageTreeListView.client.js.map +1 -1
  9. package/dist/components/PageTreeListView.module.css +90 -67
  10. package/dist/components/PageTreeListView.server.js +18 -28
  11. package/dist/components/PageTreeListView.server.js.map +1 -1
  12. package/dist/components/PageTreeTitleCell.js +80 -18
  13. package/dist/components/PageTreeTitleCell.js.map +1 -1
  14. package/dist/endpoints/createMovePageEndpoint.d.ts +2 -0
  15. package/dist/endpoints/createMovePageEndpoint.js +166 -123
  16. package/dist/endpoints/createMovePageEndpoint.js.map +1 -1
  17. package/dist/endpoints/createReorderPageEndpoint.d.ts +8 -0
  18. package/dist/endpoints/createReorderPageEndpoint.js +703 -0
  19. package/dist/endpoints/createReorderPageEndpoint.js.map +1 -0
  20. package/dist/endpoints/shared.d.ts +40 -0
  21. package/dist/endpoints/shared.js +93 -0
  22. package/dist/endpoints/shared.js.map +1 -0
  23. package/dist/exports/client.js.map +1 -1
  24. package/dist/exports/rsc.js.map +1 -1
  25. package/dist/index.js +105 -26
  26. package/dist/index.js.map +1 -1
  27. package/dist/types.d.ts +9 -2
  28. package/dist/types.js +0 -2
  29. package/dist/types.js.map +1 -1
  30. package/dist/utilities/badgeConfig.js.map +1 -1
  31. package/dist/utilities/diagnostics.d.ts +42 -0
  32. package/dist/utilities/diagnostics.js +83 -0
  33. package/dist/utilities/diagnostics.js.map +1 -0
  34. package/dist/utilities/dropTargets.d.ts +2 -2
  35. package/dist/utilities/dropTargets.js +9 -7
  36. package/dist/utilities/dropTargets.js.map +1 -1
  37. package/dist/utilities/pageTree.js +4 -6
  38. package/dist/utilities/pageTree.js.map +1 -1
  39. package/dist/utilities/pageTreeCollision.d.ts +6 -0
  40. package/dist/utilities/pageTreeCollision.js +39 -4
  41. package/dist/utilities/pageTreeCollision.js.map +1 -1
  42. package/dist/utilities/pageTreeConfig.js.map +1 -1
  43. package/dist/utilities/status.d.ts +1 -1
  44. package/dist/utilities/status.js +7 -3
  45. package/dist/utilities/status.js.map +1 -1
  46. package/package.json +13 -12
@@ -133,7 +133,7 @@ function normalizeSort(value) {
133
133
  return typeof value === 'string' && value.length > 0 ? value : undefined;
134
134
  }
135
135
  function getOrderableFieldName(collectionConfig) {
136
- return collectionConfig.orderable === true ? '_order' : undefined;
136
+ return collectionConfig.orderable === true ? '_order' : typeof collectionConfig.orderable === 'string' ? collectionConfig.orderable : undefined;
137
137
  }
138
138
  function getDefaultSort(collectionConfig) {
139
139
  return typeof collectionConfig.defaultSort === 'string' ? collectionConfig.defaultSort : undefined;
@@ -180,7 +180,7 @@ function getBaseFilterArgs(props, req, query, locale) {
180
180
  };
181
181
  }
182
182
  async function getDocsWithDisplayStatus(args) {
183
- const { collectionConfig, collectionSlug, docs, payload, req } = args;
183
+ const { collectionConfig, collectionSlug, docs, locale, payload, req, user } = args;
184
184
  if (!collectionConfig.versions?.drafts || docs.length === 0) {
185
185
  return docs;
186
186
  }
@@ -188,39 +188,27 @@ async function getDocsWithDisplayStatus(args) {
188
188
  if (docIDs.length === 0) {
189
189
  return docs;
190
190
  }
191
- // The badge needs to know whether each doc has *any* published version, not what the
192
- // main collection table currently holds. With autosave-enabled collections Payload
193
- // writes draft data to the main row, so a draft `_status` there does NOT mean there
194
- // is no published version — it just means the latest write was a draft. To match
195
- // Payload's own logic in @payloadcms/ui's Status component, query the versions table
196
- // directly and treat a doc as "changed" when a published version exists alongside a
197
- // newer draft.
198
- const publishedVersions = await payload.findVersions({
191
+ const currentResult = await payload.find({
199
192
  collection: collectionSlug,
200
193
  depth: 0,
201
- limit: 0,
202
- overrideAccess: true,
194
+ fallbackLocale: false,
195
+ locale,
203
196
  pagination: false,
204
197
  req,
198
+ select: {
199
+ _status: true,
200
+ id: true
201
+ },
202
+ user,
205
203
  where: {
206
- and: [
207
- {
208
- parent: {
209
- in: docIDs
210
- }
211
- },
212
- {
213
- 'version._status': {
214
- equals: 'published'
215
- }
216
- }
217
- ]
204
+ id: {
205
+ in: docIDs
206
+ }
218
207
  }
219
208
  });
220
- const publishedIDs = new Set(publishedVersions.docs.map((versionDoc)=>String(versionDoc.parent ?? '')));
221
209
  return withPageTreeDisplayStatuses({
222
- draftDocs: docs,
223
- publishedIDs
210
+ currentDocs: currentResult.docs,
211
+ draftDocs: docs
224
212
  });
225
213
  }
226
214
  async function getListClientConfig({ collectionSlug, i18n, payload, req, user }) {
@@ -300,8 +288,10 @@ export async function NestedDocsPageTreeListView(props) {
300
288
  collectionConfig: props.collectionConfig,
301
289
  collectionSlug: props.collectionSlug,
302
290
  docs: fullResult.docs,
291
+ locale,
303
292
  payload: props.payload,
304
- req
293
+ req,
294
+ user: props.user
305
295
  });
306
296
  const orderedDocs = buildPageTreeDocs(treeSourceDocs, {
307
297
  parentFieldSlug: pageTreeConfig.parentFieldSlug,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/PageTreeListView.server.tsx"],"sourcesContent":["import type {\r\n ColumnPreference,\r\n ListQuery,\r\n ListViewClientProps,\r\n PaginatedDocs,\r\n Params,\r\n} from 'payload'\r\n\r\nimport React from 'react'\r\nimport { getColumns, renderTable } from '@payloadcms/ui/rsc'\r\nimport { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'\r\nimport { applyLocaleFiltering, combineWhereConstraints, mergeListSearchAndWhere } from 'payload/shared'\r\n\r\nimport PageTreeListViewClient from './PageTreeListView.client.js'\r\nimport { buildPageTreeDocs } from '../utilities/pageTree.js'\r\nimport { getCollectionPageTreeConfig } from '../utilities/pageTreeConfig.js'\r\nimport { withPageTreeDisplayStatuses } from '../utilities/status.js'\r\nimport type { PageTreeSourceDoc } from '../types.js'\r\n\r\ntype ParsedQuery = Partial<ListQuery> & Record<string, unknown>\r\ntype ServerListViewProps = Record<string, any>\r\n\r\nfunction isNumericSegment(segment: string): boolean {\r\n return /^\\d+$/.test(segment)\r\n}\r\n\r\nfunction getKeySegments(key: string): string[] {\r\n const matches = key.match(/([^[\\]]+)/g)\r\n return matches ? matches.filter(Boolean) : [key]\r\n}\r\n\r\nfunction setNestedValue(target: Record<string, unknown>, key: string, value: string): void {\r\n const segments = getKeySegments(key)\r\n\r\n if (segments.length === 0) {\r\n return\r\n }\r\n\r\n let current: Record<string, unknown> | unknown[] = target\r\n\r\n for (let index = 0; index < segments.length; index += 1) {\r\n const segment = segments[index]\r\n const isLastSegment = index === segments.length - 1\r\n const nextSegment = segments[index + 1]\r\n const nextContainer: Record<string, unknown> | unknown[] = isNumericSegment(nextSegment ?? '')\r\n ? []\r\n : {}\r\n\r\n if (isLastSegment) {\r\n if (Array.isArray(current)) {\r\n const arrayIndex = Number(segment)\r\n current[arrayIndex] = value\r\n } else {\r\n const existingValue = current[segment]\r\n\r\n if (existingValue === undefined) {\r\n current[segment] = value\r\n } else if (Array.isArray(existingValue)) {\r\n existingValue.push(value)\r\n } else {\r\n current[segment] = [existingValue, value]\r\n }\r\n }\r\n\r\n return\r\n }\r\n\r\n if (Array.isArray(current)) {\r\n const arrayIndex = Number(segment)\r\n const existingValue = current[arrayIndex]\r\n\r\n if (\r\n typeof existingValue !== 'object' ||\r\n existingValue === null ||\r\n Array.isArray(existingValue) !== Array.isArray(nextContainer)\r\n ) {\r\n current[arrayIndex] = nextContainer\r\n }\r\n\r\n current = current[arrayIndex] as Record<string, unknown> | unknown[]\r\n continue\r\n }\r\n\r\n const existingValue = current[segment]\r\n\r\n if (\r\n typeof existingValue !== 'object' ||\r\n existingValue === null ||\r\n Array.isArray(existingValue) !== Array.isArray(nextContainer)\r\n ) {\r\n current[segment] = nextContainer\r\n }\r\n\r\n current = current[segment] as Record<string, unknown> | unknown[]\r\n }\r\n}\r\n\r\nfunction parseSearchParams(searchParams?: Params): ParsedQuery {\r\n const parsed: ParsedQuery = {}\r\n\r\n for (const [key, value] of Object.entries(searchParams ?? {})) {\r\n if (Array.isArray(value)) {\r\n for (const entry of value) {\r\n if (typeof entry === 'string') {\r\n setNestedValue(parsed, key, entry)\r\n }\r\n }\r\n } else if (typeof value === 'string') {\r\n setNestedValue(parsed, key, value)\r\n }\r\n }\r\n\r\n for (const key of ['columns', 'queryByGroup']) {\r\n if (typeof parsed[key] === 'string') {\r\n try {\r\n parsed[key] = JSON.parse(parsed[key] as string)\r\n } catch {\r\n // Leave invalid persisted values untouched and let Payload ignore them.\r\n }\r\n }\r\n }\r\n\r\n const sanitized: ParsedQuery = { ...parsed }\r\n\r\n for (const [key, value] of Object.entries(sanitized)) {\r\n if (\r\n key === 'columns' &&\r\n ((typeof value === 'string' && value === '[]') ||\r\n (Array.isArray(value) && value.length === 0))\r\n ) {\r\n delete sanitized[key]\r\n continue\r\n }\r\n\r\n if (\r\n key === 'where' &&\r\n typeof value === 'object' &&\r\n value !== null &&\r\n !Object.keys(value).length\r\n ) {\r\n delete sanitized[key]\r\n continue\r\n }\r\n\r\n if ((key === 'limit' || key === 'page') && typeof value === 'string') {\r\n const parsedValue = Number.parseInt(value, 10)\r\n sanitized[key] = Number.isNaN(parsedValue) ? undefined : parsedValue\r\n }\r\n\r\n if (key === 'page' && value === 0) {\r\n delete sanitized[key]\r\n continue\r\n }\r\n\r\n if (value === '') {\r\n delete sanitized[key]\r\n }\r\n }\r\n\r\n return sanitized\r\n}\r\n\r\nfunction getQueryValue<T>(incomingValue: T | undefined, fallbackValue: T): T {\r\n return incomingValue === undefined ? fallbackValue : incomingValue\r\n}\r\n\r\nfunction normalizeLimit(value: unknown, fallback: number): number {\r\n return typeof value === 'number' && value > 0 ? value : fallback\r\n}\r\n\r\nfunction normalizePage(value: unknown, fallback: number): number {\r\n return typeof value === 'number' && value > 0 ? value : fallback\r\n}\r\n\r\nfunction normalizeSearch(value: unknown): string {\r\n return typeof value === 'string' ? value : ''\r\n}\r\n\r\nfunction normalizeSort(value: unknown): string | undefined {\r\n if (Array.isArray(value)) {\r\n const sortValues = value.filter(\r\n (entry): entry is string => typeof entry === 'string' && entry.length > 0,\r\n )\r\n return sortValues.length > 0 ? sortValues.join(',') : undefined\r\n }\r\n\r\n return typeof value === 'string' && value.length > 0 ? value : undefined\r\n}\r\n\r\nfunction getOrderableFieldName(collectionConfig: ServerListViewProps['collectionConfig']) {\r\n return collectionConfig.orderable === true ? '_order' : undefined\r\n}\r\n\r\nfunction getDefaultSort(collectionConfig: ServerListViewProps['collectionConfig']) {\r\n return typeof collectionConfig.defaultSort === 'string' ? collectionConfig.defaultSort : undefined\r\n}\r\n\r\nfunction getEffectiveTreeSort(args: {\r\n defaultSort?: string\r\n orderableFieldName?: string\r\n sort?: string\r\n}): string | undefined {\r\n const { defaultSort, orderableFieldName, sort } = args\r\n\r\n if (sort) {\r\n return sort\r\n }\r\n\r\n if (\r\n orderableFieldName &&\r\n (defaultSort === orderableFieldName || defaultSort === `-${orderableFieldName}`)\r\n ) {\r\n return defaultSort\r\n }\r\n\r\n return undefined\r\n}\r\n\r\nfunction normalizeWhere(value: unknown): any {\r\n if (value && typeof value === 'object' && !Array.isArray(value)) {\r\n return value\r\n }\r\n\r\n return undefined\r\n}\r\n\r\nfunction getCurrentQuery(props: ServerListViewProps, fallbackLimit: number): ListQuery {\r\n const parsedSearchQuery = parseSearchParams(props.searchParams)\r\n const preferenceQuery = (props.listPreferences ?? {}) as Partial<ListQuery>\r\n const mergedQuery = {\r\n ...preferenceQuery,\r\n ...parsedSearchQuery,\r\n } as ParsedQuery\r\n\r\n return {\r\n ...mergedQuery,\r\n limit: normalizeLimit(\r\n getQueryValue(mergedQuery.limit as number | undefined, fallbackLimit),\r\n fallbackLimit,\r\n ),\r\n page: normalizePage(\r\n getQueryValue(mergedQuery.page as number | undefined, props.data.page),\r\n props.data.page,\r\n ),\r\n search: normalizeSearch(mergedQuery.search),\r\n sort: normalizeSort(mergedQuery.sort) ?? normalizeSort(preferenceQuery.sort) ?? undefined,\r\n where: normalizeWhere(mergedQuery.where),\r\n }\r\n}\r\n\r\nfunction getBaseFilterArgs(\r\n props: ServerListViewProps,\r\n req: any,\r\n query: ListQuery,\r\n locale?: string,\r\n) {\r\n return {\r\n limit: 0,\r\n locale,\r\n page: 1,\r\n req,\r\n sort:\r\n normalizeSort(query.sort) ??\r\n (typeof props.collectionConfig.defaultSort === 'string'\r\n ? props.collectionConfig.defaultSort\r\n : 'id'),\r\n }\r\n}\r\n\r\nasync function getDocsWithDisplayStatus(args: {\r\n collectionConfig: ServerListViewProps['collectionConfig']\r\n collectionSlug: string\r\n docs: PageTreeSourceDoc[]\r\n payload: any\r\n req: any\r\n}): Promise<PageTreeSourceDoc[]> {\r\n const { collectionConfig, collectionSlug, docs, payload, req } = args\r\n\r\n if (!collectionConfig.versions?.drafts || docs.length === 0) {\r\n return docs\r\n }\r\n\r\n const docIDs = docs\r\n .map((doc) => doc.id)\r\n .filter((id): id is number | string => typeof id === 'number' || typeof id === 'string')\r\n\r\n if (docIDs.length === 0) {\r\n return docs\r\n }\r\n\r\n // The badge needs to know whether each doc has *any* published version, not what the\r\n // main collection table currently holds. With autosave-enabled collections Payload\r\n // writes draft data to the main row, so a draft `_status` there does NOT mean there\r\n // is no published version — it just means the latest write was a draft. To match\r\n // Payload's own logic in @payloadcms/ui's Status component, query the versions table\r\n // directly and treat a doc as \"changed\" when a published version exists alongside a\r\n // newer draft.\r\n const publishedVersions = await payload.findVersions({\r\n collection: collectionSlug,\r\n depth: 0,\r\n limit: 0,\r\n overrideAccess: true,\r\n pagination: false,\r\n req,\r\n where: {\r\n and: [\r\n { parent: { in: docIDs } },\r\n { 'version._status': { equals: 'published' } },\r\n ],\r\n },\r\n } as never)\r\n const publishedIDs = new Set(\r\n (publishedVersions.docs as Array<{ parent?: number | string }>).map((versionDoc) =>\r\n String(versionDoc.parent ?? ''),\r\n ),\r\n )\r\n\r\n return withPageTreeDisplayStatuses({\r\n draftDocs: docs,\r\n publishedIDs,\r\n })\r\n}\r\n\r\nasync function getListClientConfig({\r\n collectionSlug,\r\n i18n,\r\n payload,\r\n req,\r\n user,\r\n}: {\r\n collectionSlug: string\r\n i18n: unknown\r\n payload: any\r\n req: any\r\n user: unknown\r\n}): Promise<{\r\n clientCollectionConfig: any\r\n clientConfig: any\r\n}> {\r\n const clientConfig = getClientConfig({\r\n config: payload.config,\r\n i18n: i18n as never,\r\n importMap: payload.importMap,\r\n user: (user ?? true) as never,\r\n } as never)\r\n\r\n await applyLocaleFiltering({\r\n clientConfig,\r\n config: payload.config,\r\n req,\r\n } as never)\r\n\r\n const clientCollectionConfig = clientConfig.collections.find(\r\n (collection) => collection.slug === collectionSlug,\r\n )\r\n\r\n if (!clientCollectionConfig) {\r\n throw new Error(`Could not resolve client collection config for \"${collectionSlug}\"`)\r\n }\r\n\r\n return {\r\n clientCollectionConfig,\r\n clientConfig,\r\n }\r\n}\r\n\r\nexport async function NestedDocsPageTreeListView(props: ServerListViewProps) {\r\n const pageTreeConfig = getCollectionPageTreeConfig(props.collectionConfig)\r\n\r\n if (!pageTreeConfig) {\r\n throw new Error(`Could not resolve page tree config for \"${props.collectionSlug}\"`)\r\n }\r\n\r\n if (typeof props.collectionConfig.admin.useAsTitle !== 'string') {\r\n throw new Error(`Collection \"${props.collectionSlug}\" must define admin.useAsTitle`)\r\n }\r\n\r\n const query = getCurrentQuery(props, pageTreeConfig.defaultLimit)\r\n const orderableFieldName = getOrderableFieldName(props.collectionConfig)\r\n const defaultSort = getDefaultSort(props.collectionConfig)\r\n const effectiveSort = getEffectiveTreeSort({\r\n defaultSort,\r\n orderableFieldName,\r\n sort: normalizeSort(query.sort),\r\n })\r\n const effectiveQuery = {\r\n ...query,\r\n sort: effectiveSort,\r\n }\r\n const locale = props.locale?.code\r\n const req = {\r\n i18n: props.i18n,\r\n locale,\r\n payload: props.payload,\r\n query: effectiveQuery,\r\n user: props.user,\r\n }\r\n\r\n const baseFilter =\r\n props.collectionConfig.admin?.baseFilter ?? props.collectionConfig.admin?.baseListFilter\r\n const baseFilterConstraint = baseFilter\r\n ? await baseFilter(getBaseFilterArgs(props, req, query, locale))\r\n : undefined\r\n const mergedWhere = combineWhereConstraints([\r\n mergeListSearchAndWhere({\r\n collectionConfig: props.collectionConfig,\r\n search: normalizeSearch(query.search),\r\n where: normalizeWhere(query.where),\r\n } as never),\r\n baseFilterConstraint ?? undefined,\r\n ])\r\n const where = Object.keys(mergedWhere).length > 0 ? mergedWhere : undefined\r\n\r\n const fullResult = await props.payload.find({\r\n collection: props.collectionSlug,\r\n depth: 0,\r\n draft: props.collectionConfig.versions?.drafts ? true : undefined,\r\n fallbackLocale: false,\r\n includeLockStatus: true,\r\n locale,\r\n pagination: false,\r\n req,\r\n sort:\r\n normalizeSort(query.sort) ??\r\n defaultSort,\r\n user: props.user,\r\n where,\r\n } as never)\r\n const treeSourceDocs = await getDocsWithDisplayStatus({\r\n collectionConfig: props.collectionConfig,\r\n collectionSlug: props.collectionSlug,\r\n docs: fullResult.docs as unknown as PageTreeSourceDoc[],\r\n payload: props.payload,\r\n req,\r\n })\r\n\r\n const orderedDocs = buildPageTreeDocs(treeSourceDocs, {\r\n parentFieldSlug: pageTreeConfig.parentFieldSlug,\r\n sort: effectiveSort,\r\n })\r\n const orderedData: PaginatedDocs = {\r\n docs: orderedDocs,\r\n hasNextPage: false,\r\n hasPrevPage: false,\r\n limit: normalizeLimit(query.limit, pageTreeConfig.defaultLimit),\r\n nextPage: null,\r\n page: 1,\r\n pagingCounter: orderedDocs.length > 0 ? 1 : 0,\r\n prevPage: null,\r\n totalDocs: orderedDocs.length,\r\n totalPages: 1,\r\n }\r\n const { clientCollectionConfig, clientConfig } = await getListClientConfig({\r\n collectionSlug: props.collectionSlug,\r\n i18n: props.i18n,\r\n payload: props.payload,\r\n req,\r\n user: props.user,\r\n })\r\n const columnPreferences: ColumnPreference[] = (props.columnState as Array<{\r\n accessor: string\r\n active: boolean\r\n }>).map(({ accessor, active }) => ({\r\n accessor,\r\n active: accessor === props.collectionConfig.admin.useAsTitle ? true : active,\r\n }))\r\n const columns = getColumns({\r\n clientConfig,\r\n collectionConfig: clientCollectionConfig,\r\n collectionSlug: props.collectionSlug,\r\n columns: columnPreferences,\r\n i18n: props.i18n,\r\n permissions: props.permissions,\r\n } as never)\r\n const fieldPermissions = props.permissions?.collections?.[props.collectionSlug]?.fields ?? true\r\n const renderedTable = await renderTable({\r\n clientCollectionConfig,\r\n clientConfig,\r\n collectionConfig: props.collectionConfig,\r\n columns,\r\n data: orderedData,\r\n enableRowSelections: Boolean(props.enableRowSelections),\r\n fieldPermissions,\r\n i18n: props.i18n,\r\n orderableFieldName: orderableFieldName ?? '',\r\n payload: props.payload,\r\n query: effectiveQuery,\r\n req,\r\n tableAppearance: 'default',\r\n useAsTitle: props.collectionConfig.admin.useAsTitle,\r\n viewType: props.viewType,\r\n } as never)\r\n const clientProps: Omit<ListViewClientProps, 'Table' | 'columnState'> = {\r\n AfterList: props.AfterList,\r\n AfterListTable: props.AfterListTable,\r\n BeforeList: props.BeforeList,\r\n BeforeListTable: props.BeforeListTable,\r\n Description: props.Description,\r\n beforeActions: props.beforeActions,\r\n collectionSlug: props.collectionSlug,\r\n disableBulkDelete: props.disableBulkDelete,\r\n disableBulkEdit: props.disableBulkEdit,\r\n disableQueryPresets: props.disableQueryPresets,\r\n enableRowSelections: props.enableRowSelections,\r\n hasCreatePermission: props.hasCreatePermission,\r\n hasDeletePermission: props.hasDeletePermission,\r\n hasTrashPermission: props.hasTrashPermission,\r\n listMenuItems: props.listMenuItems,\r\n listPreferences: props.listPreferences,\r\n newDocumentURL: props.newDocumentURL,\r\n preferenceKey: props.preferenceKey,\r\n queryPreset: props.queryPreset,\r\n queryPresetPermissions: props.queryPresetPermissions,\r\n renderedFilters: props.renderedFilters,\r\n resolvedFilterOptions: props.resolvedFilterOptions,\r\n viewType: props.viewType,\r\n }\r\n const canMoveDocs = Boolean(props.permissions?.collections?.[props.collectionSlug]?.update)\r\n\r\n return (\r\n <PageTreeListViewClient\r\n {...clientProps}\r\n allDocs={orderedDocs}\r\n badgeConfig={pageTreeConfig.badges}\r\n canMoveDocs={canMoveDocs}\r\n columnState={renderedTable.columnState}\r\n homeIndicatorEnabled={pageTreeConfig.homeIndicator.enabled}\r\n orderableFieldName={orderableFieldName}\r\n parentFieldSlug={pageTreeConfig.parentFieldSlug}\r\n query={effectiveQuery}\r\n sourceDocs={treeSourceDocs}\r\n useAsTitle={props.collectionConfig.admin.useAsTitle}\r\n />\r\n )\r\n}\r\n\r\nexport default NestedDocsPageTreeListView\r\n"],"names":["React","getColumns","renderTable","getClientConfig","applyLocaleFiltering","combineWhereConstraints","mergeListSearchAndWhere","PageTreeListViewClient","buildPageTreeDocs","getCollectionPageTreeConfig","withPageTreeDisplayStatuses","isNumericSegment","segment","test","getKeySegments","key","matches","match","filter","Boolean","setNestedValue","target","value","segments","length","current","index","isLastSegment","nextSegment","nextContainer","Array","isArray","arrayIndex","Number","existingValue","undefined","push","parseSearchParams","searchParams","parsed","Object","entries","entry","JSON","parse","sanitized","keys","parsedValue","parseInt","isNaN","getQueryValue","incomingValue","fallbackValue","normalizeLimit","fallback","normalizePage","normalizeSearch","normalizeSort","sortValues","join","getOrderableFieldName","collectionConfig","orderable","getDefaultSort","defaultSort","getEffectiveTreeSort","args","orderableFieldName","sort","normalizeWhere","getCurrentQuery","props","fallbackLimit","parsedSearchQuery","preferenceQuery","listPreferences","mergedQuery","limit","page","data","search","where","getBaseFilterArgs","req","query","locale","getDocsWithDisplayStatus","collectionSlug","docs","payload","versions","drafts","docIDs","map","doc","id","publishedVersions","findVersions","collection","depth","overrideAccess","pagination","and","parent","in","equals","publishedIDs","Set","versionDoc","String","draftDocs","getListClientConfig","i18n","user","clientConfig","config","importMap","clientCollectionConfig","collections","find","slug","Error","NestedDocsPageTreeListView","pageTreeConfig","admin","useAsTitle","defaultLimit","effectiveSort","effectiveQuery","code","baseFilter","baseListFilter","baseFilterConstraint","mergedWhere","fullResult","draft","fallbackLocale","includeLockStatus","treeSourceDocs","orderedDocs","parentFieldSlug","orderedData","hasNextPage","hasPrevPage","nextPage","pagingCounter","prevPage","totalDocs","totalPages","columnPreferences","columnState","accessor","active","columns","permissions","fieldPermissions","fields","renderedTable","enableRowSelections","tableAppearance","viewType","clientProps","AfterList","AfterListTable","BeforeList","BeforeListTable","Description","beforeActions","disableBulkDelete","disableBulkEdit","disableQueryPresets","hasCreatePermission","hasDeletePermission","hasTrashPermission","listMenuItems","newDocumentURL","preferenceKey","queryPreset","queryPresetPermissions","renderedFilters","resolvedFilterOptions","canMoveDocs","update","allDocs","badgeConfig","badges","homeIndicatorEnabled","homeIndicator","enabled","sourceDocs"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/components/PageTreeListView.server.tsx"],"sourcesContent":["import type {\r\n ColumnPreference,\r\n ListQuery,\r\n ListViewClientProps,\r\n PaginatedDocs,\r\n Params,\r\n} from 'payload'\r\n\r\nimport React from 'react'\r\nimport { getColumns, renderTable } from '@payloadcms/ui/rsc'\r\nimport { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'\r\nimport { applyLocaleFiltering, combineWhereConstraints, mergeListSearchAndWhere } from 'payload/shared'\r\n\r\nimport PageTreeListViewClient from './PageTreeListView.client.js'\r\nimport { buildPageTreeDocs } from '../utilities/pageTree.js'\r\nimport { getCollectionPageTreeConfig } from '../utilities/pageTreeConfig.js'\r\nimport { withPageTreeDisplayStatuses } from '../utilities/status.js'\r\nimport type { PageTreeSourceDoc } from '../types.js'\r\n\r\ntype ParsedQuery = Partial<ListQuery> & Record<string, unknown>\r\ntype ServerListViewProps = Record<string, any>\r\n\r\nfunction isNumericSegment(segment: string): boolean {\r\n return /^\\d+$/.test(segment)\r\n}\r\n\r\nfunction getKeySegments(key: string): string[] {\r\n const matches = key.match(/([^[\\]]+)/g)\r\n return matches ? matches.filter(Boolean) : [key]\r\n}\r\n\r\nfunction setNestedValue(target: Record<string, unknown>, key: string, value: string): void {\r\n const segments = getKeySegments(key)\r\n\r\n if (segments.length === 0) {\r\n return\r\n }\r\n\r\n let current: Record<string, unknown> | unknown[] = target\r\n\r\n for (let index = 0; index < segments.length; index += 1) {\r\n const segment = segments[index]\r\n const isLastSegment = index === segments.length - 1\r\n const nextSegment = segments[index + 1]\r\n const nextContainer: Record<string, unknown> | unknown[] = isNumericSegment(nextSegment ?? '')\r\n ? []\r\n : {}\r\n\r\n if (isLastSegment) {\r\n if (Array.isArray(current)) {\r\n const arrayIndex = Number(segment)\r\n current[arrayIndex] = value\r\n } else {\r\n const existingValue = current[segment]\r\n\r\n if (existingValue === undefined) {\r\n current[segment] = value\r\n } else if (Array.isArray(existingValue)) {\r\n existingValue.push(value)\r\n } else {\r\n current[segment] = [existingValue, value]\r\n }\r\n }\r\n\r\n return\r\n }\r\n\r\n if (Array.isArray(current)) {\r\n const arrayIndex = Number(segment)\r\n const existingValue = current[arrayIndex]\r\n\r\n if (\r\n typeof existingValue !== 'object' ||\r\n existingValue === null ||\r\n Array.isArray(existingValue) !== Array.isArray(nextContainer)\r\n ) {\r\n current[arrayIndex] = nextContainer\r\n }\r\n\r\n current = current[arrayIndex] as Record<string, unknown> | unknown[]\r\n continue\r\n }\r\n\r\n const existingValue = current[segment]\r\n\r\n if (\r\n typeof existingValue !== 'object' ||\r\n existingValue === null ||\r\n Array.isArray(existingValue) !== Array.isArray(nextContainer)\r\n ) {\r\n current[segment] = nextContainer\r\n }\r\n\r\n current = current[segment] as Record<string, unknown> | unknown[]\r\n }\r\n}\r\n\r\nfunction parseSearchParams(searchParams?: Params): ParsedQuery {\r\n const parsed: ParsedQuery = {}\r\n\r\n for (const [key, value] of Object.entries(searchParams ?? {})) {\r\n if (Array.isArray(value)) {\r\n for (const entry of value) {\r\n if (typeof entry === 'string') {\r\n setNestedValue(parsed, key, entry)\r\n }\r\n }\r\n } else if (typeof value === 'string') {\r\n setNestedValue(parsed, key, value)\r\n }\r\n }\r\n\r\n for (const key of ['columns', 'queryByGroup']) {\r\n if (typeof parsed[key] === 'string') {\r\n try {\r\n parsed[key] = JSON.parse(parsed[key] as string)\r\n } catch {\r\n // Leave invalid persisted values untouched and let Payload ignore them.\r\n }\r\n }\r\n }\r\n\r\n const sanitized: ParsedQuery = { ...parsed }\r\n\r\n for (const [key, value] of Object.entries(sanitized)) {\r\n if (\r\n key === 'columns' &&\r\n ((typeof value === 'string' && value === '[]') ||\r\n (Array.isArray(value) && value.length === 0))\r\n ) {\r\n delete sanitized[key]\r\n continue\r\n }\r\n\r\n if (\r\n key === 'where' &&\r\n typeof value === 'object' &&\r\n value !== null &&\r\n !Object.keys(value).length\r\n ) {\r\n delete sanitized[key]\r\n continue\r\n }\r\n\r\n if ((key === 'limit' || key === 'page') && typeof value === 'string') {\r\n const parsedValue = Number.parseInt(value, 10)\r\n sanitized[key] = Number.isNaN(parsedValue) ? undefined : parsedValue\r\n }\r\n\r\n if (key === 'page' && value === 0) {\r\n delete sanitized[key]\r\n continue\r\n }\r\n\r\n if (value === '') {\r\n delete sanitized[key]\r\n }\r\n }\r\n\r\n return sanitized\r\n}\r\n\r\nfunction getQueryValue<T>(incomingValue: T | undefined, fallbackValue: T): T {\r\n return incomingValue === undefined ? fallbackValue : incomingValue\r\n}\r\n\r\nfunction normalizeLimit(value: unknown, fallback: number): number {\r\n return typeof value === 'number' && value > 0 ? value : fallback\r\n}\r\n\r\nfunction normalizePage(value: unknown, fallback: number): number {\r\n return typeof value === 'number' && value > 0 ? value : fallback\r\n}\r\n\r\nfunction normalizeSearch(value: unknown): string {\r\n return typeof value === 'string' ? value : ''\r\n}\r\n\r\nfunction normalizeSort(value: unknown): string | undefined {\r\n if (Array.isArray(value)) {\r\n const sortValues = value.filter(\r\n (entry): entry is string => typeof entry === 'string' && entry.length > 0,\r\n )\r\n return sortValues.length > 0 ? sortValues.join(',') : undefined\r\n }\r\n\r\n return typeof value === 'string' && value.length > 0 ? value : undefined\r\n}\r\n\r\nfunction getOrderableFieldName(collectionConfig: ServerListViewProps['collectionConfig']) {\r\n return collectionConfig.orderable === true\r\n ? '_order'\r\n : typeof collectionConfig.orderable === 'string'\r\n ? collectionConfig.orderable\r\n : undefined\r\n}\r\n\r\nfunction getDefaultSort(collectionConfig: ServerListViewProps['collectionConfig']) {\r\n return typeof collectionConfig.defaultSort === 'string' ? collectionConfig.defaultSort : undefined\r\n}\r\n\r\nfunction getEffectiveTreeSort(args: {\r\n defaultSort?: string\r\n orderableFieldName?: string\r\n sort?: string\r\n}): string | undefined {\r\n const { defaultSort, orderableFieldName, sort } = args\r\n\r\n if (sort) {\r\n return sort\r\n }\r\n\r\n if (\r\n orderableFieldName &&\r\n (defaultSort === orderableFieldName || defaultSort === `-${orderableFieldName}`)\r\n ) {\r\n return defaultSort\r\n }\r\n\r\n return undefined\r\n}\r\n\r\nfunction normalizeWhere(value: unknown): any {\r\n if (value && typeof value === 'object' && !Array.isArray(value)) {\r\n return value\r\n }\r\n\r\n return undefined\r\n}\r\n\r\nfunction getCurrentQuery(props: ServerListViewProps, fallbackLimit: number): ListQuery {\r\n const parsedSearchQuery = parseSearchParams(props.searchParams)\r\n const preferenceQuery = (props.listPreferences ?? {}) as Partial<ListQuery>\r\n const mergedQuery = {\r\n ...preferenceQuery,\r\n ...parsedSearchQuery,\r\n } as ParsedQuery\r\n\r\n return {\r\n ...mergedQuery,\r\n limit: normalizeLimit(\r\n getQueryValue(mergedQuery.limit as number | undefined, fallbackLimit),\r\n fallbackLimit,\r\n ),\r\n page: normalizePage(\r\n getQueryValue(mergedQuery.page as number | undefined, props.data.page),\r\n props.data.page,\r\n ),\r\n search: normalizeSearch(mergedQuery.search),\r\n sort: normalizeSort(mergedQuery.sort) ?? normalizeSort(preferenceQuery.sort) ?? undefined,\r\n where: normalizeWhere(mergedQuery.where),\r\n }\r\n}\r\n\r\nfunction getBaseFilterArgs(\r\n props: ServerListViewProps,\r\n req: any,\r\n query: ListQuery,\r\n locale?: string,\r\n) {\r\n return {\r\n limit: 0,\r\n locale,\r\n page: 1,\r\n req,\r\n sort:\r\n normalizeSort(query.sort) ??\r\n (typeof props.collectionConfig.defaultSort === 'string'\r\n ? props.collectionConfig.defaultSort\r\n : 'id'),\r\n }\r\n}\r\n\r\nasync function getDocsWithDisplayStatus(args: {\r\n collectionConfig: ServerListViewProps['collectionConfig']\r\n collectionSlug: string\r\n docs: PageTreeSourceDoc[]\r\n locale?: string\r\n payload: any\r\n req: any\r\n user: unknown\r\n}): Promise<PageTreeSourceDoc[]> {\r\n const { collectionConfig, collectionSlug, docs, locale, payload, req, user } = args\r\n\r\n if (!collectionConfig.versions?.drafts || docs.length === 0) {\r\n return docs\r\n }\r\n\r\n const docIDs = docs\r\n .map((doc) => doc.id)\r\n .filter((id): id is number | string => typeof id === 'number' || typeof id === 'string')\r\n\r\n if (docIDs.length === 0) {\r\n return docs\r\n }\r\n\r\n const currentResult = await payload.find({\r\n collection: collectionSlug,\r\n depth: 0,\r\n fallbackLocale: false,\r\n locale,\r\n pagination: false,\r\n req,\r\n select: {\r\n _status: true,\r\n id: true,\r\n },\r\n user,\r\n where: {\r\n id: {\r\n in: docIDs,\r\n },\r\n },\r\n } as never)\r\n\r\n return withPageTreeDisplayStatuses({\r\n currentDocs: currentResult.docs as Pick<PageTreeSourceDoc, '_status' | 'id'>[],\r\n draftDocs: docs,\r\n })\r\n}\r\n\r\nasync function getListClientConfig({\r\n collectionSlug,\r\n i18n,\r\n payload,\r\n req,\r\n user,\r\n}: {\r\n collectionSlug: string\r\n i18n: unknown\r\n payload: any\r\n req: any\r\n user: unknown\r\n}): Promise<{\r\n clientCollectionConfig: any\r\n clientConfig: any\r\n}> {\r\n const clientConfig = getClientConfig({\r\n config: payload.config,\r\n i18n: i18n as never,\r\n importMap: payload.importMap,\r\n user: (user ?? true) as never,\r\n } as never)\r\n\r\n await applyLocaleFiltering({\r\n clientConfig,\r\n config: payload.config,\r\n req,\r\n } as never)\r\n\r\n const clientCollectionConfig = clientConfig.collections.find(\r\n (collection) => collection.slug === collectionSlug,\r\n )\r\n\r\n if (!clientCollectionConfig) {\r\n throw new Error(`Could not resolve client collection config for \"${collectionSlug}\"`)\r\n }\r\n\r\n return {\r\n clientCollectionConfig,\r\n clientConfig,\r\n }\r\n}\r\n\r\nexport async function NestedDocsPageTreeListView(props: ServerListViewProps) {\r\n const pageTreeConfig = getCollectionPageTreeConfig(props.collectionConfig)\r\n\r\n if (!pageTreeConfig) {\r\n throw new Error(`Could not resolve page tree config for \"${props.collectionSlug}\"`)\r\n }\r\n\r\n if (typeof props.collectionConfig.admin.useAsTitle !== 'string') {\r\n throw new Error(`Collection \"${props.collectionSlug}\" must define admin.useAsTitle`)\r\n }\r\n\r\n const query = getCurrentQuery(props, pageTreeConfig.defaultLimit)\r\n const orderableFieldName = getOrderableFieldName(props.collectionConfig)\r\n const defaultSort = getDefaultSort(props.collectionConfig)\r\n const effectiveSort = getEffectiveTreeSort({\r\n defaultSort,\r\n orderableFieldName,\r\n sort: normalizeSort(query.sort),\r\n })\r\n const effectiveQuery = {\r\n ...query,\r\n sort: effectiveSort,\r\n }\r\n const locale = props.locale?.code\r\n const req = {\r\n i18n: props.i18n,\r\n locale,\r\n payload: props.payload,\r\n query: effectiveQuery,\r\n user: props.user,\r\n }\r\n\r\n const baseFilter =\r\n props.collectionConfig.admin?.baseFilter ?? props.collectionConfig.admin?.baseListFilter\r\n const baseFilterConstraint = baseFilter\r\n ? await baseFilter(getBaseFilterArgs(props, req, query, locale))\r\n : undefined\r\n const mergedWhere = combineWhereConstraints([\r\n mergeListSearchAndWhere({\r\n collectionConfig: props.collectionConfig,\r\n search: normalizeSearch(query.search),\r\n where: normalizeWhere(query.where),\r\n } as never),\r\n baseFilterConstraint ?? undefined,\r\n ])\r\n const where = Object.keys(mergedWhere).length > 0 ? mergedWhere : undefined\r\n\r\n const fullResult = await props.payload.find({\r\n collection: props.collectionSlug,\r\n depth: 0,\r\n draft: props.collectionConfig.versions?.drafts ? true : undefined,\r\n fallbackLocale: false,\r\n includeLockStatus: true,\r\n locale,\r\n pagination: false,\r\n req,\r\n sort: normalizeSort(query.sort) ?? defaultSort,\r\n user: props.user,\r\n where,\r\n } as never)\r\n const treeSourceDocs = await getDocsWithDisplayStatus({\r\n collectionConfig: props.collectionConfig,\r\n collectionSlug: props.collectionSlug,\r\n docs: fullResult.docs as unknown as PageTreeSourceDoc[],\r\n locale,\r\n payload: props.payload,\r\n req,\r\n user: props.user,\r\n })\r\n\r\n const orderedDocs = buildPageTreeDocs(treeSourceDocs, {\r\n parentFieldSlug: pageTreeConfig.parentFieldSlug,\r\n sort: effectiveSort,\r\n })\r\n const orderedData: PaginatedDocs = {\r\n docs: orderedDocs,\r\n hasNextPage: false,\r\n hasPrevPage: false,\r\n limit: normalizeLimit(query.limit, pageTreeConfig.defaultLimit),\r\n nextPage: null,\r\n page: 1,\r\n pagingCounter: orderedDocs.length > 0 ? 1 : 0,\r\n prevPage: null,\r\n totalDocs: orderedDocs.length,\r\n totalPages: 1,\r\n }\r\n const { clientCollectionConfig, clientConfig } = await getListClientConfig({\r\n collectionSlug: props.collectionSlug,\r\n i18n: props.i18n,\r\n payload: props.payload,\r\n req,\r\n user: props.user,\r\n })\r\n const columnPreferences: ColumnPreference[] = (props.columnState as Array<{\r\n accessor: string\r\n active: boolean\r\n }>).map(({ accessor, active }) => ({\r\n accessor,\r\n active: accessor === props.collectionConfig.admin.useAsTitle ? true : active,\r\n }))\r\n const columns = getColumns({\r\n clientConfig,\r\n collectionConfig: clientCollectionConfig,\r\n collectionSlug: props.collectionSlug,\r\n columns: columnPreferences,\r\n i18n: props.i18n,\r\n permissions: props.permissions,\r\n } as never)\r\n const fieldPermissions = props.permissions?.collections?.[props.collectionSlug]?.fields ?? true\r\n const renderedTable = await renderTable({\r\n clientCollectionConfig,\r\n clientConfig,\r\n collectionConfig: props.collectionConfig,\r\n columns,\r\n data: orderedData,\r\n enableRowSelections: Boolean(props.enableRowSelections),\r\n fieldPermissions,\r\n i18n: props.i18n,\r\n orderableFieldName: orderableFieldName ?? '',\r\n payload: props.payload,\r\n query: effectiveQuery,\r\n req,\r\n tableAppearance: 'default',\r\n useAsTitle: props.collectionConfig.admin.useAsTitle,\r\n viewType: props.viewType,\r\n } as never)\r\n const clientProps: Omit<ListViewClientProps, 'Table' | 'columnState'> = {\r\n AfterList: props.AfterList,\r\n AfterListTable: props.AfterListTable,\r\n BeforeList: props.BeforeList,\r\n BeforeListTable: props.BeforeListTable,\r\n Description: props.Description,\r\n beforeActions: props.beforeActions,\r\n collectionSlug: props.collectionSlug,\r\n disableBulkDelete: props.disableBulkDelete,\r\n disableBulkEdit: props.disableBulkEdit,\r\n disableQueryPresets: props.disableQueryPresets,\r\n enableRowSelections: props.enableRowSelections,\r\n hasCreatePermission: props.hasCreatePermission,\r\n hasDeletePermission: props.hasDeletePermission,\r\n hasTrashPermission: props.hasTrashPermission,\r\n listMenuItems: props.listMenuItems,\r\n listPreferences: props.listPreferences,\r\n newDocumentURL: props.newDocumentURL,\r\n preferenceKey: props.preferenceKey,\r\n queryPreset: props.queryPreset,\r\n queryPresetPermissions: props.queryPresetPermissions,\r\n renderedFilters: props.renderedFilters,\r\n resolvedFilterOptions: props.resolvedFilterOptions,\r\n viewType: props.viewType,\r\n }\r\n const canMoveDocs = Boolean(props.permissions?.collections?.[props.collectionSlug]?.update)\r\n\r\n return (\r\n <PageTreeListViewClient\r\n {...clientProps}\r\n allDocs={orderedDocs}\r\n badgeConfig={pageTreeConfig.badges}\r\n canMoveDocs={canMoveDocs}\r\n columnState={renderedTable.columnState}\r\n homeIndicatorEnabled={pageTreeConfig.homeIndicator.enabled}\r\n orderableFieldName={orderableFieldName}\r\n parentFieldSlug={pageTreeConfig.parentFieldSlug}\r\n query={effectiveQuery}\r\n sourceDocs={treeSourceDocs}\r\n useAsTitle={props.collectionConfig.admin.useAsTitle}\r\n />\r\n )\r\n}\r\n\r\nexport default NestedDocsPageTreeListView\r\n"],"names":["React","getColumns","renderTable","getClientConfig","applyLocaleFiltering","combineWhereConstraints","mergeListSearchAndWhere","PageTreeListViewClient","buildPageTreeDocs","getCollectionPageTreeConfig","withPageTreeDisplayStatuses","isNumericSegment","segment","test","getKeySegments","key","matches","match","filter","Boolean","setNestedValue","target","value","segments","length","current","index","isLastSegment","nextSegment","nextContainer","Array","isArray","arrayIndex","Number","existingValue","undefined","push","parseSearchParams","searchParams","parsed","Object","entries","entry","JSON","parse","sanitized","keys","parsedValue","parseInt","isNaN","getQueryValue","incomingValue","fallbackValue","normalizeLimit","fallback","normalizePage","normalizeSearch","normalizeSort","sortValues","join","getOrderableFieldName","collectionConfig","orderable","getDefaultSort","defaultSort","getEffectiveTreeSort","args","orderableFieldName","sort","normalizeWhere","getCurrentQuery","props","fallbackLimit","parsedSearchQuery","preferenceQuery","listPreferences","mergedQuery","limit","page","data","search","where","getBaseFilterArgs","req","query","locale","getDocsWithDisplayStatus","collectionSlug","docs","payload","user","versions","drafts","docIDs","map","doc","id","currentResult","find","collection","depth","fallbackLocale","pagination","select","_status","in","currentDocs","draftDocs","getListClientConfig","i18n","clientConfig","config","importMap","clientCollectionConfig","collections","slug","Error","NestedDocsPageTreeListView","pageTreeConfig","admin","useAsTitle","defaultLimit","effectiveSort","effectiveQuery","code","baseFilter","baseListFilter","baseFilterConstraint","mergedWhere","fullResult","draft","includeLockStatus","treeSourceDocs","orderedDocs","parentFieldSlug","orderedData","hasNextPage","hasPrevPage","nextPage","pagingCounter","prevPage","totalDocs","totalPages","columnPreferences","columnState","accessor","active","columns","permissions","fieldPermissions","fields","renderedTable","enableRowSelections","tableAppearance","viewType","clientProps","AfterList","AfterListTable","BeforeList","BeforeListTable","Description","beforeActions","disableBulkDelete","disableBulkEdit","disableQueryPresets","hasCreatePermission","hasDeletePermission","hasTrashPermission","listMenuItems","newDocumentURL","preferenceKey","queryPreset","queryPresetPermissions","renderedFilters","resolvedFilterOptions","canMoveDocs","update","allDocs","badgeConfig","badges","homeIndicatorEnabled","homeIndicator","enabled","sourceDocs"],"mappings":"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"}
@@ -1,23 +1,62 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useDraggable } from '@dnd-kit/core';
4
- import { ChevronIcon, DragHandleIcon } from '@payloadcms/ui';
4
+ import { ChevronIcon, DragHandleIcon, useListQuery } from '@payloadcms/ui';
5
5
  import React from 'react';
6
- import { usePageTree } from './PageTreeContext.js';
6
+ import { usePageTree, usePageTreeRowDnd } from './PageTreeContext.js';
7
7
  const HOME_PAGE_SLUG = 'home';
8
8
  function isHomePageDoc(doc) {
9
9
  return doc.__pageTreeParentID === null && doc.slug?.trim() === HOME_PAGE_SLUG;
10
10
  }
11
+ function normalizeSort(value) {
12
+ return Array.isArray(value) ? value[0] : value;
13
+ }
14
+ function ParentMoveHandleIcon() {
15
+ return /*#__PURE__*/ _jsx("svg", {
16
+ "aria-hidden": "true",
17
+ className: "icon icon--drag-handle",
18
+ fill: "none",
19
+ height: "20",
20
+ viewBox: "0 0 20 20",
21
+ width: "20",
22
+ xmlns: "http://www.w3.org/2000/svg",
23
+ children: /*#__PURE__*/ _jsx("path", {
24
+ className: "stroke",
25
+ d: "M13.75 4.25L6.25 15.75",
26
+ stroke: "currentColor",
27
+ strokeLinecap: "round",
28
+ strokeWidth: "2.25"
29
+ })
30
+ });
31
+ }
32
+ function HomeIndicatorIcon() {
33
+ return /*#__PURE__*/ _jsx("svg", {
34
+ "aria-hidden": "true",
35
+ className: "pages-hierarchy-cell__home-icon",
36
+ fill: "none",
37
+ height: "14",
38
+ viewBox: "0 0 14 14",
39
+ width: "14",
40
+ xmlns: "http://www.w3.org/2000/svg",
41
+ children: /*#__PURE__*/ _jsx("path", {
42
+ d: "M2.5 7L7 3L11.5 7V13.5H2.5V7Z",
43
+ stroke: "currentColor",
44
+ strokeLinejoin: "round"
45
+ })
46
+ });
47
+ }
11
48
  export function PageTreeTitleCell({ children, doc, homeIndicatorEnabled }) {
12
- const { activeDragRowID, canMoveDocs, collapsedIDs, disableMoveDrag, pendingMoveRowID, toggleRow } = usePageTree();
49
+ const { activeDragRowID, canMoveDocs, collapsedIDs, parentMoveEnabled, pendingMoveRowID, toggleRow } = usePageTree();
50
+ const rowDnd = usePageTreeRowDnd();
51
+ const { orderableFieldName, query = {} } = useListQuery();
13
52
  const depth = doc.__pageTreeDepth;
14
53
  const hasChildren = doc.__pageTreeHasChildren;
15
54
  const shadeLevel = Math.min(doc.__pageTreeShadeLevel, 6);
16
55
  const rowID = doc.__pageTreeID;
17
56
  const isCollapsed = hasChildren && collapsedIDs.has(rowID);
18
- const dragIsDisabled = disableMoveDrag || !canMoveDocs || !rowID || pendingMoveRowID !== null;
57
+ const dragIsDisabled = !canMoveDocs || !rowID || pendingMoveRowID !== null;
19
58
  const showHomeIcon = homeIndicatorEnabled && isHomePageDoc(doc);
20
- const { attributes, isDragging, listeners, setNodeRef } = useDraggable({
59
+ const parentMoveDrag = useDraggable({
21
60
  id: `page-drag:${rowID}`,
22
61
  data: {
23
62
  dragType: 'move',
@@ -25,10 +64,13 @@ export function PageTreeTitleCell({ children, doc, homeIndicatorEnabled }) {
25
64
  },
26
65
  disabled: dragIsDisabled
27
66
  });
67
+ const querySort = normalizeSort(query.sort);
68
+ const showOrderableHandle = canMoveDocs && Boolean(orderableFieldName) && (querySort === orderableFieldName || querySort === `-${orderableFieldName}`);
28
69
  const isActiveDragRow = activeDragRowID === rowID;
70
+ const isDragging = parentMoveDrag.isDragging || rowDnd?.isOrderDragging || isActiveDragRow;
29
71
  return /*#__PURE__*/ _jsxs("div", {
30
72
  className: "pages-hierarchy-cell",
31
- "data-row-dragging": isDragging || isActiveDragRow ? 'true' : 'false',
73
+ "data-row-dragging": isDragging ? 'true' : 'false',
32
74
  "data-tree-depth": depth,
33
75
  "data-tree-has-children": hasChildren ? 'true' : 'false',
34
76
  "data-tree-home": showHomeIcon ? 'true' : undefined,
@@ -56,28 +98,48 @@ export function PageTreeTitleCell({ children, doc, homeIndicatorEnabled }) {
56
98
  }) : /*#__PURE__*/ _jsx("span", {
57
99
  className: "pages-hierarchy-cell__spacer"
58
100
  }),
59
- canMoveDocs ? /*#__PURE__*/ _jsx("button", {
60
- ...attributes,
61
- ...listeners,
62
- "aria-label": "Move document",
101
+ showOrderableHandle ? /*#__PURE__*/ _jsx("button", {
102
+ ...rowDnd?.orderHandleAttributes ?? {},
103
+ ...rowDnd?.orderHandleListeners ?? {},
104
+ "aria-label": "Reorder document within this parent",
63
105
  className: [
64
106
  'pages-hierarchy-cell__drag-handle',
65
- isDragging || isActiveDragRow ? 'pages-hierarchy-cell__drag-handle--active' : ''
107
+ 'pages-hierarchy-cell__drag-handle--orderable',
108
+ rowDnd?.isOrderDragging || isActiveDragRow ? 'pages-hierarchy-cell__drag-handle--active' : ''
66
109
  ].filter(Boolean).join(' '),
67
- disabled: dragIsDisabled,
110
+ disabled: dragIsDisabled || !rowDnd,
68
111
  onClick: (event)=>{
69
112
  event.preventDefault();
70
113
  event.stopPropagation();
71
114
  },
72
- ref: setNodeRef,
115
+ ref: rowDnd?.orderHandleRef,
73
116
  type: "button",
74
117
  children: /*#__PURE__*/ _jsx(DragHandleIcon, {})
75
- }) : /*#__PURE__*/ _jsx("span", {
76
- className: "pages-hierarchy-cell__drag-spacer"
77
- }),
78
- /*#__PURE__*/ _jsx("span", {
118
+ }) : null,
119
+ canMoveDocs && parentMoveEnabled ? /*#__PURE__*/ _jsx("button", {
120
+ ...parentMoveDrag.attributes,
121
+ ...parentMoveDrag.listeners,
122
+ "aria-label": "Move document under another page",
123
+ className: [
124
+ 'pages-hierarchy-cell__drag-handle',
125
+ 'pages-hierarchy-cell__drag-handle--parent',
126
+ parentMoveDrag.isDragging || isActiveDragRow ? 'pages-hierarchy-cell__drag-handle--active' : ''
127
+ ].filter(Boolean).join(' '),
128
+ disabled: dragIsDisabled,
129
+ onClick: (event)=>{
130
+ event.preventDefault();
131
+ event.stopPropagation();
132
+ },
133
+ ref: parentMoveDrag.setNodeRef,
134
+ type: "button",
135
+ children: /*#__PURE__*/ _jsx(ParentMoveHandleIcon, {})
136
+ }) : null,
137
+ /*#__PURE__*/ _jsxs("span", {
79
138
  className: "pages-hierarchy-cell__content",
80
- children: children
139
+ children: [
140
+ showHomeIcon ? /*#__PURE__*/ _jsx(HomeIndicatorIcon, {}) : null,
141
+ children
142
+ ]
81
143
  })
82
144
  ]
83
145
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/PageTreeTitleCell.tsx"],"sourcesContent":["'use client'\r\n\r\nimport { useDraggable } from '@dnd-kit/core'\r\nimport { ChevronIcon, DragHandleIcon } from '@payloadcms/ui'\r\nimport React from 'react'\r\n\r\nimport type { PageTreeDoc } from '../utilities/pageTree.js'\r\n\r\nimport { usePageTree } from './PageTreeContext.js'\r\n\r\nconst HOME_PAGE_SLUG = 'home'\r\n\r\nfunction isHomePageDoc(doc: PageTreeDoc): boolean {\n return doc.__pageTreeParentID === null && doc.slug?.trim() === HOME_PAGE_SLUG\n}\n\r\nexport function PageTreeTitleCell({\n children,\n doc,\n homeIndicatorEnabled,\n}: {\n children: React.ReactNode\n doc: PageTreeDoc\n homeIndicatorEnabled: boolean\n}) {\n const {\r\n activeDragRowID,\r\n canMoveDocs,\r\n collapsedIDs,\r\n disableMoveDrag,\r\n pendingMoveRowID,\r\n toggleRow,\r\n } = usePageTree()\r\n const depth = doc.__pageTreeDepth\r\n const hasChildren = doc.__pageTreeHasChildren\r\n const shadeLevel = Math.min(doc.__pageTreeShadeLevel, 6)\r\n const rowID = doc.__pageTreeID\n const isCollapsed = hasChildren && collapsedIDs.has(rowID)\n const dragIsDisabled = disableMoveDrag || !canMoveDocs || !rowID || pendingMoveRowID !== null\n const showHomeIcon = homeIndicatorEnabled && isHomePageDoc(doc)\n const { attributes, isDragging, listeners, setNodeRef } = useDraggable({\r\n id: `page-drag:${rowID}`,\r\n data: {\r\n dragType: 'move',\r\n rowID,\r\n },\r\n disabled: dragIsDisabled,\r\n })\r\n const isActiveDragRow = activeDragRowID === rowID\r\n\r\n return (\r\n <div\r\n className=\"pages-hierarchy-cell\"\r\n data-row-dragging={isDragging || isActiveDragRow ? 'true' : 'false'}\r\n data-tree-depth={depth}\r\n data-tree-has-children={hasChildren ? 'true' : 'false'}\r\n data-tree-home={showHomeIcon ? 'true' : undefined}\r\n data-tree-shade-level={shadeLevel}\r\n style={{ '--pages-tree-depth': String(depth) } as React.CSSProperties}\r\n >\r\n {hasChildren ? (\r\n <button\r\n aria-expanded={!isCollapsed}\r\n aria-label={isCollapsed ? 'Expand nested items' : 'Collapse nested items'}\r\n className=\"pages-hierarchy-cell__toggle\"\r\n onClick={(event) => {\r\n event.preventDefault()\r\n event.stopPropagation()\r\n toggleRow(rowID)\r\n }}\r\n type=\"button\"\r\n >\r\n <ChevronIcon\r\n className={[\r\n 'pages-hierarchy-cell__chevron',\r\n isCollapsed ? 'pages-hierarchy-cell__chevron--collapsed' : '',\r\n ]\r\n .filter(Boolean)\r\n .join(' ')}\r\n />\r\n </button>\r\n ) : (\r\n <span className=\"pages-hierarchy-cell__spacer\" />\r\n )}\r\n {canMoveDocs ? (\r\n <button\r\n {...attributes}\r\n {...listeners}\r\n aria-label=\"Move document\"\r\n className={[\r\n 'pages-hierarchy-cell__drag-handle',\r\n isDragging || isActiveDragRow ? 'pages-hierarchy-cell__drag-handle--active' : '',\r\n ]\r\n .filter(Boolean)\r\n .join(' ')}\r\n disabled={dragIsDisabled}\r\n onClick={(event) => {\r\n event.preventDefault()\r\n event.stopPropagation()\r\n }}\r\n ref={setNodeRef}\r\n type=\"button\"\r\n >\r\n <DragHandleIcon />\r\n </button>\r\n ) : (\r\n <span className=\"pages-hierarchy-cell__drag-spacer\" />\r\n )}\r\n <span className=\"pages-hierarchy-cell__content\">{children}</span>\r\n </div>\r\n )\r\n}\r\n"],"names":["useDraggable","ChevronIcon","DragHandleIcon","React","usePageTree","HOME_PAGE_SLUG","isHomePageDoc","doc","__pageTreeParentID","slug","trim","PageTreeTitleCell","children","homeIndicatorEnabled","activeDragRowID","canMoveDocs","collapsedIDs","disableMoveDrag","pendingMoveRowID","toggleRow","depth","__pageTreeDepth","hasChildren","__pageTreeHasChildren","shadeLevel","Math","min","__pageTreeShadeLevel","rowID","__pageTreeID","isCollapsed","has","dragIsDisabled","showHomeIcon","attributes","isDragging","listeners","setNodeRef","id","data","dragType","disabled","isActiveDragRow","div","className","data-row-dragging","data-tree-depth","data-tree-has-children","data-tree-home","undefined","data-tree-shade-level","style","String","button","aria-expanded","aria-label","onClick","event","preventDefault","stopPropagation","type","filter","Boolean","join","span","ref"],"mappings":"AAAA;;AAEA,SAASA,YAAY,QAAQ,gBAAe;AAC5C,SAASC,WAAW,EAAEC,cAAc,QAAQ,iBAAgB;AAC5D,OAAOC,WAAW,QAAO;AAIzB,SAASC,WAAW,QAAQ,uBAAsB;AAElD,MAAMC,iBAAiB;AAEvB,SAASC,cAAcC,GAAgB;IACrC,OAAOA,IAAIC,kBAAkB,KAAK,QAAQD,IAAIE,IAAI,EAAEC,WAAWL;AACjE;AAEA,OAAO,SAASM,kBAAkB,EAChCC,QAAQ,EACRL,GAAG,EACHM,oBAAoB,EAKrB;IACC,MAAM,EACJC,eAAe,EACfC,WAAW,EACXC,YAAY,EACZC,eAAe,EACfC,gBAAgB,EAChBC,SAAS,EACV,GAAGf;IACJ,MAAMgB,QAAQb,IAAIc,eAAe;IACjC,MAAMC,cAAcf,IAAIgB,qBAAqB;IAC7C,MAAMC,aAAaC,KAAKC,GAAG,CAACnB,IAAIoB,oBAAoB,EAAE;IACtD,MAAMC,QAAQrB,IAAIsB,YAAY;IAC9B,MAAMC,cAAcR,eAAeN,aAAae,GAAG,CAACH;IACpD,MAAMI,iBAAiBf,mBAAmB,CAACF,eAAe,CAACa,SAASV,qBAAqB;IACzF,MAAMe,eAAepB,wBAAwBP,cAAcC;IAC3D,MAAM,EAAE2B,UAAU,EAAEC,UAAU,EAAEC,SAAS,EAAEC,UAAU,EAAE,GAAGrC,aAAa;QACrEsC,IAAI,CAAC,UAAU,EAAEV,OAAO;QACxBW,MAAM;YACJC,UAAU;YACVZ;QACF;QACAa,UAAUT;IACZ;IACA,MAAMU,kBAAkB5B,oBAAoBc;IAE5C,qBACE,MAACe;QACCC,WAAU;QACVC,qBAAmBV,cAAcO,kBAAkB,SAAS;QAC5DI,mBAAiB1B;QACjB2B,0BAAwBzB,cAAc,SAAS;QAC/C0B,kBAAgBf,eAAe,SAASgB;QACxCC,yBAAuB1B;QACvB2B,OAAO;YAAE,sBAAsBC,OAAOhC;QAAO;;YAE5CE,4BACC,KAAC+B;gBACCC,iBAAe,CAACxB;gBAChByB,cAAYzB,cAAc,wBAAwB;gBAClDc,WAAU;gBACVY,SAAS,CAACC;oBACRA,MAAMC,cAAc;oBACpBD,MAAME,eAAe;oBACrBxC,UAAUS;gBACZ;gBACAgC,MAAK;0BAEL,cAAA,KAAC3D;oBACC2C,WAAW;wBACT;wBACAd,cAAc,6CAA6C;qBAC5D,CACE+B,MAAM,CAACC,SACPC,IAAI,CAAC;;+BAIZ,KAACC;gBAAKpB,WAAU;;YAEjB7B,4BACC,KAACsC;gBACE,GAAGnB,UAAU;gBACb,GAAGE,SAAS;gBACbmB,cAAW;gBACXX,WAAW;oBACT;oBACAT,cAAcO,kBAAkB,8CAA8C;iBAC/E,CACEmB,MAAM,CAACC,SACPC,IAAI,CAAC;gBACRtB,UAAUT;gBACVwB,SAAS,CAACC;oBACRA,MAAMC,cAAc;oBACpBD,MAAME,eAAe;gBACvB;gBACAM,KAAK5B;gBACLuB,MAAK;0BAEL,cAAA,KAAC1D;+BAGH,KAAC8D;gBAAKpB,WAAU;;0BAElB,KAACoB;gBAAKpB,WAAU;0BAAiChC;;;;AAGvD"}
1
+ {"version":3,"sources":["../../src/components/PageTreeTitleCell.tsx"],"sourcesContent":["'use client'\r\n\r\nimport { useDraggable } from '@dnd-kit/core'\r\nimport { ChevronIcon, DragHandleIcon, useListQuery } from '@payloadcms/ui'\r\nimport React from 'react'\r\n\r\nimport type { PageTreeDoc } from '../utilities/pageTree.js'\r\n\r\nimport { usePageTree, usePageTreeRowDnd } from './PageTreeContext.js'\r\n\r\nconst HOME_PAGE_SLUG = 'home'\r\n\r\nfunction isHomePageDoc(doc: PageTreeDoc): boolean {\r\n return doc.__pageTreeParentID === null && doc.slug?.trim() === HOME_PAGE_SLUG\r\n}\r\n\r\nfunction normalizeSort(value: string | string[] | undefined): string | undefined {\r\n return Array.isArray(value) ? value[0] : value\r\n}\r\n\r\nfunction ParentMoveHandleIcon() {\n return (\n <svg\r\n aria-hidden=\"true\"\r\n className=\"icon icon--drag-handle\"\r\n fill=\"none\"\r\n height=\"20\"\r\n viewBox=\"0 0 20 20\"\r\n width=\"20\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\n className=\"stroke\"\n d=\"M13.75 4.25L6.25 15.75\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"2.25\"\n />\n </svg>\r\n )\n}\n\nfunction HomeIndicatorIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"pages-hierarchy-cell__home-icon\"\n fill=\"none\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n width=\"14\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.5 7L7 3L11.5 7V13.5H2.5V7Z\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n\nexport function PageTreeTitleCell({\n children,\r\n doc,\r\n homeIndicatorEnabled,\r\n}: {\r\n children: React.ReactNode\r\n doc: PageTreeDoc\r\n homeIndicatorEnabled: boolean\r\n}) {\r\n const {\r\n activeDragRowID,\r\n canMoveDocs,\r\n collapsedIDs,\r\n parentMoveEnabled,\r\n pendingMoveRowID,\r\n toggleRow,\r\n } = usePageTree()\r\n const rowDnd = usePageTreeRowDnd()\r\n const { orderableFieldName, query = {} } = useListQuery()\r\n const depth = doc.__pageTreeDepth\r\n const hasChildren = doc.__pageTreeHasChildren\r\n const shadeLevel = Math.min(doc.__pageTreeShadeLevel, 6)\r\n const rowID = doc.__pageTreeID\r\n const isCollapsed = hasChildren && collapsedIDs.has(rowID)\r\n const dragIsDisabled = !canMoveDocs || !rowID || pendingMoveRowID !== null\r\n const showHomeIcon = homeIndicatorEnabled && isHomePageDoc(doc)\r\n const parentMoveDrag = useDraggable({\r\n id: `page-drag:${rowID}`,\r\n data: {\r\n dragType: 'move',\r\n rowID,\r\n },\r\n disabled: dragIsDisabled,\r\n })\r\n const querySort = normalizeSort(query.sort)\r\n const showOrderableHandle =\r\n canMoveDocs &&\r\n Boolean(orderableFieldName) &&\r\n (querySort === orderableFieldName || querySort === `-${orderableFieldName}`)\r\n const isActiveDragRow = activeDragRowID === rowID\r\n const isDragging = parentMoveDrag.isDragging || rowDnd?.isOrderDragging || isActiveDragRow\r\n\r\n return (\r\n <div\r\n className=\"pages-hierarchy-cell\"\r\n data-row-dragging={isDragging ? 'true' : 'false'}\r\n data-tree-depth={depth}\r\n data-tree-has-children={hasChildren ? 'true' : 'false'}\r\n data-tree-home={showHomeIcon ? 'true' : undefined}\r\n data-tree-shade-level={shadeLevel}\r\n style={{ '--pages-tree-depth': String(depth) } as React.CSSProperties}\r\n >\r\n {hasChildren ? (\r\n <button\r\n aria-expanded={!isCollapsed}\r\n aria-label={isCollapsed ? 'Expand nested items' : 'Collapse nested items'}\r\n className=\"pages-hierarchy-cell__toggle\"\r\n onClick={(event) => {\r\n event.preventDefault()\r\n event.stopPropagation()\r\n toggleRow(rowID)\r\n }}\r\n type=\"button\"\r\n >\r\n <ChevronIcon\r\n className={[\r\n 'pages-hierarchy-cell__chevron',\r\n isCollapsed ? 'pages-hierarchy-cell__chevron--collapsed' : '',\r\n ]\r\n .filter(Boolean)\r\n .join(' ')}\r\n />\r\n </button>\r\n ) : (\r\n <span className=\"pages-hierarchy-cell__spacer\" />\r\n )}\r\n {showOrderableHandle ? (\r\n <button\r\n {...(rowDnd?.orderHandleAttributes ?? {})}\r\n {...(rowDnd?.orderHandleListeners ?? {})}\r\n aria-label=\"Reorder document within this parent\"\r\n className={[\r\n 'pages-hierarchy-cell__drag-handle',\r\n 'pages-hierarchy-cell__drag-handle--orderable',\r\n rowDnd?.isOrderDragging || isActiveDragRow\r\n ? 'pages-hierarchy-cell__drag-handle--active'\r\n : '',\r\n ]\r\n .filter(Boolean)\r\n .join(' ')}\r\n disabled={dragIsDisabled || !rowDnd}\r\n onClick={(event) => {\r\n event.preventDefault()\r\n event.stopPropagation()\r\n }}\r\n ref={rowDnd?.orderHandleRef}\r\n type=\"button\"\r\n >\r\n <DragHandleIcon />\r\n </button>\r\n ) : null}\r\n {canMoveDocs && parentMoveEnabled ? (\r\n <button\r\n {...parentMoveDrag.attributes}\r\n {...parentMoveDrag.listeners}\r\n aria-label=\"Move document under another page\"\r\n className={[\r\n 'pages-hierarchy-cell__drag-handle',\r\n 'pages-hierarchy-cell__drag-handle--parent',\r\n parentMoveDrag.isDragging || isActiveDragRow\r\n ? 'pages-hierarchy-cell__drag-handle--active'\r\n : '',\r\n ]\r\n .filter(Boolean)\r\n .join(' ')}\r\n disabled={dragIsDisabled}\r\n onClick={(event) => {\r\n event.preventDefault()\r\n event.stopPropagation()\r\n }}\r\n ref={parentMoveDrag.setNodeRef}\r\n type=\"button\"\r\n >\r\n <ParentMoveHandleIcon />\r\n </button>\r\n ) : null}\r\n <span className=\"pages-hierarchy-cell__content\">\n {showHomeIcon ? <HomeIndicatorIcon /> : null}\n {children}\n </span>\n </div>\n )\n}\n"],"names":["useDraggable","ChevronIcon","DragHandleIcon","useListQuery","React","usePageTree","usePageTreeRowDnd","HOME_PAGE_SLUG","isHomePageDoc","doc","__pageTreeParentID","slug","trim","normalizeSort","value","Array","isArray","ParentMoveHandleIcon","svg","aria-hidden","className","fill","height","viewBox","width","xmlns","path","d","stroke","strokeLinecap","strokeWidth","HomeIndicatorIcon","strokeLinejoin","PageTreeTitleCell","children","homeIndicatorEnabled","activeDragRowID","canMoveDocs","collapsedIDs","parentMoveEnabled","pendingMoveRowID","toggleRow","rowDnd","orderableFieldName","query","depth","__pageTreeDepth","hasChildren","__pageTreeHasChildren","shadeLevel","Math","min","__pageTreeShadeLevel","rowID","__pageTreeID","isCollapsed","has","dragIsDisabled","showHomeIcon","parentMoveDrag","id","data","dragType","disabled","querySort","sort","showOrderableHandle","Boolean","isActiveDragRow","isDragging","isOrderDragging","div","data-row-dragging","data-tree-depth","data-tree-has-children","data-tree-home","undefined","data-tree-shade-level","style","String","button","aria-expanded","aria-label","onClick","event","preventDefault","stopPropagation","type","filter","join","span","orderHandleAttributes","orderHandleListeners","ref","orderHandleRef","attributes","listeners","setNodeRef"],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type { Endpoint } from 'payload';
2
+ import { type Diagnostics } from '../utilities/diagnostics.js';
2
3
  export declare function createMovePageEndpoint(args: {
3
4
  collectionSlug: string;
5
+ diagnostics: Diagnostics;
4
6
  parentFieldSlug: string;
5
7
  }): Endpoint;