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
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/core/components/react-track-elements/createNoopTrackerScope.tsx","../src/core/changeIndicators/ChangeFieldWrapper.tsx","../src/core/util/isArray.ts","../src/core/util/isTruthy.ts","../src/core/util/schemaUtils.ts","../src/core/util/uncaughtErrorHandler.ts","../src/core/util/useThrottledCallback.ts","../src/core/components/scroll/hooks.ts","../src/core/components/scroll/scrollMonitor.tsx","../src/core/changeIndicators/helpers/findMostSpecificTarget.ts","../src/core/changeIndicators/helpers/isChangeBar.ts","../src/core/changeIndicators/helpers/scrollUtils.ts","../src/core/changeIndicators/helpers/scrollIntoView.ts","../src/core/changeIndicators/helpers/getOffsetsTo.ts","../src/core/changeIndicators/overlay/useResizeObserver.ts","../src/core/changeIndicators/overlay/ConnectorsOverlay.tsx","../src/core/changeIndicators/overlay/ChangeConnectorRoot.tsx","../src/core/components/NoJavascript.tsx","../src/core/components/globalErrorHandler/GlobalErrorHandler.tsx","../src/core/components/Favicons.tsx","../src/core/components/DefaultDocument.tsx","../src/core/components/hookCollection/actionId.ts","../src/core/components/hookCollection/requestIdleCallback.ts","../src/core/components/hookCollection/GetHookCollectionState.tsx","../src/core/components/Hotkeys.tsx","../src/core/components/IntentButton.tsx","../src/core/config/defineConfig.ts","../src/core/config/definePlugin.ts","../src/core/config/document/fieldActions/define.ts","../src/core/config/document/inspector.ts","../src/core/store/_legacy/authStore/createMockAuthStore.ts","../src/core/hooks/useConnectionState.ts","../src/core/hooks/useDocumentOperationEvent.ts","../src/core/hooks/useEditState.ts","../src/core/hooks/useFormattedDuration.ts","../src/core/hooks/useNumberFormat.ts","../src/core/hooks/useSyncState.ts","../src/core/hooks/useTimeAgo.ts","../src/core/hooks/useTools.ts","../src/core/hooks/useValidationStatus.ts","../src/core/form/patch/PatchChannel.ts","../src/core/field/types/array/util/arrayUtils.ts","../src/core/field/types/array/diff/ArrayOfOptionsFieldDiff.tsx","../src/core/field/types/url/diff/UrlFieldDiff.tsx","../src/core/field/types/slug/diff/SlugFieldDiff.tsx","../src/core/field/diff/resolve/diffResolver.ts","../src/core/form/inputs/PortableText/_legacyDefaultParts/CustomMarkers.tsx","../src/core/form/field/HoveredFieldProvider.tsx","../src/core/form/FormBuilderProvider.tsx","../src/core/form/studio/FormProvider.tsx","../src/core/form/studio/FormBuilder.tsx","../src/core/form/studio/contexts/reviewChanges/useReviewChanges.ts","../src/core/presence/PresenceScope.tsx","../src/core/form/members/array/ArrayOfObjectsInputMember.tsx","../src/core/form/members/array/ArrayOfObjectsInputMembers.tsx","../src/core/form/studio/defaults.ts","../src/core/store/_legacy/document/document-pair/remoteSnapshots.ts","../src/core/templates/prepare.ts","../src/core/store/_legacy/document/hooks/useDocumentType.ts","../src/core/store/_legacy/history/useTimelineStore.ts","../src/core/store/_legacy/history/useTimelineSelector.ts","../src/core/store/_legacy/project/useProject.ts","../src/core/store/_legacy/project/useProjectDatasets.ts","../src/core/config/resolveConfig.ts","../src/core/config/useConfigContextFromSource.ts","../src/core/theme/_legacy/helpers.ts","../src/core/theme/_legacy/color.ts","../src/core/theme/_legacy/fonts.ts","../src/core/theme/_legacy/palette.ts","../src/core/theme/_legacy/tones.ts","../src/core/theme/_legacy/theme.ts","../src/core/studio/components/navbar/StudioLogo.tsx","../src/core/studio/Studio.tsx","../src/core/studio/renderStudio.tsx","../src/core/components/WithReferringDocuments.tsx","../src/core/components/zOffsets/ZIndexProvider.tsx","../src/core/components/BetaBadge.tsx","../src/core/components/RelativeTime.tsx","../src/core/form/inputs/TelephoneInput.tsx","../src/core/form/store/stateTreeHelper.ts","../src/core/form/store/constants.ts","../src/core/form/store/types/asserters.ts","../src/core/form/store/utils/getExpandOperations.ts","../src/core/form/store/conditional-property/resolveConditionalProperty.ts","../src/core/form/store/utils/getItemType.ts","../src/core/form/store/utils/getCollapsibleOptions.ts","../src/core/form/store/formState.ts","../src/core/form/store/useFormState.ts","../src/core/form/utils/path.ts","../src/core/form/utils/mutationPatch.ts"],"sourcesContent":["import React from 'react'\nimport {Reported} from './types'\n\n// eslint-disable-next-line no-empty-function, @typescript-eslint/no-empty-function\nfunction noop() {}\n\nfunction NoopTracker({children}: {children: React.ReactNode}) {\n return <>{children}</>\n}\n\n/** @internal */\nexport function createNoopTrackerScope<T>() {\n return {\n useReportedValues: noop as () => Reported<T>[],\n Tracker: NoopTracker,\n useReporter: noop as (id: string | null, value: T | (() => T)) => void,\n }\n}\n","import * as PathUtils from '@sanity/util/paths'\nimport React, {SyntheticEvent, useCallback} from 'react'\nimport {Path} from '@sanity/types'\nimport deepCompare from 'react-fast-compare'\nimport {useReporter} from './tracker'\nimport {ConnectorContext} from './ConnectorContext'\n\n/**\n * This is used to draw the bar that wraps the diff components in the changes panel\n *\n * @internal\n */\nexport const ChangeFieldWrapper = (props: {\n path: Path\n children: React.ReactNode\n hasHover: boolean\n}) => {\n const ref = React.useRef<HTMLDivElement>(null)\n const {onSetFocus} = React.useContext(ConnectorContext)\n const [isHover, setHover] = React.useState(false)\n\n const onMouseEnter = React.useCallback(() => {\n setHover(true)\n }, [])\n\n const onMouseLeave = React.useCallback(() => {\n setHover(false)\n }, [])\n\n useReporter(\n `change-${PathUtils.toString(props.path)}`,\n () => ({\n element: ref.current!,\n path: props.path,\n isChanged: true,\n hasFocus: false,\n hasHover: isHover,\n hasRevertHover: props.hasHover,\n }),\n // note: deepCompare should be ok here since we're not comparing deep values\n deepCompare,\n )\n\n const handleClick = useCallback(\n (event: SyntheticEvent) => {\n setFocusWithStopPropagation(event, onSetFocus, props.path)\n },\n [onSetFocus, props.path],\n )\n\n return (\n <div ref={ref} onClick={handleClick} onMouseLeave={onMouseLeave} onMouseEnter={onMouseEnter}>\n {props.children}\n </div>\n )\n}\n\n// Stop the propagation here, or it will trigger the parent diff component's onClick.\nfunction setFocusWithStopPropagation(\n event: React.SyntheticEvent,\n onSetFocus: (toPath: Path) => void,\n path: Path,\n): void {\n event.stopPropagation()\n onSetFocus(path)\n}\n","/** @internal */\nexport function isArray(value: unknown): value is unknown[] {\n return Array.isArray(value)\n}\n","/** @internal */\nexport function isTruthy<T>(value: T | false): value is T {\n return Boolean(value)\n}\n","import {SchemaTypeDefinition} from '@sanity/types'\n\nconst BUNDLED_DOC_TYPES = ['sanity.imageAsset', 'sanity.fileAsset']\n\n/**\n * @internal\n */\nexport function _isSanityDocumentTypeDefinition(\n def: SchemaTypeDefinition,\n): def is SchemaTypeDefinition<'document'> {\n return def.type === 'document' && BUNDLED_DOC_TYPES.includes(def.name)\n}\n\n/**\n * @internal\n */\nexport function _isCustomDocumentTypeDefinition(\n def: SchemaTypeDefinition,\n): def is SchemaTypeDefinition<'document'> {\n return def.type === 'document' && !_isSanityDocumentTypeDefinition(def)\n}\n","const FONT_SANS_SERIF = `-apple-system, BlinkMacSystemFont, \\\\'Segoe UI\\\\', Roboto, \\\\'Helvetica Neue\\\\', Helvetica, Arial, system-ui, sans-serif`\nconst FONT_MONOSPACE = `-apple-system-ui-monospace, \\\\'SF Mono\\\\', Menlo, Monaco, Consolas, monospace`\n\n/** @internal */\nexport const uncaughtErrorHandler = (): string =>\n // prettier-ignore\n [\n `window.onerror = function(m,u,l,c,e) {`,\n `var p=window.location.port;`,\n `var h=window.location.protocol+'//'+window.location.hostname+(p?':'+p:'');`,\n `var r=document.getElementById('sanity');`,\n `while(r.firstChild){r.removeChild(r.firstChild);}`,\n `var s=document.createElement('style');`,\n `s.appendChild(document.createTextNode('`,\n `html,body,#sanityBody,#sanity,#sanityError{height:100%;}`,\n `body{-webkit-font-smoothing:antialiased;margin:0;}`,\n `#sanityError{position:fixed;top:0;left:0;width:100%;height:100%;overflow:auto;background-color:#fff;color:#121923;font-family:${FONT_SANS_SERIF};font-size:16px;line-height:21px;min-height:100%;}`,\n `#sanityError>div{background-color:#fff;max-width:960px;margin:0 auto;padding:47px 32px 52px;}`,\n `@media(min-width:512px){`,\n `#sanityError>div{`,\n `padding:47px 84px;`,\n `}`,\n `}`,\n `#sanityError button{-webkit-font-smoothing:inherit;font:inherit;font-weight:500;background-color:#2276FC;color:#fff;padding:7px 12px;border-radius:3px;border:0;}`,\n `#sanityError button:hover{background-color:#1E63D0;}`,\n `#sanityError button:active{background-color:#1B50A5;}`,\n `'));`,\n `document.head.appendChild(s);`,\n `var f=document.createElement('div');`,\n `f.id='sanityError';`,\n `f.innerHTML='`,\n `<div>`,\n `<h1 style=\"font-size:21px;line-height:27px;margin: 0 0 10px;\">Unhandled error</h1>`,\n `<p style=\"color:#66758D;margin:10px 0 14px;\">Encountered an unhandled error in this Studio.</p>`,\n `<button class=\"sanity-error-handler__reload-btn\" type=\"button\">Reload page</button>`,\n `<pre style=\"background-color:#FDEBEA;color:#C3362C;font-size:13px;line-height:17px;padding:8px 12px;border-radius:3px;margin:32px 0 0;overflow:auto;\">`,\n `<code style=\"font-family:${FONT_MONOSPACE};\">`,\n `'+e.stack.replaceAll(h,'')+'`,\n `</code>`,\n `</pre>`,\n `</div>`,\n `';`,\n `var b=f.querySelector('.sanity-error-handler__reload-btn');`,\n `if(b){`,\n `b.onclick=function() {`,\n `window.location.reload();`,\n `}`,\n `};`,\n `r.appendChild(f);`,\n `};`,\n ].join('')\n","import {throttle, type ThrottleSettings} from 'lodash'\nimport {useMemo} from 'react'\n\n/**\n * @internal\n *\n * @example\n * ```tsx\n * // First create a callback using React’s `useCallback` hook\n * const myCallback = useCallback(() => {\n * // this is not throttled\n * }, [])\n *\n * // Then make a throttled version using the `useThrottledCallback` hook\n * const myThrottledCallback = useThrottledCallback(myCallback, 100)\n *\n * // Call the throttled callback\n * <Button onClick={myThrottledCallback} />\n * ```\n */\nexport function useThrottledCallback(\n callback: (...args: any[]) => any,\n wait: number,\n options: ThrottleSettings,\n): (...args: any[]) => any {\n const throttledCallback = useMemo(\n () => throttle(callback, wait, options),\n [callback, options, wait],\n )\n\n return throttledCallback\n}\n","import React from 'react'\nimport {ScrollContext} from './scrollContext'\nimport {Subscriber} from 'nano-pubsub'\n\n/** @internal */\nexport function useOnScroll(callback: Subscriber<Event>) {\n const parentContext = React.useContext(ScrollContext)\n React.useEffect(() => {\n return parentContext?.subscribe(callback)\n }, [callback, parentContext])\n}\n","import React from 'react'\nimport {useOnScroll} from './hooks'\nimport {ScrollEventHandler} from './types'\n\n/** @internal */\nexport interface ScrollMonitorProps {\n onScroll: ScrollEventHandler\n children?: React.ReactNode\n}\n\n/** @internal */\nexport function ScrollMonitor({onScroll, children}: ScrollMonitorProps) {\n useOnScroll(onScroll)\n return <>{children}</>\n}\n","import {isKeyedObject} from '@sanity/types'\nimport * as PathUtils from '@sanity/util/paths'\nimport {TrackedChange, TrackedArea} from '../tracker'\n\nexport function findMostSpecificTarget(\n targetType: 'change' | 'field',\n id: string,\n values: Map<string, TrackedChange | TrackedArea>,\n): TrackedChange | undefined {\n const pathString = id.slice(id.indexOf('-') + 1) || '[]'\n const path = PathUtils.fromString(pathString)\n const exactId = `${targetType}-${PathUtils.toString(path)}`\n if (values.has(exactId)) {\n return values.get(exactId) as TrackedChange\n }\n\n let mostSpecific: TrackedChange | undefined\n for (const [targetId, target] of values) {\n if (!('path' in target) || !targetId.startsWith(targetType)) {\n continue\n }\n\n const numEqual = PathUtils.numEqualSegments(path, target.path)\n const lastPathSegment = target.path[target.path.length - 1]\n const pathOnlyDiffersByKey =\n numEqual === target.path.length - 1 && isKeyedObject(lastPathSegment)\n\n if (numEqual === 0) {\n continue\n } else if (numEqual !== target.path.length && !pathOnlyDiffersByKey) {\n /*\n * We only allow matching to shorter paths if the last element in the path is a keyed object.\n * `foo.bar.portableTextField[_key=abc123]` should resolve to `foo.bar.portableTextField`.\n *\n * Otherwise we'll only get a connector line when you add new elements to a portable text\n * field and not when you alter an existing part.\n */\n continue\n }\n\n mostSpecific = target\n\n if (numEqual === path.length) {\n // On exact match, return early\n break\n }\n }\n\n // if (!mostSpecific) {\n // throw new Error(`target not found: \"${id}\"`)\n // }\n\n return mostSpecific\n}\n","import {Reported} from '../../components/react-track-elements'\nimport {TrackedArea, TrackedChange} from '../tracker'\n\nexport function isChangeBar(\n v: Reported<TrackedArea | TrackedChange>,\n): v is Reported<TrackedChange> {\n return v[0] !== 'changePanel'\n}\n","export function hasOverflowScroll(el: HTMLElement): boolean {\n const overflow = getComputedStyle(el).overflow\n\n return overflow.includes('auto') || overflow.includes('scroll')\n}\n\n// Check whether an element is currently scrollable (meaning it must both have overflow scroll *and* content overflowing)\nexport function isScrollable(el: HTMLElement): boolean {\n const scrollableContent = el.scrollHeight !== el.offsetHeight || el.scrollWidth !== el.offsetWidth\n\n return scrollableContent && hasOverflowScroll(el)\n}\n","import {Rect} from '../overlay/types'\nimport {isScrollable} from './scrollUtils'\n\nconst SCROLL_INTO_VIEW_TOP_PADDING = -15\n\nexport function scrollIntoView(field: {element: HTMLElement; rect: Rect; bounds: Rect}): void {\n const element = field.element\n\n /*\n * Start at current element and check the parent for a scroll\n * bar until a scrollable element has been found.\n */\n let parentElementWithScroll: HTMLElement | null = element\n\n while (!isScrollable(parentElementWithScroll)) {\n parentElementWithScroll = parentElementWithScroll.parentElement\n\n /*\n * If the parent element is null it means we are at the root\n * element, which has no parent. Since no scroll bar has\n * been found so far it does not make sense to scroll.\n */\n if (!parentElementWithScroll) {\n return\n }\n }\n\n parentElementWithScroll.scroll({\n top:\n parentElementWithScroll.scrollTop +\n field.rect.top -\n field.bounds.top +\n SCROLL_INTO_VIEW_TOP_PADDING,\n left: 0,\n behavior: 'smooth',\n })\n}\n","import {Rect} from '../overlay/types'\nimport {hasOverflowScroll} from './scrollUtils'\n\nexport const getOffsetsTo = (\n source: HTMLElement,\n target: HTMLElement,\n): {rect: Rect; bounds: Rect} => {\n const bounds: Rect = {\n top: 0,\n left: 0,\n height: target.offsetHeight,\n width: target.offsetWidth,\n }\n\n const rect: Rect = {\n top: 0,\n left: 0,\n height: source.offsetHeight,\n width: source.offsetWidth,\n }\n\n let foundScrollContainer = false\n let el: HTMLElement | null = source\n\n while (el && el !== target && target.contains(el)) {\n if (foundScrollContainer) {\n bounds.top += el.offsetTop\n bounds.left += el.offsetLeft\n }\n\n if (hasOverflowScroll(el)) {\n bounds.top = el.offsetTop\n bounds.height = el.offsetHeight\n bounds.left = el.offsetLeft\n bounds.width = el.offsetWidth\n\n foundScrollContainer = true\n }\n\n rect.top += el.offsetTop - el.scrollTop\n rect.left += el.offsetLeft - el.scrollLeft\n\n el = el.offsetParent as HTMLElement\n }\n\n return {rect, bounds}\n}\n","import {useEffect} from 'react'\nimport {resizeObserver} from '../../util'\n\nexport function useResizeObserver(\n element: HTMLDivElement,\n onResize: (event: ResizeObserverEntry) => void,\n): void {\n useEffect(() => resizeObserver.observe(element, onResize), [element, onResize])\n}\n","import React, {useCallback, useMemo, useState} from 'react'\nimport {sortBy} from 'lodash'\nimport {Path} from '@sanity/types'\nimport {ScrollMonitor} from '../../components/scroll'\nimport {findMostSpecificTarget} from '../helpers/findMostSpecificTarget'\nimport {isChangeBar} from '../helpers/isChangeBar'\nimport {scrollIntoView} from '../helpers/scrollIntoView'\nimport {DEBUG_LAYER_BOUNDS} from '../constants'\nimport {getOffsetsTo} from '../helpers/getOffsetsTo'\nimport {TrackedArea, TrackedChange, useReportedValues} from '../tracker'\nimport {Reported} from '../../components/react-track-elements'\nimport {isNonNullable} from '../../util'\nimport {Connector} from './Connector'\nimport {DebugLayers} from './DebugLayers'\nimport {useResizeObserver} from './useResizeObserver'\nimport {SvgWrapper} from './ConnectorsOverlay.styled'\n\nexport interface Rect {\n height: number\n width: number\n top: number\n left: number\n}\n\ninterface State {\n connectors: {\n field: TrackedChange & {id: string; rect: Rect; bounds: Rect}\n change: TrackedChange & {id: string; rect: Rect; bounds: Rect}\n hasFocus: boolean\n hasHover: boolean\n hasRevertHover: boolean\n }[]\n isHoverConnector: boolean\n}\n\ninterface ConnectorsOverlayProps {\n rootElement: HTMLDivElement\n onSetFocus: (nextFocusPath: Path) => void\n}\n\nfunction getState(\n allReportedValues: Reported<TrackedChange | TrackedArea>[],\n hovered: string | null,\n byId: Map<string, TrackedChange | TrackedArea>,\n rootElement: HTMLElement,\n): State {\n const changeBarsWithHover: Reported<TrackedChange>[] = []\n const changeBarsWithFocus: Reported<TrackedChange>[] = []\n\n for (const value of allReportedValues) {\n if (!isChangeBar(value) || !value[1].isChanged) {\n continue\n }\n\n const [id, reportedChangeBar] = value\n\n if (id === hovered) {\n changeBarsWithHover.push(value)\n continue\n }\n\n if (reportedChangeBar.hasHover) {\n changeBarsWithHover.push(value)\n continue\n }\n\n if (reportedChangeBar.hasFocus) {\n changeBarsWithFocus.push(value)\n continue\n }\n }\n\n const isHoverConnector = changeBarsWithHover.length > 0\n\n const changeBars = isHoverConnector ? changeBarsWithHover : changeBarsWithFocus\n\n const connectors = changeBars\n .map(([id]) => {\n const field = findMostSpecificTarget('field', id, byId)\n const change = findMostSpecificTarget('change', id, byId)\n\n if (!field || !change) return null\n\n return {field: {id, ...field}, change: {id, ...change}}\n })\n .filter(isNonNullable)\n // .filter(({field, change}) => field && change && field.element && change.element)\n .map(({field, change}) => ({\n hasHover: field.hasHover || change.hasHover,\n hasFocus: field.hasFocus,\n hasRevertHover: change.hasRevertHover,\n field: {...field, ...getOffsetsTo(field.element, rootElement)},\n change: {...change, ...getOffsetsTo(change.element, rootElement)},\n }))\n\n return {connectors, isHoverConnector}\n}\n\nexport function ConnectorsOverlay(props: ConnectorsOverlayProps) {\n const {rootElement, onSetFocus} = props\n const [hovered, setHovered] = React.useState<string | null>(null)\n const allReportedValues = useReportedValues()\n const byId: Map<string, TrackedChange | TrackedArea> = useMemo(\n () => new Map(allReportedValues),\n [allReportedValues],\n )\n\n const [{connectors}, setState] = useState<State>(() =>\n getState(allReportedValues, hovered, byId, rootElement),\n )\n\n const visibleConnectors = useMemo(\n () => sortBy(connectors, (c) => 0 - c.field.path.length).slice(0, 1),\n [connectors],\n )\n\n const handleScrollOrResize = useCallback(() => {\n setState(getState(allReportedValues, hovered, byId, rootElement))\n }, [byId, allReportedValues, hovered, rootElement])\n\n useResizeObserver(rootElement, handleScrollOrResize)\n\n return (\n <ScrollMonitor onScroll={handleScrollOrResize}>\n <SvgWrapper style={{zIndex: visibleConnectors[0] && visibleConnectors[0].field.zIndex}}>\n {visibleConnectors.map(({field, change}) => {\n if (!change) {\n return null\n }\n\n return (\n <ConnectorGroup\n field={field}\n change={change}\n key={field.id}\n onSetFocus={onSetFocus}\n setHovered={setHovered}\n />\n )\n })}\n </SvgWrapper>\n </ScrollMonitor>\n )\n}\n\ninterface ConnectorGroupProps {\n field: TrackedChange & {id: string; rect: Rect; bounds: Rect}\n change: TrackedChange & {id: string; rect: Rect; bounds: Rect}\n setHovered: (id: string | null) => void\n onSetFocus: (path: Path) => void\n}\n\nfunction ConnectorGroup(props: ConnectorGroupProps) {\n const {change, field, onSetFocus, setHovered} = props\n\n const onConnectorClick = useCallback(() => {\n scrollIntoView(field)\n scrollIntoView(change)\n onSetFocus(field.path)\n }, [field, change, onSetFocus])\n\n const handleMouseEnter = useCallback(() => setHovered(field.id), [field, setHovered])\n const handleMouseLeave = useCallback(() => setHovered(null), [setHovered])\n\n const from = useMemo(\n () => ({\n rect: {\n ...field.rect,\n left: field.rect.left + 3,\n },\n bounds: field.bounds,\n }),\n [field.bounds, field.rect],\n )\n\n const to = useMemo(\n () => ({\n rect: {\n ...change.rect,\n left: change.rect.left + 1,\n },\n bounds: change.bounds,\n }),\n [change.bounds, change.rect],\n )\n\n return (\n <>\n <g onClick={onConnectorClick} onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n <Connector from={from} to={to} />\n </g>\n\n {DEBUG_LAYER_BOUNDS && <DebugLayers field={field} change={change} />}\n </>\n )\n}\n","import React, {useMemo} from 'react'\nimport {Path} from '@sanity/types'\nimport {ScrollContainer} from '../../components/scroll'\nimport {ConnectorContext} from '../ConnectorContext'\nimport {ENABLED} from '../constants'\nimport {Tracker} from '../tracker'\nimport {ConnectorsOverlay} from './ConnectorsOverlay'\n\n/** @internal */\nexport interface EnabledChangeConnectorRootProps {\n children: React.ReactNode\n className?: string\n isReviewChangesOpen: boolean\n onOpenReviewChanges: () => void\n onSetFocus: (path: Path) => void\n}\n\n/** @internal */\nexport function EnabledChangeConnectorRoot({\n children,\n className,\n isReviewChangesOpen,\n onOpenReviewChanges,\n onSetFocus,\n ...restProps\n}: EnabledChangeConnectorRootProps) {\n const [rootElement, setRootElement] = React.useState<HTMLDivElement | null>()\n\n const contextValue = useMemo(\n () => ({\n isReviewChangesOpen,\n onOpenReviewChanges,\n onSetFocus,\n }),\n [isReviewChangesOpen, onOpenReviewChanges, onSetFocus],\n )\n\n return (\n <ConnectorContext.Provider value={contextValue}>\n <Tracker>\n <ScrollContainer {...restProps} ref={setRootElement} className={className}>\n {children}\n {rootElement && <ConnectorsOverlay rootElement={rootElement} onSetFocus={onSetFocus} />}\n </ScrollContainer>\n </Tracker>\n </ConnectorContext.Provider>\n )\n}\n\n/** @internal */\nexport interface DisabledChangeConnectorRootProps {\n className?: string\n children: React.ReactNode\n}\n\n/** @internal */\nexport function DisabledChangeConnectorRoot({\n children,\n className,\n}: DisabledChangeConnectorRootProps) {\n return <ScrollContainer className={className}>{children}</ScrollContainer>\n}\n\n/** @internal */\nexport const ChangeConnectorRoot = ENABLED\n ? EnabledChangeConnectorRoot\n : DisabledChangeConnectorRoot\n","/* eslint-disable i18next/no-literal-string,@sanity/i18n/no-attribute-string-literals */\nimport React from 'react'\n\nconst NoJsStyles = `\n.sanity-app-no-js__root {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background: #fff;\n}\n\n.sanity-app-no-js__content {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n font-family: helvetica, arial, sans-serif;\n}\n`\n\n/** @internal */\nexport function NoJavascript() {\n return (\n <noscript>\n <div className=\"sanity-app-no-js__root\">\n <div className=\"sanity-app-no-js__content\">\n <style type=\"text/css\">{NoJsStyles}</style>\n <h1>JavaScript disabled</h1>\n <p>\n Please <a href=\"https://www.enable-javascript.com/\">enable JavaScript</a> in your\n browser and reload the page to proceed.\n </p>\n </div>\n </div>\n </noscript>\n )\n}\n","import React from 'react'\n\nconst errorHandlerScript = `\n;(function () {\n var _caughtErrors = []\n\n var errorChannel = (function () {\n var subscribers = []\n\n function publish(msg) {\n for (var i = 0; i < subscribers.length; i += 1) {\n subscribers[i](msg)\n }\n }\n\n function subscribe(subscriber) {\n subscribers.push(subscriber)\n\n return function () {\n var idx = subscribers.indexOf(subscriber)\n\n if (idx > -1) {\n subscribers.splice(idx, 1)\n }\n }\n }\n\n return {publish, subscribe, subscribers}\n })()\n\n // NOTE: Store the error channel instance in the global scope so that the Studio application can\n // access it and subscribe to errors.\n window.__sanityErrorChannel = {\n subscribe: errorChannel.subscribe,\n }\n\n function _nextTick(callback) {\n setTimeout(callback, 0)\n }\n\n function _handleError(error, params) {\n _nextTick(function () {\n // - If there are error channel subscribers, then we notify them (no console error).\n // - If there are no subscribers, then we log the error to the console and render the error overlay.\n if (errorChannel.subscribers.length) {\n errorChannel.publish({error, params})\n } else {\n console.error(error)\n\n _renderErrorOverlay(error, params)\n }\n })\n }\n\n var ERROR_BOX_STYLE = [\n 'background: #fff',\n 'border-radius: 6px',\n 'box-sizing: border-box',\n 'color: #121923',\n 'flex: 1',\n \"font-family: -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue','Liberation Sans',Helvetica,Arial,system-ui,sans-serif\",\n 'font-size: 16px',\n 'line-height: 21px',\n 'margin: 0 auto',\n 'max-width: 960px',\n 'overflow: auto',\n 'padding: 20px',\n 'width: 100%',\n ].join(';')\n\n var ERROR_CODE_STYLE = [\n 'color: #972E2A',\n \"font-family: -apple-system-ui-monospace, 'SF Mono', Menlo, Monaco, Consolas, monospace\",\n 'font-size: 13px',\n 'line-height: 17px',\n 'margin: 0',\n ].join(';')\n\n function _renderErrorOverlay(error, params) {\n var errorElement = document.querySelector('#__sanityError') || document.createElement('div')\n var colno = params.event.colno\n var lineno = params.event.lineno\n var filename = params.event.filename\n\n errorElement.id = '__sanityError'\n errorElement.innerHTML = [\n '<div style=\"' + ERROR_BOX_STYLE + '\">',\n '<div style=\"font-weight: 700;\">Uncaught error: ' + error.message + '</div>',\n '<div style=\"color: #515E72; font-size: 13px; line-height: 17px; margin: 10px 0;\">' +\n filename +\n ':' +\n lineno +\n ':' +\n colno +\n '</div>',\n '<pre style=\"' + ERROR_CODE_STYLE + '\">' + error.stack + '</pre>',\n '</div>',\n ].join('')\n\n errorElement.style.position = 'fixed'\n errorElement.style.zIndex = 1000000\n errorElement.style.top = 0\n errorElement.style.left = 0\n errorElement.style.right = 0\n errorElement.style.bottom = 0\n errorElement.style.padding = '20px'\n errorElement.style.background = 'rgba(16,17,18,0.66)'\n errorElement.style.display = 'flex'\n errorElement.style.alignItems = 'center'\n errorElement.style.justifyContent = 'center'\n\n document.body.appendChild(errorElement)\n }\n\n // NOTE:\n // Yes – we're attaching 2 error listeners below 👀\n // This is because React makes the same error throw twice (in development mode).\n // See: https://github.com/facebook/react/issues/10384\n\n // Error listener #1\n window.onerror = function (event, source, lineno, colno, error) {\n _nextTick(function () {\n if (_caughtErrors.indexOf(error) !== -1) return\n\n _caughtErrors.push(error)\n\n _handleError(error, {\n event,\n lineno,\n colno,\n source,\n })\n\n _nextTick(function () {\n var idx = _caughtErrors.indexOf(error)\n\n if (idx > -1) _caughtErrors.splice(idx, 1)\n })\n })\n\n // IMPORTANT: this callback must return \\`true\\` to prevent the error from being rendered in\n // the browser’s console.\n return true\n }\n\n // Error listener #2\n window.addEventListener('error', function (event) {\n if (_caughtErrors.indexOf(event.error) !== -1) return true\n\n _caughtErrors.push(event.error)\n\n _handleError(event.error, {\n event,\n lineno: event.lineno,\n colno: event.colno,\n })\n\n _nextTick(function () {\n _nextTick(function () {\n var idx = _caughtErrors.indexOf(event.error)\n\n if (idx > -1) _caughtErrors.splice(idx, 1)\n })\n })\n\n return true\n })\n})()\n`\n\n/** @internal */\nexport function GlobalErrorHandler() {\n // eslint-disable-next-line react/no-danger\n return <script dangerouslySetInnerHTML={{__html: errorHandlerScript}} />\n}\n","import React from 'react'\n\nexport interface FaviconProps {\n basePath: string\n}\n\nexport function Favicons({basePath}: FaviconProps) {\n const base = `${basePath.replace(/\\/+$/, '')}/static`\n return (\n <>\n <link rel=\"icon\" href={`${base}/favicon.ico`} sizes=\"any\" />\n <link rel=\"icon\" href={`${base}/favicon.svg`} type=\"image/svg+xml\" />\n <link rel=\"apple-touch-icon\" href={`${base}/apple-touch-icon.png`} />\n <link rel=\"manifest\" href={`${base}/manifest.webmanifest`} />\n </>\n )\n}\n","/* eslint-disable i18next/no-literal-string */\nimport React from 'react'\nimport {NoJavascript} from './NoJavascript'\nimport {GlobalErrorHandler} from './globalErrorHandler'\nimport {Favicons} from './Favicons'\n\nconst globalStyles = `\n @font-face {\n font-family: Inter;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-Regular.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-Italic.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-Medium.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-MediumItalic.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-SemiBold.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: italic;\n font-weight: 600;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-SemiBoldItalic.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-Bold.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: italic;\n font-weight: 700;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-BoldItalic.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: normal;\n font-weight: 800;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-ExtraBold.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: italic;\n font-weight: 800;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-ExtraBoldItalic.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: normal;\n font-weight: 900;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-Black.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: italic;\n font-weight: 900;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-BlackItalic.woff2\") format(\"woff2\");\n }\n html {\n background-color: #f1f3f6;\n }\n html,\n body,\n #sanity {\n height: 100%;\n }\n body {\n margin: 0;\n -webkit-font-smoothing: antialiased;\n }\n`\n\n/**\n * @hidden\n * @beta */\nexport interface DefaultDocumentProps {\n entryPath: string\n css?: string[]\n basePath?: string\n}\n\nconst EMPTY_ARRAY: never[] = []\n\n/**\n * @hidden\n * @beta */\nexport function DefaultDocument(props: DefaultDocumentProps): React.ReactElement {\n const {entryPath, css = EMPTY_ARRAY, basePath = '/'} = props\n return (\n <html lang=\"en\">\n <head>\n <meta charSet=\"utf-8\" />\n <meta\n name=\"viewport\"\n content=\"width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover\"\n />\n <meta name=\"robots\" content=\"noindex\" />\n <meta name=\"referrer\" content=\"same-origin\" />\n\n <Favicons basePath={basePath} />\n\n <title>Sanity Studio</title>\n\n <GlobalErrorHandler />\n\n {css.map((href) => (\n <link key={href} rel=\"stylesheet\" href={href} />\n ))}\n {/* eslint-disable-next-line react/no-danger */}\n <style dangerouslySetInnerHTML={{__html: globalStyles}} />\n </head>\n <body>\n <div id=\"sanity\" />\n <script type=\"module\" src={entryPath} />\n <NoJavascript />\n </body>\n </html>\n )\n}\n","import {ActionHook} from './types'\n\nconst actionIds = new WeakMap<ActionHook<any, any>, string>()\n\nlet counter = 0\n\n/** @internal */\nexport function getHookId<T, K>(actionHook: ActionHook<T, K>): string {\n const cachedId = actionIds.get(actionHook)\n\n if (cachedId) return cachedId\n\n const id = `${actionHook.name || (actionHook as any).displayName || '<anonymous>'}-${counter++}`\n\n actionIds.set(actionHook, id)\n\n return id\n}\n","const requestIdleCallbackShim: Window['requestIdleCallback'] = (callback) => {\n const start = Date.now()\n\n return setTimeout(() => {\n callback({\n didTimeout: false,\n timeRemaining() {\n return Math.max(0, Date.now() - start)\n },\n })\n }, 1) as unknown as ReturnType<Window['requestIdleCallback']>\n}\n\nconst cancelIdleCallbackShim: Window['cancelIdleCallback'] = (handle: unknown) => {\n return clearTimeout(handle as any)\n}\n\nconst _requestIdleCallback =\n typeof requestIdleCallback === 'undefined' ? requestIdleCallbackShim : requestIdleCallback\nconst _cancelIdleCallback =\n typeof cancelIdleCallback === 'undefined' ? cancelIdleCallbackShim : cancelIdleCallback\n\nexport {_requestIdleCallback as requestIdleCallback}\nexport {_cancelIdleCallback as cancelIdleCallback}\n","import type {ThrottleSettings} from 'lodash'\nimport React, {useCallback, useMemo, useRef, useState} from 'react'\nimport {isNonNullable, useThrottledCallback} from '../../util'\nimport {getHookId} from './actionId'\nimport {HookStateContainer} from './HookStateContainer'\nimport {cancelIdleCallback, requestIdleCallback} from './requestIdleCallback'\nimport {ActionHook} from './types'\n\n/** @internal */\nexport interface GetHookCollectionStateProps<T, K> {\n args: T\n children: (props: {states: K[]}) => React.ReactNode\n hooks: ActionHook<T, K>[]\n onReset?: () => void\n}\n\nconst throttleOptions: ThrottleSettings = {trailing: true}\n\n/** @internal */\nexport function GetHookCollectionState<T, K>(props: GetHookCollectionStateProps<T, K>) {\n const {hooks, args, children, onReset} = props\n\n const statesRef = useRef<Record<string, {value: K}>>({})\n const [tickId, setTick] = useState(0)\n\n const [keys, setKeys] = useState<Record<string, number>>({})\n\n const ricHandle = useRef<number | null>(null)\n\n const handleRequestUpdate = useCallback(() => {\n if (ricHandle.current) {\n cancelIdleCallback(ricHandle.current)\n }\n\n ricHandle.current = requestIdleCallback(() => {\n ricHandle.current = null\n\n setTick((tick) => tick + 1)\n })\n }, [])\n\n const handleRequestUpdateThrottled = useThrottledCallback(\n handleRequestUpdate,\n 60,\n throttleOptions,\n )\n\n const handleNext = useCallback((id: any, hookState: any) => {\n if (hookState === null) {\n delete statesRef.current[id]\n } else {\n const current = statesRef.current[id]\n statesRef.current[id] = {...current, value: hookState}\n }\n }, [])\n\n const handleReset = useCallback(\n (id: any) => {\n setKeys((currentKeys) => ({...currentKeys, [id]: (currentKeys[id] || 0) + 1}))\n\n if (onReset) {\n onReset()\n }\n },\n [onReset],\n )\n\n const hookIds = useMemo(() => hooks.map((hook) => getHookId(hook)), [hooks])\n\n const states = useMemo(\n () => hookIds.map((id) => statesRef.current[id]?.value).filter(isNonNullable),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- tickId is used to refresh the memo, before it can be removed it needs to be investigated what impact it has\n [hookIds, tickId],\n )\n\n return (\n <>\n {hooks.map((hook) => {\n const id = getHookId(hook)\n const key = keys[id] || 0\n\n return (\n <HookStateContainer\n key={`${id}-${key}`}\n hook={hook}\n id={id}\n args={args}\n onNext={handleNext}\n onRequestUpdate={handleRequestUpdateThrottled}\n onReset={handleReset}\n />\n )\n })}\n\n {children({states})}\n </>\n )\n}\n","import React, {type HTMLProps, type RefAttributes} from 'react'\nimport {type HotkeysProps as UIHotkeysProps, Hotkeys as UIHotkeys} from '@sanity/ui'\n\n/**\n * Properties for the `Hotkeys` component.\n *\n * @public\n */\nexport type HotkeysProps = UIHotkeysProps & {\n /**\n * Whether to make the keys platform-aware (eg `alt` to `option` on Apple devices).\n *\n * @defaultValue true\n */\n makePlatformAware?: boolean\n} & Omit<HTMLProps<HTMLElement>, 'ref' | 'size' | 'as'> &\n RefAttributes<HTMLElement>\n\n/**\n * Renders given `keys` as \"keycaps\" visually.\n *\n * This is a wrapper around `@sanity/ui`'s `Hotkeys` component, which allows for altering keys\n * (eg `alt` to `option`) on Apple devices unless `makePlatformAware` is set to `false`.\n *\n * @param props - Properties to render with\n * @returns React element\n * @public\n */\nexport function Hotkeys({makePlatformAware = true, keys: hotKeys = [], ...props}: HotkeysProps) {\n const keys = makePlatformAware ? hotKeys.map(platformifyKey) : hotKeys\n return <UIHotkeys {...props} keys={keys} />\n}\n\n/**\n * @internal\n */\nconst IS_APPLE_DEVICE =\n typeof navigator === 'undefined' || typeof navigator.platform !== 'string'\n ? false\n : /Mac|iPod|iPhone|iPad/.test(navigator.platform || '')\n\n/**\n * Given key 'Alt', or 'Option' (case-insensitive), return the platform-appropriate key name\n * (eg 'Alt' on non-Apple devices, 'Option' on Apple devices).\n *\n * @param key - Key to platformify\n * @returns Platform-appropriate key name\n * @internal\n */\nfunction platformifyKey(key: string): string {\n const lowerKey = key.toLowerCase()\n\n if (lowerKey === 'alt' && IS_APPLE_DEVICE) {\n return matchCase(key, 'option')\n }\n\n if (lowerKey === 'option' && !IS_APPLE_DEVICE) {\n return matchCase(key, 'alt')\n }\n\n return key\n}\n\n/**\n * Apply the case (lowercase/uppercase) of `original` to `target`, character by character,\n * eg matching ALL CAPS, all lowercase or Mixed Case.\n *\n * @param original - The original string to match case of\n * @param target - The target string to apply case to\n * @returns Target string with case applied from original\n * @internal\n */\nfunction matchCase(original: string, target: string): string {\n const orgLength = original.length\n\n return target.replace(/./g, (char, i) => {\n // Replace character by character matching case of original\n // If running out of original, just return the target case as-is\n return i < orgLength && original[i] === original[i].toUpperCase() ? char.toUpperCase() : char\n })\n}\n","import React from 'react'\nimport {Button, ButtonProps} from '../../ui-components'\n\nimport {IntentLink, IntentLinkProps} from 'sanity/router'\n\n/**\n *\n * @hidden\n * @beta\n */\nexport function IntentButton(\n props: IntentLinkProps &\n ButtonProps &\n Omit<React.HTMLProps<HTMLButtonElement>, 'ref' | 'size' | 'as'>,\n) {\n return props.disabled ? (\n <Button {...props} as=\"a\" role=\"link\" aria-disabled=\"true\" />\n ) : (\n <Button {...props} as={IntentLink} />\n )\n}\n","import type {Config} from './types'\n\n/**\n * @hidden\n * @beta */\nexport function defineConfig<T extends Config>(config: T): T {\n return config\n}\n\n/**\n * @deprecated Use `defineConfig` instead\n *\n * @hidden\n * @beta\n */\nexport function createConfig<T extends Config>(config: T): T {\n return defineConfig(config)\n}\n","import {isString} from 'lodash'\nimport {Plugin, PluginOptions} from './types'\n\n/**\n * @hidden\n * @beta */\nexport type PluginFactory<TOptions> = (options: TOptions) => PluginOptions\n\nfunction validatePlugin(pluginResult: PluginOptions) {\n // TODO: name is required etc\n const messages = [\n 'projectId' in pluginResult && '`projectId` not allowed in plugin configuration',\n 'dataset' in pluginResult && '`dataset` not allowed in plugin configuration',\n ].filter(isString)\n\n if (messages.length)\n throw new Error(\n `Invalid plugin configuration:\\n${messages.map((message) => `\\t${message}`).join('\\n')}`,\n )\n}\n\n/**\n * @hidden\n * @beta */\nexport function definePlugin<TOptions = void>(\n arg: PluginFactory<TOptions> | PluginOptions,\n): Plugin<TOptions> {\n if (typeof arg === 'function') {\n const pluginFactory = arg\n\n return (options: TOptions) => {\n // TODO: there's a possiblity of passing default arguments to users'\n // plugin factories or reading from default options in `TOptions`\n const result = pluginFactory(options)\n\n validatePlugin(result)\n return result\n }\n }\n\n validatePlugin(arg)\n return () => arg\n}\n\n/**\n * @deprecated Use `definePlugin` instead\n *\n * @hidden\n * @beta\n */\nexport function createPlugin<TOptions = void>(\n arg: PluginFactory<TOptions> | PluginOptions,\n): Plugin<TOptions> {\n return definePlugin(arg)\n}\n","import {DocumentFieldAction} from './types'\n\n/** @internal */\nexport function defineDocumentFieldAction(fieldAction: DocumentFieldAction): DocumentFieldAction {\n return fieldAction\n}\n","import {ButtonTone} from '@sanity/ui'\nimport {ComponentType} from 'react'\n\n/** @hidden @beta */\nexport interface DocumentInspectorProps {\n documentId: string\n documentType: string\n onClose: () => void\n}\n\n/** @hidden @beta */\nexport type DocumentInspectorComponent = ComponentType<DocumentInspectorProps>\n\n/** @hidden @beta */\nexport interface DocumentInspectorUseMenuItemProps {\n documentId: string\n documentType: string\n}\n\n/** @hidden @beta */\nexport interface DocumentInspectorMenuItem {\n hidden?: boolean\n hotkeys?: string[]\n icon?: ComponentType\n showAsAction?: boolean\n status?: ButtonTone\n title: string\n tone?: ButtonTone\n}\n\n/** @hidden @beta */\nexport interface DocumentInspector {\n name: string\n component: DocumentInspectorComponent\n /**\n * Hook for defining a menu item for the inspector.\n */\n useMenuItem?: (props: DocumentInspectorUseMenuItemProps) => DocumentInspectorMenuItem\n\n /**\n * Callback for when the inspector is closed, which can be used to clean up custom document pane\n * parameters.\n */\n onClose?: (ctx: {params: Record<string, string | undefined>}) => {\n params: Record<string, string | undefined>\n }\n\n /**\n * Callback for when the inspector is opened, which can be used to set custom document pane\n * parameters.\n */\n onOpen?: (ctx: {params: Record<string, string | undefined>}) => {\n params: Record<string, string | undefined>\n }\n}\n\n/**\n * Define a document inspector to be used in Sanity configuration.\n *\n * @example\n *\n * ```ts\n * // sanity.config.ts\n *\n * import {RocketIcon} from '@sanity/icons'\n * import {defineConfig, defineDocumentInspector} from 'sanity'\n *\n * const customInspector = defineDocumentInspector({\n * name: 'custom',\n * useMenuItem: () => ({\n * icon: RocketIcon,\n * showAsAction: true,\n * title: 'Custom'\n * }),\n * component: lazy(() => import('./inspectors/custom')),\n * })\n *\n * export default defineConfig({\n * // ...\n *\n * document: {\n * inspectors: (prev) => [customInspector, ...prev],\n * },\n * })\n * ```\n *\n * @hidden @beta\n * */\nexport function defineDocumentInspector(inspector: DocumentInspector): DocumentInspector {\n return inspector\n}\n","import {of} from 'rxjs'\nimport {SanityClient} from '@sanity/client'\nimport {CurrentUser} from '@sanity/types'\nimport {AuthStore} from './types'\n\n/** @internal */\nexport interface MockAuthStoreOptions {\n currentUser: CurrentUser | null\n client: SanityClient\n}\n\n/**\n * Creates a mock `AuthStore` (for testing) that emits an `AuthState` derived\n * from the `client` and `currentUser` given.\n *\n * @internal\n */\nexport function createMockAuthStore({client, currentUser = null}: MockAuthStoreOptions): AuthStore {\n return {\n state: of({authenticated: true, client, currentUser}),\n }\n}\n","import {distinctUntilChanged, map, mapTo, startWith, switchMap} from 'rxjs/operators'\nimport {of, timer} from 'rxjs'\nimport {useMemoObservable} from 'react-rx'\nimport {useDocumentStore} from '../store'\n\n/** @internal */\nexport type ConnectionState = 'connecting' | 'reconnecting' | 'connected'\n\nconst INITIAL: ConnectionState = 'connecting'\n\n/** @internal */\nexport function useConnectionState(publishedDocId: string, docTypeName: string): ConnectionState {\n const documentStore = useDocumentStore()\n\n return useMemoObservable(\n () =>\n documentStore.pair.documentEvents(publishedDocId, docTypeName).pipe(\n map((ev: {type: string}) => ev.type),\n map((eventType) => eventType !== 'reconnect'),\n switchMap((isConnected) =>\n isConnected ? of('connected') : timer(200).pipe(mapTo('reconnecting')),\n ),\n startWith(INITIAL as any),\n distinctUntilChanged(),\n ),\n [documentStore.pair, publishedDocId, docTypeName],\n INITIAL,\n )\n}\n","import {useMemoObservable} from 'react-rx'\nimport {useDocumentStore} from '../store'\n\n/** @internal */\nexport function useDocumentOperationEvent(publishedDocId: string, docTypeName: string) {\n const documentStore = useDocumentStore()\n\n return useMemoObservable(\n () => documentStore.pair.operationEvents(publishedDocId, docTypeName),\n [documentStore.pair, publishedDocId, docTypeName],\n )\n}\n","import {useMemoObservable} from 'react-rx'\nimport {merge, timer} from 'rxjs'\nimport {debounce, share, skip, take} from 'rxjs/operators'\nimport {EditStateFor, useDocumentStore} from '../store'\n\n/** @internal */\nexport function useEditState(\n publishedDocId: string,\n docTypeName: string,\n priority: 'default' | 'low' = 'default',\n): EditStateFor {\n const documentStore = useDocumentStore()\n\n return useMemoObservable(() => {\n const base = documentStore.pair.editState(publishedDocId, docTypeName).pipe(share())\n if (priority === 'low') {\n return merge(\n base.pipe(take(1)),\n base.pipe(\n skip(1),\n debounce(() => timer(1000)),\n ),\n )\n }\n return documentStore.pair.editState(publishedDocId, docTypeName)\n }, [documentStore.pair, publishedDocId, docTypeName, priority]) as EditStateFor\n}\n","import {useMemo} from 'react'\nimport {intlCache} from '../i18n/intlCache'\nimport {useCurrentLocale} from '../i18n/hooks/useLocale'\nimport {useListFormat} from './useListFormat'\n\ntype Duration = {\n days: number\n hours: number\n minutes: number\n seconds: number\n milliseconds: number\n}\ntype DurationUnit = keyof Duration\n\nconst PERIODS = ['days', 'hours', 'minutes', 'seconds', 'milliseconds'] as const\n\n/**\n * Options for the duration formatter\n *\n * @public\n */\nexport interface UseFormattedDurationOptions {\n /**\n * The formatting style to use in unit and list formatting. The default is \"short\".\n */\n style?: 'short' | 'long' | 'narrow'\n\n /**\n * The resolution of the duration. The default is \"seconds\".\n */\n resolution?: 'seconds' | 'milliseconds'\n}\n\n/**\n * The result of the duration formatter\n *\n * @public\n */\nexport interface FormattedDuration {\n /** The human-readable, formatted duration as a string, eg \"2 days, 3 hr, and 20 sec\" */\n formatted: string\n\n /** The machine-readable, formatted ISO-8601 duration string, eg \"P2DT3H20S\" */\n iso8601: string\n}\n\n/**\n * Formats a duration (in milliseconds) to a more user friendly string eg `1h 30m` or `1t 29m 15s`.\n * Can be configured to output full units, eg `1 hour 30 minutes` or `1 hour 3 minutes 15 seconds`.\n * Uses the current locale, which also applies to the division of units.\n *\n * @example English (en-US) locale formatting\n * ```ts\n * useFormattedDuration(5589000)\n * // {\"formatted\": \"1 hour, 33 minutes, and 9 seconds\", \"iso8601\": \"PT1H33M9S\"}\n * ```\n *\n * @example Norwegian (no-NB) locale formatting\n * ```ts\n * useFormattedDuration(5589000)\n * // {\"formatted\": \"1 time, 33 minutter og 9 sekunder\", \"iso8601\": \"PT1H33M9S\"}\n * ```\n *\n * @param options - Optional options for the number formatter\n * @returns An object with `formatted` and `iso8601` properties\n * @public\n */\nexport function useFormattedDuration(\n durationMs: number,\n options?: UseFormattedDurationOptions,\n): FormattedDuration {\n const {style = 'short', resolution = 'seconds'} = options || {}\n const unitDisplay = style\n const locale = useCurrentLocale().id\n const listFormat = useListFormat({type: 'unit', style})\n const isNegative = durationMs < 0\n const duration = parseMilliseconds(Math.abs(durationMs))\n const formatters: Record<DurationUnit, Intl.NumberFormat> = useMemo(\n () => ({\n days: intlCache.numberFormat(locale, {style: 'unit', unit: 'day', unitDisplay}),\n hours: intlCache.numberFormat(locale, {style: 'unit', unit: 'hour', unitDisplay}),\n minutes: intlCache.numberFormat(locale, {style: 'unit', unit: 'minute', unitDisplay}),\n seconds: intlCache.numberFormat(locale, {style: 'unit', unit: 'second', unitDisplay}),\n milliseconds: intlCache.numberFormat(locale, {\n style: 'unit',\n unit: 'millisecond',\n unitDisplay,\n }),\n }),\n [locale, unitDisplay],\n )\n\n const parts: string[] = []\n for (const period of PERIODS) {\n const value = duration[period]\n if (!value || (resolution === 'seconds' && period === 'milliseconds')) {\n continue\n }\n\n const prefix = isNegative && parts.length === 0 ? '-' : ''\n parts.push(`${prefix}${formatters[period].format(value)}`)\n }\n\n const formatted =\n parts.length === 0\n ? // If passing duration 0, we still want to show something\n formatters[resolution].format(0)\n : // Usually, we want to join the parts with the locales list formatter\n listFormat.format(parts)\n\n const iso8601 = durationToISO8601(duration, isNegative)\n\n return {formatted, iso8601}\n}\n\n/**\n * Parse milliseconds to durations. We stop at days because months are not a fixed unit,\n * nor are years (365.25 strictly speaking, but people may expact calendar days). If we\n * wanted to include those, we'd want to use `intervalToDuration` from date-fns, and base\n * it on two specific dates.\n *\n * @param milliseconds - Milliseconds to parse\n * @returns Object of duration parts\n * @internal\n */\nfunction parseMilliseconds(milliseconds: number): Duration {\n return {\n days: Math.trunc(milliseconds / 86400000),\n hours: Math.trunc(milliseconds / 3600000) % 24,\n minutes: Math.trunc(milliseconds / 60000) % 60,\n seconds: Math.trunc(milliseconds / 1000) % 60,\n milliseconds: Math.trunc(milliseconds) % 1000,\n }\n}\n\n/**\n * Format the given duration to an {@link https://en.wikipedia.org/wiki/ISO_8601#Durations | ISO-8601 duration}\n * string, eg `P1DT2H3M4.005S` meaning \"1 day, 2 hours, 3 minutes, 4 seconds and 5 milliseconds\".\n *\n * If days are zero, it will skip straight to the time part, eg `PT2H3M4.005S`.\n * If milliseconds are zero, it will skip the milliseconds part, eg `PT2H3M4S`.\n *\n * @param dur - The duration to format\n * @returns The formatted duration\n * @internal\n */\nfunction durationToISO8601(dur: Duration, isNegative: boolean): string {\n const date = dur.days ? `${dur.days}D` : ''\n\n let time = ''\n if (dur.hours) time += `${dur.hours}H`\n if (dur.minutes) time += `${dur.minutes}M`\n\n if (dur.milliseconds) {\n time += `${((dur.seconds * 1000 + dur.milliseconds) / 1000).toFixed(3)}S`\n } else if (dur.seconds) {\n time += `${dur.seconds}S`\n }\n\n if (!date && !time) {\n return 'PT0S'\n }\n\n const parts = time ? [date, time] : [date]\n const duration = `P${parts.join('T')}`\n return isNegative ? `-${duration}` : duration\n}\n","import {intlCache} from '../i18n/intlCache'\nimport {useCurrentLocale} from '../i18n/hooks/useLocale'\n\n/**\n * Options for the `useNumberFormat` hook\n *\n * @public\n */\nexport type UseNumberFormatOptions = Intl.NumberFormatOptions\n\n/**\n * Returns an instance of `Intl.NumberFormat` that uses the currently selected locale,\n * and enables locale/language-sensitive number formatting.\n *\n * @param options - Optional options for the number formatter\n * @returns Instance of `Intl.NumberFormat`\n * @public\n */\nexport function useNumberFormat(options: UseNumberFormatOptions = {}): Intl.NumberFormat {\n const currentLocale = useCurrentLocale().id\n return intlCache.numberFormat(currentLocale, options)\n}\n","import {useMemoObservable} from 'react-rx'\nimport {map} from 'rxjs/operators'\nimport {useDocumentStore} from '../store'\n\n/** @internal */\nexport interface SyncState {\n isSyncing: boolean\n}\n\nconst SYNCING = {isSyncing: true}\nconst NOT_SYNCING = {isSyncing: false}\n\n/** @internal */\nexport function useSyncState(publishedDocId: string, documentType: string): SyncState {\n const documentStore = useDocumentStore()\n\n return useMemoObservable<SyncState>(\n () =>\n documentStore.pair\n .consistencyStatus(publishedDocId, documentType)\n .pipe(map((isConsistent) => (isConsistent ? NOT_SYNCING : SYNCING))),\n [documentStore.pair, documentType, publishedDocId],\n NOT_SYNCING,\n )\n}\n","import {useRelativeTime} from './useRelativeTime'\n\n/** @internal */\nexport interface TimeAgoOpts {\n minimal?: boolean\n agoSuffix?: boolean\n}\n\n/**\n * @deprecated - Use {@link useRelativeTime} instead\n * @internal\n */\nexport function useTimeAgo(time: Date | string, options: TimeAgoOpts = {}): string {\n return useRelativeTime(time, {\n minimal: options.minimal,\n useTemporalPhrase: options.agoSuffix,\n })\n}\n","import {Tool} from '../config'\nimport {useSource} from '../studio'\n\n/**\n *\n * @hidden\n * @beta\n */\nexport function useTools(): Tool[] {\n return useSource().tools\n}\n","import {useMemoObservable} from 'react-rx'\nimport {useDocumentStore, ValidationStatus} from '../store'\n\nconst INITIAL: ValidationStatus = {validation: [], isValidating: false}\n\n/** @internal */\nexport function useValidationStatus(publishedDocId: string, docTypeName: string): ValidationStatus {\n const documentStore = useDocumentStore()\n\n return useMemoObservable(\n () => documentStore.pair.validation(publishedDocId, docTypeName),\n [documentStore.pair, publishedDocId, docTypeName],\n INITIAL,\n )\n}\n","import {FormPatch} from './types'\n\n/**\n *\n * @hidden\n * @beta\n */\nexport interface MutationPatchMsg {\n type: 'mutation'\n patches: FormPatch[]\n snapshot: unknown\n}\n\n/**\n *\n * @hidden\n * @beta\n */\nexport interface RebasePatchMsg {\n type: 'rebase'\n patches: FormPatch[]\n snapshot: unknown\n}\n\n/**\n *\n * @hidden\n * @beta\n */\nexport type PatchMsg = MutationPatchMsg | RebasePatchMsg\n\n/**\n *\n * @hidden\n * @beta\n */\nexport interface PatchMsgSubscriber {\n (msg: PatchMsg): void\n}\n\n/**\n *\n * @hidden\n * @beta\n */\nexport interface PatchChannel {\n publish: (msg: PatchMsg) => void\n subscribe: (subscriber: PatchMsgSubscriber) => () => void\n}\n\n/**\n * @internal\n */\nexport function createPatchChannel(): PatchChannel {\n const _subscribers: PatchMsgSubscriber[] = []\n\n return {\n publish(msg: PatchMsg) {\n for (const subscriber of _subscribers) {\n subscriber(msg)\n }\n },\n\n subscribe(subscriber) {\n _subscribers.push(subscriber)\n\n return () => {\n const idx = _subscribers.indexOf(subscriber)\n\n if (idx > -1) {\n _subscribers.splice(idx, 1)\n }\n }\n },\n }\n}\n","import {isKeyedObject} from '@sanity/types'\n\nexport function isEqual(item: unknown, otherItem: unknown): boolean {\n if (item === otherItem) {\n return true\n }\n\n if (typeof item !== typeof otherItem) {\n return false\n }\n\n if (typeof item !== 'object' && !Array.isArray(item)) {\n return item === otherItem\n }\n\n if (isKeyedObject(item) && isKeyedObject(otherItem) && item._key === otherItem._key) {\n return true\n }\n\n if (Array.isArray(item) && Array.isArray(otherItem)) {\n if (item.length !== otherItem.length) {\n return false\n }\n\n return item.every((child, i) => isEqual(child, otherItem[i]))\n }\n\n if (item === null || otherItem === null) {\n return item === otherItem\n }\n\n const obj = item as Record<string, unknown>\n const otherObj = otherItem as Record<string, unknown>\n\n const keys = Object.keys(obj)\n const otherKeys = Object.keys(otherObj)\n if (keys.length !== otherKeys.length) {\n return false\n }\n\n return keys.every((keyName) => isEqual(obj[keyName], otherObj[keyName]))\n}\n","import {type ArraySchemaType, type SchemaType, type TypedObject, isKeyedObject} from '@sanity/types'\nimport {Box, Flex} from '@sanity/ui'\nimport React from 'react'\nimport {useUserColorManager} from '../../../../user-color'\nimport {DiffTooltip, FromToArrow, getAnnotationColor} from '../../../diff'\nimport type {Annotation, ArrayDiff, Diff, DiffComponent, ItemDiff} from '../../../types'\nimport {useTranslation} from '../../../../i18n'\nimport {Checkbox} from '../../boolean/preview'\nimport {isEqual} from '../util/arrayUtils'\nimport {Preview} from '../../../../preview/components/Preview'\n\ninterface NamedListOption {\n title?: string\n value: unknown\n}\n\ninterface NormalizedListOption {\n title?: string\n value: unknown\n memberType?: Exclude<SchemaType, ArraySchemaType>\n isPresent: boolean\n annotation: Annotation\n itemIndex: number\n}\n\nexport const ArrayOfOptionsFieldDiff: DiffComponent<ArrayDiff> = ({diff, schemaType}) => {\n const options = schemaType.options?.list\n const colorManager = useUserColorManager()\n const {t} = useTranslation()\n if (!Array.isArray(options)) {\n // Shouldn't happen, because the resolver should only resolve here if it does\n return null\n }\n\n return (\n <div>\n {diff.items\n .map((item) => normalizeItems(item, diff, schemaType))\n .filter((item): item is NormalizedListOption => item !== null)\n .sort(sortItems)\n .map((item, index) => {\n const {annotation, isPresent, value, memberType, title} = item\n const color = getAnnotationColor(colorManager, annotation)\n const action = isPresent ? t('changes.added-label') : t('changes.removed-label')\n return (\n <Flex align=\"center\" key={getItemKey(diff, index)}>\n <DiffTooltip annotations={annotation ? [annotation] : []} description={action}>\n <Flex align=\"center\">\n <Checkbox checked={!isPresent} color={color} />\n <Box margin={2}>\n <FromToArrow />\n </Box>\n <Checkbox checked={isPresent} color={color} />\n </Flex>\n </DiffTooltip>\n <Flex align=\"center\">\n <ItemPreview value={title || value} memberType={memberType} />\n </Flex>\n </Flex>\n )\n })}\n </div>\n )\n}\n\nfunction normalizeItems(\n item: ItemDiff,\n parentDiff: ArrayDiff,\n schemaType: ArraySchemaType,\n): NormalizedListOption | null {\n if (item.diff.action === 'unchanged') {\n return null\n }\n\n const {fromValue, toValue} = parentDiff\n const value = getValue(item.diff)\n const wasPresent = isInArray(value, fromValue)\n const isPresent = isInArray(value, toValue)\n if (wasPresent === isPresent) {\n return null\n }\n\n return {\n title: getItemTitle(value, schemaType),\n memberType: resolveMemberType(getValue(item.diff), schemaType),\n itemIndex: getOptionIndex(value, schemaType),\n annotation: item.annotation,\n isPresent,\n value,\n }\n}\n\nfunction sortItems(itemA: NormalizedListOption, itemB: NormalizedListOption): number {\n return itemA.itemIndex - itemB.itemIndex\n}\n\nfunction ItemPreview({value, memberType}: {memberType?: SchemaType; value: unknown}) {\n return (\n <Box marginX={2} marginY={1}>\n {typeof value === 'string' || typeof value === 'number' ? (\n value\n ) : (\n <Preview schemaType={memberType!} value={value as any} layout=\"default\" />\n )}\n </Box>\n )\n}\n\nfunction isInArray(value: unknown, parent?: unknown[] | null): boolean {\n const array = parent || []\n return typeof value === 'object' && value !== null\n ? array.some((item) => isEqual(item, value))\n : array.includes(value)\n}\n\nfunction getItemKey(diff: Diff, index: number): string | number {\n const value = diff.toValue || diff.fromValue\n return isKeyedObject(value) ? value._key : index\n}\n\nfunction getValue(diff: Diff) {\n return typeof diff.toValue === 'undefined' ? diff.fromValue : diff.toValue\n}\n\nfunction resolveMemberType(item: unknown, schemaType: ArraySchemaType) {\n const itemTypeName = resolveTypeName(item)\n return schemaType.of.find((memberType) => memberType.name === itemTypeName)\n}\n\nfunction resolveTypeName(value: unknown): string {\n const jsType = resolveJSType(value)\n if (jsType !== 'object') {\n return jsType\n }\n\n const obj = value as TypedObject\n return ('_type' in obj && obj._type) || jsType\n}\n\nfunction resolveJSType(val: unknown) {\n if (val === null) {\n return 'null'\n }\n\n if (Array.isArray(val)) {\n return 'array'\n }\n\n return typeof val\n}\n\nfunction isNamedOption(item: unknown | NamedListOption): item is NamedListOption {\n return typeof item === 'object' && item !== null && 'title' in item\n}\n\nfunction getOptionIndex(item: unknown, schemaType: ArraySchemaType): number {\n const list = schemaType.options?.list || []\n return list.findIndex((opt) => isEqual(isNamedOption(opt) ? opt.value : opt, item))\n}\n\nfunction getItemTitle(item: unknown, schemaType: ArraySchemaType): string | undefined {\n const list = (schemaType.options?.list || []) as NamedListOption[]\n const index = getOptionIndex(item, schemaType)\n return index === -1 ? undefined : list[index].title || undefined\n}\n","import React from 'react'\nimport {DiffFromTo} from '../../../diff'\nimport {DiffComponent, StringDiff} from '../../../types'\nimport {StringPreview} from '../../string/preview'\n\nexport const UrlFieldDiff: DiffComponent<StringDiff> = ({diff, schemaType}) => {\n return <DiffFromTo diff={diff} schemaType={schemaType} previewComponent={StringPreview} />\n}\n","import React from 'react'\nimport {DiffFromTo} from '../../../diff'\nimport {DiffComponent, ObjectDiff} from '../../../types'\nimport {SlugPreview} from '../preview'\n\ninterface Slug {\n current?: string\n}\n\nexport const SlugFieldDiff: DiffComponent<ObjectDiff<Slug>> = ({diff, schemaType}) => {\n return (\n <DiffFromTo\n layout=\"inline\"\n diff={diff}\n schemaType={schemaType}\n previewComponent={SlugPreview}\n />\n )\n}\n","import {ArrayOfOptionsFieldDiff} from '../../types/array/diff'\nimport {DatetimeFieldDiff} from '../../types/datetime/diff'\nimport {UrlFieldDiff} from '../../types/url/diff'\nimport {SlugFieldDiff} from '../../types/slug/diff'\nimport {DiffComponentResolver} from '../../types'\n\n/** @internal */\nexport const diffResolver: DiffComponentResolver = ({schemaType}) => {\n // datetime or date\n if (['datetime', 'date'].includes(schemaType.name)) {\n return DatetimeFieldDiff\n }\n\n if (schemaType.name === 'url') {\n return UrlFieldDiff\n }\n\n if (schemaType.name === 'slug') {\n return SlugFieldDiff\n }\n\n if (schemaType.jsonType === 'array' && Array.isArray(schemaType.options?.list)) {\n return ArrayOfOptionsFieldDiff\n }\n\n return undefined\n}\n","/* eslint-disable i18next/no-literal-string */\nimport React from 'react'\nimport {Text} from '@sanity/ui'\n\n// This is the fallback marker renderer if the block editor didn't get the 'renderCustomMarkers' prop\n// You will probably only see this when you first start to play with custom markers as a developer\nexport function DefaultCustomMarkers() {\n return (\n <Text size={1}>\n This is a example custom marker, please implement <code>renderCustomMarkers</code> function.\n </Text>\n )\n}\n","import {Path} from '@sanity/types'\nimport React, {PropsWithChildren, useCallback, useMemo, useState} from 'react'\nimport {pathToString} from '../../field'\nimport {HoveredFieldContext, HoveredFieldContextValue} from './HoveredFieldContext'\n\n/** @internal */\nexport function HoveredFieldProvider(props: PropsWithChildren) {\n const {children} = props\n const [hoveredStack, setHoveredStack] = useState<string[]>([])\n\n const handleMouseEnter = useCallback((path: Path) => {\n const pathString = pathToString(path)\n\n setHoveredStack((prev) => {\n if (prev.includes(pathString)) {\n return prev\n }\n\n return [pathString, ...prev]\n })\n }, [])\n\n const handleMouseLeave = useCallback((path: Path) => {\n const pathString = pathToString(path)\n\n setHoveredStack((prev) => {\n if (prev.includes(pathString)) {\n return prev.filter((item) => item !== pathString)\n }\n\n return prev\n })\n }, [])\n\n const context: HoveredFieldContextValue = useMemo(\n () => ({\n hoveredStack,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n }),\n [handleMouseEnter, handleMouseLeave, hoveredStack],\n )\n\n return <HoveredFieldContext.Provider value={context}>{children}</HoveredFieldContext.Provider>\n}\n","/* eslint-disable camelcase */\n\nimport {ObjectSchemaType, Path, ValidationMarker} from '@sanity/types'\nimport React, {useMemo} from 'react'\nimport {DocumentFieldAction, Source} from '../config'\nimport {FormNodePresence} from '../presence'\nimport {EMPTY_ARRAY} from '../util'\nimport {FormBuilderContext, FormBuilderContextValue} from './FormBuilderContext'\nimport {\n FormBuilderFilterFieldFn,\n RenderAnnotationCallback,\n RenderBlockCallback,\n RenderFieldCallback,\n RenderInputCallback,\n RenderItemCallback,\n RenderPreviewCallback,\n} from './types'\nimport {FormFieldGroup, StateTree} from './store'\nimport {ArrayOfObjectsFunctions} from './inputs/arrays/ArrayOfObjectsInput/ArrayOfObjectsFunctions'\nimport {DefaultMarkers} from './inputs/PortableText/_legacyDefaultParts/Markers'\nimport {DefaultCustomMarkers} from './inputs/PortableText/_legacyDefaultParts/CustomMarkers'\nimport {PatchChannel, PatchEvent} from './patch'\nimport {FormCallbacksProvider} from './studio/contexts/FormCallbacks'\nimport {PresenceProvider} from './studio/contexts/Presence'\nimport {ValidationProvider} from './studio/contexts/Validation'\nimport {HoveredFieldProvider} from './field'\nimport {DocumentIdProvider} from './contexts/DocumentIdProvider'\n\nexport interface FormBuilderProviderProps {\n /** @internal */\n __internal_fieldActions?: DocumentFieldAction[]\n /** @internal */\n __internal_patchChannel?: PatchChannel // eslint-disable-line camelcase\n\n autoFocus?: boolean\n changesOpen?: boolean\n children?: React.ReactNode\n collapsedFieldSets: StateTree<boolean> | undefined\n collapsedPaths: StateTree<boolean> | undefined\n file: Source['form']['file']\n filterField?: FormBuilderFilterFieldFn\n focusPath: Path\n focused?: boolean\n groups: FormFieldGroup[]\n id: string\n image: Source['form']['image']\n onChange: (event: PatchEvent) => void\n onFieldGroupSelect: (path: Path, groupName: string) => void\n onPathBlur: (path: Path) => void\n onPathFocus: (path: Path) => void\n onPathOpen: (path: Path) => void\n onSetFieldSetCollapsed: (path: Path, collapsed: boolean) => void\n onSetPathCollapsed: (path: Path, collapsed: boolean) => void\n presence: FormNodePresence[]\n readOnly?: boolean\n renderAnnotation?: RenderAnnotationCallback\n renderBlock?: RenderBlockCallback\n renderField: RenderFieldCallback\n renderInlineBlock?: RenderBlockCallback\n renderInput: RenderInputCallback\n renderItem: RenderItemCallback\n renderPreview: RenderPreviewCallback\n schemaType: ObjectSchemaType\n unstable?: Source['form']['unstable']\n validation: ValidationMarker[]\n}\n\nconst missingPatchChannel: PatchChannel = {\n publish: () => undefined,\n subscribe: () => {\n console.warn(\n 'No patch channel provided to form-builder. If you need input based patch updates, please provide one',\n )\n\n return () => undefined\n },\n}\n\nexport function FormBuilderProvider(props: FormBuilderProviderProps) {\n const {\n __internal_fieldActions: fieldActions = EMPTY_ARRAY,\n __internal_patchChannel: patchChannel = missingPatchChannel,\n autoFocus,\n changesOpen,\n children,\n collapsedFieldSets,\n collapsedPaths,\n file,\n filterField,\n focusPath,\n focused,\n groups,\n id,\n image,\n onChange,\n onFieldGroupSelect,\n onPathBlur,\n onPathFocus,\n onPathOpen,\n onSetFieldSetCollapsed,\n onSetPathCollapsed,\n presence,\n readOnly,\n renderAnnotation,\n renderBlock,\n renderField,\n renderInlineBlock,\n renderInput,\n renderItem,\n renderPreview,\n schemaType,\n unstable,\n validation,\n } = props\n\n const __internal: FormBuilderContextValue['__internal'] = useMemo(\n () => ({\n patchChannel, // eslint-disable-line camelcase\n components: {\n ArrayFunctions: ArrayOfObjectsFunctions,\n CustomMarkers: unstable?.CustomMarkers || DefaultCustomMarkers,\n Markers: unstable?.Markers || DefaultMarkers,\n },\n field: {\n actions: fieldActions,\n },\n file: {\n assetSources: file.assetSources,\n directUploads: file?.directUploads !== false,\n },\n filterField: filterField || (() => true),\n image: {\n assetSources: image.assetSources,\n directUploads: image?.directUploads !== false,\n },\n onChange,\n }),\n [\n fieldActions,\n file.assetSources,\n file?.directUploads,\n filterField,\n image.assetSources,\n image?.directUploads,\n onChange,\n patchChannel,\n unstable?.CustomMarkers,\n unstable?.Markers,\n ],\n )\n\n const formBuilder: FormBuilderContextValue = useMemo(\n () => ({\n __internal,\n autoFocus,\n changesOpen,\n collapsedFieldSets,\n collapsedPaths,\n focusPath,\n focused,\n groups,\n id,\n readOnly,\n renderAnnotation,\n renderBlock,\n renderField,\n renderInlineBlock,\n renderInput,\n renderItem,\n renderPreview,\n schemaType,\n }),\n [\n __internal,\n autoFocus,\n changesOpen,\n collapsedFieldSets,\n collapsedPaths,\n focusPath,\n focused,\n groups,\n id,\n readOnly,\n renderAnnotation,\n renderBlock,\n renderField,\n renderInlineBlock,\n renderInput,\n renderItem,\n renderPreview,\n schemaType,\n ],\n )\n\n return (\n <FormBuilderContext.Provider value={formBuilder}>\n <FormCallbacksProvider\n onChange={onChange}\n onFieldGroupSelect={onFieldGroupSelect}\n onPathBlur={onPathBlur}\n onPathFocus={onPathFocus}\n onPathOpen={onPathOpen}\n onSetPathCollapsed={onSetPathCollapsed}\n onSetFieldSetCollapsed={onSetFieldSetCollapsed}\n >\n <DocumentIdProvider id={id}>\n <PresenceProvider presence={presence}>\n <ValidationProvider validation={validation}>\n <HoveredFieldProvider>{children}</HoveredFieldProvider>\n </ValidationProvider>\n </PresenceProvider>\n </DocumentIdProvider>\n </FormCallbacksProvider>\n </FormBuilderContext.Provider>\n )\n}\n","import {ObjectSchemaType, Path, ValidationMarker} from '@sanity/types'\nimport React, {useCallback} from 'react'\nimport {useSource} from '../../studio'\nimport {PatchChannel, PatchEvent} from '../patch'\nimport {FormBuilderProvider} from '../FormBuilderProvider'\nimport {FormFieldGroup, ObjectMember, StateTree} from '../store'\nimport {\n BlockAnnotationProps,\n BlockProps,\n FieldProps,\n InputProps,\n ItemProps,\n RenderPreviewCallbackProps,\n} from '../types'\nimport {\n useAnnotationComponent,\n useBlockComponent,\n useFieldComponent,\n useInlineBlockComponent,\n useInputComponent,\n useItemComponent,\n usePreviewComponent,\n} from '../form-components-hooks'\nimport {FormNodePresence} from '../../presence'\nimport {PreviewLoader} from '../../preview/components/PreviewLoader'\nimport {DocumentFieldAction} from '../../config'\n\n/**\n * @alpha This API might change.\n */\nexport interface FormProviderProps {\n /** @internal */\n __internal_fieldActions?: DocumentFieldAction[]\n /** @internal Considered internal, do not use. */\n __internal_patchChannel: PatchChannel\n\n autoFocus?: boolean\n changesOpen?: boolean\n children?: React.ReactNode\n collapsedFieldSets: StateTree<boolean> | undefined\n collapsedPaths: StateTree<boolean> | undefined\n focusPath: Path\n focused: boolean | undefined\n groups: FormFieldGroup[]\n id: string\n onChange: (changeEvent: PatchEvent) => void\n onPathBlur: (path: Path) => void\n onPathFocus: (path: Path) => void\n onPathOpen: (path: Path) => void\n onFieldGroupSelect: (path: Path, groupName: string) => void\n onSetPathCollapsed: (path: Path, collapsed: boolean) => void\n onSetFieldSetCollapsed: (path: Path, collapsed: boolean) => void\n presence: FormNodePresence[]\n readOnly?: boolean\n schemaType: ObjectSchemaType\n validation: ValidationMarker[]\n}\n\n/**\n * Default wiring for `FormBuilderProvider` when used with Sanity\n *\n * @alpha This API might change.\n */\nexport function FormProvider(props: FormProviderProps) {\n const {\n __internal_fieldActions: fieldActions,\n __internal_patchChannel: patchChannel,\n autoFocus,\n changesOpen,\n children,\n collapsedFieldSets,\n collapsedPaths,\n focusPath,\n focused,\n groups,\n id,\n onChange,\n onPathBlur,\n onPathFocus,\n onPathOpen,\n onFieldGroupSelect,\n onSetPathCollapsed,\n onSetFieldSetCollapsed,\n presence,\n readOnly,\n schemaType,\n validation,\n } = props\n\n const {file, image} = useSource().form\n\n // These hooks may be stored in context as an perf optimization\n const Input = useInputComponent()\n const Field = useFieldComponent()\n const Preview = usePreviewComponent()\n const Item = useItemComponent()\n const Block = useBlockComponent()\n const InlineBlock = useInlineBlockComponent()\n const Annotation = useAnnotationComponent()\n\n const renderInput = useCallback(\n (inputProps: Omit<InputProps, 'renderDefault'>) => <Input {...inputProps} />,\n [Input],\n )\n const renderField = useCallback(\n (fieldProps: Omit<FieldProps, 'renderDefault'>) => <Field {...fieldProps} />,\n [Field],\n )\n const renderItem = useCallback(\n (itemProps: Omit<ItemProps, 'renderDefault'>) => <Item {...itemProps} />,\n [Item],\n )\n const renderPreview = useCallback(\n (previewProps: RenderPreviewCallbackProps) => (\n <PreviewLoader component={Preview} {...previewProps} />\n ),\n [Preview],\n )\n const renderBlock = useCallback(\n (blockProps: Omit<BlockProps, 'renderDefault'>) => <Block {...blockProps} />,\n [Block],\n )\n const renderInlineBlock = useCallback(\n (blockProps: Omit<BlockProps, 'renderDefault'>) => <InlineBlock {...blockProps} />,\n [InlineBlock],\n )\n const renderAnnotation = useCallback(\n (annotationProps: Omit<BlockAnnotationProps, 'renderDefault'>) => (\n <Annotation {...annotationProps} />\n ),\n [Annotation],\n )\n\n return (\n <FormBuilderProvider\n __internal_fieldActions={fieldActions}\n __internal_patchChannel={patchChannel}\n autoFocus={autoFocus}\n changesOpen={changesOpen}\n collapsedFieldSets={collapsedFieldSets}\n collapsedPaths={collapsedPaths}\n file={file}\n focusPath={focusPath}\n focused={focused}\n groups={groups}\n id={id}\n image={image}\n onChange={onChange}\n onPathBlur={onPathBlur}\n onPathFocus={onPathFocus}\n onPathOpen={onPathOpen}\n onFieldGroupSelect={onFieldGroupSelect}\n onSetPathCollapsed={onSetPathCollapsed}\n onSetFieldSetCollapsed={onSetFieldSetCollapsed}\n presence={presence}\n readOnly={readOnly}\n renderAnnotation={renderAnnotation}\n renderBlock={renderBlock}\n renderField={renderField}\n renderInlineBlock={renderInlineBlock}\n renderInput={renderInput}\n renderItem={renderItem}\n renderPreview={renderPreview}\n schemaType={schemaType}\n validation={validation}\n >\n {children}\n </FormBuilderProvider>\n )\n}\n","/* eslint-disable camelcase */\n/* eslint-disable react/jsx-handler-names */\n\nimport {ObjectSchemaType, Path, ValidationMarker} from '@sanity/types'\nimport React, {useCallback, useRef} from 'react'\nimport {FormPatch, PatchChannel, PatchEvent} from '../patch'\nimport {ObjectFormNode} from '../store/types/nodes'\nimport {\n BlockAnnotationProps,\n BlockProps,\n FieldProps,\n InputProps,\n ItemProps,\n ObjectInputProps,\n RenderPreviewCallbackProps,\n type FormDocumentValue,\n} from '../types'\nimport {StateTree} from '../store'\nimport {EMPTY_ARRAY} from '../../util'\nimport {FormNodePresence} from '../../presence'\nimport {DocumentFieldAction} from '../../config'\nimport {useSource} from '../../studio'\nimport {\n useAnnotationComponent,\n useBlockComponent,\n useFieldComponent,\n useInlineBlockComponent,\n useInputComponent,\n useItemComponent,\n usePreviewComponent,\n} from '../form-components-hooks'\nimport {PreviewLoader} from '../../preview'\nimport {FormValueProvider} from '../contexts/FormValue'\nimport {GetFormValueProvider} from '../contexts/GetFormValue'\nimport {FormProvider} from './FormProvider'\nimport {DocumentFieldActionsProvider} from './contexts/DocumentFieldActions'\n\n/**\n * @alpha\n */\nexport interface FormBuilderProps\n extends Omit<ObjectFormNode, 'level' | 'path' | 'presence' | 'validation' | '_allMembers'> {\n /** @internal */\n __internal_fieldActions?: DocumentFieldAction[]\n /** @internal Considered internal – do not use. */\n __internal_patchChannel: PatchChannel\n\n autoFocus?: boolean\n changesOpen?: boolean\n collapsedFieldSets: StateTree<boolean> | undefined\n collapsedPaths: StateTree<boolean> | undefined\n focusPath: Path\n focused: boolean | undefined\n id: string\n onChange: (changeEvent: PatchEvent) => void\n onPathBlur: (path: Path) => void\n onPathFocus: (path: Path) => void\n onPathOpen: (path: Path) => void\n onFieldGroupSelect: (path: Path, groupName: string) => void\n onSetFieldSetCollapsed: (path: Path, collapsed: boolean) => void\n onSetPathCollapsed: (path: Path, collapsed: boolean) => void\n presence: FormNodePresence[]\n readOnly?: boolean\n schemaType: ObjectSchemaType\n validation: ValidationMarker[]\n value: FormDocumentValue | undefined\n}\n\n/**\n * @alpha\n */\nexport function FormBuilder(props: FormBuilderProps) {\n const {\n __internal_fieldActions: fieldActions,\n __internal_patchChannel: patchChannel,\n autoFocus,\n changesOpen,\n collapsedFieldSets,\n collapsedPaths,\n focusPath,\n focused,\n groups,\n id,\n members,\n onChange,\n onPathBlur,\n onPathFocus,\n onPathOpen,\n onFieldGroupSelect,\n onSetFieldSetCollapsed,\n onSetPathCollapsed,\n presence,\n readOnly,\n schemaType,\n validation,\n value,\n } = props\n\n const handleCollapseField = useCallback(\n (fieldName: string) => onSetPathCollapsed([fieldName], true),\n [onSetPathCollapsed],\n )\n\n const handleExpandField = useCallback(\n (fieldName: string) => onSetPathCollapsed([fieldName], false),\n [onSetPathCollapsed],\n )\n\n const handleBlur = useCallback(() => onPathBlur(EMPTY_ARRAY), [onPathBlur])\n\n const handleFocus = useCallback(() => onPathFocus(EMPTY_ARRAY), [onPathFocus])\n\n const handleChange = useCallback(\n (patch: FormPatch | FormPatch[] | PatchEvent) => onChange(PatchEvent.from(patch)),\n [onChange],\n )\n\n const focusRef = useRef(null)\n\n const handleSelectFieldGroup = useCallback(\n (groupName: string) => onFieldGroupSelect(EMPTY_ARRAY, groupName),\n [onFieldGroupSelect],\n )\n\n const handleOpenField = useCallback((fieldName: string) => onPathOpen([fieldName]), [onPathOpen])\n\n const handleCloseField = useCallback(() => onPathOpen([]), [onPathOpen])\n\n const handleCollapseFieldSet = useCallback(\n (fieldSetName: string) => onSetFieldSetCollapsed([fieldSetName], true),\n [onSetFieldSetCollapsed],\n )\n\n const handleExpandFieldSet = useCallback(\n (fieldSetName: string) => onSetFieldSetCollapsed([fieldSetName], false),\n [onSetFieldSetCollapsed],\n )\n // These hooks may be stored in context as an perf optimization\n const Input = useInputComponent()\n const Field = useFieldComponent()\n const Preview = usePreviewComponent()\n const Item = useItemComponent()\n const Block = useBlockComponent()\n const InlineBlock = useInlineBlockComponent()\n const Annotation = useAnnotationComponent()\n\n const renderInput = useCallback(\n (inputProps: Omit<InputProps, 'renderDefault'>) => <Input {...inputProps} />,\n [Input],\n )\n const renderField = useCallback(\n (fieldProps: Omit<FieldProps, 'renderDefault'>) => <Field {...fieldProps} />,\n [Field],\n )\n const renderItem = useCallback(\n (itemProps: Omit<ItemProps, 'renderDefault'>) => <Item {...itemProps} />,\n [Item],\n )\n const renderPreview = useCallback(\n (previewProps: RenderPreviewCallbackProps) => (\n <PreviewLoader component={Preview} {...previewProps} />\n ),\n [Preview],\n )\n const renderBlock = useCallback(\n (blockProps: Omit<BlockProps, 'renderDefault'>) => <Block {...blockProps} />,\n [Block],\n )\n const renderInlineBlock = useCallback(\n (blockProps: Omit<BlockProps, 'renderDefault'>) => <InlineBlock {...blockProps} />,\n [InlineBlock],\n )\n const renderAnnotation = useCallback(\n (annotationProps: Omit<BlockAnnotationProps, 'renderDefault'>) => (\n <Annotation {...annotationProps} />\n ),\n [Annotation],\n )\n\n const rootInputProps: Omit<ObjectInputProps, 'renderDefault'> = {\n focusPath,\n elementProps: {\n ref: focusRef,\n id,\n onBlur: handleBlur,\n onFocus: handleFocus,\n 'aria-describedby': undefined, // Root input should not have any aria-describedby\n },\n changed: members.some((m) => m.kind === 'field' && m.field.changed),\n focused,\n groups,\n id,\n level: 0,\n members,\n onChange: handleChange,\n onFieldClose: handleCloseField,\n onFieldCollapse: handleCollapseField,\n onFieldSetCollapse: handleCollapseFieldSet,\n onFieldExpand: handleExpandField,\n onFieldSetExpand: handleExpandFieldSet,\n onPathFocus: onPathFocus,\n onFieldOpen: handleOpenField,\n onFieldGroupSelect: handleSelectFieldGroup,\n path: EMPTY_ARRAY,\n presence: EMPTY_ARRAY,\n readOnly,\n renderAnnotation,\n renderBlock,\n renderField,\n renderInlineBlock,\n renderInput,\n renderItem,\n renderPreview,\n schemaType,\n validation: EMPTY_ARRAY,\n value,\n }\n\n return (\n <FormProvider\n __internal_fieldActions={fieldActions}\n __internal_patchChannel={patchChannel}\n autoFocus={autoFocus}\n changesOpen={changesOpen}\n collapsedFieldSets={collapsedFieldSets}\n collapsedPaths={collapsedPaths}\n focusPath={focusPath}\n focused={focused}\n groups={groups}\n id={id}\n onChange={onChange}\n onPathBlur={onPathBlur}\n onPathFocus={onPathFocus}\n onPathOpen={onPathOpen}\n onFieldGroupSelect={onFieldGroupSelect}\n onSetPathCollapsed={onSetPathCollapsed}\n onSetFieldSetCollapsed={onSetFieldSetCollapsed}\n presence={presence}\n validation={validation}\n readOnly={readOnly}\n schemaType={schemaType}\n >\n <GetFormValueProvider value={value}>\n <FormValueProvider value={value}>\n <DocumentFieldActionsProvider actions={fieldActions}>\n {renderInput(rootInputProps)}\n </DocumentFieldActionsProvider>\n </FormValueProvider>\n </GetFormValueProvider>\n </FormProvider>\n )\n}\n","import {useContext} from 'react'\nimport {ReviewChangesContext} from './ReviewChangesContext'\nimport {ReviewChangesContextValue} from './types'\n\n/**\n * @internal\n */\nexport function useReviewChanges(): ReviewChangesContextValue {\n const reviewChanges = useContext(ReviewChangesContext)\n\n if (!reviewChanges) {\n throw new Error('Review changes: missing context value')\n }\n\n return reviewChanges\n}\n","import {Path} from '@sanity/types'\nimport * as PathUtils from '@sanity/util/paths'\nimport React, {useMemo} from 'react'\nimport {FormFieldPresenceContext} from './context'\n\nconst EMPTY_ARRAY: never[] = []\n\nfunction trimChildPath(path: Path, childPath: Path) {\n return PathUtils.startsWith(path, childPath) ? PathUtils.trimLeft(path, childPath) : EMPTY_ARRAY\n}\n\n/** @internal */\nexport interface PresenceScopeProps {\n readOnly?: boolean\n path: Path\n children: React.ReactNode\n}\n\n/** @internal */\nexport function PresenceScope(props: PresenceScopeProps) {\n const {readOnly, path, children} = props\n const contextPresence = React.useContext(FormFieldPresenceContext)\n\n const childPresence = useMemo(() => {\n return readOnly\n ? EMPTY_ARRAY\n : (contextPresence || EMPTY_ARRAY)\n .filter((presence) => {\n return PathUtils.startsWith(path, presence.path)\n })\n .map((presence) => ({\n ...presence,\n path: trimChildPath(path, presence.path),\n }))\n }, [contextPresence, path, readOnly])\n\n return (\n <FormFieldPresenceContext.Provider value={childPresence}>\n {children}\n </FormFieldPresenceContext.Provider>\n )\n}\n","import React from 'react'\nimport {ArrayOfObjectsMember} from '../../store'\nimport {\n RenderAnnotationCallback,\n RenderArrayOfObjectsItemCallback,\n RenderBlockCallback,\n RenderFieldCallback,\n RenderInputCallback,\n RenderPreviewCallback,\n} from '../../types'\n\nimport {ArrayOfObjectsItem} from './items/ArrayOfObjectsItem'\nimport {MemberItemError} from './MemberItemError'\n\n/** @internal */\nexport interface ArrayOfObjectsMemberProps {\n member: ArrayOfObjectsMember\n renderAnnotation?: RenderAnnotationCallback\n renderBlock?: RenderBlockCallback\n renderField: RenderFieldCallback\n renderInlineBlock?: RenderBlockCallback\n renderInput: RenderInputCallback\n renderItem: RenderArrayOfObjectsItemCallback\n renderPreview: RenderPreviewCallback\n}\n\n/**\n * Convenience component for rendering an \"array of objects\"-item\n * @internal\n */\nexport function ArrayOfObjectsInputMember(props: ArrayOfObjectsMemberProps) {\n const {\n member,\n renderAnnotation,\n renderBlock,\n renderField,\n renderInlineBlock,\n renderInput,\n renderItem,\n renderPreview,\n } = props\n if (member.kind === 'item') {\n return (\n <ArrayOfObjectsItem\n key={member.key}\n member={member}\n renderAnnotation={renderAnnotation}\n renderBlock={renderBlock}\n renderField={renderField}\n renderInlineBlock={renderInlineBlock}\n renderInput={renderInput}\n renderItem={renderItem}\n renderPreview={renderPreview}\n />\n )\n }\n if (member.kind === 'error') {\n return <MemberItemError key={member.key} member={member} />\n }\n\n //@ts-expect-error The branching above should cover all possible cases\n console.warn(new Error(`Unhandled member kind ${member.kind}`))\n return null\n}\n","import React from 'react'\nimport {ArrayOfObjectsMember} from '../../store'\nimport {\n RenderAnnotationCallback,\n RenderArrayOfObjectsItemCallback,\n RenderBlockCallback,\n RenderFieldCallback,\n RenderInputCallback,\n RenderPreviewCallback,\n} from '../../types'\n\nimport {ArrayOfObjectsInputMember} from './ArrayOfObjectsInputMember'\n\n/** @internal */\nexport interface ArrayOfObjectsInputMembersProps {\n members: ArrayOfObjectsMember[]\n renderAnnotation?: RenderAnnotationCallback\n renderBlock?: RenderBlockCallback\n renderInlineBlock?: RenderBlockCallback\n renderInput: RenderInputCallback\n renderField: RenderFieldCallback\n renderItem: RenderArrayOfObjectsItemCallback\n renderPreview: RenderPreviewCallback\n}\n\n/**\n * Convenience component for wrapping an array of objects\n * @internal\n */\nexport function ArrayOfObjectsInputMembers(props: ArrayOfObjectsInputMembersProps) {\n const {members, ...rest} = props\n return (\n <>\n {members.map((member) => (\n <ArrayOfObjectsInputMember key={member.key} member={member} {...rest} />\n ))}\n </>\n )\n}\n","import {createElement} from 'react'\nimport {\n RenderAnnotationCallback,\n RenderBlockCallback,\n RenderFieldCallback,\n RenderInputCallback,\n RenderItemCallback,\n RenderPreviewCallback,\n} from '../types'\nimport {Preview} from '../../preview/components/Preview'\nimport {defaultResolveInputComponent} from './inputResolver/inputResolver'\nimport {defaultResolveItemComponent} from './inputResolver/itemResolver'\nimport {defaultResolveFieldComponent} from './inputResolver/fieldResolver'\nimport {\n defaultResolveAnnotationComponent,\n defaultResolveBlockComponent,\n defaultResolveInlineBlockComponent,\n} from './inputResolver/blockResolver'\n\n/** @internal */\nexport const defaultRenderAnnotation: RenderAnnotationCallback = (props) => {\n return createElement(defaultResolveAnnotationComponent(props.schemaType), props)\n}\n\n/** @internal */\nexport const defaultRenderBlock: RenderBlockCallback = (props) => {\n return createElement(defaultResolveBlockComponent(props.schemaType), props)\n}\n\n/** @internal */\nexport const defaultRenderInlineBlock: RenderBlockCallback = (props) => {\n return createElement(defaultResolveInlineBlockComponent(props.schemaType), props)\n}\n\n/** @internal */\nexport const defaultRenderField: RenderFieldCallback = (props) => {\n return createElement(defaultResolveFieldComponent(props.schemaType), props)\n}\n\n/** @internal */\nexport const defaultRenderInput: RenderInputCallback = (props) => {\n return createElement(defaultResolveInputComponent(props.schemaType), props)\n}\n\n/** @internal */\nexport const defaultRenderItem: RenderItemCallback = (props) => {\n return createElement(defaultResolveItemComponent(props.schemaType), props)\n}\n\n/** @internal */\nexport const defaultRenderPreview: RenderPreviewCallback = (props) => {\n return createElement(Preview, props)\n}\n","import type {SanityClient} from '@sanity/client'\nimport {merge, type Observable} from 'rxjs'\nimport {switchMap} from 'rxjs/operators'\nimport type {IdPair} from '../types'\nimport {memoize} from '../utils/createMemoizer'\nimport type {RemoteSnapshotVersionEvent} from './checkoutPair'\nimport {memoizedPair} from './memoizedPair'\nimport {memoizeKeyGen} from './memoizeKeyGen'\n\n/** @internal */\nexport const remoteSnapshots = memoize(\n (\n client: SanityClient,\n idPair: IdPair,\n typeName: string,\n ): Observable<RemoteSnapshotVersionEvent> => {\n return memoizedPair(client, idPair, typeName).pipe(\n switchMap(({published, draft}) => merge(published.remoteSnapshot$, draft.remoteSnapshot$)),\n )\n },\n memoizeKeyGen,\n)\n","import {Schema, SchemaType} from '@sanity/types'\nimport {isBuilder} from './resolve'\nimport {Template} from './types'\nimport {validateTemplates} from './validate'\n\nfunction maybeSerialize(template: Template) {\n return isBuilder(template) ? template.serialize() : template\n}\n\nfunction isNonNullable<T>(t: T): t is NonNullable<T> {\n return !!t\n}\n\n/** @internal */\nexport function prepareTemplates(schema: Schema, initialValueTemplates: Template[]): Template[] {\n const serialized = initialValueTemplates.map(maybeSerialize)\n return validateTemplates(schema, serialized)\n}\n\n/** @internal */\nexport function defaultTemplateForType(schemaType: SchemaType): Template {\n return {\n id: schemaType.name,\n schemaType: schemaType.name,\n title: schemaType.title || schemaType.name,\n icon: schemaType.icon,\n value: schemaType.initialValue || {_type: schemaType.name},\n }\n}\n\n/** @internal */\nexport function defaultTemplatesForSchema(schema: Schema): Template[] {\n const schemaTypes = schema\n .getTypeNames()\n .filter((typeName) => !/^sanity\\./.test(typeName))\n .map((typeName) => schema.get(typeName))\n .filter(isNonNullable)\n .filter((schemaType) => schemaType.type?.name === 'document')\n\n return prepareTemplates(\n schema,\n schemaTypes.map((schemaType) => defaultTemplateForType(schemaType)),\n )\n}\n","import {useEffect, useMemo, useState} from 'react'\nimport {getPublishedId} from '../../../../util'\nimport {useDocumentStore} from '../../datastores'\n\n/** @internal */\nexport interface DocumentTypeResolveState {\n isLoaded: boolean\n documentType: string | undefined\n}\n\nconst LOADING_STATE: DocumentTypeResolveState = {\n isLoaded: false,\n documentType: undefined,\n}\n\n/** @internal */\nexport function useDocumentType(documentId: string, specifiedType = '*'): DocumentTypeResolveState {\n const documentStore = useDocumentStore()\n const publishedId = getPublishedId(documentId)\n const isResolved = Boolean(specifiedType && specifiedType !== '*')\n\n // Memoize what a synchronously resolved state looks like (eg specified type is present),\n // in order to return the same object each time. Note that this can be \"incorrect\", but\n // that we won't be returning it in that case, eg: `{documentType: '*', isResolved: true}\n const SYNC_RESOLVED_STATE = useMemo(\n () => ({documentType: specifiedType, isLoaded: true}),\n [specifiedType],\n )\n\n // Set up our state that we'll only use when we need to reach out to the API to find\n // the document type for a given document. Otherwise we'll be using SYNC_RESOLVED_STATE.\n // For consistency (between different document ids/types), we're setting the sync resolved\n // state here as well, but it isn't strictly necessary for correct rendering.\n const [resolvedState, setDocumentType] = useState<DocumentTypeResolveState>(\n isResolved ? SYNC_RESOLVED_STATE : LOADING_STATE,\n )\n\n // Reset documentType when documentId changes. Note that we're using the referentially\n // stable LOADING_STATE in order to prevent double rendering on initial load.\n useEffect(() => setDocumentType(LOADING_STATE), [publishedId, specifiedType])\n\n // Load the documentType from Content Lake, unless we're already in a resolved state\n useEffect(() => {\n if (isResolved) {\n return undefined\n }\n\n const sub = documentStore\n .resolveTypeForDocument(publishedId, specifiedType)\n .subscribe((documentType: string) => setDocumentType({documentType, isLoaded: true}))\n\n return () => sub.unsubscribe()\n }, [documentStore, publishedId, specifiedType, isResolved])\n\n return isResolved\n ? // `isResolved` is only true when we're _synchronously_ resolved\n SYNC_RESOLVED_STATE\n : // Using the document type resolved from the API\n resolvedState\n}\n","import {ObjectDiff} from '@sanity/diff'\nimport {useEffect, useMemo, useRef} from 'react'\nimport deepEquals from 'react-fast-compare'\nimport {BehaviorSubject, catchError, distinctUntilChanged, map, of, Subscription, tap} from 'rxjs'\nimport {Annotation, Chunk, SelectionState, TimelineController, useHistoryStore} from '../../..'\nimport {useClient} from '../../../hooks'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS} from '../../../studioClient'\nimport {remoteSnapshots, RemoteSnapshotVersionEvent} from '../document'\n\ninterface UseTimelineControllerOpts {\n documentId: string\n documentType: string\n onError?: (err: Error) => void\n rev?: string\n since?: string\n}\n\n/** @internal */\nexport interface TimelineState {\n chunks: Chunk[]\n diff: ObjectDiff<Annotation, Record<string, any>> | null\n /** null is used here when the chunks hasn't loaded / is not known */\n hasMoreChunks: boolean | null\n isLoading: boolean\n /**\n * Whether this timeline is fully loaded and completely empty (true for new documents)\n * It can be `null` when the chunks hasn't loaded / is not known\n */\n isPristine: boolean | null\n lastNonDeletedRevId: string | null\n onOlderRevision: boolean\n realRevChunk: Chunk | null\n revTime: Chunk | null\n selectionState: SelectionState\n sinceAttributes: Record<string, unknown> | null\n sinceTime: Chunk | null\n timelineDisplayed: Record<string, unknown> | null\n timelineReady: boolean\n}\n\nconst INITIAL_TIMELINE_STATE: TimelineState = {\n chunks: [],\n diff: null,\n hasMoreChunks: null,\n isLoading: false,\n isPristine: null,\n lastNonDeletedRevId: null,\n onOlderRevision: false,\n realRevChunk: null,\n revTime: null,\n selectionState: 'inactive',\n sinceAttributes: null,\n sinceTime: null,\n timelineDisplayed: null,\n timelineReady: false,\n}\n\n/** @internal */\nexport interface TimelineStore {\n findRangeForRev: TimelineController['findRangeForNewRev']\n findRangeForSince: TimelineController['findRangeForNewSince']\n loadMore: () => void\n getSnapshot: () => TimelineState\n subscribe: (callback: () => void) => () => void\n}\n\n/**\n * Creates a store which handles the creation of a document Timeline,\n * TimelineController and also fetches pre-requisite document snapshots.\n *\n * `TimelineStore` exposes select TimelineController methods used to query\n * ranges and fetch more transactions. It can also be used with\n * `useSyncExternalStore` to subscribe to selected state changes.\n *\n * @internal\n * */\nexport function useTimelineStore({\n documentId,\n documentType,\n onError,\n rev,\n since,\n}: UseTimelineControllerOpts): TimelineStore {\n const historyStore = useHistoryStore()\n const snapshotsSubscriptionRef = useRef<Subscription | null>(null)\n const timelineStateRef = useRef<TimelineState>(INITIAL_TIMELINE_STATE)\n const client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n\n /**\n * The mutable TimelineController, used internally\n */\n const controller = useMemo(\n () =>\n historyStore.getTimelineController({\n client,\n documentId,\n documentType,\n }),\n [client, documentId, documentType, historyStore],\n )\n\n /**\n * A BehaviorSubject which can be subscribed by multiple observers, which broadcasts\n * the the latest state of the (mutable) TimelineController.\n */\n const timelineController$ = useMemo(\n () => new BehaviorSubject<TimelineController>(controller),\n [controller],\n )\n\n /**\n * Broadcasts the updated state on TimelineController's `handler` updates (as well as on mount / unmount).\n *\n * Note that TimelineController triggers updates very frequently when fetching transactions, which it does so\n * in fairly small batches.\n *\n * This will also suspend TimelineController transaction fetching on cleanup, ensuring that fetches don't\n * continue once the document pane has been closed.\n */\n useEffect(() => {\n controller.setRange(since || null, rev || null)\n timelineController$.next(controller)\n\n controller.handler = (err, innerController) => {\n if (err) {\n timelineController$.error(err)\n } else {\n /**\n * NOTE: TimelineController requires that you call `setRange` manually whenever its internal\n * timeline has changed (e.g. has a result of fetched transactions).\n * Ideally, TimelineController would be updated to handle this automatically for us.\n * Until then, this workaround waits until the next call stack before calling `setRange`.\n */\n setTimeout(() => {\n innerController.setRange(since || null, rev || null)\n timelineController$.next(innerController)\n }, 0)\n }\n }\n controller.resume()\n return () => controller.suspend()\n }, [rev, since, controller, timelineController$])\n\n /**\n * Fetch document snapshots and update the mutable controller.\n * Unsubscribes on clean up, preventing double fetches in strict mode.\n */\n useEffect(() => {\n if (!snapshotsSubscriptionRef.current) {\n snapshotsSubscriptionRef.current = remoteSnapshots(\n client,\n {draftId: `drafts.${documentId}`, publishedId: documentId},\n documentType,\n ).subscribe((ev: RemoteSnapshotVersionEvent) => {\n controller.handleRemoteMutation(ev)\n })\n }\n return () => {\n if (snapshotsSubscriptionRef.current) {\n snapshotsSubscriptionRef.current.unsubscribe()\n snapshotsSubscriptionRef.current = null\n }\n }\n }, [client, controller, documentId, documentType])\n\n const timelineStore = useMemo(() => {\n return {\n findRangeForRev: (chunk: Chunk) => controller.findRangeForNewRev(chunk),\n findRangeForSince: (chunk: Chunk) => controller.findRangeForNewSince(chunk),\n loadMore: () => {\n controller.setLoadMore(true)\n timelineStateRef.current.isLoading = true\n },\n getSnapshot: () => timelineStateRef.current,\n subscribe: (callback: () => void) => {\n const subscription = timelineController$\n .pipe(\n // Manually stop loading transactions in TimelineController, otherwise transaction history\n // will continue to be fetched – even if unwanted.\n tap((innerController) => innerController.setLoadMore(false)),\n map((innerController) => {\n const chunks = innerController.timeline.mapChunks((c) => c)\n const lastNonDeletedChunk = chunks.filter(\n (chunk) => !['delete', 'initial'].includes(chunk.type),\n )\n const hasMoreChunks = !innerController.timeline.reachedEarliestEntry\n const timelineReady = !['invalid', 'loading'].includes(innerController.selectionState)\n return {\n chunks,\n diff: innerController.sinceTime ? innerController.currentObjectDiff() : null,\n isLoading: false,\n isPristine: timelineReady ? chunks.length === 0 && hasMoreChunks === false : null,\n hasMoreChunks: !innerController.timeline.reachedEarliestEntry,\n lastNonDeletedRevId: lastNonDeletedChunk?.[0]?.id,\n onOlderRevision: innerController.onOlderRevision(),\n realRevChunk: innerController.realRevChunk,\n revTime: innerController.revTime,\n selectionState: innerController.selectionState,\n sinceAttributes: innerController.sinceAttributes(),\n sinceTime: innerController.sinceTime,\n timelineDisplayed: innerController.displayed(),\n timelineReady,\n }\n }),\n // Only emit (and in turn, re-render) when values have changed\n distinctUntilChanged(deepEquals),\n // Emit initial timeline state whenever we encounter an error in TimelineController's `handler` callback.\n // A little ham-fisted, but also reflects how we handle timeline errors in the UI\n // (i.e. no timeline state or diffs are rendered and we revert to the current editable document)\n catchError((err) => {\n onError?.(err)\n return of(INITIAL_TIMELINE_STATE)\n }),\n tap((timelineState) => {\n timelineStateRef.current = timelineState\n }),\n // Trigger callback function required by `useSyncExternalStore` to denote when to re-render\n tap(callback),\n )\n .subscribe()\n\n return () => subscription.unsubscribe()\n },\n }\n }, [controller, onError, timelineController$])\n\n return timelineStore\n}\n","import {useSyncExternalStoreWithSelector} from 'use-sync-external-store/with-selector'\nimport {TimelineState, TimelineStore} from './useTimelineStore'\n\n/**\n * Custom hook which wraps around `useSyncExternalStore`.\n * Accepts a selector function which can be used to opt-in to specific timelineStore updates.\n *\n * @internal\n */\nexport function useTimelineSelector<ReturnValue>(\n timelineStore: TimelineStore,\n selector: (timelineState: TimelineState) => ReturnValue,\n): ReturnValue {\n return useSyncExternalStoreWithSelector(\n timelineStore.subscribe,\n timelineStore.getSnapshot,\n null,\n selector,\n )\n}\n","import {useEffect, useState} from 'react'\nimport {useProjectStore} from '../datastores'\nimport {ProjectData} from './types'\n\n/** @internal */\nexport function useProject(): {value: ProjectData | null} {\n const projectStore = useProjectStore()\n const [value, setValue] = useState<ProjectData | null>(null)\n\n useEffect(() => {\n const project$ = projectStore.get()\n const sub = project$.subscribe(setValue)\n\n return () => sub.unsubscribe()\n }, [projectStore])\n\n return {value}\n}\n","import {useEffect, useState} from 'react'\nimport {useProjectStore} from '../datastores'\nimport {ProjectDatasetData} from './types'\n\n/** @internal */\nexport function useProjectDatasets(): {value: ProjectDatasetData[] | null} {\n const projectStore = useProjectStore()\n const [value, setValue] = useState<ProjectDatasetData[] | null>(null)\n\n useEffect(() => {\n const project$ = projectStore.getDatasets()\n const sub = project$.subscribe(setValue)\n\n return () => sub.unsubscribe()\n }, [projectStore])\n\n return {value}\n}\n","import {combineLatest, firstValueFrom, Observable} from 'rxjs'\nimport {map} from 'rxjs/operators'\nimport {CurrentUser} from '@sanity/types'\nimport {SanityClient} from '@sanity/client'\nimport {createMockAuthStore} from '../store'\nimport {Config, SingleWorkspace, Source, Workspace, SchemaPluginOptions} from './types'\nimport {prepareConfig} from './prepareConfig'\n\n/**\n * Fully resolves a configuration including subscribing to all sources and\n * workspaces from a config. Returns an `Observable` that waits till all sources\n * emit once before emitting an array of fully resolved sources and workspaces.\n *\n * @internal\n */\nexport function resolveConfig(config: Config): Observable<Workspace[]> {\n const {workspaces} = prepareConfig(config)\n\n return combineLatest(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n workspaces.flatMap((workspaceSummary) =>\n combineLatest(workspaceSummary.__internal.sources.map(({source}) => source)).pipe(\n map(\n (sources): Workspace => ({\n ...workspaceSummary,\n ...sources[0],\n unstable_sources: sources,\n type: 'workspace',\n }),\n ),\n ),\n ),\n )\n}\n\n/** @internal */\nexport type CreateWorkspaceFromConfigOptions =\n | SingleWorkspace\n | (SingleWorkspace & {\n currentUser: CurrentUser\n getClient: (options: {apiVersion: string}) => SanityClient\n schema?: SchemaPluginOptions\n })\n\n/**\n * PRIMARILY FOR TESTING PURPOSES.\n *\n * This will create a fully resolved workspace from a config and optionally\n * allows a `client` and `currentUser` override. This exists primarily for\n * testing purposes. If you need to use a workspace, we recommend using the\n * `useWorkspace` hook to grab the fully resolved workspace from the\n * `StudioProvider`\n *\n * @internal\n */\nexport async function createWorkspaceFromConfig(\n options: CreateWorkspaceFromConfigOptions,\n): Promise<Workspace> {\n const client = 'getClient' in options ? options.getClient({apiVersion: '2023-11-13'}) : undefined\n const [workspace] = await firstValueFrom(\n resolveConfig({\n ...options,\n ...(client &&\n 'currentUser' in options && {\n auth: createMockAuthStore({...options, client}),\n }),\n }),\n )\n\n return workspace\n}\n\n/**\n * PRIMARILY FOR TESTING PURPOSES.\n *\n * This will create a fully resolved source from a config and optionally\n * allows a `client` and `currentUser` override. This exists primarily for\n * testing purposes. If you need to use a source, we recommend using the\n * `useSource` hook to grab the fully resolved source from the `StudioProvider`\n *\n * @internal\n */\nexport async function createSourceFromConfig(\n options: CreateWorkspaceFromConfigOptions,\n): Promise<Source> {\n const workspace = await createWorkspaceFromConfig(options)\n return workspace.unstable_sources[0]\n}\n","import {useMemo} from 'react'\nimport type {Source, ConfigContext} from './types'\n\n/**\n * Reduce a {@link Source} down to a {@link ConfigContext}, memoizing using `React.useMemo`\n *\n * @param source - Source to convert\n * @returns A config context containing only the defined properties of that interface\n * @internal\n */\nexport function useConfigContextFromSource(source: Source): ConfigContext {\n const {projectId, dataset, schema, currentUser, getClient, i18n} = source\n return useMemo(() => {\n return {projectId, dataset, schema, currentUser, getClient, i18n}\n }, [projectId, dataset, schema, currentUser, getClient, i18n])\n}\n\n/**\n * Reduce a {@link Source} down to a {@link ConfigContext}, without memoization - use for non-react contexts\n *\n * @param source - Source to convert\n * @returns A config context containing only the defined properties of that interface\n * @internal\n */\nexport function getConfigContextFromSource(source: Source): ConfigContext {\n const {projectId, dataset, schema, currentUser, getClient, i18n} = source\n return {projectId, dataset, schema, currentUser, getClient, i18n}\n}\n","import {parseColor, rgbToHex, screen, multiply} from '@sanity/ui/theme'\nimport {getLuminance, mix, parseToRgb, rgb} from 'polished'\nimport {LegacyThemeTints} from './types'\n\n/**\n * @internal\n */\nexport function _buildTints(bg: string, mid: string, fg: string): LegacyThemeTints {\n return {\n 50: mix(0.1, mid, bg),\n 100: mix(0.2, mid, bg),\n 200: mix(0.4, mid, bg),\n 300: mix(0.6, mid, bg),\n 400: mix(0.8, mid, bg),\n 500: mid,\n 600: mix(0.8, mid, fg),\n 700: mix(0.6, mid, fg),\n 800: mix(0.4, mid, fg),\n 900: mix(0.2, mid, fg),\n 950: mix(0.1, mid, fg),\n }\n}\n\n/**\n * @internal\n */\nexport function _toHex(color: string): string {\n const {red, green, blue} = parseToRgb(color)\n return rgb(red, green, blue)\n}\n\n/**\n * @internal\n */\nexport function _isDark(bg: string, fg: string): boolean {\n return getLuminance(bg) < getLuminance(fg)\n}\n\n/**\n * Blend two colors using the \"screen\" blend mode\n * @internal\n */\nexport function _multiply(bg: string, fg: string): string {\n const b = parseColor(bg)\n const s = parseColor(fg)\n const hex = rgbToHex(multiply(b, s))\n\n return hex\n}\n\n/**\n * Blend two colors using the \"screen\" blend mode\n * @internal\n */\nexport function _screen(bg: string, fg: string): string {\n const b = parseColor(bg)\n const s = parseColor(fg)\n const hex = rgbToHex(screen(b, s))\n\n return hex\n}\n","import {hues} from '@sanity/color'\nimport {createColorTheme, rgba, ThemeColorSchemes} from '@sanity/ui/theme'\nimport {_multiply, _screen, _isDark} from './helpers'\nimport {LegacyPalette} from './palette'\nimport {LegacyTones} from './tones'\nimport {LegacyThemeTints} from './types'\n\nconst NEUTRAL_TONES = ['default', 'transparent']\n\nexport function buildColor(\n legacyPalette: LegacyPalette,\n legacyTones: LegacyTones,\n): ThemeColorSchemes {\n return createColorTheme({\n base: ({dark: navbar, name}) => {\n const stateTones = navbar ? legacyTones.state.navbar : legacyTones.state.default\n const dark = stateTones.dark\n const blend = navbar ? _screen : _multiply\n const tints = stateTones[name] || stateTones.default\n\n if (name === 'default') {\n const skeletonFrom = stateTones.default[100]\n\n return {\n fg: stateTones.fg,\n bg: stateTones.bg,\n border: stateTones.default[200],\n focusRing: legacyPalette.focus.base,\n shadow: {\n outline: rgba(stateTones.default[500], 0.4),\n umbra: rgba(dark ? legacyPalette.black : stateTones.default[500], 0.2),\n penumbra: rgba(dark ? legacyPalette.black : stateTones.default[500], 0.14),\n ambient: rgba(dark ? legacyPalette.black : stateTones.default[500], 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (name === 'transparent') {\n const bg = tints[50]\n const skeletonFrom = blend(bg, tints[100])\n\n return {\n fg: tints[900],\n bg,\n border: tints[300],\n focusRing: legacyPalette.focus.base,\n shadow: {\n outline: rgba(tints[500], dark ? 0.2 : 0.4),\n umbra: rgba(dark ? legacyPalette.black : tints[500], 0.2),\n penumbra: rgba(dark ? legacyPalette.black : tints[500], 0.14),\n ambient: rgba(dark ? legacyPalette.black : tints[500], 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n const bg = tints[50]\n const skeletonFrom = blend(bg, tints[100])\n\n return {\n fg: tints[900],\n bg,\n border: tints[200],\n focusRing: tints[500],\n shadow: {\n outline: rgba(tints[500], dark ? 0.2 : 0.4),\n umbra: rgba(dark ? legacyPalette.black : tints[500], 0.2),\n penumbra: rgba(dark ? legacyPalette.black : tints[500], 0.14),\n ambient: rgba(dark ? legacyPalette.black : tints[500], 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n solid: ({base, dark: navbar, name, state, tone}) => {\n const buttonTones = navbar ? legacyTones.button.navbar : legacyTones.button.default\n const dark = buttonTones.dark\n const blend = dark ? _screen : _multiply\n const blendInvert = dark ? _multiply : _screen\n const defaultTints = buttonTones[name] || buttonTones.default\n const isNeutral = NEUTRAL_TONES.includes(name) && NEUTRAL_TONES.includes(tone)\n let tints = buttonTones[tone === 'default' ? name : tone] || defaultTints\n\n if (state === 'disabled') {\n tints = defaultTints\n\n const bg = blend(base.bg, tints[200])\n const skeletonFrom = blendInvert(bg, tints[800])\n\n return {\n bg,\n border: blend(base.bg, tints[200]),\n fg: blend(base.bg, buttonTones.bg),\n icon: blend(base.bg, buttonTones.bg),\n muted: {\n fg: blend(base.bg, tints[50]),\n },\n accent: {\n fg: blend(base.bg, tints[50]),\n },\n link: {\n fg: blend(base.bg, tints[50]),\n },\n code: {\n bg,\n fg: blend(base.bg, tints[50]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'hovered') {\n const bg = blend(base.bg, tints[600])\n const skeletonFrom = blendInvert(bg, tints[800])\n\n return {\n bg,\n border: blend(base.bg, tints[600]),\n fg: blend(base.bg, buttonTones.bg),\n icon: blend(base.bg, buttonTones.bg),\n muted: {\n fg: blend(base.bg, tints[200]),\n },\n accent: {\n fg: blendInvert(bg, buttonTones.critical[300]),\n },\n link: {\n fg: blendInvert(bg, buttonTones.primary[200]),\n },\n code: {\n bg: blend(bg, tints[50]),\n fg: blend(base.bg, tints[200]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'pressed') {\n const bg = blend(base.bg, tints[800])\n const skeletonFrom = blendInvert(bg, tints[800])\n\n return {\n bg,\n border: blend(base.bg, tints[800]),\n fg: blend(base.bg, buttonTones.bg),\n icon: blend(base.bg, buttonTones.bg),\n muted: {\n fg: blend(base.bg, tints[200]),\n },\n accent: {\n fg: blendInvert(bg, buttonTones.critical[300]),\n },\n link: {\n fg: blendInvert(bg, buttonTones.primary[200]),\n },\n code: {\n bg: blend(bg, tints[50]),\n fg: blend(base.bg, tints[200]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n tints = buttonTones.primary\n }\n\n const bg = blend(base.bg, tints[800])\n const skeletonFrom = blendInvert(bg, tints[800])\n\n return {\n bg,\n border: blend(base.bg, tints[800]),\n fg: blend(base.bg, buttonTones.bg),\n icon: blend(base.bg, buttonTones.bg),\n muted: {\n fg: blend(base.bg, tints[200]),\n },\n accent: {\n fg: blendInvert(bg, buttonTones.critical[300]),\n },\n link: {\n fg: blendInvert(bg, buttonTones.primary[200]),\n },\n code: {\n bg: blend(bg, tints[50]),\n fg: blend(base.bg, tints[200]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n const bg = blend(base.bg, tints[500])\n const skeletonFrom = blendInvert(bg, tints[800])\n\n return {\n bg,\n border: blend(base.bg, tints[500]),\n fg: blend(base.bg, buttonTones.bg),\n icon: blend(base.bg, buttonTones.bg),\n muted: {\n fg: blend(base.bg, tints[100]),\n },\n accent: {\n fg: blendInvert(bg, buttonTones.critical[200]),\n },\n link: {\n fg: blendInvert(bg, buttonTones.primary[100]),\n },\n code: {\n bg: blend(bg, tints[50]),\n fg: blend(base.bg, tints[100]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n muted: ({base, dark: navbar, name, state, tone}) => {\n const stateTones = navbar ? legacyTones.state.navbar : legacyTones.state.default\n const dark = stateTones.dark\n const blend = dark ? _screen : _multiply\n const defaultTints = stateTones[name] || stateTones.default\n const isNeutral = NEUTRAL_TONES.includes(name) && NEUTRAL_TONES.includes(tone)\n\n let tints: LegacyThemeTints = stateTones[tone === 'default' ? name : tone] || defaultTints\n\n if (state === 'disabled') {\n tints = defaultTints\n\n const bg = base.bg\n const skeletonFrom = blend(bg, tints[100])\n\n return {\n bg,\n border: blend(base.bg, tints[50]),\n fg: blend(base.bg, tints[200]),\n icon: blend(base.bg, tints[200]),\n muted: {\n fg: blend(bg, tints[100]),\n },\n accent: {\n fg: blend(bg, tints[100]),\n },\n link: {\n fg: blend(bg, tints[100]),\n },\n code: {\n bg,\n fg: blend(bg, tints[100]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'hovered') {\n const bg = blend(base.bg, tints[50])\n const skeletonFrom = blend(bg, tints[100])\n\n return {\n bg,\n border: blend(bg, tints[100]),\n fg: blend(base.bg, tints[900]),\n icon: blend(base.bg, tints[900]),\n muted: {\n fg: blend(base.bg, tints[600]),\n },\n accent: {\n fg: blend(base.bg, stateTones.critical[500]),\n },\n link: {\n fg: blend(base.bg, stateTones.primary[600]),\n },\n code: {\n bg: blend(bg, tints[50]),\n fg: blend(base.bg, tints[600]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'pressed') {\n if (isNeutral) {\n tints = stateTones.primary\n }\n\n const bg = blend(base.bg, tints[100])\n const skeletonFrom = blend(bg, tints[100])\n\n return {\n bg,\n border: blend(bg, tints[100]),\n fg: blend(base.bg, tints[800]),\n icon: blend(base.bg, tints[800]),\n muted: {\n fg: blend(base.bg, tints[600]),\n },\n accent: {\n fg: blend(bg, stateTones.critical[500]),\n },\n link: {\n fg: blend(bg, stateTones.primary[600]),\n },\n code: {\n bg: blend(bg, tints[50]),\n fg: blend(bg, tints[600]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n tints = stateTones.primary\n }\n\n const bg = blend(base.bg, tints[100])\n const skeletonFrom = blend(bg, tints[100])\n\n return {\n bg,\n border: blend(bg, tints[100]),\n fg: blend(bg, tints[800]),\n icon: blend(bg, tints[800]),\n muted: {\n fg: blend(bg, tints[600]),\n },\n accent: {\n fg: blend(bg, stateTones.critical[500]),\n },\n link: {\n fg: blend(bg, stateTones.primary[600]),\n },\n code: {\n bg: blend(bg, tints[50]),\n fg: blend(bg, tints[600]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n const bg = base.bg\n const skeletonFrom = blend(base.bg, tints[100])\n\n return {\n bg,\n border: blend(bg, tints[100]),\n fg: blend(bg, tints[700]),\n icon: blend(bg, tints[700]),\n muted: {\n fg: blend(bg, tints[600]),\n },\n accent: {\n fg: blend(bg, stateTones.critical[500]),\n },\n link: {\n fg: blend(bg, stateTones.primary[600]),\n },\n code: {\n bg: blend(bg, tints[50]),\n fg: blend(bg, tints[600]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n button: ({base, mode, muted, solid}) => {\n if (mode === 'bleed') {\n return {\n enabled: {\n ...muted.enabled,\n border: muted.enabled.bg,\n },\n hovered: {\n ...muted.hovered,\n border: muted.hovered.bg,\n },\n pressed: {\n ...muted.pressed,\n border: muted.pressed.bg,\n },\n selected: {\n ...muted.selected,\n border: muted.selected.bg,\n },\n disabled: {\n ...muted.disabled,\n border: muted.disabled.bg,\n },\n }\n }\n\n if (mode === 'ghost') {\n return {\n ...solid,\n enabled: {\n ...muted.enabled,\n border: base.border,\n },\n disabled: muted.disabled,\n }\n }\n\n return solid\n },\n\n card: ({base, dark: navbar, muted, name, solid, state}) => {\n if (state === 'hovered') {\n return muted[name].hovered\n }\n\n if (state === 'disabled') {\n return muted[name].disabled\n }\n\n const isNeutral = NEUTRAL_TONES.includes(name)\n const stateTones = navbar ? legacyTones.state.navbar : legacyTones.state.default\n const tints: LegacyThemeTints = stateTones[name] || stateTones.default\n\n const dark = stateTones.dark\n const blend = dark ? _screen : _multiply\n\n if (state === 'pressed') {\n if (isNeutral) {\n return muted.primary.pressed\n }\n\n return muted[name].pressed\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n return solid.primary.enabled\n }\n\n return solid[name].enabled\n }\n\n const bg = base.bg\n const skeletonFrom = blend(base.bg, tints[dark ? 900 : 100])\n\n return {\n bg,\n fg: base.fg,\n icon: base.fg,\n border: base.border,\n muted: {\n fg: blend(base.bg, tints[dark ? 400 : 600]),\n },\n accent: {\n fg: blend(base.bg, stateTones.critical[dark ? 400 : 500]),\n },\n link: {\n fg: blend(base.bg, stateTones.primary[dark ? 400 : 600]),\n },\n code: {\n bg: blend(base.bg, tints[dark ? 950 : 50]),\n fg: tints[dark ? 400 : 600],\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n input: ({base, dark: navbar, mode, state}) => {\n const stateTones = navbar ? legacyTones.state.navbar : legacyTones.state.default\n const dark = stateTones.dark\n const blend = dark ? _screen : _multiply\n\n if (mode === 'invalid') {\n const tints = stateTones.critical\n\n return {\n bg: blend(base.bg, tints[50]),\n bg2: blend(base.bg, tints[50]),\n fg: blend(base.bg, tints[700]),\n border: blend(base.bg, tints[200]),\n placeholder: blend(base.bg, tints[400]),\n }\n }\n\n if (state === 'hovered') {\n return {\n bg: base.bg,\n bg2: base.bg,\n fg: base.fg,\n border: blend(base.bg, hues.gray[300].hex),\n placeholder: blend(base.bg, hues.gray[400].hex),\n }\n }\n\n if (state === 'disabled') {\n return {\n bg: blend(base.bg, hues.gray[50].hex),\n bg2: blend(base.bg, hues.gray[50].hex),\n fg: blend(base.bg, hues.gray[200].hex),\n border: blend(base.bg, hues.gray[100].hex),\n placeholder: blend(base.bg, hues.gray[100].hex),\n }\n }\n\n if (state === 'readOnly') {\n return {\n bg: blend(base.bg, hues.gray[50].hex),\n bg2: blend(base.bg, hues.gray[50].hex),\n fg: blend(base.bg, hues.gray[800].hex),\n border: blend(base.bg, hues.gray[200].hex),\n placeholder: blend(base.bg, hues.gray[400].hex),\n }\n }\n\n return {\n bg: base.bg,\n bg2: base.bg,\n fg: base.fg,\n border: base.border,\n placeholder: blend(base.bg, hues.gray[700].hex),\n }\n },\n\n selectable: ({base, muted, tone, solid, state}) => {\n if (state === 'enabled') {\n return {\n ...muted[tone].enabled,\n bg: base.bg,\n }\n }\n\n if (state === 'pressed') {\n if (tone === 'default') {\n return muted.primary.pressed\n }\n\n return muted[tone].pressed\n }\n\n if (state === 'selected') {\n if (tone === 'default') {\n return solid.primary.enabled\n }\n\n return solid[tone].enabled\n }\n\n if (state === 'disabled') {\n return {\n ...muted[tone].disabled,\n bg: base.bg,\n }\n }\n\n return muted[tone][state]\n },\n\n spot: ({base, key}) => {\n const dark = _isDark(base.bg, base.fg)\n const blend = dark ? _screen : _multiply\n\n return blend(base.bg, hues[key][dark ? 400 : 500].hex)\n },\n\n syntax: ({base, dark: navbar}) => {\n const stateTones = navbar ? legacyTones.state.navbar : legacyTones.state.default\n const dark = stateTones.dark\n const blend = dark ? _screen : _multiply\n const mainShade = 600\n const secondaryShade = 400\n\n return {\n atrule: blend(base.bg, hues.purple[mainShade].hex),\n attrName: blend(base.bg, stateTones.positive[mainShade]),\n attrValue: blend(base.bg, stateTones.caution[mainShade]),\n attribute: blend(base.bg, stateTones.caution[mainShade]),\n boolean: blend(base.bg, hues.purple[mainShade].hex),\n builtin: blend(base.bg, hues.purple[mainShade].hex),\n cdata: blend(base.bg, stateTones.caution[mainShade]),\n char: blend(base.bg, stateTones.caution[mainShade]),\n class: blend(base.bg, hues.orange[mainShade].hex),\n className: blend(base.bg, hues.cyan[mainShade].hex),\n comment: blend(base.bg, stateTones.default[secondaryShade]),\n constant: blend(base.bg, hues.purple[mainShade].hex),\n deleted: blend(base.bg, stateTones.critical[mainShade]),\n doctype: blend(base.bg, stateTones.default[secondaryShade]),\n entity: blend(base.bg, stateTones.critical[mainShade]),\n function: blend(base.bg, stateTones.positive[mainShade]),\n hexcode: blend(base.bg, stateTones.primary[mainShade]),\n id: blend(base.bg, hues.purple[mainShade].hex),\n important: blend(base.bg, hues.purple[mainShade].hex),\n inserted: blend(base.bg, stateTones.caution[mainShade]),\n keyword: blend(base.bg, hues.magenta[mainShade].hex),\n number: blend(base.bg, hues.purple[mainShade].hex),\n operator: blend(base.bg, hues.magenta[mainShade].hex),\n prolog: blend(base.bg, stateTones.default[secondaryShade]),\n property: blend(base.bg, stateTones.primary[mainShade]),\n pseudoClass: blend(base.bg, stateTones.caution[mainShade]),\n pseudoElement: blend(base.bg, stateTones.caution[mainShade]),\n punctuation: blend(base.bg, stateTones.default[mainShade]),\n regex: blend(base.bg, stateTones.primary[mainShade]),\n selector: blend(base.bg, stateTones.critical[mainShade]),\n string: blend(base.bg, stateTones.caution[mainShade]),\n symbol: blend(base.bg, hues.purple[mainShade].hex),\n tag: blend(base.bg, stateTones.critical[mainShade]),\n unit: blend(base.bg, hues.orange[mainShade].hex),\n url: blend(base.bg, stateTones.critical[mainShade]),\n variable: blend(base.bg, stateTones.critical[mainShade]),\n }\n },\n })\n}\n","import {studioTheme as defaults, ThemeFonts} from '@sanity/ui'\nimport {LegacyThemeProps} from './types'\n\nexport function buildFonts(cssCustomProperties: LegacyThemeProps): ThemeFonts {\n return {\n ...defaults.fonts,\n code: {\n ...defaults.fonts.code,\n family: cssCustomProperties['--font-family-monospace'] || defaults.fonts.code.family,\n },\n heading: {\n ...defaults.fonts.heading,\n family: cssCustomProperties['--font-family-base'] || defaults.fonts.code.family,\n },\n label: {\n ...defaults.fonts.label,\n family: cssCustomProperties['--font-family-base'] || defaults.fonts.code.family,\n },\n text: {\n ...defaults.fonts.text,\n family: cssCustomProperties['--font-family-base'] || defaults.fonts.code.family,\n },\n }\n}\n","import {_toHex} from './helpers'\nimport {LegacyThemeProps} from './types'\n\nexport interface LegacyPalette {\n black: string\n component: {\n bg: string\n fg: string\n }\n defaultButton: {\n default: {\n base: string\n }\n primary: {\n base: string\n }\n success: {\n base: string\n }\n warning: {\n base: string\n }\n danger: {\n base: string\n }\n }\n focus: {\n base: string\n }\n gray: {\n base: string\n }\n mainNavigation: {\n bg: string\n fg: string\n }\n state: {\n info: {\n fg: string\n }\n success: {\n fg: string\n }\n warning: {\n fg: string\n }\n danger: {\n fg: string\n }\n }\n}\n\nexport function buildLegacyPalette(cssCustomProperties: LegacyThemeProps): LegacyPalette {\n return {\n black: _toHex(cssCustomProperties['--black']),\n component: {\n bg: _toHex(cssCustomProperties['--component-bg']),\n fg: _toHex(cssCustomProperties['--component-text-color']),\n },\n defaultButton: {\n default: {\n base: _toHex(cssCustomProperties['--default-button-color']),\n },\n primary: {\n base: _toHex(cssCustomProperties['--default-button-primary-color']),\n },\n success: {\n base: _toHex(cssCustomProperties['--default-button-success-color']),\n },\n warning: {\n base: _toHex(cssCustomProperties['--default-button-warning-color']),\n },\n danger: {\n base: _toHex(cssCustomProperties['--default-button-danger-color']),\n },\n },\n focus: {\n base: _toHex(cssCustomProperties['--focus-color']),\n },\n gray: {\n base: _toHex(cssCustomProperties['--gray-base']),\n },\n mainNavigation: {\n bg: _toHex(cssCustomProperties['--main-navigation-color']),\n fg: _toHex(cssCustomProperties['--main-navigation-color--inverted']),\n },\n state: {\n info: {\n fg: _toHex(cssCustomProperties['--state-info-color']),\n },\n success: {\n fg: _toHex(cssCustomProperties['--state-success-color']),\n },\n warning: {\n fg: _toHex(cssCustomProperties['--state-warning-color']),\n },\n danger: {\n fg: _toHex(cssCustomProperties['--state-danger-color']),\n },\n },\n }\n}\n","import {_buildTints, _isDark} from './helpers'\nimport {LegacyThemeTints} from './types'\nimport {LegacyPalette} from './palette'\n\nexport interface LegacyTones {\n button: {\n default: {\n bg: string\n fg: string\n dark: boolean\n\n default: LegacyThemeTints\n transparent: LegacyThemeTints\n primary: LegacyThemeTints\n positive: LegacyThemeTints\n caution: LegacyThemeTints\n critical: LegacyThemeTints\n }\n\n navbar: {\n bg: string\n fg: string\n dark: boolean\n\n default: LegacyThemeTints\n transparent: LegacyThemeTints\n primary: LegacyThemeTints\n positive: LegacyThemeTints\n caution: LegacyThemeTints\n critical: LegacyThemeTints\n }\n }\n\n state: {\n default: {\n bg: string\n fg: string\n dark: boolean\n\n default: LegacyThemeTints\n transparent: LegacyThemeTints\n primary: LegacyThemeTints\n positive: LegacyThemeTints\n caution: LegacyThemeTints\n critical: LegacyThemeTints\n }\n\n navbar: {\n bg: string\n fg: string\n dark: boolean\n\n default: LegacyThemeTints\n transparent: LegacyThemeTints\n primary: LegacyThemeTints\n positive: LegacyThemeTints\n caution: LegacyThemeTints\n critical: LegacyThemeTints\n }\n }\n}\n\nexport function buildLegacyTones(legacyPalette: LegacyPalette): LegacyTones {\n return {\n state: {\n default: {\n bg: legacyPalette.component.bg,\n fg: legacyPalette.component.fg,\n dark: _isDark(legacyPalette.component.bg, legacyPalette.component.fg),\n default: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.gray.base,\n legacyPalette.component.fg,\n ),\n transparent: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.gray.base,\n legacyPalette.component.fg,\n ),\n primary: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.state.info.fg,\n legacyPalette.component.fg,\n ),\n positive: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.state.success.fg,\n legacyPalette.component.fg,\n ),\n caution: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.state.warning.fg,\n legacyPalette.component.fg,\n ),\n critical: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.state.danger.fg,\n legacyPalette.component.fg,\n ),\n },\n navbar: {\n bg: legacyPalette.mainNavigation.bg,\n fg: legacyPalette.mainNavigation.fg,\n dark: _isDark(legacyPalette.mainNavigation.bg, legacyPalette.mainNavigation.fg),\n\n default: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.gray.base,\n legacyPalette.mainNavigation.fg,\n ),\n transparent: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.gray.base,\n legacyPalette.mainNavigation.fg,\n ),\n primary: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.state.info.fg,\n legacyPalette.mainNavigation.fg,\n ),\n positive: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.state.success.fg,\n legacyPalette.mainNavigation.fg,\n ),\n caution: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.state.warning.fg,\n legacyPalette.mainNavigation.fg,\n ),\n critical: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.state.danger.fg,\n legacyPalette.mainNavigation.fg,\n ),\n },\n },\n button: {\n default: {\n bg: legacyPalette.component.bg,\n fg: legacyPalette.component.fg,\n dark: _isDark(legacyPalette.component.bg, legacyPalette.component.fg),\n\n default: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.defaultButton.default.base,\n legacyPalette.component.fg,\n ),\n transparent: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.defaultButton.default.base,\n legacyPalette.component.fg,\n ),\n primary: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.defaultButton.primary.base,\n legacyPalette.component.fg,\n ),\n positive: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.defaultButton.success.base,\n legacyPalette.component.fg,\n ),\n caution: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.defaultButton.warning.base,\n legacyPalette.component.fg,\n ),\n critical: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.defaultButton.danger.base,\n legacyPalette.component.fg,\n ),\n },\n navbar: {\n bg: legacyPalette.mainNavigation.bg,\n fg: legacyPalette.mainNavigation.fg,\n dark: _isDark(legacyPalette.mainNavigation.bg, legacyPalette.mainNavigation.fg),\n\n default: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.defaultButton.default.base,\n legacyPalette.mainNavigation.fg,\n ),\n transparent: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.defaultButton.default.base,\n legacyPalette.mainNavigation.fg,\n ),\n primary: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.defaultButton.primary.base,\n legacyPalette.mainNavigation.fg,\n ),\n positive: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.defaultButton.success.base,\n legacyPalette.mainNavigation.fg,\n ),\n caution: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.defaultButton.warning.base,\n legacyPalette.mainNavigation.fg,\n ),\n critical: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.defaultButton.danger.base,\n legacyPalette.mainNavigation.fg,\n ),\n },\n },\n }\n}\n","import {black, blue, gray, green, red, white, yellow} from '@sanity/color'\nimport {studioTheme as defaults} from '@sanity/ui'\nimport {StudioTheme} from '../types'\nimport {buildColor} from './color'\nimport {buildFonts} from './fonts'\nimport {_isDark} from './helpers'\nimport {buildLegacyPalette} from './palette'\nimport {buildLegacyTones} from './tones'\nimport {LegacyThemeProps} from './types'\n\n/**\n * Build a Sanity UI theme from legacy CSS properties.\n *\n * @example\n * ```tsx\n * import {buildLegacyTheme, defineConfig} from 'sanity'\n *\n * export default defineConfig({\n * // project configuration ...\n *\n * // Customize theming\n * theme: buildLegacyTheme({\n * '--black': '#000',\n * '--gray': '#777',\n * '--focus-color': '#00f',\n * })\n * })\n * ```\n *\n * @param partialLegacyTheme - Properties to override the theme with. See {@link LegacyThemeProps}\n * @public\n * @deprecated Legacy theming will be deprecated in a future version of Sanity Studio\n */\nexport function buildLegacyTheme(partialLegacyTheme: Partial<LegacyThemeProps>): StudioTheme {\n const legacyTheme = resolveLegacyTheme(partialLegacyTheme)\n const legacyPalette = buildLegacyPalette(legacyTheme)\n const legacyTones = buildLegacyTones(legacyPalette)\n\n const color = buildColor(legacyPalette, legacyTones)\n const fonts = buildFonts(legacyTheme)\n\n return {\n __dark: _isDark(color.light.default.base.bg, color.light.default.base.fg),\n __legacy: true,\n color,\n fonts,\n }\n}\n\nconst defaultCustomProperties: LegacyThemeProps = {\n '--font-family-monospace': defaults.fonts.code.family,\n '--font-family-base': defaults.fonts.text.family,\n\n '--black': black.hex,\n '--white': white.hex,\n\n // Brand\n '--brand-primary': blue[500].hex,\n\n // Component\n '--component-bg': white.hex,\n '--component-text-color': black.hex,\n\n // Gray\n '--gray': gray[500].hex,\n '--gray-base': gray[500].hex,\n\n // Default button\n '--default-button-color': gray[500].hex,\n '--default-button-danger-color': red[500].hex,\n '--default-button-primary-color': blue[500].hex,\n '--default-button-success-color': green[500].hex,\n '--default-button-warning-color': yellow[500].hex,\n\n // Focus\n '--focus-color': blue[500].hex,\n\n // Screen\n '--screen-medium-break': '512px',\n '--screen-default-break': '640px',\n '--screen-large-break': '960px',\n '--screen-xlarge-break': '1600px',\n\n // State\n '--state-info-color': blue[500].hex,\n '--state-success-color': green[500].hex,\n '--state-warning-color': yellow[500].hex,\n '--state-danger-color': red[500].hex,\n\n // Navbar\n '--main-navigation-color': black.hex,\n '--main-navigation-color--inverted': white.hex,\n}\n\nfunction resolveLegacyTheme(legacyTheme: Partial<LegacyThemeProps>): LegacyThemeProps {\n const props: LegacyThemeProps = {\n ...defaultCustomProperties,\n ...legacyTheme,\n }\n\n // Update properties (order matters)\n props['--focus-color'] = legacyTheme['--focus-color'] || props['--brand-primary']\n props['--default-button-primary-color'] =\n legacyTheme['--default-button-primary-color'] || props['--brand-primary']\n props['--main-navigation-color'] = legacyTheme['--main-navigation-color'] || props['--black']\n props['--main-navigation-color--inverted'] =\n legacyTheme['--main-navigation-color--inverted'] || props['--white']\n props['--state-info-color'] = legacyTheme['--brand-primary'] || props['--brand-primary']\n\n return props\n}\n","import {Box, Text} from '@sanity/ui'\nimport React from 'react'\nimport {LogoProps} from '../../../config'\n\n/**\n * @hidden\n * @beta */\nexport function StudioLogo(props: LogoProps) {\n const {title} = props\n\n return (\n <Box padding={3} data-testid=\"studio-logo\">\n <Text weight=\"medium\">{title}</Text>\n </Box>\n )\n}\n","import React, {ReactElement} from 'react'\nimport {Config} from '../config'\nimport type {StudioThemeColorSchemeKey} from '../theme/types'\nimport {GlobalStyle} from './GlobalStyle'\nimport {RouterHistory} from './router'\nimport {StudioProvider} from './StudioProvider'\nimport {StudioLayout} from './StudioLayout'\n\n/**\n * @hidden\n * @beta */\nexport interface StudioProps {\n config: Config\n basePath?: string\n /**\n * Useful for scenarios where the Studio is embedded in another app,\n * and the surrounding app also implements light and dark color schemes.\n *\n * The callback is fired whenever the user selects a new color scheme in the \"Appearance\" menu in the top-right dropdown.\n * It also fires on first render with its initial value if you don't provide a `scheme` prop.\n *\n * If the user selects \"System\" in the \"Appearance\" menu, the callback will be fired with `\"system\"` as the scheme.\n * To resolve `\"system\"` to the same color scheme as the Studio use the `usePrefersDark` hook from `@sanity/ui`:\n *\n * ```tsx\n * import {usePrefersDark} from '@sanity/ui'\n * import {Studio} from 'sanity'\n *\n * export default function StudioPage() {\n * const prefersDark = usePrefersDark()\n * const [_scheme, setScheme] = useState('system')\n * const prefersScheme = prefersDark ? 'dark' : 'light'\n * const scheme = _scheme === 'system' ? prefersScheme : _scheme\n *\n * return (\n * <AppLayout scheme={scheme}>\n * <Studio config={config} onSchemeChange={setScheme} />\n * </AppLayout>\n * )\n * }\n * ```\n *\n *\n * @hidden\n * @beta\n */\n onSchemeChange?: (nextScheme: StudioThemeColorSchemeKey) => void\n /**\n * By default the Studio handles the color scheme itself, but you can provide a color scheme to use.\n * If you only define `scheme` then the top-right \"Appearance\" dropdown menu will be hidden,\n * and the Studio will stay in sync with the `scheme` prop.\n *\n * You may setup two-way sync and re-enable the \"Appearance\" dropdown menu by also providing an `onSchemeChange` callback:\n * ```tsx\n * import {Studio} from 'sanity'\n * import {useSession} from 'your-app'\n *\n * export default function StudioPage() {\n * const session = useSession()\n * // Overrides the default scheme to be what's in the app user session\n * const [_scheme, setScheme] = useState(session.scheme)\n * const scheme = _scheme === 'system' ? session.scheme : _scheme\n *\n * return (\n * <AppLayout scheme={scheme}>\n * <Studio config={config} scheme={scheme} onSchemeChange={setScheme} />\n * </AppLayout>\n * )\n * }\n * ```\n *\n *\n * @hidden\n * @beta\n */\n scheme?: StudioThemeColorSchemeKey\n /**\n * @hidden\n * @beta */\n unstable_history?: RouterHistory\n /**\n * @hidden\n * @beta */\n unstable_globalStyles?: boolean\n /**\n * @hidden\n * @beta */\n unstable_noAuthBoundary?: boolean\n}\n\n/**\n * @hidden\n * @beta */\nexport function Studio(props: StudioProps): ReactElement {\n const {\n basePath,\n config,\n onSchemeChange,\n scheme,\n unstable_globalStyles: globalStyles,\n unstable_history,\n unstable_noAuthBoundary,\n } = props\n\n return (\n <StudioProvider\n basePath={basePath}\n config={config}\n onSchemeChange={onSchemeChange}\n scheme={scheme}\n unstable_history={unstable_history}\n unstable_noAuthBoundary={unstable_noAuthBoundary}\n >\n {globalStyles && <GlobalStyle />}\n <StudioLayout />\n </StudioProvider>\n )\n}\n","import React, {StrictMode} from 'react'\nimport {createRoot} from 'react-dom/client'\nimport type {Config} from '../config'\nimport {Studio} from './Studio'\n\ninterface RenderStudioOptions {\n basePath?: string\n reactStrictMode?: boolean\n}\n\n/**\n * @internal\n * @deprecated Use `renderStudio(rootElement, config, {reactStrictMode: true})` instead\n */\nexport function renderStudio(\n rootElement: HTMLElement | null,\n config: Config,\n options: boolean,\n): () => void\n\n/** @internal */\nexport function renderStudio(rootElement: HTMLElement | null, config: Config): () => void\n\n/** @internal */\nexport function renderStudio(\n rootElement: HTMLElement | null,\n config: Config,\n options: RenderStudioOptions,\n): () => void\n\n/** @internal */\nexport function renderStudio(\n rootElement: HTMLElement | null,\n config: Config,\n options: RenderStudioOptions | boolean = false,\n): () => void {\n if (!rootElement) {\n throw new Error('Missing root element to mount application into')\n }\n\n const opts = typeof options === 'boolean' ? {reactStrictMode: options} : options\n const {reactStrictMode = false, basePath} = opts\n\n const root = createRoot(rootElement)\n\n root.render(\n reactStrictMode ? (\n <StrictMode>\n <Studio config={config} basePath={basePath} unstable_globalStyles />\n </StrictMode>\n ) : (\n <Studio config={config} basePath={basePath} unstable_globalStyles />\n ),\n )\n\n return () => root.unmount()\n}\n","import {SanityDocument} from '@sanity/types'\nimport {ReactElement} from 'react'\nimport {DocumentStore} from '../store'\nimport {useReferringDocuments} from '../hooks/useReferringDocuments'\n\n/**\n * @internal\n * @deprecated - Will be removed in 4.0.0, use the `useReferringDocuments(<documentId>)` hook instead\n */\nexport function WithReferringDocuments({\n children,\n id,\n}: {\n children: (props: {isLoading: boolean; referringDocuments: SanityDocument[]}) => ReactElement\n /**\n * @deprecated - no longer required\n */\n documentStore?: DocumentStore\n id: string\n}) {\n return children(useReferringDocuments(id))\n}\n","import React from 'react'\nimport {defaults} from './defaults'\nimport {ZIndexContext} from './ZIndexContext'\n\n/**\n * TODO: Rename to `ZOffsetsProvider`\n *\n * @internal\n */\nexport function ZIndexProvider({children}: {children?: React.ReactNode}): React.ReactElement {\n return <ZIndexContext.Provider value={defaults}>{children}</ZIndexContext.Provider>\n}\n","import {HTMLProps} from 'react'\nimport {Badge, BadgeProps} from '@sanity/ui'\n\n/** @internal */\nexport type BetaBadgeProps = Omit<BadgeProps, 'mode' | 'tone'>\n\n/** @internal */\nexport function BetaBadge(props: BetaBadgeProps & Omit<HTMLProps<HTMLDivElement>, 'ref'>) {\n const {fontSize = 1, children = 'Beta', ...rest} = props\n\n return (\n <Badge {...rest} fontSize={fontSize} radius={2} tone=\"primary\">\n {children}\n </Badge>\n )\n}\n","import React from 'react'\nimport {type RelativeTimeOptions, useRelativeTime} from '../hooks/useRelativeTime'\n\n/**\n * @internal\n */\nexport interface RelativeTimeProps extends RelativeTimeOptions {\n time: string | Date\n}\n\n/**\n * @internal\n */\nexport function RelativeTime({time, ...options}: RelativeTimeProps) {\n const timestamp = time instanceof Date ? time : new Date(time)\n const timeAgo = useRelativeTime(timestamp, options)\n\n return (\n <time dateTime={timestamp.toISOString()} title={timeAgo}>\n {timeAgo}\n </time>\n )\n}\n","import React from 'react'\nimport {TextInput} from '@sanity/ui'\nimport {StringInputProps} from '../types'\n\n/**\n *\n * @hidden\n * @beta\n */\nexport type TelephoneInputProps = StringInputProps\n\n/**\n *\n * @hidden\n * @beta\n */\nexport function TelephoneInput(props: TelephoneInputProps) {\n const {schemaType, validationError, value, elementProps} = props\n\n return (\n <TextInput\n type=\"tel\"\n inputMode=\"tel\"\n customValidity={validationError}\n value={value || ''}\n placeholder={schemaType.placeholder}\n {...elementProps}\n />\n )\n}\n","import {isKeySegment, Path} from '@sanity/types'\nimport {StateTree} from './types'\n\n/** @internal */\nexport function setAtPath<T>(\n currentTree: StateTree<T> | undefined,\n path: Path,\n value: T,\n): StateTree<T> {\n if (path.length === 0) {\n return {...(currentTree || {}), value}\n }\n const [head, ...tail] = path\n const key = isKeySegment(head) ? head._key : String(head)\n const children = currentTree?.children ?? {}\n return {\n value: currentTree?.value,\n children: {...children, [key]: setAtPath(children[key] || {}, tail, value)},\n }\n}\n","import {FieldGroup} from '@sanity/types'\n\n/**\n * Max supported field depth. Fields deeper than this will be considered hidden.\n */\nexport const MAX_FIELD_DEPTH = 20\n\n/**\n * Start auto-collapsing fields at this nesting level unless schema/field configuration says otherwise\n */\nexport const AUTO_COLLAPSE_DEPTH = 3\n\nexport const ALL_FIELDS_GROUP: FieldGroup = {\n name: 'all-fields',\n title: 'All fields',\n hidden: false,\n}\n","import {isArrayOfObjectsSchemaType, isObjectSchemaType} from '@sanity/types'\nimport {ArrayOfObjectsFormNode, BaseFormNode, ObjectFormNode} from './nodes'\n\n/** @internal */\nexport function isObjectFormNode(formNode: BaseFormNode): formNode is ObjectFormNode {\n return isObjectSchemaType(formNode.schemaType)\n}\n/** @internal */\nexport function isArrayOfObjectsFormNode(\n formNode: BaseFormNode,\n): formNode is ArrayOfObjectsFormNode {\n return isArrayOfObjectsSchemaType(formNode.schemaType)\n}\n","import {isKeySegment, Path} from '@sanity/types'\nimport {castArray} from 'lodash'\nimport {\n ArrayOfObjectsFormNode,\n ArrayOfObjectsItemMember,\n BaseFormNode,\n FieldMember,\n FieldSetMember,\n ObjectFormNode,\n ObjectMember,\n} from '../types'\nimport {isMemberArrayOfObjects, isMemberObject} from '../../members/object/fields/asserters'\nimport {ALL_FIELDS_GROUP} from '../constants'\nimport {isArrayOfObjectsFormNode, isObjectFormNode} from '../types/asserters'\n\n/** @internal */\nexport interface ExpandPathOperation {\n type: 'expandPath'\n path: Path\n}\n\n/** @internal */\nexport interface ExpandFieldSetOperation {\n type: 'expandFieldSet'\n path: Path\n}\n\n/** @internal */\nexport interface SetActiveGroupOperation {\n type: 'setSelectedGroup'\n path: Path\n groupName: string\n}\n\n/** @internal */\nexport type ExpandOperation =\n | ExpandPathOperation\n | ExpandFieldSetOperation\n | SetActiveGroupOperation\n\nfunction hasAllMembers<T extends BaseFormNode>(value: T): value is HasAllMembers<T> {\n return '_allMembers' in value && Array.isArray(value._allMembers)\n}\n\n/**\n * This takes a form state and returns a list of operations required to open a node at a particular path\n * @param node - The base form node (i.e. the form state node for the _document_)\n * @param path - The path to open\n *\n * @internal\n */\nexport function getExpandOperations(node: BaseFormNode, path: Path): ExpandOperation[] {\n return [\n // make sure to expand all intermediate paths\n ...path.map((p, i): ExpandPathOperation => ({type: 'expandPath', path: path.slice(0, i + 1)})),\n // make sure to expand all fieldsets and selects the groups that includes the intermediate nodes\n ...getFieldsetAndFieldGroupOperations(node, path),\n ]\n}\nfunction getFieldsetAndFieldGroupOperations(node: BaseFormNode, path: Path) {\n if (path.length === 0) {\n return []\n }\n\n if (isObjectFormNode(node) && hasAllMembers(node)) {\n return getObjectFieldsetAndFieldGroupOperations(node, path)\n }\n if (isArrayOfObjectsFormNode(node)) {\n return getArrayFieldsetAndFieldGroupOperations(node, path)\n }\n return []\n}\n\ntype HasAllMembers<T> = T & {_allMembers: ObjectMember[]}\n\nfunction getObjectFieldsetAndFieldGroupOperations(\n node: HasAllMembers<ObjectFormNode>,\n path: Path,\n): (ExpandFieldSetOperation | SetActiveGroupOperation)[] {\n if (path.length === 0) {\n return []\n }\n // extract the field name for the current level we're looking at\n const [fieldName, ...tail] = path\n\n const fieldsetMember = node._allMembers.find(\n (member): member is FieldSetMember =>\n member.kind === 'fieldSet' &&\n member.fieldSet.members.some(\n (field): field is FieldMember => field.kind === 'field' && field.name === fieldName,\n ),\n )\n\n // if we found the field in a fieldset we need to recurse into this fieldset's members, otherwise we can use the node's members\n const members = fieldsetMember\n ? fieldsetMember.fieldSet.members\n : // Note: we need to use the internal `_allMembers` array here instead of members since hidden/collapsed members are omitted from members\n node._allMembers\n\n // look for the field inside the members array\n const fieldMember = members.find(\n (member): member is FieldMember =>\n member !== null && member.kind === 'field' && member.name === fieldName,\n )\n\n // Group handling\n const schemaField = node.schemaType.fields.find((field) => field.name === fieldName)\n const selectedGroupName = node.groups.find((group) => group.selected)?.name\n const defaultGroupName = (node.schemaType.groups || []).find((group) => group.default)?.name\n const inSelectedGroup =\n selectedGroupName &&\n (selectedGroupName === ALL_FIELDS_GROUP.name ||\n (schemaField && castArray(schemaField.group).includes(selectedGroupName)))\n\n const ops: (ExpandFieldSetOperation | SetActiveGroupOperation)[] = []\n\n if (!inSelectedGroup) {\n ops.push({\n type: 'setSelectedGroup',\n path: node.path,\n groupName: defaultGroupName || ALL_FIELDS_GROUP.name,\n })\n }\n\n if (fieldsetMember) {\n // the field is inside a fieldset, make sure we expand it too\n ops.push({type: 'expandFieldSet', path: fieldsetMember.fieldSet.path})\n }\n\n if (fieldMember && hasAllMembers(fieldMember.field)) {\n if (isMemberArrayOfObjects(fieldMember)) {\n ops.push(...getArrayFieldsetAndFieldGroupOperations(fieldMember.field, tail))\n } else if (isMemberObject(fieldMember)) {\n ops.push(...getObjectFieldsetAndFieldGroupOperations(fieldMember.field, tail))\n }\n }\n\n return ops\n}\n\nfunction getArrayFieldsetAndFieldGroupOperations(\n state: ArrayOfObjectsFormNode,\n path: Path,\n): (ExpandFieldSetOperation | SetActiveGroupOperation)[] {\n if (path.length === 0) {\n return []\n }\n\n // start at the root and make sure all groups/paths are expanded/activated along the way\n const [segment, ...rest] = path\n if (!isKeySegment(segment)) {\n throw new Error('Expected path segment to be an object with a _key property')\n }\n\n const foundMember = state.members.find(\n (member): member is ArrayOfObjectsItemMember => member.key === segment._key,\n )\n\n if (!foundMember) {\n // tried to open a member that does not exist in the form state - it's likely hidden\n return []\n }\n return getFieldsetAndFieldGroupOperations(foundMember.item, rest)\n}\n","/* eslint-disable no-nested-ternary */\nimport {ConditionalProperty, CurrentUser} from '@sanity/types'\n\n/**\n * @internal\n */\nexport interface ConditionalPropertyCallbackContext {\n parent?: unknown\n document?: Record<string, unknown>\n currentUser: Omit<CurrentUser, 'role'> | null\n value: unknown\n}\n\n/**\n * @internal\n */\nexport function resolveConditionalProperty(\n property: ConditionalProperty,\n context: ConditionalPropertyCallbackContext,\n) {\n const {currentUser, document, parent, value} = context\n\n if (typeof property === 'boolean' || property === undefined) {\n return Boolean(property)\n }\n\n return (\n property({\n document: document as any,\n parent,\n value,\n currentUser,\n }) === true // note: we can't strictly \"trust\" the return value here, so the conditional property should probably be typed as unknown\n )\n}\n","import {ArraySchemaType, SchemaType} from '@sanity/types'\nimport {resolveTypeName} from '@sanity/util/content'\n\nexport function getItemType(arrayType: ArraySchemaType, item: unknown): SchemaType | undefined {\n const itemTypeName = resolveTypeName(item)\n\n return itemTypeName === 'object' && arrayType.of.length === 1\n ? arrayType.of[0]\n : arrayType.of.find((memberType) => memberType.name === itemTypeName)\n}\n\nexport function getPrimitiveItemType(\n arrayType: ArraySchemaType,\n item: unknown,\n): SchemaType | undefined {\n const itemTypeName = resolveTypeName(item)\n\n return arrayType?.of.find(\n (memberType) => memberType.name === itemTypeName || memberType.jsonType === itemTypeName,\n )\n}\n","import {ObjectSchemaTypeWithOptions} from '@sanity/types'\nimport {AUTO_COLLAPSE_DEPTH} from '../constants'\n\ninterface CollapsibleOptions {\n collapsible: boolean | undefined\n // Initial collapsed state\n collapsed: boolean | undefined\n}\n\n/**\n * Takes an option object that can optionally have a 'collapsed' property\n * (`{collapsed?: boolean, collapsible?: boolean}`)\n * and returns a resolved collapsed state based on configuration and whether it's below a certain nesting level threshold\n - collapsible: boolean - whether the field can be collapsed\n - collapsed: boolean - whether the field is initially collapsed\n * NOTE: If a field is configured with ´collapsed: true´, ignore any ´collapsible´ configuration and make it collapsible no matter what, otherwise it will be left forever collapsed.\n *\n * If the nesting level is deeper than or equal to AUTO_COLLAPSE_DEPTH, the default for the field/fieldset becomes \"collapsed\"\n *\n * @param options - Whether the field or fieldset should be collapsed\n * @param level - Nesting level\n */\nexport function getCollapsedWithDefaults(\n options: ObjectSchemaTypeWithOptions['options'] = {},\n level: number,\n): CollapsibleOptions {\n if (options?.collapsible === false || options?.collapsable === false) {\n return {collapsible: false, collapsed: false}\n }\n\n const collapsed =\n // eslint-disable-next-line no-nested-ternary\n typeof options?.collapsed === 'boolean'\n ? options.collapsed\n : level >= AUTO_COLLAPSE_DEPTH\n ? true\n : undefined\n\n const collapsible =\n options?.collapsible === true || options?.collapsable === true || collapsed === true\n ? true\n : undefined\n\n return {\n collapsible,\n collapsed,\n }\n}\n","/* eslint-disable max-statements */\n/* eslint-disable camelcase, no-else-return */\n\nimport {\n ArraySchemaType,\n BooleanSchemaType,\n CurrentUser,\n isArrayOfObjectsSchemaType,\n isArraySchemaType,\n isObjectSchemaType,\n NumberSchemaType,\n ObjectField,\n ObjectSchemaType,\n Path,\n StringSchemaType,\n ValidationMarker,\n} from '@sanity/types'\n\nimport {castArray, isEqual as _isEqual, pick} from 'lodash'\nimport {isEqual, pathFor, startsWith, toString, trimChildPath} from '@sanity/util/paths'\nimport {resolveTypeName} from '@sanity/util/content'\n\nimport {EMPTY_ARRAY, isNonNullable, isRecord} from '../../util'\nimport {getFieldLevel} from '../studio/inputResolver/helpers'\nimport {FIXME} from '../../FIXME'\nimport {FormNodePresence} from '../../presence'\n\nimport {\n FieldSetMember,\n HiddenField,\n ObjectArrayFormNode,\n PrimitiveFormNode,\n StateTree,\n} from './types'\nimport {resolveConditionalProperty} from './conditional-property'\nimport {ALL_FIELDS_GROUP, MAX_FIELD_DEPTH} from './constants'\nimport {getItemType, getPrimitiveItemType} from './utils/getItemType'\nimport {\n ArrayOfObjectsMember,\n ArrayOfPrimitivesMember,\n FieldMember,\n ObjectMember,\n} from './types/members'\nimport {ArrayOfObjectsFormNode, ArrayOfPrimitivesFormNode, ObjectFormNode} from './types/nodes'\nimport {FormFieldGroup} from './types/fieldGroup'\nimport {getCollapsedWithDefaults} from './utils/getCollapsibleOptions'\nimport {FieldError} from './types/memberErrors'\n\ntype PrimitiveSchemaType = BooleanSchemaType | NumberSchemaType | StringSchemaType\n\nfunction isFieldEnabledByGroupFilter(\n // the groups config for the \"enclosing object\" type\n groupsConfig: FormFieldGroup[],\n fieldGroup: string | string[] | undefined,\n selectedGroup: FormFieldGroup,\n) {\n if (selectedGroup.name === ALL_FIELDS_GROUP.name) {\n return true\n }\n\n // \"all fields\" is not the selected group and the field has no group config, so it should be hidden\n if (fieldGroup === undefined) {\n return false\n }\n\n // if there's no group config for the object type, all fields are visible\n if (groupsConfig.length === 0 && selectedGroup.name === ALL_FIELDS_GROUP.name) {\n return true\n }\n\n return castArray(fieldGroup).includes(selectedGroup.name)\n}\n\nfunction isAcceptedObjectValue(value: any): value is Record<string, unknown> | undefined {\n return typeof value === 'undefined' || isRecord(value)\n}\n\nfunction isValidArrayOfObjectsValue(value: any): value is unknown[] | undefined {\n return typeof value === 'undefined' || Array.isArray(value)\n}\n\nfunction isValidArrayOfPrimitivesValue(\n value: any,\n): value is (boolean | number | string)[] | undefined {\n return typeof value === 'undefined' || Array.isArray(value)\n}\n\nfunction everyItemIsObject(value: unknown[]): value is object[] {\n return value.length === 0 || value.every((item) => isRecord(item))\n}\n\nfunction findDuplicateKeyEntries(array: {_key: string}[]) {\n const seenKeys = new Set<string>()\n return array.reduce((acc: [index: number, key: string][], item, index) => {\n if (seenKeys.has(item._key)) {\n acc.push([index, item._key])\n }\n seenKeys.add(item._key)\n return acc\n }, [])\n}\n\nfunction hasKey<T extends object>(value: T): value is T & {_key: string} {\n return '_key' in value\n}\n\nfunction everyItemHasKey<T extends object>(array: T[]): array is (T & {_key: string})[] {\n return array?.every((item) => isRecord(item) && hasKey(item))\n}\n\nfunction isChangedValue(value: any, comparisonValue: any) {\n // changes panel is not being able to identify changes in array of objects\n // (especially when it comes to unpublished changes)\n // the main issue it fixes is in instances where the array removes a last item but instead of turning\n // \"undefined\" it returns an empty array (and so the change indicator remains active when it shouldn't)\n if (\n (Array.isArray(value) && typeof comparisonValue === 'undefined') ||\n (Array.isArray(comparisonValue) && typeof value === 'undefined')\n ) {\n return false\n }\n\n if (value && !comparisonValue) {\n return true\n }\n return !_isEqual(value, comparisonValue)\n}\n\n/*\n * Takes a field in context of a parent object and returns prepared props for it\n */\nfunction prepareFieldMember(props: {\n field: ObjectField\n parent: RawState<ObjectSchemaType, unknown> & {\n groups: FormFieldGroup[]\n selectedGroup: FormFieldGroup\n }\n index: number\n}): ObjectMember | HiddenField | null {\n const {parent, field, index} = props\n const fieldPath = pathFor([...parent.path, field.name])\n const fieldLevel = getFieldLevel(field.type, parent.level + 1)\n\n const parentValue = parent.value\n const parentComparisonValue = parent.comparisonValue\n if (!isAcceptedObjectValue(parentValue)) {\n // Note: we validate each field, before passing it recursively to this function so getting this error means that the\n // ´prepareFormState´ function itself has been called with a non-object value\n throw new Error('Unexpected non-object value')\n }\n\n const normalizedFieldGroupNames = field.group ? castArray(field.group) : []\n const inSelectedGroup = isFieldEnabledByGroupFilter(\n parent.groups,\n field.group,\n parent.selectedGroup,\n )\n\n if (isObjectSchemaType(field.type)) {\n const fieldValue = parentValue?.[field.name]\n const fieldComparisonValue = isRecord(parentComparisonValue)\n ? parentComparisonValue?.[field.name]\n : undefined\n\n if (!isAcceptedObjectValue(fieldValue)) {\n return {\n kind: 'error',\n key: field.name,\n fieldName: field.name,\n error: {\n type: 'INCOMPATIBLE_TYPE',\n expectedSchemaType: field.type,\n resolvedValueType: resolveTypeName(fieldValue),\n value: fieldValue,\n },\n }\n }\n\n const conditionalPropertyContext = {\n value: fieldValue,\n parent: parent.value,\n document: parent.document,\n currentUser: parent.currentUser,\n }\n const hidden = resolveConditionalProperty(field.type.hidden, conditionalPropertyContext)\n\n if (hidden) {\n return {\n kind: 'hidden',\n key: `field-${field.name}`,\n name: field.name,\n index: index,\n }\n }\n\n // readonly is inherited\n const readOnly =\n parent.readOnly || resolveConditionalProperty(field.type.readOnly, conditionalPropertyContext)\n\n // todo: consider requiring a _type annotation for object values on fields as well\n // if (resolvedValueType !== field.type.name) {\n // return {\n // kind: 'error',\n // key: field.name,\n // error: {\n // type: 'TYPE_ANNOTATION_MISMATCH',\n // expectedSchemaType: field.type,\n // resolvedValueType,\n // },\n // }\n // }\n\n const fieldGroupState = parent.fieldGroupState?.children?.[field.name]\n const scopedCollapsedPaths = parent.collapsedPaths?.children?.[field.name]\n const scopedCollapsedFieldsets = parent.collapsedFieldSets?.children?.[field.name]\n\n const inputState = prepareObjectInputState({\n schemaType: field.type,\n currentUser: parent.currentUser,\n parent: parent.value,\n document: parent.document,\n value: fieldValue,\n changed: isChangedValue(fieldValue, fieldComparisonValue),\n comparisonValue: fieldComparisonValue,\n presence: parent.presence,\n validation: parent.validation,\n fieldGroupState,\n path: fieldPath,\n level: fieldLevel,\n focusPath: parent.focusPath,\n openPath: parent.openPath,\n collapsedPaths: scopedCollapsedPaths,\n collapsedFieldSets: scopedCollapsedFieldsets,\n readOnly,\n changesOpen: parent.changesOpen,\n })\n\n if (inputState === null) {\n // if inputState is null is either because we reached max field depth or if it has no visible members\n return null\n }\n\n const defaultCollapsedState = getCollapsedWithDefaults(field.type.options as FIXME, fieldLevel)\n const collapsed = scopedCollapsedPaths\n ? scopedCollapsedPaths.value\n : defaultCollapsedState.collapsed\n\n return {\n kind: 'field',\n key: `field-${field.name}`,\n name: field.name,\n index: index,\n\n inSelectedGroup,\n groups: normalizedFieldGroupNames,\n\n open: startsWith(fieldPath, parent.openPath),\n field: inputState,\n collapsed,\n collapsible: defaultCollapsedState.collapsible,\n }\n } else if (isArraySchemaType(field.type)) {\n const fieldValue = parentValue?.[field.name] as unknown[] | undefined\n const fieldComparisonValue = isRecord(parentComparisonValue)\n ? parentComparisonValue?.[field.name]\n : undefined\n if (isArrayOfObjectsSchemaType(field.type)) {\n const hasValue = typeof fieldValue !== 'undefined'\n if (hasValue && !isValidArrayOfObjectsValue(fieldValue)) {\n const resolvedValueType = resolveTypeName(fieldValue)\n\n return {\n kind: 'error',\n key: field.name,\n fieldName: field.name,\n error: {\n type: 'INCOMPATIBLE_TYPE',\n expectedSchemaType: field.type,\n resolvedValueType,\n value: fieldValue,\n },\n }\n }\n\n if (hasValue && !everyItemIsObject(fieldValue)) {\n return {\n kind: 'error',\n key: field.name,\n fieldName: field.name,\n error: {\n type: 'MIXED_ARRAY',\n schemaType: field.type,\n value: fieldValue,\n },\n }\n }\n\n if (hasValue && !everyItemHasKey(fieldValue)) {\n return {\n kind: 'error',\n key: field.name,\n fieldName: field.name,\n error: {\n type: 'MISSING_KEYS',\n value: fieldValue,\n schemaType: field.type,\n },\n }\n }\n\n const duplicateKeyEntries = hasValue ? findDuplicateKeyEntries(fieldValue) : []\n if (duplicateKeyEntries.length > 0) {\n return {\n kind: 'error',\n key: field.name,\n fieldName: field.name,\n error: {\n type: 'DUPLICATE_KEYS',\n duplicates: duplicateKeyEntries,\n schemaType: field.type,\n },\n }\n }\n\n const fieldGroupState = parent.fieldGroupState?.children?.[field.name]\n const scopedCollapsedPaths = parent.collapsedPaths?.children?.[field.name]\n const scopedCollapsedFieldSets = parent.collapsedFieldSets?.children?.[field.name]\n\n const readOnly =\n parent.readOnly ||\n resolveConditionalProperty(field.type.readOnly, {\n value: fieldValue,\n parent: parent.value,\n document: parent.document,\n currentUser: parent.currentUser,\n })\n\n const fieldState = prepareArrayOfObjectsInputState({\n schemaType: field.type,\n parent: parent.value,\n currentUser: parent.currentUser,\n document: parent.document,\n value: fieldValue,\n changed: isChangedValue(fieldValue, fieldComparisonValue),\n comparisonValue: fieldComparisonValue as FIXME,\n fieldGroupState,\n focusPath: parent.focusPath,\n openPath: parent.openPath,\n presence: parent.presence,\n validation: parent.validation,\n collapsedPaths: scopedCollapsedPaths,\n collapsedFieldSets: scopedCollapsedFieldSets,\n level: fieldLevel,\n path: fieldPath,\n readOnly,\n })\n\n if (fieldState === null) {\n return null\n }\n\n return {\n kind: 'field',\n key: `field-${field.name}`,\n name: field.name,\n index: index,\n\n open: startsWith(fieldPath, parent.openPath),\n\n inSelectedGroup,\n groups: normalizedFieldGroupNames,\n\n collapsible: false,\n collapsed: false,\n // note: this is what we actually end up passing down as to the next input component\n field: fieldState,\n }\n } else {\n // array of primitives\n if (!isValidArrayOfPrimitivesValue(fieldValue)) {\n const resolvedValueType = resolveTypeName(fieldValue)\n\n return {\n kind: 'error',\n key: field.name,\n fieldName: field.name,\n error: {\n type: 'INCOMPATIBLE_TYPE',\n expectedSchemaType: field.type,\n resolvedValueType,\n value: fieldValue,\n },\n }\n }\n\n const fieldGroupState = parent.fieldGroupState?.children?.[field.name]\n const scopedCollapsedPaths = parent.collapsedPaths?.children?.[field.name]\n const scopedCollapsedFieldSets = parent.collapsedFieldSets?.children?.[field.name]\n\n const readOnly =\n parent.readOnly ||\n resolveConditionalProperty(field.type.readOnly, {\n value: fieldValue,\n parent: parent.value,\n document: parent.document,\n currentUser: parent.currentUser,\n })\n\n const fieldState = prepareArrayOfPrimitivesInputState({\n changed: isChangedValue(fieldValue, fieldComparisonValue),\n comparisonValue: fieldComparisonValue as FIXME,\n schemaType: field.type,\n parent: parent.value,\n currentUser: parent.currentUser,\n document: parent.document,\n value: fieldValue,\n fieldGroupState,\n focusPath: parent.focusPath,\n openPath: parent.openPath,\n presence: parent.presence,\n validation: parent.validation,\n collapsedPaths: scopedCollapsedPaths,\n collapsedFieldSets: scopedCollapsedFieldSets,\n level: fieldLevel,\n path: fieldPath,\n readOnly,\n })\n\n if (fieldState === null) {\n return null\n }\n\n return {\n kind: 'field',\n key: `field-${field.name}`,\n name: field.name,\n index: index,\n\n inSelectedGroup,\n groups: normalizedFieldGroupNames,\n\n open: startsWith(fieldPath, parent.openPath),\n\n // todo: consider support for collapsible arrays\n collapsible: false,\n collapsed: false,\n // note: this is what we actually end up passing down as to the next input component\n field: fieldState,\n }\n }\n } else {\n // primitive fields\n\n const fieldValue = parentValue?.[field.name] as undefined | boolean | string | number\n const fieldComparisonValue = isRecord(parentComparisonValue)\n ? parentComparisonValue?.[field.name]\n : undefined\n\n const conditionalPropertyContext = {\n value: fieldValue,\n parent: parent.value,\n document: parent.document,\n currentUser: parent.currentUser,\n }\n\n // note: we *only* want to call the conditional props here, as it's handled by the prepare<Object|Array>InputProps otherwise\n const hidden = resolveConditionalProperty(field.type.hidden, conditionalPropertyContext)\n\n if (hidden) {\n return null\n }\n\n const readOnly =\n parent.readOnly || resolveConditionalProperty(field.type.readOnly, conditionalPropertyContext)\n\n const fieldState = preparePrimitiveInputState({\n ...parent,\n comparisonValue: fieldComparisonValue,\n value: fieldValue as boolean | string | number | undefined,\n schemaType: field.type as PrimitiveSchemaType,\n path: fieldPath,\n readOnly,\n })\n\n return {\n kind: 'field',\n key: `field-${field.name}`,\n name: field.name,\n index: index,\n open: startsWith(fieldPath, parent.openPath),\n\n inSelectedGroup,\n groups: normalizedFieldGroupNames,\n\n // todo: consider support for collapsible primitive fields\n collapsible: false,\n collapsed: false,\n field: fieldState,\n }\n }\n}\n\ninterface RawState<SchemaType, T> {\n schemaType: SchemaType\n value?: T\n comparisonValue?: T | null\n changed?: boolean\n document: FIXME_SanityDocument\n currentUser: Omit<CurrentUser, 'role'> | null\n parent?: unknown\n hidden?: boolean\n readOnly?: boolean\n path: Path\n openPath: Path\n focusPath: Path\n presence: FormNodePresence[]\n validation: ValidationMarker[]\n fieldGroupState?: StateTree<string>\n collapsedPaths?: StateTree<boolean>\n collapsedFieldSets?: StateTree<boolean>\n // nesting level\n level: number\n changesOpen?: boolean\n}\n\nfunction prepareObjectInputState<T>(\n props: RawState<ObjectSchemaType, T>,\n enableHiddenCheck?: false,\n): ObjectFormNode\nfunction prepareObjectInputState<T>(\n props: RawState<ObjectSchemaType, T>,\n enableHiddenCheck?: true,\n): ObjectFormNode | null\nfunction prepareObjectInputState<T>(\n props: RawState<ObjectSchemaType, T>,\n enableHiddenCheck = true,\n): ObjectFormNode | null {\n if (props.level === MAX_FIELD_DEPTH) {\n return null\n }\n\n const conditionalPropertyContext = {\n value: props.value,\n parent: props.parent,\n document: props.document,\n currentUser: props.currentUser,\n }\n\n // readonly is inherited\n const readOnly =\n props.readOnly ||\n resolveConditionalProperty(props.schemaType.readOnly, conditionalPropertyContext)\n\n const schemaTypeGroupConfig = props.schemaType.groups || []\n const defaultGroupName = (schemaTypeGroupConfig.find((g) => g.default) || ALL_FIELDS_GROUP)?.name\n\n const groups = [ALL_FIELDS_GROUP, ...schemaTypeGroupConfig].flatMap((group): FormFieldGroup[] => {\n const groupHidden = resolveConditionalProperty(group.hidden, conditionalPropertyContext)\n const isSelected = group.name === (props.fieldGroupState?.value || defaultGroupName)\n\n // Set the \"all-fields\" group as selected when review changes is open to enable review of all\n // fields and changes together. When review changes is closed - switch back to the selected tab.\n const selected = props.changesOpen ? group.name === ALL_FIELDS_GROUP.name : isSelected\n // Also disable non-selected groups when review changes is open\n const disabled = props.changesOpen ? !selected : false\n\n return groupHidden\n ? []\n : [\n {\n disabled,\n icon: group?.icon,\n name: group.name,\n selected,\n title: group.title,\n },\n ]\n })\n\n const selectedGroup = groups.find((group) => group.selected)!\n\n // note: this is needed because not all object types gets a ´fieldsets´ property during schema parsing.\n // ideally members should be normalized as part of the schema parsing and not here\n const normalizedSchemaMembers: typeof props.schemaType.fieldsets = props.schemaType.fieldsets\n ? props.schemaType.fieldsets\n : props.schemaType.fields.map((field) => ({single: true, field}))\n\n // create a members array for the object\n const members = normalizedSchemaMembers.flatMap(\n (fieldSet, index): (ObjectMember | HiddenField)[] => {\n // \"single\" means not part of a fieldset\n if (fieldSet.single) {\n const field = fieldSet.field\n\n const fieldMember = prepareFieldMember({\n field: field,\n parent: {...props, readOnly, groups, selectedGroup},\n index,\n })\n\n return fieldMember ? [fieldMember] : []\n }\n\n // it's an actual fieldset\n const fieldsetFieldNames = fieldSet.fields.map((f) => f.name)\n const fieldsetHidden = resolveConditionalProperty(fieldSet.hidden, {\n currentUser: props.currentUser,\n document: props.document,\n parent: props.value,\n value: pick(props.value, fieldsetFieldNames),\n })\n\n const fieldsetReadOnly = resolveConditionalProperty(fieldSet.readOnly, {\n currentUser: props.currentUser,\n document: props.document,\n parent: props.value,\n value: pick(props.value, fieldsetFieldNames),\n })\n\n const fieldsetMembers = fieldSet.fields.flatMap(\n (field): (FieldMember | FieldError | HiddenField)[] => {\n if (fieldsetHidden) {\n return [\n {\n kind: 'hidden',\n key: `field-${field.name}`,\n name: field.name,\n index: index,\n },\n ]\n }\n const fieldMember = prepareFieldMember({\n field: field,\n parent: {...props, readOnly: readOnly || fieldsetReadOnly, groups, selectedGroup},\n index,\n }) as FieldMember | FieldError | HiddenField\n\n return fieldMember ? [fieldMember] : []\n },\n )\n\n const defaultCollapsedState = getCollapsedWithDefaults(fieldSet.options, props.level)\n\n const collapsed =\n (props.collapsedFieldSets?.children || {})[fieldSet.name]?.value ??\n defaultCollapsedState.collapsed\n\n return [\n {\n kind: 'fieldSet',\n key: `fieldset-${fieldSet.name}`,\n _inSelectedGroup: isFieldEnabledByGroupFilter(groups, fieldSet.group, selectedGroup),\n groups: fieldSet.group ? castArray(fieldSet.group) : [],\n fieldSet: {\n path: pathFor(props.path.concat(fieldSet.name)),\n name: fieldSet.name,\n title: fieldSet.title,\n description: fieldSet.description,\n hidden: false,\n level: props.level + 1,\n members: fieldsetMembers.filter(\n (member): member is FieldMember => member.kind !== 'hidden',\n ),\n collapsible: defaultCollapsedState?.collapsible,\n collapsed,\n columns: fieldSet?.options?.columns,\n },\n },\n ]\n },\n )\n\n const hasFieldGroups = schemaTypeGroupConfig.length > 0\n\n const filteredPresence = props.presence.filter((item) => isEqual(item.path, props.path))\n const presence = filteredPresence.length ? filteredPresence : EMPTY_ARRAY\n\n const validation = props.validation\n .filter((item) => isEqual(item.path, props.path))\n .map((v) => ({level: v.level, message: v.message, path: v.path}))\n\n const visibleMembers = members.filter(\n (member): member is ObjectMember => member.kind !== 'hidden',\n )\n\n // Return null here only when enableHiddenCheck, or we end up with array members that have 'item: null' when they\n // really should not be. One example is when a block object inside the PT-input have a type with one single hidden field.\n // Then it should still be possible to see the member item, even though all of it's fields are null.\n if (visibleMembers.length === 0 && enableHiddenCheck) {\n return null\n }\n\n const visibleGroups = hasFieldGroups\n ? groups.flatMap((group) => {\n // The \"all fields\" group is always visible\n if (group.name === ALL_FIELDS_GROUP.name) {\n return group\n }\n const hasVisibleMembers = visibleMembers.some((member) => {\n if (member.kind === 'error') {\n return false\n }\n if (member.kind === 'field') {\n return member.groups.includes(group.name)\n }\n\n return (\n member.groups.includes(group.name) ||\n member.fieldSet.members.some(\n (fieldsetMember) =>\n fieldsetMember.kind !== 'error' && fieldsetMember.groups.includes(group.name),\n )\n )\n })\n return hasVisibleMembers ? group : []\n })\n : []\n\n const filtereredMembers = visibleMembers.flatMap(\n (member): (FieldError | FieldMember | FieldSetMember)[] => {\n if (member.kind === 'error') {\n return [member]\n }\n if (member.kind === 'field') {\n return member.inSelectedGroup ? [member] : []\n }\n\n const filteredFieldsetMembers: ObjectMember[] = member.fieldSet.members.filter(\n (fieldsetMember) => fieldsetMember.kind !== 'field' || fieldsetMember.inSelectedGroup,\n )\n return filteredFieldsetMembers.length > 0\n ? [\n {\n ...member,\n fieldSet: {...member.fieldSet, members: filteredFieldsetMembers},\n } as FieldSetMember,\n ]\n : []\n },\n )\n\n const node = {\n value: props.value as Record<string, unknown> | undefined,\n changed: isChangedValue(props.value, props.comparisonValue),\n schemaType: props.schemaType,\n readOnly,\n path: props.path,\n id: toString(props.path),\n level: props.level,\n focused: isEqual(props.path, props.focusPath),\n focusPath: trimChildPath(props.path, props.focusPath),\n presence,\n validation,\n // this is currently needed by getExpandOperations which needs to know about hidden members\n // (e.g. members not matching current group filter) in order to determine what to expand\n members: filtereredMembers,\n groups: visibleGroups,\n }\n Object.defineProperty(node, '_allMembers', {\n value: members,\n enumerable: false,\n })\n return node\n}\n\nfunction prepareArrayOfPrimitivesInputState<T extends (boolean | string | number)[]>(\n props: RawState<ArraySchemaType, T>,\n): ArrayOfPrimitivesFormNode | null {\n if (props.level === MAX_FIELD_DEPTH) {\n return null\n }\n\n const conditionalPropertyContext = {\n comparisonValue: props.comparisonValue,\n value: props.value,\n parent: props.parent,\n document: props.document,\n currentUser: props.currentUser,\n }\n\n const hidden = resolveConditionalProperty(props.schemaType.hidden, conditionalPropertyContext)\n\n if (hidden) {\n return null\n }\n\n const readOnly =\n props.readOnly ||\n resolveConditionalProperty(props.schemaType.readOnly, conditionalPropertyContext)\n\n // Todo: improve error handling at the parent level so that the value here is either undefined or an array\n const items = Array.isArray(props.value) ? props.value : []\n\n const filteredPresence = props.presence.filter((item) => isEqual(item.path, props.path))\n const presence = filteredPresence.length ? filteredPresence : EMPTY_ARRAY\n const validation = props.validation\n .filter((item) => isEqual(item.path, props.path))\n .map((v) => ({level: v.level, message: v.message, path: v.path}))\n const members = items.flatMap((item, index) =>\n prepareArrayOfPrimitivesMember({arrayItem: item, parent: props, index}),\n )\n return {\n // checks for changes not only on the array itself, but also on any of its items\n changed: props.changed || members.some((m) => m.kind === 'item' && m.item.changed),\n value: props.value as T,\n readOnly,\n schemaType: props.schemaType,\n focused: isEqual(props.path, props.focusPath),\n focusPath: trimChildPath(props.path, props.focusPath),\n path: props.path,\n id: toString(props.path),\n level: props.level,\n validation,\n presence,\n members,\n }\n}\n\nfunction prepareArrayOfObjectsInputState<T extends {_key: string}[]>(\n props: RawState<ArraySchemaType, T>,\n): ArrayOfObjectsFormNode | null {\n if (props.level === MAX_FIELD_DEPTH) {\n return null\n }\n\n const conditionalPropertyContext = {\n value: props.value,\n parent: props.parent,\n document: props.document,\n currentUser: props.currentUser,\n }\n const hidden = resolveConditionalProperty(props.schemaType.hidden, conditionalPropertyContext)\n\n if (hidden) {\n return null\n }\n\n const readOnly =\n props.readOnly ||\n resolveConditionalProperty(props.schemaType.readOnly, conditionalPropertyContext)\n\n // Todo: improve error handling at the parent level so that the value here is either undefined or an array\n const items = Array.isArray(props.value) ? props.value : []\n\n const filteredPresence = props.presence.filter((item) => isEqual(item.path, props.path))\n const presence = filteredPresence.length ? filteredPresence : EMPTY_ARRAY\n const validation = props.validation\n .filter((item) => isEqual(item.path, props.path))\n .map((v) => ({level: v.level, message: v.message, path: v.path}))\n\n const members = items.flatMap((item, index) =>\n prepareArrayOfObjectsMember({\n arrayItem: item,\n parent: props,\n index,\n }),\n )\n\n return {\n // checks for changes not only on the array itself, but also on any of its items\n changed: props.changed || members.some((m) => m.kind === 'item' && m.item.changed),\n value: props.value as T,\n readOnly,\n schemaType: props.schemaType,\n focused: isEqual(props.path, props.focusPath),\n focusPath: trimChildPath(props.path, props.focusPath),\n path: props.path,\n id: toString(props.path),\n level: props.level,\n validation,\n presence,\n members,\n }\n}\n\n/*\n * Takes a field in context of a parent object and returns prepared props for it\n */\nfunction prepareArrayOfObjectsMember(props: {\n arrayItem: {_key: string}\n parent: RawState<ArraySchemaType, unknown>\n index: number\n}): ArrayOfObjectsMember {\n const {arrayItem, parent, index} = props\n\n const itemType = getItemType(parent.schemaType, arrayItem) as ObjectSchemaType\n\n const key = arrayItem._key\n\n if (!itemType) {\n const itemTypeName = resolveTypeName(arrayItem)\n return {\n kind: 'error',\n key,\n index,\n error: {\n type: 'INVALID_ITEM_TYPE',\n resolvedValueType: itemTypeName,\n value: arrayItem,\n validTypes: parent.schemaType.of,\n },\n }\n }\n\n const itemPath = pathFor([...parent.path, {_key: key}])\n const itemLevel = parent.level + 1\n\n const conditionalPropertyContext = {\n value: parent.value,\n parent: props.parent,\n document: parent.document,\n currentUser: parent.currentUser,\n }\n const readOnly =\n parent.readOnly ||\n resolveConditionalProperty(parent.schemaType.readOnly, conditionalPropertyContext)\n\n const fieldGroupState = parent.fieldGroupState?.children?.[key]\n const scopedCollapsedPaths = parent.collapsedPaths?.children?.[key]\n const scopedCollapsedFieldsets = parent.collapsedFieldSets?.children?.[key]\n const comparisonValue =\n (Array.isArray(parent.comparisonValue) &&\n parent.comparisonValue.find((i) => i._key === arrayItem._key)) ||\n undefined\n\n const itemState = prepareObjectInputState(\n {\n schemaType: itemType,\n level: itemLevel,\n document: parent.document,\n value: arrayItem,\n comparisonValue,\n changed: isChangedValue(arrayItem, comparisonValue),\n path: itemPath,\n focusPath: parent.focusPath,\n openPath: parent.openPath,\n currentUser: parent.currentUser,\n collapsedPaths: scopedCollapsedPaths,\n collapsedFieldSets: scopedCollapsedFieldsets,\n presence: parent.presence,\n validation: parent.validation,\n fieldGroupState,\n readOnly,\n },\n false,\n ) as ObjectArrayFormNode\n\n const defaultCollapsedState = getCollapsedWithDefaults(itemType.options, itemLevel)\n const collapsed = scopedCollapsedPaths?.value ?? defaultCollapsedState.collapsed\n return {\n kind: 'item',\n key,\n index,\n open: startsWith(itemPath, parent.openPath),\n collapsed: collapsed,\n collapsible: true,\n parentSchemaType: parent.schemaType,\n item: itemState,\n }\n}\n\n/*\n * Takes a field in contet of a parent object and returns prepared props for it\n */\nfunction prepareArrayOfPrimitivesMember(props: {\n arrayItem: unknown\n parent: RawState<ArraySchemaType, unknown>\n index: number\n}): ArrayOfPrimitivesMember {\n const {arrayItem, parent, index} = props\n const itemType = getPrimitiveItemType(parent.schemaType, arrayItem)\n\n const itemPath = pathFor([...parent.path, index])\n const itemValue = (parent.value as unknown[] | undefined)?.[index] as string | boolean | number\n const itemComparisonValue = (parent.comparisonValue as unknown[] | undefined)?.[index] as\n | string\n | boolean\n | number\n const itemLevel = parent.level + 1\n\n // Best effort attempt to make a stable key for each item in the array\n // Since items may be reordered and change at any time, there's no way to reliably address each item uniquely\n // This is a \"best effort\"-attempt at making sure we don't re-use internal state for item inputs\n // when items are added to or removed from the array\n const key = `${itemType?.name || 'invalid-type'}-${String(index)}`\n\n if (!itemType) {\n return {\n kind: 'error',\n key,\n index,\n error: {\n type: 'INVALID_ITEM_TYPE',\n validTypes: parent.schemaType.of,\n resolvedValueType: resolveTypeName(itemType),\n value: itemValue,\n },\n }\n }\n\n const readOnly =\n parent.readOnly ||\n resolveConditionalProperty(itemType.readOnly, {\n value: itemValue,\n parent: parent.value,\n document: parent.document,\n currentUser: parent.currentUser,\n })\n\n const item = preparePrimitiveInputState({\n ...parent,\n path: itemPath,\n schemaType: itemType as PrimitiveSchemaType,\n level: itemLevel,\n value: itemValue,\n comparisonValue: itemComparisonValue,\n readOnly,\n })\n\n return {\n kind: 'item',\n key,\n index,\n parentSchemaType: parent.schemaType,\n open: isEqual(itemPath, parent.openPath),\n item,\n }\n}\n\nfunction preparePrimitiveInputState<SchemaType extends PrimitiveSchemaType>(\n props: RawState<SchemaType, unknown>,\n): PrimitiveFormNode {\n const filteredPresence = props.presence.filter((item) => isEqual(item.path, props.path))\n const presence = filteredPresence.length ? filteredPresence : EMPTY_ARRAY\n\n const validation = props.validation\n .filter((item) => isEqual(item.path, props.path))\n .map((v) => ({level: v.level, message: v.message, path: v.path}))\n return {\n schemaType: props.schemaType,\n changed: isChangedValue(props.value, props.comparisonValue),\n value: props.value,\n level: props.level,\n id: toString(props.path),\n readOnly: props.readOnly,\n focused: isEqual(props.path, props.focusPath),\n path: props.path,\n presence,\n validation,\n } as PrimitiveFormNode\n}\n\n/** @internal */\nexport type FIXME_SanityDocument = Record<string, unknown>\n\n/** @internal */\nexport function prepareFormState<T extends FIXME_SanityDocument>(\n props: RawState<ObjectSchemaType, T>,\n): ObjectFormNode | null {\n return prepareObjectInputState(props)\n}\n","/* eslint-disable camelcase */\n\nimport {ObjectSchemaType, Path, ValidationMarker} from '@sanity/types'\nimport {useLayoutEffect, useMemo, useRef} from 'react'\nimport {pathFor} from '@sanity/util/paths'\nimport {FormNodePresence} from '../../presence'\nimport {useCurrentUser} from '../../store'\nimport {StateTree, ObjectFormNode} from './types'\nimport {prepareFormState, FIXME_SanityDocument} from './formState'\nimport {immutableReconcile} from './utils/immutableReconcile'\nimport {DocumentFormNode} from './types/nodes'\n\n/** @internal */\nexport type FormState<\n T extends {[key in string]: unknown} = {[key in string]: unknown},\n S extends ObjectSchemaType = ObjectSchemaType,\n> = ObjectFormNode<T, S>\n\n/** @internal */\nexport function useFormState<\n T extends {[key in string]: unknown} = {[key in string]: unknown},\n S extends ObjectSchemaType = ObjectSchemaType,\n>(\n schemaType: ObjectSchemaType,\n {\n comparisonValue,\n value,\n fieldGroupState,\n collapsedFieldSets,\n collapsedPaths,\n focusPath,\n openPath,\n presence,\n validation,\n readOnly,\n changesOpen,\n }: {\n fieldGroupState?: StateTree<string> | undefined\n collapsedFieldSets?: StateTree<boolean> | undefined\n collapsedPaths?: StateTree<boolean> | undefined\n value: Partial<FIXME_SanityDocument>\n comparisonValue: Partial<FIXME_SanityDocument> | null\n openPath: Path\n focusPath: Path\n presence: FormNodePresence[]\n validation: ValidationMarker[]\n changesOpen?: boolean\n readOnly?: boolean\n },\n): FormState<T, S> | null {\n // note: feel free to move these state pieces out of this hook\n const currentUser = useCurrentUser()\n\n const prev = useRef<DocumentFormNode | null>(null)\n\n useLayoutEffect(() => {\n prev.current = null\n }, [schemaType])\n\n return useMemo(() => {\n // console.time('derive form state')\n const next = prepareFormState({\n schemaType,\n document: value,\n fieldGroupState,\n collapsedFieldSets,\n collapsedPaths,\n value,\n comparisonValue,\n focusPath,\n openPath,\n readOnly,\n path: pathFor([]),\n level: 0,\n currentUser,\n presence,\n validation,\n changesOpen,\n }) as ObjectFormNode<T, S> // TODO: remove type cast\n\n const reconciled = immutableReconcile(prev.current, next)\n prev.current = reconciled\n // console.timeEnd('derive form state')\n return reconciled\n }, [\n schemaType,\n value,\n fieldGroupState,\n collapsedFieldSets,\n collapsedPaths,\n comparisonValue,\n focusPath,\n openPath,\n readOnly,\n currentUser,\n presence,\n validation,\n changesOpen,\n ])\n}\n","import {arrayToJSONMatchPath} from '@sanity/mutator'\nimport {Path, PathSegment} from '@sanity/types'\n\nconst IS_NUMERIC = /^\\d+$/\n\nfunction unquote(str: string) {\n return str.replace(/^['\"]/, '').replace(/['\"]$/, '')\n}\n\nfunction splitAttr(segment: string) {\n const [attr, key] = segment.split('==')\n return {[attr]: unquote(key)}\n}\n\nfunction coerce(segment: string): PathSegment {\n return IS_NUMERIC.test(segment) ? Number(segment) : segment\n}\n\nfunction parseGradientPath(focusPathStr: string): Path {\n return focusPathStr\n .split(/[[.\\]]/g)\n .filter(Boolean)\n .map((seg) => (seg.includes('==') ? splitAttr(seg) : coerce(seg))) as Path\n}\n\n/**\n * @internal\n */\nexport function encodePath(formBuilderPath: Path): string {\n return arrayToJSONMatchPath(formBuilderPath)\n}\n\n/**\n * @internal\n */\nexport function decodePath(gradientPath: string): Path {\n return parseGradientPath(gradientPath)\n}\n","import {arrayToJSONMatchPath} from '@sanity/mutator'\nimport {flatten} from 'lodash'\nimport {SANITY_PATCH_TYPE} from '../patch'\nimport type {FormPatchOrigin, FormPatch} from '../patch/types'\nimport {decodePath} from './path'\n\n/**\n * @internal\n */\nexport type MutationPatch = Record<string, any> // @todo: complete this typing\n\n/**\n * @internal\n */\nexport function toMutationPatches(patches: FormPatch[]): MutationPatch[] {\n return patches.map(toMutationPatch)\n}\n\n/**\n * @internal\n */\nexport function fromMutationPatches(\n origin: FormPatchOrigin,\n patches: MutationPatch[],\n): FormPatch[] {\n return flatten(patches.map((patch) => toFormBuilderPatches(origin, patch)))\n}\n\nconst notIn = (values: unknown[]) => (value: unknown) => !values.includes(value)\n\nfunction toFormBuilderPatches(origin: FormPatchOrigin, patch: MutationPatch): FormPatch[] {\n return flatten(\n Object.keys(patch)\n .filter(notIn(['id', 'ifRevisionID', 'query']))\n .map((type) => {\n if (type === 'unset') {\n return patch.unset.map((path: any) => {\n return {\n type: 'unset',\n path: decodePath(path),\n origin,\n }\n })\n }\n if (type === 'insert') {\n const position = 'before' in patch.insert ? 'before' : 'after'\n return {\n type: 'insert',\n position: position,\n path: decodePath(patch.insert[position]),\n items: patch.insert.items,\n origin,\n }\n }\n return Object.keys(patch[type])\n .map((gradientPath) => {\n if (type === 'set') {\n return {\n type: 'set',\n path: decodePath(gradientPath),\n value: patch[type][gradientPath],\n origin,\n }\n }\n if (type === 'inc' || type === 'dec') {\n return {\n type: type,\n path: decodePath(gradientPath),\n value: patch[type][gradientPath],\n origin,\n }\n }\n if (type === 'setIfMissing') {\n return {\n type: 'setIfMissing',\n path: decodePath(gradientPath),\n value: patch[type][gradientPath],\n origin,\n }\n }\n if (type === 'diffMatchPatch') {\n return {\n type,\n path: decodePath(gradientPath),\n value: patch[type][gradientPath],\n origin,\n }\n }\n // eslint-disable-next-line no-console\n console.warn(new Error(`Unsupported patch type: ${type}`))\n return null\n })\n .filter(Boolean)\n }),\n )\n}\n\nfunction toMutationPatch(patch: FormPatch): MutationPatch {\n if (patch.patchType !== SANITY_PATCH_TYPE && patch.type) {\n throw new Error(\n `Patch is missing \"patchType\" - import and use \"${patch.type}()\" from \"sanity/form\"`,\n )\n } else if (patch.patchType !== SANITY_PATCH_TYPE) {\n throw new Error(\n `Patch is missing \"patchType\" - import and use the patch method helpers from \"sanity/form\"`,\n )\n }\n\n const matchPath = arrayToJSONMatchPath(patch.path || [])\n if (patch.type === 'insert') {\n const {position, items} = patch\n return {\n insert: {\n [position]: matchPath,\n items: items,\n },\n }\n }\n\n if (patch.type === 'unset') {\n return {\n unset: [matchPath],\n }\n }\n\n if (!patch.type) {\n throw new Error(`Missing patch type in patch ${JSON.stringify(patch)}`)\n }\n if (matchPath) {\n return {\n [patch.type]: {\n [matchPath]: patch.value,\n },\n }\n }\n return {\n [patch.type]: patch.value,\n }\n}\n"],"names":["noop","NoopTracker","_ref","children","createNoopTrackerScope","useReportedValues","Tracker","useReporter","ChangeFieldWrapper","props","ref","React","useRef","onSetFocus","default","useContext","ConnectorContext","isHover","setHover","useState","onMouseEnter","useCallback","onMouseLeave","concat","PathUtils","toString","path","element","current","isChanged","hasFocus","hasHover","hasRevertHover","deepCompare","handleClick","event","setFocusWithStopPropagation","jsx","onClick","stopPropagation","isArray","value","Array","isTruthy","Boolean","BUNDLED_DOC_TYPES","_isSanityDocumentTypeDefinition","def","type","includes","name","_isCustomDocumentTypeDefinition","FONT_SANS_SERIF","FONT_MONOSPACE","uncaughtErrorHandler","join","useThrottledCallback","callback","wait","options","throttledCallback","useMemo","throttle","useOnScroll","parentContext","ScrollContext","useEffect","subscribe","ScrollMonitor","_ref2","onScroll","findMostSpecificTarget","targetType","id","values","pathString","slice","indexOf","fromString","exactId","has","get","mostSpecific","targetId","target","startsWith","numEqual","numEqualSegments","lastPathSegment","length","pathOnlyDiffersByKey","isKeyedObject","isChangeBar","v","hasOverflowScroll","el","overflow","getComputedStyle","isScrollable","scrollableContent","scrollHeight","offsetHeight","scrollWidth","offsetWidth","SCROLL_INTO_VIEW_TOP_PADDING","scrollIntoView","field","parentElementWithScroll","parentElement","scroll","top","scrollTop","rect","bounds","left","behavior","getOffsetsTo","source","height","width","foundScrollContainer","contains","offsetTop","offsetLeft","scrollLeft","offsetParent","useResizeObserver","onResize","resizeObserver","observe","getState","allReportedValues","hovered","byId","rootElement","changeBarsWithHover","changeBarsWithFocus","reportedChangeBar","push","isHoverConnector","changeBars","connectors","map","_ref3","change","filter","isNonNullable","_ref4","ConnectorsOverlay","setHovered","Map","setState","visibleConnectors","sortBy","c","handleScrollOrResize","SvgWrapper","style","zIndex","_ref5","ConnectorGroup","onConnectorClick","handleMouseEnter","handleMouseLeave","from","to","jsxs","Fragment","Connector","DEBUG_LAYER_BOUNDS","EnabledChangeConnectorRoot","_ref6","className","isReviewChangesOpen","onOpenReviewChanges","restProps","setRootElement","contextValue","Provider","ScrollContainer","DisabledChangeConnectorRoot","_ref7","ChangeConnectorRoot","NoJsStyles","NoJavascript","href","errorHandlerScript","GlobalErrorHandler","dangerouslySetInnerHTML","__html","Favicons","_ref8","basePath","base","replace","rel","sizes","globalStyles","EMPTY_ARRAY","DefaultDocument","entryPath","css","lang","charSet","content","src","actionIds","WeakMap","counter","getHookId","actionHook","cachedId","displayName","set","requestIdleCallbackShim","start","Date","now","setTimeout","didTimeout","timeRemaining","Math","max","cancelIdleCallbackShim","handle","clearTimeout","_requestIdleCallback","requestIdleCallback","_cancelIdleCallback","cancelIdleCallback","throttleOptions","trailing","GetHookCollectionState","hooks","args","onReset","statesRef","tickId","setTick","keys","setKeys","ricHandle","handleRequestUpdate","tick","handleRequestUpdateThrottled","handleNext","hookState","handleReset","currentKeys","hookIds","hook","states","_a","key","HookStateContainer","onNext","onRequestUpdate","Hotkeys","_ref9","makePlatformAware","hotKeys","platformifyKey","UIHotkeys","IS_APPLE_DEVICE","navigator","platform","test","lowerKey","toLowerCase","matchCase","original","orgLength","char","i","toUpperCase","IntentButton","disabled","Button","as","role","IntentLink","defineConfig","config","createConfig","validatePlugin","pluginResult","messages","isString","Error","message","definePlugin","arg","pluginFactory","result","createPlugin","defineDocumentFieldAction","fieldAction","defineDocumentInspector","inspector","createMockAuthStore","_ref10","client","currentUser","state","of","authenticated","INITIAL","useConnectionState","publishedDocId","docTypeName","documentStore","useDocumentStore","useMemoObservable","pair","documentEvents","pipe","ev","eventType","switchMap","isConnected","timer","mapTo","startWith","distinctUntilChanged","useDocumentOperationEvent","operationEvents","useEditState","priority","arguments","undefined","editState","share","merge","take","skip","debounce","PERIODS","useFormattedDuration","durationMs","resolution","unitDisplay","locale","useCurrentLocale","listFormat","useListFormat","isNegative","duration","parseMilliseconds","abs","formatters","days","intlCache","numberFormat","unit","hours","minutes","seconds","milliseconds","parts","period","prefix","format","formatted","iso8601","durationToISO8601","trunc","dur","date","time","toFixed","useNumberFormat","currentLocale","SYNCING","isSyncing","NOT_SYNCING","useSyncState","documentType","consistencyStatus","isConsistent","useTimeAgo","useRelativeTime","minimal","useTemporalPhrase","agoSuffix","useTools","useSource","tools","validation","isValidating","useValidationStatus","createPatchChannel","_subscribers","publish","msg","subscriber","idx","splice","isEqual","item","otherItem","_key","every","child","obj","otherObj","Object","otherKeys","keyName","ArrayOfOptionsFieldDiff","_ref11","diff","schemaType","list","colorManager","useUserColorManager","t","useTranslation","items","normalizeItems","sort","sortItems","index","annotation","isPresent","memberType","title","color","getAnnotationColor","action","Flex","align","DiffTooltip","annotations","description","Checkbox","checked","Box","margin","FromToArrow","ItemPreview","getItemKey","parentDiff","fromValue","toValue","getValue","wasPresent","isInArray","getItemTitle","resolveMemberType","itemIndex","getOptionIndex","itemA","itemB","_ref12","marginX","marginY","Preview","layout","parent","array","some","itemTypeName","resolveTypeName","find","jsType","resolveJSType","_type","val","isNamedOption","findIndex","opt","UrlFieldDiff","_ref13","DiffFromTo","previewComponent","StringPreview","SlugFieldDiff","_ref14","SlugPreview","diffResolver","_ref15","DatetimeFieldDiff","jsonType","DefaultCustomMarkers","Text","size","HoveredFieldProvider","hoveredStack","setHoveredStack","pathToString","prev","context","HoveredFieldContext","missingPatchChannel","console","warn","FormBuilderProvider","__internal_fieldActions","fieldActions","__internal_patchChannel","patchChannel","autoFocus","changesOpen","collapsedFieldSets","collapsedPaths","file","filterField","focusPath","focused","groups","image","onChange","onFieldGroupSelect","onPathBlur","onPathFocus","onPathOpen","onSetFieldSetCollapsed","onSetPathCollapsed","presence","readOnly","renderAnnotation","renderBlock","renderField","renderInlineBlock","renderInput","renderItem","renderPreview","unstable","__internal","components","ArrayFunctions","ArrayOfObjectsFunctions","CustomMarkers","Markers","DefaultMarkers","actions","assetSources","directUploads","formBuilder","FormBuilderContext","FormCallbacksProvider","DocumentIdProvider","PresenceProvider","ValidationProvider","FormProvider","form","Input","useInputComponent","Field","useFieldComponent","usePreviewComponent","Item","useItemComponent","Block","useBlockComponent","InlineBlock","useInlineBlockComponent","Annotation","useAnnotationComponent","inputProps","fieldProps","itemProps","previewProps","PreviewLoader","component","blockProps","annotationProps","FormBuilder","members","handleCollapseField","fieldName","handleExpandField","handleBlur","handleFocus","handleChange","patch","PatchEvent","focusRef","handleSelectFieldGroup","groupName","handleOpenField","handleCloseField","handleCollapseFieldSet","fieldSetName","handleExpandFieldSet","rootInputProps","elementProps","onBlur","onFocus","changed","m","kind","level","onFieldClose","onFieldCollapse","onFieldSetCollapse","onFieldExpand","onFieldSetExpand","onFieldOpen","GetFormValueProvider","FormValueProvider","DocumentFieldActionsProvider","useReviewChanges","reviewChanges","ReviewChangesContext","trimChildPath","childPath","trimLeft","PresenceScope","contextPresence","FormFieldPresenceContext","childPresence","ArrayOfObjectsInputMember","member","ArrayOfObjectsItem","MemberItemError","ArrayOfObjectsInputMembers","rest","defaultRenderAnnotation","createElement","defaultResolveAnnotationComponent","defaultRenderBlock","defaultResolveBlockComponent","defaultRenderInlineBlock","defaultResolveInlineBlockComponent","defaultRenderField","defaultResolveFieldComponent","defaultRenderInput","defaultResolveInputComponent","defaultRenderItem","defaultResolveItemComponent","defaultRenderPreview","remoteSnapshots","memoize","idPair","typeName","memoizedPair","_ref16","published","draft","remoteSnapshot$","memoizeKeyGen","maybeSerialize","template","isBuilder","serialize","prepareTemplates","schema","initialValueTemplates","serialized","validateTemplates","defaultTemplateForType","icon","initialValue","defaultTemplatesForSchema","schemaTypes","getTypeNames","LOADING_STATE","isLoaded","useDocumentType","documentId","specifiedType","publishedId","getPublishedId","isResolved","SYNC_RESOLVED_STATE","resolvedState","setDocumentType","sub","resolveTypeForDocument","unsubscribe","INITIAL_TIMELINE_STATE","chunks","hasMoreChunks","isLoading","isPristine","lastNonDeletedRevId","onOlderRevision","realRevChunk","revTime","selectionState","sinceAttributes","sinceTime","timelineDisplayed","timelineReady","useTimelineStore","_ref17","onError","rev","since","historyStore","useHistoryStore","snapshotsSubscriptionRef","timelineStateRef","useClient","DEFAULT_STUDIO_CLIENT_OPTIONS","controller","getTimelineController","timelineController$","BehaviorSubject","setRange","next","handler","err","innerController","error","resume","suspend","draftId","handleRemoteMutation","timelineStore","findRangeForRev","chunk","findRangeForNewRev","findRangeForSince","findRangeForNewSince","loadMore","setLoadMore","getSnapshot","subscription","tap","timeline","mapChunks","lastNonDeletedChunk","reachedEarliestEntry","currentObjectDiff","displayed","deepEquals","catchError","timelineState","useTimelineSelector","selector","useSyncExternalStoreWithSelector","useProject","projectStore","useProjectStore","setValue","project$","useProjectDatasets","getDatasets","resolveConfig","workspaces","prepareConfig","combineLatest","flatMap","workspaceSummary","sources","_ref18","unstable_sources","createWorkspaceFromConfig","getClient","apiVersion","workspace","firstValueFrom","auth","createSourceFromConfig","useConfigContextFromSource","projectId","dataset","i18n","getConfigContextFromSource","_buildTints","bg","mid","fg","mix","_toHex","red","green","blue","parseToRgb","rgb","_isDark","getLuminance","_multiply","b","parseColor","s","hex","rgbToHex","multiply","_screen","screen","NEUTRAL_TONES","buildColor","legacyPalette","legacyTones","createColorTheme","_ref19","dark","navbar","stateTones","blend","tints","skeletonFrom","border","focusRing","focus","shadow","outline","rgba","umbra","black","penumbra","ambient","skeleton","solid","_ref20","tone","buttonTones","button","blendInvert","defaultTints","isNeutral","muted","accent","link","code","critical","primary","_ref21","_ref22","mode","enabled","pressed","selected","card","_ref23","input","_ref24","bg2","placeholder","hues","gray","selectable","_ref25","spot","_ref26","syntax","_ref27","mainShade","secondaryShade","atrule","purple","attrName","positive","attrValue","caution","attribute","boolean","builtin","cdata","class","orange","cyan","comment","constant","deleted","doctype","entity","function","hexcode","important","inserted","keyword","magenta","number","operator","prolog","property","pseudoClass","pseudoElement","punctuation","regex","string","symbol","tag","url","variable","buildFonts","cssCustomProperties","defaults","studioTheme","fonts","family","heading","label","text","buildLegacyPalette","defaultButton","success","warning","danger","mainNavigation","info","buildLegacyTones","transparent","buildLegacyTheme","partialLegacyTheme","legacyTheme","resolveLegacyTheme","__dark","light","__legacy","defaultCustomProperties","white","yellow","StudioLogo","padding","weight","Studio","onSchemeChange","scheme","unstable_globalStyles","unstable_history","unstable_noAuthBoundary","StudioProvider","GlobalStyle","StudioLayout","renderStudio","opts","reactStrictMode","root","createRoot","render","StrictMode","unmount","WithReferringDocuments","_ref28","useReferringDocuments","ZIndexProvider","_ref29","ZIndexContext","BetaBadge","fontSize","Badge","radius","RelativeTime","_ref30","timestamp","timeAgo","dateTime","toISOString","TelephoneInput","validationError","TextInput","inputMode","customValidity","setAtPath","currentTree","head","tail","isKeySegment","String","MAX_FIELD_DEPTH","AUTO_COLLAPSE_DEPTH","ALL_FIELDS_GROUP","hidden","isObjectFormNode","formNode","isObjectSchemaType","isArrayOfObjectsFormNode","isArrayOfObjectsSchemaType","hasAllMembers","_allMembers","getExpandOperations","node","p","getFieldsetAndFieldGroupOperations","getObjectFieldsetAndFieldGroupOperations","getArrayFieldsetAndFieldGroupOperations","_b","fieldsetMember","fieldSet","fieldMember","schemaField","fields","selectedGroupName","group","defaultGroupName","inSelectedGroup","castArray","ops","isMemberArrayOfObjects","isMemberObject","segment","foundMember","resolveConditionalProperty","document","getItemType","arrayType","getPrimitiveItemType","getCollapsedWithDefaults","collapsible","collapsable","collapsed","isFieldEnabledByGroupFilter","groupsConfig","fieldGroup","selectedGroup","isAcceptedObjectValue","isRecord","isValidArrayOfObjectsValue","isValidArrayOfPrimitivesValue","everyItemIsObject","findDuplicateKeyEntries","seenKeys","Set","reduce","acc","add","hasKey","everyItemHasKey","isChangedValue","comparisonValue","_isEqual","prepareFieldMember","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","fieldPath","pathFor","fieldLevel","getFieldLevel","parentValue","parentComparisonValue","normalizedFieldGroupNames","fieldValue","fieldComparisonValue","expectedSchemaType","resolvedValueType","conditionalPropertyContext","fieldGroupState","scopedCollapsedPaths","scopedCollapsedFieldsets","inputState","prepareObjectInputState","openPath","defaultCollapsedState","open","isArraySchemaType","hasValue","duplicateKeyEntries","duplicates","scopedCollapsedFieldSets","fieldState","prepareArrayOfObjectsInputState","prepareArrayOfPrimitivesInputState","preparePrimitiveInputState","enableHiddenCheck","schemaTypeGroupConfig","g","groupHidden","isSelected","normalizedSchemaMembers","fieldsets","single","fieldsetFieldNames","f","fieldsetHidden","pick","fieldsetReadOnly","fieldsetMembers","_inSelectedGroup","columns","hasFieldGroups","filteredPresence","visibleMembers","visibleGroups","hasVisibleMembers","filtereredMembers","filteredFieldsetMembers","defineProperty","enumerable","prepareArrayOfPrimitivesMember","arrayItem","prepareArrayOfObjectsMember","itemType","validTypes","itemPath","itemLevel","itemState","parentSchemaType","itemValue","itemComparisonValue","prepareFormState","useFormState","_ref31","useCurrentUser","useLayoutEffect","reconciled","immutableReconcile","IS_NUMERIC","unquote","str","splitAttr","attr","split","coerce","Number","parseGradientPath","focusPathStr","seg","encodePath","formBuilderPath","arrayToJSONMatchPath","decodePath","gradientPath","toMutationPatches","patches","toMutationPatch","fromMutationPatches","origin","flatten","toFormBuilderPatches","notIn","unset","position","insert","patchType","SANITY_PATCH_TYPE","matchPath","JSON","stringify"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/core/components/react-track-elements/createNoopTrackerScope.tsx","../src/core/changeIndicators/ChangeFieldWrapper.tsx","../src/core/util/isArray.ts","../src/core/util/isTruthy.ts","../src/core/util/schemaUtils.ts","../src/core/util/uncaughtErrorHandler.ts","../src/core/util/useThrottledCallback.ts","../src/core/components/scroll/hooks.ts","../src/core/components/scroll/scrollMonitor.tsx","../src/core/changeIndicators/helpers/findMostSpecificTarget.ts","../src/core/changeIndicators/helpers/isChangeBar.ts","../src/core/changeIndicators/helpers/scrollUtils.ts","../src/core/changeIndicators/helpers/scrollIntoView.ts","../src/core/changeIndicators/helpers/getOffsetsTo.ts","../src/core/changeIndicators/overlay/useResizeObserver.ts","../src/core/changeIndicators/overlay/ConnectorsOverlay.tsx","../src/core/changeIndicators/overlay/ChangeConnectorRoot.tsx","../src/core/components/NoJavascript.tsx","../src/core/components/globalErrorHandler/GlobalErrorHandler.tsx","../src/core/components/Favicons.tsx","../src/core/components/DefaultDocument.tsx","../src/core/components/hookCollection/actionId.ts","../src/core/components/hookCollection/requestIdleCallback.ts","../src/core/components/hookCollection/GetHookCollectionState.tsx","../src/core/components/Hotkeys.tsx","../src/core/components/IntentButton.tsx","../src/core/config/defineConfig.ts","../src/core/config/definePlugin.ts","../src/core/config/document/fieldActions/define.ts","../src/core/config/document/inspector.ts","../src/core/store/_legacy/authStore/createMockAuthStore.ts","../src/core/hooks/useConnectionState.ts","../src/core/hooks/useDocumentOperationEvent.ts","../src/core/hooks/useEditState.ts","../src/core/hooks/useFormattedDuration.ts","../src/core/hooks/useNumberFormat.ts","../src/core/hooks/useSyncState.ts","../src/core/hooks/useTimeAgo.ts","../src/core/hooks/useTools.ts","../src/core/hooks/useValidationStatus.ts","../src/core/form/patch/PatchChannel.ts","../src/core/field/types/array/util/arrayUtils.ts","../src/core/field/types/array/diff/ArrayOfOptionsFieldDiff.tsx","../src/core/field/types/url/diff/UrlFieldDiff.tsx","../src/core/field/types/slug/diff/SlugFieldDiff.tsx","../src/core/field/diff/resolve/diffResolver.ts","../src/core/form/inputs/PortableText/_legacyDefaultParts/CustomMarkers.tsx","../src/core/form/field/HoveredFieldProvider.tsx","../src/core/form/FormBuilderProvider.tsx","../src/core/form/studio/FormProvider.tsx","../src/core/form/studio/FormBuilder.tsx","../src/core/form/studio/contexts/reviewChanges/useReviewChanges.ts","../src/core/presence/PresenceScope.tsx","../src/core/form/members/array/ArrayOfObjectsInputMember.tsx","../src/core/form/members/array/ArrayOfObjectsInputMembers.tsx","../src/core/form/studio/defaults.ts","../src/core/store/_legacy/document/document-pair/remoteSnapshots.ts","../src/core/templates/prepare.ts","../src/core/store/_legacy/document/hooks/useDocumentType.ts","../src/core/store/_legacy/history/useTimelineStore.ts","../src/core/store/_legacy/history/useTimelineSelector.ts","../src/core/store/_legacy/project/useProject.ts","../src/core/store/_legacy/project/useProjectDatasets.ts","../src/core/config/resolveConfig.ts","../src/core/config/useConfigContextFromSource.ts","../src/core/theme/_legacy/helpers.ts","../src/core/theme/_legacy/color.ts","../src/core/theme/_legacy/fonts.ts","../src/core/theme/_legacy/palette.ts","../src/core/theme/_legacy/tones.ts","../src/core/theme/_legacy/theme.ts","../src/core/studio/components/navbar/StudioLogo.tsx","../src/core/studio/Studio.tsx","../src/core/studio/renderStudio.tsx","../src/core/components/WithReferringDocuments.tsx","../src/core/components/zOffsets/ZIndexProvider.tsx","../src/core/components/BetaBadge.tsx","../src/core/components/RelativeTime.tsx","../src/core/form/inputs/TelephoneInput.tsx","../src/core/form/store/stateTreeHelper.ts","../src/core/form/store/constants.ts","../src/core/form/store/types/asserters.ts","../src/core/form/store/utils/getExpandOperations.ts","../src/core/form/store/conditional-property/resolveConditionalProperty.ts","../src/core/form/store/utils/getItemType.ts","../src/core/form/store/utils/getCollapsibleOptions.ts","../src/core/form/store/formState.ts","../src/core/form/store/useFormState.ts","../src/core/form/utils/path.ts","../src/core/form/utils/mutationPatch.ts"],"sourcesContent":["import React from 'react'\nimport {Reported} from './types'\n\n// eslint-disable-next-line no-empty-function, @typescript-eslint/no-empty-function\nfunction noop() {}\n\nfunction NoopTracker({children}: {children: React.ReactNode}) {\n return <>{children}</>\n}\n\n/** @internal */\nexport function createNoopTrackerScope<T>() {\n return {\n useReportedValues: noop as () => Reported<T>[],\n Tracker: NoopTracker,\n useReporter: noop as (id: string | null, value: T | (() => T)) => void,\n }\n}\n","import * as PathUtils from '@sanity/util/paths'\nimport React, {SyntheticEvent, useCallback} from 'react'\nimport {Path} from '@sanity/types'\nimport deepCompare from 'react-fast-compare'\nimport {useReporter} from './tracker'\nimport {ConnectorContext} from './ConnectorContext'\n\n/**\n * This is used to draw the bar that wraps the diff components in the changes panel\n *\n * @internal\n */\nexport const ChangeFieldWrapper = (props: {\n path: Path\n children: React.ReactNode\n hasHover: boolean\n}) => {\n const ref = React.useRef<HTMLDivElement>(null)\n const {onSetFocus} = React.useContext(ConnectorContext)\n const [isHover, setHover] = React.useState(false)\n\n const onMouseEnter = React.useCallback(() => {\n setHover(true)\n }, [])\n\n const onMouseLeave = React.useCallback(() => {\n setHover(false)\n }, [])\n\n useReporter(\n `change-${PathUtils.toString(props.path)}`,\n () => ({\n element: ref.current!,\n path: props.path,\n isChanged: true,\n hasFocus: false,\n hasHover: isHover,\n hasRevertHover: props.hasHover,\n }),\n // note: deepCompare should be ok here since we're not comparing deep values\n deepCompare,\n )\n\n const handleClick = useCallback(\n (event: SyntheticEvent) => {\n setFocusWithStopPropagation(event, onSetFocus, props.path)\n },\n [onSetFocus, props.path],\n )\n\n return (\n <div ref={ref} onClick={handleClick} onMouseLeave={onMouseLeave} onMouseEnter={onMouseEnter}>\n {props.children}\n </div>\n )\n}\n\n// Stop the propagation here, or it will trigger the parent diff component's onClick.\nfunction setFocusWithStopPropagation(\n event: React.SyntheticEvent,\n onSetFocus: (toPath: Path) => void,\n path: Path,\n): void {\n event.stopPropagation()\n onSetFocus(path)\n}\n","/** @internal */\nexport function isArray(value: unknown): value is unknown[] {\n return Array.isArray(value)\n}\n","/** @internal */\nexport function isTruthy<T>(value: T | false): value is T {\n return Boolean(value)\n}\n","import {SchemaTypeDefinition} from '@sanity/types'\n\nconst BUNDLED_DOC_TYPES = ['sanity.imageAsset', 'sanity.fileAsset']\n\n/**\n * @internal\n */\nexport function _isSanityDocumentTypeDefinition(\n def: SchemaTypeDefinition,\n): def is SchemaTypeDefinition<'document'> {\n return def.type === 'document' && BUNDLED_DOC_TYPES.includes(def.name)\n}\n\n/**\n * @internal\n */\nexport function _isCustomDocumentTypeDefinition(\n def: SchemaTypeDefinition,\n): def is SchemaTypeDefinition<'document'> {\n return def.type === 'document' && !_isSanityDocumentTypeDefinition(def)\n}\n","const FONT_SANS_SERIF = `-apple-system, BlinkMacSystemFont, \\\\'Segoe UI\\\\', Roboto, \\\\'Helvetica Neue\\\\', Helvetica, Arial, system-ui, sans-serif`\nconst FONT_MONOSPACE = `-apple-system-ui-monospace, \\\\'SF Mono\\\\', Menlo, Monaco, Consolas, monospace`\n\n/** @internal */\nexport const uncaughtErrorHandler = (): string =>\n // prettier-ignore\n [\n `window.onerror = function(m,u,l,c,e) {`,\n `var p=window.location.port;`,\n `var h=window.location.protocol+'//'+window.location.hostname+(p?':'+p:'');`,\n `var r=document.getElementById('sanity');`,\n `while(r.firstChild){r.removeChild(r.firstChild);}`,\n `var s=document.createElement('style');`,\n `s.appendChild(document.createTextNode('`,\n `html,body,#sanityBody,#sanity,#sanityError{height:100%;}`,\n `body{-webkit-font-smoothing:antialiased;margin:0;}`,\n `#sanityError{position:fixed;top:0;left:0;width:100%;height:100%;overflow:auto;background-color:#fff;color:#121923;font-family:${FONT_SANS_SERIF};font-size:16px;line-height:21px;min-height:100%;}`,\n `#sanityError>div{background-color:#fff;max-width:960px;margin:0 auto;padding:47px 32px 52px;}`,\n `@media(min-width:512px){`,\n `#sanityError>div{`,\n `padding:47px 84px;`,\n `}`,\n `}`,\n `#sanityError button{-webkit-font-smoothing:inherit;font:inherit;font-weight:500;background-color:#2276FC;color:#fff;padding:7px 12px;border-radius:3px;border:0;}`,\n `#sanityError button:hover{background-color:#1E63D0;}`,\n `#sanityError button:active{background-color:#1B50A5;}`,\n `'));`,\n `document.head.appendChild(s);`,\n `var f=document.createElement('div');`,\n `f.id='sanityError';`,\n `f.innerHTML='`,\n `<div>`,\n `<h1 style=\"font-size:21px;line-height:27px;margin: 0 0 10px;\">Unhandled error</h1>`,\n `<p style=\"color:#66758D;margin:10px 0 14px;\">Encountered an unhandled error in this Studio.</p>`,\n `<button class=\"sanity-error-handler__reload-btn\" type=\"button\">Reload page</button>`,\n `<pre style=\"background-color:#FDEBEA;color:#C3362C;font-size:13px;line-height:17px;padding:8px 12px;border-radius:3px;margin:32px 0 0;overflow:auto;\">`,\n `<code style=\"font-family:${FONT_MONOSPACE};\">`,\n `'+e.stack.replaceAll(h,'')+'`,\n `</code>`,\n `</pre>`,\n `</div>`,\n `';`,\n `var b=f.querySelector('.sanity-error-handler__reload-btn');`,\n `if(b){`,\n `b.onclick=function() {`,\n `window.location.reload();`,\n `}`,\n `};`,\n `r.appendChild(f);`,\n `};`,\n ].join('')\n","import {throttle, type ThrottleSettings} from 'lodash'\nimport {useMemo} from 'react'\n\n/**\n * @internal\n *\n * @example\n * ```tsx\n * // First create a callback using React’s `useCallback` hook\n * const myCallback = useCallback(() => {\n * // this is not throttled\n * }, [])\n *\n * // Then make a throttled version using the `useThrottledCallback` hook\n * const myThrottledCallback = useThrottledCallback(myCallback, 100)\n *\n * // Call the throttled callback\n * <Button onClick={myThrottledCallback} />\n * ```\n */\nexport function useThrottledCallback(\n callback: (...args: any[]) => any,\n wait: number,\n options: ThrottleSettings,\n): (...args: any[]) => any {\n const throttledCallback = useMemo(\n () => throttle(callback, wait, options),\n [callback, options, wait],\n )\n\n return throttledCallback\n}\n","import React from 'react'\nimport {ScrollContext} from './scrollContext'\nimport {Subscriber} from 'nano-pubsub'\n\n/** @internal */\nexport function useOnScroll(callback: Subscriber<Event>) {\n const parentContext = React.useContext(ScrollContext)\n React.useEffect(() => {\n return parentContext?.subscribe(callback)\n }, [callback, parentContext])\n}\n","import React from 'react'\nimport {useOnScroll} from './hooks'\nimport {ScrollEventHandler} from './types'\n\n/** @internal */\nexport interface ScrollMonitorProps {\n onScroll: ScrollEventHandler\n children?: React.ReactNode\n}\n\n/** @internal */\nexport function ScrollMonitor({onScroll, children}: ScrollMonitorProps) {\n useOnScroll(onScroll)\n return <>{children}</>\n}\n","import {isKeyedObject} from '@sanity/types'\nimport * as PathUtils from '@sanity/util/paths'\nimport {TrackedChange, TrackedArea} from '../tracker'\n\nexport function findMostSpecificTarget(\n targetType: 'change' | 'field',\n id: string,\n values: Map<string, TrackedChange | TrackedArea>,\n): TrackedChange | undefined {\n const pathString = id.slice(id.indexOf('-') + 1) || '[]'\n const path = PathUtils.fromString(pathString)\n const exactId = `${targetType}-${PathUtils.toString(path)}`\n if (values.has(exactId)) {\n return values.get(exactId) as TrackedChange\n }\n\n let mostSpecific: TrackedChange | undefined\n for (const [targetId, target] of values) {\n if (!('path' in target) || !targetId.startsWith(targetType)) {\n continue\n }\n\n const numEqual = PathUtils.numEqualSegments(path, target.path)\n const lastPathSegment = target.path[target.path.length - 1]\n const pathOnlyDiffersByKey =\n numEqual === target.path.length - 1 && isKeyedObject(lastPathSegment)\n\n if (numEqual === 0) {\n continue\n } else if (numEqual !== target.path.length && !pathOnlyDiffersByKey) {\n /*\n * We only allow matching to shorter paths if the last element in the path is a keyed object.\n * `foo.bar.portableTextField[_key=abc123]` should resolve to `foo.bar.portableTextField`.\n *\n * Otherwise we'll only get a connector line when you add new elements to a portable text\n * field and not when you alter an existing part.\n */\n continue\n }\n\n mostSpecific = target\n\n if (numEqual === path.length) {\n // On exact match, return early\n break\n }\n }\n\n // if (!mostSpecific) {\n // throw new Error(`target not found: \"${id}\"`)\n // }\n\n return mostSpecific\n}\n","import {Reported} from '../../components/react-track-elements'\nimport {TrackedArea, TrackedChange} from '../tracker'\n\nexport function isChangeBar(\n v: Reported<TrackedArea | TrackedChange>,\n): v is Reported<TrackedChange> {\n return v[0] !== 'changePanel'\n}\n","export function hasOverflowScroll(el: HTMLElement): boolean {\n const overflow = getComputedStyle(el).overflow\n\n return overflow.includes('auto') || overflow.includes('scroll')\n}\n\n// Check whether an element is currently scrollable (meaning it must both have overflow scroll *and* content overflowing)\nexport function isScrollable(el: HTMLElement): boolean {\n const scrollableContent = el.scrollHeight !== el.offsetHeight || el.scrollWidth !== el.offsetWidth\n\n return scrollableContent && hasOverflowScroll(el)\n}\n","import {Rect} from '../overlay/types'\nimport {isScrollable} from './scrollUtils'\n\nconst SCROLL_INTO_VIEW_TOP_PADDING = -15\n\nexport function scrollIntoView(field: {element: HTMLElement; rect: Rect; bounds: Rect}): void {\n const element = field.element\n\n /*\n * Start at current element and check the parent for a scroll\n * bar until a scrollable element has been found.\n */\n let parentElementWithScroll: HTMLElement | null = element\n\n while (!isScrollable(parentElementWithScroll)) {\n parentElementWithScroll = parentElementWithScroll.parentElement\n\n /*\n * If the parent element is null it means we are at the root\n * element, which has no parent. Since no scroll bar has\n * been found so far it does not make sense to scroll.\n */\n if (!parentElementWithScroll) {\n return\n }\n }\n\n parentElementWithScroll.scroll({\n top:\n parentElementWithScroll.scrollTop +\n field.rect.top -\n field.bounds.top +\n SCROLL_INTO_VIEW_TOP_PADDING,\n left: 0,\n behavior: 'smooth',\n })\n}\n","import {Rect} from '../overlay/types'\nimport {hasOverflowScroll} from './scrollUtils'\n\nexport const getOffsetsTo = (\n source: HTMLElement,\n target: HTMLElement,\n): {rect: Rect; bounds: Rect} => {\n const bounds: Rect = {\n top: 0,\n left: 0,\n height: target.offsetHeight,\n width: target.offsetWidth,\n }\n\n const rect: Rect = {\n top: 0,\n left: 0,\n height: source.offsetHeight,\n width: source.offsetWidth,\n }\n\n let foundScrollContainer = false\n let el: HTMLElement | null = source\n\n while (el && el !== target && target.contains(el)) {\n if (foundScrollContainer) {\n bounds.top += el.offsetTop\n bounds.left += el.offsetLeft\n }\n\n if (hasOverflowScroll(el)) {\n bounds.top = el.offsetTop\n bounds.height = el.offsetHeight\n bounds.left = el.offsetLeft\n bounds.width = el.offsetWidth\n\n foundScrollContainer = true\n }\n\n rect.top += el.offsetTop - el.scrollTop\n rect.left += el.offsetLeft - el.scrollLeft\n\n el = el.offsetParent as HTMLElement\n }\n\n return {rect, bounds}\n}\n","import {useEffect} from 'react'\nimport {resizeObserver} from '../../util'\n\nexport function useResizeObserver(\n element: HTMLDivElement,\n onResize: (event: ResizeObserverEntry) => void,\n): void {\n useEffect(() => resizeObserver.observe(element, onResize), [element, onResize])\n}\n","import React, {useCallback, useMemo, useState} from 'react'\nimport {sortBy} from 'lodash'\nimport {Path} from '@sanity/types'\nimport {ScrollMonitor} from '../../components/scroll'\nimport {findMostSpecificTarget} from '../helpers/findMostSpecificTarget'\nimport {isChangeBar} from '../helpers/isChangeBar'\nimport {scrollIntoView} from '../helpers/scrollIntoView'\nimport {DEBUG_LAYER_BOUNDS} from '../constants'\nimport {getOffsetsTo} from '../helpers/getOffsetsTo'\nimport {TrackedArea, TrackedChange, useReportedValues} from '../tracker'\nimport {Reported} from '../../components/react-track-elements'\nimport {isNonNullable} from '../../util'\nimport {Connector} from './Connector'\nimport {DebugLayers} from './DebugLayers'\nimport {useResizeObserver} from './useResizeObserver'\nimport {SvgWrapper} from './ConnectorsOverlay.styled'\n\nexport interface Rect {\n height: number\n width: number\n top: number\n left: number\n}\n\ninterface State {\n connectors: {\n field: TrackedChange & {id: string; rect: Rect; bounds: Rect}\n change: TrackedChange & {id: string; rect: Rect; bounds: Rect}\n hasFocus: boolean\n hasHover: boolean\n hasRevertHover: boolean\n }[]\n isHoverConnector: boolean\n}\n\ninterface ConnectorsOverlayProps {\n rootElement: HTMLDivElement\n onSetFocus: (nextFocusPath: Path) => void\n}\n\nfunction getState(\n allReportedValues: Reported<TrackedChange | TrackedArea>[],\n hovered: string | null,\n byId: Map<string, TrackedChange | TrackedArea>,\n rootElement: HTMLElement,\n): State {\n const changeBarsWithHover: Reported<TrackedChange>[] = []\n const changeBarsWithFocus: Reported<TrackedChange>[] = []\n\n for (const value of allReportedValues) {\n if (!isChangeBar(value) || !value[1].isChanged) {\n continue\n }\n\n const [id, reportedChangeBar] = value\n\n if (id === hovered) {\n changeBarsWithHover.push(value)\n continue\n }\n\n if (reportedChangeBar.hasHover) {\n changeBarsWithHover.push(value)\n continue\n }\n\n if (reportedChangeBar.hasFocus) {\n changeBarsWithFocus.push(value)\n continue\n }\n }\n\n const isHoverConnector = changeBarsWithHover.length > 0\n\n const changeBars = isHoverConnector ? changeBarsWithHover : changeBarsWithFocus\n\n const connectors = changeBars\n .map(([id]) => {\n const field = findMostSpecificTarget('field', id, byId)\n const change = findMostSpecificTarget('change', id, byId)\n\n if (!field || !change) return null\n\n return {field: {id, ...field}, change: {id, ...change}}\n })\n .filter(isNonNullable)\n // .filter(({field, change}) => field && change && field.element && change.element)\n .map(({field, change}) => ({\n hasHover: field.hasHover || change.hasHover,\n hasFocus: field.hasFocus,\n hasRevertHover: change.hasRevertHover,\n field: {...field, ...getOffsetsTo(field.element, rootElement)},\n change: {...change, ...getOffsetsTo(change.element, rootElement)},\n }))\n\n return {connectors, isHoverConnector}\n}\n\nexport function ConnectorsOverlay(props: ConnectorsOverlayProps) {\n const {rootElement, onSetFocus} = props\n const [hovered, setHovered] = React.useState<string | null>(null)\n const allReportedValues = useReportedValues()\n const byId: Map<string, TrackedChange | TrackedArea> = useMemo(\n () => new Map(allReportedValues),\n [allReportedValues],\n )\n\n const [{connectors}, setState] = useState<State>(() =>\n getState(allReportedValues, hovered, byId, rootElement),\n )\n\n const visibleConnectors = useMemo(\n () => sortBy(connectors, (c) => 0 - c.field.path.length).slice(0, 1),\n [connectors],\n )\n\n const handleScrollOrResize = useCallback(() => {\n setState(getState(allReportedValues, hovered, byId, rootElement))\n }, [byId, allReportedValues, hovered, rootElement])\n\n useResizeObserver(rootElement, handleScrollOrResize)\n\n return (\n <ScrollMonitor onScroll={handleScrollOrResize}>\n <SvgWrapper style={{zIndex: visibleConnectors[0] && visibleConnectors[0].field.zIndex}}>\n {visibleConnectors.map(({field, change}) => {\n if (!change) {\n return null\n }\n\n return (\n <ConnectorGroup\n field={field}\n change={change}\n key={field.id}\n onSetFocus={onSetFocus}\n setHovered={setHovered}\n />\n )\n })}\n </SvgWrapper>\n </ScrollMonitor>\n )\n}\n\ninterface ConnectorGroupProps {\n field: TrackedChange & {id: string; rect: Rect; bounds: Rect}\n change: TrackedChange & {id: string; rect: Rect; bounds: Rect}\n setHovered: (id: string | null) => void\n onSetFocus: (path: Path) => void\n}\n\nfunction ConnectorGroup(props: ConnectorGroupProps) {\n const {change, field, onSetFocus, setHovered} = props\n\n const onConnectorClick = useCallback(() => {\n scrollIntoView(field)\n scrollIntoView(change)\n onSetFocus(field.path)\n }, [field, change, onSetFocus])\n\n const handleMouseEnter = useCallback(() => setHovered(field.id), [field, setHovered])\n const handleMouseLeave = useCallback(() => setHovered(null), [setHovered])\n\n const from = useMemo(\n () => ({\n rect: {\n ...field.rect,\n left: field.rect.left + 3,\n },\n bounds: field.bounds,\n }),\n [field.bounds, field.rect],\n )\n\n const to = useMemo(\n () => ({\n rect: {\n ...change.rect,\n left: change.rect.left + 1,\n },\n bounds: change.bounds,\n }),\n [change.bounds, change.rect],\n )\n\n return (\n <>\n <g onClick={onConnectorClick} onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n <Connector from={from} to={to} />\n </g>\n\n {DEBUG_LAYER_BOUNDS && <DebugLayers field={field} change={change} />}\n </>\n )\n}\n","import React, {useMemo} from 'react'\nimport {Path} from '@sanity/types'\nimport {ScrollContainer} from '../../components/scroll'\nimport {ConnectorContext} from '../ConnectorContext'\nimport {ENABLED} from '../constants'\nimport {Tracker} from '../tracker'\nimport {ConnectorsOverlay} from './ConnectorsOverlay'\n\n/** @internal */\nexport interface EnabledChangeConnectorRootProps {\n children: React.ReactNode\n className?: string\n isReviewChangesOpen: boolean\n onOpenReviewChanges: () => void\n onSetFocus: (path: Path) => void\n}\n\n/** @internal */\nexport function EnabledChangeConnectorRoot({\n children,\n className,\n isReviewChangesOpen,\n onOpenReviewChanges,\n onSetFocus,\n ...restProps\n}: EnabledChangeConnectorRootProps) {\n const [rootElement, setRootElement] = React.useState<HTMLDivElement | null>()\n\n const contextValue = useMemo(\n () => ({\n isReviewChangesOpen,\n onOpenReviewChanges,\n onSetFocus,\n }),\n [isReviewChangesOpen, onOpenReviewChanges, onSetFocus],\n )\n\n return (\n <ConnectorContext.Provider value={contextValue}>\n <Tracker>\n <ScrollContainer {...restProps} ref={setRootElement} className={className}>\n {children}\n {rootElement && <ConnectorsOverlay rootElement={rootElement} onSetFocus={onSetFocus} />}\n </ScrollContainer>\n </Tracker>\n </ConnectorContext.Provider>\n )\n}\n\n/** @internal */\nexport interface DisabledChangeConnectorRootProps {\n className?: string\n children: React.ReactNode\n}\n\n/** @internal */\nexport function DisabledChangeConnectorRoot({\n children,\n className,\n}: DisabledChangeConnectorRootProps) {\n return <ScrollContainer className={className}>{children}</ScrollContainer>\n}\n\n/** @internal */\nexport const ChangeConnectorRoot = ENABLED\n ? EnabledChangeConnectorRoot\n : DisabledChangeConnectorRoot\n","/* eslint-disable i18next/no-literal-string,@sanity/i18n/no-attribute-string-literals */\nimport React from 'react'\n\nconst NoJsStyles = `\n.sanity-app-no-js__root {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background: #fff;\n}\n\n.sanity-app-no-js__content {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n font-family: helvetica, arial, sans-serif;\n}\n`\n\n/** @internal */\nexport function NoJavascript() {\n return (\n <noscript>\n <div className=\"sanity-app-no-js__root\">\n <div className=\"sanity-app-no-js__content\">\n <style type=\"text/css\">{NoJsStyles}</style>\n <h1>JavaScript disabled</h1>\n <p>\n Please <a href=\"https://www.enable-javascript.com/\">enable JavaScript</a> in your\n browser and reload the page to proceed.\n </p>\n </div>\n </div>\n </noscript>\n )\n}\n","import React from 'react'\n\nconst errorHandlerScript = `\n;(function () {\n var _caughtErrors = []\n\n var errorChannel = (function () {\n var subscribers = []\n\n function publish(msg) {\n for (var i = 0; i < subscribers.length; i += 1) {\n subscribers[i](msg)\n }\n }\n\n function subscribe(subscriber) {\n subscribers.push(subscriber)\n\n return function () {\n var idx = subscribers.indexOf(subscriber)\n\n if (idx > -1) {\n subscribers.splice(idx, 1)\n }\n }\n }\n\n return {publish, subscribe, subscribers}\n })()\n\n // NOTE: Store the error channel instance in the global scope so that the Studio application can\n // access it and subscribe to errors.\n window.__sanityErrorChannel = {\n subscribe: errorChannel.subscribe,\n }\n\n function _nextTick(callback) {\n setTimeout(callback, 0)\n }\n\n function _handleError(error, params) {\n _nextTick(function () {\n // - If there are error channel subscribers, then we notify them (no console error).\n // - If there are no subscribers, then we log the error to the console and render the error overlay.\n if (errorChannel.subscribers.length) {\n errorChannel.publish({error, params})\n } else {\n console.error(error)\n\n _renderErrorOverlay(error, params)\n }\n })\n }\n\n var ERROR_BOX_STYLE = [\n 'background: #fff',\n 'border-radius: 6px',\n 'box-sizing: border-box',\n 'color: #121923',\n 'flex: 1',\n \"font-family: -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue','Liberation Sans',Helvetica,Arial,system-ui,sans-serif\",\n 'font-size: 16px',\n 'line-height: 21px',\n 'margin: 0 auto',\n 'max-width: 960px',\n 'overflow: auto',\n 'padding: 20px',\n 'width: 100%',\n ].join(';')\n\n var ERROR_CODE_STYLE = [\n 'color: #972E2A',\n \"font-family: -apple-system-ui-monospace, 'SF Mono', Menlo, Monaco, Consolas, monospace\",\n 'font-size: 13px',\n 'line-height: 17px',\n 'margin: 0',\n ].join(';')\n\n function _renderErrorOverlay(error, params) {\n var errorElement = document.querySelector('#__sanityError') || document.createElement('div')\n var colno = params.event.colno\n var lineno = params.event.lineno\n var filename = params.event.filename\n\n errorElement.id = '__sanityError'\n errorElement.innerHTML = [\n '<div style=\"' + ERROR_BOX_STYLE + '\">',\n '<div style=\"font-weight: 700;\">Uncaught error: ' + error.message + '</div>',\n '<div style=\"color: #515E72; font-size: 13px; line-height: 17px; margin: 10px 0;\">' +\n filename +\n ':' +\n lineno +\n ':' +\n colno +\n '</div>',\n '<pre style=\"' + ERROR_CODE_STYLE + '\">' + error.stack + '</pre>',\n '</div>',\n ].join('')\n\n errorElement.style.position = 'fixed'\n errorElement.style.zIndex = 1000000\n errorElement.style.top = 0\n errorElement.style.left = 0\n errorElement.style.right = 0\n errorElement.style.bottom = 0\n errorElement.style.padding = '20px'\n errorElement.style.background = 'rgba(16,17,18,0.66)'\n errorElement.style.display = 'flex'\n errorElement.style.alignItems = 'center'\n errorElement.style.justifyContent = 'center'\n\n document.body.appendChild(errorElement)\n }\n\n // NOTE:\n // Yes – we're attaching 2 error listeners below 👀\n // This is because React makes the same error throw twice (in development mode).\n // See: https://github.com/facebook/react/issues/10384\n\n // Error listener #1\n window.onerror = function (event, source, lineno, colno, error) {\n _nextTick(function () {\n if (_caughtErrors.indexOf(error) !== -1) return\n\n _caughtErrors.push(error)\n\n _handleError(error, {\n event,\n lineno,\n colno,\n source,\n })\n\n _nextTick(function () {\n var idx = _caughtErrors.indexOf(error)\n\n if (idx > -1) _caughtErrors.splice(idx, 1)\n })\n })\n\n // IMPORTANT: this callback must return \\`true\\` to prevent the error from being rendered in\n // the browser’s console.\n return true\n }\n\n // Error listener #2\n window.addEventListener('error', function (event) {\n if (_caughtErrors.indexOf(event.error) !== -1) return true\n\n _caughtErrors.push(event.error)\n\n _handleError(event.error, {\n event,\n lineno: event.lineno,\n colno: event.colno,\n })\n\n _nextTick(function () {\n _nextTick(function () {\n var idx = _caughtErrors.indexOf(event.error)\n\n if (idx > -1) _caughtErrors.splice(idx, 1)\n })\n })\n\n return true\n })\n})()\n`\n\n/** @internal */\nexport function GlobalErrorHandler() {\n // eslint-disable-next-line react/no-danger\n return <script dangerouslySetInnerHTML={{__html: errorHandlerScript}} />\n}\n","import React from 'react'\n\nexport interface FaviconProps {\n basePath: string\n}\n\nexport function Favicons({basePath}: FaviconProps) {\n const base = `${basePath.replace(/\\/+$/, '')}/static`\n return (\n <>\n <link rel=\"icon\" href={`${base}/favicon.ico`} sizes=\"any\" />\n <link rel=\"icon\" href={`${base}/favicon.svg`} type=\"image/svg+xml\" />\n <link rel=\"apple-touch-icon\" href={`${base}/apple-touch-icon.png`} />\n <link rel=\"manifest\" href={`${base}/manifest.webmanifest`} />\n </>\n )\n}\n","/* eslint-disable i18next/no-literal-string */\nimport React from 'react'\nimport {NoJavascript} from './NoJavascript'\nimport {GlobalErrorHandler} from './globalErrorHandler'\nimport {Favicons} from './Favicons'\n\nconst globalStyles = `\n @font-face {\n font-family: Inter;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-Regular.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-Italic.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-Medium.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-MediumItalic.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-SemiBold.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: italic;\n font-weight: 600;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-SemiBoldItalic.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-Bold.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: italic;\n font-weight: 700;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-BoldItalic.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: normal;\n font-weight: 800;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-ExtraBold.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: italic;\n font-weight: 800;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-ExtraBoldItalic.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: normal;\n font-weight: 900;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-Black.woff2\") format(\"woff2\");\n }\n @font-face {\n font-family: Inter;\n font-style: italic;\n font-weight: 900;\n font-display: swap;\n src: url(\"https://studio-static.sanity.io/Inter-BlackItalic.woff2\") format(\"woff2\");\n }\n html {\n background-color: #f1f3f6;\n }\n html,\n body,\n #sanity {\n height: 100%;\n }\n body {\n margin: 0;\n -webkit-font-smoothing: antialiased;\n }\n`\n\n/**\n * @hidden\n * @beta */\nexport interface DefaultDocumentProps {\n entryPath: string\n css?: string[]\n basePath?: string\n}\n\nconst EMPTY_ARRAY: never[] = []\n\n/**\n * @hidden\n * @beta */\nexport function DefaultDocument(props: DefaultDocumentProps): React.ReactElement {\n const {entryPath, css = EMPTY_ARRAY, basePath = '/'} = props\n return (\n <html lang=\"en\">\n <head>\n <meta charSet=\"utf-8\" />\n <meta\n name=\"viewport\"\n content=\"width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover\"\n />\n <meta name=\"robots\" content=\"noindex\" />\n <meta name=\"referrer\" content=\"same-origin\" />\n\n <Favicons basePath={basePath} />\n\n <title>Sanity Studio</title>\n\n <GlobalErrorHandler />\n\n {css.map((href) => (\n <link key={href} rel=\"stylesheet\" href={href} />\n ))}\n {/* eslint-disable-next-line react/no-danger */}\n <style dangerouslySetInnerHTML={{__html: globalStyles}} />\n </head>\n <body>\n <div id=\"sanity\" />\n <script type=\"module\" src={entryPath} />\n <NoJavascript />\n </body>\n </html>\n )\n}\n","import {ActionHook} from './types'\n\nconst actionIds = new WeakMap<ActionHook<any, any>, string>()\n\nlet counter = 0\n\n/** @internal */\nexport function getHookId<T, K>(actionHook: ActionHook<T, K>): string {\n const cachedId = actionIds.get(actionHook)\n\n if (cachedId) return cachedId\n\n const id = `${actionHook.name || (actionHook as any).displayName || '<anonymous>'}-${counter++}`\n\n actionIds.set(actionHook, id)\n\n return id\n}\n","const requestIdleCallbackShim: Window['requestIdleCallback'] = (callback) => {\n const start = Date.now()\n\n return setTimeout(() => {\n callback({\n didTimeout: false,\n timeRemaining() {\n return Math.max(0, Date.now() - start)\n },\n })\n }, 1) as unknown as ReturnType<Window['requestIdleCallback']>\n}\n\nconst cancelIdleCallbackShim: Window['cancelIdleCallback'] = (handle: unknown) => {\n return clearTimeout(handle as any)\n}\n\nconst _requestIdleCallback =\n typeof requestIdleCallback === 'undefined' ? requestIdleCallbackShim : requestIdleCallback\nconst _cancelIdleCallback =\n typeof cancelIdleCallback === 'undefined' ? cancelIdleCallbackShim : cancelIdleCallback\n\nexport {_requestIdleCallback as requestIdleCallback}\nexport {_cancelIdleCallback as cancelIdleCallback}\n","import type {ThrottleSettings} from 'lodash'\nimport React, {useCallback, useMemo, useRef, useState} from 'react'\nimport {isNonNullable, useThrottledCallback} from '../../util'\nimport {getHookId} from './actionId'\nimport {HookStateContainer} from './HookStateContainer'\nimport {cancelIdleCallback, requestIdleCallback} from './requestIdleCallback'\nimport {ActionHook} from './types'\n\n/** @internal */\nexport interface GetHookCollectionStateProps<T, K> {\n args: T\n children: (props: {states: K[]}) => React.ReactNode\n hooks: ActionHook<T, K>[]\n onReset?: () => void\n}\n\nconst throttleOptions: ThrottleSettings = {trailing: true}\n\n/** @internal */\nexport function GetHookCollectionState<T, K>(props: GetHookCollectionStateProps<T, K>) {\n const {hooks, args, children, onReset} = props\n\n const statesRef = useRef<Record<string, {value: K}>>({})\n const [tickId, setTick] = useState(0)\n\n const [keys, setKeys] = useState<Record<string, number>>({})\n\n const ricHandle = useRef<number | null>(null)\n\n const handleRequestUpdate = useCallback(() => {\n if (ricHandle.current) {\n cancelIdleCallback(ricHandle.current)\n }\n\n ricHandle.current = requestIdleCallback(() => {\n ricHandle.current = null\n\n setTick((tick) => tick + 1)\n })\n }, [])\n\n const handleRequestUpdateThrottled = useThrottledCallback(\n handleRequestUpdate,\n 60,\n throttleOptions,\n )\n\n const handleNext = useCallback((id: any, hookState: any) => {\n if (hookState === null) {\n delete statesRef.current[id]\n } else {\n const current = statesRef.current[id]\n statesRef.current[id] = {...current, value: hookState}\n }\n }, [])\n\n const handleReset = useCallback(\n (id: any) => {\n setKeys((currentKeys) => ({...currentKeys, [id]: (currentKeys[id] || 0) + 1}))\n\n if (onReset) {\n onReset()\n }\n },\n [onReset],\n )\n\n const hookIds = useMemo(() => hooks.map((hook) => getHookId(hook)), [hooks])\n\n const states = useMemo(\n () => hookIds.map((id) => statesRef.current[id]?.value).filter(isNonNullable),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- tickId is used to refresh the memo, before it can be removed it needs to be investigated what impact it has\n [hookIds, tickId],\n )\n\n return (\n <>\n {hooks.map((hook) => {\n const id = getHookId(hook)\n const key = keys[id] || 0\n\n return (\n <HookStateContainer\n key={`${id}-${key}`}\n hook={hook}\n id={id}\n args={args}\n onNext={handleNext}\n onRequestUpdate={handleRequestUpdateThrottled}\n onReset={handleReset}\n />\n )\n })}\n\n {children({states})}\n </>\n )\n}\n","import React, {type HTMLProps, type RefAttributes} from 'react'\nimport {type HotkeysProps as UIHotkeysProps, Hotkeys as UIHotkeys} from '@sanity/ui'\n\n/**\n * Properties for the `Hotkeys` component.\n *\n * @public\n */\nexport type HotkeysProps = UIHotkeysProps & {\n /**\n * Whether to make the keys platform-aware (eg `alt` to `option` on Apple devices).\n *\n * @defaultValue true\n */\n makePlatformAware?: boolean\n} & Omit<HTMLProps<HTMLElement>, 'ref' | 'size' | 'as'> &\n RefAttributes<HTMLElement>\n\n/**\n * Renders given `keys` as \"keycaps\" visually.\n *\n * This is a wrapper around `@sanity/ui`'s `Hotkeys` component, which allows for altering keys\n * (eg `alt` to `option`) on Apple devices unless `makePlatformAware` is set to `false`.\n *\n * @param props - Properties to render with\n * @returns React element\n * @public\n */\nexport function Hotkeys({makePlatformAware = true, keys: hotKeys = [], ...props}: HotkeysProps) {\n const keys = makePlatformAware ? hotKeys.map(platformifyKey) : hotKeys\n return <UIHotkeys {...props} keys={keys} />\n}\n\n/**\n * @internal\n */\nconst IS_APPLE_DEVICE =\n typeof navigator === 'undefined' || typeof navigator.platform !== 'string'\n ? false\n : /Mac|iPod|iPhone|iPad/.test(navigator.platform || '')\n\n/**\n * Given key 'Alt', or 'Option' (case-insensitive), return the platform-appropriate key name\n * (eg 'Alt' on non-Apple devices, 'Option' on Apple devices).\n *\n * @param key - Key to platformify\n * @returns Platform-appropriate key name\n * @internal\n */\nfunction platformifyKey(key: string): string {\n const lowerKey = key.toLowerCase()\n\n if (lowerKey === 'alt' && IS_APPLE_DEVICE) {\n return matchCase(key, 'option')\n }\n\n if (lowerKey === 'option' && !IS_APPLE_DEVICE) {\n return matchCase(key, 'alt')\n }\n\n return key\n}\n\n/**\n * Apply the case (lowercase/uppercase) of `original` to `target`, character by character,\n * eg matching ALL CAPS, all lowercase or Mixed Case.\n *\n * @param original - The original string to match case of\n * @param target - The target string to apply case to\n * @returns Target string with case applied from original\n * @internal\n */\nfunction matchCase(original: string, target: string): string {\n const orgLength = original.length\n\n return target.replace(/./g, (char, i) => {\n // Replace character by character matching case of original\n // If running out of original, just return the target case as-is\n return i < orgLength && original[i] === original[i].toUpperCase() ? char.toUpperCase() : char\n })\n}\n","import React from 'react'\nimport {Button, ButtonProps} from '../../ui-components'\n\nimport {IntentLink, IntentLinkProps} from 'sanity/router'\n\n/**\n *\n * @hidden\n * @beta\n */\nexport function IntentButton(\n props: IntentLinkProps &\n ButtonProps &\n Omit<React.HTMLProps<HTMLButtonElement>, 'ref' | 'size' | 'as'>,\n) {\n return props.disabled ? (\n <Button {...props} as=\"a\" role=\"link\" aria-disabled=\"true\" />\n ) : (\n <Button {...props} as={IntentLink} />\n )\n}\n","import type {Config} from './types'\n\n/**\n * @hidden\n * @beta */\nexport function defineConfig<T extends Config>(config: T): T {\n return config\n}\n\n/**\n * @deprecated Use `defineConfig` instead\n *\n * @hidden\n * @beta\n */\nexport function createConfig<T extends Config>(config: T): T {\n return defineConfig(config)\n}\n","import {isString} from 'lodash'\nimport {Plugin, PluginOptions} from './types'\n\n/**\n * @hidden\n * @beta */\nexport type PluginFactory<TOptions> = (options: TOptions) => PluginOptions\n\nfunction validatePlugin(pluginResult: PluginOptions) {\n // TODO: name is required etc\n const messages = [\n 'projectId' in pluginResult && '`projectId` not allowed in plugin configuration',\n 'dataset' in pluginResult && '`dataset` not allowed in plugin configuration',\n ].filter(isString)\n\n if (messages.length)\n throw new Error(\n `Invalid plugin configuration:\\n${messages.map((message) => `\\t${message}`).join('\\n')}`,\n )\n}\n\n/**\n * @hidden\n * @beta */\nexport function definePlugin<TOptions = void>(\n arg: PluginFactory<TOptions> | PluginOptions,\n): Plugin<TOptions> {\n if (typeof arg === 'function') {\n const pluginFactory = arg\n\n return (options: TOptions) => {\n // TODO: there's a possiblity of passing default arguments to users'\n // plugin factories or reading from default options in `TOptions`\n const result = pluginFactory(options)\n\n validatePlugin(result)\n return result\n }\n }\n\n validatePlugin(arg)\n return () => arg\n}\n\n/**\n * @deprecated Use `definePlugin` instead\n *\n * @hidden\n * @beta\n */\nexport function createPlugin<TOptions = void>(\n arg: PluginFactory<TOptions> | PluginOptions,\n): Plugin<TOptions> {\n return definePlugin(arg)\n}\n","import {DocumentFieldAction} from './types'\n\n/** @internal */\nexport function defineDocumentFieldAction(fieldAction: DocumentFieldAction): DocumentFieldAction {\n return fieldAction\n}\n","import {ButtonTone} from '@sanity/ui'\nimport {ComponentType} from 'react'\n\n/** @hidden @beta */\nexport interface DocumentInspectorProps {\n documentId: string\n documentType: string\n onClose: () => void\n}\n\n/** @hidden @beta */\nexport type DocumentInspectorComponent = ComponentType<DocumentInspectorProps>\n\n/** @hidden @beta */\nexport interface DocumentInspectorUseMenuItemProps {\n documentId: string\n documentType: string\n}\n\n/** @hidden @beta */\nexport interface DocumentInspectorMenuItem {\n hidden?: boolean\n hotkeys?: string[]\n icon?: ComponentType\n showAsAction?: boolean\n status?: ButtonTone\n title: string\n tone?: ButtonTone\n}\n\n/** @hidden @beta */\nexport interface DocumentInspector {\n name: string\n component: DocumentInspectorComponent\n /**\n * Hook for defining a menu item for the inspector.\n */\n useMenuItem?: (props: DocumentInspectorUseMenuItemProps) => DocumentInspectorMenuItem\n\n /**\n * Callback for when the inspector is closed, which can be used to clean up custom document pane\n * parameters.\n */\n onClose?: (ctx: {params: Record<string, string | undefined>}) => {\n params: Record<string, string | undefined>\n }\n\n /**\n * Callback for when the inspector is opened, which can be used to set custom document pane\n * parameters.\n */\n onOpen?: (ctx: {params: Record<string, string | undefined>}) => {\n params: Record<string, string | undefined>\n }\n}\n\n/**\n * Define a document inspector to be used in Sanity configuration.\n *\n * @example\n *\n * ```ts\n * // sanity.config.ts\n *\n * import {RocketIcon} from '@sanity/icons'\n * import {defineConfig, defineDocumentInspector} from 'sanity'\n *\n * const customInspector = defineDocumentInspector({\n * name: 'custom',\n * useMenuItem: () => ({\n * icon: RocketIcon,\n * showAsAction: true,\n * title: 'Custom'\n * }),\n * component: lazy(() => import('./inspectors/custom')),\n * })\n *\n * export default defineConfig({\n * // ...\n *\n * document: {\n * inspectors: (prev) => [customInspector, ...prev],\n * },\n * })\n * ```\n *\n * @hidden @beta\n * */\nexport function defineDocumentInspector(inspector: DocumentInspector): DocumentInspector {\n return inspector\n}\n","import {of} from 'rxjs'\nimport {SanityClient} from '@sanity/client'\nimport {CurrentUser} from '@sanity/types'\nimport {AuthStore} from './types'\n\n/** @internal */\nexport interface MockAuthStoreOptions {\n currentUser: CurrentUser | null\n client: SanityClient\n}\n\n/**\n * Creates a mock `AuthStore` (for testing) that emits an `AuthState` derived\n * from the `client` and `currentUser` given.\n *\n * @internal\n */\nexport function createMockAuthStore({client, currentUser = null}: MockAuthStoreOptions): AuthStore {\n return {\n state: of({authenticated: true, client, currentUser}),\n }\n}\n","import {distinctUntilChanged, map, mapTo, startWith, switchMap} from 'rxjs/operators'\nimport {of, timer} from 'rxjs'\nimport {useMemoObservable} from 'react-rx'\nimport {useDocumentStore} from '../store'\n\n/** @internal */\nexport type ConnectionState = 'connecting' | 'reconnecting' | 'connected'\n\nconst INITIAL: ConnectionState = 'connecting'\n\n/** @internal */\nexport function useConnectionState(publishedDocId: string, docTypeName: string): ConnectionState {\n const documentStore = useDocumentStore()\n\n return useMemoObservable(\n () =>\n documentStore.pair.documentEvents(publishedDocId, docTypeName).pipe(\n map((ev: {type: string}) => ev.type),\n map((eventType) => eventType !== 'reconnect'),\n switchMap((isConnected) =>\n isConnected ? of('connected') : timer(200).pipe(mapTo('reconnecting')),\n ),\n startWith(INITIAL as any),\n distinctUntilChanged(),\n ),\n [documentStore.pair, publishedDocId, docTypeName],\n INITIAL,\n )\n}\n","import {useMemoObservable} from 'react-rx'\nimport {useDocumentStore} from '../store'\n\n/** @internal */\nexport function useDocumentOperationEvent(publishedDocId: string, docTypeName: string) {\n const documentStore = useDocumentStore()\n\n return useMemoObservable(\n () => documentStore.pair.operationEvents(publishedDocId, docTypeName),\n [documentStore.pair, publishedDocId, docTypeName],\n )\n}\n","import {useMemoObservable} from 'react-rx'\nimport {merge, timer} from 'rxjs'\nimport {debounce, share, skip, take} from 'rxjs/operators'\nimport {EditStateFor, useDocumentStore} from '../store'\n\n/** @internal */\nexport function useEditState(\n publishedDocId: string,\n docTypeName: string,\n priority: 'default' | 'low' = 'default',\n): EditStateFor {\n const documentStore = useDocumentStore()\n\n return useMemoObservable(() => {\n const base = documentStore.pair.editState(publishedDocId, docTypeName).pipe(share())\n if (priority === 'low') {\n return merge(\n base.pipe(take(1)),\n base.pipe(\n skip(1),\n debounce(() => timer(1000)),\n ),\n )\n }\n return documentStore.pair.editState(publishedDocId, docTypeName)\n }, [documentStore.pair, publishedDocId, docTypeName, priority]) as EditStateFor\n}\n","import {useMemo} from 'react'\nimport {intlCache} from '../i18n/intlCache'\nimport {useCurrentLocale} from '../i18n/hooks/useLocale'\nimport {useListFormat} from './useListFormat'\n\ntype Duration = {\n days: number\n hours: number\n minutes: number\n seconds: number\n milliseconds: number\n}\ntype DurationUnit = keyof Duration\n\nconst PERIODS = ['days', 'hours', 'minutes', 'seconds', 'milliseconds'] as const\n\n/**\n * Options for the duration formatter\n *\n * @public\n */\nexport interface UseFormattedDurationOptions {\n /**\n * The formatting style to use in unit and list formatting. The default is \"short\".\n */\n style?: 'short' | 'long' | 'narrow'\n\n /**\n * The resolution of the duration. The default is \"seconds\".\n */\n resolution?: 'seconds' | 'milliseconds'\n}\n\n/**\n * The result of the duration formatter\n *\n * @public\n */\nexport interface FormattedDuration {\n /** The human-readable, formatted duration as a string, eg \"2 days, 3 hr, and 20 sec\" */\n formatted: string\n\n /** The machine-readable, formatted ISO-8601 duration string, eg \"P2DT3H20S\" */\n iso8601: string\n}\n\n/**\n * Formats a duration (in milliseconds) to a more user friendly string eg `1h 30m` or `1t 29m 15s`.\n * Can be configured to output full units, eg `1 hour 30 minutes` or `1 hour 3 minutes 15 seconds`.\n * Uses the current locale, which also applies to the division of units.\n *\n * @example English (en-US) locale formatting\n * ```ts\n * useFormattedDuration(5589000)\n * // {\"formatted\": \"1 hour, 33 minutes, and 9 seconds\", \"iso8601\": \"PT1H33M9S\"}\n * ```\n *\n * @example Norwegian (no-NB) locale formatting\n * ```ts\n * useFormattedDuration(5589000)\n * // {\"formatted\": \"1 time, 33 minutter og 9 sekunder\", \"iso8601\": \"PT1H33M9S\"}\n * ```\n *\n * @param options - Optional options for the number formatter\n * @returns An object with `formatted` and `iso8601` properties\n * @public\n */\nexport function useFormattedDuration(\n durationMs: number,\n options?: UseFormattedDurationOptions,\n): FormattedDuration {\n const {style = 'short', resolution = 'seconds'} = options || {}\n const unitDisplay = style\n const locale = useCurrentLocale().id\n const listFormat = useListFormat({type: 'unit', style})\n const isNegative = durationMs < 0\n const duration = parseMilliseconds(Math.abs(durationMs))\n const formatters: Record<DurationUnit, Intl.NumberFormat> = useMemo(\n () => ({\n days: intlCache.numberFormat(locale, {style: 'unit', unit: 'day', unitDisplay}),\n hours: intlCache.numberFormat(locale, {style: 'unit', unit: 'hour', unitDisplay}),\n minutes: intlCache.numberFormat(locale, {style: 'unit', unit: 'minute', unitDisplay}),\n seconds: intlCache.numberFormat(locale, {style: 'unit', unit: 'second', unitDisplay}),\n milliseconds: intlCache.numberFormat(locale, {\n style: 'unit',\n unit: 'millisecond',\n unitDisplay,\n }),\n }),\n [locale, unitDisplay],\n )\n\n const parts: string[] = []\n for (const period of PERIODS) {\n const value = duration[period]\n if (!value || (resolution === 'seconds' && period === 'milliseconds')) {\n continue\n }\n\n const prefix = isNegative && parts.length === 0 ? '-' : ''\n parts.push(`${prefix}${formatters[period].format(value)}`)\n }\n\n const formatted =\n parts.length === 0\n ? // If passing duration 0, we still want to show something\n formatters[resolution].format(0)\n : // Usually, we want to join the parts with the locales list formatter\n listFormat.format(parts)\n\n const iso8601 = durationToISO8601(duration, isNegative)\n\n return {formatted, iso8601}\n}\n\n/**\n * Parse milliseconds to durations. We stop at days because months are not a fixed unit,\n * nor are years (365.25 strictly speaking, but people may expact calendar days). If we\n * wanted to include those, we'd want to use `intervalToDuration` from date-fns, and base\n * it on two specific dates.\n *\n * @param milliseconds - Milliseconds to parse\n * @returns Object of duration parts\n * @internal\n */\nfunction parseMilliseconds(milliseconds: number): Duration {\n return {\n days: Math.trunc(milliseconds / 86400000),\n hours: Math.trunc(milliseconds / 3600000) % 24,\n minutes: Math.trunc(milliseconds / 60000) % 60,\n seconds: Math.trunc(milliseconds / 1000) % 60,\n milliseconds: Math.trunc(milliseconds) % 1000,\n }\n}\n\n/**\n * Format the given duration to an {@link https://en.wikipedia.org/wiki/ISO_8601#Durations | ISO-8601 duration}\n * string, eg `P1DT2H3M4.005S` meaning \"1 day, 2 hours, 3 minutes, 4 seconds and 5 milliseconds\".\n *\n * If days are zero, it will skip straight to the time part, eg `PT2H3M4.005S`.\n * If milliseconds are zero, it will skip the milliseconds part, eg `PT2H3M4S`.\n *\n * @param dur - The duration to format\n * @returns The formatted duration\n * @internal\n */\nfunction durationToISO8601(dur: Duration, isNegative: boolean): string {\n const date = dur.days ? `${dur.days}D` : ''\n\n let time = ''\n if (dur.hours) time += `${dur.hours}H`\n if (dur.minutes) time += `${dur.minutes}M`\n\n if (dur.milliseconds) {\n time += `${((dur.seconds * 1000 + dur.milliseconds) / 1000).toFixed(3)}S`\n } else if (dur.seconds) {\n time += `${dur.seconds}S`\n }\n\n if (!date && !time) {\n return 'PT0S'\n }\n\n const parts = time ? [date, time] : [date]\n const duration = `P${parts.join('T')}`\n return isNegative ? `-${duration}` : duration\n}\n","import {intlCache} from '../i18n/intlCache'\nimport {useCurrentLocale} from '../i18n/hooks/useLocale'\n\n/**\n * Options for the `useNumberFormat` hook\n *\n * @public\n */\nexport type UseNumberFormatOptions = Intl.NumberFormatOptions\n\n/**\n * Returns an instance of `Intl.NumberFormat` that uses the currently selected locale,\n * and enables locale/language-sensitive number formatting.\n *\n * @param options - Optional options for the number formatter\n * @returns Instance of `Intl.NumberFormat`\n * @public\n */\nexport function useNumberFormat(options: UseNumberFormatOptions = {}): Intl.NumberFormat {\n const currentLocale = useCurrentLocale().id\n return intlCache.numberFormat(currentLocale, options)\n}\n","import {useMemoObservable} from 'react-rx'\nimport {map} from 'rxjs/operators'\nimport {useDocumentStore} from '../store'\n\n/** @internal */\nexport interface SyncState {\n isSyncing: boolean\n}\n\nconst SYNCING = {isSyncing: true}\nconst NOT_SYNCING = {isSyncing: false}\n\n/** @internal */\nexport function useSyncState(publishedDocId: string, documentType: string): SyncState {\n const documentStore = useDocumentStore()\n\n return useMemoObservable<SyncState>(\n () =>\n documentStore.pair\n .consistencyStatus(publishedDocId, documentType)\n .pipe(map((isConsistent) => (isConsistent ? NOT_SYNCING : SYNCING))),\n [documentStore.pair, documentType, publishedDocId],\n NOT_SYNCING,\n )\n}\n","import {useRelativeTime} from './useRelativeTime'\n\n/** @internal */\nexport interface TimeAgoOpts {\n minimal?: boolean\n agoSuffix?: boolean\n}\n\n/**\n * @deprecated - Use {@link useRelativeTime} instead\n * @internal\n */\nexport function useTimeAgo(time: Date | string, options: TimeAgoOpts = {}): string {\n return useRelativeTime(time, {\n minimal: options.minimal,\n useTemporalPhrase: options.agoSuffix,\n })\n}\n","import {Tool} from '../config'\nimport {useSource} from '../studio'\n\n/**\n *\n * @hidden\n * @beta\n */\nexport function useTools(): Tool[] {\n return useSource().tools\n}\n","import {useMemoObservable} from 'react-rx'\nimport {useDocumentStore, ValidationStatus} from '../store'\n\nconst INITIAL: ValidationStatus = {validation: [], isValidating: false}\n\n/** @internal */\nexport function useValidationStatus(publishedDocId: string, docTypeName: string): ValidationStatus {\n const documentStore = useDocumentStore()\n\n return useMemoObservable(\n () => documentStore.pair.validation(publishedDocId, docTypeName),\n [documentStore.pair, publishedDocId, docTypeName],\n INITIAL,\n )\n}\n","import {FormPatch} from './types'\n\n/**\n *\n * @hidden\n * @beta\n */\nexport interface MutationPatchMsg {\n type: 'mutation'\n patches: FormPatch[]\n snapshot: unknown\n}\n\n/**\n *\n * @hidden\n * @beta\n */\nexport interface RebasePatchMsg {\n type: 'rebase'\n patches: FormPatch[]\n snapshot: unknown\n}\n\n/**\n *\n * @hidden\n * @beta\n */\nexport type PatchMsg = MutationPatchMsg | RebasePatchMsg\n\n/**\n *\n * @hidden\n * @beta\n */\nexport interface PatchMsgSubscriber {\n (msg: PatchMsg): void\n}\n\n/**\n *\n * @hidden\n * @beta\n */\nexport interface PatchChannel {\n publish: (msg: PatchMsg) => void\n subscribe: (subscriber: PatchMsgSubscriber) => () => void\n}\n\n/**\n * @internal\n */\nexport function createPatchChannel(): PatchChannel {\n const _subscribers: PatchMsgSubscriber[] = []\n\n return {\n publish(msg: PatchMsg) {\n for (const subscriber of _subscribers) {\n subscriber(msg)\n }\n },\n\n subscribe(subscriber) {\n _subscribers.push(subscriber)\n\n return () => {\n const idx = _subscribers.indexOf(subscriber)\n\n if (idx > -1) {\n _subscribers.splice(idx, 1)\n }\n }\n },\n }\n}\n","import {isKeyedObject} from '@sanity/types'\n\nexport function isEqual(item: unknown, otherItem: unknown): boolean {\n if (item === otherItem) {\n return true\n }\n\n if (typeof item !== typeof otherItem) {\n return false\n }\n\n if (typeof item !== 'object' && !Array.isArray(item)) {\n return item === otherItem\n }\n\n if (isKeyedObject(item) && isKeyedObject(otherItem) && item._key === otherItem._key) {\n return true\n }\n\n if (Array.isArray(item) && Array.isArray(otherItem)) {\n if (item.length !== otherItem.length) {\n return false\n }\n\n return item.every((child, i) => isEqual(child, otherItem[i]))\n }\n\n if (item === null || otherItem === null) {\n return item === otherItem\n }\n\n const obj = item as Record<string, unknown>\n const otherObj = otherItem as Record<string, unknown>\n\n const keys = Object.keys(obj)\n const otherKeys = Object.keys(otherObj)\n if (keys.length !== otherKeys.length) {\n return false\n }\n\n return keys.every((keyName) => isEqual(obj[keyName], otherObj[keyName]))\n}\n","import {type ArraySchemaType, type SchemaType, type TypedObject, isKeyedObject} from '@sanity/types'\nimport {Box, Flex} from '@sanity/ui'\nimport React from 'react'\nimport {useUserColorManager} from '../../../../user-color'\nimport {DiffTooltip, FromToArrow, getAnnotationColor} from '../../../diff'\nimport type {Annotation, ArrayDiff, Diff, DiffComponent, ItemDiff} from '../../../types'\nimport {useTranslation} from '../../../../i18n'\nimport {Checkbox} from '../../boolean/preview'\nimport {isEqual} from '../util/arrayUtils'\nimport {Preview} from '../../../../preview/components/Preview'\n\ninterface NamedListOption {\n title?: string\n value: unknown\n}\n\ninterface NormalizedListOption {\n title?: string\n value: unknown\n memberType?: Exclude<SchemaType, ArraySchemaType>\n isPresent: boolean\n annotation: Annotation\n itemIndex: number\n}\n\nexport const ArrayOfOptionsFieldDiff: DiffComponent<ArrayDiff> = ({diff, schemaType}) => {\n const options = schemaType.options?.list\n const colorManager = useUserColorManager()\n const {t} = useTranslation()\n if (!Array.isArray(options)) {\n // Shouldn't happen, because the resolver should only resolve here if it does\n return null\n }\n\n return (\n <div>\n {diff.items\n .map((item) => normalizeItems(item, diff, schemaType))\n .filter((item): item is NormalizedListOption => item !== null)\n .sort(sortItems)\n .map((item, index) => {\n const {annotation, isPresent, value, memberType, title} = item\n const color = getAnnotationColor(colorManager, annotation)\n const action = isPresent ? t('changes.added-label') : t('changes.removed-label')\n return (\n <Flex align=\"center\" key={getItemKey(diff, index)}>\n <DiffTooltip annotations={annotation ? [annotation] : []} description={action}>\n <Flex align=\"center\">\n <Checkbox checked={!isPresent} color={color} />\n <Box margin={2}>\n <FromToArrow />\n </Box>\n <Checkbox checked={isPresent} color={color} />\n </Flex>\n </DiffTooltip>\n <Flex align=\"center\">\n <ItemPreview value={title || value} memberType={memberType} />\n </Flex>\n </Flex>\n )\n })}\n </div>\n )\n}\n\nfunction normalizeItems(\n item: ItemDiff,\n parentDiff: ArrayDiff,\n schemaType: ArraySchemaType,\n): NormalizedListOption | null {\n if (item.diff.action === 'unchanged') {\n return null\n }\n\n const {fromValue, toValue} = parentDiff\n const value = getValue(item.diff)\n const wasPresent = isInArray(value, fromValue)\n const isPresent = isInArray(value, toValue)\n if (wasPresent === isPresent) {\n return null\n }\n\n return {\n title: getItemTitle(value, schemaType),\n memberType: resolveMemberType(getValue(item.diff), schemaType),\n itemIndex: getOptionIndex(value, schemaType),\n annotation: item.annotation,\n isPresent,\n value,\n }\n}\n\nfunction sortItems(itemA: NormalizedListOption, itemB: NormalizedListOption): number {\n return itemA.itemIndex - itemB.itemIndex\n}\n\nfunction ItemPreview({value, memberType}: {memberType?: SchemaType; value: unknown}) {\n return (\n <Box marginX={2} marginY={1}>\n {typeof value === 'string' || typeof value === 'number' ? (\n value\n ) : (\n <Preview schemaType={memberType!} value={value as any} layout=\"default\" />\n )}\n </Box>\n )\n}\n\nfunction isInArray(value: unknown, parent?: unknown[] | null): boolean {\n const array = parent || []\n return typeof value === 'object' && value !== null\n ? array.some((item) => isEqual(item, value))\n : array.includes(value)\n}\n\nfunction getItemKey(diff: Diff, index: number): string | number {\n const value = diff.toValue || diff.fromValue\n return isKeyedObject(value) ? value._key : index\n}\n\nfunction getValue(diff: Diff) {\n return typeof diff.toValue === 'undefined' ? diff.fromValue : diff.toValue\n}\n\nfunction resolveMemberType(item: unknown, schemaType: ArraySchemaType) {\n const itemTypeName = resolveTypeName(item)\n return schemaType.of.find((memberType) => memberType.name === itemTypeName)\n}\n\nfunction resolveTypeName(value: unknown): string {\n const jsType = resolveJSType(value)\n if (jsType !== 'object') {\n return jsType\n }\n\n const obj = value as TypedObject\n return ('_type' in obj && obj._type) || jsType\n}\n\nfunction resolveJSType(val: unknown) {\n if (val === null) {\n return 'null'\n }\n\n if (Array.isArray(val)) {\n return 'array'\n }\n\n return typeof val\n}\n\nfunction isNamedOption(item: unknown | NamedListOption): item is NamedListOption {\n return typeof item === 'object' && item !== null && 'title' in item\n}\n\nfunction getOptionIndex(item: unknown, schemaType: ArraySchemaType): number {\n const list = schemaType.options?.list || []\n return list.findIndex((opt) => isEqual(isNamedOption(opt) ? opt.value : opt, item))\n}\n\nfunction getItemTitle(item: unknown, schemaType: ArraySchemaType): string | undefined {\n const list = (schemaType.options?.list || []) as NamedListOption[]\n const index = getOptionIndex(item, schemaType)\n return index === -1 ? undefined : list[index].title || undefined\n}\n","import React from 'react'\nimport {DiffFromTo} from '../../../diff'\nimport {DiffComponent, StringDiff} from '../../../types'\nimport {StringPreview} from '../../string/preview'\n\nexport const UrlFieldDiff: DiffComponent<StringDiff> = ({diff, schemaType}) => {\n return <DiffFromTo diff={diff} schemaType={schemaType} previewComponent={StringPreview} />\n}\n","import React from 'react'\nimport {DiffFromTo} from '../../../diff'\nimport {DiffComponent, ObjectDiff} from '../../../types'\nimport {SlugPreview} from '../preview'\n\ninterface Slug {\n current?: string\n}\n\nexport const SlugFieldDiff: DiffComponent<ObjectDiff<Slug>> = ({diff, schemaType}) => {\n return (\n <DiffFromTo\n layout=\"inline\"\n diff={diff}\n schemaType={schemaType}\n previewComponent={SlugPreview}\n />\n )\n}\n","import {ArrayOfOptionsFieldDiff} from '../../types/array/diff'\nimport {DatetimeFieldDiff} from '../../types/datetime/diff'\nimport {UrlFieldDiff} from '../../types/url/diff'\nimport {SlugFieldDiff} from '../../types/slug/diff'\nimport {DiffComponentResolver} from '../../types'\n\n/** @internal */\nexport const diffResolver: DiffComponentResolver = ({schemaType}) => {\n // datetime or date\n if (['datetime', 'date'].includes(schemaType.name)) {\n return DatetimeFieldDiff\n }\n\n if (schemaType.name === 'url') {\n return UrlFieldDiff\n }\n\n if (schemaType.name === 'slug') {\n return SlugFieldDiff\n }\n\n if (schemaType.jsonType === 'array' && Array.isArray(schemaType.options?.list)) {\n return ArrayOfOptionsFieldDiff\n }\n\n return undefined\n}\n","/* eslint-disable i18next/no-literal-string */\nimport React from 'react'\nimport {Text} from '@sanity/ui'\n\n// This is the fallback marker renderer if the block editor didn't get the 'renderCustomMarkers' prop\n// You will probably only see this when you first start to play with custom markers as a developer\nexport function DefaultCustomMarkers() {\n return (\n <Text size={1}>\n This is a example custom marker, please implement <code>renderCustomMarkers</code> function.\n </Text>\n )\n}\n","import {Path} from '@sanity/types'\nimport React, {PropsWithChildren, useCallback, useMemo, useState} from 'react'\nimport {pathToString} from '../../field'\nimport {HoveredFieldContext, HoveredFieldContextValue} from './HoveredFieldContext'\n\n/** @internal */\nexport function HoveredFieldProvider(props: PropsWithChildren) {\n const {children} = props\n const [hoveredStack, setHoveredStack] = useState<string[]>([])\n\n const handleMouseEnter = useCallback((path: Path) => {\n const pathString = pathToString(path)\n\n setHoveredStack((prev) => {\n if (prev.includes(pathString)) {\n return prev\n }\n\n return [pathString, ...prev]\n })\n }, [])\n\n const handleMouseLeave = useCallback((path: Path) => {\n const pathString = pathToString(path)\n\n setHoveredStack((prev) => {\n if (prev.includes(pathString)) {\n return prev.filter((item) => item !== pathString)\n }\n\n return prev\n })\n }, [])\n\n const context: HoveredFieldContextValue = useMemo(\n () => ({\n hoveredStack,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n }),\n [handleMouseEnter, handleMouseLeave, hoveredStack],\n )\n\n return <HoveredFieldContext.Provider value={context}>{children}</HoveredFieldContext.Provider>\n}\n","/* eslint-disable camelcase */\n\nimport {ObjectSchemaType, Path, ValidationMarker} from '@sanity/types'\nimport React, {useMemo} from 'react'\nimport {DocumentFieldAction, Source} from '../config'\nimport {FormNodePresence} from '../presence'\nimport {EMPTY_ARRAY} from '../util'\nimport {FormBuilderContext, FormBuilderContextValue} from './FormBuilderContext'\nimport {\n FormBuilderFilterFieldFn,\n RenderAnnotationCallback,\n RenderBlockCallback,\n RenderFieldCallback,\n RenderInputCallback,\n RenderItemCallback,\n RenderPreviewCallback,\n} from './types'\nimport {FormFieldGroup, StateTree} from './store'\nimport {ArrayOfObjectsFunctions} from './inputs/arrays/ArrayOfObjectsInput/ArrayOfObjectsFunctions'\nimport {DefaultMarkers} from './inputs/PortableText/_legacyDefaultParts/Markers'\nimport {DefaultCustomMarkers} from './inputs/PortableText/_legacyDefaultParts/CustomMarkers'\nimport {PatchChannel, PatchEvent} from './patch'\nimport {FormCallbacksProvider} from './studio/contexts/FormCallbacks'\nimport {PresenceProvider} from './studio/contexts/Presence'\nimport {ValidationProvider} from './studio/contexts/Validation'\nimport {HoveredFieldProvider} from './field'\nimport {DocumentIdProvider} from './contexts/DocumentIdProvider'\n\nexport interface FormBuilderProviderProps {\n /** @internal */\n __internal_fieldActions?: DocumentFieldAction[]\n /** @internal */\n __internal_patchChannel?: PatchChannel // eslint-disable-line camelcase\n\n autoFocus?: boolean\n changesOpen?: boolean\n children?: React.ReactNode\n collapsedFieldSets: StateTree<boolean> | undefined\n collapsedPaths: StateTree<boolean> | undefined\n file: Source['form']['file']\n filterField?: FormBuilderFilterFieldFn\n focusPath: Path\n focused?: boolean\n groups: FormFieldGroup[]\n id: string\n image: Source['form']['image']\n onChange: (event: PatchEvent) => void\n onFieldGroupSelect: (path: Path, groupName: string) => void\n onPathBlur: (path: Path) => void\n onPathFocus: (path: Path) => void\n onPathOpen: (path: Path) => void\n onSetFieldSetCollapsed: (path: Path, collapsed: boolean) => void\n onSetPathCollapsed: (path: Path, collapsed: boolean) => void\n presence: FormNodePresence[]\n readOnly?: boolean\n renderAnnotation?: RenderAnnotationCallback\n renderBlock?: RenderBlockCallback\n renderField: RenderFieldCallback\n renderInlineBlock?: RenderBlockCallback\n renderInput: RenderInputCallback\n renderItem: RenderItemCallback\n renderPreview: RenderPreviewCallback\n schemaType: ObjectSchemaType\n unstable?: Source['form']['unstable']\n validation: ValidationMarker[]\n}\n\nconst missingPatchChannel: PatchChannel = {\n publish: () => undefined,\n subscribe: () => {\n console.warn(\n 'No patch channel provided to form-builder. If you need input based patch updates, please provide one',\n )\n\n return () => undefined\n },\n}\n\nexport function FormBuilderProvider(props: FormBuilderProviderProps) {\n const {\n __internal_fieldActions: fieldActions = EMPTY_ARRAY,\n __internal_patchChannel: patchChannel = missingPatchChannel,\n autoFocus,\n changesOpen,\n children,\n collapsedFieldSets,\n collapsedPaths,\n file,\n filterField,\n focusPath,\n focused,\n groups,\n id,\n image,\n onChange,\n onFieldGroupSelect,\n onPathBlur,\n onPathFocus,\n onPathOpen,\n onSetFieldSetCollapsed,\n onSetPathCollapsed,\n presence,\n readOnly,\n renderAnnotation,\n renderBlock,\n renderField,\n renderInlineBlock,\n renderInput,\n renderItem,\n renderPreview,\n schemaType,\n unstable,\n validation,\n } = props\n\n const __internal: FormBuilderContextValue['__internal'] = useMemo(\n () => ({\n patchChannel, // eslint-disable-line camelcase\n components: {\n ArrayFunctions: ArrayOfObjectsFunctions,\n CustomMarkers: unstable?.CustomMarkers || DefaultCustomMarkers,\n Markers: unstable?.Markers || DefaultMarkers,\n },\n field: {\n actions: fieldActions,\n },\n file: {\n assetSources: file.assetSources,\n directUploads: file?.directUploads !== false,\n },\n filterField: filterField || (() => true),\n image: {\n assetSources: image.assetSources,\n directUploads: image?.directUploads !== false,\n },\n onChange,\n }),\n [\n fieldActions,\n file.assetSources,\n file?.directUploads,\n filterField,\n image.assetSources,\n image?.directUploads,\n onChange,\n patchChannel,\n unstable?.CustomMarkers,\n unstable?.Markers,\n ],\n )\n\n const formBuilder: FormBuilderContextValue = useMemo(\n () => ({\n __internal,\n autoFocus,\n changesOpen,\n collapsedFieldSets,\n collapsedPaths,\n focusPath,\n focused,\n groups,\n id,\n readOnly,\n renderAnnotation,\n renderBlock,\n renderField,\n renderInlineBlock,\n renderInput,\n renderItem,\n renderPreview,\n schemaType,\n }),\n [\n __internal,\n autoFocus,\n changesOpen,\n collapsedFieldSets,\n collapsedPaths,\n focusPath,\n focused,\n groups,\n id,\n readOnly,\n renderAnnotation,\n renderBlock,\n renderField,\n renderInlineBlock,\n renderInput,\n renderItem,\n renderPreview,\n schemaType,\n ],\n )\n\n return (\n <FormBuilderContext.Provider value={formBuilder}>\n <FormCallbacksProvider\n onChange={onChange}\n onFieldGroupSelect={onFieldGroupSelect}\n onPathBlur={onPathBlur}\n onPathFocus={onPathFocus}\n onPathOpen={onPathOpen}\n onSetPathCollapsed={onSetPathCollapsed}\n onSetFieldSetCollapsed={onSetFieldSetCollapsed}\n >\n <DocumentIdProvider id={id}>\n <PresenceProvider presence={presence}>\n <ValidationProvider validation={validation}>\n <HoveredFieldProvider>{children}</HoveredFieldProvider>\n </ValidationProvider>\n </PresenceProvider>\n </DocumentIdProvider>\n </FormCallbacksProvider>\n </FormBuilderContext.Provider>\n )\n}\n","import {ObjectSchemaType, Path, ValidationMarker} from '@sanity/types'\nimport React, {useCallback} from 'react'\nimport {useSource} from '../../studio'\nimport {PatchChannel, PatchEvent} from '../patch'\nimport {FormBuilderProvider} from '../FormBuilderProvider'\nimport {FormFieldGroup, ObjectMember, StateTree} from '../store'\nimport {\n BlockAnnotationProps,\n BlockProps,\n FieldProps,\n InputProps,\n ItemProps,\n RenderPreviewCallbackProps,\n} from '../types'\nimport {\n useAnnotationComponent,\n useBlockComponent,\n useFieldComponent,\n useInlineBlockComponent,\n useInputComponent,\n useItemComponent,\n usePreviewComponent,\n} from '../form-components-hooks'\nimport {FormNodePresence} from '../../presence'\nimport {PreviewLoader} from '../../preview/components/PreviewLoader'\nimport {DocumentFieldAction} from '../../config'\n\n/**\n * @alpha This API might change.\n */\nexport interface FormProviderProps {\n /** @internal */\n __internal_fieldActions?: DocumentFieldAction[]\n /** @internal Considered internal, do not use. */\n __internal_patchChannel: PatchChannel\n\n autoFocus?: boolean\n changesOpen?: boolean\n children?: React.ReactNode\n collapsedFieldSets: StateTree<boolean> | undefined\n collapsedPaths: StateTree<boolean> | undefined\n focusPath: Path\n focused: boolean | undefined\n groups: FormFieldGroup[]\n id: string\n onChange: (changeEvent: PatchEvent) => void\n onPathBlur: (path: Path) => void\n onPathFocus: (path: Path) => void\n onPathOpen: (path: Path) => void\n onFieldGroupSelect: (path: Path, groupName: string) => void\n onSetPathCollapsed: (path: Path, collapsed: boolean) => void\n onSetFieldSetCollapsed: (path: Path, collapsed: boolean) => void\n presence: FormNodePresence[]\n readOnly?: boolean\n schemaType: ObjectSchemaType\n validation: ValidationMarker[]\n}\n\n/**\n * Default wiring for `FormBuilderProvider` when used with Sanity\n *\n * @alpha This API might change.\n */\nexport function FormProvider(props: FormProviderProps) {\n const {\n __internal_fieldActions: fieldActions,\n __internal_patchChannel: patchChannel,\n autoFocus,\n changesOpen,\n children,\n collapsedFieldSets,\n collapsedPaths,\n focusPath,\n focused,\n groups,\n id,\n onChange,\n onPathBlur,\n onPathFocus,\n onPathOpen,\n onFieldGroupSelect,\n onSetPathCollapsed,\n onSetFieldSetCollapsed,\n presence,\n readOnly,\n schemaType,\n validation,\n } = props\n\n const {file, image} = useSource().form\n\n // These hooks may be stored in context as an perf optimization\n const Input = useInputComponent()\n const Field = useFieldComponent()\n const Preview = usePreviewComponent()\n const Item = useItemComponent()\n const Block = useBlockComponent()\n const InlineBlock = useInlineBlockComponent()\n const Annotation = useAnnotationComponent()\n\n const renderInput = useCallback(\n (inputProps: Omit<InputProps, 'renderDefault'>) => <Input {...inputProps} />,\n [Input],\n )\n const renderField = useCallback(\n (fieldProps: Omit<FieldProps, 'renderDefault'>) => <Field {...fieldProps} />,\n [Field],\n )\n const renderItem = useCallback(\n (itemProps: Omit<ItemProps, 'renderDefault'>) => <Item {...itemProps} />,\n [Item],\n )\n const renderPreview = useCallback(\n (previewProps: RenderPreviewCallbackProps) => (\n <PreviewLoader component={Preview} {...previewProps} />\n ),\n [Preview],\n )\n const renderBlock = useCallback(\n (blockProps: Omit<BlockProps, 'renderDefault'>) => <Block {...blockProps} />,\n [Block],\n )\n const renderInlineBlock = useCallback(\n (blockProps: Omit<BlockProps, 'renderDefault'>) => <InlineBlock {...blockProps} />,\n [InlineBlock],\n )\n const renderAnnotation = useCallback(\n (annotationProps: Omit<BlockAnnotationProps, 'renderDefault'>) => (\n <Annotation {...annotationProps} />\n ),\n [Annotation],\n )\n\n return (\n <FormBuilderProvider\n __internal_fieldActions={fieldActions}\n __internal_patchChannel={patchChannel}\n autoFocus={autoFocus}\n changesOpen={changesOpen}\n collapsedFieldSets={collapsedFieldSets}\n collapsedPaths={collapsedPaths}\n file={file}\n focusPath={focusPath}\n focused={focused}\n groups={groups}\n id={id}\n image={image}\n onChange={onChange}\n onPathBlur={onPathBlur}\n onPathFocus={onPathFocus}\n onPathOpen={onPathOpen}\n onFieldGroupSelect={onFieldGroupSelect}\n onSetPathCollapsed={onSetPathCollapsed}\n onSetFieldSetCollapsed={onSetFieldSetCollapsed}\n presence={presence}\n readOnly={readOnly}\n renderAnnotation={renderAnnotation}\n renderBlock={renderBlock}\n renderField={renderField}\n renderInlineBlock={renderInlineBlock}\n renderInput={renderInput}\n renderItem={renderItem}\n renderPreview={renderPreview}\n schemaType={schemaType}\n validation={validation}\n >\n {children}\n </FormBuilderProvider>\n )\n}\n","/* eslint-disable camelcase */\n/* eslint-disable react/jsx-handler-names */\n\nimport {ObjectSchemaType, Path, ValidationMarker} from '@sanity/types'\nimport React, {useCallback, useRef} from 'react'\nimport {FormPatch, PatchChannel, PatchEvent} from '../patch'\nimport {ObjectFormNode} from '../store/types/nodes'\nimport {\n BlockAnnotationProps,\n BlockProps,\n FieldProps,\n InputProps,\n ItemProps,\n ObjectInputProps,\n RenderPreviewCallbackProps,\n type FormDocumentValue,\n} from '../types'\nimport {StateTree} from '../store'\nimport {EMPTY_ARRAY} from '../../util'\nimport {FormNodePresence} from '../../presence'\nimport {DocumentFieldAction} from '../../config'\nimport {useSource} from '../../studio'\nimport {\n useAnnotationComponent,\n useBlockComponent,\n useFieldComponent,\n useInlineBlockComponent,\n useInputComponent,\n useItemComponent,\n usePreviewComponent,\n} from '../form-components-hooks'\nimport {PreviewLoader} from '../../preview'\nimport {FormValueProvider} from '../contexts/FormValue'\nimport {GetFormValueProvider} from '../contexts/GetFormValue'\nimport {FormProvider} from './FormProvider'\nimport {DocumentFieldActionsProvider} from './contexts/DocumentFieldActions'\n\n/**\n * @alpha\n */\nexport interface FormBuilderProps\n extends Omit<ObjectFormNode, 'level' | 'path' | 'presence' | 'validation' | '_allMembers'> {\n /** @internal */\n __internal_fieldActions?: DocumentFieldAction[]\n /** @internal Considered internal – do not use. */\n __internal_patchChannel: PatchChannel\n\n autoFocus?: boolean\n changesOpen?: boolean\n collapsedFieldSets: StateTree<boolean> | undefined\n collapsedPaths: StateTree<boolean> | undefined\n focusPath: Path\n focused: boolean | undefined\n id: string\n onChange: (changeEvent: PatchEvent) => void\n onPathBlur: (path: Path) => void\n onPathFocus: (path: Path) => void\n onPathOpen: (path: Path) => void\n onFieldGroupSelect: (path: Path, groupName: string) => void\n onSetFieldSetCollapsed: (path: Path, collapsed: boolean) => void\n onSetPathCollapsed: (path: Path, collapsed: boolean) => void\n presence: FormNodePresence[]\n readOnly?: boolean\n schemaType: ObjectSchemaType\n validation: ValidationMarker[]\n value: FormDocumentValue | undefined\n}\n\n/**\n * @alpha\n */\nexport function FormBuilder(props: FormBuilderProps) {\n const {\n __internal_fieldActions: fieldActions,\n __internal_patchChannel: patchChannel,\n autoFocus,\n changesOpen,\n collapsedFieldSets,\n collapsedPaths,\n focusPath,\n focused,\n groups,\n id,\n members,\n onChange,\n onPathBlur,\n onPathFocus,\n onPathOpen,\n onFieldGroupSelect,\n onSetFieldSetCollapsed,\n onSetPathCollapsed,\n presence,\n readOnly,\n schemaType,\n validation,\n value,\n } = props\n\n const handleCollapseField = useCallback(\n (fieldName: string) => onSetPathCollapsed([fieldName], true),\n [onSetPathCollapsed],\n )\n\n const handleExpandField = useCallback(\n (fieldName: string) => onSetPathCollapsed([fieldName], false),\n [onSetPathCollapsed],\n )\n\n const handleBlur = useCallback(() => onPathBlur(EMPTY_ARRAY), [onPathBlur])\n\n const handleFocus = useCallback(() => onPathFocus(EMPTY_ARRAY), [onPathFocus])\n\n const handleChange = useCallback(\n (patch: FormPatch | FormPatch[] | PatchEvent) => onChange(PatchEvent.from(patch)),\n [onChange],\n )\n\n const focusRef = useRef(null)\n\n const handleSelectFieldGroup = useCallback(\n (groupName: string) => onFieldGroupSelect(EMPTY_ARRAY, groupName),\n [onFieldGroupSelect],\n )\n\n const handleOpenField = useCallback((fieldName: string) => onPathOpen([fieldName]), [onPathOpen])\n\n const handleCloseField = useCallback(() => onPathOpen([]), [onPathOpen])\n\n const handleCollapseFieldSet = useCallback(\n (fieldSetName: string) => onSetFieldSetCollapsed([fieldSetName], true),\n [onSetFieldSetCollapsed],\n )\n\n const handleExpandFieldSet = useCallback(\n (fieldSetName: string) => onSetFieldSetCollapsed([fieldSetName], false),\n [onSetFieldSetCollapsed],\n )\n // These hooks may be stored in context as an perf optimization\n const Input = useInputComponent()\n const Field = useFieldComponent()\n const Preview = usePreviewComponent()\n const Item = useItemComponent()\n const Block = useBlockComponent()\n const InlineBlock = useInlineBlockComponent()\n const Annotation = useAnnotationComponent()\n\n const renderInput = useCallback(\n (inputProps: Omit<InputProps, 'renderDefault'>) => <Input {...inputProps} />,\n [Input],\n )\n const renderField = useCallback(\n (fieldProps: Omit<FieldProps, 'renderDefault'>) => <Field {...fieldProps} />,\n [Field],\n )\n const renderItem = useCallback(\n (itemProps: Omit<ItemProps, 'renderDefault'>) => <Item {...itemProps} />,\n [Item],\n )\n const renderPreview = useCallback(\n (previewProps: RenderPreviewCallbackProps) => (\n <PreviewLoader component={Preview} {...previewProps} />\n ),\n [Preview],\n )\n const renderBlock = useCallback(\n (blockProps: Omit<BlockProps, 'renderDefault'>) => <Block {...blockProps} />,\n [Block],\n )\n const renderInlineBlock = useCallback(\n (blockProps: Omit<BlockProps, 'renderDefault'>) => <InlineBlock {...blockProps} />,\n [InlineBlock],\n )\n const renderAnnotation = useCallback(\n (annotationProps: Omit<BlockAnnotationProps, 'renderDefault'>) => (\n <Annotation {...annotationProps} />\n ),\n [Annotation],\n )\n\n const rootInputProps: Omit<ObjectInputProps, 'renderDefault'> = {\n focusPath,\n elementProps: {\n ref: focusRef,\n id,\n onBlur: handleBlur,\n onFocus: handleFocus,\n 'aria-describedby': undefined, // Root input should not have any aria-describedby\n },\n changed: members.some((m) => m.kind === 'field' && m.field.changed),\n focused,\n groups,\n id,\n level: 0,\n members,\n onChange: handleChange,\n onFieldClose: handleCloseField,\n onFieldCollapse: handleCollapseField,\n onFieldSetCollapse: handleCollapseFieldSet,\n onFieldExpand: handleExpandField,\n onFieldSetExpand: handleExpandFieldSet,\n onPathFocus: onPathFocus,\n onFieldOpen: handleOpenField,\n onFieldGroupSelect: handleSelectFieldGroup,\n path: EMPTY_ARRAY,\n presence: EMPTY_ARRAY,\n readOnly,\n renderAnnotation,\n renderBlock,\n renderField,\n renderInlineBlock,\n renderInput,\n renderItem,\n renderPreview,\n schemaType,\n validation: EMPTY_ARRAY,\n value,\n }\n\n return (\n <FormProvider\n __internal_fieldActions={fieldActions}\n __internal_patchChannel={patchChannel}\n autoFocus={autoFocus}\n changesOpen={changesOpen}\n collapsedFieldSets={collapsedFieldSets}\n collapsedPaths={collapsedPaths}\n focusPath={focusPath}\n focused={focused}\n groups={groups}\n id={id}\n onChange={onChange}\n onPathBlur={onPathBlur}\n onPathFocus={onPathFocus}\n onPathOpen={onPathOpen}\n onFieldGroupSelect={onFieldGroupSelect}\n onSetPathCollapsed={onSetPathCollapsed}\n onSetFieldSetCollapsed={onSetFieldSetCollapsed}\n presence={presence}\n validation={validation}\n readOnly={readOnly}\n schemaType={schemaType}\n >\n <GetFormValueProvider value={value}>\n <FormValueProvider value={value}>\n <DocumentFieldActionsProvider actions={fieldActions}>\n {renderInput(rootInputProps)}\n </DocumentFieldActionsProvider>\n </FormValueProvider>\n </GetFormValueProvider>\n </FormProvider>\n )\n}\n","import {useContext} from 'react'\nimport {ReviewChangesContext} from './ReviewChangesContext'\nimport {ReviewChangesContextValue} from './types'\n\n/**\n * @internal\n */\nexport function useReviewChanges(): ReviewChangesContextValue {\n const reviewChanges = useContext(ReviewChangesContext)\n\n if (!reviewChanges) {\n throw new Error('Review changes: missing context value')\n }\n\n return reviewChanges\n}\n","import {Path} from '@sanity/types'\nimport * as PathUtils from '@sanity/util/paths'\nimport React, {useMemo} from 'react'\nimport {FormFieldPresenceContext} from './context'\n\nconst EMPTY_ARRAY: never[] = []\n\nfunction trimChildPath(path: Path, childPath: Path) {\n return PathUtils.startsWith(path, childPath) ? PathUtils.trimLeft(path, childPath) : EMPTY_ARRAY\n}\n\n/** @internal */\nexport interface PresenceScopeProps {\n readOnly?: boolean\n path: Path\n children: React.ReactNode\n}\n\n/** @internal */\nexport function PresenceScope(props: PresenceScopeProps) {\n const {readOnly, path, children} = props\n const contextPresence = React.useContext(FormFieldPresenceContext)\n\n const childPresence = useMemo(() => {\n return readOnly\n ? EMPTY_ARRAY\n : (contextPresence || EMPTY_ARRAY)\n .filter((presence) => {\n return PathUtils.startsWith(path, presence.path)\n })\n .map((presence) => ({\n ...presence,\n path: trimChildPath(path, presence.path),\n }))\n }, [contextPresence, path, readOnly])\n\n return (\n <FormFieldPresenceContext.Provider value={childPresence}>\n {children}\n </FormFieldPresenceContext.Provider>\n )\n}\n","import React from 'react'\nimport {ArrayOfObjectsMember} from '../../store'\nimport {\n RenderAnnotationCallback,\n RenderArrayOfObjectsItemCallback,\n RenderBlockCallback,\n RenderFieldCallback,\n RenderInputCallback,\n RenderPreviewCallback,\n} from '../../types'\n\nimport {ArrayOfObjectsItem} from './items/ArrayOfObjectsItem'\nimport {MemberItemError} from './MemberItemError'\n\n/** @internal */\nexport interface ArrayOfObjectsMemberProps {\n member: ArrayOfObjectsMember\n renderAnnotation?: RenderAnnotationCallback\n renderBlock?: RenderBlockCallback\n renderField: RenderFieldCallback\n renderInlineBlock?: RenderBlockCallback\n renderInput: RenderInputCallback\n renderItem: RenderArrayOfObjectsItemCallback\n renderPreview: RenderPreviewCallback\n}\n\n/**\n * Convenience component for rendering an \"array of objects\"-item\n * @internal\n */\nexport function ArrayOfObjectsInputMember(props: ArrayOfObjectsMemberProps) {\n const {\n member,\n renderAnnotation,\n renderBlock,\n renderField,\n renderInlineBlock,\n renderInput,\n renderItem,\n renderPreview,\n } = props\n if (member.kind === 'item') {\n return (\n <ArrayOfObjectsItem\n key={member.key}\n member={member}\n renderAnnotation={renderAnnotation}\n renderBlock={renderBlock}\n renderField={renderField}\n renderInlineBlock={renderInlineBlock}\n renderInput={renderInput}\n renderItem={renderItem}\n renderPreview={renderPreview}\n />\n )\n }\n if (member.kind === 'error') {\n return <MemberItemError key={member.key} member={member} />\n }\n\n //@ts-expect-error The branching above should cover all possible cases\n console.warn(new Error(`Unhandled member kind ${member.kind}`))\n return null\n}\n","import React from 'react'\nimport {ArrayOfObjectsMember} from '../../store'\nimport {\n RenderAnnotationCallback,\n RenderArrayOfObjectsItemCallback,\n RenderBlockCallback,\n RenderFieldCallback,\n RenderInputCallback,\n RenderPreviewCallback,\n} from '../../types'\n\nimport {ArrayOfObjectsInputMember} from './ArrayOfObjectsInputMember'\n\n/** @internal */\nexport interface ArrayOfObjectsInputMembersProps {\n members: ArrayOfObjectsMember[]\n renderAnnotation?: RenderAnnotationCallback\n renderBlock?: RenderBlockCallback\n renderInlineBlock?: RenderBlockCallback\n renderInput: RenderInputCallback\n renderField: RenderFieldCallback\n renderItem: RenderArrayOfObjectsItemCallback\n renderPreview: RenderPreviewCallback\n}\n\n/**\n * Convenience component for wrapping an array of objects\n * @internal\n */\nexport function ArrayOfObjectsInputMembers(props: ArrayOfObjectsInputMembersProps) {\n const {members, ...rest} = props\n return (\n <>\n {members.map((member) => (\n <ArrayOfObjectsInputMember key={member.key} member={member} {...rest} />\n ))}\n </>\n )\n}\n","import {createElement} from 'react'\nimport {\n RenderAnnotationCallback,\n RenderBlockCallback,\n RenderFieldCallback,\n RenderInputCallback,\n RenderItemCallback,\n RenderPreviewCallback,\n} from '../types'\nimport {Preview} from '../../preview/components/Preview'\nimport {defaultResolveInputComponent} from './inputResolver/inputResolver'\nimport {defaultResolveItemComponent} from './inputResolver/itemResolver'\nimport {defaultResolveFieldComponent} from './inputResolver/fieldResolver'\nimport {\n defaultResolveAnnotationComponent,\n defaultResolveBlockComponent,\n defaultResolveInlineBlockComponent,\n} from './inputResolver/blockResolver'\n\n/** @internal */\nexport const defaultRenderAnnotation: RenderAnnotationCallback = (props) => {\n return createElement(defaultResolveAnnotationComponent(props.schemaType), props)\n}\n\n/** @internal */\nexport const defaultRenderBlock: RenderBlockCallback = (props) => {\n return createElement(defaultResolveBlockComponent(props.schemaType), props)\n}\n\n/** @internal */\nexport const defaultRenderInlineBlock: RenderBlockCallback = (props) => {\n return createElement(defaultResolveInlineBlockComponent(props.schemaType), props)\n}\n\n/** @internal */\nexport const defaultRenderField: RenderFieldCallback = (props) => {\n return createElement(defaultResolveFieldComponent(props.schemaType), props)\n}\n\n/** @internal */\nexport const defaultRenderInput: RenderInputCallback = (props) => {\n return createElement(defaultResolveInputComponent(props.schemaType), props)\n}\n\n/** @internal */\nexport const defaultRenderItem: RenderItemCallback = (props) => {\n return createElement(defaultResolveItemComponent(props.schemaType), props)\n}\n\n/** @internal */\nexport const defaultRenderPreview: RenderPreviewCallback = (props) => {\n return createElement(Preview, props)\n}\n","import type {SanityClient} from '@sanity/client'\nimport {merge, type Observable} from 'rxjs'\nimport {switchMap} from 'rxjs/operators'\nimport type {IdPair} from '../types'\nimport {memoize} from '../utils/createMemoizer'\nimport type {RemoteSnapshotVersionEvent} from './checkoutPair'\nimport {memoizedPair} from './memoizedPair'\nimport {memoizeKeyGen} from './memoizeKeyGen'\n\n/** @internal */\nexport const remoteSnapshots = memoize(\n (\n client: SanityClient,\n idPair: IdPair,\n typeName: string,\n ): Observable<RemoteSnapshotVersionEvent> => {\n return memoizedPair(client, idPair, typeName).pipe(\n switchMap(({published, draft}) => merge(published.remoteSnapshot$, draft.remoteSnapshot$)),\n )\n },\n memoizeKeyGen,\n)\n","import {Schema, SchemaType} from '@sanity/types'\nimport {isBuilder} from './resolve'\nimport {Template} from './types'\nimport {validateTemplates} from './validate'\n\nfunction maybeSerialize(template: Template) {\n return isBuilder(template) ? template.serialize() : template\n}\n\nfunction isNonNullable<T>(t: T): t is NonNullable<T> {\n return !!t\n}\n\n/** @internal */\nexport function prepareTemplates(schema: Schema, initialValueTemplates: Template[]): Template[] {\n const serialized = initialValueTemplates.map(maybeSerialize)\n return validateTemplates(schema, serialized)\n}\n\n/** @internal */\nexport function defaultTemplateForType(schemaType: SchemaType): Template {\n return {\n id: schemaType.name,\n schemaType: schemaType.name,\n title: schemaType.title || schemaType.name,\n icon: schemaType.icon,\n value: schemaType.initialValue || {_type: schemaType.name},\n }\n}\n\n/** @internal */\nexport function defaultTemplatesForSchema(schema: Schema): Template[] {\n const schemaTypes = schema\n .getTypeNames()\n .filter((typeName) => !/^sanity\\./.test(typeName))\n .map((typeName) => schema.get(typeName))\n .filter(isNonNullable)\n .filter((schemaType) => schemaType.type?.name === 'document')\n\n return prepareTemplates(\n schema,\n schemaTypes.map((schemaType) => defaultTemplateForType(schemaType)),\n )\n}\n","import {useEffect, useMemo, useState} from 'react'\nimport {getPublishedId} from '../../../../util'\nimport {useDocumentStore} from '../../datastores'\n\n/** @internal */\nexport interface DocumentTypeResolveState {\n isLoaded: boolean\n documentType: string | undefined\n}\n\nconst LOADING_STATE: DocumentTypeResolveState = {\n isLoaded: false,\n documentType: undefined,\n}\n\n/** @internal */\nexport function useDocumentType(documentId: string, specifiedType = '*'): DocumentTypeResolveState {\n const documentStore = useDocumentStore()\n const publishedId = getPublishedId(documentId)\n const isResolved = Boolean(specifiedType && specifiedType !== '*')\n\n // Memoize what a synchronously resolved state looks like (eg specified type is present),\n // in order to return the same object each time. Note that this can be \"incorrect\", but\n // that we won't be returning it in that case, eg: `{documentType: '*', isResolved: true}\n const SYNC_RESOLVED_STATE = useMemo(\n () => ({documentType: specifiedType, isLoaded: true}),\n [specifiedType],\n )\n\n // Set up our state that we'll only use when we need to reach out to the API to find\n // the document type for a given document. Otherwise we'll be using SYNC_RESOLVED_STATE.\n // For consistency (between different document ids/types), we're setting the sync resolved\n // state here as well, but it isn't strictly necessary for correct rendering.\n const [resolvedState, setDocumentType] = useState<DocumentTypeResolveState>(\n isResolved ? SYNC_RESOLVED_STATE : LOADING_STATE,\n )\n\n // Reset documentType when documentId changes. Note that we're using the referentially\n // stable LOADING_STATE in order to prevent double rendering on initial load.\n useEffect(() => setDocumentType(LOADING_STATE), [publishedId, specifiedType])\n\n // Load the documentType from Content Lake, unless we're already in a resolved state\n useEffect(() => {\n if (isResolved) {\n return undefined\n }\n\n const sub = documentStore\n .resolveTypeForDocument(publishedId, specifiedType)\n .subscribe((documentType: string) => setDocumentType({documentType, isLoaded: true}))\n\n return () => sub.unsubscribe()\n }, [documentStore, publishedId, specifiedType, isResolved])\n\n return isResolved\n ? // `isResolved` is only true when we're _synchronously_ resolved\n SYNC_RESOLVED_STATE\n : // Using the document type resolved from the API\n resolvedState\n}\n","import {ObjectDiff} from '@sanity/diff'\nimport {useEffect, useMemo, useRef} from 'react'\nimport deepEquals from 'react-fast-compare'\nimport {BehaviorSubject, catchError, distinctUntilChanged, map, of, Subscription, tap} from 'rxjs'\nimport {Annotation, Chunk, SelectionState, TimelineController, useHistoryStore} from '../../..'\nimport {useClient} from '../../../hooks'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS} from '../../../studioClient'\nimport {remoteSnapshots, RemoteSnapshotVersionEvent} from '../document'\n\ninterface UseTimelineControllerOpts {\n documentId: string\n documentType: string\n onError?: (err: Error) => void\n rev?: string\n since?: string\n}\n\n/** @internal */\nexport interface TimelineState {\n chunks: Chunk[]\n diff: ObjectDiff<Annotation, Record<string, any>> | null\n /** null is used here when the chunks hasn't loaded / is not known */\n hasMoreChunks: boolean | null\n isLoading: boolean\n /**\n * Whether this timeline is fully loaded and completely empty (true for new documents)\n * It can be `null` when the chunks hasn't loaded / is not known\n */\n isPristine: boolean | null\n lastNonDeletedRevId: string | null\n onOlderRevision: boolean\n realRevChunk: Chunk | null\n revTime: Chunk | null\n selectionState: SelectionState\n sinceAttributes: Record<string, unknown> | null\n sinceTime: Chunk | null\n timelineDisplayed: Record<string, unknown> | null\n timelineReady: boolean\n}\n\nconst INITIAL_TIMELINE_STATE: TimelineState = {\n chunks: [],\n diff: null,\n hasMoreChunks: null,\n isLoading: false,\n isPristine: null,\n lastNonDeletedRevId: null,\n onOlderRevision: false,\n realRevChunk: null,\n revTime: null,\n selectionState: 'inactive',\n sinceAttributes: null,\n sinceTime: null,\n timelineDisplayed: null,\n timelineReady: false,\n}\n\n/** @internal */\nexport interface TimelineStore {\n findRangeForRev: TimelineController['findRangeForNewRev']\n findRangeForSince: TimelineController['findRangeForNewSince']\n loadMore: () => void\n getSnapshot: () => TimelineState\n subscribe: (callback: () => void) => () => void\n}\n\n/**\n * Creates a store which handles the creation of a document Timeline,\n * TimelineController and also fetches pre-requisite document snapshots.\n *\n * `TimelineStore` exposes select TimelineController methods used to query\n * ranges and fetch more transactions. It can also be used with\n * `useSyncExternalStore` to subscribe to selected state changes.\n *\n * @internal\n * */\nexport function useTimelineStore({\n documentId,\n documentType,\n onError,\n rev,\n since,\n}: UseTimelineControllerOpts): TimelineStore {\n const historyStore = useHistoryStore()\n const snapshotsSubscriptionRef = useRef<Subscription | null>(null)\n const timelineStateRef = useRef<TimelineState>(INITIAL_TIMELINE_STATE)\n const client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n\n /**\n * The mutable TimelineController, used internally\n */\n const controller = useMemo(\n () =>\n historyStore.getTimelineController({\n client,\n documentId,\n documentType,\n }),\n [client, documentId, documentType, historyStore],\n )\n\n /**\n * A BehaviorSubject which can be subscribed by multiple observers, which broadcasts\n * the the latest state of the (mutable) TimelineController.\n */\n const timelineController$ = useMemo(\n () => new BehaviorSubject<TimelineController>(controller),\n [controller],\n )\n\n /**\n * Broadcasts the updated state on TimelineController's `handler` updates (as well as on mount / unmount).\n *\n * Note that TimelineController triggers updates very frequently when fetching transactions, which it does so\n * in fairly small batches.\n *\n * This will also suspend TimelineController transaction fetching on cleanup, ensuring that fetches don't\n * continue once the document pane has been closed.\n */\n useEffect(() => {\n controller.setRange(since || null, rev || null)\n timelineController$.next(controller)\n\n controller.handler = (err, innerController) => {\n if (err) {\n timelineController$.error(err)\n } else {\n /**\n * NOTE: TimelineController requires that you call `setRange` manually whenever its internal\n * timeline has changed (e.g. has a result of fetched transactions).\n * Ideally, TimelineController would be updated to handle this automatically for us.\n * Until then, this workaround waits until the next call stack before calling `setRange`.\n */\n setTimeout(() => {\n innerController.setRange(since || null, rev || null)\n timelineController$.next(innerController)\n }, 0)\n }\n }\n controller.resume()\n return () => controller.suspend()\n }, [rev, since, controller, timelineController$])\n\n /**\n * Fetch document snapshots and update the mutable controller.\n * Unsubscribes on clean up, preventing double fetches in strict mode.\n */\n useEffect(() => {\n if (!snapshotsSubscriptionRef.current) {\n snapshotsSubscriptionRef.current = remoteSnapshots(\n client,\n {draftId: `drafts.${documentId}`, publishedId: documentId},\n documentType,\n ).subscribe((ev: RemoteSnapshotVersionEvent) => {\n controller.handleRemoteMutation(ev)\n })\n }\n return () => {\n if (snapshotsSubscriptionRef.current) {\n snapshotsSubscriptionRef.current.unsubscribe()\n snapshotsSubscriptionRef.current = null\n }\n }\n }, [client, controller, documentId, documentType])\n\n const timelineStore = useMemo(() => {\n return {\n findRangeForRev: (chunk: Chunk) => controller.findRangeForNewRev(chunk),\n findRangeForSince: (chunk: Chunk) => controller.findRangeForNewSince(chunk),\n loadMore: () => {\n controller.setLoadMore(true)\n timelineStateRef.current.isLoading = true\n },\n getSnapshot: () => timelineStateRef.current,\n subscribe: (callback: () => void) => {\n const subscription = timelineController$\n .pipe(\n // Manually stop loading transactions in TimelineController, otherwise transaction history\n // will continue to be fetched – even if unwanted.\n tap((innerController) => innerController.setLoadMore(false)),\n map((innerController) => {\n const chunks = innerController.timeline.mapChunks((c) => c)\n const lastNonDeletedChunk = chunks.filter(\n (chunk) => !['delete', 'initial'].includes(chunk.type),\n )\n const hasMoreChunks = !innerController.timeline.reachedEarliestEntry\n const timelineReady = !['invalid', 'loading'].includes(innerController.selectionState)\n return {\n chunks,\n diff: innerController.sinceTime ? innerController.currentObjectDiff() : null,\n isLoading: false,\n isPristine: timelineReady ? chunks.length === 0 && hasMoreChunks === false : null,\n hasMoreChunks: !innerController.timeline.reachedEarliestEntry,\n lastNonDeletedRevId: lastNonDeletedChunk?.[0]?.id,\n onOlderRevision: innerController.onOlderRevision(),\n realRevChunk: innerController.realRevChunk,\n revTime: innerController.revTime,\n selectionState: innerController.selectionState,\n sinceAttributes: innerController.sinceAttributes(),\n sinceTime: innerController.sinceTime,\n timelineDisplayed: innerController.displayed(),\n timelineReady,\n }\n }),\n // Only emit (and in turn, re-render) when values have changed\n distinctUntilChanged(deepEquals),\n // Emit initial timeline state whenever we encounter an error in TimelineController's `handler` callback.\n // A little ham-fisted, but also reflects how we handle timeline errors in the UI\n // (i.e. no timeline state or diffs are rendered and we revert to the current editable document)\n catchError((err) => {\n onError?.(err)\n return of(INITIAL_TIMELINE_STATE)\n }),\n tap((timelineState) => {\n timelineStateRef.current = timelineState\n }),\n // Trigger callback function required by `useSyncExternalStore` to denote when to re-render\n tap(callback),\n )\n .subscribe()\n\n return () => subscription.unsubscribe()\n },\n }\n }, [controller, onError, timelineController$])\n\n return timelineStore\n}\n","import {useSyncExternalStoreWithSelector} from 'use-sync-external-store/with-selector'\nimport {TimelineState, TimelineStore} from './useTimelineStore'\n\n/**\n * Custom hook which wraps around `useSyncExternalStore`.\n * Accepts a selector function which can be used to opt-in to specific timelineStore updates.\n *\n * @internal\n */\nexport function useTimelineSelector<ReturnValue>(\n timelineStore: TimelineStore,\n selector: (timelineState: TimelineState) => ReturnValue,\n): ReturnValue {\n return useSyncExternalStoreWithSelector(\n timelineStore.subscribe,\n timelineStore.getSnapshot,\n null,\n selector,\n )\n}\n","import {useEffect, useState} from 'react'\nimport {useProjectStore} from '../datastores'\nimport {ProjectData} from './types'\n\n/** @internal */\nexport function useProject(): {value: ProjectData | null} {\n const projectStore = useProjectStore()\n const [value, setValue] = useState<ProjectData | null>(null)\n\n useEffect(() => {\n const project$ = projectStore.get()\n const sub = project$.subscribe(setValue)\n\n return () => sub.unsubscribe()\n }, [projectStore])\n\n return {value}\n}\n","import {useEffect, useState} from 'react'\nimport {useProjectStore} from '../datastores'\nimport {ProjectDatasetData} from './types'\n\n/** @internal */\nexport function useProjectDatasets(): {value: ProjectDatasetData[] | null} {\n const projectStore = useProjectStore()\n const [value, setValue] = useState<ProjectDatasetData[] | null>(null)\n\n useEffect(() => {\n const project$ = projectStore.getDatasets()\n const sub = project$.subscribe(setValue)\n\n return () => sub.unsubscribe()\n }, [projectStore])\n\n return {value}\n}\n","import {combineLatest, firstValueFrom, Observable} from 'rxjs'\nimport {map} from 'rxjs/operators'\nimport {CurrentUser} from '@sanity/types'\nimport {SanityClient} from '@sanity/client'\nimport {createMockAuthStore} from '../store'\nimport {Config, SingleWorkspace, Source, Workspace, SchemaPluginOptions} from './types'\nimport {prepareConfig} from './prepareConfig'\n\n/**\n * Fully resolves a configuration including subscribing to all sources and\n * workspaces from a config. Returns an `Observable` that waits till all sources\n * emit once before emitting an array of fully resolved sources and workspaces.\n *\n * @internal\n */\nexport function resolveConfig(config: Config): Observable<Workspace[]> {\n const {workspaces} = prepareConfig(config)\n\n return combineLatest(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n workspaces.flatMap((workspaceSummary) =>\n combineLatest(workspaceSummary.__internal.sources.map(({source}) => source)).pipe(\n map(\n (sources): Workspace => ({\n ...workspaceSummary,\n ...sources[0],\n unstable_sources: sources,\n type: 'workspace',\n }),\n ),\n ),\n ),\n )\n}\n\n/** @internal */\nexport type CreateWorkspaceFromConfigOptions =\n | SingleWorkspace\n | (SingleWorkspace & {\n currentUser: CurrentUser\n getClient: (options: {apiVersion: string}) => SanityClient\n schema?: SchemaPluginOptions\n })\n\n/**\n * PRIMARILY FOR TESTING PURPOSES.\n *\n * This will create a fully resolved workspace from a config and optionally\n * allows a `client` and `currentUser` override. This exists primarily for\n * testing purposes. If you need to use a workspace, we recommend using the\n * `useWorkspace` hook to grab the fully resolved workspace from the\n * `StudioProvider`\n *\n * @internal\n */\nexport async function createWorkspaceFromConfig(\n options: CreateWorkspaceFromConfigOptions,\n): Promise<Workspace> {\n const client = 'getClient' in options ? options.getClient({apiVersion: '2023-11-13'}) : undefined\n const [workspace] = await firstValueFrom(\n resolveConfig({\n ...options,\n ...(client &&\n 'currentUser' in options && {\n auth: createMockAuthStore({...options, client}),\n }),\n }),\n )\n\n return workspace\n}\n\n/**\n * PRIMARILY FOR TESTING PURPOSES.\n *\n * This will create a fully resolved source from a config and optionally\n * allows a `client` and `currentUser` override. This exists primarily for\n * testing purposes. If you need to use a source, we recommend using the\n * `useSource` hook to grab the fully resolved source from the `StudioProvider`\n *\n * @internal\n */\nexport async function createSourceFromConfig(\n options: CreateWorkspaceFromConfigOptions,\n): Promise<Source> {\n const workspace = await createWorkspaceFromConfig(options)\n return workspace.unstable_sources[0]\n}\n","import {useMemo} from 'react'\nimport type {Source, ConfigContext} from './types'\n\n/**\n * Reduce a {@link Source} down to a {@link ConfigContext}, memoizing using `React.useMemo`\n *\n * @param source - Source to convert\n * @returns A config context containing only the defined properties of that interface\n * @internal\n */\nexport function useConfigContextFromSource(source: Source): ConfigContext {\n const {projectId, dataset, schema, currentUser, getClient, i18n} = source\n return useMemo(() => {\n return {projectId, dataset, schema, currentUser, getClient, i18n}\n }, [projectId, dataset, schema, currentUser, getClient, i18n])\n}\n\n/**\n * Reduce a {@link Source} down to a {@link ConfigContext}, without memoization - use for non-react contexts\n *\n * @param source - Source to convert\n * @returns A config context containing only the defined properties of that interface\n * @internal\n */\nexport function getConfigContextFromSource(source: Source): ConfigContext {\n const {projectId, dataset, schema, currentUser, getClient, i18n} = source\n return {projectId, dataset, schema, currentUser, getClient, i18n}\n}\n","import {parseColor, rgbToHex, screen, multiply} from '@sanity/ui/theme'\nimport {getLuminance, mix, parseToRgb, rgb} from 'polished'\nimport {LegacyThemeTints} from './types'\n\n/**\n * @internal\n */\nexport function _buildTints(bg: string, mid: string, fg: string): LegacyThemeTints {\n return {\n 50: mix(0.1, mid, bg),\n 100: mix(0.2, mid, bg),\n 200: mix(0.4, mid, bg),\n 300: mix(0.6, mid, bg),\n 400: mix(0.8, mid, bg),\n 500: mid,\n 600: mix(0.8, mid, fg),\n 700: mix(0.6, mid, fg),\n 800: mix(0.4, mid, fg),\n 900: mix(0.2, mid, fg),\n 950: mix(0.1, mid, fg),\n }\n}\n\n/**\n * @internal\n */\nexport function _toHex(color: string): string {\n const {red, green, blue} = parseToRgb(color)\n return rgb(red, green, blue)\n}\n\n/**\n * @internal\n */\nexport function _isDark(bg: string, fg: string): boolean {\n return getLuminance(bg) < getLuminance(fg)\n}\n\n/**\n * Blend two colors using the \"screen\" blend mode\n * @internal\n */\nexport function _multiply(bg: string, fg: string): string {\n const b = parseColor(bg)\n const s = parseColor(fg)\n const hex = rgbToHex(multiply(b, s))\n\n return hex\n}\n\n/**\n * Blend two colors using the \"screen\" blend mode\n * @internal\n */\nexport function _screen(bg: string, fg: string): string {\n const b = parseColor(bg)\n const s = parseColor(fg)\n const hex = rgbToHex(screen(b, s))\n\n return hex\n}\n","import {hues} from '@sanity/color'\nimport {createColorTheme, rgba, ThemeColorSchemes} from '@sanity/ui/theme'\nimport {_multiply, _screen, _isDark} from './helpers'\nimport {LegacyPalette} from './palette'\nimport {LegacyTones} from './tones'\nimport {LegacyThemeTints} from './types'\n\nconst NEUTRAL_TONES = ['default', 'transparent']\n\nexport function buildColor(\n legacyPalette: LegacyPalette,\n legacyTones: LegacyTones,\n): ThemeColorSchemes {\n return createColorTheme({\n base: ({dark: navbar, name}) => {\n const stateTones = navbar ? legacyTones.state.navbar : legacyTones.state.default\n const dark = stateTones.dark\n const blend = navbar ? _screen : _multiply\n const tints = stateTones[name] || stateTones.default\n\n if (name === 'default') {\n const skeletonFrom = stateTones.default[100]\n\n return {\n fg: stateTones.fg,\n bg: stateTones.bg,\n border: stateTones.default[200],\n focusRing: legacyPalette.focus.base,\n shadow: {\n outline: rgba(stateTones.default[500], 0.4),\n umbra: rgba(dark ? legacyPalette.black : stateTones.default[500], 0.2),\n penumbra: rgba(dark ? legacyPalette.black : stateTones.default[500], 0.14),\n ambient: rgba(dark ? legacyPalette.black : stateTones.default[500], 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (name === 'transparent') {\n const bg = tints[50]\n const skeletonFrom = blend(bg, tints[100])\n\n return {\n fg: tints[900],\n bg,\n border: tints[300],\n focusRing: legacyPalette.focus.base,\n shadow: {\n outline: rgba(tints[500], dark ? 0.2 : 0.4),\n umbra: rgba(dark ? legacyPalette.black : tints[500], 0.2),\n penumbra: rgba(dark ? legacyPalette.black : tints[500], 0.14),\n ambient: rgba(dark ? legacyPalette.black : tints[500], 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n const bg = tints[50]\n const skeletonFrom = blend(bg, tints[100])\n\n return {\n fg: tints[900],\n bg,\n border: tints[200],\n focusRing: tints[500],\n shadow: {\n outline: rgba(tints[500], dark ? 0.2 : 0.4),\n umbra: rgba(dark ? legacyPalette.black : tints[500], 0.2),\n penumbra: rgba(dark ? legacyPalette.black : tints[500], 0.14),\n ambient: rgba(dark ? legacyPalette.black : tints[500], 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n solid: ({base, dark: navbar, name, state, tone}) => {\n const buttonTones = navbar ? legacyTones.button.navbar : legacyTones.button.default\n const dark = buttonTones.dark\n const blend = dark ? _screen : _multiply\n const blendInvert = dark ? _multiply : _screen\n const defaultTints = buttonTones[name] || buttonTones.default\n const isNeutral = NEUTRAL_TONES.includes(name) && NEUTRAL_TONES.includes(tone)\n let tints = buttonTones[tone === 'default' ? name : tone] || defaultTints\n\n if (state === 'disabled') {\n tints = defaultTints\n\n const bg = blend(base.bg, tints[200])\n const skeletonFrom = blendInvert(bg, tints[800])\n\n return {\n bg,\n border: blend(base.bg, tints[200]),\n fg: blend(base.bg, buttonTones.bg),\n icon: blend(base.bg, buttonTones.bg),\n muted: {\n fg: blend(base.bg, tints[50]),\n },\n accent: {\n fg: blend(base.bg, tints[50]),\n },\n link: {\n fg: blend(base.bg, tints[50]),\n },\n code: {\n bg,\n fg: blend(base.bg, tints[50]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'hovered') {\n const bg = blend(base.bg, tints[600])\n const skeletonFrom = blendInvert(bg, tints[800])\n\n return {\n bg,\n border: blend(base.bg, tints[600]),\n fg: blend(base.bg, buttonTones.bg),\n icon: blend(base.bg, buttonTones.bg),\n muted: {\n fg: blend(base.bg, tints[200]),\n },\n accent: {\n fg: blendInvert(bg, buttonTones.critical[300]),\n },\n link: {\n fg: blendInvert(bg, buttonTones.primary[200]),\n },\n code: {\n bg: blend(bg, tints[50]),\n fg: blend(base.bg, tints[200]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'pressed') {\n const bg = blend(base.bg, tints[800])\n const skeletonFrom = blendInvert(bg, tints[800])\n\n return {\n bg,\n border: blend(base.bg, tints[800]),\n fg: blend(base.bg, buttonTones.bg),\n icon: blend(base.bg, buttonTones.bg),\n muted: {\n fg: blend(base.bg, tints[200]),\n },\n accent: {\n fg: blendInvert(bg, buttonTones.critical[300]),\n },\n link: {\n fg: blendInvert(bg, buttonTones.primary[200]),\n },\n code: {\n bg: blend(bg, tints[50]),\n fg: blend(base.bg, tints[200]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n tints = buttonTones.primary\n }\n\n const bg = blend(base.bg, tints[800])\n const skeletonFrom = blendInvert(bg, tints[800])\n\n return {\n bg,\n border: blend(base.bg, tints[800]),\n fg: blend(base.bg, buttonTones.bg),\n icon: blend(base.bg, buttonTones.bg),\n muted: {\n fg: blend(base.bg, tints[200]),\n },\n accent: {\n fg: blendInvert(bg, buttonTones.critical[300]),\n },\n link: {\n fg: blendInvert(bg, buttonTones.primary[200]),\n },\n code: {\n bg: blend(bg, tints[50]),\n fg: blend(base.bg, tints[200]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n const bg = blend(base.bg, tints[500])\n const skeletonFrom = blendInvert(bg, tints[800])\n\n return {\n bg,\n border: blend(base.bg, tints[500]),\n fg: blend(base.bg, buttonTones.bg),\n icon: blend(base.bg, buttonTones.bg),\n muted: {\n fg: blend(base.bg, tints[100]),\n },\n accent: {\n fg: blendInvert(bg, buttonTones.critical[200]),\n },\n link: {\n fg: blendInvert(bg, buttonTones.primary[100]),\n },\n code: {\n bg: blend(bg, tints[50]),\n fg: blend(base.bg, tints[100]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n muted: ({base, dark: navbar, name, state, tone}) => {\n const stateTones = navbar ? legacyTones.state.navbar : legacyTones.state.default\n const dark = stateTones.dark\n const blend = dark ? _screen : _multiply\n const defaultTints = stateTones[name] || stateTones.default\n const isNeutral = NEUTRAL_TONES.includes(name) && NEUTRAL_TONES.includes(tone)\n\n let tints: LegacyThemeTints = stateTones[tone === 'default' ? name : tone] || defaultTints\n\n if (state === 'disabled') {\n tints = defaultTints\n\n const bg = base.bg\n const skeletonFrom = blend(bg, tints[100])\n\n return {\n bg,\n border: blend(base.bg, tints[50]),\n fg: blend(base.bg, tints[200]),\n icon: blend(base.bg, tints[200]),\n muted: {\n fg: blend(bg, tints[100]),\n },\n accent: {\n fg: blend(bg, tints[100]),\n },\n link: {\n fg: blend(bg, tints[100]),\n },\n code: {\n bg,\n fg: blend(bg, tints[100]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'hovered') {\n const bg = blend(base.bg, tints[50])\n const skeletonFrom = blend(bg, tints[100])\n\n return {\n bg,\n border: blend(bg, tints[100]),\n fg: blend(base.bg, tints[900]),\n icon: blend(base.bg, tints[900]),\n muted: {\n fg: blend(base.bg, tints[600]),\n },\n accent: {\n fg: blend(base.bg, stateTones.critical[500]),\n },\n link: {\n fg: blend(base.bg, stateTones.primary[600]),\n },\n code: {\n bg: blend(bg, tints[50]),\n fg: blend(base.bg, tints[600]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'pressed') {\n if (isNeutral) {\n tints = stateTones.primary\n }\n\n const bg = blend(base.bg, tints[100])\n const skeletonFrom = blend(bg, tints[100])\n\n return {\n bg,\n border: blend(bg, tints[100]),\n fg: blend(base.bg, tints[800]),\n icon: blend(base.bg, tints[800]),\n muted: {\n fg: blend(base.bg, tints[600]),\n },\n accent: {\n fg: blend(bg, stateTones.critical[500]),\n },\n link: {\n fg: blend(bg, stateTones.primary[600]),\n },\n code: {\n bg: blend(bg, tints[50]),\n fg: blend(bg, tints[600]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n tints = stateTones.primary\n }\n\n const bg = blend(base.bg, tints[100])\n const skeletonFrom = blend(bg, tints[100])\n\n return {\n bg,\n border: blend(bg, tints[100]),\n fg: blend(bg, tints[800]),\n icon: blend(bg, tints[800]),\n muted: {\n fg: blend(bg, tints[600]),\n },\n accent: {\n fg: blend(bg, stateTones.critical[500]),\n },\n link: {\n fg: blend(bg, stateTones.primary[600]),\n },\n code: {\n bg: blend(bg, tints[50]),\n fg: blend(bg, tints[600]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n const bg = base.bg\n const skeletonFrom = blend(base.bg, tints[100])\n\n return {\n bg,\n border: blend(bg, tints[100]),\n fg: blend(bg, tints[700]),\n icon: blend(bg, tints[700]),\n muted: {\n fg: blend(bg, tints[600]),\n },\n accent: {\n fg: blend(bg, stateTones.critical[500]),\n },\n link: {\n fg: blend(bg, stateTones.primary[600]),\n },\n code: {\n bg: blend(bg, tints[50]),\n fg: blend(bg, tints[600]),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n button: ({base, mode, muted, solid}) => {\n if (mode === 'bleed') {\n return {\n enabled: {\n ...muted.enabled,\n border: muted.enabled.bg,\n },\n hovered: {\n ...muted.hovered,\n border: muted.hovered.bg,\n },\n pressed: {\n ...muted.pressed,\n border: muted.pressed.bg,\n },\n selected: {\n ...muted.selected,\n border: muted.selected.bg,\n },\n disabled: {\n ...muted.disabled,\n border: muted.disabled.bg,\n },\n }\n }\n\n if (mode === 'ghost') {\n return {\n ...solid,\n enabled: {\n ...muted.enabled,\n border: base.border,\n },\n disabled: muted.disabled,\n }\n }\n\n return solid\n },\n\n card: ({base, dark: navbar, muted, name, solid, state}) => {\n if (state === 'hovered') {\n return muted[name].hovered\n }\n\n if (state === 'disabled') {\n return muted[name].disabled\n }\n\n const isNeutral = NEUTRAL_TONES.includes(name)\n const stateTones = navbar ? legacyTones.state.navbar : legacyTones.state.default\n const tints: LegacyThemeTints = stateTones[name] || stateTones.default\n\n const dark = stateTones.dark\n const blend = dark ? _screen : _multiply\n\n if (state === 'pressed') {\n if (isNeutral) {\n return muted.primary.pressed\n }\n\n return muted[name].pressed\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n return solid.primary.enabled\n }\n\n return solid[name].enabled\n }\n\n const bg = base.bg\n const skeletonFrom = blend(base.bg, tints[dark ? 900 : 100])\n\n return {\n bg,\n fg: base.fg,\n icon: base.fg,\n border: base.border,\n muted: {\n fg: blend(base.bg, tints[dark ? 400 : 600]),\n },\n accent: {\n fg: blend(base.bg, stateTones.critical[dark ? 400 : 500]),\n },\n link: {\n fg: blend(base.bg, stateTones.primary[dark ? 400 : 600]),\n },\n code: {\n bg: blend(base.bg, tints[dark ? 950 : 50]),\n fg: tints[dark ? 400 : 600],\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n input: ({base, dark: navbar, mode, state}) => {\n const stateTones = navbar ? legacyTones.state.navbar : legacyTones.state.default\n const dark = stateTones.dark\n const blend = dark ? _screen : _multiply\n\n if (mode === 'invalid') {\n const tints = stateTones.critical\n\n return {\n bg: blend(base.bg, tints[50]),\n bg2: blend(base.bg, tints[50]),\n fg: blend(base.bg, tints[700]),\n border: blend(base.bg, tints[200]),\n placeholder: blend(base.bg, tints[400]),\n }\n }\n\n if (state === 'hovered') {\n return {\n bg: base.bg,\n bg2: base.bg,\n fg: base.fg,\n border: blend(base.bg, hues.gray[300].hex),\n placeholder: blend(base.bg, hues.gray[400].hex),\n }\n }\n\n if (state === 'disabled') {\n return {\n bg: blend(base.bg, hues.gray[50].hex),\n bg2: blend(base.bg, hues.gray[50].hex),\n fg: blend(base.bg, hues.gray[200].hex),\n border: blend(base.bg, hues.gray[100].hex),\n placeholder: blend(base.bg, hues.gray[100].hex),\n }\n }\n\n if (state === 'readOnly') {\n return {\n bg: blend(base.bg, hues.gray[50].hex),\n bg2: blend(base.bg, hues.gray[50].hex),\n fg: blend(base.bg, hues.gray[800].hex),\n border: blend(base.bg, hues.gray[200].hex),\n placeholder: blend(base.bg, hues.gray[400].hex),\n }\n }\n\n return {\n bg: base.bg,\n bg2: base.bg,\n fg: base.fg,\n border: base.border,\n placeholder: blend(base.bg, hues.gray[700].hex),\n }\n },\n\n selectable: ({base, muted, tone, solid, state}) => {\n if (state === 'enabled') {\n return {\n ...muted[tone].enabled,\n bg: base.bg,\n }\n }\n\n if (state === 'pressed') {\n if (tone === 'default') {\n return muted.primary.pressed\n }\n\n return muted[tone].pressed\n }\n\n if (state === 'selected') {\n if (tone === 'default') {\n return solid.primary.enabled\n }\n\n return solid[tone].enabled\n }\n\n if (state === 'disabled') {\n return {\n ...muted[tone].disabled,\n bg: base.bg,\n }\n }\n\n return muted[tone][state]\n },\n\n spot: ({base, key}) => {\n const dark = _isDark(base.bg, base.fg)\n const blend = dark ? _screen : _multiply\n\n return blend(base.bg, hues[key][dark ? 400 : 500].hex)\n },\n\n syntax: ({base, dark: navbar}) => {\n const stateTones = navbar ? legacyTones.state.navbar : legacyTones.state.default\n const dark = stateTones.dark\n const blend = dark ? _screen : _multiply\n const mainShade = 600\n const secondaryShade = 400\n\n return {\n atrule: blend(base.bg, hues.purple[mainShade].hex),\n attrName: blend(base.bg, stateTones.positive[mainShade]),\n attrValue: blend(base.bg, stateTones.caution[mainShade]),\n attribute: blend(base.bg, stateTones.caution[mainShade]),\n boolean: blend(base.bg, hues.purple[mainShade].hex),\n builtin: blend(base.bg, hues.purple[mainShade].hex),\n cdata: blend(base.bg, stateTones.caution[mainShade]),\n char: blend(base.bg, stateTones.caution[mainShade]),\n class: blend(base.bg, hues.orange[mainShade].hex),\n className: blend(base.bg, hues.cyan[mainShade].hex),\n comment: blend(base.bg, stateTones.default[secondaryShade]),\n constant: blend(base.bg, hues.purple[mainShade].hex),\n deleted: blend(base.bg, stateTones.critical[mainShade]),\n doctype: blend(base.bg, stateTones.default[secondaryShade]),\n entity: blend(base.bg, stateTones.critical[mainShade]),\n function: blend(base.bg, stateTones.positive[mainShade]),\n hexcode: blend(base.bg, stateTones.primary[mainShade]),\n id: blend(base.bg, hues.purple[mainShade].hex),\n important: blend(base.bg, hues.purple[mainShade].hex),\n inserted: blend(base.bg, stateTones.caution[mainShade]),\n keyword: blend(base.bg, hues.magenta[mainShade].hex),\n number: blend(base.bg, hues.purple[mainShade].hex),\n operator: blend(base.bg, hues.magenta[mainShade].hex),\n prolog: blend(base.bg, stateTones.default[secondaryShade]),\n property: blend(base.bg, stateTones.primary[mainShade]),\n pseudoClass: blend(base.bg, stateTones.caution[mainShade]),\n pseudoElement: blend(base.bg, stateTones.caution[mainShade]),\n punctuation: blend(base.bg, stateTones.default[mainShade]),\n regex: blend(base.bg, stateTones.primary[mainShade]),\n selector: blend(base.bg, stateTones.critical[mainShade]),\n string: blend(base.bg, stateTones.caution[mainShade]),\n symbol: blend(base.bg, hues.purple[mainShade].hex),\n tag: blend(base.bg, stateTones.critical[mainShade]),\n unit: blend(base.bg, hues.orange[mainShade].hex),\n url: blend(base.bg, stateTones.critical[mainShade]),\n variable: blend(base.bg, stateTones.critical[mainShade]),\n }\n },\n })\n}\n","import {studioTheme as defaults, ThemeFonts} from '@sanity/ui'\nimport {LegacyThemeProps} from './types'\n\nexport function buildFonts(cssCustomProperties: LegacyThemeProps): ThemeFonts {\n return {\n ...defaults.fonts,\n code: {\n ...defaults.fonts.code,\n family: cssCustomProperties['--font-family-monospace'] || defaults.fonts.code.family,\n },\n heading: {\n ...defaults.fonts.heading,\n family: cssCustomProperties['--font-family-base'] || defaults.fonts.code.family,\n },\n label: {\n ...defaults.fonts.label,\n family: cssCustomProperties['--font-family-base'] || defaults.fonts.code.family,\n },\n text: {\n ...defaults.fonts.text,\n family: cssCustomProperties['--font-family-base'] || defaults.fonts.code.family,\n },\n }\n}\n","import {_toHex} from './helpers'\nimport {LegacyThemeProps} from './types'\n\nexport interface LegacyPalette {\n black: string\n component: {\n bg: string\n fg: string\n }\n defaultButton: {\n default: {\n base: string\n }\n primary: {\n base: string\n }\n success: {\n base: string\n }\n warning: {\n base: string\n }\n danger: {\n base: string\n }\n }\n focus: {\n base: string\n }\n gray: {\n base: string\n }\n mainNavigation: {\n bg: string\n fg: string\n }\n state: {\n info: {\n fg: string\n }\n success: {\n fg: string\n }\n warning: {\n fg: string\n }\n danger: {\n fg: string\n }\n }\n}\n\nexport function buildLegacyPalette(cssCustomProperties: LegacyThemeProps): LegacyPalette {\n return {\n black: _toHex(cssCustomProperties['--black']),\n component: {\n bg: _toHex(cssCustomProperties['--component-bg']),\n fg: _toHex(cssCustomProperties['--component-text-color']),\n },\n defaultButton: {\n default: {\n base: _toHex(cssCustomProperties['--default-button-color']),\n },\n primary: {\n base: _toHex(cssCustomProperties['--default-button-primary-color']),\n },\n success: {\n base: _toHex(cssCustomProperties['--default-button-success-color']),\n },\n warning: {\n base: _toHex(cssCustomProperties['--default-button-warning-color']),\n },\n danger: {\n base: _toHex(cssCustomProperties['--default-button-danger-color']),\n },\n },\n focus: {\n base: _toHex(cssCustomProperties['--focus-color']),\n },\n gray: {\n base: _toHex(cssCustomProperties['--gray-base']),\n },\n mainNavigation: {\n bg: _toHex(cssCustomProperties['--main-navigation-color']),\n fg: _toHex(cssCustomProperties['--main-navigation-color--inverted']),\n },\n state: {\n info: {\n fg: _toHex(cssCustomProperties['--state-info-color']),\n },\n success: {\n fg: _toHex(cssCustomProperties['--state-success-color']),\n },\n warning: {\n fg: _toHex(cssCustomProperties['--state-warning-color']),\n },\n danger: {\n fg: _toHex(cssCustomProperties['--state-danger-color']),\n },\n },\n }\n}\n","import {_buildTints, _isDark} from './helpers'\nimport {LegacyThemeTints} from './types'\nimport {LegacyPalette} from './palette'\n\nexport interface LegacyTones {\n button: {\n default: {\n bg: string\n fg: string\n dark: boolean\n\n default: LegacyThemeTints\n transparent: LegacyThemeTints\n primary: LegacyThemeTints\n positive: LegacyThemeTints\n caution: LegacyThemeTints\n critical: LegacyThemeTints\n }\n\n navbar: {\n bg: string\n fg: string\n dark: boolean\n\n default: LegacyThemeTints\n transparent: LegacyThemeTints\n primary: LegacyThemeTints\n positive: LegacyThemeTints\n caution: LegacyThemeTints\n critical: LegacyThemeTints\n }\n }\n\n state: {\n default: {\n bg: string\n fg: string\n dark: boolean\n\n default: LegacyThemeTints\n transparent: LegacyThemeTints\n primary: LegacyThemeTints\n positive: LegacyThemeTints\n caution: LegacyThemeTints\n critical: LegacyThemeTints\n }\n\n navbar: {\n bg: string\n fg: string\n dark: boolean\n\n default: LegacyThemeTints\n transparent: LegacyThemeTints\n primary: LegacyThemeTints\n positive: LegacyThemeTints\n caution: LegacyThemeTints\n critical: LegacyThemeTints\n }\n }\n}\n\nexport function buildLegacyTones(legacyPalette: LegacyPalette): LegacyTones {\n return {\n state: {\n default: {\n bg: legacyPalette.component.bg,\n fg: legacyPalette.component.fg,\n dark: _isDark(legacyPalette.component.bg, legacyPalette.component.fg),\n default: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.gray.base,\n legacyPalette.component.fg,\n ),\n transparent: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.gray.base,\n legacyPalette.component.fg,\n ),\n primary: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.state.info.fg,\n legacyPalette.component.fg,\n ),\n positive: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.state.success.fg,\n legacyPalette.component.fg,\n ),\n caution: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.state.warning.fg,\n legacyPalette.component.fg,\n ),\n critical: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.state.danger.fg,\n legacyPalette.component.fg,\n ),\n },\n navbar: {\n bg: legacyPalette.mainNavigation.bg,\n fg: legacyPalette.mainNavigation.fg,\n dark: _isDark(legacyPalette.mainNavigation.bg, legacyPalette.mainNavigation.fg),\n\n default: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.gray.base,\n legacyPalette.mainNavigation.fg,\n ),\n transparent: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.gray.base,\n legacyPalette.mainNavigation.fg,\n ),\n primary: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.state.info.fg,\n legacyPalette.mainNavigation.fg,\n ),\n positive: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.state.success.fg,\n legacyPalette.mainNavigation.fg,\n ),\n caution: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.state.warning.fg,\n legacyPalette.mainNavigation.fg,\n ),\n critical: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.state.danger.fg,\n legacyPalette.mainNavigation.fg,\n ),\n },\n },\n button: {\n default: {\n bg: legacyPalette.component.bg,\n fg: legacyPalette.component.fg,\n dark: _isDark(legacyPalette.component.bg, legacyPalette.component.fg),\n\n default: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.defaultButton.default.base,\n legacyPalette.component.fg,\n ),\n transparent: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.defaultButton.default.base,\n legacyPalette.component.fg,\n ),\n primary: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.defaultButton.primary.base,\n legacyPalette.component.fg,\n ),\n positive: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.defaultButton.success.base,\n legacyPalette.component.fg,\n ),\n caution: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.defaultButton.warning.base,\n legacyPalette.component.fg,\n ),\n critical: _buildTints(\n legacyPalette.component.bg,\n legacyPalette.defaultButton.danger.base,\n legacyPalette.component.fg,\n ),\n },\n navbar: {\n bg: legacyPalette.mainNavigation.bg,\n fg: legacyPalette.mainNavigation.fg,\n dark: _isDark(legacyPalette.mainNavigation.bg, legacyPalette.mainNavigation.fg),\n\n default: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.defaultButton.default.base,\n legacyPalette.mainNavigation.fg,\n ),\n transparent: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.defaultButton.default.base,\n legacyPalette.mainNavigation.fg,\n ),\n primary: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.defaultButton.primary.base,\n legacyPalette.mainNavigation.fg,\n ),\n positive: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.defaultButton.success.base,\n legacyPalette.mainNavigation.fg,\n ),\n caution: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.defaultButton.warning.base,\n legacyPalette.mainNavigation.fg,\n ),\n critical: _buildTints(\n legacyPalette.mainNavigation.bg,\n legacyPalette.defaultButton.danger.base,\n legacyPalette.mainNavigation.fg,\n ),\n },\n },\n }\n}\n","import {black, blue, gray, green, red, white, yellow} from '@sanity/color'\nimport {studioTheme as defaults} from '@sanity/ui'\nimport {StudioTheme} from '../types'\nimport {buildColor} from './color'\nimport {buildFonts} from './fonts'\nimport {_isDark} from './helpers'\nimport {buildLegacyPalette} from './palette'\nimport {buildLegacyTones} from './tones'\nimport {LegacyThemeProps} from './types'\n\n/**\n * Build a Sanity UI theme from legacy CSS properties.\n *\n * @example\n * ```tsx\n * import {buildLegacyTheme, defineConfig} from 'sanity'\n *\n * export default defineConfig({\n * // project configuration ...\n *\n * // Customize theming\n * theme: buildLegacyTheme({\n * '--black': '#000',\n * '--gray': '#777',\n * '--focus-color': '#00f',\n * })\n * })\n * ```\n *\n * @param partialLegacyTheme - Properties to override the theme with. See {@link LegacyThemeProps}\n * @public\n * @deprecated Legacy theming will be deprecated in a future version of Sanity Studio\n */\nexport function buildLegacyTheme(partialLegacyTheme: Partial<LegacyThemeProps>): StudioTheme {\n const legacyTheme = resolveLegacyTheme(partialLegacyTheme)\n const legacyPalette = buildLegacyPalette(legacyTheme)\n const legacyTones = buildLegacyTones(legacyPalette)\n\n const color = buildColor(legacyPalette, legacyTones)\n const fonts = buildFonts(legacyTheme)\n\n return {\n __dark: _isDark(color.light.default.base.bg, color.light.default.base.fg),\n __legacy: true,\n color,\n fonts,\n }\n}\n\nconst defaultCustomProperties: LegacyThemeProps = {\n '--font-family-monospace': defaults.fonts.code.family,\n '--font-family-base': defaults.fonts.text.family,\n\n '--black': black.hex,\n '--white': white.hex,\n\n // Brand\n '--brand-primary': blue[500].hex,\n\n // Component\n '--component-bg': white.hex,\n '--component-text-color': black.hex,\n\n // Gray\n '--gray': gray[500].hex,\n '--gray-base': gray[500].hex,\n\n // Default button\n '--default-button-color': gray[500].hex,\n '--default-button-danger-color': red[500].hex,\n '--default-button-primary-color': blue[500].hex,\n '--default-button-success-color': green[500].hex,\n '--default-button-warning-color': yellow[500].hex,\n\n // Focus\n '--focus-color': blue[500].hex,\n\n // Screen\n '--screen-medium-break': '512px',\n '--screen-default-break': '640px',\n '--screen-large-break': '960px',\n '--screen-xlarge-break': '1600px',\n\n // State\n '--state-info-color': blue[500].hex,\n '--state-success-color': green[500].hex,\n '--state-warning-color': yellow[500].hex,\n '--state-danger-color': red[500].hex,\n\n // Navbar\n '--main-navigation-color': black.hex,\n '--main-navigation-color--inverted': white.hex,\n}\n\nfunction resolveLegacyTheme(legacyTheme: Partial<LegacyThemeProps>): LegacyThemeProps {\n const props: LegacyThemeProps = {\n ...defaultCustomProperties,\n ...legacyTheme,\n }\n\n // Update properties (order matters)\n props['--focus-color'] = legacyTheme['--focus-color'] || props['--brand-primary']\n props['--default-button-primary-color'] =\n legacyTheme['--default-button-primary-color'] || props['--brand-primary']\n props['--main-navigation-color'] = legacyTheme['--main-navigation-color'] || props['--black']\n props['--main-navigation-color--inverted'] =\n legacyTheme['--main-navigation-color--inverted'] || props['--white']\n props['--state-info-color'] = legacyTheme['--brand-primary'] || props['--brand-primary']\n\n return props\n}\n","import {Box, Text} from '@sanity/ui'\nimport React from 'react'\nimport {LogoProps} from '../../../config'\n\n/**\n * @hidden\n * @beta */\nexport function StudioLogo(props: LogoProps) {\n const {title} = props\n\n return (\n <Box padding={3} data-testid=\"studio-logo\">\n <Text weight=\"medium\">{title}</Text>\n </Box>\n )\n}\n","import React, {ReactElement} from 'react'\nimport {Config} from '../config'\nimport type {StudioThemeColorSchemeKey} from '../theme/types'\nimport {GlobalStyle} from './GlobalStyle'\nimport {RouterHistory} from './router'\nimport {StudioProvider} from './StudioProvider'\nimport {StudioLayout} from './StudioLayout'\n\n/**\n * @hidden\n * @beta */\nexport interface StudioProps {\n config: Config\n basePath?: string\n /**\n * Useful for scenarios where the Studio is embedded in another app,\n * and the surrounding app also implements light and dark color schemes.\n *\n * The callback is fired whenever the user selects a new color scheme in the \"Appearance\" menu in the top-right dropdown.\n * It also fires on first render with its initial value if you don't provide a `scheme` prop.\n *\n * If the user selects \"System\" in the \"Appearance\" menu, the callback will be fired with `\"system\"` as the scheme.\n * To resolve `\"system\"` to the same color scheme as the Studio use the `usePrefersDark` hook from `@sanity/ui`:\n *\n * ```tsx\n * import {usePrefersDark} from '@sanity/ui'\n * import {Studio} from 'sanity'\n *\n * export default function StudioPage() {\n * const prefersDark = usePrefersDark()\n * const [_scheme, setScheme] = useState('system')\n * const prefersScheme = prefersDark ? 'dark' : 'light'\n * const scheme = _scheme === 'system' ? prefersScheme : _scheme\n *\n * return (\n * <AppLayout scheme={scheme}>\n * <Studio config={config} onSchemeChange={setScheme} />\n * </AppLayout>\n * )\n * }\n * ```\n *\n *\n * @hidden\n * @beta\n */\n onSchemeChange?: (nextScheme: StudioThemeColorSchemeKey) => void\n /**\n * By default the Studio handles the color scheme itself, but you can provide a color scheme to use.\n * If you only define `scheme` then the top-right \"Appearance\" dropdown menu will be hidden,\n * and the Studio will stay in sync with the `scheme` prop.\n *\n * You may setup two-way sync and re-enable the \"Appearance\" dropdown menu by also providing an `onSchemeChange` callback:\n * ```tsx\n * import {Studio} from 'sanity'\n * import {useSession} from 'your-app'\n *\n * export default function StudioPage() {\n * const session = useSession()\n * // Overrides the default scheme to be what's in the app user session\n * const [_scheme, setScheme] = useState(session.scheme)\n * const scheme = _scheme === 'system' ? session.scheme : _scheme\n *\n * return (\n * <AppLayout scheme={scheme}>\n * <Studio config={config} scheme={scheme} onSchemeChange={setScheme} />\n * </AppLayout>\n * )\n * }\n * ```\n *\n *\n * @hidden\n * @beta\n */\n scheme?: StudioThemeColorSchemeKey\n /**\n * @hidden\n * @beta */\n unstable_history?: RouterHistory\n /**\n * @hidden\n * @beta */\n unstable_globalStyles?: boolean\n /**\n * @hidden\n * @beta */\n unstable_noAuthBoundary?: boolean\n}\n\n/**\n * @hidden\n * @beta */\nexport function Studio(props: StudioProps): ReactElement {\n const {\n basePath,\n config,\n onSchemeChange,\n scheme,\n unstable_globalStyles: globalStyles,\n unstable_history,\n unstable_noAuthBoundary,\n } = props\n\n return (\n <StudioProvider\n basePath={basePath}\n config={config}\n onSchemeChange={onSchemeChange}\n scheme={scheme}\n unstable_history={unstable_history}\n unstable_noAuthBoundary={unstable_noAuthBoundary}\n >\n {globalStyles && <GlobalStyle />}\n <StudioLayout />\n </StudioProvider>\n )\n}\n","import React, {StrictMode} from 'react'\nimport {createRoot} from 'react-dom/client'\nimport type {Config} from '../config'\nimport {Studio} from './Studio'\n\ninterface RenderStudioOptions {\n basePath?: string\n reactStrictMode?: boolean\n}\n\n/**\n * @internal\n * @deprecated Use `renderStudio(rootElement, config, {reactStrictMode: true})` instead\n */\nexport function renderStudio(\n rootElement: HTMLElement | null,\n config: Config,\n options: boolean,\n): () => void\n\n/** @internal */\nexport function renderStudio(rootElement: HTMLElement | null, config: Config): () => void\n\n/** @internal */\nexport function renderStudio(\n rootElement: HTMLElement | null,\n config: Config,\n options: RenderStudioOptions,\n): () => void\n\n/** @internal */\nexport function renderStudio(\n rootElement: HTMLElement | null,\n config: Config,\n options: RenderStudioOptions | boolean = false,\n): () => void {\n if (!rootElement) {\n throw new Error('Missing root element to mount application into')\n }\n\n const opts = typeof options === 'boolean' ? {reactStrictMode: options} : options\n const {reactStrictMode = false, basePath} = opts\n\n const root = createRoot(rootElement)\n\n root.render(\n reactStrictMode ? (\n <StrictMode>\n <Studio config={config} basePath={basePath} unstable_globalStyles />\n </StrictMode>\n ) : (\n <Studio config={config} basePath={basePath} unstable_globalStyles />\n ),\n )\n\n return () => root.unmount()\n}\n","import {SanityDocument} from '@sanity/types'\nimport {ReactElement} from 'react'\nimport {DocumentStore} from '../store'\nimport {useReferringDocuments} from '../hooks/useReferringDocuments'\n\n/**\n * @internal\n * @deprecated - Will be removed in 4.0.0, use the `useReferringDocuments(<documentId>)` hook instead\n */\nexport function WithReferringDocuments({\n children,\n id,\n}: {\n children: (props: {isLoading: boolean; referringDocuments: SanityDocument[]}) => ReactElement\n /**\n * @deprecated - no longer required\n */\n documentStore?: DocumentStore\n id: string\n}) {\n return children(useReferringDocuments(id))\n}\n","import React from 'react'\nimport {defaults} from './defaults'\nimport {ZIndexContext} from './ZIndexContext'\n\n/**\n * TODO: Rename to `ZOffsetsProvider`\n *\n * @internal\n */\nexport function ZIndexProvider({children}: {children?: React.ReactNode}): React.ReactElement {\n return <ZIndexContext.Provider value={defaults}>{children}</ZIndexContext.Provider>\n}\n","import {HTMLProps} from 'react'\nimport {Badge, BadgeProps} from '@sanity/ui'\n\n/** @internal */\nexport type BetaBadgeProps = Omit<BadgeProps, 'mode' | 'tone'>\n\n/** @internal */\nexport function BetaBadge(props: BetaBadgeProps & Omit<HTMLProps<HTMLDivElement>, 'ref'>) {\n const {fontSize = 1, children = 'Beta', ...rest} = props\n\n return (\n <Badge {...rest} fontSize={fontSize} radius={2} tone=\"primary\">\n {children}\n </Badge>\n )\n}\n","import React from 'react'\nimport {type RelativeTimeOptions, useRelativeTime} from '../hooks/useRelativeTime'\n\n/**\n * @internal\n */\nexport interface RelativeTimeProps extends RelativeTimeOptions {\n time: string | Date\n}\n\n/**\n * @internal\n */\nexport function RelativeTime({time, ...options}: RelativeTimeProps) {\n const timestamp = time instanceof Date ? time : new Date(time)\n const timeAgo = useRelativeTime(timestamp, options)\n\n return (\n <time dateTime={timestamp.toISOString()} title={timeAgo}>\n {timeAgo}\n </time>\n )\n}\n","import React from 'react'\nimport {TextInput} from '@sanity/ui'\nimport {StringInputProps} from '../types'\n\n/**\n *\n * @hidden\n * @beta\n */\nexport type TelephoneInputProps = StringInputProps\n\n/**\n *\n * @hidden\n * @beta\n */\nexport function TelephoneInput(props: TelephoneInputProps) {\n const {schemaType, validationError, value, elementProps} = props\n\n return (\n <TextInput\n type=\"tel\"\n inputMode=\"tel\"\n customValidity={validationError}\n value={value || ''}\n placeholder={schemaType.placeholder}\n {...elementProps}\n />\n )\n}\n","import {isKeySegment, Path} from '@sanity/types'\nimport {StateTree} from './types'\n\n/** @internal */\nexport function setAtPath<T>(\n currentTree: StateTree<T> | undefined,\n path: Path,\n value: T,\n): StateTree<T> {\n if (path.length === 0) {\n return {...(currentTree || {}), value}\n }\n const [head, ...tail] = path\n const key = isKeySegment(head) ? head._key : String(head)\n const children = currentTree?.children ?? {}\n return {\n value: currentTree?.value,\n children: {...children, [key]: setAtPath(children[key] || {}, tail, value)},\n }\n}\n","import {FieldGroup} from '@sanity/types'\n\n/**\n * Max supported field depth. Fields deeper than this will be considered hidden.\n */\nexport const MAX_FIELD_DEPTH = 20\n\n/**\n * Start auto-collapsing fields at this nesting level unless schema/field configuration says otherwise\n */\nexport const AUTO_COLLAPSE_DEPTH = 3\n\nexport const ALL_FIELDS_GROUP: FieldGroup = {\n name: 'all-fields',\n title: 'All fields',\n hidden: false,\n}\n","import {isArrayOfObjectsSchemaType, isObjectSchemaType} from '@sanity/types'\nimport {ArrayOfObjectsFormNode, BaseFormNode, ObjectFormNode} from './nodes'\n\n/** @internal */\nexport function isObjectFormNode(formNode: BaseFormNode): formNode is ObjectFormNode {\n return isObjectSchemaType(formNode.schemaType)\n}\n/** @internal */\nexport function isArrayOfObjectsFormNode(\n formNode: BaseFormNode,\n): formNode is ArrayOfObjectsFormNode {\n return isArrayOfObjectsSchemaType(formNode.schemaType)\n}\n","import {isKeySegment, Path} from '@sanity/types'\nimport {castArray} from 'lodash'\nimport {\n ArrayOfObjectsFormNode,\n ArrayOfObjectsItemMember,\n BaseFormNode,\n FieldMember,\n FieldSetMember,\n ObjectFormNode,\n ObjectMember,\n} from '../types'\nimport {isMemberArrayOfObjects, isMemberObject} from '../../members/object/fields/asserters'\nimport {ALL_FIELDS_GROUP} from '../constants'\nimport {isArrayOfObjectsFormNode, isObjectFormNode} from '../types/asserters'\n\n/** @internal */\nexport interface ExpandPathOperation {\n type: 'expandPath'\n path: Path\n}\n\n/** @internal */\nexport interface ExpandFieldSetOperation {\n type: 'expandFieldSet'\n path: Path\n}\n\n/** @internal */\nexport interface SetActiveGroupOperation {\n type: 'setSelectedGroup'\n path: Path\n groupName: string\n}\n\n/** @internal */\nexport type ExpandOperation =\n | ExpandPathOperation\n | ExpandFieldSetOperation\n | SetActiveGroupOperation\n\nfunction hasAllMembers<T extends BaseFormNode>(value: T): value is HasAllMembers<T> {\n return '_allMembers' in value && Array.isArray(value._allMembers)\n}\n\n/**\n * This takes a form state and returns a list of operations required to open a node at a particular path\n * @param node - The base form node (i.e. the form state node for the _document_)\n * @param path - The path to open\n *\n * @internal\n */\nexport function getExpandOperations(node: BaseFormNode, path: Path): ExpandOperation[] {\n return [\n // make sure to expand all intermediate paths\n ...path.map((p, i): ExpandPathOperation => ({type: 'expandPath', path: path.slice(0, i + 1)})),\n // make sure to expand all fieldsets and selects the groups that includes the intermediate nodes\n ...getFieldsetAndFieldGroupOperations(node, path),\n ]\n}\nfunction getFieldsetAndFieldGroupOperations(node: BaseFormNode, path: Path) {\n if (path.length === 0) {\n return []\n }\n\n if (isObjectFormNode(node) && hasAllMembers(node)) {\n return getObjectFieldsetAndFieldGroupOperations(node, path)\n }\n if (isArrayOfObjectsFormNode(node)) {\n return getArrayFieldsetAndFieldGroupOperations(node, path)\n }\n return []\n}\n\ntype HasAllMembers<T> = T & {_allMembers: ObjectMember[]}\n\nfunction getObjectFieldsetAndFieldGroupOperations(\n node: HasAllMembers<ObjectFormNode>,\n path: Path,\n): (ExpandFieldSetOperation | SetActiveGroupOperation)[] {\n if (path.length === 0) {\n return []\n }\n // extract the field name for the current level we're looking at\n const [fieldName, ...tail] = path\n\n const fieldsetMember = node._allMembers.find(\n (member): member is FieldSetMember =>\n member.kind === 'fieldSet' &&\n member.fieldSet.members.some(\n (field): field is FieldMember => field.kind === 'field' && field.name === fieldName,\n ),\n )\n\n // if we found the field in a fieldset we need to recurse into this fieldset's members, otherwise we can use the node's members\n const members = fieldsetMember\n ? fieldsetMember.fieldSet.members\n : // Note: we need to use the internal `_allMembers` array here instead of members since hidden/collapsed members are omitted from members\n node._allMembers\n\n // look for the field inside the members array\n const fieldMember = members.find(\n (member): member is FieldMember =>\n member !== null && member.kind === 'field' && member.name === fieldName,\n )\n\n // Group handling\n const schemaField = node.schemaType.fields.find((field) => field.name === fieldName)\n const selectedGroupName = node.groups.find((group) => group.selected)?.name\n const defaultGroupName = (node.schemaType.groups || []).find((group) => group.default)?.name\n const inSelectedGroup =\n selectedGroupName &&\n (selectedGroupName === ALL_FIELDS_GROUP.name ||\n (schemaField && castArray(schemaField.group).includes(selectedGroupName)))\n\n const ops: (ExpandFieldSetOperation | SetActiveGroupOperation)[] = []\n\n if (!inSelectedGroup) {\n ops.push({\n type: 'setSelectedGroup',\n path: node.path,\n groupName: defaultGroupName || ALL_FIELDS_GROUP.name,\n })\n }\n\n if (fieldsetMember) {\n // the field is inside a fieldset, make sure we expand it too\n ops.push({type: 'expandFieldSet', path: fieldsetMember.fieldSet.path})\n }\n\n if (fieldMember && hasAllMembers(fieldMember.field)) {\n if (isMemberArrayOfObjects(fieldMember)) {\n ops.push(...getArrayFieldsetAndFieldGroupOperations(fieldMember.field, tail))\n } else if (isMemberObject(fieldMember)) {\n ops.push(...getObjectFieldsetAndFieldGroupOperations(fieldMember.field, tail))\n }\n }\n\n return ops\n}\n\nfunction getArrayFieldsetAndFieldGroupOperations(\n state: ArrayOfObjectsFormNode,\n path: Path,\n): (ExpandFieldSetOperation | SetActiveGroupOperation)[] {\n if (path.length === 0) {\n return []\n }\n\n // start at the root and make sure all groups/paths are expanded/activated along the way\n const [segment, ...rest] = path\n if (!isKeySegment(segment)) {\n throw new Error('Expected path segment to be an object with a _key property')\n }\n\n const foundMember = state.members.find(\n (member): member is ArrayOfObjectsItemMember => member.key === segment._key,\n )\n\n if (!foundMember) {\n // tried to open a member that does not exist in the form state - it's likely hidden\n return []\n }\n return getFieldsetAndFieldGroupOperations(foundMember.item, rest)\n}\n","/* eslint-disable no-nested-ternary */\nimport {ConditionalProperty, CurrentUser} from '@sanity/types'\n\n/**\n * @internal\n */\nexport interface ConditionalPropertyCallbackContext {\n parent?: unknown\n document?: Record<string, unknown>\n currentUser: Omit<CurrentUser, 'role'> | null\n value: unknown\n}\n\n/**\n * @internal\n */\nexport function resolveConditionalProperty(\n property: ConditionalProperty,\n context: ConditionalPropertyCallbackContext,\n) {\n const {currentUser, document, parent, value} = context\n\n if (typeof property === 'boolean' || property === undefined) {\n return Boolean(property)\n }\n\n return (\n property({\n document: document as any,\n parent,\n value,\n currentUser,\n }) === true // note: we can't strictly \"trust\" the return value here, so the conditional property should probably be typed as unknown\n )\n}\n","import {ArraySchemaType, SchemaType} from '@sanity/types'\nimport {resolveTypeName} from '@sanity/util/content'\n\nexport function getItemType(arrayType: ArraySchemaType, item: unknown): SchemaType | undefined {\n const itemTypeName = resolveTypeName(item)\n\n return itemTypeName === 'object' && arrayType.of.length === 1\n ? arrayType.of[0]\n : arrayType.of.find((memberType) => memberType.name === itemTypeName)\n}\n\nexport function getPrimitiveItemType(\n arrayType: ArraySchemaType,\n item: unknown,\n): SchemaType | undefined {\n const itemTypeName = resolveTypeName(item)\n\n return arrayType?.of.find(\n (memberType) => memberType.name === itemTypeName || memberType.jsonType === itemTypeName,\n )\n}\n","import {ObjectSchemaTypeWithOptions} from '@sanity/types'\nimport {AUTO_COLLAPSE_DEPTH} from '../constants'\n\ninterface CollapsibleOptions {\n collapsible: boolean | undefined\n // Initial collapsed state\n collapsed: boolean | undefined\n}\n\n/**\n * Takes an option object that can optionally have a 'collapsed' property\n * (`{collapsed?: boolean, collapsible?: boolean}`)\n * and returns a resolved collapsed state based on configuration and whether it's below a certain nesting level threshold\n - collapsible: boolean - whether the field can be collapsed\n - collapsed: boolean - whether the field is initially collapsed\n * NOTE: If a field is configured with ´collapsed: true´, ignore any ´collapsible´ configuration and make it collapsible no matter what, otherwise it will be left forever collapsed.\n *\n * If the nesting level is deeper than or equal to AUTO_COLLAPSE_DEPTH, the default for the field/fieldset becomes \"collapsed\"\n *\n * @param options - Whether the field or fieldset should be collapsed\n * @param level - Nesting level\n */\nexport function getCollapsedWithDefaults(\n options: ObjectSchemaTypeWithOptions['options'] = {},\n level: number,\n): CollapsibleOptions {\n if (options?.collapsible === false || options?.collapsable === false) {\n return {collapsible: false, collapsed: false}\n }\n\n const collapsed =\n // eslint-disable-next-line no-nested-ternary\n typeof options?.collapsed === 'boolean'\n ? options.collapsed\n : level >= AUTO_COLLAPSE_DEPTH\n ? true\n : undefined\n\n const collapsible =\n options?.collapsible === true || options?.collapsable === true || collapsed === true\n ? true\n : undefined\n\n return {\n collapsible,\n collapsed,\n }\n}\n","/* eslint-disable max-statements */\n/* eslint-disable camelcase, no-else-return */\n\nimport {\n ArraySchemaType,\n BooleanSchemaType,\n CurrentUser,\n isArrayOfObjectsSchemaType,\n isArraySchemaType,\n isObjectSchemaType,\n NumberSchemaType,\n ObjectField,\n ObjectSchemaType,\n Path,\n StringSchemaType,\n ValidationMarker,\n} from '@sanity/types'\n\nimport {castArray, isEqual as _isEqual, pick} from 'lodash'\nimport {isEqual, pathFor, startsWith, toString, trimChildPath} from '@sanity/util/paths'\nimport {resolveTypeName} from '@sanity/util/content'\n\nimport {EMPTY_ARRAY, isNonNullable, isRecord} from '../../util'\nimport {getFieldLevel} from '../studio/inputResolver/helpers'\nimport {FIXME} from '../../FIXME'\nimport {FormNodePresence} from '../../presence'\n\nimport {\n FieldSetMember,\n HiddenField,\n ObjectArrayFormNode,\n PrimitiveFormNode,\n StateTree,\n} from './types'\nimport {resolveConditionalProperty} from './conditional-property'\nimport {ALL_FIELDS_GROUP, MAX_FIELD_DEPTH} from './constants'\nimport {getItemType, getPrimitiveItemType} from './utils/getItemType'\nimport {\n ArrayOfObjectsMember,\n ArrayOfPrimitivesMember,\n FieldMember,\n ObjectMember,\n} from './types/members'\nimport {ArrayOfObjectsFormNode, ArrayOfPrimitivesFormNode, ObjectFormNode} from './types/nodes'\nimport {FormFieldGroup} from './types/fieldGroup'\nimport {getCollapsedWithDefaults} from './utils/getCollapsibleOptions'\nimport {FieldError} from './types/memberErrors'\n\ntype PrimitiveSchemaType = BooleanSchemaType | NumberSchemaType | StringSchemaType\n\nfunction isFieldEnabledByGroupFilter(\n // the groups config for the \"enclosing object\" type\n groupsConfig: FormFieldGroup[],\n fieldGroup: string | string[] | undefined,\n selectedGroup: FormFieldGroup,\n) {\n if (selectedGroup.name === ALL_FIELDS_GROUP.name) {\n return true\n }\n\n // \"all fields\" is not the selected group and the field has no group config, so it should be hidden\n if (fieldGroup === undefined) {\n return false\n }\n\n // if there's no group config for the object type, all fields are visible\n if (groupsConfig.length === 0 && selectedGroup.name === ALL_FIELDS_GROUP.name) {\n return true\n }\n\n return castArray(fieldGroup).includes(selectedGroup.name)\n}\n\nfunction isAcceptedObjectValue(value: any): value is Record<string, unknown> | undefined {\n return typeof value === 'undefined' || isRecord(value)\n}\n\nfunction isValidArrayOfObjectsValue(value: any): value is unknown[] | undefined {\n return typeof value === 'undefined' || Array.isArray(value)\n}\n\nfunction isValidArrayOfPrimitivesValue(\n value: any,\n): value is (boolean | number | string)[] | undefined {\n return typeof value === 'undefined' || Array.isArray(value)\n}\n\nfunction everyItemIsObject(value: unknown[]): value is object[] {\n return value.length === 0 || value.every((item) => isRecord(item))\n}\n\nfunction findDuplicateKeyEntries(array: {_key: string}[]) {\n const seenKeys = new Set<string>()\n return array.reduce((acc: [index: number, key: string][], item, index) => {\n if (seenKeys.has(item._key)) {\n acc.push([index, item._key])\n }\n seenKeys.add(item._key)\n return acc\n }, [])\n}\n\nfunction hasKey<T extends object>(value: T): value is T & {_key: string} {\n return '_key' in value\n}\n\nfunction everyItemHasKey<T extends object>(array: T[]): array is (T & {_key: string})[] {\n return array?.every((item) => isRecord(item) && hasKey(item))\n}\n\nfunction isChangedValue(value: any, comparisonValue: any) {\n // changes panel is not being able to identify changes in array of objects\n // (especially when it comes to unpublished changes)\n // the main issue it fixes is in instances where the array removes a last item but instead of turning\n // \"undefined\" it returns an empty array (and so the change indicator remains active when it shouldn't)\n if (\n (Array.isArray(value) && typeof comparisonValue === 'undefined') ||\n (Array.isArray(comparisonValue) && typeof value === 'undefined')\n ) {\n return false\n }\n\n if (value && !comparisonValue) {\n return true\n }\n return !_isEqual(value, comparisonValue)\n}\n\n/*\n * Takes a field in context of a parent object and returns prepared props for it\n */\nfunction prepareFieldMember(props: {\n field: ObjectField\n parent: RawState<ObjectSchemaType, unknown> & {\n groups: FormFieldGroup[]\n selectedGroup: FormFieldGroup\n }\n index: number\n}): ObjectMember | HiddenField | null {\n const {parent, field, index} = props\n const fieldPath = pathFor([...parent.path, field.name])\n const fieldLevel = getFieldLevel(field.type, parent.level + 1)\n\n const parentValue = parent.value\n const parentComparisonValue = parent.comparisonValue\n if (!isAcceptedObjectValue(parentValue)) {\n // Note: we validate each field, before passing it recursively to this function so getting this error means that the\n // ´prepareFormState´ function itself has been called with a non-object value\n throw new Error('Unexpected non-object value')\n }\n\n const normalizedFieldGroupNames = field.group ? castArray(field.group) : []\n const inSelectedGroup = isFieldEnabledByGroupFilter(\n parent.groups,\n field.group,\n parent.selectedGroup,\n )\n\n if (isObjectSchemaType(field.type)) {\n const fieldValue = parentValue?.[field.name]\n const fieldComparisonValue = isRecord(parentComparisonValue)\n ? parentComparisonValue?.[field.name]\n : undefined\n\n if (!isAcceptedObjectValue(fieldValue)) {\n return {\n kind: 'error',\n key: field.name,\n fieldName: field.name,\n error: {\n type: 'INCOMPATIBLE_TYPE',\n expectedSchemaType: field.type,\n resolvedValueType: resolveTypeName(fieldValue),\n value: fieldValue,\n },\n }\n }\n\n const conditionalPropertyContext = {\n value: fieldValue,\n parent: parent.value,\n document: parent.document,\n currentUser: parent.currentUser,\n }\n const hidden = resolveConditionalProperty(field.type.hidden, conditionalPropertyContext)\n\n if (hidden) {\n return {\n kind: 'hidden',\n key: `field-${field.name}`,\n name: field.name,\n index: index,\n }\n }\n\n // readonly is inherited\n const readOnly =\n parent.readOnly || resolveConditionalProperty(field.type.readOnly, conditionalPropertyContext)\n\n // todo: consider requiring a _type annotation for object values on fields as well\n // if (resolvedValueType !== field.type.name) {\n // return {\n // kind: 'error',\n // key: field.name,\n // error: {\n // type: 'TYPE_ANNOTATION_MISMATCH',\n // expectedSchemaType: field.type,\n // resolvedValueType,\n // },\n // }\n // }\n\n const fieldGroupState = parent.fieldGroupState?.children?.[field.name]\n const scopedCollapsedPaths = parent.collapsedPaths?.children?.[field.name]\n const scopedCollapsedFieldsets = parent.collapsedFieldSets?.children?.[field.name]\n\n const inputState = prepareObjectInputState({\n schemaType: field.type,\n currentUser: parent.currentUser,\n parent: parent.value,\n document: parent.document,\n value: fieldValue,\n changed: isChangedValue(fieldValue, fieldComparisonValue),\n comparisonValue: fieldComparisonValue,\n presence: parent.presence,\n validation: parent.validation,\n fieldGroupState,\n path: fieldPath,\n level: fieldLevel,\n focusPath: parent.focusPath,\n openPath: parent.openPath,\n collapsedPaths: scopedCollapsedPaths,\n collapsedFieldSets: scopedCollapsedFieldsets,\n readOnly,\n changesOpen: parent.changesOpen,\n })\n\n if (inputState === null) {\n // if inputState is null is either because we reached max field depth or if it has no visible members\n return null\n }\n\n const defaultCollapsedState = getCollapsedWithDefaults(field.type.options as FIXME, fieldLevel)\n const collapsed = scopedCollapsedPaths\n ? scopedCollapsedPaths.value\n : defaultCollapsedState.collapsed\n\n return {\n kind: 'field',\n key: `field-${field.name}`,\n name: field.name,\n index: index,\n\n inSelectedGroup,\n groups: normalizedFieldGroupNames,\n\n open: startsWith(fieldPath, parent.openPath),\n field: inputState,\n collapsed,\n collapsible: defaultCollapsedState.collapsible,\n }\n } else if (isArraySchemaType(field.type)) {\n const fieldValue = parentValue?.[field.name] as unknown[] | undefined\n const fieldComparisonValue = isRecord(parentComparisonValue)\n ? parentComparisonValue?.[field.name]\n : undefined\n if (isArrayOfObjectsSchemaType(field.type)) {\n const hasValue = typeof fieldValue !== 'undefined'\n if (hasValue && !isValidArrayOfObjectsValue(fieldValue)) {\n const resolvedValueType = resolveTypeName(fieldValue)\n\n return {\n kind: 'error',\n key: field.name,\n fieldName: field.name,\n error: {\n type: 'INCOMPATIBLE_TYPE',\n expectedSchemaType: field.type,\n resolvedValueType,\n value: fieldValue,\n },\n }\n }\n\n if (hasValue && !everyItemIsObject(fieldValue)) {\n return {\n kind: 'error',\n key: field.name,\n fieldName: field.name,\n error: {\n type: 'MIXED_ARRAY',\n schemaType: field.type,\n value: fieldValue,\n },\n }\n }\n\n if (hasValue && !everyItemHasKey(fieldValue)) {\n return {\n kind: 'error',\n key: field.name,\n fieldName: field.name,\n error: {\n type: 'MISSING_KEYS',\n value: fieldValue,\n schemaType: field.type,\n },\n }\n }\n\n const duplicateKeyEntries = hasValue ? findDuplicateKeyEntries(fieldValue) : []\n if (duplicateKeyEntries.length > 0) {\n return {\n kind: 'error',\n key: field.name,\n fieldName: field.name,\n error: {\n type: 'DUPLICATE_KEYS',\n duplicates: duplicateKeyEntries,\n schemaType: field.type,\n },\n }\n }\n\n const fieldGroupState = parent.fieldGroupState?.children?.[field.name]\n const scopedCollapsedPaths = parent.collapsedPaths?.children?.[field.name]\n const scopedCollapsedFieldSets = parent.collapsedFieldSets?.children?.[field.name]\n\n const readOnly =\n parent.readOnly ||\n resolveConditionalProperty(field.type.readOnly, {\n value: fieldValue,\n parent: parent.value,\n document: parent.document,\n currentUser: parent.currentUser,\n })\n\n const fieldState = prepareArrayOfObjectsInputState({\n schemaType: field.type,\n parent: parent.value,\n currentUser: parent.currentUser,\n document: parent.document,\n value: fieldValue,\n changed: isChangedValue(fieldValue, fieldComparisonValue),\n comparisonValue: fieldComparisonValue as FIXME,\n fieldGroupState,\n focusPath: parent.focusPath,\n openPath: parent.openPath,\n presence: parent.presence,\n validation: parent.validation,\n collapsedPaths: scopedCollapsedPaths,\n collapsedFieldSets: scopedCollapsedFieldSets,\n level: fieldLevel,\n path: fieldPath,\n readOnly,\n })\n\n if (fieldState === null) {\n return null\n }\n\n return {\n kind: 'field',\n key: `field-${field.name}`,\n name: field.name,\n index: index,\n\n open: startsWith(fieldPath, parent.openPath),\n\n inSelectedGroup,\n groups: normalizedFieldGroupNames,\n\n collapsible: false,\n collapsed: false,\n // note: this is what we actually end up passing down as to the next input component\n field: fieldState,\n }\n } else {\n // array of primitives\n if (!isValidArrayOfPrimitivesValue(fieldValue)) {\n const resolvedValueType = resolveTypeName(fieldValue)\n\n return {\n kind: 'error',\n key: field.name,\n fieldName: field.name,\n error: {\n type: 'INCOMPATIBLE_TYPE',\n expectedSchemaType: field.type,\n resolvedValueType,\n value: fieldValue,\n },\n }\n }\n\n const fieldGroupState = parent.fieldGroupState?.children?.[field.name]\n const scopedCollapsedPaths = parent.collapsedPaths?.children?.[field.name]\n const scopedCollapsedFieldSets = parent.collapsedFieldSets?.children?.[field.name]\n\n const readOnly =\n parent.readOnly ||\n resolveConditionalProperty(field.type.readOnly, {\n value: fieldValue,\n parent: parent.value,\n document: parent.document,\n currentUser: parent.currentUser,\n })\n\n const fieldState = prepareArrayOfPrimitivesInputState({\n changed: isChangedValue(fieldValue, fieldComparisonValue),\n comparisonValue: fieldComparisonValue as FIXME,\n schemaType: field.type,\n parent: parent.value,\n currentUser: parent.currentUser,\n document: parent.document,\n value: fieldValue,\n fieldGroupState,\n focusPath: parent.focusPath,\n openPath: parent.openPath,\n presence: parent.presence,\n validation: parent.validation,\n collapsedPaths: scopedCollapsedPaths,\n collapsedFieldSets: scopedCollapsedFieldSets,\n level: fieldLevel,\n path: fieldPath,\n readOnly,\n })\n\n if (fieldState === null) {\n return null\n }\n\n return {\n kind: 'field',\n key: `field-${field.name}`,\n name: field.name,\n index: index,\n\n inSelectedGroup,\n groups: normalizedFieldGroupNames,\n\n open: startsWith(fieldPath, parent.openPath),\n\n // todo: consider support for collapsible arrays\n collapsible: false,\n collapsed: false,\n // note: this is what we actually end up passing down as to the next input component\n field: fieldState,\n }\n }\n } else {\n // primitive fields\n\n const fieldValue = parentValue?.[field.name] as undefined | boolean | string | number\n const fieldComparisonValue = isRecord(parentComparisonValue)\n ? parentComparisonValue?.[field.name]\n : undefined\n\n const conditionalPropertyContext = {\n value: fieldValue,\n parent: parent.value,\n document: parent.document,\n currentUser: parent.currentUser,\n }\n\n // note: we *only* want to call the conditional props here, as it's handled by the prepare<Object|Array>InputProps otherwise\n const hidden = resolveConditionalProperty(field.type.hidden, conditionalPropertyContext)\n\n if (hidden) {\n return null\n }\n\n const readOnly =\n parent.readOnly || resolveConditionalProperty(field.type.readOnly, conditionalPropertyContext)\n\n const fieldState = preparePrimitiveInputState({\n ...parent,\n comparisonValue: fieldComparisonValue,\n value: fieldValue as boolean | string | number | undefined,\n schemaType: field.type as PrimitiveSchemaType,\n path: fieldPath,\n readOnly,\n })\n\n return {\n kind: 'field',\n key: `field-${field.name}`,\n name: field.name,\n index: index,\n open: startsWith(fieldPath, parent.openPath),\n\n inSelectedGroup,\n groups: normalizedFieldGroupNames,\n\n // todo: consider support for collapsible primitive fields\n collapsible: false,\n collapsed: false,\n field: fieldState,\n }\n }\n}\n\ninterface RawState<SchemaType, T> {\n schemaType: SchemaType\n value?: T\n comparisonValue?: T | null\n changed?: boolean\n document: FIXME_SanityDocument\n currentUser: Omit<CurrentUser, 'role'> | null\n parent?: unknown\n hidden?: boolean\n readOnly?: boolean\n path: Path\n openPath: Path\n focusPath: Path\n presence: FormNodePresence[]\n validation: ValidationMarker[]\n fieldGroupState?: StateTree<string>\n collapsedPaths?: StateTree<boolean>\n collapsedFieldSets?: StateTree<boolean>\n // nesting level\n level: number\n changesOpen?: boolean\n}\n\nfunction prepareObjectInputState<T>(\n props: RawState<ObjectSchemaType, T>,\n enableHiddenCheck?: false,\n): ObjectFormNode\nfunction prepareObjectInputState<T>(\n props: RawState<ObjectSchemaType, T>,\n enableHiddenCheck?: true,\n): ObjectFormNode | null\nfunction prepareObjectInputState<T>(\n props: RawState<ObjectSchemaType, T>,\n enableHiddenCheck = true,\n): ObjectFormNode | null {\n if (props.level === MAX_FIELD_DEPTH) {\n return null\n }\n\n const conditionalPropertyContext = {\n value: props.value,\n parent: props.parent,\n document: props.document,\n currentUser: props.currentUser,\n }\n\n // readonly is inherited\n const readOnly =\n props.readOnly ||\n resolveConditionalProperty(props.schemaType.readOnly, conditionalPropertyContext)\n\n const schemaTypeGroupConfig = props.schemaType.groups || []\n const defaultGroupName = (schemaTypeGroupConfig.find((g) => g.default) || ALL_FIELDS_GROUP)?.name\n\n const groups = [ALL_FIELDS_GROUP, ...schemaTypeGroupConfig].flatMap((group): FormFieldGroup[] => {\n const groupHidden = resolveConditionalProperty(group.hidden, conditionalPropertyContext)\n const isSelected = group.name === (props.fieldGroupState?.value || defaultGroupName)\n\n // Set the \"all-fields\" group as selected when review changes is open to enable review of all\n // fields and changes together. When review changes is closed - switch back to the selected tab.\n const selected = props.changesOpen ? group.name === ALL_FIELDS_GROUP.name : isSelected\n // Also disable non-selected groups when review changes is open\n const disabled = props.changesOpen ? !selected : false\n\n return groupHidden\n ? []\n : [\n {\n disabled,\n icon: group?.icon,\n name: group.name,\n selected,\n title: group.title,\n },\n ]\n })\n\n const selectedGroup = groups.find((group) => group.selected)!\n\n // note: this is needed because not all object types gets a ´fieldsets´ property during schema parsing.\n // ideally members should be normalized as part of the schema parsing and not here\n const normalizedSchemaMembers: typeof props.schemaType.fieldsets = props.schemaType.fieldsets\n ? props.schemaType.fieldsets\n : props.schemaType.fields.map((field) => ({single: true, field}))\n\n // create a members array for the object\n const members = normalizedSchemaMembers.flatMap(\n (fieldSet, index): (ObjectMember | HiddenField)[] => {\n // \"single\" means not part of a fieldset\n if (fieldSet.single) {\n const field = fieldSet.field\n\n const fieldMember = prepareFieldMember({\n field: field,\n parent: {...props, readOnly, groups, selectedGroup},\n index,\n })\n\n return fieldMember ? [fieldMember] : []\n }\n\n // it's an actual fieldset\n const fieldsetFieldNames = fieldSet.fields.map((f) => f.name)\n const fieldsetHidden = resolveConditionalProperty(fieldSet.hidden, {\n currentUser: props.currentUser,\n document: props.document,\n parent: props.value,\n value: pick(props.value, fieldsetFieldNames),\n })\n\n const fieldsetReadOnly = resolveConditionalProperty(fieldSet.readOnly, {\n currentUser: props.currentUser,\n document: props.document,\n parent: props.value,\n value: pick(props.value, fieldsetFieldNames),\n })\n\n const fieldsetMembers = fieldSet.fields.flatMap(\n (field): (FieldMember | FieldError | HiddenField)[] => {\n if (fieldsetHidden) {\n return [\n {\n kind: 'hidden',\n key: `field-${field.name}`,\n name: field.name,\n index: index,\n },\n ]\n }\n const fieldMember = prepareFieldMember({\n field: field,\n parent: {...props, readOnly: readOnly || fieldsetReadOnly, groups, selectedGroup},\n index,\n }) as FieldMember | FieldError | HiddenField\n\n return fieldMember ? [fieldMember] : []\n },\n )\n\n const defaultCollapsedState = getCollapsedWithDefaults(fieldSet.options, props.level)\n\n const collapsed =\n (props.collapsedFieldSets?.children || {})[fieldSet.name]?.value ??\n defaultCollapsedState.collapsed\n\n return [\n {\n kind: 'fieldSet',\n key: `fieldset-${fieldSet.name}`,\n _inSelectedGroup: isFieldEnabledByGroupFilter(groups, fieldSet.group, selectedGroup),\n groups: fieldSet.group ? castArray(fieldSet.group) : [],\n fieldSet: {\n path: pathFor(props.path.concat(fieldSet.name)),\n name: fieldSet.name,\n title: fieldSet.title,\n description: fieldSet.description,\n hidden: false,\n level: props.level + 1,\n members: fieldsetMembers.filter(\n (member): member is FieldMember => member.kind !== 'hidden',\n ),\n collapsible: defaultCollapsedState?.collapsible,\n collapsed,\n columns: fieldSet?.options?.columns,\n },\n },\n ]\n },\n )\n\n const hasFieldGroups = schemaTypeGroupConfig.length > 0\n\n const filteredPresence = props.presence.filter((item) => isEqual(item.path, props.path))\n const presence = filteredPresence.length ? filteredPresence : EMPTY_ARRAY\n\n const validation = props.validation\n .filter((item) => isEqual(item.path, props.path))\n .map((v) => ({level: v.level, message: v.message, path: v.path}))\n\n const visibleMembers = members.filter(\n (member): member is ObjectMember => member.kind !== 'hidden',\n )\n\n // Return null here only when enableHiddenCheck, or we end up with array members that have 'item: null' when they\n // really should not be. One example is when a block object inside the PT-input have a type with one single hidden field.\n // Then it should still be possible to see the member item, even though all of it's fields are null.\n if (visibleMembers.length === 0 && enableHiddenCheck) {\n return null\n }\n\n const visibleGroups = hasFieldGroups\n ? groups.flatMap((group) => {\n // The \"all fields\" group is always visible\n if (group.name === ALL_FIELDS_GROUP.name) {\n return group\n }\n const hasVisibleMembers = visibleMembers.some((member) => {\n if (member.kind === 'error') {\n return false\n }\n if (member.kind === 'field') {\n return member.groups.includes(group.name)\n }\n\n return (\n member.groups.includes(group.name) ||\n member.fieldSet.members.some(\n (fieldsetMember) =>\n fieldsetMember.kind !== 'error' && fieldsetMember.groups.includes(group.name),\n )\n )\n })\n return hasVisibleMembers ? group : []\n })\n : []\n\n const filtereredMembers = visibleMembers.flatMap(\n (member): (FieldError | FieldMember | FieldSetMember)[] => {\n if (member.kind === 'error') {\n return [member]\n }\n if (member.kind === 'field') {\n return member.inSelectedGroup ? [member] : []\n }\n\n const filteredFieldsetMembers: ObjectMember[] = member.fieldSet.members.filter(\n (fieldsetMember) => fieldsetMember.kind !== 'field' || fieldsetMember.inSelectedGroup,\n )\n return filteredFieldsetMembers.length > 0\n ? [\n {\n ...member,\n fieldSet: {...member.fieldSet, members: filteredFieldsetMembers},\n } as FieldSetMember,\n ]\n : []\n },\n )\n\n const node = {\n value: props.value as Record<string, unknown> | undefined,\n changed: isChangedValue(props.value, props.comparisonValue),\n schemaType: props.schemaType,\n readOnly,\n path: props.path,\n id: toString(props.path),\n level: props.level,\n focused: isEqual(props.path, props.focusPath),\n focusPath: trimChildPath(props.path, props.focusPath),\n presence,\n validation,\n // this is currently needed by getExpandOperations which needs to know about hidden members\n // (e.g. members not matching current group filter) in order to determine what to expand\n members: filtereredMembers,\n groups: visibleGroups,\n }\n Object.defineProperty(node, '_allMembers', {\n value: members,\n enumerable: false,\n })\n return node\n}\n\nfunction prepareArrayOfPrimitivesInputState<T extends (boolean | string | number)[]>(\n props: RawState<ArraySchemaType, T>,\n): ArrayOfPrimitivesFormNode | null {\n if (props.level === MAX_FIELD_DEPTH) {\n return null\n }\n\n const conditionalPropertyContext = {\n comparisonValue: props.comparisonValue,\n value: props.value,\n parent: props.parent,\n document: props.document,\n currentUser: props.currentUser,\n }\n\n const hidden = resolveConditionalProperty(props.schemaType.hidden, conditionalPropertyContext)\n\n if (hidden) {\n return null\n }\n\n const readOnly =\n props.readOnly ||\n resolveConditionalProperty(props.schemaType.readOnly, conditionalPropertyContext)\n\n // Todo: improve error handling at the parent level so that the value here is either undefined or an array\n const items = Array.isArray(props.value) ? props.value : []\n\n const filteredPresence = props.presence.filter((item) => isEqual(item.path, props.path))\n const presence = filteredPresence.length ? filteredPresence : EMPTY_ARRAY\n const validation = props.validation\n .filter((item) => isEqual(item.path, props.path))\n .map((v) => ({level: v.level, message: v.message, path: v.path}))\n const members = items.flatMap((item, index) =>\n prepareArrayOfPrimitivesMember({arrayItem: item, parent: props, index}),\n )\n return {\n // checks for changes not only on the array itself, but also on any of its items\n changed: props.changed || members.some((m) => m.kind === 'item' && m.item.changed),\n value: props.value as T,\n readOnly,\n schemaType: props.schemaType,\n focused: isEqual(props.path, props.focusPath),\n focusPath: trimChildPath(props.path, props.focusPath),\n path: props.path,\n id: toString(props.path),\n level: props.level,\n validation,\n presence,\n members,\n }\n}\n\nfunction prepareArrayOfObjectsInputState<T extends {_key: string}[]>(\n props: RawState<ArraySchemaType, T>,\n): ArrayOfObjectsFormNode | null {\n if (props.level === MAX_FIELD_DEPTH) {\n return null\n }\n\n const conditionalPropertyContext = {\n value: props.value,\n parent: props.parent,\n document: props.document,\n currentUser: props.currentUser,\n }\n const hidden = resolveConditionalProperty(props.schemaType.hidden, conditionalPropertyContext)\n\n if (hidden) {\n return null\n }\n\n const readOnly =\n props.readOnly ||\n resolveConditionalProperty(props.schemaType.readOnly, conditionalPropertyContext)\n\n // Todo: improve error handling at the parent level so that the value here is either undefined or an array\n const items = Array.isArray(props.value) ? props.value : []\n\n const filteredPresence = props.presence.filter((item) => isEqual(item.path, props.path))\n const presence = filteredPresence.length ? filteredPresence : EMPTY_ARRAY\n const validation = props.validation\n .filter((item) => isEqual(item.path, props.path))\n .map((v) => ({level: v.level, message: v.message, path: v.path}))\n\n const members = items.flatMap((item, index) =>\n prepareArrayOfObjectsMember({\n arrayItem: item,\n parent: props,\n index,\n }),\n )\n\n return {\n // checks for changes not only on the array itself, but also on any of its items\n changed: props.changed || members.some((m) => m.kind === 'item' && m.item.changed),\n value: props.value as T,\n readOnly,\n schemaType: props.schemaType,\n focused: isEqual(props.path, props.focusPath),\n focusPath: trimChildPath(props.path, props.focusPath),\n path: props.path,\n id: toString(props.path),\n level: props.level,\n validation,\n presence,\n members,\n }\n}\n\n/*\n * Takes a field in context of a parent object and returns prepared props for it\n */\nfunction prepareArrayOfObjectsMember(props: {\n arrayItem: {_key: string}\n parent: RawState<ArraySchemaType, unknown>\n index: number\n}): ArrayOfObjectsMember {\n const {arrayItem, parent, index} = props\n\n const itemType = getItemType(parent.schemaType, arrayItem) as ObjectSchemaType\n\n const key = arrayItem._key\n\n if (!itemType) {\n const itemTypeName = resolveTypeName(arrayItem)\n return {\n kind: 'error',\n key,\n index,\n error: {\n type: 'INVALID_ITEM_TYPE',\n resolvedValueType: itemTypeName,\n value: arrayItem,\n validTypes: parent.schemaType.of,\n },\n }\n }\n\n const itemPath = pathFor([...parent.path, {_key: key}])\n const itemLevel = parent.level + 1\n\n const conditionalPropertyContext = {\n value: parent.value,\n parent: props.parent,\n document: parent.document,\n currentUser: parent.currentUser,\n }\n const readOnly =\n parent.readOnly ||\n resolveConditionalProperty(parent.schemaType.readOnly, conditionalPropertyContext)\n\n const fieldGroupState = parent.fieldGroupState?.children?.[key]\n const scopedCollapsedPaths = parent.collapsedPaths?.children?.[key]\n const scopedCollapsedFieldsets = parent.collapsedFieldSets?.children?.[key]\n const comparisonValue =\n (Array.isArray(parent.comparisonValue) &&\n parent.comparisonValue.find((i) => i._key === arrayItem._key)) ||\n undefined\n\n const itemState = prepareObjectInputState(\n {\n schemaType: itemType,\n level: itemLevel,\n document: parent.document,\n value: arrayItem,\n comparisonValue,\n changed: isChangedValue(arrayItem, comparisonValue),\n path: itemPath,\n focusPath: parent.focusPath,\n openPath: parent.openPath,\n currentUser: parent.currentUser,\n collapsedPaths: scopedCollapsedPaths,\n collapsedFieldSets: scopedCollapsedFieldsets,\n presence: parent.presence,\n validation: parent.validation,\n fieldGroupState,\n readOnly,\n },\n false,\n ) as ObjectArrayFormNode\n\n const defaultCollapsedState = getCollapsedWithDefaults(itemType.options, itemLevel)\n const collapsed = scopedCollapsedPaths?.value ?? defaultCollapsedState.collapsed\n return {\n kind: 'item',\n key,\n index,\n open: startsWith(itemPath, parent.openPath),\n collapsed: collapsed,\n collapsible: true,\n parentSchemaType: parent.schemaType,\n item: itemState,\n }\n}\n\n/*\n * Takes a field in contet of a parent object and returns prepared props for it\n */\nfunction prepareArrayOfPrimitivesMember(props: {\n arrayItem: unknown\n parent: RawState<ArraySchemaType, unknown>\n index: number\n}): ArrayOfPrimitivesMember {\n const {arrayItem, parent, index} = props\n const itemType = getPrimitiveItemType(parent.schemaType, arrayItem)\n\n const itemPath = pathFor([...parent.path, index])\n const itemValue = (parent.value as unknown[] | undefined)?.[index] as string | boolean | number\n const itemComparisonValue = (parent.comparisonValue as unknown[] | undefined)?.[index] as\n | string\n | boolean\n | number\n const itemLevel = parent.level + 1\n\n // Best effort attempt to make a stable key for each item in the array\n // Since items may be reordered and change at any time, there's no way to reliably address each item uniquely\n // This is a \"best effort\"-attempt at making sure we don't re-use internal state for item inputs\n // when items are added to or removed from the array\n const key = `${itemType?.name || 'invalid-type'}-${String(index)}`\n\n if (!itemType) {\n return {\n kind: 'error',\n key,\n index,\n error: {\n type: 'INVALID_ITEM_TYPE',\n validTypes: parent.schemaType.of,\n resolvedValueType: resolveTypeName(itemType),\n value: itemValue,\n },\n }\n }\n\n const readOnly =\n parent.readOnly ||\n resolveConditionalProperty(itemType.readOnly, {\n value: itemValue,\n parent: parent.value,\n document: parent.document,\n currentUser: parent.currentUser,\n })\n\n const item = preparePrimitiveInputState({\n ...parent,\n path: itemPath,\n schemaType: itemType as PrimitiveSchemaType,\n level: itemLevel,\n value: itemValue,\n comparisonValue: itemComparisonValue,\n readOnly,\n })\n\n return {\n kind: 'item',\n key,\n index,\n parentSchemaType: parent.schemaType,\n open: isEqual(itemPath, parent.openPath),\n item,\n }\n}\n\nfunction preparePrimitiveInputState<SchemaType extends PrimitiveSchemaType>(\n props: RawState<SchemaType, unknown>,\n): PrimitiveFormNode {\n const filteredPresence = props.presence.filter((item) => isEqual(item.path, props.path))\n const presence = filteredPresence.length ? filteredPresence : EMPTY_ARRAY\n\n const validation = props.validation\n .filter((item) => isEqual(item.path, props.path))\n .map((v) => ({level: v.level, message: v.message, path: v.path}))\n return {\n schemaType: props.schemaType,\n changed: isChangedValue(props.value, props.comparisonValue),\n value: props.value,\n level: props.level,\n id: toString(props.path),\n readOnly: props.readOnly,\n focused: isEqual(props.path, props.focusPath),\n path: props.path,\n presence,\n validation,\n } as PrimitiveFormNode\n}\n\n/** @internal */\nexport type FIXME_SanityDocument = Record<string, unknown>\n\n/** @internal */\nexport function prepareFormState<T extends FIXME_SanityDocument>(\n props: RawState<ObjectSchemaType, T>,\n): ObjectFormNode | null {\n return prepareObjectInputState(props)\n}\n","/* eslint-disable camelcase */\n\nimport {ObjectSchemaType, Path, ValidationMarker} from '@sanity/types'\nimport {useLayoutEffect, useMemo, useRef} from 'react'\nimport {pathFor} from '@sanity/util/paths'\nimport {FormNodePresence} from '../../presence'\nimport {useCurrentUser} from '../../store'\nimport {StateTree, ObjectFormNode} from './types'\nimport {prepareFormState, FIXME_SanityDocument} from './formState'\nimport {immutableReconcile} from './utils/immutableReconcile'\nimport {DocumentFormNode} from './types/nodes'\n\n/** @internal */\nexport type FormState<\n T extends {[key in string]: unknown} = {[key in string]: unknown},\n S extends ObjectSchemaType = ObjectSchemaType,\n> = ObjectFormNode<T, S>\n\n/** @internal */\nexport function useFormState<\n T extends {[key in string]: unknown} = {[key in string]: unknown},\n S extends ObjectSchemaType = ObjectSchemaType,\n>(\n schemaType: ObjectSchemaType,\n {\n comparisonValue,\n value,\n fieldGroupState,\n collapsedFieldSets,\n collapsedPaths,\n focusPath,\n openPath,\n presence,\n validation,\n readOnly,\n changesOpen,\n }: {\n fieldGroupState?: StateTree<string> | undefined\n collapsedFieldSets?: StateTree<boolean> | undefined\n collapsedPaths?: StateTree<boolean> | undefined\n value: Partial<FIXME_SanityDocument>\n comparisonValue: Partial<FIXME_SanityDocument> | null\n openPath: Path\n focusPath: Path\n presence: FormNodePresence[]\n validation: ValidationMarker[]\n changesOpen?: boolean\n readOnly?: boolean\n },\n): FormState<T, S> | null {\n // note: feel free to move these state pieces out of this hook\n const currentUser = useCurrentUser()\n\n const prev = useRef<DocumentFormNode | null>(null)\n\n useLayoutEffect(() => {\n prev.current = null\n }, [schemaType])\n\n return useMemo(() => {\n // console.time('derive form state')\n const next = prepareFormState({\n schemaType,\n document: value,\n fieldGroupState,\n collapsedFieldSets,\n collapsedPaths,\n value,\n comparisonValue,\n focusPath,\n openPath,\n readOnly,\n path: pathFor([]),\n level: 0,\n currentUser,\n presence,\n validation,\n changesOpen,\n }) as ObjectFormNode<T, S> // TODO: remove type cast\n\n const reconciled = immutableReconcile(prev.current, next)\n prev.current = reconciled\n // console.timeEnd('derive form state')\n return reconciled\n }, [\n schemaType,\n value,\n fieldGroupState,\n collapsedFieldSets,\n collapsedPaths,\n comparisonValue,\n focusPath,\n openPath,\n readOnly,\n currentUser,\n presence,\n validation,\n changesOpen,\n ])\n}\n","import {arrayToJSONMatchPath} from '@sanity/mutator'\nimport {Path, PathSegment} from '@sanity/types'\n\nconst IS_NUMERIC = /^\\d+$/\n\nfunction unquote(str: string) {\n return str.replace(/^['\"]/, '').replace(/['\"]$/, '')\n}\n\nfunction splitAttr(segment: string) {\n const [attr, key] = segment.split('==')\n return {[attr]: unquote(key)}\n}\n\nfunction coerce(segment: string): PathSegment {\n return IS_NUMERIC.test(segment) ? Number(segment) : segment\n}\n\nfunction parseGradientPath(focusPathStr: string): Path {\n return focusPathStr\n .split(/[[.\\]]/g)\n .filter(Boolean)\n .map((seg) => (seg.includes('==') ? splitAttr(seg) : coerce(seg))) as Path\n}\n\n/**\n * @internal\n */\nexport function encodePath(formBuilderPath: Path): string {\n return arrayToJSONMatchPath(formBuilderPath)\n}\n\n/**\n * @internal\n */\nexport function decodePath(gradientPath: string): Path {\n return parseGradientPath(gradientPath)\n}\n","import {arrayToJSONMatchPath} from '@sanity/mutator'\nimport {flatten} from 'lodash'\nimport {SANITY_PATCH_TYPE} from '../patch'\nimport type {FormPatchOrigin, FormPatch} from '../patch/types'\nimport {decodePath} from './path'\n\n/**\n * @internal\n */\nexport type MutationPatch = Record<string, any> // @todo: complete this typing\n\n/**\n * @internal\n */\nexport function toMutationPatches(patches: FormPatch[]): MutationPatch[] {\n return patches.map(toMutationPatch)\n}\n\n/**\n * @internal\n */\nexport function fromMutationPatches(\n origin: FormPatchOrigin,\n patches: MutationPatch[],\n): FormPatch[] {\n return flatten(patches.map((patch) => toFormBuilderPatches(origin, patch)))\n}\n\nconst notIn = (values: unknown[]) => (value: unknown) => !values.includes(value)\n\nfunction toFormBuilderPatches(origin: FormPatchOrigin, patch: MutationPatch): FormPatch[] {\n return flatten(\n Object.keys(patch)\n .filter(notIn(['id', 'ifRevisionID', 'query']))\n .map((type) => {\n if (type === 'unset') {\n return patch.unset.map((path: any) => {\n return {\n type: 'unset',\n path: decodePath(path),\n origin,\n }\n })\n }\n if (type === 'insert') {\n const position = 'before' in patch.insert ? 'before' : 'after'\n return {\n type: 'insert',\n position: position,\n path: decodePath(patch.insert[position]),\n items: patch.insert.items,\n origin,\n }\n }\n return Object.keys(patch[type])\n .map((gradientPath) => {\n if (type === 'set') {\n return {\n type: 'set',\n path: decodePath(gradientPath),\n value: patch[type][gradientPath],\n origin,\n }\n }\n if (type === 'inc' || type === 'dec') {\n return {\n type: type,\n path: decodePath(gradientPath),\n value: patch[type][gradientPath],\n origin,\n }\n }\n if (type === 'setIfMissing') {\n return {\n type: 'setIfMissing',\n path: decodePath(gradientPath),\n value: patch[type][gradientPath],\n origin,\n }\n }\n if (type === 'diffMatchPatch') {\n return {\n type,\n path: decodePath(gradientPath),\n value: patch[type][gradientPath],\n origin,\n }\n }\n // eslint-disable-next-line no-console\n console.warn(new Error(`Unsupported patch type: ${type}`))\n return null\n })\n .filter(Boolean)\n }),\n )\n}\n\nfunction toMutationPatch(patch: FormPatch): MutationPatch {\n if (patch.patchType !== SANITY_PATCH_TYPE && patch.type) {\n throw new Error(\n `Patch is missing \"patchType\" - import and use \"${patch.type}()\" from \"sanity/form\"`,\n )\n } else if (patch.patchType !== SANITY_PATCH_TYPE) {\n throw new Error(\n `Patch is missing \"patchType\" - import and use the patch method helpers from \"sanity/form\"`,\n )\n }\n\n const matchPath = arrayToJSONMatchPath(patch.path || [])\n if (patch.type === 'insert') {\n const {position, items} = patch\n return {\n insert: {\n [position]: matchPath,\n items: items,\n },\n }\n }\n\n if (patch.type === 'unset') {\n return {\n unset: [matchPath],\n }\n }\n\n if (!patch.type) {\n throw new Error(`Missing patch type in patch ${JSON.stringify(patch)}`)\n }\n if (matchPath) {\n return {\n [patch.type]: {\n [matchPath]: patch.value,\n },\n }\n }\n return {\n [patch.type]: patch.value,\n }\n}\n"],"names":["noop","NoopTracker","_ref","children","createNoopTrackerScope","useReportedValues","Tracker","useReporter","ChangeFieldWrapper","props","ref","React","useRef","onSetFocus","default","useContext","ConnectorContext","isHover","setHover","useState","onMouseEnter","useCallback","onMouseLeave","concat","PathUtils","toString","path","element","current","isChanged","hasFocus","hasHover","hasRevertHover","deepCompare","handleClick","event","setFocusWithStopPropagation","jsx","onClick","stopPropagation","isArray","value","Array","isTruthy","Boolean","BUNDLED_DOC_TYPES","_isSanityDocumentTypeDefinition","def","type","includes","name","_isCustomDocumentTypeDefinition","FONT_SANS_SERIF","FONT_MONOSPACE","uncaughtErrorHandler","join","useThrottledCallback","callback","wait","options","throttledCallback","useMemo","throttle","useOnScroll","parentContext","ScrollContext","useEffect","subscribe","ScrollMonitor","_ref2","onScroll","findMostSpecificTarget","targetType","id","values","pathString","slice","indexOf","fromString","exactId","has","get","mostSpecific","targetId","target","startsWith","numEqual","numEqualSegments","lastPathSegment","length","pathOnlyDiffersByKey","isKeyedObject","isChangeBar","v","hasOverflowScroll","el","overflow","getComputedStyle","isScrollable","scrollableContent","scrollHeight","offsetHeight","scrollWidth","offsetWidth","SCROLL_INTO_VIEW_TOP_PADDING","scrollIntoView","field","parentElementWithScroll","parentElement","scroll","top","scrollTop","rect","bounds","left","behavior","getOffsetsTo","source","height","width","foundScrollContainer","contains","offsetTop","offsetLeft","scrollLeft","offsetParent","useResizeObserver","onResize","resizeObserver","observe","getState","allReportedValues","hovered","byId","rootElement","changeBarsWithHover","changeBarsWithFocus","reportedChangeBar","push","isHoverConnector","changeBars","connectors","map","_ref3","change","filter","isNonNullable","_ref4","ConnectorsOverlay","setHovered","Map","setState","visibleConnectors","sortBy","c","handleScrollOrResize","SvgWrapper","style","zIndex","_ref5","ConnectorGroup","onConnectorClick","handleMouseEnter","handleMouseLeave","from","to","jsxs","Fragment","Connector","DEBUG_LAYER_BOUNDS","EnabledChangeConnectorRoot","_ref6","className","isReviewChangesOpen","onOpenReviewChanges","restProps","setRootElement","contextValue","Provider","ScrollContainer","DisabledChangeConnectorRoot","_ref7","ChangeConnectorRoot","NoJsStyles","NoJavascript","href","errorHandlerScript","GlobalErrorHandler","dangerouslySetInnerHTML","__html","Favicons","_ref8","basePath","base","replace","rel","sizes","globalStyles","EMPTY_ARRAY","DefaultDocument","entryPath","css","lang","charSet","content","src","actionIds","WeakMap","counter","getHookId","actionHook","cachedId","displayName","set","requestIdleCallbackShim","start","Date","now","setTimeout","didTimeout","timeRemaining","Math","max","cancelIdleCallbackShim","handle","clearTimeout","_requestIdleCallback","requestIdleCallback","_cancelIdleCallback","cancelIdleCallback","throttleOptions","trailing","GetHookCollectionState","hooks","args","onReset","statesRef","tickId","setTick","keys","setKeys","ricHandle","handleRequestUpdate","tick","handleRequestUpdateThrottled","handleNext","hookState","handleReset","currentKeys","hookIds","hook","states","_a","key","HookStateContainer","onNext","onRequestUpdate","Hotkeys","_ref9","makePlatformAware","hotKeys","platformifyKey","UIHotkeys","IS_APPLE_DEVICE","navigator","platform","test","lowerKey","toLowerCase","matchCase","original","orgLength","char","i","toUpperCase","IntentButton","disabled","Button","as","role","IntentLink","defineConfig","config","createConfig","validatePlugin","pluginResult","messages","isString","Error","message","definePlugin","arg","pluginFactory","result","createPlugin","defineDocumentFieldAction","fieldAction","defineDocumentInspector","inspector","createMockAuthStore","_ref10","client","currentUser","state","of","authenticated","INITIAL","useConnectionState","publishedDocId","docTypeName","documentStore","useDocumentStore","useMemoObservable","pair","documentEvents","pipe","ev","eventType","switchMap","isConnected","timer","mapTo","startWith","distinctUntilChanged","useDocumentOperationEvent","operationEvents","useEditState","priority","arguments","undefined","editState","share","merge","take","skip","debounce","PERIODS","useFormattedDuration","durationMs","resolution","unitDisplay","locale","useCurrentLocale","listFormat","useListFormat","isNegative","duration","parseMilliseconds","abs","formatters","days","intlCache","numberFormat","unit","hours","minutes","seconds","milliseconds","parts","period","prefix","format","formatted","iso8601","durationToISO8601","trunc","dur","date","time","toFixed","useNumberFormat","currentLocale","SYNCING","isSyncing","NOT_SYNCING","useSyncState","documentType","consistencyStatus","isConsistent","useTimeAgo","useRelativeTime","minimal","useTemporalPhrase","agoSuffix","useTools","useSource","tools","validation","isValidating","useValidationStatus","createPatchChannel","_subscribers","publish","msg","subscriber","idx","splice","isEqual","item","otherItem","_key","every","child","obj","otherObj","Object","otherKeys","keyName","ArrayOfOptionsFieldDiff","_ref11","diff","schemaType","list","colorManager","useUserColorManager","t","useTranslation","items","normalizeItems","sort","sortItems","index","annotation","isPresent","memberType","title","color","getAnnotationColor","action","Flex","align","DiffTooltip","annotations","description","Checkbox","checked","Box","margin","FromToArrow","ItemPreview","getItemKey","parentDiff","fromValue","toValue","getValue","wasPresent","isInArray","getItemTitle","resolveMemberType","itemIndex","getOptionIndex","itemA","itemB","_ref12","marginX","marginY","Preview","layout","parent","array","some","itemTypeName","resolveTypeName","find","jsType","resolveJSType","_type","val","isNamedOption","findIndex","opt","UrlFieldDiff","_ref13","DiffFromTo","previewComponent","StringPreview","SlugFieldDiff","_ref14","SlugPreview","diffResolver","_ref15","DatetimeFieldDiff","jsonType","DefaultCustomMarkers","Text","size","HoveredFieldProvider","hoveredStack","setHoveredStack","pathToString","prev","context","HoveredFieldContext","missingPatchChannel","console","warn","FormBuilderProvider","__internal_fieldActions","fieldActions","__internal_patchChannel","patchChannel","autoFocus","changesOpen","collapsedFieldSets","collapsedPaths","file","filterField","focusPath","focused","groups","image","onChange","onFieldGroupSelect","onPathBlur","onPathFocus","onPathOpen","onSetFieldSetCollapsed","onSetPathCollapsed","presence","readOnly","renderAnnotation","renderBlock","renderField","renderInlineBlock","renderInput","renderItem","renderPreview","unstable","__internal","components","ArrayFunctions","ArrayOfObjectsFunctions","CustomMarkers","Markers","DefaultMarkers","actions","assetSources","directUploads","formBuilder","FormBuilderContext","FormCallbacksProvider","DocumentIdProvider","PresenceProvider","ValidationProvider","FormProvider","form","Input","useInputComponent","Field","useFieldComponent","usePreviewComponent","Item","useItemComponent","Block","useBlockComponent","InlineBlock","useInlineBlockComponent","Annotation","useAnnotationComponent","inputProps","fieldProps","itemProps","previewProps","PreviewLoader","component","blockProps","annotationProps","FormBuilder","members","handleCollapseField","fieldName","handleExpandField","handleBlur","handleFocus","handleChange","patch","PatchEvent","focusRef","handleSelectFieldGroup","groupName","handleOpenField","handleCloseField","handleCollapseFieldSet","fieldSetName","handleExpandFieldSet","rootInputProps","elementProps","onBlur","onFocus","changed","m","kind","level","onFieldClose","onFieldCollapse","onFieldSetCollapse","onFieldExpand","onFieldSetExpand","onFieldOpen","GetFormValueProvider","FormValueProvider","DocumentFieldActionsProvider","useReviewChanges","reviewChanges","ReviewChangesContext","trimChildPath","childPath","trimLeft","PresenceScope","contextPresence","FormFieldPresenceContext","childPresence","ArrayOfObjectsInputMember","member","ArrayOfObjectsItem","MemberItemError","ArrayOfObjectsInputMembers","rest","defaultRenderAnnotation","createElement","defaultResolveAnnotationComponent","defaultRenderBlock","defaultResolveBlockComponent","defaultRenderInlineBlock","defaultResolveInlineBlockComponent","defaultRenderField","defaultResolveFieldComponent","defaultRenderInput","defaultResolveInputComponent","defaultRenderItem","defaultResolveItemComponent","defaultRenderPreview","remoteSnapshots","memoize","idPair","typeName","memoizedPair","_ref16","published","draft","remoteSnapshot$","memoizeKeyGen","maybeSerialize","template","isBuilder","serialize","prepareTemplates","schema","initialValueTemplates","serialized","validateTemplates","defaultTemplateForType","icon","initialValue","defaultTemplatesForSchema","schemaTypes","getTypeNames","LOADING_STATE","isLoaded","useDocumentType","documentId","specifiedType","publishedId","getPublishedId","isResolved","SYNC_RESOLVED_STATE","resolvedState","setDocumentType","sub","resolveTypeForDocument","unsubscribe","INITIAL_TIMELINE_STATE","chunks","hasMoreChunks","isLoading","isPristine","lastNonDeletedRevId","onOlderRevision","realRevChunk","revTime","selectionState","sinceAttributes","sinceTime","timelineDisplayed","timelineReady","useTimelineStore","_ref17","onError","rev","since","historyStore","useHistoryStore","snapshotsSubscriptionRef","timelineStateRef","useClient","DEFAULT_STUDIO_CLIENT_OPTIONS","controller","getTimelineController","timelineController$","BehaviorSubject","setRange","next","handler","err","innerController","error","resume","suspend","draftId","handleRemoteMutation","timelineStore","findRangeForRev","chunk","findRangeForNewRev","findRangeForSince","findRangeForNewSince","loadMore","setLoadMore","getSnapshot","subscription","tap","timeline","mapChunks","lastNonDeletedChunk","reachedEarliestEntry","currentObjectDiff","displayed","deepEquals","catchError","timelineState","useTimelineSelector","selector","useSyncExternalStoreWithSelector","useProject","projectStore","useProjectStore","setValue","project$","useProjectDatasets","getDatasets","resolveConfig","workspaces","prepareConfig","combineLatest","flatMap","workspaceSummary","sources","_ref18","unstable_sources","createWorkspaceFromConfig","getClient","apiVersion","workspace","firstValueFrom","auth","createSourceFromConfig","useConfigContextFromSource","projectId","dataset","i18n","getConfigContextFromSource","_buildTints","bg","mid","fg","mix","_toHex","red","green","blue","parseToRgb","rgb","_isDark","getLuminance","_multiply","b","parseColor","s","hex","rgbToHex","multiply","_screen","screen","NEUTRAL_TONES","buildColor","legacyPalette","legacyTones","createColorTheme","_ref19","dark","navbar","stateTones","blend","tints","skeletonFrom","border","focusRing","focus","shadow","outline","rgba","umbra","black","penumbra","ambient","skeleton","solid","_ref20","tone","buttonTones","button","blendInvert","defaultTints","isNeutral","muted","accent","link","code","critical","primary","_ref21","_ref22","mode","enabled","pressed","selected","card","_ref23","input","_ref24","bg2","placeholder","hues","gray","selectable","_ref25","spot","_ref26","syntax","_ref27","mainShade","secondaryShade","atrule","purple","attrName","positive","attrValue","caution","attribute","boolean","builtin","cdata","class","orange","cyan","comment","constant","deleted","doctype","entity","function","hexcode","important","inserted","keyword","magenta","number","operator","prolog","property","pseudoClass","pseudoElement","punctuation","regex","string","symbol","tag","url","variable","buildFonts","cssCustomProperties","defaults","studioTheme","fonts","family","heading","label","text","buildLegacyPalette","defaultButton","success","warning","danger","mainNavigation","info","buildLegacyTones","transparent","buildLegacyTheme","partialLegacyTheme","legacyTheme","resolveLegacyTheme","__dark","light","__legacy","defaultCustomProperties","white","yellow","StudioLogo","padding","weight","Studio","onSchemeChange","scheme","unstable_globalStyles","unstable_history","unstable_noAuthBoundary","StudioProvider","GlobalStyle","StudioLayout","renderStudio","opts","reactStrictMode","root","createRoot","render","StrictMode","unmount","WithReferringDocuments","_ref28","useReferringDocuments","ZIndexProvider","_ref29","ZIndexContext","BetaBadge","fontSize","Badge","radius","RelativeTime","_ref30","timestamp","timeAgo","dateTime","toISOString","TelephoneInput","validationError","TextInput","inputMode","customValidity","setAtPath","currentTree","head","tail","isKeySegment","String","MAX_FIELD_DEPTH","AUTO_COLLAPSE_DEPTH","ALL_FIELDS_GROUP","hidden","isObjectFormNode","formNode","isObjectSchemaType","isArrayOfObjectsFormNode","isArrayOfObjectsSchemaType","hasAllMembers","_allMembers","getExpandOperations","node","p","getFieldsetAndFieldGroupOperations","getObjectFieldsetAndFieldGroupOperations","getArrayFieldsetAndFieldGroupOperations","_b","fieldsetMember","fieldSet","fieldMember","schemaField","fields","selectedGroupName","group","defaultGroupName","inSelectedGroup","castArray","ops","isMemberArrayOfObjects","isMemberObject","segment","foundMember","resolveConditionalProperty","document","getItemType","arrayType","getPrimitiveItemType","getCollapsedWithDefaults","collapsible","collapsable","collapsed","isFieldEnabledByGroupFilter","groupsConfig","fieldGroup","selectedGroup","isAcceptedObjectValue","isRecord","isValidArrayOfObjectsValue","isValidArrayOfPrimitivesValue","everyItemIsObject","findDuplicateKeyEntries","seenKeys","Set","reduce","acc","add","hasKey","everyItemHasKey","isChangedValue","comparisonValue","_isEqual","prepareFieldMember","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","fieldPath","pathFor","fieldLevel","getFieldLevel","parentValue","parentComparisonValue","normalizedFieldGroupNames","fieldValue","fieldComparisonValue","expectedSchemaType","resolvedValueType","conditionalPropertyContext","fieldGroupState","scopedCollapsedPaths","scopedCollapsedFieldsets","inputState","prepareObjectInputState","openPath","defaultCollapsedState","open","isArraySchemaType","hasValue","duplicateKeyEntries","duplicates","scopedCollapsedFieldSets","fieldState","prepareArrayOfObjectsInputState","prepareArrayOfPrimitivesInputState","preparePrimitiveInputState","enableHiddenCheck","schemaTypeGroupConfig","g","groupHidden","isSelected","normalizedSchemaMembers","fieldsets","single","fieldsetFieldNames","f","fieldsetHidden","pick","fieldsetReadOnly","fieldsetMembers","_inSelectedGroup","columns","hasFieldGroups","filteredPresence","visibleMembers","visibleGroups","hasVisibleMembers","filtereredMembers","filteredFieldsetMembers","defineProperty","enumerable","prepareArrayOfPrimitivesMember","arrayItem","prepareArrayOfObjectsMember","itemType","validTypes","itemPath","itemLevel","itemState","parentSchemaType","itemValue","itemComparisonValue","prepareFormState","useFormState","_ref31","useCurrentUser","useLayoutEffect","reconciled","immutableReconcile","IS_NUMERIC","unquote","str","splitAttr","attr","split","coerce","Number","parseGradientPath","focusPathStr","seg","encodePath","formBuilderPath","arrayToJSONMatchPath","decodePath","gradientPath","toMutationPatches","patches","toMutationPatch","fromMutationPatches","origin","flatten","toFormBuilderPatches","notIn","unset","position","insert","patchType","SANITY_PATCH_TYPE","matchPath","JSON","stringify"],"mappings":"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"}