@sanity/embeddings-index-ui
4.0.64.0.7
~
Modified (5 files)
Index: package/dist/index.js
===================================================================
--- package/dist/index.js
+++ package/dist/index.js
@@ -459,9 +459,9 @@
filter: { type: typeFilter }
}, client).then((result) => {
if (queryRef.current === queryString) {
setSearching(!1), setOptions([]);
- let resultOptions = result.filter((hit) => filterResult ? filterResult(hit) : !0).map(_temp$2);
+ let resultOptions = result.filter((hit) => !filterResult || filterResult(hit)).map(_temp$2);
resultOptions.length ? setOptions(resultOptions) : setOptions([{ value: "" }]);
}
}).catch((e) => {
console.error(e), queryRef.current === queryString && (setSearching(!1), setOptions([{ value: "" }]));
@@ -1110,15 +1110,16 @@
if (!result) {
onChange(unset()), onPathFocus([]);
return;
}
- onChange([
+ let patches = [
setIfMissing({}),
set(schemaType.name, ["_type"]),
set(publicId(result.value.documentId), ["_ref"]),
unset(["_weak"]),
unset(["_strengthenOnPublish"])
- ]), onPathFocus([]);
+ ];
+ onChange(patches), onPathFocus([]);
}, [
onChange,
onPathFocus,
schemaType.name Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
{
"name": "@sanity/embeddings-index-ui",
- "version": "4.0.6",
+ "version": "4.0.7",
"description": "Various Sanity Studio plugins for integrating with the embeddings index API",
"keywords": [
"sanity",
"sanity-plugin"
@@ -27,23 +27,23 @@
"./package.json": "./package.json"
},
"dependencies": {
"@sanity/icons": "^5.0.0",
- "@sanity/ui": "^3.3.1",
+ "@sanity/ui": "^3.3.5",
"react-rx": "^4.2.3"
},
"devDependencies": {
"@sanity/tsconfig": "^2.2.0",
- "@sanity/tsdown-config": "^0.11.0",
- "@types/node": "^24.13.2",
+ "@sanity/tsdown-config": "^0.13.1",
+ "@types/node": "^24.13.3",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
"babel-plugin-react-compiler": "^1.0.0",
"react": "^19.2.7",
"react-dom": "^19.2.7",
"sanity": "^6.3.0",
"styled-components": "^6.4.3",
- "tsdown": "^0.22.3"
+ "tsdown": "^0.22.5"
},
"peerDependencies": {
"react": "^19.2",
"react-dom": "^19.2", Index: package/dist/index.d.ts.map
===================================================================
--- package/dist/index.d.ts.map
+++ package/dist/index.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.d.ts","names":[],"sources":["../src/schemas/typeDefExtensions.ts","../src/embeddingsIndexDashboard/dashboardPlugin.ts","../src/referenceInput/referencePlugin.tsx","../src/api/embeddingsApi.ts"],"mappings":";UAAiB,qBAAA;;AAAjB;;EAIE,SAAA;EACA,UAAA;EADA;;;;AAUU;AACX;;;EADC,UAAA;AAAA;AAAA;EAAA,UAIU,oBAAA;IAOsC;;AAAA;;ACblD;;IDaI,eAAA,UAAyB,qBAAqB;EAAA;AAAA;AAAA,cCbrC,wBAAA,mBAAwB,MAAA;AAAA,cCAxB,6BAAA,mBAA6B,MAAA,QAAA,qBAAA;AAAA,UCVzB,UAAA;EACf,SAAA;EACA,OAAA;EACA,OAAA;EACA,UAAA;EACA,MAAA;AAAA;AAAA,UAGe,UAAA,SAAmB,UAAU;EAC5C,MAAA;EACA,kBAAA;EACA,sBAAA;EACA,mBAAA;AAAA;AAAA,UAGe,WAAA;EACf,KAAA;EACA,KAAA;IACE,UAAA;IACA,IAAA;EAAA;AAAA;AAAA,UAIa,WAAA;EACf,KAAA;EACA,SAAA;EACA,UAAA;EACA,MAAA;IACE,IAAA;EAAA;AAAA;AAAA,iBAIY,UAAA,CAAW,WAAA,EAAa,WAAA,EAAa,MAAA,EAAQ,YAAA,GAAe,OAAA,CAAQ,WAAA;AAAA,iBAiBpE,UAAA,CAAW,MAAA,EAAQ,YAAA,GAAe,OAAA,CAAQ,UAAA;AAAA,iBAS1C,WAAA,CAAY,SAAA,UAAmB,MAAA,EAAQ,YAAA,GAAe,OAAA,CAAQ,UAAA"}
\ No newline at end of file
+{"version":3,"file":"index.d.ts","names":[],"sources":["../src/schemas/typeDefExtensions.ts","../src/embeddingsIndexDashboard/dashboardPlugin.ts","../src/referenceInput/referencePlugin.tsx","../src/api/embeddingsApi.ts"],"mappings":";UAAiB;;;;EAIf;EACA;;;;;;;;;EASA;;;YAIU;;;;;;;IAOR,yBAAyB;;;cCbhB,2CAAwB;cCAxB,gDAA6B,cAAA;UCVzB;EACf;EACA;EACA;EACA;EACA;;UAGe,mBAAmB;EAClC;EACA;EACA;EACA;;UAGe;EACf;EACA;IACE;IACA;;;UAIa;EACf;EACA;EACA;EACA;IACE;;;iBAIY,WAAW,aAAa,aAAa,QAAQ,eAAe,QAAQ;iBAiBpE,WAAW,QAAQ,eAAe,QAAQ;iBAS1C,YAAY,mBAAmB,QAAQ,eAAe,QAAQ"}
\ No newline at end of file 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":["SanityClient","NamedIndex","indexName","dataset","project","projection","filter","IndexState","status","startDocumentCount","remainingDocumentCount","failedDocumentCount","QueryResult","score","value","documentId","type","QueryConfig","query","maxResults","queryIndex","queryConfig","client","Promise","projectId","config","queryString","trim","request","method","url","body","getIndexes","deleteIndex","useMemo","SanityClient","useClient","useApiClient","$","_c","t0","Symbol","for","apiVersion","client","t1","bb0","customHost","localStorage","getItem","withConfig","apiHost","useProjectHostname","withCredentials","Card","Text","createContext","PropsWithChildren","useContext","useEffect","useState","useProjectId","useApiClient","FeatureStatus","FeatureEnabledContext","useIsFeatureEnabled","$","_c","client","status","setStatus","t0","t1","request","method","url","then","response","enabled","catch","err","console","error","FeatureEnabledProvider","props","children","useIsFeatureEnabledContext","FeatureDisabledNotice","projectId","urlSuffix","FeatureError","Symbol","for","SchemaType","isType","schemaType","typeName","name","type","useMemo","ObjectSchemaType","Schema","isType","defaultProjection","useDefaultIndex","schema","dataset","$","_c","t0","getTypeNames","map","n","get","filter","_temp","_temp2","_temp3","join","defaultFilter","t1","projection","documentType_0","documentType","name","startsWith","schemaType","Boolean","Box","Label","Stack","Text","TextArea","TextInput","Dispatch","FormEvent","SetStateAction","useCallback","useId","NamedIndex","IndexFormInputProps","index","Partial","prop","label","description","onChange","readOnly","placeholder","type","IndexFormInput","props","$","_c","t0","propValue","current","handleChange","t1","t2","FormInputProps","value","FormInput","undefined","id","e","currentTarget","t3","t4","resize","t5","AddIcon","Box","Button","Card","Dialog","Spinner","Stack","Text","FormEvent","useCallback","useEffect","useId","useRef","useState","useSchema","IndexState","NamedIndex","useApiClient","useDefaultIndex","IndexFormInput","EditIndexDialog","props","$","_c","open","onClose","onSubmit","id","ref","t0","t1","setTimeout","current","querySelector","focus","t2","index","handleSubmit","t3","IndexEditor","readOnly","selectedIndex","client","schema","config","dataset","defaultIndex","errors","setErrors","loading","setLoading","setIndex","t4","e","preventDefault","validationErrors","indexName","push","match","filter","projection","length","projectId","request","method","url","body","then","response","catch","err","console","error","message","finally","t5","marginLeft","map","_temp","t6","t7","t8","t9","t10","marginTop","t11","t12","i","ErrorOutlineIcon","Box","Button","ButtonProps","Card","CSSProperties","useMemo","useObservable","DefaultPreview","getPreviewStateObservable","getPreviewValueWithFallback","SanityDefaultPreview","SanityDocument","SchemaType","useDocumentPreviewStore","useSchema","useIntentLink","ResultPreviewProps","documentId","schemaTypeName","button","style","DocumentPreview","t0","$","_c","buttonProps","schema","t1","get","undefined","schemaType","t2","Symbol","for","minHeight","t3","t4","t5","DocumentPreviewInner","documentPreviewStore","previewStateObservable","snapshot","isLoading","original","previewIsLoading","name","_id","_type","sanityDocument","t6","intent","params","id","type","onClick","onIntentClick","href","t7","fallback","t8","t9","icon","t10","preview","t11","width","t12","Autocomplete","AutocompleteOpenButtonProps","Box","Button","Flex","Text","FocusEventHandler","Ref","useCallback","useEffect","useId","useMemo","useRef","useState","typed","queryIndex","QueryResult","useApiClient","DocumentPreview","EmbeddingsIndexConfig","SemanticSearchAutocompleteProps","indexConfig","getEmptySearchValue","typeFilter","filterResult","hit","onSelect","value","onFocus","HTMLInputElement","onBlur","readOnly","Option","result","NO_RESULTS_VALUE","const","NoResultOption","NO_OPTIONS","NO_FILTER","SemanticSearchAutocomplete","props","$","_c","ref","id","query","setQuery","queryRef","debouncedQuery","useDebouncedValue","prevDebouncedQuery","searching","setSearching","options","setOptions","client","t0","indexName","maxResults","queryString","Error","trim","length","filter","type","then","current","resultOptions","map","_temp","catch","e","console","error","runIndexQuery","t1","t2","t3","onClick","openButtonConfig","t4","Symbol","for","newValue","newQuery","handleQueryChange","t5","option","_temp2","find","r_1","r","documentId","handleChange","t6","AutocompleteOption","r_0","width","Math","floor","score","ms","debouncedValue","setDebouncedValue","timeoutId","setTimeout","clearTimeout","useCallback","useMemo","useRouter","QueryResult","SemanticSearchAutocomplete","EmbeddingsIndexConfig","QueryIndex","props","$","_c","indexName","getEmpty","_temp","t0","maxResults","indexConfig","resolveIntentLink","navigateUrl","t1","hit","path","id","value","documentId","type","onSelect","t2","EllipsisVerticalIcon","TrashIcon","Box","Button","Flex","Heading","Label","Menu","MenuButton","MenuItem","Stack","Text","useCallback","IndexState","IndexEditor","QueryIndex","IndexInfoProps","selectedIndex","onDeleteIndex","index","IndexInfo","t0","$","_c","t1","handleDelete","t2","indexName","t3","t4","Symbol","for","t5","t6","t7","placement","t8","t9","t10","maxWidth","t11","t12","t13","t14","t15","IndexStatus","status","startDocumentCount","remainingDocumentCount","failedDocumentCount","Box","Button","Card","Flex","Label","Stack","Text","useCallback","IndexState","IndexListProps","loading","selectedIndex","indexes","onIndexSelected","index","IndexList","props","$","_c","t0","t1","opacity","t2","Symbol","for","t3","t4","t5","t6","length","maxHeight","overflow","map","indexName","t7","IndexRow","onSelect","dataset","status","startDocumentCount","Math","floor","remainingDocumentCount","t8","t9","AddIcon","UndoIcon","Box","Button","Card","Flex","Heading","Spinner","Stack","useCallback","useEffect","useState","deleteIndex","getIndexes","IndexState","NamedIndex","useApiClient","FeatureDisabledNotice","FeatureError","useIsFeatureEnabled","EditIndexDialog","IndexInfo","IndexList","EmbeddingsIndexTool","$","_c","featureState","t0","t1","t2","t3","maxWidth","t4","NO_INDEXES","Indexes","client","indexes","setIndexes","loading","setLoading","error","setError","createIndexOpen","setCreateIndexOpen","selectedIndex","setSelectedIndex","undefined","Symbol","for","onCreateIndexClose","indexName","find","i","then","response","catch","e","console","finally","updateIndexes","index","confirm","dataset","setTimeout","e_0","deleteNamedIndex","t5","index_0","onSelectIndex","t6","t7","t8","openCreate","t9","index_1","current","onSubmit","t10","height","t11","t12","justifySelf","t13","t14","t15","t16","t17","t18","t19","EarthGlobeIcon","definePlugin","Tool","EmbeddingsIndexTool","embeddingsIndexTool","name","title","icon","component","embeddingsIndexDashboard","tools","publicId","id","replace","EarthGlobeIcon","LinkIcon","Box","Button","Flex","Spinner","useCallback","useEffect","useMemo","useRef","useState","ObjectInputProps","ReferenceBaseOptions","ReferenceSchemaType","set","setIfMissing","unset","useDocumentPane","QueryResult","FeatureDisabledNotice","FeatureError","useIsFeatureEnabledContext","EmbeddingsIndexConfig","publicId","SemanticSearchAutocomplete","useEmeddingsConfig","embeddingsIndexConfig","defaultConfig","$","_c","t0","bb0","indexName","Error","t1","finalConfig","SemanticSearchReferenceInput","props","schemaType","options","embeddingsIndex","config","defaultEnabled","searchMode","featureState","semantic","setSemantic","Symbol","for","_temp","toggleSemantic","width","t2","t3","t4","t5","maxHeight","overflow","t6","renderDefault","t7","t8","t9","t10","t11","current","SemanticSearchInput","indexConfig","onPathFocus","onChange","readOnly","value","currentDocument","docRef","autocompleteRef","HTMLInputElement","focus","handleFocus","handleBlur","handleChange","result","patches","name","documentId","filterResult","r","currentId","_id","getEmptySearchValue","JSON","stringify","typeFilter","to","map","refType","definePlugin","isObjectInputProps","ObjectInputProps","ReferenceSchemaType","FeatureEnabledProvider","EmbeddingsIndexConfig","isType","SemanticSearchReferenceInput","embeddingsIndexReferenceInput","defaultConfig","config","undefined","name","studio","components","layout","props","renderDefault","form","input","embeddingsIndexConfig","schemaType","options","embeddingsIndex","indexName"],"sources":["../src/api/embeddingsApi.ts","../src/api/embeddingsApiHooks.ts","../src/api/isEnabled.tsx","../src/utils/types.ts","../src/embeddingsIndexDashboard/hooks.ts","../src/embeddingsIndexDashboard/IndexFormInput.tsx","../src/embeddingsIndexDashboard/IndexEditor.tsx","../src/preview/DocumentPreview.tsx","../src/referenceInput/SemanticSearchAutocomplete.tsx","../src/embeddingsIndexDashboard/QueryIndex.tsx","../src/embeddingsIndexDashboard/IndexInfo.tsx","../src/embeddingsIndexDashboard/IndexList.tsx","../src/embeddingsIndexDashboard/EmbeddingsIndexTool.tsx","../src/embeddingsIndexDashboard/dashboardPlugin.ts","../src/utils/id.ts","../src/referenceInput/SemanticSearchReferenceInput.tsx","../src/referenceInput/referencePlugin.tsx"],"sourcesContent":["import {type SanityClient} from 'sanity'\n\nexport interface NamedIndex {\n indexName: string\n dataset: string\n project: string\n projection: string\n filter: string\n}\n\nexport interface IndexState extends NamedIndex {\n status: string\n startDocumentCount: number\n remainingDocumentCount: number\n failedDocumentCount: number\n}\n\nexport interface QueryResult {\n score: number\n value: {\n documentId: string\n type: string\n }\n}\n\nexport interface QueryConfig {\n query: string\n indexName: string\n maxResults?: number\n filter?: {\n type?: string | string[]\n }\n}\n\nexport function queryIndex(queryConfig: QueryConfig, client: SanityClient): Promise<QueryResult[]> {\n const {query, indexName, maxResults, filter} = queryConfig\n const projectId = client.config().projectId\n const dataset = client.config().dataset\n const queryString = query?.trim()\n\n return client.request<QueryResult[]>({\n method: 'POST',\n url: `/embeddings-index/query/${dataset}/${indexName}?projectId=${projectId}`,\n body: {\n query: queryString,\n maxResults,\n filter,\n },\n })\n}\n\nexport function getIndexes(client: SanityClient): Promise<IndexState[]> {\n const projectId = client.config().projectId\n const dataset = client.config().dataset\n return client.request<IndexState[]>({\n method: 'GET',\n url: `/embeddings-index/${dataset}?projectId=${projectId}`,\n })\n}\n\nexport function deleteIndex(indexName: string, client: SanityClient): Promise<IndexState> {\n const projectId = client.config().projectId\n const dataset = client.config().dataset\n return client.request<IndexState>({\n method: 'DELETE',\n url: `/embeddings-index/${dataset}/${indexName}?projectId=${projectId}`,\n })\n}\n","import {useMemo} from 'react'\nimport {type SanityClient, useClient} from 'sanity'\n\nexport function useApiClient(): SanityClient {\n const client = useClient({apiVersion: 'vX'})\n return useMemo(() => {\n const customHost = localStorage.getItem('embeddings-index-host')\n if (customHost) {\n return client.withConfig({\n apiHost: customHost,\n useProjectHostname: false,\n withCredentials: false,\n })\n }\n return client\n }, [client])\n}\n","import {Card, Text} from '@sanity/ui'\nimport {createContext, type PropsWithChildren, useContext, useEffect, useState} from 'react'\nimport {useProjectId} from 'sanity'\n\nimport {useApiClient} from './embeddingsApiHooks'\n\nexport type FeatureStatus = 'enabled' | 'disabled' | 'loading' | 'error'\nconst FeatureEnabledContext = createContext<FeatureStatus>('loading')\n\nexport function useIsFeatureEnabled() {\n const client = useApiClient()\n const [status, setStatus] = useState<FeatureStatus>('loading')\n\n useEffect(() => {\n client\n .request<{enabled: boolean}>({\n method: 'GET',\n url: `/embeddings-index/status`,\n })\n .then((response) => {\n setStatus(response.enabled ? 'enabled' : 'disabled')\n })\n .catch((err) => {\n console.error(err)\n setStatus('error')\n })\n }, [client])\n\n return status\n}\n\nexport function FeatureEnabledProvider(props: PropsWithChildren) {\n const status = useIsFeatureEnabled()\n return (\n <FeatureEnabledContext.Provider value={status}>{props.children}</FeatureEnabledContext.Provider>\n )\n}\n\nexport function useIsFeatureEnabledContext(): FeatureStatus {\n return useContext(FeatureEnabledContext)\n}\n\nexport function FeatureDisabledNotice(props: {urlSuffix?: string}) {\n const projectId = useProjectId()\n\n return (\n <Card tone=\"primary\" border padding={4}>\n <Text size={1}>\n 💎 Unlock semantic search with the Embeddings Index API — available on Team, Business, and\n Enterprise plans.{' '}\n <a href={`https://www.sanity.io/manage/project/${projectId}/plan${props.urlSuffix ?? ''}`}>\n Upgrade now →\n </a>\n </Text>\n </Card>\n )\n}\n\nexport function FeatureError() {\n return (\n <Card padding={4} border tone=\"critical\">\n An error occurred. See console for details.\n </Card>\n )\n}\n","import type {SchemaType} from 'sanity'\n\nexport function isType(schemaType: SchemaType, typeName: string): boolean {\n if (schemaType.name === typeName) {\n return true\n }\n if (!schemaType.type) {\n return false\n }\n return isType(schemaType.type, typeName)\n}\n","import {useMemo} from 'react'\nimport type {ObjectSchemaType, Schema} from 'sanity'\n\nimport {isType} from '../utils/types'\n\nconst defaultProjection = '{...}'\n\nexport function useDefaultIndex(schema: Schema, dataset: string) {\n const defaultFilter = useMemo(\n () =>\n `_type in [${schema\n .getTypeNames()\n .map((n) => schema.get(n))\n .filter((schemaType): schemaType is ObjectSchemaType =>\n Boolean(schemaType && isType(schemaType, 'document')),\n )\n .filter(\n (documentType) =>\n !documentType.name.startsWith('sanity.') &&\n !documentType.name.startsWith('assist.') &&\n documentType.name !== 'document',\n )\n .map((documentType) => `\"${documentType.name}\"`)\n .join(',\\n')}]`,\n [schema],\n )\n\n return useMemo(\n () => ({\n dataset,\n projection: defaultProjection,\n filter: defaultFilter,\n }),\n [defaultFilter, dataset],\n )\n}\n","import {Box, Label, Stack, Text, TextArea, TextInput} from '@sanity/ui'\nimport {type Dispatch, type FormEvent, type SetStateAction, useCallback, useId} from 'react'\n\nimport {type NamedIndex} from '../api/embeddingsApi'\n\nexport interface IndexFormInputProps {\n index: Partial<NamedIndex>\n prop: keyof NamedIndex\n label: string\n description?: string\n onChange: Dispatch<SetStateAction<Partial<NamedIndex>>>\n readOnly: boolean\n placeholder?: string\n type?: 'text' | 'textarea'\n}\n\nexport function IndexFormInput(props: IndexFormInputProps) {\n const {label, description, index, prop, onChange, readOnly, placeholder, type} = props\n const handleChange = useCallback(\n (propValue: string) => onChange((current) => ({...current, [prop]: propValue})),\n [onChange, prop],\n )\n return (\n <FormInput\n label={label}\n description={description}\n onChange={handleChange}\n value={index[prop] ?? ''}\n readOnly={readOnly}\n placeholder={placeholder}\n type={type}\n />\n )\n}\n\ninterface FormInputProps {\n label: string\n description?: string\n onChange: (value: string) => void\n value: string\n readOnly: boolean\n placeholder?: string\n type?: 'text' | 'textarea'\n}\n\nfunction FormInput(props: FormInputProps) {\n const {label, description, onChange, value, readOnly, placeholder, type = 'text'} = props\n const id = useId()\n const handleChange = useCallback(\n (e: FormEvent<HTMLInputElement | HTMLTextAreaElement>) => onChange(e.currentTarget.value),\n [onChange],\n )\n return (\n <Stack space={3}>\n <Label as=\"label\" muted htmlFor={id}>\n {label}\n </Label>\n {description && (\n <Box>\n <Text size={1} muted>\n {description}\n </Text>\n </Box>\n )}\n {type === 'text' ? (\n <TextInput\n id={id}\n value={value}\n onChange={handleChange}\n readOnly={readOnly}\n placeholder={placeholder}\n />\n ) : (\n <TextArea\n id={id}\n value={value}\n rows={3}\n onChange={handleChange}\n readOnly={readOnly}\n placeholder={placeholder}\n style={{resize: 'vertical'}}\n />\n )}\n </Stack>\n )\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {Box, Button, Card, Dialog, Spinner, Stack, Text} from '@sanity/ui'\nimport {type FormEvent, useCallback, useEffect, useId, useRef, useState} from 'react'\nimport {useSchema} from 'sanity'\n\nimport {type IndexState, type NamedIndex} from '../api/embeddingsApi'\nimport {useApiClient} from '../api/embeddingsApiHooks'\nimport {useDefaultIndex} from './hooks'\nimport {IndexFormInput} from './IndexFormInput'\n\nexport function EditIndexDialog(props: {\n open: boolean\n onClose: () => void\n onSubmit: (index: IndexState) => void\n}) {\n const {open, onClose, onSubmit} = props\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (!open) {\n return\n }\n setTimeout(() => ref.current?.querySelector('input')?.focus())\n }, [ref, open])\n\n const handleSubmit = useCallback(\n (index: IndexState) => {\n onSubmit(index)\n onClose()\n },\n [onSubmit, onClose],\n )\n\n return open ? (\n <Dialog id={id} width={1} ref={ref} onClose={onClose} header=\"Create embeddings index\">\n <Stack padding={4} space={5}>\n <IndexEditor readOnly={false} onSubmit={handleSubmit} />\n </Stack>\n </Dialog>\n ) : null\n}\n\nexport function IndexEditor(props: {\n index?: Partial<NamedIndex>\n readOnly: boolean\n onSubmit?: (index: IndexState) => void\n}) {\n const {readOnly, index: selectedIndex, onSubmit} = props\n const client = useApiClient()\n const schema = useSchema()\n const defaultIndex = useDefaultIndex(schema, client.config().dataset ?? '')\n const [errors, setErrors] = useState<string[] | undefined>()\n const [loading, setLoading] = useState<boolean>()\n const [index, setIndex] = useState<Partial<NamedIndex>>(() => ({\n ...defaultIndex,\n ...selectedIndex,\n }))\n\n // oxlint-disable-next-line react/react-compiler\n useEffect(() => setIndex(selectedIndex ?? {...defaultIndex}), [selectedIndex, defaultIndex])\n\n const handleSubmit = useCallback(\n (e: FormEvent) => {\n e.preventDefault()\n if (readOnly) {\n return\n }\n\n const validationErrors: string[] = []\n\n if (!index.indexName) {\n validationErrors.push('Index name is required')\n } else if (!index.indexName.match(/^[a-zA-Z0-9-_]+$/g)) {\n validationErrors.push('Index name can only contain the letters a-z, numbers - and _')\n }\n\n if (!index.dataset) {\n validationErrors.push('Dataset is required')\n }\n\n if (!index.filter) {\n validationErrors.push('Filter is required')\n }\n\n if (!index.projection) {\n validationErrors.push('Projection is required')\n }\n\n if (validationErrors.length) {\n setErrors(validationErrors)\n return\n }\n\n const {projectId} = client.config()\n setLoading(true)\n client\n .request({\n method: 'POST',\n url: `/embeddings-index/${index.dataset}?projectId=${projectId}`,\n body: {\n indexName: index.indexName,\n projection: index.projection,\n filter: index.filter,\n },\n })\n .then((response: {index: IndexState}) => {\n if (onSubmit) {\n onSubmit(response.index)\n }\n })\n .catch((err: any) => {\n console.error(err)\n setErrors([err.message])\n })\n .finally(() => {\n setLoading(false)\n })\n },\n [index, readOnly, onSubmit, client],\n )\n\n return (\n <form onSubmit={handleSubmit}>\n <Stack space={4}>\n {errors?.length ? (\n <Card tone=\"critical\" border padding={2}>\n <Text>\n <ul style={{marginLeft: -10}}>\n {errors?.map((error, i) => (\n <li\n // oxlint-disable-next-line react/no-array-index-key\n key={`${error}-${i}`}\n >\n {error}\n </li>\n ))}\n </ul>\n </Text>\n </Card>\n ) : null}\n <IndexFormInput\n label=\"Index name\"\n placeholder={'Name of index without spaces...'}\n index={index}\n prop=\"indexName\"\n onChange={setIndex}\n readOnly={readOnly}\n />\n <IndexFormInput label=\"Dataset\" index={index} prop=\"dataset\" onChange={setIndex} readOnly />\n <IndexFormInput\n label=\"Filter\"\n description=\"Must be a valid GROQ filter\"\n placeholder={defaultIndex.filter}\n index={index}\n prop=\"filter\"\n onChange={setIndex}\n readOnly={readOnly}\n type=\"textarea\"\n />\n <IndexFormInput\n label=\"Projection\"\n description=\"Must be a valid GROQ projection, starting { and ending with }\"\n placeholder={defaultIndex.projection}\n index={index}\n prop=\"projection\"\n onChange={setIndex}\n readOnly={readOnly}\n type=\"textarea\"\n />\n {onSubmit && (\n <Button\n type=\"submit\"\n text=\"Create index\"\n icon={\n loading ? (\n <Box style={{marginTop: 5}}>\n <Spinner />\n </Box>\n ) : (\n AddIcon\n )\n }\n disabled={readOnly || loading}\n tone=\"primary\"\n />\n )}\n </Stack>\n </form>\n )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Button, type ButtonProps, Card} from '@sanity/ui'\nimport {type CSSProperties, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {\n DefaultPreview,\n getPreviewStateObservable,\n getPreviewValueWithFallback,\n SanityDefaultPreview,\n type SanityDocument,\n type SchemaType,\n useDocumentPreviewStore,\n useSchema,\n} from 'sanity'\nimport {useIntentLink} from 'sanity/router'\n\ninterface ResultPreviewProps {\n documentId: string\n schemaTypeName: string\n button?: boolean\n style?: CSSProperties\n}\n\nexport function DocumentPreview({\n documentId,\n style,\n schemaTypeName,\n ...buttonProps\n}: ResultPreviewProps & ButtonProps) {\n const schema = useSchema()\n const schemaType = schemaTypeName ? schema.get(schemaTypeName) : undefined\n\n if (!schemaTypeName) {\n return (\n <Card style={{minHeight: '36px'}}>\n <DefaultPreview\n withShadow={false}\n withBorder={false}\n title={'Loading...'}\n schemaType={schemaType}\n isPlaceholder\n />\n </Card>\n )\n }\n\n if (!schemaType) {\n return (\n <Card>\n <DefaultPreview\n withShadow={false}\n withBorder={false}\n media={<ErrorOutlineIcon />}\n title={\n <>\n Unknown type <code>{schemaTypeName ?? 'N/A'}</code> for {documentId}\n </>\n }\n />\n </Card>\n )\n }\n\n return (\n <DocumentPreviewInner\n documentId={documentId}\n schemaTypeName={schemaTypeName}\n schemaType={schemaType}\n style={style}\n {...buttonProps}\n />\n )\n}\n\nfunction DocumentPreviewInner({\n documentId,\n schemaType,\n style,\n button,\n}: ResultPreviewProps & {schemaType: SchemaType} & ButtonProps) {\n const documentPreviewStore = useDocumentPreviewStore()\n\n const previewStateObservable = useMemo(\n () => getPreviewStateObservable(documentPreviewStore, schemaType, documentId),\n [documentId, documentPreviewStore, schemaType],\n )\n\n const {\n snapshot,\n original,\n isLoading: previewIsLoading,\n } = useObservable(previewStateObservable, {\n snapshot: null,\n isLoading: true,\n original: null,\n })\n\n const sanityDocument = useMemo(() => {\n return {\n _id: documentId,\n _type: schemaType?.name,\n } as SanityDocument\n }, [documentId, schemaType?.name])\n\n const {onClick: onIntentClick, href} = useIntentLink({\n intent: 'edit',\n params: {\n id: documentId,\n type: schemaType?.name,\n },\n })\n\n const preview = (\n <SanityDefaultPreview\n {...getPreviewValueWithFallback({\n snapshot,\n original,\n fallback: sanityDocument,\n })}\n isPlaceholder={previewIsLoading ?? true}\n layout=\"default\"\n icon={schemaType?.icon}\n />\n )\n if (button) {\n return (\n <Button\n as={'a'}\n href={href}\n onClick={onIntentClick}\n mode=\"ghost\"\n style={{width: '100%', ...style}}\n >\n {preview}\n </Button>\n )\n }\n return <Box style={{width: '100%'}}>{preview}</Box>\n}\n","import {Autocomplete, type AutocompleteOpenButtonProps, Box, Button, Flex, Text} from '@sanity/ui'\nimport {\n type FocusEventHandler,\n type Ref,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {typed} from 'sanity'\n\nimport {queryIndex, type QueryResult} from '../api/embeddingsApi'\nimport {useApiClient} from '../api/embeddingsApiHooks'\nimport {DocumentPreview} from '../preview/DocumentPreview'\nimport {type EmbeddingsIndexConfig} from '../schemas/typeDefExtensions'\n\nexport interface SemanticSearchAutocompleteProps {\n indexConfig: EmbeddingsIndexConfig\n getEmptySearchValue: () => string\n typeFilter?: string[]\n filterResult?: (hit: QueryResult) => boolean\n onSelect?: (value: QueryResult) => void\n onFocus?: FocusEventHandler<HTMLInputElement>\n onBlur?: FocusEventHandler<HTMLInputElement>\n readOnly?: boolean\n}\n\ninterface Option {\n result: QueryResult\n value: string\n}\n\nconst NO_RESULTS_VALUE = '' as const\n\ninterface NoResultOption {\n value: string\n}\n\nconst NO_OPTIONS: NoResultOption[] = []\nconst NO_FILTER = () => true\n\nexport function SemanticSearchAutocomplete(\n props: SemanticSearchAutocompleteProps & {ref?: Ref<HTMLInputElement>},\n) {\n const {\n indexConfig,\n filterResult,\n getEmptySearchValue,\n readOnly,\n onFocus,\n onBlur,\n onSelect,\n typeFilter,\n ref,\n } = props\n const id = useId()\n const [query, setQuery] = useState('')\n const queryRef = useRef(query)\n const debouncedQuery = useDebouncedValue(query, 300)\n const prevDebouncedQuery = useRef(debouncedQuery)\n\n const [searching, setSearching] = useState(false)\n const [options, setOptions] = useState<Option[] | NoResultOption[]>(NO_OPTIONS)\n\n const client = useApiClient()\n\n const runIndexQuery = useCallback(\n (queryString: string) => {\n setSearching(true)\n const indexName = indexConfig?.indexName\n const maxResults = indexConfig?.maxResults\n\n if (!indexName) {\n throw new Error(`Reference option embeddingsIndex.indexName is required, but was missing`)\n }\n\n queryIndex(\n {\n query: queryString.trim().length ? queryString : (getEmptySearchValue() ?? ''),\n indexName,\n maxResults,\n filter: {\n type: typeFilter,\n },\n },\n client,\n )\n .then((result: QueryResult[]) => {\n if (queryRef.current === queryString) {\n setSearching(false)\n setOptions([])\n const resultOptions = result\n .filter((hit) => (filterResult ? filterResult(hit) : true))\n .map((r) => typed<Option>({result: r, value: r.value.documentId}))\n if (resultOptions.length) {\n setOptions(resultOptions)\n } else {\n setOptions([{value: NO_RESULTS_VALUE}])\n }\n }\n })\n .catch((e) => {\n console.error(e)\n if (queryRef.current === queryString) {\n setSearching(false)\n setOptions([{value: NO_RESULTS_VALUE}])\n }\n })\n },\n [client, indexConfig, getEmptySearchValue, filterResult, typeFilter],\n )\n\n useEffect(() => {\n if (prevDebouncedQuery.current !== debouncedQuery) {\n runIndexQuery(debouncedQuery)\n }\n prevDebouncedQuery.current = debouncedQuery\n }, [debouncedQuery, runIndexQuery])\n\n const openButtonConfig: AutocompleteOpenButtonProps = useMemo(\n () => ({onClick: () => runIndexQuery(queryRef.current)}),\n [runIndexQuery, queryRef],\n )\n\n const handleQueryChange = useCallback(\n (newValue: string | null) => {\n const newQuery = newValue ?? ''\n queryRef.current = newQuery\n setQuery(newQuery)\n },\n [setQuery],\n )\n\n const handleChange = useCallback(\n (value: string) => {\n if (value === NO_RESULTS_VALUE) {\n setOptions(NO_OPTIONS)\n return\n }\n const option = (options as Option[])\n .filter((r): r is Option => 'result' in r)\n .find((r) => r.result.value.documentId === value)\n if (option && onSelect) {\n onSelect(option.result)\n }\n },\n [onSelect, options],\n )\n\n return (\n <Autocomplete\n id={id}\n ref={ref}\n data-testid=\"semantic-autocomplete\"\n placeholder=\"Type to search...\"\n openButton={openButtonConfig}\n onFocus={onFocus}\n onChange={handleChange}\n loading={searching}\n onBlur={onBlur}\n readOnly={readOnly}\n filterOption={NO_FILTER}\n onQueryChange={handleQueryChange}\n options={options}\n renderOption={AutocompleteOption}\n />\n )\n}\n\nfunction AutocompleteOption(props: Option | NoResultOption) {\n if ('result' in props) {\n const value = props.result.value\n return (\n <Button mode=\"bleed\" padding={1} style={{width: '100%'}}>\n <Flex gap={2} align=\"center\">\n <Box flex={1}>\n <DocumentPreview documentId={value.documentId} schemaTypeName={value.type} />\n </Box>\n <Box padding={2}>\n <Text size={1} muted title={'Relevance'}>\n {Math.floor(props.result.score * 100)}%\n </Text>\n </Box>\n </Flex>\n </Button>\n )\n }\n\n return (\n <Button mode=\"bleed\" padding={1} style={{width: '100%'}} disabled>\n <Flex gap={2} align=\"center\">\n No results.\n </Flex>\n </Button>\n )\n}\n\nfunction useDebouncedValue<T>(value: T, ms: number) {\n const [debouncedValue, setDebouncedValue] = useState(value)\n\n useEffect(() => {\n const timeoutId = setTimeout(() => {\n setDebouncedValue(value)\n }, ms)\n return () => clearTimeout(timeoutId)\n }, [value, ms])\n\n return debouncedValue\n}\n","import {useCallback, useMemo} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {type QueryResult} from '../api/embeddingsApi'\nimport {SemanticSearchAutocomplete} from '../referenceInput/SemanticSearchAutocomplete'\nimport {type EmbeddingsIndexConfig} from '../schemas/typeDefExtensions'\n\nexport function QueryIndex(props: {indexName: string}) {\n const {indexName} = props\n const getEmpty = useCallback(() => 'anything', [])\n const indexConfig: EmbeddingsIndexConfig = useMemo(\n () => ({indexName, maxResults: 8}),\n [indexName],\n )\n\n const {resolveIntentLink, navigateUrl} = useRouter()\n const onSelect = useCallback(\n (hit: QueryResult) => {\n navigateUrl({\n path: resolveIntentLink('edit', {id: hit.value.documentId, type: hit.value.type}),\n })\n },\n [resolveIntentLink, navigateUrl],\n )\n return (\n <SemanticSearchAutocomplete\n getEmptySearchValue={getEmpty}\n indexConfig={indexConfig}\n onSelect={onSelect}\n />\n )\n}\n","import {EllipsisVerticalIcon} from '@sanity/icons/EllipsisVertical'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {\n Box,\n Button,\n Flex,\n Heading,\n Label,\n Menu,\n MenuButton,\n MenuItem,\n Stack,\n Text,\n} from '@sanity/ui'\nimport {useCallback} from 'react'\n\nimport {type IndexState} from '../api/embeddingsApi'\nimport {IndexEditor} from './IndexEditor'\nimport {QueryIndex} from './QueryIndex'\n\nexport interface IndexInfoProps {\n selectedIndex: IndexState\n onDeleteIndex: (index: IndexState) => void\n}\n\nexport function IndexInfo({selectedIndex, onDeleteIndex}: IndexInfoProps) {\n const handleDelete = useCallback(\n () => onDeleteIndex(selectedIndex),\n [selectedIndex, onDeleteIndex],\n )\n return (\n <Stack space={4} flex={1}>\n <Flex align=\"center\" flex={1} gap={2}>\n <Box flex={1}>\n <Heading>Index: {selectedIndex?.indexName ?? 'Untitled'}</Heading>\n </Box>\n <Box>\n <MenuButton\n button={\n <Button\n title=\"Open index actions\"\n icon={EllipsisVerticalIcon}\n padding={2}\n mode=\"ghost\"\n />\n }\n id={`button-${selectedIndex.indexName}`}\n menu={\n <Menu>\n <MenuItem\n text=\"Delete index\"\n icon={TrashIcon}\n tone=\"critical\"\n onClick={handleDelete}\n />\n </Menu>\n }\n popover={{placement: 'right'}}\n />\n </Box>\n </Flex>\n\n <Flex gap={6}>\n <Stack space={4} flex={1} style={{maxWidth: 600}}>\n <Box>\n <IndexEditor index={selectedIndex} readOnly />\n </Box>\n <IndexStatus selectedIndex={selectedIndex} />\n </Stack>\n\n <Stack space={3} flex={1}>\n <Label muted>Query index</Label>\n <QueryIndex indexName={selectedIndex.indexName} key={selectedIndex.indexName} />\n </Stack>\n </Flex>\n </Stack>\n )\n}\n\nfunction IndexStatus({selectedIndex}: {selectedIndex: IndexState}) {\n return (\n <Stack space={4} flex={1}>\n <Flex gap={2} align=\"center\">\n <Box flex={1}>\n <Label size={1} muted>\n Status\n </Label>\n </Box>\n <Stack space={2}>\n <Text>{selectedIndex.status}</Text>\n </Stack>\n </Flex>\n <Flex gap={5} align=\"center\">\n <Box flex={1}>\n <Label size={1} muted>\n Indexing progress\n </Label>\n </Box>\n <Stack space={2}>\n <Text>\n {selectedIndex.startDocumentCount - selectedIndex.remainingDocumentCount} /{' '}\n {selectedIndex.startDocumentCount}\n </Text>\n </Stack>\n </Flex>\n <Flex gap={5} align=\"center\">\n <Box flex={1}>\n <Label size={1} muted>\n Failed documents\n </Label>\n </Box>\n <Stack space={2}>\n <Text>{selectedIndex.failedDocumentCount}</Text>\n </Stack>\n </Flex>\n </Stack>\n )\n}\n","import {Box, Button, Card, Flex, Label, Stack, Text} from '@sanity/ui'\nimport {useCallback} from 'react'\n\nimport {type IndexState} from '../api/embeddingsApi'\n\nexport interface IndexListProps {\n loading: boolean\n selectedIndex?: IndexState\n indexes: IndexState[]\n onIndexSelected: (index: IndexState) => void\n}\n\nexport function IndexList(props: IndexListProps) {\n const {loading, selectedIndex, indexes, onIndexSelected} = props\n return (\n <Card tone=\"default\" style={{opacity: loading ? 0.5 : 1}}>\n <Stack space={2}>\n <Card borderBottom flex={1} paddingBottom={2} padding={3}>\n <Flex>\n <Box flex={1}>\n <Label muted>Index name</Label>\n </Box>\n <Box flex={1}>\n <Label muted>Dataset</Label>\n </Box>\n <Box flex={1}>\n <Label muted>Status</Label>\n </Box>\n <Box flex={1}>\n <Label muted>Progress</Label>\n </Box>\n </Flex>\n </Card>\n {indexes.length ? (\n <Stack space={2} style={{maxHeight: 200, overflow: 'auto'}}>\n {indexes.map((index) => (\n <IndexRow\n selectedIndex={selectedIndex}\n index={index}\n onIndexSelected={onIndexSelected}\n key={index.indexName}\n />\n ))}\n </Stack>\n ) : (\n <Text muted>No indexes found.</Text>\n )}\n </Stack>\n </Card>\n )\n}\n\nfunction IndexRow(props: {\n selectedIndex?: IndexState\n index: IndexState\n onIndexSelected: (index: IndexState) => void\n}) {\n const {selectedIndex, index, onIndexSelected} = props\n const onSelect = useCallback(() => onIndexSelected(index), [onIndexSelected, index])\n return (\n <Button\n tone={selectedIndex?.indexName === index.indexName ? 'primary' : 'default'}\n mode={selectedIndex?.indexName === index.indexName ? 'default' : 'ghost'}\n onClick={onSelect}\n key={index.indexName}\n padding={3}\n >\n <Flex>\n <Box flex={1}>\n <strong>{index.indexName}</strong>\n </Box>\n <Box flex={1}>{index.dataset}</Box>\n <Box flex={1}>{index.status}</Box>\n <Box flex={1}>\n {index.startDocumentCount\n ? Math.floor(\n ((index.startDocumentCount - index.remainingDocumentCount) /\n index.startDocumentCount) *\n 100,\n )\n : '?'}\n %\n </Box>\n </Flex>\n </Button>\n )\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {UndoIcon} from '@sanity/icons/Undo'\nimport {Box, Button, Card, Flex, Heading, Spinner, Stack} from '@sanity/ui'\nimport {useCallback, useEffect, useState} from 'react'\n\nimport {deleteIndex, getIndexes, type IndexState, type NamedIndex} from '../api/embeddingsApi'\nimport {useApiClient} from '../api/embeddingsApiHooks'\nimport {FeatureDisabledNotice, FeatureError, useIsFeatureEnabled} from '../api/isEnabled'\nimport {EditIndexDialog} from './IndexEditor'\nimport {IndexInfo} from './IndexInfo'\nimport {IndexList} from './IndexList'\n\nexport function EmbeddingsIndexTool() {\n const featureState = useIsFeatureEnabled()\n return (\n <Card flex={1}>\n <Flex justify=\"center\" flex={1}>\n {featureState === 'error' ? (\n <Box padding={4}>\n <FeatureError />\n </Box>\n ) : null}\n\n {featureState === 'disabled' ? (\n <Box padding={4}>\n <FeatureDisabledNotice urlSuffix=\"?ref=embeddings-tab\" />\n </Box>\n ) : null}\n\n {featureState === 'loading' ? (\n <Box padding={6}>\n <Spinner size={4} />\n </Box>\n ) : null}\n\n {featureState === 'enabled' ? (\n <Card flex={1} style={{maxWidth: 1200}} padding={5}>\n <Indexes />\n </Card>\n ) : null}\n </Flex>\n </Card>\n )\n}\n\nconst NO_INDEXES: IndexState[] = []\n\nfunction Indexes() {\n const client = useApiClient()\n const [indexes, setIndexes] = useState<IndexState[]>(NO_INDEXES)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState(false)\n const [createIndexOpen, setCreateIndexOpen] = useState(false)\n const [selectedIndex, setSelectedIndex] = useState<IndexState | undefined>(undefined)\n\n const onCreateIndexClose = useCallback(() => setCreateIndexOpen(false), [])\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler\n setSelectedIndex(indexes.find((i) => i.indexName === selectedIndex?.indexName))\n }, [indexes, selectedIndex])\n\n const updateIndexes = useCallback(() => {\n setLoading(true)\n setError(false)\n getIndexes(client)\n .then((response: IndexState[]) => {\n setLoading(false)\n setIndexes(response)\n })\n .catch((e) => {\n console.error(e)\n setError(true)\n })\n .finally(() => {\n setLoading(false)\n })\n }, [client])\n\n const deleteNamedIndex = useCallback(\n (index: NamedIndex) => {\n if (\n !confirm(`Are you sure you want to delete ${index.indexName} for dataset ${index.dataset}?`)\n ) {\n return\n }\n setLoading(true)\n setError(false)\n deleteIndex(index.indexName, client)\n .then(() => {\n setTimeout(() => updateIndexes())\n })\n .catch((e) => {\n console.error(e)\n setError(true)\n })\n .finally(() => {\n setLoading(false)\n })\n },\n [client, updateIndexes],\n )\n\n const onSelectIndex = useCallback(\n (index: IndexState) => {\n setSelectedIndex(index)\n updateIndexes()\n },\n [setSelectedIndex, updateIndexes],\n )\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler\n updateIndexes()\n }, [updateIndexes])\n\n const openCreate = useCallback(() => setCreateIndexOpen(true), [])\n const onSubmit = useCallback(\n (index: IndexState) => {\n setIndexes((current) => [...current, index])\n setSelectedIndex(index)\n updateIndexes()\n },\n [updateIndexes],\n )\n return (\n <Stack space={4}>\n <Flex gap={2} align=\"center\" style={{height: 30}}>\n <Box flex={1}>\n <Heading size={1}>Embeddings indexes</Heading>\n </Box>\n <Box style={{justifySelf: 'flex-end'}}>\n <Button\n icon={AddIcon}\n text={'New index'}\n tone=\"default\"\n mode=\"ghost\"\n onClick={openCreate}\n />\n </Box>\n <Button\n icon={loading ? <Spinner /> : UndoIcon}\n title={'Refresh index list'}\n tone=\"default\"\n mode=\"bleed\"\n onClick={updateIndexes}\n disabled={loading}\n />\n </Flex>\n {error ? (\n <Card tone=\"critical\" padding={2} border>\n An error occurred. See console for details.\n </Card>\n ) : null}\n <IndexList\n loading={loading}\n indexes={indexes}\n selectedIndex={selectedIndex}\n onIndexSelected={onSelectIndex}\n />\n {selectedIndex && (\n <IndexInfo selectedIndex={selectedIndex} onDeleteIndex={deleteNamedIndex} />\n )}\n <EditIndexDialog open={createIndexOpen} onClose={onCreateIndexClose} onSubmit={onSubmit} />\n </Stack>\n )\n}\n","import {EarthGlobeIcon} from '@sanity/icons/EarthGlobe'\nimport {definePlugin, type Tool} from 'sanity'\n\nimport {EmbeddingsIndexTool} from './EmbeddingsIndexTool'\n\nconst embeddingsIndexTool: Tool = {\n name: 'embeddings-index',\n title: 'Embeddings',\n icon: EarthGlobeIcon,\n component: EmbeddingsIndexTool,\n}\n\nexport const embeddingsIndexDashboard = definePlugin({\n name: '@sanity/embeddings-index-dashboard',\n tools: [embeddingsIndexTool],\n})\n","export function publicId(id: string): string {\n return id.replace('drafts.', '')\n}\n","import {EarthGlobeIcon} from '@sanity/icons/EarthGlobe'\nimport {LinkIcon} from '@sanity/icons/Link'\nimport {Box, Button, Flex, Spinner} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {\n type ObjectInputProps,\n type ReferenceBaseOptions,\n type ReferenceSchemaType,\n set,\n setIfMissing,\n unset,\n} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {type QueryResult} from '../api/embeddingsApi'\nimport {FeatureDisabledNotice, FeatureError, useIsFeatureEnabledContext} from '../api/isEnabled'\nimport {type EmbeddingsIndexConfig} from '../schemas/typeDefExtensions'\nimport {publicId} from '../utils/id'\nimport {SemanticSearchAutocomplete} from './SemanticSearchAutocomplete'\n\nfunction useEmeddingsConfig(\n embeddingsIndexConfig: ReferenceBaseOptions['embeddingsIndex'],\n defaultConfig: EmbeddingsIndexConfig | undefined,\n) {\n return useMemo(() => {\n if (embeddingsIndexConfig === true || !embeddingsIndexConfig) {\n if (!defaultConfig?.indexName) {\n throw new Error(\n 'Default embeddingsIndex config is missing. When options.embeddingsIndex: true, embeddingsIndexReferenceInput plugin config is required.',\n )\n }\n return defaultConfig\n }\n\n const finalConfig = {\n ...defaultConfig,\n ...embeddingsIndexConfig,\n }\n\n if (!finalConfig?.indexName) {\n throw new Error(\n 'indexName is missing. Either set it in options.embeddingsIndex or configure defaults using plugin config.',\n )\n }\n\n return finalConfig\n }, [defaultConfig, embeddingsIndexConfig])\n}\n\nexport function SemanticSearchReferenceInput(\n props: ObjectInputProps & {defaultConfig?: EmbeddingsIndexConfig},\n) {\n const embeddingsIndexConfig = (props.schemaType as ReferenceSchemaType)?.options?.embeddingsIndex\n\n const config = useEmeddingsConfig(embeddingsIndexConfig, props.defaultConfig)\n\n const defaultEnabled = config.searchMode === 'embeddings'\n\n const featureState = useIsFeatureEnabledContext()\n\n const [semantic, setSemantic] = useState<boolean>(defaultEnabled)\n const toggleSemantic = useCallback(() => setSemantic((current) => !current), [])\n\n return (\n <Flex gap={2} flex={1} style={{width: '100%'}}>\n {semantic && featureState == 'loading' ? (\n <Box padding={2}>\n <Spinner />\n </Box>\n ) : null}\n\n {semantic && featureState == 'disabled' ? (\n <FeatureDisabledNotice urlSuffix=\"?ref=embeddings-ref\" />\n ) : null}\n\n {semantic && featureState === 'error' ? (\n <Box padding={4}>\n <FeatureError />\n </Box>\n ) : null}\n\n <Box flex={1} style={{maxHeight: 36, overflow: 'hidden'}}>\n {semantic && featureState == 'enabled' ? (\n <SemanticSearchInput {...props} indexConfig={config} />\n ) : (\n props.renderDefault(props)\n )}\n </Box>\n <Button\n icon={semantic ? EarthGlobeIcon : LinkIcon}\n onClick={toggleSemantic}\n mode=\"bleed\"\n title={\n semantic ? 'Switch to standard reference search' : 'Switch to semantic reference search'\n }\n />\n </Flex>\n )\n}\n\nfunction SemanticSearchInput(props: ObjectInputProps & {indexConfig: EmbeddingsIndexConfig}) {\n const {indexConfig, onPathFocus, onChange, readOnly, schemaType, value} = props\n\n const {value: currentDocument} = useDocumentPane()\n const docRef = useRef(currentDocument)\n const autocompleteRef = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n docRef.current = currentDocument\n }, [currentDocument])\n\n useEffect(() => {\n // if this component is rendered, and there is a value, replace was selected\n if (value?.['_ref']) {\n autocompleteRef.current?.focus()\n }\n // intentional empty deps\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const handleFocus = useCallback(() => onPathFocus(['_ref']), [onPathFocus])\n const handleBlur = useCallback(() => onPathFocus([]), [onPathFocus])\n\n const handleChange = useCallback(\n (result: QueryResult) => {\n if (!result) {\n onChange(unset())\n onPathFocus([])\n return\n }\n const patches = [\n setIfMissing({}),\n set(schemaType.name, ['_type']),\n set(publicId(result.value.documentId), ['_ref']),\n unset(['_weak']),\n unset(['_strengthenOnPublish']),\n ]\n\n onChange(patches)\n // Move focus away from _ref and one level up\n onPathFocus([])\n },\n [onChange, onPathFocus, schemaType.name],\n )\n\n const filterResult = useCallback(\n (r: QueryResult) => {\n const currentId = docRef.current?._id\n return !currentId || r.value.documentId !== publicId(currentId)\n },\n [docRef],\n )\n\n const getEmptySearchValue = useCallback(() => JSON.stringify(docRef.current), [docRef])\n const typeFilter = useMemo(\n () => (schemaType as ReferenceSchemaType).to.map((refType) => refType.name),\n [schemaType],\n )\n\n return (\n <SemanticSearchAutocomplete\n ref={autocompleteRef}\n typeFilter={typeFilter}\n indexConfig={indexConfig}\n onSelect={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n getEmptySearchValue={getEmptySearchValue}\n filterResult={filterResult}\n readOnly={readOnly}\n />\n )\n}\n","import {\n definePlugin,\n isObjectInputProps,\n type ObjectInputProps,\n type ReferenceSchemaType,\n} from 'sanity'\n\nimport {FeatureEnabledProvider} from '../api/isEnabled'\nimport {type EmbeddingsIndexConfig} from '../schemas/typeDefExtensions'\nimport {isType} from '../utils/types'\nimport {SemanticSearchReferenceInput} from './SemanticSearchReferenceInput'\n\nexport const embeddingsIndexReferenceInput = definePlugin<EmbeddingsIndexConfig | void>(\n (defaultConfig) => {\n const config = typeof defaultConfig === 'object' ? defaultConfig : undefined\n\n return {\n name: '@sanity/embeddings-index-reference-input',\n studio: {\n components: {\n layout: (props) => {\n return <FeatureEnabledProvider>{props.renderDefault(props)}</FeatureEnabledProvider>\n },\n },\n },\n form: {\n components: {\n input: (props) => {\n const embeddingsIndexConfig = (props.schemaType as ReferenceSchemaType)?.options\n ?.embeddingsIndex\n if (\n isObjectInputProps(props) &&\n isType(props.schemaType, 'reference') &&\n (embeddingsIndexConfig === true || embeddingsIndexConfig?.indexName)\n ) {\n return (\n <SemanticSearchReferenceInput\n {...(props as ObjectInputProps)}\n defaultConfig={config}\n />\n )\n }\n return props.renderDefault(props)\n },\n },\n },\n }\n },\n)\n"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","names":["SanityClient","NamedIndex","indexName","dataset","project","projection","filter","IndexState","status","startDocumentCount","remainingDocumentCount","failedDocumentCount","QueryResult","score","value","documentId","type","QueryConfig","query","maxResults","queryIndex","queryConfig","client","Promise","projectId","config","queryString","trim","request","method","url","body","getIndexes","deleteIndex","useMemo","SanityClient","useClient","useApiClient","$","_c","t0","Symbol","for","apiVersion","client","t1","bb0","customHost","localStorage","getItem","withConfig","apiHost","useProjectHostname","withCredentials","Card","Text","createContext","PropsWithChildren","useContext","useEffect","useState","useProjectId","useApiClient","FeatureStatus","FeatureEnabledContext","useIsFeatureEnabled","$","_c","client","status","setStatus","t0","t1","request","method","url","then","response","enabled","catch","err","console","error","FeatureEnabledProvider","props","children","useIsFeatureEnabledContext","FeatureDisabledNotice","projectId","urlSuffix","FeatureError","Symbol","for","SchemaType","isType","schemaType","typeName","name","type","useMemo","ObjectSchemaType","Schema","isType","defaultProjection","useDefaultIndex","schema","dataset","$","_c","t0","getTypeNames","map","n","get","filter","_temp","_temp2","_temp3","join","defaultFilter","t1","projection","documentType_0","documentType","name","startsWith","schemaType","Boolean","Box","Label","Stack","Text","TextArea","TextInput","Dispatch","FormEvent","SetStateAction","useCallback","useId","NamedIndex","IndexFormInputProps","index","Partial","prop","label","description","onChange","readOnly","placeholder","type","IndexFormInput","props","$","_c","t0","propValue","current","handleChange","t1","t2","FormInputProps","value","FormInput","undefined","id","e","currentTarget","t3","t4","resize","t5","AddIcon","Box","Button","Card","Dialog","Spinner","Stack","Text","FormEvent","useCallback","useEffect","useId","useRef","useState","useSchema","IndexState","NamedIndex","useApiClient","useDefaultIndex","IndexFormInput","EditIndexDialog","props","$","_c","open","onClose","onSubmit","id","ref","t0","t1","setTimeout","current","querySelector","focus","t2","index","handleSubmit","t3","IndexEditor","readOnly","selectedIndex","client","schema","config","dataset","defaultIndex","errors","setErrors","loading","setLoading","setIndex","t4","e","preventDefault","validationErrors","indexName","push","match","filter","projection","length","projectId","request","method","url","body","then","response","catch","err","console","error","message","finally","t5","marginLeft","map","_temp","t6","t7","t8","t9","t10","marginTop","t11","t12","i","ErrorOutlineIcon","Box","Button","ButtonProps","Card","CSSProperties","useMemo","useObservable","DefaultPreview","getPreviewStateObservable","getPreviewValueWithFallback","SanityDefaultPreview","SanityDocument","SchemaType","useDocumentPreviewStore","useSchema","useIntentLink","ResultPreviewProps","documentId","schemaTypeName","button","style","DocumentPreview","t0","$","_c","buttonProps","schema","t1","get","undefined","schemaType","t2","Symbol","for","minHeight","t3","t4","t5","DocumentPreviewInner","documentPreviewStore","previewStateObservable","snapshot","isLoading","original","previewIsLoading","name","_id","_type","sanityDocument","t6","intent","params","id","type","onClick","onIntentClick","href","t7","fallback","t8","t9","icon","t10","preview","t11","width","t12","Autocomplete","AutocompleteOpenButtonProps","Box","Button","Flex","Text","FocusEventHandler","Ref","useCallback","useEffect","useId","useMemo","useRef","useState","typed","queryIndex","QueryResult","useApiClient","DocumentPreview","EmbeddingsIndexConfig","SemanticSearchAutocompleteProps","indexConfig","getEmptySearchValue","typeFilter","filterResult","hit","onSelect","value","onFocus","HTMLInputElement","onBlur","readOnly","Option","result","NO_RESULTS_VALUE","const","NoResultOption","NO_OPTIONS","NO_FILTER","SemanticSearchAutocomplete","props","$","_c","ref","id","query","setQuery","queryRef","debouncedQuery","useDebouncedValue","prevDebouncedQuery","searching","setSearching","options","setOptions","client","t0","indexName","maxResults","queryString","Error","trim","length","filter","type","then","current","resultOptions","map","_temp","catch","e","console","error","runIndexQuery","t1","t2","t3","onClick","openButtonConfig","t4","Symbol","for","newValue","newQuery","handleQueryChange","t5","option","_temp2","find","r_1","r","documentId","handleChange","t6","AutocompleteOption","r_0","width","Math","floor","score","ms","debouncedValue","setDebouncedValue","timeoutId","setTimeout","clearTimeout","useCallback","useMemo","useRouter","QueryResult","SemanticSearchAutocomplete","EmbeddingsIndexConfig","QueryIndex","props","$","_c","indexName","getEmpty","_temp","t0","maxResults","indexConfig","resolveIntentLink","navigateUrl","t1","hit","path","id","value","documentId","type","onSelect","t2","EllipsisVerticalIcon","TrashIcon","Box","Button","Flex","Heading","Label","Menu","MenuButton","MenuItem","Stack","Text","useCallback","IndexState","IndexEditor","QueryIndex","IndexInfoProps","selectedIndex","onDeleteIndex","index","IndexInfo","t0","$","_c","t1","handleDelete","t2","indexName","t3","t4","Symbol","for","t5","t6","t7","placement","t8","t9","t10","maxWidth","t11","t12","t13","t14","t15","IndexStatus","status","startDocumentCount","remainingDocumentCount","failedDocumentCount","Box","Button","Card","Flex","Label","Stack","Text","useCallback","IndexState","IndexListProps","loading","selectedIndex","indexes","onIndexSelected","index","IndexList","props","$","_c","t0","t1","opacity","t2","Symbol","for","t3","t4","t5","t6","length","maxHeight","overflow","map","indexName","t7","IndexRow","onSelect","dataset","status","startDocumentCount","Math","floor","remainingDocumentCount","t8","t9","AddIcon","UndoIcon","Box","Button","Card","Flex","Heading","Spinner","Stack","useCallback","useEffect","useState","deleteIndex","getIndexes","IndexState","NamedIndex","useApiClient","FeatureDisabledNotice","FeatureError","useIsFeatureEnabled","EditIndexDialog","IndexInfo","IndexList","EmbeddingsIndexTool","$","_c","featureState","t0","t1","t2","t3","maxWidth","t4","NO_INDEXES","Indexes","client","indexes","setIndexes","loading","setLoading","error","setError","createIndexOpen","setCreateIndexOpen","selectedIndex","setSelectedIndex","undefined","Symbol","for","onCreateIndexClose","indexName","find","i","then","response","catch","e","console","finally","updateIndexes","index","confirm","dataset","setTimeout","e_0","deleteNamedIndex","t5","index_0","onSelectIndex","t6","t7","t8","openCreate","t9","index_1","current","onSubmit","t10","height","t11","t12","justifySelf","t13","t14","t15","t16","t17","t18","t19","EarthGlobeIcon","definePlugin","Tool","EmbeddingsIndexTool","embeddingsIndexTool","name","title","icon","component","embeddingsIndexDashboard","tools","publicId","id","replace","EarthGlobeIcon","LinkIcon","Box","Button","Flex","Spinner","useCallback","useEffect","useMemo","useRef","useState","ObjectInputProps","ReferenceBaseOptions","ReferenceSchemaType","set","setIfMissing","unset","useDocumentPane","QueryResult","FeatureDisabledNotice","FeatureError","useIsFeatureEnabledContext","EmbeddingsIndexConfig","publicId","SemanticSearchAutocomplete","useEmeddingsConfig","embeddingsIndexConfig","defaultConfig","$","_c","t0","bb0","indexName","Error","t1","finalConfig","SemanticSearchReferenceInput","props","schemaType","options","embeddingsIndex","config","defaultEnabled","searchMode","featureState","semantic","setSemantic","Symbol","for","_temp","toggleSemantic","width","t2","t3","t4","t5","maxHeight","overflow","t6","renderDefault","t7","t8","t9","t10","t11","current","SemanticSearchInput","indexConfig","onPathFocus","onChange","readOnly","value","currentDocument","docRef","autocompleteRef","HTMLInputElement","focus","handleFocus","handleBlur","handleChange","result","patches","name","documentId","filterResult","r","currentId","_id","getEmptySearchValue","JSON","stringify","typeFilter","to","map","refType","definePlugin","isObjectInputProps","ObjectInputProps","ReferenceSchemaType","FeatureEnabledProvider","EmbeddingsIndexConfig","isType","SemanticSearchReferenceInput","embeddingsIndexReferenceInput","defaultConfig","config","undefined","name","studio","components","layout","props","renderDefault","form","input","embeddingsIndexConfig","schemaType","options","embeddingsIndex","indexName"],"sources":["../src/api/embeddingsApi.ts","../src/api/embeddingsApiHooks.ts","../src/api/isEnabled.tsx","../src/utils/types.ts","../src/embeddingsIndexDashboard/hooks.ts","../src/embeddingsIndexDashboard/IndexFormInput.tsx","../src/embeddingsIndexDashboard/IndexEditor.tsx","../src/preview/DocumentPreview.tsx","../src/referenceInput/SemanticSearchAutocomplete.tsx","../src/embeddingsIndexDashboard/QueryIndex.tsx","../src/embeddingsIndexDashboard/IndexInfo.tsx","../src/embeddingsIndexDashboard/IndexList.tsx","../src/embeddingsIndexDashboard/EmbeddingsIndexTool.tsx","../src/embeddingsIndexDashboard/dashboardPlugin.ts","../src/utils/id.ts","../src/referenceInput/SemanticSearchReferenceInput.tsx","../src/referenceInput/referencePlugin.tsx"],"sourcesContent":["import {type SanityClient} from 'sanity'\n\nexport interface NamedIndex {\n indexName: string\n dataset: string\n project: string\n projection: string\n filter: string\n}\n\nexport interface IndexState extends NamedIndex {\n status: string\n startDocumentCount: number\n remainingDocumentCount: number\n failedDocumentCount: number\n}\n\nexport interface QueryResult {\n score: number\n value: {\n documentId: string\n type: string\n }\n}\n\nexport interface QueryConfig {\n query: string\n indexName: string\n maxResults?: number\n filter?: {\n type?: string | string[]\n }\n}\n\nexport function queryIndex(queryConfig: QueryConfig, client: SanityClient): Promise<QueryResult[]> {\n const {query, indexName, maxResults, filter} = queryConfig\n const projectId = client.config().projectId\n const dataset = client.config().dataset\n const queryString = query?.trim()\n\n return client.request<QueryResult[]>({\n method: 'POST',\n url: `/embeddings-index/query/${dataset}/${indexName}?projectId=${projectId}`,\n body: {\n query: queryString,\n maxResults,\n filter,\n },\n })\n}\n\nexport function getIndexes(client: SanityClient): Promise<IndexState[]> {\n const projectId = client.config().projectId\n const dataset = client.config().dataset\n return client.request<IndexState[]>({\n method: 'GET',\n url: `/embeddings-index/${dataset}?projectId=${projectId}`,\n })\n}\n\nexport function deleteIndex(indexName: string, client: SanityClient): Promise<IndexState> {\n const projectId = client.config().projectId\n const dataset = client.config().dataset\n return client.request<IndexState>({\n method: 'DELETE',\n url: `/embeddings-index/${dataset}/${indexName}?projectId=${projectId}`,\n })\n}\n","import {useMemo} from 'react'\nimport {type SanityClient, useClient} from 'sanity'\n\nexport function useApiClient(): SanityClient {\n const client = useClient({apiVersion: 'vX'})\n return useMemo(() => {\n const customHost = localStorage.getItem('embeddings-index-host')\n if (customHost) {\n return client.withConfig({\n apiHost: customHost,\n useProjectHostname: false,\n withCredentials: false,\n })\n }\n return client\n }, [client])\n}\n","import {Card, Text} from '@sanity/ui'\nimport {createContext, type PropsWithChildren, useContext, useEffect, useState} from 'react'\nimport {useProjectId} from 'sanity'\n\nimport {useApiClient} from './embeddingsApiHooks'\n\nexport type FeatureStatus = 'enabled' | 'disabled' | 'loading' | 'error'\nconst FeatureEnabledContext = createContext<FeatureStatus>('loading')\n\nexport function useIsFeatureEnabled() {\n const client = useApiClient()\n const [status, setStatus] = useState<FeatureStatus>('loading')\n\n useEffect(() => {\n client\n .request<{enabled: boolean}>({\n method: 'GET',\n url: `/embeddings-index/status`,\n })\n .then((response) => {\n setStatus(response.enabled ? 'enabled' : 'disabled')\n })\n .catch((err) => {\n console.error(err)\n setStatus('error')\n })\n }, [client])\n\n return status\n}\n\nexport function FeatureEnabledProvider(props: PropsWithChildren) {\n const status = useIsFeatureEnabled()\n return (\n <FeatureEnabledContext.Provider value={status}>{props.children}</FeatureEnabledContext.Provider>\n )\n}\n\nexport function useIsFeatureEnabledContext(): FeatureStatus {\n return useContext(FeatureEnabledContext)\n}\n\nexport function FeatureDisabledNotice(props: {urlSuffix?: string}) {\n const projectId = useProjectId()\n\n return (\n <Card tone=\"primary\" border padding={4}>\n <Text size={1}>\n 💎 Unlock semantic search with the Embeddings Index API — available on Team, Business, and\n Enterprise plans.{' '}\n <a href={`https://www.sanity.io/manage/project/${projectId}/plan${props.urlSuffix ?? ''}`}>\n Upgrade now →\n </a>\n </Text>\n </Card>\n )\n}\n\nexport function FeatureError() {\n return (\n <Card padding={4} border tone=\"critical\">\n An error occurred. See console for details.\n </Card>\n )\n}\n","import type {SchemaType} from 'sanity'\n\nexport function isType(schemaType: SchemaType, typeName: string): boolean {\n if (schemaType.name === typeName) {\n return true\n }\n if (!schemaType.type) {\n return false\n }\n return isType(schemaType.type, typeName)\n}\n","import {useMemo} from 'react'\nimport type {ObjectSchemaType, Schema} from 'sanity'\n\nimport {isType} from '../utils/types'\n\nconst defaultProjection = '{...}'\n\nexport function useDefaultIndex(schema: Schema, dataset: string) {\n const defaultFilter = useMemo(\n () =>\n `_type in [${schema\n .getTypeNames()\n .map((n) => schema.get(n))\n .filter((schemaType): schemaType is ObjectSchemaType =>\n Boolean(schemaType && isType(schemaType, 'document')),\n )\n .filter(\n (documentType) =>\n !documentType.name.startsWith('sanity.') &&\n !documentType.name.startsWith('assist.') &&\n documentType.name !== 'document',\n )\n .map((documentType) => `\"${documentType.name}\"`)\n .join(',\\n')}]`,\n [schema],\n )\n\n return useMemo(\n () => ({\n dataset,\n projection: defaultProjection,\n filter: defaultFilter,\n }),\n [defaultFilter, dataset],\n )\n}\n","import {Box, Label, Stack, Text, TextArea, TextInput} from '@sanity/ui'\nimport {type Dispatch, type FormEvent, type SetStateAction, useCallback, useId} from 'react'\n\nimport {type NamedIndex} from '../api/embeddingsApi'\n\nexport interface IndexFormInputProps {\n index: Partial<NamedIndex>\n prop: keyof NamedIndex\n label: string\n description?: string\n onChange: Dispatch<SetStateAction<Partial<NamedIndex>>>\n readOnly: boolean\n placeholder?: string\n type?: 'text' | 'textarea'\n}\n\nexport function IndexFormInput(props: IndexFormInputProps) {\n const {label, description, index, prop, onChange, readOnly, placeholder, type} = props\n const handleChange = useCallback(\n (propValue: string) => onChange((current) => ({...current, [prop]: propValue})),\n [onChange, prop],\n )\n return (\n <FormInput\n label={label}\n description={description}\n onChange={handleChange}\n value={index[prop] ?? ''}\n readOnly={readOnly}\n placeholder={placeholder}\n type={type}\n />\n )\n}\n\ninterface FormInputProps {\n label: string\n description?: string\n onChange: (value: string) => void\n value: string\n readOnly: boolean\n placeholder?: string\n type?: 'text' | 'textarea'\n}\n\nfunction FormInput(props: FormInputProps) {\n const {label, description, onChange, value, readOnly, placeholder, type = 'text'} = props\n const id = useId()\n const handleChange = useCallback(\n (e: FormEvent<HTMLInputElement | HTMLTextAreaElement>) => onChange(e.currentTarget.value),\n [onChange],\n )\n return (\n <Stack space={3}>\n <Label as=\"label\" muted htmlFor={id}>\n {label}\n </Label>\n {description && (\n <Box>\n <Text size={1} muted>\n {description}\n </Text>\n </Box>\n )}\n {type === 'text' ? (\n <TextInput\n id={id}\n value={value}\n onChange={handleChange}\n readOnly={readOnly}\n placeholder={placeholder}\n />\n ) : (\n <TextArea\n id={id}\n value={value}\n rows={3}\n onChange={handleChange}\n readOnly={readOnly}\n placeholder={placeholder}\n style={{resize: 'vertical'}}\n />\n )}\n </Stack>\n )\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {Box, Button, Card, Dialog, Spinner, Stack, Text} from '@sanity/ui'\nimport {type FormEvent, useCallback, useEffect, useId, useRef, useState} from 'react'\nimport {useSchema} from 'sanity'\n\nimport {type IndexState, type NamedIndex} from '../api/embeddingsApi'\nimport {useApiClient} from '../api/embeddingsApiHooks'\nimport {useDefaultIndex} from './hooks'\nimport {IndexFormInput} from './IndexFormInput'\n\nexport function EditIndexDialog(props: {\n open: boolean\n onClose: () => void\n onSubmit: (index: IndexState) => void\n}) {\n const {open, onClose, onSubmit} = props\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (!open) {\n return\n }\n setTimeout(() => ref.current?.querySelector('input')?.focus())\n }, [ref, open])\n\n const handleSubmit = useCallback(\n (index: IndexState) => {\n onSubmit(index)\n onClose()\n },\n [onSubmit, onClose],\n )\n\n return open ? (\n <Dialog id={id} width={1} ref={ref} onClose={onClose} header=\"Create embeddings index\">\n <Stack padding={4} space={5}>\n <IndexEditor readOnly={false} onSubmit={handleSubmit} />\n </Stack>\n </Dialog>\n ) : null\n}\n\nexport function IndexEditor(props: {\n index?: Partial<NamedIndex>\n readOnly: boolean\n onSubmit?: (index: IndexState) => void\n}) {\n const {readOnly, index: selectedIndex, onSubmit} = props\n const client = useApiClient()\n const schema = useSchema()\n const defaultIndex = useDefaultIndex(schema, client.config().dataset ?? '')\n const [errors, setErrors] = useState<string[] | undefined>()\n const [loading, setLoading] = useState<boolean>()\n const [index, setIndex] = useState<Partial<NamedIndex>>(() => ({\n ...defaultIndex,\n ...selectedIndex,\n }))\n\n // oxlint-disable-next-line react/react-compiler\n useEffect(() => setIndex(selectedIndex ?? {...defaultIndex}), [selectedIndex, defaultIndex])\n\n const handleSubmit = useCallback(\n (e: FormEvent) => {\n e.preventDefault()\n if (readOnly) {\n return\n }\n\n const validationErrors: string[] = []\n\n if (!index.indexName) {\n validationErrors.push('Index name is required')\n } else if (!index.indexName.match(/^[a-zA-Z0-9-_]+$/g)) {\n validationErrors.push('Index name can only contain the letters a-z, numbers - and _')\n }\n\n if (!index.dataset) {\n validationErrors.push('Dataset is required')\n }\n\n if (!index.filter) {\n validationErrors.push('Filter is required')\n }\n\n if (!index.projection) {\n validationErrors.push('Projection is required')\n }\n\n if (validationErrors.length) {\n setErrors(validationErrors)\n return\n }\n\n const {projectId} = client.config()\n setLoading(true)\n client\n .request({\n method: 'POST',\n url: `/embeddings-index/${index.dataset}?projectId=${projectId}`,\n body: {\n indexName: index.indexName,\n projection: index.projection,\n filter: index.filter,\n },\n })\n .then((response: {index: IndexState}) => {\n if (onSubmit) {\n onSubmit(response.index)\n }\n })\n .catch((err: any) => {\n console.error(err)\n setErrors([err.message])\n })\n .finally(() => {\n setLoading(false)\n })\n },\n [index, readOnly, onSubmit, client],\n )\n\n return (\n <form onSubmit={handleSubmit}>\n <Stack space={4}>\n {errors?.length ? (\n <Card tone=\"critical\" border padding={2}>\n <Text>\n <ul style={{marginLeft: -10}}>\n {errors?.map((error, i) => (\n <li\n // oxlint-disable-next-line react/no-array-index-key\n key={`${error}-${i}`}\n >\n {error}\n </li>\n ))}\n </ul>\n </Text>\n </Card>\n ) : null}\n <IndexFormInput\n label=\"Index name\"\n placeholder={'Name of index without spaces...'}\n index={index}\n prop=\"indexName\"\n onChange={setIndex}\n readOnly={readOnly}\n />\n <IndexFormInput label=\"Dataset\" index={index} prop=\"dataset\" onChange={setIndex} readOnly />\n <IndexFormInput\n label=\"Filter\"\n description=\"Must be a valid GROQ filter\"\n placeholder={defaultIndex.filter}\n index={index}\n prop=\"filter\"\n onChange={setIndex}\n readOnly={readOnly}\n type=\"textarea\"\n />\n <IndexFormInput\n label=\"Projection\"\n description=\"Must be a valid GROQ projection, starting { and ending with }\"\n placeholder={defaultIndex.projection}\n index={index}\n prop=\"projection\"\n onChange={setIndex}\n readOnly={readOnly}\n type=\"textarea\"\n />\n {onSubmit && (\n <Button\n type=\"submit\"\n text=\"Create index\"\n icon={\n loading ? (\n <Box style={{marginTop: 5}}>\n <Spinner />\n </Box>\n ) : (\n AddIcon\n )\n }\n disabled={readOnly || loading}\n tone=\"primary\"\n />\n )}\n </Stack>\n </form>\n )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Button, type ButtonProps, Card} from '@sanity/ui'\nimport {type CSSProperties, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {\n DefaultPreview,\n getPreviewStateObservable,\n getPreviewValueWithFallback,\n SanityDefaultPreview,\n type SanityDocument,\n type SchemaType,\n useDocumentPreviewStore,\n useSchema,\n} from 'sanity'\nimport {useIntentLink} from 'sanity/router'\n\ninterface ResultPreviewProps {\n documentId: string\n schemaTypeName: string\n button?: boolean\n style?: CSSProperties\n}\n\nexport function DocumentPreview({\n documentId,\n style,\n schemaTypeName,\n ...buttonProps\n}: ResultPreviewProps & ButtonProps) {\n const schema = useSchema()\n const schemaType = schemaTypeName ? schema.get(schemaTypeName) : undefined\n\n if (!schemaTypeName) {\n return (\n <Card style={{minHeight: '36px'}}>\n <DefaultPreview\n withShadow={false}\n withBorder={false}\n title={'Loading...'}\n schemaType={schemaType}\n isPlaceholder\n />\n </Card>\n )\n }\n\n if (!schemaType) {\n return (\n <Card>\n <DefaultPreview\n withShadow={false}\n withBorder={false}\n media={<ErrorOutlineIcon />}\n title={\n <>\n Unknown type <code>{schemaTypeName ?? 'N/A'}</code> for {documentId}\n </>\n }\n />\n </Card>\n )\n }\n\n return (\n <DocumentPreviewInner\n documentId={documentId}\n schemaTypeName={schemaTypeName}\n schemaType={schemaType}\n style={style}\n {...buttonProps}\n />\n )\n}\n\nfunction DocumentPreviewInner({\n documentId,\n schemaType,\n style,\n button,\n}: ResultPreviewProps & {schemaType: SchemaType} & ButtonProps) {\n const documentPreviewStore = useDocumentPreviewStore()\n\n const previewStateObservable = useMemo(\n () => getPreviewStateObservable(documentPreviewStore, schemaType, documentId),\n [documentId, documentPreviewStore, schemaType],\n )\n\n const {\n snapshot,\n original,\n isLoading: previewIsLoading,\n } = useObservable(previewStateObservable, {\n snapshot: null,\n isLoading: true,\n original: null,\n })\n\n const sanityDocument = useMemo(() => {\n return {\n _id: documentId,\n _type: schemaType?.name,\n } as SanityDocument\n }, [documentId, schemaType?.name])\n\n const {onClick: onIntentClick, href} = useIntentLink({\n intent: 'edit',\n params: {\n id: documentId,\n type: schemaType?.name,\n },\n })\n\n const preview = (\n <SanityDefaultPreview\n {...getPreviewValueWithFallback({\n snapshot,\n original,\n fallback: sanityDocument,\n })}\n isPlaceholder={previewIsLoading ?? true}\n layout=\"default\"\n icon={schemaType?.icon}\n />\n )\n if (button) {\n return (\n <Button\n as={'a'}\n href={href}\n onClick={onIntentClick}\n mode=\"ghost\"\n style={{width: '100%', ...style}}\n >\n {preview}\n </Button>\n )\n }\n return <Box style={{width: '100%'}}>{preview}</Box>\n}\n","import {Autocomplete, type AutocompleteOpenButtonProps, Box, Button, Flex, Text} from '@sanity/ui'\nimport {\n type FocusEventHandler,\n type Ref,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {typed} from 'sanity'\n\nimport {queryIndex, type QueryResult} from '../api/embeddingsApi'\nimport {useApiClient} from '../api/embeddingsApiHooks'\nimport {DocumentPreview} from '../preview/DocumentPreview'\nimport {type EmbeddingsIndexConfig} from '../schemas/typeDefExtensions'\n\nexport interface SemanticSearchAutocompleteProps {\n indexConfig: EmbeddingsIndexConfig\n getEmptySearchValue: () => string\n typeFilter?: string[]\n filterResult?: (hit: QueryResult) => boolean\n onSelect?: (value: QueryResult) => void\n onFocus?: FocusEventHandler<HTMLInputElement>\n onBlur?: FocusEventHandler<HTMLInputElement>\n readOnly?: boolean\n}\n\ninterface Option {\n result: QueryResult\n value: string\n}\n\nconst NO_RESULTS_VALUE = '' as const\n\ninterface NoResultOption {\n value: string\n}\n\nconst NO_OPTIONS: NoResultOption[] = []\nconst NO_FILTER = () => true\n\nexport function SemanticSearchAutocomplete(\n props: SemanticSearchAutocompleteProps & {ref?: Ref<HTMLInputElement>},\n) {\n const {\n indexConfig,\n filterResult,\n getEmptySearchValue,\n readOnly,\n onFocus,\n onBlur,\n onSelect,\n typeFilter,\n ref,\n } = props\n const id = useId()\n const [query, setQuery] = useState('')\n const queryRef = useRef(query)\n const debouncedQuery = useDebouncedValue(query, 300)\n const prevDebouncedQuery = useRef(debouncedQuery)\n\n const [searching, setSearching] = useState(false)\n const [options, setOptions] = useState<Option[] | NoResultOption[]>(NO_OPTIONS)\n\n const client = useApiClient()\n\n const runIndexQuery = useCallback(\n (queryString: string) => {\n setSearching(true)\n const indexName = indexConfig?.indexName\n const maxResults = indexConfig?.maxResults\n\n if (!indexName) {\n throw new Error(`Reference option embeddingsIndex.indexName is required, but was missing`)\n }\n\n queryIndex(\n {\n query: queryString.trim().length ? queryString : (getEmptySearchValue() ?? ''),\n indexName,\n maxResults,\n filter: {\n type: typeFilter,\n },\n },\n client,\n )\n .then((result: QueryResult[]) => {\n if (queryRef.current === queryString) {\n setSearching(false)\n setOptions([])\n const resultOptions = result\n .filter((hit) => (filterResult ? filterResult(hit) : true))\n .map((r) => typed<Option>({result: r, value: r.value.documentId}))\n if (resultOptions.length) {\n setOptions(resultOptions)\n } else {\n setOptions([{value: NO_RESULTS_VALUE}])\n }\n }\n })\n .catch((e) => {\n console.error(e)\n if (queryRef.current === queryString) {\n setSearching(false)\n setOptions([{value: NO_RESULTS_VALUE}])\n }\n })\n },\n [client, indexConfig, getEmptySearchValue, filterResult, typeFilter],\n )\n\n useEffect(() => {\n if (prevDebouncedQuery.current !== debouncedQuery) {\n runIndexQuery(debouncedQuery)\n }\n prevDebouncedQuery.current = debouncedQuery\n }, [debouncedQuery, runIndexQuery])\n\n const openButtonConfig: AutocompleteOpenButtonProps = useMemo(\n () => ({onClick: () => runIndexQuery(queryRef.current)}),\n [runIndexQuery, queryRef],\n )\n\n const handleQueryChange = useCallback(\n (newValue: string | null) => {\n const newQuery = newValue ?? ''\n queryRef.current = newQuery\n setQuery(newQuery)\n },\n [setQuery],\n )\n\n const handleChange = useCallback(\n (value: string) => {\n if (value === NO_RESULTS_VALUE) {\n setOptions(NO_OPTIONS)\n return\n }\n const option = (options as Option[])\n .filter((r): r is Option => 'result' in r)\n .find((r) => r.result.value.documentId === value)\n if (option && onSelect) {\n onSelect(option.result)\n }\n },\n [onSelect, options],\n )\n\n return (\n <Autocomplete\n id={id}\n ref={ref}\n data-testid=\"semantic-autocomplete\"\n placeholder=\"Type to search...\"\n openButton={openButtonConfig}\n onFocus={onFocus}\n onChange={handleChange}\n loading={searching}\n onBlur={onBlur}\n readOnly={readOnly}\n filterOption={NO_FILTER}\n onQueryChange={handleQueryChange}\n options={options}\n renderOption={AutocompleteOption}\n />\n )\n}\n\nfunction AutocompleteOption(props: Option | NoResultOption) {\n if ('result' in props) {\n const value = props.result.value\n return (\n <Button mode=\"bleed\" padding={1} style={{width: '100%'}}>\n <Flex gap={2} align=\"center\">\n <Box flex={1}>\n <DocumentPreview documentId={value.documentId} schemaTypeName={value.type} />\n </Box>\n <Box padding={2}>\n <Text size={1} muted title={'Relevance'}>\n {Math.floor(props.result.score * 100)}%\n </Text>\n </Box>\n </Flex>\n </Button>\n )\n }\n\n return (\n <Button mode=\"bleed\" padding={1} style={{width: '100%'}} disabled>\n <Flex gap={2} align=\"center\">\n No results.\n </Flex>\n </Button>\n )\n}\n\nfunction useDebouncedValue<T>(value: T, ms: number) {\n const [debouncedValue, setDebouncedValue] = useState(value)\n\n useEffect(() => {\n const timeoutId = setTimeout(() => {\n setDebouncedValue(value)\n }, ms)\n return () => clearTimeout(timeoutId)\n }, [value, ms])\n\n return debouncedValue\n}\n","import {useCallback, useMemo} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {type QueryResult} from '../api/embeddingsApi'\nimport {SemanticSearchAutocomplete} from '../referenceInput/SemanticSearchAutocomplete'\nimport {type EmbeddingsIndexConfig} from '../schemas/typeDefExtensions'\n\nexport function QueryIndex(props: {indexName: string}) {\n const {indexName} = props\n const getEmpty = useCallback(() => 'anything', [])\n const indexConfig: EmbeddingsIndexConfig = useMemo(\n () => ({indexName, maxResults: 8}),\n [indexName],\n )\n\n const {resolveIntentLink, navigateUrl} = useRouter()\n const onSelect = useCallback(\n (hit: QueryResult) => {\n navigateUrl({\n path: resolveIntentLink('edit', {id: hit.value.documentId, type: hit.value.type}),\n })\n },\n [resolveIntentLink, navigateUrl],\n )\n return (\n <SemanticSearchAutocomplete\n getEmptySearchValue={getEmpty}\n indexConfig={indexConfig}\n onSelect={onSelect}\n />\n )\n}\n","import {EllipsisVerticalIcon} from '@sanity/icons/EllipsisVertical'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {\n Box,\n Button,\n Flex,\n Heading,\n Label,\n Menu,\n MenuButton,\n MenuItem,\n Stack,\n Text,\n} from '@sanity/ui'\nimport {useCallback} from 'react'\n\nimport {type IndexState} from '../api/embeddingsApi'\nimport {IndexEditor} from './IndexEditor'\nimport {QueryIndex} from './QueryIndex'\n\nexport interface IndexInfoProps {\n selectedIndex: IndexState\n onDeleteIndex: (index: IndexState) => void\n}\n\nexport function IndexInfo({selectedIndex, onDeleteIndex}: IndexInfoProps) {\n const handleDelete = useCallback(\n () => onDeleteIndex(selectedIndex),\n [selectedIndex, onDeleteIndex],\n )\n return (\n <Stack space={4} flex={1}>\n <Flex align=\"center\" flex={1} gap={2}>\n <Box flex={1}>\n <Heading>Index: {selectedIndex?.indexName ?? 'Untitled'}</Heading>\n </Box>\n <Box>\n <MenuButton\n button={\n <Button\n title=\"Open index actions\"\n icon={EllipsisVerticalIcon}\n padding={2}\n mode=\"ghost\"\n />\n }\n id={`button-${selectedIndex.indexName}`}\n menu={\n <Menu>\n <MenuItem\n text=\"Delete index\"\n icon={TrashIcon}\n tone=\"critical\"\n onClick={handleDelete}\n />\n </Menu>\n }\n popover={{placement: 'right'}}\n />\n </Box>\n </Flex>\n\n <Flex gap={6}>\n <Stack space={4} flex={1} style={{maxWidth: 600}}>\n <Box>\n <IndexEditor index={selectedIndex} readOnly />\n </Box>\n <IndexStatus selectedIndex={selectedIndex} />\n </Stack>\n\n <Stack space={3} flex={1}>\n <Label muted>Query index</Label>\n <QueryIndex indexName={selectedIndex.indexName} key={selectedIndex.indexName} />\n </Stack>\n </Flex>\n </Stack>\n )\n}\n\nfunction IndexStatus({selectedIndex}: {selectedIndex: IndexState}) {\n return (\n <Stack space={4} flex={1}>\n <Flex gap={2} align=\"center\">\n <Box flex={1}>\n <Label size={1} muted>\n Status\n </Label>\n </Box>\n <Stack space={2}>\n <Text>{selectedIndex.status}</Text>\n </Stack>\n </Flex>\n <Flex gap={5} align=\"center\">\n <Box flex={1}>\n <Label size={1} muted>\n Indexing progress\n </Label>\n </Box>\n <Stack space={2}>\n <Text>\n {selectedIndex.startDocumentCount - selectedIndex.remainingDocumentCount} /{' '}\n {selectedIndex.startDocumentCount}\n </Text>\n </Stack>\n </Flex>\n <Flex gap={5} align=\"center\">\n <Box flex={1}>\n <Label size={1} muted>\n Failed documents\n </Label>\n </Box>\n <Stack space={2}>\n <Text>{selectedIndex.failedDocumentCount}</Text>\n </Stack>\n </Flex>\n </Stack>\n )\n}\n","import {Box, Button, Card, Flex, Label, Stack, Text} from '@sanity/ui'\nimport {useCallback} from 'react'\n\nimport {type IndexState} from '../api/embeddingsApi'\n\nexport interface IndexListProps {\n loading: boolean\n selectedIndex?: IndexState\n indexes: IndexState[]\n onIndexSelected: (index: IndexState) => void\n}\n\nexport function IndexList(props: IndexListProps) {\n const {loading, selectedIndex, indexes, onIndexSelected} = props\n return (\n <Card tone=\"default\" style={{opacity: loading ? 0.5 : 1}}>\n <Stack space={2}>\n <Card borderBottom flex={1} paddingBottom={2} padding={3}>\n <Flex>\n <Box flex={1}>\n <Label muted>Index name</Label>\n </Box>\n <Box flex={1}>\n <Label muted>Dataset</Label>\n </Box>\n <Box flex={1}>\n <Label muted>Status</Label>\n </Box>\n <Box flex={1}>\n <Label muted>Progress</Label>\n </Box>\n </Flex>\n </Card>\n {indexes.length ? (\n <Stack space={2} style={{maxHeight: 200, overflow: 'auto'}}>\n {indexes.map((index) => (\n <IndexRow\n selectedIndex={selectedIndex}\n index={index}\n onIndexSelected={onIndexSelected}\n key={index.indexName}\n />\n ))}\n </Stack>\n ) : (\n <Text muted>No indexes found.</Text>\n )}\n </Stack>\n </Card>\n )\n}\n\nfunction IndexRow(props: {\n selectedIndex?: IndexState\n index: IndexState\n onIndexSelected: (index: IndexState) => void\n}) {\n const {selectedIndex, index, onIndexSelected} = props\n const onSelect = useCallback(() => onIndexSelected(index), [onIndexSelected, index])\n return (\n <Button\n tone={selectedIndex?.indexName === index.indexName ? 'primary' : 'default'}\n mode={selectedIndex?.indexName === index.indexName ? 'default' : 'ghost'}\n onClick={onSelect}\n key={index.indexName}\n padding={3}\n >\n <Flex>\n <Box flex={1}>\n <strong>{index.indexName}</strong>\n </Box>\n <Box flex={1}>{index.dataset}</Box>\n <Box flex={1}>{index.status}</Box>\n <Box flex={1}>\n {index.startDocumentCount\n ? Math.floor(\n ((index.startDocumentCount - index.remainingDocumentCount) /\n index.startDocumentCount) *\n 100,\n )\n : '?'}\n %\n </Box>\n </Flex>\n </Button>\n )\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {UndoIcon} from '@sanity/icons/Undo'\nimport {Box, Button, Card, Flex, Heading, Spinner, Stack} from '@sanity/ui'\nimport {useCallback, useEffect, useState} from 'react'\n\nimport {deleteIndex, getIndexes, type IndexState, type NamedIndex} from '../api/embeddingsApi'\nimport {useApiClient} from '../api/embeddingsApiHooks'\nimport {FeatureDisabledNotice, FeatureError, useIsFeatureEnabled} from '../api/isEnabled'\nimport {EditIndexDialog} from './IndexEditor'\nimport {IndexInfo} from './IndexInfo'\nimport {IndexList} from './IndexList'\n\nexport function EmbeddingsIndexTool() {\n const featureState = useIsFeatureEnabled()\n return (\n <Card flex={1}>\n <Flex justify=\"center\" flex={1}>\n {featureState === 'error' ? (\n <Box padding={4}>\n <FeatureError />\n </Box>\n ) : null}\n\n {featureState === 'disabled' ? (\n <Box padding={4}>\n <FeatureDisabledNotice urlSuffix=\"?ref=embeddings-tab\" />\n </Box>\n ) : null}\n\n {featureState === 'loading' ? (\n <Box padding={6}>\n <Spinner size={4} />\n </Box>\n ) : null}\n\n {featureState === 'enabled' ? (\n <Card flex={1} style={{maxWidth: 1200}} padding={5}>\n <Indexes />\n </Card>\n ) : null}\n </Flex>\n </Card>\n )\n}\n\nconst NO_INDEXES: IndexState[] = []\n\nfunction Indexes() {\n const client = useApiClient()\n const [indexes, setIndexes] = useState<IndexState[]>(NO_INDEXES)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState(false)\n const [createIndexOpen, setCreateIndexOpen] = useState(false)\n const [selectedIndex, setSelectedIndex] = useState<IndexState | undefined>(undefined)\n\n const onCreateIndexClose = useCallback(() => setCreateIndexOpen(false), [])\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler\n setSelectedIndex(indexes.find((i) => i.indexName === selectedIndex?.indexName))\n }, [indexes, selectedIndex])\n\n const updateIndexes = useCallback(() => {\n setLoading(true)\n setError(false)\n getIndexes(client)\n .then((response: IndexState[]) => {\n setLoading(false)\n setIndexes(response)\n })\n .catch((e) => {\n console.error(e)\n setError(true)\n })\n .finally(() => {\n setLoading(false)\n })\n }, [client])\n\n const deleteNamedIndex = useCallback(\n (index: NamedIndex) => {\n if (\n !confirm(`Are you sure you want to delete ${index.indexName} for dataset ${index.dataset}?`)\n ) {\n return\n }\n setLoading(true)\n setError(false)\n deleteIndex(index.indexName, client)\n .then(() => {\n setTimeout(() => updateIndexes())\n })\n .catch((e) => {\n console.error(e)\n setError(true)\n })\n .finally(() => {\n setLoading(false)\n })\n },\n [client, updateIndexes],\n )\n\n const onSelectIndex = useCallback(\n (index: IndexState) => {\n setSelectedIndex(index)\n updateIndexes()\n },\n [setSelectedIndex, updateIndexes],\n )\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler\n updateIndexes()\n }, [updateIndexes])\n\n const openCreate = useCallback(() => setCreateIndexOpen(true), [])\n const onSubmit = useCallback(\n (index: IndexState) => {\n setIndexes((current) => [...current, index])\n setSelectedIndex(index)\n updateIndexes()\n },\n [updateIndexes],\n )\n return (\n <Stack space={4}>\n <Flex gap={2} align=\"center\" style={{height: 30}}>\n <Box flex={1}>\n <Heading size={1}>Embeddings indexes</Heading>\n </Box>\n <Box style={{justifySelf: 'flex-end'}}>\n <Button\n icon={AddIcon}\n text={'New index'}\n tone=\"default\"\n mode=\"ghost\"\n onClick={openCreate}\n />\n </Box>\n <Button\n icon={loading ? <Spinner /> : UndoIcon}\n title={'Refresh index list'}\n tone=\"default\"\n mode=\"bleed\"\n onClick={updateIndexes}\n disabled={loading}\n />\n </Flex>\n {error ? (\n <Card tone=\"critical\" padding={2} border>\n An error occurred. See console for details.\n </Card>\n ) : null}\n <IndexList\n loading={loading}\n indexes={indexes}\n selectedIndex={selectedIndex}\n onIndexSelected={onSelectIndex}\n />\n {selectedIndex && (\n <IndexInfo selectedIndex={selectedIndex} onDeleteIndex={deleteNamedIndex} />\n )}\n <EditIndexDialog open={createIndexOpen} onClose={onCreateIndexClose} onSubmit={onSubmit} />\n </Stack>\n )\n}\n","import {EarthGlobeIcon} from '@sanity/icons/EarthGlobe'\nimport {definePlugin, type Tool} from 'sanity'\n\nimport {EmbeddingsIndexTool} from './EmbeddingsIndexTool'\n\nconst embeddingsIndexTool: Tool = {\n name: 'embeddings-index',\n title: 'Embeddings',\n icon: EarthGlobeIcon,\n component: EmbeddingsIndexTool,\n}\n\nexport const embeddingsIndexDashboard = definePlugin({\n name: '@sanity/embeddings-index-dashboard',\n tools: [embeddingsIndexTool],\n})\n","export function publicId(id: string): string {\n return id.replace('drafts.', '')\n}\n","import {EarthGlobeIcon} from '@sanity/icons/EarthGlobe'\nimport {LinkIcon} from '@sanity/icons/Link'\nimport {Box, Button, Flex, Spinner} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {\n type ObjectInputProps,\n type ReferenceBaseOptions,\n type ReferenceSchemaType,\n set,\n setIfMissing,\n unset,\n} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {type QueryResult} from '../api/embeddingsApi'\nimport {FeatureDisabledNotice, FeatureError, useIsFeatureEnabledContext} from '../api/isEnabled'\nimport {type EmbeddingsIndexConfig} from '../schemas/typeDefExtensions'\nimport {publicId} from '../utils/id'\nimport {SemanticSearchAutocomplete} from './SemanticSearchAutocomplete'\n\nfunction useEmeddingsConfig(\n embeddingsIndexConfig: ReferenceBaseOptions['embeddingsIndex'],\n defaultConfig: EmbeddingsIndexConfig | undefined,\n) {\n return useMemo(() => {\n if (embeddingsIndexConfig === true || !embeddingsIndexConfig) {\n if (!defaultConfig?.indexName) {\n throw new Error(\n 'Default embeddingsIndex config is missing. When options.embeddingsIndex: true, embeddingsIndexReferenceInput plugin config is required.',\n )\n }\n return defaultConfig\n }\n\n const finalConfig = {\n ...defaultConfig,\n ...embeddingsIndexConfig,\n }\n\n if (!finalConfig?.indexName) {\n throw new Error(\n 'indexName is missing. Either set it in options.embeddingsIndex or configure defaults using plugin config.',\n )\n }\n\n return finalConfig\n }, [defaultConfig, embeddingsIndexConfig])\n}\n\nexport function SemanticSearchReferenceInput(\n props: ObjectInputProps & {defaultConfig?: EmbeddingsIndexConfig},\n) {\n const embeddingsIndexConfig = (props.schemaType as ReferenceSchemaType)?.options?.embeddingsIndex\n\n const config = useEmeddingsConfig(embeddingsIndexConfig, props.defaultConfig)\n\n const defaultEnabled = config.searchMode === 'embeddings'\n\n const featureState = useIsFeatureEnabledContext()\n\n const [semantic, setSemantic] = useState<boolean>(defaultEnabled)\n const toggleSemantic = useCallback(() => setSemantic((current) => !current), [])\n\n return (\n <Flex gap={2} flex={1} style={{width: '100%'}}>\n {semantic && featureState == 'loading' ? (\n <Box padding={2}>\n <Spinner />\n </Box>\n ) : null}\n\n {semantic && featureState == 'disabled' ? (\n <FeatureDisabledNotice urlSuffix=\"?ref=embeddings-ref\" />\n ) : null}\n\n {semantic && featureState === 'error' ? (\n <Box padding={4}>\n <FeatureError />\n </Box>\n ) : null}\n\n <Box flex={1} style={{maxHeight: 36, overflow: 'hidden'}}>\n {semantic && featureState == 'enabled' ? (\n <SemanticSearchInput {...props} indexConfig={config} />\n ) : (\n props.renderDefault(props)\n )}\n </Box>\n <Button\n icon={semantic ? EarthGlobeIcon : LinkIcon}\n onClick={toggleSemantic}\n mode=\"bleed\"\n title={\n semantic ? 'Switch to standard reference search' : 'Switch to semantic reference search'\n }\n />\n </Flex>\n )\n}\n\nfunction SemanticSearchInput(props: ObjectInputProps & {indexConfig: EmbeddingsIndexConfig}) {\n const {indexConfig, onPathFocus, onChange, readOnly, schemaType, value} = props\n\n const {value: currentDocument} = useDocumentPane()\n const docRef = useRef(currentDocument)\n const autocompleteRef = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n docRef.current = currentDocument\n }, [currentDocument])\n\n useEffect(() => {\n // if this component is rendered, and there is a value, replace was selected\n if (value?.['_ref']) {\n autocompleteRef.current?.focus()\n }\n // intentional empty deps\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const handleFocus = useCallback(() => onPathFocus(['_ref']), [onPathFocus])\n const handleBlur = useCallback(() => onPathFocus([]), [onPathFocus])\n\n const handleChange = useCallback(\n (result: QueryResult) => {\n if (!result) {\n onChange(unset())\n onPathFocus([])\n return\n }\n const patches = [\n setIfMissing({}),\n set(schemaType.name, ['_type']),\n set(publicId(result.value.documentId), ['_ref']),\n unset(['_weak']),\n unset(['_strengthenOnPublish']),\n ]\n\n onChange(patches)\n // Move focus away from _ref and one level up\n onPathFocus([])\n },\n [onChange, onPathFocus, schemaType.name],\n )\n\n const filterResult = useCallback(\n (r: QueryResult) => {\n const currentId = docRef.current?._id\n return !currentId || r.value.documentId !== publicId(currentId)\n },\n [docRef],\n )\n\n const getEmptySearchValue = useCallback(() => JSON.stringify(docRef.current), [docRef])\n const typeFilter = useMemo(\n () => (schemaType as ReferenceSchemaType).to.map((refType) => refType.name),\n [schemaType],\n )\n\n return (\n <SemanticSearchAutocomplete\n ref={autocompleteRef}\n typeFilter={typeFilter}\n indexConfig={indexConfig}\n onSelect={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n getEmptySearchValue={getEmptySearchValue}\n filterResult={filterResult}\n readOnly={readOnly}\n />\n )\n}\n","import {\n definePlugin,\n isObjectInputProps,\n type ObjectInputProps,\n type ReferenceSchemaType,\n} from 'sanity'\n\nimport {FeatureEnabledProvider} from '../api/isEnabled'\nimport {type EmbeddingsIndexConfig} from '../schemas/typeDefExtensions'\nimport {isType} from '../utils/types'\nimport {SemanticSearchReferenceInput} from './SemanticSearchReferenceInput'\n\nexport const embeddingsIndexReferenceInput = definePlugin<EmbeddingsIndexConfig | void>(\n (defaultConfig) => {\n const config = typeof defaultConfig === 'object' ? defaultConfig : undefined\n\n return {\n name: '@sanity/embeddings-index-reference-input',\n studio: {\n components: {\n layout: (props) => {\n return <FeatureEnabledProvider>{props.renderDefault(props)}</FeatureEnabledProvider>\n },\n },\n },\n form: {\n components: {\n input: (props) => {\n const embeddingsIndexConfig = (props.schemaType as ReferenceSchemaType)?.options\n ?.embeddingsIndex\n if (\n isObjectInputProps(props) &&\n isType(props.schemaType, 'reference') &&\n (embeddingsIndexConfig === true || embeddingsIndexConfig?.indexName)\n ) {\n return (\n <SemanticSearchReferenceInput\n {...(props as ObjectInputProps)}\n defaultConfig={config}\n />\n )\n }\n return props.renderDefault(props)\n },\n },\n },\n }\n },\n)\n"],"mappings":"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"}
\ No newline at end of file Index: package/dist/index.d.ts
===================================================================
--- package/dist/index.d.ts
+++ package/dist/index.d.ts
@@ -24,9 +24,9 @@
* If no default configuration is provided, an error will be thrown.
*/
embeddingsIndex?: true | EmbeddingsIndexConfig;
}
-} //# sourceMappingURL=typeDefExtensions.d.ts.map
+}
declare const embeddingsIndexDashboard: import("sanity").Plugin<void>;
declare const embeddingsIndexReferenceInput: import("sanity").Plugin<void | EmbeddingsIndexConfig>;
interface NamedIndex {
indexName: string;