From 9795480a37e6526c8292308eb4b8d42b106ec006 Mon Sep 17 00:00:00 2001
From: Espen Hovlandsdal <espen@hovlandsdal.com>
Date: Fri, 19 Jan 2024 10:08:37 -0800
Subject: [PATCH] refactor: colocate duplicate type + value imports (#5515)

---
 packages/@sanity/cli/src/types.ts             |   3 +-
 .../__tests__/PortableTextEditorTester.tsx    |   8 +-
 .../core/form/inputs/arrays/common/list.tsx   |   5 +-
 .../src/core/form/studio/FormBuilder.tsx      |   2 +-
 .../sanity/src/core/preview/availability.ts   |  12 +-
 .../src/core/preview/createPreviewObserver.ts |   9 +-
 .../document/resolveTypeForDocument.ts        |   3 +-
 .../src/core/util/useThrottledCallback.ts     |   3 +-
 packages/sanity/src/desk/index.ts             | 207 +++++++++---------
 9 files changed, 129 insertions(+), 123 deletions(-)

diff --git a/packages/@sanity/cli/src/types.ts b/packages/@sanity/cli/src/types.ts
index b9bf4f54abb..7c2b3dff11c 100644
--- a/packages/@sanity/cli/src/types.ts
+++ b/packages/@sanity/cli/src/types.ts
@@ -1,6 +1,5 @@
-import type ora from 'ora'
+import ora, {type Ora} from 'ora'
 import type chalk from 'chalk'
-import type {Ora} from 'ora'
 import type {SanityClient} from '@sanity/client'
 import type {Separator, DistinctQuestion, Answers, ChoiceCollection} from 'inquirer'
 import type {InlineConfig, ConfigEnv} from 'vite'
diff --git a/packages/@sanity/portable-text-editor/src/editor/__tests__/PortableTextEditorTester.tsx b/packages/@sanity/portable-text-editor/src/editor/__tests__/PortableTextEditorTester.tsx
index 50a08849a40..1c925e415e9 100644
--- a/packages/@sanity/portable-text-editor/src/editor/__tests__/PortableTextEditorTester.tsx
+++ b/packages/@sanity/portable-text-editor/src/editor/__tests__/PortableTextEditorTester.tsx
@@ -2,8 +2,12 @@ import React, {ForwardedRef, forwardRef, useCallback, useEffect} from 'react'
 import {Schema} from '@sanity/schema'
 
 import {defineArrayMember, defineField} from '@sanity/types'
-import {PortableTextEditor, PortableTextEditable} from '../../index'
-import type {PortableTextEditorProps, PortableTextEditableProps} from '../../index'
+import {
+  PortableTextEditor,
+  PortableTextEditable,
+  type PortableTextEditorProps,
+  type PortableTextEditableProps,
+} from '../../index'
 
 const imageType = defineField({
   type: 'image',
diff --git a/packages/sanity/src/core/form/inputs/arrays/common/list.tsx b/packages/sanity/src/core/form/inputs/arrays/common/list.tsx
index d3a3b3ebe91..1cf2d0e3b53 100644
--- a/packages/sanity/src/core/form/inputs/arrays/common/list.tsx
+++ b/packages/sanity/src/core/form/inputs/arrays/common/list.tsx
@@ -15,8 +15,11 @@ import {
   PointerSensor,
   useSensor,
   useSensors,
+  type SensorOptions,
+  type AutoScrollOptions,
+  type DragStartEvent,
+  type DragEndEvent,
 } from '@dnd-kit/core'
-import type {SensorOptions, AutoScrollOptions, DragStartEvent, DragEndEvent} from '@dnd-kit/core'
 import {
   horizontalListSortingStrategy,
   SortableContext,
diff --git a/packages/sanity/src/core/form/studio/FormBuilder.tsx b/packages/sanity/src/core/form/studio/FormBuilder.tsx
index 6de25e33a41..c44f43bcba2 100644
--- a/packages/sanity/src/core/form/studio/FormBuilder.tsx
+++ b/packages/sanity/src/core/form/studio/FormBuilder.tsx
@@ -13,6 +13,7 @@ import {
   ItemProps,
   ObjectInputProps,
   RenderPreviewCallbackProps,
+  type FormDocumentValue,
 } from '../types'
 import {StateTree} from '../store'
 import {EMPTY_ARRAY} from '../../util'
@@ -29,7 +30,6 @@ import {
   usePreviewComponent,
 } from '../form-components-hooks'
 import {PreviewLoader} from '../../preview'
-import type {FormDocumentValue} from '../types'
 import {FormValueProvider} from '../contexts/FormValue'
 import {GetFormValueProvider} from '../contexts/GetFormValue'
 import {FormProvider} from './FormProvider'
diff --git a/packages/sanity/src/core/preview/availability.ts b/packages/sanity/src/core/preview/availability.ts
index 2f80bd02249..16c078fcdc1 100644
--- a/packages/sanity/src/core/preview/availability.ts
+++ b/packages/sanity/src/core/preview/availability.ts
@@ -6,18 +6,18 @@ import {distinctUntilChanged, map, mergeMap, reduce, switchMap} from 'rxjs/opera
 import shallowEquals from 'shallow-equals'
 import {flatten, keyBy} from 'lodash'
 import {getDraftId, getPublishedId, isRecord} from '../util'
-import type {
-  AvailabilityResponse,
-  DocumentAvailability,
-  DraftsModelDocumentAvailability,
-} from './types'
 import {debounceCollect} from './utils/debounceCollect'
 import {
   AVAILABILITY_NOT_FOUND,
   AVAILABILITY_PERMISSION_DENIED,
   AVAILABILITY_READABLE,
 } from './constants'
-import {ObservePathsFn} from './types'
+import {
+  ObservePathsFn,
+  type AvailabilityResponse,
+  type DocumentAvailability,
+  type DraftsModelDocumentAvailability,
+} from './types'
 
 const MAX_DOCUMENT_ID_CHUNK_SIZE = 11164
 
diff --git a/packages/sanity/src/core/preview/createPreviewObserver.ts b/packages/sanity/src/core/preview/createPreviewObserver.ts
index ff6a1d8006b..a3baa3d1348 100644
--- a/packages/sanity/src/core/preview/createPreviewObserver.ts
+++ b/packages/sanity/src/core/preview/createPreviewObserver.ts
@@ -8,9 +8,14 @@ import {
 } from '@sanity/types'
 import {isPlainObject} from 'lodash'
 import {invokePrepare, prepareForPreview} from './utils/prepareForPreview'
-import type {ApiConfig, PreviewPath, PreparedSnapshot} from './types'
 import {getPreviewPaths} from './utils/getPreviewPaths'
-import {Previewable, PreviewableType} from './types'
+import {
+  Previewable,
+  PreviewableType,
+  type ApiConfig,
+  type PreviewPath,
+  type PreparedSnapshot,
+} from './types'
 
 function isRecord(value: unknown): value is Record<string, unknown> {
   return isPlainObject(value)
diff --git a/packages/sanity/src/core/store/_legacy/document/resolveTypeForDocument.ts b/packages/sanity/src/core/store/_legacy/document/resolveTypeForDocument.ts
index 3d3ded35bd7..9d1bd9a42cc 100644
--- a/packages/sanity/src/core/store/_legacy/document/resolveTypeForDocument.ts
+++ b/packages/sanity/src/core/store/_legacy/document/resolveTypeForDocument.ts
@@ -1,6 +1,5 @@
 import {SanityClient} from '@sanity/client'
-import type {Observable} from 'rxjs'
-import {of} from 'rxjs'
+import {of, type Observable} from 'rxjs'
 import {map} from 'rxjs/operators'
 import {getDraftId, getPublishedId} from '../../../util'
 
diff --git a/packages/sanity/src/core/util/useThrottledCallback.ts b/packages/sanity/src/core/util/useThrottledCallback.ts
index b474097e42d..82eccae4b1b 100644
--- a/packages/sanity/src/core/util/useThrottledCallback.ts
+++ b/packages/sanity/src/core/util/useThrottledCallback.ts
@@ -1,5 +1,4 @@
-import {throttle} from 'lodash'
-import type {ThrottleSettings} from 'lodash'
+import {throttle, type ThrottleSettings} from 'lodash'
 import {useMemo} from 'react'
 
 /**
diff --git a/packages/sanity/src/desk/index.ts b/packages/sanity/src/desk/index.ts
index e528527eecb..ffe3fd5a4c2 100644
--- a/packages/sanity/src/desk/index.ts
+++ b/packages/sanity/src/desk/index.ts
@@ -4,110 +4,6 @@
  *
  * @deprecated Use `sanity/structure` instead.
  */
-import type {
-  BackLinkProps as _BackLinkProps,
-  BaseGenericList as _BaseGenericList,
-  BaseIntentParams as _BaseIntentParams,
-  BaseView as _BaseView,
-  BuildableComponent as _BuildableComponent,
-  BuildableGenericList as _BuildableGenericList,
-  BuildableList as _BuildableList,
-  Builder as _Builder,
-  Child as _Child,
-  ChildLinkProps as _ChildLinkProps,
-  ChildObservable as _ChildObservable,
-  ChildResolver as _ChildResolver,
-  ChildResolverOptions as _ChildResolverOptions,
-  Collection as _Collection,
-  CollectionBuilder as _CollectionBuilder,
-  Component as _Component,
-  ComponentInput as _ComponentInput,
-  ComponentView as _ComponentView,
-  ConfirmDeleteDialogProps as _ConfirmDeleteDialogProps,
-  CustomComponentPaneNode as _CustomComponentPaneNode,
-  DefaultDocumentNodeContext as _DefaultDocumentNodeContext,
-  DefaultDocumentNodeResolver as _DefaultDocumentNodeResolver,
-  Divider as _Divider,
-  DocumentFieldMenuActionNode as _DocumentFieldMenuActionNode,
-  DocumentList as _DocumentList,
-  DocumentListInput as _DocumentListInput,
-  DocumentListItem as _DocumentListItem,
-  DocumentListItemInput as _DocumentListItemInput,
-  DocumentListOptions as _DocumentListOptions,
-  DocumentListPaneNode as _DocumentListPaneNode,
-  DocumentListPaneProps as _DocumentListPaneProps,
-  DocumentNode as _DocumentNode,
-  DocumentOptions as _DocumentOptions,
-  DocumentPaneNode as _DocumentPaneNode,
-  DocumentPaneProviderProps as _DocumentPaneProviderProps,
-  DocumentTypeListInput as _DocumentTypeListInput,
-  EditReferenceOptions as _EditReferenceOptions,
-  EditorNode as _EditorNode,
-  FormView as _FormView,
-  GenericList as _GenericList,
-  GenericListInput as _GenericListInput,
-  Intent as _Intent,
-  IntentChecker as _IntentChecker,
-  IntentJsonParams as _IntentJsonParams,
-  IntentParams as _IntentParams,
-  ItemChild as _ItemChild,
-  List as _List,
-  ListDisplayOptions as _ListDisplayOptions,
-  ListInput as _ListInput,
-  ListItem as _ListItem,
-  ListItemChild as _ListItemChild,
-  ListItemDisplayOptions as _ListItemDisplayOptions,
-  ListItemInput as _ListItemInput,
-  ListItemSerializeOptions as _ListItemSerializeOptions,
-  ListPaneNode as _ListPaneNode,
-  MenuItem as _MenuItem,
-  MenuItemActionType as _MenuItemActionType,
-  MenuItemGroup as _MenuItemGroup,
-  MenuItemParamsType as _MenuItemParamsType,
-  PaneListItem as _PaneListItem,
-  PaneListItemDivider as _PaneListItemDivider,
-  PaneMenuItem as _PaneMenuItem,
-  PaneMenuItemGroup as _PaneMenuItemGroup,
-  PaneNode as _PaneNode,
-  PaneNodeResolver as _PaneNodeResolver,
-  PaneRouterContextValue as _PaneRouterContextValue,
-  ParameterizedLinkProps as _ParameterizedLinkProps,
-  PartialDocumentList as _PartialDocumentList,
-  PartialDocumentListItem as _PartialDocumentListItem,
-  PartialDocumentNode as _PartialDocumentNode,
-  PartialListItem as _PartialListItem,
-  PartialMenuItem as _PartialMenuItem,
-  ReferenceChildLinkProps as _ReferenceChildLinkProps,
-  RouterPaneGroup as _RouterPaneGroup,
-  RouterPaneSibling as _RouterPaneSibling,
-  RouterPaneSiblingContext as _RouterPaneSiblingContext,
-  RouterPanes as _RouterPanes,
-  SerializablePaneNode as _SerializablePaneNode,
-  SerializeOptions as _SerializeOptions,
-  SerializePath as _SerializePath,
-  SortMenuItem as _SortMenuItem,
-  StructureBuilder as _StructureBuilder,
-  StructureBuilderOptions as _StructureBuilderOptions,
-  StructureContext as _StructureContext,
-  StructureLocaleResourceKeys as _StructureLocaleResourceKeys,
-  StructureNode as _StructureNode,
-  StructureResolver as _StructureResolver,
-  StructureResolverContext as _StructureResolverContext,
-  StructureToolContextValue as _DeskToolContextValue,
-  StructureToolFeatures as _DeskToolFeatures,
-  StructureToolMenuItem as _DeskToolMenuItem,
-  StructureToolOptions as _DeskToolOptions,
-  StructureToolPaneActionHandler as _DeskToolPaneActionHandler,
-  StructureToolProviderProps as _DeskToolProviderProps,
-  UnresolvedPaneNode as _UnresolvedPaneNode,
-  UnserializedListItem as _UnserializedListItem,
-  UnserializedListItemChild as _UnserializedListItemChild,
-  UserComponent as _UserComponent,
-  UserViewComponent as _UserViewComponent,
-  View as _View,
-  ViewBuilder as _ViewBuilder,
-} from '../structure'
-
 import {
   ComponentBuilder as _ComponentBuilder,
   ComponentViewBuilder as _ComponentViewBuilder,
@@ -153,10 +49,111 @@ import {
   shallowIntentChecker as _shallowIntentChecker,
   structureLocaleNamespace as _structureLocaleNamespace,
   structureTool as _structureTool,
-  useStructureTool as _useStructureTool,
   useDocumentPane as _useDocumentPane,
   useDocumentTitle as _useDocumentTitle,
   usePaneRouter as _usePaneRouter,
+  useStructureTool as _useStructureTool,
+  type BackLinkProps as _BackLinkProps,
+  type BaseGenericList as _BaseGenericList,
+  type BaseIntentParams as _BaseIntentParams,
+  type BaseView as _BaseView,
+  type BuildableComponent as _BuildableComponent,
+  type BuildableGenericList as _BuildableGenericList,
+  type BuildableList as _BuildableList,
+  type Builder as _Builder,
+  type Child as _Child,
+  type ChildLinkProps as _ChildLinkProps,
+  type ChildObservable as _ChildObservable,
+  type ChildResolver as _ChildResolver,
+  type ChildResolverOptions as _ChildResolverOptions,
+  type Collection as _Collection,
+  type CollectionBuilder as _CollectionBuilder,
+  type Component as _Component,
+  type ComponentInput as _ComponentInput,
+  type ComponentView as _ComponentView,
+  type ConfirmDeleteDialogProps as _ConfirmDeleteDialogProps,
+  type CustomComponentPaneNode as _CustomComponentPaneNode,
+  type DefaultDocumentNodeContext as _DefaultDocumentNodeContext,
+  type DefaultDocumentNodeResolver as _DefaultDocumentNodeResolver,
+  type StructureToolContextValue as _DeskToolContextValue,
+  type StructureToolFeatures as _DeskToolFeatures,
+  type StructureToolMenuItem as _DeskToolMenuItem,
+  type StructureToolOptions as _DeskToolOptions,
+  type StructureToolPaneActionHandler as _DeskToolPaneActionHandler,
+  type StructureToolProviderProps as _DeskToolProviderProps,
+  type Divider as _Divider,
+  type DocumentFieldMenuActionNode as _DocumentFieldMenuActionNode,
+  type DocumentList as _DocumentList,
+  type DocumentListInput as _DocumentListInput,
+  type DocumentListItem as _DocumentListItem,
+  type DocumentListItemInput as _DocumentListItemInput,
+  type DocumentListOptions as _DocumentListOptions,
+  type DocumentListPaneNode as _DocumentListPaneNode,
+  type DocumentListPaneProps as _DocumentListPaneProps,
+  type DocumentNode as _DocumentNode,
+  type DocumentOptions as _DocumentOptions,
+  type DocumentPaneNode as _DocumentPaneNode,
+  type DocumentPaneProviderProps as _DocumentPaneProviderProps,
+  type DocumentTypeListInput as _DocumentTypeListInput,
+  type EditReferenceOptions as _EditReferenceOptions,
+  type EditorNode as _EditorNode,
+  type FormView as _FormView,
+  type GenericList as _GenericList,
+  type GenericListInput as _GenericListInput,
+  type Intent as _Intent,
+  type IntentChecker as _IntentChecker,
+  type IntentJsonParams as _IntentJsonParams,
+  type IntentParams as _IntentParams,
+  type ItemChild as _ItemChild,
+  type List as _List,
+  type ListDisplayOptions as _ListDisplayOptions,
+  type ListInput as _ListInput,
+  type ListItem as _ListItem,
+  type ListItemChild as _ListItemChild,
+  type ListItemDisplayOptions as _ListItemDisplayOptions,
+  type ListItemInput as _ListItemInput,
+  type ListItemSerializeOptions as _ListItemSerializeOptions,
+  type ListPaneNode as _ListPaneNode,
+  type MenuItem as _MenuItem,
+  type MenuItemActionType as _MenuItemActionType,
+  type MenuItemGroup as _MenuItemGroup,
+  type MenuItemParamsType as _MenuItemParamsType,
+  type PaneListItem as _PaneListItem,
+  type PaneListItemDivider as _PaneListItemDivider,
+  type PaneMenuItem as _PaneMenuItem,
+  type PaneMenuItemGroup as _PaneMenuItemGroup,
+  type PaneNode as _PaneNode,
+  type PaneNodeResolver as _PaneNodeResolver,
+  type PaneRouterContextValue as _PaneRouterContextValue,
+  type ParameterizedLinkProps as _ParameterizedLinkProps,
+  type PartialDocumentList as _PartialDocumentList,
+  type PartialDocumentListItem as _PartialDocumentListItem,
+  type PartialDocumentNode as _PartialDocumentNode,
+  type PartialListItem as _PartialListItem,
+  type PartialMenuItem as _PartialMenuItem,
+  type ReferenceChildLinkProps as _ReferenceChildLinkProps,
+  type RouterPaneGroup as _RouterPaneGroup,
+  type RouterPaneSibling as _RouterPaneSibling,
+  type RouterPaneSiblingContext as _RouterPaneSiblingContext,
+  type RouterPanes as _RouterPanes,
+  type SerializablePaneNode as _SerializablePaneNode,
+  type SerializeOptions as _SerializeOptions,
+  type SerializePath as _SerializePath,
+  type SortMenuItem as _SortMenuItem,
+  type StructureBuilder as _StructureBuilder,
+  type StructureBuilderOptions as _StructureBuilderOptions,
+  type StructureContext as _StructureContext,
+  type StructureLocaleResourceKeys as _StructureLocaleResourceKeys,
+  type StructureNode as _StructureNode,
+  type StructureResolver as _StructureResolver,
+  type StructureResolverContext as _StructureResolverContext,
+  type UnresolvedPaneNode as _UnresolvedPaneNode,
+  type UnserializedListItem as _UnserializedListItem,
+  type UnserializedListItemChild as _UnserializedListItemChild,
+  type UserComponent as _UserComponent,
+  type UserViewComponent as _UserViewComponent,
+  type View as _View,
+  type ViewBuilder as _ViewBuilder,
 } from '../structure'
 
 /**