sanity 3.74.2-corel.18 → 3.74.2-coreui.20
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.
- package/lib/_chunks-cjs/runtime.js +8 -4
- package/lib/_chunks-cjs/runtime.js.map +1 -1
- package/lib/_chunks-cjs/version.js +1 -1
- package/lib/_chunks-es/version.mjs +1 -1
- package/lib/_legacy/version.esm.js +1 -1
- package/package.json +10 -11
- package/src/_internal/cli/server/renderDocument.tsx +12 -0
- package/src/_internal/cli/server/runtime.ts +13 -10
- package/src/_internal/cli/server/vite/plugin-sanity-build-entries.ts +14 -12
- package/dist/BroadcastDisplayedDocument-BHYI8o6u.mjs +0 -19
- package/dist/BroadcastDisplayedDocument-BHYI8o6u.mjs.map +0 -1
- package/dist/DisplayedDocumentBroadcaster-DfHPxc7C.mjs +0 -58
- package/dist/DisplayedDocumentBroadcaster-DfHPxc7C.mjs.map +0 -1
- package/dist/LiveQueries-sYvgBCKh.mjs +0 -267
- package/dist/LiveQueries-sYvgBCKh.mjs.map +0 -1
- package/dist/LoaderQueries-AQneabiG.mjs +0 -581
- package/dist/LoaderQueries-AQneabiG.mjs.map +0 -1
- package/dist/Observable-wwWYwtkh.mjs +0 -551
- package/dist/Observable-wwWYwtkh.mjs.map +0 -1
- package/dist/PostMessageDocuments-DLMdHDk6.mjs +0 -75
- package/dist/PostMessageDocuments-DLMdHDk6.mjs.map +0 -1
- package/dist/PostMessageFeatures-CazMQz3f.mjs +0 -21
- package/dist/PostMessageFeatures-CazMQz3f.mjs.map +0 -1
- package/dist/PostMessagePerspective-m4uZ6sI5.mjs +0 -23
- package/dist/PostMessagePerspective-m4uZ6sI5.mjs.map +0 -1
- package/dist/PostMessagePreviewSnapshots-Dr7CEAiM.mjs +0 -66
- package/dist/PostMessagePreviewSnapshots-Dr7CEAiM.mjs.map +0 -1
- package/dist/PostMessageRefreshMutations-CWb9UqSy.mjs +0 -66
- package/dist/PostMessageRefreshMutations-CWb9UqSy.mjs.map +0 -1
- package/dist/PostMessageSchema-BVFyZOH1.mjs +0 -514
- package/dist/PostMessageSchema-BVFyZOH1.mjs.map +0 -1
- package/dist/PostMessageTelemetry-CSluBvcC.mjs +0 -51
- package/dist/PostMessageTelemetry-CSluBvcC.mjs.map +0 -1
- package/dist/PresentationToolGrantsCheck-4zo266wj.mjs +0 -3919
- package/dist/PresentationToolGrantsCheck-4zo266wj.mjs.map +0 -1
- package/dist/QRCodeSVG-D6VfGEbM.mjs +0 -648
- package/dist/QRCodeSVG-D6VfGEbM.mjs.map +0 -1
- package/dist/SourceContext-T8zcpOpp.mjs +0 -33
- package/dist/SourceContext-T8zcpOpp.mjs.map +0 -1
- package/dist/StructureToolProvider-BMLps71e.mjs +0 -13815
- package/dist/StructureToolProvider-BMLps71e.mjs.map +0 -1
- package/dist/Subject-DP0DoUP_.mjs +0 -108
- package/dist/Subject-DP0DoUP_.mjs.map +0 -1
- package/dist/ViteDevServerStopped-DdibXNvO.mjs +0 -44
- package/dist/ViteDevServerStopped-DdibXNvO.mjs.map +0 -1
- package/dist/_createContext.mjs +0 -36
- package/dist/_createContext.mjs.map +0 -1
- package/dist/_singletons.mjs +0 -195
- package/dist/_singletons.mjs.map +0 -1
- package/dist/browser-BzDH2pyp.mjs +0 -455
- package/dist/browser-BzDH2pyp.mjs.map +0 -1
- package/dist/browser-DWCoWoiH.mjs +0 -3988
- package/dist/browser-DWCoWoiH.mjs.map +0 -1
- package/dist/debounceTime-BeoKrERE.mjs +0 -130
- package/dist/debounceTime-BeoKrERE.mjs.map +0 -1
- package/dist/desk.mjs +0 -52
- package/dist/desk.mjs.map +0 -1
- package/dist/first-Di4GZDIY.mjs +0 -42
- package/dist/first-Di4GZDIY.mjs.map +0 -1
- package/dist/get-psIoeD-z.mjs +0 -327
- package/dist/get-psIoeD-z.mjs.map +0 -1
- package/dist/hooks-4sgcd521.mjs +0 -90
- package/dist/hooks-4sgcd521.mjs.map +0 -1
- package/dist/index-9PJcXUTv.mjs +0 -87
- package/dist/index-9PJcXUTv.mjs.map +0 -1
- package/dist/index-ByFK-IwD.mjs +0 -528
- package/dist/index-ByFK-IwD.mjs.map +0 -1
- package/dist/index-C2OAo3To.mjs +0 -7079
- package/dist/index-C2OAo3To.mjs.map +0 -1
- package/dist/index-C3OvVLVP.mjs +0 -4636
- package/dist/index-C3OvVLVP.mjs.map +0 -1
- package/dist/index-DBPVDKJN.mjs +0 -1198
- package/dist/index-DBPVDKJN.mjs.map +0 -1
- package/dist/index-DkvUNBNf.mjs +0 -73
- package/dist/index-DkvUNBNf.mjs.map +0 -1
- package/dist/index-Sp9w8lMg.mjs +0 -118
- package/dist/index-Sp9w8lMg.mjs.map +0 -1
- package/dist/index.browser-BxT2qp9y.mjs +0 -104
- package/dist/index.browser-BxT2qp9y.mjs.map +0 -1
- package/dist/index.mjs +0 -129019
- package/dist/index.mjs.map +0 -1
- package/dist/isObservable-ByOheaM8.mjs +0 -8
- package/dist/isObservable-ByOheaM8.mjs.map +0 -1
- package/dist/never-ChKjLemk.mjs +0 -6
- package/dist/never-ChKjLemk.mjs.map +0 -1
- package/dist/pane-C4tskUPg.mjs +0 -5
- package/dist/pane-C4tskUPg.mjs.map +0 -1
- package/dist/pane-Dhx8FvsK.mjs +0 -5
- package/dist/pane-Dhx8FvsK.mjs.map +0 -1
- package/dist/presentation-CSS9GR9X.mjs +0 -984
- package/dist/presentation-CSS9GR9X.mjs.map +0 -1
- package/dist/presentation.mjs +0 -14
- package/dist/presentation.mjs.map +0 -1
- package/dist/resources-4cbq8YlR.mjs +0 -124
- package/dist/resources-4cbq8YlR.mjs.map +0 -1
- package/dist/resources-BVETz6Ur.mjs +0 -57
- package/dist/resources-BVETz6Ur.mjs.map +0 -1
- package/dist/resources-D4AaU75F.mjs +0 -434
- package/dist/resources-D4AaU75F.mjs.map +0 -1
- package/dist/resources-Dc-6ZcPg.mjs +0 -157
- package/dist/resources-Dc-6ZcPg.mjs.map +0 -1
- package/dist/resources-DgU0prBM.mjs +0 -179
- package/dist/resources-DgU0prBM.mjs.map +0 -1
- package/dist/resources-MD8RsYhH.mjs +0 -288
- package/dist/resources-MD8RsYhH.mjs.map +0 -1
- package/dist/router.mjs +0 -689
- package/dist/router.mjs.map +0 -1
- package/dist/share-bcOpIdQz.mjs +0 -71
- package/dist/share-bcOpIdQz.mjs.map +0 -1
- package/dist/shareReplay-Dj1O6fKV.mjs +0 -43
- package/dist/shareReplay-Dj1O6fKV.mjs.map +0 -1
- package/dist/stegaEncodeSourceMap-DXdUZQye.mjs +0 -342
- package/dist/stegaEncodeSourceMap-DXdUZQye.mjs.map +0 -1
- package/dist/structure.mjs +0 -56
- package/dist/structure.mjs.map +0 -1
- package/dist/takeUntil-CgZP1bze.mjs +0 -111
- package/dist/takeUntil-CgZP1bze.mjs.map +0 -1
- package/dist/v4-C78sE4Gb.mjs +0 -27082
- package/dist/v4-C78sE4Gb.mjs.map +0 -1
- package/dist/version-D7UZEoYI.mjs +0 -5
- package/dist/version-D7UZEoYI.mjs.map +0 -1
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"StructureToolProvider-BMLps71e.mjs","sources":["../../@sanity/schema/src/legacy/actionUtils.ts","../src/structure/i18n/index.ts","../src/structure/components/DocTitle.tsx","../src/structure/components/confirmDeleteDialog/ConfirmDeleteDialogBody.styles.tsx","../src/structure/components/paneItem/PaneItemPreview.tsx","../src/structure/components/paneRouter/BackLink.tsx","../src/structure/components/pane/usePaneLayout.ts","../src/structure/components/paneRouter/usePaneRouter.ts","../src/structure/components/confirmDeleteDialog/ReferencePreviewLink.tsx","../src/structure/components/confirmDeleteDialog/ConfirmDeleteDialogBody.tsx","../src/structure/components/confirmDeleteDialog/useReferringDocuments.ts","../src/structure/components/confirmDeleteDialog/ConfirmDeleteDialog.tsx","../src/structure/components/confirmDeleteDialog/index.tsx","../src/structure/components/Delay.tsx","../src/structure/components/pane/constants.ts","../src/structure/components/pane/PaneDivider.tsx","../src/structure/components/pane/Pane.tsx","../src/structure/components/pane/PaneContent.styles.tsx","../src/structure/components/pane/usePane.ts","../src/structure/components/pane/PaneContent.tsx","../src/structure/util/toLowerCaseNoSpaces.tsx","../src/structure/components/pane/PaneMenuButtonItem.tsx","../src/structure/components/pane/PaneContextMenuButton.tsx","../src/structure/components/pane/PaneFooter.styles.tsx","../src/structure/components/pane/PaneFooter.tsx","../src/structure/components/pane/PaneHeader.styles.tsx","../src/structure/components/pane/PaneHeader.tsx","../src/structure/components/pane/PaneHeaderActionButton.tsx","../src/structure/components/pane/PaneLayout.styles.tsx","../src/structure/components/pane/helpers/_calcPaneResize.ts","../src/structure/components/pane/helpers/_getDOMPath.ts","../src/structure/components/pane/helpers/_sortElements.ts","../src/structure/components/pane/paneLayoutController.ts","../src/structure/components/pane/PaneLayout.tsx","../src/structure/menuNodes.ts","../src/structure/components/IntentButton.tsx","../src/structure/components/paneHeaderActions/InsufficientPermissionsMessageTooltip.tsx","../src/structure/components/paneHeaderActions/PaneHeaderCreateButton.tsx","../src/structure/components/paneHeaderActions/PaneHeaderActions.tsx","../src/structure/components/MissingSchemaType.tsx","../src/structure/components/paneItem/PaneItem.tsx","../src/structure/components/RenderActionCollectionState.tsx","../src/structure/components/RenderBadgeCollectionState.tsx","../src/structure/panes/error/ErrorPane.tsx","../src/structure/panes/loading/getWaitMessages.ts","../src/structure/panes/loading/LoadingPane.tsx","../src/structure/panes/document/useDocumentPane.tsx","../src/structure/panes/document/comments/CommentsWrapper.tsx","../src/structure/constants.ts","../src/structure/useStructureTool.ts","../src/structure/panes/document/constants.ts","../src/structure/panes/document/DocumentInspectorMenuItemsResolver.tsx","../src/structure/panes/document/useDocumentTitle.ts","../src/structure/panes/document/DocumentOperationResults.tsx","../src/structure/components/paneItem/helpers.tsx","../src/structure/panes/document/documentInspector/DocumentInspectorHeader.tsx","../src/structure/panes/document/documentInspector/DocumentInspectorPanel.tsx","../../../node_modules/.pnpm/debounce@1.2.1/node_modules/debounce/index.js","../../../node_modules/.pnpm/md5-o-matic@0.1.1/node_modules/md5-o-matic/lib/md5omatic.js","../../../node_modules/.pnpm/@rexxars+react-json-inspector@9.0.1_react@18.3.1/node_modules/@rexxars/react-json-inspector/dist/index.js","../src/structure/useStructureToolSetting.ts","../src/structure/panes/document/inspectDialog/constants.ts","../src/structure/panes/document/inspectDialog/helpers.ts","../src/structure/panes/document/inspectDialog/InspectDialog.styles.tsx","../src/structure/panes/document/inspectDialog/Search.tsx","../src/structure/panes/document/inspectDialog/InspectDialog.tsx","../src/structure/panes/document/documentPanel/banners/Banner.tsx","../src/structure/panes/document/documentPanel/banners/DeletedDocumentBanners.tsx","../src/structure/panes/document/documentPanel/banners/DeprecatedDocumentTypeBanner.tsx","../src/structure/components/requestPermissionDialog/__telemetry__/RequestPermissionDialog.telemetry.ts","../src/structure/components/requestPermissionDialog/RequestPermissionDialog.tsx","../src/structure/components/requestPermissionDialog/useRoleRequestsStatus.tsx","../src/structure/panes/document/documentPanel/banners/PermissionCheckBanner.tsx","../src/structure/panes/document/documentPanel/banners/ReferenceChangedBanner.tsx","../src/structure/panes/document/documentPanel/banners/AddToReleaseBanner.tsx","../src/structure/panes/document/documentPanel/banners/ArchivedReleaseDocumentBanner.tsx","../src/structure/panes/document/documentPanel/banners/__telemetry__/DraftLiveEditBanner.telemetry.ts","../src/structure/panes/document/documentPanel/banners/DraftLiveEditBanner.tsx","../src/structure/panes/document/documentPanel/documentViews/FormHeader.tsx","../src/structure/panes/document/documentPanel/documentViews/useConditionalToast.ts","../src/structure/panes/document/documentPanel/documentViews/FormView.tsx","../src/structure/panes/document/documentPanel/DocumentPanel.tsx","../src/structure/panes/document/statusBar/dialogs/constants.ts","../src/structure/panes/document/statusBar/dialogs/ConfirmDialog.tsx","../src/structure/panes/document/statusBar/dialogs/ModalDialog.tsx","../src/structure/panes/document/statusBar/dialogs/PopoverDialog.tsx","../src/structure/panes/document/statusBar/ActionStateDialog.tsx","../src/structure/panes/document/statusBar/ActionMenuButton.tsx","../src/structure/documentActions/DeleteAction.tsx","../src/structure/documentActions/DiscardChangesAction.tsx","../src/structure/documentActions/DuplicateAction.tsx","../src/structure/documentActions/HistoryRestoreAction.tsx","../src/structure/documentActions/__telemetry__/documentActions.telemetry.ts","../src/structure/documentActions/PublishAction.tsx","../src/structure/documentActions/UnpublishAction.tsx","../src/structure/panes/document/statusBar/DocumentStatusBarActions.tsx","../src/structure/panes/document/documentPanel/header/DocumentHeaderTabs.tsx","../src/structure/panes/document/documentPanel/header/perspective/DocumentPerspectiveList.tsx","../src/structure/panes/document/documentPanel/header/DocumentHeaderTitle.tsx","../src/structure/panes/document/documentPanel/header/DocumentPanelHeader.tsx","../src/structure/components/spacerButton/SpacerButton.tsx","../src/structure/panes/document/statusBar/DocumentBadges.tsx","../src/structure/panes/document/statusBar/DocumentStatusPulse/AnimatedStatusIcon.tsx","../src/structure/panes/document/statusBar/DocumentStatusPulse/DocumentStatusPulse.tsx","../src/structure/panes/document/statusBar/DocumentStatusLine.tsx","../src/structure/panes/document/statusBar/RevisionStatusLine.tsx","../src/structure/panes/document/statusBar/useResizeObserver.ts","../src/structure/panes/document/statusBar/DocumentStatusBar.tsx","../src/structure/panes/document/keyboardShortcuts/DocumentActionShortcuts.tsx","../src/structure/panes/document/menuItems.ts","../src/structure/panes/document/usePreviewUrl.ts","../src/structure/panes/document/document-layout/DocumentLayoutError.tsx","../src/structure/panes/document/document-layout/useBundleDeletedToast.tsx","../src/structure/panes/document/document-layout/DocumentLayout.tsx","../src/structure/panes/document/document-layout/useDocumentLayoutComponent.ts","../src/structure/panes/document/__telemetry__/documentPanes.telemetry.ts","../src/structure/panes/document/getInitialValueTemplateOpts.ts","../src/structure/panes/document/DocumentPaneProvider.tsx","../src/structure/panes/document/DocumentEventsPane.tsx","../src/structure/panes/document/DocumentPaneLegacyTimeline.tsx","../src/structure/panes/document/DocumentPaneProviderWrapper.tsx","../src/structure/panes/document/useResetHistoryParams.ts","../src/structure/panes/document/DocumentPane.tsx","../src/structure/panes/documentList/constants.ts","../src/structure/panes/documentList/DocumentListPaneContent.tsx","../src/structure/panes/documentList/helpers.ts","../src/structure/structureBuilder/util/getExtendedProjection.ts","../src/structure/panes/documentList/listenSearchQuery.ts","../src/structure/panes/documentList/useDocumentList.ts","../src/structure/panes/documentList/DocumentListPane.tsx","../src/structure/panes/documentList/PaneHeader.tsx","../../../node_modules/.pnpm/@tanstack+table-core@8.20.5/node_modules/@tanstack/table-core/build/lib/index.mjs","../../../node_modules/.pnpm/@tanstack+react-table@8.20.6_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@tanstack/react-table/build/lib/index.mjs","../src/structure/panes/documentList/sheetList/DocumentSheetListSelect.tsx","../src/structure/panes/documentList/sheetList/DocumentSheetListProvider.tsx","../src/structure/panes/documentList/sheetList/SheetListCell.tsx","../src/structure/panes/documentList/sheetList/useDocumentSheetColumns.tsx","../src/structure/panes/documentList/sheetList/ColumnsControl.tsx","../src/structure/panes/documentList/sheetList/DocumentSheetListFilter.tsx","../src/structure/panes/documentList/sheetList/DocumentSheetListHeader.tsx","../src/structure/panes/documentList/sheetList/DocumentSheetListPaginator.tsx","../src/structure/panes/documentList/sheetList/useDocumentSheetListStore.ts","../src/structure/panes/documentList/sheetList/useDocumentSheetList.ts","../src/structure/panes/documentList/sheetList/DocumentSheetListPane.tsx","../src/structure/panes/documentList/PaneContainer.tsx","../src/structure/structureBuilder/SerializeError.ts","../src/structure/structureBuilder/Sort.ts","../src/structure/structureBuilder/MenuItem.ts","../src/structure/structureBuilder/MenuItemGroup.ts","../src/structure/structureBuilder/util/validateId.ts","../src/structure/structureBuilder/util/getStructureNodeId.ts","../src/structure/structureBuilder/Component.ts","../src/structure/structureBuilder/util/resolveTypeForDocument.ts","../src/structure/structureBuilder/views/View.ts","../src/structure/structureBuilder/views/ComponentView.ts","../src/structure/structureBuilder/views/FormView.ts","../src/structure/structureBuilder/views/index.ts","../src/structure/structureBuilder/Document.ts","../src/structure/structureBuilder/InitialValueTemplateItem.ts","../src/structure/structureBuilder/Intent.ts","../src/structure/structureBuilder/Layout.ts","../src/structure/structureBuilder/GenericList.ts","../src/structure/structureBuilder/DocumentList.ts","../src/structure/structureBuilder/List.ts","../src/structure/structureBuilder/ListItem.ts","../src/structure/structureBuilder/DocumentListItem.ts","../src/structure/structureBuilder/DocumentTypeList.ts","../src/structure/structureBuilder/documentTypeListItems.ts","../src/structure/structureBuilder/createStructureBuilder.ts","../src/structure/documentBadges/LiveEditBadge.ts","../src/structure/getIntentState.ts","../src/structure/panes/document/timeline/constants.ts","../src/structure/panes/document/timeline/helpers.ts","../src/structure/panes/document/timeline/expandableTimelineItemButton.tsx","../src/structure/panes/document/timeline/timeline.styled.tsx","../src/structure/panes/document/timeline/timelineI18n.ts","../src/structure/panes/document/timeline/userAvatarStack.tsx","../src/structure/panes/document/timeline/timelineItem.tsx","../src/structure/panes/document/timeline/utils.ts","../src/structure/panes/document/timeline/timeline.tsx","../src/structure/panes/document/timeline/TimelineError.tsx","../src/structure/panes/document/timeline/timelineMenu.tsx","../src/structure/panes/document/inspectors/changes/ChangesInspector.tsx","../src/structure/panes/document/timeline/events/EventTimelineItem.tsx","../src/structure/panes/document/timeline/events/PublishedEventMenu.tsx","../src/structure/panes/document/timeline/events/EventsTimeline.tsx","../src/structure/panes/document/timeline/events/EventsTimelineMenu.tsx","../src/structure/panes/document/inspectors/changes/EventsInspector.tsx","../src/structure/panes/document/inspectors/changes/EventsSelector.tsx","../src/structure/panes/document/inspectors/changes/HistorySelector.tsx","../src/structure/panes/document/inspectors/changes/ChangesTabs.tsx","../src/structure/panes/document/inspectors/changes/index.ts","../src/structure/panes/document/inspectors/validation/getPathTitles.ts","../src/structure/panes/document/inspectors/validation/ValidationInspector.tsx","../src/structure/panes/document/inspectors/validation/index.ts","../src/structure/router.ts","../src/structure/structureTool.ts","../src/structure/StructureToolProvider.tsx"],"sourcesContent":["import {generateHelpUrl} from '@sanity/generate-help-url'\nimport {type SchemaType} from '@sanity/types'\nimport {difference} from 'lodash'\n\nconst ACTIONS_FLAG = '__experimental_actions'\n\nconst DEFAULT_ACTIONS = ['create', 'update', 'delete', 'publish']\nconst VALID_ACTIONS = DEFAULT_ACTIONS\n\n// todo: enable this when officially deprecating experimental actions\nconst DEPRECATE_EXPERIMENTAL_ACTIONS = false\n\nconst hasWarned = {}\nconst readActions = (schemaType: SchemaType): string[] => {\n if (DEPRECATE_EXPERIMENTAL_ACTIONS && !(schemaType.name in hasWarned)) {\n console.warn(`Heads up! Experimental actions is now deprecated and replaced by Document Actions. Read more about how to migrate on ${generateHelpUrl(\n 'experimental-actions-replaced-by-document-actions',\n )}\".\n`)\n ;(hasWarned as any)[schemaType.name] = true\n }\n\n return ACTIONS_FLAG in schemaType ? (schemaType[ACTIONS_FLAG] as string[]) : DEFAULT_ACTIONS\n}\n\nconst validateActions = (typeName: string, actions: string[]) => {\n if (!Array.isArray(actions)) {\n throw new Error(\n `The value of <type>.${ACTIONS_FLAG} should be an array with any of the actions ${VALID_ACTIONS.join(\n ', ',\n )}`,\n )\n }\n\n const invalid = difference(actions, VALID_ACTIONS)\n\n if (invalid.length > 0) {\n throw new Error(\n `Invalid action${\n invalid.length > 1 ? 's' : ''\n } configured for schema type \"${typeName}\": ${invalid.join(\n ', ',\n )}. Valid actions are: ${VALID_ACTIONS.join(', ')}`,\n )\n }\n\n return actions\n}\n\nexport const resolveEnabledActions = (schemaType: SchemaType): string[] =>\n validateActions(schemaType.name, readActions(schemaType))\n\nexport const isActionEnabled = (schemaType: SchemaType, action: string): boolean =>\n resolveEnabledActions(schemaType).includes(action)\n","import {defineLocaleResourceBundle} from 'sanity'\n\n/**\n * The locale namespace for the structure tool\n *\n * @public\n */\nexport const structureLocaleNamespace = 'structure' as const\n\n/**\n * The default locale bundle for the structure tool, which is US English.\n *\n * @internal\n */\nexport const structureUsEnglishLocaleBundle = defineLocaleResourceBundle({\n locale: 'en-US',\n namespace: structureLocaleNamespace,\n resources: () => import('./resources'),\n})\n\n/**\n * The locale resource keys for the structure tool.\n *\n * @alpha\n * @hidden\n */\nexport type {StructureLocaleResourceKeys} from './resources'\n","import {type SanityDocumentLike} from '@sanity/types'\nimport {unstable_useValuePreview as useValuePreview, useSchema, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../i18n'\n\nexport interface DocTitleProps {\n document: SanityDocumentLike\n}\n\nexport function DocTitle(props: DocTitleProps) {\n const {document: documentValue} = props\n const schema = useSchema()\n const schemaType = schema.get(documentValue._type)\n const {t} = useTranslation(structureLocaleNamespace)\n\n const {error, value} = useValuePreview({\n schemaType: schemaType!,\n value: documentValue,\n })\n\n if (!schemaType) {\n return <code>{t('doc-title.unknown-schema-type.text', {schemaType: documentValue._type})}</code>\n }\n\n if (error) {\n return <>{t('doc-title.error.text', {errorMessage: error.message})}</>\n }\n\n return (\n <>\n {value?.title || (\n <span style={{color: 'var(--card-muted-fg-color)'}}>{t('doc-title.fallback.text')}</span>\n )}\n </>\n )\n}\n","import {InfoOutlineIcon} from '@sanity/icons'\nimport {Box, Flex, Inline, rem, Text} from '@sanity/ui'\nimport {useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Tooltip} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\n\nexport const ChevronWrapper = styled(Box)`\n margin-left: auto;\n`\n\nexport const CrossDatasetReferencesDetails = styled.details`\n flex: none;\n\n &[open] ${ChevronWrapper} {\n transform: rotate(180deg);\n }\n`\n\nexport const CrossDatasetReferencesSummary = styled.summary`\n list-style: none;\n\n &::-webkit-details-marker {\n display: none;\n }\n`\n\nexport const Table = styled.table`\n width: 100%;\n text-align: left;\n padding: 0 ${({theme}) => rem(theme.sanity.space[2])};\n border-collapse: collapse;\n\n th {\n padding: ${({theme}) => rem(theme.sanity.space[1])};\n }\n\n td {\n padding: 0 ${({theme}) => rem(theme.sanity.space[1])};\n }\n\n tr > *:last-child {\n text-align: right;\n }\n`\n\nexport const DocumentIdFlex = styled(Flex)`\n min-height: 33px;\n`\n\nexport const OtherReferenceCount = (props: {totalCount: number; references: unknown[]}) => {\n const {t} = useTranslation(structureLocaleNamespace)\n const difference = props.totalCount - props.references.length\n\n if (!difference) return null\n\n return (\n <Box padding={2}>\n <Inline space={2}>\n <Text size={1} muted>\n {t('confirm-delete-dialog.other-reference-count.title', {count: difference})}\n </Text>\n\n <Tooltip\n portal\n placement=\"top\"\n content={t('confirm-delete-dialog.other-reference-count.tooltip')}\n >\n <Text size={1} muted>\n <InfoOutlineIcon />\n </Text>\n </Tooltip>\n </Inline>\n </Box>\n )\n}\n","import {type SanityDocument, type SchemaType} from '@sanity/types'\nimport {Flex} from '@sanity/ui'\nimport {isNumber, isString} from 'lodash'\nimport {type ComponentType, isValidElement, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {\n type DocumentPresence,\n DocumentPreviewPresence,\n type DocumentPreviewStore,\n DocumentStatus,\n DocumentStatusIndicator,\n type GeneralPreviewLayoutKey,\n getPreviewStateObservable,\n getPreviewValueWithFallback,\n isRecord,\n SanityDefaultPreview,\n usePerspective,\n useReleases,\n} from 'sanity'\n\nimport {TooltipDelayGroupProvider} from '../../../ui-components'\n\nexport interface PaneItemPreviewProps {\n documentPreviewStore: DocumentPreviewStore\n icon: ComponentType | false\n layout: GeneralPreviewLayoutKey\n presence?: DocumentPresence[]\n schemaType: SchemaType\n value: SanityDocument\n}\n\n/**\n * Preview component for _documents_ rendered in structure panes.\n *\n * Note that non-document previews are not handled by this component,\n * despite being pane items! Non-document previews bypass this entirely\n * and are rendered by `<SanityDefaultPreview>`.\n */\nexport function PaneItemPreview(props: PaneItemPreviewProps) {\n const {icon, layout, presence, schemaType, value} = props\n const title =\n (isRecord(value.title) && isValidElement(value.title)) ||\n isString(value.title) ||\n isNumber(value.title)\n ? value.title\n : null\n\n const releases = useReleases()\n const {perspectiveStack, selectedPerspectiveName} = usePerspective()\n const previewStateObservable = useMemo(\n () =>\n getPreviewStateObservable(props.documentPreviewStore, schemaType, value._id, title, {\n bundleIds: releases.releasesIds,\n bundleStack: perspectiveStack,\n }),\n [\n props.documentPreviewStore,\n schemaType,\n value._id,\n title,\n releases.releasesIds,\n perspectiveStack,\n ],\n )\n\n const {\n draft,\n published,\n version,\n versions,\n isLoading: previewIsLoading,\n } = useObservable(previewStateObservable, {\n draft: null,\n isLoading: true,\n published: null,\n version: null,\n versions: {},\n selectedPerspectiveName,\n })\n\n const isLoading = previewIsLoading || releases.loading\n\n const status = isLoading ? null : (\n <TooltipDelayGroupProvider>\n <Flex align=\"center\" gap={3}>\n {presence && presence.length > 0 && <DocumentPreviewPresence presence={presence} />}\n <DocumentStatusIndicator draft={draft} published={published} versions={versions} />\n </Flex>\n </TooltipDelayGroupProvider>\n )\n\n const tooltip = <DocumentStatus draft={draft} published={published} versions={versions} />\n\n return (\n <SanityDefaultPreview\n {...getPreviewValueWithFallback({\n value,\n draft,\n published,\n version,\n perspective: selectedPerspectiveName,\n })}\n isPlaceholder={isLoading}\n icon={icon}\n layout={layout}\n status={status}\n tooltip={tooltip}\n />\n )\n}\n","import {type ComponentType, type ForwardedRef, forwardRef, useContext, useMemo} from 'react'\nimport {PaneRouterContext} from 'sanity/_singletons'\nimport {StateLink} from 'sanity/router'\n\nimport {type BackLinkProps} from './types'\n\n/**\n * @internal\n */\nexport const BackLink = forwardRef(function BackLink(\n props: BackLinkProps,\n ref: ForwardedRef<HTMLAnchorElement>,\n) {\n const {routerPanesState, groupIndex} = useContext(PaneRouterContext)\n const panes = useMemo(() => routerPanesState.slice(0, groupIndex), [groupIndex, routerPanesState])\n const state = useMemo(() => ({panes}), [panes])\n\n return <StateLink {...props} ref={ref} state={state} />\n}) as ComponentType<BackLinkProps>\n","import {useContext} from 'react'\nimport {PaneLayoutContext} from 'sanity/_singletons'\n\nimport {type PaneLayoutContextValue} from './types'\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport function usePaneLayout(): PaneLayoutContextValue {\n const pane = useContext(PaneLayoutContext)\n\n if (!pane) {\n throw new Error('PaneLayout: missing context value')\n }\n\n return pane\n}\n","import {useContext} from 'react'\nimport {PaneRouterContext} from 'sanity/_singletons'\n\nimport {type PaneRouterContextValue} from './types'\n\n/**\n *\n * @hidden\n * @beta\n */\nexport function usePaneRouter(): PaneRouterContextValue {\n return useContext(PaneRouterContext)\n}\n","import {type SanityDocument, type SchemaType} from '@sanity/types'\nimport {type ReactNode, useCallback} from 'react'\nimport {\n type FIXME,\n getPublishedId,\n PreviewCard,\n useDocumentPresence,\n useDocumentPreviewStore,\n} from 'sanity'\n\nimport {PaneItemPreview} from '../paneItem/PaneItemPreview'\nimport {usePaneRouter} from '../paneRouter'\n\nconst EMPTY_ARRAY: [] = []\n\ninterface ReferencePreviewLinkProps {\n onClick?: () => void\n type: SchemaType & {icon?: any}\n value: SanityDocument\n}\n\nexport function ReferencePreviewLink(props: ReferencePreviewLinkProps) {\n const {onClick, type, value} = props\n const publishedId = getPublishedId(value?._id)\n const documentPresence = useDocumentPresence(publishedId)\n const documentPreviewStore = useDocumentPreviewStore()\n const {ReferenceChildLink} = usePaneRouter()\n\n const Link = useCallback(\n function LinkComponent(linkProps: {children: ReactNode}) {\n return (\n <ReferenceChildLink\n documentId={value?._id}\n documentType={type?.name}\n parentRefPath={EMPTY_ARRAY}\n {...linkProps}\n />\n )\n },\n [ReferenceChildLink, type?.name, value?._id],\n )\n\n return (\n <PreviewCard __unstable_focusRing as={Link as FIXME} data-as=\"a\" onClick={onClick} radius={2}>\n <PaneItemPreview\n documentPreviewStore={documentPreviewStore}\n icon={type?.icon}\n layout=\"compact\"\n presence={documentPresence?.length > 0 ? documentPresence : EMPTY_ARRAY}\n schemaType={type}\n value={value}\n />\n </PreviewCard>\n )\n}\n","import {\n ChevronDownIcon,\n CopyIcon,\n DocumentsIcon,\n UnknownIcon,\n WarningOutlineIcon,\n} from '@sanity/icons'\nimport {Box, Card, Flex, Stack, Text, useToast} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {SanityDefaultPreview, Translate, useSchema, useTranslation} from 'sanity'\n\nimport {Button} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {\n ChevronWrapper,\n CrossDatasetReferencesDetails,\n CrossDatasetReferencesSummary,\n DocumentIdFlex,\n OtherReferenceCount,\n Table,\n} from './ConfirmDeleteDialogBody.styles'\nimport {ReferencePreviewLink} from './ReferencePreviewLink'\nimport {type ReferringDocuments} from './useReferringDocuments'\n\ntype DeletionConfirmationDialogBodyProps = Required<ReferringDocuments> & {\n documentTitle: React.ReactNode\n action: 'unpublish' | 'delete'\n onReferenceLinkClick?: () => void\n}\n\n/**\n * The inner part of the `ConfirmDeleteDialog`. This is ran when both the\n * `crossDatasetReferences` and `internalReferences` are loaded.\n */\nexport function ConfirmDeleteDialogBody({\n crossDatasetReferences,\n internalReferences,\n documentTitle,\n totalCount,\n action,\n datasetNames,\n hasUnknownDatasetNames,\n onReferenceLinkClick,\n}: DeletionConfirmationDialogBodyProps) {\n const schema = useSchema()\n const toast = useToast()\n const {t} = useTranslation(structureLocaleNamespace)\n\n const renderPreviewItem = useCallback(\n (item: any) => {\n const type = schema.get(item._type)\n if (type) {\n return <ReferencePreviewLink type={type} value={item} onClick={onReferenceLinkClick} />\n }\n\n return (\n // Padding added to match the ReferencePreviewLink styling\n <Box padding={2}>\n <SanityDefaultPreview\n icon={UnknownIcon}\n title={t('confirm-delete-dialog.preview-item.preview-unavailable.title')}\n subtitle={t('confirm-delete-dialog.preview-item.preview-unavailable.subtitle', {\n documentId: item._id,\n })}\n layout=\"default\"\n />\n </Box>\n )\n },\n [schema, t, onReferenceLinkClick],\n )\n\n if (internalReferences?.totalCount === 0 && crossDatasetReferences?.totalCount === 0) {\n return (\n <Text as=\"p\" size={1}>\n <Translate\n t={t}\n i18nKey=\"confirm-delete-dialog.confirmation.text\"\n context={action}\n components={{DocumentTitle: () => <strong>{documentTitle}</strong>}}\n />\n </Text>\n )\n }\n\n // We do some extra checks to handle cases where you have unavailable dataset\n // name(s) due to permissions, both alone and in combination with known datasets\n\n // This normalizes one or more undefined dataset names to the catch-all `unavailable`\n const normalizedDatasetNames = [\n ...datasetNames,\n ...(hasUnknownDatasetNames ? ['unavailable'] : []),\n ]\n\n const datasetSubtitle = t('confirm-delete-dialog.cdr-summary.subtitle', {\n count: normalizedDatasetNames.length,\n datasets: normalizedDatasetNames.join(', '),\n context: hasUnknownDatasetNames && normalizedDatasetNames.length ? 'unavailable' : '',\n })\n\n return (\n <Flex direction=\"column\" gap={4}>\n <Card padding={3} radius={2} tone=\"caution\" flex=\"none\">\n <Flex>\n <Text aria-hidden=\"true\" size={1}>\n <WarningOutlineIcon />\n </Text>\n <Box flex={1} marginLeft={3}>\n <Text size={1}>\n <Translate\n i18nKey=\"confirm-delete-dialog.referring-document-count.text\"\n components={{DocumentTitle: () => documentTitle}}\n t={t}\n values={{count: totalCount}}\n />\n </Text>\n </Box>\n </Flex>\n </Card>\n <Box flex=\"none\">\n <Text size={1}>\n <Translate\n i18nKey=\"confirm-delete-dialog.referring-documents-descriptor.text\"\n t={t}\n context={action}\n components={{DocumentTitle: () => documentTitle}}\n />\n </Text>\n </Box>\n <Card radius={2} shadow={1} flex=\"auto\" padding={2}>\n <Flex direction=\"column\">\n {internalReferences.totalCount > 0 && (\n <Stack as=\"ul\" marginBottom={2} space={2} data-testid=\"internal-references\">\n {internalReferences?.references.map((item) => (\n <Box as=\"li\" key={item._id}>\n {renderPreviewItem(item)}\n </Box>\n ))}\n\n {internalReferences.totalCount > internalReferences.references.length && (\n <Box as=\"li\" padding={3}>\n <OtherReferenceCount {...internalReferences} />\n </Box>\n )}\n </Stack>\n )}\n\n {crossDatasetReferences.totalCount > 0 && (\n <CrossDatasetReferencesDetails\n data-testid=\"cross-dataset-references\"\n style={{\n // only add the border if needed\n borderTop:\n internalReferences.totalCount > 0\n ? '1px solid var(--card-shadow-outline-color)'\n : undefined,\n }}\n >\n <CrossDatasetReferencesSummary>\n <Card\n as=\"a\"\n marginTop={internalReferences.totalCount > 0 ? 2 : 0}\n radius={2}\n shadow={1}\n paddingY={1}\n >\n <Flex align=\"center\" gap={3} paddingX={3} paddingY={1}>\n <Text size={1}>\n <DocumentsIcon />\n </Text>\n <Stack space={2}>\n <Text textOverflow=\"ellipsis\" size={1}>\n {t('confirm-delete-dialog.cdr-summary.title', {\n count: normalizedDatasetNames.length,\n documentCount: t('confirm-delete-dialog.cdr-summary.document-count', {\n count: crossDatasetReferences.totalCount,\n }),\n })}\n </Text>\n <Text title={datasetSubtitle} textOverflow=\"ellipsis\" size={1} muted>\n {datasetSubtitle}\n </Text>\n </Stack>\n <ChevronWrapper>\n <Text muted size={1}>\n <ChevronDownIcon />\n </Text>\n </ChevronWrapper>\n </Flex>\n </Card>\n </CrossDatasetReferencesSummary>\n\n <Box overflow=\"auto\" paddingTop={2}>\n <Table>\n <thead>\n <tr>\n <th>\n <Text muted size={1} style={{minWidth: '5rem'}} weight=\"medium\">\n {t('confirm-delete-dialog.cdr-table.project-id.label')}\n </Text>\n </th>\n <th>\n <Text muted size={1} weight=\"medium\">\n {t('confirm-delete-dialog.cdr-table.dataset.label')}\n </Text>\n </th>\n <th>\n <Text muted size={1} weight=\"medium\">\n {t('confirm-delete-dialog.cdr-table.document-id.label')}\n </Text>\n </th>\n </tr>\n </thead>\n <tbody>\n {crossDatasetReferences.references\n .filter((reference): reference is Required<typeof reference> => {\n return 'projectId' in reference\n })\n .map(({projectId, datasetName, documentId}, index) => (\n // eslint-disable-next-line react/no-array-index-key\n <tr key={`${documentId}-${index}`}>\n <td>\n <Text size={1}>{projectId}</Text>\n </td>\n <td>\n <Text size={1}>{datasetName || 'unavailable'}</Text>\n </td>\n <td>\n <DocumentIdFlex align=\"center\" gap={2} justify=\"flex-end\">\n <Text textOverflow=\"ellipsis\" size={1}>\n {documentId || 'unavailable'}\n </Text>\n {documentId && (\n <Button\n mode=\"bleed\"\n icon={CopyIcon}\n tooltipProps={{\n content: t(\n 'confirm-delete-dialog.cdr-table.copy-id-button.tooltip',\n ),\n }}\n // eslint-disable-next-line react/jsx-no-bind\n onClick={() => {\n navigator.clipboard\n .writeText(documentId)\n .then(() => {\n toast.push({\n status: 'success',\n title: t(\n 'confirm-delete-dialog.cdr-table.id-copied-toast.title',\n ),\n })\n })\n .catch(() => {\n toast.push({\n status: 'error',\n title: t(\n 'confirm-delete-dialog.cdr-table.id-copied-toast.title-failed',\n ),\n })\n })\n }}\n />\n )}\n </DocumentIdFlex>\n </td>\n </tr>\n ))}\n </tbody>\n </Table>\n\n <OtherReferenceCount {...crossDatasetReferences} />\n </Box>\n </CrossDatasetReferencesDetails>\n )}\n </Flex>\n </Card>\n <Box flex=\"none\">\n <Text size={1}>\n <Translate\n i18nKey=\"confirm-delete-dialog.referential-integrity-disclaimer.text\"\n t={t}\n context={action}\n components={{DocumentTitle: () => documentTitle}}\n />\n </Text>\n </Box>\n </Flex>\n )\n}\n","import {type ClientError, type SanityClient} from '@sanity/client'\nimport {useMemo} from 'react'\nimport {EMPTY, fromEvent, type Observable, of, timer} from 'rxjs'\nimport {\n catchError,\n distinctUntilChanged,\n map,\n shareReplay,\n startWith,\n switchMap,\n} from 'rxjs/operators'\nimport {\n type AvailabilityResponse,\n createHookFromObservableFactory,\n DEFAULT_STUDIO_CLIENT_OPTIONS,\n type DocumentStore,\n getDraftId,\n getPublishedId,\n useClient,\n useDocumentStore,\n} from 'sanity'\n\n// this is used in place of `instanceof` so the matching can be more robust and\n// won't have any issues with dual packages etc\n// https://nodejs.org/api/packages.html#dual-package-hazard\nfunction isClientError(e: unknown): e is ClientError {\n if (typeof e !== 'object') return false\n if (!e) return false\n return 'statusCode' in e && 'response' in e\n}\n\nconst POLL_INTERVAL = 5000\n\n// only fetches when the document is visible\nlet visiblePoll$: Observable<number>\nconst getVisiblePoll$ = () => {\n if (!visiblePoll$) {\n visiblePoll$ = fromEvent(document, 'visibilitychange').pipe(\n // add empty emission to have this fire on creation\n startWith(null),\n map(() => document.visibilityState === 'visible'),\n distinctUntilChanged(),\n switchMap((visible) =>\n visible\n ? // using timer instead of interval since timer will emit on creation\n timer(0, POLL_INTERVAL)\n : EMPTY,\n ),\n shareReplay({refCount: true, bufferSize: 1}),\n )\n }\n return visiblePoll$\n}\n\nexport type ReferringDocuments = {\n isLoading: boolean\n totalCount: number\n projectIds: string[]\n datasetNames: string[]\n hasUnknownDatasetNames: boolean\n internalReferences?: {\n totalCount: number\n references: Array<{_id: string; _type: string}>\n }\n crossDatasetReferences?: {\n totalCount: number\n references: Array<{\n /**\n * The project ID of the document that is currently referencing the subject\n * document. Unlike `documentId` and `datasetName`, this should always be\n * defined.\n */\n projectId: string\n /**\n * The ID of the document that is currently referencing the subject\n * document. This will be omitted if there is no access to the current\n * project and dataset pair (e.g. if no `sanity-project-token` were\n * configured)\n */\n documentId?: string\n /**\n * The dataset name that is currently referencing the subject document.\n * This will be omitted if there is no access to the current project and\n * dataset pair (e.g. if no `sanity-project-token` were configured)\n */\n datasetName?: string\n }>\n }\n}\n\nfunction getDocumentExistence(\n documentId: string,\n {versionedClient}: {versionedClient: SanityClient},\n): Observable<string | undefined> {\n const draftId = getDraftId(documentId)\n const publishedId = getPublishedId(documentId)\n const requestOptions = {\n uri: versionedClient.getDataUrl('doc', `${draftId},${publishedId}`),\n json: true,\n query: {excludeContent: 'true'},\n tag: 'use-referring-documents.document-existence',\n }\n return versionedClient.observable.request<AvailabilityResponse>(requestOptions).pipe(\n map(({omitted}) => {\n const nonExistant = omitted.filter((doc) => doc.reason === 'existence')\n if (nonExistant.length === 2) {\n // None of the documents exist\n return undefined\n }\n\n if (nonExistant.length === 0) {\n // Both exist, so use the published one\n return publishedId\n }\n\n // If the draft does not exist, use the published ID, and vice versa\n return nonExistant.some((doc) => doc.id === draftId) ? publishedId : draftId\n }),\n )\n}\n\n/**\n * fetches the cross-dataset references using the client observable.request\n * method (for that requests can be automatically cancelled)\n */\nfunction fetchCrossDatasetReferences(\n documentId: string,\n context: {versionedClient: SanityClient},\n): Observable<ReferringDocuments['crossDatasetReferences']> {\n const {versionedClient} = context\n\n return getVisiblePoll$().pipe(\n switchMap(() => getDocumentExistence(documentId, context)),\n switchMap((checkDocumentId) => {\n if (!checkDocumentId) {\n return of({totalCount: 0, references: []})\n }\n\n const currentDataset = versionedClient.config().dataset\n\n return versionedClient.observable\n .request({\n url: `/data/references/${currentDataset}/documents/${checkDocumentId}/to?excludeInternalReferences=true&excludePaths=true`,\n tag: 'use-referring-documents.external',\n })\n .pipe(\n catchError((e) => {\n // it's possible that referencing document doesn't exist yet so the\n // API will return a 404. In those cases, we want to catch and return\n // a response with no references\n if (isClientError(e) && e.statusCode === 404) {\n return of({totalCount: 0, references: []})\n }\n\n throw e\n }),\n )\n }),\n )\n}\n\nconst useInternalReferences = createHookFromObservableFactory(\n ([documentId, documentStore]: [string, DocumentStore]) => {\n const referencesClause = '*[references($documentId)][0...100]{_id,_type}'\n const totalClause = 'count(*[references($documentId)])'\n const fetchQuery = `{\"references\":${referencesClause},\"totalCount\":${totalClause}}`\n const listenQuery = '*[references($documentId)]'\n\n return documentStore.listenQuery(\n {fetch: fetchQuery, listen: listenQuery},\n {documentId},\n {tag: 'use-referring-documents', transitions: ['appear', 'disappear'], throttleTime: 5000},\n ) as Observable<ReferringDocuments['internalReferences']>\n },\n)\n\nconst useCrossDatasetReferences = createHookFromObservableFactory(\n ([documentId, versionedClient]: [string, SanityClient]) => {\n // (documentId: string, versionedClient: SanityClient) => {\n return getVisiblePoll$().pipe(\n switchMap(() =>\n fetchCrossDatasetReferences(documentId, {\n versionedClient,\n }),\n ),\n )\n },\n)\n\nexport function useReferringDocuments(documentId: string): ReferringDocuments {\n const versionedClient = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n\n const documentStore = useDocumentStore()\n const publishedId = getPublishedId(documentId)\n\n const [internalReferences, isInternalReferencesLoading] = useInternalReferences(\n useMemo(() => [publishedId, documentStore], [documentStore, publishedId]),\n )\n\n const [crossDatasetReferences, isCrossDatasetReferencesLoading] = useCrossDatasetReferences(\n useMemo(() => [publishedId, versionedClient], [publishedId, versionedClient]),\n )\n\n const projectIds = useMemo(() => {\n return Array.from(\n new Set(\n crossDatasetReferences?.references\n .map((crossDatasetReference) => crossDatasetReference.projectId)\n .filter(Boolean),\n ),\n ).sort()\n }, [crossDatasetReferences?.references])\n\n const datasetNames = useMemo(() => {\n return Array.from(\n new Set<string>(\n crossDatasetReferences?.references\n // .filter((name) => typeof name === 'string')\n .map((crossDatasetReference) => crossDatasetReference?.datasetName || '')\n .filter((datasetName) => Boolean(datasetName) && datasetName !== ''),\n ),\n ).sort()\n }, [crossDatasetReferences?.references])\n\n const hasUnknownDatasetNames = useMemo(() => {\n return Boolean(\n crossDatasetReferences?.references.some(\n (crossDatasetReference) => typeof crossDatasetReference.datasetName !== 'string',\n ),\n )\n }, [crossDatasetReferences?.references])\n\n return {\n totalCount: (internalReferences?.totalCount || 0) + (crossDatasetReferences?.totalCount || 0),\n projectIds,\n datasetNames,\n hasUnknownDatasetNames,\n internalReferences,\n crossDatasetReferences,\n isLoading: isInternalReferencesLoading || isCrossDatasetReferencesLoading,\n }\n}\n","import {Box, Flex} from '@sanity/ui'\nimport {useId, useMemo} from 'react'\nimport {LoadingBlock, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Dialog} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {DocTitle} from '../DocTitle'\nimport {ConfirmDeleteDialogBody} from './ConfirmDeleteDialogBody'\nimport {useReferringDocuments} from './useReferringDocuments'\n\n/** @internal */\nexport const DialogBody = styled(Box)`\n box-sizing: border-box;\n`\n\n/** @internal */\nexport const LoadingContainer = styled(Flex).attrs({\n align: 'center',\n direction: 'column',\n justify: 'center',\n})`\n height: 110px;\n`\n\n/** @internal */\nexport interface ConfirmDeleteDialogProps {\n /**\n * Incoming document ID used to find other referencing documents. This\n * field respects draft IDs (e.g. if you pass in a published ID when one\n * doesn't exist the document title may not show up).\n */\n id: string\n /**\n * The schema typename of the incoming document\n */\n type: string\n /**\n * The name of the action being done. (e.g. the `'unpublish'` action requires\n * the same document deletion confirmation).\n */\n action?: 'delete' | 'unpublish'\n onCancel: () => void\n onConfirm: () => void\n}\n\n/**\n * A confirmation dialog used to prevent unwanted document deletes. Loads all\n * the referencing internal and cross-data references prior to showing the\n * delete button.\n *\n * @internal\n */\nexport function ConfirmDeleteDialog({\n id,\n type,\n action = 'delete',\n onCancel,\n onConfirm,\n}: ConfirmDeleteDialogProps) {\n const {t} = useTranslation(structureLocaleNamespace)\n const dialogId = `deletion-confirmation-${useId()}`\n const {\n internalReferences,\n crossDatasetReferences,\n isLoading,\n totalCount,\n projectIds,\n datasetNames,\n hasUnknownDatasetNames,\n } = useReferringDocuments(id)\n const documentTitle = <DocTitle document={useMemo(() => ({_id: id, _type: type}), [id, type])} />\n const showConfirmButton = !isLoading\n\n return (\n <Dialog\n width={1}\n id={dialogId}\n header={t('confirm-delete-dialog.header.text', {context: action})}\n footer={{\n cancelButton: {\n onClick: onCancel,\n text: t('confirm-delete-dialog.cancel-button.text'),\n },\n confirmButton: showConfirmButton\n ? {\n text:\n totalCount > 0\n ? t('confirm-delete-dialog.confirm-anyway-button.text', {context: action})\n : t('confirm-delete-dialog.confirm-button.text', {context: action}),\n onClick: onConfirm,\n }\n : undefined,\n }}\n onClose={onCancel}\n onClickOutside={onCancel}\n >\n <DialogBody>\n {crossDatasetReferences && internalReferences && !isLoading ? (\n <ConfirmDeleteDialogBody\n crossDatasetReferences={crossDatasetReferences}\n internalReferences={internalReferences}\n documentTitle={documentTitle}\n isLoading={isLoading}\n totalCount={totalCount}\n action={action}\n projectIds={projectIds}\n datasetNames={datasetNames}\n hasUnknownDatasetNames={hasUnknownDatasetNames}\n onReferenceLinkClick={onCancel}\n />\n ) : (\n <LoadingContainer data-testid=\"loading-container\">\n <LoadingBlock showText title={t('confirm-delete-dialog.loading.text')} />\n </LoadingContainer>\n )}\n </DialogBody>\n </Dialog>\n )\n}\n","import {Box, Text} from '@sanity/ui'\nimport {type ComponentProps, useCallback, useId, useState} from 'react'\nimport {useTranslation} from 'sanity'\n\nimport {Dialog, ErrorBoundary} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {ConfirmDeleteDialog, type ConfirmDeleteDialogProps} from './ConfirmDeleteDialog'\n\nexport type {ConfirmDeleteDialogProps}\n\ntype ArgType<T> = T extends (arg: infer U) => unknown ? U : never\ntype ErrorInfo = ArgType<ComponentProps<typeof ErrorBoundary>['onCatch']>\n\n/** @internal */\nfunction ConfirmDeleteDialogContainer(props: ConfirmDeleteDialogProps) {\n const {t} = useTranslation(structureLocaleNamespace)\n const id = useId()\n const [error, setError] = useState<ErrorInfo | null>(null)\n const handleRetry = useCallback(() => setError(null), [])\n\n return error ? (\n <Dialog\n id={`dialog-error-${id}`}\n data-testid=\"confirm-delete-error-dialog\"\n header={t('confirm-delete-dialog.error.title.text')}\n footer={{\n confirmButton: {\n text: t('confirm-delete-dialog.error.retry-button.text'),\n onClick: handleRetry,\n tone: 'default',\n },\n }}\n onClose={props.onCancel}\n >\n <Box padding={4}>\n <Text size={1}>{t('confirm-delete-dialog.error.message.text')}</Text>\n </Box>\n </Dialog>\n ) : (\n <ErrorBoundary onCatch={setError}>\n <ConfirmDeleteDialog {...props} />\n </ErrorBoundary>\n )\n}\n\nexport {ConfirmDeleteDialogContainer as ConfirmDeleteDialog}\n","import {useEffect, useState} from 'react'\n\nexport function Delay({\n children,\n ms = 0,\n}: {\n children?: React.JSX.Element | (() => React.JSX.Element)\n ms?: number\n}): React.JSX.Element {\n const [ready, setReady] = useState(ms <= 0)\n\n useEffect(() => {\n if (ms <= 0) {\n return undefined\n }\n\n const timeoutId = setTimeout(() => setReady(true), ms)\n\n return () => {\n clearTimeout(timeoutId)\n }\n }, [ms])\n\n if (!ready || !children) {\n return <></>\n }\n\n return typeof children === 'function' ? children() : children\n}\n","/**\n * @internal\n */\nexport const PANE_DEBUG = false\n\n/**\n * @internal\n */\nexport const PANE_COLLAPSED_WIDTH = 51\n\n/**\n * @internal\n */\nexport const PANE_DEFAULT_MIN_WIDTH = PANE_COLLAPSED_WIDTH * 4\n","import {Layer} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {usePaneLayout} from './usePaneLayout'\n\nconst Root = styled(Layer)`\n position: relative;\n width: 1px;\n min-width: 1px;\n\n &:before {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 1px;\n background-color: var(--card-border-color);\n }\n\n &:not([data-disabled]) {\n cursor: ew-resize;\n width: 9px;\n min-width: 9px;\n margin: 0 -4px;\n\n &:before {\n left: 4px;\n }\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 9px;\n bottom: 0;\n background-color: var(--card-border-color);\n opacity: 0;\n transition: opacity 150ms;\n }\n\n &[data-dragging]:after,\n &:hover:after {\n opacity: 0.2;\n }\n }\n`\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport function PaneDivider({\n disabled,\n element,\n}: {\n disabled?: boolean\n element: HTMLElement | null\n}) {\n const {resize} = usePaneLayout()\n const [dragging, setDragging] = useState(false)\n\n const handleMouseDown = useCallback(\n (event: any) => {\n if (!element) return\n\n setDragging(true)\n\n event.preventDefault()\n\n const startX = event.pageX\n\n resize('start', element, 0)\n\n const handleMouseMove = (e: MouseEvent) => {\n e.preventDefault()\n\n const deltaX = e.pageX - startX\n\n resize('move', element, deltaX)\n }\n\n const handleMouseUp = (e: MouseEvent) => {\n e.preventDefault()\n\n setDragging(false)\n\n window.removeEventListener('mousemove', handleMouseMove)\n window.removeEventListener('mouseup', handleMouseUp)\n\n resize('end', element, 0)\n }\n\n window.addEventListener('mousemove', handleMouseMove)\n window.addEventListener('mouseup', handleMouseUp)\n },\n [element, resize],\n )\n\n return (\n <Root\n data-disabled={disabled ? '' : undefined}\n data-dragging={dragging ? '' : undefined}\n onMouseDown={handleMouseDown}\n />\n )\n}\n","import {BoundaryElementProvider, Card, type CardProps, Code, Flex} from '@sanity/ui'\nimport {\n type ForwardedRef,\n forwardRef,\n type HTMLProps,\n type ReactNode,\n useCallback,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {IsLastPaneProvider, LegacyLayerProvider} from 'sanity'\nimport {PaneContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {PANE_COLLAPSED_WIDTH, PANE_DEBUG, PANE_DEFAULT_MIN_WIDTH} from './constants'\nimport {PaneDivider} from './PaneDivider'\nimport {usePaneLayout} from './usePaneLayout'\n\ninterface PaneProps {\n children?: ReactNode\n currentMinWidth?: number\n currentMaxWidth?: number\n flex?: number\n id: string\n minWidth?: number\n maxWidth?: number\n selected?: boolean\n}\n\nconst Root = styled(Card)`\n outline: none;\n\n // NOTE: This will render a border to the right side of each pane\n // without taking up physical space.\n box-shadow: 1px 0 0 var(--card-border-color);\n`\n\n/**\n * @hidden\n * @internal\n */\n// eslint-disable-next-line complexity\nexport const Pane = forwardRef(function Pane(\n props: PaneProps &\n Omit<CardProps, 'as' | 'overflow'> &\n Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'hidden' | 'id' | 'style'>,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) {\n const {\n children,\n currentMinWidth: currentMinWidthProp,\n currentMaxWidth: currentMaxWidthProp,\n flex: flexProp = 1,\n id,\n minWidth: minWidthProp,\n maxWidth: maxWidthProp,\n selected = false,\n ...restProps\n } = props\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const {\n collapse,\n collapsed: layoutCollapsed,\n expand,\n expandedElement,\n mount,\n panes,\n } = usePaneLayout()\n const pane = panes.find((p) => p.element === rootElement)\n const paneIndex = pane && panes.indexOf(pane)\n const nextPane = typeof paneIndex === 'number' ? panes[paneIndex + 1] : undefined\n const isLast = paneIndex === panes.length - 1\n const expanded = expandedElement === rootElement\n const collapsed = layoutCollapsed ? false : pane?.collapsed || false\n const nextCollapsed = nextPane?.collapsed || false\n const ref = useRef<HTMLDivElement | null>(null)\n const flex = pane?.flex ?? flexProp\n const currentMinWidth = pane?.currentMinWidth ?? currentMinWidthProp\n const currentMaxWidth = pane?.currentMaxWidth ?? currentMaxWidthProp\n\n // Forward ref to parent\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n const setRef = useCallback((refValue: HTMLDivElement | null) => {\n setRootElement(refValue)\n ref.current = refValue\n }, [])\n\n useLayoutEffect(() => {\n if (!rootElement) return undefined\n return mount(rootElement, {\n currentMinWidth: currentMinWidthProp,\n currentMaxWidth: currentMaxWidthProp,\n flex: flexProp,\n id,\n minWidth: minWidthProp,\n maxWidth: maxWidthProp,\n })\n }, [\n currentMinWidthProp,\n currentMaxWidthProp,\n flexProp,\n id,\n minWidthProp,\n maxWidthProp,\n mount,\n rootElement,\n ])\n\n const handleCollapse = useCallback(() => {\n if (!rootElement) return\n collapse(rootElement)\n }, [collapse, rootElement])\n\n const handleExpand = useCallback(() => {\n if (!rootElement) return\n expand(rootElement)\n }, [expand, rootElement])\n\n const contextValue = useMemo(\n () => ({\n collapse: handleCollapse,\n collapsed: layoutCollapsed ? false : collapsed,\n expand: handleExpand,\n index: paneIndex,\n isLast,\n rootElement,\n }),\n [collapsed, handleCollapse, handleExpand, isLast, layoutCollapsed, paneIndex, rootElement],\n )\n\n const minWidth = useMemo(() => {\n if (layoutCollapsed) {\n return undefined\n }\n\n if (collapsed) return PANE_COLLAPSED_WIDTH\n\n if (currentMinWidth === 0) {\n return minWidthProp || PANE_DEFAULT_MIN_WIDTH\n }\n\n if (isLast) {\n return minWidthProp || PANE_DEFAULT_MIN_WIDTH\n }\n\n return currentMinWidth || minWidthProp || PANE_DEFAULT_MIN_WIDTH\n }, [collapsed, currentMinWidth, isLast, layoutCollapsed, minWidthProp])\n\n const maxWidth = useMemo(() => {\n if (collapsed) return PANE_COLLAPSED_WIDTH\n\n if (layoutCollapsed && isLast) {\n return undefined\n }\n\n if (isLast) {\n if (maxWidthProp) {\n return currentMaxWidth ?? maxWidthProp\n }\n\n return undefined\n }\n\n return currentMaxWidth ?? maxWidthProp\n }, [collapsed, currentMaxWidth, isLast, layoutCollapsed, maxWidthProp])\n\n const hidden = layoutCollapsed && !isLast\n\n const divider = useMemo(\n () =>\n !isLast &&\n !layoutCollapsed && (\n <LegacyLayerProvider zOffset=\"paneResizer\">\n <PaneDivider disabled={collapsed || nextCollapsed} element={rootElement} />\n </LegacyLayerProvider>\n ),\n [collapsed, isLast, layoutCollapsed, nextCollapsed, rootElement],\n )\n\n const style = useMemo(\n () => ({\n flex,\n minWidth,\n maxWidth: maxWidth === Infinity ? undefined : maxWidth,\n }),\n [flex, minWidth, maxWidth],\n )\n\n return (\n <>\n <LegacyLayerProvider zOffset=\"pane\">\n <PaneContext.Provider value={contextValue}>\n <IsLastPaneProvider isLastPane={isLast}>\n <Root\n data-testid=\"pane\"\n data-ui=\"Pane\"\n tone=\"inherit\"\n hidden={hidden}\n id={id}\n overflow={layoutCollapsed ? undefined : 'hidden'}\n {...restProps}\n data-pane-collapsed={collapsed ? '' : undefined}\n data-pane-index={paneIndex}\n data-pane-selected={selected ? '' : undefined}\n ref={setRef}\n style={style}\n >\n {PANE_DEBUG && (\n <Card padding={4} tone={expanded ? 'primary' : 'caution'}>\n <Code size={1}>\n {[\n `#${paneIndex}`,\n `collapsed=${collapsed}`,\n `currentMinWidth=${currentMinWidth}`,\n `currentMaxWidth=${currentMaxWidth}`,\n `flex=${flex}`,\n `minWidth=${minWidth}`,\n `maxWidth=${maxWidth}`,\n ].join('\\n')}\n </Code>\n </Card>\n )}\n\n <BoundaryElementProvider element={rootElement}>\n {!hidden && (\n <Flex direction=\"column\" height=\"fill\">\n {children}\n </Flex>\n )}\n </BoundaryElementProvider>\n </Root>\n </IsLastPaneProvider>\n </PaneContext.Provider>\n </LegacyLayerProvider>\n\n {divider}\n </>\n )\n})\n","import {Card} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const Root = styled(Card)`\n position: relative;\n outline: none;\n`\n\nRoot.displayName = 'PaneContent__root'\n","import {useContext} from 'react'\nimport {PaneContext} from 'sanity/_singletons'\n\nimport {type PaneContextValue} from './types'\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport function usePane(): PaneContextValue {\n const pane = useContext(PaneContext)\n\n if (!pane) {\n throw new Error('Pane: missing context value')\n }\n\n return pane\n}\n","import {type BoxOverflow} from '@sanity/ui'\nimport {type ElementType, type ForwardedRef, forwardRef, type HTMLProps} from 'react'\n\nimport {Root} from './PaneContent.styles'\nimport {usePane} from './usePane'\nimport {usePaneLayout} from './usePaneLayout'\n\ninterface PaneContentProps {\n as?: ElementType | keyof React.JSX.IntrinsicElements\n overflow?: BoxOverflow\n padding?: number | number[]\n}\n\n/**\n * @hidden\n * @internal\n */\nexport const PaneContent = forwardRef(function PaneContent(\n props: PaneContentProps & Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref'>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {as, children, overflow, padding, ...restProps} = props\n const {collapsed} = usePane()\n const {collapsed: layoutCollapsed} = usePaneLayout()\n\n return (\n <Root\n data-testid=\"pane-content\"\n forwardedAs={as}\n {...restProps}\n flex={1}\n hidden={collapsed}\n overflow={layoutCollapsed ? undefined : overflow}\n padding={padding}\n ref={ref}\n tone=\"inherit\"\n >\n {children}\n </Root>\n )\n})\n","/**\n * Remove the spaces and lower case the string\n *\n * @param str - string to remove the spaces and lower case\n * @returns str with no spaces and lower case\n */\nexport function toLowerCaseNoSpaces(str: string | undefined): string {\n if (!str) return ''\n return str.toLocaleLowerCase().replaceAll(' ', '')\n}\n","import {CheckmarkIcon} from '@sanity/icons'\nimport {MenuDivider, Text} from '@sanity/ui'\nimport {type MouseEvent, useCallback} from 'react'\nimport {TooltipOfDisabled, useGetI18nText, useI18nText} from 'sanity'\nimport {useIntentLink} from 'sanity/router'\n\nimport {MenuGroup, MenuItem, type PopoverProps} from '../../../ui-components'\nimport {type Intent} from '../../structureBuilder'\nimport {toLowerCaseNoSpaces} from '../../util/toLowerCaseNoSpaces'\nimport {type _PaneMenuItem, type _PaneMenuNode} from './types'\n\nconst MENU_GROUP_POPOVER_PROPS: PopoverProps = {\n constrainSize: true,\n placement: 'left-start',\n portal: true,\n}\n\nexport function PaneMenuButtonItem(props: {\n disabled?: boolean\n isAfterGroup: boolean\n node: _PaneMenuNode\n}) {\n const {disabled, isAfterGroup, node} = props\n const getI18nText = useGetI18nText('i18n' in node ? node : undefined)\n\n if (node.type === 'divider') {\n return <MenuDivider />\n }\n\n const {title} = getI18nText(node)\n\n if (node.type === 'group') {\n if (node.children.length === 0) {\n return null\n }\n\n if (node.expanded) {\n return (\n <>\n {isAfterGroup && <MenuDivider />}\n {node.children.map((child, childIndex) => (\n <PaneMenuButtonItem\n disabled={disabled || Boolean(node.disabled)}\n isAfterGroup={node.children[childIndex - 1]?.type === 'group'}\n key={child.key}\n node={child}\n />\n ))}\n </>\n )\n }\n\n return (\n <>\n {isAfterGroup && <MenuDivider />}\n <MenuGroup\n disabled={disabled}\n icon={node.icon}\n popover={MENU_GROUP_POPOVER_PROPS}\n text={title}\n >\n {node.children.map((child, childIndex) => (\n <PaneMenuButtonItem\n disabled={disabled || Boolean(node.disabled)}\n isAfterGroup={node.children[childIndex - 1]?.type === 'group'}\n key={child.key}\n node={child}\n />\n ))}\n </MenuGroup>\n </>\n )\n }\n\n return (\n <>\n {isAfterGroup && <MenuDivider />}\n <PaneContextMenuItemResolver disabled={disabled} node={node} />\n </>\n )\n}\n\nfunction PaneContextMenuItemResolver(props: {disabled?: boolean; node: _PaneMenuItem}) {\n const {node} = props\n\n if (node.intent) {\n return <PaneContextIntentMenuItem {...props} intent={node.intent} />\n }\n\n return <PaneContextMenuItem {...props} />\n}\n\nfunction PaneContextMenuItem(props: {disabled?: boolean; node: _PaneMenuItem}) {\n const {disabled, node} = props\n const tooltipContent = typeof node.disabled === 'object' && (\n <Text size={1}>{node.disabled.reason}</Text>\n )\n const {title} = useI18nText(node)\n\n return (\n <TooltipOfDisabled content={tooltipContent} placement=\"left\">\n <MenuItem\n disabled={disabled || Boolean(node.disabled)}\n hotkeys={node.hotkey?.split('+')}\n icon={node.icon}\n iconRight={node.iconRight || (node.selected && CheckmarkIcon)}\n // eslint-disable-next-line react/jsx-handler-names\n onClick={node.onAction}\n pressed={node.selected}\n text={title}\n tone={node.tone}\n data-testid={`action-${toLowerCaseNoSpaces(node.title)}`}\n />\n </TooltipOfDisabled>\n )\n}\n\nfunction PaneContextIntentMenuItem(props: {\n disabled?: boolean\n intent: Intent\n node: _PaneMenuItem\n}) {\n const {disabled, intent, node} = props\n const tooltipContent = typeof node.disabled === 'object' && (\n <Text size={1}>{node.disabled.reason}</Text>\n )\n const intentLink = useIntentLink({intent: intent.type, params: intent.params})\n\n const handleClick = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n intentLink.onClick(event)\n node.onAction()\n },\n [intentLink, node],\n )\n\n const {title} = useI18nText(node)\n\n return (\n <TooltipOfDisabled content={tooltipContent} placement=\"left\">\n <MenuItem\n as=\"a\"\n disabled={disabled || Boolean(node.disabled)}\n hotkeys={node.hotkey?.split('+')}\n href={intentLink.href}\n icon={node.icon}\n iconRight={node.selected ? CheckmarkIcon : undefined}\n onClick={handleClick}\n pressed={node.selected}\n text={title}\n tone={node.tone}\n />\n </TooltipOfDisabled>\n )\n}\n","import {Menu, MenuDivider} from '@sanity/ui'\nimport {type ReactNode, useId} from 'react'\nimport {ContextMenuButton} from 'sanity'\n\nimport {MenuButton, type PopoverProps} from '../../../ui-components'\nimport {PaneMenuButtonItem} from './PaneMenuButtonItem'\nimport {type _PaneMenuItem, type _PaneMenuNode} from './types'\n\ninterface PaneContextMenuButtonProps {\n nodes: _PaneMenuNode[]\n actionsNodes?: ReactNode\n}\n\nconst CONTEXT_MENU_POPOVER_PROPS: PopoverProps = {\n constrainSize: true,\n placement: 'bottom',\n portal: true,\n}\n\nfunction nodesHasTone(nodes: _PaneMenuNode[], tone: NonNullable<_PaneMenuItem['tone']>): boolean {\n return nodes.some((node) => {\n return (\n (node.type === 'item' && node.tone === tone) ||\n (node.type === 'group' && nodesHasTone(node.children, tone))\n )\n })\n}\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport function PaneContextMenuButton(props: PaneContextMenuButtonProps) {\n const {nodes, actionsNodes} = props\n const id = useId()\n\n const hasCritical = nodesHasTone(nodes, 'critical')\n const hasCaution = nodesHasTone(nodes, 'caution')\n\n return (\n <MenuButton\n button={\n <ContextMenuButton\n // eslint-disable-next-line no-nested-ternary\n tone={hasCritical ? 'critical' : hasCaution ? 'caution' : undefined}\n data-testid=\"pane-context-menu-button\"\n />\n }\n id={id}\n menu={\n <Menu>\n {actionsNodes && (\n <>\n {actionsNodes}\n <MenuDivider />\n </>\n )}\n {nodes.map((node, nodeIndex) => {\n const isAfterGroup = nodes[nodeIndex - 1]?.type === 'group'\n return <PaneMenuButtonItem isAfterGroup={isAfterGroup} key={node.key} node={node} />\n })}\n </Menu>\n }\n popover={CONTEXT_MENU_POPOVER_PROPS}\n />\n )\n}\n","import {Card, Layer} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const Root = styled(Layer)`\n position: sticky;\n bottom: 0;\n\n &:before {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: -1px;\n border-bottom: 1px solid var(--card-border-color);\n }\n`\n\nexport const RootCard = styled(Card)`\n padding-bottom: env(safe-area-inset-bottom);\n`\n","import {Box} from '@sanity/ui'\nimport {type ForwardedRef, forwardRef, type ReactNode} from 'react'\nimport {LegacyLayerProvider} from 'sanity'\n\nimport {Root, RootCard} from './PaneFooter.styles'\nimport {usePane} from './usePane'\n\ninterface PaneFooterProps {\n children?: ReactNode\n padding?: number | number[]\n}\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport const PaneFooter = forwardRef(function PaneFooter(\n props: PaneFooterProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {children, padding} = props\n const {collapsed} = usePane()\n\n return (\n <LegacyLayerProvider zOffset=\"paneFooter\">\n <Root data-testid=\"pane-footer\" hidden={collapsed} ref={ref}>\n <RootCard tone=\"inherit\">\n <Box padding={padding}>{children}</Box>\n </RootCard>\n </Root>\n </LegacyLayerProvider>\n )\n})\n","import {Box, Card, Flex, Layer, rgba, Text, TextSkeleton, type Theme} from '@sanity/ui'\nimport {css, styled} from 'styled-components'\n\ninterface RootProps {\n $border?: boolean\n}\n\nexport const Root = styled(Layer)<RootProps>(({$border}) => {\n return css`\n line-height: 0;\n position: sticky;\n top: 0;\n\n &:not([data-collapsed]):after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: -1px;\n border-bottom: 1px solid ${$border ? 'var(--card-border-color)' : 'transparent'};\n opacity: 1;\n }\n `\n})\n\nexport const Layout = styled(Flex)`\n transform-origin: calc(51px / 2);\n\n [data-collapsed] > div > & {\n transform: rotate(90deg);\n }\n`\n\nexport const TitleCard = styled(Card)(({theme}: {theme: Theme}) => {\n const {fg, bg} = theme.sanity.color.card.enabled\n\n // Disable color updates on hover\n return css`\n background-color: ${bg};\n\n [data-ui='Text'] {\n color: ${fg};\n }\n `\n})\n\nexport const TitleTextSkeleton = styled(TextSkeleton)`\n width: 66%;\n max-width: 175px;\n`\n\nexport const TitleText = styled(Text)`\n cursor: default;\n outline: none;\n`\n\nexport const TabsBox = styled(Box)(({theme}: {theme: Theme}) => {\n const {color, space} = theme.sanity\n\n return css`\n overflow: hidden;\n overflow: clip;\n position: relative;\n\n & > div {\n white-space: nowrap;\n overflow: auto;\n /* Hide scrollbars */\n scrollbar-width: none;\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n }\n }\n\n /* right padding */\n & > div:after {\n content: '';\n display: inline-block;\n top: 0;\n right: 0;\n bottom: 0;\n width: ${space[3]}px;\n height: 1px;\n }\n\n /* Gradient that makes it look like tabs disappear into nothing (looks nicer) */\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n background: linear-gradient(to right, ${rgba(color.base.bg, 0)}, var(--card-bg-color));\n width: ${space[3]}px;\n pointer-events: none;\n }\n `\n})\n","import {Box, Card, Flex, LayerProvider, useElementRect} from '@sanity/ui'\nimport {type ForwardedRef, forwardRef, type ReactNode, useCallback, useMemo} from 'react'\nimport {LegacyLayerProvider} from 'sanity'\n\nimport {Layout, Root, TabsBox, TitleCard, TitleText, TitleTextSkeleton} from './PaneHeader.styles'\nimport {usePane} from './usePane'\n\n/**\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport interface PaneHeaderProps {\n actions?: ReactNode\n backButton?: ReactNode\n border?: boolean\n contentAfter?: ReactNode\n loading?: boolean\n subActions?: ReactNode\n tabIndex?: number\n tabs?: ReactNode\n title: ReactNode\n}\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport const PaneHeader = forwardRef(function PaneHeader(\n props: PaneHeaderProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {actions, backButton, border, contentAfter, loading, subActions, tabs, tabIndex, title} =\n props\n const {collapse, collapsed, expand, rootElement: paneElement} = usePane()\n const paneRect = useElementRect(paneElement || null)\n\n const layoutStyle = useMemo(\n () => ({\n width: collapsed ? paneRect?.height || window.innerHeight : undefined,\n }),\n [collapsed, paneRect],\n )\n\n const handleTitleClick = useCallback(() => {\n if (collapsed) return\n collapse()\n }, [collapse, collapsed])\n\n const handleLayoutClick = useCallback(() => {\n if (!collapsed) return\n expand()\n }, [collapsed, expand])\n\n const showTabsOrSubActions = Boolean(!collapsed && (tabs || subActions))\n\n return (\n <LayerProvider zOffset={100}>\n <Root\n $border={border}\n data-collapsed={collapsed ? '' : undefined}\n data-testid=\"pane-header\"\n ref={ref}\n >\n <LegacyLayerProvider zOffset=\"paneHeader\">\n <Card data-collapsed={collapsed ? '' : undefined} tone=\"inherit\">\n <Layout\n gap={1}\n onClick={handleLayoutClick}\n padding={3}\n paddingBottom={collapsed || !showTabsOrSubActions ? 3 : 2}\n sizing=\"border\"\n style={layoutStyle}\n >\n {backButton && <Box flex=\"none\">{backButton}</Box>}\n\n <TitleCard\n __unstable_focusRing\n flex={1}\n onClick={handleTitleClick}\n paddingLeft={backButton ? 1 : 2}\n padding={2}\n tabIndex={tabIndex}\n >\n {loading && (\n <Box padding={2}>\n <TitleTextSkeleton animated radius={1} size={1} />\n </Box>\n )}\n {!loading && (\n <TitleText size={1} textOverflow=\"ellipsis\" weight=\"semibold\">\n <Box flex={1} overflow=\"auto\">\n {title}\n </Box>\n </TitleText>\n )}\n </TitleCard>\n\n {actions && (\n <Box hidden={collapsed}>\n <LegacyLayerProvider zOffset=\"paneHeader\">{actions}</LegacyLayerProvider>\n </Box>\n )}\n </Layout>\n\n {showTabsOrSubActions && (\n <Flex\n align=\"center\"\n hidden={collapsed}\n overflow=\"auto\"\n paddingBottom={3}\n paddingX={3}\n >\n <TabsBox flex={1} marginRight={subActions ? 3 : 0}>\n {tabs}\n </TabsBox>\n\n {subActions && subActions}\n </Flex>\n )}\n\n {!collapsed && contentAfter && contentAfter}\n </Card>\n </LegacyLayerProvider>\n </Root>\n </LayerProvider>\n )\n})\n","import {UnknownIcon} from '@sanity/icons'\nimport {Menu} from '@sanity/ui'\nimport {type MouseEvent, useCallback, useId} from 'react'\nimport {StatusButton, useI18nText, useTranslation} from 'sanity'\nimport {useIntentLink} from 'sanity/router'\n\nimport {Button, MenuButton} from '../../../ui-components'\nimport {type Intent} from '../../structureBuilder'\nimport {PaneMenuButtonItem} from './PaneMenuButtonItem'\nimport {type _PaneMenuGroup, type _PaneMenuItem} from './types'\n\nfunction getDisabledReason(node: _PaneMenuItem) {\n if (!node.disabled) {\n return {disabledReason: undefined, ariaLabel: undefined, isDisabled: false}\n }\n\n /**\n * This component supports receiving a `reason: string | react.ReactNode`.\n * We are casting it as string, to avoid the ts error, as content will be rendered into the tooltip which only accepts string, but it won't crash if it's a ReactNode.\n * For the aria label, we want to check if it's actually a string, to avoid generating an aria-label with the value `[object Object]`.\n */\n const disabledReason =\n typeof node.disabled === 'object' ? (node.disabled.reason as string) : undefined\n const ariaLabel =\n typeof node.disabled === 'object' && typeof node.disabled?.reason === 'string'\n ? node.disabled.reason\n : 'This is disabled'\n\n return {disabledReason, ariaLabel, isDisabled: Boolean(node.disabled)}\n}\nexport interface PaneHeaderActionButtonProps {\n node: _PaneMenuItem | _PaneMenuGroup\n}\n\nexport function PaneHeaderActionButton(props: PaneHeaderActionButtonProps) {\n const {node} = props\n\n if (node.type === 'item') {\n return <PaneHeaderMenuItemActionButton node={node} />\n }\n\n if (node.type === 'group') {\n return <PaneHeaderMenuGroupActionButton node={node} />\n }\n\n console.warn('unknown menu node (expected `type: \"item\" | \"group\"`):', node)\n\n return null\n}\n\nexport interface PaneHeaderMenuItemActionButtonProps {\n node: _PaneMenuItem\n}\n\nexport function PaneHeaderMenuItemActionButton(props: PaneHeaderMenuItemActionButtonProps) {\n const {node} = props\n const {title} = useI18nText(node)\n const {t} = useTranslation()\n\n if (node.intent) {\n return <PaneHeaderActionIntentButton {...props} intent={node.intent} />\n }\n\n const {disabledReason, ariaLabel, isDisabled} = getDisabledReason(node)\n\n return (\n <StatusButton\n disabled={isDisabled}\n icon={node.icon}\n // eslint-disable-next-line react/jsx-handler-names\n onClick={node.onAction}\n selected={node.selected}\n tone={node.tone}\n aria-label={ariaLabel || title || t('status-button.aria-label')}\n tooltipProps={{\n hotkeys: !isDisabled && node.hotkey ? node.hotkey.split('+') : undefined,\n content: isDisabled ? disabledReason : title,\n }}\n />\n )\n}\n\nfunction PaneHeaderActionIntentButton(props: {intent: Intent; node: _PaneMenuItem}) {\n const {intent, node} = props\n const intentLink = useIntentLink({intent: intent.type, params: intent.params})\n const {t} = useTranslation()\n\n const handleClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n intentLink.onClick(event)\n node.onAction()\n },\n [intentLink, node],\n )\n\n const {disabledReason, ariaLabel, isDisabled} = getDisabledReason(node)\n\n return (\n <StatusButton\n forwardedAs=\"a\"\n disabled={isDisabled}\n href={intentLink.href}\n icon={node.icon}\n onClick={handleClick}\n selected={node.selected}\n tone={node.tone}\n aria-label={ariaLabel || node.title || t('status-button.aria-label')}\n tooltipProps={{\n hotkeys: !isDisabled && node.hotkey ? node.hotkey.split('+') : undefined,\n content: isDisabled ? disabledReason : node.title,\n placement: 'bottom',\n portal: true,\n }}\n />\n )\n}\n\nexport interface PaneHeaderMenuGroupActionButtonProps {\n node: _PaneMenuGroup\n}\n\nfunction PaneHeaderMenuGroupActionButton(props: PaneHeaderMenuGroupActionButtonProps) {\n const {node} = props\n const {title} = useI18nText(node)\n\n return (\n <MenuButton\n button={\n <Button\n disabled={!!node.disabled}\n icon={node.icon ?? UnknownIcon}\n label={title}\n mode=\"bleed\"\n tooltipProps={{content: node.title, portal: true}}\n />\n }\n id={useId()}\n menu={\n <Menu>\n {node.children.map((child, idx) => {\n return (\n <PaneMenuButtonItem\n disabled={Boolean(node.disabled)}\n isAfterGroup={node.children[idx - 1]?.type === 'group'}\n key={child.key}\n node={child}\n />\n )\n })}\n </Menu>\n }\n />\n )\n}\n","import {Card} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const Root = styled(Card)`\n transition: opacity 200ms;\n position: relative;\n z-index: 1;\n padding-left: env(safe-area-inset-left);\n padding-right: env(safe-area-inset-right);\n opacity: 0;\n\n &:not([hidden]) {\n display: flex;\n }\n\n &:not([data-collapsed]) {\n overflow: auto;\n }\n\n &[data-mounted] {\n opacity: 1;\n }\n\n &[data-resizing] {\n pointer-events: none;\n }\n`\n","import {PANE_DEFAULT_MIN_WIDTH} from '../constants'\nimport {type PaneConfigOpts, type PaneResizeCache} from '../types'\n\nexport function _calcPaneResize(\n cache: PaneResizeCache,\n left: PaneConfigOpts,\n right: PaneConfigOpts,\n deltaX: number,\n): {leftFlex: number; leftW: number; rightFlex: number; rightW: number} {\n const sum = {\n flex: cache.left.flex + cache.right.flex,\n width: cache.left.width + cache.right.width,\n }\n\n const leftMinWidth = left.minWidth ?? PANE_DEFAULT_MIN_WIDTH\n const rightMinWidth = right.minWidth ?? PANE_DEFAULT_MIN_WIDTH\n\n const leftMaxWidth = Math.min(left.maxWidth || Infinity, sum.width - rightMinWidth)\n const rightMaxWidth = Math.min(right.maxWidth || Infinity, sum.width - leftMinWidth)\n\n // Get min. delta X\n let minDeltaX = leftMinWidth - cache.left.width\n const rightMinDeltaX = cache.right.width - rightMaxWidth\n if (minDeltaX < rightMinDeltaX) {\n minDeltaX = rightMinDeltaX\n }\n\n // Get max. delta X\n let maxDeltaX = cache.right.width - rightMinWidth\n const leftMaxDeltaX = leftMaxWidth - cache.left.width\n if (maxDeltaX > leftMaxDeltaX) {\n maxDeltaX = leftMaxDeltaX\n }\n\n const _deltaX = Math.min(Math.max(deltaX, minDeltaX), maxDeltaX)\n\n const leftW = cache.left.width + _deltaX\n const rightW = cache.right.width - _deltaX\n\n const leftFlex = (leftW / sum.width) * sum.flex\n const rightFlex = (rightW / sum.width) * sum.flex\n\n return {leftFlex, leftW, rightFlex, rightW}\n}\n","/**\n * @internal\n */\nexport function _getDOMPath(rootElement: HTMLElement, el: HTMLElement): number[] {\n const path: number[] = []\n\n let e = el\n\n while (e !== rootElement) {\n const parentElement = e.parentElement\n\n if (!parentElement) return path\n\n const children = Array.from(parentElement.childNodes)\n const index = children.indexOf(e)\n\n path.unshift(index)\n\n if (parentElement === rootElement) {\n return path\n }\n\n e = parentElement\n }\n\n return path\n}\n","import {_getDOMPath} from './_getDOMPath'\n\nconst EMPTY_PATH: number[] = []\n\n/**\n * @internal\n */\nexport function _sortElements(rootElement: HTMLElement, elements: HTMLElement[]): void {\n // Create a map containing the DOM path of each pane element.\n // The DOM path is relative to the `rootElement`, and is used in the next step for sorting.\n const map = new WeakMap<HTMLElement, number[]>()\n\n for (const element of elements) {\n map.set(element, _getDOMPath(rootElement, element))\n }\n\n const _sortByElementPath = (a: HTMLElement, b: HTMLElement) => {\n const _a = map.get(a) || EMPTY_PATH\n const _b = map.get(b) || EMPTY_PATH\n\n const len = Math.max(_a.length, _b.length)\n\n // Loop until there are different indexes\n for (let i = 0; i < len; i += 1) {\n const aIndex = _a[i] || -1\n const bIndex = _b[i] || -1\n\n if (aIndex !== bIndex) {\n return aIndex - bIndex\n }\n }\n\n return 0\n }\n\n elements.sort(_sortByElementPath)\n}\n","import {PANE_COLLAPSED_WIDTH, PANE_DEFAULT_MIN_WIDTH} from './constants'\nimport {_calcPaneResize, _sortElements} from './helpers'\nimport {\n type PaneConfigOpts,\n type PaneData,\n type PaneResizeCache,\n type PaneResizeData,\n} from './types'\n\nexport interface PaneLayoutState {\n expandedElement: HTMLElement | null\n panes: PaneData[]\n resizing: boolean\n}\n\nexport type PaneLayoutStateObserver = (state: PaneLayoutState) => void\n\nexport interface PaneLayoutController {\n collapse: (element: HTMLElement) => void\n expand: (element: HTMLElement) => void\n mount: (element: HTMLElement, options: PaneConfigOpts) => () => void\n resize: (type: 'start' | 'move' | 'end', leftElement: HTMLElement, deltaX: number) => void\n setRootElement: (nextRootElement: HTMLElement | null) => void\n setRootWidth: (nextRootWidth: number) => void\n subscribe: (observer: PaneLayoutStateObserver) => () => void\n}\n\nexport function createPaneLayoutController(): PaneLayoutController {\n const observers: PaneLayoutStateObserver[] = []\n const elements: HTMLElement[] = []\n const optionsMap = new WeakMap<HTMLElement, PaneConfigOpts & {original: PaneConfigOpts}>()\n const userCollapsedElementSet = new Set<HTMLElement>()\n const cache: Partial<PaneResizeCache> = {}\n\n // Mutable internal state\n let rootElement: HTMLElement | null = null\n let rootWidth = 0\n let expandedElement: HTMLElement | null = null\n let resizeDataMap = new Map<HTMLElement, PaneResizeData>()\n let resizing = false\n\n function collapse(element: HTMLElement) {\n userCollapsedElementSet.add(element)\n\n if (expandedElement === element) {\n expandedElement = null\n }\n\n _notifyObservers()\n }\n\n function expand(element: HTMLElement) {\n userCollapsedElementSet.delete(element)\n\n expandedElement = element\n\n _notifyObservers()\n }\n\n function mount(element: HTMLElement, options: PaneConfigOpts) {\n optionsMap.set(element, {...options, original: options})\n\n elements.push(element)\n\n if (rootElement) {\n _sortElements(rootElement, elements)\n }\n\n expand(element)\n\n return () => {\n const idx = elements.indexOf(element)\n\n if (idx > -1) {\n elements.splice(idx, 1)\n }\n\n optionsMap.delete(element)\n\n _notifyObservers()\n }\n }\n\n // eslint-disable-next-line complexity\n function resize(type: 'start' | 'move' | 'end', leftElement: HTMLElement, deltaX: number) {\n const leftIndex = elements.indexOf(leftElement)\n const leftOptions = optionsMap.get(leftElement)\n\n if (!leftOptions) return\n\n const rightElement = elements[leftIndex + 1]\n const rightOptions = optionsMap.get(rightElement)\n\n if (!rightOptions) return\n\n if (type === 'start') {\n resizing = true\n\n cache.left = {\n element: leftElement,\n flex: leftOptions.flex || 1,\n width: leftElement.offsetWidth,\n }\n\n cache.right = {\n element: rightElement,\n flex: rightOptions.flex || 1,\n width: rightElement.offsetWidth,\n }\n\n _notifyObservers()\n }\n\n if (type === 'move' && cache.left && cache.right) {\n resizeDataMap = new Map<HTMLElement, PaneResizeData>()\n\n const {leftW, rightW, leftFlex, rightFlex} = _calcPaneResize(\n cache as PaneResizeCache,\n leftOptions,\n rightOptions,\n deltaX,\n )\n\n // update resize cache\n resizeDataMap.set(leftElement, {flex: leftFlex, width: leftW})\n resizeDataMap.set(rightElement, {flex: rightFlex, width: rightW})\n\n _notifyObservers()\n }\n\n if (type === 'end') {\n resizing = false\n\n const leftResizeData = resizeDataMap.get(leftElement)\n const rightResizeData = resizeDataMap.get(rightElement)\n\n // Update left options\n optionsMap.set(leftElement, {\n ...leftOptions,\n currentMinWidth: 0,\n currentMaxWidth: leftOptions.maxWidth ?? Infinity,\n flex: leftResizeData?.flex ?? leftOptions.flex,\n })\n\n // Update right options\n optionsMap.set(rightElement, {\n ...rightOptions,\n currentMinWidth: 0,\n currentMaxWidth: leftOptions.maxWidth ?? Infinity,\n flex: rightResizeData?.flex ?? rightOptions.flex,\n })\n\n // Reset resize data map\n resizeDataMap = new Map()\n\n // Reset cache\n delete cache.left\n delete cache.right\n\n _notifyObservers()\n }\n }\n\n function setRootElement(nextRootElement: HTMLElement | null) {\n rootElement = nextRootElement\n }\n\n function setRootWidth(nextRootWidth: number) {\n rootWidth = nextRootWidth\n _notifyObservers()\n }\n\n function subscribe(observer: PaneLayoutStateObserver) {\n observers.push(observer)\n\n return () => {\n const idx = observers.push(observer)\n\n if (idx > -1) {\n observers.splice(idx, 1)\n }\n }\n }\n\n return {collapse, expand, mount, resize, setRootElement, setRootWidth, subscribe}\n\n // eslint-disable-next-line complexity\n function _notifyObservers() {\n if (!rootWidth) return\n\n // Create a reversed array of pane elements, so we can loop over them backwards.\n // Place the expanded element first (so it has the least chance of being collapsed).\n const _elements: HTMLElement[] = []\n for (const element of elements) {\n if (element !== expandedElement) {\n _elements.unshift(element)\n }\n }\n if (expandedElement) {\n _elements.unshift(expandedElement)\n }\n\n const dataMap = new WeakMap<HTMLElement, PaneData>()\n const len = _elements.length\n const lastElement = _elements[0]\n const collapsedWidth = (len - 1) * PANE_COLLAPSED_WIDTH\n\n let remaingWidth = rootWidth - collapsedWidth\n\n for (const element of _elements) {\n const options = optionsMap.get(element)\n\n if (!options) {\n continue\n }\n\n const minWidth = options.currentMinWidth || options.minWidth || PANE_DEFAULT_MIN_WIDTH\n const isLast = element === lastElement\n\n // A pane is collapsed if:\n // - it’s explictly collapsed by the user\n const userCollapsed = userCollapsedElementSet.has(element)\n // - it’s minimum width is larger than the remaining width\n const sizeCollapsed = minWidth > remaingWidth\n // - if the element is not the last (expanded pane)\n const collapsed = isLast ? false : userCollapsed || sizeCollapsed\n\n const resizeData = resizeDataMap.get(element)\n\n // Collect pane data\n dataMap.set(element, {\n element: element,\n collapsed: collapsed,\n currentMinWidth: resizeData?.width ?? options.currentMinWidth,\n currentMaxWidth: resizeData?.width ?? options.currentMaxWidth,\n flex: resizeData?.flex ?? options.flex ?? 1,\n })\n\n // Update remaining width\n if (collapsed) {\n remaingWidth -= PANE_COLLAPSED_WIDTH\n } else {\n remaingWidth -= minWidth - PANE_COLLAPSED_WIDTH\n }\n }\n\n const panes: PaneData[] = []\n\n for (const element of elements) {\n const data = dataMap.get(element)\n\n if (data) panes.push(data)\n }\n\n for (const observer of observers) {\n observer({\n expandedElement: expandedElement || elements[elements.length - 1] || null,\n panes,\n resizing,\n })\n }\n }\n}\n","import {type CardProps, useElementRect} from '@sanity/ui'\nimport {type HTMLProps, useEffect, useMemo, useState} from 'react'\nimport {PaneLayoutContext} from 'sanity/_singletons'\n\nimport {Root} from './PaneLayout.styles'\nimport {createPaneLayoutController, type PaneLayoutState} from './paneLayoutController'\nimport {type PaneLayoutContextValue} from './types'\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport interface PaneLayoutProps {\n minWidth?: number\n onCollapse?: () => void\n onExpand?: () => void\n}\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport function PaneLayout(\n props: PaneLayoutProps &\n CardProps &\n Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'wrap'>,\n) {\n const {children, minWidth, onCollapse, onExpand, ...restProps} = props\n const [controller] = useState(() => createPaneLayoutController())\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const rootRect = useElementRect(rootElement)\n const width = rootRect?.width || 0\n const collapsed = width === undefined || !minWidth ? undefined : width < minWidth\n const [state, setState] = useState<PaneLayoutState>({\n expandedElement: null,\n panes: [],\n resizing: false,\n })\n\n // Set root element\n useEffect(() => controller.setRootElement(rootElement), [controller, rootElement])\n\n // Set root size\n useEffect(() => controller.setRootWidth(width), [controller, width])\n\n // Subscribe to state changes\n useEffect(() => controller.subscribe(setState), [controller])\n\n // Call the `onCollapse` and `onExpand` callbacks as the `collapsed` boolean changes\n useEffect(() => {\n if (collapsed === undefined) return\n if (collapsed && onCollapse) onCollapse()\n if (!collapsed && onExpand) onExpand()\n }, [collapsed, onCollapse, onExpand])\n\n // This is the context value that gives each pane the information they need\n const paneLayout: PaneLayoutContextValue = useMemo(\n () => ({\n collapse: controller.collapse,\n collapsed,\n expand: controller.expand,\n expandedElement: state.expandedElement,\n mount: controller.mount,\n panes: state.panes,\n resize: controller.resize,\n resizing: state.resizing,\n }),\n [collapsed, controller, state.expandedElement, state.panes, state.resizing],\n )\n\n return (\n <PaneLayoutContext.Provider value={paneLayout}>\n <Root\n data-ui=\"PaneLayout\"\n {...restProps}\n data-collapsed={collapsed ? '' : undefined}\n // The `data-resizing` attribute is used to improve cursor behavior\n data-resizing={state.resizing ? '' : undefined}\n // The `data-mounted` attribute is used to fade in the layout and prevent flash of\n // non-collapsed panes\n data-mounted={width ? '' : undefined}\n ref={setRootElement}\n >\n {children}\n </Root>\n </PaneLayoutContext.Provider>\n )\n}\n","/* eslint-disable camelcase */\n\nimport {negate} from 'lodash'\n\nimport {type _PaneMenuGroup, type _PaneMenuItem, type _PaneMenuNode} from './components/pane/types'\nimport {type DocumentFieldMenuActionNode, type PaneMenuItem, type PaneMenuItemGroup} from './types'\n\nexport function isMenuNodeButton(node: _PaneMenuNode): node is _PaneMenuItem | _PaneMenuGroup {\n return (node.type === 'item' || node.type === 'group') && node.renderAsButton\n}\n\nexport const isNotMenuNodeButton = negate(isMenuNodeButton)\n\nexport function resolveMenuNodes(params: {\n actionHandler: (item: PaneMenuItem) => void\n fieldActions?: DocumentFieldMenuActionNode[]\n menuItems: PaneMenuItem[]\n menuItemGroups: PaneMenuItemGroup[]\n}): _PaneMenuNode[] {\n const {fieldActions = [], menuItems, menuItemGroups} = params\n\n const nodes: _PaneMenuNode[] = []\n\n let keyOffset = 0\n\n for (let i = 0; i < fieldActions.length; i += 1) {\n const a = fieldActions[i]\n\n nodes.push(mapFieldActionToPaneMenuNode(a, `${i}-${a.type}`))\n }\n\n keyOffset += nodes.length\n\n const groups: _PaneMenuGroup[] = []\n\n for (const itemGroup of menuItemGroups) {\n const group = groups.find((g) => g.key === itemGroup.id)\n\n if (!group) {\n groups.push({\n type: 'group',\n key: itemGroup.id,\n\n children: [],\n expanded: true,\n renderAsButton: false,\n title: itemGroup.title,\n i18n: itemGroup.i18n,\n })\n }\n }\n\n const ungroupedItems: _PaneMenuItem[] = []\n\n for (let i = 0; i < menuItems.length; i += 1) {\n const item = menuItems[i]\n\n let group = item.group && groups.find((g) => g.key === item.group)\n\n if (item.group && !group) {\n group = {\n type: 'group',\n key: item.group,\n\n expanded: true,\n icon: item.icon,\n title: item.group,\n children: [],\n renderAsButton: false,\n }\n groups.push(group)\n }\n\n if (group) {\n group.children.push({\n type: 'item',\n key: `${keyOffset + i}-item`,\n\n hotkey: item.shortcut,\n icon: item.icon,\n intent: item.intent,\n onAction: () => params.actionHandler(item),\n renderAsButton: item.showAsAction ?? false,\n selected: item.selected,\n title: item.title,\n i18n: item.i18n,\n tone: item.tone,\n })\n } else {\n ungroupedItems.push({\n type: 'item',\n key: `${keyOffset + i}-item`,\n\n hotkey: item.shortcut,\n icon: item.icon,\n intent: item.intent,\n onAction: () => params.actionHandler(item),\n renderAsButton: item.showAsAction ?? false,\n selected: item.selected,\n title: item.title,\n i18n: item.i18n,\n tone: item.tone,\n })\n }\n }\n\n return [...ungroupedItems, ...groups, ...nodes]\n}\n\nfunction mapFieldActionToPaneMenuNode(a: DocumentFieldMenuActionNode, key: string): _PaneMenuNode {\n if (a.type === 'divider') {\n return {\n type: 'divider',\n key,\n }\n }\n\n if (a.type === 'group') {\n return {\n type: 'group',\n key,\n\n children: a.children.map((child, childIdx) =>\n mapFieldActionToPaneMenuNode(child, `${key}-${childIdx}-${child.type}`),\n ),\n disabled: a.disabled,\n expanded: a.expanded ?? true,\n icon: a.icon,\n title: a.title,\n i18n: a.i18n,\n renderAsButton: a.renderAsButton ?? false,\n }\n }\n\n return {\n type: 'item',\n key,\n intent: a.intent,\n disabled: a.disabled,\n icon: a.icon,\n iconRight: a.iconRight,\n onAction: a.onAction,\n renderAsButton: a.renderAsButton ?? false,\n selected: a.selected,\n title: a.title,\n i18n: a.i18n,\n tone: a.tone,\n }\n}\n","import {type ComponentProps, type ForwardedRef, forwardRef, type ReactNode, useMemo} from 'react'\nimport {IntentLink} from 'sanity/router'\n\nimport {Button, type ButtonProps} from '../../ui-components'\nimport {type PaneMenuItem} from '../types'\n\ntype RouterIntent = NonNullable<PaneMenuItem['intent']>\n\nexport const IntentButton = forwardRef(function IntentButton(\n props: {\n intent: RouterIntent\n } & ButtonProps &\n Omit<ComponentProps<typeof Button>, 'as' | 'href' | 'type'>,\n ref: ForwardedRef<HTMLAnchorElement>,\n) {\n const {intent, ...restProps} = props\n\n const Link = useMemo(\n () =>\n // eslint-disable-next-line @typescript-eslint/no-shadow\n forwardRef(function Link(\n linkProps: {children: ReactNode},\n linkRef: ForwardedRef<HTMLAnchorElement>,\n ) {\n return (\n <IntentLink\n {...linkProps}\n intent={intent.type}\n params={intent.params}\n ref={linkRef}\n searchParams={intent.searchParams}\n />\n )\n }),\n [intent],\n )\n\n return props.disabled ? (\n <Button {...restProps} as=\"a\" role=\"link\" aria-disabled=\"true\" />\n ) : (\n <Button {...restProps} as={Link} data-as=\"a\" ref={ref as ForwardedRef<HTMLButtonElement>} />\n )\n})\n","import {type ComponentProps, type ReactNode} from 'react'\nimport {InsufficientPermissionsMessage, useCurrentUser, useTranslation} from 'sanity'\n\nimport {Tooltip} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\n\ninterface InsufficientPermissionsMessageTooltipProps {\n reveal: boolean\n /**\n * delegates to `InsufficientPermissionsMessage`'s `context` prop\n * @see InsufficientPermissionsMessage\n */\n context: ComponentProps<typeof InsufficientPermissionsMessage>['context']\n loading: boolean\n children: ReactNode\n}\n\nexport function InsufficientPermissionsMessageTooltip({\n reveal,\n context,\n loading,\n children,\n}: InsufficientPermissionsMessageTooltipProps) {\n const currentUser = useCurrentUser()\n const {t} = useTranslation(structureLocaleNamespace)\n\n if (!reveal) {\n return <>{children}</>\n }\n\n return (\n <Tooltip\n content={\n loading ? (\n t('insufficient-permissions-message-tooltip.loading-text')\n ) : (\n <InsufficientPermissionsMessage context={context} currentUser={currentUser} />\n )\n }\n portal\n >\n {/* this wrapping div is to allow mouse events */}\n {/* while the child element is disabled */}\n <div>{children}</div>\n </Tooltip>\n )\n}\n","import {AddIcon} from '@sanity/icons'\nimport {Menu} from '@sanity/ui'\nimport {type ComponentProps, type ForwardedRef, forwardRef, useMemo} from 'react'\nimport {\n type InitialValueTemplateItem,\n isPublishedPerspective,\n LATEST,\n type Template,\n type TemplatePermissionsResult,\n useGetI18nText,\n useIsReleaseActive,\n usePerspective,\n useTemplatePermissions,\n useTemplates,\n useTranslation,\n} from 'sanity'\nimport {IntentLink} from 'sanity/router'\n\nimport {Button, MenuButton, MenuItem, type PopoverProps} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {IntentButton} from '../IntentButton'\nimport {InsufficientPermissionsMessageTooltip} from './InsufficientPermissionsMessageTooltip'\n\nexport type PaneHeaderIntentProps = ComponentProps<typeof IntentButton>['intent']\n\nconst POPOVER_PROPS: PopoverProps = {\n constrainSize: true,\n placement: 'bottom',\n portal: true,\n}\n\nconst getIntent = (\n templates: Template[],\n item: InitialValueTemplateItem,\n version?: string,\n): PaneHeaderIntentProps | null => {\n const isBundleIntent = version && version !== LATEST && !isPublishedPerspective(version)\n const typeName = templates.find((t) => t.id === item.templateId)?.schemaType\n if (!typeName) return null\n\n const baseParams = {\n template: item.templateId,\n type: typeName,\n version: isBundleIntent ? version : undefined,\n id: item.initialDocumentId,\n }\n\n return {\n type: 'create',\n params: item.parameters ? [baseParams, item.parameters] : baseParams,\n searchParams: isBundleIntent ? [['perspective', version]] : undefined,\n }\n}\n\ninterface PaneHeaderCreateButtonProps {\n templateItems: InitialValueTemplateItem[]\n}\n\nexport function PaneHeaderCreateButton({templateItems}: PaneHeaderCreateButtonProps) {\n const templates = useTemplates()\n const {selectedReleaseId} = usePerspective()\n const isReleaseActive = useIsReleaseActive()\n\n const {t} = useTranslation(structureLocaleNamespace)\n const {t: tCore} = useTranslation()\n const getI18nText = useGetI18nText([...templateItems, ...templates])\n\n const [templatePermissions, isTemplatePermissionsLoading] = useTemplatePermissions({\n templateItems,\n })\n\n const nothingGranted = useMemo(() => {\n return (\n !isTemplatePermissionsLoading &&\n templatePermissions?.every((permission) => !permission.granted)\n )\n }, [isTemplatePermissionsLoading, templatePermissions])\n\n const permissionsById = useMemo(() => {\n if (!templatePermissions) return {}\n return templatePermissions.reduce<Record<string, TemplatePermissionsResult | undefined>>(\n (acc, permission) => {\n acc[permission.id] = permission\n return acc\n },\n {},\n )\n }, [templatePermissions])\n\n if (nothingGranted) {\n return (\n <InsufficientPermissionsMessageTooltip\n context=\"create-document-type\"\n reveal\n loading={isTemplatePermissionsLoading}\n >\n <Button\n aria-label={t('pane-header.disabled-created-button.aria-label')}\n icon={AddIcon}\n data-testid=\"action-intent-button\"\n disabled\n mode=\"bleed\"\n // This button handles the tooltip in a special way, won't reuse the forced tooltip.\n tooltipProps={null}\n />\n </InsufficientPermissionsMessageTooltip>\n )\n }\n\n if (templateItems.length === 1) {\n const firstItem = templateItems[0]\n const permissions = permissionsById[firstItem.id]\n const disabled = !permissions?.granted || !isReleaseActive\n const intent = getIntent(templates, firstItem, selectedReleaseId)\n if (!intent) return null\n\n return (\n <InsufficientPermissionsMessageTooltip\n reveal={!permissions?.granted}\n loading={isTemplatePermissionsLoading}\n context=\"create-document-type\"\n >\n <IntentButton\n aria-label={getI18nText(firstItem).title}\n icon={firstItem.icon || AddIcon}\n intent={intent}\n mode=\"bleed\"\n disabled={disabled}\n data-testid=\"action-intent-button\"\n tooltipProps={\n disabled\n ? {content: tCore('new-document.disabled-release.tooltip')}\n : {content: t('pane-header.create-new-button.tooltip')}\n }\n />\n </InsufficientPermissionsMessageTooltip>\n )\n }\n\n return (\n <MenuButton\n button={\n <Button\n icon={AddIcon}\n mode=\"bleed\"\n disabled={!isReleaseActive}\n data-testid=\"multi-action-intent-button\"\n tooltipProps={\n isReleaseActive\n ? {content: t('pane-header.create-new-button.tooltip')}\n : {content: tCore('new-document.disabled-release.tooltip')}\n }\n />\n }\n id=\"create-menu\"\n menu={\n <Menu>\n {templateItems.map((item, itemIndex) => {\n const permissions = permissionsById[item.id]\n const disabled = !permissions?.granted\n const intent = getIntent(templates, item, selectedReleaseId)\n const template = templates.find((i) => i.id === item.templateId)\n if (!template || !intent) return null\n\n const Link = forwardRef((linkProps, linkRef: ForwardedRef<never>) =>\n disabled ? (\n <button type=\"button\" disabled {...linkProps} ref={linkRef} />\n ) : (\n <IntentLink\n {...linkProps}\n intent={intent.type}\n params={intent.params}\n searchParams={intent.searchParams}\n ref={linkRef}\n />\n ),\n )\n\n Link.displayName = 'Link'\n\n const {title} = getI18nText({\n ...item,\n // replace the title with the template title\n title: item.title || getI18nText(template).title,\n })\n\n return (\n <InsufficientPermissionsMessageTooltip\n context=\"create-document-type\"\n key={item.id}\n reveal={disabled}\n loading={isTemplatePermissionsLoading}\n >\n <MenuItem\n as={Link}\n data-as={disabled ? 'button' : 'a'}\n text={title}\n aria-label={\n disabled ? t('pane-header.disabled-created-button.aria-label') : title\n }\n disabled={disabled}\n data-testid={`action-intent-button-${itemIndex}`}\n />\n </InsufficientPermissionsMessageTooltip>\n )\n })}\n </Menu>\n }\n popover={POPOVER_PROPS}\n />\n )\n}\n","import {Flex} from '@sanity/ui'\nimport {uniqBy} from 'lodash'\nimport {memo, useCallback, useMemo} from 'react'\nimport {EMPTY_ARRAY, EMPTY_OBJECT, type InitialValueTemplateItem, useTemplates} from 'sanity'\n\nimport {isMenuNodeButton, isNotMenuNodeButton, resolveMenuNodes} from '../../menuNodes'\nimport {\n type PaneMenuItem,\n type PaneMenuItemGroup,\n type StructureToolPaneActionHandler,\n} from '../../types'\nimport {PaneContextMenuButton} from '../pane/PaneContextMenuButton'\nimport {PaneHeaderActionButton} from '../pane/PaneHeaderActionButton'\nimport {PaneHeaderCreateButton} from './PaneHeaderCreateButton'\n\nfunction isNonNullable<T>(value: T): value is NonNullable<T> {\n return value !== null && value !== undefined\n}\n\n/**\n * hashes an object to a string where the order of the keys don't matter\n */\nconst hashObject = (value: unknown) => {\n const sortObject = (v: unknown): unknown => {\n if (typeof v !== 'object' || !v) return v\n if (Array.isArray(v)) return v.map(sortObject)\n return Object.entries(v).sort(([keyA], [keyB]) => keyA.localeCompare(keyB, 'en'))\n }\n\n const normalize = (v: unknown) => JSON.parse(JSON.stringify(v))\n\n return JSON.stringify(sortObject(normalize(value)))\n}\n\ninterface PaneHeaderActionsProps {\n initialValueTemplateItems?: InitialValueTemplateItem[]\n menuItems?: PaneMenuItem[]\n menuItemGroups?: PaneMenuItemGroup[]\n actionHandlers?: Record<string, StructureToolPaneActionHandler>\n}\n\nexport const PaneHeaderActions = memo(function PaneHeaderActions(props: PaneHeaderActionsProps) {\n const {\n initialValueTemplateItems: initialValueTemplateItemsFromStructure = EMPTY_ARRAY,\n menuItems = EMPTY_ARRAY,\n menuItemGroups = EMPTY_ARRAY,\n actionHandlers = EMPTY_OBJECT as Record<string, StructureToolPaneActionHandler>,\n } = props\n\n const templates = useTemplates()\n\n const handleAction = useCallback(\n (item: PaneMenuItem) => {\n if (typeof item.action === 'string' && !(item.action in actionHandlers)) {\n console.warn('No handler for action:', item.action)\n return false\n }\n\n const handler =\n // eslint-disable-next-line no-nested-ternary\n typeof item.action === 'function'\n ? item.action\n : typeof item.action === 'string'\n ? actionHandlers[item.action]\n : null\n\n if (handler) {\n handler(item.params as Record<string, string>)\n return true\n }\n\n return false\n },\n [actionHandlers],\n )\n\n const menuNodes = useMemo(\n () =>\n resolveMenuNodes({\n actionHandler: handleAction,\n menuItemGroups,\n menuItems: menuItems\n // remove items with `create` intents because those will get combined\n // into one action button (see `initialValueTemplateItemFromMenuItems`)\n .filter((item) => item.intent?.type !== 'create'),\n }),\n [handleAction, menuItemGroups, menuItems],\n )\n\n const actionNodes = useMemo(() => menuNodes.filter(isMenuNodeButton), [menuNodes])\n const contextMenuNodes = useMemo(() => menuNodes.filter(isNotMenuNodeButton), [menuNodes])\n\n const initialValueTemplateItemFromMenuItems = useMemo(() => {\n return menuItems\n .map((item, menuItemIndex) => {\n if (item.intent?.type !== 'create') return null\n\n const {params} = item.intent\n if (!params) return null\n\n const intentParams = Array.isArray(params) ? params[0] : params\n const templateParams = Array.isArray(params) ? params[1] : undefined\n\n // fallback to the schema type name as the template ID.\n // by default, the initial template values are populated from every\n // document type in the schema\n const templateId = intentParams.template || intentParams.type\n if (!templateId) return null\n\n // eslint-disable-next-line max-nested-callbacks\n const template = templates.find((t) => t.id === templateId)\n // the template doesn't exist then the action might be disabled\n if (!template) return null\n\n const initialDocumentId = intentParams.id\n\n return {\n item,\n template,\n templateParams,\n menuItemIndex,\n initialDocumentId,\n }\n })\n .filter(isNonNullable)\n .map(({initialDocumentId, item, template, menuItemIndex, templateParams}) => {\n const initialValueTemplateItem: InitialValueTemplateItem = {\n id: `menuItem${menuItemIndex}`,\n initialDocumentId,\n templateId: template.id,\n type: 'initialValueTemplateItem',\n title: item.title || template.title,\n i18n: item.i18n || template.i18n,\n icon: item.icon as InitialValueTemplateItem['icon'],\n description: template.description,\n parameters: templateParams,\n schemaType: template.schemaType,\n }\n\n return initialValueTemplateItem\n })\n }, [menuItems, templates])\n\n const combinedInitialValueTemplates = useMemo(() => {\n // this de-dupes create actions\n return uniqBy(\n [...initialValueTemplateItemFromMenuItems, ...initialValueTemplateItemsFromStructure],\n (item) => hashObject([item.initialDocumentId, item.templateId, item.parameters]),\n )\n }, [initialValueTemplateItemFromMenuItems, initialValueTemplateItemsFromStructure])\n\n return (\n <Flex gap={1}>\n {combinedInitialValueTemplates.length > 0 && (\n <PaneHeaderCreateButton templateItems={combinedInitialValueTemplates} />\n )}\n\n {actionNodes.map((node) => (\n <PaneHeaderActionButton key={node.key} node={node} />\n ))}\n\n {contextMenuNodes.length > 0 && <PaneContextMenuButton nodes={contextMenuNodes} />}\n </Flex>\n )\n})\n","import {WarningOutlineIcon} from '@sanity/icons'\nimport {type SanityDocument} from '@sanity/types'\nimport {type GeneralPreviewLayoutKey, SanityDefaultPreview, Translate, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../i18n'\n\nexport interface MissingSchemaTypeProps {\n layout?: GeneralPreviewLayoutKey\n value: SanityDocument\n}\n\nexport function MissingSchemaType(props: MissingSchemaTypeProps) {\n const {t} = useTranslation(structureLocaleNamespace)\n const {layout, value} = props\n\n return (\n <SanityDefaultPreview\n title={\n <em>\n <Translate\n t={t}\n i18nKey=\"pane-item.missing-schema-type.title\"\n components={{Code: 'code'}}\n values={{documentType: value._type}}\n />\n </em>\n }\n subtitle={\n <Translate\n t={t}\n i18nKey=\"pane-item.missing-schema-type.subtitle\"\n components={{Code: 'code'}}\n values={{documentId: value._id}}\n />\n }\n // eslint-disable-next-line react/jsx-no-bind\n media={() => <WarningOutlineIcon />}\n layout={layout}\n />\n )\n}\n","import {ChevronRightIcon, DocumentIcon, FolderIcon} from '@sanity/icons'\nimport {\n isSanityDocument,\n type PreviewValue,\n type SanityDocument,\n type SchemaType,\n} from '@sanity/types'\nimport {Box, type CardProps, Text} from '@sanity/ui'\nimport {\n type ComponentType,\n type MouseEvent,\n startTransition,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {\n type FIXME,\n type GeneralPreviewLayoutKey,\n PreviewCard,\n SanityDefaultPreview,\n useDocumentPresence,\n useDocumentPreviewStore,\n useEditState,\n useSchema,\n} from 'sanity'\n\nimport {MissingSchemaType} from '../MissingSchemaType'\nimport {usePaneRouter} from '../paneRouter'\nimport {PaneItemPreview} from './PaneItemPreview'\n\ninterface PaneItemProps {\n id: string\n layout?: GeneralPreviewLayoutKey\n icon?: ComponentType<any> | false\n pressed?: boolean\n selected?: boolean\n title?: string\n value?: PreviewValue | SanityDocument\n schemaType?: SchemaType\n margin?: CardProps['margin']\n marginBottom?: CardProps['marginBottom']\n marginTop?: CardProps['marginTop']\n}\n\n/**\n * Return `false` if we explicitly disable the icon.\n * Otherwise return the passed icon or the schema type icon as a backup.\n */\nexport function getIconWithFallback(\n icon: ComponentType<any> | false | undefined,\n schemaType: SchemaType | undefined,\n defaultIcon: ComponentType<any>,\n): ComponentType<any> | false {\n if (icon === false) {\n return false\n }\n\n return icon || (schemaType && schemaType.icon) || defaultIcon || false\n}\n\nexport function PaneItem(props: PaneItemProps) {\n const {\n icon,\n id,\n layout = 'default',\n pressed,\n schemaType,\n selected,\n title,\n value,\n margin,\n marginBottom,\n marginTop,\n } = props\n const schema = useSchema()\n const documentPreviewStore = useDocumentPreviewStore()\n const {ChildLink} = usePaneRouter()\n const documentPresence = useDocumentPresence(id)\n const hasSchemaType = Boolean(schemaType && schemaType.name && schema.get(schemaType.name))\n const [clicked, setClicked] = useState<boolean>(false)\n\n const preview = useMemo(() => {\n if (value && isSanityDocument(value)) {\n if (!schemaType || !hasSchemaType) {\n return <MissingSchemaType value={value} />\n }\n\n return (\n <PaneItemPreview\n documentPreviewStore={documentPreviewStore}\n icon={getIconWithFallback(icon, schemaType, DocumentIcon)}\n layout={layout}\n schemaType={schemaType}\n value={value}\n presence={documentPresence}\n />\n )\n }\n\n // Always render non-document values as compact previews\n return (\n <SanityDefaultPreview\n status={\n <Box style={{opacity: 0.5}}>\n <Text muted size={1}>\n <ChevronRightIcon />\n </Text>\n </Box>\n }\n icon={getIconWithFallback(icon, schemaType, FolderIcon)}\n layout=\"compact\"\n title={title}\n />\n )\n }, [\n value,\n icon,\n schemaType,\n title,\n hasSchemaType,\n documentPreviewStore,\n layout,\n documentPresence,\n ])\n\n const handleClick = useCallback((e: MouseEvent<HTMLElement>) => {\n if (e.metaKey) {\n setClicked(false)\n return\n }\n\n setClicked(true)\n }, [])\n\n // Reset `clicked` state when `selected` prop changes\n useEffect(() => setClicked(false), [selected])\n\n // Preloads the edit state on hover, using concurrent rendering with `startTransition` so preloads can be interrupted and not block rendering\n const [preloading, setPreload] = useState(false)\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const handleMouseEnter = useCallback(() => {\n timeoutRef.current = setTimeout(() => startTransition(() => setPreload(true)), 400)\n }, [])\n const handleMouseLeave = useCallback(() => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current)\n startTransition(() => setPreload(false))\n }, [])\n\n return (\n <PreviewCard\n data-testid={`pane-item-${title}`}\n __unstable_focusRing\n as={ChildLink as FIXME}\n // @ts-expect-error - `childId` is a valid prop on `ChildLink`\n childId={id}\n data-as=\"a\"\n margin={margin}\n marginBottom={marginBottom}\n marginTop={marginTop}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n pressed={pressed}\n radius={2}\n selected={selected || clicked}\n sizing=\"border\"\n tabIndex={-1}\n tone=\"inherit\"\n >\n {preview}\n {preloading && schemaType?.name && value && isSanityDocument(value) && (\n <PreloadDocumentPane documentId={id} documentType={schemaType.name} />\n )}\n </PreviewCard>\n )\n}\n\nfunction PreloadDocumentPane(props: {documentId: string; documentType: string}) {\n const {documentId, documentType} = props\n // Preload the edit state for the document, and keep it alive until mouse leave\n useEditState(documentId, documentType)\n\n return null\n}\nPreloadDocumentPane.displayName = 'PreloadDocumentPane'\n","import {memo, type ReactNode} from 'react'\nimport {\n type DocumentActionDescription,\n type DocumentActionGroup,\n type DocumentActionProps,\n GetHookCollectionState,\n} from 'sanity'\n\n/** @internal */\nexport interface Action<Args, Description> {\n (args: Args): Description | null\n}\n\n/** @internal */\nexport interface RenderActionCollectionProps {\n actions: Action<DocumentActionProps, DocumentActionDescription>[]\n actionProps: Omit<DocumentActionProps, 'onComplete'>\n children: (props: {states: DocumentActionDescription[]}) => ReactNode\n onActionComplete?: () => void\n group?: DocumentActionGroup\n}\n\n/** @internal */\nexport const RenderActionCollectionState = memo((props: RenderActionCollectionProps) => {\n const {actions, children, actionProps, onActionComplete, group} = props\n\n return (\n <GetHookCollectionState<Omit<DocumentActionProps, 'onComplete'>, DocumentActionDescription>\n onReset={onActionComplete}\n hooks={actions}\n args={actionProps}\n group={group}\n >\n {children}\n </GetHookCollectionState>\n )\n})\nRenderActionCollectionState.displayName = 'Memo(RenderActionCollectionState)'\n","import {memo, type ReactNode} from 'react'\nimport {\n type DocumentBadgeDescription,\n type DocumentBadgeProps,\n type EditStateFor,\n GetHookCollectionState,\n} from 'sanity'\n\n/** @internal */\nexport interface Badge<Args, Description> {\n (args: Args): Description | null\n}\n\n/** @internal */\nexport interface RenderBadgeCollectionProps {\n badges: Badge<DocumentBadgeProps, DocumentBadgeDescription>[]\n badgeProps: EditStateFor\n children: (props: {states: DocumentBadgeDescription[]}) => ReactNode\n}\n\n/** @internal */\nexport const RenderBadgeCollectionState = memo((props: RenderBadgeCollectionProps) => {\n const {badges, children, badgeProps} = props\n\n return (\n <GetHookCollectionState<EditStateFor, DocumentBadgeDescription>\n hooks={badges}\n args={badgeProps}\n >\n {children}\n </GetHookCollectionState>\n )\n})\nRenderBadgeCollectionState.displayName = 'Memo(RenderBadgeCollectionState)'\n","import {Box, type CardTone} from '@sanity/ui'\n\nimport {Pane, PaneContent, PaneHeader} from '../../components/pane'\n\n/**\n * @internal\n */\nexport function ErrorPane(props: {\n children?: React.ReactNode\n currentMinWidth?: number\n flex?: number\n minWidth?: number\n paneKey: string\n title?: React.ReactNode\n tone?: CardTone\n}) {\n const {\n children,\n currentMinWidth,\n flex,\n minWidth,\n paneKey,\n title = 'Error',\n tone = 'critical',\n } = props\n\n return (\n <Pane\n currentMinWidth={currentMinWidth}\n flex={flex}\n id={paneKey}\n minWidth={minWidth}\n tone={tone}\n >\n <PaneHeader title={title} />\n <PaneContent overflow=\"auto\">\n <Box paddingX={4} paddingY={5}>\n {children}\n </Box>\n </PaneContent>\n </Pane>\n )\n}\n","import {merge, type Observable, of} from 'rxjs'\nimport {delay, mapTo} from 'rxjs/operators'\nimport {isDev} from 'sanity'\n\n/**\n * @internal\n */\nexport type WaitMessage = {messageKey: string} | {message: string}\n\n/**\n * @internal\n */\nexport function getWaitMessages(path: string[]): Observable<WaitMessage> {\n const thresholds: (WaitMessage & {ms: number})[] = [\n {ms: 300, messageKey: 'panes.resolving.default-message'},\n {ms: 5000, messageKey: 'panes.resolving.slow-resolve-message'},\n ]\n\n if (isDev) {\n const message = [\n 'Check console for errors?',\n 'Is your observable/promise resolving?',\n path.length > 0 ? `Structure path: ${path.join(' ➝ ')}` : '',\n ]\n\n thresholds.push({\n ms: 10000,\n message: message.join('\\n'),\n })\n }\n\n const src = of(null)\n\n return merge(\n ...thresholds.map((threshold) =>\n src.pipe(\n mapTo(\n 'messageKey' in threshold\n ? {messageKey: threshold.messageKey}\n : {message: threshold.message},\n ),\n delay(threshold.ms),\n ),\n ),\n )\n}\n","import {_raf2, type CardTone, Flex} from '@sanity/ui'\nimport {memo, useEffect, useMemo, useState} from 'react'\nimport {type Observable} from 'rxjs'\nimport {LoadingBlock, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Delay} from '../../components/Delay'\nimport {Pane, PaneContent} from '../../components/pane'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {getWaitMessages, type WaitMessage} from './getWaitMessages'\n\ninterface LoadingPaneProps {\n delay?: number\n flex?: number\n message?: string | ((p: string[]) => string | Observable<WaitMessage>)\n minWidth?: number\n paneKey: string\n path?: string\n selected?: boolean\n title?: string\n tone?: CardTone\n}\n\nconst DELAY = false\nconst DEFAULT_MESSAGE_KEY = 'panes.resolving.default-message'\n\nconst Content = styled(Flex)`\n opacity: 0;\n transition: opacity 200ms;\n\n &[data-mounted] {\n opacity: 1;\n }\n`\n\n/**\n * @internal\n */\nexport const LoadingPane = memo((props: LoadingPaneProps) => {\n const {\n delay = 300,\n flex,\n message: messageProp = getWaitMessages,\n minWidth,\n paneKey,\n path,\n selected,\n title,\n tone,\n } = props\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n const resolvedMessage = useMemo(() => {\n if (typeof messageProp === 'function') {\n return messageProp(path ? path.split(';') : [])\n }\n\n return messageProp\n }, [messageProp, path])\n\n const [currentMessage, setCurrentMessage] = useState<string | null>(() => {\n if (typeof resolvedMessage === 'string') return resolvedMessage\n return t(DEFAULT_MESSAGE_KEY)\n })\n\n useEffect(() => {\n if (typeof resolvedMessage !== 'object') return undefined\n if (typeof resolvedMessage.subscribe !== 'function') return undefined\n\n const sub = resolvedMessage.subscribe((message) => {\n setCurrentMessage('messageKey' in message ? t(message.messageKey) : message.message)\n })\n\n return () => sub.unsubscribe()\n }, [resolvedMessage, t])\n\n const [contentElement, setContentElement] = useState<HTMLDivElement | null>(null)\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n if (!contentElement) return undefined\n return _raf2(() => setMounted(true))\n }, [contentElement])\n\n const content = (\n <Content\n align=\"center\"\n data-mounted={mounted ? '' : undefined}\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n ref={setContentElement}\n >\n <LoadingBlock showText title={title || currentMessage} />\n </Content>\n )\n\n return (\n <Pane flex={flex} id={paneKey} minWidth={minWidth} selected={selected} tone={tone}>\n <PaneContent>{DELAY ? <Delay ms={delay}>{content}</Delay> : content}</PaneContent>\n </Pane>\n )\n})\n\nLoadingPane.displayName = 'Memo(LoadingPane)'\n","import {useContext} from 'react'\nimport {DocumentPaneContext} from 'sanity/_singletons'\n\nimport {type DocumentPaneContextValue} from './DocumentPaneContext'\n\n/** @internal */\nexport function useDocumentPane(): DocumentPaneContextValue {\n const documentPane = useContext(DocumentPaneContext)\n\n if (!documentPane) {\n throw new Error('DocumentPane: missing context value')\n }\n\n return documentPane\n}\n","import {useCallback, useLayoutEffect, useRef} from 'react'\nimport {\n COMMENTS_INSPECTOR_NAME,\n CommentsEnabledProvider,\n CommentsProvider,\n useCommentsEnabled,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../../components'\nimport {useDocumentPane} from '../useDocumentPane'\n\ninterface CommentsWrapperProps {\n children: React.ReactNode\n documentId: string\n documentType: string\n}\n\n/**\n * @internal\n * A wrapper that conditionally wraps the document layout in a comments provider\n * if the feature is enabled for the project and the current document.\n */\nexport function CommentsWrapper(props: CommentsWrapperProps) {\n const {children, documentId, documentType} = props\n\n return (\n <CommentsEnabledProvider documentId={documentId} documentType={documentType}>\n <CommentsProviderWrapper documentId={documentId} documentType={documentType}>\n {children}\n </CommentsProviderWrapper>\n </CommentsEnabledProvider>\n )\n}\n\nfunction CommentsProviderWrapper(props: CommentsWrapperProps) {\n const {children, documentId, documentType} = props\n\n const {enabled} = useCommentsEnabled()\n const {connectionState, onPathOpen, inspector, openInspector, selectedReleaseId} =\n useDocumentPane()\n const {params, setParams, createPathWithParams} = usePaneRouter()\n\n const selectedCommentId = params?.comment\n const paramsRef = useRef(params)\n\n useLayoutEffect(() => {\n paramsRef.current = params\n }, [params])\n\n const getCommentLink = useCallback(\n (commentId: string) => {\n // Generate a path based on the current pane params.\n // We force a value for `inspect` to ensure that this is included in URLs when comments\n // are created outside of the inspector context (i.e. directly on the field)\n // @todo: consider filtering pane router params and culling all non-active RHS panes prior to generating this link\n const path = createPathWithParams({\n ...paramsRef.current,\n comment: commentId,\n inspect: COMMENTS_INSPECTOR_NAME,\n })\n return `${window.location.origin}${path}`\n },\n [createPathWithParams],\n )\n\n const handleClearSelectedComment = useCallback(() => {\n setParams({...paramsRef.current, comment: undefined})\n }, [setParams])\n\n const handleOpenCommentsInspector = useCallback(() => {\n if (inspector?.name === COMMENTS_INSPECTOR_NAME) return\n\n openInspector(COMMENTS_INSPECTOR_NAME)\n }, [inspector?.name, openInspector])\n\n // If comments are not enabled, render the default document layout\n if (!enabled) {\n return <>{children}</>\n }\n\n return (\n <CommentsProvider\n documentId={documentId}\n documentType={documentType}\n getCommentLink={getCommentLink}\n isCommentsOpen={inspector?.name === COMMENTS_INSPECTOR_NAME}\n isConnecting={connectionState === 'connecting'}\n onClearSelectedComment={handleClearSelectedComment}\n onCommentsOpen={handleOpenCommentsInspector}\n onPathOpen={onPathOpen}\n selectedCommentId={selectedCommentId}\n sortOrder=\"desc\"\n type=\"field\"\n releaseId={selectedReleaseId}\n >\n {children}\n </CommentsProvider>\n )\n}\n","/**\n * @internal\n */\nexport const _DEBUG = false\n\nexport const EMPTY_PARAMS = {}\nexport const LOADING_PANE = Symbol('LOADING_PANE')\n\nexport const DOCUMENT_PANEL_PORTAL_ELEMENT = 'documentPanelPortalElement'\n","import {useContext} from 'react'\nimport {StructureToolContext} from 'sanity/_singletons'\n\nimport {type StructureToolContextValue} from './types'\n\n/** @internal */\nexport function useStructureTool(): StructureToolContextValue {\n const structureTool = useContext(StructureToolContext)\n if (!structureTool) throw new Error(`StructureTool: missing context value`)\n\n return structureTool\n}\n","import {type PaneRouterContextValue} from '../../components'\nimport {type PaneMenuItemGroup} from '../../types'\n\nexport const DOCUMENT_PANEL_MIN_WIDTH = 320\nexport const DOCUMENT_PANEL_INITIAL_MIN_WIDTH = 600\n\nexport const DOCUMENT_INSPECTOR_MIN_WIDTH = 320\nexport const DOCUMENT_INSPECTOR_MAX_WIDTH = 540\n\nexport const EMPTY_PARAMS: NonNullable<PaneRouterContextValue['params']> = {}\n\nexport const INSPECT_ACTION_PREFIX = 'inspect:'\n\nexport const DEFAULT_MENU_ITEM_GROUPS: PaneMenuItemGroup[] = [{id: 'inspectors'}, {id: 'links'}]\n\n// inspectors\nexport const HISTORY_INSPECTOR_NAME = 'sanity/structure/history'\nexport const VALIDATION_INSPECTOR_NAME = 'sanity/structure/validation'\n","import {memo, useCallback, useEffect, useMemo, useState} from 'react'\nimport {type DocumentInspector, type DocumentInspectorMenuItem, useUnique} from 'sanity'\n\ninterface DocumentInspectorMenuItemsResolverProps {\n documentId: string\n documentType: string\n inspectors: DocumentInspector[]\n onMenuItems: (items: DocumentInspectorMenuItem[]) => void\n}\n\n// The menu item in a document inspector are resolved in a React hook (`useMenuItem`).\n// This means that the menu item needs to be resolved in a React component (in accordance with the rules of hooks).\n// In this component, we map over the configured inspectors and render a `InspectorMenuItem` for each.\n// The `InspectorMenuItem` will resolve the menu item in a React hook and call the `setMenuItem` callback\n// with the resolved menu item and the index of the inspector.\n// Finally, we call the `onMenuItems` callback with the resolved menu items.\nexport function DocumentInspectorMenuItemsResolver(props: DocumentInspectorMenuItemsResolverProps) {\n const {documentId, documentType, inspectors, onMenuItems} = props\n\n const len = inspectors.length\n const [menuItems, setMenuItems] = useState<DocumentInspectorMenuItem[]>(() =>\n Array.from(new Array(len)),\n )\n\n useEffect(() => {\n if (menuItems.length !== len) {\n const newFieldActions = Array.from(new Array(len))\n\n for (let i = 0; i < len; i++) {\n newFieldActions[i] = menuItems[i]\n }\n\n setMenuItems(newFieldActions)\n }\n }, [len, menuItems])\n\n const setMenuItem = useCallback((index: number, node: DocumentInspectorMenuItem) => {\n setMenuItems((prev) => {\n const next = [...prev]\n next[index] = node\n return next\n })\n }, [])\n\n useEffect(() => {\n onMenuItems(menuItems.filter(Boolean))\n }, [menuItems, onMenuItems])\n\n const InspectorMenuItems = useMemo(() => {\n return inspectors.map((inspector, index) => {\n return inspector.useMenuItem\n ? ([\n defineInspectorMenuItemComponent({\n documentId,\n documentType,\n index,\n setMenuItem,\n useMenuItem: inspector.useMenuItem,\n }),\n inspector.name,\n ] as const)\n : ([() => null, ''] as const)\n })\n }, [documentId, documentType, inspectors, setMenuItem])\n\n return (\n <>\n {InspectorMenuItems.map(([InspectorMenuItem, key]) => key && <InspectorMenuItem key={key} />)}\n </>\n )\n}\nDocumentInspectorMenuItemsResolver.displayName = 'DocumentInspectorMenuItemsResolver'\n\nfunction defineInspectorMenuItemComponent({\n documentId,\n documentType,\n index,\n setMenuItem,\n useMenuItem,\n}: {\n documentId: string\n documentType: string\n index: number\n setMenuItem: (index: number, node: DocumentInspectorMenuItem) => void\n useMenuItem: NonNullable<DocumentInspector['useMenuItem']>\n}) {\n return memo(function InspectorMenuItem() {\n const menuItem = useMenuItem({\n documentId,\n documentType,\n })\n const node = useUnique(menuItem)\n\n useEffect(() => {\n setMenuItem(index, node)\n }, [node])\n\n return null\n })\n}\n","import {unstable_useValuePreview as useValuePreview, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../i18n'\nimport {useDocumentPane} from './useDocumentPane'\n\n/**\n * useDocumentTitle hook return type.\n *\n * @beta\n * @hidden\n */\ninterface UseDocumentTitle {\n error?: string\n title?: string\n}\n\n/**\n * React hook that returns the document title for the current document in the document pane.\n *\n * @beta\n * @hidden\n *\n * @returns The document title or error. See {@link UseDocumentTitle}\n */\nexport function useDocumentTitle(): UseDocumentTitle {\n const {connectionState, schemaType, title, displayed} = useDocumentPane()\n const {t} = useTranslation(structureLocaleNamespace)\n const subscribed = Boolean(displayed)\n\n const {error, value} = useValuePreview({\n enabled: subscribed,\n schemaType,\n value: displayed,\n })\n\n if (connectionState === 'connecting' && !subscribed) {\n return {error: undefined, title: undefined}\n }\n\n if (title) {\n return {error: undefined, title}\n }\n\n if (!displayed) {\n return {\n error: undefined,\n title: t('panes.document-header-title.new.text', {\n schemaType: schemaType?.title || schemaType?.name,\n }),\n }\n }\n\n if (error) {\n return {\n error: t('panes.document-list-pane.error.text', {error: error.message}),\n title: undefined,\n }\n }\n\n return {error: undefined, title: value?.title}\n}\n","import {useToast} from '@sanity/ui'\nimport {memo, useEffect, useMemo, useRef} from 'react'\nimport {Translate, useDocumentOperationEvent, useTranslation} from 'sanity'\n\nimport {usePaneRouter} from '../../components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {useDocumentPane} from './useDocumentPane'\nimport {useDocumentTitle} from './useDocumentTitle'\n\nconst IGNORE_OPS = ['patch', 'commit']\n\nexport const DocumentOperationResults = memo(function DocumentOperationResults() {\n const {push: pushToast} = useToast()\n const {documentId, documentType, value: documentPaneValue} = useDocumentPane()\n const documentTitleInfo = useDocumentTitle()\n const titleError = documentTitleInfo.error\n const event: any = useDocumentOperationEvent(documentId, documentType)\n const prevEvent = useRef(event)\n const paneRouter = usePaneRouter()\n const {t} = useTranslation(structureLocaleNamespace)\n\n const title = useMemo(() => {\n // If title isn't set from document preview, use the title from the document pane value\n if (\n !documentTitleInfo.title &&\n !titleError &&\n !IGNORE_OPS.includes(event?.op) &&\n typeof documentPaneValue.title === 'string' &&\n event?.type === 'success'\n ) {\n return documentPaneValue.title\n }\n return documentTitleInfo.title\n }, [documentTitleInfo.title, titleError, event, documentPaneValue.title])\n //Truncate the document title and add \"...\" if it is over 25 characters\n const documentTitleBase = title || t('panes.document-operation-results.operation-undefined-title')\n const documentTitle =\n documentTitleBase.length > 25 ? `${documentTitleBase.slice(0, 25)}...` : documentTitleBase\n\n useEffect(() => {\n if (!event || event === prevEvent.current) return\n\n let cleanupId: number | undefined\n\n if (event.type === 'error') {\n pushToast({\n closable: true,\n duration: 30000, // 30s\n status: 'error',\n title: t('panes.document-operation-results.operation-error', {context: event.op}),\n description: (\n <details>\n <summary>{t('panes.document-operation-results.error.summary.title')}</summary>\n {event.error.message}\n </details>\n ),\n })\n }\n\n if (event.type === 'success' && !IGNORE_OPS.includes(event.op)) {\n pushToast({\n closable: true,\n status: 'success',\n title: (\n <Translate\n context={event.op}\n i18nKey=\"panes.document-operation-results.operation-success\"\n t={t}\n values={{\n op: event.op,\n title: documentTitle,\n }}\n components={{\n Strong: 'strong',\n }}\n />\n ),\n })\n }\n\n /**\n * If the document was deleted successfully, close the pane.\n */\n if (event.type === 'success' && event.op === 'delete') {\n // Wait until next tick to allow deletion toasts to appear first\n cleanupId = setTimeout(() => paneRouter.closeCurrentAndAfter(), 0) as any as number\n }\n\n prevEvent.current = event\n\n // eslint-disable-next-line consistent-return\n return () => clearTimeout(cleanupId)\n }, [event, paneRouter, pushToast, t, documentTitle])\n\n return null\n})\n","import {WarningOutlineIcon} from '@sanity/icons'\nimport {type PreviewValue, type SanityDocument, type SchemaType} from '@sanity/types'\nimport {assignWith} from 'lodash'\nimport {type ReactNode} from 'react'\nimport {combineLatest, type Observable, of} from 'rxjs'\nimport {map, startWith} from 'rxjs/operators'\nimport {type DocumentPreviewStore, getDraftId, getPublishedId} from 'sanity'\n\nimport {type PaneItemPreviewState} from './types'\n\nexport const isLiveEditEnabled = (schemaType: SchemaType) => schemaType.liveEdit === true\n\nexport const getMissingDocumentFallback = (item: SanityDocument) => ({\n title: <em>{item.title ? String(item.title) : 'Missing document'}</em>,\n subtitle: <em>{item.title ? `Missing document ID: ${item._id}` : `Document ID: ${item._id}`}</em>,\n media: () => <WarningOutlineIcon />,\n})\n\nexport const getValueWithFallback = ({\n value,\n draft,\n published,\n}: {\n value: SanityDocument\n draft?: Partial<SanityDocument> | PreviewValue | null\n published?: Partial<SanityDocument> | PreviewValue | null\n}) => {\n const snapshot = draft || published\n\n if (!snapshot) {\n return getMissingDocumentFallback(value)\n }\n\n return assignWith({}, snapshot, value, (objValue, srcValue) => {\n return typeof srcValue === 'undefined' ? objValue : srcValue\n })\n}\n\nexport function getPreviewStateObservable(\n documentPreviewStore: DocumentPreviewStore,\n schemaType: SchemaType,\n documentId: string,\n title: ReactNode,\n): Observable<PaneItemPreviewState> {\n const draft$ = isLiveEditEnabled(schemaType)\n ? of({snapshot: null})\n : documentPreviewStore.observeForPreview(\n {_type: 'reference', _ref: getDraftId(documentId)},\n schemaType,\n )\n\n const published$ = documentPreviewStore.observeForPreview(\n {_type: 'reference', _ref: getPublishedId(documentId)},\n schemaType,\n )\n\n return combineLatest([draft$, published$]).pipe(\n map(([draft, published]) => ({\n draft: draft.snapshot ? {title, ...(draft.snapshot || {})} : null,\n isLoading: false,\n published: published.snapshot ? {title, ...(published.snapshot || {})} : null,\n })),\n startWith({draft: null, isLoading: true, published: null}),\n )\n}\n","import {CloseIcon} from '@sanity/icons'\nimport {Box, Card, type CardProps, Flex, Text} from '@sanity/ui'\nimport {type HTMLProps, type ReactNode} from 'react'\nimport {useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../i18n'\n\nexport interface DocumentInspectorHeaderProps {\n as?: CardProps['as']\n closeButtonLabel: string\n flex?: CardProps['flex']\n onClose: () => void\n title: ReactNode\n}\n\nconst Root = styled(Card)({\n position: 'relative',\n zIndex: 1,\n lineHeight: 0,\n})\n\n/** @internal */\nexport function DocumentInspectorHeader(\n props: DocumentInspectorHeaderProps & Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref'>,\n) {\n const {as: forwardedAs, children, closeButtonLabel, onClose, title, ...restProps} = props\n const {t} = useTranslation(structureLocaleNamespace)\n\n return (\n <Root {...restProps} as={forwardedAs}>\n <Flex padding={2}>\n <Box flex={1} padding={3}>\n <Text as=\"h1\" size={1} weight=\"medium\">\n {title}\n </Text>\n </Box>\n <Box flex=\"none\" padding={1}>\n <Button\n aria-label={closeButtonLabel}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n tooltipProps={{content: t('document-inspector.close-button.tooltip')}}\n />\n </Box>\n </Flex>\n {children}\n </Root>\n )\n}\n","import {Box} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {Resizable} from 'sanity'\n\nimport {usePane} from '../../../components'\nimport {useStructureTool} from '../../../useStructureTool'\nimport {DOCUMENT_INSPECTOR_MAX_WIDTH, DOCUMENT_INSPECTOR_MIN_WIDTH} from '../constants'\nimport {useDocumentPane} from '../useDocumentPane'\n\ninterface DocumentInspectorPanelProps {\n documentId: string\n documentType: string\n flex?: number | number[]\n}\n\nexport function DocumentInspectorPanel(\n props: DocumentInspectorPanelProps,\n): React.JSX.Element | null {\n const {documentId, documentType, flex} = props\n const {collapsed} = usePane()\n const {closeInspector, inspector} = useDocumentPane()\n const {features} = useStructureTool()\n\n const handleClose = useCallback(() => {\n if (inspector) closeInspector(inspector.name)\n }, [closeInspector, inspector])\n\n if (collapsed || !inspector) return null\n\n const Component = inspector.component\n const element = (\n <Component onClose={handleClose} documentId={documentId} documentType={documentType} />\n )\n\n if (features.resizablePanes) {\n return (\n <Resizable\n as=\"aside\"\n data-ui=\"DocumentInspectorPanel\"\n flex={flex}\n resizerPosition=\"left\"\n maxWidth={DOCUMENT_INSPECTOR_MAX_WIDTH}\n minWidth={DOCUMENT_INSPECTOR_MIN_WIDTH}\n >\n {element}\n </Resizable>\n )\n }\n\n return (\n <Box as=\"aside\" data-ui=\"DocumentInspectorPanel\" flex={flex}>\n {element}\n </Box>\n )\n}\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","\"use strict\";\n\n/**\n * Expose `md5omatic(str)`.\n */\n \nmodule.exports = md5omatic;\n\n/**\n * Hash any string using message digest.\n *\n * @param {String} str\n * @return {String}\n * @api public\n */\n \nfunction md5omatic(str) {\n var x = str2blks_MD5(str);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for(var i=0; i<x.length; i += 16)\n {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n\n a = ff(a, b, c, d, x[i+ 0], 7 , -680876936);\n d = ff(d, a, b, c, x[i+ 1], 12, -389564586);\n c = ff(c, d, a, b, x[i+ 2], 17, 606105819);\n b = ff(b, c, d, a, x[i+ 3], 22, -1044525330);\n a = ff(a, b, c, d, x[i+ 4], 7 , -176418897);\n d = ff(d, a, b, c, x[i+ 5], 12, 1200080426);\n c = ff(c, d, a, b, x[i+ 6], 17, -1473231341);\n b = ff(b, c, d, a, x[i+ 7], 22, -45705983);\n a = ff(a, b, c, d, x[i+ 8], 7 , 1770035416);\n d = ff(d, a, b, c, x[i+ 9], 12, -1958414417);\n c = ff(c, d, a, b, x[i+10], 17, -42063);\n b = ff(b, c, d, a, x[i+11], 22, -1990404162);\n a = ff(a, b, c, d, x[i+12], 7 , 1804603682);\n d = ff(d, a, b, c, x[i+13], 12, -40341101);\n c = ff(c, d, a, b, x[i+14], 17, -1502002290);\n b = ff(b, c, d, a, x[i+15], 22, 1236535329);\n a = gg(a, b, c, d, x[i+ 1], 5 , -165796510);\n d = gg(d, a, b, c, x[i+ 6], 9 , -1069501632);\n c = gg(c, d, a, b, x[i+11], 14, 643717713);\n b = gg(b, c, d, a, x[i+ 0], 20, -373897302);\n a = gg(a, b, c, d, x[i+ 5], 5 , -701558691);\n d = gg(d, a, b, c, x[i+10], 9 , 38016083);\n c = gg(c, d, a, b, x[i+15], 14, -660478335);\n b = gg(b, c, d, a, x[i+ 4], 20, -405537848);\n a = gg(a, b, c, d, x[i+ 9], 5 , 568446438);\n d = gg(d, a, b, c, x[i+14], 9 , -1019803690);\n c = gg(c, d, a, b, x[i+ 3], 14, -187363961);\n b = gg(b, c, d, a, x[i+ 8], 20, 1163531501);\n a = gg(a, b, c, d, x[i+13], 5 , -1444681467);\n d = gg(d, a, b, c, x[i+ 2], 9 , -51403784);\n c = gg(c, d, a, b, x[i+ 7], 14, 1735328473);\n b = gg(b, c, d, a, x[i+12], 20, -1926607734);\n a = hh(a, b, c, d, x[i+ 5], 4 , -378558);\n d = hh(d, a, b, c, x[i+ 8], 11, -2022574463);\n c = hh(c, d, a, b, x[i+11], 16, 1839030562);\n b = hh(b, c, d, a, x[i+14], 23, -35309556);\n a = hh(a, b, c, d, x[i+ 1], 4 , -1530992060);\n d = hh(d, a, b, c, x[i+ 4], 11, 1272893353);\n c = hh(c, d, a, b, x[i+ 7], 16, -155497632);\n b = hh(b, c, d, a, x[i+10], 23, -1094730640);\n a = hh(a, b, c, d, x[i+13], 4 , 681279174);\n d = hh(d, a, b, c, x[i+ 0], 11, -358537222);\n c = hh(c, d, a, b, x[i+ 3], 16, -722521979);\n b = hh(b, c, d, a, x[i+ 6], 23, 76029189);\n a = hh(a, b, c, d, x[i+ 9], 4 , -640364487);\n d = hh(d, a, b, c, x[i+12], 11, -421815835);\n c = hh(c, d, a, b, x[i+15], 16, 530742520);\n b = hh(b, c, d, a, x[i+ 2], 23, -995338651);\n a = ii(a, b, c, d, x[i+ 0], 6 , -198630844);\n d = ii(d, a, b, c, x[i+ 7], 10, 1126891415);\n c = ii(c, d, a, b, x[i+14], 15, -1416354905);\n b = ii(b, c, d, a, x[i+ 5], 21, -57434055);\n a = ii(a, b, c, d, x[i+12], 6 , 1700485571);\n d = ii(d, a, b, c, x[i+ 3], 10, -1894986606);\n c = ii(c, d, a, b, x[i+10], 15, -1051523);\n b = ii(b, c, d, a, x[i+ 1], 21, -2054922799);\n a = ii(a, b, c, d, x[i+ 8], 6 , 1873313359);\n d = ii(d, a, b, c, x[i+15], 10, -30611744);\n c = ii(c, d, a, b, x[i+ 6], 15, -1560198380);\n b = ii(b, c, d, a, x[i+13], 21, 1309151649);\n a = ii(a, b, c, d, x[i+ 4], 6 , -145523070);\n d = ii(d, a, b, c, x[i+11], 10, -1120210379);\n c = ii(c, d, a, b, x[i+ 2], 15, 718787259);\n b = ii(b, c, d, a, x[i+ 9], 21, -343485551);\n\n a = addme(a, olda);\n b = addme(b, oldb);\n c = addme(c, oldc);\n d = addme(d, oldd);\n }\n\n return rhex(a) + rhex(b) + rhex(c) + rhex(d);\n};\n\nvar hex_chr = \"0123456789abcdef\";\n\nfunction bitOR(a, b)\n{\n var lsb = (a & 0x1) | (b & 0x1);\n var msb31 = (a >>> 1) | (b >>> 1);\n\n return (msb31 << 1) | lsb;\n}\n\nfunction bitXOR(a, b)\n{\n var lsb = (a & 0x1) ^ (b & 0x1);\n var msb31 = (a >>> 1) ^ (b >>> 1);\n\n return (msb31 << 1) | lsb;\n}\n\nfunction bitAND(a, b)\n{\n var lsb = (a & 0x1) & (b & 0x1);\n var msb31 = (a >>> 1) & (b >>> 1);\n\n return (msb31 << 1) | lsb;\n}\n\nfunction addme(x, y)\n{\n var lsw = (x & 0xFFFF)+(y & 0xFFFF);\n var msw = (x >> 16)+(y >> 16)+(lsw >> 16);\n\n return (msw << 16) | (lsw & 0xFFFF);\n}\n\nfunction rhex(num)\n{\n var str = \"\";\n var j;\n\n for(j=0; j<=3; j++)\n str += hex_chr.charAt((num >> (j * 8 + 4)) & 0x0F) + hex_chr.charAt((num >> (j * 8)) & 0x0F);\n\n return str;\n}\n\nfunction str2blks_MD5(str)\n{\n var nblk = ((str.length + 8) >> 6) + 1;\n var blks = new Array(nblk * 16);\n var i;\n\n for(i=0; i<nblk * 16; i++)\n blks[i] = 0;\n\n for(i=0; i<str.length; i++)\n blks[i >> 2] |= str.charCodeAt(i) << (((str.length * 8 + i) % 4) * 8);\n\n blks[i >> 2] |= 0x80 << (((str.length * 8 + i) % 4) * 8);\n\n var l = str.length * 8;\n blks[nblk * 16 - 2] = (l & 0xFF);\n blks[nblk * 16 - 2] |= ((l >>> 8) & 0xFF) << 8;\n blks[nblk * 16 - 2] |= ((l >>> 16) & 0xFF) << 16;\n blks[nblk * 16 - 2] |= ((l >>> 24) & 0xFF) << 24;\n\n return blks;\n}\n\nfunction rol(num, cnt)\n{\n return (num << cnt) | (num >>> (32 - cnt));\n}\n\nfunction cmn(q, a, b, x, s, t)\n{\n return addme(rol((addme(addme(a, q), addme(x, t))), s), b);\n}\n\nfunction ff(a, b, c, d, x, s, t)\n{\n return cmn(bitOR(bitAND(b, c), bitAND((~b), d)), a, b, x, s, t);\n}\n\nfunction gg(a, b, c, d, x, s, t)\n{\n return cmn(bitOR(bitAND(b, d), bitAND(c, (~d))), a, b, x, s, t);\n}\n\nfunction hh(a, b, c, d, x, s, t)\n{\n return cmn(bitXOR(bitXOR(b, c), d), a, b, x, s, t);\n}\n\nfunction ii(a, b, c, d, x, s, t)\n{\n return cmn(bitXOR(c, bitOR(b, (~d))), a, b, x, s, t);\n}","import { jsx, jsxs } from \"react/jsx-runtime\";\nimport { Component, useCallback } from \"react\";\nimport debounce from \"debounce\";\nimport md5OMatic from \"md5-o-matic\";\nlet id = Math.ceil(Math.random() * 10);\nconst uid = () => ++id;\nfunction type(value) {\n return Object.prototype.toString.call(value).slice(8, -1);\n}\nfunction isPrimitive(value) {\n const t = type(value);\n return t !== \"Object\" && t !== \"Array\";\n}\nclass Highlighter extends Component {\n shouldComponentUpdate(p) {\n return p.highlight !== this.props.highlight;\n }\n render() {\n const str = this.props.string || \"\", highlight = this.props.highlight || \"\", highlightStart = str.search(highlight);\n if (!highlight || highlightStart === -1)\n return /* @__PURE__ */ jsx(\"span\", { children: str });\n const highlightLength = highlight.source.length, highlightString = str.slice(\n highlightStart,\n highlightStart + highlightLength\n );\n return /* @__PURE__ */ jsx(\"span\", { children: str.split(highlight).map(function(part, index) {\n return /* @__PURE__ */ jsxs(\"span\", { children: [\n index > 0 ? /* @__PURE__ */ jsx(\"span\", { className: \"json-inspector__hl\", children: highlightString }) : null,\n part\n ] }, index);\n }) });\n }\n}\nfunction isObject(value) {\n return typeof value == \"object\" && value !== null && !Array.isArray(value);\n}\nconst PATH_PREFIX = \".root.\";\nclass Leaf extends Component {\n constructor(props) {\n super(props), this.state = {\n expanded: this._isInitiallyExpanded(this.props)\n };\n }\n render() {\n const { label, data, root, id: inputId } = this.props, id2 = \"id_\" + uid(), d = {\n path: this.keypath(),\n key: label.toString(),\n value: data\n }, onLabelClick = this._onClick.bind(this, d);\n return /* @__PURE__ */ jsxs(\n \"div\",\n {\n \"data-testid\": root ? \"leaf-root\" : \"leaf-child\",\n \"aria-expanded\": this.state.expanded,\n \"data-root\": root || void 0,\n className: this.getClassName(),\n id: \"leaf-\" + this._rootPath(),\n children: [\n /* @__PURE__ */ jsx(\n \"input\",\n {\n className: \"json-inspector__radio\",\n type: \"radio\",\n name: id2,\n id: inputId,\n tabIndex: -1\n }\n ),\n /* @__PURE__ */ jsxs(\n \"label\",\n {\n className: \"json-inspector__line\",\n htmlFor: id2,\n onClick: onLabelClick,\n children: [\n /* @__PURE__ */ jsx(\"div\", { className: \"json-inspector__flatpath\", children: d.path }),\n /* @__PURE__ */ jsxs(\"span\", { className: \"json-inspector__key\", children: [\n this.format(d.key),\n \":\",\n this.renderInteractiveLabel(d.key, !0)\n ] }),\n this.renderTitle(),\n this.renderShowOriginalButton()\n ]\n }\n ),\n this.renderChildren()\n ]\n }\n );\n }\n renderTitle() {\n const data = this.data(), t = type(data);\n if (Array.isArray(data)) {\n const length = data.length;\n return /* @__PURE__ */ jsxs(\"span\", { className: \"json-inspector__value json-inspector__value_helper\", children: [\n length > 0 ? \"[\\u2026] \" : \"[] \",\n items(length)\n ] });\n }\n if (typeof data == \"object\" && data !== null) {\n const keys = Object.keys(data).length;\n return /* @__PURE__ */ jsxs(\"span\", { className: \"json-inspector__value json-inspector__value_helper\", children: [\n keys > 0 ? \"{\\u2026} \" : \"{} \",\n properties(keys)\n ] });\n }\n return /* @__PURE__ */ jsxs(\n \"span\",\n {\n className: \"json-inspector__value json-inspector__value_\" + t.toLowerCase(),\n children: [\n this.format(String(data)),\n this.renderInteractiveLabel(data, !1)\n ]\n }\n );\n }\n renderChildren() {\n const {\n verboseShowOriginal,\n query,\n id: id2,\n isExpanded,\n interactiveLabel,\n onClick,\n getOriginal\n } = this.props, childPrefix = this._rootPath(), data = this.data();\n return this.state.expanded && (isObject(data) || Array.isArray(data)) ? Object.keys(data).map((key) => {\n const value = data[key], shouldGetOriginal = !this.state.original || (verboseShowOriginal ? query : !1);\n return /* @__PURE__ */ jsx(\n Leaf,\n {\n data: value,\n label: key,\n prefix: childPrefix,\n onClick,\n id: id2,\n query,\n getOriginal: shouldGetOriginal ? getOriginal : void 0,\n isExpanded,\n interactiveLabel,\n verboseShowOriginal\n },\n getLeafKey(key, value)\n );\n }) : null;\n }\n renderShowOriginalButton() {\n const { data, getOriginal, query } = this.props;\n return isPrimitive(data) || this.state.original || !getOriginal || !query || query.test(this.keypath()) ? null : /* @__PURE__ */ jsx(\n \"span\",\n {\n className: \"json-inspector__show-original\",\n onClick: this._onShowOriginalClick\n }\n );\n }\n renderInteractiveLabel(originalValue, isKey) {\n const InteractiveLabel = this.props.interactiveLabel;\n return typeof InteractiveLabel == \"function\" ? /* @__PURE__ */ jsx(\n InteractiveLabel,\n {\n value: String(originalValue),\n originalValue,\n isKey,\n keypath: this.keypath()\n }\n ) : null;\n }\n static getDerivedStateFromProps(props, state) {\n return props.query ? {\n expanded: !props.query.test(props.label)\n } : null;\n }\n componentDidUpdate(prevProps) {\n prevProps.query && !this.props.query && this.setState({\n expanded: this._isInitiallyExpanded(this.props)\n });\n }\n _rootPath() {\n return (this.props.prefix || \"\") + \".\" + this.props.label;\n }\n keypath() {\n return this._rootPath().slice(PATH_PREFIX.length);\n }\n data() {\n return this.state.original || this.props.data;\n }\n format(str) {\n return /* @__PURE__ */ jsx(Highlighter, { string: str, highlight: this.props.query });\n }\n getClassName() {\n let cn = \"json-inspector__leaf\";\n return this.props.root && (cn += \" json-inspector__leaf_root\"), this.state.expanded && (cn += \" json-inspector__leaf_expanded\"), isPrimitive(this.props.data) || (cn += \" json-inspector__leaf_composite\"), cn;\n }\n toggle() {\n this.setState({\n expanded: !this.state.expanded\n });\n }\n _onClick(data, e) {\n this.toggle(), this.props.onClick && this.props.onClick(data), e.stopPropagation();\n }\n _onShowOriginalClick = (e) => {\n this.setState({\n original: this.props.getOriginal?.(this.keypath())\n }), e.stopPropagation();\n };\n _isInitiallyExpanded(p) {\n if (p.root)\n return !0;\n const keypath = this.keypath();\n return p.query ? !p.query.test(keypath) && typeof p.getOriginal == \"function\" : p.isExpanded ? p.isExpanded(keypath, p.data) : !1;\n }\n}\nfunction items(count) {\n return count + (count === 1 ? \" item\" : \" items\");\n}\nfunction properties(count) {\n return count + (count === 1 ? \" property\" : \" properties\");\n}\nfunction getLeafKey(key, value) {\n if (isPrimitive(value)) {\n const hash = md5OMatic(String(value));\n return key + \":\" + hash;\n } else\n return key + \"[\" + type(value) + \"]\";\n}\nconst noop = (...args) => {\n}, SearchBar = ({ onChange = noop }) => {\n const onSearchChange = useCallback(\n (evt) => onChange(evt.target.value),\n [onChange]\n );\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n className: \"json-inspector__search\",\n type: \"search\",\n placeholder: \"Search\",\n onChange: onSearchChange\n }\n );\n};\nfunction isEmpty(object) {\n return isObject(object) ? Object.keys(object).length === 0 : Array.isArray(object) ? object.length === 0 : object === null || typeof object != \"string\" || typeof object != \"number\" ? !0 : Object.keys(object).length === 0;\n}\nconst getFilterer = memoize(\n (data, opts) => {\n const options = opts || { cacheResults: !0 }, cache = {};\n return function(query) {\n if (!options.cacheResults)\n return find(data, query, options);\n let subquery;\n if (!cache[query]) {\n for (var i = query.length - 1; i > 0; i -= 1)\n if (subquery = query.slice(0, i), cache[subquery]) {\n cache[query] = find(cache[subquery], query, options);\n break;\n }\n }\n return cache[query] || (cache[query] = find(data, query, options)), cache[query];\n };\n }\n);\nfunction find(data, query, options) {\n return !isObject(data) && !Array.isArray(data) ? {} : Object.keys(data).reduce(function(acc, key) {\n const value = data[key];\n let matches;\n return value ? typeof value != \"object\" ? ((contains(query, key, options) || contains(query, value, options)) && (acc[key] = value), acc) : contains(query, key, options) ? (acc[key] = value, acc) : (matches = find(value, query, options), isEmpty(matches) || Object.assign(acc, pair(key, matches)), acc) : acc;\n }, {});\n}\nfunction contains(query, value, options) {\n if (!value)\n return !1;\n var haystack = String(value), needle = query;\n return options?.ignoreCase && (haystack = haystack.toLowerCase(), needle = needle.toLowerCase()), haystack.indexOf(needle) !== -1;\n}\nfunction pair(key, value) {\n return { [key]: value };\n}\nfunction memoize(fn) {\n let lastData, lastOptions, lastResult;\n return (data, options) => ((!lastResult || data !== lastData || options !== lastOptions) && (lastData = data, lastOptions = options, lastResult = fn(data, options)), lastResult);\n}\nconst PATH_DELIMITER = \".\";\nfunction integer(str) {\n return parseInt(str, 10);\n}\nfunction lens(data, path) {\n var p = path.split(PATH_DELIMITER), segment = p.shift();\n if (!segment)\n return data;\n if (Array.isArray(data) && data[integer(segment)])\n return lens(data[integer(segment)], p.join(PATH_DELIMITER));\n if (isObject(data) && segment in data)\n return lens(data[segment], p.join(PATH_DELIMITER));\n}\nconst defaultValidateQuery = (query) => query.length >= 2, defaultFilterOptions = { cacheResults: !0, ignoreCase: !1 };\nclass JsonInspector extends Component {\n static defaultProps = {\n data: null,\n search: SearchBar,\n searchOptions: {\n debounceTime: 0\n },\n className: \"\",\n id: \"json-\" + Date.now(),\n onClick: noop,\n filterOptions: {\n cacheResults: !0,\n ignoreCase: !1\n },\n validateQuery: function(query) {\n return query.length >= 2;\n },\n /**\n * Decide whether the leaf node at given `keypath` should be expanded initially.\n *\n * @param keypath - Path to the node\n * @param value - Value of the node\n * @returns True if node should be expanded, false otherwise\n */\n isExpanded: function(keypath, value) {\n return !1;\n },\n verboseShowOriginal: !1\n };\n constructor(props) {\n super(props), this.state = {\n query: \"\",\n filterer: getFilterer(props.data, props.filterOptions)\n };\n }\n render() {\n const {\n data: rawData,\n className,\n onClick,\n id: id2,\n isExpanded,\n interactiveLabel,\n verboseShowOriginal,\n filterOptions = defaultFilterOptions,\n validateQuery = defaultValidateQuery\n } = this.props, isQueryValid = this.state.query !== \"\" && validateQuery(this.state.query), data = isQueryValid ? this.state.filterer(this.state.query) : rawData, isNotFound = isQueryValid && isEmpty(data);\n return /* @__PURE__ */ jsxs(\n \"div\",\n {\n \"data-testid\": \"json-inspector\",\n className: \"json-inspector \" + className,\n children: [\n this.renderToolbar(),\n isNotFound ? /* @__PURE__ */ jsx(\"div\", { className: \"json-inspector__not-found\", children: \"Nothing found\" }) : /* @__PURE__ */ jsx(\n Leaf,\n {\n data,\n onClick,\n id: id2,\n getOriginal: this.getOriginal,\n query: isQueryValid ? new RegExp(\n this.state.query,\n filterOptions.ignoreCase ? \"i\" : \"\"\n ) : null,\n label: \"root\",\n root: !0,\n isExpanded,\n interactiveLabel,\n verboseShowOriginal\n }\n )\n ]\n }\n );\n }\n renderToolbar() {\n const Search = this.props.search;\n return Search ? /* @__PURE__ */ jsx(\"div\", { className: \"json-inspector__toolbar\", children: /* @__PURE__ */ jsx(\n Search,\n {\n onChange: debounce(\n this.search,\n this.props.searchOptions?.debounceTime\n ),\n data: this.props.data,\n query: this.state.query\n }\n ) }) : null;\n }\n search = (query) => {\n this.setState({ query });\n };\n static getDerivedStateFromProps(nextProps, prevState) {\n const filterer = getFilterer(nextProps.data, nextProps.filterOptions);\n return filterer === prevState.filterer ? null : { ...prevState, filterer };\n }\n shouldComponentUpdate(nextProps, prevState) {\n return prevState.query !== this.state.query || nextProps.data !== this.props.data || nextProps.onClick !== this.props.onClick;\n }\n createFilterer = (data, options) => {\n this.setState({\n filterer: getFilterer(data, options)\n });\n };\n getOriginal = (path) => lens(this.props.data, path);\n}\nexport {\n JsonInspector\n};\n//# sourceMappingURL=index.js.map\n","import {useCallback, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {map} from 'rxjs/operators'\nimport {useKeyValueStore} from 'sanity'\n\nconst STRUCTURE_TOOL_NAMESPACE = 'studio.structure-tool'\n\n/**\n * @internal\n */\nexport function useStructureToolSetting<ValueType>(\n namespace: string,\n key: string | null,\n defaultValue?: ValueType,\n): [ValueType | undefined, (_value: ValueType) => void] {\n const keyValueStore = useKeyValueStore()\n\n const keyValueStoreKey = [STRUCTURE_TOOL_NAMESPACE, namespace, key].filter(Boolean).join('.')\n\n const value$ = useMemo(() => {\n return keyValueStore\n .getKey(keyValueStoreKey)\n .pipe(map((value) => (value === null ? defaultValue : value)))\n }, [defaultValue, keyValueStore, keyValueStoreKey])\n\n const value = useObservable(value$, defaultValue) as ValueType\n const set = useCallback(\n (newValue: ValueType) => {\n if (newValue !== value) {\n keyValueStore.setKey(keyValueStoreKey, newValue as string)\n }\n },\n [keyValueStore, keyValueStoreKey, value],\n )\n\n return useMemo(() => [value, set], [set, value])\n}\n","export const VIEW_MODE_PARSED = {id: 'parsed', title: 'document-inspector.view-mode.parsed'}\nexport const VIEW_MODE_RAW = {id: 'raw', title: 'document-inspector.view-mode.raw-json'}\nexport const VIEW_MODES = [VIEW_MODE_PARSED, VIEW_MODE_RAW]\n","import {type SanityDocumentLike} from '@sanity/types'\nimport LRU from 'quick-lru'\nimport {isRecord, isString} from 'sanity'\n\nconst lru = new LRU({maxSize: 1000})\n\nexport function isExpanded(keyPath: any, value: any): any {\n const cached = lru.get(keyPath)\n\n if (cached === undefined) {\n lru.set(keyPath, Array.isArray(value) || isRecord(value))\n return isExpanded(keyPath, value)\n }\n\n return cached\n}\n\nexport function toggleExpanded(event: any): void {\n const {path} = event\n const current = lru.get(path)\n\n if (current === undefined) {\n // something is wrong\n return\n }\n\n lru.set(path, !current)\n}\n\nexport function selectElement(element: HTMLElement): void {\n const sel = window.getSelection()\n\n if (sel) {\n const range = document.createRange()\n\n sel.removeAllRanges()\n range.selectNodeContents(element)\n sel.addRange(range)\n }\n}\n\nexport function select(event: any): void {\n selectElement(event.currentTarget)\n}\n\nexport function maybeSelectAll(event: any): void {\n const selectAll = event.keyCode === 65 && (event.metaKey || event.ctrlKey)\n\n if (!selectAll) {\n return\n }\n\n event.preventDefault()\n\n selectElement(event.currentTarget)\n}\n\nexport function isDocumentLike(value: unknown): value is SanityDocumentLike {\n return isRecord(value) && isString(value._id) && isString(value._type)\n}\n","import {rem, type Theme} from '@sanity/ui'\nimport {css, styled} from 'styled-components'\n\nexport const JSONInspectorWrapper = styled.div(({theme}: {theme: Theme}) => {\n const {color, fonts, space} = theme.sanity\n\n return css`\n & .json-inspector,\n & .json-inspector .json-inspector__selection {\n font-family: ${fonts.code.family};\n font-size: ${fonts.code.sizes[1].fontSize}px;\n line-height: ${fonts.code.sizes[1].lineHeight}px;\n color: var(--card-code-fg-color);\n }\n\n & .json-inspector .json-inspector__leaf {\n padding-left: ${rem(space[4])};\n }\n\n & .json-inspector .json-inspector__leaf.json-inspector__leaf_root {\n padding-top: ${rem(space[3])};\n padding-left: 0;\n }\n\n & .json-inspector > .json-inspector__leaf_root > .json-inspector__line > .json-inspector__key {\n display: none;\n }\n\n & .json-inspector .json-inspector__line {\n display: block;\n position: relative;\n cursor: default;\n }\n\n & .json-inspector .json-inspector__line::after {\n content: '';\n position: absolute;\n top: 0;\n left: -200px;\n right: -50px;\n bottom: 0;\n z-index: -1;\n pointer-events: none;\n }\n\n & .json-inspector .json-inspector__line:hover::after {\n background: var(--card-code-bg-color);\n }\n\n & .json-inspector .json-inspector__leaf_composite > .json-inspector__line {\n cursor: pointer;\n }\n\n & .json-inspector .json-inspector__leaf_composite > .json-inspector__line::before {\n content: '▸ ';\n margin-left: calc(0 - ${rem(space[4])} + 3px);\n font-size: ${fonts.code.sizes[1].fontSize}px;\n line-height: ${fonts.code.sizes[1].lineHeight}px;\n }\n\n &\n .json-inspector\n .json-inspector__leaf_expanded.json-inspector__leaf_composite\n > .json-inspector__line::before {\n content: '▾ ';\n font-size: ${fonts.code.sizes[1].fontSize}px;\n line-height: ${fonts.code.sizes[1].lineHeight}px;\n }\n\n & .json-inspector .json-inspector__radio,\n & .json-inspector .json-inspector__flatpath {\n display: none;\n }\n\n & .json-inspector .json-inspector__value {\n margin-left: ${rem(space[4] / 2)};\n }\n\n &\n .json-inspector\n > .json-inspector__leaf_root\n > .json-inspector__line\n > .json-inspector__key\n + .json-inspector__value {\n margin: 0;\n }\n\n & .json-inspector .json-inspector__key {\n color: ${color.syntax.property};\n }\n\n & .json-inspector .json-inspector__value_helper,\n & .json-inspector .json-inspector__value_null {\n color: ${color.syntax.constant};\n }\n\n & .json-inspector .json-inspector__not-found {\n padding-top: ${rem(space[3])};\n }\n\n & .json-inspector .json-inspector__value_string {\n color: ${color.syntax.string};\n }\n\n & .json-inspector .json-inspector__value_boolean {\n color: ${color.syntax.boolean};\n }\n\n & .json-inspector .json-inspector__value_number {\n color: ${color.syntax.number};\n }\n\n & .json-inspector .json-inspector__show-original {\n display: inline-block;\n padding: 0 6px;\n cursor: pointer;\n }\n\n & .json-inspector .json-inspector__show-original:hover {\n color: inherit;\n }\n\n & .json-inspector .json-inspector__show-original::before {\n content: '↔';\n }\n\n & .json-inspector .json-inspector__show-original:hover::after {\n content: ' expand';\n }\n `\n})\n","import {SearchIcon} from '@sanity/icons'\nimport {TextInput} from '@sanity/ui'\nimport {type ChangeEvent, useCallback} from 'react'\nimport {useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../i18n'\n\nexport function Search(props: {onChange: (q: string) => void; query: string}) {\n const {onChange, query} = props\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => onChange(event.target.value),\n [onChange],\n )\n const {t} = useTranslation(structureLocaleNamespace)\n\n return (\n <TextInput\n icon={SearchIcon}\n onChange={handleChange}\n placeholder={t('document-inspector.search.placeholder')}\n radius={2}\n value={query || ''}\n />\n )\n}\n","import {JsonInspector} from '@rexxars/react-json-inspector'\nimport {type SanityDocument} from '@sanity/types'\nimport {Card, Code, Flex, TabList, TabPanel} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {Translate, useTranslation} from 'sanity'\n\nimport {Dialog, Tab} from '../../../../ui-components'\nimport {DocTitle} from '../../../components'\nimport {structureLocaleNamespace} from '../../../i18n'\nimport {useStructureToolSetting} from '../../../useStructureToolSetting'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {VIEW_MODE_PARSED, VIEW_MODE_RAW, VIEW_MODES} from './constants'\nimport {isDocumentLike, isExpanded, maybeSelectAll, select, toggleExpanded} from './helpers'\nimport {JSONInspectorWrapper} from './InspectDialog.styles'\nimport {Search} from './Search'\n\ninterface InspectDialogProps {\n value: Partial<SanityDocument> | null\n}\n\nexport function InspectDialog(props: InspectDialogProps) {\n const {value} = props\n const {onInspectClose, paneKey} = useDocumentPane()\n const dialogIdPrefix = `${paneKey}_inspect_`\n\n /* this creates a view mode (the default that it opens with is the parsed tab) that is saved based on the paneKey\n where the inspect dialog lives.\n This also means that when a page is loaded, the state of the tabs remains and doesn't revert to the pane tab */\n const [viewModeId, onViewModeChange] = useStructureToolSetting(\n 'inspect-view-mode',\n null,\n 'parsed',\n )\n\n /* based on the view mode it shows the right tab content */\n const viewMode = VIEW_MODES.find((mode) => mode.id === viewModeId)\n\n const setParsedViewMode = useCallback(() => {\n onViewModeChange(VIEW_MODE_PARSED.id)\n }, [onViewModeChange])\n\n const setRawViewMode = useCallback(() => {\n onViewModeChange(VIEW_MODE_RAW.id)\n }, [onViewModeChange])\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n return (\n <Dialog\n bodyHeight=\"fill\"\n id={`${dialogIdPrefix}dialog`}\n header={\n isDocumentLike(value) ? (\n <Translate\n t={t}\n i18nKey=\"document-inspector.dialog.title\"\n components={{\n DocumentTitle: () => (\n <em>\n <DocTitle document={value} />\n </em>\n ),\n }}\n />\n ) : (\n <em>{t('document-inspector.dialog.title-no-value')}</em>\n )\n }\n onClose={onInspectClose}\n onClickOutside={onInspectClose}\n padding={false}\n width={2}\n >\n <Flex direction=\"column\" height=\"fill\">\n <Card\n padding={3}\n paddingTop={0}\n shadow={1}\n style={{position: 'sticky', bottom: 0, zIndex: 3}}\n >\n <TabList space={1}>\n <Tab\n aria-controls={`${dialogIdPrefix}tabpanel`}\n id={`${dialogIdPrefix}tab-${VIEW_MODE_PARSED.id}`}\n label={t(VIEW_MODE_PARSED.title)}\n onClick={setParsedViewMode}\n selected={viewMode === VIEW_MODE_PARSED}\n />\n <Tab\n aria-controls={`${dialogIdPrefix}tabpanel`}\n id={`${dialogIdPrefix}tab-${VIEW_MODE_RAW.id}`}\n label={t(VIEW_MODE_RAW.title)}\n onClick={setRawViewMode}\n selected={viewMode === VIEW_MODE_RAW}\n />\n </TabList>\n </Card>\n\n <TabPanel\n aria-labelledby={`${dialogIdPrefix}tab-${viewModeId}`}\n flex={1}\n id={`${dialogIdPrefix}tabpanel`}\n overflow=\"auto\"\n padding={4}\n style={{outline: 'none'}}\n >\n {viewMode === VIEW_MODE_PARSED && (\n <JSONInspectorWrapper>\n <JsonInspector\n data={value}\n isExpanded={isExpanded}\n onClick={toggleExpanded}\n search={Search}\n filterOptions={{ignoreCase: true}}\n />\n </JSONInspectorWrapper>\n )}\n\n {viewMode === VIEW_MODE_RAW && (\n <Code\n language=\"json\"\n tabIndex={0}\n onKeyDown={maybeSelectAll}\n onDoubleClick={select}\n onFocus={select}\n size={1}\n >\n {JSON.stringify(value, null, 2)}\n </Code>\n )}\n </TabPanel>\n </Flex>\n </Dialog>\n )\n}\n","import {type ButtonMode, type ButtonTone, Card, type CardTone, Flex, Text} from '@sanity/ui'\nimport {type ComponentType, type ElementType, type ReactNode} from 'react'\n\nimport {Button} from '../../../../../ui-components'\n\ninterface BannerProps {\n action?: {\n as?: ElementType | keyof React.JSX.IntrinsicElements\n icon?: ComponentType\n onClick?: () => void\n text: string\n tone?: ButtonTone\n disabled?: boolean\n mode?: ButtonMode\n }\n content: ReactNode\n icon?: ComponentType\n tone?: CardTone\n paddingY?: number\n}\n\nexport function Banner(props: BannerProps) {\n const {action, content, icon: Icon, tone = 'transparent', paddingY = 2, ...rest} = props\n\n return (\n <Card borderBottom paddingX={4} paddingY={paddingY} tone={tone} {...rest}>\n <Flex align=\"center\" gap={3}>\n {Icon && (\n <Text size={0}>\n <Icon />\n </Text>\n )}\n\n <Flex align=\"center\" flex={1} gap={2} paddingY={3}>\n {content}\n </Flex>\n\n {action && (\n <Button {...action} mode={action.mode || 'ghost'} tone={action.tone || 'default'} />\n )}\n </Flex>\n </Card>\n )\n}\n","import {DocumentRemoveIcon, ReadOnlyIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {\n isDraftPerspective,\n isPublishedPerspective,\n type ReleaseDocument,\n Translate,\n useDocumentOperation,\n usePerspective,\n useTranslation,\n} from 'sanity'\nimport {useRouter} from 'sanity/router'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nexport function DeletedDocumentBanners() {\n const {isDeleted, isDeleting} = useDocumentPane()\n const {selectedPerspective} = usePerspective()\n\n if (\n !isPublishedPerspective(selectedPerspective) &&\n !isDraftPerspective(selectedPerspective) &&\n selectedPerspective.state === 'archived'\n ) {\n return <ArchivedReleaseBanner release={selectedPerspective as ReleaseDocument} />\n }\n if (isDeleted && !isDeleting) return <DeletedDocumentBanner />\n}\n\nfunction DeletedDocumentBanner() {\n const {documentId, documentType, lastNonDeletedRevId} = useDocumentPane()\n const {restore} = useDocumentOperation(documentId, documentType)\n const {navigateIntent} = useRouter()\n\n const handleRestore = useCallback(() => {\n if (lastNonDeletedRevId) {\n restore.execute(lastNonDeletedRevId)\n navigateIntent('edit', {id: documentId, type: documentType})\n }\n }, [documentId, documentType, navigateIntent, restore, lastNonDeletedRevId])\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n return (\n <Banner\n action={\n lastNonDeletedRevId\n ? {\n onClick: handleRestore,\n text: t('banners.deleted-document-banner.restore-button.text'),\n }\n : undefined\n }\n content={\n <Text size={1} weight=\"medium\">\n {t('banners.deleted-document-banner.text')}\n </Text>\n }\n data-testid=\"deleted-document-banner\"\n icon={ReadOnlyIcon}\n />\n )\n}\n\nconst ArchivedReleaseBanner = ({release}: {release: ReleaseDocument}) => {\n const {t} = useTranslation()\n\n return (\n <Banner\n tone=\"caution\"\n content={\n <Text size={1} weight=\"medium\">\n <Translate\n t={t}\n i18nKey=\"banners.deleted-release-banner.text\"\n values={{title: release.metadata?.title}}\n />\n </Text>\n }\n data-testid=\"deleted-release-banner\"\n icon={DocumentRemoveIcon}\n />\n )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {isDeprecatedSchemaType, Translate, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nexport function DeprecatedDocumentTypeBanner() {\n const {schemaType} = useDocumentPane()\n const {t} = useTranslation(structureLocaleNamespace)\n\n if (!isDeprecatedSchemaType(schemaType)) {\n return null\n }\n\n return (\n <Banner\n content={\n <Text size={1} weight=\"medium\">\n <Translate t={t} i18nKey=\"banners.deprecated-document-type-banner.text\" />{' '}\n {schemaType.deprecated.reason}\n </Text>\n }\n data-testid=\"deprecated-document-type-banner\"\n icon={ErrorOutlineIcon}\n />\n )\n}\n","import {defineEvent} from '@sanity/telemetry'\n\n/** @internal */\nexport const AskToEditDialogOpened = defineEvent({\n name: 'Ask To Edit Dialog Opened',\n version: 1,\n description: 'User clicked the \"Ask to edit\" button in the document permissions banner',\n})\n\n/** @internal */\nexport const AskToEditRequestSent = defineEvent({\n name: 'Ask To Edit Request Sent',\n version: 1,\n description: 'User sent a role change request from the dialog',\n})\n","import {useTelemetry} from '@sanity/telemetry/react'\nimport {Box, Card, DialogProvider, Flex, Stack, Text, TextInput, useToast} from '@sanity/ui'\nimport {useId, useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\nimport {catchError, map, type Observable, of, startWith} from 'rxjs'\nimport {type Role, useClient, useProjectId, useTranslation, useZIndex} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Dialog} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {AskToEditRequestSent} from './__telemetry__/RequestPermissionDialog.telemetry'\nimport {type AccessRequest} from './useRoleRequestsStatus'\n\nconst MAX_NOTE_LENGTH = 150\n\n/** @internal */\nexport const DialogBody = styled(Box)`\n box-sizing: border-box;\n`\n\n/** @internal */\nexport const LoadingContainer = styled(Flex).attrs({\n align: 'center',\n direction: 'column',\n justify: 'center',\n})`\n height: 110px;\n`\n\n/** @internal */\nexport interface RequestPermissionDialogProps {\n onClose?: () => void\n onRequestSubmitted?: () => void\n}\n\n/**\n * A dialog that enables the user to request permission to change their\n * member role from \"Viewer\" to \"Editor\" or \"Admin\" depending on the\n * project's available roles.\n *\n * @internal\n */\nexport function RequestPermissionDialog({\n onClose,\n onRequestSubmitted,\n}: RequestPermissionDialogProps) {\n const {t} = useTranslation(structureLocaleNamespace)\n const telemtry = useTelemetry()\n const dialogId = `request-permissions-${useId()}`\n const projectId = useProjectId()\n const client = useClient({apiVersion: '2024-09-26'})\n const toast = useToast()\n const zOffset = useZIndex()\n\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const [note, setNote] = useState('')\n\n const [msgError, setMsgError] = useState<string | undefined>()\n const [hasTooManyRequests, setHasTooManyRequests] = useState<boolean>(false)\n const [hasBeenDenied, setHasBeenDenied] = useState<boolean>(false)\n\n const requestedRole$: Observable<'administrator' | 'editor'> = useMemo(() => {\n const adminRole = 'administrator' as const\n if (!projectId || !client) return of(adminRole)\n return client.observable\n .request<(Role & {appliesToUsers?: boolean})[]>({url: `/projects/${projectId}/roles`})\n .pipe(\n map((roles) => {\n const hasEditor = roles\n .filter((role) => role?.appliesToUsers)\n .find((role) => role.name === 'editor')\n return hasEditor ? 'editor' : adminRole\n }),\n startWith(adminRole),\n catchError(() => of(adminRole)),\n )\n }, [projectId, client])\n\n const requestedRole = useObservable(requestedRole$)\n\n const onSubmit = () => {\n setIsSubmitting(true)\n client\n .request<AccessRequest | null>({\n url: `/access/project/${projectId}/requests`,\n method: 'post',\n body: {note, requestUrl: window?.location.href, requestedRole, type: 'role'},\n })\n .then((request) => {\n if (request) {\n if (onRequestSubmitted) onRequestSubmitted()\n telemtry.log(AskToEditRequestSent)\n toast.push({title: 'Edit access requested'})\n }\n })\n .catch((err) => {\n const statusCode = err?.response?.statusCode\n const errMessage = err?.response?.body?.message\n if (statusCode === 429) {\n // User is over their cross-project request limit\n setHasTooManyRequests(true)\n setMsgError(errMessage)\n }\n if (statusCode === 409) {\n // If we get a 409, user has been denied on this project or has a valid pending request\n // valid pending request should be handled by GET request above\n setHasBeenDenied(true)\n setMsgError(errMessage)\n } else {\n toast.push({\n title: 'There was a problem submitting your request.',\n status: 'error',\n })\n }\n })\n .finally(() => {\n setIsSubmitting(false)\n })\n }\n\n return (\n <DialogProvider position={'fixed'} zOffset={zOffset.fullscreen}>\n <Dialog\n width={1}\n id={dialogId}\n header={t('request-permission-dialog.header.text')}\n footer={{\n cancelButton: {\n onClick: onClose,\n text: t('confirm-dialog.cancel-button.fallback-text'),\n },\n confirmButton: {\n onClick: onSubmit,\n loading: isSubmitting,\n disabled: hasTooManyRequests || hasBeenDenied,\n text: t('request-permission-dialog.confirm-button.text'),\n tone: 'primary',\n type: 'submit',\n },\n }}\n onClose={onClose}\n onClickOutside={onClose}\n >\n <DialogBody>\n <Stack space={4}>\n <Text>{t('request-permission-dialog.description.text')}</Text>\n {hasTooManyRequests || hasBeenDenied ? (\n <Card tone={'caution'} padding={3} radius={2} shadow={1}>\n <Text size={1}>\n {hasTooManyRequests && (\n <>{msgError ?? t('request-permission-dialog.warning.limit-reached.text')}</>\n )}\n {hasBeenDenied && (\n <>{msgError ?? t('request-permission-dialog.warning.denied.text')}</>\n )}\n </Text>\n </Card>\n ) : (\n <Stack space={3} paddingBottom={0}>\n <TextInput\n placeholder={t('request-permission-dialog.note-input.placeholder.text')}\n disabled={isSubmitting}\n onKeyDown={(e) => {\n if (e.key === 'Enter') onSubmit()\n }}\n maxLength={MAX_NOTE_LENGTH}\n value={note}\n onChange={(e) => {\n setNote(e.currentTarget.value)\n }}\n />\n\n <Text align=\"right\" muted size={1}>{`${note.length}/${MAX_NOTE_LENGTH}`}</Text>\n </Stack>\n )}\n </Stack>\n </DialogBody>\n </Dialog>\n </DialogProvider>\n )\n}\n","import {addWeeks, isAfter, isBefore} from 'date-fns'\nimport {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {of} from 'rxjs'\nimport {catchError, map, startWith} from 'rxjs/operators'\nimport {type SanityClient, useClient, useProjectId} from 'sanity'\n\n/** @internal */\nexport interface AccessRequest {\n id: string\n status: 'pending' | 'accepted' | 'declined'\n resourceId: string\n resourceType: 'project'\n createdAt: string\n updatedAt: string\n updatedByUserId: string\n requestedByUserId: string\n requestedRole: string\n type: 'access' | 'role'\n note: string\n}\n\nconst LOADING_STATE = {loading: true, error: false, status: undefined}\nconst EMPTY_STATE = {loading: false, error: false, status: 'none'}\nconst DECLINED_STATE = {loading: false, error: false, status: 'declined'}\nconst PENDING_STATE = {loading: false, error: false, status: 'pending'}\nconst EXPIRED_STATE = {loading: false, error: false, status: 'expired'}\n\n/** @internal */\nexport const useRoleRequestsStatus = () => {\n const client = useClient({apiVersion: '2024-07-01'})\n const projectId = useProjectId()\n\n const checkRoleRequests$ = useMemo(() => {\n if (!client || !projectId) {\n return of(EMPTY_STATE)\n }\n\n return checkRoleRequests(client, projectId)\n }, [client, projectId])\n\n const {loading, error, status} = useObservable(checkRoleRequests$, LOADING_STATE)\n return {data: status, loading, error}\n}\n\nfunction checkRoleRequests(client: SanityClient, projectId: string) {\n return client.observable\n .request<AccessRequest[] | null>({\n url: '/access/requests/me',\n tag: 'use-role-requests-status',\n })\n .pipe(\n map((requests) => {\n if (!requests || requests.length === 0) {\n return EMPTY_STATE\n }\n\n // Filter requests for the specific project and where type is 'role'\n const projectRequests = requests.filter(\n (request) => request.resourceId === projectId && request.type === 'role',\n )\n\n const declinedRequest = projectRequests.find((request) => request.status === 'declined')\n if (\n declinedRequest &&\n isAfter(addWeeks(new Date(declinedRequest.createdAt), 2), new Date())\n ) {\n return DECLINED_STATE\n }\n\n const pendingRequest = projectRequests.find(\n (request) =>\n request.status === 'pending' &&\n isAfter(addWeeks(new Date(request.createdAt), 2), new Date()),\n )\n if (pendingRequest) {\n return PENDING_STATE\n }\n\n const oldPendingRequest = projectRequests.find(\n (request) =>\n request.status === 'pending' &&\n isBefore(addWeeks(new Date(request.createdAt), 2), new Date()),\n )\n\n return oldPendingRequest ? EXPIRED_STATE : EMPTY_STATE\n }),\n catchError((err) => {\n console.error('Failed to fetch access requests', err)\n return of({loading: false, error: true, status: undefined})\n }),\n startWith(LOADING_STATE), // Start with loading state\n )\n}\n","import {ReadOnlyIcon} from '@sanity/icons'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Text} from '@sanity/ui'\nimport {useMemo, useState} from 'react'\nimport {Translate, useCurrentUser, useListFormat, useTranslation} from 'sanity'\n\nimport {\n RequestPermissionDialog,\n useRoleRequestsStatus,\n} from '../../../../components/requestPermissionDialog'\nimport {AskToEditDialogOpened} from '../../../../components/requestPermissionDialog/__telemetry__/RequestPermissionDialog.telemetry'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {Banner} from './Banner'\n\ninterface PermissionCheckBannerProps {\n granted: boolean\n requiredPermission: 'update' | 'create'\n}\n\nexport function PermissionCheckBanner({granted, requiredPermission}: PermissionCheckBannerProps) {\n const currentUser = useCurrentUser()\n\n const {\n data: roleRequestStatus,\n loading: requestStatusLoading,\n error: requestStatusError,\n } = useRoleRequestsStatus()\n const [requestSent, setRequestSent] = useState(false)\n const requestPending = useMemo(\n () => roleRequestStatus === 'pending' || roleRequestStatus === 'declined' || requestSent,\n [roleRequestStatus, requestSent],\n )\n const currentUserRoles = currentUser?.roles || []\n const isOnlyViewer = currentUserRoles.length === 1 && currentUserRoles[0].name === 'viewer'\n const [showRequestPermissionDialog, setShowRequestPermissionDialog] = useState(false)\n\n const listFormat = useListFormat({style: 'short'})\n const {t} = useTranslation(structureLocaleNamespace)\n const telemetry = useTelemetry()\n\n if (granted) return null\n\n const roleTitles = currentUserRoles.map((role) => role.title)\n const roles = listFormat\n .formatToParts(roleTitles)\n .map((part) =>\n part.type === 'element' ? <code key={part.value}>{part.value}</code> : part.value,\n )\n\n return (\n <>\n <Banner\n content={\n <Text size={1} weight=\"medium\">\n <Translate\n t={t}\n i18nKey=\"banners.permission-check-banner.missing-permission\"\n components={{Roles: () => <>{roles}</>}}\n values={{count: roles.length, roles: roleTitles}}\n context={requiredPermission}\n />\n </Text>\n }\n action={\n isOnlyViewer && roleRequestStatus && !requestStatusError && !requestStatusLoading\n ? {\n onClick: requestPending\n ? undefined\n : () => {\n setShowRequestPermissionDialog(true)\n telemetry.log(AskToEditDialogOpened)\n },\n text: requestPending\n ? t('banners.permission-check-banner.request-permission-button.sent')\n : t('banners.permission-check-banner.request-permission-button.text'),\n tone: requestPending ? 'default' : 'primary',\n disabled: requestPending,\n mode: requestPending ? 'bleed' : undefined,\n }\n : undefined\n }\n data-testid=\"permission-check-banner\"\n icon={ReadOnlyIcon}\n />\n {showRequestPermissionDialog && (\n <RequestPermissionDialog\n onClose={() => setShowRequestPermissionDialog(false)}\n onRequestSubmitted={() => {\n setRequestSent(true)\n setShowRequestPermissionDialog(false)\n }}\n />\n )}\n </>\n )\n}\n","import {CloseIcon, SyncIcon, WarningOutlineIcon} from '@sanity/icons'\nimport {type KeyedSegment, type Reference} from '@sanity/types'\nimport {Text} from '@sanity/ui'\nimport {fromString as pathFromString, get as pathGet} from '@sanity/util/paths'\nimport {memo, useCallback, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {concat, type Observable, of} from 'rxjs'\nimport {debounceTime, map} from 'rxjs/operators'\nimport {\n type DocumentAvailability,\n getPublishedId,\n useDocumentPreviewStore,\n usePerspective,\n useTranslation,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../../../components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {type RouterPaneGroup} from '../../../../types'\nimport {Banner} from './Banner'\n\ninterface ParentReferenceInfo {\n loading: boolean\n result?: {\n availability: {\n draft: DocumentAvailability\n published: DocumentAvailability\n version?: DocumentAvailability\n }\n refValue: string | undefined\n }\n}\n\nexport const ReferenceChangedBanner = memo(() => {\n const documentPreviewStore = useDocumentPreviewStore()\n const {selectedPerspectiveName} = usePerspective()\n const {params, groupIndex, routerPanesState, replaceCurrent, BackLink} = usePaneRouter()\n const routerReferenceId = routerPanesState[groupIndex]?.[0].id\n const parentGroup = routerPanesState[groupIndex - 1] as RouterPaneGroup | undefined\n const parentSibling = parentGroup?.[0]\n const parentId = parentSibling?.id\n const hasHistoryOpen = Boolean(parentSibling?.params?.rev)\n const parentRefPath = useMemo(() => {\n return (params?.parentRefPath && pathFromString(params.parentRefPath)) || null\n }, [params?.parentRefPath])\n const {t} = useTranslation(structureLocaleNamespace)\n\n /**\n * Loads information regarding the reference field of the parent pane. This\n * is only applicable to child references (aka references-in-place).\n *\n * It utilizes the pane ID of the parent pane (which is a document ID) along\n * with the `parentRefPath` router param on the current pane to find the\n * current value of the reference field on the parent document.\n *\n * This is used to compare with the current pane's document ID. If the IDs\n * don't match then this banner should reveal itself\n */\n const referenceInfoObservable = useMemo((): Observable<ParentReferenceInfo> => {\n const parentRefPathSegment = parentRefPath?.[0] as string | undefined\n\n // short-circuit: this document pane is not a child reference pane\n if (!parentId || !parentRefPathSegment || !parentRefPath) {\n return of({loading: false})\n }\n\n const publishedId = getPublishedId(parentId)\n const path = pathFromString(parentRefPathSegment)\n\n // note: observePaths doesn't support keyed path segments, so we need to select the nearest parent\n const keyedSegmentIndex = path.findIndex(\n (p): p is KeyedSegment => typeof p == 'object' && '_key' in p,\n )\n\n return concat(\n // emit a loading state instantly\n of({loading: true}),\n // then emit the values from watching the published ID's path\n documentPreviewStore\n .unstable_observePathsDocumentPair(\n publishedId,\n (keyedSegmentIndex === -1 ? path : path.slice(0, keyedSegmentIndex)) as string[][],\n {\n version: selectedPerspectiveName,\n },\n )\n .pipe(\n // this debounce time is needed to prevent flashing banners due to\n // the router state updating faster than the content-lake state. we\n // debounce to wait for more emissions because the value pulled\n // initially could be stale.\n debounceTime(750),\n map(\n ({draft, published, version}): ParentReferenceInfo => ({\n loading: false,\n result: {\n availability: {\n draft: draft.availability,\n published: published.availability,\n ...(version?.availability\n ? {\n version: version.availability,\n }\n : {}),\n },\n refValue: pathGet<Reference>(\n version?.snapshot || draft.snapshot || published.snapshot,\n parentRefPath,\n )?._ref,\n },\n }),\n ),\n ),\n )\n }, [selectedPerspectiveName, documentPreviewStore, parentId, parentRefPath])\n const referenceInfo = useObservable(referenceInfoObservable, {loading: true})\n\n const handleReloadReference = useCallback(() => {\n if (referenceInfo.loading) return\n\n if (referenceInfo.result?.refValue) {\n replaceCurrent({\n id: referenceInfo.result.refValue,\n params: params as Record<string, string>,\n })\n }\n }, [referenceInfo.loading, referenceInfo.result, replaceCurrent, params])\n\n const shouldHide =\n // if `parentId` or `parentRefPath` is not present then this banner is n/a\n !parentId ||\n !parentRefPath ||\n // if viewing this pane via history, then hide\n hasHistoryOpen ||\n // if loading, hide\n referenceInfo.loading ||\n // if the parent document is not available (e.g. due to permission denied or\n // not found) we don't want to display a warning here, but instead rely on the\n // parent view to display the appropriate message\n (!referenceInfo.result?.availability.draft.available &&\n !referenceInfo.result?.availability.published.available) ||\n // if the references are the same, then hide the reference changed banner\n referenceInfo.result?.refValue === routerReferenceId\n\n if (shouldHide) return null\n\n return (\n <Banner\n action={\n referenceInfo.result?.refValue\n ? {\n onClick: handleReloadReference,\n icon: SyncIcon,\n text: t('banners.reference-changed-banner.reason-changed.reload-button.text'),\n }\n : {\n as: BackLink,\n icon: CloseIcon,\n text: t('banners.reference-changed-banner.reason-removed.close-button.text'),\n }\n }\n data-testid=\"reference-changed-banner\"\n content={\n <Text size={1} weight=\"medium\">\n {referenceInfo.result?.refValue\n ? t('banners.reference-changed-banner.reason-changed.text')\n : t('banners.reference-changed-banner.reason-removed.text')}\n </Text>\n }\n icon={WarningOutlineIcon}\n tone=\"caution\"\n />\n )\n})\n\nReferenceChangedBanner.displayName = 'Memo(ReferenceChangedBanner)'\n","import {LockIcon} from '@sanity/icons'\nimport {Flex, Text} from '@sanity/ui'\nimport {type CSSProperties, useCallback} from 'react'\nimport {\n formatRelativeLocalePublishDate,\n getReleaseIdFromReleaseDocumentId,\n getReleaseTone,\n isReleaseScheduledOrScheduling,\n LATEST,\n type ReleaseDocument,\n Translate,\n useTranslation,\n useVersionOperations,\n} from 'sanity'\nimport {structureLocaleNamespace} from 'sanity/structure'\n\nimport {Button} from '../../../../../ui-components'\nimport {Banner} from './Banner'\n\nexport function AddToReleaseBanner({\n documentId,\n currentRelease,\n value,\n}: {\n documentId: string\n currentRelease: ReleaseDocument\n value?: Record<string, unknown>\n}): React.JSX.Element {\n const tone = getReleaseTone(currentRelease ?? LATEST)\n const {t} = useTranslation(structureLocaleNamespace)\n const {t: tCore} = useTranslation()\n\n const {createVersion} = useVersionOperations()\n\n const isScheduled =\n isReleaseScheduledOrScheduling(currentRelease) &&\n currentRelease.metadata.releaseType === 'scheduled'\n\n const handleAddToRelease = useCallback(async () => {\n if (currentRelease._id) {\n await createVersion(getReleaseIdFromReleaseDocumentId(currentRelease._id), documentId, value)\n }\n }, [createVersion, currentRelease._id, documentId, value])\n\n return (\n <Banner\n tone={tone}\n paddingY={0}\n content={\n <Flex align=\"center\" justify=\"space-between\" gap={1} flex={1}>\n <Text size={1}>\n {isScheduled ? (\n <Flex align=\"center\" justify=\"center\" gap={2}>\n <LockIcon />{' '}\n <Translate\n t={tCore}\n i18nKey=\"release.banner.scheduled-for-publishing-on\"\n values={{\n date: formatRelativeLocalePublishDate(currentRelease),\n }}\n />\n </Flex>\n ) : (\n <Translate\n i18nKey=\"banners.release.not-in-release\"\n t={t}\n values={{\n title:\n currentRelease.metadata.title || tCore('release.placeholder-untitled-release'),\n }}\n components={{\n Label: ({children}) => {\n return (\n <span\n style={\n {\n color: `var(--card-badge-${tone ?? 'default'}-fg-color)`,\n backgroundColor: `var(--card-badge-${tone ?? 'default'}-bg-color)`,\n borderRadius: 3,\n textDecoration: 'none',\n padding: '0px 2px',\n fontWeight: 500,\n } as CSSProperties\n }\n >\n {children}\n </span>\n )\n },\n }}\n />\n )}\n </Text>\n\n {!isScheduled && (\n <Button\n text={t('banners.release.action.add-to-release')}\n tone={tone}\n onClick={handleAddToRelease}\n />\n )}\n </Flex>\n }\n />\n )\n}\n","import {Flex, Text} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {\n getReleaseIdFromReleaseDocumentId,\n getReleaseTone,\n Translate,\n useReleases,\n useTranslation,\n VersionInlineBadge,\n} from 'sanity'\nimport {structureLocaleNamespace, usePaneRouter} from 'sanity/structure'\n\nimport {Banner} from './Banner'\n\nexport function ArchivedReleaseDocumentBanner(): React.JSX.Element {\n const {t} = useTranslation(structureLocaleNamespace)\n const {archivedReleases} = useReleases()\n\n const {params, setParams} = usePaneRouter()\n const handleGoBack = () => {\n setParams({\n ...params,\n rev: params?.historyEvent || undefined,\n since: undefined,\n historyVersion: undefined,\n })\n }\n\n const release = useMemo(() => {\n return archivedReleases.find(\n (r) => getReleaseIdFromReleaseDocumentId(r._id) === params?.historyVersion,\n )\n }, [archivedReleases, params?.historyVersion])\n\n const description =\n release?.state === 'published'\n ? 'banners.published-release.description'\n : 'banners.archived-release.description'\n\n return (\n <Banner\n tone=\"caution\"\n paddingY={2}\n content={\n <Flex align=\"center\" justify=\"space-between\" gap={1} flex={1}>\n <Text size={1}>\n <Translate\n t={t}\n i18nKey={description}\n components={{\n VersionBadge: ({children}) => {\n if (!release) return children\n return (\n <VersionInlineBadge $tone={getReleaseTone(release)}>\n {release?.metadata.title}\n </VersionInlineBadge>\n )\n },\n }}\n />\n </Text>\n </Flex>\n }\n action={{\n text: 'Go back to published version',\n onClick: handleGoBack,\n }}\n />\n )\n}\n","import {defineEvent} from '@sanity/telemetry'\n\ninterface TypeInfo {\n liveEditResolveType: 'publish' | 'discard'\n}\n\n/**\n * When a draft in a live edit document is published\n * @internal\n */\nexport const ResolvedLiveEdit = defineEvent<TypeInfo>({\n name: 'Resolved LiveEdit Draft',\n version: 1,\n description: 'User resolved a draft of a live edit document to continue editing',\n})\n","import {type SanityDocument} from '@sanity/client'\nimport {ErrorOutlineIcon} from '@sanity/icons'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Flex, Text} from '@sanity/ui'\nimport {useCallback, useEffect, useState} from 'react'\nimport {\n isDraftId,\n type ObjectSchemaType,\n Translate,\n useDocumentOperation,\n usePerspective,\n useTranslation,\n} from 'sanity'\n\nimport {Button} from '../../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {ResolvedLiveEdit} from './__telemetry__/DraftLiveEditBanner.telemetry'\nimport {Banner} from './Banner'\n\ninterface DraftLiveEditBannerProps {\n displayed: Partial<SanityDocument> | null\n documentId: string\n schemaType: ObjectSchemaType\n}\n\nexport function DraftLiveEditBanner({\n displayed,\n documentId,\n schemaType,\n}: DraftLiveEditBannerProps): React.JSX.Element | null {\n const {t} = useTranslation(structureLocaleNamespace)\n const [isPublishing, setPublishing] = useState(false)\n const [isDiscarding, setDiscarding] = useState(false)\n const {selectedPerspectiveName} = usePerspective()\n\n const telemetry = useTelemetry()\n\n const {publish, discardChanges} = useDocumentOperation(documentId, displayed?._type || '')\n\n const handlePublish = useCallback(() => {\n publish.execute()\n setPublishing(true)\n telemetry.log(ResolvedLiveEdit, {liveEditResolveType: 'publish'})\n }, [publish, telemetry])\n\n const handleDiscard = useCallback(() => {\n discardChanges.execute()\n setDiscarding(true)\n telemetry.log(ResolvedLiveEdit, {liveEditResolveType: 'discard'})\n }, [discardChanges, telemetry])\n\n useEffect(() => {\n return () => {\n setPublishing(false)\n setDiscarding(false)\n }\n })\n\n const hasDraft = displayed && displayed._id && isDraftId(displayed._id)\n if (selectedPerspectiveName && !hasDraft) {\n return null\n }\n return (\n <Banner\n content={\n <Flex align=\"center\" justify=\"space-between\" gap={1}>\n <Text size={1} weight=\"medium\">\n <Translate\n t={t}\n i18nKey={\n hasDraft\n ? 'banners.live-edit-draft-banner.text'\n : 'banners.live-edit-draft-banner.draft-perspective'\n }\n values={{schemaType: schemaType.title}}\n />\n </Text>\n {hasDraft && (\n <>\n <Button\n onClick={handlePublish}\n text={t('action.publish.live-edit.label')}\n tooltipProps={{content: t('banners.live-edit-draft-banner.publish.tooltip')}}\n loading={isPublishing}\n />\n\n <Button\n onClick={handleDiscard}\n text={t('banners.live-edit-draft-banner.discard.tooltip')}\n tooltipProps={{content: t('banners.live-edit-draft-banner.discard.tooltip')}}\n loading={isDiscarding}\n />\n </>\n )}\n </Flex>\n }\n data-testid=\"live-edit-type-banner\"\n icon={ErrorOutlineIcon}\n />\n )\n}\n","import {type ObjectSchemaType} from '@sanity/types'\nimport {Heading, Stack, Text} from '@sanity/ui'\nimport {useTranslation} from 'react-i18next'\nimport {css, styled} from 'styled-components'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\n\ninterface DocumentHeaderProps {\n documentId: string\n schemaType: ObjectSchemaType\n title?: string\n}\n\n/**\n * Use CSS container queries to conditionally render headings at different sizes.\n * We hide this entire container (including the document type) if container queries\n * not supported in the current browser.\n *\n * Note that usage of container queries in `styled-components` is only supported in `6.x`.\n * As such, studios that include `\"styled-components\": \"<6\"` as a dependency will only see\n * the largest heading size here, even if their browser supports it!\n */\n\nexport const TitleContainer = styled(Stack)`\n ${({theme}) => {\n return css`\n @supports not (container-type: inline-size) {\n display: none !important;\n }\n\n container-type: inline-size;\n\n [data-heading] {\n font-size: ${theme.sanity.fonts.heading.sizes[4].fontSize}px;\n line-height: ${theme.sanity.fonts.heading.sizes[4].lineHeight}px;\n overflow-wrap: break-word;\n text-wrap: pretty;\n }\n\n @container (max-width: 560px) {\n [data-heading] {\n font-size: ${theme.sanity.fonts.heading.sizes[3].fontSize}px;\n line-height: ${theme.sanity.fonts.heading.sizes[3].lineHeight}px;\n }\n }\n\n @container (max-width: 420px) {\n [data-heading] {\n font-size: ${theme.sanity.fonts.heading.sizes[2].fontSize}px;\n line-height: ${theme.sanity.fonts.heading.sizes[2].lineHeight}px;\n }\n }\n `\n }}\n`\n\n/**\n * Header containing current document title and type.\n * Document type is hidden if the document `_id` matches the current document `_type`.\n * The entire header is hidden if container queries are not supported.\n */\nexport const FormHeader = ({documentId, schemaType, title}: DocumentHeaderProps) => {\n const isSingleton = documentId === schemaType.name\n const {t} = useTranslation(structureLocaleNamespace)\n\n if (schemaType.__experimental_formPreviewTitle === false) {\n return null\n }\n\n return (\n <TitleContainer marginBottom={6} space={4}>\n {!isSingleton && (\n <Text muted size={1}>\n {schemaType.title ?? schemaType.name}\n </Text>\n )}\n\n <Heading as=\"h2\" data-heading muted={!title} data-testid=\"document-panel-document-title\">\n {title ?? t('document-view.form-view.form-title-fallback')}\n </Heading>\n </TitleContainer>\n )\n}\n","import {type ToastParams, useToast} from '@sanity/ui'\nimport {useEffect} from 'react'\n\n// https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value\nconst LONG_ENOUGH_BUT_NOT_TOO_LONG = 1000 * 60 * 60 * 24 * 24\n\n/**\n * Workaround to support conditional toast (e.g. a toast that is visible as long as a condition holds true)\n */\nexport function useConditionalToast(params: ToastParams & {id: string; enabled?: boolean}) {\n const toast = useToast()\n\n // note1: there's a `duration || 0` in Sanity UI's pushToast(), so make it non-falsey\n // note2: cannot use `Infinity` as duration, since it exceeds setTimeout's maximum delay value\n useEffect(() => {\n if (params.enabled) {\n toast.push({...params, duration: LONG_ENOUGH_BUT_NOT_TOO_LONG})\n }\n return () => {\n if (params.enabled) {\n toast.push({\n ...params,\n // Note: @sanity/ui fallbacks to the default duration of 4s in case of falsey values\n duration: 0.01,\n })\n }\n }\n }, [params, toast])\n}\n","/* eslint-disable no-nested-ternary */\nimport {Box, Container, Flex, focusFirstDescendant, Spinner, Text} from '@sanity/ui'\nimport {type FormEvent, forwardRef, useCallback, useEffect, useMemo, useState} from 'react'\nimport {tap} from 'rxjs/operators'\nimport {\n createPatchChannel,\n type DocumentMutationEvent,\n type DocumentRebaseEvent,\n FormBuilder,\n type FormDocumentValue,\n fromMutationPatches,\n type PatchMsg,\n PresenceOverlay,\n useDocumentPresence,\n useDocumentStore,\n useTranslation,\n} from 'sanity'\nimport {useEffectEvent} from 'use-effect-event'\n\nimport {Delay} from '../../../../components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {useDocumentTitle} from '../../useDocumentTitle'\nimport {FormHeader} from './FormHeader'\nimport {useConditionalToast} from './useConditionalToast'\n\ninterface FormViewProps {\n hidden: boolean\n margins: [number, number, number, number]\n}\n\nconst preventDefault = (ev: FormEvent) => ev.preventDefault()\n\nexport const FormView = forwardRef<HTMLDivElement, FormViewProps>(function FormView(props, ref) {\n const {hidden, margins} = props\n\n const {\n collapsedFieldSets,\n collapsedPaths,\n displayed: value,\n editState,\n documentId,\n documentType,\n selectedReleaseId,\n fieldActions,\n onChange,\n validation,\n ready,\n formState,\n onFocus,\n connectionState,\n onBlur,\n onSetCollapsedPath,\n onPathOpen,\n onSetCollapsedFieldSet,\n onSetActiveFieldGroup,\n openPath,\n } = useDocumentPane()\n const documentStore = useDocumentStore()\n const presence = useDocumentPresence(documentId)\n const {title} = useDocumentTitle()\n // The `patchChannel` is an INTERNAL publish/subscribe channel that we use to notify form-builder\n // nodes about both remote and local patches.\n // - Used by the Portable Text input to modify selections.\n // - Used by `withDocument` to reset value.\n const [patchChannel] = useState(() => createPatchChannel())\n\n const isLocked = editState?.transactionSyncLock?.enabled\n const {t} = useTranslation(structureLocaleNamespace)\n\n const conditionalToastParams = useMemo(\n () => ({\n id: `sync-lock`,\n status: 'warning' as const,\n enabled: isLocked,\n title: t('document-view.form-view.sync-lock-toast.title'),\n description: t('document-view.form-view.sync-lock-toast.description'),\n closable: true,\n }),\n [isLocked, t],\n )\n\n useConditionalToast(conditionalToastParams)\n\n useEffect(() => {\n const sub = documentStore.pair\n .documentEvents(documentId, documentType, selectedReleaseId)\n .pipe(\n tap((event) => {\n if (event.type === 'mutation') {\n patchChannel.publish(prepareMutationEvent(event))\n }\n\n if (event.type === 'rebase') {\n patchChannel.publish(prepareRebaseEvent(event))\n }\n }),\n )\n .subscribe()\n\n return () => {\n sub.unsubscribe()\n }\n }, [documentId, documentStore, documentType, patchChannel, selectedReleaseId])\n\n const hasRev = Boolean(value?._rev)\n const handleInitialValue = useEffectEvent(() => {\n // this is a workaround for an issue that caused the document pushed to withDocument to get\n // stuck at the first initial value.\n // This effect is triggered only when the document goes from not having a revision, to getting one\n // so it will kick in as soon as the document is received from the backend\n patchChannel.publish({\n type: 'mutation',\n patches: [],\n snapshot: value,\n })\n })\n useEffect(() => {\n if (hasRev) {\n handleInitialValue()\n }\n // React to changes in hasRev only\n }, [handleInitialValue, hasRev])\n\n const [formRef, setFormRef] = useState<null | HTMLDivElement>(null)\n\n // We only want to run it on first mount\n const [focusedFirstDescendant, setFocusedFirstDescendant] = useState(false)\n useEffect(() => {\n // Only focus on the first descendant if there is not already a focus path\n // This is to avoid stealing focus from intent links\n if (!focusedFirstDescendant && ready && !formState?.focusPath.length && formRef) {\n setFocusedFirstDescendant(true)\n focusFirstDescendant(formRef)\n }\n }, [focusedFirstDescendant, formRef, formState?.focusPath.length, ready])\n\n const setRef = useCallback(\n (node: HTMLDivElement | null) => {\n setFormRef(node)\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n },\n [ref],\n )\n\n // const after = useMemo(\n // () =>\n // Array.isArray(afterEditorComponents) &&\n // afterEditorComponents.map(\n // (AfterEditorComponent: ComponentType<{documentId: string}>, idx: number) => (\n // <AfterEditorComponent key={String(idx)} documentId={documentId} />\n // )\n // ),\n // [documentId]\n // )\n\n return (\n <Container\n hidden={hidden}\n paddingX={4}\n paddingTop={5}\n paddingBottom={9}\n sizing=\"border\"\n width={1}\n >\n <PresenceOverlay margins={margins}>\n <Box as=\"form\" onSubmit={preventDefault} ref={setRef}>\n {connectionState === 'connecting' && !editState?.draft && !editState?.published ? (\n <Delay ms={300}>\n {/* TODO: replace with loading block */}\n <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n <Spinner muted />\n <Box marginTop={3}>\n <Text align=\"center\" muted size={1}>\n {t('document-view.form-view.loading')}\n </Text>\n </Box>\n </Flex>\n </Delay>\n ) : formState === null || hidden ? (\n <Box padding={2}>\n <Text>{t('document-view.form-view.form-hidden')}</Text>\n </Box>\n ) : (\n <>\n <FormHeader documentId={documentId} schemaType={formState.schemaType} title={title} />\n <FormBuilder\n __internal_fieldActions={fieldActions}\n __internal_patchChannel={patchChannel}\n changed={formState.changed}\n collapsedFieldSets={collapsedFieldSets}\n collapsedPaths={collapsedPaths}\n focused={formState.focused}\n focusPath={formState.focusPath}\n groups={formState.groups}\n id=\"root\"\n members={formState.members}\n onChange={onChange}\n onFieldGroupSelect={onSetActiveFieldGroup}\n onPathBlur={onBlur}\n onPathFocus={onFocus}\n onPathOpen={onPathOpen}\n onSetFieldSetCollapsed={onSetCollapsedFieldSet}\n onSetPathCollapsed={onSetCollapsedPath}\n openPath={openPath}\n presence={presence}\n readOnly={\n connectionState === 'reconnecting' || formState.readOnly || !editState?.ready\n }\n schemaType={formState.schemaType}\n validation={validation}\n value={\n // note: the form state doesn't have a typed concept of a \"document\" value\n // but these should be compatible\n formState.value as FormDocumentValue\n }\n version={selectedReleaseId}\n />\n </>\n )}\n </Box>\n </PresenceOverlay>\n </Container>\n )\n})\n\nfunction prepareMutationEvent(event: DocumentMutationEvent): PatchMsg {\n const patches = event.mutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'mutation',\n snapshot: event.document,\n patches: fromMutationPatches(event.origin, patches),\n }\n}\n\nfunction prepareRebaseEvent(event: DocumentRebaseEvent): PatchMsg {\n const remotePatches = event.remoteMutations.map((mut) => mut.patch).filter(Boolean)\n const localPatches = event.localMutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'rebase',\n snapshot: event.document,\n patches: fromMutationPatches('remote', remotePatches).concat(\n fromMutationPatches('local', localPatches),\n ),\n }\n}\n","import {BoundaryElementProvider, Box, Flex, PortalProvider, usePortal} from '@sanity/ui'\nimport {useEffect, useMemo, useRef, useState} from 'react'\nimport {\n isReleaseScheduledOrScheduling,\n type ReleaseDocument,\n ScrollContainer,\n usePerspective,\n VirtualizerScrollInstanceProvider,\n} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {PaneContent, usePane, usePaneLayout, usePaneRouter} from '../../../components'\nimport {isLiveEditEnabled} from '../../../components/paneItem/helpers'\nimport {useStructureTool} from '../../../useStructureTool'\nimport {DocumentInspectorPanel} from '../documentInspector'\nimport {InspectDialog} from '../inspectDialog'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {\n DeletedDocumentBanners,\n DeprecatedDocumentTypeBanner,\n PermissionCheckBanner,\n ReferenceChangedBanner,\n} from './banners'\nimport {AddToReleaseBanner} from './banners/AddToReleaseBanner'\nimport {ArchivedReleaseDocumentBanner} from './banners/ArchivedReleaseDocumentBanner'\nimport {DraftLiveEditBanner} from './banners/DraftLiveEditBanner'\nimport {FormView} from './documentViews'\n\ninterface DocumentPanelProps {\n footerHeight: number | null\n headerHeight: number | null\n isInspectOpen: boolean\n rootElement: HTMLDivElement | null\n setDocumentPanelPortalElement: (el: HTMLElement | null) => void\n}\n\nconst DocumentBox = styled(Box)({\n position: 'relative',\n})\n\nconst Scroller = styled(ScrollContainer)<{$disabled: boolean}>(({$disabled}) => {\n if ($disabled) {\n return {height: '100%'}\n }\n\n return css`\n height: 100%;\n overflow: auto;\n position: relative;\n scroll-behavior: smooth;\n outline: none;\n `\n})\n\nexport const DocumentPanel = function DocumentPanel(props: DocumentPanelProps) {\n const {footerHeight, headerHeight, isInspectOpen, rootElement, setDocumentPanelPortalElement} =\n props\n const {\n activeViewId,\n displayed,\n documentId,\n editState,\n inspector,\n value,\n views,\n ready,\n schemaType,\n permissions,\n isPermissionsLoading,\n existsInBundle,\n } = useDocumentPane()\n const {params} = usePaneRouter()\n const {collapsed: layoutCollapsed} = usePaneLayout()\n const {collapsed} = usePane()\n const parentPortal = usePortal()\n const {features} = useStructureTool()\n const [_portalElement, setPortalElement] = useState<HTMLDivElement | null>(null)\n const [documentScrollElement, setDocumentScrollElement] = useState<HTMLDivElement | null>(null)\n const formContainerElement = useRef<HTMLDivElement | null>(null)\n\n const requiredPermission = value._createdAt ? 'update' : 'create'\n\n const activeView = useMemo(\n () => views.find((view) => view.id === activeViewId) || views[0] || {type: 'form'},\n [activeViewId, views],\n )\n\n // Use a local portal container when split panes is supported\n const portalElement: HTMLElement | null = features.splitPanes\n ? _portalElement || parentPortal.element\n : parentPortal.element\n\n // Calculate the height of the header\n const margins: [number, number, number, number] = useMemo(() => {\n if (layoutCollapsed) {\n return [headerHeight || 0, 0, footerHeight ? footerHeight + 2 : 2, 0]\n }\n\n return [0, 0, 2, 0]\n }, [layoutCollapsed, footerHeight, headerHeight])\n\n const formViewHidden = activeView.type !== 'form'\n\n const activeViewNode = useMemo(() => {\n if (activeView.type === 'component' && activeView.component) {\n const ActiveViewComponent = activeView.component\n return (\n <ActiveViewComponent\n document={{\n draft: editState?.draft || null,\n displayed: displayed || value,\n historical: displayed,\n published: editState?.published || null,\n }}\n documentId={documentId}\n options={activeView.options}\n schemaType={schemaType}\n />\n )\n }\n return false\n }, [activeView, displayed, documentId, editState?.draft, editState?.published, schemaType, value])\n\n const isLiveEdit = isLiveEditEnabled(schemaType)\n\n // Scroll to top as `documentId` changes\n useEffect(() => {\n if (!documentScrollElement?.scrollTo) return\n documentScrollElement.scrollTo(0, 0)\n }, [documentId, documentScrollElement])\n\n // Pass portal element to `DocumentPane`\n useEffect(() => {\n if (portalElement) {\n setDocumentPanelPortalElement(portalElement)\n }\n }, [portalElement, setDocumentPanelPortalElement])\n\n const inspectDialog = useMemo(() => {\n return isInspectOpen ? <InspectDialog value={displayed || value} /> : null\n }, [isInspectOpen, displayed, value])\n\n const showInspector = Boolean(!collapsed && inspector)\n const {selectedPerspective, selectedReleaseId} = usePerspective()\n\n const isScheduledRelease =\n typeof selectedPerspective === 'object' && 'state' in selectedPerspective\n ? isReleaseScheduledOrScheduling(selectedPerspective)\n : false\n\n const banners = useMemo(() => {\n if (params?.historyVersion) {\n return <ArchivedReleaseDocumentBanner />\n }\n if ((!existsInBundle && selectedReleaseId) || isScheduledRelease) {\n return (\n <AddToReleaseBanner\n documentId={value._id}\n currentRelease={selectedPerspective as ReleaseDocument}\n value={displayed || undefined}\n />\n )\n }\n\n if (activeView.type === 'form' && isLiveEdit && ready) {\n return (\n <DraftLiveEditBanner\n displayed={displayed}\n documentId={documentId}\n schemaType={schemaType}\n />\n )\n }\n\n if (activeView.type !== 'form' || isPermissionsLoading || !ready) return null\n\n return (\n <>\n <PermissionCheckBanner\n granted={Boolean(permissions?.granted)}\n requiredPermission={requiredPermission}\n />\n <ReferenceChangedBanner />\n <DeprecatedDocumentTypeBanner />\n <DeletedDocumentBanners />\n </>\n )\n }, [\n activeView.type,\n selectedPerspective,\n displayed,\n documentId,\n existsInBundle,\n isLiveEdit,\n isPermissionsLoading,\n isScheduledRelease,\n permissions?.granted,\n ready,\n requiredPermission,\n schemaType,\n selectedReleaseId,\n value._id,\n params,\n ])\n\n return (\n <PaneContent>\n {banners}\n <Flex height=\"fill\">\n {(features.resizablePanes || !showInspector) && (\n <DocumentBox flex={2} overflow=\"hidden\">\n <PortalProvider\n element={portalElement}\n __unstable_elements={{documentScrollElement: documentScrollElement}}\n >\n <BoundaryElementProvider element={documentScrollElement}>\n <VirtualizerScrollInstanceProvider\n scrollElement={documentScrollElement}\n containerElement={formContainerElement}\n >\n <Scroller\n $disabled={layoutCollapsed || false}\n data-testid=\"document-panel-scroller\"\n ref={setDocumentScrollElement}\n >\n <FormView\n hidden={formViewHidden}\n margins={margins}\n ref={formContainerElement}\n />\n {activeViewNode}\n </Scroller>\n\n {inspectDialog}\n\n <div data-testid=\"document-panel-portal\" ref={setPortalElement} />\n </VirtualizerScrollInstanceProvider>\n </BoundaryElementProvider>\n </PortalProvider>\n </DocumentBox>\n )}\n\n {showInspector && (\n <BoundaryElementProvider element={rootElement}>\n <DocumentInspectorPanel\n documentId={documentId}\n documentType={schemaType.name}\n flex={1}\n />\n </BoundaryElementProvider>\n )}\n </Flex>\n </PaneContent>\n )\n}\nDocumentPanel.displayName = 'DocumentPanel'\n","import {type Placement} from '@sanity/ui'\n\nimport {type DialogProps} from '../../../../../ui-components'\n\nexport const POPOVER_FALLBACK_PLACEMENTS: Placement[] = ['left', 'bottom']\n\nexport const DIALOG_WIDTH_TO_UI_WIDTH: {[key: string]: DialogProps['width']} = {\n small: 0,\n medium: 1,\n large: 2,\n full: 'auto',\n}\n","import {\n Box,\n Button, // eslint-disable-line no-restricted-imports\n Flex,\n Grid,\n Popover, // eslint-disable-line no-restricted-imports\n Text,\n useClickOutsideEvent,\n useGlobalKeyDown,\n useLayer,\n} from '@sanity/ui'\nimport {useCallback, useRef} from 'react'\nimport {type DocumentActionConfirmDialogProps, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {POPOVER_FALLBACK_PLACEMENTS} from './constants'\n\nexport function ConfirmDialog(props: {\n dialog: DocumentActionConfirmDialogProps\n referenceElement: HTMLElement | null\n}) {\n const {dialog, referenceElement} = props\n\n return (\n <Popover\n content={<ConfirmDialogContent dialog={dialog} />}\n fallbackPlacements={POPOVER_FALLBACK_PLACEMENTS}\n open\n placement=\"top\"\n portal\n preventOverflow\n referenceElement={referenceElement}\n />\n )\n}\n\n/**\n * Dialog rendered by custom document actions of dialog type `confirm`.\n * As these are user configurable with public facing APIs, internal studio ui-components are not used.\n */\nfunction ConfirmDialogContent(props: {dialog: DocumentActionConfirmDialogProps}) {\n const {dialog} = props\n const {\n cancelButtonIcon,\n cancelButtonText,\n confirmButtonIcon,\n confirmButtonText,\n // color,\n message,\n onCancel,\n onConfirm,\n tone,\n } = dialog\n const {t} = useTranslation(structureLocaleNamespace)\n const {isTopLayer} = useLayer()\n const ref = useRef<HTMLDivElement | null>(null)\n\n const handleGlobalKeyDown = useCallback(\n (event: any) => {\n if (event.key === 'Escape' && isTopLayer) onCancel()\n },\n [isTopLayer, onCancel],\n )\n\n useGlobalKeyDown(handleGlobalKeyDown)\n useClickOutsideEvent(isTopLayer && onCancel, () => [ref.current])\n\n return (\n <Flex direction=\"column\" ref={ref} style={{minWidth: 320 - 16, maxWidth: 400}}>\n <Box flex={1} overflow=\"auto\" padding={4}>\n <Text>{message}</Text>\n </Box>\n <Box paddingX={4} paddingY={3} style={{borderTop: '1px solid var(--card-border-color)'}}>\n <Grid columns={2} gap={2}>\n <Button\n data-testid=\"confirm-dialog-cancel-button\"\n icon={cancelButtonIcon}\n onClick={onCancel}\n mode=\"ghost\"\n text={cancelButtonText || t('confirm-dialog.cancel-button.fallback-text')}\n />\n <Button\n data-testid=\"confirm-dialog-confirm-button\"\n icon={confirmButtonIcon}\n onClick={onConfirm}\n text={confirmButtonText || t('confirm-dialog.confirm-button.fallback-text')}\n tone={tone}\n />\n </Grid>\n </Box>\n </Flex>\n )\n}\n","import {\n Box,\n Dialog, // eslint-disable-line no-restricted-imports\n} from '@sanity/ui'\nimport {useId} from 'react'\nimport {type DocumentActionModalDialogProps, LegacyLayerProvider} from 'sanity'\n\nimport {DIALOG_WIDTH_TO_UI_WIDTH} from './constants'\n\n/**\n * Dialog rendered by custom document actions of dialog type `dialog`.\n * As these are user configurable with public facing APIs, internal studio ui-components are not used.\n */\nexport function ModalDialog(props: {dialog: DocumentActionModalDialogProps}) {\n const {dialog} = props\n const dialogId = useId()\n\n const footer = dialog.footer && (\n <Box paddingX={4} paddingY={3}>\n {dialog.footer}\n </Box>\n )\n\n return (\n <LegacyLayerProvider zOffset=\"fullscreen\">\n <Dialog\n animate\n __unstable_hideCloseButton={dialog.showCloseButton === false}\n footer={footer}\n header={dialog.header}\n id={dialogId}\n // eslint-disable-next-line react/jsx-handler-names\n onClose={dialog.onClose}\n // eslint-disable-next-line react/jsx-handler-names\n onClickOutside={dialog.onClose}\n width={dialog.width === undefined ? 1 : DIALOG_WIDTH_TO_UI_WIDTH[dialog.width]}\n >\n <Box padding={4}>{dialog.content}</Box>\n </Dialog>\n </LegacyLayerProvider>\n )\n}\n","import {\n Popover, // eslint-disable-line no-restricted-imports\n useClickOutsideEvent,\n useGlobalKeyDown,\n useLayer,\n} from '@sanity/ui'\nimport {useCallback, useRef} from 'react'\nimport {type DocumentActionPopoverDialogProps} from 'sanity'\n\nimport {POPOVER_FALLBACK_PLACEMENTS} from './constants'\n\nexport function PopoverDialog(props: {\n dialog: DocumentActionPopoverDialogProps\n referenceElement: HTMLElement | null\n}) {\n const {dialog, referenceElement} = props\n\n return (\n <Popover\n content={<PopoverDialogContent dialog={dialog} />}\n fallbackPlacements={POPOVER_FALLBACK_PLACEMENTS}\n open\n placement=\"top\"\n portal\n preventOverflow\n referenceElement={referenceElement}\n />\n )\n}\n\n/**\n * Popover rendered by custom document actions of dialog type `popover`.\n * As these are user configurable with public facing APIs, internal studio ui-components are not used.\n */\nfunction PopoverDialogContent(props: {dialog: DocumentActionPopoverDialogProps}) {\n const {dialog} = props\n const {content, onClose} = dialog\n const {isTopLayer} = useLayer()\n const ref = useRef<HTMLDivElement | null>(null)\n\n const handleGlobalKeyDown = useCallback(\n (event: any) => {\n if (event.key === 'Escape' && isTopLayer) onClose()\n },\n [isTopLayer, onClose],\n )\n\n useGlobalKeyDown(handleGlobalKeyDown)\n useClickOutsideEvent(isTopLayer && onClose, () => [ref.current])\n\n return <div ref={ref}>{content}</div>\n}\n","import {PortalProvider, Text, usePortal} from '@sanity/ui'\nimport {type ReactNode, useId} from 'react'\nimport {type DocumentActionDialogProps} from 'sanity'\n\nimport {Dialog} from '../../../../ui-components'\nimport {DOCUMENT_PANEL_PORTAL_ELEMENT} from '../../../constants'\nimport {ConfirmDialog} from './dialogs/ConfirmDialog'\nimport {ModalDialog} from './dialogs/ModalDialog'\nimport {PopoverDialog} from './dialogs/PopoverDialog'\n\nexport interface ActionStateDialogProps {\n dialog: DocumentActionDialogProps\n referenceElement?: HTMLElement | null\n}\n\n// A portal provider that uses the document panel portal element if it exists\n// as the portal element so that dialogs are scoped to the document panel\nfunction DocumentActionPortalProvider(props: {children: ReactNode}) {\n const {children} = props\n const {element, elements} = usePortal()\n const portalElement = elements?.[DOCUMENT_PANEL_PORTAL_ELEMENT] || element\n\n return <PortalProvider element={portalElement}>{children}</PortalProvider>\n}\n\nexport function ActionStateDialog(props: ActionStateDialogProps) {\n const {dialog, referenceElement = null} = props\n const modalId = useId()\n\n if (dialog.type === 'confirm') {\n return <ConfirmDialog dialog={dialog} referenceElement={referenceElement} />\n }\n\n if (dialog.type === 'popover') {\n return <PopoverDialog dialog={dialog} referenceElement={referenceElement} />\n }\n\n if (dialog.type === 'dialog' || !dialog.type) {\n return (\n <DocumentActionPortalProvider>\n <ModalDialog dialog={dialog} />\n </DocumentActionPortalProvider>\n )\n }\n\n if (dialog.type === 'custom') {\n return <DocumentActionPortalProvider>{dialog?.component}</DocumentActionPortalProvider>\n }\n\n // @todo: add validation?\n const unknownModal: any = dialog\n\n // eslint-disable-next-line no-console\n console.warn(`Unsupported modal type ${unknownModal.type}`)\n\n return (\n <Dialog\n id={modalId}\n // eslint-disable-next-line react/jsx-handler-names\n onClose={unknownModal.onClose}\n // eslint-disable-next-line react/jsx-handler-names\n onClickOutside={unknownModal.onClose}\n width={1}\n >\n {unknownModal.content || (\n // eslint-disable-next-line i18next/no-literal-string\n <Text size={1}>\n Unexpected modal type (<code>{unknownModal.type}</code>)\n </Text>\n )}\n </Dialog>\n )\n}\n","import {Menu} from '@sanity/ui'\nimport {memo, type ReactNode, useCallback, useId, useMemo, useState} from 'react'\nimport {\n ContextMenuButton,\n type DocumentActionDescription,\n LegacyLayerProvider,\n useTranslation,\n} from 'sanity'\n\nimport {MenuButton, MenuItem, type PopoverProps} from '../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../i18n'\nimport {ActionStateDialog} from './ActionStateDialog'\n\nexport interface ActionMenuButtonProps {\n actionStates: DocumentActionDescription[]\n disabled: boolean\n}\n\n/**\n * @internal\n */\nexport const ActionDialogWrapper = memo(function ActionDialogWrapper({\n actionStates,\n children,\n referenceElement,\n}: {\n actionStates: DocumentActionDescription[]\n children: ({handleAction}: {handleAction: (idx: number) => void}) => ReactNode\n referenceElement?: HTMLElement | null\n}) {\n const [actionIndex, setActionIndex] = useState(-1)\n const currentAction = useMemo(() => actionStates[actionIndex], [actionIndex, actionStates])\n\n const handleAction = useCallback((idx: number) => {\n setActionIndex(idx)\n }, [])\n\n const result = useMemo(() => children({handleAction}), [children, handleAction])\n\n return (\n <>\n {currentAction && currentAction.dialog && (\n <LegacyLayerProvider zOffset=\"paneFooter\">\n <ActionStateDialog dialog={currentAction.dialog} referenceElement={referenceElement} />\n </LegacyLayerProvider>\n )}\n {result}\n </>\n )\n})\n\n/**\n * @internal\n */\nexport function ActionMenuButton(props: ActionMenuButtonProps) {\n const {actionStates, disabled} = props\n const idPrefix = useId()\n\n const [referenceElement, setReferenceElement] = useState<HTMLButtonElement | null>(null)\n\n const popoverProps: PopoverProps = useMemo(\n () => ({\n placement: 'top-end',\n portal: true,\n preventOverflow: true,\n }),\n [],\n )\n\n const {t} = useTranslation(structureLocaleNamespace)\n const renderActionDialog = useCallback<\n ({handleAction}: {handleAction: (idx: number) => void}) => ReactNode\n >(\n ({handleAction}) => (\n <MenuButton\n id={`${idPrefix}-action-menu`}\n button={\n <ContextMenuButton\n aria-label={t('buttons.action-menu-button.aria-label')}\n disabled={disabled}\n data-testid=\"action-menu-button\"\n size=\"large\"\n tooltipProps={{content: t('buttons.action-menu-button.tooltip')}}\n />\n }\n menu={\n <Menu padding={1}>\n {actionStates.map((actionState, idx) => (\n <ActionMenuListItem\n actionState={actionState}\n disabled={disabled}\n index={idx}\n // eslint-disable-next-line react/no-array-index-key\n key={idx}\n onAction={handleAction}\n />\n ))}\n </Menu>\n }\n popover={popoverProps}\n ref={setReferenceElement}\n />\n ),\n [actionStates, disabled, idPrefix, popoverProps, t],\n )\n\n return (\n <ActionDialogWrapper actionStates={actionStates} referenceElement={referenceElement}>\n {renderActionDialog}\n </ActionDialogWrapper>\n )\n}\n\ninterface ActionMenuListItemProps {\n actionState: DocumentActionDescription\n disabled: boolean\n index: number\n onAction: (idx: number) => void\n}\n\nexport function ActionMenuListItem(props: ActionMenuListItemProps) {\n const {actionState, disabled, index, onAction} = props\n const {onHandle} = actionState\n\n const handleClick = useCallback(() => {\n onAction(index)\n if (onHandle) onHandle()\n }, [index, onAction, onHandle])\n\n const hotkeys = useMemo(() => {\n return actionState.shortcut\n ? String(actionState.shortcut)\n .split('+')\n .map((s) => s.slice(0, 1).toUpperCase() + s.slice(1))\n : undefined\n }, [actionState.shortcut])\n\n return (\n <MenuItem\n data-testid={`action-${actionState.label.replace(' ', '')}`}\n disabled={disabled || Boolean(actionState.disabled)}\n hotkeys={hotkeys}\n icon={actionState.icon}\n onClick={handleClick}\n text={actionState.label}\n tone={actionState.tone}\n {...(actionState.disabled && {tooltipProps: {content: actionState.title}})}\n />\n )\n}\n","/* eslint-disable import/no-extraneous-dependencies */\n\nimport {TrashIcon} from '@sanity/icons'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n type DocumentActionComponent,\n InsufficientPermissionsMessage,\n useCurrentUser,\n useDocumentOperation,\n useDocumentPairPermissions,\n useTranslation,\n} from 'sanity'\n\nimport {ConfirmDeleteDialog} from '../components'\nimport {structureLocaleNamespace} from '../i18n'\nimport {useDocumentPane} from '../panes/document/useDocumentPane'\n\nconst DISABLED_REASON_TITLE_KEY = {\n NOTHING_TO_DELETE: 'action.delete.disabled.nothing-to-delete',\n NOT_READY: 'action.delete.disabled.not-ready',\n}\n\n/** @internal */\nexport const DeleteAction: DocumentActionComponent = ({id, type, draft, onComplete, release}) => {\n const {setIsDeleting: paneSetIsDeleting} = useDocumentPane()\n const {delete: deleteOp} = useDocumentOperation(id, type, release)\n const [isDeleting, setIsDeleting] = useState(false)\n const [isConfirmDialogOpen, setConfirmDialogOpen] = useState(false)\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n const handleCancel = useCallback(() => {\n setConfirmDialogOpen(false)\n onComplete()\n }, [onComplete])\n\n const handleConfirm = useCallback(() => {\n setIsDeleting(true)\n setConfirmDialogOpen(false)\n paneSetIsDeleting(true)\n deleteOp.execute()\n onComplete()\n }, [deleteOp, onComplete, paneSetIsDeleting])\n\n const handle = useCallback(() => {\n setConfirmDialogOpen(true)\n }, [])\n\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id,\n type,\n version: release,\n permission: 'delete',\n })\n\n const currentUser = useCurrentUser()\n\n return useMemo(() => {\n if (!isPermissionsLoading && !permissions?.granted) {\n return {\n tone: 'critical',\n icon: TrashIcon,\n disabled: true,\n label: t('action.delete.label'),\n title: (\n <InsufficientPermissionsMessage context=\"delete-document\" currentUser={currentUser} />\n ),\n }\n }\n\n return {\n tone: 'critical',\n icon: TrashIcon,\n disabled: isDeleting || Boolean(deleteOp.disabled) || isPermissionsLoading,\n title: (deleteOp.disabled && t(DISABLED_REASON_TITLE_KEY[deleteOp.disabled])) || '',\n label: isDeleting ? t('action.delete.running.label') : t('action.delete.label'),\n shortcut: 'Ctrl+Alt+D',\n onHandle: handle,\n dialog: isConfirmDialogOpen && {\n type: 'custom',\n component: (\n <ConfirmDeleteDialog\n // eslint-disable-next-line @sanity/i18n/no-attribute-string-literals\n action=\"delete\"\n id={draft?._id || id}\n type={type}\n onCancel={handleCancel}\n onConfirm={handleConfirm}\n />\n ),\n },\n }\n }, [\n currentUser,\n deleteOp.disabled,\n draft?._id,\n handle,\n handleCancel,\n handleConfirm,\n id,\n isConfirmDialogOpen,\n isDeleting,\n isPermissionsLoading,\n permissions?.granted,\n t,\n type,\n ])\n}\n\nDeleteAction.action = 'delete'\nDeleteAction.displayName = 'DeleteAction'\n","/* eslint-disable import/no-extraneous-dependencies */\n\nimport {ResetIcon} from '@sanity/icons'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n type DocumentActionComponent,\n type DocumentActionDialogProps,\n InsufficientPermissionsMessage,\n useCurrentUser,\n useDocumentOperation,\n useDocumentPairPermissions,\n useTranslation,\n} from 'sanity'\n\nimport {structureLocaleNamespace} from '../i18n'\n\nconst DISABLED_REASON_KEY = {\n NO_CHANGES: 'action.discard-changes.disabled.no-change',\n NOT_PUBLISHED: 'action.discard-changes.disabled.not-published',\n NOT_READY: 'action.discard-changes.disabled.not-ready',\n} as const\n\n/** @internal */\nexport const DiscardChangesAction: DocumentActionComponent = ({\n id,\n type,\n published,\n liveEdit,\n onComplete,\n release,\n}) => {\n const {discardChanges} = useDocumentOperation(id, type, release)\n const [isConfirmDialogOpen, setConfirmDialogOpen] = useState(false)\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id,\n type,\n version: release,\n permission: 'discardDraft',\n })\n const currentUser = useCurrentUser()\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n const handleConfirm = useCallback(() => {\n discardChanges.execute()\n onComplete()\n }, [discardChanges, onComplete])\n\n const handle = useCallback(() => {\n setConfirmDialogOpen(true)\n }, [])\n\n const dialog: DocumentActionDialogProps | false = useMemo(\n () =>\n isConfirmDialogOpen && {\n type: 'confirm',\n tone: 'critical',\n onCancel: onComplete,\n onConfirm: handleConfirm,\n message: t('action.discard-changes.confirm-dialog.confirm-discard-changes'),\n },\n [handleConfirm, isConfirmDialogOpen, onComplete, t],\n )\n\n return useMemo(() => {\n if (!published || liveEdit) {\n return null\n }\n\n if (!isPermissionsLoading && !permissions?.granted) {\n return {\n tone: 'critical',\n icon: ResetIcon,\n disabled: true,\n label: t('action.discard-changes.label'),\n title: (\n <InsufficientPermissionsMessage context=\"discard-changes\" currentUser={currentUser} />\n ),\n }\n }\n\n return {\n tone: 'critical',\n icon: ResetIcon,\n disabled: Boolean(discardChanges.disabled) || isPermissionsLoading,\n title: (discardChanges.disabled && DISABLED_REASON_KEY[discardChanges.disabled]) || '',\n label: t('action.discard-changes.label'),\n onHandle: handle,\n dialog,\n }\n }, [\n currentUser,\n dialog,\n discardChanges.disabled,\n handle,\n isPermissionsLoading,\n liveEdit,\n permissions?.granted,\n published,\n t,\n ])\n}\n\nDiscardChangesAction.action = 'discardChanges'\nDiscardChangesAction.displayName = 'DiscardChangesAction'\n","import {CopyIcon} from '@sanity/icons'\nimport {uuid} from '@sanity/uuid'\nimport {useCallback, useMemo, useState} from 'react'\nimport {filter, firstValueFrom} from 'rxjs'\nimport {\n type DocumentActionComponent,\n InsufficientPermissionsMessage,\n useCurrentUser,\n useDocumentOperation,\n useDocumentPairPermissions,\n useDocumentStore,\n useTranslation,\n} from 'sanity'\nimport {useRouter} from 'sanity/router'\n\nimport {structureLocaleNamespace} from '../i18n'\n\nconst DISABLED_REASON_KEY = {\n NOTHING_TO_DUPLICATE: 'action.duplicate.disabled.nothing-to-duplicate',\n NOT_READY: 'action.duplicate.disabled.not-ready',\n}\n\n/** @internal */\nexport const DuplicateAction: DocumentActionComponent = ({id, type, onComplete, release}) => {\n const documentStore = useDocumentStore()\n const {duplicate} = useDocumentOperation(id, type, release)\n const {navigateIntent} = useRouter()\n const [isDuplicating, setDuplicating] = useState(false)\n\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id,\n type,\n version: release,\n permission: 'duplicate',\n })\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n const currentUser = useCurrentUser()\n\n const handle = useCallback(async () => {\n const dupeId = uuid()\n\n setDuplicating(true)\n\n // set up the listener before executing\n const duplicateSuccess = firstValueFrom(\n documentStore.pair\n .operationEvents(id, type)\n .pipe(filter((e) => e.op === 'duplicate' && e.type === 'success')),\n )\n duplicate.execute(dupeId)\n\n // only navigate to the duplicated document when the operation is successful\n await duplicateSuccess\n navigateIntent('edit', {id: dupeId, type})\n\n onComplete()\n }, [documentStore.pair, duplicate, id, navigateIntent, onComplete, type])\n\n return useMemo(() => {\n if (!isPermissionsLoading && !permissions?.granted) {\n return {\n icon: CopyIcon,\n disabled: true,\n label: t('action.duplicate.label'),\n title: (\n <InsufficientPermissionsMessage context=\"duplicate-document\" currentUser={currentUser} />\n ),\n }\n }\n\n return {\n icon: CopyIcon,\n disabled: isDuplicating || Boolean(duplicate.disabled) || isPermissionsLoading,\n label: isDuplicating ? t('action.duplicate.running.label') : t('action.duplicate.label'),\n title: duplicate.disabled ? t(DISABLED_REASON_KEY[duplicate.disabled]) : '',\n onHandle: handle,\n }\n }, [\n currentUser,\n duplicate.disabled,\n handle,\n isDuplicating,\n isPermissionsLoading,\n permissions?.granted,\n t,\n ])\n}\n\nDuplicateAction.action = 'duplicate'\nDuplicateAction.displayName = 'DuplicateAction'\n","import {RevertIcon} from '@sanity/icons'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {\n type DocumentActionComponent,\n type DocumentActionDialogProps,\n useDocumentOperation,\n useDocumentOperationEvent,\n useTranslation,\n} from 'sanity'\nimport {useRouter} from 'sanity/router'\n\nimport {structureLocaleNamespace} from '../i18n'\n\n/** @internal */\nexport const HistoryRestoreAction: DocumentActionComponent = ({\n id,\n type,\n revision,\n onComplete,\n release,\n}) => {\n const {restore} = useDocumentOperation(id, type, release)\n const event = useDocumentOperationEvent(id, type)\n const {navigateIntent} = useRouter()\n const prevEvent = useRef(event)\n const [isConfirmDialogOpen, setConfirmDialogOpen] = useState(false)\n const {t} = useTranslation(structureLocaleNamespace)\n\n const handleConfirm = useCallback(() => {\n restore.execute(revision!)\n onComplete()\n }, [restore, revision, onComplete])\n\n /**\n * If the restore operation is successful, navigate to the document edit view\n */\n useEffect(() => {\n if (!event || event === prevEvent.current) return\n\n if (event.type === 'success' && event.op === 'restore') {\n navigateIntent('edit', {id, type})\n }\n\n prevEvent.current = event\n }, [event, id, navigateIntent, type])\n\n const handle = useCallback(() => {\n setConfirmDialogOpen(true)\n }, [])\n\n const dialog: DocumentActionDialogProps | null = useMemo(() => {\n if (isConfirmDialogOpen) {\n return {\n type: 'confirm',\n tone: 'critical',\n onCancel: onComplete,\n onConfirm: handleConfirm,\n message: t('action.restore.confirm.message'),\n }\n }\n\n return null\n }, [handleConfirm, isConfirmDialogOpen, onComplete, t])\n\n const isRevisionInitial = revision === '@initial'\n const isRevisionLatest = revision === undefined // undefined means latest revision\n\n return useMemo(() => {\n if (isRevisionLatest) {\n return null\n }\n\n return {\n label: t('action.restore.label'),\n tone: 'caution',\n onHandle: handle,\n title: t(\n isRevisionInitial\n ? 'action.restore.disabled.cannot-restore-initial'\n : 'action.restore.tooltip',\n ),\n icon: RevertIcon,\n dialog,\n disabled: isRevisionInitial,\n }\n }, [dialog, handle, isRevisionInitial, isRevisionLatest, t])\n}\n\nHistoryRestoreAction.action = 'restore'\nHistoryRestoreAction.displayName = 'HistoryRestoreAction'\n","import {defineEvent} from '@sanity/telemetry'\n\ninterface DocumentPublishedInfo {\n /**\n * The document was created and published straight away\n */\n publishedImmediately: boolean\n\n /**\n * The document had a previously published version when it was published\n */\n previouslyPublished: boolean\n}\nexport const DocumentPublished = defineEvent<DocumentPublishedInfo>({\n name: 'Document Published',\n version: 1,\n description: 'User clicked the \"Publish\" button in the document pane',\n})\n","import {PublishIcon} from '@sanity/icons'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {isValidationErrorMarker} from '@sanity/types'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n type DocumentActionComponent,\n InsufficientPermissionsMessage,\n type TFunction,\n useCurrentUser,\n useDocumentOperation,\n useDocumentPairPermissions,\n useEditState,\n useRelativeTime,\n useSyncState,\n useTranslation,\n useValidationStatus,\n} from 'sanity'\n\nimport {structureLocaleNamespace, type StructureLocaleResourceKeys} from '../i18n'\nimport {useDocumentPane} from '../panes/document/useDocumentPane'\nimport {DocumentPublished} from './__telemetry__/documentActions.telemetry'\n\nconst DISABLED_REASON_TITLE_KEY: Record<string, StructureLocaleResourceKeys> = {\n LIVE_EDIT_ENABLED: 'action.publish.live-edit.publish-disabled',\n ALREADY_PUBLISHED: 'action.publish.already-published.no-time-ago.tooltip',\n NO_CHANGES: 'action.publish.no-changes.tooltip',\n NOT_READY: 'action.publish.disabled.not-ready',\n} as const\n\nfunction getDisabledReason(\n reason: keyof typeof DISABLED_REASON_TITLE_KEY,\n publishedAt: string | undefined,\n t: TFunction,\n) {\n if (reason === 'ALREADY_PUBLISHED' && publishedAt) {\n return <AlreadyPublished publishedAt={publishedAt} />\n }\n return t(DISABLED_REASON_TITLE_KEY[reason])\n}\n\nfunction AlreadyPublished({publishedAt}: {publishedAt: string}) {\n const {t} = useTranslation(structureLocaleNamespace)\n const timeSincePublished = useRelativeTime(publishedAt, {useTemporalPhrase: true})\n return <span>{t('action.publish.already-published.tooltip', {timeSincePublished})}</span>\n}\n\n/**\n * TODO: Verify how this should work with versions, if it's needed at all.\n *\n *@internal\n */\n// eslint-disable-next-line complexity\nexport const PublishAction: DocumentActionComponent = (props) => {\n const {id, type, liveEdit, draft, published, release} = props\n const [publishState, setPublishState] = useState<'publishing' | 'published' | null>(null)\n const {publish} = useDocumentOperation(id, type, release)\n const validationStatus = useValidationStatus(id, type, release)\n const syncState = useSyncState(id, type, {version: release})\n const {changesOpen, onHistoryOpen, documentId, documentType, displayed} = useDocumentPane()\n\n const editState = useEditState(documentId, documentType, 'default', release)\n const {t} = useTranslation(structureLocaleNamespace)\n\n const revision = (editState?.draft || editState?.published || {})._rev\n\n const hasValidationErrors = validationStatus.validation.some(isValidationErrorMarker)\n // we use this to \"schedule\" publish after pending tasks (e.g. validation and sync) has completed\n const [publishScheduled, setPublishScheduled] = useState<boolean>(false)\n const isSyncing = syncState.isSyncing\n const isValidating = validationStatus.isValidating\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id,\n type,\n version: release,\n permission: 'publish',\n })\n\n const currentUser = useCurrentUser()\n\n // eslint-disable-next-line no-nested-ternary\n const title = publish.disabled\n ? getDisabledReason(publish.disabled, (published || {})._updatedAt, t) || ''\n : hasValidationErrors\n ? t('action.publish.validation-issues.tooltip')\n : ''\n\n const hasDraft = Boolean(draft)\n\n /** detect if the displayed document is published, if it is the publish action should be disabled */\n const isDisplayedPublished = displayed?._id === documentId\n\n const doPublish = useCallback(() => {\n publish.execute()\n setPublishState('publishing')\n }, [publish])\n\n useEffect(() => {\n // make sure the validation status is about the current revision and not an earlier one\n const validationComplete =\n validationStatus.isValidating === false && validationStatus.revision !== revision\n\n if (!publishScheduled || isSyncing || !validationComplete) {\n return\n }\n\n if (!hasValidationErrors) {\n doPublish()\n }\n setPublishScheduled(false)\n }, [\n isSyncing,\n doPublish,\n hasValidationErrors,\n publishScheduled,\n validationStatus.revision,\n revision,\n isValidating,\n validationStatus.isValidating,\n ])\n\n useEffect(() => {\n const didPublish = publishState === 'publishing' && !hasDraft\n\n const nextState = didPublish ? 'published' : null\n const delay = didPublish ? 200 : 4000\n const timer = setTimeout(() => {\n setPublishState(nextState)\n }, delay)\n return () => clearTimeout(timer)\n }, [changesOpen, publishState, hasDraft])\n\n const telemetry = useTelemetry()\n\n const handle = useCallback(() => {\n telemetry.log(DocumentPublished, {\n publishedImmediately: !draft?._createdAt,\n previouslyPublished: Boolean(published),\n })\n if (\n syncState.isSyncing ||\n validationStatus.isValidating ||\n validationStatus.revision !== revision\n ) {\n setPublishScheduled(true)\n } else {\n doPublish()\n }\n }, [\n telemetry,\n draft?._createdAt,\n published,\n syncState.isSyncing,\n validationStatus.isValidating,\n validationStatus.revision,\n revision,\n doPublish,\n ])\n\n return useMemo(() => {\n // TODO: Check whether live edit is enabled because we're editing a version.\n if (liveEdit) {\n return {\n tone: 'default',\n icon: PublishIcon,\n label: t('action.publish.live-edit.label'),\n title: t('action.publish.live-edit.tooltip'),\n disabled: true,\n }\n }\n\n if (!isPermissionsLoading && !permissions?.granted) {\n return {\n tone: 'default',\n icon: PublishIcon,\n label: 'Publish',\n title: (\n <InsufficientPermissionsMessage context=\"publish-document\" currentUser={currentUser} />\n ),\n disabled: true,\n }\n }\n\n const disabled = Boolean(\n publishScheduled ||\n editState?.transactionSyncLock?.enabled ||\n publishState === 'publishing' ||\n publishState === 'published' ||\n hasValidationErrors ||\n publish.disabled ||\n isDisplayedPublished,\n )\n\n return {\n disabled: disabled || isPermissionsLoading,\n tone: 'default',\n label:\n // eslint-disable-next-line no-nested-ternary\n publishState === 'published'\n ? t('action.publish.published.label')\n : publishScheduled || publishState === 'publishing'\n ? t('action.publish.running.label')\n : t('action.publish.draft.label'),\n // @todo: Implement loading state, to show a `<Button loading />` state\n // loading: publishScheduled || publishState === 'publishing',\n icon: PublishIcon,\n // eslint-disable-next-line no-nested-ternary\n title: publishScheduled\n ? t('action.publish.waiting')\n : publishState === 'published' || publishState === 'publishing'\n ? null\n : title,\n shortcut: disabled || publishScheduled ? null : 'Ctrl+Alt+P',\n onHandle: handle,\n }\n }, [\n currentUser,\n editState?.transactionSyncLock?.enabled,\n handle,\n hasValidationErrors,\n isDisplayedPublished,\n isPermissionsLoading,\n liveEdit,\n permissions?.granted,\n publish.disabled,\n publishScheduled,\n publishState,\n t,\n title,\n ])\n}\n\nPublishAction.action = 'publish'\nPublishAction.displayName = 'PublishAction'\n","import {UnpublishIcon} from '@sanity/icons'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n type DocumentActionComponent,\n type DocumentActionModalDialogProps,\n InsufficientPermissionsMessage,\n useCurrentUser,\n useDocumentOperation,\n useDocumentPairPermissions,\n useTranslation,\n} from 'sanity'\n\nimport {ConfirmDeleteDialog} from '../components'\nimport {structureLocaleNamespace} from '../i18n'\n\nconst DISABLED_REASON_KEY = {\n NOT_PUBLISHED: 'action.unpublish.disabled.not-published',\n NOT_READY: 'action.unpublish.disabled.not-ready',\n LIVE_EDIT_ENABLED: 'action.unpublish.disabled.live-edit-enabled',\n}\n\n/** @internal */\nexport const UnpublishAction: DocumentActionComponent = ({\n id,\n type,\n draft,\n onComplete,\n liveEdit,\n release,\n}) => {\n const {unpublish} = useDocumentOperation(id, type, release)\n const [isConfirmDialogOpen, setConfirmDialogOpen] = useState(false)\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id,\n type,\n version: release,\n permission: 'unpublish',\n })\n const currentUser = useCurrentUser()\n const {t} = useTranslation(structureLocaleNamespace)\n\n const handleCancel = useCallback(() => {\n setConfirmDialogOpen(false)\n onComplete()\n }, [onComplete])\n\n const handleConfirm = useCallback(() => {\n setConfirmDialogOpen(false)\n unpublish.execute()\n onComplete()\n }, [onComplete, unpublish])\n\n const dialog: DocumentActionModalDialogProps | null = useMemo(() => {\n if (isConfirmDialogOpen) {\n return {\n type: 'dialog',\n onClose: onComplete,\n content: (\n <ConfirmDeleteDialog\n id={draft?._id || id}\n type={type}\n // eslint-disable-next-line @sanity/i18n/no-attribute-string-literals\n action=\"unpublish\"\n onCancel={handleCancel}\n onConfirm={handleConfirm}\n />\n ),\n }\n }\n\n return null\n }, [draft, id, handleCancel, handleConfirm, isConfirmDialogOpen, onComplete, type])\n\n return useMemo(() => {\n if (liveEdit) {\n return null\n }\n\n if (!isPermissionsLoading && !permissions?.granted) {\n return {\n tone: 'critical',\n icon: UnpublishIcon,\n label: 'Unpublish',\n title: (\n <InsufficientPermissionsMessage context=\"unpublish-document\" currentUser={currentUser} />\n ),\n disabled: true,\n }\n }\n\n return {\n tone: 'critical',\n icon: UnpublishIcon,\n disabled: Boolean(unpublish.disabled) || isPermissionsLoading,\n label: t('action.unpublish.label'),\n title: unpublish.disabled ? t(DISABLED_REASON_KEY[unpublish.disabled]) : '',\n onHandle: () => setConfirmDialogOpen(true),\n dialog,\n }\n }, [\n currentUser,\n dialog,\n isPermissionsLoading,\n liveEdit,\n permissions?.granted,\n t,\n unpublish.disabled,\n ])\n}\n\nUnpublishAction.action = 'unpublish'\nUnpublishAction.displayName = 'UnpublishAction'\n","/* eslint-disable no-warning-comments */\n/* eslint-disable camelcase */\nimport {Flex, LayerProvider, Stack, Text} from '@sanity/ui'\nimport {memo, useCallback, useMemo, useState} from 'react'\nimport {type DocumentActionComponent, type DocumentActionDescription, Hotkeys} from 'sanity'\n\nimport {Button, Tooltip} from '../../../../ui-components'\nimport {RenderActionCollectionState} from '../../../components'\nimport {HistoryRestoreAction} from '../../../documentActions'\nimport {toLowerCaseNoSpaces} from '../../../util/toLowerCaseNoSpaces'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {ActionMenuButton} from './ActionMenuButton'\nimport {ActionStateDialog} from './ActionStateDialog'\n\ninterface DocumentStatusBarActionsInnerProps {\n disabled: boolean\n showMenu: boolean\n states: DocumentActionDescription[]\n}\n\nconst DocumentStatusBarActionsInner = memo(function DocumentStatusBarActionsInner(\n props: DocumentStatusBarActionsInnerProps,\n) {\n const {disabled, showMenu, states} = props\n const {__internal_tasks, existsInBundle} = useDocumentPane()\n\n const [firstActionState, ...menuActionStates] = states\n const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)\n\n // TODO: This could be refactored to use the tooltip from the button if the firstAction.title was updated to a string.\n const tooltipContent = useMemo(() => {\n if (!firstActionState || (!firstActionState.title && !firstActionState.shortcut)) return null\n\n return (\n <Flex style={{maxWidth: 300}} align=\"center\" gap={3}>\n {firstActionState.title && <Text size={1}>{firstActionState.title}</Text>}\n {firstActionState.shortcut && (\n <Hotkeys\n data-testid=\"document-status-bar-hotkeys\"\n fontSize={1}\n style={{marginTop: -4, marginBottom: -4}}\n keys={String(firstActionState.shortcut)\n .split('+')\n .map((s) => s.slice(0, 1).toUpperCase() + s.slice(1).toLowerCase())}\n />\n )}\n </Flex>\n )\n }, [firstActionState])\n\n const sideMenuItems = useMemo(() => {\n return existsInBundle ? [firstActionState, ...menuActionStates] : menuActionStates\n }, [existsInBundle, firstActionState, menuActionStates])\n\n /* Version / Bundling handling */\n return (\n <Flex align=\"center\" gap={1}>\n {__internal_tasks && __internal_tasks.footerAction}\n {firstActionState && (\n <LayerProvider zOffset={200}>\n <Tooltip disabled={!tooltipContent} content={tooltipContent} placement=\"top\">\n <Stack>\n {!existsInBundle && (\n <Button\n data-testid={`action-${toLowerCaseNoSpaces(firstActionState.label)}`}\n disabled={disabled || Boolean(firstActionState.disabled)}\n icon={firstActionState.icon}\n // eslint-disable-next-line react/jsx-handler-names\n onClick={firstActionState.onHandle}\n ref={setButtonElement}\n size=\"large\"\n text={firstActionState.label}\n tone={firstActionState.tone || 'primary'}\n />\n )}\n </Stack>\n </Tooltip>\n </LayerProvider>\n )}\n {/* if it's in version we always only want to show the items on the side menu and not on the main action */}\n {((showMenu && menuActionStates.length > 0) || existsInBundle) && (\n <ActionMenuButton actionStates={sideMenuItems} disabled={disabled} />\n )}\n {firstActionState && firstActionState.dialog && (\n <ActionStateDialog dialog={firstActionState.dialog} referenceElement={buttonElement} />\n )}\n </Flex>\n )\n})\n\nexport const DocumentStatusBarActions = memo(function DocumentStatusBarActions() {\n const {actions: allActions, connectionState, documentId, editState, displayed} = useDocumentPane()\n // const [isMenuOpen, setMenuOpen] = useState(false)\n // const handleMenuOpen = useCallback(() => setMenuOpen(true), [])\n // const handleMenuClose = useCallback(() => setMenuOpen(false), [])\n // const handleActionComplete = useCallback(() => setMenuOpen(false), [])\n\n // The restore action has a dedicated place in the UI; it's only visible when the user is viewing\n // a different document revision. It must be omitted from this collection.\n const actions = useMemo(\n () => (allActions ?? []).filter((action) => !isRestoreAction(action)),\n [allActions],\n )\n\n const renderDocumentStatusBarActions = useCallback<\n (props: {states: DocumentActionDescription[]}) => React.ReactNode\n >(\n ({states}) => (\n <DocumentStatusBarActionsInner\n disabled={connectionState !== 'connected'}\n // isMenuOpen={isMenuOpen}\n // onMenuOpen={handleMenuOpen}\n // onMenuClose={handleMenuClose}\n showMenu={actions.length > 1}\n states={states}\n // Use document ID as key to make sure that the actions state is reset when the document changes\n key={documentId}\n />\n ),\n [actions.length, connectionState, documentId],\n )\n\n if (actions.length === 0 || !editState) {\n return null\n }\n\n return (\n <RenderActionCollectionState\n // component={}\n // onActionComplete={handleActionComplete}\n actions={actions}\n actionProps={editState}\n group=\"default\"\n >\n {renderDocumentStatusBarActions}\n </RenderActionCollectionState>\n )\n})\n\nexport const HistoryStatusBarActions = memo(function HistoryStatusBarActions() {\n const {actions, connectionState, editState, revisionId: revision} = useDocumentPane()\n\n const disabled = (editState?.draft || editState?.published || {})._rev === revision\n const actionProps = useMemo(() => ({...(editState || {}), revision}), [editState, revision])\n\n // If multiple `restore` actions are defined, ensure only the final one is used.\n const historyActions = useMemo(() => (actions ?? []).filter(isRestoreAction).slice(-1), [actions])\n\n const renderDocumentStatusBarActions = useCallback<\n (props: {states: DocumentActionDescription[]}) => React.ReactNode\n >(\n ({states}) => (\n <DocumentStatusBarActionsInner\n disabled={connectionState !== 'connected' || Boolean(disabled)}\n showMenu={false}\n states={states}\n />\n ),\n [connectionState, disabled],\n )\n\n return (\n <RenderActionCollectionState\n actions={historyActions}\n actionProps={actionProps as any}\n group=\"default\"\n >\n {renderDocumentStatusBarActions}\n </RenderActionCollectionState>\n )\n})\n\nexport function isRestoreAction(\n action: DocumentActionComponent,\n): action is DocumentActionComponent & {action: 'restore'} {\n return action.action === HistoryRestoreAction.action\n}\n","import {TabList} from '@sanity/ui'\nimport {type ComponentType, type ReactNode, useCallback} from 'react'\n\nimport {Tab} from '../../../../../ui-components'\nimport {usePaneRouter} from '../../../../components'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nexport function DocumentHeaderTabs() {\n const {activeViewId, paneKey, views} = useDocumentPane()\n const tabPanelId = `${paneKey}tabpanel`\n\n return (\n <TabList space={1}>\n {views.map((view, index) => (\n <DocumentHeaderTab\n icon={view.icon}\n id={`${paneKey}tab-${view.id}`}\n isActive={activeViewId === view.id}\n key={view.id}\n label={view.title}\n tabPanelId={tabPanelId}\n viewId={index === 0 ? null : (view.id ?? null)}\n />\n ))}\n </TabList>\n )\n}\n\nfunction DocumentHeaderTab(props: {\n icon?: ComponentType | ReactNode\n id: string\n isActive: boolean\n label: string\n tabPanelId: string\n viewId: string | null\n}) {\n const {icon, id, isActive, label, tabPanelId, viewId, ...rest} = props\n const {ready, editState} = useDocumentPane()\n const {setView} = usePaneRouter()\n const handleClick = useCallback(() => setView(viewId), [setView, viewId])\n\n return (\n <Tab\n {...rest} // required to enable <TabList> keyboard navigation\n aria-controls={tabPanelId}\n disabled={!ready && !editState?.draft && !editState?.published}\n icon={icon}\n id={id}\n label={label}\n onClick={handleClick}\n selected={isActive}\n />\n )\n}\n","import {Text} from '@sanity/ui'\nimport {memo, useCallback, useMemo} from 'react'\nimport {\n formatRelativeLocalePublishDate,\n getReleaseIdFromReleaseDocumentId,\n getReleaseTone,\n getVersionFromId,\n isReleaseScheduledOrScheduling,\n type ReleaseDocument,\n Translate,\n useDateTimeFormat,\n usePerspective,\n useReleases,\n useTranslation,\n VersionChip,\n versionDocumentExists,\n} from 'sanity'\nimport {usePaneRouter} from 'sanity/structure'\n\nimport {useDocumentPane} from '../../../useDocumentPane'\n\ntype FilterReleases = {\n notCurrentReleases: ReleaseDocument[]\n currentReleases: ReleaseDocument[]\n}\n\nconst TooltipContent = ({release}: {release: ReleaseDocument}) => {\n const {t} = useTranslation()\n\n if (release.metadata.releaseType === 'asap') {\n return <Text size={1}>{t('release.type.asap')}</Text>\n }\n if (release.metadata.releaseType === 'scheduled') {\n const isActive = release.state === 'active'\n\n return (\n release.metadata.intendedPublishAt && (\n <Text size={1}>\n {isActive ? (\n <Translate\n t={t}\n i18nKey=\"release.chip.tooltip.intended-for-date\"\n values={{\n date: formatRelativeLocalePublishDate(release),\n }}\n />\n ) : (\n <Translate\n t={t}\n i18nKey=\"release.chip.tooltip.scheduled-for-date\"\n values={{\n date: formatRelativeLocalePublishDate(release),\n }}\n />\n )}\n </Text>\n )\n )\n }\n\n if (release.metadata.releaseType === 'undecided') {\n return <Text size={1}>{t('release.type.undecided')}</Text>\n }\n return null\n}\n\nexport const DocumentPerspectiveList = memo(function DocumentPerspectiveList() {\n const {selectedPerspectiveName} = usePerspective()\n const {t} = useTranslation()\n const {setPerspective} = usePerspective()\n const {params} = usePaneRouter()\n const dateTimeFormat = useDateTimeFormat({\n dateStyle: 'medium',\n timeStyle: 'short',\n })\n const {data: releases, loading, archivedReleases} = useReleases()\n\n const {documentVersions, editState, displayed, documentType} = useDocumentPane()\n\n const filteredReleases: FilterReleases = useMemo(() => {\n if (!documentVersions) return {notCurrentReleases: [], currentReleases: []}\n\n const activeReleases = releases.reduce(\n (acc: FilterReleases, release) => {\n const versionDocExists = versionDocumentExists(documentVersions, release._id)\n if (versionDocExists) {\n acc.currentReleases.push(release)\n } else {\n acc.notCurrentReleases.push(release)\n }\n return acc\n },\n {notCurrentReleases: [], currentReleases: []},\n )\n\n // without historyVersion, version is not in an archived release\n if (!params?.historyVersion) return activeReleases\n\n const archivedRelease = archivedReleases.find(\n (r) => getReleaseIdFromReleaseDocumentId(r._id) === params?.historyVersion,\n )\n\n // only for explicitly archived releases; published releases use published perspective\n if (archivedRelease?.state === 'archived') {\n activeReleases.currentReleases.push(archivedRelease)\n }\n\n return activeReleases\n }, [archivedReleases, documentVersions, params?.historyVersion, releases])\n\n const handlePerspectiveChange = useCallback(\n (perspective: Parameters<typeof setPerspective>[0]) => () => {\n setPerspective(perspective)\n },\n [setPerspective],\n )\n\n const isPublishedChipDisabled = useMemo(() => {\n // If it's a live edit document the only option to edit it is through\n // the published perspective, users should be able to select it.\n if (editState?.liveEdit) return false\n\n // If it's not live edit, we want to check for the existence of the published doc.\n return !editState?.published\n }, [editState?.liveEdit, editState?.published])\n\n const getReleaseChipState = useCallback(\n (release: ReleaseDocument): {selected: boolean; disabled?: boolean} => {\n if (!params?.historyVersion)\n return {\n selected:\n getReleaseIdFromReleaseDocumentId(release._id) ===\n getVersionFromId(displayed?._id || ''),\n }\n\n const isReleaseHistoryMatch =\n getReleaseIdFromReleaseDocumentId(release._id) === params.historyVersion\n\n return {selected: isReleaseHistoryMatch, disabled: isReleaseHistoryMatch}\n },\n [displayed?._id, params?.historyVersion],\n )\n\n return (\n <>\n <VersionChip\n tooltipContent={\n <Text size={1}>\n {editState?.published && editState?.published?._updatedAt ? (\n <Translate\n t={t}\n i18nKey=\"release.chip.tooltip.published-date\"\n values={{date: dateTimeFormat.format(new Date(editState?.published._updatedAt))}}\n />\n ) : (\n <>{t('release.chip.tooltip.not-published')}</>\n )}\n </Text>\n }\n disabled={isPublishedChipDisabled}\n onClick={handlePerspectiveChange('published')}\n selected={\n /** the publish is selected when:\n * when the document displayed is a published document, but has no draft and the perspective that is\n * selected is the null perspective - this means that it should be showing draft\n * when the perspective is published\n */\n !!(\n (editState?.published?._id === displayed?._id &&\n !editState?.draft &&\n selectedPerspectiveName) ||\n selectedPerspectiveName === 'published'\n )\n }\n text={t('release.chip.published')}\n tone=\"positive\"\n contextValues={{\n documentId: editState?.published?._id || editState?.id || '',\n menuReleaseId: editState?.published?._id || editState?.id || '',\n releases: filteredReleases.notCurrentReleases,\n releasesLoading: loading,\n documentType,\n fromRelease: 'published',\n isVersion: false,\n disabled: !editState?.published,\n }}\n />\n <VersionChip\n tooltipContent={\n <Text size={1}>\n {editState?.draft ? (\n <>\n {editState?.draft._updatedAt ? (\n <Translate\n t={t}\n i18nKey=\"release.chip.tooltip.edited-date\"\n values={{date: dateTimeFormat.format(new Date(editState?.draft._updatedAt))}}\n />\n ) : (\n <Translate\n t={t}\n i18nKey=\"release.chip.tooltip.created-date\"\n values={{date: dateTimeFormat.format(new Date(editState?.draft._createdAt))}}\n />\n )}\n </>\n ) : (\n <>{t('release.chip.tooltip.no-edits')}</>\n )}\n </Text>\n }\n selected={\n /** the draft is selected when:\n * not viewing a historical version,\n * when the document displayed is a draft,\n * when the perspective is null,\n * when the document is not published and the displayed version is draft,\n * when there is no draft (new document),\n */\n !!(\n !params?.historyVersion &&\n (editState?.draft?._id === displayed?._id ||\n !selectedPerspectiveName ||\n (!editState?.published &&\n editState?.draft &&\n editState?.draft?._id === displayed?._id) ||\n (!editState?.published && !editState?.draft))\n )\n }\n text={t('release.chip.draft')}\n tone=\"caution\"\n onClick={handlePerspectiveChange('drafts')}\n contextValues={{\n documentId: editState?.draft?._id || editState?.published?._id || editState?.id || '',\n menuReleaseId: editState?.draft?._id || editState?.published?._id || editState?.id || '',\n releases: filteredReleases.notCurrentReleases,\n releasesLoading: loading,\n documentType: documentType,\n fromRelease: 'draft',\n isVersion: false,\n disabled: !editState?.draft,\n }}\n />\n\n {displayed &&\n filteredReleases.currentReleases?.map((release) => (\n <VersionChip\n key={release._id}\n tooltipContent={<TooltipContent release={release} />}\n {...getReleaseChipState(release)}\n onClick={handlePerspectiveChange(getReleaseIdFromReleaseDocumentId(release._id))}\n text={release.metadata.title || t('release.placeholder-untitled-release')}\n tone={getReleaseTone(release)}\n locked={isReleaseScheduledOrScheduling(release)}\n contextValues={{\n documentId: displayed?._id || '',\n menuReleaseId: release._id,\n releases: filteredReleases.notCurrentReleases,\n releasesLoading: loading,\n documentType: documentType,\n fromRelease: getReleaseIdFromReleaseDocumentId(release._id),\n releaseState: release.state,\n isVersion: true,\n }}\n />\n ))}\n </>\n )\n})\n","import {DocumentIcon} from '@sanity/icons'\nimport {Flex, Text} from '@sanity/ui'\nimport {unstable_useValuePreview as useValuePreview, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {DocumentPerspectiveList} from './perspective/DocumentPerspectiveList'\n\nconst TitleContainer = styled(Text)`\n max-width: 100%;\n min-width: 0;\n`\nexport function DocumentHeaderTitle({collapsed = false}: {collapsed?: boolean}): React.JSX.Element {\n const {connectionState, schemaType, title, value: documentValue} = useDocumentPane()\n const subscribed = Boolean(documentValue)\n\n const {error, value} = useValuePreview({\n enabled: subscribed,\n schemaType,\n value: documentValue,\n })\n const {t} = useTranslation(structureLocaleNamespace)\n\n if (connectionState === 'connecting' && !subscribed) {\n return <></>\n }\n\n if (title) {\n return <>{title}</>\n }\n\n if (!documentValue) {\n return (\n <>\n {t('panes.document-header-title.new.text', {\n schemaType: schemaType?.title || schemaType?.name,\n })}\n </>\n )\n }\n\n if (error) {\n return <>{t('panes.document-header-title.error.text', {error: error.message})}</>\n }\n\n const Icon = schemaType?.options?.icon || DocumentIcon\n\n return (\n <Flex flex={1} align=\"center\" gap={collapsed ? 3 : 1} paddingX={collapsed ? 2 : 0}>\n {collapsed ? (\n <>\n <Text size={1}>\n <Icon />\n </Text>\n <TitleContainer\n muted={!value?.title}\n size={1}\n textOverflow=\"ellipsis\"\n weight={value?.title ? 'semibold' : undefined}\n title={value?.title}\n >\n {value?.title || (\n <span style={{color: 'var(--card-muted-fg-color)'}}>\n {t('panes.document-header-title.untitled.text')}\n </span>\n )}\n </TitleContainer>\n </>\n ) : (\n <DocumentPerspectiveList />\n )}\n </Flex>\n )\n}\n","import {ArrowLeftIcon, CloseIcon, SplitVerticalIcon} from '@sanity/icons'\nimport {Flex} from '@sanity/ui'\nimport {\n type ForwardedRef,\n forwardRef,\n memo,\n useCallback,\n useDeferredValue,\n useMemo,\n useState,\n} from 'react'\nimport {type DocumentActionDescription, useFieldActions, useTranslation} from 'sanity'\n\nimport {Button, TooltipDelayGroupProvider} from '../../../../../ui-components'\nimport {\n PaneContextMenuButton,\n PaneHeader,\n PaneHeaderActionButton,\n RenderActionCollectionState,\n usePane,\n usePaneRouter,\n} from '../../../../components'\nimport {type _PaneMenuNode} from '../../../../components/pane/types'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {isMenuNodeButton, isNotMenuNodeButton, resolveMenuNodes} from '../../../../menuNodes'\nimport {type PaneMenuItem} from '../../../../types'\nimport {useStructureTool} from '../../../../useStructureTool'\nimport {ActionDialogWrapper, ActionMenuListItem} from '../../statusBar/ActionMenuButton'\nimport {isRestoreAction} from '../../statusBar/DocumentStatusBarActions'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {DocumentHeaderTabs} from './DocumentHeaderTabs'\nimport {DocumentHeaderTitle} from './DocumentHeaderTitle'\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface DocumentPanelHeaderProps {\n menuItems: PaneMenuItem[]\n}\n\nexport const DocumentPanelHeader = memo(\n forwardRef(function DocumentPanelHeader(\n _props: DocumentPanelHeaderProps,\n ref: ForwardedRef<HTMLDivElement>,\n ) {\n const {menuItems} = _props\n const {\n actions: allActions,\n editState,\n onMenuAction,\n onPaneClose,\n onPaneSplit,\n menuItemGroups,\n schemaType,\n connectionState,\n views,\n unstable_languageFilter,\n } = useDocumentPane()\n const {features} = useStructureTool()\n const {index, BackLink, hasGroupSiblings} = usePaneRouter()\n const {actions: fieldActions} = useFieldActions()\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null)\n\n // The restore action has a dedicated place in the UI; it's only visible when the user is\n // viewing a different document revision. It must be omitted from this collection.\n const actions = useMemo(\n () => (allActions ?? []).filter((action) => !isRestoreAction(action)),\n [allActions],\n )\n\n const menuNodes = useMemo(\n () =>\n resolveMenuNodes({actionHandler: onMenuAction, fieldActions, menuItems, menuItemGroups}),\n [onMenuAction, fieldActions, menuItemGroups, menuItems],\n )\n\n const menuButtonNodes = useMemo(() => menuNodes.filter(isMenuNodeButton), [menuNodes])\n const contextMenuNodes = useMemo(() => menuNodes.filter(isNotMenuNodeButton), [menuNodes])\n const showTabs = views.length > 1\n\n const {collapsed, isLast} = usePane()\n // Prevent focus if this is the last (non-collapsed) pane.\n const tabIndex = isLast && !collapsed ? -1 : 0\n\n // there are three kinds of buttons possible:\n //\n // 1. split pane - creates a new split pane\n // 2. close split pane — closes the current split pane\n // 3. close pane group — closes the current pane group\n\n // show the split pane button if they're enabled and there is more than one\n // view available to use to create a split view\n const showSplitPaneButton = features.splitViews && onPaneSplit && views.length > 1\n\n // show the split pane button close button if the split button is showing\n // and there is more than one split pane open (aka has-siblings)\n const showSplitPaneCloseButton = showSplitPaneButton && hasGroupSiblings\n\n // show the back button if both the feature is enabled and the current pane\n // is not the first\n const showBackButton = features.backButton && index > 0\n\n // show the pane group close button if the `showSplitPaneCloseButton` is\n // _not_ showing (the split pane button replaces the group close button)\n // and if the back button is not showing (the back button and the close\n // button do the same thing and shouldn't be shown at the same time)\n // and if a BackLink component was provided\n const showPaneGroupCloseButton = !showSplitPaneCloseButton && !showBackButton && !!BackLink\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n const renderPaneActions = useCallback<\n (props: {states: DocumentActionDescription[]}) => React.ReactNode\n >(\n ({states}) => (\n <DocumentPanelHeaderActionDialogDeferred\n contextMenuNodes={contextMenuNodes}\n setReferenceElement={setReferenceElement}\n referenceElement={referenceElement}\n states={states}\n />\n ),\n [contextMenuNodes, referenceElement],\n )\n\n const title = useMemo(() => <DocumentHeaderTitle />, [])\n const tabs = useMemo(() => showTabs && <DocumentHeaderTabs />, [showTabs])\n const backButton = useMemo(\n () =>\n showBackButton && (\n <Button\n as={BackLink}\n data-as=\"a\"\n icon={ArrowLeftIcon}\n mode=\"bleed\"\n tooltipProps={{content: t('pane-header.back-button.text')}}\n />\n ),\n [BackLink, showBackButton, t],\n )\n const renderedActions = useMemo(\n () => (\n <Flex align=\"center\" gap={1}>\n {unstable_languageFilter.length > 0 && (\n <>\n {unstable_languageFilter.map((LanguageFilterComponent, idx) => {\n return (\n <LanguageFilterComponent\n // eslint-disable-next-line react/no-array-index-key\n key={`language-filter-${idx}`}\n schemaType={schemaType}\n />\n )\n })}\n </>\n )}\n\n {menuButtonNodes.map((item) => (\n <PaneHeaderActionButton key={item.key} node={item} />\n ))}\n {editState && (\n <RenderActionCollectionState\n actions={actions}\n actionProps={editState}\n group=\"paneActions\"\n >\n {renderPaneActions}\n </RenderActionCollectionState>\n )}\n\n {showSplitPaneButton && (\n <Button\n aria-label={t('buttons.split-pane-button.aria-label')}\n icon={SplitVerticalIcon}\n key=\"split-pane-button\"\n mode=\"bleed\"\n onClick={onPaneSplit}\n tooltipProps={{content: t('buttons.split-pane-button.tooltip')}}\n />\n )}\n\n {showSplitPaneCloseButton && (\n <Button\n icon={CloseIcon}\n key=\"close-view-button\"\n mode=\"bleed\"\n onClick={onPaneClose}\n tooltipProps={{content: t('buttons.split-pane-close-button.title')}}\n />\n )}\n\n {showPaneGroupCloseButton && (\n <Button\n icon={CloseIcon}\n key=\"close-view-button\"\n mode=\"bleed\"\n tooltipProps={{content: t('buttons.split-pane-close-group-button.title')}}\n as={BackLink}\n />\n )}\n </Flex>\n ),\n [\n BackLink,\n actions,\n editState,\n menuButtonNodes,\n onPaneClose,\n onPaneSplit,\n renderPaneActions,\n schemaType,\n showPaneGroupCloseButton,\n showSplitPaneButton,\n showSplitPaneCloseButton,\n t,\n unstable_languageFilter,\n ],\n )\n\n return (\n <TooltipDelayGroupProvider>\n <PaneHeader\n border\n ref={ref}\n loading={connectionState === 'connecting' && !editState?.draft && !editState?.published}\n title={title}\n tabs={tabs}\n tabIndex={tabIndex}\n backButton={backButton}\n actions={renderedActions}\n />\n </TooltipDelayGroupProvider>\n )\n }),\n)\n\nconst DocumentPanelHeaderActionDialogDeferred = memo(\n function DocumentPanelHeaderActionDialogDeferred(props: {\n states: DocumentActionDescription[]\n setReferenceElement: React.Dispatch<React.SetStateAction<HTMLElement | null>>\n referenceElement: HTMLElement | null\n contextMenuNodes: _PaneMenuNode[]\n }) {\n const {setReferenceElement, referenceElement, contextMenuNodes} = props\n /**\n * The purpose of this component is to allow deferring the rendering of document action hook states if the main thread becomes very busy.\n * The `useDeferredValue` doesn't have an effect unless it's used to delay rendering a component that has `React.memo` to prevent unnecessary re-renders.\n */\n const states = useDeferredValue(props.states)\n\n return (\n <DocumentPanelHeaderActionDialog\n setReferenceElement={setReferenceElement}\n referenceElement={referenceElement}\n contextMenuNodes={contextMenuNodes}\n states={states}\n />\n )\n },\n)\n\nconst DocumentPanelHeaderActionDialog = memo(function DocumentPanelHeaderActionDialog(props: {\n states: DocumentActionDescription[]\n setReferenceElement: React.Dispatch<React.SetStateAction<HTMLElement | null>>\n referenceElement: HTMLElement | null\n contextMenuNodes: _PaneMenuNode[]\n}) {\n const {states, setReferenceElement, contextMenuNodes, referenceElement} = props\n\n const renderActionDialog = useCallback<\n ({handleAction}: {handleAction: (idx: number) => void}) => React.ReactNode\n >(\n ({handleAction}) => (\n <div ref={setReferenceElement}>\n <PaneContextMenuButton\n nodes={contextMenuNodes}\n key=\"context-menu\"\n actionsNodes={\n states.length > 0\n ? states.map((actionState, actionIndex) => (\n <ActionMenuListItem\n key={actionState.label}\n actionState={actionState}\n disabled={Boolean(actionState.disabled)}\n index={actionIndex}\n onAction={handleAction}\n />\n ))\n : undefined\n }\n />\n </div>\n ),\n [contextMenuNodes, setReferenceElement, states],\n )\n\n return (\n <ActionDialogWrapper actionStates={states} referenceElement={referenceElement}>\n {renderActionDialog}\n </ActionDialogWrapper>\n )\n})\n","import {Button, type ButtonProps} from '../../../ui-components'\n\ninterface SpacerButtonProps {\n size?: ButtonProps['size']\n}\n\n/**\n * This renders a visually hidden <Button> component that is still contributes\n * to document layout.\n *\n * It's used to simplify padding in Sanity UI components that contain buttons which\n * may not always be rendered.\n *\n * TODO: let's find a more elegant solve to this layout shift problem\n *\n * @internal\n */\nexport function SpacerButton({size}: SpacerButtonProps) {\n return (\n <Button\n aria-hidden\n disabled\n size={size}\n style={{\n pointerEvents: 'none',\n visibility: 'hidden',\n width: 0,\n }}\n text=\"-\"\n />\n )\n}\n","import {Badge, type BadgeTone, Inline} from '@sanity/ui'\nimport {memo, useCallback, useDeferredValue} from 'react'\nimport {type DocumentBadgeDescription} from 'sanity'\n\nimport {Tooltip} from '../../../../ui-components'\nimport {RenderBadgeCollectionState} from '../../../components'\nimport {useDocumentPane} from '../useDocumentPane'\n\ninterface DocumentBadgesInnerProps {\n states: DocumentBadgeDescription[]\n}\n\nconst BADGE_TONES: Record<string, BadgeTone | undefined> = {\n primary: 'primary',\n success: 'positive',\n warning: 'caution',\n danger: 'critical',\n}\n\nconst DocumentBadgesInner = memo(function DocumentBadgesInner({states}: DocumentBadgesInnerProps) {\n if (states.length === 0) {\n return null\n }\n return (\n <Inline space={1}>\n {states.map((badge, index) => (\n <Tooltip\n content={badge.title}\n disabled={!badge.title}\n key={`${badge.label}-${index}`}\n placement=\"top\"\n portal\n >\n <Badge\n fontSize={1}\n mode=\"outline\"\n paddingX={2}\n paddingY={1}\n radius={4}\n tone={badge.color ? BADGE_TONES[badge.color] : undefined}\n style={{whiteSpace: 'nowrap'}}\n >\n {badge.label}\n </Badge>\n </Tooltip>\n ))}\n </Inline>\n )\n})\n\nconst DocumentBadgesDeferred = memo(function DocumentBadgesDeferred(\n props: DocumentBadgesInnerProps,\n) {\n /**\n * The purpose of this component is to allow deferring the rendering of document action hook states if the main thread becomes very busy.\n * The `useDeferredValue` doesn't have an effect unless it's used to delay rendering a component that has `React.memo` to prevent unnecessary re-renders.\n */\n const states = useDeferredValue(props.states)\n return <DocumentBadgesInner states={states} />\n})\n\nexport function DocumentBadges() {\n const {badges, editState} = useDocumentPane()\n\n const renderDocumentBadges = useCallback<\n (props: {states: DocumentBadgeDescription[]}) => React.ReactNode\n >(({states}) => <DocumentBadgesDeferred states={states} />, [])\n\n if (!editState || !badges) return null\n\n return (\n <RenderBadgeCollectionState badges={badges} badgeProps={editState}>\n {renderDocumentBadges}\n </RenderBadgeCollectionState>\n )\n}\n","import {motion} from 'framer-motion'\nimport {type ComponentProps} from 'react'\nimport {keyframes, styled} from 'styled-components'\n\nconst StyledMotionPath = styled(motion.path)`\n transform-origin: center;\n`\n\ntype MotionCircleProps = Omit<ComponentProps<typeof motion.circle>, 'd'>\ntype MotionPathProps = Omit<ComponentProps<typeof motion.path>, 'd' | 'ref'>\n\nconst Circle = (props: MotionCircleProps) => (\n <motion.circle fill=\"none\" r=\"8\" cx=\"12.5\" cy=\"12.5\" strokeWidth=\"1.2\" {...props} />\n)\nconst Arrows = (props: MotionPathProps) => (\n <StyledMotionPath\n fill=\"none\"\n d=\"M14 17.5619L11.5 20.5L14.5 23.0619M11 7.43811L13.5 4.50001L10.5 1.93811\"\n {...props}\n />\n)\nconst Checkmark = (props: MotionPathProps) => (\n <motion.path d=\"M9.5 12.1316L11.7414 14.5L16 10\" {...props} />\n)\n\nconst rotateAnimation = keyframes`\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n`\nconst RotateGroup = styled.g`\n transform-origin: center;\n\n &[data-rotate] {\n animation: ${rotateAnimation} 1s ease-in-out infinite;\n }\n`\n\nconst root = {\n syncing: {\n scale: 1,\n transition: {\n duration: 0,\n },\n },\n saved: {\n scale: [1, 0.8, 1.2, 0.9, 1.1, 0.95, 1.05, 0.99, 1],\n transition: {\n duration: 0.5,\n delay: 0.2,\n },\n },\n changes: {transition: {duration: 0}},\n}\n\nconst circle = {\n syncing: {\n strokeDasharray: '0, 0, 23, 3, 23, 3',\n strokeDashoffset: 10,\n opacity: 1,\n transition: {\n duration: 0,\n },\n },\n saved: {\n strokeDasharray: '0, 0, 23, 0, 23, 0',\n strokeDashoffset: 10,\n opacity: 1,\n transition: {\n duration: 0.2,\n },\n },\n changes: {\n strokeDasharray: '0, 60, 23, 0, 23, 0',\n strokeDashoffset: 0,\n opacity: 0,\n transition: {\n duration: 0.5,\n },\n },\n}\n\nconst arrows = {\n syncing: {\n opacity: 1,\n transition: {\n duration: 0,\n },\n },\n saved: {\n opacity: 0,\n transition: {\n duration: 0.2,\n },\n },\n changes: {\n opacity: 0,\n },\n}\n\nconst checkmark = {\n syncing: {\n pathLength: 0,\n transition: {duration: 0},\n },\n saved: {\n pathLength: 1,\n transition: {\n delay: 0.4,\n duration: 0.3,\n },\n },\n changes: {\n pathLength: 0,\n transition: {\n duration: 0.2,\n },\n },\n}\n\ninterface AnimatedStatusIconProps {\n status?: 'changes' | 'saved' | 'syncing'\n}\n\nexport function AnimatedStatusIcon(props: AnimatedStatusIconProps) {\n const {status} = props\n\n if (!status) {\n return null\n }\n\n return (\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 25 25\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n data-sanity-icon=\"animated-status-icon\"\n >\n <motion.g variants={root} initial={status} animate={status}>\n <RotateGroup data-rotate={status === 'changes' ? undefined : ''}>\n <Arrows variants={arrows} initial={status} animate={status} />\n <Circle variants={circle} initial={status} animate={status} />\n </RotateGroup>\n <Checkmark variants={checkmark} initial={status} animate={status} />\n </motion.g>\n </svg>\n )\n}\n","import {type ButtonTone, Flex, Text} from '@sanity/ui'\nimport {TextWithTone, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {AnimatedStatusIcon} from './AnimatedStatusIcon'\n\ntype StatusType = 'saved' | 'syncing'\ninterface ReviewChangesButtonProps {\n status?: StatusType\n}\n\nconst STATUS_DICTIONARY: Record<StatusType, {i18nKey: string; tone: ButtonTone}> = {\n saved: {\n i18nKey: 'status-bar.document-status-pulse.status.saved.text',\n tone: 'positive',\n },\n syncing: {\n i18nKey: 'status-bar.document-status-pulse.status.syncing.text',\n tone: 'default',\n },\n}\n\nexport const DocumentStatusPulse = (props: ReviewChangesButtonProps) => {\n const {status} = props\n const {t} = useTranslation(structureLocaleNamespace)\n\n if (status !== 'saved' && status !== 'syncing') {\n return null\n }\n\n const currentStatus = STATUS_DICTIONARY[status]\n\n return (\n <Flex align=\"center\" gap={2} data-testid=\"pane-footer-document-status-pulse\">\n <TextWithTone size={1} tone={currentStatus.tone}>\n <AnimatedStatusIcon status={status} />\n </TextWithTone>\n\n <Text muted size={1}>\n {t(currentStatus.i18nKey)}\n </Text>\n </Flex>\n )\n}\n","import {Flex} from '@sanity/ui'\nimport {useEffect, useLayoutEffect, useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\nimport {of} from 'rxjs'\nimport {\n DocumentStatus,\n getPreviewStateObservable,\n getReleaseIdFromReleaseDocumentId,\n isPublishedPerspective,\n useDocumentPreviewStore,\n usePerspective,\n useReleases,\n useSchema,\n useSyncState,\n} from 'sanity'\n\nimport {Tooltip} from '../../../../ui-components'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {DocumentStatusPulse} from './DocumentStatusPulse'\n\nconst SYNCING_TIMEOUT = 1000\nconst SAVED_TIMEOUT = 3000\n\nexport function DocumentStatusLine() {\n const {documentId, documentType, editState, value} = useDocumentPane()\n const [status, setStatus] = useState<'saved' | 'syncing' | null>(null)\n const documentPreviewStore = useDocumentPreviewStore()\n const schema = useSchema()\n const schemaType = schema.get(documentType)\n const releases = useReleases()\n const {selectedPerspective, selectedReleaseId, perspectiveStack} = usePerspective()\n const previewStateObservable = useMemo(\n () =>\n schemaType\n ? getPreviewStateObservable(documentPreviewStore, schemaType, value._id, 'Untitled', {\n bundleIds: (releases.data ?? []).map((release) =>\n getReleaseIdFromReleaseDocumentId(release._id),\n ),\n bundleStack: perspectiveStack,\n })\n : of({versions: {}}),\n [documentPreviewStore, schemaType, value._id, releases.data, perspectiveStack],\n )\n const {versions} = useObservable(previewStateObservable, {versions: {}})\n\n const syncState = useSyncState(documentId, documentType, {version: editState?.release})\n\n const lastUpdated = value?._updatedAt\n\n // eslint-disable-next-line consistent-return\n useEffect(() => {\n // Schedule an update to set the status to 'saved' when status changed to 'syncing.\n // We use `syncState.isSyncing` here to avoid the status being set to 'saved' when the document is syncing.\n if (status === 'syncing' && !syncState.isSyncing) {\n const timerId = setTimeout(() => setStatus('saved'), SYNCING_TIMEOUT)\n return () => clearTimeout(timerId)\n }\n // Schedule an update to clear the status when status changed to 'saved'\n if (status === 'saved') {\n const timerId = setTimeout(() => setStatus(null), SAVED_TIMEOUT)\n return () => clearTimeout(timerId)\n }\n }, [status, lastUpdated, syncState.isSyncing])\n\n // Clear the status when documentId changes to make sure we don't show the wrong status when opening a new document\n useLayoutEffect(() => {\n setStatus(null)\n }, [documentId])\n\n // Set status to 'syncing' when lastUpdated changes and we go from not syncing to syncing\n useLayoutEffect(() => {\n if (syncState.isSyncing) {\n setStatus('syncing')\n }\n }, [syncState.isSyncing, lastUpdated])\n\n const getMode = () => {\n if (isPublishedPerspective(selectedPerspective)) {\n return 'published'\n }\n if (editState?.version) {\n return 'version'\n }\n if (editState?.draft) {\n return 'draft'\n }\n return 'published'\n }\n const mode = getMode()\n\n if (status) {\n return <DocumentStatusPulse status={status || undefined} />\n }\n return (\n <Tooltip\n content={\n <DocumentStatus\n draft={editState?.draft}\n published={editState?.published}\n versions={versions}\n />\n }\n placement=\"top\"\n >\n <Flex align=\"center\" gap={3} data-ui=\"document-status-line\">\n {/* Shows only 1 line of document status */}\n <DocumentStatus\n draft={mode === 'draft' ? editState?.draft : undefined}\n published={mode === 'published' ? editState?.published : undefined}\n versions={\n mode === 'version' && selectedReleaseId && editState?.version\n ? {\n [selectedReleaseId]: {\n snapshot: editState?.version,\n },\n }\n : undefined\n }\n />\n </Flex>\n </Tooltip>\n )\n}\n","import {RestoreIcon} from '@sanity/icons'\nimport {Box, Flex, Text} from '@sanity/ui'\nimport {format} from 'date-fns'\nimport {Translate, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {useDocumentPane} from '../useDocumentPane'\n\nexport const StatusText = styled(Text)`\n color: var(--card-muted-fg-color);\n\n em {\n color: var(--card-fg-color);\n font-weight: 500;\n font-style: normal;\n }\n`\n\nexport function RevisionStatusLine(): React.JSX.Element {\n const {displayed} = useDocumentPane()\n const {t} = useTranslation()\n const date = displayed?._updatedAt || displayed?._createdAt\n\n const message = {\n name: 'revision',\n text: date ? (\n <Translate\n t={t}\n i18nKey=\"document-status.revision-from\"\n values={{\n date: format(new Date(date), `MMM d, yyyy '@' pp`),\n }}\n />\n ) : null,\n tone: 'caution',\n }\n\n return (\n <>\n <Flex flex={1} gap={3} padding={2}>\n <Box flex=\"none\">\n <Text size={1}>\n <RestoreIcon />\n </Text>\n </Box>\n <Box flex={1}>\n <StatusText size={1} textOverflow=\"ellipsis\">\n {message.text}\n </StatusText>\n </Box>\n </Flex>\n </>\n )\n}\n","import {useLayoutEffect} from 'react'\nimport {resizeObserver} from 'sanity'\n\nexport function useResizeObserver({\n element,\n onResize,\n}: {\n element?: HTMLDivElement | null\n onResize: (event: ResizeObserverEntry) => void\n}): void {\n useLayoutEffect(() => {\n if (element) {\n resizeObserver.observe(element, onResize)\n }\n\n return () => {\n if (element) {\n resizeObserver.unobserve(element)\n }\n }\n }, [element, onResize])\n}\n","import {Card, Flex} from '@sanity/ui'\nimport {type Ref, useCallback, useState} from 'react'\nimport {\n type CreateLinkMetadata,\n isDraftPerspective,\n isPublishedPerspective,\n isSanityCreateLinked,\n usePerspective,\n useSanityCreateConfig,\n} from 'sanity'\n\nimport {SpacerButton} from '../../../components/spacerButton'\nimport {DOCUMENT_PANEL_PORTAL_ELEMENT} from '../../../constants'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {useDocumentTitle} from '../useDocumentTitle'\nimport {DocumentBadges} from './DocumentBadges'\nimport {DocumentStatusBarActions, HistoryStatusBarActions} from './DocumentStatusBarActions'\nimport {DocumentStatusLine} from './DocumentStatusLine'\nimport {RevisionStatusLine} from './RevisionStatusLine'\nimport {useResizeObserver} from './useResizeObserver'\n\nexport interface DocumentStatusBarProps {\n actionsBoxRef?: Ref<HTMLDivElement>\n createLinkMetadata?: CreateLinkMetadata\n}\n\nconst CONTAINER_BREAKPOINT = 480 // px\n\nexport function DocumentStatusBar(props: DocumentStatusBarProps) {\n const {actionsBoxRef, createLinkMetadata} = props\n const {editState, revisionId, onChange: onDocumentChange, existsInBundle} = useDocumentPane()\n const {selectedPerspective} = usePerspective()\n const {title} = useDocumentTitle()\n\n const CreateLinkedActions = useSanityCreateConfig().components?.documentLinkedActions\n\n // Subscribe to external timeline state changes\n const showingRevision = Boolean(revisionId)\n const showingVersion = editState?.version !== null\n\n const [collapsed, setCollapsed] = useState<boolean | null>(null)\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n\n const handleResize = useCallback((event: ResizeObserverEntry) => {\n setCollapsed(event.contentRect.width < CONTAINER_BREAKPOINT)\n }, [])\n\n useResizeObserver({element: rootElement, onResize: handleResize})\n\n const shouldRender = editState?.ready && typeof collapsed === 'boolean'\n\n let actions: React.JSX.Element | null = null\n if (createLinkMetadata && isSanityCreateLinked(createLinkMetadata) && CreateLinkedActions) {\n actions = (\n <CreateLinkedActions\n metadata={createLinkMetadata}\n panelPortalElementId={DOCUMENT_PANEL_PORTAL_ELEMENT}\n onDocumentChange={onDocumentChange}\n documentTitle={title}\n />\n )\n } else if (showingRevision) {\n actions = <HistoryStatusBarActions />\n } else if (\n (existsInBundle && showingVersion) ||\n isDraftPerspective(selectedPerspective) ||\n isPublishedPerspective(selectedPerspective)\n ) {\n actions = <DocumentStatusBarActions />\n }\n\n return (\n <Card tone={showingRevision ? 'caution' : undefined}>\n <Flex direction=\"column\" ref={setRootElement} sizing=\"border\">\n {shouldRender && (\n <Flex\n align=\"stretch\"\n gap={1}\n justify=\"space-between\"\n paddingY={2}\n paddingLeft={showingRevision ? 3 : 4}\n paddingRight={showingRevision ? 2 : 3}\n >\n <Flex align=\"center\" flex={1} gap={collapsed ? 2 : 3} wrap=\"wrap\" paddingRight={3}>\n <Flex align=\"center\">\n {showingRevision ? <RevisionStatusLine /> : <DocumentStatusLine />}\n <SpacerButton size=\"large\" />\n </Flex>\n <DocumentBadges />\n </Flex>\n\n <Flex\n align=\"flex-start\"\n justify=\"flex-end\"\n ref={actionsBoxRef}\n style={{flexShrink: 0, marginLeft: 'auto'}}\n >\n <SpacerButton size=\"large\" />\n {actions}\n </Flex>\n </Flex>\n )}\n </Flex>\n </Card>\n )\n}\n","import {isHotkey} from 'is-hotkey-esm'\nimport {\n type ElementType,\n type HTMLProps,\n memo,\n type Ref,\n useCallback,\n useMemo,\n useState,\n} from 'react'\nimport {type DocumentActionDescription, type DocumentActionProps, LegacyLayerProvider} from 'sanity'\n\nimport {RenderActionCollectionState} from '../../../components'\nimport {ActionStateDialog} from '../statusBar'\nimport {useDocumentPane} from '../useDocumentPane'\n\nexport interface KeyboardShortcutResponderProps {\n actionsBoxElement: HTMLElement | null\n activeIndex: number\n as?: ElementType\n currentMinWidth?: number\n flex?: number\n id: string\n minWidth?: number\n onActionStart: (index: number) => void\n rootRef: Ref<HTMLDivElement>\n states: DocumentActionDescription[]\n}\n\nconst KeyboardShortcutResponder = memo(function KeyboardShortcutResponder(\n props: KeyboardShortcutResponderProps & Omit<HTMLProps<HTMLDivElement>, 'as' | 'height'>,\n) {\n const {\n actionsBoxElement,\n activeIndex,\n as: As = 'div',\n children,\n id,\n onActionStart,\n onKeyDown,\n rootRef,\n states,\n ...rest\n } = props\n\n const activeAction = states[activeIndex]\n\n const handleKeyDown = useCallback(\n (event: any) => {\n const matchingStates = states.filter(\n (state) => state.shortcut && isHotkey(state.shortcut, event),\n )\n\n const matchingState = matchingStates[0]\n\n if (matchingStates.length > 1) {\n // eslint-disable-next-line no-console\n console.warn(\n `Keyboard shortcut conflict: More than one document action matches the shortcut \"${matchingState.shortcut}\"`,\n )\n }\n\n if (matchingState && !matchingState.disabled && matchingState.onHandle) {\n event.preventDefault()\n matchingState.onHandle()\n onActionStart(states.indexOf(matchingState))\n return\n }\n\n if (onKeyDown) {\n onKeyDown(event)\n }\n },\n [onActionStart, onKeyDown, states],\n )\n\n return (\n <As id={id} onKeyDown={handleKeyDown} tabIndex={-1} {...rest} ref={rootRef}>\n {children}\n {activeAction && activeAction.dialog && (\n <LegacyLayerProvider zOffset=\"paneFooter\">\n <ActionStateDialog dialog={activeAction.dialog} referenceElement={actionsBoxElement} />\n </LegacyLayerProvider>\n )}\n </As>\n )\n})\n\nexport interface DocumentActionShortcutsProps {\n actionsBoxElement: HTMLElement | null\n as?: ElementType\n currentMinWidth?: number\n debug?: boolean\n flex: number\n id: string\n minWidth: number\n rootRef: Ref<HTMLDivElement>\n}\n\nexport const DocumentActionShortcuts = memo(\n (props: DocumentActionShortcutsProps & Omit<HTMLProps<HTMLDivElement>, 'as'>) => {\n const {actionsBoxElement, as = 'div', children, ...rest} = props\n const {actions, editState} = useDocumentPane()\n const [activeIndex, setActiveIndex] = useState(-1)\n\n const onActionStart = useCallback((idx: number) => {\n setActiveIndex(idx)\n }, [])\n\n const actionProps: DocumentActionProps | null = useMemo(\n () =>\n editState && {\n ...editState,\n\n // @todo: what to call here?\n onComplete: () => undefined,\n\n // @todo: get revision string\n revision: undefined,\n },\n [editState],\n )\n\n const renderDocumentActionShortcuts = useCallback<\n (props: {states: DocumentActionDescription[]}) => React.ReactNode\n >(\n ({states}) => (\n <KeyboardShortcutResponder\n {...rest}\n activeIndex={activeIndex}\n actionsBoxElement={actionsBoxElement}\n as={as}\n onActionStart={onActionStart}\n states={states}\n >\n {children}\n </KeyboardShortcutResponder>\n ),\n [actionsBoxElement, activeIndex, as, children, onActionStart, rest],\n )\n\n if (!actionProps || !actions) return null\n\n return (\n <RenderActionCollectionState actionProps={actionProps} actions={actions}>\n {renderDocumentActionShortcuts}\n </RenderActionCollectionState>\n )\n },\n)\n\nDocumentActionShortcuts.displayName = 'Memo(DocumentActionShortcuts)'\n","import {EarthAmericasIcon, JsonIcon, LinkIcon} from '@sanity/icons'\nimport {type DocumentInspector, type DocumentInspectorMenuItem, type TFunction} from 'sanity'\n\nimport {type PaneMenuItem, type StructureToolFeatures} from '../../types'\nimport {INSPECT_ACTION_PREFIX} from './constants'\n\ninterface GetMenuItemsParams {\n currentInspector?: DocumentInspector\n features: StructureToolFeatures\n hasValue: boolean\n inspectors: DocumentInspector[]\n previewUrl?: string | null\n inspectorMenuItems: DocumentInspectorMenuItem[]\n t: TFunction\n}\n\nfunction getInspectorItems({\n currentInspector,\n hasValue,\n inspectors,\n inspectorMenuItems,\n}: GetMenuItemsParams): PaneMenuItem[] {\n return inspectors\n .map((inspector, index) => {\n const menuItem = inspectorMenuItems[index]\n\n if (!menuItem || menuItem.hidden) return null\n\n return {\n action: `${INSPECT_ACTION_PREFIX}${inspector.name}`,\n group: menuItem.showAsAction ? undefined : 'inspectors',\n icon: menuItem.icon,\n isDisabled: !hasValue,\n selected: currentInspector?.name === inspector.name,\n shortcut: menuItem.hotkeys?.join('+'),\n showAsAction: menuItem.showAsAction,\n title: menuItem.title,\n tone: menuItem.tone,\n }\n })\n .filter(Boolean) as PaneMenuItem[]\n}\n\nfunction getInspectItem({hasValue, t}: GetMenuItemsParams): PaneMenuItem {\n return {\n action: 'inspect',\n group: 'inspectors',\n title: t('document-inspector.menu-item.title'),\n icon: JsonIcon,\n isDisabled: !hasValue,\n shortcut: 'Ctrl+Alt+I',\n }\n}\n\nexport function getProductionPreviewItem({previewUrl, t}: GetMenuItemsParams): PaneMenuItem | null {\n if (!previewUrl) return null\n\n return {\n action: 'production-preview',\n group: 'links',\n title: t('production-preview.menu-item.title'),\n icon: EarthAmericasIcon,\n shortcut: 'Ctrl+Alt+O',\n }\n}\n\nexport function getMenuItems(params: GetMenuItemsParams): PaneMenuItem[] {\n const inspectorItems = getInspectorItems(params)\n const items = [\n // Get production preview item\n getProductionPreviewItem(params),\n ].filter(Boolean) as PaneMenuItem[]\n\n return [\n // Always present document menu item to copy current url to clipboard\n {\n action: 'copy-document-url',\n showAsAction: true,\n title: params.t('action.copy-document-url.label'),\n icon: LinkIcon,\n },\n ...inspectorItems,\n\n // TODO: convert to inspector or document view?\n getInspectItem(params),\n\n ...items,\n ]\n}\n","import {type SanityDocument} from '@sanity/types'\nimport {useEffect, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {BehaviorSubject, from, of} from 'rxjs'\nimport {catchError, debounceTime, distinctUntilChanged, switchMap} from 'rxjs/operators'\nimport {isRecord, useSource} from 'sanity'\n\nconst isSanityDocument = (value: unknown): value is SanityDocument =>\n isRecord(value) && typeof value._id === 'string' && typeof value._type === 'string'\n\nexport function usePreviewUrl(value: Partial<SanityDocument> | undefined): string | undefined {\n const {resolveProductionUrl} = useSource().document\n const subject = useMemo(\n () => new BehaviorSubject<Partial<SanityDocument> | undefined>(undefined),\n [],\n )\n\n useEffect(() => {\n subject.next(value)\n }, [subject, value])\n\n const resolvedUrlObservable = useMemo(() => {\n return subject.asObservable().pipe(\n // this so that the preview URL isn't fetched on every keystroke\n distinctUntilChanged(),\n debounceTime(500),\n switchMap((document) =>\n isSanityDocument(document) ? from(resolveProductionUrl({document})) : of(undefined),\n ),\n distinctUntilChanged(),\n catchError((err) => {\n const message =\n isRecord(err) && typeof err.message === 'string' ? err.message : 'Unknown error'\n throw new Error(`An error was thrown while trying to get your preview url: ${message}`)\n }),\n )\n }, [resolveProductionUrl, subject])\n\n return useObservable(resolvedUrlObservable)\n}\n","import {Card, Code, Stack, Text} from '@sanity/ui'\nimport {isDev, Translate, useTranslation} from 'sanity'\n\nimport {ErrorPane} from '../../error'\n\ninterface DocumentLayoutErrorProps {\n currentMinWidth?: number\n documentType?: string\n minWidth?: number\n paneKey: string\n value?: Record<string, unknown>\n}\n\nexport function DocumentLayoutError(props: DocumentLayoutErrorProps) {\n const {documentType, value, currentMinWidth, paneKey, minWidth} = props\n const {t} = useTranslation()\n\n return (\n <ErrorPane\n currentMinWidth={currentMinWidth}\n flex={2.5}\n minWidth={minWidth}\n paneKey={paneKey}\n title={\n <Translate\n t={t}\n i18nKey=\"panes.document-pane.document-unknown-type.title\"\n values={{documentType}}\n />\n }\n tone=\"caution\"\n >\n <Stack space={4}>\n {documentType && (\n <Text as=\"p\">\n <Translate\n t={t}\n i18nKey=\"panes.document-pane.document-unknown-type.text\"\n values={{documentType}}\n />\n </Text>\n )}\n\n {!documentType && (\n <Text as=\"p\">{t('panes.document-pane.document-unknown-type.without-schema.text')}</Text>\n )}\n\n {isDev && value && (\n /* eslint-disable i18next/no-literal-string */\n <>\n <Text as=\"p\">Here is the JSON representation of the document:</Text>\n\n <Card padding={3} overflow=\"auto\" radius={2} shadow={1} tone=\"inherit\">\n <Code language=\"json\" size={[1, 1, 2]}>\n {JSON.stringify(value, null, 2)}\n </Code>\n </Card>\n </>\n /* eslint-enable i18next/no-literal-string */\n )}\n </Stack>\n </ErrorPane>\n )\n}\n","import {Text, useToast} from '@sanity/ui'\nimport {useEffect} from 'react'\nimport {\n isDraftPerspective,\n isPublishedPerspective,\n Translate,\n usePerspective,\n useReleases,\n useTranslation,\n} from 'sanity'\n\nexport const useBundleDeletedToast = () => {\n const {selectedPerspective} = usePerspective()\n const {data: bundles} = useReleases()\n const toast = useToast()\n const {t} = useTranslation()\n\n useEffect(() => {\n if (isPublishedPerspective(selectedPerspective) || isDraftPerspective(selectedPerspective))\n return\n\n const hasCheckedOutBundleBeenArchived = selectedPerspective.state === 'archived'\n\n if (hasCheckedOutBundleBeenArchived) {\n const {\n metadata: {title: deletedBundleTitle},\n _id: deletedBundleId,\n } = selectedPerspective\n\n toast.push({\n id: `bundle-deleted-toast-${deletedBundleId}`,\n status: 'warning',\n title: (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey=\"release.deleted-toast-title\"\n values={{title: deletedBundleTitle}}\n />\n </Text>\n ),\n duration: 10000,\n })\n }\n }, [bundles?.length, toast, t, selectedPerspective])\n}\n","import {\n DialogProvider,\n type DialogProviderProps,\n Flex,\n PortalProvider,\n useElementRect,\n} from '@sanity/ui'\nimport {isHotkey} from 'is-hotkey-esm'\nimport {type ReactNode, useCallback, useMemo, useState} from 'react'\nimport {useTranslation} from 'react-i18next'\nimport {\n ChangeConnectorRoot,\n type DocumentFieldActionNode,\n type DocumentInspectorMenuItem,\n FieldActionsProvider,\n FieldActionsResolver,\n GetFormValueProvider,\n getSanityCreateLinkMetadata,\n isSanityCreateLinked,\n useGlobalCopyPasteElementHandler,\n useSanityCreateConfig,\n useZIndex,\n} from 'sanity'\nimport {type Path} from 'sanity-diff-patch'\nimport {styled} from 'styled-components'\n\nimport {TooltipDelayGroupProvider} from '../../../../ui-components'\nimport {Pane, PaneFooter, usePane, usePaneLayout, usePaneRouter} from '../../../components'\nimport {DOCUMENT_PANEL_PORTAL_ELEMENT} from '../../../constants'\nimport {structureLocaleNamespace} from '../../../i18n'\nimport {useStructureTool} from '../../../useStructureTool'\nimport {\n DOCUMENT_INSPECTOR_MIN_WIDTH,\n DOCUMENT_PANEL_INITIAL_MIN_WIDTH,\n DOCUMENT_PANEL_MIN_WIDTH,\n} from '../constants'\nimport {DocumentInspectorMenuItemsResolver} from '../DocumentInspectorMenuItemsResolver'\nimport {DocumentOperationResults} from '../DocumentOperationResults'\nimport {DocumentPanel} from '../documentPanel'\nimport {Banner} from '../documentPanel/banners/Banner'\nimport {DocumentPanelHeader} from '../documentPanel/header'\nimport {DocumentActionShortcuts} from '../keyboardShortcuts'\nimport {getMenuItems} from '../menuItems'\nimport {DocumentStatusBar} from '../statusBar'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {usePreviewUrl} from '../usePreviewUrl'\nimport {DocumentLayoutError} from './DocumentLayoutError'\nimport {useBundleDeletedToast} from './useBundleDeletedToast'\n\nconst EMPTY_ARRAY: [] = []\n\nconst DIALOG_PROVIDER_POSITION: DialogProviderProps['position'] = [\n // We use the `position: fixed` for dialogs on narrower screens (first two media breakpoints).\n 'fixed',\n 'fixed',\n // And we use the `position: absolute` strategy (within panes) on wide screens.\n 'absolute',\n]\n\nconst StyledChangeConnectorRoot = styled(ChangeConnectorRoot)`\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n min-width: 0;\n`\n\nexport function DocumentLayout() {\n const {\n changesOpen,\n documentId,\n documentType,\n fieldActions,\n focusPath,\n inspectOpen,\n inspector,\n inspectors,\n onFocus,\n onHistoryOpen,\n onMenuAction,\n onPathOpen,\n paneKey,\n schemaType,\n value,\n isInitialValueLoading,\n ready,\n } = useDocumentPane()\n const {params: paneParams} = usePaneRouter()\n const {features} = useStructureTool()\n const {t} = useTranslation(structureLocaleNamespace)\n const {collapsed: layoutCollapsed} = usePaneLayout()\n\n const zOffsets = useZIndex()\n const previewUrl = usePreviewUrl(value)\n\n const createLinkMetadata = getSanityCreateLinkMetadata(value)\n const {\n documentLinkedBannerContent: CreateLinkedBannerContent,\n startInCreateBanner: StartInCreateBanner,\n } = useSanityCreateConfig().components ?? {}\n\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const [footerElement, setFooterElement] = useState<HTMLDivElement | null>(null)\n const [headerElement, setHeaderElement] = useState<HTMLDivElement | null>(null)\n\n const [actionsBoxElement, setActionsBoxElement] = useState<HTMLDivElement | null>(null)\n const [documentPanelPortalElement, setDocumentPanelPortalElement] = useState<HTMLElement | null>(\n null,\n )\n\n useGlobalCopyPasteElementHandler({\n element: rootElement,\n focusPath,\n value,\n })\n useBundleDeletedToast()\n\n const [inspectorMenuItems, setInspectorMenuItems] = useState<DocumentInspectorMenuItem[]>([])\n const [rootFieldActionNodes, setRootFieldActionNodes] = useState<DocumentFieldActionNode[]>([])\n\n const footerRect = useElementRect(footerElement)\n const headerRect = useElementRect(headerElement)\n const footerHeight = footerRect?.height\n const headerHeight = headerRect?.height\n const currentMinWidth =\n DOCUMENT_PANEL_INITIAL_MIN_WIDTH + (inspector ? DOCUMENT_INSPECTOR_MIN_WIDTH : 0)\n const minWidth = DOCUMENT_PANEL_MIN_WIDTH + (inspector ? DOCUMENT_INSPECTOR_MIN_WIDTH : 0)\n\n const currentInspector = useMemo(\n () => inspectors?.find((i) => i.name === inspector?.name),\n [inspectors, inspector?.name],\n )\n\n const hasValue = Boolean(value)\n\n const menuItems = useMemo(\n () =>\n getMenuItems({\n currentInspector,\n features,\n hasValue,\n inspectorMenuItems,\n inspectors,\n previewUrl,\n t,\n }),\n [currentInspector, features, hasValue, inspectorMenuItems, inspectors, previewUrl, t],\n )\n\n const handleKeyUp = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n for (const item of menuItems) {\n if (item.shortcut) {\n if (isHotkey(item.shortcut, event)) {\n event.preventDefault()\n event.stopPropagation()\n onMenuAction(item)\n return\n }\n }\n }\n },\n [onMenuAction, menuItems],\n )\n\n const onConnectorSetFocus = useCallback(\n (path: Path) => {\n onPathOpen(path)\n onFocus(path)\n },\n [onPathOpen, onFocus],\n )\n\n const portalElements = useMemo(\n () => ({[DOCUMENT_PANEL_PORTAL_ELEMENT]: documentPanelPortalElement}),\n [documentPanelPortalElement],\n )\n\n if (!schemaType) {\n return (\n <DocumentLayoutError\n currentMinWidth={currentMinWidth}\n documentType={documentType}\n minWidth={minWidth}\n paneKey={paneKey}\n value={value}\n />\n )\n }\n\n return (\n <GetFormValueProvider value={value}>\n {inspectors.length > 0 && (\n <DocumentInspectorMenuItemsResolver\n documentId={documentId}\n documentType={documentType}\n inspectors={inspectors}\n onMenuItems={setInspectorMenuItems}\n />\n )}\n\n {fieldActions.length > 0 && schemaType && (\n <FieldActionsResolver\n actions={fieldActions}\n documentId={documentId}\n documentType={documentType}\n onActions={setRootFieldActionNodes}\n path={EMPTY_ARRAY}\n schemaType={schemaType}\n />\n )}\n\n <FieldActionsProvider actions={rootFieldActionNodes} path={EMPTY_ARRAY}>\n <DocumentActionShortcuts\n actionsBoxElement={actionsBoxElement}\n as={Pane}\n currentMinWidth={currentMinWidth}\n data-testid=\"document-pane\"\n flex={2.5}\n id={paneKey}\n minWidth={minWidth}\n onKeyUp={handleKeyUp}\n rootRef={setRootElement}\n >\n <DocumentPanelHeader ref={setHeaderElement} menuItems={menuItems} />\n\n {createLinkMetadata &&\n isSanityCreateLinked(createLinkMetadata) &&\n CreateLinkedBannerContent && (\n <ShowWhenPaneOpen>\n <Banner\n tone=\"transparent\"\n data-test-id=\"sanity-create-read-only-banner\"\n content={<CreateLinkedBannerContent metadata={createLinkMetadata} />}\n />\n </ShowWhenPaneOpen>\n )}\n\n <DialogProvider position={DIALOG_PROVIDER_POSITION} zOffset={zOffsets.paneDialog}>\n <Flex direction=\"column\" flex={1} height={layoutCollapsed ? undefined : 'fill'}>\n <StyledChangeConnectorRoot\n data-testid=\"change-connector-root\"\n isReviewChangesOpen={changesOpen && paneParams?.changesInspectorTab === 'review'}\n onOpenReviewChanges={onHistoryOpen}\n onSetFocus={onConnectorSetFocus}\n >\n <DocumentPanel\n footerHeight={footerHeight || null}\n headerHeight={headerHeight || null}\n isInspectOpen={inspectOpen}\n rootElement={rootElement}\n setDocumentPanelPortalElement={setDocumentPanelPortalElement}\n />\n </StyledChangeConnectorRoot>\n </Flex>\n </DialogProvider>\n\n {/* These providers are added because we want the dialogs in `DocumentStatusBar` to be scoped to the document pane. */}\n {/* The portal element comes from `DocumentPanel`. */}\n <PortalProvider __unstable_elements={portalElements}>\n <DialogProvider position={DIALOG_PROVIDER_POSITION} zOffset={zOffsets.portal}>\n {StartInCreateBanner && (\n <ShowWhenPaneOpen>\n <StartInCreateBanner\n document={value}\n documentId={documentId}\n documentType={schemaType}\n documentReady={ready}\n isInitialValueLoading={!!isInitialValueLoading}\n panelPortalElementId={DOCUMENT_PANEL_PORTAL_ELEMENT}\n />\n </ShowWhenPaneOpen>\n )}\n <PaneFooter ref={setFooterElement}>\n <TooltipDelayGroupProvider>\n <DocumentStatusBar\n actionsBoxRef={setActionsBoxElement}\n createLinkMetadata={createLinkMetadata}\n />\n </TooltipDelayGroupProvider>\n </PaneFooter>\n </DialogProvider>\n </PortalProvider>\n <DocumentOperationResults />\n </DocumentActionShortcuts>\n </FieldActionsProvider>\n </GetFormValueProvider>\n )\n}\n\n/**\n * Prevents whatever is inside of it from rendering when the pane is collapsed.\n * Needed locally as DocumentLayout does lives outside PaneContext, but is provided _somewhere_ within it.\n */\nfunction ShowWhenPaneOpen(props: {children: ReactNode}) {\n const {collapsed} = usePane()\n return collapsed ? null : props.children\n}\n","import {type ComponentType} from 'react'\nimport {type DocumentLayoutProps, type PluginOptions, useMiddlewareComponents} from 'sanity'\n\nimport {DocumentLayout} from './DocumentLayout'\n\nfunction pick(plugin: PluginOptions) {\n return plugin.document?.components?.unstable_layout as ComponentType<\n Omit<DocumentLayoutProps, 'renderDefault'>\n >\n}\n\n/**\n * A hook that returns the document layout composed\n * by the Components API (`document.components.layout`).\n */\nexport function useDocumentLayoutComponent(): ComponentType<\n Omit<DocumentLayoutProps, 'renderDefault'>\n> {\n return useMiddlewareComponents({\n pick,\n defaultComponent: DocumentLayout,\n })\n}\n","import {defineEvent} from '@sanity/telemetry'\n\n/**\n * @internal\n */\nexport const DocumentURLCopied = defineEvent({\n name: 'DocumentURLCopied',\n version: 1,\n description: 'User copied document URL to clipboard',\n})\n\n/**\n * When a draft is successfully created\n * @internal\n */\nexport const CreatedDraft = defineEvent({\n name: 'New Draft Created',\n version: 1,\n description: 'User created a new draft',\n})\n","import {type Template} from 'sanity'\n\ninterface InitialValueOptions {\n documentType: string\n panePayload?: unknown\n templateName?: string\n templateParams?: Record<string, unknown>\n urlTemplate?: string\n}\n\n/**\n * @internal\n */\nexport function getInitialValueTemplateOpts(\n templates: Template[],\n opts: InitialValueOptions,\n): {templateName: string; templateParams: Record<string, unknown>} {\n const payload = opts.panePayload || {}\n const structureNodeTemplate = opts.templateName\n\n if (opts.urlTemplate && structureNodeTemplate && structureNodeTemplate !== opts.urlTemplate) {\n // eslint-disable-next-line no-console\n console.warn(\n `Conflicting templates: URL says \"${opts.urlTemplate}\", structure node says \"${structureNodeTemplate}\". Using \"${structureNodeTemplate}\".`,\n )\n }\n\n const template = structureNodeTemplate || opts.urlTemplate\n const typeTemplates = templates.filter((t) => t.schemaType === opts.documentType)\n\n const templateParams = {\n ...opts.templateParams,\n ...(typeof payload === 'object' ? payload || {} : {}),\n }\n\n let templateName = template\n\n // If we have not specified a specific template, and we only have a single\n // template available for a schema type, use it\n if (!template && typeTemplates.length === 1) {\n templateName = typeTemplates[0].id\n }\n\n return {templateName: templateName!, templateParams}\n}\n","/* eslint-disable camelcase */\nimport {isActionEnabled} from '@sanity/schema/_internal'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {\n type ObjectSchemaType,\n type Path,\n type SanityDocument,\n type SanityDocumentLike,\n} from '@sanity/types'\nimport {useToast} from '@sanity/ui'\nimport {fromString as pathFromString, pathFor, resolveKeyedPath} from '@sanity/util/paths'\nimport {omit, throttle} from 'lodash'\nimport {memo, useCallback, useEffect, useInsertionEffect, useMemo, useRef, useState} from 'react'\nimport deepEquals from 'react-fast-compare'\nimport {\n type DocumentActionsContext,\n type DocumentActionsVersionType,\n type DocumentFieldAction,\n type DocumentInspector,\n type DocumentPresence,\n EMPTY_ARRAY,\n getDraftId,\n getExpandOperations,\n getPublishedId,\n getReleaseIdFromReleaseDocumentId,\n isReleaseDocument,\n isReleaseScheduledOrScheduling,\n isSanityCreateLinkedDocument,\n isVersionId,\n type OnPathFocusPayload,\n type PartialContext,\n type PatchEvent,\n setAtPath,\n type StateTree,\n toMutationPatches,\n useConnectionState,\n useCopyPaste,\n useDocumentOperation,\n useDocumentValuePermissions,\n useDocumentVersions,\n useEditState,\n useFormState,\n useInitialValue,\n usePerspective,\n usePresenceStore,\n useSchema,\n useSource,\n useTemplates,\n useTranslation,\n useUnique,\n useValidationStatus,\n} from 'sanity'\nimport {DocumentPaneContext} from 'sanity/_singletons'\n\nimport {usePaneRouter} from '../../components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {type PaneMenuItem} from '../../types'\nimport {useStructureTool} from '../../useStructureTool'\nimport {CreatedDraft, DocumentURLCopied} from './__telemetry__'\nimport {\n DEFAULT_MENU_ITEM_GROUPS,\n EMPTY_PARAMS,\n HISTORY_INSPECTOR_NAME,\n INSPECT_ACTION_PREFIX,\n} from './constants'\nimport {type DocumentPaneContextValue} from './DocumentPaneContext'\nimport {getInitialValueTemplateOpts} from './getInitialValueTemplateOpts'\nimport {\n type DocumentPaneProviderProps as DocumentPaneProviderWrapperProps,\n type HistoryStoreProps,\n} from './types'\nimport {usePreviewUrl} from './usePreviewUrl'\n\ninterface DocumentPaneProviderProps extends DocumentPaneProviderWrapperProps {\n historyStore: HistoryStoreProps\n}\n\n/**\n * @internal\n */\n// eslint-disable-next-line complexity, max-statements\nexport const DocumentPaneProvider = memo((props: DocumentPaneProviderProps) => {\n const {children, index, pane, paneKey, onFocusPath, forcedVersion} = props\n const schema = useSchema()\n const templates = useTemplates()\n const {setDocumentMeta} = useCopyPaste()\n const {\n __internal_tasks,\n document: {\n actions: documentActions,\n badges: documentBadges,\n unstable_fieldActions: fieldActionsResolver,\n unstable_languageFilter: languageFilterResolver,\n inspectors: inspectorsResolver,\n },\n } = useSource()\n const telemetry = useTelemetry()\n const presenceStore = usePresenceStore()\n const paneRouter = usePaneRouter()\n const setPaneParams = paneRouter.setParams\n const {features} = useStructureTool()\n const {push: pushToast} = useToast()\n const {\n options,\n menuItemGroups = DEFAULT_MENU_ITEM_GROUPS,\n title = null,\n views: viewsProp = [],\n } = pane\n const paneOptions = useUnique(options)\n const documentIdRaw = paneOptions.id\n const documentId = getPublishedId(documentIdRaw)\n const documentType = options.type\n const params = useUnique(paneRouter.params) || EMPTY_PARAMS\n\n const perspective = usePerspective()\n\n const {isReleaseLocked, selectedReleaseId, selectedPerspectiveName} = useMemo(() => {\n if (forcedVersion) {\n return forcedVersion\n }\n return {\n selectedPerspectiveName: perspective.selectedPerspectiveName,\n selectedReleaseId: perspective.selectedReleaseId,\n isReleaseLocked: isReleaseDocument(perspective.selectedPerspective)\n ? isReleaseScheduledOrScheduling(perspective.selectedPerspective)\n : false,\n }\n }, [\n forcedVersion,\n perspective.selectedPerspectiveName,\n perspective.selectedReleaseId,\n perspective.selectedPerspective,\n ])\n\n const panePayload = useUnique(paneRouter.payload)\n const {templateName, templateParams} = useMemo(\n () =>\n getInitialValueTemplateOpts(templates, {\n documentType,\n templateName: paneOptions.template,\n templateParams: paneOptions.templateParameters,\n panePayload,\n urlTemplate: params.template,\n }),\n [documentType, paneOptions, params, panePayload, templates],\n )\n const initialValueRaw = useInitialValue({\n documentId,\n documentType,\n templateName,\n templateParams,\n version: selectedReleaseId,\n })\n\n const initialValue = useUnique(initialValueRaw)\n const isInitialValueLoading = initialValue.loading\n\n const {patch} = useDocumentOperation(documentId, documentType, selectedReleaseId)\n const schemaType = schema.get(documentType) as ObjectSchemaType | undefined\n const editState = useEditState(documentId, documentType, 'default', selectedReleaseId)\n const {validation: validationRaw} = useValidationStatus(\n documentId,\n documentType,\n selectedReleaseId,\n )\n const connectionState = useConnectionState(documentId, documentType, {\n version: selectedReleaseId,\n })\n const {data: documentVersions} = useDocumentVersions({documentId})\n\n let value: SanityDocumentLike = initialValue.value\n\n switch (true) {\n case typeof selectedReleaseId !== 'undefined':\n value = editState.version || editState.draft || editState.published || value\n break\n case selectedPerspectiveName === 'published':\n value = editState.published || editState.draft || value\n break\n default:\n value = editState?.draft || editState?.published || value\n }\n\n const [isDeleting, setIsDeleting] = useState(false)\n\n const getDocumentVersionType = useCallback(() => {\n let version: DocumentActionsVersionType\n switch (true) {\n case Boolean(params.rev):\n version = 'revision'\n break\n case selectedReleaseId && isVersionId(value._id):\n version = 'version'\n break\n case selectedPerspectiveName === 'published':\n version = 'published'\n break\n default:\n version = 'draft'\n }\n\n return version\n }, [selectedPerspectiveName, selectedReleaseId, params, value._id])\n\n const actionsPerspective = useMemo(() => getDocumentVersionType(), [getDocumentVersionType])\n\n const documentActionsProps: PartialContext<DocumentActionsContext> = useMemo(\n () => ({\n schemaType: documentType,\n documentId,\n versionType: actionsPerspective,\n ...(selectedReleaseId && {versionName: selectedReleaseId}),\n }),\n [documentType, documentId, actionsPerspective, selectedReleaseId],\n )\n\n // Resolve document actions\n const actions = useMemo(\n () => documentActions(documentActionsProps),\n [documentActions, documentActionsProps],\n )\n\n // Resolve document badges\n const badges = useMemo(\n () => documentBadges({schemaType: documentType, documentId}),\n [documentBadges, documentId, documentType],\n )\n\n // Resolve document language filter\n const languageFilter = useMemo(\n () => languageFilterResolver({schemaType: documentType, documentId}),\n [documentId, documentType, languageFilterResolver],\n )\n\n const validation = useUnique(validationRaw)\n const views = useUnique(viewsProp)\n\n const [focusPath, setFocusPath] = useState<Path>(() =>\n params.path ? pathFromString(params.path) : EMPTY_ARRAY,\n )\n const focusPathRef = useRef<Path>([])\n const activeViewId = params.view || (views[0] && views[0].id) || null\n // TODO: Deprecate this, it could be replaced by an internal state in the HistorySelector inspector.\n const [timelineMode, setTimelineMode] = useState<'since' | 'rev' | 'closed'>('closed')\n\n const {\n store: timelineStore,\n error: timelineError,\n ready: timelineReady,\n revisionId,\n revisionDocument,\n onOlderRevision,\n sinceDocument,\n isPristine,\n lastNonDeletedRevId,\n } = props.historyStore\n\n /**\n * Determine if the current document is deleted.\n *\n * When the timeline is available – we check for the absence of an editable document pair\n * (both draft + published versions) as well as a non 'pristine' timeline (i.e. a timeline that consists\n * of at least one chunk).\n *\n * In the _very rare_ case where the timeline cannot be loaded – we skip this check and always assume\n * the document is NOT deleted. Since we can't accurately determine document deleted status without history,\n * skipping this check means that in these cases, users will at least be able to create new documents\n * without them being incorrectly marked as deleted.\n */\n const isDeleted = useMemo(() => {\n if (!timelineReady) {\n return false\n }\n return Boolean(!editState?.draft && !editState?.published && !editState?.version) && !isPristine\n }, [editState?.draft, editState?.published, editState?.version, isPristine, timelineReady])\n\n // TODO: this may cause a lot of churn. May be a good idea to prevent these\n // requests unless the menu is open somehow\n const previewUrl = usePreviewUrl(value)\n\n const [presence, setPresence] = useState<DocumentPresence[]>([])\n useEffect(() => {\n const subscription = presenceStore.documentPresence(value._id).subscribe((nextPresence) => {\n setPresence(nextPresence)\n })\n return () => {\n subscription.unsubscribe()\n }\n }, [presenceStore, value._id])\n\n const inspectors: DocumentInspector[] = useMemo(\n () => inspectorsResolver({documentId, documentType}),\n [documentId, documentType, inspectorsResolver],\n )\n\n const [inspectorName, setInspectorName] = useState<string | null>(() => params.inspect || null)\n\n // Handle inspector name changes from URL\n const inspectParamRef = useRef<string | undefined>(params.inspect)\n useEffect(() => {\n if (inspectParamRef.current !== params.inspect) {\n inspectParamRef.current = params.inspect\n setInspectorName(params.inspect || null)\n }\n }, [params.inspect])\n\n const currentInspector = inspectors?.find((i) => i.name === inspectorName)\n const resolvedChangesInspector = inspectors.find((i) => i.name === HISTORY_INSPECTOR_NAME)\n\n const changesOpen = currentInspector?.name === HISTORY_INSPECTOR_NAME\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n const inspectOpen = params.inspect === 'on'\n const compareValue: Partial<SanityDocument> | null = changesOpen\n ? sinceDocument\n : editState?.published || null\n\n const fieldActions: DocumentFieldAction[] = useMemo(\n () => (schemaType ? fieldActionsResolver({documentId, documentType, schemaType}) : []),\n [documentId, documentType, fieldActionsResolver, schemaType],\n )\n\n /**\n * Note that in addition to connection and edit state, we also wait for a valid document timeline\n * range to be loaded. This means if we're loading an older revision, the full transaction range must\n * be loaded in full prior to the document being displayed.\n *\n * Previously, visiting studio URLs with timeline params would display the 'current' document and then\n * 'snap' in the older revision, which was disorienting and could happen mid-edit.\n *\n * In the event that the timeline cannot be loaded due to TimelineController errors or blocked requests,\n * we skip this readiness check to ensure that users aren't locked out of editing. Trying to select\n * a timeline revision in this instance will display an error localized to the popover itself.\n */\n const ready =\n connectionState === 'connected' &&\n editState.ready &&\n (!params.rev || timelineReady || !!timelineError)\n\n const displayed: Partial<SanityDocument> | undefined = useMemo(\n () => (onOlderRevision ? revisionDocument || {_id: value._id, _type: value._type} : value),\n [onOlderRevision, revisionDocument, value],\n )\n\n const setTimelineRange = useCallback(\n (newSince: string, newRev: string | null) => {\n setPaneParams({\n ...params,\n since: newSince,\n rev: newRev || undefined,\n })\n },\n [params, setPaneParams],\n )\n\n const handleBlur = useCallback(\n (blurredPath: Path) => {\n if (disableBlurRef.current) {\n return\n }\n\n setFocusPath(EMPTY_ARRAY)\n\n if (focusPathRef.current !== EMPTY_ARRAY) {\n focusPathRef.current = EMPTY_ARRAY\n onFocusPath?.(EMPTY_ARRAY)\n }\n\n // note: we're deliberately not syncing presence here since it would make the user avatar disappear when a\n // user clicks outside a field without focusing another one\n },\n [onFocusPath, setFocusPath],\n )\n\n const patchRef = useRef<(event: PatchEvent) => void>(() => {\n throw new Error(\n 'Attempted to patch the Sanity document during initial render or in an `useInsertionEffect`. Input components should only call `onChange()` in a useEffect or an event handler.',\n )\n })\n useInsertionEffect(() => {\n // note: this needs to happen in an insertion effect to make sure we're ready to receive patches from child components when they run their effects initially\n // in case they do e.g. `useEffect(() => props.onChange(set(\"foo\")), [])`\n // Note: although we discourage patch-on-mount, we still support it.\n patchRef.current = (event: PatchEvent) => {\n // when creating a new draft\n if (!editState.draft && !editState.published && !editState.version) {\n telemetry.log(CreatedDraft)\n }\n patch.execute(toMutationPatches(event.patches), initialValue.value)\n }\n }, [\n editState.draft,\n editState.published,\n editState.version,\n initialValue.value,\n patch,\n telemetry,\n ])\n\n const handleChange = useCallback((event: PatchEvent) => patchRef.current(event), [])\n\n const closeInspector = useCallback(\n (closeInspectorName?: string) => {\n // inspector?: DocumentInspector\n const inspector = closeInspectorName && inspectors.find((i) => i.name === closeInspectorName)\n\n if (closeInspectorName && !inspector) {\n console.warn(`No inspector named \"${closeInspectorName}\"`)\n return\n }\n\n if (!currentInspector) {\n return\n }\n\n if (inspector) {\n const result = inspector.onClose?.({params}) ?? {params}\n\n setInspectorName(null)\n inspectParamRef.current = undefined\n\n setPaneParams({...result.params, inspect: undefined})\n\n return\n }\n\n if (currentInspector) {\n const result = currentInspector.onClose?.({params}) ?? {params}\n\n setInspectorName(null)\n inspectParamRef.current = undefined\n\n setPaneParams({...result.params, inspect: undefined})\n }\n },\n [currentInspector, inspectors, params, setPaneParams],\n )\n\n const openInspector = useCallback(\n (nextInspectorName: string, paneParams?: Record<string, string>) => {\n const nextInspector = inspectors.find((i) => i.name === nextInspectorName)\n\n if (!nextInspector) {\n console.warn(`No inspector named \"${nextInspectorName}\"`)\n return\n }\n\n // if the inspector is already open, only update params\n if (currentInspector?.name === nextInspector.name) {\n setPaneParams({...params, ...paneParams, inspect: nextInspector.name})\n return\n }\n\n let currentParams = params\n\n if (currentInspector) {\n const closeResult = nextInspector.onClose?.({params: currentParams}) ?? {\n params: currentParams,\n }\n\n currentParams = closeResult.params\n }\n\n const result = nextInspector.onOpen?.({params: currentParams}) ?? {params: currentParams}\n\n setInspectorName(nextInspector.name)\n inspectParamRef.current = nextInspector.name\n\n setPaneParams({...result.params, ...paneParams, inspect: nextInspector.name})\n },\n [currentInspector, inspectors, params, setPaneParams],\n )\n\n const handleHistoryClose = useCallback(() => {\n if (resolvedChangesInspector) {\n closeInspector(resolvedChangesInspector.name)\n }\n }, [closeInspector, resolvedChangesInspector])\n\n const handleHistoryOpen = useCallback(() => {\n if (!features.reviewChanges) {\n return\n }\n\n if (resolvedChangesInspector) {\n openInspector(resolvedChangesInspector.name, {changesInspectorTab: 'review'})\n }\n }, [features.reviewChanges, openInspector, resolvedChangesInspector])\n\n const handlePaneClose = useCallback(() => paneRouter.closeCurrent(), [paneRouter])\n\n const handlePaneSplit = useCallback(() => paneRouter.duplicateCurrent(), [paneRouter])\n\n const toggleLegacyInspect = useCallback(\n (toggle = !inspectOpen) => {\n if (toggle) {\n setPaneParams({...params, inspect: 'on'})\n } else {\n setPaneParams(omit(params, 'inspect'))\n }\n },\n [inspectOpen, params, setPaneParams],\n )\n\n const handleMenuAction = useCallback(\n (item: PaneMenuItem) => {\n if (item.action === 'production-preview' && previewUrl) {\n window.open(previewUrl)\n return true\n }\n\n if (item.action === 'copy-document-url' && navigator) {\n telemetry.log(DocumentURLCopied)\n // Chose to copy the user's current URL instead of\n // the document's edit intent link because\n // of bugs when resolving a document that has\n // multiple access paths within Structure\n navigator.clipboard.writeText(window.location.toString())\n pushToast({\n id: 'copy-document-url',\n status: 'info',\n title: t('panes.document-operation-results.operation-success_copy-url'),\n })\n return true\n }\n\n if (item.action === 'inspect') {\n toggleLegacyInspect(true)\n return true\n }\n\n if (item.action === 'reviewChanges') {\n handleHistoryOpen()\n return true\n }\n\n if (typeof item.action === 'string' && item.action.startsWith(INSPECT_ACTION_PREFIX)) {\n const nextInspectorName = item.action.slice(INSPECT_ACTION_PREFIX.length)\n const nextInspector = inspectors.find((i) => i.name === nextInspectorName)\n\n if (nextInspector) {\n if (nextInspector.name === inspectorName) {\n closeInspector(nextInspector.name)\n } else {\n openInspector(nextInspector.name)\n }\n return true\n }\n }\n\n return false\n },\n [\n t,\n closeInspector,\n handleHistoryOpen,\n inspectorName,\n inspectors,\n openInspector,\n previewUrl,\n toggleLegacyInspect,\n pushToast,\n telemetry,\n ],\n )\n\n const handleLegacyInspectClose = useCallback(\n () => toggleLegacyInspect(false),\n [toggleLegacyInspect],\n )\n\n const [openPath, onSetOpenPath] = useState<Path>([])\n const [fieldGroupState, onSetFieldGroupState] = useState<StateTree<string>>()\n const [collapsedPaths, onSetCollapsedPath] = useState<StateTree<boolean>>()\n const [collapsedFieldSets, onSetCollapsedFieldSets] = useState<StateTree<boolean>>()\n\n const handleOnSetCollapsedPath = useCallback((path: Path, collapsed: boolean) => {\n onSetCollapsedPath((prevState) => setAtPath(prevState, path, collapsed))\n }, [])\n\n const handleOnSetCollapsedFieldSet = useCallback((path: Path, collapsed: boolean) => {\n onSetCollapsedFieldSets((prevState) => setAtPath(prevState, path, collapsed))\n }, [])\n\n const handleSetActiveFieldGroup = useCallback(\n (path: Path, groupName: string) =>\n onSetFieldGroupState((prevState) => setAtPath(prevState, path, groupName)),\n [],\n )\n\n const requiredPermission = value._createdAt ? 'update' : 'create'\n const liveEdit = Boolean(schemaType?.liveEdit)\n const docId = value._id ? value._id : 'dummy-id'\n const docPermissionsInput = useMemo(() => {\n return {\n ...value,\n _id: liveEdit ? getPublishedId(docId) : getDraftId(docId),\n }\n }, [liveEdit, value, docId])\n\n const [permissions, isPermissionsLoading] = useDocumentValuePermissions({\n document: docPermissionsInput,\n permission: requiredPermission,\n })\n\n const isCreateLinked = isSanityCreateLinkedDocument(value)\n const isNonExistent = !value?._id\n const existsInBundle =\n typeof selectedReleaseId !== 'undefined' &&\n documentVersions.some(\n (version) => getReleaseIdFromReleaseDocumentId(version._id) === selectedReleaseId,\n )\n\n const readOnly = useMemo(() => {\n const hasNoPermission = !isPermissionsLoading && !permissions?.granted\n const updateActionDisabled = !isActionEnabled(schemaType!, 'update')\n const createActionDisabled = isNonExistent && !isActionEnabled(schemaType!, 'create')\n const reconnecting = connectionState === 'reconnecting'\n const isLocked = editState.transactionSyncLock?.enabled\n // in cases where the document has drafts but the schema is live edit,\n // there is a risk of data loss, so we disable editing in this case\n const isLiveEditAndDraftPerspective = liveEdit && !selectedPerspectiveName\n const isLiveEditAndPublishedPerspective = liveEdit && selectedPerspectiveName === 'published'\n const isSystemPerspectiveApplied =\n isLiveEditAndPublishedPerspective || (selectedPerspectiveName ? existsInBundle : true)\n\n return (\n !isSystemPerspectiveApplied ||\n !ready ||\n revisionId !== null ||\n hasNoPermission ||\n updateActionDisabled ||\n createActionDisabled ||\n reconnecting ||\n isLocked ||\n isDeleting ||\n isDeleted ||\n isLiveEditAndDraftPerspective ||\n isCreateLinked ||\n isReleaseLocked\n )\n }, [\n isPermissionsLoading,\n permissions?.granted,\n schemaType,\n isNonExistent,\n connectionState,\n editState.transactionSyncLock?.enabled,\n liveEdit,\n selectedPerspectiveName,\n existsInBundle,\n ready,\n revisionId,\n isDeleting,\n isDeleted,\n isCreateLinked,\n isReleaseLocked,\n ])\n\n const formState = useFormState({\n schemaType: schemaType!,\n documentValue: displayed,\n readOnly,\n comparisonValue: compareValue,\n focusPath,\n openPath,\n collapsedPaths,\n presence,\n validation,\n collapsedFieldSets,\n fieldGroupState,\n changesOpen,\n })\n\n useEffect(() => {\n setDocumentMeta({\n documentId,\n documentType,\n schemaType: schemaType!,\n onChange: handleChange,\n })\n }, [documentId, documentType, schemaType, handleChange, setDocumentMeta])\n\n const formStateRef = useRef(formState)\n useEffect(() => {\n formStateRef.current = formState\n }, [formState])\n\n const setOpenPath = useCallback(\n (path: Path) => {\n const ops = getExpandOperations(formStateRef.current!, path)\n ops.forEach((op) => {\n if (op.type === 'expandPath') {\n onSetCollapsedPath((prevState) => setAtPath(prevState, op.path, false))\n }\n if (op.type === 'expandFieldSet') {\n onSetCollapsedFieldSets((prevState) => setAtPath(prevState, op.path, false))\n }\n if (op.type === 'setSelectedGroup') {\n onSetFieldGroupState((prevState) => setAtPath(prevState, op.path, op.groupName))\n }\n })\n onSetOpenPath(path)\n },\n [formStateRef],\n )\n\n const updatePresence = useCallback(\n (nextFocusPath: Path, payload?: OnPathFocusPayload) => {\n presenceStore.setLocation([\n {\n type: 'document',\n documentId: value._id,\n path: nextFocusPath,\n lastActiveAt: new Date().toISOString(),\n selection: payload?.selection,\n },\n ])\n },\n [presenceStore, value._id],\n )\n\n const updatePresenceThrottled = useMemo(\n () => throttle(updatePresence, 1000, {leading: true, trailing: true}),\n [updatePresence],\n )\n\n const handleFocus = useCallback(\n (_nextFocusPath: Path, payload?: OnPathFocusPayload) => {\n const nextFocusPath = pathFor(_nextFocusPath)\n if (nextFocusPath !== focusPathRef.current) {\n setFocusPath(pathFor(nextFocusPath))\n setOpenPath(pathFor(nextFocusPath.slice(0, -1)))\n focusPathRef.current = nextFocusPath\n onFocusPath?.(nextFocusPath)\n }\n updatePresenceThrottled(nextFocusPath, payload)\n },\n [onFocusPath, setOpenPath, updatePresenceThrottled],\n )\n\n const documentPane: DocumentPaneContextValue = useMemo(\n () =>\n ({\n actions,\n activeViewId,\n badges,\n changesOpen,\n closeInspector,\n collapsedFieldSets,\n collapsedPaths,\n compareValue,\n connectionState,\n displayed,\n documentId,\n documentIdRaw,\n documentType,\n documentVersions,\n editState,\n existsInBundle,\n fieldActions,\n focusPath,\n inspector: currentInspector || null,\n inspectors,\n __internal_tasks,\n onBlur: handleBlur,\n onChange: handleChange,\n onFocus: handleFocus,\n onPathOpen: setOpenPath,\n onHistoryClose: handleHistoryClose,\n onHistoryOpen: handleHistoryOpen,\n onInspectClose: handleLegacyInspectClose,\n onMenuAction: handleMenuAction,\n onPaneClose: handlePaneClose,\n onPaneSplit: handlePaneSplit,\n onSetActiveFieldGroup: handleSetActiveFieldGroup,\n onSetCollapsedPath: handleOnSetCollapsedPath,\n onSetCollapsedFieldSet: handleOnSetCollapsedFieldSet,\n openInspector,\n openPath,\n index,\n inspectOpen,\n validation,\n menuItemGroups: menuItemGroups || [],\n paneKey,\n previewUrl,\n ready,\n schemaType: schemaType!,\n isPermissionsLoading,\n isInitialValueLoading,\n permissions,\n setTimelineMode,\n setTimelineRange,\n setIsDeleting,\n isDeleting,\n isDeleted,\n timelineError,\n timelineMode,\n timelineStore,\n title,\n value,\n selectedReleaseId,\n views,\n formState,\n unstable_languageFilter: languageFilter,\n\n // History specific\n revisionId,\n lastNonDeletedRevId,\n }) satisfies DocumentPaneContextValue,\n [\n actions,\n activeViewId,\n badges,\n changesOpen,\n closeInspector,\n collapsedFieldSets,\n collapsedPaths,\n compareValue,\n connectionState,\n displayed,\n documentId,\n documentIdRaw,\n documentType,\n documentVersions,\n editState,\n existsInBundle,\n fieldActions,\n focusPath,\n currentInspector,\n inspectors,\n __internal_tasks,\n handleBlur,\n handleChange,\n handleFocus,\n setOpenPath,\n handleHistoryClose,\n handleHistoryOpen,\n handleLegacyInspectClose,\n handleMenuAction,\n handlePaneClose,\n handlePaneSplit,\n handleSetActiveFieldGroup,\n handleOnSetCollapsedPath,\n handleOnSetCollapsedFieldSet,\n openInspector,\n openPath,\n index,\n inspectOpen,\n isDeleted,\n isDeleting,\n isPermissionsLoading,\n isInitialValueLoading,\n languageFilter,\n validation,\n menuItemGroups,\n paneKey,\n previewUrl,\n ready,\n schemaType,\n permissions,\n setTimelineRange,\n timelineError,\n timelineMode,\n timelineStore,\n title,\n value,\n selectedReleaseId,\n views,\n formState,\n revisionId,\n lastNonDeletedRevId,\n ],\n )\n\n useEffect(() => {\n let timeout: ReturnType<typeof setTimeout>\n if (connectionState === 'reconnecting') {\n timeout = setTimeout(() => {\n pushToast({\n id: 'sanity/structure/reconnecting',\n status: 'warning',\n title: t('panes.document-pane-provider.reconnecting.title'),\n })\n }, 2000) // 2 seconds, we can iterate on the value\n }\n return () => {\n if (timeout) clearTimeout(timeout)\n }\n }, [connectionState, pushToast, t])\n\n const disableBlurRef = useRef(false)\n\n // Reset `focusPath` when `documentId` or `params.path` changes\n useEffect(() => {\n if (ready && params.path) {\n const {path, ...restParams} = params\n const pathFromUrl = resolveKeyedPath(formStateRef.current?.value, pathFromString(path))\n\n disableBlurRef.current = true\n\n // Reset focus path when url params path changes\n if (!deepEquals(focusPathRef.current, pathFromUrl)) {\n setFocusPath(pathFromUrl)\n setOpenPath(pathFromUrl)\n focusPathRef.current = pathFromUrl\n onFocusPath?.(pathFromUrl)\n }\n\n const timeout = setTimeout(() => {\n disableBlurRef.current = false\n }, 0)\n\n // remove the `path`-param from url after we have consumed it as the initial focus path\n paneRouter.setParams(restParams)\n\n return () => clearTimeout(timeout)\n }\n\n return undefined\n }, [params, documentId, onFocusPath, setOpenPath, ready, paneRouter])\n\n return (\n <DocumentPaneContext.Provider value={documentPane}>{children}</DocumentPaneContext.Provider>\n )\n})\n\nDocumentPaneProvider.displayName = 'Memo(DocumentPaneProvider)'\n","import {type ReleaseId} from '@sanity/client'\nimport {useMemo} from 'react'\nimport {\n EventsProvider,\n getDraftId,\n getPublishedId,\n getReleaseIdFromReleaseDocumentId,\n getVersionId,\n isDeleteDocumentGroupEvent,\n isDeleteDocumentVersionEvent,\n useEventsStore,\n usePerspective,\n useReleases,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../components'\nimport {EMPTY_PARAMS} from './constants'\nimport {usePaneOptions} from './DocumentPane'\nimport {DocumentPaneProvider} from './DocumentPaneProvider'\nimport {type DocumentPaneProviderProps} from './types'\n\nexport const DocumentEventsPane = (props: DocumentPaneProviderProps) => {\n const {params = EMPTY_PARAMS} = usePaneRouter()\n const options = usePaneOptions(props.pane.options, params)\n\n const {selectedPerspectiveName} = usePerspective()\n const {archivedReleases} = useReleases()\n const {rev, since} = params\n const historyVersion = params.historyVersion as ReleaseId | undefined\n\n const documentId = useMemo(() => {\n if (\n historyVersion &&\n archivedReleases.some(\n (release) => getReleaseIdFromReleaseDocumentId(release._id) === historyVersion,\n )\n ) {\n // Check if we have a release that matches with this historyVersion\n return getVersionId(options.id, historyVersion)\n }\n if (typeof selectedPerspectiveName === 'undefined') {\n return getDraftId(options.id)\n }\n if (selectedPerspectiveName === 'published') {\n return getPublishedId(options.id)\n }\n if (selectedPerspectiveName.startsWith('r')) {\n return getVersionId(options.id, selectedPerspectiveName)\n }\n return options.id\n }, [archivedReleases, historyVersion, selectedPerspectiveName, options.id])\n\n const eventsStore = useEventsStore({documentId, documentType: options.type, rev, since})\n\n const historyStoreProps = useMemo(\n () => ({\n error: eventsStore.error,\n revisionId: eventsStore.revision?.revisionId || null,\n onOlderRevision: Boolean(eventsStore.revision?.document && eventsStore.revision?.revisionId),\n revisionDocument: eventsStore.revision?.document || null,\n sinceDocument: eventsStore.sinceRevision?.document || null,\n ready: !eventsStore.loading,\n isPristine: Boolean(eventsStore.events.length === 0),\n lastNonDeletedRevId:\n eventsStore.events.find(\n (e) => !isDeleteDocumentGroupEvent(e) && !isDeleteDocumentVersionEvent(e),\n )?.id || null,\n }),\n [eventsStore],\n )\n\n const value = useMemo(() => eventsStore, [eventsStore])\n\n const forcedProviderVersion = useMemo(() => {\n if (historyVersion) {\n return {\n selectedPerspectiveName: historyVersion,\n selectedReleaseId: historyVersion,\n isReleaseLocked: true,\n }\n }\n return undefined\n }, [historyVersion])\n\n return (\n <EventsProvider value={value}>\n <DocumentPaneProvider\n {...props}\n historyStore={historyStoreProps}\n forcedVersion={forcedProviderVersion}\n />\n </EventsProvider>\n )\n}\n","import {type SanityDocument} from '@sanity/types'\nimport {useMemo, useState} from 'react'\nimport {getPublishedId, usePerspective, useTimelineSelector, useTimelineStore} from 'sanity'\n\nimport {usePaneRouter} from '../../components'\nimport {EMPTY_PARAMS} from './constants'\nimport {usePaneOptions} from './DocumentPane'\nimport {DocumentPaneProvider} from './DocumentPaneProvider'\nimport {type DocumentPaneProviderProps} from './types'\n\nexport const DocumentPaneWithLegacyTimelineStore = (props: DocumentPaneProviderProps) => {\n const {pane} = props\n const paneRouter = usePaneRouter()\n const {selectedReleaseId} = usePerspective()\n const options = usePaneOptions(pane.options, paneRouter.params)\n\n const params = paneRouter.params || EMPTY_PARAMS\n\n const [timelineError, setTimelineError] = useState<Error | null>(null)\n\n const timelineStore = useTimelineStore({\n documentId: getPublishedId(options.id),\n documentType: options.type,\n onError: setTimelineError,\n rev: params.rev,\n since: params.since,\n version: selectedReleaseId,\n })\n\n const revTime = useTimelineSelector(timelineStore, (state) => state.revTime)\n // TODO: Maybe derive this from the `revTime` selector, ifRevTime === onOlderRevision:true?\n const onOlderRevision = useTimelineSelector(timelineStore, (state) => state.onOlderRevision)\n const timelineDisplayed = useTimelineSelector(timelineStore, (state) => state.timelineDisplayed)\n const sinceAttributes = useTimelineSelector(timelineStore, (state) => state.sinceAttributes)\n const timelineReady = useTimelineSelector(timelineStore, (state) => state.timelineReady)\n const isPristine = useTimelineSelector(timelineStore, (state) => state.isPristine)\n const lastNonDeletedRevId = useTimelineSelector(\n timelineStore,\n (state) => state.lastNonDeletedRevId,\n )\n const historyStoreProps = useMemo(\n () => ({\n store: timelineStore,\n error: timelineError,\n revisionId: revTime?.id || null,\n onOlderRevision: onOlderRevision,\n revisionDocument: timelineDisplayed as SanityDocument | null,\n sinceDocument: sinceAttributes as SanityDocument | null,\n ready: timelineReady,\n isPristine: Boolean(isPristine),\n lastNonDeletedRevId,\n }),\n [\n timelineStore,\n timelineError,\n revTime?.id,\n onOlderRevision,\n timelineDisplayed,\n sinceAttributes,\n timelineReady,\n isPristine,\n lastNonDeletedRevId,\n ],\n )\n return <DocumentPaneProvider {...props} historyStore={historyStoreProps} />\n}\n","import {memo} from 'react'\nimport {useSource} from 'sanity'\n\nimport {DocumentEventsPane} from './DocumentEventsPane'\nimport {DocumentPaneWithLegacyTimelineStore} from './DocumentPaneLegacyTimeline'\nimport {type DocumentPaneProviderProps} from './types'\n\n/**\n * @internal\n */\nexport const DocumentPaneProviderWrapper = memo((props: DocumentPaneProviderProps) => {\n const source = useSource()\n if (source.beta?.eventsAPI?.enabled) {\n return <DocumentEventsPane {...props} />\n }\n return <DocumentPaneWithLegacyTimelineStore {...props} />\n})\nDocumentPaneProviderWrapper.displayName = 'Memo(DocumentPaneProviderWrapper)'\n","import {useEffect, useRef} from 'react'\nimport {usePerspective} from 'sanity'\nimport {useEffectEvent} from 'use-effect-event'\n\nimport {usePaneRouter} from '../../components'\nimport {EMPTY_PARAMS} from './constants'\n\n/**\n * This hooks takes care of resetting the history related params when the perspective changes.\n * It needs to be placed in a stable component, like the `DocumentPane`, which won't be unmounted when the perspective changes.\n */\nexport function useResetHistoryParams() {\n const {params = EMPTY_PARAMS, setParams} = usePaneRouter()\n\n const {selectedPerspectiveName} = usePerspective()\n const isMounted = useRef(false)\n\n const updateHistoryParams = useEffectEvent((_perspective?: string) => {\n setParams({\n ...params,\n // Reset the history related params when the perspective changes, as they don't make sense\n // in the context of the new perspective - preserveRev is used when setting draft revision.\n rev: params.preserveRev === 'true' ? params.rev : undefined,\n preserveRev: undefined,\n since: undefined,\n historyVersion: undefined,\n })\n })\n useEffect(() => {\n // Skip the first run to avoid resetting the params on initial load\n if (isMounted.current) {\n updateHistoryParams(selectedPerspectiveName)\n }\n // TODO: Remove `updateHistoryParams` as a dependency when react eslint plugin is updated\n }, [selectedPerspectiveName, updateHistoryParams])\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n}\n","import {type Path} from '@sanity/types'\nimport {Stack, Text} from '@sanity/ui'\nimport {fromString as pathFromString} from '@sanity/util/paths'\nimport {memo, useMemo} from 'react'\nimport {\n CopyPasteProvider,\n ReferenceInputOptionsProvider,\n SourceProvider,\n Translate,\n useDocumentType,\n usePerspective,\n useSource,\n useTemplatePermissions,\n useTemplates,\n useTranslation,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {type DocumentPaneNode} from '../../types'\nimport {ErrorPane} from '../error'\nimport {LoadingPane} from '../loading'\nimport {CommentsWrapper} from './comments'\nimport {useDocumentLayoutComponent} from './document-layout'\nimport {DocumentPaneProviderWrapper} from './DocumentPaneProviderWrapper'\nimport {type DocumentPaneProviderProps} from './types'\nimport {useResetHistoryParams} from './useResetHistoryParams'\n\ntype DocumentPaneOptions = DocumentPaneNode['options']\n\n/**\n * @internal\n */\nexport const DocumentPane = memo(function DocumentPane(props: DocumentPaneProviderProps) {\n const {name: parentSourceName} = useSource()\n\n return (\n <SourceProvider name={props.pane.source || parentSourceName}>\n <CopyPasteProvider>\n <DocumentPaneInner {...props} />\n </CopyPasteProvider>\n </SourceProvider>\n )\n})\n\nfunction DocumentPaneInner(props: DocumentPaneProviderProps) {\n const {pane, paneKey} = props\n const {resolveNewDocumentOptions} = useSource().document\n const {selectedPerspectiveName} = usePerspective()\n const paneRouter = usePaneRouter()\n const options = usePaneOptions(pane.options, paneRouter.params)\n const {documentType, isLoaded: isDocumentLoaded} = useDocumentType(options.id, options.type)\n useResetHistoryParams()\n const DocumentLayout = useDocumentLayoutComponent()\n\n // The templates that should be creatable from inside this document pane.\n // For example, from the \"Create new\" menu in reference inputs.\n const templateItems = useMemo(() => {\n return resolveNewDocumentOptions({\n type: 'document',\n documentId: options.id,\n schemaType: options.type,\n })\n }, [options.id, options.type, resolveNewDocumentOptions])\n\n const [templatePermissions, isTemplatePermissionsLoading] = useTemplatePermissions({\n templateItems,\n })\n const isLoaded = isDocumentLoaded && !isTemplatePermissionsLoading\n\n const providerProps = useMemo(() => {\n return isLoaded && documentType && options.type !== documentType\n ? mergeDocumentType(props, options, documentType)\n : props\n }, [props, documentType, isLoaded, options])\n\n const {ReferenceChildLink, handleEditReference, groupIndex, routerPanesState} = paneRouter\n const childParams = routerPanesState[groupIndex + 1]?.[0].params || {}\n const routerPanesStateLength = routerPanesState.length\n const {parentRefPath} = childParams\n\n const activePath: {path: Path; state: 'selected' | 'pressed' | 'none'} = useMemo(() => {\n return parentRefPath\n ? {\n path: pathFromString(parentRefPath),\n state:\n // eslint-disable-next-line no-nested-ternary\n groupIndex >= routerPanesStateLength - 1\n ? 'none'\n : groupIndex >= routerPanesStateLength - 2\n ? 'selected'\n : 'pressed',\n }\n : {path: [], state: 'none'}\n }, [parentRefPath, groupIndex, routerPanesStateLength])\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n if (options.type === '*' && !isLoaded) {\n return (\n <LoadingPane\n flex={2.5}\n minWidth={320}\n paneKey={paneKey}\n title={t('panes.document-pane.document-not-found.loading')}\n />\n )\n }\n\n if (!documentType) {\n return (\n <ErrorPane\n flex={2.5}\n minWidth={320}\n paneKey={paneKey}\n title={t('panes.document-pane.document-not-found.title')}\n >\n <Stack space={4}>\n <Text as=\"p\">\n <Translate\n t={t}\n i18nKey=\"panes.document-pane.document-not-found.text\"\n values={{id: options.id}}\n components={{Code: ({children}) => <code>{children}</code>}}\n />\n </Text>\n </Stack>\n </ErrorPane>\n )\n }\n\n return (\n <DocumentPaneProviderWrapper\n // this needs to be here to avoid formState from being re-used across (incompatible) document types\n // see https://github.com/sanity-io/sanity/discussions/3794 for a description of the problem\n key={`${documentType}-${options.id}-${selectedPerspectiveName || ''}`}\n {...providerProps}\n >\n {/* NOTE: this is a temporary location for this provider until we */}\n {/* stabilize the reference input options formally in the form builder */}\n {/* eslint-disable-next-line react/jsx-pascal-case */}\n <ReferenceInputOptionsProvider\n EditReferenceLinkComponent={ReferenceChildLink}\n onEditReference={handleEditReference}\n initialValueTemplateItems={templatePermissions}\n activePath={activePath}\n >\n <CommentsWrapper documentId={options.id} documentType={options.type}>\n <DocumentLayout documentId={options.id} documentType={options.type} />\n </CommentsWrapper>\n </ReferenceInputOptionsProvider>\n </DocumentPaneProviderWrapper>\n )\n}\n\n/**\n * @internal\n */\nexport function usePaneOptions(\n options: DocumentPaneOptions,\n params: Record<string, string | undefined> = {},\n): DocumentPaneOptions {\n const templates = useTemplates()\n\n return useMemo(() => {\n // The document type is provided, so return\n if (options.type && options.type !== '*') {\n return options\n }\n\n // Attempt to derive document type from the template configuration\n const templateName = options.template || params.template\n const template = templateName ? templates.find((t) => t.id === templateName) : undefined\n const documentType = template?.schemaType\n\n // No document type was found in a template\n if (!documentType) {\n return options\n }\n\n // The template provided the document type, so modify the pane’s `options` property\n return {...options, type: documentType}\n }, [options, params.template, templates])\n}\n\nfunction mergeDocumentType(\n props: DocumentPaneProviderProps,\n options: DocumentPaneOptions,\n documentType: string,\n): DocumentPaneProviderProps {\n return {\n ...props,\n pane: {\n ...props.pane,\n options: {...options, type: documentType},\n },\n }\n}\n","import {type SortOrder} from './types'\n\nexport const PARTIAL_PAGE_LIMIT = 100\nexport const FULL_LIST_LIMIT = 2000\nexport const DEFAULT_ORDERING: SortOrder = {by: [{field: '_updatedAt', direction: 'desc'}]}\nexport const EMPTY_RECORD: Record<string, unknown> = {}\n\nexport const ENABLE_LRU_MEMO = true\n","import {type SanityDocument} from '@sanity/types'\nimport {Box, Container, Flex, Heading, Stack, Text} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n CommandList,\n type CommandListRenderItemCallback,\n ErrorActions,\n type GeneralPreviewLayoutKey,\n getPublishedId,\n LoadingBlock,\n SanityDefaultPreview,\n Translate,\n useSchema,\n useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Delay, PaneContent, PaneItem, usePane, usePaneLayout} from '../../components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {FULL_LIST_LIMIT} from './constants'\nimport {type DocumentListPaneItem, type LoadingVariant} from './types'\n\nconst RootBox = styled(Box)<{$opacity?: number}>`\n position: relative;\n opacity: ${(props) => props.$opacity || 1};\n transition: opacity 0.4s;\n`\n\nconst CommandListBox = styled(Box)`\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n`\n\ninterface DocumentListPaneContentProps {\n childItemId?: string\n error: {message: string} | null\n filterIsSimpleTypeConstraint: boolean\n hasMaxItems?: boolean\n hasSearchQuery: boolean\n isActive?: boolean\n isLazyLoading: boolean\n isLoading: boolean\n items: DocumentListPaneItem[]\n layout?: GeneralPreviewLayoutKey\n loadingVariant?: LoadingVariant\n onEndReached: () => void\n onRetry?: () => void\n paneTitle: string\n searchInputElement: HTMLInputElement | null\n showIcons: boolean\n}\n\nconst SKELETON_ITEMS = [...Array(30).keys()]\n\nfunction LoadingView(props: {layout?: GeneralPreviewLayoutKey}) {\n const {layout} = props\n\n return (\n <Stack paddingX={3} paddingY={2} paddingTop={0} space={1}>\n {SKELETON_ITEMS.map((num) => (\n <SanityDefaultPreview isPlaceholder layout={layout} key={num} />\n ))}\n </Stack>\n )\n}\n\nexport function DocumentListPaneContent(props: DocumentListPaneContentProps) {\n const {\n childItemId,\n error,\n filterIsSimpleTypeConstraint,\n hasMaxItems,\n hasSearchQuery,\n isActive,\n isLazyLoading,\n isLoading,\n items,\n layout,\n loadingVariant,\n onEndReached,\n onRetry,\n paneTitle,\n searchInputElement,\n showIcons,\n } = props\n\n const schema = useSchema()\n\n const {collapsed: layoutCollapsed} = usePaneLayout()\n const {collapsed, index} = usePane()\n const [shouldRender, setShouldRender] = useState(!collapsed)\n const {t} = useTranslation(structureLocaleNamespace)\n\n const handleEndReached = useCallback(() => {\n if (shouldRender) {\n onEndReached()\n }\n }, [onEndReached, shouldRender])\n\n useEffect(() => {\n if (collapsed) return undefined\n\n const timer = setTimeout(() => {\n setShouldRender(true)\n }, 0)\n\n return () => {\n clearTimeout(timer)\n }\n }, [collapsed, items])\n\n const renderItem = useCallback<CommandListRenderItemCallback<SanityDocument>>(\n (item, {activeIndex}) => {\n const publishedId = getPublishedId(item._id)\n const isSelected = childItemId === publishedId\n const pressed = !isActive && isSelected\n const selected = isActive && isSelected\n const isLastItem = activeIndex === items.length - 1\n const showSpinner = isLastItem && isLazyLoading\n const showMaxItemsMessage = isLastItem && hasMaxItems\n\n return (\n <>\n <PaneItem\n icon={showIcons === false ? false : undefined}\n id={publishedId}\n layout={layout}\n marginBottom={1}\n pressed={pressed}\n schemaType={schema.get(item._type)}\n selected={selected}\n value={item}\n />\n\n {showSpinner && <LoadingBlock />}\n\n {showMaxItemsMessage && (\n <Box marginY={1} paddingX={3} paddingY={4}>\n <Text align=\"center\" muted size={1}>\n {t('panes.document-list-pane.max-items.text', {limit: FULL_LIST_LIMIT})}\n </Text>\n </Box>\n )}\n </>\n )\n },\n [childItemId, isActive, items.length, layout, schema, showIcons, hasMaxItems, isLazyLoading, t],\n )\n\n const noDocumentsContent = useMemo(() => {\n if (hasSearchQuery) {\n return (\n <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n <Container width={1}>\n <Box paddingX={4} paddingY={5}>\n <Text align=\"center\" muted>\n {t('panes.document-list-pane.no-documents.text')}\n </Text>\n </Box>\n </Container>\n </Flex>\n )\n }\n\n return (\n <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n <Container width={1}>\n <Box paddingX={4} paddingY={5}>\n <Text align=\"center\" muted>\n {filterIsSimpleTypeConstraint\n ? t('panes.document-list-pane.no-documents-of-type.text')\n : t('panes.document-list-pane.no-matching-documents.text')}\n </Text>\n </Box>\n </Container>\n </Flex>\n )\n }, [filterIsSimpleTypeConstraint, hasSearchQuery, t])\n\n const mainContent = useMemo(() => {\n if (!shouldRender) {\n return null\n }\n\n if (error) {\n return (\n <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n <Container width={1}>\n <Stack paddingX={4} paddingY={5} space={4}>\n <Heading as=\"h3\">{t('panes.document-list-pane.error.title')}</Heading>\n <Text as=\"p\">\n <Translate\n t={t}\n i18nKey=\"panes.document-list-pane.error.text\"\n values={{error: error.message}}\n components={{Code: ({children}) => <code>{children}</code>}}\n />\n </Text>\n <ErrorActions error={error} eventId={null} onRetry={onRetry} />\n </Stack>\n </Container>\n </Flex>\n )\n }\n\n if (!isLoading && items.length === 0) {\n return noDocumentsContent\n }\n\n if (loadingVariant === 'initial' && isLoading) {\n return (\n <Delay ms={300}>\n <LoadingView layout={layout} />\n </Delay>\n )\n }\n\n if (loadingVariant === 'spinner' && isLoading) {\n return null\n }\n\n // prevents bug when panes won't render if first rendered while collapsed\n const key = `${index}-${collapsed}`\n\n return (\n <RootBox overflow=\"hidden\" height=\"fill\" $opacity={loadingVariant === 'subtle' ? 0.8 : 1}>\n <CommandListBox>\n <CommandList\n activeItemDataAttr=\"data-hovered\"\n ariaLabel={paneTitle}\n canReceiveFocus\n inputElement={searchInputElement}\n itemHeight={51}\n items={items}\n key={key}\n onEndReached={handleEndReached}\n onlyShowSelectionWhenActive\n overscan={10}\n paddingBottom={1}\n paddingX={3}\n renderItem={renderItem}\n wrapAround={false}\n />\n </CommandListBox>\n </RootBox>\n )\n }, [\n collapsed,\n error,\n handleEndReached,\n index,\n isLoading,\n items,\n layout,\n loadingVariant,\n noDocumentsContent,\n onRetry,\n paneTitle,\n renderItem,\n searchInputElement,\n shouldRender,\n t,\n ])\n\n return (\n <PaneContent\n data-testid=\"document-list-pane\"\n overflow={layoutCollapsed || loadingVariant === 'initial' ? 'hidden' : 'auto'}\n >\n {mainContent}\n </PaneContent>\n )\n}\n","import {\n isIndexSegment,\n isKeySegment,\n isReferenceSchemaType,\n type ObjectField,\n type ObjectFieldType,\n type ObjectSchemaType,\n type SanityDocumentLike,\n type SchemaType,\n} from '@sanity/types'\nimport * as PathUtils from '@sanity/util/paths'\nimport {type ExprNode, parse} from 'groq-js'\nimport {collate, getPublishedId, isVersionId} from 'sanity'\n\nimport {type DocumentListPaneItem, type SortOrder} from './types'\n\nexport function getDocumentKey(value: DocumentListPaneItem, index: number): string {\n return value._id ? getPublishedId(value._id) : `item-${index}`\n}\n\nexport function removePublishedWithDrafts(documents: SanityDocumentLike[]): DocumentListPaneItem[] {\n return collate(documents).map((entry) => {\n const doc = entry.draft || entry.published\n const isVersion = doc?.id && isVersionId(doc._id)\n const hasDraft = Boolean(entry.draft)\n\n return {\n ...doc,\n hasPublished: !!entry.published,\n hasDraft,\n isVersion,\n }\n }) as any\n}\n\nexport function applyOrderingFunctions(order: SortOrder, schemaType: ObjectSchemaType): SortOrder {\n const orderBy = order.by.map((by) => {\n // Skip those that already have a mapper\n if (by.mapWith) {\n return by\n }\n\n const fieldType = tryResolveSchemaTypeForPath(schemaType, by.field)\n if (!fieldType) {\n return by\n }\n\n // Note: order matters here, since the jsonType of a date field is `string`,\n // but we want to apply `datetime()`, not `lower()`\n if (fieldExtendsType(fieldType, 'datetime')) {\n return {...by, mapWith: 'dateTime'}\n }\n\n if (fieldType.jsonType === 'string') {\n return {...by, mapWith: 'lower'}\n }\n\n return by\n })\n\n return orderBy.every((item, index) => item === order.by[index]) ? order : {...order, by: orderBy}\n}\n\nfunction tryResolveSchemaTypeForPath(baseType: SchemaType, path: string): SchemaType | undefined {\n const pathSegments = PathUtils.fromString(path)\n\n let current: SchemaType | undefined = baseType\n for (const segment of pathSegments) {\n if (!current) {\n return undefined\n }\n\n if (typeof segment === 'string') {\n current = getFieldTypeByName(current, segment)\n continue\n }\n\n const isArrayAccessor = isKeySegment(segment) || isIndexSegment(segment)\n if (!isArrayAccessor || current.jsonType !== 'array') {\n return undefined\n }\n\n const [memberType, otherType] = current.of || []\n if (otherType || !memberType) {\n // Can't figure out the type without knowing the value\n return undefined\n }\n\n if (!isReferenceSchemaType(memberType)) {\n current = memberType\n continue\n }\n\n const [refType, otherRefType] = memberType.to || []\n if (otherRefType || !refType) {\n // Can't figure out the type without knowing the value\n return undefined\n }\n\n current = refType\n }\n\n return current\n}\n\nfunction getFieldTypeByName(type: SchemaType, fieldName: string): SchemaType | undefined {\n if (!('fields' in type)) {\n return undefined\n }\n\n const fieldType = type.fields.find((field) => field.name === fieldName)\n return fieldType ? fieldType.type : undefined\n}\n\nexport function fieldExtendsType(field: ObjectField | ObjectFieldType, ofType: string): boolean {\n let current: SchemaType | undefined = field.type\n while (current) {\n if (current.name === ofType) {\n return true\n }\n\n if (!current.type && current.jsonType === ofType) {\n return true\n }\n\n current = current.type\n }\n\n return false\n}\n\n/**\n * Recursively extract static `_type`s from GROQ filter expressions. If the\n * types can't be statically determined then it will return `null`.\n */\n// eslint-disable-next-line complexity\nfunction findTypes(node: ExprNode): Set<string> | null {\n switch (node.type) {\n case 'OpCall': {\n const {left, right} = node\n\n switch (node.op) {\n // e.g. `a == b`\n case '==': {\n // e.g. `_type == 'value'`\n if (left.type === 'AccessAttribute' && left.name === '_type' && !left.base) {\n if (right.type !== 'Value' || typeof right.value !== 'string') return null\n return new Set([right.value])\n }\n\n // e.g. `'value' == _type`\n if (right.type === 'AccessAttribute' && right.name === '_type' && !right.base) {\n if (left.type !== 'Value' || typeof left.value !== 'string') return null\n return new Set([left.value])\n }\n\n // otherwise, we can't determine the types statically\n return null\n }\n\n // e.g. `a in b`\n case 'in': {\n // if `_type` is not on the left hand side of `in` then it can't be determined\n if (left.type !== 'AccessAttribute' || left.name !== '_type' || left.base) return null\n // if the right hand side is not an array then the types can't be determined\n if (right.type !== 'Array') return null\n\n const types = new Set<string>()\n // iterate through all the types\n for (const element of right.elements) {\n // if we find a splat, then early return, we can't determine the types\n if (element.isSplat) return null\n // if the array element is not just a simple value, then early return\n if (element.value.type !== 'Value') return null\n // if the array element value is not a string, then early return\n if (typeof element.value.value !== 'string') return null\n // otherwise add the element value to the set of types\n types.add(element.value.value)\n }\n\n // if there were any elements in the types set, return it\n if (types.size) return types\n // otherwise, the set of types cannot be determined\n return null\n }\n\n default: {\n return null\n }\n }\n }\n\n // groups can just be unwrapped, the AST preserves the order\n case 'Group': {\n return findTypes(node.base)\n }\n\n // e.g. `_type == 'a' || _type == 'b'`\n // with Or nodes, if we can't determine the types for either the left or\n // right hand side then we can't determine the types for any\n // e.g. `_type == 'a' || isActive`\n // — can't determine types because `isActive` could be true on another types\n case 'Or': {\n const left = findTypes(node.left)\n if (!left) return null\n\n const right = findTypes(node.right)\n if (!right) return null\n\n return new Set([...left, ...right])\n }\n\n // e.g. `_type == 'a' && isActive`\n // with And nodes, we can determine the types as long as we can determine\n // the types for one side. We can't determine the types if both are `null`.\n case 'And': {\n const left = findTypes(node.left)\n const right = findTypes(node.right)\n\n if (!left && !right) return null\n return new Set([...(left || []), ...(right || [])])\n }\n\n default: {\n return null\n }\n }\n}\n\nexport function findStaticTypesInFilter(\n filter: string,\n params: Record<string, unknown> = {},\n): string[] | null {\n try {\n const types = findTypes(parse(filter, {params}))\n if (!types) return null\n\n return Array.from(types).sort()\n } catch {\n // if we couldn't parse the filter, just return `null`\n return null\n }\n}\n","import {type SchemaType, type SortOrderingItem} from '@sanity/types'\n\nconst IMPLICIT_SCHEMA_TYPE_FIELDS = ['_id', '_type', '_createdAt', '_updatedAt', '_rev']\n\n// Takes a path array and a schema type and builds a GROQ join every time it enters a reference field\nfunction joinReferences(schemaType: SchemaType, path: string[], strict: boolean = false): string {\n const [head, ...tail] = path\n\n if (!('fields' in schemaType)) {\n return ''\n }\n\n const schemaField = schemaType.fields.find((field) => field.name === head)\n if (!schemaField) {\n if (!IMPLICIT_SCHEMA_TYPE_FIELDS.includes(head)) {\n const errorMessage = `The current ordering config targeted the nonexistent field \"${head}\" on schema type \"${schemaType.name}\". It should be one of ${schemaType.fields.map((field) => field.name).join(', ')}`\n if (strict) {\n throw new Error(errorMessage)\n } else {\n // eslint-disable-next-line no-console\n console.warn(errorMessage)\n }\n }\n return ''\n }\n\n if ('to' in schemaField.type && schemaField.type.name === 'reference') {\n const refTypes = schemaField.type.to\n return `${head}->{${refTypes.map((refType) => joinReferences(refType, tail)).join(',')}}`\n }\n\n const tailFields = tail.length > 0 && joinReferences(schemaField.type, tail)\n const tailWrapper = tailFields ? `{${tailFields}}` : ''\n return tail.length > 0 ? `${head}${tailWrapper}` : head\n}\n\nexport function getExtendedProjection(\n schemaType: SchemaType,\n orderBy: SortOrderingItem[],\n strict: boolean = false,\n): string {\n return orderBy\n .map((ordering) => joinReferences(schemaType, ordering.field.split('.'), strict))\n .join(', ')\n}\n","import {type SanityClient} from '@sanity/client'\nimport {\n asyncScheduler,\n defer,\n map,\n merge,\n mergeMap,\n type Observable,\n of,\n partition,\n share,\n take,\n throttleTime,\n throwError,\n timer,\n} from 'rxjs'\nimport {exhaustMapWithTrailing} from 'rxjs-exhaustmap-with-trailing'\nimport {\n createSearch,\n createSWR,\n getSearchableTypes,\n type SanityDocumentLike,\n type Schema,\n type SearchOptions,\n type SearchStrategy,\n} from 'sanity'\n\nimport {getExtendedProjection} from '../../structureBuilder/util/getExtendedProjection'\nimport {type SortOrder} from './types'\n\ninterface ListenQueryOptions {\n client: SanityClient\n filter: string\n limit: number\n params: Record<string, unknown>\n schema: Schema\n searchQuery: string\n sort: SortOrder\n perspective?: string | string[]\n staticTypeNames?: string[] | null\n maxFieldDepth?: number\n searchStrategy?: SearchStrategy\n}\n\nexport interface SearchQueryResult {\n fromCache: boolean\n documents: SanityDocumentLike[]\n}\n\nconst swr = createSWR<SanityDocumentLike[]>({maxSize: 100})\n\nexport function listenSearchQuery(options: ListenQueryOptions): Observable<SearchQueryResult> {\n const {\n client,\n schema,\n sort,\n perspective,\n limit,\n params,\n filter,\n searchQuery,\n staticTypeNames,\n maxFieldDepth,\n searchStrategy,\n } = options\n const sortBy = sort.by\n const extendedProjection = sort?.extendedProjection\n\n // Listen for changes with the given filter and params, and whenever a change occurs, we want to\n // re-fetch the documents that match the search query (see below).\n // We use a separate listener since the search query is too large to use in a listen query.\n const events$ = defer(() => {\n return client.listen(`*[${filter}]`, params, {\n events: ['welcome', 'mutation', 'reconnect'],\n includeResult: false,\n visibility: 'query',\n })\n }).pipe(\n mergeMap((ev, i) => {\n const isFirst = i === 0\n if (isFirst && ev.type !== 'welcome') {\n // If the first event is not welcome, it is most likely a reconnect and\n // if it's not a reconnect something is very wrong and we should throw.\n return throwError(\n () =>\n new Error(\n ev.type === 'reconnect'\n ? 'Could not establish EventSource connection'\n : `Received unexpected type of first event \"${ev.type}\"`,\n ),\n )\n }\n return of(ev)\n }),\n share(),\n )\n\n const [welcome$, mutationAndReconnect$] = partition(events$, (ev) => ev.type === 'welcome')\n\n const swrKey = JSON.stringify({\n filter,\n limit,\n params,\n searchQuery,\n perspective,\n sort,\n staticTypeNames,\n })\n\n return merge(\n welcome$.pipe(take(1)),\n mutationAndReconnect$.pipe(throttleTime(1000, asyncScheduler, {leading: true, trailing: true})),\n ).pipe(\n exhaustMapWithTrailing((event) => {\n // Get the types names to use for searching.\n // If we have a static list of types, we can skip fetching the types and use the static list.\n const typeNames$ = staticTypeNames\n ? of(staticTypeNames)\n : client.observable.fetch(`array::unique(*[${filter}][]._type)`, params)\n\n // Use the type names to create a search query and fetch the documents that match the query.\n return typeNames$.pipe(\n mergeMap((typeNames: string[]) => {\n const types = getSearchableTypes(schema, staticTypeNames || []).filter((type) => {\n if (typeNames.includes(type.name)) {\n // make a call to getExtendedProjection in strict mode to verify that all fields are\n // known. This method will throw an exception if there are any unknown fields specified\n // in the sort by list\n getExtendedProjection(type, sort.by, true)\n return true\n }\n return false\n })\n\n const search = createSearch(types, client, {\n filter,\n params,\n strategy: searchStrategy,\n maxDepth: maxFieldDepth,\n })\n\n const doFetch = () => {\n const searchTerms = {\n query: searchQuery || '',\n types,\n }\n\n const searchOptions: SearchOptions = {\n __unstable_extendedProjection: extendedProjection,\n comments: [`findability-source: ${searchQuery ? 'list-query' : 'list'}`],\n limit,\n skipSortByScore: true,\n sort: sortBy,\n perspective,\n }\n\n return search(searchTerms, searchOptions).pipe(\n map((result) =>\n // eslint-disable-next-line max-nested-callbacks\n result.hits.map(({hit}) => hit),\n ),\n )\n }\n\n if (event.type === 'mutation' && event.visibility !== 'query') {\n // Even though the listener request specifies visibility=query, the events are not guaranteed to be delivered with visibility=query\n // If the event we are responding to arrives with visibility != query, we add a little delay to allow for the updated document to be available for queries\n // See https://www.sanity.io/docs/listening#visibility-c4786e55c3ff\n return timer(1200).pipe(mergeMap(doFetch))\n }\n return doFetch()\n }),\n )\n }),\n swr(swrKey),\n map(({fromCache, value}) => ({fromCache, documents: value})),\n )\n}\n","import {observableCallback} from 'observable-callback'\nimport {useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\nimport {concat, fromEvent, merge, of} from 'rxjs'\nimport {\n catchError,\n filter,\n map,\n mergeMap,\n scan,\n share,\n shareReplay,\n take,\n takeUntil,\n withLatestFrom,\n} from 'rxjs/operators'\nimport {\n DEFAULT_STUDIO_CLIENT_OPTIONS,\n useClient,\n useSchema,\n useSearchMaxFieldDepth,\n useWorkspace,\n} from 'sanity'\n\nimport {DEFAULT_ORDERING, FULL_LIST_LIMIT, PARTIAL_PAGE_LIMIT} from './constants'\nimport {findStaticTypesInFilter, removePublishedWithDrafts} from './helpers'\nimport {listenSearchQuery} from './listenSearchQuery'\nimport {type DocumentListPaneItem, type SortOrder} from './types'\n\ninterface UseDocumentListOpts {\n apiVersion?: string\n filter: string\n perspective?: string | string[]\n params: Record<string, unknown>\n searchQuery: string | null\n sortOrder?: SortOrder\n}\n\ninterface DocumentListState {\n error: {message: string} | null\n isLoadingFullList: boolean\n isLoading: boolean\n fromCache?: boolean\n items: DocumentListPaneItem[]\n}\n\nconst INITIAL_QUERY_STATE: DocumentListState = {\n error: null,\n isLoading: true,\n isLoadingFullList: false,\n fromCache: false,\n items: [],\n}\n\ninterface UseDocumentListHookValue extends DocumentListState {\n onRetry: () => void\n onLoadFullList: () => void\n}\n\n/**\n * @internal\n */\nexport function useDocumentList(opts: UseDocumentListOpts): UseDocumentListHookValue {\n const {\n filter: searchFilter,\n params: paramsProp,\n sortOrder,\n searchQuery,\n perspective,\n apiVersion,\n } = opts\n const client = useClient({\n ...DEFAULT_STUDIO_CLIENT_OPTIONS,\n apiVersion: apiVersion || DEFAULT_STUDIO_CLIENT_OPTIONS.apiVersion,\n })\n const {strategy: searchStrategy} = useWorkspace().search\n const schema = useSchema()\n const maxFieldDepth = useSearchMaxFieldDepth()\n\n // Get the type name from the filter, if it is a simple type filter.\n const typeNameFromFilter = useMemo(\n () => findStaticTypesInFilter(searchFilter, paramsProp),\n [searchFilter, paramsProp],\n )\n\n const [[onRetry$, onRetry]] = useState(() => observableCallback())\n const [[onFetchFullList$, onLoadFullList]] = useState(() => observableCallback())\n\n const queryResults$ = useMemo(() => {\n const listenSearchQueryArgs = {\n client,\n filter: searchFilter,\n limit: PARTIAL_PAGE_LIMIT,\n params: paramsProp,\n schema,\n perspective,\n searchQuery: searchQuery || '',\n sort: sortOrder || DEFAULT_ORDERING,\n staticTypeNames: typeNameFromFilter,\n maxFieldDepth,\n searchStrategy,\n }\n\n const partialList$ = listenSearchQuery(listenSearchQueryArgs).pipe(\n shareReplay({refCount: true, bufferSize: 1}),\n )\n\n // we want to fetch the full list if the last result of the partial list is at the limit\n const fullList$ = onFetchFullList$.pipe(\n withLatestFrom(partialList$),\n filter(([, result]) => result?.documents.length === PARTIAL_PAGE_LIMIT),\n // we want to set up the full list listener only once\n take(1),\n mergeMap(() =>\n concat(\n of({type: 'loadFullList' as const}),\n listenSearchQuery({...listenSearchQueryArgs, limit: FULL_LIST_LIMIT}).pipe(\n map((result) => ({type: 'result' as const, result})),\n ),\n ),\n ),\n share(),\n )\n\n // The combined search results from both partial page and full list\n return merge(\n partialList$.pipe(\n map((result) => ({\n type: 'result' as const,\n result,\n })),\n // when the full list listener kicks off, we want to stop the partial list listener\n takeUntil(fullList$),\n ),\n fullList$,\n ).pipe(\n catchError((err: unknown, caught$) => {\n return concat(\n of({type: 'error' as const, error: safeError(err)}),\n merge(fromEvent(window, 'online'), onRetry$).pipe(\n take(1),\n mergeMap(() => caught$),\n ),\n )\n }),\n scan((prev, event) => {\n if (event.type === 'error') {\n return {\n ...prev,\n error: event.error,\n }\n }\n if (event.type === 'result') {\n return {\n ...prev,\n error: null,\n fromCache: event.result.fromCache,\n isLoading: false,\n items: removePublishedWithDrafts(event.result.documents),\n isLoadingFullList: false,\n }\n }\n if (event.type === 'loadFullList') {\n return {\n ...prev,\n error: null,\n isLoadingFullList: true,\n }\n }\n throw new Error('Unexpected')\n }, INITIAL_QUERY_STATE),\n )\n }, [\n client,\n searchFilter,\n paramsProp,\n schema,\n perspective,\n searchQuery,\n sortOrder,\n typeNameFromFilter,\n maxFieldDepth,\n searchStrategy,\n onFetchFullList$,\n onRetry$,\n ])\n\n const {error, items, isLoading, fromCache, isLoadingFullList} = useObservable(\n queryResults$,\n INITIAL_QUERY_STATE,\n )\n\n return {\n error,\n onRetry,\n isLoading,\n items,\n fromCache,\n onLoadFullList,\n isLoadingFullList,\n }\n}\n\n// todo: candidate for re-use\nconst nonErrorThrownWarning = `[WARNING: This was thrown as a non-error. Only Error instances should be thrown]`\nfunction safeError(thrown: unknown): Error {\n if (thrown instanceof Error) {\n return thrown\n }\n if (typeof thrown === 'object' && thrown !== null) {\n if ('message' in thrown && typeof thrown.message === 'string') {\n return new Error(`${thrown.message} ${nonErrorThrownWarning}`)\n }\n return new Error(`${String(thrown)} ${nonErrorThrownWarning}`)\n }\n return new Error(`${String(thrown)} ${nonErrorThrownWarning}`)\n}\n","import {SearchIcon, SpinnerIcon} from '@sanity/icons'\nimport {Box, TextInput} from '@sanity/ui'\nimport {memo, useCallback, useEffect, useMemo, useState} from 'react'\nimport {useObservableEvent} from 'react-rx'\nimport {debounce, map, type Observable, of, tap, timer} from 'rxjs'\nimport {\n type GeneralPreviewLayoutKey,\n useI18nText,\n usePerspective,\n useReleases,\n useSchema,\n useTranslation,\n useUnique,\n} from 'sanity'\nimport {keyframes, styled} from 'styled-components'\n\nimport {structureLocaleNamespace} from '../../i18n'\nimport {type BaseStructureToolPaneProps} from '../types'\nimport {EMPTY_RECORD, FULL_LIST_LIMIT} from './constants'\nimport {DocumentListPaneContent} from './DocumentListPaneContent'\nimport {applyOrderingFunctions, findStaticTypesInFilter} from './helpers'\nimport {useShallowUnique} from './PaneContainer'\nimport {type LoadingVariant, type SortOrder} from './types'\nimport {useDocumentList} from './useDocumentList'\n\n/**\n * @internal\n */\nexport type DocumentListPaneProps = BaseStructureToolPaneProps<'documentList'> & {\n sortOrder?: SortOrder\n layout?: Exclude<GeneralPreviewLayoutKey, 'sheetList'>\n}\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n }\n 50% {\n opacity: 0.1;\n }\n 100% {\n opacity: 0.4;\n }\n`\n\nconst AnimatedSpinnerIcon = styled(SpinnerIcon)`\n animation: ${rotate} 500ms linear infinite;\n`\n\nconst SubtleSpinnerIcon = styled(SpinnerIcon)`\n animation: ${rotate} 1500ms linear infinite;\n opacity: 0.4;\n`\n\nconst DelayedSubtleSpinnerIcon = styled(SpinnerIcon)`\n animation:\n ${rotate} 1500ms linear infinite,\n ${fadeIn} 1000ms linear;\n opacity: 0.4;\n`\n\n/**\n * @internal\n */\n\nexport const DocumentListPane = memo(function DocumentListPane(props: DocumentListPaneProps) {\n const {childItemId, isActive, pane, paneKey, sortOrder: sortOrderRaw, layout} = props\n const schema = useSchema()\n const releases = useReleases()\n const {perspectiveStack} = usePerspective()\n const {displayOptions, options} = pane\n const {apiVersion, filter} = options\n const params = useShallowUnique(options.params || EMPTY_RECORD)\n const typeName = useMemo(() => {\n const staticTypes = findStaticTypesInFilter(filter, params)\n if (staticTypes?.length === 1) return staticTypes[0]\n return null\n }, [filter, params])\n\n const showIcons = displayOptions?.showIcons !== false\n\n const {t} = useTranslation(structureLocaleNamespace)\n const {title} = useI18nText(pane)\n\n const [searchQuery, setSearchQuery] = useState<string>('')\n const [searchInputValue, setSearchInputValue] = useState<string>('')\n const [searchInputElement, setSearchInputElement] = useState<HTMLInputElement | null>(null)\n\n const sortWithOrderingFn =\n typeName && sortOrderRaw\n ? applyOrderingFunctions(sortOrderRaw, schema.get(typeName) as any)\n : sortOrderRaw\n\n const sortOrder = useUnique(sortWithOrderingFn)\n\n const {\n error,\n isLoadingFullList,\n isLoading: documentListIsLoading,\n items,\n fromCache,\n onLoadFullList,\n onRetry,\n } = useDocumentList({\n apiVersion,\n filter,\n perspective: perspectiveStack,\n params,\n searchQuery: searchQuery?.trim(),\n sortOrder,\n })\n\n const isLoading = documentListIsLoading || releases.loading\n\n const handleQueryChange = useObservableEvent(\n (event$: Observable<React.ChangeEvent<HTMLInputElement>>) => {\n return event$.pipe(\n map((event) => event.target.value),\n tap(setSearchInputValue),\n debounce((value) => (value === '' ? of('') : timer(300))),\n tap(setSearchQuery),\n )\n },\n )\n\n const handleClearSearch = useCallback(() => {\n setSearchQuery('')\n setSearchInputValue('')\n }, [])\n\n const handleSearchKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Escape') {\n handleClearSearch()\n }\n },\n [handleClearSearch],\n )\n\n const [enableSearchSpinner, setEnableSearchSpinner] = useState<string | void>()\n\n useEffect(() => {\n if (!enableSearchSpinner && !isLoading) {\n setEnableSearchSpinner(paneKey)\n }\n }, [enableSearchSpinner, isLoading, paneKey])\n\n useEffect(() => {\n // Clear search field and disable search spinner\n // when switching between panes (i.e. when paneKey changes).\n handleClearSearch()\n setEnableSearchSpinner()\n }, [paneKey, handleClearSearch])\n\n const loadingVariant: LoadingVariant = useMemo(() => {\n if (isLoading && enableSearchSpinner === paneKey) {\n return 'spinner'\n }\n if (fromCache) {\n return 'subtle'\n }\n\n return 'initial'\n }, [enableSearchSpinner, fromCache, isLoading, paneKey])\n\n const textInputIcon = useMemo(() => {\n if (loadingVariant === 'spinner') {\n return AnimatedSpinnerIcon\n }\n if (searchInputValue && loadingVariant === 'subtle') {\n return SubtleSpinnerIcon\n }\n return SearchIcon\n }, [loadingVariant, searchInputValue])\n\n return (\n <>\n <Box paddingX={3} paddingBottom={3}>\n <TextInput\n aria-label={t('panes.document-list-pane.search-input.aria-label')}\n autoComplete=\"off\"\n border={false}\n clearButton={Boolean(searchQuery)}\n disabled={Boolean(error)}\n fontSize={[2, 2, 1]}\n icon={textInputIcon}\n iconRight={\n loadingVariant === 'subtle' && !searchInputValue ? DelayedSubtleSpinnerIcon : null\n }\n onChange={handleQueryChange}\n onClear={handleClearSearch}\n onKeyDown={handleSearchKeyDown}\n padding={2}\n placeholder={t('panes.document-list-pane.search-input.placeholder')}\n radius={2}\n ref={setSearchInputElement}\n spellCheck={false}\n value={searchInputValue}\n />\n </Box>\n <DocumentListPaneContent\n childItemId={childItemId}\n error={error}\n filterIsSimpleTypeConstraint={!!typeName}\n hasMaxItems={items.length === FULL_LIST_LIMIT}\n hasSearchQuery={Boolean(searchQuery)}\n isActive={isActive}\n isLazyLoading={isLoadingFullList}\n isLoading={isLoading}\n items={items}\n key={paneKey}\n layout={layout}\n loadingVariant={loadingVariant}\n onEndReached={onLoadFullList}\n onRetry={onRetry}\n paneTitle={title}\n searchInputElement={searchInputElement}\n showIcons={showIcons}\n />\n </>\n )\n})\n","import {ArrowLeftIcon} from '@sanity/icons'\nimport {memo, type ReactNode, useMemo} from 'react'\nimport {type GeneralPreviewLayoutKey, type InitialValueTemplateItem} from 'sanity'\n\nimport {Button, TooltipDelayGroupProvider} from '../../../ui-components'\nimport {\n BackLink,\n PaneHeader as StructurePaneHeader,\n PaneHeaderActions,\n usePane,\n} from '../../components'\nimport {\n type PaneMenuItem,\n type PaneMenuItemGroup,\n type StructureToolPaneActionHandler,\n} from '../../types'\nimport {useStructureTool} from '../../useStructureTool'\nimport {type SortOrder} from './types'\n\ninterface PaneHeaderProps {\n contentAfter?: ReactNode\n index: number\n initialValueTemplates?: InitialValueTemplateItem[]\n menuItemGroups?: PaneMenuItemGroup[]\n menuItems?: PaneMenuItem[]\n setLayout: (layout: GeneralPreviewLayoutKey) => void\n setSortOrder: (sortOrder: SortOrder) => void\n title: string\n}\n\nexport const PaneHeader = memo(\n ({\n contentAfter,\n index,\n initialValueTemplates = [],\n menuItemGroups = [],\n menuItems = [],\n setLayout,\n setSortOrder,\n title,\n }: PaneHeaderProps) => {\n const {features} = useStructureTool()\n const {collapsed, isLast} = usePane()\n // Prevent focus if this is the last (non-collapsed) pane.\n const tabIndex = isLast && !collapsed ? -1 : 0\n\n const actionHandlers = useMemo((): Record<string, StructureToolPaneActionHandler> => {\n return {\n setLayout: ({layout: value}: {layout: GeneralPreviewLayoutKey}) => {\n setLayout(value)\n },\n setSortOrder: (sort: SortOrder) => {\n setSortOrder(sort)\n },\n }\n }, [setLayout, setSortOrder])\n\n return (\n <TooltipDelayGroupProvider>\n <StructurePaneHeader\n actions={\n <PaneHeaderActions\n initialValueTemplateItems={initialValueTemplates}\n actionHandlers={actionHandlers}\n menuItemGroups={menuItemGroups}\n menuItems={menuItems}\n />\n }\n backButton={\n features.backButton &&\n index > 0 && (\n <Button\n as={BackLink}\n data-as=\"a\"\n icon={ArrowLeftIcon}\n mode=\"bleed\"\n tooltipProps={{content: 'Back'}}\n />\n )\n }\n contentAfter={contentAfter}\n tabIndex={tabIndex}\n title={title}\n />\n </TooltipDelayGroupProvider>\n )\n },\n)\n\nPaneHeader.displayName = 'Memo(PaneHeader)'\n","/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\n };\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? typeof String.prototype.replaceAll === 'function' ? accessorKey.replaceAll('.', '_') : accessorKey.replace(/\\./g, '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined;\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\n//\n\nfunction createHeader(table, column, options) {\n var _options$id;\n const id = (_options$id = options.id) != null ? _options$id : column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.getHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.getLeftHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.getRightHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? subRows : [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || feature.createRow(row, table);\n }\n return row;\n};\n\n//\n\nconst ColumnFaceting = {\n createColumn: (column, table) => {\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _filterValue$toString, _row$getValue;\n const search = filterValue == null || (_filterValue$toString = filterValue.toString()) == null ? void 0 : _filterValue$toString.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst ColumnFiltering = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.getCanFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousFilter) {\n var _old$map;\n return (_old$map = old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n },\n createRow: (row, _table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst ColumnGrouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _toString, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.getCanGroup = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGrouping) != null ? _table$options$enable : true) && (!!column.accessorFn || !!column.columnDef.getGroupingValue);\n };\n column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n };\n },\n createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst ColumnOrdering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst ColumnPinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.pin = position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {\n const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n }\n};\n\n//\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.getSize = () => {\n var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);\n };\n column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.getCanResize = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);\n };\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.getSize = () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;\n }\n };\n recurse(header);\n return sum;\n };\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n };\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const contextDocument = _contextDocument || typeof document !== 'undefined' ? document : null;\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n };\n },\n createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.resetHeaderSizeInfo = defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n };\n table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst ColumnVisibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _ref, _table$getState$colum;\n const childColumns = column.columns;\n return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;\n };\n column.getCanHide = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n };\n column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.toggleAllColumnsVisible = value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n}\n\n//\n\nconst GlobalFaceting = {\n createTable: table => {\n table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n };\n }\n};\n\n//\n\nconst GlobalFiltering = {\n getInitialState: state => {\n return {\n globalFilter: undefined,\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getCanGlobalFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;\n return ((_column$columnDef$ena = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGlobalFilter) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n }\n};\n\n//\n\nconst RowExpanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetExpanded = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n };\n table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n };\n table.getExpandedDepth = () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n };\n table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n };\n },\n createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = expanded) != null ? _expanded : !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n };\n row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst RowPagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetPageIndex = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n };\n table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.resetPagination = defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState());\n };\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n };\n table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n };\n //deprecated\n table.setPageCount = updater => table.setPagination(old => {\n var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n });\n table.getPageOptions = memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.getCanNextPage = () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n };\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.firstPage = () => {\n return table.setPageIndex(0);\n };\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1);\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.getPaginationRowModel = () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n };\n table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize);\n };\n table.getRowCount = () => {\n var _table$options$rowCou;\n return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length;\n };\n }\n};\n\n//\n\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst RowPinning = {\n getInitialState: state => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {\n let {\n id\n } = _ref;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref3;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _ref4, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_ref4 = position === 'top' ? table.getTopRows() : table.getBottomRows()) == null ? void 0 : _ref4.map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n },\n createTable: table => {\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table._getPinnedRows = (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n };\n table.getTopRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top], (allRows, topPinnedRowIds) => table._getPinnedRows(allRows, topPinnedRowIds, 'top'), getMemoOptions(table.options, 'debugRows', 'getTopRows'));\n table.getBottomRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.bottom], (allRows, bottomPinnedRowIds) => table._getPinnedRows(allRows, bottomPinnedRowIds, 'bottom'), getMemoOptions(table.options, 'debugRows', 'getBottomRows'));\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n };\n table.toggleAllPageRowsSelected = value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table);\n });\n return rowSelection;\n });\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.getSelectedRowModel = memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.getFilteredSelectedRowModel = memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.getGroupedSelectedRowModel = memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n };\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n };\n table.getIsSomeRowsSelected = () => {\n var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n };\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.getCanSelect = () => {\n var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n };\n row.getCanSelectSubRows = () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n };\n row.getCanMultiSelect = () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n };\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst RowSorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_table$options$sortin = (_table$options$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n };\n column.getFirstSortDir = () => {\n var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n };\n column.getNextSortingOrder = multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n };\n column.getCanSort = () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n };\n column.getCanMultiSort = () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n };\n column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n };\n }\n};\n\nconst builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting,\n//depends on ColumnFaceting\nGlobalFiltering,\n//depends on ColumnFiltering\nRowSorting, ColumnGrouping,\n//depends on RowSorting\nRowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n var _options$_features, _options$initialState;\n if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {\n console.info('Creating Table Instance...');\n }\n const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];\n let table = {\n _features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\n if (!queuedTimeout) {\n queuedTimeout = true;\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue$to, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || feature.createTable(table);\n }\n return table;\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parentRow) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(table, table._getRowId(originalRows[i], i, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return undefined;\n const uniqueValues = facetedRowModel.flatRows.flatMap(flatRow => {\n var _flatRow$getUniqueVal;\n return (_flatRow$getUniqueVal = flatRow.getUniqueValues(columnId)) != null ? _flatRow$getUniqueVal : [];\n }).map(Number).filter(value => !Number.isNaN(value));\n if (!uniqueValues.length) return;\n let facetedMinValue = uniqueValues[0];\n let facetedMaxValue = uniqueValues[uniqueValues.length - 1];\n for (const value of uniqueValues) {\n if (value < facetedMinValue) facetedMinValue = value;else if (value > facetedMaxValue) facetedMaxValue = value;\n }\n return [facetedMinValue, facetedMaxValue];\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value\n });\n });\n const filterableIds = (columnFilters != null ? columnFilters : []).map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n rowModel.rows.forEach(row => {\n row.depth = 0;\n row.parentId = undefined;\n });\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n subRows.forEach(subRow => {\n subRow.parentId = id;\n });\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth, undefined, parentId);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column == null ? void 0 : column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0);\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({\n ...row\n }));\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const sortUndefined = columnInfo.sortUndefined;\n const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\n}\n\nexport { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, GlobalFaceting, GlobalFiltering, Headers, RowExpanding, RowPagination, RowPinning, RowSelection, RowSorting, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.mjs.map\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\nimport {type SanityDocument} from '@sanity/client'\nimport {Checkbox} from '@sanity/ui'\nimport {type CellContext} from '@tanstack/react-table'\nimport {type MouseEvent, useCallback} from 'react'\n\nexport function DocumentSheetListSelect(props: CellContext<SanityDocument, unknown>) {\n const {row, table} = props\n\n const {selectedAnchor, setSelectedAnchor} = table.options.meta || {}\n\n const handleOnClick = useCallback(\n (e: MouseEvent<HTMLInputElement>) => {\n if (e.shiftKey && selectedAnchor !== null && selectedAnchor !== undefined) {\n const shiftClickIndex = row.index\n const lowerIndex = shiftClickIndex < selectedAnchor ? shiftClickIndex : selectedAnchor\n const upperIndex = shiftClickIndex < selectedAnchor ? selectedAnchor : shiftClickIndex\n\n const additionalSelectedRows = table\n .getRowModel()\n .flatRows.slice(lowerIndex, upperIndex + 1)\n .map(({id}) => id)\n\n const currentSelectedRows = table.getSelectedRowModel().rows.map(({id}) => id)\n table.setRowSelection(() =>\n [...additionalSelectedRows, ...currentSelectedRows].reduce(\n (nextSelectedRows, rowId) => ({...nextSelectedRows, [rowId]: true}),\n {},\n ),\n )\n } else if (setSelectedAnchor) {\n const isRowCurrentlySelected = row.getIsSelected()\n if (isRowCurrentlySelected) {\n // about to unselect so invalidate current anchor\n setSelectedAnchor(null)\n } else {\n // override anchor with new selection index\n setSelectedAnchor(row.index)\n }\n\n row.toggleSelected()\n }\n },\n [selectedAnchor, row, setSelectedAnchor, table],\n )\n\n return (\n <Checkbox\n style={{paddingLeft: 4}}\n checked={props.row.getIsSelected()}\n disabled={!props.row.getCanSelect()}\n // onChange doesn't have shiftKey in event, but want to control this checkbox\n // need to define noop onChange to suppress the warning\n // eslint-disable-next-line react/jsx-no-bind\n onChange={() => null}\n onClick={handleOnClick}\n />\n )\n}\n","import {type SanityDocument} from '@sanity/types'\nimport {type Table} from '@tanstack/react-table'\nimport {type ReactNode, useCallback, useContext, useEffect, useMemo, useState} from 'react'\nimport {DocumentSheetListContext} from 'sanity/_singletons'\n\ninterface DocumentSheetListProviderProps {\n children?: ReactNode\n table: Table<SanityDocument>\n}\n\ntype SelectedCellDetails = {\n colId: string\n rowIndex: number\n state: 'focused' | 'selected'\n} | null\n\n/** @internal */\nexport interface DocumentSheetListContextValue {\n focusAnchorCell: () => void\n resetFocusSelection: () => void\n setSelectedAnchorCell: (colId: string, rowIndex: number) => void\n getStateByCellId: (\n colId: string,\n rowIndex: number,\n ) => 'focused' | 'selectedAnchor' | 'selectedRange' | null\n submitFocusedCell: () => void\n}\n\n/** @internal */\nexport const useDocumentSheetListContext = (): DocumentSheetListContextValue => {\n const context = useContext(DocumentSheetListContext)\n\n if (context === undefined) {\n throw new Error('useDocumentSheetListContext must be used within an DocumentSheetListProvider')\n }\n return context\n}\n\n/** @internal */\nexport function DocumentSheetListProvider({\n children,\n table,\n}: DocumentSheetListProviderProps): ReactNode {\n const [selectedAnchorCellDetails, setSelectedAnchorCellDetails] =\n useState<SelectedCellDetails>(null)\n const [selectedRangeCellIndexes, setSelectedRangeCellIndexes] = useState<number[]>([])\n\n const clearAndSetFocusSelection = useCallback(\n (nextAnchorDetails: SelectedCellDetails = null) => {\n if (\n selectedAnchorCellDetails?.state === 'focused' &&\n document.activeElement instanceof HTMLElement\n ) {\n document.activeElement.blur()\n }\n\n setSelectedAnchorCellDetails(nextAnchorDetails)\n setSelectedRangeCellIndexes([])\n },\n [selectedAnchorCellDetails],\n )\n\n const resetFocusSelection = useCallback(\n () => clearAndSetFocusSelection(),\n [clearAndSetFocusSelection],\n )\n\n const changeSelectionColumn = useCallback(\n (direction: 'left' | 'right') => {\n if (!selectedAnchorCellDetails) return\n\n const visibleColumns = table.getVisibleLeafColumns()\n const columnIndexAfterMove =\n visibleColumns.findIndex((col) => col.id === selectedAnchorCellDetails.colId) +\n (direction === 'left' ? -1 : 1)\n\n if (columnIndexAfterMove < 0 || columnIndexAfterMove >= visibleColumns.length) return\n\n clearAndSetFocusSelection({\n colId: visibleColumns[columnIndexAfterMove].id,\n rowIndex: selectedAnchorCellDetails.rowIndex,\n state: 'selected',\n })\n },\n [clearAndSetFocusSelection, selectedAnchorCellDetails, table],\n )\n\n const changeSelectionRange = useCallback(\n (direction: 'up' | 'down') => {\n if (!selectedAnchorCellDetails) return\n\n setSelectedRangeCellIndexes((previousSelection) => {\n const {rowIndex: anchorIndex} = selectedAnchorCellDetails\n const getNextIndex = (startingIndex: number) =>\n startingIndex + (direction === 'down' ? 1 : -1)\n // if no cells are selected, select the cell in the direction\n if (!previousSelection.length) {\n const firstSelectedIndex = getNextIndex(anchorIndex)\n if (firstSelectedIndex < 0) return []\n return [firstSelectedIndex]\n }\n const lastIndexSelected = previousSelection[previousSelection.length - 1]\n const nextIndex = getNextIndex(lastIndexSelected)\n\n // if the cell in the direction is out of bounds, return the previous selection\n if (nextIndex < 0) return previousSelection\n\n // if the cell in the direction is the same as the focused cell, deselect all cells\n if (nextIndex === anchorIndex) return []\n\n // if the cell in the direction is already selected, deselect the last selected cell\n if (previousSelection.includes(nextIndex)) {\n return previousSelection.slice(0, -1)\n }\n\n return [...previousSelection, nextIndex]\n })\n },\n [selectedAnchorCellDetails],\n )\n\n const setSelectedAnchorCell = useCallback(\n (colId: string, rowIndex: number) => {\n clearAndSetFocusSelection({colId, rowIndex, state: 'selected'})\n },\n [clearAndSetFocusSelection],\n )\n\n const handleEscapePress = useCallback(() => {\n if (!selectedAnchorCellDetails) return\n if (selectedRangeCellIndexes.length) {\n // only clear selected range if it exists\n setSelectedRangeCellIndexes([])\n } else {\n const nextAnchorCellDetails: SelectedCellDetails =\n selectedAnchorCellDetails.state === 'selected'\n ? null\n : {\n ...selectedAnchorCellDetails,\n state: 'selected',\n }\n clearAndSetFocusSelection(nextAnchorCellDetails)\n }\n }, [clearAndSetFocusSelection, selectedAnchorCellDetails, selectedRangeCellIndexes.length])\n\n const handleUpDownKey = useCallback(\n (isShiftKey: boolean, key: string) => {\n if (!selectedAnchorCellDetails) return\n\n const direction = key === 'ArrowDown' ? 'down' : 'up'\n const offset = direction === 'down' ? 1 : -1\n\n if (isShiftKey) {\n changeSelectionRange(direction)\n } else {\n const newSelectedCellRowIndex = selectedAnchorCellDetails.rowIndex + offset\n if (newSelectedCellRowIndex < 0) return\n\n setSelectedAnchorCell(selectedAnchorCellDetails.colId, newSelectedCellRowIndex)\n }\n },\n [changeSelectionRange, selectedAnchorCellDetails, setSelectedAnchorCell],\n )\n\n const handleAnchorKeydown = useCallback(\n (event: KeyboardEvent) => {\n if (!selectedAnchorCellDetails) return\n\n const {key, shiftKey} = event\n\n switch (key) {\n case 'Shift':\n break // shift allow should do nothing\n\n case 'Escape':\n handleEscapePress()\n break\n\n case 'ArrowDown':\n case 'ArrowUp':\n event.preventDefault()\n handleUpDownKey(shiftKey, key)\n break\n\n case 'ArrowLeft':\n case 'ArrowRight':\n // when cell is focused, arrows should have default behavior\n // only prevent default when cell is selected\n if (selectedAnchorCellDetails.state === 'selected') {\n event.preventDefault()\n changeSelectionColumn(key === 'ArrowLeft' ? 'left' : 'right')\n }\n break\n\n default:\n break\n }\n },\n [selectedAnchorCellDetails, handleEscapePress, handleUpDownKey, changeSelectionColumn],\n )\n\n const handleAnchorClick = useCallback(\n (event: MouseEvent) => {\n if (!selectedAnchorCellDetails) return\n const isClickInAnchorCell = document\n .getElementById(\n `cell-${selectedAnchorCellDetails.colId}-${selectedAnchorCellDetails.rowIndex}`,\n )\n ?.contains(event.target as Node)\n\n if (!isClickInAnchorCell) resetFocusSelection()\n },\n [resetFocusSelection, selectedAnchorCellDetails],\n )\n\n useEffect(() => {\n if (selectedAnchorCellDetails) {\n document.addEventListener('keydown', handleAnchorKeydown)\n document.addEventListener('click', handleAnchorClick)\n }\n\n return () => {\n if (selectedAnchorCellDetails) {\n document.removeEventListener('keydown', handleAnchorKeydown)\n document.removeEventListener('click', handleAnchorClick)\n }\n }\n }, [handleAnchorClick, handleAnchorKeydown, selectedAnchorCellDetails])\n\n const focusAnchorCell = useCallback(\n () =>\n setSelectedAnchorCellDetails((anchorCellDetails) => {\n if (!anchorCellDetails) return null\n\n return {...anchorCellDetails, state: 'focused'}\n }),\n [],\n )\n\n const getStateByCellId = useCallback(\n (colId: string, rowIndex: number) => {\n if (selectedAnchorCellDetails?.colId !== colId) return null\n\n if (selectedAnchorCellDetails.rowIndex === rowIndex)\n return selectedAnchorCellDetails.state === 'focused' ? 'focused' : 'selectedAnchor'\n\n if (selectedRangeCellIndexes.includes(rowIndex)) return 'selectedRange'\n\n return null\n },\n [selectedAnchorCellDetails, selectedRangeCellIndexes],\n )\n\n const submitFocusedCell = useCallback(() => {\n if (!selectedAnchorCellDetails) return\n\n clearAndSetFocusSelection({\n colId: selectedAnchorCellDetails.colId,\n rowIndex: selectedAnchorCellDetails.rowIndex + 1,\n state: 'selected',\n })\n }, [clearAndSetFocusSelection, selectedAnchorCellDetails])\n\n const value = useMemo<DocumentSheetListContextValue>(\n () => ({\n focusAnchorCell,\n resetFocusSelection,\n setSelectedAnchorCell,\n getStateByCellId,\n submitFocusedCell,\n }),\n [\n focusAnchorCell,\n resetFocusSelection,\n setSelectedAnchorCell,\n getStateByCellId,\n submitFocusedCell,\n ],\n )\n\n return (\n <DocumentSheetListContext.Provider value={value}>{children}</DocumentSheetListContext.Provider>\n )\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\n/* eslint-disable i18next/no-literal-string */\nimport {type ObjectFieldType} from '@sanity/types'\nimport {Select, TextInput} from '@sanity/ui'\nimport {type Cell, type CellContext, flexRender} from '@tanstack/react-table'\nimport {type MouseEventHandler, useCallback, useEffect, useRef, useState} from 'react'\nimport {type SanityDocument} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {useDocumentSheetListContext} from './DocumentSheetListProvider'\n\nconst DataCell = styled.td<{width: number}>`\n display: flex;\n overflow: hidden;\n box-sizing: border-box;\n width: ${({width}) => width}px;\n border-top: 1px solid var(--card-border-color);\n background-color: var(--card-bg-color);\n`\n\nconst PinnedDataCell = styled(DataCell)`\n position: sticky;\n z-index: 2;\n`\n\ninterface SheetListCellInnerProps extends CellContext<SanityDocument, unknown> {\n fieldType: ObjectFieldType\n}\n\ntype CellInputElement = HTMLInputElement | HTMLSelectElement\ntype InputRef = CellInputElement | null\n\n/** @internal */\nexport function SheetListCellInner(props: SheetListCellInnerProps) {\n const {getValue, column, row, fieldType} = props\n const cellId = `cell-${column.id}-${row.index}`\n const [renderValue, setRenderValue] = useState<string>(getValue() as string)\n const [isDirty, setIsDirty] = useState(false)\n const inputRef = useRef<InputRef>(null)\n const {\n focusAnchorCell,\n resetFocusSelection,\n setSelectedAnchorCell,\n getStateByCellId,\n submitFocusedCell,\n } = useDocumentSheetListContext()\n const cellState = getStateByCellId(column.id, row.index)\n\n const handleOnFocus = useCallback(() => {\n // reselect in cases where focus achieved without initial mousedown\n setSelectedAnchorCell(column.id, row.index)\n focusAnchorCell()\n }, [column.id, focusAnchorCell, row.index, setSelectedAnchorCell])\n const {patchDocument} = props.table.options.meta || {}\n\n const handleProgrammaticFocus = () => {\n inputRef.current?.focus()\n if (inputRef.current instanceof HTMLInputElement) {\n inputRef.current.select()\n }\n }\n\n const handleOnMouseDown: MouseEventHandler<CellInputElement> = (event) => {\n if (event.detail === 2) {\n handleProgrammaticFocus()\n } else {\n event.preventDefault()\n setSelectedAnchorCell(column.id, row.index)\n }\n }\n\n const handleOnEnterDown = useCallback(\n (event: KeyboardEvent) => {\n const {key} = event\n if (key === 'Enter') {\n if (cellState === 'selectedAnchor') handleProgrammaticFocus()\n if (cellState === 'focused') submitFocusedCell()\n }\n },\n [cellState, submitFocusedCell],\n )\n\n const handleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setIsDirty(true)\n setRenderValue(event.target.value)\n }\n\n const handleOnBlur = () => {\n if (isDirty) {\n patchDocument?.(row.id, column.id, renderValue)\n setIsDirty(false)\n }\n resetFocusSelection()\n }\n\n const handlePaste = useCallback(\n (event: ClipboardEvent) => {\n const clipboardData = event.clipboardData?.getData('Text')\n\n if (typeof clipboardData === 'string' || typeof clipboardData === 'number') {\n setRenderValue(clipboardData)\n // patch immediately when pasting\n patchDocument?.(row.id, column.id, clipboardData)\n }\n },\n [column.id, patchDocument, row.id],\n )\n\n const handleCopy = useCallback(() => {\n navigator.clipboard.writeText(renderValue.toString())\n }, [renderValue])\n\n useEffect(() => {\n if (cellState === 'selectedAnchor' || cellState === 'focused')\n // only listen for enter key when cell is focused or anchor\n document.addEventListener('keydown', handleOnEnterDown)\n if (cellState === 'selectedAnchor' || cellState === 'selectedRange')\n // if cell is selected, paste events should be handled\n document.addEventListener('paste', handlePaste)\n\n if (cellState === 'selectedAnchor')\n // only allow copying when cell is selected anchor\n document.addEventListener('copy', handleCopy)\n\n return () => {\n if (cellState === 'selectedAnchor' || cellState === 'focused')\n document.removeEventListener('keydown', handleOnEnterDown)\n if (cellState === 'selectedAnchor' || cellState === 'selectedRange')\n document.removeEventListener('paste', handlePaste)\n if (cellState === 'selectedAnchor') document.removeEventListener('copy', handleCopy)\n }\n }, [\n cellId,\n cellState,\n column.id,\n getStateByCellId,\n handleCopy,\n handleOnEnterDown,\n handlePaste,\n row.index,\n ])\n\n const getBorderStyle = () => {\n if (cellState === 'focused') return '2px solid blue'\n if (cellState === 'selectedRange') return '1px solid green'\n if (cellState === 'selectedAnchor') return '1px solid blue'\n\n return '1px solid transparent'\n }\n\n const inputProps = {\n 'onFocus': handleOnFocus,\n 'onBlur': handleOnBlur,\n 'onMouseDown': handleOnMouseDown,\n 'aria-selected': !!cellState,\n 'data-testid': cellId,\n 'id': cellId,\n 'ref': (ref: InputRef) => {\n inputRef.current = ref\n },\n }\n\n if (fieldType.name === 'boolean') {\n return (\n <Select\n {...inputProps}\n onChange={() => null}\n radius={0}\n style={{\n boxShadow: 'none',\n border: getBorderStyle(),\n padding: 0,\n }}\n value={JSON.stringify(renderValue)}\n >\n <option value=\"True\">True</option>\n <option value=\"False\">False</option>\n </Select>\n )\n }\n\n return (\n <TextInput\n {...inputProps}\n size={0}\n radius={0}\n border={false}\n style={{\n border: getBorderStyle(),\n padding: '22px 16px',\n }}\n value={\n typeof renderValue === 'string' || typeof renderValue === 'number'\n ? renderValue\n : JSON.stringify(renderValue)\n }\n onChange={handleOnChange}\n />\n )\n}\n\n/** @internal */\nexport function SheetListCell(cell: Cell<SanityDocument, unknown>) {\n const isPinned = cell.column.getIsPinned()\n const Cell = isPinned ? PinnedDataCell : DataCell\n const borderWidth = isPinned && cell.column.getIsLastColumn('left') ? 2 : 1\n\n return (\n <Cell\n key={cell.row.original._id + cell.id}\n style={{\n left: cell.column.getStart('left') ?? undefined,\n borderRight: `${borderWidth}px solid var(--card-border-color)`,\n }}\n width={cell.column.getSize()}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext?.())}\n </Cell>\n )\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\nimport {isObjectSchemaType, type ObjectSchemaType} from '@sanity/types'\nimport {Box, Checkbox, Flex, Text} from '@sanity/ui'\nimport {\n type AccessorKeyColumnDef,\n createColumnHelper,\n type GroupColumnDef,\n type VisibilityState,\n} from '@tanstack/react-table'\nimport {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {\n type DocumentPreviewStore,\n DocumentStatusIndicator,\n getPreviewStateObservable,\n type SanityDocument,\n type SchemaType,\n useDocumentPreviewStore,\n} from 'sanity'\n\nimport {DocumentSheetListSelect} from './DocumentSheetListSelect'\nimport {SheetListCellInner} from './SheetListCell'\n\nexport const VISIBLE_COLUMN_LIMIT = 5\n\nconst PreviewCell = (props: {\n documentPreviewStore: DocumentPreviewStore\n schemaType: SchemaType\n row: {\n original: SanityDocument\n }\n}) => {\n const {documentPreviewStore, row, schemaType} = props\n const title = 'Document title'\n const previewStateObservable = useMemo(\n () => getPreviewStateObservable(documentPreviewStore, schemaType, row.original._id, title),\n [documentPreviewStore, row.original._id, schemaType],\n )\n const {draft, published, isLoading} = useObservable(previewStateObservable, {\n draft: null,\n isLoading: true,\n published: null,\n })\n if (isLoading) {\n return (\n <Text size={1} muted>\n Loading...\n </Text>\n )\n }\n const displayValue = (draft?.title ?? published?.title ?? 'Untitled') as string\n return (\n <Flex align=\"center\" gap={3}>\n <DocumentStatusIndicator draft={draft} published={published} versions={undefined} />\n <Text size={1}>{displayValue}</Text>\n </Flex>\n )\n}\n\nconst columnHelper = createColumnHelper<SanityDocument>()\nconst SUPPORTED_FIELDS = ['string', 'number', 'boolean']\n\ntype Columns = (\n | AccessorKeyColumnDef<SanityDocument, unknown>\n | GroupColumnDef<SanityDocument, unknown>\n)[]\n\nconst getColsFromSchemaType = (schemaType: ObjectSchemaType, parentalField?: string): Columns => {\n return schemaType.fields.reduce<Columns>((tableColumns: Columns, field) => {\n const {type, name} = field\n if (SUPPORTED_FIELDS.includes(type.name)) {\n const nextCol = columnHelper.accessor(\n // accessor must use dot notation for internal tanstack method of reading cell data\n parentalField ? `${parentalField}.${field.name}` : field.name,\n {\n id: parentalField ? `${parentalField}_${field.name}` : field.name,\n header: field.type.title,\n enableHiding: true,\n cell: (info) => <SheetListCellInner {...info} fieldType={type} />,\n },\n )\n\n return [...tableColumns, nextCol]\n }\n\n // if first layer nested object\n if (type.name === 'object' && isObjectSchemaType(type) && !parentalField) {\n return [\n ...tableColumns,\n columnHelper.group({header: name, columns: getColsFromSchemaType(type, field.name)}),\n ]\n }\n\n return tableColumns\n }, [])\n}\n\n// Type guard function to check if a column is of type GroupColumnDef\nfunction isAccessorKeyColumnDef(\n column: Columns[number],\n): column is AccessorKeyColumnDef<SanityDocument, unknown> {\n return 'accessorKey' in column\n}\nfunction isGroupColumnDef(\n column: AccessorKeyColumnDef<SanityDocument, unknown> | GroupColumnDef<SanityDocument, unknown>,\n): column is GroupColumnDef<SanityDocument, unknown> {\n return 'columns' in column\n}\n\nconst flatColumns = (cols: Columns): AccessorKeyColumnDef<SanityDocument, unknown>[] => {\n return cols.flatMap((col) => {\n if (isAccessorKeyColumnDef(col)) {\n return col\n }\n if (isGroupColumnDef(col)) {\n return col.columns ? flatColumns(col.columns) : []\n }\n return []\n })\n}\n\nexport function useDocumentSheetColumns(documentSchemaType?: ObjectSchemaType) {\n const documentPreviewStore = useDocumentPreviewStore()\n\n const columns: Columns = useMemo(() => {\n if (!documentSchemaType) {\n return []\n }\n return [\n columnHelper.display({\n id: 'selected',\n enableHiding: false,\n header: (info) => (\n <Box>\n <Checkbox\n style={{paddingLeft: 4}}\n indeterminate={info.table.getIsSomeRowsSelected()}\n onChange={info.table.getToggleAllPageRowsSelectedHandler()}\n />\n {/* eslint-disable-next-line i18next/no-literal-string */}\n {info.table.getSelectedRowModel().rows.length} selected\n </Box>\n ),\n cell: DocumentSheetListSelect,\n }),\n columnHelper.accessor('Preview', {\n enableHiding: false,\n id: 'Preview',\n cell: (info) => {\n return (\n <PreviewCell\n {...info}\n documentPreviewStore={documentPreviewStore}\n schemaType={documentSchemaType}\n />\n )\n },\n }),\n ...getColsFromSchemaType(documentSchemaType),\n ]\n }, [documentPreviewStore, documentSchemaType])\n\n const [initialColumnsVisibility]: [VisibilityState, number] = useMemo(\n () =>\n flatColumns(columns).reduce<[VisibilityState, number]>(\n ([accCols, countAllowedVisible], column) => {\n if (!column.id) throw new Error('Column must have an id')\n const visibilityKey = column.id\n\n // this column is always visible\n if (!column.enableHiding) {\n return [{...accCols, [visibilityKey]: true}, countAllowedVisible]\n }\n\n // have already reached column visibility limit, hide column by default\n if (countAllowedVisible === VISIBLE_COLUMN_LIMIT) {\n return [{...accCols, [visibilityKey]: false}, countAllowedVisible]\n }\n\n return [{...accCols, [visibilityKey]: true}, countAllowedVisible + 1]\n },\n [{}, 0],\n ),\n [columns],\n )\n\n return {columns, initialColumnsVisibility}\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\nimport {Box, Checkbox, Flex, Menu, Stack, Text} from '@sanity/ui'\nimport {type Column, type Table} from '@tanstack/react-table'\nimport {useCallback} from 'react'\nimport {type SanityDocument, useTranslation} from 'sanity'\n\nimport {Button, MenuButton} from '../../../../ui-components'\nimport {VISIBLE_COLUMN_LIMIT} from './useDocumentSheetColumns'\n\ntype ColumnsControlProps = {\n table: Table<SanityDocument>\n}\n\nexport function ColumnsControl({table}: ColumnsControlProps) {\n const {t} = useTranslation()\n const isVisibleLimitReached =\n table.getVisibleLeafColumns().filter((col) => col.getCanHide()).length >= VISIBLE_COLUMN_LIMIT\n\n const setInitialColumns = useCallback(() => {\n table.resetColumnVisibility()\n }, [table])\n\n const handleColumnOnChange = (column: Column<SanityDocument, unknown>) => () => {\n column.toggleVisibility()\n }\n\n const getColumnVisibilityDisabled = (column: Column<SanityDocument, unknown>) => {\n const isColumnVisible = column.getIsVisible()\n const isSingleColumnVisible =\n table.getVisibleLeafColumns().filter((col) => col.getCanHide()).length === 1\n\n return (isVisibleLimitReached && !isColumnVisible) || (isSingleColumnVisible && isColumnVisible)\n }\n\n return (\n <MenuButton\n button={<Button mode=\"bleed\" text={t('sheet-list.edit-columns')} />}\n id=\"columns-control\"\n menu={\n <Menu padding={3} paddingTop={4} style={{width: 240}}>\n <Flex direction=\"column\" height=\"fill\" gap={3}>\n <Text weight=\"semibold\" size={1}>\n {t('sheet-list.select-fields')}\n </Text>\n <Flex style={{flex: '1 1 auto', maxHeight: 320, overflowY: 'scroll'}}>\n <Stack>\n {table\n .getAllLeafColumns()\n .filter((column) => column.getCanHide())\n .map((column) => (\n <Flex key={column.id} marginY={2} align=\"center\">\n <Checkbox\n readOnly={getColumnVisibilityDisabled(column)}\n checked={column.getIsVisible()}\n onChange={handleColumnOnChange(column)}\n id={`col-visibility-${column.id}`}\n style={{display: 'block'}}\n />\n <Box flex={1} paddingLeft={3}>\n <Text size={1}>\n <label htmlFor={`col-visibility-${column.id}`}>\n {column.columnDef.header?.toString()}\n </label>\n </Text>\n </Box>\n </Flex>\n ))}\n </Stack>\n </Flex>\n <Button\n width=\"fill\"\n mode=\"ghost\"\n text={t('sheet-list.reset-columns')}\n onClick={setInitialColumns}\n />\n </Flex>\n </Menu>\n }\n placement=\"bottom\"\n popover={{portal: true}}\n />\n )\n}\n","import {Flex} from '@sanity/ui'\nimport {Filters, SearchHeader, useSearchState} from 'sanity'\nimport {styled} from 'styled-components'\n\nconst SearchContainer = styled(Flex)`\n flex-shrink: 0;\n`\n\nexport function DocumentSheetListFilter() {\n const {\n state: {filtersVisible},\n } = useSearchState()\n\n return (\n <SearchContainer>\n <SearchHeader />\n {filtersVisible && <Filters showTypeFilter={false} />}\n </SearchContainer>\n )\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\nimport {CloseIcon, EllipsisHorizontalIcon} from '@sanity/icons'\nimport {type SanityDocument} from '@sanity/types'\nimport {Box, Flex, Menu, Text} from '@sanity/ui'\nimport {flexRender, type Header as HeaderType, type HeaderGroup} from '@tanstack/react-table'\nimport {useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button, MenuButton, MenuItem, Tooltip} from '../../../../ui-components'\n\nconst Header = styled.th<{width: number}>`\n margin: 16px;\n z-index: 1;\n padding: 22px 0px;\n border-top: 1px solid var(--card-border-color);\n background-color: var(--card-badge-default-bg-color);\n box-sizing: border-box;\n text-align: left;\n width: ${({width}) => width}px;\n max-width: ${({width}) => width}px;\n`\n\nconst PinnedHeader = styled(Header)`\n position: sticky;\n z-index: 2;\n`\n\nconst HoverMenu = styled.div`\n visibility: hidden;\n\n ${Header}:hover & {\n visibility: visible;\n }\n`\n\ntype DocumentSheetListHeaderProps = {\n header: HeaderType<SanityDocument, unknown>\n headerGroup: HeaderGroup<SanityDocument>\n}\n\nexport function DocumentSheetListHeader(props: DocumentSheetListHeaderProps) {\n const {header, headerGroup} = props\n const {t} = useTranslation()\n\n const isPinned = header.column.getIsPinned()\n\n const headerTitle =\n headerGroup.depth > 0 && !header.column.parent ? null : (\n <Text size={1} weight=\"semibold\" textOverflow=\"ellipsis\">\n {flexRender(header.column.columnDef.header, header.getContext())}\n </Text>\n )\n\n const HeaderTag = isPinned ? PinnedHeader : Header\n\n const canShowHeaderMenu =\n header.column.getCanHide() &&\n (headerGroup.depth === 0 ? !header.column.columns.length : header.column.parent)\n\n const borderWidth = isPinned && header.column.getIsLastColumn('left') ? 2 : 1\n\n return (\n <HeaderTag\n style={{\n left: header.column.getStart('left') ?? undefined,\n borderRight: `${borderWidth}px solid var(--card-border-color)`,\n }}\n key={header.id}\n data-testid={`header-${header.id}`}\n width={header.getSize()}\n >\n <Flex justify=\"space-between\" marginX={2} align=\"baseline\">\n <Tooltip delay={500} content={headerTitle}>\n <Box style={{boxSizing: 'border-box'}} marginLeft={3} marginRight={3}>\n {headerTitle}\n </Box>\n </Tooltip>\n {canShowHeaderMenu && (\n <HoverMenu>\n <MenuButton\n button={\n <Button\n tooltipProps={{content: 'Open field menu'}}\n mode=\"bleed\"\n icon={EllipsisHorizontalIcon}\n data-testid=\"field-menu-button\"\n />\n }\n id=\"field menu\"\n popover={{placement: 'bottom-end'}}\n menu={\n <Menu>\n <MenuItem\n text={t('sheet-list.hide-field')}\n icon={CloseIcon}\n onClick={() => header.column.toggleVisibility()}\n />\n </Menu>\n }\n />\n </HoverMenu>\n )}\n </Flex>\n </HeaderTag>\n )\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\n/* eslint-disable i18next/no-literal-string */\n/* eslint-disable @sanity/i18n/no-attribute-string-literals */\n/* eslint-disable react/jsx-no-bind */\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n DoubleChevronLeftIcon,\n DoubleChevronRightIcon,\n} from '@sanity/icons'\nimport {Flex, Text} from '@sanity/ui'\nimport {type Table} from '@tanstack/react-table'\nimport {type SanityDocument} from 'sanity'\n\nimport {Button, TooltipDelayGroupProvider} from '../../../../ui-components'\n\nexport function DocumentSheetListPaginator({table}: {table: Table<SanityDocument>}) {\n return (\n <TooltipDelayGroupProvider>\n <Flex gap={3} align={'center'}>\n <Button\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n icon={DoubleChevronLeftIcon}\n tooltipProps={{\n content: 'Go to first page',\n }}\n />\n <Button\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n icon={ChevronLeftIcon}\n tooltipProps={{\n content: 'Go to previous page',\n }}\n />\n <Text style={{whiteSpace: 'nowrap'}}>\n {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n </Text>\n\n <Button\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n icon={ChevronRightIcon}\n tooltipProps={{\n content: 'Go to next page',\n }}\n />\n <Button\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n icon={DoubleChevronRightIcon}\n tooltipProps={{\n content: 'Go to last page',\n }}\n />\n <select\n value={table.getState().pagination.pageSize}\n onChange={(e) => {\n table.setPageSize(Number(e.target.value))\n }}\n >\n {[25, 50, 100].map((pageSize) => (\n <option key={pageSize} value={pageSize}>\n {pageSize}\n </option>\n ))}\n </select>\n </Flex>\n </TooltipDelayGroupProvider>\n )\n}\n","import {type ListenEvent, type ListenOptions} from '@sanity/client'\nimport {useCallback, useEffect, useMemo, useReducer, useState} from 'react'\nimport {catchError, of} from 'rxjs'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS, getDraftId, type SanityDocument, useClient} from 'sanity'\n\ninterface DocumentDeletedAction {\n id: string\n type: 'DOCUMENT_DELETED'\n}\n\ninterface DocumentUpdatedAction {\n payload: SanityDocument\n type: 'DOCUMENT_UPDATED'\n}\n\ninterface DocumentsSetAction {\n documents: SanityDocument[]\n type: 'DOCUMENTS_SET'\n}\n\ninterface DocumentReceivedAction {\n payload: SanityDocument\n type: 'DOCUMENT_RECEIVED'\n}\n\nexport type DocumentsReducerAction =\n | DocumentDeletedAction\n | DocumentUpdatedAction\n | DocumentsSetAction\n | DocumentReceivedAction\n\nexport interface DocumentsReducerState {\n documents: Record<string, SanityDocument>\n}\n\nfunction createDocumentsSet(documents: SanityDocument[]) {\n const documentsById = documents.reduce((acc, doc) => ({...acc, [doc._id]: doc}), {})\n return documentsById\n}\n\nfunction documentsReducer(\n state: DocumentsReducerState,\n action: DocumentsReducerAction,\n): DocumentsReducerState {\n switch (action.type) {\n case 'DOCUMENTS_SET': {\n // Create an object with the documents id as key\n const documents = createDocumentsSet(action.documents)\n\n return {\n ...state,\n documents: documents,\n }\n }\n\n case 'DOCUMENT_RECEIVED': {\n const nextDocumentResult = action.payload as SanityDocument\n\n return {\n ...state,\n documents: {\n ...state.documents,\n [nextDocumentResult._id]: nextDocumentResult,\n },\n }\n }\n\n case 'DOCUMENT_DELETED': {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {[action.id]: _, ...restDocuments} = state.documents\n\n return {\n ...state,\n documents: restDocuments,\n }\n }\n\n case 'DOCUMENT_UPDATED': {\n const updatedDocument = action.payload\n const id = updatedDocument._id as string\n const document = state.documents[id]\n\n const nextDocument = {\n // Add existing document data\n ...document,\n // Add incoming document data\n ...updatedDocument,\n } satisfies SanityDocument\n\n return {\n ...state,\n documents: {\n ...state.documents,\n [id]: nextDocument,\n },\n }\n }\n\n default:\n return state\n }\n}\n\nconst LISTEN_OPTIONS: ListenOptions = {\n events: ['welcome', 'mutation', 'reconnect'],\n includeResult: true,\n visibility: 'query',\n}\n\n/**\n * TODO:\n * [] Lazy load more documents, reduce initial fetch.\n * [] Add support for sorting and filtering.\n * [] Make a projection of the query according to the schema. e.g. get only the primitive fields and the _id to reduce the data payload.\n */\nexport function useDocumentSheetListStore({\n filter,\n params,\n apiVersion,\n}: {\n filter: string\n params?: Record<string, unknown>\n apiVersion?: string\n}) {\n const QUERY = `*[${filter}][0...2000]`\n const client = useClient({\n ...DEFAULT_STUDIO_CLIENT_OPTIONS,\n apiVersion: apiVersion || DEFAULT_STUDIO_CLIENT_OPTIONS.apiVersion,\n })\n const [state, dispatch] = useReducer(documentsReducer, {\n documents: {},\n })\n const [isLoading, setIsLoading] = useState<boolean>(client !== null)\n const [error, setError] = useState<Error | null>(null)\n\n const initialFetch = useCallback(async () => {\n if (!client) {\n setIsLoading(false)\n return\n }\n try {\n const res = await client.fetch(QUERY, params)\n dispatch({type: 'DOCUMENTS_SET', documents: res})\n setIsLoading(false)\n } catch (err) {\n setError(err)\n }\n }, [client, params, QUERY])\n\n const handleListenerEvent = useCallback(\n async (event: ListenEvent<Record<string, SanityDocument>>) => {\n // Fetch all documents on initial connection\n if (event.type === 'welcome') {\n setIsLoading(true)\n await initialFetch()\n setIsLoading(false)\n }\n\n // The reconnect event means that we are trying to reconnect to the realtime listener.\n // In this case we set loading to true to indicate that we're trying to\n // reconnect. Once a connection has been established, the welcome event\n // will be received and we'll fetch all documents again (above).\n if (event.type === 'reconnect') {\n setIsLoading(true)\n }\n\n // Handle mutations (create, update, delete) from the realtime listener\n // and update the documents store accordingly\n if (event.type === 'mutation') {\n if (event.transition === 'appear') {\n const nextDocument = event.result as SanityDocument | undefined\n\n if (nextDocument) {\n dispatch({\n type: 'DOCUMENT_RECEIVED',\n payload: nextDocument,\n })\n }\n }\n\n if (event.transition === 'disappear') {\n dispatch({type: 'DOCUMENT_DELETED', id: event.documentId})\n }\n\n if (event.transition === 'update') {\n const updatedDocument = event.result as SanityDocument | undefined\n\n if (updatedDocument) {\n dispatch({\n type: 'DOCUMENT_UPDATED',\n payload: updatedDocument,\n })\n }\n }\n }\n },\n [initialFetch],\n )\n\n const listener$ = useMemo(() => {\n if (!client) return of()\n\n const events$ = client.observable.listen(QUERY, params, LISTEN_OPTIONS).pipe(\n catchError((err) => {\n setError(err)\n return of(err)\n }),\n )\n\n return events$\n }, [client, params, QUERY])\n\n useEffect(() => {\n const sub = listener$.subscribe(handleListenerEvent)\n\n return () => {\n sub?.unsubscribe()\n }\n }, [handleListenerEvent, listener$])\n\n // Contemplate that we could have drafts and live documents here, merge them.\n const dataAsArray = useMemo(() => {\n // Joins the drafts and the live documents\n const uniques = Object.keys(state.documents).reduce(\n (acc: {[key: string]: SanityDocument}, key) => {\n const document = state.documents[key]\n const isDraft = document._id === getDraftId(document._id)\n const id = isDraft ? document._id : getDraftId(document._id)\n // If we already have the document, and this document is not the draft one, it means\n // the draft hast already been added to the list, so we skip it.\n if (acc[id] && !isDraft) {\n return acc\n }\n acc[id] = document\n return acc\n },\n {},\n )\n return Object.values(uniques)\n }, [state.documents])\n\n return {\n data: dataAsArray,\n isLoading,\n error,\n }\n}\n","import {useMemo} from 'react'\nimport {getPublishedId, useSearchState} from 'sanity'\n\nimport {useDocumentSheetListStore} from './useDocumentSheetListStore'\n\ninterface DocumentSheetListOptions {\n /** The schemaType.name */\n typeName: string\n}\n\nexport function useDocumentSheetList({typeName}: DocumentSheetListOptions) {\n const {state} = useSearchState()\n\n const items = useMemo(() => {\n const map = new Map()\n state.result.hits.forEach((h) => map.set(getPublishedId(h.hit._id), h.hit))\n return map\n }, [state.result.hits])\n\n // The store is listening to all the documents that match with the _type filter.\n const {data, isLoading} = useDocumentSheetListStore({\n filter: `_type == \"${typeName}\"`,\n })\n\n // Only return the documents that match with the serverSide filter items.\n const documents = useMemo(() => {\n return data.filter((doc) => items.has(getPublishedId(doc._id)))\n }, [data, items])\n\n return {data: documents, isLoading}\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\nimport {isDocumentSchemaType, type ObjectSchemaType, type SanityDocument} from '@sanity/types'\nimport {Box, Flex, Text} from '@sanity/ui'\nimport {\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n type Row,\n useReactTable,\n} from '@tanstack/react-table'\nimport {useCallback, useEffect, useState} from 'react'\nimport {SearchProvider, useSchema, useSearchState} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {type BaseStructureToolPaneProps} from '../../types'\nimport {ColumnsControl} from './ColumnsControl'\nimport {DocumentSheetListFilter} from './DocumentSheetListFilter'\nimport {DocumentSheetListHeader} from './DocumentSheetListHeader'\nimport {DocumentSheetListPaginator} from './DocumentSheetListPaginator'\nimport {DocumentSheetListProvider} from './DocumentSheetListProvider'\nimport {SheetListCell} from './SheetListCell'\nimport {useDocumentSheetColumns} from './useDocumentSheetColumns'\nimport {useDocumentSheetList} from './useDocumentSheetList'\n\ntype DocumentSheetListPaneProps = BaseStructureToolPaneProps<'documentList'>\n\nconst PaneContainer = styled(Flex)`\n height: 100%;\n`\nconst TableContainer = styled.div`\n overflow: auto; //our scrollable table container\n position: relative; //needed for sticky header\n`\nconst Table = styled.table`\n border-collapse: separate;\n border-spacing: 0;\n font-family: arial, sans-serif;\n white-space: nowrap;\n width: 100%;\n border: 1px solid lightgray;\n\n thead {\n display: grid;\n position: sticky;\n top: 0;\n z-index: 10;\n }\n tr {\n padding: 0;\n }\n tr:last-child {\n border-bottom: none;\n }\n`\n\nfunction DocumentSheetListPaneInner({\n documentSchemaType,\n}: DocumentSheetListPaneProps & {documentSchemaType: ObjectSchemaType}) {\n const {dispatch, state} = useSearchState()\n const {columns, initialColumnsVisibility} = useDocumentSheetColumns(documentSchemaType)\n const {data} = useDocumentSheetList({\n typeName: documentSchemaType.name,\n })\n const [selectedAnchor, setSelectedAnchor] = useState<number | null>(null)\n\n const totalRows = state.result.hits.length\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n // Avoids resetting the page index when the data changes, e.g. a mutation is received\n autoResetPageIndex: false,\n initialState: {\n columnPinning: {left: ['selected', 'Preview']},\n pagination: {pageSize: 25},\n columnVisibility: initialColumnsVisibility,\n },\n getRowId: (row) => row._id,\n meta: {\n selectedAnchor,\n setSelectedAnchor,\n patchDocument: (documentId, fieldId, value) => null,\n },\n })\n\n const {rows} = table.getRowModel()\n\n useEffect(() => {\n dispatch({type: 'TERMS_TYPE_ADD', schemaType: documentSchemaType})\n return () => {\n dispatch({type: 'TERMS_TYPE_REMOVE', schemaType: documentSchemaType})\n }\n }, [documentSchemaType, dispatch])\n\n const renderRow = useCallback((row: Row<SanityDocument>) => {\n return (\n <Box\n as=\"tr\"\n key={row.original._id + row.id}\n paddingY={2}\n style={{display: 'flex', width: '100%'}}\n >\n {row.getVisibleCells().map((cell) => (\n <SheetListCell {...cell} key={row.original._id + cell.id} />\n ))}\n </Box>\n )\n }, [])\n\n const rowsCount = `Total: ${totalRows} rows, showing ${rows.length} rows`\n return (\n <PaneContainer direction=\"column\" paddingX={3} data-testid=\"document-sheet-list-pane\">\n <Flex direction=\"row\" align=\"center\" paddingY={3} paddingX={1} justify=\"space-between\">\n <Flex direction=\"row\" align=\"center\">\n <DocumentSheetListFilter />\n <Text size={0} muted>\n {rowsCount}\n </Text>\n </Flex>\n <ColumnsControl table={table} />\n </Flex>\n <TableContainer>\n <DocumentSheetListProvider table={table}>\n <Table>\n <thead>\n {table.getHeaderGroups().map((headerGroup) => (\n <Box as=\"tr\" key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <DocumentSheetListHeader\n key={header.id}\n header={header}\n headerGroup={headerGroup}\n />\n ))}\n </Box>\n ))}\n </thead>\n <tbody>{table.getRowModel().rows.map(renderRow)}</tbody>\n </Table>\n </DocumentSheetListProvider>\n </TableContainer>\n <Flex justify={'flex-end'} padding={3} gap={4} paddingY={5}>\n <DocumentSheetListPaginator table={table} />\n </Flex>\n </PaneContainer>\n )\n}\n\nexport function DocumentSheetListPane(props: DocumentSheetListPaneProps) {\n const schema = useSchema()\n const typeName = props.pane.schemaTypeName\n\n const schemaType = schema.get(typeName)\n if (!schemaType || !isDocumentSchemaType(schemaType)) {\n throw new Error(`Schema type \"${typeName}\" not found or not a document schema`)\n }\n return (\n <SearchProvider>\n <DocumentSheetListPaneInner {...props} documentSchemaType={schemaType} />\n </SearchProvider>\n )\n}\n","import {Card, Code} from '@sanity/ui'\nimport {isEqual} from 'lodash'\nimport {memo, useMemo, useState} from 'react'\nimport {\n EMPTY_ARRAY,\n type GeneralDocumentListLayoutKey,\n SourceProvider,\n useI18nText,\n useSource,\n} from 'sanity'\nimport shallowEquals from 'shallow-equals'\n\nimport {Pane} from '../../components/pane'\nimport {_DEBUG} from '../../constants'\nimport {type PaneMenuItem} from '../../types'\nimport {useStructureToolSetting} from '../../useStructureToolSetting'\nimport {type BaseStructureToolPaneProps} from '../types'\nimport {DEFAULT_ORDERING, EMPTY_RECORD} from './constants'\nimport {DocumentListPane} from './DocumentListPane'\nimport {findStaticTypesInFilter} from './helpers'\nimport {PaneHeader} from './PaneHeader'\nimport {DocumentSheetListPane} from './sheetList/DocumentSheetListPane'\nimport {type SortOrder} from './types'\n\nconst addSelectedStateToMenuItems = (options: {\n menuItems?: PaneMenuItem[]\n sortOrderRaw?: SortOrder\n layout?: GeneralDocumentListLayoutKey\n}) => {\n const {menuItems, sortOrderRaw, layout} = options\n\n return menuItems?.map((item) => {\n if (item.params?.layout) {\n return {\n ...item,\n selected: layout === item.params?.layout,\n }\n }\n\n if (item?.params?.by) {\n return {\n ...item,\n selected: isEqual(sortOrderRaw?.by, item?.params?.by || EMPTY_ARRAY),\n }\n }\n\n return {...item, selected: false}\n })\n}\n\nexport function useShallowUnique<ValueType>(value: ValueType): ValueType {\n const [previous, setPrevious] = useState<ValueType>(value)\n if (!shallowEquals(previous, value)) {\n setPrevious(value)\n return value\n }\n return previous\n}\n\n/**\n * @internal\n */\nexport const PaneContainer = memo(function PaneContainer(\n props: BaseStructureToolPaneProps<'documentList'>,\n) {\n const {index, isSelected, pane, paneKey} = props\n const {name: parentSourceName} = useSource()\n\n const {\n defaultLayout = 'default',\n initialValueTemplates = EMPTY_ARRAY,\n menuItemGroups,\n menuItems,\n options,\n } = pane\n const {defaultOrdering = EMPTY_ARRAY, filter} = options\n const params = useShallowUnique(options.params || EMPTY_RECORD)\n const sourceName = pane.source\n const typeName = useMemo(() => {\n const staticTypes = findStaticTypesInFilter(filter, params)\n if (staticTypes?.length === 1) return staticTypes[0]\n return null\n }, [filter, params])\n\n const [layout, setLayout] = useStructureToolSetting<GeneralDocumentListLayoutKey>(\n 'layout',\n typeName ?? pane.id, //pane.id for anything that is not documentTypeList\n defaultLayout,\n )\n\n const {title} = useI18nText(pane)\n\n // Ensure that we use the defaultOrdering value from structure builder if any as the default\n const defaultSortOrder = useMemo(() => {\n return defaultOrdering?.length > 0 ? {by: defaultOrdering} : DEFAULT_ORDERING\n }, [defaultOrdering])\n\n const [sortOrderRaw, setSortOrder] = useStructureToolSetting<SortOrder>(\n 'sort-order',\n typeName ?? pane.id, //pane.id for anything that is not documentTypeList\n defaultSortOrder,\n )\n\n const menuItemsWithSelectedState = useMemo(\n () =>\n addSelectedStateToMenuItems({\n menuItems,\n sortOrderRaw,\n layout,\n }),\n [layout, menuItems, sortOrderRaw],\n )\n\n const isSheetListLayout = layout === 'sheetList'\n const paneLayout = isSheetListLayout ? (\n <DocumentSheetListPane {...props} key={props.pane.id} />\n ) : (\n <DocumentListPane {...props} sortOrder={sortOrderRaw} layout={layout} />\n )\n\n return (\n <SourceProvider name={sourceName || parentSourceName}>\n <Pane\n data-ui=\"DocumentListPane\"\n id={paneKey}\n minWidth={320}\n {...(isSheetListLayout ? {} : {currentMaxWidth: 350, maxWidth: 640})}\n selected={isSelected}\n >\n {_DEBUG && (\n <Card padding={4} tone=\"transparent\">\n <Code>{pane.source || '(none)'}</Code>\n </Card>\n )}\n\n <PaneHeader\n index={index}\n initialValueTemplates={initialValueTemplates}\n menuItemGroups={menuItemGroups}\n menuItems={menuItemsWithSelectedState}\n setLayout={setLayout}\n setSortOrder={setSortOrder}\n title={title}\n />\n {paneLayout}\n </Pane>\n </SourceProvider>\n )\n})\nPaneContainer.displayName = 'Memo(PaneContainer)'\n","import {type SerializePath} from './StructureNodes'\n\n/** @internal */\nexport class SerializeError extends Error {\n public readonly path: SerializePath\n public helpId?: HELP_URL\n\n constructor(\n message: string,\n parentPath: SerializePath,\n pathSegment: string | number | undefined,\n hint?: string,\n ) {\n super(message)\n this.name = 'SerializeError'\n const segment = typeof pathSegment === 'undefined' ? '<unknown>' : `${pathSegment}`\n this.path = (parentPath || []).concat(hint ? `${segment} (${hint})` : segment)\n }\n\n withHelpUrl(id: HELP_URL): SerializeError {\n this.helpId = id\n return this\n }\n}\n\n/** @internal */\nexport enum HELP_URL {\n ID_REQUIRED = 'structure-node-id-required',\n TITLE_REQUIRED = 'structure-title-required',\n FILTER_REQUIRED = 'structure-filter-required',\n INVALID_LIST_ITEM = 'structure-invalid-list-item',\n COMPONENT_REQUIRED = 'structure-view-component-required',\n DOCUMENT_ID_REQUIRED = 'structure-document-id-required',\n DOCUMENT_TYPE_REQUIRED = 'structure-document-type-required',\n SCHEMA_TYPE_REQUIRED = 'structure-schema-type-required',\n SCHEMA_TYPE_NOT_FOUND = 'structure-schema-type-not-found',\n LIST_ITEMS_MUST_BE_ARRAY = 'structure-list-items-must-be-array',\n QUERY_PROVIDED_FOR_FILTER = 'structure-query-provided-for-filter',\n ACTION_OR_INTENT_REQUIRED = 'structure-action-or-intent-required',\n LIST_ITEM_IDS_MUST_BE_UNIQUE = 'structure-list-item-ids-must-be-unique',\n ACTION_AND_INTENT_MUTUALLY_EXCLUSIVE = 'structure-action-and-intent-mutually-exclusive',\n API_VERSION_REQUIRED_FOR_CUSTOM_FILTER = 'structure-api-version-required-for-custom-filter',\n}\n","import {type SortOrdering} from '@sanity/types'\n\nimport {structureLocaleNamespace} from '../i18n'\n\nexport const ORDER_BY_UPDATED_AT: SortOrdering = {\n title: 'Last edited',\n i18n: {\n title: {\n key: 'menu-items.sort-by.last-edited',\n ns: structureLocaleNamespace,\n },\n },\n name: 'lastEditedDesc',\n by: [{field: '_updatedAt', direction: 'desc'}],\n}\n\nexport const ORDER_BY_CREATED_AT: SortOrdering = {\n title: 'Created',\n i18n: {\n title: {\n key: 'menu-items.sort-by.created',\n ns: structureLocaleNamespace,\n },\n },\n name: 'lastCreatedDesc',\n by: [{field: '_createdAt', direction: 'desc'}],\n}\n\nexport const DEFAULT_SELECTED_ORDERING_OPTION = ORDER_BY_UPDATED_AT\n\nexport const DEFAULT_ORDERING_OPTIONS: SortOrdering[] = [\n ORDER_BY_UPDATED_AT, // _updatedAt\n ORDER_BY_CREATED_AT, // _createdAt\n]\n","import {SortIcon} from '@sanity/icons'\nimport {type SchemaType, type SortOrdering, type SortOrderingItem} from '@sanity/types'\nimport {type I18nTextRecord} from 'sanity'\n\nimport {type Intent} from './Intent'\nimport {HELP_URL, SerializeError} from './SerializeError'\nimport {DEFAULT_ORDERING_OPTIONS} from './Sort'\nimport {type Serializable, type SerializeOptions, type SerializePath} from './StructureNodes'\nimport {type StructureContext} from './types'\nimport {getExtendedProjection} from './util/getExtendedProjection'\n\n/** @internal */\nexport function maybeSerializeMenuItem(\n item: MenuItem | MenuItemBuilder,\n index: number,\n path: SerializePath,\n): MenuItem {\n return item instanceof MenuItemBuilder ? item.serialize({path, index}) : item\n}\n\n/**\n * Menu item action type\n * @public */\nexport type MenuItemActionType =\n | string\n | ((params: Record<string, string> | undefined, scope?: any) => void)\n\n/**\n * Menu items parameters\n *\n * @public */\nexport type MenuItemParamsType = Record<string, string | unknown | undefined>\n\n/**\n * Interface for menu items\n *\n * @public */\nexport interface MenuItem {\n /**\n * The i18n key and namespace used to populate the localized title. This is\n * the recommend way to set the title if you are localizing your studio.\n */\n i18n?: I18nTextRecord<'title'>\n /**\n * Menu Item title. Note that the `i18n` configuration will take\n * precedence and this title is left here as a fallback if no i18n key is\n * provided and compatibility with older plugins\n */\n title: string\n /** Menu Item action */\n action?: MenuItemActionType\n /** Menu Item intent */\n intent?: Intent\n /** Menu Item group */\n group?: string\n // TODO: align these with TemplateItem['icon']\n /** Menu Item icon */\n icon?: React.ComponentType | React.ReactNode\n /** Menu Item parameters. See {@link MenuItemParamsType} */\n params?: MenuItemParamsType\n /** Determine if it will show the MenuItem as action */\n showAsAction?: boolean\n}\n\n/**\n * Partial menu items\n * @public\n */\nexport type PartialMenuItem = Partial<MenuItem>\n\n/**\n * Class for building menu items.\n *\n * @public */\nexport class MenuItemBuilder implements Serializable<MenuItem> {\n /** menu item option object. See {@link PartialMenuItem} */\n protected spec: PartialMenuItem\n\n constructor(\n /**\n * Structure context. See {@link StructureContext}\n */\n protected _context: StructureContext,\n spec?: MenuItem,\n ) {\n this.spec = spec ? spec : {}\n }\n\n /**\n * Set menu item action\n * @param action - menu item action. See {@link MenuItemActionType}\n * @returns menu item builder based on action provided. See {@link MenuItemBuilder}\n */\n action(action: MenuItemActionType): MenuItemBuilder {\n return this.clone({action})\n }\n\n /**\n * Get menu item action\n * @returns menu item builder action. See {@link PartialMenuItem}\n */\n getAction(): PartialMenuItem['action'] {\n return this.spec.action\n }\n\n /**\n * Set menu item intent\n * @param intent - menu item intent. See {@link Intent}\n * @returns menu item builder based on intent provided. See {@link MenuItemBuilder}\n */\n intent(intent: Intent): MenuItemBuilder {\n return this.clone({intent})\n }\n\n /**\n * Get menu item intent\n * @returns menu item intent. See {@link PartialMenuItem}\n */\n getIntent(): PartialMenuItem['intent'] {\n return this.spec.intent\n }\n\n /**\n * Set menu item title\n * @param title - menu item title\n * @returns menu item builder based on title provided. See {@link MenuItemBuilder}\n */\n title(title: string): MenuItemBuilder {\n return this.clone({title})\n }\n\n /**\n * Get menu item title. Note that the `i18n` configuration will take\n * precedence and this title is left here for compatibility.\n * @returns menu item title\n */\n getTitle(): string | undefined {\n return this.spec.title\n }\n\n /**\n * Set the i18n key and namespace used to populate the localized title.\n * @param i18n - object with i18n key and related namespace\n * @returns menu item builder based on i18n config provided. See {@link MenuItemBuilder}\n */\n i18n(i18n: I18nTextRecord<'title'>): MenuItemBuilder {\n return this.clone({i18n})\n }\n\n /**\n * Get the i18n key and namespace used to populate the localized title.\n * @returns the i18n key and namespace used to populate the localized title.\n */\n getI18n(): I18nTextRecord<'title'> | undefined {\n return this.spec.i18n\n }\n\n /**\n * Set menu item group\n * @param group - menu item group\n * @returns menu item builder based on group provided. See {@link MenuItemBuilder}\n */\n group(group: string): MenuItemBuilder {\n return this.clone({group})\n }\n\n /**\n * Get menu item group\n * @returns menu item group. See {@link PartialMenuItem}\n */\n getGroup(): PartialMenuItem['group'] {\n return this.spec.group\n }\n\n /**\n * Set menu item icon\n * @param icon - menu item icon\n * @returns menu item builder based on icon provided. See {@link MenuItemBuilder}\n */\n icon(icon: React.ComponentType | React.ReactNode): MenuItemBuilder {\n return this.clone({icon})\n }\n\n /**\n * Get menu item icon\n * @returns menu item icon. See {@link PartialMenuItem}\n */\n getIcon(): PartialMenuItem['icon'] {\n return this.spec.icon\n }\n\n /**\n * Set menu item parameters\n * @param params - menu item parameters. See {@link MenuItemParamsType}\n * @returns menu item builder based on parameters provided. See {@link MenuItemBuilder}\n */\n params(params: MenuItemParamsType): MenuItemBuilder {\n return this.clone({params})\n }\n\n /**\n * Get meny item parameters\n * @returns menu item parameters. See {@link PartialMenuItem}\n */\n getParams(): PartialMenuItem['params'] {\n return this.spec.params\n }\n\n /**\n * Set menu item to show as action\n * @param showAsAction - determine if menu item should show as action\n * @returns menu item builder based on if it should show as action. See {@link MenuItemBuilder}\n */\n showAsAction(showAsAction = true): MenuItemBuilder {\n return this.clone({showAsAction: Boolean(showAsAction)})\n }\n\n /**\n * Check if menu item should show as action\n * @returns true if menu item should show as action, false if not. See {@link PartialMenuItem}\n */\n getShowAsAction(): PartialMenuItem['showAsAction'] {\n return this.spec.showAsAction\n }\n\n /** Serialize menu item builder\n * @param options - serialization options. See {@link SerializeOptions}\n * @returns menu item node based on path provided in options. See {@link MenuItem}\n */\n serialize(options: SerializeOptions = {path: []}): MenuItem {\n const {title, action, intent} = this.spec\n if (!title) {\n const hint = typeof action === 'string' ? `action: \"${action}\"` : undefined\n throw new SerializeError(\n '`title` is required for menu item',\n options.path,\n options.index,\n hint,\n ).withHelpUrl(HELP_URL.TITLE_REQUIRED)\n }\n\n if (!action && !intent) {\n throw new SerializeError(\n `\\`action\\` or \\`intent\\` required for menu item with title ${this.spec.title}`,\n options.path,\n options.index,\n `\"${title}\"`,\n ).withHelpUrl(HELP_URL.ACTION_OR_INTENT_REQUIRED)\n }\n\n if (intent && action) {\n throw new SerializeError(\n 'cannot set both `action` AND `intent`',\n options.path,\n options.index,\n `\"${title}\"`,\n ).withHelpUrl(HELP_URL.ACTION_AND_INTENT_MUTUALLY_EXCLUSIVE)\n }\n\n return {...this.spec, title}\n }\n\n /** Clone menu item builder\n * @param withSpec - menu item options. See {@link PartialMenuItem}\n * @returns menu item builder based on context and spec provided. See {@link MenuItemBuilder}\n */\n clone(withSpec?: PartialMenuItem): MenuItemBuilder {\n const builder = new MenuItemBuilder(this._context)\n builder.spec = {...this.spec, ...(withSpec || {})}\n return builder\n }\n}\n\n/** @internal */\nexport interface SortMenuItem extends MenuItem {\n params: {\n by: SortOrderingItem[]\n }\n}\n\n/** @internal */\nexport function getOrderingMenuItem(\n context: StructureContext,\n {by, title, i18n}: SortOrdering,\n extendedProjection?: string,\n): MenuItemBuilder {\n let builder = new MenuItemBuilder(context)\n .group('sorting')\n .title(\n context.i18n.t('default-menu-item.fallback-title', {\n // note this lives in the `studio` bundle because that one is loaded by default\n ns: 'studio',\n replace: {title}, // replaces the `{{title}}` option\n }),\n ) // fallback title\n .icon(SortIcon)\n .action('setSortOrder')\n .params({by, extendedProjection})\n\n if (i18n) {\n builder = builder.i18n(i18n)\n }\n\n return builder\n}\n\n/** @internal */\nexport function getOrderingMenuItemsForSchemaType(\n context: StructureContext,\n typeName: SchemaType | string,\n): MenuItemBuilder[] {\n const {schema} = context\n const type = typeof typeName === 'string' ? schema.get(typeName) : typeName\n if (!type || !('orderings' in type)) {\n return []\n }\n\n return (\n type.orderings ? type.orderings.concat(DEFAULT_ORDERING_OPTIONS) : DEFAULT_ORDERING_OPTIONS\n ).map((ordering: SortOrdering) =>\n getOrderingMenuItem(context, ordering, getExtendedProjection(type, ordering.by)),\n )\n}\n","import {type I18nTextRecord} from 'sanity'\n\nimport {HELP_URL, SerializeError} from './SerializeError'\nimport {type Serializable, type SerializeOptions, type SerializePath} from './StructureNodes'\nimport {type StructureContext} from './types'\n\n/** @internal */\nexport function maybeSerializeMenuItemGroup(\n item: MenuItemGroup | MenuItemGroupBuilder,\n index: number,\n path: SerializePath,\n): MenuItemGroup {\n return item instanceof MenuItemGroupBuilder ? item.serialize({path, index}) : item\n}\n\n/**\n * Interface for menu item groups\n * @public\n */\nexport interface MenuItemGroup {\n /** Menu group Id */\n id: string\n /** Menu group title */\n title: string\n i18n?: I18nTextRecord<'title'>\n}\n\n/**\n * Class for building menu item groups.\n *\n * @public\n */\nexport class MenuItemGroupBuilder implements Serializable<MenuItemGroup> {\n /** Menu item group ID */\n protected _id: string\n /** Menu item group title */\n protected _title: string\n\n protected _i18n?: I18nTextRecord<'title'>\n\n constructor(\n /**\n * Structure context. See {@link StructureContext}\n */\n protected _context: StructureContext,\n spec?: MenuItemGroup,\n ) {\n this._id = spec ? spec.id : ''\n this._title = spec ? spec.title : ''\n this._i18n = spec ? spec.i18n : undefined\n }\n\n /**\n * Set menu item group ID\n * @param id - menu item group ID\n * @returns menu item group builder based on ID provided. See {@link MenuItemGroupBuilder}\n */\n id(id: string): MenuItemGroupBuilder {\n return new MenuItemGroupBuilder(this._context, {id, title: this._title, i18n: this._i18n})\n }\n\n /**\n * Get menu item group ID\n * @returns menu item group ID\n */\n getId(): string {\n return this._id\n }\n\n /**\n * Set menu item group title\n * @param title - menu item group title\n * @returns menu item group builder based on title provided. See {@link MenuItemGroupBuilder}\n */\n title(title: string): MenuItemGroupBuilder {\n return new MenuItemGroupBuilder(this._context, {title, id: this._id, i18n: this._i18n})\n }\n\n /**\n * Get menu item group title\n * @returns menu item group title\n */\n getTitle(): string {\n return this._title\n }\n\n /**\n * Set the i18n key and namespace used to populate the localized title.\n * @param i18n - object with i18n key and related namespace\n * @returns menu item group builder based on i18n info provided. See {@link MenuItemGroupBuilder}\n */\n i18n(i18n: I18nTextRecord<'title'>): MenuItemGroupBuilder {\n return new MenuItemGroupBuilder(this._context, {i18n, id: this._id, title: this._title})\n }\n\n /**\n * Get the i18n key and namespace used to populate the localized title.\n * @returns the i18n key and namespace used to populate the localized title.\n */\n getI18n(): I18nTextRecord<'title'> | undefined {\n return this._i18n\n }\n\n /**\n * Serialize menu item group builder\n * @param options - serialization options (path). See {@link SerializeOptions}\n * @returns menu item group based on path provided in options. See {@link MenuItemGroup}\n */\n serialize(options: SerializeOptions = {path: []}): MenuItemGroup {\n const {_id, _title, _i18n} = this\n if (!_id) {\n throw new SerializeError(\n '`id` is required for a menu item group',\n options.path,\n options.index,\n _title,\n ).withHelpUrl(HELP_URL.ID_REQUIRED)\n }\n\n if (!_title) {\n throw new SerializeError(\n '`title` is required for a menu item group',\n options.path,\n _id,\n ).withHelpUrl(HELP_URL.TITLE_REQUIRED)\n }\n\n return {\n id: _id,\n title: _title,\n i18n: _i18n,\n }\n }\n}\n","import {SerializeError} from '../SerializeError'\nimport {type SerializePath} from '../StructureNodes'\n\nexport const disallowedPattern = /([^A-Za-z0-9-_.])/\n\nexport function validateId(\n id: string,\n parentPath: SerializePath,\n pathSegment: string | number | undefined,\n): string {\n if (typeof id !== 'string') {\n throw new SerializeError(\n `Structure node id must be of type string, got ${typeof id}`,\n parentPath,\n pathSegment,\n )\n }\n\n const [disallowedChar] = id.match(disallowedPattern) || []\n if (disallowedChar) {\n throw new SerializeError(\n `Structure node id cannot contain character \"${disallowedChar}\"`,\n parentPath,\n pathSegment,\n )\n }\n\n if (id.startsWith('__edit__')) {\n throw new SerializeError(\n `Structure node id cannot start with __edit__`,\n parentPath,\n pathSegment,\n )\n }\n\n return id\n}\n","import {camelCase} from 'lodash'\nimport getSlug from 'speakingurl'\n\nimport {disallowedPattern} from './validateId'\n\nexport function getStructureNodeId(title: string, id?: string): string {\n if (id) {\n return id\n }\n\n const camelCased = camelCase(title)\n\n return disallowedPattern.test(camelCased) ? camelCase(getSlug(title)) : camelCased\n}\n","import {type I18nTextRecord} from 'sanity'\n\nimport {type IntentChecker} from './Intent'\nimport {maybeSerializeMenuItem, type MenuItem, type MenuItemBuilder} from './MenuItem'\nimport {\n maybeSerializeMenuItemGroup,\n type MenuItemGroup,\n type MenuItemGroupBuilder,\n} from './MenuItemGroup'\nimport {HELP_URL, SerializeError} from './SerializeError'\nimport {\n type Child,\n type Serializable,\n type SerializeOptions,\n type StructureNode,\n} from './StructureNodes'\nimport {type UserComponent} from './types'\nimport {getStructureNodeId} from './util/getStructureNodeId'\nimport {validateId} from './util/validateId'\n\n/**\n * Interface for component\n *\n * @public\n */\n// TODO: rename to `StructureComponent` since it clashes with React?\nexport interface Component extends StructureNode {\n /** Component of type {@link UserComponent} */\n component: UserComponent\n /** Component child of type {@link Child} */\n child?: Child\n /** Component menu items, array of type {@link MenuItem} */\n menuItems: MenuItem[]\n /** Component menu item group, array of type {@link MenuItemGroup} */\n menuItemGroups: MenuItemGroup[]\n /** Component options */\n options: {[key: string]: unknown}\n canHandleIntent?: IntentChecker\n}\n\n/**\n * Interface for component input\n *\n * @public\n */\nexport interface ComponentInput extends StructureNode {\n /** Component of type {@link UserComponent} */\n component: UserComponent\n /** Component child of type {@link Child} */\n child?: Child\n /** Component options */\n options?: {[key: string]: unknown}\n /** Component menu items. See {@link MenuItem} and {@link MenuItemBuilder} */\n menuItems?: (MenuItem | MenuItemBuilder)[]\n /** Component menu item groups. See {@link MenuItemGroup} and {@link MenuItemGroupBuilder} */\n menuItemGroups?: (MenuItemGroup | MenuItemGroupBuilder)[]\n}\n\n/**\n * Interface for buildable component\n *\n * @public\n */\nexport interface BuildableComponent extends Partial<StructureNode> {\n /** Component of type {@link UserComponent} */\n component?: UserComponent\n /** Component child of type {@link Child} */\n child?: Child\n /** Component options */\n options?: {[key: string]: unknown}\n /** Component menu items. See {@link MenuItem} and {@link MenuItemBuilder} */\n menuItems?: (MenuItem | MenuItemBuilder)[]\n /** Component menu item groups. See {@link MenuItemGroup} and {@link MenuItemGroupBuilder} */\n menuItemGroups?: (MenuItemGroup | MenuItemGroupBuilder)[]\n canHandleIntent?: IntentChecker\n}\n\n/**\n * Class for building components\n *\n * @public\n */\nexport class ComponentBuilder implements Serializable<Component> {\n /** component builder option object */\n protected spec: BuildableComponent\n\n constructor(spec?: ComponentInput) {\n this.spec = {options: {}, ...(spec ? spec : {})}\n }\n\n /** Set Component ID\n * @param id - component ID\n * @returns component builder based on ID provided\n */\n id(id: string): ComponentBuilder {\n return this.clone({id})\n }\n\n /** Get ID\n * @returns ID\n */\n getId(): BuildableComponent['id'] {\n return this.spec.id\n }\n\n /** Set Component title\n * @param title - component title\n * @returns component builder based on title provided (and ID)\n */\n title(title: string): ComponentBuilder {\n return this.clone({title, id: getStructureNodeId(title, this.spec.id)})\n }\n\n /** Get Component title\n * @returns title\n */\n getTitle(): BuildableComponent['title'] {\n return this.spec.title\n }\n\n /** Set the i18n key and namespace used to populate the localized title.\n * @param i18n - the key and namespaced used to populate the localized title.\n * @returns component builder based on i18n key and ns provided\n */\n i18n(i18n: I18nTextRecord<'title'>): ComponentBuilder {\n return this.clone({i18n})\n }\n\n /** Get i18n key and namespace used to populate the localized title\n * @returns the i18n key and namespace used to populate the localized title\n */\n getI18n(): I18nTextRecord<'title'> | undefined {\n return this.spec.i18n\n }\n\n /** Set Component child\n * @param child - child component\n * @returns component builder based on child component provided\n */\n child(child: Child): ComponentBuilder {\n return this.clone({child})\n }\n\n /** Get Component child\n * @returns child component\n */\n getChild(): BuildableComponent['child'] {\n return this.spec.child\n }\n\n /** Set component\n * @param component - user built component\n * @returns component builder based on component provided\n */\n component(component: UserComponent): ComponentBuilder {\n return this.clone({component})\n }\n\n /** Get Component\n * @returns component\n */\n getComponent(): BuildableComponent['component'] {\n return this.spec.component\n }\n\n /** Set Component options\n * @param options - component options\n * @returns component builder based on options provided\n */\n options(options: {[key: string]: unknown}): ComponentBuilder {\n return this.clone({options})\n }\n\n /** Get Component options\n * @returns component options\n */\n getOptions(): NonNullable<BuildableComponent['options']> {\n return this.spec.options || {}\n }\n\n /** Set Component menu items\n * @param menuItems - component menu items\n * @returns component builder based on menuItems provided\n */\n menuItems(menuItems: (MenuItem | MenuItemBuilder)[]): ComponentBuilder {\n return this.clone({menuItems})\n }\n\n /** Get Component menu items\n * @returns menu items\n */\n getMenuItems(): BuildableComponent['menuItems'] {\n return this.spec.menuItems\n }\n\n /** Set Component menu item groups\n * @param menuItemGroups - component menu item groups\n * @returns component builder based on menuItemGroups provided\n */\n menuItemGroups(menuItemGroups: (MenuItemGroup | MenuItemGroupBuilder)[]): ComponentBuilder {\n return this.clone({menuItemGroups})\n }\n\n /** Get Component menu item groups\n * @returns menu item groups\n */\n getMenuItemGroups(): BuildableComponent['menuItemGroups'] {\n return this.spec.menuItemGroups\n }\n\n canHandleIntent(canHandleIntent: IntentChecker): ComponentBuilder {\n return this.clone({canHandleIntent})\n }\n\n /** Serialize component\n * @param options - serialization options\n * @returns component object based on path provided in options\n *\n */\n serialize(options: SerializeOptions = {path: []}): Component {\n const {id, title, child, options: componentOptions, component} = this.spec\n if (!id) {\n throw new SerializeError(\n '`id` is required for `component` structure item',\n options.path,\n options.index,\n ).withHelpUrl(HELP_URL.ID_REQUIRED)\n }\n\n if (!component) {\n throw new SerializeError(\n '`component` is required for `component` structure item',\n options.path,\n options.index,\n ).withHelpUrl(HELP_URL.ID_REQUIRED)\n }\n\n return {\n id: validateId(id, options.path, options.index),\n title,\n type: 'component',\n child,\n component,\n canHandleIntent: this.spec.canHandleIntent,\n options: componentOptions || {},\n menuItems: (this.spec.menuItems || []).map((item, i) =>\n maybeSerializeMenuItem(item, i, options.path),\n ),\n menuItemGroups: (this.spec.menuItemGroups || []).map((item, i) =>\n maybeSerializeMenuItemGroup(item, i, options.path),\n ),\n }\n }\n\n /** Clone component builder (allows for options overriding)\n * @param withSpec - component builder options\n * @returns cloned builder\n */\n clone(withSpec?: BuildableComponent): ComponentBuilder {\n const builder = new ComponentBuilder()\n builder.spec = {...this.spec, ...(withSpec || {})}\n return builder\n }\n}\n","import {type SanityClient} from '@sanity/client'\nimport {\n DEFAULT_STUDIO_CLIENT_OPTIONS,\n getDraftId,\n getPublishedId,\n type SourceClientOptions,\n} from 'sanity'\n\nexport async function resolveTypeForDocument(\n getClient: (options: SourceClientOptions) => SanityClient,\n id: string,\n): Promise<string | undefined> {\n const query = '*[_id in [$documentId, $draftId]]._type'\n const documentId = getPublishedId(id)\n const draftId = getDraftId(id)\n\n const types = await getClient(DEFAULT_STUDIO_CLIENT_OPTIONS).fetch(\n query,\n {documentId, draftId},\n {tag: 'structure.resolve-type'},\n )\n\n return types[0]\n}\n","import {kebabCase} from 'lodash'\n\nimport {HELP_URL, SerializeError} from '../SerializeError'\nimport {type Serializable, type SerializeOptions, type SerializePath} from '../StructureNodes'\nimport {type View} from '../types'\nimport {validateId} from '../util/validateId'\nimport {type ComponentViewBuilder} from './ComponentView'\nimport {type FormViewBuilder} from './FormView'\n\n/**\n * Interface for base view\n *\n * @public */\nexport interface BaseView {\n /** View id */\n id: string\n /** View Title */\n title: string\n /** View Icon */\n icon?: React.ComponentType | React.ReactNode\n}\n\n/**\n * Class for building generic views.\n *\n * @public\n */\nexport abstract class GenericViewBuilder<TView extends Partial<BaseView>, ConcreteImpl>\n implements Serializable<BaseView>\n{\n /** Generic view option object */\n protected spec: TView = {} as TView\n\n /** Set generic view ID\n * @param id - generic view ID\n * @returns generic view builder based on ID provided.\n */\n id(id: string): ConcreteImpl {\n return this.clone({id})\n }\n /** Get generic view ID\n * @returns generic view ID\n */\n getId(): TView['id'] {\n return this.spec.id\n }\n\n /** Set generic view title\n * @param title - generic view title\n * @returns generic view builder based on title provided and (if provided) its ID.\n */\n title(title: string): ConcreteImpl {\n return this.clone({title, id: this.spec.id || kebabCase(title)})\n }\n\n /** Get generic view title\n * @returns generic view title\n */\n getTitle(): TView['title'] {\n return this.spec.title\n }\n\n /** Set generic view icon\n * @param icon - generic view icon\n * @returns generic view builder based on icon provided.\n */\n icon(icon: React.ComponentType | React.ReactNode): ConcreteImpl {\n return this.clone({icon})\n }\n\n /** Get generic view icon\n * @returns generic view icon\n */\n getIcon(): TView['icon'] {\n return this.spec.icon\n }\n\n /** Serialize generic view\n * @param options - serialization options. See {@link SerializeOptions}\n * @returns generic view object based on path provided in options. See {@link BaseView}\n */\n serialize(options: SerializeOptions = {path: []}): BaseView {\n const {id, title, icon} = this.spec\n if (!id) {\n throw new SerializeError(\n '`id` is required for view item',\n options.path,\n options.index,\n ).withHelpUrl(HELP_URL.ID_REQUIRED)\n }\n\n if (!title) {\n throw new SerializeError(\n '`title` is required for view item',\n options.path,\n options.index,\n ).withHelpUrl(HELP_URL.TITLE_REQUIRED)\n }\n\n return {\n id: validateId(id, options.path, options.index),\n title,\n icon,\n }\n }\n\n /** Clone generic view builder (allows for options overriding)\n * @param withSpec - Partial generic view builder options. See {@link BaseView}\n * @returns Generic view builder.\n */\n abstract clone(withSpec?: Partial<BaseView>): ConcreteImpl\n}\n\nfunction isSerializable(view: BaseView | Serializable<BaseView>): view is Serializable<BaseView> {\n return typeof (view as Serializable<BaseView>).serialize === 'function'\n}\n\n/** @internal */\nexport function maybeSerializeView(\n item: View | Serializable<View>,\n index: number,\n path: SerializePath,\n): View {\n return isSerializable(item) ? item.serialize({path, index}) : item\n}\n\n/**\n * View builder. See {@link ComponentViewBuilder} and {@link FormViewBuilder}\n *\n * @public\n */\nexport type ViewBuilder = ComponentViewBuilder | FormViewBuilder\n","import {isRecord} from 'sanity'\n\nimport {HELP_URL, SerializeError} from '../SerializeError'\nimport {type SerializeOptions} from '../StructureNodes'\nimport {type UserViewComponent} from '../types'\nimport {type BaseView, GenericViewBuilder} from './View'\n\n/**\n * Interface for component views.\n *\n * @public */\nexport interface ComponentView<TOptions = Record<string, any>> extends BaseView {\n type: 'component'\n /** Component view components. See {@link UserViewComponent} */\n component: UserViewComponent\n /** Component view options */\n options: TOptions\n}\n\nconst isComponentSpec = (spec: unknown): spec is ComponentView =>\n isRecord(spec) && spec.type === 'component'\n\n/**\n * Class for building a component view.\n *\n * @public */\nexport class ComponentViewBuilder extends GenericViewBuilder<\n Partial<ComponentView>,\n ComponentViewBuilder\n> {\n /** Partial Component view option object. See {@link ComponentView} */\n protected spec: Partial<ComponentView>\n\n constructor(\n /**\n * Component view component or spec\n * @param componentOrSpec - user view component or partial component view. See {@link UserViewComponent} and {@link ComponentView}\n */\n componentOrSpec?: UserViewComponent | Partial<ComponentView>,\n ) {\n const spec = isComponentSpec(componentOrSpec) ? {...componentOrSpec} : {options: {}}\n\n super()\n this.spec = spec\n\n const userComponent =\n typeof componentOrSpec === 'function' ? componentOrSpec : this.spec.component\n\n if (userComponent) {\n // Because we're cloning, this'll return a new instance, so grab the spec from it\n this.spec = this.component(userComponent).spec\n }\n }\n\n /** Set view Component\n * @param component - component view component. See {@link UserViewComponent}\n * @returns component view builder based on component view provided. See {@link ComponentViewBuilder}\n */\n component(component: UserViewComponent): ComponentViewBuilder {\n return this.clone({component})\n }\n\n /** Get view Component\n * @returns Partial component view. See {@link ComponentView}\n */\n getComponent(): Partial<ComponentView>['component'] {\n return this.spec.component\n }\n\n /** Set view Component options\n * @param options - component view options\n * @returns component view builder based on options provided. See {@link ComponentViewBuilder}\n */\n options(options: {[key: string]: any}): ComponentViewBuilder {\n return this.clone({options})\n }\n\n /** Get view Component options\n * @returns component view options. See {@link ComponentView}\n */\n getOptions(): ComponentView['options'] {\n return this.spec.options || {}\n }\n\n /** Serialize view Component\n * @param options - serialization options. See {@link SerializeOptions}\n * @returns component view based on path provided in options. See {@link ComponentView}\n *\n */\n serialize(options: SerializeOptions = {path: []}): ComponentView {\n const base = super.serialize(options)\n\n const component = this.spec.component\n if (typeof component !== 'function') {\n throw new SerializeError(\n '`component` is required and must be a function for `component()` view item',\n options.path,\n options.index,\n ).withHelpUrl(HELP_URL.COMPONENT_REQUIRED)\n }\n\n return {\n ...base,\n component,\n options: this.spec.options || {},\n type: 'component',\n }\n }\n\n /** Clone Component view builder (allows for options overriding)\n * @param withSpec - partial for component view option. See {@link ComponentView}\n * @returns component view builder. See {@link ComponentViewBuilder}\n */\n clone(withSpec?: Partial<ComponentView>): ComponentViewBuilder {\n const builder = new ComponentViewBuilder()\n builder.spec = {...this.spec, ...(withSpec || {})}\n return builder\n }\n}\n","import {type SerializeOptions} from '../StructureNodes'\nimport {type BaseView, GenericViewBuilder} from './View'\n\n/**\n * Interface for form views.\n *\n * @public */\nexport interface FormView extends BaseView {\n type: 'form'\n}\n\n/**\n * Class for building a form view.\n *\n * @public */\nexport class FormViewBuilder extends GenericViewBuilder<Partial<BaseView>, FormViewBuilder> {\n /** Document list options. See {@link FormView} */\n protected spec: Partial<FormView>\n\n constructor(spec?: Partial<FormView>) {\n super()\n this.spec = {id: 'editor', title: 'Editor', ...(spec ? spec : {})}\n }\n\n /**\n * Serialize Form view builder\n * @param options - Serialize options. See {@link SerializeOptions}\n * @returns form view builder based on path provided in options. See {@link FormView}\n */\n serialize(options: SerializeOptions = {path: []}): FormView {\n return {\n ...super.serialize(options),\n type: 'form',\n }\n }\n\n /**\n * Clone Form view builder (allows for options overriding)\n * @param withSpec - Partial form view builder options. See {@link FormView}\n * @returns form view builder. See {@link FormViewBuilder}\n */\n clone(withSpec?: Partial<FormView>): FormViewBuilder {\n const builder = new FormViewBuilder()\n builder.spec = {...this.spec, ...(withSpec || {})}\n return builder\n }\n}\n","import {type UserViewComponent} from '../types'\nimport {type ComponentView, ComponentViewBuilder} from './ComponentView'\nimport {type FormView, FormViewBuilder} from './FormView'\n\nexport * from './ComponentView'\nexport * from './FormView'\nexport * from './View'\n\n/** @internal */\nexport const form = (spec?: Partial<FormView>): FormViewBuilder => new FormViewBuilder(spec)\n\n/** @internal */\nexport const component = (\n componentOrSpec?: UserViewComponent | Partial<ComponentView>,\n): ComponentViewBuilder => new ComponentViewBuilder(componentOrSpec)\n","import {type SchemaType} from '@sanity/types'\nimport {uniq} from 'lodash'\nimport {type I18nTextRecord} from 'sanity'\n\nimport {type ChildResolver} from './ChildResolver'\nimport {HELP_URL, SerializeError} from './SerializeError'\nimport {\n type Child,\n type DocumentNode,\n type EditorNode,\n type Serializable,\n type SerializeOptions,\n} from './StructureNodes'\nimport {type StructureContext, type View} from './types'\nimport {getStructureNodeId} from './util/getStructureNodeId'\nimport {resolveTypeForDocument} from './util/resolveTypeForDocument'\nimport {validateId} from './util/validateId'\nimport {form} from './views'\nimport {maybeSerializeView, type ViewBuilder} from './views/View'\n\nconst createDocumentChildResolver =\n ({resolveDocumentNode, getClient}: StructureContext): ChildResolver =>\n async (itemId, {params, path}) => {\n let type = params.type\n\n const parentPath = path.slice(0, path.length - 1)\n const currentSegment = path[path.length - 1]\n\n if (!type) {\n type = await resolveTypeForDocument(getClient, itemId)\n }\n\n if (!type) {\n throw new SerializeError(\n `Failed to resolve document, and no type provided in parameters.`,\n parentPath,\n currentSegment,\n )\n }\n\n return resolveDocumentNode({documentId: itemId, schemaType: type})\n }\n\n/**\n * Interface for options of Partial Documents. See {@link PartialDocumentNode}\n *\n * @public */\nexport interface DocumentOptions {\n /** Document Id */\n id: string\n /** Document Type */\n type: string\n /** Document Template */\n template?: string\n /** Template parameters */\n templateParameters?: Record<string, unknown>\n}\n\n/**\n * Interface for partial document (focused on the document pane)\n *\n * @public */\nexport interface PartialDocumentNode {\n /** Document Id */\n id?: string\n /** Document title */\n title?: string\n /** I18n key and namespace used to populate the localized title */\n i18n?: I18nTextRecord<'title'>\n /** Document children of type {@link Child} */\n child?: Child\n /**\n * Views for the document pane. See {@link ViewBuilder} and {@link View}\n */\n views?: (View | ViewBuilder)[]\n /**\n * Document options. See {@link DocumentOptions}\n */\n options?: Partial<DocumentOptions>\n}\n\n/**\n * A `DocumentBuilder` is used to build a document node.\n *\n * @public */\nexport class DocumentBuilder implements Serializable<DocumentNode> {\n /** Component builder option object See {@link PartialDocumentNode} */\n protected spec: PartialDocumentNode\n\n constructor(\n /**\n * Structure context. See {@link StructureContext}\n */\n protected _context: StructureContext,\n spec?: PartialDocumentNode,\n ) {\n this.spec = spec ? spec : {}\n }\n\n /** Set Document Builder ID\n * @param id - document builder ID\n * @returns document builder based on ID provided. See {@link DocumentBuilder}\n */\n id(id: string): DocumentBuilder {\n return this.clone({id})\n }\n\n /** Get Document Builder ID\n * @returns document ID. See {@link PartialDocumentNode}\n */\n getId(): PartialDocumentNode['id'] {\n return this.spec.id\n }\n\n /** Set Document title\n * @param title - document title\n * @returns document builder based on title provided (and ID). See {@link DocumentBuilder}\n */\n title(title: string): DocumentBuilder {\n return this.clone({title, id: getStructureNodeId(title, this.spec.id)})\n }\n\n /** Get Document title\n * @returns document title. See {@link PartialDocumentNode}\n */\n getTitle(): PartialDocumentNode['title'] {\n return this.spec.title\n }\n\n /** Set the i18n key and namespace used to populate the localized title.\n * @param i18n - the key and namespaced used to populate the localized title.\n * @returns component builder based on i18n key and ns provided\n */\n i18n(i18n: I18nTextRecord<'title'>): DocumentBuilder {\n return this.clone({i18n})\n }\n\n /** Get i18n key and namespace used to populate the localized title\n * @returns the i18n key and namespace used to populate the localized title\n */\n getI18n(): I18nTextRecord<'title'> | undefined {\n return this.spec.i18n\n }\n\n /** Set Document child\n * @param child - document child\n * @returns document builder based on child provided. See {@link DocumentBuilder}\n */\n child(child: Child): DocumentBuilder {\n return this.clone({child})\n }\n\n /** Get Document child\n * @returns document child. See {@link PartialDocumentNode}\n */\n getChild(): PartialDocumentNode['child'] {\n return this.spec.child\n }\n\n /** Set Document ID\n * @param documentId - document ID\n * @returns document builder with document based on ID provided. See {@link DocumentBuilder}\n */\n documentId(documentId: string): DocumentBuilder {\n // Let's try to be a bit helpful and assign an ID from document ID if none is specified\n const paneId = this.spec.id || documentId\n return this.clone({\n id: paneId,\n options: {\n ...(this.spec.options || {}),\n id: documentId,\n },\n })\n }\n\n /** Get Document ID\n * @returns document ID. See {@link DocumentOptions}\n */\n getDocumentId(): Partial<DocumentOptions>['id'] {\n return this.spec.options?.id\n }\n\n /** Set Document Type\n * @param documentType - document type\n * @returns document builder with document based on type provided. See {@link DocumentBuilder}\n */\n schemaType(documentType: SchemaType | string): DocumentBuilder {\n return this.clone({\n options: {\n ...(this.spec.options || {}),\n type: typeof documentType === 'string' ? documentType : documentType.name,\n },\n })\n }\n\n /** Get Document Type\n * @returns document type. See {@link DocumentOptions}\n */\n getSchemaType(): Partial<DocumentOptions>['type'] {\n return this.spec.options?.type\n }\n\n /** Set Document Template\n * @param templateId - document template ID\n * @param parameters - document template parameters\n * @returns document builder with document based on template provided. See {@link DocumentBuilder}\n */\n initialValueTemplate(templateId: string, parameters?: Record<string, unknown>): DocumentBuilder {\n return this.clone({\n options: {\n ...(this.spec.options || {}),\n template: templateId,\n templateParameters: parameters,\n },\n })\n }\n\n /** Get Document Template\n * @returns document template. See {@link DocumentOptions}\n */\n getInitialValueTemplate(): Partial<DocumentOptions>['template'] {\n return this.spec.options?.template\n }\n\n /** Get Document's initial value Template parameters\n * @returns document template parameters. See {@link DocumentOptions}\n */\n getInitialValueTemplateParameters(): Partial<DocumentOptions>['templateParameters'] {\n return this.spec.options?.templateParameters\n }\n\n /** Set Document views\n * @param views - document views. See {@link ViewBuilder} and {@link View}\n * @returns document builder with document based on views provided. See {@link DocumentBuilder}\n */\n views(views: (View | ViewBuilder)[]): DocumentBuilder {\n return this.clone({views})\n }\n\n /** Get Document views\n * @returns document views. See {@link ViewBuilder} and {@link View}\n */\n getViews(): (View | ViewBuilder)[] {\n return this.spec.views || []\n }\n\n /** Serialize Document builder\n * @param options - serialization options. See {@link SerializeOptions}\n * @returns document node based on path, index and hint provided in options. See {@link DocumentNode}\n */\n serialize({path = [], index, hint}: SerializeOptions = {path: []}): DocumentNode {\n const urlId = path[index || path.length - 1]\n\n // Try to grab document ID / editor ID from URL if not defined\n const id = this.spec.id || (urlId && `${urlId}`) || ''\n const options: Partial<DocumentOptions> = {\n id,\n type: undefined,\n template: undefined,\n templateParameters: undefined,\n ...this.spec.options,\n }\n\n if (typeof id !== 'string' || !id) {\n throw new SerializeError(\n '`id` is required for document nodes',\n path,\n index,\n hint,\n ).withHelpUrl(HELP_URL.ID_REQUIRED)\n }\n\n if (!options || !options.id) {\n throw new SerializeError(\n 'document id (`id`) is required for document nodes',\n path,\n id,\n hint,\n ).withHelpUrl(HELP_URL.DOCUMENT_ID_REQUIRED)\n }\n\n if (!options || !options.type) {\n throw new SerializeError(\n 'document type (`schemaType`) is required for document nodes',\n path,\n id,\n hint,\n )\n }\n\n const views = (this.spec.views && this.spec.views.length > 0 ? this.spec.views : [form()]).map(\n (item, i) => maybeSerializeView(item, i, path),\n )\n\n const viewIds = views.map((view) => view.id)\n const dupes = uniq(viewIds.filter((viewId, i) => viewIds.includes(viewId, i + 1)))\n if (dupes.length > 0) {\n throw new SerializeError(\n `document node has views with duplicate IDs: ${dupes.join(', ')}`,\n path,\n id,\n hint,\n )\n }\n\n return {\n ...this.spec,\n child: this.spec.child || createDocumentChildResolver(this._context),\n id: validateId(id, path, index),\n type: 'document',\n options: getDocumentOptions(options),\n views,\n }\n }\n\n /** Clone Document builder\n * @param withSpec - partial document node specification used to extend the cloned builder. See {@link PartialDocumentNode}\n * @returns document builder based on context and spec provided. See {@link DocumentBuilder}\n */\n clone(withSpec: PartialDocumentNode = {}): DocumentBuilder {\n const builder = new DocumentBuilder(this._context)\n const options = {...(this.spec.options || {}), ...(withSpec.options || {})}\n builder.spec = {...this.spec, ...withSpec, options}\n return builder\n }\n}\n\nfunction getDocumentOptions(spec: Partial<DocumentOptions>): DocumentOptions {\n const opts: DocumentOptions = {\n id: spec.id || '',\n type: spec.type || '*',\n }\n\n if (spec.template) {\n opts.template = spec.template\n }\n\n if (spec.templateParameters) {\n opts.templateParameters = spec.templateParameters\n }\n\n return opts\n}\n\n/** @internal */\nexport function documentFromEditor(context: StructureContext, spec?: EditorNode): DocumentBuilder {\n let doc = spec?.type\n ? // Use user-defined document fragment as base if possible\n context.resolveDocumentNode({schemaType: spec.type})\n : // Fall back to plain old document builder\n new DocumentBuilder(context)\n\n if (!spec) return doc\n\n const {id, type, template, templateParameters} = spec.options\n doc = doc.id(spec.id).documentId(id)\n\n if (type) {\n doc = doc.schemaType(type)\n }\n if (template) {\n doc = doc.initialValueTemplate(template, templateParameters)\n }\n if (spec.child) {\n doc = doc.child(spec.child)\n }\n\n return doc\n}\n\n/** @internal */\nexport function documentFromEditorWithInitialValue(\n {resolveDocumentNode, templates}: StructureContext,\n templateId: string,\n parameters?: Record<string, unknown>,\n): DocumentBuilder {\n const template = templates.find((t) => t.id === templateId)\n\n if (!template) {\n throw new Error(`Template with ID \"${templateId}\" not defined`)\n }\n\n return resolveDocumentNode({schemaType: template.schemaType}).initialValueTemplate(\n templateId,\n parameters,\n )\n}\n","import {AddIcon} from '@sanity/icons'\nimport {type InitialValueTemplateItem} from 'sanity'\n\nimport {type BaseIntentParams, type IntentParams} from './Intent'\nimport {type MenuItem, MenuItemBuilder} from './MenuItem'\nimport {HELP_URL, SerializeError} from './SerializeError'\nimport {type Serializable, type SerializeOptions, type SerializePath} from './StructureNodes'\nimport {type StructureContext} from './types'\n\n/**\n * A `InitialValueTemplateItemBuilder` is used to build a document node with an initial value set.\n *\n * @public\n */\nexport class InitialValueTemplateItemBuilder implements Serializable<InitialValueTemplateItem> {\n /** Initial Value template item option object. See {@link InitialValueTemplateItem} */\n protected spec: Partial<InitialValueTemplateItem>\n\n constructor(\n /**\n * Structure context. See {@link StructureContext}\n */\n protected _context: StructureContext,\n spec?: Partial<InitialValueTemplateItem>,\n ) {\n this.spec = spec ? spec : {}\n }\n\n /** Set initial value template item builder ID\n * @param id - initial value template item ID\n * @returns initial value template item based on ID provided. See {@link InitialValueTemplateItemBuilder}\n */\n id(id: string): InitialValueTemplateItemBuilder {\n return this.clone({id})\n }\n\n /** Get initial value template item builder ID\n * @returns initial value template item ID. See {@link InitialValueTemplateItem}\n */\n getId(): Partial<InitialValueTemplateItem>['id'] {\n return this.spec.id\n }\n\n /** Set initial value template item title\n * @param title - initial value template item title\n * @returns initial value template item based on title provided. See {@link InitialValueTemplateItemBuilder}\n */\n title(title: string): InitialValueTemplateItemBuilder {\n return this.clone({title})\n }\n\n /** Get initial value template item title\n * @returns initial value template item title. See {@link InitialValueTemplateItem}\n */\n getTitle(): Partial<InitialValueTemplateItem>['title'] {\n return this.spec.title\n }\n\n /** Set initial value template item description\n * @param description - initial value template item description\n * @returns initial value template item builder based on description provided. See {@link InitialValueTemplateItemBuilder}\n */\n description(description: string): InitialValueTemplateItemBuilder {\n return this.clone({description})\n }\n\n /** Get initial value template item description\n * @returns initial value template item description. See {@link InitialValueTemplateItem}\n */\n getDescription(): Partial<InitialValueTemplateItem>['description'] {\n return this.spec.description\n }\n\n /** Set initial value template ID\n * @param templateId - initial value template item template ID\n * @returns initial value template item based builder on template ID provided. See {@link InitialValueTemplateItemBuilder}\n */\n templateId(templateId: string): InitialValueTemplateItemBuilder {\n // Let's try to be a bit helpful and assign an ID from template ID if none is specified\n const paneId = this.spec.id || templateId\n return this.clone({\n id: paneId,\n templateId,\n })\n }\n\n /** Get initial value template item template ID\n * @returns initial value template item ID. See {@link InitialValueTemplateItem}\n */\n getTemplateId(): Partial<InitialValueTemplateItem>['templateId'] {\n return this.spec.templateId\n }\n\n /** Get initial value template item template parameters\n * @param parameters - initial value template item parameters\n * @returns initial value template item builder based on parameters provided. See {@link InitialValueTemplateItemBuilder}\n */\n parameters(parameters: {[key: string]: any}): InitialValueTemplateItemBuilder {\n return this.clone({parameters})\n }\n\n /** Get initial value template item template parameters\n * @returns initial value template item parameters. See {@link InitialValueTemplateItem}\n */\n getParameters(): Partial<InitialValueTemplateItem>['parameters'] {\n return this.spec.parameters\n }\n\n /** Serialize initial value template item\n * @param options - serialization options. See {@link SerializeOptions}\n * @returns initial value template item object based on the path, index and hint provided in options. See {@link InitialValueTemplateItem}\n */\n serialize({path = [], index, hint}: SerializeOptions = {path: []}): InitialValueTemplateItem {\n const {spec, _context} = this\n const {templates} = _context\n\n if (typeof spec.id !== 'string' || !spec.id) {\n throw new SerializeError(\n '`id` is required for initial value template item nodes',\n path,\n index,\n hint,\n ).withHelpUrl(HELP_URL.ID_REQUIRED)\n }\n\n if (!spec.templateId) {\n throw new SerializeError(\n 'template id (`templateId`) is required for initial value template item nodes',\n path,\n spec.id,\n hint,\n ).withHelpUrl(HELP_URL.ID_REQUIRED)\n }\n\n const template = templates.find((t) => t.id === spec.templateId)\n\n if (!template) {\n throw new SerializeError(\n 'template id (`templateId`) is required for initial value template item nodes',\n path,\n spec.id,\n hint,\n ).withHelpUrl(HELP_URL.ID_REQUIRED)\n }\n\n return {\n id: spec.id,\n templateId: spec.id,\n schemaType: template.schemaType,\n type: 'initialValueTemplateItem',\n description: spec.description || template.description,\n title: spec.title || template.title,\n subtitle: spec.subtitle,\n icon: spec.icon || template.icon,\n initialDocumentId: spec.initialDocumentId,\n parameters: spec.parameters,\n }\n }\n\n /** Clone generic view builder (allows for options overriding)\n * @param withSpec - initial value template item builder options. See {@link InitialValueTemplateItemBuilder}\n * @returns initial value template item builder based on the context and options provided. See {@link InitialValueTemplateItemBuilder}\n */\n clone(withSpec: Partial<InitialValueTemplateItem> = {}): InitialValueTemplateItemBuilder {\n const builder = new InitialValueTemplateItemBuilder(this._context)\n builder.spec = {...this.spec, ...withSpec}\n return builder\n }\n}\n\n/** @internal */\nexport function defaultInitialValueTemplateItems(\n context: StructureContext,\n): InitialValueTemplateItemBuilder[] {\n const {schema, getStructureBuilder, templates} = context\n\n // Sort templates by their schema type, in order or definition\n const typeNames = schema.getTypeNames()\n const ordered = templates\n // Don't list templates that require parameters\n // TODO: this should use the new-document template items instead maybe?\n .filter((tpl) => !tpl.parameters?.length)\n .sort((a, b) => typeNames.indexOf(a.schemaType) - typeNames.indexOf(b.schemaType))\n\n // Create actual template items out of the templates\n return ordered.map((tpl) => getStructureBuilder().initialValueTemplateItem(tpl.id))\n}\n\n/** @internal */\nexport function maybeSerializeInitialValueTemplateItem(\n item: InitialValueTemplateItem | InitialValueTemplateItemBuilder,\n index: number,\n path: SerializePath,\n): InitialValueTemplateItem {\n return item instanceof InitialValueTemplateItemBuilder ? item.serialize({path, index}) : item\n}\n\n/** @internal */\nexport function menuItemsFromInitialValueTemplateItems(\n context: StructureContext,\n templateItems: InitialValueTemplateItem[],\n): MenuItem[] {\n const {schema, templates} = context\n return templateItems.map((item) => {\n const template = templates.find((t) => t.id === item.templateId)\n const title = item.title || template?.title || 'Create'\n\n const params: BaseIntentParams = {}\n if (template && template.schemaType) {\n params.type = template.schemaType\n }\n\n if (item.templateId) {\n params.template = item.templateId\n }\n\n const intentParams: IntentParams = item.parameters ? [params, item.parameters] : params\n const schemaType = template && schema.get(template.schemaType)\n\n const i18n = item.i18n || template?.i18n\n\n let builder = new MenuItemBuilder(context)\n .title(title)\n .icon((template && template.icon) || schemaType?.icon || AddIcon)\n .intent({type: 'create', params: intentParams})\n\n if (i18n) {\n builder = builder.i18n(i18n)\n }\n\n return builder.serialize()\n })\n}\n","import {type SearchParam} from 'sanity/router'\n\nimport {getTypeNamesFromFilter, type PartialDocumentList} from './DocumentList'\nimport {type StructureNode} from './StructureNodes'\n\n/**\n * Intent parameters (json)\n *\n * @public\n */\nexport type IntentJsonParams = {[key: string]: any}\n\n/**\n * Base intent parameters\n *\n * @public\n * @todo dedupe with core\n */\nexport interface BaseIntentParams {\n /**\n * Document schema type name to create/edit.\n * Required for `create` intents, optional for `edit` (but encouraged, safer and faster)\n */\n type?: string\n\n /**\n * ID of the document to create/edit.\n * Required for `edit` intents, optional for `create`.\n */\n id?: string\n\n /**\n * Name (ID) of initial value template to use for `create` intent. Optional.\n */\n template?: string\n\n /**\n * Experimental field path\n *\n * @beta\n * @experimental\n * @hidden\n */\n path?: string\n\n /**\n * Optional \"mode\" to use for edit intent.\n * Known modes are `structure` and `presentation`.\n */\n mode?: string\n\n /**\n * Arbitrary/custom parameters are generally discouraged - try to keep them to a minimum,\n * or use `payload` (arbitrary JSON-serializable object) instead.\n */\n [key: string]: string | undefined\n}\n\n/** @internal */\nexport const DEFAULT_INTENT_HANDLER = Symbol('Document type list canHandleIntent')\n\n/**\n * Intent parameters\n * See {@link router.BaseIntentParams} and {@link router.IntentJsonParams}\n *\n * @public\n */\nexport type IntentParams = BaseIntentParams | [BaseIntentParams, IntentJsonParams]\n\n/**\n * Interface for intents\n * @public */\n// TODO: intents should be unified somewhere\nexport interface Intent {\n /** Intent type */\n type: string\n /** Intent parameters. See {@link IntentParams}\n */\n params?: IntentParams\n\n searchParams?: SearchParam[]\n}\n\n/**\n * Interface for intent checker\n *\n * @public\n */\nexport interface IntentChecker {\n (\n /** Intent name */\n intentName: string,\n /** Intent checker parameter */\n params: {[key: string]: any},\n /** Structure context. See {@link StructureNode} */\n context: {pane: StructureNode; index: number},\n ): boolean\n /** intent checker identify */\n identity?: symbol\n}\n\n/** @internal */\nexport const defaultIntentChecker: IntentChecker = (intentName, params, {pane}): boolean => {\n const isEdit = intentName === 'edit'\n const isCreate = intentName === 'create'\n const typedSpec = pane as PartialDocumentList\n const paneFilter = typedSpec.options?.filter || ''\n const paneParams = typedSpec.options?.params || {}\n const typeNames = typedSpec.schemaTypeName\n ? [typedSpec.schemaTypeName]\n : getTypeNamesFromFilter(paneFilter, paneParams)\n\n const initialValueTemplates = typedSpec.initialValueTemplates || []\n\n if (isCreate && params.template) {\n return initialValueTemplates.some((tpl) => tpl.templateId === params.template)\n }\n\n return (\n (isEdit && params.id && typeNames.includes(params.type)) ||\n (isCreate && typeNames.includes(params.type))\n )\n}\n\ndefaultIntentChecker.identity = DEFAULT_INTENT_HANDLER\n","export const layoutOptions = ['default', 'card', 'media', 'detail', 'block']\n","import {type I18nTextRecord, type InitialValueTemplateItem, type PreviewLayoutKey} from 'sanity'\n\nimport {\n type InitialValueTemplateItemBuilder,\n maybeSerializeInitialValueTemplateItem,\n} from './InitialValueTemplateItem'\nimport {defaultIntentChecker, type IntentChecker} from './Intent'\nimport {layoutOptions} from './Layout'\nimport {maybeSerializeMenuItem, type MenuItem, type MenuItemBuilder} from './MenuItem'\nimport {\n maybeSerializeMenuItemGroup,\n type MenuItemGroup,\n type MenuItemGroupBuilder,\n} from './MenuItemGroup'\nimport {SerializeError} from './SerializeError'\nimport {\n type Child,\n type Serializable,\n type SerializeOptions,\n type StructureNode,\n} from './StructureNodes'\nimport {getStructureNodeId} from './util/getStructureNodeId'\nimport {validateId} from './util/validateId'\n\nfunction noChildResolver() {\n return undefined\n}\n\n/** @internal */\nexport const shallowIntentChecker: IntentChecker = (intentName, params, {pane, index}): boolean => {\n return index <= 1 && defaultIntentChecker(intentName, params, {pane, index})\n}\n\n/**\n * Interface for list display options\n *\n * @public */\nexport interface ListDisplayOptions {\n /** Check if list display should show icons */\n showIcons?: boolean\n}\n\n/**\n * Interface for base generic list\n *\n * @public\n */\nexport interface BaseGenericList extends StructureNode {\n /** List layout key. */\n defaultLayout?: PreviewLayoutKey\n /** Can handle intent. See {@link IntentChecker} */\n canHandleIntent?: IntentChecker\n /** List display options. See {@link ListDisplayOptions} */\n displayOptions?: ListDisplayOptions\n /** List child. See {@link Child} */\n child: Child\n /** List initial values array. See {@link InitialValueTemplateItem} and {@link InitialValueTemplateItemBuilder} */\n initialValueTemplates?: (InitialValueTemplateItem | InitialValueTemplateItemBuilder)[]\n}\n\n/**\n * Interface for generic list\n *\n * @public\n */\n// \"POJO\"/verbatim-version - end result\nexport interface GenericList extends BaseGenericList {\n /** List type */\n type: string\n /** List menu items array. See {@link MenuItem} */\n menuItems: MenuItem[]\n /** List menu item groups array. See {@link MenuItemGroup} */\n menuItemGroups: MenuItemGroup[]\n}\n\n/**\n * Interface for buildable generic list\n *\n * @public\n */\n// Used internally in builder classes to make everything optional\nexport interface BuildableGenericList extends Partial<BaseGenericList> {\n /** List menu items array. See {@link MenuItem} and {@link MenuItemBuilder} */\n menuItems?: (MenuItem | MenuItemBuilder)[]\n /** List menu items groups array. See {@link MenuItemGroup} and {@link MenuItemGroupBuilder} */\n menuItemGroups?: (MenuItemGroup | MenuItemGroupBuilder)[]\n}\n\n/**\n * Interface for generic list input\n * Allows builders and only requires things not inferrable\n *\n * @public */\n// Input version, allows builders and only requires things not inferrable\nexport interface GenericListInput extends StructureNode {\n /** Input id */\n id: string\n /** Input title */\n title: string\n /** Input menu items groups. See {@link MenuItem} and {@link MenuItemBuilder} */\n menuItems?: (MenuItem | MenuItemBuilder)[]\n /** Input menu items groups. See {@link MenuItemGroup} and {@link MenuItemGroupBuilder} */\n menuItemGroups?: (MenuItemGroup | MenuItemGroupBuilder)[]\n /** Input initial value array. See {@link InitialValueTemplateItem} and {@link InitialValueTemplateItemBuilder} */\n initialValueTemplates?: (InitialValueTemplateItem | InitialValueTemplateItemBuilder)[]\n /** Input default layout. */\n defaultLayout?: PreviewLayoutKey\n /** If input can handle intent. See {@link IntentChecker} */\n canHandleIntent?: IntentChecker\n /** Input child of type {@link Child} */\n child?: Child\n}\n\n/**\n * Class for building generic lists\n *\n * @public\n */\nexport abstract class GenericListBuilder<TList extends BuildableGenericList, ConcreteImpl>\n implements Serializable<GenericList>\n{\n /** Check if initial value templates are set */\n protected initialValueTemplatesSpecified = false\n /** Generic list option object */\n protected spec: TList = {} as TList\n\n /** Set generic list ID\n * @param id - generic list ID\n * @returns generic list builder based on ID provided.\n */\n id(id: string): ConcreteImpl {\n return this.clone({id})\n }\n\n /** Get generic list ID\n * @returns generic list ID\n */\n getId(): TList['id'] {\n return this.spec.id\n }\n\n /** Set generic list title\n * @param title - generic list title\n * @returns generic list builder based on title and ID provided.\n */\n title(title: string): ConcreteImpl {\n return this.clone({title, id: getStructureNodeId(title, this.spec.id)})\n }\n\n /** Get generic list title\n * @returns generic list title\n */\n getTitle(): TList['title'] {\n return this.spec.title\n }\n\n /** Set the i18n key and namespace used to populate the localized title.\n * @param i18n - the key and namespaced used to populate the localized title.\n * @returns component builder based on i18n key and ns provided\n */\n i18n(i18n: I18nTextRecord<'title'>): ConcreteImpl {\n return this.clone({i18n})\n }\n\n /** Get i18n key and namespace used to populate the localized title\n * @returns the i18n key and namespace used to populate the localized title\n */\n getI18n(): TList['i18n'] {\n return this.spec.i18n\n }\n\n /** Set generic list layout\n * @param defaultLayout - generic list layout key.\n * @returns generic list builder based on layout provided.\n */\n defaultLayout(defaultLayout: PreviewLayoutKey): ConcreteImpl {\n return this.clone({defaultLayout})\n }\n\n /** Get generic list layout\n * @returns generic list layout\n */\n getDefaultLayout(): TList['defaultLayout'] {\n return this.spec.defaultLayout\n }\n\n /** Set generic list menu items\n * @param menuItems - generic list menu items. See {@link MenuItem} and {@link MenuItemBuilder}\n * @returns generic list builder based on menu items provided.\n */\n menuItems(menuItems: (MenuItem | MenuItemBuilder)[] | undefined): ConcreteImpl {\n return this.clone({menuItems})\n }\n\n /** Get generic list menu items\n * @returns generic list menu items\n */\n getMenuItems(): TList['menuItems'] {\n return this.spec.menuItems\n }\n\n /** Set generic list menu item groups\n * @param menuItemGroups - generic list menu item groups. See {@link MenuItemGroup} and {@link MenuItemGroupBuilder}\n * @returns generic list builder based on menu item groups provided.\n */\n menuItemGroups(menuItemGroups: (MenuItemGroup | MenuItemGroupBuilder)[]): ConcreteImpl {\n return this.clone({menuItemGroups})\n }\n\n /** Get generic list menu item groups\n * @returns generic list menu item groups\n */\n getMenuItemGroups(): TList['menuItemGroups'] {\n return this.spec.menuItemGroups\n }\n\n /** Set generic list child\n * @param child - generic list child. See {@link Child}\n * @returns generic list builder based on child provided (clone).\n */\n child(child: Child): ConcreteImpl {\n return this.clone({child})\n }\n\n /** Get generic list child\n * @returns generic list child\n */\n getChild(): TList['child'] {\n return this.spec.child\n }\n\n /** Set generic list can handle intent\n * @param canHandleIntent - generic list intent checker. See {@link IntentChecker}\n * @returns generic list builder based on can handle intent provided.\n */\n canHandleIntent(canHandleIntent?: IntentChecker): ConcreteImpl {\n return this.clone({canHandleIntent})\n }\n\n /** Get generic list can handle intent\n * @returns generic list can handle intent\n */\n getCanHandleIntent(): TList['canHandleIntent'] {\n return this.spec.canHandleIntent\n }\n\n /** Set generic list display options\n * @param enabled - allow / disallow for showing icons\n * @returns generic list builder based on display options (showIcons) provided.\n */\n showIcons(enabled = true): ConcreteImpl {\n return this.clone({\n displayOptions: {...(this.spec.displayOptions || {}), showIcons: enabled},\n })\n }\n\n /** Get generic list display options\n * @returns generic list display options (specifically showIcons)\n */\n getShowIcons(): boolean | undefined {\n return this.spec.displayOptions ? this.spec.displayOptions.showIcons : undefined\n }\n\n /** Set generic list initial value templates\n * @param templates - generic list initial value templates. See {@link InitialValueTemplateItemBuilder}\n * @returns generic list builder based on templates provided.\n */\n initialValueTemplates(\n templates:\n | InitialValueTemplateItem\n | InitialValueTemplateItemBuilder\n | Array<InitialValueTemplateItem | InitialValueTemplateItemBuilder>,\n ): ConcreteImpl {\n this.initialValueTemplatesSpecified = true\n return this.clone({initialValueTemplates: Array.isArray(templates) ? templates : [templates]})\n }\n\n /** Get generic list initial value templates\n * @returns generic list initial value templates\n */\n getInitialValueTemplates(): TList['initialValueTemplates'] {\n return this.spec.initialValueTemplates\n }\n\n /** Serialize generic list\n * @param options - serialization options. See {@link SerializeOptions}\n * @returns generic list object based on path provided in options. See {@link GenericList}\n */\n serialize(options: SerializeOptions = {path: []}): GenericList {\n const id = this.spec.id || ''\n const path = options.path\n\n const defaultLayout = this.spec.defaultLayout\n if (defaultLayout && !layoutOptions.includes(defaultLayout)) {\n throw new SerializeError(\n `\\`layout\\` must be one of ${layoutOptions.map((item) => `\"${item}\"`).join(', ')}`,\n path,\n id || options.index,\n this.spec.title,\n )\n }\n\n const initialValueTemplates = (this.spec.initialValueTemplates || []).map((item, i) =>\n maybeSerializeInitialValueTemplateItem(item, i, path),\n )\n\n return {\n id: validateId(id, options.path, id || options.index),\n title: this.spec.title,\n i18n: this.spec.i18n,\n type: 'genericList',\n defaultLayout,\n child: this.spec.child || noChildResolver,\n canHandleIntent: this.spec.canHandleIntent || shallowIntentChecker,\n displayOptions: this.spec.displayOptions,\n initialValueTemplates,\n menuItems: (this.spec.menuItems || []).map((item, i) =>\n maybeSerializeMenuItem(item, i, path),\n ),\n menuItemGroups: (this.spec.menuItemGroups || []).map((item, i) =>\n maybeSerializeMenuItemGroup(item, i, path),\n ),\n }\n }\n\n /** Clone generic list builder (allows for options overriding)\n * @param _withSpec - generic list options.\n * @returns generic list builder.\n */\n abstract clone(_withSpec?: object): ConcreteImpl\n}\n","import {generateHelpUrl} from '@sanity/generate-help-url'\nimport {AddIcon} from '@sanity/icons'\nimport {type SchemaType, type SortOrderingItem} from '@sanity/types'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS, type InitialValueTemplateItem} from 'sanity'\n\nimport {type ChildResolver, type ChildResolverOptions, type ItemChild} from './ChildResolver'\nimport {DocumentBuilder} from './Document'\nimport {\n type BuildableGenericList,\n type GenericList,\n GenericListBuilder,\n type GenericListInput,\n} from './GenericList'\nimport {HELP_URL, SerializeError} from './SerializeError'\nimport {type Child, type SerializeOptions} from './StructureNodes'\nimport {type StructureContext} from './types'\nimport {resolveTypeForDocument} from './util/resolveTypeForDocument'\n\nconst validateFilter = (spec: PartialDocumentList, options: SerializeOptions) => {\n const filter = spec.options?.filter.trim() || ''\n\n if (['*', '{'].includes(filter[0])) {\n throw new SerializeError(\n `\\`filter\\` cannot start with \\`${filter[0]}\\` - looks like you are providing a query, not a filter`,\n options.path,\n spec.id,\n spec.title,\n ).withHelpUrl(HELP_URL.QUERY_PROVIDED_FOR_FILTER)\n }\n\n return filter\n}\n\nconst createDocumentChildResolverForItem =\n (context: StructureContext): ChildResolver =>\n (itemId: string, options: ChildResolverOptions): ItemChild | Promise<ItemChild> | undefined => {\n const parentItem = options.parent as DocumentList\n const template = options.params?.template\n ? context.templates.find((tpl) => tpl.id === options.params.template)\n : undefined\n const type = template\n ? template.schemaType\n : parentItem.schemaTypeName || resolveTypeForDocument(context.getClient, itemId)\n\n return Promise.resolve(type).then((schemaType) =>\n schemaType\n ? context.resolveDocumentNode({schemaType, documentId: itemId})\n : new DocumentBuilder(context).id('editor').documentId(itemId).schemaType(''),\n )\n }\n\n/**\n * Partial document list\n *\n * @public\n */\nexport interface PartialDocumentList extends BuildableGenericList {\n /** Document list options. See {@link DocumentListOptions} */\n options?: DocumentListOptions\n /** Schema type name */\n schemaTypeName?: string\n}\n\n/**\n * Interface for document list input\n *\n * @public\n */\nexport interface DocumentListInput extends GenericListInput {\n /** Document list options. See {@link DocumentListOptions} */\n options: DocumentListOptions\n}\n\n/**\n * Interface for document list\n *\n * @public\n */\nexport interface DocumentList extends GenericList {\n type: 'documentList'\n /** Document list options. See {@link DocumentListOptions} */\n options: DocumentListOptions\n /** Document list child. See {@link Child} */\n child: Child\n /** Document schema type name */\n schemaTypeName?: string\n}\n\n/**\n * Interface for document List options\n *\n * @public\n */\nexport interface DocumentListOptions {\n /** Document list filter */\n filter: string\n /** Document list parameters */\n params?: Record<string, unknown>\n /** Document list API version */\n apiVersion?: string\n /** Document list API default ordering array. */\n defaultOrdering?: SortOrderingItem[]\n}\n\n/**\n * Class for building document list\n *\n * @public\n */\nexport class DocumentListBuilder extends GenericListBuilder<\n PartialDocumentList,\n DocumentListBuilder\n> {\n /** Document list options. See {@link PartialDocumentList} */\n protected spec: PartialDocumentList\n\n constructor(\n /**\n * Structure context. See {@link StructureContext}\n */\n protected _context: StructureContext,\n spec?: DocumentListInput,\n ) {\n super()\n this.spec = spec || {}\n this.initialValueTemplatesSpecified = Boolean(spec?.initialValueTemplates)\n }\n\n /** Set API version\n * @param apiVersion - API version\n * @returns document list builder based on the options and API version provided. See {@link DocumentListBuilder}\n */\n apiVersion(apiVersion: string): DocumentListBuilder {\n return this.clone({options: {...(this.spec.options || {filter: ''}), apiVersion}})\n }\n\n /** Get API version\n * @returns API version\n */\n getApiVersion(): string | undefined {\n return this.spec.options?.apiVersion\n }\n\n /** Set Document list filter\n * @param filter - GROQ-filter used to determine which documents to display. Do not support joins, since they operate on individual documents, and will ignore order-clauses and projections. See {@link https://www.sanity.io/docs/realtime-updates}\n * @returns document list builder based on the options and filter provided. See {@link DocumentListBuilder}\n */\n filter(filter: string): DocumentListBuilder {\n return this.clone({options: {...(this.spec.options || {}), filter}})\n }\n\n /** Get Document list filter\n * @returns filter\n */\n getFilter(): string | undefined {\n return this.spec.options?.filter\n }\n\n /** Set Document list schema type name\n * @param type - schema type name.\n * @returns document list builder based on the schema type name provided. See {@link DocumentListBuilder}\n */\n schemaType(type: SchemaType | string): DocumentListBuilder {\n const schemaTypeName = typeof type === 'string' ? type : type.name\n return this.clone({schemaTypeName})\n }\n\n /** Get Document list schema type name\n * @returns schema type name\n */\n getSchemaType(): string | undefined {\n return this.spec.schemaTypeName\n }\n\n /** Set Document list options' parameters\n * @param params - parameters\n * @returns document list builder based on the options provided. See {@link DocumentListBuilder}\n */\n params(params: Record<string, unknown>): DocumentListBuilder {\n return this.clone({\n options: {...(this.spec.options || {filter: ''}), params},\n })\n }\n\n /** Get Document list options' parameters\n * @returns options\n */\n getParams(): Record<string, unknown> | undefined {\n return this.spec.options?.params\n }\n\n /** Set Document list default ordering\n * @param ordering - default sort ordering array. See {@link SortOrderingItem}\n * @returns document list builder based on ordering provided. See {@link DocumentListBuilder}\n */\n defaultOrdering(ordering: SortOrderingItem[]): DocumentListBuilder {\n if (!Array.isArray(ordering)) {\n throw new Error('`defaultOrdering` must be an array of order clauses')\n }\n\n return this.clone({\n options: {...(this.spec.options || {filter: ''}), defaultOrdering: ordering},\n })\n }\n\n /** Get Document list default ordering\n * @returns default ordering. See {@link SortOrderingItem}\n */\n getDefaultOrdering(): SortOrderingItem[] | undefined {\n return this.spec.options?.defaultOrdering\n }\n\n /** Serialize Document list\n * @param options - serialization options. See {@link SerializeOptions}\n * @returns document list object based on path provided in options. See {@link DocumentList}\n */\n serialize(options: SerializeOptions = {path: []}): DocumentList {\n if (typeof this.spec.id !== 'string' || !this.spec.id) {\n throw new SerializeError(\n '`id` is required for document lists',\n options.path,\n options.index,\n this.spec.title,\n ).withHelpUrl(HELP_URL.ID_REQUIRED)\n }\n\n if (!this.spec.options || !this.spec.options.filter) {\n throw new SerializeError(\n '`filter` is required for document lists',\n options.path,\n this.spec.id,\n this.spec.title,\n ).withHelpUrl(HELP_URL.FILTER_REQUIRED)\n }\n\n const hasSimpleFilter = this.spec.options?.filter === '_type == $type'\n if (!hasSimpleFilter && this.spec.options.filter && !this.spec.options.apiVersion) {\n console.warn(\n `No apiVersion specified for document type list with custom filter: \\`${this.spec.options.filter}\\`. This will be required in the future. See %s for more info.`,\n generateHelpUrl(HELP_URL.API_VERSION_REQUIRED_FOR_CUSTOM_FILTER),\n )\n }\n return {\n ...super.serialize(options),\n type: 'documentList',\n schemaTypeName: this.spec.schemaTypeName,\n child: this.spec.child || createDocumentChildResolverForItem(this._context),\n options: {\n ...this.spec.options,\n // @todo: make specifying .apiVersion required when using custom (non-simple) filters in v4\n apiVersion: this.spec.options.apiVersion || DEFAULT_STUDIO_CLIENT_OPTIONS.apiVersion,\n filter: validateFilter(this.spec, options),\n },\n }\n }\n\n /** Clone Document list builder (allows for options overriding)\n * @param withSpec - override document list spec. See {@link PartialDocumentList}\n * @returns document list builder. See {@link DocumentListBuilder}\n */\n clone(withSpec?: PartialDocumentList): DocumentListBuilder {\n const builder = new DocumentListBuilder(this._context)\n builder.spec = {...this.spec, ...(withSpec || {})}\n\n if (!this.initialValueTemplatesSpecified) {\n builder.spec.initialValueTemplates = inferInitialValueTemplates(this._context, builder.spec)\n }\n\n if (!builder.spec.schemaTypeName) {\n builder.spec.schemaTypeName = inferTypeName(builder.spec)\n }\n\n return builder\n }\n\n /** Get Document list spec\n * @returns document list spec. See {@link PartialDocumentList}\n */\n getSpec(): PartialDocumentList {\n return this.spec\n }\n}\n\nfunction inferInitialValueTemplates(\n context: StructureContext,\n spec: PartialDocumentList,\n): InitialValueTemplateItem[] | undefined {\n const {document} = context\n const {schemaTypeName, options} = spec\n const {filter, params} = options || {filter: '', params: {}}\n const typeNames = schemaTypeName\n ? [schemaTypeName]\n : Array.from(new Set(getTypeNamesFromFilter(filter, params)))\n\n if (typeNames.length === 0) {\n return undefined\n }\n\n return typeNames\n .flatMap((schemaType) =>\n document.resolveNewDocumentOptions({\n type: 'structure',\n schemaType,\n }),\n )\n .map((option) => ({...option, icon: AddIcon}))\n}\n\nfunction inferTypeName(spec: PartialDocumentList): string | undefined {\n const {options} = spec\n const {filter, params} = options || {filter: '', params: {}}\n const typeNames = getTypeNamesFromFilter(filter, params)\n return typeNames.length === 1 ? typeNames[0] : undefined\n}\n\n/** @internal */\nexport function getTypeNamesFromFilter(\n filter: string,\n params: Record<string, unknown> = {},\n): string[] {\n let typeNames = getTypeNamesFromEqualityFilter(filter, params)\n\n if (typeNames.length === 0) {\n typeNames = getTypeNamesFromInTypesFilter(filter, params)\n }\n\n return typeNames\n}\n\n// From _type == \"movie\" || _type == $otherType\nfunction getTypeNamesFromEqualityFilter(\n filter: string,\n params: Record<string, unknown> = {},\n): string[] {\n const pattern =\n /\\b_type\\s*==\\s*(['\"].*?['\"]|\\$.*?(?:\\s|$))|\\B(['\"].*?['\"]|\\$.*?(?:\\s|$))\\s*==\\s*_type/g\n const matches: string[] = []\n let match\n while ((match = pattern.exec(filter)) !== null) {\n matches.push(match[1] || match[2])\n }\n\n return matches\n .map((candidate) => {\n const typeName = candidate[0] === '$' ? params[candidate.slice(1)] : candidate\n const normalized = ((typeName as string) || '').trim().replace(/^[\"']|[\"']$/g, '')\n return normalized\n })\n .filter(Boolean)\n}\n\n// From _type in [\"dog\", \"cat\", $otherSpecies]\nfunction getTypeNamesFromInTypesFilter(\n filter: string,\n params: Record<string, unknown> = {},\n): string[] {\n const pattern = /\\b_type\\s+in\\s+\\[(.*?)\\]/\n const matches = filter.match(pattern)\n if (!matches) {\n return []\n }\n\n return matches[1]\n .split(/,\\s*/)\n .map((match) => match.trim().replace(/^[\"']+|[\"']+$/g, ''))\n .map((item) => (item[0] === '$' ? params[item.slice(1)] : item))\n .filter(Boolean) as string[]\n}\n","import {find} from 'lodash'\nimport {isRecord} from 'sanity'\n\nimport {type ChildResolver, type ChildResolverOptions} from './ChildResolver'\nimport {isDocumentListItem} from './DocumentListItem'\nimport {\n type BuildableGenericList,\n type GenericList,\n GenericListBuilder,\n type GenericListInput,\n shallowIntentChecker,\n} from './GenericList'\nimport {type IntentChecker} from './Intent'\nimport {type ListItem, ListItemBuilder} from './ListItem'\nimport {HELP_URL, SerializeError} from './SerializeError'\nimport {type Divider, type SerializeOptions, type SerializePath} from './StructureNodes'\nimport {type StructureContext} from './types'\n\nconst getArgType = (thing: ListItem) => {\n if (thing instanceof ListBuilder) {\n return 'ListBuilder'\n }\n\n if (isPromise<ListItem>(thing)) {\n return 'Promise'\n }\n\n return Array.isArray(thing) ? 'array' : typeof thing\n}\n\nconst isListItem = (item: ListItem | Divider): item is ListItem => {\n return item.type === 'listItem'\n}\n\nconst defaultCanHandleIntent: IntentChecker = (intentName: string, params, context) => {\n const pane = context.pane as List\n const items = pane.items || []\n return (\n items\n .filter(isDocumentListItem)\n .some((item) => item.schemaType.name === params.type && item._id === params.id) ||\n shallowIntentChecker(intentName, params, context)\n )\n}\n\nconst resolveChildForItem: ChildResolver = (itemId: string, options: ChildResolverOptions) => {\n const parentItem = options.parent as List\n const items = parentItem.items.filter(isListItem)\n const target = (items.find((item) => item.id === itemId) || {child: undefined}).child\n\n if (!target || typeof target !== 'function') {\n return target\n }\n\n return typeof target === 'function' ? target(itemId, options) : target\n}\n\nfunction maybeSerializeListItem(\n item: ListItem | ListItemBuilder | Divider,\n index: number,\n path: SerializePath,\n): ListItem | Divider {\n if (item instanceof ListItemBuilder) {\n return item.serialize({path, index})\n }\n\n const listItem = item as ListItem\n if (listItem && listItem.type === 'divider') {\n return item as Divider\n }\n\n if (!listItem || listItem.type !== 'listItem') {\n const gotWhat = (listItem && listItem.type) || getArgType(listItem)\n const helpText = gotWhat === 'array' ? ' - did you forget to spread (...moreItems)?' : ''\n throw new SerializeError(\n `List items must be of type \"listItem\", got \"${gotWhat}\"${helpText}`,\n path,\n index,\n ).withHelpUrl(HELP_URL.INVALID_LIST_ITEM)\n }\n\n return item\n}\n\nfunction isPromise<T>(thing: unknown): thing is PromiseLike<T> {\n return isRecord(thing) && typeof thing.then === 'function'\n}\n\n/**\n * Interface for List\n *\n * @public\n */\nexport interface List extends GenericList {\n type: 'list'\n /** List items. See {@link ListItem} and {@link Divider} */\n items: (ListItem | Divider)[]\n}\n\n/**\n * Interface for list input\n *\n * @public\n */\nexport interface ListInput extends GenericListInput {\n /** List input items array. See {@link ListItem}, {@link ListItemBuilder} and {@link Divider} */\n items?: (ListItem | ListItemBuilder | Divider)[]\n}\n\n/**\n * Interface for buildable list\n *\n * @public\n */\nexport interface BuildableList extends BuildableGenericList {\n /** List items. See {@link ListItem}, {@link ListItemBuilder} and {@link Divider} */\n items?: (ListItem | ListItemBuilder | Divider)[]\n}\n\n/**\n * A `ListBuilder` is used to build a list of items in the structure tool.\n *\n * @public */\nexport class ListBuilder extends GenericListBuilder<BuildableList, ListBuilder> {\n /** buildable list option object. See {@link BuildableList} */\n protected spec: BuildableList\n\n constructor(\n /**\n * Structure context. See {@link StructureContext}\n */\n protected _context: StructureContext,\n spec?: ListInput,\n ) {\n super()\n this.spec = spec ? spec : {}\n this.initialValueTemplatesSpecified = Boolean(spec && spec.initialValueTemplates)\n }\n\n /**\n * Set list builder based on items provided\n * @param items - list items. See {@link ListItemBuilder}, {@link ListItem} and {@link Divider}\n * @returns list builder based on items provided. See {@link ListBuilder}\n */\n items(items: (ListItemBuilder | ListItem | Divider)[]): ListBuilder {\n return this.clone({items})\n }\n\n /** Get list builder items\n * @returns list items. See {@link BuildableList}\n */\n getItems(): BuildableList['items'] {\n return this.spec.items\n }\n\n /** Serialize list builder\n * @param options - serialization options. See {@link SerializeOptions}\n * @returns list based on path in options. See {@link List}\n */\n serialize(options: SerializeOptions = {path: []}): List {\n const id = this.spec.id\n if (typeof id !== 'string' || !id) {\n throw new SerializeError(\n '`id` is required for lists',\n options.path,\n options.index,\n ).withHelpUrl(HELP_URL.ID_REQUIRED)\n }\n\n const items = typeof this.spec.items === 'undefined' ? [] : this.spec.items\n if (!Array.isArray(items)) {\n throw new SerializeError(\n '`items` must be an array of items',\n options.path,\n options.index,\n ).withHelpUrl(HELP_URL.LIST_ITEMS_MUST_BE_ARRAY)\n }\n\n const path = (options.path || []).concat(id)\n const serializedItems = items.map((item, index) => maybeSerializeListItem(item, index, path))\n const dupes = serializedItems.filter((val, i) => find(serializedItems, {id: val.id}, i + 1))\n\n if (dupes.length > 0) {\n const dupeIds = dupes.map((item) => item.id).slice(0, 5)\n const dupeDesc = dupes.length > 5 ? `${dupeIds.join(', ')}...` : dupeIds.join(', ')\n throw new SerializeError(\n `List items with same ID found (${dupeDesc})`,\n options.path,\n options.index,\n ).withHelpUrl(HELP_URL.LIST_ITEM_IDS_MUST_BE_UNIQUE)\n }\n\n return {\n ...super.serialize(options),\n type: 'list',\n canHandleIntent: this.spec.canHandleIntent || defaultCanHandleIntent,\n child: this.spec.child || resolveChildForItem,\n items: serializedItems,\n }\n }\n\n /**\n * Clone list builder and return new list builder based on context and spec provided\n * @param withSpec - list options. See {@link BuildableList}\n * @returns new list builder based on context and spec provided. See {@link ListBuilder}\n */\n clone(withSpec?: BuildableList): ListBuilder {\n const builder = new ListBuilder(this._context)\n builder.spec = {...this.spec, ...(withSpec || {})}\n return builder\n }\n}\n","import {type SchemaType} from '@sanity/types'\nimport {type Observable} from 'rxjs'\nimport {type I18nTextRecord} from 'sanity'\n\nimport {type ChildResolver, type ItemChild} from './ChildResolver'\nimport {ComponentBuilder} from './Component'\nimport {DocumentBuilder} from './Document'\nimport {DocumentListBuilder} from './DocumentList'\nimport {ListBuilder} from './List'\nimport {HELP_URL, SerializeError} from './SerializeError'\nimport {\n type Collection,\n type CollectionBuilder,\n type Serializable,\n type SerializeOptions,\n} from './StructureNodes'\nimport {type StructureContext} from './types'\nimport {getStructureNodeId} from './util/getStructureNodeId'\nimport {validateId} from './util/validateId'\n\n/**\n * Unserialized list item child.\n * See {@link Collection}, {@link CollectionBuilder}, {@link ChildResolver} and {@link ItemChild}\n *\n * @public\n */\nexport type UnserializedListItemChild =\n | Collection\n | CollectionBuilder\n | ChildResolver\n | Observable<ItemChild>\n\n/**\n * Child of List Item\n * See {@link Collection}, {@link ChildResolver}, {@link ItemChild}\n * @public\n */\nexport type ListItemChild = Collection | ChildResolver | Observable<ItemChild> | undefined\n\n/**\n * Interface for serialize list item options\n *\n * @public\n */\nexport interface ListItemSerializeOptions extends SerializeOptions {\n /** Check if list item title is optional */\n titleIsOptional?: boolean\n}\n\n/**\n * Interface for ist item display options\n *\n * @public */\nexport interface ListItemDisplayOptions {\n /** Check if list item display should show icon */\n showIcon?: boolean\n}\n\n/**\n * interface for list item input\n *\n * @public */\nexport interface ListItemInput {\n /** List item id */\n id: string\n /** List item title */\n title?: string\n /** List item icon */\n icon?: React.ComponentType | React.ReactNode\n /** List item child. See {@link ListItemChild} */\n child?: ListItemChild\n /** List item display options. See {@link ListItemDisplayOptions} */\n displayOptions?: ListItemDisplayOptions\n /** List item schema type. See {@link SchemaType} */\n schemaType?: SchemaType | string\n}\n\n/**\n * Interface for List Item\n *\n * @public */\nexport interface ListItem {\n /** List item id */\n id: string\n /** List item type */\n type: string\n /**\n * The i18n key and namespace used to populate the localized title. This is\n * the recommend way to set the title if you are localizing your studio.\n */\n i18n?: I18nTextRecord<'title'>\n /** List item title. Note that the `i18n` key and namespace will take precedence. */\n title?: string\n /** List item icon */\n icon?: React.ComponentType | React.ReactNode\n /** List item child. See {@link ListItemChild} */\n child?: ListItemChild\n /** List item display options. See {@link ListItemDisplayOptions} */\n displayOptions?: ListItemDisplayOptions\n /** List item schema type. See {@link SchemaType} */\n schemaType?: SchemaType\n}\n\n/**\n * Interface for unserialized list items.\n *\n * @public\n */\nexport interface UnserializedListItem {\n /** List item ID */\n id: string\n /** List item title */\n title: string\n /**\n * The i18n key and namespace used to populate the localized title. This is\n * the recommend way to set the title if you are localizing your studio.\n */\n i18n?: I18nTextRecord<'title'>\n /** List item icon */\n icon?: React.ComponentType | React.ReactNode\n /** List item child. See {@link UnserializedListItemChild} */\n child?: UnserializedListItemChild\n /** List item display options. See {@link ListItemDisplayOptions} */\n displayOptions?: ListItemDisplayOptions\n /** List item schema. See {@link SchemaType} */\n schemaType?: SchemaType | string\n}\n\n/**\n * Partial list item. See {@link UnserializedListItem}\n *\n * @public */\nexport type PartialListItem = Partial<UnserializedListItem>\n\n/**\n * Class for building list items\n *\n * @public */\nexport class ListItemBuilder implements Serializable<ListItem> {\n /** List item option object. See {@link PartialListItem} */\n protected spec: PartialListItem\n\n constructor(\n /**\n * Structure context. See {@link StructureContext}\n */\n protected _context: StructureContext,\n spec?: ListItemInput,\n ) {\n this.spec = spec ? spec : {}\n }\n\n /**\n * Set list item ID\n * @returns list item builder based on ID provided. See {@link ListItemBuilder}\n */\n id(id: string): ListItemBuilder {\n return this.clone({id})\n }\n\n /**\n * Get list item ID\n * @returns list item ID. See {@link PartialListItem}\n */\n getId(): PartialListItem['id'] {\n return this.spec.id\n }\n\n /**\n * Set list item title\n * @returns list item builder based on title provided. See {@link ListItemBuilder}\n */\n title(title: string): ListItemBuilder {\n return this.clone({title, id: getStructureNodeId(title, this.spec.id)})\n }\n\n /**\n * Get list item title\n * @returns list item title. See {@link PartialListItem}\n */\n getTitle(): PartialListItem['title'] {\n return this.spec.title\n }\n\n /** Set the i18n key and namespace used to populate the localized title.\n * @param i18n - the key and namespaced used to populate the localized title.\n * @returns component builder based on i18n key and ns provided\n */\n i18n(i18n: I18nTextRecord<'title'>): ListItemBuilder {\n return this.clone({i18n})\n }\n\n /** Get i18n key and namespace used to populate the localized title\n * @returns the i18n key and namespace used to populate the localized title\n */\n getI18n(): I18nTextRecord<'title'> | undefined {\n return this.spec.i18n\n }\n\n /**\n * Set list item icon\n * @returns list item builder based on icon provided. See {@link ListItemBuilder}\n */\n icon(icon: React.ComponentType | React.ReactNode): ListItemBuilder {\n return this.clone({icon})\n }\n\n /**\n * Set if list item should show icon\n * @returns list item builder based on showIcon provided. See {@link ListItemBuilder}\n */\n showIcon(enabled = true): ListItemBuilder {\n return this.clone({\n displayOptions: {...(this.spec.displayOptions || {}), showIcon: enabled},\n })\n }\n\n /**\n * Check if list item should show icon\n * @returns true if it should show the icon, false if not, undefined if not set\n */\n getShowIcon(): boolean | undefined {\n return this.spec.displayOptions ? this.spec.displayOptions.showIcon : undefined\n }\n\n /**\n *Get list item icon\n * @returns list item icon. See {@link PartialListItem}\n */\n getIcon(): PartialListItem['icon'] {\n return this.spec.icon\n }\n\n /**\n * Set list item child\n * @param child - list item child. See {@link UnserializedListItemChild}\n * @returns list item builder based on child provided. See {@link ListItemBuilder}\n */\n child(child: UnserializedListItemChild): ListItemBuilder {\n return this.clone({child})\n }\n\n /**\n * Get list item child\n * @returns list item child. See {@link PartialListItem}\n */\n getChild(): PartialListItem['child'] {\n return this.spec.child\n }\n\n /**\n * Set list item schema type\n * @param schemaType - list item schema type. See {@link SchemaType}\n * @returns list item builder based on schema type provided. See {@link ListItemBuilder}\n */\n schemaType(schemaType: SchemaType | string): ListItemBuilder {\n return this.clone({schemaType})\n }\n\n /**\n * Get list item schema type\n * @returns list item schema type. See {@link PartialListItem}\n */\n getSchemaType(): PartialListItem['schemaType'] {\n const schemaType = this.spec.schemaType\n\n if (typeof schemaType === 'string') {\n return this._context.schema.get(schemaType)\n }\n\n return this.spec.schemaType\n }\n\n /** Serialize list item builder\n * @param options - serialization options. See {@link ListItemSerializeOptions}\n * @returns list item node based on path provided in options. See {@link ListItem}\n */\n serialize(options: ListItemSerializeOptions = {path: []}): ListItem {\n const {id, title, child} = this.spec\n if (typeof id !== 'string' || !id) {\n throw new SerializeError(\n '`id` is required for list items',\n options.path,\n options.index,\n ).withHelpUrl(HELP_URL.ID_REQUIRED)\n }\n\n if (!options.titleIsOptional && (typeof title !== 'string' || !title)) {\n throw new SerializeError('`title` is required for list items', options.path, id).withHelpUrl(\n HELP_URL.TITLE_REQUIRED,\n )\n }\n\n let schemaType = this.spec.schemaType\n if (typeof schemaType === 'string') {\n const type = this._context.schema.get(schemaType)\n if (!type) {\n throw new SerializeError(\n `Could not find type \"${schemaType}\" in schema`,\n options.path,\n id,\n ).withHelpUrl(HELP_URL.SCHEMA_TYPE_NOT_FOUND)\n }\n\n schemaType = type\n }\n\n const serializeOptions = {path: options.path.concat(id), hint: 'child'}\n let listChild =\n child instanceof ComponentBuilder ||\n child instanceof DocumentListBuilder ||\n child instanceof DocumentBuilder ||\n child instanceof ListBuilder\n ? child.serialize(serializeOptions)\n : child\n\n // In the case of a function, create a bound version that will pass the correct serialize\n // context, so we may lazily resolve it at some point in the future without losing context\n if (typeof listChild === 'function') {\n const originalChild = listChild\n listChild = (itemId, childOptions) => {\n return originalChild(itemId, {...childOptions, serializeOptions})\n }\n }\n\n return {\n ...this.spec,\n id: validateId(id, options.path, options.index),\n schemaType,\n child: listChild,\n title,\n type: 'listItem',\n }\n }\n\n /** Clone list item builder\n * @param withSpec - partial list item options. See {@link PartialListItem}\n * @returns list item builder based on context and spec provided. See {@link ListItemBuilder}\n */\n clone(withSpec?: PartialListItem): ListItemBuilder {\n const builder = new ListItemBuilder(this._context)\n builder.spec = {...this.spec, ...(withSpec || {})}\n return builder\n }\n}\n","import {type SchemaType} from '@sanity/types'\nimport {isRecord} from 'sanity'\n\nimport {DocumentBuilder} from './Document'\nimport {\n type ListItem,\n ListItemBuilder,\n type ListItemInput,\n type UnserializedListItem,\n} from './ListItem'\nimport {HELP_URL, SerializeError} from './SerializeError'\nimport {type SerializeOptions} from './StructureNodes'\nimport {type StructureContext} from './types'\n\n/**\n * Interface for document list item input\n *\n * @public\n */\nexport interface DocumentListItemInput extends ListItemInput {\n /** Document list item input schema type. See {@link SchemaType} */\n schemaType: SchemaType | string\n}\n\n/**\n * Interface for document list item\n *\n * @public\n */\nexport interface DocumentListItem extends ListItem {\n /** Document schema type. See {@link SchemaType} */\n schemaType: SchemaType\n /** Document ID */\n _id: string\n}\n\n/**\n * Partial document list item\n *\n * @public\n */\nexport type PartialDocumentListItem = Partial<UnserializedListItem>\n\nconst createDefaultChildResolver =\n (context: StructureContext, spec: PartialDocumentListItem) => (documentId: string) => {\n const schemaType =\n spec.schemaType &&\n (typeof spec.schemaType === 'string' ? spec.schemaType : spec.schemaType.name)\n\n return schemaType\n ? context.resolveDocumentNode({schemaType, documentId})\n : new DocumentBuilder(context).id('documentEditor').documentId(documentId)\n }\n\n/**\n * Class for building a document list item\n *\n * @public\n */\nexport class DocumentListItemBuilder extends ListItemBuilder {\n /** Document list options. See {@link PartialDocumentListItem} */\n protected spec: PartialDocumentListItem\n\n constructor(\n /**\n * Structure context. See {@link StructureContext}\n */\n protected _context: StructureContext,\n spec?: DocumentListItemInput,\n ) {\n super(_context, spec)\n this.spec = spec ? spec : {}\n }\n\n /**\n * Serialize document list item\n * @param options - serialization options. See {@link SerializeOptions}\n * @returns document list item object based on path provided in options. See {@link DocumentListItem}\n */\n serialize(options: SerializeOptions = {path: []}): DocumentListItem {\n const spec = super.serialize({...options, titleIsOptional: true})\n\n if (!spec.schemaType) {\n throw new SerializeError(\n '`schemaType` is required for document list items',\n options.path,\n options.index,\n ).withHelpUrl(HELP_URL.SCHEMA_TYPE_REQUIRED)\n }\n\n const child = spec.child || createDefaultChildResolver(this._context, spec)\n return {...spec, child, schemaType: spec.schemaType, _id: spec.id}\n }\n\n /** Clone Document list item builder (allows for options overriding)\n * @param withSpec - Document list item builder options. See {@link PartialDocumentListItem}\n * @returns document list item builder. See {@link DocumentListItemBuilder}\n */\n clone(withSpec?: PartialDocumentListItem): DocumentListItemBuilder {\n const builder = new DocumentListItemBuilder(this._context)\n builder.spec = {...this.spec, ...(withSpec || {})}\n return builder\n }\n}\n\n/** @internal */\nexport function isDocumentListItem(item: unknown): item is DocumentListItem {\n return isRecord(item) && typeof item.schemaType !== 'undefined' && typeof item._id === 'string'\n}\n","import {type SchemaType} from '@sanity/types'\n\nimport {DocumentListBuilder, type DocumentListInput, type PartialDocumentList} from './DocumentList'\nimport {type GenericListInput} from './GenericList'\nimport {DEFAULT_INTENT_HANDLER} from './Intent'\nimport {type Child} from './StructureNodes'\nimport {type StructureContext} from './types'\n\n/**\n * Interface for document type list input\n *\n * @public\n */\nexport interface DocumentTypeListInput extends Partial<GenericListInput> {\n /** Document type list input schema type. See {@link SchemaType} */\n schemaType: SchemaType | string\n}\n\n/**\n * Class for building a document type list\n *\n * @public\n */\nexport class DocumentTypeListBuilder extends DocumentListBuilder {\n /** Document list options. See {@link PartialDocumentList} */\n protected spec: PartialDocumentList\n\n constructor(\n /**\n * Structure context. See {@link StructureContext}\n */\n protected _context: StructureContext,\n spec?: DocumentListInput,\n ) {\n super(_context)\n this.spec = spec ? spec : {}\n }\n\n /**\n * Set Document type list child\n * @param child - Child component. See {@link Child}\n * @returns document type list builder based on child component provided without default intent handler. See {@link DocumentTypeListBuilder}\n */\n child(child: Child): DocumentTypeListBuilder {\n return this.cloneWithoutDefaultIntentHandler({child})\n }\n\n /** Clone Document type list builder (allows for options overriding)\n * @param withSpec - Document type list builder options. See {@link PartialDocumentList}\n * @returns document type list builder. See {@link DocumentTypeListBuilder}\n */\n clone(withSpec?: PartialDocumentList): DocumentTypeListBuilder {\n const parent = super.clone(withSpec)\n const builder = new DocumentTypeListBuilder(this._context)\n builder.spec = {...this.spec, ...parent.getSpec(), ...(withSpec || {})}\n return builder\n }\n\n /** Clone Document type list builder (allows for options overriding) and remove default intent handler\n * @param withSpec - Document type list builder options. See {@link PartialDocumentList}\n * @returns document type list builder without default intent handler. See {@link DocumentTypeListBuilder}\n */\n cloneWithoutDefaultIntentHandler(withSpec?: PartialDocumentList): DocumentTypeListBuilder {\n const parent = super.clone(withSpec)\n const builder = new DocumentTypeListBuilder(this._context)\n const canHandleIntent = this.spec.canHandleIntent\n const shouldOverride = canHandleIntent && canHandleIntent.identity === DEFAULT_INTENT_HANDLER\n const override = shouldOverride ? {canHandleIntent: undefined} : {}\n builder.spec = {\n ...parent.getSpec(),\n ...this.spec,\n ...(withSpec || {}),\n ...override,\n }\n return builder\n }\n}\n","import {StackCompactIcon, StackIcon} from '@sanity/icons'\nimport {type SchemaType} from '@sanity/types'\nimport {startCase} from 'lodash'\n\nimport {structureLocaleNamespace} from '../i18n'\nimport {type DocumentListBuilder} from './DocumentList'\nimport {DocumentTypeListBuilder, type DocumentTypeListInput} from './DocumentTypeList'\nimport {defaultIntentChecker} from './Intent'\nimport {type List} from './List'\nimport {type ListItem, ListItemBuilder} from './ListItem'\nimport {getOrderingMenuItemsForSchemaType, MenuItemBuilder} from './MenuItem'\nimport {DEFAULT_SELECTED_ORDERING_OPTION} from './Sort'\nimport {type Collection} from './StructureNodes'\nimport {type StructureContext} from './types'\n\nconst BUNDLED_DOC_TYPES = ['sanity.imageAsset', 'sanity.fileAsset']\n\nfunction isBundledDocType(typeName: string) {\n return BUNDLED_DOC_TYPES.includes(typeName)\n}\n\nfunction isDocumentType(schemaType: SchemaType) {\n return schemaType.type?.name === 'document'\n}\n\nfunction isList(collection: Collection): collection is List {\n return collection.type === 'list'\n}\n\nexport function getDocumentTypes({schema}: StructureContext): string[] {\n return schema\n .getTypeNames()\n .filter((n) => {\n const schemaType = schema.get(n)\n return schemaType && isDocumentType(schemaType)\n })\n .filter((n) => !isBundledDocType(n))\n}\n\nexport function getDocumentTypeListItems(context: StructureContext): ListItemBuilder[] {\n const types = getDocumentTypes(context)\n return types.map((typeName) => getDocumentTypeListItem(context, typeName))\n}\n\nexport function getDocumentTypeListItem(\n context: StructureContext,\n typeName: string,\n): ListItemBuilder {\n const {schema} = context\n\n const type = schema.get(typeName)\n if (!type) {\n throw new Error(`Schema type with name \"${typeName}\" not found`)\n }\n\n const title = type.title || startCase(typeName)\n\n return new ListItemBuilder(context)\n .id(typeName)\n .title(title)\n .schemaType(type)\n .child((id, childContext) => {\n const parent = childContext.parent as Collection\n const parentItem = isList(parent)\n ? (parent.items.find((item) => item.id === id) as ListItem)\n : null\n\n let list = getDocumentTypeList(context, typeName)\n if (parentItem && parentItem.title) {\n list = list.title(parentItem.title)\n }\n\n return list\n })\n}\n\nexport function getDocumentTypeList(\n context: StructureContext,\n typeNameOrSpec: string | DocumentTypeListInput,\n): DocumentListBuilder {\n const {schema, resolveDocumentNode} = context\n\n const schemaType = typeof typeNameOrSpec === 'string' ? typeNameOrSpec : typeNameOrSpec.schemaType\n const typeName = typeof schemaType === 'string' ? schemaType : schemaType.name\n const spec: DocumentTypeListInput =\n typeof typeNameOrSpec === 'string' ? {schemaType} : typeNameOrSpec\n\n const type = schema.get(typeName)\n if (!type) {\n throw new Error(`Schema type with name \"${typeName}\" not found`)\n }\n\n const title = type.title || startCase(typeName)\n\n return new DocumentTypeListBuilder(context)\n .id(spec.id || typeName)\n .title(spec.title || title)\n .filter('_type == $type')\n .params({type: typeName})\n .schemaType(type)\n .defaultOrdering(DEFAULT_SELECTED_ORDERING_OPTION.by)\n .menuItemGroups(\n spec.menuItemGroups || [\n {\n id: 'sorting',\n title: 'Sort',\n i18n: {title: {key: 'menu-item-groups.actions-group', ns: structureLocaleNamespace}},\n },\n {\n id: 'layout',\n title: 'Layout',\n i18n: {title: {key: 'menu-item-groups.layout-group', ns: structureLocaleNamespace}},\n },\n {\n id: 'actions',\n title: 'Actions',\n i18n: {title: {key: 'menu-item-groups.sorting-group', ns: structureLocaleNamespace}},\n },\n ],\n )\n .child(\n spec.child ||\n ((documentId: string) => resolveDocumentNode({schemaType: typeName, documentId})),\n )\n .canHandleIntent(spec.canHandleIntent || defaultIntentChecker)\n .menuItems(\n spec.menuItems || [\n // Create new (from action button) will be added in serialization step of GenericList\n\n // Sort by <Y>\n ...getOrderingMenuItemsForSchemaType(context, type),\n\n // Display as <Z>\n new MenuItemBuilder(context)\n .group('layout')\n .i18n({title: {key: 'menu-items.layout.compact-view', ns: structureLocaleNamespace}})\n .title('Compact view') // fallback title\n .icon(StackCompactIcon)\n .action('setLayout')\n .params({layout: 'default'}),\n\n new MenuItemBuilder(context)\n .group('layout')\n .i18n({title: {key: 'menu-items.layout.detailed-view', ns: structureLocaleNamespace}})\n .title('Detailed view') // fallback title\n .icon(StackIcon)\n .action('setLayout')\n .params({layout: 'detail'}),\n\n // Create new (from menu) will be added in serialization step of GenericList\n ],\n )\n}\n","import {type SchemaType} from '@sanity/types'\nimport {uniqueId} from 'lodash'\nimport {isValidElementType} from 'react-is'\nimport {getConfigContextFromSource, getPublishedId, type Source} from 'sanity'\n\nimport {structureLocaleNamespace} from '../i18n'\nimport {ComponentBuilder, type ComponentInput} from './Component'\nimport {DocumentBuilder, documentFromEditor, documentFromEditorWithInitialValue} from './Document'\nimport {DocumentListBuilder} from './DocumentList'\nimport {DocumentListItemBuilder} from './DocumentListItem'\nimport {\n getDocumentTypeList,\n getDocumentTypeListItem,\n getDocumentTypeListItems,\n} from './documentTypeListItems'\nimport {\n defaultInitialValueTemplateItems,\n InitialValueTemplateItemBuilder,\n menuItemsFromInitialValueTemplateItems,\n} from './InitialValueTemplateItem'\nimport {ListBuilder} from './List'\nimport {ListItemBuilder} from './ListItem'\nimport {getOrderingMenuItem, getOrderingMenuItemsForSchemaType, MenuItemBuilder} from './MenuItem'\nimport {MenuItemGroupBuilder} from './MenuItemGroup'\nimport {type Divider} from './StructureNodes'\nimport {\n type DefaultDocumentNodeResolver,\n type StructureBuilder,\n type StructureContext,\n type UserComponent,\n} from './types'\nimport * as views from './views'\n\n/** @internal */\nexport interface StructureBuilderOptions {\n source: Source\n defaultDocumentNode?: DefaultDocumentNodeResolver\n}\n\nfunction hasIcon(schemaType?: SchemaType | string): boolean {\n if (!schemaType || typeof schemaType === 'string') {\n return false\n }\n\n return Boolean(schemaType.icon)\n}\n\nfunction getDefaultStructure(context: StructureContext): ListBuilder {\n const items = getDocumentTypeListItems(context)\n return new ListBuilder(context)\n .id('__root__')\n .title('Content')\n .i18n({title: {key: 'default-definition.content-title', ns: structureLocaleNamespace}})\n .items(items)\n .showIcons(items.some((item) => hasIcon(item.getSchemaType())))\n}\n\n/** @internal */\nexport function createStructureBuilder({\n defaultDocumentNode,\n source,\n}: StructureBuilderOptions): StructureBuilder {\n const configContext = getConfigContextFromSource(source)\n const context: StructureContext = {\n ...source,\n getStructureBuilder: () => structureBuilder,\n resolveDocumentNode: (options) => {\n let builder =\n defaultDocumentNode?.(structureBuilder, {...options, ...configContext}) ||\n new DocumentBuilder(context)\n\n if (!builder.getId()) {\n builder = builder.id('documentEditor')\n }\n\n if (options.documentId) {\n builder = builder.documentId(getPublishedId(options.documentId))\n }\n\n return builder.schemaType(options.schemaType)\n },\n }\n\n const structureBuilder: StructureBuilder = {\n defaults: () => getDefaultStructure(context),\n documentTypeList: (...args) => getDocumentTypeList(context, ...args),\n documentTypeListItem: (...args) => getDocumentTypeListItem(context, ...args),\n documentTypeListItems: (...args) => getDocumentTypeListItems(context, ...args),\n document: (...args) => new DocumentBuilder(context, ...args),\n documentWithInitialValueTemplate: (...args) =>\n documentFromEditorWithInitialValue(context, ...args),\n defaultDocument: context.resolveDocumentNode,\n\n list: (...args) => new ListBuilder(context, ...args),\n listItem: (...args) => new ListItemBuilder(context, ...args),\n\n menuItem: (...args) => new MenuItemBuilder(context, ...args),\n menuItemGroup: (...args) => new MenuItemGroupBuilder(context, ...args),\n menuItemsFromInitialValueTemplateItems: (...args) =>\n menuItemsFromInitialValueTemplateItems(context, ...args),\n\n documentList: (...args) => new DocumentListBuilder(context, ...args),\n documentListItem: (...args) => new DocumentListItemBuilder(context, ...args),\n\n orderingMenuItem: (...args) => getOrderingMenuItem(context, ...args),\n orderingMenuItemsForType: (...args) => getOrderingMenuItemsForSchemaType(context, ...args),\n\n editor: (...args) => documentFromEditor(context, ...args),\n\n defaultInitialValueTemplateItems: (...args) =>\n defaultInitialValueTemplateItems(context, ...args),\n\n initialValueTemplateItem: (\n templateId: string,\n parameters?: Record<string, unknown>,\n ): InitialValueTemplateItemBuilder =>\n new InitialValueTemplateItemBuilder(context, {\n id: templateId,\n parameters,\n templateId,\n }),\n\n component: (spec?: ComponentInput | UserComponent) => {\n return isValidElementType(spec)\n ? new ComponentBuilder().component(spec as UserComponent)\n : new ComponentBuilder(spec as ComponentInput)\n },\n\n divider: (): Divider => ({id: uniqueId('__divider__'), type: 'divider'}),\n\n view: views,\n context,\n }\n\n return structureBuilder\n}\n","import {type DocumentBadgeComponent} from 'sanity'\n\n/** @internal */\nexport const LiveEditBadge: DocumentBadgeComponent = (props) => {\n const {liveEdit} = props\n\n if (liveEdit) {\n return {\n label: 'Live',\n color: 'danger',\n }\n }\n\n return null\n}\nLiveEditBadge.displayName = 'LiveEditBadge'\n","import {uuid} from '@sanity/uuid'\n\nimport {EMPTY_PARAMS, type LOADING_PANE} from './constants'\nimport {type PaneNode, type RouterPanes} from './types'\n\nconst state: {\n activePanes: Array<PaneNode | typeof LOADING_PANE>\n} = {activePanes: []}\n\nexport function setActivePanes(panes: Array<PaneNode | typeof LOADING_PANE>): void {\n state.activePanes = panes\n}\n\n/**\n * This function looks at the _active panes_ to resolve an intent. this type of\n * intent resolution is faster and does not cause the panes to reset\n *\n * @internal\n */\nexport function getIntentState(\n intent: string,\n params: Record<string, string>,\n routerState: {panes?: RouterPanes} | undefined,\n payload: unknown,\n): {panes: RouterPanes} | {intent: string; params: Record<string, string>; payload: unknown} {\n const panes = routerState?.panes || []\n const activePanes = state.activePanes || []\n const editDocumentId = params.id || uuid()\n const isTemplate = intent === 'create' && params.template\n const isVersion = intent === 'create' && params.version\n\n // Loop through open panes and see if any of them can handle the intent\n for (let i = activePanes.length - 1; i >= 0; i--) {\n const pane = activePanes[i]\n\n if (typeof pane !== 'object') continue\n\n // NOTE: if you update this logic, please also update the similar handler in\n // `resolveIntent.ts`\n if (\n pane.canHandleIntent?.(intent, params, {\n pane,\n index: i,\n }) ||\n // see `resolveIntent.ts` for more info\n (pane.type === 'documentList' &&\n pane.schemaTypeName === params.type &&\n pane.options.filter === '_type == $type')\n ) {\n const paneParams: {\n template?: string\n version?: string\n } = EMPTY_PARAMS\n if (isTemplate) paneParams.template = params.template\n if (isVersion) paneParams.version = params.version\n\n return {\n panes: panes\n .slice(0, i)\n .concat([[{id: editDocumentId, params: paneParams, payload}]]) as RouterPanes,\n }\n }\n }\n\n return {intent: intent, params, payload}\n}\n","import {\n AddIcon,\n CloseIcon,\n EditIcon,\n type IconComponent,\n PublishIcon,\n TrashIcon,\n UnpublishIcon,\n} from '@sanity/icons'\n\nexport const TIMELINE_ICON_COMPONENTS: {[key: string]: IconComponent | undefined} = {\n create: AddIcon,\n delete: TrashIcon,\n discardDraft: CloseIcon,\n initial: AddIcon,\n editDraft: EditIcon,\n editLive: EditIcon,\n publish: PublishIcon,\n unpublish: UnpublishIcon,\n}\n","import {type IconComponent} from '@sanity/icons'\nimport {type ChunkType} from 'sanity'\n\nimport {TIMELINE_ICON_COMPONENTS} from './constants'\n\nexport function getTimelineEventIconComponent(type: ChunkType): IconComponent | undefined {\n return TIMELINE_ICON_COMPONENTS[type]\n}\n","import {ChevronLeftIcon} from '@sanity/icons'\nimport {type MouseEvent, useCallback} from 'react'\nimport {useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../i18n'\nimport {TIMELINE_LIST_WRAPPER_ID} from './timeline'\n\n/**\n * This is a hack to force the scrollbar to not appear when the list is expanding,\n * if we don't do this the scrollbar will appear for a brief moment when the list is expanding and then disappear\n * when the list is fully expanded.\n */\nfunction hideScrollbarOnExpand(isExpanded: boolean) {\n // Do nothing if the list is already expanded\n if (isExpanded) return\n\n const listWrapper = document.getElementById(TIMELINE_LIST_WRAPPER_ID)\n\n if (listWrapper) {\n const firstChildren = listWrapper.children[0] as HTMLElement\n const hasScrollbar = firstChildren.scrollHeight > firstChildren.clientHeight\n if (!hasScrollbar) {\n //\n const currentStyle = getComputedStyle(firstChildren).overflowY\n // Add overflow hidden to the listWrapper to avoid the scrollbar to appear when expanding\n firstChildren.style.overflowY = 'hidden'\n setTimeout(() => {\n // Reset the overflow style after the list is expanded\n firstChildren.style.overflowY = currentStyle\n }, 0)\n }\n }\n}\n\nconst FlipIcon = styled(ChevronLeftIcon)`\n transition: transform 200ms;\n &[data-expanded='true'] {\n transform: rotate(-90deg);\n }\n`\n\nexport function ExpandableTimelineItemButton({\n isExpanded,\n onExpand,\n}: {\n isExpanded: boolean\n onExpand: () => void\n}) {\n const {t} = useTranslation(structureLocaleNamespace)\n\n const handleExpandClick = useCallback(\n (e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation()\n hideScrollbarOnExpand(isExpanded)\n onExpand()\n },\n [onExpand, isExpanded],\n )\n\n return (\n <Button\n mode=\"bleed\"\n icon={<FlipIcon data-expanded={isExpanded} />}\n tooltipProps={{\n content: isExpanded\n ? t('timeline-item.menu.action-collapse')\n : t('timeline-item.menu.action-expand'),\n }}\n onClick={handleExpandClick}\n />\n )\n}\n","import {Box, Flex, Stack} from '@sanity/ui'\nimport {css, styled} from 'styled-components'\n\nexport const StackWrapper = styled(Stack)`\n max-width: 200px;\n`\n\nexport const ListWrapper = styled(Flex)<{$maxHeight: string}>`\n max-height: ${(props) => props.$maxHeight};\n min-width: 244px;\n`\n\nexport const Root = styled(Box)<{$visible?: boolean}>(({$visible}) => {\n return css`\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s;\n\n ${$visible &&\n css`\n opacity: 1;\n pointer-events: auto;\n `}\n `\n})\n","import {type ChunkType, type StudioLocaleResourceKeys} from 'sanity'\n\n/**\n * Maps from a chunk type to an i18n key for the operation\n *\n * @internal\n */\nexport const TIMELINE_ITEM_I18N_KEY_MAPPING: Record<ChunkType, StudioLocaleResourceKeys> = {\n initial: 'timeline.operation.created-initial',\n create: 'timeline.operation.created',\n publish: 'timeline.operation.published',\n editLive: 'timeline.operation.edited-live',\n editDraft: 'timeline.operation.edited-draft',\n unpublish: 'timeline.operation.unpublished',\n discardDraft: 'timeline.operation.draft-discarded',\n delete: 'timeline.operation.deleted',\n}\n","import {type AvatarSize, AvatarStack} from '@sanity/ui'\nimport {UserAvatar} from 'sanity'\n\ninterface UserAvatarStackProps {\n maxLength?: number\n userIds: string[]\n size?: AvatarSize\n withTooltip?: boolean\n}\n\nexport function UserAvatarStack({\n maxLength,\n userIds,\n size,\n withTooltip = true,\n}: UserAvatarStackProps) {\n return (\n <AvatarStack maxLength={maxLength} size={size}>\n {userIds.map((userId) => (\n <UserAvatar key={userId} user={userId} withTooltip={withTooltip} />\n ))}\n </AvatarStack>\n )\n}\n","import {Box, Card, Flex, Skeleton, Stack, Text} from '@sanity/ui'\n// eslint-disable-next-line camelcase\nimport {getTheme_v2, type ThemeColorAvatarColorKey} from '@sanity/ui/theme'\nimport {type MouseEvent, useCallback, useMemo} from 'react'\nimport {\n AvatarSkeleton,\n type ChunkType,\n type RelativeTimeOptions,\n useDateTimeFormat,\n UserAvatar,\n useRelativeTime,\n useTranslation,\n useUser,\n} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {Tooltip} from '../../../../ui-components'\nimport {getTimelineEventIconComponent} from './helpers'\nimport {TIMELINE_ITEM_I18N_KEY_MAPPING} from './timelineI18n'\nimport {UserAvatarStack} from './userAvatarStack'\nimport {type ChunksWithCollapsedDrafts} from './utils'\n\nexport const IconBox = styled(Flex)<{$color: ThemeColorAvatarColorKey}>((props) => {\n const theme = getTheme_v2(props.theme)\n const color = props.$color\n\n return css`\n --card-icon-color: ${theme.color.avatar[color].fg};\n background-color: ${theme.color.avatar[color].bg};\n box-shadow: 0 0 0 1px var(--card-bg-color);\n\n position: absolute;\n width: ${theme.avatar.sizes[0].size}px;\n height: ${theme.avatar.sizes[0].size}px;\n right: -3px;\n bottom: -3px;\n border-radius: 50%;\n `\n})\n\nconst TIMELINE_ITEM_EVENT_TONE: Record<ChunkType | 'withinSelection', ThemeColorAvatarColorKey> = {\n initial: 'blue',\n create: 'blue',\n publish: 'green',\n editLive: 'green',\n editDraft: 'yellow',\n unpublish: 'orange',\n discardDraft: 'orange',\n delete: 'red',\n withinSelection: 'magenta',\n}\n\nexport interface TimelineItemProps {\n chunk: ChunksWithCollapsedDrafts\n isSelected: boolean\n onSelect: (chunk: ChunksWithCollapsedDrafts) => void\n collaborators?: Set<string>\n optionsMenu?: React.ReactNode\n}\n\nconst RELATIVE_TIME_OPTIONS: RelativeTimeOptions = {\n minimal: true,\n useTemporalPhrase: true,\n}\n\nconst NameSkeleton = styled(Skeleton)((props) => {\n const theme = getTheme_v2(props.theme)\n return css`\n width: 6ch;\n height: ${theme.font.text.sizes[0].lineHeight}px;\n `\n})\n\nconst UserLine = ({userId}: {userId: string}) => {\n const [user, loading] = useUser(userId)\n\n return (\n <Flex align=\"center\" gap={2} key={userId} padding={1}>\n <Box>{loading || !user ? <AvatarSkeleton animated /> : <UserAvatar user={user} />}</Box>\n <Box>\n {loading || !user?.displayName ? (\n <Text size={1}>\n <NameSkeleton animated />\n </Text>\n ) : (\n <Text muted size={1}>\n {user.displayName}\n </Text>\n )}\n </Box>\n </Flex>\n )\n}\nconst TooltipContent = ({collaborators}: {collaborators: string[]}) => {\n const {t} = useTranslation('studio')\n return (\n <Stack paddingBottom={1}>\n <Box padding={1} paddingBottom={2}>\n <Text size={1} weight=\"medium\">\n {t('timeline.changes.title')}\n </Text>\n </Box>\n {collaborators.map((userId) => (\n <UserLine key={userId} userId={userId} />\n ))}\n </Stack>\n )\n}\nexport function TimelineItem({\n chunk,\n isSelected,\n onSelect,\n collaborators,\n optionsMenu,\n}: TimelineItemProps) {\n const {t} = useTranslation('studio')\n const {type, endTimestamp: timestamp} = chunk\n const IconComponent = getTimelineEventIconComponent(type)\n const authorUserIds = Array.from(chunk.authors)\n const collaboratorsUsersIds = collaborators ? Array.from(collaborators) : []\n const isSelectable = type !== 'delete'\n const dateFormat = useDateTimeFormat({dateStyle: 'medium', timeStyle: 'short'})\n const date = new Date(timestamp)\n\n const updatedTimeAgo = useRelativeTime(date || '', RELATIVE_TIME_OPTIONS)\n\n const formattedTimestamp = useMemo(() => {\n const parsedDate = new Date(timestamp)\n const formattedDate = dateFormat.format(parsedDate)\n\n return formattedDate\n }, [timestamp, dateFormat])\n\n const handleClick = useCallback(\n (evt: MouseEvent<HTMLDivElement>) => {\n evt.preventDefault()\n evt.stopPropagation()\n\n if (isSelectable) {\n onSelect(chunk)\n }\n },\n [onSelect, chunk, isSelectable],\n )\n\n return (\n <Flex align=\"center\" gap={1}>\n <Card\n as=\"button\"\n onClick={handleClick}\n padding={2}\n pressed={isSelected}\n radius={2}\n data-ui=\"timelineItem\"\n data-testid=\"timeline-item-button\"\n data-chunk-id={chunk.id}\n >\n <Flex align=\"center\" gap={3}>\n <div style={{position: 'relative'}}>\n <UserAvatarStack maxLength={3} userIds={authorUserIds} size={2} />\n <IconBox align=\"center\" justify=\"center\" $color={TIMELINE_ITEM_EVENT_TONE[type]}>\n <Text size={0}>{IconComponent && <IconComponent />}</Text>\n </IconBox>\n </div>\n <Stack space={2}>\n <Text size={1} weight=\"medium\">\n {t(TIMELINE_ITEM_I18N_KEY_MAPPING[type]) || <code>{type}</code>}\n </Text>\n\n <Text as=\"time\" size={1} muted dateTime={timestamp} title={formattedTimestamp}>\n {updatedTimeAgo}\n </Text>\n </Stack>\n\n {collaboratorsUsersIds.length > 0 && (\n <Flex flex={1} justify=\"flex-end\" align=\"center\">\n <Tooltip\n placement=\"top\"\n content={<TooltipContent collaborators={collaboratorsUsersIds} />}\n portal\n >\n <Box paddingLeft={2} paddingY={2}>\n <UserAvatarStack\n maxLength={3}\n userIds={collaboratorsUsersIds}\n size={0}\n withTooltip={false}\n />\n </Box>\n </Tooltip>\n </Flex>\n )}\n </Flex>\n </Card>\n {optionsMenu}\n </Flex>\n )\n}\n","import {type Chunk, type ChunkType} from 'sanity'\n\nexport type NonPublishChunk = Omit<Chunk, 'type'> & {\n type: Exclude<ChunkType, 'publish'>\n parentId?: string\n}\n\nexport type PublishChunk = Omit<Chunk, 'type'> & {\n type: 'publish'\n children: string[]\n collaborators: Set<string>\n}\n\nexport const isNonPublishChunk = (chunk: Chunk): chunk is NonPublishChunk =>\n chunk.type !== 'publish'\n\nexport const isPublishChunk = (chunk: Chunk): chunk is PublishChunk => chunk.type === 'publish'\n\n/**\n * searches for the previous publish action in the list of chunks\n * e.g. chunks = [publish, edit, publish, edit, edit] it needs to return the second publish action\n * e.g. chunks = [publish, edit, delete, edit, edit] it returns undefined\n */\n\nfunction getPreviousPublishAction(chunks: Chunk[]) {\n let previousPublish: PublishChunk | null = null\n // We need to iterate from the end to the start of the list\n for (let index = chunks.length - 1; index >= 0; index--) {\n const chunk = chunks[index]\n if (isPublishChunk(chunk)) {\n previousPublish = chunk\n break\n }\n if (chunk.type === 'editDraft') {\n continue\n } else break\n }\n\n return previousPublish\n}\nexport type ChunksWithCollapsedDrafts = NonPublishChunk | PublishChunk\n\n/**\n * Takes an array of chunks and adds them metadata necessary for the timeline view.\n * for draft chunks, it will add the parentId of the published chunk if this draft action is now published\n * for published, it will add the children array and the collaborators array\n */\nexport function addChunksMetadata(chunks: Chunk[]): ChunksWithCollapsedDrafts[] {\n const result: ChunksWithCollapsedDrafts[] = []\n\n for (const chunk of chunks) {\n if (isPublishChunk(chunk)) {\n result.push({\n ...chunk,\n type: 'publish',\n children: [],\n collaborators: new Set(), // Initialize the collaborators array\n })\n continue\n }\n if (isNonPublishChunk(chunk)) {\n const previousPublish = getPreviousPublishAction(result)\n if (chunk.type === 'editDraft' && previousPublish?.type === 'publish') {\n Array.from(chunk.authors).forEach((id) => {\n previousPublish.collaborators.add(id)\n })\n previousPublish.children.push(chunk.id)\n result.push({\n ...chunk,\n parentId: previousPublish.id,\n })\n continue\n }\n }\n if (isNonPublishChunk(chunk)) {\n result.push(chunk)\n }\n }\n\n return result\n}\n","import {Box, Text} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n type Chunk,\n CommandList,\n type CommandListRenderItemCallback,\n LoadingBlock,\n useTranslation,\n} from 'sanity'\n\nimport {ExpandableTimelineItemButton} from './expandableTimelineItemButton'\nimport {ListWrapper, Root, StackWrapper} from './timeline.styled'\nimport {TimelineItem} from './timelineItem'\nimport {\n addChunksMetadata,\n type ChunksWithCollapsedDrafts,\n isNonPublishChunk,\n isPublishChunk,\n} from './utils'\n\ninterface TimelineProps {\n chunks: Chunk[]\n hasMoreChunks: boolean | null\n lastChunk?: Chunk | null\n onLoadMore: () => void\n onSelect: (chunk: Chunk) => void\n /**\n * The list needs a predefined max height for the scroller to work.\n */\n listMaxHeight?: string\n}\n\nexport const TIMELINE_LIST_WRAPPER_ID = 'timeline-list-wrapper'\n\nexport const Timeline = ({\n chunks,\n hasMoreChunks,\n lastChunk: selectedChunk,\n onLoadMore,\n onSelect,\n listMaxHeight = 'calc(100vh - 280px)',\n}: TimelineProps) => {\n const [mounted, setMounted] = useState(false)\n const {t} = useTranslation('studio')\n const selectedChunkId = selectedChunk?.id\n const chunksWithMetadata = useMemo(() => addChunksMetadata(chunks), [chunks])\n\n const [expandedParents, setExpandedParents] = useState<Set<string>>(() => {\n if (selectedChunkId) {\n // If the selected chunk is a draft, we need to expand its parent\n const selected = chunksWithMetadata.find((chunk) => chunk.id === selectedChunkId)\n if (selected && isNonPublishChunk(selected) && selected.parentId) {\n return new Set([selected.parentId])\n }\n }\n return new Set()\n })\n\n useEffect(() => {\n // This effect ensures that when we reload the timeline with a selected draft, we expand its parent.\n if (selectedChunkId) {\n const selected = chunksWithMetadata.find((chunk) => chunk.id === selectedChunkId)\n if (selected && isNonPublishChunk(selected) && selected.parentId) {\n const parentId = selected.parentId\n setExpandedParents((prev) => {\n if (prev.has(parentId)) return prev\n const next = new Set(prev)\n next.add(parentId)\n return next\n })\n }\n }\n }, [chunksWithMetadata, selectedChunkId])\n\n const filteredChunks = useMemo(() => {\n return chunksWithMetadata.filter((chunk) => {\n if (isPublishChunk(chunk) || !chunk.parentId) return true\n // If the chunk has a parent id keep it hidden until the parent is expanded.\n return expandedParents.has(chunk.parentId)\n })\n }, [chunksWithMetadata, expandedParents])\n\n useEffect(() => {\n // This effect ensures that we load more chunks if the list is not long enough.\n // This could happen if a parent chunk has multiple drafts, so you could end with a list of 50 transactions but only\n // 1 parent chunk, the publish, which squashed all the changes.\n // In that case, users will see the loading block at the bottom, but nothing will really be happening. Because they haven't reach the end of the list.\n if (filteredChunks.length < 16 && hasMoreChunks) {\n onLoadMore()\n }\n }, [filteredChunks, hasMoreChunks, onLoadMore])\n\n const handleExpandParent = useCallback(\n (parentId: string) => () =>\n setExpandedParents((prev) => {\n const next = new Set(prev)\n\n if (prev.has(parentId)) next.delete(parentId)\n else next.add(parentId)\n\n return next\n }),\n [],\n )\n\n const selectedIndex = useMemo(\n () =>\n selectedChunkId ? filteredChunks.findIndex((chunk) => chunk.id === selectedChunkId) : -1,\n [selectedChunkId, filteredChunks],\n )\n const handleSelectChunk = useCallback(\n (chunk: ChunksWithCollapsedDrafts) => {\n const timelineChunk = chunks.find((c) => c.id === chunk.id)\n if (timelineChunk) onSelect(timelineChunk)\n else {\n console.error('TimelineItem: chunk not found')\n onSelect(chunk)\n }\n },\n [chunks, onSelect],\n )\n\n const renderItem = useCallback<CommandListRenderItemCallback<(typeof filteredChunks)[number]>>(\n (chunk, {activeIndex}) => {\n const isFirst = activeIndex === 0\n\n return (\n <Box\n paddingBottom={1}\n paddingTop={isFirst ? 1 : 0}\n paddingRight={1}\n paddingLeft={isNonPublishChunk(chunk) && chunk.parentId ? 4 : 1}\n >\n <TimelineItem\n chunk={chunk}\n isSelected={selectedChunkId === chunk.id}\n onSelect={handleSelectChunk}\n collaborators={isPublishChunk(chunk) ? chunk.collaborators : undefined}\n optionsMenu={\n isPublishChunk(chunk) && chunk.children.length > 0 ? (\n <ExpandableTimelineItemButton\n isExpanded={expandedParents.has(chunk.id)}\n onExpand={handleExpandParent(chunk.id)}\n />\n ) : null\n }\n />\n {activeIndex === filteredChunks.length - 1 && hasMoreChunks && <LoadingBlock />}\n </Box>\n )\n },\n [\n expandedParents,\n filteredChunks.length,\n handleExpandParent,\n handleSelectChunk,\n hasMoreChunks,\n selectedChunkId,\n ],\n )\n\n useEffect(() => setMounted(true), [])\n\n return (\n <Root\n /**\n * We delay initial rendering if `selectedIndex` is present.\n * This is a _temporary_ workaround to allow the virtual <CommandList>\n * to scroll to a specific index prior to being displayed.\n *\n * Without this, there'll be a noticeable 'flash' where the virtual list\n * will render with its child items at the top and then scroll into position.\n */\n $visible={!selectedIndex || mounted}\n data-ui=\"timeline\"\n >\n {filteredChunks.length === 0 && (\n <StackWrapper padding={3} space={3}>\n <Text size={1} weight=\"medium\">\n {t('timeline.error.no-document-history-title')}\n </Text>\n <Text muted size={1}>\n {t('timeline.error.no-document-history-description')}\n </Text>\n </StackWrapper>\n )}\n\n {filteredChunks.length > 0 && (\n <ListWrapper direction=\"column\" $maxHeight={listMaxHeight} id={TIMELINE_LIST_WRAPPER_ID}>\n <CommandList\n activeItemDataAttr=\"data-hovered\"\n ariaLabel={t('timeline.list.aria-label')}\n autoFocus=\"list\"\n initialIndex={selectedIndex}\n initialScrollAlign=\"center\"\n itemHeight={57}\n items={filteredChunks}\n onEndReached={onLoadMore}\n onEndReachedIndexOffset={20}\n overscan={5}\n renderItem={renderItem}\n wrapAround={false}\n />\n </ListWrapper>\n )}\n </Root>\n )\n}\n\nTimeline.displayName = 'Timeline'\n","import {ErrorOutlineIcon} from '@sanity/icons'\nimport {Flex, Stack} from '@sanity/ui'\nimport {TextWithTone, useTranslation} from 'sanity'\n\nexport function TimelineError() {\n const {t} = useTranslation('studio')\n\n return (\n <Flex align=\"flex-start\" gap={3} padding={4}>\n <TextWithTone tone=\"critical\">\n <ErrorOutlineIcon />\n </TextWithTone>\n <Stack space={4}>\n <TextWithTone size={1} tone=\"critical\" weight=\"medium\">\n {t('timeline.error.load-document-changes-title')}\n </TextWithTone>\n <TextWithTone size={1} tone=\"critical\">\n {t('timeline.error.load-document-changes-description')}\n </TextWithTone>\n </Stack>\n </Flex>\n )\n}\n","import {ChevronDownIcon} from '@sanity/icons'\nimport {\n Flex,\n type Placement,\n PortalProvider,\n useClickOutsideEvent,\n useGlobalKeyDown,\n useToast,\n} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {type Chunk, useTimelineSelector, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button, Popover} from '../../../../ui-components'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {Timeline} from './timeline'\nimport {TimelineError} from './TimelineError'\nimport {TIMELINE_ITEM_I18N_KEY_MAPPING} from './timelineI18n'\n\ninterface TimelineMenuProps {\n chunk: Chunk | null\n mode: 'rev' | 'since'\n placement?: Placement\n}\n\nconst Root = styled(Popover)`\n overflow: hidden;\n overflow: clip;\n`\n\nexport const TIMELINE_MENU_PORTAL = 'timeline-menu'\n\nexport function TimelineMenu({chunk, mode, placement}: TimelineMenuProps) {\n const {setTimelineRange, setTimelineMode, timelineError, ready, timelineStore} = useDocumentPane()\n const [open, setOpen] = useState(false)\n const [button, setButton] = useState<HTMLButtonElement | null>(null)\n const [popoverRef, setPopoverRef] = useState<HTMLElement | null>(null)\n\n const toast = useToast()\n\n const chunks = useTimelineSelector(timelineStore, (state) => state.chunks)\n const loading = useTimelineSelector(timelineStore, (state) => state.isLoading)\n const hasMoreChunks = useTimelineSelector(timelineStore, (state) => state.hasMoreChunks)\n const realRevChunk = useTimelineSelector(timelineStore, (state) => state.realRevChunk)\n const sinceTime = useTimelineSelector(timelineStore, (state) => state.sinceTime)\n\n const {t} = useTranslation('studio')\n\n const handleOpen = useCallback(() => {\n setTimelineMode(mode)\n setOpen(true)\n }, [mode, setTimelineMode])\n\n const handleClose = useCallback(() => {\n setTimelineMode('closed')\n setOpen(false)\n }, [setTimelineMode])\n\n const handleGlobalKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (open && (event.key === 'Escape' || event.key === 'Tab')) {\n handleClose()\n button?.focus()\n }\n },\n [button, handleClose, open],\n )\n\n useGlobalKeyDown(handleGlobalKeyDown)\n useClickOutsideEvent(open && handleClose, () => [button, popoverRef])\n\n const selectRev = useCallback(\n (revChunk: Chunk) => {\n try {\n const [sinceId, revId] = timelineStore?.findRangeForRev(revChunk) || [null, null]\n setTimelineMode('closed')\n setTimelineRange(sinceId, revId)\n } catch (err) {\n toast.push({\n closable: true,\n description: err.message,\n status: 'error',\n title: t('timeline.error.unable-to-load-revision'),\n })\n }\n },\n [setTimelineMode, setTimelineRange, t, timelineStore, toast],\n )\n\n const selectSince = useCallback(\n (sinceChunk: Chunk) => {\n try {\n const [sinceId, revId] = timelineStore?.findRangeForSince(sinceChunk) || [null, null]\n setTimelineMode('closed')\n setTimelineRange(sinceId, revId)\n } catch (err) {\n toast.push({\n closable: true,\n description: err.message,\n status: 'error',\n title: t('timeline.error.unable-to-load-revision'),\n })\n }\n },\n [setTimelineMode, setTimelineRange, t, timelineStore, toast],\n )\n\n const handleLoadMore = useCallback(() => {\n if (!loading) {\n timelineStore?.loadMore()\n }\n }, [loading, timelineStore])\n\n const content = useMemo(() => {\n if (timelineError) return <TimelineError />\n\n if (mode === 'rev') {\n return (\n <Timeline\n chunks={chunks}\n hasMoreChunks={hasMoreChunks}\n lastChunk={realRevChunk}\n onLoadMore={handleLoadMore}\n onSelect={selectRev}\n />\n )\n }\n\n const filteredChunks = realRevChunk\n ? chunks.filter((c) => c.index < realRevChunk.index)\n : chunks\n return (\n <Timeline\n chunks={filteredChunks}\n hasMoreChunks={hasMoreChunks}\n lastChunk={sinceTime}\n onLoadMore={handleLoadMore}\n onSelect={selectSince}\n />\n )\n }, [\n chunks,\n handleLoadMore,\n hasMoreChunks,\n mode,\n realRevChunk,\n selectRev,\n selectSince,\n sinceTime,\n timelineError,\n ])\n\n const formatParams = {\n timestamp: {dateStyle: 'medium', timeStyle: 'short'},\n }\n\n const revLabel = chunk\n ? t(TIMELINE_ITEM_I18N_KEY_MAPPING[chunk.type], {\n context: 'timestamp',\n timestamp: new Date(chunk?.endTimestamp),\n formatParams,\n })\n : t('timeline.latest-revision')\n\n const sinceLabel = chunk\n ? t('timeline.since', {\n timestamp: new Date(chunk?.endTimestamp),\n formatParams,\n })\n : t('timeline.since-version-missing')\n\n const buttonLabel = mode === 'rev' ? revLabel : sinceLabel\n\n return (\n <PortalProvider __unstable_elements={{[TIMELINE_MENU_PORTAL]: popoverRef}}>\n <Root\n data-testid=\"timeline-menu\"\n constrainSize\n content={open && content}\n data-ui=\"versionMenu\"\n open={open}\n placement={placement}\n matchReferenceWidth\n portal\n ref={setPopoverRef}\n >\n <Flex width={'fill'}>\n <Button\n data-testid={open ? 'timeline-menu-close-button' : 'timeline-menu-open-button'}\n disabled={!ready}\n mode=\"ghost\"\n onClick={open ? handleClose : handleOpen}\n ref={setButton}\n selected={open}\n width=\"fill\"\n tooltipProps={null}\n justify={'space-between'}\n style={{\n maxWidth: '100%',\n }}\n iconRight={ChevronDownIcon}\n text={ready ? buttonLabel : t('timeline.loading-history')}\n />\n </Flex>\n </Root>\n </PortalProvider>\n )\n}\n","import {type ObjectDiff} from '@sanity/diff'\nimport {BoundaryElementProvider, Box, Card, Flex, Text} from '@sanity/ui'\nimport {useMemo, useState} from 'react'\nimport {\n ChangeFieldWrapper,\n ChangeList,\n type DocumentChangeContextInstance,\n LoadingBlock,\n NoChanges,\n type ObjectSchemaType,\n ScrollContainer,\n useTimelineSelector,\n useTranslation,\n} from 'sanity'\nimport {DocumentChangeContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {TimelineMenu} from '../../timeline'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nconst Scroller = styled(ScrollContainer)`\n height: 100%;\n overflow: auto;\n position: relative;\n scroll-behavior: smooth;\n`\n\nconst Grid = styled(Box)`\n &:not([hidden]) {\n display: grid;\n }\n grid-template-columns: 48px 1fr;\n align-items: center;\n gap: 0.25em;\n`\n\nexport function ChangesInspector({showChanges}: {showChanges: boolean}): React.JSX.Element {\n const {documentId, schemaType, timelineError, timelineStore, value} = useDocumentPane()\n const [scrollRef, setScrollRef] = useState<HTMLDivElement | null>(null)\n\n const rev = useTimelineSelector(timelineStore, (state) => state.revTime)\n const diff = useTimelineSelector(timelineStore, (state) => state.diff)\n const onOlderRevision = useTimelineSelector(timelineStore, (state) => state.onOlderRevision)\n const selectionState = useTimelineSelector(timelineStore, (state) => state.selectionState)\n const sinceTime = useTimelineSelector(timelineStore, (state) => state.sinceTime)\n const loading = selectionState === 'loading'\n const isComparingCurrent = !onOlderRevision\n\n // Note that we are using the studio core namespace here, as changes theoretically should\n // be part of Sanity core (needs to be moved from structure at some point)\n const {t: structureT} = useTranslation(structureLocaleNamespace)\n\n const documentContext: DocumentChangeContextInstance = useMemo(\n () => ({\n documentId,\n schemaType,\n FieldWrapper: ChangeFieldWrapper,\n rootDiff: diff,\n isComparingCurrent,\n value,\n showFromValue: true,\n }),\n [documentId, diff, isComparingCurrent, schemaType, value],\n )\n\n return (\n <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\" overflow=\"hidden\">\n <Box padding={3}>\n <Grid paddingX={2} paddingBottom={2}>\n <Text size={1} muted>\n {structureT('changes.from.label')}\n </Text>\n\n <TimelineMenu mode=\"since\" chunk={sinceTime} placement=\"bottom-start\" />\n <Text size={1} muted>\n {structureT('changes.to.label')}\n </Text>\n <TimelineMenu chunk={rev} mode=\"rev\" placement=\"bottom-end\" />\n </Grid>\n </Box>\n\n <Card flex={1} paddingX={2} paddingY={2}>\n <BoundaryElementProvider element={scrollRef}>\n <Scroller data-ui=\"Scroller\" ref={setScrollRef}>\n <Box flex={1} paddingX={3} height=\"fill\">\n {showChanges && (\n <Content\n diff={diff}\n documentContext={documentContext}\n error={timelineError}\n loading={loading}\n schemaType={schemaType}\n />\n )}\n </Box>\n </Scroller>\n </BoundaryElementProvider>\n </Card>\n </Flex>\n )\n}\n\nfunction Content({\n error,\n diff,\n documentContext,\n loading,\n schemaType,\n}: {\n error?: Error | null\n diff: ObjectDiff<any> | null\n documentContext: DocumentChangeContextInstance\n loading: boolean\n schemaType: ObjectSchemaType\n}) {\n if (error) {\n return <NoChanges />\n }\n\n if (loading) {\n return <LoadingBlock showText />\n }\n\n if (!diff) {\n return <NoChanges />\n }\n\n return (\n <DocumentChangeContext.Provider value={documentContext}>\n <ChangeList diff={diff} schemaType={schemaType} />\n </DocumentChangeContext.Provider>\n )\n}\n","import {Card, Flex} from '@sanity/ui'\nimport {type MouseEvent, useCallback} from 'react'\nimport {\n type DocumentGroupEvent,\n Event,\n isDeleteDocumentGroupEvent,\n isDeleteDocumentVersionEvent,\n isScheduleDocumentVersionEvent,\n isUnpublishDocumentEvent,\n isUnscheduleDocumentVersionEvent,\n useTranslation,\n} from 'sanity'\n\nimport {Tooltip} from '../../../../../ui-components'\n\nexport interface TimelineItemProps {\n event: DocumentGroupEvent\n isSelected: boolean\n onSelect: (chunk: DocumentGroupEvent) => void\n optionsMenu?: React.ReactNode\n}\n\nconst getIsSelectable = (event: DocumentGroupEvent) => {\n return (\n !isDeleteDocumentVersionEvent(event) &&\n !isDeleteDocumentGroupEvent(event) &&\n !isUnpublishDocumentEvent(event) &&\n !isScheduleDocumentVersionEvent(event) &&\n !isUnscheduleDocumentVersionEvent(event)\n )\n}\n\nexport function EventTimelineItem({event, isSelected, onSelect, optionsMenu}: TimelineItemProps) {\n const {t} = useTranslation('studio')\n const isSelectable = getIsSelectable(event)\n const handleClick = useCallback(\n (evt: MouseEvent<HTMLDivElement>) => {\n evt.preventDefault()\n evt.stopPropagation()\n\n if (isSelectable) {\n onSelect(event)\n }\n },\n [onSelect, event, isSelectable],\n )\n return (\n <Tooltip content={isSelectable ? '' : t('changes.not-selectable')} disabled={isSelectable}>\n <Flex gap={1}>\n <Card\n as={isSelectable ? 'button' : 'div'}\n onClick={handleClick}\n padding={2}\n pressed={isSelected}\n radius={2}\n data-ui=\"timelineItem\"\n data-testid=\"timeline-item-button\"\n data-chunk-timestamp={event.timestamp}\n style={{\n cursor: isSelectable ? 'pointer' : 'default',\n }}\n >\n <Event event={event} showChangesBy=\"tooltip\" />\n </Card>\n {optionsMenu}\n </Flex>\n </Tooltip>\n )\n}\n","import {\n Flex,\n Menu,\n // eslint-disable-next-line no-restricted-imports\n MenuItem,\n Text,\n usePortal,\n} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {\n ContextMenuButton,\n getReleaseTone,\n getVersionFromId,\n type PublishDocumentVersionEvent,\n RELEASES_INTENT,\n Translate,\n usePerspective,\n useTranslation,\n VersionInlineBadge,\n} from 'sanity'\nimport {IntentLink} from 'sanity/router'\nimport {usePaneRouter} from 'sanity/structure'\n\nimport {MenuButton} from '../../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {TIMELINE_MENU_PORTAL} from '../timelineMenu'\n\nexport function PublishedEventMenu({event}: {event: PublishDocumentVersionEvent}) {\n const {t} = useTranslation(structureLocaleNamespace)\n const portalContext = usePortal()\n const {params, setParams} = usePaneRouter()\n const {setPerspective} = usePerspective()\n const handleOpenReleaseDocument = useCallback(() => {\n setParams({\n ...params,\n rev: event.versionRevisionId || '@lastPublished',\n since: undefined,\n historyEvent: event.id,\n historyVersion: getVersionFromId(event.versionId),\n })\n }, [setParams, params, event])\n\n const handleOpenDraftDocument = useCallback(() => {\n setParams({\n ...params,\n rev: event.versionRevisionId,\n preserveRev: 'true',\n since: undefined,\n })\n setTimeout(() => {\n // A bug is generated when we change the perspective and the params at the same time\n // Resetting the params to the value it had before, because the paneRouter uses the previous value\n setPerspective('drafts')\n }, 100)\n }, [setParams, params, event.versionRevisionId, setPerspective])\n\n const VersionBadge = ({children}: {children: React.ReactNode}) => {\n return (\n <VersionInlineBadge $tone={event.release ? getReleaseTone(event.release) : undefined}>\n {children}\n </VersionInlineBadge>\n )\n }\n return (\n <MenuButton\n id={`timeline-item-menu-button-${event.versionId}`}\n button={\n <ContextMenuButton\n aria-label={t('timeline-item.menu-button.aria-label')}\n tooltipProps={{content: t('timeline-item.menu-button.tooltip')}}\n />\n }\n menu={\n <Menu padding={1}>\n {event.release ? (\n <>\n <IntentLink\n intent={RELEASES_INTENT}\n params={{id: event.release?.name}}\n style={{textDecoration: 'none'}}\n >\n <MenuItem padding={3}>\n <Flex align={'center'}>\n <Text size={1} style={{textDecoration: 'none'}}>\n <Translate\n components={{\n VersionBadge: ({children}) => <VersionBadge>{children} </VersionBadge>,\n }}\n i18nKey=\"events.open.release\"\n values={{\n releaseTitle: event.release.metadata.title,\n }}\n t={t}\n />\n </Text>\n </Flex>\n </MenuItem>\n </IntentLink>\n <MenuItem onClick={handleOpenReleaseDocument}>\n <Flex align={'center'}>\n <Text size={1}>\n <Translate\n components={{\n VersionBadge: ({children}) => <VersionBadge>{children} </VersionBadge>,\n }}\n i18nKey=\"events.inspect.release\"\n values={{\n releaseTitle: event.release.metadata.title,\n }}\n t={t}\n />\n </Text>\n </Flex>\n </MenuItem>\n </>\n ) : (\n <MenuItem onClick={handleOpenDraftDocument} disabled={!event.versionRevisionId}>\n <Flex align={'center'}>\n <Text size={1}>\n <Translate\n components={{\n VersionBadge: ({children}) => (\n <VersionInlineBadge $tone=\"caution\">{children}</VersionInlineBadge>\n ),\n }}\n i18nKey=\"events.open.draft\"\n t={t}\n />\n </Text>\n </Flex>\n </MenuItem>\n )}\n </Menu>\n }\n popover={{\n // when used inside the timeline menu we want to keep the element inside the popover, to avoid closing the popover when clicking expand.\n portal: portalContext.elements?.[TIMELINE_MENU_PORTAL] ? TIMELINE_MENU_PORTAL : true,\n placement: 'bottom',\n fallbackPlacements: ['bottom-end', 'bottom-start'],\n }}\n />\n )\n}\n","import {Box, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {motion, type Variants} from 'framer-motion'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n CommandList,\n type CommandListRenderItemCallback,\n type DocumentGroupEvent,\n getDocumentVariantType,\n isCreateDocumentVersionEvent,\n isEditDocumentVersionEvent,\n isPublishDocumentVersionEvent,\n LoadingBlock,\n useTranslation,\n} from 'sanity'\n\nimport {ExpandableTimelineItemButton} from '../expandableTimelineItemButton'\nimport {ListWrapper, Root} from '../timeline.styled'\nimport {EventTimelineItem} from './EventTimelineItem'\nimport {PublishedEventMenu} from './PublishedEventMenu'\n\ninterface TimelineProps {\n events: DocumentGroupEvent[]\n hasMoreEvents: boolean | null\n selectedEventId?: string\n onLoadMore: () => void\n onSelect: (event: DocumentGroupEvent) => void\n fetchEventChildren: (event: DocumentGroupEvent) => Promise<void>\n /**\n * The list needs a predefined max height for the scroller to work.\n */\n listMaxHeight?: string\n}\n\nconst TimelineItemWrapper = motion.create(Box)\nconst CHILDREN_ITEMS_VARIANTS: Variants = {\n initial: {\n opacity: 0,\n },\n animate: {\n opacity: 1,\n },\n exit: {\n opacity: 0,\n },\n}\n\nconst ITEM_HEIGHT = 57\n\nexport const TIMELINE_LIST_WRAPPER_ID = 'timeline-list-wrapper'\n\nexport const EventsTimeline = ({\n events: allEvents,\n hasMoreEvents,\n selectedEventId,\n onLoadMore,\n onSelect,\n listMaxHeight = 'calc(100vh - 280px)',\n fetchEventChildren,\n}: TimelineProps) => {\n const [mounted, setMounted] = useState(false)\n const {t} = useTranslation('studio')\n const [expandedParents, setExpandedParents] = useState<Set<string>>(() => {\n if (selectedEventId) {\n // Find that event and if it has a parent, expand the parent.\n const selectedEvent = allEvents.find((event) => event.id === selectedEventId)\n if (selectedEvent && 'parentId' in selectedEvent && selectedEvent.parentId) {\n return new Set([selectedEvent.parentId])\n }\n }\n return new Set()\n })\n const [expandingParents, setExpandingParents] = useState<Set<string>>(new Set())\n\n const events = useMemo(() => {\n return allEvents.filter((event) => {\n if (isCreateDocumentVersionEvent(event) && event.parentId) {\n // Check if it's the last event in the list, in that case, we want to show it\n const isLastEvent = allEvents[allEvents.length - 1].id === event.id\n if (isLastEvent) return true\n return expandedParents.has(event.parentId)\n }\n if (isEditDocumentVersionEvent(event) && event.parentId) {\n return expandedParents.has(event.parentId)\n }\n return true\n })\n }, [expandedParents, allEvents])\n\n const handleExpandParent = useCallback(\n (event: DocumentGroupEvent) => async () => {\n const parentId = event.id\n\n let isExpanding = false\n setExpandedParents((prev) => {\n const next = new Set(prev)\n\n if (prev.has(parentId)) next.delete(parentId)\n else {\n isExpanding = true\n next.add(parentId)\n }\n\n return next\n })\n if (isExpanding) {\n setExpandingParents((prev) => {\n const next = new Set(prev)\n next.add(parentId)\n return next\n })\n await fetchEventChildren(event)\n setExpandingParents((prev) => {\n const next = new Set(prev)\n next.delete(parentId)\n return next\n })\n }\n },\n [fetchEventChildren, setExpandingParents],\n )\n\n const handleSelectChunk = useCallback(\n (event: DocumentGroupEvent) => {\n onSelect(event)\n },\n [onSelect],\n )\n\n const renderOptionsMenu = useCallback(\n (event: DocumentGroupEvent) => {\n const documentVariantType = getDocumentVariantType(event.documentId)\n if (isPublishDocumentVersionEvent(event) && documentVariantType === 'published') {\n return <PublishedEventMenu event={event} />\n }\n if (\n isPublishDocumentVersionEvent(event) &&\n documentVariantType === 'draft' &&\n event.creationEvent\n ) {\n return (\n <ExpandableTimelineItemButton\n isExpanded={expandedParents.has(event.id)}\n onExpand={handleExpandParent(event)}\n />\n )\n }\n return null\n },\n [expandedParents, handleExpandParent],\n )\n\n const renderItem = useCallback<CommandListRenderItemCallback<DocumentGroupEvent[][number]>>(\n (event, {activeIndex}) => {\n /**\n * The create version event will be present while expanding (loading the edits), so we are attaching to it the loading block at the top.\n * - publishEvent (expanding?)\n * --- loadingBlock ~createEvent~\n * */\n const showExpandingLoader =\n isCreateDocumentVersionEvent(event) &&\n event.parentId &&\n expandingParents.has(event.parentId)\n\n const isLastEvent = activeIndex === events.length - 1\n if (showExpandingLoader) {\n return (\n <TimelineItemWrapper\n animate={{opacity: 1}}\n initial={{opacity: 0}}\n transition={{duration: 0.2, delay: 0.2}}\n >\n {/* We need this item to match the same height as the rest of the list items, which is 57px */}\n <Flex align=\"center\" justify=\"center\" style={{height: ITEM_HEIGHT}}>\n <Spinner />\n </Flex>\n </TimelineItemWrapper>\n )\n }\n return (\n <TimelineItemWrapper\n paddingBottom={1}\n paddingRight={1}\n key={event.timestamp}\n animate=\"animate\"\n exit=\"exit\"\n initial=\"initial\"\n variants={'parentId' in event ? CHILDREN_ITEMS_VARIANTS : undefined}\n paddingLeft={\n (isEditDocumentVersionEvent(event) || isCreateDocumentVersionEvent(event)) &&\n event.parentId &&\n !isLastEvent\n ? 4\n : 1\n }\n >\n <EventTimelineItem\n event={event}\n isSelected={event.id === selectedEventId}\n onSelect={handleSelectChunk}\n optionsMenu={renderOptionsMenu(event)}\n />\n\n {isLastEvent && hasMoreEvents && <LoadingBlock />}\n </TimelineItemWrapper>\n )\n },\n [\n expandingParents,\n selectedEventId,\n handleSelectChunk,\n renderOptionsMenu,\n events.length,\n hasMoreEvents,\n ],\n )\n\n useEffect(() => setMounted(true), [])\n const selectedIndex = events.findIndex((event) => event.id === selectedEventId)\n\n return (\n <Root\n /**\n * We delay initial rendering if `selectedIndex` is present.\n * This is a _temporary_ workaround to allow the virtual <CommandList>\n * to scroll to a specific index prior to being displayed.\n *\n * Without this, there'll be a noticeable 'flash' where the virtual list\n * will render with its child items at the top and then scroll into position.\n */\n $visible={!selectedIndex || mounted}\n data-ui=\"timeline\"\n >\n {events.length > 0 ? (\n <ListWrapper direction=\"column\" $maxHeight={listMaxHeight} id={TIMELINE_LIST_WRAPPER_ID}>\n <CommandList\n activeItemDataAttr=\"data-hovered\"\n ariaLabel={t('timeline.list.aria-label')}\n autoFocus=\"list\"\n initialIndex={selectedIndex}\n initialScrollAlign=\"center\"\n itemHeight={ITEM_HEIGHT}\n items={events}\n onEndReached={onLoadMore}\n onEndReachedIndexOffset={20}\n overscan={5}\n renderItem={renderItem}\n wrapAround={false}\n />\n </ListWrapper>\n ) : (\n <Stack padding={3} space={3}>\n <Text size={1} weight=\"medium\">\n {t('timeline.error.no-document-history-title')}\n </Text>\n <Text muted size={1}>\n {t('timeline.error.no-document-history-description')}\n </Text>\n </Stack>\n )}\n </Root>\n )\n}\n\nEventsTimeline.displayName = 'EventsTimeline'\n","import {ChevronDownIcon} from '@sanity/icons'\nimport {\n Flex,\n type Placement,\n PortalProvider,\n useClickOutsideEvent,\n useGlobalKeyDown,\n useToast,\n} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n type DocumentGroupEvent,\n isDeleteDocumentGroupEvent,\n isDeleteDocumentVersionEvent,\n isScheduleDocumentVersionEvent,\n isUnpublishDocumentEvent,\n isUnscheduleDocumentVersionEvent,\n TIMELINE_ITEM_I18N_KEY_MAPPING,\n useEvents,\n useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button, Popover} from '../../../../../ui-components'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {TimelineError} from '../TimelineError'\nimport {EventsTimeline} from './EventsTimeline'\n\ninterface TimelineMenuProps {\n event: DocumentGroupEvent | null\n events: DocumentGroupEvent[]\n mode: 'rev' | 'since'\n placement?: Placement\n}\n\nconst Root = styled(Popover)`\n overflow: hidden;\n overflow: clip;\n`\n\nexport const TIMELINE_MENU_PORTAL = 'timeline-menu'\n\nconst formatParams = {\n timestamp: {dateStyle: 'medium', timeStyle: 'short'},\n}\n\nexport function EventsTimelineMenu({event, events, mode, placement}: TimelineMenuProps) {\n const {setTimelineRange} = useDocumentPane()\n const [open, setOpen] = useState(false)\n const [button, setButton] = useState<HTMLButtonElement | null>(null)\n const [popoverRef, setPopoverRef] = useState<HTMLElement | null>(null)\n const toast = useToast()\n const {\n nextCursor,\n loading,\n error: eventsError,\n findRangeForRevision,\n findRangeForSince,\n loadMoreEvents,\n expandEvent,\n } = useEvents()\n\n const {t} = useTranslation('studio')\n\n const handleOpen = useCallback(() => {\n setOpen(true)\n }, [])\n\n const handleClose = useCallback(() => {\n setOpen(false)\n }, [])\n\n const handleGlobalKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (open && (e.key === 'Escape' || e.key === 'Tab')) {\n handleClose()\n button?.focus()\n }\n },\n [button, handleClose, open],\n )\n\n useGlobalKeyDown(handleGlobalKeyDown)\n useClickOutsideEvent(open && handleClose, () => [button, popoverRef])\n\n const selectRev = useCallback(\n (revEvent: DocumentGroupEvent) => {\n try {\n if (\n isDeleteDocumentVersionEvent(revEvent) ||\n isDeleteDocumentGroupEvent(revEvent) ||\n isUnpublishDocumentEvent(revEvent) ||\n isScheduleDocumentVersionEvent(revEvent) ||\n isUnscheduleDocumentVersionEvent(revEvent)\n ) {\n console.error('Event is not selectable')\n return\n }\n const [since, rev] = findRangeForRevision(revEvent?.id)\n setTimelineRange(since, rev)\n handleClose()\n } catch (err) {\n toast.push({\n closable: true,\n description: err.message,\n status: 'error',\n title: t('timeline.error.unable-to-load-revision'),\n })\n }\n },\n [t, toast, setTimelineRange, findRangeForRevision, handleClose],\n )\n\n const selectSince = useCallback(\n (sinceEvent: DocumentGroupEvent) => {\n try {\n const [since, rev] = findRangeForSince(sinceEvent.id)\n setTimelineRange(since, rev)\n handleClose()\n } catch (err) {\n toast.push({\n closable: true,\n description: err.message,\n status: 'error',\n title: t('timeline.error.unable-to-load-revision'),\n })\n }\n },\n [findRangeForSince, setTimelineRange, toast, t, handleClose],\n )\n\n const handleLoadMore = useCallback(() => {\n if (!loading && nextCursor) {\n loadMoreEvents()\n }\n }, [loading, loadMoreEvents, nextCursor])\n\n const content = useMemo(() => {\n if (eventsError) return <TimelineError />\n\n return (\n <EventsTimeline\n events={events}\n fetchEventChildren={expandEvent}\n hasMoreEvents={Boolean(nextCursor)}\n selectedEventId={event?.id}\n onLoadMore={handleLoadMore}\n onSelect={mode === 'rev' ? selectRev : selectSince}\n />\n )\n }, [\n eventsError,\n mode,\n expandEvent,\n events,\n nextCursor,\n event?.id,\n handleLoadMore,\n selectSince,\n selectRev,\n ])\n\n const revLabel = event\n ? t(TIMELINE_ITEM_I18N_KEY_MAPPING[event.type], {\n context: 'timestamp',\n timestamp: new Date(event.timestamp),\n formatParams,\n })\n : t('timeline.latest-revision')\n\n // eslint-disable-next-line no-nested-ternary\n const sinceLabel = event\n ? t(TIMELINE_ITEM_I18N_KEY_MAPPING[event.type], {\n context: 'timestamp',\n timestamp: new Date(event.timestamp),\n formatParams,\n })\n : events.length > 0\n ? t('timeline.since-version-missing')\n : t('timeline.no-previous-events')\n\n const buttonLabel = mode === 'rev' ? revLabel : sinceLabel\n\n return (\n <PortalProvider __unstable_elements={{[TIMELINE_MENU_PORTAL]: popoverRef}}>\n <Root\n data-testid=\"timeline-menu\"\n constrainSize\n content={open && content}\n data-ui=\"versionMenu\"\n open={open}\n placement={placement}\n matchReferenceWidth\n portal\n ref={setPopoverRef}\n >\n <Flex width={'fill'}>\n <Button\n data-testid={open ? 'timeline-menu-close-button' : 'timeline-menu-open-button'}\n disabled={loading || !events.length}\n mode=\"ghost\"\n onClick={open ? handleClose : handleOpen}\n ref={setButton}\n selected={open}\n width=\"fill\"\n tooltipProps={null}\n justify={'space-between'}\n style={{\n maxWidth: '100%',\n }}\n iconRight={ChevronDownIcon}\n text={loading ? t('timeline.loading-history') : buttonLabel}\n />\n </Flex>\n </Root>\n </PortalProvider>\n )\n}\n","import {BoundaryElementProvider, Box, Card, Flex, Spinner, Text} from '@sanity/ui'\nimport {motion} from 'framer-motion'\nimport {type ReactElement, useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\nimport {\n ChangeFieldWrapper,\n ChangeList,\n ChangesError,\n type DocumentChangeContextInstance,\n LoadingBlock,\n NoChanges,\n type ObjectSchemaType,\n ScrollContainer,\n useEvents,\n useTranslation,\n} from 'sanity'\nimport {DocumentChangeContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {EventsTimelineMenu} from '../../timeline/events/EventsTimelineMenu'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nconst Scroller = styled(ScrollContainer)`\n height: 100%;\n overflow: auto;\n position: relative;\n scroll-behavior: smooth;\n`\n\nconst Grid = styled(Box)`\n &:not([hidden]) {\n display: grid;\n }\n grid-template-columns: 48px 1fr;\n align-items: center;\n gap: 0.25em;\n`\n\nconst SpinnerContainer = styled(Flex)`\n width: 100%;\n position: absolute;\n bottom: -4px;\n`\n\nconst DIFF_INITIAL_VALUE = {\n diff: null,\n loading: true,\n}\nexport function EventsInspector({showChanges}: {showChanges: boolean}): ReactElement {\n const {documentId, schemaType, timelineError, value, formState} = useDocumentPane()\n const [scrollRef, setScrollRef] = useState<HTMLDivElement | null>(null)\n\n const {events, revision, sinceRevision, getChangesList} = useEvents()\n\n const isComparingCurrent = !revision?.revisionId\n const changesList$ = useMemo(() => getChangesList(), [getChangesList])\n const {diff, loading: diffLoading} = useObservable(changesList$, DIFF_INITIAL_VALUE)\n\n const {t} = useTranslation('studio')\n\n const documentContext: DocumentChangeContextInstance = useMemo(() => {\n return {\n documentId,\n schemaType,\n FieldWrapper: ChangeFieldWrapper,\n rootDiff: diff,\n isComparingCurrent: isComparingCurrent && !formState?.readOnly,\n value,\n showFromValue: true,\n }\n }, [diff, documentId, isComparingCurrent, formState?.readOnly, schemaType, value])\n\n const [sinceEvent, toEvent] = useMemo(() => {\n if (!events) return [null, null]\n return [\n events.find((e) => e.id === sinceRevision?.revisionId) || null,\n events.find((e) => e.id === revision?.revisionId) || events[0],\n ]\n }, [events, revision?.revisionId, sinceRevision?.revisionId])\n\n const sinceEvents = useMemo(() => {\n // The sinceEvents need to account the toEvent showing only events that are older than the toEvent\n if (!toEvent) return events.slice(1)\n return events.slice(events.indexOf(toEvent) + 1).map((event) => {\n // If the to event has a parent id, we need to remove the parent id from the since events or they won't be rendered, as they have no parent to expand.\n if ('parentId' in toEvent && 'parentId' in event && event.parentId === toEvent.parentId) {\n return {...event, parentId: undefined}\n }\n return event\n })\n }, [events, toEvent])\n\n return (\n <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\" overflow=\"hidden\">\n <Box padding={3} style={{position: 'relative'}}>\n <Grid paddingX={2} paddingBottom={2}>\n <Text size={1} muted>\n {t('changes.inspector.from-label')}\n </Text>\n <EventsTimelineMenu\n event={sinceEvent || null}\n events={sinceEvents}\n mode=\"since\"\n placement=\"bottom-start\"\n />\n <Text size={1} muted>\n {t('changes.inspector.to-label')}\n </Text>\n <EventsTimelineMenu\n event={toEvent || null}\n events={events}\n mode=\"rev\"\n placement=\"bottom-end\"\n />\n </Grid>\n {diffLoading && (\n <motion.div\n animate={{opacity: 1}}\n initial={{opacity: 0}}\n transition={{delay: 0.2, duration: 0.2}}\n >\n <SpinnerContainer justify=\"center\" align=\"center\" gap={2}>\n <Text muted size={0}>\n {t('changes.loading-changes')}\n </Text>\n <Spinner size={0} />\n </SpinnerContainer>\n </motion.div>\n )}\n </Box>\n\n <Card flex={1} paddingX={2} paddingY={2}>\n <BoundaryElementProvider element={scrollRef}>\n <Scroller data-ui=\"Scroller\" ref={setScrollRef}>\n <Box flex={1} paddingX={3} height=\"fill\">\n {showChanges && (\n <Content\n documentContext={documentContext}\n error={timelineError}\n loading={revision?.loading || sinceRevision?.loading || false}\n schemaType={schemaType}\n />\n )}\n </Box>\n </Scroller>\n </BoundaryElementProvider>\n </Card>\n </Flex>\n )\n}\n\nfunction Content({\n error,\n documentContext,\n loading,\n schemaType,\n}: {\n error?: Error | null\n documentContext: DocumentChangeContextInstance\n loading: boolean\n schemaType: ObjectSchemaType\n}) {\n if (error) {\n return <ChangesError />\n }\n\n if (loading) {\n return <LoadingBlock showText />\n }\n\n if (!documentContext.rootDiff) {\n return (\n <motion.div\n animate={{opacity: 1}}\n initial={{opacity: 0}}\n transition={{delay: 0.2, duration: 0.2}}\n >\n <NoChanges />\n </motion.div>\n )\n }\n\n return (\n <DocumentChangeContext.Provider value={documentContext}>\n <ChangeList diff={documentContext.rootDiff} schemaType={schemaType} />\n </DocumentChangeContext.Provider>\n )\n}\n","import {BoundaryElementProvider, Card, Flex, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {\n type DocumentGroupEvent,\n isDeleteDocumentGroupEvent,\n isDeleteDocumentVersionEvent,\n isScheduleDocumentVersionEvent,\n isUnpublishDocumentEvent,\n isUnscheduleDocumentVersionEvent,\n LoadingBlock,\n ScrollContainer,\n useEvents,\n useTranslation,\n} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\nimport {styled} from 'styled-components'\n\nimport {EventsTimeline} from '../../timeline/events/EventsTimeline'\nimport {TimelineError} from '../../timeline/TimelineError'\n\nconst Scroller = styled(ScrollContainer)`\n height: 100%;\n overflow: auto;\n position: relative;\n scroll-behavior: smooth;\n`\n\nexport function EventsSelector({showList}: {showList: boolean}) {\n const [scrollRef, setScrollRef] = useState<HTMLDivElement | null>(null)\n const [listHeight, setListHeight] = useState(0)\n const {setTimelineRange} = useDocumentPane()\n const getScrollerRef = useCallback(\n (el: HTMLDivElement | null) => {\n if (!listHeight && el) {\n /**\n * Hacky solution, the list height needs to be defined, it cannot be obtained from the parent using a `max-height: 100%`\n * Because the scroller won't work properly and it won't scroll to the selected element on mount.\n * To fix this, this component will set the list height to the height of the parent element - 1px, to avoid a double scroll line.\n */\n setListHeight(el.clientHeight ? el.clientHeight - 1 : 0)\n setScrollRef(el)\n }\n },\n [listHeight],\n )\n const {\n events,\n nextCursor,\n loading,\n error,\n revision,\n loadMoreEvents,\n findRangeForRevision,\n expandEvent,\n } = useEvents()\n\n const {t} = useTranslation('studio')\n const toast = useToast()\n\n const selectRev = useCallback(\n (event: DocumentGroupEvent) => {\n try {\n if (\n isDeleteDocumentVersionEvent(event) ||\n isDeleteDocumentGroupEvent(event) ||\n isUnpublishDocumentEvent(event) ||\n isScheduleDocumentVersionEvent(event) ||\n isUnscheduleDocumentVersionEvent(event)\n ) {\n console.error('Event is not selectable')\n return\n }\n const [since, rev] = findRangeForRevision(event.id)\n setTimelineRange(since, rev)\n } catch (err) {\n toast.push({\n closable: true,\n description: err.message,\n status: 'error',\n title: t('timeline.error.unable-to-load-revision'),\n })\n }\n },\n [t, toast, setTimelineRange, findRangeForRevision],\n )\n\n const initialLoad = loading && !events.length\n return (\n <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\">\n <Card flex={1} padding={2} paddingTop={0}>\n {error ? (\n <TimelineError />\n ) : (\n <BoundaryElementProvider element={scrollRef}>\n <Scroller data-ui=\"Scroller\" ref={getScrollerRef}>\n {listHeight &&\n // This forces the list to unmount and remount, which is needed to reset the scroll position\n showList &&\n !initialLoad ? (\n <EventsTimeline\n events={events}\n fetchEventChildren={expandEvent}\n hasMoreEvents={Boolean(nextCursor)}\n // If we have a revision, we select it, otherwise we select the first event\n selectedEventId={revision?.revisionId || events[0]?.id}\n onLoadMore={loadMoreEvents}\n onSelect={selectRev}\n listMaxHeight={`${listHeight}px`}\n />\n ) : null}\n {loading && <LoadingBlock />}\n </Scroller>\n </BoundaryElementProvider>\n )}\n </Card>\n </Flex>\n )\n}\n","import {BoundaryElementProvider, Card, Flex, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {type Chunk, ScrollContainer, useTimelineSelector, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Timeline} from '../../timeline'\nimport {TimelineError} from '../../timeline/TimelineError'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nconst Scroller = styled(ScrollContainer)`\n height: 100%;\n overflow: auto;\n position: relative;\n scroll-behavior: smooth;\n`\n\nexport function HistorySelector({showList}: {showList: boolean}) {\n const {timelineError, setTimelineRange, timelineStore} = useDocumentPane()\n const [scrollRef, setScrollRef] = useState<HTMLDivElement | null>(null)\n const [listHeight, setListHeight] = useState(0)\n\n const getScrollerRef = useCallback((el: HTMLDivElement | null) => {\n /**\n * Hacky solution, the list height needs to be defined, it cannot be obtained from the parent using a `max-height: 100%`\n * Because the scroller won't work properly and it won't scroll to the selected element on mount.\n * To fix this, this component will set the list height to the height of the parent element - 1px, to avoid a double scroll line.\n */\n setListHeight(el?.clientHeight ? el.clientHeight - 1 : 0)\n setScrollRef(el)\n }, [])\n\n const chunks = useTimelineSelector(timelineStore, (state) => state.chunks)\n const realRevChunk = useTimelineSelector(timelineStore, (state) => state.realRevChunk)\n const hasMoreChunks = useTimelineSelector(timelineStore, (state) => state.hasMoreChunks)\n const loading = useTimelineSelector(timelineStore, (state) => state.isLoading)\n\n const {t} = useTranslation('studio')\n const toast = useToast()\n const selectRev = useCallback(\n (revChunk: Chunk) => {\n try {\n const [sinceId, revId] = timelineStore?.findRangeForRev(revChunk) || [null, null]\n setTimelineRange(sinceId, revId)\n } catch (err) {\n toast.push({\n closable: true,\n description: err.message,\n status: 'error',\n title: t('timeline.error.unable-to-load-revision'),\n })\n }\n },\n [setTimelineRange, t, timelineStore, toast],\n )\n\n const handleLoadMore = useCallback(() => {\n // If updated, be sure to update the TimeLineMenu component as well\n if (!loading) {\n timelineStore?.loadMore()\n }\n }, [loading, timelineStore])\n\n return (\n <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\">\n <Card flex={1} padding={2} paddingTop={0}>\n {timelineError ? (\n <TimelineError />\n ) : (\n <BoundaryElementProvider element={scrollRef}>\n <Scroller data-ui=\"Scroller\" ref={getScrollerRef}>\n {listHeight &&\n // This forces the list to unmount and remount, which is needed to reset the scroll position\n showList ? (\n <Timeline\n chunks={chunks}\n hasMoreChunks={hasMoreChunks}\n lastChunk={realRevChunk}\n onLoadMore={handleLoadMore}\n onSelect={selectRev}\n listMaxHeight={`${listHeight}px`}\n />\n ) : null}\n </Scroller>\n </BoundaryElementProvider>\n )}\n </Card>\n </Flex>\n )\n}\n","import {CloseIcon} from '@sanity/icons'\nimport {Box, Flex, TabList, TabPanel} from '@sanity/ui'\nimport {type DocumentInspectorProps, useSource, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button, Tab} from '../../../../../ui-components'\nimport {usePaneRouter} from '../../../../components/paneRouter/usePaneRouter'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {HISTORY_INSPECTOR_NAME} from '../../constants'\nimport {ChangesInspector} from './ChangesInspector'\nimport {EventsInspector} from './EventsInspector'\nimport {EventsSelector} from './EventsSelector'\nimport {HistorySelector} from './HistorySelector'\n\nconst FadeInFlex = styled(Flex)`\n opacity: 0;\n transition: opacity 200ms;\n &[data-ready] {\n opacity: 1;\n }\n`\nconst TABS = ['history', 'review'] as const\nconst isValidTab = (tab: string | undefined): tab is (typeof TABS)[number] =>\n // @ts-expect-error TS doesn't understand the type guard\n tab && TABS.includes(tab)\n\nexport function ChangesTabs(props: DocumentInspectorProps) {\n const {params, setParams} = usePaneRouter()\n const source = useSource()\n\n const {t} = useTranslation(structureLocaleNamespace)\n const isReady = params?.inspect === HISTORY_INSPECTOR_NAME\n\n const paneRouterTab = isValidTab(params?.changesInspectorTab)\n ? params.changesInspectorTab\n : TABS[0]\n\n const setPaneRouterTab = (tab: (typeof TABS)[number]) =>\n setParams({\n ...params,\n changesInspectorTab: tab,\n // Reset the since when changing the tab, as it's not relevant for the history tab\n since: tab === 'history' ? undefined : params?.since,\n })\n\n return (\n <FadeInFlex direction=\"column\" padding={0} height=\"fill\" data-ready={isReady ? '' : undefined}>\n <Flex align=\"center\" padding={3} gap={2}>\n <TabList space={1} flex={1}>\n <Tab\n aria-controls=\"history-panel\"\n id=\"history-tab\"\n label={t('changes.tab.history')}\n onClick={() => setPaneRouterTab('history')}\n selected={paneRouterTab === 'history'}\n />\n <Tab\n aria-controls=\"review-changes-panel\"\n id=\"changes-tab\"\n label={t('changes.tab.review-changes')}\n onClick={() => setPaneRouterTab('review')}\n selected={paneRouterTab === 'review'}\n />\n </TabList>\n <Box flex=\"none\">\n <Button\n aria-label={t('changes.action.close-label')}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={props.onClose}\n tooltipProps={{content: t('document-inspector.close-button.tooltip')}}\n />\n </Box>\n </Flex>\n\n <TabPanel\n aria-labelledby=\"history-tab\"\n height=\"fill\"\n hidden={paneRouterTab !== 'history'}\n id=\"history-panel\"\n >\n {source.beta?.eventsAPI?.enabled ? (\n <EventsSelector showList={paneRouterTab === 'history'} />\n ) : (\n <HistorySelector showList={paneRouterTab === 'history'} />\n )}\n </TabPanel>\n\n <TabPanel\n aria-labelledby=\"review-tab\"\n hidden={paneRouterTab !== 'review'}\n id=\"review-panel\"\n height=\"fill\"\n >\n {source.beta?.eventsAPI?.enabled ? (\n <>\n {paneRouterTab === 'review' ? (\n <EventsInspector showChanges={paneRouterTab === 'review'} />\n ) : null}\n </>\n ) : (\n <ChangesInspector showChanges={paneRouterTab === 'review'} />\n )}\n </TabPanel>\n </FadeInFlex>\n )\n}\n","import {RestoreIcon} from '@sanity/icons'\nimport {type DocumentInspector, useTranslation} from 'sanity'\n\nimport {useStructureTool} from '../../../../useStructureTool'\nimport {HISTORY_INSPECTOR_NAME} from '../../constants'\nimport {ChangesTabs} from './ChangesTabs'\n\nexport const changesInspector: DocumentInspector = {\n name: HISTORY_INSPECTOR_NAME,\n useMenuItem: () => {\n const {features} = useStructureTool()\n const {t} = useTranslation()\n\n return {\n hidden: !features.reviewChanges,\n icon: RestoreIcon,\n title: t('changes.title'),\n }\n },\n component: ChangesTabs,\n onClose: ({params}) => ({\n params: {\n ...params,\n since: undefined,\n rev: undefined,\n changesInspectorTab: undefined,\n historyVersion: undefined,\n },\n }),\n onOpen: ({params}) => ({params: {...params, since: '@lastPublished'}}),\n}\n","/* eslint-disable no-loop-func */\n\nimport {type Path, type SanityDocument, type SchemaType} from '@sanity/types'\nimport {isArray, isRecord} from 'sanity'\n\nexport function getPathTitles(options: {\n path: Path\n schemaType: SchemaType\n value: Partial<SanityDocument> | null\n}): Array<{name: string; title?: string}> {\n const {path, schemaType, value} = options\n const result: Array<{name: string; title?: string}> = []\n\n let s = schemaType\n let v: unknown = value\n\n for (const segment of path) {\n // field name\n if (typeof segment === 'string') {\n if (!isRecord(v) && v !== undefined) {\n throw new Error(`Parent value is not an object, cannot get path segment: .${segment}`)\n }\n\n if (s.jsonType !== 'object') {\n throw new Error(\n `Parent type is not an object schema type, cannot get path segment: .${segment}`,\n )\n }\n\n v = v?.[segment]\n\n const field = s.fields.find((f) => f.name === segment)\n\n if (!field) {\n result.push({name: segment})\n return result\n }\n\n s = field.type\n\n result.push(s)\n\n continue\n }\n\n // array item index\n if (typeof segment === 'number') {\n if (!isArray(v) && v !== undefined) {\n throw new Error(`Parent value is not an array, cannot get path segment: [${segment}]`)\n }\n\n if (s.jsonType !== 'array') {\n throw new Error(\n `Parent type is not an array schema type, cannot get path segment: [${segment}]`,\n )\n }\n\n v = v?.[segment]\n\n const itemType = s.of.find((ofType) => {\n if (typeof v === 'string') {\n return ofType.jsonType === 'string'\n }\n\n if (typeof v === 'number') {\n return ofType.jsonType === 'number'\n }\n\n if (typeof v === 'boolean') {\n return ofType.jsonType === 'boolean'\n }\n\n if (isRecord(v)) {\n return ofType.name === v?._type\n }\n\n return false\n })\n\n if (!itemType) {\n throw new Error(`Item type not found: [${segment}]`)\n }\n\n s = itemType\n\n result.push(s)\n\n continue\n }\n\n // array item key\n if (isRecord(segment) && segment._key) {\n if (!isArray(v)) {\n throw new Error(\n `Parent value is not an array, cannot get path segment: [_key == ${segment}]`,\n )\n }\n\n if (s.jsonType !== 'array') {\n throw new Error(\n `Parent type is not an array schema type, cannot get path segment: .${segment}`,\n )\n }\n\n const values = v ?? []\n\n v = values.find((i) => isRecord(i) && i._key === segment._key)\n\n if (!isRecord(v)) {\n throw new Error(`Array item not found: [_key == ${segment._key}]`)\n }\n\n const ofType = s.of.find((i) => isRecord(v) && i.name === v?._type)\n\n if (!ofType) {\n throw new Error(`Array item type not found: .${v?._type}`)\n }\n\n s = ofType\n\n result.push(s)\n\n continue\n }\n\n throw new Error(`Invalid path segment: ${JSON.stringify(segment)}`)\n }\n\n return result\n}\n","import {\n ErrorOutlineIcon,\n type IconComponent,\n InfoOutlineIcon,\n WarningOutlineIcon,\n} from '@sanity/icons'\nimport {\n type ObjectSchemaType,\n type Path,\n type SanityDocument,\n type SchemaType,\n type ValidationMarker,\n} from '@sanity/types'\nimport {Box, Card, type CardTone, Flex, Stack, Text} from '@sanity/ui'\nimport {type ErrorInfo, Fragment, useCallback, useMemo, useState} from 'react'\nimport {type DocumentInspectorProps, useTranslation} from 'sanity'\n\nimport {ErrorBoundary} from '../../../../../ui-components'\nimport {DocumentInspectorHeader} from '../../documentInspector'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {getPathTitles} from './getPathTitles'\n\nconst MARKER_ICON: Record<'error' | 'warning' | 'info', IconComponent> = {\n error: ErrorOutlineIcon,\n warning: WarningOutlineIcon,\n info: InfoOutlineIcon,\n}\n\nconst MARKER_TONE: Record<'error' | 'warning' | 'info', CardTone> = {\n error: 'critical',\n warning: 'caution',\n info: 'primary',\n}\n\nexport function ValidationInspector(props: DocumentInspectorProps) {\n const {onClose} = props\n const {onFocus, onPathOpen, schemaType, validation, value} = useDocumentPane()\n const {t} = useTranslation('validation')\n\n const handleOpen = useCallback(\n (path: Path) => {\n onPathOpen(path)\n onFocus(path)\n },\n [onFocus, onPathOpen],\n )\n\n return (\n <Flex direction=\"column\" height=\"fill\" overflow=\"hidden\">\n <DocumentInspectorHeader\n as=\"header\"\n closeButtonLabel={t('panel.close-button-aria-label')}\n flex=\"none\"\n onClose={onClose}\n title={t('panel.title')}\n />\n\n <Card flex={1} overflow=\"auto\" padding={3}>\n {validation.length === 0 && (\n <Box padding={2}>\n <Text muted size={1}>\n {t('panel.no-errors-message')}\n </Text>\n </Box>\n )}\n\n {validation.length > 0 && (\n <Stack space={2}>\n {validation.map((marker, i) => (\n <ValidationCard\n // eslint-disable-next-line react/no-array-index-key\n key={i}\n marker={marker}\n onOpen={handleOpen}\n schemaType={schemaType}\n value={value}\n />\n ))}\n </Stack>\n )}\n </Card>\n </Flex>\n )\n}\n\nfunction ValidationCard(props: {\n marker: ValidationMarker\n onOpen: (path: Path) => void\n schemaType: ObjectSchemaType\n value: Partial<SanityDocument> | null\n}) {\n const {marker, onOpen, schemaType, value} = props\n const handleOpen = useCallback(() => onOpen(marker.path), [marker, onOpen])\n const [errorInfo, setErrorInfo] = useState<{error: Error; info: ErrorInfo} | null>(null)\n const Icon = MARKER_ICON[marker.level]\n\n return (\n <ErrorBoundary onCatch={setErrorInfo}>\n {errorInfo && (\n <Card padding={3} radius={2} tone=\"critical\">\n <Text size={1}>{errorInfo.error.message}</Text>\n </Card>\n )}\n\n {!errorInfo && (\n <Card\n __unstable_focusRing\n as=\"button\"\n onClick={handleOpen}\n padding={3}\n radius={2}\n tone={MARKER_TONE[marker.level]}\n >\n <Flex align=\"flex-start\" gap={3}>\n <Box flex=\"none\">\n <Text size={1}>\n <Icon />\n </Text>\n </Box>\n\n <Stack flex={1} space={2}>\n <DocumentNodePathBreadcrumbs\n path={marker.path}\n schemaType={schemaType}\n value={value}\n />\n\n <Text muted size={1}>\n {marker.message}\n </Text>\n </Stack>\n </Flex>\n </Card>\n )}\n </ErrorBoundary>\n )\n}\n\nfunction DocumentNodePathBreadcrumbs(props: {\n path: Path\n schemaType: SchemaType\n value: Partial<SanityDocument> | null\n}) {\n const {path, schemaType, value} = props\n\n const pathTitles = useMemo(() => {\n try {\n return getPathTitles({path, schemaType, value})\n } catch (e) {\n console.error(e)\n }\n return null\n }, [path, schemaType, value])\n\n if (!pathTitles?.length) return null\n\n return (\n <Text size={1}>\n {pathTitles.map((t, i) => (\n <Fragment key={i}>\n {i > 0 && <span style={{color: 'var(--card-muted-fg-color)', opacity: 0.5}}> / </span>}\n <span style={{fontWeight: 500}}>{t.title || t.name}</span>\n </Fragment>\n ))}\n </Text>\n )\n}\n","import {CheckmarkCircleIcon, ErrorOutlineIcon, WarningOutlineIcon} from '@sanity/icons'\nimport {useMemo} from 'react'\nimport {\n type DocumentInspector,\n type DocumentInspectorMenuItem,\n type DocumentInspectorUseMenuItemProps,\n type FormNodeValidation,\n isValidationError,\n isValidationWarning,\n usePerspective,\n useTranslation,\n useValidationStatus,\n} from 'sanity'\n\nimport {VALIDATION_INSPECTOR_NAME} from '../../constants'\nimport {ValidationInspector} from './ValidationInspector'\n\nfunction useMenuItem(props: DocumentInspectorUseMenuItemProps): DocumentInspectorMenuItem {\n const {documentId, documentType} = props\n const {t} = useTranslation('validation')\n const {selectedPerspectiveName} = usePerspective()\n const {validation: validationMarkers} = useValidationStatus(\n documentId,\n documentType,\n selectedPerspectiveName === 'published' ? undefined : selectedPerspectiveName,\n )\n\n const validation: FormNodeValidation[] = useMemo(\n () =>\n validationMarkers.map((item) => ({\n level: item.level,\n message: item.message,\n path: item.path,\n })),\n [validationMarkers],\n )\n\n const hasErrors = validation.some(isValidationError)\n const hasWarnings = validation.some(isValidationWarning)\n\n const icon = useMemo(() => {\n if (hasErrors) return ErrorOutlineIcon\n if (hasWarnings) return WarningOutlineIcon\n return CheckmarkCircleIcon\n }, [hasErrors, hasWarnings])\n\n const tone = useMemo(() => {\n if (hasErrors) return 'critical'\n if (hasWarnings) return 'caution'\n return 'positive'\n }, [hasErrors, hasWarnings])\n\n return {\n hidden: validation.length === 0,\n icon,\n title: t('panel.title'),\n tone,\n showAsAction: true,\n }\n}\n\nexport const validationInspector: DocumentInspector = {\n name: VALIDATION_INSPECTOR_NAME,\n component: ValidationInspector,\n useMenuItem,\n}\n","import {omit} from 'lodash'\nimport {decodeJsonParams, encodeJsonParams, route} from 'sanity/router'\n\nimport {type RouterPaneGroup, type RouterPanes, type RouterPaneSibling} from './types'\n\nconst EMPTY_PARAMS = {}\n\n/**\n * @internal\n */\nexport function legacyEditParamsToState(params: string): Record<string, unknown> {\n try {\n return JSON.parse(decodeURIComponent(params))\n } catch (err) {\n // eslint-disable-next-line no-console\n console.warn('Failed to parse JSON parameters')\n return {}\n }\n}\n\nexport function encodePanesSegment(panes: RouterPanes): string {\n return (panes || [])\n .map((group) => group.map(encodeChunks).join('|'))\n .map(encodeURIComponent)\n .join(';')\n}\n\n/**\n * @internal\n */\nexport function legacyEditParamsToPath(params: Record<string, unknown>): string {\n return JSON.stringify(params)\n}\n\n// http://localhost:3333/intent/create/template=book-by-author;type=book/eyJhdXRob3JJZCI6Imdycm0ifQ==\n\n/**\n * @internal\n */\nexport function toState(pathSegment: string): RouterPaneGroup[] {\n return parsePanesSegment(decodeURIComponent(pathSegment))\n}\n\n/**\n * @internal\n */\nexport function toPath(panes: RouterPaneGroup[]): string {\n return encodePanesSegment(panes)\n}\n\nexport const router = route.create('/', [\n // \"Asynchronous intent resolving\" route\n route.intents('/intent'),\n\n // Legacy fallback route, will be redirected to new format\n route.create('/edit/:type/:editDocumentId', [\n route.create({\n path: '/:params',\n transform: {params: {toState: legacyEditParamsToState, toPath: legacyEditParamsToPath}},\n }),\n ]),\n\n // The regular path - when the intent can be resolved to a specific pane\n route.create({\n path: '/:panes',\n // Legacy URLs, used to handle redirects\n children: [route.create('/:action', route.create('/:legacyEditDocumentId'))],\n transform: {\n panes: {toState, toPath},\n },\n }),\n])\n\n// old: authors;knut,{\"template\":\"diaryEntry\"}\n// new: authors;knut,view=diff,eyJyZXYxIjoiYWJjMTIzIiwicmV2MiI6ImRlZjQ1NiJ9|latest-posts\n\nconst panePattern = /^([.a-z0-9_-]+),?({.*?})?(?:(;|$))/i\nconst isParam = (str: string) => /^[a-z0-9]+=[^=]+/i.test(str)\nconst isPayloadLike = (str: string) => /^[A-Za-z0-9\\-_]+(?:={0,2})$/.test(str)\nconst exclusiveParams = ['view', 'since', 'rev', 'inspect', 'comment']\n\ntype Truthy<T> = T extends false\n ? never\n : T extends ''\n ? never\n : T extends 0\n ? never\n : T extends 0n\n ? never\n : T extends null | undefined\n ? NonNullable<T>\n : T\nconst isTruthy = Boolean as (t: unknown) => boolean as <T>(t: T) => t is Truthy<T>\n\nfunction parseChunks(chunks: string[], initial: RouterPaneSibling): RouterPaneSibling {\n const sibling: RouterPaneSibling = {...initial, params: EMPTY_PARAMS, payload: undefined}\n return chunks.reduce((pane, chunk) => {\n if (isParam(chunk)) {\n const key = chunk.slice(0, chunk.indexOf('='))\n const value = chunk.slice(key.length + 1)\n pane.params = {...pane.params, [decodeURIComponent(key)]: decodeURIComponent(value)}\n } else if (isPayloadLike(chunk)) {\n pane.payload = tryParseBase64Payload(chunk)\n } else {\n // eslint-disable-next-line no-console\n console.warn('Unknown pane segment: %s - skipping', chunk)\n }\n\n return pane\n }, sibling)\n}\n\nfunction encodeChunks(pane: RouterPaneSibling, index: number, group: RouterPaneGroup): string {\n const {payload, params = {}, id} = pane\n const [firstSibling] = group\n const paneIsFirstSibling = pane === firstSibling\n const sameAsFirst = index !== 0 && id === firstSibling.id\n const encodedPayload =\n typeof payload === 'undefined' ? undefined : encodeJsonParams(payload as any)\n\n const encodedParams = Object.entries(params)\n .filter((entry): entry is [string, string] => {\n const [key, value] = entry\n if (!value) return false\n if (paneIsFirstSibling) return true\n\n // omit the value if it's the same as the value from the first sibling\n const valueFromFirstSibling = firstSibling.params?.[key]\n if (value === valueFromFirstSibling && !exclusiveParams.includes(key)) return false\n return true\n })\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)\n\n return (\n [sameAsFirst ? '' : id]\n .concat([encodedParams.length > 0 && encodedParams, encodedPayload].filter(isTruthy).flat())\n .join(',') || ','\n )\n}\n\nexport function parsePanesSegment(str: string): RouterPanes {\n if (str.indexOf(',{') !== -1) {\n return parseOldPanesSegment(str)\n }\n\n return str\n .split(';')\n .map((group) => {\n const [firstSibling, ...restOfSiblings] = group.split('|').map((segment) => {\n const [id, ...chunks] = segment.split(',')\n return parseChunks(chunks, {id})\n })\n\n return [\n firstSibling,\n ...restOfSiblings.map((sibling) => ({\n ...firstSibling,\n ...sibling,\n id: sibling.id || firstSibling.id,\n params: {...omit(firstSibling.params, exclusiveParams), ...sibling.params},\n payload: sibling.payload || firstSibling.payload,\n })),\n ]\n })\n .filter((group) => group.length > 0)\n}\n\nfunction parseOldPanesSegment(str: string): RouterPanes {\n const chunks: RouterPaneGroup = []\n\n let buffer = str\n while (buffer.length) {\n const [match, id, payloadChunk] = buffer.match(panePattern) || []\n if (!match) {\n buffer = buffer.slice(1)\n continue\n }\n\n const payload = payloadChunk && tryParsePayload(payloadChunk)\n chunks.push({id, payload})\n\n buffer = buffer.slice(match.length)\n }\n\n return [chunks]\n}\n\nfunction tryParsePayload(json: string) {\n try {\n return JSON.parse(json)\n } catch (err) {\n // eslint-disable-next-line no-console\n console.warn(`Failed to parse parameters: ${err.message}`)\n return undefined\n }\n}\n\nfunction tryParseBase64Payload(data: string): unknown {\n try {\n return data ? decodeJsonParams(data) : undefined\n } catch (err) {\n // eslint-disable-next-line no-console\n console.warn(`Failed to parse parameters: ${err.message}`)\n return undefined\n }\n}\n","import {MasterDetailIcon} from '@sanity/icons'\nimport {lazy} from 'react'\nimport {definePlugin} from 'sanity'\n\nimport {\n DeleteAction,\n DiscardChangesAction,\n DuplicateAction,\n HistoryRestoreAction,\n PublishAction,\n UnpublishAction,\n} from './documentActions'\nimport {LiveEditBadge} from './documentBadges'\nimport {getIntentState} from './getIntentState'\nimport {structureUsEnglishLocaleBundle} from './i18n'\nimport {changesInspector} from './panes/document/inspectors/changes'\nimport {validationInspector} from './panes/document/inspectors/validation'\nimport {router} from './router'\nimport {type StructureToolOptions} from './types'\n\nconst documentActions = [\n PublishAction,\n UnpublishAction,\n DiscardChangesAction,\n DuplicateAction,\n DeleteAction,\n HistoryRestoreAction,\n]\n\nconst documentBadges = [LiveEditBadge]\n\nconst inspectors = [validationInspector, changesInspector]\n\n/**\n * The structureTool is a studio plugin which adds the “structure tool” – a tool within\n * Sanity Studio in which content editors can drill down to specific documents to edit them.\n * You can configure your Studio's structure tool(s).\n *\n * @public\n * @param options - Options for the structure tool. See {@link StructureToolOptions}\n * @example Minimal example\n * ```ts\n * // sanity.config.ts\n * import { defineConfig } from 'sanity'\n * import { structureTool } from 'sanity/structure'\n *\n * export default defineConfig((\n * // ...\n * plugins: [\n * structureTool() // use defaults\n * ]\n * })\n * ```\n *\n * @example To customise your structure tool\n * ```ts\n * // sanity.config.ts\n * import { defineConfig } from 'sanity'\n * import { structureTool } from 'sanity/structure'\n * import { FaCar } from 'react-icons'\n\n * export default defineConfig((\n *\t // ...\n * plugins: [\n * structureTool({\n * name: 'cars',\n * title: 'Cars',\n * icon: FaCar,\n * structure: (S) => S.documentTypeList('car'),\n * defaultDocumentNode: (S) =>\n * S.document().views([\n * S.view.form(),\n * S.view.component(Preview).title('Preview')\n * ])\n * })\n * ]\n * })\n * ```\n * */\nexport const structureTool = definePlugin<StructureToolOptions | void>((options) => {\n const icon = options?.icon || MasterDetailIcon\n\n return {\n name: 'sanity/structure',\n document: {\n actions: (prevActions) => {\n // NOTE: since it's possible to have several structure tools in one Studio,\n // we need to check whether the document actions already exist in the Studio config\n return Array.from(new Set([...prevActions, ...documentActions]))\n },\n badges: (prevBadges) => {\n // NOTE: since it's possible to have several structure tools in one Studio,\n // we need to check whether the document badges already exist in the Studio config\n return Array.from(new Set([...prevBadges, ...documentBadges]))\n },\n inspectors: (prevInspectors) => {\n // NOTE: since it's possible to have several structure tools in one Studio,\n // we need to check whether the inspectors already exist in the Studio config\n return Array.from(new Set([...prevInspectors, ...inspectors]))\n },\n },\n\n tools: [\n {\n name: options?.name || 'structure',\n title: options?.title || 'Structure',\n icon,\n component: lazy(() => import('./components/structureTool')),\n canHandleIntent: (intent, params) => {\n if (intent === 'create') return canHandleCreateIntent(params)\n if (intent === 'edit') return canHandleEditIntent(params)\n return false\n },\n getIntentState,\n // Controlled by sanity/src/structure/components/structureTool/StructureTitle.tsx\n controlsDocumentTitle: true,\n options,\n router,\n __internalApplicationType: 'sanity/structure',\n },\n ],\n\n i18n: {\n bundles: [structureUsEnglishLocaleBundle],\n },\n }\n})\n\nfunction canHandleCreateIntent(params: Record<string, unknown>) {\n // We can't handle create intents without a `type` parameter\n if (!('type' in params)) {\n return false\n }\n\n // We can handle any create intent as long as it has a `type` parameter,\n // but we also know how to deal with templates, where other tools might not\n return 'template' in params ? {template: true} : true\n}\n\nfunction canHandleEditIntent(params: Record<string, unknown>) {\n // We can't handle edit intents without an `id` parameter\n if (!('id' in params)) {\n return false\n }\n\n // We can handle any edit intent with a document ID, but we're best at `structure` mode\n // This ensures that other tools that can handle modes such as `presentation` or `batch`\n // can take precedence over the structure tool\n return 'mode' in params ? {mode: params.mode === 'structure'} : true\n}\n","import {type ReactNode, useMemo, useState} from 'react'\nimport {useConfigContextFromSource, useDocumentStore, useSource} from 'sanity'\nimport {StructureToolContext} from 'sanity/_singletons'\n\nimport {createStructureBuilder, type DefaultDocumentNodeResolver} from './structureBuilder'\nimport {\n type StructureResolver,\n type StructureToolContextValue,\n type UnresolvedPaneNode,\n} from './types'\n\n/** @internal */\nexport interface StructureToolProviderProps {\n structure?: StructureResolver\n defaultDocumentNode?: DefaultDocumentNodeResolver\n children: ReactNode\n}\n\n/** @internal */\nexport function StructureToolProvider({\n defaultDocumentNode,\n structure: resolveStructure,\n children,\n}: StructureToolProviderProps): React.JSX.Element {\n const [layoutCollapsed, setLayoutCollapsed] = useState(false)\n const source = useSource()\n const configContext = useConfigContextFromSource(source)\n const documentStore = useDocumentStore()\n\n const S = useMemo(() => {\n return createStructureBuilder({\n defaultDocumentNode,\n source,\n })\n }, [defaultDocumentNode, source])\n\n const rootPaneNode = useMemo(() => {\n // TODO: unify types and remove cast\n if (resolveStructure)\n return resolveStructure(S, {\n ...configContext,\n documentStore,\n }) as UnresolvedPaneNode\n return S.defaults() as UnresolvedPaneNode\n }, [S, resolveStructure, configContext, documentStore])\n\n const features: StructureToolContextValue['features'] = useMemo(\n () => ({\n backButton: layoutCollapsed,\n resizablePanes: !layoutCollapsed,\n reviewChanges: !layoutCollapsed,\n splitPanes: !layoutCollapsed,\n splitViews: !layoutCollapsed,\n }),\n [layoutCollapsed],\n )\n\n const structureTool: StructureToolContextValue = useMemo(() => {\n return {\n features,\n layoutCollapsed,\n setLayoutCollapsed,\n rootPaneNode,\n structureContext: S.context,\n }\n }, [features, layoutCollapsed, rootPaneNode, S.context])\n\n return (\n <StructureToolContext.Provider value={structureTool}>{children}</StructureToolContext.Provider>\n )\n}\n"],"names":["ACTIONS_FLAG","DEFAULT_ACTIONS","VALID_ACTIONS","readActions","schemaType","validateActions","typeName","actions","Array","isArray","Error","join","invalid","difference","length","resolveEnabledActions","name","isActionEnabled","action","includes","structureLocaleNamespace","structureUsEnglishLocaleBundle","defineLocaleResourceBundle","locale","namespace","resources","DocTitle","props","$","_c","document","documentValue","schema","useSchema","t0","_type","get","t","useTranslation","t1","value","error","useValuePreview","t2","t3","message","errorMessage","title","jsx","color","ChevronWrapper","styled","Box","CrossDatasetReferencesDetails","details","CrossDatasetReferencesSummary","summary","Table","table","theme","rem","sanity","space","DocumentIdFlex","Flex","OtherReferenceCount","totalCount","references","count","Text","Symbol","for","InfoOutlineIcon","t4","Tooltip","t5","jsxs","Inline","PaneItemPreview","icon","layout","presence","isRecord","isValidElement","isString","isNumber","releases","useReleases","perspectiveStack","selectedPerspectiveName","usePerspective","documentPreviewStore","releasesIds","_id","getPreviewStateObservable","bundleIds","bundleStack","previewStateObservable","draft","isLoading","published","version","versions","previewIsLoading","useObservable","loading","TooltipDelayGroupProvider","DocumentPreviewPresence","DocumentStatusIndicator","status","DocumentStatus","tooltip","t6","getPreviewValueWithFallback","perspective","t7","SanityDefaultPreview","BackLink","forwardRef","ref","routerPanesState","groupIndex","useContext","PaneRouterContext","slice","panes","state","StateLink","usePaneLayout","pane","PaneLayoutContext","usePaneRouter","EMPTY_ARRAY","ReferencePreviewLink","onClick","type","getPublishedId","documentPresence","useDocumentPresence","useDocumentPreviewStore","ReferenceChildLink","linkProps","PreviewCard","ConfirmDeleteDialogBody","crossDatasetReferences","internalReferences","documentTitle","datasetNames","hasUnknownDatasetNames","onReferenceLinkClick","toast","useToast","item","UnknownIcon","documentId","renderPreviewItem","DocumentTitle","Translate","T0","T1","T2","t10","t11","t12","t8","t9","normalizedDatasetNames","datasetSubtitle","datasets","context","t13","WarningOutlineIcon","t14","t15","Card","t16","Stack","map","item_0","borderTop","undefined","DocumentsIcon","documentCount","ChevronDownIcon","minWidth","filter","_temp","t17","index","projectId","datasetName","Button","CopyIcon","content","navigator","clipboard","writeText","then","push","catch","reference","isClientError","e","POLL_INTERVAL","visiblePoll$","getVisiblePoll$","fromEvent","pipe","startWith","visibilityState","distinctUntilChanged","switchMap","visible","timer","EMPTY","shareReplay","refCount","bufferSize","getDocumentExistence","versionedClient","draftId","getDraftId","publishedId","requestOptions","uri","getDataUrl","json","query","excludeContent","tag","observable","request","omitted","nonExistant","doc","reason","some","id","fetchCrossDatasetReferences","checkDocumentId","of","currentDataset","config","dataset","url","catchError","statusCode","useInternalReferences","createHookFromObservableFactory","documentStore","listenQuery","fetch","listen","transitions","throttleTime","useCrossDatasetReferences","useReferringDocuments","useClient","DEFAULT_STUDIO_CLIENT_OPTIONS","useDocumentStore","isInternalReferencesLoading","isCrossDatasetReferencesLoading","from","Set","Boolean","sort","projectIds","_temp2","_temp3","_temp4","crossDatasetReference_1","crossDatasetReference","crossDatasetReference_0","DialogBody","LoadingContainer","attrs","align","direction","justify","ConfirmDeleteDialog","onCancel","onConfirm","dialogId","useId","showConfirmButton","text","cancelButton","confirmButton","LoadingBlock","Dialog","ConfirmDeleteDialogContainer","setError","useState","handleRetry","tone","ErrorBoundary","Delay","children","ms","ready","setReady","timeoutId","setTimeout","clearTimeout","useEffect","Fragment","PANE_DEBUG","PANE_COLLAPSED_WIDTH","PANE_DEFAULT_MIN_WIDTH","Root","Layer","PaneDivider","disabled","element","resize","dragging","setDragging","event","preventDefault","startX","pageX","handleMouseMove","deltaX","handleMouseUp","e_0","removeEventListener","addEventListener","handleMouseDown","Pane","forwardedRef","currentMaxWidthProp","currentMinWidthProp","maxWidthProp","minWidthProp","restProps","currentMinWidth","currentMaxWidth","flex","maxWidth","selected","flexProp","rootElement","setRootElement","collapse","collapsed","layoutCollapsed","expand","expandedElement","mount","p","find","indexOf","paneIndex","nextPane","isLast","expanded","nextCollapsed","useRef","current","useImperativeHandle","refValue","setRef","useLayoutEffect","handleCollapse","handleExpand","contextValue","bb0","bb1","hidden","LegacyLayerProvider","divider","Infinity","t18","style","t19","t20","t21","t22","t23","t24","BoundaryElementProvider","t25","t26","IsLastPaneProvider","t27","t28","displayName","usePane","PaneContext","PaneContent","as","overflow","padding","toLowerCaseNoSpaces","str","toLocaleLowerCase","replaceAll","MENU_GROUP_POPOVER_PROPS","constrainSize","placement","portal","PaneMenuButtonItem","isAfterGroup","node","getI18nText","useGetI18nText","MenuDivider","child","childIndex","key","child_0","childIndex_0","MenuGroup","PaneContextMenuItemResolver","intent","PaneContextIntentMenuItem","PaneContextMenuItem","tooltipContent","useI18nText","hotkey","split","iconRight","CheckmarkIcon","onAction","MenuItem","TooltipOfDisabled","params","intentLink","useIntentLink","handleClick","href","CONTEXT_MENU_POPOVER_PROPS","nodesHasTone","nodes","PaneContextMenuButton","actionsNodes","hasCritical","hasCaution","ContextMenuButton","nodeIndex","Menu","MenuButton","RootCard","PaneFooter","$border","css","Layout","TitleCard","fg","bg","card","enabled","TitleTextSkeleton","TextSkeleton","TitleText","TabsBox","rgba","base","PaneHeader","backButton","border","contentAfter","subActions","tabs","tabIndex","paneElement","paneRect","useElementRect","height","window","innerHeight","width","layoutStyle","handleTitleClick","handleLayoutClick","showTabsOrSubActions","LayerProvider","getDisabledReason","disabledReason","ariaLabel","isDisabled","PaneHeaderActionButton","PaneHeaderMenuItemActionButton","PaneHeaderMenuGroupActionButton","warn","PaneHeaderActionIntentButton","hotkeys","StatusButton","idx","_calcPaneResize","cache","left","right","sum","leftMinWidth","rightMinWidth","leftMaxWidth","Math","min","rightMaxWidth","minDeltaX","rightMinDeltaX","maxDeltaX","leftMaxDeltaX","_deltaX","max","leftW","rightW","leftFlex","rightFlex","_getDOMPath","el","path","parentElement","childNodes","unshift","EMPTY_PATH","_sortElements","elements","WeakMap","set","_sortByElementPath","a","b","_a","_b","len","i","aIndex","bIndex","createPaneLayoutController","observers","optionsMap","userCollapsedElementSet","rootWidth","resizeDataMap","Map","resizing","add","_notifyObservers","delete","options","original","splice","leftElement","leftIndex","leftOptions","rightElement","rightOptions","offsetWidth","leftResizeData","rightResizeData","nextRootElement","setRootWidth","nextRootWidth","subscribe","observer","_elements","dataMap","lastElement","collapsedWidth","remaingWidth","userCollapsed","has","sizeCollapsed","resizeData","data","PaneLayout","onCollapse","onExpand","controller","rootRect","setState","paneLayout","isMenuNodeButton","renderAsButton","isNotMenuNodeButton","negate","resolveMenuNodes","fieldActions","menuItems","menuItemGroups","keyOffset","mapFieldActionToPaneMenuNode","groups","itemGroup","g","i18n","ungroupedItems","group","shortcut","actionHandler","showAsAction","childIdx","IntentButton","searchParams","linkRef","IntentLink","Link","InsufficientPermissionsMessageTooltip","reveal","currentUser","useCurrentUser","InsufficientPermissionsMessage","POPOVER_PROPS","getIntent","templates","isBundleIntent","LATEST","isPublishedPerspective","templateId","baseParams","template","initialDocumentId","parameters","PaneHeaderCreateButton","templateItems","useTemplates","selectedReleaseId","isReleaseActive","useIsReleaseActive","tCore","templatePermissions","isTemplatePermissionsLoading","useTemplatePermissions","every","nothingGranted","reduce","permissionsById","AddIcon","firstItem","permissions","granted","itemIndex","permissions_0","disabled_0","intent_0","acc","permission_0","permission","isNonNullable","hashObject","sortObject","v","Object","entries","keyA","keyB","localeCompare","JSON","stringify","normalize","parse","PaneHeaderActions","memo","initialValueTemplateItems","initialValueTemplateItemsFromStructure","actionHandlers","EMPTY_OBJECT","handleAction","useCallback","handler","menuNodes","useMemo","actionNodes","contextMenuNodes","initialValueTemplateItemFromMenuItems","menuItemIndex","intentParams","templateParams","description","combinedInitialValueTemplates","uniqBy","MissingSchemaType","Code","documentType","getIconWithFallback","defaultIcon","PaneItem","pressed","margin","marginBottom","marginTop","ChildLink","hasSchemaType","clicked","setClicked","isSanityDocument","DocumentIcon","opacity","ChevronRightIcon","FolderIcon","preview","metaKey","preloading","setPreload","timeoutRef","startTransition","handleMouseEnter","handleMouseLeave","PreloadDocumentPane","useEditState","RenderActionCollectionState","actionProps","onActionComplete","GetHookCollectionState","RenderBadgeCollectionState","badges","badgeProps","ErrorPane","paneKey","getWaitMessages","thresholds","messageKey","isDev","src","merge","threshold","mapTo","delay","DEFAULT_MESSAGE_KEY","Content","LoadingPane","messageProp","resolvedMessage","currentMessage","setCurrentMessage","sub","unsubscribe","contentElement","setContentElement","mounted","setMounted","_raf2","DELAY","useDocumentPane","documentPane","DocumentPaneContext","CommentsWrapper","CommentsProviderWrapper","CommentsEnabledProvider","useCommentsEnabled","connectionState","onPathOpen","inspector","openInspector","setParams","createPathWithParams","selectedCommentId","comment","paramsRef","commentId","inspect","COMMENTS_INSPECTOR_NAME","location","origin","getCommentLink","handleClearSelectedComment","handleOpenCommentsInspector","CommentsProvider","_DEBUG","EMPTY_PARAMS","LOADING_PANE","DOCUMENT_PANEL_PORTAL_ELEMENT","useStructureTool","structureTool","StructureToolContext","DOCUMENT_PANEL_MIN_WIDTH","DOCUMENT_PANEL_INITIAL_MIN_WIDTH","DOCUMENT_INSPECTOR_MIN_WIDTH","DOCUMENT_INSPECTOR_MAX_WIDTH","INSPECT_ACTION_PREFIX","DEFAULT_MENU_ITEM_GROUPS","HISTORY_INSPECTOR_NAME","VALIDATION_INSPECTOR_NAME","DocumentInspectorMenuItemsResolver","inspectors","onMenuItems","setMenuItems","newFieldActions","setMenuItem","prev","next","InspectorMenuItems","useMenuItem","defineInspectorMenuItemComponent","InspectorMenuItem","menuItem","useUnique","useDocumentTitle","displayed","subscribed","IGNORE_OPS","DocumentOperationResults","pushToast","documentPaneValue","documentTitleInfo","titleError","useDocumentOperationEvent","prevEvent","paneRouter","op","documentTitleBase","cleanupId","closable","duration","Strong","closeCurrentAndAfter","isLiveEditEnabled","liveEdit","position","zIndex","lineHeight","DocumentInspectorHeader","closeButtonLabel","forwardedAs","onClose","CloseIcon","DocumentInspectorPanel","closeInspector","features","handleClose","Component","component","resizablePanes","Resizable","debounce","func","wait","immediate","timeout","args","timestamp","result","later","last","debounced","callNow","debounce_1","md5omatic_1","md5omatic","x","str2blks_MD5","c","d","olda","oldb","oldc","oldd","ff","gg","hh","ii","addme","rhex","hex_chr","bitOR","lsb","msb31","bitXOR","bitAND","y","lsw","msw","num","j","nblk","blks","l","rol","cnt","cmn","q","s","uid","isPrimitive","Highlighter","highlight","highlightStart","highlightLength","highlightString","part","isObject","PATH_PREFIX","Leaf","__publicField","label","root","inputId","id2","onLabelClick","items","keys","properties","verboseShowOriginal","isExpanded","interactiveLabel","getOriginal","childPrefix","shouldGetOriginal","getLeafKey","originalValue","isKey","InteractiveLabel","prevProps","cn","keypath","hash","md5OMatic","noop","SearchBar","onChange","onSearchChange","evt","isEmpty","object","getFilterer","memoize","opts","subquery","matches","contains","pair","haystack","needle","fn","lastData","lastOptions","lastResult","PATH_DELIMITER","integer","lens","segment","defaultValidateQuery","defaultFilterOptions","JsonInspector","rawData","className","filterOptions","validateQuery","isQueryValid","isNotFound","Search","nextProps","prevState","filterer","STRUCTURE_TOOL_NAMESPACE","useStructureToolSetting","defaultValue","keyValueStore","useKeyValueStore","keyValueStoreKey","getKey","value_0","newValue","setKey","VIEW_MODE_PARSED","VIEW_MODE_RAW","VIEW_MODES","lru","LRU","maxSize","keyPath","cached","toggleExpanded","selectElement","sel","getSelection","range","createRange","removeAllRanges","selectNodeContents","addRange","select","currentTarget","maybeSelectAll","keyCode","ctrlKey","isDocumentLike","JSONInspectorWrapper","div","fonts","code","family","sizes","fontSize","syntax","property","constant","string","boolean","number","target","handleChange","TextInput","SearchIcon","InspectDialog","onInspectClose","dialogIdPrefix","viewModeId","onViewModeChange","mode","viewMode","setParsedViewMode","setRawViewMode","bottom","Tab","TabList","outline","ignoreCase","TabPanel","Banner","Icon","rest","paddingY","DeletedDocumentBanners","isDeleted","isDeleting","selectedPerspective","isDraftPerspective","ArchivedReleaseBanner","DeletedDocumentBanner","lastNonDeletedRevId","restore","useDocumentOperation","navigateIntent","useRouter","execute","handleRestore","ReadOnlyIcon","release","metadata","DocumentRemoveIcon","DeprecatedDocumentTypeBanner","isDeprecatedSchemaType","deprecated","ErrorOutlineIcon","AskToEditDialogOpened","defineEvent","AskToEditRequestSent","MAX_NOTE_LENGTH","RequestPermissionDialog","onRequestSubmitted","telemtry","useTelemetry","useProjectId","apiVersion","client","zOffset","useZIndex","isSubmitting","setIsSubmitting","note","setNote","msgError","setMsgError","hasTooManyRequests","setHasTooManyRequests","hasBeenDenied","setHasBeenDenied","adminRole","roles","requestedRole","method","body","requestUrl","log","err","response","errMessage","finally","onSubmit","fullscreen","DialogProvider","role_0","role","appliesToUsers","LOADING_STATE","EMPTY_STATE","DECLINED_STATE","PENDING_STATE","EXPIRED_STATE","useRoleRequestsStatus","checkRoleRequests","checkRoleRequests$","requests","projectRequests","resourceId","declinedRequest","isAfter","addWeeks","Date","createdAt","isBefore","PermissionCheckBanner","requiredPermission","roleRequestStatus","requestStatusLoading","requestStatusError","requestSent","setRequestSent","requestPending","currentUserRoles","isOnlyViewer","showRequestPermissionDialog","setShowRequestPermissionDialog","listFormat","useListFormat","telemetry","roleTitles","formatToParts","Roles","ReferenceChangedBanner","replaceCurrent","routerReferenceId","parentGroup","parentSibling","parentId","hasHistoryOpen","rev","parentRefPath","pathFromString","referenceInfoObservable","parentRefPathSegment","keyedSegmentIndex","findIndex","concat","unstable_observePathsDocumentPair","debounceTime","availability","pathGet","snapshot","_ref","referenceInfo","handleReloadReference","available","SyncIcon","AddToReleaseBanner","currentRelease","getReleaseTone","createVersion","useVersionOperations","isReleaseScheduledOrScheduling","releaseType","isScheduled","getReleaseIdFromReleaseDocumentId","handleAddToRelease","LockIcon","date","formatRelativeLocalePublishDate","Label","backgroundColor","borderRadius","textDecoration","fontWeight","ArchivedReleaseDocumentBanner","archivedReleases","historyEvent","since","historyVersion","handleGoBack","r","VersionBadge","VersionInlineBadge","ResolvedLiveEdit","DraftLiveEditBanner","isPublishing","setPublishing","isDiscarding","setDiscarding","publish","discardChanges","liveEditResolveType","handlePublish","handleDiscard","isDraftId","hasDraft","TitleContainer","heading","FormHeader","isSingleton","__experimental_formPreviewTitle","Heading","LONG_ENOUGH_BUT_NOT_TOO_LONG","useConditionalToast","ev","FormView","margins","collapsedFieldSets","collapsedPaths","editState","validation","formState","onFocus","onBlur","onSetCollapsedPath","onSetCollapsedFieldSet","onSetActiveFieldGroup","openPath","patchChannel","isLocked","transactionSyncLock","documentEvents","tap","prepareMutationEvent","prepareRebaseEvent","hasRev","_rev","patches","handleInitialValue","useEffectEvent","formRef","setFormRef","focusedFirstDescendant","setFocusedFirstDescendant","focusPath","focusFirstDescendant","Spinner","FormBuilder","changed","focused","members","readOnly","PresenceOverlay","Container","mutations","mut","patch","fromMutationPatches","remotePatches","remoteMutations","localPatches","localMutations","createPatchChannel","DocumentBox","Scroller","ScrollContainer","$disabled","DocumentPanel","footerHeight","headerHeight","isInspectOpen","setDocumentPanelPortalElement","activeViewId","views","isPermissionsLoading","existsInBundle","parentPortal","usePortal","_portalElement","setPortalElement","documentScrollElement","setDocumentScrollElement","formContainerElement","_createdAt","view","activeView","portalElement","splitPanes","formViewHidden","ActiveViewComponent","historical","activeViewNode","isLiveEdit","scrollTo","inspectDialog","showInspector","isScheduledRelease","banners","PortalProvider","VirtualizerScrollInstanceProvider","POPOVER_FALLBACK_PLACEMENTS","DIALOG_WIDTH_TO_UI_WIDTH","small","medium","large","full","ConfirmDialog","dialog","referenceElement","ConfirmDialogContent","Popover","cancelButtonIcon","cancelButtonText","confirmButtonIcon","confirmButtonText","isTopLayer","useLayer","useGlobalKeyDown","Grid","ModalDialog","footer","showCloseButton","header","PopoverDialog","PopoverDialogContent","DocumentActionPortalProvider","ActionStateDialog","modalId","unknownModal","console","ActionDialogWrapper","actionStates","actionIndex","setActionIndex","currentAction","ActionMenuButton","idPrefix","setReferenceElement","preventOverflow","popoverProps","actionState","ActionMenuListItem","renderActionDialog","onHandle","String","replace","tooltipProps","toUpperCase","DISABLED_REASON_TITLE_KEY","NOTHING_TO_DELETE","NOT_READY","DeleteAction","onComplete","setIsDeleting","paneSetIsDeleting","deleteOp","isConfirmDialogOpen","setConfirmDialogOpen","handleCancel","handleConfirm","handle","useDocumentPairPermissions","TrashIcon","DISABLED_REASON_KEY","NO_CHANGES","NOT_PUBLISHED","DiscardChangesAction","ResetIcon","NOTHING_TO_DUPLICATE","DuplicateAction","duplicate","isDuplicating","setDuplicating","dupeId","uuid","duplicateSuccess","firstValueFrom","operationEvents","HistoryRestoreAction","revision","isRevisionInitial","isRevisionLatest","RevertIcon","DocumentPublished","LIVE_EDIT_ENABLED","ALREADY_PUBLISHED","publishedAt","AlreadyPublished","useTemporalPhrase","timeSincePublished","useRelativeTime","PublishAction","publishState","setPublishState","validationStatus","useValidationStatus","syncState","useSyncState","changesOpen","isValidationErrorMarker","hasValidationErrors","publishScheduled","setPublishScheduled","isSyncing","isValidating","_updatedAt","isDisplayedPublished","doPublish","validationComplete","didPublish","nextState","publishedImmediately","previouslyPublished","PublishIcon","UnpublishAction","unpublish","UnpublishIcon","DocumentStatusBarActionsInner","showMenu","states","__internal_tasks","firstActionState","menuActionStates","buttonElement","setButtonElement","Hotkeys","sideMenuItems","footerAction","DocumentStatusBarActions","allActions","renderDocumentStatusBarActions","HistoryStatusBarActions","revisionId","isRestoreAction","historyActions","toLowerCase","DocumentHeaderTabs","tabPanelId","DocumentHeaderTab","isActive","viewId","setView","TooltipContent","intendedPublishAt","DocumentPerspectiveList","setPerspective","dateTimeFormat","useDateTimeFormat","dateStyle","timeStyle","documentVersions","filteredReleases","notCurrentReleases","currentReleases","activeReleases","versionDocumentExists","archivedRelease","handlePerspectiveChange","isPublishedChipDisabled","getReleaseChipState","getVersionFromId","isReleaseHistoryMatch","VersionChip","format","menuReleaseId","releasesLoading","fromRelease","isVersion","releaseState","DocumentHeaderTitle","DocumentPanelHeader","_props","onMenuAction","onPaneClose","onPaneSplit","unstable_languageFilter","hasGroupSiblings","useFieldActions","menuButtonNodes","showTabs","showSplitPaneButton","splitViews","showSplitPaneCloseButton","showBackButton","showPaneGroupCloseButton","renderPaneActions","DocumentPanelHeaderActionDialogDeferred","ArrowLeftIcon","renderedActions","LanguageFilterComponent","SplitVerticalIcon","useDeferredValue","DocumentPanelHeaderActionDialog","SpacerButton","size","pointerEvents","visibility","BADGE_TONES","primary","success","warning","danger","DocumentBadgesInner","DocumentBadgesDeferred","DocumentBadges","renderDocumentBadges","badge","Badge","whiteSpace","StyledMotionPath","motion","Circle","Arrows","Checkmark","rotateAnimation","keyframes","RotateGroup","syncing","scale","transition","saved","changes","circle","strokeDasharray","strokeDashoffset","arrows","checkmark","pathLength","AnimatedStatusIcon","STATUS_DICTIONARY","i18nKey","DocumentStatusPulse","currentStatus","TextWithTone","SYNCING_TIMEOUT","SAVED_TIMEOUT","DocumentStatusLine","setStatus","lastUpdated","timerId","StatusText","RevisionStatusLine","RestoreIcon","useResizeObserver","onResize","observe","resizeObserver","unobserve","CONTAINER_BREAKPOINT","DocumentStatusBar","actionsBoxRef","createLinkMetadata","onDocumentChange","CreateLinkedActions","useSanityCreateConfig","components","documentLinkedActions","showingRevision","showingVersion","setCollapsed","contentRect","handleResize","shouldRender","isSanityCreateLinked","flexShrink","marginLeft","KeyboardShortcutResponder","actionsBoxElement","activeIndex","onActionStart","onKeyDown","rootRef","As","activeAction","matchingStates","isHotkey","matchingState","handleKeyDown","DocumentActionShortcuts","setActiveIndex","renderDocumentActionShortcuts","getInspectorItems","currentInspector","hasValue","inspectorMenuItems","getInspectItem","JsonIcon","getProductionPreviewItem","previewUrl","EarthAmericasIcon","getMenuItems","inspectorItems","LinkIcon","usePreviewUrl","resolveProductionUrl","useSource","BehaviorSubject","subject","asObservable","DocumentLayoutError","useBundleDeletedToast","bundles","deletedBundleId","deletedBundleTitle","DIALOG_PROVIDER_POSITION","StyledChangeConnectorRoot","ChangeConnectorRoot","DocumentLayout","inspectOpen","onHistoryOpen","isInitialValueLoading","paneParams","zOffsets","getSanityCreateLinkMetadata","documentLinkedBannerContent","CreateLinkedBannerContent","startInCreateBanner","StartInCreateBanner","footerElement","setFooterElement","headerElement","setHeaderElement","setActionsBoxElement","documentPanelPortalElement","useGlobalCopyPasteElementHandler","setInspectorMenuItems","rootFieldActionNodes","setRootFieldActionNodes","footerRect","headerRect","handleKeyUp","stopPropagation","onConnectorSetFocus","portalElements","GetFormValueProvider","FieldActionsResolver","FieldActionsProvider","ShowWhenPaneOpen","paneDialog","changesInspectorTab","pick","plugin","unstable_layout","useDocumentLayoutComponent","defaultComponent","useMiddlewareComponents","DocumentURLCopied","CreatedDraft","getInitialValueTemplateOpts","payload","panePayload","structureNodeTemplate","templateName","urlTemplate","typeTemplates","DocumentPaneProvider","onFocusPath","forcedVersion","setDocumentMeta","useCopyPaste","documentActions","documentBadges","unstable_fieldActions","fieldActionsResolver","languageFilterResolver","inspectorsResolver","presenceStore","usePresenceStore","setPaneParams","viewsProp","paneOptions","documentIdRaw","isReleaseLocked","isReleaseDocument","templateParameters","initialValueRaw","useInitialValue","initialValue","validationRaw","useConnectionState","useDocumentVersions","getDocumentVersionType","isVersionId","actionsPerspective","documentActionsProps","versionType","versionName","languageFilter","setFocusPath","focusPathRef","timelineMode","setTimelineMode","store","timelineStore","timelineError","timelineReady","revisionDocument","onOlderRevision","sinceDocument","isPristine","historyStore","setPresence","subscription","nextPresence","inspectorName","setInspectorName","inspectParamRef","resolvedChangesInspector","compareValue","setTimelineRange","newSince","newRev","handleBlur","blurredPath","disableBlurRef","patchRef","useInsertionEffect","toMutationPatches","closeInspectorName","nextInspectorName","nextInspector","currentParams","onOpen","handleHistoryClose","handleHistoryOpen","reviewChanges","handlePaneClose","closeCurrent","handlePaneSplit","duplicateCurrent","toggleLegacyInspect","toggle","omit","handleMenuAction","open","toString","startsWith","handleLegacyInspectClose","onSetOpenPath","fieldGroupState","onSetFieldGroupState","onSetCollapsedFieldSets","handleOnSetCollapsedPath","setAtPath","handleOnSetCollapsedFieldSet","handleSetActiveFieldGroup","groupName","docId","docPermissionsInput","useDocumentValuePermissions","isCreateLinked","isSanityCreateLinkedDocument","isNonExistent","hasNoPermission","updateActionDisabled","createActionDisabled","reconnecting","useFormState","comparisonValue","formStateRef","setOpenPath","ops","getExpandOperations","forEach","updatePresence","nextFocusPath","setLocation","lastActiveAt","toISOString","selection","updatePresenceThrottled","throttle","leading","trailing","handleFocus","_nextFocusPath","pathFor","onHistoryClose","restParams","pathFromUrl","resolveKeyedPath","deepEquals","DocumentEventsPane","usePaneOptions","getVersionId","eventsStore","useEventsStore","sinceRevision","events","historyStoreProps","forcedProviderVersion","EventsProvider","isDeleteDocumentGroupEvent","isDeleteDocumentVersionEvent","DocumentPaneWithLegacyTimelineStore","setTimelineError","onError","useTimelineStore","revTime","useTimelineSelector","timelineDisplayed","sinceAttributes","_temp5","_temp6","_temp7","state_0","state_1","state_2","state_3","state_4","state_5","DocumentPaneProviderWrapper","source","beta","eventsAPI","useResetHistoryParams","isMounted","_perspective","preserveRev","updateHistoryParams","DocumentPane","parentSourceName","CopyPasteProvider","DocumentPaneInner","SourceProvider","resolveNewDocumentOptions","isLoaded","isDocumentLoaded","useDocumentType","mergeDocumentType","providerProps","handleEditReference","childParams","routerPanesStateLength","activePath","ReferenceInputOptionsProvider","PARTIAL_PAGE_LIMIT","FULL_LIST_LIMIT","DEFAULT_ORDERING","by","field","EMPTY_RECORD","RootBox","$opacity","CommandListBox","SKELETON_ITEMS","LoadingView","DocumentListPaneContent","childItemId","filterIsSimpleTypeConstraint","hasMaxItems","hasSearchQuery","isLazyLoading","loadingVariant","onEndReached","onRetry","paneTitle","searchInputElement","showIcons","setShouldRender","handleEndReached","isSelected","isLastItem","showSpinner","showMaxItemsMessage","limit","renderItem","noDocumentsContent","ErrorActions","CommandList","mainContent","removePublishedWithDrafts","documents","collate","entry","hasPublished","applyOrderingFunctions","order","orderBy","mapWith","fieldType","tryResolveSchemaTypeForPath","fieldExtendsType","jsonType","baseType","pathSegments","PathUtils","getFieldTypeByName","isKeySegment","isIndexSegment","memberType","otherType","isReferenceSchemaType","refType","otherRefType","to","fieldName","fields","ofType","findTypes","types","isSplat","findStaticTypesInFilter","IMPLICIT_SCHEMA_TYPE_FIELDS","joinReferences","strict","head","tail","schemaField","refTypes","tailFields","tailWrapper","getExtendedProjection","ordering","swr","createSWR","listenSearchQuery","searchQuery","staticTypeNames","maxFieldDepth","searchStrategy","sortBy","extendedProjection","events$","defer","includeResult","mergeMap","throwError","share","welcome$","mutationAndReconnect$","partition","swrKey","take","asyncScheduler","exhaustMapWithTrailing","typeNames","getSearchableTypes","search","createSearch","strategy","maxDepth","doFetch","__unstable_extendedProjection","comments","skipSortByScore","hits","hit","fromCache","INITIAL_QUERY_STATE","isLoadingFullList","useDocumentList","searchFilter","paramsProp","sortOrder","useWorkspace","useSearchMaxFieldDepth","typeNameFromFilter","onRetry$","observableCallback","onFetchFullList$","onLoadFullList","queryResults$","listenSearchQueryArgs","partialList$","fullList$","withLatestFrom","result_0","result_1","takeUntil","caught$","safeError","scan","nonErrorThrownWarning","thrown","rotate","fadeIn","AnimatedSpinnerIcon","SpinnerIcon","SubtleSpinnerIcon","DelayedSubtleSpinnerIcon","DocumentListPane","sortOrderRaw","displayOptions","useShallowUnique","staticTypes","setSearchQuery","searchInputValue","setSearchInputValue","setSearchInputElement","sortWithOrderingFn","documentListIsLoading","trim","handleQueryChange","useObservableEvent","event$","handleClearSearch","handleSearchKeyDown","enableSearchSpinner","setEnableSearchSpinner","textInputIcon","initialValueTemplates","setLayout","setSortOrder","StructurePaneHeader","createColumnHelper","accessor","column","functionalUpdate","updater","input","makeStateUpdater","instance","old","isFunction","isNumberArray","val","flattenBy","arr","getChildren","flat","recurse","subArr","getDeps","deps","depArgs","depTime","newDeps","dep","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","getMemoOptions","tableOptions","debugLevel","_tableOptions$debugAl","createCell","row","columnId","getRenderValue","_cell$getValue","cell","feature","createColumn","columnDef","depth","parent","_resolvedColumnDef$id","resolvedColumnDef","accessorKey","accessorFn","originalRow","_result","_column$columns","orderColumns","_column$columns2","leafColumns","debug","createHeader","_options$id","leafHeaders","recurseHeader","h","Headers","allColumns","_left$map$filter","_right$map$filter","leftColumns","rightColumns","centerColumns","buildHeaderGroups","_left$map$filter2","orderedLeafColumns","_right$map$filter2","headerGroups","headerGroup","flatHeaders","_header$subHeaders","_header$subHeaders2","_header$subHeaders3","center","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","findMaxDepth","columns","createHeaderGroup","headersToGroup","pendingParentHeaders","headerToGroup","latestPendingParentHeader","isLeafHeader","isPlaceholder","bottomHeaders","recurseHeadersForSpans","headers","colSpan","rowSpan","childRowSpans","childColSpan","childRowSpan","minChildRowSpan","createRow","rowIndex","subRows","_row$getValue","parentRows","currentRow","parentRow","allCells","ColumnFaceting","includesString","filterValue","_filterValue$toString","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","rowValue","unsafeMin","unsafeMax","parsedMin","parsedMax","temp","filterFns","ColumnFiltering","firstRow","_table$options$filter","_table$options$filter2","_column$columnDef$ena","_table$options$enable","_table$options$enable2","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","filterFn","previousFilter","newFilter","shouldAutoRemoveFilter","_old$filter","newFilterObj","_old$map","_table","updateFn","_functionalUpdate","defaultState","_table$initialState$c","_table$initialState","_leafRows","childRows","nextValue","extent","mean","leafRows","median","values","mid","nums","unique","uniqueCount","_columnId","aggregationFns","ColumnGrouping","_toString","_props$getValue","_table$getState$group","_table$getState$group2","canGroup","_table$options$aggreg","_table$options$aggreg2","_table$initialState$g","_row$subRows","grouping","groupedColumnMode","nonGroupingColumns","col","ColumnOrdering","_getVisibleLeafColumns","_columns$","_columns","columnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","foundIndex","getDefaultColumnPinningState","ColumnPinning","columnIds","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","_d$columnDef$enablePi","leafColumnIds","isLeft","isRight","leftAndRight","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","defaultColumnSizing","getDefaultColumnSizingInfoState","ColumnSizing","_column$columnDef$min","_column$columnDef$max","columnSize","_ref2","_","_header$column$getSiz","prevSiblingHeader","_contextDocument","canResize","isTouchStartEvent","startSize","columnSizingStart","clientX","newColumnSizing","updateOffset","eventType","clientXPos","_old$startOffset","_old$startSize","deltaDirection","deltaOffset","deltaPercentage","_ref3","headerSize","onMove","onEnd","contextDocument","mouseEvents","touchEvents","_e$touches$","passiveIfSupported","passiveEventSupported","_table$initialState$c2","_table$getHeaderGroup","_table$getHeaderGroup2","_table$getLeftHeaderG","_table$getLeftHeaderG2","_table$getCenterHeade","_table$getCenterHeade2","_table$getRightHeader","_table$getRightHeader2","passiveSupported","supported","ColumnVisibility","childColumns","cells","makeVisibleColumnsMethod","getColumns","_value","obj","_target","GlobalFaceting","GlobalFiltering","_table$getCoreRowMode","_table$options$getCol","globalFilterFn","RowExpanding","registered","queued","_table$options$autoRe","_table$initialState$e","splitId","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","_table$options$getRow","isFullyExpanded","canExpand","defaultPageIndex","defaultPageSize","getDefaultPaginationState","RowPagination","safeUpdater","_table$initialState$p","pageIndex","maxPageIndex","_table$initialState$p2","_table$initialState$p3","_table$initialState2","pageSize","topRowIndex","_table$options$pageCo","newPageCount","pageCount","pageOptions","_table$options$pageCo2","_table$options$rowCou","getDefaultRowPinningState","RowPinning","includeLeafRows","includeParentRows","leafRowIds","parentRowIds","rowIds","_old$top3","_old$bottom3","_old$top","_old$bottom","_old$top2","_old$bottom2","enableRowPinning","enablePinning","top","isTop","isBottom","_ref4","_visiblePinnedRowIds$","visiblePinnedRowIds","_ref5","_table$initialState$r","_pinningState$top","_pinningState$bottom","visibleRows","pinnedRowIds","_table$options$keepPi","allRows","topPinnedRowIds","bottomPinnedRowIds","topAndBottom","RowSelection","rowSelection","preGroupedFlatRows","resolvedValue","mutateRowIsSelected","rowModel","selectRowsFn","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","_table$getState$rowSe","totalSelected","_opts$selectChildren","selectedRowIds","isRowSelected","isSubRowSelected","_table$options$enable3","canSelect","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","rows","_row$subRows2","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","alphanumeric","rowA","rowB","compareAlphanumeric","alphanumericCaseSensitive","compareBasic","textCaseSensitive","datetime","basic","aStr","bStr","aa","bb","an","bn","combo","sortingFns","RowSorting","firstRows","_table$options$sortin","_table$options$sortin2","desc","multi","nextSortingOrder","hasManualValue","existingSorting","existingIndex","newSorting","sortAction","nextDesc","_table$options$maxMul","_column$columnDef$sor","firstSortDirection","isSorted","_column$columnDef$ena2","_table$getState$sorti","columnSort","_table$getState$sorti2","_table$getState$sorti3","canSort","_table$initialState$s","builtInFeatures","createTable","_options$_features","_options$initialState","_features","defaultOptions","mergeOptions","initialState","_feature$getInitialSt","queuedTimeout","coreInstance","cb","newOptions","searchAll","defaultColumn","_defaultColumn","_props$renderValue$to","_props$renderValue","columnDefs","recurseColumns","groupingColumnDef","flatColumns","getCoreRowModel","accessRows","originalRows","_row$originalSubRows","expandRows","expandedRows","handleRow","filterRows","filterRowImpl","filterRowModelFromLeafs","filterRowModelFromRoot","rowsToFilter","filterRow","_table$options$maxLea","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","newRow","_table$options$maxLea2","getFilteredRowModel","columnFilters","globalFilter","resolvedColumnFilters","resolvedGlobalFilters","_filterFn$resolveFilt","filterableIds","globallyFilterableColumns","_globalFilterFn$resol","currentColumnFilter","currentGlobalFilter","filterMeta","filterRowsImpl","getPaginationRowModel","pagination","flatRows","rowsById","pageStart","pageEnd","paginatedRowModel","flexRender","Comp","isReactComponent","React","isClassComponent","isExoticComponent","proto","useReactTable","resolvedOptions","tableRef","DocumentSheetListSelect","selectedAnchor","setSelectedAnchor","meta","handleOnClick","shiftKey","shiftClickIndex","lowerIndex","upperIndex","additionalSelectedRows","getRowModel","currentSelectedRows","getSelectedRowModel","setRowSelection","nextSelectedRows","isRowCurrentlySelected","getIsSelected","toggleSelected","Checkbox","paddingLeft","getCanSelect","useDocumentSheetListContext","DocumentSheetListContext","DocumentSheetListProvider","selectedAnchorCellDetails","setSelectedAnchorCellDetails","selectedRangeCellIndexes","setSelectedRangeCellIndexes","clearAndSetFocusSelection","nextAnchorDetails","activeElement","HTMLElement","blur","resetFocusSelection","changeSelectionColumn","visibleColumns","getVisibleLeafColumns","columnIndexAfterMove","colId","changeSelectionRange","previousSelection","anchorIndex","getNextIndex","startingIndex","firstSelectedIndex","lastIndexSelected","nextIndex","setSelectedAnchorCell","handleEscapePress","nextAnchorCellDetails","handleUpDownKey","isShiftKey","offset","newSelectedCellRowIndex","handleAnchorKeydown","handleAnchorClick","getElementById","focusAnchorCell","anchorCellDetails","getStateByCellId","submitFocusedCell","DataCell","td","PinnedDataCell","SheetListCellInner","getValue","cellId","renderValue","setRenderValue","isDirty","setIsDirty","inputRef","cellState","handleOnFocus","patchDocument","handleProgrammaticFocus","focus","HTMLInputElement","handleOnMouseDown","detail","handleOnEnterDown","handleOnChange","handleOnBlur","handlePaste","clipboardData","getData","handleCopy","getBorderStyle","inputProps","Select","boxShadow","SheetListCell","isPinned","getIsPinned","Cell","borderWidth","getIsLastColumn","getStart","borderRight","getSize","getContext","VISIBLE_COLUMN_LIMIT","PreviewCell","displayValue","columnHelper","SUPPORTED_FIELDS","getColsFromSchemaType","parentalField","tableColumns","nextCol","enableHiding","info","isObjectSchemaType","isAccessorKeyColumnDef","isGroupColumnDef","cols","flatMap","useDocumentSheetColumns","documentSchemaType","display","getIsSomeRowsSelected","getToggleAllPageRowsSelectedHandler","info_0","initialColumnsVisibility","accCols","countAllowedVisible","visibilityKey","ColumnsControl","isVisibleLimitReached","getCanHide","setInitialColumns","resetColumnVisibility","handleColumnOnChange","toggleVisibility","getColumnVisibilityDisabled","isColumnVisible","getIsVisible","isSingleColumnVisible","maxHeight","overflowY","getAllLeafColumns","column_2","SearchContainer","DocumentSheetListFilter","useSearchState","filtersVisible","SearchHeader","Filters","Header","th","PinnedHeader","HoverMenu","DocumentSheetListHeader","headerTitle","HeaderTag","canShowHeaderMenu","boxSizing","EllipsisHorizontalIcon","DocumentSheetListPaginator","setPageIndex","getCanPreviousPage","DoubleChevronLeftIcon","previousPage","ChevronLeftIcon","getState","getPageCount","nextPage","getCanNextPage","DoubleChevronRightIcon","setPageSize","Number","createDocumentsSet","documentsById","documentsReducer","nextDocumentResult","restDocuments","updatedDocument","nextDocument","LISTEN_OPTIONS","useDocumentSheetListStore","QUERY","dispatch","useReducer","setIsLoading","res","initialFetch","handleListenerEvent","err_0","listener$","uniques","isDraft","dataAsArray","useDocumentSheetList","PaneContainer","TableContainer","DocumentSheetListPaneInner","totalRows","autoResetPageIndex","columnPinning","columnVisibility","getRowId","fieldId","renderRow","getVisibleCells","createElement","rowsCount","getHeaderGroups","DocumentSheetListPane","schemaTypeName","isDocumentSchemaType","SearchProvider","addSelectedStateToMenuItems","isEqual","previous","setPrevious","shallowEquals","defaultLayout","defaultOrdering","sourceName","defaultSortOrder","menuItemsWithSelectedState","isSheetListLayout","SerializeError","constructor","parentPath","pathSegment","hint","helpId","withHelpUrl","HELP_URL","ID_REQUIRED","TITLE_REQUIRED","FILTER_REQUIRED","INVALID_LIST_ITEM","COMPONENT_REQUIRED","DOCUMENT_ID_REQUIRED","DOCUMENT_TYPE_REQUIRED","SCHEMA_TYPE_REQUIRED","SCHEMA_TYPE_NOT_FOUND","LIST_ITEMS_MUST_BE_ARRAY","QUERY_PROVIDED_FOR_FILTER","ACTION_OR_INTENT_REQUIRED","LIST_ITEM_IDS_MUST_BE_UNIQUE","ACTION_AND_INTENT_MUTUALLY_EXCLUSIVE","API_VERSION_REQUIRED_FOR_CUSTOM_FILTER","ORDER_BY_UPDATED_AT","ns","ORDER_BY_CREATED_AT","DEFAULT_SELECTED_ORDERING_OPTION","DEFAULT_ORDERING_OPTIONS","maybeSerializeMenuItem","MenuItemBuilder","serialize","_context","spec","clone","getAction","getTitle","getI18n","getGroup","getIcon","getParams","getShowAsAction","withSpec","builder","getOrderingMenuItem","SortIcon","getOrderingMenuItemsForSchemaType","orderings","maybeSerializeMenuItemGroup","MenuItemGroupBuilder","_title","_i18n","getId","disallowedPattern","validateId","disallowedChar","match","getStructureNodeId","camelCased","camelCase","test","getSlug","ComponentBuilder","getChild","getComponent","getOptions","getMenuItemGroups","canHandleIntent","componentOptions","resolveTypeForDocument","getClient","GenericViewBuilder","kebabCase","isSerializable","maybeSerializeView","isComponentSpec","ComponentViewBuilder","componentOrSpec","userComponent","FormViewBuilder","form","createDocumentChildResolver","resolveDocumentNode","itemId","currentSegment","DocumentBuilder","paneId","getDocumentId","getSchemaType","initialValueTemplate","getInitialValueTemplate","getInitialValueTemplateParameters","getViews","urlId","viewIds","dupes","uniq","getDocumentOptions","documentFromEditor","documentFromEditorWithInitialValue","InitialValueTemplateItemBuilder","getDescription","getTemplateId","getParameters","subtitle","defaultInitialValueTemplateItems","getStructureBuilder","getTypeNames","ordered","tpl","initialValueTemplateItem","maybeSerializeInitialValueTemplateItem","menuItemsFromInitialValueTemplateItems","DEFAULT_INTENT_HANDLER","defaultIntentChecker","intentName","isEdit","isCreate","typedSpec","paneFilter","getTypeNamesFromFilter","identity","layoutOptions","noChildResolver","shallowIntentChecker","GenericListBuilder","initialValueTemplatesSpecified","getDefaultLayout","getCanHandleIntent","getShowIcons","getInitialValueTemplates","validateFilter","createDocumentChildResolverForItem","parentItem","Promise","resolve","DocumentListBuilder","getApiVersion","getFilter","getDefaultOrdering","generateHelpUrl","inferInitialValueTemplates","inferTypeName","getSpec","option","getTypeNamesFromEqualityFilter","getTypeNamesFromInTypesFilter","pattern","exec","candidate","getArgType","thing","ListBuilder","isPromise","isListItem","defaultCanHandleIntent","isDocumentListItem","resolveChildForItem","maybeSerializeListItem","ListItemBuilder","listItem","gotWhat","helpText","getItems","serializedItems","dupeIds","dupeDesc","showIcon","getShowIcon","titleIsOptional","serializeOptions","listChild","originalChild","childOptions","createDefaultChildResolver","DocumentListItemBuilder","DocumentTypeListBuilder","cloneWithoutDefaultIntentHandler","override","BUNDLED_DOC_TYPES","isBundledDocType","isDocumentType","isList","collection","getDocumentTypes","n","getDocumentTypeListItems","getDocumentTypeListItem","startCase","childContext","list","getDocumentTypeList","typeNameOrSpec","StackCompactIcon","StackIcon","hasIcon","getDefaultStructure","createStructureBuilder","defaultDocumentNode","configContext","getConfigContextFromSource","structureBuilder","defaults","documentTypeList","documentTypeListItem","documentTypeListItems","documentWithInitialValueTemplate","defaultDocument","menuItemGroup","documentList","documentListItem","orderingMenuItem","orderingMenuItemsForType","editor","isValidElementType","uniqueId","LiveEditBadge","activePanes","setActivePanes","getIntentState","routerState","editDocumentId","isTemplate","TIMELINE_ICON_COMPONENTS","create","discardDraft","initial","editDraft","EditIcon","editLive","getTimelineEventIconComponent","hideScrollbarOnExpand","listWrapper","TIMELINE_LIST_WRAPPER_ID","firstChildren","scrollHeight","clientHeight","currentStyle","getComputedStyle","FlipIcon","ExpandableTimelineItemButton","handleExpandClick","StackWrapper","ListWrapper","$maxHeight","$visible","TIMELINE_ITEM_I18N_KEY_MAPPING","UserAvatarStack","maxLength","userIds","withTooltip","userId","UserAvatar","AvatarStack","IconBox","getTheme_v2","$color","avatar","TIMELINE_ITEM_EVENT_TONE","withinSelection","RELATIVE_TIME_OPTIONS","minimal","NameSkeleton","Skeleton","font","UserLine","user","useUser","AvatarSkeleton","collaborators","TimelineItem","chunk","onSelect","optionsMenu","endTimestamp","IconComponent","authors","authorUserIds","collaboratorsUsersIds","isSelectable","dateFormat","updatedTimeAgo","parsedDate","formattedDate","formattedTimestamp","isNonPublishChunk","isPublishChunk","getPreviousPublishAction","chunks","previousPublish","addChunksMetadata","Timeline","hasMoreChunks","lastChunk","selectedChunk","onLoadMore","listMaxHeight","selectedChunkId","chunksWithMetadata","expandedParents","setExpandedParents","filteredChunks","chunk_1","handleExpandParent","prev_0","selectedIndex","handleSelectChunk","timelineChunk","TimelineError","TIMELINE_MENU_PORTAL","TimelineMenu","setOpen","button","setButton","popoverRef","setPopoverRef","realRevChunk","sinceTime","handleOpen","handleGlobalKeyDown","useClickOutsideEvent","selectRev","revChunk","sinceId","revId","findRangeForRev","selectSince","sinceChunk","findRangeForSince","handleLoadMore","loadMore","formatParams","revLabel","sinceLabel","buttonLabel","ChangesInspector","showChanges","scrollRef","setScrollRef","diff","selectionState","isComparingCurrent","structureT","FieldWrapper","ChangeFieldWrapper","rootDiff","showFromValue","documentContext","NoChanges","ChangeList","DocumentChangeContext","getIsSelectable","isUnpublishDocumentEvent","isScheduleDocumentVersionEvent","isUnscheduleDocumentVersionEvent","EventTimelineItem","cursor","Event","PublishedEventMenu","portalContext","versionId","versionRevisionId","handleOpenReleaseDocument","handleOpenDraftDocument","RELEASES_INTENT","children_0","releaseTitle","children_1","fallbackPlacements","children_2","TimelineItemWrapper","CHILDREN_ITEMS_VARIANTS","animate","exit","ITEM_HEIGHT","EventsTimeline","allEvents","hasMoreEvents","selectedEventId","fetchEventChildren","selectedEvent","expandingParents","setExpandingParents","event_0","isCreateDocumentVersionEvent","isEditDocumentVersionEvent","isExpanding","prev_1","renderOptionsMenu","documentVariantType","getDocumentVariantType","isPublishDocumentVersionEvent","creationEvent","showExpandingLoader","isLastEvent","EventsTimelineMenu","nextCursor","eventsError","findRangeForRevision","loadMoreEvents","expandEvent","useEvents","revEvent","sinceEvent","SpinnerContainer","DIFF_INITIAL_VALUE","EventsInspector","getChangesList","changesList$","diffLoading","toEvent","sinceEvents","ChangesError","EventsSelector","showList","listHeight","setListHeight","getScrollerRef","initialLoad","HistorySelector","FadeInFlex","TABS","isValidTab","tab","ChangesTabs","isReady","paneRouterTab","setPaneRouterTab","changesInspector","getPathTitles","f","itemType","_key","MARKER_ICON","MARKER_TONE","ValidationInspector","marker","ValidationCard","errorInfo","setErrorInfo","level","DocumentNodePathBreadcrumbs","pathTitles","validationMarkers","hasErrors","isValidationError","hasWarnings","isValidationWarning","CheckmarkCircleIcon","validationInspector","legacyEditParamsToState","decodeURIComponent","encodePanesSegment","encodeChunks","encodeURIComponent","legacyEditParamsToPath","toState","parsePanesSegment","toPath","router","route","intents","transform","panePattern","isParam","isPayloadLike","exclusiveParams","isTruthy","parseChunks","sibling","tryParseBase64Payload","firstSibling","paneIsFirstSibling","sameAsFirst","encodedPayload","encodeJsonParams","encodedParams","valueFromFirstSibling","parseOldPanesSegment","restOfSiblings","buffer","payloadChunk","tryParsePayload","decodeJsonParams","definePlugin","MasterDetailIcon","prevActions","prevBadges","prevInspectors","tools","lazy","canHandleCreateIntent","canHandleEditIntent","controlsDocumentTitle","__internalApplicationType","StructureToolProvider","structure","resolveStructure","setLayoutCollapsed","useConfigContextFromSource","S","rootPaneNode","structureContext"],"mappings":"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","x_google_ignoreList":[57,58,59,131,132]}
|