@sanity/embeddings-index-ui 4.0.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -15
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
> The new Embeddings feature offers a more integrated experience with improved performance and full support going forward. **No new features or fixes will be made to this package.**
|
|
8
8
|
>
|
|
9
9
|
> If you have questions or need migration support, please [open an issue](https://github.com/sanity-io/plugins/issues) or reach out via [Sanity Community Discord](https://discord.com/servers/sanity-1304483263171264613).
|
|
10
|
+
|
|
10
11
|
---
|
|
11
12
|
|
|
12
13
|
Sanity Studio plugins that interact with the `/embeddings-index` HTTP API.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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":";
|
|
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"}
|
package/dist/index.js
CHANGED
|
@@ -108,7 +108,7 @@ const defaultProjection = "{...}";
|
|
|
108
108
|
function useDefaultIndex(schema, dataset) {
|
|
109
109
|
const $ = c(5);
|
|
110
110
|
let t0;
|
|
111
|
-
$[0] !== schema ? (t0 = schema.getTypeNames().map((n) => schema.get(n)).filter(_temp$
|
|
111
|
+
$[0] !== schema ? (t0 = schema.getTypeNames().map((n) => schema.get(n)).filter(_temp$4).filter(_temp2$1).map(_temp3).join(`,
|
|
112
112
|
`), $[0] = schema, $[1] = t0) : t0 = $[1];
|
|
113
113
|
const defaultFilter = `_type in [${t0}]`;
|
|
114
114
|
let t1;
|
|
@@ -124,7 +124,7 @@ function _temp3(documentType_0) {
|
|
|
124
124
|
function _temp2$1(documentType) {
|
|
125
125
|
return !documentType.name.startsWith("sanity.") && !documentType.name.startsWith("assist.") && documentType.name !== "document";
|
|
126
126
|
}
|
|
127
|
-
function _temp$
|
|
127
|
+
function _temp$4(schemaType) {
|
|
128
128
|
return !!(schemaType && isType(schemaType, "document"));
|
|
129
129
|
}
|
|
130
130
|
function IndexFormInput(props) {
|
|
@@ -244,7 +244,7 @@ function IndexEditor(props) {
|
|
|
244
244
|
let t5;
|
|
245
245
|
$[14] !== errors ? (t5 = errors?.length ? /* @__PURE__ */ jsx(Card, { tone: "critical", border: !0, padding: 2, children: /* @__PURE__ */ jsx(Text, { children: /* @__PURE__ */ jsx("ul", { style: {
|
|
246
246
|
marginLeft: -10
|
|
247
|
-
}, children: errors?.map(_temp$
|
|
247
|
+
}, children: errors?.map(_temp$3) }) }) }) : null, $[14] = errors, $[15] = t5) : t5 = $[15];
|
|
248
248
|
let t6;
|
|
249
249
|
$[16] !== index || $[17] !== readOnly ? (t6 = /* @__PURE__ */ jsx(IndexFormInput, { label: "Index name", placeholder: "Name of index without spaces...", index, prop: "indexName", onChange: setIndex, readOnly }), $[16] = index, $[17] = readOnly, $[18] = t6) : t6 = $[18];
|
|
250
250
|
let t7;
|
|
@@ -269,11 +269,11 @@ function IndexEditor(props) {
|
|
|
269
269
|
let t12;
|
|
270
270
|
return $[40] !== handleSubmit || $[41] !== t11 ? (t12 = /* @__PURE__ */ jsx("form", { onSubmit: handleSubmit, children: t11 }), $[40] = handleSubmit, $[41] = t11, $[42] = t12) : t12 = $[42], t12;
|
|
271
271
|
}
|
|
272
|
-
function _temp$
|
|
272
|
+
function _temp$3(error, i) {
|
|
273
273
|
return /* @__PURE__ */ jsx("li", { children: error }, `${error}-${i}`);
|
|
274
274
|
}
|
|
275
275
|
function DocumentPreview(t0) {
|
|
276
|
-
const $ = c(
|
|
276
|
+
const $ = c(23);
|
|
277
277
|
let buttonProps, documentId, schemaTypeName, style;
|
|
278
278
|
$[0] !== t0 ? ({
|
|
279
279
|
documentId,
|
|
@@ -294,22 +294,21 @@ function DocumentPreview(t0) {
|
|
|
294
294
|
return $[9] !== schemaType ? (t3 = /* @__PURE__ */ jsx(Card, { style: t22, children: /* @__PURE__ */ jsx(DefaultPreview, { withShadow: !1, withBorder: !1, title: "Loading...", schemaType, isPlaceholder: !0 }) }), $[9] = schemaType, $[10] = t3) : t3 = $[10], t3;
|
|
295
295
|
}
|
|
296
296
|
if (!schemaType) {
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
297
|
+
let t22;
|
|
298
|
+
$[11] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t22 = /* @__PURE__ */ jsx(ErrorOutlineIcon, {}), $[11] = t22) : t22 = $[11];
|
|
299
|
+
const t3 = schemaTypeName ?? "N/A";
|
|
300
300
|
let t4;
|
|
301
|
-
|
|
301
|
+
$[12] !== t3 ? (t4 = /* @__PURE__ */ jsx("code", { children: t3 }), $[12] = t3, $[13] = t4) : t4 = $[13];
|
|
302
|
+
let t5;
|
|
303
|
+
return $[14] !== documentId || $[15] !== t4 ? (t5 = /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsx(DefaultPreview, { withShadow: !1, withBorder: !1, media: t22, title: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
302
304
|
"Unknown type ",
|
|
303
|
-
|
|
305
|
+
t4,
|
|
304
306
|
" for ",
|
|
305
307
|
documentId
|
|
306
|
-
] }) }) }), $[
|
|
308
|
+
] }) }) }), $[14] = documentId, $[15] = t4, $[16] = t5) : t5 = $[16], t5;
|
|
307
309
|
}
|
|
308
310
|
let t2;
|
|
309
|
-
return $[
|
|
310
|
-
}
|
|
311
|
-
function _temp$3() {
|
|
312
|
-
return /* @__PURE__ */ jsx(ErrorOutlineIcon, {});
|
|
311
|
+
return $[17] !== buttonProps || $[18] !== documentId || $[19] !== schemaType || $[20] !== schemaTypeName || $[21] !== style ? (t2 = /* @__PURE__ */ jsx(DocumentPreviewInner, { documentId, schemaTypeName, schemaType, style, ...buttonProps }), $[17] = buttonProps, $[18] = documentId, $[19] = schemaType, $[20] = schemaTypeName, $[21] = style, $[22] = t2) : t2 = $[22], t2;
|
|
313
312
|
}
|
|
314
313
|
function DocumentPreviewInner(t0) {
|
|
315
314
|
const $ = c(31), {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","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 {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 {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, 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 {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 {ObjectSchemaType, Schema} from 'sanity'\n\nimport {isType} from '../utils/types'\n\nconst defaultProjection = '{...}'\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\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 {Dispatch, FormEvent, SetStateAction, useCallback, useId} from 'react'\n\nimport {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 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'\nimport {Box, Button, Card, Dialog, Spinner, Stack, Text} from '@sanity/ui'\nimport {FormEvent, useCallback, useEffect, useId, useRef, useState} from 'react'\nimport {useSchema} from 'sanity'\n\nimport {IndexState, 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 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 {/* eslint-disable-next-line react/no-array-index-key */}\n {errors?.map((error, i) => (\n <li key={`${error}-${i}`}>{error}</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'\nimport {Box, Button, ButtonProps, Card} from '@sanity/ui'\nimport {CSSProperties, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {\n DefaultPreview,\n getPreviewStateObservable,\n getPreviewValueWithFallback,\n SanityDefaultPreview,\n SanityDocument,\n 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","/* eslint-disable max-nested-callbacks */\nimport {Autocomplete, AutocompleteOpenButtonProps, Box, Button, Flex, Text} from '@sanity/ui'\nimport {\n FocusEventHandler,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {typed} from 'sanity'\n\nimport {queryIndex, QueryResult} from '../api/embeddingsApi'\nimport {useApiClient} from '../api/embeddingsApiHooks'\nimport {DocumentPreview} from '../preview/DocumentPreview'\nimport {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 const SemanticSearchAutocomplete = forwardRef(function SemanticSearchAutocomplete(\n props: SemanticSearchAutocompleteProps,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref: any,\n) {\n const {\n indexConfig,\n filterResult,\n getEmptySearchValue,\n readOnly,\n onFocus,\n onBlur,\n onSelect,\n typeFilter,\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 {QueryResult} from '../api/embeddingsApi'\nimport {SemanticSearchAutocomplete} from '../referenceInput/SemanticSearchAutocomplete'\nimport {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, TrashIcon} from '@sanity/icons'\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 {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 {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, UndoIcon} from '@sanity/icons'\nimport {Box, Button, Card, Flex, Heading, Spinner, Stack} from '@sanity/ui'\nimport {useCallback, useEffect, useState} from 'react'\n\nimport {deleteIndex, getIndexes, IndexState, 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 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 // eslint-disable-next-line no-unused-expressions\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 // eslint-disable-next-line no-alert\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 // eslint-disable-next-line no-unused-expressions\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 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 size={1}\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'\nimport {definePlugin, 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, LinkIcon} from '@sanity/icons'\nimport {Box, Button, Flex, Spinner} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {\n ObjectInputProps,\n ReferenceBaseOptions,\n ReferenceSchemaType,\n set,\n setIfMissing,\n unset,\n} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {QueryResult} from '../api/embeddingsApi'\nimport {FeatureDisabledNotice, FeatureError, useIsFeatureEnabledContext} from '../api/isEnabled'\nimport {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 {definePlugin, isObjectInputProps, ObjectInputProps, ReferenceSchemaType} from 'sanity'\n\nimport {FeatureEnabledProvider} from '../api/isEnabled'\nimport {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"],"names":["queryIndex","queryConfig","client","query","indexName","maxResults","filter","projectId","config","dataset","queryString","trim","request","method","url","body","getIndexes","deleteIndex","useApiClient","$","_c","t0","for","apiVersion","useClient","t1","bb0","customHost","localStorage","getItem","withConfig","apiHost","useProjectHostname","withCredentials","FeatureEnabledContext","createContext","useIsFeatureEnabled","status","setStatus","useState","then","response","enabled","catch","err","console","error","useEffect","FeatureEnabledProvider","props","children","useIsFeatureEnabledContext","useContext","FeatureDisabledNotice","useProjectId","urlSuffix","FeatureError","Symbol","isType","schemaType","typeName","name","type","defaultProjection","useDefaultIndex","schema","getTypeNames","map","n","get","_temp","_temp2","_temp3","join","defaultFilter","projection","documentType_0","documentType","startsWith","Boolean","IndexFormInput","label","description","index","prop","onChange","readOnly","placeholder","propValue","current","handleChange","t2","FormInput","value","undefined","id","useId","e","currentTarget","t3","t4","resize","t5","EditIndexDialog","open","onClose","onSubmit","ref","useRef","setTimeout","querySelector","focus","handleSubmit","IndexEditor","selectedIndex","useSchema","defaultIndex","errors","setErrors","loading","setLoading","setIndex","preventDefault","validationErrors","match","push","length","message","finally","marginLeft","t6","t7","t8","t9","t10","marginTop","AddIcon","t11","t12","i","DocumentPreview","buttonProps","documentId","schemaTypeName","style","minHeight","DocumentPreviewInner","button","documentPreviewStore","useDocumentPreviewStore","getPreviewStateObservable","previewStateObservable","snapshot","isLoading","original","previewIsLoading","useObservable","_id","_type","sanityDocument","intent","params","onClick","onIntentClick","href","useIntentLink","getPreviewValueWithFallback","fallback","icon","preview","width","NO_RESULTS_VALUE","NO_OPTIONS","NO_FILTER","SemanticSearchAutocomplete","forwardRef","indexConfig","filterResult","getEmptySearchValue","onFocus","onBlur","onSelect","typeFilter","setQuery","queryRef","debouncedQuery","useDebouncedValue","prevDebouncedQuery","searching","setSearching","options","setOptions","Error","result","resultOptions","hit","runIndexQuery","openButtonConfig","newValue","newQuery","handleQueryChange","option","find","r_1","r","AutocompleteOption","Math","floor","score","ms","debouncedValue","setDebouncedValue","timeoutId","clearTimeout","typed","r_0","QueryIndex","getEmpty","resolveIntentLink","navigateUrl","useRouter","path","IndexInfo","onDeleteIndex","handleDelete","EllipsisVerticalIcon","TrashIcon","placement","maxWidth","t13","t14","t15","IndexStatus","startDocumentCount","remainingDocumentCount","failedDocumentCount","IndexList","indexes","onIndexSelected","opacity","maxHeight","overflow","IndexRow","EmbeddingsIndexTool","featureState","NO_INDEXES","Indexes","setIndexes","setError","createIndexOpen","setCreateIndexOpen","setSelectedIndex","onCreateIndexClose","updateIndexes","confirm","e_0","deleteNamedIndex","index_0","onSelectIndex","openCreate","index_1","height","justifySelf","UndoIcon","t16","t17","t18","t19","embeddingsIndexTool","title","EarthGlobeIcon","component","embeddingsIndexDashboard","definePlugin","tools","publicId","replace","useEmeddingsConfig","embeddingsIndexConfig","defaultConfig","finalConfig","SemanticSearchReferenceInput","embeddingsIndex","defaultEnabled","searchMode","semantic","setSemantic","toggleSemantic","renderDefault","LinkIcon","SemanticSearchInput","onPathFocus","currentDocument","useDocumentPane","docRef","autocompleteRef","_ref","handleFocus","useCallback","handleBlur","unset","patches","setIfMissing","set","currentId","JSON","stringify","useMemo","to","refType","embeddingsIndexReferenceInput","studio","components","layout","form","input","isObjectInputProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","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 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'\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'\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 forwardRef,\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 const SemanticSearchAutocomplete = forwardRef(function SemanticSearchAutocomplete(\n props: SemanticSearchAutocompleteProps,\n ref: any,\n) {\n const {\n indexConfig,\n filterResult,\n getEmptySearchValue,\n readOnly,\n onFocus,\n onBlur,\n onSelect,\n typeFilter,\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, TrashIcon} from '@sanity/icons'\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, UndoIcon} from '@sanity/icons'\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 size={1}\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'\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, LinkIcon} from '@sanity/icons'\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"],"names":["queryIndex","queryConfig","client","query","indexName","maxResults","filter","projectId","config","dataset","queryString","trim","request","method","url","body","getIndexes","deleteIndex","useApiClient","$","_c","t0","for","apiVersion","useClient","t1","bb0","customHost","localStorage","getItem","withConfig","apiHost","useProjectHostname","withCredentials","FeatureEnabledContext","createContext","useIsFeatureEnabled","status","setStatus","useState","then","response","enabled","catch","err","console","error","useEffect","FeatureEnabledProvider","props","children","useIsFeatureEnabledContext","useContext","FeatureDisabledNotice","useProjectId","urlSuffix","FeatureError","Symbol","isType","schemaType","typeName","name","type","defaultProjection","useDefaultIndex","schema","getTypeNames","map","n","get","_temp","_temp2","_temp3","join","defaultFilter","projection","documentType_0","documentType","startsWith","Boolean","IndexFormInput","label","description","index","prop","onChange","readOnly","placeholder","propValue","current","handleChange","t2","FormInput","value","undefined","id","useId","e","currentTarget","t3","t4","resize","t5","EditIndexDialog","open","onClose","onSubmit","ref","useRef","setTimeout","querySelector","focus","handleSubmit","IndexEditor","selectedIndex","useSchema","defaultIndex","errors","setErrors","loading","setLoading","setIndex","preventDefault","validationErrors","match","push","length","message","finally","marginLeft","t6","t7","t8","t9","t10","marginTop","AddIcon","t11","t12","i","DocumentPreview","buttonProps","documentId","schemaTypeName","style","minHeight","DocumentPreviewInner","button","documentPreviewStore","useDocumentPreviewStore","getPreviewStateObservable","previewStateObservable","snapshot","isLoading","original","previewIsLoading","useObservable","_id","_type","sanityDocument","intent","params","onClick","onIntentClick","href","useIntentLink","getPreviewValueWithFallback","fallback","icon","preview","width","NO_RESULTS_VALUE","NO_OPTIONS","NO_FILTER","SemanticSearchAutocomplete","forwardRef","indexConfig","filterResult","getEmptySearchValue","onFocus","onBlur","onSelect","typeFilter","setQuery","queryRef","debouncedQuery","useDebouncedValue","prevDebouncedQuery","searching","setSearching","options","setOptions","Error","result","resultOptions","hit","runIndexQuery","openButtonConfig","newValue","newQuery","handleQueryChange","option","find","r_1","r","AutocompleteOption","Math","floor","score","ms","debouncedValue","setDebouncedValue","timeoutId","clearTimeout","typed","r_0","QueryIndex","getEmpty","resolveIntentLink","navigateUrl","useRouter","path","IndexInfo","onDeleteIndex","handleDelete","EllipsisVerticalIcon","TrashIcon","placement","maxWidth","t13","t14","t15","IndexStatus","startDocumentCount","remainingDocumentCount","failedDocumentCount","IndexList","indexes","onIndexSelected","opacity","maxHeight","overflow","IndexRow","EmbeddingsIndexTool","featureState","NO_INDEXES","Indexes","setIndexes","setError","createIndexOpen","setCreateIndexOpen","setSelectedIndex","onCreateIndexClose","updateIndexes","confirm","e_0","deleteNamedIndex","index_0","onSelectIndex","openCreate","index_1","height","justifySelf","UndoIcon","t16","t17","t18","t19","embeddingsIndexTool","title","EarthGlobeIcon","component","embeddingsIndexDashboard","definePlugin","tools","publicId","replace","useEmeddingsConfig","embeddingsIndexConfig","defaultConfig","finalConfig","SemanticSearchReferenceInput","embeddingsIndex","defaultEnabled","searchMode","semantic","setSemantic","toggleSemantic","renderDefault","LinkIcon","SemanticSearchInput","onPathFocus","currentDocument","useDocumentPane","docRef","autocompleteRef","handleFocus","useCallback","handleBlur","unset","patches","setIfMissing","set","currentId","JSON","stringify","useMemo","to","refType","embeddingsIndexReferenceInput","studio","components","layout","form","input","isObjectInputProps"],"mappings":"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"}
|