@sanity/document-internationalization

6.2.176.2.18
dist/index.js.map
~dist/index.js.mapModified
+1−1
Index: package/dist/index.js.map
===================================================================
--- package/dist/index.js.map
+++ package/dist/index.js.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.js","names":["Preview","useSchema","Feedback","DocumentPreviewProps","value","type","DocumentPreview","props","$","_c","schema","t0","get","schemaType","t1","Symbol","for","PluginConfigContext","METADATA_SCHEMA_NAME","TRANSLATIONS_ARRAY_NAME","API_VERSION","DEFAULT_CONFIG","supportedLanguages","schemaTypes","languageField","weakReferences","bulkPublish","metadataFields","apiVersion","allowCreateMetaDoc","callback","hideLanguageFilter","metadataOmnisearchVisibility","addTemplates","SanityDocument","METADATA_SCHEMA_NAME","separateReferences","data","translations","otherReferences","length","forEach","doc","_type","push","Card","Flex","Spinner","Stack","Text","useEffect","useMemo","SanityDocument","useListeningQuery","MetadataDocument","DocumentPreview","separateReferences","DeleteTranslationDialogProps","doc","documentId","setTranslations","translations","DeleteTranslationDialog","props","$","_c","t0","id","t1","Symbol","for","t2","params","initialValue","data","loading","t3","otherReferences","t4","t5","t6","length","t7","t8","_type","t9","map","_temp","t10","_temp2","t11","t12","t13","reference","_id","translation","Button","Grid","DeleteTranslationFooterProps","translations","onClose","onProceed","DeleteTranslationFooter","props","$","_c","t0","t1","length","t2","t3","createContext","use","useContext","useMemo","LayoutProps","useClient","useWorkspace","DEFAULT_CONFIG","PluginConfig","PluginConfigContext","DocumentInternationalizationContext","useDocumentInternationalizationContext","DocumentInternationalizationProviderProps","pluginConfig","Required","Omit","Pick","promiseCache","Map","Promise","createCacheKey","workspaceId","createOrGetPromise","fn","cacheKey","cached","get","promise","set","DocumentInternationalizationProvider","props","$","_c","t0","apiVersion","client","workspace","name","t1","t2","bb0","Array","isArray","supportedLanguages","t3","t4","languagesPromise","contextValue","renderDefault","t5","TrashIcon","useToast","useCallback","useState","useClient","DocumentActionDescription","DocumentActionProps","LANGUAGE_FIELD_NAME","DeleteTranslationDialog","DeleteTranslationFooter","useDocumentInternationalizationContext","API_VERSION","TRANSLATIONS_ARRAY_NAME","MetadataDocument","DeleteOperation","useDeleteTranslationAction","props","$","_c","id","documentId","published","draft","doc","languageField","isDialogOpen","setDialogOpen","t0","Symbol","for","translations","setTranslations","t1","onClose","rawDocumentLanguage","documentLanguage","toast","t2","apiVersion","client","t3","tx","transaction","operation","length","forEach","translation","patch","_id","unset","delete","commit","then","push","status","title","description","catch","err","message","onProceed","t4","t5","t6","type","header","content","footer","t7","label","disabled","icon","tone","onHandle","dialog","action","displayName","DeleteTranslationAction","useListeningQuery","METADATA_SCHEMA_NAME","Metadata","query","useTranslationMetadata","id","$","_c","t0","params","translationSchema","data","loading","error","t1","defineLocaleResourceBundle","documenti18nLocaleNamespace","const","documentInternationalizationUsEnglishLocaleBundle","locale","namespace","resources","CopyIcon","useToast","uuid","useCallback","useMemo","useState","filter","firstValueFrom","DEFAULT_STUDIO_CLIENT_OPTIONS","Id","InsufficientPermissionsMessage","PatchOperations","useClient","useCurrentUser","useDocumentOperation","useDocumentPairPermissions","useDocumentStore","useTranslation","DocumentActionProps","DocumentActionDescription","LANGUAGE_FIELD_NAME","useRouter","structureLocaleNamespace","METADATA_SCHEMA_NAME","TRANSLATIONS_ARRAY_NAME","useTranslationMetadata","documenti18nLocaleNamespace","EditOperations","duplicate","disabled","execute","id","OperationSuccessEvent","op","type","DISABLED_REASON_KEY","METADATA_NOT_FOUND","MULTIPLE_METADATA","NOTHING_TO_DUPLICATE","NOT_READY","useDuplicateWithTranslationsAction","t0","$","_c","onComplete","documentStore","navigateIntent","isDuplicating","setDuplicating","t1","permission","permissions","isPermissionsLoading","data","loading","isMetadataDocumentLoading","hasOneMetadataDocument","Array","isArray","length","metadataDocument","client","toast","t","s","d","currentUser","t2","pair","performDuplication","Promise","reject","Error","translationsArray","translations","Map","all","map","translation","dupeId","locale","docId","value","_ref","trim","duplicateTranslation","editOperations","pipe","_temp","duplicateTranslationSuccess","operationEvents","_temp2","set","duplicateMetadata","_id","_temp3","duplicateMetadataSuccess","_temp4","dupeId_0","patch","Object","fromEntries","from","entries","_temp5","transaction","commit","values","at","catch","error","console","push","status","title","description","message","finally","handle","granted","t3","bb0","t4","t5","t6","icon","label","Boolean","t7","onHandle","action","displayName","DuplicateWithTranslationsAction","props","e","op_0","e_0","locale_0","documentId","useCallback","useRouter","usePaneRouter","useOpenInNewPane","id","type","$","_c","router","routerPanesState","groupIndex","t0","length","navigateIntent","panes","splice","params","href","resolvePathFromState","navigateUrl","path","openInNewPane","randomKey","LANGUAGE_FIELD_NAME","TranslationReference","createReference","language","ref","type","strengthenOnPublish","_key","_type","value","_ref","_weak","_strengthenOnPublish","CogIcon","Box","Button","Stack","Text","Tooltip","useCallback","useState","ObjectSchemaType","useClient","METADATA_SCHEMA_NAME","useOpenInNewPane","createReference","useDocumentInternationalizationContext","LanguageManageProps","id","metadataId","schemaType","documentId","sourceLanguageId","LanguageManage","props","$","_c","open","openCreated","allowCreateMetaDoc","apiVersion","weakReferences","t0","client","userHasClicked","setUserHasClicked","canCreate","Boolean","t1","name","transaction","sourceReference","newMetadataDocument","_id","_type","schemaTypes","translations","createIfNotExists","commit","then","catch","err","console","error","handleClick","disabled","t2","t3","Symbol","for","t4","t5","t6","extractWithPath","Mutation","isDocumentSchemaType","ObjectSchemaType","Path","pathToString","SanityDocument","SchemaType","DocumentMember","schemaType","path","name","value","removeExcludedPaths","doc","pathsToExclude","extractPaths","filter","field","options","documentInternationalization","exclude","map","mut","mutations","patch","id","_id","unset","apply","result","fields","fieldPath","fieldSchema","type","undefined","thisFieldWithPath","jsonType","innerFields","push","of","length","some","item","arrayValue","Array","_key","language","_type","itemPath","itemSchema","find","t","arrayMember","AddIcon","CheckmarkIcon","SplitVerticalIcon","Badge","Box","Button","Flex","Spinner","Text","Tooltip","useToast","uuid","useCallback","useState","getDraftId","getVersionFromId","getVersionId","isVersionId","ObjectSchemaType","SanityDocument","useClient","LANGUAGE_FIELD_NAME","METADATA_SCHEMA_NAME","useOpenInNewPane","Language","Metadata","MetadataDocument","TranslationReference","createReference","removeExcludedPaths","useDocumentInternationalizationContext","LanguageOptionProps","language","schemaType","documentId","disabled","current","source","metadataId","metadata","sourceLanguageId","LanguageOption","props","$","_c","userHasClicked","setUserHasClicked","t0","id","translations","length","find","t","undefined","translation","apiVersion","languageField","weakReferences","callback","t1","client","toast","open","value","_ref","name","t2","handleOpen","t3","title","_createdAt","Error","transaction","newTranslationDocumentId","sourceReleaseId","_id","newTranslationDocument","create","sourceReference","newTranslationReference","newMetadataDocument","_type","schemaTypes","createIfNotExists","metadataPatch","patch","setIfMissing","insert","commit","then","metadataExisted","Boolean","push","status","description","sourceDocument","newDocument","destinationLanguageId","metaDocumentId","catch","err","console","error","message","handleCreate","t4","t5","Symbol","for","t6","t7","t8","t9","t10","t11","t12","t13","t14","EditIcon","Badge","Box","Button","Flex","Text","useToast","useCallback","SanityDocument","useClient","Language","useDocumentInternationalizationContext","LanguagePatchProps","language","source","disabled","LanguagePatch","props","$","_c","apiVersion","languageField","t0","client","toast","t1","id","title","Error","currentId","_id","patch","set","commit","then","push","status","catch","err","console","error","handleClick","t2","Symbol","for","t3","t4","t5","t6","Box","ConstrainedBox","t0","$","_c","children","t1","Symbol","for","maxWidth","t2","Card","Flex","Text","PropsWithChildren","ConstrainedBox","Warning","t0","$","_c","children","t1","TranslateIcon","Box","Button","Card","Popover","Stack","Text","TextInput","useClickOutsideEvent","uuid","ChangeEvent","useCallback","useMemo","useRef","useState","useEditState","usePerspective","LANGUAGE_FIELD_NAME","useTranslationMetadata","DocumentInternationalizationMenuProps","useDocumentInternationalizationContext","LanguageManage","LanguageOption","LanguagePatch","Warning","DocumentInternationalizationMenu","props","$","_c","documentId","schemaType","languageField","supportedLanguages","query","setQuery","t0","Symbol","for","event","currentTarget","value","handleQuery","open","setOpen","t1","_temp","handleClick","buttonRef","popoverRef","t2","handleClickOutside","t3","current","data","loading","error","metadata","Array","isArray","length","_id","t4","bb0","t5","metadataId","selectedReleaseId","draft","published","version","name","source","documentIsInOneMetadataDocument","rawLanguageValue","sourceLanguageId","undefined","t6","l","id","some","sourceLanguageIsValid","every","_temp2","valid","console","warn","allLanguagesAreValid","t7","filter","language","title","toLowerCase","includes","map","language_0","translations","t","_ref","t_0","content","issueWithTranslations","t8","t9","t10","t11","l_0","o","TrashIcon","useToast","useCallback","useMemo","useState","DocumentActionDescription","DocumentActionProps","KeyedObject","Reference","TypedObject","useClient","API_VERSION","TRANSLATIONS_ARRAY_NAME","TranslationReference","value","useDeleteMetadataAction","props","$","_c","id","documentId","published","draft","doc","isDialogOpen","setDialogOpen","t0","Symbol","for","onClose","t1","Array","isArray","translations","toast","t2","apiVersion","client","t3","tx","transaction","patch","_temp","length","forEach","translation","delete","_ref","commit","then","push","status","title","catch","err","description","message","onProceed","t4","t5","t6","type","onCancel","onConfirm","tone","t7","label","disabled","icon","onHandle","dialog","unset","DocumentBadgeDescription","DocumentBadgeProps","useDocumentInternationalizationContext","LanguageBadge","props","source","version","draft","published","languageField","supportedLanguages","languageId","language","Array","isArray","find","l","id","label","title","undefined","color","Card","Spinner","useEffect","useMemo","Preview","useEditState","useSchema","useValidationStatus","DocumentCheckProps","id","onCheckComplete","addInvalidId","removeInvalidId","addDraftId","removeDraftId","DocumentCheck","props","$","_c","editState","documentType","draft","_type","published","isValidating","validation","t0","t1","undefined","schema","t2","some","_temp","validationHasErrors","t3","t4","t5","get","schemaType","t6","t7","t8","item","level","Box","ButtonTone","Text","Tooltip","ComponentType","PropsWithChildren","TextWithTone","InfoIconProps","icon","tone","text","InfoIcon","props","$","_c","children","Icon","t0","t1","t2","t3","InfoOutlineIcon","Box","Stack","Text","InfoIcon","Info","$","_c","t0","Symbol","for","maxWidth","t1","t2","t3","Button","Card","Dialog","Inline","Stack","Text","useToast","useCallback","useState","TextWithTone","useClient","useWorkspace","API_VERSION","TranslationReference","DocumentCheck","Info","BulkPublishProps","translations","BulkPublish","props","$","_c","t0","Symbol","for","apiVersion","client","projectId","dataset","toast","invalidIds","setInvalidIds","t1","checkedIds","setCheckedIds","t2","id","ids","Array","from","Set","onCheckComplete","open","setOpen","t3","onOpen","t4","onClose","t5","id_0","ids_0","addInvalidId","t6","id_1","ids_1","filter","i","removeInvalidId","t7","draftIds","setDraftIds","t8","id_2","ids_2","addDraftId","t9","id_3","ids_3","i_0","removeDraftId","t10","body","map","_temp","request","uri","method","then","push","status","title","description","catch","err","console","error","handleBulkPublish","disabled","length","Boolean","t11","_temp2","translation_1","translation","_key","value","_ref","translation_0","documentId","useEffect","PatchEvent","unset","useClient","useEditState","useDocumentPane","API_VERSION","TranslationReference","ReferencePatcherProps","translation","documentType","metadataId","ReferencePatcher","props","$","_c","editState","value","_ref","t0","Symbol","for","apiVersion","client","onChange","t1","_key","_strengthenOnPublish","_weak","draft","published","ready","referencePathBase","t2","TranslationReference","ReferencePatcher","OptimisticallyStrengthenProps","translations","metadataId","OptimisticallyStrengthen","props","$","_c","t0","t1","undefined","length","t2","t3","translation","value","_strengthenOnPublish","type","_key","map","TranslateIcon","defineField","defineType","DocumentDefinition","FieldDefinition","LANGUAGE_FIELD_NAME","METADATA_SCHEMA_NAME","TRANSLATIONS_ARRAY_NAME","TranslationReference","schemaTypes","metadataFields","omnisearchVisibility","type","name","title","icon","liveEdit","__experimental_omnisearch_visibility","fields","description","of","options","list","readOnly","value","Boolean","preview","select","translations","documentSchemaTypes","prepare","selection","length","languageKeys","map","t","toUpperCase","join","subtitle","s","filter","Stack","defineField","definePlugin","isSanityDocument","internationalizedArray","LANGUAGE_FIELD_NAME","useDeleteMetadataAction","LanguageBadge","BulkPublish","DocumentInternationalizationProvider","DocumentInternationalizationMenu","OptimisticallyStrengthen","API_VERSION","DEFAULT_CONFIG","METADATA_SCHEMA_NAME","documentInternationalizationUsEnglishLocaleBundle","metadata","PluginConfig","TranslationReference","documentInternationalization","config","pluginConfig","supportedLanguages","schemaTypes","languageField","bulkPublish","metadataFields","hideLanguageFilter","metadataOmnisearchVisibility","metadataInternationalization","addTemplates","length","Error","name","studio","components","layout","props","i18n","bundles","form","input","id","schemaType","value","metadataId","_id","translations","weakAndTypedTranslations","filter","_weak","_strengthenOnPublish","renderDefault","document","unstable_languageFilter","prev","ctx","documentId","Array","isArray","includes","badges","actions","schema","types","templates","parameterizedTemplates","map","title","get","parameters","type","languageId","staticTemplates","flatMap","language","plugins","apiVersion","languages","includeForDocumentType","documentType","fieldTypes","to","weak","weakReferences","validation","Rule","custom","item","context","_ref","client","getClient","valueLanguage","fetch","ref","draftRef","options","parent","parentArray","find","p","params","strict"],"sources":["../src/components/DeleteTranslationDialog/DocumentPreview.tsx","../src/constants.ts","../src/components/DeleteTranslationDialog/separateReferences.ts","../src/components/DeleteTranslationDialog/index.tsx","../src/components/DeleteTranslationFooter.tsx","../src/components/DocumentInternationalizationContext.tsx","../src/actions/DeleteTranslationAction.tsx","../src/hooks/useLanguageMetadata.tsx","../src/i18n/index.ts","../src/actions/DuplicateWithTranslationsAction.tsx","../src/hooks/useOpenInNewPane.tsx","../src/utils/createReference.ts","../src/components/LanguageManage.tsx","../src/utils/excludePaths.ts","../src/components/LanguageOption.tsx","../src/components/LanguagePatch.tsx","../src/components/ConstrainedBox.tsx","../src/components/Warning.tsx","../src/components/DocumentInternationalizationMenu.tsx","../src/actions/DeleteMetadataAction.tsx","../src/badges/index.tsx","../src/components/BulkPublish/DocumentCheck.tsx","../src/components/BulkPublish/InfoIcon.tsx","../src/components/BulkPublish/Info.tsx","../src/components/BulkPublish/index.tsx","../src/components/OptimisticallyStrengthen/ReferencePatcher.tsx","../src/components/OptimisticallyStrengthen/index.tsx","../src/schema/translation/metadata.ts","../src/plugin.tsx"],"sourcesContent":["import {Preview, useSchema} from 'sanity'\nimport {Feedback} from 'sanity-plugin-utils'\n\ntype DocumentPreviewProps = {\n  value: unknown\n  type: string\n}\n\n// Wrapper of Preview just so that the schema type is satisfied by schema.get()\nexport default function DocumentPreview(props: DocumentPreviewProps) {\n  const schema = useSchema()\n\n  const schemaType = schema.get(props.type)\n  if (!schemaType) {\n    return <Feedback tone=\"critical\" title=\"Schema type not found\" />\n  }\n\n  return <Preview value={props.value} schemaType={schemaType} />\n}\n","import type {PluginConfigContext} from './types'\n\nexport const METADATA_SCHEMA_NAME = `translation.metadata`\nexport const TRANSLATIONS_ARRAY_NAME = `translations`\nexport const API_VERSION = `2025-02-19`\nexport const DEFAULT_CONFIG: PluginConfigContext = {\n  supportedLanguages: [],\n  schemaTypes: [],\n  languageField: `language`,\n  weakReferences: false,\n  bulkPublish: false,\n  metadataFields: [],\n  apiVersion: API_VERSION,\n  allowCreateMetaDoc: false,\n  callback: null,\n  hideLanguageFilter: false,\n  metadataOmnisearchVisibility: true,\n  addTemplates: true,\n}\n","import type {SanityDocument} from 'sanity'\n\nimport {METADATA_SCHEMA_NAME} from '../../constants'\n\n/**\n * Splits an array of referring documents into two groups: translation metadata\n * documents (whose `_type` matches the metadata schema name) and all other\n * references. Used by the delete-translation dialog to show which metadata\n * entries will be patched versus which external references may block deletion.\n */\nexport function separateReferences(data: SanityDocument[] | null = []): {\n  translations: SanityDocument[]\n  otherReferences: SanityDocument[]\n} {\n  const translations: SanityDocument[] = []\n  const otherReferences: SanityDocument[] = []\n\n  if (data && data.length > 0) {\n    data.forEach((doc) => {\n      if (doc._type === METADATA_SCHEMA_NAME) {\n        translations.push(doc)\n      } else {\n        otherReferences.push(doc)\n      }\n    })\n  }\n\n  return {translations, otherReferences}\n}\n","import {Card, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {useEffect, useMemo} from 'react'\nimport type {SanityDocument} from 'sanity'\nimport {useListeningQuery} from 'sanity-plugin-utils'\n\nimport type {MetadataDocument} from '../../types'\nimport DocumentPreview from './DocumentPreview'\nimport {separateReferences} from './separateReferences'\n\ntype DeleteTranslationDialogProps = {\n  doc: SanityDocument\n  documentId: string\n  setTranslations: (translations: MetadataDocument[]) => void\n}\n\nexport default function DeleteTranslationDialog(props: DeleteTranslationDialogProps) {\n  const {doc, documentId, setTranslations} = props\n\n  // Get all references and check if any of them are translations metadata\n  const {data, loading} = useListeningQuery<SanityDocument[]>(\n    `*[references($id)]{_id, _type, translations}`,\n    {\n      params: {id: documentId},\n      initialValue: [],\n    },\n  )\n  const {translations, otherReferences} = useMemo(() => separateReferences(data), [data])\n\n  useEffect(() => {\n    // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n    setTranslations(translations as MetadataDocument[])\n  }, [setTranslations, translations])\n\n  if (loading) {\n    return (\n      <Flex padding={4} align=\"center\" justify=\"center\">\n        <Spinner />\n      </Flex>\n    )\n  }\n\n  return (\n    <Stack gap={4}>\n      {translations && translations.length > 0 ? (\n        <Text>\n          This document is a language-specific version which other translations depend on.\n        </Text>\n      ) : (\n        <Text>This document does not have connected translations.</Text>\n      )}\n      <Card border padding={3}>\n        <Stack gap={4}>\n          <Text size={1} weight=\"semibold\">\n            {translations && translations.length > 0 ? (\n              <>Before this document can be deleted</>\n            ) : (\n              <>This document can now be deleted</>\n            )}\n          </Text>\n          <DocumentPreview value={doc} type={doc._type} />\n          {translations && translations.length > 0 ? (\n            <>\n              <Card borderTop />\n              <Text size={1} weight=\"semibold\">\n                The reference in{' '}\n                {translations.length === 1\n                  ? `this translations document`\n                  : `these translations documents`}{' '}\n                must be removed\n              </Text>\n              {translations.map((translation) => (\n                <DocumentPreview\n                  key={translation._id}\n                  value={translation}\n                  type={translation._type}\n                />\n              ))}\n            </>\n          ) : null}\n          {otherReferences && otherReferences.length > 0 ? (\n            <>\n              <Card borderTop />\n              <Text size={1} weight=\"semibold\">\n                {otherReferences.length === 1\n                  ? `There is an additional reference`\n                  : `There are additional references`}{' '}\n                to this document\n              </Text>\n              {otherReferences.map((reference) => (\n                <DocumentPreview key={reference._id} value={reference} type={reference._type} />\n              ))}\n            </>\n          ) : null}\n        </Stack>\n      </Card>\n      {otherReferences.length === 0 ? (\n        <Text>This document has no other references.</Text>\n      ) : (\n        <Text>\n          You may not be able to delete this document because other documents refer to it.\n        </Text>\n      )}\n    </Stack>\n  )\n}\n","import {Button, Grid} from '@sanity/ui'\n\ntype DeleteTranslationFooterProps = {\n  translations: unknown[]\n  onClose: () => void\n  onProceed: () => void\n}\n\nexport default function DeleteTranslationFooter(props: DeleteTranslationFooterProps) {\n  const {translations, onClose, onProceed} = props\n\n  return (\n    <Grid gridTemplateColumns={2} gap={2}>\n      <Button text=\"Cancel\" onClick={onClose} mode=\"ghost\" />\n      <Button\n        text={\n          translations && translations.length > 0\n            ? `Unset translation reference`\n            : `Delete document`\n        }\n        onClick={onProceed}\n        tone=\"critical\"\n      />\n    </Grid>\n  )\n}\n","import {createContext, use, useContext, useMemo} from 'react'\nimport type {LayoutProps} from 'sanity'\nimport {useClient, useWorkspace} from 'sanity'\n\nimport {DEFAULT_CONFIG} from '../constants'\nimport type {PluginConfig, PluginConfigContext} from '../types'\n\nconst DocumentInternationalizationContext = createContext<PluginConfigContext>(DEFAULT_CONFIG)\n\nexport function useDocumentInternationalizationContext(): PluginConfigContext {\n  return useContext(DocumentInternationalizationContext)\n}\n\ntype DocumentInternationalizationProviderProps = LayoutProps & {\n  pluginConfig: Required<Omit<PluginConfig, 'metadataInternationalization'>> &\n    Pick<PluginConfig, 'metadataInternationalization'>\n}\n\n// Simple promise cache for React.use\nconst promiseCache = new Map<string, Promise<PluginConfigContext['supportedLanguages']>>()\n\nfunction createCacheKey(workspaceId: string): string {\n  return `languages-${workspaceId}`\n}\n\nfunction createOrGetPromise(\n  fn: () => Promise<PluginConfigContext['supportedLanguages']>,\n  cacheKey: string,\n): Promise<PluginConfigContext['supportedLanguages']> {\n  const cached = promiseCache.get(cacheKey)\n  if (cached) {\n    return cached\n  }\n  const promise = fn()\n  promiseCache.set(cacheKey, promise)\n  return promise\n}\n\n/**\n * This Provider wraps the Studio and provides the DocumentInternationalization context to document actions and components.\n */\nexport function DocumentInternationalizationProvider(\n  props: DocumentInternationalizationProviderProps,\n): React.JSX.Element {\n  const {pluginConfig} = props\n\n  const client = useClient({apiVersion: pluginConfig.apiVersion})\n  const workspace = useWorkspace()\n\n  // Use a stable workspace identifier\n  const workspaceId = useMemo(() => workspace.name ?? '', [workspace])\n\n  // Create cache key for promise caching\n  const cacheKey = useMemo(() => createCacheKey(workspaceId), [workspaceId])\n\n  // Fetch or return languages\n  const languagesPromise = useMemo(() => {\n    if (Array.isArray(pluginConfig.supportedLanguages)) {\n      return null // Return null for synchronous arrays\n    }\n\n    // Create or get cached promise for React.use\n    return createOrGetPromise(async () => {\n      if (typeof pluginConfig.supportedLanguages === 'function') {\n        return pluginConfig.supportedLanguages(client)\n      }\n      return pluginConfig.supportedLanguages\n    }, cacheKey)\n  }, [pluginConfig, client, cacheKey])\n\n  // Use React.use to handle the promise with Suspense, or return array directly\n  const supportedLanguages = languagesPromise\n    ? use(languagesPromise)\n    : // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n      (pluginConfig.supportedLanguages as PluginConfigContext['supportedLanguages'])\n\n  const contextValue = useMemo(\n    () => ({...pluginConfig, supportedLanguages}),\n    [pluginConfig, supportedLanguages],\n  )\n\n  return (\n    <DocumentInternationalizationContext.Provider value={contextValue}>\n      {props.renderDefault(props)}\n    </DocumentInternationalizationContext.Provider>\n  )\n}\n","import {TrashIcon} from '@sanity/icons/Trash'\nimport {useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {useClient, type DocumentActionDescription, type DocumentActionProps} from 'sanity'\nimport {LANGUAGE_FIELD_NAME} from 'sanity-plugin-internationalized-array'\n\nimport DeleteTranslationDialog from '../components/DeleteTranslationDialog'\nimport DeleteTranslationFooter from '../components/DeleteTranslationFooter'\nimport {useDocumentInternationalizationContext} from '../components/DocumentInternationalizationContext'\nimport {API_VERSION, TRANSLATIONS_ARRAY_NAME} from '../constants'\nimport {type MetadataDocument} from '../types'\n\ntype DeleteOperation = 'DELETE' | 'UNSET'\n\n/**\n * Optional Document action that removes a single translation from the metadata document\n * and optionally deletes the translation document. Opens a confirmation dialog\n * showing which metadata entries reference the document and any other references\n * that may exist. When the document has translation references, those references\n * are unset; otherwise the document is deleted directly.\n *\n * To use it, you need to add it to the document actions config\n * ```\n *  const translatedSchemaTypes = ['lesson', 'article'];\n * document: {\n *   actions: (prev, {schemaType}) => {\n *     if (translatedSchemaTypes.includes(schemaType)) {\n *       return [...prev, useDeleteTranslationAction]\n *     }\n *     return prev\n *   },\n * },\n * ```\n */\nexport const useDeleteTranslationAction = (\n  props: DocumentActionProps,\n): DocumentActionDescription => {\n  const {id: documentId, published, draft} = props\n  const doc = draft || published\n  const {languageField} = useDocumentInternationalizationContext()\n\n  const [isDialogOpen, setDialogOpen] = useState(false)\n  const [translations, setTranslations] = useState<MetadataDocument[]>([])\n  const onClose = useCallback(() => setDialogOpen(false), [])\n  const rawDocumentLanguage = doc ? doc[languageField] : null\n  const documentLanguage = typeof rawDocumentLanguage === 'string' ? rawDocumentLanguage : null\n\n  const toast = useToast()\n  const client = useClient({apiVersion: API_VERSION})\n  // Remove translation reference and delete document in one transaction\n  const onProceed = useCallback(() => {\n    const tx = client.transaction()\n    let operation: DeleteOperation = 'DELETE'\n\n    if (documentLanguage && translations.length > 0) {\n      operation = 'UNSET'\n      translations.forEach((translation) => {\n        tx.patch(translation._id, (patch) =>\n          patch.unset([\n            `${TRANSLATIONS_ARRAY_NAME}[${LANGUAGE_FIELD_NAME} == \"${documentLanguage}\"]`,\n          ]),\n        )\n      })\n    } else {\n      tx.delete(documentId)\n      tx.delete(`drafts.${documentId}`)\n    }\n\n    tx.commit()\n      .then(() => {\n        if (operation === 'DELETE') {\n          onClose()\n        }\n        toast.push({\n          status: 'success',\n          title: operation === 'UNSET' ? 'Translation reference unset' : 'Document deleted',\n          description: operation === 'UNSET' ? 'The document can now be deleted' : null,\n        })\n        return undefined\n      })\n      .catch((err: Error) => {\n        toast.push({\n          status: 'error',\n          title:\n            operation === 'UNSET'\n              ? 'Failed to unset translation reference'\n              : 'Failed to delete document',\n          description: err.message,\n        })\n      })\n  }, [client, documentLanguage, translations, documentId, onClose, toast])\n\n  return {\n    label: `Delete translation...`,\n    disabled: !doc || !documentLanguage,\n    icon: TrashIcon,\n    tone: 'critical',\n    onHandle: () => {\n      setDialogOpen(true)\n    },\n    dialog: isDialogOpen && {\n      type: 'dialog',\n      onClose,\n      header: 'Delete translation',\n      content: doc ? (\n        <DeleteTranslationDialog\n          doc={doc}\n          documentId={documentId}\n          setTranslations={setTranslations}\n        />\n      ) : null,\n      footer: (\n        <DeleteTranslationFooter\n          onClose={onClose}\n          onProceed={onProceed}\n          translations={translations}\n        />\n      ),\n    },\n  }\n}\n\nuseDeleteTranslationAction.action = 'deleteTranslation'\nuseDeleteTranslationAction.displayName = 'DeleteTranslationAction'\n\n/**\n * @deprecated use useDeleteTranslationAction instead\n * Will be removed in the next major version\n */\nexport const DeleteTranslationAction = (props: DocumentActionProps): DocumentActionDescription => {\n  return useDeleteTranslationAction(props)\n}\n","import {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {METADATA_SCHEMA_NAME} from '../constants'\nimport type {Metadata} from '../types'\n\n// Using references() seemed less reliable for updating the listener\n// results than querying raw values in the array\n// AFAIK: references is _faster_ when querying with GROQ\n// const query = `*[_type == $translationSchema && references($id)]`\nconst query = `*[_type == $translationSchema && $id in translations[].value._ref]{\n  _id,\n  _createdAt,\n  translations\n}`\n\nexport function useTranslationMetadata(id: string): {\n  data: Metadata[] | null\n  loading: boolean\n  error: unknown\n} {\n  const {data, loading, error} = useListeningQuery<Metadata[]>(query, {\n    params: {id, translationSchema: METADATA_SCHEMA_NAME},\n  })\n\n  return {data, loading, error}\n}\n","import {defineLocaleResourceBundle} from 'sanity'\n\n/**\n * The locale namespace for the document internationalization plugin.\n *\n * @public\n */\nexport const documenti18nLocaleNamespace = 'document-internationalization' as const\n\n/**\n * The default locale bundle for the document internationalization plugin, which is US English.\n *\n * @internal\n */\nexport const documentInternationalizationUsEnglishLocaleBundle = defineLocaleResourceBundle({\n  locale: 'en-US',\n  namespace: documenti18nLocaleNamespace,\n  resources: () => import('./resources'),\n})\n","import {CopyIcon} from '@sanity/icons/Copy'\nimport {useToast} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport {useCallback, useMemo, useState} from 'react'\nimport {filter, firstValueFrom} from 'rxjs'\nimport {\n  DEFAULT_STUDIO_CLIENT_OPTIONS,\n  type Id,\n  InsufficientPermissionsMessage,\n  type PatchOperations,\n  useClient,\n  useCurrentUser,\n  useDocumentOperation,\n  useDocumentPairPermissions,\n  useDocumentStore,\n  useTranslation,\n  type DocumentActionProps,\n  type DocumentActionDescription,\n} from 'sanity'\nimport {LANGUAGE_FIELD_NAME} from 'sanity-plugin-internationalized-array'\nimport {useRouter} from 'sanity/router'\nimport {structureLocaleNamespace} from 'sanity/structure'\n\nimport {METADATA_SCHEMA_NAME, TRANSLATIONS_ARRAY_NAME} from '../constants'\nimport {useTranslationMetadata} from '../hooks/useLanguageMetadata'\nimport {documenti18nLocaleNamespace} from '../i18n'\n\n// Types for document store operations\ninterface EditOperations {\n  duplicate: {disabled: string | false; execute: (id: string) => void}\n}\n\ninterface OperationSuccessEvent {\n  op: string\n  type: 'success' | 'error'\n}\n\nconst DISABLED_REASON_KEY = {\n  METADATA_NOT_FOUND: 'action.duplicate.disabled.missing-metadata',\n  MULTIPLE_METADATA: 'action.duplicate.disabled.multiple-metadata',\n  NOTHING_TO_DUPLICATE: 'action.duplicate.disabled.nothing-to-duplicate',\n  NOT_READY: 'action.duplicate.disabled.not-ready',\n}\n\n/**\n * Optional Document action that duplicates a document along with all its translations\n * and the associated metadata document. The workflow duplicates each translated\n * document, duplicates the metadata document, patches the new metadata to\n * reference the new translation copies, and navigates to the duplicated document.\n * Disabled when the user lacks permissions, metadata is missing or ambiguous,\n * or the underlying duplicate operation is unavailable.\n */\nexport const useDuplicateWithTranslationsAction = ({\n  id,\n  type,\n  /* oxlint-disable-next-line typescript-eslint/no-deprecated -- kept for backwards compatibility */\n  onComplete,\n}: DocumentActionProps): DocumentActionDescription => {\n  const documentStore = useDocumentStore()\n  const {duplicate} = useDocumentOperation(id, type)\n  const {navigateIntent} = useRouter()\n  const [isDuplicating, setDuplicating] = useState(false)\n  const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n    id,\n    type,\n    permission: 'duplicate',\n  })\n  const {data, loading: isMetadataDocumentLoading} = useTranslationMetadata(id)\n  const hasOneMetadataDocument = useMemo(() => {\n    return Array.isArray(data) && data.length <= 1\n  }, [data])\n  const metadataDocument = Array.isArray(data) && data.length ? data[0] : null\n  const client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n  const toast = useToast()\n  const {t: s} = useTranslation(structureLocaleNamespace)\n  const {t: d} = useTranslation(documenti18nLocaleNamespace)\n  const currentUser = useCurrentUser()\n\n  const handle = useCallback(() => {\n    setDuplicating(true)\n\n    // Async function that does the actual work\n    async function performDuplication(): Promise<void> {\n      if (!metadataDocument) {\n        return Promise.reject(new Error('Metadata document not found'))\n      }\n\n      const translationsArray = metadataDocument[TRANSLATIONS_ARRAY_NAME]\n      if (!translationsArray || translationsArray.length === 0) {\n        return Promise.reject(new Error('No translations found in metadata document'))\n      }\n\n      // 1. Duplicate the document and its localized versions\n      const translations = new Map<string, Id>()\n      await Promise.all(\n        // oxlint-disable-next-line consistent-return\n        translationsArray.map(async (translation) => {\n          const dupeId = uuid()\n          const locale = translation[LANGUAGE_FIELD_NAME]\n          const docId = translation.value?._ref\n\n          if (typeof locale !== 'string' || locale.trim().length === 0) {\n            return Promise.reject(new Error('Invalid locale for translation'))\n          }\n          if (!docId) {\n            return Promise.reject(new Error('Translation document not found'))\n          }\n\n          const {duplicate: duplicateTranslation} = await firstValueFrom(\n            documentStore.pair\n              .editOperations(docId, type)\n              .pipe(filter((op: EditOperations) => op.duplicate.disabled !== 'NOT_READY')),\n          )\n\n          if (duplicateTranslation.disabled) {\n            return Promise.reject(new Error('Cannot duplicate document'))\n          }\n\n          const duplicateTranslationSuccess = firstValueFrom(\n            documentStore.pair\n              .operationEvents(docId, type)\n              .pipe(\n                filter((e: OperationSuccessEvent) => e.op === 'duplicate' && e.type === 'success'),\n              ),\n          )\n          duplicateTranslation.execute(dupeId)\n          await duplicateTranslationSuccess\n\n          translations.set(locale, dupeId)\n        }),\n      )\n\n      // 2. Duplicate the metadata document\n      const {duplicate: duplicateMetadata} = await firstValueFrom(\n        documentStore.pair\n          .editOperations(metadataDocument._id, METADATA_SCHEMA_NAME)\n          .pipe(filter((op: EditOperations) => op.duplicate.disabled !== 'NOT_READY')),\n      )\n\n      if (duplicateMetadata.disabled) {\n        return Promise.reject(new Error('Cannot duplicate document'))\n      }\n\n      const duplicateMetadataSuccess = firstValueFrom(\n        documentStore.pair\n          .operationEvents(metadataDocument._id, METADATA_SCHEMA_NAME)\n          .pipe(filter((e: OperationSuccessEvent) => e.op === 'duplicate' && e.type === 'success')),\n      )\n      const dupeId = uuid()\n      duplicateMetadata.execute(dupeId)\n      await duplicateMetadataSuccess\n\n      // 3. Patch the duplicated metadata document to update the references\n      const patch: PatchOperations = {\n        set: Object.fromEntries(\n          Array.from(translations.entries()).map(([locale, documentId]) => {\n            return [\n              `${TRANSLATIONS_ARRAY_NAME}[${LANGUAGE_FIELD_NAME} == \"${locale}\"].value._ref`,\n              documentId,\n            ]\n          }),\n        ),\n      }\n\n      await client.transaction().patch(dupeId, patch).commit()\n\n      // 4. Navigate to the duplicated document\n      navigateIntent('edit', {\n        id: Array.from(translations.values()).at(0),\n        type,\n      })\n\n      onComplete()\n    }\n\n    // Execute and handle success/error\n    performDuplication()\n      .catch((error: unknown) => {\n        console.error(error)\n        toast.push({\n          status: 'error',\n          title: 'Error duplicating document',\n          description: error instanceof Error ? error.message : 'Failed to duplicate document',\n        })\n      })\n      .finally(() => {\n        setDuplicating(false)\n      })\n  }, [client, documentStore.pair, metadataDocument, navigateIntent, onComplete, toast, type])\n\n  return useMemo(() => {\n    if (!isPermissionsLoading && !permissions?.granted) {\n      return {\n        icon: CopyIcon,\n        disabled: true,\n        label: d('action.duplicate.label'),\n        title: (\n          <InsufficientPermissionsMessage context=\"duplicate-document\" currentUser={currentUser} />\n        ),\n      }\n    }\n\n    if (!isMetadataDocumentLoading && !metadataDocument) {\n      return {\n        icon: CopyIcon,\n        disabled: true,\n        label: d('action.duplicate.label'),\n        title: d(DISABLED_REASON_KEY.METADATA_NOT_FOUND),\n      }\n    }\n\n    if (!hasOneMetadataDocument) {\n      return {\n        icon: CopyIcon,\n        disabled: true,\n        label: d('action.duplicate.label'),\n        title: d(DISABLED_REASON_KEY.MULTIPLE_METADATA),\n      }\n    }\n\n    return {\n      icon: CopyIcon,\n      disabled:\n        isDuplicating ||\n        Boolean(duplicate.disabled) ||\n        isPermissionsLoading ||\n        isMetadataDocumentLoading,\n      label: isDuplicating ? s('action.duplicate.running.label') : d('action.duplicate.label'),\n      title: duplicate.disabled ? s(DISABLED_REASON_KEY[duplicate.disabled]) : '',\n      onHandle: handle,\n    }\n  }, [\n    currentUser,\n    duplicate.disabled,\n    handle,\n    hasOneMetadataDocument,\n    isDuplicating,\n    isMetadataDocumentLoading,\n    isPermissionsLoading,\n    metadataDocument,\n    permissions?.granted,\n    s,\n    d,\n  ])\n}\n\nuseDuplicateWithTranslationsAction.action = 'duplicate'\nuseDuplicateWithTranslationsAction.displayName = 'DuplicateWithTranslationsAction'\n\n/**\n * @deprecated use useDuplicateWithTranslationsAction instead\n * Will be removed in the next major version\n */\nexport const DuplicateWithTranslationsAction = (\n  props: DocumentActionProps,\n): DocumentActionDescription => {\n  return useDuplicateWithTranslationsAction(props)\n}\n\n/* oxlint-disable-next-line typescript-eslint/no-deprecated -- re-exported for backwards compatibility */\nDuplicateWithTranslationsAction.action = 'duplicate'\n/* oxlint-disable-next-line typescript-eslint/no-deprecated -- re-exported for backwards compatibility */\nDuplicateWithTranslationsAction.displayName = 'DuplicateWithTranslationsAction'\n","import {useCallback} from 'react'\nimport {useRouter} from 'sanity/router'\nimport {usePaneRouter} from 'sanity/structure'\n\nexport function useOpenInNewPane(id?: string | null, type?: string): () => void {\n  const router = useRouter()\n  const {routerPanesState, groupIndex} = usePaneRouter()\n\n  const openInNewPane = useCallback(() => {\n    if (!id || !type) {\n      return\n    }\n\n    // No panes open, function might be called outside Structure\n    if (!routerPanesState.length) {\n      router.navigateIntent('edit', {id, type})\n      return\n    }\n\n    const panes = [...routerPanesState]\n    panes.splice(groupIndex + 1, 0, [\n      {\n        id: id,\n        params: {type},\n      },\n    ])\n\n    const href = router.resolvePathFromState({panes})\n    router.navigateUrl({path: href})\n  }, [id, type, router, routerPanesState, groupIndex])\n\n  return openInNewPane\n}\n","import {randomKey} from '@sanity/util/content'\nimport {LANGUAGE_FIELD_NAME} from 'sanity-plugin-internationalized-array'\n\nimport type {TranslationReference} from '../types'\n\n/**\n * Creates a translation reference object used in metadata documents to link\n * a language key to a document. References are created as weak by default,\n * with optional strengthen-on-publish metadata so the reference becomes\n * strong once the referenced document is published.\n */\nexport function createReference(\n  language: string,\n  ref: string,\n  type: string,\n  strengthenOnPublish: boolean = true,\n): TranslationReference {\n  return {\n    [LANGUAGE_FIELD_NAME]: language,\n    _key: randomKey(),\n    _type: 'internationalizedArrayReferenceValue',\n    value: {\n      _type: 'reference',\n      _ref: ref,\n      _weak: true,\n      // If the user has configured weakReferences, we won't want to strengthen them\n      ...(strengthenOnPublish ? {_strengthenOnPublish: {type}} : {}),\n    },\n  }\n}\n","import {CogIcon} from '@sanity/icons/Cog'\nimport {Box, Button, Stack, Text, Tooltip} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {type ObjectSchemaType, useClient} from 'sanity'\n\nimport {METADATA_SCHEMA_NAME} from '../constants'\nimport {useOpenInNewPane} from '../hooks/useOpenInNewPane'\nimport {createReference} from '../utils/createReference'\nimport {useDocumentInternationalizationContext} from './DocumentInternationalizationContext'\n\ntype LanguageManageProps = {\n  id?: string\n  metadataId?: string | null\n  schemaType: ObjectSchemaType\n  documentId: string\n  sourceLanguageId?: string\n}\n\n/**\n * Button component for opening or creating the translation metadata document.\n * When metadata already exists, clicking opens it in a new pane. When no\n * metadata exists and creation is allowed, clicking creates a new metadata\n * document with the source language reference and then opens it.\n */\nexport default function LanguageManage(props: LanguageManageProps) {\n  const {id, metadataId, schemaType, documentId, sourceLanguageId} = props\n  const open = useOpenInNewPane(id, METADATA_SCHEMA_NAME)\n  const openCreated = useOpenInNewPane(metadataId, METADATA_SCHEMA_NAME)\n  const {allowCreateMetaDoc, apiVersion, weakReferences} = useDocumentInternationalizationContext()\n  const client = useClient({apiVersion})\n  const [userHasClicked, setUserHasClicked] = useState(false)\n\n  const canCreate = !id && Boolean(metadataId) && allowCreateMetaDoc\n\n  const handleClick = useCallback(() => {\n    if (!id && metadataId && sourceLanguageId) {\n      /* Disable button while this request is pending */\n      setUserHasClicked(true)\n\n      // handle creation of meta document\n      const transaction = client.transaction()\n\n      const sourceReference = createReference(\n        sourceLanguageId,\n        documentId,\n        schemaType.name,\n        !weakReferences,\n      )\n      const newMetadataDocument = {\n        _id: metadataId,\n        _type: METADATA_SCHEMA_NAME,\n        schemaTypes: [schemaType.name],\n        translations: [sourceReference],\n      }\n\n      transaction.createIfNotExists(newMetadataDocument)\n\n      transaction\n        .commit()\n        .then(() => {\n          setUserHasClicked(false)\n          openCreated()\n          return undefined\n        })\n        .catch((err: unknown) => {\n          console.error(err)\n          setUserHasClicked(false)\n        })\n    } else {\n      open()\n    }\n  }, [\n    id,\n    metadataId,\n    sourceLanguageId,\n    client,\n    documentId,\n    schemaType.name,\n    weakReferences,\n    openCreated,\n    open,\n  ])\n\n  const disabled = (!id && !canCreate) || (canCreate && !sourceLanguageId) || userHasClicked\n\n  return (\n    <Tooltip\n      animate\n      content={\n        <Box padding={2}>\n          <Text muted size={1}>\n            Document has no other translations\n          </Text>\n        </Box>\n      }\n      fallbackPlacements={['right', 'left']}\n      placement=\"top\"\n      portal\n      disabled={Boolean(id) || canCreate}\n    >\n      <Stack>\n        <Button\n          disabled={disabled}\n          mode=\"ghost\"\n          text=\"Manage Translations\"\n          icon={CogIcon}\n          loading={userHasClicked}\n          onClick={handleClick}\n        />\n      </Stack>\n    </Tooltip>\n  )\n}\n","import {extractWithPath, Mutation} from '@sanity/mutator'\nimport {\n  isDocumentSchemaType,\n  type ObjectSchemaType,\n  type Path,\n  pathToString,\n  type SanityDocument,\n  type SchemaType,\n} from 'sanity'\n\nexport interface DocumentMember {\n  schemaType: SchemaType\n  path: Path\n  name: string\n  value: unknown\n}\n\n/**\n * Removes fields from a document that are marked with the\n * `documentInternationalization.exclude` schema option. This is used when\n * duplicating a source document to create a translation, so that\n * language-specific or non-translatable fields are stripped from the copy.\n * Returns the document with excluded paths unset, or `null` if the input is null.\n */\nexport function removeExcludedPaths(\n  doc: SanityDocument | null,\n  schemaType: ObjectSchemaType,\n): SanityDocument | null {\n  // If the supplied doc is null or the schemaType\n  // isn't a document, return as is.\n  if (!isDocumentSchemaType(schemaType) || !doc) {\n    return doc\n  }\n\n  // The extractPaths function gets all the fields in the doc with\n  // a value, along with their schemaTypes and paths. We'll end up\n  // with an array of paths in string form which we want to exclude\n  const pathsToExclude: string[] = extractPaths(doc, schemaType, [])\n    // We filter for any fields which should be excluded from the document\n    // duplicate action, based on the schemaType option being set.\n    .filter((field) => field.schemaType?.options?.documentInternationalization?.exclude === true)\n    // then we return the stringified version of the path\n    .map((field) => {\n      return pathToString(field.path)\n    })\n\n  // Now we can use the Mutation class from @sanity/mutator to patch the document\n  // to remove all the paths that are for one of the excluded fields. This is just\n  // done locally, and the documents themselves are not patched in the Content Lake.\n  const mut = new Mutation({\n    mutations: [\n      {\n        patch: {\n          id: doc._id,\n          unset: pathsToExclude,\n        },\n      },\n    ],\n  })\n\n  // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n  return mut.apply(doc) as SanityDocument\n}\n\nfunction extractPaths(\n  doc: SanityDocument,\n  schemaType: ObjectSchemaType,\n  path: Path,\n): DocumentMember[] {\n  const result: DocumentMember[] = []\n\n  for (const field of schemaType.fields) {\n    const fieldPath = [...path, field.name]\n    const fieldSchema = field.type\n    const {value} = extractWithPath(pathToString(fieldPath), doc)[0] ?? {}\n    if (value === undefined || value === null) {\n      continue\n    }\n\n    const thisFieldWithPath: DocumentMember = {\n      path: fieldPath,\n      name: field.name,\n      schemaType: fieldSchema,\n      value,\n    }\n\n    if (fieldSchema.jsonType === 'object') {\n      const innerFields = extractPaths(doc, fieldSchema, fieldPath)\n      result.push(thisFieldWithPath, ...innerFields)\n    } else if (\n      fieldSchema.jsonType === 'array' &&\n      fieldSchema.of.length &&\n      fieldSchema.of.some((item) => 'fields' in item)\n    ) {\n      const {value: arrayValue} = extractWithPath(pathToString(fieldPath), doc)[0] ?? {}\n\n      result.push(thisFieldWithPath)\n      // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n      if ((arrayValue as unknown[])?.length) {\n        // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n        for (const item of arrayValue as Array<{\n          _key?: string\n          language?: string\n          _type?: string\n        }>) {\n          if (!item._key) continue\n          const itemPath = [...fieldPath, {_key: item._key}] as Path\n          let itemSchema = fieldSchema.of.find((t) => t.name === item._type)\n          if (!item._type) {\n            itemSchema = fieldSchema.of[0]\n          }\n          if (itemSchema) {\n            // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n            const innerFields = extractPaths(doc, itemSchema as ObjectSchemaType, itemPath)\n            const arrayMember: DocumentMember = {\n              path: itemPath,\n              name: item._key,\n              schemaType: itemSchema,\n              value: item,\n            }\n            result.push(arrayMember, ...innerFields)\n          }\n        }\n      }\n    } else {\n      result.push(thisFieldWithPath)\n    }\n  }\n\n  return result\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {CheckmarkIcon} from '@sanity/icons/Checkmark'\nimport {SplitVerticalIcon} from '@sanity/icons/SplitVertical'\nimport {Badge, Box, Button, Flex, Spinner, Text, Tooltip, useToast} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport {useCallback, useState} from 'react'\nimport {\n  getDraftId,\n  getVersionFromId,\n  getVersionId,\n  isVersionId,\n  type ObjectSchemaType,\n  type SanityDocument,\n  useClient,\n} from 'sanity'\nimport {LANGUAGE_FIELD_NAME} from 'sanity-plugin-internationalized-array'\n\nimport {METADATA_SCHEMA_NAME} from '../constants'\nimport {useOpenInNewPane} from '../hooks/useOpenInNewPane'\nimport type {Language, Metadata, MetadataDocument, TranslationReference} from '../types'\nimport {createReference} from '../utils/createReference'\nimport {removeExcludedPaths} from '../utils/excludePaths'\nimport {useDocumentInternationalizationContext} from './DocumentInternationalizationContext'\n\ntype LanguageOptionProps = {\n  language: Language\n  schemaType: ObjectSchemaType\n  documentId: string\n  disabled: boolean\n  current: boolean\n  source: SanityDocument | null\n  metadataId: string | null\n  metadata?: Metadata | null\n  sourceLanguageId?: string\n}\n\n/**\n * Button component representing a single language in the translations menu.\n * Displays the language name, an ID badge, and a contextual icon: checkmark\n * for the current language, split-vertical for existing translations, or add\n * for new translations. Clicking opens an existing translation in a new pane,\n * or creates a new translation document via a Sanity transaction.\n */\nexport default function LanguageOption(props: LanguageOptionProps) {\n  const {\n    language,\n    schemaType,\n    documentId,\n    current,\n    source,\n    sourceLanguageId,\n    metadata,\n    metadataId,\n  } = props\n  /* When the user has clicked the Create button, the button should be disabled\n   * to prevent double-clicks from firing onCreate twice. This creates duplicate\n   * translation metadata entries, which editors will not be able to delete */\n  const [userHasClicked, setUserHasClicked] = useState(false)\n  const disabled =\n    props.disabled || userHasClicked || current || !source || !sourceLanguageId || !metadataId\n  const translation: TranslationReference | undefined = metadata?.translations.length\n    ? metadata.translations.find((t) => t[LANGUAGE_FIELD_NAME] === language.id)\n    : undefined\n  const {apiVersion, languageField, weakReferences, callback} =\n    useDocumentInternationalizationContext()\n  const client = useClient({apiVersion})\n  const toast = useToast()\n\n  const open = useOpenInNewPane(translation?.value?._ref, schemaType.name)\n  const handleOpen = useCallback(() => open(), [open])\n\n  const handleCreate = useCallback(async () => {\n    if (!source) {\n      throw new Error(`Cannot create translation without source document`)\n    }\n\n    if (!sourceLanguageId) {\n      throw new Error(`Cannot create translation without source language ID`)\n    }\n\n    if (!metadataId) {\n      throw new Error(`Cannot create translation without a metadata ID`)\n    }\n    /* Disable the create button while this request is pending */\n    setUserHasClicked(true)\n\n    const transaction = client.transaction()\n\n    // 1. Duplicate source document\n    // If the source belongs to a release, create the translation\n    // as a version in that same release, otherwise as a draft\n    const newTranslationDocumentId = uuid()\n    const sourceReleaseId = isVersionId(source._id) ? getVersionFromId(source._id) : undefined\n    let newTranslationDocument = {\n      ...source,\n      _id: sourceReleaseId\n        ? getVersionId(newTranslationDocumentId, sourceReleaseId)\n        : getDraftId(newTranslationDocumentId),\n      // 2. Update language of the translation\n      [languageField]: language.id,\n    }\n\n    // Remove fields / paths we don't want to duplicate\n    // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n    newTranslationDocument = removeExcludedPaths(\n      newTranslationDocument,\n      schemaType,\n    ) as SanityDocument\n\n    transaction.create(newTranslationDocument)\n\n    // 3. Maybe create the metadata document\n    const sourceReference = createReference(\n      sourceLanguageId,\n      documentId,\n      schemaType.name,\n      !weakReferences,\n    )\n    const newTranslationReference = createReference(\n      language.id,\n      newTranslationDocumentId,\n      schemaType.name,\n      !weakReferences,\n    )\n    const newMetadataDocument: MetadataDocument = {\n      _id: metadataId,\n      _type: METADATA_SCHEMA_NAME,\n      schemaTypes: [schemaType.name],\n      translations: [sourceReference],\n    }\n\n    transaction.createIfNotExists(newMetadataDocument)\n\n    // 4. Patch translation to metadata document\n    // Note: If the document was only just created in the operation above\n    // This patch operation will have no effect\n    const metadataPatch = client\n      .patch(metadataId)\n      .setIfMissing({translations: [sourceReference]})\n      .insert(`after`, `translations[-1]`, [newTranslationReference])\n\n    transaction.patch(metadataPatch)\n\n    // 5. Commit!\n    transaction\n      .commit()\n      .then(() => {\n        const metadataExisted = Boolean(metadata?._createdAt)\n\n        toast.push({\n          status: 'success',\n          title: `Created \"${language.title}\" translation`,\n          description: metadataExisted\n            ? `Updated Translations Metadata`\n            : `Created Translations Metadata`,\n        })\n\n        /* Once a translation has been created, reset the userHasClicked state to false\n         * so they can click on it to navigate to the translation */\n        setUserHasClicked(false)\n\n        // Execute callback if provided\n        if (callback) {\n          // oxlint-disable-next-line eslint-plugin-promise/no-callback-in-promise -- This is an async callback, not a Node.js callback\n          return callback({\n            client,\n            sourceLanguageId,\n            sourceDocument: source,\n            newDocument: newTranslationDocument,\n            destinationLanguageId: language.id,\n            metaDocumentId: metadataId,\n          })\n        }\n\n        return undefined\n      })\n      .catch((err: Error) => {\n        console.error(err)\n\n        /* Re-enable the create button if there was an error */\n        setUserHasClicked(false)\n\n        return toast.push({\n          status: 'error',\n          title: `Error creating translation`,\n          description: err.message,\n        })\n      })\n  }, [\n    client,\n    documentId,\n    language.id,\n    language.title,\n    languageField,\n    metadata?._createdAt,\n    metadataId,\n    schemaType,\n    source,\n    sourceLanguageId,\n    toast,\n    weakReferences,\n    callback,\n  ])\n\n  let message\n\n  if (current) {\n    message = `Current document`\n  } else if (translation) {\n    message = `Open ${language.title} translation`\n  } else if (!translation) {\n    message = `Create new ${language.title} translation`\n  }\n\n  return (\n    <Tooltip\n      animate\n      content={\n        <Box padding={2}>\n          <Text muted size={1}>\n            {message}\n          </Text>\n        </Box>\n      }\n      fallbackPlacements={['right', 'left']}\n      placement=\"top\"\n      portal\n    >\n      <Button\n        onClick={translation ? handleOpen : handleCreate}\n        mode={current && disabled ? `default` : `bleed`}\n        disabled={disabled}\n      >\n        <Flex gap={3} align=\"center\">\n          {disabled && !current ? (\n            <Spinner />\n          ) : (\n            <Text size={2}>\n              {translation ? <SplitVerticalIcon /> : current ? <CheckmarkIcon /> : <AddIcon />}\n            </Text>\n          )}\n          <Box flex={1}>\n            <Text>{language.title}</Text>\n          </Box>\n          <Badge tone={disabled || current ? `default` : `primary`}>{language.id}</Badge>\n        </Flex>\n      </Button>\n    </Tooltip>\n  )\n}\n","import {EditIcon} from '@sanity/icons/Edit'\nimport {Badge, Box, Button, Flex, Text, useToast} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {type SanityDocument, useClient} from 'sanity'\n\nimport type {Language} from '../types'\nimport {useDocumentInternationalizationContext} from './DocumentInternationalizationContext'\n\ntype LanguagePatchProps = {\n  language: Language\n  source: SanityDocument | null\n  disabled: boolean\n}\n\n/**\n * Button component that patches the current document's language field to\n * the selected language. Displays the language name and ID badge, and shows\n * a success or error toast after the patch operation completes.\n */\nexport default function LanguagePatch(props: LanguagePatchProps) {\n  const {language, source} = props\n  const {apiVersion, languageField} = useDocumentInternationalizationContext()\n  const disabled = props.disabled || !source\n  const client = useClient({apiVersion})\n  const toast = useToast()\n\n  const handleClick = useCallback(() => {\n    if (!source) {\n      throw new Error(`Cannot patch missing document`)\n    }\n\n    const currentId = source._id\n\n    client\n      .patch(currentId)\n      .set({[languageField]: language.id})\n      .commit()\n      .then(() => {\n        toast.push({\n          title: `Set document language to ${language.title}`,\n          status: `success`,\n        })\n        return undefined\n      })\n      .catch((err: unknown) => {\n        console.error(err)\n\n        return toast.push({\n          title: `Failed to set document language to ${language.title}`,\n          status: `error`,\n        })\n      })\n  }, [source, client, languageField, language, toast])\n\n  return (\n    <Button mode=\"bleed\" onClick={handleClick} disabled={disabled} justify=\"flex-start\">\n      <Flex gap={3} align=\"center\">\n        <Text size={2}>\n          <EditIcon />\n        </Text>\n        <Box flex={1}>\n          <Text>{language.title}</Text>\n        </Box>\n        <Badge>{language.id}</Badge>\n      </Flex>\n    </Button>\n  )\n}\n","import {Box} from '@sanity/ui'\n\nexport default function ConstrainedBox({children}: {children: React.ReactNode}): React.JSX.Element {\n  return <Box style={{maxWidth: 280}}>{children}</Box>\n}\n","import {Card, Flex, Text} from '@sanity/ui'\nimport type {PropsWithChildren} from 'react'\n\nimport ConstrainedBox from './ConstrainedBox'\n\n/**\n * Presentational component that renders a caution-toned card with centered\n * text inside a constrained-width box. Used to display warning messages\n * in the internationalization UI.\n */\nexport default function Warning({children}: PropsWithChildren) {\n  return (\n    <Card tone=\"caution\" padding={3}>\n      <Flex justify=\"center\">\n        <ConstrainedBox>\n          <Text size={1} align=\"center\">\n            {children}\n          </Text>\n        </ConstrainedBox>\n      </Flex>\n    </Card>\n  )\n}\n","import {TranslateIcon} from '@sanity/icons/Translate'\nimport {Box, Button, Card, Popover, Stack, Text, TextInput, useClickOutsideEvent} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport type {ChangeEvent} from 'react'\nimport {useCallback, useMemo, useRef, useState} from 'react'\nimport {useEditState, usePerspective} from 'sanity'\nimport {LANGUAGE_FIELD_NAME} from 'sanity-plugin-internationalized-array'\n\nimport {useTranslationMetadata} from '../hooks/useLanguageMetadata'\nimport type {DocumentInternationalizationMenuProps} from '../types'\nimport {useDocumentInternationalizationContext} from './DocumentInternationalizationContext'\nimport LanguageManage from './LanguageManage'\nimport LanguageOption from './LanguageOption'\nimport LanguagePatch from './LanguagePatch'\nimport Warning from './Warning'\n\nexport function DocumentInternationalizationMenu(\n  props: DocumentInternationalizationMenuProps,\n): React.JSX.Element | null {\n  const {documentId} = props\n  const schemaType = props.schemaType\n  const {languageField, supportedLanguages} = useDocumentInternationalizationContext()\n\n  // Search filter query\n  const [query, setQuery] = useState(``)\n  const handleQuery = useCallback((event: ChangeEvent<HTMLInputElement>) => {\n    if (event.currentTarget.value) {\n      setQuery(event.currentTarget.value)\n    } else {\n      setQuery(``)\n    }\n  }, [])\n\n  // UI Handlers\n  const [open, setOpen] = useState(false)\n  const handleClick = useCallback(() => setOpen((o) => !o), [])\n  const buttonRef = useRef<HTMLButtonElement>(null)\n  const popoverRef = useRef<HTMLDivElement>(null)\n  const handleClickOutside = useCallback(() => setOpen(false), [])\n  useClickOutsideEvent(handleClickOutside, () => [buttonRef.current, popoverRef.current])\n\n  // Get metadata from content lake\n  const {data, loading, error} = useTranslationMetadata(documentId)\n  const metadata = Array.isArray(data) && data.length ? data[0] : null\n\n  // Optimistically set a metadata ID for a newly created metadata document\n  // Cannot rely on generated metadata._id from useTranslationMetadata\n  // As the document store might not have returned it before creating another translation\n  const metadataId = useMemo(() => {\n    if (loading) {\n      return null\n    }\n\n    // Once created, these two values should be the same anyway\n    return metadata?._id ?? uuid()\n  }, [loading, metadata?._id])\n\n  // Duplicate a new language version from the most recent version of this document\n  // When a release is selected, the version document is the source, so documents\n  // that only exist in that release can still be translated\n  const {selectedReleaseId} = usePerspective()\n  const {draft, published, version} = useEditState(\n    documentId,\n    schemaType.name,\n    'default',\n    selectedReleaseId,\n  )\n  const source = version || draft || published\n\n  // Check for data issues\n  const documentIsInOneMetadataDocument = useMemo(() => {\n    return Array.isArray(data) && data.length <= 1\n  }, [data])\n  const rawLanguageValue = source?.[languageField]\n  const sourceLanguageId = typeof rawLanguageValue === 'string' ? rawLanguageValue : undefined\n  const sourceLanguageIsValid = supportedLanguages.some((l) => l.id === sourceLanguageId)\n  const allLanguagesAreValid = useMemo(() => {\n    const valid = supportedLanguages.every((l) => l.id && l.title)\n    if (!valid) {\n      console.warn(\n        `Not all languages are valid. It should be an array of objects with an \"id\" and \"title\" property. Or a function that returns an array of objects with an \"id\" and \"title\" property.`,\n        supportedLanguages,\n      )\n    }\n\n    return valid\n  }, [supportedLanguages])\n\n  const content = (\n    <Box padding={1}>\n      {error ? (\n        <Card tone=\"critical\" padding={1}>\n          <Text>There was an error returning translations metadata</Text>\n        </Card>\n      ) : (\n        <Stack gap={1}>\n          <LanguageManage\n            id={metadata?._id}\n            documentId={documentId}\n            metadataId={metadataId}\n            schemaType={schemaType}\n            sourceLanguageId={sourceLanguageId}\n          />\n          {supportedLanguages.length > 4 ? (\n            <TextInput onChange={handleQuery} value={query} placeholder=\"Filter languages\" />\n          ) : null}\n          {supportedLanguages.length > 0 ? (\n            <>\n              {/* Once metadata is loaded, there may be issues */}\n              {loading ? null : (\n                <>\n                  {/* Not all languages are valid */}\n                  {data && documentIsInOneMetadataDocument ? null : (\n                    <Warning>\n                      {/* TODO: Surface these documents to the user */}\n                      This document has been found in more than one Translations Metadata document\n                    </Warning>\n                  )}\n                  {/* Not all languages are valid */}\n                  {allLanguagesAreValid ? null : (\n                    <Warning>Not all language objects are valid. See the console.</Warning>\n                  )}\n                  {/* Current document has no language field */}\n                  {sourceLanguageId ? null : (\n                    <Warning>\n                      Choose a language to apply to <strong>this Document</strong>\n                    </Warning>\n                  )}\n                  {/* Current document has an invalid language field */}\n                  {sourceLanguageId && !sourceLanguageIsValid ? (\n                    <Warning>\n                      Select a supported language. Current language value:{' '}\n                      <code>{sourceLanguageId}</code>\n                    </Warning>\n                  ) : null}\n                </>\n              )}\n              {supportedLanguages\n                .filter((language) => {\n                  if (query) {\n                    return language.title.toLowerCase().includes(query.toLowerCase())\n                  }\n                  return true\n                })\n                .map((language) =>\n                  !loading && sourceLanguageId && sourceLanguageIsValid ? (\n                    // Button to duplicate this document to a new translation\n                    // And either create or update the metadata document\n                    <LanguageOption\n                      key={language.id}\n                      language={language}\n                      schemaType={schemaType}\n                      documentId={documentId}\n                      disabled={!allLanguagesAreValid}\n                      current={language.id === sourceLanguageId}\n                      metadata={metadata}\n                      metadataId={metadataId}\n                      source={source}\n                      sourceLanguageId={sourceLanguageId}\n                    />\n                  ) : (\n                    // Button to set a language field on *this* document\n                    <LanguagePatch\n                      key={language.id}\n                      source={source}\n                      language={language}\n                      // Only allow language patch change to:\n                      // - Keys not in metadata\n                      // - The key of this document in the metadata\n                      disabled={\n                        (loading ||\n                          !allLanguagesAreValid ||\n                          metadata?.translations\n                            .filter((t) => t?.value?._ref !== documentId)\n                            .some((t) => t[LANGUAGE_FIELD_NAME] === language.id)) ??\n                        false\n                      }\n                    />\n                  ),\n                )}\n            </>\n          ) : null}\n        </Stack>\n      )}\n    </Box>\n  )\n\n  const issueWithTranslations = !loading && sourceLanguageId && !sourceLanguageIsValid\n\n  if (!documentId) {\n    return null\n  }\n\n  if (!schemaType || !schemaType.name) {\n    return null\n  }\n\n  return (\n    <Popover\n      animate\n      constrainSize\n      content={content}\n      open={open}\n      portal\n      ref={popoverRef}\n      overflow=\"auto\"\n      tone=\"default\"\n    >\n      <Button\n        text=\"Translations\"\n        mode=\"bleed\"\n        disabled={!source}\n        tone={!source || loading || !issueWithTranslations ? undefined : `caution`}\n        icon={TranslateIcon}\n        onClick={handleClick}\n        ref={buttonRef}\n        selected={open}\n      />\n    </Popover>\n  )\n}\n","import {TrashIcon} from '@sanity/icons/Trash'\nimport {useToast} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n  type DocumentActionDescription,\n  type DocumentActionProps,\n  type KeyedObject,\n  type Reference,\n  type TypedObject,\n  useClient,\n} from 'sanity'\n\nimport {API_VERSION, TRANSLATIONS_ARRAY_NAME} from '../constants'\n\ntype TranslationReference = TypedObject &\n  KeyedObject & {\n    value: Reference\n  }\n\n/**\n * Document action that deletes a translation metadata document along with all\n * its referenced translation documents. Opens a confirmation dialog showing\n * how many translations will be deleted. Executes a single transaction that\n * unsets the translations array, deletes each referenced document (both\n * published and draft), and finally deletes the metadata document itself.\n */\nexport const useDeleteMetadataAction = (props: DocumentActionProps): DocumentActionDescription => {\n  const {id: documentId, published, draft} = props\n  const doc = draft || published\n\n  const [isDialogOpen, setDialogOpen] = useState(false)\n  const onClose = useCallback(() => setDialogOpen(false), [])\n  const translations: TranslationReference[] = useMemo(\n    () =>\n      doc && Array.isArray(doc[TRANSLATIONS_ARRAY_NAME])\n        ? // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n          (doc[TRANSLATIONS_ARRAY_NAME] as TranslationReference[])\n        : [],\n    [doc],\n  )\n\n  const toast = useToast()\n  const client = useClient({apiVersion: API_VERSION})\n\n  // Remove translation reference and delete document in one transaction\n  const onProceed = useCallback(() => {\n    const tx = client.transaction()\n\n    tx.patch(documentId, (patch) => patch.unset([TRANSLATIONS_ARRAY_NAME]))\n\n    if (translations.length > 0) {\n      translations.forEach((translation) => {\n        tx.delete(translation.value._ref)\n        tx.delete(`drafts.${translation.value._ref}`)\n      })\n    }\n\n    tx.delete(documentId)\n    // Shouldn't exist as this document type is in liveEdit\n    tx.delete(`drafts.${documentId}`)\n\n    tx.commit()\n      .then(() => {\n        onClose()\n\n        toast.push({\n          status: 'success',\n          title: 'Deleted document and translations',\n        })\n        return undefined\n      })\n      .catch((err: Error) => {\n        toast.push({\n          status: 'error',\n          title: 'Failed to delete document and translations',\n          description: err.message,\n        })\n      })\n  }, [client, translations, documentId, onClose, toast])\n\n  return {\n    label: `Delete all translations`,\n    disabled: !doc || !translations.length,\n    icon: TrashIcon,\n    tone: 'critical',\n    onHandle: () => {\n      setDialogOpen(true)\n    },\n    dialog: isDialogOpen && {\n      type: 'confirm',\n      onCancel: onClose,\n      onConfirm: () => {\n        onProceed()\n        onClose()\n      },\n      tone: 'critical',\n      message:\n        translations.length === 1\n          ? `Delete 1 translation and this document`\n          : `Delete all ${translations.length} translations and this document`,\n    },\n  }\n}\n","import type {DocumentBadgeDescription, DocumentBadgeProps} from 'sanity'\n\nimport {useDocumentInternationalizationContext} from '../components/DocumentInternationalizationContext'\n\n/**\n * Document badge that displays the language identifier of a document.\n * Reads the configured `languageField` from the version, draft or published\n * document, looks up the matching language in `supportedLanguages` to resolve\n * the title, and returns a badge descriptor with `primary` color. Returns\n * `null` when no document exists or the language field is empty/non-string.\n */\nexport function LanguageBadge(props: DocumentBadgeProps): DocumentBadgeDescription | null {\n  const source = props?.version || props?.draft || props?.published\n  const {languageField, supportedLanguages} = useDocumentInternationalizationContext()\n  const languageId = source?.[languageField]\n\n  if (!languageId || typeof languageId !== 'string') {\n    return null\n  }\n\n  const language = Array.isArray(supportedLanguages)\n    ? supportedLanguages.find((l) => l.id === languageId)\n    : null\n\n  // Currently we only show the language id if the supportedLanguages are async\n  return {\n    label: language?.id ?? languageId,\n    title: language?.title ?? undefined,\n    color: `primary`,\n  }\n}\n","import {Card, Spinner} from '@sanity/ui'\nimport {useEffect, useMemo} from 'react'\nimport {Preview, useEditState, useSchema, useValidationStatus} from 'sanity'\n\ntype DocumentCheckProps = {\n  id: string\n  onCheckComplete: (id: string) => void\n  addInvalidId: (id: string) => void\n  removeInvalidId: (id: string) => void\n  addDraftId: (id: string) => void\n  removeDraftId: (id: string) => void\n}\n\n// Check if the document has a draft\n// Check if that draft is valid\n// Report back to parent that it can be added to bulk publish\nexport default function DocumentCheck(props: DocumentCheckProps) {\n  const {id, onCheckComplete, addInvalidId, removeInvalidId, addDraftId, removeDraftId} = props\n  // Use empty string for type initially - we get the actual type from the loaded document\n  const editState = useEditState(id, '')\n  const documentType = editState.draft?._type ?? editState.published?._type ?? ''\n  // oxlint-disable-next-line no-useless-default-assignment\n  const {isValidating, validation = []} = useValidationStatus(id, documentType, false)\n  const schema = useSchema()\n\n  const validationHasErrors = useMemo(() => {\n    return !isValidating && validation.some((item) => item.level === 'error')\n  }, [isValidating, validation])\n\n  useEffect(() => {\n    if (validationHasErrors) {\n      addInvalidId(id)\n    } else {\n      removeInvalidId(id)\n    }\n\n    if (editState.draft) {\n      addDraftId(id)\n    } else {\n      removeDraftId(id)\n    }\n\n    if (!isValidating) {\n      onCheckComplete(id)\n    }\n  }, [\n    addDraftId,\n    addInvalidId,\n    editState.draft,\n    id,\n    isValidating,\n    onCheckComplete,\n    removeDraftId,\n    removeInvalidId,\n    validationHasErrors,\n  ])\n\n  // We only care about drafts\n  if (!editState.draft) {\n    return null\n  }\n\n  const schemaType = schema.get(editState.draft._type)\n\n  return (\n    <Card border padding={2} tone={validationHasErrors ? `critical` : `positive`}>\n      {editState.draft && schemaType ? (\n        <Preview layout=\"default\" value={editState.draft} schemaType={schemaType} />\n      ) : (\n        <Spinner />\n      )}\n    </Card>\n  )\n}\n","import {Box, type ButtonTone, Text, Tooltip} from '@sanity/ui'\nimport type {ComponentType, PropsWithChildren} from 'react'\nimport {TextWithTone} from 'sanity'\n\ntype InfoIconProps = PropsWithChildren & {\n  icon: ComponentType\n  tone: ButtonTone\n  text?: string\n}\n\nexport default function InfoIcon(props: InfoIconProps) {\n  const {text, icon, tone, children} = props\n  const Icon = icon\n\n  return (\n    <Tooltip\n      animate\n      portal\n      content={\n        children ? (\n          <>{children}</>\n        ) : (\n          <Box padding={2}>\n            <Text size={1}>{text}</Text>\n          </Box>\n        )\n      }\n    >\n      <TextWithTone tone={tone} size={1}>\n        <Icon />\n      </TextWithTone>\n    </Tooltip>\n  )\n}\n","import {InfoOutlineIcon} from '@sanity/icons/InfoOutline'\nimport {Box, Stack, Text} from '@sanity/ui'\n\nimport InfoIcon from './InfoIcon'\n\nexport default function Info() {\n  return (\n    <InfoIcon icon={InfoOutlineIcon} tone=\"primary\">\n      <Stack padding={3} gap={4} style={{maxWidth: 250}}>\n        <Box>\n          <Text size={1}>Bulk publishing uses the Scheduling API.</Text>\n        </Box>\n        <Box>\n          <Text size={1}>\n            Customized Document Actions in the Studio will not execute. Webhooks will execute.\n          </Text>\n        </Box>\n        <Box>\n          <Text size={1}>\n            Validation is checked before rendering the button below, but the Scheduling API will not\n            check for – or enforce – validation.\n          </Text>\n        </Box>\n      </Stack>\n    </InfoIcon>\n  )\n}\n","import {Button, Card, Dialog, Inline, Stack, Text, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {TextWithTone, useClient, useWorkspace} from 'sanity'\n\nimport {API_VERSION} from '../../constants'\nimport type {TranslationReference} from '../../types'\nimport DocumentCheck from './DocumentCheck'\nimport Info from './Info'\n\nexport type BulkPublishProps = {\n  translations: TranslationReference[]\n}\n\n// A root-level component with UI for hitting the Publishing API\nexport default function BulkPublish(props: BulkPublishProps) {\n  const {translations} = props\n  const client = useClient({apiVersion: API_VERSION})\n  const {projectId, dataset} = useWorkspace()\n  const toast = useToast()\n  const [invalidIds, setInvalidIds] = useState<string[] | null>(null)\n  const [checkedIds, setCheckedIds] = useState<string[]>([])\n\n  const onCheckComplete = useCallback((id: string) => {\n    setCheckedIds((ids) => Array.from(new Set([...ids, id])))\n  }, [])\n\n  // Handle dialog\n  const [open, setOpen] = useState(false)\n  const onOpen = useCallback(() => setOpen(true), [])\n  const onClose = useCallback(() => setOpen(false), [])\n\n  const addInvalidId = useCallback((id: string) => {\n    setInvalidIds((ids) => (ids ? Array.from(new Set([...ids, id])) : [id]))\n  }, [])\n\n  const removeInvalidId = useCallback((id: string) => {\n    setInvalidIds((ids) => (ids ? ids.filter((i) => i !== id) : []))\n  }, [])\n\n  const [draftIds, setDraftIds] = useState<string[]>([])\n\n  const addDraftId = useCallback((id: string) => {\n    setDraftIds((ids) => Array.from(new Set([...ids, id])))\n  }, [])\n\n  const removeDraftId = useCallback((id: string) => {\n    setDraftIds((ids) => ids.filter((i) => i !== id))\n  }, [])\n\n  const handleBulkPublish = useCallback(() => {\n    const body = translations.map((translation) => ({\n      documentId: translation.value._ref,\n    }))\n    client\n      .request({\n        uri: `/publish/${projectId}/${dataset}`,\n        method: 'POST',\n        body,\n      })\n      .then(() => {\n        toast.push({\n          status: 'success',\n          title: 'Success',\n          description: 'Bulk publish complete',\n        })\n        return undefined\n      })\n      .catch((err: Error) => {\n        console.error(err)\n        toast.push({\n          status: 'error',\n          title: 'Error',\n          description: 'Bulk publish failed',\n        })\n      })\n  }, [translations, client, projectId, dataset, toast])\n\n  const disabled =\n    // Not all documents have been checked\n    checkedIds.length !== translations.length ||\n    // Some document(s) are invalid\n    Boolean(invalidIds && invalidIds?.length > 0) ||\n    // No documents are drafts\n    !draftIds.length\n\n  return translations?.length > 0 ? (\n    <Card padding={4} border radius={2}>\n      <Stack gap={3}>\n        <Inline gap={3}>\n          <Text weight=\"bold\" size={1}>\n            Bulk publishing\n          </Text>\n          <Info />\n        </Inline>\n\n        <Stack>\n          <Button onClick={onOpen} text=\"Prepare bulk publishing\" mode=\"ghost\" />\n        </Stack>\n\n        {open && (\n          <Dialog\n            animate\n            header=\"Bulk publishing\"\n            id=\"bulk-publish-dialog\"\n            onClose={onClose}\n            zOffset={1000}\n            width={3}\n          >\n            <Stack gap={4} padding={4}>\n              {draftIds.length > 0 ? (\n                <Stack gap={2}>\n                  <Text size={1}>\n                    There{' '}\n                    {draftIds.length === 1\n                      ? `is 1 draft document`\n                      : `are ${draftIds.length} draft documents`}\n                    .\n                  </Text>\n                  {invalidIds && invalidIds.length > 0 ? (\n                    <TextWithTone tone=\"critical\" size={1}>\n                      {invalidIds.length === 1\n                        ? `1 draft document has`\n                        : `${invalidIds.length} draft documents have`}{' '}\n                      validation issues that must be addressed first\n                    </TextWithTone>\n                  ) : (\n                    <TextWithTone tone=\"positive\" size={1}>\n                      All drafts are valid and can be bulk published\n                    </TextWithTone>\n                  )}\n                </Stack>\n              ) : null}\n\n              <Stack gap={1}>\n                {translations\n                  .filter((translation) => translation?.value?._ref)\n                  .map((translation) => (\n                    <DocumentCheck\n                      key={translation._key}\n                      id={translation.value._ref}\n                      onCheckComplete={onCheckComplete}\n                      addInvalidId={addInvalidId}\n                      removeInvalidId={removeInvalidId}\n                      addDraftId={addDraftId}\n                      removeDraftId={removeDraftId}\n                    />\n                  ))}\n              </Stack>\n              {draftIds.length > 0 ? (\n                <Button\n                  mode=\"ghost\"\n                  tone={invalidIds && invalidIds?.length > 0 ? 'caution' : 'positive'}\n                  text={\n                    draftIds.length === 1\n                      ? `Publish draft document`\n                      : `Bulk publish ${draftIds.length} draft documents`\n                  }\n                  onClick={handleBulkPublish}\n                  disabled={disabled}\n                />\n              ) : (\n                <Text muted size={1}>\n                  No draft documents to publish\n                </Text>\n              )}\n            </Stack>\n          </Dialog>\n        )}\n      </Stack>\n    </Card>\n  ) : null\n}\n","import {useEffect} from 'react'\nimport {PatchEvent, unset, useClient, useEditState} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {API_VERSION} from '../../constants'\nimport type {TranslationReference} from '../../types'\n\ntype ReferencePatcherProps = {\n  translation: TranslationReference\n  documentType: string\n  metadataId: string\n}\n\n// For every reference, check if it is published, and if so, strengthen the reference\nexport default function ReferencePatcher(props: ReferencePatcherProps) {\n  const {translation, documentType, metadataId} = props\n  const editState = useEditState(translation.value._ref, documentType)\n  const client = useClient({apiVersion: API_VERSION})\n  const {onChange} = useDocumentPane()\n\n  useEffect(() => {\n    if (\n      // We have a reference\n      translation.value._ref &&\n      // It's still weak and not-yet-strengthened\n      translation.value._weak &&\n      // We also want to keep this check because maybe the user *configured* weak refs\n      translation.value._strengthenOnPublish &&\n      // The referenced document has just been published\n      !editState.draft &&\n      editState.published &&\n      editState.ready\n    ) {\n      const referencePathBase = ['translations', {_key: translation._key}, 'value']\n\n      onChange(\n        new PatchEvent([\n          unset([...referencePathBase, '_weak']),\n          unset([...referencePathBase, '_strengthenOnPublish']),\n        ]),\n      )\n    }\n  }, [translation, editState, metadataId, client, onChange])\n\n  return null\n}\n","import type {TranslationReference} from '../../types'\nimport ReferencePatcher from './ReferencePatcher'\n\ntype OptimisticallyStrengthenProps = {\n  translations: TranslationReference[]\n  metadataId: string\n}\n\n// There's no good reason to leave published references as weak\n// So this component will run on every render and strengthen them\nexport default function OptimisticallyStrengthen(props: OptimisticallyStrengthenProps) {\n  // oxlint-disable-next-line no-useless-default-assignment\n  const {translations = [], metadataId} = props\n\n  if (!translations.length) {\n    return null\n  }\n\n  return (\n    <>\n      {translations.map((translation) =>\n        translation.value._strengthenOnPublish?.type ? (\n          <ReferencePatcher\n            key={translation._key}\n            translation={translation}\n            documentType={translation.value._strengthenOnPublish.type}\n            metadataId={metadataId}\n          />\n        ) : null,\n      )}\n    </>\n  )\n}\n","import {TranslateIcon} from '@sanity/icons/Translate'\nimport {defineField, defineType, type DocumentDefinition, type FieldDefinition} from 'sanity'\nimport {LANGUAGE_FIELD_NAME} from 'sanity-plugin-internationalized-array'\n\nimport {METADATA_SCHEMA_NAME, TRANSLATIONS_ARRAY_NAME} from '../../constants'\nimport type {TranslationReference} from '../../types'\n\n/**\n * Creates the `translation.metadata` document schema definition. This schema\n * type stores the array of translation references linking all language versions\n * of a document together, along with the allowed schema types and any custom\n * metadata fields provided by the plugin consumer. The document uses `liveEdit`\n * so changes are published immediately without drafts.\n */\nexport default (\n  schemaTypes: string[],\n  metadataFields: FieldDefinition[],\n  omnisearchVisibility = true,\n): DocumentDefinition =>\n  defineType({\n    type: 'document',\n    name: METADATA_SCHEMA_NAME,\n    title: 'Translation metadata',\n    icon: TranslateIcon,\n    liveEdit: true,\n    __experimental_omnisearch_visibility: omnisearchVisibility,\n    fields: [\n      defineField({\n        name: TRANSLATIONS_ARRAY_NAME,\n        type: 'internationalizedArrayReference',\n      }),\n      defineField({\n        name: 'schemaTypes',\n        description:\n          'Optional: Used to filter the reference fields above so all translations share the same types.',\n        type: 'array',\n        of: [{type: 'string'}],\n        options: {list: schemaTypes},\n        readOnly: ({value}) => Boolean(value),\n      }),\n      ...metadataFields,\n    ],\n    preview: {\n      select: {\n        translations: TRANSLATIONS_ARRAY_NAME,\n        documentSchemaTypes: 'schemaTypes',\n      },\n      prepare(selection) {\n        const {translations = [], documentSchemaTypes = []} = selection\n        const title =\n          translations.length === 1 ? `1 Translation` : `${translations.length} Translations`\n        const languageKeys = translations.length\n          ? translations\n              .map((t: TranslationReference) => t[LANGUAGE_FIELD_NAME].toUpperCase())\n              .join(', ')\n          : ``\n        const subtitle = [\n          languageKeys ? `(${languageKeys})` : null,\n          documentSchemaTypes?.length ? documentSchemaTypes.map((s: string) => s).join(`, `) : ``,\n        ]\n          .filter(Boolean)\n          .join(` `)\n\n        return {\n          title,\n          subtitle,\n        }\n      },\n    },\n  })\n","import {Stack} from '@sanity/ui'\nimport {defineField, definePlugin, isSanityDocument} from 'sanity'\nimport {internationalizedArray, LANGUAGE_FIELD_NAME} from 'sanity-plugin-internationalized-array'\n\nimport {useDeleteMetadataAction} from './actions/DeleteMetadataAction'\nimport {LanguageBadge} from './badges'\nimport BulkPublish from './components/BulkPublish'\nimport {DocumentInternationalizationProvider} from './components/DocumentInternationalizationContext'\nimport {DocumentInternationalizationMenu} from './components/DocumentInternationalizationMenu'\nimport OptimisticallyStrengthen from './components/OptimisticallyStrengthen'\nimport {API_VERSION, DEFAULT_CONFIG, METADATA_SCHEMA_NAME} from './constants'\nimport {documentInternationalizationUsEnglishLocaleBundle} from './i18n'\nimport metadata from './schema/translation/metadata'\nimport type {PluginConfig, TranslationReference} from './types'\n\nexport const documentInternationalization = definePlugin<PluginConfig>((config) => {\n  const pluginConfig = {...DEFAULT_CONFIG, ...config}\n  const {\n    supportedLanguages,\n    schemaTypes,\n    languageField,\n    bulkPublish,\n    metadataFields,\n    hideLanguageFilter,\n    metadataOmnisearchVisibility,\n    metadataInternationalization,\n    addTemplates,\n  } = pluginConfig\n\n  if (schemaTypes.length === 0) {\n    throw new Error(\n      'You must specify at least one schema type on which to enable document internationalization. Update the `schemaTypes` option in the documentInternationalization() configuration.',\n    )\n  }\n\n  return {\n    name: '@sanity/document-internationalization',\n\n    studio: {\n      components: {\n        layout: (props) => (\n          <DocumentInternationalizationProvider {...props} pluginConfig={pluginConfig} />\n        ),\n      },\n    },\n\n    i18n: {\n      bundles: [documentInternationalizationUsEnglishLocaleBundle],\n    },\n\n    // Adds:\n    // - A bulk-publishing UI component to the form\n    // - Will only work for projects on a compatible plan\n    form: {\n      components: {\n        input: (props) => {\n          if (\n            props.id === 'root' &&\n            props.schemaType.name === METADATA_SCHEMA_NAME &&\n            isSanityDocument(props?.value)\n          ) {\n            const metadataId = props?.value?._id\n            const translations =\n              // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n              (props?.value?.['translations'] as TranslationReference[]) ?? []\n            const weakAndTypedTranslations = translations.filter(\n              ({value}) => value?._weak && value._strengthenOnPublish,\n            )\n\n            return (\n              <Stack gap={5}>\n                {bulkPublish ? <BulkPublish translations={translations} /> : null}\n                {weakAndTypedTranslations.length > 0 ? (\n                  <OptimisticallyStrengthen\n                    metadataId={metadataId}\n                    translations={weakAndTypedTranslations}\n                  />\n                ) : null}\n                {props.renderDefault(props)}\n              </Stack>\n            )\n          }\n\n          return props.renderDefault(props)\n        },\n      },\n    },\n\n    // Adds:\n    // - The `Translations` dropdown to the editing form\n    // - `Badges` to documents with a language value\n    // - The `DeleteMetadataAction` action to the metadata document type\n    document: {\n      unstable_languageFilter: (prev, ctx) => {\n        const {schemaType, documentId} = ctx\n\n        if (typeof hideLanguageFilter === 'function') {\n          if (hideLanguageFilter(ctx)) return prev\n        } else if (Array.isArray(hideLanguageFilter)) {\n          if (hideLanguageFilter.includes(schemaType)) return prev\n        } else if (hideLanguageFilter) {\n          return prev\n        }\n\n        return schemaTypes.includes(schemaType) && documentId\n          ? [...prev, (props) => DocumentInternationalizationMenu({...props, documentId})]\n          : prev\n      },\n      badges: (prev, {schemaType}) => {\n        if (!schemaTypes.includes(schemaType)) {\n          return prev\n        }\n\n        return [(props) => LanguageBadge(props), ...prev]\n      },\n      actions: (prev, {schemaType}) => {\n        if (schemaType === METADATA_SCHEMA_NAME) {\n          return [...prev, useDeleteMetadataAction]\n        }\n\n        return prev\n      },\n    },\n\n    // Adds:\n    // - The `Translations metadata` document type to the schema\n    schema: {\n      // Create the metadata document type\n      types: [metadata(schemaTypes, metadataFields, metadataOmnisearchVisibility)],\n\n      // For every schema type this plugin is enabled on\n      // Create an initial value template to set the language\n      templates: (prev, {schema}) => {\n        if (!addTemplates) {\n          return prev\n        }\n\n        // Templates are not setup for async languages\n        if (!Array.isArray(supportedLanguages)) {\n          return prev\n        }\n\n        const parameterizedTemplates = schemaTypes.map((schemaType) => ({\n          id: `${schemaType}-parameterized`,\n          title: `${schema?.get(schemaType)?.title ?? schemaType}: with Language`,\n          schemaType,\n          parameters: [{name: `languageId`, title: `Language ID`, type: `string`}],\n          value: ({languageId}: {languageId: string}) => ({\n            [languageField]: languageId,\n          }),\n        }))\n\n        const staticTemplates = schemaTypes.flatMap((schemaType) => {\n          return supportedLanguages.map((language) => ({\n            id: `${schemaType}-${language.id}`,\n            title: `${language.title} ${schema?.get(schemaType)?.title ?? schemaType}`,\n            schemaType,\n            value: {\n              [languageField]: language.id,\n            },\n          }))\n        })\n\n        return [...prev, ...parameterizedTemplates, ...staticTemplates]\n      },\n    },\n\n    // Uses:\n    // - `sanity-plugin-internationalized-array` to maintain the translations array\n    plugins: [\n      // Translation metadata stores its references using this plugin\n      // It cuts down on attribute usage and gives UI conveniences to add new translations\n      internationalizedArray({\n        ...metadataInternationalization,\n        apiVersion: pluginConfig.apiVersion,\n        languages: supportedLanguages,\n        includeForDocumentType: (documentType) => documentType === METADATA_SCHEMA_NAME,\n        fieldTypes: [\n          defineField(\n            {\n              name: 'reference',\n              type: 'reference',\n              to: schemaTypes.map((type) => ({type})),\n              weak: pluginConfig.weakReferences,\n              // Reference filters don't actually enforce validation!\n              validation: (Rule) =>\n                // @ts-expect-error - fix typings\n                Rule.custom(async (item: TranslationReference, context) => {\n                  if (!item?.value?._ref || !item?.[LANGUAGE_FIELD_NAME]) {\n                    return true\n                  }\n\n                  const client = context.getClient({apiVersion: API_VERSION})\n                  const valueLanguage = await client.fetch(\n                    `*[_id in [$ref, $draftRef]][0].${languageField}`,\n                    {\n                      ref: item.value._ref,\n                      draftRef: `drafts.${item.value._ref}`,\n                    },\n                  )\n\n                  if (valueLanguage && valueLanguage === item[LANGUAGE_FIELD_NAME]) {\n                    return true\n                  }\n\n                  return `Referenced document does not have the correct language value`\n                }),\n              options: {\n                // @ts-expect-error - Update type once it knows the values of this filter\n                filter: ({parent, document}) => {\n                  if (!parent) return null\n\n                  // I'm not sure in what instance there's an array of parents\n                  // But the Type suggests it's possible\n                  const parentArray = Array.isArray(parent) ? parent : [parent]\n                  const language = parentArray.find((p) => p[LANGUAGE_FIELD_NAME])\n\n                  if (!language?.[LANGUAGE_FIELD_NAME]) return null\n\n                  if (document['schemaTypes']) {\n                    return {\n                      filter: `_type in $schemaTypes && ${languageField} == $language`,\n                      params: {\n                        schemaTypes: document['schemaTypes'],\n                        language: language[LANGUAGE_FIELD_NAME],\n                      },\n                    }\n                  }\n\n                  return {\n                    filter: `${languageField} == $language`,\n                    params: {language: language[LANGUAGE_FIELD_NAME]},\n                  }\n                },\n              },\n            },\n            {strict: false},\n          ),\n        ],\n      }),\n    ],\n  }\n})\n"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","names":["Preview","useSchema","Feedback","DocumentPreviewProps","value","type","DocumentPreview","props","$","_c","schema","t0","get","schemaType","t1","Symbol","for","PluginConfigContext","METADATA_SCHEMA_NAME","TRANSLATIONS_ARRAY_NAME","API_VERSION","DEFAULT_CONFIG","supportedLanguages","schemaTypes","languageField","weakReferences","bulkPublish","metadataFields","apiVersion","allowCreateMetaDoc","callback","hideLanguageFilter","metadataOmnisearchVisibility","addTemplates","SanityDocument","METADATA_SCHEMA_NAME","separateReferences","data","translations","otherReferences","length","forEach","doc","_type","push","Card","Flex","Spinner","Stack","Text","useEffect","useMemo","SanityDocument","useListeningQuery","MetadataDocument","DocumentPreview","separateReferences","DeleteTranslationDialogProps","doc","documentId","setTranslations","translations","DeleteTranslationDialog","props","$","_c","t0","id","t1","Symbol","for","t2","params","initialValue","data","loading","t3","otherReferences","t4","t5","t6","length","t7","t8","_type","t9","map","_temp","t10","_temp2","t11","t12","t13","reference","_id","translation","Button","Grid","DeleteTranslationFooterProps","translations","onClose","onProceed","DeleteTranslationFooter","props","$","_c","t0","t1","length","t2","t3","createContext","use","useContext","useMemo","LayoutProps","useClient","useWorkspace","DEFAULT_CONFIG","PluginConfig","PluginConfigContext","DocumentInternationalizationContext","useDocumentInternationalizationContext","DocumentInternationalizationProviderProps","pluginConfig","Required","Omit","Pick","promiseCache","Map","Promise","createCacheKey","workspaceId","createOrGetPromise","fn","cacheKey","cached","get","promise","set","DocumentInternationalizationProvider","props","$","_c","t0","apiVersion","client","workspace","name","t1","t2","bb0","Array","isArray","supportedLanguages","t3","t4","languagesPromise","contextValue","renderDefault","t5","TrashIcon","useToast","useCallback","useState","useClient","DocumentActionDescription","DocumentActionProps","LANGUAGE_FIELD_NAME","DeleteTranslationDialog","DeleteTranslationFooter","useDocumentInternationalizationContext","API_VERSION","TRANSLATIONS_ARRAY_NAME","MetadataDocument","DeleteOperation","useDeleteTranslationAction","props","$","_c","id","documentId","published","draft","doc","languageField","isDialogOpen","setDialogOpen","t0","Symbol","for","translations","setTranslations","t1","onClose","rawDocumentLanguage","documentLanguage","toast","t2","apiVersion","client","t3","tx","transaction","operation","length","forEach","translation","patch","_id","unset","delete","commit","then","push","status","title","description","catch","err","message","onProceed","t4","t5","t6","type","header","content","footer","t7","label","disabled","icon","tone","onHandle","dialog","action","displayName","DeleteTranslationAction","useListeningQuery","METADATA_SCHEMA_NAME","Metadata","query","useTranslationMetadata","id","$","_c","t0","params","translationSchema","data","loading","error","t1","defineLocaleResourceBundle","documenti18nLocaleNamespace","const","documentInternationalizationUsEnglishLocaleBundle","locale","namespace","resources","CopyIcon","useToast","uuid","useCallback","useMemo","useState","filter","firstValueFrom","DEFAULT_STUDIO_CLIENT_OPTIONS","Id","InsufficientPermissionsMessage","PatchOperations","useClient","useCurrentUser","useDocumentOperation","useDocumentPairPermissions","useDocumentStore","useTranslation","DocumentActionProps","DocumentActionDescription","LANGUAGE_FIELD_NAME","useRouter","structureLocaleNamespace","METADATA_SCHEMA_NAME","TRANSLATIONS_ARRAY_NAME","useTranslationMetadata","documenti18nLocaleNamespace","EditOperations","duplicate","disabled","execute","id","OperationSuccessEvent","op","type","DISABLED_REASON_KEY","METADATA_NOT_FOUND","MULTIPLE_METADATA","NOTHING_TO_DUPLICATE","NOT_READY","useDuplicateWithTranslationsAction","t0","$","_c","onComplete","documentStore","navigateIntent","isDuplicating","setDuplicating","t1","permission","permissions","isPermissionsLoading","data","loading","isMetadataDocumentLoading","hasOneMetadataDocument","Array","isArray","length","metadataDocument","client","toast","t","s","d","currentUser","t2","pair","performDuplication","Promise","reject","Error","translationsArray","translations","Map","all","map","translation","dupeId","locale","docId","value","_ref","trim","duplicateTranslation","editOperations","pipe","_temp","duplicateTranslationSuccess","operationEvents","_temp2","set","duplicateMetadata","_id","_temp3","duplicateMetadataSuccess","_temp4","dupeId_0","patch","Object","fromEntries","from","entries","_temp5","transaction","commit","values","at","catch","error","console","push","status","title","description","message","finally","handle","granted","t3","bb0","t4","t5","t6","icon","label","Boolean","t7","onHandle","action","displayName","DuplicateWithTranslationsAction","props","e","op_0","e_0","locale_0","documentId","useCallback","useRouter","usePaneRouter","useOpenInNewPane","id","type","$","_c","router","routerPanesState","groupIndex","t0","length","navigateIntent","panes","splice","params","href","resolvePathFromState","navigateUrl","path","openInNewPane","randomKey","LANGUAGE_FIELD_NAME","TranslationReference","createReference","language","ref","type","strengthenOnPublish","_key","_type","value","_ref","_weak","_strengthenOnPublish","CogIcon","Box","Button","Stack","Text","Tooltip","useCallback","useState","ObjectSchemaType","useClient","METADATA_SCHEMA_NAME","useOpenInNewPane","createReference","useDocumentInternationalizationContext","LanguageManageProps","id","metadataId","schemaType","documentId","sourceLanguageId","LanguageManage","props","$","_c","open","openCreated","allowCreateMetaDoc","apiVersion","weakReferences","t0","client","userHasClicked","setUserHasClicked","canCreate","Boolean","t1","name","transaction","sourceReference","newMetadataDocument","_id","_type","schemaTypes","translations","createIfNotExists","commit","then","catch","err","console","error","handleClick","disabled","t2","t3","Symbol","for","t4","t5","t6","extractWithPath","Mutation","isDocumentSchemaType","ObjectSchemaType","Path","pathToString","SanityDocument","SchemaType","DocumentMember","schemaType","path","name","value","removeExcludedPaths","doc","pathsToExclude","extractPaths","filter","field","options","documentInternationalization","exclude","map","mut","mutations","patch","id","_id","unset","apply","result","fields","fieldPath","fieldSchema","type","undefined","thisFieldWithPath","jsonType","innerFields","push","of","length","some","item","arrayValue","Array","_key","language","_type","itemPath","itemSchema","find","t","arrayMember","AddIcon","CheckmarkIcon","SplitVerticalIcon","Badge","Box","Button","Flex","Spinner","Text","Tooltip","useToast","uuid","useCallback","useState","getDraftId","getVersionFromId","getVersionId","isVersionId","ObjectSchemaType","SanityDocument","useClient","LANGUAGE_FIELD_NAME","METADATA_SCHEMA_NAME","useOpenInNewPane","Language","Metadata","MetadataDocument","TranslationReference","createReference","removeExcludedPaths","useDocumentInternationalizationContext","LanguageOptionProps","language","schemaType","documentId","disabled","current","source","metadataId","metadata","sourceLanguageId","LanguageOption","props","$","_c","userHasClicked","setUserHasClicked","t0","id","translations","length","find","t","undefined","translation","apiVersion","languageField","weakReferences","callback","t1","client","toast","open","value","_ref","name","t2","handleOpen","t3","title","_createdAt","Error","transaction","newTranslationDocumentId","sourceReleaseId","_id","newTranslationDocument","create","sourceReference","newTranslationReference","newMetadataDocument","_type","schemaTypes","createIfNotExists","metadataPatch","patch","setIfMissing","insert","commit","then","metadataExisted","Boolean","push","status","description","sourceDocument","newDocument","destinationLanguageId","metaDocumentId","catch","err","console","error","message","handleCreate","t4","t5","Symbol","for","t6","t7","t8","t9","t10","t11","t12","t13","t14","EditIcon","Badge","Box","Button","Flex","Text","useToast","useCallback","SanityDocument","useClient","Language","useDocumentInternationalizationContext","LanguagePatchProps","language","source","disabled","LanguagePatch","props","$","_c","apiVersion","languageField","t0","client","toast","t1","id","title","Error","currentId","_id","patch","set","commit","then","push","status","catch","err","console","error","handleClick","t2","Symbol","for","t3","t4","t5","t6","Box","ConstrainedBox","t0","$","_c","children","t1","Symbol","for","maxWidth","t2","Card","Flex","Text","PropsWithChildren","ConstrainedBox","Warning","t0","$","_c","children","t1","TranslateIcon","Box","Button","Card","Popover","Stack","Text","TextInput","useClickOutsideEvent","uuid","ChangeEvent","useCallback","useMemo","useRef","useState","useEditState","usePerspective","LANGUAGE_FIELD_NAME","useTranslationMetadata","DocumentInternationalizationMenuProps","useDocumentInternationalizationContext","LanguageManage","LanguageOption","LanguagePatch","Warning","DocumentInternationalizationMenu","props","$","_c","documentId","schemaType","languageField","supportedLanguages","query","setQuery","t0","Symbol","for","event","currentTarget","value","handleQuery","open","setOpen","t1","_temp","handleClick","buttonRef","popoverRef","t2","handleClickOutside","t3","current","data","loading","error","metadata","Array","isArray","length","_id","t4","bb0","t5","metadataId","selectedReleaseId","draft","published","version","name","source","documentIsInOneMetadataDocument","rawLanguageValue","sourceLanguageId","undefined","t6","l","id","some","sourceLanguageIsValid","every","_temp2","valid","console","warn","allLanguagesAreValid","t7","filter","language","title","toLowerCase","includes","map","language_0","translations","t","_ref","t_0","content","issueWithTranslations","t8","t9","t10","t11","l_0","o","TrashIcon","useToast","useCallback","useMemo","useState","DocumentActionDescription","DocumentActionProps","KeyedObject","Reference","TypedObject","useClient","API_VERSION","TRANSLATIONS_ARRAY_NAME","TranslationReference","value","useDeleteMetadataAction","props","$","_c","id","documentId","published","draft","doc","isDialogOpen","setDialogOpen","t0","Symbol","for","onClose","t1","Array","isArray","translations","toast","t2","apiVersion","client","t3","tx","transaction","patch","_temp","length","forEach","translation","delete","_ref","commit","then","push","status","title","catch","err","description","message","onProceed","t4","t5","t6","type","onCancel","onConfirm","tone","t7","label","disabled","icon","onHandle","dialog","unset","DocumentBadgeDescription","DocumentBadgeProps","useDocumentInternationalizationContext","LanguageBadge","props","source","version","draft","published","languageField","supportedLanguages","languageId","language","Array","isArray","find","l","id","label","title","undefined","color","Card","Spinner","useEffect","useMemo","Preview","useEditState","useSchema","useValidationStatus","DocumentCheckProps","id","onCheckComplete","addInvalidId","removeInvalidId","addDraftId","removeDraftId","DocumentCheck","props","$","_c","editState","documentType","draft","_type","published","isValidating","validation","t0","t1","undefined","schema","t2","some","_temp","validationHasErrors","t3","t4","t5","get","schemaType","t6","t7","t8","item","level","Box","ButtonTone","Text","Tooltip","ComponentType","PropsWithChildren","TextWithTone","InfoIconProps","icon","tone","text","InfoIcon","props","$","_c","children","Icon","t0","t1","t2","t3","InfoOutlineIcon","Box","Stack","Text","InfoIcon","Info","$","_c","t0","Symbol","for","maxWidth","t1","t2","t3","Button","Card","Dialog","Inline","Stack","Text","useToast","useCallback","useState","TextWithTone","useClient","useWorkspace","API_VERSION","TranslationReference","DocumentCheck","Info","BulkPublishProps","translations","BulkPublish","props","$","_c","t0","Symbol","for","apiVersion","client","projectId","dataset","toast","invalidIds","setInvalidIds","t1","checkedIds","setCheckedIds","t2","id","ids","Array","from","Set","onCheckComplete","open","setOpen","t3","onOpen","t4","onClose","t5","id_0","ids_0","addInvalidId","t6","id_1","ids_1","filter","i","removeInvalidId","t7","draftIds","setDraftIds","t8","id_2","ids_2","addDraftId","t9","id_3","ids_3","i_0","removeDraftId","t10","body","map","_temp","request","uri","method","then","push","status","title","description","catch","err","console","error","handleBulkPublish","disabled","length","Boolean","t11","_temp2","translation_1","translation","_key","value","_ref","translation_0","documentId","useEffect","PatchEvent","unset","useClient","useEditState","useDocumentPane","API_VERSION","TranslationReference","ReferencePatcherProps","translation","documentType","metadataId","ReferencePatcher","props","$","_c","editState","value","_ref","t0","Symbol","for","apiVersion","client","onChange","t1","_key","_strengthenOnPublish","_weak","draft","published","ready","referencePathBase","t2","TranslationReference","ReferencePatcher","OptimisticallyStrengthenProps","translations","metadataId","OptimisticallyStrengthen","props","$","_c","t0","t1","undefined","length","t2","t3","translation","value","_strengthenOnPublish","type","_key","map","TranslateIcon","defineField","defineType","DocumentDefinition","FieldDefinition","LANGUAGE_FIELD_NAME","METADATA_SCHEMA_NAME","TRANSLATIONS_ARRAY_NAME","TranslationReference","schemaTypes","metadataFields","omnisearchVisibility","type","name","title","icon","liveEdit","__experimental_omnisearch_visibility","fields","description","of","options","list","readOnly","value","Boolean","preview","select","translations","documentSchemaTypes","prepare","selection","length","languageKeys","map","t","toUpperCase","join","subtitle","s","filter","Stack","defineField","definePlugin","isSanityDocument","internationalizedArray","LANGUAGE_FIELD_NAME","useDeleteMetadataAction","LanguageBadge","BulkPublish","DocumentInternationalizationProvider","DocumentInternationalizationMenu","OptimisticallyStrengthen","API_VERSION","DEFAULT_CONFIG","METADATA_SCHEMA_NAME","documentInternationalizationUsEnglishLocaleBundle","metadata","PluginConfig","TranslationReference","documentInternationalization","config","pluginConfig","supportedLanguages","schemaTypes","languageField","bulkPublish","metadataFields","hideLanguageFilter","metadataOmnisearchVisibility","metadataInternationalization","addTemplates","length","Error","name","studio","components","layout","props","i18n","bundles","form","input","id","schemaType","value","metadataId","_id","translations","weakAndTypedTranslations","filter","_weak","_strengthenOnPublish","renderDefault","document","unstable_languageFilter","prev","ctx","documentId","Array","isArray","includes","badges","actions","schema","types","templates","parameterizedTemplates","map","title","get","parameters","type","languageId","staticTemplates","flatMap","language","plugins","apiVersion","languages","includeForDocumentType","documentType","fieldTypes","to","weak","weakReferences","validation","Rule","custom","item","context","_ref","client","getClient","valueLanguage","fetch","ref","draftRef","options","parent","parentArray","find","p","params","strict"],"sources":["../src/components/DeleteTranslationDialog/DocumentPreview.tsx","../src/constants.ts","../src/components/DeleteTranslationDialog/separateReferences.ts","../src/components/DeleteTranslationDialog/index.tsx","../src/components/DeleteTranslationFooter.tsx","../src/components/DocumentInternationalizationContext.tsx","../src/actions/DeleteTranslationAction.tsx","../src/hooks/useLanguageMetadata.tsx","../src/i18n/index.ts","../src/actions/DuplicateWithTranslationsAction.tsx","../src/hooks/useOpenInNewPane.tsx","../src/utils/createReference.ts","../src/components/LanguageManage.tsx","../src/utils/excludePaths.ts","../src/components/LanguageOption.tsx","../src/components/LanguagePatch.tsx","../src/components/ConstrainedBox.tsx","../src/components/Warning.tsx","../src/components/DocumentInternationalizationMenu.tsx","../src/actions/DeleteMetadataAction.tsx","../src/badges/index.tsx","../src/components/BulkPublish/DocumentCheck.tsx","../src/components/BulkPublish/InfoIcon.tsx","../src/components/BulkPublish/Info.tsx","../src/components/BulkPublish/index.tsx","../src/components/OptimisticallyStrengthen/ReferencePatcher.tsx","../src/components/OptimisticallyStrengthen/index.tsx","../src/schema/translation/metadata.ts","../src/plugin.tsx"],"sourcesContent":["import {Preview, useSchema} from 'sanity'\nimport {Feedback} from 'sanity-plugin-utils'\n\ntype DocumentPreviewProps = {\n  value: unknown\n  type: string\n}\n\n// Wrapper of Preview just so that the schema type is satisfied by schema.get()\nexport default function DocumentPreview(props: DocumentPreviewProps) {\n  const schema = useSchema()\n\n  const schemaType = schema.get(props.type)\n  if (!schemaType) {\n    return <Feedback tone=\"critical\" title=\"Schema type not found\" />\n  }\n\n  return <Preview value={props.value} schemaType={schemaType} />\n}\n","import type {PluginConfigContext} from './types'\n\nexport const METADATA_SCHEMA_NAME = `translation.metadata`\nexport const TRANSLATIONS_ARRAY_NAME = `translations`\nexport const API_VERSION = `2025-02-19`\nexport const DEFAULT_CONFIG: PluginConfigContext = {\n  supportedLanguages: [],\n  schemaTypes: [],\n  languageField: `language`,\n  weakReferences: false,\n  bulkPublish: false,\n  metadataFields: [],\n  apiVersion: API_VERSION,\n  allowCreateMetaDoc: false,\n  callback: null,\n  hideLanguageFilter: false,\n  metadataOmnisearchVisibility: true,\n  addTemplates: true,\n}\n","import type {SanityDocument} from 'sanity'\n\nimport {METADATA_SCHEMA_NAME} from '../../constants'\n\n/**\n * Splits an array of referring documents into two groups: translation metadata\n * documents (whose `_type` matches the metadata schema name) and all other\n * references. Used by the delete-translation dialog to show which metadata\n * entries will be patched versus which external references may block deletion.\n */\nexport function separateReferences(data: SanityDocument[] | null = []): {\n  translations: SanityDocument[]\n  otherReferences: SanityDocument[]\n} {\n  const translations: SanityDocument[] = []\n  const otherReferences: SanityDocument[] = []\n\n  if (data && data.length > 0) {\n    data.forEach((doc) => {\n      if (doc._type === METADATA_SCHEMA_NAME) {\n        translations.push(doc)\n      } else {\n        otherReferences.push(doc)\n      }\n    })\n  }\n\n  return {translations, otherReferences}\n}\n","import {Card, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {useEffect, useMemo} from 'react'\nimport type {SanityDocument} from 'sanity'\nimport {useListeningQuery} from 'sanity-plugin-utils'\n\nimport type {MetadataDocument} from '../../types'\nimport DocumentPreview from './DocumentPreview'\nimport {separateReferences} from './separateReferences'\n\ntype DeleteTranslationDialogProps = {\n  doc: SanityDocument\n  documentId: string\n  setTranslations: (translations: MetadataDocument[]) => void\n}\n\nexport default function DeleteTranslationDialog(props: DeleteTranslationDialogProps) {\n  const {doc, documentId, setTranslations} = props\n\n  // Get all references and check if any of them are translations metadata\n  const {data, loading} = useListeningQuery<SanityDocument[]>(\n    `*[references($id)]{_id, _type, translations}`,\n    {\n      params: {id: documentId},\n      initialValue: [],\n    },\n  )\n  const {translations, otherReferences} = useMemo(() => separateReferences(data), [data])\n\n  useEffect(() => {\n    // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n    setTranslations(translations as MetadataDocument[])\n  }, [setTranslations, translations])\n\n  if (loading) {\n    return (\n      <Flex padding={4} align=\"center\" justify=\"center\">\n        <Spinner />\n      </Flex>\n    )\n  }\n\n  return (\n    <Stack gap={4}>\n      {translations && translations.length > 0 ? (\n        <Text>\n          This document is a language-specific version which other translations depend on.\n        </Text>\n      ) : (\n        <Text>This document does not have connected translations.</Text>\n      )}\n      <Card border padding={3}>\n        <Stack gap={4}>\n          <Text size={1} weight=\"semibold\">\n            {translations && translations.length > 0 ? (\n              <>Before this document can be deleted</>\n            ) : (\n              <>This document can now be deleted</>\n            )}\n          </Text>\n          <DocumentPreview value={doc} type={doc._type} />\n          {translations && translations.length > 0 ? (\n            <>\n              <Card borderTop />\n              <Text size={1} weight=\"semibold\">\n                The reference in{' '}\n                {translations.length === 1\n                  ? `this translations document`\n                  : `these translations documents`}{' '}\n                must be removed\n              </Text>\n              {translations.map((translation) => (\n                <DocumentPreview\n                  key={translation._id}\n                  value={translation}\n                  type={translation._type}\n                />\n              ))}\n            </>\n          ) : null}\n          {otherReferences && otherReferences.length > 0 ? (\n            <>\n              <Card borderTop />\n              <Text size={1} weight=\"semibold\">\n                {otherReferences.length === 1\n                  ? `There is an additional reference`\n                  : `There are additional references`}{' '}\n                to this document\n              </Text>\n              {otherReferences.map((reference) => (\n                <DocumentPreview key={reference._id} value={reference} type={reference._type} />\n              ))}\n            </>\n          ) : null}\n        </Stack>\n      </Card>\n      {otherReferences.length === 0 ? (\n        <Text>This document has no other references.</Text>\n      ) : (\n        <Text>\n          You may not be able to delete this document because other documents refer to it.\n        </Text>\n      )}\n    </Stack>\n  )\n}\n","import {Button, Grid} from '@sanity/ui'\n\ntype DeleteTranslationFooterProps = {\n  translations: unknown[]\n  onClose: () => void\n  onProceed: () => void\n}\n\nexport default function DeleteTranslationFooter(props: DeleteTranslationFooterProps) {\n  const {translations, onClose, onProceed} = props\n\n  return (\n    <Grid gridTemplateColumns={2} gap={2}>\n      <Button text=\"Cancel\" onClick={onClose} mode=\"ghost\" />\n      <Button\n        text={\n          translations && translations.length > 0\n            ? `Unset translation reference`\n            : `Delete document`\n        }\n        onClick={onProceed}\n        tone=\"critical\"\n      />\n    </Grid>\n  )\n}\n","import {createContext, use, useContext, useMemo} from 'react'\nimport type {LayoutProps} from 'sanity'\nimport {useClient, useWorkspace} from 'sanity'\n\nimport {DEFAULT_CONFIG} from '../constants'\nimport type {PluginConfig, PluginConfigContext} from '../types'\n\nconst DocumentInternationalizationContext = createContext<PluginConfigContext>(DEFAULT_CONFIG)\n\nexport function useDocumentInternationalizationContext(): PluginConfigContext {\n  return useContext(DocumentInternationalizationContext)\n}\n\ntype DocumentInternationalizationProviderProps = LayoutProps & {\n  pluginConfig: Required<Omit<PluginConfig, 'metadataInternationalization'>> &\n    Pick<PluginConfig, 'metadataInternationalization'>\n}\n\n// Simple promise cache for React.use\nconst promiseCache = new Map<string, Promise<PluginConfigContext['supportedLanguages']>>()\n\nfunction createCacheKey(workspaceId: string): string {\n  return `languages-${workspaceId}`\n}\n\nfunction createOrGetPromise(\n  fn: () => Promise<PluginConfigContext['supportedLanguages']>,\n  cacheKey: string,\n): Promise<PluginConfigContext['supportedLanguages']> {\n  const cached = promiseCache.get(cacheKey)\n  if (cached) {\n    return cached\n  }\n  const promise = fn()\n  promiseCache.set(cacheKey, promise)\n  return promise\n}\n\n/**\n * This Provider wraps the Studio and provides the DocumentInternationalization context to document actions and components.\n */\nexport function DocumentInternationalizationProvider(\n  props: DocumentInternationalizationProviderProps,\n): React.JSX.Element {\n  const {pluginConfig} = props\n\n  const client = useClient({apiVersion: pluginConfig.apiVersion})\n  const workspace = useWorkspace()\n\n  // Use a stable workspace identifier\n  const workspaceId = useMemo(() => workspace.name ?? '', [workspace])\n\n  // Create cache key for promise caching\n  const cacheKey = useMemo(() => createCacheKey(workspaceId), [workspaceId])\n\n  // Fetch or return languages\n  const languagesPromise = useMemo(() => {\n    if (Array.isArray(pluginConfig.supportedLanguages)) {\n      return null // Return null for synchronous arrays\n    }\n\n    // Create or get cached promise for React.use\n    return createOrGetPromise(async () => {\n      if (typeof pluginConfig.supportedLanguages === 'function') {\n        return pluginConfig.supportedLanguages(client)\n      }\n      return pluginConfig.supportedLanguages\n    }, cacheKey)\n  }, [pluginConfig, client, cacheKey])\n\n  // Use React.use to handle the promise with Suspense, or return array directly\n  const supportedLanguages = languagesPromise\n    ? use(languagesPromise)\n    : // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n      (pluginConfig.supportedLanguages as PluginConfigContext['supportedLanguages'])\n\n  const contextValue = useMemo(\n    () => ({...pluginConfig, supportedLanguages}),\n    [pluginConfig, supportedLanguages],\n  )\n\n  return (\n    <DocumentInternationalizationContext.Provider value={contextValue}>\n      {props.renderDefault(props)}\n    </DocumentInternationalizationContext.Provider>\n  )\n}\n","import {TrashIcon} from '@sanity/icons/Trash'\nimport {useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {useClient, type DocumentActionDescription, type DocumentActionProps} from 'sanity'\nimport {LANGUAGE_FIELD_NAME} from 'sanity-plugin-internationalized-array'\n\nimport DeleteTranslationDialog from '../components/DeleteTranslationDialog'\nimport DeleteTranslationFooter from '../components/DeleteTranslationFooter'\nimport {useDocumentInternationalizationContext} from '../components/DocumentInternationalizationContext'\nimport {API_VERSION, TRANSLATIONS_ARRAY_NAME} from '../constants'\nimport {type MetadataDocument} from '../types'\n\ntype DeleteOperation = 'DELETE' | 'UNSET'\n\n/**\n * Optional Document action that removes a single translation from the metadata document\n * and optionally deletes the translation document. Opens a confirmation dialog\n * showing which metadata entries reference the document and any other references\n * that may exist. When the document has translation references, those references\n * are unset; otherwise the document is deleted directly.\n *\n * To use it, you need to add it to the document actions config\n * ```\n *  const translatedSchemaTypes = ['lesson', 'article'];\n * document: {\n *   actions: (prev, {schemaType}) => {\n *     if (translatedSchemaTypes.includes(schemaType)) {\n *       return [...prev, useDeleteTranslationAction]\n *     }\n *     return prev\n *   },\n * },\n * ```\n */\nexport const useDeleteTranslationAction = (\n  props: DocumentActionProps,\n): DocumentActionDescription => {\n  const {id: documentId, published, draft} = props\n  const doc = draft || published\n  const {languageField} = useDocumentInternationalizationContext()\n\n  const [isDialogOpen, setDialogOpen] = useState(false)\n  const [translations, setTranslations] = useState<MetadataDocument[]>([])\n  const onClose = useCallback(() => setDialogOpen(false), [])\n  const rawDocumentLanguage = doc ? doc[languageField] : null\n  const documentLanguage = typeof rawDocumentLanguage === 'string' ? rawDocumentLanguage : null\n\n  const toast = useToast()\n  const client = useClient({apiVersion: API_VERSION})\n  // Remove translation reference and delete document in one transaction\n  const onProceed = useCallback(() => {\n    const tx = client.transaction()\n    let operation: DeleteOperation = 'DELETE'\n\n    if (documentLanguage && translations.length > 0) {\n      operation = 'UNSET'\n      translations.forEach((translation) => {\n        tx.patch(translation._id, (patch) =>\n          patch.unset([\n            `${TRANSLATIONS_ARRAY_NAME}[${LANGUAGE_FIELD_NAME} == \"${documentLanguage}\"]`,\n          ]),\n        )\n      })\n    } else {\n      tx.delete(documentId)\n      tx.delete(`drafts.${documentId}`)\n    }\n\n    tx.commit()\n      .then(() => {\n        if (operation === 'DELETE') {\n          onClose()\n        }\n        toast.push({\n          status: 'success',\n          title: operation === 'UNSET' ? 'Translation reference unset' : 'Document deleted',\n          description: operation === 'UNSET' ? 'The document can now be deleted' : null,\n        })\n        return undefined\n      })\n      .catch((err: Error) => {\n        toast.push({\n          status: 'error',\n          title:\n            operation === 'UNSET'\n              ? 'Failed to unset translation reference'\n              : 'Failed to delete document',\n          description: err.message,\n        })\n      })\n  }, [client, documentLanguage, translations, documentId, onClose, toast])\n\n  return {\n    label: `Delete translation...`,\n    disabled: !doc || !documentLanguage,\n    icon: TrashIcon,\n    tone: 'critical',\n    onHandle: () => {\n      setDialogOpen(true)\n    },\n    dialog: isDialogOpen && {\n      type: 'dialog',\n      onClose,\n      header: 'Delete translation',\n      content: doc ? (\n        <DeleteTranslationDialog\n          doc={doc}\n          documentId={documentId}\n          setTranslations={setTranslations}\n        />\n      ) : null,\n      footer: (\n        <DeleteTranslationFooter\n          onClose={onClose}\n          onProceed={onProceed}\n          translations={translations}\n        />\n      ),\n    },\n  }\n}\n\nuseDeleteTranslationAction.action = 'deleteTranslation'\nuseDeleteTranslationAction.displayName = 'DeleteTranslationAction'\n\n/**\n * @deprecated use useDeleteTranslationAction instead\n * Will be removed in the next major version\n */\nexport const DeleteTranslationAction = (props: DocumentActionProps): DocumentActionDescription => {\n  return useDeleteTranslationAction(props)\n}\n","import {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {METADATA_SCHEMA_NAME} from '../constants'\nimport type {Metadata} from '../types'\n\n// Using references() seemed less reliable for updating the listener\n// results than querying raw values in the array\n// AFAIK: references is _faster_ when querying with GROQ\n// const query = `*[_type == $translationSchema && references($id)]`\nconst query = `*[_type == $translationSchema && $id in translations[].value._ref]{\n  _id,\n  _createdAt,\n  translations\n}`\n\nexport function useTranslationMetadata(id: string): {\n  data: Metadata[] | null\n  loading: boolean\n  error: unknown\n} {\n  const {data, loading, error} = useListeningQuery<Metadata[]>(query, {\n    params: {id, translationSchema: METADATA_SCHEMA_NAME},\n  })\n\n  return {data, loading, error}\n}\n","import {defineLocaleResourceBundle} from 'sanity'\n\n/**\n * The locale namespace for the document internationalization plugin.\n *\n * @public\n */\nexport const documenti18nLocaleNamespace = 'document-internationalization' as const\n\n/**\n * The default locale bundle for the document internationalization plugin, which is US English.\n *\n * @internal\n */\nexport const documentInternationalizationUsEnglishLocaleBundle = defineLocaleResourceBundle({\n  locale: 'en-US',\n  namespace: documenti18nLocaleNamespace,\n  resources: () => import('./resources'),\n})\n","import {CopyIcon} from '@sanity/icons/Copy'\nimport {useToast} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport {useCallback, useMemo, useState} from 'react'\nimport {filter, firstValueFrom} from 'rxjs'\nimport {\n  DEFAULT_STUDIO_CLIENT_OPTIONS,\n  type Id,\n  InsufficientPermissionsMessage,\n  type PatchOperations,\n  useClient,\n  useCurrentUser,\n  useDocumentOperation,\n  useDocumentPairPermissions,\n  useDocumentStore,\n  useTranslation,\n  type DocumentActionProps,\n  type DocumentActionDescription,\n} from 'sanity'\nimport {LANGUAGE_FIELD_NAME} from 'sanity-plugin-internationalized-array'\nimport {useRouter} from 'sanity/router'\nimport {structureLocaleNamespace} from 'sanity/structure'\n\nimport {METADATA_SCHEMA_NAME, TRANSLATIONS_ARRAY_NAME} from '../constants'\nimport {useTranslationMetadata} from '../hooks/useLanguageMetadata'\nimport {documenti18nLocaleNamespace} from '../i18n'\n\n// Types for document store operations\ninterface EditOperations {\n  duplicate: {disabled: string | false; execute: (id: string) => void}\n}\n\ninterface OperationSuccessEvent {\n  op: string\n  type: 'success' | 'error'\n}\n\nconst DISABLED_REASON_KEY = {\n  METADATA_NOT_FOUND: 'action.duplicate.disabled.missing-metadata',\n  MULTIPLE_METADATA: 'action.duplicate.disabled.multiple-metadata',\n  NOTHING_TO_DUPLICATE: 'action.duplicate.disabled.nothing-to-duplicate',\n  NOT_READY: 'action.duplicate.disabled.not-ready',\n}\n\n/**\n * Optional Document action that duplicates a document along with all its translations\n * and the associated metadata document. The workflow duplicates each translated\n * document, duplicates the metadata document, patches the new metadata to\n * reference the new translation copies, and navigates to the duplicated document.\n * Disabled when the user lacks permissions, metadata is missing or ambiguous,\n * or the underlying duplicate operation is unavailable.\n */\nexport const useDuplicateWithTranslationsAction = ({\n  id,\n  type,\n  /* oxlint-disable-next-line typescript-eslint/no-deprecated -- kept for backwards compatibility */\n  onComplete,\n}: DocumentActionProps): DocumentActionDescription => {\n  const documentStore = useDocumentStore()\n  const {duplicate} = useDocumentOperation(id, type)\n  const {navigateIntent} = useRouter()\n  const [isDuplicating, setDuplicating] = useState(false)\n  const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n    id,\n    type,\n    permission: 'duplicate',\n  })\n  const {data, loading: isMetadataDocumentLoading} = useTranslationMetadata(id)\n  const hasOneMetadataDocument = useMemo(() => {\n    return Array.isArray(data) && data.length <= 1\n  }, [data])\n  const metadataDocument = Array.isArray(data) && data.length ? data[0] : null\n  const client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n  const toast = useToast()\n  const {t: s} = useTranslation(structureLocaleNamespace)\n  const {t: d} = useTranslation(documenti18nLocaleNamespace)\n  const currentUser = useCurrentUser()\n\n  const handle = useCallback(() => {\n    setDuplicating(true)\n\n    // Async function that does the actual work\n    async function performDuplication(): Promise<void> {\n      if (!metadataDocument) {\n        return Promise.reject(new Error('Metadata document not found'))\n      }\n\n      const translationsArray = metadataDocument[TRANSLATIONS_ARRAY_NAME]\n      if (!translationsArray || translationsArray.length === 0) {\n        return Promise.reject(new Error('No translations found in metadata document'))\n      }\n\n      // 1. Duplicate the document and its localized versions\n      const translations = new Map<string, Id>()\n      await Promise.all(\n        // oxlint-disable-next-line consistent-return\n        translationsArray.map(async (translation) => {\n          const dupeId = uuid()\n          const locale = translation[LANGUAGE_FIELD_NAME]\n          const docId = translation.value?._ref\n\n          if (typeof locale !== 'string' || locale.trim().length === 0) {\n            return Promise.reject(new Error('Invalid locale for translation'))\n          }\n          if (!docId) {\n            return Promise.reject(new Error('Translation document not found'))\n          }\n\n          const {duplicate: duplicateTranslation} = await firstValueFrom(\n            documentStore.pair\n              .editOperations(docId, type)\n              .pipe(filter((op: EditOperations) => op.duplicate.disabled !== 'NOT_READY')),\n          )\n\n          if (duplicateTranslation.disabled) {\n            return Promise.reject(new Error('Cannot duplicate document'))\n          }\n\n          const duplicateTranslationSuccess = firstValueFrom(\n            documentStore.pair\n              .operationEvents(docId, type)\n              .pipe(\n                filter((e: OperationSuccessEvent) => e.op === 'duplicate' && e.type === 'success'),\n              ),\n          )\n          duplicateTranslation.execute(dupeId)\n          await duplicateTranslationSuccess\n\n          translations.set(locale, dupeId)\n        }),\n      )\n\n      // 2. Duplicate the metadata document\n      const {duplicate: duplicateMetadata} = await firstValueFrom(\n        documentStore.pair\n          .editOperations(metadataDocument._id, METADATA_SCHEMA_NAME)\n          .pipe(filter((op: EditOperations) => op.duplicate.disabled !== 'NOT_READY')),\n      )\n\n      if (duplicateMetadata.disabled) {\n        return Promise.reject(new Error('Cannot duplicate document'))\n      }\n\n      const duplicateMetadataSuccess = firstValueFrom(\n        documentStore.pair\n          .operationEvents(metadataDocument._id, METADATA_SCHEMA_NAME)\n          .pipe(filter((e: OperationSuccessEvent) => e.op === 'duplicate' && e.type === 'success')),\n      )\n      const dupeId = uuid()\n      duplicateMetadata.execute(dupeId)\n      await duplicateMetadataSuccess\n\n      // 3. Patch the duplicated metadata document to update the references\n      const patch: PatchOperations = {\n        set: Object.fromEntries(\n          Array.from(translations.entries()).map(([locale, documentId]) => {\n            return [\n              `${TRANSLATIONS_ARRAY_NAME}[${LANGUAGE_FIELD_NAME} == \"${locale}\"].value._ref`,\n              documentId,\n            ]\n          }),\n        ),\n      }\n\n      await client.transaction().patch(dupeId, patch).commit()\n\n      // 4. Navigate to the duplicated document\n      navigateIntent('edit', {\n        id: Array.from(translations.values()).at(0),\n        type,\n      })\n\n      onComplete()\n    }\n\n    // Execute and handle success/error\n    performDuplication()\n      .catch((error: unknown) => {\n        console.error(error)\n        toast.push({\n          status: 'error',\n          title: 'Error duplicating document',\n          description: error instanceof Error ? error.message : 'Failed to duplicate document',\n        })\n      })\n      .finally(() => {\n        setDuplicating(false)\n      })\n  }, [client, documentStore.pair, metadataDocument, navigateIntent, onComplete, toast, type])\n\n  return useMemo(() => {\n    if (!isPermissionsLoading && !permissions?.granted) {\n      return {\n        icon: CopyIcon,\n        disabled: true,\n        label: d('action.duplicate.label'),\n        title: (\n          <InsufficientPermissionsMessage context=\"duplicate-document\" currentUser={currentUser} />\n        ),\n      }\n    }\n\n    if (!isMetadataDocumentLoading && !metadataDocument) {\n      return {\n        icon: CopyIcon,\n        disabled: true,\n        label: d('action.duplicate.label'),\n        title: d(DISABLED_REASON_KEY.METADATA_NOT_FOUND),\n      }\n    }\n\n    if (!hasOneMetadataDocument) {\n      return {\n        icon: CopyIcon,\n        disabled: true,\n        label: d('action.duplicate.label'),\n        title: d(DISABLED_REASON_KEY.MULTIPLE_METADATA),\n      }\n    }\n\n    return {\n      icon: CopyIcon,\n      disabled:\n        isDuplicating ||\n        Boolean(duplicate.disabled) ||\n        isPermissionsLoading ||\n        isMetadataDocumentLoading,\n      label: isDuplicating ? s('action.duplicate.running.label') : d('action.duplicate.label'),\n      title: duplicate.disabled ? s(DISABLED_REASON_KEY[duplicate.disabled]) : '',\n      onHandle: handle,\n    }\n  }, [\n    currentUser,\n    duplicate.disabled,\n    handle,\n    hasOneMetadataDocument,\n    isDuplicating,\n    isMetadataDocumentLoading,\n    isPermissionsLoading,\n    metadataDocument,\n    permissions?.granted,\n    s,\n    d,\n  ])\n}\n\nuseDuplicateWithTranslationsAction.action = 'duplicate'\nuseDuplicateWithTranslationsAction.displayName = 'DuplicateWithTranslationsAction'\n\n/**\n * @deprecated use useDuplicateWithTranslationsAction instead\n * Will be removed in the next major version\n */\nexport const DuplicateWithTranslationsAction = (\n  props: DocumentActionProps,\n): DocumentActionDescription => {\n  return useDuplicateWithTranslationsAction(props)\n}\n\n/* oxlint-disable-next-line typescript-eslint/no-deprecated -- re-exported for backwards compatibility */\nDuplicateWithTranslationsAction.action = 'duplicate'\n/* oxlint-disable-next-line typescript-eslint/no-deprecated -- re-exported for backwards compatibility */\nDuplicateWithTranslationsAction.displayName = 'DuplicateWithTranslationsAction'\n","import {useCallback} from 'react'\nimport {useRouter} from 'sanity/router'\nimport {usePaneRouter} from 'sanity/structure'\n\nexport function useOpenInNewPane(id?: string | null, type?: string): () => void {\n  const router = useRouter()\n  const {routerPanesState, groupIndex} = usePaneRouter()\n\n  const openInNewPane = useCallback(() => {\n    if (!id || !type) {\n      return\n    }\n\n    // No panes open, function might be called outside Structure\n    if (!routerPanesState.length) {\n      router.navigateIntent('edit', {id, type})\n      return\n    }\n\n    const panes = [...routerPanesState]\n    panes.splice(groupIndex + 1, 0, [\n      {\n        id: id,\n        params: {type},\n      },\n    ])\n\n    const href = router.resolvePathFromState({panes})\n    router.navigateUrl({path: href})\n  }, [id, type, router, routerPanesState, groupIndex])\n\n  return openInNewPane\n}\n","import {randomKey} from '@sanity/util/content'\nimport {LANGUAGE_FIELD_NAME} from 'sanity-plugin-internationalized-array'\n\nimport type {TranslationReference} from '../types'\n\n/**\n * Creates a translation reference object used in metadata documents to link\n * a language key to a document. References are created as weak by default,\n * with optional strengthen-on-publish metadata so the reference becomes\n * strong once the referenced document is published.\n */\nexport function createReference(\n  language: string,\n  ref: string,\n  type: string,\n  strengthenOnPublish: boolean = true,\n): TranslationReference {\n  return {\n    [LANGUAGE_FIELD_NAME]: language,\n    _key: randomKey(),\n    _type: 'internationalizedArrayReferenceValue',\n    value: {\n      _type: 'reference',\n      _ref: ref,\n      _weak: true,\n      // If the user has configured weakReferences, we won't want to strengthen them\n      ...(strengthenOnPublish ? {_strengthenOnPublish: {type}} : {}),\n    },\n  }\n}\n","import {CogIcon} from '@sanity/icons/Cog'\nimport {Box, Button, Stack, Text, Tooltip} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {type ObjectSchemaType, useClient} from 'sanity'\n\nimport {METADATA_SCHEMA_NAME} from '../constants'\nimport {useOpenInNewPane} from '../hooks/useOpenInNewPane'\nimport {createReference} from '../utils/createReference'\nimport {useDocumentInternationalizationContext} from './DocumentInternationalizationContext'\n\ntype LanguageManageProps = {\n  id?: string\n  metadataId?: string | null\n  schemaType: ObjectSchemaType\n  documentId: string\n  sourceLanguageId?: string\n}\n\n/**\n * Button component for opening or creating the translation metadata document.\n * When metadata already exists, clicking opens it in a new pane. When no\n * metadata exists and creation is allowed, clicking creates a new metadata\n * document with the source language reference and then opens it.\n */\nexport default function LanguageManage(props: LanguageManageProps) {\n  const {id, metadataId, schemaType, documentId, sourceLanguageId} = props\n  const open = useOpenInNewPane(id, METADATA_SCHEMA_NAME)\n  const openCreated = useOpenInNewPane(metadataId, METADATA_SCHEMA_NAME)\n  const {allowCreateMetaDoc, apiVersion, weakReferences} = useDocumentInternationalizationContext()\n  const client = useClient({apiVersion})\n  const [userHasClicked, setUserHasClicked] = useState(false)\n\n  const canCreate = !id && Boolean(metadataId) && allowCreateMetaDoc\n\n  const handleClick = useCallback(() => {\n    if (!id && metadataId && sourceLanguageId) {\n      /* Disable button while this request is pending */\n      setUserHasClicked(true)\n\n      // handle creation of meta document\n      const transaction = client.transaction()\n\n      const sourceReference = createReference(\n        sourceLanguageId,\n        documentId,\n        schemaType.name,\n        !weakReferences,\n      )\n      const newMetadataDocument = {\n        _id: metadataId,\n        _type: METADATA_SCHEMA_NAME,\n        schemaTypes: [schemaType.name],\n        translations: [sourceReference],\n      }\n\n      transaction.createIfNotExists(newMetadataDocument)\n\n      transaction\n        .commit()\n        .then(() => {\n          setUserHasClicked(false)\n          openCreated()\n          return undefined\n        })\n        .catch((err: unknown) => {\n          console.error(err)\n          setUserHasClicked(false)\n        })\n    } else {\n      open()\n    }\n  }, [\n    id,\n    metadataId,\n    sourceLanguageId,\n    client,\n    documentId,\n    schemaType.name,\n    weakReferences,\n    openCreated,\n    open,\n  ])\n\n  const disabled = (!id && !canCreate) || (canCreate && !sourceLanguageId) || userHasClicked\n\n  return (\n    <Tooltip\n      animate\n      content={\n        <Box padding={2}>\n          <Text muted size={1}>\n            Document has no other translations\n          </Text>\n        </Box>\n      }\n      fallbackPlacements={['right', 'left']}\n      placement=\"top\"\n      portal\n      disabled={Boolean(id) || canCreate}\n    >\n      <Stack>\n        <Button\n          disabled={disabled}\n          mode=\"ghost\"\n          text=\"Manage Translations\"\n          icon={CogIcon}\n          loading={userHasClicked}\n          onClick={handleClick}\n        />\n      </Stack>\n    </Tooltip>\n  )\n}\n","import {extractWithPath, Mutation} from '@sanity/mutator'\nimport {\n  isDocumentSchemaType,\n  type ObjectSchemaType,\n  type Path,\n  pathToString,\n  type SanityDocument,\n  type SchemaType,\n} from 'sanity'\n\nexport interface DocumentMember {\n  schemaType: SchemaType\n  path: Path\n  name: string\n  value: unknown\n}\n\n/**\n * Removes fields from a document that are marked with the\n * `documentInternationalization.exclude` schema option. This is used when\n * duplicating a source document to create a translation, so that\n * language-specific or non-translatable fields are stripped from the copy.\n * Returns the document with excluded paths unset, or `null` if the input is null.\n */\nexport function removeExcludedPaths(\n  doc: SanityDocument | null,\n  schemaType: ObjectSchemaType,\n): SanityDocument | null {\n  // If the supplied doc is null or the schemaType\n  // isn't a document, return as is.\n  if (!isDocumentSchemaType(schemaType) || !doc) {\n    return doc\n  }\n\n  // The extractPaths function gets all the fields in the doc with\n  // a value, along with their schemaTypes and paths. We'll end up\n  // with an array of paths in string form which we want to exclude\n  const pathsToExclude: string[] = extractPaths(doc, schemaType, [])\n    // We filter for any fields which should be excluded from the document\n    // duplicate action, based on the schemaType option being set.\n    .filter((field) => field.schemaType?.options?.documentInternationalization?.exclude === true)\n    // then we return the stringified version of the path\n    .map((field) => {\n      return pathToString(field.path)\n    })\n\n  // Now we can use the Mutation class from @sanity/mutator to patch the document\n  // to remove all the paths that are for one of the excluded fields. This is just\n  // done locally, and the documents themselves are not patched in the Content Lake.\n  const mut = new Mutation({\n    mutations: [\n      {\n        patch: {\n          id: doc._id,\n          unset: pathsToExclude,\n        },\n      },\n    ],\n  })\n\n  // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n  return mut.apply(doc) as SanityDocument\n}\n\nfunction extractPaths(\n  doc: SanityDocument,\n  schemaType: ObjectSchemaType,\n  path: Path,\n): DocumentMember[] {\n  const result: DocumentMember[] = []\n\n  for (const field of schemaType.fields) {\n    const fieldPath = [...path, field.name]\n    const fieldSchema = field.type\n    const {value} = extractWithPath(pathToString(fieldPath), doc)[0] ?? {}\n    if (value === undefined || value === null) {\n      continue\n    }\n\n    const thisFieldWithPath: DocumentMember = {\n      path: fieldPath,\n      name: field.name,\n      schemaType: fieldSchema,\n      value,\n    }\n\n    if (fieldSchema.jsonType === 'object') {\n      const innerFields = extractPaths(doc, fieldSchema, fieldPath)\n      result.push(thisFieldWithPath, ...innerFields)\n    } else if (\n      fieldSchema.jsonType === 'array' &&\n      fieldSchema.of.length &&\n      fieldSchema.of.some((item) => 'fields' in item)\n    ) {\n      const {value: arrayValue} = extractWithPath(pathToString(fieldPath), doc)[0] ?? {}\n\n      result.push(thisFieldWithPath)\n      // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n      if ((arrayValue as unknown[])?.length) {\n        // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n        for (const item of arrayValue as Array<{\n          _key?: string\n          language?: string\n          _type?: string\n        }>) {\n          if (!item._key) continue\n          const itemPath = [...fieldPath, {_key: item._key}] as Path\n          let itemSchema = fieldSchema.of.find((t) => t.name === item._type)\n          if (!item._type) {\n            itemSchema = fieldSchema.of[0]\n          }\n          if (itemSchema) {\n            // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n            const innerFields = extractPaths(doc, itemSchema as ObjectSchemaType, itemPath)\n            const arrayMember: DocumentMember = {\n              path: itemPath,\n              name: item._key,\n              schemaType: itemSchema,\n              value: item,\n            }\n            result.push(arrayMember, ...innerFields)\n          }\n        }\n      }\n    } else {\n      result.push(thisFieldWithPath)\n    }\n  }\n\n  return result\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {CheckmarkIcon} from '@sanity/icons/Checkmark'\nimport {SplitVerticalIcon} from '@sanity/icons/SplitVertical'\nimport {Badge, Box, Button, Flex, Spinner, Text, Tooltip, useToast} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport {useCallback, useState} from 'react'\nimport {\n  getDraftId,\n  getVersionFromId,\n  getVersionId,\n  isVersionId,\n  type ObjectSchemaType,\n  type SanityDocument,\n  useClient,\n} from 'sanity'\nimport {LANGUAGE_FIELD_NAME} from 'sanity-plugin-internationalized-array'\n\nimport {METADATA_SCHEMA_NAME} from '../constants'\nimport {useOpenInNewPane} from '../hooks/useOpenInNewPane'\nimport type {Language, Metadata, MetadataDocument, TranslationReference} from '../types'\nimport {createReference} from '../utils/createReference'\nimport {removeExcludedPaths} from '../utils/excludePaths'\nimport {useDocumentInternationalizationContext} from './DocumentInternationalizationContext'\n\ntype LanguageOptionProps = {\n  language: Language\n  schemaType: ObjectSchemaType\n  documentId: string\n  disabled: boolean\n  current: boolean\n  source: SanityDocument | null\n  metadataId: string | null\n  metadata?: Metadata | null\n  sourceLanguageId?: string\n}\n\n/**\n * Button component representing a single language in the translations menu.\n * Displays the language name, an ID badge, and a contextual icon: checkmark\n * for the current language, split-vertical for existing translations, or add\n * for new translations. Clicking opens an existing translation in a new pane,\n * or creates a new translation document via a Sanity transaction.\n */\nexport default function LanguageOption(props: LanguageOptionProps) {\n  const {\n    language,\n    schemaType,\n    documentId,\n    current,\n    source,\n    sourceLanguageId,\n    metadata,\n    metadataId,\n  } = props\n  /* When the user has clicked the Create button, the button should be disabled\n   * to prevent double-clicks from firing onCreate twice. This creates duplicate\n   * translation metadata entries, which editors will not be able to delete */\n  const [userHasClicked, setUserHasClicked] = useState(false)\n  const disabled =\n    props.disabled || userHasClicked || current || !source || !sourceLanguageId || !metadataId\n  const translation: TranslationReference | undefined = metadata?.translations.length\n    ? metadata.translations.find((t) => t[LANGUAGE_FIELD_NAME] === language.id)\n    : undefined\n  const {apiVersion, languageField, weakReferences, callback} =\n    useDocumentInternationalizationContext()\n  const client = useClient({apiVersion})\n  const toast = useToast()\n\n  const open = useOpenInNewPane(translation?.value?._ref, schemaType.name)\n  const handleOpen = useCallback(() => open(), [open])\n\n  const handleCreate = useCallback(async () => {\n    if (!source) {\n      throw new Error(`Cannot create translation without source document`)\n    }\n\n    if (!sourceLanguageId) {\n      throw new Error(`Cannot create translation without source language ID`)\n    }\n\n    if (!metadataId) {\n      throw new Error(`Cannot create translation without a metadata ID`)\n    }\n    /* Disable the create button while this request is pending */\n    setUserHasClicked(true)\n\n    const transaction = client.transaction()\n\n    // 1. Duplicate source document\n    // If the source belongs to a release, create the translation\n    // as a version in that same release, otherwise as a draft\n    const newTranslationDocumentId = uuid()\n    const sourceReleaseId = isVersionId(source._id) ? getVersionFromId(source._id) : undefined\n    let newTranslationDocument = {\n      ...source,\n      _id: sourceReleaseId\n        ? getVersionId(newTranslationDocumentId, sourceReleaseId)\n        : getDraftId(newTranslationDocumentId),\n      // 2. Update language of the translation\n      [languageField]: language.id,\n    }\n\n    // Remove fields / paths we don't want to duplicate\n    // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n    newTranslationDocument = removeExcludedPaths(\n      newTranslationDocument,\n      schemaType,\n    ) as SanityDocument\n\n    transaction.create(newTranslationDocument)\n\n    // 3. Maybe create the metadata document\n    const sourceReference = createReference(\n      sourceLanguageId,\n      documentId,\n      schemaType.name,\n      !weakReferences,\n    )\n    const newTranslationReference = createReference(\n      language.id,\n      newTranslationDocumentId,\n      schemaType.name,\n      !weakReferences,\n    )\n    const newMetadataDocument: MetadataDocument = {\n      _id: metadataId,\n      _type: METADATA_SCHEMA_NAME,\n      schemaTypes: [schemaType.name],\n      translations: [sourceReference],\n    }\n\n    transaction.createIfNotExists(newMetadataDocument)\n\n    // 4. Patch translation to metadata document\n    // Note: If the document was only just created in the operation above\n    // This patch operation will have no effect\n    const metadataPatch = client\n      .patch(metadataId)\n      .setIfMissing({translations: [sourceReference]})\n      .insert(`after`, `translations[-1]`, [newTranslationReference])\n\n    transaction.patch(metadataPatch)\n\n    // 5. Commit!\n    transaction\n      .commit()\n      .then(() => {\n        const metadataExisted = Boolean(metadata?._createdAt)\n\n        toast.push({\n          status: 'success',\n          title: `Created \"${language.title}\" translation`,\n          description: metadataExisted\n            ? `Updated Translations Metadata`\n            : `Created Translations Metadata`,\n        })\n\n        /* Once a translation has been created, reset the userHasClicked state to false\n         * so they can click on it to navigate to the translation */\n        setUserHasClicked(false)\n\n        // Execute callback if provided\n        if (callback) {\n          // oxlint-disable-next-line eslint-plugin-promise/no-callback-in-promise -- This is an async callback, not a Node.js callback\n          return callback({\n            client,\n            sourceLanguageId,\n            sourceDocument: source,\n            newDocument: newTranslationDocument,\n            destinationLanguageId: language.id,\n            metaDocumentId: metadataId,\n          })\n        }\n\n        return undefined\n      })\n      .catch((err: Error) => {\n        console.error(err)\n\n        /* Re-enable the create button if there was an error */\n        setUserHasClicked(false)\n\n        return toast.push({\n          status: 'error',\n          title: `Error creating translation`,\n          description: err.message,\n        })\n      })\n  }, [\n    client,\n    documentId,\n    language.id,\n    language.title,\n    languageField,\n    metadata?._createdAt,\n    metadataId,\n    schemaType,\n    source,\n    sourceLanguageId,\n    toast,\n    weakReferences,\n    callback,\n  ])\n\n  let message\n\n  if (current) {\n    message = `Current document`\n  } else if (translation) {\n    message = `Open ${language.title} translation`\n  } else if (!translation) {\n    message = `Create new ${language.title} translation`\n  }\n\n  return (\n    <Tooltip\n      animate\n      content={\n        <Box padding={2}>\n          <Text muted size={1}>\n            {message}\n          </Text>\n        </Box>\n      }\n      fallbackPlacements={['right', 'left']}\n      placement=\"top\"\n      portal\n    >\n      <Button\n        onClick={translation ? handleOpen : handleCreate}\n        mode={current && disabled ? `default` : `bleed`}\n        disabled={disabled}\n      >\n        <Flex gap={3} align=\"center\">\n          {disabled && !current ? (\n            <Spinner />\n          ) : (\n            <Text size={2}>\n              {translation ? <SplitVerticalIcon /> : current ? <CheckmarkIcon /> : <AddIcon />}\n            </Text>\n          )}\n          <Box flex={1}>\n            <Text>{language.title}</Text>\n          </Box>\n          <Badge tone={disabled || current ? `default` : `primary`}>{language.id}</Badge>\n        </Flex>\n      </Button>\n    </Tooltip>\n  )\n}\n","import {EditIcon} from '@sanity/icons/Edit'\nimport {Badge, Box, Button, Flex, Text, useToast} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {type SanityDocument, useClient} from 'sanity'\n\nimport type {Language} from '../types'\nimport {useDocumentInternationalizationContext} from './DocumentInternationalizationContext'\n\ntype LanguagePatchProps = {\n  language: Language\n  source: SanityDocument | null\n  disabled: boolean\n}\n\n/**\n * Button component that patches the current document's language field to\n * the selected language. Displays the language name and ID badge, and shows\n * a success or error toast after the patch operation completes.\n */\nexport default function LanguagePatch(props: LanguagePatchProps) {\n  const {language, source} = props\n  const {apiVersion, languageField} = useDocumentInternationalizationContext()\n  const disabled = props.disabled || !source\n  const client = useClient({apiVersion})\n  const toast = useToast()\n\n  const handleClick = useCallback(() => {\n    if (!source) {\n      throw new Error(`Cannot patch missing document`)\n    }\n\n    const currentId = source._id\n\n    client\n      .patch(currentId)\n      .set({[languageField]: language.id})\n      .commit()\n      .then(() => {\n        toast.push({\n          title: `Set document language to ${language.title}`,\n          status: `success`,\n        })\n        return undefined\n      })\n      .catch((err: unknown) => {\n        console.error(err)\n\n        return toast.push({\n          title: `Failed to set document language to ${language.title}`,\n          status: `error`,\n        })\n      })\n  }, [source, client, languageField, language, toast])\n\n  return (\n    <Button mode=\"bleed\" onClick={handleClick} disabled={disabled} justify=\"flex-start\">\n      <Flex gap={3} align=\"center\">\n        <Text size={2}>\n          <EditIcon />\n        </Text>\n        <Box flex={1}>\n          <Text>{language.title}</Text>\n        </Box>\n        <Badge>{language.id}</Badge>\n      </Flex>\n    </Button>\n  )\n}\n","import {Box} from '@sanity/ui'\n\nexport default function ConstrainedBox({children}: {children: React.ReactNode}): React.JSX.Element {\n  return <Box style={{maxWidth: 280}}>{children}</Box>\n}\n","import {Card, Flex, Text} from '@sanity/ui'\nimport type {PropsWithChildren} from 'react'\n\nimport ConstrainedBox from './ConstrainedBox'\n\n/**\n * Presentational component that renders a caution-toned card with centered\n * text inside a constrained-width box. Used to display warning messages\n * in the internationalization UI.\n */\nexport default function Warning({children}: PropsWithChildren) {\n  return (\n    <Card tone=\"caution\" padding={3}>\n      <Flex justify=\"center\">\n        <ConstrainedBox>\n          <Text size={1} align=\"center\">\n            {children}\n          </Text>\n        </ConstrainedBox>\n      </Flex>\n    </Card>\n  )\n}\n","import {TranslateIcon} from '@sanity/icons/Translate'\nimport {Box, Button, Card, Popover, Stack, Text, TextInput, useClickOutsideEvent} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport type {ChangeEvent} from 'react'\nimport {useCallback, useMemo, useRef, useState} from 'react'\nimport {useEditState, usePerspective} from 'sanity'\nimport {LANGUAGE_FIELD_NAME} from 'sanity-plugin-internationalized-array'\n\nimport {useTranslationMetadata} from '../hooks/useLanguageMetadata'\nimport type {DocumentInternationalizationMenuProps} from '../types'\nimport {useDocumentInternationalizationContext} from './DocumentInternationalizationContext'\nimport LanguageManage from './LanguageManage'\nimport LanguageOption from './LanguageOption'\nimport LanguagePatch from './LanguagePatch'\nimport Warning from './Warning'\n\nexport function DocumentInternationalizationMenu(\n  props: DocumentInternationalizationMenuProps,\n): React.JSX.Element | null {\n  const {documentId} = props\n  const schemaType = props.schemaType\n  const {languageField, supportedLanguages} = useDocumentInternationalizationContext()\n\n  // Search filter query\n  const [query, setQuery] = useState(``)\n  const handleQuery = useCallback((event: ChangeEvent<HTMLInputElement>) => {\n    if (event.currentTarget.value) {\n      setQuery(event.currentTarget.value)\n    } else {\n      setQuery(``)\n    }\n  }, [])\n\n  // UI Handlers\n  const [open, setOpen] = useState(false)\n  const handleClick = useCallback(() => setOpen((o) => !o), [])\n  const buttonRef = useRef<HTMLButtonElement>(null)\n  const popoverRef = useRef<HTMLDivElement>(null)\n  const handleClickOutside = useCallback(() => setOpen(false), [])\n  useClickOutsideEvent(handleClickOutside, () => [buttonRef.current, popoverRef.current])\n\n  // Get metadata from content lake\n  const {data, loading, error} = useTranslationMetadata(documentId)\n  const metadata = Array.isArray(data) && data.length ? data[0] : null\n\n  // Optimistically set a metadata ID for a newly created metadata document\n  // Cannot rely on generated metadata._id from useTranslationMetadata\n  // As the document store might not have returned it before creating another translation\n  const metadataId = useMemo(() => {\n    if (loading) {\n      return null\n    }\n\n    // Once created, these two values should be the same anyway\n    return metadata?._id ?? uuid()\n  }, [loading, metadata?._id])\n\n  // Duplicate a new language version from the most recent version of this document\n  // When a release is selected, the version document is the source, so documents\n  // that only exist in that release can still be translated\n  const {selectedReleaseId} = usePerspective()\n  const {draft, published, version} = useEditState(\n    documentId,\n    schemaType.name,\n    'default',\n    selectedReleaseId,\n  )\n  const source = version || draft || published\n\n  // Check for data issues\n  const documentIsInOneMetadataDocument = useMemo(() => {\n    return Array.isArray(data) && data.length <= 1\n  }, [data])\n  const rawLanguageValue = source?.[languageField]\n  const sourceLanguageId = typeof rawLanguageValue === 'string' ? rawLanguageValue : undefined\n  const sourceLanguageIsValid = supportedLanguages.some((l) => l.id === sourceLanguageId)\n  const allLanguagesAreValid = useMemo(() => {\n    const valid = supportedLanguages.every((l) => l.id && l.title)\n    if (!valid) {\n      console.warn(\n        `Not all languages are valid. It should be an array of objects with an \"id\" and \"title\" property. Or a function that returns an array of objects with an \"id\" and \"title\" property.`,\n        supportedLanguages,\n      )\n    }\n\n    return valid\n  }, [supportedLanguages])\n\n  const content = (\n    <Box padding={1}>\n      {error ? (\n        <Card tone=\"critical\" padding={1}>\n          <Text>There was an error returning translations metadata</Text>\n        </Card>\n      ) : (\n        <Stack gap={1}>\n          <LanguageManage\n            id={metadata?._id}\n            documentId={documentId}\n            metadataId={metadataId}\n            schemaType={schemaType}\n            sourceLanguageId={sourceLanguageId}\n          />\n          {supportedLanguages.length > 4 ? (\n            <TextInput onChange={handleQuery} value={query} placeholder=\"Filter languages\" />\n          ) : null}\n          {supportedLanguages.length > 0 ? (\n            <>\n              {/* Once metadata is loaded, there may be issues */}\n              {loading ? null : (\n                <>\n                  {/* Not all languages are valid */}\n                  {data && documentIsInOneMetadataDocument ? null : (\n                    <Warning>\n                      {/* TODO: Surface these documents to the user */}\n                      This document has been found in more than one Translations Metadata document\n                    </Warning>\n                  )}\n                  {/* Not all languages are valid */}\n                  {allLanguagesAreValid ? null : (\n                    <Warning>Not all language objects are valid. See the console.</Warning>\n                  )}\n                  {/* Current document has no language field */}\n                  {sourceLanguageId ? null : (\n                    <Warning>\n                      Choose a language to apply to <strong>this Document</strong>\n                    </Warning>\n                  )}\n                  {/* Current document has an invalid language field */}\n                  {sourceLanguageId && !sourceLanguageIsValid ? (\n                    <Warning>\n                      Select a supported language. Current language value:{' '}\n                      <code>{sourceLanguageId}</code>\n                    </Warning>\n                  ) : null}\n                </>\n              )}\n              {supportedLanguages\n                .filter((language) => {\n                  if (query) {\n                    return language.title.toLowerCase().includes(query.toLowerCase())\n                  }\n                  return true\n                })\n                .map((language) =>\n                  !loading && sourceLanguageId && sourceLanguageIsValid ? (\n                    // Button to duplicate this document to a new translation\n                    // And either create or update the metadata document\n                    <LanguageOption\n                      key={language.id}\n                      language={language}\n                      schemaType={schemaType}\n                      documentId={documentId}\n                      disabled={!allLanguagesAreValid}\n                      current={language.id === sourceLanguageId}\n                      metadata={metadata}\n                      metadataId={metadataId}\n                      source={source}\n                      sourceLanguageId={sourceLanguageId}\n                    />\n                  ) : (\n                    // Button to set a language field on *this* document\n                    <LanguagePatch\n                      key={language.id}\n                      source={source}\n                      language={language}\n                      // Only allow language patch change to:\n                      // - Keys not in metadata\n                      // - The key of this document in the metadata\n                      disabled={\n                        (loading ||\n                          !allLanguagesAreValid ||\n                          metadata?.translations\n                            .filter((t) => t?.value?._ref !== documentId)\n                            .some((t) => t[LANGUAGE_FIELD_NAME] === language.id)) ??\n                        false\n                      }\n                    />\n                  ),\n                )}\n            </>\n          ) : null}\n        </Stack>\n      )}\n    </Box>\n  )\n\n  const issueWithTranslations = !loading && sourceLanguageId && !sourceLanguageIsValid\n\n  if (!documentId) {\n    return null\n  }\n\n  if (!schemaType || !schemaType.name) {\n    return null\n  }\n\n  return (\n    <Popover\n      animate\n      constrainSize\n      content={content}\n      open={open}\n      portal\n      ref={popoverRef}\n      overflow=\"auto\"\n      tone=\"default\"\n    >\n      <Button\n        text=\"Translations\"\n        mode=\"bleed\"\n        disabled={!source}\n        tone={!source || loading || !issueWithTranslations ? undefined : `caution`}\n        icon={TranslateIcon}\n        onClick={handleClick}\n        ref={buttonRef}\n        selected={open}\n      />\n    </Popover>\n  )\n}\n","import {TrashIcon} from '@sanity/icons/Trash'\nimport {useToast} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n  type DocumentActionDescription,\n  type DocumentActionProps,\n  type KeyedObject,\n  type Reference,\n  type TypedObject,\n  useClient,\n} from 'sanity'\n\nimport {API_VERSION, TRANSLATIONS_ARRAY_NAME} from '../constants'\n\ntype TranslationReference = TypedObject &\n  KeyedObject & {\n    value: Reference\n  }\n\n/**\n * Document action that deletes a translation metadata document along with all\n * its referenced translation documents. Opens a confirmation dialog showing\n * how many translations will be deleted. Executes a single transaction that\n * unsets the translations array, deletes each referenced document (both\n * published and draft), and finally deletes the metadata document itself.\n */\nexport const useDeleteMetadataAction = (props: DocumentActionProps): DocumentActionDescription => {\n  const {id: documentId, published, draft} = props\n  const doc = draft || published\n\n  const [isDialogOpen, setDialogOpen] = useState(false)\n  const onClose = useCallback(() => setDialogOpen(false), [])\n  const translations: TranslationReference[] = useMemo(\n    () =>\n      doc && Array.isArray(doc[TRANSLATIONS_ARRAY_NAME])\n        ? // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n          (doc[TRANSLATIONS_ARRAY_NAME] as TranslationReference[])\n        : [],\n    [doc],\n  )\n\n  const toast = useToast()\n  const client = useClient({apiVersion: API_VERSION})\n\n  // Remove translation reference and delete document in one transaction\n  const onProceed = useCallback(() => {\n    const tx = client.transaction()\n\n    tx.patch(documentId, (patch) => patch.unset([TRANSLATIONS_ARRAY_NAME]))\n\n    if (translations.length > 0) {\n      translations.forEach((translation) => {\n        tx.delete(translation.value._ref)\n        tx.delete(`drafts.${translation.value._ref}`)\n      })\n    }\n\n    tx.delete(documentId)\n    // Shouldn't exist as this document type is in liveEdit\n    tx.delete(`drafts.${documentId}`)\n\n    tx.commit()\n      .then(() => {\n        onClose()\n\n        toast.push({\n          status: 'success',\n          title: 'Deleted document and translations',\n        })\n        return undefined\n      })\n      .catch((err: Error) => {\n        toast.push({\n          status: 'error',\n          title: 'Failed to delete document and translations',\n          description: err.message,\n        })\n      })\n  }, [client, translations, documentId, onClose, toast])\n\n  return {\n    label: `Delete all translations`,\n    disabled: !doc || !translations.length,\n    icon: TrashIcon,\n    tone: 'critical',\n    onHandle: () => {\n      setDialogOpen(true)\n    },\n    dialog: isDialogOpen && {\n      type: 'confirm',\n      onCancel: onClose,\n      onConfirm: () => {\n        onProceed()\n        onClose()\n      },\n      tone: 'critical',\n      message:\n        translations.length === 1\n          ? `Delete 1 translation and this document`\n          : `Delete all ${translations.length} translations and this document`,\n    },\n  }\n}\n","import type {DocumentBadgeDescription, DocumentBadgeProps} from 'sanity'\n\nimport {useDocumentInternationalizationContext} from '../components/DocumentInternationalizationContext'\n\n/**\n * Document badge that displays the language identifier of a document.\n * Reads the configured `languageField` from the version, draft or published\n * document, looks up the matching language in `supportedLanguages` to resolve\n * the title, and returns a badge descriptor with `primary` color. Returns\n * `null` when no document exists or the language field is empty/non-string.\n */\nexport function LanguageBadge(props: DocumentBadgeProps): DocumentBadgeDescription | null {\n  const source = props?.version || props?.draft || props?.published\n  const {languageField, supportedLanguages} = useDocumentInternationalizationContext()\n  const languageId = source?.[languageField]\n\n  if (!languageId || typeof languageId !== 'string') {\n    return null\n  }\n\n  const language = Array.isArray(supportedLanguages)\n    ? supportedLanguages.find((l) => l.id === languageId)\n    : null\n\n  // Currently we only show the language id if the supportedLanguages are async\n  return {\n    label: language?.id ?? languageId,\n    title: language?.title ?? undefined,\n    color: `primary`,\n  }\n}\n","import {Card, Spinner} from '@sanity/ui'\nimport {useEffect, useMemo} from 'react'\nimport {Preview, useEditState, useSchema, useValidationStatus} from 'sanity'\n\ntype DocumentCheckProps = {\n  id: string\n  onCheckComplete: (id: string) => void\n  addInvalidId: (id: string) => void\n  removeInvalidId: (id: string) => void\n  addDraftId: (id: string) => void\n  removeDraftId: (id: string) => void\n}\n\n// Check if the document has a draft\n// Check if that draft is valid\n// Report back to parent that it can be added to bulk publish\nexport default function DocumentCheck(props: DocumentCheckProps) {\n  const {id, onCheckComplete, addInvalidId, removeInvalidId, addDraftId, removeDraftId} = props\n  // Use empty string for type initially - we get the actual type from the loaded document\n  const editState = useEditState(id, '')\n  const documentType = editState.draft?._type ?? editState.published?._type ?? ''\n  // oxlint-disable-next-line no-useless-default-assignment\n  const {isValidating, validation = []} = useValidationStatus(id, documentType, false)\n  const schema = useSchema()\n\n  const validationHasErrors = useMemo(() => {\n    return !isValidating && validation.some((item) => item.level === 'error')\n  }, [isValidating, validation])\n\n  useEffect(() => {\n    if (validationHasErrors) {\n      addInvalidId(id)\n    } else {\n      removeInvalidId(id)\n    }\n\n    if (editState.draft) {\n      addDraftId(id)\n    } else {\n      removeDraftId(id)\n    }\n\n    if (!isValidating) {\n      onCheckComplete(id)\n    }\n  }, [\n    addDraftId,\n    addInvalidId,\n    editState.draft,\n    id,\n    isValidating,\n    onCheckComplete,\n    removeDraftId,\n    removeInvalidId,\n    validationHasErrors,\n  ])\n\n  // We only care about drafts\n  if (!editState.draft) {\n    return null\n  }\n\n  const schemaType = schema.get(editState.draft._type)\n\n  return (\n    <Card border padding={2} tone={validationHasErrors ? `critical` : `positive`}>\n      {editState.draft && schemaType ? (\n        <Preview layout=\"default\" value={editState.draft} schemaType={schemaType} />\n      ) : (\n        <Spinner />\n      )}\n    </Card>\n  )\n}\n","import {Box, type ButtonTone, Text, Tooltip} from '@sanity/ui'\nimport type {ComponentType, PropsWithChildren} from 'react'\nimport {TextWithTone} from 'sanity'\n\ntype InfoIconProps = PropsWithChildren & {\n  icon: ComponentType\n  tone: ButtonTone\n  text?: string\n}\n\nexport default function InfoIcon(props: InfoIconProps) {\n  const {text, icon, tone, children} = props\n  const Icon = icon\n\n  return (\n    <Tooltip\n      animate\n      portal\n      content={\n        children ? (\n          <>{children}</>\n        ) : (\n          <Box padding={2}>\n            <Text size={1}>{text}</Text>\n          </Box>\n        )\n      }\n    >\n      <TextWithTone tone={tone} size={1}>\n        <Icon />\n      </TextWithTone>\n    </Tooltip>\n  )\n}\n","import {InfoOutlineIcon} from '@sanity/icons/InfoOutline'\nimport {Box, Stack, Text} from '@sanity/ui'\n\nimport InfoIcon from './InfoIcon'\n\nexport default function Info() {\n  return (\n    <InfoIcon icon={InfoOutlineIcon} tone=\"primary\">\n      <Stack padding={3} gap={4} style={{maxWidth: 250}}>\n        <Box>\n          <Text size={1}>Bulk publishing uses the Scheduling API.</Text>\n        </Box>\n        <Box>\n          <Text size={1}>\n            Customized Document Actions in the Studio will not execute. Webhooks will execute.\n          </Text>\n        </Box>\n        <Box>\n          <Text size={1}>\n            Validation is checked before rendering the button below, but the Scheduling API will not\n            check for – or enforce – validation.\n          </Text>\n        </Box>\n      </Stack>\n    </InfoIcon>\n  )\n}\n","import {Button, Card, Dialog, Inline, Stack, Text, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {TextWithTone, useClient, useWorkspace} from 'sanity'\n\nimport {API_VERSION} from '../../constants'\nimport type {TranslationReference} from '../../types'\nimport DocumentCheck from './DocumentCheck'\nimport Info from './Info'\n\nexport type BulkPublishProps = {\n  translations: TranslationReference[]\n}\n\n// A root-level component with UI for hitting the Publishing API\nexport default function BulkPublish(props: BulkPublishProps) {\n  const {translations} = props\n  const client = useClient({apiVersion: API_VERSION})\n  const {projectId, dataset} = useWorkspace()\n  const toast = useToast()\n  const [invalidIds, setInvalidIds] = useState<string[] | null>(null)\n  const [checkedIds, setCheckedIds] = useState<string[]>([])\n\n  const onCheckComplete = useCallback((id: string) => {\n    setCheckedIds((ids) => Array.from(new Set([...ids, id])))\n  }, [])\n\n  // Handle dialog\n  const [open, setOpen] = useState(false)\n  const onOpen = useCallback(() => setOpen(true), [])\n  const onClose = useCallback(() => setOpen(false), [])\n\n  const addInvalidId = useCallback((id: string) => {\n    setInvalidIds((ids) => (ids ? Array.from(new Set([...ids, id])) : [id]))\n  }, [])\n\n  const removeInvalidId = useCallback((id: string) => {\n    setInvalidIds((ids) => (ids ? ids.filter((i) => i !== id) : []))\n  }, [])\n\n  const [draftIds, setDraftIds] = useState<string[]>([])\n\n  const addDraftId = useCallback((id: string) => {\n    setDraftIds((ids) => Array.from(new Set([...ids, id])))\n  }, [])\n\n  const removeDraftId = useCallback((id: string) => {\n    setDraftIds((ids) => ids.filter((i) => i !== id))\n  }, [])\n\n  const handleBulkPublish = useCallback(() => {\n    const body = translations.map((translation) => ({\n      documentId: translation.value._ref,\n    }))\n    client\n      .request({\n        uri: `/publish/${projectId}/${dataset}`,\n        method: 'POST',\n        body,\n      })\n      .then(() => {\n        toast.push({\n          status: 'success',\n          title: 'Success',\n          description: 'Bulk publish complete',\n        })\n        return undefined\n      })\n      .catch((err: Error) => {\n        console.error(err)\n        toast.push({\n          status: 'error',\n          title: 'Error',\n          description: 'Bulk publish failed',\n        })\n      })\n  }, [translations, client, projectId, dataset, toast])\n\n  const disabled =\n    // Not all documents have been checked\n    checkedIds.length !== translations.length ||\n    // Some document(s) are invalid\n    Boolean(invalidIds && invalidIds?.length > 0) ||\n    // No documents are drafts\n    !draftIds.length\n\n  return translations?.length > 0 ? (\n    <Card padding={4} border radius={2}>\n      <Stack gap={3}>\n        <Inline gap={3}>\n          <Text weight=\"bold\" size={1}>\n            Bulk publishing\n          </Text>\n          <Info />\n        </Inline>\n\n        <Stack>\n          <Button onClick={onOpen} text=\"Prepare bulk publishing\" mode=\"ghost\" />\n        </Stack>\n\n        {open && (\n          <Dialog\n            animate\n            header=\"Bulk publishing\"\n            id=\"bulk-publish-dialog\"\n            onClose={onClose}\n            zOffset={1000}\n            width={3}\n          >\n            <Stack gap={4} padding={4}>\n              {draftIds.length > 0 ? (\n                <Stack gap={2}>\n                  <Text size={1}>\n                    There{' '}\n                    {draftIds.length === 1\n                      ? `is 1 draft document`\n                      : `are ${draftIds.length} draft documents`}\n                    .\n                  </Text>\n                  {invalidIds && invalidIds.length > 0 ? (\n                    <TextWithTone tone=\"critical\" size={1}>\n                      {invalidIds.length === 1\n                        ? `1 draft document has`\n                        : `${invalidIds.length} draft documents have`}{' '}\n                      validation issues that must be addressed first\n                    </TextWithTone>\n                  ) : (\n                    <TextWithTone tone=\"positive\" size={1}>\n                      All drafts are valid and can be bulk published\n                    </TextWithTone>\n                  )}\n                </Stack>\n              ) : null}\n\n              <Stack gap={1}>\n                {translations\n                  .filter((translation) => translation?.value?._ref)\n                  .map((translation) => (\n                    <DocumentCheck\n                      key={translation._key}\n                      id={translation.value._ref}\n                      onCheckComplete={onCheckComplete}\n                      addInvalidId={addInvalidId}\n                      removeInvalidId={removeInvalidId}\n                      addDraftId={addDraftId}\n                      removeDraftId={removeDraftId}\n                    />\n                  ))}\n              </Stack>\n              {draftIds.length > 0 ? (\n                <Button\n                  mode=\"ghost\"\n                  tone={invalidIds && invalidIds?.length > 0 ? 'caution' : 'positive'}\n                  text={\n                    draftIds.length === 1\n                      ? `Publish draft document`\n                      : `Bulk publish ${draftIds.length} draft documents`\n                  }\n                  onClick={handleBulkPublish}\n                  disabled={disabled}\n                />\n              ) : (\n                <Text muted size={1}>\n                  No draft documents to publish\n                </Text>\n              )}\n            </Stack>\n          </Dialog>\n        )}\n      </Stack>\n    </Card>\n  ) : null\n}\n","import {useEffect} from 'react'\nimport {PatchEvent, unset, useClient, useEditState} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {API_VERSION} from '../../constants'\nimport type {TranslationReference} from '../../types'\n\ntype ReferencePatcherProps = {\n  translation: TranslationReference\n  documentType: string\n  metadataId: string\n}\n\n// For every reference, check if it is published, and if so, strengthen the reference\nexport default function ReferencePatcher(props: ReferencePatcherProps) {\n  const {translation, documentType, metadataId} = props\n  const editState = useEditState(translation.value._ref, documentType)\n  const client = useClient({apiVersion: API_VERSION})\n  const {onChange} = useDocumentPane()\n\n  useEffect(() => {\n    if (\n      // We have a reference\n      translation.value._ref &&\n      // It's still weak and not-yet-strengthened\n      translation.value._weak &&\n      // We also want to keep this check because maybe the user *configured* weak refs\n      translation.value._strengthenOnPublish &&\n      // The referenced document has just been published\n      !editState.draft &&\n      editState.published &&\n      editState.ready\n    ) {\n      const referencePathBase = ['translations', {_key: translation._key}, 'value']\n\n      onChange(\n        new PatchEvent([\n          unset([...referencePathBase, '_weak']),\n          unset([...referencePathBase, '_strengthenOnPublish']),\n        ]),\n      )\n    }\n  }, [translation, editState, metadataId, client, onChange])\n\n  return null\n}\n","import type {TranslationReference} from '../../types'\nimport ReferencePatcher from './ReferencePatcher'\n\ntype OptimisticallyStrengthenProps = {\n  translations: TranslationReference[]\n  metadataId: string\n}\n\n// There's no good reason to leave published references as weak\n// So this component will run on every render and strengthen them\nexport default function OptimisticallyStrengthen(props: OptimisticallyStrengthenProps) {\n  // oxlint-disable-next-line no-useless-default-assignment\n  const {translations = [], metadataId} = props\n\n  if (!translations.length) {\n    return null\n  }\n\n  return (\n    <>\n      {translations.map((translation) =>\n        translation.value._strengthenOnPublish?.type ? (\n          <ReferencePatcher\n            key={translation._key}\n            translation={translation}\n            documentType={translation.value._strengthenOnPublish.type}\n            metadataId={metadataId}\n          />\n        ) : null,\n      )}\n    </>\n  )\n}\n","import {TranslateIcon} from '@sanity/icons/Translate'\nimport {defineField, defineType, type DocumentDefinition, type FieldDefinition} from 'sanity'\nimport {LANGUAGE_FIELD_NAME} from 'sanity-plugin-internationalized-array'\n\nimport {METADATA_SCHEMA_NAME, TRANSLATIONS_ARRAY_NAME} from '../../constants'\nimport type {TranslationReference} from '../../types'\n\n/**\n * Creates the `translation.metadata` document schema definition. This schema\n * type stores the array of translation references linking all language versions\n * of a document together, along with the allowed schema types and any custom\n * metadata fields provided by the plugin consumer. The document uses `liveEdit`\n * so changes are published immediately without drafts.\n */\nexport default (\n  schemaTypes: string[],\n  metadataFields: FieldDefinition[],\n  omnisearchVisibility = true,\n): DocumentDefinition =>\n  defineType({\n    type: 'document',\n    name: METADATA_SCHEMA_NAME,\n    title: 'Translation metadata',\n    icon: TranslateIcon,\n    liveEdit: true,\n    __experimental_omnisearch_visibility: omnisearchVisibility,\n    fields: [\n      defineField({\n        name: TRANSLATIONS_ARRAY_NAME,\n        type: 'internationalizedArrayReference',\n      }),\n      defineField({\n        name: 'schemaTypes',\n        description:\n          'Optional: Used to filter the reference fields above so all translations share the same types.',\n        type: 'array',\n        of: [{type: 'string'}],\n        options: {list: schemaTypes},\n        readOnly: ({value}) => Boolean(value),\n      }),\n      ...metadataFields,\n    ],\n    preview: {\n      select: {\n        translations: TRANSLATIONS_ARRAY_NAME,\n        documentSchemaTypes: 'schemaTypes',\n      },\n      prepare(selection) {\n        const {translations = [], documentSchemaTypes = []} = selection\n        const title =\n          translations.length === 1 ? `1 Translation` : `${translations.length} Translations`\n        const languageKeys = translations.length\n          ? translations\n              .map((t: TranslationReference) => t[LANGUAGE_FIELD_NAME].toUpperCase())\n              .join(', ')\n          : ``\n        const subtitle = [\n          languageKeys ? `(${languageKeys})` : null,\n          documentSchemaTypes?.length ? documentSchemaTypes.map((s: string) => s).join(`, `) : ``,\n        ]\n          .filter(Boolean)\n          .join(` `)\n\n        return {\n          title,\n          subtitle,\n        }\n      },\n    },\n  })\n","import {Stack} from '@sanity/ui'\nimport {defineField, definePlugin, isSanityDocument} from 'sanity'\nimport {internationalizedArray, LANGUAGE_FIELD_NAME} from 'sanity-plugin-internationalized-array'\n\nimport {useDeleteMetadataAction} from './actions/DeleteMetadataAction'\nimport {LanguageBadge} from './badges'\nimport BulkPublish from './components/BulkPublish'\nimport {DocumentInternationalizationProvider} from './components/DocumentInternationalizationContext'\nimport {DocumentInternationalizationMenu} from './components/DocumentInternationalizationMenu'\nimport OptimisticallyStrengthen from './components/OptimisticallyStrengthen'\nimport {API_VERSION, DEFAULT_CONFIG, METADATA_SCHEMA_NAME} from './constants'\nimport {documentInternationalizationUsEnglishLocaleBundle} from './i18n'\nimport metadata from './schema/translation/metadata'\nimport type {PluginConfig, TranslationReference} from './types'\n\nexport const documentInternationalization = definePlugin<PluginConfig>((config) => {\n  const pluginConfig = {...DEFAULT_CONFIG, ...config}\n  const {\n    supportedLanguages,\n    schemaTypes,\n    languageField,\n    bulkPublish,\n    metadataFields,\n    hideLanguageFilter,\n    metadataOmnisearchVisibility,\n    metadataInternationalization,\n    addTemplates,\n  } = pluginConfig\n\n  if (schemaTypes.length === 0) {\n    throw new Error(\n      'You must specify at least one schema type on which to enable document internationalization. Update the `schemaTypes` option in the documentInternationalization() configuration.',\n    )\n  }\n\n  return {\n    name: '@sanity/document-internationalization',\n\n    studio: {\n      components: {\n        layout: (props) => (\n          <DocumentInternationalizationProvider {...props} pluginConfig={pluginConfig} />\n        ),\n      },\n    },\n\n    i18n: {\n      bundles: [documentInternationalizationUsEnglishLocaleBundle],\n    },\n\n    // Adds:\n    // - A bulk-publishing UI component to the form\n    // - Will only work for projects on a compatible plan\n    form: {\n      components: {\n        input: (props) => {\n          if (\n            props.id === 'root' &&\n            props.schemaType.name === METADATA_SCHEMA_NAME &&\n            isSanityDocument(props?.value)\n          ) {\n            const metadataId = props?.value?._id\n            const translations =\n              // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion\n              (props?.value?.['translations'] as TranslationReference[]) ?? []\n            const weakAndTypedTranslations = translations.filter(\n              ({value}) => value?._weak && value._strengthenOnPublish,\n            )\n\n            return (\n              <Stack gap={5}>\n                {bulkPublish ? <BulkPublish translations={translations} /> : null}\n                {weakAndTypedTranslations.length > 0 ? (\n                  <OptimisticallyStrengthen\n                    metadataId={metadataId}\n                    translations={weakAndTypedTranslations}\n                  />\n                ) : null}\n                {props.renderDefault(props)}\n              </Stack>\n            )\n          }\n\n          return props.renderDefault(props)\n        },\n      },\n    },\n\n    // Adds:\n    // - The `Translations` dropdown to the editing form\n    // - `Badges` to documents with a language value\n    // - The `DeleteMetadataAction` action to the metadata document type\n    document: {\n      unstable_languageFilter: (prev, ctx) => {\n        const {schemaType, documentId} = ctx\n\n        if (typeof hideLanguageFilter === 'function') {\n          if (hideLanguageFilter(ctx)) return prev\n        } else if (Array.isArray(hideLanguageFilter)) {\n          if (hideLanguageFilter.includes(schemaType)) return prev\n        } else if (hideLanguageFilter) {\n          return prev\n        }\n\n        return schemaTypes.includes(schemaType) && documentId\n          ? [...prev, (props) => DocumentInternationalizationMenu({...props, documentId})]\n          : prev\n      },\n      badges: (prev, {schemaType}) => {\n        if (!schemaTypes.includes(schemaType)) {\n          return prev\n        }\n\n        return [(props) => LanguageBadge(props), ...prev]\n      },\n      actions: (prev, {schemaType}) => {\n        if (schemaType === METADATA_SCHEMA_NAME) {\n          return [...prev, useDeleteMetadataAction]\n        }\n\n        return prev\n      },\n    },\n\n    // Adds:\n    // - The `Translations metadata` document type to the schema\n    schema: {\n      // Create the metadata document type\n      types: [metadata(schemaTypes, metadataFields, metadataOmnisearchVisibility)],\n\n      // For every schema type this plugin is enabled on\n      // Create an initial value template to set the language\n      templates: (prev, {schema}) => {\n        if (!addTemplates) {\n          return prev\n        }\n\n        // Templates are not setup for async languages\n        if (!Array.isArray(supportedLanguages)) {\n          return prev\n        }\n\n        const parameterizedTemplates = schemaTypes.map((schemaType) => ({\n          id: `${schemaType}-parameterized`,\n          title: `${schema?.get(schemaType)?.title ?? schemaType}: with Language`,\n          schemaType,\n          parameters: [{name: `languageId`, title: `Language ID`, type: `string`}],\n          value: ({languageId}: {languageId: string}) => ({\n            [languageField]: languageId,\n          }),\n        }))\n\n        const staticTemplates = schemaTypes.flatMap((schemaType) => {\n          return supportedLanguages.map((language) => ({\n            id: `${schemaType}-${language.id}`,\n            title: `${language.title} ${schema?.get(schemaType)?.title ?? schemaType}`,\n            schemaType,\n            value: {\n              [languageField]: language.id,\n            },\n          }))\n        })\n\n        return [...prev, ...parameterizedTemplates, ...staticTemplates]\n      },\n    },\n\n    // Uses:\n    // - `sanity-plugin-internationalized-array` to maintain the translations array\n    plugins: [\n      // Translation metadata stores its references using this plugin\n      // It cuts down on attribute usage and gives UI conveniences to add new translations\n      internationalizedArray({\n        ...metadataInternationalization,\n        apiVersion: pluginConfig.apiVersion,\n        languages: supportedLanguages,\n        includeForDocumentType: (documentType) => documentType === METADATA_SCHEMA_NAME,\n        fieldTypes: [\n          defineField(\n            {\n              name: 'reference',\n              type: 'reference',\n              to: schemaTypes.map((type) => ({type})),\n              weak: pluginConfig.weakReferences,\n              // Reference filters don't actually enforce validation!\n              validation: (Rule) =>\n                // @ts-expect-error - fix typings\n                Rule.custom(async (item: TranslationReference, context) => {\n                  if (!item?.value?._ref || !item?.[LANGUAGE_FIELD_NAME]) {\n                    return true\n                  }\n\n                  const client = context.getClient({apiVersion: API_VERSION})\n                  const valueLanguage = await client.fetch(\n                    `*[_id in [$ref, $draftRef]][0].${languageField}`,\n                    {\n                      ref: item.value._ref,\n                      draftRef: `drafts.${item.value._ref}`,\n                    },\n                  )\n\n                  if (valueLanguage && valueLanguage === item[LANGUAGE_FIELD_NAME]) {\n                    return true\n                  }\n\n                  return `Referenced document does not have the correct language value`\n                }),\n              options: {\n                // @ts-expect-error - Update type once it knows the values of this filter\n                filter: ({parent, document}) => {\n                  if (!parent) return null\n\n                  // I'm not sure in what instance there's an array of parents\n                  // But the Type suggests it's possible\n                  const parentArray = Array.isArray(parent) ? parent : [parent]\n                  const language = parentArray.find((p) => p[LANGUAGE_FIELD_NAME])\n\n                  if (!language?.[LANGUAGE_FIELD_NAME]) return null\n\n                  if (document['schemaTypes']) {\n                    return {\n                      filter: `_type in $schemaTypes && ${languageField} == $language`,\n                      params: {\n                        schemaTypes: document['schemaTypes'],\n                        language: language[LANGUAGE_FIELD_NAME],\n                      },\n                    }\n                  }\n\n                  return {\n                    filter: `${languageField} == $language`,\n                    params: {language: language[LANGUAGE_FIELD_NAME]},\n                  }\n                },\n              },\n            },\n            {strict: false},\n          ),\n        ],\n      }),\n    ],\n  }\n})\n"],"mappings":"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"}
\ No newline at end of file