payload-nested-docs-page-tree 1.1.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 (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +132 -0
  3. package/dist/components/PageTreeContext.d.ts +15 -0
  4. package/dist/components/PageTreeContext.js +26 -0
  5. package/dist/components/PageTreeContext.js.map +1 -0
  6. package/dist/components/PageTreeListView.client.d.ts +17 -0
  7. package/dist/components/PageTreeListView.client.js +960 -0
  8. package/dist/components/PageTreeListView.client.js.map +1 -0
  9. package/dist/components/PageTreeListView.module.css +358 -0
  10. package/dist/components/PageTreeListView.server.d.ts +3 -0
  11. package/dist/components/PageTreeListView.server.js +390 -0
  12. package/dist/components/PageTreeListView.server.js.map +1 -0
  13. package/dist/components/PageTreeTitleCell.d.ts +6 -0
  14. package/dist/components/PageTreeTitleCell.js +80 -0
  15. package/dist/components/PageTreeTitleCell.js.map +1 -0
  16. package/dist/endpoints/createMovePageEndpoint.d.ts +5 -0
  17. package/dist/endpoints/createMovePageEndpoint.js +265 -0
  18. package/dist/endpoints/createMovePageEndpoint.js.map +1 -0
  19. package/dist/exports/client.d.ts +1 -0
  20. package/dist/exports/client.js +3 -0
  21. package/dist/exports/client.js.map +1 -0
  22. package/dist/exports/rsc.d.ts +1 -0
  23. package/dist/exports/rsc.js +3 -0
  24. package/dist/exports/rsc.js.map +1 -0
  25. package/dist/index.d.ts +4 -0
  26. package/dist/index.js +142 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/types.d.ts +35 -0
  29. package/dist/types.js +8 -0
  30. package/dist/types.js.map +1 -0
  31. package/dist/utilities/badgeConfig.d.ts +2 -0
  32. package/dist/utilities/badgeConfig.js +30 -0
  33. package/dist/utilities/badgeConfig.js.map +1 -0
  34. package/dist/utilities/dropTargets.d.ts +31 -0
  35. package/dist/utilities/dropTargets.js +73 -0
  36. package/dist/utilities/dropTargets.js.map +1 -0
  37. package/dist/utilities/moveValidation.d.ts +11 -0
  38. package/dist/utilities/moveValidation.js +44 -0
  39. package/dist/utilities/moveValidation.js.map +1 -0
  40. package/dist/utilities/pageTree.d.ts +37 -0
  41. package/dist/utilities/pageTree.js +300 -0
  42. package/dist/utilities/pageTree.js.map +1 -0
  43. package/dist/utilities/pageTreeCollision.d.ts +16 -0
  44. package/dist/utilities/pageTreeCollision.js +70 -0
  45. package/dist/utilities/pageTreeCollision.js.map +1 -0
  46. package/dist/utilities/pageTreeConfig.d.ts +3 -0
  47. package/dist/utilities/pageTreeConfig.js +21 -0
  48. package/dist/utilities/pageTreeConfig.js.map +1 -0
  49. package/dist/utilities/status.d.ts +17 -0
  50. package/dist/utilities/status.js +72 -0
  51. package/dist/utilities/status.js.map +1 -0
  52. package/package.json +115 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/PageTreeListView.client.tsx"],"sourcesContent":["'use client'\r\n\r\nimport type { Column, ListQuery, ListViewClientProps, PaginatedDocs } from 'payload'\r\n\r\nimport {\r\n DndContext,\r\n type DragEndEvent,\r\n type DragOverEvent,\r\n DragOverlay,\r\n type DragStartEvent,\r\n PointerSensor,\r\n useDroppable,\r\n useSensor,\r\n useSensors,\r\n} from '@dnd-kit/core'\r\nimport {\r\n DefaultListView,\r\n ListQueryProvider,\r\n SelectAll,\r\n SelectRow,\r\n SortHeader,\r\n toast,\r\n useConfig,\r\n useLocale,\r\n useTranslation,\r\n} from '@payloadcms/ui'\r\nimport { useRouter, useSearchParams } from 'next/navigation'\r\nimport React from 'react'\r\n\r\nimport type {\r\n NestedDocsPageTreePluginResolvedBadgeConfig,\r\n PageTreeSourceDoc,\r\n} from '../types.js'\r\n\r\nimport {\r\n buildInsertDropTargets,\r\n getDropTargetParentDoc,\r\n getOrderPlacementFromDropTarget,\r\n type PageTreeDropTarget,\r\n type PageTreeOrderPlacement,\r\n} from '../utilities/dropTargets.js'\r\nimport {\r\n CANCEL_DRAG_MESSAGE,\r\n getDropValidation,\r\n type PageTreeDropValidation,\r\n} from '../utilities/moveValidation.js'\r\nimport {\r\n buildDocSlugPath,\r\n buildPageTreeDocs,\r\n buildProspectiveDocSlugPath,\r\n getDocDisplayLabel,\r\n getVisibleTreeDocs,\r\n type PageTreeDoc,\r\n} from '../utilities/pageTree.js'\r\nimport { pageTreeCollisionDetectionStrategy } from '../utilities/pageTreeCollision.js'\r\nimport {\r\n getPageTreeBadgeColor,\r\n getPageTreeBadgeLabel,\r\n getPageTreeDisplayStatus,\r\n type PageTreeDisplayStatus,\r\n} from '../utilities/status.js'\r\nimport { PageTreeProvider } from './PageTreeContext.js'\r\nimport styles from './PageTreeListView.module.css'\r\nimport { PageTreeTitleCell } from './PageTreeTitleCell.js'\r\n\r\ntype PageTreeListViewClientOwnProps = {\r\n allDocs: PageTreeDoc[]\r\n badgeConfig: NestedDocsPageTreePluginResolvedBadgeConfig\r\n canMoveDocs: boolean\r\n columnState: Column[]\r\n orderableFieldName?: string\r\n parentFieldSlug: string\r\n query: ListQuery\r\n sourceDocs: PageTreeSourceDoc[]\r\n useAsTitle: string\r\n}\r\n\r\ntype PageTreeListViewClientProps = Omit<ListViewClientProps, 'columnState' | 'Table'> &\r\n PageTreeListViewClientOwnProps\r\n\r\ntype SelectableRowData = React.ComponentProps<typeof SelectRow>['rowData']\r\ntype PageTreeDragData = {\r\n dragType?: 'move'\r\n rowID?: string\r\n}\r\ntype ReorderDirection = 'greater' | 'less'\r\n\r\nconst MANUAL_ORDER_COLUMN_ACCESSOR = '_dragHandle'\r\nconst SILENT_MOVE_MESSAGES = new Set([CANCEL_DRAG_MESSAGE])\r\n\r\nfunction getRowDropID(rowID: string): string {\r\n return `page-drop:${rowID}`\r\n}\r\n\r\nfunction getPageTreeDragData(value: unknown): PageTreeDragData {\r\n return value && typeof value === 'object' ? (value as PageTreeDragData) : {}\r\n}\r\n\r\nfunction getPayloadDocID(doc: PageTreeDoc): number | string | undefined {\r\n return typeof doc.id === 'number' || typeof doc.id === 'string' ? doc.id : undefined\r\n}\r\n\r\nfunction getManualOrderDropValidation(args: {\r\n activeDoc: PageTreeDoc\r\n targetDoc?: PageTreeDoc\r\n}): PageTreeDropValidation {\r\n const { activeDoc, targetDoc } = args\r\n\r\n if (!targetDoc) {\r\n return {\r\n isValid: true,\r\n parentID: null,\r\n }\r\n }\r\n\r\n if (targetDoc.__pageTreeID === activeDoc.__pageTreeID) {\r\n return {\r\n isValid: false,\r\n message: CANCEL_DRAG_MESSAGE,\r\n parentID: targetDoc.__pageTreeID,\r\n }\r\n }\r\n\r\n if (targetDoc.__pageTreeAncestorIDs.includes(activeDoc.__pageTreeID)) {\r\n return {\r\n isValid: false,\r\n message: 'A document cannot be moved under one of its descendants.',\r\n parentID: targetDoc.__pageTreeID,\r\n }\r\n }\r\n\r\n return {\r\n isValid: true,\r\n parentID: targetDoc.__pageTreeID,\r\n }\r\n}\r\n\r\nfunction getDropValidationForMode(args: {\r\n activeDoc: PageTreeDoc\r\n allowSameParent: boolean\r\n targetDoc?: PageTreeDoc\r\n}): PageTreeDropValidation {\r\n const { activeDoc, allowSameParent, targetDoc } = args\r\n\r\n if (allowSameParent) {\r\n return getManualOrderDropValidation({\r\n activeDoc,\r\n targetDoc,\r\n })\r\n }\r\n\r\n return getDropValidation({\r\n activeDoc,\r\n targetDoc,\r\n })\r\n}\r\n\r\nfunction getCurrentOrderPlacement(args: {\r\n activeDoc: PageTreeDoc\r\n docs: PageTreeDoc[]\r\n}): PageTreeOrderPlacement {\r\n const { activeDoc, docs } = args\r\n const activeIndex = docs.findIndex((doc) => doc.__pageTreeID === activeDoc.__pageTreeID)\r\n const movingSubtreeIDs = new Set(\r\n docs\r\n .filter(\r\n (doc) =>\r\n doc.__pageTreeID === activeDoc.__pageTreeID ||\r\n doc.__pageTreeAncestorIDs.includes(activeDoc.__pageTreeID),\r\n )\r\n .map((doc) => doc.__pageTreeID),\r\n )\r\n const siblingIsNotMoving = (doc: PageTreeDoc) =>\r\n doc.__pageTreeParentID === activeDoc.__pageTreeParentID &&\r\n !movingSubtreeIDs.has(doc.__pageTreeID)\r\n\r\n if (activeIndex < 0) {\r\n return {\r\n nextSiblingID: null,\r\n parentID: activeDoc.__pageTreeParentID,\r\n previousSiblingID: null,\r\n }\r\n }\r\n\r\n return {\r\n nextSiblingID: docs.slice(activeIndex + 1).find(siblingIsNotMoving)?.__pageTreeID ?? null,\r\n parentID: activeDoc.__pageTreeParentID,\r\n previousSiblingID:\r\n docs.slice(0, activeIndex).filter(siblingIsNotMoving).at(-1)?.__pageTreeID ?? null,\r\n }\r\n}\r\n\r\nfunction orderPlacementHasChanged(\r\n currentPlacement: PageTreeOrderPlacement,\r\n nextPlacement: PageTreeOrderPlacement,\r\n): boolean {\r\n return (\r\n currentPlacement.parentID !== nextPlacement.parentID ||\r\n currentPlacement.previousSiblingID !== nextPlacement.previousSiblingID ||\r\n currentPlacement.nextSiblingID !== nextPlacement.nextSiblingID\r\n )\r\n}\r\n\r\nfunction getReorderTargetFromPlacement(args: {\r\n currentSort?: string\r\n docsByID: ReadonlyMap<string, PageTreeDoc>\r\n orderableFieldName: string\r\n placement: PageTreeOrderPlacement\r\n}): {\r\n newKeyWillBe: ReorderDirection\r\n targetDoc: PageTreeDoc\r\n} | null {\r\n const { currentSort, docsByID, orderableFieldName, placement } = args\r\n const targetDocID = placement.previousSiblingID ?? placement.nextSiblingID\r\n\r\n if (!targetDocID) {\r\n return null\r\n }\r\n\r\n const targetDoc = docsByID.get(targetDocID)\r\n\r\n if (!targetDoc) {\r\n return null\r\n }\r\n\r\n return {\r\n newKeyWillBe:\r\n (placement.previousSiblingID !== null && currentSort === orderableFieldName) ||\r\n (placement.previousSiblingID === null && currentSort === `-${orderableFieldName}`)\r\n ? 'greater'\r\n : 'less',\r\n targetDoc,\r\n }\r\n}\r\n\r\nfunction buildPaginatedData(\r\n docs: PageTreeDoc[],\r\n limit: number,\r\n requestedPage: number,\r\n): PaginatedDocs {\r\n const totalDocs = docs.length\r\n const totalPages = totalDocs > 0 ? Math.max(1, Math.ceil(totalDocs / limit)) : 1\r\n const page = Math.min(Math.max(requestedPage, 1), totalPages)\r\n const startIndex = (page - 1) * limit\r\n const pageDocs = docs.slice(startIndex, startIndex + limit)\r\n\r\n return {\r\n docs: pageDocs,\r\n hasNextPage: page < totalPages,\r\n hasPrevPage: page > 1,\r\n limit,\r\n nextPage: page < totalPages ? page + 1 : null,\r\n page,\r\n pagingCounter: totalDocs === 0 ? 0 : startIndex + 1,\r\n prevPage: page > 1 ? page - 1 : null,\r\n totalDocs,\r\n totalPages,\r\n }\r\n}\r\n\r\nfunction normalizeSort(value: string | string[] | undefined): string | undefined {\r\n if (Array.isArray(value)) {\r\n const sortValues = value.filter((entry) => typeof entry === 'string' && entry.length > 0)\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 normalizePositiveInt(value: null | string, fallback: number): number {\r\n if (typeof value !== 'string') {\r\n return fallback\r\n }\r\n\r\n const parsedValue = Number.parseInt(value, 10)\r\n return Number.isNaN(parsedValue) || parsedValue <= 0 ? fallback : parsedValue\r\n}\r\n\r\nfunction normalizePageTreeColumnState(columnState: Column[], useAsTitle: string): Column[] {\r\n return columnState\r\n .filter((column) => column.accessor !== MANUAL_ORDER_COLUMN_ACCESSOR)\r\n .map((column) =>\r\n column.accessor === useAsTitle\r\n ? {\r\n ...column,\r\n active: true,\r\n }\r\n : column,\r\n )\r\n}\r\n\r\nfunction sliceColumnState(\r\n columnState: Column[],\r\n docs: PageTreeDoc[],\r\n renderedCellIndexByDocID: ReadonlyMap<string, number>,\r\n): Column[] {\r\n return columnState.map((column) => ({\r\n ...column,\r\n renderedCells: docs.map((doc) => {\r\n const renderedCellIndex =\r\n renderedCellIndexByDocID.get(doc.__pageTreeID) ?? doc.__pageTreeOrderIndex\r\n\r\n return column.renderedCells?.[renderedCellIndex] ?? null\r\n }),\r\n }))\r\n}\r\n\r\nfunction getSelectableRowData(doc: PageTreeDoc): SelectableRowData {\r\n const record = doc as Record<string, unknown>\r\n\r\n return {\r\n id: String(doc.id ?? doc.__pageTreeID),\r\n _isLocked: Boolean(record._isLocked),\r\n _userEditing: record._userEditing as SelectableRowData['_userEditing'],\r\n }\r\n}\r\n\r\nfunction shouldSilenceMoveMessage(message?: string): boolean {\r\n return typeof message === 'string' && SILENT_MOVE_MESSAGES.has(message)\r\n}\r\n\r\nfunction getStatusClassName(\r\n status: PageTreeDisplayStatus,\r\n): 'changed' | 'draft' | 'published' | 'unknown' {\r\n if (status === 'changed' || status === 'draft' || status === 'published') {\r\n return status\r\n }\r\n\r\n return 'unknown'\r\n}\r\n\r\nfunction renderStatusBadge(args: {\r\n badgeConfig: NestedDocsPageTreePluginResolvedBadgeConfig\r\n doc: PageTreeDoc\r\n index: number\r\n t: (key: 'general:noValue' | 'version:changed' | 'version:draft' | 'version:published') => string\r\n}): React.ReactNode {\r\n const { badgeConfig, doc, index, t } = args\r\n const status = getPageTreeDisplayStatus(doc)\r\n const customColor = getPageTreeBadgeColor({\r\n badgeColors: badgeConfig.colors,\r\n status,\r\n })\r\n const statusClass = getStatusClassName(status)\r\n const style = customColor\r\n ? ({ '--page-tree-badge-base': customColor } as React.CSSProperties)\r\n : undefined\r\n\r\n return (\r\n <span\r\n className={[\r\n 'pages-hierarchy-status-badge',\r\n `pages-hierarchy-status-badge--${statusClass}`,\r\n ].join(' ')}\r\n data-custom-color={customColor ? 'true' : undefined}\r\n key={doc.__pageTreeID ?? index}\r\n style={style}\r\n >\r\n {getPageTreeBadgeLabel({\r\n badgeLabels: badgeConfig.labels,\r\n status,\r\n t,\r\n })}\r\n </span>\r\n )\r\n}\r\n\r\nfunction createManualOrderColumn(docs: PageTreeDoc[]): Column {\r\n return {\r\n accessor: MANUAL_ORDER_COLUMN_ACCESSOR,\r\n active: true,\r\n field: { hidden: true } as Column['field'],\r\n Heading: <SortHeader />,\r\n renderedCells: docs.map(() => null),\r\n }\r\n}\r\n\r\nfunction insertManualOrderColumn(columns: Column[], orderColumn: Column): Column[] {\r\n const selectColumnIndex = columns.findIndex((column) => column.accessor === '_select')\r\n const insertIndex = selectColumnIndex >= 0 ? selectColumnIndex + 1 : 0\r\n\r\n return [\r\n ...columns.slice(0, insertIndex),\r\n orderColumn,\r\n ...columns.slice(insertIndex),\r\n ]\r\n}\r\n\r\nfunction buildTableColumns(args: {\r\n badgeConfig: NestedDocsPageTreePluginResolvedBadgeConfig\r\n columnState: Column[]\r\n docs: PageTreeDoc[]\r\n enableRowSelections?: boolean\r\n orderableFieldName?: string\r\n parentFieldSlug: string\r\n t: (key: 'general:noValue' | 'version:changed' | 'version:draft' | 'version:published') => string\r\n useAsTitle: string\r\n}): Column[] {\r\n const {\r\n badgeConfig,\r\n columnState,\r\n docs,\r\n enableRowSelections,\r\n orderableFieldName,\r\n parentFieldSlug,\r\n t,\r\n useAsTitle,\r\n } = args\r\n const columnsToUse = columnState.map((column) => {\r\n if (column.accessor === useAsTitle) {\r\n return {\r\n ...column,\r\n active: true,\r\n renderedCells: docs.map((doc, index) => (\r\n <PageTreeTitleCell doc={doc} key={doc.__pageTreeID ?? index}>\r\n {column.renderedCells?.[index] ?? getDocDisplayLabel(doc)}\r\n </PageTreeTitleCell>\r\n )),\r\n }\r\n }\r\n\r\n if (column.accessor === '_status') {\r\n return {\r\n ...column,\r\n renderedCells: docs.map((doc, index) =>\r\n renderStatusBadge({\r\n badgeConfig,\r\n doc,\r\n index,\r\n t,\r\n }),\r\n ),\r\n }\r\n }\r\n\r\n if (column.accessor === parentFieldSlug) {\r\n return {\r\n ...column,\r\n renderedCells: docs.map((doc, index) =>\r\n doc.__pageTreeParentID !== null ? (\r\n column.renderedCells?.[index] ?? null\r\n ) : (\r\n <span className=\"pages-hierarchy-empty-cell\" key={doc.__pageTreeID ?? index}>\r\n -\r\n </span>\r\n ),\r\n ),\r\n }\r\n }\r\n\r\n return column\r\n })\r\n\r\n if (enableRowSelections) {\r\n columnsToUse.unshift({\r\n accessor: '_select',\r\n active: true,\r\n field: { hidden: true } as Column['field'],\r\n Heading: <SelectAll />,\r\n renderedCells: docs.map((doc, index) => (\r\n <SelectRow key={doc.__pageTreeID ?? index} rowData={getSelectableRowData(doc)} />\r\n )),\r\n })\r\n }\r\n\r\n if (\r\n orderableFieldName &&\r\n !columnsToUse.some((column) => column.accessor === MANUAL_ORDER_COLUMN_ACCESSOR)\r\n ) {\r\n return insertManualOrderColumn(columnsToUse, createManualOrderColumn(docs))\r\n }\r\n\r\n return columnsToUse\r\n}\r\n\r\nfunction HierarchyInsertRow({\r\n activeColumnsCount,\r\n activeDragRowID,\r\n dropTarget,\r\n dropValidation,\r\n isMovePending,\r\n}: {\r\n activeColumnsCount: number\r\n activeDragRowID: null | string\r\n dropTarget: Extract<PageTreeDropTarget, { dropType: 'insert' }>\r\n dropValidation?: PageTreeDropValidation\r\n isMovePending: boolean\r\n}) {\r\n const { isOver, setNodeRef } = useDroppable({\r\n id: dropTarget.dropID,\r\n data: dropTarget,\r\n disabled: isMovePending,\r\n })\r\n const hasActiveDrag = Boolean(activeDragRowID)\r\n\r\n return (\r\n <tr\r\n className=\"pages-hierarchy-insert-row\"\r\n data-drag-over={isOver ? 'true' : 'false'}\r\n data-drop-valid={hasActiveDrag ? (dropValidation?.isValid ? 'true' : 'false') : undefined}\r\n data-page-tree-insert=\"true\"\r\n >\r\n <td colSpan={activeColumnsCount}>\r\n <div\r\n className=\"pages-hierarchy-insert-row__target\"\r\n data-insert-depth={dropTarget.depth}\r\n ref={setNodeRef}\r\n />\r\n </td>\r\n </tr>\r\n )\r\n}\r\n\r\nfunction HierarchyTableRow({\r\n activeColumns,\r\n activeDragRowID,\r\n doc,\r\n dropValidation,\r\n insertAfterDropID,\r\n insertBeforeDropID,\r\n isMovePending,\r\n rowIndex,\r\n titleCellAccessor,\r\n}: {\r\n activeColumns: Column[]\r\n activeDragRowID: null | string\r\n doc: PageTreeDoc\r\n dropValidation?: PageTreeDropValidation\r\n insertAfterDropID: string\r\n insertBeforeDropID: string\r\n isMovePending: boolean\r\n rowIndex: number\r\n titleCellAccessor: string\r\n}) {\r\n const { isOver, setNodeRef } = useDroppable({\r\n id: getRowDropID(doc.__pageTreeID),\r\n data: {\r\n dropType: 'row',\r\n insertAfterDropID,\r\n insertBeforeDropID,\r\n rowID: doc.__pageTreeID,\r\n } satisfies Extract<PageTreeDropTarget, { dropType: 'row' }>,\r\n disabled: isMovePending,\r\n })\r\n const hasActiveDrag = Boolean(activeDragRowID)\r\n const isActiveDragRow = activeDragRowID === doc.__pageTreeID\r\n\r\n return (\r\n <tr\r\n className={`row-${rowIndex + 1}`}\r\n data-drag-over={isOver ? 'true' : 'false'}\r\n data-drop-valid={hasActiveDrag ? (dropValidation?.isValid ? 'true' : 'false') : undefined}\r\n data-id={doc.id}\r\n data-is-drag-source={isActiveDragRow ? 'true' : 'false'}\r\n data-page-tree-row=\"true\"\r\n ref={setNodeRef}\r\n >\r\n {activeColumns.map((column, columnIndex) => {\r\n const { accessor } = column\r\n\r\n return (\r\n <td\r\n className={`cell-${accessor.replace(/\\./g, '__')}`}\r\n data-page-tree-manual-order-cell={\r\n accessor === MANUAL_ORDER_COLUMN_ACCESSOR ? 'true' : undefined\r\n }\r\n data-page-tree-title-cell={accessor === titleCellAccessor ? 'true' : undefined}\r\n key={columnIndex}\r\n >\r\n {column.renderedCells?.[rowIndex] ?? null}\r\n </td>\r\n )\r\n })}\r\n </tr>\r\n )\r\n}\r\n\r\nfunction HierarchyTable({\r\n activeDragRowID,\r\n allDocsByID,\r\n allowSameParentDrops,\r\n columns,\r\n data,\r\n isMovePending,\r\n titleCellAccessor,\r\n}: {\r\n activeDragRowID: null | string\r\n allDocsByID: ReadonlyMap<string, PageTreeDoc>\r\n allowSameParentDrops: boolean\r\n columns: Column[]\r\n data: PageTreeDoc[]\r\n isMovePending: boolean\r\n titleCellAccessor: string\r\n}) {\r\n const activeColumns = React.useMemo(\r\n () => columns.filter((column) => column?.active),\r\n [columns],\r\n )\r\n const hasManualOrderColumn = React.useMemo(\r\n () => activeColumns.some((column) => column.accessor === MANUAL_ORDER_COLUMN_ACCESSOR),\r\n [activeColumns],\r\n )\r\n const insertDropTargets = React.useMemo(() => buildInsertDropTargets(data), [data])\r\n const activeDoc = activeDragRowID ? allDocsByID.get(activeDragRowID) ?? null : null\r\n const rowDropValidationByID = React.useMemo(() => {\r\n if (!activeDoc) {\r\n return new Map<string, PageTreeDropValidation>()\r\n }\r\n\r\n return new Map(\r\n data.map((doc) => [\r\n doc.__pageTreeID,\r\n getDropValidationForMode({\r\n activeDoc,\r\n allowSameParent: allowSameParentDrops,\r\n targetDoc: doc,\r\n }),\r\n ]),\r\n )\r\n }, [activeDoc, allowSameParentDrops, data])\r\n const insertDropValidationByID = React.useMemo(() => {\r\n if (!activeDoc) {\r\n return new Map<string, PageTreeDropValidation>()\r\n }\r\n\r\n return new Map(\r\n insertDropTargets.map((dropTarget) => [\r\n dropTarget.dropID,\r\n getDropValidationForMode({\r\n activeDoc,\r\n allowSameParent: allowSameParentDrops,\r\n targetDoc:\r\n dropTarget.parentID === null\r\n ? undefined\r\n : allDocsByID.get(dropTarget.parentID) ?? undefined,\r\n }),\r\n ]),\r\n )\r\n }, [activeDoc, allowSameParentDrops, allDocsByID, insertDropTargets])\r\n\r\n if (activeColumns.length === 0) {\r\n return <div>No columns selected</div>\r\n }\r\n\r\n return (\r\n <div\r\n className={[\r\n 'table-wrap pages-hierarchy-table',\r\n activeDoc ? 'pages-hierarchy-table--dragging' : '',\r\n ]\r\n .filter(Boolean)\r\n .join(' ')}\r\n data-page-tree-orderable={hasManualOrderColumn ? 'true' : undefined}\r\n >\r\n <div className=\"table table--appearance-default\">\r\n <table cellPadding=\"0\" cellSpacing=\"0\">\r\n <thead>\r\n <tr>\r\n {activeColumns.map((column, index) => (\r\n <th\r\n data-page-tree-manual-order-cell={\r\n column.accessor === MANUAL_ORDER_COLUMN_ACCESSOR ? 'true' : undefined\r\n }\r\n data-page-tree-title-cell={\r\n column.accessor === titleCellAccessor ? 'true' : undefined\r\n }\r\n id={`heading-${column.accessor.replace(/\\./g, '__')}`}\r\n key={index}\r\n >\r\n {column.Heading}\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {insertDropTargets[0] ? (\r\n <HierarchyInsertRow\r\n activeColumnsCount={activeColumns.length}\r\n activeDragRowID={activeDragRowID}\r\n dropTarget={insertDropTargets[0]}\r\n dropValidation={insertDropValidationByID.get(insertDropTargets[0].dropID)}\r\n isMovePending={isMovePending}\r\n key={insertDropTargets[0].dropID}\r\n />\r\n ) : null}\r\n {data.map((doc, rowIndex) => (\r\n <React.Fragment key={doc.__pageTreeID}>\r\n <HierarchyTableRow\r\n activeColumns={activeColumns}\r\n activeDragRowID={activeDragRowID}\r\n doc={doc}\r\n dropValidation={rowDropValidationByID.get(doc.__pageTreeID)}\r\n insertAfterDropID={insertDropTargets[rowIndex + 1].dropID}\r\n insertBeforeDropID={insertDropTargets[rowIndex].dropID}\r\n isMovePending={isMovePending}\r\n rowIndex={rowIndex}\r\n titleCellAccessor={titleCellAccessor}\r\n />\r\n {insertDropTargets[rowIndex + 1] ? (\r\n <HierarchyInsertRow\r\n activeColumnsCount={activeColumns.length}\r\n activeDragRowID={activeDragRowID}\r\n dropTarget={insertDropTargets[rowIndex + 1]}\r\n dropValidation={insertDropValidationByID.get(\r\n insertDropTargets[rowIndex + 1].dropID,\r\n )}\r\n isMovePending={isMovePending}\r\n key={insertDropTargets[rowIndex + 1].dropID}\r\n />\r\n ) : null}\r\n </React.Fragment>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default function PageTreeListViewClient({\r\n allDocs,\r\n badgeConfig,\r\n canMoveDocs,\r\n columnState,\r\n orderableFieldName,\r\n parentFieldSlug,\r\n query,\r\n sourceDocs,\r\n useAsTitle,\r\n ...props\r\n}: PageTreeListViewClientProps) {\r\n const router = useRouter()\r\n const searchParams = useSearchParams()\r\n const { config } = useConfig()\r\n const locale = useLocale()\r\n const { i18n } = useTranslation()\r\n const [activeDragRowID, setActiveDragRowID] = React.useState<null | string>(null)\r\n const [activeDropTarget, setActiveDropTarget] = React.useState<null | PageTreeDropTarget>(null)\r\n const [collapsedIDs, setCollapsedIDs] = React.useState<Set<string>>(() => new Set())\r\n const [localSourceDocs, setLocalSourceDocs] = React.useState(sourceDocs)\r\n const [pendingMoveRowID, setPendingMoveRowID] = React.useState<null | string>(null)\r\n\r\n React.useEffect(() => {\r\n setLocalSourceDocs(sourceDocs)\r\n }, [sourceDocs])\r\n\r\n const toggleRow = React.useCallback((rowID: string) => {\r\n setCollapsedIDs((currentState) => {\r\n const nextState = new Set(currentState)\r\n\r\n if (nextState.has(rowID)) {\r\n nextState.delete(rowID)\r\n } else {\r\n nextState.add(rowID)\r\n }\r\n\r\n return nextState\r\n })\r\n }, [])\r\n const currentSort = React.useMemo(() => {\r\n const searchParamSort = searchParams.getAll('sort')\r\n\r\n if (searchParamSort.length > 0) {\r\n return normalizeSort(searchParamSort)\r\n }\r\n\r\n return normalizeSort(query.sort as string | string[] | undefined)\r\n }, [query.sort, searchParams])\r\n const manualOrderIsActive = Boolean(\r\n orderableFieldName &&\r\n (currentSort === orderableFieldName || currentSort === `-${orderableFieldName}`),\r\n )\r\n const currentLimit = React.useMemo(\r\n () =>\r\n normalizePositiveInt(\r\n searchParams.get('limit'),\r\n typeof query.limit === 'number' && query.limit > 0 ? query.limit : 10,\r\n ),\r\n [query.limit, searchParams],\r\n )\r\n const currentRequestedPage = React.useMemo(\r\n () =>\r\n normalizePositiveInt(\r\n searchParams.get('page'),\r\n typeof query.page === 'number' && query.page > 0 ? query.page : 1,\r\n ),\r\n [query.page, searchParams],\r\n )\r\n const liveAllDocs = React.useMemo(\r\n () =>\r\n buildPageTreeDocs(localSourceDocs, {\r\n parentFieldSlug,\r\n sort: currentSort,\r\n }),\r\n [currentSort, localSourceDocs, parentFieldSlug],\r\n )\r\n const collapseResetKey = React.useMemo(\r\n () => JSON.stringify([props.collectionSlug, props.viewType, searchParams.toString()]),\r\n [props.collectionSlug, props.viewType, searchParams],\r\n )\r\n const hierarchyValue = React.useMemo(\r\n () => ({\r\n activeDragRowID,\r\n canMoveDocs,\r\n collapsedIDs,\r\n pendingMoveRowID,\r\n toggleRow,\r\n }),\r\n [activeDragRowID, canMoveDocs, collapsedIDs, pendingMoveRowID, toggleRow],\r\n )\r\n\r\n React.useEffect(() => {\r\n setActiveDragRowID(null)\r\n setActiveDropTarget(null)\r\n setCollapsedIDs(new Set())\r\n }, [collapseResetKey])\r\n\r\n const visibleDocs = React.useMemo(\r\n () => getVisibleTreeDocs(liveAllDocs, collapsedIDs),\r\n [liveAllDocs, collapsedIDs],\r\n )\r\n const paginatedData = React.useMemo(\r\n () => buildPaginatedData(visibleDocs, currentLimit, currentRequestedPage),\r\n [currentLimit, currentRequestedPage, visibleDocs],\r\n )\r\n const paginatedDocs = paginatedData.docs as PageTreeDoc[]\r\n const allDocsByID = React.useMemo(\r\n () => new Map(liveAllDocs.map((doc) => [doc.__pageTreeID, doc])),\r\n [liveAllDocs],\r\n )\r\n const paginatedDocsByID = React.useMemo(\r\n () => new Map(paginatedDocs.map((doc) => [doc.__pageTreeID, doc])),\r\n [paginatedDocs],\r\n )\r\n const renderedCellIndexByDocID = React.useMemo(\r\n () => new Map(allDocs.map((doc, index) => [doc.__pageTreeID, index])),\r\n [allDocs],\r\n )\r\n const normalizedColumnState = React.useMemo(\r\n () => normalizePageTreeColumnState(columnState, useAsTitle),\r\n [columnState, useAsTitle],\r\n )\r\n const paginatedColumnState = React.useMemo(\r\n () => sliceColumnState(normalizedColumnState, paginatedDocs, renderedCellIndexByDocID),\r\n [normalizedColumnState, paginatedDocs, renderedCellIndexByDocID],\r\n )\r\n const tableColumns = React.useMemo(\r\n () =>\r\n buildTableColumns({\r\n badgeConfig,\r\n columnState: paginatedColumnState,\r\n docs: paginatedDocs,\r\n enableRowSelections: props.enableRowSelections,\r\n orderableFieldName,\r\n parentFieldSlug,\r\n t: i18n.t,\r\n useAsTitle,\r\n }),\r\n [\r\n paginatedColumnState,\r\n paginatedDocs,\r\n badgeConfig,\r\n orderableFieldName,\r\n parentFieldSlug,\r\n props.enableRowSelections,\r\n i18n.t,\r\n useAsTitle,\r\n ],\r\n )\r\n const activeDragDoc = activeDragRowID ? paginatedDocsByID.get(activeDragRowID) ?? null : null\r\n const activeDragPreviewPath = React.useMemo(() => {\r\n if (!activeDragDoc) {\r\n return null\r\n }\r\n\r\n if (!activeDropTarget) {\r\n return buildDocSlugPath({\r\n doc: activeDragDoc,\r\n docsByID: allDocsByID,\r\n })\r\n }\r\n\r\n const targetDoc = getDropTargetParentDoc({\r\n docsByID: allDocsByID,\r\n dropTarget: activeDropTarget,\r\n })\r\n const dropValidation = getDropValidationForMode({\r\n activeDoc: activeDragDoc,\r\n allowSameParent: manualOrderIsActive,\r\n targetDoc: targetDoc ?? undefined,\r\n })\r\n\r\n if (!dropValidation.isValid) {\r\n return buildDocSlugPath({\r\n doc: activeDragDoc,\r\n docsByID: allDocsByID,\r\n })\r\n }\r\n\r\n return buildProspectiveDocSlugPath({\r\n activeDoc: activeDragDoc,\r\n docsByID: allDocsByID,\r\n targetDoc: targetDoc ?? undefined,\r\n })\r\n }, [activeDragDoc, activeDropTarget, allDocsByID, manualOrderIsActive])\r\n const isMovePending = pendingMoveRowID !== null\r\n const sensors = useSensors(\r\n useSensor(PointerSensor, {\r\n activationConstraint: {\r\n distance: 4,\r\n },\r\n }),\r\n )\r\n const moveDocument = React.useCallback(\r\n async (args: { parentID: null | string; rowID: string }) => {\r\n const { parentID, rowID } = args\r\n const params = new URLSearchParams()\r\n\r\n if (locale?.code) {\r\n params.set('locale', locale.code)\r\n }\r\n\r\n const response = await fetch(\r\n `${config.routes.api}/${props.collectionSlug}/${encodeURIComponent(rowID)}/move${\r\n params.size > 0 ? `?${params.toString()}` : ''\r\n }`,\r\n {\r\n body: JSON.stringify({\r\n parentID,\r\n }),\r\n credentials: 'include',\r\n headers: {\r\n 'Accept-Language': i18n.language,\r\n 'Content-Type': 'application/json',\r\n },\r\n method: 'POST',\r\n },\r\n )\r\n const result = (await response.json().catch(() => null)) as\r\n | {\r\n message?: string\r\n }\r\n | null\r\n\r\n if (!response.ok) {\r\n throw new Error(result?.message ?? 'Could not move document.')\r\n }\r\n\r\n return result\r\n },\r\n [config.routes.api, i18n.language, locale?.code, props.collectionSlug],\r\n )\r\n const reorderDocument = React.useCallback(\r\n async (args: {\r\n movedDocID: number | string\r\n newKeyWillBe: ReorderDirection\r\n targetDoc: PageTreeDoc\r\n }) => {\r\n const { movedDocID, newKeyWillBe, targetDoc } = args\r\n const targetID = getPayloadDocID(targetDoc)\r\n\r\n if (!orderableFieldName || targetID === undefined) {\r\n return undefined\r\n }\r\n\r\n const params = new URLSearchParams()\r\n\r\n if (locale?.code) {\r\n params.set('locale', locale.code)\r\n }\r\n\r\n const response = await fetch(\r\n `${config.routes.api}/reorder${params.size > 0 ? `?${params.toString()}` : ''}`,\r\n {\r\n body: JSON.stringify({\r\n collectionSlug: props.collectionSlug,\r\n docsToMove: [movedDocID],\r\n newKeyWillBe,\r\n orderableFieldName,\r\n target: {\r\n id: targetID,\r\n key: targetDoc[orderableFieldName],\r\n },\r\n }),\r\n credentials: 'include',\r\n headers: {\r\n 'Accept-Language': i18n.language,\r\n 'Content-Type': 'application/json',\r\n },\r\n method: 'POST',\r\n },\r\n )\r\n const result = (await response.json().catch(() => null)) as\r\n | {\r\n message?: string\r\n orderValues?: unknown[]\r\n }\r\n | null\r\n\r\n if (response.status === 403) {\r\n throw new Error('You do not have permission to reorder these rows')\r\n }\r\n\r\n if (!response.ok) {\r\n throw new Error(\r\n 'Failed to reorder. This can happen if you reorder several rows too quickly. Please try again.',\r\n )\r\n }\r\n\r\n if (result?.message === 'initial migration') {\r\n throw new Error(\r\n 'You have enabled \"orderable\" on a collection with existing documents and this is the first time you have sorted documents. We have run an automatic migration to add an initial order to the documents. Please refresh the page and try again.',\r\n )\r\n }\r\n\r\n return result?.orderValues?.[0]\r\n },\r\n [\r\n config.routes.api,\r\n i18n.language,\r\n locale?.code,\r\n orderableFieldName,\r\n props.collectionSlug,\r\n ],\r\n )\r\n const handleManualOrderMoveEnd = React.useCallback(\r\n async (args: {\r\n activeDoc: PageTreeDoc\r\n dropTarget: PageTreeDropTarget\r\n rowID: string\r\n }) => {\r\n const { activeDoc, dropTarget, rowID } = args\r\n\r\n if (!orderableFieldName) {\r\n return\r\n }\r\n\r\n const targetDoc = getDropTargetParentDoc({\r\n docsByID: allDocsByID,\r\n dropTarget,\r\n })\r\n const dropValidation = getManualOrderDropValidation({\r\n activeDoc,\r\n targetDoc: targetDoc ?? undefined,\r\n })\r\n\r\n if (!dropValidation.isValid) {\r\n if (!shouldSilenceMoveMessage(dropValidation.message)) {\r\n toast.error(dropValidation.message ?? 'Could not move document.')\r\n }\r\n\r\n return\r\n }\r\n\r\n const placement = getOrderPlacementFromDropTarget({\r\n activeDoc,\r\n docs: paginatedDocs,\r\n docsByID: allDocsByID,\r\n dropTarget,\r\n })\r\n\r\n if (!placement) {\r\n return\r\n }\r\n\r\n const currentPlacement = getCurrentOrderPlacement({\r\n activeDoc,\r\n docs: paginatedDocs,\r\n })\r\n const parentChanged = activeDoc.__pageTreeParentID !== placement.parentID\r\n const orderChanged = orderPlacementHasChanged(currentPlacement, placement)\r\n const reorderTarget = orderChanged\r\n ? getReorderTargetFromPlacement({\r\n currentSort,\r\n docsByID: allDocsByID,\r\n orderableFieldName,\r\n placement,\r\n })\r\n : null\r\n\r\n if (!parentChanged && !reorderTarget) {\r\n return\r\n }\r\n\r\n const movedDocID = getPayloadDocID(activeDoc)\r\n\r\n if (movedDocID === undefined) {\r\n return\r\n }\r\n\r\n const parentDoc = placement.parentID ? allDocsByID.get(placement.parentID) : undefined\r\n const nextParentValue =\r\n placement.parentID === null\r\n ? null\r\n : parentDoc\r\n ? getPayloadDocID(parentDoc) ?? placement.parentID\r\n : placement.parentID\r\n let parentMoveSucceeded = false\r\n\r\n setPendingMoveRowID(rowID)\r\n\r\n try {\r\n if (parentChanged) {\r\n await moveDocument({\r\n parentID: placement.parentID,\r\n rowID,\r\n })\r\n parentMoveSucceeded = true\r\n }\r\n\r\n const nextOrderValue = reorderTarget\r\n ? await reorderDocument({\r\n movedDocID,\r\n newKeyWillBe: reorderTarget.newKeyWillBe,\r\n targetDoc: reorderTarget.targetDoc,\r\n })\r\n : undefined\r\n\r\n if (parentChanged || typeof nextOrderValue === 'string') {\r\n setLocalSourceDocs((currentDocs) =>\r\n currentDocs.map((doc) =>\r\n String(doc.id ?? '') === String(movedDocID)\r\n ? {\r\n ...doc,\r\n ...(parentChanged\r\n ? {\r\n [parentFieldSlug]: nextParentValue,\r\n }\r\n : {}),\r\n ...(typeof nextOrderValue === 'string'\r\n ? {\r\n [orderableFieldName]: nextOrderValue,\r\n }\r\n : {}),\r\n }\r\n : doc,\r\n ),\r\n )\r\n }\r\n\r\n if (parentChanged) {\r\n toast.success(`Moved \"${getDocDisplayLabel(activeDoc)}\".`)\r\n }\r\n\r\n React.startTransition(() => {\r\n router.refresh()\r\n })\r\n } catch (error) {\r\n const message =\r\n error instanceof Error && error.message ? error.message : 'Could not move document.'\r\n\r\n toast.error(\r\n parentMoveSucceeded\r\n ? `Moved \"${getDocDisplayLabel(activeDoc)}\", but could not update its manual order. ${message}`\r\n : message,\r\n )\r\n\r\n if (parentMoveSucceeded) {\r\n React.startTransition(() => {\r\n router.refresh()\r\n })\r\n }\r\n } finally {\r\n setPendingMoveRowID(null)\r\n }\r\n },\r\n [\r\n allDocsByID,\r\n currentSort,\r\n moveDocument,\r\n orderableFieldName,\r\n paginatedDocs,\r\n parentFieldSlug,\r\n reorderDocument,\r\n router,\r\n ],\r\n )\r\n const handleDragCancel = React.useCallback(() => {\r\n setActiveDragRowID(null)\r\n setActiveDropTarget(null)\r\n }, [])\r\n const handleDragStart = React.useCallback(\r\n (event: DragStartEvent) => {\r\n const dragData = getPageTreeDragData(event.active.data.current)\r\n\r\n if (!canMoveDocs || isMovePending) {\r\n return\r\n }\r\n\r\n const rowID = dragData.rowID\r\n\r\n if (typeof rowID === 'string' && paginatedDocsByID.has(rowID)) {\r\n setActiveDragRowID(rowID)\r\n setActiveDropTarget(null)\r\n }\r\n },\r\n [canMoveDocs, isMovePending, paginatedDocsByID],\r\n )\r\n const handleDragOver = React.useCallback((event: DragOverEvent) => {\r\n const overData = event.over?.data.current as PageTreeDropTarget | undefined\r\n\r\n if (!overData) {\r\n setActiveDropTarget(null)\r\n return\r\n }\r\n\r\n if (overData.dropType === 'insert') {\r\n setActiveDropTarget(overData)\r\n return\r\n }\r\n\r\n if (overData.dropType === 'row') {\r\n setActiveDropTarget(overData)\r\n return\r\n }\r\n\r\n setActiveDropTarget(null)\r\n }, [])\r\n const handleDragEnd = React.useCallback(\r\n async (event: DragEndEvent) => {\r\n const dragData = getPageTreeDragData(event.active.data.current)\r\n\r\n const rowID = dragData.rowID\r\n const activeDoc = typeof rowID === 'string' ? paginatedDocsByID.get(rowID) ?? null : null\r\n const overData = event.over?.data.current as PageTreeDropTarget | undefined\r\n\r\n setActiveDragRowID(null)\r\n setActiveDropTarget(null)\r\n\r\n if (!rowID || !activeDoc || !overData) {\r\n return\r\n }\r\n\r\n if (manualOrderIsActive && orderableFieldName) {\r\n await handleManualOrderMoveEnd({\r\n activeDoc,\r\n dropTarget: overData,\r\n rowID,\r\n })\r\n return\r\n }\r\n\r\n const targetDoc = getDropTargetParentDoc({\r\n docsByID: allDocsByID,\r\n dropTarget: overData,\r\n })\r\n const dropValidation = getDropValidation({\r\n activeDoc,\r\n targetDoc: targetDoc ?? undefined,\r\n })\r\n\r\n if (!dropValidation.isValid) {\r\n if (!shouldSilenceMoveMessage(dropValidation.message)) {\r\n toast.error(dropValidation.message ?? 'Could not move document.')\r\n }\r\n\r\n return\r\n }\r\n\r\n setPendingMoveRowID(rowID)\r\n\r\n try {\r\n await moveDocument({\r\n parentID: dropValidation.parentID,\r\n rowID,\r\n })\r\n\r\n toast.success(`Moved \"${getDocDisplayLabel(activeDoc)}\".`)\r\n React.startTransition(() => {\r\n router.refresh()\r\n })\r\n } catch (error) {\r\n const message =\r\n error instanceof Error && error.message ? error.message : 'Could not move document.'\r\n\r\n if (shouldSilenceMoveMessage(message)) {\r\n return\r\n }\r\n\r\n toast.error(message)\r\n } finally {\r\n setPendingMoveRowID(null)\r\n }\r\n },\r\n [\r\n allDocsByID,\r\n handleManualOrderMoveEnd,\r\n manualOrderIsActive,\r\n moveDocument,\r\n orderableFieldName,\r\n paginatedDocsByID,\r\n router,\r\n ],\r\n )\r\n const handleDragEndSync = React.useCallback(\r\n (event: DragEndEvent) => {\r\n void handleDragEnd(event)\r\n },\r\n [handleDragEnd],\r\n )\r\n\r\n const tableNode = React.useMemo(\r\n () => (\r\n <DndContext\r\n collisionDetection={pageTreeCollisionDetectionStrategy}\r\n onDragCancel={handleDragCancel}\r\n onDragEnd={handleDragEndSync}\r\n onDragOver={handleDragOver}\r\n onDragStart={handleDragStart}\r\n sensors={sensors}\r\n >\r\n <HierarchyTable\r\n activeDragRowID={activeDragRowID}\r\n allDocsByID={allDocsByID}\r\n allowSameParentDrops={manualOrderIsActive}\r\n columns={tableColumns}\r\n data={paginatedDocs}\r\n isMovePending={isMovePending}\r\n titleCellAccessor={useAsTitle}\r\n />\r\n <DragOverlay dropAnimation={null} style={{ cursor: 'grabbing' }}>\n {activeDragPreviewPath ? (\r\n <div className=\"pages-hierarchy-drag-overlay\">{activeDragPreviewPath}</div>\r\n ) : null}\r\n </DragOverlay>\r\n </DndContext>\r\n ),\r\n [\r\n activeDragPreviewPath,\r\n activeDragRowID,\r\n handleDragCancel,\r\n handleDragEndSync,\r\n handleDragOver,\r\n handleDragStart,\r\n isMovePending,\r\n allDocsByID,\r\n manualOrderIsActive,\r\n paginatedDocs,\r\n sensors,\r\n tableColumns,\r\n useAsTitle,\r\n ],\r\n )\r\n\r\n return (\r\n <div className={styles.root}>\r\n <PageTreeProvider value={hierarchyValue}>\r\n <ListQueryProvider\r\n collectionSlug={props.collectionSlug}\r\n data={paginatedData}\r\n modifySearchParams\r\n orderableFieldName={orderableFieldName}\r\n query={{\r\n ...query,\r\n limit: currentLimit,\r\n page: paginatedData.page,\r\n sort: currentSort,\r\n }}\r\n >\r\n <DefaultListView {...props} columnState={paginatedColumnState} Table={tableNode} />\r\n </ListQueryProvider>\r\n </PageTreeProvider>\r\n </div>\r\n )\r\n}\r\n"],"names":["DndContext","DragOverlay","PointerSensor","useDroppable","useSensor","useSensors","DefaultListView","ListQueryProvider","SelectAll","SelectRow","SortHeader","toast","useConfig","useLocale","useTranslation","useRouter","useSearchParams","React","buildInsertDropTargets","getDropTargetParentDoc","getOrderPlacementFromDropTarget","CANCEL_DRAG_MESSAGE","getDropValidation","buildDocSlugPath","buildPageTreeDocs","buildProspectiveDocSlugPath","getDocDisplayLabel","getVisibleTreeDocs","pageTreeCollisionDetectionStrategy","getPageTreeBadgeColor","getPageTreeBadgeLabel","getPageTreeDisplayStatus","PageTreeProvider","styles","PageTreeTitleCell","MANUAL_ORDER_COLUMN_ACCESSOR","SILENT_MOVE_MESSAGES","Set","getRowDropID","rowID","getPageTreeDragData","value","getPayloadDocID","doc","id","undefined","getManualOrderDropValidation","args","activeDoc","targetDoc","isValid","parentID","__pageTreeID","message","__pageTreeAncestorIDs","includes","getDropValidationForMode","allowSameParent","getCurrentOrderPlacement","docs","activeIndex","findIndex","movingSubtreeIDs","filter","map","siblingIsNotMoving","__pageTreeParentID","has","nextSiblingID","previousSiblingID","slice","find","at","orderPlacementHasChanged","currentPlacement","nextPlacement","getReorderTargetFromPlacement","currentSort","docsByID","orderableFieldName","placement","targetDocID","get","newKeyWillBe","buildPaginatedData","limit","requestedPage","totalDocs","length","totalPages","Math","max","ceil","page","min","startIndex","pageDocs","hasNextPage","hasPrevPage","nextPage","pagingCounter","prevPage","normalizeSort","Array","isArray","sortValues","entry","join","normalizePositiveInt","fallback","parsedValue","Number","parseInt","isNaN","normalizePageTreeColumnState","columnState","useAsTitle","column","accessor","active","sliceColumnState","renderedCellIndexByDocID","renderedCells","renderedCellIndex","__pageTreeOrderIndex","getSelectableRowData","record","String","_isLocked","Boolean","_userEditing","shouldSilenceMoveMessage","getStatusClassName","status","renderStatusBadge","badgeConfig","index","t","customColor","badgeColors","colors","statusClass","style","span","className","data-custom-color","badgeLabels","labels","createManualOrderColumn","field","hidden","Heading","insertManualOrderColumn","columns","orderColumn","selectColumnIndex","insertIndex","buildTableColumns","enableRowSelections","parentFieldSlug","columnsToUse","unshift","rowData","some","HierarchyInsertRow","activeColumnsCount","activeDragRowID","dropTarget","dropValidation","isMovePending","isOver","setNodeRef","dropID","data","disabled","hasActiveDrag","tr","data-drag-over","data-drop-valid","data-page-tree-insert","td","colSpan","div","data-insert-depth","depth","ref","HierarchyTableRow","activeColumns","insertAfterDropID","insertBeforeDropID","rowIndex","titleCellAccessor","dropType","isActiveDragRow","data-id","data-is-drag-source","data-page-tree-row","columnIndex","replace","data-page-tree-manual-order-cell","data-page-tree-title-cell","HierarchyTable","allDocsByID","allowSameParentDrops","useMemo","hasManualOrderColumn","insertDropTargets","rowDropValidationByID","Map","insertDropValidationByID","data-page-tree-orderable","table","cellPadding","cellSpacing","thead","th","tbody","Fragment","PageTreeListViewClient","allDocs","canMoveDocs","query","sourceDocs","props","router","searchParams","config","locale","i18n","setActiveDragRowID","useState","activeDropTarget","setActiveDropTarget","collapsedIDs","setCollapsedIDs","localSourceDocs","setLocalSourceDocs","pendingMoveRowID","setPendingMoveRowID","useEffect","toggleRow","useCallback","currentState","nextState","delete","add","searchParamSort","getAll","sort","manualOrderIsActive","currentLimit","currentRequestedPage","liveAllDocs","collapseResetKey","JSON","stringify","collectionSlug","viewType","toString","hierarchyValue","visibleDocs","paginatedData","paginatedDocs","paginatedDocsByID","normalizedColumnState","paginatedColumnState","tableColumns","activeDragDoc","activeDragPreviewPath","sensors","activationConstraint","distance","moveDocument","params","URLSearchParams","code","set","response","fetch","routes","api","encodeURIComponent","size","body","credentials","headers","language","method","result","json","catch","ok","Error","reorderDocument","movedDocID","targetID","docsToMove","target","key","orderValues","handleManualOrderMoveEnd","error","parentChanged","orderChanged","reorderTarget","parentDoc","nextParentValue","parentMoveSucceeded","nextOrderValue","currentDocs","success","startTransition","refresh","handleDragCancel","handleDragStart","event","dragData","current","handleDragOver","overData","over","handleDragEnd","handleDragEndSync","tableNode","collisionDetection","onDragCancel","onDragEnd","onDragOver","onDragStart","dropAnimation","cursor","root","modifySearchParams","Table"],"mappings":"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"}
@@ -0,0 +1,358 @@
1
+ .root {
2
+ }
3
+
4
+ .root :global(.pages-hierarchy-table) {
5
+ --pages-tree-shade-rgb: 0 0 0;
6
+ --pages-tree-shade-1: rgb(var(--pages-tree-shade-rgb) / 0.03);
7
+ --pages-tree-shade-2: rgb(var(--pages-tree-shade-rgb) / 0.06);
8
+ --pages-tree-shade-3: rgb(var(--pages-tree-shade-rgb) / 0.08);
9
+ --pages-tree-shade-4: rgb(var(--pages-tree-shade-rgb) / 0.1);
10
+ --pages-tree-shade-5: rgb(var(--pages-tree-shade-rgb) / 0.14);
11
+ --pages-tree-shade-6: rgb(var(--pages-tree-shade-rgb) / 0.16);
12
+ overflow: visible;
13
+ position: relative;
14
+ }
15
+
16
+ .root :global(.pages-hierarchy-insert-row td) {
17
+ block-size: 0;
18
+ border: 0;
19
+ line-height: 0;
20
+ overflow: visible;
21
+ padding: 0;
22
+ }
23
+
24
+ .root :global(.pages-hierarchy-insert-row__target) {
25
+ block-size: 0;
26
+ overflow: visible;
27
+ position: relative;
28
+ }
29
+
30
+ .root :global(.pages-hierarchy-insert-row__target::after) {
31
+ background: transparent;
32
+ block-size: 2px;
33
+ border-radius: 999px;
34
+ content: '';
35
+ inset-block-start: -1px;
36
+ inset-inline: 0.75rem;
37
+ position: absolute;
38
+ transition:
39
+ background-color 0.15s ease,
40
+ box-shadow 0.15s ease;
41
+ }
42
+
43
+ .root :global(.pages-hierarchy-insert-row[data-drop-valid='true'][data-drag-over='true'] .pages-hierarchy-insert-row__target::after) {
44
+ background: rgb(74 84 98 / 0.64);
45
+ box-shadow: 0 0 0 1px rgb(74 84 98 / 0.16);
46
+ }
47
+
48
+ .root :global(.pages-hierarchy-insert-row[data-drop-valid='false'][data-drag-over='true'] .pages-hierarchy-insert-row__target::after) {
49
+ background: rgb(190 90 70 / 0.72);
50
+ box-shadow: 0 0 0 1px rgb(190 90 70 / 0.2);
51
+ }
52
+
53
+ .root :global(.pages-hierarchy-table .table) {
54
+ margin-bottom: 0;
55
+ overflow-y: hidden;
56
+ }
57
+
58
+ .root :global(.pages-hierarchy-table[data-page-tree-orderable='true'] [data-page-tree-manual-order-cell='true']) {
59
+ inline-size: 2rem;
60
+ min-inline-size: 2rem;
61
+ min-width: 2rem;
62
+ text-align: center;
63
+ width: 2rem;
64
+ }
65
+
66
+ .root :global(.pages-hierarchy-table[data-page-tree-orderable='true'] td[data-page-tree-manual-order-cell='true']) {
67
+ padding-inline: 0;
68
+ }
69
+
70
+ .root :global(.pages-hierarchy-table[data-page-tree-orderable='true'] th[data-page-tree-manual-order-cell='true'] .sort-header) {
71
+ inline-size: 100%;
72
+ justify-content: center;
73
+ min-inline-size: 0;
74
+ }
75
+
76
+ .root :global(.pages-hierarchy-table[data-page-tree-orderable='true'] td[data-page-tree-title-cell='true'] .pages-hierarchy-cell) {
77
+ margin-inline-start: -2rem;
78
+ }
79
+
80
+ .root :global(.pages-hierarchy-table .table tbody tr) {
81
+ background: transparent;
82
+ transition: background-color 0.16s ease;
83
+ }
84
+
85
+ .root :global(.pages-hierarchy-table .table tbody tr:nth-child(odd)),
86
+ .root :global(.pages-hierarchy-table .table tbody tr:nth-child(even)) {
87
+ background: transparent;
88
+ }
89
+
90
+ .root :global(.pages-hierarchy-table .table tbody tr:nth-child(odd) td:first-child),
91
+ .root :global(.pages-hierarchy-table .table tbody tr:nth-child(odd) td:last-child),
92
+ .root :global(.pages-hierarchy-table .table tbody tr:nth-child(even) td:first-child),
93
+ .root :global(.pages-hierarchy-table .table tbody tr:nth-child(even) td:last-child) {
94
+ border-radius: 0;
95
+ }
96
+
97
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='1'])) {
98
+ background: var(--pages-tree-shade-1);
99
+ }
100
+
101
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='2'])) {
102
+ background: var(--pages-tree-shade-2);
103
+ }
104
+
105
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='3'])) {
106
+ background: var(--pages-tree-shade-3);
107
+ }
108
+
109
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='4'])) {
110
+ background: var(--pages-tree-shade-4);
111
+ }
112
+
113
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='5'])) {
114
+ background: var(--pages-tree-shade-5);
115
+ }
116
+
117
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='6'])) {
118
+ background: var(--pages-tree-shade-6);
119
+ }
120
+
121
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='1'])),
122
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='2'])),
123
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='3'])),
124
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='4'])),
125
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='5'])),
126
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='6'])) {
127
+ border-radius: var(--style-radius-s);
128
+ }
129
+
130
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='1']) td:first-child),
131
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='2']) td:first-child),
132
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='3']) td:first-child),
133
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='4']) td:first-child),
134
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='5']) td:first-child),
135
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='6']) td:first-child) {
136
+ border-bottom-left-radius: inherit;
137
+ border-top-left-radius: inherit;
138
+ }
139
+
140
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='1']) td:last-child),
141
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='2']) td:last-child),
142
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='3']) td:last-child),
143
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='4']) td:last-child),
144
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='5']) td:last-child),
145
+ .root :global(.pages-hierarchy-table .table tbody tr:has(.pages-hierarchy-cell[data-tree-shade-level='6']) td:last-child) {
146
+ border-bottom-right-radius: inherit;
147
+ border-top-right-radius: inherit;
148
+ }
149
+
150
+ .root :global(.pages-hierarchy-table .table tbody tr[data-page-tree-row='true'][data-is-drag-source='true']) {
151
+ box-shadow: inset 0 0 0 999px rgb(36 164 223 / 0.22);
152
+ }
153
+
154
+ .root :global(.pages-hierarchy-table .table tbody tr[data-page-tree-row='true'][data-drag-over='true'][data-drop-valid='true']) {
155
+ box-shadow: inset 0 0 0 2px rgb(74 84 98 / 0.38);
156
+ }
157
+
158
+ .root :global(.pages-hierarchy-table .table tbody tr[data-page-tree-row='true'][data-drag-over='true'][data-drop-valid='false']) {
159
+ box-shadow: inset 0 0 0 999px rgb(190 90 70 / 0.18);
160
+ }
161
+
162
+ .root :global(.pages-hierarchy-table .table tbody tr[data-page-tree-row='true'][data-is-drag-source='true'][data-drag-over='true']) {
163
+ box-shadow: inset 0 0 0 999px rgb(36 164 223 / 0.22);
164
+ }
165
+
166
+ :global(html[data-theme='dark']) .root :global(.pages-hierarchy-table) {
167
+ --pages-tree-shade-rgb: 255 255 255;
168
+ }
169
+
170
+ :global(html[data-theme='dark']) .root :global(.pages-hierarchy-insert-row[data-drop-valid='true'][data-drag-over='true'] .pages-hierarchy-insert-row__target::after) {
171
+ background: rgb(232 236 241 / 0.72);
172
+ box-shadow: 0 0 0 1px rgb(232 236 241 / 0.22);
173
+ }
174
+
175
+ :global(html[data-theme='dark']) .root :global(.pages-hierarchy-insert-row[data-drop-valid='false'][data-drag-over='true'] .pages-hierarchy-insert-row__target::after) {
176
+ background: rgb(255 134 117 / 0.72);
177
+ box-shadow: 0 0 0 1px rgb(255 134 117 / 0.22);
178
+ }
179
+
180
+ :global(html[data-theme='dark']) .root :global(.pages-hierarchy-table .table tbody tr[data-page-tree-row='true'][data-is-drag-source='true']) {
181
+ box-shadow: inset 0 0 0 999px rgb(65 178 236 / 0.28);
182
+ }
183
+
184
+ :global(html[data-theme='dark']) .root :global(.pages-hierarchy-table .table tbody tr[data-page-tree-row='true'][data-is-drag-source='true'][data-drag-over='true']) {
185
+ box-shadow: inset 0 0 0 999px rgb(65 178 236 / 0.28);
186
+ }
187
+
188
+ :global(html[data-theme='dark']) .root :global(.pages-hierarchy-table .table tbody tr[data-page-tree-row='true'][data-drag-over='true'][data-drop-valid='true']:not([data-is-drag-source='true'])) {
189
+ box-shadow: inset 0 0 0 2px rgb(232 236 241 / 0.42);
190
+ }
191
+
192
+ :global(html[data-theme='dark']) .root :global(.pages-hierarchy-table .table tbody tr[data-page-tree-row='true'][data-drag-over='true'][data-drop-valid='false']:not([data-is-drag-source='true'])) {
193
+ box-shadow: inset 0 0 0 999px rgb(190 90 70 / 0.24);
194
+ }
195
+
196
+ .root :global(.pages-hierarchy-cell) {
197
+ align-items: center;
198
+ display: flex;
199
+ gap: 0.35rem;
200
+ min-width: 0;
201
+ padding-inline-start: calc(var(--pages-tree-depth, 0) * 1.75rem);
202
+ }
203
+
204
+ .root :global(.pages-hierarchy-cell__drag-handle),
205
+ .root :global(.pages-hierarchy-cell__drag-spacer),
206
+ .root :global(.pages-hierarchy-cell__toggle),
207
+ .root :global(.pages-hierarchy-cell__spacer) {
208
+ align-items: center;
209
+ block-size: 1.5rem;
210
+ display: inline-flex;
211
+ flex: 0 0 1.5rem;
212
+ inline-size: 1.5rem;
213
+ justify-content: center;
214
+ }
215
+
216
+ .root :global(.pages-hierarchy-cell__drag-handle),
217
+ .root :global(.pages-hierarchy-cell__toggle) {
218
+ appearance: none;
219
+ background: transparent;
220
+ border: 0;
221
+ border-radius: var(--style-radius-s, 4px);
222
+ color: var(--theme-text-dim);
223
+ cursor: pointer;
224
+ padding: 0;
225
+ transition:
226
+ background-color 0.15s ease,
227
+ color 0.15s ease;
228
+ }
229
+
230
+ .root :global(.pages-hierarchy-cell__drag-handle) {
231
+ cursor: grab;
232
+ margin-inline-end: 3px;
233
+ touch-action: none;
234
+ }
235
+
236
+ .root :global(.pages-hierarchy-cell__drag-handle:disabled) {
237
+ cursor: default;
238
+ opacity: 0.45;
239
+ }
240
+
241
+ .root :global(.pages-hierarchy-cell__drag-handle--active) {
242
+ color: var(--theme-text);
243
+ }
244
+
245
+ .root :global(.pages-hierarchy-cell__drag-handle:active:not(:disabled)),
246
+ .root :global(.pages-hierarchy-cell__drag-handle--active:not(:disabled)) {
247
+ cursor: grabbing;
248
+ }
249
+
250
+ .root :global(.pages-hierarchy-cell__drag-handle svg) {
251
+ block-size: 0.95rem;
252
+ inline-size: 0.95rem;
253
+ }
254
+
255
+ .root :global(.pages-hierarchy-cell__drag-handle:hover:not(:disabled)),
256
+ .root :global(.pages-hierarchy-cell__drag-handle:focus-visible:not(:disabled)),
257
+ .root :global(.pages-hierarchy-cell__toggle:hover),
258
+ .root :global(.pages-hierarchy-cell__toggle:focus-visible) {
259
+ background: rgb(0 0 0 / 0.05);
260
+ color: var(--theme-text);
261
+ }
262
+
263
+ .root :global(.pages-hierarchy-cell__chevron) {
264
+ block-size: 0.8rem;
265
+ inline-size: 0.8rem;
266
+ transition: transform 0.15s ease;
267
+ }
268
+
269
+ .root :global(.pages-hierarchy-cell__chevron--collapsed) {
270
+ transform: rotate(-90deg);
271
+ }
272
+
273
+ .root :global(.pages-hierarchy-cell__content) {
274
+ flex: 1 1 auto;
275
+ min-width: 0;
276
+ }
277
+
278
+ .root :global(.pages-hierarchy-empty-cell) {
279
+ color: var(--theme-text-dim);
280
+ }
281
+
282
+ .root :global(.pages-hierarchy-drag-overlay) {
283
+ align-items: center;
284
+ background: var(--theme-elevation-0);
285
+ border: 1px solid var(--theme-elevation-200);
286
+ border-radius: var(--style-radius-s, 4px);
287
+ box-shadow: 0 12px 28px rgb(0 0 0 / 0.14);
288
+ color: var(--theme-text);
289
+ display: inline-flex;
290
+ font-family: var(--font-mono, var(--font-body));
291
+ font-size: 0.95rem;
292
+ font-weight: 500;
293
+ inline-size: max-content;
294
+ margin-inline-start: 2rem;
295
+ padding: 0.65rem 0.85rem;
296
+ pointer-events: none;
297
+ transform: translateY(calc(0.75rem - 50%));
298
+ white-space: nowrap;
299
+ }
300
+
301
+ .root :global(.pages-hierarchy-status-badge) {
302
+ align-items: center;
303
+ border-radius: 4px;
304
+ display: inline-flex;
305
+ font-size: 0.72rem;
306
+ font-weight: 700;
307
+ letter-spacing: 0.08em;
308
+ line-height: 1;
309
+ min-height: 1.55rem;
310
+ padding: 0.32rem 0.72rem;
311
+ text-transform: uppercase;
312
+ white-space: nowrap;
313
+ }
314
+
315
+ .root :global(.pages-hierarchy-status-badge--published) {
316
+ background: rgb(0 255 0 / 0.3);
317
+ color: #047500;
318
+ }
319
+
320
+ .root :global(.pages-hierarchy-status-badge--changed) {
321
+ background: rgb(255 153 0 / 0.3);
322
+ color: #8d3f00;
323
+ }
324
+
325
+ .root :global(.pages-hierarchy-status-badge--draft) {
326
+ background: rgb(255 217 0 / 0.3);
327
+ color: #6d5000;
328
+ }
329
+
330
+ .root :global(.pages-hierarchy-status-badge--unknown) {
331
+ background: var(--theme-elevation-100);
332
+ color: var(--theme-text-dim);
333
+ }
334
+
335
+ .root :global(.pages-hierarchy-status-badge[data-custom-color='true']) {
336
+ background: color-mix(in srgb, var(--page-tree-badge-base) 14%, transparent);
337
+ color: color-mix(in srgb, var(--page-tree-badge-base) 78%, black);
338
+ }
339
+
340
+ :global(html[data-theme='dark']) .root :global(.pages-hierarchy-status-badge--published) {
341
+ background: rgb(9 255 0 / 0.3);
342
+ color: rgb(30 255 0);
343
+ }
344
+
345
+ :global(html[data-theme='dark']) .root :global(.pages-hierarchy-status-badge--changed) {
346
+ background: rgb(194 65 12 / 0.3);
347
+ color: rgb(255 174 0);
348
+ }
349
+
350
+ :global(html[data-theme='dark']) .root :global(.pages-hierarchy-status-badge--draft) {
351
+ background: rgb(255 230 0 / 0.2);
352
+ color: rgb(255 230 0);
353
+ }
354
+
355
+ :global(html[data-theme='dark']) .root :global(.pages-hierarchy-status-badge[data-custom-color='true']) {
356
+ background: color-mix(in srgb, var(--page-tree-badge-base) 22%, transparent);
357
+ color: color-mix(in srgb, var(--page-tree-badge-base) 64%, white);
358
+ }
@@ -0,0 +1,3 @@
1
+ type ServerListViewProps = Record<string, any>;
2
+ export declare function NestedDocsPageTreeListView(props: ServerListViewProps): Promise<import("react/jsx-runtime").JSX.Element>;
3
+ export default NestedDocsPageTreeListView;