sanity-plugin-media

6.0.16.0.2
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":["isHotkey","RefObject","useCallback","useEffect","useRef","useKeyPress","hotkey","onPress","$","_c","keyPressed","t0","e","current","downHandler","t1","Symbol","for","upHandler","t2","t3","window","addEventListener","removeEventListener","ReactNode","createContext","useContext","useMemo","AssetSourceComponentProps","ContextProps","onSelect","Props","children","AssetSourceDispatchContext","undefined","AssetBrowserDispatchProvider","props","$","_c","t0","contextValue","t1","useAssetSourceActions","context","Error","SanityClient","useClient","useVersionedClient","$","_c","t0","Symbol","for","apiVersion","createGlobalStyle","css","customScrollbar","GlobalStyle","TypedUseSelectorHook","useSelector","RootReducerState","useTypedSelector","OrderDirection","ORDER_DICTIONARY","Record","asc","desc","_createdAt","_updatedAt","mimeType","originalFilename","size","getOrderTitle","field","direction","groq","SearchFacetDivider","SearchFacetInputProps","SearchFacetName","SearchFacetOperators","divider","type","inputs","Record","altText","assetTypes","field","name","operatorType","operatorTypes","title","value","creditLine","description","fileName","height","inCurrentDocument","options","selectOnly","inUse","isOpaque","orientation","size","modifier","modifiers","fieldModifier","fieldName","tag","width","operators","doesNotInclude","fn","undefined","label","doesNotReference","_field","empty","_value","hideInput","equalTo","greaterThan","greaterThanOrEqualTo","includes","is","isNot","lessThan","lessThanOrEqualTo","notEmpty","references","AssetSourceComponentProps","divider","inputs","SearchFacetInputProps","SearchFacetDivider","SearchFacetGroup","OrderDirection","SUPPORTED_ASSET_TYPES","const","ORDER_OPTIONS","direction","field","FACETS","tag","inUse","inCurrentDocument","title","altText","creditLine","description","isOpaque","fileName","size","type","orientation","width","height","GRID_TEMPLATE_COLUMNS","SMALL","LARGE","PANEL_HEIGHT","TAG_DOCUMENT_NAME","TAGS_PANEL_WIDTH","iif","Observable","of","throwError","delay","mergeMap","debugThrottle","throttled","source","T","pipe","v","Math","random","message","statusCode","groq","operators","AssetType","SearchFacetInputProps","constructFilter","assetTypes","searchFacets","searchQuery","documentAssetTypes","map","type","baseFilter","JSON","stringify","searchFacetFragments","reduce","acc","facet","field","modifier","modifiers","operatorType","value","operator","currentModifier","find","m","name","facetField","fieldModifier","fragment","fn","push","options","currentOptionValue","l","constructedQuery","trim","join","SanityClient","groq","from","Observable","of","throwError","mergeMap","TAG_DOCUMENT_NAME","HttpError","checkTagName","client","name","source","T","pipe","fetch","existingTagCount","message","statusCode","TagSelectOption","TagItem","getTagSelectOptions","tags","reduce","acc","val","tag","push","label","name","current","value","_id","createAction","AssetItem","HttpError","Tag","ASSETS_ACTIONS","tagsAddComplete","prepare","assets","tag","payload","tagsAddError","error","tagsAddRequest","tagsRemoveComplete","tagsRemoveError","tagsRemoveRequest","createAction","DIALOG_ACTIONS","showTagCreate","showTagEdit","prepare","tagId","payload","createSelector","createSlice","isAnyOf","PayloadAction","ClientError","Transaction","groq","Selector","ofType","from","Observable","of","bufferTime","catchError","filter","mergeMap","switchMap","withLatestFrom","TAG_DOCUMENT_NAME","checkTagName","debugThrottle","Asset","HttpError","MyEpic","TagSelectOption","Tag","TagItem","getTagSelectOptions","ASSETS_ACTIONS","DIALOG_ACTIONS","RootReducerState","TagsReducerState","allIds","byIds","Record","creating","creatingError","fetchCount","fetching","fetchingError","panelVisible","initialState","undefined","tagsSlice","name","extraReducers","builder","addCase","showTagCreate","state","showTagEdit","action","tagId","payload","error","addMatcher","tagsAddComplete","tagsAddError","tagsRemoveComplete","tagsRemoveError","tag","_id","updating","tagsAddRequest","tagsRemoveRequest","reducers","createComplete","assetId","includes","push","_type","picked","createError","createRequest","_action","deleteComplete","deleteIndex","indexOf","splice","deleteError","deleteRequest","Object","keys","forEach","key","fetchComplete","tags","length","fetchError","fetchRequest","reducer","query","prepare","listenerCreateQueue","_state","listenerCreateQueueComplete","listenerDeleteQueue","listenerDeleteQueueComplete","tagIds","listenerUpdateQueue","listenerUpdateQueueComplete","panelVisibleSet","sort","a","b","tagA","current","tagB","updateComplete","closeDialogId","updateError","updateRequest","formData","tagsCreateEpic","action$","state$","client","pipe","actions","match","debug","badConnection","observable","create","result","message","statusCode","tagsDeleteEpic","fetch","tagName","assets","patches","map","asset","id","patch","ifRevisionID","_rev","unset","transaction","reduce","tx","delete","commit","tagsFetchEpic","items","tagsListenerCreateQueueEpic","tagsListenerDeleteQueueEpic","tagsListenerUpdateQueueEpic","tagsSortEpic","type","tagsUpdateEpic","set","updatedTag","selectTagsByIds","selectTagsAllIds","selectTags","selectTagById","selectTagSelectOptions","opt","media","acc","v","tagItem","_ref","tagsActions","PayloadAction","createSelector","createSlice","uuid","EMPTY","of","filter","mergeMap","withLatestFrom","MyEpic","SearchFacetInputProps","SearchFacetOperatorType","WithId","tagsActions","RootReducerState","SearchState","facets","query","initialState","searchSlice","name","reducers","facetsAdd","state","action","facet","push","payload","id","facetsClear","facetsRemoveByName","facetName","facetsRemoveByTag","tagId","type","operatorType","value","facetsRemoveById","facetId","facetsUpdate","modifier","find","f","facetsUpdateById","forEach","index","querySet","searchQuery","searchFacetTagUpdateEpic","action$","state$","pipe","updateComplete","match","tag","currentSearchFacetTag","search","tagItem","tags","byIds","_id","actions","label","current","selectIsSearchFacetTag","_state","searchFacets","some","searchActions","reducer","createAction","SanityAssetDocument","SanityImageAssetDocument","UPLOADS_ACTIONS","uploadComplete","prepare","asset","payload","createSelector","createSlice","PayloadAction","ClientError","Patch","Transaction","groq","nanoid","Selector","ofType","EMPTY","from","of","bufferTime","catchError","debounceTime","filter","mergeMap","switchMap","withLatestFrom","getOrderTitle","ORDER_OPTIONS","debugThrottle","Asset","AssetItem","AssetType","BrowserView","HttpError","MyEpic","Order","OrderDirection","Tag","constructFilter","searchActions","RootReducerState","UPLOADS_ACTIONS","ASSETS_ACTIONS","ItemError","description","id","referencingIDs","type","AssetsReducerState","allIds","assetTypes","byIds","Record","fetchCount","fetching","fetchingError","lastPicked","order","pageIndex","pageSize","view","defaultOrder","direction","field","initialState","undefined","title","assetsSlice","name","extraReducers","builder","addCase","uploadComplete","state","action","asset","payload","_id","_type","picked","updating","tagsAddComplete","assets","forEach","tagsAddError","tagsAddRequest","tagsRemoveComplete","tagsRemoveError","tagsRemoveRequest","reducers","clear","deleteComplete","assetIds","deleteIndex","indexOf","splice","Math","floor","length","deleteError","error","itemErrors","response","body","items","map","item","deleteRequest","closeDialogId","Object","keys","key","fetchComplete","includes","push","fetchError","fetchRequest","reducer","_action","params","query","prepare","queryFilter","selector","sort","replace","pipe","insertUploads","results","entries","hash","assetId","listenerCreateQueue","_state","listenerCreateQueueComplete","listenerDeleteQueue","listenerDeleteQueueComplete","listenerUpdateQueue","listenerUpdateQueueComplete","loadNextPage","loadPageIndex","orderSet","pick","pickAll","pickClear","values","pickRange","endId","startId","startIndex","findIndex","endIndex","indices","a","b","slice","tagA","tagB","updateComplete","updateError","message","updateRequest","formData","viewSet","assetsDeleteEpic","action$","_state$","client","assetsActions","match","observable","delete","JSON","stringify","assetsFetchEpic","state$","debug","badConnection","fetch","result","statusCode","assetsFetchPageIndexEpic","start","end","documentId","selected","document","documentAssetIds","constructedFilter","searchFacets","search","facets","searchQuery","assetsFetchNextPageEpic","assetsFetchAfterDeleteAllEpic","nextPageIndex","filterAssetWithoutTag","tag","tagIndex","opt","media","tags","t","_ref","patchOperationTagAppend","patch","setIfMissing","append","_key","_weak","patchOperationTagUnset","ifRevisionId","_rev","unset","assetsOrderSetEpic","assetsSearchEpic","facetsAdd","facetsClear","facetsRemoveById","facetsRemoveByName","facetsRemoveByTag","facetsUpdate","facetsUpdateById","querySet","assetsListenerCreateQueueEpic","actions","assetsListenerDeleteQueueEpic","assetsListenerUpdateQueueEpic","assetsSortEpic","assetsTagsAddEpic","pickedAssets","selectAssetsPicked","pickedAssetsFiltered","transaction","reduce","tx","pickedAsset","commit","assetsTagsRemoveEpic","assetsUnpickEpic","assetsUpdateEpic","set","updatedAsset","selectAssetsByIds","selectAssetsAllIds","selectAssetById","selectAssets","selectAssetsLength","selectAssetsPickedLength","assetsPicked","createSlice","PayloadAction","pluralize","ofType","EMPTY","of","filter","mergeMap","AssetItem","Dialog","MyEpic","Tag","assetsActions","ASSETS_ACTIONS","tagsActions","DIALOG_ACTIONS","DialogReducerState","items","initialState","dialogSlice","name","extraReducers","builder","addCase","showTagCreate","state","push","id","type","showTagEdit","action","tagId","payload","reducers","clear","inlineTagCreate","assetId","tag","forEach","item","lastCreatedTag","label","current","value","_id","inlineTagRemove","tagIds","lastRemovedTagIds","remove","showConfirmAssetsTagAdd","assetsPicked","closeDialogId","suffix","length","confirmCallbackAction","tagsAddRequest","assets","confirmText","title","headerTitle","tone","showConfirmAssetsTagRemove","tagsRemoveRequest","showConfirmDeleteAssets","deleteRequest","map","assetItem","asset","description","showConfirmDeleteTag","showAssetEdit","showSearchFacets","showTags","dialogClearOnAssetUpdateEpic","action$","pipe","deleteComplete","updateComplete","dialogId","actions","dialogTagCreateEpic","createComplete","match","dialogTagDeleteEpic","listenerDeleteQueueComplete","dialogActions","reducer","ThLargeIcon","ThListIcon","Button","Inline","useDispatch","useTypedSelector","assetsActions","ButtonViewGroup","$","_c","dispatch","view","_temp","t0","Symbol","for","whiteSpace","t1","t2","viewSet","t3","borderBottomRightRadius","borderTopRightRadius","t4","t5","t6","t7","borderBottomLeftRadius","borderTopLeftRadius","t8","t9","state","assets","PopoverProps","usePortal","usePortalPopoverProps","$","_c","portal","t0","element","animate","constrainSize","floatingBoundary","referenceBoundary","SortIcon","Button","Menu","MenuButton","MenuDivider","MenuItem","useDispatch","getOrderTitle","ORDER_OPTIONS","usePortalPopoverProps","useTypedSelector","assetsActions","OrderSelect","$","_c","dispatch","order","_temp","popoverProps","t0","direction","field","t1","t2","map","item","index","selected","orderSet","minWidth","t3","t4","state","assets","Box","useNProgress","Props","loading","Progress","props","$","_c","t0","animationDuration","isAnimating","isFinished","progress","t1","t2","t3","opacity","transition","t4","t5","t6","height","background","position","left","top","width","t7","hues","ThemeColorSchemeKey","studioTheme","SCHEME_COLORS","bg","dark","gray","hex","light","bg2","inputEnabledBorder","color","default","input","enabled","border","inputHoveredBorder","hovered","mutedHoveredBg","primary","muted","mutedHoveredFg","fg","mutedSelectedBg","selected","spotBlue","spot","blue","SchemeColorKey","getSchemeColor","scheme","colorKey","CloseIcon","Box","Flex","Label","rem","Text","ThemeColorSchemeKey","ReactNode","useDispatch","useColorSchemeValue","styled","css","searchActions","SearchFacetInputProps","WithId","getSchemeColor","Props","children","facet","Container","$scheme","theme","sanity","radius","SearchFacet","props","$","_c","scheme","dispatch","t0","id","facetsRemoveById","facetId","handleClose","t1","Symbol","for","t2","t3","t4","t5","t6","whiteSpace","t7","title","t8","t9","t10","t11","TextInput","ChangeEvent","Props","onValueChange","value","TextInputNumber","props","$","_c","remainingProps","t0","t1","t2","e","val","target","regex","test","parseInt","handleChange","SelectIcon","Box","Button","Menu","MenuButton","MenuDivider","MenuItem","useDispatch","operators","usePortalPopoverProps","searchActions","SearchFacetInputNumberModifier","SearchFacetInputNumberProps","SearchFacetOperatorType","WithId","SearchFacet","TextInputNumber","Props","facet","SearchFacetNumber","t0","$","_c","dispatch","popoverProps","modifiers","t1","modifier","find","name","selectedModifier","t2","id","operatorType","facetsUpdateById","handleOperatorItemClick","t3","modifier_0","handleModifierClick","t4","value","handleValueChange","selectedOperatorType","t5","operatorTypes","label","map","operatorType_0","index","selected","t6","Symbol","for","maxWidth","t7","t8","t9","title","modifier_1","selected_0","t10","SelectIcon","Box","Button","Menu","MenuButton","MenuDivider","MenuItem","useDispatch","operators","usePortalPopoverProps","searchActions","SearchFacetInputSelectListItemProps","SearchFacetInputSelectProps","SearchFacetOperatorType","WithId","SearchFacet","Props","facet","SearchFacetSelect","t0","$","_c","dispatch","popoverProps","options","t1","value","find","v","name","selectedItem","t2","option","facetsUpdate","handleListItemClick","t3","operatorType","handleOperatorItemClick","selectedOperatorType","t4","operatorTypes","label","map","operatorType_0","index","selected","t5","title","t6","t7","item","selected_0","t8","t9","t10","SelectIcon","Box","Button","Menu","MenuButton","MenuDivider","MenuItem","TextInput","ChangeEvent","useDispatch","operators","usePortalPopoverProps","searchActions","SearchFacetInputStringProps","SearchFacetOperatorType","WithId","SearchFacet","Props","facet","SearchFacetString","t0","$","_c","dispatch","popoverProps","t1","id","operatorType","facetsUpdateById","handleOperatorItemClick","t2","e","value","target","handleChange","selectedOperatorType","t3","operatorTypes","label","map","operatorType_0","index","selected","t4","hideInput","maxWidth","t5","CloseIcon","Box","Card","rem","studioTheme","Text","ThemeColorSchemeKey","components","StylesConfig","Virtuoso","getSchemeColor","fonts","text","sizes","themeTextSizes","radius","themeRadius","space","themeSpace","reactSelectStyles","scheme","control","styles","isDisabled","isFocused","boxShadow","fontSize","input","color","fontFamily","family","marginLeft","menuList","padding","noOptionsMessage","lineHeight","option","backgroundColor","placeholder","paddingLeft","singleValue","alignItems","display","height","valueContainer","margin","ClearIndicator","props","$","_c","t0","Symbol","for","transform","t1","t2","Menu","children","MenuList","Array","isArray","length","index","item","NoOptionsMessage","Option","SingleValue","reactSelectComponents","DropdownIndicator","IndicatorSeparator","SelectIcon","Box","Button","Menu","MenuButton","MenuDivider","MenuItem","useDispatch","Select","useColorSchemeValue","operators","usePortalPopoverProps","useTypedSelector","searchActions","selectTags","reactSelectComponents","reactSelectStyles","TagSelectOption","SearchFacetInputSearchableProps","SearchFacetOperatorType","WithId","getTagSelectOptions","SearchFacet","Props","facet","SearchFacetTags","t0","$","_c","scheme","dispatch","tags","_temp","tagsFetching","_temp2","t1","allTagOptions","popoverProps","t2","id","option","facetsUpdateById","value","handleChange","t3","operatorType","handleOperatorItemClick","selectedOperatorType","t4","operatorTypes","label","map","operatorType_0","index","selected","minWidth","t5","hideInput","width","_temp3","t6","state","state_0","fetching","Box","Flex","Inline","rem","Theme","styled","css","useTypedSelector","SearchFacetNumber","SearchFacetSelect","SearchFacetString","SearchFacetTags","Props","layout","StackContainer","theme","sanity","space","SearchFacets","props","$","_c","t0","undefined","searchFacets","_temp","t1","map","_temp2","Items","length","t2","Error","state","search","facets","facet","key","id","type","PropsWithChildren","createContext","useContext","useMemo","DropzoneOptions","MediaToolOptions","Locale","ContextProps","dropzone","Pick","components","createTagsOnUpload","creditLine","directUploads","locales","ToolOptionsContext","Props","options","ToolOptionsProvider","children","value","creditLineExcludeSources","excludeSources","Array","isArray","maxSize","maximumUploadSize","details","enabled","useToolOptions","context","Error","AddIcon","Button","Flex","Menu","MenuButton","MenuDivider","MenuGroup","MenuItem","useDispatch","FACETS","useToolOptions","usePortalPopoverProps","useTypedSelector","searchActions","SearchFacetDivider","SearchFacetGroup","SearchFacetInputProps","SearchFacetsControl","$","_c","dispatch","assetTypes","_temp","searchFacets","_temp2","selectedDocument","_temp3","popoverProps","creditLine","isTool","T0","T1","T2","t0","t1","t2","enabled","t3","facet","type","name","selectOnly","matchingAssetTypes","filter","assetType","includes","length","filteredFacets","_temp4","hasSearchFacets","renderMenuFacets","facets_0","t4","level","undefined","facets","map","facet_1","index_0","index","title","disabled","operatorTypes","find","v","facetsAdd","t5","placement","t6","facetsClear","t7","state","assets","state_0","search","state_1","selected","document","facet_0","previousFacet","TagIcon","$","_c","t0","Symbol","for","CloseIcon","SearchIcon","Box","Flex","TextInput","ChangeEvent","useDispatch","useTypedSelector","searchActions","TextInputSearch","$","_c","searchQuery","_temp","dispatch","t0","e","querySet","currentTarget","value","handleChange","t1","handleClear","t2","Symbol","for","position","t3","t4","length","cursor","height","opacity","right","top","width","zIndex","t5","state","search","query","Box","Button","Flex","Inline","useMediaIndex","useDispatch","useTypedSelector","dialogActions","tagsActions","ButtonViewGroup","OrderSelect","Progress","SearchFacets","SearchFacetsControl","TagIcon","TextInputSearch","Controls","$","_c","dispatch","fetching","_temp","pageIndex","_temp2","searchFacets","_temp3","tagsPanelVisible","_temp4","mediaIndex","t0","showSearchFacets","handleShowSearchFacetDialog","t1","showTags","handleShowTagsDialog","t2","panelVisibleSet","panelVisible","toggleTagsPanelToggle","t3","Symbol","for","borderBottom","zIndex","t4","t5","t6","alignItems","flex","height","justifyContent","position","width","t7","minWidth","t8","t9","t10","whiteSpace","t11","length","t12","t13","t14","t15","t16","t17","t18","t19","t20","transform","t21","t22","t23","t24","t25","state","assets","state_0","state_1","search","facets","state_2","tags","PayloadAction","createSlice","DebugReducerState","badConnection","enabled","initialState","debugSlice","name","reducers","setBadConnection","state","action","payload","toggleEnabled","debugActions","actions","reducer","PlugIcon","Box","Flex","Switch","Text","Tooltip","ChangeEvent","useDispatch","useKeyPress","useTypedSelector","debugActions","DebugControls","$","_c","dispatch","badConnection","_temp","debugEnabled","_temp2","t0","e","checked","target","setBadConnection","handleChange","t1","toggleEnabled","handleToggleControls","t2","Symbol","for","bottom","left","pointerEvents","position","width","t3","t4","t5","t6","t7","t8","t9","state","debug","state_0","enabled","z","localizedStringSchema","locales","id","length","string","trim","optional","shape","Record","ZodTypeAny","locale","object","passthrough","tagOptionSchema","label","min","message","value","getAssetFormSchema","altText","creditLine","description","opt","media","tags","array","nullable","originalFilename","title","assetFormSchema","tagFormSchema","name","SanityDocument","getUniqueDocuments","documents","draftIds","reduce","acc","doc","_id","startsWith","concat","slice","filteredDocuments","filter","includes","ImageAsset","imageDprUrl","asset","options","width","height","dpi","window","devicePixelRatio","Math","round","imgH","max","undefined","imgW","urlParams","URLSearchParams","append","toString","url","FormData","Record","sanitizeFormData","formData","Object","keys","reduce","acc","key","val","constructor","Array","length","trim","Asset","FileAsset","ImageAsset","isFileAsset","asset","_type","isImageAsset","zodResolver","FieldValues","Resolver","zodFormResolver","schema","TFieldValues","Parameters","ImageAsset","getAssetResolution","asset","metadata","dimensions","width","height","ClipboardIcon","Button","Popover","Text","copy","useEffect","useRef","useState","usePortalPopoverProps","Props","disabled","url","ButtonAssetCopy","t0","$","_c","popoverProps","refPopoverTimeout","popoverVisible","setPopoverVisible","t1","current","clearTimeout","setTimeout","handleClick","t2","t3","Symbol","for","t4","t5","t6","DownloadIcon","Box","Button","Flex","Inline","Stack","Text","format","filesize","ReactNode","Asset","AssetItem","getAssetResolution","isImageAsset","ButtonAssetCopy","Props","asset","item","Row","t0","$","_c","label","value","t1","Symbol","for","opacity","width","t2","t3","textAlign","t4","t5","AssetMetadata","props","exif","metadata","originalFilename","url","window","location","href","handleDownload","size","base","round","mimeType","t6","extension","toUpperCase","t7","t8","t9","t10","DateTimeOriginal","FNumber","FocalLength","ExposureTime","ISO","background","height","Date","t11","updating","t12","t13","t14","t15","t16","Dialog","SanityDialog","ComponentProps","props","$","_c","t0","Symbol","for","position","t1","SanityDocument","Box","Button","Card","Stack","Text","Preview","SchemaType","useSchema","useIntentLink","Props","documents","isLoading","DocumentList","t0","$","_c","schema","t1","Symbol","for","length","map","doc","_id","get","_type","t2","ReferringDocument","props","schemaType","intent","params","id","onClick","width","Box","Flex","Theme","MouseEvent","defaultStyles","FileIcon","ReactFileIcon","DefaultExtensionType","styled","css","Props","extension","onClick","e","width","Container","theme","sanity","fonts","text","family","props","$","_c","t0","Symbol","for","height","t1","t2","t3","t4","Flex","Asset","FileIcon","Props","asset","FileAssetPreview","props","$","_c","mimeType","search","t0","Symbol","for","height","t1","width","t2","url","extension","Box","Button","Text","Tooltip","format","ReactNode","Props","disabled","isValid","lastUpdated","onClick","FormSubmitButton","props","$","_c","content","t0","Symbol","for","t1","Date","t2","maxWidth","t3","window","ThemeColorSchemeKey","MouseEvent","styled","css","getSchemeColor","Props","onClick","e","$showCheckerboard","$scheme","src","style","Image","img","props","AddIcon","ChevronDownIcon","CloseIcon","Box","Card","Flex","rem","studioTheme","Text","ThemeColorSchemeKey","components","StylesConfig","Virtuoso","getSchemeColor","radius","themeRadius","space","themeSpace","reactSelectStyles","scheme","control","styles","isFocused","boxShadow","indicatorsContainer","isDisabled","opacity","input","color","fontFamily","fonts","text","family","marginLeft","menuList","multiValue","backgroundColor","borderRadius","multiValueLabel","fontSize","padding","multiValueRemove","noOptionsMessage","lineHeight","option","placeholder","valueContainer","margin","DropdownIndicator","props","$","_c","t0","Symbol","for","t1","Menu","children","MenuList","Array","isArray","height","length","index","item","t2","MultiValueLabel","MultiValueRemove","Option","data","__isNew__","marginRight","reactSelectComponents","IndicatorSeparator","ErrorOutlineIcon","Box","Inline","Text","Tooltip","styled","Props","description","error","label","name","StyledErrorOutlineIcon","theme","color","sanity","spot","red","FormFieldInputLabel","props","$","_c","t0","t1","marginRight","t2","t3","t4","Box","Controller","CreatableSelect","useColorSchemeValue","useTypedSelector","reactSelectComponents","reactSelectStyles","TagSelectOption","FormFieldInputLabel","Props","control","description","disabled","error","label","name","onCreateTag","tagName","options","value","placeholder","FormFieldInputTags","props","$","_c","scheme","creating","_temp","tagsFetching","_temp2","t0","Symbol","for","zIndex","t1","t2","t3","field","onBlur","onChange","controllerValue","_temp3","t4","state","tags","state_0","fetching","Box","TextInput","Ref","FormFieldInputLabel","Props","description","disabled","error","label","name","placeholder","value","ref","HTMLInputElement","FormFieldInputText","props","$","_c","rest","t0","t1","t2","Box","TextArea","Ref","FormFieldInputLabel","Props","description","disabled","error","label","name","placeholder","rows","value","ref","HTMLTextAreaElement","FormFieldInputTextarea","props","$","_c","rest","t0","t1","t2","Card","Stack","Tab","TabList","TabPanel","useState","Control","FieldErrors","UseFormRegister","Asset","AssetFormData","Locale","TagSelectOption","FormFieldInputTags","FormFieldInputText","FormFieldInputTextarea","LocalizedErrors","Record","message","toStringField","value","found","Object","values","find","v","undefined","DetailsProps","formUpdating","handleCreateTag","title","control","errors","register","allTagOptions","assetTagOptions","currentAsset","creditLine","enabled","excludeSources","locales","Details","t0","$","_c","hasLocales","length","activeLocaleTab","setActiveLocaleTab","t1","opt","media","tags","t2","t3","t4","originalFilename","t5","t6","t7","altText","description","source","name","map","locale","idx","id","locale_0","idx_0","const","includes","t8","MutationEvent","Box","Button","Card","Flex","Stack","Tab","TabList","TabPanel","Text","groq","ReactNode","useCallback","useEffect","useMemo","useRef","useState","SubmitHandler","useForm","useDispatch","WithReferringDocuments","useColorSchemeValue","useDocumentStore","useToolOptions","getAssetFormSchema","useTypedSelector","useVersionedClient","assetsActions","selectAssetById","dialogActions","selectTags","selectTagSelectOptions","tagsActions","Asset","AssetFormData","DialogAssetEditProps","TagSelectOption","getTagSelectOptions","getUniqueDocuments","imageDprUrl","sanitizeFormData","isFileAsset","isImageAsset","zodFormResolver","AssetMetadata","Dialog","DocumentList","FileAssetPreview","FormSubmitButton","Image","Details","DetailsProps","renderDefaultDetails","props","Props","children","dialog","DialogAssetEdit","$","_c","t0","assetId","id","lastCreatedTag","lastRemovedTagIds","client","scheme","documentStore","dispatch","t1","state","String","assetItem","tags","assetUpdatedPrev","undefined","assetSnapshot","setAssetSnapshot","asset","tabSection","setTabSection","currentAsset","t2","allTagOptions","t3","assetTagOptions","creditLine","components","t4","locales","t5","details","CustomDetails","t6","length","makeLocaleObj","field","obj","i","locale","altText","description","originalFilename","opt","media","title","flattenField","_temp2","generateDefaultValues","t7","t8","t9","t10","defaultValues","mode","resolver","control","formState","t11","getValues","handleSubmit","register","reset","setValue","errors","isDirty","isValid","formUpdating","updating","t12","remove","handleClose","t13","showConfirmDeleteAssets","assets","closeDialogId","_id","handleDelete","t14","Symbol","for","update","result","transition","handleAssetUpdate","t15","tagName","createRequest","name","handleCreateTag","t16","bb0","isLocaleObj","_temp3","fields","_type","anyLocalized","some","f","configuredIds","Set","map","_temp4","f_0","Object","keys","k","has","hasOrphanedLocales","t17","cleanField","field_1","Array","isArray","obj_0","Record","sorted","sort","k_0","find","_temp5","configuredIds_0","_temp6","cleaned","key","val","entries","patch","set","commit","handleCleanupLocales","t18","formData","sanitizedFormData","updateRequest","_temp7","onSubmit","t19","subscriptionAsset","listen","subscribe","unsubscribe","t20","t21","t22","t23","existingTags","updatedTags","concat","shouldDirty","t24","t25","existingTags_0","updatedTags_0","filter","tag_0","includes","tag","value","t26","current","_updatedAt","t27","t28","t29","Footer","t30","detailsProps","t31","t32","t33","t34","t35","isLoading","referringDocuments","uniqueReferringDocuments","display","t36","aspectRatio","t37","t38","metadata","isOpaque","height","width","t39","t40","t41","t42","t43","_temp","v","field_0","values","v_0","l","v_1","l_0","_ref","_weak","WarningOutlineIcon","Box","Button","Flex","Stack","Text","ReactNode","useDispatch","dialogActions","DialogConfirmProps","Dialog","Props","children","dialog","DialogConfirm","props","$","_c","dispatch","t0","id","remove","handleClose","t1","closeDialogId","confirmCallbackAction","handleConfirm","t2","confirmText","tone","Footer","t3","headerTitle","Header","t4","t5","t6","title","t7","description","t8","t9","Box","ReactNode","useCallback","useDispatch","dialogActions","DialogSearchFacetsProps","Dialog","SearchFacets","SearchFacetsControl","Props","children","dialog","DialogSearchFacets","props","$","_c","t0","id","dispatch","t1","clear","handleClose","t2","Symbol","for","t3","Box","Flex","ReactNode","useEffect","SubmitHandler","useForm","useDispatch","tagFormSchema","useTypedSelector","dialogActions","tagsActions","DialogTagCreateProps","TagFormData","sanitizeFormData","zodFormResolver","Dialog","FormFieldInputText","FormSubmitButton","Props","children","dialog","DialogTagCreate","props","$","_c","t0","id","dispatch","creating","_temp","creatingError","_temp2","t1","Symbol","for","name","t2","defaultValues","mode","resolver","formState","t3","handleSubmit","register","setError","errors","isDirty","isValid","formUpdating","t4","clear","handleClose","t5","formData","sanitizedFormData","createRequest","onSubmit","t6","t7","message","t8","Footer","t9","t10","t11","display","t12","t13","t14","t15","t16","state","tags","state_0","MutationEvent","Box","Button","Card","Flex","Text","groq","ReactNode","useCallback","useEffect","useState","SubmitHandler","useForm","useDispatch","tagFormSchema","useTypedSelector","useVersionedClient","dialogActions","selectTagById","tagsActions","DialogTagEditProps","Tag","TagFormData","sanitizeFormData","zodFormResolver","Dialog","FormFieldInputText","FormSubmitButton","Props","children","dialog","DialogTagEdit","props","$","_c","t0","id","tagId","client","dispatch","t1","state","String","tagItem","tagSnapshot","setTagSnapshot","tag","currentTag","generateDefaultValues","_temp","t2","t3","t4","Symbol","for","t5","defaultValues","mode","resolver","formState","t6","handleSubmit","register","reset","setError","errors","isDirty","isValid","formUpdating","updating","t7","remove","handleClose","t8","formData","sanitizedFormData","updateRequest","closeDialogId","_id","name","_type","current","onSubmit","t9","showConfirmDeleteTag","handleDelete","t10","update","result","transition","handleTagUpdate","t11","error","message","t12","t13","t14","subscriptionAsset","listen","subscribe","unsubscribe","t15","t16","t17","_updatedAt","Footer","t18","t19","t20","t21","display","t22","t23","t24","t25","t26","ArrowDownIcon","ArrowUpIcon","CloseIcon","EditIcon","SearchIcon","TrashIcon","Box","Button","Container","Flex","Text","Tooltip","ReactNode","useDispatch","styled","inputs","PANEL_HEIGHT","useTypedSelector","selectAssetsPicked","dialogActions","DIALOG_ACTIONS","searchActions","selectIsSearchFacetTag","SearchFacetInputSearchableProps","TagActions","TagItem","Props","actions","tag","TagContainer","ButtonContainer","TagButtonProps","disabled","icon","onClick","tone","tooltip","TagButton","props","$","_c","t0","t1","t2","window","Tag","dispatch","assetsPicked","_id","state","isSearchFacetTag","facetsRemoveByTag","tagId","handleSearchFacetTagRemove","showConfirmAssetsTagAdd","handleShowAddTagToAssetsDialog","t3","showConfirmAssetsTagRemove","handleShowRemoveTagFromAssetsDialog","t4","showConfirmDeleteTag","handleShowTagDeleteDialog","t5","showTagEdit","handleShowTagEditDialog","t6","name","current","searchFacet","value","label","facetsUpdate","operatorType","facetsAdd","facet","handleSearchFacetTagAddOrUpdate","t7","updating","t8","opacity","userSelect","t9","t10","t11","Symbol","for","flexShrink","t12","includes","t13","t14","t15","t16","t17","t18","Flex","Label","memo","useState","Virtuoso","PANEL_HEIGHT","useTypedSelector","selectAssetsPicked","selectTags","TagActions","TagItem","Tag","VirtualRow","t0","$","_c","isScrolling","item","t1","Symbol","for","height","t2","t3","undefined","actions","tag","_id","TagsVirtualized","assetsPicked","tags","setIsScrolling","items","pickedTagIds","reduce","_temp2","pickedTagIdsUnique","Set","acc_0","tagId","tagIsInEveryAsset","every","assetItem","tagIndex","asset","opt","media","findIndex","tag_0","_ref","acc","appliedToAll","push","appliedToSome","tagIdsSegmented","tagsAppliedToAll","filter","tag_1","includes","map","_temp3","tagsAppliedToSome","tag_2","_temp4","tagsUnused","tag_3","_temp5","length","_temp6","index","index_0","flex","overflowX","_temp","val","assetTagIds","concat","tagItem","tagItem_0","tagItem_1","tagItem_2","ComposeIcon","Box","Button","Flex","Inline","Label","useDispatch","useColorSchemeValue","PANEL_HEIGHT","useTypedSelector","DIALOG_ACTIONS","getSchemeColor","Props","allowCreate","light","title","TagViewHeader","t0","$","_c","scheme","dispatch","tagsCreating","_temp","tagsFetching","_temp2","t1","showTagCreate","handleTagCreate","t2","t3","background","borderBottom","flexShrink","height","t4","t5","opacity","t6","t7","boxShadow","t8","state","tags","creating","state_0","fetching","Box","Flex","Text","useTypedSelector","selectAssetsPickedLength","selectTags","TagsVirtualized","TagViewHeader","TagView","$","_c","numPickedAssets","tags","fetching","_temp","fetchCount","_temp2","fetchComplete","hasTags","length","hasPicked","t0","t1","t2","t3","t4","state","state_0","Box","ReactNode","useCallback","useDispatch","dialogActions","DialogTagsProps","Dialog","TagView","Props","children","dialog","DialogTags","props","$","_c","t0","id","dispatch","t1","clear","handleClose","t2","Symbol","for","height","minHeight","t3","useTypedSelector","Dialog","DialogAssetEdit","DialogConfirm","DialogSearchFacets","DialogTagCreate","DialogTagEdit","DialogTags","Dialogs","$","_c","currentDialogs","_temp","t0","renderDialogs","dialogs","index","length","dialog","childDialogs","type","state","items","ReactNode","createContext","useContext","useMemo","ContextProps","open","Props","children","DropzoneDispatchContext","undefined","DropzoneDispatchProvider","props","$","_c","t0","contextValue","t1","useDropzoneActions","context","Error","ArrowRightIcon","CloseIcon","UploadIcon","Box","Button","Flex","Inline","Text","pluralize","useAssetSourceActions","useDropzoneActions","useToolOptions","useTypedSelector","Props","onClose","Header","props","$","_c","open","onSelect","assetTypes","_temp","selectedDocument","_temp2","directUploads","t0","Symbol","for","whiteSpace","t1","join","t2","t3","margin","textTransform","_type","t4","t5","length","t6","flexShrink","t7","t8","state","assets","state_0","selected","document","studioTheme","useEffect","useState","useBreakpointIndex","$","_c","getBreakpointIndex","mediaQueryLists","t0","t1","Symbol","for","container","map","_temp","findIndex","_temp2","value","setValue","t2","t3","handleBreakpoint","forEach","mql_0","mql","addEventListener","addListener","mql_2","removeEventListener","mql_1","removeListener","width","window","matchMedia","matches","createSelector","CardAssetData","CardUploadData","RootReducerState","selectCombinedItems","state","assets","allIds","uploads","assetIds","uploadIds","assetItems","map","id","type","uploadItems","combinedItems","CheckmarkCircleIcon","EditIcon","WarningFilledIcon","Box","Checkbox","Container","Flex","Spinner","Text","Theme","ThemeColorSchemeKey","Tooltip","memo","MouseEvent","RefObject","useDispatch","useColorSchemeValue","styled","css","PANEL_HEIGHT","useAssetSourceActions","useKeyPress","useTypedSelector","assetsActions","selectAssetById","dialogActions","getSchemeColor","imageDprUrl","isFileAsset","isImageAsset","FileIcon","Image","Props","id","selected","CardWrapper","CardContainer","$picked","theme","$updating","sanity","color","spot","orange","ContextActionContainer","$scheme","StyledWarningOutlineIcon","red","CardAsset","props","$","_c","scheme","shiftPressed","dispatch","lastPicked","_temp","t0","state_0","state","item","asset","error","isOpaque","metadata","picked","updating","onSelect","t1","_id","e","stopPropagation","kind","value","current","pick","assetId","pickRange","startId","endId","showAssetEdit","handleAssetClick","t2","e_0","handleContextActionClick","opacityContainer","opacityPreview","t3","t4","cursor","position","t5","height","opacity","t6","extension","t7","width","draggable","transition","t8","t9","left","top","t10","t11","t12","t13","flexShrink","pointerEvents","transform","t14","originalFilename","t15","t16","right","t17","assets","Observable","from","of","mergeMap","PREVIEW_WIDTH","createBlob","img","HTMLImageElement","Promise","Blob","resolve","imageAspect","width","height","canvas","HTMLCanvasElement","document","createElement","Math","max","ctx","getContext","drawImage","toBlob","err","console","warn","createImageEl","file","File","blobUrlLarge","window","URL","createObjectURL","Image","onload","revokeObjectURL","src","generatePreviewBlobUrl","imageEl","blob","Error","generatePreviewBlobUrl$","pipe","Subject","Subscription","Observable","from","first","mergeMap","DEFAULT_CONCURRENCY","remove","array","Array","T","item","index","indexOf","splice","createThrottler","concurrency","currentSubscriptions","pendingObservables","ready$","request","observable","observer","length","scheduleAndWait$","pipe","subscribe","subscription","push","unsubscribe","next","shift","asObservable","obs","withMaxConcurrency","func","args","throttler","SanityAssetDocument","SanityClient","SanityImageAssetDocument","Observable","of","throwError","map","mergeMap","HttpError","withMaxConcurrency","fetchExisting$","client","type","hash","observable","fetch","documentType","readFile$","file","File","ArrayBuffer","subscriber","reader","FileReader","onload","next","result","complete","onerror","err","error","readAsArrayBuffer","abort","hexFromBuffer","buffer","Array","prototype","call","Uint8Array","x","toString","slice","join","hashFile$","window","crypto","subtle","message","statusCode","pipe","arrayBuffer","digest","uploadSanityAsset$","assetType","existingAsset","assets","upload","extract","preserveFilename","event","asset","body","document","id","_id","uploadAsset$","createSelector","createSlice","PayloadAction","ClientError","SanityAssetDocument","SanityImageAssetDocument","groq","empty","merge","of","catchError","delay","filter","mergeMap","takeUntil","withLatestFrom","HttpError","MyEpic","SanityUploadProgressEvent","UploadItem","constructFilter","generatePreviewBlobUrl$","hashFile$","uploadAsset$","assetsActions","RootReducerState","UPLOADS_ACTIONS","UploadsReducerState","allIds","byIds","Record","initialState","uploadsSlice","name","extraReducers","builder","addCase","uploadComplete","state","action","asset","payload","sha1hash","status","reducers","checkRequest","_state","_action","assets","checkComplete","results","assetHashes","Object","keys","forEach","hash","deleteIndex","indexOf","splice","blobUrl","objectUrl","window","URL","revokeObjectURL","previewReady","uploadCancel","uploadError","error","uploadRequest","file","File","forceAsAssetType","uploadProgress","event","uploadHash","percent","uploadStart","uploadItem","includes","push","uploadsAssetStartEpic","action$","_state$","client","pipe","uploadsActions","match","url","assetType","v","type","stage","message","statusCode","uploadsAssetUploadEpic","state$","exists","uploads","_type","size","uploadsCompleteQueueEpic","uploadsCheckRequestEpic","documentIds","map","_id","constructedFilter","assetTypes","searchFacets","search","facets","searchQuery","query","observable","fetch","resultHashes","checkedResults","reduce","acc","insertUploads","selectUploadById","uploadId","actions","reducer","CloseIcon","Box","Button","Flex","Text","filesize","useDispatch","useColorSchemeValue","styled","PANEL_HEIGHT","useTypedSelector","selectUploadById","uploadsActions","getSchemeColor","FileIcon","Image","Props","id","CardWrapper","CardUpload","props","$","_c","scheme","dispatch","t0","state","item","t1","size","base","round","fileSize","percentLoaded","Math","percent","isComplete","status","isUploading","isQueued","t2","hash","uploadCancel","handleCancelUpload","t3","t4","background","border","height","position","t5","t6","bottom","left","width","transform","transformOrigin","transition","t7","Symbol","for","t8","assetType","objectUrl","opacity","t9","t10","top","boxShadow","t11","t12","t13","name","t14","flexShrink","t15","t16","t17","memo","VirtuosoGrid","styled","useTypedSelector","CardAssetData","CardUploadData","CardAsset","CardUpload","Props","items","onLoadMore","CARD_HEIGHT","CARD_WIDTH","VirtualCell","t0","$","_c","item","selected","type","t1","id","StyledItemContainer","div","ItemContainer","props","ref","rest","context","StyledListContainer","ListContainer","AssetGridVirtualized","selectedAssets","_temp","map","_temp2","selectedIds","totalCount","length","index","t2","Symbol","for","Item","List","t3","index_0","item_0","includes","t4","overflowX","overflowY","t5","state","assets","asset","_id","ChevronDownIcon","ChevronUpIcon","Box","Label","useDispatch","useTypedSelector","assetsActions","Props","field","title","TableHeaderItem","props","$","_c","dispatch","order","_temp","isActive","t0","direction","orderSet","handleClick","t1","t2","undefined","t3","t4","cursor","display","whiteSpace","t5","Symbol","for","marginRight","t6","t7","t8","t9","t10","state","assets","Checkbox","Flex","Grid","ThemeColorSchemeKey","useMediaIndex","MouseEvent","useDispatch","useColorSchemeValue","styled","css","GRID_TEMPLATE_COLUMNS","PANEL_HEIGHT","useAssetSourceActions","useTypedSelector","assetsActions","selectAssetsLength","selectAssetsPickedLength","getSchemeColor","TableHeaderItem","ContextActionContainer","$scheme","TableHeader","$","_c","scheme","dispatch","fetching","_temp","itemsLength","numPickedAssets","mediaIndex","onSelect","allSelected","t0","e","stopPropagation","pickClear","pickAll","handleContextActionClick","t1","t2","t3","t4","alignItems","background","borderBottom","gridColumnGap","gridTemplateColumns","LARGE","height","letterSpacing","position","textTransform","top","visibility","width","zIndex","t5","pointerEvents","transform","t10","t11","t12","t13","t6","t7","t8","t9","Symbol","for","t14","state","assets","CheckmarkCircleIcon","EditIcon","WarningFilledIcon","Box","Checkbox","Container","Flex","Grid","Spinner","Text","ThemeColorSchemeKey","Tooltip","useMediaIndex","formatRelative","filesize","memo","MouseEvent","RefObject","useCallback","useEffect","useRef","useState","useDispatch","WithReferringDocuments","useColorSchemeValue","styled","css","GRID_TEMPLATE_COLUMNS","useAssetSourceActions","useKeyPress","useTypedSelector","assetsActions","selectAssetById","dialogActions","getAssetResolution","getSchemeColor","getUniqueDocuments","imageDprUrl","isFileAsset","isImageAsset","FileIcon","Image","REFERENCE_COUNT_VISIBILITY_DELAY","Props","id","selected","ContainerGrid","$selected","$scheme","$updating","ContextActionContainer","StyledWarningIcon","theme","color","sanity","spot","red","TableRowAsset","props","$","_c","scheme","shiftPressed","referenceCountVisible","setReferenceCountVisible","refCountVisibleTimeout","dispatch","lastPicked","_temp","t0","state_0","state","item","mediaIndex","asset","error","isOpaque","metadata","picked","updating","onSelect","t1","e","stopPropagation","showAssetEdit","assetId","_id","current","pickRange","startId","endId","pick","handleContextActionClick","t2","e_0","kind","value","handleClick","opacityCell","opacityPreview","t3","t4","Symbol","for","setTimeout","clearTimeout","t5","undefined","t6","t7","SMALL","LARGE","t8","t9","gridColumnGap","gridRowGap","gridTemplateColumns","gridTemplateRows","t10","t11","alignItems","gridColumn","gridRowStart","gridRowEnd","height","justifyContent","opacity","position","t12","flexShrink","pointerEvents","transform","t13","t14","width","t15","t16","t17","extension","t18","t19","t20","left","top","t21","t22","t23","t24","t25","gridRow","t26","lineHeight","t27","originalFilename","t28","t29","t30","t31","t32","t33","t34","t35","t36","t37","t38","display","t39","t40","mimeType","t41","t42","t43","t44","t45","size","base","round","t46","t47","t48","t49","t50","t51","t52","t53","_updatedAt","Date","t54","t55","t56","t57","t58","t59","_temp2","t60","t61","t62","t63","t64","t65","t66","assets","isLoading","referringDocuments","uniqueDocuments","Array","isArray","length","CloseIcon","Box","Button","Flex","Grid","Stack","Text","useMediaIndex","filesize","useDispatch","useColorSchemeValue","GRID_TEMPLATE_COLUMNS","useTypedSelector","selectUploadById","uploadsActions","getSchemeColor","FileIcon","Image","Props","id","TableRowUpload","props","$","_c","scheme","dispatch","t0","state","item","mediaIndex","t1","size","base","round","fileSize","percentLoaded","Math","percent","isComplete","status","isUploading","isQueued","t2","hash","uploadCancel","handleCancelUpload","t3","t4","t5","SMALL","LARGE","t6","t7","alignItems","background","gridColumnGap","gridRowGap","gridTemplateColumns","gridTemplateRows","height","position","t8","t9","bottom","left","width","transform","transformOrigin","transition","t10","t11","t12","gridColumn","gridRowStart","gridRowEnd","t13","Symbol","for","t14","assetType","objectUrl","opacity","t15","t16","top","boxShadow","t17","t18","t19","t20","t21","t22","gridRow","marginLeft","t23","name","t24","t25","t26","t27","Box","memo","GroupedVirtuoso","useTypedSelector","CardAssetData","CardUploadData","TableHeader","TableRowAsset","TableRowUpload","Props","items","onLoadMore","VirtualRow","t0","$","_c","item","selected","type","t1","Symbol","for","height","t2","id","AssetTableVirtualized","props","selectedAssets","_temp","map","_temp2","selectedIds","totalCount","length","index","Array","fill","t3","index_0","item_0","includes","t4","overflowX","t5","_temp3","state","assets","asset","_id","Box","Text","useEffect","useDispatch","useBreakpointIndex","useTypedSelector","assetsActions","selectCombinedItems","tagsActions","AssetGridVirtualized","AssetTableVirtualized","Items","$","_c","dispatch","fetchCount","_temp","fetching","_temp2","tagsPanelVisible","_temp3","view","_temp4","combinedItems","breakpointIndex","hasFetchedOnce","hasItems","length","t0","loadNextPage","handleLoadMoreItems","t1","t2","panelVisibleSet","panelVisible","isEmpty","t3","Symbol","for","width","t4","state","assets","state_0","state_1","tags","state_2","useToast","useEffect","useTypedSelector","Notifications","$","_c","items","_temp","toast","t0","t1","length","lastItem","push","closable","status","title","state","notifications","Box","Button","Flex","Label","pluralize","useDispatch","useColorSchemeValue","PANEL_HEIGHT","useTypedSelector","assetsActions","selectAssetsPicked","dialogActions","getSchemeColor","PickedBar","$","_c","scheme","dispatch","assetsPicked","t0","pickClear","handlePickClear","t1","showConfirmDeleteAssets","assets","handleDeletePicked","length","t2","t3","background","borderBottom","height","position","width","t4","Symbol","for","color","t5","t6","t7","t8","boxShadow","t9","t10","t11","t12","t13","t14","t15","PayloadAction","createSlice","pluralize","AnyAction","ofType","of","bufferTime","filter","mergeMap","HttpError","ImageAsset","MyEpic","assetsActions","ASSETS_ACTIONS","tagsActions","uploadsActions","Notification","asset","status","title","NotificationsReducerState","items","messageFromGenericErrorPayload","payload","error","String","message","initialState","notificationsSlice","name","reducers","add","state","action","push","notificationsAssetsDeleteCompleteEpic","action$","pipe","deleteComplete","match","assetIds","deletedCount","length","actions","notificationsAssetsDeleteErrorEpic","deleteError","count","notificationsAssetsUploadCompleteEpic","checkComplete","results","Object","keys","notificationsAssetsTagsAddCompleteEpic","tagsAddComplete","assets","notificationsAssetsTagsRemoveCompleteEpic","tagsRemoveComplete","notificationsAssetsUpdateCompleteEpic","updateComplete","updatedCount","notificationsGenericErrorEpic","fetchError","type","updateError","createError","uploadError","notificationsTagCreateCompleteEpic","createComplete","notificationsTagDeleteCompleteEpic","notificationsTagUpdateCompleteEpic","notificationsActions","reducer","createSlice","SanityAssetDocument","SanityDocument","SanityImageAssetDocument","SelectedReducerState","assets","document","documentAssetIds","initialState","undefined","selectedSlice","name","reducers","reducer","Reducer","StateFromReducersMapObject","combineReducers","combineEpics","assetsReducer","assetsDeleteEpic","assetsFetchAfterDeleteAllEpic","assetsFetchEpic","assetsFetchNextPageEpic","assetsFetchPageIndexEpic","assetsListenerCreateQueueEpic","assetsListenerDeleteQueueEpic","assetsListenerUpdateQueueEpic","assetsOrderSetEpic","assetsSearchEpic","assetsSortEpic","assetsTagsAddEpic","assetsTagsRemoveEpic","assetsUnpickEpic","assetsUpdateEpic","debugReducer","dialogReducer","dialogClearOnAssetUpdateEpic","dialogTagCreateEpic","dialogTagDeleteEpic","notificationsReducer","notificationsAssetsDeleteErrorEpic","notificationsAssetsDeleteCompleteEpic","notificationsAssetsTagsAddCompleteEpic","notificationsAssetsTagsRemoveCompleteEpic","notificationsAssetsUpdateCompleteEpic","notificationsGenericErrorEpic","notificationsTagCreateCompleteEpic","notificationsTagDeleteCompleteEpic","notificationsTagUpdateCompleteEpic","searchReducer","searchFacetTagUpdateEpic","selectedReducer","tagsReducer","tagsCreateEpic","tagsDeleteEpic","tagsFetchEpic","tagsListenerCreateQueueEpic","tagsListenerDeleteQueueEpic","tagsListenerUpdateQueueEpic","tagsSortEpic","tagsUpdateEpic","uploadsReducer","uploadsAssetStartEpic","uploadsAssetUploadEpic","uploadsCheckRequestEpic","uploadsCompleteQueueEpic","rootEpic","reducers","assets","debug","dialog","notifications","search","selected","tags","uploads","ReducersMapObject","rootReducer","SanityDocument","isPlainObject","value","Array","isArray","getAssetIds","node","Record","acc","forEach","v","_type","_ref","push","Object","values","val","getDocumentAssetIds","document","assetIds","Set","sort","SUPPORTED_ASSET_TYPES","AssetType","isSupportedAssetType","assetType","supported","includes","AnyAction","configureStore","Store","SanityClient","Component","ReactNode","Provider","createEpicMiddleware","AssetSourceComponentProps","SanityDocument","rootEpic","rootReducer","initialState","assetsInitialState","RootReducerState","getDocumentAssetIds","isSupportedAssetType","Props","assetType","children","client","document","selectedAssets","ReduxProvider","store","constructor","props","epicMiddleware","dependencies","reducer","middleware","getDefaultMiddleware","serializableCheck","thunk","prepend","devTools","preloadedState","assets","assetTypes","debug","badConnection","enabled","dialog","items","notifications","search","facets","query","selected","documentAssetIds","tags","allIds","byIds","creating","fetchCount","fetching","panelVisible","uploads","run","render","Box","TAGS_PANEL_WIDTH","useTypedSelector","TagView","TagsPanel","$","_c","tagsPanelVisible","_temp","t0","Symbol","for","position","width","t1","borderLeft","height","overflowX","overflowY","right","top","state","tags","panelVisible","white","Flex","Text","ReactNode","DropEvent","DropzoneOptions","useDropzone","useDispatch","styled","useAssetSourceActions","DropzoneDispatchProvider","useToolOptions","useTypedSelector","notificationsActions","uploadsActions","Props","children","UploadContainer","div","DragActiveContainer","filterFiles","fileList","FileList","files","Array","from","filteredFiles","File","file","slice","arrayBuffer","push","UploadDropzone","props","$","_c","dropzone","t0","directUploads","maxSize","onSelect","dispatch","assetTypes","_temp","isImageAssetType","length","t1","acceptedFiles","forEach","uploadRequest","forceAsAssetType","undefined","handleDrop","t2","rejections","errorCodes","flatMap","_temp3","includes","add","status","title","handleDropRejected","t3","event","type","dataTransfer","target","HTMLInputElement","handleFileGetter","t4","t5","t6","t7","accept","getFilesFromEvent","noClick","noDrag","onDrop","onDropRejected","disabled","getRootProps","getInputProps","isDragActive","open","t8","t9","t10","t11","color","hex","t12","t13","state","assets","_temp2","code","errors","map","MutationEvent","SanityClient","groq","useEffect","useDispatch","useSelector","Dispatch","AssetSourceComponentProps","inputs","TAG_DOCUMENT_NAME","assetsActions","searchActions","tagsActions","RootReducerState","Asset","Tag","getMediaTagNames","schemaType","mediaTags","options","length","unique","Set","map","t","trim","filter","Boolean","Array","from","createAssetHandler","dispatch","update","documentId","result","transition","listenerCreateQueue","asset","listenerDeleteQueue","assetId","listenerUpdateQueue","createTagHandler","tag","tagId","useBrowserInit","client","tagsByIds","state","tags","byIds","tagsFetchCount","fetchCount","tagNames","hasMediaTags","facetsClear","fetchRequest","assetSubscription","listen","subscribe","tagSubscription","unsubscribe","tagFacetInput","type","resolvedTags","name","Object","values","find","item","current","NonNullable","tagItem","facetsAdd","facet","operatorType","value","label","_id","Card","Flex","PortalProvider","useState","AssetSourceComponentProps","SanityDocument","AssetBrowserDispatchProvider","useVersionedClient","GlobalStyle","Controls","DebugControls","Dialogs","Header","Items","Notifications","PickedBar","ReduxProvider","TagsPanel","UploadDropzone","useBrowserInit","Props","assetType","document","onClose","onSelect","selectedAssets","schemaType","BrowserContent","t0","$","_c","client","portalElement","setPortalElement","t1","t2","Symbol","for","t3","t4","t5","t6","position","t7","t8","Browser","props","t9","Box","Portal","PortalProvider","useLayer","SyntheticEvent","useEffect","useState","AssetSourceComponentProps","SanityDocument","useFormValue","useKeyPress","Browser","FormBuilderTool","props","$","_c","onClose","portalElement","useRootPortalElement","t0","Symbol","for","currentDocument","handleStopPropagation","_temp","zIndex","t1","bottom","height","left","position","top","width","t2","schemaType","t3","t4","container","_temp2","classList","add","document","body","appendChild","removeChild","event","nativeEvent","stopImmediatePropagation","stopPropagation","createElement","Flex","Browser","Tool","$","_c","t0","Symbol","for","ImageIcon","AssetSource","Tool","SanityTool","definePlugin","FormBuilderTool","ToolOptionsProvider","mediaTag","MediaToolOptions","plugin","icon","name","title","mediaAssetSource","component","tool","__internalApplicationType","media","options","studio","components","layout","props","renderDefault","form","file","assetSources","prev","image","schema","types","tools","SanityClient","groq","nanoid","TAG_DOCUMENT_NAME","Tag","ApplyMediaTagsOptions","client","assetId","mediaTags","createTagsOnUpload","pendingByAsset","Map","Promise","applyMediaTags","options","chain","get","resolve","then","doApplyMediaTags","cleanup","catch","finally","delete","set","length","resolvedTags","all","map","tagName","existingTag","fetch","newTag","create","_type","name","current","validTags","filter","tag","existing","tagIds","useCdn","existingIds","Set","tagReferences","has","_id","_key","_ref","const","_weak","patch","setIfMissing","opt","append","commit","useToast","useEffect","useRef","InputProps","useToolOptions","useVersionedClient","applyMediaTags","AssetValue","_type","asset","_ref","AutoTagInputProps","mediaTags","AutoTagInput","props","$","_c","renderDefault","schemaType","value","mediaTagsProp","toast","options","client","createTagsOnUpload","prevAssetRef","undefined","isInitialMount","currentAssetRef","t0","t1","current","previousRef","length","assetId","catch","err","console","error","label","push","closable","status","title","join","t2","t3","FieldDefinitionBase","FileDefinition","ImageDefinition","WidenInitialValue","WidenValidation","AutoTagInput","ImageMediaFieldConfig","Omit","name","mediaTags","options","FileMediaFieldConfig","ImageMediaFieldResult","components","input","FileMediaFieldResult","mediaField","config","rest","Record"],"sources":["../src/hooks/useKeyPress.ts","../src/contexts/AssetSourceDispatchContext.tsx","../src/hooks/useVersionedClient.ts","../src/styled/GlobalStyles/index.tsx","../src/hooks/useTypedSelector.ts","../src/config/orders.ts","../src/config/searchFacets.ts","../src/constants.ts","../src/operators/debugThrottle.ts","../src/utils/constructFilter.ts","../src/operators/checkTagName.ts","../src/utils/getTagSelectOptions.ts","../src/modules/assets/actions.ts","../src/modules/dialog/actions.ts","../src/modules/tags/index.ts","../src/modules/search/index.ts","../src/modules/uploads/actions.ts","../src/modules/assets/index.ts","../src/modules/dialog/index.ts","../src/components/ButtonViewGroup/index.tsx","../src/hooks/usePortalPopoverProps.ts","../src/components/OrderSelect/index.tsx","../src/components/Progress/index.tsx","../src/utils/getSchemeColor.ts","../src/components/SearchFacet/index.tsx","../src/components/TextInputNumber/index.tsx","../src/components/SearchFacetNumber/index.tsx","../src/components/SearchFacetSelect/index.tsx","../src/components/SearchFacetString/index.tsx","../src/styled/react-select/single.tsx","../src/components/SearchFacetTags/index.tsx","../src/components/SearchFacets/index.tsx","../src/contexts/ToolOptionsContext.tsx","../src/components/SearchFacetsControl/index.tsx","../src/components/TagIcon/index.tsx","../src/components/TextInputSearch/index.tsx","../src/components/Controls/index.tsx","../src/modules/debug/index.ts","../src/components/DebugControls/index.tsx","../src/formSchema/index.ts","../src/utils/getUniqueDocuments.ts","../src/utils/imageDprUrl.ts","../src/utils/sanitizeFormData.ts","../src/utils/typeGuards.ts","../src/utils/zodFormResolver.ts","../src/utils/getAssetResolution.ts","../src/components/ButtonAssetCopy/index.tsx","../src/components/AssetMetadata/index.tsx","../src/components/Dialog/index.tsx","../src/components/DocumentList/index.tsx","../src/components/FileIcon/index.tsx","../src/components/FileAssetPreview/index.tsx","../src/components/FormSubmitButton/index.tsx","../src/components/Image/index.tsx","../src/styled/react-select/creatable.tsx","../src/components/FormFieldInputLabel/index.tsx","../src/components/FormFieldInputTags/index.tsx","../src/components/FormFieldInputText/index.tsx","../src/components/FormFieldInputTextarea/index.tsx","../src/components/DialogAssetEdit/Details.tsx","../src/components/DialogAssetEdit/index.tsx","../src/components/DialogConfirm/index.tsx","../src/components/DialogSearchFacets/index.tsx","../src/components/DialogTagCreate/index.tsx","../src/components/DialogTagEdit/index.tsx","../src/components/Tag/index.tsx","../src/components/TagsVirtualized/index.tsx","../src/components/TagViewHeader/index.tsx","../src/components/TagView/index.tsx","../src/components/DialogTags/index.tsx","../src/components/Dialogs/index.tsx","../src/contexts/DropzoneDispatchContext.tsx","../src/components/Header/index.tsx","../src/hooks/useBreakpointIndex.ts","../src/modules/selectors.ts","../src/components/CardAsset/index.tsx","../src/utils/generatePreviewBlobUrl.ts","../src/utils/withMaxConcurrency.ts","../src/utils/uploadSanityAsset.ts","../src/modules/uploads/index.ts","../src/components/CardUpload/index.tsx","../src/components/AssetGridVirtualized/index.tsx","../src/components/TableHeaderItem/index.tsx","../src/components/TableHeader/index.tsx","../src/components/TableRowAsset/index.tsx","../src/components/TableRowUpload/index.tsx","../src/components/AssetTableVirtualized/index.tsx","../src/components/Items/index.tsx","../src/components/Notifications/index.tsx","../src/components/PickedBar/index.tsx","../src/modules/notifications/index.ts","../src/modules/selected/index.ts","../src/modules/index.ts","../src/utils/getDocumentAssetIds.ts","../src/utils/isSupportedAssetType.ts","../src/components/ReduxProvider/index.tsx","../src/components/TagsPanel/index.tsx","../src/components/UploadDropzone/index.tsx","../src/components/Browser/useBrowserInit.ts","../src/components/Browser/index.tsx","../src/components/FormBuilderTool/index.tsx","../src/components/Tool/index.tsx","../src/schemas/tag.ts","../src/plugin.tsx","../src/utils/applyMediaTags.ts","../src/components/AutoTagInputWrapper/index.tsx","../src/utils/mediaField.ts"],"sourcesContent":["import {isHotkey} from 'is-hotkey-esm'\nimport {type RefObject, useCallback, useEffect, useRef} from 'react'\n\nconst useKeyPress = (hotkey: string, onPress?: () => void): RefObject<boolean> => {\n  const keyPressed = useRef(false)\n\n  // If pressed key is our target key then set to true\n  const downHandler = useCallback(\n    (e: KeyboardEvent) => {\n      if (isHotkey(hotkey, e)) {\n        keyPressed.current = true\n        if (onPress) {\n          onPress()\n        }\n      }\n    },\n    [hotkey, onPress],\n  )\n\n  // If released key is our target key then set to false\n  const upHandler = useCallback(() => {\n    keyPressed.current = false\n  }, [])\n\n  // Add event listeners\n  useEffect(() => {\n    window.addEventListener('keydown', downHandler)\n    window.addEventListener('keyup', upHandler)\n    // Remove event listeners on cleanup\n    return () => {\n      window.removeEventListener('keydown', downHandler)\n      window.removeEventListener('keyup', upHandler)\n    }\n  }, [downHandler, upHandler])\n\n  return keyPressed\n}\n\nexport default useKeyPress\n","import {type ReactNode, createContext, useContext, useMemo} from 'react'\nimport type {AssetSourceComponentProps} from 'sanity'\n\ntype ContextProps = {\n  onSelect?: AssetSourceComponentProps['onSelect']\n}\n\ntype Props = {\n  children: ReactNode\n  onSelect?: AssetSourceComponentProps['onSelect']\n}\n\nconst AssetSourceDispatchContext = createContext<ContextProps | undefined>(undefined)\n\nexport const AssetBrowserDispatchProvider = (props: Props) => {\n  const {children, onSelect} = props\n\n  const contextValue: ContextProps = useMemo(\n    () => ({\n      onSelect,\n    }),\n    [onSelect],\n  )\n\n  return (\n    <AssetSourceDispatchContext.Provider value={contextValue}>\n      {children}\n    </AssetSourceDispatchContext.Provider>\n  )\n}\n\nexport const useAssetSourceActions = () => {\n  const context = useContext(AssetSourceDispatchContext)\n  if (context === undefined) {\n    throw new Error('useAssetSourceActions must be used within an AssetSourceDispatchProvider')\n  }\n  return context\n}\n","import type {SanityClient} from '@sanity/client'\nimport {useClient} from 'sanity'\n\nconst useVersionedClient = (): SanityClient => useClient({apiVersion: '2025-10-02'})\n\nexport default useVersionedClient\n","import {createGlobalStyle, css} from 'styled-components'\n\nconst customScrollbar = css`\n  ::-webkit-scrollbar {\n    width: 14px;\n  }\n\n  ::-webkit-scrollbar-thumb {\n    border-radius: 10px;\n    border: 4px solid rgba(0, 0, 0, 0);\n    background: var(--card-border-color);\n    background-clip: padding-box;\n\n    &:hover {\n      background: var(--card-muted-fg-color);\n      background-clip: padding-box;\n    }\n  }\n`\n\nconst GlobalStyle = createGlobalStyle`\n  .media__custom-scrollbar {\n    ${customScrollbar}\n  }\n\n  // @sanity/ui overrides\n\n  // Custom scrollbar on Box (used in Dialogs)\n  div[data-ui=\"Box\"] {\n    ${customScrollbar}\n  }\n\n  // Dialog background color\n  div[data-ui=\"Dialog\"] {\n    background-color: rgba(15, 17, 18, 0.9);\n  }\n\n`\n\nexport default GlobalStyle\n","import {type TypedUseSelectorHook, useSelector} from 'react-redux'\n\nimport type {RootReducerState} from '../modules/types'\n\nconst useTypedSelector: TypedUseSelectorHook<RootReducerState> = useSelector\n\nexport default useTypedSelector\n","import type {OrderDirection} from '../types'\n\nconst ORDER_DICTIONARY: Record<string, {asc: string; desc: string}> = {\n  _createdAt: {\n    asc: 'Last created: Oldest first',\n    desc: 'Last created: Newest first',\n  },\n  _updatedAt: {\n    asc: 'Last updated: Oldest first',\n    desc: 'Last updated: Newest first',\n  },\n  mimeType: {\n    asc: 'MIME type: A to Z',\n    desc: 'MIME type: Z to A',\n  },\n  originalFilename: {\n    asc: 'File name: A to Z',\n    desc: 'File name: Z to A',\n  },\n  size: {\n    asc: 'File size: Smallest first',\n    desc: 'File size: Largest first',\n  },\n}\n\nexport const getOrderTitle = (field: string, direction: OrderDirection): string => {\n  return ORDER_DICTIONARY[field]![direction]\n}\n","import groq from 'groq'\n\nimport type {\n  SearchFacetDivider,\n  SearchFacetInputProps,\n  SearchFacetName,\n  SearchFacetOperators,\n} from '../types'\n\nexport const divider: SearchFacetDivider = {type: 'divider'}\n\nexport const inputs: Record<SearchFacetName, SearchFacetInputProps> = {\n  altText: {\n    assetTypes: ['file', 'image'],\n    field: 'altText',\n    name: 'altText',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n    title: 'Alt text',\n    type: 'string',\n    value: '',\n  },\n  creditLine: {\n    assetTypes: ['file', 'image'],\n    field: 'creditLine',\n    name: 'creditLine',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n    title: 'Credit',\n    type: 'string',\n    value: '',\n  },\n  description: {\n    assetTypes: ['file', 'image'],\n    field: 'description',\n    name: 'description',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n    title: 'Description',\n    type: 'string',\n    value: '',\n  },\n  fileName: {\n    assetTypes: ['file', 'image'],\n    field: 'originalFilename',\n    name: 'filename',\n    operatorType: 'includes',\n    operatorTypes: ['includes', 'doesNotInclude'],\n    title: 'File name',\n    type: 'string',\n    value: '',\n  },\n  height: {\n    assetTypes: ['image'],\n    field: 'metadata.dimensions.height',\n    name: 'height',\n    operatorType: 'greaterThan',\n    operatorTypes: [\n      'greaterThan',\n      'greaterThanOrEqualTo',\n      'lessThan',\n      'lessThanOrEqualTo',\n      null,\n      'equalTo',\n    ],\n    title: 'Height',\n    type: 'number',\n    value: 400,\n  },\n  inCurrentDocument: {\n    assetTypes: ['file', 'image'],\n    name: 'inCurrentDocument',\n    operatorType: 'is',\n    options: [\n      {\n        name: 'true',\n        title: 'True',\n        value: groq`_id in $documentAssetIds`,\n      },\n      {\n        name: 'false',\n        title: 'False',\n        value: groq`!(_id in $documentAssetIds)`,\n      },\n    ],\n    selectOnly: true,\n    title: 'In use in current document',\n    type: 'select',\n    value: 'true',\n  },\n  inUse: {\n    assetTypes: ['file', 'image'],\n    name: 'inUse',\n    operatorType: 'is',\n    options: [\n      {\n        name: 'true',\n        title: 'True',\n        value: groq`count(*[references(^._id)]) > 0`,\n      },\n      {\n        name: 'false',\n        title: 'False',\n        value: groq`count(*[references(^._id)]) == 0`,\n      },\n    ],\n    title: 'In use',\n    type: 'select',\n    value: 'true',\n  },\n  isOpaque: {\n    assetTypes: ['image'],\n    field: 'metadata.isOpaque',\n    name: 'isOpaque',\n    operatorType: 'equalTo',\n    options: [\n      {\n        name: 'true',\n        title: 'True',\n        value: `false`,\n      },\n      {\n        name: 'false',\n        title: 'False',\n        value: `true`,\n      },\n    ],\n    title: 'Has transparency',\n    type: 'select',\n    value: 'true',\n  },\n  orientation: {\n    assetTypes: ['image'],\n    name: 'orientation',\n    operatorType: 'is',\n    operatorTypes: ['is', 'isNot'],\n    options: [\n      {\n        name: 'portrait',\n        title: 'Portrait',\n        value: 'metadata.dimensions.aspectRatio < 1',\n      },\n      {\n        name: 'landscape',\n        title: 'Landscape',\n        value: 'metadata.dimensions.aspectRatio > 1',\n      },\n      {\n        name: 'square',\n        title: 'Square',\n        value: 'metadata.dimensions.aspectRatio == 1',\n      },\n    ],\n    title: 'Orientation',\n    type: 'select',\n    value: 'portrait',\n  },\n  size: {\n    assetTypes: ['file', 'image'],\n    field: 'size',\n    modifier: 'kb',\n    modifiers: [\n      {\n        name: 'kb',\n        title: 'KB',\n        fieldModifier: (fieldName) => `round(${fieldName} / 1000)`,\n      },\n      {\n        name: 'mb',\n        title: 'MB',\n        fieldModifier: (fieldName) => `round(${fieldName} / 1000000)`,\n      },\n    ],\n    name: 'size',\n    operatorType: 'greaterThan',\n    operatorTypes: [\n      'greaterThan',\n      'greaterThanOrEqualTo',\n      'lessThan',\n      'lessThanOrEqualTo',\n      null,\n      'equalTo',\n    ],\n    title: 'File size',\n    type: 'number',\n    value: 0,\n  },\n  tag: {\n    assetTypes: ['file', 'image'],\n    field: 'opt.media.tags',\n    name: 'tag',\n    operatorType: 'references',\n    operatorTypes: ['references', 'doesNotReference', null, 'empty', 'notEmpty'],\n    title: 'Tags',\n    type: 'searchable',\n  },\n  title: {\n    assetTypes: ['file', 'image'],\n    field: 'title',\n    name: 'title',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n    title: 'Title',\n    type: 'string',\n    value: '',\n  },\n  type: {\n    assetTypes: ['file', 'image'],\n    name: 'type',\n    operatorType: 'is',\n    operatorTypes: ['is', 'isNot'],\n    options: [\n      {\n        name: 'image',\n        title: 'Image',\n        value: 'mimeType match \"image*\"',\n      },\n      {\n        name: 'video',\n        title: 'Video',\n        value: 'mimeType match \"video*\"',\n      },\n      {\n        name: 'audio',\n        title: 'Audio',\n        value: 'mimeType match \"audio*\"',\n      },\n      {\n        name: 'pdf',\n        title: 'PDF',\n        value: 'mimeType == \"application/pdf\"',\n      },\n    ],\n    title: 'File type',\n    type: 'select',\n    value: 'image',\n  },\n  width: {\n    assetTypes: ['image'],\n    field: 'metadata.dimensions.width',\n    name: 'width',\n    operatorType: 'greaterThan',\n    operatorTypes: [\n      'greaterThan',\n      'greaterThanOrEqualTo',\n      'lessThan',\n      'lessThanOrEqualTo',\n      null,\n      'equalTo',\n    ],\n    title: 'Width',\n    type: 'number',\n    value: 400,\n  },\n}\n\nexport const operators: SearchFacetOperators = {\n  doesNotInclude: {\n    fn: (value, field) => (value ? `!(${field} match '*${value}*')` : undefined),\n    label: 'does not include',\n  },\n  doesNotReference: {\n    fn: (value, _field) => (value ? `!references('${value}')` : undefined),\n    label: 'does not include',\n  },\n  empty: {\n    fn: (_value, field) => `!defined(${field})`,\n    hideInput: true,\n    label: 'is empty',\n  },\n  equalTo: {\n    fn: (value, field) => (value ? `${field} == ${value}` : undefined),\n    label: 'is equal to',\n  },\n  greaterThan: {\n    fn: (value, field) => (value ? `${field} > ${value}` : undefined),\n    label: 'is greater than',\n  },\n  greaterThanOrEqualTo: {\n    fn: (value, field) => (value ? `${field} >= ${value}` : undefined),\n    label: 'is greater than or equal to',\n  },\n  includes: {\n    fn: (value, field) => (value ? `${field} match '*${value}*'` : undefined),\n    label: 'includes',\n  },\n  is: {\n    fn: (value, _field) => `${value}`,\n    label: 'is',\n  },\n  isNot: {\n    fn: (value, _field) => `!(${value})`,\n    label: 'is not',\n  },\n  lessThan: {\n    fn: (value, field) => (value ? `${field} < ${value}` : undefined),\n    label: 'is less than',\n  },\n  lessThanOrEqualTo: {\n    fn: (value, field) => (value ? `${field} <= ${value}` : undefined),\n    label: 'is less than or equal to',\n  },\n  notEmpty: {\n    fn: (_value, field) => `defined(${field})`,\n    hideInput: true,\n    label: 'is not empty',\n  },\n  references: {\n    fn: (value, _field) => (value ? `references('${value}')` : undefined),\n    label: 'includes',\n  },\n}\n","import type {AssetSourceComponentProps} from 'sanity'\n\nimport {divider, inputs} from './config/searchFacets'\nimport type {\n  SearchFacetInputProps,\n  SearchFacetDivider,\n  SearchFacetGroup,\n  OrderDirection,\n} from './types'\n\nexport const SUPPORTED_ASSET_TYPES = [\n  'file',\n  'image',\n] as const satisfies AssetSourceComponentProps['assetType'][]\n\n// Sort order dropdown options\n// null values are represented as menu dividers\nexport const ORDER_OPTIONS: ({direction: OrderDirection; field: string} | null)[] = [\n  {\n    direction: 'desc',\n    field: '_createdAt',\n  },\n  {\n    direction: 'asc',\n    field: '_createdAt',\n  },\n  // Divider\n  null,\n  {\n    direction: 'desc',\n    field: '_updatedAt',\n  },\n  {\n    direction: 'asc' as OrderDirection,\n    field: '_updatedAt',\n  },\n  // Divider\n  null,\n  {\n    direction: 'asc',\n    field: 'originalFilename',\n  },\n  {\n    direction: 'desc',\n    field: 'originalFilename',\n  },\n  // Divider\n  null,\n  {\n    direction: 'desc',\n    field: 'size',\n  },\n  {\n    direction: 'asc',\n    field: 'size',\n  },\n]\n\nexport const FACETS: (SearchFacetDivider | SearchFacetGroup | SearchFacetInputProps)[] = [\n  inputs.tag,\n  divider,\n  inputs.inUse,\n  inputs.inCurrentDocument,\n  divider,\n  inputs.title,\n  inputs.altText,\n  inputs.creditLine,\n  inputs.description,\n  divider,\n  inputs.isOpaque,\n  divider,\n  inputs.fileName,\n  inputs.size,\n  inputs.type,\n  divider,\n  inputs.orientation,\n  inputs.width,\n  inputs.height,\n]\n\nexport const GRID_TEMPLATE_COLUMNS = {\n  SMALL: '3rem 100px auto 1.5rem',\n  LARGE: '3rem 100px auto 5.5rem 5.5rem 3.5rem 8.5rem 4.75rem 2rem',\n}\nexport const PANEL_HEIGHT = 32 // px\nexport const TAG_DOCUMENT_NAME = 'media.tag'\nexport const TAGS_PANEL_WIDTH = 250 // px\n","import {iif, type Observable, of, throwError} from 'rxjs'\nimport {delay, mergeMap} from 'rxjs/operators'\n\nconst debugThrottle = (throttled?: boolean) => {\n  return function <T>(source: Observable<T>): Observable<T> {\n    return iif(\n      () => !!throttled,\n      source.pipe(\n        delay(3000),\n        mergeMap((v) => {\n          if (Math.random() > 0.5) {\n            return throwError({\n              message: 'Test error',\n              statusCode: 500,\n            })\n          }\n          return of(v)\n        }),\n      ),\n      source,\n    )\n  }\n}\n\nexport default debugThrottle\n","import groq from 'groq'\n\nimport {operators} from '../config/searchFacets'\nimport type {AssetType, SearchFacetInputProps} from '../types'\n\nconst constructFilter = ({\n  assetTypes,\n  searchFacets,\n  searchQuery,\n}: {\n  assetTypes: AssetType[]\n  searchFacets: SearchFacetInputProps[]\n  searchQuery?: string\n}): string => {\n  // Fetch asset types depending on current context.\n  // Either limit to a specific type (if being used as a custom asset source) or fetch both files and images (if being used as a tool)\n  // Sanity will crash if you try and insert incompatible asset types into fields!\n  const documentAssetTypes = assetTypes.map((type) => `sanity.${type}Asset`)\n\n  const baseFilter = groq`\n    _type in ${JSON.stringify(documentAssetTypes)} && !(_id in path(\"drafts.**\"))\n  `\n\n  const searchFacetFragments = searchFacets.reduce((acc: string[], facet) => {\n    if (facet.type === 'number') {\n      const {field, modifier, modifiers, operatorType, value} = facet\n      const operator = operators[operatorType]\n\n      // Get current modifier\n      const currentModifier = modifiers?.find((m) => m.name === modifier)\n\n      // Apply field modifier function (if present)\n      const facetField = currentModifier?.fieldModifier\n        ? currentModifier.fieldModifier(field)\n        : field\n\n      const fragment = operator.fn(value, facetField)\n      if (fragment) {\n        acc.push(fragment)\n      }\n    }\n\n    if (facet.type === 'searchable') {\n      const {field, operatorType, value} = facet\n      const operator = operators[operatorType]\n\n      const fragment = operator.fn(value?.value, field)\n      if (fragment) {\n        acc.push(fragment)\n      }\n    }\n\n    if (facet.type === 'select') {\n      const {field, operatorType, options, value} = facet\n      const operator = operators[operatorType]\n\n      const currentOptionValue = options?.find((l) => l.name === value)?.value\n\n      const fragment = operator.fn(currentOptionValue, field)\n      if (fragment) {\n        acc.push(fragment)\n      }\n    }\n\n    if (facet.type === 'string') {\n      const {field, operatorType, value} = facet\n      const operator = operators[operatorType]\n\n      const fragment = operator.fn(value, field)\n      if (fragment) {\n        acc.push(fragment)\n      }\n    }\n\n    return acc\n  }, [])\n\n  // Join separate filter fragments\n  const constructedQuery = [\n    // Base filter\n    baseFilter,\n    // Search query (if present)\n    // NOTE: Currently this only searches direct fields on sanity.fileAsset/sanity.imageAsset and NOT referenced tags\n    // It's possible to add this by adding the following line to the searchQuery, but it's quite slow\n    // references(*[_type == \"media.tag\" && name.current == \"${searchQuery.trim()}\"]._id)\n    ...(searchQuery\n      ? [\n          groq`[_id, altText, assetId, creditLine, description, originalFilename, title, url] match '*${searchQuery.trim()}*'`,\n        ]\n      : []),\n    // Search facets\n    ...searchFacetFragments,\n  ].join(' && ')\n\n  return constructedQuery\n}\n\nexport default constructFilter\n","import type {SanityClient} from '@sanity/client'\nimport groq from 'groq'\nimport {from, Observable, of, throwError} from 'rxjs'\nimport {mergeMap} from 'rxjs/operators'\n\nimport {TAG_DOCUMENT_NAME} from '../constants'\nimport type {HttpError} from '../types'\n\nconst checkTagName = (client: SanityClient, name: string) => {\n  return function <T>(source: Observable<T>): Observable<boolean> {\n    return source.pipe(\n      mergeMap(() => {\n        return from(\n          client.fetch(groq`count(*[_type == \"${TAG_DOCUMENT_NAME}\" && name.current == $name])`, {\n            name,\n          }),\n        ) as Observable<number>\n      }),\n      mergeMap((existingTagCount: number) => {\n        if (existingTagCount > 0) {\n          return throwError({\n            message: 'Tag already exists',\n            statusCode: 409,\n          } satisfies HttpError)\n        }\n\n        return of(true)\n      }),\n    )\n  }\n}\n\nexport default checkTagName\n","import type {TagSelectOption, TagItem} from '../types'\n\nconst getTagSelectOptions = (tags: TagItem[]): TagSelectOption[] => {\n  return tags.reduce((acc: TagSelectOption[], val) => {\n    const tag = val?.tag\n    if (tag) {\n      acc.push({\n        label: tag?.name?.current,\n        value: tag?._id,\n      })\n    }\n    return acc\n  }, [])\n}\n\nexport default getTagSelectOptions\n","import {createAction} from '@reduxjs/toolkit'\n\nimport type {AssetItem, HttpError, Tag} from '../../types'\n\nexport const ASSETS_ACTIONS = {\n  tagsAddComplete: createAction(\n    'actions/tagsAddComplete',\n    function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n      return {payload: {assets, tag}}\n    },\n  ),\n  tagsAddError: createAction(\n    'actions/tagsAddError',\n    function prepare({assets, error, tag}: {assets: AssetItem[]; error: HttpError; tag: Tag}) {\n      return {payload: {assets, error, tag}}\n    },\n  ),\n  tagsAddRequest: createAction(\n    'actions/tagsAddRequest',\n    function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n      return {payload: {assets, tag}}\n    },\n  ),\n  tagsRemoveComplete: createAction(\n    'actions/tagsRemoveComplete',\n    function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n      return {payload: {assets, tag}}\n    },\n  ),\n  tagsRemoveError: createAction(\n    'actions/tagsRemoveError',\n    function prepare({assets, error, tag}: {assets: AssetItem[]; error: HttpError; tag: Tag}) {\n      return {payload: {assets, error, tag}}\n    },\n  ),\n  tagsRemoveRequest: createAction(\n    'actions/tagsRemoveRequest',\n    function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n      return {payload: {assets, tag}}\n    },\n  ),\n}\n","import {createAction} from '@reduxjs/toolkit'\n\nexport const DIALOG_ACTIONS = {\n  showTagCreate: createAction('dialog/showTagCreate'),\n  showTagEdit: createAction('dialog/showTagEdit', function prepare({tagId}: {tagId: string}) {\n    return {\n      payload: {tagId},\n    }\n  }),\n}\n","import {createSelector, createSlice, isAnyOf, type PayloadAction} from '@reduxjs/toolkit'\nimport type {ClientError, Transaction} from '@sanity/client'\nimport groq from 'groq'\nimport type {Selector} from 'react-redux'\nimport {ofType} from 'redux-observable'\nimport {from, Observable, of} from 'rxjs'\nimport {bufferTime, catchError, filter, mergeMap, switchMap, withLatestFrom} from 'rxjs/operators'\n\nimport {TAG_DOCUMENT_NAME} from '../../constants'\nimport checkTagName from '../../operators/checkTagName'\nimport debugThrottle from '../../operators/debugThrottle'\nimport type {Asset, HttpError, MyEpic, TagSelectOption, Tag, TagItem} from '../../types'\nimport getTagSelectOptions from '../../utils/getTagSelectOptions'\nimport {ASSETS_ACTIONS} from '../assets/actions'\nimport {DIALOG_ACTIONS} from '../dialog/actions'\nimport type {RootReducerState} from '../types'\n\ntype TagsReducerState = {\n  allIds: string[]\n  byIds: Record<string, TagItem>\n  creating: boolean\n  creatingError?: HttpError\n  fetchCount: number\n  fetching: boolean\n  fetchingError?: HttpError\n  // totalCount: number\n  panelVisible: boolean\n}\n\nconst initialState = {\n  allIds: [],\n  byIds: {},\n  creating: false,\n  creatingError: undefined,\n  fetchCount: -1,\n  fetching: false,\n  fetchingError: undefined,\n  panelVisible: true,\n} as TagsReducerState\n\nconst tagsSlice = createSlice({\n  name: 'tags',\n  initialState,\n  extraReducers: (builder) => {\n    builder\n      .addCase(DIALOG_ACTIONS.showTagCreate, (state) => {\n        delete state.creatingError\n      })\n      .addCase(DIALOG_ACTIONS.showTagEdit, (state, action) => {\n        const {tagId} = action.payload\n        delete state.byIds[tagId]!.error\n      })\n      .addMatcher(\n        isAnyOf(\n          ASSETS_ACTIONS.tagsAddComplete,\n          ASSETS_ACTIONS.tagsAddError,\n          ASSETS_ACTIONS.tagsRemoveComplete,\n          ASSETS_ACTIONS.tagsRemoveError,\n        ),\n        (state, action) => {\n          const {tag} = action.payload\n          state.byIds[tag._id]!.updating = false\n        },\n      )\n      .addMatcher(\n        isAnyOf(ASSETS_ACTIONS.tagsAddRequest, ASSETS_ACTIONS.tagsRemoveRequest),\n        (state, action) => {\n          const {tag} = action.payload\n          state.byIds[tag._id]!.updating = true\n        },\n      )\n  },\n  reducers: {\n    createComplete(state, action: PayloadAction<{assetId?: string; tag: Tag}>) {\n      const {tag} = action.payload\n      state.creating = false\n      if (!state.allIds.includes(tag._id)) {\n        state.allIds.push(tag._id)\n      }\n      state.byIds[tag._id] = {\n        _type: 'tag',\n        picked: false,\n        tag,\n        updating: false,\n      }\n    },\n    createError(state, action: PayloadAction<{error: HttpError; name: string}>) {\n      state.creating = false\n      state.creatingError = action.payload.error\n    },\n    createRequest(state, _action: PayloadAction<{assetId?: string; name: string}>) {\n      state.creating = true\n      delete state.creatingError\n    },\n    deleteComplete(state, action: PayloadAction<{tagId: string}>) {\n      const {tagId} = action.payload\n      const deleteIndex = state.allIds.indexOf(tagId)\n      if (deleteIndex >= 0) {\n        state.allIds.splice(deleteIndex, 1)\n      }\n      delete state.byIds[tagId]\n    },\n    deleteError(state, action: PayloadAction<{error: HttpError; tag: Tag}>) {\n      const {error, tag} = action.payload\n\n      const tagId = tag?._id\n      state.byIds[tagId]!.error = error\n      state.byIds[tagId]!.updating = false\n    },\n    deleteRequest(state, action: PayloadAction<{tag: Tag}>) {\n      const tagId = action.payload?.tag?._id\n      state.byIds[tagId]!.picked = false\n      state.byIds[tagId]!.updating = true\n\n      Object.keys(state.byIds).forEach((key) => {\n        delete state.byIds[key]!.error\n      })\n    },\n    fetchComplete(state, action: PayloadAction<{tags: Tag[]}>) {\n      const {tags} = action.payload\n\n      tags?.forEach((tag) => {\n        state.allIds.push(tag._id)\n        state.byIds[tag._id] = {\n          _type: 'tag',\n          picked: false,\n          tag,\n          updating: false,\n        }\n      })\n\n      state.fetching = false\n      state.fetchCount = tags.length || 0\n      delete state.fetchingError\n    },\n    fetchError(state, action: PayloadAction<{error: HttpError}>) {\n      const {error} = action.payload\n      state.fetching = false\n      state.fetchingError = error\n    },\n    fetchRequest: {\n      reducer: (state, _action: PayloadAction<{query: string}>) => {\n        state.fetching = true\n        delete state.fetchingError\n      },\n      prepare: () => {\n        // Construct query\n        const query = groq`\n          {\n            \"items\": *[\n              _type == \"${TAG_DOCUMENT_NAME}\"\n              && !(_id in path(\"drafts.**\"))\n            ] {\n              _createdAt,\n              _updatedAt,\n              _id,\n              _rev,\n              _type,\n              name\n            } | order(name.current asc),\n          }\n        `\n        return {payload: {query}}\n      },\n    },\n    // Queue batch tag creation\n    listenerCreateQueue(_state, _action: PayloadAction<{tag: Tag}>) {\n      //\n    },\n    // Apply created tags (via sanity real-time events)\n    listenerCreateQueueComplete(state, action: PayloadAction<{tags: Tag[]}>) {\n      const {tags} = action.payload\n\n      tags?.forEach((tag) => {\n        state.byIds[tag._id] = {\n          _type: 'tag',\n          picked: false,\n          tag,\n          updating: false,\n        }\n        if (!state.allIds.includes(tag._id)) {\n          state.allIds.push(tag._id)\n        }\n      })\n    },\n    // Queue batch tag deletion\n    listenerDeleteQueue(_state, _action: PayloadAction<{tagId: string}>) {\n      //\n    },\n    // Apply deleted tags (via sanity real-time events)\n    listenerDeleteQueueComplete(state, action: PayloadAction<{tagIds: string[]}>) {\n      const {tagIds} = action.payload\n\n      tagIds?.forEach((tagId) => {\n        const deleteIndex = state.allIds.indexOf(tagId)\n        if (deleteIndex >= 0) {\n          state.allIds.splice(deleteIndex, 1)\n        }\n        delete state.byIds[tagId]\n      })\n    },\n    // Queue batch tag updates\n    listenerUpdateQueue(_state, _action: PayloadAction<{tag: Tag}>) {\n      //\n    },\n    // Apply updated tags (via sanity real-time events)\n    listenerUpdateQueueComplete(state, action: PayloadAction<{tags: Tag[]}>) {\n      const {tags} = action.payload\n\n      tags?.forEach((tag) => {\n        if (state.byIds[tag._id]) {\n          state.byIds[tag._id]!.tag = tag\n        }\n      })\n    },\n    // Set tag panel visibility\n    panelVisibleSet(state, action: PayloadAction<{panelVisible: boolean}>) {\n      const {panelVisible} = action.payload\n      state.panelVisible = panelVisible\n    },\n    // Sort all tags by name\n    sort(state) {\n      state.allIds.sort((a, b) => {\n        const tagA = state.byIds[a]!.tag.name.current\n        const tagB = state.byIds[b]!.tag.name.current\n\n        if (tagA < tagB) {\n          return -1\n        } else if (tagA > tagB) {\n          return 1\n        }\n        return 0\n      })\n    },\n    updateComplete(state, action: PayloadAction<{closeDialogId?: string; tag: Tag}>) {\n      const {tag} = action.payload\n      state.byIds[tag._id]!.tag = tag\n      state.byIds[tag._id]!.updating = false\n    },\n    updateError(state, action: PayloadAction<{tag: Tag; error: HttpError}>) {\n      const {error, tag} = action.payload\n      const tagId = tag?._id\n      state.byIds[tagId]!.error = error\n      state.byIds[tagId]!.updating = false\n    },\n    updateRequest(\n      state,\n      action: PayloadAction<{\n        closeDialogId?: string\n        formData: Record<string, any>\n        tag: Tag\n      }>,\n    ) {\n      const {tag} = action.payload\n      state.byIds[tag?._id]!.updating = true\n    },\n  },\n})\n\n// Epics\n\n// On tag create request:\n// - async check to see if tag already exists\n// - throw if tag already exists\n// - otherwise, create new tag\nexport const tagsCreateEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(tagsSlice.actions.createRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assetId, name} = action.payload\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        checkTagName(client, name),\n        mergeMap(() =>\n          client.observable.create({\n            _type: TAG_DOCUMENT_NAME,\n            name: {\n              _type: 'slug',\n              current: name,\n            },\n          }),\n        ),\n        mergeMap((result) => of(tagsSlice.actions.createComplete({assetId, tag: result as Tag}))),\n        catchError((error: ClientError) =>\n          of(\n            tagsSlice.actions.createError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              name,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// On tag delete request\n// - find referenced assets\n// - remove tag from referenced assets in a sanity transaction\nexport const tagsDeleteEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(tagsSlice.actions.deleteRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {tag} = action.payload\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Fetch assets which reference this tag\n        mergeMap(() =>\n          client.observable.fetch<Asset[]>(\n            groq`*[\n              _type in [\"sanity.fileAsset\", \"sanity.imageAsset\"]\n              && references(*[_type == \"media.tag\" && name.current == $tagName]._id)\n            ] {\n              _id,\n              _rev,\n              opt\n            }`,\n            {tagName: tag.name.current},\n          ),\n        ),\n        // Create transaction which remove tag references from all matched assets and delete tag\n        mergeMap((assets) => {\n          const patches = assets.map((asset) => ({\n            id: asset._id,\n            patch: {\n              // this will cause the transaction to fail if the document has been modified since it was fetched.\n              ifRevisionID: asset._rev,\n              unset: [`opt.media.tags[_ref == \"${tag._id}\"]`],\n            },\n          }))\n\n          const transaction: Transaction = patches.reduce(\n            (tx, patch) => tx.patch(patch.id, patch.patch),\n            client.transaction(),\n          )\n\n          transaction.delete(tag._id)\n\n          return from(transaction.commit())\n        }),\n        // Dispatch complete action\n        mergeMap(() => of(tagsSlice.actions.deleteComplete({tagId: tag._id}))),\n        catchError((error: ClientError) =>\n          of(\n            tagsSlice.actions.deleteError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              tag,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// Async fetch tags\nexport const tagsFetchEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(tagsSlice.actions.fetchRequest.match),\n    withLatestFrom(state$),\n    switchMap(([action, state]) => {\n      const {query} = action.payload\n\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Fetch tags\n        mergeMap(() =>\n          client.observable.fetch<{\n            items: Tag[]\n          }>(query),\n        ),\n        // Dispatch complete action\n        mergeMap((result) => {\n          const {items} = result\n          return of(tagsSlice.actions.fetchComplete({tags: items}))\n        }),\n        catchError((error: ClientError) =>\n          of(\n            tagsSlice.actions.fetchError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// TODO: merge all buffer epics\n// Buffer tag creation via sanity subscriber\nexport const tagsListenerCreateQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsSlice.actions.listenerCreateQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const tags = actions?.map((action) => action.payload.tag)\n      return of(tagsSlice.actions.listenerCreateQueueComplete({tags}))\n    }),\n  )\n\n// TODO: merge all buffer epics\n// Buffer tag deletion via sanity subscriber\nexport const tagsListenerDeleteQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsSlice.actions.listenerDeleteQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const tagIds = actions?.map((action) => action.payload.tagId)\n      return of(tagsSlice.actions.listenerDeleteQueueComplete({tagIds}))\n    }),\n  )\n\n// TODO: merge all buffer epics\n// Buffer tag update via sanity subscriber\nexport const tagsListenerUpdateQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsSlice.actions.listenerUpdateQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const tags = actions?.map((action) => action.payload.tag)\n      return of(tagsSlice.actions.listenerUpdateQueueComplete({tags}))\n    }),\n  )\n\n// On successful tag creation or updates:\n// - Re-sort all tags\nexport const tagsSortEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      tagsSlice.actions.listenerCreateQueueComplete.type,\n      tagsSlice.actions.listenerUpdateQueueComplete.type,\n    ),\n    bufferTime(1000),\n    filter((actions) => actions.length > 0),\n    mergeMap(() => of(tagsSlice.actions.sort())),\n  )\n\n// On tag update request\n// - check if tag name already exists\n// - throw if tag already exists\n// - otherwise, patch document\nexport const tagsUpdateEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(tagsSlice.actions.updateRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {closeDialogId, formData, tag} = action.payload\n\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Check if tag name is available, throw early if not\n        checkTagName(client, formData?.['name']?.current),\n        // Patch document (Update tag)\n        mergeMap(\n          () =>\n            from(\n              client\n                .patch(tag._id)\n                .set({name: {_type: 'slug', current: formData?.['name'].current}})\n                .commit(),\n            ) as Observable<Tag>,\n        ),\n        // Dispatch complete action\n        mergeMap((updatedTag: Tag) => {\n          return of(\n            tagsSlice.actions.updateComplete({\n              closeDialogId,\n              tag: updatedTag,\n            }),\n          )\n        }),\n        catchError((error: ClientError) =>\n          of(\n            tagsSlice.actions.updateError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              tag,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// Selectors\n\nconst selectTagsByIds = (state: RootReducerState) => state.tags.byIds\n\nconst selectTagsAllIds = (state: RootReducerState) => state.tags.allIds\n\nexport const selectTags: Selector<RootReducerState, TagItem[]> = createSelector(\n  [selectTagsByIds, selectTagsAllIds],\n  (byIds, allIds) => allIds.map((id) => byIds[id]!),\n)\n\nexport const selectTagById = createSelector(\n  [selectTagsByIds, (_state: RootReducerState, tagId: string) => tagId],\n  (byIds, tagId) => byIds[tagId],\n)\n\n// TODO: use createSelector\n// Map tag references to react-select options, skipping over items with no linked tags\nexport const selectTagSelectOptions =\n  (asset?: Asset) =>\n  (state: RootReducerState): TagSelectOption[] | null => {\n    const tags = asset?.opt?.media?.tags?.reduce((acc: TagItem[], v) => {\n      const tagItem = state.tags.byIds[v._ref]\n      if (tagItem?.tag) {\n        acc.push(tagItem)\n      }\n      return acc\n    }, [])\n\n    if (tags && tags?.length > 0) {\n      return getTagSelectOptions(tags)\n    }\n\n    return null\n  }\n\nexport const tagsActions = {...tagsSlice.actions}\n\nexport default tagsSlice.reducer\n","import {type PayloadAction, createSelector, createSlice} from '@reduxjs/toolkit'\nimport {uuid} from '@sanity/uuid'\nimport {EMPTY, of} from 'rxjs'\nimport {filter, mergeMap, withLatestFrom} from 'rxjs/operators'\n\nimport type {MyEpic, SearchFacetInputProps, SearchFacetOperatorType, WithId} from '../../types'\nimport {tagsActions} from '../tags'\nimport type {RootReducerState} from '../types'\n\n// TODO: don't store non-serializable data in the search store\n// (The main offender is `fieldModifier` which is currently a function)\n\ntype SearchState = {\n  facets: WithId<SearchFacetInputProps>[]\n  query: string\n}\n\nconst initialState = {\n  facets: [],\n  query: '',\n} as SearchState\n\nconst searchSlice = createSlice({\n  name: 'search',\n  initialState,\n  reducers: {\n    // Add search facet\n    facetsAdd(state, action: PayloadAction<{facet: SearchFacetInputProps}>) {\n      state.facets.push({...action.payload.facet, id: uuid()})\n    },\n    // Clear all search facets\n    facetsClear(state) {\n      state.facets = []\n    },\n    // Remove search facet by name\n    facetsRemoveByName(state, action: PayloadAction<{facetName: string}>) {\n      state.facets = state.facets.filter((facet) => facet.name !== action.payload.facetName)\n    },\n    // Remove search facet by name\n    facetsRemoveByTag(state, action: PayloadAction<{tagId: string}>) {\n      state.facets = state.facets.filter(\n        (facet) =>\n          !(\n            facet.name === 'tag' &&\n            facet.type === 'searchable' &&\n            (facet.operatorType === 'references' || facet.operatorType === 'doesNotReference') &&\n            facet.value?.value === action.payload.tagId\n          ),\n      )\n    },\n    // Remove search facet by name\n    facetsRemoveById(state, action: PayloadAction<{facetId: string}>) {\n      state.facets = state.facets.filter((facet) => facet.id !== action.payload.facetId)\n    },\n    // Update an existing search facet\n    facetsUpdate(\n      state,\n      action: PayloadAction<{\n        modifier?: string\n        name: string\n        operatorType?: SearchFacetOperatorType\n        value?: any // TODO: type correctly\n      }>,\n    ) {\n      const {modifier, name, operatorType, value} = action.payload\n\n      const facet = state.facets.find((f) => f.name === name)\n\n      if (!facet) {\n        return\n      }\n\n      if (facet.type === 'number' && modifier) {\n        facet.modifier = modifier\n      }\n      if (operatorType) {\n        facet.operatorType = operatorType\n      }\n      if (typeof value !== 'undefined') {\n        facet.value = value\n      }\n\n      state.facets = state.facets.filter((f) => f.name !== facet.name || f.id === facet.id)\n    },\n    // Update an existing search facet\n    facetsUpdateById(\n      state,\n      action: PayloadAction<{\n        modifier?: string\n        id: string\n        operatorType?: SearchFacetOperatorType\n        value?: any // TODO: type correctly\n      }>,\n    ) {\n      const {modifier, id, operatorType, value} = action.payload\n\n      state.facets.forEach((facet, index) => {\n        if (facet.id === id) {\n          if (facet.type === 'number' && modifier) {\n            facet.modifier = modifier\n          }\n          if (operatorType) {\n            facet.operatorType = operatorType\n          }\n          if (typeof value !== 'undefined') {\n            state.facets[index]!.value = value\n          }\n        }\n      })\n    },\n    // Update existing search query\n    querySet(state, action: PayloadAction<{searchQuery: string}>) {\n      state.query = action.payload?.searchQuery\n    },\n  },\n})\n\n// Epics\n\n// On tag update success -> update existing tag search facet (if present)\nexport const searchFacetTagUpdateEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(tagsActions.updateComplete.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {tag} = action.payload\n\n      const currentSearchFacetTag = state.search.facets?.find((facet) => facet.name === 'tag')\n      const tagItem = state.tags.byIds[tag._id]\n\n      if (currentSearchFacetTag?.type === 'searchable') {\n        if (currentSearchFacetTag.value?.value === tag._id) {\n          return of(\n            searchSlice.actions.facetsUpdate({\n              name: 'tag',\n              value: {\n                label: tagItem?.tag?.name?.current,\n                value: tagItem?.tag?._id,\n              },\n            }),\n          )\n        }\n      }\n\n      return EMPTY\n    }),\n  )\n\n// Selectors\nexport const selectIsSearchFacetTag = createSelector(\n  [\n    (state: RootReducerState) => state.search.facets,\n    (_state: RootReducerState, tagId: string) => tagId,\n  ],\n  (searchFacets, tagId) =>\n    searchFacets.some(\n      (facet) =>\n        facet.name === 'tag' &&\n        facet.type === 'searchable' &&\n        (facet.operatorType === 'references' || facet.operatorType === 'doesNotReference') &&\n        facet.value?.value === tagId,\n    ),\n)\n\nexport const searchActions = {...searchSlice.actions}\n\nexport default searchSlice.reducer\n","import {createAction} from '@reduxjs/toolkit'\nimport type {SanityAssetDocument, SanityImageAssetDocument} from '@sanity/client'\n\nexport const UPLOADS_ACTIONS = {\n  uploadComplete: createAction(\n    'uploads/uploadComplete',\n    function prepare({asset}: {asset: SanityAssetDocument | SanityImageAssetDocument}) {\n      return {\n        payload: {asset},\n      }\n    },\n  ),\n}\n","import {createSelector, createSlice, type PayloadAction} from '@reduxjs/toolkit'\nimport type {ClientError, Patch, Transaction} from '@sanity/client'\nimport groq from 'groq'\nimport {nanoid} from 'nanoid'\nimport type {Selector} from 'react-redux'\nimport {ofType} from 'redux-observable'\nimport {EMPTY, from, of} from 'rxjs'\nimport {\n  bufferTime,\n  catchError,\n  debounceTime,\n  filter,\n  mergeMap,\n  switchMap,\n  withLatestFrom,\n} from 'rxjs/operators'\n\nimport {getOrderTitle} from '../../config/orders'\nimport {ORDER_OPTIONS} from '../../constants'\nimport debugThrottle from '../../operators/debugThrottle'\nimport type {\n  Asset,\n  AssetItem,\n  AssetType,\n  BrowserView,\n  HttpError,\n  MyEpic,\n  Order,\n  OrderDirection,\n  Tag,\n} from '../../types'\nimport constructFilter from '../../utils/constructFilter'\nimport {searchActions} from '../search'\nimport type {RootReducerState} from '../types'\nimport {UPLOADS_ACTIONS} from '../uploads/actions'\nimport {ASSETS_ACTIONS} from './actions'\ntype ItemError = {\n  description: string\n  id: string\n  referencingIDs: string[]\n  type: string // 'documentHasExistingReferencesError'\n}\n\nexport type AssetsReducerState = {\n  allIds: string[]\n  assetTypes: AssetType[]\n  byIds: Record<string, AssetItem>\n  fetchCount: number\n  fetching: boolean\n  fetchingError?: HttpError\n  lastPicked?: string\n  order: Order\n  pageIndex: number\n  pageSize: number\n  view: BrowserView\n  // totalCount: number\n}\n\nconst defaultOrder = ORDER_OPTIONS[0] as {\n  direction: OrderDirection\n  field: string\n}\n\n/**\n * NOTE:\n * `fetchCount` returns the number of items retrieved in the most recent fetch.\n * This is a temporary workaround to be able to determine when there are no more items to retrieve.\n * Typically this would be done by deriving the total number of assets upfront, but currently such\n * queries in GROQ aren't fast enough to use on large datasets (1000s of entries).\n *\n * TODO:\n * When the query engine has been improved and above queries are faster, remove all instances of\n * of `fetchCount` and reinstate `totalCount` across the board.\n */\n\nexport const initialState = {\n  allIds: [],\n  assetTypes: [],\n  byIds: {},\n  fetchCount: -1,\n  fetching: false,\n  fetchingError: undefined,\n  lastPicked: undefined,\n  order: {\n    direction: defaultOrder.direction,\n    field: defaultOrder.field,\n    title: getOrderTitle(defaultOrder.field, defaultOrder.direction),\n  },\n  pageIndex: 0,\n  pageSize: 100,\n  // totalCount: -1,\n  view: 'grid',\n} as AssetsReducerState\n\nconst assetsSlice = createSlice({\n  name: 'assets',\n  initialState,\n  extraReducers: (builder) => {\n    builder //\n      .addCase(UPLOADS_ACTIONS.uploadComplete, (state, action) => {\n        const {asset} = action.payload\n\n        state.byIds[asset._id] = {\n          _type: 'asset',\n          asset: asset as Asset,\n          picked: false,\n          updating: false,\n        }\n      })\n      .addCase(ASSETS_ACTIONS.tagsAddComplete, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = false\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsAddError, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = false\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsAddRequest, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = true\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsRemoveComplete, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = false\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsRemoveError, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = false\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsRemoveRequest, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = true\n        })\n      })\n  },\n  reducers: {\n    // Clear asset order\n    clear(state) {\n      state.allIds = []\n    },\n    // Remove assets and update page index\n    deleteComplete(state, action: PayloadAction<{assetIds: string[]}>) {\n      const {assetIds} = action.payload\n\n      assetIds?.forEach((id) => {\n        const deleteIndex = state.allIds.indexOf(id)\n        if (deleteIndex >= 0) {\n          state.allIds.splice(deleteIndex, 1)\n        }\n        delete state.byIds[id]\n      })\n\n      state.pageIndex = Math.floor(state.allIds.length / state.pageSize) - 1\n    },\n    deleteError(state, action: PayloadAction<{assetIds: string[]; error: ClientError}>) {\n      const {assetIds, error} = action.payload\n      const itemErrors: ItemError[] = error?.response?.body?.error?.items?.map(\n        (item: any) => item.error,\n      )\n\n      assetIds?.forEach((id) => {\n        state.byIds[id]!.updating = false\n      })\n      itemErrors?.forEach((item) => {\n        state.byIds[item.id]!.error = item.description\n      })\n    },\n    deleteRequest(state, action: PayloadAction<{assets: Asset[]; closeDialogId?: string}>) {\n      const {assets} = action.payload\n      assets.forEach((asset) => {\n        state.byIds[asset?._id]!.updating = true\n      })\n\n      Object.keys(state.byIds).forEach((key) => {\n        delete state.byIds[key]!.error\n      })\n    },\n    fetchComplete(state, action: PayloadAction<{assets: Asset[]}>) {\n      const assets = action.payload?.assets || []\n\n      if (assets) {\n        assets.forEach((asset) => {\n          if (!state.allIds.includes(asset._id)) {\n            state.allIds.push(asset._id)\n          }\n          state.byIds[asset._id] = {\n            _type: 'asset',\n            asset: asset,\n            picked: false,\n            updating: false,\n          }\n        })\n      }\n\n      state.fetching = false\n      state.fetchCount = assets.length || 0\n      delete state.fetchingError\n    },\n    fetchError(state, action: PayloadAction<HttpError>) {\n      const error = action.payload\n      state.fetching = false\n      state.fetchingError = error\n    },\n    fetchRequest: {\n      reducer: (state, _action: PayloadAction<{params: Record<string, any>; query: string}>) => {\n        state.fetching = true\n        delete state.fetchingError\n      },\n      prepare: ({\n        params = {},\n        queryFilter,\n        selector = ``,\n        sort = groq`order(_updatedAt desc)`,\n      }: {\n        params?: Record<string, any>\n        queryFilter: string\n        replace?: boolean\n        selector?: string\n        sort?: string\n      }) => {\n        const pipe = sort || selector ? '|' : ''\n\n        // Construct query\n        const query = groq`\n          {\n            \"items\": *[${queryFilter}] {\n              _id,\n              _type,\n              _createdAt,\n              _updatedAt,\n              altText,\n              creditLine,\n              description,\n              extension,\n              metadata {\n                dimensions,\n                exif,\n                isOpaque,\n              },\n              mimeType,\n              opt {\n                media\n              },\n              originalFilename,\n              size,\n              source {\n                name,\n                id,\n                url,\n              },\n              title,\n              url\n            } ${pipe} ${sort} ${selector},\n          }\n        `\n\n        return {payload: {params, query}}\n      },\n    },\n    insertUploads(state, action: PayloadAction<{results: Record<string, string | null>}>) {\n      const {results} = action.payload\n\n      Object.entries(results).forEach(([hash, assetId]) => {\n        if (assetId && !state.allIds.includes(hash)) {\n          state.allIds.push(assetId)\n        }\n      })\n    },\n    listenerCreateQueue(_state, _action: PayloadAction<{asset: Asset}>) {\n      //\n    },\n    listenerCreateQueueComplete(state, action: PayloadAction<{assets: Asset[]}>) {\n      const {assets} = action.payload\n      assets?.forEach((asset) => {\n        if (state.byIds[asset?._id]?.asset) {\n          state.byIds[asset._id]!.asset = asset\n        }\n      })\n    },\n    listenerDeleteQueue(_state, _action: PayloadAction<{assetId: string}>) {\n      //\n    },\n    listenerDeleteQueueComplete(state, action: PayloadAction<{assetIds: string[]}>) {\n      const {assetIds} = action.payload\n      assetIds?.forEach((assetId) => {\n        const deleteIndex = state.allIds.indexOf(assetId)\n        if (deleteIndex >= 0) {\n          state.allIds.splice(deleteIndex, 1)\n        }\n        delete state.byIds[assetId]\n      })\n    },\n    listenerUpdateQueue(_state, _action: PayloadAction<{asset: Asset}>) {\n      //\n    },\n    listenerUpdateQueueComplete(state, action: PayloadAction<{assets: Asset[]}>) {\n      const {assets} = action.payload\n      assets?.forEach((asset) => {\n        if (state.byIds[asset?._id]?.asset) {\n          state.byIds[asset._id]!.asset = asset\n        }\n      })\n    },\n    loadNextPage() {\n      //\n    },\n    loadPageIndex(state, action: PayloadAction<{pageIndex: number}>) {\n      //\n      state.pageIndex = action.payload.pageIndex\n    },\n    orderSet(state, action: PayloadAction<{order: Order}>) {\n      state.order = action.payload?.order\n      state.pageIndex = 0\n    },\n    pick(state, action: PayloadAction<{assetId: string; picked: boolean}>) {\n      const {assetId, picked} = action.payload\n\n      state.byIds[assetId]!.picked = picked\n      state.lastPicked = picked ? assetId : undefined\n    },\n    pickAll(state) {\n      state.allIds.forEach((id) => {\n        state.byIds[id]!.picked = true\n      })\n    },\n    pickClear(state) {\n      state.lastPicked = undefined\n      Object.values(state.byIds).forEach((asset) => {\n        state.byIds[asset.asset._id]!.picked = false\n      })\n    },\n    pickRange(state, action: PayloadAction<{endId: string; startId: string}>) {\n      const startIndex = state.allIds.findIndex((id) => id === action.payload.startId)\n      const endIndex = state.allIds.findIndex((id) => id === action.payload.endId)\n\n      // Sort numerically, ascending order\n      const indices = [startIndex, endIndex].sort((a, b) => a - b)\n\n      state.allIds.slice(indices[0], indices[1]! + 1).forEach((key) => {\n        state.byIds[key]!.picked = true\n      })\n      state.lastPicked = state.allIds[endIndex]\n    },\n    sort(state) {\n      state.allIds.sort((a, b) => {\n        const tagA = state.byIds[a]!.asset[state.order.field]\n        const tagB = state.byIds[b]!.asset[state.order.field]\n\n        if (tagA < tagB) {\n          return state.order.direction === 'asc' ? -1 : 1\n        } else if (tagA > tagB) {\n          return state.order.direction === 'asc' ? 1 : -1\n        }\n        return 0\n      })\n    },\n    updateComplete(state, action: PayloadAction<{asset: Asset; closeDialogId?: string}>) {\n      const {asset} = action.payload\n      state.byIds[asset._id]!.updating = false\n      state.byIds[asset._id]!.asset = asset\n    },\n    updateError(state, action: PayloadAction<{asset: Asset; error: HttpError}>) {\n      const {asset, error} = action.payload\n\n      const assetId = asset?._id\n      state.byIds[assetId]!.error = error.message\n      state.byIds[assetId]!.updating = false\n    },\n    updateRequest(\n      state,\n      action: PayloadAction<{asset: Asset; closeDialogId?: string; formData: Record<string, any>}>,\n    ) {\n      const assetId = action.payload?.asset?._id\n      state.byIds[assetId]!.updating = true\n    },\n    viewSet(state, action: PayloadAction<{view: BrowserView}>) {\n      state.view = action.payload?.view\n    },\n  },\n})\n\n// Epics\n\nexport const assetsDeleteEpic: MyEpic = (action$, _state$, {client}) =>\n  action$.pipe(\n    filter(assetsActions.deleteRequest.match),\n    mergeMap((action) => {\n      const {assets} = action.payload\n      const assetIds = assets.map((asset) => asset._id)\n      return of(assets).pipe(\n        mergeMap(() =>\n          client.observable.delete({\n            query: groq`*[_id in ${JSON.stringify(assetIds)}]`,\n          }),\n        ),\n        mergeMap(() => of(assetsActions.deleteComplete({assetIds}))),\n        catchError((error: ClientError) => {\n          return of(assetsActions.deleteError({assetIds, error}))\n        }),\n      )\n    }),\n  )\n\nexport const assetsFetchEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(assetsActions.fetchRequest.match),\n    withLatestFrom(state$),\n    switchMap(([action, state]) => {\n      const params = action.payload?.params\n      const query = action.payload?.query\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() =>\n          client.observable.fetch<{\n            items: Asset[]\n          }>(query, params),\n        ),\n        mergeMap((result) => {\n          const {\n            items,\n            // totalCount\n          } = result\n          return of(assetsActions.fetchComplete({assets: items}))\n        }),\n        catchError((error: ClientError) =>\n          of(\n            assetsActions.fetchError({\n              message: error?.message || 'Internal error',\n              statusCode: error?.statusCode || 500,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\nexport const assetsFetchPageIndexEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(assetsActions.loadPageIndex.match),\n    withLatestFrom(state$),\n    switchMap(([action, state]) => {\n      const pageSize = state.assets.pageSize\n      const start = action.payload.pageIndex * pageSize\n      const end = start + pageSize\n\n      // Document ID can be null when operating on pristine / unsaved drafts\n      const documentId = state?.selected.document?._id\n      const documentAssetIds = state?.selected?.documentAssetIds\n\n      const constructedFilter = constructFilter({\n        assetTypes: state.assets.assetTypes,\n        searchFacets: state.search.facets,\n        searchQuery: state.search.query,\n      })\n\n      const params = {\n        ...(documentId ? {documentId} : {}),\n        documentAssetIds,\n      }\n\n      return of(\n        assetsActions.fetchRequest({\n          params,\n          queryFilter: constructedFilter,\n          selector: groq`[${start}...${end}]`,\n          sort: groq`order(${state.assets?.order?.field} ${state.assets?.order?.direction})`,\n        }),\n      )\n    }),\n  )\n\nexport const assetsFetchNextPageEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(assetsActions.loadNextPage.match),\n    withLatestFrom(state$),\n    switchMap(([_action, state]) =>\n      of(assetsActions.loadPageIndex({pageIndex: state.assets.pageIndex + 1})),\n    ),\n  )\n\nexport const assetsFetchAfterDeleteAllEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(assetsActions.deleteComplete.match),\n    withLatestFrom(state$),\n    switchMap(([_action, state]) => {\n      if (state.assets.allIds.length === 0) {\n        const nextPageIndex = Math.floor(state.assets.allIds.length / state.assets.pageSize)\n        return of(assetsActions.loadPageIndex({pageIndex: nextPageIndex}))\n      }\n\n      return EMPTY\n    }),\n  )\n\nconst filterAssetWithoutTag = (tag: Tag) => (asset: AssetItem) => {\n  const tagIndex = asset?.asset?.opt?.media?.tags?.findIndex((t) => t._ref === tag?._id) ?? -1\n  return tagIndex < 0\n}\n\nconst patchOperationTagAppend =\n  ({tag}: {tag: Tag}) =>\n  (patch: Patch) =>\n    patch\n      .setIfMissing({opt: {}})\n      .setIfMissing({'opt.media': {}})\n      .setIfMissing({'opt.media.tags': []})\n      .append('opt.media.tags', [{_key: nanoid(), _ref: tag?._id, _type: 'reference', _weak: true}])\n\nconst patchOperationTagUnset =\n  ({asset, tag}: {asset: AssetItem; tag: Tag}) =>\n  (patch: Patch) =>\n    patch.ifRevisionId(asset?.asset?._rev).unset([`opt.media.tags[_ref == \"${tag._id}\"]`])\n\nexport const assetsOrderSetEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.orderSet.match),\n    mergeMap(() => {\n      return of(\n        assetsActions.clear(), //\n        assetsActions.loadPageIndex({pageIndex: 0}),\n      )\n    }),\n  )\n\nexport const assetsSearchEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      searchActions.facetsAdd.type,\n      searchActions.facetsClear.type,\n      searchActions.facetsRemoveById.type,\n      searchActions.facetsRemoveByName.type,\n      searchActions.facetsRemoveByTag.type,\n      searchActions.facetsUpdate.type,\n      searchActions.facetsUpdateById.type,\n      searchActions.querySet.type,\n    ),\n    debounceTime(400),\n    mergeMap(() => {\n      return of(\n        assetsActions.clear(), //\n        assetsActions.loadPageIndex({pageIndex: 0}),\n      )\n    }),\n  )\n\nexport const assetsListenerCreateQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.listenerCreateQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const assets = actions?.map((action) => action.payload.asset)\n      return of(assetsActions.listenerCreateQueueComplete({assets}))\n    }),\n  )\n\nexport const assetsListenerDeleteQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.listenerDeleteQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const assetIds = actions?.map((action) => action.payload.assetId)\n      return of(assetsActions.listenerDeleteQueueComplete({assetIds}))\n    }),\n  )\n\nexport const assetsListenerUpdateQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.listenerUpdateQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const assets = actions?.map((action) => action.payload.asset)\n      return of(assetsActions.listenerUpdateQueueComplete({assets}))\n    }),\n  )\n\n// Re-sort on all updates (immediate and batched listener events)\nexport const assetsSortEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      assetsActions.insertUploads.type,\n      assetsActions.listenerUpdateQueueComplete.type,\n      assetsActions.updateComplete.type,\n    ),\n    mergeMap(() => of(assetsActions.sort())),\n  )\n\nexport const assetsTagsAddEpic: MyEpic = (action$, state$, {client}) => {\n  return action$.pipe(\n    filter(ASSETS_ACTIONS.tagsAddRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assets, tag} = action.payload\n\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Add tag references to all picked assets\n        mergeMap(() => {\n          const pickedAssets = selectAssetsPicked(state)\n\n          // Filter out picked assets which already include tag\n          const pickedAssetsFiltered = pickedAssets?.filter(filterAssetWithoutTag(tag))\n\n          const transaction: Transaction = pickedAssetsFiltered.reduce(\n            (tx, pickedAsset) => tx.patch(pickedAsset?.asset?._id, patchOperationTagAppend({tag})),\n            client.transaction(),\n          )\n\n          return from(transaction.commit())\n        }),\n        // Dispatch complete action\n        mergeMap(() => of(ASSETS_ACTIONS.tagsAddComplete({assets, tag}))),\n        catchError((error: ClientError) =>\n          of(\n            ASSETS_ACTIONS.tagsAddError({\n              assets,\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              tag,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n}\n\nexport const assetsTagsRemoveEpic: MyEpic = (action$, state$, {client}) => {\n  return action$.pipe(\n    filter(ASSETS_ACTIONS.tagsRemoveRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assets, tag} = action.payload\n\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Remove tag references from all picked assets\n        mergeMap(() => {\n          const pickedAssets = selectAssetsPicked(state)\n\n          const transaction: Transaction = pickedAssets.reduce(\n            (tx, pickedAsset) =>\n              tx.patch(pickedAsset?.asset?._id, patchOperationTagUnset({asset: pickedAsset, tag})),\n            client.transaction(),\n          )\n\n          return from(transaction.commit())\n        }),\n        // Dispatch complete action\n        mergeMap(() => of(ASSETS_ACTIONS.tagsRemoveComplete({assets, tag}))),\n        catchError((error: ClientError) =>\n          of(\n            ASSETS_ACTIONS.tagsRemoveError({\n              assets,\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              tag,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n}\n\nexport const assetsUnpickEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      assetsActions.orderSet.type,\n      assetsActions.viewSet.type,\n      searchActions.facetsAdd.type,\n      searchActions.facetsClear.type,\n      searchActions.facetsRemoveById.type,\n      searchActions.facetsRemoveByName.type,\n      searchActions.facetsRemoveByTag.type,\n      searchActions.facetsUpdate.type,\n      searchActions.facetsUpdateById.type,\n      searchActions.querySet.type,\n    ),\n    mergeMap(() => {\n      return of(assetsActions.pickClear())\n    }),\n  )\n\nexport const assetsUpdateEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(assetsActions.updateRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {asset, closeDialogId, formData} = action.payload\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() =>\n          from(\n            client\n              .patch(asset._id)\n              .setIfMissing({opt: {}})\n              .setIfMissing({'opt.media': {}})\n              .set(formData)\n              .commit(),\n          ),\n        ),\n        mergeMap((updatedAsset: any) =>\n          of(\n            assetsActions.updateComplete({\n              asset: updatedAsset,\n              closeDialogId,\n            }),\n          ),\n        ),\n        catchError((error: ClientError) =>\n          of(\n            assetsActions.updateError({\n              asset,\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// Selectors\n\nconst selectAssetsByIds = (state: RootReducerState) => state.assets.byIds\n\nconst selectAssetsAllIds = (state: RootReducerState) => state.assets.allIds\n\nexport const selectAssetById = createSelector(\n  [\n    (state: RootReducerState) => state.assets.byIds,\n    (_state: RootReducerState, assetId: string) => assetId,\n  ],\n  (byIds, assetId) => {\n    const asset = byIds[assetId]\n    return asset ? asset : undefined\n  },\n)\n\nconst selectAssets: Selector<RootReducerState, AssetItem[]> = createSelector(\n  [selectAssetsByIds, selectAssetsAllIds],\n  (byIds, allIds) => allIds.map((id) => byIds[id]!),\n)\n\nexport const selectAssetsLength = createSelector([selectAssets], (assets) => assets.length)\n\nexport const selectAssetsPicked = createSelector([selectAssets], (assets) =>\n  assets.filter((item) => item?.picked),\n)\n\nexport const selectAssetsPickedLength = createSelector(\n  [selectAssetsPicked],\n  (assetsPicked) => assetsPicked.length,\n)\n\nexport const assetsActions = {...assetsSlice.actions}\n\nexport default assetsSlice.reducer\n","import {createSlice, type PayloadAction} from '@reduxjs/toolkit'\nimport pluralize from 'pluralize'\nimport {ofType} from 'redux-observable'\nimport {EMPTY, of} from 'rxjs'\nimport {filter, mergeMap} from 'rxjs/operators'\n\nimport type {AssetItem, Dialog, MyEpic, Tag} from '../../types'\nimport {assetsActions} from '../assets'\nimport {ASSETS_ACTIONS} from '../assets/actions'\nimport {tagsActions} from '../tags'\nimport {DIALOG_ACTIONS} from './actions'\n\ntype DialogReducerState = {\n  items: Dialog[]\n}\n\nconst initialState = {\n  items: [],\n} as DialogReducerState\n\nconst dialogSlice = createSlice({\n  name: 'dialog',\n  initialState,\n  extraReducers: (builder) => {\n    builder.addCase(DIALOG_ACTIONS.showTagCreate, (state) => {\n      state.items.push({\n        id: 'tagCreate',\n        type: 'tagCreate',\n      })\n    })\n    builder.addCase(DIALOG_ACTIONS.showTagEdit, (state, action) => {\n      const {tagId} = action.payload\n      state.items.push({\n        id: tagId,\n        tagId,\n        type: 'tagEdit',\n      })\n    })\n  },\n  reducers: {\n    // Clear all dialogs\n    clear(state) {\n      state.items = []\n    },\n    // Add newly created inline tag to assetEdit dialog\n    inlineTagCreate(state, action: PayloadAction<{assetId: string; tag: Tag}>) {\n      const {assetId, tag} = action.payload\n\n      state.items.forEach((item) => {\n        if (item.type === 'assetEdit' && item.assetId === assetId) {\n          item.lastCreatedTag = {\n            label: tag.name.current,\n            value: tag._id,\n          }\n        }\n      })\n    },\n    // Remove inline tags from assetEdit dialog\n    inlineTagRemove(state, action: PayloadAction<{tagIds: string[]}>) {\n      const {tagIds} = action.payload\n\n      state.items.forEach((item) => {\n        if (item.type === 'assetEdit') {\n          item.lastRemovedTagIds = tagIds\n        }\n      })\n    },\n    // Remove dialog by id\n    remove(state, action: PayloadAction<{id: string}>) {\n      const id = action.payload?.id\n      state.items = state.items.filter((item) => item.id !== id)\n    },\n    showConfirmAssetsTagAdd(\n      state,\n      action: PayloadAction<{\n        assetsPicked: AssetItem[]\n        closeDialogId?: string\n        tag: Tag\n      }>,\n    ) {\n      const {assetsPicked, closeDialogId, tag} = action.payload\n\n      const suffix = `${assetsPicked.length} ${pluralize('asset', assetsPicked.length)}`\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: ASSETS_ACTIONS.tagsAddRequest({\n          assets: assetsPicked,\n          tag,\n        }),\n        confirmText: `Yes, add tag to ${suffix}`,\n        title: `Add tag ${tag.name.current} to ${suffix}?`,\n        id: 'confirm',\n        headerTitle: 'Confirm tag addition',\n        tone: 'primary',\n        type: 'confirm',\n      })\n    },\n    showConfirmAssetsTagRemove(\n      state,\n      action: PayloadAction<{\n        assetsPicked: AssetItem[]\n        closeDialogId?: string\n        tag: Tag\n      }>,\n    ) {\n      const {assetsPicked, closeDialogId, tag} = action.payload\n\n      const suffix = `${assetsPicked.length} ${pluralize('asset', assetsPicked.length)}`\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: ASSETS_ACTIONS.tagsRemoveRequest({assets: assetsPicked, tag}),\n        confirmText: `Yes, remove tag from ${suffix}`,\n        headerTitle: 'Confirm tag removal',\n        id: 'confirm',\n        title: `Remove tag ${tag.name.current} from ${suffix}?`,\n        tone: 'critical',\n        type: 'confirm',\n      })\n    },\n    showConfirmDeleteAssets(\n      state,\n      action: PayloadAction<{assets: AssetItem[]; closeDialogId?: string}>,\n    ) {\n      const {assets, closeDialogId} = action.payload\n\n      const suffix = `${assets.length} ${pluralize('asset', assets.length)}`\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: assetsActions.deleteRequest({\n          assets: assets.map((assetItem) => assetItem.asset),\n        }),\n        confirmText: `Yes, delete ${suffix}`,\n        description: 'This operation cannot be reversed. Are you sure you want to continue?',\n        title: `Permanently delete ${suffix}?`,\n        id: 'confirm',\n        headerTitle: 'Confirm deletion',\n        tone: 'critical',\n        type: 'confirm',\n      })\n    },\n    showConfirmDeleteTag(state, action: PayloadAction<{closeDialogId?: string; tag: Tag}>) {\n      const {closeDialogId, tag} = action.payload\n\n      const suffix = 'tag'\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: tagsActions.deleteRequest({tag}),\n        confirmText: `Yes, delete ${suffix}`,\n        description: 'This operation cannot be reversed. Are you sure you want to continue?',\n        title: `Permanently delete ${suffix}?`,\n        id: 'confirm',\n        headerTitle: 'Confirm deletion',\n        tone: 'critical',\n        type: 'confirm',\n      })\n    },\n    showAssetEdit(state, action: PayloadAction<{assetId: string}>) {\n      const {assetId} = action.payload\n      state.items.push({\n        assetId,\n        id: assetId,\n        type: 'assetEdit',\n      })\n    },\n    showSearchFacets(state) {\n      state.items.push({\n        id: 'searchFacets',\n        type: 'searchFacets',\n      })\n    },\n    showTags(state) {\n      state.items.push({\n        id: 'tags',\n        type: 'tags',\n      })\n    },\n  },\n})\n\n// Epics\n\nexport const dialogClearOnAssetUpdateEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      assetsActions.deleteComplete.type,\n      assetsActions.updateComplete.type,\n      tagsActions.deleteComplete.type,\n      tagsActions.updateComplete.type,\n    ),\n    filter(\n      (action: {\n        payload: {closeDialogId?: string}\n      }): action is PayloadAction<{closeDialogId?: string}> => !!action?.payload?.closeDialogId,\n    ),\n    mergeMap((action) => {\n      const dialogId = action?.payload?.closeDialogId\n      if (dialogId) {\n        return of(dialogSlice.actions.remove({id: dialogId}))\n      }\n      return EMPTY\n    }),\n  )\n\nexport const dialogTagCreateEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.createComplete.match),\n    mergeMap((action) => {\n      const {assetId, tag} = action?.payload || {}\n\n      if (assetId) {\n        return of(dialogSlice.actions.inlineTagCreate({tag, assetId}))\n      }\n\n      if (tag._id) {\n        return of(dialogSlice.actions.remove({id: 'tagCreate'}))\n      }\n\n      return EMPTY\n    }),\n  )\n\nexport const dialogTagDeleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.listenerDeleteQueueComplete.match),\n    mergeMap((action) => {\n      const {tagIds} = action?.payload || {}\n\n      return of(dialogSlice.actions.inlineTagRemove({tagIds}))\n    }),\n  )\n\nexport const dialogActions = {...dialogSlice.actions}\n\nexport default dialogSlice.reducer\n","import {ThLargeIcon} from '@sanity/icons/ThLarge'\nimport {ThListIcon} from '@sanity/icons/ThList'\nimport {Button, Inline} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\n\nconst ButtonViewGroup = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const view = useTypedSelector((state) => state.assets.view)\n\n  return (\n    <Inline space={0} style={{whiteSpace: 'nowrap'}}>\n      <Button\n        fontSize={1}\n        icon={ThLargeIcon}\n        mode={view === 'grid' ? 'default' : 'ghost'}\n        onClick={() => dispatch(assetsActions.viewSet({view: 'grid'}))}\n        style={{\n          borderBottomRightRadius: 0,\n          borderTopRightRadius: 0,\n        }}\n      />\n      <Button\n        fontSize={1}\n        icon={ThListIcon}\n        mode={view === 'table' ? 'default' : 'ghost'}\n        onClick={() => dispatch(assetsActions.viewSet({view: 'table'}))}\n        style={{\n          borderBottomLeftRadius: 0,\n          borderTopLeftRadius: 0,\n        }}\n      />\n    </Inline>\n  )\n}\n\nexport default ButtonViewGroup\n","import {type PopoverProps, usePortal} from '@sanity/ui'\n\nexport function usePortalPopoverProps(): PopoverProps {\n  const portal = usePortal()\n\n  return {\n    animate: true,\n    constrainSize: true,\n    floatingBoundary: portal.element,\n    portal: true,\n    referenceBoundary: portal.element,\n  }\n}\n","import {SortIcon} from '@sanity/icons/Sort'\nimport {Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport {getOrderTitle} from '../../config/orders'\nimport {ORDER_OPTIONS} from '../../constants'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\n\nconst OrderSelect = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const order = useTypedSelector((state) => state.assets.order)\n\n  const popoverProps = usePortalPopoverProps()\n\n  return (\n    <MenuButton\n      button={\n        <Button\n          fontSize={1}\n          icon={SortIcon}\n          mode=\"bleed\"\n          padding={3}\n          text={getOrderTitle(order.field, order.direction)}\n        />\n      }\n      id=\"order\"\n      menu={\n        <Menu>\n          {ORDER_OPTIONS?.map((item, index) => {\n            if (item) {\n              const selected = order.field === item.field && order.direction === item.direction\n              return (\n                <MenuItem\n                  disabled={selected}\n                  fontSize={1}\n                  iconRight={selected}\n                  key={index}\n                  onClick={() =>\n                    dispatch(\n                      assetsActions.orderSet({\n                        order: {direction: item.direction, field: item.field},\n                      }),\n                    )\n                  }\n                  padding={2}\n                  selected={selected}\n                  space={4}\n                  style={{minWidth: '200px'}}\n                  text={getOrderTitle(item.field, item.direction)}\n                />\n              )\n            }\n\n            return <MenuDivider key={index} />\n          })}\n        </Menu>\n      }\n      popover={popoverProps}\n    />\n  )\n}\n\nexport default OrderSelect\n","import {Box} from '@sanity/ui'\nimport {useNProgress} from '@tanem/react-nprogress'\n\ntype Props = {\n  loading?: boolean\n}\n\nconst Progress = (props: Props) => {\n  const {loading} = props\n\n  const {animationDuration, isFinished, progress} = useNProgress({\n    animationDuration: 300,\n    isAnimating: loading,\n  })\n\n  return (\n    <Box\n      style={{\n        opacity: isFinished ? 0 : 1,\n        transition: `opacity ${animationDuration}ms linear`,\n      }}\n    >\n      <Box\n        style={{\n          height: '1px',\n          background: 'rgba(255, 255, 255, 0.5)',\n          position: 'absolute',\n          left: 0,\n          top: 0,\n          transition: `width ${animationDuration}ms linear`,\n          width: `${progress * 100}%`,\n        }}\n      />\n    </Box>\n  )\n}\n\nexport default Progress\n","import {hues} from '@sanity/color'\nimport {type ThemeColorSchemeKey, studioTheme} from '@sanity/ui'\n\nconst SCHEME_COLORS = {\n  bg: {\n    dark: hues.gray[950].hex,\n    light: hues.gray[50].hex,\n  },\n  bg2: {\n    dark: hues.gray[900].hex,\n    light: hues.gray[100].hex,\n  },\n  inputEnabledBorder: {\n    dark: studioTheme.color.dark.default.input.default.enabled.border,\n    light: studioTheme.color.light.default.input.default.enabled.border,\n  },\n  inputHoveredBorder: {\n    dark: studioTheme.color.dark.default.input.default.hovered.border,\n    light: studioTheme.color.light.default.input.default.hovered.border,\n  },\n  mutedHoveredBg: {\n    dark: studioTheme.color.dark.primary.muted.primary.hovered.bg,\n    light: studioTheme.color.light.primary.muted.primary.hovered.bg,\n  },\n  mutedHoveredFg: {\n    dark: studioTheme.color.dark.primary.muted.primary.hovered.fg,\n    light: studioTheme.color.light.primary.muted.primary.hovered.fg,\n  },\n  mutedSelectedBg: {\n    dark: studioTheme.color.dark.primary.muted.primary.selected.bg,\n    light: studioTheme.color.light.primary.muted.primary.selected.bg,\n  },\n  spotBlue: {\n    dark: studioTheme.color.dark.primary.spot.blue,\n    light: studioTheme.color.light.primary.spot.blue,\n  },\n}\n\ntype SchemeColorKey = keyof typeof SCHEME_COLORS\n\nexport function getSchemeColor(scheme: ThemeColorSchemeKey, colorKey: SchemeColorKey): string {\n  return SCHEME_COLORS[colorKey]?.[scheme]\n}\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Flex, Label, rem, Text, type ThemeColorSchemeKey} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {styled, css} from 'styled-components'\n\nimport {searchActions} from '../../modules/search'\nimport type {SearchFacetInputProps, WithId} from '../../types'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n  children: ReactNode\n  facet: WithId<SearchFacetInputProps>\n}\n\nconst Container = styled<typeof Box, {$scheme: ThemeColorSchemeKey}>(Box)(({$scheme, theme}) => {\n  return css`\n    background: ${getSchemeColor($scheme, 'bg')};\n    border-radius: ${rem(theme.sanity.radius[2]!)};\n  `\n})\n\nconst SearchFacet = (props: Props) => {\n  const {children, facet} = props\n\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n\n  const handleClose = () => {\n    dispatch(searchActions.facetsRemoveById({facetId: facet.id}))\n  }\n\n  return (\n    <Container padding={[2, 2, 1]} $scheme={scheme}>\n      <Flex align={['flex-start', 'flex-start', 'center']} direction={['column', 'column', 'row']}>\n        {/* Title */}\n        <Box paddingBottom={[3, 3, 0]} paddingLeft={1} paddingRight={2} paddingTop={[1, 1, 0]}>\n          <Label\n            size={0}\n            style={{\n              whiteSpace: 'nowrap',\n            }}\n          >\n            {facet.title}\n          </Label>\n        </Box>\n\n        <Flex align=\"center\">\n          {children}\n\n          {/* Close button */}\n          <Box marginLeft={1} paddingX={2}>\n            <Text muted size={0}>\n              <CloseIcon onClick={handleClose} />\n            </Text>\n          </Box>\n        </Flex>\n      </Flex>\n    </Container>\n  )\n}\n\nexport default SearchFacet\n","import {TextInput} from '@sanity/ui'\nimport {type ChangeEvent} from 'react'\n\n// TODO: use correct type\ntype Props = any & {\n  onValueChange: (value: number) => void\n  value?: number\n}\n\nconst TextInputNumber = (props: Props) => {\n  const {onValueChange, value, ...remainingProps} = props\n\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    const val = e.target.value\n    const regex = /^[0-9\\b]+$/\n\n    // Test for number and strip leading zeroes\n    if (val === '' || regex.test(val)) {\n      onValueChange(parseInt(val, 10) || '')\n    }\n  }\n\n  return (\n    <TextInput\n      {...remainingProps}\n      onChange={handleChange} //\n      value={value ?? ''}\n    />\n  )\n}\n\nexport default TextInputNumber\n","import {SelectIcon} from '@sanity/icons/Select'\nimport {Box, Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport {searchActions} from '../../modules/search'\nimport type {\n  SearchFacetInputNumberModifier,\n  SearchFacetInputNumberProps,\n  SearchFacetOperatorType,\n  WithId,\n} from '../../types'\nimport SearchFacet from '../SearchFacet'\nimport TextInputNumber from '../TextInputNumber'\n\ntype Props = {\n  facet: WithId<SearchFacetInputNumberProps>\n}\n\nconst SearchFacetNumber = ({facet}: Props) => {\n  // Redux\n  const dispatch = useDispatch()\n\n  const popoverProps = usePortalPopoverProps()\n\n  const modifiers = facet?.modifiers\n  const selectedModifier = facet?.modifier\n    ? modifiers?.find((modifier) => modifier.name === facet?.modifier)\n    : modifiers?.[0]\n\n  const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, operatorType}))\n  }\n\n  const handleModifierClick = (modifier: SearchFacetInputNumberModifier) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, modifier: modifier.name}))\n  }\n\n  const handleValueChange = (value: number) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, value}))\n  }\n\n  const selectedOperatorType: SearchFacetOperatorType = facet.operatorType ?? 'greaterThan'\n\n  return (\n    <SearchFacet facet={facet}>\n      {/* Optional operators */}\n      {facet?.operatorTypes && (\n        <MenuButton\n          button={\n            <Button\n              fontSize={1}\n              iconRight={SelectIcon}\n              padding={2}\n              text={operators[selectedOperatorType].label}\n            />\n          }\n          id=\"operators\"\n          menu={\n            <Menu>\n              {facet.operatorTypes.map((operatorType, index) => {\n                if (operatorType) {\n                  const selected = operatorType === selectedOperatorType\n                  return (\n                    <MenuItem\n                      disabled={selected}\n                      fontSize={1}\n                      key={operatorType}\n                      onClick={() => handleOperatorItemClick(operatorType)}\n                      padding={2}\n                      text={operators[operatorType].label}\n                    />\n                  )\n                }\n\n                return <MenuDivider key={index} />\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n\n      {/* Value */}\n      <Box marginX={1} style={{maxWidth: '50px'}}>\n        <TextInputNumber\n          fontSize={1}\n          onValueChange={handleValueChange}\n          padding={2}\n          radius={2}\n          width={2}\n          value={facet?.value}\n        />\n      </Box>\n\n      {/* Modifiers */}\n      {modifiers && (\n        <MenuButton\n          button={\n            <Button\n              fontSize={1}\n              iconRight={SelectIcon}\n              padding={2}\n              text={selectedModifier?.title}\n            />\n          }\n          id=\"modifier\"\n          menu={\n            <Menu>\n              {modifiers.map((modifier) => {\n                const selected = modifier.name === facet.modifier\n                return (\n                  <MenuItem\n                    disabled={selected}\n                    fontSize={1}\n                    key={modifier.name}\n                    onClick={() => handleModifierClick(modifier)}\n                    padding={2}\n                    text={modifier.title}\n                  />\n                )\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n    </SearchFacet>\n  )\n}\n\nexport default SearchFacetNumber\n","import {SelectIcon} from '@sanity/icons/Select'\nimport {Box, Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport {searchActions} from '../../modules/search'\nimport type {\n  SearchFacetInputSelectListItemProps,\n  SearchFacetInputSelectProps,\n  SearchFacetOperatorType,\n  WithId,\n} from '../../types'\nimport SearchFacet from '../SearchFacet'\n\ntype Props = {\n  facet: WithId<SearchFacetInputSelectProps>\n}\n\nconst SearchFacetSelect = ({facet}: Props) => {\n  // Redux\n  const dispatch = useDispatch()\n\n  const popoverProps = usePortalPopoverProps()\n\n  const options = facet?.options\n\n  const selectedItem = options?.find((v) => v.name === facet?.value)\n\n  const handleListItemClick = (option: SearchFacetInputSelectListItemProps) => {\n    dispatch(searchActions.facetsUpdate({name: facet.name, value: option.name}))\n  }\n\n  const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n    dispatch(searchActions.facetsUpdate({name: facet.name, operatorType}))\n  }\n\n  const selectedOperatorType: SearchFacetOperatorType = facet?.operatorType ?? 'is'\n\n  return (\n    <SearchFacet facet={facet}>\n      {/* Optional operators */}\n      {facet?.operatorTypes && (\n        <MenuButton\n          button={\n            <Box marginRight={1}>\n              <Button\n                fontSize={1}\n                iconRight={SelectIcon}\n                padding={2}\n                text={operators[selectedOperatorType].label}\n              />\n            </Box>\n          }\n          id=\"operators\"\n          menu={\n            <Menu>\n              {facet.operatorTypes.map((operatorType, index) => {\n                if (operatorType) {\n                  const selected = operatorType === selectedOperatorType\n                  return (\n                    <MenuItem\n                      disabled={selected}\n                      fontSize={1}\n                      key={operatorType}\n                      onClick={() => handleOperatorItemClick(operatorType)}\n                      padding={2}\n                      text={operators[operatorType].label}\n                    />\n                  )\n                }\n\n                return <MenuDivider key={index} />\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n\n      {/* List */}\n      <MenuButton\n        button={\n          <Button fontSize={1} iconRight={SelectIcon} padding={2} text={selectedItem?.title} />\n        }\n        id=\"list\"\n        menu={\n          <Menu>\n            {options?.map((item) => {\n              const selected = item.name === selectedItem?.name\n              return (\n                <MenuItem\n                  disabled={selected}\n                  fontSize={1}\n                  key={item.name}\n                  onClick={() => handleListItemClick(item)}\n                  padding={2}\n                  text={item.title}\n                />\n              )\n            })}\n          </Menu>\n        }\n        popover={popoverProps}\n      />\n    </SearchFacet>\n  )\n}\n\nexport default SearchFacetSelect\n","import {SelectIcon} from '@sanity/icons/Select'\nimport {Box, Button, Menu, MenuButton, MenuDivider, MenuItem, TextInput} from '@sanity/ui'\nimport {type ChangeEvent} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport {searchActions} from '../../modules/search'\nimport type {SearchFacetInputStringProps, SearchFacetOperatorType, WithId} from '../../types'\nimport SearchFacet from '../SearchFacet'\n\ntype Props = {\n  facet: WithId<SearchFacetInputStringProps>\n}\n\nconst SearchFacetString = ({facet}: Props) => {\n  // Redux\n  const dispatch = useDispatch()\n\n  const popoverProps = usePortalPopoverProps()\n\n  const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, operatorType}))\n  }\n\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, value: e.target.value}))\n  }\n\n  const selectedOperatorType: SearchFacetOperatorType = facet.operatorType\n\n  return (\n    <SearchFacet facet={facet}>\n      {/* Optional operators */}\n      {facet?.operatorTypes && (\n        <MenuButton\n          button={\n            <Button\n              fontSize={1}\n              iconRight={SelectIcon}\n              padding={2}\n              text={operators[selectedOperatorType].label}\n            />\n          }\n          id=\"operators\"\n          menu={\n            <Menu>\n              {facet.operatorTypes.map((operatorType, index) => {\n                if (operatorType) {\n                  const selected = operatorType === selectedOperatorType\n                  return (\n                    <MenuItem\n                      disabled={selected}\n                      fontSize={1}\n                      key={operatorType}\n                      onClick={() => handleOperatorItemClick(operatorType)}\n                      padding={2}\n                      text={operators[operatorType].label}\n                    />\n                  )\n                }\n\n                return <MenuDivider key={index} />\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n\n      {/* Value */}\n      {!operators[selectedOperatorType].hideInput && (\n        <Box marginLeft={1} style={{maxWidth: '125px'}}>\n          <TextInput\n            fontSize={1}\n            onChange={handleChange}\n            padding={2}\n            radius={2}\n            width={2}\n            value={facet?.value}\n          />\n        </Box>\n      )}\n    </SearchFacet>\n  )\n}\n\nexport default SearchFacetString\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Card, rem, studioTheme, Text, type ThemeColorSchemeKey} from '@sanity/ui'\nimport {components, type StylesConfig} from 'react-select'\nimport {Virtuoso} from 'react-virtuoso'\n\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\nconst {\n  fonts: {\n    text: {sizes: themeTextSizes},\n  },\n  radius: themeRadius,\n  space: themeSpace,\n} = studioTheme\n\nexport const reactSelectStyles = (scheme: ThemeColorSchemeKey): StylesConfig => {\n  return {\n    control: (styles, {isDisabled, isFocused}) => {\n      let boxShadow = `inset 0 0 0 1px var(--card-border-color)`\n      if (isFocused) {\n        boxShadow = `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputEnabledBorder')},\n        0 0 0 1px ${getSchemeColor(scheme, 'bg2')},\n        0 0 0 3px var(--card-focus-ring-color) !important`\n      }\n\n      return {\n        ...styles,\n        'backgroundColor': 'var(--card-bg-color)',\n        'color': 'inherit',\n        'border': 'none',\n        'borderRadius': themeRadius[2],\n        boxShadow,\n        'fontSize': themeTextSizes[1]!.fontSize,\n        'minHeight': '25px',\n        'opacity': isDisabled ? 0.5 : 'inherit',\n        'outline': 'none',\n        'transition': 'none',\n        '&:hover': {\n          boxShadow: `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputHoveredBorder')}`,\n        },\n      }\n    },\n    input: (styles) => ({\n      ...styles,\n      color: 'var(--card-fg-color)',\n      fontFamily: studioTheme.fonts.text.family,\n      fontSize: themeTextSizes[1]!.fontSize,\n      marginLeft: rem(themeSpace[2]!),\n    }),\n    menuList: (styles) => ({\n      ...styles,\n      padding: 0,\n    }),\n    noOptionsMessage: (styles) => ({\n      ...styles,\n      fontFamily: studioTheme.fonts.text.family,\n      fontSize: themeTextSizes[1]!.fontSize,\n      lineHeight: '1em',\n    }),\n    option: (styles, {isFocused}) => ({\n      ...styles,\n      'backgroundColor': isFocused ? getSchemeColor(scheme, 'spotBlue') : 'transparent',\n      'borderRadius': themeRadius[2],\n      'color': isFocused ? getSchemeColor(scheme, 'bg') : 'inherit',\n      'fontSize': themeTextSizes[1]!.fontSize,\n      'lineHeight': '1em',\n      'margin': 0,\n      'padding': rem(themeSpace[1]!),\n      '&:hover': {\n        backgroundColor: getSchemeColor(scheme, 'spotBlue'),\n        color: getSchemeColor(scheme, 'bg'),\n      },\n    }),\n    placeholder: (styles) => ({\n      ...styles,\n      fontSize: themeTextSizes[1]!.fontSize,\n      marginLeft: rem(themeSpace[2]!),\n      paddingLeft: 0,\n    }),\n    singleValue: (styles) => ({\n      ...styles,\n      alignItems: 'center',\n      display: 'inline-flex',\n      height: '100%',\n      marginLeft: rem(themeSpace[2]!),\n    }),\n    valueContainer: (styles) => ({\n      ...styles,\n      margin: 0,\n      padding: 0,\n    }),\n  }\n}\n\nconst ClearIndicator = (props: any) => {\n  return (\n    <components.ClearIndicator {...props}>\n      <Box\n        paddingRight={1}\n        style={{\n          transform: 'scale(0.85)',\n        }}\n      >\n        <Text muted size={0}>\n          <CloseIcon />\n        </Text>\n      </Box>\n    </components.ClearIndicator>\n  )\n}\n\nconst Menu = (props: any) => {\n  return (\n    <components.Menu {...props}>\n      <Card radius={1} shadow={2}>\n        {props.children}\n      </Card>\n    </components.Menu>\n  )\n}\n\nconst MenuList = (props: any) => {\n  const {children} = props\n\n  const MAX_ROWS = 5\n  const OPTION_HEIGHT = 33\n\n  if (Array.isArray(children)) {\n    const height =\n      children.length > MAX_ROWS ? OPTION_HEIGHT * MAX_ROWS : children.length * OPTION_HEIGHT\n\n    return (\n      <Virtuoso\n        className=\"media__custom-scrollbar\"\n        itemContent={(index) => {\n          const item = children[index]\n          return <Option {...item.props} />\n        }}\n        style={{height}}\n        totalCount={children.length}\n      />\n    )\n  }\n  return <components.MenuList {...props}>{children}</components.MenuList>\n}\n\nconst NoOptionsMessage = (props: any) => {\n  return <components.NoOptionsMessage {...props}>{props.children}</components.NoOptionsMessage>\n}\n\nconst Option = (props: any) => {\n  return (\n    <Box padding={1}>\n      <components.Option {...props}>\n        <Box paddingY={1}>\n          <Text size={1} style={{color: 'inherit'}} textOverflow=\"ellipsis\">\n            {props.children}\n          </Text>\n        </Box>\n      </components.Option>\n    </Box>\n  )\n}\n\nconst SingleValue = (props: any) => {\n  return (\n    <components.SingleValue {...props}>\n      <Text size={1} textOverflow=\"ellipsis\">\n        {props.children}\n      </Text>\n    </components.SingleValue>\n  )\n}\n\nexport const reactSelectComponents = {\n  ClearIndicator,\n  DropdownIndicator: null,\n  IndicatorSeparator: null,\n  Menu,\n  MenuList,\n  NoOptionsMessage,\n  Option,\n  SingleValue,\n}\n","import {SelectIcon} from '@sanity/icons/Select'\nimport {Box, Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\nimport Select from 'react-select'\nimport {useColorSchemeValue} from 'sanity'\n\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {searchActions} from '../../modules/search'\nimport {selectTags} from '../../modules/tags'\nimport {reactSelectComponents, reactSelectStyles} from '../../styled/react-select/single'\nimport type {\n  TagSelectOption,\n  SearchFacetInputSearchableProps,\n  SearchFacetOperatorType,\n  WithId,\n} from '../../types'\nimport getTagSelectOptions from '../../utils/getTagSelectOptions'\nimport SearchFacet from '../SearchFacet'\n\ntype Props = {\n  facet: WithId<SearchFacetInputSearchableProps>\n}\n\nconst SearchFacetTags = ({facet}: Props) => {\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const tags = useTypedSelector((state) => selectTags(state))\n  const tagsFetching = useTypedSelector((state) => state.tags.fetching)\n  const allTagOptions = getTagSelectOptions(tags)\n\n  const popoverProps = usePortalPopoverProps()\n\n  const handleChange = (option: TagSelectOption) => {\n    dispatch(\n      searchActions.facetsUpdateById({\n        id: facet.id,\n        value: option,\n      }),\n    )\n  }\n\n  const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n    dispatch(\n      searchActions.facetsUpdateById({\n        id: facet.id,\n        operatorType,\n      }),\n    )\n  }\n\n  const selectedOperatorType: SearchFacetOperatorType = facet.operatorType\n\n  return (\n    <SearchFacet facet={facet}>\n      {/* Optional operators */}\n      {facet?.operatorTypes && (\n        <MenuButton\n          button={\n            <Button\n              fontSize={1}\n              iconRight={SelectIcon}\n              padding={2}\n              text={operators[selectedOperatorType].label}\n            />\n          }\n          id=\"operators\"\n          menu={\n            <Menu>\n              {facet.operatorTypes.map((operatorType, index) => {\n                if (operatorType) {\n                  const selected = operatorType === selectedOperatorType\n                  return (\n                    <MenuItem\n                      disabled={selected}\n                      fontSize={1}\n                      key={operatorType}\n                      onClick={() => handleOperatorItemClick(operatorType)}\n                      padding={2}\n                      space={4}\n                      style={{minWidth: '150px'}}\n                      text={operators[operatorType].label}\n                    />\n                  )\n                }\n\n                return <MenuDivider key={index} />\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n\n      {/* Value */}\n      {!operators[selectedOperatorType].hideInput && (\n        <Box marginX={1} style={{width: '160px'}}>\n          <Select\n            components={reactSelectComponents}\n            instanceId=\"facet-searchable\"\n            isClearable\n            isDisabled={tagsFetching}\n            isSearchable\n            name=\"tags\"\n            noOptionsMessage={() => 'No tags'}\n            onChange={(value: any) => handleChange(value as TagSelectOption)}\n            options={allTagOptions}\n            placeholder={tagsFetching ? 'Loading...' : 'Select...'}\n            styles={reactSelectStyles(scheme)}\n            value={facet?.value}\n          />\n        </Box>\n      )}\n    </SearchFacet>\n  )\n}\n\nexport default SearchFacetTags\n","import {Box, Flex, Inline, rem, type Theme} from '@sanity/ui'\nimport {styled, css} from 'styled-components'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport SearchFacetNumber from '../SearchFacetNumber'\nimport SearchFacetSelect from '../SearchFacetSelect'\nimport SearchFacetString from '../SearchFacetString'\nimport SearchFacetTags from '../SearchFacetTags'\n\ntype Props = {\n  layout?: 'inline' | 'stack'\n}\n\nconst StackContainer = styled(Flex)(({theme}: {theme: Theme}) => {\n  return css`\n    > * {\n      margin-bottom: ${rem(theme.sanity.space[2]!)};\n    }\n  `\n})\n\nconst SearchFacets = (props: Props) => {\n  const {layout = 'inline'} = props\n\n  // Redux\n  const searchFacets = useTypedSelector((state) => state.search.facets)\n\n  const Items = searchFacets.map((facet) => {\n    const key = facet.id\n    if (facet.type === 'number') {\n      return <SearchFacetNumber facet={facet} key={key} />\n    }\n\n    if (facet.type === 'searchable') {\n      return <SearchFacetTags facet={facet} key={key} />\n    }\n\n    if (facet.type === 'select') {\n      return <SearchFacetSelect facet={facet} key={key} />\n    }\n\n    if (facet.type === 'string') {\n      return <SearchFacetString facet={facet} key={key} />\n    }\n\n    return null\n  })\n\n  if (layout === 'inline') {\n    if (searchFacets.length === 0) {\n      return null\n    }\n\n    return (\n      <Box marginBottom={2}>\n        <Inline space={2}>{Items}</Inline>\n      </Box>\n    )\n  }\n\n  if (layout === 'stack') {\n    return (\n      <StackContainer align=\"flex-start\" direction=\"column\">\n        {Items}\n      </StackContainer>\n    )\n  }\n\n  throw Error('Invalid layout')\n}\n\nexport default SearchFacets\n","import {type PropsWithChildren, createContext, useContext, useMemo} from 'react'\nimport type {DropzoneOptions} from 'react-dropzone'\n\nimport type {MediaToolOptions, Locale} from '../types'\n\ntype ContextProps = {\n  dropzone: Pick<DropzoneOptions, 'maxSize'>\n  components: MediaToolOptions['components']\n  createTagsOnUpload: boolean\n  creditLine: MediaToolOptions['creditLine']\n  directUploads: MediaToolOptions['directUploads']\n  locales?: Locale[]\n}\n\nconst ToolOptionsContext = createContext<ContextProps | null>(null)\n\ntype Props = {\n  options?: MediaToolOptions | void\n}\n\nexport const ToolOptionsProvider = ({options, children}: PropsWithChildren<Props>) => {\n  // oxlint-disable-next-line react-compiler\n  const value = useMemo<ContextProps>(() => {\n    let creditLineExcludeSources\n\n    if (options?.creditLine?.excludeSources) {\n      creditLineExcludeSources = Array.isArray(options?.creditLine?.excludeSources)\n        ? options.creditLine.excludeSources\n        : [options?.creditLine?.excludeSources]\n    }\n\n    return {\n      dropzone: {maxSize: options?.maximumUploadSize},\n      components: {\n        details: options?.components?.details,\n      },\n      createTagsOnUpload: options?.createTagsOnUpload ?? true,\n      creditLine: {\n        enabled: options?.creditLine?.enabled || false,\n        excludeSources: creditLineExcludeSources,\n      },\n      directUploads: options?.directUploads ?? true,\n      locales: options?.locales,\n    }\n  }, [\n    options?.creditLine?.enabled,\n    options?.components,\n    options?.createTagsOnUpload,\n    options?.creditLine?.excludeSources,\n    options?.maximumUploadSize,\n    options?.directUploads,\n    options?.locales,\n  ])\n\n  return <ToolOptionsContext.Provider value={value}>{children}</ToolOptionsContext.Provider>\n}\n\nexport const useToolOptions = () => {\n  const context = useContext(ToolOptionsContext)\n\n  if (!context) {\n    throw new Error('useToolOptions must be used within an ToolOptionsProvider')\n  }\n\n  return context\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {Button, Flex, Menu, MenuButton, MenuDivider, MenuGroup, MenuItem} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport {FACETS} from '../../constants'\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {searchActions} from '../../modules/search'\nimport type {SearchFacetDivider, SearchFacetGroup, SearchFacetInputProps} from '../../types'\n\nconst SearchFacetsControl = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const assetTypes = useTypedSelector((state) => state.assets.assetTypes)\n  const searchFacets = useTypedSelector((state) => state.search.facets)\n  const selectedDocument = useTypedSelector((state) => state.selected.document)\n\n  const popoverProps = usePortalPopoverProps()\n\n  const {creditLine} = useToolOptions()\n\n  const isTool = !selectedDocument\n\n  const filteredFacets = FACETS\n    // Filter facets based on current context, whether it's invoked as a tool, or via selection through via custom asset source.\n    .filter((facet) => {\n      // Remove credit line filter if it's not enabled\n      if (!creditLine?.enabled && facet?.type === 'string' && facet?.name === 'creditLine') {\n        return false\n      }\n\n      if (facet.type === 'group' || facet.type === 'divider') {\n        return true\n      }\n\n      if (isTool) {\n        return !facet?.selectOnly\n      }\n\n      const matchingAssetTypes = facet.assetTypes.filter((assetType) =>\n        assetTypes.includes(assetType),\n      )\n      return matchingAssetTypes.length > 0\n    })\n    // Remove adjacent and leading / trailing dividers\n    .filter((facet, index, facets) => {\n      const previousFacet = facets[index - 1]\n      // Ignore leading + trailing dividers\n      if (facet.type === 'divider' && (index === 0 || index === facets.length - 1)) {\n        return false\n      }\n      // Ignore adjacent dividers\n      if (facet.type === 'divider' && previousFacet?.type === 'divider') {\n        return false\n      }\n      return true\n    })\n\n  const hasSearchFacets = filteredFacets.length > 0\n\n  const renderMenuFacets = (\n    facets: (SearchFacetDivider | SearchFacetGroup | SearchFacetInputProps)[],\n    level: number = 0,\n  ) => {\n    return (\n      <>\n        {facets?.map((facet, index) => {\n          if (facet.type === 'divider') {\n            return <MenuDivider key={index} />\n          }\n\n          // Recursively render menu facets\n          if (facet.type === 'group') {\n            return (\n              <MenuGroup key={`group-${level}-${index}`} text={facet.title} title={facet.title}>\n                {renderMenuFacets(facet.facets, level + 1)}\n              </MenuGroup>\n            )\n          }\n\n          if (facet) {\n            const disabled =\n              !facet.operatorTypes && !!searchFacets.find((v) => v.name === facet.name)\n\n            return (\n              <MenuItem\n                disabled={disabled}\n                fontSize={1}\n                key={facet.name}\n                onClick={() => dispatch(searchActions.facetsAdd({facet}))}\n                padding={2}\n                text={facet.title}\n              />\n            )\n          }\n\n          return null\n        })}\n      </>\n    )\n  }\n\n  return (\n    <Flex>\n      {/* Add filter button */}\n      <MenuButton\n        button={\n          <Button\n            disabled={!hasSearchFacets}\n            fontSize={1}\n            icon={AddIcon}\n            mode=\"bleed\"\n            space={2}\n            text=\"Add filter\"\n            tone=\"primary\"\n          />\n        }\n        id=\"facets\"\n        menu={<Menu>{renderMenuFacets(filteredFacets)}</Menu>}\n        popover={{\n          ...popoverProps,\n          placement: 'right-start',\n        }}\n      />\n\n      {/* Clear facets button */}\n      {searchFacets.length > 0 && (\n        <Button\n          fontSize={1}\n          mode=\"bleed\"\n          onClick={() => dispatch(searchActions.facetsClear())}\n          text=\"Clear\"\n        />\n      )}\n    </Flex>\n  )\n}\n\nexport default SearchFacetsControl\n","const TagIcon = () => (\n  <svg\n    data-sanity-icon=\"media__tag\" // For icon usage with @sanity/ui <Button />\n    fill=\"currentColor\"\n    height=\"1em\"\n    stroke=\"currentColor\"\n    strokeWidth=\"0\"\n    viewBox=\"0 0 512 512\"\n    width=\"1em\"\n  >\n    <path\n      d=\"M435.25 48h-122.9a14.46 14.46 0 00-10.2 4.2L56.45 297.9a28.85 28.85 0 000 40.7l117 117a28.85 28.85 0 0040.7 0L459.75 210a14.46 14.46 0 004.2-10.2v-123a28.66 28.66 0 00-28.7-28.8z\"\n      fill=\"none\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"32\"\n    />\n    <path d=\"M384 160a32 32 0 1132-32 32 32 0 01-32 32z\" />\n  </svg>\n)\n\nexport default TagIcon\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {SearchIcon} from '@sanity/icons/Search'\nimport {Box, Flex, TextInput} from '@sanity/ui'\nimport {type ChangeEvent} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {searchActions} from '../../modules/search'\n\nconst TextInputSearch = () => {\n  // Redux\n  const searchQuery = useTypedSelector((state) => state.search.query)\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    dispatch(searchActions.querySet({searchQuery: e.currentTarget.value}))\n  }\n\n  const handleClear = () => {\n    dispatch(searchActions.querySet({searchQuery: ''}))\n  }\n\n  return (\n    <Box style={{position: 'relative'}}>\n      <TextInput\n        fontSize={1}\n        icon={SearchIcon}\n        onChange={handleChange}\n        placeholder=\"Search\"\n        radius={2}\n        value={searchQuery}\n      />\n\n      {/* Clear form button */}\n      {searchQuery.length > 0 && (\n        <Flex\n          align=\"center\"\n          justify=\"center\"\n          onClick={handleClear}\n          style={{\n            cursor: 'pointer',\n            height: '100%',\n            opacity: 0.75,\n            position: 'absolute',\n            right: 0,\n            top: 0,\n            width: '2em',\n            zIndex: 1, // force stacking context\n          }}\n        >\n          <CloseIcon />\n        </Flex>\n      )}\n    </Box>\n  )\n}\n\nexport default TextInputSearch\n","import {Box, Button, Flex, Inline, useMediaIndex} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {dialogActions} from '../../modules/dialog'\nimport {tagsActions} from '../../modules/tags'\nimport ButtonViewGroup from '../ButtonViewGroup'\nimport OrderSelect from '../OrderSelect'\nimport Progress from '../Progress'\nimport SearchFacets from '../SearchFacets'\nimport SearchFacetsControl from '../SearchFacetsControl'\nimport TagIcon from '../TagIcon'\nimport TextInputSearch from '../TextInputSearch'\n\nconst Controls = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const fetching = useTypedSelector((state) => state.assets.fetching)\n  const pageIndex = useTypedSelector((state) => state.assets.pageIndex)\n  const searchFacets = useTypedSelector((state) => state.search.facets)\n  const tagsPanelVisible = useTypedSelector((state) => state.tags.panelVisible)\n\n  const mediaIndex = useMediaIndex()\n\n  // Callbacks\n  const handleShowSearchFacetDialog = () => {\n    dispatch(dialogActions.showSearchFacets())\n  }\n\n  const handleShowTagsDialog = () => {\n    dispatch(dialogActions.showTags())\n  }\n\n  const toggleTagsPanelToggle = () => {\n    dispatch(tagsActions.panelVisibleSet({panelVisible: !tagsPanelVisible}))\n  }\n\n  return (\n    <Box\n      paddingY={2}\n      style={{\n        borderBottom: '1px solid var(--card-border-color)',\n        zIndex: 2,\n      }}\n    >\n      {/* Rows: search / filters / orders  */}\n      <Box marginBottom={2}>\n        <Flex\n          align=\"flex-start\"\n          direction={['column', 'column', 'column', 'column', 'row']}\n          justify=\"space-between\"\n        >\n          {/* Search + Filters */}\n          <Flex\n            flex={1}\n            style={{\n              alignItems: 'flex-start',\n              flex: 1,\n              height: '100%',\n              justifyContent: mediaIndex < 2 ? 'space-between' : 'flex-start',\n              position: 'relative',\n              width: '100%',\n            }}\n          >\n            <Box marginX={2} style={{minWidth: '200px'}}>\n              {/* Search */}\n              <TextInputSearch />\n            </Box>\n\n            <Box display={['none', 'none', 'block']}>\n              <SearchFacets />\n\n              {/* Search Facets Control (add / clear) */}\n              <SearchFacetsControl />\n            </Box>\n\n            <Box display={['block', 'block', 'none']} marginX={2}>\n              <Inline space={2} style={{whiteSpace: 'nowrap'}}>\n                {/* Filters button (small) */}\n                <Button\n                  fontSize={1}\n                  mode=\"ghost\"\n                  onClick={handleShowSearchFacetDialog}\n                  text={`Filters${searchFacets.length > 0 ? ` (${searchFacets.length})` : ''}`}\n                  tone=\"primary\"\n                />\n\n                {/* Tags button (small) */}\n                <Button\n                  fontSize={1}\n                  mode=\"ghost\"\n                  onClick={handleShowTagsDialog}\n                  text={`Tags`}\n                  tone=\"primary\"\n                />\n              </Inline>\n            </Box>\n          </Flex>\n        </Flex>\n      </Box>\n\n      <Box>\n        <Flex align=\"center\" justify={['space-between']}>\n          {/* Views */}\n          <Box marginX={2}>\n            <ButtonViewGroup />\n          </Box>\n\n          <Flex marginX={2}>\n            {/* Orders */}\n            <OrderSelect />\n            {/* Tags panel toggle */}\n            <Box display={['none', 'none', 'block']} marginLeft={2}>\n              <Button\n                fontSize={1}\n                icon={\n                  <Box style={{transform: 'scale(0.75)'}}>\n                    <TagIcon />\n                  </Box>\n                }\n                onClick={toggleTagsPanelToggle}\n                mode={tagsPanelVisible ? 'default' : 'ghost'}\n                text={tagsPanelVisible ? 'Tags' : ''}\n              />\n            </Box>\n          </Flex>\n        </Flex>\n      </Box>\n\n      {/* Progress bar */}\n      <Progress key={pageIndex} loading={fetching} />\n    </Box>\n  )\n}\n\nexport default Controls\n","import {type PayloadAction, createSlice} from '@reduxjs/toolkit'\n\ntype DebugReducerState = {\n  badConnection: boolean\n  enabled: boolean\n}\n\nconst initialState = {\n  badConnection: false,\n  enabled: false,\n} as DebugReducerState\n\nconst debugSlice = createSlice({\n  name: 'debug',\n  initialState,\n  reducers: {\n    setBadConnection(state, action: PayloadAction<boolean>) {\n      state.badConnection = action.payload\n    },\n    toggleEnabled(state) {\n      state.enabled = !state.enabled\n    },\n  },\n})\n\nexport const debugActions = {...debugSlice.actions}\n\nexport default debugSlice.reducer\n","import {PlugIcon} from '@sanity/icons/Plug'\nimport {Box, Flex, Switch, Text, Tooltip} from '@sanity/ui'\nimport {type ChangeEvent} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {debugActions} from '../../modules/debug'\n\nconst DebugControls = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const badConnection = useTypedSelector((state) => state.debug.badConnection)\n  const debugEnabled = useTypedSelector((state) => state.debug.enabled)\n\n  // Callbacks\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    const checked = e.target.checked\n\n    dispatch(debugActions.setBadConnection(checked))\n  }\n\n  const handleToggleControls = () => {\n    dispatch(debugActions.toggleEnabled())\n  }\n\n  // Close on escape key press\n  useKeyPress('alt+ctrl+shift+/', handleToggleControls)\n\n  if (!debugEnabled) {\n    return null\n  }\n\n  return (\n    <Box\n      padding={4}\n      style={{\n        bottom: 0,\n        left: 0,\n        pointerEvents: 'none',\n        position: 'fixed',\n        width: '100%',\n      }}\n    >\n      {/* Bad connection toggle */}\n      <Flex align=\"center\">\n        <Box marginRight={3}>\n          <Text muted size={1}>\n            <PlugIcon />\n          </Text>\n        </Box>\n        <Tooltip\n          animate\n          content={\n            <Box padding={2}>\n              <Text muted size={1}>\n                {badConnection\n                  ? 'Bad connection: +3000ms & 50% chance to fail'\n                  : 'No connection throttling'}\n              </Text>\n            </Box>\n          }\n          fallbackPlacements={['right', 'left']}\n          placement=\"bottom\"\n          portal\n        >\n          <Switch\n            checked={badConnection}\n            onChange={handleChange}\n            style={{\n              pointerEvents: 'auto',\n            }}\n          />\n        </Tooltip>\n      </Flex>\n    </Box>\n  )\n}\n\nexport default DebugControls\n","import * as z from 'zod'\n\n// Helper to generate localized string schema\nfunction localizedStringSchema(locales?: {id: string}[]) {\n  if (!locales || locales.length === 0) {\n    return z.string().trim().optional()\n  }\n  const shape: Record<string, z.ZodTypeAny> = {}\n  for (const locale of locales) {\n    shape[locale.id] = z.string().trim().optional()\n  }\n  return z.object(shape).passthrough()\n}\n\nexport const tagOptionSchema = z.object({\n  label: z.string().trim().min(1, {message: 'Label cannot be empty'}),\n  value: z.string().trim().min(1, {message: 'Value cannot be empty'}),\n})\n\nexport function getAssetFormSchema(locales?: {id: string}[]) {\n  return z.object({\n    altText: localizedStringSchema(locales),\n    creditLine: localizedStringSchema(locales),\n    description: localizedStringSchema(locales),\n    opt: z.object({\n      media: z.object({\n        tags: z.array(tagOptionSchema).nullable(),\n      }),\n    }),\n    originalFilename: z.string().trim().min(1, {message: 'Filename cannot be empty'}),\n    title: localizedStringSchema(locales),\n  })\n}\n\nexport const assetFormSchema = getAssetFormSchema()\n\nexport const tagFormSchema = z.object({\n  name: z.string().min(1, {message: 'Name cannot be empty'}),\n})\n","import type {SanityDocument} from '@sanity/client'\n\nexport function getUniqueDocuments(documents: SanityDocument[]): SanityDocument[] {\n  const draftIds = documents.reduce(\n    (acc: string[], doc: SanityDocument) =>\n      doc._id.startsWith('drafts.') ? acc.concat(doc._id.slice(7)) : acc,\n    [],\n  )\n\n  const filteredDocuments: SanityDocument[] = documents.filter(\n    (doc: SanityDocument) => !draftIds.includes(doc._id),\n  )\n\n  return filteredDocuments\n}\n","import type {ImageAsset} from '../types'\n\nconst imageDprUrl = (\n  asset: ImageAsset,\n  options: {\n    width: number\n    height?: number\n  },\n): string => {\n  const dpi =\n    typeof window === 'undefined' || !window.devicePixelRatio\n      ? 1\n      : Math.round(window.devicePixelRatio)\n  const imgH = options?.height ? options?.height * Math.max(1, dpi) : undefined\n  const imgW = options.width * Math.max(1, dpi)\n\n  const urlParams = new URLSearchParams()\n  urlParams.append('fit', 'max')\n  urlParams.append('w', imgW.toString())\n  if (imgH) {\n    urlParams.append('h', imgH.toString())\n  }\n\n  return `${asset.url}?${urlParams.toString()}`\n}\n\nexport default imageDprUrl\n","// Recursively sanitize form data:\n// - convert empty strings, undefined values and empty arrays to null (to correctly unset / delete fields)\n// - trim whitespace on string fleids\n\ntype FormData = Record<string, any>\n\nconst sanitizeFormData = (formData: FormData): FormData => {\n  return Object.keys(formData).reduce((acc: FormData, key) => {\n    const val = formData[key]\n\n    // TODO: refactor\n    if (typeof val === 'object' && val !== null && val.constructor !== Array) {\n      acc[key] = sanitizeFormData(val)\n    } else if (val === '' || typeof val === 'undefined' || val?.length === 0) {\n      acc[key] = null\n    } else if (typeof val === 'string' && val) {\n      acc[key] = formData[key].trim()\n    } else {\n      acc[key] = formData[key]\n    }\n\n    return acc\n  }, {})\n}\n\nexport default sanitizeFormData\n","import type {Asset, FileAsset, ImageAsset} from '../types'\n\nexport const isFileAsset = (asset: Asset): asset is FileAsset => {\n  return (asset as FileAsset)._type === 'sanity.fileAsset'\n}\n\nexport const isImageAsset = (asset: Asset): asset is ImageAsset => {\n  return (asset as ImageAsset)._type === 'sanity.imageAsset'\n}\n","import {zodResolver} from '@hookform/resolvers/zod'\nimport type {FieldValues, Resolver} from 'react-hook-form'\n\n/**\n * `@hookform/resolvers/zod` resolves its own `zod` typings through dependency\n * hoisting, which in this monorepo lands on zod v4, while this plugin authors its\n * form schemas with zod v3. The resolver accepts v3 schema instances correctly at\n * runtime, so this thin wrapper only bridges the type-only v3/v4 mismatch. The\n * react-hook-form field types stay fully checked at the call sites.\n */\nexport default function zodFormResolver<TFieldValues extends FieldValues>(\n  schema: unknown,\n): Resolver<TFieldValues> {\n  return zodResolver(\n    schema as Parameters<typeof zodResolver>[0],\n  ) as unknown as Resolver<TFieldValues>\n}\n","import type {ImageAsset} from '../types'\n\nconst getAssetResolution = (asset: ImageAsset) => {\n  return `${asset.metadata.dimensions.width}x${asset.metadata.dimensions.height}px`\n}\n\nexport default getAssetResolution\n","import {ClipboardIcon} from '@sanity/icons/Clipboard'\nimport {Button, Popover, Text} from '@sanity/ui'\nimport copy from 'copy-to-clipboard'\nimport {useEffect, useRef, useState} from 'react'\n\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\n\ntype Props = {\n  disabled?: boolean\n  url: string\n}\n\nconst ButtonAssetCopy = ({disabled, url}: Props) => {\n  const popoverProps = usePortalPopoverProps()\n  const refPopoverTimeout = useRef<ReturnType<typeof window.setTimeout>>(null)\n  const [popoverVisible, setPopoverVisible] = useState(false)\n\n  const handleClick = () => {\n    if (refPopoverTimeout.current) {\n      clearTimeout(refPopoverTimeout.current)\n    }\n\n    setPopoverVisible(true)\n    copy(url)\n\n    refPopoverTimeout.current = setTimeout(() => {\n      setPopoverVisible(false)\n    }, 1250)\n  }\n\n  // Effects\n  useEffect(() => {\n    return () => {\n      if (refPopoverTimeout.current) {\n        clearTimeout(refPopoverTimeout.current)\n      }\n    }\n  }, [])\n\n  return (\n    <Popover\n      content={\n        <Text muted size={1}>\n          Copied!\n        </Text>\n      }\n      open={popoverVisible}\n      padding={2}\n      placement=\"top\"\n      radius={1}\n      {...popoverProps}\n    >\n      <Button\n        disabled={disabled}\n        fontSize={1}\n        icon={ClipboardIcon}\n        mode=\"ghost\"\n        onClick={handleClick}\n        text=\"Copy URL\"\n      />\n    </Popover>\n  )\n}\n\nexport default ButtonAssetCopy\n","import {DownloadIcon} from '@sanity/icons/Download'\nimport {Box, Button, Flex, Inline, Stack, Text} from '@sanity/ui'\nimport {format} from 'date-fns'\nimport filesize from 'filesize'\nimport {type ReactNode} from 'react'\n\nimport type {Asset, AssetItem} from '../../types'\nimport getAssetResolution from '../../utils/getAssetResolution'\nimport {isImageAsset} from '../../utils/typeGuards'\nimport ButtonAssetCopy from '../ButtonAssetCopy'\n\ntype Props = {\n  asset: Asset\n  item?: AssetItem\n}\n\nconst Row = ({label, value}: {label: string; value: ReactNode}) => {\n  return (\n    <Flex justify=\"space-between\">\n      <Text\n        size={1}\n        style={{\n          opacity: 0.8,\n          width: '40%',\n        }}\n        textOverflow=\"ellipsis\"\n      >\n        {label}\n      </Text>\n      <Text\n        size={1}\n        style={{\n          opacity: 0.4,\n          textAlign: 'right',\n          width: '60%',\n        }}\n        textOverflow=\"ellipsis\"\n      >\n        {value}\n      </Text>\n    </Flex>\n  )\n}\n\nconst AssetMetadata = (props: Props) => {\n  const {asset, item} = props\n\n  const exif = asset?.metadata?.exif\n\n  // Callbacks\n  const handleDownload = () => {\n    window.location.href = `${asset.url}?dl=${asset.originalFilename}`\n  }\n\n  return (\n    <Box marginTop={3}>\n      {/* Base */}\n      <Box>\n        <Stack space={3}>\n          <Row label=\"Size\" value={filesize(asset?.size, {base: 10, round: 0})} />\n          <Row label=\"MIME type\" value={asset?.mimeType} />\n          <Row label=\"Extension\" value={asset?.extension?.toUpperCase()} />\n          {isImageAsset(asset) && <Row label=\"Dimensions\" value={getAssetResolution(asset)} />}\n        </Stack>\n      </Box>\n      {/* EXIF */}\n      {exif &&\n        (exif.DateTimeOriginal ||\n          exif.FNumber ||\n          exif.FocalLength ||\n          exif.ExposureTime ||\n          exif.ISO) && (\n          <>\n            {/* Divider */}\n            <Box\n              marginY={4}\n              style={{\n                background: 'var(--card-border-color)',\n                height: '1px',\n                width: '100%',\n              }}\n            />\n            <Box>\n              <Stack space={3}>\n                {exif.ISO && <Row label=\"ISO\" value={exif.ISO} />}\n                {exif.FNumber && <Row label=\"Aperture\" value={`ƒ/${exif.FNumber}`} />}\n                {exif.FocalLength && <Row label=\"Focal length\" value={`${exif.FocalLength}mm`} />}\n                {exif.ExposureTime && (\n                  <Row label=\"Exposure time\" value={`1/${1 / exif.ExposureTime}`} />\n                )}\n                {exif.DateTimeOriginal && (\n                  <Row\n                    label=\"Original date\"\n                    value={format(new Date(exif.DateTimeOriginal), 'PPp')}\n                  />\n                )}\n              </Stack>\n            </Box>\n          </>\n        )}\n\n      {/* Asset actions */}\n      <Box marginTop={5}>\n        <Inline space={2}>\n          {/* Download */}\n          <Button\n            disabled={!item || item?.updating}\n            fontSize={1}\n            icon={DownloadIcon}\n            mode=\"ghost\"\n            onClick={handleDownload}\n            text=\"Download\"\n          />\n          {/* Copy to clipboard */}\n          <ButtonAssetCopy disabled={!item || item?.updating} url={asset.url} />\n        </Inline>\n      </Box>\n    </Box>\n  )\n}\n\nexport default AssetMetadata\n","import {Dialog as SanityDialog} from '@sanity/ui'\nimport {type ComponentProps} from 'react'\n\nconst Dialog = (props: ComponentProps<typeof SanityDialog>) => {\n  // HACK: Temporarily force fixed positioning on all @sanity/ui <Dialog /> components.\n  // The studio is currently setting absolute positioning on all root-level dialogs on the mobile breakpoint,\n  // causing unwanted scroll behaviour.\n  return <SanityDialog {...props} style={{position: 'fixed'}} />\n}\n\nexport default Dialog\n","import type {SanityDocument} from '@sanity/client'\nimport {Box, Button, Card, Stack, Text} from '@sanity/ui'\nimport {Preview, type SchemaType, useSchema} from 'sanity'\nimport {useIntentLink} from 'sanity/router'\n\ntype Props = {\n  documents: SanityDocument[]\n  isLoading: boolean\n}\n\nconst DocumentList = ({documents, isLoading}: Props) => {\n  const schema = useSchema()\n\n  if (isLoading) {\n    return (\n      <Text muted size={1}>\n        Loading...\n      </Text>\n    )\n  }\n\n  if (documents.length === 0) {\n    return (\n      <Text muted size={1}>\n        No documents are referencing this asset\n      </Text>\n    )\n  }\n\n  return (\n    <Card flex={1} marginBottom={2} padding={2} radius={2} shadow={1}>\n      <Stack space={2}>\n        {documents?.map((doc) => (\n          <ReferringDocument doc={doc} key={doc._id} schemaType={schema.get(doc._type)} />\n        ))}\n      </Stack>\n    </Card>\n  )\n}\n\nconst ReferringDocument = (props: {doc: SanityDocument; schemaType?: SchemaType}) => {\n  const {doc, schemaType} = props\n\n  const {onClick} = useIntentLink({\n    intent: 'edit',\n    params: {id: doc._id},\n  })\n\n  return schemaType ? (\n    <Button key={doc._id} mode=\"bleed\" onClick={onClick} padding={2} style={{width: '100%'}}>\n      <Preview layout=\"default\" schemaType={schemaType} value={doc} />\n    </Button>\n  ) : (\n    <Box padding={2}>\n      <Text size={1}>\n        A document of the unknown type <em>{doc._type}</em>\n      </Text>\n    </Box>\n  )\n}\n\nexport default DocumentList\n","import {Box, Flex, type Theme} from '@sanity/ui'\nimport {type MouseEvent} from 'react'\nimport {defaultStyles, FileIcon as ReactFileIcon} from 'react-file-icon'\nimport type {DefaultExtensionType} from 'react-file-icon'\nimport {styled, css} from 'styled-components'\n\ntype Props = {\n  extension?: string\n  onClick?: (e: MouseEvent) => void\n  width: string\n}\n\n// Force react-file-icon styles\nconst Container = styled(Box)(({theme}: {theme: Theme}) => {\n  return css`\n    text {\n      font-family: ${theme.sanity.fonts.text.family} !important;\n      font-size: 8px !important;\n      font-weight: 500 !important;\n    }\n  `\n})\n\nconst FileIcon = (props: Props) => {\n  const {extension, onClick, width} = props\n\n  return (\n    <Flex align=\"center\" justify=\"center\" onClick={onClick} style={{height: '100%'}}>\n      <Container style={{width}}>\n        {extension ? (\n          <ReactFileIcon\n            extension={extension}\n            {...defaultStyles[extension as DefaultExtensionType]}\n          />\n        ) : (\n          <ReactFileIcon />\n        )}\n      </Container>\n    </Flex>\n  )\n}\n\nexport default FileIcon\n","import {Flex} from '@sanity/ui'\n\nimport type {Asset} from '../../types'\nimport FileIcon from '../FileIcon'\n\ntype Props = {\n  asset: Asset\n}\n\nconst FileAssetPreview = (props: Props) => {\n  const {asset} = props\n\n  if (asset.mimeType.search('audio') === 0) {\n    return (\n      <Flex align=\"center\" justify=\"center\" style={{height: '100%'}}>\n        <audio controls src={asset.url} style={{width: '100%'}} />\n      </Flex>\n    )\n  }\n\n  if (asset.mimeType.search('video') === 0) {\n    return (\n      <video\n        controls\n        src={asset.url}\n        style={{\n          height: '100%',\n          width: '100%',\n        }}\n      />\n    )\n  }\n\n  return <FileIcon extension={asset.extension} width=\"50%\" />\n}\n\nexport default FileAssetPreview\n","import {Box, Button, Text, Tooltip} from '@sanity/ui'\nimport {format} from 'date-fns'\nimport {type ReactNode} from 'react'\n\ntype Props = {\n  disabled: boolean\n  isValid: boolean\n  lastUpdated?: string\n  onClick: () => void\n}\n\nconst FormSubmitButton = (props: Props) => {\n  const {disabled, isValid, lastUpdated, onClick} = props\n\n  let content: ReactNode\n  if (isValid) {\n    if (lastUpdated) {\n      content = (\n        <>\n          Last updated\n          <br /> {format(new Date(lastUpdated), 'PPp')}\n        </>\n      )\n    } else {\n      content = 'No unpublished changes'\n    }\n  } else {\n    content =\n      'There are validation errors that need to be fixed before this document can be published'\n  }\n\n  return (\n    <Tooltip\n      animate\n      content={\n        <Box padding={3} style={{maxWidth: '185px'}}>\n          <Text muted size={1}>\n            {content}\n          </Text>\n        </Box>\n      }\n      disabled={'ontouchstart' in window}\n      placement=\"top\"\n      portal\n    >\n      <Box>\n        <Button\n          disabled={disabled}\n          fontSize={1}\n          onClick={onClick}\n          text=\"Save and close\"\n          tone=\"primary\"\n        />\n      </Box>\n    </Tooltip>\n  )\n}\n\nexport default FormSubmitButton\n","import type {ThemeColorSchemeKey} from '@sanity/ui'\nimport type {MouseEvent} from 'react'\nimport {styled, css} from 'styled-components'\n\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n  onClick?: (e: MouseEvent) => void\n  $showCheckerboard?: boolean\n  $scheme?: ThemeColorSchemeKey\n  src: string\n  style?: any\n}\n\nconst Image = styled.img<Props>`\n  --checkerboard-color: ${(props) =>\n    props.$scheme ? getSchemeColor(props.$scheme, 'bg2') : 'inherit'};\n\n  display: block;\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n\n  ${(props) =>\n    props.$showCheckerboard &&\n    css`\n      background-image:\n        linear-gradient(45deg, var(--checkerboard-color) 25%, transparent 25%),\n        linear-gradient(-45deg, var(--checkerboard-color) 25%, transparent 25%),\n        linear-gradient(45deg, transparent 75%, var(--checkerboard-color) 75%),\n        linear-gradient(-45deg, transparent 75%, var(--checkerboard-color) 75%);\n      background-size: 20px 20px;\n      background-position:\n        0 0,\n        0 10px,\n        10px -10px,\n        -10px 0;\n    `}\n`\n\nexport default Image\n","import {AddIcon} from '@sanity/icons/Add'\nimport {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Card, Flex, rem, studioTheme, Text, type ThemeColorSchemeKey} from '@sanity/ui'\nimport {components, type StylesConfig} from 'react-select'\nimport {Virtuoso} from 'react-virtuoso'\n\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\nconst {radius: themeRadius, space: themeSpace} = studioTheme\n\nexport const reactSelectStyles = (scheme: ThemeColorSchemeKey): StylesConfig => {\n  return {\n    control: (styles, {isFocused}) => {\n      let boxShadow = `inset 0 0 0 1px var(--card-border-color)`\n      if (isFocused) {\n        boxShadow = `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputEnabledBorder')},\n        0 0 0 1px var(--card-bg-color),\n        0 0 0 3px var(--card-focus-ring-color) !important`\n      }\n\n      return {\n        ...styles,\n        'backgroundColor': 'var(--card-bg-color)',\n        'color': 'inherit',\n        'border': 'none',\n        'borderRadius': themeRadius[1],\n        boxShadow,\n        'margin': 0,\n        'minHeight': '35px',\n        'outline': 'none',\n        'padding': rem(themeSpace[1]!),\n        'transition': 'none',\n        '&:hover': {\n          boxShadow: `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputHoveredBorder')}`,\n        },\n      }\n    },\n    indicatorsContainer: (styles, {isDisabled}) => ({\n      ...styles,\n      opacity: isDisabled ? 0.25 : 1,\n    }),\n    input: (styles) => ({\n      ...styles,\n      color: 'var(--card-fg-color)',\n      fontFamily: studioTheme.fonts.text.family,\n      marginLeft: rem(themeSpace[2]!),\n    }),\n    menuList: (styles) => ({\n      ...styles,\n    }),\n    multiValue: (styles, {isDisabled}) => ({\n      ...styles,\n      backgroundColor: getSchemeColor(scheme, 'mutedHoveredBg'),\n      borderRadius: themeRadius[2],\n      opacity: isDisabled ? 0.5 : 1,\n    }),\n    multiValueLabel: () => ({\n      color: getSchemeColor(scheme, 'mutedHoveredFg'),\n      fontSize: 'inherit',\n      padding: 0,\n    }),\n    multiValueRemove: (styles) => ({\n      ...styles,\n      'borderTopLeftRadius': 0,\n      'borderBottomLeftRadius': 0,\n      'svg': {color: getSchemeColor(scheme, 'mutedHoveredFg')},\n      '&:hover': {\n        backgroundColor: getSchemeColor(scheme, 'mutedSelectedBg'),\n      },\n    }),\n    noOptionsMessage: (styles) => ({\n      ...styles,\n      fontFamily: studioTheme.fonts.text.family,\n      lineHeight: '1em',\n    }),\n    option: (styles, {isFocused}) => ({\n      ...styles,\n      'backgroundColor': isFocused ? getSchemeColor(scheme, 'spotBlue') : 'transparent',\n      'borderRadius': themeRadius[2],\n      'color': isFocused ? getSchemeColor(scheme, 'bg') : 'inherit',\n      'padding': `${rem(themeSpace[1]!)} ${rem(themeSpace[2]!)}`,\n      '&:hover': {\n        backgroundColor: getSchemeColor(scheme, 'spotBlue'),\n        color: getSchemeColor(scheme, 'bg'),\n      },\n    }),\n    placeholder: (styles) => ({\n      ...styles,\n      marginLeft: rem(themeSpace[2]!),\n    }),\n    valueContainer: (styles) => ({\n      ...styles,\n      margin: 0,\n      padding: 0,\n    }),\n  }\n}\n\nconst DropdownIndicator = (props: any) => {\n  return (\n    <components.DropdownIndicator {...props}>\n      <Box paddingX={2}>\n        <Text size={1}>\n          <ChevronDownIcon />\n        </Text>\n      </Box>\n    </components.DropdownIndicator>\n  )\n}\n\nconst Menu = (props: any) => {\n  return (\n    <components.Menu {...props}>\n      <Card radius={1} shadow={2}>\n        {props.children}\n      </Card>\n    </components.Menu>\n  )\n}\n\nconst MenuList = (props: any) => {\n  const {children} = props\n\n  const MAX_ROWS = 5\n  const OPTION_HEIGHT = 37\n\n  if (Array.isArray(children)) {\n    const height =\n      children.length > MAX_ROWS ? OPTION_HEIGHT * MAX_ROWS : children.length * OPTION_HEIGHT\n\n    return (\n      <Virtuoso\n        className=\"media__custom-scrollbar\"\n        itemContent={(index) => {\n          const item = children[index]\n          return <Option {...item.props} />\n        }}\n        style={{height}}\n        totalCount={children.length}\n      />\n    )\n  }\n  return <components.MenuList {...props}>{children}</components.MenuList>\n}\n\nconst MultiValueLabel = (props: any) => {\n  return (\n    <Box padding={2} paddingRight={1}>\n      <Text size={1} weight=\"medium\">\n        <components.MultiValueLabel {...props} />\n      </Text>\n    </Box>\n  )\n}\n\nconst MultiValueRemove = (props: any) => {\n  return (\n    <components.MultiValueRemove {...props}>\n      <CloseIcon color=\"#1f2123\" />\n    </components.MultiValueRemove>\n  )\n}\n\nconst Option = (props: any) => {\n  return (\n    <Box paddingX={1} paddingY={1}>\n      <components.Option {...props}>\n        <Flex align=\"center\">\n          {props.data.__isNew__ && <AddIcon style={{marginRight: '3px'}} />}\n          {props.children}\n        </Flex>\n      </components.Option>\n    </Box>\n  )\n}\n\nexport const reactSelectComponents = {\n  DropdownIndicator,\n  IndicatorSeparator: null,\n  Menu,\n  MenuList,\n  MultiValueLabel,\n  MultiValueRemove,\n  Option,\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Inline, Text, Tooltip} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\ntype Props = {\n  description?: string\n  error?: string\n  label: string\n  name: string\n}\n\nconst StyledErrorOutlineIcon = styled(ErrorOutlineIcon)(({theme}) => {\n  return {\n    color: theme.sanity.color.spot.red,\n  }\n})\n\nconst FormFieldInputLabel = (props: Props) => {\n  const {description, error, label, name} = props\n\n  return (\n    <>\n      {/* Label */}\n      <Box marginY={3}>\n        <Inline space={2}>\n          <Text as=\"label\" htmlFor={name} size={1} weight=\"semibold\">\n            {label}\n          </Text>\n\n          {/* Error icon + tooltip */}\n          {error && (\n            <Text size={1}>\n              <Tooltip\n                animate\n                content={\n                  <Box padding={2}>\n                    <Text muted size={1}>\n                      <StyledErrorOutlineIcon style={{marginRight: '0.1em'}} />\n                      {error}\n                    </Text>\n                  </Box>\n                }\n                fallbackPlacements={['top', 'left']}\n                placement=\"right\"\n                portal\n              >\n                <StyledErrorOutlineIcon />\n              </Tooltip>\n            </Text>\n          )}\n        </Inline>\n      </Box>\n\n      {/* Description */}\n      {description && (\n        <Box marginY={3}>\n          <Text as=\"label\" htmlFor={name} muted size={1}>\n            {description}\n          </Text>\n        </Box>\n      )}\n    </>\n  )\n}\n\nexport default FormFieldInputLabel\n","import {Box} from '@sanity/ui'\nimport {Controller} from 'react-hook-form'\nimport CreatableSelect from 'react-select/creatable'\nimport {useColorSchemeValue} from 'sanity'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {reactSelectComponents, reactSelectStyles} from '../../styled/react-select/creatable'\nimport type {TagSelectOption} from '../../types'\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n  control: any\n  description?: string\n  disabled?: boolean\n  error?: string\n  label: string\n  name: string\n  onCreateTag: (tagName: string) => void\n  options: {\n    label: string\n    value: string\n  }[]\n  placeholder?: string\n  value?: TagSelectOption[] | null\n}\n\nconst FormFieldInputTags = (props: Props) => {\n  const {\n    control,\n    description,\n    disabled,\n    error,\n    label,\n    name,\n    onCreateTag,\n    options,\n    placeholder,\n    value,\n  } = props\n\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const creating = useTypedSelector((state) => state.tags.creating)\n  const tagsFetching = useTypedSelector((state) => state.tags.fetching)\n\n  return (\n    <Box\n      // HACK: force stacking context to ensure react-select dropdown sits above other fields\n      style={{zIndex: 2}}\n    >\n      {/* Label */}\n      <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n\n      {/* Select */}\n      <Controller\n        control={control}\n        defaultValue={value}\n        name={name}\n        render={({field}) => {\n          const {onBlur, onChange, value: controllerValue} = field\n          // TODO: investigate overriding `onChange` and updating form state manually.\n          // `opt.media.tags` is initialised with `null` as a defaultValue in react-hook-form\n          // Ideally, we'd be able to set `opt.media.tags` as null when all items are cleared, rather than\n          // setting it to an empty array (which is currently causing false positives in denoting whether the form is dirty)\n          //\n          // To illustrate this issue:\n          // - Edit an asset with no tags\n          // - Add a new tag (either an existing one, or create one inline)\n          // - Remove the tag you've just created\n          //\n          // At this point, the form will still be marked as dirty when it shouldnt be\n          return (\n            <CreatableSelect\n              components={reactSelectComponents}\n              instanceId=\"tags\"\n              isClearable={false} // TODO: re-enable when we're able to correctly (manually) re-validate on clear\n              isDisabled={creating || disabled || tagsFetching}\n              isLoading={creating}\n              isMulti\n              name={name}\n              noOptionsMessage={() => 'No tags'}\n              onBlur={onBlur}\n              onChange={onChange}\n              onCreateOption={onCreateTag}\n              options={options}\n              placeholder={tagsFetching ? 'Loading...' : placeholder}\n              styles={reactSelectStyles(scheme)}\n              value={controllerValue}\n            />\n          )\n        }}\n      />\n    </Box>\n  )\n}\n\nexport default FormFieldInputTags\n","import {Box, TextInput} from '@sanity/ui'\nimport {type Ref} from 'react'\n\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n  description?: string\n  disabled?: boolean\n  error?: string\n  label: string\n  name: string\n  placeholder?: string\n  value?: string\n  ref?: Ref<HTMLInputElement>\n}\n\nconst FormFieldInputText = (props: Props) => {\n  const {description, disabled, error, label, name, placeholder, value, ref, ...rest} = props\n\n  return (\n    <Box>\n      {/* Label */}\n      <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n      {/* Input */}\n      <TextInput\n        {...rest}\n        autoComplete=\"off\"\n        autoFocus\n        defaultValue={value}\n        disabled={disabled}\n        id={name}\n        name={name}\n        placeholder={placeholder}\n        ref={ref}\n      />\n    </Box>\n  )\n}\n\nexport default FormFieldInputText\n","import {Box, TextArea} from '@sanity/ui'\nimport {type Ref} from 'react'\n\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n  description?: string\n  disabled?: boolean\n  error?: string\n  label: string\n  name: string\n  placeholder?: string\n  rows?: number\n  value?: string\n  ref?: Ref<HTMLTextAreaElement>\n}\n\nconst FormFieldInputTextarea = (props: Props) => {\n  const {description, disabled, error, label, name, placeholder, rows, value, ref, ...rest} = props\n\n  return (\n    <Box>\n      {/* Label */}\n      <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n\n      {/* Input */}\n      <TextArea\n        {...rest}\n        autoComplete=\"off\"\n        defaultValue={value}\n        disabled={disabled}\n        id={name}\n        name={name}\n        placeholder={placeholder}\n        ref={ref}\n        rows={rows}\n      />\n    </Box>\n  )\n}\n\nexport default FormFieldInputTextarea\n","import {Card, Stack, Tab, TabList, TabPanel} from '@sanity/ui'\nimport {useState} from 'react'\nimport {type Control, type FieldErrors, type UseFormRegister} from 'react-hook-form'\n\nimport type {Asset, AssetFormData, Locale, TagSelectOption} from '../../types'\nimport FormFieldInputTags from '../FormFieldInputTags'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormFieldInputTextarea from '../FormFieldInputTextarea'\n\ntype LocalizedErrors = Record<string, {message?: string} | undefined>\n\n// When locales are not configured, extract a plain string from a potentially localized field\nfunction toStringField(value: unknown): string | undefined {\n  if (typeof value === 'string') return value\n  if (typeof value === 'object' && value !== null) {\n    const found = Object.values(value as Record<string, string>).find((v) => v)\n    return found || undefined\n  }\n  return undefined\n}\n\nexport type DetailsProps = {\n  formUpdating: boolean\n  handleCreateTag: (title: string) => void\n  control: Control<AssetFormData>\n  errors: FieldErrors<AssetFormData>\n  register: UseFormRegister<AssetFormData>\n  allTagOptions: TagSelectOption[]\n  assetTagOptions: TagSelectOption[] | null\n  currentAsset: Asset\n  creditLine?: {\n    enabled: boolean\n    excludeSources?: string | string[] | undefined\n  }\n  locales?: Locale[]\n}\n\nexport default function Details({\n  formUpdating,\n  handleCreateTag,\n  control,\n  errors,\n  register,\n  allTagOptions,\n  assetTagOptions,\n  currentAsset,\n  creditLine,\n  locales,\n}: DetailsProps) {\n  const hasLocales = locales && locales.length > 0\n  const [activeLocaleTab, setActiveLocaleTab] = useState(0)\n  return (\n    <Stack space={3}>\n      {/* Tags */}\n      <FormFieldInputTags\n        control={control}\n        disabled={formUpdating}\n        error={errors?.opt?.media?.tags?.message}\n        label=\"Tags\"\n        name=\"opt.media.tags\"\n        onCreateTag={handleCreateTag}\n        options={allTagOptions}\n        placeholder=\"Select or create...\"\n        value={assetTagOptions}\n      />\n      {/* Filename */}\n      <FormFieldInputText\n        {...register('originalFilename')}\n        disabled={formUpdating}\n        error={errors?.originalFilename?.message}\n        label=\"Filename\"\n        name=\"originalFilename\"\n        value={currentAsset?.originalFilename}\n      />\n      {/* Localized fields grouped by language */}\n      {hasLocales ? (\n        <Card marginTop={2} shadow={1} padding={3} radius={1}>\n          <Stack space={2}>\n            <TabList space={2}>\n              {locales.map((locale, idx) => (\n                <Tab\n                  key={locale.id}\n                  id={`locale-tab-${locale.id}`}\n                  aria-controls={`locale-panel-${locale.id}`}\n                  selected={activeLocaleTab === idx}\n                  onClick={() => setActiveLocaleTab(idx)}\n                  label={locale.title}\n                />\n              ))}\n            </TabList>\n            {locales.map((locale, idx) => (\n              <TabPanel\n                key={locale.id}\n                id={`locale-panel-${locale.id}`}\n                aria-labelledby={`locale-tab-${locale.id}`}\n                hidden={activeLocaleTab !== idx}\n              >\n                <Stack space={3}>\n                  <FormFieldInputText\n                    {...register(`title.${locale.id}` as const)}\n                    disabled={formUpdating}\n                    error={(errors?.title as LocalizedErrors)?.[locale.id]?.message}\n                    label=\"Title\"\n                    name={`title.${locale.id}`}\n                  />\n                  <FormFieldInputText\n                    {...register(`altText.${locale.id}` as const)}\n                    disabled={formUpdating}\n                    error={(errors?.altText as LocalizedErrors)?.[locale.id]?.message}\n                    label=\"Alt Text\"\n                    name={`altText.${locale.id}`}\n                  />\n                  <FormFieldInputTextarea\n                    {...register(`description.${locale.id}` as const)}\n                    disabled={formUpdating}\n                    error={(errors?.description as LocalizedErrors)?.[locale.id]?.message}\n                    label=\"Description\"\n                    name={`description.${locale.id}`}\n                    rows={5}\n                  />\n                  {creditLine?.enabled && (\n                    <FormFieldInputText\n                      {...register(`creditLine.${locale.id}` as const)}\n                      error={(errors?.creditLine as LocalizedErrors)?.[locale.id]?.message}\n                      label=\"Credit\"\n                      name={`creditLine.${locale.id}`}\n                      disabled={\n                        formUpdating ||\n                        creditLine?.excludeSources?.includes(currentAsset?.['source']?.name)\n                      }\n                    />\n                  )}\n                </Stack>\n              </TabPanel>\n            ))}\n          </Stack>\n        </Card>\n      ) : (\n        <>\n          <FormFieldInputText\n            {...register('title')}\n            disabled={formUpdating}\n            error={errors?.title?.message}\n            label=\"Title\"\n            name=\"title\"\n            value={toStringField(currentAsset?.title)}\n          />\n          <FormFieldInputText\n            {...register('altText')}\n            disabled={formUpdating}\n            error={errors?.altText?.message}\n            label=\"Alt Text\"\n            name=\"altText\"\n            value={toStringField(currentAsset?.altText)}\n          />\n          <FormFieldInputTextarea\n            {...register('description')}\n            disabled={formUpdating}\n            error={errors?.description?.message}\n            label=\"Description\"\n            name=\"description\"\n            rows={5}\n            value={toStringField(currentAsset?.description)}\n          />\n          {creditLine?.enabled && (\n            <FormFieldInputText\n              {...register('creditLine')}\n              error={errors?.creditLine?.message}\n              label=\"Credit\"\n              name=\"creditLine\"\n              value={toStringField(currentAsset?.creditLine)}\n              disabled={\n                formUpdating || creditLine?.excludeSources?.includes(currentAsset?.['source']?.name)\n              }\n            />\n          )}\n        </>\n      )}\n    </Stack>\n  )\n}\n","import type {MutationEvent} from '@sanity/client'\nimport {Box, Button, Card, Flex, Stack, Tab, TabList, TabPanel, Text} from '@sanity/ui'\nimport groq from 'groq'\nimport {type ReactNode, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {type SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\nimport {WithReferringDocuments, useColorSchemeValue, useDocumentStore} from 'sanity'\n\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport {getAssetFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {assetsActions, selectAssetById} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {selectTags, selectTagSelectOptions, tagsActions} from '../../modules/tags'\nimport type {Asset, AssetFormData, DialogAssetEditProps, TagSelectOption} from '../../types'\nimport getTagSelectOptions from '../../utils/getTagSelectOptions'\nimport {getUniqueDocuments} from '../../utils/getUniqueDocuments'\nimport imageDprUrl from '../../utils/imageDprUrl'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport {isFileAsset, isImageAsset} from '../../utils/typeGuards'\nimport zodFormResolver from '../../utils/zodFormResolver'\nimport AssetMetadata from '../AssetMetadata'\nimport Dialog from '../Dialog'\nimport DocumentList from '../DocumentList'\nimport FileAssetPreview from '../FileAssetPreview'\nimport FormSubmitButton from '../FormSubmitButton'\nimport Image from '../Image'\nimport Details, {type DetailsProps} from './Details'\n\nfunction renderDefaultDetails(props: DetailsProps) {\n  return <Details {...props} />\n}\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogAssetEditProps\n}\n\nconst DialogAssetEdit = (props: Props) => {\n  const {\n    children,\n    dialog: {assetId, id, lastCreatedTag, lastRemovedTagIds},\n  } = props\n\n  const client = useVersionedClient()\n  const scheme = useColorSchemeValue()\n\n  const documentStore = useDocumentStore()\n\n  const dispatch = useDispatch()\n  const assetItem = useTypedSelector((state) => selectAssetById(state, String(assetId))) // TODO: check casting\n  const tags = useTypedSelector(selectTags)\n\n  const assetUpdatedPrev = useRef<string | undefined>(undefined)\n\n  // Generate a snapshot of the current asset\n  const [assetSnapshot, setAssetSnapshot] = useState(assetItem?.asset)\n  const [tabSection, setTabSection] = useState<'details' | 'references'>('details')\n\n  const currentAsset = assetItem ? assetItem?.asset : assetSnapshot\n  const allTagOptions = getTagSelectOptions(tags)\n\n  const assetTagOptions = useTypedSelector(selectTagSelectOptions(currentAsset))\n\n  // Check if credit line options are configured\n  const {creditLine, components: {details: CustomDetails} = {}, locales} = useToolOptions()\n\n  const generateDefaultValues = useCallback(\n    (asset?: Asset): AssetFormData => {\n      if (locales && locales.length > 0) {\n        const makeLocaleObj = (field?: Record<string, string> | string) => {\n          const obj: Record<string, string> = {}\n          for (let i = 0; i < locales.length; i++) {\n            const locale = locales[i]!\n            if (typeof field === 'object' && field && field[locale.id]) {\n              obj[locale.id] = field[locale.id]!\n            } else if (typeof field === 'string') {\n              // Only populate the first locale to avoid spreading a legacy value\n              // across all languages; the user should fill in other translations manually\n              obj[locale.id] = i === 0 ? field : ''\n            } else {\n              obj[locale.id] = ''\n            }\n          }\n          return obj\n        }\n        return {\n          altText: makeLocaleObj(asset?.altText),\n          creditLine: makeLocaleObj(asset?.creditLine),\n          description: makeLocaleObj(asset?.description),\n          originalFilename: asset?.originalFilename || '',\n          opt: {media: {tags: assetTagOptions}},\n          title: makeLocaleObj(asset?.title),\n        }\n      }\n      // Normalize: if a field is a localized object but locales are disabled, pick first non-empty value\n      const flattenField = (field: unknown): string => {\n        if (typeof field === 'string') return field\n        if (typeof field === 'object' && field !== null) {\n          const values = Object.values(field as Record<string, string>)\n          return values.find((v) => v) || ''\n        }\n        return ''\n      }\n      return {\n        altText: flattenField(asset?.altText),\n        creditLine: flattenField(asset?.creditLine),\n        description: flattenField(asset?.description),\n        originalFilename: asset?.originalFilename || '',\n        opt: {media: {tags: assetTagOptions}},\n        title: flattenField(asset?.title),\n      }\n    },\n    [assetTagOptions, locales],\n  )\n\n  const {\n    control,\n    // Read the formState before render to subscribe the form state through Proxy\n    formState: {errors, isDirty, isValid},\n    getValues,\n    handleSubmit,\n    register,\n    reset,\n    setValue,\n  } = useForm<AssetFormData>({\n    defaultValues: generateDefaultValues(assetItem?.asset),\n    mode: 'onChange',\n    resolver: zodFormResolver<AssetFormData>(getAssetFormSchema(locales)),\n  })\n\n  const formUpdating = !assetItem || assetItem?.updating\n\n  const handleClose = useCallback(() => {\n    dispatch(dialogActions.remove({id}))\n  }, [dispatch, id])\n\n  const handleDelete = useCallback(() => {\n    if (!assetItem?.asset) {\n      return\n    }\n\n    dispatch(\n      dialogActions.showConfirmDeleteAssets({\n        assets: [assetItem],\n        closeDialogId: assetItem?.asset._id,\n      }),\n    )\n  }, [assetItem, dispatch])\n\n  const handleAssetUpdate = useCallback((update: MutationEvent) => {\n    const {result, transition} = update\n    if (result && transition === 'update') {\n      // Regenerate asset snapshot\n      setAssetSnapshot(result as Asset)\n    }\n  }, [])\n\n  const handleCreateTag = useCallback(\n    (tagName: string) => {\n      // Dispatch action to create new tag\n      dispatch(\n        tagsActions.createRequest({\n          assetId: currentAsset?._id,\n          name: tagName,\n        }),\n      )\n    },\n    [currentAsset?._id, dispatch],\n  )\n\n  // Detect if asset has localized fields (objects) with keys not in the configured locales\n  const hasOrphanedLocales = useMemo(() => {\n    if (!currentAsset) return false\n    const isLocaleObj = (v: unknown) => typeof v === 'object' && v !== null && !Array.isArray(v)\n    const fields = [\n      currentAsset.title,\n      currentAsset.altText,\n      currentAsset.description,\n      ...(currentAsset._type === 'sanity.imageAsset' ? [currentAsset.creditLine] : []),\n    ]\n    const anyLocalized = fields.some((f) => isLocaleObj(f))\n    if (!anyLocalized) return false\n    if (!locales || locales.length === 0) return true\n    const configuredIds = new Set(locales.map((l) => l.id))\n    return fields.some((f) => {\n      if (!isLocaleObj(f)) return false\n      return Object.keys(f as object).some((k) => !configuredIds.has(k))\n    })\n  }, [currentAsset, locales])\n\n  const handleCleanupLocales = useCallback(async () => {\n    if (!currentAsset) return\n\n    const cleanField = (field: unknown): unknown => {\n      if (typeof field !== 'object' || field === null || Array.isArray(field)) return field\n      const obj = field as Record<string, string>\n      if (!locales || locales.length === 0) {\n        // Pick the first non-empty value sorted by key for determinism\n        const sorted = Object.keys(obj).sort()\n        return sorted.map((k) => obj[k]).find((v) => v) || ''\n      }\n      const configuredIds = new Set(locales.map((l) => l.id))\n      const cleaned: Record<string, string> = {}\n      for (const [key, val] of Object.entries(obj)) {\n        if (configuredIds.has(key)) cleaned[key] = val\n      }\n      return cleaned\n    }\n\n    await client\n      .patch(currentAsset._id)\n      .set({\n        title: cleanField(currentAsset.title),\n        altText: cleanField(currentAsset.altText),\n        description: cleanField(currentAsset.description),\n        ...(currentAsset._type === 'sanity.imageAsset' && {\n          creditLine: cleanField(currentAsset.creditLine),\n        }),\n      })\n      .commit()\n  }, [client, currentAsset, locales])\n\n  // Submit react-hook-form\n  const onSubmit: SubmitHandler<AssetFormData> = useCallback(\n    (formData) => {\n      if (!assetItem?.asset) {\n        return\n      }\n\n      const sanitizedFormData = sanitizeFormData(formData)\n\n      dispatch(\n        assetsActions.updateRequest({\n          asset: assetItem?.asset,\n          closeDialogId: assetItem?.asset._id,\n          formData: {\n            ...sanitizedFormData,\n            // Map tags to sanity references\n            opt: {\n              media: {\n                ...sanitizedFormData['opt'].media,\n                tags:\n                  sanitizedFormData['opt'].media.tags?.map((tag: TagSelectOption) => ({\n                    _ref: tag.value,\n                    _type: 'reference',\n                    _weak: true,\n                  })) || null,\n              },\n            },\n          },\n        }),\n      )\n    },\n    [assetItem?.asset, dispatch],\n  )\n\n  // Listen for asset mutations and update snapshot\n  useEffect(() => {\n    if (!assetItem?.asset) {\n      return undefined\n    }\n\n    // Remember that Sanity listeners ignore joins, order clauses and projections\n    const subscriptionAsset = client\n      .listen(groq`*[_id == $id]`, {id: assetItem?.asset._id})\n      .subscribe(handleAssetUpdate)\n\n    return () => {\n      subscriptionAsset?.unsubscribe()\n    }\n  }, [assetItem?.asset, client, handleAssetUpdate])\n\n  // Update tags form field (react-select) when a new _inline_ tag has been created\n  useEffect(() => {\n    if (lastCreatedTag) {\n      const existingTags = (getValues('opt.media.tags') as TagSelectOption[]) || []\n      const updatedTags = existingTags.concat([lastCreatedTag])\n      setValue('opt.media.tags', updatedTags, {shouldDirty: true})\n    }\n  }, [getValues, lastCreatedTag, setValue])\n\n  // Update tags form field (react-select) when an _inline_ tag has been removed elsewhere\n  useEffect(() => {\n    if (lastRemovedTagIds) {\n      const existingTags = (getValues('opt.media.tags') as TagSelectOption[]) || []\n      const updatedTags = existingTags.filter((tag) => {\n        return !lastRemovedTagIds.includes(tag.value)\n      })\n\n      setValue('opt.media.tags', updatedTags, {shouldDirty: true})\n    }\n  }, [getValues, lastRemovedTagIds, setValue])\n\n  // Reset react-hook-form local state on mount and every time the asset has been updated elsewhere\n  useEffect(() => {\n    if (assetUpdatedPrev.current !== assetItem?.asset._updatedAt) {\n      reset(generateDefaultValues(assetItem?.asset))\n    }\n    assetUpdatedPrev.current = assetItem?.asset._updatedAt\n  }, [assetItem?.asset, generateDefaultValues, reset])\n\n  const Footer = () => (\n    <Box padding={3}>\n      <Stack space={3}>\n        {hasOrphanedLocales && (\n          <Card padding={3} radius={2} shadow={1} tone=\"caution\">\n            <Flex align=\"center\" justify=\"space-between\" gap={3}>\n              <Text size={1}>\n                This asset has localized fields that are no longer configured. Clean them up to\n                avoid validation errors.\n              </Text>\n              <Button\n                fontSize={1}\n                mode=\"ghost\"\n                onClick={handleCleanupLocales}\n                text=\"Cleanup localized fields\"\n                tone=\"caution\"\n              />\n            </Flex>\n          </Card>\n        )}\n        <Flex justify=\"space-between\">\n          {/* Delete button */}\n          <Button\n            disabled={formUpdating}\n            fontSize={1}\n            mode=\"bleed\"\n            onClick={handleDelete}\n            text=\"Delete\"\n            tone=\"critical\"\n          />\n\n          {/* Submit button */}\n          <FormSubmitButton\n            disabled={formUpdating || !isDirty || !isValid || hasOrphanedLocales}\n            isValid={isValid}\n            lastUpdated={currentAsset?._updatedAt}\n            onClick={handleSubmit(onSubmit)}\n          />\n        </Flex>\n      </Stack>\n    </Box>\n  )\n\n  if (!currentAsset) {\n    return null\n  }\n\n  const detailsProps = {\n    control,\n    errors,\n    formUpdating,\n    register,\n    setValue,\n    assetTagOptions,\n    allTagOptions,\n    handleCreateTag,\n    currentAsset,\n    creditLine,\n    locales,\n  }\n\n  return (\n    <Dialog\n      animate\n      // oxlint-disable-next-line react/react-compiler\n      footer={<Footer />}\n      header=\"Asset details\"\n      id={id}\n      onClose={handleClose}\n      width={3}\n    >\n      {/*\n        We reverse direction to ensure the download button doesn't appear (in the DOM) before other tabbable items.\n        This ensures that the dialog doesn't scroll down to the download button (which on smaller screens, can sometimes\n        be below the fold).\n      */}\n      <Flex direction={['column-reverse', 'column-reverse', 'row-reverse']}>\n        <Box flex={1} marginTop={[5, 5, 0]} padding={4}>\n          <WithReferringDocuments documentStore={documentStore} id={currentAsset._id}>\n            {({isLoading, referringDocuments}) => {\n              const uniqueReferringDocuments = getUniqueDocuments(referringDocuments)\n              return (\n                <>\n                  {/* Tabs */}\n                  <TabList space={2}>\n                    <Tab\n                      aria-controls=\"details-panel\"\n                      disabled={formUpdating}\n                      id=\"details-tab\"\n                      label=\"Details\"\n                      onClick={() => setTabSection('details')}\n                      selected={tabSection === 'details'}\n                      size={2}\n                    />\n                    <Tab\n                      aria-controls=\"references-panel\"\n                      disabled={formUpdating}\n                      id=\"references-tab\"\n                      label={`References${\n                        !isLoading && Array.isArray(uniqueReferringDocuments)\n                          ? ` (${uniqueReferringDocuments.length})`\n                          : ''\n                      }`}\n                      onClick={() => setTabSection('references')}\n                      selected={tabSection === 'references'}\n                      size={2}\n                    />\n                  </TabList>\n\n                  {/* Form fields */}\n                  <Box as=\"form\" marginTop={4} onSubmit={handleSubmit(onSubmit)}>\n                    {/* Deleted notification */}\n                    {!assetItem && (\n                      <Card marginBottom={3} padding={3} radius={2} shadow={1} tone=\"critical\">\n                        <Text size={1}>This file cannot be found – it may have been deleted.</Text>\n                      </Card>\n                    )}\n\n                    {/* Hidden button to enable enter key submissions */}\n                    <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n                    {/* Panel: details */}\n                    <TabPanel\n                      aria-labelledby=\"details\"\n                      hidden={tabSection !== 'details'}\n                      id=\"details-panel\"\n                    >\n                      {CustomDetails ? (\n                        <CustomDetails\n                          {...detailsProps}\n                          renderDefaultDetails={renderDefaultDetails}\n                        />\n                      ) : (\n                        <Details {...detailsProps} />\n                      )}\n                    </TabPanel>\n\n                    {/* Panel: References */}\n                    <TabPanel\n                      aria-labelledby=\"references\"\n                      hidden={tabSection !== 'references'}\n                      id=\"references-panel\"\n                    >\n                      <Box marginTop={5}>\n                        {assetItem?.asset && (\n                          <DocumentList\n                            documents={uniqueReferringDocuments}\n                            isLoading={isLoading}\n                          />\n                        )}\n                      </Box>\n                    </TabPanel>\n                  </Box>\n                </>\n              )\n            }}\n          </WithReferringDocuments>\n        </Box>\n\n        <Box flex={1} padding={4}>\n          <Box style={{aspectRatio: '1'}}>\n            {/* File */}\n            {isFileAsset(currentAsset) && <FileAssetPreview asset={currentAsset} />}\n\n            {/* Image */}\n            {isImageAsset(currentAsset) && (\n              <Image\n                draggable={false}\n                $scheme={scheme}\n                $showCheckerboard={!currentAsset?.metadata?.isOpaque}\n                src={imageDprUrl(currentAsset, {height: 600, width: 600})}\n              />\n            )}\n          </Box>\n\n          {/* Metadata */}\n          {currentAsset && (\n            <Box marginTop={4}>\n              <AssetMetadata asset={currentAsset} item={assetItem} />\n            </Box>\n          )}\n        </Box>\n      </Flex>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogAssetEdit\n","import {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Box, Button, Flex, Stack, Text} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {dialogActions} from '../../modules/dialog'\nimport type {DialogConfirmProps} from '../../types'\nimport Dialog from '../Dialog'\n\ntype Props = {\n  children?: ReactNode\n  dialog: DialogConfirmProps\n}\n\nconst DialogConfirm = (props: Props) => {\n  const {children, dialog} = props\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleClose = () => {\n    dispatch(dialogActions.remove({id: dialog?.id}))\n  }\n\n  const handleConfirm = () => {\n    // Close target dialog, if provided\n    if (dialog?.closeDialogId) {\n      dispatch(dialogActions.remove({id: dialog?.closeDialogId}))\n    }\n\n    if (dialog?.confirmCallbackAction) {\n      dispatch(dialog.confirmCallbackAction)\n    }\n\n    // Close self\n    handleClose()\n  }\n\n  const Footer = () => (\n    <Box padding={3}>\n      <Flex justify=\"space-between\">\n        <Button fontSize={1} mode=\"bleed\" onClick={handleClose} text=\"Cancel\" />\n        <Button\n          fontSize={1}\n          onClick={handleConfirm}\n          text={dialog?.confirmText}\n          tone={dialog?.tone}\n        />\n      </Flex>\n    </Box>\n  )\n\n  const Header = () => (\n    <Flex align=\"center\">\n      <Box paddingX={1}>\n        <WarningOutlineIcon />\n      </Box>\n      <Box marginLeft={2}>{dialog?.headerTitle}</Box>\n    </Flex>\n  )\n\n  return (\n    <Dialog\n      animate\n      // oxlint-disable-next-line react/react-compiler\n      footer={<Footer />}\n      // oxlint-disable-next-line react/react-compiler\n      header={<Header />}\n      id=\"confirm\"\n      onClose={handleClose}\n      width={1}\n    >\n      <Box paddingX={4} paddingY={4}>\n        <Stack space={3}>\n          {dialog?.title && <Text size={1}>{dialog.title}</Text>}\n          {dialog?.description && (\n            <Text muted size={1}>\n              <em>{dialog.description}</em>\n            </Text>\n          )}\n        </Stack>\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogConfirm\n","import {Box} from '@sanity/ui'\nimport {type ReactNode, useCallback} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {dialogActions} from '../../modules/dialog'\nimport type {DialogSearchFacetsProps} from '../../types'\nimport Dialog from '../Dialog'\nimport SearchFacets from '../SearchFacets'\nimport SearchFacetsControl from '../SearchFacetsControl'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogSearchFacetsProps\n}\n\nconst DialogSearchFacets = (props: Props) => {\n  const {\n    children,\n    dialog: {id},\n  } = props\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleClose = useCallback(() => {\n    dispatch(dialogActions.clear())\n  }, [dispatch])\n\n  return (\n    <Dialog animate header=\"Filters\" id={id} onClose={handleClose} width={1}>\n      <Box padding={3}>\n        <SearchFacets layout=\"stack\" />\n        <SearchFacetsControl />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogSearchFacets\n","import {Box, Flex} from '@sanity/ui'\nimport {type ReactNode, useEffect} from 'react'\nimport {type SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\n\nimport {tagFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {dialogActions} from '../../modules/dialog'\nimport {tagsActions} from '../../modules/tags'\nimport type {DialogTagCreateProps, TagFormData} from '../../types'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport zodFormResolver from '../../utils/zodFormResolver'\nimport Dialog from '../Dialog'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormSubmitButton from '../FormSubmitButton'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogTagCreateProps\n}\n\nconst DialogTagCreate = (props: Props) => {\n  const {\n    children,\n    dialog: {id},\n  } = props\n\n  const dispatch = useDispatch()\n\n  const creating = useTypedSelector((state) => state.tags.creating)\n  const creatingError = useTypedSelector((state) => state.tags.creatingError)\n\n  const {\n    // Read the formState before render to subscribe the form state through Proxy\n    formState: {errors, isDirty, isValid},\n    handleSubmit,\n    register,\n    setError,\n  } = useForm<TagFormData>({\n    defaultValues: {\n      name: '',\n    },\n    mode: 'onChange',\n    resolver: zodFormResolver<TagFormData>(tagFormSchema),\n  })\n\n  const formUpdating = creating\n\n  const handleClose = () => {\n    dispatch(dialogActions.clear())\n  }\n\n  // - submit react-hook-form\n  const onSubmit: SubmitHandler<TagFormData> = (formData) => {\n    const sanitizedFormData = sanitizeFormData(formData)\n\n    dispatch(tagsActions.createRequest({name: sanitizedFormData['name']}))\n  }\n\n  useEffect(() => {\n    if (creatingError) {\n      setError('name', {\n        message: creatingError?.message,\n      })\n    }\n  }, [creatingError, setError])\n\n  const Footer = () => (\n    <Box padding={3}>\n      <Flex justify=\"flex-end\">\n        {/* Submit button */}\n        <FormSubmitButton\n          disabled={formUpdating || !isDirty || !isValid}\n          isValid={isValid}\n          onClick={handleSubmit(onSubmit)}\n        />\n      </Flex>\n    </Box>\n  )\n\n  return (\n    <Dialog\n      animate\n      // oxlint-disable-next-line react/react-compiler\n      footer={<Footer />}\n      header=\"Create Tag\"\n      id={id}\n      onClose={handleClose}\n      width={1}\n    >\n      {/* Form fields */}\n      <Box as=\"form\" padding={4} onSubmit={handleSubmit(onSubmit)}>\n        {/* Hidden button to enable enter key submissions */}\n        <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n        {/* Title */}\n        <FormFieldInputText\n          {...register('name')}\n          disabled={formUpdating}\n          error={errors?.name?.message}\n          label=\"Name\"\n          name=\"name\"\n        />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogTagCreate\n","import type {MutationEvent} from '@sanity/client'\nimport {Box, Button, Card, Flex, Text} from '@sanity/ui'\nimport groq from 'groq'\nimport {type ReactNode, useCallback, useEffect, useState} from 'react'\nimport {type SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\n\nimport {tagFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {dialogActions} from '../../modules/dialog'\nimport {selectTagById, tagsActions} from '../../modules/tags'\nimport type {DialogTagEditProps, Tag, TagFormData} from '../../types'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport zodFormResolver from '../../utils/zodFormResolver'\nimport Dialog from '../Dialog'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormSubmitButton from '../FormSubmitButton'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogTagEditProps\n}\n\nconst DialogTagEdit = (props: Props) => {\n  const {\n    children,\n    dialog: {id, tagId},\n  } = props\n\n  const client = useVersionedClient()\n\n  const dispatch = useDispatch()\n  const tagItem = useTypedSelector((state) => selectTagById(state, String(tagId))) // TODO: double check string cast\n\n  // - Generate a snapshot of the current tag\n  const [tagSnapshot, setTagSnapshot] = useState(tagItem?.tag)\n\n  const currentTag = tagItem ? tagItem?.tag : tagSnapshot\n  const generateDefaultValues = useCallback(\n    (tag?: Tag) => ({\n      name: tag?.name?.current || '',\n    }),\n    [],\n  )\n\n  const {\n    // Read the formState before render to subscribe the form state through Proxy\n    formState: {errors, isDirty, isValid},\n    handleSubmit,\n    register,\n    reset,\n    setError,\n  } = useForm<TagFormData>({\n    defaultValues: generateDefaultValues(tagItem?.tag),\n    mode: 'onChange',\n    resolver: zodFormResolver<TagFormData>(tagFormSchema),\n  })\n\n  const formUpdating = !tagItem || tagItem?.updating\n\n  const handleClose = () => {\n    dispatch(dialogActions.remove({id}))\n  }\n\n  // Submit react-hook-form\n  const onSubmit: SubmitHandler<TagFormData> = (formData) => {\n    if (!tagItem?.tag) {\n      return\n    }\n    const sanitizedFormData = sanitizeFormData(formData)\n    dispatch(\n      tagsActions.updateRequest({\n        closeDialogId: tagItem?.tag?._id,\n        formData: {\n          name: {\n            _type: 'slug',\n            current: sanitizedFormData['name'],\n          },\n        },\n        tag: tagItem?.tag,\n      }),\n    )\n  }\n\n  const handleDelete = () => {\n    if (!tagItem?.tag) {\n      return\n    }\n\n    dispatch(\n      dialogActions.showConfirmDeleteTag({\n        closeDialogId: tagItem?.tag?._id,\n        tag: tagItem?.tag,\n      }),\n    )\n  }\n\n  const handleTagUpdate = useCallback(\n    (update: MutationEvent) => {\n      const {result, transition} = update\n      if (result && transition === 'update') {\n        // Regenerate snapshot\n        setTagSnapshot(result as Tag)\n        // Reset react-hook-form\n        reset(generateDefaultValues(result as Tag))\n      }\n    },\n    [reset, generateDefaultValues],\n  )\n\n  useEffect(() => {\n    if (tagItem?.error) {\n      setError('name', {\n        message: tagItem.error?.message,\n      })\n    }\n  }, [setError, tagItem?.error])\n\n  // - Listen for asset mutations and update snapshot\n  useEffect(() => {\n    if (!tagItem?.tag) {\n      return undefined\n    }\n\n    // Remember that Sanity listeners ignore joins, order clauses and projections\n    const subscriptionAsset = client\n      .listen(groq`*[_id == $id]`, {id: tagItem?.tag._id})\n      .subscribe(handleTagUpdate)\n\n    return () => {\n      subscriptionAsset?.unsubscribe()\n    }\n  }, [client, handleTagUpdate, tagItem?.tag])\n\n  const Footer = () => (\n    <Box padding={3}>\n      <Flex justify=\"space-between\">\n        {/* Delete button */}\n        <Button\n          disabled={formUpdating}\n          fontSize={1}\n          mode=\"bleed\"\n          onClick={handleDelete}\n          text=\"Delete\"\n          tone=\"critical\"\n        />\n\n        {/* Submit button */}\n        <FormSubmitButton\n          disabled={formUpdating || !isDirty || !isValid}\n          isValid={isValid}\n          lastUpdated={tagItem?.tag?._updatedAt}\n          onClick={handleSubmit(onSubmit)}\n        />\n      </Flex>\n    </Box>\n  )\n\n  if (!currentTag) {\n    return null\n  }\n\n  return (\n    <Dialog\n      animate\n      // oxlint-disable-next-line react/react-compiler\n      footer={<Footer />}\n      header=\"Edit Tag\"\n      id={id}\n      onClose={handleClose}\n      width={1}\n    >\n      {/* Form fields */}\n      <Box as=\"form\" padding={4} onSubmit={handleSubmit(onSubmit)}>\n        {/* Deleted notification */}\n        {!tagItem && (\n          <Card marginBottom={3} padding={3} radius={2} shadow={1} tone=\"critical\">\n            <Text size={1}>This tag cannot be found – it may have been deleted.</Text>\n          </Card>\n        )}\n\n        {/* Hidden button to enable enter key submissions */}\n        <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n        {/* Title */}\n        <FormFieldInputText\n          {...register('name')}\n          disabled={formUpdating}\n          error={errors?.name?.message}\n          label=\"Name\"\n          name=\"name\"\n        />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogTagEdit\n","import {ArrowDownIcon} from '@sanity/icons/ArrowDown'\nimport {ArrowUpIcon} from '@sanity/icons/ArrowUp'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {SearchIcon} from '@sanity/icons/Search'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {Box, Button, Container, Flex, Text, Tooltip} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {styled} from 'styled-components'\n\nimport {inputs} from '../../config/searchFacets'\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectAssetsPicked} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {DIALOG_ACTIONS} from '../../modules/dialog/actions'\nimport {searchActions, selectIsSearchFacetTag} from '../../modules/search'\nimport type {SearchFacetInputSearchableProps, TagActions, TagItem} from '../../types'\n\ntype Props = {\n  actions?: TagActions[]\n  tag: TagItem\n}\n\nconst TagContainer = styled(Flex)`\n  height: ${PANEL_HEIGHT}px;\n`\n\nconst ButtonContainer = styled(Flex)`\n  @media (pointer: fine) {\n    visibility: hidden;\n  }\n\n  @media (hover: hover) and (pointer: fine) {\n    ${TagContainer}:hover & {\n      visibility: visible;\n    }\n  }\n`\n\ntype TagButtonProps = {\n  disabled?: boolean\n  icon: ReactNode\n  onClick: () => void\n  tone?: 'critical' | 'primary'\n  tooltip: string\n}\n\nconst TagButton = (props: TagButtonProps) => {\n  const {disabled, icon, onClick, tone, tooltip} = props\n\n  return (\n    <Tooltip\n      animate\n      content={\n        <Container padding={2} width={0}>\n          <Text muted size={1}>\n            {tooltip}\n          </Text>\n        </Container>\n      }\n      disabled={'ontouchstart' in window}\n      placement=\"top\"\n      portal\n    >\n      <Button\n        disabled={disabled}\n        fontSize={1}\n        icon={icon}\n        mode=\"bleed\"\n        onClick={onClick}\n        padding={2}\n        tone={tone}\n      />\n    </Tooltip>\n  )\n}\n\nconst Tag = (props: Props) => {\n  const {actions, tag} = props\n\n  // Redux\n  const dispatch = useDispatch()\n  const assetsPicked = useTypedSelector(selectAssetsPicked)\n  const isSearchFacetTag = useTypedSelector((state) => selectIsSearchFacetTag(state, tag?.tag?._id))\n\n  // Callbacks\n  const handleSearchFacetTagRemove = () => {\n    dispatch(searchActions.facetsRemoveByTag({tagId: tag.tag._id}))\n  }\n\n  const handleShowAddTagToAssetsDialog = () => {\n    dispatch(dialogActions.showConfirmAssetsTagAdd({assetsPicked, tag: tag.tag}))\n  }\n\n  const handleShowRemoveTagFromAssetsDialog = () => {\n    dispatch(dialogActions.showConfirmAssetsTagRemove({assetsPicked, tag: tag.tag}))\n  }\n\n  const handleShowTagDeleteDialog = () => {\n    dispatch(dialogActions.showConfirmDeleteTag({tag: tag.tag}))\n  }\n\n  const handleShowTagEditDialog = () => {\n    dispatch(DIALOG_ACTIONS.showTagEdit({tagId: tag?.tag?._id}))\n  }\n\n  const handleSearchFacetTagAddOrUpdate = () => {\n    const searchFacet = {\n      ...inputs.tag,\n      value: {\n        label: tag?.tag?.name?.current,\n        value: tag?.tag?._id,\n      },\n    } as SearchFacetInputSearchableProps\n\n    if (isSearchFacetTag) {\n      dispatch(\n        searchActions.facetsUpdate({\n          name: 'tag',\n          operatorType: 'references',\n          value: searchFacet.value,\n        }),\n      )\n    } else {\n      dispatch(searchActions.facetsAdd({facet: searchFacet}))\n    }\n  }\n\n  return (\n    <TagContainer align=\"center\" flex={1} justify=\"space-between\" paddingLeft={3}>\n      <Box flex={1}>\n        <Text\n          muted\n          size={1}\n          style={{\n            opacity: tag?.updating ? 0.5 : 1.0,\n            userSelect: 'none',\n          }}\n          textOverflow=\"ellipsis\"\n        >\n          {tag?.tag?.name?.current}\n        </Text>\n      </Box>\n\n      <ButtonContainer align=\"center\" style={{flexShrink: 0}}>\n        {/* Search facet toggle */}\n        {actions?.includes('search') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={isSearchFacetTag ? <CloseIcon /> : <SearchIcon />}\n            onClick={\n              isSearchFacetTag ? handleSearchFacetTagRemove : handleSearchFacetTagAddOrUpdate\n            }\n            tooltip={isSearchFacetTag ? 'Remove filter' : 'Filter by tag'}\n          />\n        )}\n        {/* Edit icon */}\n        {actions?.includes('edit') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={<EditIcon />}\n            onClick={handleShowTagEditDialog}\n            tone=\"primary\"\n            tooltip=\"Edit tag\"\n          />\n        )}\n        {/* Apply to all */}\n        {actions?.includes('applyAll') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={<ArrowUpIcon />}\n            onClick={handleShowAddTagToAssetsDialog}\n            tone=\"primary\"\n            tooltip=\"Add tag to selected assets\"\n          />\n        )}\n        {/* Remove from all */}\n        {actions?.includes('removeAll') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={<ArrowDownIcon />}\n            onClick={handleShowRemoveTagFromAssetsDialog}\n            tone=\"critical\"\n            tooltip=\"Remove tag from selected assets\"\n          />\n        )}\n\n        {/* Delete icon */}\n        {actions?.includes('delete') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={<TrashIcon />}\n            onClick={handleShowTagDeleteDialog}\n            tone=\"critical\"\n            tooltip=\"Delete tag\"\n          />\n        )}\n      </ButtonContainer>\n    </TagContainer>\n  )\n}\n\nexport default Tag\n","import {Flex, Label} from '@sanity/ui'\nimport {memo, useState} from 'react'\nimport {Virtuoso} from 'react-virtuoso'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectAssetsPicked} from '../../modules/assets'\nimport {selectTags} from '../../modules/tags'\nimport type {TagActions, TagItem} from '../../types'\nimport Tag from '../Tag'\n\nconst VirtualRow = memo(\n  ({\n    isScrolling,\n    item,\n  }: {\n    isScrolling?: boolean\n    item:\n      | string\n      | (TagItem & {\n          actions: TagActions[]\n        })\n  }) => {\n    // Render label\n    if (typeof item === 'string') {\n      return (\n        <Flex\n          align=\"center\"\n          justify=\"space-between\"\n          key={item}\n          paddingX={3}\n          style={{height: `${PANEL_HEIGHT}px`}}\n        >\n          <Label size={0}>{item}</Label>\n        </Flex>\n      )\n    }\n\n    // Render tag - only display actions if we're not in the process of scrolling\n    return <Tag actions={isScrolling ? undefined : item.actions} key={item.tag?._id} tag={item} />\n  },\n)\n\nconst TagsVirtualized = () => {\n  const assetsPicked = useTypedSelector(selectAssetsPicked)\n  const tags = useTypedSelector(selectTags)\n\n  // State\n  const [isScrolling, setIsScrolling] = useState(false)\n\n  // TODO: refactor, there's most certainly a more performant way to do this\n\n  // Filter out all tag IDS used (across all) and dedupe\n  const pickedTagIds = assetsPicked?.reduce((acc: string[], val) => {\n    const assetTagIds = val?.asset?.opt?.media?.tags?.map((tag) => tag._ref) || []\n    acc = acc.concat(assetTagIds)\n    return acc\n  }, [])\n  const pickedTagIdsUnique = [...new Set(pickedTagIds)]\n\n  // Segment tags into two buckets:\n  // 1. those which exist in all picked assets ('applied to all')\n  // 2. those which exist in some picked assets ('applied to some')\n  const tagIdsSegmented = pickedTagIdsUnique.reduce(\n    (acc: {appliedToAll: string[]; appliedToSome: string[]}, tagId) => {\n      const tagIsInEveryAsset = assetsPicked.every((assetItem) => {\n        const tagIndex =\n          assetItem.asset.opt?.media?.tags?.findIndex((tag) => tag._ref === tagId) ?? -1\n        return tagIndex >= 0\n      })\n\n      if (tagIsInEveryAsset) {\n        acc.appliedToAll.push(tagId)\n      } else {\n        acc.appliedToSome.push(tagId)\n      }\n\n      return acc\n    },\n    {\n      appliedToAll: [],\n      appliedToSome: [],\n    },\n  )\n\n  const tagsAppliedToAll = tags\n    .filter((tag) => tagIdsSegmented.appliedToAll.includes(tag.tag._id))\n    .map((tagItem) => ({\n      ...tagItem,\n      actions: ['delete', 'edit', 'removeAll', 'search'] as TagActions[],\n    }))\n  const tagsAppliedToSome = tags\n    .filter((tag) => tagIdsSegmented.appliedToSome.includes(tag.tag._id))\n    .map((tagItem) => ({\n      ...tagItem,\n      actions: ['applyAll', 'delete', 'edit', 'removeAll', 'search'] as TagActions[],\n    }))\n  const tagsUnused = tags\n    .filter((tag) => !pickedTagIdsUnique.includes(tag.tag._id))\n    .map((tagItem) => ({\n      ...tagItem,\n      actions: ['applyAll', 'delete', 'edit', 'search'] as TagActions[],\n    }))\n\n  let items: (\n    | string\n    | (TagItem & {\n        actions: TagActions[]\n      })\n  )[] = []\n  if (assetsPicked.length === 0) {\n    items = tags.map((tagItem) => ({\n      ...tagItem,\n      actions: ['delete', 'edit', 'search'] as TagActions[],\n    }))\n  } else {\n    if (tagsAppliedToAll?.length > 0) {\n      items = [\n        ...items, //\n        assetsPicked.length === 1 ? 'Used' : 'Used by all',\n        ...tagsAppliedToAll,\n      ]\n    }\n    if (tagsAppliedToSome?.length > 0) {\n      items = [\n        ...items, //\n        'Used by some',\n        ...tagsAppliedToSome,\n      ]\n    }\n    if (tagsUnused?.length > 0) {\n      items = [\n        ...items, //\n        'Unused',\n        ...tagsUnused,\n      ]\n    }\n  }\n\n  return (\n    <Virtuoso\n      className=\"media__custom-scrollbar\"\n      computeItemKey={(index) => {\n        const item = items[index]\n        if (typeof item === 'string') {\n          return item\n        }\n        return item!.tag._id\n      }}\n      isScrolling={setIsScrolling}\n      itemContent={(index) => {\n        return <VirtualRow isScrolling={isScrolling} item={items[index]!} />\n      }}\n      style={{flex: 1, overflowX: 'hidden'}}\n      totalCount={items.length}\n    />\n  )\n}\n\nexport default TagsVirtualized\n","import {ComposeIcon} from '@sanity/icons/Compose'\nimport {Box, Button, Flex, Inline, Label} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {DIALOG_ACTIONS} from '../../modules/dialog/actions'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n  allowCreate?: boolean\n  light?: boolean\n  title: string\n}\n\nconst TagViewHeader = ({allowCreate, light, title}: Props) => {\n  const scheme = useColorSchemeValue()\n\n  const dispatch = useDispatch()\n  const tagsCreating = useTypedSelector((state) => state.tags.creating)\n  const tagsFetching = useTypedSelector((state) => state.tags.fetching)\n\n  const handleTagCreate = () => {\n    dispatch(DIALOG_ACTIONS.showTagCreate())\n  }\n\n  return (\n    <>\n      <Flex\n        align=\"center\"\n        justify=\"space-between\"\n        paddingLeft={3}\n        style={{\n          background: light ? getSchemeColor(scheme, 'bg') : 'inherit',\n          borderBottom: '1px solid var(--card-border-color)',\n          flexShrink: 0,\n          height: `${PANEL_HEIGHT}px`,\n        }}\n      >\n        <Inline space={2}>\n          <Label size={0}>{title}</Label>\n          {tagsFetching && (\n            <Label size={0} style={{opacity: 0.3}}>\n              Loading...\n            </Label>\n          )}\n        </Inline>\n        {/* Create new tag button */}\n        {allowCreate && (\n          <Box marginRight={1}>\n            <Button\n              disabled={tagsCreating}\n              fontSize={1} //\n              icon={ComposeIcon}\n              mode=\"bleed\"\n              onClick={handleTagCreate}\n              style={{\n                background: 'transparent',\n                boxShadow: 'none',\n              }}\n            />\n          </Box>\n        )}\n      </Flex>\n    </>\n  )\n}\n\nexport default TagViewHeader\n","import {Box, Flex, Text} from '@sanity/ui'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectAssetsPickedLength} from '../../modules/assets'\nimport {selectTags} from '../../modules/tags'\nimport TagsVirtualized from '../TagsVirtualized'\nimport TagViewHeader from '../TagViewHeader'\n\nconst TagView = () => {\n  const numPickedAssets = useTypedSelector(selectAssetsPickedLength)\n  const tags = useTypedSelector(selectTags)\n  const fetching = useTypedSelector((state) => state.tags.fetching)\n  const fetchCount = useTypedSelector((state) => state.tags.fetchCount)\n  const fetchComplete = fetchCount !== -1\n  const hasTags = !fetching && tags?.length > 0\n  const hasPicked = !!(numPickedAssets > 0)\n\n  return (\n    <Flex direction=\"column\" flex={1} height=\"fill\">\n      <TagViewHeader\n        allowCreate\n        light={hasPicked}\n        title={hasPicked ? 'Tags (in selection)' : 'Tags'}\n      />\n\n      {fetchComplete && !hasTags && (\n        <Box padding={3}>\n          <Text muted size={1}>\n            <em>No tags</em>\n          </Text>\n        </Box>\n      )}\n\n      {hasTags && <TagsVirtualized />}\n    </Flex>\n  )\n}\n\nexport default TagView\n","import {Box} from '@sanity/ui'\nimport {type ReactNode, useCallback} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {dialogActions} from '../../modules/dialog'\nimport type {DialogTagsProps} from '../../types'\nimport Dialog from '../Dialog'\nimport TagView from '../TagView'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogTagsProps\n}\n\nconst DialogTags = (props: Props) => {\n  const {\n    children,\n    dialog: {id},\n  } = props\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleClose = useCallback(() => {\n    dispatch(dialogActions.clear())\n  }, [dispatch])\n\n  return (\n    <Dialog animate header=\"All Tags\" id={id} onClose={handleClose} width={1}>\n      <Box\n        style={{\n          height: '100%',\n          minHeight: '420px', // explicit height required as <TagView> is virtualized\n        }}\n      >\n        <TagView />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogTags\n","import useTypedSelector from '../../hooks/useTypedSelector'\nimport type {Dialog} from '../../types'\nimport DialogAssetEdit from '../DialogAssetEdit'\nimport DialogConfirm from '../DialogConfirm'\nimport DialogSearchFacets from '../DialogSearchFacets'\nimport DialogTagCreate from '../DialogTagCreate'\nimport DialogTagEdit from '../DialogTagEdit'\nimport DialogTags from '../DialogTags'\n\nconst Dialogs = () => {\n  // Redux\n  const currentDialogs = useTypedSelector((state) => state.dialog.items)\n\n  const renderDialogs = (dialogs: Dialog[], index: number) => {\n    if (dialogs.length === 0 || index >= dialogs.length) {\n      return null\n    }\n\n    const dialog = dialogs[index]!\n    const childDialogs = renderDialogs(dialogs, index + 1)\n\n    if (dialog.type === 'assetEdit') {\n      return (\n        <DialogAssetEdit dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogAssetEdit>\n      )\n    }\n\n    if (dialog.type === 'confirm') {\n      return (\n        <DialogConfirm dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogConfirm>\n      )\n    }\n\n    if (dialog.type === 'searchFacets') {\n      return (\n        <DialogSearchFacets dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogSearchFacets>\n      )\n    }\n\n    if (dialog.type === 'tagCreate') {\n      return (\n        <DialogTagCreate dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogTagCreate>\n      )\n    }\n\n    if (dialog.type === 'tagEdit') {\n      return (\n        <DialogTagEdit dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogTagEdit>\n      )\n    }\n\n    if (dialog.type === 'tags') {\n      return (\n        <DialogTags dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogTags>\n      )\n    }\n\n    return null\n  }\n\n  return renderDialogs(currentDialogs, 0)\n}\n\nexport default Dialogs\n","import {type ReactNode, createContext, useContext, useMemo} from 'react'\n\ntype ContextProps = {\n  open: () => void\n}\n\ntype Props = {\n  children: ReactNode\n  open: () => void\n}\n\nconst DropzoneDispatchContext = createContext<ContextProps | undefined>(undefined)\n\nexport const DropzoneDispatchProvider = (props: Props) => {\n  const {children, open} = props\n\n  const contextValue: ContextProps = useMemo(() => ({open}), [open])\n\n  return (\n    <DropzoneDispatchContext.Provider value={contextValue}>\n      {children}\n    </DropzoneDispatchContext.Provider>\n  )\n}\n\nexport const useDropzoneActions = () => {\n  const context = useContext(DropzoneDispatchContext)\n  if (context === undefined) {\n    throw new Error('useDropzoneActions must be used within an DropzoneDispatchProvider')\n  }\n  return context\n}\n","import {ArrowRightIcon} from '@sanity/icons/ArrowRight'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {UploadIcon} from '@sanity/icons/Upload'\nimport {Box, Button, Flex, Inline, Text} from '@sanity/ui'\nimport pluralize from 'pluralize'\n\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport {useDropzoneActions} from '../../contexts/DropzoneDispatchContext'\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\n\ntype Props = {\n  onClose?: () => void\n}\n\nconst Header = (props: Props) => {\n  const {onClose} = props\n\n  const {open} = useDropzoneActions()\n  const {onSelect} = useAssetSourceActions()\n\n  // Redux\n  const assetTypes = useTypedSelector((state) => state.assets.assetTypes)\n  const selectedDocument = useTypedSelector((state) => state.selected.document)\n\n  const {directUploads} = useToolOptions()\n\n  // Row: Current document / close button\n  return (\n    <Box paddingY={2}>\n      <Flex align=\"center\" justify=\"space-between\">\n        {/* Label */}\n        <Box flex={1} marginX={3}>\n          <Inline style={{whiteSpace: 'nowrap'}}>\n            <Text textOverflow=\"ellipsis\" weight=\"semibold\">\n              <span>{onSelect ? `Insert ${assetTypes.join(' or ')}` : 'Browse Assets'}</span>\n            </Text>\n\n            {selectedDocument && (\n              <Box display={['none', 'none', 'block']}>\n                <Text>\n                  <span style={{margin: '0 0.5em'}}>\n                    <ArrowRightIcon />\n                  </span>\n                  <span style={{textTransform: 'capitalize'}}>{selectedDocument._type}</span>\n                </Text>\n              </Box>\n            )}\n          </Inline>\n        </Box>\n\n        <Flex marginX={2}>\n          {/* Upload */}\n          {directUploads && (\n            <Button\n              fontSize={1}\n              icon={UploadIcon}\n              mode=\"bleed\"\n              onClick={open}\n              text={`Upload ${assetTypes.length === 1 ? pluralize(assetTypes[0]!) : 'assets'}`}\n            />\n          )}\n\n          {/* Close */}\n          {onClose && (\n            <Box style={{flexShrink: 0}}>\n              <Button\n                disabled={!onClose}\n                icon={CloseIcon}\n                mode=\"bleed\"\n                onClick={onClose}\n                radius={2}\n              />\n            </Box>\n          )}\n        </Flex>\n      </Flex>\n    </Box>\n  )\n}\n\nexport default Header\n","import {studioTheme} from '@sanity/ui'\nimport {useEffect, useState} from 'react'\n\n// Determine the current breakpoint index\n// - create MediaQueryLists from every breakpoint defined in our sanity studio theme\n// - for each MQL, listen to change events and return the selected breakpoint index\nconst useBreakpointIndex = (): number => {\n  const mediaQueryLists = studioTheme?.container?.map((width) =>\n    window.matchMedia(`(max-width: ${width}px)`),\n  )\n\n  const getBreakpointIndex = () => mediaQueryLists.findIndex((mql) => mql.matches)\n\n  const [value, setValue] = useState(getBreakpointIndex())\n\n  useEffect(() => {\n    const handleBreakpoint = () => {\n      setValue(getBreakpointIndex)\n    }\n\n    // NOTE: older versions of Safari use the older `addListener` and `removeListener` methods\n    mediaQueryLists.forEach((mql) => {\n      try {\n        mql.addEventListener('change', handleBreakpoint)\n      } catch {\n        try {\n          mql.addListener(handleBreakpoint)\n        } catch {\n          // Do nothing\n        }\n      }\n    })\n    return () => {\n      try {\n        mediaQueryLists.forEach((mql) => mql.removeEventListener('change', handleBreakpoint))\n      } catch {\n        try {\n          mediaQueryLists.forEach((mql) => mql.removeListener(handleBreakpoint))\n        } catch {\n          // Do nothing\n        }\n      }\n    }\n    // oxlint-disable-next-line react-hooks/exhaustive-deps - use the hook from `@sanity/ui` instead of this home-rolled one\n  }, [])\n\n  return value\n}\n\nexport default useBreakpointIndex\n","import {createSelector} from '@reduxjs/toolkit'\n\nimport type {CardAssetData, CardUploadData} from '../types'\nimport type {RootReducerState} from './types'\n\nexport const selectCombinedItems = createSelector(\n  [\n    (state: RootReducerState) => state.assets.allIds,\n    (state: RootReducerState) => state.uploads.allIds,\n  ],\n  (assetIds, uploadIds) => {\n    const assetItems = assetIds.map((id): CardAssetData => ({id, type: 'asset'}))\n    const uploadItems = uploadIds.map((id): CardUploadData => ({id, type: 'upload'}))\n    const combinedItems: (CardAssetData | CardUploadData)[] = [...uploadItems, ...assetItems]\n    return combinedItems\n  },\n)\n","import {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {WarningFilledIcon} from '@sanity/icons/WarningFilled'\nimport {\n  Box,\n  Checkbox,\n  Container,\n  Flex,\n  Spinner,\n  Text,\n  type Theme,\n  type ThemeColorSchemeKey,\n  Tooltip,\n} from '@sanity/ui'\nimport {memo, type MouseEvent, type RefObject} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {styled, css} from 'styled-components'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetById} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport imageDprUrl from '../../utils/imageDprUrl'\nimport {isFileAsset, isImageAsset} from '../../utils/typeGuards'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\ntype Props = {\n  id: string\n  selected: boolean\n}\n\nconst CardWrapper = styled(Flex)`\n  box-sizing: border-box;\n  height: 100%;\n  overflow: hidden;\n  position: relative;\n  width: 100%;\n`\n\nconst CardContainer = styled(Flex)<{$picked?: boolean; theme: Theme; $updating?: boolean}>(({\n  $picked,\n  theme,\n  $updating,\n}) => {\n  return css`\n    border: 1px solid transparent;\n    height: 100%;\n    pointer-events: ${$updating ? 'none' : 'auto'};\n    position: relative;\n    transition: all 300ms;\n    user-select: none;\n    width: 100%;\n\n    border: ${$picked\n      ? `1px solid ${theme.sanity.color.spot.orange} !important`\n      : '1px solid inherit'};\n\n    ${!$updating &&\n    css`\n      @media (hover: hover) and (pointer: fine) {\n        &:hover {\n          border: 1px solid var(--card-border-color);\n        }\n      }\n    `}\n  `\n})\n\nconst ContextActionContainer = styled<typeof Flex, {$scheme: ThemeColorSchemeKey}>(Flex)(({\n  $scheme,\n}) => {\n  return css`\n    cursor: pointer;\n    height: ${PANEL_HEIGHT}px;\n    transition: all 300ms;\n    @media (hover: hover) and (pointer: fine) {\n      &:hover {\n        background: ${getSchemeColor($scheme, 'bg')};\n      }\n    }\n  `\n})\n\nconst StyledWarningOutlineIcon = styled(WarningFilledIcon)(({theme}) => {\n  return {\n    color: theme.sanity.color.spot.red,\n  }\n})\n\nconst CardAsset = (props: Props) => {\n  const {id, selected} = props\n\n  const scheme = useColorSchemeValue()\n\n  // Refs\n  const shiftPressed: RefObject<boolean> = useKeyPress('shift')\n\n  // Redux\n  const dispatch = useDispatch()\n  const lastPicked = useTypedSelector((state) => state.assets.lastPicked)\n  const item = useTypedSelector((state) => selectAssetById(state, id))\n\n  const asset = item?.asset\n  const error = item?.error\n  const isOpaque = item?.asset?.metadata?.isOpaque\n  const picked = item?.picked\n  const updating = item?.updating\n\n  const {onSelect} = useAssetSourceActions()\n\n  // Short circuit if no asset is available\n  if (!asset) {\n    return null\n  }\n\n  // Callbacks\n  const handleAssetClick = (e: MouseEvent<HTMLDivElement>) => {\n    e.stopPropagation()\n\n    if (onSelect) {\n      onSelect([\n        {\n          kind: 'assetDocumentId',\n          value: asset._id,\n        },\n      ])\n    } else if (shiftPressed.current) {\n      if (picked) {\n        dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n      } else {\n        dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n      }\n    } else {\n      dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n    }\n  }\n\n  const handleContextActionClick = (e: MouseEvent) => {\n    e.stopPropagation()\n\n    if (onSelect) {\n      dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n    } else if (shiftPressed.current && !picked) {\n      dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n    } else {\n      dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n    }\n  }\n\n  const opacityContainer = updating ? 0.5 : 1\n  const opacityPreview = selected || updating ? 0.25 : 1\n\n  return (\n    <CardWrapper padding={1}>\n      <CardContainer direction=\"column\" $picked={picked} $updating={item.updating}>\n        {/* Image */}\n        <Box\n          flex={1}\n          style={{\n            cursor: selected ? 'default' : 'pointer',\n            position: 'relative',\n          }}\n        >\n          <div onClick={handleAssetClick} style={{height: '100%', opacity: opacityPreview}}>\n            {/* File icon */}\n            {isFileAsset(asset) && <FileIcon extension={asset.extension} width=\"80px\" />}\n\n            {/* Image */}\n            {isImageAsset(asset) && (\n              <Image\n                draggable={false}\n                $scheme={scheme}\n                $showCheckerboard={!isOpaque}\n                src={imageDprUrl(asset, {height: 250, width: 250})}\n                style={{\n                  draggable: false,\n                  transition: 'opacity 1000ms',\n                }}\n              />\n            )}\n          </div>\n\n          {/* Selected check icon */}\n          {selected && !updating && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                opacity: opacityContainer,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Text size={2}>\n                <CheckmarkCircleIcon />\n              </Text>\n            </Flex>\n          )}\n\n          {/* Spinner */}\n          {updating && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Spinner />\n            </Flex>\n          )}\n        </Box>\n\n        {/* Footer */}\n        <ContextActionContainer\n          align=\"center\"\n          onClick={handleContextActionClick}\n          paddingX={1}\n          $scheme={scheme}\n          style={{opacity: opacityContainer}}\n        >\n          {onSelect ? (\n            <EditIcon\n              style={{\n                flexShrink: 0,\n                opacity: 0.5,\n              }}\n            />\n          ) : (\n            <Checkbox\n              checked={picked}\n              readOnly\n              style={{\n                flexShrink: 0,\n                pointerEvents: 'none',\n                transform: 'scale(0.8)',\n              }}\n            />\n          )}\n\n          <Box marginLeft={2}>\n            <Text muted size={0} textOverflow=\"ellipsis\">\n              {asset.originalFilename}\n            </Text>\n          </Box>\n        </ContextActionContainer>\n\n        {/* TODO: DRY */}\n        {/* Error button */}\n        {error && (\n          <Box\n            padding={3}\n            style={{\n              position: 'absolute',\n              right: 0,\n              top: 0,\n            }}\n          >\n            <Tooltip\n              animate\n              content={\n                <Container padding={2} width={0}>\n                  <Text size={1}>{error}</Text>\n                </Container>\n              }\n              placement=\"left\"\n              portal\n            >\n              <Text size={1}>\n                <StyledWarningOutlineIcon color=\"critical\" />\n              </Text>\n            </Tooltip>\n          </Box>\n        )}\n      </CardContainer>\n    </CardWrapper>\n  )\n}\n\nexport default memo(CardAsset)\n","import {Observable, from, of} from 'rxjs'\nimport {mergeMap} from 'rxjs/operators'\n\nconst PREVIEW_WIDTH = 180 // px\n\nconst createBlob = (img: HTMLImageElement): Promise<Blob | null> => {\n  return new Promise((resolve) => {\n    const imageAspect = img.width / img.height\n\n    // Create a canvas element which we'll use to generate a low resolution preview.\n    // Ensure that the canvas is at least 1 pixel high as blob generation will fail otherwise.\n    const canvas: HTMLCanvasElement = document.createElement('canvas')\n    canvas.width = PREVIEW_WIDTH\n    canvas.height = Math.max(PREVIEW_WIDTH / imageAspect, 1)\n\n    // Fail silently if we're unable to generate a preview image.\n    // This can often be the case when trying to render SVGs containing `<foreignObject>` elements.\n    try {\n      const ctx = canvas.getContext('2d')\n      ctx?.drawImage(img, 0, 0, PREVIEW_WIDTH, PREVIEW_WIDTH / imageAspect)\n      canvas.toBlob(resolve, 'image/jpeg')\n    } catch (err) {\n      console.warn(`Unable to generate preview image:`, err)\n    }\n  })\n}\n\nconst createImageEl = (file: File): Promise<HTMLImageElement> => {\n  return new Promise((resolve) => {\n    const blobUrlLarge = window.URL.createObjectURL(file)\n    const img = new Image()\n    img.onload = () => {\n      window.URL.revokeObjectURL(blobUrlLarge)\n      resolve(img)\n    }\n    img.src = blobUrlLarge\n  })\n}\n\nconst generatePreviewBlobUrl = async (file: File): Promise<string> => {\n  const imageEl = await createImageEl(file)\n  const blob = await createBlob(imageEl)\n\n  if (!blob) {\n    throw Error('Unable to generate file Blob')\n  }\n\n  return window.URL.createObjectURL(blob)\n}\n\nexport const generatePreviewBlobUrl$ = (file: File): Observable<string> => {\n  return of(null).pipe(mergeMap(() => from(generatePreviewBlobUrl(file))))\n}\n","import {Subject, Subscription, Observable, from} from 'rxjs'\n// Takes a observable-returning function and returns a new function that limits on the number of\n// concurrent observables.\nimport {first, mergeMap} from 'rxjs/operators'\n\nconst DEFAULT_CONCURRENCY = 4\n\nfunction remove<T>(array: Array<T>, item: T): Array<T> {\n  const index = array.indexOf(item)\n  if (index > -1) {\n    array.splice(index, 1)\n  }\n  return array\n}\n\nexport const createThrottler = (concurrency: number = DEFAULT_CONCURRENCY) => {\n  const currentSubscriptions: Array<Subscription> = []\n  const pendingObservables: Array<Observable<any>> = []\n  const ready$ = new Subject()\n\n  function request(observable: Observable<any>): Observable<any> {\n    return new Observable((observer) => {\n      if (currentSubscriptions.length >= concurrency) {\n        return scheduleAndWait$(observable)\n          .pipe(mergeMap(request)) //\n          .subscribe(observer)\n      }\n      const subscription = observable.subscribe(observer)\n      currentSubscriptions.push(subscription)\n      return () => {\n        remove(currentSubscriptions, subscription)\n        remove(pendingObservables, observable)\n        subscription.unsubscribe()\n        while (pendingObservables.length > 0 && currentSubscriptions.length < concurrency) {\n          ready$.next(pendingObservables.shift())\n        }\n      }\n    })\n  }\n\n  function scheduleAndWait$(observable: Observable<any>): Observable<any> {\n    pendingObservables.push(observable)\n    return ready$.asObservable().pipe(first((obs) => obs === observable))\n  }\n\n  return request\n}\n\nexport const withMaxConcurrency = (\n  func: (...args: any[]) => Observable<any>,\n  concurrency: number = DEFAULT_CONCURRENCY,\n) => {\n  const throttler = createThrottler(concurrency)\n  return (...args: Array<any>) => from(throttler(func(...args)))\n}\n","// Sourced from:\n// https://github.com/sanity-io/sanity/blob/ccb777e115a8cdf20d81a9a2bc9d8c228568faff/packages/%40sanity/form-builder/src/sanity/inputs/client-adapters/assets.ts\n\nimport type {SanityAssetDocument, SanityClient, SanityImageAssetDocument} from '@sanity/client'\nimport {Observable, of, throwError} from 'rxjs'\nimport {map, mergeMap} from 'rxjs/operators'\n\nimport type {HttpError} from '../types'\nimport {withMaxConcurrency} from './withMaxConcurrency'\n\nconst fetchExisting$ = (client: SanityClient, type: string, hash: string) => {\n  return client.observable.fetch('*[_type == $documentType && sha1hash == $hash][0]', {\n    documentType: type,\n    hash,\n  })\n}\n\nconst readFile$ = (file: File): Observable<ArrayBuffer> => {\n  return new Observable((subscriber) => {\n    const reader = new FileReader()\n    reader.onload = () => {\n      subscriber.next(reader.result as ArrayBuffer)\n      subscriber.complete()\n    }\n    reader.onerror = (err) => {\n      subscriber.error(err)\n    }\n    reader.readAsArrayBuffer(file)\n    return () => {\n      reader.abort()\n    }\n  })\n}\n\nconst hexFromBuffer = (buffer: ArrayBuffer): string => {\n  return Array.prototype.map\n    .call(new Uint8Array(buffer), (x) => `00${x.toString(16)}`.slice(-2))\n    .join('')\n}\n\nexport const hashFile$ = (file: File): Observable<string> => {\n  if (!window.crypto || !window.crypto.subtle || !window.FileReader) {\n    return throwError({\n      message: 'Unable to generate hash: uploads are only allowed in secure contexts',\n      statusCode: 500,\n    })\n  }\n  return readFile$(file).pipe(\n    mergeMap((arrayBuffer) => window.crypto.subtle.digest('SHA-1', arrayBuffer)),\n    map(hexFromBuffer),\n  )\n}\n\nconst uploadSanityAsset$ = (\n  client: SanityClient,\n  assetType: 'file' | 'image',\n  file: File,\n  hash: string,\n) => {\n  return of(null).pipe(\n    // NOTE: the sanity api will still dedupe unique files, but this saves us from uploading the asset file entirely\n    mergeMap(() => fetchExisting$(client, `sanity.${assetType}Asset`, hash)),\n    // Cancel if the asset already exists\n    mergeMap((existingAsset: SanityAssetDocument | SanityImageAssetDocument | null) => {\n      if (existingAsset) {\n        return throwError({\n          message: 'Asset already exists',\n          statusCode: 409,\n        } satisfies HttpError)\n      }\n\n      return of(null)\n    }),\n    mergeMap(() => {\n      // Begin upload if no existing asset found\n      return client.observable.assets\n        .upload(assetType, file, {\n          extract: ['blurhash', 'exif', 'location', 'lqip', 'palette'],\n          preserveFilename: true,\n        })\n        .pipe(\n          map((event) =>\n            event.type === 'response'\n              ? {\n                  // rewrite to a 'complete' event\n                  asset: event.body.document,\n                  id: event.body.document._id,\n                  type: 'complete',\n                }\n              : event,\n          ),\n        )\n    }),\n  )\n}\n\nexport const uploadAsset$ = withMaxConcurrency(uploadSanityAsset$)\n","import {createSelector, createSlice, type PayloadAction} from '@reduxjs/toolkit'\nimport type {ClientError, SanityAssetDocument, SanityImageAssetDocument} from '@sanity/client'\nimport groq from 'groq'\nimport {empty, merge, of} from 'rxjs'\nimport {catchError, delay, filter, mergeMap, takeUntil, withLatestFrom} from 'rxjs/operators'\n\nimport type {HttpError, MyEpic, SanityUploadProgressEvent, UploadItem} from '../../types'\nimport constructFilter from '../../utils/constructFilter'\nimport {generatePreviewBlobUrl$} from '../../utils/generatePreviewBlobUrl'\nimport {hashFile$, uploadAsset$} from '../../utils/uploadSanityAsset'\nimport {assetsActions} from '../assets'\nimport type {RootReducerState} from '../types'\nimport {UPLOADS_ACTIONS} from './actions'\n\nexport type UploadsReducerState = {\n  allIds: string[]\n  byIds: Record<string, UploadItem>\n}\n\nconst initialState = {\n  allIds: [],\n  byIds: {},\n} as UploadsReducerState\n\nconst uploadsSlice = createSlice({\n  name: 'uploads',\n  initialState,\n  extraReducers: (builder) => {\n    builder //\n      .addCase(UPLOADS_ACTIONS.uploadComplete, (state, action) => {\n        const {asset} = action.payload\n        if (state.byIds[asset.sha1hash]) {\n          state.byIds[asset.sha1hash]!.status = 'complete'\n        }\n      })\n  },\n  reducers: {\n    checkRequest(\n      _state,\n      _action: PayloadAction<{assets: (SanityAssetDocument | SanityImageAssetDocument)[]}>,\n    ) {\n      //\n    },\n    checkComplete(state, action: PayloadAction<{results: Record<string, string | null>}>) {\n      const {results} = action.payload\n\n      const assetHashes = Object.keys(results)\n\n      assetHashes.forEach((hash) => {\n        const deleteIndex = state.allIds.indexOf(hash)\n        if (deleteIndex >= 0) {\n          state.allIds.splice(deleteIndex, 1)\n        }\n\n        if (state.byIds[hash]) {\n          const blobUrl = state.byIds[hash].objectUrl\n          if (blobUrl) {\n            window.URL.revokeObjectURL(blobUrl)\n          }\n\n          delete state.byIds[hash]\n        }\n      })\n    },\n    previewReady(state, action: PayloadAction<{hash: string; blobUrl: string}>) {\n      const {blobUrl, hash} = action.payload\n      if (state.byIds[hash]) {\n        state.byIds[hash].objectUrl = blobUrl\n      }\n    },\n    uploadCancel(state, action: PayloadAction<{hash: string}>) {\n      const {hash} = action.payload\n      const deleteIndex = state.allIds.indexOf(hash)\n      if (deleteIndex >= 0) {\n        state.allIds.splice(deleteIndex, 1)\n      }\n      if (state.byIds[hash]) {\n        delete state.byIds[hash]\n      }\n    },\n    uploadError(state, action: PayloadAction<{error: HttpError; hash: string}>) {\n      const {hash} = action.payload\n      const deleteIndex = state.allIds.indexOf(hash)\n      if (deleteIndex >= 0) {\n        state.allIds.splice(deleteIndex, 1)\n      }\n      delete state.byIds[hash]\n    },\n    uploadRequest(\n      _state,\n      _action: PayloadAction<{file: File; forceAsAssetType?: 'file' | 'image'}>,\n    ) {\n      //\n    },\n    uploadProgress(\n      state,\n      action: PayloadAction<{event: SanityUploadProgressEvent; uploadHash: string}>,\n    ) {\n      const {event, uploadHash} = action.payload\n      state.byIds[uploadHash]!.percent = event.percent\n      state.byIds[uploadHash]!.status = 'uploading'\n    },\n    uploadStart(state, action: PayloadAction<{file: File; uploadItem: UploadItem}>) {\n      const {uploadItem} = action.payload\n      if (!state.allIds.includes(uploadItem.hash)) {\n        state.allIds.push(uploadItem.hash)\n      }\n      state.byIds[uploadItem.hash] = uploadItem\n    },\n  },\n})\n\n// Epics\n\nexport const uploadsAssetStartEpic: MyEpic = (action$, _state$, {client}) =>\n  action$.pipe(\n    filter(uploadsActions.uploadStart.match),\n    mergeMap((action) => {\n      const {file, uploadItem} = action.payload\n\n      return merge(\n        // Generate low res preview\n        of(null).pipe(\n          mergeMap(() => generatePreviewBlobUrl$(file)),\n          mergeMap((url) => {\n            return of(\n              uploadsActions.previewReady({\n                blobUrl: url,\n                hash: uploadItem.hash,\n              }),\n            )\n          }),\n        ),\n        // Upload asset and receive progress / complete events\n        of(null).pipe(\n          // delay(500000), // debug uploads\n          mergeMap(() => uploadAsset$(client, uploadItem.assetType, file, uploadItem.hash)),\n          takeUntil(\n            action$.pipe(\n              filter(uploadsActions.uploadCancel.match),\n              filter((v) => v.payload.hash === uploadItem.hash),\n            ),\n          ),\n          mergeMap((event) => {\n            if (event?.type === 'complete') {\n              return of(\n                UPLOADS_ACTIONS.uploadComplete({\n                  asset: event.asset,\n                }),\n              )\n            }\n            if (event?.type === 'progress' && event?.stage === 'upload') {\n              return of(\n                uploadsActions.uploadProgress({\n                  event,\n                  uploadHash: uploadItem.hash,\n                }),\n              )\n            }\n            return empty()\n          }),\n          catchError((error: ClientError) =>\n            of(\n              uploadsActions.uploadError({\n                error: {\n                  message: error?.message || 'Internal error',\n                  statusCode: error?.statusCode || 500,\n                },\n                hash: uploadItem.hash,\n              }),\n            ),\n          ),\n        ),\n      )\n    }),\n  )\n\nexport const uploadsAssetUploadEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(uploadsActions.uploadRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {file, forceAsAssetType} = action.payload\n\n      return of(action).pipe(\n        // Generate SHA1 hash from local file\n        // This will throw in insecure contexts (non-localhost / https)\n        mergeMap(() => hashFile$(file)),\n        // Ignore if the file exists and is currently being uploaded\n        filter((hash) => {\n          const exists = !!state.uploads.byIds[hash]\n          return !exists\n        }),\n        // Dispatch start action and begin upload process\n        mergeMap((hash) => {\n          const assetType = forceAsAssetType || (file.type.indexOf('image') >= 0 ? 'image' : 'file')\n          const uploadItem = {\n            _type: 'upload',\n            assetType,\n            hash,\n            name: file.name,\n            size: file.size,\n            status: 'queued',\n          } as UploadItem\n          return of(uploadsActions.uploadStart({file, uploadItem}))\n        }),\n      )\n    }),\n  )\n\nexport const uploadsCompleteQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(UPLOADS_ACTIONS.uploadComplete.match),\n    mergeMap((action) => {\n      return of(\n        uploadsActions.checkRequest({\n          assets: [action.payload.asset],\n        }),\n      )\n    }),\n  )\n\nexport const uploadsCheckRequestEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(uploadsActions.checkRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assets} = action.payload\n\n      const documentIds = assets.map((asset) => asset._id)\n\n      const constructedFilter = constructFilter({\n        assetTypes: state.assets.assetTypes,\n        searchFacets: state.search.facets,\n        searchQuery: state.search.query,\n      })\n\n      const query = groq`\n        *[${constructedFilter} && _id in $documentIds].sha1hash\n      `\n\n      return of(action).pipe(\n        delay(1000), // give Sanity some time to register the recently uploaded asset\n        mergeMap(() => client.observable.fetch<string[]>(query, {documentIds})),\n        mergeMap((resultHashes) => {\n          const checkedResults = assets.reduce((acc: Record<string, string | null>, asset) => {\n            acc[asset.sha1hash] = resultHashes.includes(asset.sha1hash) ? asset._id : null\n            return acc\n          }, {})\n\n          return of(\n            uploadsActions.checkComplete({results: checkedResults}), //\n            assetsActions.insertUploads({results: checkedResults}),\n          )\n        }),\n      )\n    }),\n  )\n\n// Selectors\n\nexport const selectUploadById = createSelector(\n  [\n    (state: RootReducerState) => state.uploads.byIds,\n    (_state: RootReducerState, uploadId: string) => uploadId,\n  ],\n  (byIds, uploadId) => byIds[uploadId],\n)\n\nexport const uploadsActions = {...uploadsSlice.actions}\n\nexport default uploadsSlice.reducer\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Button, Flex, Text} from '@sanity/ui'\nimport filesize from 'filesize'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectUploadById, uploadsActions} from '../../modules/uploads'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\ntype Props = {\n  id: string\n}\n\nconst CardWrapper = styled(Flex)`\n  box-sizing: border-box;\n  height: 100%;\n  overflow: hidden;\n  position: relative;\n  width: 100%;\n`\n\nconst CardUpload = (props: Props) => {\n  const {id} = props\n\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const item = useTypedSelector((state) => selectUploadById(state, id))\n\n  if (!item) {\n    return null\n  }\n\n  const fileSize = filesize(item.size, {base: 10, round: 0})\n  const percentLoaded = Math.round(item.percent || 0) // (0 - 100)\n\n  const isComplete = item.status === 'complete'\n  const isUploading = item.status === 'uploading'\n  const isQueued = item.status === 'queued'\n\n  let status\n  if (isComplete) {\n    status = 'Verifying'\n  }\n  if (isUploading) {\n    status = `${percentLoaded}%`\n  }\n  if (isQueued) {\n    status = 'Queued'\n  }\n\n  // Callbacks\n  const handleCancelUpload = () => {\n    dispatch(uploadsActions.uploadCancel({hash: item.hash}))\n  }\n\n  return (\n    <CardWrapper padding={1}>\n      <Flex\n        direction=\"column\"\n        flex={1}\n        style={{\n          background: getSchemeColor(scheme, 'bg'),\n          border: '1px solid transparent',\n          height: '100%',\n          position: 'relative',\n        }}\n      >\n        {/* Progress bar */}\n        <div\n          style={{\n            background: 'var(--card-fg-color)',\n            bottom: 0,\n            height: '1px',\n            left: 0,\n            position: 'absolute',\n            width: '100%',\n            transform: `scaleX(${percentLoaded * 0.01})`,\n            transformOrigin: 'bottom left',\n            transition: 'all 1000ms ease-out',\n          }}\n        />\n\n        <Box flex={1} style={{position: 'relative'}}>\n          {item.assetType === 'image' && item?.objectUrl && (\n            <Image\n              draggable={false}\n              $scheme={scheme}\n              src={item.objectUrl}\n              style={{\n                opacity: 0.4,\n              }}\n            />\n          )}\n\n          {item.assetType === 'file' && (\n            <div style={{height: '100%', opacity: 0.1}}>\n              <FileIcon width=\"80px\" />\n            </div>\n          )}\n\n          {/*\n          Cancel upload button.\n          Assets will only have a `complete` status _after_ it has been created on your dataset.\n          As such, we also hide the cancel button when `percentLoaded === 100`, as cancelling when the asset\n          has been fully uploaded (even with a status of `progress`) won't stop the asset from being created.\n        */}\n          {!isComplete && percentLoaded !== 100 && (\n            <Flex\n              align=\"center\"\n              direction=\"column\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Button\n                fontSize={4}\n                icon={CloseIcon}\n                mode=\"bleed\"\n                onClick={handleCancelUpload}\n                padding={2}\n                style={{background: 'none', boxShadow: 'none'}}\n                tone=\"critical\"\n              />\n            </Flex>\n          )}\n        </Box>\n\n        {/* Footer */}\n        <Flex\n          align=\"center\"\n          justify=\"space-between\"\n          paddingX={2}\n          style={{height: `${PANEL_HEIGHT}px`}}\n        >\n          <Box flex={1} marginRight={1}>\n            <Text size={0} textOverflow=\"ellipsis\">\n              {item.name} ({fileSize})\n            </Text>\n          </Box>\n          <Text size={0} style={{flexShrink: 0}} weight=\"semibold\">\n            {status}\n          </Text>\n        </Flex>\n      </Flex>\n    </CardWrapper>\n  )\n}\n\nexport default CardUpload\n","import {memo} from 'react'\nimport {VirtuosoGrid} from 'react-virtuoso'\nimport {styled} from 'styled-components'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport type {CardAssetData, CardUploadData} from '../../types'\nimport CardAsset from '../CardAsset'\nimport CardUpload from '../CardUpload'\n\ntype Props = {\n  items: (CardAssetData | CardUploadData)[]\n  onLoadMore?: () => void\n}\n\nconst CARD_HEIGHT = 220\nconst CARD_WIDTH = 240\n\nconst VirtualCell = memo(\n  ({item, selected}: {item: CardAssetData | CardUploadData; selected: boolean}) => {\n    if (item?.type === 'asset') {\n      return <CardAsset id={item.id} selected={selected} />\n    }\n\n    if (item?.type === 'upload') {\n      return <CardUpload id={item.id} />\n    }\n\n    return null\n  },\n)\n\nconst StyledItemContainer = styled.div`\n  height: ${CARD_HEIGHT}px;\n  width: ${CARD_WIDTH}px;\n`\n\nconst ItemContainer = (props: any) => {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars -- we're doing this to avoid sc warnings about `context` passed as an attribute\n  const {context, ref, ...rest} = props\n  return <StyledItemContainer ref={ref} {...rest} />\n}\n\nconst StyledListContainer = styled.div`\n  display: grid;\n  grid-template-columns: repeat(auto-fill, ${CARD_WIDTH}px);\n  grid-template-rows: repeat(auto-fill, ${CARD_HEIGHT}px);\n  justify-content: center;\n  margin: 0 auto;\n`\n\nconst ListContainer = (props: any) => {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars -- we're doing this to avoid sc warnings about `context` passed as an attribute\n  const {context, ref, ...rest} = props\n  return <StyledListContainer ref={ref} {...rest} />\n}\n\nconst AssetGridVirtualized = (props: Props) => {\n  const {items, onLoadMore} = props\n\n  // Redux\n  const selectedAssets = useTypedSelector((state) => state.selected.assets)\n\n  const selectedIds = (selectedAssets && selectedAssets.map((asset) => asset._id)) || []\n  const totalCount = items?.length\n\n  if (totalCount === 0) {\n    return null\n  }\n\n  return (\n    <VirtuosoGrid\n      className=\"media__custom-scrollbar\"\n      computeItemKey={(index) => {\n        const item = items[index]\n        return item?.id ?? index\n      }}\n      components={{\n        Item: ItemContainer,\n        List: ListContainer,\n      }}\n      endReached={onLoadMore}\n      itemContent={(index) => {\n        const item = items[index]!\n        const selected = selectedIds.includes(item.id)\n        return <VirtualCell item={item} selected={selected} />\n      }}\n      overscan={48}\n      style={{overflowX: 'hidden', overflowY: 'scroll'}}\n      totalCount={totalCount}\n    />\n  )\n}\n\nexport default AssetGridVirtualized\n","import {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {ChevronUpIcon} from '@sanity/icons/ChevronUp'\nimport {Box, Label} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\n\ntype Props = {\n  field?: string\n  title?: string\n}\n\nconst TableHeaderItem = (props: Props) => {\n  const {field, title} = props\n\n  // Redux\n  const dispatch = useDispatch()\n  const order = useTypedSelector((state) => state.assets.order)\n\n  const isActive = order.field === field\n\n  // Callbacks\n  const handleClick = () => {\n    if (!field || !title) {\n      return\n    }\n\n    if (isActive) {\n      const direction = order.direction === 'asc' ? 'desc' : 'asc'\n      dispatch(assetsActions.orderSet({order: {field, direction}}))\n    } else {\n      dispatch(assetsActions.orderSet({order: {field, direction: 'asc'}}))\n    }\n  }\n\n  return (\n    <Label muted={!field} size={0}>\n      <Box\n        onClick={field ? handleClick : undefined}\n        style={{\n          cursor: field ? 'pointer' : 'default',\n          display: 'inline',\n          whiteSpace: 'nowrap',\n        }}\n      >\n        <span\n          style={{\n            marginRight: '0.4em',\n          }}\n        >\n          {title}\n        </span>\n\n        {isActive && order?.direction === 'asc' && <ChevronUpIcon />}\n        {isActive && order?.direction === 'desc' && <ChevronDownIcon />}\n      </Box>\n    </Label>\n  )\n}\n\nexport default TableHeaderItem\n","import {Checkbox, Flex, Grid, type ThemeColorSchemeKey, useMediaIndex} from '@sanity/ui'\nimport {type MouseEvent} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {styled, css} from 'styled-components'\n\nimport {GRID_TEMPLATE_COLUMNS, PANEL_HEIGHT} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetsLength, selectAssetsPickedLength} from '../../modules/assets'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport TableHeaderItem from '../TableHeaderItem'\n\n// TODO: DRY\nconst ContextActionContainer = styled<typeof Flex, {$scheme: ThemeColorSchemeKey}>(Flex)(({\n  $scheme,\n}) => {\n  return css`\n    cursor: pointer;\n    @media (hover: hover) and (pointer: fine) {\n      &:hover {\n        background: ${getSchemeColor($scheme, 'bg')};\n      }\n    }\n  `\n})\n\nconst TableHeader = () => {\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const fetching = useTypedSelector((state) => state.assets.fetching)\n  const itemsLength = useTypedSelector(selectAssetsLength)\n  const numPickedAssets = useTypedSelector(selectAssetsPickedLength)\n\n  const mediaIndex = useMediaIndex()\n  const {onSelect} = useAssetSourceActions()\n\n  const allSelected = numPickedAssets === itemsLength\n\n  // Callbacks\n  const handleContextActionClick = (e: MouseEvent) => {\n    e.stopPropagation()\n\n    if (allSelected) {\n      dispatch(assetsActions.pickClear())\n    } else {\n      dispatch(assetsActions.pickAll())\n    }\n  }\n\n  // Note that even though we hide the table header on smaller breakpoints, we never set it to\n  // `display: none`, as doing so causes issues with react-virtuoso.\n  // Instead, we give it 0 height and hide it with `visibility: hidden`.\n  return (\n    <Grid\n      style={{\n        alignItems: 'center',\n        background: 'var(--card-bg-color)',\n        borderBottom: '1px solid var(--card-border-color)',\n        gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n        gridTemplateColumns: GRID_TEMPLATE_COLUMNS.LARGE,\n        height: mediaIndex < 3 ? 0 : `${PANEL_HEIGHT}px`,\n        letterSpacing: '0.025em',\n        position: 'sticky',\n        textTransform: 'uppercase',\n        top: 0,\n        visibility: mediaIndex < 3 ? 'hidden' : 'visible',\n        width: '100%',\n        zIndex: 1, // force stacking context\n      }}\n    >\n      {onSelect ? (\n        <TableHeaderItem />\n      ) : (\n        <ContextActionContainer\n          align=\"center\"\n          justify=\"center\"\n          onClick={handleContextActionClick}\n          $scheme={scheme}\n          style={{\n            height: '100%',\n            position: 'relative',\n          }}\n        >\n          <Checkbox\n            checked={!fetching && allSelected}\n            readOnly\n            style={{\n              pointerEvents: 'none', // TODO: consider alternative for usability\n              transform: 'scale(0.8)',\n            }}\n          />\n        </ContextActionContainer>\n      )}\n\n      <TableHeaderItem />\n      <TableHeaderItem field=\"originalFilename\" title=\"Filename\" />\n      <TableHeaderItem title=\"Resolution\" />\n      <TableHeaderItem field=\"mimeType\" title=\"MIME type\" />\n      <TableHeaderItem field=\"size\" title=\"Size\" />\n      <TableHeaderItem field=\"_updatedAt\" title=\"Last updated\" />\n      <TableHeaderItem title=\"References\" />\n      <TableHeaderItem />\n    </Grid>\n  )\n}\n\nexport default TableHeader\n","import {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {WarningFilledIcon} from '@sanity/icons/WarningFilled'\nimport {\n  Box,\n  Checkbox,\n  Container,\n  Flex,\n  Grid,\n  Spinner,\n  Text,\n  type ThemeColorSchemeKey,\n  Tooltip,\n  useMediaIndex,\n} from '@sanity/ui'\nimport {formatRelative} from 'date-fns'\nimport filesize from 'filesize'\nimport {\n  memo,\n  type MouseEvent,\n  type RefObject,\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {WithReferringDocuments, useColorSchemeValue} from 'sanity'\nimport {styled, css} from 'styled-components'\n\nimport {GRID_TEMPLATE_COLUMNS} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetById} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport getAssetResolution from '../../utils/getAssetResolution'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport {getUniqueDocuments} from '../../utils/getUniqueDocuments'\nimport imageDprUrl from '../../utils/imageDprUrl'\nimport {isFileAsset, isImageAsset} from '../../utils/typeGuards'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\n// Duration (ms) to wait before reference counts (and associated listeners) are rendered\nconst REFERENCE_COUNT_VISIBILITY_DELAY = 750\n\ntype Props = {\n  id: string\n  selected: boolean\n}\n\nconst ContainerGrid = styled<\n  typeof Grid,\n  {$selected?: boolean; $scheme: ThemeColorSchemeKey; $updating?: boolean}\n>(Grid)(({$scheme, $selected, $updating}) => {\n  return css`\n    align-items: center;\n    cursor: ${$selected ? 'default' : 'pointer'};\n    height: 100%;\n    pointer-events: ${$updating ? 'none' : 'auto'};\n    user-select: none;\n    white-space: nowrap;\n\n    ${!$updating &&\n    css`\n      @media (hover: hover) and (pointer: fine) {\n        &:hover {\n          background: ${getSchemeColor($scheme, 'bg')};\n        }\n      }\n    `}\n  `\n})\n\nconst ContextActionContainer = styled<typeof Flex, {$scheme: ThemeColorSchemeKey}>(Flex)(({\n  $scheme,\n}) => {\n  return css`\n    cursor: pointer;\n    @media (hover: hover) and (pointer: fine) {\n      &:hover {\n        background: ${getSchemeColor($scheme, 'bg2')};\n      }\n    }\n  `\n})\n\nconst StyledWarningIcon = styled(WarningFilledIcon)(({theme}) => {\n  return {\n    color: theme.sanity.color.spot.red,\n  }\n})\n\nconst TableRowAsset = (props: Props) => {\n  const {id, selected} = props\n\n  const scheme = useColorSchemeValue()\n\n  const shiftPressed: RefObject<boolean> = useKeyPress('shift')\n\n  const [referenceCountVisible, setReferenceCountVisible] = useState(false)\n  const refCountVisibleTimeout = useRef<ReturnType<typeof window.setTimeout>>(null)\n\n  const dispatch = useDispatch()\n  const lastPicked = useTypedSelector((state) => state.assets.lastPicked)\n  const item = useTypedSelector((state) => selectAssetById(state, id))\n\n  const mediaIndex = useMediaIndex()\n\n  const asset = item?.asset\n  const error = item?.error\n  const isOpaque = item?.asset?.metadata?.isOpaque\n  const picked = item?.picked\n  const updating = item?.updating\n\n  const {onSelect} = useAssetSourceActions()\n\n  const handleContextActionClick = useCallback(\n    (e: MouseEvent<HTMLDivElement>) => {\n      e.stopPropagation()\n\n      if (!asset) return\n      if (onSelect) {\n        dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n      } else if (shiftPressed.current && !picked) {\n        dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n      } else {\n        dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n      }\n    },\n    [asset, dispatch, lastPicked, onSelect, picked, shiftPressed],\n  )\n\n  const handleClick = useCallback(\n    (e: MouseEvent<HTMLDivElement>) => {\n      e.stopPropagation()\n\n      if (!asset) return\n      if (onSelect) {\n        onSelect([{kind: 'assetDocumentId', value: asset._id}])\n      } else if (shiftPressed.current) {\n        if (picked) {\n          dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n        } else {\n          dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n        }\n      } else {\n        dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n      }\n    },\n    [asset, dispatch, lastPicked, onSelect, picked, shiftPressed],\n  )\n\n  const opacityCell = updating ? 0.5 : 1\n  const opacityPreview = selected || updating ? 0.1 : 1\n\n  // Display reference count after an initial delay to prevent over-eager fetching\n  useEffect(() => {\n    refCountVisibleTimeout.current = setTimeout(\n      () => setReferenceCountVisible(true),\n      REFERENCE_COUNT_VISIBILITY_DELAY,\n    )\n    return () => {\n      if (refCountVisibleTimeout.current) {\n        clearTimeout(refCountVisibleTimeout.current)\n      }\n    }\n  }, [])\n\n  // Short circuit if no asset is available\n  if (!asset) {\n    return null\n  }\n\n  return (\n    <ContainerGrid\n      onClick={selected ? undefined : handleClick}\n      $scheme={scheme}\n      $selected={selected}\n      style={{\n        gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n        gridRowGap: 0,\n        gridTemplateColumns:\n          mediaIndex < 3 ? GRID_TEMPLATE_COLUMNS.SMALL : GRID_TEMPLATE_COLUMNS.LARGE,\n        gridTemplateRows: mediaIndex < 3 ? 'auto' : '1fr',\n      }}\n      $updating={item.updating}\n    >\n      {/* Picked checkbox */}\n      <ContextActionContainer\n        onClick={handleContextActionClick}\n        $scheme={scheme}\n        style={{\n          alignItems: 'center',\n          gridColumn: 1,\n          gridRowStart: 1,\n          gridRowEnd: 'span 5',\n          height: '100%',\n          justifyContent: 'center',\n          opacity: opacityCell,\n          position: 'relative',\n        }}\n      >\n        {onSelect ? (\n          <EditIcon\n            style={{\n              flexShrink: 0,\n              opacity: 0.5,\n            }}\n          />\n        ) : (\n          <Checkbox\n            checked={picked}\n            readOnly\n            style={{\n              pointerEvents: 'none', // TODO: consider alternative for usability\n              transform: 'scale(0.8)',\n            }}\n          />\n        )}\n      </ContextActionContainer>\n\n      {/* Preview image + spinner */}\n      <Box\n        style={{\n          gridColumn: 2,\n          gridRowStart: 1,\n          gridRowEnd: 'span 5',\n          height: '90px',\n          width: '100px',\n        }}\n      >\n        <Flex align=\"center\" justify=\"center\" style={{height: '100%', position: 'relative'}}>\n          <Box style={{height: '100%', opacity: opacityPreview, position: 'relative'}}>\n            {/* File icon */}\n            {isFileAsset(asset) && <FileIcon extension={asset.extension} width=\"40px\" />}\n\n            {/* Image */}\n            {isImageAsset(asset) && (\n              <Image\n                draggable={false}\n                $scheme={scheme}\n                $showCheckerboard={!isOpaque}\n                src={imageDprUrl(asset, {height: 100, width: 100})}\n              />\n            )}\n          </Box>\n\n          {/* Spinner */}\n          {updating && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Spinner />\n            </Flex>\n          )}\n\n          {/* Selected check icon */}\n          {selected && !updating && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Text size={2}>\n                <CheckmarkCircleIcon />\n              </Text>\n            </Flex>\n          )}\n        </Flex>\n      </Box>\n\n      {/* Filename */}\n      <Box\n        marginLeft={mediaIndex < 3 ? 3 : 0}\n        style={{\n          gridColumn: 3,\n          gridRow: mediaIndex < 3 ? 2 : 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {asset.originalFilename}\n        </Text>\n      </Box>\n\n      {/* Resolution */}\n      <Box\n        marginLeft={mediaIndex < 3 ? 3 : 0}\n        style={{\n          gridColumn: mediaIndex < 3 ? 3 : 4,\n          gridRow: mediaIndex < 3 ? 3 : 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {isImageAsset(asset) && getAssetResolution(asset)}\n        </Text>\n      </Box>\n\n      {/* MIME type */}\n      <Box\n        style={{\n          display: mediaIndex < 3 ? 'none' : 'block',\n          gridColumn: 5,\n          gridRow: 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {asset.mimeType}\n        </Text>\n      </Box>\n\n      {/* Size */}\n      <Box\n        style={{\n          display: mediaIndex < 3 ? 'none' : 'block',\n          gridColumn: 6,\n          gridRow: 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {filesize(asset.size, {base: 10, round: 0})}\n        </Text>\n      </Box>\n\n      {/* Last updated */}\n      <Box\n        marginLeft={mediaIndex < 3 ? 3 : 0}\n        style={{\n          gridColumn: mediaIndex < 3 ? 3 : 7,\n          gridRow: mediaIndex < 3 ? 4 : 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {formatRelative(new Date(asset._updatedAt), new Date())}\n        </Text>\n      </Box>\n\n      {/* References */}\n      <Box\n        style={{\n          display: mediaIndex < 3 ? 'none' : 'block',\n          gridColumn: 8,\n          gridRow: 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {referenceCountVisible ? (\n            <WithReferringDocuments id={id}>\n              {({isLoading, referringDocuments}) => {\n                const uniqueDocuments = getUniqueDocuments(referringDocuments)\n                return isLoading ? (\n                  <>-</>\n                ) : (\n                  <>{Array.isArray(uniqueDocuments) ? uniqueDocuments.length : 0}</>\n                )\n              }}\n            </WithReferringDocuments>\n          ) : (\n            <>-</>\n          )}\n        </Text>\n      </Box>\n\n      {/* Error */}\n      <Flex\n        align=\"center\"\n        justify=\"center\"\n        style={{\n          gridColumn: mediaIndex < 3 ? 4 : 9,\n          gridRowStart: '1',\n          gridRowEnd: mediaIndex < 3 ? 'span 5' : 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        {/* TODO: DRY */}\n        {/* Error button */}\n        {error && (\n          <Box padding={2}>\n            <Tooltip\n              animate\n              content={\n                <Container padding={2} width={0}>\n                  <Text size={1}>{error}</Text>\n                </Container>\n              }\n              placement=\"left\"\n              portal\n            >\n              <Text size={1}>\n                <StyledWarningIcon color=\"critical\" />\n              </Text>\n            </Tooltip>\n          </Box>\n        )}\n      </Flex>\n    </ContainerGrid>\n  )\n}\n\nexport default memo(TableRowAsset)\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Button, Flex, Grid, Stack, Text, useMediaIndex} from '@sanity/ui'\nimport filesize from 'filesize'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\n\nimport {GRID_TEMPLATE_COLUMNS} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectUploadById, uploadsActions} from '../../modules/uploads'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\ntype Props = {\n  id: string\n}\n\nconst TableRowUpload = (props: Props) => {\n  const {id} = props\n\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const item = useTypedSelector((state) => selectUploadById(state, id))\n\n  const mediaIndex = useMediaIndex()\n\n  if (!item) {\n    return null\n  }\n\n  const fileSize = filesize(item.size, {base: 10, round: 0})\n  const percentLoaded = Math.round(item.percent || 0) // (0 - 100)\n\n  const isComplete = item.status === 'complete'\n  const isUploading = item.status === 'uploading'\n  const isQueued = item.status === 'queued'\n\n  let status\n  if (isComplete) {\n    status = 'Verifying'\n  }\n  if (isUploading) {\n    status = `${percentLoaded}%`\n  }\n  if (isQueued) {\n    status = 'Queued'\n  }\n\n  // Callbacks\n  const handleCancelUpload = () => {\n    dispatch(uploadsActions.uploadCancel({hash: item.hash}))\n  }\n\n  return (\n    <Grid\n      style={{\n        alignItems: 'center',\n        background: getSchemeColor(scheme, 'bg'),\n        gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n        gridRowGap: 0,\n        gridTemplateColumns:\n          mediaIndex < 3 ? GRID_TEMPLATE_COLUMNS.SMALL : GRID_TEMPLATE_COLUMNS.LARGE,\n        gridTemplateRows: mediaIndex < 3 ? 'auto' : '1fr',\n        height: '100%',\n        position: 'relative',\n      }}\n    >\n      {/* Progress bar */}\n      <div\n        style={{\n          background: 'var(--card-fg-color)',\n          bottom: 0,\n          height: '1px',\n          left: 0,\n          position: 'absolute',\n          width: '100%',\n          transform: `scaleX(${percentLoaded * 0.01})`,\n          transformOrigin: 'bottom left',\n          transition: 'all 1000ms ease-out',\n        }}\n      />\n\n      {/* Image */}\n      <Box\n        style={{\n          gridColumn: 2,\n          gridRowStart: mediaIndex < 3 ? 1 : 'auto',\n          gridRowEnd: mediaIndex < 3 ? 'span 4' : 'auto',\n          height: '90px',\n          width: '100px',\n        }}\n      >\n        <Box style={{height: '100%', position: 'relative'}}>\n          {item.assetType === 'image' && item?.objectUrl && (\n            <Image\n              draggable={false}\n              $scheme={scheme}\n              src={item.objectUrl}\n              style={{opacity: 0.25}}\n            />\n          )}\n\n          {item.assetType === 'file' && (\n            <div style={{height: '100%', opacity: 0.1}}>\n              <FileIcon width=\"40px\" />\n            </div>\n          )}\n\n          {/*\n            Cancel upload button.\n            Assets will only have a `complete` status _after_ it has been created on your dataset.\n            As such, we also hide the cancel button when `percentLoaded === 100`, as cancelling when the asset\n            has been fully uploaded (even with a status of `progress`) won't stop the asset from being created.\n          */}\n          {!isComplete && percentLoaded !== 100 && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                position: 'absolute',\n                height: '100%',\n                left: 0,\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Button\n                fontSize={3}\n                icon={CloseIcon}\n                mode=\"bleed\"\n                onClick={handleCancelUpload}\n                padding={2}\n                style={{background: 'none', boxShadow: 'none'}}\n                tone=\"critical\"\n              />\n            </Flex>\n          )}\n        </Box>\n      </Box>\n\n      {/* Filename */}\n      <Box\n        style={{\n          gridColumn: mediaIndex < 3 ? 3 : '3/8',\n          gridRow: mediaIndex < 3 ? '2/4' : 'auto',\n          marginLeft: mediaIndex < 3 ? 3 : 0,\n        }}\n      >\n        <Stack space={3}>\n          <Text muted size={1} textOverflow=\"ellipsis\">\n            {item.name} ({fileSize})\n          </Text>\n          <Text size={1} textOverflow=\"ellipsis\" weight=\"semibold\">\n            {status}\n          </Text>\n        </Stack>\n      </Box>\n    </Grid>\n  )\n}\n\nexport default TableRowUpload\n","import {Box} from '@sanity/ui'\nimport {memo} from 'react'\nimport {GroupedVirtuoso} from 'react-virtuoso'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport type {CardAssetData, CardUploadData} from '../../types'\nimport TableHeader from '../TableHeader'\nimport TableRowAsset from '../TableRowAsset'\nimport TableRowUpload from '../TableRowUpload'\n\ntype Props = {\n  items: (CardAssetData | CardUploadData)[]\n  onLoadMore?: () => void\n}\n\nconst VirtualRow = memo(\n  ({item, selected}: {item: CardAssetData | CardUploadData; selected: boolean}) => {\n    if (item?.type === 'asset') {\n      return (\n        <Box style={{height: '100px'}}>\n          <TableRowAsset id={item.id} selected={selected} />\n        </Box>\n      )\n    }\n\n    if (item?.type === 'upload') {\n      return (\n        <Box style={{height: '100px'}}>\n          <TableRowUpload id={item.id} />\n        </Box>\n      )\n    }\n\n    return null\n  },\n)\n\nconst AssetTableVirtualized = (props: Props) => {\n  const {items, onLoadMore} = props\n\n  // Redux\n  const selectedAssets = useTypedSelector((state) => state.selected.assets)\n\n  const selectedIds = (selectedAssets && selectedAssets.map((asset) => asset._id)) || []\n  const totalCount = items?.length\n\n  if (totalCount === 0) {\n    return null\n  }\n\n  return (\n    <GroupedVirtuoso\n      className=\"media__custom-scrollbar\"\n      computeItemKey={(index) => {\n        const item = items[index]\n        return item?.id || index\n      }}\n      endReached={onLoadMore}\n      groupCounts={Array(1).fill(totalCount)}\n      groupContent={() => {\n        return <TableHeader />\n      }}\n      itemContent={(index) => {\n        const item = items[index]\n        const selected = selectedIds.includes(item?.id || '')\n        return <VirtualRow item={item!} selected={selected} />\n      }}\n      style={{overflowX: 'hidden'}}\n    />\n  )\n}\n\nexport default AssetTableVirtualized\n","import {Box, Text} from '@sanity/ui'\nimport {useEffect} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport useBreakpointIndex from '../../hooks/useBreakpointIndex'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\nimport {selectCombinedItems} from '../../modules/selectors'\nimport {tagsActions} from '../../modules/tags'\nimport AssetGridVirtualized from '../AssetGridVirtualized'\nimport AssetTableVirtualized from '../AssetTableVirtualized'\n\nconst Items = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const fetchCount = useTypedSelector((state) => state.assets.fetchCount)\n  const fetching = useTypedSelector((state) => state.assets.fetching)\n  const tagsPanelVisible = useTypedSelector((state) => state.tags.panelVisible)\n  const view = useTypedSelector((state) => state.assets.view)\n  const combinedItems = useTypedSelector(selectCombinedItems)\n\n  const breakpointIndex = useBreakpointIndex()\n\n  const hasFetchedOnce = fetchCount >= 0\n  const hasItems = combinedItems.length > 0\n\n  // Only load 1 page of items at a time.\n  const handleLoadMoreItems = () => {\n    if (!fetching) {\n      dispatch(assetsActions.loadNextPage())\n    }\n  }\n\n  // Effects\n\n  // - Hide tag panel on smaller breakpoints\n  useEffect(() => {\n    if (breakpointIndex <= 1 && tagsPanelVisible) {\n      dispatch(tagsActions.panelVisibleSet({panelVisible: false}))\n    }\n  }, [breakpointIndex, dispatch, tagsPanelVisible])\n\n  const isEmpty = !hasItems && hasFetchedOnce && !fetching\n\n  return (\n    <Box flex={1} style={{width: '100%'}}>\n      {isEmpty ? (\n        <Box padding={4}>\n          <Text size={1} weight=\"semibold\">\n            No results for the current query\n          </Text>\n        </Box>\n      ) : (\n        <>\n          {view === 'grid' && (\n            <AssetGridVirtualized items={combinedItems} onLoadMore={handleLoadMoreItems} />\n          )}\n\n          {view === 'table' && (\n            <AssetTableVirtualized items={combinedItems} onLoadMore={handleLoadMoreItems} />\n          )}\n        </>\n      )}\n    </Box>\n  )\n}\n\nexport default Items\n","import {useToast} from '@sanity/ui'\nimport {useEffect} from 'react'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\n\nconst Notifications = () => {\n  const items = useTypedSelector((state) => state.notifications.items)\n  const toast = useToast()\n\n  useEffect(() => {\n    if (items.length > 0) {\n      const lastItem = items[items.length - 1]!\n      toast.push({\n        closable: true,\n        status: lastItem.status,\n        title: lastItem.title,\n      })\n    }\n  }, [items, toast])\n\n  return null\n}\n\nexport default Notifications\n","import {Box, Button, Flex, Label} from '@sanity/ui'\nimport pluralize from 'pluralize'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetsPicked} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\nconst PickedBar = () => {\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const assetsPicked = useTypedSelector(selectAssetsPicked)\n\n  // Callbacks\n  const handlePickClear = () => {\n    dispatch(assetsActions.pickClear())\n  }\n\n  const handleDeletePicked = () => {\n    dispatch(dialogActions.showConfirmDeleteAssets({assets: assetsPicked}))\n  }\n\n  if (assetsPicked.length === 0) {\n    return null\n  }\n\n  return (\n    <Flex\n      align=\"center\"\n      justify=\"flex-start\"\n      style={{\n        background: getSchemeColor(scheme, 'bg'),\n        borderBottom: '1px solid var(--card-border-color)',\n        height: `${PANEL_HEIGHT}px`,\n        position: 'relative',\n        width: '100%',\n      }}\n    >\n      <Flex align=\"center\" paddingX={3}>\n        <Box paddingRight={2}>\n          <Label size={0} style={{color: 'inherit'}}>\n            {assetsPicked.length} {pluralize('asset', assetsPicked.length)} selected\n          </Label>\n        </Box>\n\n        {/* Deselect button */}\n        <Button\n          mode=\"bleed\"\n          onClick={handlePickClear}\n          padding={2}\n          style={{background: 'none', boxShadow: 'none'}}\n          tone=\"default\"\n        >\n          <Label size={0}>Deselect</Label>\n        </Button>\n\n        {/* Delete button */}\n        <Button\n          mode=\"bleed\"\n          onClick={handleDeletePicked}\n          padding={2}\n          style={{background: 'none', boxShadow: 'none'}}\n          tone=\"critical\"\n        >\n          <Label size={0}>Delete</Label>\n        </Button>\n      </Flex>\n    </Flex>\n  )\n}\n\nexport default PickedBar\n","import {type PayloadAction, createSlice} from '@reduxjs/toolkit'\nimport pluralize from 'pluralize'\nimport type {AnyAction} from 'redux'\nimport {ofType} from 'redux-observable'\nimport {of} from 'rxjs'\nimport {bufferTime, filter, mergeMap} from 'rxjs/operators'\n\nimport type {HttpError, ImageAsset, MyEpic} from '../../types'\nimport {assetsActions} from '../assets'\nimport {ASSETS_ACTIONS} from '../assets/actions'\nimport {tagsActions} from '../tags'\nimport {uploadsActions} from '../uploads'\n\ntype Notification = {\n  asset?: ImageAsset\n  status?: 'error' | 'warning' | 'success' | 'info'\n  title?: string\n}\n\ntype NotificationsReducerState = {\n  items: Notification[]\n}\n\nfunction messageFromGenericErrorPayload(payload: unknown): string {\n  if (!payload || typeof payload !== 'object') {\n    return 'Unknown error'\n  }\n  if (\n    'error' in payload &&\n    payload.error &&\n    typeof payload.error === 'object' &&\n    payload.error !== null &&\n    'message' in payload.error\n  ) {\n    return String((payload.error as HttpError).message)\n  }\n  if ('message' in payload && typeof (payload as HttpError).message === 'string') {\n    return String((payload as HttpError).message)\n  }\n  return 'Unknown error'\n}\n\nconst initialState = {\n  items: [],\n} as NotificationsReducerState\n\nconst notificationsSlice = createSlice({\n  name: 'notifications',\n  initialState,\n  reducers: {\n    add(state, action: PayloadAction<Notification>) {\n      const {asset, status, title} = action.payload\n      state.items.push({\n        asset,\n        status,\n        title,\n      })\n    },\n  },\n})\n\n// Epics\n\nexport const notificationsAssetsDeleteCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.deleteComplete.match),\n    mergeMap((action) => {\n      const {assetIds} = action.payload\n      const deletedCount = assetIds.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `${deletedCount} ${pluralize('asset', deletedCount)} deleted`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsDeleteErrorEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.deleteError.match),\n    mergeMap((action) => {\n      const {assetIds} = action.payload\n      const count = assetIds.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'error',\n          title: `Unable to delete ${count} ${pluralize(\n            'asset',\n            count,\n          )}. Please review any asset errors and try again.`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsUploadCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(uploadsActions.checkComplete.match),\n    mergeMap((action) => {\n      const {results} = action.payload\n\n      const count = Object.keys(results).length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `Uploaded ${count} ${pluralize('asset', count)}`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsTagsAddCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(ASSETS_ACTIONS.tagsAddComplete.match),\n    mergeMap((action) => {\n      const count = action?.payload?.assets?.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `Tag added to ${count} ${pluralize('asset', count)}`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsTagsRemoveCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(ASSETS_ACTIONS.tagsRemoveComplete.match),\n    mergeMap((action) => {\n      const count = action?.payload?.assets?.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `Tag removed from ${count} ${pluralize('asset', count)}`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsUpdateCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.updateComplete.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const updatedCount = actions.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `${updatedCount} ${pluralize('asset', updatedCount)} updated`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsGenericErrorEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      assetsActions.fetchError.type,\n      assetsActions.updateError.type,\n      tagsActions.createError.type,\n      tagsActions.deleteError.type,\n      tagsActions.fetchError.type,\n      tagsActions.updateError.type,\n      uploadsActions.uploadError.type,\n    ),\n    mergeMap((action: AnyAction) => {\n      const title = `An error occurred: ${messageFromGenericErrorPayload(action['payload'])}`\n      return of(\n        notificationsSlice.actions.add({\n          status: 'error',\n          title,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsTagCreateCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.createComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Tag created`}))),\n  )\n\nexport const notificationsTagDeleteCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.deleteComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Tag deleted`}))),\n  )\n\nexport const notificationsTagUpdateCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.updateComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Tag updated`}))),\n  )\n\nexport const notificationsActions = {...notificationsSlice.actions}\n\nexport default notificationsSlice.reducer\n","import {createSlice} from '@reduxjs/toolkit'\nimport type {SanityAssetDocument, SanityDocument, SanityImageAssetDocument} from '@sanity/client'\n\ntype SelectedReducerState = {\n  assets: (SanityAssetDocument | SanityImageAssetDocument)[]\n  document?: SanityDocument\n  documentAssetIds?: string[]\n}\n\nconst initialState = {\n  assets: [],\n  document: undefined,\n  documentAssetIds: [],\n} as SelectedReducerState\n\nconst selectedSlice = createSlice({\n  name: 'selected',\n  initialState,\n  reducers: {},\n})\n\nexport default selectedSlice.reducer\n","import {type Reducer, type StateFromReducersMapObject, combineReducers} from '@reduxjs/toolkit'\nimport {combineEpics} from 'redux-observable'\n\nimport assetsReducer, {\n  assetsDeleteEpic,\n  assetsFetchAfterDeleteAllEpic,\n  assetsFetchEpic,\n  assetsFetchNextPageEpic,\n  assetsFetchPageIndexEpic,\n  assetsListenerCreateQueueEpic,\n  assetsListenerDeleteQueueEpic,\n  assetsListenerUpdateQueueEpic,\n  assetsOrderSetEpic,\n  assetsSearchEpic,\n  assetsSortEpic,\n  assetsTagsAddEpic,\n  assetsTagsRemoveEpic,\n  assetsUnpickEpic,\n  assetsUpdateEpic,\n} from './assets'\nimport debugReducer from './debug'\nimport dialogReducer, {\n  dialogClearOnAssetUpdateEpic,\n  dialogTagCreateEpic,\n  dialogTagDeleteEpic,\n} from './dialog'\nimport notificationsReducer, {\n  notificationsAssetsDeleteErrorEpic,\n  notificationsAssetsDeleteCompleteEpic,\n  notificationsAssetsTagsAddCompleteEpic,\n  notificationsAssetsTagsRemoveCompleteEpic,\n  notificationsAssetsUpdateCompleteEpic,\n  notificationsGenericErrorEpic,\n  notificationsTagCreateCompleteEpic,\n  notificationsTagDeleteCompleteEpic,\n  notificationsTagUpdateCompleteEpic,\n} from './notifications'\nimport searchReducer, {searchFacetTagUpdateEpic} from './search'\nimport selectedReducer from './selected'\nimport tagsReducer, {\n  tagsCreateEpic,\n  tagsDeleteEpic,\n  tagsFetchEpic,\n  tagsListenerCreateQueueEpic,\n  tagsListenerDeleteQueueEpic,\n  tagsListenerUpdateQueueEpic,\n  tagsSortEpic,\n  tagsUpdateEpic,\n} from './tags'\nimport uploadsReducer, {\n  uploadsAssetStartEpic,\n  uploadsAssetUploadEpic,\n  uploadsCheckRequestEpic,\n  uploadsCompleteQueueEpic,\n} from './uploads'\n\nexport const rootEpic = combineEpics(\n  assetsDeleteEpic,\n  assetsFetchEpic,\n  assetsFetchAfterDeleteAllEpic,\n  assetsFetchNextPageEpic,\n  assetsFetchPageIndexEpic,\n  assetsListenerCreateQueueEpic,\n  assetsListenerDeleteQueueEpic,\n  assetsListenerUpdateQueueEpic,\n  assetsOrderSetEpic,\n  assetsSearchEpic,\n  assetsSortEpic,\n  assetsTagsAddEpic,\n  assetsTagsRemoveEpic,\n  assetsUnpickEpic,\n  assetsUpdateEpic,\n  dialogClearOnAssetUpdateEpic,\n  dialogTagCreateEpic,\n  dialogTagDeleteEpic,\n  notificationsAssetsDeleteErrorEpic,\n  notificationsAssetsDeleteCompleteEpic,\n  notificationsAssetsTagsAddCompleteEpic,\n  notificationsAssetsTagsRemoveCompleteEpic,\n  notificationsAssetsUpdateCompleteEpic,\n  notificationsGenericErrorEpic,\n  notificationsTagCreateCompleteEpic,\n  notificationsTagDeleteCompleteEpic,\n  notificationsTagUpdateCompleteEpic,\n  searchFacetTagUpdateEpic,\n  tagsCreateEpic,\n  tagsDeleteEpic,\n  tagsFetchEpic,\n  tagsListenerCreateQueueEpic,\n  tagsListenerDeleteQueueEpic,\n  tagsListenerUpdateQueueEpic,\n  tagsSortEpic,\n  tagsUpdateEpic,\n  uploadsAssetStartEpic,\n  uploadsAssetUploadEpic,\n  uploadsCheckRequestEpic,\n  uploadsCompleteQueueEpic,\n)\n\nconst reducers = {\n  assets: assetsReducer,\n  debug: debugReducer,\n  dialog: dialogReducer,\n  notifications: notificationsReducer,\n  search: searchReducer,\n  selected: selectedReducer,\n  tags: tagsReducer,\n  uploads: uploadsReducer,\n}\n\ntype ReducersMapObject = typeof reducers\n\n// Workaround to avoid `$CombinedState` ts errors\n// source: https://github.com/reduxjs/redux-toolkit/issues/2068#issuecomment-1130796500\n// TODO: remove once we use `redux-toolkit` v2\nexport const rootReducer: Reducer<StateFromReducersMapObject<ReducersMapObject>> =\n  combineReducers(reducers)\n","import type {SanityDocument} from '@sanity/client'\n\nconst isPlainObject = (value: any) =>\n  value !== null && typeof value === 'object' && !Array.isArray(value)\n\n// Recursively search node for any linked asset ids (`asset._type === 'reference'`)\nconst getAssetIds = (node: Record<string, any>, acc: string[] = []) => {\n  if (Array.isArray(node)) {\n    node.forEach((v) => {\n      getAssetIds(v, acc)\n    })\n  }\n\n  if (isPlainObject(node)) {\n    if (node?.['asset']?._type === 'reference' && node?.['asset']?._ref) {\n      acc.push(node['asset']._ref)\n    }\n\n    Object.values(node).forEach((val) => {\n      getAssetIds(val, acc)\n    })\n  }\n\n  return acc\n}\n\n// Retrieve all linked asset ids from a Sanity document\nconst getDocumentAssetIds = (document: SanityDocument): string[] => {\n  const assetIds = getAssetIds(document)\n\n  // Sort and dedupe\n  return [...new Set(assetIds.sort())]\n}\n\nexport default getDocumentAssetIds\n","import {SUPPORTED_ASSET_TYPES} from '../constants'\nimport type {AssetType} from '../types'\n\n/**\n * Determines whether or not the provided asset type (eg 'image', 'file', 'arbitrary')\n * is a supported asset type for this plugin.\n *\n * @param assetType - The asset type to check.\n * @returns True if the asset type is supported, false otherwise.\n * @internal\n */\nexport function isSupportedAssetType(assetType?: string): assetType is AssetType {\n  const supported: string[] = SUPPORTED_ASSET_TYPES\n  return assetType ? supported.includes(assetType) : false\n}\n","import {type AnyAction, configureStore, type Store} from '@reduxjs/toolkit'\nimport type {SanityClient} from '@sanity/client'\nimport {Component, type ReactNode} from 'react'\nimport {Provider} from 'react-redux'\nimport {createEpicMiddleware} from 'redux-observable'\nimport type {AssetSourceComponentProps, SanityDocument} from 'sanity'\n\nimport {rootEpic, rootReducer} from '../../modules'\nimport {initialState as assetsInitialState} from '../../modules/assets'\n// import {assetsActions} from '../../modules/assets'\n// import {searchActions} from '../../modules/search'\n// import {uploadsActions} from '../../modules/uploads'\nimport type {RootReducerState} from '../../modules/types'\nimport getDocumentAssetIds from '../../utils/getDocumentAssetIds'\nimport {isSupportedAssetType} from '../../utils/isSupportedAssetType'\n\ntype Props = {\n  assetType?: AssetSourceComponentProps['assetType']\n  children?: ReactNode\n  client: SanityClient\n  document?: SanityDocument\n  selectedAssets?: AssetSourceComponentProps['selectedAssets']\n}\n\nclass ReduxProvider extends Component<Props> {\n  store: Store\n\n  constructor(props: Props) {\n    super(props)\n\n    // Initialize redux store + middleware\n    const epicMiddleware = createEpicMiddleware<AnyAction, AnyAction, RootReducerState>({\n      dependencies: {\n        client: props.client, // inject sanity client as a dependency to all epics\n      },\n    })\n    this.store = configureStore({\n      reducer: rootReducer,\n      middleware: (getDefaultMiddleware) =>\n        getDefaultMiddleware({\n          /*\n          serializableCheck: {\n            ignoredActions: [\n              assetsActions.deleteError.type,\n              uploadsActions.uploadRequest.type,\n              uploadsActions.uploadStart.type,\n            ]\n          },\n          */\n          // TODO: remove once we're no longer storing non-serializable data in the store\n          serializableCheck: false,\n          thunk: false,\n        }).prepend(epicMiddleware),\n      devTools: true,\n      preloadedState: {\n        assets: {\n          ...assetsInitialState,\n          assetTypes: isSupportedAssetType(props?.assetType)\n            ? [props.assetType]\n            : ['file', 'image'],\n        },\n        debug: {\n          badConnection: false,\n          enabled: false,\n        },\n        dialog: {items: []},\n        notifications: {items: []},\n        search: {facets: [], query: ''},\n        selected: {\n          assets: props.selectedAssets || [],\n          document: props.document,\n          documentAssetIds: props.document ? getDocumentAssetIds(props.document) : [],\n        },\n        tags: {\n          allIds: [],\n          byIds: {},\n          creating: false,\n          fetchCount: -1,\n          fetching: false,\n          panelVisible: true,\n        },\n        uploads: {\n          allIds: [],\n          byIds: {},\n        },\n      },\n    })\n    epicMiddleware.run(rootEpic)\n  }\n\n  override render() {\n    return <Provider store={this.store}>{this.props.children}</Provider>\n  }\n}\n\nexport default ReduxProvider\n","import {Box} from '@sanity/ui'\n\nimport {TAGS_PANEL_WIDTH} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport TagView from '../TagView'\n\nconst TagsPanel = () => {\n  const tagsPanelVisible = useTypedSelector((state) => state.tags.panelVisible)\n\n  if (!tagsPanelVisible) {\n    return null\n  }\n\n  return (\n    <Box\n      style={{\n        position: 'relative',\n        width: TAGS_PANEL_WIDTH,\n      }}\n    >\n      <Box\n        className=\"media__custom-scrollbar\"\n        style={{\n          borderLeft: '1px solid var(--card-border-color)',\n          height: '100%',\n          overflowX: 'hidden',\n          overflowY: 'auto',\n          position: 'absolute',\n          right: 0,\n          top: 0,\n          width: '100%',\n        }}\n      >\n        <TagView />\n      </Box>\n    </Box>\n  )\n}\n\nexport default TagsPanel\n","import {white} from '@sanity/color'\nimport {Flex, Text} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {type DropEvent, type DropzoneOptions, useDropzone} from 'react-dropzone'\nimport {useDispatch} from 'react-redux'\nimport {styled} from 'styled-components'\n\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport {DropzoneDispatchProvider} from '../../contexts/DropzoneDispatchContext'\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {notificationsActions} from '../../modules/notifications'\nimport {uploadsActions} from '../../modules/uploads'\n\ntype Props = {\n  children: ReactNode\n}\n\nconst UploadContainer = styled.div`\n  color: white;\n  height: 100%;\n  min-height: 100%;\n  right: 0;\n  top: 0;\n  width: 100%;\n\n  &:focus {\n    outline: none;\n  }\n`\n\nconst DragActiveContainer = styled.div`\n  align-items: center;\n  background: rgba(0, 0, 0, 0.75);\n  display: flex;\n  height: 100%;\n  justify-content: center;\n  position: absolute;\n  right: 0;\n  top: 0;\n  width: 100%;\n  z-index: 3;\n`\n\n// Iterate through all files and only return non-folders / packages.\n// We check for files by reading the first byte of the file\nasync function filterFiles(fileList: FileList) {\n  const files = Array.from(fileList)\n\n  const filteredFiles: File[] = []\n\n  for (const file of files) {\n    try {\n      await file.slice(0, 1).arrayBuffer()\n      filteredFiles.push(file)\n    } catch {\n      // do nothing: file is a package or folder\n    }\n  }\n\n  return filteredFiles\n}\n\nconst UploadDropzone = (props: Props) => {\n  const {children} = props\n\n  const {\n    dropzone: {maxSize},\n    directUploads,\n  } = useToolOptions()\n\n  const {onSelect} = useAssetSourceActions()\n\n  // Redux\n  const dispatch = useDispatch()\n  const assetTypes = useTypedSelector((state) => state.assets.assetTypes)\n\n  const isImageAssetType = assetTypes.length === 1 && assetTypes[0] === 'image'\n\n  // Callbacks\n  const handleDrop = async (acceptedFiles: File[]) => {\n    acceptedFiles.forEach((file) =>\n      dispatch(\n        uploadsActions.uploadRequest({\n          file,\n          forceAsAssetType: assetTypes.length === 1 ? assetTypes[0] : undefined,\n        }),\n      ),\n    )\n  }\n\n  const handleDropRejected: DropzoneOptions['onDropRejected'] = (rejections) => {\n    const errorCodes = rejections.flatMap(({errors}) => errors.map(({code}) => code))\n\n    if (errorCodes.includes('file-too-large')) {\n      dispatch(\n        notificationsActions.add({\n          status: 'error',\n          title: 'One or more files exceed the maximum upload size.',\n        }),\n      )\n    }\n  }\n\n  // Use custom file selector to obtain files on file drop + change events (excluding folders and packages)\n  const handleFileGetter = async (event: DropEvent) => {\n    let fileList: FileList | undefined\n    if (event.type === 'drop' && 'dataTransfer' in event) {\n      fileList = event?.dataTransfer?.files\n    }\n    if (event.type === 'change') {\n      const target = event?.target as HTMLInputElement\n      if (target?.files) {\n        fileList = target.files\n      }\n    }\n\n    if (!fileList) {\n      return []\n    }\n\n    // Filter out non-folders / packages\n    const files: File[] = await filterFiles(fileList)\n\n    // Dispatch error if some files have been filtered out\n    if (fileList?.length !== files.length) {\n      dispatch(\n        notificationsActions.add({\n          status: 'error',\n          title: `Unable to upload some items (folders and packages aren't supported)`,\n        }),\n      )\n    }\n\n    return files\n  }\n\n  // Limit file picking to only images if we're specifically within an image selection context (e.g. picking from image fields)\n  const {getRootProps, getInputProps, isDragActive, open} = useDropzone({\n    accept: isImageAssetType ? 'image/*' : '',\n    getFilesFromEvent: handleFileGetter,\n    noClick: true,\n    // HACK: Disable drag and drop functionality when in a selecting context\n    // (This is currently due to Sanity's native image input taking precedence with drag and drop)\n    noDrag: !!onSelect,\n    onDrop: handleDrop,\n    maxSize,\n    onDropRejected: handleDropRejected,\n    disabled: !directUploads,\n  })\n\n  return (\n    <DropzoneDispatchProvider open={open}>\n      <UploadContainer {...getRootProps()}>\n        <input {...getInputProps()} />\n\n        {isDragActive && (\n          <DragActiveContainer>\n            <Flex direction=\"column\" justify=\"center\" style={{color: white.hex}}>\n              <Text size={3} style={{color: 'inherit'}}>\n                Drop files to upload\n              </Text>\n            </Flex>\n          </DragActiveContainer>\n        )}\n\n        {children}\n      </UploadContainer>\n    </DropzoneDispatchProvider>\n  )\n}\n\nexport default UploadDropzone\n","import type {MutationEvent, SanityClient} from '@sanity/client'\nimport groq from 'groq'\nimport {useEffect} from 'react'\nimport {useDispatch, useSelector} from 'react-redux'\nimport type {Dispatch} from 'redux'\nimport type {AssetSourceComponentProps} from 'sanity'\n\nimport {inputs} from '../../config/searchFacets'\nimport {TAG_DOCUMENT_NAME} from '../../constants'\nimport {assetsActions} from '../../modules/assets'\nimport {searchActions} from '../../modules/search'\nimport {tagsActions} from '../../modules/tags'\nimport type {RootReducerState} from '../../modules/types'\nimport type {Asset, Tag} from '../../types'\n\nfunction getMediaTagNames(schemaType?: AssetSourceComponentProps['schemaType']): string[] {\n  const mediaTags = (schemaType?.options as {mediaTags?: string[]} | undefined)?.mediaTags\n  if (!mediaTags?.length) return []\n  const unique = new Set(\n    mediaTags.map((t) => t?.trim()).filter((t): t is string => Boolean(t?.length)),\n  )\n  return Array.from(unique)\n}\n\nfunction createAssetHandler(dispatch: Dispatch) {\n  return (update: MutationEvent) => {\n    const {documentId, result, transition} = update\n\n    switch (transition) {\n      case 'appear':\n        dispatch(assetsActions.listenerCreateQueue({asset: result as Asset}))\n        break\n      case 'disappear':\n        dispatch(assetsActions.listenerDeleteQueue({assetId: documentId}))\n        break\n      case 'update':\n        dispatch(assetsActions.listenerUpdateQueue({asset: result as Asset}))\n        break\n      default:\n        break\n    }\n  }\n}\n\nfunction createTagHandler(dispatch: Dispatch) {\n  return (update: MutationEvent) => {\n    const {documentId, result, transition} = update\n\n    switch (transition) {\n      case 'appear':\n        dispatch(tagsActions.listenerCreateQueue({tag: result as Tag}))\n        break\n      case 'disappear':\n        dispatch(tagsActions.listenerDeleteQueue({tagId: documentId}))\n        break\n      case 'update':\n        dispatch(tagsActions.listenerUpdateQueue({tag: result as Tag}))\n        break\n      default:\n        break\n    }\n  }\n}\n\nexport function useBrowserInit(\n  client: SanityClient,\n  schemaType?: AssetSourceComponentProps['schemaType'],\n): void {\n  const dispatch = useDispatch()\n  const tagsByIds = useSelector((state: RootReducerState) => state.tags.byIds)\n  const tagsFetchCount = useSelector((state: RootReducerState) => state.tags.fetchCount)\n\n  const tagNames = getMediaTagNames(schemaType)\n  const hasMediaTags = tagNames.length > 0\n\n  useEffect(() => {\n    if (!hasMediaTags) {\n      dispatch(searchActions.facetsClear())\n    }\n\n    dispatch(tagsActions.fetchRequest())\n\n    const assetSubscription = client\n      .listen(\n        groq`*[_type in [\"sanity.fileAsset\", \"sanity.imageAsset\"] && !(_id in path(\"drafts.**\"))]`,\n      )\n      .subscribe(createAssetHandler(dispatch))\n\n    const tagSubscription = client\n      .listen(groq`*[_type == \"${TAG_DOCUMENT_NAME}\" && !(_id in path(\"drafts.**\"))]`)\n      .subscribe(createTagHandler(dispatch))\n\n    return () => {\n      assetSubscription.unsubscribe()\n      tagSubscription.unsubscribe()\n    }\n  }, [client, dispatch, hasMediaTags])\n\n  // When mediaTags are configured, wait for the tag fetch to complete then apply facets.\n  // Dispatching clear + add synchronously keeps all actions within assetsSearchEpic's\n  // 400ms debounce window, so the browser performs exactly one asset fetch on open.\n  useEffect(() => {\n    if (!hasMediaTags || tagsFetchCount < 0) return\n\n    const tagFacetInput = inputs.tag\n    if (tagFacetInput.type !== 'searchable') return\n\n    const resolvedTags = tagNames\n      .map((name) => Object.values(tagsByIds).find((item) => item.tag.name.current === name))\n      .filter((item): item is NonNullable<typeof item> => Boolean(item))\n\n    dispatch(searchActions.facetsClear())\n\n    for (const tagItem of resolvedTags) {\n      dispatch(\n        searchActions.facetsAdd({\n          facet: {\n            ...tagFacetInput,\n            operatorType: 'references',\n            value: {label: tagItem.tag.name.current, value: tagItem.tag._id},\n          },\n        }),\n      )\n    }\n  }, [tagsFetchCount, hasMediaTags]) // eslint-disable-line react-hooks/exhaustive-deps\n}\n","import {Card, Flex, PortalProvider} from '@sanity/ui'\nimport {useState} from 'react'\nimport {type AssetSourceComponentProps, type SanityDocument} from 'sanity'\n\nimport {AssetBrowserDispatchProvider} from '../../contexts/AssetSourceDispatchContext'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport GlobalStyle from '../../styled/GlobalStyles'\nimport Controls from '../Controls'\nimport DebugControls from '../DebugControls'\nimport Dialogs from '../Dialogs'\nimport Header from '../Header'\nimport Items from '../Items'\nimport Notifications from '../Notifications'\nimport PickedBar from '../PickedBar'\nimport ReduxProvider from '../ReduxProvider'\nimport TagsPanel from '../TagsPanel'\nimport UploadDropzone from '../UploadDropzone'\nimport {useBrowserInit} from './useBrowserInit'\n\ntype Props = {\n  assetType?: AssetSourceComponentProps['assetType']\n  document?: SanityDocument\n  onClose?: AssetSourceComponentProps['onClose']\n  onSelect?: AssetSourceComponentProps['onSelect']\n  selectedAssets?: AssetSourceComponentProps['selectedAssets']\n  schemaType?: AssetSourceComponentProps['schemaType']\n}\n\nconst BrowserContent = ({\n  onClose,\n  schemaType,\n}: {\n  onClose?: AssetSourceComponentProps['onClose']\n  schemaType?: AssetSourceComponentProps['schemaType']\n}) => {\n  const client = useVersionedClient()\n  const [portalElement, setPortalElement] = useState<HTMLDivElement | null>(null)\n\n  useBrowserInit(client, schemaType)\n\n  return (\n    <PortalProvider element={portalElement}>\n      <UploadDropzone>\n        <Dialogs />\n        <Notifications />\n\n        <Card display=\"flex\" height=\"fill\" ref={setPortalElement}>\n          <Flex direction=\"column\" flex={1}>\n            {/* Header */}\n            <Header onClose={onClose} />\n\n            {/* Browser Controls */}\n            <Controls />\n\n            <Flex flex={1}>\n              <Flex align=\"flex-end\" direction=\"column\" flex={1} style={{position: 'relative'}}>\n                <PickedBar />\n                <Items />\n              </Flex>\n              <TagsPanel />\n            </Flex>\n\n            {/* Debug */}\n            <DebugControls />\n          </Flex>\n        </Card>\n      </UploadDropzone>\n    </PortalProvider>\n  )\n}\n\nconst Browser = (props: Props) => {\n  const client = useVersionedClient()\n\n  return (\n    <ReduxProvider\n      assetType={props?.assetType}\n      client={client}\n      document={props?.document}\n      selectedAssets={props?.selectedAssets}\n    >\n      <AssetBrowserDispatchProvider onSelect={props?.onSelect}>\n        <GlobalStyle />\n        <BrowserContent onClose={props?.onClose} schemaType={props?.schemaType} />\n      </AssetBrowserDispatchProvider>\n    </ReduxProvider>\n  )\n}\n\nexport default Browser\n","import {Box, Portal, PortalProvider, useLayer} from '@sanity/ui'\nimport {type SyntheticEvent, useEffect, useState} from 'react'\nimport {type AssetSourceComponentProps, type SanityDocument, useFormValue} from 'sanity'\n\nimport useKeyPress from '../../hooks/useKeyPress'\nimport Browser from '../Browser'\n\nconst FormBuilderTool = (props: AssetSourceComponentProps) => {\n  const {onClose} = props\n\n  const portalElement = useRootPortalElement()\n\n  // Get current Sanity document\n  const currentDocument = useFormValue([]) as SanityDocument\n\n  // Close on escape key press\n  useKeyPress('escape', onClose)\n\n  // Stop propagation and prevent document mouse events from firing.\n  // This is a bit of a hack to make this work with `editModal = 'popover'` and prevent Sanity's <Popover /> component from\n  // prematurely closing, as it attaches events on `document` to detect outside clicks.\n  const handleStopPropagation = (event: SyntheticEvent) => {\n    event.nativeEvent.stopImmediatePropagation()\n    event.stopPropagation()\n  }\n\n  const {zIndex} = useLayer()\n\n  return (\n    <PortalProvider element={portalElement}>\n      <Portal>\n        <Box\n          onDragEnter={handleStopPropagation}\n          onDragLeave={handleStopPropagation}\n          onDragOver={handleStopPropagation}\n          onDrop={handleStopPropagation}\n          onMouseUp={handleStopPropagation}\n          style={{\n            bottom: 0,\n            height: 'auto',\n            left: 0,\n            position: 'fixed',\n            top: 0,\n            width: '100%',\n            zIndex,\n          }}\n        >\n          <Browser document={currentDocument} schemaType={props.schemaType} {...props} />\n        </Box>\n      </Portal>\n    </PortalProvider>\n  )\n}\n\nexport default FormBuilderTool\n\nconst useRootPortalElement = () => {\n  const [container] = useState(() => document.createElement('div'))\n\n  useEffect(() => {\n    container.classList.add('media-portal')\n    document.body.appendChild(container)\n    return () => {\n      document.body.removeChild(container)\n    }\n  }, [container])\n\n  return container\n}\n","import {Flex} from '@sanity/ui'\n\nimport Browser from '../Browser'\n\nconst Tool = () => {\n  return (\n    <Flex direction=\"column\" height=\"fill\" flex={1}>\n      <Browser />\n    </Flex>\n  )\n}\n\nexport default Tool\n","import TagIcon from '../components/TagIcon'\nimport {TAG_DOCUMENT_NAME} from '../constants'\n\nexport default {\n  title: 'Media Tag',\n  icon: TagIcon,\n  name: TAG_DOCUMENT_NAME,\n  type: 'document',\n  fields: [\n    {\n      title: 'Name',\n      name: 'name',\n      type: 'slug',\n    },\n  ],\n  preview: {\n    select: {\n      name: 'name',\n    },\n    prepare(selection: any) {\n      const {name} = selection\n      return {\n        media: TagIcon,\n        title: name?.current,\n      }\n    },\n  },\n}\n","import {ImageIcon} from '@sanity/icons/Image'\nimport {type AssetSource, type Tool as SanityTool, definePlugin} from 'sanity'\n\nimport FormBuilderTool from './components/FormBuilderTool'\nimport Tool from './components/Tool'\nimport {ToolOptionsProvider} from './contexts/ToolOptionsContext'\nimport mediaTag from './schemas/tag'\nimport type {MediaToolOptions} from './types'\n\nconst plugin = {\n  icon: ImageIcon,\n  name: 'media',\n  title: 'Media',\n}\n\nexport const mediaAssetSource = {\n  ...plugin,\n  component: FormBuilderTool,\n} satisfies AssetSource\n\nconst tool = {\n  ...plugin,\n  component: Tool,\n  __internalApplicationType: 'sanity/media',\n} satisfies SanityTool\n\nexport const media = definePlugin<MediaToolOptions | void>((options) => ({\n  name: 'media',\n  studio: {\n    components: {\n      layout: (props) => (\n        <ToolOptionsProvider options={options}>{props.renderDefault(props)}</ToolOptionsProvider>\n      ),\n    },\n  },\n  form: {\n    file: {\n      assetSources: (prev) => {\n        return [...prev, mediaAssetSource]\n      },\n    },\n    image: {\n      assetSources: (prev) => {\n        return [...prev, mediaAssetSource]\n      },\n    },\n  },\n  schema: {\n    types: [mediaTag],\n  },\n  tools: (prev) => {\n    return [...prev, tool]\n  },\n}))\n","import type {SanityClient} from '@sanity/client'\nimport groq from 'groq'\nimport {nanoid} from 'nanoid'\n\nimport {TAG_DOCUMENT_NAME} from '../constants'\nimport type {Tag} from '../types'\n\ntype ApplyMediaTagsOptions = {\n  client: SanityClient\n  assetId: string\n  mediaTags: string[]\n  createTagsOnUpload?: boolean\n}\n\n// Serialize calls per asset so concurrent fields reading the same asset\n// don't race each other — the second call always runs after the first commits.\nconst pendingByAsset = new Map<string, Promise<void>>()\n\nexport function applyMediaTags(options: ApplyMediaTagsOptions): Promise<void> {\n  const {assetId} = options\n  const chain = (pendingByAsset.get(assetId) ?? Promise.resolve()).then(() =>\n    doApplyMediaTags(options),\n  )\n  const cleanup = chain\n    .catch(() => {})\n    .finally(() => {\n      if (pendingByAsset.get(assetId) === cleanup) pendingByAsset.delete(assetId)\n    })\n  pendingByAsset.set(assetId, cleanup)\n  return chain\n}\n\nasync function doApplyMediaTags({\n  client,\n  assetId,\n  mediaTags,\n  createTagsOnUpload = true,\n}: ApplyMediaTagsOptions): Promise<void> {\n  if (!mediaTags || mediaTags.length === 0) return\n\n  const resolvedTags = await Promise.all(\n    mediaTags.map(async (tagName) => {\n      const existingTag = await client.fetch<Tag | null>(\n        groq`*[_type == \"${TAG_DOCUMENT_NAME}\" && name.current == $tagName][0]`,\n        {tagName},\n      )\n      if (existingTag) return existingTag\n      if (createTagsOnUpload) {\n        const newTag = await client.create({\n          _type: TAG_DOCUMENT_NAME,\n          name: {_type: 'slug', current: tagName},\n        })\n        return newTag as Tag\n      }\n      return null\n    }),\n  )\n\n  const validTags = resolvedTags.filter((tag): tag is Tag => tag !== null)\n  if (validTags.length === 0) return\n\n  const existing = await client.fetch<{tagIds: string[]} | null>(\n    groq`*[_id == $assetId][0]{'tagIds': opt.media.tags[]._ref}`,\n    {assetId},\n    {useCdn: false}, // bypass CDN cache so we see the latest committed tag refs\n  )\n  const existingIds = new Set(existing?.tagIds ?? [])\n\n  const tagReferences = validTags\n    .filter((tag) => !existingIds.has(tag._id))\n    .map((tag) => ({\n      _key: nanoid(),\n      _ref: tag._id,\n      _type: 'reference' as const,\n      _weak: true,\n    }))\n\n  if (tagReferences.length === 0) return\n\n  await client\n    .patch(assetId)\n    .setIfMissing({opt: {}})\n    .setIfMissing({'opt.media': {}})\n    .setIfMissing({'opt.media.tags': []})\n    .append('opt.media.tags', tagReferences)\n    .commit()\n}\n","import {useToast} from '@sanity/ui'\nimport {useEffect, useRef} from 'react'\nimport {type InputProps} from 'sanity'\n\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {applyMediaTags} from '../../utils/applyMediaTags'\n\ntype AssetValue = {\n  _type: 'image' | 'file'\n  asset?: {\n    _ref: string\n    _type: 'reference'\n  }\n}\n\nexport type AutoTagInputProps = InputProps & {\n  mediaTags?: string[]\n}\n\n/**\n * Input component that automatically applies media tags when an asset is selected or uploaded.\n *\n * Apply explicitly to image/file fields that should be auto-tagged:\n * ```ts\n * import {AutoTagInput} from 'sanity-plugin-media'\n *\n * defineField({\n *   type: 'image',\n *   options: { mediaTags: ['product'] },   // also pre-filters the media browser\n *   components: { input: AutoTagInput },\n * })\n * ```\n *\n * Pass `mediaTags` as a prop to override or use without `options`:\n * ```ts\n * components: { input: (props) => <AutoTagInput {...props} mediaTags={['product']} /> }\n * ```\n */\nexport function AutoTagInput(props: AutoTagInputProps) {\n  const {renderDefault, schemaType, value, mediaTags: mediaTagsProp} = props\n  const toast = useToast()\n\n  // Prop takes precedence; fall back to schemaType.options.mediaTags (set for browser pre-filtering)\n  const mediaTags =\n    mediaTagsProp ?? (schemaType?.options as {mediaTags?: string[]} | undefined)?.mediaTags\n\n  const client = useVersionedClient()\n  const {createTagsOnUpload} = useToolOptions()\n\n  const prevAssetRef = useRef<string | undefined>(undefined)\n  const isInitialMount = useRef(true)\n\n  const currentAssetRef = (value as AssetValue | undefined)?.asset?._ref\n\n  useEffect(() => {\n    if (isInitialMount.current) {\n      isInitialMount.current = false\n      prevAssetRef.current = currentAssetRef\n      return\n    }\n\n    const previousRef = prevAssetRef.current\n    prevAssetRef.current = currentAssetRef\n\n    if (!mediaTags?.length || !currentAssetRef || currentAssetRef === previousRef) return\n\n    applyMediaTags({\n      client,\n      assetId: currentAssetRef,\n      mediaTags,\n      createTagsOnUpload,\n    }).catch((err) => {\n      console.error('[sanity-plugin-media] Failed to apply auto-tags:', err)\n      const label = mediaTags.length === 1 ? 'tag' : 'tags'\n      toast.push({\n        closable: true,\n        status: 'error',\n        title: `Failed to apply the media ${label} ${mediaTags.join(', ')}`,\n      })\n    })\n  }, [currentAssetRef, mediaTags, client, createTagsOnUpload, toast])\n\n  return renderDefault(props as InputProps)\n}\n","import type {\n  FieldDefinitionBase,\n  FileDefinition,\n  ImageDefinition,\n  WidenInitialValue,\n  WidenValidation,\n} from 'sanity'\n\nimport {AutoTagInput} from '../components/AutoTagInputWrapper'\n\ntype ImageMediaFieldConfig = Omit<ImageDefinition, 'options'> &\n  FieldDefinitionBase & {\n    name: string\n    mediaTags: string[]\n    options?: ImageDefinition['options']\n  }\n\ntype FileMediaFieldConfig = Omit<FileDefinition, 'options'> &\n  FieldDefinitionBase & {\n    name: string\n    mediaTags: string[]\n    options?: FileDefinition['options']\n  }\n\ntype ImageMediaFieldResult = Omit<ImageDefinition, 'options'> &\n  FieldDefinitionBase & {\n    options?: ImageDefinition['options'] & {mediaTags: string[]}\n    components: {input: typeof AutoTagInput}\n  } & WidenValidation &\n  WidenInitialValue\n\ntype FileMediaFieldResult = Omit<FileDefinition, 'options'> &\n  FieldDefinitionBase & {\n    options?: FileDefinition['options'] & {mediaTags: string[]}\n    components: {input: typeof AutoTagInput}\n  } & WidenValidation &\n  WidenInitialValue\n\n/**\n * Defines an image or file field with automatic media tag application when an asset is selected.\n *\n * Pass `mediaTags` at the top level — they are moved into `options.mediaTags` (for media browser\n * pre-filtering) and wire up {@link AutoTagInput} as the field component automatically:\n * ```ts\n * import {mediaField} from 'sanity-plugin-media'\n *\n * mediaField({\n *   name: 'coverImage',\n *   type: 'image',\n *   mediaTags: ['product-cover'],\n *   options: { hotspot: true },\n * })\n * ```\n *\n * For file fields, set `type: 'file'`:\n * ```ts\n * mediaField({ name: 'drawing', type: 'file', mediaTags: ['model-drawing'] })\n * ```\n */\nexport function mediaField(config: ImageMediaFieldConfig): ImageMediaFieldResult\nexport function mediaField(config: FileMediaFieldConfig): FileMediaFieldResult\nexport function mediaField(\n  config: ImageMediaFieldConfig | FileMediaFieldConfig,\n): ImageMediaFieldResult | FileMediaFieldResult {\n  const {mediaTags, options, components, ...rest} = config as ImageMediaFieldConfig & {\n    components?: Record<string, unknown>\n  }\n  return {\n    ...rest,\n    options: {...options, mediaTags},\n    components: {...components, input: AutoTagInput},\n  } as unknown as ImageMediaFieldResult\n}\n"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","names":["isHotkey","RefObject","useCallback","useEffect","useRef","useKeyPress","hotkey","onPress","$","_c","keyPressed","t0","e","current","downHandler","t1","Symbol","for","upHandler","t2","t3","window","addEventListener","removeEventListener","ReactNode","createContext","useContext","useMemo","AssetSourceComponentProps","ContextProps","onSelect","Props","children","AssetSourceDispatchContext","undefined","AssetBrowserDispatchProvider","props","$","_c","t0","contextValue","t1","useAssetSourceActions","context","Error","SanityClient","useClient","useVersionedClient","$","_c","t0","Symbol","for","apiVersion","createGlobalStyle","css","customScrollbar","GlobalStyle","TypedUseSelectorHook","useSelector","RootReducerState","useTypedSelector","OrderDirection","ORDER_DICTIONARY","Record","asc","desc","_createdAt","_updatedAt","mimeType","originalFilename","size","getOrderTitle","field","direction","groq","SearchFacetDivider","SearchFacetInputProps","SearchFacetName","SearchFacetOperators","divider","type","inputs","Record","altText","assetTypes","field","name","operatorType","operatorTypes","title","value","creditLine","description","fileName","height","inCurrentDocument","options","selectOnly","inUse","isOpaque","orientation","size","modifier","modifiers","fieldModifier","fieldName","tag","width","operators","doesNotInclude","fn","undefined","label","doesNotReference","_field","empty","_value","hideInput","equalTo","greaterThan","greaterThanOrEqualTo","includes","is","isNot","lessThan","lessThanOrEqualTo","notEmpty","references","AssetSourceComponentProps","divider","inputs","SearchFacetInputProps","SearchFacetDivider","SearchFacetGroup","OrderDirection","SUPPORTED_ASSET_TYPES","const","ORDER_OPTIONS","direction","field","FACETS","tag","inUse","inCurrentDocument","title","altText","creditLine","description","isOpaque","fileName","size","type","orientation","width","height","GRID_TEMPLATE_COLUMNS","SMALL","LARGE","PANEL_HEIGHT","TAG_DOCUMENT_NAME","TAGS_PANEL_WIDTH","iif","Observable","of","throwError","delay","mergeMap","debugThrottle","throttled","source","T","pipe","v","Math","random","message","statusCode","groq","operators","AssetType","SearchFacetInputProps","constructFilter","assetTypes","searchFacets","searchQuery","documentAssetTypes","map","type","baseFilter","JSON","stringify","searchFacetFragments","reduce","acc","facet","field","modifier","modifiers","operatorType","value","operator","currentModifier","find","m","name","facetField","fieldModifier","fragment","fn","push","options","currentOptionValue","l","constructedQuery","trim","join","SanityClient","groq","from","Observable","of","throwError","mergeMap","TAG_DOCUMENT_NAME","HttpError","checkTagName","client","name","source","T","pipe","fetch","existingTagCount","message","statusCode","TagSelectOption","TagItem","getTagSelectOptions","tags","reduce","acc","val","tag","push","label","name","current","value","_id","createAction","AssetItem","HttpError","Tag","ASSETS_ACTIONS","tagsAddComplete","prepare","assets","tag","payload","tagsAddError","error","tagsAddRequest","tagsRemoveComplete","tagsRemoveError","tagsRemoveRequest","createAction","DIALOG_ACTIONS","showTagCreate","showTagEdit","prepare","tagId","payload","createSelector","createSlice","isAnyOf","PayloadAction","ClientError","Transaction","groq","Selector","ofType","from","Observable","of","bufferTime","catchError","filter","mergeMap","switchMap","withLatestFrom","TAG_DOCUMENT_NAME","checkTagName","debugThrottle","Asset","HttpError","MyEpic","TagSelectOption","Tag","TagItem","getTagSelectOptions","ASSETS_ACTIONS","DIALOG_ACTIONS","RootReducerState","TagsReducerState","allIds","byIds","Record","creating","creatingError","fetchCount","fetching","fetchingError","panelVisible","initialState","undefined","tagsSlice","name","extraReducers","builder","addCase","showTagCreate","state","showTagEdit","action","tagId","payload","error","addMatcher","tagsAddComplete","tagsAddError","tagsRemoveComplete","tagsRemoveError","tag","_id","updating","tagsAddRequest","tagsRemoveRequest","reducers","createComplete","assetId","includes","push","_type","picked","createError","createRequest","_action","deleteComplete","deleteIndex","indexOf","splice","deleteError","deleteRequest","Object","keys","forEach","key","fetchComplete","tags","length","fetchError","fetchRequest","reducer","query","prepare","listenerCreateQueue","_state","listenerCreateQueueComplete","listenerDeleteQueue","listenerDeleteQueueComplete","tagIds","listenerUpdateQueue","listenerUpdateQueueComplete","panelVisibleSet","sort","a","b","tagA","current","tagB","updateComplete","closeDialogId","updateError","updateRequest","formData","tagsCreateEpic","action$","state$","client","pipe","actions","match","debug","badConnection","observable","create","result","message","statusCode","tagsDeleteEpic","fetch","tagName","assets","patches","map","asset","id","patch","ifRevisionID","_rev","unset","transaction","reduce","tx","delete","commit","tagsFetchEpic","items","tagsListenerCreateQueueEpic","tagsListenerDeleteQueueEpic","tagsListenerUpdateQueueEpic","tagsSortEpic","type","tagsUpdateEpic","set","updatedTag","selectTagsByIds","selectTagsAllIds","selectTags","selectTagById","selectTagSelectOptions","opt","media","acc","v","tagItem","_ref","tagsActions","PayloadAction","createSelector","createSlice","uuid","EMPTY","of","filter","mergeMap","withLatestFrom","MyEpic","SearchFacetInputProps","SearchFacetOperatorType","WithId","tagsActions","RootReducerState","SearchState","facets","query","initialState","searchSlice","name","reducers","facetsAdd","state","action","facet","push","payload","id","facetsClear","facetsRemoveByName","facetName","facetsRemoveByTag","tagId","type","operatorType","value","facetsRemoveById","facetId","facetsUpdate","modifier","find","f","facetsUpdateById","forEach","index","querySet","searchQuery","searchFacetTagUpdateEpic","action$","state$","pipe","updateComplete","match","tag","currentSearchFacetTag","search","tagItem","tags","byIds","_id","actions","label","current","selectIsSearchFacetTag","_state","searchFacets","some","searchActions","reducer","createAction","SanityAssetDocument","SanityImageAssetDocument","UPLOADS_ACTIONS","uploadComplete","prepare","asset","payload","createSelector","createSlice","PayloadAction","ClientError","Patch","Transaction","groq","nanoid","Selector","ofType","EMPTY","from","of","bufferTime","catchError","debounceTime","filter","mergeMap","switchMap","withLatestFrom","getOrderTitle","ORDER_OPTIONS","debugThrottle","Asset","AssetItem","AssetType","BrowserView","HttpError","MyEpic","Order","OrderDirection","Tag","constructFilter","searchActions","RootReducerState","UPLOADS_ACTIONS","ASSETS_ACTIONS","ItemError","description","id","referencingIDs","type","AssetsReducerState","allIds","assetTypes","byIds","Record","fetchCount","fetching","fetchingError","lastPicked","order","pageIndex","pageSize","view","defaultOrder","direction","field","initialState","undefined","title","assetsSlice","name","extraReducers","builder","addCase","uploadComplete","state","action","asset","payload","_id","_type","picked","updating","tagsAddComplete","assets","forEach","tagsAddError","tagsAddRequest","tagsRemoveComplete","tagsRemoveError","tagsRemoveRequest","reducers","clear","deleteComplete","assetIds","deleteIndex","indexOf","splice","Math","floor","length","deleteError","error","itemErrors","response","body","items","map","item","deleteRequest","closeDialogId","Object","keys","key","fetchComplete","includes","push","fetchError","fetchRequest","reducer","_action","params","query","prepare","queryFilter","selector","sort","replace","pipe","insertUploads","results","entries","hash","assetId","listenerCreateQueue","_state","listenerCreateQueueComplete","listenerDeleteQueue","listenerDeleteQueueComplete","listenerUpdateQueue","listenerUpdateQueueComplete","loadNextPage","loadPageIndex","orderSet","pick","pickAll","pickClear","values","pickRange","endId","startId","startIndex","findIndex","endIndex","indices","a","b","slice","tagA","tagB","updateComplete","updateError","message","updateRequest","formData","viewSet","assetsDeleteEpic","action$","_state$","client","assetsActions","match","observable","delete","JSON","stringify","assetsFetchEpic","state$","debug","badConnection","fetch","result","statusCode","assetsFetchPageIndexEpic","start","end","documentId","selected","document","documentAssetIds","constructedFilter","searchFacets","search","facets","searchQuery","assetsFetchNextPageEpic","assetsFetchAfterDeleteAllEpic","nextPageIndex","filterAssetWithoutTag","tag","tagIndex","opt","media","tags","t","_ref","patchOperationTagAppend","patch","setIfMissing","append","_key","_weak","patchOperationTagUnset","ifRevisionId","_rev","unset","assetsOrderSetEpic","assetsSearchEpic","facetsAdd","facetsClear","facetsRemoveById","facetsRemoveByName","facetsRemoveByTag","facetsUpdate","facetsUpdateById","querySet","assetsListenerCreateQueueEpic","actions","assetsListenerDeleteQueueEpic","assetsListenerUpdateQueueEpic","assetsSortEpic","assetsTagsAddEpic","pickedAssets","selectAssetsPicked","pickedAssetsFiltered","transaction","reduce","tx","pickedAsset","commit","assetsTagsRemoveEpic","assetsUnpickEpic","assetsUpdateEpic","set","updatedAsset","selectAssetsByIds","selectAssetsAllIds","selectAssetById","selectAssets","selectAssetsLength","selectAssetsPickedLength","assetsPicked","createSlice","PayloadAction","pluralize","ofType","EMPTY","of","filter","mergeMap","AssetItem","Dialog","MyEpic","Tag","assetsActions","ASSETS_ACTIONS","tagsActions","DIALOG_ACTIONS","DialogReducerState","items","initialState","dialogSlice","name","extraReducers","builder","addCase","showTagCreate","state","push","id","type","showTagEdit","action","tagId","payload","reducers","clear","inlineTagCreate","assetId","tag","forEach","item","lastCreatedTag","label","current","value","_id","inlineTagRemove","tagIds","lastRemovedTagIds","remove","showConfirmAssetsTagAdd","assetsPicked","closeDialogId","suffix","length","confirmCallbackAction","tagsAddRequest","assets","confirmText","title","headerTitle","tone","showConfirmAssetsTagRemove","tagsRemoveRequest","showConfirmDeleteAssets","deleteRequest","map","assetItem","asset","description","showConfirmDeleteTag","showAssetEdit","showSearchFacets","showTags","dialogClearOnAssetUpdateEpic","action$","pipe","deleteComplete","updateComplete","dialogId","actions","dialogTagCreateEpic","createComplete","match","dialogTagDeleteEpic","listenerDeleteQueueComplete","dialogActions","reducer","ThLargeIcon","ThListIcon","Button","Inline","useDispatch","useTypedSelector","assetsActions","ButtonViewGroup","$","_c","dispatch","view","_temp","t0","Symbol","for","whiteSpace","t1","t2","viewSet","t3","borderBottomRightRadius","borderTopRightRadius","t4","t5","t6","t7","borderBottomLeftRadius","borderTopLeftRadius","t8","t9","state","assets","PopoverProps","usePortal","usePortalPopoverProps","$","_c","portal","t0","element","animate","constrainSize","floatingBoundary","referenceBoundary","SortIcon","Button","Menu","MenuButton","MenuDivider","MenuItem","useDispatch","getOrderTitle","ORDER_OPTIONS","usePortalPopoverProps","useTypedSelector","assetsActions","OrderSelect","$","_c","dispatch","order","_temp","popoverProps","t0","direction","field","t1","t2","map","item","index","selected","orderSet","minWidth","t3","t4","state","assets","Box","useNProgress","Props","loading","Progress","props","$","_c","t0","animationDuration","isAnimating","isFinished","progress","t1","t2","t3","opacity","transition","t4","t5","t6","height","background","position","left","top","width","t7","hues","ThemeColorSchemeKey","studioTheme","SCHEME_COLORS","bg","dark","gray","hex","light","bg2","inputEnabledBorder","color","default","input","enabled","border","inputHoveredBorder","hovered","mutedHoveredBg","primary","muted","mutedHoveredFg","fg","mutedSelectedBg","selected","spotBlue","spot","blue","SchemeColorKey","getSchemeColor","scheme","colorKey","CloseIcon","Box","Flex","Label","rem","Text","ThemeColorSchemeKey","ReactNode","useDispatch","useColorSchemeValue","styled","css","searchActions","SearchFacetInputProps","WithId","getSchemeColor","Props","children","facet","Container","$scheme","theme","sanity","radius","SearchFacet","props","$","_c","scheme","dispatch","t0","id","facetsRemoveById","facetId","handleClose","t1","Symbol","for","t2","t3","t4","t5","t6","whiteSpace","t7","title","t8","t9","t10","t11","TextInput","ChangeEvent","Props","onValueChange","value","TextInputNumber","props","$","_c","remainingProps","t0","t1","t2","e","val","target","regex","test","parseInt","handleChange","SelectIcon","Box","Button","Menu","MenuButton","MenuDivider","MenuItem","useDispatch","operators","usePortalPopoverProps","searchActions","SearchFacetInputNumberModifier","SearchFacetInputNumberProps","SearchFacetOperatorType","WithId","SearchFacet","TextInputNumber","Props","facet","SearchFacetNumber","t0","$","_c","dispatch","popoverProps","modifiers","t1","modifier","find","name","selectedModifier","t2","id","operatorType","facetsUpdateById","handleOperatorItemClick","t3","modifier_0","handleModifierClick","t4","value","handleValueChange","selectedOperatorType","t5","operatorTypes","label","map","operatorType_0","index","selected","t6","Symbol","for","maxWidth","t7","t8","t9","title","modifier_1","selected_0","t10","SelectIcon","Box","Button","Menu","MenuButton","MenuDivider","MenuItem","useDispatch","operators","usePortalPopoverProps","searchActions","SearchFacetInputSelectListItemProps","SearchFacetInputSelectProps","SearchFacetOperatorType","WithId","SearchFacet","Props","facet","SearchFacetSelect","t0","$","_c","dispatch","popoverProps","options","t1","value","find","v","name","selectedItem","t2","option","facetsUpdate","handleListItemClick","t3","operatorType","handleOperatorItemClick","selectedOperatorType","t4","operatorTypes","label","map","operatorType_0","index","selected","t5","title","t6","t7","item","selected_0","t8","t9","t10","SelectIcon","Box","Button","Menu","MenuButton","MenuDivider","MenuItem","TextInput","ChangeEvent","useDispatch","operators","usePortalPopoverProps","searchActions","SearchFacetInputStringProps","SearchFacetOperatorType","WithId","SearchFacet","Props","facet","SearchFacetString","t0","$","_c","dispatch","popoverProps","t1","id","operatorType","facetsUpdateById","handleOperatorItemClick","t2","e","value","target","handleChange","selectedOperatorType","t3","operatorTypes","label","map","operatorType_0","index","selected","t4","hideInput","maxWidth","t5","CloseIcon","Box","Card","rem","studioTheme","Text","ThemeColorSchemeKey","components","StylesConfig","Virtuoso","getSchemeColor","fonts","text","sizes","themeTextSizes","radius","themeRadius","space","themeSpace","reactSelectStyles","scheme","control","styles","isDisabled","isFocused","boxShadow","fontSize","input","color","fontFamily","family","marginLeft","menuList","padding","noOptionsMessage","lineHeight","option","backgroundColor","placeholder","paddingLeft","singleValue","alignItems","display","height","valueContainer","margin","ClearIndicator","props","$","_c","t0","Symbol","for","transform","t1","t2","Menu","children","MenuList","Array","isArray","length","index","item","NoOptionsMessage","Option","SingleValue","reactSelectComponents","DropdownIndicator","IndicatorSeparator","SelectIcon","Box","Button","Menu","MenuButton","MenuDivider","MenuItem","useDispatch","Select","useColorSchemeValue","operators","usePortalPopoverProps","useTypedSelector","searchActions","selectTags","reactSelectComponents","reactSelectStyles","TagSelectOption","SearchFacetInputSearchableProps","SearchFacetOperatorType","WithId","getTagSelectOptions","SearchFacet","Props","facet","SearchFacetTags","t0","$","_c","scheme","dispatch","tags","_temp","tagsFetching","_temp2","t1","allTagOptions","popoverProps","t2","id","option","facetsUpdateById","value","handleChange","t3","operatorType","handleOperatorItemClick","selectedOperatorType","t4","operatorTypes","label","map","operatorType_0","index","selected","minWidth","t5","hideInput","width","_temp3","t6","state","state_0","fetching","Box","Flex","Inline","rem","Theme","styled","css","useTypedSelector","SearchFacetNumber","SearchFacetSelect","SearchFacetString","SearchFacetTags","Props","layout","StackContainer","theme","sanity","space","SearchFacets","props","$","_c","t0","undefined","searchFacets","_temp","t1","map","_temp2","Items","length","t2","Error","state","search","facets","facet","key","id","type","PropsWithChildren","createContext","useContext","useMemo","DropzoneOptions","MediaToolOptions","Locale","ContextProps","dropzone","Pick","components","createTagsOnUpload","creditLine","directUploads","locales","ToolOptionsContext","Props","options","ToolOptionsProvider","children","value","creditLineExcludeSources","excludeSources","Array","isArray","maxSize","maximumUploadSize","details","enabled","useToolOptions","context","Error","AddIcon","Button","Flex","Menu","MenuButton","MenuDivider","MenuGroup","MenuItem","useDispatch","FACETS","useToolOptions","usePortalPopoverProps","useTypedSelector","searchActions","SearchFacetDivider","SearchFacetGroup","SearchFacetInputProps","SearchFacetsControl","$","_c","dispatch","assetTypes","_temp","searchFacets","_temp2","selectedDocument","_temp3","popoverProps","creditLine","isTool","T0","T1","T2","t0","t1","t2","enabled","t3","facet","type","name","selectOnly","matchingAssetTypes","filter","assetType","includes","length","filteredFacets","_temp4","hasSearchFacets","renderMenuFacets","facets_0","t4","level","undefined","facets","map","facet_1","index_0","index","title","disabled","operatorTypes","find","v","facetsAdd","t5","placement","t6","facetsClear","t7","state","assets","state_0","search","state_1","selected","document","facet_0","previousFacet","TagIcon","$","_c","t0","Symbol","for","CloseIcon","SearchIcon","Box","Flex","TextInput","ChangeEvent","useDispatch","useTypedSelector","searchActions","TextInputSearch","$","_c","searchQuery","_temp","dispatch","t0","e","querySet","currentTarget","value","handleChange","t1","handleClear","t2","Symbol","for","position","t3","t4","length","cursor","height","opacity","right","top","width","zIndex","t5","state","search","query","Box","Button","Flex","Inline","useMediaIndex","useDispatch","useTypedSelector","dialogActions","tagsActions","ButtonViewGroup","OrderSelect","Progress","SearchFacets","SearchFacetsControl","TagIcon","TextInputSearch","Controls","$","_c","dispatch","fetching","_temp","pageIndex","_temp2","searchFacets","_temp3","tagsPanelVisible","_temp4","mediaIndex","t0","showSearchFacets","handleShowSearchFacetDialog","t1","showTags","handleShowTagsDialog","t2","panelVisibleSet","panelVisible","toggleTagsPanelToggle","t3","Symbol","for","borderBottom","zIndex","t4","t5","t6","alignItems","flex","height","justifyContent","position","width","t7","minWidth","t8","t9","t10","whiteSpace","t11","length","t12","t13","t14","t15","t16","t17","t18","t19","t20","transform","t21","t22","t23","t24","t25","state","assets","state_0","state_1","search","facets","state_2","tags","PayloadAction","createSlice","DebugReducerState","badConnection","enabled","initialState","debugSlice","name","reducers","setBadConnection","state","action","payload","toggleEnabled","debugActions","actions","reducer","PlugIcon","Box","Flex","Switch","Text","Tooltip","ChangeEvent","useDispatch","useKeyPress","useTypedSelector","debugActions","DebugControls","$","_c","dispatch","badConnection","_temp","debugEnabled","_temp2","t0","e","checked","target","setBadConnection","handleChange","t1","toggleEnabled","handleToggleControls","t2","Symbol","for","bottom","left","pointerEvents","position","width","t3","t4","t5","t6","t7","t8","t9","state","debug","state_0","enabled","z","localizedStringSchema","locales","id","length","string","trim","optional","shape","Record","ZodTypeAny","locale","object","passthrough","tagOptionSchema","label","min","message","value","getAssetFormSchema","altText","creditLine","description","opt","media","tags","array","nullable","originalFilename","title","assetFormSchema","tagFormSchema","name","SanityDocument","getUniqueDocuments","documents","draftIds","reduce","acc","doc","_id","startsWith","concat","slice","filteredDocuments","filter","includes","ImageAsset","imageDprUrl","asset","options","width","height","dpi","window","devicePixelRatio","Math","round","imgH","max","undefined","imgW","urlParams","URLSearchParams","append","toString","url","FormData","Record","sanitizeFormData","formData","Object","keys","reduce","acc","key","val","constructor","Array","length","trim","Asset","FileAsset","ImageAsset","isFileAsset","asset","_type","isImageAsset","zodResolver","FieldValues","Resolver","zodFormResolver","schema","TFieldValues","Parameters","ImageAsset","getAssetResolution","asset","metadata","dimensions","width","height","ClipboardIcon","Button","Popover","Text","copy","useEffect","useRef","useState","usePortalPopoverProps","Props","disabled","url","ButtonAssetCopy","t0","$","_c","popoverProps","refPopoverTimeout","popoverVisible","setPopoverVisible","t1","current","clearTimeout","setTimeout","handleClick","t2","t3","Symbol","for","t4","t5","t6","DownloadIcon","Box","Button","Flex","Inline","Stack","Text","format","filesize","ReactNode","Asset","AssetItem","getAssetResolution","isImageAsset","ButtonAssetCopy","Props","asset","item","Row","t0","$","_c","label","value","t1","Symbol","for","opacity","width","t2","t3","textAlign","t4","t5","AssetMetadata","props","exif","metadata","originalFilename","url","window","location","href","handleDownload","size","base","round","mimeType","t6","extension","toUpperCase","t7","t8","t9","t10","DateTimeOriginal","FNumber","FocalLength","ExposureTime","ISO","background","height","Date","t11","updating","t12","t13","t14","t15","t16","Dialog","SanityDialog","ComponentProps","props","$","_c","t0","Symbol","for","position","t1","SanityDocument","Box","Button","Card","Stack","Text","Preview","SchemaType","useSchema","useIntentLink","Props","documents","isLoading","DocumentList","t0","$","_c","schema","t1","Symbol","for","length","map","doc","_id","get","_type","t2","ReferringDocument","props","schemaType","intent","params","id","onClick","width","Box","Flex","Theme","MouseEvent","defaultStyles","FileIcon","ReactFileIcon","DefaultExtensionType","styled","css","Props","extension","onClick","e","width","Container","theme","sanity","fonts","text","family","props","$","_c","t0","Symbol","for","height","t1","t2","t3","t4","Flex","Asset","FileIcon","Props","asset","FileAssetPreview","props","$","_c","mimeType","search","t0","Symbol","for","height","t1","width","t2","url","extension","Box","Button","Text","Tooltip","format","ReactNode","Props","disabled","isValid","lastUpdated","onClick","FormSubmitButton","props","$","_c","content","t0","Symbol","for","t1","Date","t2","maxWidth","t3","window","ThemeColorSchemeKey","MouseEvent","styled","css","getSchemeColor","Props","onClick","e","$showCheckerboard","$scheme","src","style","Image","img","props","AddIcon","ChevronDownIcon","CloseIcon","Box","Card","Flex","rem","studioTheme","Text","ThemeColorSchemeKey","components","StylesConfig","Virtuoso","getSchemeColor","radius","themeRadius","space","themeSpace","reactSelectStyles","scheme","control","styles","isFocused","boxShadow","indicatorsContainer","isDisabled","opacity","input","color","fontFamily","fonts","text","family","marginLeft","menuList","multiValue","backgroundColor","borderRadius","multiValueLabel","fontSize","padding","multiValueRemove","noOptionsMessage","lineHeight","option","placeholder","valueContainer","margin","DropdownIndicator","props","$","_c","t0","Symbol","for","t1","Menu","children","MenuList","Array","isArray","height","length","index","item","t2","MultiValueLabel","MultiValueRemove","Option","data","__isNew__","marginRight","reactSelectComponents","IndicatorSeparator","ErrorOutlineIcon","Box","Inline","Text","Tooltip","styled","Props","description","error","label","name","StyledErrorOutlineIcon","theme","color","sanity","spot","red","FormFieldInputLabel","props","$","_c","t0","t1","marginRight","t2","t3","t4","Box","Controller","CreatableSelect","useColorSchemeValue","useTypedSelector","reactSelectComponents","reactSelectStyles","TagSelectOption","FormFieldInputLabel","Props","control","description","disabled","error","label","name","onCreateTag","tagName","options","value","placeholder","FormFieldInputTags","props","$","_c","scheme","creating","_temp","tagsFetching","_temp2","t0","Symbol","for","zIndex","t1","t2","t3","field","onBlur","onChange","controllerValue","_temp3","t4","state","tags","state_0","fetching","Box","TextInput","Ref","FormFieldInputLabel","Props","description","disabled","error","label","name","placeholder","value","ref","HTMLInputElement","FormFieldInputText","props","$","_c","rest","t0","t1","t2","Box","TextArea","Ref","FormFieldInputLabel","Props","description","disabled","error","label","name","placeholder","rows","value","ref","HTMLTextAreaElement","FormFieldInputTextarea","props","$","_c","rest","t0","t1","t2","Card","Stack","Tab","TabList","TabPanel","useState","Control","FieldErrors","UseFormRegister","Asset","AssetFormData","Locale","TagSelectOption","FormFieldInputTags","FormFieldInputText","FormFieldInputTextarea","LocalizedErrors","Record","message","toStringField","value","found","Object","values","find","v","undefined","DetailsProps","formUpdating","handleCreateTag","title","control","errors","register","allTagOptions","assetTagOptions","currentAsset","creditLine","enabled","excludeSources","locales","Details","t0","$","_c","hasLocales","length","activeLocaleTab","setActiveLocaleTab","t1","opt","media","tags","t2","t3","t4","originalFilename","t5","t6","t7","altText","description","source","name","map","locale","idx","id","locale_0","idx_0","const","includes","t8","MutationEvent","Box","Button","Card","Flex","Stack","Tab","TabList","TabPanel","Text","groq","ReactNode","useCallback","useEffect","useMemo","useRef","useState","SubmitHandler","useForm","useDispatch","WithReferringDocuments","useColorSchemeValue","useDocumentStore","useToolOptions","getAssetFormSchema","useTypedSelector","useVersionedClient","assetsActions","selectAssetById","dialogActions","selectTags","selectTagSelectOptions","tagsActions","Asset","AssetFormData","DialogAssetEditProps","TagSelectOption","getTagSelectOptions","getUniqueDocuments","imageDprUrl","sanitizeFormData","isFileAsset","isImageAsset","zodFormResolver","AssetMetadata","Dialog","DocumentList","FileAssetPreview","FormSubmitButton","Image","Details","DetailsProps","renderDefaultDetails","props","Props","children","dialog","DialogAssetEdit","$","_c","t0","assetId","id","lastCreatedTag","lastRemovedTagIds","client","scheme","documentStore","dispatch","t1","state","String","assetItem","tags","assetUpdatedPrev","undefined","assetSnapshot","setAssetSnapshot","asset","tabSection","setTabSection","currentAsset","t2","allTagOptions","t3","assetTagOptions","creditLine","components","t4","locales","t5","details","CustomDetails","t6","length","makeLocaleObj","field","obj","i","locale","altText","description","originalFilename","opt","media","title","flattenField","_temp2","generateDefaultValues","t7","t8","t9","t10","defaultValues","mode","resolver","control","formState","t11","getValues","handleSubmit","register","reset","setValue","errors","isDirty","isValid","formUpdating","updating","t12","remove","handleClose","t13","showConfirmDeleteAssets","assets","closeDialogId","_id","handleDelete","t14","Symbol","for","update","result","transition","handleAssetUpdate","t15","tagName","createRequest","name","handleCreateTag","t16","bb0","isLocaleObj","_temp3","fields","_type","anyLocalized","some","f","configuredIds","Set","map","_temp4","f_0","Object","keys","k","has","hasOrphanedLocales","t17","cleanField","field_1","Array","isArray","obj_0","Record","sorted","sort","k_0","find","_temp5","configuredIds_0","_temp6","cleaned","key","val","entries","patch","set","commit","handleCleanupLocales","t18","formData","sanitizedFormData","updateRequest","_temp7","onSubmit","t19","subscriptionAsset","listen","subscribe","unsubscribe","t20","t21","t22","t23","existingTags","updatedTags","concat","shouldDirty","t24","t25","existingTags_0","updatedTags_0","filter","tag_0","includes","tag","value","t26","current","_updatedAt","t27","t28","t29","Footer","t30","detailsProps","t31","t32","t33","t34","t35","isLoading","referringDocuments","uniqueReferringDocuments","display","t36","aspectRatio","t37","t38","metadata","isOpaque","height","width","t39","t40","t41","t42","t43","_temp","v","field_0","values","v_0","l","v_1","l_0","_ref","_weak","WarningOutlineIcon","Box","Button","Flex","Stack","Text","ReactNode","useDispatch","dialogActions","DialogConfirmProps","Dialog","Props","children","dialog","DialogConfirm","props","$","_c","dispatch","t0","id","remove","handleClose","t1","closeDialogId","confirmCallbackAction","handleConfirm","t2","confirmText","tone","Footer","t3","headerTitle","Header","t4","t5","t6","title","t7","description","t8","t9","Box","ReactNode","useCallback","useDispatch","dialogActions","DialogSearchFacetsProps","Dialog","SearchFacets","SearchFacetsControl","Props","children","dialog","DialogSearchFacets","props","$","_c","t0","id","dispatch","t1","clear","handleClose","t2","Symbol","for","t3","Box","Flex","ReactNode","useEffect","SubmitHandler","useForm","useDispatch","tagFormSchema","useTypedSelector","dialogActions","tagsActions","DialogTagCreateProps","TagFormData","sanitizeFormData","zodFormResolver","Dialog","FormFieldInputText","FormSubmitButton","Props","children","dialog","DialogTagCreate","props","$","_c","t0","id","dispatch","creating","_temp","creatingError","_temp2","t1","Symbol","for","name","t2","defaultValues","mode","resolver","formState","t3","handleSubmit","register","setError","errors","isDirty","isValid","formUpdating","t4","clear","handleClose","t5","formData","sanitizedFormData","createRequest","onSubmit","t6","t7","message","t8","Footer","t9","t10","t11","display","t12","t13","t14","t15","t16","state","tags","state_0","MutationEvent","Box","Button","Card","Flex","Text","groq","ReactNode","useCallback","useEffect","useState","SubmitHandler","useForm","useDispatch","tagFormSchema","useTypedSelector","useVersionedClient","dialogActions","selectTagById","tagsActions","DialogTagEditProps","Tag","TagFormData","sanitizeFormData","zodFormResolver","Dialog","FormFieldInputText","FormSubmitButton","Props","children","dialog","DialogTagEdit","props","$","_c","t0","id","tagId","client","dispatch","t1","state","String","tagItem","tagSnapshot","setTagSnapshot","tag","currentTag","generateDefaultValues","_temp","t2","t3","t4","Symbol","for","t5","defaultValues","mode","resolver","formState","t6","handleSubmit","register","reset","setError","errors","isDirty","isValid","formUpdating","updating","t7","remove","handleClose","t8","formData","sanitizedFormData","updateRequest","closeDialogId","_id","name","_type","current","onSubmit","t9","showConfirmDeleteTag","handleDelete","t10","update","result","transition","handleTagUpdate","t11","error","message","t12","t13","t14","subscriptionAsset","listen","subscribe","unsubscribe","t15","t16","t17","_updatedAt","Footer","t18","t19","t20","t21","display","t22","t23","t24","t25","t26","ArrowDownIcon","ArrowUpIcon","CloseIcon","EditIcon","SearchIcon","TrashIcon","Box","Button","Container","Flex","Text","Tooltip","ReactNode","useDispatch","styled","inputs","PANEL_HEIGHT","useTypedSelector","selectAssetsPicked","dialogActions","DIALOG_ACTIONS","searchActions","selectIsSearchFacetTag","SearchFacetInputSearchableProps","TagActions","TagItem","Props","actions","tag","TagContainer","ButtonContainer","TagButtonProps","disabled","icon","onClick","tone","tooltip","TagButton","props","$","_c","t0","t1","t2","window","Tag","dispatch","assetsPicked","_id","state","isSearchFacetTag","facetsRemoveByTag","tagId","handleSearchFacetTagRemove","showConfirmAssetsTagAdd","handleShowAddTagToAssetsDialog","t3","showConfirmAssetsTagRemove","handleShowRemoveTagFromAssetsDialog","t4","showConfirmDeleteTag","handleShowTagDeleteDialog","t5","showTagEdit","handleShowTagEditDialog","t6","name","current","searchFacet","value","label","facetsUpdate","operatorType","facetsAdd","facet","handleSearchFacetTagAddOrUpdate","t7","updating","t8","opacity","userSelect","t9","t10","t11","Symbol","for","flexShrink","t12","includes","t13","t14","t15","t16","t17","t18","Flex","Label","memo","useState","Virtuoso","PANEL_HEIGHT","useTypedSelector","selectAssetsPicked","selectTags","TagActions","TagItem","Tag","VirtualRow","t0","$","_c","isScrolling","item","t1","Symbol","for","height","t2","t3","undefined","actions","tag","_id","TagsVirtualized","assetsPicked","tags","setIsScrolling","items","pickedTagIds","reduce","_temp2","pickedTagIdsUnique","Set","acc_0","tagId","tagIsInEveryAsset","every","assetItem","tagIndex","asset","opt","media","findIndex","tag_0","_ref","acc","appliedToAll","push","appliedToSome","tagIdsSegmented","tagsAppliedToAll","filter","tag_1","includes","map","_temp3","tagsAppliedToSome","tag_2","_temp4","tagsUnused","tag_3","_temp5","length","_temp6","index","index_0","flex","overflowX","_temp","val","assetTagIds","concat","tagItem","tagItem_0","tagItem_1","tagItem_2","ComposeIcon","Box","Button","Flex","Inline","Label","useDispatch","useColorSchemeValue","PANEL_HEIGHT","useTypedSelector","DIALOG_ACTIONS","getSchemeColor","Props","allowCreate","light","title","TagViewHeader","t0","$","_c","scheme","dispatch","tagsCreating","_temp","tagsFetching","_temp2","t1","showTagCreate","handleTagCreate","t2","t3","background","borderBottom","flexShrink","height","t4","t5","opacity","t6","t7","boxShadow","t8","state","tags","creating","state_0","fetching","Box","Flex","Text","useTypedSelector","selectAssetsPickedLength","selectTags","TagsVirtualized","TagViewHeader","TagView","$","_c","numPickedAssets","tags","fetching","_temp","fetchCount","_temp2","fetchComplete","hasTags","length","hasPicked","t0","t1","t2","t3","t4","state","state_0","Box","ReactNode","useCallback","useDispatch","dialogActions","DialogTagsProps","Dialog","TagView","Props","children","dialog","DialogTags","props","$","_c","t0","id","dispatch","t1","clear","handleClose","t2","Symbol","for","height","minHeight","t3","useTypedSelector","Dialog","DialogAssetEdit","DialogConfirm","DialogSearchFacets","DialogTagCreate","DialogTagEdit","DialogTags","Dialogs","$","_c","currentDialogs","_temp","t0","renderDialogs","dialogs","index","length","dialog","childDialogs","type","state","items","ReactNode","createContext","useContext","useMemo","ContextProps","open","Props","children","DropzoneDispatchContext","undefined","DropzoneDispatchProvider","props","$","_c","t0","contextValue","t1","useDropzoneActions","context","Error","ArrowRightIcon","CloseIcon","UploadIcon","Box","Button","Flex","Inline","Text","pluralize","useAssetSourceActions","useDropzoneActions","useToolOptions","useTypedSelector","Props","onClose","Header","props","$","_c","open","onSelect","assetTypes","_temp","selectedDocument","_temp2","directUploads","t0","Symbol","for","whiteSpace","t1","join","t2","t3","margin","textTransform","_type","t4","t5","length","t6","flexShrink","t7","t8","state","assets","state_0","selected","document","createSelector","CardAssetData","CardUploadData","RootReducerState","selectCombinedItems","state","assets","allIds","uploads","assetIds","uploadIds","assetItems","map","id","type","uploadItems","combinedItems","CheckmarkCircleIcon","EditIcon","WarningFilledIcon","Box","Checkbox","Container","Flex","Spinner","Text","Theme","ThemeColorSchemeKey","Tooltip","memo","MouseEvent","RefObject","useDispatch","useColorSchemeValue","styled","css","PANEL_HEIGHT","useAssetSourceActions","useKeyPress","useTypedSelector","assetsActions","selectAssetById","dialogActions","getSchemeColor","imageDprUrl","isFileAsset","isImageAsset","FileIcon","Image","Props","id","selected","CardWrapper","CardContainer","$picked","theme","$updating","sanity","color","spot","orange","ContextActionContainer","$scheme","StyledWarningOutlineIcon","red","CardAsset","props","$","_c","scheme","shiftPressed","dispatch","lastPicked","_temp","t0","state_0","state","item","asset","error","isOpaque","metadata","picked","updating","onSelect","t1","_id","e","stopPropagation","kind","value","current","pick","assetId","pickRange","startId","endId","showAssetEdit","handleAssetClick","t2","e_0","handleContextActionClick","opacityContainer","opacityPreview","t3","t4","cursor","position","t5","height","opacity","t6","extension","t7","width","draggable","transition","t8","t9","left","top","t10","t11","t12","t13","flexShrink","pointerEvents","transform","t14","originalFilename","t15","t16","right","t17","assets","Observable","from","of","mergeMap","PREVIEW_WIDTH","createBlob","img","HTMLImageElement","Promise","Blob","resolve","imageAspect","width","height","canvas","HTMLCanvasElement","document","createElement","Math","max","ctx","getContext","drawImage","toBlob","err","console","warn","createImageEl","file","File","blobUrlLarge","window","URL","createObjectURL","Image","onload","revokeObjectURL","src","generatePreviewBlobUrl","imageEl","blob","Error","generatePreviewBlobUrl$","pipe","Subject","Subscription","Observable","from","first","mergeMap","DEFAULT_CONCURRENCY","remove","array","Array","T","item","index","indexOf","splice","createThrottler","concurrency","currentSubscriptions","pendingObservables","ready$","request","observable","observer","length","scheduleAndWait$","pipe","subscribe","subscription","push","unsubscribe","next","shift","asObservable","obs","withMaxConcurrency","func","args","throttler","SanityAssetDocument","SanityClient","SanityImageAssetDocument","Observable","of","throwError","map","mergeMap","HttpError","withMaxConcurrency","fetchExisting$","client","type","hash","observable","fetch","documentType","readFile$","file","File","ArrayBuffer","subscriber","reader","FileReader","onload","next","result","complete","onerror","err","error","readAsArrayBuffer","abort","hexFromBuffer","buffer","Array","prototype","call","Uint8Array","x","toString","slice","join","hashFile$","window","crypto","subtle","message","statusCode","pipe","arrayBuffer","digest","uploadSanityAsset$","assetType","existingAsset","assets","upload","extract","preserveFilename","event","asset","body","document","id","_id","uploadAsset$","createSelector","createSlice","PayloadAction","ClientError","SanityAssetDocument","SanityImageAssetDocument","groq","empty","merge","of","catchError","delay","filter","mergeMap","takeUntil","withLatestFrom","HttpError","MyEpic","SanityUploadProgressEvent","UploadItem","constructFilter","generatePreviewBlobUrl$","hashFile$","uploadAsset$","assetsActions","RootReducerState","UPLOADS_ACTIONS","UploadsReducerState","allIds","byIds","Record","initialState","uploadsSlice","name","extraReducers","builder","addCase","uploadComplete","state","action","asset","payload","sha1hash","status","reducers","checkRequest","_state","_action","assets","checkComplete","results","assetHashes","Object","keys","forEach","hash","deleteIndex","indexOf","splice","blobUrl","objectUrl","window","URL","revokeObjectURL","previewReady","uploadCancel","uploadError","error","uploadRequest","file","File","forceAsAssetType","uploadProgress","event","uploadHash","percent","uploadStart","uploadItem","includes","push","uploadsAssetStartEpic","action$","_state$","client","pipe","uploadsActions","match","url","assetType","v","type","stage","message","statusCode","uploadsAssetUploadEpic","state$","exists","uploads","_type","size","uploadsCompleteQueueEpic","uploadsCheckRequestEpic","documentIds","map","_id","constructedFilter","assetTypes","searchFacets","search","facets","searchQuery","query","observable","fetch","resultHashes","checkedResults","reduce","acc","insertUploads","selectUploadById","uploadId","actions","reducer","CloseIcon","Box","Button","Flex","Text","filesize","useDispatch","useColorSchemeValue","styled","PANEL_HEIGHT","useTypedSelector","selectUploadById","uploadsActions","getSchemeColor","FileIcon","Image","Props","id","CardWrapper","CardUpload","props","$","_c","scheme","dispatch","t0","state","item","t1","size","base","round","fileSize","percentLoaded","Math","percent","isComplete","status","isUploading","isQueued","t2","hash","uploadCancel","handleCancelUpload","t3","t4","background","border","height","position","t5","t6","bottom","left","width","transform","transformOrigin","transition","t7","Symbol","for","t8","assetType","objectUrl","opacity","t9","t10","top","boxShadow","t11","t12","t13","name","t14","flexShrink","t15","t16","t17","memo","VirtuosoGrid","styled","useTypedSelector","CardAssetData","CardUploadData","CardAsset","CardUpload","Props","items","onLoadMore","CARD_HEIGHT","CARD_WIDTH","VirtualCell","t0","$","_c","item","selected","type","t1","id","StyledItemContainer","div","ItemContainer","props","ref","rest","context","StyledListContainer","ListContainer","AssetGridVirtualized","selectedAssets","_temp","map","_temp2","selectedIds","totalCount","length","index","t2","Symbol","for","Item","List","t3","index_0","item_0","includes","t4","overflowX","overflowY","t5","state","assets","asset","_id","ChevronDownIcon","ChevronUpIcon","Box","Label","useDispatch","useTypedSelector","assetsActions","Props","field","title","TableHeaderItem","props","$","_c","dispatch","order","_temp","isActive","t0","direction","orderSet","handleClick","t1","t2","undefined","t3","t4","cursor","display","whiteSpace","t5","Symbol","for","marginRight","t6","t7","t8","t9","t10","state","assets","Checkbox","Flex","Grid","ThemeColorSchemeKey","useMediaIndex","MouseEvent","useDispatch","useColorSchemeValue","styled","css","GRID_TEMPLATE_COLUMNS","PANEL_HEIGHT","useAssetSourceActions","useTypedSelector","assetsActions","selectAssetsLength","selectAssetsPickedLength","getSchemeColor","TableHeaderItem","ContextActionContainer","$scheme","TableHeader","$","_c","scheme","dispatch","fetching","_temp","itemsLength","numPickedAssets","mediaIndex","onSelect","allSelected","t0","e","stopPropagation","pickClear","pickAll","handleContextActionClick","t1","t2","t3","t4","alignItems","background","borderBottom","gridColumnGap","gridTemplateColumns","LARGE","height","letterSpacing","position","textTransform","top","visibility","width","zIndex","t5","pointerEvents","transform","t10","t11","t12","t13","t6","t7","t8","t9","Symbol","for","t14","state","assets","CheckmarkCircleIcon","EditIcon","WarningFilledIcon","Box","Checkbox","Container","Flex","Grid","Spinner","Text","ThemeColorSchemeKey","Tooltip","useMediaIndex","formatRelative","filesize","memo","MouseEvent","RefObject","useCallback","useEffect","useRef","useState","useDispatch","WithReferringDocuments","useColorSchemeValue","styled","css","GRID_TEMPLATE_COLUMNS","useAssetSourceActions","useKeyPress","useTypedSelector","assetsActions","selectAssetById","dialogActions","getAssetResolution","getSchemeColor","getUniqueDocuments","imageDprUrl","isFileAsset","isImageAsset","FileIcon","Image","REFERENCE_COUNT_VISIBILITY_DELAY","Props","id","selected","ContainerGrid","$selected","$scheme","$updating","ContextActionContainer","StyledWarningIcon","theme","color","sanity","spot","red","TableRowAsset","props","$","_c","scheme","shiftPressed","referenceCountVisible","setReferenceCountVisible","refCountVisibleTimeout","dispatch","lastPicked","_temp","t0","state_0","state","item","mediaIndex","asset","error","isOpaque","metadata","picked","updating","onSelect","t1","e","stopPropagation","showAssetEdit","assetId","_id","current","pickRange","startId","endId","pick","handleContextActionClick","t2","e_0","kind","value","handleClick","opacityCell","opacityPreview","t3","t4","Symbol","for","setTimeout","clearTimeout","t5","undefined","t6","t7","SMALL","LARGE","t8","t9","gridColumnGap","gridRowGap","gridTemplateColumns","gridTemplateRows","t10","t11","alignItems","gridColumn","gridRowStart","gridRowEnd","height","justifyContent","opacity","position","t12","flexShrink","pointerEvents","transform","t13","t14","width","t15","t16","t17","extension","t18","t19","t20","left","top","t21","t22","t23","t24","t25","gridRow","t26","lineHeight","t27","originalFilename","t28","t29","t30","t31","t32","t33","t34","t35","t36","t37","t38","display","t39","t40","mimeType","t41","t42","t43","t44","t45","size","base","round","t46","t47","t48","t49","t50","t51","t52","t53","_updatedAt","Date","t54","t55","t56","t57","t58","t59","_temp2","t60","t61","t62","t63","t64","t65","t66","assets","isLoading","referringDocuments","uniqueDocuments","Array","isArray","length","CloseIcon","Box","Button","Flex","Grid","Stack","Text","useMediaIndex","filesize","useDispatch","useColorSchemeValue","GRID_TEMPLATE_COLUMNS","useTypedSelector","selectUploadById","uploadsActions","getSchemeColor","FileIcon","Image","Props","id","TableRowUpload","props","$","_c","scheme","dispatch","t0","state","item","mediaIndex","t1","size","base","round","fileSize","percentLoaded","Math","percent","isComplete","status","isUploading","isQueued","t2","hash","uploadCancel","handleCancelUpload","t3","t4","t5","SMALL","LARGE","t6","t7","alignItems","background","gridColumnGap","gridRowGap","gridTemplateColumns","gridTemplateRows","height","position","t8","t9","bottom","left","width","transform","transformOrigin","transition","t10","t11","t12","gridColumn","gridRowStart","gridRowEnd","t13","Symbol","for","t14","assetType","objectUrl","opacity","t15","t16","top","boxShadow","t17","t18","t19","t20","t21","t22","gridRow","marginLeft","t23","name","t24","t25","t26","t27","Box","memo","GroupedVirtuoso","useTypedSelector","CardAssetData","CardUploadData","TableHeader","TableRowAsset","TableRowUpload","Props","items","onLoadMore","VirtualRow","t0","$","_c","item","selected","type","t1","Symbol","for","height","t2","id","AssetTableVirtualized","props","selectedAssets","_temp","map","_temp2","selectedIds","totalCount","length","index","Array","fill","t3","index_0","item_0","includes","t4","overflowX","t5","_temp3","state","assets","asset","_id","Box","Text","useMediaIndex","useEffect","useDispatch","useTypedSelector","assetsActions","selectCombinedItems","tagsActions","AssetGridVirtualized","AssetTableVirtualized","Items","$","_c","dispatch","fetchCount","_temp","fetching","_temp2","tagsPanelVisible","_temp3","view","_temp4","combinedItems","mediaIndex","hasFetchedOnce","hasItems","length","t0","loadNextPage","handleLoadMoreItems","t1","t2","panelVisibleSet","panelVisible","isEmpty","t3","Symbol","for","width","t4","state","assets","state_0","state_1","tags","state_2","useToast","useEffect","useTypedSelector","Notifications","$","_c","items","_temp","toast","t0","t1","length","lastItem","push","closable","status","title","state","notifications","Box","Button","Flex","Label","pluralize","useDispatch","useColorSchemeValue","PANEL_HEIGHT","useTypedSelector","assetsActions","selectAssetsPicked","dialogActions","getSchemeColor","PickedBar","$","_c","scheme","dispatch","assetsPicked","t0","pickClear","handlePickClear","t1","showConfirmDeleteAssets","assets","handleDeletePicked","length","t2","t3","background","borderBottom","height","position","width","t4","Symbol","for","color","t5","t6","t7","t8","boxShadow","t9","t10","t11","t12","t13","t14","t15","PayloadAction","createSlice","pluralize","AnyAction","ofType","of","bufferTime","filter","mergeMap","HttpError","ImageAsset","MyEpic","assetsActions","ASSETS_ACTIONS","tagsActions","uploadsActions","Notification","asset","status","title","NotificationsReducerState","items","messageFromGenericErrorPayload","payload","error","String","message","initialState","notificationsSlice","name","reducers","add","state","action","push","notificationsAssetsDeleteCompleteEpic","action$","pipe","deleteComplete","match","assetIds","deletedCount","length","actions","notificationsAssetsDeleteErrorEpic","deleteError","count","notificationsAssetsUploadCompleteEpic","checkComplete","results","Object","keys","notificationsAssetsTagsAddCompleteEpic","tagsAddComplete","assets","notificationsAssetsTagsRemoveCompleteEpic","tagsRemoveComplete","notificationsAssetsUpdateCompleteEpic","updateComplete","updatedCount","notificationsGenericErrorEpic","fetchError","type","updateError","createError","uploadError","notificationsTagCreateCompleteEpic","createComplete","notificationsTagDeleteCompleteEpic","notificationsTagUpdateCompleteEpic","notificationsActions","reducer","createSlice","SanityAssetDocument","SanityDocument","SanityImageAssetDocument","SelectedReducerState","assets","document","documentAssetIds","initialState","undefined","selectedSlice","name","reducers","reducer","Reducer","StateFromReducersMapObject","combineReducers","combineEpics","assetsReducer","assetsDeleteEpic","assetsFetchAfterDeleteAllEpic","assetsFetchEpic","assetsFetchNextPageEpic","assetsFetchPageIndexEpic","assetsListenerCreateQueueEpic","assetsListenerDeleteQueueEpic","assetsListenerUpdateQueueEpic","assetsOrderSetEpic","assetsSearchEpic","assetsSortEpic","assetsTagsAddEpic","assetsTagsRemoveEpic","assetsUnpickEpic","assetsUpdateEpic","debugReducer","dialogReducer","dialogClearOnAssetUpdateEpic","dialogTagCreateEpic","dialogTagDeleteEpic","notificationsReducer","notificationsAssetsDeleteErrorEpic","notificationsAssetsDeleteCompleteEpic","notificationsAssetsTagsAddCompleteEpic","notificationsAssetsTagsRemoveCompleteEpic","notificationsAssetsUpdateCompleteEpic","notificationsGenericErrorEpic","notificationsTagCreateCompleteEpic","notificationsTagDeleteCompleteEpic","notificationsTagUpdateCompleteEpic","searchReducer","searchFacetTagUpdateEpic","selectedReducer","tagsReducer","tagsCreateEpic","tagsDeleteEpic","tagsFetchEpic","tagsListenerCreateQueueEpic","tagsListenerDeleteQueueEpic","tagsListenerUpdateQueueEpic","tagsSortEpic","tagsUpdateEpic","uploadsReducer","uploadsAssetStartEpic","uploadsAssetUploadEpic","uploadsCheckRequestEpic","uploadsCompleteQueueEpic","rootEpic","reducers","assets","debug","dialog","notifications","search","selected","tags","uploads","ReducersMapObject","rootReducer","SanityDocument","isPlainObject","value","Array","isArray","getAssetIds","node","Record","acc","forEach","v","_type","_ref","push","Object","values","val","getDocumentAssetIds","document","assetIds","Set","sort","SUPPORTED_ASSET_TYPES","AssetType","isSupportedAssetType","assetType","supported","includes","AnyAction","configureStore","Store","SanityClient","Component","ReactNode","Provider","createEpicMiddleware","AssetSourceComponentProps","SanityDocument","rootEpic","rootReducer","initialState","assetsInitialState","RootReducerState","getDocumentAssetIds","isSupportedAssetType","Props","assetType","children","client","document","selectedAssets","ReduxProvider","store","constructor","props","epicMiddleware","dependencies","reducer","middleware","getDefaultMiddleware","serializableCheck","thunk","prepend","devTools","preloadedState","assets","assetTypes","debug","badConnection","enabled","dialog","items","notifications","search","facets","query","selected","documentAssetIds","tags","allIds","byIds","creating","fetchCount","fetching","panelVisible","uploads","run","render","Box","TAGS_PANEL_WIDTH","useTypedSelector","TagView","TagsPanel","$","_c","tagsPanelVisible","_temp","t0","Symbol","for","position","width","t1","borderLeft","height","overflowX","overflowY","right","top","state","tags","panelVisible","white","Flex","Text","ReactNode","DropEvent","DropzoneOptions","useDropzone","useDispatch","styled","useAssetSourceActions","DropzoneDispatchProvider","useToolOptions","useTypedSelector","notificationsActions","uploadsActions","Props","children","UploadContainer","div","DragActiveContainer","filterFiles","fileList","FileList","files","Array","from","filteredFiles","File","file","slice","arrayBuffer","push","UploadDropzone","props","$","_c","dropzone","t0","directUploads","maxSize","onSelect","dispatch","assetTypes","_temp","isImageAssetType","length","t1","acceptedFiles","forEach","uploadRequest","forceAsAssetType","undefined","handleDrop","t2","rejections","errorCodes","flatMap","_temp3","includes","add","status","title","handleDropRejected","t3","event","type","dataTransfer","target","HTMLInputElement","handleFileGetter","t4","t5","t6","t7","accept","getFilesFromEvent","noClick","noDrag","onDrop","onDropRejected","disabled","getRootProps","getInputProps","isDragActive","open","t8","t9","t10","t11","color","hex","t12","t13","state","assets","_temp2","code","errors","map","MutationEvent","SanityClient","groq","useEffect","useDispatch","useSelector","Dispatch","AssetSourceComponentProps","inputs","TAG_DOCUMENT_NAME","assetsActions","searchActions","tagsActions","RootReducerState","Asset","Tag","getMediaTagNames","schemaType","mediaTags","options","length","unique","Set","map","t","trim","filter","Boolean","Array","from","createAssetHandler","dispatch","update","documentId","result","transition","listenerCreateQueue","asset","listenerDeleteQueue","assetId","listenerUpdateQueue","createTagHandler","tag","tagId","useBrowserInit","client","tagsByIds","state","tags","byIds","tagsFetchCount","fetchCount","tagNames","hasMediaTags","facetsClear","fetchRequest","assetSubscription","listen","subscribe","tagSubscription","unsubscribe","tagFacetInput","type","resolvedTags","name","Object","values","find","item","current","NonNullable","tagItem","facetsAdd","facet","operatorType","value","label","_id","Card","Flex","PortalProvider","useState","AssetSourceComponentProps","SanityDocument","AssetBrowserDispatchProvider","useVersionedClient","GlobalStyle","Controls","DebugControls","Dialogs","Header","Items","Notifications","PickedBar","ReduxProvider","TagsPanel","UploadDropzone","useBrowserInit","Props","assetType","document","onClose","onSelect","selectedAssets","schemaType","BrowserContent","t0","$","_c","client","portalElement","setPortalElement","t1","t2","Symbol","for","t3","t4","t5","t6","position","t7","t8","Browser","props","t9","Box","Portal","PortalProvider","useLayer","SyntheticEvent","useEffect","useState","AssetSourceComponentProps","SanityDocument","useFormValue","useKeyPress","Browser","FormBuilderTool","props","$","_c","onClose","portalElement","useRootPortalElement","t0","Symbol","for","currentDocument","handleStopPropagation","_temp","zIndex","t1","bottom","height","left","position","top","width","t2","schemaType","t3","t4","container","_temp2","classList","add","document","body","appendChild","removeChild","event","nativeEvent","stopImmediatePropagation","stopPropagation","createElement","Flex","Browser","Tool","$","_c","t0","Symbol","for","ImageIcon","AssetSource","Tool","SanityTool","definePlugin","FormBuilderTool","ToolOptionsProvider","mediaTag","MediaToolOptions","plugin","icon","name","title","mediaAssetSource","component","tool","__internalApplicationType","media","options","studio","components","layout","props","renderDefault","form","file","assetSources","prev","image","schema","types","tools","SanityClient","groq","nanoid","TAG_DOCUMENT_NAME","Tag","ApplyMediaTagsOptions","client","assetId","mediaTags","createTagsOnUpload","pendingByAsset","Map","Promise","applyMediaTags","options","chain","get","resolve","then","doApplyMediaTags","cleanup","catch","finally","delete","set","length","resolvedTags","all","map","tagName","existingTag","fetch","newTag","create","_type","name","current","validTags","filter","tag","existing","tagIds","useCdn","existingIds","Set","tagReferences","has","_id","_key","_ref","const","_weak","patch","setIfMissing","opt","append","commit","useToast","useEffect","useRef","InputProps","useToolOptions","useVersionedClient","applyMediaTags","AssetValue","_type","asset","_ref","AutoTagInputProps","mediaTags","AutoTagInput","props","$","_c","renderDefault","schemaType","value","mediaTagsProp","toast","options","client","createTagsOnUpload","prevAssetRef","undefined","isInitialMount","currentAssetRef","t0","t1","current","previousRef","length","assetId","catch","err","console","error","label","push","closable","status","title","join","t2","t3","FieldDefinitionBase","FileDefinition","ImageDefinition","WidenInitialValue","WidenValidation","AutoTagInput","ImageMediaFieldConfig","Omit","name","mediaTags","options","FileMediaFieldConfig","ImageMediaFieldResult","components","input","FileMediaFieldResult","mediaField","config","rest","Record"],"sources":["../src/hooks/useKeyPress.ts","../src/contexts/AssetSourceDispatchContext.tsx","../src/hooks/useVersionedClient.ts","../src/styled/GlobalStyles/index.tsx","../src/hooks/useTypedSelector.ts","../src/config/orders.ts","../src/config/searchFacets.ts","../src/constants.ts","../src/operators/debugThrottle.ts","../src/utils/constructFilter.ts","../src/operators/checkTagName.ts","../src/utils/getTagSelectOptions.ts","../src/modules/assets/actions.ts","../src/modules/dialog/actions.ts","../src/modules/tags/index.ts","../src/modules/search/index.ts","../src/modules/uploads/actions.ts","../src/modules/assets/index.ts","../src/modules/dialog/index.ts","../src/components/ButtonViewGroup/index.tsx","../src/hooks/usePortalPopoverProps.ts","../src/components/OrderSelect/index.tsx","../src/components/Progress/index.tsx","../src/utils/getSchemeColor.ts","../src/components/SearchFacet/index.tsx","../src/components/TextInputNumber/index.tsx","../src/components/SearchFacetNumber/index.tsx","../src/components/SearchFacetSelect/index.tsx","../src/components/SearchFacetString/index.tsx","../src/styled/react-select/single.tsx","../src/components/SearchFacetTags/index.tsx","../src/components/SearchFacets/index.tsx","../src/contexts/ToolOptionsContext.tsx","../src/components/SearchFacetsControl/index.tsx","../src/components/TagIcon/index.tsx","../src/components/TextInputSearch/index.tsx","../src/components/Controls/index.tsx","../src/modules/debug/index.ts","../src/components/DebugControls/index.tsx","../src/formSchema/index.ts","../src/utils/getUniqueDocuments.ts","../src/utils/imageDprUrl.ts","../src/utils/sanitizeFormData.ts","../src/utils/typeGuards.ts","../src/utils/zodFormResolver.ts","../src/utils/getAssetResolution.ts","../src/components/ButtonAssetCopy/index.tsx","../src/components/AssetMetadata/index.tsx","../src/components/Dialog/index.tsx","../src/components/DocumentList/index.tsx","../src/components/FileIcon/index.tsx","../src/components/FileAssetPreview/index.tsx","../src/components/FormSubmitButton/index.tsx","../src/components/Image/index.tsx","../src/styled/react-select/creatable.tsx","../src/components/FormFieldInputLabel/index.tsx","../src/components/FormFieldInputTags/index.tsx","../src/components/FormFieldInputText/index.tsx","../src/components/FormFieldInputTextarea/index.tsx","../src/components/DialogAssetEdit/Details.tsx","../src/components/DialogAssetEdit/index.tsx","../src/components/DialogConfirm/index.tsx","../src/components/DialogSearchFacets/index.tsx","../src/components/DialogTagCreate/index.tsx","../src/components/DialogTagEdit/index.tsx","../src/components/Tag/index.tsx","../src/components/TagsVirtualized/index.tsx","../src/components/TagViewHeader/index.tsx","../src/components/TagView/index.tsx","../src/components/DialogTags/index.tsx","../src/components/Dialogs/index.tsx","../src/contexts/DropzoneDispatchContext.tsx","../src/components/Header/index.tsx","../src/modules/selectors.ts","../src/components/CardAsset/index.tsx","../src/utils/generatePreviewBlobUrl.ts","../src/utils/withMaxConcurrency.ts","../src/utils/uploadSanityAsset.ts","../src/modules/uploads/index.ts","../src/components/CardUpload/index.tsx","../src/components/AssetGridVirtualized/index.tsx","../src/components/TableHeaderItem/index.tsx","../src/components/TableHeader/index.tsx","../src/components/TableRowAsset/index.tsx","../src/components/TableRowUpload/index.tsx","../src/components/AssetTableVirtualized/index.tsx","../src/components/Items/index.tsx","../src/components/Notifications/index.tsx","../src/components/PickedBar/index.tsx","../src/modules/notifications/index.ts","../src/modules/selected/index.ts","../src/modules/index.ts","../src/utils/getDocumentAssetIds.ts","../src/utils/isSupportedAssetType.ts","../src/components/ReduxProvider/index.tsx","../src/components/TagsPanel/index.tsx","../src/components/UploadDropzone/index.tsx","../src/components/Browser/useBrowserInit.ts","../src/components/Browser/index.tsx","../src/components/FormBuilderTool/index.tsx","../src/components/Tool/index.tsx","../src/schemas/tag.ts","../src/plugin.tsx","../src/utils/applyMediaTags.ts","../src/components/AutoTagInputWrapper/index.tsx","../src/utils/mediaField.ts"],"sourcesContent":["import {isHotkey} from 'is-hotkey-esm'\nimport {type RefObject, useCallback, useEffect, useRef} from 'react'\n\nconst useKeyPress = (hotkey: string, onPress?: () => void): RefObject<boolean> => {\n  const keyPressed = useRef(false)\n\n  // If pressed key is our target key then set to true\n  const downHandler = useCallback(\n    (e: KeyboardEvent) => {\n      if (isHotkey(hotkey, e)) {\n        keyPressed.current = true\n        if (onPress) {\n          onPress()\n        }\n      }\n    },\n    [hotkey, onPress],\n  )\n\n  // If released key is our target key then set to false\n  const upHandler = useCallback(() => {\n    keyPressed.current = false\n  }, [])\n\n  // Add event listeners\n  useEffect(() => {\n    window.addEventListener('keydown', downHandler)\n    window.addEventListener('keyup', upHandler)\n    // Remove event listeners on cleanup\n    return () => {\n      window.removeEventListener('keydown', downHandler)\n      window.removeEventListener('keyup', upHandler)\n    }\n  }, [downHandler, upHandler])\n\n  return keyPressed\n}\n\nexport default useKeyPress\n","import {type ReactNode, createContext, useContext, useMemo} from 'react'\nimport type {AssetSourceComponentProps} from 'sanity'\n\ntype ContextProps = {\n  onSelect?: AssetSourceComponentProps['onSelect']\n}\n\ntype Props = {\n  children: ReactNode\n  onSelect?: AssetSourceComponentProps['onSelect']\n}\n\nconst AssetSourceDispatchContext = createContext<ContextProps | undefined>(undefined)\n\nexport const AssetBrowserDispatchProvider = (props: Props) => {\n  const {children, onSelect} = props\n\n  const contextValue: ContextProps = useMemo(\n    () => ({\n      onSelect,\n    }),\n    [onSelect],\n  )\n\n  return (\n    <AssetSourceDispatchContext.Provider value={contextValue}>\n      {children}\n    </AssetSourceDispatchContext.Provider>\n  )\n}\n\nexport const useAssetSourceActions = () => {\n  const context = useContext(AssetSourceDispatchContext)\n  if (context === undefined) {\n    throw new Error('useAssetSourceActions must be used within an AssetSourceDispatchProvider')\n  }\n  return context\n}\n","import type {SanityClient} from '@sanity/client'\nimport {useClient} from 'sanity'\n\nconst useVersionedClient = (): SanityClient => useClient({apiVersion: '2025-10-02'})\n\nexport default useVersionedClient\n","import {createGlobalStyle, css} from 'styled-components'\n\nconst customScrollbar = css`\n  ::-webkit-scrollbar {\n    width: 14px;\n  }\n\n  ::-webkit-scrollbar-thumb {\n    border-radius: 10px;\n    border: 4px solid rgba(0, 0, 0, 0);\n    background: var(--card-border-color);\n    background-clip: padding-box;\n\n    &:hover {\n      background: var(--card-muted-fg-color);\n      background-clip: padding-box;\n    }\n  }\n`\n\nconst GlobalStyle = createGlobalStyle`\n  .media__custom-scrollbar {\n    ${customScrollbar}\n  }\n\n  // @sanity/ui overrides\n\n  // Custom scrollbar on Box (used in Dialogs)\n  div[data-ui=\"Box\"] {\n    ${customScrollbar}\n  }\n\n  // Dialog background color\n  div[data-ui=\"Dialog\"] {\n    background-color: rgba(15, 17, 18, 0.9);\n  }\n\n`\n\nexport default GlobalStyle\n","import {type TypedUseSelectorHook, useSelector} from 'react-redux'\n\nimport type {RootReducerState} from '../modules/types'\n\nconst useTypedSelector: TypedUseSelectorHook<RootReducerState> = useSelector\n\nexport default useTypedSelector\n","import type {OrderDirection} from '../types'\n\nconst ORDER_DICTIONARY: Record<string, {asc: string; desc: string}> = {\n  _createdAt: {\n    asc: 'Last created: Oldest first',\n    desc: 'Last created: Newest first',\n  },\n  _updatedAt: {\n    asc: 'Last updated: Oldest first',\n    desc: 'Last updated: Newest first',\n  },\n  mimeType: {\n    asc: 'MIME type: A to Z',\n    desc: 'MIME type: Z to A',\n  },\n  originalFilename: {\n    asc: 'File name: A to Z',\n    desc: 'File name: Z to A',\n  },\n  size: {\n    asc: 'File size: Smallest first',\n    desc: 'File size: Largest first',\n  },\n}\n\nexport const getOrderTitle = (field: string, direction: OrderDirection): string => {\n  return ORDER_DICTIONARY[field]![direction]\n}\n","import groq from 'groq'\n\nimport type {\n  SearchFacetDivider,\n  SearchFacetInputProps,\n  SearchFacetName,\n  SearchFacetOperators,\n} from '../types'\n\nexport const divider: SearchFacetDivider = {type: 'divider'}\n\nexport const inputs: Record<SearchFacetName, SearchFacetInputProps> = {\n  altText: {\n    assetTypes: ['file', 'image'],\n    field: 'altText',\n    name: 'altText',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n    title: 'Alt text',\n    type: 'string',\n    value: '',\n  },\n  creditLine: {\n    assetTypes: ['file', 'image'],\n    field: 'creditLine',\n    name: 'creditLine',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n    title: 'Credit',\n    type: 'string',\n    value: '',\n  },\n  description: {\n    assetTypes: ['file', 'image'],\n    field: 'description',\n    name: 'description',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n    title: 'Description',\n    type: 'string',\n    value: '',\n  },\n  fileName: {\n    assetTypes: ['file', 'image'],\n    field: 'originalFilename',\n    name: 'filename',\n    operatorType: 'includes',\n    operatorTypes: ['includes', 'doesNotInclude'],\n    title: 'File name',\n    type: 'string',\n    value: '',\n  },\n  height: {\n    assetTypes: ['image'],\n    field: 'metadata.dimensions.height',\n    name: 'height',\n    operatorType: 'greaterThan',\n    operatorTypes: [\n      'greaterThan',\n      'greaterThanOrEqualTo',\n      'lessThan',\n      'lessThanOrEqualTo',\n      null,\n      'equalTo',\n    ],\n    title: 'Height',\n    type: 'number',\n    value: 400,\n  },\n  inCurrentDocument: {\n    assetTypes: ['file', 'image'],\n    name: 'inCurrentDocument',\n    operatorType: 'is',\n    options: [\n      {\n        name: 'true',\n        title: 'True',\n        value: groq`_id in $documentAssetIds`,\n      },\n      {\n        name: 'false',\n        title: 'False',\n        value: groq`!(_id in $documentAssetIds)`,\n      },\n    ],\n    selectOnly: true,\n    title: 'In use in current document',\n    type: 'select',\n    value: 'true',\n  },\n  inUse: {\n    assetTypes: ['file', 'image'],\n    name: 'inUse',\n    operatorType: 'is',\n    options: [\n      {\n        name: 'true',\n        title: 'True',\n        value: groq`count(*[references(^._id)]) > 0`,\n      },\n      {\n        name: 'false',\n        title: 'False',\n        value: groq`count(*[references(^._id)]) == 0`,\n      },\n    ],\n    title: 'In use',\n    type: 'select',\n    value: 'true',\n  },\n  isOpaque: {\n    assetTypes: ['image'],\n    field: 'metadata.isOpaque',\n    name: 'isOpaque',\n    operatorType: 'equalTo',\n    options: [\n      {\n        name: 'true',\n        title: 'True',\n        value: `false`,\n      },\n      {\n        name: 'false',\n        title: 'False',\n        value: `true`,\n      },\n    ],\n    title: 'Has transparency',\n    type: 'select',\n    value: 'true',\n  },\n  orientation: {\n    assetTypes: ['image'],\n    name: 'orientation',\n    operatorType: 'is',\n    operatorTypes: ['is', 'isNot'],\n    options: [\n      {\n        name: 'portrait',\n        title: 'Portrait',\n        value: 'metadata.dimensions.aspectRatio < 1',\n      },\n      {\n        name: 'landscape',\n        title: 'Landscape',\n        value: 'metadata.dimensions.aspectRatio > 1',\n      },\n      {\n        name: 'square',\n        title: 'Square',\n        value: 'metadata.dimensions.aspectRatio == 1',\n      },\n    ],\n    title: 'Orientation',\n    type: 'select',\n    value: 'portrait',\n  },\n  size: {\n    assetTypes: ['file', 'image'],\n    field: 'size',\n    modifier: 'kb',\n    modifiers: [\n      {\n        name: 'kb',\n        title: 'KB',\n        fieldModifier: (fieldName) => `round(${fieldName} / 1000)`,\n      },\n      {\n        name: 'mb',\n        title: 'MB',\n        fieldModifier: (fieldName) => `round(${fieldName} / 1000000)`,\n      },\n    ],\n    name: 'size',\n    operatorType: 'greaterThan',\n    operatorTypes: [\n      'greaterThan',\n      'greaterThanOrEqualTo',\n      'lessThan',\n      'lessThanOrEqualTo',\n      null,\n      'equalTo',\n    ],\n    title: 'File size',\n    type: 'number',\n    value: 0,\n  },\n  tag: {\n    assetTypes: ['file', 'image'],\n    field: 'opt.media.tags',\n    name: 'tag',\n    operatorType: 'references',\n    operatorTypes: ['references', 'doesNotReference', null, 'empty', 'notEmpty'],\n    title: 'Tags',\n    type: 'searchable',\n  },\n  title: {\n    assetTypes: ['file', 'image'],\n    field: 'title',\n    name: 'title',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n    title: 'Title',\n    type: 'string',\n    value: '',\n  },\n  type: {\n    assetTypes: ['file', 'image'],\n    name: 'type',\n    operatorType: 'is',\n    operatorTypes: ['is', 'isNot'],\n    options: [\n      {\n        name: 'image',\n        title: 'Image',\n        value: 'mimeType match \"image*\"',\n      },\n      {\n        name: 'video',\n        title: 'Video',\n        value: 'mimeType match \"video*\"',\n      },\n      {\n        name: 'audio',\n        title: 'Audio',\n        value: 'mimeType match \"audio*\"',\n      },\n      {\n        name: 'pdf',\n        title: 'PDF',\n        value: 'mimeType == \"application/pdf\"',\n      },\n    ],\n    title: 'File type',\n    type: 'select',\n    value: 'image',\n  },\n  width: {\n    assetTypes: ['image'],\n    field: 'metadata.dimensions.width',\n    name: 'width',\n    operatorType: 'greaterThan',\n    operatorTypes: [\n      'greaterThan',\n      'greaterThanOrEqualTo',\n      'lessThan',\n      'lessThanOrEqualTo',\n      null,\n      'equalTo',\n    ],\n    title: 'Width',\n    type: 'number',\n    value: 400,\n  },\n}\n\nexport const operators: SearchFacetOperators = {\n  doesNotInclude: {\n    fn: (value, field) => (value ? `!(${field} match '*${value}*')` : undefined),\n    label: 'does not include',\n  },\n  doesNotReference: {\n    fn: (value, _field) => (value ? `!references('${value}')` : undefined),\n    label: 'does not include',\n  },\n  empty: {\n    fn: (_value, field) => `!defined(${field})`,\n    hideInput: true,\n    label: 'is empty',\n  },\n  equalTo: {\n    fn: (value, field) => (value ? `${field} == ${value}` : undefined),\n    label: 'is equal to',\n  },\n  greaterThan: {\n    fn: (value, field) => (value ? `${field} > ${value}` : undefined),\n    label: 'is greater than',\n  },\n  greaterThanOrEqualTo: {\n    fn: (value, field) => (value ? `${field} >= ${value}` : undefined),\n    label: 'is greater than or equal to',\n  },\n  includes: {\n    fn: (value, field) => (value ? `${field} match '*${value}*'` : undefined),\n    label: 'includes',\n  },\n  is: {\n    fn: (value, _field) => `${value}`,\n    label: 'is',\n  },\n  isNot: {\n    fn: (value, _field) => `!(${value})`,\n    label: 'is not',\n  },\n  lessThan: {\n    fn: (value, field) => (value ? `${field} < ${value}` : undefined),\n    label: 'is less than',\n  },\n  lessThanOrEqualTo: {\n    fn: (value, field) => (value ? `${field} <= ${value}` : undefined),\n    label: 'is less than or equal to',\n  },\n  notEmpty: {\n    fn: (_value, field) => `defined(${field})`,\n    hideInput: true,\n    label: 'is not empty',\n  },\n  references: {\n    fn: (value, _field) => (value ? `references('${value}')` : undefined),\n    label: 'includes',\n  },\n}\n","import type {AssetSourceComponentProps} from 'sanity'\n\nimport {divider, inputs} from './config/searchFacets'\nimport type {\n  SearchFacetInputProps,\n  SearchFacetDivider,\n  SearchFacetGroup,\n  OrderDirection,\n} from './types'\n\nexport const SUPPORTED_ASSET_TYPES = [\n  'file',\n  'image',\n] as const satisfies AssetSourceComponentProps['assetType'][]\n\n// Sort order dropdown options\n// null values are represented as menu dividers\nexport const ORDER_OPTIONS: ({direction: OrderDirection; field: string} | null)[] = [\n  {\n    direction: 'desc',\n    field: '_createdAt',\n  },\n  {\n    direction: 'asc',\n    field: '_createdAt',\n  },\n  // Divider\n  null,\n  {\n    direction: 'desc',\n    field: '_updatedAt',\n  },\n  {\n    direction: 'asc' as OrderDirection,\n    field: '_updatedAt',\n  },\n  // Divider\n  null,\n  {\n    direction: 'asc',\n    field: 'originalFilename',\n  },\n  {\n    direction: 'desc',\n    field: 'originalFilename',\n  },\n  // Divider\n  null,\n  {\n    direction: 'desc',\n    field: 'size',\n  },\n  {\n    direction: 'asc',\n    field: 'size',\n  },\n]\n\nexport const FACETS: (SearchFacetDivider | SearchFacetGroup | SearchFacetInputProps)[] = [\n  inputs.tag,\n  divider,\n  inputs.inUse,\n  inputs.inCurrentDocument,\n  divider,\n  inputs.title,\n  inputs.altText,\n  inputs.creditLine,\n  inputs.description,\n  divider,\n  inputs.isOpaque,\n  divider,\n  inputs.fileName,\n  inputs.size,\n  inputs.type,\n  divider,\n  inputs.orientation,\n  inputs.width,\n  inputs.height,\n]\n\nexport const GRID_TEMPLATE_COLUMNS = {\n  SMALL: '3rem 100px auto 1.5rem',\n  LARGE: '3rem 100px auto 5.5rem 5.5rem 3.5rem 8.5rem 4.75rem 2rem',\n}\nexport const PANEL_HEIGHT = 32 // px\nexport const TAG_DOCUMENT_NAME = 'media.tag'\nexport const TAGS_PANEL_WIDTH = 250 // px\n","import {iif, type Observable, of, throwError} from 'rxjs'\nimport {delay, mergeMap} from 'rxjs/operators'\n\nconst debugThrottle = (throttled?: boolean) => {\n  return function <T>(source: Observable<T>): Observable<T> {\n    return iif(\n      () => !!throttled,\n      source.pipe(\n        delay(3000),\n        mergeMap((v) => {\n          if (Math.random() > 0.5) {\n            return throwError({\n              message: 'Test error',\n              statusCode: 500,\n            })\n          }\n          return of(v)\n        }),\n      ),\n      source,\n    )\n  }\n}\n\nexport default debugThrottle\n","import groq from 'groq'\n\nimport {operators} from '../config/searchFacets'\nimport type {AssetType, SearchFacetInputProps} from '../types'\n\nconst constructFilter = ({\n  assetTypes,\n  searchFacets,\n  searchQuery,\n}: {\n  assetTypes: AssetType[]\n  searchFacets: SearchFacetInputProps[]\n  searchQuery?: string\n}): string => {\n  // Fetch asset types depending on current context.\n  // Either limit to a specific type (if being used as a custom asset source) or fetch both files and images (if being used as a tool)\n  // Sanity will crash if you try and insert incompatible asset types into fields!\n  const documentAssetTypes = assetTypes.map((type) => `sanity.${type}Asset`)\n\n  const baseFilter = groq`\n    _type in ${JSON.stringify(documentAssetTypes)} && !(_id in path(\"drafts.**\"))\n  `\n\n  const searchFacetFragments = searchFacets.reduce((acc: string[], facet) => {\n    if (facet.type === 'number') {\n      const {field, modifier, modifiers, operatorType, value} = facet\n      const operator = operators[operatorType]\n\n      // Get current modifier\n      const currentModifier = modifiers?.find((m) => m.name === modifier)\n\n      // Apply field modifier function (if present)\n      const facetField = currentModifier?.fieldModifier\n        ? currentModifier.fieldModifier(field)\n        : field\n\n      const fragment = operator.fn(value, facetField)\n      if (fragment) {\n        acc.push(fragment)\n      }\n    }\n\n    if (facet.type === 'searchable') {\n      const {field, operatorType, value} = facet\n      const operator = operators[operatorType]\n\n      const fragment = operator.fn(value?.value, field)\n      if (fragment) {\n        acc.push(fragment)\n      }\n    }\n\n    if (facet.type === 'select') {\n      const {field, operatorType, options, value} = facet\n      const operator = operators[operatorType]\n\n      const currentOptionValue = options?.find((l) => l.name === value)?.value\n\n      const fragment = operator.fn(currentOptionValue, field)\n      if (fragment) {\n        acc.push(fragment)\n      }\n    }\n\n    if (facet.type === 'string') {\n      const {field, operatorType, value} = facet\n      const operator = operators[operatorType]\n\n      const fragment = operator.fn(value, field)\n      if (fragment) {\n        acc.push(fragment)\n      }\n    }\n\n    return acc\n  }, [])\n\n  // Join separate filter fragments\n  const constructedQuery = [\n    // Base filter\n    baseFilter,\n    // Search query (if present)\n    // NOTE: Currently this only searches direct fields on sanity.fileAsset/sanity.imageAsset and NOT referenced tags\n    // It's possible to add this by adding the following line to the searchQuery, but it's quite slow\n    // references(*[_type == \"media.tag\" && name.current == \"${searchQuery.trim()}\"]._id)\n    ...(searchQuery\n      ? [\n          groq`[_id, altText, assetId, creditLine, description, originalFilename, title, url] match '*${searchQuery.trim()}*'`,\n        ]\n      : []),\n    // Search facets\n    ...searchFacetFragments,\n  ].join(' && ')\n\n  return constructedQuery\n}\n\nexport default constructFilter\n","import type {SanityClient} from '@sanity/client'\nimport groq from 'groq'\nimport {from, Observable, of, throwError} from 'rxjs'\nimport {mergeMap} from 'rxjs/operators'\n\nimport {TAG_DOCUMENT_NAME} from '../constants'\nimport type {HttpError} from '../types'\n\nconst checkTagName = (client: SanityClient, name: string) => {\n  return function <T>(source: Observable<T>): Observable<boolean> {\n    return source.pipe(\n      mergeMap(() => {\n        return from(\n          client.fetch(groq`count(*[_type == \"${TAG_DOCUMENT_NAME}\" && name.current == $name])`, {\n            name,\n          }),\n        ) as Observable<number>\n      }),\n      mergeMap((existingTagCount: number) => {\n        if (existingTagCount > 0) {\n          return throwError({\n            message: 'Tag already exists',\n            statusCode: 409,\n          } satisfies HttpError)\n        }\n\n        return of(true)\n      }),\n    )\n  }\n}\n\nexport default checkTagName\n","import type {TagSelectOption, TagItem} from '../types'\n\nconst getTagSelectOptions = (tags: TagItem[]): TagSelectOption[] => {\n  return tags.reduce((acc: TagSelectOption[], val) => {\n    const tag = val?.tag\n    if (tag) {\n      acc.push({\n        label: tag?.name?.current,\n        value: tag?._id,\n      })\n    }\n    return acc\n  }, [])\n}\n\nexport default getTagSelectOptions\n","import {createAction} from '@reduxjs/toolkit'\n\nimport type {AssetItem, HttpError, Tag} from '../../types'\n\nexport const ASSETS_ACTIONS = {\n  tagsAddComplete: createAction(\n    'actions/tagsAddComplete',\n    function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n      return {payload: {assets, tag}}\n    },\n  ),\n  tagsAddError: createAction(\n    'actions/tagsAddError',\n    function prepare({assets, error, tag}: {assets: AssetItem[]; error: HttpError; tag: Tag}) {\n      return {payload: {assets, error, tag}}\n    },\n  ),\n  tagsAddRequest: createAction(\n    'actions/tagsAddRequest',\n    function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n      return {payload: {assets, tag}}\n    },\n  ),\n  tagsRemoveComplete: createAction(\n    'actions/tagsRemoveComplete',\n    function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n      return {payload: {assets, tag}}\n    },\n  ),\n  tagsRemoveError: createAction(\n    'actions/tagsRemoveError',\n    function prepare({assets, error, tag}: {assets: AssetItem[]; error: HttpError; tag: Tag}) {\n      return {payload: {assets, error, tag}}\n    },\n  ),\n  tagsRemoveRequest: createAction(\n    'actions/tagsRemoveRequest',\n    function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n      return {payload: {assets, tag}}\n    },\n  ),\n}\n","import {createAction} from '@reduxjs/toolkit'\n\nexport const DIALOG_ACTIONS = {\n  showTagCreate: createAction('dialog/showTagCreate'),\n  showTagEdit: createAction('dialog/showTagEdit', function prepare({tagId}: {tagId: string}) {\n    return {\n      payload: {tagId},\n    }\n  }),\n}\n","import {createSelector, createSlice, isAnyOf, type PayloadAction} from '@reduxjs/toolkit'\nimport type {ClientError, Transaction} from '@sanity/client'\nimport groq from 'groq'\nimport type {Selector} from 'react-redux'\nimport {ofType} from 'redux-observable'\nimport {from, Observable, of} from 'rxjs'\nimport {bufferTime, catchError, filter, mergeMap, switchMap, withLatestFrom} from 'rxjs/operators'\n\nimport {TAG_DOCUMENT_NAME} from '../../constants'\nimport checkTagName from '../../operators/checkTagName'\nimport debugThrottle from '../../operators/debugThrottle'\nimport type {Asset, HttpError, MyEpic, TagSelectOption, Tag, TagItem} from '../../types'\nimport getTagSelectOptions from '../../utils/getTagSelectOptions'\nimport {ASSETS_ACTIONS} from '../assets/actions'\nimport {DIALOG_ACTIONS} from '../dialog/actions'\nimport type {RootReducerState} from '../types'\n\ntype TagsReducerState = {\n  allIds: string[]\n  byIds: Record<string, TagItem>\n  creating: boolean\n  creatingError?: HttpError\n  fetchCount: number\n  fetching: boolean\n  fetchingError?: HttpError\n  // totalCount: number\n  panelVisible: boolean\n}\n\nconst initialState = {\n  allIds: [],\n  byIds: {},\n  creating: false,\n  creatingError: undefined,\n  fetchCount: -1,\n  fetching: false,\n  fetchingError: undefined,\n  panelVisible: true,\n} as TagsReducerState\n\nconst tagsSlice = createSlice({\n  name: 'tags',\n  initialState,\n  extraReducers: (builder) => {\n    builder\n      .addCase(DIALOG_ACTIONS.showTagCreate, (state) => {\n        delete state.creatingError\n      })\n      .addCase(DIALOG_ACTIONS.showTagEdit, (state, action) => {\n        const {tagId} = action.payload\n        delete state.byIds[tagId]!.error\n      })\n      .addMatcher(\n        isAnyOf(\n          ASSETS_ACTIONS.tagsAddComplete,\n          ASSETS_ACTIONS.tagsAddError,\n          ASSETS_ACTIONS.tagsRemoveComplete,\n          ASSETS_ACTIONS.tagsRemoveError,\n        ),\n        (state, action) => {\n          const {tag} = action.payload\n          state.byIds[tag._id]!.updating = false\n        },\n      )\n      .addMatcher(\n        isAnyOf(ASSETS_ACTIONS.tagsAddRequest, ASSETS_ACTIONS.tagsRemoveRequest),\n        (state, action) => {\n          const {tag} = action.payload\n          state.byIds[tag._id]!.updating = true\n        },\n      )\n  },\n  reducers: {\n    createComplete(state, action: PayloadAction<{assetId?: string; tag: Tag}>) {\n      const {tag} = action.payload\n      state.creating = false\n      if (!state.allIds.includes(tag._id)) {\n        state.allIds.push(tag._id)\n      }\n      state.byIds[tag._id] = {\n        _type: 'tag',\n        picked: false,\n        tag,\n        updating: false,\n      }\n    },\n    createError(state, action: PayloadAction<{error: HttpError; name: string}>) {\n      state.creating = false\n      state.creatingError = action.payload.error\n    },\n    createRequest(state, _action: PayloadAction<{assetId?: string; name: string}>) {\n      state.creating = true\n      delete state.creatingError\n    },\n    deleteComplete(state, action: PayloadAction<{tagId: string}>) {\n      const {tagId} = action.payload\n      const deleteIndex = state.allIds.indexOf(tagId)\n      if (deleteIndex >= 0) {\n        state.allIds.splice(deleteIndex, 1)\n      }\n      delete state.byIds[tagId]\n    },\n    deleteError(state, action: PayloadAction<{error: HttpError; tag: Tag}>) {\n      const {error, tag} = action.payload\n\n      const tagId = tag?._id\n      state.byIds[tagId]!.error = error\n      state.byIds[tagId]!.updating = false\n    },\n    deleteRequest(state, action: PayloadAction<{tag: Tag}>) {\n      const tagId = action.payload?.tag?._id\n      state.byIds[tagId]!.picked = false\n      state.byIds[tagId]!.updating = true\n\n      Object.keys(state.byIds).forEach((key) => {\n        delete state.byIds[key]!.error\n      })\n    },\n    fetchComplete(state, action: PayloadAction<{tags: Tag[]}>) {\n      const {tags} = action.payload\n\n      tags?.forEach((tag) => {\n        state.allIds.push(tag._id)\n        state.byIds[tag._id] = {\n          _type: 'tag',\n          picked: false,\n          tag,\n          updating: false,\n        }\n      })\n\n      state.fetching = false\n      state.fetchCount = tags.length || 0\n      delete state.fetchingError\n    },\n    fetchError(state, action: PayloadAction<{error: HttpError}>) {\n      const {error} = action.payload\n      state.fetching = false\n      state.fetchingError = error\n    },\n    fetchRequest: {\n      reducer: (state, _action: PayloadAction<{query: string}>) => {\n        state.fetching = true\n        delete state.fetchingError\n      },\n      prepare: () => {\n        // Construct query\n        const query = groq`\n          {\n            \"items\": *[\n              _type == \"${TAG_DOCUMENT_NAME}\"\n              && !(_id in path(\"drafts.**\"))\n            ] {\n              _createdAt,\n              _updatedAt,\n              _id,\n              _rev,\n              _type,\n              name\n            } | order(name.current asc),\n          }\n        `\n        return {payload: {query}}\n      },\n    },\n    // Queue batch tag creation\n    listenerCreateQueue(_state, _action: PayloadAction<{tag: Tag}>) {\n      //\n    },\n    // Apply created tags (via sanity real-time events)\n    listenerCreateQueueComplete(state, action: PayloadAction<{tags: Tag[]}>) {\n      const {tags} = action.payload\n\n      tags?.forEach((tag) => {\n        state.byIds[tag._id] = {\n          _type: 'tag',\n          picked: false,\n          tag,\n          updating: false,\n        }\n        if (!state.allIds.includes(tag._id)) {\n          state.allIds.push(tag._id)\n        }\n      })\n    },\n    // Queue batch tag deletion\n    listenerDeleteQueue(_state, _action: PayloadAction<{tagId: string}>) {\n      //\n    },\n    // Apply deleted tags (via sanity real-time events)\n    listenerDeleteQueueComplete(state, action: PayloadAction<{tagIds: string[]}>) {\n      const {tagIds} = action.payload\n\n      tagIds?.forEach((tagId) => {\n        const deleteIndex = state.allIds.indexOf(tagId)\n        if (deleteIndex >= 0) {\n          state.allIds.splice(deleteIndex, 1)\n        }\n        delete state.byIds[tagId]\n      })\n    },\n    // Queue batch tag updates\n    listenerUpdateQueue(_state, _action: PayloadAction<{tag: Tag}>) {\n      //\n    },\n    // Apply updated tags (via sanity real-time events)\n    listenerUpdateQueueComplete(state, action: PayloadAction<{tags: Tag[]}>) {\n      const {tags} = action.payload\n\n      tags?.forEach((tag) => {\n        if (state.byIds[tag._id]) {\n          state.byIds[tag._id]!.tag = tag\n        }\n      })\n    },\n    // Set tag panel visibility\n    panelVisibleSet(state, action: PayloadAction<{panelVisible: boolean}>) {\n      const {panelVisible} = action.payload\n      state.panelVisible = panelVisible\n    },\n    // Sort all tags by name\n    sort(state) {\n      state.allIds.sort((a, b) => {\n        const tagA = state.byIds[a]!.tag.name.current\n        const tagB = state.byIds[b]!.tag.name.current\n\n        if (tagA < tagB) {\n          return -1\n        } else if (tagA > tagB) {\n          return 1\n        }\n        return 0\n      })\n    },\n    updateComplete(state, action: PayloadAction<{closeDialogId?: string; tag: Tag}>) {\n      const {tag} = action.payload\n      state.byIds[tag._id]!.tag = tag\n      state.byIds[tag._id]!.updating = false\n    },\n    updateError(state, action: PayloadAction<{tag: Tag; error: HttpError}>) {\n      const {error, tag} = action.payload\n      const tagId = tag?._id\n      state.byIds[tagId]!.error = error\n      state.byIds[tagId]!.updating = false\n    },\n    updateRequest(\n      state,\n      action: PayloadAction<{\n        closeDialogId?: string\n        formData: Record<string, any>\n        tag: Tag\n      }>,\n    ) {\n      const {tag} = action.payload\n      state.byIds[tag?._id]!.updating = true\n    },\n  },\n})\n\n// Epics\n\n// On tag create request:\n// - async check to see if tag already exists\n// - throw if tag already exists\n// - otherwise, create new tag\nexport const tagsCreateEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(tagsSlice.actions.createRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assetId, name} = action.payload\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        checkTagName(client, name),\n        mergeMap(() =>\n          client.observable.create({\n            _type: TAG_DOCUMENT_NAME,\n            name: {\n              _type: 'slug',\n              current: name,\n            },\n          }),\n        ),\n        mergeMap((result) => of(tagsSlice.actions.createComplete({assetId, tag: result as Tag}))),\n        catchError((error: ClientError) =>\n          of(\n            tagsSlice.actions.createError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              name,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// On tag delete request\n// - find referenced assets\n// - remove tag from referenced assets in a sanity transaction\nexport const tagsDeleteEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(tagsSlice.actions.deleteRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {tag} = action.payload\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Fetch assets which reference this tag\n        mergeMap(() =>\n          client.observable.fetch<Asset[]>(\n            groq`*[\n              _type in [\"sanity.fileAsset\", \"sanity.imageAsset\"]\n              && references(*[_type == \"media.tag\" && name.current == $tagName]._id)\n            ] {\n              _id,\n              _rev,\n              opt\n            }`,\n            {tagName: tag.name.current},\n          ),\n        ),\n        // Create transaction which remove tag references from all matched assets and delete tag\n        mergeMap((assets) => {\n          const patches = assets.map((asset) => ({\n            id: asset._id,\n            patch: {\n              // this will cause the transaction to fail if the document has been modified since it was fetched.\n              ifRevisionID: asset._rev,\n              unset: [`opt.media.tags[_ref == \"${tag._id}\"]`],\n            },\n          }))\n\n          const transaction: Transaction = patches.reduce(\n            (tx, patch) => tx.patch(patch.id, patch.patch),\n            client.transaction(),\n          )\n\n          transaction.delete(tag._id)\n\n          return from(transaction.commit())\n        }),\n        // Dispatch complete action\n        mergeMap(() => of(tagsSlice.actions.deleteComplete({tagId: tag._id}))),\n        catchError((error: ClientError) =>\n          of(\n            tagsSlice.actions.deleteError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              tag,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// Async fetch tags\nexport const tagsFetchEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(tagsSlice.actions.fetchRequest.match),\n    withLatestFrom(state$),\n    switchMap(([action, state]) => {\n      const {query} = action.payload\n\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Fetch tags\n        mergeMap(() =>\n          client.observable.fetch<{\n            items: Tag[]\n          }>(query),\n        ),\n        // Dispatch complete action\n        mergeMap((result) => {\n          const {items} = result\n          return of(tagsSlice.actions.fetchComplete({tags: items}))\n        }),\n        catchError((error: ClientError) =>\n          of(\n            tagsSlice.actions.fetchError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// TODO: merge all buffer epics\n// Buffer tag creation via sanity subscriber\nexport const tagsListenerCreateQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsSlice.actions.listenerCreateQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const tags = actions?.map((action) => action.payload.tag)\n      return of(tagsSlice.actions.listenerCreateQueueComplete({tags}))\n    }),\n  )\n\n// TODO: merge all buffer epics\n// Buffer tag deletion via sanity subscriber\nexport const tagsListenerDeleteQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsSlice.actions.listenerDeleteQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const tagIds = actions?.map((action) => action.payload.tagId)\n      return of(tagsSlice.actions.listenerDeleteQueueComplete({tagIds}))\n    }),\n  )\n\n// TODO: merge all buffer epics\n// Buffer tag update via sanity subscriber\nexport const tagsListenerUpdateQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsSlice.actions.listenerUpdateQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const tags = actions?.map((action) => action.payload.tag)\n      return of(tagsSlice.actions.listenerUpdateQueueComplete({tags}))\n    }),\n  )\n\n// On successful tag creation or updates:\n// - Re-sort all tags\nexport const tagsSortEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      tagsSlice.actions.listenerCreateQueueComplete.type,\n      tagsSlice.actions.listenerUpdateQueueComplete.type,\n    ),\n    bufferTime(1000),\n    filter((actions) => actions.length > 0),\n    mergeMap(() => of(tagsSlice.actions.sort())),\n  )\n\n// On tag update request\n// - check if tag name already exists\n// - throw if tag already exists\n// - otherwise, patch document\nexport const tagsUpdateEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(tagsSlice.actions.updateRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {closeDialogId, formData, tag} = action.payload\n\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Check if tag name is available, throw early if not\n        checkTagName(client, formData?.['name']?.current),\n        // Patch document (Update tag)\n        mergeMap(\n          () =>\n            from(\n              client\n                .patch(tag._id)\n                .set({name: {_type: 'slug', current: formData?.['name'].current}})\n                .commit(),\n            ) as Observable<Tag>,\n        ),\n        // Dispatch complete action\n        mergeMap((updatedTag: Tag) => {\n          return of(\n            tagsSlice.actions.updateComplete({\n              closeDialogId,\n              tag: updatedTag,\n            }),\n          )\n        }),\n        catchError((error: ClientError) =>\n          of(\n            tagsSlice.actions.updateError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              tag,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// Selectors\n\nconst selectTagsByIds = (state: RootReducerState) => state.tags.byIds\n\nconst selectTagsAllIds = (state: RootReducerState) => state.tags.allIds\n\nexport const selectTags: Selector<RootReducerState, TagItem[]> = createSelector(\n  [selectTagsByIds, selectTagsAllIds],\n  (byIds, allIds) => allIds.map((id) => byIds[id]!),\n)\n\nexport const selectTagById = createSelector(\n  [selectTagsByIds, (_state: RootReducerState, tagId: string) => tagId],\n  (byIds, tagId) => byIds[tagId],\n)\n\n// TODO: use createSelector\n// Map tag references to react-select options, skipping over items with no linked tags\nexport const selectTagSelectOptions =\n  (asset?: Asset) =>\n  (state: RootReducerState): TagSelectOption[] | null => {\n    const tags = asset?.opt?.media?.tags?.reduce((acc: TagItem[], v) => {\n      const tagItem = state.tags.byIds[v._ref]\n      if (tagItem?.tag) {\n        acc.push(tagItem)\n      }\n      return acc\n    }, [])\n\n    if (tags && tags?.length > 0) {\n      return getTagSelectOptions(tags)\n    }\n\n    return null\n  }\n\nexport const tagsActions = {...tagsSlice.actions}\n\nexport default tagsSlice.reducer\n","import {type PayloadAction, createSelector, createSlice} from '@reduxjs/toolkit'\nimport {uuid} from '@sanity/uuid'\nimport {EMPTY, of} from 'rxjs'\nimport {filter, mergeMap, withLatestFrom} from 'rxjs/operators'\n\nimport type {MyEpic, SearchFacetInputProps, SearchFacetOperatorType, WithId} from '../../types'\nimport {tagsActions} from '../tags'\nimport type {RootReducerState} from '../types'\n\n// TODO: don't store non-serializable data in the search store\n// (The main offender is `fieldModifier` which is currently a function)\n\ntype SearchState = {\n  facets: WithId<SearchFacetInputProps>[]\n  query: string\n}\n\nconst initialState = {\n  facets: [],\n  query: '',\n} as SearchState\n\nconst searchSlice = createSlice({\n  name: 'search',\n  initialState,\n  reducers: {\n    // Add search facet\n    facetsAdd(state, action: PayloadAction<{facet: SearchFacetInputProps}>) {\n      state.facets.push({...action.payload.facet, id: uuid()})\n    },\n    // Clear all search facets\n    facetsClear(state) {\n      state.facets = []\n    },\n    // Remove search facet by name\n    facetsRemoveByName(state, action: PayloadAction<{facetName: string}>) {\n      state.facets = state.facets.filter((facet) => facet.name !== action.payload.facetName)\n    },\n    // Remove search facet by name\n    facetsRemoveByTag(state, action: PayloadAction<{tagId: string}>) {\n      state.facets = state.facets.filter(\n        (facet) =>\n          !(\n            facet.name === 'tag' &&\n            facet.type === 'searchable' &&\n            (facet.operatorType === 'references' || facet.operatorType === 'doesNotReference') &&\n            facet.value?.value === action.payload.tagId\n          ),\n      )\n    },\n    // Remove search facet by name\n    facetsRemoveById(state, action: PayloadAction<{facetId: string}>) {\n      state.facets = state.facets.filter((facet) => facet.id !== action.payload.facetId)\n    },\n    // Update an existing search facet\n    facetsUpdate(\n      state,\n      action: PayloadAction<{\n        modifier?: string\n        name: string\n        operatorType?: SearchFacetOperatorType\n        value?: any // TODO: type correctly\n      }>,\n    ) {\n      const {modifier, name, operatorType, value} = action.payload\n\n      const facet = state.facets.find((f) => f.name === name)\n\n      if (!facet) {\n        return\n      }\n\n      if (facet.type === 'number' && modifier) {\n        facet.modifier = modifier\n      }\n      if (operatorType) {\n        facet.operatorType = operatorType\n      }\n      if (typeof value !== 'undefined') {\n        facet.value = value\n      }\n\n      state.facets = state.facets.filter((f) => f.name !== facet.name || f.id === facet.id)\n    },\n    // Update an existing search facet\n    facetsUpdateById(\n      state,\n      action: PayloadAction<{\n        modifier?: string\n        id: string\n        operatorType?: SearchFacetOperatorType\n        value?: any // TODO: type correctly\n      }>,\n    ) {\n      const {modifier, id, operatorType, value} = action.payload\n\n      state.facets.forEach((facet, index) => {\n        if (facet.id === id) {\n          if (facet.type === 'number' && modifier) {\n            facet.modifier = modifier\n          }\n          if (operatorType) {\n            facet.operatorType = operatorType\n          }\n          if (typeof value !== 'undefined') {\n            state.facets[index]!.value = value\n          }\n        }\n      })\n    },\n    // Update existing search query\n    querySet(state, action: PayloadAction<{searchQuery: string}>) {\n      state.query = action.payload?.searchQuery\n    },\n  },\n})\n\n// Epics\n\n// On tag update success -> update existing tag search facet (if present)\nexport const searchFacetTagUpdateEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(tagsActions.updateComplete.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {tag} = action.payload\n\n      const currentSearchFacetTag = state.search.facets?.find((facet) => facet.name === 'tag')\n      const tagItem = state.tags.byIds[tag._id]\n\n      if (currentSearchFacetTag?.type === 'searchable') {\n        if (currentSearchFacetTag.value?.value === tag._id) {\n          return of(\n            searchSlice.actions.facetsUpdate({\n              name: 'tag',\n              value: {\n                label: tagItem?.tag?.name?.current,\n                value: tagItem?.tag?._id,\n              },\n            }),\n          )\n        }\n      }\n\n      return EMPTY\n    }),\n  )\n\n// Selectors\nexport const selectIsSearchFacetTag = createSelector(\n  [\n    (state: RootReducerState) => state.search.facets,\n    (_state: RootReducerState, tagId: string) => tagId,\n  ],\n  (searchFacets, tagId) =>\n    searchFacets.some(\n      (facet) =>\n        facet.name === 'tag' &&\n        facet.type === 'searchable' &&\n        (facet.operatorType === 'references' || facet.operatorType === 'doesNotReference') &&\n        facet.value?.value === tagId,\n    ),\n)\n\nexport const searchActions = {...searchSlice.actions}\n\nexport default searchSlice.reducer\n","import {createAction} from '@reduxjs/toolkit'\nimport type {SanityAssetDocument, SanityImageAssetDocument} from '@sanity/client'\n\nexport const UPLOADS_ACTIONS = {\n  uploadComplete: createAction(\n    'uploads/uploadComplete',\n    function prepare({asset}: {asset: SanityAssetDocument | SanityImageAssetDocument}) {\n      return {\n        payload: {asset},\n      }\n    },\n  ),\n}\n","import {createSelector, createSlice, type PayloadAction} from '@reduxjs/toolkit'\nimport type {ClientError, Patch, Transaction} from '@sanity/client'\nimport groq from 'groq'\nimport {nanoid} from 'nanoid'\nimport type {Selector} from 'react-redux'\nimport {ofType} from 'redux-observable'\nimport {EMPTY, from, of} from 'rxjs'\nimport {\n  bufferTime,\n  catchError,\n  debounceTime,\n  filter,\n  mergeMap,\n  switchMap,\n  withLatestFrom,\n} from 'rxjs/operators'\n\nimport {getOrderTitle} from '../../config/orders'\nimport {ORDER_OPTIONS} from '../../constants'\nimport debugThrottle from '../../operators/debugThrottle'\nimport type {\n  Asset,\n  AssetItem,\n  AssetType,\n  BrowserView,\n  HttpError,\n  MyEpic,\n  Order,\n  OrderDirection,\n  Tag,\n} from '../../types'\nimport constructFilter from '../../utils/constructFilter'\nimport {searchActions} from '../search'\nimport type {RootReducerState} from '../types'\nimport {UPLOADS_ACTIONS} from '../uploads/actions'\nimport {ASSETS_ACTIONS} from './actions'\ntype ItemError = {\n  description: string\n  id: string\n  referencingIDs: string[]\n  type: string // 'documentHasExistingReferencesError'\n}\n\nexport type AssetsReducerState = {\n  allIds: string[]\n  assetTypes: AssetType[]\n  byIds: Record<string, AssetItem>\n  fetchCount: number\n  fetching: boolean\n  fetchingError?: HttpError\n  lastPicked?: string\n  order: Order\n  pageIndex: number\n  pageSize: number\n  view: BrowserView\n  // totalCount: number\n}\n\nconst defaultOrder = ORDER_OPTIONS[0] as {\n  direction: OrderDirection\n  field: string\n}\n\n/**\n * NOTE:\n * `fetchCount` returns the number of items retrieved in the most recent fetch.\n * This is a temporary workaround to be able to determine when there are no more items to retrieve.\n * Typically this would be done by deriving the total number of assets upfront, but currently such\n * queries in GROQ aren't fast enough to use on large datasets (1000s of entries).\n *\n * TODO:\n * When the query engine has been improved and above queries are faster, remove all instances of\n * of `fetchCount` and reinstate `totalCount` across the board.\n */\n\nexport const initialState = {\n  allIds: [],\n  assetTypes: [],\n  byIds: {},\n  fetchCount: -1,\n  fetching: false,\n  fetchingError: undefined,\n  lastPicked: undefined,\n  order: {\n    direction: defaultOrder.direction,\n    field: defaultOrder.field,\n    title: getOrderTitle(defaultOrder.field, defaultOrder.direction),\n  },\n  pageIndex: 0,\n  pageSize: 100,\n  // totalCount: -1,\n  view: 'grid',\n} as AssetsReducerState\n\nconst assetsSlice = createSlice({\n  name: 'assets',\n  initialState,\n  extraReducers: (builder) => {\n    builder //\n      .addCase(UPLOADS_ACTIONS.uploadComplete, (state, action) => {\n        const {asset} = action.payload\n\n        state.byIds[asset._id] = {\n          _type: 'asset',\n          asset: asset as Asset,\n          picked: false,\n          updating: false,\n        }\n      })\n      .addCase(ASSETS_ACTIONS.tagsAddComplete, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = false\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsAddError, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = false\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsAddRequest, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = true\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsRemoveComplete, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = false\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsRemoveError, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = false\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsRemoveRequest, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = true\n        })\n      })\n  },\n  reducers: {\n    // Clear asset order\n    clear(state) {\n      state.allIds = []\n    },\n    // Remove assets and update page index\n    deleteComplete(state, action: PayloadAction<{assetIds: string[]}>) {\n      const {assetIds} = action.payload\n\n      assetIds?.forEach((id) => {\n        const deleteIndex = state.allIds.indexOf(id)\n        if (deleteIndex >= 0) {\n          state.allIds.splice(deleteIndex, 1)\n        }\n        delete state.byIds[id]\n      })\n\n      state.pageIndex = Math.floor(state.allIds.length / state.pageSize) - 1\n    },\n    deleteError(state, action: PayloadAction<{assetIds: string[]; error: ClientError}>) {\n      const {assetIds, error} = action.payload\n      const itemErrors: ItemError[] = error?.response?.body?.error?.items?.map(\n        (item: any) => item.error,\n      )\n\n      assetIds?.forEach((id) => {\n        state.byIds[id]!.updating = false\n      })\n      itemErrors?.forEach((item) => {\n        state.byIds[item.id]!.error = item.description\n      })\n    },\n    deleteRequest(state, action: PayloadAction<{assets: Asset[]; closeDialogId?: string}>) {\n      const {assets} = action.payload\n      assets.forEach((asset) => {\n        state.byIds[asset?._id]!.updating = true\n      })\n\n      Object.keys(state.byIds).forEach((key) => {\n        delete state.byIds[key]!.error\n      })\n    },\n    fetchComplete(state, action: PayloadAction<{assets: Asset[]}>) {\n      const assets = action.payload?.assets || []\n\n      if (assets) {\n        assets.forEach((asset) => {\n          if (!state.allIds.includes(asset._id)) {\n            state.allIds.push(asset._id)\n          }\n          state.byIds[asset._id] = {\n            _type: 'asset',\n            asset: asset,\n            picked: false,\n            updating: false,\n          }\n        })\n      }\n\n      state.fetching = false\n      state.fetchCount = assets.length || 0\n      delete state.fetchingError\n    },\n    fetchError(state, action: PayloadAction<HttpError>) {\n      const error = action.payload\n      state.fetching = false\n      state.fetchingError = error\n    },\n    fetchRequest: {\n      reducer: (state, _action: PayloadAction<{params: Record<string, any>; query: string}>) => {\n        state.fetching = true\n        delete state.fetchingError\n      },\n      prepare: ({\n        params = {},\n        queryFilter,\n        selector = ``,\n        sort = groq`order(_updatedAt desc)`,\n      }: {\n        params?: Record<string, any>\n        queryFilter: string\n        replace?: boolean\n        selector?: string\n        sort?: string\n      }) => {\n        const pipe = sort || selector ? '|' : ''\n\n        // Construct query\n        const query = groq`\n          {\n            \"items\": *[${queryFilter}] {\n              _id,\n              _type,\n              _createdAt,\n              _updatedAt,\n              altText,\n              creditLine,\n              description,\n              extension,\n              metadata {\n                dimensions,\n                exif,\n                isOpaque,\n              },\n              mimeType,\n              opt {\n                media\n              },\n              originalFilename,\n              size,\n              source {\n                name,\n                id,\n                url,\n              },\n              title,\n              url\n            } ${pipe} ${sort} ${selector},\n          }\n        `\n\n        return {payload: {params, query}}\n      },\n    },\n    insertUploads(state, action: PayloadAction<{results: Record<string, string | null>}>) {\n      const {results} = action.payload\n\n      Object.entries(results).forEach(([hash, assetId]) => {\n        if (assetId && !state.allIds.includes(hash)) {\n          state.allIds.push(assetId)\n        }\n      })\n    },\n    listenerCreateQueue(_state, _action: PayloadAction<{asset: Asset}>) {\n      //\n    },\n    listenerCreateQueueComplete(state, action: PayloadAction<{assets: Asset[]}>) {\n      const {assets} = action.payload\n      assets?.forEach((asset) => {\n        if (state.byIds[asset?._id]?.asset) {\n          state.byIds[asset._id]!.asset = asset\n        }\n      })\n    },\n    listenerDeleteQueue(_state, _action: PayloadAction<{assetId: string}>) {\n      //\n    },\n    listenerDeleteQueueComplete(state, action: PayloadAction<{assetIds: string[]}>) {\n      const {assetIds} = action.payload\n      assetIds?.forEach((assetId) => {\n        const deleteIndex = state.allIds.indexOf(assetId)\n        if (deleteIndex >= 0) {\n          state.allIds.splice(deleteIndex, 1)\n        }\n        delete state.byIds[assetId]\n      })\n    },\n    listenerUpdateQueue(_state, _action: PayloadAction<{asset: Asset}>) {\n      //\n    },\n    listenerUpdateQueueComplete(state, action: PayloadAction<{assets: Asset[]}>) {\n      const {assets} = action.payload\n      assets?.forEach((asset) => {\n        if (state.byIds[asset?._id]?.asset) {\n          state.byIds[asset._id]!.asset = asset\n        }\n      })\n    },\n    loadNextPage() {\n      //\n    },\n    loadPageIndex(state, action: PayloadAction<{pageIndex: number}>) {\n      //\n      state.pageIndex = action.payload.pageIndex\n    },\n    orderSet(state, action: PayloadAction<{order: Order}>) {\n      state.order = action.payload?.order\n      state.pageIndex = 0\n    },\n    pick(state, action: PayloadAction<{assetId: string; picked: boolean}>) {\n      const {assetId, picked} = action.payload\n\n      state.byIds[assetId]!.picked = picked\n      state.lastPicked = picked ? assetId : undefined\n    },\n    pickAll(state) {\n      state.allIds.forEach((id) => {\n        state.byIds[id]!.picked = true\n      })\n    },\n    pickClear(state) {\n      state.lastPicked = undefined\n      Object.values(state.byIds).forEach((asset) => {\n        state.byIds[asset.asset._id]!.picked = false\n      })\n    },\n    pickRange(state, action: PayloadAction<{endId: string; startId: string}>) {\n      const startIndex = state.allIds.findIndex((id) => id === action.payload.startId)\n      const endIndex = state.allIds.findIndex((id) => id === action.payload.endId)\n\n      // Sort numerically, ascending order\n      const indices = [startIndex, endIndex].sort((a, b) => a - b)\n\n      state.allIds.slice(indices[0], indices[1]! + 1).forEach((key) => {\n        state.byIds[key]!.picked = true\n      })\n      state.lastPicked = state.allIds[endIndex]\n    },\n    sort(state) {\n      state.allIds.sort((a, b) => {\n        const tagA = state.byIds[a]!.asset[state.order.field]\n        const tagB = state.byIds[b]!.asset[state.order.field]\n\n        if (tagA < tagB) {\n          return state.order.direction === 'asc' ? -1 : 1\n        } else if (tagA > tagB) {\n          return state.order.direction === 'asc' ? 1 : -1\n        }\n        return 0\n      })\n    },\n    updateComplete(state, action: PayloadAction<{asset: Asset; closeDialogId?: string}>) {\n      const {asset} = action.payload\n      state.byIds[asset._id]!.updating = false\n      state.byIds[asset._id]!.asset = asset\n    },\n    updateError(state, action: PayloadAction<{asset: Asset; error: HttpError}>) {\n      const {asset, error} = action.payload\n\n      const assetId = asset?._id\n      state.byIds[assetId]!.error = error.message\n      state.byIds[assetId]!.updating = false\n    },\n    updateRequest(\n      state,\n      action: PayloadAction<{asset: Asset; closeDialogId?: string; formData: Record<string, any>}>,\n    ) {\n      const assetId = action.payload?.asset?._id\n      state.byIds[assetId]!.updating = true\n    },\n    viewSet(state, action: PayloadAction<{view: BrowserView}>) {\n      state.view = action.payload?.view\n    },\n  },\n})\n\n// Epics\n\nexport const assetsDeleteEpic: MyEpic = (action$, _state$, {client}) =>\n  action$.pipe(\n    filter(assetsActions.deleteRequest.match),\n    mergeMap((action) => {\n      const {assets} = action.payload\n      const assetIds = assets.map((asset) => asset._id)\n      return of(assets).pipe(\n        mergeMap(() =>\n          client.observable.delete({\n            query: groq`*[_id in ${JSON.stringify(assetIds)}]`,\n          }),\n        ),\n        mergeMap(() => of(assetsActions.deleteComplete({assetIds}))),\n        catchError((error: ClientError) => {\n          return of(assetsActions.deleteError({assetIds, error}))\n        }),\n      )\n    }),\n  )\n\nexport const assetsFetchEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(assetsActions.fetchRequest.match),\n    withLatestFrom(state$),\n    switchMap(([action, state]) => {\n      const params = action.payload?.params\n      const query = action.payload?.query\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() =>\n          client.observable.fetch<{\n            items: Asset[]\n          }>(query, params),\n        ),\n        mergeMap((result) => {\n          const {\n            items,\n            // totalCount\n          } = result\n          return of(assetsActions.fetchComplete({assets: items}))\n        }),\n        catchError((error: ClientError) =>\n          of(\n            assetsActions.fetchError({\n              message: error?.message || 'Internal error',\n              statusCode: error?.statusCode || 500,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\nexport const assetsFetchPageIndexEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(assetsActions.loadPageIndex.match),\n    withLatestFrom(state$),\n    switchMap(([action, state]) => {\n      const pageSize = state.assets.pageSize\n      const start = action.payload.pageIndex * pageSize\n      const end = start + pageSize\n\n      // Document ID can be null when operating on pristine / unsaved drafts\n      const documentId = state?.selected.document?._id\n      const documentAssetIds = state?.selected?.documentAssetIds\n\n      const constructedFilter = constructFilter({\n        assetTypes: state.assets.assetTypes,\n        searchFacets: state.search.facets,\n        searchQuery: state.search.query,\n      })\n\n      const params = {\n        ...(documentId ? {documentId} : {}),\n        documentAssetIds,\n      }\n\n      return of(\n        assetsActions.fetchRequest({\n          params,\n          queryFilter: constructedFilter,\n          selector: groq`[${start}...${end}]`,\n          sort: groq`order(${state.assets?.order?.field} ${state.assets?.order?.direction})`,\n        }),\n      )\n    }),\n  )\n\nexport const assetsFetchNextPageEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(assetsActions.loadNextPage.match),\n    withLatestFrom(state$),\n    switchMap(([_action, state]) =>\n      of(assetsActions.loadPageIndex({pageIndex: state.assets.pageIndex + 1})),\n    ),\n  )\n\nexport const assetsFetchAfterDeleteAllEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(assetsActions.deleteComplete.match),\n    withLatestFrom(state$),\n    switchMap(([_action, state]) => {\n      if (state.assets.allIds.length === 0) {\n        const nextPageIndex = Math.floor(state.assets.allIds.length / state.assets.pageSize)\n        return of(assetsActions.loadPageIndex({pageIndex: nextPageIndex}))\n      }\n\n      return EMPTY\n    }),\n  )\n\nconst filterAssetWithoutTag = (tag: Tag) => (asset: AssetItem) => {\n  const tagIndex = asset?.asset?.opt?.media?.tags?.findIndex((t) => t._ref === tag?._id) ?? -1\n  return tagIndex < 0\n}\n\nconst patchOperationTagAppend =\n  ({tag}: {tag: Tag}) =>\n  (patch: Patch) =>\n    patch\n      .setIfMissing({opt: {}})\n      .setIfMissing({'opt.media': {}})\n      .setIfMissing({'opt.media.tags': []})\n      .append('opt.media.tags', [{_key: nanoid(), _ref: tag?._id, _type: 'reference', _weak: true}])\n\nconst patchOperationTagUnset =\n  ({asset, tag}: {asset: AssetItem; tag: Tag}) =>\n  (patch: Patch) =>\n    patch.ifRevisionId(asset?.asset?._rev).unset([`opt.media.tags[_ref == \"${tag._id}\"]`])\n\nexport const assetsOrderSetEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.orderSet.match),\n    mergeMap(() => {\n      return of(\n        assetsActions.clear(), //\n        assetsActions.loadPageIndex({pageIndex: 0}),\n      )\n    }),\n  )\n\nexport const assetsSearchEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      searchActions.facetsAdd.type,\n      searchActions.facetsClear.type,\n      searchActions.facetsRemoveById.type,\n      searchActions.facetsRemoveByName.type,\n      searchActions.facetsRemoveByTag.type,\n      searchActions.facetsUpdate.type,\n      searchActions.facetsUpdateById.type,\n      searchActions.querySet.type,\n    ),\n    debounceTime(400),\n    mergeMap(() => {\n      return of(\n        assetsActions.clear(), //\n        assetsActions.loadPageIndex({pageIndex: 0}),\n      )\n    }),\n  )\n\nexport const assetsListenerCreateQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.listenerCreateQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const assets = actions?.map((action) => action.payload.asset)\n      return of(assetsActions.listenerCreateQueueComplete({assets}))\n    }),\n  )\n\nexport const assetsListenerDeleteQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.listenerDeleteQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const assetIds = actions?.map((action) => action.payload.assetId)\n      return of(assetsActions.listenerDeleteQueueComplete({assetIds}))\n    }),\n  )\n\nexport const assetsListenerUpdateQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.listenerUpdateQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const assets = actions?.map((action) => action.payload.asset)\n      return of(assetsActions.listenerUpdateQueueComplete({assets}))\n    }),\n  )\n\n// Re-sort on all updates (immediate and batched listener events)\nexport const assetsSortEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      assetsActions.insertUploads.type,\n      assetsActions.listenerUpdateQueueComplete.type,\n      assetsActions.updateComplete.type,\n    ),\n    mergeMap(() => of(assetsActions.sort())),\n  )\n\nexport const assetsTagsAddEpic: MyEpic = (action$, state$, {client}) => {\n  return action$.pipe(\n    filter(ASSETS_ACTIONS.tagsAddRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assets, tag} = action.payload\n\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Add tag references to all picked assets\n        mergeMap(() => {\n          const pickedAssets = selectAssetsPicked(state)\n\n          // Filter out picked assets which already include tag\n          const pickedAssetsFiltered = pickedAssets?.filter(filterAssetWithoutTag(tag))\n\n          const transaction: Transaction = pickedAssetsFiltered.reduce(\n            (tx, pickedAsset) => tx.patch(pickedAsset?.asset?._id, patchOperationTagAppend({tag})),\n            client.transaction(),\n          )\n\n          return from(transaction.commit())\n        }),\n        // Dispatch complete action\n        mergeMap(() => of(ASSETS_ACTIONS.tagsAddComplete({assets, tag}))),\n        catchError((error: ClientError) =>\n          of(\n            ASSETS_ACTIONS.tagsAddError({\n              assets,\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              tag,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n}\n\nexport const assetsTagsRemoveEpic: MyEpic = (action$, state$, {client}) => {\n  return action$.pipe(\n    filter(ASSETS_ACTIONS.tagsRemoveRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assets, tag} = action.payload\n\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Remove tag references from all picked assets\n        mergeMap(() => {\n          const pickedAssets = selectAssetsPicked(state)\n\n          const transaction: Transaction = pickedAssets.reduce(\n            (tx, pickedAsset) =>\n              tx.patch(pickedAsset?.asset?._id, patchOperationTagUnset({asset: pickedAsset, tag})),\n            client.transaction(),\n          )\n\n          return from(transaction.commit())\n        }),\n        // Dispatch complete action\n        mergeMap(() => of(ASSETS_ACTIONS.tagsRemoveComplete({assets, tag}))),\n        catchError((error: ClientError) =>\n          of(\n            ASSETS_ACTIONS.tagsRemoveError({\n              assets,\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              tag,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n}\n\nexport const assetsUnpickEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      assetsActions.orderSet.type,\n      assetsActions.viewSet.type,\n      searchActions.facetsAdd.type,\n      searchActions.facetsClear.type,\n      searchActions.facetsRemoveById.type,\n      searchActions.facetsRemoveByName.type,\n      searchActions.facetsRemoveByTag.type,\n      searchActions.facetsUpdate.type,\n      searchActions.facetsUpdateById.type,\n      searchActions.querySet.type,\n    ),\n    mergeMap(() => {\n      return of(assetsActions.pickClear())\n    }),\n  )\n\nexport const assetsUpdateEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(assetsActions.updateRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {asset, closeDialogId, formData} = action.payload\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() =>\n          from(\n            client\n              .patch(asset._id)\n              .setIfMissing({opt: {}})\n              .setIfMissing({'opt.media': {}})\n              .set(formData)\n              .commit(),\n          ),\n        ),\n        mergeMap((updatedAsset: any) =>\n          of(\n            assetsActions.updateComplete({\n              asset: updatedAsset,\n              closeDialogId,\n            }),\n          ),\n        ),\n        catchError((error: ClientError) =>\n          of(\n            assetsActions.updateError({\n              asset,\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// Selectors\n\nconst selectAssetsByIds = (state: RootReducerState) => state.assets.byIds\n\nconst selectAssetsAllIds = (state: RootReducerState) => state.assets.allIds\n\nexport const selectAssetById = createSelector(\n  [\n    (state: RootReducerState) => state.assets.byIds,\n    (_state: RootReducerState, assetId: string) => assetId,\n  ],\n  (byIds, assetId) => {\n    const asset = byIds[assetId]\n    return asset ? asset : undefined\n  },\n)\n\nconst selectAssets: Selector<RootReducerState, AssetItem[]> = createSelector(\n  [selectAssetsByIds, selectAssetsAllIds],\n  (byIds, allIds) => allIds.map((id) => byIds[id]!),\n)\n\nexport const selectAssetsLength = createSelector([selectAssets], (assets) => assets.length)\n\nexport const selectAssetsPicked = createSelector([selectAssets], (assets) =>\n  assets.filter((item) => item?.picked),\n)\n\nexport const selectAssetsPickedLength = createSelector(\n  [selectAssetsPicked],\n  (assetsPicked) => assetsPicked.length,\n)\n\nexport const assetsActions = {...assetsSlice.actions}\n\nexport default assetsSlice.reducer\n","import {createSlice, type PayloadAction} from '@reduxjs/toolkit'\nimport pluralize from 'pluralize'\nimport {ofType} from 'redux-observable'\nimport {EMPTY, of} from 'rxjs'\nimport {filter, mergeMap} from 'rxjs/operators'\n\nimport type {AssetItem, Dialog, MyEpic, Tag} from '../../types'\nimport {assetsActions} from '../assets'\nimport {ASSETS_ACTIONS} from '../assets/actions'\nimport {tagsActions} from '../tags'\nimport {DIALOG_ACTIONS} from './actions'\n\ntype DialogReducerState = {\n  items: Dialog[]\n}\n\nconst initialState = {\n  items: [],\n} as DialogReducerState\n\nconst dialogSlice = createSlice({\n  name: 'dialog',\n  initialState,\n  extraReducers: (builder) => {\n    builder.addCase(DIALOG_ACTIONS.showTagCreate, (state) => {\n      state.items.push({\n        id: 'tagCreate',\n        type: 'tagCreate',\n      })\n    })\n    builder.addCase(DIALOG_ACTIONS.showTagEdit, (state, action) => {\n      const {tagId} = action.payload\n      state.items.push({\n        id: tagId,\n        tagId,\n        type: 'tagEdit',\n      })\n    })\n  },\n  reducers: {\n    // Clear all dialogs\n    clear(state) {\n      state.items = []\n    },\n    // Add newly created inline tag to assetEdit dialog\n    inlineTagCreate(state, action: PayloadAction<{assetId: string; tag: Tag}>) {\n      const {assetId, tag} = action.payload\n\n      state.items.forEach((item) => {\n        if (item.type === 'assetEdit' && item.assetId === assetId) {\n          item.lastCreatedTag = {\n            label: tag.name.current,\n            value: tag._id,\n          }\n        }\n      })\n    },\n    // Remove inline tags from assetEdit dialog\n    inlineTagRemove(state, action: PayloadAction<{tagIds: string[]}>) {\n      const {tagIds} = action.payload\n\n      state.items.forEach((item) => {\n        if (item.type === 'assetEdit') {\n          item.lastRemovedTagIds = tagIds\n        }\n      })\n    },\n    // Remove dialog by id\n    remove(state, action: PayloadAction<{id: string}>) {\n      const id = action.payload?.id\n      state.items = state.items.filter((item) => item.id !== id)\n    },\n    showConfirmAssetsTagAdd(\n      state,\n      action: PayloadAction<{\n        assetsPicked: AssetItem[]\n        closeDialogId?: string\n        tag: Tag\n      }>,\n    ) {\n      const {assetsPicked, closeDialogId, tag} = action.payload\n\n      const suffix = `${assetsPicked.length} ${pluralize('asset', assetsPicked.length)}`\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: ASSETS_ACTIONS.tagsAddRequest({\n          assets: assetsPicked,\n          tag,\n        }),\n        confirmText: `Yes, add tag to ${suffix}`,\n        title: `Add tag ${tag.name.current} to ${suffix}?`,\n        id: 'confirm',\n        headerTitle: 'Confirm tag addition',\n        tone: 'primary',\n        type: 'confirm',\n      })\n    },\n    showConfirmAssetsTagRemove(\n      state,\n      action: PayloadAction<{\n        assetsPicked: AssetItem[]\n        closeDialogId?: string\n        tag: Tag\n      }>,\n    ) {\n      const {assetsPicked, closeDialogId, tag} = action.payload\n\n      const suffix = `${assetsPicked.length} ${pluralize('asset', assetsPicked.length)}`\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: ASSETS_ACTIONS.tagsRemoveRequest({assets: assetsPicked, tag}),\n        confirmText: `Yes, remove tag from ${suffix}`,\n        headerTitle: 'Confirm tag removal',\n        id: 'confirm',\n        title: `Remove tag ${tag.name.current} from ${suffix}?`,\n        tone: 'critical',\n        type: 'confirm',\n      })\n    },\n    showConfirmDeleteAssets(\n      state,\n      action: PayloadAction<{assets: AssetItem[]; closeDialogId?: string}>,\n    ) {\n      const {assets, closeDialogId} = action.payload\n\n      const suffix = `${assets.length} ${pluralize('asset', assets.length)}`\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: assetsActions.deleteRequest({\n          assets: assets.map((assetItem) => assetItem.asset),\n        }),\n        confirmText: `Yes, delete ${suffix}`,\n        description: 'This operation cannot be reversed. Are you sure you want to continue?',\n        title: `Permanently delete ${suffix}?`,\n        id: 'confirm',\n        headerTitle: 'Confirm deletion',\n        tone: 'critical',\n        type: 'confirm',\n      })\n    },\n    showConfirmDeleteTag(state, action: PayloadAction<{closeDialogId?: string; tag: Tag}>) {\n      const {closeDialogId, tag} = action.payload\n\n      const suffix = 'tag'\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: tagsActions.deleteRequest({tag}),\n        confirmText: `Yes, delete ${suffix}`,\n        description: 'This operation cannot be reversed. Are you sure you want to continue?',\n        title: `Permanently delete ${suffix}?`,\n        id: 'confirm',\n        headerTitle: 'Confirm deletion',\n        tone: 'critical',\n        type: 'confirm',\n      })\n    },\n    showAssetEdit(state, action: PayloadAction<{assetId: string}>) {\n      const {assetId} = action.payload\n      state.items.push({\n        assetId,\n        id: assetId,\n        type: 'assetEdit',\n      })\n    },\n    showSearchFacets(state) {\n      state.items.push({\n        id: 'searchFacets',\n        type: 'searchFacets',\n      })\n    },\n    showTags(state) {\n      state.items.push({\n        id: 'tags',\n        type: 'tags',\n      })\n    },\n  },\n})\n\n// Epics\n\nexport const dialogClearOnAssetUpdateEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      assetsActions.deleteComplete.type,\n      assetsActions.updateComplete.type,\n      tagsActions.deleteComplete.type,\n      tagsActions.updateComplete.type,\n    ),\n    filter(\n      (action: {\n        payload: {closeDialogId?: string}\n      }): action is PayloadAction<{closeDialogId?: string}> => !!action?.payload?.closeDialogId,\n    ),\n    mergeMap((action) => {\n      const dialogId = action?.payload?.closeDialogId\n      if (dialogId) {\n        return of(dialogSlice.actions.remove({id: dialogId}))\n      }\n      return EMPTY\n    }),\n  )\n\nexport const dialogTagCreateEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.createComplete.match),\n    mergeMap((action) => {\n      const {assetId, tag} = action?.payload || {}\n\n      if (assetId) {\n        return of(dialogSlice.actions.inlineTagCreate({tag, assetId}))\n      }\n\n      if (tag._id) {\n        return of(dialogSlice.actions.remove({id: 'tagCreate'}))\n      }\n\n      return EMPTY\n    }),\n  )\n\nexport const dialogTagDeleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.listenerDeleteQueueComplete.match),\n    mergeMap((action) => {\n      const {tagIds} = action?.payload || {}\n\n      return of(dialogSlice.actions.inlineTagRemove({tagIds}))\n    }),\n  )\n\nexport const dialogActions = {...dialogSlice.actions}\n\nexport default dialogSlice.reducer\n","import {ThLargeIcon} from '@sanity/icons/ThLarge'\nimport {ThListIcon} from '@sanity/icons/ThList'\nimport {Button, Inline} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\n\nconst ButtonViewGroup = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const view = useTypedSelector((state) => state.assets.view)\n\n  return (\n    <Inline space={0} style={{whiteSpace: 'nowrap'}}>\n      <Button\n        fontSize={1}\n        icon={ThLargeIcon}\n        mode={view === 'grid' ? 'default' : 'ghost'}\n        onClick={() => dispatch(assetsActions.viewSet({view: 'grid'}))}\n        style={{\n          borderBottomRightRadius: 0,\n          borderTopRightRadius: 0,\n        }}\n      />\n      <Button\n        fontSize={1}\n        icon={ThListIcon}\n        mode={view === 'table' ? 'default' : 'ghost'}\n        onClick={() => dispatch(assetsActions.viewSet({view: 'table'}))}\n        style={{\n          borderBottomLeftRadius: 0,\n          borderTopLeftRadius: 0,\n        }}\n      />\n    </Inline>\n  )\n}\n\nexport default ButtonViewGroup\n","import {type PopoverProps, usePortal} from '@sanity/ui'\n\nexport function usePortalPopoverProps(): PopoverProps {\n  const portal = usePortal()\n\n  return {\n    animate: true,\n    constrainSize: true,\n    floatingBoundary: portal.element,\n    portal: true,\n    referenceBoundary: portal.element,\n  }\n}\n","import {SortIcon} from '@sanity/icons/Sort'\nimport {Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport {getOrderTitle} from '../../config/orders'\nimport {ORDER_OPTIONS} from '../../constants'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\n\nconst OrderSelect = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const order = useTypedSelector((state) => state.assets.order)\n\n  const popoverProps = usePortalPopoverProps()\n\n  return (\n    <MenuButton\n      button={\n        <Button\n          fontSize={1}\n          icon={SortIcon}\n          mode=\"bleed\"\n          padding={3}\n          text={getOrderTitle(order.field, order.direction)}\n        />\n      }\n      id=\"order\"\n      menu={\n        <Menu>\n          {ORDER_OPTIONS?.map((item, index) => {\n            if (item) {\n              const selected = order.field === item.field && order.direction === item.direction\n              return (\n                <MenuItem\n                  disabled={selected}\n                  fontSize={1}\n                  iconRight={selected}\n                  key={index}\n                  onClick={() =>\n                    dispatch(\n                      assetsActions.orderSet({\n                        order: {direction: item.direction, field: item.field},\n                      }),\n                    )\n                  }\n                  padding={2}\n                  selected={selected}\n                  space={4}\n                  style={{minWidth: '200px'}}\n                  text={getOrderTitle(item.field, item.direction)}\n                />\n              )\n            }\n\n            return <MenuDivider key={index} />\n          })}\n        </Menu>\n      }\n      popover={popoverProps}\n    />\n  )\n}\n\nexport default OrderSelect\n","import {Box} from '@sanity/ui'\nimport {useNProgress} from '@tanem/react-nprogress'\n\ntype Props = {\n  loading?: boolean\n}\n\nconst Progress = (props: Props) => {\n  const {loading} = props\n\n  const {animationDuration, isFinished, progress} = useNProgress({\n    animationDuration: 300,\n    isAnimating: loading,\n  })\n\n  return (\n    <Box\n      style={{\n        opacity: isFinished ? 0 : 1,\n        transition: `opacity ${animationDuration}ms linear`,\n      }}\n    >\n      <Box\n        style={{\n          height: '1px',\n          background: 'rgba(255, 255, 255, 0.5)',\n          position: 'absolute',\n          left: 0,\n          top: 0,\n          transition: `width ${animationDuration}ms linear`,\n          width: `${progress * 100}%`,\n        }}\n      />\n    </Box>\n  )\n}\n\nexport default Progress\n","import {hues} from '@sanity/color'\nimport {type ThemeColorSchemeKey, studioTheme} from '@sanity/ui'\n\nconst SCHEME_COLORS = {\n  bg: {\n    dark: hues.gray[950].hex,\n    light: hues.gray[50].hex,\n  },\n  bg2: {\n    dark: hues.gray[900].hex,\n    light: hues.gray[100].hex,\n  },\n  inputEnabledBorder: {\n    dark: studioTheme.color.dark.default.input.default.enabled.border,\n    light: studioTheme.color.light.default.input.default.enabled.border,\n  },\n  inputHoveredBorder: {\n    dark: studioTheme.color.dark.default.input.default.hovered.border,\n    light: studioTheme.color.light.default.input.default.hovered.border,\n  },\n  mutedHoveredBg: {\n    dark: studioTheme.color.dark.primary.muted.primary.hovered.bg,\n    light: studioTheme.color.light.primary.muted.primary.hovered.bg,\n  },\n  mutedHoveredFg: {\n    dark: studioTheme.color.dark.primary.muted.primary.hovered.fg,\n    light: studioTheme.color.light.primary.muted.primary.hovered.fg,\n  },\n  mutedSelectedBg: {\n    dark: studioTheme.color.dark.primary.muted.primary.selected.bg,\n    light: studioTheme.color.light.primary.muted.primary.selected.bg,\n  },\n  spotBlue: {\n    dark: studioTheme.color.dark.primary.spot.blue,\n    light: studioTheme.color.light.primary.spot.blue,\n  },\n}\n\ntype SchemeColorKey = keyof typeof SCHEME_COLORS\n\nexport function getSchemeColor(scheme: ThemeColorSchemeKey, colorKey: SchemeColorKey): string {\n  return SCHEME_COLORS[colorKey]?.[scheme]\n}\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Flex, Label, rem, Text, type ThemeColorSchemeKey} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {styled, css} from 'styled-components'\n\nimport {searchActions} from '../../modules/search'\nimport type {SearchFacetInputProps, WithId} from '../../types'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n  children: ReactNode\n  facet: WithId<SearchFacetInputProps>\n}\n\nconst Container = styled<typeof Box, {$scheme: ThemeColorSchemeKey}>(Box)(({$scheme, theme}) => {\n  return css`\n    background: ${getSchemeColor($scheme, 'bg')};\n    border-radius: ${rem(theme.sanity.radius[2]!)};\n  `\n})\n\nconst SearchFacet = (props: Props) => {\n  const {children, facet} = props\n\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n\n  const handleClose = () => {\n    dispatch(searchActions.facetsRemoveById({facetId: facet.id}))\n  }\n\n  return (\n    <Container padding={[2, 2, 1]} $scheme={scheme}>\n      <Flex align={['flex-start', 'flex-start', 'center']} direction={['column', 'column', 'row']}>\n        {/* Title */}\n        <Box paddingBottom={[3, 3, 0]} paddingLeft={1} paddingRight={2} paddingTop={[1, 1, 0]}>\n          <Label\n            size={0}\n            style={{\n              whiteSpace: 'nowrap',\n            }}\n          >\n            {facet.title}\n          </Label>\n        </Box>\n\n        <Flex align=\"center\">\n          {children}\n\n          {/* Close button */}\n          <Box marginLeft={1} paddingX={2}>\n            <Text muted size={0}>\n              <CloseIcon onClick={handleClose} />\n            </Text>\n          </Box>\n        </Flex>\n      </Flex>\n    </Container>\n  )\n}\n\nexport default SearchFacet\n","import {TextInput} from '@sanity/ui'\nimport {type ChangeEvent} from 'react'\n\n// TODO: use correct type\ntype Props = any & {\n  onValueChange: (value: number) => void\n  value?: number\n}\n\nconst TextInputNumber = (props: Props) => {\n  const {onValueChange, value, ...remainingProps} = props\n\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    const val = e.target.value\n    const regex = /^[0-9\\b]+$/\n\n    // Test for number and strip leading zeroes\n    if (val === '' || regex.test(val)) {\n      onValueChange(parseInt(val, 10) || '')\n    }\n  }\n\n  return (\n    <TextInput\n      {...remainingProps}\n      onChange={handleChange} //\n      value={value ?? ''}\n    />\n  )\n}\n\nexport default TextInputNumber\n","import {SelectIcon} from '@sanity/icons/Select'\nimport {Box, Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport {searchActions} from '../../modules/search'\nimport type {\n  SearchFacetInputNumberModifier,\n  SearchFacetInputNumberProps,\n  SearchFacetOperatorType,\n  WithId,\n} from '../../types'\nimport SearchFacet from '../SearchFacet'\nimport TextInputNumber from '../TextInputNumber'\n\ntype Props = {\n  facet: WithId<SearchFacetInputNumberProps>\n}\n\nconst SearchFacetNumber = ({facet}: Props) => {\n  // Redux\n  const dispatch = useDispatch()\n\n  const popoverProps = usePortalPopoverProps()\n\n  const modifiers = facet?.modifiers\n  const selectedModifier = facet?.modifier\n    ? modifiers?.find((modifier) => modifier.name === facet?.modifier)\n    : modifiers?.[0]\n\n  const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, operatorType}))\n  }\n\n  const handleModifierClick = (modifier: SearchFacetInputNumberModifier) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, modifier: modifier.name}))\n  }\n\n  const handleValueChange = (value: number) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, value}))\n  }\n\n  const selectedOperatorType: SearchFacetOperatorType = facet.operatorType ?? 'greaterThan'\n\n  return (\n    <SearchFacet facet={facet}>\n      {/* Optional operators */}\n      {facet?.operatorTypes && (\n        <MenuButton\n          button={\n            <Button\n              fontSize={1}\n              iconRight={SelectIcon}\n              padding={2}\n              text={operators[selectedOperatorType].label}\n            />\n          }\n          id=\"operators\"\n          menu={\n            <Menu>\n              {facet.operatorTypes.map((operatorType, index) => {\n                if (operatorType) {\n                  const selected = operatorType === selectedOperatorType\n                  return (\n                    <MenuItem\n                      disabled={selected}\n                      fontSize={1}\n                      key={operatorType}\n                      onClick={() => handleOperatorItemClick(operatorType)}\n                      padding={2}\n                      text={operators[operatorType].label}\n                    />\n                  )\n                }\n\n                return <MenuDivider key={index} />\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n\n      {/* Value */}\n      <Box marginX={1} style={{maxWidth: '50px'}}>\n        <TextInputNumber\n          fontSize={1}\n          onValueChange={handleValueChange}\n          padding={2}\n          radius={2}\n          width={2}\n          value={facet?.value}\n        />\n      </Box>\n\n      {/* Modifiers */}\n      {modifiers && (\n        <MenuButton\n          button={\n            <Button\n              fontSize={1}\n              iconRight={SelectIcon}\n              padding={2}\n              text={selectedModifier?.title}\n            />\n          }\n          id=\"modifier\"\n          menu={\n            <Menu>\n              {modifiers.map((modifier) => {\n                const selected = modifier.name === facet.modifier\n                return (\n                  <MenuItem\n                    disabled={selected}\n                    fontSize={1}\n                    key={modifier.name}\n                    onClick={() => handleModifierClick(modifier)}\n                    padding={2}\n                    text={modifier.title}\n                  />\n                )\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n    </SearchFacet>\n  )\n}\n\nexport default SearchFacetNumber\n","import {SelectIcon} from '@sanity/icons/Select'\nimport {Box, Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport {searchActions} from '../../modules/search'\nimport type {\n  SearchFacetInputSelectListItemProps,\n  SearchFacetInputSelectProps,\n  SearchFacetOperatorType,\n  WithId,\n} from '../../types'\nimport SearchFacet from '../SearchFacet'\n\ntype Props = {\n  facet: WithId<SearchFacetInputSelectProps>\n}\n\nconst SearchFacetSelect = ({facet}: Props) => {\n  // Redux\n  const dispatch = useDispatch()\n\n  const popoverProps = usePortalPopoverProps()\n\n  const options = facet?.options\n\n  const selectedItem = options?.find((v) => v.name === facet?.value)\n\n  const handleListItemClick = (option: SearchFacetInputSelectListItemProps) => {\n    dispatch(searchActions.facetsUpdate({name: facet.name, value: option.name}))\n  }\n\n  const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n    dispatch(searchActions.facetsUpdate({name: facet.name, operatorType}))\n  }\n\n  const selectedOperatorType: SearchFacetOperatorType = facet?.operatorType ?? 'is'\n\n  return (\n    <SearchFacet facet={facet}>\n      {/* Optional operators */}\n      {facet?.operatorTypes && (\n        <MenuButton\n          button={\n            <Box marginRight={1}>\n              <Button\n                fontSize={1}\n                iconRight={SelectIcon}\n                padding={2}\n                text={operators[selectedOperatorType].label}\n              />\n            </Box>\n          }\n          id=\"operators\"\n          menu={\n            <Menu>\n              {facet.operatorTypes.map((operatorType, index) => {\n                if (operatorType) {\n                  const selected = operatorType === selectedOperatorType\n                  return (\n                    <MenuItem\n                      disabled={selected}\n                      fontSize={1}\n                      key={operatorType}\n                      onClick={() => handleOperatorItemClick(operatorType)}\n                      padding={2}\n                      text={operators[operatorType].label}\n                    />\n                  )\n                }\n\n                return <MenuDivider key={index} />\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n\n      {/* List */}\n      <MenuButton\n        button={\n          <Button fontSize={1} iconRight={SelectIcon} padding={2} text={selectedItem?.title} />\n        }\n        id=\"list\"\n        menu={\n          <Menu>\n            {options?.map((item) => {\n              const selected = item.name === selectedItem?.name\n              return (\n                <MenuItem\n                  disabled={selected}\n                  fontSize={1}\n                  key={item.name}\n                  onClick={() => handleListItemClick(item)}\n                  padding={2}\n                  text={item.title}\n                />\n              )\n            })}\n          </Menu>\n        }\n        popover={popoverProps}\n      />\n    </SearchFacet>\n  )\n}\n\nexport default SearchFacetSelect\n","import {SelectIcon} from '@sanity/icons/Select'\nimport {Box, Button, Menu, MenuButton, MenuDivider, MenuItem, TextInput} from '@sanity/ui'\nimport {type ChangeEvent} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport {searchActions} from '../../modules/search'\nimport type {SearchFacetInputStringProps, SearchFacetOperatorType, WithId} from '../../types'\nimport SearchFacet from '../SearchFacet'\n\ntype Props = {\n  facet: WithId<SearchFacetInputStringProps>\n}\n\nconst SearchFacetString = ({facet}: Props) => {\n  // Redux\n  const dispatch = useDispatch()\n\n  const popoverProps = usePortalPopoverProps()\n\n  const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, operatorType}))\n  }\n\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, value: e.target.value}))\n  }\n\n  const selectedOperatorType: SearchFacetOperatorType = facet.operatorType\n\n  return (\n    <SearchFacet facet={facet}>\n      {/* Optional operators */}\n      {facet?.operatorTypes && (\n        <MenuButton\n          button={\n            <Button\n              fontSize={1}\n              iconRight={SelectIcon}\n              padding={2}\n              text={operators[selectedOperatorType].label}\n            />\n          }\n          id=\"operators\"\n          menu={\n            <Menu>\n              {facet.operatorTypes.map((operatorType, index) => {\n                if (operatorType) {\n                  const selected = operatorType === selectedOperatorType\n                  return (\n                    <MenuItem\n                      disabled={selected}\n                      fontSize={1}\n                      key={operatorType}\n                      onClick={() => handleOperatorItemClick(operatorType)}\n                      padding={2}\n                      text={operators[operatorType].label}\n                    />\n                  )\n                }\n\n                return <MenuDivider key={index} />\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n\n      {/* Value */}\n      {!operators[selectedOperatorType].hideInput && (\n        <Box marginLeft={1} style={{maxWidth: '125px'}}>\n          <TextInput\n            fontSize={1}\n            onChange={handleChange}\n            padding={2}\n            radius={2}\n            width={2}\n            value={facet?.value}\n          />\n        </Box>\n      )}\n    </SearchFacet>\n  )\n}\n\nexport default SearchFacetString\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Card, rem, studioTheme, Text, type ThemeColorSchemeKey} from '@sanity/ui'\nimport {components, type StylesConfig} from 'react-select'\nimport {Virtuoso} from 'react-virtuoso'\n\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\nconst {\n  fonts: {\n    text: {sizes: themeTextSizes},\n  },\n  radius: themeRadius,\n  space: themeSpace,\n} = studioTheme\n\nexport const reactSelectStyles = (scheme: ThemeColorSchemeKey): StylesConfig => {\n  return {\n    control: (styles, {isDisabled, isFocused}) => {\n      let boxShadow = `inset 0 0 0 1px var(--card-border-color)`\n      if (isFocused) {\n        boxShadow = `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputEnabledBorder')},\n        0 0 0 1px ${getSchemeColor(scheme, 'bg2')},\n        0 0 0 3px var(--card-focus-ring-color) !important`\n      }\n\n      return {\n        ...styles,\n        'backgroundColor': 'var(--card-bg-color)',\n        'color': 'inherit',\n        'border': 'none',\n        'borderRadius': themeRadius[2],\n        boxShadow,\n        'fontSize': themeTextSizes[1]!.fontSize,\n        'minHeight': '25px',\n        'opacity': isDisabled ? 0.5 : 'inherit',\n        'outline': 'none',\n        'transition': 'none',\n        '&:hover': {\n          boxShadow: `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputHoveredBorder')}`,\n        },\n      }\n    },\n    input: (styles) => ({\n      ...styles,\n      color: 'var(--card-fg-color)',\n      fontFamily: studioTheme.fonts.text.family,\n      fontSize: themeTextSizes[1]!.fontSize,\n      marginLeft: rem(themeSpace[2]!),\n    }),\n    menuList: (styles) => ({\n      ...styles,\n      padding: 0,\n    }),\n    noOptionsMessage: (styles) => ({\n      ...styles,\n      fontFamily: studioTheme.fonts.text.family,\n      fontSize: themeTextSizes[1]!.fontSize,\n      lineHeight: '1em',\n    }),\n    option: (styles, {isFocused}) => ({\n      ...styles,\n      'backgroundColor': isFocused ? getSchemeColor(scheme, 'spotBlue') : 'transparent',\n      'borderRadius': themeRadius[2],\n      'color': isFocused ? getSchemeColor(scheme, 'bg') : 'inherit',\n      'fontSize': themeTextSizes[1]!.fontSize,\n      'lineHeight': '1em',\n      'margin': 0,\n      'padding': rem(themeSpace[1]!),\n      '&:hover': {\n        backgroundColor: getSchemeColor(scheme, 'spotBlue'),\n        color: getSchemeColor(scheme, 'bg'),\n      },\n    }),\n    placeholder: (styles) => ({\n      ...styles,\n      fontSize: themeTextSizes[1]!.fontSize,\n      marginLeft: rem(themeSpace[2]!),\n      paddingLeft: 0,\n    }),\n    singleValue: (styles) => ({\n      ...styles,\n      alignItems: 'center',\n      display: 'inline-flex',\n      height: '100%',\n      marginLeft: rem(themeSpace[2]!),\n    }),\n    valueContainer: (styles) => ({\n      ...styles,\n      margin: 0,\n      padding: 0,\n    }),\n  }\n}\n\nconst ClearIndicator = (props: any) => {\n  return (\n    <components.ClearIndicator {...props}>\n      <Box\n        paddingRight={1}\n        style={{\n          transform: 'scale(0.85)',\n        }}\n      >\n        <Text muted size={0}>\n          <CloseIcon />\n        </Text>\n      </Box>\n    </components.ClearIndicator>\n  )\n}\n\nconst Menu = (props: any) => {\n  return (\n    <components.Menu {...props}>\n      <Card radius={1} shadow={2}>\n        {props.children}\n      </Card>\n    </components.Menu>\n  )\n}\n\nconst MenuList = (props: any) => {\n  const {children} = props\n\n  const MAX_ROWS = 5\n  const OPTION_HEIGHT = 33\n\n  if (Array.isArray(children)) {\n    const height =\n      children.length > MAX_ROWS ? OPTION_HEIGHT * MAX_ROWS : children.length * OPTION_HEIGHT\n\n    return (\n      <Virtuoso\n        className=\"media__custom-scrollbar\"\n        itemContent={(index) => {\n          const item = children[index]\n          return <Option {...item.props} />\n        }}\n        style={{height}}\n        totalCount={children.length}\n      />\n    )\n  }\n  return <components.MenuList {...props}>{children}</components.MenuList>\n}\n\nconst NoOptionsMessage = (props: any) => {\n  return <components.NoOptionsMessage {...props}>{props.children}</components.NoOptionsMessage>\n}\n\nconst Option = (props: any) => {\n  return (\n    <Box padding={1}>\n      <components.Option {...props}>\n        <Box paddingY={1}>\n          <Text size={1} style={{color: 'inherit'}} textOverflow=\"ellipsis\">\n            {props.children}\n          </Text>\n        </Box>\n      </components.Option>\n    </Box>\n  )\n}\n\nconst SingleValue = (props: any) => {\n  return (\n    <components.SingleValue {...props}>\n      <Text size={1} textOverflow=\"ellipsis\">\n        {props.children}\n      </Text>\n    </components.SingleValue>\n  )\n}\n\nexport const reactSelectComponents = {\n  ClearIndicator,\n  DropdownIndicator: null,\n  IndicatorSeparator: null,\n  Menu,\n  MenuList,\n  NoOptionsMessage,\n  Option,\n  SingleValue,\n}\n","import {SelectIcon} from '@sanity/icons/Select'\nimport {Box, Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\nimport Select from 'react-select'\nimport {useColorSchemeValue} from 'sanity'\n\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {searchActions} from '../../modules/search'\nimport {selectTags} from '../../modules/tags'\nimport {reactSelectComponents, reactSelectStyles} from '../../styled/react-select/single'\nimport type {\n  TagSelectOption,\n  SearchFacetInputSearchableProps,\n  SearchFacetOperatorType,\n  WithId,\n} from '../../types'\nimport getTagSelectOptions from '../../utils/getTagSelectOptions'\nimport SearchFacet from '../SearchFacet'\n\ntype Props = {\n  facet: WithId<SearchFacetInputSearchableProps>\n}\n\nconst SearchFacetTags = ({facet}: Props) => {\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const tags = useTypedSelector((state) => selectTags(state))\n  const tagsFetching = useTypedSelector((state) => state.tags.fetching)\n  const allTagOptions = getTagSelectOptions(tags)\n\n  const popoverProps = usePortalPopoverProps()\n\n  const handleChange = (option: TagSelectOption) => {\n    dispatch(\n      searchActions.facetsUpdateById({\n        id: facet.id,\n        value: option,\n      }),\n    )\n  }\n\n  const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n    dispatch(\n      searchActions.facetsUpdateById({\n        id: facet.id,\n        operatorType,\n      }),\n    )\n  }\n\n  const selectedOperatorType: SearchFacetOperatorType = facet.operatorType\n\n  return (\n    <SearchFacet facet={facet}>\n      {/* Optional operators */}\n      {facet?.operatorTypes && (\n        <MenuButton\n          button={\n            <Button\n              fontSize={1}\n              iconRight={SelectIcon}\n              padding={2}\n              text={operators[selectedOperatorType].label}\n            />\n          }\n          id=\"operators\"\n          menu={\n            <Menu>\n              {facet.operatorTypes.map((operatorType, index) => {\n                if (operatorType) {\n                  const selected = operatorType === selectedOperatorType\n                  return (\n                    <MenuItem\n                      disabled={selected}\n                      fontSize={1}\n                      key={operatorType}\n                      onClick={() => handleOperatorItemClick(operatorType)}\n                      padding={2}\n                      space={4}\n                      style={{minWidth: '150px'}}\n                      text={operators[operatorType].label}\n                    />\n                  )\n                }\n\n                return <MenuDivider key={index} />\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n\n      {/* Value */}\n      {!operators[selectedOperatorType].hideInput && (\n        <Box marginX={1} style={{width: '160px'}}>\n          <Select\n            components={reactSelectComponents}\n            instanceId=\"facet-searchable\"\n            isClearable\n            isDisabled={tagsFetching}\n            isSearchable\n            name=\"tags\"\n            noOptionsMessage={() => 'No tags'}\n            onChange={(value: any) => handleChange(value as TagSelectOption)}\n            options={allTagOptions}\n            placeholder={tagsFetching ? 'Loading...' : 'Select...'}\n            styles={reactSelectStyles(scheme)}\n            value={facet?.value}\n          />\n        </Box>\n      )}\n    </SearchFacet>\n  )\n}\n\nexport default SearchFacetTags\n","import {Box, Flex, Inline, rem, type Theme} from '@sanity/ui'\nimport {styled, css} from 'styled-components'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport SearchFacetNumber from '../SearchFacetNumber'\nimport SearchFacetSelect from '../SearchFacetSelect'\nimport SearchFacetString from '../SearchFacetString'\nimport SearchFacetTags from '../SearchFacetTags'\n\ntype Props = {\n  layout?: 'inline' | 'stack'\n}\n\nconst StackContainer = styled(Flex)(({theme}: {theme: Theme}) => {\n  return css`\n    > * {\n      margin-bottom: ${rem(theme.sanity.space[2]!)};\n    }\n  `\n})\n\nconst SearchFacets = (props: Props) => {\n  const {layout = 'inline'} = props\n\n  // Redux\n  const searchFacets = useTypedSelector((state) => state.search.facets)\n\n  const Items = searchFacets.map((facet) => {\n    const key = facet.id\n    if (facet.type === 'number') {\n      return <SearchFacetNumber facet={facet} key={key} />\n    }\n\n    if (facet.type === 'searchable') {\n      return <SearchFacetTags facet={facet} key={key} />\n    }\n\n    if (facet.type === 'select') {\n      return <SearchFacetSelect facet={facet} key={key} />\n    }\n\n    if (facet.type === 'string') {\n      return <SearchFacetString facet={facet} key={key} />\n    }\n\n    return null\n  })\n\n  if (layout === 'inline') {\n    if (searchFacets.length === 0) {\n      return null\n    }\n\n    return (\n      <Box marginBottom={2}>\n        <Inline space={2}>{Items}</Inline>\n      </Box>\n    )\n  }\n\n  if (layout === 'stack') {\n    return (\n      <StackContainer align=\"flex-start\" direction=\"column\">\n        {Items}\n      </StackContainer>\n    )\n  }\n\n  throw Error('Invalid layout')\n}\n\nexport default SearchFacets\n","import {type PropsWithChildren, createContext, useContext, useMemo} from 'react'\nimport type {DropzoneOptions} from 'react-dropzone'\n\nimport type {MediaToolOptions, Locale} from '../types'\n\ntype ContextProps = {\n  dropzone: Pick<DropzoneOptions, 'maxSize'>\n  components: MediaToolOptions['components']\n  createTagsOnUpload: boolean\n  creditLine: MediaToolOptions['creditLine']\n  directUploads: MediaToolOptions['directUploads']\n  locales?: Locale[]\n}\n\nconst ToolOptionsContext = createContext<ContextProps | null>(null)\n\ntype Props = {\n  options?: MediaToolOptions | void\n}\n\nexport const ToolOptionsProvider = ({options, children}: PropsWithChildren<Props>) => {\n  // oxlint-disable-next-line react-compiler\n  const value = useMemo<ContextProps>(() => {\n    let creditLineExcludeSources\n\n    if (options?.creditLine?.excludeSources) {\n      creditLineExcludeSources = Array.isArray(options?.creditLine?.excludeSources)\n        ? options.creditLine.excludeSources\n        : [options?.creditLine?.excludeSources]\n    }\n\n    return {\n      dropzone: {maxSize: options?.maximumUploadSize},\n      components: {\n        details: options?.components?.details,\n      },\n      createTagsOnUpload: options?.createTagsOnUpload ?? true,\n      creditLine: {\n        enabled: options?.creditLine?.enabled || false,\n        excludeSources: creditLineExcludeSources,\n      },\n      directUploads: options?.directUploads ?? true,\n      locales: options?.locales,\n    }\n  }, [\n    options?.creditLine?.enabled,\n    options?.components,\n    options?.createTagsOnUpload,\n    options?.creditLine?.excludeSources,\n    options?.maximumUploadSize,\n    options?.directUploads,\n    options?.locales,\n  ])\n\n  return <ToolOptionsContext.Provider value={value}>{children}</ToolOptionsContext.Provider>\n}\n\nexport const useToolOptions = () => {\n  const context = useContext(ToolOptionsContext)\n\n  if (!context) {\n    throw new Error('useToolOptions must be used within an ToolOptionsProvider')\n  }\n\n  return context\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {Button, Flex, Menu, MenuButton, MenuDivider, MenuGroup, MenuItem} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport {FACETS} from '../../constants'\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {searchActions} from '../../modules/search'\nimport type {SearchFacetDivider, SearchFacetGroup, SearchFacetInputProps} from '../../types'\n\nconst SearchFacetsControl = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const assetTypes = useTypedSelector((state) => state.assets.assetTypes)\n  const searchFacets = useTypedSelector((state) => state.search.facets)\n  const selectedDocument = useTypedSelector((state) => state.selected.document)\n\n  const popoverProps = usePortalPopoverProps()\n\n  const {creditLine} = useToolOptions()\n\n  const isTool = !selectedDocument\n\n  const filteredFacets = FACETS\n    // Filter facets based on current context, whether it's invoked as a tool, or via selection through via custom asset source.\n    .filter((facet) => {\n      // Remove credit line filter if it's not enabled\n      if (!creditLine?.enabled && facet?.type === 'string' && facet?.name === 'creditLine') {\n        return false\n      }\n\n      if (facet.type === 'group' || facet.type === 'divider') {\n        return true\n      }\n\n      if (isTool) {\n        return !facet?.selectOnly\n      }\n\n      const matchingAssetTypes = facet.assetTypes.filter((assetType) =>\n        assetTypes.includes(assetType),\n      )\n      return matchingAssetTypes.length > 0\n    })\n    // Remove adjacent and leading / trailing dividers\n    .filter((facet, index, facets) => {\n      const previousFacet = facets[index - 1]\n      // Ignore leading + trailing dividers\n      if (facet.type === 'divider' && (index === 0 || index === facets.length - 1)) {\n        return false\n      }\n      // Ignore adjacent dividers\n      if (facet.type === 'divider' && previousFacet?.type === 'divider') {\n        return false\n      }\n      return true\n    })\n\n  const hasSearchFacets = filteredFacets.length > 0\n\n  const renderMenuFacets = (\n    facets: (SearchFacetDivider | SearchFacetGroup | SearchFacetInputProps)[],\n    level: number = 0,\n  ) => {\n    return (\n      <>\n        {facets?.map((facet, index) => {\n          if (facet.type === 'divider') {\n            return <MenuDivider key={index} />\n          }\n\n          // Recursively render menu facets\n          if (facet.type === 'group') {\n            return (\n              <MenuGroup key={`group-${level}-${index}`} text={facet.title} title={facet.title}>\n                {renderMenuFacets(facet.facets, level + 1)}\n              </MenuGroup>\n            )\n          }\n\n          if (facet) {\n            const disabled =\n              !facet.operatorTypes && !!searchFacets.find((v) => v.name === facet.name)\n\n            return (\n              <MenuItem\n                disabled={disabled}\n                fontSize={1}\n                key={facet.name}\n                onClick={() => dispatch(searchActions.facetsAdd({facet}))}\n                padding={2}\n                text={facet.title}\n              />\n            )\n          }\n\n          return null\n        })}\n      </>\n    )\n  }\n\n  return (\n    <Flex>\n      {/* Add filter button */}\n      <MenuButton\n        button={\n          <Button\n            disabled={!hasSearchFacets}\n            fontSize={1}\n            icon={AddIcon}\n            mode=\"bleed\"\n            space={2}\n            text=\"Add filter\"\n            tone=\"primary\"\n          />\n        }\n        id=\"facets\"\n        menu={<Menu>{renderMenuFacets(filteredFacets)}</Menu>}\n        popover={{\n          ...popoverProps,\n          placement: 'right-start',\n        }}\n      />\n\n      {/* Clear facets button */}\n      {searchFacets.length > 0 && (\n        <Button\n          fontSize={1}\n          mode=\"bleed\"\n          onClick={() => dispatch(searchActions.facetsClear())}\n          text=\"Clear\"\n        />\n      )}\n    </Flex>\n  )\n}\n\nexport default SearchFacetsControl\n","const TagIcon = () => (\n  <svg\n    data-sanity-icon=\"media__tag\" // For icon usage with @sanity/ui <Button />\n    fill=\"currentColor\"\n    height=\"1em\"\n    stroke=\"currentColor\"\n    strokeWidth=\"0\"\n    viewBox=\"0 0 512 512\"\n    width=\"1em\"\n  >\n    <path\n      d=\"M435.25 48h-122.9a14.46 14.46 0 00-10.2 4.2L56.45 297.9a28.85 28.85 0 000 40.7l117 117a28.85 28.85 0 0040.7 0L459.75 210a14.46 14.46 0 004.2-10.2v-123a28.66 28.66 0 00-28.7-28.8z\"\n      fill=\"none\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"32\"\n    />\n    <path d=\"M384 160a32 32 0 1132-32 32 32 0 01-32 32z\" />\n  </svg>\n)\n\nexport default TagIcon\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {SearchIcon} from '@sanity/icons/Search'\nimport {Box, Flex, TextInput} from '@sanity/ui'\nimport {type ChangeEvent} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {searchActions} from '../../modules/search'\n\nconst TextInputSearch = () => {\n  // Redux\n  const searchQuery = useTypedSelector((state) => state.search.query)\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    dispatch(searchActions.querySet({searchQuery: e.currentTarget.value}))\n  }\n\n  const handleClear = () => {\n    dispatch(searchActions.querySet({searchQuery: ''}))\n  }\n\n  return (\n    <Box style={{position: 'relative'}}>\n      <TextInput\n        fontSize={1}\n        icon={SearchIcon}\n        onChange={handleChange}\n        placeholder=\"Search\"\n        radius={2}\n        value={searchQuery}\n      />\n\n      {/* Clear form button */}\n      {searchQuery.length > 0 && (\n        <Flex\n          align=\"center\"\n          justify=\"center\"\n          onClick={handleClear}\n          style={{\n            cursor: 'pointer',\n            height: '100%',\n            opacity: 0.75,\n            position: 'absolute',\n            right: 0,\n            top: 0,\n            width: '2em',\n            zIndex: 1, // force stacking context\n          }}\n        >\n          <CloseIcon />\n        </Flex>\n      )}\n    </Box>\n  )\n}\n\nexport default TextInputSearch\n","import {Box, Button, Flex, Inline, useMediaIndex} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {dialogActions} from '../../modules/dialog'\nimport {tagsActions} from '../../modules/tags'\nimport ButtonViewGroup from '../ButtonViewGroup'\nimport OrderSelect from '../OrderSelect'\nimport Progress from '../Progress'\nimport SearchFacets from '../SearchFacets'\nimport SearchFacetsControl from '../SearchFacetsControl'\nimport TagIcon from '../TagIcon'\nimport TextInputSearch from '../TextInputSearch'\n\nconst Controls = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const fetching = useTypedSelector((state) => state.assets.fetching)\n  const pageIndex = useTypedSelector((state) => state.assets.pageIndex)\n  const searchFacets = useTypedSelector((state) => state.search.facets)\n  const tagsPanelVisible = useTypedSelector((state) => state.tags.panelVisible)\n\n  const mediaIndex = useMediaIndex()\n\n  // Callbacks\n  const handleShowSearchFacetDialog = () => {\n    dispatch(dialogActions.showSearchFacets())\n  }\n\n  const handleShowTagsDialog = () => {\n    dispatch(dialogActions.showTags())\n  }\n\n  const toggleTagsPanelToggle = () => {\n    dispatch(tagsActions.panelVisibleSet({panelVisible: !tagsPanelVisible}))\n  }\n\n  return (\n    <Box\n      paddingY={2}\n      style={{\n        borderBottom: '1px solid var(--card-border-color)',\n        zIndex: 2,\n      }}\n    >\n      {/* Rows: search / filters / orders  */}\n      <Box marginBottom={2}>\n        <Flex\n          align=\"flex-start\"\n          direction={['column', 'column', 'column', 'column', 'row']}\n          justify=\"space-between\"\n        >\n          {/* Search + Filters */}\n          <Flex\n            flex={1}\n            style={{\n              alignItems: 'flex-start',\n              flex: 1,\n              height: '100%',\n              justifyContent: mediaIndex < 2 ? 'space-between' : 'flex-start',\n              position: 'relative',\n              width: '100%',\n            }}\n          >\n            <Box marginX={2} style={{minWidth: '200px'}}>\n              {/* Search */}\n              <TextInputSearch />\n            </Box>\n\n            <Box display={['none', 'none', 'block']}>\n              <SearchFacets />\n\n              {/* Search Facets Control (add / clear) */}\n              <SearchFacetsControl />\n            </Box>\n\n            <Box display={['block', 'block', 'none']} marginX={2}>\n              <Inline space={2} style={{whiteSpace: 'nowrap'}}>\n                {/* Filters button (small) */}\n                <Button\n                  fontSize={1}\n                  mode=\"ghost\"\n                  onClick={handleShowSearchFacetDialog}\n                  text={`Filters${searchFacets.length > 0 ? ` (${searchFacets.length})` : ''}`}\n                  tone=\"primary\"\n                />\n\n                {/* Tags button (small) */}\n                <Button\n                  fontSize={1}\n                  mode=\"ghost\"\n                  onClick={handleShowTagsDialog}\n                  text={`Tags`}\n                  tone=\"primary\"\n                />\n              </Inline>\n            </Box>\n          </Flex>\n        </Flex>\n      </Box>\n\n      <Box>\n        <Flex align=\"center\" justify={['space-between']}>\n          {/* Views */}\n          <Box marginX={2}>\n            <ButtonViewGroup />\n          </Box>\n\n          <Flex marginX={2}>\n            {/* Orders */}\n            <OrderSelect />\n            {/* Tags panel toggle */}\n            <Box display={['none', 'none', 'block']} marginLeft={2}>\n              <Button\n                fontSize={1}\n                icon={\n                  <Box style={{transform: 'scale(0.75)'}}>\n                    <TagIcon />\n                  </Box>\n                }\n                onClick={toggleTagsPanelToggle}\n                mode={tagsPanelVisible ? 'default' : 'ghost'}\n                text={tagsPanelVisible ? 'Tags' : ''}\n              />\n            </Box>\n          </Flex>\n        </Flex>\n      </Box>\n\n      {/* Progress bar */}\n      <Progress key={pageIndex} loading={fetching} />\n    </Box>\n  )\n}\n\nexport default Controls\n","import {type PayloadAction, createSlice} from '@reduxjs/toolkit'\n\ntype DebugReducerState = {\n  badConnection: boolean\n  enabled: boolean\n}\n\nconst initialState = {\n  badConnection: false,\n  enabled: false,\n} as DebugReducerState\n\nconst debugSlice = createSlice({\n  name: 'debug',\n  initialState,\n  reducers: {\n    setBadConnection(state, action: PayloadAction<boolean>) {\n      state.badConnection = action.payload\n    },\n    toggleEnabled(state) {\n      state.enabled = !state.enabled\n    },\n  },\n})\n\nexport const debugActions = {...debugSlice.actions}\n\nexport default debugSlice.reducer\n","import {PlugIcon} from '@sanity/icons/Plug'\nimport {Box, Flex, Switch, Text, Tooltip} from '@sanity/ui'\nimport {type ChangeEvent} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {debugActions} from '../../modules/debug'\n\nconst DebugControls = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const badConnection = useTypedSelector((state) => state.debug.badConnection)\n  const debugEnabled = useTypedSelector((state) => state.debug.enabled)\n\n  // Callbacks\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    const checked = e.target.checked\n\n    dispatch(debugActions.setBadConnection(checked))\n  }\n\n  const handleToggleControls = () => {\n    dispatch(debugActions.toggleEnabled())\n  }\n\n  // Close on escape key press\n  useKeyPress('alt+ctrl+shift+/', handleToggleControls)\n\n  if (!debugEnabled) {\n    return null\n  }\n\n  return (\n    <Box\n      padding={4}\n      style={{\n        bottom: 0,\n        left: 0,\n        pointerEvents: 'none',\n        position: 'fixed',\n        width: '100%',\n      }}\n    >\n      {/* Bad connection toggle */}\n      <Flex align=\"center\">\n        <Box marginRight={3}>\n          <Text muted size={1}>\n            <PlugIcon />\n          </Text>\n        </Box>\n        <Tooltip\n          animate\n          content={\n            <Box padding={2}>\n              <Text muted size={1}>\n                {badConnection\n                  ? 'Bad connection: +3000ms & 50% chance to fail'\n                  : 'No connection throttling'}\n              </Text>\n            </Box>\n          }\n          fallbackPlacements={['right', 'left']}\n          placement=\"bottom\"\n          portal\n        >\n          <Switch\n            checked={badConnection}\n            onChange={handleChange}\n            style={{\n              pointerEvents: 'auto',\n            }}\n          />\n        </Tooltip>\n      </Flex>\n    </Box>\n  )\n}\n\nexport default DebugControls\n","import * as z from 'zod'\n\n// Helper to generate localized string schema\nfunction localizedStringSchema(locales?: {id: string}[]) {\n  if (!locales || locales.length === 0) {\n    return z.string().trim().optional()\n  }\n  const shape: Record<string, z.ZodTypeAny> = {}\n  for (const locale of locales) {\n    shape[locale.id] = z.string().trim().optional()\n  }\n  return z.object(shape).passthrough()\n}\n\nexport const tagOptionSchema = z.object({\n  label: z.string().trim().min(1, {message: 'Label cannot be empty'}),\n  value: z.string().trim().min(1, {message: 'Value cannot be empty'}),\n})\n\nexport function getAssetFormSchema(locales?: {id: string}[]) {\n  return z.object({\n    altText: localizedStringSchema(locales),\n    creditLine: localizedStringSchema(locales),\n    description: localizedStringSchema(locales),\n    opt: z.object({\n      media: z.object({\n        tags: z.array(tagOptionSchema).nullable(),\n      }),\n    }),\n    originalFilename: z.string().trim().min(1, {message: 'Filename cannot be empty'}),\n    title: localizedStringSchema(locales),\n  })\n}\n\nexport const assetFormSchema = getAssetFormSchema()\n\nexport const tagFormSchema = z.object({\n  name: z.string().min(1, {message: 'Name cannot be empty'}),\n})\n","import type {SanityDocument} from '@sanity/client'\n\nexport function getUniqueDocuments(documents: SanityDocument[]): SanityDocument[] {\n  const draftIds = documents.reduce(\n    (acc: string[], doc: SanityDocument) =>\n      doc._id.startsWith('drafts.') ? acc.concat(doc._id.slice(7)) : acc,\n    [],\n  )\n\n  const filteredDocuments: SanityDocument[] = documents.filter(\n    (doc: SanityDocument) => !draftIds.includes(doc._id),\n  )\n\n  return filteredDocuments\n}\n","import type {ImageAsset} from '../types'\n\nconst imageDprUrl = (\n  asset: ImageAsset,\n  options: {\n    width: number\n    height?: number\n  },\n): string => {\n  const dpi =\n    typeof window === 'undefined' || !window.devicePixelRatio\n      ? 1\n      : Math.round(window.devicePixelRatio)\n  const imgH = options?.height ? options?.height * Math.max(1, dpi) : undefined\n  const imgW = options.width * Math.max(1, dpi)\n\n  const urlParams = new URLSearchParams()\n  urlParams.append('fit', 'max')\n  urlParams.append('w', imgW.toString())\n  if (imgH) {\n    urlParams.append('h', imgH.toString())\n  }\n\n  return `${asset.url}?${urlParams.toString()}`\n}\n\nexport default imageDprUrl\n","// Recursively sanitize form data:\n// - convert empty strings, undefined values and empty arrays to null (to correctly unset / delete fields)\n// - trim whitespace on string fleids\n\ntype FormData = Record<string, any>\n\nconst sanitizeFormData = (formData: FormData): FormData => {\n  return Object.keys(formData).reduce((acc: FormData, key) => {\n    const val = formData[key]\n\n    // TODO: refactor\n    if (typeof val === 'object' && val !== null && val.constructor !== Array) {\n      acc[key] = sanitizeFormData(val)\n    } else if (val === '' || typeof val === 'undefined' || val?.length === 0) {\n      acc[key] = null\n    } else if (typeof val === 'string' && val) {\n      acc[key] = formData[key].trim()\n    } else {\n      acc[key] = formData[key]\n    }\n\n    return acc\n  }, {})\n}\n\nexport default sanitizeFormData\n","import type {Asset, FileAsset, ImageAsset} from '../types'\n\nexport const isFileAsset = (asset: Asset): asset is FileAsset => {\n  return (asset as FileAsset)._type === 'sanity.fileAsset'\n}\n\nexport const isImageAsset = (asset: Asset): asset is ImageAsset => {\n  return (asset as ImageAsset)._type === 'sanity.imageAsset'\n}\n","import {zodResolver} from '@hookform/resolvers/zod'\nimport type {FieldValues, Resolver} from 'react-hook-form'\n\n/**\n * `@hookform/resolvers/zod` resolves its own `zod` typings through dependency\n * hoisting, which in this monorepo lands on zod v4, while this plugin authors its\n * form schemas with zod v3. The resolver accepts v3 schema instances correctly at\n * runtime, so this thin wrapper only bridges the type-only v3/v4 mismatch. The\n * react-hook-form field types stay fully checked at the call sites.\n */\nexport default function zodFormResolver<TFieldValues extends FieldValues>(\n  schema: unknown,\n): Resolver<TFieldValues> {\n  return zodResolver(\n    schema as Parameters<typeof zodResolver>[0],\n  ) as unknown as Resolver<TFieldValues>\n}\n","import type {ImageAsset} from '../types'\n\nconst getAssetResolution = (asset: ImageAsset) => {\n  return `${asset.metadata.dimensions.width}x${asset.metadata.dimensions.height}px`\n}\n\nexport default getAssetResolution\n","import {ClipboardIcon} from '@sanity/icons/Clipboard'\nimport {Button, Popover, Text} from '@sanity/ui'\nimport copy from 'copy-to-clipboard'\nimport {useEffect, useRef, useState} from 'react'\n\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\n\ntype Props = {\n  disabled?: boolean\n  url: string\n}\n\nconst ButtonAssetCopy = ({disabled, url}: Props) => {\n  const popoverProps = usePortalPopoverProps()\n  const refPopoverTimeout = useRef<ReturnType<typeof window.setTimeout>>(null)\n  const [popoverVisible, setPopoverVisible] = useState(false)\n\n  const handleClick = () => {\n    if (refPopoverTimeout.current) {\n      clearTimeout(refPopoverTimeout.current)\n    }\n\n    setPopoverVisible(true)\n    copy(url)\n\n    refPopoverTimeout.current = setTimeout(() => {\n      setPopoverVisible(false)\n    }, 1250)\n  }\n\n  // Effects\n  useEffect(() => {\n    return () => {\n      if (refPopoverTimeout.current) {\n        clearTimeout(refPopoverTimeout.current)\n      }\n    }\n  }, [])\n\n  return (\n    <Popover\n      content={\n        <Text muted size={1}>\n          Copied!\n        </Text>\n      }\n      open={popoverVisible}\n      padding={2}\n      placement=\"top\"\n      radius={1}\n      {...popoverProps}\n    >\n      <Button\n        disabled={disabled}\n        fontSize={1}\n        icon={ClipboardIcon}\n        mode=\"ghost\"\n        onClick={handleClick}\n        text=\"Copy URL\"\n      />\n    </Popover>\n  )\n}\n\nexport default ButtonAssetCopy\n","import {DownloadIcon} from '@sanity/icons/Download'\nimport {Box, Button, Flex, Inline, Stack, Text} from '@sanity/ui'\nimport {format} from 'date-fns'\nimport filesize from 'filesize'\nimport {type ReactNode} from 'react'\n\nimport type {Asset, AssetItem} from '../../types'\nimport getAssetResolution from '../../utils/getAssetResolution'\nimport {isImageAsset} from '../../utils/typeGuards'\nimport ButtonAssetCopy from '../ButtonAssetCopy'\n\ntype Props = {\n  asset: Asset\n  item?: AssetItem\n}\n\nconst Row = ({label, value}: {label: string; value: ReactNode}) => {\n  return (\n    <Flex justify=\"space-between\">\n      <Text\n        size={1}\n        style={{\n          opacity: 0.8,\n          width: '40%',\n        }}\n        textOverflow=\"ellipsis\"\n      >\n        {label}\n      </Text>\n      <Text\n        size={1}\n        style={{\n          opacity: 0.4,\n          textAlign: 'right',\n          width: '60%',\n        }}\n        textOverflow=\"ellipsis\"\n      >\n        {value}\n      </Text>\n    </Flex>\n  )\n}\n\nconst AssetMetadata = (props: Props) => {\n  const {asset, item} = props\n\n  const exif = asset?.metadata?.exif\n\n  // Callbacks\n  const handleDownload = () => {\n    window.location.href = `${asset.url}?dl=${asset.originalFilename}`\n  }\n\n  return (\n    <Box marginTop={3}>\n      {/* Base */}\n      <Box>\n        <Stack space={3}>\n          <Row label=\"Size\" value={filesize(asset?.size, {base: 10, round: 0})} />\n          <Row label=\"MIME type\" value={asset?.mimeType} />\n          <Row label=\"Extension\" value={asset?.extension?.toUpperCase()} />\n          {isImageAsset(asset) && <Row label=\"Dimensions\" value={getAssetResolution(asset)} />}\n        </Stack>\n      </Box>\n      {/* EXIF */}\n      {exif &&\n        (exif.DateTimeOriginal ||\n          exif.FNumber ||\n          exif.FocalLength ||\n          exif.ExposureTime ||\n          exif.ISO) && (\n          <>\n            {/* Divider */}\n            <Box\n              marginY={4}\n              style={{\n                background: 'var(--card-border-color)',\n                height: '1px',\n                width: '100%',\n              }}\n            />\n            <Box>\n              <Stack space={3}>\n                {exif.ISO && <Row label=\"ISO\" value={exif.ISO} />}\n                {exif.FNumber && <Row label=\"Aperture\" value={`ƒ/${exif.FNumber}`} />}\n                {exif.FocalLength && <Row label=\"Focal length\" value={`${exif.FocalLength}mm`} />}\n                {exif.ExposureTime && (\n                  <Row label=\"Exposure time\" value={`1/${1 / exif.ExposureTime}`} />\n                )}\n                {exif.DateTimeOriginal && (\n                  <Row\n                    label=\"Original date\"\n                    value={format(new Date(exif.DateTimeOriginal), 'PPp')}\n                  />\n                )}\n              </Stack>\n            </Box>\n          </>\n        )}\n\n      {/* Asset actions */}\n      <Box marginTop={5}>\n        <Inline space={2}>\n          {/* Download */}\n          <Button\n            disabled={!item || item?.updating}\n            fontSize={1}\n            icon={DownloadIcon}\n            mode=\"ghost\"\n            onClick={handleDownload}\n            text=\"Download\"\n          />\n          {/* Copy to clipboard */}\n          <ButtonAssetCopy disabled={!item || item?.updating} url={asset.url} />\n        </Inline>\n      </Box>\n    </Box>\n  )\n}\n\nexport default AssetMetadata\n","import {Dialog as SanityDialog} from '@sanity/ui'\nimport {type ComponentProps} from 'react'\n\nconst Dialog = (props: ComponentProps<typeof SanityDialog>) => {\n  // HACK: Temporarily force fixed positioning on all @sanity/ui <Dialog /> components.\n  // The studio is currently setting absolute positioning on all root-level dialogs on the mobile breakpoint,\n  // causing unwanted scroll behaviour.\n  return <SanityDialog {...props} style={{position: 'fixed'}} />\n}\n\nexport default Dialog\n","import type {SanityDocument} from '@sanity/client'\nimport {Box, Button, Card, Stack, Text} from '@sanity/ui'\nimport {Preview, type SchemaType, useSchema} from 'sanity'\nimport {useIntentLink} from 'sanity/router'\n\ntype Props = {\n  documents: SanityDocument[]\n  isLoading: boolean\n}\n\nconst DocumentList = ({documents, isLoading}: Props) => {\n  const schema = useSchema()\n\n  if (isLoading) {\n    return (\n      <Text muted size={1}>\n        Loading...\n      </Text>\n    )\n  }\n\n  if (documents.length === 0) {\n    return (\n      <Text muted size={1}>\n        No documents are referencing this asset\n      </Text>\n    )\n  }\n\n  return (\n    <Card flex={1} marginBottom={2} padding={2} radius={2} shadow={1}>\n      <Stack space={2}>\n        {documents?.map((doc) => (\n          <ReferringDocument doc={doc} key={doc._id} schemaType={schema.get(doc._type)} />\n        ))}\n      </Stack>\n    </Card>\n  )\n}\n\nconst ReferringDocument = (props: {doc: SanityDocument; schemaType?: SchemaType}) => {\n  const {doc, schemaType} = props\n\n  const {onClick} = useIntentLink({\n    intent: 'edit',\n    params: {id: doc._id},\n  })\n\n  return schemaType ? (\n    <Button key={doc._id} mode=\"bleed\" onClick={onClick} padding={2} style={{width: '100%'}}>\n      <Preview layout=\"default\" schemaType={schemaType} value={doc} />\n    </Button>\n  ) : (\n    <Box padding={2}>\n      <Text size={1}>\n        A document of the unknown type <em>{doc._type}</em>\n      </Text>\n    </Box>\n  )\n}\n\nexport default DocumentList\n","import {Box, Flex, type Theme} from '@sanity/ui'\nimport {type MouseEvent} from 'react'\nimport {defaultStyles, FileIcon as ReactFileIcon} from 'react-file-icon'\nimport type {DefaultExtensionType} from 'react-file-icon'\nimport {styled, css} from 'styled-components'\n\ntype Props = {\n  extension?: string\n  onClick?: (e: MouseEvent) => void\n  width: string\n}\n\n// Force react-file-icon styles\nconst Container = styled(Box)(({theme}: {theme: Theme}) => {\n  return css`\n    text {\n      font-family: ${theme.sanity.fonts.text.family} !important;\n      font-size: 8px !important;\n      font-weight: 500 !important;\n    }\n  `\n})\n\nconst FileIcon = (props: Props) => {\n  const {extension, onClick, width} = props\n\n  return (\n    <Flex align=\"center\" justify=\"center\" onClick={onClick} style={{height: '100%'}}>\n      <Container style={{width}}>\n        {extension ? (\n          <ReactFileIcon\n            extension={extension}\n            {...defaultStyles[extension as DefaultExtensionType]}\n          />\n        ) : (\n          <ReactFileIcon />\n        )}\n      </Container>\n    </Flex>\n  )\n}\n\nexport default FileIcon\n","import {Flex} from '@sanity/ui'\n\nimport type {Asset} from '../../types'\nimport FileIcon from '../FileIcon'\n\ntype Props = {\n  asset: Asset\n}\n\nconst FileAssetPreview = (props: Props) => {\n  const {asset} = props\n\n  if (asset.mimeType.search('audio') === 0) {\n    return (\n      <Flex align=\"center\" justify=\"center\" style={{height: '100%'}}>\n        <audio controls src={asset.url} style={{width: '100%'}} />\n      </Flex>\n    )\n  }\n\n  if (asset.mimeType.search('video') === 0) {\n    return (\n      <video\n        controls\n        src={asset.url}\n        style={{\n          height: '100%',\n          width: '100%',\n        }}\n      />\n    )\n  }\n\n  return <FileIcon extension={asset.extension} width=\"50%\" />\n}\n\nexport default FileAssetPreview\n","import {Box, Button, Text, Tooltip} from '@sanity/ui'\nimport {format} from 'date-fns'\nimport {type ReactNode} from 'react'\n\ntype Props = {\n  disabled: boolean\n  isValid: boolean\n  lastUpdated?: string\n  onClick: () => void\n}\n\nconst FormSubmitButton = (props: Props) => {\n  const {disabled, isValid, lastUpdated, onClick} = props\n\n  let content: ReactNode\n  if (isValid) {\n    if (lastUpdated) {\n      content = (\n        <>\n          Last updated\n          <br /> {format(new Date(lastUpdated), 'PPp')}\n        </>\n      )\n    } else {\n      content = 'No unpublished changes'\n    }\n  } else {\n    content =\n      'There are validation errors that need to be fixed before this document can be published'\n  }\n\n  return (\n    <Tooltip\n      animate\n      content={\n        <Box padding={3} style={{maxWidth: '185px'}}>\n          <Text muted size={1}>\n            {content}\n          </Text>\n        </Box>\n      }\n      disabled={'ontouchstart' in window}\n      placement=\"top\"\n      portal\n    >\n      <Box>\n        <Button\n          disabled={disabled}\n          fontSize={1}\n          onClick={onClick}\n          text=\"Save and close\"\n          tone=\"primary\"\n        />\n      </Box>\n    </Tooltip>\n  )\n}\n\nexport default FormSubmitButton\n","import type {ThemeColorSchemeKey} from '@sanity/ui'\nimport type {MouseEvent} from 'react'\nimport {styled, css} from 'styled-components'\n\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n  onClick?: (e: MouseEvent) => void\n  $showCheckerboard?: boolean\n  $scheme?: ThemeColorSchemeKey\n  src: string\n  style?: any\n}\n\nconst Image = styled.img<Props>`\n  --checkerboard-color: ${(props) =>\n    props.$scheme ? getSchemeColor(props.$scheme, 'bg2') : 'inherit'};\n\n  display: block;\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n\n  ${(props) =>\n    props.$showCheckerboard &&\n    css`\n      background-image:\n        linear-gradient(45deg, var(--checkerboard-color) 25%, transparent 25%),\n        linear-gradient(-45deg, var(--checkerboard-color) 25%, transparent 25%),\n        linear-gradient(45deg, transparent 75%, var(--checkerboard-color) 75%),\n        linear-gradient(-45deg, transparent 75%, var(--checkerboard-color) 75%);\n      background-size: 20px 20px;\n      background-position:\n        0 0,\n        0 10px,\n        10px -10px,\n        -10px 0;\n    `}\n`\n\nexport default Image\n","import {AddIcon} from '@sanity/icons/Add'\nimport {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Card, Flex, rem, studioTheme, Text, type ThemeColorSchemeKey} from '@sanity/ui'\nimport {components, type StylesConfig} from 'react-select'\nimport {Virtuoso} from 'react-virtuoso'\n\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\nconst {radius: themeRadius, space: themeSpace} = studioTheme\n\nexport const reactSelectStyles = (scheme: ThemeColorSchemeKey): StylesConfig => {\n  return {\n    control: (styles, {isFocused}) => {\n      let boxShadow = `inset 0 0 0 1px var(--card-border-color)`\n      if (isFocused) {\n        boxShadow = `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputEnabledBorder')},\n        0 0 0 1px var(--card-bg-color),\n        0 0 0 3px var(--card-focus-ring-color) !important`\n      }\n\n      return {\n        ...styles,\n        'backgroundColor': 'var(--card-bg-color)',\n        'color': 'inherit',\n        'border': 'none',\n        'borderRadius': themeRadius[1],\n        boxShadow,\n        'margin': 0,\n        'minHeight': '35px',\n        'outline': 'none',\n        'padding': rem(themeSpace[1]!),\n        'transition': 'none',\n        '&:hover': {\n          boxShadow: `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputHoveredBorder')}`,\n        },\n      }\n    },\n    indicatorsContainer: (styles, {isDisabled}) => ({\n      ...styles,\n      opacity: isDisabled ? 0.25 : 1,\n    }),\n    input: (styles) => ({\n      ...styles,\n      color: 'var(--card-fg-color)',\n      fontFamily: studioTheme.fonts.text.family,\n      marginLeft: rem(themeSpace[2]!),\n    }),\n    menuList: (styles) => ({\n      ...styles,\n    }),\n    multiValue: (styles, {isDisabled}) => ({\n      ...styles,\n      backgroundColor: getSchemeColor(scheme, 'mutedHoveredBg'),\n      borderRadius: themeRadius[2],\n      opacity: isDisabled ? 0.5 : 1,\n    }),\n    multiValueLabel: () => ({\n      color: getSchemeColor(scheme, 'mutedHoveredFg'),\n      fontSize: 'inherit',\n      padding: 0,\n    }),\n    multiValueRemove: (styles) => ({\n      ...styles,\n      'borderTopLeftRadius': 0,\n      'borderBottomLeftRadius': 0,\n      'svg': {color: getSchemeColor(scheme, 'mutedHoveredFg')},\n      '&:hover': {\n        backgroundColor: getSchemeColor(scheme, 'mutedSelectedBg'),\n      },\n    }),\n    noOptionsMessage: (styles) => ({\n      ...styles,\n      fontFamily: studioTheme.fonts.text.family,\n      lineHeight: '1em',\n    }),\n    option: (styles, {isFocused}) => ({\n      ...styles,\n      'backgroundColor': isFocused ? getSchemeColor(scheme, 'spotBlue') : 'transparent',\n      'borderRadius': themeRadius[2],\n      'color': isFocused ? getSchemeColor(scheme, 'bg') : 'inherit',\n      'padding': `${rem(themeSpace[1]!)} ${rem(themeSpace[2]!)}`,\n      '&:hover': {\n        backgroundColor: getSchemeColor(scheme, 'spotBlue'),\n        color: getSchemeColor(scheme, 'bg'),\n      },\n    }),\n    placeholder: (styles) => ({\n      ...styles,\n      marginLeft: rem(themeSpace[2]!),\n    }),\n    valueContainer: (styles) => ({\n      ...styles,\n      margin: 0,\n      padding: 0,\n    }),\n  }\n}\n\nconst DropdownIndicator = (props: any) => {\n  return (\n    <components.DropdownIndicator {...props}>\n      <Box paddingX={2}>\n        <Text size={1}>\n          <ChevronDownIcon />\n        </Text>\n      </Box>\n    </components.DropdownIndicator>\n  )\n}\n\nconst Menu = (props: any) => {\n  return (\n    <components.Menu {...props}>\n      <Card radius={1} shadow={2}>\n        {props.children}\n      </Card>\n    </components.Menu>\n  )\n}\n\nconst MenuList = (props: any) => {\n  const {children} = props\n\n  const MAX_ROWS = 5\n  const OPTION_HEIGHT = 37\n\n  if (Array.isArray(children)) {\n    const height =\n      children.length > MAX_ROWS ? OPTION_HEIGHT * MAX_ROWS : children.length * OPTION_HEIGHT\n\n    return (\n      <Virtuoso\n        className=\"media__custom-scrollbar\"\n        itemContent={(index) => {\n          const item = children[index]\n          return <Option {...item.props} />\n        }}\n        style={{height}}\n        totalCount={children.length}\n      />\n    )\n  }\n  return <components.MenuList {...props}>{children}</components.MenuList>\n}\n\nconst MultiValueLabel = (props: any) => {\n  return (\n    <Box padding={2} paddingRight={1}>\n      <Text size={1} weight=\"medium\">\n        <components.MultiValueLabel {...props} />\n      </Text>\n    </Box>\n  )\n}\n\nconst MultiValueRemove = (props: any) => {\n  return (\n    <components.MultiValueRemove {...props}>\n      <CloseIcon color=\"#1f2123\" />\n    </components.MultiValueRemove>\n  )\n}\n\nconst Option = (props: any) => {\n  return (\n    <Box paddingX={1} paddingY={1}>\n      <components.Option {...props}>\n        <Flex align=\"center\">\n          {props.data.__isNew__ && <AddIcon style={{marginRight: '3px'}} />}\n          {props.children}\n        </Flex>\n      </components.Option>\n    </Box>\n  )\n}\n\nexport const reactSelectComponents = {\n  DropdownIndicator,\n  IndicatorSeparator: null,\n  Menu,\n  MenuList,\n  MultiValueLabel,\n  MultiValueRemove,\n  Option,\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Inline, Text, Tooltip} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\ntype Props = {\n  description?: string\n  error?: string\n  label: string\n  name: string\n}\n\nconst StyledErrorOutlineIcon = styled(ErrorOutlineIcon)(({theme}) => {\n  return {\n    color: theme.sanity.color.spot.red,\n  }\n})\n\nconst FormFieldInputLabel = (props: Props) => {\n  const {description, error, label, name} = props\n\n  return (\n    <>\n      {/* Label */}\n      <Box marginY={3}>\n        <Inline space={2}>\n          <Text as=\"label\" htmlFor={name} size={1} weight=\"semibold\">\n            {label}\n          </Text>\n\n          {/* Error icon + tooltip */}\n          {error && (\n            <Text size={1}>\n              <Tooltip\n                animate\n                content={\n                  <Box padding={2}>\n                    <Text muted size={1}>\n                      <StyledErrorOutlineIcon style={{marginRight: '0.1em'}} />\n                      {error}\n                    </Text>\n                  </Box>\n                }\n                fallbackPlacements={['top', 'left']}\n                placement=\"right\"\n                portal\n              >\n                <StyledErrorOutlineIcon />\n              </Tooltip>\n            </Text>\n          )}\n        </Inline>\n      </Box>\n\n      {/* Description */}\n      {description && (\n        <Box marginY={3}>\n          <Text as=\"label\" htmlFor={name} muted size={1}>\n            {description}\n          </Text>\n        </Box>\n      )}\n    </>\n  )\n}\n\nexport default FormFieldInputLabel\n","import {Box} from '@sanity/ui'\nimport {Controller} from 'react-hook-form'\nimport CreatableSelect from 'react-select/creatable'\nimport {useColorSchemeValue} from 'sanity'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {reactSelectComponents, reactSelectStyles} from '../../styled/react-select/creatable'\nimport type {TagSelectOption} from '../../types'\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n  control: any\n  description?: string\n  disabled?: boolean\n  error?: string\n  label: string\n  name: string\n  onCreateTag: (tagName: string) => void\n  options: {\n    label: string\n    value: string\n  }[]\n  placeholder?: string\n  value?: TagSelectOption[] | null\n}\n\nconst FormFieldInputTags = (props: Props) => {\n  const {\n    control,\n    description,\n    disabled,\n    error,\n    label,\n    name,\n    onCreateTag,\n    options,\n    placeholder,\n    value,\n  } = props\n\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const creating = useTypedSelector((state) => state.tags.creating)\n  const tagsFetching = useTypedSelector((state) => state.tags.fetching)\n\n  return (\n    <Box\n      // HACK: force stacking context to ensure react-select dropdown sits above other fields\n      style={{zIndex: 2}}\n    >\n      {/* Label */}\n      <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n\n      {/* Select */}\n      <Controller\n        control={control}\n        defaultValue={value}\n        name={name}\n        render={({field}) => {\n          const {onBlur, onChange, value: controllerValue} = field\n          // TODO: investigate overriding `onChange` and updating form state manually.\n          // `opt.media.tags` is initialised with `null` as a defaultValue in react-hook-form\n          // Ideally, we'd be able to set `opt.media.tags` as null when all items are cleared, rather than\n          // setting it to an empty array (which is currently causing false positives in denoting whether the form is dirty)\n          //\n          // To illustrate this issue:\n          // - Edit an asset with no tags\n          // - Add a new tag (either an existing one, or create one inline)\n          // - Remove the tag you've just created\n          //\n          // At this point, the form will still be marked as dirty when it shouldnt be\n          return (\n            <CreatableSelect\n              components={reactSelectComponents}\n              instanceId=\"tags\"\n              isClearable={false} // TODO: re-enable when we're able to correctly (manually) re-validate on clear\n              isDisabled={creating || disabled || tagsFetching}\n              isLoading={creating}\n              isMulti\n              name={name}\n              noOptionsMessage={() => 'No tags'}\n              onBlur={onBlur}\n              onChange={onChange}\n              onCreateOption={onCreateTag}\n              options={options}\n              placeholder={tagsFetching ? 'Loading...' : placeholder}\n              styles={reactSelectStyles(scheme)}\n              value={controllerValue}\n            />\n          )\n        }}\n      />\n    </Box>\n  )\n}\n\nexport default FormFieldInputTags\n","import {Box, TextInput} from '@sanity/ui'\nimport {type Ref} from 'react'\n\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n  description?: string\n  disabled?: boolean\n  error?: string\n  label: string\n  name: string\n  placeholder?: string\n  value?: string\n  ref?: Ref<HTMLInputElement>\n}\n\nconst FormFieldInputText = (props: Props) => {\n  const {description, disabled, error, label, name, placeholder, value, ref, ...rest} = props\n\n  return (\n    <Box>\n      {/* Label */}\n      <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n      {/* Input */}\n      <TextInput\n        {...rest}\n        autoComplete=\"off\"\n        autoFocus\n        defaultValue={value}\n        disabled={disabled}\n        id={name}\n        name={name}\n        placeholder={placeholder}\n        ref={ref}\n      />\n    </Box>\n  )\n}\n\nexport default FormFieldInputText\n","import {Box, TextArea} from '@sanity/ui'\nimport {type Ref} from 'react'\n\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n  description?: string\n  disabled?: boolean\n  error?: string\n  label: string\n  name: string\n  placeholder?: string\n  rows?: number\n  value?: string\n  ref?: Ref<HTMLTextAreaElement>\n}\n\nconst FormFieldInputTextarea = (props: Props) => {\n  const {description, disabled, error, label, name, placeholder, rows, value, ref, ...rest} = props\n\n  return (\n    <Box>\n      {/* Label */}\n      <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n\n      {/* Input */}\n      <TextArea\n        {...rest}\n        autoComplete=\"off\"\n        defaultValue={value}\n        disabled={disabled}\n        id={name}\n        name={name}\n        placeholder={placeholder}\n        ref={ref}\n        rows={rows}\n      />\n    </Box>\n  )\n}\n\nexport default FormFieldInputTextarea\n","import {Card, Stack, Tab, TabList, TabPanel} from '@sanity/ui'\nimport {useState} from 'react'\nimport {type Control, type FieldErrors, type UseFormRegister} from 'react-hook-form'\n\nimport type {Asset, AssetFormData, Locale, TagSelectOption} from '../../types'\nimport FormFieldInputTags from '../FormFieldInputTags'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormFieldInputTextarea from '../FormFieldInputTextarea'\n\ntype LocalizedErrors = Record<string, {message?: string} | undefined>\n\n// When locales are not configured, extract a plain string from a potentially localized field\nfunction toStringField(value: unknown): string | undefined {\n  if (typeof value === 'string') return value\n  if (typeof value === 'object' && value !== null) {\n    const found = Object.values(value as Record<string, string>).find((v) => v)\n    return found || undefined\n  }\n  return undefined\n}\n\nexport type DetailsProps = {\n  formUpdating: boolean\n  handleCreateTag: (title: string) => void\n  control: Control<AssetFormData>\n  errors: FieldErrors<AssetFormData>\n  register: UseFormRegister<AssetFormData>\n  allTagOptions: TagSelectOption[]\n  assetTagOptions: TagSelectOption[] | null\n  currentAsset: Asset\n  creditLine?: {\n    enabled: boolean\n    excludeSources?: string | string[] | undefined\n  }\n  locales?: Locale[]\n}\n\nexport default function Details({\n  formUpdating,\n  handleCreateTag,\n  control,\n  errors,\n  register,\n  allTagOptions,\n  assetTagOptions,\n  currentAsset,\n  creditLine,\n  locales,\n}: DetailsProps) {\n  const hasLocales = locales && locales.length > 0\n  const [activeLocaleTab, setActiveLocaleTab] = useState(0)\n  return (\n    <Stack space={3}>\n      {/* Tags */}\n      <FormFieldInputTags\n        control={control}\n        disabled={formUpdating}\n        error={errors?.opt?.media?.tags?.message}\n        label=\"Tags\"\n        name=\"opt.media.tags\"\n        onCreateTag={handleCreateTag}\n        options={allTagOptions}\n        placeholder=\"Select or create...\"\n        value={assetTagOptions}\n      />\n      {/* Filename */}\n      <FormFieldInputText\n        {...register('originalFilename')}\n        disabled={formUpdating}\n        error={errors?.originalFilename?.message}\n        label=\"Filename\"\n        name=\"originalFilename\"\n        value={currentAsset?.originalFilename}\n      />\n      {/* Localized fields grouped by language */}\n      {hasLocales ? (\n        <Card marginTop={2} shadow={1} padding={3} radius={1}>\n          <Stack space={2}>\n            <TabList space={2}>\n              {locales.map((locale, idx) => (\n                <Tab\n                  key={locale.id}\n                  id={`locale-tab-${locale.id}`}\n                  aria-controls={`locale-panel-${locale.id}`}\n                  selected={activeLocaleTab === idx}\n                  onClick={() => setActiveLocaleTab(idx)}\n                  label={locale.title}\n                />\n              ))}\n            </TabList>\n            {locales.map((locale, idx) => (\n              <TabPanel\n                key={locale.id}\n                id={`locale-panel-${locale.id}`}\n                aria-labelledby={`locale-tab-${locale.id}`}\n                hidden={activeLocaleTab !== idx}\n              >\n                <Stack space={3}>\n                  <FormFieldInputText\n                    {...register(`title.${locale.id}` as const)}\n                    disabled={formUpdating}\n                    error={(errors?.title as LocalizedErrors)?.[locale.id]?.message}\n                    label=\"Title\"\n                    name={`title.${locale.id}`}\n                  />\n                  <FormFieldInputText\n                    {...register(`altText.${locale.id}` as const)}\n                    disabled={formUpdating}\n                    error={(errors?.altText as LocalizedErrors)?.[locale.id]?.message}\n                    label=\"Alt Text\"\n                    name={`altText.${locale.id}`}\n                  />\n                  <FormFieldInputTextarea\n                    {...register(`description.${locale.id}` as const)}\n                    disabled={formUpdating}\n                    error={(errors?.description as LocalizedErrors)?.[locale.id]?.message}\n                    label=\"Description\"\n                    name={`description.${locale.id}`}\n                    rows={5}\n                  />\n                  {creditLine?.enabled && (\n                    <FormFieldInputText\n                      {...register(`creditLine.${locale.id}` as const)}\n                      error={(errors?.creditLine as LocalizedErrors)?.[locale.id]?.message}\n                      label=\"Credit\"\n                      name={`creditLine.${locale.id}`}\n                      disabled={\n                        formUpdating ||\n                        creditLine?.excludeSources?.includes(currentAsset?.['source']?.name)\n                      }\n                    />\n                  )}\n                </Stack>\n              </TabPanel>\n            ))}\n          </Stack>\n        </Card>\n      ) : (\n        <>\n          <FormFieldInputText\n            {...register('title')}\n            disabled={formUpdating}\n            error={errors?.title?.message}\n            label=\"Title\"\n            name=\"title\"\n            value={toStringField(currentAsset?.title)}\n          />\n          <FormFieldInputText\n            {...register('altText')}\n            disabled={formUpdating}\n            error={errors?.altText?.message}\n            label=\"Alt Text\"\n            name=\"altText\"\n            value={toStringField(currentAsset?.altText)}\n          />\n          <FormFieldInputTextarea\n            {...register('description')}\n            disabled={formUpdating}\n            error={errors?.description?.message}\n            label=\"Description\"\n            name=\"description\"\n            rows={5}\n            value={toStringField(currentAsset?.description)}\n          />\n          {creditLine?.enabled && (\n            <FormFieldInputText\n              {...register('creditLine')}\n              error={errors?.creditLine?.message}\n              label=\"Credit\"\n              name=\"creditLine\"\n              value={toStringField(currentAsset?.creditLine)}\n              disabled={\n                formUpdating || creditLine?.excludeSources?.includes(currentAsset?.['source']?.name)\n              }\n            />\n          )}\n        </>\n      )}\n    </Stack>\n  )\n}\n","import type {MutationEvent} from '@sanity/client'\nimport {Box, Button, Card, Flex, Stack, Tab, TabList, TabPanel, Text} from '@sanity/ui'\nimport groq from 'groq'\nimport {type ReactNode, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {type SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\nimport {WithReferringDocuments, useColorSchemeValue, useDocumentStore} from 'sanity'\n\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport {getAssetFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {assetsActions, selectAssetById} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {selectTags, selectTagSelectOptions, tagsActions} from '../../modules/tags'\nimport type {Asset, AssetFormData, DialogAssetEditProps, TagSelectOption} from '../../types'\nimport getTagSelectOptions from '../../utils/getTagSelectOptions'\nimport {getUniqueDocuments} from '../../utils/getUniqueDocuments'\nimport imageDprUrl from '../../utils/imageDprUrl'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport {isFileAsset, isImageAsset} from '../../utils/typeGuards'\nimport zodFormResolver from '../../utils/zodFormResolver'\nimport AssetMetadata from '../AssetMetadata'\nimport Dialog from '../Dialog'\nimport DocumentList from '../DocumentList'\nimport FileAssetPreview from '../FileAssetPreview'\nimport FormSubmitButton from '../FormSubmitButton'\nimport Image from '../Image'\nimport Details, {type DetailsProps} from './Details'\n\nfunction renderDefaultDetails(props: DetailsProps) {\n  return <Details {...props} />\n}\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogAssetEditProps\n}\n\nconst DialogAssetEdit = (props: Props) => {\n  const {\n    children,\n    dialog: {assetId, id, lastCreatedTag, lastRemovedTagIds},\n  } = props\n\n  const client = useVersionedClient()\n  const scheme = useColorSchemeValue()\n\n  const documentStore = useDocumentStore()\n\n  const dispatch = useDispatch()\n  const assetItem = useTypedSelector((state) => selectAssetById(state, String(assetId))) // TODO: check casting\n  const tags = useTypedSelector(selectTags)\n\n  const assetUpdatedPrev = useRef<string | undefined>(undefined)\n\n  // Generate a snapshot of the current asset\n  const [assetSnapshot, setAssetSnapshot] = useState(assetItem?.asset)\n  const [tabSection, setTabSection] = useState<'details' | 'references'>('details')\n\n  const currentAsset = assetItem ? assetItem?.asset : assetSnapshot\n  const allTagOptions = getTagSelectOptions(tags)\n\n  const assetTagOptions = useTypedSelector(selectTagSelectOptions(currentAsset))\n\n  // Check if credit line options are configured\n  const {creditLine, components: {details: CustomDetails} = {}, locales} = useToolOptions()\n\n  const generateDefaultValues = useCallback(\n    (asset?: Asset): AssetFormData => {\n      if (locales && locales.length > 0) {\n        const makeLocaleObj = (field?: Record<string, string> | string) => {\n          const obj: Record<string, string> = {}\n          for (let i = 0; i < locales.length; i++) {\n            const locale = locales[i]!\n            if (typeof field === 'object' && field && field[locale.id]) {\n              obj[locale.id] = field[locale.id]!\n            } else if (typeof field === 'string') {\n              // Only populate the first locale to avoid spreading a legacy value\n              // across all languages; the user should fill in other translations manually\n              obj[locale.id] = i === 0 ? field : ''\n            } else {\n              obj[locale.id] = ''\n            }\n          }\n          return obj\n        }\n        return {\n          altText: makeLocaleObj(asset?.altText),\n          creditLine: makeLocaleObj(asset?.creditLine),\n          description: makeLocaleObj(asset?.description),\n          originalFilename: asset?.originalFilename || '',\n          opt: {media: {tags: assetTagOptions}},\n          title: makeLocaleObj(asset?.title),\n        }\n      }\n      // Normalize: if a field is a localized object but locales are disabled, pick first non-empty value\n      const flattenField = (field: unknown): string => {\n        if (typeof field === 'string') return field\n        if (typeof field === 'object' && field !== null) {\n          const values = Object.values(field as Record<string, string>)\n          return values.find((v) => v) || ''\n        }\n        return ''\n      }\n      return {\n        altText: flattenField(asset?.altText),\n        creditLine: flattenField(asset?.creditLine),\n        description: flattenField(asset?.description),\n        originalFilename: asset?.originalFilename || '',\n        opt: {media: {tags: assetTagOptions}},\n        title: flattenField(asset?.title),\n      }\n    },\n    [assetTagOptions, locales],\n  )\n\n  const {\n    control,\n    // Read the formState before render to subscribe the form state through Proxy\n    formState: {errors, isDirty, isValid},\n    getValues,\n    handleSubmit,\n    register,\n    reset,\n    setValue,\n  } = useForm<AssetFormData>({\n    defaultValues: generateDefaultValues(assetItem?.asset),\n    mode: 'onChange',\n    resolver: zodFormResolver<AssetFormData>(getAssetFormSchema(locales)),\n  })\n\n  const formUpdating = !assetItem || assetItem?.updating\n\n  const handleClose = useCallback(() => {\n    dispatch(dialogActions.remove({id}))\n  }, [dispatch, id])\n\n  const handleDelete = useCallback(() => {\n    if (!assetItem?.asset) {\n      return\n    }\n\n    dispatch(\n      dialogActions.showConfirmDeleteAssets({\n        assets: [assetItem],\n        closeDialogId: assetItem?.asset._id,\n      }),\n    )\n  }, [assetItem, dispatch])\n\n  const handleAssetUpdate = useCallback((update: MutationEvent) => {\n    const {result, transition} = update\n    if (result && transition === 'update') {\n      // Regenerate asset snapshot\n      setAssetSnapshot(result as Asset)\n    }\n  }, [])\n\n  const handleCreateTag = useCallback(\n    (tagName: string) => {\n      // Dispatch action to create new tag\n      dispatch(\n        tagsActions.createRequest({\n          assetId: currentAsset?._id,\n          name: tagName,\n        }),\n      )\n    },\n    [currentAsset?._id, dispatch],\n  )\n\n  // Detect if asset has localized fields (objects) with keys not in the configured locales\n  const hasOrphanedLocales = useMemo(() => {\n    if (!currentAsset) return false\n    const isLocaleObj = (v: unknown) => typeof v === 'object' && v !== null && !Array.isArray(v)\n    const fields = [\n      currentAsset.title,\n      currentAsset.altText,\n      currentAsset.description,\n      ...(currentAsset._type === 'sanity.imageAsset' ? [currentAsset.creditLine] : []),\n    ]\n    const anyLocalized = fields.some((f) => isLocaleObj(f))\n    if (!anyLocalized) return false\n    if (!locales || locales.length === 0) return true\n    const configuredIds = new Set(locales.map((l) => l.id))\n    return fields.some((f) => {\n      if (!isLocaleObj(f)) return false\n      return Object.keys(f as object).some((k) => !configuredIds.has(k))\n    })\n  }, [currentAsset, locales])\n\n  const handleCleanupLocales = useCallback(async () => {\n    if (!currentAsset) return\n\n    const cleanField = (field: unknown): unknown => {\n      if (typeof field !== 'object' || field === null || Array.isArray(field)) return field\n      const obj = field as Record<string, string>\n      if (!locales || locales.length === 0) {\n        // Pick the first non-empty value sorted by key for determinism\n        const sorted = Object.keys(obj).sort()\n        return sorted.map((k) => obj[k]).find((v) => v) || ''\n      }\n      const configuredIds = new Set(locales.map((l) => l.id))\n      const cleaned: Record<string, string> = {}\n      for (const [key, val] of Object.entries(obj)) {\n        if (configuredIds.has(key)) cleaned[key] = val\n      }\n      return cleaned\n    }\n\n    await client\n      .patch(currentAsset._id)\n      .set({\n        title: cleanField(currentAsset.title),\n        altText: cleanField(currentAsset.altText),\n        description: cleanField(currentAsset.description),\n        ...(currentAsset._type === 'sanity.imageAsset' && {\n          creditLine: cleanField(currentAsset.creditLine),\n        }),\n      })\n      .commit()\n  }, [client, currentAsset, locales])\n\n  // Submit react-hook-form\n  const onSubmit: SubmitHandler<AssetFormData> = useCallback(\n    (formData) => {\n      if (!assetItem?.asset) {\n        return\n      }\n\n      const sanitizedFormData = sanitizeFormData(formData)\n\n      dispatch(\n        assetsActions.updateRequest({\n          asset: assetItem?.asset,\n          closeDialogId: assetItem?.asset._id,\n          formData: {\n            ...sanitizedFormData,\n            // Map tags to sanity references\n            opt: {\n              media: {\n                ...sanitizedFormData['opt'].media,\n                tags:\n                  sanitizedFormData['opt'].media.tags?.map((tag: TagSelectOption) => ({\n                    _ref: tag.value,\n                    _type: 'reference',\n                    _weak: true,\n                  })) || null,\n              },\n            },\n          },\n        }),\n      )\n    },\n    [assetItem?.asset, dispatch],\n  )\n\n  // Listen for asset mutations and update snapshot\n  useEffect(() => {\n    if (!assetItem?.asset) {\n      return undefined\n    }\n\n    // Remember that Sanity listeners ignore joins, order clauses and projections\n    const subscriptionAsset = client\n      .listen(groq`*[_id == $id]`, {id: assetItem?.asset._id})\n      .subscribe(handleAssetUpdate)\n\n    return () => {\n      subscriptionAsset?.unsubscribe()\n    }\n  }, [assetItem?.asset, client, handleAssetUpdate])\n\n  // Update tags form field (react-select) when a new _inline_ tag has been created\n  useEffect(() => {\n    if (lastCreatedTag) {\n      const existingTags = (getValues('opt.media.tags') as TagSelectOption[]) || []\n      const updatedTags = existingTags.concat([lastCreatedTag])\n      setValue('opt.media.tags', updatedTags, {shouldDirty: true})\n    }\n  }, [getValues, lastCreatedTag, setValue])\n\n  // Update tags form field (react-select) when an _inline_ tag has been removed elsewhere\n  useEffect(() => {\n    if (lastRemovedTagIds) {\n      const existingTags = (getValues('opt.media.tags') as TagSelectOption[]) || []\n      const updatedTags = existingTags.filter((tag) => {\n        return !lastRemovedTagIds.includes(tag.value)\n      })\n\n      setValue('opt.media.tags', updatedTags, {shouldDirty: true})\n    }\n  }, [getValues, lastRemovedTagIds, setValue])\n\n  // Reset react-hook-form local state on mount and every time the asset has been updated elsewhere\n  useEffect(() => {\n    if (assetUpdatedPrev.current !== assetItem?.asset._updatedAt) {\n      reset(generateDefaultValues(assetItem?.asset))\n    }\n    assetUpdatedPrev.current = assetItem?.asset._updatedAt\n  }, [assetItem?.asset, generateDefaultValues, reset])\n\n  const Footer = () => (\n    <Box padding={3}>\n      <Stack space={3}>\n        {hasOrphanedLocales && (\n          <Card padding={3} radius={2} shadow={1} tone=\"caution\">\n            <Flex align=\"center\" justify=\"space-between\" gap={3}>\n              <Text size={1}>\n                This asset has localized fields that are no longer configured. Clean them up to\n                avoid validation errors.\n              </Text>\n              <Button\n                fontSize={1}\n                mode=\"ghost\"\n                onClick={handleCleanupLocales}\n                text=\"Cleanup localized fields\"\n                tone=\"caution\"\n              />\n            </Flex>\n          </Card>\n        )}\n        <Flex justify=\"space-between\">\n          {/* Delete button */}\n          <Button\n            disabled={formUpdating}\n            fontSize={1}\n            mode=\"bleed\"\n            onClick={handleDelete}\n            text=\"Delete\"\n            tone=\"critical\"\n          />\n\n          {/* Submit button */}\n          <FormSubmitButton\n            disabled={formUpdating || !isDirty || !isValid || hasOrphanedLocales}\n            isValid={isValid}\n            lastUpdated={currentAsset?._updatedAt}\n            onClick={handleSubmit(onSubmit)}\n          />\n        </Flex>\n      </Stack>\n    </Box>\n  )\n\n  if (!currentAsset) {\n    return null\n  }\n\n  const detailsProps = {\n    control,\n    errors,\n    formUpdating,\n    register,\n    setValue,\n    assetTagOptions,\n    allTagOptions,\n    handleCreateTag,\n    currentAsset,\n    creditLine,\n    locales,\n  }\n\n  return (\n    <Dialog\n      animate\n      // oxlint-disable-next-line react/react-compiler\n      footer={<Footer />}\n      header=\"Asset details\"\n      id={id}\n      onClose={handleClose}\n      width={3}\n    >\n      {/*\n        We reverse direction to ensure the download button doesn't appear (in the DOM) before other tabbable items.\n        This ensures that the dialog doesn't scroll down to the download button (which on smaller screens, can sometimes\n        be below the fold).\n      */}\n      <Flex direction={['column-reverse', 'column-reverse', 'row-reverse']}>\n        <Box flex={1} marginTop={[5, 5, 0]} padding={4}>\n          <WithReferringDocuments documentStore={documentStore} id={currentAsset._id}>\n            {({isLoading, referringDocuments}) => {\n              const uniqueReferringDocuments = getUniqueDocuments(referringDocuments)\n              return (\n                <>\n                  {/* Tabs */}\n                  <TabList space={2}>\n                    <Tab\n                      aria-controls=\"details-panel\"\n                      disabled={formUpdating}\n                      id=\"details-tab\"\n                      label=\"Details\"\n                      onClick={() => setTabSection('details')}\n                      selected={tabSection === 'details'}\n                      size={2}\n                    />\n                    <Tab\n                      aria-controls=\"references-panel\"\n                      disabled={formUpdating}\n                      id=\"references-tab\"\n                      label={`References${\n                        !isLoading && Array.isArray(uniqueReferringDocuments)\n                          ? ` (${uniqueReferringDocuments.length})`\n                          : ''\n                      }`}\n                      onClick={() => setTabSection('references')}\n                      selected={tabSection === 'references'}\n                      size={2}\n                    />\n                  </TabList>\n\n                  {/* Form fields */}\n                  <Box as=\"form\" marginTop={4} onSubmit={handleSubmit(onSubmit)}>\n                    {/* Deleted notification */}\n                    {!assetItem && (\n                      <Card marginBottom={3} padding={3} radius={2} shadow={1} tone=\"critical\">\n                        <Text size={1}>This file cannot be found – it may have been deleted.</Text>\n                      </Card>\n                    )}\n\n                    {/* Hidden button to enable enter key submissions */}\n                    <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n                    {/* Panel: details */}\n                    <TabPanel\n                      aria-labelledby=\"details\"\n                      hidden={tabSection !== 'details'}\n                      id=\"details-panel\"\n                    >\n                      {CustomDetails ? (\n                        <CustomDetails\n                          {...detailsProps}\n                          renderDefaultDetails={renderDefaultDetails}\n                        />\n                      ) : (\n                        <Details {...detailsProps} />\n                      )}\n                    </TabPanel>\n\n                    {/* Panel: References */}\n                    <TabPanel\n                      aria-labelledby=\"references\"\n                      hidden={tabSection !== 'references'}\n                      id=\"references-panel\"\n                    >\n                      <Box marginTop={5}>\n                        {assetItem?.asset && (\n                          <DocumentList\n                            documents={uniqueReferringDocuments}\n                            isLoading={isLoading}\n                          />\n                        )}\n                      </Box>\n                    </TabPanel>\n                  </Box>\n                </>\n              )\n            }}\n          </WithReferringDocuments>\n        </Box>\n\n        <Box flex={1} padding={4}>\n          <Box style={{aspectRatio: '1'}}>\n            {/* File */}\n            {isFileAsset(currentAsset) && <FileAssetPreview asset={currentAsset} />}\n\n            {/* Image */}\n            {isImageAsset(currentAsset) && (\n              <Image\n                draggable={false}\n                $scheme={scheme}\n                $showCheckerboard={!currentAsset?.metadata?.isOpaque}\n                src={imageDprUrl(currentAsset, {height: 600, width: 600})}\n              />\n            )}\n          </Box>\n\n          {/* Metadata */}\n          {currentAsset && (\n            <Box marginTop={4}>\n              <AssetMetadata asset={currentAsset} item={assetItem} />\n            </Box>\n          )}\n        </Box>\n      </Flex>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogAssetEdit\n","import {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Box, Button, Flex, Stack, Text} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {dialogActions} from '../../modules/dialog'\nimport type {DialogConfirmProps} from '../../types'\nimport Dialog from '../Dialog'\n\ntype Props = {\n  children?: ReactNode\n  dialog: DialogConfirmProps\n}\n\nconst DialogConfirm = (props: Props) => {\n  const {children, dialog} = props\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleClose = () => {\n    dispatch(dialogActions.remove({id: dialog?.id}))\n  }\n\n  const handleConfirm = () => {\n    // Close target dialog, if provided\n    if (dialog?.closeDialogId) {\n      dispatch(dialogActions.remove({id: dialog?.closeDialogId}))\n    }\n\n    if (dialog?.confirmCallbackAction) {\n      dispatch(dialog.confirmCallbackAction)\n    }\n\n    // Close self\n    handleClose()\n  }\n\n  const Footer = () => (\n    <Box padding={3}>\n      <Flex justify=\"space-between\">\n        <Button fontSize={1} mode=\"bleed\" onClick={handleClose} text=\"Cancel\" />\n        <Button\n          fontSize={1}\n          onClick={handleConfirm}\n          text={dialog?.confirmText}\n          tone={dialog?.tone}\n        />\n      </Flex>\n    </Box>\n  )\n\n  const Header = () => (\n    <Flex align=\"center\">\n      <Box paddingX={1}>\n        <WarningOutlineIcon />\n      </Box>\n      <Box marginLeft={2}>{dialog?.headerTitle}</Box>\n    </Flex>\n  )\n\n  return (\n    <Dialog\n      animate\n      // oxlint-disable-next-line react/react-compiler\n      footer={<Footer />}\n      // oxlint-disable-next-line react/react-compiler\n      header={<Header />}\n      id=\"confirm\"\n      onClose={handleClose}\n      width={1}\n    >\n      <Box paddingX={4} paddingY={4}>\n        <Stack space={3}>\n          {dialog?.title && <Text size={1}>{dialog.title}</Text>}\n          {dialog?.description && (\n            <Text muted size={1}>\n              <em>{dialog.description}</em>\n            </Text>\n          )}\n        </Stack>\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogConfirm\n","import {Box} from '@sanity/ui'\nimport {type ReactNode, useCallback} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {dialogActions} from '../../modules/dialog'\nimport type {DialogSearchFacetsProps} from '../../types'\nimport Dialog from '../Dialog'\nimport SearchFacets from '../SearchFacets'\nimport SearchFacetsControl from '../SearchFacetsControl'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogSearchFacetsProps\n}\n\nconst DialogSearchFacets = (props: Props) => {\n  const {\n    children,\n    dialog: {id},\n  } = props\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleClose = useCallback(() => {\n    dispatch(dialogActions.clear())\n  }, [dispatch])\n\n  return (\n    <Dialog animate header=\"Filters\" id={id} onClose={handleClose} width={1}>\n      <Box padding={3}>\n        <SearchFacets layout=\"stack\" />\n        <SearchFacetsControl />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogSearchFacets\n","import {Box, Flex} from '@sanity/ui'\nimport {type ReactNode, useEffect} from 'react'\nimport {type SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\n\nimport {tagFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {dialogActions} from '../../modules/dialog'\nimport {tagsActions} from '../../modules/tags'\nimport type {DialogTagCreateProps, TagFormData} from '../../types'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport zodFormResolver from '../../utils/zodFormResolver'\nimport Dialog from '../Dialog'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormSubmitButton from '../FormSubmitButton'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogTagCreateProps\n}\n\nconst DialogTagCreate = (props: Props) => {\n  const {\n    children,\n    dialog: {id},\n  } = props\n\n  const dispatch = useDispatch()\n\n  const creating = useTypedSelector((state) => state.tags.creating)\n  const creatingError = useTypedSelector((state) => state.tags.creatingError)\n\n  const {\n    // Read the formState before render to subscribe the form state through Proxy\n    formState: {errors, isDirty, isValid},\n    handleSubmit,\n    register,\n    setError,\n  } = useForm<TagFormData>({\n    defaultValues: {\n      name: '',\n    },\n    mode: 'onChange',\n    resolver: zodFormResolver<TagFormData>(tagFormSchema),\n  })\n\n  const formUpdating = creating\n\n  const handleClose = () => {\n    dispatch(dialogActions.clear())\n  }\n\n  // - submit react-hook-form\n  const onSubmit: SubmitHandler<TagFormData> = (formData) => {\n    const sanitizedFormData = sanitizeFormData(formData)\n\n    dispatch(tagsActions.createRequest({name: sanitizedFormData['name']}))\n  }\n\n  useEffect(() => {\n    if (creatingError) {\n      setError('name', {\n        message: creatingError?.message,\n      })\n    }\n  }, [creatingError, setError])\n\n  const Footer = () => (\n    <Box padding={3}>\n      <Flex justify=\"flex-end\">\n        {/* Submit button */}\n        <FormSubmitButton\n          disabled={formUpdating || !isDirty || !isValid}\n          isValid={isValid}\n          onClick={handleSubmit(onSubmit)}\n        />\n      </Flex>\n    </Box>\n  )\n\n  return (\n    <Dialog\n      animate\n      // oxlint-disable-next-line react/react-compiler\n      footer={<Footer />}\n      header=\"Create Tag\"\n      id={id}\n      onClose={handleClose}\n      width={1}\n    >\n      {/* Form fields */}\n      <Box as=\"form\" padding={4} onSubmit={handleSubmit(onSubmit)}>\n        {/* Hidden button to enable enter key submissions */}\n        <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n        {/* Title */}\n        <FormFieldInputText\n          {...register('name')}\n          disabled={formUpdating}\n          error={errors?.name?.message}\n          label=\"Name\"\n          name=\"name\"\n        />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogTagCreate\n","import type {MutationEvent} from '@sanity/client'\nimport {Box, Button, Card, Flex, Text} from '@sanity/ui'\nimport groq from 'groq'\nimport {type ReactNode, useCallback, useEffect, useState} from 'react'\nimport {type SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\n\nimport {tagFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {dialogActions} from '../../modules/dialog'\nimport {selectTagById, tagsActions} from '../../modules/tags'\nimport type {DialogTagEditProps, Tag, TagFormData} from '../../types'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport zodFormResolver from '../../utils/zodFormResolver'\nimport Dialog from '../Dialog'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormSubmitButton from '../FormSubmitButton'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogTagEditProps\n}\n\nconst DialogTagEdit = (props: Props) => {\n  const {\n    children,\n    dialog: {id, tagId},\n  } = props\n\n  const client = useVersionedClient()\n\n  const dispatch = useDispatch()\n  const tagItem = useTypedSelector((state) => selectTagById(state, String(tagId))) // TODO: double check string cast\n\n  // - Generate a snapshot of the current tag\n  const [tagSnapshot, setTagSnapshot] = useState(tagItem?.tag)\n\n  const currentTag = tagItem ? tagItem?.tag : tagSnapshot\n  const generateDefaultValues = useCallback(\n    (tag?: Tag) => ({\n      name: tag?.name?.current || '',\n    }),\n    [],\n  )\n\n  const {\n    // Read the formState before render to subscribe the form state through Proxy\n    formState: {errors, isDirty, isValid},\n    handleSubmit,\n    register,\n    reset,\n    setError,\n  } = useForm<TagFormData>({\n    defaultValues: generateDefaultValues(tagItem?.tag),\n    mode: 'onChange',\n    resolver: zodFormResolver<TagFormData>(tagFormSchema),\n  })\n\n  const formUpdating = !tagItem || tagItem?.updating\n\n  const handleClose = () => {\n    dispatch(dialogActions.remove({id}))\n  }\n\n  // Submit react-hook-form\n  const onSubmit: SubmitHandler<TagFormData> = (formData) => {\n    if (!tagItem?.tag) {\n      return\n    }\n    const sanitizedFormData = sanitizeFormData(formData)\n    dispatch(\n      tagsActions.updateRequest({\n        closeDialogId: tagItem?.tag?._id,\n        formData: {\n          name: {\n            _type: 'slug',\n            current: sanitizedFormData['name'],\n          },\n        },\n        tag: tagItem?.tag,\n      }),\n    )\n  }\n\n  const handleDelete = () => {\n    if (!tagItem?.tag) {\n      return\n    }\n\n    dispatch(\n      dialogActions.showConfirmDeleteTag({\n        closeDialogId: tagItem?.tag?._id,\n        tag: tagItem?.tag,\n      }),\n    )\n  }\n\n  const handleTagUpdate = useCallback(\n    (update: MutationEvent) => {\n      const {result, transition} = update\n      if (result && transition === 'update') {\n        // Regenerate snapshot\n        setTagSnapshot(result as Tag)\n        // Reset react-hook-form\n        reset(generateDefaultValues(result as Tag))\n      }\n    },\n    [reset, generateDefaultValues],\n  )\n\n  useEffect(() => {\n    if (tagItem?.error) {\n      setError('name', {\n        message: tagItem.error?.message,\n      })\n    }\n  }, [setError, tagItem?.error])\n\n  // - Listen for asset mutations and update snapshot\n  useEffect(() => {\n    if (!tagItem?.tag) {\n      return undefined\n    }\n\n    // Remember that Sanity listeners ignore joins, order clauses and projections\n    const subscriptionAsset = client\n      .listen(groq`*[_id == $id]`, {id: tagItem?.tag._id})\n      .subscribe(handleTagUpdate)\n\n    return () => {\n      subscriptionAsset?.unsubscribe()\n    }\n  }, [client, handleTagUpdate, tagItem?.tag])\n\n  const Footer = () => (\n    <Box padding={3}>\n      <Flex justify=\"space-between\">\n        {/* Delete button */}\n        <Button\n          disabled={formUpdating}\n          fontSize={1}\n          mode=\"bleed\"\n          onClick={handleDelete}\n          text=\"Delete\"\n          tone=\"critical\"\n        />\n\n        {/* Submit button */}\n        <FormSubmitButton\n          disabled={formUpdating || !isDirty || !isValid}\n          isValid={isValid}\n          lastUpdated={tagItem?.tag?._updatedAt}\n          onClick={handleSubmit(onSubmit)}\n        />\n      </Flex>\n    </Box>\n  )\n\n  if (!currentTag) {\n    return null\n  }\n\n  return (\n    <Dialog\n      animate\n      // oxlint-disable-next-line react/react-compiler\n      footer={<Footer />}\n      header=\"Edit Tag\"\n      id={id}\n      onClose={handleClose}\n      width={1}\n    >\n      {/* Form fields */}\n      <Box as=\"form\" padding={4} onSubmit={handleSubmit(onSubmit)}>\n        {/* Deleted notification */}\n        {!tagItem && (\n          <Card marginBottom={3} padding={3} radius={2} shadow={1} tone=\"critical\">\n            <Text size={1}>This tag cannot be found – it may have been deleted.</Text>\n          </Card>\n        )}\n\n        {/* Hidden button to enable enter key submissions */}\n        <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n        {/* Title */}\n        <FormFieldInputText\n          {...register('name')}\n          disabled={formUpdating}\n          error={errors?.name?.message}\n          label=\"Name\"\n          name=\"name\"\n        />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogTagEdit\n","import {ArrowDownIcon} from '@sanity/icons/ArrowDown'\nimport {ArrowUpIcon} from '@sanity/icons/ArrowUp'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {SearchIcon} from '@sanity/icons/Search'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {Box, Button, Container, Flex, Text, Tooltip} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {styled} from 'styled-components'\n\nimport {inputs} from '../../config/searchFacets'\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectAssetsPicked} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {DIALOG_ACTIONS} from '../../modules/dialog/actions'\nimport {searchActions, selectIsSearchFacetTag} from '../../modules/search'\nimport type {SearchFacetInputSearchableProps, TagActions, TagItem} from '../../types'\n\ntype Props = {\n  actions?: TagActions[]\n  tag: TagItem\n}\n\nconst TagContainer = styled(Flex)`\n  height: ${PANEL_HEIGHT}px;\n`\n\nconst ButtonContainer = styled(Flex)`\n  @media (pointer: fine) {\n    visibility: hidden;\n  }\n\n  @media (hover: hover) and (pointer: fine) {\n    ${TagContainer}:hover & {\n      visibility: visible;\n    }\n  }\n`\n\ntype TagButtonProps = {\n  disabled?: boolean\n  icon: ReactNode\n  onClick: () => void\n  tone?: 'critical' | 'primary'\n  tooltip: string\n}\n\nconst TagButton = (props: TagButtonProps) => {\n  const {disabled, icon, onClick, tone, tooltip} = props\n\n  return (\n    <Tooltip\n      animate\n      content={\n        <Container padding={2} width={0}>\n          <Text muted size={1}>\n            {tooltip}\n          </Text>\n        </Container>\n      }\n      disabled={'ontouchstart' in window}\n      placement=\"top\"\n      portal\n    >\n      <Button\n        disabled={disabled}\n        fontSize={1}\n        icon={icon}\n        mode=\"bleed\"\n        onClick={onClick}\n        padding={2}\n        tone={tone}\n      />\n    </Tooltip>\n  )\n}\n\nconst Tag = (props: Props) => {\n  const {actions, tag} = props\n\n  // Redux\n  const dispatch = useDispatch()\n  const assetsPicked = useTypedSelector(selectAssetsPicked)\n  const isSearchFacetTag = useTypedSelector((state) => selectIsSearchFacetTag(state, tag?.tag?._id))\n\n  // Callbacks\n  const handleSearchFacetTagRemove = () => {\n    dispatch(searchActions.facetsRemoveByTag({tagId: tag.tag._id}))\n  }\n\n  const handleShowAddTagToAssetsDialog = () => {\n    dispatch(dialogActions.showConfirmAssetsTagAdd({assetsPicked, tag: tag.tag}))\n  }\n\n  const handleShowRemoveTagFromAssetsDialog = () => {\n    dispatch(dialogActions.showConfirmAssetsTagRemove({assetsPicked, tag: tag.tag}))\n  }\n\n  const handleShowTagDeleteDialog = () => {\n    dispatch(dialogActions.showConfirmDeleteTag({tag: tag.tag}))\n  }\n\n  const handleShowTagEditDialog = () => {\n    dispatch(DIALOG_ACTIONS.showTagEdit({tagId: tag?.tag?._id}))\n  }\n\n  const handleSearchFacetTagAddOrUpdate = () => {\n    const searchFacet = {\n      ...inputs.tag,\n      value: {\n        label: tag?.tag?.name?.current,\n        value: tag?.tag?._id,\n      },\n    } as SearchFacetInputSearchableProps\n\n    if (isSearchFacetTag) {\n      dispatch(\n        searchActions.facetsUpdate({\n          name: 'tag',\n          operatorType: 'references',\n          value: searchFacet.value,\n        }),\n      )\n    } else {\n      dispatch(searchActions.facetsAdd({facet: searchFacet}))\n    }\n  }\n\n  return (\n    <TagContainer align=\"center\" flex={1} justify=\"space-between\" paddingLeft={3}>\n      <Box flex={1}>\n        <Text\n          muted\n          size={1}\n          style={{\n            opacity: tag?.updating ? 0.5 : 1.0,\n            userSelect: 'none',\n          }}\n          textOverflow=\"ellipsis\"\n        >\n          {tag?.tag?.name?.current}\n        </Text>\n      </Box>\n\n      <ButtonContainer align=\"center\" style={{flexShrink: 0}}>\n        {/* Search facet toggle */}\n        {actions?.includes('search') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={isSearchFacetTag ? <CloseIcon /> : <SearchIcon />}\n            onClick={\n              isSearchFacetTag ? handleSearchFacetTagRemove : handleSearchFacetTagAddOrUpdate\n            }\n            tooltip={isSearchFacetTag ? 'Remove filter' : 'Filter by tag'}\n          />\n        )}\n        {/* Edit icon */}\n        {actions?.includes('edit') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={<EditIcon />}\n            onClick={handleShowTagEditDialog}\n            tone=\"primary\"\n            tooltip=\"Edit tag\"\n          />\n        )}\n        {/* Apply to all */}\n        {actions?.includes('applyAll') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={<ArrowUpIcon />}\n            onClick={handleShowAddTagToAssetsDialog}\n            tone=\"primary\"\n            tooltip=\"Add tag to selected assets\"\n          />\n        )}\n        {/* Remove from all */}\n        {actions?.includes('removeAll') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={<ArrowDownIcon />}\n            onClick={handleShowRemoveTagFromAssetsDialog}\n            tone=\"critical\"\n            tooltip=\"Remove tag from selected assets\"\n          />\n        )}\n\n        {/* Delete icon */}\n        {actions?.includes('delete') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={<TrashIcon />}\n            onClick={handleShowTagDeleteDialog}\n            tone=\"critical\"\n            tooltip=\"Delete tag\"\n          />\n        )}\n      </ButtonContainer>\n    </TagContainer>\n  )\n}\n\nexport default Tag\n","import {Flex, Label} from '@sanity/ui'\nimport {memo, useState} from 'react'\nimport {Virtuoso} from 'react-virtuoso'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectAssetsPicked} from '../../modules/assets'\nimport {selectTags} from '../../modules/tags'\nimport type {TagActions, TagItem} from '../../types'\nimport Tag from '../Tag'\n\nconst VirtualRow = memo(\n  ({\n    isScrolling,\n    item,\n  }: {\n    isScrolling?: boolean\n    item:\n      | string\n      | (TagItem & {\n          actions: TagActions[]\n        })\n  }) => {\n    // Render label\n    if (typeof item === 'string') {\n      return (\n        <Flex\n          align=\"center\"\n          justify=\"space-between\"\n          key={item}\n          paddingX={3}\n          style={{height: `${PANEL_HEIGHT}px`}}\n        >\n          <Label size={0}>{item}</Label>\n        </Flex>\n      )\n    }\n\n    // Render tag - only display actions if we're not in the process of scrolling\n    return <Tag actions={isScrolling ? undefined : item.actions} key={item.tag?._id} tag={item} />\n  },\n)\n\nconst TagsVirtualized = () => {\n  const assetsPicked = useTypedSelector(selectAssetsPicked)\n  const tags = useTypedSelector(selectTags)\n\n  // State\n  const [isScrolling, setIsScrolling] = useState(false)\n\n  // TODO: refactor, there's most certainly a more performant way to do this\n\n  // Filter out all tag IDS used (across all) and dedupe\n  const pickedTagIds = assetsPicked?.reduce((acc: string[], val) => {\n    const assetTagIds = val?.asset?.opt?.media?.tags?.map((tag) => tag._ref) || []\n    acc = acc.concat(assetTagIds)\n    return acc\n  }, [])\n  const pickedTagIdsUnique = [...new Set(pickedTagIds)]\n\n  // Segment tags into two buckets:\n  // 1. those which exist in all picked assets ('applied to all')\n  // 2. those which exist in some picked assets ('applied to some')\n  const tagIdsSegmented = pickedTagIdsUnique.reduce(\n    (acc: {appliedToAll: string[]; appliedToSome: string[]}, tagId) => {\n      const tagIsInEveryAsset = assetsPicked.every((assetItem) => {\n        const tagIndex =\n          assetItem.asset.opt?.media?.tags?.findIndex((tag) => tag._ref === tagId) ?? -1\n        return tagIndex >= 0\n      })\n\n      if (tagIsInEveryAsset) {\n        acc.appliedToAll.push(tagId)\n      } else {\n        acc.appliedToSome.push(tagId)\n      }\n\n      return acc\n    },\n    {\n      appliedToAll: [],\n      appliedToSome: [],\n    },\n  )\n\n  const tagsAppliedToAll = tags\n    .filter((tag) => tagIdsSegmented.appliedToAll.includes(tag.tag._id))\n    .map((tagItem) => ({\n      ...tagItem,\n      actions: ['delete', 'edit', 'removeAll', 'search'] as TagActions[],\n    }))\n  const tagsAppliedToSome = tags\n    .filter((tag) => tagIdsSegmented.appliedToSome.includes(tag.tag._id))\n    .map((tagItem) => ({\n      ...tagItem,\n      actions: ['applyAll', 'delete', 'edit', 'removeAll', 'search'] as TagActions[],\n    }))\n  const tagsUnused = tags\n    .filter((tag) => !pickedTagIdsUnique.includes(tag.tag._id))\n    .map((tagItem) => ({\n      ...tagItem,\n      actions: ['applyAll', 'delete', 'edit', 'search'] as TagActions[],\n    }))\n\n  let items: (\n    | string\n    | (TagItem & {\n        actions: TagActions[]\n      })\n  )[] = []\n  if (assetsPicked.length === 0) {\n    items = tags.map((tagItem) => ({\n      ...tagItem,\n      actions: ['delete', 'edit', 'search'] as TagActions[],\n    }))\n  } else {\n    if (tagsAppliedToAll?.length > 0) {\n      items = [\n        ...items, //\n        assetsPicked.length === 1 ? 'Used' : 'Used by all',\n        ...tagsAppliedToAll,\n      ]\n    }\n    if (tagsAppliedToSome?.length > 0) {\n      items = [\n        ...items, //\n        'Used by some',\n        ...tagsAppliedToSome,\n      ]\n    }\n    if (tagsUnused?.length > 0) {\n      items = [\n        ...items, //\n        'Unused',\n        ...tagsUnused,\n      ]\n    }\n  }\n\n  return (\n    <Virtuoso\n      className=\"media__custom-scrollbar\"\n      computeItemKey={(index) => {\n        const item = items[index]\n        if (typeof item === 'string') {\n          return item\n        }\n        return item!.tag._id\n      }}\n      isScrolling={setIsScrolling}\n      itemContent={(index) => {\n        return <VirtualRow isScrolling={isScrolling} item={items[index]!} />\n      }}\n      style={{flex: 1, overflowX: 'hidden'}}\n      totalCount={items.length}\n    />\n  )\n}\n\nexport default TagsVirtualized\n","import {ComposeIcon} from '@sanity/icons/Compose'\nimport {Box, Button, Flex, Inline, Label} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {DIALOG_ACTIONS} from '../../modules/dialog/actions'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n  allowCreate?: boolean\n  light?: boolean\n  title: string\n}\n\nconst TagViewHeader = ({allowCreate, light, title}: Props) => {\n  const scheme = useColorSchemeValue()\n\n  const dispatch = useDispatch()\n  const tagsCreating = useTypedSelector((state) => state.tags.creating)\n  const tagsFetching = useTypedSelector((state) => state.tags.fetching)\n\n  const handleTagCreate = () => {\n    dispatch(DIALOG_ACTIONS.showTagCreate())\n  }\n\n  return (\n    <>\n      <Flex\n        align=\"center\"\n        justify=\"space-between\"\n        paddingLeft={3}\n        style={{\n          background: light ? getSchemeColor(scheme, 'bg') : 'inherit',\n          borderBottom: '1px solid var(--card-border-color)',\n          flexShrink: 0,\n          height: `${PANEL_HEIGHT}px`,\n        }}\n      >\n        <Inline space={2}>\n          <Label size={0}>{title}</Label>\n          {tagsFetching && (\n            <Label size={0} style={{opacity: 0.3}}>\n              Loading...\n            </Label>\n          )}\n        </Inline>\n        {/* Create new tag button */}\n        {allowCreate && (\n          <Box marginRight={1}>\n            <Button\n              disabled={tagsCreating}\n              fontSize={1} //\n              icon={ComposeIcon}\n              mode=\"bleed\"\n              onClick={handleTagCreate}\n              style={{\n                background: 'transparent',\n                boxShadow: 'none',\n              }}\n            />\n          </Box>\n        )}\n      </Flex>\n    </>\n  )\n}\n\nexport default TagViewHeader\n","import {Box, Flex, Text} from '@sanity/ui'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectAssetsPickedLength} from '../../modules/assets'\nimport {selectTags} from '../../modules/tags'\nimport TagsVirtualized from '../TagsVirtualized'\nimport TagViewHeader from '../TagViewHeader'\n\nconst TagView = () => {\n  const numPickedAssets = useTypedSelector(selectAssetsPickedLength)\n  const tags = useTypedSelector(selectTags)\n  const fetching = useTypedSelector((state) => state.tags.fetching)\n  const fetchCount = useTypedSelector((state) => state.tags.fetchCount)\n  const fetchComplete = fetchCount !== -1\n  const hasTags = !fetching && tags?.length > 0\n  const hasPicked = !!(numPickedAssets > 0)\n\n  return (\n    <Flex direction=\"column\" flex={1} height=\"fill\">\n      <TagViewHeader\n        allowCreate\n        light={hasPicked}\n        title={hasPicked ? 'Tags (in selection)' : 'Tags'}\n      />\n\n      {fetchComplete && !hasTags && (\n        <Box padding={3}>\n          <Text muted size={1}>\n            <em>No tags</em>\n          </Text>\n        </Box>\n      )}\n\n      {hasTags && <TagsVirtualized />}\n    </Flex>\n  )\n}\n\nexport default TagView\n","import {Box} from '@sanity/ui'\nimport {type ReactNode, useCallback} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {dialogActions} from '../../modules/dialog'\nimport type {DialogTagsProps} from '../../types'\nimport Dialog from '../Dialog'\nimport TagView from '../TagView'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogTagsProps\n}\n\nconst DialogTags = (props: Props) => {\n  const {\n    children,\n    dialog: {id},\n  } = props\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleClose = useCallback(() => {\n    dispatch(dialogActions.clear())\n  }, [dispatch])\n\n  return (\n    <Dialog animate header=\"All Tags\" id={id} onClose={handleClose} width={1}>\n      <Box\n        style={{\n          height: '100%',\n          minHeight: '420px', // explicit height required as <TagView> is virtualized\n        }}\n      >\n        <TagView />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogTags\n","import useTypedSelector from '../../hooks/useTypedSelector'\nimport type {Dialog} from '../../types'\nimport DialogAssetEdit from '../DialogAssetEdit'\nimport DialogConfirm from '../DialogConfirm'\nimport DialogSearchFacets from '../DialogSearchFacets'\nimport DialogTagCreate from '../DialogTagCreate'\nimport DialogTagEdit from '../DialogTagEdit'\nimport DialogTags from '../DialogTags'\n\nconst Dialogs = () => {\n  // Redux\n  const currentDialogs = useTypedSelector((state) => state.dialog.items)\n\n  const renderDialogs = (dialogs: Dialog[], index: number) => {\n    if (dialogs.length === 0 || index >= dialogs.length) {\n      return null\n    }\n\n    const dialog = dialogs[index]!\n    const childDialogs = renderDialogs(dialogs, index + 1)\n\n    if (dialog.type === 'assetEdit') {\n      return (\n        <DialogAssetEdit dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogAssetEdit>\n      )\n    }\n\n    if (dialog.type === 'confirm') {\n      return (\n        <DialogConfirm dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogConfirm>\n      )\n    }\n\n    if (dialog.type === 'searchFacets') {\n      return (\n        <DialogSearchFacets dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogSearchFacets>\n      )\n    }\n\n    if (dialog.type === 'tagCreate') {\n      return (\n        <DialogTagCreate dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogTagCreate>\n      )\n    }\n\n    if (dialog.type === 'tagEdit') {\n      return (\n        <DialogTagEdit dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogTagEdit>\n      )\n    }\n\n    if (dialog.type === 'tags') {\n      return (\n        <DialogTags dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogTags>\n      )\n    }\n\n    return null\n  }\n\n  return renderDialogs(currentDialogs, 0)\n}\n\nexport default Dialogs\n","import {type ReactNode, createContext, useContext, useMemo} from 'react'\n\ntype ContextProps = {\n  open: () => void\n}\n\ntype Props = {\n  children: ReactNode\n  open: () => void\n}\n\nconst DropzoneDispatchContext = createContext<ContextProps | undefined>(undefined)\n\nexport const DropzoneDispatchProvider = (props: Props) => {\n  const {children, open} = props\n\n  const contextValue: ContextProps = useMemo(() => ({open}), [open])\n\n  return (\n    <DropzoneDispatchContext.Provider value={contextValue}>\n      {children}\n    </DropzoneDispatchContext.Provider>\n  )\n}\n\nexport const useDropzoneActions = () => {\n  const context = useContext(DropzoneDispatchContext)\n  if (context === undefined) {\n    throw new Error('useDropzoneActions must be used within an DropzoneDispatchProvider')\n  }\n  return context\n}\n","import {ArrowRightIcon} from '@sanity/icons/ArrowRight'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {UploadIcon} from '@sanity/icons/Upload'\nimport {Box, Button, Flex, Inline, Text} from '@sanity/ui'\nimport pluralize from 'pluralize'\n\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport {useDropzoneActions} from '../../contexts/DropzoneDispatchContext'\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\n\ntype Props = {\n  onClose?: () => void\n}\n\nconst Header = (props: Props) => {\n  const {onClose} = props\n\n  const {open} = useDropzoneActions()\n  const {onSelect} = useAssetSourceActions()\n\n  // Redux\n  const assetTypes = useTypedSelector((state) => state.assets.assetTypes)\n  const selectedDocument = useTypedSelector((state) => state.selected.document)\n\n  const {directUploads} = useToolOptions()\n\n  // Row: Current document / close button\n  return (\n    <Box paddingY={2}>\n      <Flex align=\"center\" justify=\"space-between\">\n        {/* Label */}\n        <Box flex={1} marginX={3}>\n          <Inline style={{whiteSpace: 'nowrap'}}>\n            <Text textOverflow=\"ellipsis\" weight=\"semibold\">\n              <span>{onSelect ? `Insert ${assetTypes.join(' or ')}` : 'Browse Assets'}</span>\n            </Text>\n\n            {selectedDocument && (\n              <Box display={['none', 'none', 'block']}>\n                <Text>\n                  <span style={{margin: '0 0.5em'}}>\n                    <ArrowRightIcon />\n                  </span>\n                  <span style={{textTransform: 'capitalize'}}>{selectedDocument._type}</span>\n                </Text>\n              </Box>\n            )}\n          </Inline>\n        </Box>\n\n        <Flex marginX={2}>\n          {/* Upload */}\n          {directUploads && (\n            <Button\n              fontSize={1}\n              icon={UploadIcon}\n              mode=\"bleed\"\n              onClick={open}\n              text={`Upload ${assetTypes.length === 1 ? pluralize(assetTypes[0]!) : 'assets'}`}\n            />\n          )}\n\n          {/* Close */}\n          {onClose && (\n            <Box style={{flexShrink: 0}}>\n              <Button\n                disabled={!onClose}\n                icon={CloseIcon}\n                mode=\"bleed\"\n                onClick={onClose}\n                radius={2}\n              />\n            </Box>\n          )}\n        </Flex>\n      </Flex>\n    </Box>\n  )\n}\n\nexport default Header\n","import {createSelector} from '@reduxjs/toolkit'\n\nimport type {CardAssetData, CardUploadData} from '../types'\nimport type {RootReducerState} from './types'\n\nexport const selectCombinedItems = createSelector(\n  [\n    (state: RootReducerState) => state.assets.allIds,\n    (state: RootReducerState) => state.uploads.allIds,\n  ],\n  (assetIds, uploadIds) => {\n    const assetItems = assetIds.map((id): CardAssetData => ({id, type: 'asset'}))\n    const uploadItems = uploadIds.map((id): CardUploadData => ({id, type: 'upload'}))\n    const combinedItems: (CardAssetData | CardUploadData)[] = [...uploadItems, ...assetItems]\n    return combinedItems\n  },\n)\n","import {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {WarningFilledIcon} from '@sanity/icons/WarningFilled'\nimport {\n  Box,\n  Checkbox,\n  Container,\n  Flex,\n  Spinner,\n  Text,\n  type Theme,\n  type ThemeColorSchemeKey,\n  Tooltip,\n} from '@sanity/ui'\nimport {memo, type MouseEvent, type RefObject} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {styled, css} from 'styled-components'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetById} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport imageDprUrl from '../../utils/imageDprUrl'\nimport {isFileAsset, isImageAsset} from '../../utils/typeGuards'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\ntype Props = {\n  id: string\n  selected: boolean\n}\n\nconst CardWrapper = styled(Flex)`\n  box-sizing: border-box;\n  height: 100%;\n  overflow: hidden;\n  position: relative;\n  width: 100%;\n`\n\nconst CardContainer = styled(Flex)<{$picked?: boolean; theme: Theme; $updating?: boolean}>(({\n  $picked,\n  theme,\n  $updating,\n}) => {\n  return css`\n    border: 1px solid transparent;\n    height: 100%;\n    pointer-events: ${$updating ? 'none' : 'auto'};\n    position: relative;\n    transition: all 300ms;\n    user-select: none;\n    width: 100%;\n\n    border: ${$picked\n      ? `1px solid ${theme.sanity.color.spot.orange} !important`\n      : '1px solid inherit'};\n\n    ${!$updating &&\n    css`\n      @media (hover: hover) and (pointer: fine) {\n        &:hover {\n          border: 1px solid var(--card-border-color);\n        }\n      }\n    `}\n  `\n})\n\nconst ContextActionContainer = styled<typeof Flex, {$scheme: ThemeColorSchemeKey}>(Flex)(({\n  $scheme,\n}) => {\n  return css`\n    cursor: pointer;\n    height: ${PANEL_HEIGHT}px;\n    transition: all 300ms;\n    @media (hover: hover) and (pointer: fine) {\n      &:hover {\n        background: ${getSchemeColor($scheme, 'bg')};\n      }\n    }\n  `\n})\n\nconst StyledWarningOutlineIcon = styled(WarningFilledIcon)(({theme}) => {\n  return {\n    color: theme.sanity.color.spot.red,\n  }\n})\n\nconst CardAsset = (props: Props) => {\n  const {id, selected} = props\n\n  const scheme = useColorSchemeValue()\n\n  // Refs\n  const shiftPressed: RefObject<boolean> = useKeyPress('shift')\n\n  // Redux\n  const dispatch = useDispatch()\n  const lastPicked = useTypedSelector((state) => state.assets.lastPicked)\n  const item = useTypedSelector((state) => selectAssetById(state, id))\n\n  const asset = item?.asset\n  const error = item?.error\n  const isOpaque = item?.asset?.metadata?.isOpaque\n  const picked = item?.picked\n  const updating = item?.updating\n\n  const {onSelect} = useAssetSourceActions()\n\n  // Short circuit if no asset is available\n  if (!asset) {\n    return null\n  }\n\n  // Callbacks\n  const handleAssetClick = (e: MouseEvent<HTMLDivElement>) => {\n    e.stopPropagation()\n\n    if (onSelect) {\n      onSelect([\n        {\n          kind: 'assetDocumentId',\n          value: asset._id,\n        },\n      ])\n    } else if (shiftPressed.current) {\n      if (picked) {\n        dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n      } else {\n        dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n      }\n    } else {\n      dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n    }\n  }\n\n  const handleContextActionClick = (e: MouseEvent) => {\n    e.stopPropagation()\n\n    if (onSelect) {\n      dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n    } else if (shiftPressed.current && !picked) {\n      dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n    } else {\n      dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n    }\n  }\n\n  const opacityContainer = updating ? 0.5 : 1\n  const opacityPreview = selected || updating ? 0.25 : 1\n\n  return (\n    <CardWrapper padding={1}>\n      <CardContainer direction=\"column\" $picked={picked} $updating={item.updating}>\n        {/* Image */}\n        <Box\n          flex={1}\n          style={{\n            cursor: selected ? 'default' : 'pointer',\n            position: 'relative',\n          }}\n        >\n          <div onClick={handleAssetClick} style={{height: '100%', opacity: opacityPreview}}>\n            {/* File icon */}\n            {isFileAsset(asset) && <FileIcon extension={asset.extension} width=\"80px\" />}\n\n            {/* Image */}\n            {isImageAsset(asset) && (\n              <Image\n                draggable={false}\n                $scheme={scheme}\n                $showCheckerboard={!isOpaque}\n                src={imageDprUrl(asset, {height: 250, width: 250})}\n                style={{\n                  draggable: false,\n                  transition: 'opacity 1000ms',\n                }}\n              />\n            )}\n          </div>\n\n          {/* Selected check icon */}\n          {selected && !updating && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                opacity: opacityContainer,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Text size={2}>\n                <CheckmarkCircleIcon />\n              </Text>\n            </Flex>\n          )}\n\n          {/* Spinner */}\n          {updating && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Spinner />\n            </Flex>\n          )}\n        </Box>\n\n        {/* Footer */}\n        <ContextActionContainer\n          align=\"center\"\n          onClick={handleContextActionClick}\n          paddingX={1}\n          $scheme={scheme}\n          style={{opacity: opacityContainer}}\n        >\n          {onSelect ? (\n            <EditIcon\n              style={{\n                flexShrink: 0,\n                opacity: 0.5,\n              }}\n            />\n          ) : (\n            <Checkbox\n              checked={picked}\n              readOnly\n              style={{\n                flexShrink: 0,\n                pointerEvents: 'none',\n                transform: 'scale(0.8)',\n              }}\n            />\n          )}\n\n          <Box marginLeft={2}>\n            <Text muted size={0} textOverflow=\"ellipsis\">\n              {asset.originalFilename}\n            </Text>\n          </Box>\n        </ContextActionContainer>\n\n        {/* TODO: DRY */}\n        {/* Error button */}\n        {error && (\n          <Box\n            padding={3}\n            style={{\n              position: 'absolute',\n              right: 0,\n              top: 0,\n            }}\n          >\n            <Tooltip\n              animate\n              content={\n                <Container padding={2} width={0}>\n                  <Text size={1}>{error}</Text>\n                </Container>\n              }\n              placement=\"left\"\n              portal\n            >\n              <Text size={1}>\n                <StyledWarningOutlineIcon color=\"critical\" />\n              </Text>\n            </Tooltip>\n          </Box>\n        )}\n      </CardContainer>\n    </CardWrapper>\n  )\n}\n\nexport default memo(CardAsset)\n","import {Observable, from, of} from 'rxjs'\nimport {mergeMap} from 'rxjs/operators'\n\nconst PREVIEW_WIDTH = 180 // px\n\nconst createBlob = (img: HTMLImageElement): Promise<Blob | null> => {\n  return new Promise((resolve) => {\n    const imageAspect = img.width / img.height\n\n    // Create a canvas element which we'll use to generate a low resolution preview.\n    // Ensure that the canvas is at least 1 pixel high as blob generation will fail otherwise.\n    const canvas: HTMLCanvasElement = document.createElement('canvas')\n    canvas.width = PREVIEW_WIDTH\n    canvas.height = Math.max(PREVIEW_WIDTH / imageAspect, 1)\n\n    // Fail silently if we're unable to generate a preview image.\n    // This can often be the case when trying to render SVGs containing `<foreignObject>` elements.\n    try {\n      const ctx = canvas.getContext('2d')\n      ctx?.drawImage(img, 0, 0, PREVIEW_WIDTH, PREVIEW_WIDTH / imageAspect)\n      canvas.toBlob(resolve, 'image/jpeg')\n    } catch (err) {\n      console.warn(`Unable to generate preview image:`, err)\n    }\n  })\n}\n\nconst createImageEl = (file: File): Promise<HTMLImageElement> => {\n  return new Promise((resolve) => {\n    const blobUrlLarge = window.URL.createObjectURL(file)\n    const img = new Image()\n    img.onload = () => {\n      window.URL.revokeObjectURL(blobUrlLarge)\n      resolve(img)\n    }\n    img.src = blobUrlLarge\n  })\n}\n\nconst generatePreviewBlobUrl = async (file: File): Promise<string> => {\n  const imageEl = await createImageEl(file)\n  const blob = await createBlob(imageEl)\n\n  if (!blob) {\n    throw Error('Unable to generate file Blob')\n  }\n\n  return window.URL.createObjectURL(blob)\n}\n\nexport const generatePreviewBlobUrl$ = (file: File): Observable<string> => {\n  return of(null).pipe(mergeMap(() => from(generatePreviewBlobUrl(file))))\n}\n","import {Subject, Subscription, Observable, from} from 'rxjs'\n// Takes a observable-returning function and returns a new function that limits on the number of\n// concurrent observables.\nimport {first, mergeMap} from 'rxjs/operators'\n\nconst DEFAULT_CONCURRENCY = 4\n\nfunction remove<T>(array: Array<T>, item: T): Array<T> {\n  const index = array.indexOf(item)\n  if (index > -1) {\n    array.splice(index, 1)\n  }\n  return array\n}\n\nexport const createThrottler = (concurrency: number = DEFAULT_CONCURRENCY) => {\n  const currentSubscriptions: Array<Subscription> = []\n  const pendingObservables: Array<Observable<any>> = []\n  const ready$ = new Subject()\n\n  function request(observable: Observable<any>): Observable<any> {\n    return new Observable((observer) => {\n      if (currentSubscriptions.length >= concurrency) {\n        return scheduleAndWait$(observable)\n          .pipe(mergeMap(request)) //\n          .subscribe(observer)\n      }\n      const subscription = observable.subscribe(observer)\n      currentSubscriptions.push(subscription)\n      return () => {\n        remove(currentSubscriptions, subscription)\n        remove(pendingObservables, observable)\n        subscription.unsubscribe()\n        while (pendingObservables.length > 0 && currentSubscriptions.length < concurrency) {\n          ready$.next(pendingObservables.shift())\n        }\n      }\n    })\n  }\n\n  function scheduleAndWait$(observable: Observable<any>): Observable<any> {\n    pendingObservables.push(observable)\n    return ready$.asObservable().pipe(first((obs) => obs === observable))\n  }\n\n  return request\n}\n\nexport const withMaxConcurrency = (\n  func: (...args: any[]) => Observable<any>,\n  concurrency: number = DEFAULT_CONCURRENCY,\n) => {\n  const throttler = createThrottler(concurrency)\n  return (...args: Array<any>) => from(throttler(func(...args)))\n}\n","// Sourced from:\n// https://github.com/sanity-io/sanity/blob/ccb777e115a8cdf20d81a9a2bc9d8c228568faff/packages/%40sanity/form-builder/src/sanity/inputs/client-adapters/assets.ts\n\nimport type {SanityAssetDocument, SanityClient, SanityImageAssetDocument} from '@sanity/client'\nimport {Observable, of, throwError} from 'rxjs'\nimport {map, mergeMap} from 'rxjs/operators'\n\nimport type {HttpError} from '../types'\nimport {withMaxConcurrency} from './withMaxConcurrency'\n\nconst fetchExisting$ = (client: SanityClient, type: string, hash: string) => {\n  return client.observable.fetch('*[_type == $documentType && sha1hash == $hash][0]', {\n    documentType: type,\n    hash,\n  })\n}\n\nconst readFile$ = (file: File): Observable<ArrayBuffer> => {\n  return new Observable((subscriber) => {\n    const reader = new FileReader()\n    reader.onload = () => {\n      subscriber.next(reader.result as ArrayBuffer)\n      subscriber.complete()\n    }\n    reader.onerror = (err) => {\n      subscriber.error(err)\n    }\n    reader.readAsArrayBuffer(file)\n    return () => {\n      reader.abort()\n    }\n  })\n}\n\nconst hexFromBuffer = (buffer: ArrayBuffer): string => {\n  return Array.prototype.map\n    .call(new Uint8Array(buffer), (x) => `00${x.toString(16)}`.slice(-2))\n    .join('')\n}\n\nexport const hashFile$ = (file: File): Observable<string> => {\n  if (!window.crypto || !window.crypto.subtle || !window.FileReader) {\n    return throwError({\n      message: 'Unable to generate hash: uploads are only allowed in secure contexts',\n      statusCode: 500,\n    })\n  }\n  return readFile$(file).pipe(\n    mergeMap((arrayBuffer) => window.crypto.subtle.digest('SHA-1', arrayBuffer)),\n    map(hexFromBuffer),\n  )\n}\n\nconst uploadSanityAsset$ = (\n  client: SanityClient,\n  assetType: 'file' | 'image',\n  file: File,\n  hash: string,\n) => {\n  return of(null).pipe(\n    // NOTE: the sanity api will still dedupe unique files, but this saves us from uploading the asset file entirely\n    mergeMap(() => fetchExisting$(client, `sanity.${assetType}Asset`, hash)),\n    // Cancel if the asset already exists\n    mergeMap((existingAsset: SanityAssetDocument | SanityImageAssetDocument | null) => {\n      if (existingAsset) {\n        return throwError({\n          message: 'Asset already exists',\n          statusCode: 409,\n        } satisfies HttpError)\n      }\n\n      return of(null)\n    }),\n    mergeMap(() => {\n      // Begin upload if no existing asset found\n      return client.observable.assets\n        .upload(assetType, file, {\n          extract: ['blurhash', 'exif', 'location', 'lqip', 'palette'],\n          preserveFilename: true,\n        })\n        .pipe(\n          map((event) =>\n            event.type === 'response'\n              ? {\n                  // rewrite to a 'complete' event\n                  asset: event.body.document,\n                  id: event.body.document._id,\n                  type: 'complete',\n                }\n              : event,\n          ),\n        )\n    }),\n  )\n}\n\nexport const uploadAsset$ = withMaxConcurrency(uploadSanityAsset$)\n","import {createSelector, createSlice, type PayloadAction} from '@reduxjs/toolkit'\nimport type {ClientError, SanityAssetDocument, SanityImageAssetDocument} from '@sanity/client'\nimport groq from 'groq'\nimport {empty, merge, of} from 'rxjs'\nimport {catchError, delay, filter, mergeMap, takeUntil, withLatestFrom} from 'rxjs/operators'\n\nimport type {HttpError, MyEpic, SanityUploadProgressEvent, UploadItem} from '../../types'\nimport constructFilter from '../../utils/constructFilter'\nimport {generatePreviewBlobUrl$} from '../../utils/generatePreviewBlobUrl'\nimport {hashFile$, uploadAsset$} from '../../utils/uploadSanityAsset'\nimport {assetsActions} from '../assets'\nimport type {RootReducerState} from '../types'\nimport {UPLOADS_ACTIONS} from './actions'\n\nexport type UploadsReducerState = {\n  allIds: string[]\n  byIds: Record<string, UploadItem>\n}\n\nconst initialState = {\n  allIds: [],\n  byIds: {},\n} as UploadsReducerState\n\nconst uploadsSlice = createSlice({\n  name: 'uploads',\n  initialState,\n  extraReducers: (builder) => {\n    builder //\n      .addCase(UPLOADS_ACTIONS.uploadComplete, (state, action) => {\n        const {asset} = action.payload\n        if (state.byIds[asset.sha1hash]) {\n          state.byIds[asset.sha1hash]!.status = 'complete'\n        }\n      })\n  },\n  reducers: {\n    checkRequest(\n      _state,\n      _action: PayloadAction<{assets: (SanityAssetDocument | SanityImageAssetDocument)[]}>,\n    ) {\n      //\n    },\n    checkComplete(state, action: PayloadAction<{results: Record<string, string | null>}>) {\n      const {results} = action.payload\n\n      const assetHashes = Object.keys(results)\n\n      assetHashes.forEach((hash) => {\n        const deleteIndex = state.allIds.indexOf(hash)\n        if (deleteIndex >= 0) {\n          state.allIds.splice(deleteIndex, 1)\n        }\n\n        if (state.byIds[hash]) {\n          const blobUrl = state.byIds[hash].objectUrl\n          if (blobUrl) {\n            window.URL.revokeObjectURL(blobUrl)\n          }\n\n          delete state.byIds[hash]\n        }\n      })\n    },\n    previewReady(state, action: PayloadAction<{hash: string; blobUrl: string}>) {\n      const {blobUrl, hash} = action.payload\n      if (state.byIds[hash]) {\n        state.byIds[hash].objectUrl = blobUrl\n      }\n    },\n    uploadCancel(state, action: PayloadAction<{hash: string}>) {\n      const {hash} = action.payload\n      const deleteIndex = state.allIds.indexOf(hash)\n      if (deleteIndex >= 0) {\n        state.allIds.splice(deleteIndex, 1)\n      }\n      if (state.byIds[hash]) {\n        delete state.byIds[hash]\n      }\n    },\n    uploadError(state, action: PayloadAction<{error: HttpError; hash: string}>) {\n      const {hash} = action.payload\n      const deleteIndex = state.allIds.indexOf(hash)\n      if (deleteIndex >= 0) {\n        state.allIds.splice(deleteIndex, 1)\n      }\n      delete state.byIds[hash]\n    },\n    uploadRequest(\n      _state,\n      _action: PayloadAction<{file: File; forceAsAssetType?: 'file' | 'image'}>,\n    ) {\n      //\n    },\n    uploadProgress(\n      state,\n      action: PayloadAction<{event: SanityUploadProgressEvent; uploadHash: string}>,\n    ) {\n      const {event, uploadHash} = action.payload\n      state.byIds[uploadHash]!.percent = event.percent\n      state.byIds[uploadHash]!.status = 'uploading'\n    },\n    uploadStart(state, action: PayloadAction<{file: File; uploadItem: UploadItem}>) {\n      const {uploadItem} = action.payload\n      if (!state.allIds.includes(uploadItem.hash)) {\n        state.allIds.push(uploadItem.hash)\n      }\n      state.byIds[uploadItem.hash] = uploadItem\n    },\n  },\n})\n\n// Epics\n\nexport const uploadsAssetStartEpic: MyEpic = (action$, _state$, {client}) =>\n  action$.pipe(\n    filter(uploadsActions.uploadStart.match),\n    mergeMap((action) => {\n      const {file, uploadItem} = action.payload\n\n      return merge(\n        // Generate low res preview\n        of(null).pipe(\n          mergeMap(() => generatePreviewBlobUrl$(file)),\n          mergeMap((url) => {\n            return of(\n              uploadsActions.previewReady({\n                blobUrl: url,\n                hash: uploadItem.hash,\n              }),\n            )\n          }),\n        ),\n        // Upload asset and receive progress / complete events\n        of(null).pipe(\n          // delay(500000), // debug uploads\n          mergeMap(() => uploadAsset$(client, uploadItem.assetType, file, uploadItem.hash)),\n          takeUntil(\n            action$.pipe(\n              filter(uploadsActions.uploadCancel.match),\n              filter((v) => v.payload.hash === uploadItem.hash),\n            ),\n          ),\n          mergeMap((event) => {\n            if (event?.type === 'complete') {\n              return of(\n                UPLOADS_ACTIONS.uploadComplete({\n                  asset: event.asset,\n                }),\n              )\n            }\n            if (event?.type === 'progress' && event?.stage === 'upload') {\n              return of(\n                uploadsActions.uploadProgress({\n                  event,\n                  uploadHash: uploadItem.hash,\n                }),\n              )\n            }\n            return empty()\n          }),\n          catchError((error: ClientError) =>\n            of(\n              uploadsActions.uploadError({\n                error: {\n                  message: error?.message || 'Internal error',\n                  statusCode: error?.statusCode || 500,\n                },\n                hash: uploadItem.hash,\n              }),\n            ),\n          ),\n        ),\n      )\n    }),\n  )\n\nexport const uploadsAssetUploadEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(uploadsActions.uploadRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {file, forceAsAssetType} = action.payload\n\n      return of(action).pipe(\n        // Generate SHA1 hash from local file\n        // This will throw in insecure contexts (non-localhost / https)\n        mergeMap(() => hashFile$(file)),\n        // Ignore if the file exists and is currently being uploaded\n        filter((hash) => {\n          const exists = !!state.uploads.byIds[hash]\n          return !exists\n        }),\n        // Dispatch start action and begin upload process\n        mergeMap((hash) => {\n          const assetType = forceAsAssetType || (file.type.indexOf('image') >= 0 ? 'image' : 'file')\n          const uploadItem = {\n            _type: 'upload',\n            assetType,\n            hash,\n            name: file.name,\n            size: file.size,\n            status: 'queued',\n          } as UploadItem\n          return of(uploadsActions.uploadStart({file, uploadItem}))\n        }),\n      )\n    }),\n  )\n\nexport const uploadsCompleteQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(UPLOADS_ACTIONS.uploadComplete.match),\n    mergeMap((action) => {\n      return of(\n        uploadsActions.checkRequest({\n          assets: [action.payload.asset],\n        }),\n      )\n    }),\n  )\n\nexport const uploadsCheckRequestEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(uploadsActions.checkRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assets} = action.payload\n\n      const documentIds = assets.map((asset) => asset._id)\n\n      const constructedFilter = constructFilter({\n        assetTypes: state.assets.assetTypes,\n        searchFacets: state.search.facets,\n        searchQuery: state.search.query,\n      })\n\n      const query = groq`\n        *[${constructedFilter} && _id in $documentIds].sha1hash\n      `\n\n      return of(action).pipe(\n        delay(1000), // give Sanity some time to register the recently uploaded asset\n        mergeMap(() => client.observable.fetch<string[]>(query, {documentIds})),\n        mergeMap((resultHashes) => {\n          const checkedResults = assets.reduce((acc: Record<string, string | null>, asset) => {\n            acc[asset.sha1hash] = resultHashes.includes(asset.sha1hash) ? asset._id : null\n            return acc\n          }, {})\n\n          return of(\n            uploadsActions.checkComplete({results: checkedResults}), //\n            assetsActions.insertUploads({results: checkedResults}),\n          )\n        }),\n      )\n    }),\n  )\n\n// Selectors\n\nexport const selectUploadById = createSelector(\n  [\n    (state: RootReducerState) => state.uploads.byIds,\n    (_state: RootReducerState, uploadId: string) => uploadId,\n  ],\n  (byIds, uploadId) => byIds[uploadId],\n)\n\nexport const uploadsActions = {...uploadsSlice.actions}\n\nexport default uploadsSlice.reducer\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Button, Flex, Text} from '@sanity/ui'\nimport filesize from 'filesize'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectUploadById, uploadsActions} from '../../modules/uploads'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\ntype Props = {\n  id: string\n}\n\nconst CardWrapper = styled(Flex)`\n  box-sizing: border-box;\n  height: 100%;\n  overflow: hidden;\n  position: relative;\n  width: 100%;\n`\n\nconst CardUpload = (props: Props) => {\n  const {id} = props\n\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const item = useTypedSelector((state) => selectUploadById(state, id))\n\n  if (!item) {\n    return null\n  }\n\n  const fileSize = filesize(item.size, {base: 10, round: 0})\n  const percentLoaded = Math.round(item.percent || 0) // (0 - 100)\n\n  const isComplete = item.status === 'complete'\n  const isUploading = item.status === 'uploading'\n  const isQueued = item.status === 'queued'\n\n  let status\n  if (isComplete) {\n    status = 'Verifying'\n  }\n  if (isUploading) {\n    status = `${percentLoaded}%`\n  }\n  if (isQueued) {\n    status = 'Queued'\n  }\n\n  // Callbacks\n  const handleCancelUpload = () => {\n    dispatch(uploadsActions.uploadCancel({hash: item.hash}))\n  }\n\n  return (\n    <CardWrapper padding={1}>\n      <Flex\n        direction=\"column\"\n        flex={1}\n        style={{\n          background: getSchemeColor(scheme, 'bg'),\n          border: '1px solid transparent',\n          height: '100%',\n          position: 'relative',\n        }}\n      >\n        {/* Progress bar */}\n        <div\n          style={{\n            background: 'var(--card-fg-color)',\n            bottom: 0,\n            height: '1px',\n            left: 0,\n            position: 'absolute',\n            width: '100%',\n            transform: `scaleX(${percentLoaded * 0.01})`,\n            transformOrigin: 'bottom left',\n            transition: 'all 1000ms ease-out',\n          }}\n        />\n\n        <Box flex={1} style={{position: 'relative'}}>\n          {item.assetType === 'image' && item?.objectUrl && (\n            <Image\n              draggable={false}\n              $scheme={scheme}\n              src={item.objectUrl}\n              style={{\n                opacity: 0.4,\n              }}\n            />\n          )}\n\n          {item.assetType === 'file' && (\n            <div style={{height: '100%', opacity: 0.1}}>\n              <FileIcon width=\"80px\" />\n            </div>\n          )}\n\n          {/*\n          Cancel upload button.\n          Assets will only have a `complete` status _after_ it has been created on your dataset.\n          As such, we also hide the cancel button when `percentLoaded === 100`, as cancelling when the asset\n          has been fully uploaded (even with a status of `progress`) won't stop the asset from being created.\n        */}\n          {!isComplete && percentLoaded !== 100 && (\n            <Flex\n              align=\"center\"\n              direction=\"column\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Button\n                fontSize={4}\n                icon={CloseIcon}\n                mode=\"bleed\"\n                onClick={handleCancelUpload}\n                padding={2}\n                style={{background: 'none', boxShadow: 'none'}}\n                tone=\"critical\"\n              />\n            </Flex>\n          )}\n        </Box>\n\n        {/* Footer */}\n        <Flex\n          align=\"center\"\n          justify=\"space-between\"\n          paddingX={2}\n          style={{height: `${PANEL_HEIGHT}px`}}\n        >\n          <Box flex={1} marginRight={1}>\n            <Text size={0} textOverflow=\"ellipsis\">\n              {item.name} ({fileSize})\n            </Text>\n          </Box>\n          <Text size={0} style={{flexShrink: 0}} weight=\"semibold\">\n            {status}\n          </Text>\n        </Flex>\n      </Flex>\n    </CardWrapper>\n  )\n}\n\nexport default CardUpload\n","import {memo} from 'react'\nimport {VirtuosoGrid} from 'react-virtuoso'\nimport {styled} from 'styled-components'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport type {CardAssetData, CardUploadData} from '../../types'\nimport CardAsset from '../CardAsset'\nimport CardUpload from '../CardUpload'\n\ntype Props = {\n  items: (CardAssetData | CardUploadData)[]\n  onLoadMore?: () => void\n}\n\nconst CARD_HEIGHT = 220\nconst CARD_WIDTH = 240\n\nconst VirtualCell = memo(\n  ({item, selected}: {item: CardAssetData | CardUploadData; selected: boolean}) => {\n    if (item?.type === 'asset') {\n      return <CardAsset id={item.id} selected={selected} />\n    }\n\n    if (item?.type === 'upload') {\n      return <CardUpload id={item.id} />\n    }\n\n    return null\n  },\n)\n\nconst StyledItemContainer = styled.div`\n  height: ${CARD_HEIGHT}px;\n  width: ${CARD_WIDTH}px;\n`\n\nconst ItemContainer = (props: any) => {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars -- we're doing this to avoid sc warnings about `context` passed as an attribute\n  const {context, ref, ...rest} = props\n  return <StyledItemContainer ref={ref} {...rest} />\n}\n\nconst StyledListContainer = styled.div`\n  display: grid;\n  grid-template-columns: repeat(auto-fill, ${CARD_WIDTH}px);\n  grid-template-rows: repeat(auto-fill, ${CARD_HEIGHT}px);\n  justify-content: center;\n  margin: 0 auto;\n`\n\nconst ListContainer = (props: any) => {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars -- we're doing this to avoid sc warnings about `context` passed as an attribute\n  const {context, ref, ...rest} = props\n  return <StyledListContainer ref={ref} {...rest} />\n}\n\nconst AssetGridVirtualized = (props: Props) => {\n  const {items, onLoadMore} = props\n\n  // Redux\n  const selectedAssets = useTypedSelector((state) => state.selected.assets)\n\n  const selectedIds = (selectedAssets && selectedAssets.map((asset) => asset._id)) || []\n  const totalCount = items?.length\n\n  if (totalCount === 0) {\n    return null\n  }\n\n  return (\n    <VirtuosoGrid\n      className=\"media__custom-scrollbar\"\n      computeItemKey={(index) => {\n        const item = items[index]\n        return item?.id ?? index\n      }}\n      components={{\n        Item: ItemContainer,\n        List: ListContainer,\n      }}\n      endReached={onLoadMore}\n      itemContent={(index) => {\n        const item = items[index]!\n        const selected = selectedIds.includes(item.id)\n        return <VirtualCell item={item} selected={selected} />\n      }}\n      overscan={48}\n      style={{overflowX: 'hidden', overflowY: 'scroll'}}\n      totalCount={totalCount}\n    />\n  )\n}\n\nexport default AssetGridVirtualized\n","import {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {ChevronUpIcon} from '@sanity/icons/ChevronUp'\nimport {Box, Label} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\n\ntype Props = {\n  field?: string\n  title?: string\n}\n\nconst TableHeaderItem = (props: Props) => {\n  const {field, title} = props\n\n  // Redux\n  const dispatch = useDispatch()\n  const order = useTypedSelector((state) => state.assets.order)\n\n  const isActive = order.field === field\n\n  // Callbacks\n  const handleClick = () => {\n    if (!field || !title) {\n      return\n    }\n\n    if (isActive) {\n      const direction = order.direction === 'asc' ? 'desc' : 'asc'\n      dispatch(assetsActions.orderSet({order: {field, direction}}))\n    } else {\n      dispatch(assetsActions.orderSet({order: {field, direction: 'asc'}}))\n    }\n  }\n\n  return (\n    <Label muted={!field} size={0}>\n      <Box\n        onClick={field ? handleClick : undefined}\n        style={{\n          cursor: field ? 'pointer' : 'default',\n          display: 'inline',\n          whiteSpace: 'nowrap',\n        }}\n      >\n        <span\n          style={{\n            marginRight: '0.4em',\n          }}\n        >\n          {title}\n        </span>\n\n        {isActive && order?.direction === 'asc' && <ChevronUpIcon />}\n        {isActive && order?.direction === 'desc' && <ChevronDownIcon />}\n      </Box>\n    </Label>\n  )\n}\n\nexport default TableHeaderItem\n","import {Checkbox, Flex, Grid, type ThemeColorSchemeKey, useMediaIndex} from '@sanity/ui'\nimport {type MouseEvent} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {styled, css} from 'styled-components'\n\nimport {GRID_TEMPLATE_COLUMNS, PANEL_HEIGHT} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetsLength, selectAssetsPickedLength} from '../../modules/assets'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport TableHeaderItem from '../TableHeaderItem'\n\n// TODO: DRY\nconst ContextActionContainer = styled<typeof Flex, {$scheme: ThemeColorSchemeKey}>(Flex)(({\n  $scheme,\n}) => {\n  return css`\n    cursor: pointer;\n    @media (hover: hover) and (pointer: fine) {\n      &:hover {\n        background: ${getSchemeColor($scheme, 'bg')};\n      }\n    }\n  `\n})\n\nconst TableHeader = () => {\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const fetching = useTypedSelector((state) => state.assets.fetching)\n  const itemsLength = useTypedSelector(selectAssetsLength)\n  const numPickedAssets = useTypedSelector(selectAssetsPickedLength)\n\n  const mediaIndex = useMediaIndex()\n  const {onSelect} = useAssetSourceActions()\n\n  const allSelected = numPickedAssets === itemsLength\n\n  // Callbacks\n  const handleContextActionClick = (e: MouseEvent) => {\n    e.stopPropagation()\n\n    if (allSelected) {\n      dispatch(assetsActions.pickClear())\n    } else {\n      dispatch(assetsActions.pickAll())\n    }\n  }\n\n  // Note that even though we hide the table header on smaller breakpoints, we never set it to\n  // `display: none`, as doing so causes issues with react-virtuoso.\n  // Instead, we give it 0 height and hide it with `visibility: hidden`.\n  return (\n    <Grid\n      style={{\n        alignItems: 'center',\n        background: 'var(--card-bg-color)',\n        borderBottom: '1px solid var(--card-border-color)',\n        gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n        gridTemplateColumns: GRID_TEMPLATE_COLUMNS.LARGE,\n        height: mediaIndex < 3 ? 0 : `${PANEL_HEIGHT}px`,\n        letterSpacing: '0.025em',\n        position: 'sticky',\n        textTransform: 'uppercase',\n        top: 0,\n        visibility: mediaIndex < 3 ? 'hidden' : 'visible',\n        width: '100%',\n        zIndex: 1, // force stacking context\n      }}\n    >\n      {onSelect ? (\n        <TableHeaderItem />\n      ) : (\n        <ContextActionContainer\n          align=\"center\"\n          justify=\"center\"\n          onClick={handleContextActionClick}\n          $scheme={scheme}\n          style={{\n            height: '100%',\n            position: 'relative',\n          }}\n        >\n          <Checkbox\n            checked={!fetching && allSelected}\n            readOnly\n            style={{\n              pointerEvents: 'none', // TODO: consider alternative for usability\n              transform: 'scale(0.8)',\n            }}\n          />\n        </ContextActionContainer>\n      )}\n\n      <TableHeaderItem />\n      <TableHeaderItem field=\"originalFilename\" title=\"Filename\" />\n      <TableHeaderItem title=\"Resolution\" />\n      <TableHeaderItem field=\"mimeType\" title=\"MIME type\" />\n      <TableHeaderItem field=\"size\" title=\"Size\" />\n      <TableHeaderItem field=\"_updatedAt\" title=\"Last updated\" />\n      <TableHeaderItem title=\"References\" />\n      <TableHeaderItem />\n    </Grid>\n  )\n}\n\nexport default TableHeader\n","import {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {WarningFilledIcon} from '@sanity/icons/WarningFilled'\nimport {\n  Box,\n  Checkbox,\n  Container,\n  Flex,\n  Grid,\n  Spinner,\n  Text,\n  type ThemeColorSchemeKey,\n  Tooltip,\n  useMediaIndex,\n} from '@sanity/ui'\nimport {formatRelative} from 'date-fns'\nimport filesize from 'filesize'\nimport {\n  memo,\n  type MouseEvent,\n  type RefObject,\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {WithReferringDocuments, useColorSchemeValue} from 'sanity'\nimport {styled, css} from 'styled-components'\n\nimport {GRID_TEMPLATE_COLUMNS} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetById} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport getAssetResolution from '../../utils/getAssetResolution'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport {getUniqueDocuments} from '../../utils/getUniqueDocuments'\nimport imageDprUrl from '../../utils/imageDprUrl'\nimport {isFileAsset, isImageAsset} from '../../utils/typeGuards'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\n// Duration (ms) to wait before reference counts (and associated listeners) are rendered\nconst REFERENCE_COUNT_VISIBILITY_DELAY = 750\n\ntype Props = {\n  id: string\n  selected: boolean\n}\n\nconst ContainerGrid = styled<\n  typeof Grid,\n  {$selected?: boolean; $scheme: ThemeColorSchemeKey; $updating?: boolean}\n>(Grid)(({$scheme, $selected, $updating}) => {\n  return css`\n    align-items: center;\n    cursor: ${$selected ? 'default' : 'pointer'};\n    height: 100%;\n    pointer-events: ${$updating ? 'none' : 'auto'};\n    user-select: none;\n    white-space: nowrap;\n\n    ${!$updating &&\n    css`\n      @media (hover: hover) and (pointer: fine) {\n        &:hover {\n          background: ${getSchemeColor($scheme, 'bg')};\n        }\n      }\n    `}\n  `\n})\n\nconst ContextActionContainer = styled<typeof Flex, {$scheme: ThemeColorSchemeKey}>(Flex)(({\n  $scheme,\n}) => {\n  return css`\n    cursor: pointer;\n    @media (hover: hover) and (pointer: fine) {\n      &:hover {\n        background: ${getSchemeColor($scheme, 'bg2')};\n      }\n    }\n  `\n})\n\nconst StyledWarningIcon = styled(WarningFilledIcon)(({theme}) => {\n  return {\n    color: theme.sanity.color.spot.red,\n  }\n})\n\nconst TableRowAsset = (props: Props) => {\n  const {id, selected} = props\n\n  const scheme = useColorSchemeValue()\n\n  const shiftPressed: RefObject<boolean> = useKeyPress('shift')\n\n  const [referenceCountVisible, setReferenceCountVisible] = useState(false)\n  const refCountVisibleTimeout = useRef<ReturnType<typeof window.setTimeout>>(null)\n\n  const dispatch = useDispatch()\n  const lastPicked = useTypedSelector((state) => state.assets.lastPicked)\n  const item = useTypedSelector((state) => selectAssetById(state, id))\n\n  const mediaIndex = useMediaIndex()\n\n  const asset = item?.asset\n  const error = item?.error\n  const isOpaque = item?.asset?.metadata?.isOpaque\n  const picked = item?.picked\n  const updating = item?.updating\n\n  const {onSelect} = useAssetSourceActions()\n\n  const handleContextActionClick = useCallback(\n    (e: MouseEvent<HTMLDivElement>) => {\n      e.stopPropagation()\n\n      if (!asset) return\n      if (onSelect) {\n        dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n      } else if (shiftPressed.current && !picked) {\n        dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n      } else {\n        dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n      }\n    },\n    [asset, dispatch, lastPicked, onSelect, picked, shiftPressed],\n  )\n\n  const handleClick = useCallback(\n    (e: MouseEvent<HTMLDivElement>) => {\n      e.stopPropagation()\n\n      if (!asset) return\n      if (onSelect) {\n        onSelect([{kind: 'assetDocumentId', value: asset._id}])\n      } else if (shiftPressed.current) {\n        if (picked) {\n          dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n        } else {\n          dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n        }\n      } else {\n        dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n      }\n    },\n    [asset, dispatch, lastPicked, onSelect, picked, shiftPressed],\n  )\n\n  const opacityCell = updating ? 0.5 : 1\n  const opacityPreview = selected || updating ? 0.1 : 1\n\n  // Display reference count after an initial delay to prevent over-eager fetching\n  useEffect(() => {\n    refCountVisibleTimeout.current = setTimeout(\n      () => setReferenceCountVisible(true),\n      REFERENCE_COUNT_VISIBILITY_DELAY,\n    )\n    return () => {\n      if (refCountVisibleTimeout.current) {\n        clearTimeout(refCountVisibleTimeout.current)\n      }\n    }\n  }, [])\n\n  // Short circuit if no asset is available\n  if (!asset) {\n    return null\n  }\n\n  return (\n    <ContainerGrid\n      onClick={selected ? undefined : handleClick}\n      $scheme={scheme}\n      $selected={selected}\n      style={{\n        gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n        gridRowGap: 0,\n        gridTemplateColumns:\n          mediaIndex < 3 ? GRID_TEMPLATE_COLUMNS.SMALL : GRID_TEMPLATE_COLUMNS.LARGE,\n        gridTemplateRows: mediaIndex < 3 ? 'auto' : '1fr',\n      }}\n      $updating={item.updating}\n    >\n      {/* Picked checkbox */}\n      <ContextActionContainer\n        onClick={handleContextActionClick}\n        $scheme={scheme}\n        style={{\n          alignItems: 'center',\n          gridColumn: 1,\n          gridRowStart: 1,\n          gridRowEnd: 'span 5',\n          height: '100%',\n          justifyContent: 'center',\n          opacity: opacityCell,\n          position: 'relative',\n        }}\n      >\n        {onSelect ? (\n          <EditIcon\n            style={{\n              flexShrink: 0,\n              opacity: 0.5,\n            }}\n          />\n        ) : (\n          <Checkbox\n            checked={picked}\n            readOnly\n            style={{\n              pointerEvents: 'none', // TODO: consider alternative for usability\n              transform: 'scale(0.8)',\n            }}\n          />\n        )}\n      </ContextActionContainer>\n\n      {/* Preview image + spinner */}\n      <Box\n        style={{\n          gridColumn: 2,\n          gridRowStart: 1,\n          gridRowEnd: 'span 5',\n          height: '90px',\n          width: '100px',\n        }}\n      >\n        <Flex align=\"center\" justify=\"center\" style={{height: '100%', position: 'relative'}}>\n          <Box style={{height: '100%', opacity: opacityPreview, position: 'relative'}}>\n            {/* File icon */}\n            {isFileAsset(asset) && <FileIcon extension={asset.extension} width=\"40px\" />}\n\n            {/* Image */}\n            {isImageAsset(asset) && (\n              <Image\n                draggable={false}\n                $scheme={scheme}\n                $showCheckerboard={!isOpaque}\n                src={imageDprUrl(asset, {height: 100, width: 100})}\n              />\n            )}\n          </Box>\n\n          {/* Spinner */}\n          {updating && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Spinner />\n            </Flex>\n          )}\n\n          {/* Selected check icon */}\n          {selected && !updating && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Text size={2}>\n                <CheckmarkCircleIcon />\n              </Text>\n            </Flex>\n          )}\n        </Flex>\n      </Box>\n\n      {/* Filename */}\n      <Box\n        marginLeft={mediaIndex < 3 ? 3 : 0}\n        style={{\n          gridColumn: 3,\n          gridRow: mediaIndex < 3 ? 2 : 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {asset.originalFilename}\n        </Text>\n      </Box>\n\n      {/* Resolution */}\n      <Box\n        marginLeft={mediaIndex < 3 ? 3 : 0}\n        style={{\n          gridColumn: mediaIndex < 3 ? 3 : 4,\n          gridRow: mediaIndex < 3 ? 3 : 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {isImageAsset(asset) && getAssetResolution(asset)}\n        </Text>\n      </Box>\n\n      {/* MIME type */}\n      <Box\n        style={{\n          display: mediaIndex < 3 ? 'none' : 'block',\n          gridColumn: 5,\n          gridRow: 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {asset.mimeType}\n        </Text>\n      </Box>\n\n      {/* Size */}\n      <Box\n        style={{\n          display: mediaIndex < 3 ? 'none' : 'block',\n          gridColumn: 6,\n          gridRow: 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {filesize(asset.size, {base: 10, round: 0})}\n        </Text>\n      </Box>\n\n      {/* Last updated */}\n      <Box\n        marginLeft={mediaIndex < 3 ? 3 : 0}\n        style={{\n          gridColumn: mediaIndex < 3 ? 3 : 7,\n          gridRow: mediaIndex < 3 ? 4 : 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {formatRelative(new Date(asset._updatedAt), new Date())}\n        </Text>\n      </Box>\n\n      {/* References */}\n      <Box\n        style={{\n          display: mediaIndex < 3 ? 'none' : 'block',\n          gridColumn: 8,\n          gridRow: 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {referenceCountVisible ? (\n            <WithReferringDocuments id={id}>\n              {({isLoading, referringDocuments}) => {\n                const uniqueDocuments = getUniqueDocuments(referringDocuments)\n                return isLoading ? (\n                  <>-</>\n                ) : (\n                  <>{Array.isArray(uniqueDocuments) ? uniqueDocuments.length : 0}</>\n                )\n              }}\n            </WithReferringDocuments>\n          ) : (\n            <>-</>\n          )}\n        </Text>\n      </Box>\n\n      {/* Error */}\n      <Flex\n        align=\"center\"\n        justify=\"center\"\n        style={{\n          gridColumn: mediaIndex < 3 ? 4 : 9,\n          gridRowStart: '1',\n          gridRowEnd: mediaIndex < 3 ? 'span 5' : 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        {/* TODO: DRY */}\n        {/* Error button */}\n        {error && (\n          <Box padding={2}>\n            <Tooltip\n              animate\n              content={\n                <Container padding={2} width={0}>\n                  <Text size={1}>{error}</Text>\n                </Container>\n              }\n              placement=\"left\"\n              portal\n            >\n              <Text size={1}>\n                <StyledWarningIcon color=\"critical\" />\n              </Text>\n            </Tooltip>\n          </Box>\n        )}\n      </Flex>\n    </ContainerGrid>\n  )\n}\n\nexport default memo(TableRowAsset)\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Button, Flex, Grid, Stack, Text, useMediaIndex} from '@sanity/ui'\nimport filesize from 'filesize'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\n\nimport {GRID_TEMPLATE_COLUMNS} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectUploadById, uploadsActions} from '../../modules/uploads'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\ntype Props = {\n  id: string\n}\n\nconst TableRowUpload = (props: Props) => {\n  const {id} = props\n\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const item = useTypedSelector((state) => selectUploadById(state, id))\n\n  const mediaIndex = useMediaIndex()\n\n  if (!item) {\n    return null\n  }\n\n  const fileSize = filesize(item.size, {base: 10, round: 0})\n  const percentLoaded = Math.round(item.percent || 0) // (0 - 100)\n\n  const isComplete = item.status === 'complete'\n  const isUploading = item.status === 'uploading'\n  const isQueued = item.status === 'queued'\n\n  let status\n  if (isComplete) {\n    status = 'Verifying'\n  }\n  if (isUploading) {\n    status = `${percentLoaded}%`\n  }\n  if (isQueued) {\n    status = 'Queued'\n  }\n\n  // Callbacks\n  const handleCancelUpload = () => {\n    dispatch(uploadsActions.uploadCancel({hash: item.hash}))\n  }\n\n  return (\n    <Grid\n      style={{\n        alignItems: 'center',\n        background: getSchemeColor(scheme, 'bg'),\n        gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n        gridRowGap: 0,\n        gridTemplateColumns:\n          mediaIndex < 3 ? GRID_TEMPLATE_COLUMNS.SMALL : GRID_TEMPLATE_COLUMNS.LARGE,\n        gridTemplateRows: mediaIndex < 3 ? 'auto' : '1fr',\n        height: '100%',\n        position: 'relative',\n      }}\n    >\n      {/* Progress bar */}\n      <div\n        style={{\n          background: 'var(--card-fg-color)',\n          bottom: 0,\n          height: '1px',\n          left: 0,\n          position: 'absolute',\n          width: '100%',\n          transform: `scaleX(${percentLoaded * 0.01})`,\n          transformOrigin: 'bottom left',\n          transition: 'all 1000ms ease-out',\n        }}\n      />\n\n      {/* Image */}\n      <Box\n        style={{\n          gridColumn: 2,\n          gridRowStart: mediaIndex < 3 ? 1 : 'auto',\n          gridRowEnd: mediaIndex < 3 ? 'span 4' : 'auto',\n          height: '90px',\n          width: '100px',\n        }}\n      >\n        <Box style={{height: '100%', position: 'relative'}}>\n          {item.assetType === 'image' && item?.objectUrl && (\n            <Image\n              draggable={false}\n              $scheme={scheme}\n              src={item.objectUrl}\n              style={{opacity: 0.25}}\n            />\n          )}\n\n          {item.assetType === 'file' && (\n            <div style={{height: '100%', opacity: 0.1}}>\n              <FileIcon width=\"40px\" />\n            </div>\n          )}\n\n          {/*\n            Cancel upload button.\n            Assets will only have a `complete` status _after_ it has been created on your dataset.\n            As such, we also hide the cancel button when `percentLoaded === 100`, as cancelling when the asset\n            has been fully uploaded (even with a status of `progress`) won't stop the asset from being created.\n          */}\n          {!isComplete && percentLoaded !== 100 && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                position: 'absolute',\n                height: '100%',\n                left: 0,\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Button\n                fontSize={3}\n                icon={CloseIcon}\n                mode=\"bleed\"\n                onClick={handleCancelUpload}\n                padding={2}\n                style={{background: 'none', boxShadow: 'none'}}\n                tone=\"critical\"\n              />\n            </Flex>\n          )}\n        </Box>\n      </Box>\n\n      {/* Filename */}\n      <Box\n        style={{\n          gridColumn: mediaIndex < 3 ? 3 : '3/8',\n          gridRow: mediaIndex < 3 ? '2/4' : 'auto',\n          marginLeft: mediaIndex < 3 ? 3 : 0,\n        }}\n      >\n        <Stack space={3}>\n          <Text muted size={1} textOverflow=\"ellipsis\">\n            {item.name} ({fileSize})\n          </Text>\n          <Text size={1} textOverflow=\"ellipsis\" weight=\"semibold\">\n            {status}\n          </Text>\n        </Stack>\n      </Box>\n    </Grid>\n  )\n}\n\nexport default TableRowUpload\n","import {Box} from '@sanity/ui'\nimport {memo} from 'react'\nimport {GroupedVirtuoso} from 'react-virtuoso'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport type {CardAssetData, CardUploadData} from '../../types'\nimport TableHeader from '../TableHeader'\nimport TableRowAsset from '../TableRowAsset'\nimport TableRowUpload from '../TableRowUpload'\n\ntype Props = {\n  items: (CardAssetData | CardUploadData)[]\n  onLoadMore?: () => void\n}\n\nconst VirtualRow = memo(\n  ({item, selected}: {item: CardAssetData | CardUploadData; selected: boolean}) => {\n    if (item?.type === 'asset') {\n      return (\n        <Box style={{height: '100px'}}>\n          <TableRowAsset id={item.id} selected={selected} />\n        </Box>\n      )\n    }\n\n    if (item?.type === 'upload') {\n      return (\n        <Box style={{height: '100px'}}>\n          <TableRowUpload id={item.id} />\n        </Box>\n      )\n    }\n\n    return null\n  },\n)\n\nconst AssetTableVirtualized = (props: Props) => {\n  const {items, onLoadMore} = props\n\n  // Redux\n  const selectedAssets = useTypedSelector((state) => state.selected.assets)\n\n  const selectedIds = (selectedAssets && selectedAssets.map((asset) => asset._id)) || []\n  const totalCount = items?.length\n\n  if (totalCount === 0) {\n    return null\n  }\n\n  return (\n    <GroupedVirtuoso\n      className=\"media__custom-scrollbar\"\n      computeItemKey={(index) => {\n        const item = items[index]\n        return item?.id || index\n      }}\n      endReached={onLoadMore}\n      groupCounts={Array(1).fill(totalCount)}\n      groupContent={() => {\n        return <TableHeader />\n      }}\n      itemContent={(index) => {\n        const item = items[index]\n        const selected = selectedIds.includes(item?.id || '')\n        return <VirtualRow item={item!} selected={selected} />\n      }}\n      style={{overflowX: 'hidden'}}\n    />\n  )\n}\n\nexport default AssetTableVirtualized\n","import {Box, Text, useMediaIndex} from '@sanity/ui'\nimport {useEffect} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\nimport {selectCombinedItems} from '../../modules/selectors'\nimport {tagsActions} from '../../modules/tags'\nimport AssetGridVirtualized from '../AssetGridVirtualized'\nimport AssetTableVirtualized from '../AssetTableVirtualized'\n\nconst Items = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const fetchCount = useTypedSelector((state) => state.assets.fetchCount)\n  const fetching = useTypedSelector((state) => state.assets.fetching)\n  const tagsPanelVisible = useTypedSelector((state) => state.tags.panelVisible)\n  const view = useTypedSelector((state) => state.assets.view)\n  const combinedItems = useTypedSelector(selectCombinedItems)\n\n  const mediaIndex = useMediaIndex()\n\n  const hasFetchedOnce = fetchCount >= 0\n  const hasItems = combinedItems.length > 0\n\n  // Only load 1 page of items at a time.\n  const handleLoadMoreItems = () => {\n    if (!fetching) {\n      dispatch(assetsActions.loadNextPage())\n    }\n  }\n\n  // Effects\n\n  // - Hide tag panel on smaller breakpoints\n  useEffect(() => {\n    if (mediaIndex <= 1 && tagsPanelVisible) {\n      dispatch(tagsActions.panelVisibleSet({panelVisible: false}))\n    }\n  }, [dispatch, mediaIndex, tagsPanelVisible])\n\n  const isEmpty = !hasItems && hasFetchedOnce && !fetching\n\n  return (\n    <Box flex={1} style={{width: '100%'}}>\n      {isEmpty ? (\n        <Box padding={4}>\n          <Text size={1} weight=\"semibold\">\n            No results for the current query\n          </Text>\n        </Box>\n      ) : (\n        <>\n          {view === 'grid' && (\n            <AssetGridVirtualized items={combinedItems} onLoadMore={handleLoadMoreItems} />\n          )}\n\n          {view === 'table' && (\n            <AssetTableVirtualized items={combinedItems} onLoadMore={handleLoadMoreItems} />\n          )}\n        </>\n      )}\n    </Box>\n  )\n}\n\nexport default Items\n","import {useToast} from '@sanity/ui'\nimport {useEffect} from 'react'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\n\nconst Notifications = () => {\n  const items = useTypedSelector((state) => state.notifications.items)\n  const toast = useToast()\n\n  useEffect(() => {\n    if (items.length > 0) {\n      const lastItem = items[items.length - 1]!\n      toast.push({\n        closable: true,\n        status: lastItem.status,\n        title: lastItem.title,\n      })\n    }\n  }, [items, toast])\n\n  return null\n}\n\nexport default Notifications\n","import {Box, Button, Flex, Label} from '@sanity/ui'\nimport pluralize from 'pluralize'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetsPicked} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\nconst PickedBar = () => {\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const assetsPicked = useTypedSelector(selectAssetsPicked)\n\n  // Callbacks\n  const handlePickClear = () => {\n    dispatch(assetsActions.pickClear())\n  }\n\n  const handleDeletePicked = () => {\n    dispatch(dialogActions.showConfirmDeleteAssets({assets: assetsPicked}))\n  }\n\n  if (assetsPicked.length === 0) {\n    return null\n  }\n\n  return (\n    <Flex\n      align=\"center\"\n      justify=\"flex-start\"\n      style={{\n        background: getSchemeColor(scheme, 'bg'),\n        borderBottom: '1px solid var(--card-border-color)',\n        height: `${PANEL_HEIGHT}px`,\n        position: 'relative',\n        width: '100%',\n      }}\n    >\n      <Flex align=\"center\" paddingX={3}>\n        <Box paddingRight={2}>\n          <Label size={0} style={{color: 'inherit'}}>\n            {assetsPicked.length} {pluralize('asset', assetsPicked.length)} selected\n          </Label>\n        </Box>\n\n        {/* Deselect button */}\n        <Button\n          mode=\"bleed\"\n          onClick={handlePickClear}\n          padding={2}\n          style={{background: 'none', boxShadow: 'none'}}\n          tone=\"default\"\n        >\n          <Label size={0}>Deselect</Label>\n        </Button>\n\n        {/* Delete button */}\n        <Button\n          mode=\"bleed\"\n          onClick={handleDeletePicked}\n          padding={2}\n          style={{background: 'none', boxShadow: 'none'}}\n          tone=\"critical\"\n        >\n          <Label size={0}>Delete</Label>\n        </Button>\n      </Flex>\n    </Flex>\n  )\n}\n\nexport default PickedBar\n","import {type PayloadAction, createSlice} from '@reduxjs/toolkit'\nimport pluralize from 'pluralize'\nimport type {AnyAction} from 'redux'\nimport {ofType} from 'redux-observable'\nimport {of} from 'rxjs'\nimport {bufferTime, filter, mergeMap} from 'rxjs/operators'\n\nimport type {HttpError, ImageAsset, MyEpic} from '../../types'\nimport {assetsActions} from '../assets'\nimport {ASSETS_ACTIONS} from '../assets/actions'\nimport {tagsActions} from '../tags'\nimport {uploadsActions} from '../uploads'\n\ntype Notification = {\n  asset?: ImageAsset\n  status?: 'error' | 'warning' | 'success' | 'info'\n  title?: string\n}\n\ntype NotificationsReducerState = {\n  items: Notification[]\n}\n\nfunction messageFromGenericErrorPayload(payload: unknown): string {\n  if (!payload || typeof payload !== 'object') {\n    return 'Unknown error'\n  }\n  if (\n    'error' in payload &&\n    payload.error &&\n    typeof payload.error === 'object' &&\n    payload.error !== null &&\n    'message' in payload.error\n  ) {\n    return String((payload.error as HttpError).message)\n  }\n  if ('message' in payload && typeof (payload as HttpError).message === 'string') {\n    return String((payload as HttpError).message)\n  }\n  return 'Unknown error'\n}\n\nconst initialState = {\n  items: [],\n} as NotificationsReducerState\n\nconst notificationsSlice = createSlice({\n  name: 'notifications',\n  initialState,\n  reducers: {\n    add(state, action: PayloadAction<Notification>) {\n      const {asset, status, title} = action.payload\n      state.items.push({\n        asset,\n        status,\n        title,\n      })\n    },\n  },\n})\n\n// Epics\n\nexport const notificationsAssetsDeleteCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.deleteComplete.match),\n    mergeMap((action) => {\n      const {assetIds} = action.payload\n      const deletedCount = assetIds.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `${deletedCount} ${pluralize('asset', deletedCount)} deleted`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsDeleteErrorEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.deleteError.match),\n    mergeMap((action) => {\n      const {assetIds} = action.payload\n      const count = assetIds.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'error',\n          title: `Unable to delete ${count} ${pluralize(\n            'asset',\n            count,\n          )}. Please review any asset errors and try again.`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsUploadCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(uploadsActions.checkComplete.match),\n    mergeMap((action) => {\n      const {results} = action.payload\n\n      const count = Object.keys(results).length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `Uploaded ${count} ${pluralize('asset', count)}`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsTagsAddCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(ASSETS_ACTIONS.tagsAddComplete.match),\n    mergeMap((action) => {\n      const count = action?.payload?.assets?.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `Tag added to ${count} ${pluralize('asset', count)}`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsTagsRemoveCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(ASSETS_ACTIONS.tagsRemoveComplete.match),\n    mergeMap((action) => {\n      const count = action?.payload?.assets?.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `Tag removed from ${count} ${pluralize('asset', count)}`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsUpdateCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.updateComplete.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const updatedCount = actions.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `${updatedCount} ${pluralize('asset', updatedCount)} updated`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsGenericErrorEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      assetsActions.fetchError.type,\n      assetsActions.updateError.type,\n      tagsActions.createError.type,\n      tagsActions.deleteError.type,\n      tagsActions.fetchError.type,\n      tagsActions.updateError.type,\n      uploadsActions.uploadError.type,\n    ),\n    mergeMap((action: AnyAction) => {\n      const title = `An error occurred: ${messageFromGenericErrorPayload(action['payload'])}`\n      return of(\n        notificationsSlice.actions.add({\n          status: 'error',\n          title,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsTagCreateCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.createComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Tag created`}))),\n  )\n\nexport const notificationsTagDeleteCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.deleteComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Tag deleted`}))),\n  )\n\nexport const notificationsTagUpdateCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.updateComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Tag updated`}))),\n  )\n\nexport const notificationsActions = {...notificationsSlice.actions}\n\nexport default notificationsSlice.reducer\n","import {createSlice} from '@reduxjs/toolkit'\nimport type {SanityAssetDocument, SanityDocument, SanityImageAssetDocument} from '@sanity/client'\n\ntype SelectedReducerState = {\n  assets: (SanityAssetDocument | SanityImageAssetDocument)[]\n  document?: SanityDocument\n  documentAssetIds?: string[]\n}\n\nconst initialState = {\n  assets: [],\n  document: undefined,\n  documentAssetIds: [],\n} as SelectedReducerState\n\nconst selectedSlice = createSlice({\n  name: 'selected',\n  initialState,\n  reducers: {},\n})\n\nexport default selectedSlice.reducer\n","import {type Reducer, type StateFromReducersMapObject, combineReducers} from '@reduxjs/toolkit'\nimport {combineEpics} from 'redux-observable'\n\nimport assetsReducer, {\n  assetsDeleteEpic,\n  assetsFetchAfterDeleteAllEpic,\n  assetsFetchEpic,\n  assetsFetchNextPageEpic,\n  assetsFetchPageIndexEpic,\n  assetsListenerCreateQueueEpic,\n  assetsListenerDeleteQueueEpic,\n  assetsListenerUpdateQueueEpic,\n  assetsOrderSetEpic,\n  assetsSearchEpic,\n  assetsSortEpic,\n  assetsTagsAddEpic,\n  assetsTagsRemoveEpic,\n  assetsUnpickEpic,\n  assetsUpdateEpic,\n} from './assets'\nimport debugReducer from './debug'\nimport dialogReducer, {\n  dialogClearOnAssetUpdateEpic,\n  dialogTagCreateEpic,\n  dialogTagDeleteEpic,\n} from './dialog'\nimport notificationsReducer, {\n  notificationsAssetsDeleteErrorEpic,\n  notificationsAssetsDeleteCompleteEpic,\n  notificationsAssetsTagsAddCompleteEpic,\n  notificationsAssetsTagsRemoveCompleteEpic,\n  notificationsAssetsUpdateCompleteEpic,\n  notificationsGenericErrorEpic,\n  notificationsTagCreateCompleteEpic,\n  notificationsTagDeleteCompleteEpic,\n  notificationsTagUpdateCompleteEpic,\n} from './notifications'\nimport searchReducer, {searchFacetTagUpdateEpic} from './search'\nimport selectedReducer from './selected'\nimport tagsReducer, {\n  tagsCreateEpic,\n  tagsDeleteEpic,\n  tagsFetchEpic,\n  tagsListenerCreateQueueEpic,\n  tagsListenerDeleteQueueEpic,\n  tagsListenerUpdateQueueEpic,\n  tagsSortEpic,\n  tagsUpdateEpic,\n} from './tags'\nimport uploadsReducer, {\n  uploadsAssetStartEpic,\n  uploadsAssetUploadEpic,\n  uploadsCheckRequestEpic,\n  uploadsCompleteQueueEpic,\n} from './uploads'\n\nexport const rootEpic = combineEpics(\n  assetsDeleteEpic,\n  assetsFetchEpic,\n  assetsFetchAfterDeleteAllEpic,\n  assetsFetchNextPageEpic,\n  assetsFetchPageIndexEpic,\n  assetsListenerCreateQueueEpic,\n  assetsListenerDeleteQueueEpic,\n  assetsListenerUpdateQueueEpic,\n  assetsOrderSetEpic,\n  assetsSearchEpic,\n  assetsSortEpic,\n  assetsTagsAddEpic,\n  assetsTagsRemoveEpic,\n  assetsUnpickEpic,\n  assetsUpdateEpic,\n  dialogClearOnAssetUpdateEpic,\n  dialogTagCreateEpic,\n  dialogTagDeleteEpic,\n  notificationsAssetsDeleteErrorEpic,\n  notificationsAssetsDeleteCompleteEpic,\n  notificationsAssetsTagsAddCompleteEpic,\n  notificationsAssetsTagsRemoveCompleteEpic,\n  notificationsAssetsUpdateCompleteEpic,\n  notificationsGenericErrorEpic,\n  notificationsTagCreateCompleteEpic,\n  notificationsTagDeleteCompleteEpic,\n  notificationsTagUpdateCompleteEpic,\n  searchFacetTagUpdateEpic,\n  tagsCreateEpic,\n  tagsDeleteEpic,\n  tagsFetchEpic,\n  tagsListenerCreateQueueEpic,\n  tagsListenerDeleteQueueEpic,\n  tagsListenerUpdateQueueEpic,\n  tagsSortEpic,\n  tagsUpdateEpic,\n  uploadsAssetStartEpic,\n  uploadsAssetUploadEpic,\n  uploadsCheckRequestEpic,\n  uploadsCompleteQueueEpic,\n)\n\nconst reducers = {\n  assets: assetsReducer,\n  debug: debugReducer,\n  dialog: dialogReducer,\n  notifications: notificationsReducer,\n  search: searchReducer,\n  selected: selectedReducer,\n  tags: tagsReducer,\n  uploads: uploadsReducer,\n}\n\ntype ReducersMapObject = typeof reducers\n\n// Workaround to avoid `$CombinedState` ts errors\n// source: https://github.com/reduxjs/redux-toolkit/issues/2068#issuecomment-1130796500\n// TODO: remove once we use `redux-toolkit` v2\nexport const rootReducer: Reducer<StateFromReducersMapObject<ReducersMapObject>> =\n  combineReducers(reducers)\n","import type {SanityDocument} from '@sanity/client'\n\nconst isPlainObject = (value: any) =>\n  value !== null && typeof value === 'object' && !Array.isArray(value)\n\n// Recursively search node for any linked asset ids (`asset._type === 'reference'`)\nconst getAssetIds = (node: Record<string, any>, acc: string[] = []) => {\n  if (Array.isArray(node)) {\n    node.forEach((v) => {\n      getAssetIds(v, acc)\n    })\n  }\n\n  if (isPlainObject(node)) {\n    if (node?.['asset']?._type === 'reference' && node?.['asset']?._ref) {\n      acc.push(node['asset']._ref)\n    }\n\n    Object.values(node).forEach((val) => {\n      getAssetIds(val, acc)\n    })\n  }\n\n  return acc\n}\n\n// Retrieve all linked asset ids from a Sanity document\nconst getDocumentAssetIds = (document: SanityDocument): string[] => {\n  const assetIds = getAssetIds(document)\n\n  // Sort and dedupe\n  return [...new Set(assetIds.sort())]\n}\n\nexport default getDocumentAssetIds\n","import {SUPPORTED_ASSET_TYPES} from '../constants'\nimport type {AssetType} from '../types'\n\n/**\n * Determines whether or not the provided asset type (eg 'image', 'file', 'arbitrary')\n * is a supported asset type for this plugin.\n *\n * @param assetType - The asset type to check.\n * @returns True if the asset type is supported, false otherwise.\n * @internal\n */\nexport function isSupportedAssetType(assetType?: string): assetType is AssetType {\n  const supported: string[] = SUPPORTED_ASSET_TYPES\n  return assetType ? supported.includes(assetType) : false\n}\n","import {type AnyAction, configureStore, type Store} from '@reduxjs/toolkit'\nimport type {SanityClient} from '@sanity/client'\nimport {Component, type ReactNode} from 'react'\nimport {Provider} from 'react-redux'\nimport {createEpicMiddleware} from 'redux-observable'\nimport type {AssetSourceComponentProps, SanityDocument} from 'sanity'\n\nimport {rootEpic, rootReducer} from '../../modules'\nimport {initialState as assetsInitialState} from '../../modules/assets'\n// import {assetsActions} from '../../modules/assets'\n// import {searchActions} from '../../modules/search'\n// import {uploadsActions} from '../../modules/uploads'\nimport type {RootReducerState} from '../../modules/types'\nimport getDocumentAssetIds from '../../utils/getDocumentAssetIds'\nimport {isSupportedAssetType} from '../../utils/isSupportedAssetType'\n\ntype Props = {\n  assetType?: AssetSourceComponentProps['assetType']\n  children?: ReactNode\n  client: SanityClient\n  document?: SanityDocument\n  selectedAssets?: AssetSourceComponentProps['selectedAssets']\n}\n\nclass ReduxProvider extends Component<Props> {\n  store: Store\n\n  constructor(props: Props) {\n    super(props)\n\n    // Initialize redux store + middleware\n    const epicMiddleware = createEpicMiddleware<AnyAction, AnyAction, RootReducerState>({\n      dependencies: {\n        client: props.client, // inject sanity client as a dependency to all epics\n      },\n    })\n    this.store = configureStore({\n      reducer: rootReducer,\n      middleware: (getDefaultMiddleware) =>\n        getDefaultMiddleware({\n          /*\n          serializableCheck: {\n            ignoredActions: [\n              assetsActions.deleteError.type,\n              uploadsActions.uploadRequest.type,\n              uploadsActions.uploadStart.type,\n            ]\n          },\n          */\n          // TODO: remove once we're no longer storing non-serializable data in the store\n          serializableCheck: false,\n          thunk: false,\n        }).prepend(epicMiddleware),\n      devTools: true,\n      preloadedState: {\n        assets: {\n          ...assetsInitialState,\n          assetTypes: isSupportedAssetType(props?.assetType)\n            ? [props.assetType]\n            : ['file', 'image'],\n        },\n        debug: {\n          badConnection: false,\n          enabled: false,\n        },\n        dialog: {items: []},\n        notifications: {items: []},\n        search: {facets: [], query: ''},\n        selected: {\n          assets: props.selectedAssets || [],\n          document: props.document,\n          documentAssetIds: props.document ? getDocumentAssetIds(props.document) : [],\n        },\n        tags: {\n          allIds: [],\n          byIds: {},\n          creating: false,\n          fetchCount: -1,\n          fetching: false,\n          panelVisible: true,\n        },\n        uploads: {\n          allIds: [],\n          byIds: {},\n        },\n      },\n    })\n    epicMiddleware.run(rootEpic)\n  }\n\n  override render() {\n    return <Provider store={this.store}>{this.props.children}</Provider>\n  }\n}\n\nexport default ReduxProvider\n","import {Box} from '@sanity/ui'\n\nimport {TAGS_PANEL_WIDTH} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport TagView from '../TagView'\n\nconst TagsPanel = () => {\n  const tagsPanelVisible = useTypedSelector((state) => state.tags.panelVisible)\n\n  if (!tagsPanelVisible) {\n    return null\n  }\n\n  return (\n    <Box\n      style={{\n        position: 'relative',\n        width: TAGS_PANEL_WIDTH,\n      }}\n    >\n      <Box\n        className=\"media__custom-scrollbar\"\n        style={{\n          borderLeft: '1px solid var(--card-border-color)',\n          height: '100%',\n          overflowX: 'hidden',\n          overflowY: 'auto',\n          position: 'absolute',\n          right: 0,\n          top: 0,\n          width: '100%',\n        }}\n      >\n        <TagView />\n      </Box>\n    </Box>\n  )\n}\n\nexport default TagsPanel\n","import {white} from '@sanity/color'\nimport {Flex, Text} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {type DropEvent, type DropzoneOptions, useDropzone} from 'react-dropzone'\nimport {useDispatch} from 'react-redux'\nimport {styled} from 'styled-components'\n\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport {DropzoneDispatchProvider} from '../../contexts/DropzoneDispatchContext'\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {notificationsActions} from '../../modules/notifications'\nimport {uploadsActions} from '../../modules/uploads'\n\ntype Props = {\n  children: ReactNode\n}\n\nconst UploadContainer = styled.div`\n  color: white;\n  height: 100%;\n  min-height: 100%;\n  right: 0;\n  top: 0;\n  width: 100%;\n\n  &:focus {\n    outline: none;\n  }\n`\n\nconst DragActiveContainer = styled.div`\n  align-items: center;\n  background: rgba(0, 0, 0, 0.75);\n  display: flex;\n  height: 100%;\n  justify-content: center;\n  position: absolute;\n  right: 0;\n  top: 0;\n  width: 100%;\n  z-index: 3;\n`\n\n// Iterate through all files and only return non-folders / packages.\n// We check for files by reading the first byte of the file\nasync function filterFiles(fileList: FileList) {\n  const files = Array.from(fileList)\n\n  const filteredFiles: File[] = []\n\n  for (const file of files) {\n    try {\n      await file.slice(0, 1).arrayBuffer()\n      filteredFiles.push(file)\n    } catch {\n      // do nothing: file is a package or folder\n    }\n  }\n\n  return filteredFiles\n}\n\nconst UploadDropzone = (props: Props) => {\n  const {children} = props\n\n  const {\n    dropzone: {maxSize},\n    directUploads,\n  } = useToolOptions()\n\n  const {onSelect} = useAssetSourceActions()\n\n  // Redux\n  const dispatch = useDispatch()\n  const assetTypes = useTypedSelector((state) => state.assets.assetTypes)\n\n  const isImageAssetType = assetTypes.length === 1 && assetTypes[0] === 'image'\n\n  // Callbacks\n  const handleDrop = async (acceptedFiles: File[]) => {\n    acceptedFiles.forEach((file) =>\n      dispatch(\n        uploadsActions.uploadRequest({\n          file,\n          forceAsAssetType: assetTypes.length === 1 ? assetTypes[0] : undefined,\n        }),\n      ),\n    )\n  }\n\n  const handleDropRejected: DropzoneOptions['onDropRejected'] = (rejections) => {\n    const errorCodes = rejections.flatMap(({errors}) => errors.map(({code}) => code))\n\n    if (errorCodes.includes('file-too-large')) {\n      dispatch(\n        notificationsActions.add({\n          status: 'error',\n          title: 'One or more files exceed the maximum upload size.',\n        }),\n      )\n    }\n  }\n\n  // Use custom file selector to obtain files on file drop + change events (excluding folders and packages)\n  const handleFileGetter = async (event: DropEvent) => {\n    let fileList: FileList | undefined\n    if (event.type === 'drop' && 'dataTransfer' in event) {\n      fileList = event?.dataTransfer?.files\n    }\n    if (event.type === 'change') {\n      const target = event?.target as HTMLInputElement\n      if (target?.files) {\n        fileList = target.files\n      }\n    }\n\n    if (!fileList) {\n      return []\n    }\n\n    // Filter out non-folders / packages\n    const files: File[] = await filterFiles(fileList)\n\n    // Dispatch error if some files have been filtered out\n    if (fileList?.length !== files.length) {\n      dispatch(\n        notificationsActions.add({\n          status: 'error',\n          title: `Unable to upload some items (folders and packages aren't supported)`,\n        }),\n      )\n    }\n\n    return files\n  }\n\n  // Limit file picking to only images if we're specifically within an image selection context (e.g. picking from image fields)\n  const {getRootProps, getInputProps, isDragActive, open} = useDropzone({\n    accept: isImageAssetType ? 'image/*' : '',\n    getFilesFromEvent: handleFileGetter,\n    noClick: true,\n    // HACK: Disable drag and drop functionality when in a selecting context\n    // (This is currently due to Sanity's native image input taking precedence with drag and drop)\n    noDrag: !!onSelect,\n    onDrop: handleDrop,\n    maxSize,\n    onDropRejected: handleDropRejected,\n    disabled: !directUploads,\n  })\n\n  return (\n    <DropzoneDispatchProvider open={open}>\n      <UploadContainer {...getRootProps()}>\n        <input {...getInputProps()} />\n\n        {isDragActive && (\n          <DragActiveContainer>\n            <Flex direction=\"column\" justify=\"center\" style={{color: white.hex}}>\n              <Text size={3} style={{color: 'inherit'}}>\n                Drop files to upload\n              </Text>\n            </Flex>\n          </DragActiveContainer>\n        )}\n\n        {children}\n      </UploadContainer>\n    </DropzoneDispatchProvider>\n  )\n}\n\nexport default UploadDropzone\n","import type {MutationEvent, SanityClient} from '@sanity/client'\nimport groq from 'groq'\nimport {useEffect} from 'react'\nimport {useDispatch, useSelector} from 'react-redux'\nimport type {Dispatch} from 'redux'\nimport type {AssetSourceComponentProps} from 'sanity'\n\nimport {inputs} from '../../config/searchFacets'\nimport {TAG_DOCUMENT_NAME} from '../../constants'\nimport {assetsActions} from '../../modules/assets'\nimport {searchActions} from '../../modules/search'\nimport {tagsActions} from '../../modules/tags'\nimport type {RootReducerState} from '../../modules/types'\nimport type {Asset, Tag} from '../../types'\n\nfunction getMediaTagNames(schemaType?: AssetSourceComponentProps['schemaType']): string[] {\n  const mediaTags = (schemaType?.options as {mediaTags?: string[]} | undefined)?.mediaTags\n  if (!mediaTags?.length) return []\n  const unique = new Set(\n    mediaTags.map((t) => t?.trim()).filter((t): t is string => Boolean(t?.length)),\n  )\n  return Array.from(unique)\n}\n\nfunction createAssetHandler(dispatch: Dispatch) {\n  return (update: MutationEvent) => {\n    const {documentId, result, transition} = update\n\n    switch (transition) {\n      case 'appear':\n        dispatch(assetsActions.listenerCreateQueue({asset: result as Asset}))\n        break\n      case 'disappear':\n        dispatch(assetsActions.listenerDeleteQueue({assetId: documentId}))\n        break\n      case 'update':\n        dispatch(assetsActions.listenerUpdateQueue({asset: result as Asset}))\n        break\n      default:\n        break\n    }\n  }\n}\n\nfunction createTagHandler(dispatch: Dispatch) {\n  return (update: MutationEvent) => {\n    const {documentId, result, transition} = update\n\n    switch (transition) {\n      case 'appear':\n        dispatch(tagsActions.listenerCreateQueue({tag: result as Tag}))\n        break\n      case 'disappear':\n        dispatch(tagsActions.listenerDeleteQueue({tagId: documentId}))\n        break\n      case 'update':\n        dispatch(tagsActions.listenerUpdateQueue({tag: result as Tag}))\n        break\n      default:\n        break\n    }\n  }\n}\n\nexport function useBrowserInit(\n  client: SanityClient,\n  schemaType?: AssetSourceComponentProps['schemaType'],\n): void {\n  const dispatch = useDispatch()\n  const tagsByIds = useSelector((state: RootReducerState) => state.tags.byIds)\n  const tagsFetchCount = useSelector((state: RootReducerState) => state.tags.fetchCount)\n\n  const tagNames = getMediaTagNames(schemaType)\n  const hasMediaTags = tagNames.length > 0\n\n  useEffect(() => {\n    if (!hasMediaTags) {\n      dispatch(searchActions.facetsClear())\n    }\n\n    dispatch(tagsActions.fetchRequest())\n\n    const assetSubscription = client\n      .listen(\n        groq`*[_type in [\"sanity.fileAsset\", \"sanity.imageAsset\"] && !(_id in path(\"drafts.**\"))]`,\n      )\n      .subscribe(createAssetHandler(dispatch))\n\n    const tagSubscription = client\n      .listen(groq`*[_type == \"${TAG_DOCUMENT_NAME}\" && !(_id in path(\"drafts.**\"))]`)\n      .subscribe(createTagHandler(dispatch))\n\n    return () => {\n      assetSubscription.unsubscribe()\n      tagSubscription.unsubscribe()\n    }\n  }, [client, dispatch, hasMediaTags])\n\n  // When mediaTags are configured, wait for the tag fetch to complete then apply facets.\n  // Dispatching clear + add synchronously keeps all actions within assetsSearchEpic's\n  // 400ms debounce window, so the browser performs exactly one asset fetch on open.\n  useEffect(() => {\n    if (!hasMediaTags || tagsFetchCount < 0) return\n\n    const tagFacetInput = inputs.tag\n    if (tagFacetInput.type !== 'searchable') return\n\n    const resolvedTags = tagNames\n      .map((name) => Object.values(tagsByIds).find((item) => item.tag.name.current === name))\n      .filter((item): item is NonNullable<typeof item> => Boolean(item))\n\n    dispatch(searchActions.facetsClear())\n\n    for (const tagItem of resolvedTags) {\n      dispatch(\n        searchActions.facetsAdd({\n          facet: {\n            ...tagFacetInput,\n            operatorType: 'references',\n            value: {label: tagItem.tag.name.current, value: tagItem.tag._id},\n          },\n        }),\n      )\n    }\n  }, [tagsFetchCount, hasMediaTags]) // eslint-disable-line react-hooks/exhaustive-deps\n}\n","import {Card, Flex, PortalProvider} from '@sanity/ui'\nimport {useState} from 'react'\nimport {type AssetSourceComponentProps, type SanityDocument} from 'sanity'\n\nimport {AssetBrowserDispatchProvider} from '../../contexts/AssetSourceDispatchContext'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport GlobalStyle from '../../styled/GlobalStyles'\nimport Controls from '../Controls'\nimport DebugControls from '../DebugControls'\nimport Dialogs from '../Dialogs'\nimport Header from '../Header'\nimport Items from '../Items'\nimport Notifications from '../Notifications'\nimport PickedBar from '../PickedBar'\nimport ReduxProvider from '../ReduxProvider'\nimport TagsPanel from '../TagsPanel'\nimport UploadDropzone from '../UploadDropzone'\nimport {useBrowserInit} from './useBrowserInit'\n\ntype Props = {\n  assetType?: AssetSourceComponentProps['assetType']\n  document?: SanityDocument\n  onClose?: AssetSourceComponentProps['onClose']\n  onSelect?: AssetSourceComponentProps['onSelect']\n  selectedAssets?: AssetSourceComponentProps['selectedAssets']\n  schemaType?: AssetSourceComponentProps['schemaType']\n}\n\nconst BrowserContent = ({\n  onClose,\n  schemaType,\n}: {\n  onClose?: AssetSourceComponentProps['onClose']\n  schemaType?: AssetSourceComponentProps['schemaType']\n}) => {\n  const client = useVersionedClient()\n  const [portalElement, setPortalElement] = useState<HTMLDivElement | null>(null)\n\n  useBrowserInit(client, schemaType)\n\n  return (\n    <PortalProvider element={portalElement}>\n      <UploadDropzone>\n        <Dialogs />\n        <Notifications />\n\n        <Card display=\"flex\" height=\"fill\" ref={setPortalElement}>\n          <Flex direction=\"column\" flex={1}>\n            {/* Header */}\n            <Header onClose={onClose} />\n\n            {/* Browser Controls */}\n            <Controls />\n\n            <Flex flex={1}>\n              <Flex align=\"flex-end\" direction=\"column\" flex={1} style={{position: 'relative'}}>\n                <PickedBar />\n                <Items />\n              </Flex>\n              <TagsPanel />\n            </Flex>\n\n            {/* Debug */}\n            <DebugControls />\n          </Flex>\n        </Card>\n      </UploadDropzone>\n    </PortalProvider>\n  )\n}\n\nconst Browser = (props: Props) => {\n  const client = useVersionedClient()\n\n  return (\n    <ReduxProvider\n      assetType={props?.assetType}\n      client={client}\n      document={props?.document}\n      selectedAssets={props?.selectedAssets}\n    >\n      <AssetBrowserDispatchProvider onSelect={props?.onSelect}>\n        <GlobalStyle />\n        <BrowserContent onClose={props?.onClose} schemaType={props?.schemaType} />\n      </AssetBrowserDispatchProvider>\n    </ReduxProvider>\n  )\n}\n\nexport default Browser\n","import {Box, Portal, PortalProvider, useLayer} from '@sanity/ui'\nimport {type SyntheticEvent, useEffect, useState} from 'react'\nimport {type AssetSourceComponentProps, type SanityDocument, useFormValue} from 'sanity'\n\nimport useKeyPress from '../../hooks/useKeyPress'\nimport Browser from '../Browser'\n\nconst FormBuilderTool = (props: AssetSourceComponentProps) => {\n  const {onClose} = props\n\n  const portalElement = useRootPortalElement()\n\n  // Get current Sanity document\n  const currentDocument = useFormValue([]) as SanityDocument\n\n  // Close on escape key press\n  useKeyPress('escape', onClose)\n\n  // Stop propagation and prevent document mouse events from firing.\n  // This is a bit of a hack to make this work with `editModal = 'popover'` and prevent Sanity's <Popover /> component from\n  // prematurely closing, as it attaches events on `document` to detect outside clicks.\n  const handleStopPropagation = (event: SyntheticEvent) => {\n    event.nativeEvent.stopImmediatePropagation()\n    event.stopPropagation()\n  }\n\n  const {zIndex} = useLayer()\n\n  return (\n    <PortalProvider element={portalElement}>\n      <Portal>\n        <Box\n          onDragEnter={handleStopPropagation}\n          onDragLeave={handleStopPropagation}\n          onDragOver={handleStopPropagation}\n          onDrop={handleStopPropagation}\n          onMouseUp={handleStopPropagation}\n          style={{\n            bottom: 0,\n            height: 'auto',\n            left: 0,\n            position: 'fixed',\n            top: 0,\n            width: '100%',\n            zIndex,\n          }}\n        >\n          <Browser document={currentDocument} schemaType={props.schemaType} {...props} />\n        </Box>\n      </Portal>\n    </PortalProvider>\n  )\n}\n\nexport default FormBuilderTool\n\nconst useRootPortalElement = () => {\n  const [container] = useState(() => document.createElement('div'))\n\n  useEffect(() => {\n    container.classList.add('media-portal')\n    document.body.appendChild(container)\n    return () => {\n      document.body.removeChild(container)\n    }\n  }, [container])\n\n  return container\n}\n","import {Flex} from '@sanity/ui'\n\nimport Browser from '../Browser'\n\nconst Tool = () => {\n  return (\n    <Flex direction=\"column\" height=\"fill\" flex={1}>\n      <Browser />\n    </Flex>\n  )\n}\n\nexport default Tool\n","import TagIcon from '../components/TagIcon'\nimport {TAG_DOCUMENT_NAME} from '../constants'\n\nexport default {\n  title: 'Media Tag',\n  icon: TagIcon,\n  name: TAG_DOCUMENT_NAME,\n  type: 'document',\n  fields: [\n    {\n      title: 'Name',\n      name: 'name',\n      type: 'slug',\n    },\n  ],\n  preview: {\n    select: {\n      name: 'name',\n    },\n    prepare(selection: any) {\n      const {name} = selection\n      return {\n        media: TagIcon,\n        title: name?.current,\n      }\n    },\n  },\n}\n","import {ImageIcon} from '@sanity/icons/Image'\nimport {type AssetSource, type Tool as SanityTool, definePlugin} from 'sanity'\n\nimport FormBuilderTool from './components/FormBuilderTool'\nimport Tool from './components/Tool'\nimport {ToolOptionsProvider} from './contexts/ToolOptionsContext'\nimport mediaTag from './schemas/tag'\nimport type {MediaToolOptions} from './types'\n\nconst plugin = {\n  icon: ImageIcon,\n  name: 'media',\n  title: 'Media',\n}\n\nexport const mediaAssetSource = {\n  ...plugin,\n  component: FormBuilderTool,\n} satisfies AssetSource\n\nconst tool = {\n  ...plugin,\n  component: Tool,\n  __internalApplicationType: 'sanity/media',\n} satisfies SanityTool\n\nexport const media = definePlugin<MediaToolOptions | void>((options) => ({\n  name: 'media',\n  studio: {\n    components: {\n      layout: (props) => (\n        <ToolOptionsProvider options={options}>{props.renderDefault(props)}</ToolOptionsProvider>\n      ),\n    },\n  },\n  form: {\n    file: {\n      assetSources: (prev) => {\n        return [...prev, mediaAssetSource]\n      },\n    },\n    image: {\n      assetSources: (prev) => {\n        return [...prev, mediaAssetSource]\n      },\n    },\n  },\n  schema: {\n    types: [mediaTag],\n  },\n  tools: (prev) => {\n    return [...prev, tool]\n  },\n}))\n","import type {SanityClient} from '@sanity/client'\nimport groq from 'groq'\nimport {nanoid} from 'nanoid'\n\nimport {TAG_DOCUMENT_NAME} from '../constants'\nimport type {Tag} from '../types'\n\ntype ApplyMediaTagsOptions = {\n  client: SanityClient\n  assetId: string\n  mediaTags: string[]\n  createTagsOnUpload?: boolean\n}\n\n// Serialize calls per asset so concurrent fields reading the same asset\n// don't race each other — the second call always runs after the first commits.\nconst pendingByAsset = new Map<string, Promise<void>>()\n\nexport function applyMediaTags(options: ApplyMediaTagsOptions): Promise<void> {\n  const {assetId} = options\n  const chain = (pendingByAsset.get(assetId) ?? Promise.resolve()).then(() =>\n    doApplyMediaTags(options),\n  )\n  const cleanup = chain\n    .catch(() => {})\n    .finally(() => {\n      if (pendingByAsset.get(assetId) === cleanup) pendingByAsset.delete(assetId)\n    })\n  pendingByAsset.set(assetId, cleanup)\n  return chain\n}\n\nasync function doApplyMediaTags({\n  client,\n  assetId,\n  mediaTags,\n  createTagsOnUpload = true,\n}: ApplyMediaTagsOptions): Promise<void> {\n  if (!mediaTags || mediaTags.length === 0) return\n\n  const resolvedTags = await Promise.all(\n    mediaTags.map(async (tagName) => {\n      const existingTag = await client.fetch<Tag | null>(\n        groq`*[_type == \"${TAG_DOCUMENT_NAME}\" && name.current == $tagName][0]`,\n        {tagName},\n      )\n      if (existingTag) return existingTag\n      if (createTagsOnUpload) {\n        const newTag = await client.create({\n          _type: TAG_DOCUMENT_NAME,\n          name: {_type: 'slug', current: tagName},\n        })\n        return newTag as Tag\n      }\n      return null\n    }),\n  )\n\n  const validTags = resolvedTags.filter((tag): tag is Tag => tag !== null)\n  if (validTags.length === 0) return\n\n  const existing = await client.fetch<{tagIds: string[]} | null>(\n    groq`*[_id == $assetId][0]{'tagIds': opt.media.tags[]._ref}`,\n    {assetId},\n    {useCdn: false}, // bypass CDN cache so we see the latest committed tag refs\n  )\n  const existingIds = new Set(existing?.tagIds ?? [])\n\n  const tagReferences = validTags\n    .filter((tag) => !existingIds.has(tag._id))\n    .map((tag) => ({\n      _key: nanoid(),\n      _ref: tag._id,\n      _type: 'reference' as const,\n      _weak: true,\n    }))\n\n  if (tagReferences.length === 0) return\n\n  await client\n    .patch(assetId)\n    .setIfMissing({opt: {}})\n    .setIfMissing({'opt.media': {}})\n    .setIfMissing({'opt.media.tags': []})\n    .append('opt.media.tags', tagReferences)\n    .commit()\n}\n","import {useToast} from '@sanity/ui'\nimport {useEffect, useRef} from 'react'\nimport {type InputProps} from 'sanity'\n\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {applyMediaTags} from '../../utils/applyMediaTags'\n\ntype AssetValue = {\n  _type: 'image' | 'file'\n  asset?: {\n    _ref: string\n    _type: 'reference'\n  }\n}\n\nexport type AutoTagInputProps = InputProps & {\n  mediaTags?: string[]\n}\n\n/**\n * Input component that automatically applies media tags when an asset is selected or uploaded.\n *\n * Apply explicitly to image/file fields that should be auto-tagged:\n * ```ts\n * import {AutoTagInput} from 'sanity-plugin-media'\n *\n * defineField({\n *   type: 'image',\n *   options: { mediaTags: ['product'] },   // also pre-filters the media browser\n *   components: { input: AutoTagInput },\n * })\n * ```\n *\n * Pass `mediaTags` as a prop to override or use without `options`:\n * ```ts\n * components: { input: (props) => <AutoTagInput {...props} mediaTags={['product']} /> }\n * ```\n */\nexport function AutoTagInput(props: AutoTagInputProps) {\n  const {renderDefault, schemaType, value, mediaTags: mediaTagsProp} = props\n  const toast = useToast()\n\n  // Prop takes precedence; fall back to schemaType.options.mediaTags (set for browser pre-filtering)\n  const mediaTags =\n    mediaTagsProp ?? (schemaType?.options as {mediaTags?: string[]} | undefined)?.mediaTags\n\n  const client = useVersionedClient()\n  const {createTagsOnUpload} = useToolOptions()\n\n  const prevAssetRef = useRef<string | undefined>(undefined)\n  const isInitialMount = useRef(true)\n\n  const currentAssetRef = (value as AssetValue | undefined)?.asset?._ref\n\n  useEffect(() => {\n    if (isInitialMount.current) {\n      isInitialMount.current = false\n      prevAssetRef.current = currentAssetRef\n      return\n    }\n\n    const previousRef = prevAssetRef.current\n    prevAssetRef.current = currentAssetRef\n\n    if (!mediaTags?.length || !currentAssetRef || currentAssetRef === previousRef) return\n\n    applyMediaTags({\n      client,\n      assetId: currentAssetRef,\n      mediaTags,\n      createTagsOnUpload,\n    }).catch((err) => {\n      console.error('[sanity-plugin-media] Failed to apply auto-tags:', err)\n      const label = mediaTags.length === 1 ? 'tag' : 'tags'\n      toast.push({\n        closable: true,\n        status: 'error',\n        title: `Failed to apply the media ${label} ${mediaTags.join(', ')}`,\n      })\n    })\n  }, [currentAssetRef, mediaTags, client, createTagsOnUpload, toast])\n\n  return renderDefault(props as InputProps)\n}\n","import type {\n  FieldDefinitionBase,\n  FileDefinition,\n  ImageDefinition,\n  WidenInitialValue,\n  WidenValidation,\n} from 'sanity'\n\nimport {AutoTagInput} from '../components/AutoTagInputWrapper'\n\ntype ImageMediaFieldConfig = Omit<ImageDefinition, 'options'> &\n  FieldDefinitionBase & {\n    name: string\n    mediaTags: string[]\n    options?: ImageDefinition['options']\n  }\n\ntype FileMediaFieldConfig = Omit<FileDefinition, 'options'> &\n  FieldDefinitionBase & {\n    name: string\n    mediaTags: string[]\n    options?: FileDefinition['options']\n  }\n\ntype ImageMediaFieldResult = Omit<ImageDefinition, 'options'> &\n  FieldDefinitionBase & {\n    options?: ImageDefinition['options'] & {mediaTags: string[]}\n    components: {input: typeof AutoTagInput}\n  } & WidenValidation &\n  WidenInitialValue\n\ntype FileMediaFieldResult = Omit<FileDefinition, 'options'> &\n  FieldDefinitionBase & {\n    options?: FileDefinition['options'] & {mediaTags: string[]}\n    components: {input: typeof AutoTagInput}\n  } & WidenValidation &\n  WidenInitialValue\n\n/**\n * Defines an image or file field with automatic media tag application when an asset is selected.\n *\n * Pass `mediaTags` at the top level — they are moved into `options.mediaTags` (for media browser\n * pre-filtering) and wire up {@link AutoTagInput} as the field component automatically:\n * ```ts\n * import {mediaField} from 'sanity-plugin-media'\n *\n * mediaField({\n *   name: 'coverImage',\n *   type: 'image',\n *   mediaTags: ['product-cover'],\n *   options: { hotspot: true },\n * })\n * ```\n *\n * For file fields, set `type: 'file'`:\n * ```ts\n * mediaField({ name: 'drawing', type: 'file', mediaTags: ['model-drawing'] })\n * ```\n */\nexport function mediaField(config: ImageMediaFieldConfig): ImageMediaFieldResult\nexport function mediaField(config: FileMediaFieldConfig): FileMediaFieldResult\nexport function mediaField(\n  config: ImageMediaFieldConfig | FileMediaFieldConfig,\n): ImageMediaFieldResult | FileMediaFieldResult {\n  const {mediaTags, options, components, ...rest} = config as ImageMediaFieldConfig & {\n    components?: Record<string, unknown>\n  }\n  return {\n    ...rest,\n    options: {...options, mediaTags},\n    components: {...components, input: AutoTagInput},\n  } as unknown as ImageMediaFieldResult\n}\n"],"mappings":"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"}
\ No newline at end of file