sanity 3.26.2-canary.52 → 3.26.2-canary.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/lib/_chunks/{_internal-2CJ5wSKF.js → _internal-6Pl2wJGj.js} +422 -201
  2. package/lib/_chunks/_internal-6Pl2wJGj.js.map +1 -0
  3. package/lib/_chunks/{_internal-79flWvL8.js → _internal-yQwMw2ht.js} +419 -203
  4. package/lib/_chunks/_internal-yQwMw2ht.js.map +1 -0
  5. package/lib/_chunks/{_internalBrowser-QAFz3SKp.js → _internalBrowser-HWvRXvlU.js} +22 -22
  6. package/lib/_chunks/_internalBrowser-HWvRXvlU.js.map +1 -0
  7. package/lib/_chunks/{_internalBrowser-Y0qKZ-GA.js → _internalBrowser-TWIhitgI.js} +22 -22
  8. package/lib/_chunks/_internalBrowser-TWIhitgI.js.map +1 -0
  9. package/lib/_chunks/{deployApiAction-SHteit1G.js → deployApiAction-TZcCtXan.js} +2 -2
  10. package/lib/_chunks/{deployApiAction-SHteit1G.js.map → deployApiAction-TZcCtXan.js.map} +1 -1
  11. package/lib/_chunks/{deployApiAction-bRyJpGOS.js → deployApiAction-rVL67VYW.js} +2 -2
  12. package/lib/_chunks/{deployApiAction-bRyJpGOS.js.map → deployApiAction-rVL67VYW.js.map} +1 -1
  13. package/lib/_chunks/{getStudioConfig-JSkc4GE0.js → getStudioWorkspaces-HX9o9-hl.js} +20 -4
  14. package/lib/_chunks/getStudioWorkspaces-HX9o9-hl.js.map +1 -0
  15. package/lib/_chunks/{index-EO9iRnDS.js → index-2kSxso3r.js} +2 -2
  16. package/lib/_chunks/{index-EO9iRnDS.js.map → index-2kSxso3r.js.map} +1 -1
  17. package/lib/_chunks/{index-FQCCBbuC.js → index-751ZLh3z.js} +6 -6
  18. package/lib/_chunks/{index-FQCCBbuC.js.map → index-751ZLh3z.js.map} +1 -1
  19. package/lib/_chunks/{index-VNSHvpZr.js → index-HcF369ru.js} +2 -2
  20. package/lib/_chunks/{index-VNSHvpZr.js.map → index-HcF369ru.js.map} +1 -1
  21. package/lib/_chunks/{index-Xs2xnLUV.js → index-MAAxgUnl.js} +6 -6
  22. package/lib/_chunks/{index-Xs2xnLUV.js.map → index-MAAxgUnl.js.map} +1 -1
  23. package/lib/_chunks/{index-AaK2CidU.js → index-NweJPfGb.js} +2 -2
  24. package/lib/_chunks/{index-AaK2CidU.js.map → index-NweJPfGb.js.map} +1 -1
  25. package/lib/_chunks/{index-R7R6AyHF.js → index-zobOqko7.js} +2 -2
  26. package/lib/_chunks/{index-R7R6AyHF.js.map → index-zobOqko7.js.map} +1 -1
  27. package/lib/_chunks/{listApisAction-6lGkFZrU.js → listApisAction-IvKV4iAd.js} +2 -2
  28. package/lib/_chunks/{listApisAction-6lGkFZrU.js.map → listApisAction-IvKV4iAd.js.map} +1 -1
  29. package/lib/_chunks/{listApisAction-CqCkBz-F.js → listApisAction-oca2uykY.js} +2 -2
  30. package/lib/_chunks/{listApisAction-CqCkBz-F.js.map → listApisAction-oca2uykY.js.map} +1 -1
  31. package/lib/_chunks/pane-9HEeITpx.js +5 -0
  32. package/lib/_chunks/pane-9HEeITpx.js.map +1 -0
  33. package/lib/_chunks/pane-QyVrOLqS.js +2 -0
  34. package/lib/_chunks/pane-QyVrOLqS.js.map +1 -0
  35. package/lib/_chunks/pane-TXXUUvdc.js +5 -0
  36. package/lib/_chunks/pane-TXXUUvdc.js.map +1 -0
  37. package/lib/_chunks/pane-cQxQtBcL.js +2 -0
  38. package/lib/_chunks/pane-cQxQtBcL.js.map +1 -0
  39. package/lib/_chunks/{structure-qJLnDJXq.js → structure-iqIDIH7-.js} +3 -3
  40. package/lib/_chunks/structure-iqIDIH7-.js.map +1 -0
  41. package/lib/_chunks/{structure-588eAwLd.js → structure-o_wMXC_G.js} +3 -3
  42. package/lib/_chunks/structure-o_wMXC_G.js.map +1 -0
  43. package/lib/_chunks/validateAction-4Jl_y_iB.js +154 -0
  44. package/lib/_chunks/validateAction-4Jl_y_iB.js.map +1 -0
  45. package/lib/_chunks/{validateAction-GUvMkXiN.js → validateAction-6q8Sqwaz.js} +25 -73
  46. package/lib/_chunks/validateAction-6q8Sqwaz.js.map +1 -0
  47. package/lib/_chunks/validateAction-Bz67ApRP.js +143 -0
  48. package/lib/_chunks/validateAction-Bz67ApRP.js.map +1 -0
  49. package/lib/_chunks/{validateAction-NIrqtyYJ.js → validateAction-shi462sq.js} +27 -75
  50. package/lib/_chunks/validateAction-shi462sq.js.map +1 -0
  51. package/lib/_internal/cli/threads/getGraphQLAPIs.js +2 -2
  52. package/lib/_internal/cli/threads/getGraphQLAPIs.js.map +1 -1
  53. package/lib/_internal/cli/threads/validateDocuments.js +5 -3
  54. package/lib/_internal/cli/threads/validateDocuments.js.map +1 -1
  55. package/lib/_internal/cli/threads/validateSchema.js +55 -0
  56. package/lib/_internal/cli/threads/validateSchema.js.map +1 -0
  57. package/lib/_internal.esm.js +1 -1
  58. package/lib/_internal.js +1 -1
  59. package/lib/_internalBrowser.esm.js +1 -1
  60. package/lib/_internalBrowser.js +1 -1
  61. package/lib/desk.esm.js +1 -1
  62. package/lib/desk.js +1 -1
  63. package/lib/exports/index.d.ts +25 -0
  64. package/lib/index.cjs.mjs +1 -0
  65. package/lib/index.esm.js +2 -2
  66. package/lib/index.js +2 -1
  67. package/lib/index.js.map +1 -1
  68. package/lib/structure.esm.js +1 -1
  69. package/lib/structure.js +1 -1
  70. package/package.json +15 -15
  71. package/src/_internal/cli/actions/schema/formatSchemaValidation.ts +96 -0
  72. package/src/_internal/cli/actions/schema/validateAction.ts +120 -0
  73. package/src/_internal/cli/actions/validation/reporters/prettyReporter/formatDocumentValidation.ts +17 -95
  74. package/src/_internal/cli/commands/index.ts +2 -0
  75. package/src/_internal/cli/commands/migration/createMigrationCommand.ts +18 -10
  76. package/src/_internal/cli/commands/migration/listMigrationsCommand.ts +34 -31
  77. package/src/_internal/cli/commands/migration/prettyMutationFormatter.ts +214 -0
  78. package/src/_internal/cli/commands/migration/runMigrationCommand.ts +102 -58
  79. package/src/_internal/cli/commands/migration/templates/minimalAdvanced.ts +1 -1
  80. package/src/_internal/cli/commands/migration/templates/minimalSimple.ts +1 -1
  81. package/src/_internal/cli/commands/migration/templates/renameField.ts +3 -3
  82. package/src/_internal/cli/commands/migration/templates/renameType.ts +1 -1
  83. package/src/_internal/cli/commands/migration/templates/stringToPTE.ts +1 -1
  84. package/src/_internal/cli/commands/migration/utils/mutationFormatter.ts +1 -1
  85. package/src/_internal/cli/commands/schema/validateSchemaCommand.ts +35 -0
  86. package/src/_internal/cli/threads/getGraphQLAPIs.ts +2 -2
  87. package/src/_internal/cli/threads/validateDocuments.ts +6 -3
  88. package/src/_internal/cli/threads/validateSchema.ts +73 -0
  89. package/src/_internal/cli/util/{getStudioConfig.ts → getStudioWorkspaces.ts} +30 -8
  90. package/src/_internal/cli/util/tree.ts +110 -0
  91. package/src/core/config/index.ts +1 -0
  92. package/src/core/config/prepareConfig.ts +2 -5
  93. package/src/core/config/resolveSchemaTypes.ts +29 -0
  94. package/src/core/studio/screens/schemaErrors/SchemaProblemGroups.tsx +4 -2
  95. package/src/structure/comments/src/components/pte/blocks/MentionInlineBlock.tsx +13 -6
  96. package/lib/_chunks/_internal-2CJ5wSKF.js.map +0 -1
  97. package/lib/_chunks/_internal-79flWvL8.js.map +0 -1
  98. package/lib/_chunks/_internalBrowser-QAFz3SKp.js.map +0 -1
  99. package/lib/_chunks/_internalBrowser-Y0qKZ-GA.js.map +0 -1
  100. package/lib/_chunks/getStudioConfig-JSkc4GE0.js.map +0 -1
  101. package/lib/_chunks/pane-QmJb9ZTN.js +0 -2
  102. package/lib/_chunks/pane-QmJb9ZTN.js.map +0 -1
  103. package/lib/_chunks/pane-SK7FWNTJ.js +0 -2
  104. package/lib/_chunks/pane-SK7FWNTJ.js.map +0 -1
  105. package/lib/_chunks/pane-y4hpcKe1.js +0 -5
  106. package/lib/_chunks/pane-y4hpcKe1.js.map +0 -1
  107. package/lib/_chunks/pane-yQXBQyyI.js +0 -5
  108. package/lib/_chunks/pane-yQXBQyyI.js.map +0 -1
  109. package/lib/_chunks/structure-588eAwLd.js.map +0 -1
  110. package/lib/_chunks/structure-qJLnDJXq.js.map +0 -1
  111. package/lib/_chunks/validateAction-GUvMkXiN.js.map +0 -1
  112. package/lib/_chunks/validateAction-NIrqtyYJ.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index-Xs2xnLUV.js","sources":["../../src/structure/components/paneRouter/PaneRouterProvider.tsx","../../src/structure/structureResolvers/PaneResolutionError.ts","../../src/structure/structureResolvers/assignId.ts","../../src/structure/structureResolvers/memoBind.ts","../../src/structure/structureResolvers/createPaneResolver.ts","../../src/structure/structureResolvers/resolveIntent.ts","../../src/structure/structureResolvers/createResolvedPaneNodeStream.ts","../../src/structure/structureResolvers/useResolvedPanes.ts","../../src/structure/components/structureTool/intentResolver/utils.ts","../../src/structure/components/structureTool/intentResolver/IntentResolver.tsx","../../src/structure/components/structureTool/StructureError.tsx","../../src/structure/panes/unknown/UnknownPaneType.tsx","../../src/structure/panes/StructureToolPane.tsx","../../src/structure/components/structureTool/NoDocumentTypesScreen.tsx","../../src/structure/components/structureTool/StructureTitle.tsx","../../src/structure/components/structureTool/StructureTool.tsx","../../src/structure/components/structureTool/StructureToolBoundary.tsx"],"sourcesContent":["import {omit} from 'lodash'\nimport React, {useCallback, useMemo} from 'react'\nimport {toString as pathToString} from '@sanity/util/paths'\nimport {RouterPaneGroup, RouterPanes, RouterPaneSibling} from '../../types'\nimport {usePaneLayout} from '../pane/usePaneLayout'\nimport {ChildLink} from './ChildLink'\nimport {BackLink} from './BackLink'\nimport {ReferenceChildLink} from './ReferenceChildLink'\nimport {PaneRouterContext} from './PaneRouterContext'\nimport {ParameterizedLink} from './ParameterizedLink'\nimport {PaneRouterContextValue} from './types'\nimport {useRouter, useRouterState} from 'sanity/router'\n\nconst emptyArray: never[] = []\n\n/**\n * @internal\n */\nexport function PaneRouterProvider(props: {\n children: React.ReactNode\n flatIndex: number\n index: number\n params: Record<string, string | undefined>\n payload: unknown\n siblingIndex: number\n}) {\n const {children, flatIndex, index, params, payload, siblingIndex} = props\n const {navigate, navigateIntent, resolvePathFromState} = useRouter()\n const routerState = useRouterState()\n const {panes, expand} = usePaneLayout()\n const routerPaneGroups: RouterPaneGroup[] = useMemo(\n () => (routerState?.panes || emptyArray) as RouterPanes,\n [routerState?.panes],\n )\n const lastPane = useMemo(() => panes?.[panes.length - 2], [panes])\n\n const groupIndex = index - 1\n\n const createNextRouterState = useCallback(\n (modifier: (siblings: RouterPaneGroup, item: RouterPaneSibling) => RouterPaneGroup) => {\n const currentGroup = routerPaneGroups[groupIndex] || []\n const currentItem = currentGroup[siblingIndex]\n const nextGroup = modifier(currentGroup, currentItem)\n const nextPanes = [\n ...routerPaneGroups.slice(0, groupIndex),\n nextGroup,\n ...routerPaneGroups.slice(groupIndex + 1),\n ]\n const nextRouterState = {...(routerState || {}), panes: nextPanes}\n\n return nextRouterState\n },\n [groupIndex, routerPaneGroups, routerState, siblingIndex],\n )\n\n const modifyCurrentGroup = useCallback(\n (modifier: (siblings: RouterPaneGroup, item: RouterPaneSibling) => RouterPaneGroup) => {\n const nextRouterState = createNextRouterState(modifier)\n setTimeout(() => navigate(nextRouterState), 0)\n return nextRouterState\n },\n [createNextRouterState, navigate],\n )\n\n const createPathWithParams: PaneRouterContextValue['createPathWithParams'] = useCallback(\n (nextParams) => {\n const nextRouterState = createNextRouterState((siblings, item) => [\n ...siblings.slice(0, siblingIndex),\n {...item, params: nextParams},\n ...siblings.slice(siblingIndex + 1),\n ])\n\n return resolvePathFromState(nextRouterState)\n },\n [createNextRouterState, resolvePathFromState, siblingIndex],\n )\n\n const setPayload: PaneRouterContextValue['setPayload'] = useCallback(\n (nextPayload) => {\n modifyCurrentGroup((siblings, item) => [\n ...siblings.slice(0, siblingIndex),\n {...item, payload: nextPayload},\n ...siblings.slice(siblingIndex + 1),\n ])\n },\n [modifyCurrentGroup, siblingIndex],\n )\n\n const setParams: PaneRouterContextValue['setParams'] = useCallback(\n (nextParams) => {\n modifyCurrentGroup((siblings, item) => [\n ...siblings.slice(0, siblingIndex),\n {...item, params: nextParams},\n ...siblings.slice(siblingIndex + 1),\n ])\n },\n [modifyCurrentGroup, siblingIndex],\n )\n\n const handleEditReference: PaneRouterContextValue['handleEditReference'] = useCallback(\n ({id, parentRefPath, type, template}) => {\n navigate({\n panes: [\n ...routerPaneGroups.slice(0, groupIndex + 1),\n [\n {\n id,\n params: {template: template.id, parentRefPath: pathToString(parentRefPath), type},\n payload: template.params,\n },\n ],\n ],\n })\n },\n [groupIndex, navigate, routerPaneGroups],\n )\n\n const ctx: PaneRouterContextValue = useMemo(\n () => ({\n // Zero-based index (position) of pane, visually\n index: flatIndex,\n\n // Zero-based index of pane group (within URL structure)\n groupIndex,\n\n // Zero-based index of pane within sibling group\n siblingIndex,\n\n // Payload of the current pane\n payload,\n\n // Params of the current pane\n params,\n\n // Whether or not the pane has any siblings (within the same group)\n hasGroupSiblings: routerPaneGroups[groupIndex]\n ? routerPaneGroups[groupIndex].length > 1\n : false,\n\n // The length of the current group\n groupLength: routerPaneGroups[groupIndex] ? routerPaneGroups[groupIndex].length : 0,\n\n // Current router state for the \"panes\" property\n routerPanesState: routerPaneGroups,\n\n // Curried StateLink that passes the correct state automatically\n ChildLink,\n\n // Curried StateLink that pops off the last pane group\n BackLink,\n\n // A specialized `ChildLink` that takes in the needed props to open a\n // referenced document to the right\n ReferenceChildLink,\n\n // Similar to `ReferenceChildLink` expect without the wrapping component\n handleEditReference,\n\n // Curried StateLink that passed the correct state, but merges params/payload\n ParameterizedLink,\n\n // Replaces the current pane with a new one\n replaceCurrent: (opts = {}): void => {\n modifyCurrentGroup(() => [\n {id: opts.id || '', payload: opts.payload, params: opts.params || {}},\n ])\n },\n\n // Removes the current pane from the group\n closeCurrent: (): void => {\n modifyCurrentGroup((siblings, item) =>\n siblings.length > 1 ? siblings.filter((sibling) => sibling !== item) : siblings,\n )\n },\n\n // Removes all panes to the right including current\n closeCurrentAndAfter: (expandLast = true): void => {\n if (expandLast && lastPane) {\n expand(lastPane.element)\n }\n navigate(\n {\n panes: [...routerPaneGroups.slice(0, groupIndex)],\n },\n {replace: true},\n )\n },\n\n // Duplicate the current pane, with optional overrides for payload, parameters\n duplicateCurrent: (options): void => {\n modifyCurrentGroup((siblings, item) => {\n const duplicatedItem = {\n ...item,\n payload: options?.payload || item.payload,\n params: options?.params || item.params,\n }\n\n return [\n ...siblings.slice(0, siblingIndex),\n duplicatedItem,\n ...siblings.slice(siblingIndex),\n ]\n })\n },\n\n // Set the view for the current pane\n setView: (viewId) => {\n const restParams = omit(params, 'view')\n return setParams(viewId ? {...restParams, view: viewId} : restParams)\n },\n\n // Set the parameters for the current pane\n setParams,\n\n // Set the payload for the current pane\n setPayload,\n\n // A function that returns a path with the given parameters\n createPathWithParams,\n\n // Proxied navigation to a given intent. Consider just exposing `router` instead?\n navigateIntent,\n }),\n [\n flatIndex,\n groupIndex,\n siblingIndex,\n payload,\n params,\n routerPaneGroups,\n handleEditReference,\n setParams,\n setPayload,\n createPathWithParams,\n navigateIntent,\n modifyCurrentGroup,\n lastPane,\n navigate,\n expand,\n ],\n )\n\n return <PaneRouterContext.Provider value={ctx}>{children}</PaneRouterContext.Provider>\n}\n","import {RouterPaneSiblingContext} from '../types'\n\nexport interface PaneResolutionErrorOptions {\n message: string\n context?: RouterPaneSiblingContext\n helpId?: string\n cause?: Error\n}\n\n/**\n * An error thrown during pane resolving. This error is meant to be bubbled up\n * through react and handled in an error boundary. It includes a `cause`\n * property which is the original error caught\n */\nexport class PaneResolutionError extends Error {\n cause: Error | undefined\n context: RouterPaneSiblingContext | undefined\n helpId: string | undefined\n\n constructor({message, context, helpId, cause}: PaneResolutionErrorOptions) {\n super(message)\n this.context = context\n this.helpId = helpId\n this.cause = cause\n }\n}\n","import {nanoid} from 'nanoid'\n\n// `WeakMap`s require the first type param to extend `object`\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst randomIdCache = new WeakMap<object, string>()\n\n/**\n * given an object, this function randomly generates an ID and returns it. this\n * result is then saved in a WeakMap so subsequent requests for the same object\n * will receive the same ID\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assignId(obj: object): string {\n const cachedValue = randomIdCache.get(obj)\n if (cachedValue) return cachedValue\n\n const id = nanoid()\n randomIdCache.set(obj, id)\n return id\n}\n","/* eslint-disable @typescript-eslint/ban-types */\n\n// `WeakMap`s require the first type param to extend `object`\nconst bindCache = new WeakMap<object, Map<string, Function>>()\n\n/**\n * An alternative to `obj.method.bind(obj)` that utilizes a weakmap to return\n * the same memory reference for sequent binds.\n */\nexport function memoBind<\n T extends object,\n K extends keyof {[P in keyof T]: T[P] extends Function ? T[P] : never},\n>(obj: T, methodKey: K): T[K]\nexport function memoBind(obj: Record<string, unknown>, methodKey: string): Function {\n const boundMethods = bindCache.get(obj) || new Map<string, Function>()\n if (boundMethods) {\n const bound = boundMethods.get(methodKey)\n if (bound) return bound\n }\n\n const method = obj[methodKey]\n\n if (typeof method !== 'function') {\n throw new Error(\n `Expected property \\`${methodKey}\\` to be a function but got ${typeof method} instead.`,\n )\n }\n\n const bound = method.bind(obj)\n boundMethods.set(methodKey, bound)\n bindCache.set(obj, boundMethods)\n\n return bound\n}\n","import {from, isObservable, Observable, of as observableOf, Subscribable} from 'rxjs'\n\nimport {publishReplay, refCount, switchMap} from 'rxjs/operators'\n\nimport {PaneNode, RouterPaneSiblingContext, UnresolvedPaneNode} from '../types'\nimport {PaneResolutionError} from './PaneResolutionError'\nimport {isRecord} from 'sanity'\n\ninterface Serializable {\n serialize: (...args: never[]) => unknown\n}\n\nconst isPromise = (thing: any): thing is PromiseLike<unknown> => {\n return !!thing && typeof thing?.then === 'function'\n}\nconst isSerializable = (thing: unknown): thing is Serializable => {\n if (!isRecord(thing)) return false\n return typeof thing.serialize === 'function'\n}\n\n/**\n * The signature of the function used to take an `UnresolvedPaneNode` and turn\n * it into an `Observable<PaneNode>`.\n */\nexport type PaneResolver = (\n unresolvedPane: UnresolvedPaneNode | undefined,\n context: RouterPaneSiblingContext,\n flatIndex: number,\n) => Observable<PaneNode>\n\nexport type PaneResolverMiddleware = (paneResolveFn: PaneResolver) => PaneResolver\n\nconst rethrowWithPaneResolutionErrors: PaneResolverMiddleware =\n (next) => (unresolvedPane, context, flatIndex) => {\n try {\n return next(unresolvedPane, context, flatIndex)\n } catch (e) {\n // re-throw errors that are already `PaneResolutionError`s\n if (e instanceof PaneResolutionError) {\n throw e\n }\n\n // anything else, wrap with `PaneResolutionError` and set the underlying\n // error as a the `cause`\n throw new PaneResolutionError({\n message: typeof e?.message === 'string' ? e.message : '',\n context,\n cause: e,\n })\n }\n }\n\nconst wrapWithPublishReplay: PaneResolverMiddleware =\n (next) =>\n (...args) => {\n return next(...args).pipe(\n // need to add publishReplay + refCount to ensure new subscribers always\n // get an emission. without this, memoized observables may get stuck\n // waiting for their first emissions resulting in a loading pane\n publishReplay(1),\n refCount(),\n )\n }\n\nexport function createPaneResolver(middleware: PaneResolverMiddleware): PaneResolver {\n // note: this API includes a middleware/wrapper function because the function\n // is recursive. we want to call the wrapped version of the function always\n // (even inside of nested calls) so the identifier invoked for the recursion\n // should be the wrapped version\n const resolvePane = rethrowWithPaneResolutionErrors(\n wrapWithPublishReplay(\n middleware((unresolvedPane, context, flatIndex) => {\n if (!unresolvedPane) {\n throw new PaneResolutionError({\n message: 'Pane returned no child',\n context,\n helpId: 'structure-item-returned-no-child',\n })\n }\n\n if (isPromise(unresolvedPane) || isObservable(unresolvedPane)) {\n return from(unresolvedPane).pipe(\n switchMap((result) => resolvePane(result, context, flatIndex)),\n )\n }\n\n if (isSerializable(unresolvedPane)) {\n return resolvePane(unresolvedPane.serialize(context), context, flatIndex)\n }\n\n if (typeof unresolvedPane === 'function') {\n return resolvePane(unresolvedPane(context.id, context), context, flatIndex)\n }\n\n return observableOf(unresolvedPane)\n }),\n ),\n )\n\n return resolvePane\n}\n","import {omit} from 'lodash'\nimport {firstValueFrom, Observable} from 'rxjs'\nimport {PaneNode, RouterPanes, RouterPaneSiblingContext, UnresolvedPaneNode} from '../types'\nimport {StructureContext} from '../structureBuilder'\nimport {assignId} from './assignId'\nimport {memoBind} from './memoBind'\nimport {createPaneResolver, PaneResolverMiddleware} from './createPaneResolver'\n\ninterface TraverseOptions {\n unresolvedPane: UnresolvedPaneNode | undefined\n intent: string\n params: {type: string; id: string; [key: string]: string | undefined}\n payload: unknown\n parent: PaneNode | null\n path: string[]\n currentId: string\n flatIndex: number\n levelIndex: number\n structureContext: StructureContext\n}\n\nexport interface ResolveIntentOptions {\n rootPaneNode?: UnresolvedPaneNode\n intent: string\n params: {type: string; id: string; [key: string]: string | undefined}\n payload: unknown\n structureContext: StructureContext\n}\n\n/**\n * Resolves an intent request using breadth first search. If a match is not\n * found, the intent will resolve to the fallback editor.\n *\n * A match is found if:\n * 1. the `PaneNode` is of type `document` and the its ID matches the intent ID\n * 2. the `PaneNode` is of type `documentList` and the `schemaTypeName` matches\n * 3. the `PaneNode`'s `canHandleIntent` method returns true\n *\n * If a `PaneNode` of type `list` is found, it will be searched for a match.\n *\n * @see PaneNode\n */\nexport async function resolveIntent(options: ResolveIntentOptions): Promise<RouterPanes> {\n const resolvedPaneCache = new Map<string, Observable<PaneNode>>()\n\n // this is a simple version of the memoizer in `createResolvedPaneNodeStream`\n const memoize: PaneResolverMiddleware = (nextFn) => (unresolvedPane, context, flatIndex) => {\n const key = unresolvedPane && `${assignId(unresolvedPane)}-${context.path.join('__')}`\n const cachedResolvedPane = key && resolvedPaneCache.get(key)\n if (cachedResolvedPane) return cachedResolvedPane\n\n const result = nextFn(unresolvedPane, context, flatIndex)\n if (key) resolvedPaneCache.set(key, result)\n return result\n }\n\n const resolvePane = createPaneResolver(memoize)\n\n const fallbackEditorPanes: RouterPanes = [\n [\n {\n id: `__edit__${options.params.id}`,\n params: {...omit(options.params, ['id']), type: options.params.type},\n payload: options.payload,\n },\n ],\n ]\n\n async function traverse({\n currentId,\n flatIndex,\n intent,\n params,\n parent,\n path,\n payload,\n unresolvedPane,\n levelIndex,\n structureContext,\n }: TraverseOptions): Promise<\n Array<{panes: RouterPanes; depthIndex: number; levelIndex: number}>\n > {\n if (!unresolvedPane) return []\n\n const {id: targetId, type: schemaTypeName, ...otherParams} = params\n const context: RouterPaneSiblingContext = {\n id: currentId,\n splitIndex: 0,\n parent,\n path,\n index: flatIndex,\n params: {},\n payload: undefined,\n structureContext,\n }\n const resolvedPane = await firstValueFrom(resolvePane(unresolvedPane, context, flatIndex))\n\n // if the resolved pane is a document pane and the pane's ID matches then\n // resolve the intent to the current path\n if (resolvedPane.type === 'document' && resolvedPane.id === targetId) {\n return [\n {\n panes: [\n ...path.slice(0, path.length - 1).map((i) => [{id: i}]),\n [{id: targetId, params: otherParams, payload}],\n ],\n depthIndex: path.length,\n levelIndex,\n },\n ]\n }\n\n // NOTE: if you update this logic, please also update the similar handler in\n // `getIntentState.ts`\n if (\n // if the resolve pane's `canHandleIntent` returns true, then resolve\n resolvedPane.canHandleIntent?.(intent, params, {\n pane: resolvedPane,\n index: flatIndex,\n }) ||\n // if the pane's `canHandleIntent` did not return true, then match against\n // this default case. we will resolve the intent if:\n (resolvedPane.type === 'documentList' &&\n // 1. the schema type matches (this required for the document to render)\n resolvedPane.schemaTypeName === schemaTypeName &&\n // 2. the filter is the default filter.\n //\n // NOTE: this case is to prevent false positive matches where the user\n // has configured a more specific filter for a particular type. In that\n // case, the user can implement their own `canHandleIntent` function\n resolvedPane.options.filter === '_type == $type')\n ) {\n return [\n {\n panes: [\n // map the current path to router panes\n ...path.map((id) => [{id}]),\n // then augment with the intents IDs and params\n [{id: params.id, params: otherParams, payload}],\n ],\n depthIndex: path.length,\n levelIndex,\n },\n ]\n }\n\n if (resolvedPane.type === 'list' && resolvedPane.child && resolvedPane.items) {\n return (\n await Promise.all(\n resolvedPane.items.map((item, nextLevelIndex) => {\n if (item.type === 'divider') return Promise.resolve([])\n\n return traverse({\n currentId: item._id || item.id,\n flatIndex: flatIndex + 1,\n intent,\n params,\n parent: resolvedPane,\n path: [...path, item.id],\n payload,\n unresolvedPane:\n typeof resolvedPane.child === 'function'\n ? memoBind(resolvedPane, 'child')\n : resolvedPane.child,\n levelIndex: nextLevelIndex,\n structureContext,\n })\n }),\n )\n ).flat()\n }\n\n return []\n }\n\n const matchingPanes = await traverse({\n currentId: 'root',\n flatIndex: 0,\n levelIndex: 0,\n intent: options.intent,\n params: options.params,\n parent: null,\n path: [],\n payload: options.payload,\n unresolvedPane: options.rootPaneNode,\n structureContext: options.structureContext,\n })\n\n const closestPaneToRoot = matchingPanes.sort((a, b) => {\n // break ties with the level index\n if (a.depthIndex === b.depthIndex) return a.levelIndex - b.levelIndex\n return a.depthIndex - b.depthIndex\n })[0]\n\n if (closestPaneToRoot) {\n return closestPaneToRoot.panes\n }\n\n return fallbackEditorPanes\n}\n","import {generateHelpUrl} from '@sanity/generate-help-url'\nimport {isEqual} from 'lodash'\nimport {Observable, NEVER, of as observableOf, concat} from 'rxjs'\nimport {switchMap, map, scan, distinctUntilChanged, pairwise, startWith} from 'rxjs/operators'\nimport {\n DocumentPaneNode,\n PaneNode,\n RouterPaneSiblingContext,\n RouterPanes,\n RouterPaneSibling,\n PaneNodeResolver,\n UnresolvedPaneNode,\n} from '../types'\nimport {StructureContext} from '../structureBuilder'\nimport {assignId} from './assignId'\nimport {createPaneResolver, PaneResolver, PaneResolverMiddleware} from './createPaneResolver'\nimport {memoBind} from './memoBind'\nimport {PaneResolutionError} from './PaneResolutionError'\n\n/**\n * the fallback editor child that is implicitly inserted into the structure tree\n * if the id starts with `__edit__`\n */\nconst fallbackEditorChild: PaneNodeResolver = (nodeId, context): DocumentPaneNode => {\n const id = nodeId.replace(/^__edit__/, '')\n const {\n params,\n payload,\n structureContext: {resolveDocumentNode},\n } = context\n const {type, template} = params\n\n if (!type) {\n throw new Error(\n `Document type for document with ID ${id} was not provided in the router params.`,\n )\n }\n\n let defaultDocumentBuilder = resolveDocumentNode({schemaType: type, documentId: id}).id('editor')\n\n if (template) {\n defaultDocumentBuilder = defaultDocumentBuilder.initialValueTemplate(\n template,\n payload as {[key: string]: unknown},\n )\n }\n\n return defaultDocumentBuilder.serialize() as DocumentPaneNode\n}\n\n/**\n * takes in a `RouterPaneSiblingContext` and returns a normalized string\n * representation that can be used for comparisons\n */\nfunction hashContext(context: RouterPaneSiblingContext): string {\n return `contextHash(${JSON.stringify({\n id: context.id,\n parentId: parent && assignId(parent),\n path: context.path,\n index: context.index,\n splitIndex: context.splitIndex,\n serializeOptionsIndex: context.serializeOptions?.index,\n serializeOptionsPath: context.serializeOptions?.path,\n })})`\n}\n\n/**\n * takes in `ResolvedPaneMeta` and returns a normalized string representation\n * that can be used for comparisons\n */\nconst hashResolvedPaneMeta = (meta: ResolvedPaneMeta): string => {\n const normalized = {\n type: meta.type,\n id: meta.routerPaneSibling.id,\n params: meta.routerPaneSibling.params || {},\n payload: meta.routerPaneSibling.payload || null,\n flatIndex: meta.flatIndex,\n groupIndex: meta.groupIndex,\n siblingIndex: meta.siblingIndex,\n path: meta.path,\n paneNode: meta.type === 'resolvedMeta' ? assignId(meta.paneNode) : null,\n }\n\n return `metaHash(${JSON.stringify(normalized)})`\n}\n\n/**\n * Represents one flattened \"router pane\", including the source group and\n * sibling indexes.\n *\n * @see RouterPanes\n */\ninterface FlattenedRouterPane {\n routerPaneSibling: RouterPaneSibling\n flatIndex: number\n groupIndex: number\n siblingIndex: number\n}\n\n/**\n * The state of the accumulator used to store and manage memo cache state\n */\ninterface CacheState {\n /**\n * Holds the memoization results keyed by a combination of `assignId` and a\n * context hash.\n */\n resolvedPaneCache: Map<string, Observable<PaneNode>>\n /**\n * Acts as a dictionary that stores cache keys by their flat index. This is\n * used to clean up the cache between different branches in the pane\n * structure.\n *\n * @see createResolvedPaneNodeStream look inside the `scan` where `wrapFn` is\n * defined\n */\n cacheKeysByFlatIndex: Array<Set<string>>\n /**\n * The resulting memoized `PaneResolver` function. This function closes over\n * the `resolvedPaneCache`.\n */\n resolvePane: PaneResolver\n flattenedRouterPanes: FlattenedRouterPane[]\n}\n\nexport interface CreateResolvedPaneNodeStreamOptions {\n /**\n * an input stream of `RouterPanes`\n * @see RouterPanes\n */\n routerPanesStream: Observable<RouterPanes>\n /**\n * any `UnresolvedPaneNode` (could be an observable, promise, pane resolver etc)\n */\n rootPaneNode: UnresolvedPaneNode\n /** used primarily for testing */\n initialCacheState?: CacheState\n\n structureContext: StructureContext\n}\n\n/**\n * The result of pane resolving\n */\nexport type ResolvedPaneMeta = {\n groupIndex: number\n siblingIndex: number\n flatIndex: number\n routerPaneSibling: RouterPaneSibling\n path: string[]\n} & ({type: 'loading'; paneNode: null} | {type: 'resolvedMeta'; paneNode: PaneNode})\n\ninterface ResolvePaneTreeOptions {\n resolvePane: PaneResolver\n flattenedRouterPanes: FlattenedRouterPane[]\n unresolvedPane: UnresolvedPaneNode | undefined\n parent: PaneNode | null\n path: string[]\n structureContext: StructureContext\n}\n\n/**\n * A recursive pane resolving function. Starts at one unresolved pane node and\n * continues until there is no more flattened router panes that can be used as\n * input to the unresolved panes.\n */\nfunction resolvePaneTree({\n unresolvedPane,\n flattenedRouterPanes,\n parent,\n path,\n resolvePane,\n structureContext,\n}: ResolvePaneTreeOptions): Observable<ResolvedPaneMeta[]> {\n const [current, ...rest] = flattenedRouterPanes\n const next = rest[0] as FlattenedRouterPane | undefined\n\n const context: RouterPaneSiblingContext = {\n id: current.routerPaneSibling.id,\n splitIndex: current.siblingIndex,\n parent,\n path: [...path, current.routerPaneSibling.id],\n index: current.flatIndex,\n params: current.routerPaneSibling.params || {},\n payload: current.routerPaneSibling.payload,\n structureContext,\n }\n\n try {\n return resolvePane(unresolvedPane, context, current.flatIndex).pipe(\n // this switch map receives a resolved pane\n switchMap((paneNode) => {\n // we can create a `resolvedMeta` type using it\n const resolvedPaneMeta: ResolvedPaneMeta = {\n type: 'resolvedMeta',\n ...current,\n paneNode: paneNode,\n path: context.path,\n }\n\n // for the other unresolved panes, we can create \"loading panes\"\n const loadingPanes = rest.map((i, restIndex) => {\n const loadingPanePath = [\n ...context.path,\n ...rest.slice(restIndex).map((_, currentIndex) => `[${i.flatIndex + currentIndex}]`),\n ]\n\n const loadingPane: ResolvedPaneMeta = {\n type: 'loading',\n path: loadingPanePath,\n paneNode: null,\n ...i,\n }\n\n return loadingPane\n })\n\n if (!rest.length) {\n return observableOf([resolvedPaneMeta])\n }\n\n let nextStream\n\n if (\n // the fallback editor case\n next?.routerPaneSibling.id.startsWith('__edit__')\n ) {\n nextStream = resolvePaneTree({\n unresolvedPane: fallbackEditorChild,\n flattenedRouterPanes: rest,\n parent,\n path: context.path,\n resolvePane,\n structureContext,\n })\n } else if (current.groupIndex === next?.groupIndex) {\n // if the next flattened router pane has the same group index as the\n // current flattened router pane, then the next flattened router pane\n // belongs to the same group (i.e. it is a split pane)\n nextStream = resolvePaneTree({\n unresolvedPane,\n flattenedRouterPanes: rest,\n parent,\n path,\n resolvePane,\n structureContext,\n })\n } else {\n // normal children resolving\n nextStream = resolvePaneTree({\n unresolvedPane:\n typeof paneNode.child === 'function'\n ? (memoBind(paneNode, 'child') as PaneNodeResolver)\n : paneNode.child,\n flattenedRouterPanes: rest,\n parent: paneNode,\n path: context.path,\n resolvePane,\n structureContext,\n })\n }\n\n return concat(\n // we emit the loading panes first in a concat (this emits immediately)\n observableOf([resolvedPaneMeta, ...loadingPanes]),\n // then whenever the next stream is done, the results will be combined.\n nextStream.pipe(map((nextResolvedPanes) => [resolvedPaneMeta, ...nextResolvedPanes])),\n )\n }),\n )\n } catch (e) {\n if (e instanceof PaneResolutionError) {\n if (e.context) {\n console.warn(\n `Pane resolution error at index ${e.context.index}${\n e.context.splitIndex > 0 ? ` for split pane index ${e.context.splitIndex}` : ''\n }: ${e.message}${e.helpId ? ` - see ${generateHelpUrl(e.helpId)}` : ''}`,\n e,\n )\n }\n\n if (e.helpId === 'structure-item-returned-no-child') {\n // returning an observable of an empty array will remove loading panes\n // note: this one intentionally does not throw\n return observableOf([])\n }\n }\n\n throw e\n }\n}\n\n/**\n * Takes in a stream of `RouterPanes` and an unresolved root pane and returns\n * a stream of `ResolvedPaneMeta`\n */\nexport function createResolvedPaneNodeStream({\n routerPanesStream,\n rootPaneNode,\n initialCacheState = {\n cacheKeysByFlatIndex: [],\n flattenedRouterPanes: [],\n resolvedPaneCache: new Map(),\n resolvePane: () => NEVER,\n },\n structureContext,\n}: CreateResolvedPaneNodeStreamOptions): Observable<ResolvedPaneMeta[]> {\n const resolvedPanes$ = routerPanesStream.pipe(\n // add in implicit \"root\" router pane\n map((rawRouterPanes) => [[{id: 'root'}], ...rawRouterPanes]),\n // create flattened router panes\n map((routerPanes) => {\n const flattenedRouterPanes: FlattenedRouterPane[] = routerPanes\n .flatMap((routerPaneGroup, groupIndex) =>\n routerPaneGroup.map((routerPaneSibling, siblingIndex) => ({\n routerPaneSibling,\n groupIndex,\n siblingIndex,\n })),\n )\n // add in the flat index\n .map((i, index) => ({...i, flatIndex: index}))\n\n return flattenedRouterPanes\n }),\n // calculate a \"diffIndex\" used for clearing the memo cache\n startWith([] as FlattenedRouterPane[]),\n pairwise(),\n map(([prev, curr]) => {\n for (let i = 0; i < curr.length; i++) {\n const prevValue = prev[i]\n const currValue = curr[i]\n\n if (!isEqual(prevValue, currValue)) {\n return {\n flattenedRouterPanes: curr,\n diffIndex: i,\n }\n }\n }\n\n return {\n flattenedRouterPanes: curr,\n diffIndex: curr.length,\n }\n }),\n // create the memoized `resolvePane` function and manage the memo cache\n scan((acc, next) => {\n const {cacheKeysByFlatIndex, resolvedPaneCache} = acc\n const {flattenedRouterPanes, diffIndex} = next\n\n // use the `cacheKeysByFlatIndex` like a dictionary to find cache keys to\n // and cache keys to delete\n const beforeDiffIndex = cacheKeysByFlatIndex.slice(0, diffIndex + 1)\n const afterDiffIndex = cacheKeysByFlatIndex.slice(diffIndex + 1)\n\n const keysToKeep = new Set(beforeDiffIndex.flatMap((keySet) => Array.from(keySet)))\n const keysToDelete = afterDiffIndex\n .flatMap((keySet) => Array.from(keySet))\n .filter((key) => !keysToKeep.has(key))\n\n for (const key of keysToDelete) {\n resolvedPaneCache.delete(key)\n }\n\n // create a memoizing pane resolver middleware that utilizes the cache\n // maintained above. this keeps the cache from growing indefinitely\n const memoize: PaneResolverMiddleware = (nextFn) => (unresolvedPane, context, flatIndex) => {\n const key = unresolvedPane && `${assignId(unresolvedPane)}-${hashContext(context)}`\n const cachedResolvedPane = key && resolvedPaneCache.get(key)\n if (cachedResolvedPane) return cachedResolvedPane\n\n const result = nextFn(unresolvedPane, context, flatIndex)\n if (!key) return result\n\n const cacheKeySet = cacheKeysByFlatIndex[flatIndex] || new Set()\n cacheKeySet.add(key)\n cacheKeysByFlatIndex[flatIndex] = cacheKeySet\n resolvedPaneCache.set(key, result)\n return result\n }\n\n return {\n flattenedRouterPanes,\n cacheKeysByFlatIndex,\n resolvedPaneCache,\n resolvePane: createPaneResolver(memoize),\n }\n }, initialCacheState),\n // run the memoized, recursive resolving\n switchMap(({flattenedRouterPanes, resolvePane}) =>\n resolvePaneTree({\n unresolvedPane: rootPaneNode,\n flattenedRouterPanes,\n parent: null,\n path: [],\n resolvePane,\n structureContext,\n }),\n ),\n )\n\n // after we've created a stream of `ResolvedPaneMeta[]`, we need to clean up\n // the results to remove unwanted loading panes and prevent unnecessary\n // emissions\n return resolvedPanes$.pipe(\n // this diffs the previous emission with the current one. if there is a new\n // loading pane at the same position where a previous pane already had a\n // resolved value (looking at the IDs to compare), then return the previous\n // pane instead of the loading pane\n scan(\n (prev, next) =>\n next.map((nextPane, index) => {\n const prevPane = prev[index] as ResolvedPaneMeta | undefined\n if (!prevPane) return nextPane\n if (nextPane.type !== 'loading') return nextPane\n\n if (prevPane.routerPaneSibling.id === nextPane.routerPaneSibling.id) {\n return prevPane\n }\n return nextPane\n }),\n [] as ResolvedPaneMeta[],\n ),\n // this prevents duplicate emissions\n distinctUntilChanged((prev, next) => {\n if (prev.length !== next.length) return false\n\n for (let i = 0; i < next.length; i++) {\n const prevValue = prev[i]\n const nextValue = next[i]\n if (hashResolvedPaneMeta(prevValue) !== hashResolvedPaneMeta(nextValue)) {\n return false\n }\n }\n\n return true\n }),\n )\n}\n","import {useEffect, useMemo, useState} from 'react'\nimport {ReplaySubject} from 'rxjs'\nimport {map} from 'rxjs/operators'\nimport {LOADING_PANE} from '../constants'\nimport {RouterPanes, PaneNode, RouterPaneGroup} from '../types'\nimport {useStructureTool} from '../useStructureTool'\nimport {createResolvedPaneNodeStream} from './createResolvedPaneNodeStream'\nimport {RouterState, useRouter} from 'sanity/router'\n\ninterface PaneData {\n active: boolean\n childItemId: string | null\n groupIndex: number\n index: number\n itemId: string\n key: string\n pane: PaneNode | typeof LOADING_PANE\n params: Record<string, string | undefined>\n path: string\n payload: unknown\n selected: boolean\n siblingIndex: number\n}\n\nexport interface Panes {\n paneDataItems: PaneData[]\n routerPanes: RouterPanes\n resolvedPanes: (PaneNode | typeof LOADING_PANE)[]\n}\n\nfunction useRouterPanesStream() {\n const routerStateSubject = useMemo(() => new ReplaySubject<RouterState>(1), [])\n const routerPanes$ = useMemo(\n () =>\n routerStateSubject\n .asObservable()\n .pipe(map((_routerState) => (_routerState?.panes || []) as RouterPanes)),\n [routerStateSubject],\n )\n const {state: routerState} = useRouter()\n useEffect(() => {\n routerStateSubject.next(routerState)\n }, [routerState, routerStateSubject])\n\n return routerPanes$\n}\n\nexport function useResolvedPanes(): Panes {\n // used to propagate errors from async effect. throwing inside of the render\n // will bubble the error to react where it can be picked up by standard error\n // boundaries\n const [error, setError] = useState<unknown>()\n if (error) throw error\n\n const {structureContext, rootPaneNode} = useStructureTool()\n\n const [data, setData] = useState<Panes>({\n paneDataItems: [],\n resolvedPanes: [],\n routerPanes: [],\n })\n\n const routerPanesStream = useRouterPanesStream()\n\n useEffect(() => {\n const resolvedPanes$ = createResolvedPaneNodeStream({\n rootPaneNode,\n routerPanesStream,\n structureContext,\n }).pipe(\n map((resolvedPanes) => {\n const routerPanes = resolvedPanes.reduce<RouterPanes>((acc, next) => {\n const currentGroup = acc[next.groupIndex] || []\n currentGroup[next.siblingIndex] = next.routerPaneSibling\n acc[next.groupIndex] = currentGroup\n return acc\n }, [])\n\n const groupsLen = routerPanes.length\n\n const paneDataItems = resolvedPanes.map((pane) => {\n const {groupIndex, flatIndex, siblingIndex, routerPaneSibling, path} = pane\n const itemId = routerPaneSibling.id\n const nextGroup = routerPanes[groupIndex + 1] as RouterPaneGroup | undefined\n\n const paneDataItem: PaneData = {\n active: groupIndex === groupsLen - 2,\n childItemId: nextGroup?.[0].id ?? null,\n index: flatIndex,\n itemId: routerPaneSibling.id,\n groupIndex,\n key: `${\n pane.type === 'loading' ? 'unknown' : pane.paneNode.id\n }-${itemId}-${siblingIndex}`,\n pane: pane.type === 'loading' ? LOADING_PANE : pane.paneNode,\n params: routerPaneSibling.params || {},\n path: path.join(';'),\n payload: routerPaneSibling.payload,\n selected: flatIndex === resolvedPanes.length - 1,\n siblingIndex,\n }\n\n return paneDataItem\n })\n\n return {\n paneDataItems,\n routerPanes,\n resolvedPanes: paneDataItems.map((pane) => pane.pane),\n }\n }),\n )\n\n const subscription = resolvedPanes$.subscribe({\n next: (result) => setData(result),\n error: (e) => setError(e),\n })\n\n return () => subscription.unsubscribe()\n }, [rootPaneNode, routerPanesStream, structureContext])\n\n return data\n}\n","import {uuid} from '@sanity/uuid'\nimport {first} from 'rxjs/operators'\nimport {firstValueFrom, Observable} from 'rxjs'\nimport {PaneResolutionError} from '../../../structureResolvers'\nimport {getPublishedId, DocumentStore} from 'sanity'\n\nexport function removeDraftPrefix(documentId: string): string {\n const publishedId = getPublishedId(documentId)\n\n if (publishedId !== documentId) {\n console.warn(\n 'Removed unexpected draft id in document link: All links to documents should have the ' +\n '`drafts.`-prefix removed and something appears to have made an intent link to `%s`',\n documentId,\n )\n }\n\n return publishedId\n}\n\nexport async function ensureDocumentIdAndType(\n documentStore: DocumentStore,\n id: string | undefined,\n type: string | undefined,\n): Promise<{id: string; type: string}> {\n if (id && type) return {id, type}\n if (!id && type) return {id: uuid(), type}\n if (id && !type) {\n const resolvedType = await firstValueFrom(\n documentStore.resolveTypeForDocument(id) as Observable<string>,\n )\n\n return {id, type: resolvedType}\n }\n\n throw new PaneResolutionError({\n message: 'Neither document `id` or `type` was provided when trying to resolve intent.',\n })\n}\n","import {memo, useCallback, useEffect, useState} from 'react'\nimport {resolveIntent} from '../../../structureResolvers'\nimport {useStructureTool} from '../../../useStructureTool'\nimport {ensureDocumentIdAndType} from './utils'\nimport {useRouter, useRouterState} from 'sanity/router'\nimport {isRecord, useDocumentStore} from 'sanity'\n\nconst EMPTY_RECORD: Record<string, unknown> = {}\n\n/**\n * A component that receives an intent from props and redirects to the resolved\n * intent location (while showing a loading spinner during the process)\n */\nexport const IntentResolver = memo(function IntentResolver() {\n const {navigate} = useRouter()\n const maybeIntent = useRouterState(\n useCallback((routerState) => {\n const intentName = typeof routerState.intent === 'string' ? routerState.intent : undefined\n return intentName\n ? {\n intent: intentName,\n params: isRecord(routerState.params) ? routerState.params : EMPTY_RECORD,\n payload: routerState.payload,\n }\n : undefined\n }, []),\n )\n const {rootPaneNode, structureContext} = useStructureTool()\n const documentStore = useDocumentStore()\n const [error, setError] = useState<unknown>(null)\n\n // this re-throws errors so that parent ErrorBoundary's can handle them properly\n if (error) throw error\n\n // eslint-disable-next-line consistent-return\n useEffect(() => {\n if (maybeIntent) {\n const {intent, params, payload} = maybeIntent\n\n let cancelled = false\n // eslint-disable-next-line no-inner-declarations\n async function effect() {\n const {id, type} = await ensureDocumentIdAndType(\n documentStore,\n typeof params.id === 'string' ? params.id : undefined,\n typeof params.type === 'string' ? params.type : undefined,\n )\n\n if (cancelled) return\n\n const panes = await resolveIntent({\n intent,\n params: {...params, id, type},\n payload,\n rootPaneNode,\n structureContext,\n })\n\n if (cancelled) return\n\n navigate({panes}, {replace: true})\n }\n\n effect().catch(setError)\n\n return () => {\n cancelled = true\n }\n }\n }, [documentStore, maybeIntent, navigate, rootPaneNode, structureContext])\n\n return null\n})\n","import {generateHelpUrl} from '@sanity/generate-help-url'\nimport {Box, Card, Code, Container, Heading, Stack, Text} from '@sanity/ui'\nimport React, {useCallback} from 'react'\nimport styled from 'styled-components'\nimport {SyncIcon} from '@sanity/icons'\nimport {Button} from '../../../ui-components'\nimport {SerializeError} from '../../structureBuilder'\nimport {PaneResolutionError} from '../../structureResolvers'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {useTranslation} from 'sanity'\n\nconst PathSegment = styled.span`\n &:not(:last-child)::after {\n content: ' ➝ ';\n opacity: 0.5;\n }\n`\n\nfunction formatStack(stack: string) {\n return (\n stack\n // Prettify builder functions\n .replace(/\\(\\.\\.\\.\\)\\./g, '(...)\\n .')\n // Remove webpack cruft from function names\n .replace(/__WEBPACK_IMPORTED_MODULE_\\d+_+/g, '')\n // Remove default export postfix from function names\n .replace(/___default\\./g, '.')\n // Replace full host path, leave only path to JS-file\n .replace(new RegExp(` \\\\(https?:\\\\/\\\\/${window.location.host}`, 'g'), ' (')\n )\n}\n\ninterface StructureErrorProps {\n error: unknown\n}\n\nexport function StructureError({error}: StructureErrorProps) {\n if (!(error instanceof PaneResolutionError)) {\n throw error\n }\n const {cause} = error\n const {t} = useTranslation(structureLocaleNamespace)\n\n // Serialize errors are well-formatted and should be readable, in these cases a stack trace is\n // usually not helpful. Build errors in dev (with HMR) usually also contains a bunch of garbage\n // instead of an actual error message, so make sure we show the message in these cases as well\n const stack = cause?.stack || error.stack\n const showStack =\n stack && !(cause instanceof SerializeError) && !error.message.includes('Module build failed:')\n\n const path = cause instanceof SerializeError ? cause.path : []\n const helpId = (cause instanceof SerializeError && cause.helpId) || error.helpId\n\n const handleReload = useCallback(() => {\n window.location.reload()\n }, [])\n\n return (\n <Card height=\"fill\" overflow=\"auto\" padding={4} sizing=\"border\" tone=\"critical\">\n <Container>\n <Heading as=\"h2\">{t('structure-error.header.text')}</Heading>\n\n <Card marginTop={4} padding={4} radius={2} overflow=\"auto\" shadow={1} tone=\"inherit\">\n {path.length > 0 && (\n <Stack space={2}>\n <Text size={1} weight=\"medium\">\n {t('structure-error.structure-path.label')}\n </Text>\n <Code>\n {/* TODO: it seems like the path is off by one and includes */}\n {/* `root` twice */}\n {path.slice(1).map((segment, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <PathSegment key={`${segment}-${i}`}>{segment}</PathSegment>\n ))}\n </Code>\n </Stack>\n )}\n\n <Stack marginTop={4} space={2}>\n <Text size={1} weight=\"medium\">\n {t('structure-error.error.label')}\n </Text>\n <Code>{showStack ? formatStack(stack) : error.message}</Code>\n </Stack>\n\n {helpId && (\n <Box marginTop={4}>\n <Text>\n <a href={generateHelpUrl(helpId)} rel=\"noopener noreferrer\" target=\"_blank\">\n {t('structure-error.docs-link.text')}\n </a>\n </Text>\n </Box>\n )}\n\n <Box marginTop={4}>\n <Button\n text={t('structure-error.reload-button.text')}\n icon={SyncIcon}\n tone=\"primary\"\n onClick={handleReload}\n />\n </Box>\n </Card>\n </Container>\n </Card>\n )\n}\n","import {Box, Text} from '@sanity/ui'\nimport React from 'react'\nimport {Pane, PaneContent, PaneHeader} from '../../components/pane'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {isRecord, Translate, useTranslation} from 'sanity'\n\ninterface UnknownPaneProps {\n isSelected: boolean\n pane: unknown\n paneKey: string\n}\n\n/**\n * @internal\n */\nexport function UnknownPane(props: UnknownPaneProps) {\n const {isSelected, pane, paneKey} = props\n const type = (isRecord(pane) && pane.type) || null\n const {t} = useTranslation(structureLocaleNamespace)\n return (\n <Pane id={paneKey} selected={isSelected}>\n <PaneHeader title={t('panes.unknown-pane-type.title')} />\n <PaneContent>\n <Box padding={4}>\n {typeof type === 'string' ? (\n <Text as=\"p\" muted>\n <Translate\n t={t}\n i18nKey=\"panes.unknown-pane-type.unknown-type.text\"\n values={{type}}\n />\n </Text>\n ) : (\n <Text as=\"p\" muted>\n <Translate t={t} i18nKey=\"panes.unknown-pane-type.missing-type.text\" />\n </Text>\n )}\n </Box>\n </PaneContent>\n </Pane>\n )\n}\n","import React, {memo, lazy, Suspense} from 'react'\nimport {isEqual} from 'lodash'\nimport type {PaneNode} from '../types'\nimport {PaneRouterProvider} from '../components/paneRouter'\nimport {UnknownPane} from './unknown'\nimport {LoadingPane} from './loading'\n\ninterface StructureToolPaneProps {\n active: boolean\n childItemId: string | null\n groupIndex: number\n index: number\n itemId: string\n pane: PaneNode\n paneKey: string\n params: Record<string, string | undefined>\n payload: unknown\n path: string\n selected: boolean\n siblingIndex: number\n}\n\n// TODO: audit this creates separate chunks\nconst paneMap = {\n component: lazy(() => import('./userComponent')),\n document: lazy(() => import('./document/pane')),\n documentList: lazy(() => import('./documentList/pane')),\n list: lazy(() => import('./list')),\n}\n\n/**\n * NOTE: The same pane might appear multiple times (split pane), so use index as tiebreaker\n *\n * @internal\n */\nexport const StructureToolPane = memo(\n function StructureToolPane(props: StructureToolPaneProps) {\n const {\n active,\n childItemId,\n groupIndex,\n index,\n itemId,\n pane,\n paneKey,\n params,\n payload,\n path,\n selected,\n siblingIndex,\n } = props\n\n const PaneComponent = paneMap[pane.type] || UnknownPane\n\n return (\n <PaneRouterProvider\n flatIndex={index}\n index={groupIndex}\n params={params}\n payload={payload}\n siblingIndex={siblingIndex}\n >\n <Suspense fallback={<LoadingPane paneKey={paneKey} path={path} selected={selected} />}>\n <PaneComponent\n childItemId={childItemId || ''}\n index={index}\n itemId={itemId}\n isActive={active}\n isSelected={selected}\n paneKey={paneKey}\n // @ts-expect-error TS doesn't know how to handle this intersection\n pane={pane}\n />\n </Suspense>\n </PaneRouterProvider>\n )\n },\n (\n {params: prevParams = {}, payload: prevPayload = null, ...prev},\n {params: nextParams = {}, payload: nextPayload = null, ...next},\n ) => {\n // deeply compare these objects (it's okay, they're small)\n if (!isEqual(prevParams, nextParams)) return false\n if (!isEqual(prevPayload, nextPayload)) return false\n\n const keys = new Set([...Object.keys(prev), ...Object.keys(next)]) as Set<\n keyof typeof next | keyof typeof prev\n >\n\n // then shallow equal the rest\n for (const key of keys) {\n if (prev[key] !== next[key]) return false\n }\n\n return true\n },\n)\n","import {WarningOutlineIcon} from '@sanity/icons'\nimport {Box, Card, Container, Flex, Stack, Text} from '@sanity/ui'\nimport React from 'react'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {useTranslation} from 'sanity'\n\nexport function NoDocumentTypesScreen() {\n const {t} = useTranslation(structureLocaleNamespace)\n\n return (\n <Card height=\"fill\">\n <Flex align=\"center\" height=\"fill\" justify=\"center\" padding={4} sizing=\"border\">\n <Container width={0}>\n <Card padding={4} radius={2} shadow={1} tone=\"caution\">\n <Flex>\n <Box>\n <Text size={1}>\n <WarningOutlineIcon />\n </Text>\n </Box>\n <Stack flex={1} marginLeft={3} space={3}>\n <Text as=\"h1\" size={1} weight=\"medium\">\n {t('no-document-types-screen.title')}\n </Text>\n <Text as=\"p\" muted size={1}>\n {t('no-document-types-screen.subtitle')}\n </Text>\n <Text as=\"p\" muted size={1}>\n <a\n href=\"https://www.sanity.io/docs/create-a-schema-and-configure-sanity-studio\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {t('no-document-types-screen.link-text')}\n </a>\n </Text>\n </Stack>\n </Flex>\n </Card>\n </Container>\n </Flex>\n </Card>\n )\n}\n","import React, {useEffect} from 'react'\nimport type {ObjectSchemaType} from '@sanity/types'\nimport type {Panes} from '../../structureResolvers'\nimport {structureLocaleNamespace} from '../../i18n'\nimport type {DocumentPaneNode} from '../../types'\nimport {useStructureTool} from '../../useStructureTool'\nimport {LOADING_PANE} from '../../constants'\nimport {\n useEditState,\n useSchema,\n useTranslation,\n unstable_useValuePreview as useValuePreview,\n} from 'sanity'\n\ninterface StructureTitleProps {\n resolvedPanes: Panes['resolvedPanes']\n}\n\nconst DocumentTitle = (props: {documentId: string; documentType: string}) => {\n const {documentId, documentType} = props\n const editState = useEditState(documentId, documentType)\n const schema = useSchema()\n const {t} = useTranslation(structureLocaleNamespace)\n const isNewDocument = !editState?.published && !editState?.draft\n const documentValue = editState?.draft || editState?.published\n const schemaType = schema.get(documentType) as ObjectSchemaType | undefined\n\n const {value, isLoading: previewValueIsLoading} = useValuePreview({\n enabled: true,\n schemaType,\n value: documentValue,\n })\n\n const documentTitle = isNewDocument\n ? t('browser-document-title.new-document', {\n schemaType: schemaType?.title || schemaType?.name,\n })\n : value?.title || t('browser-document-title.untitled-document')\n\n const settled = editState.ready && !previewValueIsLoading\n const newTitle = useConstructDocumentTitle(documentTitle)\n useEffect(() => {\n if (!settled) return\n // Set the title as the document title\n document.title = newTitle\n }, [documentTitle, settled, newTitle])\n\n return null\n}\n\nconst PassthroughTitle = (props: {title?: string}) => {\n const {title} = props\n const newTitle = useConstructDocumentTitle(title)\n useEffect(() => {\n // Set the title as the document title\n document.title = newTitle\n }, [newTitle, title])\n return null\n}\n\nexport const StructureTitle = (props: StructureTitleProps) => {\n const {resolvedPanes} = props\n\n if (!resolvedPanes?.length) return null\n\n const lastPane = resolvedPanes[resolvedPanes.length - 1]\n\n // If the last pane is loading, display the structure tool title only\n if (isLoadingPane(lastPane)) {\n return <PassthroughTitle />\n }\n\n // If the last pane is a document\n if (isDocumentPane(lastPane)) {\n // Passthrough the document pane's title, which may be defined in structure builder\n if (lastPane?.title) {\n return <PassthroughTitle title={lastPane.title} />\n }\n\n // Otherwise, display a `document.title` containing the resolved Sanity document title\n return <DocumentTitle documentId={lastPane.options.id} documentType={lastPane.options.type} />\n }\n\n // Otherwise, display the last pane's title (if present)\n return <PassthroughTitle title={lastPane?.title} />\n}\n\n/**\n * Construct a pipe delimited title containing `activeTitle` (if applicable) and the base structure title.\n *\n * @param activeTitle - Title of the first segment\n *\n * @returns A pipe delimited title in the format `${activeTitle} | %BASE_STRUCTURE_TITLE%`\n * or simply `%BASE_STRUCTURE_TITLE` if `activeTitle` is undefined.\n */\nfunction useConstructDocumentTitle(activeTitle?: string) {\n const structureToolBaseTitle = useStructureTool().structureContext.title\n return [activeTitle, structureToolBaseTitle].filter((title) => title).join(' | ')\n}\n\n// Type guards\nfunction isDocumentPane(pane: Panes['resolvedPanes'][number]): pane is DocumentPaneNode {\n return pane !== LOADING_PANE && pane.type === 'document'\n}\n\nfunction isLoadingPane(pane: Panes['resolvedPanes'][number]): pane is typeof LOADING_PANE {\n return pane === LOADING_PANE\n}\n","import {PortalProvider, useTheme, useToast} from '@sanity/ui'\nimport React, {memo, Fragment, useState, useEffect, useCallback} from 'react'\nimport styled from 'styled-components'\nimport isHotkey from 'is-hotkey'\nimport {LOADING_PANE} from '../../constants'\nimport {LoadingPane, StructureToolPane} from '../../panes'\nimport {useResolvedPanes} from '../../structureResolvers'\nimport type {PaneNode} from '../../types'\nimport {PaneLayout} from '../pane'\nimport {useStructureTool} from '../../useStructureTool'\nimport {NoDocumentTypesScreen} from './NoDocumentTypesScreen'\nimport {StructureTitle} from './StructureTitle'\nimport {useSchema, _isCustomDocumentTypeDefinition} from 'sanity'\nimport {useRouterState} from 'sanity/router'\n\ninterface StructureToolProps {\n onPaneChange: (panes: Array<PaneNode | typeof LOADING_PANE>) => void\n}\n\nconst StyledPaneLayout = styled(PaneLayout)`\n min-height: 100%;\n min-width: 320px;\n`\n\nconst isSaveHotkey = isHotkey('mod+s')\n\n/**\n * @internal\n */\nexport const StructureTool = memo(function StructureTool({onPaneChange}: StructureToolProps) {\n const {push: pushToast} = useToast()\n const schema = useSchema()\n const {layoutCollapsed, setLayoutCollapsed} = useStructureTool()\n const {paneDataItems, resolvedPanes} = useResolvedPanes()\n // Intent resolving is processed by the sibling `<IntentResolver />` but it doesn't have a UI for indicating progress.\n // We handle that here, so if there are only 1 pane (the root structure), and there's an intent state in the router, we need to show a placeholder LoadingPane until\n // the structure is resolved and we know what panes to load/display\n const isResolvingIntent = useRouterState(\n useCallback((routerState) => typeof routerState.intent === 'string', []),\n )\n const {\n sanity: {media},\n } = useTheme()\n\n const [portalElement, setPortalElement] = useState<HTMLDivElement | null>(null)\n\n const handleRootCollapse = useCallback(() => setLayoutCollapsed(true), [setLayoutCollapsed])\n const handleRootExpand = useCallback(() => setLayoutCollapsed(false), [setLayoutCollapsed])\n\n useEffect(() => {\n // we check for length before emitting here to skip the initial empty array\n // state from the `useResolvedPanes` hook. there should always be a root\n // pane emitted on subsequent emissions\n if (resolvedPanes.length) {\n onPaneChange(resolvedPanes)\n }\n }, [onPaneChange, resolvedPanes])\n\n useEffect(() => {\n const handleGlobalKeyDown = (event: KeyboardEvent) => {\n // Prevent `Cmd+S`\n if (isSaveHotkey(event)) {\n event.preventDefault()\n\n pushToast({\n closable: true,\n id: 'auto-save-message',\n status: 'info',\n title: 'Your work is automatically saved!',\n duration: 4000,\n })\n }\n }\n\n window.addEventListener('keydown', handleGlobalKeyDown)\n return () => window.removeEventListener('keydown', handleGlobalKeyDown)\n }, [pushToast])\n\n const hasDefinedDocumentTypes = schema._original?.types.some(_isCustomDocumentTypeDefinition)\n\n if (!hasDefinedDocumentTypes) {\n return <NoDocumentTypesScreen />\n }\n\n return (\n <PortalProvider element={portalElement || null}>\n <StyledPaneLayout\n flex={1}\n height={layoutCollapsed ? undefined : 'fill'}\n minWidth={media[1]}\n onCollapse={handleRootCollapse}\n onExpand={handleRootExpand}\n >\n {paneDataItems.map(\n ({\n active,\n childItemId,\n groupIndex,\n itemId,\n key: paneKey,\n pane,\n index: paneIndex,\n params: paneParams,\n path,\n payload,\n siblingIndex,\n selected,\n }) => (\n <Fragment key={`${pane === LOADING_PANE ? 'loading' : pane.type}-${paneIndex}`}>\n {pane === LOADING_PANE ? (\n <LoadingPane paneKey={paneKey} path={path} selected={selected} />\n ) : (\n <StructureToolPane\n active={active}\n groupIndex={groupIndex}\n index={paneIndex}\n pane={pane}\n childItemId={childItemId}\n itemId={itemId}\n paneKey={paneKey}\n params={paneParams}\n payload={payload}\n path={path}\n selected={selected}\n siblingIndex={siblingIndex}\n />\n )}\n </Fragment>\n ),\n )}\n {/* If there's just 1 pane (the root), or less, and we're resolving an intent then it's necessary to show */}\n {/* a loading indicator as the intent resolving is async, could take a while and can also be interrupted/redirected */}\n {paneDataItems.length <= 1 && isResolvingIntent && (\n <LoadingPane paneKey=\"intent-resolver\" />\n )}\n </StyledPaneLayout>\n <StructureTitle resolvedPanes={resolvedPanes} />\n <div data-portal=\"\" ref={setPortalElement} />\n </PortalProvider>\n )\n})\n","import React, {useEffect, useState} from 'react'\nimport {ErrorBoundary} from '@sanity/ui'\nimport type {StructureToolOptions} from '../../types'\nimport {StructureToolProvider} from '../../StructureToolProvider'\nimport {setActivePanes} from '../../getIntentState'\nimport {IntentResolver} from './intentResolver'\nimport {StructureError} from './StructureError'\nimport {StructureTool} from './StructureTool'\nimport {SourceProvider, useWorkspace, Tool} from 'sanity'\n\ninterface StructureToolBoundaryProps {\n tool: Tool<StructureToolOptions>\n}\n\nexport function StructureToolBoundary({tool: {options}}: StructureToolBoundaryProps) {\n const {unstable_sources: sources} = useWorkspace()\n const [firstSource] = sources\n const {source, defaultDocumentNode, structure} = options || {}\n\n // Set active panes to blank on mount and unmount\n useEffect(() => {\n setActivePanes([])\n return () => setActivePanes([])\n }, [])\n\n const [{error}, setError] = useState<{error: unknown}>({error: null})\n // this re-throws if the error it catches is not a PaneResolutionError\n if (error) return <StructureError error={error} />\n\n return (\n <ErrorBoundary onCatch={setError}>\n <SourceProvider name={source || firstSource.name}>\n <StructureToolProvider defaultDocumentNode={defaultDocumentNode} structure={structure}>\n <StructureTool onPaneChange={setActivePanes} />\n <IntentResolver />\n </StructureToolProvider>\n </SourceProvider>\n </ErrorBoundary>\n )\n}\n"],"names":["emptyArray","PaneRouterProvider","props","children","flatIndex","index","params","payload","siblingIndex","navigate","navigateIntent","resolvePathFromState","useRouter","routerState","useRouterState","panes","expand","usePaneLayout","routerPaneGroups","useMemo","lastPane","length","groupIndex","createNextRouterState","useCallback","modifier","currentGroup","currentItem","nextGroup","nextPanes","slice","nextRouterState","modifyCurrentGroup","setTimeout","createPathWithParams","nextParams","siblings","item","setPayload","nextPayload","setParams","handleEditReference","_ref","id","parentRefPath","type","template","pathToString","ctx","hasGroupSiblings","groupLength","routerPanesState","ChildLink","BackLink","ReferenceChildLink","ParameterizedLink","replaceCurrent","opts","arguments","undefined","closeCurrent","filter","sibling","closeCurrentAndAfter","expandLast","element","replace","duplicateCurrent","options","duplicatedItem","setView","viewId","restParams","omit","view","PaneRouterContext","Provider","value","PaneResolutionError","Error","constructor","message","context","helpId","cause","_ref2","randomIdCache","WeakMap","assignId","obj","cachedValue","get","nanoid","set","bindCache","memoBind","methodKey","boundMethods","Map","bound","method","concat","bind","isPromise","thing","then","isSerializable","isRecord","serialize","rethrowWithPaneResolutionErrors","next","unresolvedPane","e","wrapWithPublishReplay","pipe","publishReplay","refCount","createPaneResolver","middleware","resolvePane","isObservable","from","switchMap","result","observableOf","resolveIntent","resolvedPaneCache","memoize","nextFn","key","path","join","cachedResolvedPane","fallbackEditorPanes","traverse","_ref3","currentId","intent","parent","levelIndex","structureContext","_a","targetId","schemaTypeName","otherParams","splitIndex","resolvedPane","firstValueFrom","map","i","depthIndex","canHandleIntent","call","pane","child","items","Promise","all","nextLevelIndex","resolve","_id","flat","matchingPanes","rootPaneNode","closestPaneToRoot","sort","a","b","fallbackEditorChild","nodeId","resolveDocumentNode","defaultDocumentBuilder","schemaType","documentId","initialValueTemplate","hashContext","_b","stringify","parentId","serializeOptionsIndex","serializeOptions","serializeOptionsPath","hashResolvedPaneMeta","meta","normalized","routerPaneSibling","paneNode","JSON","resolvePaneTree","_ref4","flattenedRouterPanes","current","rest","resolvedPaneMeta","loadingPanes","restIndex","loadingPanePath","_","currentIndex","loadingPane","nextStream","startsWith","nextResolvedPanes","console","warn","generateHelpUrl","createResolvedPaneNodeStream","_ref5","routerPanesStream","initialCacheState","cacheKeysByFlatIndex","NEVER","resolvedPanes$","rawRouterPanes","routerPanes","flatMap","routerPaneGroup","startWith","pairwise","_ref6","prev","curr","prevValue","currValue","isEqual","diffIndex","scan","acc","beforeDiffIndex","afterDiffIndex","keysToKeep","Set","keySet","Array","keysToDelete","has","delete","cacheKeySet","add","_ref7","nextPane","prevPane","distinctUntilChanged","nextValue","useRouterPanesStream","routerStateSubject","ReplaySubject","routerPanes$","asObservable","_routerState","state","useEffect","useResolvedPanes","error","setError","useState","useStructureTool","data","setData","paneDataItems","resolvedPanes","reduce","groupsLen","itemId","paneDataItem","active","childItemId","LOADING_PANE","selected","subscription","subscribe","unsubscribe","ensureDocumentIdAndType","documentStore","uuid","resolvedType","resolveTypeForDocument","EMPTY_RECORD","IntentResolver","memo","IntentResolver2","maybeIntent","intentName","useDocumentStore","cancelled","effect","catch","PathSegment","styled","span","__template","formatStack","stack","RegExp","location","host","StructureError","_ref8","t","useTranslation","structureLocaleNamespace","showStack","SerializeError","includes","handleReload","window","reload","jsx","Card","height","overflow","padding","sizing","tone","Container","Heading","as","jsxs","marginTop","radius","shadow","Stack","space","Text","size","weight","Code","segment","Box","href","rel","target","Button","text","icon","SyncIcon","onClick","UnknownPane","isSelected","paneKey","Pane","PaneHeader","title","PaneContent","muted","Translate","i18nKey","values","paneMap","component","lazy","document","documentList","list","StructureToolPane","PaneComponent","Suspense","fallback","LoadingPane","isActive","_ref9","_ref10","prevParams","prevPayload","keys","Object","NoDocumentTypesScreen","Flex","align","justify","width","WarningOutlineIcon","flex","marginLeft","DocumentTitle","documentType","editState","useEditState","schema","useSchema","isNewDocument","published","draft","documentValue","isLoading","previewValueIsLoading","useValuePreview","enabled","documentTitle","name","settled","ready","newTitle","useConstructDocumentTitle","PassthroughTitle","StructureTitle","isLoadingPane","isDocumentPane","activeTitle","structureToolBaseTitle","StyledPaneLayout","PaneLayout","isSaveHotkey","isHotkey","StructureTool","StructureTool2","_ref11","onPaneChange","push","pushToast","useToast","layoutCollapsed","setLayoutCollapsed","isResolvingIntent","sanity","media","useTheme","portalElement","setPortalElement","handleRootCollapse","handleRootExpand","handleGlobalKeyDown","event","preventDefault","closable","status","duration","addEventListener","removeEventListener","hasDefinedDocumentTypes","_original","types","some","_isCustomDocumentTypeDefinition","PortalProvider","minWidth","onCollapse","onExpand","_ref12","paneIndex","paneParams","Fragment","ref","StructureToolBoundary","tool","_ref13","unstable_sources","sources","useWorkspace","firstSource","source","defaultDocumentNode","structure","setActivePanes","ErrorBoundary","onCatch","SourceProvider","StructureToolProvider"],"mappings":"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"}
1
+ {"version":3,"file":"index-MAAxgUnl.js","sources":["../../src/structure/components/paneRouter/PaneRouterProvider.tsx","../../src/structure/structureResolvers/PaneResolutionError.ts","../../src/structure/structureResolvers/assignId.ts","../../src/structure/structureResolvers/memoBind.ts","../../src/structure/structureResolvers/createPaneResolver.ts","../../src/structure/structureResolvers/resolveIntent.ts","../../src/structure/structureResolvers/createResolvedPaneNodeStream.ts","../../src/structure/structureResolvers/useResolvedPanes.ts","../../src/structure/components/structureTool/intentResolver/utils.ts","../../src/structure/components/structureTool/intentResolver/IntentResolver.tsx","../../src/structure/components/structureTool/StructureError.tsx","../../src/structure/panes/unknown/UnknownPaneType.tsx","../../src/structure/panes/StructureToolPane.tsx","../../src/structure/components/structureTool/NoDocumentTypesScreen.tsx","../../src/structure/components/structureTool/StructureTitle.tsx","../../src/structure/components/structureTool/StructureTool.tsx","../../src/structure/components/structureTool/StructureToolBoundary.tsx"],"sourcesContent":["import {omit} from 'lodash'\nimport React, {useCallback, useMemo} from 'react'\nimport {toString as pathToString} from '@sanity/util/paths'\nimport {RouterPaneGroup, RouterPanes, RouterPaneSibling} from '../../types'\nimport {usePaneLayout} from '../pane/usePaneLayout'\nimport {ChildLink} from './ChildLink'\nimport {BackLink} from './BackLink'\nimport {ReferenceChildLink} from './ReferenceChildLink'\nimport {PaneRouterContext} from './PaneRouterContext'\nimport {ParameterizedLink} from './ParameterizedLink'\nimport {PaneRouterContextValue} from './types'\nimport {useRouter, useRouterState} from 'sanity/router'\n\nconst emptyArray: never[] = []\n\n/**\n * @internal\n */\nexport function PaneRouterProvider(props: {\n children: React.ReactNode\n flatIndex: number\n index: number\n params: Record<string, string | undefined>\n payload: unknown\n siblingIndex: number\n}) {\n const {children, flatIndex, index, params, payload, siblingIndex} = props\n const {navigate, navigateIntent, resolvePathFromState} = useRouter()\n const routerState = useRouterState()\n const {panes, expand} = usePaneLayout()\n const routerPaneGroups: RouterPaneGroup[] = useMemo(\n () => (routerState?.panes || emptyArray) as RouterPanes,\n [routerState?.panes],\n )\n const lastPane = useMemo(() => panes?.[panes.length - 2], [panes])\n\n const groupIndex = index - 1\n\n const createNextRouterState = useCallback(\n (modifier: (siblings: RouterPaneGroup, item: RouterPaneSibling) => RouterPaneGroup) => {\n const currentGroup = routerPaneGroups[groupIndex] || []\n const currentItem = currentGroup[siblingIndex]\n const nextGroup = modifier(currentGroup, currentItem)\n const nextPanes = [\n ...routerPaneGroups.slice(0, groupIndex),\n nextGroup,\n ...routerPaneGroups.slice(groupIndex + 1),\n ]\n const nextRouterState = {...(routerState || {}), panes: nextPanes}\n\n return nextRouterState\n },\n [groupIndex, routerPaneGroups, routerState, siblingIndex],\n )\n\n const modifyCurrentGroup = useCallback(\n (modifier: (siblings: RouterPaneGroup, item: RouterPaneSibling) => RouterPaneGroup) => {\n const nextRouterState = createNextRouterState(modifier)\n setTimeout(() => navigate(nextRouterState), 0)\n return nextRouterState\n },\n [createNextRouterState, navigate],\n )\n\n const createPathWithParams: PaneRouterContextValue['createPathWithParams'] = useCallback(\n (nextParams) => {\n const nextRouterState = createNextRouterState((siblings, item) => [\n ...siblings.slice(0, siblingIndex),\n {...item, params: nextParams},\n ...siblings.slice(siblingIndex + 1),\n ])\n\n return resolvePathFromState(nextRouterState)\n },\n [createNextRouterState, resolvePathFromState, siblingIndex],\n )\n\n const setPayload: PaneRouterContextValue['setPayload'] = useCallback(\n (nextPayload) => {\n modifyCurrentGroup((siblings, item) => [\n ...siblings.slice(0, siblingIndex),\n {...item, payload: nextPayload},\n ...siblings.slice(siblingIndex + 1),\n ])\n },\n [modifyCurrentGroup, siblingIndex],\n )\n\n const setParams: PaneRouterContextValue['setParams'] = useCallback(\n (nextParams) => {\n modifyCurrentGroup((siblings, item) => [\n ...siblings.slice(0, siblingIndex),\n {...item, params: nextParams},\n ...siblings.slice(siblingIndex + 1),\n ])\n },\n [modifyCurrentGroup, siblingIndex],\n )\n\n const handleEditReference: PaneRouterContextValue['handleEditReference'] = useCallback(\n ({id, parentRefPath, type, template}) => {\n navigate({\n panes: [\n ...routerPaneGroups.slice(0, groupIndex + 1),\n [\n {\n id,\n params: {template: template.id, parentRefPath: pathToString(parentRefPath), type},\n payload: template.params,\n },\n ],\n ],\n })\n },\n [groupIndex, navigate, routerPaneGroups],\n )\n\n const ctx: PaneRouterContextValue = useMemo(\n () => ({\n // Zero-based index (position) of pane, visually\n index: flatIndex,\n\n // Zero-based index of pane group (within URL structure)\n groupIndex,\n\n // Zero-based index of pane within sibling group\n siblingIndex,\n\n // Payload of the current pane\n payload,\n\n // Params of the current pane\n params,\n\n // Whether or not the pane has any siblings (within the same group)\n hasGroupSiblings: routerPaneGroups[groupIndex]\n ? routerPaneGroups[groupIndex].length > 1\n : false,\n\n // The length of the current group\n groupLength: routerPaneGroups[groupIndex] ? routerPaneGroups[groupIndex].length : 0,\n\n // Current router state for the \"panes\" property\n routerPanesState: routerPaneGroups,\n\n // Curried StateLink that passes the correct state automatically\n ChildLink,\n\n // Curried StateLink that pops off the last pane group\n BackLink,\n\n // A specialized `ChildLink` that takes in the needed props to open a\n // referenced document to the right\n ReferenceChildLink,\n\n // Similar to `ReferenceChildLink` expect without the wrapping component\n handleEditReference,\n\n // Curried StateLink that passed the correct state, but merges params/payload\n ParameterizedLink,\n\n // Replaces the current pane with a new one\n replaceCurrent: (opts = {}): void => {\n modifyCurrentGroup(() => [\n {id: opts.id || '', payload: opts.payload, params: opts.params || {}},\n ])\n },\n\n // Removes the current pane from the group\n closeCurrent: (): void => {\n modifyCurrentGroup((siblings, item) =>\n siblings.length > 1 ? siblings.filter((sibling) => sibling !== item) : siblings,\n )\n },\n\n // Removes all panes to the right including current\n closeCurrentAndAfter: (expandLast = true): void => {\n if (expandLast && lastPane) {\n expand(lastPane.element)\n }\n navigate(\n {\n panes: [...routerPaneGroups.slice(0, groupIndex)],\n },\n {replace: true},\n )\n },\n\n // Duplicate the current pane, with optional overrides for payload, parameters\n duplicateCurrent: (options): void => {\n modifyCurrentGroup((siblings, item) => {\n const duplicatedItem = {\n ...item,\n payload: options?.payload || item.payload,\n params: options?.params || item.params,\n }\n\n return [\n ...siblings.slice(0, siblingIndex),\n duplicatedItem,\n ...siblings.slice(siblingIndex),\n ]\n })\n },\n\n // Set the view for the current pane\n setView: (viewId) => {\n const restParams = omit(params, 'view')\n return setParams(viewId ? {...restParams, view: viewId} : restParams)\n },\n\n // Set the parameters for the current pane\n setParams,\n\n // Set the payload for the current pane\n setPayload,\n\n // A function that returns a path with the given parameters\n createPathWithParams,\n\n // Proxied navigation to a given intent. Consider just exposing `router` instead?\n navigateIntent,\n }),\n [\n flatIndex,\n groupIndex,\n siblingIndex,\n payload,\n params,\n routerPaneGroups,\n handleEditReference,\n setParams,\n setPayload,\n createPathWithParams,\n navigateIntent,\n modifyCurrentGroup,\n lastPane,\n navigate,\n expand,\n ],\n )\n\n return <PaneRouterContext.Provider value={ctx}>{children}</PaneRouterContext.Provider>\n}\n","import {RouterPaneSiblingContext} from '../types'\n\nexport interface PaneResolutionErrorOptions {\n message: string\n context?: RouterPaneSiblingContext\n helpId?: string\n cause?: Error\n}\n\n/**\n * An error thrown during pane resolving. This error is meant to be bubbled up\n * through react and handled in an error boundary. It includes a `cause`\n * property which is the original error caught\n */\nexport class PaneResolutionError extends Error {\n cause: Error | undefined\n context: RouterPaneSiblingContext | undefined\n helpId: string | undefined\n\n constructor({message, context, helpId, cause}: PaneResolutionErrorOptions) {\n super(message)\n this.context = context\n this.helpId = helpId\n this.cause = cause\n }\n}\n","import {nanoid} from 'nanoid'\n\n// `WeakMap`s require the first type param to extend `object`\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst randomIdCache = new WeakMap<object, string>()\n\n/**\n * given an object, this function randomly generates an ID and returns it. this\n * result is then saved in a WeakMap so subsequent requests for the same object\n * will receive the same ID\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assignId(obj: object): string {\n const cachedValue = randomIdCache.get(obj)\n if (cachedValue) return cachedValue\n\n const id = nanoid()\n randomIdCache.set(obj, id)\n return id\n}\n","/* eslint-disable @typescript-eslint/ban-types */\n\n// `WeakMap`s require the first type param to extend `object`\nconst bindCache = new WeakMap<object, Map<string, Function>>()\n\n/**\n * An alternative to `obj.method.bind(obj)` that utilizes a weakmap to return\n * the same memory reference for sequent binds.\n */\nexport function memoBind<\n T extends object,\n K extends keyof {[P in keyof T]: T[P] extends Function ? T[P] : never},\n>(obj: T, methodKey: K): T[K]\nexport function memoBind(obj: Record<string, unknown>, methodKey: string): Function {\n const boundMethods = bindCache.get(obj) || new Map<string, Function>()\n if (boundMethods) {\n const bound = boundMethods.get(methodKey)\n if (bound) return bound\n }\n\n const method = obj[methodKey]\n\n if (typeof method !== 'function') {\n throw new Error(\n `Expected property \\`${methodKey}\\` to be a function but got ${typeof method} instead.`,\n )\n }\n\n const bound = method.bind(obj)\n boundMethods.set(methodKey, bound)\n bindCache.set(obj, boundMethods)\n\n return bound\n}\n","import {from, isObservable, Observable, of as observableOf, Subscribable} from 'rxjs'\n\nimport {publishReplay, refCount, switchMap} from 'rxjs/operators'\n\nimport {PaneNode, RouterPaneSiblingContext, UnresolvedPaneNode} from '../types'\nimport {PaneResolutionError} from './PaneResolutionError'\nimport {isRecord} from 'sanity'\n\ninterface Serializable {\n serialize: (...args: never[]) => unknown\n}\n\nconst isPromise = (thing: any): thing is PromiseLike<unknown> => {\n return !!thing && typeof thing?.then === 'function'\n}\nconst isSerializable = (thing: unknown): thing is Serializable => {\n if (!isRecord(thing)) return false\n return typeof thing.serialize === 'function'\n}\n\n/**\n * The signature of the function used to take an `UnresolvedPaneNode` and turn\n * it into an `Observable<PaneNode>`.\n */\nexport type PaneResolver = (\n unresolvedPane: UnresolvedPaneNode | undefined,\n context: RouterPaneSiblingContext,\n flatIndex: number,\n) => Observable<PaneNode>\n\nexport type PaneResolverMiddleware = (paneResolveFn: PaneResolver) => PaneResolver\n\nconst rethrowWithPaneResolutionErrors: PaneResolverMiddleware =\n (next) => (unresolvedPane, context, flatIndex) => {\n try {\n return next(unresolvedPane, context, flatIndex)\n } catch (e) {\n // re-throw errors that are already `PaneResolutionError`s\n if (e instanceof PaneResolutionError) {\n throw e\n }\n\n // anything else, wrap with `PaneResolutionError` and set the underlying\n // error as a the `cause`\n throw new PaneResolutionError({\n message: typeof e?.message === 'string' ? e.message : '',\n context,\n cause: e,\n })\n }\n }\n\nconst wrapWithPublishReplay: PaneResolverMiddleware =\n (next) =>\n (...args) => {\n return next(...args).pipe(\n // need to add publishReplay + refCount to ensure new subscribers always\n // get an emission. without this, memoized observables may get stuck\n // waiting for their first emissions resulting in a loading pane\n publishReplay(1),\n refCount(),\n )\n }\n\nexport function createPaneResolver(middleware: PaneResolverMiddleware): PaneResolver {\n // note: this API includes a middleware/wrapper function because the function\n // is recursive. we want to call the wrapped version of the function always\n // (even inside of nested calls) so the identifier invoked for the recursion\n // should be the wrapped version\n const resolvePane = rethrowWithPaneResolutionErrors(\n wrapWithPublishReplay(\n middleware((unresolvedPane, context, flatIndex) => {\n if (!unresolvedPane) {\n throw new PaneResolutionError({\n message: 'Pane returned no child',\n context,\n helpId: 'structure-item-returned-no-child',\n })\n }\n\n if (isPromise(unresolvedPane) || isObservable(unresolvedPane)) {\n return from(unresolvedPane).pipe(\n switchMap((result) => resolvePane(result, context, flatIndex)),\n )\n }\n\n if (isSerializable(unresolvedPane)) {\n return resolvePane(unresolvedPane.serialize(context), context, flatIndex)\n }\n\n if (typeof unresolvedPane === 'function') {\n return resolvePane(unresolvedPane(context.id, context), context, flatIndex)\n }\n\n return observableOf(unresolvedPane)\n }),\n ),\n )\n\n return resolvePane\n}\n","import {omit} from 'lodash'\nimport {firstValueFrom, Observable} from 'rxjs'\nimport {PaneNode, RouterPanes, RouterPaneSiblingContext, UnresolvedPaneNode} from '../types'\nimport {StructureContext} from '../structureBuilder'\nimport {assignId} from './assignId'\nimport {memoBind} from './memoBind'\nimport {createPaneResolver, PaneResolverMiddleware} from './createPaneResolver'\n\ninterface TraverseOptions {\n unresolvedPane: UnresolvedPaneNode | undefined\n intent: string\n params: {type: string; id: string; [key: string]: string | undefined}\n payload: unknown\n parent: PaneNode | null\n path: string[]\n currentId: string\n flatIndex: number\n levelIndex: number\n structureContext: StructureContext\n}\n\nexport interface ResolveIntentOptions {\n rootPaneNode?: UnresolvedPaneNode\n intent: string\n params: {type: string; id: string; [key: string]: string | undefined}\n payload: unknown\n structureContext: StructureContext\n}\n\n/**\n * Resolves an intent request using breadth first search. If a match is not\n * found, the intent will resolve to the fallback editor.\n *\n * A match is found if:\n * 1. the `PaneNode` is of type `document` and the its ID matches the intent ID\n * 2. the `PaneNode` is of type `documentList` and the `schemaTypeName` matches\n * 3. the `PaneNode`'s `canHandleIntent` method returns true\n *\n * If a `PaneNode` of type `list` is found, it will be searched for a match.\n *\n * @see PaneNode\n */\nexport async function resolveIntent(options: ResolveIntentOptions): Promise<RouterPanes> {\n const resolvedPaneCache = new Map<string, Observable<PaneNode>>()\n\n // this is a simple version of the memoizer in `createResolvedPaneNodeStream`\n const memoize: PaneResolverMiddleware = (nextFn) => (unresolvedPane, context, flatIndex) => {\n const key = unresolvedPane && `${assignId(unresolvedPane)}-${context.path.join('__')}`\n const cachedResolvedPane = key && resolvedPaneCache.get(key)\n if (cachedResolvedPane) return cachedResolvedPane\n\n const result = nextFn(unresolvedPane, context, flatIndex)\n if (key) resolvedPaneCache.set(key, result)\n return result\n }\n\n const resolvePane = createPaneResolver(memoize)\n\n const fallbackEditorPanes: RouterPanes = [\n [\n {\n id: `__edit__${options.params.id}`,\n params: {...omit(options.params, ['id']), type: options.params.type},\n payload: options.payload,\n },\n ],\n ]\n\n async function traverse({\n currentId,\n flatIndex,\n intent,\n params,\n parent,\n path,\n payload,\n unresolvedPane,\n levelIndex,\n structureContext,\n }: TraverseOptions): Promise<\n Array<{panes: RouterPanes; depthIndex: number; levelIndex: number}>\n > {\n if (!unresolvedPane) return []\n\n const {id: targetId, type: schemaTypeName, ...otherParams} = params\n const context: RouterPaneSiblingContext = {\n id: currentId,\n splitIndex: 0,\n parent,\n path,\n index: flatIndex,\n params: {},\n payload: undefined,\n structureContext,\n }\n const resolvedPane = await firstValueFrom(resolvePane(unresolvedPane, context, flatIndex))\n\n // if the resolved pane is a document pane and the pane's ID matches then\n // resolve the intent to the current path\n if (resolvedPane.type === 'document' && resolvedPane.id === targetId) {\n return [\n {\n panes: [\n ...path.slice(0, path.length - 1).map((i) => [{id: i}]),\n [{id: targetId, params: otherParams, payload}],\n ],\n depthIndex: path.length,\n levelIndex,\n },\n ]\n }\n\n // NOTE: if you update this logic, please also update the similar handler in\n // `getIntentState.ts`\n if (\n // if the resolve pane's `canHandleIntent` returns true, then resolve\n resolvedPane.canHandleIntent?.(intent, params, {\n pane: resolvedPane,\n index: flatIndex,\n }) ||\n // if the pane's `canHandleIntent` did not return true, then match against\n // this default case. we will resolve the intent if:\n (resolvedPane.type === 'documentList' &&\n // 1. the schema type matches (this required for the document to render)\n resolvedPane.schemaTypeName === schemaTypeName &&\n // 2. the filter is the default filter.\n //\n // NOTE: this case is to prevent false positive matches where the user\n // has configured a more specific filter for a particular type. In that\n // case, the user can implement their own `canHandleIntent` function\n resolvedPane.options.filter === '_type == $type')\n ) {\n return [\n {\n panes: [\n // map the current path to router panes\n ...path.map((id) => [{id}]),\n // then augment with the intents IDs and params\n [{id: params.id, params: otherParams, payload}],\n ],\n depthIndex: path.length,\n levelIndex,\n },\n ]\n }\n\n if (resolvedPane.type === 'list' && resolvedPane.child && resolvedPane.items) {\n return (\n await Promise.all(\n resolvedPane.items.map((item, nextLevelIndex) => {\n if (item.type === 'divider') return Promise.resolve([])\n\n return traverse({\n currentId: item._id || item.id,\n flatIndex: flatIndex + 1,\n intent,\n params,\n parent: resolvedPane,\n path: [...path, item.id],\n payload,\n unresolvedPane:\n typeof resolvedPane.child === 'function'\n ? memoBind(resolvedPane, 'child')\n : resolvedPane.child,\n levelIndex: nextLevelIndex,\n structureContext,\n })\n }),\n )\n ).flat()\n }\n\n return []\n }\n\n const matchingPanes = await traverse({\n currentId: 'root',\n flatIndex: 0,\n levelIndex: 0,\n intent: options.intent,\n params: options.params,\n parent: null,\n path: [],\n payload: options.payload,\n unresolvedPane: options.rootPaneNode,\n structureContext: options.structureContext,\n })\n\n const closestPaneToRoot = matchingPanes.sort((a, b) => {\n // break ties with the level index\n if (a.depthIndex === b.depthIndex) return a.levelIndex - b.levelIndex\n return a.depthIndex - b.depthIndex\n })[0]\n\n if (closestPaneToRoot) {\n return closestPaneToRoot.panes\n }\n\n return fallbackEditorPanes\n}\n","import {generateHelpUrl} from '@sanity/generate-help-url'\nimport {isEqual} from 'lodash'\nimport {Observable, NEVER, of as observableOf, concat} from 'rxjs'\nimport {switchMap, map, scan, distinctUntilChanged, pairwise, startWith} from 'rxjs/operators'\nimport {\n DocumentPaneNode,\n PaneNode,\n RouterPaneSiblingContext,\n RouterPanes,\n RouterPaneSibling,\n PaneNodeResolver,\n UnresolvedPaneNode,\n} from '../types'\nimport {StructureContext} from '../structureBuilder'\nimport {assignId} from './assignId'\nimport {createPaneResolver, PaneResolver, PaneResolverMiddleware} from './createPaneResolver'\nimport {memoBind} from './memoBind'\nimport {PaneResolutionError} from './PaneResolutionError'\n\n/**\n * the fallback editor child that is implicitly inserted into the structure tree\n * if the id starts with `__edit__`\n */\nconst fallbackEditorChild: PaneNodeResolver = (nodeId, context): DocumentPaneNode => {\n const id = nodeId.replace(/^__edit__/, '')\n const {\n params,\n payload,\n structureContext: {resolveDocumentNode},\n } = context\n const {type, template} = params\n\n if (!type) {\n throw new Error(\n `Document type for document with ID ${id} was not provided in the router params.`,\n )\n }\n\n let defaultDocumentBuilder = resolveDocumentNode({schemaType: type, documentId: id}).id('editor')\n\n if (template) {\n defaultDocumentBuilder = defaultDocumentBuilder.initialValueTemplate(\n template,\n payload as {[key: string]: unknown},\n )\n }\n\n return defaultDocumentBuilder.serialize() as DocumentPaneNode\n}\n\n/**\n * takes in a `RouterPaneSiblingContext` and returns a normalized string\n * representation that can be used for comparisons\n */\nfunction hashContext(context: RouterPaneSiblingContext): string {\n return `contextHash(${JSON.stringify({\n id: context.id,\n parentId: parent && assignId(parent),\n path: context.path,\n index: context.index,\n splitIndex: context.splitIndex,\n serializeOptionsIndex: context.serializeOptions?.index,\n serializeOptionsPath: context.serializeOptions?.path,\n })})`\n}\n\n/**\n * takes in `ResolvedPaneMeta` and returns a normalized string representation\n * that can be used for comparisons\n */\nconst hashResolvedPaneMeta = (meta: ResolvedPaneMeta): string => {\n const normalized = {\n type: meta.type,\n id: meta.routerPaneSibling.id,\n params: meta.routerPaneSibling.params || {},\n payload: meta.routerPaneSibling.payload || null,\n flatIndex: meta.flatIndex,\n groupIndex: meta.groupIndex,\n siblingIndex: meta.siblingIndex,\n path: meta.path,\n paneNode: meta.type === 'resolvedMeta' ? assignId(meta.paneNode) : null,\n }\n\n return `metaHash(${JSON.stringify(normalized)})`\n}\n\n/**\n * Represents one flattened \"router pane\", including the source group and\n * sibling indexes.\n *\n * @see RouterPanes\n */\ninterface FlattenedRouterPane {\n routerPaneSibling: RouterPaneSibling\n flatIndex: number\n groupIndex: number\n siblingIndex: number\n}\n\n/**\n * The state of the accumulator used to store and manage memo cache state\n */\ninterface CacheState {\n /**\n * Holds the memoization results keyed by a combination of `assignId` and a\n * context hash.\n */\n resolvedPaneCache: Map<string, Observable<PaneNode>>\n /**\n * Acts as a dictionary that stores cache keys by their flat index. This is\n * used to clean up the cache between different branches in the pane\n * structure.\n *\n * @see createResolvedPaneNodeStream look inside the `scan` where `wrapFn` is\n * defined\n */\n cacheKeysByFlatIndex: Array<Set<string>>\n /**\n * The resulting memoized `PaneResolver` function. This function closes over\n * the `resolvedPaneCache`.\n */\n resolvePane: PaneResolver\n flattenedRouterPanes: FlattenedRouterPane[]\n}\n\nexport interface CreateResolvedPaneNodeStreamOptions {\n /**\n * an input stream of `RouterPanes`\n * @see RouterPanes\n */\n routerPanesStream: Observable<RouterPanes>\n /**\n * any `UnresolvedPaneNode` (could be an observable, promise, pane resolver etc)\n */\n rootPaneNode: UnresolvedPaneNode\n /** used primarily for testing */\n initialCacheState?: CacheState\n\n structureContext: StructureContext\n}\n\n/**\n * The result of pane resolving\n */\nexport type ResolvedPaneMeta = {\n groupIndex: number\n siblingIndex: number\n flatIndex: number\n routerPaneSibling: RouterPaneSibling\n path: string[]\n} & ({type: 'loading'; paneNode: null} | {type: 'resolvedMeta'; paneNode: PaneNode})\n\ninterface ResolvePaneTreeOptions {\n resolvePane: PaneResolver\n flattenedRouterPanes: FlattenedRouterPane[]\n unresolvedPane: UnresolvedPaneNode | undefined\n parent: PaneNode | null\n path: string[]\n structureContext: StructureContext\n}\n\n/**\n * A recursive pane resolving function. Starts at one unresolved pane node and\n * continues until there is no more flattened router panes that can be used as\n * input to the unresolved panes.\n */\nfunction resolvePaneTree({\n unresolvedPane,\n flattenedRouterPanes,\n parent,\n path,\n resolvePane,\n structureContext,\n}: ResolvePaneTreeOptions): Observable<ResolvedPaneMeta[]> {\n const [current, ...rest] = flattenedRouterPanes\n const next = rest[0] as FlattenedRouterPane | undefined\n\n const context: RouterPaneSiblingContext = {\n id: current.routerPaneSibling.id,\n splitIndex: current.siblingIndex,\n parent,\n path: [...path, current.routerPaneSibling.id],\n index: current.flatIndex,\n params: current.routerPaneSibling.params || {},\n payload: current.routerPaneSibling.payload,\n structureContext,\n }\n\n try {\n return resolvePane(unresolvedPane, context, current.flatIndex).pipe(\n // this switch map receives a resolved pane\n switchMap((paneNode) => {\n // we can create a `resolvedMeta` type using it\n const resolvedPaneMeta: ResolvedPaneMeta = {\n type: 'resolvedMeta',\n ...current,\n paneNode: paneNode,\n path: context.path,\n }\n\n // for the other unresolved panes, we can create \"loading panes\"\n const loadingPanes = rest.map((i, restIndex) => {\n const loadingPanePath = [\n ...context.path,\n ...rest.slice(restIndex).map((_, currentIndex) => `[${i.flatIndex + currentIndex}]`),\n ]\n\n const loadingPane: ResolvedPaneMeta = {\n type: 'loading',\n path: loadingPanePath,\n paneNode: null,\n ...i,\n }\n\n return loadingPane\n })\n\n if (!rest.length) {\n return observableOf([resolvedPaneMeta])\n }\n\n let nextStream\n\n if (\n // the fallback editor case\n next?.routerPaneSibling.id.startsWith('__edit__')\n ) {\n nextStream = resolvePaneTree({\n unresolvedPane: fallbackEditorChild,\n flattenedRouterPanes: rest,\n parent,\n path: context.path,\n resolvePane,\n structureContext,\n })\n } else if (current.groupIndex === next?.groupIndex) {\n // if the next flattened router pane has the same group index as the\n // current flattened router pane, then the next flattened router pane\n // belongs to the same group (i.e. it is a split pane)\n nextStream = resolvePaneTree({\n unresolvedPane,\n flattenedRouterPanes: rest,\n parent,\n path,\n resolvePane,\n structureContext,\n })\n } else {\n // normal children resolving\n nextStream = resolvePaneTree({\n unresolvedPane:\n typeof paneNode.child === 'function'\n ? (memoBind(paneNode, 'child') as PaneNodeResolver)\n : paneNode.child,\n flattenedRouterPanes: rest,\n parent: paneNode,\n path: context.path,\n resolvePane,\n structureContext,\n })\n }\n\n return concat(\n // we emit the loading panes first in a concat (this emits immediately)\n observableOf([resolvedPaneMeta, ...loadingPanes]),\n // then whenever the next stream is done, the results will be combined.\n nextStream.pipe(map((nextResolvedPanes) => [resolvedPaneMeta, ...nextResolvedPanes])),\n )\n }),\n )\n } catch (e) {\n if (e instanceof PaneResolutionError) {\n if (e.context) {\n console.warn(\n `Pane resolution error at index ${e.context.index}${\n e.context.splitIndex > 0 ? ` for split pane index ${e.context.splitIndex}` : ''\n }: ${e.message}${e.helpId ? ` - see ${generateHelpUrl(e.helpId)}` : ''}`,\n e,\n )\n }\n\n if (e.helpId === 'structure-item-returned-no-child') {\n // returning an observable of an empty array will remove loading panes\n // note: this one intentionally does not throw\n return observableOf([])\n }\n }\n\n throw e\n }\n}\n\n/**\n * Takes in a stream of `RouterPanes` and an unresolved root pane and returns\n * a stream of `ResolvedPaneMeta`\n */\nexport function createResolvedPaneNodeStream({\n routerPanesStream,\n rootPaneNode,\n initialCacheState = {\n cacheKeysByFlatIndex: [],\n flattenedRouterPanes: [],\n resolvedPaneCache: new Map(),\n resolvePane: () => NEVER,\n },\n structureContext,\n}: CreateResolvedPaneNodeStreamOptions): Observable<ResolvedPaneMeta[]> {\n const resolvedPanes$ = routerPanesStream.pipe(\n // add in implicit \"root\" router pane\n map((rawRouterPanes) => [[{id: 'root'}], ...rawRouterPanes]),\n // create flattened router panes\n map((routerPanes) => {\n const flattenedRouterPanes: FlattenedRouterPane[] = routerPanes\n .flatMap((routerPaneGroup, groupIndex) =>\n routerPaneGroup.map((routerPaneSibling, siblingIndex) => ({\n routerPaneSibling,\n groupIndex,\n siblingIndex,\n })),\n )\n // add in the flat index\n .map((i, index) => ({...i, flatIndex: index}))\n\n return flattenedRouterPanes\n }),\n // calculate a \"diffIndex\" used for clearing the memo cache\n startWith([] as FlattenedRouterPane[]),\n pairwise(),\n map(([prev, curr]) => {\n for (let i = 0; i < curr.length; i++) {\n const prevValue = prev[i]\n const currValue = curr[i]\n\n if (!isEqual(prevValue, currValue)) {\n return {\n flattenedRouterPanes: curr,\n diffIndex: i,\n }\n }\n }\n\n return {\n flattenedRouterPanes: curr,\n diffIndex: curr.length,\n }\n }),\n // create the memoized `resolvePane` function and manage the memo cache\n scan((acc, next) => {\n const {cacheKeysByFlatIndex, resolvedPaneCache} = acc\n const {flattenedRouterPanes, diffIndex} = next\n\n // use the `cacheKeysByFlatIndex` like a dictionary to find cache keys to\n // and cache keys to delete\n const beforeDiffIndex = cacheKeysByFlatIndex.slice(0, diffIndex + 1)\n const afterDiffIndex = cacheKeysByFlatIndex.slice(diffIndex + 1)\n\n const keysToKeep = new Set(beforeDiffIndex.flatMap((keySet) => Array.from(keySet)))\n const keysToDelete = afterDiffIndex\n .flatMap((keySet) => Array.from(keySet))\n .filter((key) => !keysToKeep.has(key))\n\n for (const key of keysToDelete) {\n resolvedPaneCache.delete(key)\n }\n\n // create a memoizing pane resolver middleware that utilizes the cache\n // maintained above. this keeps the cache from growing indefinitely\n const memoize: PaneResolverMiddleware = (nextFn) => (unresolvedPane, context, flatIndex) => {\n const key = unresolvedPane && `${assignId(unresolvedPane)}-${hashContext(context)}`\n const cachedResolvedPane = key && resolvedPaneCache.get(key)\n if (cachedResolvedPane) return cachedResolvedPane\n\n const result = nextFn(unresolvedPane, context, flatIndex)\n if (!key) return result\n\n const cacheKeySet = cacheKeysByFlatIndex[flatIndex] || new Set()\n cacheKeySet.add(key)\n cacheKeysByFlatIndex[flatIndex] = cacheKeySet\n resolvedPaneCache.set(key, result)\n return result\n }\n\n return {\n flattenedRouterPanes,\n cacheKeysByFlatIndex,\n resolvedPaneCache,\n resolvePane: createPaneResolver(memoize),\n }\n }, initialCacheState),\n // run the memoized, recursive resolving\n switchMap(({flattenedRouterPanes, resolvePane}) =>\n resolvePaneTree({\n unresolvedPane: rootPaneNode,\n flattenedRouterPanes,\n parent: null,\n path: [],\n resolvePane,\n structureContext,\n }),\n ),\n )\n\n // after we've created a stream of `ResolvedPaneMeta[]`, we need to clean up\n // the results to remove unwanted loading panes and prevent unnecessary\n // emissions\n return resolvedPanes$.pipe(\n // this diffs the previous emission with the current one. if there is a new\n // loading pane at the same position where a previous pane already had a\n // resolved value (looking at the IDs to compare), then return the previous\n // pane instead of the loading pane\n scan(\n (prev, next) =>\n next.map((nextPane, index) => {\n const prevPane = prev[index] as ResolvedPaneMeta | undefined\n if (!prevPane) return nextPane\n if (nextPane.type !== 'loading') return nextPane\n\n if (prevPane.routerPaneSibling.id === nextPane.routerPaneSibling.id) {\n return prevPane\n }\n return nextPane\n }),\n [] as ResolvedPaneMeta[],\n ),\n // this prevents duplicate emissions\n distinctUntilChanged((prev, next) => {\n if (prev.length !== next.length) return false\n\n for (let i = 0; i < next.length; i++) {\n const prevValue = prev[i]\n const nextValue = next[i]\n if (hashResolvedPaneMeta(prevValue) !== hashResolvedPaneMeta(nextValue)) {\n return false\n }\n }\n\n return true\n }),\n )\n}\n","import {useEffect, useMemo, useState} from 'react'\nimport {ReplaySubject} from 'rxjs'\nimport {map} from 'rxjs/operators'\nimport {LOADING_PANE} from '../constants'\nimport {RouterPanes, PaneNode, RouterPaneGroup} from '../types'\nimport {useStructureTool} from '../useStructureTool'\nimport {createResolvedPaneNodeStream} from './createResolvedPaneNodeStream'\nimport {RouterState, useRouter} from 'sanity/router'\n\ninterface PaneData {\n active: boolean\n childItemId: string | null\n groupIndex: number\n index: number\n itemId: string\n key: string\n pane: PaneNode | typeof LOADING_PANE\n params: Record<string, string | undefined>\n path: string\n payload: unknown\n selected: boolean\n siblingIndex: number\n}\n\nexport interface Panes {\n paneDataItems: PaneData[]\n routerPanes: RouterPanes\n resolvedPanes: (PaneNode | typeof LOADING_PANE)[]\n}\n\nfunction useRouterPanesStream() {\n const routerStateSubject = useMemo(() => new ReplaySubject<RouterState>(1), [])\n const routerPanes$ = useMemo(\n () =>\n routerStateSubject\n .asObservable()\n .pipe(map((_routerState) => (_routerState?.panes || []) as RouterPanes)),\n [routerStateSubject],\n )\n const {state: routerState} = useRouter()\n useEffect(() => {\n routerStateSubject.next(routerState)\n }, [routerState, routerStateSubject])\n\n return routerPanes$\n}\n\nexport function useResolvedPanes(): Panes {\n // used to propagate errors from async effect. throwing inside of the render\n // will bubble the error to react where it can be picked up by standard error\n // boundaries\n const [error, setError] = useState<unknown>()\n if (error) throw error\n\n const {structureContext, rootPaneNode} = useStructureTool()\n\n const [data, setData] = useState<Panes>({\n paneDataItems: [],\n resolvedPanes: [],\n routerPanes: [],\n })\n\n const routerPanesStream = useRouterPanesStream()\n\n useEffect(() => {\n const resolvedPanes$ = createResolvedPaneNodeStream({\n rootPaneNode,\n routerPanesStream,\n structureContext,\n }).pipe(\n map((resolvedPanes) => {\n const routerPanes = resolvedPanes.reduce<RouterPanes>((acc, next) => {\n const currentGroup = acc[next.groupIndex] || []\n currentGroup[next.siblingIndex] = next.routerPaneSibling\n acc[next.groupIndex] = currentGroup\n return acc\n }, [])\n\n const groupsLen = routerPanes.length\n\n const paneDataItems = resolvedPanes.map((pane) => {\n const {groupIndex, flatIndex, siblingIndex, routerPaneSibling, path} = pane\n const itemId = routerPaneSibling.id\n const nextGroup = routerPanes[groupIndex + 1] as RouterPaneGroup | undefined\n\n const paneDataItem: PaneData = {\n active: groupIndex === groupsLen - 2,\n childItemId: nextGroup?.[0].id ?? null,\n index: flatIndex,\n itemId: routerPaneSibling.id,\n groupIndex,\n key: `${\n pane.type === 'loading' ? 'unknown' : pane.paneNode.id\n }-${itemId}-${siblingIndex}`,\n pane: pane.type === 'loading' ? LOADING_PANE : pane.paneNode,\n params: routerPaneSibling.params || {},\n path: path.join(';'),\n payload: routerPaneSibling.payload,\n selected: flatIndex === resolvedPanes.length - 1,\n siblingIndex,\n }\n\n return paneDataItem\n })\n\n return {\n paneDataItems,\n routerPanes,\n resolvedPanes: paneDataItems.map((pane) => pane.pane),\n }\n }),\n )\n\n const subscription = resolvedPanes$.subscribe({\n next: (result) => setData(result),\n error: (e) => setError(e),\n })\n\n return () => subscription.unsubscribe()\n }, [rootPaneNode, routerPanesStream, structureContext])\n\n return data\n}\n","import {uuid} from '@sanity/uuid'\nimport {first} from 'rxjs/operators'\nimport {firstValueFrom, Observable} from 'rxjs'\nimport {PaneResolutionError} from '../../../structureResolvers'\nimport {getPublishedId, DocumentStore} from 'sanity'\n\nexport function removeDraftPrefix(documentId: string): string {\n const publishedId = getPublishedId(documentId)\n\n if (publishedId !== documentId) {\n console.warn(\n 'Removed unexpected draft id in document link: All links to documents should have the ' +\n '`drafts.`-prefix removed and something appears to have made an intent link to `%s`',\n documentId,\n )\n }\n\n return publishedId\n}\n\nexport async function ensureDocumentIdAndType(\n documentStore: DocumentStore,\n id: string | undefined,\n type: string | undefined,\n): Promise<{id: string; type: string}> {\n if (id && type) return {id, type}\n if (!id && type) return {id: uuid(), type}\n if (id && !type) {\n const resolvedType = await firstValueFrom(\n documentStore.resolveTypeForDocument(id) as Observable<string>,\n )\n\n return {id, type: resolvedType}\n }\n\n throw new PaneResolutionError({\n message: 'Neither document `id` or `type` was provided when trying to resolve intent.',\n })\n}\n","import {memo, useCallback, useEffect, useState} from 'react'\nimport {resolveIntent} from '../../../structureResolvers'\nimport {useStructureTool} from '../../../useStructureTool'\nimport {ensureDocumentIdAndType} from './utils'\nimport {useRouter, useRouterState} from 'sanity/router'\nimport {isRecord, useDocumentStore} from 'sanity'\n\nconst EMPTY_RECORD: Record<string, unknown> = {}\n\n/**\n * A component that receives an intent from props and redirects to the resolved\n * intent location (while showing a loading spinner during the process)\n */\nexport const IntentResolver = memo(function IntentResolver() {\n const {navigate} = useRouter()\n const maybeIntent = useRouterState(\n useCallback((routerState) => {\n const intentName = typeof routerState.intent === 'string' ? routerState.intent : undefined\n return intentName\n ? {\n intent: intentName,\n params: isRecord(routerState.params) ? routerState.params : EMPTY_RECORD,\n payload: routerState.payload,\n }\n : undefined\n }, []),\n )\n const {rootPaneNode, structureContext} = useStructureTool()\n const documentStore = useDocumentStore()\n const [error, setError] = useState<unknown>(null)\n\n // this re-throws errors so that parent ErrorBoundary's can handle them properly\n if (error) throw error\n\n // eslint-disable-next-line consistent-return\n useEffect(() => {\n if (maybeIntent) {\n const {intent, params, payload} = maybeIntent\n\n let cancelled = false\n // eslint-disable-next-line no-inner-declarations\n async function effect() {\n const {id, type} = await ensureDocumentIdAndType(\n documentStore,\n typeof params.id === 'string' ? params.id : undefined,\n typeof params.type === 'string' ? params.type : undefined,\n )\n\n if (cancelled) return\n\n const panes = await resolveIntent({\n intent,\n params: {...params, id, type},\n payload,\n rootPaneNode,\n structureContext,\n })\n\n if (cancelled) return\n\n navigate({panes}, {replace: true})\n }\n\n effect().catch(setError)\n\n return () => {\n cancelled = true\n }\n }\n }, [documentStore, maybeIntent, navigate, rootPaneNode, structureContext])\n\n return null\n})\n","import {generateHelpUrl} from '@sanity/generate-help-url'\nimport {Box, Card, Code, Container, Heading, Stack, Text} from '@sanity/ui'\nimport React, {useCallback} from 'react'\nimport styled from 'styled-components'\nimport {SyncIcon} from '@sanity/icons'\nimport {Button} from '../../../ui-components'\nimport {SerializeError} from '../../structureBuilder'\nimport {PaneResolutionError} from '../../structureResolvers'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {useTranslation} from 'sanity'\n\nconst PathSegment = styled.span`\n &:not(:last-child)::after {\n content: ' ➝ ';\n opacity: 0.5;\n }\n`\n\nfunction formatStack(stack: string) {\n return (\n stack\n // Prettify builder functions\n .replace(/\\(\\.\\.\\.\\)\\./g, '(...)\\n .')\n // Remove webpack cruft from function names\n .replace(/__WEBPACK_IMPORTED_MODULE_\\d+_+/g, '')\n // Remove default export postfix from function names\n .replace(/___default\\./g, '.')\n // Replace full host path, leave only path to JS-file\n .replace(new RegExp(` \\\\(https?:\\\\/\\\\/${window.location.host}`, 'g'), ' (')\n )\n}\n\ninterface StructureErrorProps {\n error: unknown\n}\n\nexport function StructureError({error}: StructureErrorProps) {\n if (!(error instanceof PaneResolutionError)) {\n throw error\n }\n const {cause} = error\n const {t} = useTranslation(structureLocaleNamespace)\n\n // Serialize errors are well-formatted and should be readable, in these cases a stack trace is\n // usually not helpful. Build errors in dev (with HMR) usually also contains a bunch of garbage\n // instead of an actual error message, so make sure we show the message in these cases as well\n const stack = cause?.stack || error.stack\n const showStack =\n stack && !(cause instanceof SerializeError) && !error.message.includes('Module build failed:')\n\n const path = cause instanceof SerializeError ? cause.path : []\n const helpId = (cause instanceof SerializeError && cause.helpId) || error.helpId\n\n const handleReload = useCallback(() => {\n window.location.reload()\n }, [])\n\n return (\n <Card height=\"fill\" overflow=\"auto\" padding={4} sizing=\"border\" tone=\"critical\">\n <Container>\n <Heading as=\"h2\">{t('structure-error.header.text')}</Heading>\n\n <Card marginTop={4} padding={4} radius={2} overflow=\"auto\" shadow={1} tone=\"inherit\">\n {path.length > 0 && (\n <Stack space={2}>\n <Text size={1} weight=\"medium\">\n {t('structure-error.structure-path.label')}\n </Text>\n <Code>\n {/* TODO: it seems like the path is off by one and includes */}\n {/* `root` twice */}\n {path.slice(1).map((segment, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <PathSegment key={`${segment}-${i}`}>{segment}</PathSegment>\n ))}\n </Code>\n </Stack>\n )}\n\n <Stack marginTop={4} space={2}>\n <Text size={1} weight=\"medium\">\n {t('structure-error.error.label')}\n </Text>\n <Code>{showStack ? formatStack(stack) : error.message}</Code>\n </Stack>\n\n {helpId && (\n <Box marginTop={4}>\n <Text>\n <a href={generateHelpUrl(helpId)} rel=\"noopener noreferrer\" target=\"_blank\">\n {t('structure-error.docs-link.text')}\n </a>\n </Text>\n </Box>\n )}\n\n <Box marginTop={4}>\n <Button\n text={t('structure-error.reload-button.text')}\n icon={SyncIcon}\n tone=\"primary\"\n onClick={handleReload}\n />\n </Box>\n </Card>\n </Container>\n </Card>\n )\n}\n","import {Box, Text} from '@sanity/ui'\nimport React from 'react'\nimport {Pane, PaneContent, PaneHeader} from '../../components/pane'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {isRecord, Translate, useTranslation} from 'sanity'\n\ninterface UnknownPaneProps {\n isSelected: boolean\n pane: unknown\n paneKey: string\n}\n\n/**\n * @internal\n */\nexport function UnknownPane(props: UnknownPaneProps) {\n const {isSelected, pane, paneKey} = props\n const type = (isRecord(pane) && pane.type) || null\n const {t} = useTranslation(structureLocaleNamespace)\n return (\n <Pane id={paneKey} selected={isSelected}>\n <PaneHeader title={t('panes.unknown-pane-type.title')} />\n <PaneContent>\n <Box padding={4}>\n {typeof type === 'string' ? (\n <Text as=\"p\" muted>\n <Translate\n t={t}\n i18nKey=\"panes.unknown-pane-type.unknown-type.text\"\n values={{type}}\n />\n </Text>\n ) : (\n <Text as=\"p\" muted>\n <Translate t={t} i18nKey=\"panes.unknown-pane-type.missing-type.text\" />\n </Text>\n )}\n </Box>\n </PaneContent>\n </Pane>\n )\n}\n","import React, {memo, lazy, Suspense} from 'react'\nimport {isEqual} from 'lodash'\nimport type {PaneNode} from '../types'\nimport {PaneRouterProvider} from '../components/paneRouter'\nimport {UnknownPane} from './unknown'\nimport {LoadingPane} from './loading'\n\ninterface StructureToolPaneProps {\n active: boolean\n childItemId: string | null\n groupIndex: number\n index: number\n itemId: string\n pane: PaneNode\n paneKey: string\n params: Record<string, string | undefined>\n payload: unknown\n path: string\n selected: boolean\n siblingIndex: number\n}\n\n// TODO: audit this creates separate chunks\nconst paneMap = {\n component: lazy(() => import('./userComponent')),\n document: lazy(() => import('./document/pane')),\n documentList: lazy(() => import('./documentList/pane')),\n list: lazy(() => import('./list')),\n}\n\n/**\n * NOTE: The same pane might appear multiple times (split pane), so use index as tiebreaker\n *\n * @internal\n */\nexport const StructureToolPane = memo(\n function StructureToolPane(props: StructureToolPaneProps) {\n const {\n active,\n childItemId,\n groupIndex,\n index,\n itemId,\n pane,\n paneKey,\n params,\n payload,\n path,\n selected,\n siblingIndex,\n } = props\n\n const PaneComponent = paneMap[pane.type] || UnknownPane\n\n return (\n <PaneRouterProvider\n flatIndex={index}\n index={groupIndex}\n params={params}\n payload={payload}\n siblingIndex={siblingIndex}\n >\n <Suspense fallback={<LoadingPane paneKey={paneKey} path={path} selected={selected} />}>\n <PaneComponent\n childItemId={childItemId || ''}\n index={index}\n itemId={itemId}\n isActive={active}\n isSelected={selected}\n paneKey={paneKey}\n // @ts-expect-error TS doesn't know how to handle this intersection\n pane={pane}\n />\n </Suspense>\n </PaneRouterProvider>\n )\n },\n (\n {params: prevParams = {}, payload: prevPayload = null, ...prev},\n {params: nextParams = {}, payload: nextPayload = null, ...next},\n ) => {\n // deeply compare these objects (it's okay, they're small)\n if (!isEqual(prevParams, nextParams)) return false\n if (!isEqual(prevPayload, nextPayload)) return false\n\n const keys = new Set([...Object.keys(prev), ...Object.keys(next)]) as Set<\n keyof typeof next | keyof typeof prev\n >\n\n // then shallow equal the rest\n for (const key of keys) {\n if (prev[key] !== next[key]) return false\n }\n\n return true\n },\n)\n","import {WarningOutlineIcon} from '@sanity/icons'\nimport {Box, Card, Container, Flex, Stack, Text} from '@sanity/ui'\nimport React from 'react'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {useTranslation} from 'sanity'\n\nexport function NoDocumentTypesScreen() {\n const {t} = useTranslation(structureLocaleNamespace)\n\n return (\n <Card height=\"fill\">\n <Flex align=\"center\" height=\"fill\" justify=\"center\" padding={4} sizing=\"border\">\n <Container width={0}>\n <Card padding={4} radius={2} shadow={1} tone=\"caution\">\n <Flex>\n <Box>\n <Text size={1}>\n <WarningOutlineIcon />\n </Text>\n </Box>\n <Stack flex={1} marginLeft={3} space={3}>\n <Text as=\"h1\" size={1} weight=\"medium\">\n {t('no-document-types-screen.title')}\n </Text>\n <Text as=\"p\" muted size={1}>\n {t('no-document-types-screen.subtitle')}\n </Text>\n <Text as=\"p\" muted size={1}>\n <a\n href=\"https://www.sanity.io/docs/create-a-schema-and-configure-sanity-studio\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {t('no-document-types-screen.link-text')}\n </a>\n </Text>\n </Stack>\n </Flex>\n </Card>\n </Container>\n </Flex>\n </Card>\n )\n}\n","import React, {useEffect} from 'react'\nimport type {ObjectSchemaType} from '@sanity/types'\nimport type {Panes} from '../../structureResolvers'\nimport {structureLocaleNamespace} from '../../i18n'\nimport type {DocumentPaneNode} from '../../types'\nimport {useStructureTool} from '../../useStructureTool'\nimport {LOADING_PANE} from '../../constants'\nimport {\n useEditState,\n useSchema,\n useTranslation,\n unstable_useValuePreview as useValuePreview,\n} from 'sanity'\n\ninterface StructureTitleProps {\n resolvedPanes: Panes['resolvedPanes']\n}\n\nconst DocumentTitle = (props: {documentId: string; documentType: string}) => {\n const {documentId, documentType} = props\n const editState = useEditState(documentId, documentType)\n const schema = useSchema()\n const {t} = useTranslation(structureLocaleNamespace)\n const isNewDocument = !editState?.published && !editState?.draft\n const documentValue = editState?.draft || editState?.published\n const schemaType = schema.get(documentType) as ObjectSchemaType | undefined\n\n const {value, isLoading: previewValueIsLoading} = useValuePreview({\n enabled: true,\n schemaType,\n value: documentValue,\n })\n\n const documentTitle = isNewDocument\n ? t('browser-document-title.new-document', {\n schemaType: schemaType?.title || schemaType?.name,\n })\n : value?.title || t('browser-document-title.untitled-document')\n\n const settled = editState.ready && !previewValueIsLoading\n const newTitle = useConstructDocumentTitle(documentTitle)\n useEffect(() => {\n if (!settled) return\n // Set the title as the document title\n document.title = newTitle\n }, [documentTitle, settled, newTitle])\n\n return null\n}\n\nconst PassthroughTitle = (props: {title?: string}) => {\n const {title} = props\n const newTitle = useConstructDocumentTitle(title)\n useEffect(() => {\n // Set the title as the document title\n document.title = newTitle\n }, [newTitle, title])\n return null\n}\n\nexport const StructureTitle = (props: StructureTitleProps) => {\n const {resolvedPanes} = props\n\n if (!resolvedPanes?.length) return null\n\n const lastPane = resolvedPanes[resolvedPanes.length - 1]\n\n // If the last pane is loading, display the structure tool title only\n if (isLoadingPane(lastPane)) {\n return <PassthroughTitle />\n }\n\n // If the last pane is a document\n if (isDocumentPane(lastPane)) {\n // Passthrough the document pane's title, which may be defined in structure builder\n if (lastPane?.title) {\n return <PassthroughTitle title={lastPane.title} />\n }\n\n // Otherwise, display a `document.title` containing the resolved Sanity document title\n return <DocumentTitle documentId={lastPane.options.id} documentType={lastPane.options.type} />\n }\n\n // Otherwise, display the last pane's title (if present)\n return <PassthroughTitle title={lastPane?.title} />\n}\n\n/**\n * Construct a pipe delimited title containing `activeTitle` (if applicable) and the base structure title.\n *\n * @param activeTitle - Title of the first segment\n *\n * @returns A pipe delimited title in the format `${activeTitle} | %BASE_STRUCTURE_TITLE%`\n * or simply `%BASE_STRUCTURE_TITLE` if `activeTitle` is undefined.\n */\nfunction useConstructDocumentTitle(activeTitle?: string) {\n const structureToolBaseTitle = useStructureTool().structureContext.title\n return [activeTitle, structureToolBaseTitle].filter((title) => title).join(' | ')\n}\n\n// Type guards\nfunction isDocumentPane(pane: Panes['resolvedPanes'][number]): pane is DocumentPaneNode {\n return pane !== LOADING_PANE && pane.type === 'document'\n}\n\nfunction isLoadingPane(pane: Panes['resolvedPanes'][number]): pane is typeof LOADING_PANE {\n return pane === LOADING_PANE\n}\n","import {PortalProvider, useTheme, useToast} from '@sanity/ui'\nimport React, {memo, Fragment, useState, useEffect, useCallback} from 'react'\nimport styled from 'styled-components'\nimport isHotkey from 'is-hotkey'\nimport {LOADING_PANE} from '../../constants'\nimport {LoadingPane, StructureToolPane} from '../../panes'\nimport {useResolvedPanes} from '../../structureResolvers'\nimport type {PaneNode} from '../../types'\nimport {PaneLayout} from '../pane'\nimport {useStructureTool} from '../../useStructureTool'\nimport {NoDocumentTypesScreen} from './NoDocumentTypesScreen'\nimport {StructureTitle} from './StructureTitle'\nimport {useSchema, _isCustomDocumentTypeDefinition} from 'sanity'\nimport {useRouterState} from 'sanity/router'\n\ninterface StructureToolProps {\n onPaneChange: (panes: Array<PaneNode | typeof LOADING_PANE>) => void\n}\n\nconst StyledPaneLayout = styled(PaneLayout)`\n min-height: 100%;\n min-width: 320px;\n`\n\nconst isSaveHotkey = isHotkey('mod+s')\n\n/**\n * @internal\n */\nexport const StructureTool = memo(function StructureTool({onPaneChange}: StructureToolProps) {\n const {push: pushToast} = useToast()\n const schema = useSchema()\n const {layoutCollapsed, setLayoutCollapsed} = useStructureTool()\n const {paneDataItems, resolvedPanes} = useResolvedPanes()\n // Intent resolving is processed by the sibling `<IntentResolver />` but it doesn't have a UI for indicating progress.\n // We handle that here, so if there are only 1 pane (the root structure), and there's an intent state in the router, we need to show a placeholder LoadingPane until\n // the structure is resolved and we know what panes to load/display\n const isResolvingIntent = useRouterState(\n useCallback((routerState) => typeof routerState.intent === 'string', []),\n )\n const {\n sanity: {media},\n } = useTheme()\n\n const [portalElement, setPortalElement] = useState<HTMLDivElement | null>(null)\n\n const handleRootCollapse = useCallback(() => setLayoutCollapsed(true), [setLayoutCollapsed])\n const handleRootExpand = useCallback(() => setLayoutCollapsed(false), [setLayoutCollapsed])\n\n useEffect(() => {\n // we check for length before emitting here to skip the initial empty array\n // state from the `useResolvedPanes` hook. there should always be a root\n // pane emitted on subsequent emissions\n if (resolvedPanes.length) {\n onPaneChange(resolvedPanes)\n }\n }, [onPaneChange, resolvedPanes])\n\n useEffect(() => {\n const handleGlobalKeyDown = (event: KeyboardEvent) => {\n // Prevent `Cmd+S`\n if (isSaveHotkey(event)) {\n event.preventDefault()\n\n pushToast({\n closable: true,\n id: 'auto-save-message',\n status: 'info',\n title: 'Your work is automatically saved!',\n duration: 4000,\n })\n }\n }\n\n window.addEventListener('keydown', handleGlobalKeyDown)\n return () => window.removeEventListener('keydown', handleGlobalKeyDown)\n }, [pushToast])\n\n const hasDefinedDocumentTypes = schema._original?.types.some(_isCustomDocumentTypeDefinition)\n\n if (!hasDefinedDocumentTypes) {\n return <NoDocumentTypesScreen />\n }\n\n return (\n <PortalProvider element={portalElement || null}>\n <StyledPaneLayout\n flex={1}\n height={layoutCollapsed ? undefined : 'fill'}\n minWidth={media[1]}\n onCollapse={handleRootCollapse}\n onExpand={handleRootExpand}\n >\n {paneDataItems.map(\n ({\n active,\n childItemId,\n groupIndex,\n itemId,\n key: paneKey,\n pane,\n index: paneIndex,\n params: paneParams,\n path,\n payload,\n siblingIndex,\n selected,\n }) => (\n <Fragment key={`${pane === LOADING_PANE ? 'loading' : pane.type}-${paneIndex}`}>\n {pane === LOADING_PANE ? (\n <LoadingPane paneKey={paneKey} path={path} selected={selected} />\n ) : (\n <StructureToolPane\n active={active}\n groupIndex={groupIndex}\n index={paneIndex}\n pane={pane}\n childItemId={childItemId}\n itemId={itemId}\n paneKey={paneKey}\n params={paneParams}\n payload={payload}\n path={path}\n selected={selected}\n siblingIndex={siblingIndex}\n />\n )}\n </Fragment>\n ),\n )}\n {/* If there's just 1 pane (the root), or less, and we're resolving an intent then it's necessary to show */}\n {/* a loading indicator as the intent resolving is async, could take a while and can also be interrupted/redirected */}\n {paneDataItems.length <= 1 && isResolvingIntent && (\n <LoadingPane paneKey=\"intent-resolver\" />\n )}\n </StyledPaneLayout>\n <StructureTitle resolvedPanes={resolvedPanes} />\n <div data-portal=\"\" ref={setPortalElement} />\n </PortalProvider>\n )\n})\n","import React, {useEffect, useState} from 'react'\nimport {ErrorBoundary} from '@sanity/ui'\nimport type {StructureToolOptions} from '../../types'\nimport {StructureToolProvider} from '../../StructureToolProvider'\nimport {setActivePanes} from '../../getIntentState'\nimport {IntentResolver} from './intentResolver'\nimport {StructureError} from './StructureError'\nimport {StructureTool} from './StructureTool'\nimport {SourceProvider, useWorkspace, Tool} from 'sanity'\n\ninterface StructureToolBoundaryProps {\n tool: Tool<StructureToolOptions>\n}\n\nexport function StructureToolBoundary({tool: {options}}: StructureToolBoundaryProps) {\n const {unstable_sources: sources} = useWorkspace()\n const [firstSource] = sources\n const {source, defaultDocumentNode, structure} = options || {}\n\n // Set active panes to blank on mount and unmount\n useEffect(() => {\n setActivePanes([])\n return () => setActivePanes([])\n }, [])\n\n const [{error}, setError] = useState<{error: unknown}>({error: null})\n // this re-throws if the error it catches is not a PaneResolutionError\n if (error) return <StructureError error={error} />\n\n return (\n <ErrorBoundary onCatch={setError}>\n <SourceProvider name={source || firstSource.name}>\n <StructureToolProvider defaultDocumentNode={defaultDocumentNode} structure={structure}>\n <StructureTool onPaneChange={setActivePanes} />\n <IntentResolver />\n </StructureToolProvider>\n </SourceProvider>\n </ErrorBoundary>\n )\n}\n"],"names":["emptyArray","PaneRouterProvider","props","children","flatIndex","index","params","payload","siblingIndex","navigate","navigateIntent","resolvePathFromState","useRouter","routerState","useRouterState","panes","expand","usePaneLayout","routerPaneGroups","useMemo","lastPane","length","groupIndex","createNextRouterState","useCallback","modifier","currentGroup","currentItem","nextGroup","nextPanes","slice","nextRouterState","modifyCurrentGroup","setTimeout","createPathWithParams","nextParams","siblings","item","setPayload","nextPayload","setParams","handleEditReference","_ref","id","parentRefPath","type","template","pathToString","ctx","hasGroupSiblings","groupLength","routerPanesState","ChildLink","BackLink","ReferenceChildLink","ParameterizedLink","replaceCurrent","opts","arguments","undefined","closeCurrent","filter","sibling","closeCurrentAndAfter","expandLast","element","replace","duplicateCurrent","options","duplicatedItem","setView","viewId","restParams","omit","view","PaneRouterContext","Provider","value","PaneResolutionError","Error","constructor","message","context","helpId","cause","_ref2","randomIdCache","WeakMap","assignId","obj","cachedValue","get","nanoid","set","bindCache","memoBind","methodKey","boundMethods","Map","bound","method","concat","bind","isPromise","thing","then","isSerializable","isRecord","serialize","rethrowWithPaneResolutionErrors","next","unresolvedPane","e","wrapWithPublishReplay","pipe","publishReplay","refCount","createPaneResolver","middleware","resolvePane","isObservable","from","switchMap","result","observableOf","resolveIntent","resolvedPaneCache","memoize","nextFn","key","path","join","cachedResolvedPane","fallbackEditorPanes","traverse","_ref3","currentId","intent","parent","levelIndex","structureContext","_a","targetId","schemaTypeName","otherParams","splitIndex","resolvedPane","firstValueFrom","map","i","depthIndex","canHandleIntent","call","pane","child","items","Promise","all","nextLevelIndex","resolve","_id","flat","matchingPanes","rootPaneNode","closestPaneToRoot","sort","a","b","fallbackEditorChild","nodeId","resolveDocumentNode","defaultDocumentBuilder","schemaType","documentId","initialValueTemplate","hashContext","_b","stringify","parentId","serializeOptionsIndex","serializeOptions","serializeOptionsPath","hashResolvedPaneMeta","meta","normalized","routerPaneSibling","paneNode","JSON","resolvePaneTree","_ref4","flattenedRouterPanes","current","rest","resolvedPaneMeta","loadingPanes","restIndex","loadingPanePath","_","currentIndex","loadingPane","nextStream","startsWith","nextResolvedPanes","console","warn","generateHelpUrl","createResolvedPaneNodeStream","_ref5","routerPanesStream","initialCacheState","cacheKeysByFlatIndex","NEVER","resolvedPanes$","rawRouterPanes","routerPanes","flatMap","routerPaneGroup","startWith","pairwise","_ref6","prev","curr","prevValue","currValue","isEqual","diffIndex","scan","acc","beforeDiffIndex","afterDiffIndex","keysToKeep","Set","keySet","Array","keysToDelete","has","delete","cacheKeySet","add","_ref7","nextPane","prevPane","distinctUntilChanged","nextValue","useRouterPanesStream","routerStateSubject","ReplaySubject","routerPanes$","asObservable","_routerState","state","useEffect","useResolvedPanes","error","setError","useState","useStructureTool","data","setData","paneDataItems","resolvedPanes","reduce","groupsLen","itemId","paneDataItem","active","childItemId","LOADING_PANE","selected","subscription","subscribe","unsubscribe","ensureDocumentIdAndType","documentStore","uuid","resolvedType","resolveTypeForDocument","EMPTY_RECORD","IntentResolver","memo","IntentResolver2","maybeIntent","intentName","useDocumentStore","cancelled","effect","catch","PathSegment","styled","span","__template","formatStack","stack","RegExp","location","host","StructureError","_ref8","t","useTranslation","structureLocaleNamespace","showStack","SerializeError","includes","handleReload","window","reload","jsx","Card","height","overflow","padding","sizing","tone","Container","Heading","as","jsxs","marginTop","radius","shadow","Stack","space","Text","size","weight","Code","segment","Box","href","rel","target","Button","text","icon","SyncIcon","onClick","UnknownPane","isSelected","paneKey","Pane","PaneHeader","title","PaneContent","muted","Translate","i18nKey","values","paneMap","component","lazy","document","documentList","list","StructureToolPane","PaneComponent","Suspense","fallback","LoadingPane","isActive","_ref9","_ref10","prevParams","prevPayload","keys","Object","NoDocumentTypesScreen","Flex","align","justify","width","WarningOutlineIcon","flex","marginLeft","DocumentTitle","documentType","editState","useEditState","schema","useSchema","isNewDocument","published","draft","documentValue","isLoading","previewValueIsLoading","useValuePreview","enabled","documentTitle","name","settled","ready","newTitle","useConstructDocumentTitle","PassthroughTitle","StructureTitle","isLoadingPane","isDocumentPane","activeTitle","structureToolBaseTitle","StyledPaneLayout","PaneLayout","isSaveHotkey","isHotkey","StructureTool","StructureTool2","_ref11","onPaneChange","push","pushToast","useToast","layoutCollapsed","setLayoutCollapsed","isResolvingIntent","sanity","media","useTheme","portalElement","setPortalElement","handleRootCollapse","handleRootExpand","handleGlobalKeyDown","event","preventDefault","closable","status","duration","addEventListener","removeEventListener","hasDefinedDocumentTypes","_original","types","some","_isCustomDocumentTypeDefinition","PortalProvider","minWidth","onCollapse","onExpand","_ref12","paneIndex","paneParams","Fragment","ref","StructureToolBoundary","tool","_ref13","unstable_sources","sources","useWorkspace","firstSource","source","defaultDocumentNode","structure","setActivePanes","ErrorBoundary","onCatch","SourceProvider","StructureToolProvider"],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var ui = require('@sanity/ui');
5
5
  var React = require('react');
6
- var structure = require('./structure-588eAwLd.js');
6
+ var structure = require('./structure-o_wMXC_G.js');
7
7
  var sanity = require('sanity');
8
8
  var TooltipDelayGroupProvider = require('./TooltipDelayGroupProvider-1BNus33w.js');
9
9
  var icons = require('@sanity/icons');
@@ -180,4 +180,4 @@ function ListPane(props) {
180
180
  });
181
181
  }
182
182
  exports.default = ListPane;
183
- //# sourceMappingURL=index-AaK2CidU.js.map
183
+ //# sourceMappingURL=index-NweJPfGb.js.map