@sanity/embeddings-index-ui 4.0.2 → 4.0.3

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/dist/index.js CHANGED
@@ -1,11 +1,17 @@
1
- import { AddIcon, ErrorOutlineIcon, EllipsisVerticalIcon, TrashIcon, UndoIcon, EarthGlobeIcon, LinkIcon } from "@sanity/icons";
1
+ import { EarthGlobeIcon } from "@sanity/icons/EarthGlobe";
2
2
  import { useClient, useProjectId, useSchema, DefaultPreview, useDocumentPreviewStore, getPreviewStateObservable, getPreviewValueWithFallback, SanityDefaultPreview, typed, definePlugin, unset, setIfMissing, set, isObjectInputProps } from "sanity";
3
3
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
4
4
  import { c } from "react/compiler-runtime";
5
+ import { AddIcon } from "@sanity/icons/Add";
6
+ import { UndoIcon } from "@sanity/icons/Undo";
5
7
  import { Card, Text, Stack, Label, Box, TextInput, TextArea, Dialog, Button, Spinner, Autocomplete, Flex, Heading, Menu, MenuItem, MenuButton } from "@sanity/ui";
6
8
  import { createContext, useState, useEffect, useContext, useId, useRef, useCallback, useMemo } from "react";
9
+ import { EllipsisVerticalIcon } from "@sanity/icons/EllipsisVertical";
10
+ import { TrashIcon } from "@sanity/icons/Trash";
7
11
  import { useIntentLink, useRouter } from "sanity/router";
12
+ import { ErrorOutlineIcon } from "@sanity/icons/ErrorOutline";
8
13
  import { useObservable } from "react-rx";
14
+ import { LinkIcon } from "@sanity/icons/Link";
9
15
  import { useDocumentPane } from "sanity/structure";
10
16
  function queryIndex(queryConfig, client) {
11
17
  const {
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 {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'\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 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, 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 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","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","r_0","typed","Math","floor","score","ms","debouncedValue","setDebouncedValue","timeoutId","clearTimeout","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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"}
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 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"],"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","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","r_0","typed","Math","floor","score","ms","debouncedValue","setDebouncedValue","timeoutId","clearTimeout","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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/embeddings-index-ui",
3
- "version": "4.0.2",
3
+ "version": "4.0.3",
4
4
  "description": "Various Sanity Studio plugins for integrating with the embeddings index API",
5
5
  "keywords": [
6
6
  "sanity",
@@ -27,7 +27,7 @@
27
27
  "./package.json": "./package.json"
28
28
  },
29
29
  "dependencies": {
30
- "@sanity/icons": "^3.8.0",
30
+ "@sanity/icons": "^4.1.0",
31
31
  "@sanity/ui": "^3.3.0",
32
32
  "react-rx": "^4.2.2"
33
33
  },