@sanity/vision 6.7.0-next.5 → 6.7.0-next.50
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/lib/SanityVision-BKf_KyD3.js +2771 -0
- package/lib/SanityVision-BKf_KyD3.js.map +1 -0
- package/lib/bundle-css.d.ts +1 -2
- package/lib/bundle-css.js +4 -2
- package/lib/bundle.css +1 -2
- package/lib/i18n-DWd7qwtK.js +14 -0
- package/lib/i18n-DWd7qwtK.js.map +1 -0
- package/lib/index.d.ts +3 -16
- package/lib/index.js +24 -5
- package/lib/index.js.map +1 -1
- package/lib/resources-CGIw9x5R.js +140 -0
- package/lib/resources-CGIw9x5R.js.map +1 -0
- package/package.json +14 -19
- package/lib/_chunks-es/SanityVision.js +0 -2328
- package/lib/_chunks-es/SanityVision.js.map +0 -1
- package/lib/_chunks-es/index.js +0 -36
- package/lib/_chunks-es/index.js.map +0 -1
- package/lib/_chunks-es/resources.js +0 -136
- package/lib/_chunks-es/resources.js.map +0 -1
- package/lib/bundle.css.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SanityVision-BKf_KyD3.js","names":["API_VERSIONS","Date","toISOString","split","DEFAULT_API_VERSION","slice","Spinner","useEffect","useState","DelayedSpinnerProps","delay","DelayedSpinner","props","$","_c","show","setShow","t0","t1","timer","setTimeout","clearTimeout","t2","closeBrackets","defaultKeymap","history","historyKeymap","javascriptLanguage","bracketMatching","defaultHighlightStyle","indentOnInput","syntaxHighlighting","highlightSelectionMatches","Extension","drawSelection","highlightActiveLine","highlightActiveLineGutter","highlightSpecialChars","keymap","lineNumbers","groq","sharedExtensions","fallback","of","key","run","flat","filter","Boolean","groqExtensions","paramsExtensions","HighlightStyle","syntaxHighlighting","Extension","EditorView","tags","t","hues","rem","Theme","useMemo","useCodemirrorTheme","theme","$","_c","t0","createTheme","cmTheme","t1","createHighlight","cmHighlight","t2","color","fonts","sanity","card","enabled","cursor","blue","dark","hex","selection","gray","fg","backgroundColor","bg","caretColor","fontFamily","code","family","fontSize","sizes","lineHeight","borderLeftColor","borderBottom","border","borderTop","c","base","s","syntax","define","tag","keyword","propertyName","name","deleted","character","macroName","property","function","variableName","labelName","constant","standard","variable","definition","separator","typeName","className","number","changed","annotation","modifier","self","namespace","operator","operatorKeyword","url","escape","regexp","link","special","string","meta","comment","strong","fontWeight","emphasis","fontStyle","strikethrough","textDecoration","heading","atom","bool","boolean","processingInstruction","inserted","invalid","createVar","globalStyle","style","linePaddingLeftVar","contentBorderRightWidthVar","contentPaddingTopVar","editorRoot","width","boxSizing","height","overflow","position","display","fontSize","lineHeight","paddingLeft","borderRightWidth","paddingTop","Extension","rem","useTheme","CodeMirror","EditorSelection","ReactCodeMirrorProps","ReactCodeMirrorRef","assignInlineVars","forwardRef","ReactNode","useCallback","useImperativeHandle","useRef","useState","useCodemirrorTheme","contentBorderRightWidthVar","contentPaddingTopVar","editorRoot","linePaddingLeftVar","EditorRoot","t0","$","_c","children","sanity","t1","space","t2","t3","t4","t5","t6","t7","t8","VisionCodeMirrorHandle","resetEditorContent","newContent","VisionCodeMirror","Pick","initialValue","extensions","props","ref","sanityTheme","theme","codeMirrorRef","Symbol","for","editorView","current","view","currentDoc","state","doc","toString","dispatch","changes","from","to","length","insert","selection","cursor","onChange","displayName","ClientPerspective","PerspectiveContextValue","PerspectiveStack","SUPPORTED_PERSPECTIVES","const","SupportedPerspective","VIRTUAL_PERSPECTIVES","VirtualPerspective","isSupportedPerspective","p","includes","isVirtualPerspective","maybeVirtualPerspective","hasPinnedPerspective","selectedPerspectiveName","getActivePerspective","visionPerspective","perspectiveStack","scheduledDraftsStack","encodeQueryString","query","params","Record","options","searchParams","URLSearchParams","set","key","value","Object","entries","JSON","stringify","isPlainObject","obj","Record","Object","prototype","toString","call","isPlainObject","hasLocalStorage","supportsLocalStorage","keyPrefix","LocalStorageish","get","key","defaultVal","T","set","value","merge","props","clearLocalStorage","i","localStorage","length","startsWith","removeItem","getLocalStorage","namespace","storageKey","loadedState","Record","state","ensureState","setItem","JSON","stringify","loadState","stored","parse","getItem","mod","ParsedApiQueryString","query","params","Record","options","parseApiQueryString","qs","URLSearchParams","key","value","entries","slice","JSON","parse","get","prefixApiVersion","version","validateApiVersion","apiVersion","parseableApiVersion","replace","trim","toUpperCase","isValidApiVersion","length","test","isNaN","Date","parse","JSON5","TFunction","tryParseParams","val","t","Record","Error","parsed","parse","Array","isArray","err","message","replace","createVar","globalStyle","style","root","overflowY","overflowX","queryRecallPaneContainer","position","top","right","bottom","left","queryRecallPaneWrapper","minHeight","background","opacity","zIndex","boxSizing","backgroundClip","border","borderColor","height","margin","borderWidth","cursor","width","header","flexShrink","overflow","borderBottom","selectors","styledLabel","flex","splitpaneContainer","queryCopyLink","marginRight","inputBackgroundContainer","padding","userSelect","inputBackgroundContainerLeft","inputContainer","flexDirection","resultOuterContainer","resultInnerContainer","resultContainer","maxWidth","resultContainerInvalid","backgroundColor","content","result","resultFooter","borderTop","flexWrap","timingsCard","timingsTextMinHeightVar","timingsTextContainer","downloadsCard","saveResultSpanGapVar","saveResultLabel","transform","display","gap","alignItems","controlsContainer","Box","Card","Flex","Label","rem","Text","useTheme_v2","useThemeV2","assignInlineVars","ComponentProps","ComponentPropsWithoutRef","forwardRef","controlsContainer","downloadsCard","header","inputBackgroundContainer","inputBackgroundContainerLeft","inputContainer","queryCopyLink","queryRecallPaneContainer","queryRecallPaneWrapper","result","resultContainer","resultContainerInvalid","resultFooter","resultInnerContainer","resultOuterContainer","root","saveResultLabel","saveResultSpanGapVar","splitpaneContainer","styledLabel","timingsCard","timingsTextContainer","timingsTextMinHeightVar","Root","HTMLDivElement","props","ref","$","_c","t0","Header","StyledLabel","SplitpaneContainer","QueryRecallPaneContainer","QueryRecallPaneWrapper","QueryCopyLink","InputBackgroundContainer","InputBackgroundContainerLeft","InputContainer","ResultOuterContainer","ResultInnerContainer","ResultContainer","isInvalid","t1","t2","Result","ResultFooter","TimingsCard","TimingsTextContainer","space","font","textSize","text","sizes","lineHeight","ascenderHeight","descenderHeight","minHeight","t3","t4","DownloadsCard","SaveResultLabel","ControlsContainer","ErrorOutlineIcon","Box","Card","Flex","Text","Tooltip","debounce","RefObject","useCallback","useMemo","TFunction","useTranslation","paramsExtensions","VisionCodeMirror","VisionCodeMirrorHandle","visionLocaleNamespace","tryParseParams","Params","InputBackgroundContainerLeft","StyledLabel","defaultValue","ParamsEditorProps","value","onChange","changeEvt","paramsError","hasValidParams","editorRef","ParamsEditor","props","$","_c","t","t0","newValue","handleChangeRaw","t1","handleChange","t2","t3","t4","t5","t6","t7","t8","t9","parseParams","parsedParams","params","Error","validationError","message","undefined","isValid","parsed","raw","valid","error","ListenOptions","uuid","useCallback","useEffect","useMemo","useState","map","startWith","KeyValueStoreValue","useClient","useCurrentUser","useKeyValueStore","DEFAULT_API_VERSION","STORED_QUERIES_NAMESPACE","SHARED_QUERY_DOCUMENT_TYPE","SHARED_QUERIES_QUERY","SHARED_QUERY_LISTEN_OPTIONS","events","includeResult","visibility","QueryConfig","_key","url","savedAt","title","shared","authorId","isOwnedByCurrentUser","StoredQueries","queries","defaultValue","keyValueStoreKey","SharedQueryDocument","_id","_type","useSavedQueries","$","_c","keyValueStore","t0","Symbol","for","apiVersion","workspaceClient","currentUser","value","setValue","t1","sharedQueries","setSharedQueries","saving","setSaving","t2","deleting","setDeleting","saveQueryError","setSaveQueryError","deleteQueryError","setDeleteQueryError","error","setError","t3","getKey","personalQueries","t4","id","docs","currentUserId","doc","mapSharedQueries","t5","t6","sub","pipe","_temp","subscribe","next","err","Error","unsubscribe","t7","t8","cancelled","fetchSharedQueries","docs_0","fetch","sharedQueryType","nextDocs","catch","err_0","sub_0","observable","listen","err_1","err_2","t9","sort","_temp2","t10","query","undefined","authError","createdDoc","create","prev","t11","saveError","err_3","String","newQuery","newQueries","setKey","t12","saveError_0","err_4","saveQuery","query_0","authError_0","updatedDoc","patch","set","commit","updatedSharedQuery","prev_0","existingQuery","updateError","err_5","updatedQueries","q","t13","updateError_0","err_6","updateQuery","key","prev_1","clearDeleting","prev_2","filter","k","sharedQuery","find","query_1","delete","prev_3","query_2","filteredQueries","q_0","t14","deleteQuery","a","b","Date","getTime","data","AddIcon","LockIcon","SearchIcon","TrashIcon","UnpublishIcon","UsersIcon","Badge","Box","Button","Card","Code","Dialog","Flex","Menu","MenuButton","MenuItem","Stack","Tab","TabList","Text","TextInput","Tooltip","useToast","isEqual","ComponentProps","ReactElement","useCallback","useState","ContextMenuButton","UserAvatar","useDateTimeFormat","useTranslation","QueryConfig","useSavedQueries","visionLocaleNamespace","fixedHeader","queryList","scrollContainer","ParsedUrlState","StyledLabel","FixedHeader","props","$","_c","t0","ScrollContainer","QueryList","QueryRecall","url","getStateFromUrl","setStateFromParsedUrl","currentQuery","currentParams","generateUrl","compactMode","t1","undefined","toast","saveQuery","updateQuery","queries","deleteQuery","saving","t","t2","Symbol","for","month","day","year","hour","minute","hour12","formatDate","editingKey","setEditingKey","editingTitle","setEditingTitle","t3","optimisticTitles","setOptimisticTitles","searchQuery","setSearchQuery","queryFilter","setQueryFilter","selectedUrl","setSelectedUrl","t4","pendingUnshareKeys","setPendingUnshareKeys","shareDialogQuery","setShareDialogQuery","t5","newUrl","isDuplicate","some","q","shared","savedQueryObj","query","params","duplicateQuery","find","q_0","savedQueryObj_0","push","closable","status","title","description","format","Date","savedAt","toISOString","t6","err","Error","message","String","handleSave","handleShareQuery","t7","sharedQueryKey","_key","sharedQueryUrl","sharedQueryTitle","t8","handleConfirmShareQuery","query_0","prev","clearPending","prev_0","filter","key","nextQueryObj","duplicatePersonalQuery","existingQuery","existingQueryObj","unsharedQueryTitle","t9","handleUnshareQuery","query_1","newTitle","prev_1","prev_3","next_0","next","t10","prev_2","handleTitleSave","query_2","newUrl_0","isDuplicate_0","q_1","savedQueryObj_1","duplicateQuery_0","q_2","savedQueryObj_2","t11","handleUpdate","T0","T1","T2","t12","t13","t14","visibleQueries","q_3","includes","filteredQueries","q_4","matchesSearch","toLowerCase","matchesFilter","t15","t16","t17","t18","t19","t20","t21","t22","event","currentTarget","value","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","t34","t35","t36","map","q_5","index","queryObj","fullQueryPreview","shortQueryPreview","split","isSelected","canMutateQuery","isOwnedByCurrentUser","areQueriesEqual","isEdited","event_0","target","HTMLElement","closest","parsedUrl","borderTop","position","borderBottom","borderLeft","cursor","minHeight","minWidth","flex","event_1","event_2","maxWidth","height","padding","slice","length","width","borderRadius","backgroundColor","display","alignItems","event_3","stopPropagation","event_4","event_5","portal","placement","tone","maxHeight","overflow","paddingTop","justifyContent","authorId","lineHeight","color","whiteSpace","textOverflow","right","bottom","fontSize","e","useEffect","useState","PaneSizeOptions","defaultSize","size","allowResize","minSize","maxSize","RootSize","width","height","narrowBreakpoint","window","innerWidth","calculatePaneSizeOptions","rootHeight","document","body","getBoundingClientRect","undefined","Math","min","max","usePaneSize","t0","$","_c","visionRootRef","rootSize","setRootSize","_temp","isNarrowBreakpoint","setIsNarrowBreakpoint","_temp2","paneSizeOptions","setPaneSizeOptions","_temp3","t1","t2","current","handleResize","entries","entry","contentRect","resizeObserver","ResizeObserver","observe","disconnect","t3","innerHeight","PlayIcon","StopIcon","Box","Button","Card","Flex","Hotkeys","Text","Tooltip","useTranslation","visionLocaleNamespace","ControlsContainer","VisionGuiControlsProps","hasValidParams","queryInProgress","listenInProgress","onQueryExecution","onListenExecution","VisionGuiControls","t0","$","_c","t","t1","t2","t3","Symbol","for","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","HelpCircleIcon","Badge","Box","Button","Card","CardTone","Inline","Popover","Stack","Text","useClickOutsideEvent","ComponentProps","useCallback","useRef","useState","Translate","useTranslation","visionLocaleNamespace","dot","perspectivePopoverContent","perspectivePopoverLink","PerspectivePopoverContent","props","$","_c","t0","PerspectivePopoverLink","Dot","tone","t1","t2","backgroundColor","SHOW_DEFAULT_PERSPECTIVE_NOTIFICATION","PerspectivePopover","open","setOpen","buttonRef","popoverRef","Symbol","for","_temp","handleClick","t","current","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","o","CopyIcon","Box","Button","Card","Flex","Grid","Inline","Select","Stack","TextInput","Tooltip","ChangeEvent","ComponentType","Fragment","RefObject","useCallback","useMemo","useRef","PerspectiveContextValue","TFunction","usePerspective","useTranslation","API_VERSIONS","visionLocaleNamespace","hasPinnedPerspective","SUPPORTED_PERSPECTIVES","SupportedPerspective","PerspectivePopover","Header","QueryCopyLink","StyledLabel","PinnedReleasePerspectiveOption","pinnedPerspective","t","t0","$","_c","name","selectedPerspective","metadata","title","selectedPerspectiveName","t1","label","t2","filter","_temp","text","join","t3","t4","t5","VisionGuiHeaderProps","onChangeDataset","evt","HTMLSelectElement","dataset","customApiVersion","apiVersion","onChangeApiVersion","datasets","customApiVersionElementRef","HTMLInputElement","onCustomApiVersionChange","isValidApiVersion","onChangePerspective","url","perspective","isScheduledDraftsEnabled","VisionGuiHeader","operationUrlElement","Symbol","for","el","current","select","document","execCommand","console","error","handleCopyUrl","t6","map","_temp2","t7","t8","t9","t10","t11","t12","t13","_temp3","t14","t15","t16","t17","t18","undefined","t19","t20","t21","t22","t23","t24","t25","perspectiveName","t26","t27","t28","event","preventDefault","t29","version","ds","value","json2csv","getBlobUrl","content","mimeType","URL","createObjectURL","Blob","type","getMemoizedBlobUrlResolver","stringEncoder","input","prevResult","prevContent","undefined","revokeObjectURL","getJsonBlobUrl","JSON","stringify","getCsvBlobUrl","Array","isArray","trim","Code","ComponentProps","errorCode","ErrorCode","props","$","_c","t0","Box","useTranslation","visionLocaleNamespace","ErrorCode","ContentLakeQueryError","details","query","start","end","lineNumber","column","QueryErrorDetails","t0","$","_c","error","t","t1","T0","t2","t3","t4","t5","Symbol","for","bb0","mapToLegacyDetails","line","dashLine","columnEnd","t6","t7","t8","t9","t10","t11","t12","t13","lineStart","slice","lastIndexOf","match","length","indexOf","undefined","repeat","hats","Stack","QueryErrorDetails","ErrorCode","QueryErrorDialog","props","$","_c","t0","error","message","t1","t2","createVar","globalStyle","style","codeFamilyVar","codeFontSizeVar","codeLineHeightVar","space0Var","space2Var","space4Var","space4HalfVar","syntaxPropertyVar","syntaxConstantVar","syntaxStringVar","syntaxBooleanVar","syntaxNumberVar","resultViewWrapper","fontFamily","fontSize","lineHeight","color","paddingLeft","paddingTop","display","position","cursor","content","top","left","right","bottom","zIndex","pointerEvents","background","marginLeft","margin","wordBreak","padding","JsonInspector","LinkIcon","Code","rem","useTheme_v2","useThemeV2","assignInlineVars","LRU","ReactNode","useDataset","IntentLink","codeFamilyVar","codeFontSizeVar","codeLineHeightVar","resultViewWrapper","space0Var","space2Var","space4HalfVar","space4Var","syntaxBooleanVar","syntaxConstantVar","syntaxNumberVar","syntaxPropertyVar","syntaxStringVar","lru","maxSize","ResultViewWrapper","t0","$","_c","children","color","font","space","codeSize","code","sizes","t1","family","t2","fontSize","t3","lineHeight","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","syntax","boolean","constant","number","property","string","t14","ResultView","props","data","datasetName","workspaceDataset","isRecord","Array","isArray","DocumentEditLabel","undefined","isExpanded","toggleExpanded","JSON","stringify","isKey","keypath","endsWith","value","id","Symbol","for","keyPath","depthLimit","cached","get","segments","split","length","some","key","isArrayKeyOverLimit","event","path","current","set","Record","numeric","segment","limit","test","parseInt","DocumentSheetIcon","Button","Tooltip","useTranslation","visionLocaleNamespace","SaveButtonProps","blobUrl","SaveCsvButton","t0","$","_c","t","t1","t2","Symbol","for","t3","SaveJsonButton","MutationEvent","Box","Text","Translate","useTranslation","visionLocaleNamespace","getCsvBlobUrl","getJsonBlobUrl","DelayedSpinner","QueryErrorDialog","ResultView","SaveCsvButton","SaveJsonButton","DownloadsCard","InputBackgroundContainer","Result","ResultContainer","ResultFooter","ResultInnerContainer","ResultOuterContainer","SaveResultLabel","StyledLabel","TimingsCard","TimingsTextContainer","VisionGuiResultProps","error","Error","queryInProgress","queryResult","listenInProgress","listenMutations","dataset","queryTime","e2eTime","compactFooter","VisionGuiResult","t0","$","_c","t1","undefined","t","hasResult","t2","jsonUrl","t3","csvUrl","t4","t5","Boolean","t6","t7","t8","length","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","width","minWidth","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","marginLeft","SaveResultButtons","t34","t35","SplitPane","ClientPerspective","ListenEvent","MutationEvent","ReleaseDocument","StackablePerspective","ChevronLeftIcon","ChevronRightIcon","Box","Button","Flex","useToast","isHotkey","ChangeEvent","useCallback","useEffect","useEffectEvent","useMemo","useRef","useState","getReleaseIdFromReleaseDocumentId","isCardinalityOneRelease","PerspectiveStack","sortReleases","useActiveReleases","useClient","usePerspective","useScheduledDraftsEnabled","useTranslation","useWorkspace","API_VERSIONS","DEFAULT_API_VERSION","groqExtensions","VisionCodeMirror","VisionCodeMirrorHandle","visionLocaleNamespace","getActivePerspective","isSupportedPerspective","isVirtualPerspective","SupportedPerspective","VisionProps","encodeQueryString","getLocalStorage","parseApiQueryString","ParsedApiQueryString","prefixApiVersion","validateApiVersion","ParamsEditor","parseParams","QueryRecall","usePaneSize","InputBackgroundContainerLeft","InputContainer","QueryRecallPaneContainer","QueryRecallPaneWrapper","Root","SplitpaneContainer","StyledLabel","VisionGuiControls","VisionGuiHeader","VisionGuiResult","nodeContains","node","Node","other","EventTarget","compareDocumentPosition","sanityUrl","isRunHotkey","event","KeyboardEvent","Subscription","unsubscribe","Params","raw","parsed","Record","valid","error","QueryExecutionOptions","apiVersion","dataset","perspective","query","params","VisionGuiProps","datasets","projectId","defaultDataset","ParsedUrlState","rawParams","customApiVersion","url","VisionGui","props","$","_c","config","toast","t","perspectiveStack","isScheduledDraftsEnabled","data","t0","t1","undefined","releases","workspace","isDraftModelEnabled","document","drafts","enabled","editorQueryRef","editorParamsRef","visionRootRef","customApiVersionElementRef","querySubscriptionRef","listenSubscriptionRef","t2","localStorage","t3","get","storedDataset","t4","defaultApiVersion","storedApiVersion","t5","storedQuery","t6","storedParams","t7","storedPerspective","t8","includes","setDataset","t9","setApiVersion","t10","setCustomApiVersion","setPerspectiveState","t11","isValidApiVersion","setUrl","t12","setQuery","setRawParams","t13","queryResult","setQueryResult","t14","Symbol","for","listenMutations","setListenMutations","setError","queryTime","setQueryTime","e2eTime","setE2eTime","queryInProgress","setQueryInProgress","listenInProgress","setListenInProgress","isQueryRecallCollapsed","setIsQueryRecallCollapsed","t15","paneSizeOptions","isNarrowBreakpoint","t16","bb0","t17","scheduledDraftReleases","filter","_temp","sorted","releaseIds","map","_temp2","t18","defaultPerspective","scheduledDraftsStack","_client","t19","withConfig","visionPerspective","allowReconfigure","client","t20","current","cancelQuerySubscription","t21","cancelListenerSubscription","t22","options","context","JSON","stringify","set","hasQuery","trim","length","Error","urlQueryOpts","ctxClient","newUrl","getUrl","getDataUrl","queryStart","Date","now","observable","fetch","filterResponse","tag","subscribe","next","res","ms","result","err","handleQueryExecution","t23","newPerspective","setPerspective","t24","evt","newDataset","target","value","handleChangeDataset","t25","evt_0","newApiVersion","toLowerCase","focus","handleChangeApiVersion","t26","evt_1","newCustomApiVersion","handleCustomApiVersionChange","t27","evt_2","newPerspective_0","handleChangePerspective","t28","evt_3","type","prevMutations","slice","handleListenerEvent","t29","newUrl_0","shouldExecute","listen","events","includeAllVersions","err_0","handleListenExecution","t30","handleParamsChange","t31","match","usedApiVersion","usedDataset","urlQuery","qs","URLSearchParams","parts","newPerspective_1","push","closable","id","status","title","newApiVersion_0","getStateFromUrl","t32","parsedUrlObj","resetEditorContent","merge","setStateFromParsedUrl","t33","evt_4","clipboardData","data_0","getData","preventDefault","urlState","handlePaste","t34","isWithinRoot","stopPropagation","handleKeyDown","t35","t36","window","addEventListener","removeEventListener","t37","t38","t39","stack","handleStudioPerspectiveChange","t40","t41","t42","queryString","queryParams","urlQueryOpts_0","generateUrl","t43","t44","innerWidth","t45","t46","defaultSize","minSize","t47","size","t48","allowResize","t49","t50","maxSize","t51","t52","t53","t54","t55","t56","t57","t58","t59","t60","t61","position","left","top","transform","zIndex","pointerEvents","t62","t63","display","alignItems","height","t64","t65","t66","t67","t68","t69","t70","release_0","release","_id","state","SanityClient","useMemo","useObservable","catchError","map","Observable","of","VisionConfig","useDatasets","t0","$","_c","client","datasets","configDatasets","t1","bb0","Array","isArray","t2","observable","t3","result","_temp","_temp2","list","pipe","_temp3","datasets$","err","ds","name","d","Flex","useClient","DelayedSpinner","VisionGui","useDatasets","VisionProps","VisionContainer","props","$","_c","t0","Symbol","for","apiVersion","datasetsClient","t1","config","datasets","client","loadedDatasets","t2","Error","dataset","t3","projectId","t4","defaultDataset","t5","Button","Card","Code","Container","Heading","Stack","Component","PropsWithChildren","clearLocalStorage","VisionErrorBoundaryProps","VisionErrorBoundaryState","error","numRetries","VisionErrorBoundary","constructor","props","state","getDerivedStateFromError","Error","message","handleRetryRender","setState","prev","handleRetryWithCacheClear","render","children","withCacheClear","Tool","useClient","DEFAULT_API_VERSION","VisionContainer","VisionErrorBoundary","VisionConfig","SanityVisionProps","tool","SanityVision","props","$","_c","t0","Symbol","for","apiVersion","client","t1","options","defaultApiVersion","config","t2"],"sources":["../src/apiVersions.ts","../src/components/DelayedSpinner.tsx","../src/codemirror/extensions.ts","../src/codemirror/useCodemirrorTheme.ts","../src/codemirror/VisionCodeMirror.css.ts","../src/codemirror/VisionCodeMirror.tsx","../src/perspectives.ts","../src/util/encodeQueryString.ts","../src/util/isPlainObject.ts","../src/util/localStorage.ts","../src/util/parseApiQueryString.ts","../src/util/prefixApiVersion.ts","../src/util/validateApiVersion.ts","../src/util/tryParseParams.ts","../src/components/VisionGui.css.ts","../src/components/VisionGui.styled.tsx","../src/components/ParamsEditor.tsx","../src/hooks/useSavedQueries.ts","../src/components/QueryRecall.css.ts","../src/components/QueryRecall.tsx","../src/components/usePaneSize.ts","../src/components/VisionGuiControls.tsx","../src/components/PerspectivePopover.css.ts","../src/components/PerspectivePopover.tsx","../src/components/VisionGuiHeader.tsx","../src/util/getBlobUrl.ts","../src/components/QueryErrorDialog.css.ts","../src/components/QueryErrorDialog.styled.tsx","../src/components/QueryErrorDetails.tsx","../src/components/QueryErrorDialog.tsx","../src/components/ResultView.css.ts","../src/components/ResultView.tsx","../src/components/SaveResultButtons.tsx","../src/components/VisionGuiResult.tsx","../src/components/VisionGui.tsx","../src/hooks/useDatasets.ts","../src/containers/VisionContainer.tsx","../src/containers/VisionErrorBoundary.tsx","../src/SanityVision.tsx"],"sourcesContent":["export const API_VERSIONS = [\n 'v1',\n 'vX',\n 'v2021-03-25',\n 'v2021-10-21',\n 'v2022-03-07',\n 'v2025-02-19',\n `v${new Date().toISOString().split('T')[0]}`,\n]\nexport const [DEFAULT_API_VERSION] = API_VERSIONS.slice(-1)\n","import {Spinner} from '@sanity/ui'\nimport {useEffect, useState} from 'react'\n\ninterface DelayedSpinnerProps {\n delay?: number\n}\n\n// Waits for X ms before showing a spinner\nexport function DelayedSpinner(props: DelayedSpinnerProps) {\n const [show, setShow] = useState(false)\n\n useEffect(() => {\n const timer = setTimeout(() => setShow(true), props.delay || 500)\n return () => clearTimeout(timer)\n }, [props.delay])\n\n return show ? <Spinner muted size={4} /> : null\n}\n","import {closeBrackets} from '@codemirror/autocomplete'\nimport {defaultKeymap, history, historyKeymap} from '@codemirror/commands'\nimport {javascriptLanguage} from '@codemirror/lang-javascript'\nimport {\n bracketMatching,\n defaultHighlightStyle,\n indentOnInput,\n syntaxHighlighting,\n} from '@codemirror/language'\nimport {highlightSelectionMatches} from '@codemirror/search'\nimport {type Extension} from '@codemirror/state'\nimport {\n drawSelection,\n highlightActiveLine,\n highlightActiveLineGutter,\n highlightSpecialChars,\n keymap,\n lineNumbers,\n} from '@codemirror/view'\nimport {groq} from '@sanity/lezer-groq'\n\nconst sharedExtensions: Extension[] = [\n lineNumbers(),\n highlightActiveLine(),\n highlightActiveLineGutter(),\n highlightSelectionMatches(),\n highlightSpecialChars(),\n indentOnInput(),\n bracketMatching(),\n closeBrackets(),\n history(),\n drawSelection(),\n syntaxHighlighting(defaultHighlightStyle, {fallback: true}),\n keymap.of(\n [\n // Override the default keymap for Mod-Enter to not insert a new line, we have a custom event handler for executing queries\n {key: 'Mod-Enter', run: () => true},\n\n // Add the default keymap and history keymap\n defaultKeymap,\n historyKeymap,\n ]\n .flat()\n .filter(Boolean),\n ),\n]\n\nexport const groqExtensions: Extension[] = [groq(), ...sharedExtensions]\n\nexport const paramsExtensions: Extension[] = [javascriptLanguage, ...sharedExtensions]\n","import {HighlightStyle, syntaxHighlighting} from '@codemirror/language'\nimport {type Extension} from '@codemirror/state'\nimport {EditorView} from '@codemirror/view'\nimport {tags as t} from '@lezer/highlight'\nimport {hues} from '@sanity/color'\nimport {rem, type Theme} from '@sanity/ui'\nimport {useMemo} from 'react'\n\n// The explicit return type keeps declaration emit portable (TS2883): without it the inferred\n// type references `Extension` from @codemirror/state through a non-portable .pnpm path\nexport function useCodemirrorTheme(theme: Theme): Extension[] {\n const cmTheme = useMemo(() => createTheme(theme), [theme])\n const cmHighlight = useMemo(() => syntaxHighlighting(createHighlight(theme)), [theme])\n\n return [cmTheme, cmHighlight]\n}\n\nfunction createTheme(theme: Theme) {\n const {color, fonts} = theme.sanity\n const card = color.card.enabled\n const cursor = hues.blue[color.dark ? 400 : 500].hex\n const selection = hues.gray[theme.sanity.color.dark ? 900 : 100].hex\n\n return EditorView.theme(\n {\n '&': {\n color: card.fg,\n backgroundColor: card.bg,\n },\n\n '.cm-content': {\n caretColor: cursor,\n },\n\n '.cm-editor': {\n fontFamily: fonts.code.family,\n fontSize: rem(fonts.code.sizes[1].fontSize),\n lineHeight: 'inherit',\n },\n\n '.cm-cursor, .cm-dropCursor': {borderLeftColor: cursor},\n '&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection': {\n backgroundColor: selection,\n },\n\n '.cm-panels': {backgroundColor: card.bg, color: card.fg},\n '.cm-panels.cm-panels-top': {borderBottom: `2px solid ${card.border}`},\n '.cm-panels.cm-panels-bottom': {borderTop: `2px solid ${card.border}`},\n },\n {dark: color.dark},\n )\n}\n\nfunction createHighlight(theme: Theme) {\n const c = theme.sanity.color.base\n const s = theme.sanity.color.syntax\n return HighlightStyle.define([\n {tag: t.keyword, color: s.keyword},\n {tag: [t.propertyName, t.name, t.deleted, t.character, t.macroName], color: s.property},\n {tag: [t.function(t.variableName), t.labelName], color: s.function},\n {tag: [t.color, t.constant(t.name), t.standard(t.name)], color: s.variable},\n {tag: [t.definition(t.name), t.separator], color: s.constant},\n {\n tag: [\n t.typeName,\n t.className,\n t.number,\n t.changed,\n t.annotation,\n t.modifier,\n t.self,\n t.namespace,\n ],\n color: s.number,\n },\n {\n tag: [t.operator, t.operatorKeyword, t.url, t.escape, t.regexp, t.link, t.special(t.string)],\n color: s.operator,\n },\n {tag: [t.meta, t.comment], color: s.comment},\n {tag: t.strong, fontWeight: 'bold'},\n {tag: t.emphasis, fontStyle: 'italic'},\n {tag: t.strikethrough, textDecoration: 'line-through'},\n {tag: t.heading, fontWeight: 'bold', color: s.property},\n {tag: [t.atom, t.bool, t.special(t.variableName)], color: s.boolean},\n {tag: [t.processingInstruction, t.string, t.inserted], color: s.string},\n {tag: t.invalid, color: c.fg},\n ])\n}\n","import {createVar, globalStyle, style} from '@vanilla-extract/css'\n\nexport const linePaddingLeftVar = createVar()\nexport const contentBorderRightWidthVar = createVar()\nexport const contentPaddingTopVar = createVar()\n\nexport const editorRoot = style({\n width: '100%',\n boxSizing: 'border-box',\n height: '100%',\n overflow: ['hidden', 'clip'],\n position: 'relative',\n display: 'flex',\n})\n\nglobalStyle(`${editorRoot} .cm-theme`, {\n width: '100%',\n})\n\nglobalStyle(`${editorRoot} .cm-editor`, {\n height: '100%',\n fontSize: '16px',\n lineHeight: '21px',\n})\n\nglobalStyle(`${editorRoot} .cm-line`, {\n paddingLeft: linePaddingLeftVar,\n})\n\nglobalStyle(`${editorRoot} .cm-content`, {\n borderRightWidth: `${contentBorderRightWidthVar} !important`,\n paddingTop: contentPaddingTopVar,\n})\n","import {type Extension} from '@codemirror/state'\nimport {rem, useTheme} from '@sanity/ui'\nimport CodeMirror, {\n EditorSelection,\n type ReactCodeMirrorProps,\n type ReactCodeMirrorRef,\n} from '@uiw/react-codemirror'\nimport {assignInlineVars} from '@vanilla-extract/dynamic'\nimport {forwardRef, type ReactNode, useCallback, useImperativeHandle, useRef, useState} from 'react'\n\nimport {useCodemirrorTheme} from './useCodemirrorTheme'\nimport {\n contentBorderRightWidthVar,\n contentPaddingTopVar,\n editorRoot,\n linePaddingLeftVar,\n} from './VisionCodeMirror.css'\n\nfunction EditorRoot({children}: {children: ReactNode}) {\n const {sanity} = useTheme()\n\n return (\n <div\n className={editorRoot}\n style={assignInlineVars({\n [linePaddingLeftVar]: `${rem(sanity.space[3])}`,\n [contentBorderRightWidthVar]: `${rem(sanity.space[4])}`,\n [contentPaddingTopVar]: `${rem(sanity.space[5])}`,\n })}\n >\n {children}\n </div>\n )\n}\n\nexport interface VisionCodeMirrorHandle {\n resetEditorContent: (newContent: string) => void\n}\n\nexport const VisionCodeMirror = forwardRef<\n VisionCodeMirrorHandle,\n Pick<ReactCodeMirrorProps, 'onChange'> & {\n initialValue: ReactCodeMirrorProps['value']\n extensions: Extension[]\n }\n>((props, ref) => {\n // The value prop is only passed for initial value, and is not updated when the parent component updates the value.\n // If you need to update the value, use the resetEditorContent function.\n const [initialValue] = useState(props.initialValue)\n const sanityTheme = useTheme()\n const theme = useCodemirrorTheme(sanityTheme)\n const codeMirrorRef = useRef<ReactCodeMirrorRef>(null)\n\n const resetEditorContent = useCallback((newContent: string) => {\n const editorView = codeMirrorRef.current?.view\n if (!editorView) return\n\n const currentDoc = editorView.state.doc.toString()\n if (newContent !== currentDoc) {\n editorView.dispatch({\n changes: {from: 0, to: currentDoc.length, insert: newContent},\n selection: EditorSelection.cursor(newContent.length), // Place cursor at end\n })\n }\n }, [])\n\n useImperativeHandle(\n ref,\n () => ({\n resetEditorContent,\n }),\n [resetEditorContent],\n )\n\n return (\n <EditorRoot>\n <CodeMirror\n ref={codeMirrorRef}\n basicSetup={false}\n theme={theme}\n extensions={props.extensions}\n value={initialValue}\n onChange={props.onChange}\n />\n </EditorRoot>\n )\n})\n\n// Add display name\nVisionCodeMirror.displayName = 'VisionCodeMirror'\n","import {type ClientPerspective} from '@sanity/client'\nimport {type PerspectiveContextValue, type PerspectiveStack} from 'sanity'\n\nexport const SUPPORTED_PERSPECTIVES = [\n 'pinnedRelease',\n 'scheduledDrafts',\n 'raw',\n 'published',\n 'drafts',\n] as const\n\nexport type SupportedPerspective = (typeof SUPPORTED_PERSPECTIVES)[number]\n\n/**\n * Virtual perspectives are recognised by Vision, but do not concretely reflect the names of real\n * perspectives. Virtual perspectives are transformed into real perspectives before being used to\n * interact with data.\n *\n * For example, the `pinnedRelease` virtual perspective is transformed to the real perspective\n * currently pinned in Studio, and `scheduledDrafts` is transformed to a stack of all scheduled\n * draft release IDs.\n */\nexport const VIRTUAL_PERSPECTIVES = ['pinnedRelease', 'scheduledDrafts'] as const\n\nexport type VirtualPerspective = (typeof VIRTUAL_PERSPECTIVES)[number]\n\nexport function isSupportedPerspective(p: string): p is SupportedPerspective {\n return SUPPORTED_PERSPECTIVES.includes(p as SupportedPerspective)\n}\n\nexport function isVirtualPerspective(\n maybeVirtualPerspective: unknown,\n): maybeVirtualPerspective is VirtualPerspective {\n return (\n typeof maybeVirtualPerspective === 'string' &&\n VIRTUAL_PERSPECTIVES.includes(maybeVirtualPerspective as VirtualPerspective)\n )\n}\n\nexport function hasPinnedPerspective({selectedPerspectiveName}: PerspectiveContextValue): boolean {\n return typeof selectedPerspectiveName !== 'undefined'\n}\n\nexport function getActivePerspective({\n visionPerspective,\n perspectiveStack,\n scheduledDraftsStack,\n}: {\n visionPerspective: ClientPerspective | SupportedPerspective | undefined\n perspectiveStack: PerspectiveContextValue['perspectiveStack']\n scheduledDraftsStack?: PerspectiveStack\n}): ClientPerspective | undefined {\n if (visionPerspective === 'pinnedRelease') {\n return perspectiveStack\n }\n if (visionPerspective === 'scheduledDrafts') {\n return scheduledDraftsStack\n }\n return visionPerspective\n}\n","export function encodeQueryString(\n query: string,\n params: Record<string, unknown> = {},\n options: Record<string, string | string[]> = {},\n): string {\n const searchParams = new URLSearchParams()\n searchParams.set('query', query)\n\n for (const [key, value] of Object.entries(params)) {\n searchParams.set(`$${key}`, JSON.stringify(value))\n }\n\n for (const [key, value] of Object.entries(options)) {\n if (value) searchParams.set(key, `${value}`)\n }\n\n return `?${searchParams}`\n}\n","export function isPlainObject(obj: unknown): obj is Record<string, unknown> {\n return (\n !!obj && typeof obj === 'object' && Object.prototype.toString.call(obj) === '[object Object]'\n )\n}\n","import {isPlainObject} from './isPlainObject'\n\nconst hasLocalStorage = supportsLocalStorage()\nconst keyPrefix = 'sanityVision:'\n\nexport interface LocalStorageish {\n get: <T>(key: string, defaultVal: T) => T\n set: <T>(key: string, value: T) => T\n merge: <T>(props: T) => T\n}\n\nexport function clearLocalStorage() {\n if (!hasLocalStorage) {\n return\n }\n\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i)\n if (key?.startsWith(keyPrefix)) {\n localStorage.removeItem(key)\n }\n }\n}\n\nexport function getLocalStorage(namespace: string): LocalStorageish {\n const storageKey = `${keyPrefix}${namespace}`\n let loadedState: Record<string, unknown> | null = null\n\n return {get, set, merge}\n\n function get<T>(key: string, defaultVal: T): T {\n const state = ensureState()\n return typeof state[key] === 'undefined' ? defaultVal : (state[key] as T)\n }\n\n function set<T>(key: string, value: T): T {\n const state = ensureState()\n state[key] = value\n localStorage.setItem(storageKey, JSON.stringify(loadedState))\n return value\n }\n\n function merge<T>(props: T): T {\n const state = {...ensureState(), ...props}\n localStorage.setItem(storageKey, JSON.stringify(state))\n return state\n }\n\n function ensureState(): Record<string, unknown> {\n if (loadedState === null) {\n loadedState = loadState()\n }\n\n return loadedState\n }\n\n function loadState() {\n if (!hasLocalStorage) {\n return {}\n }\n\n try {\n const stored = JSON.parse(localStorage.getItem(storageKey) || '{}')\n return isPlainObject(stored) ? stored : {}\n } catch {\n return {}\n }\n }\n}\n\nfunction supportsLocalStorage() {\n const mod = 'lsCheck'\n try {\n localStorage.setItem(mod, mod)\n localStorage.removeItem(mod)\n return true\n } catch {\n return false\n }\n}\n","export interface ParsedApiQueryString {\n query: string\n params: Record<string, unknown>\n options: Record<string, string>\n}\n\nexport function parseApiQueryString(qs: URLSearchParams): ParsedApiQueryString {\n const params: Record<string, unknown> = {}\n const options: Record<string, string> = {}\n\n for (const [key, value] of qs.entries()) {\n if (key[0] === '$') {\n params[key.slice(1)] = JSON.parse(value)\n continue\n }\n\n if (key === 'perspective') {\n options[key] = value\n continue\n }\n }\n\n return {query: qs.get('query') || '', params, options}\n}\n","export function prefixApiVersion(version: string): string {\n if (version[0] !== 'v' && version !== 'other') {\n return `v${version}`\n }\n\n return version\n}\n","export function validateApiVersion(apiVersion: string): boolean {\n const parseableApiVersion = apiVersion.replace(/^v/, '').trim().toUpperCase()\n\n const isValidApiVersion =\n parseableApiVersion.length > 0 &&\n (parseableApiVersion === 'X' ||\n parseableApiVersion === '1' ||\n (/^\\d{4}-\\d{2}-\\d{2}$/.test(parseableApiVersion) && !isNaN(Date.parse(parseableApiVersion))))\n\n return isValidApiVersion\n}\n","import JSON5 from 'json5'\nimport {type TFunction} from 'sanity'\n\nexport function tryParseParams(\n val: string,\n t: TFunction<'vision'>,\n): Record<string, unknown> | Error {\n try {\n const parsed = val ? JSON5.parse(val) : {}\n return typeof parsed === 'object' && parsed && !Array.isArray(parsed) ? parsed : {}\n } catch (err) {\n // JSON5 always prefixes the error message with JSON5:, so we remove it\n // to clean up the error tooltip\n err.message = `${t('params.error.params-invalid-json')}:\\n\\n${err.message.replace(\n 'JSON5:',\n '',\n )}`\n return err\n }\n}\n","import {createVar, globalStyle, style} from '@vanilla-extract/css'\n\nexport const root = style({})\n\nglobalStyle(`${root} .sidebarPanes .Pane`, {\n overflowY: 'auto',\n overflowX: 'hidden',\n})\n\nexport const queryRecallPaneContainer = style({\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n})\n\nexport const queryRecallPaneWrapper = style({\n minHeight: 0,\n})\n\nglobalStyle(`${root} .Resizer`, {\n background: 'var(--card-border-color)',\n opacity: 1,\n zIndex: 1,\n boxSizing: 'border-box',\n backgroundClip: 'padding-box',\n border: 'solid transparent',\n})\n\nglobalStyle(`${root} .Resizer:hover`, {\n borderColor: 'var(--card-shadow-ambient-color)',\n})\n\nglobalStyle(`${root} .Resizer.horizontal`, {\n height: '11px',\n margin: '-5px 0',\n borderWidth: '5px 0',\n cursor: 'row-resize',\n width: '100%',\n zIndex: 4,\n})\n\nglobalStyle(`${root} .Resizer.vertical`, {\n width: '11px',\n margin: '0 -5px',\n borderWidth: '0 5px',\n cursor: 'col-resize',\n zIndex: 2 /* To prevent the resizer from being hidden behind CodeMirror scroll area */,\n})\n\nglobalStyle(`${root} .Resizer.disabled`, {\n cursor: 'not-allowed',\n})\n\nglobalStyle(`${root} .Resizer.disabled:hover`, {\n borderColor: 'transparent',\n})\n\nexport const header = style({\n position: 'relative',\n flexShrink: 0,\n zIndex: 6,\n overflow: 'visible',\n borderBottom: '1px solid var(--card-border-color)',\n selectors: {\n // Override the background-color @sanity/ui's Card sets on itself\n '&&': {\n background: 'var(--card-bg-color)',\n },\n },\n})\n\nexport const styledLabel = style({\n flex: 1,\n})\n\nexport const splitpaneContainer = style({\n position: 'relative',\n minHeight: 0,\n zIndex: 1,\n})\n\nexport const queryCopyLink = style({\n cursor: 'pointer',\n marginRight: 'auto',\n})\n\nexport const inputBackgroundContainer = style({\n position: 'absolute',\n top: '1rem',\n left: 0,\n padding: 0,\n margin: 0,\n zIndex: 10,\n right: 0,\n})\n\nglobalStyle(`${inputBackgroundContainer} ${styledLabel}`, {\n userSelect: 'none',\n})\n\nexport const inputBackgroundContainerLeft = style({\n // This is so its aligned with the gutters of CodeMirror\n left: '33px',\n})\n\nexport const inputContainer = style({\n width: '100%',\n height: '100%',\n position: 'relative',\n flexDirection: 'column',\n})\n\nexport const resultOuterContainer = style({\n height: '100%',\n})\n\nexport const resultInnerContainer = style({\n position: 'relative',\n})\n\nexport const resultContainer = style({\n height: '100%',\n width: '100%',\n position: 'absolute',\n maxWidth: '100%',\n})\n\nexport const resultContainerInvalid = style({\n selectors: {\n '&&::after': {\n backgroundColor: 'var(--card-bg-color)',\n content: '\"\"',\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n width: '100%',\n },\n },\n})\n\nexport const result = style({\n position: 'relative',\n width: '100%',\n height: '100%',\n zIndex: 20,\n})\n\nexport const resultFooter = style({\n borderTop: '1px solid var(--card-border-color)',\n flexWrap: 'wrap',\n})\n\nexport const timingsCard = style({\n position: 'relative',\n})\n\nexport const timingsTextMinHeightVar = createVar()\n\nexport const timingsTextContainer = style({\n height: '100%',\n minHeight: timingsTextMinHeightVar,\n})\n\nexport const downloadsCard = style({\n position: 'relative',\n})\n\nexport const saveResultSpanGapVar = createVar()\n\nexport const saveResultLabel = style({\n selectors: {\n // Override the transform/pseudo-elements @sanity/ui's Text applies for baseline trimming\n '&&': {\n transform: 'initial',\n },\n '&&::before': {\n content: 'none',\n },\n '&&::after': {\n content: 'none',\n },\n },\n})\n\nglobalStyle(`${saveResultLabel} > span`, {\n display: 'flex !important',\n flexWrap: 'wrap',\n gap: saveResultSpanGapVar,\n alignItems: 'center',\n})\n\nexport const controlsContainer = style({\n borderTop: '1px solid var(--card-border-color)',\n})\n","import {Box, Card, Flex, Label, rem, Text, useTheme_v2 as useThemeV2} from '@sanity/ui'\nimport {assignInlineVars} from '@vanilla-extract/dynamic'\nimport {type ComponentProps, type ComponentPropsWithoutRef, forwardRef} from 'react'\n\nimport {\n controlsContainer,\n downloadsCard,\n header,\n inputBackgroundContainer,\n inputBackgroundContainerLeft,\n inputContainer,\n queryCopyLink,\n queryRecallPaneContainer,\n queryRecallPaneWrapper,\n result,\n resultContainer,\n resultContainerInvalid,\n resultFooter,\n resultInnerContainer,\n resultOuterContainer,\n root,\n saveResultLabel,\n saveResultSpanGapVar,\n splitpaneContainer,\n styledLabel,\n timingsCard,\n timingsTextContainer,\n timingsTextMinHeightVar,\n} from './VisionGui.css'\n\nexport const Root = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<typeof Flex>>(\n function Root(props, ref) {\n return <Flex {...props} ref={ref} className={root} />\n },\n)\n\nexport function Header(props: ComponentProps<typeof Card>) {\n return <Card {...props} className={header} />\n}\n\nexport function StyledLabel(props: ComponentProps<typeof Label>) {\n return <Label {...props} className={styledLabel} />\n}\n\nexport function SplitpaneContainer(props: ComponentProps<typeof Box>) {\n return <Box {...props} className={splitpaneContainer} />\n}\n\nexport function QueryRecallPaneContainer(props: ComponentProps<typeof Flex>) {\n return <Flex {...props} direction=\"column\" className={queryRecallPaneContainer} />\n}\n\nexport function QueryRecallPaneWrapper(props: ComponentProps<typeof Flex>) {\n return (\n <Flex\n {...props}\n direction=\"column\"\n flex={1}\n overflow=\"hidden\"\n className={queryRecallPaneWrapper}\n />\n )\n}\n\nexport function QueryCopyLink(props: ComponentProps<'a'>) {\n return <a {...props} className={queryCopyLink} />\n}\n\nexport function InputBackgroundContainer(props: ComponentProps<typeof Box>) {\n return <Box {...props} className={inputBackgroundContainer} />\n}\n\nexport function InputBackgroundContainerLeft(props: ComponentProps<typeof Box>) {\n return (\n <Box {...props} className={`${inputBackgroundContainer} ${inputBackgroundContainerLeft}`} />\n )\n}\n\nexport function InputContainer(props: ComponentProps<typeof Card>) {\n return <Card {...props} className={inputContainer} />\n}\n\nexport function ResultOuterContainer(props: ComponentProps<typeof Flex>) {\n return <Flex {...props} className={resultOuterContainer} />\n}\n\nexport function ResultInnerContainer(props: ComponentProps<typeof Box>) {\n return <Box {...props} className={resultInnerContainer} />\n}\n\nexport function ResultContainer({\n isInvalid,\n ...props\n}: ComponentProps<typeof Card> & {isInvalid: boolean}) {\n return (\n <Card\n {...props}\n className={isInvalid ? `${resultContainer} ${resultContainerInvalid}` : resultContainer}\n />\n )\n}\n\nexport function Result(props: ComponentProps<typeof Box>) {\n return <Box {...props} className={result} />\n}\n\nexport function ResultFooter(props: ComponentProps<typeof Flex>) {\n return <Flex {...props} className={resultFooter} />\n}\n\nexport function TimingsCard(props: ComponentProps<typeof Card>) {\n return <Card {...props} className={timingsCard} />\n}\n\nexport function TimingsTextContainer(props: ComponentProps<typeof Flex>) {\n const {space, font} = useThemeV2()\n const textSize = font.text.sizes[2]\n const minHeight = rem(\n space[3] * 2 + textSize.lineHeight - textSize.ascenderHeight - textSize.descenderHeight,\n )\n\n return (\n <Flex\n {...props}\n className={timingsTextContainer}\n style={assignInlineVars({[timingsTextMinHeightVar]: `${minHeight}`})}\n />\n )\n}\n\nexport function DownloadsCard(props: ComponentProps<typeof Card>) {\n return <Card {...props} className={downloadsCard} />\n}\n\nexport function SaveResultLabel(props: ComponentProps<typeof Text>) {\n const {space} = useThemeV2()\n\n return (\n <Text\n {...props}\n className={saveResultLabel}\n style={assignInlineVars({[saveResultSpanGapVar]: `${rem(space[3])}`})}\n />\n )\n}\n\nexport function ControlsContainer(props: ComponentProps<typeof Box>) {\n return <Box {...props} className={controlsContainer} />\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Card, Flex, Text, Tooltip} from '@sanity/ui'\nimport debounce from 'lodash-es/debounce.js'\nimport {type RefObject, useCallback, useMemo} from 'react'\nimport {type TFunction, useTranslation} from 'sanity'\n\nimport {paramsExtensions} from '../codemirror/extensions'\nimport {VisionCodeMirror, type VisionCodeMirrorHandle} from '../codemirror/VisionCodeMirror'\nimport {visionLocaleNamespace} from '../i18n'\nimport {tryParseParams} from '../util/tryParseParams'\nimport {type Params} from './VisionGui'\nimport {InputBackgroundContainerLeft, StyledLabel} from './VisionGui.styled'\n\nconst defaultValue = `{\\n \\n}`\n\nexport interface ParamsEditorProps {\n value: string\n onChange: (changeEvt: string) => void\n paramsError: string | undefined\n hasValidParams: boolean\n editorRef: RefObject<VisionCodeMirrorHandle | null>\n}\n\nexport function ParamsEditor(props: ParamsEditorProps) {\n const {onChange, paramsError, hasValidParams, editorRef} = props\n const {t} = useTranslation(visionLocaleNamespace)\n\n const handleChangeRaw = useCallback(\n (newValue: string) => {\n onChange(newValue)\n },\n [onChange],\n )\n\n const handleChange = useMemo(() => debounce(handleChangeRaw, 333), [handleChangeRaw])\n return (\n <Card flex={1} tone={hasValidParams ? 'default' : 'critical'} data-testid=\"params-editor\">\n <InputBackgroundContainerLeft>\n <Flex>\n <StyledLabel muted>{t('params.label')}</StyledLabel>\n {paramsError && (\n <Tooltip animate placement=\"top\" portal content={<Text size={1}>{paramsError}</Text>}>\n <Box padding={1} marginX={2}>\n <Text>\n <ErrorOutlineIcon />\n </Text>\n </Box>\n </Tooltip>\n )}\n </Flex>\n </InputBackgroundContainerLeft>\n <VisionCodeMirror\n ref={editorRef}\n initialValue={props.value || defaultValue}\n onChange={handleChange}\n extensions={paramsExtensions}\n />\n </Card>\n )\n}\n\nexport function parseParams(value: string, t: TFunction<typeof visionLocaleNamespace>): Params {\n const parsedParams = tryParseParams(value, t)\n const params = parsedParams instanceof Error ? {} : parsedParams\n const validationError = parsedParams instanceof Error ? parsedParams.message : undefined\n const isValid = !validationError\n\n return {\n parsed: params,\n raw: value,\n valid: isValid,\n error: validationError,\n }\n}\n","import {type ListenOptions} from '@sanity/client'\nimport {uuid} from '@sanity/uuid' // Import the UUID library\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {map, startWith} from 'rxjs/operators'\nimport {type KeyValueStoreValue, useClient, useCurrentUser, useKeyValueStore} from 'sanity'\n\nimport {DEFAULT_API_VERSION} from '../apiVersions'\n\nconst STORED_QUERIES_NAMESPACE = 'studio.vision-tool.saved-queries'\nconst SHARED_QUERY_DOCUMENT_TYPE = 'vision.sharedQuery'\nconst SHARED_QUERIES_QUERY = `*[_type == $sharedQueryType]{\n _id,\n authorId,\n savedAt,\n title,\n url\n} | order(savedAt desc)`\nconst SHARED_QUERY_LISTEN_OPTIONS: ListenOptions = {\n events: ['welcome', 'mutation', 'reconnect'],\n includeResult: true,\n visibility: 'query',\n}\n\nexport interface QueryConfig {\n _key: string\n url: string\n savedAt: string\n title?: string\n shared?: boolean\n authorId?: string\n isOwnedByCurrentUser?: boolean\n}\n\nexport interface StoredQueries {\n queries: QueryConfig[]\n}\n\nconst defaultValue = {\n queries: [],\n}\nconst keyValueStoreKey = STORED_QUERIES_NAMESPACE\n\ninterface SharedQueryDocument {\n _id: string\n _type?: string\n authorId: string\n savedAt: string\n title?: string\n url: string\n}\n\nexport function useSavedQueries(): {\n queries: QueryConfig[]\n saveQuery: (query: Omit<QueryConfig, '_key'>) => Promise<void>\n updateQuery: (query: QueryConfig) => Promise<void>\n deleteQuery: (key: string) => Promise<void>\n saving: boolean\n deleting: string[]\n saveQueryError: Error | undefined\n deleteQueryError: Error | undefined\n error: Error | undefined\n} {\n const keyValueStore = useKeyValueStore()\n const workspaceClient = useClient({apiVersion: DEFAULT_API_VERSION})\n const currentUser = useCurrentUser()\n\n const [value, setValue] = useState<StoredQueries>(defaultValue)\n const [sharedQueries, setSharedQueries] = useState<QueryConfig[]>([])\n const [saving, setSaving] = useState(false)\n const [deleting, setDeleting] = useState<string[]>([])\n const [saveQueryError, setSaveQueryError] = useState<Error | undefined>()\n const [deleteQueryError, setDeleteQueryError] = useState<Error | undefined>()\n const [error, setError] = useState<Error | undefined>()\n\n const personalQueries = useMemo(() => {\n return keyValueStore.getKey(keyValueStoreKey)\n }, [keyValueStore])\n\n const mapSharedQueries = useCallback(\n (docs: SharedQueryDocument[]): QueryConfig[] => {\n const currentUserId = currentUser?.id\n\n return docs.map((doc) => ({\n _key: doc._id,\n authorId: doc.authorId,\n isOwnedByCurrentUser: doc.authorId === currentUserId,\n savedAt: doc.savedAt,\n shared: true,\n title: doc.title,\n url: doc.url,\n }))\n },\n [currentUser],\n )\n\n useEffect(() => {\n const sub = personalQueries\n .pipe(\n startWith(defaultValue as any),\n map((data: StoredQueries) => {\n if (!data) {\n return defaultValue\n }\n return data\n }),\n )\n .subscribe({\n next: setValue,\n error: (err) => setError(err as Error),\n })\n\n return () => sub?.unsubscribe()\n }, [personalQueries])\n\n useEffect(() => {\n let cancelled = false\n\n const fetchSharedQueries = async () => {\n const docs = await workspaceClient.fetch<SharedQueryDocument[]>(SHARED_QUERIES_QUERY, {\n sharedQueryType: SHARED_QUERY_DOCUMENT_TYPE,\n })\n const nextDocs = docs || []\n if (!cancelled) {\n setSharedQueries(mapSharedQueries(nextDocs))\n }\n }\n\n void fetchSharedQueries().catch((err) => {\n if (!cancelled) {\n setError(err as Error)\n }\n })\n\n const sub = workspaceClient.observable\n .listen(\n `*[_type == $sharedQueryType]`,\n {\n sharedQueryType: SHARED_QUERY_DOCUMENT_TYPE,\n },\n SHARED_QUERY_LISTEN_OPTIONS,\n )\n .subscribe({\n next: () => {\n void fetchSharedQueries().catch((err) => {\n if (!cancelled) {\n setError(err as Error)\n }\n })\n },\n error: (err) => {\n if (!cancelled) {\n setError(err as Error)\n }\n },\n })\n\n return () => {\n cancelled = true\n sub.unsubscribe()\n }\n }, [workspaceClient, mapSharedQueries])\n\n const queries = useMemo(() => {\n return [...sharedQueries, ...value.queries].sort((a, b) => {\n return new Date(b.savedAt || 0).getTime() - new Date(a.savedAt || 0).getTime()\n })\n }, [sharedQueries, value.queries])\n\n const saveQuery = useCallback(\n async (query: Omit<QueryConfig, '_key'>) => {\n setSaving(true)\n setSaveQueryError(undefined)\n\n if (query.shared) {\n if (!currentUser?.id) {\n const authError = new Error('No current user found. Unable to save shared query.')\n setSaveQueryError(authError)\n setSaving(false)\n throw authError\n }\n\n try {\n const createdDoc = (await workspaceClient.create({\n _type: SHARED_QUERY_DOCUMENT_TYPE,\n authorId: currentUser.id,\n savedAt: query.savedAt,\n title: query.title,\n url: query.url,\n })) as SharedQueryDocument\n setSharedQueries((prev) => [...mapSharedQueries([createdDoc]), ...prev])\n setSaving(false)\n return\n } catch (err) {\n const saveError = err instanceof Error ? err : new Error(String(err))\n setSaveQueryError(saveError)\n setSaving(false)\n throw saveError\n }\n }\n\n try {\n const newQuery = {...query, _key: uuid()} // Add a unique _key to the query\n const newQueries = [newQuery, ...value.queries]\n setValue({queries: newQueries})\n await keyValueStore.setKey(keyValueStoreKey, {\n queries: newQueries,\n } as unknown as KeyValueStoreValue)\n } catch (err) {\n const saveError = err instanceof Error ? err : new Error(String(err))\n setSaveQueryError(saveError)\n setSaving(false)\n throw saveError\n }\n setSaving(false)\n },\n [currentUser, workspaceClient, keyValueStore, mapSharedQueries, value.queries],\n )\n\n const updateQuery = useCallback(\n async (query: QueryConfig) => {\n setSaving(true)\n setSaveQueryError(undefined)\n\n if (query.shared) {\n if (!currentUser?.id || query.authorId !== currentUser.id) {\n const authError = new Error('Only the author can update a shared query.')\n setSaveQueryError(authError)\n setSaving(false)\n throw authError\n }\n\n try {\n const updatedDoc = (await workspaceClient\n .patch(query._key)\n .set({\n savedAt: query.savedAt,\n title: query.title,\n url: query.url,\n })\n .commit()) as SharedQueryDocument\n\n const [updatedSharedQuery] = mapSharedQueries([updatedDoc])\n setSharedQueries((prev) =>\n prev.map((existingQuery) =>\n existingQuery._key === query._key ? updatedSharedQuery : existingQuery,\n ),\n )\n setSaving(false)\n return\n } catch (err) {\n const updateError = err instanceof Error ? err : new Error(String(err))\n setSaveQueryError(updateError)\n setSaving(false)\n throw updateError\n }\n }\n\n try {\n const updatedQueries = value.queries.map((q) =>\n q._key === query._key ? {...q, ...query} : q,\n )\n setValue({queries: updatedQueries})\n await keyValueStore.setKey(keyValueStoreKey, {\n queries: updatedQueries,\n } as unknown as KeyValueStoreValue)\n } catch (err) {\n const updateError = err instanceof Error ? err : new Error(String(err))\n setSaveQueryError(updateError)\n setSaving(false)\n throw updateError\n }\n setSaving(false)\n },\n [workspaceClient, currentUser, keyValueStore, mapSharedQueries, value.queries],\n )\n\n const deleteQuery = useCallback(\n async (key: string) => {\n setDeleting((prev) => [...prev, key])\n setDeleteQueryError(undefined)\n const clearDeleting = () => setDeleting((prev) => prev.filter((k) => k !== key))\n\n const sharedQuery = sharedQueries.find((query) => query._key === key && query.shared)\n if (sharedQuery) {\n if (!currentUser?.id || sharedQuery.authorId !== currentUser.id) {\n setDeleteQueryError(new Error('Only the author can delete a shared query.'))\n clearDeleting()\n return\n }\n\n try {\n await workspaceClient.delete(key)\n setSharedQueries((prev) => prev.filter((query) => query._key !== key))\n } catch (err) {\n setDeleteQueryError(err as Error)\n }\n clearDeleting()\n return\n }\n\n try {\n const filteredQueries = value.queries.filter((q) => q._key !== key)\n setValue({queries: filteredQueries})\n await keyValueStore.setKey(keyValueStoreKey, {\n queries: filteredQueries,\n } as unknown as KeyValueStoreValue)\n } catch (err) {\n setDeleteQueryError(err as Error)\n }\n clearDeleting()\n },\n [workspaceClient, currentUser, keyValueStore, sharedQueries, value.queries],\n )\n\n return {\n queries,\n saveQuery,\n updateQuery,\n deleteQuery,\n saving,\n deleting,\n saveQueryError,\n deleteQueryError,\n error,\n }\n}\n","import {style} from '@vanilla-extract/css'\n\nexport const fixedHeader = style({\n flexShrink: 0,\n background: 'var(--card-bg-color)',\n zIndex: 1,\n})\n\nexport const scrollContainer = style({\n minHeight: 0,\n width: '100%',\n minWidth: 0,\n})\n\nexport const queryList = style({\n minHeight: 0,\n})\n","import {AddIcon} from '@sanity/icons/Add'\nimport {LockIcon} from '@sanity/icons/Lock'\nimport {SearchIcon} from '@sanity/icons/Search'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {UnpublishIcon} from '@sanity/icons/Unpublish'\nimport {UsersIcon} from '@sanity/icons/Users'\nimport {\n Badge,\n Box,\n Button,\n Card,\n Code,\n Dialog,\n Flex,\n Menu,\n MenuButton,\n MenuItem,\n Stack,\n Tab,\n TabList,\n Text,\n TextInput,\n Tooltip,\n useToast,\n} from '@sanity/ui'\nimport isEqual from 'lodash-es/isEqual.js'\nimport {type ComponentProps, type ReactElement, useCallback, useState} from 'react'\nimport {ContextMenuButton, UserAvatar, useDateTimeFormat, useTranslation} from 'sanity'\n\nimport {type QueryConfig, useSavedQueries} from '../hooks/useSavedQueries'\nimport {visionLocaleNamespace} from '../i18n'\nimport {fixedHeader, queryList, scrollContainer} from './QueryRecall.css'\nimport {type ParsedUrlState} from './VisionGui'\nimport {StyledLabel} from './VisionGui.styled'\n\nfunction FixedHeader(props: ComponentProps<typeof Stack>) {\n return <Stack {...props} className={fixedHeader} />\n}\n\nfunction ScrollContainer(props: ComponentProps<typeof Flex>) {\n return (\n <Flex {...props} direction=\"column\" flex={1} overflow=\"hidden\" className={scrollContainer} />\n )\n}\n\nfunction QueryList(props: ComponentProps<typeof Box>) {\n return <Box {...props} flex={1} overflow=\"auto\" className={queryList} />\n}\n\nexport function QueryRecall({\n url,\n getStateFromUrl,\n setStateFromParsedUrl,\n currentQuery,\n currentParams,\n generateUrl,\n compactMode = false,\n}: {\n url?: string\n getStateFromUrl: (data: string) => ParsedUrlState | null\n setStateFromParsedUrl: (parsedUrlObj: ParsedUrlState) => void\n currentQuery: string\n currentParams: Record<string, unknown>\n generateUrl: (query: string, params: Record<string, unknown>) => string\n compactMode?: boolean\n}): ReactElement {\n type QueryFilter = 'all' | 'personal' | 'shared'\n const toast = useToast()\n const {saveQuery, updateQuery, queries, deleteQuery, saving, deleting} = useSavedQueries()\n const {t} = useTranslation(visionLocaleNamespace)\n const formatDate = useDateTimeFormat({\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n })\n const [editingKey, setEditingKey] = useState<string | null>(null)\n const [editingTitle, setEditingTitle] = useState('')\n const [optimisticTitles, setOptimisticTitles] = useState<Record<string, string>>({})\n const [searchQuery, setSearchQuery] = useState('')\n const [queryFilter, setQueryFilter] = useState<QueryFilter>('all')\n const [selectedUrl, setSelectedUrl] = useState<string | undefined>(url)\n const [pendingUnshareKeys, setPendingUnshareKeys] = useState<string[]>([])\n const [shareDialogQuery, setShareDialogQuery] = useState<QueryConfig | null>(null)\n\n const handleSave = useCallback(async () => {\n // Generate the correct URL first\n const newUrl = generateUrl(currentQuery, currentParams)\n\n // Check for duplicates by comparing query content and params\n const isDuplicate = queries?.some((q) => {\n if (q.shared) return false\n const savedQueryObj = getStateFromUrl(q.url)\n return (\n savedQueryObj &&\n savedQueryObj.query === currentQuery &&\n isEqual(savedQueryObj.params, currentParams)\n )\n })\n\n if (isDuplicate) {\n const duplicateQuery = queries?.find((q) => {\n if (q.shared) return false\n const savedQueryObj = getStateFromUrl(q.url)\n return (\n savedQueryObj &&\n savedQueryObj.query === currentQuery &&\n isEqual(savedQueryObj.params, currentParams)\n )\n })\n toast.push({\n closable: true,\n status: 'warning',\n title: t('save-query.already-saved'),\n description: `${duplicateQuery?.title} - ${formatDate.format(new Date(duplicateQuery?.savedAt || ''))}`,\n })\n return\n }\n\n if (!newUrl) return\n\n try {\n await saveQuery({\n shared: false,\n url: newUrl,\n savedAt: new Date().toISOString(),\n title: t('label.untitled-query'),\n })\n setSelectedUrl(newUrl)\n toast.push({\n closable: true,\n status: 'success',\n title: t('save-query.success'),\n })\n } catch (err) {\n toast.push({\n closable: true,\n status: 'error',\n title: t('save-query.error'),\n description: err instanceof Error ? err.message : String(err),\n })\n }\n }, [\n queries,\n toast,\n t,\n currentQuery,\n currentParams,\n getStateFromUrl,\n generateUrl,\n formatDate,\n saveQuery,\n ])\n\n const handleShareQuery = useCallback((query: QueryConfig) => {\n setShareDialogQuery(query)\n }, [])\n\n const handleConfirmShareQuery = useCallback(async () => {\n if (!shareDialogQuery) return\n\n const sharedQueryKey = shareDialogQuery._key\n const sharedQueryUrl = shareDialogQuery.url\n const sharedQueryTitle = shareDialogQuery.title || t('label.untitled-query')\n\n try {\n await saveQuery({\n shared: true,\n title: sharedQueryTitle,\n url: sharedQueryUrl,\n savedAt: new Date().toISOString(),\n })\n\n await deleteQuery(sharedQueryKey)\n toast.push({\n closable: true,\n status: 'success',\n title: t('save-query.shared-success'),\n })\n } catch (err) {\n toast.push({\n closable: true,\n status: 'error',\n title: t('save-query.error'),\n description: err instanceof Error ? err.message : String(err),\n })\n }\n setShareDialogQuery(null)\n }, [deleteQuery, saveQuery, shareDialogQuery, t, toast])\n\n const handleUnshareQuery = useCallback(\n async (query: QueryConfig) => {\n setPendingUnshareKeys((prev) => [...prev, query._key])\n const clearPending = () =>\n setPendingUnshareKeys((prev) => prev.filter((key) => key !== query._key))\n const nextQueryObj = getStateFromUrl(query.url)\n const duplicatePersonalQuery = queries?.find((existingQuery) => {\n if (existingQuery._key === query._key) return false\n if (existingQuery.shared) return false\n const existingQueryObj = getStateFromUrl(existingQuery.url)\n return (\n nextQueryObj &&\n existingQueryObj &&\n existingQueryObj.query === nextQueryObj.query &&\n isEqual(existingQueryObj.params, nextQueryObj.params)\n )\n })\n const unsharedQueryTitle = query.title || t('label.untitled-query')\n\n if (duplicatePersonalQuery) {\n toast.push({\n closable: true,\n status: 'warning',\n title: t('save-query.already-saved'),\n description: `${duplicatePersonalQuery.title} - ${formatDate.format(\n new Date(duplicatePersonalQuery.savedAt || ''),\n )}`,\n })\n clearPending()\n return\n }\n\n try {\n await saveQuery({\n shared: false,\n title: unsharedQueryTitle,\n url: query.url,\n savedAt: new Date().toISOString(),\n })\n\n await deleteQuery(query._key)\n toast.push({\n closable: true,\n status: 'success',\n title: t('save-query.unshared-success'),\n })\n clearPending()\n } catch (err) {\n toast.push({\n closable: true,\n status: 'error',\n title: t('save-query.error'),\n description: err instanceof Error ? err.message : String(err),\n })\n clearPending()\n }\n },\n [deleteQuery, formatDate, getStateFromUrl, queries, saveQuery, t, toast],\n )\n\n const handleTitleSave = useCallback(\n async (query: QueryConfig, newTitle: string) => {\n setEditingKey(null)\n setOptimisticTitles((prev) => ({...prev, [query._key]: newTitle}))\n\n try {\n await updateQuery({\n ...query,\n title: newTitle,\n })\n // Clear optimistic title on success\n setOptimisticTitles((prev) => {\n const next = {...prev}\n delete next[query._key]\n return next\n })\n } catch (err) {\n // Clear optimistic title on error\n setOptimisticTitles((prev) => {\n const next = {...prev}\n delete next[query._key]\n return next\n })\n toast.push({\n closable: true,\n status: 'error',\n title: t('save-query.error'),\n description: err.message,\n })\n }\n },\n [updateQuery, toast, t],\n )\n\n const handleUpdate = useCallback(\n async (query: QueryConfig) => {\n const newUrl = generateUrl(currentQuery, currentParams)\n\n // Check for duplicates by comparing query content and params\n const isDuplicate = queries?.some((q) => {\n // Skip the current query when checking for duplicates\n if (q._key === query._key) return false\n const savedQueryObj = getStateFromUrl(q.url)\n return (\n savedQueryObj &&\n savedQueryObj.query === currentQuery &&\n isEqual(savedQueryObj.params, currentParams)\n )\n })\n\n if (isDuplicate) {\n const duplicateQuery = queries?.find((q) => {\n if (q._key === query._key) return false\n const savedQueryObj = getStateFromUrl(q.url)\n return (\n savedQueryObj &&\n savedQueryObj.query === currentQuery &&\n isEqual(savedQueryObj.params, currentParams)\n )\n })\n toast.push({\n closable: true,\n status: 'warning',\n title: t('save-query.already-saved'),\n description: `${duplicateQuery?.title} - ${formatDate.format(\n new Date(duplicateQuery?.savedAt || ''),\n )}`,\n })\n return\n }\n\n try {\n await updateQuery({\n ...query,\n url: newUrl,\n savedAt: new Date().toISOString(),\n })\n setSelectedUrl(newUrl)\n toast.push({\n closable: true,\n status: 'success',\n title: t('save-query.success'),\n })\n } catch (err) {\n toast.push({\n closable: true,\n status: 'error',\n title: t('save-query.error'),\n description: err.message,\n })\n }\n },\n [\n currentQuery,\n currentParams,\n formatDate,\n generateUrl,\n updateQuery,\n toast,\n t,\n queries,\n getStateFromUrl,\n ],\n )\n\n const visibleQueries = queries?.filter((q) => !pendingUnshareKeys.includes(q._key))\n\n const filteredQueries = visibleQueries?.filter((q) => {\n const matchesSearch = (q.title ?? '').toLowerCase().includes(searchQuery.toLowerCase())\n const matchesFilter =\n queryFilter === 'all' ||\n (queryFilter === 'personal' && !q.shared) ||\n (queryFilter === 'shared' && q.shared)\n return matchesSearch && matchesFilter\n })\n\n return (\n <ScrollContainer>\n <FixedHeader space={3}>\n <Flex padding={3} paddingTop={2} paddingBottom={0} justify=\"space-between\" align=\"center\">\n <StyledLabel muted>{t('label.saved-queries')}</StyledLabel>\n <Button\n aria-label={t('action.save-query')}\n icon={AddIcon}\n disabled={saving}\n onClick={() => void handleSave()}\n mode=\"bleed\"\n />\n </Flex>\n <Box padding={3} paddingTop={0}>\n <TextInput\n placeholder={t('label.search-queries')}\n icon={SearchIcon}\n value={searchQuery}\n onChange={(event) => setSearchQuery(event.currentTarget.value)}\n />\n </Box>\n <Box paddingX={3} paddingBottom={2}>\n <TabList space={1}>\n <Tab\n id=\"query-filter-all\"\n aria-controls=\"vision-query-recall-list\"\n label={t('label.all')}\n selected={queryFilter === 'all'}\n onClick={() => setQueryFilter('all')}\n />\n <Tab\n id=\"query-filter-personal\"\n aria-controls=\"vision-query-recall-list\"\n label={t('label.personal')}\n selected={queryFilter === 'personal'}\n onClick={() => setQueryFilter('personal')}\n />\n <Tab\n id=\"query-filter-shared\"\n aria-controls=\"vision-query-recall-list\"\n label={t('label.shared')}\n selected={queryFilter === 'shared'}\n onClick={() => setQueryFilter('shared')}\n />\n </TabList>\n </Box>\n </FixedHeader>\n <QueryList id=\"vision-query-recall-list\">\n <Stack paddingY={3}>\n {filteredQueries?.map((q, index) => {\n const queryObj = getStateFromUrl(q.url)\n const fullQueryPreview = queryObj?.query || ''\n const shortQueryPreview = fullQueryPreview.split('{')[0]\n const isSelected = selectedUrl === q.url\n const canMutateQuery = !q.shared || q.isOwnedByCurrentUser\n\n // Compare against current live state\n const areQueriesEqual =\n queryObj && currentQuery === queryObj.query && isEqual(currentParams, queryObj.params)\n\n const isEdited = isSelected && !areQueriesEqual && canMutateQuery\n return (\n <Card\n key={q._key}\n paddingX={compactMode ? 3 : 4}\n paddingY={compactMode ? 3 : 4}\n tone=\"default\"\n onClick={(event) => {\n const target = event.target as HTMLElement | null\n if (target?.closest('[data-query-actions=\"true\"]')) {\n return\n }\n setSelectedUrl(q.url) // Update the selected query immediately\n const parsedUrl = getStateFromUrl(q.url)\n if (parsedUrl) {\n setStateFromParsedUrl(parsedUrl)\n }\n }}\n style={{\n borderTop: index === 0 ? '1px solid var(--card-border-color)' : undefined,\n position: 'relative',\n borderBottom: '1px solid var(--card-border-color)',\n borderLeft: isSelected\n ? '2px solid var(--card-muted-fg-color)'\n : '2px solid transparent',\n cursor: 'pointer',\n }}\n >\n <Stack space={compactMode ? 2 : 3}>\n <Flex justify=\"space-between\" align={'center'} style={{minHeight: '25px'}}>\n <Flex align=\"center\" gap={2} paddingRight={1} style={{minWidth: 0, flex: 1}}>\n {editingKey === q._key ? (\n <TextInput\n value={editingTitle}\n onChange={(event) => setEditingTitle(event.currentTarget.value)}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n void handleTitleSave(q, editingTitle)\n } else if (event.key === 'Escape') {\n setEditingKey(null)\n }\n }}\n onBlur={() => handleTitleSave(q, editingTitle)}\n autoFocus\n style={{maxWidth: '170px', height: '24px'}}\n />\n ) : (\n <Text\n weight=\"bold\"\n size={compactMode ? 2 : 3}\n textOverflow=\"ellipsis\"\n style={{\n maxWidth: compactMode ? '180px' : '220px',\n cursor: canMutateQuery ? 'pointer' : 'default',\n padding: '2px 0',\n }}\n title={\n optimisticTitles[q._key] ||\n q.title ||\n q._key.slice(q._key.length - 5, q._key.length)\n }\n onClick={\n canMutateQuery\n ? () => {\n setEditingKey(q._key)\n setEditingTitle(q.title || q._key.slice(0, 5))\n }\n : undefined\n }\n >\n {optimisticTitles[q._key] ||\n q.title ||\n q._key.slice(q._key.length - 5, q._key.length)}\n </Text>\n )}\n {isEdited && (\n <Box\n style={{\n width: '6px',\n height: '6px',\n borderRadius: '50%',\n backgroundColor: 'var(--card-focus-ring-color)',\n }}\n />\n )}\n </Flex>\n <Flex align=\"center\" gap={2}>\n <Box\n data-query-actions=\"true\"\n style={{\n width: '25px',\n height: '25px',\n display: 'flex',\n alignItems: 'center',\n }}\n >\n {(!q.shared || canMutateQuery) && (\n <MenuButton\n button={<ContextMenuButton />}\n id={`${q._key}-menu`}\n menu={\n <Menu>\n {!q.shared && (\n <MenuItem\n icon={UsersIcon}\n padding={3}\n text={t('label.share')}\n onClick={(event) => {\n event.stopPropagation()\n handleShareQuery(q)\n }}\n />\n )}\n {q.shared && canMutateQuery && (\n <MenuItem\n icon={UnpublishIcon}\n padding={3}\n text={t('action.unshare')}\n onClick={(event) => {\n event.stopPropagation()\n void handleUnshareQuery(q)\n }}\n />\n )}\n {canMutateQuery && (\n <MenuItem\n tone=\"critical\"\n padding={3}\n icon={TrashIcon}\n text={t('action.delete')}\n onClick={(event) => {\n event.stopPropagation()\n void deleteQuery(q._key)\n }}\n />\n )}\n </Menu>\n }\n popover={{portal: true, placement: 'bottom-end', tone: 'default'}}\n />\n )}\n </Box>\n </Flex>\n </Flex>\n\n {fullQueryPreview ? (\n <Tooltip\n content={\n <Box\n padding={2}\n style={{maxWidth: '420px', maxHeight: '220px', overflow: 'auto'}}\n >\n <Code size={1}>{fullQueryPreview}</Code>\n </Box>\n }\n placement=\"top\"\n portal\n >\n <Code size={1}>{shortQueryPreview}</Code>\n </Tooltip>\n ) : (\n <Code />\n )}\n\n {compactMode ? (\n <Stack space={1} style={{paddingTop: 0, minHeight: '30px'}}>\n <Flex align=\"center\" gap={2} style={{minHeight: '18px'}}>\n <Box\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '17px',\n height: '17px',\n }}\n >\n {q.shared ? (\n <UserAvatar size={0} user={q.authorId || ''} withTooltip />\n ) : (\n <Box\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n lineHeight: 0,\n color: 'var(--card-muted-fg-color)',\n }}\n >\n <LockIcon />\n </Box>\n )}\n </Box>\n <Badge\n mode=\"outline\"\n tone={q.shared ? 'primary' : 'default'}\n style={{\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n {q.shared ? t('label.shared') : t('label.personal')}\n </Badge>\n </Flex>\n <Text size={1} muted>\n {formatDate.format(new Date(q.savedAt || ''))}\n </Text>\n </Stack>\n ) : (\n <Flex align=\"center\" gap={2} style={{paddingTop: '2px', minHeight: '20px'}}>\n <Box\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '17px',\n height: '17px',\n }}\n >\n {q.shared ? (\n <UserAvatar size={0} user={q.authorId || ''} withTooltip />\n ) : (\n <Box\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n lineHeight: 0,\n color: 'var(--card-muted-fg-color)',\n }}\n >\n <LockIcon />\n </Box>\n )}\n </Box>\n <Badge\n mode=\"outline\"\n tone={q.shared ? 'primary' : 'default'}\n style={{\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n {q.shared ? t('label.shared') : t('label.personal')}\n </Badge>\n <Text size={1} muted>\n •\n </Text>\n <Text size={1} muted>\n {formatDate.format(new Date(q.savedAt || ''))}\n </Text>\n </Flex>\n )}\n\n {isEdited && (\n <Button\n mode=\"ghost\"\n tone=\"default\"\n padding={2}\n style={{\n height: '24px',\n position: 'absolute',\n right: '16px',\n bottom: '16px',\n fontSize: '12px',\n }}\n text={t('action.update')}\n onClick={(e) => {\n e.stopPropagation()\n void handleUpdate(q)\n }}\n />\n )}\n </Stack>\n </Card>\n )\n })}\n </Stack>\n </QueryList>\n {shareDialogQuery && (\n <Dialog\n id=\"vision-query-recall-share-dialog\"\n width={1}\n header={t('label.share')}\n onClose={() => setShareDialogQuery(null)}\n footer={\n <Flex justify=\"flex-end\" gap={3} padding={3} align=\"center\">\n <Button\n mode=\"bleed\"\n padding={2}\n text={t('action.query-cancel')}\n onClick={() => setShareDialogQuery(null)}\n />\n <Button\n padding={2}\n tone=\"primary\"\n text={t('action.save-shared-query')}\n onClick={() => void handleConfirmShareQuery()}\n />\n </Flex>\n }\n >\n <Box padding={4}>\n <Text size={2}>{t('save-query.share-warning')}</Text>\n </Box>\n </Dialog>\n )}\n </ScrollContainer>\n )\n}\n","import {useEffect, useState} from 'react'\n\ninterface PaneSizeOptions {\n defaultSize: number\n size?: number\n allowResize: boolean\n minSize: number\n maxSize: number\n}\n\ninterface RootSize {\n width: number\n height: number\n}\nfunction narrowBreakpoint(): boolean {\n return typeof window !== 'undefined' && window.innerWidth > 600\n}\n\nfunction calculatePaneSizeOptions(height: number | undefined): PaneSizeOptions {\n let rootHeight = height\n\n if (!rootHeight) {\n // Initial root height without header\n rootHeight =\n typeof window !== 'undefined' && typeof document !== 'undefined'\n ? document.body.getBoundingClientRect().height - 60\n : 0\n }\n return {\n defaultSize: rootHeight / (narrowBreakpoint() ? 2 : 1),\n size: rootHeight > 550 ? undefined : rootHeight * 0.4,\n allowResize: rootHeight > 550,\n minSize: Math.min(170, Math.max(170, rootHeight / 2)),\n maxSize: rootHeight > 650 ? rootHeight * 0.7 : rootHeight * 0.6,\n }\n}\n\nexport function usePaneSize({\n visionRootRef,\n}: {\n visionRootRef: React.RefObject<HTMLDivElement | null>\n}) {\n const [rootSize, setRootSize] = useState<RootSize>(() => ({\n width: typeof window !== 'undefined' ? window.innerWidth : 1000,\n height: typeof window !== 'undefined' ? window.innerHeight : 800,\n }))\n const [isNarrowBreakpoint, setIsNarrowBreakpoint] = useState(() => narrowBreakpoint())\n const [paneSizeOptions, setPaneSizeOptions] = useState<PaneSizeOptions>(() =>\n calculatePaneSizeOptions(undefined),\n )\n\n useEffect(() => {\n if (!visionRootRef.current) {\n return undefined\n }\n const handleResize = (entries: ResizeObserverEntry[]) => {\n const entry = entries?.[0]\n if (entry) {\n setRootSize({width: entry.contentRect.width, height: entry.contentRect.height})\n setIsNarrowBreakpoint(entry.contentRect.width > 600)\n setPaneSizeOptions(calculatePaneSizeOptions(entry.contentRect.height))\n }\n }\n const resizeObserver = new ResizeObserver(handleResize)\n resizeObserver.observe(visionRootRef.current)\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [visionRootRef])\n\n return {paneSizeOptions, isNarrowBreakpoint, rootSize}\n}\n","import {PlayIcon} from '@sanity/icons/Play'\nimport {StopIcon} from '@sanity/icons/Stop'\nimport {Box, Button, Card, Flex, Hotkeys, Text, Tooltip} from '@sanity/ui'\nimport {useTranslation} from 'sanity'\n\nimport {visionLocaleNamespace} from '../i18n'\nimport {ControlsContainer} from './VisionGui.styled'\n\nexport interface VisionGuiControlsProps {\n hasValidParams: boolean\n queryInProgress: boolean\n listenInProgress: boolean\n onQueryExecution: () => void\n onListenExecution: () => void\n}\n\n/**\n * Vision GUI controls\n * To handle query and listen execution.\n */\nexport function VisionGuiControls({\n hasValidParams,\n listenInProgress,\n queryInProgress,\n onQueryExecution,\n onListenExecution,\n}: VisionGuiControlsProps) {\n const {t} = useTranslation(visionLocaleNamespace)\n\n return (\n <ControlsContainer>\n <Card padding={3} paddingX={3}>\n <Tooltip\n content={\n <Card radius={4}>\n <Text size={1} muted>\n {t('params.error.params-invalid-json')}\n </Text>\n </Card>\n }\n placement=\"top\"\n disabled={hasValidParams}\n portal\n >\n <Flex justify=\"space-evenly\">\n <Box flex={1}>\n <Tooltip\n content={\n <Card radius={4}>\n <Hotkeys keys={['Ctrl', 'Enter']} />\n </Card>\n }\n placement=\"top\"\n portal\n >\n <Button\n width=\"fill\"\n onClick={onQueryExecution}\n type=\"button\"\n icon={queryInProgress ? StopIcon : PlayIcon}\n disabled={listenInProgress || !hasValidParams}\n tone={queryInProgress ? 'positive' : 'primary'}\n text={queryInProgress ? t('action.query-cancel') : t('action.query-execute')}\n />\n </Tooltip>\n </Box>\n <Box flex={1} marginLeft={3}>\n <Button\n width=\"fill\"\n onClick={onListenExecution}\n type=\"button\"\n icon={listenInProgress ? StopIcon : PlayIcon}\n text={listenInProgress ? t('action.listen-cancel') : t('action.listen-execute')}\n mode=\"ghost\"\n disabled={!hasValidParams}\n tone={listenInProgress ? 'positive' : 'default'}\n />\n </Box>\n </Flex>\n </Tooltip>\n </Card>\n </ControlsContainer>\n )\n}\n","import {style} from '@vanilla-extract/css'\n\nexport const perspectivePopoverContent = style({\n /* This limits the width of the popover content */\n maxWidth: '240px',\n})\n\nexport const perspectivePopoverLink = style({\n cursor: 'pointer',\n marginRight: 'auto',\n})\n\nexport const dot = style({\n width: '4px',\n height: '4px',\n borderRadius: '3px',\n boxShadow: '0 0 0 1px var(--card-bg-color)',\n})\n","import {HelpCircleIcon} from '@sanity/icons/HelpCircle'\nimport {\n Badge,\n Box,\n Button,\n Card,\n type CardTone,\n Inline,\n Popover,\n Stack,\n Text,\n useClickOutsideEvent,\n} from '@sanity/ui'\nimport {type ComponentProps, useCallback, useRef, useState} from 'react'\nimport {Translate, useTranslation} from 'sanity'\n\nimport {visionLocaleNamespace} from '../i18n'\nimport {dot, perspectivePopoverContent, perspectivePopoverLink} from './PerspectivePopover.css'\n\nfunction PerspectivePopoverContent(props: ComponentProps<typeof Box>) {\n return <Box {...props} className={perspectivePopoverContent} />\n}\n\nfunction PerspectivePopoverLink(props: ComponentProps<'a'>) {\n return <a {...props} className={perspectivePopoverLink} />\n}\n\nfunction Dot({tone}: {tone: CardTone}) {\n return <div className={dot} style={{backgroundColor: `var(--card-badge-${tone}-dot-color)`}} />\n}\n\nconst SHOW_DEFAULT_PERSPECTIVE_NOTIFICATION = false\n\nexport function PerspectivePopover() {\n const [open, setOpen] = useState(false)\n const buttonRef = useRef<HTMLButtonElement | null>(null)\n const popoverRef = useRef<HTMLDivElement | null>(null)\n\n const handleClick = useCallback(() => setOpen((o) => !o), [])\n\n const {t} = useTranslation(visionLocaleNamespace)\n\n useClickOutsideEvent(\n () => setOpen(false),\n () => [buttonRef.current, popoverRef.current],\n )\n\n return (\n <Popover\n content={\n <PerspectivePopoverContent>\n <Stack space={4}>\n <Inline space={2}>\n <Text weight=\"medium\">{t('settings.perspectives.title')}</Text>\n </Inline>\n\n <Card>\n <Text muted>{t('settings.perspectives.description')}</Text>\n </Card>\n <Card>\n <Stack space={2}>\n <Box>\n <Badge tone=\"primary\">{t('label.new')}</Badge>\n </Box>\n <Text muted>\n <Translate\n t={t}\n i18nKey=\"settings.perspective.preview-drafts-renamed-to-drafts.description\"\n />\n </Text>\n </Stack>\n </Card>\n {SHOW_DEFAULT_PERSPECTIVE_NOTIFICATION ? (\n <Card>\n <Badge tone=\"caution\">{t('label.new')}</Badge>\n <Card>\n <Text muted>\n <Translate t={t} i18nKey=\"settings.perspectives.new-default.description\" />\n </Text>\n </Card>\n </Card>\n ) : null}\n\n <Card>\n <Text>\n <PerspectivePopoverLink\n href=\"https://www.sanity.io/docs/perspectives\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {t('settings.perspectives.action.docs-link')} →\n </PerspectivePopoverLink>\n </Text>\n </Card>\n </Stack>\n </PerspectivePopoverContent>\n }\n placement=\"bottom-start\"\n portal\n padding={3}\n ref={popoverRef}\n open={open}\n >\n <Button\n icon={HelpCircleIcon}\n mode=\"bleed\"\n padding={2}\n paddingRight={1}\n tone=\"primary\"\n fontSize={1}\n ref={buttonRef}\n onClick={handleClick}\n selected={open}\n >\n <Dot tone={SHOW_DEFAULT_PERSPECTIVE_NOTIFICATION ? 'caution' : 'primary'} />\n </Button>\n </Popover>\n )\n}\n","import {CopyIcon} from '@sanity/icons/Copy'\nimport {Box, Button, Card, Flex, Grid, Inline, Select, Stack, TextInput, Tooltip} from '@sanity/ui'\nimport {\n type ChangeEvent,\n type ComponentType,\n Fragment,\n type RefObject,\n useCallback,\n useMemo,\n useRef,\n} from 'react'\nimport {type PerspectiveContextValue, type TFunction, usePerspective, useTranslation} from 'sanity'\n\nimport {API_VERSIONS} from '../apiVersions'\nimport {visionLocaleNamespace} from '../i18n'\nimport {\n hasPinnedPerspective,\n SUPPORTED_PERSPECTIVES,\n type SupportedPerspective,\n} from '../perspectives'\nimport {PerspectivePopover} from './PerspectivePopover'\nimport {Header, QueryCopyLink, StyledLabel} from './VisionGui.styled'\n\nconst PinnedReleasePerspectiveOption: ComponentType<{\n pinnedPerspective: PerspectiveContextValue\n t: TFunction\n}> = ({pinnedPerspective, t}) => {\n const name =\n typeof pinnedPerspective.selectedPerspective === 'object'\n ? pinnedPerspective.selectedPerspective.metadata.title\n : pinnedPerspective.selectedPerspectiveName\n\n const label = hasPinnedPerspective(pinnedPerspective)\n ? `(${t('settings.perspectives.pinned-release-label')})`\n : t('settings.perspectives.pinned-release-label')\n\n const text = useMemo(\n () => [name, label].filter((value) => typeof value !== 'undefined').join(' '),\n [label, name],\n )\n\n return (\n <option value=\"pinnedRelease\" disabled={!hasPinnedPerspective(pinnedPerspective)}>\n {text}\n </option>\n )\n}\n\nexport interface VisionGuiHeaderProps {\n onChangeDataset: (evt: ChangeEvent<HTMLSelectElement>) => void\n dataset: string\n customApiVersion: string | false\n apiVersion: string\n onChangeApiVersion: (evt: ChangeEvent<HTMLSelectElement>) => void\n datasets: string[]\n customApiVersionElementRef: RefObject<HTMLInputElement | null>\n onCustomApiVersionChange: (evt: ChangeEvent<HTMLInputElement>) => void\n isValidApiVersion: boolean\n onChangePerspective: (evt: ChangeEvent<HTMLSelectElement>) => void\n url?: string\n perspective?: SupportedPerspective\n isScheduledDraftsEnabled: boolean\n}\n\nexport function VisionGuiHeader({\n onChangeDataset,\n dataset,\n customApiVersion,\n apiVersion,\n onChangeApiVersion,\n datasets,\n customApiVersionElementRef,\n onCustomApiVersionChange,\n isValidApiVersion,\n onChangePerspective,\n url,\n perspective,\n isScheduledDraftsEnabled,\n}: VisionGuiHeaderProps) {\n const pinnedPerspective = usePerspective()\n const {t} = useTranslation(visionLocaleNamespace)\n const operationUrlElement = useRef<HTMLInputElement | null>(null)\n const handleCopyUrl = useCallback(() => {\n const el = operationUrlElement.current\n if (!el) return\n\n try {\n el.select()\n document.execCommand('copy')\n } catch {\n console.error('Unable to copy to clipboard :(')\n }\n }, [])\n\n return (\n <Header paddingX={3} paddingY={2}>\n <Grid columns={[1, 4, 8, 12]}>\n {/* Dataset selector */}\n <Box padding={1} column={[1, 2]}>\n <Stack>\n <Card paddingTop={2} paddingBottom={3}>\n <StyledLabel>{t('settings.dataset-label')}</StyledLabel>\n </Card>\n <Select value={dataset} onChange={onChangeDataset}>\n {datasets.map((ds: string) => (\n <option key={ds}>{ds}</option>\n ))}\n </Select>\n </Stack>\n </Box>\n\n {/* API version selector */}\n <Box padding={1} column={[1, 2]}>\n <Stack>\n <Card paddingTop={2} paddingBottom={3}>\n <StyledLabel>{t('settings.api-version-label')}</StyledLabel>\n </Card>\n <Select\n data-testid=\"api-version-selector\"\n value={customApiVersion === false ? apiVersion : 'other'}\n onChange={onChangeApiVersion}\n >\n {API_VERSIONS.map((version) => (\n <option key={version}>{version}</option>\n ))}\n <option key=\"other\" value=\"other\">\n {t('settings.other-api-version-label')}\n </option>\n </Select>\n </Stack>\n </Box>\n\n {/* Custom API version input */}\n {customApiVersion !== false && (\n <Box padding={1} column={[1, 2]}>\n <Stack>\n <Card paddingTop={2} paddingBottom={3}>\n <StyledLabel textOverflow=\"ellipsis\">\n {t('settings.custom-api-version-label')}\n </StyledLabel>\n </Card>\n\n <TextInput\n ref={customApiVersionElementRef}\n value={customApiVersion}\n onChange={onCustomApiVersionChange}\n customValidity={\n isValidApiVersion ? undefined : t('settings.error.invalid-api-version')\n }\n maxLength={11}\n />\n </Stack>\n </Box>\n )}\n\n {/* Perspective selector */}\n <Box padding={1} column={[1, 2]}>\n <Stack>\n <Card paddingBottom={1}>\n <Inline space={1}>\n <Box>\n <StyledLabel>{t('settings.perspective-label')}</StyledLabel>\n </Box>\n\n <Box>\n <PerspectivePopover />\n </Box>\n </Inline>\n </Card>\n <Select value={perspective || 'default'} onChange={onChangePerspective}>\n {SUPPORTED_PERSPECTIVES.map((perspectiveName) => {\n if (perspectiveName === 'pinnedRelease') {\n return (\n <Fragment key=\"pinnedRelease\">\n <PinnedReleasePerspectiveOption pinnedPerspective={pinnedPerspective} t={t} />\n <option key=\"default\" value=\"default\">\n {t('settings.perspectives.default')}\n </option>\n <hr />\n </Fragment>\n )\n }\n if (perspectiveName === 'scheduledDrafts') {\n if (!isScheduledDraftsEnabled) return null\n return (\n <option key=\"scheduledDrafts\" value=\"scheduledDrafts\">\n {t('settings.perspectives.scheduled-drafts')}\n </option>\n )\n }\n return <option key={perspectiveName}>{perspectiveName}</option>\n })}\n </Select>\n </Stack>\n </Box>\n\n {/* Query URL (for copying) */}\n {typeof url === 'string' ? (\n <Box padding={1} flex={1} column={[1, customApiVersion === false ? 6 : 4]}>\n <Stack>\n <Card paddingTop={2} paddingBottom={3}>\n <StyledLabel>\n {t('query.url')} \n <QueryCopyLink\n href={url}\n onClick={(event) => {\n // This is a copy-to-clipboard action, not a navigation\n event.preventDefault()\n handleCopyUrl()\n }}\n >\n [{t('action.copy-url-to-clipboard')}]\n </QueryCopyLink>\n </StyledLabel>\n </Card>\n <Flex flex={1} gap={1}>\n <Box flex={1}>\n <TextInput readOnly type=\"url\" ref={operationUrlElement} value={url} />\n </Box>\n <Tooltip content={t('action.copy-url-to-clipboard')}>\n <Button\n aria-label={t('action.copy-url-to-clipboard')}\n type=\"button\"\n mode=\"ghost\"\n icon={CopyIcon}\n onClick={handleCopyUrl}\n />\n </Tooltip>\n </Flex>\n </Stack>\n </Box>\n ) : (\n <Box flex={1} />\n )}\n </Grid>\n </Header>\n )\n}\n","import {json2csv} from 'json-2-csv'\n\nfunction getBlobUrl(content: string, mimeType: string): string {\n return URL.createObjectURL(\n new Blob([content], {\n type: mimeType,\n }),\n )\n}\n\nfunction getMemoizedBlobUrlResolver(mimeType: string, stringEncoder: (input: any) => string) {\n return (() => {\n let prevResult = ''\n let prevContent = ''\n return (input: unknown) => {\n const content = stringEncoder(input)\n if (typeof content !== 'string' || content === '') {\n return undefined\n }\n\n if (content === prevContent) {\n return prevResult\n }\n\n prevContent = content\n if (prevResult) {\n URL.revokeObjectURL(prevResult)\n }\n\n prevResult = getBlobUrl(content, mimeType)\n return prevResult\n }\n })()\n}\n\nexport const getJsonBlobUrl = getMemoizedBlobUrlResolver('application/json', (input) =>\n JSON.stringify(input, null, 2),\n)\n\nexport const getCsvBlobUrl = getMemoizedBlobUrlResolver('text/csv', (input) => {\n return json2csv(Array.isArray(input) ? input : [input]).trim()\n})\n","import {style} from '@vanilla-extract/css'\n\n// `ErrorCode` always renders inside a critical-tone `Card`, so the card sets\n// `--card-muted-fg-color` to the muted critical foreground color we want here.\n// `&&` is needed to override the color @sanity/ui's Code sets on itself.\nexport const errorCode = style({\n selectors: {\n '&&': {\n color: 'var(--card-muted-fg-color)',\n },\n },\n})\n","import {Code} from '@sanity/ui'\nimport {type ComponentProps} from 'react'\n\nimport {errorCode} from './QueryErrorDialog.css'\n\nexport function ErrorCode(props: ComponentProps<typeof Code>) {\n return <Code {...props} className={errorCode} />\n}\n","import {Box} from '@sanity/ui'\nimport {useTranslation} from 'sanity'\n\nimport {visionLocaleNamespace} from '../i18n'\nimport {ErrorCode} from './QueryErrorDialog.styled'\n\ninterface ContentLakeQueryError {\n details: {\n query: string\n start: number\n end: number\n\n lineNumber?: number\n column?: number\n }\n}\n\nexport function QueryErrorDetails({error}: {error: ContentLakeQueryError | Error}) {\n const {t} = useTranslation(visionLocaleNamespace)\n\n if (!('details' in error)) {\n return null\n }\n\n const details = {...error.details, ...mapToLegacyDetails(error.details)}\n if (!details.line) {\n return null\n }\n\n return (\n <div>\n <ErrorCode size={1}>{`${details.line}\\n${dashLine(\n details.column,\n details.columnEnd,\n )}`}</ErrorCode>\n <Box marginTop={4}>\n <ErrorCode size={1}>{`${t('query.error.line')}: ${details.lineNumber}\\n${t(\n 'query.error.column',\n )}: ${details.column}`}</ErrorCode>\n </Box>\n </div>\n )\n}\n\nfunction mapToLegacyDetails(details: ContentLakeQueryError['details']) {\n if (!details || typeof details.query !== 'string' || typeof details.start !== 'number') {\n return {}\n }\n\n const {query, start, end} = details\n const lineStart = query.slice(0, start).lastIndexOf('\\n') + 1\n const lineNumber = (query.slice(0, lineStart).match(/\\n/g) || []).length\n const line = query.slice(lineStart, query.indexOf('\\n', lineStart))\n const column = start - lineStart\n const columnEnd = typeof end === 'number' ? end - lineStart : undefined\n\n return {line, lineNumber, column, columnEnd}\n}\n\nfunction dashLine(column: number, columnEnd: number | undefined): string {\n const line = '-'.repeat(column)\n const hats = `^`.repeat(columnEnd ? columnEnd - column : 1)\n return `${line}${hats}`\n}\n","import {Stack} from '@sanity/ui'\n\nimport {QueryErrorDetails} from './QueryErrorDetails'\nimport {ErrorCode} from './QueryErrorDialog.styled'\n\nexport function QueryErrorDialog(props: {error: Error}) {\n return (\n <Stack space={5} marginTop={2}>\n <ErrorCode size={1}>{props.error.message}</ErrorCode>\n <QueryErrorDetails error={props.error} />\n </Stack>\n )\n}\n","import {createVar, globalStyle, style} from '@vanilla-extract/css'\n\nexport const codeFamilyVar = createVar()\nexport const codeFontSizeVar = createVar()\nexport const codeLineHeightVar = createVar()\nexport const space0Var = createVar()\nexport const space2Var = createVar()\nexport const space4Var = createVar()\nexport const space4HalfVar = createVar()\nexport const syntaxPropertyVar = createVar()\nexport const syntaxConstantVar = createVar()\nexport const syntaxStringVar = createVar()\nexport const syntaxBooleanVar = createVar()\nexport const syntaxNumberVar = createVar()\n\nexport const resultViewWrapper = style({})\n\nglobalStyle(\n `${resultViewWrapper} .json-inspector, ${resultViewWrapper} .json-inspector .json-inspector__selection`,\n {\n fontFamily: codeFamilyVar,\n fontSize: codeFontSizeVar,\n lineHeight: codeLineHeightVar,\n color: 'var(--card-code-fg-color)',\n },\n)\n\nglobalStyle(`${resultViewWrapper} .json-inspector .json-inspector__leaf`, {\n paddingLeft: space4Var,\n})\n\nglobalStyle(\n `${resultViewWrapper} .json-inspector .json-inspector__leaf.json-inspector__leaf_root`,\n {\n paddingTop: space0Var,\n paddingLeft: 0,\n },\n)\n\nglobalStyle(\n `${resultViewWrapper} .json-inspector > .json-inspector__leaf_root > .json-inspector__line > .json-inspector__key`,\n {\n display: 'none',\n },\n)\n\nglobalStyle(`${resultViewWrapper} .json-inspector .json-inspector__line`, {\n display: 'block',\n position: 'relative',\n cursor: 'default',\n})\n\nglobalStyle(`${resultViewWrapper} .json-inspector .json-inspector__line::after`, {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: '-200px',\n right: '-50px',\n bottom: 0,\n zIndex: -1,\n pointerEvents: 'none',\n})\n\nglobalStyle(`${resultViewWrapper} .json-inspector .json-inspector__line:hover::after`, {\n background: 'var(--card-code-bg-color)',\n})\n\nglobalStyle(\n `${resultViewWrapper} .json-inspector .json-inspector__leaf_composite > .json-inspector__line`,\n {\n cursor: 'pointer',\n },\n)\n\nglobalStyle(\n `${resultViewWrapper} .json-inspector .json-inspector__leaf_composite > .json-inspector__line::before`,\n {\n content: \"'▸ '\",\n marginLeft: `calc(0px - ${space4Var})`,\n fontSize: codeFontSizeVar,\n lineHeight: codeLineHeightVar,\n },\n)\n\nglobalStyle(\n `${resultViewWrapper} .json-inspector .json-inspector__leaf_expanded.json-inspector__leaf_composite > .json-inspector__line::before`,\n {\n content: \"'▾ '\",\n fontSize: codeFontSizeVar,\n lineHeight: codeLineHeightVar,\n },\n)\n\nglobalStyle(\n `${resultViewWrapper} .json-inspector .json-inspector__radio, ${resultViewWrapper} .json-inspector .json-inspector__flatpath`,\n {\n display: 'none',\n },\n)\n\nglobalStyle(`${resultViewWrapper} .json-inspector .json-inspector__value`, {\n marginLeft: space4HalfVar,\n})\n\nglobalStyle(\n `${resultViewWrapper} .json-inspector > .json-inspector__leaf_root > .json-inspector__line > .json-inspector__key + .json-inspector__value`,\n {\n margin: 0,\n },\n)\n\nglobalStyle(`${resultViewWrapper} .json-inspector .json-inspector__key`, {\n color: syntaxPropertyVar,\n})\n\nglobalStyle(\n `${resultViewWrapper} .json-inspector .json-inspector__value_helper, ${resultViewWrapper} .json-inspector .json-inspector__value_null`,\n {\n color: syntaxConstantVar,\n },\n)\n\nglobalStyle(`${resultViewWrapper} .json-inspector .json-inspector__not-found`, {\n paddingTop: space2Var,\n})\n\nglobalStyle(`${resultViewWrapper} .json-inspector .json-inspector__value_string`, {\n color: syntaxStringVar,\n wordBreak: 'break-word',\n})\n\nglobalStyle(`${resultViewWrapper} .json-inspector .json-inspector__value_boolean`, {\n color: syntaxBooleanVar,\n})\n\nglobalStyle(`${resultViewWrapper} .json-inspector .json-inspector__value_number`, {\n color: syntaxNumberVar,\n})\n\nglobalStyle(`${resultViewWrapper} .json-inspector .json-inspector__show-original`, {\n display: 'inline-block',\n padding: '0 6px',\n cursor: 'pointer',\n})\n\nglobalStyle(`${resultViewWrapper} .json-inspector .json-inspector__show-original:hover`, {\n color: 'inherit',\n})\n\nglobalStyle(`${resultViewWrapper} .json-inspector .json-inspector__show-original::before`, {\n content: \"'↔'\",\n})\n\nglobalStyle(`${resultViewWrapper} .json-inspector .json-inspector__show-original:hover::after`, {\n content: \"' expand'\",\n})\n","import {JsonInspector} from '@rexxars/react-json-inspector'\nimport {LinkIcon} from '@sanity/icons/Link'\nimport {Code, rem, useTheme_v2 as useThemeV2} from '@sanity/ui'\nimport {assignInlineVars} from '@vanilla-extract/dynamic'\nimport LRU from 'quick-lru'\nimport {type ReactNode} from 'react'\nimport {useDataset} from 'sanity'\nimport {IntentLink} from 'sanity/router'\n\nimport {\n codeFamilyVar,\n codeFontSizeVar,\n codeLineHeightVar,\n resultViewWrapper,\n space0Var,\n space2Var,\n space4HalfVar,\n space4Var,\n syntaxBooleanVar,\n syntaxConstantVar,\n syntaxNumberVar,\n syntaxPropertyVar,\n syntaxStringVar,\n} from './ResultView.css'\n\nconst lru = new LRU({maxSize: 50000})\n\nfunction ResultViewWrapper({children}: {children: ReactNode}) {\n const {color, font, space} = useThemeV2()\n const codeSize = font.code.sizes[2]\n\n return (\n <div\n className={resultViewWrapper}\n style={assignInlineVars({\n [codeFamilyVar]: font.code.family,\n [codeFontSizeVar]: `${codeSize.fontSize}px`,\n [codeLineHeightVar]: `${codeSize.lineHeight}px`,\n [space0Var]: `${rem(space[0])}`,\n [space2Var]: `${rem(space[2])}`,\n [space4Var]: `${rem(space[4])}`,\n [space4HalfVar]: `${rem(space[4] / 2)}`,\n [syntaxPropertyVar]: color.syntax.property,\n [syntaxConstantVar]: color.syntax.constant,\n [syntaxStringVar]: color.syntax.string,\n [syntaxBooleanVar]: color.syntax.boolean,\n [syntaxNumberVar]: color.syntax.number,\n })}\n >\n {children}\n </div>\n )\n}\n\nexport function ResultView(props: {data: unknown; datasetName: string}): React.JSX.Element {\n const {data, datasetName} = props\n const workspaceDataset = useDataset()\n\n if (isRecord(data) || Array.isArray(data)) {\n return (\n <ResultViewWrapper>\n <JsonInspector\n data={data}\n search={false}\n isExpanded={isExpanded}\n onClick={toggleExpanded}\n interactiveLabel={workspaceDataset === datasetName ? DocumentEditLabel : undefined}\n />\n </ResultViewWrapper>\n )\n }\n\n return <Code language=\"json\">{JSON.stringify(data)}</Code>\n}\n\nfunction DocumentEditLabel(props: {value: string; isKey: boolean; keypath: string}) {\n if (props.isKey || (!props.keypath.endsWith('_id') && !props.keypath.endsWith('_ref'))) {\n return null\n }\n\n return (\n <IntentLink intent=\"edit\" params={{id: props.value}}>\n <LinkIcon />\n </IntentLink>\n )\n}\n\nfunction isExpanded(keyPath: string, value: unknown): boolean {\n const depthLimit = 4\n const cached = lru.get(keyPath) as boolean | undefined\n\n if (typeof cached === 'boolean') {\n return cached\n }\n\n const segments = keyPath.split('.', depthLimit)\n if (segments.length === depthLimit) {\n return false\n }\n\n if (Array.isArray(value)) {\n return true\n }\n\n return isRecord(value) && !segments.some((key) => isArrayKeyOverLimit(key))\n}\n\nfunction toggleExpanded(event: {path: string}): void {\n const {path} = event\n const current = lru.get(path)\n\n if (current === undefined) {\n // something is wrong\n return\n }\n\n lru.set(path, !current)\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nconst numeric = /^\\d+$/\nfunction isArrayKeyOverLimit(segment: string, limit = 10) {\n return numeric.test(segment) && parseInt(segment, 10) > limit\n}\n","import {DocumentSheetIcon} from '@sanity/icons/DocumentSheet'\nimport {Button, Tooltip} from '@sanity/ui'\nimport {useTranslation} from 'sanity'\n\nimport {visionLocaleNamespace} from '../i18n'\n\ninterface SaveButtonProps {\n blobUrl: string | undefined\n}\n\nexport function SaveCsvButton({blobUrl}: SaveButtonProps) {\n const {t} = useTranslation(visionLocaleNamespace)\n\n // An anchor cannot be disabled, so when there is nothing to download we render a plain\n // disabled button (which also prevents the click natively) instead of a disabled link.\n if (!blobUrl) {\n return (\n <Tooltip content={t('result.save-result-as-csv.not-csv-encodable')} placement=\"top\">\n <Button\n disabled\n icon={DocumentSheetIcon}\n mode=\"ghost\"\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n text=\"CSV\" // String is a File extension\n tone=\"default\"\n />\n </Tooltip>\n )\n }\n\n return (\n <Button\n as=\"a\"\n download=\"query-result.csv\"\n href={blobUrl}\n icon={DocumentSheetIcon}\n mode=\"ghost\"\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n text=\"CSV\" // String is a File extension\n tone=\"default\"\n />\n )\n}\n\nexport function SaveJsonButton({blobUrl}: SaveButtonProps) {\n return (\n <Button\n as=\"a\"\n download={'query-result.json'}\n href={blobUrl}\n icon={DocumentSheetIcon}\n mode=\"ghost\"\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n text=\"JSON\" // String is a File extension\n tone=\"default\"\n />\n )\n}\n","import {type MutationEvent} from '@sanity/client'\nimport {Box, Text} from '@sanity/ui'\nimport {Translate, useTranslation} from 'sanity'\n\nimport {visionLocaleNamespace} from '../i18n'\nimport {getCsvBlobUrl, getJsonBlobUrl} from '../util/getBlobUrl'\nimport {DelayedSpinner} from './DelayedSpinner'\nimport {QueryErrorDialog} from './QueryErrorDialog'\nimport {ResultView} from './ResultView'\nimport {SaveCsvButton, SaveJsonButton} from './SaveResultButtons'\nimport {\n DownloadsCard,\n InputBackgroundContainer,\n Result,\n ResultContainer,\n ResultFooter,\n ResultInnerContainer,\n ResultOuterContainer,\n SaveResultLabel,\n StyledLabel,\n TimingsCard,\n TimingsTextContainer,\n} from './VisionGui.styled'\n\ninterface VisionGuiResultProps {\n error?: Error | undefined\n queryInProgress: boolean\n queryResult?: unknown | undefined\n listenInProgress: boolean\n listenMutations: MutationEvent[]\n dataset: string\n queryTime: number | undefined\n e2eTime: number | undefined\n compactFooter?: boolean\n}\n\nexport function VisionGuiResult({\n error,\n queryInProgress,\n queryResult,\n listenInProgress,\n listenMutations,\n dataset,\n queryTime,\n e2eTime,\n compactFooter = false,\n}: VisionGuiResultProps) {\n const {t} = useTranslation(visionLocaleNamespace)\n const hasResult = !error && !queryInProgress && typeof queryResult !== 'undefined'\n\n const jsonUrl = hasResult ? getJsonBlobUrl(queryResult) : ''\n const csvUrl = hasResult ? getCsvBlobUrl(queryResult) : ''\n\n return (\n <ResultOuterContainer direction=\"column\" data-testid=\"vision-result\">\n <ResultInnerContainer flex={1}>\n <ResultContainer\n flex={1}\n overflow=\"hidden\"\n tone={error ? 'critical' : 'default'}\n isInvalid={Boolean(error)}\n >\n <Result overflow=\"auto\">\n <InputBackgroundContainer>\n <Box marginLeft={3}>\n <StyledLabel muted>{t('result.label')}</StyledLabel>\n </Box>\n </InputBackgroundContainer>\n <Box padding={3} paddingTop={5}>\n {(queryInProgress || (listenInProgress && listenMutations.length === 0)) && (\n <Box marginTop={3}>\n <DelayedSpinner />\n </Box>\n )}\n {error && <QueryErrorDialog error={error} />}\n {hasResult && <ResultView data={queryResult} datasetName={dataset} />}\n {listenInProgress && listenMutations.length > 0 && (\n <ResultView data={listenMutations} datasetName={dataset} />\n )}\n </Box>\n </Result>\n </ResultContainer>\n </ResultInnerContainer>\n {/* Execution time */}\n <ResultFooter\n justify={compactFooter ? 'flex-start' : 'space-between'}\n align={compactFooter ? 'stretch' : undefined}\n direction={compactFooter ? 'column' : ['column', 'column', 'row']}\n >\n <TimingsCard\n paddingX={compactFooter ? 3 : 4}\n paddingY={compactFooter ? 2 : 3}\n sizing=\"border\"\n style={compactFooter ? {width: '100%'} : {minWidth: 0}}\n >\n <TimingsTextContainer align=\"center\">\n <Box>\n <Text muted size={compactFooter ? 1 : 2}>\n {t('result.execution-time-label')}:{' '}\n {typeof queryTime === 'number'\n ? `${queryTime}ms`\n : t('result.timing-not-applicable')}\n </Text>\n </Box>\n <Box marginLeft={compactFooter ? 3 : 4}>\n <Text muted size={compactFooter ? 1 : 2}>\n {t('result.end-to-end-time-label')}:{' '}\n {typeof e2eTime === 'number' ? `${e2eTime}ms` : t('result.timing-not-applicable')}\n </Text>\n </Box>\n </TimingsTextContainer>\n </TimingsCard>\n\n {hasResult && (\n <DownloadsCard\n paddingX={compactFooter ? 3 : 4}\n paddingY={compactFooter ? 2 : 3}\n sizing=\"border\"\n style={compactFooter ? {width: '100%'} : {marginLeft: 'auto', minWidth: 0}}\n >\n <SaveResultLabel muted size={compactFooter ? 1 : 2}>\n <Translate\n components={{\n SaveResultButtons: () => (\n <>\n <SaveJsonButton blobUrl={jsonUrl} />\n <SaveCsvButton blobUrl={csvUrl} />\n </>\n ),\n }}\n i18nKey=\"result.save-result-as-format\"\n t={t}\n />\n </SaveResultLabel>\n </DownloadsCard>\n )}\n </ResultFooter>\n </ResultOuterContainer>\n )\n}\n","import {SplitPane} from '@rexxars/react-split-pane'\nimport {\n type ClientPerspective,\n type ListenEvent,\n type MutationEvent,\n type ReleaseDocument,\n type StackablePerspective,\n} from '@sanity/client'\nimport {ChevronLeftIcon} from '@sanity/icons/ChevronLeft'\nimport {ChevronRightIcon} from '@sanity/icons/ChevronRight'\nimport {Box, Button, Flex, useToast} from '@sanity/ui'\nimport {isHotkey} from 'is-hotkey-esm'\nimport {\n type ChangeEvent,\n useCallback,\n useEffect,\n useEffectEvent,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {\n getReleaseIdFromReleaseDocumentId,\n isCardinalityOneRelease,\n type PerspectiveStack,\n sortReleases,\n useActiveReleases,\n useClient,\n usePerspective,\n useScheduledDraftsEnabled,\n useTranslation,\n useWorkspace,\n} from 'sanity'\n\nimport {API_VERSIONS, DEFAULT_API_VERSION} from '../apiVersions'\nimport {groqExtensions} from '../codemirror/extensions'\nimport {VisionCodeMirror, type VisionCodeMirrorHandle} from '../codemirror/VisionCodeMirror'\nimport {visionLocaleNamespace} from '../i18n'\nimport {\n getActivePerspective,\n isSupportedPerspective,\n isVirtualPerspective,\n type SupportedPerspective,\n} from '../perspectives'\nimport {type VisionProps} from '../types'\nimport {encodeQueryString} from '../util/encodeQueryString'\nimport {getLocalStorage} from '../util/localStorage'\nimport {parseApiQueryString, type ParsedApiQueryString} from '../util/parseApiQueryString'\nimport {prefixApiVersion} from '../util/prefixApiVersion'\nimport {validateApiVersion} from '../util/validateApiVersion'\nimport {ParamsEditor, parseParams} from './ParamsEditor'\nimport {QueryRecall} from './QueryRecall'\nimport {usePaneSize} from './usePaneSize'\nimport {\n InputBackgroundContainerLeft,\n InputContainer,\n QueryRecallPaneContainer,\n QueryRecallPaneWrapper,\n Root,\n SplitpaneContainer,\n StyledLabel,\n} from './VisionGui.styled'\nimport {VisionGuiControls} from './VisionGuiControls'\nimport {VisionGuiHeader} from './VisionGuiHeader'\nimport {VisionGuiResult} from './VisionGuiResult'\n\nfunction nodeContains(node: Node, other: EventTarget | Node | null): boolean {\n if (!node || !other) {\n return false\n }\n\n return node === other || !!(node.compareDocumentPosition(other as Node) & 16)\n}\n\n// Match Sanity API URLs with any domain (supports custom CDN domains like foolcdn.com)\nconst sanityUrl = /\\/(vX|v1|v\\d{4}-\\d\\d-\\d\\d)\\/.*?(?:query|listen)\\/(.*?)\\?(.*)/\n\nconst isRunHotkey = (event: KeyboardEvent) =>\n isHotkey('ctrl+enter', event) || isHotkey('mod+enter', event)\n\ninterface Subscription {\n unsubscribe: () => void\n}\nexport interface Params {\n raw: string\n parsed: Record<string, unknown> | undefined\n valid: boolean\n error: string | undefined\n}\n\ninterface QueryExecutionOptions {\n apiVersion?: string\n dataset?: string\n perspective?: SupportedPerspective | undefined\n query?: string\n params?: Record<string, unknown>\n}\n\ninterface VisionGuiProps extends VisionProps {\n datasets: string[]\n projectId: string | undefined\n defaultDataset: string\n}\n\nexport interface ParsedUrlState {\n query: string\n params: Record<string, unknown>\n rawParams: string\n dataset: string\n apiVersion: string\n customApiVersion: string | false | undefined\n perspective: SupportedPerspective | undefined\n url: string\n}\n\nexport function VisionGui(props: VisionGuiProps) {\n const {datasets, config, projectId, defaultDataset} = props\n const toast = useToast()\n const {t} = useTranslation(visionLocaleNamespace)\n const {perspectiveStack} = usePerspective()\n const isScheduledDraftsEnabled = useScheduledDraftsEnabled()\n const {data: releases = []} = useActiveReleases()\n const workspace = useWorkspace()\n const isDraftModelEnabled = workspace.document.drafts.enabled\n\n const editorQueryRef = useRef<VisionCodeMirrorHandle>(null)\n const editorParamsRef = useRef<VisionCodeMirrorHandle>(null)\n const visionRootRef = useRef<HTMLDivElement | null>(null)\n const customApiVersionElementRef = useRef<HTMLInputElement | null>(null)\n const querySubscriptionRef = useRef<Subscription | undefined>(undefined)\n const listenSubscriptionRef = useRef<Subscription | undefined>(undefined)\n\n const [localStorage] = useState(() => getLocalStorage(projectId || 'default'))\n\n const storedDataset = localStorage.get('dataset', defaultDataset)\n const storedApiVersion = localStorage.get(\n 'apiVersion',\n prefixApiVersion(`${config.defaultApiVersion}`),\n )\n const storedQuery = localStorage.get('query', '')\n const storedParams = localStorage.get('params', '{\\n \\n}')\n const storedPerspective = localStorage.get<SupportedPerspective | undefined>(\n 'perspective',\n undefined,\n )\n\n const [dataset, setDataset] = useState<string>(() => {\n if (datasets.includes(storedDataset)) {\n return storedDataset\n }\n if (datasets.includes(defaultDataset)) {\n return defaultDataset\n }\n return datasets[0]\n })\n const [apiVersion, setApiVersion] = useState<string>(() =>\n API_VERSIONS.includes(storedApiVersion) ? storedApiVersion : DEFAULT_API_VERSION,\n )\n const [customApiVersion, setCustomApiVersion] = useState<string | false>(() =>\n API_VERSIONS.includes(storedApiVersion) ? false : storedApiVersion,\n )\n const [perspective, setPerspectiveState] = useState<SupportedPerspective | undefined>(\n storedPerspective || 'raw',\n )\n const isValidApiVersion = customApiVersion ? validateApiVersion(customApiVersion) : true\n\n const [url, setUrl] = useState<string | undefined>(undefined)\n const [query, setQuery] = useState<string>(() =>\n typeof storedQuery === 'string' ? storedQuery : '',\n )\n const [rawParams, setRawParams] = useState<string>(storedParams)\n const params = useMemo(() => parseParams(rawParams, t), [rawParams, t])\n const [queryResult, setQueryResult] = useState<unknown | undefined>(undefined)\n const [listenMutations, setListenMutations] = useState<MutationEvent[]>([])\n const [error, setError] = useState<Error | undefined>(undefined)\n const [queryTime, setQueryTime] = useState<number | undefined>(undefined)\n const [e2eTime, setE2eTime] = useState<number | undefined>(undefined)\n const [queryInProgress, setQueryInProgress] = useState<boolean>(false)\n const [listenInProgress, setListenInProgress] = useState<boolean>(false)\n const [isQueryRecallCollapsed, setIsQueryRecallCollapsed] = useState(false)\n\n const {paneSizeOptions, isNarrowBreakpoint} = usePaneSize({visionRootRef})\n\n // Compute scheduled drafts perspective stack\n const scheduledDraftsStack = useMemo((): PerspectiveStack | undefined => {\n if (!isScheduledDraftsEnabled) return undefined\n\n const scheduledDraftReleases = releases.filter(\n (release: ReleaseDocument) =>\n isCardinalityOneRelease(release) && release.state === 'scheduled',\n )\n const sorted = sortReleases(scheduledDraftReleases)\n const releaseIds = sorted.map((release: ReleaseDocument) =>\n getReleaseIdFromReleaseDocumentId(release._id),\n )\n const defaultPerspective = isDraftModelEnabled ? ['drafts'] : ['published']\n return [...releaseIds, ...defaultPerspective] as PerspectiveStack\n }, [releases, isDraftModelEnabled, isScheduledDraftsEnabled])\n\n // Client with memoized initial value\n const _client = useClient({\n apiVersion: isValidApiVersion && customApiVersion ? customApiVersion : apiVersion,\n })\n const client = useMemo(() => {\n return _client.withConfig({\n apiVersion: isValidApiVersion && customApiVersion ? customApiVersion : apiVersion,\n perspective: getActivePerspective({\n visionPerspective: perspective,\n perspectiveStack,\n scheduledDraftsStack,\n }),\n dataset,\n allowReconfigure: true,\n })\n }, [\n perspectiveStack,\n scheduledDraftsStack,\n perspective,\n customApiVersion,\n apiVersion,\n dataset,\n _client,\n isValidApiVersion,\n ])\n\n const cancelQuerySubscription = useCallback(() => {\n if (!querySubscriptionRef.current) {\n return\n }\n querySubscriptionRef.current.unsubscribe()\n querySubscriptionRef.current = undefined\n }, [])\n\n const cancelListenerSubscription = useCallback(() => {\n if (!listenSubscriptionRef.current) {\n return\n }\n listenSubscriptionRef.current.unsubscribe()\n listenSubscriptionRef.current = undefined\n }, [])\n\n const handleQueryExecution = useCallback(\n (options?: QueryExecutionOptions) => {\n if (queryInProgress) {\n cancelQuerySubscription()\n cancelListenerSubscription()\n setQueryInProgress(false)\n return\n }\n\n const context: Required<Omit<QueryExecutionOptions, 'params' | 'perspective'>> & {\n params: Params\n perspective: ClientPerspective | undefined\n } = {\n query: options?.query || query,\n dataset: options?.dataset || dataset,\n params: parseParams(JSON.stringify(options?.params || params.parsed, null, 2), t),\n perspective: getActivePerspective({\n visionPerspective:\n options && 'perspective' in options ? options.perspective : perspective,\n perspectiveStack,\n scheduledDraftsStack,\n }),\n apiVersion:\n options?.apiVersion ||\n (customApiVersion && isValidApiVersion ? customApiVersion : apiVersion),\n }\n\n localStorage.set('query', context.query)\n localStorage.set('params', context.params.raw)\n\n cancelListenerSubscription()\n\n const hasQuery = context.query.trim().length > 0\n\n setQueryInProgress(!context.params.error && hasQuery)\n setListenInProgress(false)\n setListenMutations([])\n setError(context.params.error ? new Error(context.params.error) : undefined)\n setQueryResult(undefined)\n setQueryTime(undefined)\n setE2eTime(undefined)\n\n if (context.params.error || !hasQuery) {\n return\n }\n\n const urlQueryOpts: Record<string, string | string[]> = {\n perspective: context.perspective ?? [],\n }\n\n const ctxClient = client.withConfig({\n apiVersion: context.apiVersion,\n dataset: context.dataset,\n perspective: context.perspective,\n })\n\n const newUrl = ctxClient.getUrl(\n ctxClient.getDataUrl(\n 'query',\n encodeQueryString(context.query, context.params.parsed, urlQueryOpts),\n ),\n )\n setUrl(newUrl)\n\n const queryStart = Date.now()\n\n querySubscriptionRef.current = ctxClient.observable\n .fetch(context.query, context.params.parsed, {filterResponse: false, tag: 'vision'})\n .subscribe({\n next: (res) => {\n setQueryTime(res.ms)\n setE2eTime(Date.now() - queryStart)\n setQueryResult(res.result)\n setQueryInProgress(false)\n setError(undefined)\n },\n error: (err) => {\n setError(err)\n setQueryInProgress(false)\n },\n })\n },\n [\n queryInProgress,\n query,\n dataset,\n params.parsed,\n t,\n perspective,\n perspectiveStack,\n scheduledDraftsStack,\n customApiVersion,\n isValidApiVersion,\n apiVersion,\n localStorage,\n cancelListenerSubscription,\n client,\n cancelQuerySubscription,\n ],\n )\n\n const setPerspective = useCallback(\n (newPerspective: string | undefined): void => {\n if (newPerspective !== undefined && !isSupportedPerspective(newPerspective)) {\n return\n }\n\n setPerspectiveState(newPerspective)\n localStorage.set('perspective', newPerspective)\n\n handleQueryExecution({perspective: newPerspective})\n },\n [localStorage, handleQueryExecution],\n )\n\n const handleChangeDataset = useCallback(\n (evt: ChangeEvent<HTMLSelectElement>) => {\n const newDataset = evt.target.value\n localStorage.set('dataset', newDataset)\n setDataset(newDataset)\n handleQueryExecution({dataset: newDataset})\n },\n [localStorage, handleQueryExecution],\n )\n\n const handleChangeApiVersion = useCallback(\n (evt: ChangeEvent<HTMLSelectElement>) => {\n const newApiVersion = evt.target.value\n if (newApiVersion?.toLowerCase() === 'other') {\n setCustomApiVersion('v')\n customApiVersionElementRef.current?.focus()\n return\n }\n\n setApiVersion(newApiVersion)\n setCustomApiVersion(false)\n localStorage.set('apiVersion', newApiVersion)\n handleQueryExecution({apiVersion: newApiVersion})\n },\n [localStorage, handleQueryExecution],\n )\n\n // Handle custom API version change\n const handleCustomApiVersionChange = useCallback(\n (evt: ChangeEvent<HTMLInputElement>) => {\n const newCustomApiVersion = evt.target.value || ''\n setCustomApiVersion(newCustomApiVersion || 'v')\n\n if (validateApiVersion(newCustomApiVersion)) {\n setApiVersion(newCustomApiVersion)\n localStorage.set('apiVersion', newCustomApiVersion)\n handleQueryExecution({apiVersion: newCustomApiVersion})\n }\n },\n [localStorage, handleQueryExecution],\n )\n\n // Handle perspective change\n const handleChangePerspective = useCallback(\n (evt: ChangeEvent<HTMLSelectElement>) => {\n const newPerspective = evt.target.value\n setPerspective(newPerspective === 'default' ? undefined : newPerspective)\n },\n [setPerspective],\n )\n\n const handleListenerEvent = useCallback((evt: ListenEvent<any>) => {\n if (evt.type !== 'mutation') {\n return\n }\n\n setListenMutations((prevMutations) =>\n prevMutations.length === 50 ? [evt, ...prevMutations.slice(0, 49)] : [evt, ...prevMutations],\n )\n }, [])\n const handleListenExecution = useCallback(() => {\n if (listenInProgress) {\n cancelListenerSubscription()\n setListenInProgress(false)\n return\n }\n\n const newUrl = client.getDataUrl('listen', encodeQueryString(query, params.parsed, {}))\n\n const shouldExecute = !params.error && query.trim().length > 0\n\n localStorage.set('query', query)\n localStorage.set('params', params.raw)\n\n cancelQuerySubscription()\n\n setUrl(newUrl)\n setListenMutations([])\n setQueryInProgress(false)\n setQueryResult(undefined)\n setListenInProgress(shouldExecute)\n setError(params.error ? new Error(params.error) : undefined)\n setQueryTime(undefined)\n setE2eTime(undefined)\n\n if (!shouldExecute) {\n return\n }\n\n listenSubscriptionRef.current = client\n .listen(query, params.parsed, {events: ['mutation', 'welcome'], includeAllVersions: true})\n .subscribe({\n next: handleListenerEvent,\n error: (err) => {\n setError(err)\n setListenInProgress(false)\n },\n })\n }, [\n listenInProgress,\n params,\n query,\n localStorage,\n cancelQuerySubscription,\n handleListenerEvent,\n cancelListenerSubscription,\n client,\n ])\n\n const handleParamsChange = useCallback(\n (value: string) => {\n setRawParams(value)\n localStorage.set('params', value)\n },\n [localStorage],\n )\n\n // Get object of state values from provided URL\n const getStateFromUrl = useCallback(\n (data: string): ParsedUrlState | null => {\n const match = data.match(sanityUrl)\n if (!match) {\n return null\n }\n\n const [, usedApiVersion, usedDataset, urlQuery] = match\n\n const qs = new URLSearchParams(urlQuery)\n const parts: ParsedApiQueryString = parseApiQueryString(qs)\n if (!parts) return null\n let newApiVersion: string | undefined\n let newCustomApiVersion: string | false | undefined\n\n if (validateApiVersion(usedApiVersion)) {\n if (API_VERSIONS.includes(usedApiVersion)) {\n newApiVersion = usedApiVersion\n newCustomApiVersion = false\n } else {\n newCustomApiVersion = usedApiVersion\n }\n }\n\n const newPerspective =\n isSupportedPerspective(parts.options.perspective) &&\n !isVirtualPerspective(parts.options.perspective)\n ? parts.options.perspective\n : undefined\n\n if (\n newPerspective &&\n (!isSupportedPerspective(parts.options.perspective) ||\n isVirtualPerspective(parts.options.perspective))\n ) {\n toast.push({\n closable: true,\n id: 'vision-paste-unsupported-perspective',\n status: 'warning',\n title: 'Perspective in pasted url is currently not supported. Falling back to \"raw\"',\n })\n }\n\n return {\n query: parts.query,\n params: parts.params,\n rawParams: JSON.stringify(parts.params, null, 2),\n dataset: datasets.includes(usedDataset) ? usedDataset : dataset,\n apiVersion: newApiVersion || apiVersion,\n customApiVersion: newCustomApiVersion,\n perspective: newPerspective || perspective,\n url: data,\n }\n },\n [datasets, dataset, apiVersion, perspective, toast],\n )\n\n // Use state object from parsed URL to update state\n const setStateFromParsedUrl = useCallback(\n (parsedUrlObj: ParsedUrlState) => {\n // Update state with pasted values\n setDataset(parsedUrlObj.dataset)\n setQuery(parsedUrlObj.query)\n setRawParams(parsedUrlObj.rawParams)\n setApiVersion(parsedUrlObj.apiVersion)\n if (parsedUrlObj.customApiVersion) {\n setCustomApiVersion(parsedUrlObj.customApiVersion)\n }\n setPerspectiveState(parsedUrlObj.perspective)\n setUrl(parsedUrlObj.url)\n // Update the codemirror editor content\n editorQueryRef.current?.resetEditorContent(parsedUrlObj.query)\n editorParamsRef.current?.resetEditorContent(parsedUrlObj.rawParams)\n\n // Update localStorage and client config\n localStorage.merge({\n query: parsedUrlObj.query,\n params: parsedUrlObj.rawParams,\n dataset: parsedUrlObj.dataset,\n apiVersion: parsedUrlObj.customApiVersion || parsedUrlObj.apiVersion,\n perspective: parsedUrlObj.perspective,\n })\n\n // Execute query with new values\n handleQueryExecution(parsedUrlObj)\n },\n [localStorage, handleQueryExecution],\n )\n\n const handlePaste = useCallback(\n (evt: ClipboardEvent) => {\n if (!evt.clipboardData) {\n return\n }\n\n const data = evt.clipboardData.getData('text/plain')\n evt.preventDefault()\n const urlState = getStateFromUrl(data)\n if (urlState) {\n setStateFromParsedUrl(urlState)\n toast.push({\n closable: true,\n id: 'vision-paste',\n status: 'info',\n title: 'Parsed URL to query',\n })\n }\n },\n [getStateFromUrl, setStateFromParsedUrl, toast],\n )\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n const isWithinRoot =\n visionRootRef.current && nodeContains(visionRootRef.current, event.target)\n if (isRunHotkey(event) && isWithinRoot && params.valid) {\n handleQueryExecution()\n event.preventDefault()\n event.stopPropagation()\n }\n },\n [params.valid, handleQueryExecution],\n )\n\n useEffect(() => {\n window.document.addEventListener('paste', handlePaste)\n window.document.addEventListener('keydown', handleKeyDown)\n\n return () => {\n window.document.removeEventListener('paste', handlePaste)\n window.document.removeEventListener('keydown', handleKeyDown)\n }\n }, [handleKeyDown, handlePaste])\n\n useEffect(() => {\n return () => {\n cancelQuerySubscription()\n cancelListenerSubscription()\n }\n }, [cancelQuerySubscription, cancelListenerSubscription])\n\n const handleStudioPerspectiveChange = useEffectEvent((stack: StackablePerspective[]) => {\n if (stack.length > 0) {\n setPerspective('pinnedRelease')\n }\n })\n // Handle pinned perspective changes\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler\n handleStudioPerspectiveChange(perspectiveStack)\n }, [perspectiveStack])\n\n const generateUrl = useCallback(\n (queryString: string, queryParams: Record<string, unknown>) => {\n const urlQueryOpts: Record<string, string | string[]> = {\n perspective:\n getActivePerspective({\n visionPerspective: perspective,\n perspectiveStack,\n scheduledDraftsStack,\n }) ?? [],\n }\n return client.getUrl(\n client.getDataUrl('query', encodeQueryString(queryString, queryParams, urlQueryOpts)),\n )\n },\n [client, perspective, perspectiveStack, scheduledDraftsStack],\n )\n\n return (\n <Root\n direction=\"column\"\n height=\"fill\"\n ref={visionRootRef}\n sizing=\"border\"\n overflow=\"hidden\"\n data-testid=\"vision-root\"\n >\n <VisionGuiHeader\n apiVersion={apiVersion}\n customApiVersion={customApiVersion}\n dataset={dataset}\n datasets={datasets}\n onChangeDataset={handleChangeDataset}\n onChangeApiVersion={handleChangeApiVersion}\n customApiVersionElementRef={customApiVersionElementRef}\n onCustomApiVersionChange={handleCustomApiVersionChange}\n isValidApiVersion={isValidApiVersion}\n onChangePerspective={handleChangePerspective}\n url={url}\n perspective={perspective}\n isScheduledDraftsEnabled={isScheduledDraftsEnabled}\n />\n\n <SplitpaneContainer flex=\"auto\">\n <SplitPane\n minSize={800}\n defaultSize={window.innerWidth - 275}\n size={isQueryRecallCollapsed ? window.innerWidth : window.innerWidth - 275}\n maxSize={-225}\n primary=\"first\"\n >\n <Box height=\"stretch\" flex={1}>\n <SplitPane\n className=\"sidebarPanes\"\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n split={isNarrowBreakpoint ? 'vertical' : 'horizontal'}\n minSize={300}\n >\n <Box height=\"stretch\" flex={1}>\n <SplitPane\n className=\"sidebarPanes\"\n split=\"horizontal\"\n defaultSize={\n isNarrowBreakpoint ? paneSizeOptions.defaultSize : paneSizeOptions.minSize\n }\n size={paneSizeOptions.size}\n allowResize={paneSizeOptions.allowResize}\n minSize={isNarrowBreakpoint ? paneSizeOptions.minSize : 100}\n maxSize={paneSizeOptions.maxSize}\n primary=\"first\"\n >\n <InputContainer display=\"flex\" data-testid=\"vision-query-editor\">\n <Box flex={1}>\n <InputBackgroundContainerLeft>\n <Flex>\n <StyledLabel muted>{t('query.label')}</StyledLabel>\n </Flex>\n </InputBackgroundContainerLeft>\n <VisionCodeMirror\n initialValue={query}\n onChange={setQuery}\n ref={editorQueryRef}\n extensions={groqExtensions}\n />\n </Box>\n </InputContainer>\n <InputContainer display=\"flex\">\n <ParamsEditor\n value={params.raw}\n onChange={handleParamsChange}\n paramsError={params.error}\n hasValidParams={params.valid}\n editorRef={editorParamsRef}\n />\n\n <VisionGuiControls\n hasValidParams={params.valid}\n queryInProgress={queryInProgress}\n listenInProgress={listenInProgress}\n onQueryExecution={handleQueryExecution}\n onListenExecution={handleListenExecution}\n />\n </InputContainer>\n </SplitPane>\n </Box>\n <VisionGuiResult\n error={error}\n queryInProgress={queryInProgress}\n queryResult={queryResult}\n listenInProgress={listenInProgress}\n listenMutations={listenMutations}\n dataset={dataset}\n queryTime={queryTime}\n e2eTime={e2eTime}\n />\n </SplitPane>\n </Box>\n <QueryRecallPaneContainer>\n <Button\n mode=\"ghost\"\n padding={2}\n style={{\n position: 'absolute',\n left: -32,\n top: '50%',\n transform: 'translateY(-50%)',\n zIndex: 100,\n pointerEvents: 'auto',\n }}\n onClick={() => setIsQueryRecallCollapsed(!isQueryRecallCollapsed)}\n >\n <div style={{display: 'flex', alignItems: 'center', height: '100%'}}>\n {isQueryRecallCollapsed ? <ChevronLeftIcon /> : <ChevronRightIcon />}\n </div>\n </Button>\n <QueryRecallPaneWrapper>\n <QueryRecall\n url={url}\n getStateFromUrl={getStateFromUrl}\n setStateFromParsedUrl={setStateFromParsedUrl}\n currentQuery={query}\n currentParams={params.parsed || {}}\n generateUrl={generateUrl}\n />\n </QueryRecallPaneWrapper>\n </QueryRecallPaneContainer>\n </SplitPane>\n </SplitpaneContainer>\n </Root>\n )\n}\n","import {type SanityClient} from '@sanity/client'\nimport {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {catchError, map, type Observable, of} from 'rxjs'\n\nimport {type VisionConfig} from '../types'\n\nexport function useDatasets({\n client,\n datasets: configDatasets,\n}: {\n client: SanityClient\n datasets: VisionConfig['datasets']\n}): string[] | Error | null {\n const datasets$: Observable<string[] | Error> = useMemo(() => {\n if (Array.isArray(configDatasets)) {\n return of(configDatasets)\n }\n return client.observable.datasets.list().pipe(\n map((result) => {\n if (typeof configDatasets == 'function') {\n return configDatasets(result).map((d) => d.name)\n }\n return result.map((ds) => ds.name)\n }),\n catchError((err) => of(err)),\n )\n }, [client, configDatasets])\n const datasets = useObservable(datasets$, null)\n\n return datasets\n}\n","import {Flex} from '@sanity/ui'\nimport {useClient} from 'sanity'\n\nimport {DelayedSpinner} from '../components/DelayedSpinner'\nimport {VisionGui} from '../components/VisionGui'\nimport {useDatasets} from '../hooks/useDatasets'\nimport {type VisionProps} from '../types'\n\nexport function VisionContainer(props: VisionProps) {\n const datasetsClient = useClient({apiVersion: 'v2025-06-27'})\n const loadedDatasets = useDatasets({client: datasetsClient, datasets: props.config.datasets})\n\n if (!loadedDatasets) {\n return (\n <Flex align=\"center\" height=\"fill\" justify=\"center\">\n <DelayedSpinner />\n </Flex>\n )\n }\n\n const datasets =\n loadedDatasets instanceof Error\n ? // On error, use the clients configured dataset\n [props.client.config().dataset || 'production']\n : // Otherwise use the loaded list, obviously\n loadedDatasets\n\n const projectId = props.client.config().projectId\n const defaultDataset = props.config.defaultDataset || props.client.config().dataset || datasets[0]\n\n return (\n <VisionGui\n key={projectId}\n {...props}\n datasets={datasets}\n projectId={projectId}\n defaultDataset={defaultDataset}\n />\n )\n}\n","/* oxlint-disable @sanity/i18n/no-attribute-string-literals */\n/* oxlint-disable i18next/no-literal-string */\nimport {Button, Card, Code, Container, Heading, Stack} from '@sanity/ui'\nimport {Component, type PropsWithChildren} from 'react'\n\nimport {clearLocalStorage} from '../util/localStorage'\n\n/**\n * @internal\n */\nexport type VisionErrorBoundaryProps = PropsWithChildren\n\n/**\n * @internal\n */\ninterface VisionErrorBoundaryState {\n error: string | null\n numRetries: number\n}\n\n/**\n * @internal\n */\nexport class VisionErrorBoundary extends Component<\n VisionErrorBoundaryProps,\n VisionErrorBoundaryState\n> {\n constructor(props: VisionErrorBoundaryProps) {\n super(props)\n this.state = {error: null, numRetries: 0}\n }\n\n static getDerivedStateFromError(error: unknown) {\n // oxlint-disable-next-line restrict-template-expressions - @TODO use new Error(msg, {cause: error}) instead of casting to string, and console.error() the full error\n return {error: error instanceof Error ? error.message : `${error}`}\n }\n\n handleRetryRender = () =>\n this.setState((prev) => ({error: null, numRetries: prev.numRetries + 1}))\n\n handleRetryWithCacheClear = () => {\n clearLocalStorage()\n this.handleRetryRender()\n }\n\n render() {\n if (!this.state.error) {\n return this.props.children\n }\n\n const message = this.state.error\n const withCacheClear = this.state.numRetries > 0\n\n return (\n <Card\n height=\"fill\"\n overflow=\"auto\"\n paddingY={[4, 5, 6, 7]}\n paddingX={4}\n sizing=\"border\"\n tone=\"critical\"\n >\n <Container width={3}>\n <Stack space={4}>\n <div>\n <Button\n onClick={withCacheClear ? this.handleRetryWithCacheClear : this.handleRetryRender}\n text={withCacheClear ? 'Clear cache and retry' : 'Retry'}\n tone=\"default\"\n />\n </div>\n\n <Heading>An error occurred</Heading>\n\n <Card border radius={2} overflow=\"auto\" padding={4} tone=\"inherit\">\n <Stack space={4}>\n {message && (\n <Code size={1}>\n <strong>Error: {message}</strong>\n </Code>\n )}\n </Stack>\n </Card>\n </Stack>\n </Container>\n </Card>\n )\n }\n}\n","import {type Tool, useClient} from 'sanity'\n\nimport {DEFAULT_API_VERSION} from './apiVersions'\nimport {VisionContainer} from './containers/VisionContainer'\nimport {VisionErrorBoundary} from './containers/VisionErrorBoundary'\nimport {type VisionConfig} from './types'\n\ninterface SanityVisionProps {\n tool: Tool<VisionConfig>\n}\n\nfunction SanityVision(props: SanityVisionProps) {\n const client = useClient({apiVersion: '1'})\n const config: VisionConfig = {\n defaultApiVersion: DEFAULT_API_VERSION,\n ...props.tool.options,\n }\n\n return (\n <VisionErrorBoundary>\n <VisionContainer client={client} config={config} />\n </VisionErrorBoundary>\n )\n}\n\nexport default SanityVision\n"],"mappings":"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"}
|