@sanity/assist
6.1.106.1.11
dist/index.js.map~
dist/index.js.mapModified+1−1
Index: package/dist/index.js.map
===================================================================
--- package/dist/index.js.map
+++ package/dist/index.js.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.js","names":["hasOverflowScroll","el","HTMLElement","overflow","getComputedStyle","includes","useEffect","useMemo","useRef","useState","hasOverflowScroll","Rect","Scroll","useRegionRects","$","_c","ref","relativeBoundsRect","setRelativeBoundsRect","relativeElementRect","setRelativeElementRect","t0","Symbol","for","x","y","boundsScroll","setBoundsScroll","t1","scroll","setScroll","boundsScrollXRef","boundsScrollYRef","elementScrollXRef","elementScrollYRef","t2","t3","el","current","scrollParents","parent","parentElement","document","body","push","handleResize","scrollParent","boundsRect","getBoundingClientRect","width","window","innerWidth","height","innerHeight","domRect","w","h","handleScroll","scrollX","scrollY","scrollParent_0","scrollLeft","scrollTop","scrollParent_1","addEventListener","passive","ro","ResizeObserver","observe","scrollParent_2","unobserve","scrollParent_3","removeEventListener","disconnect","t4","bounds","t5","element","t6","HTMLProps","useEffect","ConnectorRegionRects","useRegionRects","ConnectorRegion","props","$","_c","children","onRectsChange","restProps","bounds","element","ref","t0","t1","t2","createContext","ConnectorsStore","ConnectorsStoreContext","useContext","ConnectorsStore","ConnectorsStoreContext","useConnectorsStore","store","Error","HTMLProps","useEffect","useState","ConnectorRegion","ConnectorRegionRects","useConnectorsStore","ConnectFromRegion","props","$","_c","children","key","restProps","zIndex","_key","store","rects","setRects","t0","from","subscribe","t1","t2","next","t3","t4","Connector","ConnectorRegionRects","ConnectorsStore","connectors","subscribe","observer","from","key","payload","Record","next","rects","to","createConnectorsStore","configKeys","fieldKeys","channels","Map","payloads","observers","notifyObservers","toRects","get","toPayload","fromRects","fromPayload","push","set","delete","idx","indexOf","splice","includes","ReactNode","useEffect","useMemo","ConnectorsStore","createConnectorsStore","ConnectorsStoreContext","Connector","ConnectorsProvider","props","$","_c","children","onConnectorsChange","t0","Symbol","for","store","t1","t2","connectors","subscribe","t3","ConnectorLine","ConnectorLinePoint","ConnectorOptions","ConnectorRegionRects","Rect","getConnectorLinePoint","options","rect","bounds","centerY","y","h","isAbove","arrow","marginY","isBelow","x","startY","path","endY","outOfBounds","mapConnectorToLine","connector","from","to","fromBounds","threshold","w","element","fromBottom","toBounds","toBottom","maxStartY","Math","max","min","useMemo","Path","pathToString","documentRootKey","StudioInstruction","usePathKey","path","$","_c","t0","getPathKey","length","Array","isArray","getInstructionTitle","instruction","title","isDefined","t","T","undefined","ArraySchemaType","ImageOptions","SchemaType","isPortableTextArray","type","of","find","t","isType","schemaType","typeName","name","isImage","getDescriptionFieldOption","path","updateOnImageChange","undefined","descriptionField","options","aiAssist","imageDescriptionField","getImageInstructionFieldOption","imageInstructionField","ReferenceOptions","SchemaType","AssistOptions","isType","isSchemaAssistEnabled","type","options","aiAssist","exclude","isAssistSupported","isDisabled","jsonType","unsupportedArray","of","every","t","unsupportedObject","fields","field","isUnsupportedType","name","embeddingsIndex","createContext","PropsWithChildren","useMemo","FieldMember","ObjectInputProps","pathToString","isAssistSupported","FirstAssistedPathContext","undefined","FirstAssistedPathProviderProps","members","FirstAssistedPathProvider","props","$","_c","t0","firstAssisted","find","_temp","field","path","firstAssistedPath","t1","children","member","kind","schemaType","minutesToMilliseconds","releaseAnnouncementUrl","instructionGuideUrl","giveFeedbackUrl","salesUrl","packageName","pluginTitle","pluginTitleShort","maxHistoryVisibilityMs","getPublishedId","getVersionFromId","isVersionId","assistDocumentIdPrefix","assistDocumentStatusIdPrefix","illegalIdChars","assistDocumentId","documentType","replace","assistTasksStatusId","documentId","useEditState","useDocumentState","id","docType","state","draft","published","T","useEffect","useMemo","ObjectSchemaType","typed","useClient","useCurrentUser","maxHistoryVisibilityMs","assistDocumentId","assistTasksStatusId","assistDocumentTypeName","AssistTasksStatus","assistTasksStatusTypeName","InstructionTask","StudioAssistDocument","StudioAssistField","StudioInstruction","useDocumentState","UseAssistDocumentProps","documentId","schemaType","initDoc","useStudioAssistDocument","t0","$","_c","documentTypeName","name","currentUser","t1","assistDocument","t2","t3","assistTasksStatus","t4","Symbol","for","apiVersion","client","t5","t6","createIfNotExists","_id","_type","catch","_temp","t7","bb0","undefined","t8","tasks","id","fields","map","assistField","filter","task","path","instructions","p","userId","instruction","asStudioInstruction","task_0","instruction_0","find","f","i","_key","instructionKey","run","started","Date","getTime","useToast","addSeconds","isAfter","useEffect","useRef","ObjectSchemaType","useCurrentUser","getInstructionTitle","InstructionTask","useStudioAssistDocument","NO_TASKS","useInstructionToaster","documentId","documentSchemaType","$","_c","t0","schemaType","assistDocument","assistDocLoaded","currentUser","toast","tasks","previousTasks","t1","id","current","prevTaskByKey","Object","fromEntries","map","_temp","endedTasks","filter","task","startedByUserId","task_0","prevTask","_key","ended","_temp2","forEach","task_2","title","instruction","reason","push","status","description","message","closable","duration","t2","task_1","Date","run","useLayer","useMemo","InputProps","ObjectInputProps","ObjectSchemaType","useDocumentPane","ConnectFromRegion","assistFormId","usePathKey","isType","FirstAssistedPathProvider","assistDocumentTypeName","useInstructionToaster","AssistDocumentInputWrapper","props","$","_c","schemaType","id","t0","documentId","value","_id","renderDefault","t1","AssistDocumentInput","bb0","name","t2","type","t3","members","t4","AssistInput","zIndex","paneKey","pathKey","path","Symbol","for","minWidth","createContext","useContext","DocumentInspector","ObjectSchemaType","PatchEvent","FieldRef","InstructionTask","StudioAssistDocument","AssistDocumentContextValue","assistDocument","loading","documentIsNew","assistableDocumentId","documentIsAssistable","documentSchemaType","openInspector","inspectorName","paneParams","Record","closeInspector","inspector","selectedPath","documentOnChange","event","syntheticTasks","addSyntheticTask","syntheticTask","removeSyntheticTask","fieldRefs","fieldRefsByTypePath","AssistDocumentContext","undefined","useAssistDocumentContext","context","Error","createContext","useContext","FieldRef","AssistPluginConfig","SerializedSchemaType","InstructStatus","AiAssistanceConfigContextValue","config","status","statusLoading","initLoading","init","error","Error","serializedTypes","getFieldRefs","documentType","getFieldRefsByTypePath","Record","AiAssistanceConfigContext","useAiAssistanceConfig","context","useSerializedTypes","BlockContentIcon","BlockquoteIcon","DocumentIcon","ImageIcon","LinkIcon","OlistIcon","StringIcon","extractWithPath","ComponentType","useMemo","ArraySchemaType","isKeySegment","isObjectSchemaType","ObjectSchemaType","Path","pathToString","SanityDocumentLike","SchemaType","stringToPath","PaneRouterContextValue","usePaneRouter","useAiAssistanceConfig","isAssistSupported","isPortableTextArray","isType","AssistInspectorRouteParams","documentRootKey","FieldRef","key","path","title","schemaType","icon","synthetic","maxDepth","getTypeIcon","t","type","jsonType","asFieldRefsByTypePath","fieldRefs","Record","lookup","reduce","acc","ref","getDocumentFieldRef","getFieldRefs","parent","depth","fields","filter","f","name","startsWith","flatMap","field","fieldRef","patchableKey","join","syntheticFields","getSyntheticFields","of","itemType","segment","_key","getTypePath","doc","pathString","undefined","currentPath","valid","syntheticPath","map","push","match","value","_type","pathKey","replace","useTypePath","$","_c","t0","useSelectedField","documentSchemaType","selectableFields","t1","find","getFieldTitle","AiPaneRouter","Omit","params","setParams","p","useAiPaneRouter","paneRouter","SanityClient","useToast","useCallback","useMemo","useState","Path","pathToString","useClient","useCurrentUser","useAiAssistanceConfig","useSerializedTypes","ConditionalMemberState","FieldLanguageMap","documentRootKey","UserTextInstance","blockKey","userInput","RunInstructionRequest","documentId","assistDocumentId","path","typePath","instructionKey","userId","userTexts","conditionalMembers","InstructStatus","enabled","initialized","validToken","TranslateRequest","translatePath","languagePath","styleguide","Promise","fieldLanguageMap","basePath","API_VERSION_WITH_EXTENDED_TYPES","canUseAssist","status","useApiClient","customApiClient","$","_c","t0","Symbol","for","apiVersion","client","t1","useTranslate","apiClient","loading","setLoading","user","types","toast","id","run","request","method","url","config","dataset","projectId","body","userStyleguide","length","catch","e","push","title","description","message","finally","setTimeout","translate","useGenerateCaption","generateCaption","useGenerateImage","generateImage","useGetInstructStatus","getInstructStatus","useInitInstruct","initInstruct","useRunInstructionApi","assist","assistConfig","timeZone","locale","Intl","DateTimeFormat","resolvedOptions","defaultLocaleSettings","localeSettings","defaultSettings","maxPathDepth","runInstruction","t2","PlayIcon","Button","Dialog","Flex","Stack","Text","TextArea","Tooltip","createContext","Dispatch","FormEvent","PropsWithChildren","SetStateAction","useCallback","useContext","useEffect","useId","useMemo","useRef","useState","FormFieldHeaderText","CustomInputResult","GetUserInput","getInstructionTitle","UserInputBlock","userInputTypeName","useApiClient","useRunInstructionApi","useAiAssistanceConfig","RunInstructionArgs","BlockInputs","Record","NO_INPUT","RunInstructionContextValue","runInstruction","req","getUserInput","instructionLoading","RunInstructionContext","undefined","useRunInstruction","isUserInputBlock","block","_type","RunInstructionProvider","props","$","_c","config","apiClient","__customApiClient","runInstructionRequest","loading","id","inputs","setInputs","runRequest","setRunRequest","resolveUserInput","setResolveUserInput","t0","Symbol","for","t1","title","inputs_0","userInputBlocks","map","_temp","length","dialogTitle","Promise","resolve","instruction","request","instructionKey","_key","userInputBlocks_0","prompt","flatMap","_temp2","filter","userTexts","t2","close","t3","instruction_0","_","request_0","Object","entries","_temp3","userInputs","values","input_0","i_0","userInputBlock","i","input","message","description","result","runWithInput","open","t4","_temp4","runDisabled","t5","width","t6","runButton","t7","contextValue","t8","block_0","i_1","t9","children","value_0","value","key","blockKey","userInput","UserInput","autoFocus","textAreaRef","e","current","currentTarget","target","onChange","setTimeout","focus","resize","useCallback","useEffect","useState","ObjectSchemaType","PatchEvent","SanityDocument","unset","useRunInstruction","DraftDelayedTaskArgs","documentOnChange","event","isDocAssistable","task","args","T","documentSchemaType","published","draft","liveEdit","useRequestRunInstruction","$","_c","runInstruction","instructionLoading","t0","requestRunInstruction","useDraftDelayedTask","t1","queuedArgs","setQueuedArgs","undefined","t2","taskArgs","from","useCallback","useEffect","useMemo","useState","getDraftId","getVersionId","ObjectSchemaType","usePerspective","useSchema","useDocumentPane","useAiPaneRouter","useAiAssistanceConfig","fieldPathParam","InstructionTask","AssistDocumentContextValue","isDocAssistable","useStudioAssistDocument","useAssistDocumentContextValue","documentId","documentType","$","_c","schema","getFieldRefs","getFieldRefsByTypePath","t0","t1","get","schemaType","Error","documentSchemaType","t2","t3","t4","fieldRefs","fieldRefsByTypePath","openInspector","closeInspector","inspector","onChange","documentOnChange","editState","selectedReleaseId","t5","draft","published","version","t6","liveEdit","assistableDocumentId","documentIsNew","_id","t7","documentIsAssistable","params","selectedPath","t8","assistDocument","syntheticTasks","addSyntheticTask","removeSyntheticTask","useSyntheticTasks","t9","bb0","t10","base","t11","loading","undefined","value","setSyntheticTasks","_temp","Symbol","for","task","current","task_0","current_0","filter","t","_key","PropsWithChildren","AssistDocumentContext","useAssistDocumentContextValue","AIDocumentInputProps","documentId","documentType","AssistDocumentContextProvider","props","$","_c","value","t0","children","DocumentLayoutProps","AssistDocumentContextProvider","AssistDocumentLayout","props","$","_c","documentId","documentType","t0","renderDefault","t1","ReactElement","ReactNode","Ref","keyframes","styled","fadeIn","FadeInDiv","div","FadeInContent","t0","$","_c","children","durationMs","t1","ref","undefined","t2","t3","animationDuration","t4","purple","SparklesIcon","Text","CSSProperties","useMemo","useColorSchemeValue","keyframes","styled","Root","span","dash","Outline","svg","IconDisc","AssistAvatar","props","state","scheme","style","hex","color","Card","Flex","Text","Tooltip","FormNodePresence","FadeInContent","AssistAvatar","AiFieldPresence","_props","$","_c","t0","Symbol","for","position","background","t1","t2","useMemo","FormNodePresence","isKeySegment","Path","stringToPath","useAssistDocumentContext","maxHistoryVisibilityMs","pluginTitle","AiPresence","NO_PRESENCE","useAssistPresence","path","showFocusWithin","$","_c","context","assistDocument","undefined","tasks","t0","bb0","activePresence","filter","_temp","flatMap","_temp2","_temp3","presence","length","statusPath","every","pathSegment","i","statusSegment","_key","t1","status","aiPresence","map","p","started","Date","getTime","task_0","task","ended","_title","user","id","displayName","sessionId","lastActiveAt","toISOString","Box","Flex","useMemo","FieldProps","isArraySchemaType","assistFormId","isAssistSupported","isPortableTextArray","isType","AiFieldPresence","useAssistPresence","contextDocumentTypeName","AssistFieldWrapper","props","$","_c","schemaType","isSupported","name","startsWith","t0","renderDefault","inputId","children","AssistField","isPortableText","presence","path","singlePresence","t1","t2","actions","t3","__internal_slot","Box","Button","Card","ErrorBoundary","Flex","Stack","Text","ErrorInfo","PropsWithChildren","useCallback","useMemo","useState","InputProps","isArraySchemaType","PatchEvent","unset","styled","isPortableTextArray","WrapPreCard","SafeValueInput","props","$","_c","t0","t1","onChange","ErrorWrapper","error","setError","Symbol","for","params","catchError","from","undefined","unsetValue","t2","dismiss","t3","children","catcher","t4","PteValueFixer","isPortableText","schemaType","value","length","renderDefault","Box","Flex","useCallback","BlockProps","PatchEvent","useFormCallbacks","ErrorWrapper","AiFieldPresence","useAssistPresence","AssistFormBlock","props","$","_c","presence","path","onChange","key","value","_key","t0","patchEvent","from","prefixAll","localOnChange","singlePresence","t1","renderDefault","t2","t3","t4","t5","createContext","BlockProps","InlineBlockValueContext","undefined","AssistInlineFormBlock","props","$","_c","t0","value","t1","renderDefault","t2","t3","Box","Flex","ItemProps","AiFieldPresence","useAssistPresence","AssistItem","props","$","_c","path","presence","t0","Symbol","for","position","t1","renderDefault","t2","t3","map","_temp","t4","pre","user","id","right","Box","BoxProps","Flex","focusFirstDescendant","Spinner","Text","React","HTMLProps","useEffect","useEffectEvent","useMemo","useRef","tap","createPatchChannel","DocumentMutationEvent","DocumentRebaseEvent","FormBuilder","fromMutationPatches","PatchMsg","useDocumentPresence","useDocumentStore","useDocumentPane","assistFormId","preventDefault","ev","FormEvent","DocumentForm","props","$","_c","collapsedFieldSets","collapsedPaths","displayed","value","documentId","documentType","editState","formState","onBlur","onChange","onFocus","onPathOpen","onSetActiveFieldGroup","onSetCollapsedFieldSet","onSetCollapsedPath","ready","validation","documentStore","presence","t0","Symbol","for","patchChannel","isLocked","transactionSyncLock","enabled","t1","pair","sub","documentEvents","pipe","event","type","publish","prepareMutationEvent","prepareRebaseEvent","subscribe","unsubscribe","t2","hasRev","Boolean","_rev","t3","patches","snapshot","patchChannelPublish","t4","t5","formRef","t6","t7","current","t8","t9","focusPath","changed","focused","groups","members","readOnly","schemaType","mutations","map","mut","patch","filter","document","origin","remotePatches","remoteMutations","localPatches","localMutations","concat","createContext","AssistTypeContextValue","typePath","documentType","AssistTypeContext","ArrayOfObjectsFormNode","ArrayOfObjectsItemMember","ArrayOfPrimitivesFormNode","DocumentFormNode","FieldsetState","isObjectSchemaType","ObjectFormNode","Path","pathToString","SchemaType","DEFAULT_MAX_DEPTH","ABSOLUTE_MAX_DEPTH","ConditionalMemberState","path","hidden","readOnly","ConditionalMemberInnerState","conditional","getConditionalMembers","docState","maxDepth","doc","isConditional","schemaType","extractConditionalPaths","Math","min","filter","v","map","_conditional","state","conditionalState","memberState","node","length","members","reduce","acc","member","kind","field","jsonType","innerFields","array","arrayPaths","isObjectsArray","some","m","item","arrayMember","conditionalFieldset","fieldsets","f","single","name","fieldSet","SparklesIcon","Box","Button","Container","Flex","Stack","Text","styled","releaseAnnouncementUrl","SparklesIllustration","strokeWidth","InspectorOnboarding","props","$","_c","onDismiss","t0","t1","Symbol","for","textAlign","t2","useCallback","useState","inspectorOnboardingKey","isFeatureOnboardingDismissed","featureKey","localStorage","value","getItem","dismissFeatureOnboarding","setItem","useOnboardingFeature","$","_c","t0","showOnboarding","setShowOnboarding","t1","dismissOnboarding","t2","SearchIcon","Autocomplete","Box","Breadcrumbs","Card","Flex","Text","useCallback","useMemo","ObjectSchemaType","useAiAssistanceConfig","isType","FieldRef","getDocumentFieldRef","FieldSelectorProps","id","schemaType","fieldPath","onSelect","path","includeDocument","filter","field","FieldAutocomplete","props","$","_c","getFieldRefs","t0","bb0","refs","name","t1","fieldRefs","t2","f","key","find","currentField","t3","_temp","map","_temp2","autocompleteOptions","renderOption","_temp3","renderValue","_temp4","filterOption","_temp5","icon","t4","t5","query","option_1","lQuery","toLowerCase","option","value","includes","title","value_0","option_0","field_1","field_0","f_0","FieldTitle","T0","T1","splitTitle","split","Symbol","for","display","flexWrap","alignItems","marginTop","slice","length","_temp6","t6","t7","t8","pt","i","trim","formatDistanceToNow","useEffect","useReducer","useInterval","ms","$","_c","tick","update","_temp","t0","t1","i","setInterval","clearInterval","n","TimeAgo","date","Date","timeSince","t2","CheckmarkCircleIcon","ClockIcon","CloseCircleIcon","ErrorOutlineIcon","SyncIcon","Box","Button","Card","Flex","Popover","Spinner","Stack","Text","useClickOutside","useGlobalKeyDown","useLayer","Ref","useCallback","useMemo","useState","StatusButton","StatusButtonProps","typed","useClient","keyframes","styled","TimeAgo","maxHistoryVisibilityMs","pluginTitle","assistTasksStatusId","getInstructionTitle","AssistTasksStatus","InstructionTask","StudioInstruction","TaskEndedReason","InstructionTaskHistoryButtonProps","documentId","tasks","instructions","showTitles","CancelableInstructionTask","cancel","title","rotate","SyncSpinningIcon","TASK_CONFIG","aborted","icon","tone","error","success","timeout","const","InstructionTaskHistoryButton","props","client","apiVersion","cancelRun","taskKey","statusDocId","basePath","patch","set","Date","toISOString","commit","catch","console","titledTasks","t","filter","task","started","getTime","map","instruction","find","i","_key","instructionKey","undefined","sort","a","b","isRunning","some","r","ended","hasErrors","reason","open","setOpen","toggleOpen","v","button","setButton","HTMLButtonElement","popover","setPopover","HTMLDivElement","handleClickOutside","handleEscape","focus","length","TASK_STATUS_BUTTON_TOOLTIP_PROPS","NonNullable","placement","TaskStatusButton","$","_c","disabled","onClick","selected","ref","t0","t1","t2","TaskList","onEscape","isTopLayer","event","key","_temp","TaskItem","taskType","TaskIcon","t3","t4","t5","t6","t7","message","t8","t9","t10","t11","t12","t13","t14","ArrowRightIcon","CloseIcon","PlayIcon","RetryIcon","Box","Button","Card","Flex","Spinner","Stack","Text","useCallback","useMemo","useRef","DocumentInspectorProps","PerspectiveProvider","PresenceOverlay","VirtualizerScrollInstanceProvider","DocumentInspectorHeader","DocumentPaneNode","DocumentPaneProvider","useDocumentPane","styled","DocumentForm","useAssistDocumentContext","AssistTypeContext","useStudioAssistDocument","useRequestRunInstruction","useAiAssistanceConfig","giveFeedbackUrl","pluginTitle","releaseAnnouncementUrl","salesUrl","getConditionalMembers","assistDocumentId","InspectorOnboarding","inspectorOnboardingKey","useOnboardingFeature","assistDocumentTypeName","fieldPathParam","instructionParam","FieldTitle","FieldRef","getFieldTitle","useAiPaneRouter","useSelectedField","useTypePath","InstructionTaskHistoryButton","CardWithShadowBelow","CardWithShadowAbove","AssistInspectorWrapper","props","$","_c","context","statusLoading","t0","Symbol","for","textAlign","status","enabled","onClose","t1","t2","t3","t4","initialized","validToken","error","t5","t6","initLoading","undefined","t7","t8","init","t9","t10","AssistInspector","params","boundary","HTMLDivElement","pathKey","instructionKey","documentPane","documentId","documentType","value","docValue","schemaType","onChange","documentOnChange","formState","assistableDocumentId","documentIsAssistable","formStateRef","current","instructionLoading","requestRunInstruction","isDocAssistable","typePath","selectedField","aiDocId","assistDocument","initDoc","assistField","fields","find","f","path","instruction","instructions","i","_key","tasks","filter","flatMap","promptValue","prompt","isEmptyPrompt","length","firstBlock","children","text","paneNode","type","id","title","options","runCurrentInstruction","conditionalMembers","Region","_props","height","flex","overflow","assistTypeContext","jsonType","lineHeight","minHeight","paneKey","index","whiteSpace","justifySelf","name","marginTop","AiInspectorHeader","field","fieldTitle","showOnboarding","dismissOnboarding","SparklesIcon","DocumentInspector","typed","pluginTitle","AssistInspectorRouteParams","fieldPathParam","instructionParam","AssistInspectorWrapper","aiInspectorId","assistInspector","name","useMenuItem","icon","title","hidden","showAsAction","component","onClose","params","undefined","ConnectorOptions","arrowPath","options","x","y","dir","arrow","size","join","ConnectorLine","ConnectorOptions","moveTo","x","y","lineTo","join","strings","delim","quadCurve","x1","y1","drawConnectorPath","options","line","cornerRadius","path","from","to","fromX","fromY","_toX","toY","toX","dividerX","bounds","divider","offsetX","fromPathX","isAbove","isBelow","arrow","marginX","r0","Math","min","abs","r1","cmds","push","threshold","marginY","h","rgba","useTheme","useMemo","ConnectorOptions","mapConnectorToLine","Rect","arrowPath","drawConnectorPath","ConnectorPath","props","$","_c","from","options","to","strokeWidth","path","theme","t0","line","t1","t2","t3","sanity","color","base","bg","t4","t5","border","t6","t7","bounds","isAbove","x","arrow","marginX","y","threshold","marginY","t8","isBelow","h","t9","Fragment","useEffect","useState","Connector","ConnectorOptions","ConnectorPath","DEBUG","options","arrow","marginX","marginY","size","threshold","divider","offsetX","path","cornerRadius","strokeWidth","AssistConnectorsOverlay","props","$","_c","connectors","setRedraw","t0","t1","Symbol","for","t2","position","top","left","width","height","pointerEvents","zIndex","t3","map","_temp","t4","window","innerWidth","innerHeight","t5","_temp2","t6","key","from","to","bounds","y","x","w","h","overflow","outline","outlineOffset","element","border","boxSizing","connector","packageName","TranslateStyleguide","TranslateStyleguideContext","validateStyleguide","styleguide","length","Error","createStyleGuideResolver","context","styleguideResult","get","SanityDocumentLike","getLanguageParams","select","Record","document","selection","selectedValue","key","path","Object","entries","value","Array","isArray","filter","item","_type","toFieldLanguagesKeyPrefix","getPreferredToFieldLanguages","fromLanguageId","localStorage","value","getItem","JSON","parse","setPreferredToFieldLanguages","languageIds","setItem","stringify","whatwgRNG","length","rnds8","Uint8Array","crypto","getRandomValues","getByteHexTable","table","i","toString","substring","randomKey","reduce","str","n","slice","extractWithPath","isDocumentSchemaType","isKeySegment","ObjectSchemaType","Path","pathToString","SanityDocumentLike","isRecord","randomKey","DocumentMember","TranslationOutput","TranslationOutputsFunction","FieldLanguageMap","inputLanguageId","inputPath","outputs","relativeLanguagePath","DEFAULT_MAX_DEPTH","ABSOLUTE_MAX_DEPTH","getDocumentMembersFlat","doc","schemaType","maxDepth","console","error","extractPaths","Math","min","path","length","fields","reduce","acc","field","fieldPath","name","fieldSchema","type","parentValue","value","undefined","thisFieldWithPath","jsonType","innerFields","of","some","item","arrayValue","arrayPaths","itemPath","_key","itemSchema","find","t","_type","warn","arrayMember","InternationalizedArrayItemValue","language","isInternationalizedArrayItemValue","defaultLanguageOutputs","member","enclosingType","translateFromLanguageId","translateToLanguageIds","startsWith","isV5InternationalizedArrayItem","map","translateToId","outputPathKey","Array","isArray","id","outputPath","slice","pathEnd","getFieldLanguageMap","documentSchema","documentMembers","outputLanguageIds","langFn","translationMaps","parentPath","m","translations","filter","translation","push","PlayIcon","Box","Button","Checkbox","Dialog","Flex","Radio","Spinner","Stack","Text","Tooltip","createContext","PropsWithChildren","useCallback","useContext","useId","useMemo","useState","ObjectSchemaType","Path","pathToString","SanityDocumentLike","useClient","useAiAssistanceConfig","ConditionalMemberState","createStyleGuideResolver","API_VERSION_WITH_EXTENDED_TYPES","useApiClient","useTranslate","getLanguageParams","getPreferredToFieldLanguages","setPreferredToFieldLanguages","defaultLanguageOutputs","FieldLanguageMap","getDocumentMembersFlat","getFieldLanguageMap","Language","FieldTranslationParams","document","documentSchema","translatePath","conditionalMembers","FieldTranslationContextValue","openFieldTranslation","args","translationLoading","FieldTranslationContext","useFieldTranslation","hasValuesToTranslate","fieldLanguageMaps","fromLanguage","basePath","some","map","inputLanguageId","id","inputPath","startsWith","FieldTranslationProvider","props","$","_c","config","assistConfig","apiClient","__customApiClient","styleguide","translate","field","runTranslate","dialogOpen","setDialogOpen","fieldTranslationParams","setFieldTranslationParams","languages","setLanguages","setFromLanguage","undefined","toLanguages","setToLanguages","setFieldLanguageMaps","t0","Symbol","for","close","t1","apiVersion","t2","languageClient","documentId","_id","t3","maxPathDepth","translationOutputs","from","languages_0","params","preferred","allToLanguages","filter","l","filteredToLanguages","l_0","length","includes","fromId","allToIds","_temp","docMembers","transMap","toId","selectFromLanguage","t4","toggledLang","toLanguages_0","languages_1","wasSelected","find","l_2","newToLangs","anyLang","selectedLang","_temp2","toggleToLanguage","t5","params_0","languageParams","selectLanguageParams","languages_2","Promise","resolve","fromLanguage_0","console","error","t6","contextValue","t7","runDisabled","t8","client","schemaType","fieldLanguageMap","outputs","out","l_4","onRunTranslation","t9","width","t10","runButton","t11","radioLanguage","checkboxLanguage","t12","children","l_3","l_1","ToLanguageCheckbox","langId","onChange","opacity","tl","title","FromLanguageRadio","ArraySchemaType","ImageOptions","isArraySchemaType","ObjectSchemaType","ReferenceOptions","ReferenceSchemaType","Schema","SchemaType","typed","isAssistSupported","isType","assistSchemaIdPrefix","assistSerializedFieldTypeName","assistSerializedTypeName","SerializedSchemaMember","SerializedSchemaType","hiddenTypes","Options","leanFormat","inlineTypes","serializeSchema","schema","options","list","getTypeNames","filter","t","includes","startsWith","map","get","getSchemaStub","to","length","of","fields","sort","a","b","name","localeCompare","schemaType","type","console","error","Error","baseSchema","_id","_type","title","getBaseFields","removeUndef","typeName","schemaOptions","imagePromptField","aiAssist","imageInstructionField","embeddingsIndex","Object","keys","undefined","values","Array","isArray","v","value","arrayOf","refToTypeNames","serializeFields","annotations","serializeAnnotations","inlineOf","serializeInlineOf","hidden","const","readOnly","fieldsets","flatMap","fs","single","field","f","serializeMember","typeNameExists","blockSchemaType","childrenField","find","childrenType","markDefs","marksType","arrayType","Record","obj","T","forEach","key","ObjectSchemaType","asFieldRefsByTypePath","FieldRef","getFieldRefs","createFieldRefs","createFieldRefCache","byType","Record","fieldRefs","fieldRefsByTypePath","getRefsForType","schemaType","documentType","name","cached","refs","ReactNode","useCallback","useEffect","useMemo","useState","ObjectSchemaType","Schema","useSchema","AssistPluginConfig","serializeSchema","InstructStatus","useApiClient","useGetInstructStatus","useInitInstruct","AiAssistanceConfigContext","AiAssistanceConfigContextValue","createFieldRefCache","AiAssistanceConfigProvider","props","$","_c","status","setStatus","error","setError","apiClient","config","__customApiClient","getInstructStatus","loading","statusLoading","initInstruct","initLoading","schema","t0","leanFormat","serializedTypes","getFieldRefs","getFieldRefsByTypePath","useFieldRefGetters","t1","t2","then","s","catch","e","console","Error","t3","undefined","status_0","t4","init","children","context","t5","Symbol","for","getForSchemaType","getRefsForType","documentType","schemaType","get","documentType_0","fieldRefs","documentType_1","fieldRefsByTypePath","ThemeProvider","useState","LayoutProps","Connector","ConnectorsProvider","AssistConnectorsOverlay","AssistPluginConfig","FieldTranslationProvider","StudioInstruction","RunInstructionRequest","AiAssistanceConfigProvider","RunInstructionProvider","AIStudioLayoutProps","config","RunInstructionArgs","Omit","instruction","AssistLayout","props","$","_c","t0","Symbol","for","connectors","setConnectors","t1","t2","renderDefault","t3","t4","t5","createContext","useEffect","useMemo","useState","getPublishedId","InputProps","pathToString","usePerspective","useSyncState","usePaneRouter","useAssistDocumentContext","useAiAssistanceConfig","getDescriptionFieldOption","getImageInstructionFieldOption","canUseAssist","useApiClient","useGenerateCaption","ImageContextValue","imageDescriptionPath","imageInstructionPath","assetRef","ImageContext","ImageContextProvider","props","$","_c","schemaType","path","value","readOnly","asset","_ref","selectedReleaseId","assetRefState","setAssetRefState","assistableDocumentId","documentSchemaType","config","status","apiClient","__customApiClient","generateCaption","t0","isSyncing","name","router","isShowingOlderRevision","params","rev","t1","t2","descriptionField","updateOnImageChange","documentId","t3","t4","descriptionField_0","imageInstructionField","undefined","t5","context","t6","renderDefault","t7","icons","Icon","IconSymbol","Button","Menu","MenuButton","MenuItem","useCallback","useId","useMemo","set","StringInputProps","IconInput","props","$","_c","value","onChange","id","t0","Symbol","for","Object","keys","filter","isIconSymbol","t1","map","key","items","t2","getIcon","selectedSymbol","t3","t4","maxHeight","t5","t6","portal","t7","IconItem","iconKey","onClick","iconName","useMemo","Path","SchemaType","isAssistSupported","useAssistSupported","_path","schemaType","$","_c","t0","TranslateIcon","Box","Spinner","useMemo","useRef","DocumentFieldAction","DocumentFieldActionGroup","DocumentFieldActionItem","DocumentFieldActionProps","ObjectSchemaType","useClient","useDocumentPane","useDraftDelayedTask","useAiAssistanceConfig","isAssistSupported","getConditionalMembers","createStyleGuideResolver","AssistOptions","API_VERSION_WITH_EXTENDED_TYPES","useApiClient","useTranslate","useFieldTranslation","node","TranslateProps","documentIsAssistable","documentSchemaType","translateActions","name","useAction","props","config","status","apiClient","__customApiClient","client","apiVersion","schemaType","fieldSchemaType","path","documentId","isDocumentLevel","length","readOnly","docTransTypes","translate","document","documentTypes","options","addFieldAction","aiAssist","translateAction","fieldTransEnabled","field","includes","documentTranslationEnabled","isActive","value","documentValue","onChange","documentOnChange","formState","docRef","current","formStateRef","translationApi","isDocAssistable","task","styleguide","languagePath","languageField","translateDocumentAction","undefined","title","type","icon","loading","height","transform","onAction","translatePath","conditionalMembers","renderAsButton","disabled","fieldTranslate","openFieldTranslation","maxDepth","maxPathDepth","translateFieldsAction","translationLoading","_id","documentSchema","initialized","children","filter","c","expanded","AgentActionPath","ToastParams","useToast","useMemo","DocumentFieldActionDivider","DocumentFieldActionGroup","DocumentFieldActionItem","DocumentFieldActionNode","ObjectSchemaType","Path","SanityDocumentLike","SchemaType","useWorkspaceSchemaId","randomKey","useAssistDocumentContext","useAiAssistanceConfig","isDefined","documentRootKey","fieldPresenceTypeName","InstructionTask","instructionTaskTypeName","AgentActionConditionalPath","path","readOnly","hidden","AssistFieldActionProps","actionType","documentIdForAction","documentSchemaType","getDocumentValue","getConditionalPaths","schemaId","schemaType","parentSchemaType","AssistFieldActionNode","AssistFieldActionItem","AssistFieldActionGroup","Omit","onAction","Promise","children","PushToast","params","defineAssistFieldAction","action","type","defineFieldActionDivider","defineAssistFieldActionGroup","group","useCustomFieldActions","props","config","fieldActions","addSyntheticTask","removeSyntheticTask","push","pushToast","configActions","useFieldActions","title","customActions","filter","map","node","createSafeNode","onlyGroups","length","every","groups","expanded","args","task","createSafeAction","child","undefined","renderAsButton","runAction","_type","_key","started","Date","toISOString","presence","actionResult","err","console","error","description","message","status","selected","ImageIcon","Box","Spinner","useContext","useMemo","DocumentFieldAction","DocumentFieldActionGroup","DocumentFieldActionItem","useDocumentPane","useAssistDocumentContext","aiInspectorId","useAiAssistanceConfig","ImageContext","usePathKey","fieldPathParam","instructionParam","canUseAssist","useApiClient","useGenerateCaption","node","generateCaptionsActions","name","useAction","props","pathKey","path","openInspector","config","status","apiClient","__customApiClient","generateCaption","loading","imageContext","assistableDocumentId","isActive","imageDescriptionPath","undefined","type","icon","height","transform","title","onAction","documentId","renderAsButton","disabled","hidden","assetRef","ImageIcon","Box","Spinner","useContext","useMemo","DocumentFieldAction","DocumentFieldActionGroup","DocumentFieldActionItem","useAssistDocumentContext","useAiAssistanceConfig","ImageContext","usePathKey","useApiClient","useGenerateImage","node","generateImagActions","name","useAction","props","pathKey","path","config","apiClient","__customApiClient","generateImage","loading","imageContext","assistableDocumentId","isActive","imageInstructionPath","undefined","type","icon","height","transform","title","onAction","documentId","renderAsButton","disabled","LockIcon","Text","Tooltip","PrivateIcon","$","_c","t0","t1","Symbol","for","whiteSpace","t2","AgentActionPath","Icon","ControlsIcon","SparklesIcon","useCallback","useMemo","useRef","DocumentFieldAction","DocumentFieldActionGroup","DocumentFieldActionItem","pathToString","stringToPath","typed","useCurrentUser","useDocumentPane","useAssistDocumentContext","getIcon","useRequestRunInstruction","aiInspectorId","getTypePath","useSelectedField","useTypePath","pluginTitleShort","isSchemaAssistEnabled","getConditionalMembers","getInstructionTitle","usePathKey","useAssistSupported","translateActions","TranslateProps","documentRootKey","fieldPathParam","instructionParam","StudioInstruction","AgentActionConditionalPath","useCustomFieldActions","generateCaptionsActions","generateImagActions","PrivateIcon","node","assistFieldActions","name","useAction","props","schemaType","assistDocument","documentIsNew","documentIsAssistable","openInspector","closeInspector","inspector","documentOnChange","documentSchemaType","selectedPath","assistableDocumentId","fieldRefsByTypePath","value","docValue","formState","docValueRef","formStateRef","current","currentUser","isHidden","pathKey","path","typePath","assistDocumentId","_id","requestRunInstruction","isDocAssistable","isSelectable","assistSupported","readOnly","fieldAssist","fields","find","f","fieldAssistKey","_key","isInspectorOpen","isPathSelected","isSelected","imageCaptionAction","imageGenAction","translateAction","documentId","manageInstructions","undefined","onInstructionAction","instruction","conditionalMembers","privateInstructions","instructions","filter","i","userId","id","sharedInstructions","runInstructionsGroup","length","type","icon","title","children","map","instructionItem","isPrivate","Boolean","hidden","a","expanded","getDocumentValue","getConditionalPaths","flatMap","cm","some","s","parentSchemaType","parentPath","slice","customActions","actionType","documentIdForAction","manageInstructionsItem","onAction","selected","group","c","renderAsButton","emptyAction","ins","IconLeft","$","_c","t0","Symbol","for","iconRight","disabled","Card","Flex","useMemo","useAssistDocumentContext","documentRootKey","fieldPresenceTypeName","AiFieldPresence","aiPresence","createAssistDocumentPresence","documentId","AssistDocumentPresenceWrapper","AssistDocumentPresence","assistDocument","syntheticTasks","anyPresence","tasks","filter","run","ended","reason","flatMap","presence","find","f","started","Date","getTime","anyRun","path","_key","_type","undefined","ArrowLeftIcon","Button","useCallback","useDocumentPane","aiInspectorId","instructionParam","BackToInstructionListLink","$","_c","openInspector","t0","undefined","goBack","t1","createContext","ObjectSchemaType","SchemaType","SelectedFieldContextValue","documentSchema","fieldSchema","SelectedFieldContext","undefined","SelectedFieldContextProvider","Provider","Card","Stack","Text","useContext","useEffect","useMemo","useRef","FieldError","FormCallbacksProvider","FormCallbacksValue","FormInput","insert","KeyedSegment","MemberFieldError","ObjectInputProps","ObjectSchemaType","PatchEvent","Path","SchemaType","set","setIfMissing","stringToPath","typed","useFormCallbacks","useSchema","useAiPaneRouter","useAiAssistanceConfig","AssistDocument","AssistField","assistFieldTypeName","AssistInspectorRouteParams","documentRootKey","fieldPathParam","instructionParam","StudioInstruction","AssistTypeContext","BackToInstructionListLink","SelectedFieldContextProvider","SelectedFieldContextValue","EMPTY_FIELDS","AssistDocumentForm","props","$","_c","readOnly","t0","Symbol","for","AssistDocumentFormEditable","onChange","value","id","_id","fields","params","setParams","pathKey","typePath","documentType","targetDocumentType","instruction","bb0","undefined","t1","find","f","path","_key","activeKey","bb1","t2","base","t3","activePath","schema","bb2","get","documentSchema","fieldSchema","useSelectedSchema","t4","context","title","t5","t6","startsWith","name","t7","formCallbacks","onPathOpen","t8","length","Record","setTimeout","t9","newCallbacks","t10","t11","t12","bb3","t13","members","_temp","fieldError","t14","fieldError_0","t15","lineHeight","t16","renderDefault","t17","t18","m","kind","fieldName","fieldPath","currentSchema","i","segment","field","type","jsonType","FieldsInitializer","config","__presets","presets","existingField","documentPresets","existingInstructions","instructions","presetField","f_0","filter","some","ei","missingPresetInstructions","initialized","current","event","from","append","_type","map","_temp3","preset","prompt","_temp2","p","markDefs","Box","Flex","Text","useContext","PreviewProps","InlineBlockValueContext","useSelectedField","SelectedFieldContext","FieldRefPreview","props","$","_c","actions","documentSchema","path","selectedField","t0","Symbol","for","width","t1","title","t2","t3","t4","FieldProps","HiddenFieldTitle","props","renderDefault","title","level","changed","Card","Flex","Switch","Text","useCallback","useId","set","StringInputProps","unset","useCurrentUser","InstructionVisibility","props","$","_c","value","onChange","user","t0","id","newValue","handleChange","t1","Symbol","for","margin","t2","t3","t4","elementProps","readOnly","t5","t6","Box","useCallback","useContext","useEffect","useId","useRef","set","StringInputProps","FieldAutocomplete","FieldRef","AssistTypeContext","SelectedFieldContext","FieldRefPathInput","props","$","_c","documentSchema","typePath","ref","id","onChange","t0","t1","Symbol","for","current","querySelector","focus","t2","path","onSelect","t3","field","key","includes","fieldSegments","split","lastArrayItemIndex","findLastIndex","_temp","mustStartWith","slice","join","startsWith","filter","t4","renderDefault","minWidth","t5","value","s","FieldError","FieldMember","FieldSetMember","ObjectMember","findFieldMember","members","fieldName","find","m","kind","name","findFieldsetMember","fieldsetName","fieldSet","Box","Flex","Stack","Text","useId","useMemo","FieldError","FieldMember","ObjectInputMember","ObjectInputProps","findFieldMember","findFieldsetMember","InstructionInput","props","$","_c","t0","Symbol","for","t1","ObjectMember","fieldName","t2","members","member","NONE","NameField","fieldsetMember","titleId","fieldSet","iconMember","titleMember","titlePlaceholder","bb0","undefined","kind","field","schemaType","t3","placeholder","t4","t5","moddedTitleMember","marginLeft","t6","ShareField","visibilityMember","useCallback","useContext","useState","ArrayFieldProps","ArraySchemaType","isArrayOfObjectsSchemaType","isObjectSchemaType","ObjectSchemaType","SelectedFieldContext","InstructionOutputField","props","$","_c","fieldSchema","t0","children","EnabledOutputField","open","setOpen","value","length","t1","Symbol","for","onExpand","t2","onCollapse","renderDefault","collapsible","collapsed","level","title","Card","Checkbox","Flex","Stack","Text","useCallback","useContext","useEffect","useMemo","ArrayOfObjectsInputProps","ArraySchemaType","FormPatch","insert","isArrayOfObjectsSchemaType","isObjectSchemaType","ObjectSchemaType","PatchEvent","setIfMissing","typed","unset","isAssistSupported","isType","OutputFieldItem","outputFieldTypeName","OutputTypeItem","SelectedFieldContext","InstructionOutputInput","props","$","_c","fieldSchema","t0","useEmptySelectAllValue","value","allowedValues","onChange","t1","validValues","filter","v","find","f","name","_type","relativePath","type","valueLength","length","validLength","from","ObjectOutputInput","fields","_temp","t2","checked","selectedValue","_key","items","map","_temp2","patchValue","onSelectChange","t3","t4","field_1","field","title","field_0","ArrayOutputInput","of","_temp3","ofItems","_temp4","itemType_0","itemType","Selectable","arrayValue","handleChange","Symbol","for","cursor","t5","t6","t7","ArrowRightIcon","Box","Stack","Text","useEffect","ArrayOfObjectsInputProps","set","typed","styled","randomKey","instructionGuideUrl","PromptBlock","PromptTextBlock","PteMods","PromptInput","props","$","_c","useOnlyInlineBlocks","t0","Symbol","for","t1","renderDefault","t2","needsFix","val","value","map","block","_type","_key","level","markDefs","style","children","onChange","ArrayFieldProps","InstructionsArrayField","props","renderDefault","title","useMemo","ArrayOfObjectsInputProps","useCurrentUser","StudioInstruction","InstructionsArrayInput","props","$","_c","user","originalValue","value","originalMembers","members","t0","t1","id","t2","v","userId","filter","t3","t4","v_0","kind","value_0","item","renderDefault","Box","useEffect","useRef","ObjectInputProps","HideReferenceChangedBannerInput","props","$","_c","ref","t0","t1","Symbol","for","parent","current","closest","style","document","createElement","parentId","Math","random","replace","id","innerText","prepend","t2","renderDefault","t3","DocumentTextIcon","TokenIcon","defineArrayMember","defineField","defineType","HideReferenceChangedBannerInput","contextDocumentTypeName","contextDocumentSchema","type","name","title","liveEdit","icon","components","input","fields","of","styles","value","lists","marks","decorators","annotations","preview","select","context","prepare","text","flatMap","block","children","child","split","filter","Boolean","words","length","subtitle","media","Icon","IconSymbol","CodeIcon","ComposeIcon","LockIcon","SparklesIcon","ThListIcon","Box","Flex","Stack","Text","Tooltip","isValidElement","defineArrayMember","defineField","defineType","ObjectSchemaType","AssistDocumentForm","FieldRefPreview","HiddenFieldTitle","IconInput","InstructionVisibility","FieldRefPathInput","InstructionInput","InstructionOutputField","InstructionOutputInput","PromptInput","InstructionsArrayField","InstructionsArrayInput","createFieldRefCache","getInstructionTitle","assistDocumentIdPrefix","assistDocumentTypeName","assistFieldTypeName","assistTasksStatusTypeName","fieldReferenceTypeName","instructionContextTypeName","instructionTaskTypeName","instructionTypeName","outputFieldTypeName","outputTypeTypeName","promptTypeName","userInputTypeName","contextDocumentSchema","fieldReference","type","name","title","icon","fields","components","input","validation","rule","getForSchemaType","custom","value","context","docId","document","_id","targetDocType","replace","RegExp","schema","get","fieldRefs","fieldRef","find","r","key","e","console","error","preview","select","path","prepare","options","modal","userInput","placeholder","description","required","rows","width","promptContext","to","Fix","props","maxWidth","renderDefault","ref","media","prompt","of","styles","lists","marks","decorators","annotations","outputFieldType","outputTypeType","instruction","fieldsets","collapsible","collapsed","userId","IconValue","fieldset","field","initialValue","_params","currentUser","id","readOnly","Boolean","parent","createdById","hidden","fieldInstructions","assistDocumentSchema","liveEdit","instructionTask","documentInstructionStatus","ArrayOfType","FieldProps","SchemaTypeDefinition","assistDocumentSchema","documentInstructionStatus","fieldInstructions","fieldReference","instruction","instructionTask","outputFieldType","outputTypeType","prompt","promptContext","userInput","contextDocumentSchema","excludeComments","type","T","existingRender","components","field","props","newProps","__internal_comments","undefined","renderDefault","fields","map","of","arrayItemType","instructionForm","schemaTypes","SanityClient","definePlugin","isObjectSchemaType","AssistDocumentInputWrapper","AssistDocumentLayout","AssistFieldWrapper","AssistFormBlock","AssistInlineFormBlock","AssistItem","assistInspector","AssistLayout","AssistConfig","ImageContextProvider","SafeValueInput","packageName","assistFieldActions","AssistFieldActionNode","AssistFieldActionProps","isSchemaAssistEnabled","validateStyleguide","isImage","createAssistDocumentPresence","schemaTypes","TranslationConfig","assistDocumentTypeName","AssistPreset","AssistPluginConfig","translate","assist","fieldActions","title","useFieldActions","props","__customApiClient","defaultClient","__presets","Record","config","configWithDefaults","styleguide","maxPathDepth","temperature","undefined","Error","name","handlesGDR","schema","types","i18n","bundles","document","inspectors","prev","context","documentType","docSchema","get","unstable_fieldActions","unstable_languageFilter","documentId","schemaType","components","unstable_layout","studio","layout","Layout","form","input","field","item","block","inlineBlock","plugins","renderDefault","SanityClient","defer","delay","merge","Observable","of","partition","switchMap","throwError","exhaustMapToWithTrailing","filter","mergeMap","share","take","MutationEvent","ReconnectEvent","WelcomeEvent","ListenQueryParams","Record","ListenQueryOptions","tag","apiVersion","throttleTime","transitions","fetch","client","query","params","options","observable","filterResponse","listen","events","includeResult","visibility","isWelcomeEvent","event","type","listenQuery","fetchQuery","listenerQuery","fetchOnce$","events$","pipe","ev","i","isFirst","Error","welcome$","mutationAndReconnect$","isRelevantEvent","includes","transition","useEffect","useRef","useState","isEqual","of","catchError","distinctUntilChanged","ListenQueryOptions","useClient","listenQuery","Params","Record","ReturnShape","loading","error","data","T","Observable","unsubscribe","DEFAULT_PARAMS","DEFAULT_OPTIONS","apiVersion","useListeningQuery","query","t0","t1","$","_c","params","undefined","options","setLoading","setError","setData","subscription","t2","Symbol","for","client","t3","t4","current","pipe","err","console","subscribe","documents","t5","SyncIcon","Box","Button","Card","Flex","Label","Spinner","Stack","useCallback","useMemo","useState","useClient","useSchema","useListeningQuery","assistSerializedTypeName","SerializedSchemaType","serializeSchema","NO_DATA","defaultTitle","SchemaTypeTool","$","_c","schema","t0","Symbol","for","apiVersion","client","saving","setSaving","syncTitle","setSyncTitle","t1","type","data","t2","types","t3","canSave","store","length","transaction","i","createOrReplace","Required","commit","reset","catch","console","error","finally","storeTypes","t4","height","t5","marginTop","t6","t7","t8","map","_temp","t9","t10","t11","t12","_temp2","t13","t14","t15","type_1","name","type_0","SchemaEntry","schemaStub","JSON","stringify","out","useRunInstruction","GetUserInput","args","title","inputs","CustomInput","Promise","CustomInputResult","id","description","input","result","useUserInput","getUserInput"],"sources":["../src/_lib/connector/helpers.ts","../src/_lib/connector/useRegionRects.ts","../src/_lib/connector/ConnectorRegion.tsx","../src/_lib/connector/ConnectorsStoreContext.ts","../src/_lib/connector/useConnectorsStore.ts","../src/_lib/connector/ConnectFromRegion.tsx","../src/_lib/connector/ConnectorsStore.ts","../src/_lib/connector/ConnectorsProvider.tsx","../src/_lib/connector/mapConnectorToLine.ts","../src/_lib/form/constants.ts","../src/types.ts","../src/helpers/misc.ts","../src/helpers/typeUtils.ts","../src/helpers/assistSupported.ts","../src/onboarding/FirstAssistedPathProvider.tsx","../src/constants.ts","../src/helpers/ids.ts","../src/assistDocument/hooks/useDocumentState.ts","../src/assistDocument/hooks/useStudioAssistDocument.ts","../src/assistDocument/hooks/useInstructionToaster.tsx","../src/assistDocument/AssistDocumentInput.tsx","../src/assistDocument/AssistDocumentContext.tsx","../src/assistLayout/AiAssistanceConfigContext.tsx","../src/assistInspector/helpers.ts","../src/useApiClient.ts","../src/assistLayout/RunInstructionProvider.tsx","../src/assistDocument/RequestRunInstructionProvider.tsx","../src/assistDocument/hooks/useAssistDocumentContextValue.tsx","../src/assistDocument/AssistDocumentContextProvider.tsx","../src/assistDocument/AssistDocumentLayout.tsx","../src/components/FadeInContent.tsx","../src/presence/AssistAvatar.tsx","../src/presence/AiFieldPresence.tsx","../src/presence/useAssistPresence.ts","../src/assistFormComponents/AssistField.tsx","../src/components/SafeValueInput.tsx","../src/assistFormComponents/AssistFormBlock.tsx","../src/assistFormComponents/AssistInlineFormBlock.tsx","../src/assistFormComponents/AssistItem.tsx","../src/_lib/form/DocumentForm.tsx","../src/assistDocument/components/AssistTypeContext.tsx","../src/helpers/conditionalMembers.ts","../src/onboarding/InspectorOnboarding.tsx","../src/onboarding/onboardingStore.ts","../src/assistInspector/FieldAutocomplete.tsx","../src/components/TimeAgo.tsx","../src/assistInspector/InstructionTaskHistoryButton.tsx","../src/assistInspector/AssistInspector.tsx","../src/assistInspector/constants.ts","../src/assistInspector/index.ts","../src/assistConnectors/draw/arrowPath.ts","../src/assistConnectors/draw/connectorPath.ts","../src/assistConnectors/ConnectorPath.tsx","../src/assistConnectors/AssistConnectorsOverlay.tsx","../src/helpers/styleguide.ts","../src/translate/getLanguageParams.ts","../src/translate/languageStore.ts","../src/_lib/randomKey.ts","../src/translate/paths.ts","../src/translate/FieldTranslationProvider.tsx","../src/schemas/serialize/schemaUtils.ts","../src/schemas/serialize/serializeSchema.ts","../src/assistLayout/fieldRefCache.tsx","../src/assistLayout/AiAssistanceConfigProvider.tsx","../src/assistLayout/AssistLayout.tsx","../src/components/ImageContext.tsx","../src/assistDocument/components/instruction/appearance/IconInput.tsx","../src/helpers/useAssistSupported.ts","../src/translate/translateActions.tsx","../src/fieldActions/customFieldActions.tsx","../src/fieldActions/generateCaptionActions.tsx","../src/fieldActions/generateImageActions.tsx","../src/fieldActions/PrivateIcon.tsx","../src/fieldActions/assistFieldActions.tsx","../src/presence/AssistDocumentPresence.tsx","../src/assistDocument/components/instruction/BackToInstructionsLink.tsx","../src/assistDocument/components/SelectedFieldContext.tsx","../src/assistDocument/components/AssistDocumentForm.tsx","../src/assistDocument/components/FieldRefPreview.tsx","../src/assistDocument/components/generic/HiddenFieldTitle.tsx","../src/assistDocument/components/instruction/appearance/InstructionVisibility.tsx","../src/assistDocument/components/instruction/FieldRefInput.tsx","../src/assistDocument/components/helpers.ts","../src/assistDocument/components/instruction/InstructionInput.tsx","../src/assistDocument/components/instruction/InstructionOutputField.tsx","../src/assistDocument/components/instruction/InstructionOutputInput.tsx","../src/assistDocument/components/instruction/PromptInput.tsx","../src/assistDocument/components/InstructionsArrayField.tsx","../src/assistDocument/components/InstructionsArrayInput.tsx","../src/components/HideReferenceChangedBannerInput.tsx","../src/schemas/contextDocumentSchema.tsx","../src/schemas/assistDocumentSchema.tsx","../src/schemas/index.ts","../src/plugin.tsx","../src/_lib/fixedListenQuery.ts","../src/_lib/useListeningQuery.ts","../src/schemas/serialize/SchemTypeTool.tsx","../src/fieldActions/useUserInput.ts"],"sourcesContent":["export function hasOverflowScroll(el: HTMLElement): boolean {\n const overflow = getComputedStyle(el).overflow\n\n return overflow.includes('auto') || overflow.includes('hidden') || overflow.includes('scroll')\n}\n","import {useEffect, useMemo, useRef, useState} from 'react'\n\nimport {hasOverflowScroll} from './helpers'\nimport type {Rect, Scroll} from './types'\n\nexport function useRegionRects() {\n const ref = useRef<HTMLDivElement>(null)\n\n const [relativeBoundsRect, setRelativeBoundsRect] = useState<Rect | null>(null)\n const [relativeElementRect, setRelativeElementRect] = useState<Rect | null>(null)\n const [boundsScroll, setBoundsScroll] = useState<Scroll>({x: 0, y: 0})\n const [scroll, setScroll] = useState<Scroll>({x: 0, y: 0})\n\n const boundsScrollXRef = useRef(0)\n const boundsScrollYRef = useRef(0)\n\n const elementScrollXRef = useRef(0)\n const elementScrollYRef = useRef(0)\n\n useEffect(() => {\n const el = ref.current\n\n if (!el) return undefined\n\n const scrollParents: HTMLElement[] = []\n let parent = el.parentElement\n\n while (parent && parent !== document.body) {\n if (\n hasOverflowScroll(parent)\n // || parent.scrollHeight > parent.clientHeight\n ) {\n scrollParents.push(parent)\n }\n\n parent = parent.parentElement\n }\n\n function handleResize() {\n const scrollParent = scrollParents[0]\n\n const boundsRect = scrollParent?.getBoundingClientRect() || {\n x: 0,\n y: 0,\n width: window.innerWidth,\n height: window.innerHeight,\n }\n\n const domRect = el!.getBoundingClientRect()\n\n setRelativeBoundsRect({\n x: boundsRect.x + boundsScrollXRef.current,\n y: boundsRect.y + boundsScrollYRef.current,\n w: boundsRect.width,\n h: boundsRect.height,\n })\n\n setRelativeElementRect({\n x: domRect.x + elementScrollXRef.current,\n y: domRect.y + elementScrollYRef.current,\n w: domRect.width,\n h: domRect.height,\n })\n }\n\n function handleScroll() {\n let scrollX = window.scrollX\n let scrollY = window.scrollY\n\n for (const scrollParent of scrollParents) {\n scrollX += scrollParent.scrollLeft\n scrollY += scrollParent.scrollTop\n }\n\n const scrollParent = scrollParents[0]\n\n boundsScrollXRef.current = scrollX - (scrollParent?.scrollLeft || window.scrollX)\n\n boundsScrollYRef.current = scrollY - (scrollParent?.scrollTop || window.scrollY)\n\n setBoundsScroll({\n x: boundsScrollXRef.current,\n y: boundsScrollYRef.current,\n })\n\n elementScrollXRef.current = scrollX\n elementScrollYRef.current = scrollY\n\n setScroll({x: scrollX, y: scrollY})\n }\n\n window.addEventListener('scroll', handleScroll, {passive: true})\n\n const ro = new ResizeObserver(handleResize)\n\n ro.observe(el)\n\n for (const scrollParent of scrollParents) {\n scrollParent.addEventListener('scroll', handleScroll, {passive: true})\n ro.observe(scrollParent)\n }\n\n handleScroll()\n\n return () => {\n ro.unobserve(el)\n\n for (const scrollParent of scrollParents) {\n ro.unobserve(scrollParent)\n scrollParent.removeEventListener('scroll', handleScroll)\n }\n\n ro.disconnect()\n\n window.removeEventListener('scroll', handleScroll)\n }\n }, [])\n\n const bounds: Rect | null = useMemo(\n () =>\n relativeBoundsRect && {\n x: relativeBoundsRect.x - boundsScroll.x,\n y: relativeBoundsRect.y - boundsScroll.y,\n w: relativeBoundsRect.w,\n h: relativeBoundsRect.h,\n },\n [relativeBoundsRect, boundsScroll],\n )\n\n const element: Rect | null = useMemo(\n () =>\n relativeElementRect && {\n x: relativeElementRect.x - scroll.x,\n y: relativeElementRect.y - scroll.y,\n w: relativeElementRect.w,\n h: relativeElementRect.h,\n },\n [relativeElementRect, scroll],\n )\n\n return {bounds, element, ref}\n}\n","import {type HTMLProps, useEffect} from 'react'\n\nimport type {ConnectorRegionRects} from './types'\nimport {useRegionRects} from './useRegionRects'\n\nexport function ConnectorRegion(\n props: {\n onRectsChange?: (rects: ConnectorRegionRects | null) => void\n } & HTMLProps<HTMLDivElement>,\n) {\n const {children, onRectsChange, ...restProps} = props\n\n const {bounds, element, ref} = useRegionRects()\n\n useEffect(() => {\n onRectsChange?.(bounds && element ? {bounds, element} : null)\n }, [bounds, element, onRectsChange])\n\n return (\n <div {...restProps} ref={ref}>\n {children}\n </div>\n )\n}\n","import {createContext} from 'react'\n\nimport type {ConnectorsStore} from './ConnectorsStore'\n\nexport const ConnectorsStoreContext = createContext<ConnectorsStore | null>(null)\n","import {useContext} from 'react'\n\nimport type {ConnectorsStore} from './ConnectorsStore'\nimport {ConnectorsStoreContext} from './ConnectorsStoreContext'\n\nexport function useConnectorsStore(): ConnectorsStore {\n const store = useContext(ConnectorsStoreContext)\n\n if (!store) {\n throw new Error('Missing connectors store context')\n }\n\n return store\n}\n","import {type HTMLProps, useEffect, useState} from 'react'\n\nimport {ConnectorRegion} from './ConnectorRegion'\nimport type {ConnectorRegionRects} from './types'\nimport {useConnectorsStore} from './useConnectorsStore'\n\nexport function ConnectFromRegion(\n props: {_key: string; zIndex: number} & HTMLProps<HTMLDivElement>,\n) {\n const {children, _key: key, zIndex, ...restProps} = props\n const store = useConnectorsStore()\n const [rects, setRects] = useState<ConnectorRegionRects | null>(null)\n\n useEffect(() => store.from.subscribe(key, {zIndex}), [key, store, zIndex])\n\n useEffect(() => {\n if (rects) store.from.next(key, rects)\n }, [key, rects, store])\n\n return (\n <ConnectorRegion {...restProps} onRectsChange={setRects}>\n {children}\n </ConnectorRegion>\n )\n}\n","import type {Connector, ConnectorRegionRects} from './types'\n\nexport interface ConnectorsStore {\n connectors: {\n subscribe: (observer: (connectors: Connector[]) => void) => () => void\n }\n\n from: {\n subscribe: (key: string, payload?: Record<string, unknown>) => () => void\n next: (key: string, rects: ConnectorRegionRects) => void\n }\n\n to: {\n subscribe: (key: string, payload?: Record<string, unknown>) => () => void\n next: (key: string, rects: ConnectorRegionRects) => void\n }\n}\n\nexport function createConnectorsStore(): ConnectorsStore {\n const configKeys: string[] = []\n const fieldKeys: string[] = []\n\n const channels = {\n from: new Map<string, ConnectorRegionRects | null>(),\n to: new Map<string, ConnectorRegionRects | null>(),\n }\n\n const payloads = {\n from: new Map<string, Record<string, unknown> | undefined>(),\n to: new Map<string, Record<string, unknown> | undefined>(),\n }\n\n const observers: ((connectors: Connector[]) => void)[] = []\n\n function notifyObservers() {\n const connectors: Connector[] = []\n\n for (const key of configKeys) {\n const toRects = channels.to.get(key)\n const toPayload = payloads.from.get(key)\n\n const fromRects = channels.from.get(key)\n const fromPayload = payloads.from.get(key)\n\n if (toRects && fromRects) {\n connectors.push({\n key,\n from: {...fromRects, payload: fromPayload},\n to: {...toRects, payload: toPayload},\n })\n }\n }\n\n for (const observer of observers) {\n observer(connectors)\n }\n }\n\n return {\n to: {\n subscribe(key, payload) {\n channels.to.set(key, null)\n payloads.to.set(key, payload)\n\n configKeys.push(key)\n\n return () => {\n channels.to.delete(key)\n payloads.to.delete(key)\n\n const idx = configKeys.indexOf(key)\n\n if (idx > -1) configKeys.splice(idx, 1)\n\n notifyObservers()\n }\n },\n next(key, rects) {\n channels.to.set(key, rects)\n\n if (fieldKeys.includes(key)) notifyObservers()\n },\n },\n\n connectors: {\n subscribe(observer) {\n observers.push(observer)\n\n return () => {\n const idx = observers.indexOf(observer)\n\n if (idx > -1) observers.splice(idx, 1)\n }\n },\n },\n\n from: {\n subscribe(key, payload) {\n channels.from.set(key, null)\n payloads.from.set(key, payload)\n\n fieldKeys.push(key)\n\n return () => {\n channels.from.delete(key)\n payloads.from.delete(key)\n\n const idx = fieldKeys.indexOf(key)\n\n if (idx > -1) fieldKeys.splice(idx, 1)\n\n notifyObservers()\n }\n },\n next(key, rects) {\n channels.from.set(key, rects)\n\n if (configKeys.includes(key)) notifyObservers()\n },\n },\n }\n}\n","import {type ReactNode, useEffect, useMemo} from 'react'\n\nimport {type ConnectorsStore, createConnectorsStore} from './ConnectorsStore'\nimport {ConnectorsStoreContext} from './ConnectorsStoreContext'\nimport type {Connector} from './types'\n\nexport function ConnectorsProvider(props: {\n children?: ReactNode\n onConnectorsChange?: (connectors: Connector[]) => void\n}) {\n const {children, onConnectorsChange} = props\n const store: ConnectorsStore = useMemo(() => createConnectorsStore(), [])\n\n useEffect(\n () => onConnectorsChange && store.connectors.subscribe(onConnectorsChange),\n [onConnectorsChange, store],\n )\n\n return <ConnectorsStoreContext.Provider value={store}>{children}</ConnectorsStoreContext.Provider>\n}\n","import type {\n ConnectorLine,\n ConnectorLinePoint,\n ConnectorOptions,\n ConnectorRegionRects,\n Rect,\n} from './types'\n\nfunction getConnectorLinePoint(\n options: ConnectorOptions,\n rect: Rect,\n bounds: Rect,\n): ConnectorLinePoint {\n const centerY = rect.y + rect.h / 2\n const isAbove = rect.y + rect.h < bounds.y + options.arrow.marginY\n const isBelow = rect.y > bounds.y + bounds.h - options.arrow.marginY\n\n return {\n bounds,\n x: rect.x,\n y: centerY,\n centerY,\n startY: rect.y + options.path.marginY,\n endY: rect.y + rect.h - options.path.marginY,\n isAbove,\n isBelow,\n outOfBounds: isAbove || isBelow,\n }\n}\n\nexport function mapConnectorToLine(\n options: ConnectorOptions,\n connector: {from: ConnectorRegionRects; to: ConnectorRegionRects},\n): ConnectorLine {\n const fromBounds: Rect = {\n y: connector.from.bounds.y + options.arrow.threshold,\n // bottom: connector.from.bounds.y + connector.from.bounds.h - options.arrow.threshold,\n x: connector.from.bounds.x,\n // right: connector.from.bounds.x + connector.from.bounds.w,\n w: connector.from.bounds.w,\n h: connector.from.bounds.h - options.arrow.threshold * 2,\n }\n\n const from = getConnectorLinePoint(options, connector.from.element, fromBounds)\n from.x = connector.from.element.x + connector.from.element.w // + 1\n\n const fromBottom = fromBounds.y + fromBounds.h\n\n const toBounds: Rect = {\n y: connector.to.bounds.y + options.arrow.threshold,\n // bottom: connector.to.bounds.y + connector.to.bounds.h - options.arrow.threshold,\n x: connector.to.bounds.x,\n // right: connector.to.bounds.x + connector.to.bounds.w,\n w: connector.to.bounds.w,\n h: connector.to.bounds.h - options.arrow.threshold * 2,\n }\n\n const toBottom = toBounds.y + toBounds.h\n\n const to = getConnectorLinePoint(options, connector.to.element, toBounds)\n\n const maxStartY = Math.max(to.startY, from.startY)\n\n // Align from <-> to vertically\n from.y = Math.min(maxStartY, from.endY)\n if (from.y < toBounds.y) {\n from.y = Math.min(toBounds.y, from.endY)\n } else if (from.y > toBottom) {\n from.y = Math.max(toBottom, from.startY)\n }\n to.y = Math.min(maxStartY, to.endY)\n if (to.y < fromBounds.y) {\n to.y = Math.min(fromBounds.y, to.endY)\n } else if (to.y > fromBottom) {\n to.y = Math.max(fromBottom, to.startY)\n }\n\n // Keep within bounds\n from.y = Math.min(Math.max(from.y, fromBounds.y), fromBottom)\n to.y = Math.min(Math.max(to.y, toBounds.y), toBottom)\n\n return {from, to}\n}\n","export const assistFormId = 'assist'\n","import type {\n PortableTextBlock,\n PortableTextMarkDefinition,\n PortableTextSpan,\n} from '@portabletext/types'\nimport type {SanityDocument} from 'sanity'\n\n//id prefixes\nexport const assistDocumentIdPrefix = 'sanity.assist.schemaType.'\nexport const assistDocumentStatusIdPrefix = 'sanity.assist.status.'\nexport const assistSchemaIdPrefix = 'sanity.assist.schema.'\n\n// type names\nexport const assistDocumentTypeName = 'sanity.assist.schemaType.annotations' as const\nexport const assistFieldTypeName = 'sanity.assist.schemaType.field' as const\nexport const instructionTypeName = 'sanity.assist.instruction' as const\nexport const promptTypeName = 'sanity.assist.instruction.prompt' as const\n\nexport const userInputTypeName = 'sanity.assist.instruction.userInput' as const\nexport const instructionContextTypeName = 'sanity.assist.instruction.context' as const\nexport const fieldReferenceTypeName = 'sanity.assist.instruction.fieldRef' as const\n\n// user-facing type. Intentionally does not have sanity. prefix\nexport const contextDocumentTypeName = 'assist.instruction.context' as const\n\nexport const assistTasksStatusTypeName = 'sanity.assist.task.status' as const\nexport const instructionTaskTypeName = 'sanity.assist.instructionTask' as const\nexport const fieldPresenceTypeName = 'sanity.assist.instructionTask.presence' as const\n\nexport const assistSerializedTypeName = 'sanity.assist.serialized.type' as const\nexport const assistSerializedFieldTypeName = 'sanity.assist.serialized.field' as const\n\nexport const outputFieldTypeName = 'sanity.assist.output.field' as const\nexport const outputTypeTypeName = 'sanity.assist.output.type' as const\n\n//url params\nconst inspectParam = 'inspect' as const\nexport const fieldPathParam = 'pathKey' as const\nexport const instructionParam = 'instruction' as const\n\n// other constants\nexport const documentRootKey = '<document>'\n\nexport type SerializedSchemaMember = Omit<SerializedSchemaType, 'name' | '_type'> & {\n _type?: typeof assistSerializedFieldTypeName\n name?: string\n}\n\nexport interface SerializedSchemaType {\n _type?: typeof assistSerializedTypeName\n _id?: string\n type: string\n name: string\n title?: string\n fields?: SerializedSchemaMember[]\n of?: SerializedSchemaMember[]\n to?: SerializedSchemaMember[]\n annotations?: SerializedSchemaMember[]\n inlineOf?: SerializedSchemaMember[]\n values?: string[] | {value: string; title?: string}[]\n hidden?: boolean | 'function'\n readOnly?: boolean | 'function'\n options?: {\n /** equivalent to options.aiAssist.imageDescriptionField - not renamed in the api for backwards compatibility */\n imagePromptField?: string\n embeddingsIndex?: string\n }\n}\n\nexport interface AssistDocument extends SanityDocument {\n fields?: AssistField[]\n instructions?: StudioInstruction[]\n}\n\nexport interface PresetInstruction {\n _key: string\n prompt?: PromptTextBlock[]\n\n title?: string\n /**\n * String key from `@sanity/icons` IconMap\n */\n icon?: string\n\n /**\n * Type/field filter\n */\n output?: (OutputFieldItem | OutputTypeItem)[]\n}\n\nexport interface PresetField {\n path?: string\n instructions?: PresetInstruction[]\n}\n\nexport interface AssistPreset {\n fields?: PresetField[]\n}\n\nexport interface SanityAssistDocument {\n _id: string\n _type: typeof assistDocumentTypeName\n fields?: StudioAssistField[]\n}\n\nexport interface StudioAssistDocument extends SanityAssistDocument {\n // added after loading\n tasks?: InstructionTask[]\n}\n\nexport interface AssistField {\n _key: string\n _type: typeof assistFieldTypeName\n path?: string\n instructions?: StudioInstruction[]\n}\n\nexport interface StudioAssistField {\n _key: string\n path?: string\n instructions?: StudioInstruction[]\n\n // added\n tasks?: InstructionTask[]\n}\n\nexport interface FieldRef extends PortableTextMarkDefinition {\n _type: typeof fieldReferenceTypeName\n path?: string\n}\n\nexport interface ContextBlock {\n _type: typeof instructionContextTypeName\n reference?: {\n _type: 'reference'\n _ref?: string\n }\n}\n\nexport interface UserInputBlock {\n _type: typeof userInputTypeName\n _key: string\n message?: string\n description?: string\n}\n\nexport type InlinePromptBlock = PortableTextSpan | FieldRef | UserInputBlock | ContextBlock\nexport type PromptTextBlock = Omit<\n PortableTextBlock<never, InlinePromptBlock, 'normal', never>,\n '_type'\n> & {_type: 'block'}\n\nexport type PromptBlock = PromptTextBlock | FieldRef | ContextBlock | UserInputBlock\n\nexport interface AiPresence {\n _key: string\n _type: typeof fieldPresenceTypeName\n path?: string\n started?: string\n}\n\nexport type TaskEndedReason = 'success' | 'error' | 'aborted' | 'timeout'\n\nexport interface InstructionTask {\n _key: string\n _type: typeof instructionTaskTypeName\n instructionKey?: string\n title?: string\n path?: string\n started?: string\n updated?: string\n ended?: string\n message?: string\n reason?: TaskEndedReason\n presence?: AiPresence[]\n startedByUserId?: string\n\n //added by studio\n instruction?: StudioInstruction\n}\n\nexport interface StudioInstruction {\n _key: string\n _type: typeof instructionTypeName\n prompt?: PromptBlock[]\n\n icon?: string\n userId?: string\n title?: string\n placeholder?: string\n output?: (OutputFieldItem | OutputTypeItem)[]\n\n //added after query / synthetic fields\n tasks?: InstructionTask[]\n}\n\nexport interface AssistTasksStatus {\n _id: string\n _type: typeof assistTasksStatusTypeName\n tasks?: InstructionTask[]\n}\n\nexport interface AssistInspectorRouteParams {\n [inspectParam]?: string\n [fieldPathParam]?: string\n [instructionParam]?: string\n}\n\nexport interface OutputFieldItem {\n _type: typeof outputFieldTypeName\n _key: string\n //path relative to the field the instruction is for (same as _key)\n relativePath?: string\n}\n\nexport interface OutputTypeItem {\n _type: typeof outputTypeTypeName\n _key: string\n /* array item type name */\n type?: string\n //path relative to the array-field the instruction is for, can be empty string (the array itself, same as _key)\n relativePath?: string\n}\n","import {useMemo} from 'react'\nimport {type Path, pathToString} from 'sanity'\n\nimport {documentRootKey, type StudioInstruction} from '../types'\n\nexport function usePathKey(path: Path | string) {\n return useMemo(() => {\n return getPathKey(path)\n }, [path])\n}\n\nfunction getPathKey(path: Path | string) {\n if (path.length) {\n return Array.isArray(path) ? pathToString(path) : path\n }\n return documentRootKey\n}\n\nexport function getInstructionTitle(instruction?: StudioInstruction) {\n return instruction?.title ?? 'Untitled'\n}\n\nexport function isDefined<T>(t: T | undefined | null): t is T {\n return t !== undefined && t !== null\n}\n","import type {ArraySchemaType, ImageOptions, SchemaType} from 'sanity'\n\nexport function isPortableTextArray(type: ArraySchemaType) {\n return type.of.find((t) => isType(t, 'block'))\n}\n\n/**\n * Returns true if the `schemaType` or any of its parent types (`schemaType.type`)` has `name` equal\n * to `typeName`.\n *\n * Useful for checking if `schemaType` is a type alias of `ìmage`, `code` or similar.\n */\nexport function isType(schemaType: SchemaType, typeName: string): boolean {\n if (schemaType.name === typeName) {\n return true\n }\n if (!schemaType.type) {\n return false\n }\n return isType(schemaType.type, typeName)\n}\n\nexport function isImage(schemaType: SchemaType) {\n return isType(schemaType, 'image')\n}\n\nexport function getDescriptionFieldOption(\n schemaType: SchemaType | undefined,\n): {path: string; updateOnImageChange: boolean} | undefined {\n if (!schemaType) {\n return undefined\n }\n // oxlint-disable-next-line no-unsafe-type-assertion\n const descriptionField = (schemaType.options as ImageOptions)?.aiAssist?.imageDescriptionField\n if (typeof descriptionField === 'string') {\n return {\n path: descriptionField,\n updateOnImageChange: true,\n }\n } else if (descriptionField) {\n return {\n path: descriptionField.path,\n updateOnImageChange: descriptionField.updateOnImageChange ?? true,\n }\n }\n return getDescriptionFieldOption(schemaType.type)\n}\n\nexport function getImageInstructionFieldOption(\n schemaType: SchemaType | undefined,\n): string | undefined {\n if (!schemaType) {\n return undefined\n }\n // oxlint-disable-next-line no-unsafe-type-assertion\n const imageInstructionField = (schemaType.options as ImageOptions)?.aiAssist\n ?.imageInstructionField\n if (imageInstructionField) {\n return imageInstructionField\n }\n return getImageInstructionFieldOption(schemaType.type)\n}\n","import type {ReferenceOptions, SchemaType} from 'sanity'\n\nimport type {AssistOptions} from '../schemas/typeDefExtensions'\nimport {isType} from './typeUtils'\n\nexport function isSchemaAssistEnabled(type: SchemaType) {\n // oxlint-disable-next-line no-unsafe-type-assertion\n return !(type.options as AssistOptions | undefined)?.aiAssist?.exclude\n}\n\nexport function isAssistSupported(type: SchemaType) {\n if (!isSchemaAssistEnabled(type)) {\n return false\n }\n\n if (isDisabled(type)) {\n return false\n }\n\n if (type.jsonType === 'array') {\n const unsupportedArray = type.of.every((t) => isDisabled(t))\n return !unsupportedArray\n }\n\n if (type.jsonType === 'object') {\n const unsupportedObject = type.fields.every((field) => isDisabled(field.type))\n return (\n !unsupportedObject ||\n /* to allow attaching custom actions on fieldless images */\n isType(type, 'image')\n )\n }\n return true\n}\n\nfunction isDisabled(type: SchemaType) {\n return !isSchemaAssistEnabled(type) || isUnsupportedType(type)\n}\n\nfunction isUnsupportedType(type: SchemaType) {\n return (\n type.name === 'sanity.imageCrop' ||\n type.name === 'sanity.imageHotspot' ||\n isType(type, 'globalDocumentReference') ||\n (isType(type, 'reference') &&\n // oxlint-disable-next-line no-unsafe-type-assertion\n !(type?.options as ReferenceOptions)?.aiAssist?.embeddingsIndex) ||\n isType(type, 'crossDatasetReference') ||\n isType(type, 'file')\n )\n}\n","import {createContext, type PropsWithChildren, useMemo} from 'react'\nimport {type FieldMember, type ObjectInputProps, pathToString} from 'sanity'\n\nimport {isAssistSupported} from '../helpers/assistSupported'\n\nconst FirstAssistedPathContext = createContext<string | undefined>(undefined)\n\nexport interface FirstAssistedPathProviderProps {\n members: ObjectInputProps['members']\n}\n\nexport function FirstAssistedPathProvider(\n props: PropsWithChildren<FirstAssistedPathProviderProps>,\n) {\n const {members} = props\n\n const firstAssistedPath = useMemo(() => {\n const firstAssisted = members.find(\n (member): member is FieldMember =>\n member.kind === 'field' && isAssistSupported(member.field.schemaType),\n )\n return firstAssisted?.field.path ? pathToString(firstAssisted?.field.path) : undefined\n }, [members])\n\n return (\n <FirstAssistedPathContext.Provider value={firstAssistedPath}>\n {props.children}\n </FirstAssistedPathContext.Provider>\n )\n}\n","import {minutesToMilliseconds} from 'date-fns'\n\nexport const releaseAnnouncementUrl =\n 'https://www.sanity.io/blog/sanity-ai-assist-announcement?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const instructionGuideUrl =\n 'https://sanity.io/guides/getting-started-with-ai-assist-instructions?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const giveFeedbackUrl = 'https://forms.gle/Kwz7CThxGeA2GiEU8'\n\nexport const salesUrl =\n 'https://www.sanity.io/contact/sales?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const packageName = '@sanity/assist'\n\nexport const pluginTitle = 'Sanity AI Assist'\n\nexport const pluginTitleShort = 'AI Assist'\n\nexport const maxHistoryVisibilityMs = minutesToMilliseconds(30)\n","import {getPublishedId, getVersionFromId, isVersionId} from 'sanity'\n\nimport {assistDocumentIdPrefix, assistDocumentStatusIdPrefix} from '../types'\n\nconst illegalIdChars = /[^a-zA-Z0-9._-]/g\n\nexport function assistDocumentId(documentType: string) {\n return `${assistDocumentIdPrefix}${documentType}`.replace(illegalIdChars, '_')\n}\n\nexport function assistTasksStatusId(documentId: string) {\n if (isVersionId(documentId)) {\n // Creates an id: sanity.assist.status.<versionName>.<documentId>\n return `${assistDocumentStatusIdPrefix}${getVersionFromId(documentId)}.${getPublishedId(documentId)}`\n }\n\n // Creates an id: sanity.assist.status<documentId>\n return `${assistDocumentStatusIdPrefix}${getPublishedId(documentId)}`\n}\n","import {useEditState} from 'sanity'\n\n// oxlint-disable-next-line no-unnecessary-type-parameters\nexport function useDocumentState<T>(id: string, docType: string): T | undefined {\n const state = useEditState(id, docType)\n // oxlint-disable-next-line no-unsafe-type-assertion\n return (state.draft || state.published) as T | undefined\n}\n","import {useEffect, useMemo} from 'react'\nimport {type ObjectSchemaType, typed, useClient, useCurrentUser} from 'sanity'\n\nimport {maxHistoryVisibilityMs} from '../../constants'\nimport {assistDocumentId, assistTasksStatusId} from '../../helpers/ids'\nimport {\n assistDocumentTypeName,\n type AssistTasksStatus,\n assistTasksStatusTypeName,\n type InstructionTask,\n type StudioAssistDocument,\n type StudioAssistField,\n type StudioInstruction,\n} from '../../types'\nimport {useDocumentState} from './useDocumentState'\n\ninterface UseAssistDocumentProps {\n documentId: string\n schemaType: ObjectSchemaType\n initDoc?: boolean\n}\n\nexport function useStudioAssistDocument({\n documentId,\n schemaType,\n initDoc,\n}: UseAssistDocumentProps): StudioAssistDocument | undefined {\n const documentTypeName = schemaType.name\n const currentUser = useCurrentUser()\n\n const assistDocument = useDocumentState<StudioAssistDocument>(\n assistDocumentId(documentTypeName),\n assistDocumentTypeName,\n )\n const assistTasksStatus = useDocumentState<AssistTasksStatus>(\n assistTasksStatusId(documentId ?? ''),\n assistTasksStatusTypeName,\n )\n\n const client = useClient({apiVersion: '2023-01-01'})\n\n useEffect(() => {\n if (!assistDocument && initDoc) {\n client\n .createIfNotExists({\n _id: assistDocumentId(documentTypeName),\n _type: assistDocumentTypeName,\n })\n .catch(() => {\n // best effort\n })\n }\n }, [client, assistDocument, documentTypeName, initDoc])\n\n return useMemo(() => {\n if (!assistDocument) {\n return undefined\n }\n const tasks = assistTasksStatus?.tasks ?? []\n // oxlint-disable-next-line no-map-spread\n const fields = (assistDocument?.fields ?? []).map((assistField): StudioAssistField => {\n return {\n ...assistField,\n tasks: tasks.filter((task) => task.path === assistField.path),\n instructions: assistField.instructions\n ?.filter((p) => !p.userId || p.userId === currentUser?.id)\n .map((instruction) => asStudioInstruction(instruction, tasks)),\n }\n })\n return typed<StudioAssistDocument>({\n ...assistDocument,\n // oxlint-disable-next-line no-map-spread\n tasks: tasks?.map((task) => {\n const instruction = fields\n .find((f) => f.path === task.path)\n ?.instructions?.find((i) => i._key === task.instructionKey)\n return {\n ...task,\n instruction,\n }\n }),\n fields: fields,\n })\n }, [assistDocument, assistTasksStatus, currentUser])\n}\n\nfunction asStudioInstruction(\n instruction: StudioInstruction,\n run: InstructionTask[],\n): StudioInstruction {\n return {\n ...instruction,\n tasks: run\n .filter((task) => task.instructionKey === instruction._key)\n .filter(\n (task) =>\n task.started &&\n new Date().getTime() - new Date(task.started).getTime() < maxHistoryVisibilityMs,\n ),\n }\n}\n","import {useToast} from '@sanity/ui'\nimport {addSeconds, isAfter} from 'date-fns'\nimport {useEffect, useRef} from 'react'\nimport {type ObjectSchemaType, useCurrentUser} from 'sanity'\n\nimport {getInstructionTitle} from '../../helpers/misc'\nimport type {InstructionTask} from '../../types'\nimport {useStudioAssistDocument} from './useStudioAssistDocument'\n\nconst NO_TASKS: InstructionTask[] = []\n\nexport function useInstructionToaster(documentId: string, documentSchemaType: ObjectSchemaType) {\n const assistDocument = useStudioAssistDocument({documentId, schemaType: documentSchemaType})\n\n const assistDocLoaded = !!assistDocument\n const currentUser = useCurrentUser()\n const toast = useToast()\n const tasks = assistDocument?.tasks\n const previousTasks = useRef<InstructionTask[] | undefined | 'initial'>('initial')\n\n useEffect(() => {\n if (!assistDocLoaded) {\n return\n }\n\n if (previousTasks.current !== 'initial') {\n const prevTaskByKey = Object.fromEntries(\n (previousTasks.current ?? NO_TASKS).map((run) => [run._key, run]),\n )\n const endedTasks = tasks\n ?.filter((task) => task.startedByUserId === currentUser?.id)\n .filter((task) => {\n const prevTask = prevTaskByKey[task._key]\n return (!prevTask && task.ended) || (!prevTask?.ended && task.ended)\n })\n // filter out old stuff\n .filter((task) => task.ended && isAfter(addSeconds(new Date(task.ended), 30), new Date()))\n\n endedTasks?.forEach((task) => {\n const title = task.title ?? getInstructionTitle(task.instruction)\n if (task.reason === 'error') {\n toast.push({\n title: `Failed: ${title}`,\n status: 'error',\n description: `Instruction failed. ${task.message ?? ''}`,\n closable: true,\n duration: 10000,\n })\n } else if (task.reason === 'timeout') {\n toast.push({\n title: `Timeout: ${title}`,\n status: 'error',\n description: `Instruction timed out.`,\n closable: true,\n })\n } else if (task.reason === 'success') {\n toast.push({\n title: `Success: ${title}`,\n status: 'success',\n description: `Instruction completed.`,\n closable: true,\n })\n } else if (task.reason === 'aborted') {\n toast.push({\n title: `Canceled: ${title}`,\n status: 'warning',\n description: `Instruction canceled.`,\n closable: true,\n })\n }\n })\n }\n previousTasks.current = tasks\n }, [tasks, previousTasks, toast, currentUser, assistDocLoaded])\n}\n","import {useLayer} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport type {InputProps, ObjectInputProps, ObjectSchemaType} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {ConnectFromRegion} from '../_lib/connector'\nimport {assistFormId} from '../_lib/form/constants'\nimport {usePathKey} from '../helpers/misc'\nimport {isType} from '../helpers/typeUtils'\nimport {FirstAssistedPathProvider} from '../onboarding/FirstAssistedPathProvider'\nimport {assistDocumentTypeName} from '../types'\nimport {useInstructionToaster} from './hooks/useInstructionToaster'\n\nexport function AssistDocumentInputWrapper(props: InputProps) {\n if (!isType(props.schemaType, 'document') && props.id !== 'root' && props.id !== assistFormId) {\n return <AssistInput {...props} />\n }\n\n // oxlint-disable-next-line no-unsafe-type-assertion\n const documentId = (props.value as any)?._id as string | undefined\n if (!documentId) {\n return props.renderDefault(props)\n }\n\n // oxlint-disable-next-line no-unsafe-type-assertion\n return <AssistDocumentInput {...(props as ObjectInputProps)} documentId={documentId} />\n}\n\nfunction AssistDocumentInput({documentId, ...props}: ObjectInputProps & {documentId: string}) {\n useInstructionToaster(documentId, props.schemaType)\n\n const schemaType = useMemo(() => {\n if (props.schemaType.name !== assistDocumentTypeName) {\n return props.schemaType\n }\n // oxlint-disable-next-line no-unsafe-type-assertion\n return {\n ...props.schemaType,\n type: {\n ...props.schemaType.type,\n // compatibility with i18nArrays plugin that requires this to be document\n name: 'document',\n },\n } as ObjectSchemaType\n }, [props.schemaType])\n\n return (\n <FirstAssistedPathProvider members={props.members}>\n {props.renderDefault({...props, schemaType})}\n </FirstAssistedPathProvider>\n )\n}\n\nfunction AssistInput(props: InputProps) {\n const {zIndex} = useLayer()\n const {paneKey} = useDocumentPane()\n const pathKey = usePathKey(props.path)\n\n return (\n <ConnectFromRegion _key={`${paneKey}_${pathKey}`} zIndex={zIndex} style={{minWidth: 0}}>\n {props.renderDefault(props)}\n </ConnectFromRegion>\n )\n}\n","import {createContext, useContext} from 'react'\nimport {type DocumentInspector, type ObjectSchemaType, PatchEvent} from 'sanity'\n\nimport type {FieldRef} from '../assistInspector/helpers'\nimport type {InstructionTask, StudioAssistDocument} from '../types'\n\nexport type AssistDocumentContextValue = (\n | {assistDocument: StudioAssistDocument; loading: false}\n | {assistDocument: undefined; loading: true}\n) & {\n documentIsNew: boolean\n /**\n * This is the _actual_ id of the current document (ie the document loaded in the pane); it contains draft. versions. prefix ect depending on context\n */\n assistableDocumentId: string\n documentIsAssistable: boolean\n documentSchemaType: ObjectSchemaType\n openInspector: (inspectorName: string, paneParams?: Record<string, string>) => void\n closeInspector: (inspectorName?: string) => void\n inspector: DocumentInspector | null\n selectedPath?: string\n documentOnChange: (event: PatchEvent) => void\n\n /**\n * Synthetic task is used to display AI presence at the document level for the user who started the action.\n * These are not persisted, so other users will not see them.\n * It is mostly a helper to give _some_ visual feedback to the user while a custom action is running.\n * This also means that reloading the page will remove the icon.\n *\n * Agent Actions add their own \"real\" tasks, so if a custom action calls an Agent action, _those_ tasks\n * are visible across sessions.\n */\n syntheticTasks?: InstructionTask[]\n addSyntheticTask: (syntheticTask: InstructionTask) => void\n removeSyntheticTask: (syntheticTask: InstructionTask) => void\n\n fieldRefs: FieldRef[]\n fieldRefsByTypePath: Record<string, FieldRef | undefined>\n}\n\nexport const AssistDocumentContext = createContext<AssistDocumentContextValue | undefined>(\n undefined,\n)\n\nexport function useAssistDocumentContext(): AssistDocumentContextValue {\n const context = useContext(AssistDocumentContext)\n if (!context) {\n throw new Error('AssistDocumentContext value is missing')\n }\n return context\n}\n","import {createContext, useContext} from 'react'\n\nimport type {FieldRef} from '../assistInspector/helpers'\nimport type {AssistPluginConfig} from '../plugin'\nimport type {SerializedSchemaType} from '../types'\nimport type {InstructStatus} from '../useApiClient'\n\nexport interface AiAssistanceConfigContextValue {\n config: AssistPluginConfig\n status?: InstructStatus\n statusLoading: boolean\n initLoading: boolean\n init: () => void\n error?: Error\n serializedTypes: SerializedSchemaType[]\n getFieldRefs: (documentType: string) => FieldRef[]\n getFieldRefsByTypePath: (documentType: string) => Record<string, FieldRef | undefined>\n}\n\n// oxlint-disable-next-line no-unsafe-type-assertion\nexport const AiAssistanceConfigContext = createContext<AiAssistanceConfigContextValue>({} as any)\n\nexport function useAiAssistanceConfig() {\n const context = useContext(AiAssistanceConfigContext)\n if (!context) {\n throw new Error('Missing AiAssistanceConfigContext')\n }\n return context\n}\n\nexport function useSerializedTypes() {\n return useAiAssistanceConfig().serializedTypes\n}\n","// oxlint-disable no-accumulating-spread\nimport {BlockContentIcon} from '@sanity/icons/BlockContent'\nimport {BlockquoteIcon} from '@sanity/icons/Blockquote'\nimport {DocumentIcon} from '@sanity/icons/Document'\nimport {ImageIcon} from '@sanity/icons/Image'\nimport {LinkIcon} from '@sanity/icons/Link'\nimport {OlistIcon} from '@sanity/icons/Olist'\nimport {StringIcon} from '@sanity/icons/String'\nimport {extractWithPath} from '@sanity/mutator'\nimport {type ComponentType, useMemo} from 'react'\nimport {\n type ArraySchemaType,\n isKeySegment,\n isObjectSchemaType,\n type ObjectSchemaType,\n type Path,\n pathToString,\n type SanityDocumentLike,\n type SchemaType,\n stringToPath,\n} from 'sanity'\nimport {type PaneRouterContextValue, usePaneRouter} from 'sanity/structure'\n\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {isAssistSupported} from '../helpers/assistSupported'\nimport {isPortableTextArray, isType} from '../helpers/typeUtils'\nimport {type AssistInspectorRouteParams, documentRootKey} from '../types'\n\nexport interface FieldRef {\n key: string\n path: Path\n title: string\n schemaType: SchemaType\n icon: ComponentType\n synthetic?: boolean\n}\n\nconst maxDepth = 6\n\nfunction getTypeIcon(schemaType: SchemaType): ComponentType {\n let t: SchemaType | undefined = schemaType\n\n while (t) {\n if (t.icon) return t.icon\n t = t.type\n }\n\n if (isType(schemaType, 'slug')) return LinkIcon\n if (isType(schemaType, 'image')) return ImageIcon\n if (schemaType.jsonType === 'array' && isPortableTextArray(schemaType)) return BlockContentIcon\n\n if (schemaType.jsonType === 'array') return OlistIcon\n if (schemaType.jsonType === 'object') return BlockquoteIcon\n if (schemaType.jsonType === 'string') return StringIcon\n\n return DocumentIcon\n}\n\nexport function asFieldRefsByTypePath(fieldRefs: FieldRef[]): Record<string, FieldRef | undefined> {\n const lookup: Record<string, FieldRef | undefined> = fieldRefs.reduce(\n (acc, ref) => ({...acc, [ref.key]: ref}),\n {},\n )\n return lookup\n}\n\nexport function getDocumentFieldRef(schemaType: ObjectSchemaType): FieldRef {\n return {\n key: documentRootKey,\n icon: schemaType.icon ?? DocumentIcon,\n title: `The entire document`,\n path: [],\n schemaType: schemaType,\n }\n}\n\nexport function getFieldRefs(\n schemaType: ObjectSchemaType,\n parent?: FieldRef,\n depth = 0,\n): FieldRef[] {\n if (depth >= maxDepth) {\n return []\n }\n return (\n schemaType.fields\n .filter((f) => !f.name.startsWith('_'))\n // oxlint-disable-next-line no-map-spread\n .flatMap((field) => {\n const path: Path = parent ? [...parent.path, field.name] : [field.name]\n const title = field.type.title ?? field.name\n const fieldRef: FieldRef = {\n key: patchableKey(pathToString(path)),\n path,\n title: parent ? [parent.title, title].join(' / ') : title,\n schemaType: field.type,\n icon: getTypeIcon(field.type),\n }\n const fields =\n field.type.jsonType === 'object' ? getFieldRefs(field.type, fieldRef, depth + 1) : []\n\n const syntheticFields =\n field.type.jsonType === 'array' ? getSyntheticFields(field.type, fieldRef, depth + 1) : []\n if (!isAssistSupported(field.type)) {\n return [...fields, ...syntheticFields]\n }\n return [fieldRef, ...fields, ...syntheticFields]\n })\n )\n}\n\nfunction getSyntheticFields(schemaType: ArraySchemaType, parent?: FieldRef, depth = 0) {\n if (depth >= maxDepth) {\n return []\n }\n\n return (\n schemaType.of\n .filter((itemType) => !isType(itemType, 'block'))\n // oxlint-disable-next-line no-map-spread\n .flatMap((itemType) => {\n const segment = {_key: itemType.name}\n const title = itemType.title ?? itemType.name\n const path: Path = parent ? [...parent.path, segment] : [segment]\n const fieldRef: FieldRef = {\n key: patchableKey(pathToString(path)),\n path,\n title: parent ? [parent.title, title].join(' / ') : title,\n schemaType: itemType,\n icon: getTypeIcon(itemType),\n synthetic: true,\n }\n const fields =\n itemType.jsonType === 'object' ? getFieldRefs(itemType, fieldRef, depth + 1) : []\n\n if (!isAssistSupported(itemType)) {\n return fields\n }\n return [fieldRef, ...fields]\n })\n )\n}\n\nexport function getTypePath(doc: SanityDocumentLike, pathString: string) {\n if (!pathString) {\n return undefined\n }\n\n const path = stringToPath(pathString)\n const currentPath: Path = []\n let valid = true\n const syntheticPath = path.map((segment) => {\n currentPath.push(segment)\n\n if (isKeySegment(segment)) {\n const match = extractWithPath(pathToString(currentPath), doc)[0]\n const value = match?.value\n if (match && value && typeof value === 'object' && '_type' in value) {\n // oxlint-disable-next-line no-unsafe-type-assertion\n return {_key: value._type as string}\n }\n valid = false\n }\n return segment\n })\n\n return valid ? patchableKey(pathToString(syntheticPath)) : undefined\n}\n\n/**\n * mutator crashes if path contains certain letters\n * @param pathKey\n */\nfunction patchableKey(pathKey: string) {\n return pathKey.replace(/[=]=/g, ':').replace(/[[\\]]/g, '|').replace(/\"/g, '')\n}\n\nexport function useTypePath(doc: SanityDocumentLike, pathString: string) {\n return useMemo(() => getTypePath(doc, pathString), [doc, pathString])\n}\n\nexport function useSelectedField(\n documentSchemaType?: SchemaType,\n path?: string,\n): FieldRef | undefined {\n const {getFieldRefs} = useAiAssistanceConfig()\n\n const selectableFields = useMemo(\n () =>\n documentSchemaType && isObjectSchemaType(documentSchemaType)\n ? [getDocumentFieldRef(documentSchemaType), ...getFieldRefs(documentSchemaType.name)]\n : [],\n [documentSchemaType, getFieldRefs],\n )\n\n return useMemo(() => {\n return path ? selectableFields?.find((f) => f.key === path) : undefined\n }, [selectableFields, path])\n}\n\nexport function getFieldTitle(field?: FieldRef) {\n const schemaType = field?.schemaType\n return field?.title ?? schemaType?.title ?? schemaType?.name ?? 'Untitled'\n}\n\nexport type AiPaneRouter = Omit<PaneRouterContextValue, 'setParams' | 'params'> & {\n params: AssistInspectorRouteParams\n setParams: (p: Record<keyof AssistInspectorRouteParams, string | undefined>) => void\n}\n\nexport function useAiPaneRouter(): AiPaneRouter {\n const paneRouter = usePaneRouter()\n\n return useMemo(() => ({...paneRouter, params: paneRouter.params ?? {}}), [paneRouter])\n}\n","import type {SanityClient} from '@sanity/client'\nimport {useToast} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {type Path, pathToString, useClient, useCurrentUser} from 'sanity'\n\nimport {useAiAssistanceConfig, useSerializedTypes} from './assistLayout/AiAssistanceConfigContext'\nimport type {ConditionalMemberState} from './helpers/conditionalMembers'\nimport type {FieldLanguageMap} from './translate/paths'\nimport {documentRootKey} from './types'\n\nexport interface UserTextInstance {\n blockKey: string\n userInput: string\n}\n\nexport interface RunInstructionRequest {\n documentId: string\n assistDocumentId: string\n path: string\n typePath?: string\n instructionKey: string\n userId?: string\n userTexts?: UserTextInstance[]\n conditionalMembers?: ConditionalMemberState[]\n}\n\nexport interface InstructStatus {\n enabled: boolean\n initialized: boolean\n validToken: boolean\n}\n\nexport interface TranslateRequest {\n documentId: string\n translatePath: Path\n languagePath?: string\n styleguide: () => Promise<string | undefined>\n fieldLanguageMap?: FieldLanguageMap[]\n conditionalMembers?: ConditionalMemberState[]\n}\n\nconst basePath = '/assist/tasks/instruction'\nexport const API_VERSION_WITH_EXTENDED_TYPES = '2025-04-01'\n\nexport function canUseAssist(status: InstructStatus | undefined) {\n return status?.enabled && status.initialized && status.validToken\n}\n\nexport function useApiClient(customApiClient?: (defaultClient: SanityClient) => SanityClient) {\n const client = useClient({apiVersion: API_VERSION_WITH_EXTENDED_TYPES})\n return useMemo(\n () => (customApiClient ? customApiClient(client) : client),\n [client, customApiClient],\n )\n}\n\nexport function useTranslate(apiClient: SanityClient) {\n const [loading, setLoading] = useState(false)\n const user = useCurrentUser()\n const types = useSerializedTypes()\n const toast = useToast()\n\n const translate = useCallback(\n ({\n documentId,\n languagePath,\n styleguide,\n translatePath,\n fieldLanguageMap,\n conditionalMembers,\n }: TranslateRequest) => {\n setLoading(true)\n\n async function run() {\n return apiClient.request({\n method: 'POST',\n url: `/assist/tasks/translate/${apiClient.config().dataset}?projectId=${\n apiClient.config().projectId\n }`,\n body: {\n documentId,\n types,\n languagePath,\n userStyleguide: await styleguide(),\n fieldLanguageMap,\n conditionalMembers,\n translatePath:\n translatePath.length === 0 ? documentRootKey : pathToString(translatePath),\n userId: user?.id,\n },\n })\n }\n\n return run()\n .catch((e) => {\n toast.push({\n status: 'error',\n title: 'Translate failed',\n description: e.message,\n })\n setLoading(false)\n throw e\n })\n .finally(() => {\n // adding some artificial delay here\n // server responds with 201 then proceeds; we dont need to allow spamming the button\n setTimeout(() => {\n setLoading(false)\n }, 2000)\n })\n },\n [setLoading, apiClient, toast, user, types],\n )\n\n return useMemo(\n () => ({\n translate,\n loading,\n }),\n [translate, loading],\n )\n}\n\nexport function useGenerateCaption(apiClient: SanityClient) {\n const [loading, setLoading] = useState(false)\n const user = useCurrentUser()\n const types = useSerializedTypes()\n const toast = useToast()\n\n const generateCaption = useCallback(\n ({path, documentId}: {path: string; documentId: string}) => {\n setLoading(true)\n\n return apiClient\n .request({\n method: 'POST',\n url: `/assist/tasks/generate-caption/${apiClient.config().dataset}?projectId=${\n apiClient.config().projectId\n }`,\n body: {\n path,\n documentId,\n types,\n userId: user?.id,\n },\n })\n .catch((e) => {\n toast.push({\n status: 'error',\n title: 'Generate image description failed',\n description: e.message,\n })\n setLoading(false)\n throw e\n })\n .finally(() => {\n // adding some artificial delay here\n // server responds with 201 then proceeds; we dont need to allow spamming the button\n setTimeout(() => {\n setLoading(false)\n }, 2000)\n })\n },\n [setLoading, apiClient, toast, user, types],\n )\n\n return useMemo(\n () => ({\n generateCaption,\n loading,\n }),\n [generateCaption, loading],\n )\n}\n\nexport function useGenerateImage(apiClient: SanityClient) {\n const [loading, setLoading] = useState(false)\n const user = useCurrentUser()\n const types = useSerializedTypes()\n const toast = useToast()\n\n const generateImage = useCallback(\n ({path, documentId}: {path: string; documentId: string}) => {\n setLoading(true)\n\n return apiClient\n .request({\n method: 'POST',\n url: `/assist/tasks/generate-image/${apiClient.config().dataset}?projectId=${\n apiClient.config().projectId\n }`,\n body: {\n path,\n documentId,\n types,\n userId: user?.id,\n },\n })\n .catch((e) => {\n toast.push({\n status: 'error',\n title: 'Generate image from prompt failed',\n description: e.message,\n })\n setLoading(false)\n throw e\n })\n .finally(() => {\n // adding some artificial delay here\n // server responds with 201 then proceeds; we dont need to allow spamming the button\n setTimeout(() => {\n setLoading(false)\n }, 2000)\n })\n },\n [setLoading, apiClient, toast, user, types],\n )\n\n return useMemo(\n () => ({\n generateImage,\n loading,\n }),\n [generateImage, loading],\n )\n}\n\nexport function useGetInstructStatus(apiClient: SanityClient) {\n const [loading, setLoading] = useState(true)\n\n const getInstructStatus = useCallback(async () => {\n setLoading(true)\n\n const projectId = apiClient.config().projectId\n try {\n const status = await apiClient.request<InstructStatus>({\n method: 'GET',\n url: `${basePath}/${apiClient.config().dataset}/status?projectId=${projectId}`,\n })\n\n return status\n } finally {\n setLoading(false)\n }\n }, [setLoading, apiClient])\n\n return {\n loading,\n getInstructStatus,\n }\n}\n\nexport function useInitInstruct(apiClient: SanityClient) {\n const [loading, setLoading] = useState(false)\n const initInstruct = useCallback(() => {\n setLoading(true)\n return apiClient\n .request({\n method: 'GET',\n url: `${basePath}/${apiClient.config().dataset}/init?projectId=${\n apiClient.config().projectId\n }`,\n })\n .finally(() => {\n setLoading(false)\n })\n }, [setLoading, apiClient])\n\n return {\n loading,\n initInstruct,\n }\n}\n\nexport function useRunInstructionApi(apiClient: SanityClient) {\n const toast = useToast()\n const [loading, setLoading] = useState(false)\n const user = useCurrentUser()\n const types = useSerializedTypes()\n\n const {\n config: {assist: assistConfig},\n } = useAiAssistanceConfig()\n\n const runInstruction = useCallback(\n (request: RunInstructionRequest) => {\n if (!user) {\n toast.push({\n status: 'error',\n title: 'Unable to get user for instruction.',\n })\n return undefined\n }\n setLoading(true)\n\n const {timeZone, locale} = Intl.DateTimeFormat().resolvedOptions()\n const defaultLocaleSettings = {timeZone, locale}\n const localeSettings =\n assistConfig?.localeSettings?.({user, defaultSettings: defaultLocaleSettings}) ??\n defaultLocaleSettings\n\n return apiClient\n .request({\n method: 'POST',\n url: `${basePath}/${apiClient.config().dataset}?projectId=${\n apiClient.config().projectId\n }`,\n body: {\n ...request,\n types,\n userId: user?.id,\n localeSettings,\n maxPathDepth: assistConfig?.maxPathDepth,\n },\n })\n .catch((e) => {\n toast.push({\n status: 'error',\n title: 'Instruction failed',\n description: e.message,\n })\n throw e\n })\n .finally(() => {\n setLoading(false)\n })\n },\n [apiClient, types, user, toast, assistConfig],\n )\n\n return useMemo(\n () => ({\n runInstruction,\n loading,\n }),\n [runInstruction, loading],\n )\n}\n","import {PlayIcon} from '@sanity/icons/Play'\nimport {Button, Dialog, Flex, Stack, Text, TextArea, Tooltip} from '@sanity/ui'\nimport {\n createContext,\n type Dispatch,\n type FormEvent,\n type PropsWithChildren,\n type SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {FormFieldHeaderText} from 'sanity'\n\nimport type {CustomInputResult, GetUserInput} from '../fieldActions/useUserInput'\nimport {getInstructionTitle} from '../helpers/misc'\nimport {type UserInputBlock, userInputTypeName} from '../types'\nimport {useApiClient, useRunInstructionApi} from '../useApiClient'\nimport {useAiAssistanceConfig} from './AiAssistanceConfigContext'\nimport type {RunInstructionArgs} from './AssistLayout'\n\ntype BlockInputs = Record<string, string>\nconst NO_INPUT: BlockInputs = {}\n\nexport interface RunInstructionContextValue {\n runInstruction: (req: RunInstructionArgs) => void\n getUserInput: GetUserInput\n instructionLoading: boolean\n}\n\nconst RunInstructionContext = createContext<RunInstructionContextValue>({\n runInstruction: () => {},\n getUserInput: async () => undefined,\n instructionLoading: false,\n})\n\nexport function useRunInstruction() {\n return useContext(RunInstructionContext)\n}\n\nfunction isUserInputBlock(block: {_type: string}): block is UserInputBlock {\n return block._type === userInputTypeName\n}\n\nexport function RunInstructionProvider(props: PropsWithChildren<{}>) {\n const {config} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {runInstruction: runInstructionRequest, loading} = useRunInstructionApi(apiClient)\n\n const id = useId()\n\n const [inputs, setInputs] = useState(NO_INPUT)\n const [runRequest, setRunRequest] = useState<\n | (RunInstructionArgs & {userInputBlocks: UserInputBlock[]})\n | {dialogTitle: string; userInputBlocks: UserInputBlock[]}\n | undefined\n >()\n\n const [resolveUserInput, setResolveUserInput] =\n useState<\n (\n value: CustomInputResult[] | PromiseLike<CustomInputResult[] | undefined> | undefined,\n ) => void\n >()\n\n const getUserInput: GetUserInput = useCallback(async ({title, inputs}) => {\n const userInputBlocks: UserInputBlock[] = inputs.map((input, i) => ({\n _type: userInputTypeName,\n _key: input.id ?? `${i}`,\n message: input.title,\n description: input.description,\n }))\n\n if (!userInputBlocks.length) {\n return undefined\n }\n setRunRequest({dialogTitle: title, userInputBlocks})\n return new Promise<CustomInputResult[] | undefined>((resolve) => {\n setResolveUserInput(() => resolve)\n })\n }, [])\n\n const runInstruction = useCallback(\n (req: RunInstructionArgs) => {\n if (loading) {\n return\n }\n const {instruction, ...request} = req\n const instructionKey = instruction._key\n const userInputBlocks = instruction?.prompt\n ?.flatMap((block) =>\n block._type === 'block' ? block.children.filter(isUserInputBlock) : [block],\n )\n .filter(isUserInputBlock)\n\n if (!userInputBlocks?.length) {\n void runInstructionRequest({\n ...request,\n instructionKey,\n userTexts: undefined,\n })\n return\n }\n\n setRunRequest({\n ...req,\n userInputBlocks,\n })\n },\n [runInstructionRequest, loading],\n )\n\n const close = useCallback(() => {\n setRunRequest(undefined)\n setInputs(NO_INPUT)\n if (resolveUserInput) {\n resolveUserInput(undefined)\n }\n setResolveUserInput(undefined)\n }, [resolveUserInput])\n\n const runWithInput = useCallback(() => {\n if (runRequest) {\n if ('instruction' in runRequest) {\n const {instruction, userInputBlocks: _, ...request} = runRequest\n void runInstructionRequest({\n ...request,\n instructionKey: instruction._key,\n userTexts: Object.entries(inputs).map(([key, value]) => ({\n blockKey: key,\n userInput: value,\n })),\n })\n } else {\n const userInputs = Object.values(inputs).map((input, i) => {\n const userInputBlock = runRequest.userInputBlocks[i]!\n return {\n input: {\n id: userInputBlock._key,\n title: userInputBlock.message ?? '',\n description: userInputBlock.description,\n },\n result: input,\n }\n })\n resolveUserInput?.(userInputs)\n setResolveUserInput(undefined)\n }\n }\n close()\n }, [close, runInstructionRequest, runRequest, inputs, resolveUserInput])\n\n const open = !!runRequest\n\n const runDisabled = useMemo(\n () =>\n (runRequest?.userInputBlocks?.length ?? 0) >\n Object.entries(inputs).filter(([, value]) => !!value).length,\n [runRequest?.userInputBlocks, inputs],\n )\n\n const runButton = (\n <Button\n text=\"Run instruction\"\n onClick={runWithInput}\n tone=\"primary\"\n icon={PlayIcon}\n style={{width: '100%'}}\n disabled={runDisabled}\n />\n )\n\n const contextValue: RunInstructionContextValue = useMemo(\n // oxlint-disable-next-line react/react-compiler\n () => ({runInstruction, getUserInput, instructionLoading: loading}),\n // oxlint-disable-next-line react-hooks/exhaustive-deps\n [runInstruction, loading],\n )\n\n return (\n <RunInstructionContext.Provider value={contextValue}>\n {open ? (\n <Dialog\n id={id}\n open={open}\n onClose={close}\n width={1}\n header={\n 'dialogTitle' in runRequest\n ? runRequest.dialogTitle\n : getInstructionTitle(runRequest?.instruction)\n }\n footer={\n <Flex justify=\"space-between\" padding={2} flex={1}>\n {runDisabled ? (\n <Tooltip\n content={\n <Flex padding={2}>\n <Text>Unable to run instruction. All fields must have a value.</Text>\n </Flex>\n }\n placement=\"top\"\n >\n <Flex flex={1}>{runButton}</Flex>\n </Tooltip>\n ) : (\n runButton\n )}\n </Flex>\n }\n >\n <Stack padding={4} gap={2}>\n {runRequest?.userInputBlocks?.map((block, i) => (\n <UserInput\n key={block._key}\n block={block}\n autoFocus={i === 0}\n inputs={inputs}\n setInputs={setInputs}\n />\n ))}\n </Stack>\n </Dialog>\n ) : null}\n {props.children}\n </RunInstructionContext.Provider>\n )\n}\n\nfunction UserInput(props: {\n block: UserInputBlock\n inputs: BlockInputs\n setInputs: Dispatch<SetStateAction<BlockInputs>>\n autoFocus?: boolean\n}) {\n const {block, autoFocus, setInputs, inputs} = props\n const key = block._key\n const textAreaRef = useRef<HTMLTextAreaElement>(null)\n\n const onChange = useCallback(\n // oxlint-disable-next-line no-deprecated\n (e: FormEvent<HTMLTextAreaElement>) => {\n setInputs((current) => ({\n ...current,\n [key]: (e.currentTarget ?? e.target).value,\n }))\n },\n [key, setInputs],\n )\n\n const value = useMemo(() => inputs[key], [inputs, key])\n\n useEffect(() => {\n if (!autoFocus) {\n return\n }\n setTimeout(() => textAreaRef.current?.focus(), 0)\n }, [autoFocus])\n\n return (\n <Stack padding={2} gap={3}>\n <FormFieldHeaderText\n title={block?.message ?? 'Provide more context'}\n description={block.description}\n />\n <TextArea\n ref={textAreaRef}\n rows={4}\n value={value}\n onChange={onChange}\n style={{resize: 'vertical'}}\n />\n </Stack>\n )\n}\n","import {useCallback, useEffect, useState} from 'react'\nimport {type ObjectSchemaType, PatchEvent, type SanityDocument, unset} from 'sanity'\n\nimport {useRunInstruction} from '../assistLayout/RunInstructionProvider'\n\nexport interface DraftDelayedTaskArgs<T> {\n documentOnChange: (event: PatchEvent) => void\n // indicates if the document is a draft or liveEditable currently\n isDocAssistable: boolean\n task: (args: T) => void\n}\n\nexport function isDocAssistable(\n documentSchemaType: ObjectSchemaType,\n published?: SanityDocument | null,\n draft?: SanityDocument | null,\n) {\n return !!(documentSchemaType.liveEdit ? published : draft)\n}\n\nexport function useRequestRunInstruction(args: {\n documentOnChange: (event: PatchEvent) => void\n // indicates if the document is a draft or liveEditable currently\n isDocAssistable: boolean\n}) {\n const {runInstruction, instructionLoading} = useRunInstruction()\n const requestRunInstruction = useDraftDelayedTask({\n ...args,\n task: runInstruction,\n })\n\n return {\n instructionLoading,\n requestRunInstruction,\n }\n}\n\n/**\n * Ensures that the current document is a draft before running task\n */\nexport function useDraftDelayedTask<T>(args: DraftDelayedTaskArgs<T>) {\n const {documentOnChange, isDocAssistable, task} = args\n\n const [queuedArgs, setQueuedArgs] = useState<T | undefined>(undefined)\n\n useEffect(() => {\n if (queuedArgs && isDocAssistable) {\n task(queuedArgs)\n // oxlint-disable-next-line react/react-compiler\n setQueuedArgs(undefined)\n }\n }, [queuedArgs, isDocAssistable, task])\n\n return useCallback(\n (taskArgs: T) => {\n // make a dummy edit: this will trigger the document/draft to be created\n documentOnChange(PatchEvent.from([unset(['_force_document_creation'])]))\n setQueuedArgs(taskArgs)\n },\n [setQueuedArgs, documentOnChange],\n )\n}\n","import {useCallback, useEffect, useMemo, useState} from 'react'\nimport {getDraftId, getVersionId, type ObjectSchemaType, usePerspective, useSchema} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {useAiPaneRouter} from '../../assistInspector/helpers'\nimport {useAiAssistanceConfig} from '../../assistLayout/AiAssistanceConfigContext'\nimport {fieldPathParam, type InstructionTask} from '../../types'\nimport type {AssistDocumentContextValue} from '../AssistDocumentContext'\nimport {isDocAssistable} from '../RequestRunInstructionProvider'\nimport {useStudioAssistDocument} from './useStudioAssistDocument'\n\nexport function useAssistDocumentContextValue(documentId: string, documentType: string) {\n const schema = useSchema()\n\n const {getFieldRefs, getFieldRefsByTypePath} = useAiAssistanceConfig()\n const documentSchemaType = useMemo(() => {\n // oxlint-disable-next-line no-unsafe-type-assertion\n const schemaType = schema.get(documentType) as ObjectSchemaType | undefined\n if (!schemaType) {\n throw new Error(`Schema type \"${documentType}\" not found`)\n }\n return schemaType\n }, [documentType, schema])\n\n const {fieldRefs, fieldRefsByTypePath} = useMemo(() => {\n return {\n fieldRefs: getFieldRefs(documentType),\n fieldRefsByTypePath: getFieldRefsByTypePath(documentType),\n }\n }, [getFieldRefs, getFieldRefsByTypePath, documentType])\n\n const {\n openInspector,\n closeInspector,\n inspector,\n onChange: documentOnChange,\n editState,\n } = useDocumentPane()\n const {selectedReleaseId} = usePerspective()\n const {draft, published, version} = editState || {}\n\n const assistableDocumentId = selectedReleaseId\n ? getVersionId(documentId, selectedReleaseId)\n : documentSchemaType.liveEdit\n ? documentId\n : getDraftId(documentId)\n\n const documentIsNew = selectedReleaseId ? !version?._id : !draft?._id && !published?._id\n const documentIsAssistable = selectedReleaseId\n ? !!version\n : isDocAssistable(documentSchemaType, published, draft)\n\n const {params} = useAiPaneRouter()\n const selectedPath = params[fieldPathParam]\n\n const assistDocument = useStudioAssistDocument({\n documentId: assistableDocumentId,\n schemaType: documentSchemaType,\n })\n const {syntheticTasks, addSyntheticTask, removeSyntheticTask} =\n useSyntheticTasks(assistableDocumentId)\n\n const value: AssistDocumentContextValue = useMemo(() => {\n const base = {\n assistableDocumentId,\n documentSchemaType,\n documentIsNew,\n documentIsAssistable,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n selectedPath,\n syntheticTasks,\n addSyntheticTask,\n removeSyntheticTask,\n fieldRefs,\n fieldRefsByTypePath,\n }\n if (!assistDocument) {\n return {...base, loading: true, assistDocument: undefined}\n }\n return {\n ...base,\n loading: false,\n assistDocument: assistDocument,\n }\n }, [\n assistDocument,\n documentIsAssistable,\n assistableDocumentId,\n documentSchemaType,\n documentIsNew,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n selectedPath,\n syntheticTasks,\n addSyntheticTask,\n removeSyntheticTask,\n fieldRefs,\n fieldRefsByTypePath,\n ])\n\n return value\n}\n\nfunction useSyntheticTasks(assistableDocumentId: string) {\n const [syntheticTasks, setSyntheticTasks] = useState<InstructionTask[]>(() => [])\n const addSyntheticTask = useCallback((task: InstructionTask) => {\n setSyntheticTasks((current) => [...current, task])\n }, [])\n const removeSyntheticTask = useCallback((task: InstructionTask) => {\n setSyntheticTasks((current) => current.filter((t) => task._key !== t._key))\n }, [])\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler\n setSyntheticTasks([])\n }, [assistableDocumentId])\n\n return {\n syntheticTasks,\n addSyntheticTask,\n removeSyntheticTask,\n }\n}\n","import type {PropsWithChildren} from 'react'\n\nimport {AssistDocumentContext} from './AssistDocumentContext'\nimport {useAssistDocumentContextValue} from './hooks/useAssistDocumentContextValue'\n\nexport interface AIDocumentInputProps {\n documentId: string\n documentType: string\n}\n\nexport function AssistDocumentContextProvider(props: PropsWithChildren<AIDocumentInputProps>) {\n const {documentId, documentType} = props\n const value = useAssistDocumentContextValue(documentId, documentType)\n return (\n <AssistDocumentContext.Provider value={value}>{props.children}</AssistDocumentContext.Provider>\n )\n}\n","import type {DocumentLayoutProps} from 'sanity'\n\nimport {AssistDocumentContextProvider} from './AssistDocumentContextProvider'\n\nexport function AssistDocumentLayout(props: DocumentLayoutProps) {\n const {documentId, documentType} = props\n return (\n <AssistDocumentContextProvider documentType={documentType} documentId={documentId}>\n {props.renderDefault(props)}\n </AssistDocumentContextProvider>\n )\n}\n","import {type ReactElement, type ReactNode, type Ref} from 'react'\nimport {keyframes, styled} from 'styled-components'\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n transform: scale(0.75);\n }\n 40% {\n opacity: 0;\n transform: scale(0.75);\n }\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n`\n\nconst FadeInDiv = styled.div`\n animation-name: ${fadeIn};\n animation-timing-function: ease-in-out;\n`\n\nexport function FadeInContent({\n children,\n durationMs = 250,\n ref,\n}: {\n children?: ReactNode\n ms?: number\n durationMs?: number\n ref?: Ref<HTMLDivElement>\n}): ReactElement {\n return (\n <FadeInDiv ref={ref} style={{animationDuration: `${durationMs}ms`}}>\n {children}\n </FadeInDiv>\n )\n}\n","import {purple} from '@sanity/color'\nimport {SparklesIcon} from '@sanity/icons/Sparkles'\nimport {Text} from '@sanity/ui'\nimport {type CSSProperties, useMemo} from 'react'\nimport {useColorSchemeValue} from 'sanity'\nimport {keyframes, styled} from 'styled-components'\n\nconst Root = styled.span`\n display: block;\n width: 25px;\n height: 25px;\n position: relative;\n`\n\nconst dash = keyframes`\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(43deg);\n }\n`\n\nconst Outline = styled.svg`\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n\n & > circle {\n stroke: var(--ai-avatar-stroke-color);\n stroke-width: 1.5px;\n stroke-linecap: round;\n transform-origin: center;\n animation: ${dash} 500ms ease-in-out infinite;\n transition: stroke-dasharray 200ms ease-in-out;\n\n stroke-dasharray: 2.34px 0;\n\n [data-state='active'] > & {\n stroke-dasharray: 2px 2.34px;\n }\n }\n`\n\nconst IconDisc = styled.span`\n background: var(--ai-avatar-disc-color);\n color: white;\n width: 21px;\n height: 21px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10.5px;\n position: absolute;\n top: 2px;\n left: 2px;\n`\n\nexport function AssistAvatar(props: {state?: 'present' | 'active'}) {\n const {state = 'present'} = props\n const scheme = useColorSchemeValue()\n\n const style = useMemo(() => {\n if (scheme === 'dark') {\n // oxlint-disable-next-line no-unsafe-type-assertion\n return {\n [`--ai-avatar-stroke-color`]: purple[400].hex,\n [`--ai-avatar-disc-color`]: purple[600].hex,\n } as CSSProperties\n }\n\n // oxlint-disable-next-line no-unsafe-type-assertion\n return {\n [`--ai-avatar-stroke-color`]: purple[500].hex,\n [`--ai-avatar-disc-color`]: purple[600].hex,\n } as CSSProperties\n }, [scheme])\n\n return (\n <Root data-state={state} style={style}>\n <Outline\n width=\"25\"\n height=\"25\"\n viewBox=\"0 0 25 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"12.5\" cy=\"12.5\" r=\"11.75\" />\n </Outline>\n <IconDisc>\n <Text as=\"span\" size={0} style={{color: 'inherit'}}>\n <SparklesIcon style={{color: 'inherit'}} />\n </Text>\n </IconDisc>\n </Root>\n )\n}\n","import {Card, Flex, Text, Tooltip} from '@sanity/ui'\nimport type {FormNodePresence} from 'sanity'\n\nimport {FadeInContent} from '../components/FadeInContent'\nimport {AssistAvatar} from './AssistAvatar'\n\nexport function AiFieldPresence(_props: {presence: FormNodePresence}) {\n return (\n <Card style={{position: 'relative', background: 'transparent'}} contentEditable={false}>\n <Tooltip\n placement=\"left\"\n content={\n <Card padding={3} border>\n <Flex align=\"center\">\n <Text size={1}>Running instruction...</Text>\n </Flex>\n </Card>\n }\n >\n <FadeInContent durationMs={300}>\n <AssistAvatar state=\"active\" />\n </FadeInContent>\n </Tooltip>\n </Card>\n )\n}\n","import {useMemo} from 'react'\nimport {type FormNodePresence, isKeySegment, type Path, stringToPath} from 'sanity'\n\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {maxHistoryVisibilityMs, pluginTitle} from '../constants'\nimport type {AiPresence} from '../types'\n\nconst NO_PRESENCE: FormNodePresence[] = []\n\nexport function useAssistPresence(path: Path, showFocusWithin?: boolean): FormNodePresence[] {\n const context = useAssistDocumentContext()\n const assistDocument = context && 'assistDocument' in context ? context.assistDocument : undefined\n const tasks = assistDocument?.tasks\n\n return useMemo(() => {\n const activePresence = tasks\n ?.filter((task) => !task.ended)\n ?.flatMap((task) => task.presence ?? [])\n ?.filter(\n (p) =>\n p.started &&\n new Date().getTime() - new Date(p.started).getTime() < maxHistoryVisibilityMs,\n )\n .filter((presence) => {\n if (!presence.path || !path.length) {\n return false\n }\n const statusPath = stringToPath(presence.path)\n\n if (!showFocusWithin && statusPath.length !== path.length) {\n return false\n }\n\n return path.every((pathSegment, i) => {\n const statusSegment = statusPath[i]\n if (typeof pathSegment === 'string') {\n return pathSegment === statusSegment\n }\n if (isKeySegment(pathSegment) && statusSegment && isKeySegment(statusSegment)) {\n return pathSegment._key === statusSegment._key\n }\n return false\n })\n })\n if (!activePresence?.length) {\n return NO_PRESENCE\n }\n\n return activePresence.map((status) => aiPresence(status, path))\n }, [showFocusWithin, tasks, path])\n}\n\nexport function aiPresence(presence: AiPresence, path: Path, _title?: string): FormNodePresence {\n return {\n user: {\n id: `sanity-assistant_${presence._key}`,\n displayName: pluginTitle,\n },\n path: path,\n sessionId: 'not-available',\n lastActiveAt: presence?.started ?? new Date().toISOString(),\n }\n}\n","import {Box, Flex} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {type FieldProps, isArraySchemaType} from 'sanity'\n\nimport {assistFormId} from '../_lib/form/constants'\nimport {isAssistSupported} from '../helpers/assistSupported'\nimport {isPortableTextArray, isType} from '../helpers/typeUtils'\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\nimport {useAssistPresence} from '../presence/useAssistPresence'\nimport {contextDocumentTypeName} from '../types'\n\nexport function AssistFieldWrapper(props: FieldProps) {\n const {schemaType} = props\n\n const isSupported = useMemo(() => isAssistSupported(schemaType), [schemaType])\n\n if (\n !isSupported ||\n schemaType.name.startsWith('sanity.') ||\n schemaType.name === contextDocumentTypeName\n ) {\n return props.renderDefault(props)\n }\n if (\n !isType(props.schemaType, 'document') &&\n props.inputId !== 'root' &&\n props.inputId !== assistFormId\n ) {\n return <AssistField {...props}>{props.children}</AssistField>\n }\n\n return props.renderDefault(props)\n}\n\nfunction AssistField(props: FieldProps) {\n const isPortableText = useMemo(\n () => !!(isArraySchemaType(props.schemaType) && isPortableTextArray(props.schemaType)),\n [props.schemaType],\n )\n\n const presence = useAssistPresence(props.path, isPortableText)\n const singlePresence = presence[0]\n\n const actions = (\n <Flex gap={2} align=\"center\" justify=\"space-between\">\n {singlePresence && (\n <Box>\n <AiFieldPresence presence={singlePresence} />\n </Box>\n )}\n </Flex>\n )\n\n return props.renderDefault({\n ...props,\n\n actions: props.actions,\n\n // Render presence in the internal slot (between presence and the field actions)\n // oxlint-disable-next-line no-deprecated -- the slot is deprecated for external use but exists specifically for this plugin\n __internal_slot: actions,\n })\n}\n","import {Box, Button, Card, ErrorBoundary, Flex, Stack, Text} from '@sanity/ui'\nimport {type ErrorInfo, type PropsWithChildren, useCallback, useMemo, useState} from 'react'\nimport {type InputProps, isArraySchemaType, PatchEvent, unset} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {isPortableTextArray} from '../helpers/typeUtils'\n\nconst WrapPreCard = styled(Card)`\n & pre {\n white-space: pre-wrap !important;\n }\n`\n\nexport function SafeValueInput(props: InputProps) {\n return (\n <ErrorWrapper onChange={props.onChange}>\n <PteValueFixer {...props} />\n </ErrorWrapper>\n )\n}\n\nexport function ErrorWrapper(\n props: PropsWithChildren<{onChange: (patchEvent: PatchEvent) => void}>,\n) {\n const {onChange} = props\n const [error, setError] = useState<Error | undefined>()\n\n const catchError = useCallback((params: {error: Error; info: ErrorInfo}) => {\n setError(params.error)\n }, [])\n\n const unsetValue = useCallback(() => {\n onChange(PatchEvent.from(unset()))\n setError(undefined)\n }, [onChange])\n const dismiss = useCallback(() => setError(undefined), [])\n const catcher = <ErrorBoundary onCatch={catchError}>{props.children}</ErrorBoundary>\n\n return error ? (\n <Card border tone=\"critical\" padding={2} contentEditable={false}>\n <Stack gap={3}>\n <Text muted weight=\"semibold\">\n An error occurred.\n </Text>\n\n <WrapPreCard flex={1} padding={2} tone=\"critical\" border>\n {catcher}\n </WrapPreCard>\n\n <Flex flex={1} gap={3}>\n <Box flex={1}>\n <Button text=\"Dismiss\" onClick={dismiss} tone=\"primary\" />\n </Box>\n <Button text=\"Unset value\" onClick={unsetValue} tone=\"critical\" />\n </Flex>\n </Stack>\n </Card>\n ) : (\n catcher\n )\n}\n\nfunction PteValueFixer(props: InputProps) {\n const isPortableText = useMemo(\n () => isArraySchemaType(props.schemaType) && isPortableTextArray(props.schemaType),\n [props.schemaType],\n )\n const value = props.value\n // oxlint-disable-next-line no-unsafe-type-assertion\n if (isPortableText && value && !(value as any[]).length) {\n return props.renderDefault({...props, value: undefined})\n }\n\n return props.renderDefault(props)\n}\n","import {Box, Flex} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {type BlockProps, PatchEvent, useFormCallbacks} from 'sanity'\n\nimport {ErrorWrapper} from '../components/SafeValueInput'\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\nimport {useAssistPresence} from '../presence/useAssistPresence'\n\nexport function AssistFormBlock(props: BlockProps) {\n const presence = useAssistPresence(props.path, true)\n const {onChange} = useFormCallbacks()\n const key = props.value._key\n const localOnChange = useCallback(\n (patchEvent: PatchEvent) => {\n if (!key) {\n return\n }\n onChange(PatchEvent.from(patchEvent).prefixAll({_key: key}))\n },\n [onChange, key],\n )\n const singlePresence = presence[0]\n return (\n <ErrorWrapper onChange={localOnChange}>\n <Flex align=\"center\" justify=\"space-between\">\n <Box flex={1}>{props.renderDefault(props)}</Box>\n {singlePresence && <AiFieldPresence presence={singlePresence} />}\n </Flex>\n </ErrorWrapper>\n )\n}\n","import {createContext} from 'react'\nimport type {BlockProps} from 'sanity'\n\n// workaround for preview value sometimes lagging behind\nexport const InlineBlockValueContext = createContext<unknown>(undefined)\n\nexport function AssistInlineFormBlock(props: BlockProps) {\n return (\n <InlineBlockValueContext.Provider value={props.value}>\n <>{props.renderDefault(props)}</>\n </InlineBlockValueContext.Provider>\n )\n}\n","import {Box, Flex} from '@sanity/ui'\nimport type {ItemProps} from 'sanity'\n\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\nimport {useAssistPresence} from '../presence/useAssistPresence'\n\nexport function AssistItem(props: ItemProps) {\n const {path} = props\n const presence = useAssistPresence(path, true)\n\n return (\n <Flex align=\"center\" style={{position: 'relative'}}>\n <Box flex={1}>{props.renderDefault({...props})}</Box>\n {presence.map((pre) => (\n <Box key={pre.user.id} style={{position: 'absolute', right: 35}}>\n <AiFieldPresence presence={pre} />\n </Box>\n ))}\n </Flex>\n )\n}\n","import {Box, type BoxProps, Flex, focusFirstDescendant, Spinner, Text} from '@sanity/ui'\nimport type React from 'react'\nimport {type HTMLProps, useEffect, useEffectEvent, useMemo, useRef} from 'react'\nimport {tap} from 'rxjs/operators'\nimport {\n createPatchChannel,\n type DocumentMutationEvent,\n type DocumentRebaseEvent,\n FormBuilder,\n fromMutationPatches,\n type PatchMsg,\n useDocumentPresence,\n useDocumentStore,\n} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {assistFormId} from './constants'\n\n// oxlint-disable-next-line no-deprecated\nconst preventDefault = (ev: React.FormEvent) => ev.preventDefault()\n\nexport function DocumentForm(\n props: Omit<BoxProps<'form'>, 'as'> & Omit<HTMLProps<HTMLFormElement>, 'as' | 'onSubmit' | 'ref'>,\n) {\n const {\n collapsedFieldSets,\n collapsedPaths,\n displayed: value,\n documentId,\n documentType,\n editState,\n formState,\n onBlur,\n onChange,\n onFocus,\n onPathOpen,\n onSetActiveFieldGroup,\n onSetCollapsedFieldSet,\n onSetCollapsedPath,\n ready,\n validation,\n } = useDocumentPane()\n\n const documentStore = useDocumentStore()\n const presence = useDocumentPresence(documentId)\n\n // The `patchChannel` is an INTERNAL publish/subscribe channel that we use to notify form-builder\n // nodes about both remote and local patches.\n // - Used by the Portable Text input to modify selections.\n // - Used by `withDocument` to reset value.\n const patchChannel = useMemo(() => createPatchChannel(), [])\n\n const isLocked = editState?.transactionSyncLock?.enabled\n\n useEffect(() => {\n const sub = documentStore.pair\n .documentEvents(documentId, documentType)\n .pipe(\n tap((event) => {\n if (event.type === 'mutation') {\n patchChannel.publish(prepareMutationEvent(event))\n }\n\n if (event.type === 'rebase') {\n patchChannel.publish(prepareRebaseEvent(event))\n }\n }),\n )\n .subscribe()\n\n return () => {\n sub.unsubscribe()\n }\n }, [documentId, documentStore, documentType, patchChannel])\n\n const hasRev = Boolean(value?._rev)\n const patchChannelPublish = useEffectEvent(() => {\n // this is a workaround for an issue that caused the document pushed to withDocument to get\n // stuck at the first initial value.\n // This effect is triggered only when the document goes from not having a revision, to getting one\n // so it will kick in as soon as the document is received from the backend\n patchChannel.publish({\n type: 'mutation',\n patches: [],\n snapshot: value,\n })\n })\n useEffect(() => {\n if (hasRev) {\n // React to changes in hasRev only\n patchChannelPublish()\n }\n }, [hasRev])\n\n const formRef = useRef<null | HTMLFormElement>(null)\n\n useEffect(() => {\n focusFirstDescendant(formRef.current!)\n }, [])\n\n if (isLocked) {\n return (\n <Box as=\"form\" {...props} ref={formRef}>\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Text size={1}>\n Please hold tight while the document is synced. This usually happens right after the\n document has been published, and it shouldn’t take more than a few seconds\n </Text>\n </Flex>\n </Box>\n )\n }\n\n return (\n <Box as=\"form\" {...props} onSubmit={preventDefault} ref={formRef}>\n {ready ? (\n formState === null ? (\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Text size={1}>This form is hidden</Text>\n </Flex>\n ) : (\n <FormBuilder\n __internal_patchChannel={patchChannel}\n collapsedFieldSets={collapsedFieldSets}\n collapsedPaths={collapsedPaths}\n focusPath={formState.focusPath}\n changed={formState.changed}\n focused={formState.focused}\n groups={formState.groups}\n id={assistFormId}\n members={formState.members}\n onChange={onChange}\n onFieldGroupSelect={onSetActiveFieldGroup}\n onPathBlur={onBlur}\n onPathFocus={onFocus}\n onPathOpen={onPathOpen}\n onSetFieldSetCollapsed={onSetCollapsedFieldSet}\n onSetPathCollapsed={onSetCollapsedPath}\n presence={presence}\n readOnly={formState.readOnly}\n schemaType={formState.schemaType}\n validation={validation}\n // oxlint-disable-next-line no-unsafe-type-assertion\n value={formState.value as any}\n hasUpstreamVersion={false}\n />\n )\n ) : (\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Spinner muted />\n\n <Box marginTop={3}>\n <Text align=\"center\" muted size={1}>\n Loading document\n </Text>\n </Box>\n </Flex>\n )}\n </Box>\n )\n}\n\nfunction prepareMutationEvent(event: DocumentMutationEvent): PatchMsg {\n const patches = event.mutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'mutation',\n snapshot: event.document,\n patches: fromMutationPatches(event.origin, patches),\n }\n}\n\nfunction prepareRebaseEvent(event: DocumentRebaseEvent): PatchMsg {\n const remotePatches = event.remoteMutations.map((mut) => mut.patch).filter(Boolean)\n const localPatches = event.localMutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'rebase',\n snapshot: event.document,\n patches: fromMutationPatches('remote', remotePatches).concat(\n fromMutationPatches('local', localPatches),\n ),\n }\n}\n","import {createContext} from 'react'\n\nexport interface AssistTypeContextValue {\n typePath?: string\n documentType?: string\n}\nexport const AssistTypeContext = createContext<AssistTypeContextValue>({})\n","// oxlint-disable no-accumulating-spread\nimport {\n type ArrayOfObjectsFormNode,\n type ArrayOfObjectsItemMember,\n type ArrayOfPrimitivesFormNode,\n type DocumentFormNode,\n type FieldsetState,\n isObjectSchemaType,\n type ObjectFormNode,\n type Path,\n pathToString,\n type SchemaType,\n} from 'sanity'\n\nconst DEFAULT_MAX_DEPTH = 8\nconst ABSOLUTE_MAX_DEPTH = 50\n\nexport interface ConditionalMemberState {\n path: string\n hidden: boolean\n readOnly: boolean\n}\n\ninterface ConditionalMemberInnerState extends ConditionalMemberState {\n conditional: boolean\n}\n\n/**\n * This is used to statically determine the state of the functions on the server-side.\n * Paths which has a schema with conditional config should be considered hidden: true and/or readOnly: true\n * Only conditional paths are included, as static props can be determined from schema.\n *\n * Returns paths that has conditional hidden or readOnly schema config (function) and that.\n * Form-state does not contain hidden members.\n *\n * Note:\n * * If a parent path is hidden, no child paths are included\n * * If a parent path is readOnly, no child paths are included\n * * If a path is hidden, it is not included; only conditionally visible paths will be returned, with hidden: false\n */\nexport function getConditionalMembers(\n docState: DocumentFormNode,\n maxDepth = DEFAULT_MAX_DEPTH,\n): ConditionalMemberState[] {\n const doc: ConditionalMemberInnerState = {\n path: '',\n hidden: false,\n readOnly: !!docState.readOnly,\n conditional: isConditional(docState.schemaType),\n }\n return (\n [doc, ...extractConditionalPaths(docState, Math.min(maxDepth, ABSOLUTE_MAX_DEPTH))]\n .filter((v) => v.conditional)\n // oxlint-disable-next-line no-map-spread\n .map(({conditional: _conditional, ...state}) => ({...state}))\n )\n}\n\nfunction isConditional(schemaType: SchemaType) {\n return typeof schemaType.hidden === 'function' || typeof schemaType.readOnly === 'function'\n}\n\nfunction conditionalState(memberState: {\n path: Path\n schemaType: SchemaType\n readOnly?: boolean\n}): ConditionalMemberInnerState {\n return {\n path: pathToString(memberState.path),\n readOnly: !!memberState.readOnly, // Use actual form state readOnly value\n hidden: false, // If it's in form state members, it's not hidden\n conditional: isConditional(memberState.schemaType),\n }\n}\n\nfunction extractConditionalPaths(\n node: ObjectFormNode | FieldsetState,\n maxDepth: number,\n): ConditionalMemberInnerState[] {\n if (node.path.length >= maxDepth) {\n return []\n }\n\n return node.members.reduce<ConditionalMemberInnerState[]>((acc, member) => {\n if (member.kind === 'error') {\n return acc\n }\n if (member.kind === 'field') {\n const schemaType = member.field.schemaType\n if (schemaType.jsonType === 'object') {\n const innerFields = member.field.readOnly\n ? []\n : // oxlint-disable-next-line no-unsafe-type-assertion\n extractConditionalPaths(member.field as ObjectFormNode, maxDepth)\n return [...acc, conditionalState(member.field), ...innerFields]\n } else if (schemaType.jsonType === 'array') {\n // oxlint-disable-next-line no-unsafe-type-assertion\n const array = member.field as ArrayOfObjectsFormNode | ArrayOfPrimitivesFormNode\n\n let arrayPaths: ConditionalMemberInnerState[] = []\n const isObjectsArray = array.members.some(\n (m) => m.kind === 'item' && isObjectSchemaType(m.item.schemaType),\n )\n if (!array.readOnly) {\n for (const arrayMember of array.members) {\n if (arrayMember.kind === 'error') {\n continue\n }\n\n const innerFields =\n isObjectsArray && !arrayMember.item.readOnly\n ? // oxlint-disable-next-line no-unsafe-type-assertion\n extractConditionalPaths((arrayMember as ArrayOfObjectsItemMember).item, maxDepth)\n : []\n\n arrayPaths = [...arrayPaths, conditionalState(arrayMember.item), ...innerFields]\n }\n }\n return [...acc, conditionalState(array), ...arrayPaths]\n }\n\n return [...acc, conditionalState(member.field)]\n } else if (member.kind === 'fieldSet') {\n // oxlint-disable-next-line no-unsafe-type-assertion\n const conditionalFieldset = !!(node as ObjectFormNode).schemaType?.fieldsets?.some(\n (f) => !f.single && f.name === member.fieldSet.name && typeof f.hidden === 'function',\n )\n // oxlint-disable-next-line no-map-spread\n const innerFields = extractConditionalPaths(member.fieldSet, maxDepth).map((f) => ({\n ...f,\n // if fieldset is conditional, visible fields must also be considered conditional\n conditional: conditionalFieldset || f.conditional,\n }))\n return [...acc, ...innerFields]\n }\n\n return acc\n }, [])\n}\n","import {SparklesIcon} from '@sanity/icons/Sparkles'\nimport {Box, Button, Container, Flex, Stack, Text} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {releaseAnnouncementUrl} from '../constants'\n\nconst SparklesIllustration = styled(SparklesIcon)({\n 'fontSize': '3.125em',\n '& path': {\n strokeWidth: `0.6px !important`,\n },\n})\n\nexport function InspectorOnboarding(props: {onDismiss: () => void}) {\n const {onDismiss} = props\n return (\n <Box padding={4}>\n <Container width={0}>\n <Stack gap={4}>\n <div style={{textAlign: 'center'}}>\n <SparklesIllustration />\n </div>\n <Text align=\"center\" size={1}>\n Create reusable AI instructions that can be applied across all documents of a certain\n type.\n </Text>\n\n <Flex align=\"center\" gap={2} justify=\"center\">\n <Button\n as=\"a\"\n href={releaseAnnouncementUrl}\n rel=\"noreferrer\"\n target=\"_blank\"\n fontSize={1}\n mode=\"default\"\n onClick={onDismiss}\n padding={2}\n text=\"Learn more\"\n tone=\"primary\"\n />\n <Button fontSize={1} mode=\"bleed\" onClick={onDismiss} padding={2} text=\"Dismiss\" />\n </Flex>\n </Stack>\n </Container>\n </Box>\n )\n}\n","import {useCallback, useState} from 'react'\n\nexport const inspectorOnboardingKey = 'sanityStudio:assist:inspector:onboarding:dismissed'\n\nfunction isFeatureOnboardingDismissed(featureKey: string): boolean {\n if (typeof localStorage === 'undefined') {\n return false\n }\n\n const value = localStorage.getItem(featureKey)\n return value === 'true'\n}\n\nfunction dismissFeatureOnboarding(featureKey: string) {\n if (typeof localStorage === 'undefined') {\n return\n }\n\n localStorage.setItem(featureKey, 'true')\n}\n\nexport function useOnboardingFeature(featureKey: string) {\n const [showOnboarding, setShowOnboarding] = useState(\n () => !isFeatureOnboardingDismissed(featureKey),\n )\n const dismissOnboarding = useCallback(() => {\n setShowOnboarding(false)\n dismissFeatureOnboarding(featureKey)\n }, [setShowOnboarding, featureKey])\n\n return {showOnboarding, dismissOnboarding}\n}\n","import {SearchIcon} from '@sanity/icons/Search'\nimport {Autocomplete, Box, Breadcrumbs, Card, Flex, Text} from '@sanity/ui'\nimport {useCallback, useMemo} from 'react'\nimport type {ObjectSchemaType} from 'sanity'\n\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {isType} from '../helpers/typeUtils'\nimport {type FieldRef, getDocumentFieldRef} from './helpers'\n\ninterface FieldSelectorProps {\n id: string\n schemaType: ObjectSchemaType\n fieldPath?: string\n onSelect: (path: string) => void\n includeDocument?: boolean\n filter?: (field: FieldRef) => boolean\n}\n\nexport function FieldAutocomplete(props: FieldSelectorProps) {\n const {id, schemaType, fieldPath, onSelect, includeDocument, filter} = props\n\n const {getFieldRefs} = useAiAssistanceConfig()\n\n const fieldRefs = useMemo(() => {\n const refs = getFieldRefs(schemaType.name)\n if (includeDocument) {\n return [getDocumentFieldRef(schemaType), ...refs]\n }\n return refs\n }, [schemaType, includeDocument, getFieldRefs])\n\n const currentField = useMemo(\n () => fieldRefs.find((f) => f.key === fieldPath),\n [fieldPath, fieldRefs],\n )\n\n const autocompleteOptions = useMemo(\n () =>\n fieldRefs\n .filter((field) => (filter ? filter(field) : true))\n .filter((f) => !isType(f.schemaType, 'reference'))\n .map((field) => ({value: field.key, field})),\n [fieldRefs, filter],\n )\n\n const renderOption = useCallback((option: {value: string; field: FieldRef}) => {\n const {value, field} = option\n\n if (!value) {\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Text accent size={1}>\n {option.value}\n </Text>\n </Card>\n )\n }\n\n if (isType(field.schemaType, 'document')) {\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Text size={1} weight=\"semibold\">\n The entire document\n </Text>\n </Card>\n )\n }\n\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Flex gap={3}>\n <Text size={1}>\n <field.icon />\n </Text>\n\n <FieldTitle field={field} />\n </Flex>\n </Card>\n )\n }, [])\n\n const renderValue = useCallback((value: string, option?: {value: string; field: FieldRef}) => {\n return option?.field.title ?? value\n }, [])\n\n const filterOption = useCallback((query: string, option: {value: string; field: FieldRef}) => {\n const lQuery = query.toLowerCase()\n return (\n option?.value?.toLowerCase().includes(lQuery) ||\n option?.field?.title?.toLowerCase().includes(lQuery)\n )\n }, [])\n\n return (\n <Autocomplete\n fontSize={1}\n icon={currentField ? currentField.icon : SearchIcon}\n onChange={onSelect}\n openButton\n id={id}\n options={autocompleteOptions}\n placeholder=\"Search for a field\"\n radius={2}\n renderOption={renderOption}\n renderValue={renderValue}\n value={currentField?.key}\n filterOption={filterOption}\n />\n )\n}\n\nexport function FieldTitle(props: {field: FieldRef}) {\n const splitTitle = props.field.title.split('/')\n return (\n <Box flex=\"none\">\n <Breadcrumbs\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n marginTop: '-4px',\n }}\n separator={\n <Box marginTop={1}>\n <Text muted size={1}>\n /\n </Text>\n </Box>\n }\n gap={1}\n >\n {splitTitle.slice(0, splitTitle.length - 1).map((pt, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <Box key={i} marginTop={1}>\n <Text muted size={1}>\n {pt.trim()}\n </Text>\n </Box>\n ))}\n <Box marginTop={1}>\n <Text size={1} weight=\"medium\">\n {splitTitle[splitTitle.length - 1]}\n </Text>\n </Box>\n </Breadcrumbs>\n </Box>\n )\n}\n","import {formatDistanceToNow} from 'date-fns'\nimport {useEffect, useReducer} from 'react'\n\nfunction useInterval(ms: number) {\n const [tick, update] = useReducer((n) => n + 1, 0)\n\n useEffect(() => {\n const i = setInterval(update, ms)\n return () => clearInterval(i)\n }, [ms])\n return tick\n}\n\nexport function TimeAgo({date}: {date?: string}) {\n useInterval(1000)\n const timeSince = formatDistanceToNow(date ? new Date(date) : new Date())\n return <span title={timeSince}>{timeSince} ago</span>\n}\n","import {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {ClockIcon} from '@sanity/icons/Clock'\nimport {CloseCircleIcon} from '@sanity/icons/CloseCircle'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {SyncIcon} from '@sanity/icons/Sync'\nimport {\n Box,\n Button,\n Card,\n Flex,\n Popover,\n Spinner,\n Stack,\n Text,\n useClickOutside,\n useGlobalKeyDown,\n useLayer,\n} from '@sanity/ui'\nimport {type Ref, useCallback, useMemo, useState} from 'react'\nimport {StatusButton, type StatusButtonProps, typed, useClient} from 'sanity'\nimport {keyframes, styled} from 'styled-components'\n\nimport {TimeAgo} from '../components/TimeAgo'\nimport {maxHistoryVisibilityMs, pluginTitle} from '../constants'\nimport {assistTasksStatusId} from '../helpers/ids'\nimport {getInstructionTitle} from '../helpers/misc'\nimport type {AssistTasksStatus, InstructionTask, StudioInstruction, TaskEndedReason} from '../types'\n\nexport interface InstructionTaskHistoryButtonProps {\n documentId?: string\n tasks: InstructionTask[] | undefined\n instructions: StudioInstruction[] | undefined\n showTitles: boolean\n}\n\ninterface CancelableInstructionTask extends InstructionTask {\n cancel: () => void\n title?: string\n}\n\nconst rotate = keyframes`\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n`\n\nconst SyncSpinningIcon = styled(SyncIcon)`\n animation: ${rotate} 1s linear infinite;\n`\n\nconst TASK_CONFIG = {\n aborted: {\n title: 'Canceled',\n icon: CloseCircleIcon,\n tone: 'transparent',\n },\n error: {\n title: 'Error',\n icon: ErrorOutlineIcon,\n tone: 'critical',\n },\n success: {\n title: 'Completed',\n icon: CheckmarkCircleIcon,\n tone: 'positive',\n },\n timeout: {\n title: 'Timeout',\n icon: ClockIcon,\n tone: 'caution',\n },\n} as const\n\nexport function InstructionTaskHistoryButton(props: InstructionTaskHistoryButtonProps) {\n const {tasks, instructions, documentId, showTitles} = props\n\n const client = useClient({apiVersion: '2023-01-01'})\n const cancelRun = useCallback(\n (taskKey: string) => {\n if (!documentId) {\n return\n }\n const statusDocId = assistTasksStatusId(documentId)\n const basePath = `${typed<keyof AssistTasksStatus>('tasks')}[_key==\"${taskKey}\"]`\n client\n .patch(statusDocId)\n .set({\n [`${basePath}.${typed<keyof InstructionTask>('ended')}`]: new Date().toISOString(),\n [`${basePath}.${typed<keyof InstructionTask>('reason')}`]:\n typed<TaskEndedReason>('aborted'),\n })\n .commit()\n .catch(console.error)\n },\n [client, documentId],\n )\n\n const titledTasks = useMemo(() => {\n const t =\n tasks\n ?.filter(\n (task) =>\n task.started &&\n new Date().getTime() - new Date(task.started).getTime() < maxHistoryVisibilityMs,\n )\n // oxlint-disable-next-line no-map-spread\n .map((task): CancelableInstructionTask => {\n const instruction = instructions?.find((i) => i._key === task.instructionKey)\n return {\n ...task,\n title: showTitles ? (task.title ?? getInstructionTitle(instruction)) : undefined,\n cancel: () => cancelRun(task._key),\n }\n }) ?? []\n t.sort((a, b) => new Date(b.started ?? '').getTime() - new Date(a.started ?? '').getTime())\n return t\n }, [tasks, instructions, cancelRun, showTitles])\n\n // const id = useId()\n\n const isRunning = useMemo(() => titledTasks.some((r) => !r.ended), [titledTasks])\n const hasErrors = useMemo(\n () => titledTasks.some((r) => r.reason === 'error' || r.reason === 'timeout'),\n [titledTasks],\n )\n\n const [open, setOpen] = useState(false)\n\n const toggleOpen = useCallback(() => setOpen((v) => !v), [])\n\n const [button, setButton] = useState<HTMLButtonElement | null>(null)\n const [popover, setPopover] = useState<HTMLDivElement | null>(null)\n\n const handleClickOutside = useCallback(() => {\n setOpen(false)\n }, [])\n\n // oxlint-disable-next-line no-deprecated\n useClickOutside(handleClickOutside, [button, popover])\n\n const handleEscape = useCallback(() => {\n setOpen(false)\n button?.focus()\n }, [button])\n\n return (\n <Popover\n constrainSize\n content={<TaskList onEscape={handleEscape} tasks={titledTasks} />}\n open={open && !!titledTasks?.length}\n placement=\"top\"\n portal\n ref={setPopover}\n width={0}\n >\n <TaskStatusButton\n disabled={!titledTasks?.length}\n hasErrors={hasErrors}\n isRunning={isRunning}\n onClick={toggleOpen}\n ref={setButton}\n selected={open}\n />\n </Popover>\n )\n}\n\nconst TASK_STATUS_BUTTON_TOOLTIP_PROPS: NonNullable<StatusButtonProps['tooltipProps']> = {\n placement: 'top',\n}\n\nfunction TaskStatusButton(props: {\n disabled: boolean\n hasErrors: boolean\n isRunning: boolean\n onClick: () => void\n selected: boolean\n ref?: Ref<HTMLButtonElement>\n}) {\n const {disabled, hasErrors, isRunning, onClick, selected, ref} = props\n\n return (\n <StatusButton\n label={`${pluginTitle} status`}\n aria-label={`${pluginTitle} status`}\n icon={isRunning ? SyncSpinningIcon : hasErrors ? ErrorOutlineIcon : CheckmarkCircleIcon}\n mode=\"bleed\"\n onClick={onClick}\n tone={hasErrors ? 'critical' : undefined}\n disabled={disabled}\n ref={ref}\n selected={selected}\n tooltipProps={TASK_STATUS_BUTTON_TOOLTIP_PROPS}\n />\n )\n}\n\nfunction TaskList(props: {onEscape: () => void; tasks: CancelableInstructionTask[]}) {\n const {onEscape, tasks} = props\n\n const {isTopLayer} = useLayer()\n\n useGlobalKeyDown(\n useCallback(\n (event) => {\n if (isTopLayer && event.key === 'Escape') {\n onEscape()\n }\n },\n [isTopLayer, onEscape],\n ),\n )\n\n return (\n <Stack padding={1} gap={1}>\n {tasks.map((task) => (\n <TaskItem key={task._key} task={task} />\n ))}\n </Stack>\n )\n}\n\nfunction TaskItem(props: {task: CancelableInstructionTask}) {\n const {task} = props\n\n const taskType = task.reason && TASK_CONFIG[task.reason]\n const TaskIcon = taskType ? taskType.icon : null\n return (\n <Card radius={2} tone={taskType && taskType?.tone}>\n <Flex align=\"center\" gap={1}>\n <Flex align=\"flex-start\" flex={1} gap={3} padding={3}>\n <Box flex=\"none\">\n <Text size={1}>\n {TaskIcon && <TaskIcon />}\n {!task.reason && <Spinner />}\n </Text>\n </Box>\n <Stack flex={1} gap={2}>\n <Text size={1} weight=\"medium\">\n {taskType ? taskType.title : 'Running'}\n {task.title && <>: {task.title}</>}\n </Text>\n {task.message ? <Text size={1}>{task.message}</Text> : null}\n <Text muted size={1}>\n <TimeAgo date={task.ended ?? task.started} />\n </Text>\n </Stack>\n </Flex>\n\n {!task.ended && (\n <Box flex=\"none\" padding={1}>\n <Button fontSize={1} mode=\"bleed\" onClick={task.cancel} text=\"Cancel\" />\n </Box>\n )}\n </Flex>\n </Card>\n )\n}\n","import {ArrowRightIcon} from '@sanity/icons/ArrowRight'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {PlayIcon} from '@sanity/icons/Play'\nimport {RetryIcon} from '@sanity/icons/Retry'\nimport {Box, Button, Card, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {useCallback, useMemo, useRef} from 'react'\nimport {\n type DocumentInspectorProps,\n PerspectiveProvider,\n PresenceOverlay,\n VirtualizerScrollInstanceProvider,\n} from 'sanity'\nimport {\n DocumentInspectorHeader,\n type DocumentPaneNode,\n DocumentPaneProvider,\n useDocumentPane,\n} from 'sanity/structure'\nimport {styled} from 'styled-components'\n\nimport {DocumentForm} from '../_lib/form'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {AssistTypeContext} from '../assistDocument/components/AssistTypeContext'\nimport {useStudioAssistDocument} from '../assistDocument/hooks/useStudioAssistDocument'\nimport {useRequestRunInstruction} from '../assistDocument/RequestRunInstructionProvider'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {giveFeedbackUrl, pluginTitle, releaseAnnouncementUrl, salesUrl} from '../constants'\nimport {getConditionalMembers} from '../helpers/conditionalMembers'\nimport {assistDocumentId} from '../helpers/ids'\nimport {InspectorOnboarding} from '../onboarding/InspectorOnboarding'\nimport {inspectorOnboardingKey, useOnboardingFeature} from '../onboarding/onboardingStore'\nimport {assistDocumentTypeName, fieldPathParam, instructionParam} from '../types'\nimport {FieldTitle} from './FieldAutocomplete'\nimport {\n type FieldRef,\n getFieldTitle,\n useAiPaneRouter,\n useSelectedField,\n useTypePath,\n} from './helpers'\nimport {InstructionTaskHistoryButton} from './InstructionTaskHistoryButton'\n\nconst CardWithShadowBelow = styled(Card)`\n position: relative;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: -1px;\n border-bottom: 1px solid var(--card-border-color);\n opacity: 0.5;\n z-index: 100;\n }\n`\n\nconst CardWithShadowAbove = styled(Card)`\n position: relative;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: -1px;\n border-top: 1px solid var(--card-border-color);\n opacity: 0.5;\n z-index: 100;\n }\n`\n\nexport function AssistInspectorWrapper(props: DocumentInspectorProps) {\n const context = useAiAssistanceConfig()\n\n if (context.statusLoading) {\n return (\n <Flex align=\"center\" height=\"fill\" justify=\"center\" padding={4} sizing=\"border\">\n <Stack gap={3} style={{textAlign: 'center'}}>\n <Spinner muted />\n <Text muted size={1}>\n Loading {pluginTitle}...\n </Text>\n </Stack>\n </Flex>\n )\n }\n\n const status = context.status\n\n if (!status?.enabled) {\n return (\n <Flex direction=\"column\" height=\"fill\">\n <DocumentInspectorHeader\n closeButtonLabel=\"Close\"\n onClose={props.onClose}\n title={pluginTitle}\n />\n\n <Stack flex={1} overflow=\"auto\" padding={4} gap={3}>\n <Text as=\"p\" size={1} weight=\"semibold\">\n {pluginTitle} is not available\n </Text>\n\n <Text as=\"p\" muted size={1}>\n Please get in touch with a Sanity account manager or{' '}\n <a href={salesUrl} target=\"_blank\" rel=\"noreferrer\">\n contact our sales team\n </a>{' '}\n to get started with {pluginTitle}.{' '}\n <a href={releaseAnnouncementUrl} target=\"_blank\" rel=\"noreferrer\">\n Learn more →\n </a>\n </Text>\n </Stack>\n </Flex>\n )\n }\n\n if (!status?.initialized || !status.validToken) {\n return (\n <Flex direction=\"column\" height=\"fill\">\n <DocumentInspectorHeader\n closeButtonLabel=\"Close\"\n onClose={props.onClose}\n title={pluginTitle}\n />\n\n <Stack padding={4} gap={3}>\n {context.error ? (\n <Text size={1} weight=\"semibold\">\n Failed to start {pluginTitle}\n </Text>\n ) : null}\n\n {!context.error && !status?.initialized ? (\n <Text size={1} weight=\"semibold\">\n {pluginTitle} is not enabled\n </Text>\n ) : null}\n\n {!context.error && status?.initialized && !status.validToken ? (\n <>\n <Text size={1} weight=\"semibold\">\n Invalid token\n </Text>\n <Text muted size={1}>\n The token used by the AI Assistant is not valid and has to be regenerated.\n </Text>\n </>\n ) : null}\n\n {context.error && (\n <Text muted size={1}>\n Something went wrong. See console for details.\n </Text>\n )}\n\n {!context.error && !status?.initialized && (\n <Text size={1} muted>\n Please enable {pluginTitle}.\n </Text>\n )}\n\n <Button\n fontSize={1}\n icon={\n context.initLoading ? (\n <Box marginTop={1}>\n <Spinner />\n </Box>\n ) : context.error ? (\n RetryIcon\n ) : undefined\n }\n text={\n context.error\n ? 'Retry'\n : status?.initialized && !status.validToken\n ? `Restore ${pluginTitle}`\n : `Enable ${pluginTitle} now`\n }\n tone=\"primary\"\n onClick={context.init}\n disabled={context.initLoading}\n />\n </Stack>\n </Flex>\n )\n }\n\n return <AssistInspector {...props} />\n}\n\nfunction AssistInspector(props: DocumentInspectorProps) {\n const {params} = useAiPaneRouter()\n\n const boundary = useRef<HTMLDivElement | null>(null)\n const pathKey = params?.[fieldPathParam]\n const instructionKey = params?.[instructionParam]\n const documentPane = useDocumentPane()\n const {\n documentId,\n documentType,\n value: docValue,\n schemaType,\n onChange: documentOnChange,\n formState,\n } = documentPane\n\n const {assistableDocumentId, documentIsAssistable} = useAssistDocumentContext()\n\n const formStateRef = useRef(formState)\n // oxlint-disable-next-line react/react-compiler\n formStateRef.current = formState\n\n const {instructionLoading, requestRunInstruction} = useRequestRunInstruction({\n documentOnChange,\n isDocAssistable: documentIsAssistable,\n })\n\n const typePath = useTypePath(docValue, pathKey ?? '')\n const selectedField = useSelectedField(schemaType, typePath)\n\n const aiDocId = assistDocumentId(documentType)\n\n const assistDocument = useStudioAssistDocument({documentId, schemaType, initDoc: true})\n const assistField = assistDocument?.fields?.find((f) => f.path === typePath)\n const instruction = assistField?.instructions?.find((i) => i._key === instructionKey)\n const tasks = useMemo(\n () =>\n assistDocument?.tasks?.filter((i) => !instructionKey || i.instructionKey === instructionKey),\n [assistDocument?.tasks, instructionKey],\n )\n const instructions = useMemo(\n () => assistDocument?.fields?.flatMap((f) => f.instructions ?? []),\n [assistDocument?.fields],\n )\n\n const promptValue = instruction?.prompt\n const isEmptyPrompt = useMemo(() => {\n if (!promptValue?.length) {\n return true\n }\n // oxlint-disable-next-line no-unsafe-type-assertion\n const firstBlock = promptValue[0] as any\n const children = firstBlock?.children\n\n return promptValue.length == 1 && children?.length === 1 && !children?.[0]?.text?.length\n }, [promptValue])\n\n const paneNode: DocumentPaneNode = useMemo(\n () => ({\n type: 'document',\n id: aiDocId,\n title: pluginTitle,\n options: {\n id: aiDocId,\n type: assistDocumentTypeName,\n },\n }),\n [aiDocId],\n )\n\n const runCurrentInstruction = useCallback(\n () =>\n instruction &&\n pathKey &&\n typePath &&\n requestRunInstruction({\n documentId: assistableDocumentId,\n path: pathKey,\n typePath,\n assistDocumentId: assistDocumentId(documentType),\n instruction,\n conditionalMembers: formStateRef.current ? getConditionalMembers(formStateRef.current) : [],\n }),\n [pathKey, instruction, typePath, documentType, assistableDocumentId, requestRunInstruction],\n )\n\n const Region = useCallback((_props: any) => {\n // disabled for now\n /* return (\n <ConnectToRegion\n {..._props}\n _key={`${paneKey}_${selectedField?.key || '_field'}`}\n style={{height: '100%', flex: 1, overflow: 'auto'}}\n />\n )*/\n return <div {..._props} style={{height: '100%', flex: 1, overflow: 'auto'}} />\n }, [])\n\n const assistTypeContext = useMemo(() => ({typePath, documentType}), [typePath, documentType])\n\n if (!documentId || !schemaType || schemaType.jsonType !== 'object') {\n return (\n <Card flex={1} padding={4}>\n <Text>Document not ready yet.</Text>\n </Card>\n )\n }\n\n return (\n <Flex\n ref={boundary}\n direction=\"column\"\n height=\"fill\"\n overflow=\"hidden\"\n sizing=\"border\"\n style={{lineHeight: 0}}\n >\n <AiInspectorHeader\n onClose={props.onClose}\n field={selectedField}\n fieldTitle={getFieldTitle(selectedField)}\n />\n\n <Card as={Region} flex={1} overflow=\"auto\">\n <Flex direction=\"column\" style={{minHeight: '100%'}}>\n <Box flex={1}>\n <PresenceOverlay>\n <Box padding={4}>\n {selectedField && (\n <AssistTypeContext.Provider value={assistTypeContext}>\n <VirtualizerScrollInstanceProvider\n // oxlint-disable-next-line react/react-compiler\n scrollElement={boundary.current}\n containerElement={boundary}\n >\n <PerspectiveProvider selectedPerspectiveName={undefined}>\n <DocumentPaneProvider\n paneKey={documentPane.paneKey}\n index={documentPane.index}\n itemId=\"ai\"\n pane={paneNode}\n >\n <DocumentForm />\n </DocumentPaneProvider>\n </PerspectiveProvider>\n </VirtualizerScrollInstanceProvider>\n </AssistTypeContext.Provider>\n )}\n </Box>\n </PresenceOverlay>\n </Box>\n\n <Box flex=\"none\" padding={4}>\n <Text muted size={1}>\n How is Sanity AI Assist working for you?{' '}\n <a\n href={giveFeedbackUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n style={{whiteSpace: 'nowrap'}}\n >\n Let us know <ArrowRightIcon />\n </a>\n </Text>\n </Box>\n </Flex>\n </Card>\n <CardWithShadowAbove flex=\"none\" paddingX={4} paddingY={3} style={{justifySelf: 'flex-end'}}>\n <Flex gap={2} flex={1} justify=\"flex-end\">\n {schemaType?.name && pathKey && instructionKey && (\n <Stack flex={1}>\n <Button\n mode=\"ghost\"\n disabled={isEmptyPrompt || instructionLoading}\n fontSize={1}\n icon={instructionLoading ? <Spinner style={{marginTop: 3}} /> : PlayIcon}\n onClick={runCurrentInstruction}\n padding={3}\n text={'Run instruction'}\n />\n </Stack>\n )}\n\n <InstructionTaskHistoryButton\n documentId={assistableDocumentId}\n tasks={tasks}\n instructions={instructions}\n showTitles={!instructionKey}\n />\n </Flex>\n </CardWithShadowAbove>\n </Flex>\n )\n}\n\nfunction AiInspectorHeader(props: {fieldTitle: string; field?: FieldRef; onClose: () => void}) {\n const {onClose, field, fieldTitle} = props\n const {showOnboarding, dismissOnboarding} = useOnboardingFeature(inspectorOnboardingKey)\n\n return (\n <CardWithShadowBelow flex=\"none\" padding={2}>\n <Flex flex={1} align=\"center\">\n <Flex flex={1} padding={3} gap={2} align=\"center\">\n <Flex gap={1} align=\"center\" wrap=\"wrap\" style={{marginTop: '-4px'}}>\n <Box marginTop={1}>\n <Text size={1} weight=\"semibold\">\n AI instructions for\n </Text>\n </Box>\n <Card radius={2} border padding={1} marginTop={1}>\n {field ? (\n <FieldTitle field={field} />\n ) : (\n <Text size={1} weight=\"semibold\">\n {fieldTitle}\n </Text>\n )}\n </Card>\n </Flex>\n </Flex>\n <Box flex=\"none\">\n <Button fontSize={1} icon={CloseIcon} mode=\"bleed\" onClick={onClose} />\n </Box>\n </Flex>\n\n {showOnboarding && <InspectorOnboarding onDismiss={dismissOnboarding} />}\n </CardWithShadowBelow>\n )\n}\n","export const aiInspectorId = 'ai-assistance'\n","import {SparklesIcon} from '@sanity/icons/Sparkles'\nimport {type DocumentInspector, typed} from 'sanity'\n\nimport {pluginTitle} from '../constants'\nimport {type AssistInspectorRouteParams, fieldPathParam, instructionParam} from '../types'\nimport {AssistInspectorWrapper} from './AssistInspector'\nimport {aiInspectorId} from './constants'\n\nexport const assistInspector: DocumentInspector = {\n name: aiInspectorId,\n useMenuItem: () => ({\n icon: SparklesIcon,\n title: pluginTitle,\n hidden: true,\n showAsAction: false,\n }),\n component: AssistInspectorWrapper,\n onClose({params}) {\n return {\n // oxlint-disable-next-line no-unsafe-type-assertion\n params: typed<AssistInspectorRouteParams>({\n ...params,\n [fieldPathParam]: undefined,\n [instructionParam]: undefined,\n }) as typeof params,\n }\n },\n}\n","import type {ConnectorOptions} from '../../_lib/connector'\n\nexport function arrowPath(options: ConnectorOptions, x: number, y: number, dir: 1 | -1): string {\n return [\n `M ${x - options.arrow.size} ${y - options.arrow.size * dir} `,\n `L ${x} ${y}`,\n `L ${x + options.arrow.size} ${y - options.arrow.size * dir}`,\n ].join('')\n}\n","import type {ConnectorLine, ConnectorOptions} from '../../_lib/connector'\n\nfunction moveTo(x: number, y: number) {\n return `M${x} ${y}`\n}\n\nfunction lineTo(x: number, y: number) {\n return `L${x} ${y}`\n}\n\nfunction join(strings: string[], delim = '') {\n return strings.join(delim)\n}\n\nfunction quadCurve(x1: number, y1: number, x: number, y: number) {\n return `Q${x1} ${y1} ${x} ${y}`\n}\n\nexport function drawConnectorPath(options: ConnectorOptions, line: ConnectorLine): string {\n const {cornerRadius} = options.path\n const {from, to} = line\n const {x: fromX, y: fromY} = from\n const {x: _toX, y: toY} = to\n\n const toX = _toX - 1\n\n // Calculate divider position\n const dividerX = to.bounds.x + options.divider.offsetX\n\n // Calculate connector FROM path X position\n const fromPathX = from.isAbove || from.isBelow ? fromX + options.arrow.marginX : fromX\n\n // Calculate maximum corner radius\n const r0 = Math.min(cornerRadius, Math.abs(fromPathX - dividerX) / 2)\n const r1 = Math.min(cornerRadius, Math.abs(fromY - toY) / 2)\n\n const cmds: string[] = []\n\n // FROM\n if (from.isAbove) {\n cmds.push(\n moveTo(\n fromX + options.arrow.marginX,\n fromY - options.arrow.threshold + options.arrow.marginY,\n ),\n lineTo(fromX + options.arrow.marginX, fromY - r0),\n quadCurve(fromX + options.arrow.marginX, fromY, fromX + options.arrow.marginX + r0, fromY),\n )\n } else if (from.isBelow) {\n cmds.push(\n moveTo(\n fromX + options.arrow.marginX,\n fromY + options.arrow.threshold - options.arrow.marginY,\n ),\n lineTo(fromX + options.arrow.marginX, fromY + r0),\n quadCurve(fromX + options.arrow.marginX, fromY, fromX + options.arrow.marginX + r0, fromY),\n )\n } else {\n cmds.push(moveTo(fromX, fromY))\n }\n\n // TO\n if (to.isAbove) {\n if (fromY < to.bounds.y) {\n cmds.push(\n lineTo(dividerX - r1, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + r1),\n lineTo(dividerX, toY - r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(dividerX - cornerRadius, toY),\n quadCurve(dividerX, toY, dividerX, toY - cornerRadius),\n lineTo(dividerX, toY - options.arrow.threshold + options.arrow.marginY),\n )\n } else {\n cmds.push(\n lineTo(dividerX - cornerRadius, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY - cornerRadius),\n lineTo(dividerX, toY - options.arrow.threshold + options.arrow.marginY),\n )\n }\n } else if (to.isBelow) {\n if (fromY > to.bounds.y + to.bounds.h) {\n // curl around\n cmds.push(\n lineTo(dividerX - options.arrow.marginX - r1, fromY),\n quadCurve(\n dividerX - options.arrow.marginX,\n fromY,\n dividerX - options.arrow.marginX,\n fromY - r1,\n ),\n lineTo(dividerX - options.arrow.marginX, toY + r1),\n quadCurve(\n dividerX - options.arrow.marginX,\n toY,\n dividerX - options.arrow.marginX + r1,\n toY,\n ),\n lineTo(dividerX - cornerRadius, toY),\n quadCurve(dividerX, toY, dividerX, toY + cornerRadius),\n lineTo(dividerX, toY + options.arrow.threshold - options.arrow.marginY),\n )\n } else {\n cmds.push(\n lineTo(dividerX - cornerRadius, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + cornerRadius),\n lineTo(dividerX, toY + options.arrow.threshold - options.arrow.marginY),\n )\n }\n } else if (fromY < toY) {\n cmds.push(\n lineTo(dividerX - r0, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + r1),\n lineTo(dividerX, toY - r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(toX, toY),\n )\n } else {\n cmds.push(\n lineTo(dividerX - Math.min(r0, r1), fromY),\n quadCurve(dividerX, fromY, dividerX, fromY - Math.min(r0, r1)),\n lineTo(dividerX, toY + r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(toX, toY),\n )\n }\n\n return join(cmds)\n}\n","// oxlint-disable no-deprecated\nimport {rgba, useTheme} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nimport {type ConnectorOptions, mapConnectorToLine, type Rect} from '../_lib/connector'\nimport {arrowPath} from './draw/arrowPath'\nimport {drawConnectorPath} from './draw/connectorPath'\n\nexport function ConnectorPath(props: {\n from: {bounds: Rect; element: Rect}\n to: {bounds: Rect; element: Rect}\n options: ConnectorOptions\n}) {\n const {from, options, to} = props\n const {strokeWidth} = options.path\n const theme = useTheme()\n\n const line = useMemo(() => mapConnectorToLine(options, {from, to}), [from, options, to])\n\n return (\n <>\n <path\n d={drawConnectorPath(options, line)}\n stroke={theme.sanity.color.base.bg}\n strokeWidth={strokeWidth + 4}\n />\n\n <path\n d={drawConnectorPath(options, line)}\n stroke={rgba(theme.sanity.color.base.border, 0.5)}\n strokeWidth={strokeWidth}\n />\n\n {line.from.isAbove && (\n <path\n d={arrowPath(\n options,\n line.from.x + options.arrow.marginX,\n line.from.bounds.y - options.arrow.threshold + options.arrow.marginY,\n -1,\n )}\n stroke={theme.sanity.color.base.border}\n strokeWidth={strokeWidth}\n />\n )}\n\n {line.from.isBelow && (\n <path\n d={arrowPath(\n options,\n line.from.x + options.arrow.marginX,\n line.from.bounds.y +\n line.from.bounds.h +\n options.arrow.threshold -\n options.arrow.marginY,\n 1,\n )}\n stroke={theme.sanity.color.base.border}\n strokeWidth={strokeWidth}\n />\n )}\n </>\n )\n}\n","import {Fragment, useEffect, useState} from 'react'\n\nimport type {Connector, ConnectorOptions} from '../_lib/connector'\nimport {ConnectorPath} from './ConnectorPath'\n\nconst DEBUG = false\n\nconst options: ConnectorOptions = {\n arrow: {\n marginX: 10.5,\n marginY: 5,\n size: 4,\n threshold: 16.5,\n },\n divider: {\n offsetX: -10.5,\n },\n path: {\n cornerRadius: 3,\n marginY: 10.5,\n strokeWidth: 1,\n },\n}\n\nexport function AssistConnectorsOverlay(props: {connectors: Connector[]}) {\n const {connectors} = props\n // const zIndexes = connectors.map((connector) => {\n // const zIndex = connector.from.payload?.zIndex\n\n // if (typeof zIndex === 'number') {\n // return zIndex\n // }\n\n // return 1\n // })\n const [, setRedraw] = useState(false)\n useEffect(() => {\n // hacky workaround to force redraw for connectors on initial render\n // this seem to improve initial measurements of elements\n // oxlint-disable-next-line react/react-compiler\n setRedraw(true)\n }, [])\n\n // const zIndex = zIndexes.length ? Math.max(...zIndexes) : 1\n\n return (\n <>\n <svg\n fill=\"none\"\n width={window.innerWidth}\n height={window.innerHeight}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n zIndex: 150,\n // zIndex,\n }}\n >\n {connectors.map((connector) => (\n <ConnectorPath\n from={connector.from}\n key={connector.key}\n options={options}\n to={connector.to}\n />\n ))}\n </svg>\n {DEBUG &&\n connectors.map(({key, from, to}) => {\n return (\n <Fragment key={key}>\n <div\n style={{\n position: 'fixed',\n top: from.bounds.y,\n left: from.bounds.x,\n width: from.bounds.w,\n height: from.bounds.h,\n pointerEvents: 'none',\n overflow: 'hidden',\n outline: '1px dotted red',\n outlineOffset: -1,\n zIndex: 10000000 - 1,\n }}\n >\n <div\n style={{\n position: 'absolute',\n top: from.element.y - from.bounds.y,\n left: from.element.x - from.bounds.x,\n width: from.element.w,\n height: from.element.h,\n border: '1px solid red',\n boxSizing: 'border-box',\n }}\n />\n </div>\n\n <div\n style={{\n position: 'fixed',\n top: to.bounds.y,\n left: to.bounds.x,\n width: to.bounds.w,\n height: to.bounds.h,\n pointerEvents: 'none',\n overflow: 'hidden',\n outline: '1px dotted teal',\n outlineOffset: -1,\n zIndex: 10000000 - 1,\n }}\n >\n <div\n style={{\n position: 'absolute',\n top: to.element.y - to.bounds.y,\n left: to.element.x - to.bounds.x,\n width: to.element.w,\n height: to.element.h,\n border: '1px solid teal',\n boxSizing: 'border-box',\n }}\n />\n </div>\n </Fragment>\n )\n })}\n </>\n )\n}\n","import {packageName} from '../constants'\nimport type {TranslateStyleguide, TranslateStyleguideContext} from '../translate/types'\n\nexport function validateStyleguide(styleguide: string | undefined) {\n if (styleguide && styleguide.length > 2000) {\n throw new Error(\n `[${packageName}]: \\`translate.styleguide\\` value is too long. It must be 2000 characters or less, but was ${styleguide.length} characters`,\n )\n }\n return styleguide\n}\n\nexport function createStyleGuideResolver(\n styleguide: TranslateStyleguide | undefined,\n context: TranslateStyleguideContext,\n) {\n return async () => {\n if (typeof styleguide !== 'function') {\n return styleguide\n }\n const styleguideResult = await styleguide(context)\n return validateStyleguide(styleguideResult)\n }\n}\n","import get from 'lodash-es/get.js'\nimport type {SanityDocumentLike} from 'sanity'\n\nexport const getLanguageParams = (\n select: Record<string, string> | undefined,\n document: SanityDocumentLike | undefined,\n): Record<string, unknown> => {\n if (!select || !document) {\n return {}\n }\n\n const selection: Record<string, string> = select || {}\n const selectedValue: Record<string, unknown> = {}\n for (const [key, path] of Object.entries(selection)) {\n let value = get(document, path)\n if (Array.isArray(value)) {\n // If there are references in the array, ensure they have `_ref` set, otherwise they are considered empty and can safely be ignored\n value = value.filter((item) =>\n typeof item === 'object' ? item?._type !== 'reference' || '_ref' in item : true,\n )\n }\n selectedValue[key] = value\n }\n\n return selectedValue\n}\n","const toFieldLanguagesKeyPrefix = 'sanityStudio:assist:field-languages:from:'\n\nexport function getPreferredToFieldLanguages(fromLanguageId: string): string[] {\n if (typeof localStorage === 'undefined') {\n return []\n }\n\n const value = localStorage.getItem(`${toFieldLanguagesKeyPrefix}${fromLanguageId}`)\n if (!value) return []\n try {\n // oxlint-disable-next-line no-unsafe-type-assertion\n return JSON.parse(value) as string[]\n } catch {\n return []\n }\n}\n\nexport function setPreferredToFieldLanguages(fromLanguageId: string, languageIds: string[]) {\n if (typeof localStorage === 'undefined') {\n return\n }\n\n localStorage.setItem(`${toFieldLanguagesKeyPrefix}${fromLanguageId}`, JSON.stringify(languageIds))\n}\n","// WHATWG crypto RNG - https://w3c.github.io/webcrypto/Overview.html\nfunction whatwgRNG(length = 16) {\n const rnds8 = new Uint8Array(length)\n crypto.getRandomValues(rnds8)\n return rnds8\n}\n\nconst getByteHexTable = (() => {\n let table: string[]\n return () => {\n if (table) {\n return table\n }\n table = []\n for (let i = 0; i < 256; ++i) {\n table[i] = (i + 0x100).toString(16).substring(1)\n }\n return table\n }\n})()\n\nexport function randomKey(length?: number) {\n const table = getByteHexTable()\n return whatwgRNG(length)\n .reduce((str, n) => str + table[n], '')\n .slice(0, length)\n}\n","// oxlint-disable no-accumulating-spread\nimport {extractWithPath} from '@sanity/mutator'\nimport {\n isDocumentSchemaType,\n isKeySegment,\n type ObjectSchemaType,\n type Path,\n pathToString,\n type SanityDocumentLike,\n isRecord,\n} from 'sanity'\n\nimport {randomKey} from '../_lib/randomKey'\nimport type {DocumentMember, TranslationOutput, TranslationOutputsFunction} from './types'\n\nexport interface FieldLanguageMap {\n inputLanguageId: string\n inputPath: Path\n outputs: TranslationOutput[]\n relativeLanguagePath?: Path\n}\n\nconst DEFAULT_MAX_DEPTH = 6\nconst ABSOLUTE_MAX_DEPTH = 50\n\nexport function getDocumentMembersFlat(\n doc: SanityDocumentLike,\n schemaType: ObjectSchemaType,\n maxDepth = DEFAULT_MAX_DEPTH,\n) {\n if (!isDocumentSchemaType(schemaType)) {\n console.error(`Schema type is not a document`)\n return []\n }\n\n return extractPaths(doc, schemaType, [], Math.min(maxDepth, ABSOLUTE_MAX_DEPTH))\n}\n\nfunction extractPaths(\n doc: SanityDocumentLike,\n schemaType: ObjectSchemaType,\n path: Path,\n maxDepth: number,\n): DocumentMember[] {\n if (path.length >= maxDepth) {\n return []\n }\n\n return schemaType.fields.reduce<DocumentMember[]>((acc, field) => {\n const fieldPath = [...path, field.name]\n const fieldSchema = field.type\n const parentValue = path.length ? extractWithPath(pathToString(path), doc)[0]?.value : doc\n const value = isRecord(parentValue) ? parentValue[field.name] : undefined\n\n if (value === undefined || value === null) {\n return acc\n }\n\n const thisFieldWithPath: DocumentMember = {\n path: fieldPath,\n name: field.name,\n schemaType: fieldSchema,\n value,\n parentValue,\n }\n\n if (fieldSchema.jsonType === 'object') {\n const innerFields = extractPaths(doc, fieldSchema, fieldPath, maxDepth)\n\n return [...acc, thisFieldWithPath, ...innerFields]\n } else if (\n fieldSchema.jsonType === 'array' &&\n fieldSchema.of.length &&\n fieldSchema.of.some((item) => 'fields' in item) &&\n // no reason to drill into arrays if the item fields will be culled by maxDepth, ie we need 1 extra path headroom\n path.length + 1 < maxDepth\n ) {\n const {value: arrayValue} = extractWithPath(pathToString(fieldPath), doc)[0] ?? {}\n\n let arrayPaths: DocumentMember[] = []\n // oxlint-disable-next-line no-unsafe-type-assertion\n if ((arrayValue as any)?.length) {\n // oxlint-disable-next-line no-unsafe-type-assertion\n for (const item of arrayValue as any[]) {\n const itemPath = [...fieldPath, {_key: item._key}]\n let itemSchema = fieldSchema.of.find((t) => t.name === item._type)\n if (!item._type) {\n itemSchema = fieldSchema.of[0]\n console.warn(\n 'Array item is missing _type - using the first defined type in the array.of schema',\n {\n itemPath,\n item,\n itemSchema,\n },\n )\n }\n if (item._key && itemSchema) {\n const innerFields = extractPaths(\n doc,\n // oxlint-disable-next-line no-unsafe-type-assertion\n itemSchema as ObjectSchemaType,\n itemPath,\n maxDepth,\n )\n const arrayMember = {\n path: itemPath,\n name: item._key,\n schemaType: itemSchema,\n value: item,\n parentValue: arrayValue,\n }\n arrayPaths = [...arrayPaths, arrayMember, ...innerFields]\n }\n }\n }\n\n return [...acc, thisFieldWithPath, ...arrayPaths]\n }\n\n return [...acc, thisFieldWithPath]\n }, [])\n}\n\ntype InternationalizedArrayItemValue = {\n language?: string // Available in >=v5\n _key?: string // In <v5 this represents the language identifier\n value?: unknown\n}\n\nconst isInternationalizedArrayItemValue = (\n value: unknown,\n): value is InternationalizedArrayItemValue =>\n typeof value === 'object' && value !== null && ('language' in value || '_key' in value)\n\nexport const defaultLanguageOutputs: TranslationOutputsFunction = function (\n member,\n enclosingType,\n translateFromLanguageId,\n translateToLanguageIds,\n) {\n if (\n member.schemaType.jsonType === 'object' &&\n member.schemaType.name.startsWith('internationalizedArray') &&\n isInternationalizedArrayItemValue(member.value)\n ) {\n const isV5InternationalizedArrayItem = member.value.language !== undefined\n\n if (isV5InternationalizedArrayItem) {\n const language = member.value.language\n return language === translateFromLanguageId\n ? translateToLanguageIds.map((translateToId) => {\n const outputPathKey =\n (Array.isArray(member.parentValue)\n ? member.parentValue\n : ([] as InternationalizedArrayItemValue[])\n )\n // Uses parent value to verify if the item is already translated to the target language and reuse the key if it is\n .find((item) => item.language === translateToId)?._key || randomKey()\n\n return {\n id: translateToId,\n outputPath: [...member.path.slice(0, -1), {_key: outputPathKey}],\n }\n })\n : undefined\n }\n\n const pathEnd = member.path.slice(-1)\n\n const language = pathEnd[0] && isKeySegment(pathEnd[0]) ? pathEnd[0]._key : null\n return language === translateFromLanguageId\n ? translateToLanguageIds.map((translateToId) => ({\n id: translateToId,\n outputPath: [...member.path.slice(0, -1), {_key: translateToId}],\n }))\n : undefined\n }\n\n if (enclosingType.jsonType === 'object' && enclosingType.name.startsWith('locale')) {\n return translateFromLanguageId === member.name\n ? translateToLanguageIds.map((translateToId) => ({\n id: translateToId,\n outputPath: [...member.path.slice(0, -1), translateToId],\n }))\n : undefined\n }\n\n return undefined\n}\n\nexport function getFieldLanguageMap(\n documentSchema: ObjectSchemaType,\n documentMembers: DocumentMember[],\n translateFromLanguageId: string,\n outputLanguageIds: string[],\n langFn: TranslationOutputsFunction,\n): FieldLanguageMap[] {\n const translationMaps: FieldLanguageMap[] = []\n for (const member of documentMembers) {\n const parentPath = member.path.slice(0, -1)\n const enclosingType =\n documentMembers.find((m) => pathToString(m.path) === pathToString(parentPath))?.schemaType ??\n documentSchema\n\n const isV5InternationalizedArrayItem =\n member.schemaType.jsonType === 'object' &&\n member.schemaType.name.startsWith('internationalizedArray') &&\n isInternationalizedArrayItemValue(member.value) &&\n member.value.language !== undefined\n\n const translations = langFn(\n member,\n enclosingType,\n translateFromLanguageId,\n outputLanguageIds,\n )?.filter((translation) => translation.id !== translateFromLanguageId)\n\n if (translations) {\n translationMaps.push({\n inputLanguageId: translateFromLanguageId,\n inputPath: member.path,\n outputs: translations,\n ...(isV5InternationalizedArrayItem ? {relativeLanguagePath: ['language']} : {}),\n })\n }\n }\n\n return translationMaps\n}\n","import {PlayIcon} from '@sanity/icons/Play'\nimport {Box, Button, Checkbox, Dialog, Flex, Radio, Spinner, Stack, Text, Tooltip} from '@sanity/ui'\nimport {\n createContext,\n type PropsWithChildren,\n useCallback,\n useContext,\n useId,\n useMemo,\n useState,\n} from 'react'\nimport {\n type ObjectSchemaType,\n type Path,\n pathToString,\n type SanityDocumentLike,\n useClient,\n} from 'sanity'\n\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport type {ConditionalMemberState} from '../helpers/conditionalMembers'\nimport {createStyleGuideResolver} from '../helpers/styleguide'\nimport {API_VERSION_WITH_EXTENDED_TYPES, useApiClient, useTranslate} from '../useApiClient'\nimport {getLanguageParams} from './getLanguageParams'\nimport {getPreferredToFieldLanguages, setPreferredToFieldLanguages} from './languageStore'\nimport {\n defaultLanguageOutputs,\n type FieldLanguageMap,\n getDocumentMembersFlat,\n getFieldLanguageMap,\n} from './paths'\nimport type {Language} from './types'\n\ninterface FieldTranslationParams {\n document: SanityDocumentLike\n documentSchema: ObjectSchemaType\n translatePath: Path\n conditionalMembers: ConditionalMemberState[]\n}\n\nexport interface FieldTranslationContextValue {\n openFieldTranslation: (args: FieldTranslationParams) => void\n translationLoading: boolean\n}\n\nconst FieldTranslationContext = createContext<FieldTranslationContextValue>({\n openFieldTranslation: () => {},\n translationLoading: false,\n})\n\nexport function useFieldTranslation() {\n return useContext(FieldTranslationContext)\n}\n\nfunction hasValuesToTranslate(\n fieldLanguageMaps: FieldLanguageMap[] | undefined,\n fromLanguage: Language | undefined,\n basePath: Path,\n) {\n return fieldLanguageMaps?.some(\n (map) =>\n map.inputLanguageId === fromLanguage?.id &&\n map.inputPath &&\n pathToString(map.inputPath).startsWith(pathToString(basePath)),\n )\n}\n\nexport function FieldTranslationProvider(props: PropsWithChildren<{}>) {\n const {config: assistConfig} = useAiAssistanceConfig()\n\n const apiClient = useApiClient(assistConfig.__customApiClient)\n const styleguide = assistConfig.translate?.styleguide\n const config = assistConfig.translate?.field\n const {translate: runTranslate} = useTranslate(apiClient)\n\n const [dialogOpen, setDialogOpen] = useState(false)\n\n const [fieldTranslationParams, setFieldTranslationParams] = useState<\n FieldTranslationParams | undefined\n >()\n const [languages, setLanguages] = useState<Language[] | undefined>()\n const [fromLanguage, setFromLanguage] = useState<Language | undefined>(undefined)\n const [toLanguages, setToLanguages] = useState<Language[] | undefined>(undefined)\n const [fieldLanguageMaps, setFieldLanguageMaps] = useState<FieldLanguageMap[] | undefined>()\n\n const close = useCallback(() => {\n setDialogOpen(false)\n setLanguages(undefined)\n setFieldTranslationParams(undefined)\n }, [])\n const languageClient = useClient({\n apiVersion: config?.apiVersion ?? API_VERSION_WITH_EXTENDED_TYPES,\n })\n const documentId = fieldTranslationParams?.document?._id\n const id = useId()\n\n const selectFromLanguage = useCallback(\n (\n from: Language,\n languages: Language[] | undefined,\n params: FieldTranslationParams | undefined,\n ) => {\n const {document, documentSchema} = params ?? {}\n setFromLanguage(from)\n if (!document || !documentSchema || !params || !languages) {\n setFieldLanguageMaps(undefined)\n return\n }\n\n const preferred = getPreferredToFieldLanguages(from.id)\n const allToLanguages = languages.filter((l) => l.id !== from?.id)\n const filteredToLanguages = allToLanguages.filter(\n (l) => !preferred.length || preferred.includes(l.id),\n )\n\n setToLanguages(filteredToLanguages)\n const fromId = from?.id\n const allToIds = allToLanguages?.map((l) => l.id) ?? []\n const docMembers = getDocumentMembersFlat(document, documentSchema, config?.maxPathDepth)\n if (fromId && allToIds?.length) {\n const transMap = getFieldLanguageMap(\n documentSchema,\n docMembers,\n fromId,\n allToIds.filter((toId) => fromId !== toId),\n config?.translationOutputs ?? defaultLanguageOutputs,\n )\n setFieldLanguageMaps(transMap)\n } else {\n setFieldLanguageMaps(undefined)\n }\n },\n [config],\n )\n\n const toggleToLanguage = useCallback(\n (\n toggledLang: Language,\n toLanguages: Language[] | undefined,\n languages: Language[] | undefined,\n ) => {\n if (!languages || !fromLanguage) {\n return\n }\n const wasSelected = !!toLanguages?.find((l) => l.id === toggledLang.id)\n const newToLangs = languages.filter(\n (anyLang) =>\n !!toLanguages?.find(\n (selectedLang) => toggledLang.id !== selectedLang.id && selectedLang.id === anyLang.id,\n ) ||\n (toggledLang.id === anyLang.id && !wasSelected),\n )\n setToLanguages(newToLangs)\n setPreferredToFieldLanguages(\n fromLanguage.id,\n newToLangs.map((l) => l.id),\n )\n },\n [fromLanguage],\n )\n\n const openFieldTranslation = useCallback(\n async (params: FieldTranslationParams) => {\n setDialogOpen(true)\n const languageParams = getLanguageParams(config?.selectLanguageParams, params.document)\n const languages: Language[] | undefined = await (typeof config?.languages === 'function'\n ? config?.languages(languageClient, languageParams)\n : Promise.resolve(config?.languages))\n setLanguages(languages)\n setFieldTranslationParams(params)\n const fromLanguage = languages?.[0]\n if (fromLanguage) {\n selectFromLanguage(fromLanguage, languages, params)\n } else {\n console.error('No languages available for selected language params', languageParams)\n }\n },\n [selectFromLanguage, config, languageClient],\n )\n\n const contextValue: FieldTranslationContextValue = useMemo(() => {\n return {\n openFieldTranslation,\n translationLoading: false,\n }\n }, [openFieldTranslation])\n\n const runDisabled =\n !fromLanguage ||\n !toLanguages?.length ||\n !fieldLanguageMaps?.length ||\n !documentId ||\n !hasValuesToTranslate(fieldLanguageMaps, fromLanguage, fieldTranslationParams.translatePath)\n\n const onRunTranslation = useCallback(() => {\n const translatePath = fieldTranslationParams?.translatePath\n if (fieldLanguageMaps && documentId && translatePath) {\n void runTranslate({\n documentId,\n translatePath,\n styleguide: createStyleGuideResolver(styleguide, {\n client: languageClient,\n documentId,\n schemaType: fieldTranslationParams?.documentSchema,\n translatePath,\n }),\n fieldLanguageMap: fieldLanguageMaps.map((map) => ({\n ...map,\n outputs: map.outputs.filter((out) => !!toLanguages?.find((l) => l.id === out.id)),\n })),\n conditionalMembers: fieldTranslationParams?.conditionalMembers,\n })\n }\n close()\n }, [\n fieldLanguageMaps,\n documentId,\n runTranslate,\n styleguide,\n close,\n toLanguages,\n fieldTranslationParams?.translatePath,\n fieldTranslationParams?.conditionalMembers,\n fieldTranslationParams?.documentSchema,\n languageClient,\n ])\n\n const runButton = (\n <Button\n text={`Translate`}\n tone=\"primary\"\n icon={PlayIcon}\n style={{width: '100%'}}\n disabled={runDisabled}\n onClick={onRunTranslation}\n />\n )\n\n return (\n <FieldTranslationContext.Provider value={contextValue}>\n {dialogOpen ? (\n <Dialog\n id={id}\n width={1}\n open={dialogOpen}\n onClose={close}\n header=\"Translate fields\"\n footer={\n <Flex justify=\"space-between\" padding={2} flex={1}>\n {runDisabled ? (\n <Tooltip\n content={\n <Flex padding={2}>\n <Text>There is nothing to translate in the selected from-language.</Text>\n </Flex>\n }\n placement=\"top\"\n >\n <Flex flex={1}>{runButton}</Flex>\n </Tooltip>\n ) : (\n runButton\n )}\n </Flex>\n }\n >\n {languages ? (\n <Flex padding={4} gap={5} align=\"flex-start\" justify=\"center\">\n <Stack gap={2}>\n <Box marginBottom={2}>\n <Text weight=\"semibold\">From</Text>\n </Box>\n {languages?.map((radioLanguage) => (\n <FromLanguageRadio\n key={radioLanguage.id}\n {...{\n radioLanguage,\n fromLanguage,\n selectFromLanguage,\n languages,\n fieldTranslationParams,\n }}\n />\n ))}\n </Stack>\n\n <Stack gap={2}>\n <Box marginBottom={2}>\n <Text weight=\"semibold\">To</Text>\n </Box>\n {languages.map((checkboxLanguage) => (\n <ToLanguageCheckbox\n key={checkboxLanguage.id}\n {...{checkboxLanguage, fromLanguage, toLanguages, toggleToLanguage, languages}}\n />\n ))}\n </Stack>\n </Flex>\n ) : (\n <Flex padding={4} gap={2} align=\"flex-start\" justify=\"center\">\n <Box>\n <Spinner />\n </Box>\n <Text>Loading languages...</Text>\n </Flex>\n )}\n </Dialog>\n ) : null}\n {props.children}\n </FieldTranslationContext.Provider>\n )\n}\n\nfunction ToLanguageCheckbox(props: {\n checkboxLanguage: Language\n fromLanguage: Language | undefined\n toLanguages: Language[] | undefined\n toggleToLanguage: (\n toggledLang: Language,\n toLanguages: Language[] | undefined,\n languages: Language[] | undefined,\n ) => void\n languages: Language[]\n}) {\n const {checkboxLanguage, fromLanguage, toLanguages, toggleToLanguage, languages} = props\n const langId = checkboxLanguage.id\n const onChange = useCallback(\n () => toggleToLanguage(checkboxLanguage, toLanguages, languages),\n [toggleToLanguage, checkboxLanguage, toLanguages, languages],\n )\n return (\n <Flex\n key={langId}\n gap={3}\n align=\"center\"\n as={'label'}\n style={langId === fromLanguage?.id ? {opacity: 0.5} : undefined}\n >\n <Checkbox\n name=\"toLang\"\n value={langId}\n checked={langId !== fromLanguage?.id && !!toLanguages?.find((tl) => tl.id === langId)}\n onChange={onChange}\n disabled={langId === fromLanguage?.id}\n />\n <Text muted={langId === fromLanguage?.id}>{checkboxLanguage.title ?? langId}</Text>\n </Flex>\n )\n}\n\nfunction FromLanguageRadio(props: {\n radioLanguage: Language\n fromLanguage: Language | undefined\n selectFromLanguage: (\n from: Language,\n languages: Language[] | undefined,\n params: FieldTranslationParams | undefined,\n ) => void\n languages: Language[] | undefined\n fieldTranslationParams: FieldTranslationParams | undefined\n}) {\n const {languages, radioLanguage, selectFromLanguage, fromLanguage, fieldTranslationParams} = props\n const langId = radioLanguage.id\n\n const onChange = useCallback(\n () => selectFromLanguage(radioLanguage, languages, fieldTranslationParams),\n [selectFromLanguage, radioLanguage, languages, fieldTranslationParams],\n )\n return (\n <Flex key={langId} gap={3} align=\"center\" as={'label'}>\n <Radio\n name=\"fromLang\"\n value={langId}\n checked={langId === fromLanguage?.id}\n onChange={onChange}\n />\n <Text>{radioLanguage.title ?? radioLanguage.id}</Text>\n </Flex>\n )\n}\n","import {assistSerializedFieldTypeName, assistSerializedTypeName} from '../../types'\n\nexport const hiddenTypes = [\n 'any',\n 'array',\n 'block',\n 'boolean',\n 'crossDatasetReference',\n 'date',\n 'datetime',\n 'document',\n 'email',\n 'file',\n 'globalDocumentReference',\n 'image',\n 'number',\n 'object',\n 'reference',\n 'span',\n 'string',\n 'text',\n 'url',\n 'slug',\n 'geopoint',\n 'sanity.assetSourceData',\n 'sanity.imageAsset',\n 'sanity.fileAsset',\n 'sanity.imageCrop',\n 'sanity.imageHotspot',\n 'sanity.imageMetadata',\n 'sanity.imageDimensions',\n 'sanity.imagePalette',\n 'sanity.imagePaletteSwatch',\n\n assistSerializedTypeName,\n assistSerializedFieldTypeName,\n 'sanity-agent.job.document',\n]\n","import {\n type ArraySchemaType,\n type ImageOptions,\n isArraySchemaType,\n type ObjectSchemaType,\n type ReferenceOptions,\n type ReferenceSchemaType,\n type Schema,\n type SchemaType,\n typed,\n} from 'sanity'\n\nimport {isAssistSupported} from '../../helpers/assistSupported'\nimport {isType} from '../../helpers/typeUtils'\nimport {\n assistSchemaIdPrefix,\n assistSerializedFieldTypeName,\n assistSerializedTypeName,\n type SerializedSchemaMember,\n type SerializedSchemaType,\n} from '../../types'\nimport {hiddenTypes} from './schemaUtils'\n\ninterface Options {\n leanFormat?: boolean\n}\n\n// oxlint-disable-next-line prefer-set-has\nconst inlineTypes = ['document', 'object', 'image', 'file']\n\nexport function serializeSchema(schema: Schema, options?: Options): SerializedSchemaType[] {\n const list = schema\n .getTypeNames()\n .filter((t) => !(hiddenTypes.includes(t) || t.startsWith('sanity.')))\n .map((t) => schema.get(t))\n .filter((t): t is SchemaType => !!t)\n // because a field can override exclude at the type level, we have to also serialize excluded types\n // so don't do this: .filter((t) => isAssistSupported(t))\n .map((t) => getSchemaStub(t, schema, options))\n .filter((t) => {\n if ('to' in t && t.to && !t.to.length) {\n return false\n }\n if ('of' in t && t.of && !t.of.length) {\n return false\n }\n if ('fields' in t && t.fields && !t.fields.length) {\n return false\n }\n return true\n })\n list.sort((a, b) => (a?.name ?? '').localeCompare(b?.name ?? ''))\n return list\n}\n\nfunction getSchemaStub(\n schemaType: SchemaType,\n schema: Schema,\n options?: Options,\n): SerializedSchemaType {\n if (!schemaType.type?.name) {\n console.error('Missing type name', schemaType.type)\n throw new Error('Type is missing name!')\n }\n const baseSchema: SerializedSchemaType = {\n // we dont need type or id when we send using POST, so leave these out to save bandwidth\n ...(options?.leanFormat\n ? {}\n : {_id: `${assistSchemaIdPrefix}${schemaType.name}`, _type: assistSerializedTypeName}),\n name: schemaType.name,\n title: schemaType.title,\n type: schemaType.type.name,\n ...getBaseFields(schema, schemaType, schemaType.type.name, options),\n }\n\n return removeUndef(baseSchema)\n}\n\nfunction getBaseFields(\n schema: Schema,\n type: SchemaType,\n typeName: string,\n options: Options | undefined,\n) {\n const schemaOptions: SerializedSchemaType['options'] = removeUndef({\n // oxlint-disable-next-line no-unsafe-type-assertion\n imagePromptField: (type.options as ImageOptions)?.aiAssist?.imageInstructionField,\n // oxlint-disable-next-line no-unsafe-type-assertion\n embeddingsIndex: (type.options as ReferenceOptions)?.aiAssist?.embeddingsIndex,\n })\n return removeUndef({\n options: Object.keys(schemaOptions).length ? schemaOptions : undefined,\n values: Array.isArray(type?.options?.list)\n ? type?.options?.list.map((v: string | {value: string; title: string}) =>\n typeof v === 'string' ? v : (v.value ?? v.title),\n )\n : undefined,\n of: 'of' in type && typeName === 'array' ? arrayOf(type, schema, options) : undefined,\n to: 'to' in type && typeName === 'reference' ? refToTypeNames(type) : undefined,\n fields:\n 'fields' in type && inlineTypes.includes(typeName)\n ? serializeFields(schema, type, options)\n : undefined,\n annotations:\n typeName === 'block' && 'fields' in type\n ? serializeAnnotations(type, schema, options)\n : undefined,\n inlineOf:\n typeName === 'block' && 'fields' in type\n ? serializeInlineOf(type, schema, options)\n : undefined,\n hidden:\n typeof type.hidden === 'function' ? ('function' as const) : type.hidden ? true : undefined,\n readOnly:\n typeof type.readOnly === 'function'\n ? ('function' as const)\n : type.readOnly\n ? true\n : undefined,\n })\n}\n\nfunction serializeFields(\n schema: Schema,\n schemaType: ObjectSchemaType,\n options: Options | undefined,\n) {\n const fields = schemaType.fieldsets\n ? schemaType.fieldsets.flatMap((fs) =>\n fs.single\n ? fs.field\n : fs.fields.map((f) => ({\n ...f,\n type: {\n ...f.type,\n // if fieldset is (conditionally) hidden, the field must be considered the same way\n // ie, if the field does not show up in conditionalMembers, it is hidden\n // regardless of weather or not it is the field function or the fieldset function that hides it\n hidden:\n typeof fs.hidden === 'function' ? fs.hidden : fs.hidden ? true : f.type.hidden,\n },\n })),\n )\n : schemaType.fields\n\n return fields\n .filter((f) => !['sanity.imageHotspot', 'sanity.imageCrop'].includes(f.type?.name ?? ''))\n .filter((f) => isAssistSupported(f.type))\n .map((field) => serializeMember(schema, field.type, field.name, options))\n}\n\nfunction serializeMember(\n schema: Schema,\n type: SchemaType,\n name: string,\n options: Options | undefined,\n): SerializedSchemaMember {\n const typeNameExists = !!schema.get(type?.name)\n const typeName = typeNameExists ? type.name : (type.type?.name ?? '')\n return removeUndef({\n ...(options?.leanFormat ? {} : {_type: assistSerializedFieldTypeName}),\n name: name,\n type: typeName,\n title: type.title,\n ...getBaseFields(schema, type, typeName, options),\n })\n}\n\nfunction serializeInlineOf(\n blockSchemaType: ObjectSchemaType,\n schema: Schema,\n options: Options | undefined,\n): SerializedSchemaMember[] | undefined {\n const childrenField = blockSchemaType.fields.find((f) => f.name === 'children')\n const childrenType = childrenField?.type\n if (!childrenType || !isArraySchemaType(childrenType)) {\n return undefined\n }\n return arrayOf(\n {\n ...childrenType,\n of: childrenType.of.filter((t) => !isType(t, 'span')),\n },\n schema,\n options,\n )\n}\n\nfunction serializeAnnotations(\n blockSchemaType: ObjectSchemaType,\n schema: Schema,\n options: Options | undefined,\n): SerializedSchemaMember[] | undefined {\n const markDefs = blockSchemaType.fields.find((f) => f.name === 'markDefs')\n const marksType = markDefs?.type\n if (!marksType || !isArraySchemaType(marksType)) {\n return undefined\n }\n return arrayOf(marksType, schema, options)\n}\n\nfunction arrayOf(\n arrayType: ArraySchemaType,\n schema: Schema,\n options: Options | undefined,\n): SerializedSchemaMember[] {\n return arrayType.of\n .filter((type) => isAssistSupported(type))\n .map((t) => {\n return serializeMember(schema, t, t.name, options)\n })\n}\n\nfunction refToTypeNames(type: ReferenceSchemaType) {\n return type.to.map((t) => ({\n type: typed<string>(t.name),\n }))\n}\n\nfunction removeUndef<T extends Record<string, any>>(obj: T): T {\n Object.keys(obj).forEach((key) => (obj[key] === undefined ? delete obj[key] : {}))\n return obj\n}\n","import type {ObjectSchemaType} from 'sanity'\n\nimport {\n asFieldRefsByTypePath,\n type FieldRef,\n getFieldRefs as createFieldRefs,\n} from '../assistInspector/helpers'\n\nexport function createFieldRefCache() {\n const byType: Record<\n string,\n | {\n fieldRefs: FieldRef[]\n fieldRefsByTypePath: Record<string, FieldRef | undefined>\n }\n | undefined\n > = {}\n\n function getRefsForType(schemaType: ObjectSchemaType) {\n const documentType = schemaType.name\n const cached = byType[documentType]\n if (cached) return cached\n\n const fieldRefs = createFieldRefs(schemaType)\n const fieldRefsByTypePath = asFieldRefsByTypePath(fieldRefs)\n const refs = {\n fieldRefs,\n fieldRefsByTypePath,\n }\n byType[documentType] = refs\n return refs\n }\n\n return getRefsForType\n}\n","import {type ReactNode, useCallback, useEffect, useMemo, useState} from 'react'\nimport {type ObjectSchemaType, type Schema, useSchema} from 'sanity'\n\nimport type {AssistPluginConfig} from '../plugin'\nimport {serializeSchema} from '../schemas/serialize/serializeSchema'\nimport {\n type InstructStatus,\n useApiClient,\n useGetInstructStatus,\n useInitInstruct,\n} from '../useApiClient'\nimport {\n AiAssistanceConfigContext,\n type AiAssistanceConfigContextValue,\n} from './AiAssistanceConfigContext'\nimport {createFieldRefCache} from './fieldRefCache'\n\nexport function AiAssistanceConfigProvider(props: {\n children?: ReactNode\n config: AssistPluginConfig\n}) {\n const [status, setStatus] = useState<InstructStatus | undefined>()\n const [error, setError] = useState<Error | undefined>()\n\n const apiClient = useApiClient(props.config?.__customApiClient)\n const {getInstructStatus, loading: statusLoading} = useGetInstructStatus(apiClient)\n const {initInstruct, loading: initLoading} = useInitInstruct(apiClient)\n\n const schema = useSchema()\n const serializedTypes = useMemo(() => serializeSchema(schema, {leanFormat: true}), [schema])\n const {getFieldRefs, getFieldRefsByTypePath} = useFieldRefGetters(schema)\n\n useEffect(() => {\n getInstructStatus()\n .then((s) => setStatus(s))\n .catch((e) => {\n console.error(e)\n // oxlint-disable-next-line no-unsafe-type-assertion\n setError(e as Error)\n })\n }, [getInstructStatus])\n\n const init = useCallback(async () => {\n setError(undefined)\n try {\n await initInstruct()\n const status = await getInstructStatus()\n setStatus(status)\n } catch (e) {\n console.error('Failed to init ai assistance', e)\n // oxlint-disable-next-line no-unsafe-type-assertion\n setError(e as Error)\n }\n }, [initInstruct, getInstructStatus, setStatus])\n\n const {config, children} = props\n const context = useMemo<AiAssistanceConfigContextValue>(() => {\n return {\n config,\n status,\n statusLoading,\n init,\n initLoading,\n error,\n serializedTypes,\n getFieldRefs,\n getFieldRefsByTypePath,\n }\n }, [\n config,\n status,\n init,\n statusLoading,\n initLoading,\n error,\n serializedTypes,\n getFieldRefs,\n getFieldRefsByTypePath,\n ])\n\n return (\n <AiAssistanceConfigContext.Provider value={context}>\n {children}\n </AiAssistanceConfigContext.Provider>\n )\n}\n\nfunction useFieldRefGetters(schema: Schema) {\n return useMemo(() => {\n const getForSchemaType = createFieldRefCache()\n\n function getRefsForType(documentType: string) {\n // oxlint-disable-next-line no-unsafe-type-assertion\n const schemaType = schema.get(documentType) as ObjectSchemaType | undefined\n if (!schemaType) {\n throw new Error(`Schema type \"${documentType}\" not found`)\n }\n return getForSchemaType(schemaType)\n }\n\n return {\n getFieldRefs: (documentType: string) => getRefsForType(documentType).fieldRefs,\n getFieldRefsByTypePath: (documentType: string) =>\n getRefsForType(documentType).fieldRefsByTypePath,\n }\n }, [schema])\n}\n","import {ThemeProvider} from '@sanity/ui'\nimport {useState} from 'react'\nimport type {LayoutProps} from 'sanity'\n\nimport {type Connector, ConnectorsProvider} from '../_lib/connector'\nimport {AssistConnectorsOverlay} from '../assistConnectors'\nimport type {AssistPluginConfig} from '../plugin'\nimport {FieldTranslationProvider} from '../translate/FieldTranslationProvider'\nimport type {StudioInstruction} from '../types'\nimport type {RunInstructionRequest} from '../useApiClient'\nimport {AiAssistanceConfigProvider} from './AiAssistanceConfigProvider'\nimport {RunInstructionProvider} from './RunInstructionProvider'\n\nexport interface AIStudioLayoutProps extends LayoutProps {\n config: AssistPluginConfig\n}\n\nexport type RunInstructionArgs = Omit<RunInstructionRequest, 'instructionKey' | 'userTexts'> & {\n instruction: StudioInstruction\n}\n\nexport function AssistLayout(props: AIStudioLayoutProps) {\n const [connectors, setConnectors] = useState<Connector[]>([])\n\n return (\n <AiAssistanceConfigProvider config={props.config}>\n <RunInstructionProvider>\n <FieldTranslationProvider>\n <ConnectorsProvider onConnectorsChange={setConnectors}>\n {props.renderDefault(props)}\n <ThemeProvider tone=\"default\">\n <AssistConnectorsOverlay connectors={connectors} />\n </ThemeProvider>\n </ConnectorsProvider>\n </FieldTranslationProvider>\n </RunInstructionProvider>\n </AiAssistanceConfigProvider>\n )\n}\n","import {createContext, useEffect, useMemo, useState} from 'react'\nimport {getPublishedId, type InputProps, pathToString, usePerspective, useSyncState} from 'sanity'\nimport {usePaneRouter} from 'sanity/structure'\n\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {getDescriptionFieldOption, getImageInstructionFieldOption} from '../helpers/typeUtils'\nimport {canUseAssist, useApiClient, useGenerateCaption} from '../useApiClient'\n\nexport interface ImageContextValue {\n imageDescriptionPath?: string\n imageInstructionPath?: string\n assetRef?: string\n}\n\nexport const ImageContext = createContext<ImageContextValue>({})\n\nexport function ImageContextProvider(props: InputProps) {\n const {schemaType, path, value, readOnly} = props\n // oxlint-disable-next-line no-unsafe-type-assertion\n const assetRef = (value as any)?.asset?._ref\n const {selectedReleaseId} = usePerspective()\n const [assetRefState, setAssetRefState] = useState<string | undefined>(assetRef)\n\n const {assistableDocumentId, documentSchemaType} = useAssistDocumentContext()\n const {config, status} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {generateCaption} = useGenerateCaption(apiClient)\n\n const {isSyncing} = useSyncState(\n getPublishedId(assistableDocumentId),\n documentSchemaType.name,\n selectedReleaseId,\n )\n\n const router = usePaneRouter()\n const isShowingOlderRevision = !!router.params?.['rev']\n\n useEffect(() => {\n const descriptionField = getDescriptionFieldOption(schemaType)\n if (\n assetRef &&\n assistableDocumentId &&\n descriptionField?.updateOnImageChange &&\n assetRef !== assetRefState &&\n !isSyncing &&\n !isShowingOlderRevision &&\n !readOnly\n ) {\n // oxlint-disable-next-line react/react-compiler\n setAssetRefState(assetRef)\n if (canUseAssist(status)) {\n void generateCaption({\n path: pathToString([...path, descriptionField.path]),\n documentId: assistableDocumentId,\n })\n }\n }\n }, [\n schemaType,\n path,\n assetRef,\n assetRefState,\n assistableDocumentId,\n generateCaption,\n isSyncing,\n status,\n readOnly,\n isShowingOlderRevision,\n ])\n\n const context: ImageContextValue = useMemo(() => {\n const descriptionField = getDescriptionFieldOption(schemaType)\n const imageInstructionField = getImageInstructionFieldOption(schemaType)\n return {\n imageDescriptionPath: descriptionField?.path\n ? pathToString([...path, descriptionField.path])\n : undefined,\n imageInstructionPath: imageInstructionField\n ? pathToString([...path, imageInstructionField])\n : undefined,\n assetRef,\n }\n }, [schemaType, path, assetRef])\n\n return <ImageContext.Provider value={context}>{props.renderDefault(props)}</ImageContext.Provider>\n}\n","import {icons, Icon, type IconSymbol} from '@sanity/icons'\nimport {Button, Menu, MenuButton, MenuItem} from '@sanity/ui'\nimport {useCallback, useId, useMemo} from 'react'\nimport {set, type StringInputProps} from 'sanity'\n\nexport function IconInput(props: StringInputProps) {\n const {value, onChange} = props\n const id = useId()\n const items = useMemo(\n () =>\n Object.keys(icons)\n .filter(isIconSymbol)\n .map((key) => <IconItem key={key} iconKey={key} onChange={onChange} />),\n [onChange],\n )\n\n const selectedSymbol = useMemo(() => getIcon(value), [value])\n\n return (\n <MenuButton\n button={\n <Button\n icon={<Icon symbol={selectedSymbol} />}\n title=\"Select icon\"\n padding={3}\n mode=\"ghost\"\n radius={1}\n />\n }\n id={id}\n menu={<Menu style={{maxHeight: 300}}>{items}</Menu>}\n popover={{portal: true}}\n />\n )\n}\n\nfunction IconItem({\n iconKey: key,\n onChange,\n}: {\n iconKey: IconSymbol\n onChange: StringInputProps['onChange']\n}) {\n const onClick = useCallback(() => onChange(set(key)), [onChange, key])\n // `Icon` wraps the lazy-loaded icon in its own `Suspense` boundary. Rendering the raw\n // lazy component from `icons` would suspend the whole menu (there is no boundary between\n // it and the popover), which unmounts the menu and closes it before it can be seen.\n return <MenuItem icon={<Icon symbol={key} />} title={key} text={key} onClick={onClick} />\n}\n\nexport function getIcon(iconName?: string): IconSymbol {\n return iconName && isIconSymbol(iconName) ? iconName : 'sparkles'\n}\n\nfunction isIconSymbol(iconName: string): iconName is IconSymbol {\n return iconName in icons\n}\n","import {useMemo} from 'react'\nimport type {Path, SchemaType} from 'sanity'\n\nimport {isAssistSupported} from './assistSupported'\n\nexport function useAssistSupported(_path: Path, schemaType: SchemaType) {\n return useMemo(() => isAssistSupported(schemaType), [schemaType])\n}\n","import {TranslateIcon} from '@sanity/icons/Translate'\nimport {Box, Spinner} from '@sanity/ui'\nimport {useMemo, useRef} from 'react'\nimport {\n type DocumentFieldAction,\n type DocumentFieldActionGroup,\n type DocumentFieldActionItem,\n type DocumentFieldActionProps,\n type ObjectSchemaType,\n useClient,\n} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {useDraftDelayedTask} from '../assistDocument/RequestRunInstructionProvider'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {isAssistSupported} from '../helpers/assistSupported'\nimport {getConditionalMembers} from '../helpers/conditionalMembers'\nimport {createStyleGuideResolver} from '../helpers/styleguide'\nimport type {AssistOptions} from '../schemas/typeDefExtensions'\nimport {API_VERSION_WITH_EXTENDED_TYPES, useApiClient, useTranslate} from '../useApiClient'\nimport {useFieldTranslation} from './FieldTranslationProvider'\n\nfunction node(node: DocumentFieldActionItem | DocumentFieldActionGroup) {\n return node\n}\n\nexport type TranslateProps = DocumentFieldActionProps & {\n documentIsAssistable?: boolean\n documentSchemaType?: ObjectSchemaType\n}\nexport const translateActions: DocumentFieldAction = {\n name: 'sanity-assist-translate',\n useAction(props: TranslateProps) {\n const {config, status} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const client = useClient({apiVersion: API_VERSION_WITH_EXTENDED_TYPES})\n const {\n schemaType: fieldSchemaType,\n path,\n documentId,\n documentSchemaType,\n documentIsAssistable,\n } = props\n const isDocumentLevel = path.length === 0\n const readOnly = fieldSchemaType.readOnly === true\n\n const docTransTypes = config.translate?.document?.documentTypes\n // oxlint-disable-next-line no-unsafe-type-assertion\n const options = fieldSchemaType?.options as AssistOptions | undefined\n const addFieldAction = isDocumentLevel || options?.aiAssist?.translateAction\n\n const fieldTransEnabled =\n addFieldAction &&\n documentSchemaType &&\n config.translate?.field?.documentTypes?.includes(documentSchemaType.name)\n const documentTranslationEnabled =\n addFieldAction &&\n documentSchemaType &&\n ((!docTransTypes && isAssistSupported(fieldSchemaType)) ||\n docTransTypes?.includes(documentSchemaType.name))\n\n const isActive = !!(documentSchemaType && (documentTranslationEnabled || fieldTransEnabled))\n\n const {value: documentValue, onChange: documentOnChange, formState} = useDocumentPane()\n const docRef = useRef(documentValue)\n docRef.current = documentValue\n const formStateRef = useRef(formState)\n formStateRef.current = formState\n\n const translationApi = useTranslate(apiClient)\n const translate = useDraftDelayedTask({\n documentOnChange,\n isDocAssistable: documentIsAssistable ?? false,\n task: translationApi.translate,\n })\n\n const styleguide = config.translate?.styleguide\n const languagePath = config.translate?.document?.languageField\n\n const translateDocumentAction = useMemo(() => {\n if (!isActive || !languagePath || !documentTranslationEnabled) {\n return undefined\n }\n const title = path.length ? `Translate` : `Translate document`\n return node({\n type: 'action',\n icon: translationApi.loading\n ? () => (\n <Box style={{height: 17}}>\n <Spinner style={{transform: 'translateY(6px)'}} />\n </Box>\n )\n : TranslateIcon,\n title,\n onAction: () => {\n if (translationApi.loading || !languagePath || !documentId) {\n return\n }\n translate({\n languagePath,\n translatePath: path,\n styleguide: createStyleGuideResolver(styleguide, {\n client,\n documentId,\n schemaType: documentSchemaType,\n }),\n documentId: documentId ?? '',\n conditionalMembers: formStateRef.current\n ? getConditionalMembers(formStateRef.current)\n : [],\n })\n },\n renderAsButton: true,\n disabled: translationApi.loading || readOnly,\n })\n }, [\n isActive,\n languagePath,\n translate,\n styleguide,\n documentId,\n translationApi.loading,\n documentTranslationEnabled,\n path,\n readOnly,\n client,\n documentSchemaType,\n ])\n const fieldTranslate = useFieldTranslation()\n const openFieldTranslation = useDraftDelayedTask({\n documentOnChange,\n isDocAssistable: documentIsAssistable ?? false,\n task: fieldTranslate.openFieldTranslation,\n })\n\n const maxDepth = config.translate?.field?.maxPathDepth\n const translateFieldsAction = useMemo(\n () =>\n isActive && fieldTransEnabled\n ? node({\n type: 'action',\n icon: fieldTranslate.translationLoading\n ? () => (\n <Box style={{height: 17}}>\n <Spinner style={{transform: 'translateY(6px)'}} />\n </Box>\n )\n : TranslateIcon,\n title: `Translate fields...`,\n onAction: () => {\n if (fieldTranslate.translationLoading || !documentId) {\n return\n }\n if (formStateRef.current) {\n getConditionalMembers(formStateRef.current)\n }\n openFieldTranslation({\n document: {\n ...docRef.current,\n _id: documentId,\n },\n documentSchema: documentSchemaType,\n translatePath: path,\n conditionalMembers: formStateRef.current\n ? getConditionalMembers(formStateRef.current, maxDepth)\n : [],\n })\n },\n renderAsButton: true,\n disabled: fieldTranslate.translationLoading || readOnly,\n })\n : undefined,\n [\n isActive,\n openFieldTranslation,\n documentSchemaType,\n documentId,\n fieldTranslate.translationLoading,\n fieldTransEnabled,\n path,\n readOnly,\n maxDepth,\n ],\n )\n\n return useMemo(() => {\n if (!isActive || !status?.initialized) {\n // oxlint-disable-next-line no-unsafe-type-assertion\n return undefined as unknown as DocumentFieldActionItem\n }\n return node({\n type: 'group',\n icon: () => null,\n title: 'Translation',\n children: [translateDocumentAction, translateFieldsAction].filter(\n (c): c is DocumentFieldActionItem => !!c,\n ),\n expanded: true,\n })\n }, [isActive, translateDocumentAction, translateFieldsAction, status])\n },\n}\n","import type {AgentActionPath} from '@sanity/client/stega'\nimport {type ToastParams, useToast} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {\n type DocumentFieldActionDivider,\n type DocumentFieldActionGroup,\n type DocumentFieldActionItem,\n type DocumentFieldActionNode,\n type ObjectSchemaType,\n type Path,\n type SanityDocumentLike,\n type SchemaType,\n useWorkspaceSchemaId,\n} from 'sanity'\n\nimport {randomKey} from '../_lib/randomKey'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {isDefined} from '../helpers/misc'\nimport {\n documentRootKey,\n fieldPresenceTypeName,\n type InstructionTask,\n instructionTaskTypeName,\n} from '../types'\n\nexport interface AgentActionConditionalPath {\n path: AgentActionPath\n readOnly: boolean\n hidden: boolean\n}\n\nexport interface AssistFieldActionProps {\n /**\n * `actionType` will be `document` for action invoked from the top right document action menu, and\n * `field` when invoked from a field action menu.\n */\n actionType: 'document' | 'field'\n /**\n * This is the id of the current document pane; it contains `drafts.`or `versions. prefix` ect depending on context.\n * Use this for `documentId` when calling any `client.agent.action`.\n *\n * It is generally recommended to call actions from the studio like this:\n * ```ts\n * await client.agent.action.generate({\n * targetDocument: {\n * operation: 'createIfNotExists',\n * _id: props.documentIdForAction,\n * _type: props.documentSchemaType.name,\n * initialValues: props.getDocumentValue()\n * },\n * //...\n * })\n * ```\n */\n documentIdForAction: string\n\n /**\n * Schema type of the current document.\n * @see documentIdForAction\n */\n documentSchemaType: ObjectSchemaType\n\n /**\n * Returns the current document value.\n *\n * Prefer passing this function to your hooks instead of passing the document value directly to avoid unnecessary re-renders.\n * @see documentIdForAction\n */\n getDocumentValue: () => SanityDocumentLike\n\n /**\n * Returns the current readOnly and hidden state of all conditional members in the current document form.\n *\n * Intended to be passed to agent actions `conditionalPaths.paths`.\n */\n getConditionalPaths: () => AgentActionConditionalPath[]\n\n /**\n * `schemaId` for the current workspace.\n *\n * Note: the workspace schema has to be deployed using `sanity schema deploy` or `sanity deploy`.\n *\n * Use this for `schemaId` when calling any `client.agent.action`.\n *\n * It is generally recommended to call actions from the studio like this:\n * ```ts\n * await client.agent.action.generate({\n * targetDocument: {\n * operation: 'createIfNotExists',\n * _id: props.documentIdForAction,\n * _type: props.documentSchemaType.name,\n * initialValues: props.getDocumentValue()\n * },\n * //...\n * })\n *\n * ```\n */\n schemaId: string\n\n /**\n * This is the schema type of the field the actions will be attached to (ie, schemaType for `path`)\n *\n * It can be used with agent actions using `target.path`, to scope the action to a specific field.\n *\n * It is generally recommended to call actions from the studio like this:\n * ```ts\n * await client.agent.action.generate({\n * targetDocument: {\n * operation: 'createIfNotExists',\n * _id: props.documentIdForAction,\n * _type: props.documentSchemaType.name,\n * initialValues: props.getDocumentValue()\n * },\n * target: {\n * path: props.path\n * },\n * })\n * ```\n */\n path: AgentActionPath\n\n /**\n * This is the schema type of the field the actions will be attached to (ie, schemaType for `path`).\n *\n * Typically useful to dynamically return different actions based on the schema type of the field.\n *\n * ```ts\n * if(isObjectSchemaType(schemaType)) {\n * return [\n * defineAssistFieldAction({\n * title: 'Fill the object fields',\n * icon: RobotIcon,\n * onAction: () => {\n * //...\n * }\n * })\n * ]\n * }\n * return useMemo(() => {\n *\n *\n * }, [])\n *\n * ```\n */\n schemaType: SchemaType\n\n /**\n * Schema type of the parent field or array item holding this field.\n *\n * This can be undefined if the action was unable to resolve the parent type is excluded from AI Assist.\n *\n * @see schemaType\n * @see documentSchemaType\n */\n parentSchemaType?: SchemaType\n}\n\nexport type AssistFieldActionNode =\n | AssistFieldActionItem\n | AssistFieldActionGroup\n | DocumentFieldActionDivider\n\nexport type AssistFieldActionItem = Omit<\n DocumentFieldActionItem,\n 'renderAsButton' | 'selected' | 'onAction'\n> & {\n onAction: () => void | Promise<void>\n}\n\nexport type AssistFieldActionGroup = Omit<\n DocumentFieldActionGroup,\n 'renderAsButton' | 'expanded' | 'children'\n> & {\n /**\n * `children` can include undefined entries in the action array. These will be filtered out.\n * If the group has no defined children, the group will also be filtered out.\n */\n children: (AssistFieldActionNode | undefined)[]\n}\n\ntype PushToast = (params: ToastParams) => string\n\nexport function defineAssistFieldAction(\n action: Omit<AssistFieldActionItem, 'type'>,\n): AssistFieldActionItem {\n return {\n ...action,\n type: 'action',\n }\n}\n\nexport function defineFieldActionDivider(): DocumentFieldActionDivider {\n return {\n type: 'divider',\n }\n}\n\nexport function defineAssistFieldActionGroup(\n group: Omit<AssistFieldActionGroup, 'type'>,\n): AssistFieldActionGroup {\n return {\n ...group,\n type: 'group',\n }\n}\n\nexport function useCustomFieldActions(\n props: Omit<AssistFieldActionProps, 'schemaId' | 'path'> & {path: Path},\n) {\n const {\n config: {fieldActions},\n } = useAiAssistanceConfig()\n const {addSyntheticTask, removeSyntheticTask} = useAssistDocumentContext()\n\n const schemaId = useWorkspaceSchemaId()\n const {push: pushToast} = useToast()\n // oxlint-disable-next-line react/react-compiler\n const configActions = fieldActions?.useFieldActions?.({\n ...props,\n schemaId,\n // oxlint-disable-next-line no-unsafe-type-assertion\n path: props.path as AgentActionPath,\n })\n\n return useMemo(() => {\n const title = fieldActions?.title\n const customActions = configActions\n ?.filter(isDefined)\n .map((node) => {\n return createSafeNode({\n node,\n pushToast,\n // oxlint-disable-next-line react/react-compiler\n addSyntheticTask,\n removeSyntheticTask,\n })\n })\n .filter(isDefined)\n const onlyGroups =\n customActions?.length && customActions?.every((node) => node.type === 'group')\n const groups = customActions?.length\n ? onlyGroups\n ? customActions\n : [\n {\n type: 'group',\n title: title || 'Custom actions',\n children: customActions,\n expanded: true,\n } satisfies DocumentFieldActionGroup,\n ]\n : []\n return groups ?? []\n // oxlint-disable-next-line eslint-plugin-react-hooks/exhaustive-deps\n }, [configActions, fieldActions, pushToast])\n}\n\nfunction createSafeNode(args: {\n node: AssistFieldActionNode\n pushToast: PushToast\n addSyntheticTask: (task: InstructionTask) => void\n removeSyntheticTask: (task: InstructionTask) => void\n}): DocumentFieldActionNode | undefined {\n const {node} = args\n switch (node.type) {\n case 'action':\n return createSafeAction({...args, action: node})\n case 'group':\n const children = node.children\n ?.filter(isDefined)\n .map((child) => createSafeNode({...args, node: child}))\n .filter(isDefined)\n if (!children?.length) {\n return undefined\n }\n return {\n ...node,\n renderAsButton: false,\n expanded: true,\n children,\n }\n case 'divider':\n default:\n return node\n }\n}\n\nfunction createSafeAction(args: {\n action: AssistFieldActionItem\n pushToast: PushToast\n addSyntheticTask: (task: InstructionTask) => void\n removeSyntheticTask: (task: InstructionTask) => void\n}) {\n const {action, pushToast, addSyntheticTask, removeSyntheticTask} = args\n return {\n ...action,\n onAction: () => {\n async function runAction() {\n const task: InstructionTask = {\n _type: instructionTaskTypeName,\n _key: randomKey(12),\n started: new Date().toISOString(),\n presence: [\n {\n _type: fieldPresenceTypeName,\n _key: randomKey(12),\n path: documentRootKey,\n started: new Date().toISOString(),\n },\n ],\n }\n try {\n addSyntheticTask(task)\n const actionResult = action.onAction?.()\n if (actionResult instanceof Promise) {\n await actionResult\n }\n } catch (err: any) {\n console.error('Failed to execute action', action, err)\n pushToast({\n title: 'Failed to execute action',\n description: err?.message,\n status: 'error',\n })\n } finally {\n removeSyntheticTask(task)\n }\n }\n void runAction()\n },\n renderAsButton: false,\n selected: false,\n }\n}\n","import {ImageIcon} from '@sanity/icons/Image'\nimport {Box, Spinner} from '@sanity/ui'\nimport {useContext, useMemo} from 'react'\nimport type {DocumentFieldAction, DocumentFieldActionGroup, DocumentFieldActionItem} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {aiInspectorId} from '../assistInspector/constants'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {ImageContext} from '../components/ImageContext'\nimport {usePathKey} from '../helpers/misc'\nimport {fieldPathParam, instructionParam} from '../types'\nimport {canUseAssist, useApiClient, useGenerateCaption} from '../useApiClient'\n\nfunction node(node: DocumentFieldActionItem | DocumentFieldActionGroup) {\n return node\n}\n\nexport const generateCaptionsActions: DocumentFieldAction = {\n name: 'sanity-assist-generate-captions',\n useAction(props) {\n const pathKey = usePathKey(props.path)\n const {openInspector} = useDocumentPane()\n\n const {config, status} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {generateCaption, loading} = useGenerateCaption(apiClient)\n const imageContext = useContext(ImageContext)\n const {assistableDocumentId} = useAssistDocumentContext()\n\n const isActive = !!imageContext && pathKey === imageContext?.imageDescriptionPath\n\n return useMemo(() => {\n if (!isActive || !imageContext) {\n // works but not supported by types\n // oxlint-disable-next-line no-unsafe-type-assertion\n return undefined as unknown as DocumentFieldActionItem\n }\n return node({\n type: 'action',\n icon: loading\n ? () => (\n <Box style={{height: 17}}>\n <Spinner style={{transform: 'translateY(6px)'}} />\n </Box>\n )\n : ImageIcon,\n title: 'Generate image description',\n onAction: () => {\n if (loading) {\n return\n }\n if (!canUseAssist(status)) {\n openInspector(aiInspectorId, {\n [fieldPathParam]: pathKey,\n // oxlint-disable-next-line no-unsafe-type-assertion\n [instructionParam]: undefined as any,\n })\n return\n }\n void generateCaption({path: pathKey, documentId: assistableDocumentId})\n },\n renderAsButton: true,\n disabled: loading,\n hidden: !imageContext.assetRef,\n })\n }, [\n isActive,\n imageContext,\n generateCaption,\n pathKey,\n assistableDocumentId,\n loading,\n status,\n openInspector,\n ])\n },\n}\n","import {ImageIcon} from '@sanity/icons/Image'\nimport {Box, Spinner} from '@sanity/ui'\nimport {useContext, useMemo} from 'react'\nimport type {DocumentFieldAction, DocumentFieldActionGroup, DocumentFieldActionItem} from 'sanity'\n\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {ImageContext} from '../components/ImageContext'\nimport {usePathKey} from '../helpers/misc'\nimport {useApiClient, useGenerateImage} from '../useApiClient'\n\nfunction node(node: DocumentFieldActionItem | DocumentFieldActionGroup) {\n return node\n}\n\nexport const generateImagActions: DocumentFieldAction = {\n name: 'sanity-assist-generate-image',\n useAction(props) {\n const pathKey = usePathKey(props.path)\n\n const {config} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {generateImage, loading} = useGenerateImage(apiClient)\n\n const imageContext = useContext(ImageContext)\n const {assistableDocumentId} = useAssistDocumentContext()\n\n const isActive = !!imageContext && pathKey === imageContext?.imageInstructionPath\n\n return useMemo(() => {\n if (!isActive) {\n // works but not supported by types\n // oxlint-disable-next-line no-unsafe-type-assertion\n return undefined as unknown as DocumentFieldActionItem\n }\n return node({\n type: 'action',\n icon: loading\n ? () => (\n <Box style={{height: 17}}>\n <Spinner style={{transform: 'translateY(6px)'}} />\n </Box>\n )\n : ImageIcon,\n title: 'Generate image from prompt',\n onAction: () => {\n if (loading) {\n return\n }\n void generateImage({path: pathKey, documentId: assistableDocumentId})\n },\n renderAsButton: true,\n disabled: loading,\n })\n }, [isActive, generateImage, pathKey, assistableDocumentId, loading])\n },\n}\n","import {LockIcon} from '@sanity/icons/Lock'\nimport {Text, Tooltip} from '@sanity/ui'\n\nexport function PrivateIcon() {\n return (\n <Tooltip\n content={\n <Text size={1} style={{whiteSpace: 'nowrap'}}>\n Only visible to you\n </Text>\n }\n fallbackPlacements={['bottom']}\n padding={2}\n placement=\"top\"\n portal\n >\n <LockIcon />\n </Tooltip>\n )\n}\n","import type {AgentActionPath} from '@sanity/client/stega'\nimport {Icon} from '@sanity/icons'\nimport {ControlsIcon} from '@sanity/icons/Controls'\nimport {SparklesIcon} from '@sanity/icons/Sparkles'\nimport {useCallback, useMemo, useRef} from 'react'\nimport {\n type DocumentFieldAction,\n type DocumentFieldActionGroup,\n type DocumentFieldActionItem,\n pathToString,\n stringToPath,\n typed,\n useCurrentUser,\n} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {getIcon} from '../assistDocument/components/instruction/appearance/IconInput'\nimport {useRequestRunInstruction} from '../assistDocument/RequestRunInstructionProvider'\nimport {aiInspectorId} from '../assistInspector/constants'\nimport {getTypePath, useSelectedField, useTypePath} from '../assistInspector/helpers'\nimport {pluginTitleShort} from '../constants'\nimport {isSchemaAssistEnabled} from '../helpers/assistSupported'\nimport {getConditionalMembers} from '../helpers/conditionalMembers'\nimport {getInstructionTitle, usePathKey} from '../helpers/misc'\nimport {useAssistSupported} from '../helpers/useAssistSupported'\nimport {translateActions, type TranslateProps} from '../translate/translateActions'\nimport {documentRootKey, fieldPathParam, instructionParam, type StudioInstruction} from '../types'\nimport {type AgentActionConditionalPath, useCustomFieldActions} from './customFieldActions'\nimport {generateCaptionsActions} from './generateCaptionActions'\nimport {generateImagActions} from './generateImageActions'\nimport {PrivateIcon} from './PrivateIcon'\n\nfunction node(node: DocumentFieldActionItem | DocumentFieldActionGroup) {\n return node\n}\n\nexport const assistFieldActions: DocumentFieldAction = {\n name: 'sanity-assist-actions',\n useAction(props) {\n const {schemaType} = props\n\n const {\n assistDocument,\n documentIsNew,\n documentIsAssistable,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n documentSchemaType,\n selectedPath,\n assistableDocumentId,\n fieldRefsByTypePath,\n } = useAssistDocumentContext()\n\n const {value: docValue, formState} = useDocumentPane()\n const docValueRef = useRef(docValue)\n const formStateRef = useRef(formState)\n formStateRef.current = formState\n\n const currentUser = useCurrentUser()\n const isHidden = !assistDocument\n const pathKey = usePathKey(props.path)\n const typePath = useTypePath(docValue, pathKey)\n const assistDocumentId = assistDocument?._id\n\n const {requestRunInstruction} = useRequestRunInstruction({\n documentOnChange,\n isDocAssistable: documentIsAssistable ?? false,\n })\n\n const isSelectable = !!useSelectedField(documentSchemaType, typePath)\n const assistSupported =\n useAssistSupported(props.path, schemaType) &&\n isSelectable &&\n isSchemaAssistEnabled(documentSchemaType) &&\n schemaType.readOnly !== true\n\n const fieldAssist = useMemo(\n () =>\n (assistDocument?.fields ?? []).find(\n (f) => f.path === typePath || (pathKey === documentRootKey && f.path === pathKey),\n ),\n [assistDocument?.fields, pathKey, typePath],\n )\n\n const fieldAssistKey = fieldAssist?._key\n const isInspectorOpen = inspector?.name === aiInspectorId\n const isPathSelected = pathKey === selectedPath\n const isSelected = isInspectorOpen && isPathSelected\n\n const imageCaptionAction = generateCaptionsActions.useAction(props)\n const imageGenAction = generateImagActions.useAction(props)\n const translateAction = translateActions.useAction(\n typed<TranslateProps>({\n ...props,\n documentId: assistableDocumentId,\n documentIsAssistable,\n documentSchemaType,\n }),\n )\n const manageInstructions = useCallback(\n () =>\n isSelected\n ? closeInspector(aiInspectorId)\n : openInspector(aiInspectorId, {\n [fieldPathParam]: pathKey,\n // oxlint-disable-next-line no-unsafe-type-assertion\n [instructionParam]: undefined as any,\n }),\n [openInspector, closeInspector, isSelected, pathKey],\n )\n\n const onInstructionAction = useCallback(\n (instruction: StudioInstruction) => {\n if (!pathKey || !fieldAssistKey || !assistDocumentId || !assistableDocumentId) {\n return\n }\n requestRunInstruction({\n documentId: assistableDocumentId,\n assistDocumentId,\n path: pathKey,\n typePath,\n instruction,\n conditionalMembers: formStateRef.current\n ? getConditionalMembers(formStateRef.current)\n : [],\n })\n },\n [\n requestRunInstruction,\n assistableDocumentId,\n pathKey,\n typePath,\n assistDocumentId,\n fieldAssistKey,\n ],\n )\n\n const privateInstructions = useMemo(\n () =>\n fieldAssist?.instructions?.filter((i) => i.userId && i.userId === currentUser?.id) || [],\n [fieldAssist?.instructions, currentUser],\n )\n\n const sharedInstructions = useMemo(\n () => fieldAssist?.instructions?.filter((i) => !i.userId) || [],\n [fieldAssist?.instructions],\n )\n\n const instructions = useMemo(\n () => [...privateInstructions, ...sharedInstructions],\n [privateInstructions, sharedInstructions],\n )\n\n const runInstructionsGroup = useMemo(() => {\n return instructions?.length || imageCaptionAction || translateAction || imageGenAction\n ? node({\n type: 'group',\n icon: () => null,\n title: 'Run instructions',\n children: [\n ...(instructions?.map((instruction) =>\n instructionItem({\n instruction,\n isPrivate: Boolean(instruction.userId && instruction.userId === currentUser?.id),\n onInstructionAction,\n hidden: isHidden,\n // oxlint-disable-next-line no-unnecessary-type-conversion\n documentIsNew: !!documentIsNew,\n assistSupported,\n }),\n ) || []),\n imageCaptionAction,\n imageGenAction,\n ].filter((a): a is DocumentFieldActionItem => !!a),\n expanded: true,\n })\n : undefined\n }, [\n instructions,\n currentUser?.id,\n onInstructionAction,\n isHidden,\n documentIsNew,\n assistSupported,\n imageCaptionAction,\n translateAction,\n imageGenAction,\n ])\n\n const getDocumentValue = useCallback(() => {\n return docValueRef.current\n }, [])\n\n const getConditionalPaths: () => AgentActionConditionalPath[] = useCallback(() => {\n // oxlint-disable-next-line no-map-spread\n return (formStateRef.current ? getConditionalMembers(formStateRef.current) : []).flatMap(\n (cm) => {\n const path = stringToPath(cm.path)\n if (path.some((s) => typeof s === 'number')) {\n //agent actions does not support indexed paths\n return []\n }\n return {\n ...cm,\n // oxlint-disable-next-line no-unsafe-type-assertion\n path: path as AgentActionPath,\n }\n },\n )\n }, [])\n\n const parentSchemaType = useMemo(() => {\n if (!props.path.length) {\n return undefined\n } else if (props.path.length === 1) {\n return documentSchemaType\n }\n const parentPath = props.path.slice(0, -1)\n const typePath = getTypePath(docValueRef.current, pathToString(parentPath))\n return typePath ? fieldRefsByTypePath[typePath]?.schemaType : undefined\n }, [fieldRefsByTypePath, props.path, documentSchemaType])\n\n const customActions = useCustomFieldActions({\n actionType: props.path.length ? 'field' : 'document',\n documentIdForAction: assistableDocumentId,\n schemaType,\n documentSchemaType,\n path: props.path,\n getDocumentValue,\n getConditionalPaths,\n parentSchemaType,\n })\n\n const manageInstructionsItem = useMemo(\n () =>\n node({\n type: 'action',\n icon: ControlsIcon,\n title: 'Manage instructions',\n onAction: manageInstructions,\n selected: isSelected,\n }),\n [manageInstructions, isSelected],\n )\n\n const group = useMemo(\n () =>\n node({\n type: 'group',\n icon: SparklesIcon,\n title: pluginTitleShort,\n children: [\n runInstructionsGroup,\n translateAction,\n ...customActions,\n assistSupported && manageInstructionsItem,\n ]\n .filter((c): c is DocumentFieldActionItem | DocumentFieldActionGroup => !!c)\n .filter((c) => (c.type === 'group' ? c.children.length : true)),\n expanded: false,\n renderAsButton: true,\n hidden: !assistSupported && !imageCaptionAction && !translateAction && !imageGenAction,\n }),\n [\n //documentIsNew,\n runInstructionsGroup,\n manageInstructionsItem,\n assistSupported,\n imageCaptionAction,\n translateAction,\n imageGenAction,\n customActions,\n ],\n )\n\n const emptyAction = useMemo(\n () =>\n node({\n type: 'action',\n hidden: !assistSupported,\n icon: SparklesIcon,\n onAction: manageInstructions,\n renderAsButton: true,\n title: pluginTitleShort,\n selected: isSelected,\n }),\n [assistSupported, manageInstructions, isSelected],\n )\n\n // If there are no instructions, we don't want to render the group\n if (\n !instructions?.length &&\n !imageCaptionAction &&\n !translateAction &&\n !imageGenAction &&\n !customActions.length\n ) {\n return emptyAction\n }\n\n return group\n },\n}\n\nfunction instructionItem(props: {\n instruction: StudioInstruction\n isPrivate: boolean\n onInstructionAction: (ins: StudioInstruction) => void\n assistSupported: boolean\n documentIsNew: boolean\n hidden: boolean\n}) {\n const {hidden, isPrivate, onInstructionAction, assistSupported, instruction} = props\n // @TODO investigate in studio core why we can't accept JSX.Element and only accept ComponentType\n function IconLeft() {\n return <Icon symbol={getIcon(instruction.icon)} />\n }\n return node({\n type: 'action',\n icon: IconLeft,\n iconRight: isPrivate ? PrivateIcon : undefined,\n title: getInstructionTitle(instruction),\n onAction: () => onInstructionAction(instruction),\n disabled: !assistSupported,\n hidden,\n })\n}\n","import {Card, Flex} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {documentRootKey, fieldPresenceTypeName} from '../types'\nimport {AiFieldPresence} from './AiFieldPresence'\nimport {aiPresence} from './useAssistPresence'\n\nexport function createAssistDocumentPresence(documentId: string | undefined) {\n return function AssistDocumentPresenceWrapper() {\n return documentId ? <AssistDocumentPresence /> : null\n }\n}\n\nfunction AssistDocumentPresence() {\n const {assistDocument, syntheticTasks} = useAssistDocumentContext()\n const anyPresence = useMemo(() => {\n const anyPresence = [...(assistDocument?.tasks ?? []), ...(syntheticTasks ?? [])]\n ?.filter((run) => !run.ended && !run.reason)\n ?.flatMap((run) => run.presence ?? [])\n .find((f) => f.started && new Date().getTime() - new Date(f.started).getTime() < 30000)\n if (anyPresence) {\n return aiPresence(anyPresence, [])\n }\n const anyRun = assistDocument?.tasks\n ?.filter((run) => !run.ended && !run.reason)\n ?.find((f) => f.started && new Date().getTime() - new Date(f.started).getTime() < 30000)\n return anyRun\n ? aiPresence(\n {\n started: anyRun.started,\n path: documentRootKey,\n _key: anyRun._key,\n _type: fieldPresenceTypeName,\n },\n [],\n )\n : undefined\n }, [assistDocument?.tasks, syntheticTasks])\n\n return (\n <Card>\n <Flex flex={1} justify=\"flex-end\">\n <Flex gap={2} align={'center'}>\n {anyPresence && <AiFieldPresence presence={anyPresence} />}\n </Flex>\n </Flex>\n </Card>\n )\n}\n","import {ArrowLeftIcon} from '@sanity/icons/ArrowLeft'\nimport {Button} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {aiInspectorId} from '../../../assistInspector/constants'\nimport {instructionParam} from '../../../types'\n\nexport function BackToInstructionListLink() {\n const {openInspector} = useDocumentPane()\n\n const goBack = useCallback(\n // oxlint-disable-next-line no-unsafe-type-assertion\n () => openInspector(aiInspectorId, {[instructionParam]: undefined as any}),\n [openInspector],\n )\n\n return (\n <div>\n <Button\n as=\"a\"\n fontSize={1}\n icon={ArrowLeftIcon}\n mode=\"bleed\"\n padding={1}\n gap={2}\n onClick={goBack}\n text=\" Instructions\"\n textAlign=\"left\"\n />\n </div>\n )\n}\n","import {createContext} from 'react'\nimport type {ObjectSchemaType, SchemaType} from 'sanity'\n\nexport interface SelectedFieldContextValue {\n documentSchema?: ObjectSchemaType\n fieldSchema?: SchemaType\n}\n\nexport const SelectedFieldContext = createContext<SelectedFieldContextValue | undefined>(undefined)\nexport const SelectedFieldContextProvider = SelectedFieldContext.Provider\n","import {Card, Stack, Text} from '@sanity/ui'\nimport {useContext, useEffect, useMemo, useRef} from 'react'\nimport {\n type FieldError,\n FormCallbacksProvider,\n type FormCallbacksValue,\n FormInput,\n insert,\n type KeyedSegment,\n MemberFieldError,\n type ObjectInputProps,\n type ObjectSchemaType,\n PatchEvent,\n type Path,\n type SchemaType,\n set,\n setIfMissing,\n stringToPath,\n typed,\n useFormCallbacks,\n useSchema,\n} from 'sanity'\n\nimport {useAiPaneRouter} from '../../assistInspector/helpers'\nimport {useAiAssistanceConfig} from '../../assistLayout/AiAssistanceConfigContext'\nimport {\n type AssistDocument,\n type AssistField,\n assistFieldTypeName,\n type AssistInspectorRouteParams,\n documentRootKey,\n fieldPathParam,\n instructionParam,\n type StudioInstruction,\n} from '../../types'\nimport {AssistTypeContext} from './AssistTypeContext'\nimport {BackToInstructionListLink} from './instruction/BackToInstructionsLink'\nimport {SelectedFieldContextProvider, type SelectedFieldContextValue} from './SelectedFieldContext'\n\nconst EMPTY_FIELDS: AssistField[] = []\n\nexport function AssistDocumentForm(props: ObjectInputProps) {\n if (props.readOnly) {\n return (\n <Card border tone=\"caution\" padding={2}>\n <Text size={1}> You do not have sufficient permissions to manage instructions.</Text>\n </Card>\n )\n }\n return <AssistDocumentFormEditable {...props} />\n}\nfunction AssistDocumentFormEditable(props: ObjectInputProps) {\n const {onChange} = props\n // oxlint-disable-next-line no-unsafe-type-assertion\n const value = props.value as AssistDocument | undefined\n const id = value?._id\n const fields = value?.fields\n\n const {params, setParams} = useAiPaneRouter()\n const pathKey = params[fieldPathParam]\n const {typePath, documentType: targetDocumentType} = useContext(AssistTypeContext)\n const instruction = params[instructionParam]\n\n const activeKey = useMemo(() => {\n if (!typePath) {\n return undefined\n }\n return (fields ?? EMPTY_FIELDS).find((f) => f.path === typePath)?._key\n }, [fields, typePath])\n\n const activePath: Path | undefined = useMemo(() => {\n if (!activeKey) {\n return undefined\n }\n const base = ['fields', {_key: activeKey}]\n return instruction ? [...base, 'instructions', {_key: instruction}] : base\n }, [activeKey, instruction])\n\n const schema = useSchema()\n const documentSchema: ObjectSchemaType | undefined = useMemo(() => {\n if (!targetDocumentType) {\n return undefined\n }\n // oxlint-disable-next-line no-unsafe-type-assertion\n return schema.get(targetDocumentType) as ObjectSchemaType\n }, [schema, targetDocumentType])\n\n const fieldSchema = useSelectedSchema(pathKey, documentSchema)\n\n const context: SelectedFieldContextValue = useMemo(\n () => ({\n documentSchema,\n fieldSchema: fieldSchema ?? documentSchema,\n }),\n [fieldSchema, documentSchema],\n )\n\n const title = value?.['title']\n\n useEffect(() => {\n if (!title && documentSchema && !id?.startsWith('drafts.')) {\n onChange(set(documentSchema.title ?? documentSchema.name, ['title']))\n }\n }, [title, documentSchema, onChange, id])\n\n const {onPathOpen, ...formCallbacks} = useFormCallbacks()\n\n const newCallbacks: FormCallbacksValue = useMemo(\n () => ({\n ...formCallbacks,\n onPathOpen: (path) => {\n if (!instruction && path.length === 4 && path[2] === 'instructions') {\n setParams(\n // oxlint-disable-next-line no-unsafe-type-assertion\n typed<AssistInspectorRouteParams>({\n ...params,\n // oxlint-disable-next-line no-unsafe-type-assertion\n [instructionParam]: (path[3] as KeyedSegment)?._key,\n }) as Record<keyof AssistInspectorRouteParams, string | undefined>,\n )\n } else {\n setTimeout(() => onPathOpen(path), 0)\n }\n },\n }),\n [formCallbacks, onPathOpen, params, setParams, instruction],\n )\n\n // When showing the instruction list (no specific instruction selected),\n // tell the form to focus on the field path to close any open modals\n useEffect(() => {\n if (activePath && !instruction) {\n onPathOpen(activePath)\n }\n }, [activePath, instruction, onPathOpen])\n\n const fieldError = useMemo(() => {\n const fieldError = props.members.find(\n (m): m is FieldError => m.kind === 'error' && m.fieldName === 'fields',\n )\n if (fieldError) {\n return <MemberFieldError member={fieldError} />\n }\n return undefined\n }, [props.members])\n\n return (\n <SelectedFieldContextProvider value={context}>\n <Stack gap={5}>\n <FieldsInitializer\n key={typePath}\n pathKey={typePath}\n activePath={activePath}\n fields={fields}\n documentSchema={documentSchema}\n onChange={onChange}\n />\n {instruction && <BackToInstructionListLink />}\n\n {activePath && !fieldError && (\n <FormCallbacksProvider {...newCallbacks}>\n <div style={{lineHeight: '1.25em'}}>\n <FormInput {...props} absolutePath={activePath} />\n </div>\n </FormCallbacksProvider>\n )}\n\n {fieldError}\n\n {!activePath && props.renderDefault(props)}\n </Stack>\n </SelectedFieldContextProvider>\n )\n}\n\nfunction useSelectedSchema(\n fieldPath: string | undefined,\n documentSchema: ObjectSchemaType | undefined,\n): SchemaType | undefined {\n return useMemo(() => {\n if (!fieldPath) {\n return undefined\n }\n if (fieldPath === documentRootKey) {\n return documentSchema\n }\n\n const path = stringToPath(fieldPath)\n let currentSchema: ObjectSchemaType | undefined = documentSchema\n for (let i = 0; i < path.length; i++) {\n const segment = path[i]\n const field = currentSchema?.fields.find((f) => f.name === segment)\n if (!field) {\n return undefined\n }\n if (i === path.length - 1) {\n return field.type\n }\n if (field.type.jsonType !== 'object') {\n return undefined\n }\n currentSchema = field.type\n }\n return currentSchema\n }, [documentSchema, fieldPath])\n}\n\nfunction FieldsInitializer({\n pathKey,\n activePath,\n fields,\n documentSchema,\n onChange,\n}: {\n pathKey?: string\n activePath?: Path\n fields: AssistField[] | undefined\n documentSchema: ObjectSchemaType | undefined\n onChange: ObjectInputProps['onChange']\n}) {\n const {\n config: {__presets: presets},\n } = useAiAssistanceConfig()\n\n const existingField = fields?.find((f) => f._key === pathKey)\n const documentPresets = !!documentSchema?.name && presets?.[documentSchema?.name]\n\n const missingPresetInstructions = useMemo(() => {\n if (!documentPresets || !pathKey) {\n return undefined\n }\n const existingInstructions = existingField?.instructions\n const presetField = documentPresets.fields?.find((f) => f.path === pathKey)\n return presetField?.instructions?.filter(\n (i) => !existingInstructions?.some((ei) => ei._key === i._key),\n )\n }, [documentPresets, pathKey, existingField])\n\n // need this to not fire onChange twice in React strict mode\n const initialized = useRef(false)\n useEffect(() => {\n if (initialized.current || !pathKey) {\n return\n }\n if (existingField && !missingPresetInstructions?.length) {\n return\n }\n\n let event = PatchEvent.from([setIfMissing([], ['fields'])])\n if (!existingField) {\n event = event.append(\n insert(\n [\n typed<AssistField>({\n _key: pathKey,\n _type: assistFieldTypeName,\n path: pathKey,\n instructions: [],\n }),\n ],\n 'after',\n ['fields', -1],\n ),\n )\n }\n\n if (!existingField?.instructions?.length) {\n event = event.append([setIfMissing([], ['fields', {_key: pathKey}, 'instructions'])])\n }\n\n if (missingPresetInstructions?.length) {\n event = event.append(\n insert(\n missingPresetInstructions.map(\n (preset): StudioInstruction => ({\n ...preset,\n _type: 'sanity.assist.instruction',\n prompt: preset.prompt?.map((p) => ({markDefs: [], ...p})),\n }),\n ),\n 'after',\n ['fields', {_key: pathKey}, 'instructions', -1],\n ),\n )\n }\n onChange(event)\n initialized.current = true\n }, [activePath, onChange, pathKey, existingField, missingPresetInstructions])\n\n return null\n}\n","import {Box, Flex, Text} from '@sanity/ui'\nimport {useContext} from 'react'\nimport type {PreviewProps} from 'sanity'\n\nimport {InlineBlockValueContext} from '../../assistFormComponents/AssistInlineFormBlock'\nimport {useSelectedField} from '../../assistInspector/helpers'\nimport {SelectedFieldContext} from './SelectedFieldContext'\n\nexport function FieldRefPreview(props: PreviewProps & {path?: string}) {\n const {actions} = props\n const documentSchema = useContext(SelectedFieldContext)?.documentSchema\n // oxlint-disable-next-line no-unsafe-type-assertion\n const path = (useContext(InlineBlockValueContext) as {path?: string})?.path ?? props.path\n const selectedField = useSelectedField(documentSchema, path)\n return (\n <Flex gap={2} align=\"center\" style={{width: '100%'}}>\n <Flex flex={1} gap={2} align=\"center\" paddingY={3} paddingX={1}>\n <Box>\n <Text size={1} textOverflow=\"ellipsis\">\n {selectedField?.title ?? 'Select field'}\n </Text>\n </Box>\n </Flex>\n {/* oxlint-disable-next-line no-unsafe-type-assertion */}\n {actions as any}\n </Flex>\n )\n}\n","import type {FieldProps} from 'sanity'\n\nexport function HiddenFieldTitle(props: FieldProps) {\n return props.renderDefault({...props, title: '', level: props.level - 2, changed: false})\n}\n","import {Card, Flex, Switch, Text} from '@sanity/ui'\nimport {useCallback, useId} from 'react'\nimport {set, type StringInputProps, unset, useCurrentUser} from 'sanity'\n\nexport function InstructionVisibility(props: StringInputProps) {\n const {value, onChange} = props\n\n const user = useCurrentUser()\n\n const handleChange = useCallback(() => {\n const newValue = value ? '' : (user?.id ?? '')\n onChange(newValue ? set(newValue) : unset())\n }, [onChange, user, value])\n\n const id = useId()\n\n return (\n <Card>\n <Flex gap={2} align=\"flex-start\">\n <div style={{margin: '-3px 0'}}>\n <Switch\n {...props.elementProps}\n id={id}\n value={`${!value}`}\n checked={!value}\n onChange={handleChange}\n disabled={props.elementProps.readOnly}\n />\n </div>\n\n <Text muted size={1} weight=\"medium\">\n <label htmlFor={id}>Make visible to all Studio members</label>\n </Text>\n </Flex>\n </Card>\n )\n}\n","import {Box} from '@sanity/ui'\nimport {useCallback, useContext, useEffect, useId, useRef} from 'react'\nimport {set, type StringInputProps} from 'sanity'\n\nimport {FieldAutocomplete} from '../../../assistInspector/FieldAutocomplete'\nimport type {FieldRef} from '../../../assistInspector/helpers'\nimport {AssistTypeContext} from '../AssistTypeContext'\nimport {SelectedFieldContext} from '../SelectedFieldContext'\n\nexport function FieldRefPathInput(props: StringInputProps) {\n const documentSchema = useContext(SelectedFieldContext)?.documentSchema\n const {typePath} = useContext(AssistTypeContext)\n const ref = useRef<HTMLDivElement>(null)\n const id = useId()\n const {onChange} = props\n\n useEffect(() => {\n ref.current?.querySelector('input')?.focus()\n }, [])\n\n const onSelect = useCallback((path: string) => onChange(set(path)), [onChange])\n\n const filter = useCallback(\n (field: FieldRef) => {\n if (!field.key.includes('|') || !typePath) {\n return true\n }\n if (field.key.includes('|') && !typePath.includes('|')) {\n return false\n }\n\n const fieldSegments = field.key.split('.')\n const lastArrayItemIndex = fieldSegments.findLastIndex((s) => s.includes('|'))\n const mustStartWith = fieldSegments.slice(0, lastArrayItemIndex + 1).join('.')\n return typePath.startsWith(mustStartWith)\n },\n [typePath],\n )\n if (!documentSchema) {\n return props.renderDefault(props)\n }\n\n return (\n <Box flex={1} style={{minWidth: 300}} ref={ref}>\n <FieldAutocomplete\n id={id}\n schemaType={documentSchema}\n onSelect={onSelect}\n fieldPath={props.value}\n filter={filter}\n />\n </Box>\n )\n}\n","import type {FieldError, FieldMember, FieldSetMember, ObjectMember} from 'sanity'\n\nexport function findFieldMember(\n members: ObjectMember[],\n fieldName: string,\n): FieldMember | FieldError | undefined {\n return members.find(\n (m): m is FieldMember | FieldError =>\n (m.kind === 'field' && m.name === fieldName) ||\n (m.kind === 'error' && m.fieldName === fieldName),\n )\n}\n\nexport function findFieldsetMember(\n members: ObjectMember[],\n fieldsetName: string,\n): FieldSetMember | undefined {\n return members.find(\n (m): m is FieldSetMember => m.kind === 'fieldSet' && m.fieldSet.name === fieldsetName,\n )\n}\n","import {Box, Flex, Stack, Text} from '@sanity/ui'\nimport {useId, useMemo} from 'react'\nimport {type FieldError, type FieldMember, ObjectInputMember, type ObjectInputProps} from 'sanity'\n\nimport {findFieldMember, findFieldsetMember} from '../helpers'\n\nexport function InstructionInput(props: ObjectInputProps) {\n return (\n <Stack gap={[4, 4, 4, 5]}>\n <NameField {...props} />\n <ShareField {...props} />\n <ObjectMember fieldName={'prompt'} {...props} />\n <ObjectMember fieldName={'output'} {...props} />\n </Stack>\n )\n}\n\nfunction ObjectMember({fieldName, ...props}: ObjectInputProps & {fieldName: string}) {\n const member = findFieldMember(props.members, fieldName)\n return member ? <ObjectInputMember {...props} member={member} /> : null\n}\n\nconst NONE: (FieldMember | FieldError)[] = []\n\nfunction NameField(props: ObjectInputProps) {\n const fieldsetMember = findFieldsetMember(props.members, 'appearance')\n const titleId = useId()\n\n const members = fieldsetMember?.fieldSet.members ?? NONE\n const iconMember = findFieldMember(members, 'icon')\n const titleMember = findFieldMember(members, 'title')\n\n const titlePlaceholder = 'Untitled'\n const moddedTitleMember = useMemo(() => {\n if (!titleMember) {\n return undefined\n }\n if (titleMember.kind === 'error') {\n return titleMember\n }\n return {\n ...titleMember,\n field: {\n ...titleMember?.field,\n schemaType: {\n ...titleMember?.field.schemaType,\n placeholder: titlePlaceholder,\n },\n },\n }\n }, [titleMember, titlePlaceholder])\n\n return (\n <Stack gap={5}>\n <Stack gap={2}>\n <Flex gap={1}>\n <Text as=\"label\" weight=\"semibold\" size={1} htmlFor={titleId}>\n Name\n </Text>\n </Flex>\n\n <Text muted size={1}>\n How this instruction appears in menus\n </Text>\n\n <Flex align=\"center\">\n {iconMember && (\n <Box flex=\"none\">\n <ObjectInputMember {...props} member={iconMember} />\n </Box>\n )}\n {moddedTitleMember && (\n <Box flex={1} style={{marginLeft: -1}}>\n <ObjectInputMember {...props} member={moddedTitleMember} />\n </Box>\n )}\n </Flex>\n </Stack>\n </Stack>\n )\n}\n\nfunction ShareField(props: ObjectInputProps) {\n const fieldsetMember = findFieldsetMember(props.members, 'appearance')\n const members = fieldsetMember?.fieldSet.members ?? NONE\n const visibilityMember = findFieldMember(members, 'userId')\n\n return <>{visibilityMember && <ObjectInputMember {...props} member={visibilityMember} />}</>\n}\n","import {useCallback, useContext, useState} from 'react'\nimport {\n type ArrayFieldProps,\n type ArraySchemaType,\n isArrayOfObjectsSchemaType,\n isObjectSchemaType,\n type ObjectSchemaType,\n} from 'sanity'\n\nimport {SelectedFieldContext} from '../SelectedFieldContext'\n\nexport function InstructionOutputField(props: ArrayFieldProps) {\n const {fieldSchema} = useContext(SelectedFieldContext) ?? {}\n\n if (\n !fieldSchema ||\n !(isObjectSchemaType(fieldSchema) || isArrayOfObjectsSchemaType(fieldSchema))\n ) {\n return null\n }\n\n return (\n <EnabledOutputField {...props} fieldSchema={fieldSchema}>\n {props.children}\n </EnabledOutputField>\n )\n}\n\nfunction EnabledOutputField({\n fieldSchema,\n ...props\n}: ArrayFieldProps & {fieldSchema: ObjectSchemaType | ArraySchemaType<ObjectSchemaType>}) {\n const [open, setOpen] = useState(!!props.value?.length)\n const onExpand = useCallback(() => setOpen(true), [])\n const onCollapse = useCallback(() => setOpen(false), [])\n\n return props.renderDefault({\n ...props,\n collapsible: true,\n onExpand,\n onCollapse,\n collapsed: !open,\n level: 1,\n title: isObjectSchemaType(fieldSchema) ? 'Allowed fields' : 'Allowed types',\n })\n}\n","import {Card, Checkbox, Flex, Stack, Text} from '@sanity/ui'\nimport {useCallback, useContext, useEffect, useMemo} from 'react'\nimport {\n type ArrayOfObjectsInputProps,\n type ArraySchemaType,\n type FormPatch,\n insert,\n isArrayOfObjectsSchemaType,\n isObjectSchemaType,\n type ObjectSchemaType,\n PatchEvent,\n setIfMissing,\n typed,\n unset,\n} from 'sanity'\n\nimport {isAssistSupported} from '../../../helpers/assistSupported'\nimport {isType} from '../../../helpers/typeUtils'\nimport {type OutputFieldItem, outputFieldTypeName, type OutputTypeItem} from '../../../types'\nimport {SelectedFieldContext} from '../SelectedFieldContext'\n\nexport function InstructionOutputInput(props: ArrayOfObjectsInputProps) {\n const {fieldSchema} = useContext(SelectedFieldContext) ?? {}\n\n if (!fieldSchema) {\n return null\n }\n\n if (isObjectSchemaType(fieldSchema)) {\n return <ObjectOutputInput {...props} fieldSchema={fieldSchema} />\n }\n\n if (isArrayOfObjectsSchemaType(fieldSchema)) {\n return <ArrayOutputInput {...props} fieldSchema={fieldSchema} />\n }\n return null\n}\n\nfunction useEmptySelectAllValue(\n value: (OutputTypeItem | OutputFieldItem)[],\n allowedValues: {name: string}[],\n onChange: (patch: FormPatch | FormPatch[] | PatchEvent) => void,\n) {\n useEffect(() => {\n const validValues = value?.filter((v) =>\n allowedValues.find(\n (f) => f.name === (v._type === outputFieldTypeName ? v.relativePath : v.type),\n ),\n )\n const valueLength = value?.length ?? 0\n const validLength = validValues?.length ?? 0\n if ((!validLength && valueLength) || validLength >= allowedValues.length) {\n // if we end up here, we consider this a \"no selected fields/types\" selections. This should render and behave as all values selected.\n // we need this behaviour to accommodate new fields/types being added to the model, so they get visited by instructions without having to update the filter\n // when things have been explicitly selected, we let the selection remain as is\n onChange(PatchEvent.from([unset()]))\n }\n }, [allowedValues, value, onChange])\n}\n\nfunction ObjectOutputInput({\n fieldSchema,\n ...props\n}: ArrayOfObjectsInputProps & {fieldSchema: ObjectSchemaType}) {\n const {value, onChange} = props\n\n const fields = useMemo(\n () => fieldSchema.fields.filter((field) => isAssistSupported(field.type)),\n [fieldSchema.fields],\n )\n\n // oxlint-disable-next-line no-unsafe-type-assertion\n useEmptySelectAllValue(value as OutputTypeItem[], fields, onChange)\n\n const onSelectChange = useCallback(\n (checked: boolean, selectedValue: string) => {\n if (checked) {\n if (value?.length) {\n onChange(PatchEvent.from(unset([{_key: selectedValue}])))\n } else {\n // we went from empty array to everything selected but one\n const items = fields\n .filter((f) => f.name !== selectedValue)\n .map((field) =>\n typed<OutputFieldItem>({\n _key: field.name,\n _type: 'sanity.assist.output.field',\n relativePath: field.name,\n }),\n )\n onChange(PatchEvent.from([setIfMissing([]), insert(items, 'after', [-1])]))\n }\n } else {\n const patchValue: OutputFieldItem = {\n _key: selectedValue,\n _type: 'sanity.assist.output.field',\n relativePath: selectedValue,\n }\n onChange(PatchEvent.from([setIfMissing([]), insert([patchValue], 'after', [-1])]))\n }\n },\n [onChange, value, fields],\n )\n\n return (\n <Stack gap={2}>\n {fields.map((field) => {\n return (\n <Flex key={field.name} align=\"center\" gap={2}>\n <Selectable\n value={field.name}\n title={field.type.title ?? field.name}\n arrayValue={value}\n onChange={onSelectChange}\n />\n </Flex>\n )\n })}\n </Stack>\n )\n}\n\nfunction ArrayOutputInput({\n fieldSchema,\n ...props\n}: ArrayOfObjectsInputProps & {fieldSchema: ArraySchemaType}) {\n const {value, onChange} = props\n\n const ofItems = useMemo(\n () => fieldSchema.of.filter((itemType) => isAssistSupported(itemType)),\n [fieldSchema.of],\n )\n\n // oxlint-disable-next-line no-unsafe-type-assertion\n useEmptySelectAllValue(value as OutputTypeItem[], ofItems, onChange)\n\n const onSelectChange = useCallback(\n (checked: boolean, selectedValue: string) => {\n if (checked) {\n if (value?.length) {\n onChange(PatchEvent.from(unset([{_key: selectedValue}])))\n } else {\n // we went from empty array to everything selected but one\n const items = ofItems\n .filter((f) => f.name !== selectedValue)\n .map((field) =>\n typed<OutputTypeItem>({\n _key: field.name,\n _type: 'sanity.assist.output.type',\n type: field.name,\n }),\n )\n onChange(PatchEvent.from([setIfMissing([]), insert(items, 'after', [-1])]))\n }\n } else {\n const patchValue: OutputTypeItem = {\n _key: selectedValue,\n _type: 'sanity.assist.output.type',\n type: selectedValue,\n }\n onChange(PatchEvent.from([setIfMissing([]), insert([patchValue], 'after', [-1])]))\n }\n },\n [onChange, value, ofItems],\n )\n return (\n <Stack gap={2}>\n {ofItems.map((itemType) => {\n return (\n <Flex key={itemType.name}>\n <Selectable\n value={itemType.name}\n title={isType(itemType, 'block') ? 'Text' : (itemType.title ?? itemType.name)}\n arrayValue={value}\n onChange={onSelectChange}\n />\n </Flex>\n )\n })}\n </Stack>\n )\n}\n\nfunction Selectable({\n title,\n arrayValue,\n value,\n onChange,\n}: {\n title: string\n value: string\n arrayValue?: {_key: string}[]\n onChange: (checked: boolean, value: string) => void\n}) {\n const checked = !arrayValue?.length || !!arrayValue?.find((v) => v._key === value)\n const handleChange = useCallback(() => onChange(checked, value), [onChange, checked, value])\n\n return (\n <Flex gap={2} align=\"flex-start\">\n <Checkbox checked={checked} onChange={handleChange} />\n <Card marginTop={1} onClick={handleChange}>\n <Text style={{cursor: 'default'}} size={1}>\n {title}\n </Text>\n </Card>\n </Flex>\n )\n}\n","import {ArrowRightIcon} from '@sanity/icons/ArrowRight'\nimport {Box, Stack, Text} from '@sanity/ui'\nimport {useEffect} from 'react'\nimport {type ArrayOfObjectsInputProps, set, typed} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {randomKey} from '../../../_lib/randomKey'\nimport {instructionGuideUrl} from '../../../constants'\nimport type {PromptBlock, PromptTextBlock} from '../../../types'\n\nconst PteMods = styled(Box)`\n & [data-testid='pt-editor__toolbar-card'] > div > div:last-child {\n display: none;\n }\n & [data-testid='pt-editor'] {\n min-height: 300px;\n }\n & [data-testid='pt-editor'] .pt-inline-object * {\n max-width: 400px;\n }\n`\n\nexport function PromptInput(props: ArrayOfObjectsInputProps) {\n // quickfixes the model (converts blocks to inline blocks for alpha customers)\n // backend supports both types, but this prevents \"missing block\" schema errors\n useOnlyInlineBlocks(props)\n return (\n <PteMods>\n <Stack gap={3}>\n <Box paddingBottom={1}>\n <Text size={1} muted>\n Learn from{' '}\n <a href={instructionGuideUrl} target=\"_blank\" rel=\"noreferrer\">\n our instruction guide <ArrowRightIcon />\n </a>\n </Text>\n </Box>\n\n {props.renderDefault(props)}\n </Stack>\n </PteMods>\n )\n}\n\nfunction useOnlyInlineBlocks(props: ArrayOfObjectsInputProps) {\n useEffect(() => {\n let needsFix = false\n // oxlint-disable-next-line no-unsafe-type-assertion\n const val = ((props.value as PromptBlock[]) ?? []).map((block) => {\n if (block._type === 'block') {\n return block\n }\n\n needsFix = true\n return typed<PromptTextBlock>({\n _key: randomKey(12),\n _type: 'block',\n level: 0,\n markDefs: [],\n style: 'normal',\n children: [block],\n })\n })\n\n if (needsFix) {\n props.onChange(set(val))\n }\n // only run this once when loading the field\n // oxlint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n}\n","import type {ArrayFieldProps} from 'sanity'\n\nexport function InstructionsArrayField(props: ArrayFieldProps) {\n return props.renderDefault({\n ...props,\n title: ' ',\n })\n}\n","import {useMemo} from 'react'\nimport {type ArrayOfObjectsInputProps, useCurrentUser} from 'sanity'\n\nimport type {StudioInstruction} from '../../types'\n\nexport function InstructionsArrayInput(props: ArrayOfObjectsInputProps) {\n const user = useCurrentUser()\n\n // oxlint-disable-next-line no-unsafe-type-assertion\n const originalValue = props.value as StudioInstruction[] | undefined\n const originalMembers = props.members\n const value = useMemo(\n () => (originalValue ?? []).filter((v) => !v.userId || v.userId === user?.id),\n [originalValue, user],\n )\n const members = useMemo(\n () =>\n (originalMembers ?? []).filter((v) => {\n if (v.kind === 'error') {\n return true\n }\n // oxlint-disable-next-line no-unsafe-type-assertion\n const value = v?.item?.value as any\n return !value.userId || value.userId === user?.id\n }),\n [originalMembers, user],\n )\n return props.renderDefault({...props, value, members})\n}\n","import {Box} from '@sanity/ui'\nimport {useEffect, useRef} from 'react'\nimport type {ObjectInputProps} from 'sanity'\n\nexport function HideReferenceChangedBannerInput(props: ObjectInputProps) {\n const ref = useRef<HTMLDivElement>(null)\n\n // hides \"reference was changed\" banner (it is incorrectly flashing because the pane handler does not support the way wie use the assist pane)\n useEffect(() => {\n const parent = ref.current?.closest('[data-testid=\"pane-content\"]')\n if (!parent) {\n return\n }\n const style = document.createElement('style')\n const parentId = `id-${Math.random()}`.replace('.', '-')\n parent.id = parentId\n\n style.innerText = `\n #${parentId} [data-testid=\"reference-changed-banner\"] { display: none; }\n `\n parent.prepend(style)\n }, [ref])\n\n return <Box ref={ref}>{props.renderDefault(props)}</Box>\n}\n","import {DocumentTextIcon} from '@sanity/icons/DocumentText'\nimport {TokenIcon} from '@sanity/icons/Token'\nimport {defineArrayMember, defineField, defineType} from 'sanity'\n\nimport {HideReferenceChangedBannerInput} from '../components/HideReferenceChangedBannerInput'\nimport {contextDocumentTypeName} from '../types'\n\nexport const contextDocumentSchema = defineType({\n type: 'document',\n name: contextDocumentTypeName,\n title: 'AI context',\n liveEdit: true,\n icon: TokenIcon,\n components: {\n input: HideReferenceChangedBannerInput,\n },\n fields: [\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n }),\n defineField({\n name: 'context',\n type: 'array',\n title: 'Context',\n of: [\n defineArrayMember({\n type: 'block',\n styles: [{title: 'Normal', value: 'normal'}],\n lists: [],\n marks: {\n decorators: [],\n annotations: [],\n },\n }),\n ],\n }),\n ],\n preview: {\n select: {\n title: 'title',\n context: 'context',\n },\n prepare({title, context}) {\n const text = context\n ?.flatMap((block: any) => block?.children)\n .flatMap((child: any) => child?.text?.split(' '))\n .filter(Boolean)\n const words = text?.length ?? 0\n return {\n title,\n subtitle: `Words: ${words}`,\n media: DocumentTextIcon,\n }\n },\n },\n})\n","import {Icon, type IconSymbol} from '@sanity/icons'\nimport {CodeIcon} from '@sanity/icons/Code'\nimport {ComposeIcon} from '@sanity/icons/Compose'\nimport {LockIcon} from '@sanity/icons/Lock'\nimport {SparklesIcon} from '@sanity/icons/Sparkles'\nimport {ThListIcon} from '@sanity/icons/ThList'\nimport {Box, Flex, Stack, Text, Tooltip} from '@sanity/ui'\nimport {isValidElement} from 'react'\nimport {defineArrayMember, defineField, defineType, type ObjectSchemaType} from 'sanity'\n\nimport {AssistDocumentForm} from '../assistDocument/components/AssistDocumentForm'\nimport {FieldRefPreview} from '../assistDocument/components/FieldRefPreview'\nimport {HiddenFieldTitle} from '../assistDocument/components/generic/HiddenFieldTitle'\nimport {IconInput} from '../assistDocument/components/instruction/appearance/IconInput'\nimport {InstructionVisibility} from '../assistDocument/components/instruction/appearance/InstructionVisibility'\nimport {FieldRefPathInput} from '../assistDocument/components/instruction/FieldRefInput'\nimport {InstructionInput} from '../assistDocument/components/instruction/InstructionInput'\nimport {InstructionOutputField} from '../assistDocument/components/instruction/InstructionOutputField'\nimport {InstructionOutputInput} from '../assistDocument/components/instruction/InstructionOutputInput'\nimport {PromptInput} from '../assistDocument/components/instruction/PromptInput'\nimport {InstructionsArrayField} from '../assistDocument/components/InstructionsArrayField'\nimport {InstructionsArrayInput} from '../assistDocument/components/InstructionsArrayInput'\nimport {createFieldRefCache} from '../assistLayout/fieldRefCache'\nimport {getInstructionTitle} from '../helpers/misc'\nimport {\n assistDocumentIdPrefix,\n assistDocumentTypeName,\n assistFieldTypeName,\n assistTasksStatusTypeName,\n fieldReferenceTypeName,\n instructionContextTypeName,\n instructionTaskTypeName,\n instructionTypeName,\n outputFieldTypeName,\n outputTypeTypeName,\n promptTypeName,\n userInputTypeName,\n} from '../types'\nimport {contextDocumentSchema} from './contextDocumentSchema'\n\nexport const fieldReference = defineType({\n type: 'object',\n name: fieldReferenceTypeName,\n title: 'Field',\n icon: ThListIcon,\n\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Field',\n components: {\n input: FieldRefPathInput,\n },\n validation: (rule) => {\n const getForSchemaType = createFieldRefCache()\n return rule.custom((value, context) => {\n if (!value) {\n return 'Please select a field'\n }\n try {\n const docId = context.document?._id\n if (!docId) {\n return `Field reference cannot be used outside document inspector context. Could not resolve document id.`\n }\n const targetDocType = docId.replace(new RegExp(`^${assistDocumentIdPrefix}`), '')\n const schema = context.schema.get(targetDocType)\n if (!schema) {\n return `Field reference cannot be used outside document inspector context. Could not resolve schema: ${targetDocType}`\n }\n // oxlint-disable-next-line no-unsafe-type-assertion\n const {fieldRefs} = getForSchemaType(schema as ObjectSchemaType)\n const fieldRef = fieldRefs.find((r) => r.key === value)\n if (!fieldRef) {\n return `Field with path \"${value}\" does not exist in the schema.`\n }\n return true\n } catch (e) {\n console.error('Failed to resolve field reference', e)\n return 'Invalid field reference.'\n }\n })\n },\n }),\n ],\n preview: {\n select: {\n path: 'path',\n },\n prepare({path}) {\n return {\n title: path,\n path,\n icon: CodeIcon,\n }\n },\n },\n components: {\n preview: FieldRefPreview,\n },\n options: {\n modal: {\n type: 'popover',\n },\n },\n})\n\nexport const userInput = defineType({\n type: 'object',\n name: userInputTypeName,\n title: 'User input',\n icon: ComposeIcon,\n fields: [\n defineField({\n type: 'string',\n name: 'message',\n title: 'User input title',\n placeholder: 'Provide instruction text',\n description: 'The header above the user input text field',\n validation: (rule) => rule.required(),\n }),\n defineField({\n type: 'text',\n rows: 3,\n name: 'description',\n title: 'User input description',\n description: 'The description above the user input text field',\n }),\n ],\n preview: {\n select: {\n title: 'message',\n },\n },\n options: {\n modal: {\n type: 'popover',\n width: 1,\n },\n },\n})\n\nexport const promptContext = defineType({\n type: 'object',\n name: instructionContextTypeName,\n title: contextDocumentSchema.title,\n icon: contextDocumentSchema.icon,\n fields: [\n defineField({\n type: 'reference',\n name: 'reference',\n to: [{type: contextDocumentSchema.name}],\n title: 'Context',\n description: 'The referenced context will be inserted into the instruction',\n validation: (rule) => rule.required(),\n components: {\n input: function Fix(props) {\n return <Box style={{maxWidth: 300}}>{props.renderDefault(props)}</Box>\n },\n },\n }),\n ],\n preview: {\n select: {\n ref: 'reference._id',\n title: 'reference.title',\n context: 'reference.context',\n },\n prepare(select) {\n return select.ref\n ? (contextDocumentSchema?.preview?.prepare?.(select) ?? select)\n : {title: 'No reference selected', media: contextDocumentSchema.icon}\n },\n },\n options: {\n modal: {\n type: 'popover',\n width: 'auto',\n },\n },\n})\n\nexport const prompt = defineType({\n type: 'array',\n name: promptTypeName,\n title: 'Prompt',\n of: [\n defineArrayMember({\n type: 'block',\n styles: [{title: 'Normal', value: 'normal'}],\n lists: [],\n marks: {\n decorators: [],\n annotations: [],\n },\n of: [\n defineArrayMember({\n type: fieldReference.name,\n }),\n defineArrayMember({\n type: promptContext.name,\n }),\n defineArrayMember({\n type: userInput.name,\n }),\n ],\n }),\n /* defineArrayMember({\n type: fieldReference.name,\n }),\n defineArrayMember({\n type: promptContext.name,\n }),\n defineArrayMember({\n type: userInput.name,\n }),*/\n ],\n})\n\nexport const outputFieldType = defineType({\n type: 'object',\n name: outputFieldTypeName,\n title: 'Output field',\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Path',\n }),\n ],\n})\n\nexport const outputTypeType = defineType({\n type: 'object',\n name: outputTypeTypeName,\n title: 'Output type',\n fields: [\n defineField({\n type: 'string',\n name: 'type',\n title: 'Type',\n }),\n ],\n})\n\nexport const instruction = defineType({\n type: 'object',\n name: instructionTypeName,\n title: 'Instruction',\n fieldsets: [\n {name: 'appearance', title: 'Appearance', options: {collapsible: true, collapsed: true}},\n ],\n preview: {\n select: {\n icon: 'icon',\n title: 'title',\n userId: 'userId',\n },\n prepare: ({icon, title, userId}) => {\n return {\n title,\n // oxlint-disable-next-line no-unsafe-type-assertion\n icon: icon ? <Icon symbol={icon as IconSymbol} /> : SparklesIcon,\n userId,\n }\n },\n },\n components: {\n input: InstructionInput,\n preview: (props: any) => {\n // `icon` from `prepare` is either a rendered element (<Icon symbol={...} />) or a\n // component (the SparklesIcon fallback), so it cannot be rendered as <IconValue /> directly\n const IconValue = props.icon\n const icon = isValidElement(IconValue) ? IconValue : IconValue ? <IconValue /> : null\n return (\n <Flex gap={3} align=\"center\" padding={2}>\n {icon ? (\n <Box flex=\"none\">\n <Text size={1}>{icon}</Text>\n </Box>\n ) : null}\n\n <Stack flex={1} gap={2}>\n <Text size={1} textOverflow=\"ellipsis\" weight=\"medium\">\n {getInstructionTitle(props)}\n </Text>\n </Stack>\n\n {props.userId && (\n <Text size={1}>\n <Tooltip\n content={<Text size={1}>Only visible to you</Text>}\n padding={2}\n placement=\"top\"\n portal\n >\n <LockIcon />\n </Tooltip>\n </Text>\n )}\n </Flex>\n )\n },\n },\n fields: [\n defineField({\n type: prompt.name,\n name: 'prompt',\n title: 'Instruction',\n components: {\n input: PromptInput,\n },\n }),\n defineField({\n type: 'string',\n name: 'icon',\n title: 'Icon',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n input: IconInput,\n },\n }),\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n },\n }),\n defineField({\n type: 'string',\n name: 'userId',\n title: 'Visibility',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n input: InstructionVisibility,\n },\n initialValue: (_params, context) => context.currentUser?.id ?? '',\n readOnly: (context) =>\n Boolean(\n context.parent?.createdById && context.parent?.createdById !== context.currentUser?.id,\n ),\n }),\n defineField({\n type: 'string',\n name: 'createdById',\n title: 'Created by',\n hidden: true,\n fieldset: 'appearance',\n initialValue: (_params, context) => {\n return context.currentUser?.id ?? ''\n },\n }),\n defineField({\n type: 'array',\n name: 'output',\n title: 'Output filter',\n components: {\n input: InstructionOutputInput,\n field: InstructionOutputField,\n },\n of: [\n defineArrayMember({type: outputFieldType.name}),\n defineArrayMember({type: outputTypeType.name}),\n ],\n }),\n ],\n})\n\nexport const fieldInstructions = defineType({\n type: 'object',\n name: assistFieldTypeName,\n title: 'Field prompt',\n /* components: {\n input: FieldPromptInput,\n },*/\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Path',\n readOnly: true,\n hidden: true,\n }),\n defineField({\n type: 'array',\n name: 'instructions',\n title: 'Instructions',\n of: [{type: instruction.name}],\n components: {\n field: InstructionsArrayField,\n input: InstructionsArrayInput,\n },\n }),\n ],\n preview: {\n select: {\n title: 'path',\n },\n },\n})\n\nexport const assistDocumentSchema = defineType({\n //NOTE: this is a document type. Using object here ensures it does not appear in structure menus\n type: 'object',\n //workaround for using object and not document\n // oxlint-disable-next-line no-unsafe-type-assertion\n ...({liveEdit: true} as any),\n name: assistDocumentTypeName,\n title: 'AI Document',\n\n components: {\n input: AssistDocumentForm,\n field: (props: any) => {\n return props.renderDefault({...props, title: ''})\n },\n },\n fields: [\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n }),\n defineField({\n type: 'array',\n name: 'fields',\n title: 'Fields',\n of: [{type: fieldInstructions.name}],\n }),\n ],\n preview: {\n select: {\n title: 'title',\n },\n },\n})\n\nexport const instructionTask = defineType({\n type: 'object',\n name: instructionTaskTypeName,\n title: 'Instruction task',\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Path',\n }),\n defineField({\n type: 'string',\n name: 'instructionKey',\n title: 'Instruction key',\n }),\n defineField({\n type: 'datetime',\n name: 'started',\n title: 'Started',\n }),\n defineField({\n type: 'datetime',\n name: 'updated',\n title: 'Updated',\n }),\n defineField({\n type: 'string',\n name: 'info',\n title: 'Info',\n }),\n ],\n})\n\nexport const documentInstructionStatus = defineType({\n //NOTE: this is a document type. Using object here ensures it does not appear in structure menus\n type: 'object',\n //workaround for using object and not document\n // oxlint-disable-next-line no-unsafe-type-assertion\n ...({liveEdit: true} as any),\n name: assistTasksStatusTypeName,\n title: 'Document instruction status',\n fields: [\n defineField({\n type: 'array',\n name: 'tasks',\n title: 'Tasks',\n of: [{type: instructionTask.name}],\n }),\n ],\n})\n","import type {ArrayOfType, FieldProps, SchemaTypeDefinition} from 'sanity'\n\nimport {\n assistDocumentSchema,\n documentInstructionStatus,\n fieldInstructions,\n fieldReference,\n instruction,\n instructionTask,\n outputFieldType,\n outputTypeType,\n prompt,\n promptContext,\n userInput,\n} from './assistDocumentSchema'\nimport {contextDocumentSchema} from './contextDocumentSchema'\n\nfunction excludeComments<T extends SchemaTypeDefinition | ArrayOfType>(type: T): T {\n // oxlint-disable-next-line no-unsafe-type-assertion\n const existingRender = (type as any)?.components?.field\n return {\n ...type,\n ...('components' in type\n ? {\n components: {\n ...type.components,\n field: (props: FieldProps) => {\n const newProps = {...props, __internal_comments: undefined}\n if (typeof existingRender === 'function') {\n return existingRender(newProps)\n }\n return props.renderDefault(newProps)\n },\n },\n }\n : {}),\n ...('fields' in type\n ? {\n // recursively disable comments in fields\n fields: type.fields?.map((field) => excludeComments(field)),\n }\n : {}),\n ...('of' in type\n ? {\n // recursively disable comments in array items\n of: type.of?.map((arrayItemType) => excludeComments(arrayItemType)),\n }\n : {}),\n }\n}\n\nconst instructionForm = [\n fieldInstructions,\n instruction,\n fieldReference,\n prompt,\n userInput,\n promptContext,\n].map(excludeComments)\n\nexport const schemaTypes = [\n ...instructionForm,\n outputFieldType,\n outputTypeType,\n assistDocumentSchema,\n documentInstructionStatus,\n instructionTask,\n contextDocumentSchema,\n]\n","import type {SanityClient} from '@sanity/client'\nimport {definePlugin, isObjectSchemaType} from 'sanity'\n\nimport {AssistDocumentInputWrapper} from './assistDocument/AssistDocumentInput'\nimport {AssistDocumentLayout} from './assistDocument/AssistDocumentLayout'\nimport {AssistFieldWrapper} from './assistFormComponents/AssistField'\nimport {AssistFormBlock} from './assistFormComponents/AssistFormBlock'\nimport {AssistInlineFormBlock} from './assistFormComponents/AssistInlineFormBlock'\nimport {AssistItem} from './assistFormComponents/AssistItem'\nimport {assistInspector} from './assistInspector'\nimport {AssistLayout} from './assistLayout/AssistLayout'\nimport type {AssistConfig} from './assistTypes'\nimport {ImageContextProvider} from './components/ImageContext'\nimport {SafeValueInput} from './components/SafeValueInput'\nimport {packageName} from './constants'\nimport {assistFieldActions} from './fieldActions/assistFieldActions'\nimport type {AssistFieldActionNode, AssistFieldActionProps} from './fieldActions/customFieldActions'\nimport {isSchemaAssistEnabled} from './helpers/assistSupported'\nimport {validateStyleguide} from './helpers/styleguide'\nimport {isImage} from './helpers/typeUtils'\nimport {createAssistDocumentPresence} from './presence/AssistDocumentPresence'\nimport {schemaTypes} from './schemas'\nimport type {TranslationConfig} from './translate/types'\nimport {assistDocumentTypeName, type AssistPreset} from './types'\n\nexport interface AssistPluginConfig {\n translate?: TranslationConfig\n\n /**\n * Config that affects all instructions\n */\n assist?: AssistConfig\n\n fieldActions?: {\n title?: string\n /**\n * The returned array can include `undefined` entries in the action array. These will be filtered out.\n */\n useFieldActions?: (props: AssistFieldActionProps) => (AssistFieldActionNode | undefined)[]\n }\n\n /**\n * @internal\n */\n __customApiClient?: (defaultClient: SanityClient) => SanityClient\n\n /**\n * @internal\n */\n __presets?: Record<string, AssistPreset>\n}\n\nexport const assist = definePlugin<AssistPluginConfig | void>((config) => {\n const configWithDefaults = config ?? {}\n const styleguide = configWithDefaults.translate?.styleguide || ''\n const maxPathDepth = configWithDefaults.assist?.maxPathDepth\n const temperature = configWithDefaults.assist?.temperature\n\n if (typeof styleguide === 'string') {\n validateStyleguide(styleguide)\n }\n\n if (maxPathDepth !== undefined && (maxPathDepth < 1 || maxPathDepth > 12)) {\n throw new Error(\n `[${packageName}]: \\`assist.maxPathDepth\\` must be be in the range [1,12] inclusive, but was ${maxPathDepth}`,\n )\n }\n\n if (temperature !== undefined && (temperature < 0 || temperature > 1)) {\n throw new Error(\n `[${packageName}]: \\`assist.temperature\\` must be in the range [0,1] inclusive, but was ${temperature}`,\n )\n }\n\n return {\n name: packageName,\n // the addition of global references broke auto updating studios\n // new versions of studio know to look for this prop on assist plugin, and filter + console.warn if it is missing\n // oxlint-disable-next-line no-unsafe-type-assertion\n ...({handlesGDR: true} as any),\n schema: {\n types: schemaTypes,\n },\n i18n: {\n bundles: [{}],\n },\n\n document: {\n inspectors: (prev, context) => {\n const documentType = context.documentType\n const docSchema = context.schema.get(documentType)\n if (docSchema && isSchemaAssistEnabled(docSchema)) {\n return [...prev, assistInspector]\n }\n return prev\n },\n unstable_fieldActions: (prev, {documentType, schema}) => {\n if (documentType === assistDocumentTypeName) {\n return []\n }\n const docSchema = schema.get(documentType)\n if (docSchema && isSchemaAssistEnabled(docSchema)) {\n return [...prev, assistFieldActions]\n }\n return prev\n },\n unstable_languageFilter: (prev, {documentId, schema, schemaType}) => {\n if (schemaType === assistDocumentTypeName) {\n return []\n }\n const docSchema = schema.get(schemaType)\n if (docSchema && isObjectSchemaType(docSchema) && isSchemaAssistEnabled(docSchema)) {\n return [...prev, createAssistDocumentPresence(documentId)]\n }\n return prev\n },\n components: {\n unstable_layout: AssistDocumentLayout,\n },\n },\n\n studio: {\n components: {\n layout: function Layout(props) {\n return <AssistLayout {...props} config={configWithDefaults} />\n },\n },\n },\n\n form: {\n components: {\n input: AssistDocumentInputWrapper,\n field: AssistFieldWrapper,\n item: AssistItem,\n block: AssistFormBlock,\n inlineBlock: AssistInlineFormBlock,\n },\n },\n\n plugins: [\n definePlugin({\n name: `${packageName}/safe-value-input`,\n form: {components: {input: SafeValueInput}},\n })(),\n\n definePlugin({\n name: `${packageName}/generate-caption`,\n form: {\n components: {\n input: (props) => {\n const {schemaType} = props\n\n if (isImage(schemaType)) {\n return <ImageContextProvider {...props} />\n }\n return props.renderDefault(props)\n },\n },\n },\n })(),\n ],\n }\n})\n","import type {SanityClient} from '@sanity/client'\nimport {defer, delay, merge, Observable, of, partition, switchMap, throwError} from 'rxjs'\nimport {exhaustMapToWithTrailing} from 'rxjs-exhaustmap-with-trailing'\nimport {filter, mergeMap, share, take} from 'rxjs/operators'\nimport type {MutationEvent, ReconnectEvent, WelcomeEvent} from 'sanity'\n\n/** @internal */\nexport type ListenQueryParams = Record<string, string | number | boolean | string[]>\n\n/** @beta */\nexport interface ListenQueryOptions {\n tag?: string\n apiVersion?: string\n throttleTime?: number\n transitions?: ('update' | 'appear' | 'disappear')[]\n}\n\nconst fetch = (\n client: SanityClient,\n query: string,\n params: ListenQueryParams,\n options: ListenQueryOptions,\n) =>\n defer(() =>\n // getVersionedClient(options.apiVersion)\n client.observable.fetch(query, params, {\n tag: options.tag,\n filterResponse: true,\n }),\n )\n\nconst listen = (\n client: SanityClient,\n query: string,\n params: ListenQueryParams,\n options: ListenQueryOptions,\n) =>\n // oxlint-disable-next-line no-unsafe-type-assertion\n defer(() =>\n // getVersionedClient(options.apiVersion)\n client.listen(query, params, {\n events: ['welcome', 'mutation', 'reconnect'],\n includeResult: false,\n visibility: 'query',\n tag: options.tag,\n }),\n ) as Observable<ReconnectEvent | WelcomeEvent | MutationEvent>\n\nfunction isWelcomeEvent(\n event: MutationEvent | ReconnectEvent | WelcomeEvent,\n): event is WelcomeEvent {\n return event.type === 'welcome'\n}\n\n/** @internal */\nexport const listenQuery = (\n client: SanityClient,\n query: string | {fetch: string; listen: string},\n params: ListenQueryParams = {},\n options: ListenQueryOptions = {},\n) => {\n const fetchQuery = typeof query === 'string' ? query : query.fetch\n const listenerQuery = typeof query === 'string' ? query : query.listen\n\n const fetchOnce$ = fetch(client, fetchQuery, params, options)\n\n const events$ = listen(client, listenerQuery, params, options).pipe(\n mergeMap((ev, i) => {\n const isFirst = i === 0\n if (isFirst && !isWelcomeEvent(ev)) {\n // if the first event is not welcome, it is most likely a reconnect and\n // if it's not a reconnect something is very wrong\n // oxlint-disable-next-line no-deprecated\n return throwError(\n new Error(\n ev.type === 'reconnect'\n ? 'Could not establish EventSource connection'\n : `Received unexpected type of first event \"${ev.type}\"`,\n ),\n )\n }\n return of(ev)\n }),\n share(),\n )\n\n const [welcome$, mutationAndReconnect$] = partition(events$, isWelcomeEvent)\n const isRelevantEvent = (event: MutationEvent | ReconnectEvent | WelcomeEvent): boolean => {\n if (!options.transitions || event.type !== 'mutation') {\n return true\n }\n\n return options.transitions.includes(event.transition)\n }\n\n return merge(\n welcome$.pipe(take(1)),\n mutationAndReconnect$.pipe(\n filter(isRelevantEvent),\n switchMap((event) => merge(of(event), of(event).pipe(delay(options.throttleTime || 1000)))),\n ),\n ).pipe(exhaustMapToWithTrailing(fetchOnce$))\n}\n","import {useEffect, useRef, useState} from 'react'\nimport isEqual from 'react-fast-compare'\nimport {of} from 'rxjs'\nimport {catchError, distinctUntilChanged} from 'rxjs/operators'\nimport {type ListenQueryOptions, useClient} from 'sanity'\n\nimport {listenQuery} from './fixedListenQuery'\n\ntype Params = Record<string, string | number | boolean | string[]>\n\ntype ReturnShape<T> = {\n loading: boolean\n error: boolean\n data: T | null\n}\n\ntype Observable = {\n unsubscribe: () => void\n}\n\nconst DEFAULT_PARAMS = {}\nconst DEFAULT_OPTIONS: ListenQueryOptions = {apiVersion: `v2022-05-09`}\n\nexport function useListeningQuery<T>(\n query: string,\n params: Params = DEFAULT_PARAMS,\n options: ListenQueryOptions = DEFAULT_OPTIONS,\n): ReturnShape<T> {\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState(false)\n const [data, setData] = useState<T | null>(null)\n const subscription = useRef<null | Observable>(null)\n\n const client = useClient({apiVersion: `v2022-05-09`})\n\n useEffect(() => {\n if (query) {\n subscription.current = listenQuery(client, query, params, options)\n .pipe(\n distinctUntilChanged(isEqual),\n catchError((err) => {\n console.error(err)\n setError(true)\n setLoading(false)\n setData(null)\n\n return of(null)\n }),\n )\n .subscribe((documents) => {\n setData((current) => (isEqual(current, documents) ? current : documents))\n setLoading(false)\n setError(false)\n })\n }\n\n return () => {\n return subscription.current ? subscription.current.unsubscribe() : undefined\n }\n }, [query, params, options, client])\n\n return {loading, error, data}\n}\n","import {SyncIcon} from '@sanity/icons/Sync'\nimport {Box, Button, Card, Flex, Label, Spinner, Stack} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {useClient, useSchema} from 'sanity'\n\nimport {useListeningQuery} from '../../_lib/useListeningQuery'\nimport {assistSerializedTypeName, type SerializedSchemaType} from '../../types'\nimport {serializeSchema} from './serializeSchema'\n\nconst NO_DATA: SerializedSchemaType[] = []\n\nconst defaultTitle = 'Sync schema'\n\nexport function SchemaTypeTool() {\n const schema = useSchema()\n const client = useClient({apiVersion: '2023-01-01'})\n const [saving, setSaving] = useState(false)\n const [syncTitle, setSyncTitle] = useState(defaultTitle)\n\n const {data} = useListeningQuery<SerializedSchemaType[]>('*[_type==$type] | order(_type)', {\n type: assistSerializedTypeName,\n })\n\n const types = useMemo(() => {\n return serializeSchema(schema)\n }, [schema])\n\n const storeTypes = useCallback(() => {\n setSaving(true)\n let canSave = true\n async function store() {\n setSyncTitle(`Syncing 0/${types.length}`)\n const transaction = client.transaction()\n for (let i = 0; i < types.length; i++) {\n if (!canSave) {\n break\n }\n const type = types[i]!\n // oxlint-disable-next-line no-await-in-loop, no-unsafe-type-assertion, await-thenable\n await transaction.createOrReplace(type as Required<typeof type>)\n if (i > 0 && i % 50 === 0) {\n // oxlint-disable-next-line no-await-in-loop\n await transaction.commit()\n transaction.reset()\n setSyncTitle(`Syncing ${i}/${types.length}`)\n }\n }\n await transaction.commit()\n }\n store()\n .catch(console.error)\n .finally(() => {\n setSaving(false)\n setSyncTitle(defaultTitle)\n })\n return () => {\n canSave = false\n setSaving(false)\n setSyncTitle(defaultTitle)\n }\n }, [types, client, setSaving, setSyncTitle])\n\n return (\n <Card padding={4} overflow=\"auto\" style={{height: 'calc(100vh - 81px)'}}>\n <Stack gap={4}>\n <Box>\n <Button\n icon={saving ? <Spinner style={{marginTop: 5}} /> : SyncIcon}\n text={syncTitle}\n disabled={saving}\n onClick={storeTypes}\n />\n </Box>\n <Flex gap={2}>\n <Stack gap={2}>\n <Label>Studio schema</Label>\n <ul>\n {types.map((type) => (\n <li key={type.name}>\n <SchemaEntry schemaStub={type} />\n </li>\n ))}\n </ul>\n </Stack>\n\n <Stack gap={2}>\n <Label>Stored schema</Label>\n <ul>\n {(data ?? NO_DATA).map((type) => (\n <li key={type.name}>\n <SchemaEntry schemaStub={type} />\n </li>\n ))}\n </ul>\n </Stack>\n </Flex>\n </Stack>\n </Card>\n )\n}\n\nfunction SchemaEntry({schemaStub}: {schemaStub: SerializedSchemaType}) {\n const out = useMemo(() => JSON.stringify(schemaStub, null, 2), [schemaStub])\n return <pre>{out}</pre>\n}\n","import {useRunInstruction} from '../assistLayout/RunInstructionProvider'\n\nexport type GetUserInput = (args: {\n /**\n * Dialog title\n */\n title: string\n /**\n * One titled input per array item\n */\n inputs: CustomInput[]\n}) => Promise<CustomInputResult[] | undefined>\n\n/**\n *\n */\nexport interface CustomInput {\n /**\n * Id for the input\n */\n id: string\n /**\n * Title of the input field\n */\n title: string\n /**\n * Additional info that will be displayed over the input\n */\n description?: string\n}\n\nexport type CustomInputResult = {\n /**\n * Identifies which custom input the `result`belongs to\n */\n input: CustomInput\n\n /**\n * The text provided by the user in the input\n */\n result: string\n}\n\n/**\n * `useUserInput` returns a function that can be used to await user input.\n *\n * Useful for custom `fieldActions` to get user input for populating Agent Action requests,.\n *\n * ```ts\n * fieldActions: {\n * useFieldActions: (props) => {\n * const {\n * documentSchemaType,\n * schemaId,\n * getDocumentValue,\n * getConditionalPaths,\n * documentIdForAction,\n * } = props\n * const client = useClient({apiVersion: 'vX'})\n * const getUserInput = useUserInput()\n * return useMemo(() => {\n * return [\n * defineAssistFieldAction({\n * title: 'Log user input',\n * icon: UserIcon,\n * onAction: async () => {\n * const input = await getUserInput({\n * title: 'Topic',\n * inputs: [{id: 'about', title: 'What should the article be about?'}],\n * })\n * if (!input) return // user canceled input\n * await client.agent.action.generate({\n * schemaId,\n * targetDocument: {\n * operation: 'createIfNotExists',\n * _id: documentIdForAction,\n * _type: documentSchemaType.name,\n * initialValues: getDocumentValue(),\n * },\n * instruction: `\n * Create a document about the following topic:\n * $about\n * ---\n * `,\n * instructionParams: {about: input[0].result},\n * conditionalPaths: {paths: getConditionalPaths()},\n * })\n * },\n * }),\n * ]\n * }, [\n * client,\n * documentSchemaType,\n * schemaId,\n * getDocumentValue,\n * getConditionalPaths,\n * documentIdForAction,\n * getUserInput,\n * ])\n * },\n * }\n * ```\n */\nexport function useUserInput(): GetUserInput {\n const {getUserInput} = useRunInstruction()\n return getUserInput\n}\n"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","names":["hasOverflowScroll","el","HTMLElement","overflow","getComputedStyle","includes","useEffect","useMemo","useRef","useState","hasOverflowScroll","Rect","Scroll","useRegionRects","$","_c","ref","relativeBoundsRect","setRelativeBoundsRect","relativeElementRect","setRelativeElementRect","t0","Symbol","for","x","y","boundsScroll","setBoundsScroll","t1","scroll","setScroll","boundsScrollXRef","boundsScrollYRef","elementScrollXRef","elementScrollYRef","t2","t3","el","current","scrollParents","parent","parentElement","document","body","push","handleResize","scrollParent","boundsRect","getBoundingClientRect","width","window","innerWidth","height","innerHeight","domRect","w","h","handleScroll","scrollX","scrollY","scrollParent_0","scrollLeft","scrollTop","scrollParent_1","addEventListener","passive","ro","ResizeObserver","observe","scrollParent_2","unobserve","scrollParent_3","removeEventListener","disconnect","t4","bounds","t5","element","t6","HTMLProps","useEffect","ConnectorRegionRects","useRegionRects","ConnectorRegion","props","$","_c","children","onRectsChange","restProps","bounds","element","ref","t0","t1","t2","createContext","ConnectorsStore","ConnectorsStoreContext","useContext","ConnectorsStore","ConnectorsStoreContext","useConnectorsStore","store","Error","HTMLProps","useEffect","useState","ConnectorRegion","ConnectorRegionRects","useConnectorsStore","ConnectFromRegion","props","$","_c","children","key","restProps","zIndex","_key","store","rects","setRects","t0","from","subscribe","t1","t2","next","t3","t4","Connector","ConnectorRegionRects","ConnectorsStore","connectors","subscribe","observer","from","key","payload","Record","next","rects","to","createConnectorsStore","configKeys","fieldKeys","channels","Map","payloads","observers","notifyObservers","toRects","get","toPayload","fromRects","fromPayload","push","set","delete","idx","indexOf","splice","includes","ReactNode","useEffect","useMemo","ConnectorsStore","createConnectorsStore","ConnectorsStoreContext","Connector","ConnectorsProvider","props","$","_c","children","onConnectorsChange","t0","Symbol","for","store","t1","t2","connectors","subscribe","t3","ConnectorLine","ConnectorLinePoint","ConnectorOptions","ConnectorRegionRects","Rect","getConnectorLinePoint","options","rect","bounds","centerY","y","h","isAbove","arrow","marginY","isBelow","x","startY","path","endY","outOfBounds","mapConnectorToLine","connector","from","to","fromBounds","threshold","w","element","fromBottom","toBounds","toBottom","maxStartY","Math","max","min","useMemo","Path","pathToString","documentRootKey","StudioInstruction","usePathKey","path","$","_c","t0","getPathKey","length","Array","isArray","getInstructionTitle","instruction","title","isDefined","t","T","undefined","ArraySchemaType","ImageOptions","SchemaType","isPortableTextArray","type","of","find","t","isType","schemaType","typeName","name","isImage","getDescriptionFieldOption","path","updateOnImageChange","undefined","descriptionField","options","aiAssist","imageDescriptionField","getImageInstructionFieldOption","imageInstructionField","ReferenceOptions","SchemaType","AssistOptions","isType","isSchemaAssistEnabled","type","options","aiAssist","exclude","isAssistSupported","isDisabled","jsonType","unsupportedArray","of","every","t","unsupportedObject","fields","field","isUnsupportedType","name","embeddingsIndex","createContext","PropsWithChildren","useMemo","FieldMember","ObjectInputProps","pathToString","isAssistSupported","FirstAssistedPathContext","undefined","FirstAssistedPathProviderProps","members","FirstAssistedPathProvider","props","$","_c","t0","firstAssisted","find","_temp","field","path","firstAssistedPath","t1","children","member","kind","schemaType","minutesToMilliseconds","releaseAnnouncementUrl","instructionGuideUrl","giveFeedbackUrl","salesUrl","packageName","pluginTitle","pluginTitleShort","maxHistoryVisibilityMs","getPublishedId","getVersionFromId","isVersionId","assistDocumentIdPrefix","assistDocumentStatusIdPrefix","illegalIdChars","assistDocumentId","documentType","replace","assistTasksStatusId","documentId","useEditState","useDocumentState","id","docType","state","draft","published","T","useEffect","useMemo","ObjectSchemaType","typed","useClient","useCurrentUser","maxHistoryVisibilityMs","assistDocumentId","assistTasksStatusId","assistDocumentTypeName","AssistTasksStatus","assistTasksStatusTypeName","InstructionTask","StudioAssistDocument","StudioAssistField","StudioInstruction","useDocumentState","UseAssistDocumentProps","documentId","schemaType","initDoc","useStudioAssistDocument","t0","$","_c","documentTypeName","name","currentUser","t1","assistDocument","t2","t3","assistTasksStatus","t4","Symbol","for","apiVersion","client","t5","t6","createIfNotExists","_id","_type","catch","_temp","t7","bb0","undefined","t8","tasks","id","fields","map","assistField","filter","task","path","instructions","p","userId","instruction","asStudioInstruction","task_0","instruction_0","find","f","i","_key","instructionKey","run","started","Date","getTime","useToast","addSeconds","isAfter","useEffect","useRef","ObjectSchemaType","useCurrentUser","getInstructionTitle","InstructionTask","useStudioAssistDocument","NO_TASKS","useInstructionToaster","documentId","documentSchemaType","$","_c","t0","schemaType","assistDocument","assistDocLoaded","currentUser","toast","tasks","previousTasks","t1","id","current","prevTaskByKey","Object","fromEntries","map","_temp","endedTasks","filter","task","startedByUserId","task_0","prevTask","_key","ended","_temp2","forEach","task_2","title","instruction","reason","push","status","description","message","closable","duration","t2","task_1","Date","run","useLayer","useMemo","InputProps","ObjectInputProps","ObjectSchemaType","useDocumentPane","ConnectFromRegion","assistFormId","usePathKey","isType","FirstAssistedPathProvider","assistDocumentTypeName","useInstructionToaster","AssistDocumentInputWrapper","props","$","_c","schemaType","id","t0","documentId","value","_id","renderDefault","t1","AssistDocumentInput","bb0","name","t2","type","t3","members","t4","AssistInput","zIndex","paneKey","pathKey","path","Symbol","for","minWidth","createContext","useContext","DocumentInspector","ObjectSchemaType","PatchEvent","FieldRef","InstructionTask","StudioAssistDocument","AssistDocumentContextValue","assistDocument","loading","documentIsNew","assistableDocumentId","documentIsAssistable","documentSchemaType","openInspector","inspectorName","paneParams","Record","closeInspector","inspector","selectedPath","documentOnChange","event","syntheticTasks","addSyntheticTask","syntheticTask","removeSyntheticTask","fieldRefs","fieldRefsByTypePath","AssistDocumentContext","undefined","useAssistDocumentContext","context","Error","createContext","useContext","FieldRef","AssistPluginConfig","SerializedSchemaType","InstructStatus","AiAssistanceConfigContextValue","config","status","statusLoading","initLoading","init","error","Error","serializedTypes","getFieldRefs","documentType","getFieldRefsByTypePath","Record","AiAssistanceConfigContext","useAiAssistanceConfig","context","useSerializedTypes","BlockContentIcon","BlockquoteIcon","DocumentIcon","ImageIcon","LinkIcon","OlistIcon","StringIcon","extractWithPath","ComponentType","useMemo","ArraySchemaType","isKeySegment","isObjectSchemaType","ObjectSchemaType","Path","pathToString","SanityDocumentLike","SchemaType","stringToPath","PaneRouterContextValue","usePaneRouter","useAiAssistanceConfig","isAssistSupported","isPortableTextArray","isType","AssistInspectorRouteParams","documentRootKey","FieldRef","key","path","title","schemaType","icon","synthetic","maxDepth","getTypeIcon","t","type","jsonType","asFieldRefsByTypePath","fieldRefs","Record","lookup","reduce","acc","ref","getDocumentFieldRef","getFieldRefs","parent","depth","fields","filter","f","name","startsWith","flatMap","field","fieldRef","patchableKey","join","syntheticFields","getSyntheticFields","of","itemType","segment","_key","getTypePath","doc","pathString","undefined","currentPath","valid","syntheticPath","map","push","match","value","_type","pathKey","replace","useTypePath","$","_c","t0","useSelectedField","documentSchemaType","selectableFields","t1","find","getFieldTitle","AiPaneRouter","Omit","params","setParams","p","useAiPaneRouter","paneRouter","SanityClient","useToast","useCallback","useMemo","useState","Path","pathToString","useClient","useCurrentUser","useAiAssistanceConfig","useSerializedTypes","ConditionalMemberState","FieldLanguageMap","documentRootKey","UserTextInstance","blockKey","userInput","RunInstructionRequest","documentId","assistDocumentId","path","typePath","instructionKey","userId","userTexts","conditionalMembers","InstructStatus","enabled","initialized","validToken","TranslateRequest","translatePath","languagePath","styleguide","Promise","fieldLanguageMap","basePath","API_VERSION_WITH_EXTENDED_TYPES","canUseAssist","status","useApiClient","customApiClient","$","_c","t0","Symbol","for","apiVersion","client","t1","useTranslate","apiClient","loading","setLoading","user","types","toast","id","run","request","method","url","config","dataset","projectId","body","userStyleguide","length","catch","e","push","title","description","message","finally","setTimeout","translate","useGenerateCaption","generateCaption","useGenerateImage","generateImage","useGetInstructStatus","getInstructStatus","useInitInstruct","initInstruct","useRunInstructionApi","assist","assistConfig","timeZone","locale","Intl","DateTimeFormat","resolvedOptions","defaultLocaleSettings","localeSettings","defaultSettings","maxPathDepth","runInstruction","t2","PlayIcon","Button","Dialog","Flex","Stack","Text","TextArea","Tooltip","createContext","Dispatch","FormEvent","PropsWithChildren","SetStateAction","useCallback","useContext","useEffect","useId","useMemo","useRef","useState","FormFieldHeaderText","CustomInputResult","GetUserInput","getInstructionTitle","UserInputBlock","userInputTypeName","useApiClient","useRunInstructionApi","useAiAssistanceConfig","RunInstructionArgs","BlockInputs","Record","NO_INPUT","RunInstructionContextValue","runInstruction","req","getUserInput","instructionLoading","RunInstructionContext","undefined","useRunInstruction","isUserInputBlock","block","_type","RunInstructionProvider","props","$","_c","config","apiClient","__customApiClient","runInstructionRequest","loading","id","inputs","setInputs","runRequest","setRunRequest","resolveUserInput","setResolveUserInput","t0","Symbol","for","t1","title","inputs_0","userInputBlocks","map","_temp","length","dialogTitle","Promise","resolve","instruction","request","instructionKey","_key","userInputBlocks_0","prompt","flatMap","_temp2","filter","userTexts","t2","close","t3","instruction_0","_","request_0","Object","entries","_temp3","userInputs","values","input_0","i_0","userInputBlock","i","input","message","description","result","runWithInput","open","t4","_temp4","runDisabled","t5","width","t6","runButton","t7","contextValue","t8","block_0","i_1","t9","children","value_0","value","key","blockKey","userInput","UserInput","autoFocus","textAreaRef","e","current","currentTarget","target","onChange","setTimeout","focus","resize","useCallback","useEffect","useState","ObjectSchemaType","PatchEvent","SanityDocument","unset","useRunInstruction","DraftDelayedTaskArgs","documentOnChange","event","isDocAssistable","task","args","T","documentSchemaType","published","draft","liveEdit","useRequestRunInstruction","$","_c","runInstruction","instructionLoading","t0","requestRunInstruction","useDraftDelayedTask","t1","queuedArgs","setQueuedArgs","undefined","t2","taskArgs","from","useCallback","useEffect","useMemo","useState","getDraftId","getVersionId","ObjectSchemaType","usePerspective","useSchema","useDocumentPane","useAiPaneRouter","useAiAssistanceConfig","fieldPathParam","InstructionTask","AssistDocumentContextValue","isDocAssistable","useStudioAssistDocument","useAssistDocumentContextValue","documentId","documentType","$","_c","schema","getFieldRefs","getFieldRefsByTypePath","t0","t1","get","schemaType","Error","documentSchemaType","t2","t3","t4","fieldRefs","fieldRefsByTypePath","openInspector","closeInspector","inspector","onChange","documentOnChange","editState","selectedReleaseId","t5","draft","published","version","t6","liveEdit","assistableDocumentId","documentIsNew","_id","t7","documentIsAssistable","params","selectedPath","t8","assistDocument","syntheticTasks","addSyntheticTask","removeSyntheticTask","useSyntheticTasks","t9","bb0","t10","base","t11","loading","undefined","value","setSyntheticTasks","_temp","Symbol","for","task","current","task_0","current_0","filter","t","_key","PropsWithChildren","AssistDocumentContext","useAssistDocumentContextValue","AIDocumentInputProps","documentId","documentType","AssistDocumentContextProvider","props","$","_c","value","t0","children","DocumentLayoutProps","AssistDocumentContextProvider","AssistDocumentLayout","props","$","_c","documentId","documentType","t0","renderDefault","t1","ReactElement","ReactNode","Ref","keyframes","styled","fadeIn","FadeInDiv","div","FadeInContent","t0","$","_c","children","durationMs","t1","ref","undefined","t2","t3","animationDuration","t4","purple","SparklesIcon","Text","CSSProperties","useMemo","useColorSchemeValue","keyframes","styled","Root","span","dash","Outline","svg","IconDisc","AssistAvatar","props","state","scheme","style","hex","color","Card","Flex","Text","Tooltip","FormNodePresence","FadeInContent","AssistAvatar","AiFieldPresence","_props","$","_c","t0","Symbol","for","position","background","t1","t2","useMemo","FormNodePresence","isKeySegment","Path","stringToPath","useAssistDocumentContext","maxHistoryVisibilityMs","pluginTitle","AiPresence","NO_PRESENCE","useAssistPresence","path","showFocusWithin","$","_c","context","assistDocument","undefined","tasks","t0","bb0","activePresence","filter","_temp","flatMap","_temp2","_temp3","presence","length","statusPath","every","pathSegment","i","statusSegment","_key","t1","status","aiPresence","map","p","started","Date","getTime","task_0","task","ended","_title","user","id","displayName","sessionId","lastActiveAt","toISOString","Box","Flex","useMemo","FieldProps","isArraySchemaType","assistFormId","isAssistSupported","isPortableTextArray","isType","AiFieldPresence","useAssistPresence","contextDocumentTypeName","AssistFieldWrapper","props","$","_c","schemaType","isSupported","name","startsWith","t0","renderDefault","inputId","children","AssistField","isPortableText","presence","path","singlePresence","t1","t2","actions","t3","__internal_slot","Box","Button","Card","ErrorBoundary","Flex","Stack","Text","ErrorInfo","PropsWithChildren","useCallback","useMemo","useState","InputProps","isArraySchemaType","PatchEvent","unset","styled","isPortableTextArray","WrapPreCard","SafeValueInput","props","$","_c","t0","t1","onChange","ErrorWrapper","error","setError","Symbol","for","params","catchError","from","undefined","unsetValue","t2","dismiss","t3","children","catcher","t4","PteValueFixer","isPortableText","schemaType","value","length","renderDefault","Box","Flex","useCallback","BlockProps","PatchEvent","useFormCallbacks","ErrorWrapper","AiFieldPresence","useAssistPresence","AssistFormBlock","props","$","_c","presence","path","onChange","key","value","_key","t0","patchEvent","from","prefixAll","localOnChange","singlePresence","t1","renderDefault","t2","t3","t4","t5","createContext","BlockProps","InlineBlockValueContext","undefined","AssistInlineFormBlock","props","$","_c","t0","value","t1","renderDefault","t2","t3","Box","Flex","ItemProps","AiFieldPresence","useAssistPresence","AssistItem","props","$","_c","path","presence","t0","Symbol","for","position","t1","renderDefault","t2","t3","map","_temp","t4","pre","user","id","right","Box","BoxProps","Flex","focusFirstDescendant","Spinner","Text","React","HTMLProps","useEffect","useEffectEvent","useMemo","useRef","tap","createPatchChannel","DocumentMutationEvent","DocumentRebaseEvent","FormBuilder","fromMutationPatches","PatchMsg","useDocumentPresence","useDocumentStore","useDocumentPane","assistFormId","preventDefault","ev","FormEvent","DocumentForm","props","$","_c","collapsedFieldSets","collapsedPaths","displayed","value","documentId","documentType","editState","formState","onBlur","onChange","onFocus","onPathOpen","onSetActiveFieldGroup","onSetCollapsedFieldSet","onSetCollapsedPath","ready","validation","documentStore","presence","t0","Symbol","for","patchChannel","isLocked","transactionSyncLock","enabled","t1","pair","sub","documentEvents","pipe","event","type","publish","prepareMutationEvent","prepareRebaseEvent","subscribe","unsubscribe","t2","hasRev","Boolean","_rev","t3","patches","snapshot","patchChannelPublish","t4","t5","formRef","t6","t7","current","t8","t9","focusPath","changed","focused","groups","members","readOnly","schemaType","mutations","map","mut","patch","filter","document","origin","remotePatches","remoteMutations","localPatches","localMutations","concat","createContext","AssistTypeContextValue","typePath","documentType","AssistTypeContext","ArrayOfObjectsFormNode","ArrayOfObjectsItemMember","ArrayOfPrimitivesFormNode","DocumentFormNode","FieldsetState","isObjectSchemaType","ObjectFormNode","Path","pathToString","SchemaType","DEFAULT_MAX_DEPTH","ABSOLUTE_MAX_DEPTH","ConditionalMemberState","path","hidden","readOnly","ConditionalMemberInnerState","conditional","getConditionalMembers","docState","maxDepth","doc","isConditional","schemaType","extractConditionalPaths","Math","min","filter","v","map","_conditional","state","conditionalState","memberState","node","length","members","reduce","acc","member","kind","field","jsonType","innerFields","array","arrayPaths","isObjectsArray","some","m","item","arrayMember","conditionalFieldset","fieldsets","f","single","name","fieldSet","SparklesIcon","Box","Button","Container","Flex","Stack","Text","styled","releaseAnnouncementUrl","SparklesIllustration","strokeWidth","InspectorOnboarding","props","$","_c","onDismiss","t0","t1","Symbol","for","textAlign","t2","useCallback","useState","inspectorOnboardingKey","isFeatureOnboardingDismissed","featureKey","localStorage","value","getItem","dismissFeatureOnboarding","setItem","useOnboardingFeature","$","_c","t0","showOnboarding","setShowOnboarding","t1","dismissOnboarding","t2","SearchIcon","Autocomplete","Box","Breadcrumbs","Card","Flex","Text","useCallback","useMemo","ObjectSchemaType","useAiAssistanceConfig","isType","FieldRef","getDocumentFieldRef","FieldSelectorProps","id","schemaType","fieldPath","onSelect","path","includeDocument","filter","field","FieldAutocomplete","props","$","_c","getFieldRefs","t0","bb0","refs","name","t1","fieldRefs","t2","f","key","find","currentField","t3","_temp","map","_temp2","autocompleteOptions","renderOption","_temp3","renderValue","_temp4","filterOption","_temp5","icon","t4","t5","query","option_1","lQuery","toLowerCase","option","value","includes","title","value_0","option_0","field_1","field_0","f_0","FieldTitle","T0","T1","splitTitle","split","Symbol","for","display","flexWrap","alignItems","marginTop","slice","length","_temp6","t6","t7","t8","pt","i","trim","formatDistanceToNow","useEffect","useReducer","useInterval","ms","$","_c","tick","update","_temp","t0","t1","i","setInterval","clearInterval","n","TimeAgo","date","Date","timeSince","t2","CheckmarkCircleIcon","ClockIcon","CloseCircleIcon","ErrorOutlineIcon","SyncIcon","Box","Button","Card","Flex","Popover","Spinner","Stack","Text","useClickOutside","useGlobalKeyDown","useLayer","Ref","useCallback","useMemo","useState","StatusButton","StatusButtonProps","typed","useClient","keyframes","styled","TimeAgo","maxHistoryVisibilityMs","pluginTitle","assistTasksStatusId","getInstructionTitle","AssistTasksStatus","InstructionTask","StudioInstruction","TaskEndedReason","InstructionTaskHistoryButtonProps","documentId","tasks","instructions","showTitles","CancelableInstructionTask","cancel","title","rotate","SyncSpinningIcon","TASK_CONFIG","aborted","icon","tone","error","success","timeout","const","InstructionTaskHistoryButton","props","client","apiVersion","cancelRun","taskKey","statusDocId","basePath","patch","set","Date","toISOString","commit","catch","console","titledTasks","t","filter","task","started","getTime","map","instruction","find","i","_key","instructionKey","undefined","sort","a","b","isRunning","some","r","ended","hasErrors","reason","open","setOpen","toggleOpen","v","button","setButton","HTMLButtonElement","popover","setPopover","HTMLDivElement","handleClickOutside","handleEscape","focus","length","TASK_STATUS_BUTTON_TOOLTIP_PROPS","NonNullable","placement","TaskStatusButton","$","_c","disabled","onClick","selected","ref","t0","t1","t2","TaskList","onEscape","isTopLayer","event","key","_temp","TaskItem","taskType","TaskIcon","t3","t4","t5","t6","t7","message","t8","t9","t10","t11","t12","t13","t14","ArrowRightIcon","CloseIcon","PlayIcon","RetryIcon","Box","Button","Card","Flex","Spinner","Stack","Text","useCallback","useMemo","useRef","DocumentInspectorProps","PerspectiveProvider","PresenceOverlay","VirtualizerScrollInstanceProvider","DocumentInspectorHeader","DocumentPaneNode","DocumentPaneProvider","useDocumentPane","styled","DocumentForm","useAssistDocumentContext","AssistTypeContext","useStudioAssistDocument","useRequestRunInstruction","useAiAssistanceConfig","giveFeedbackUrl","pluginTitle","releaseAnnouncementUrl","salesUrl","getConditionalMembers","assistDocumentId","InspectorOnboarding","inspectorOnboardingKey","useOnboardingFeature","assistDocumentTypeName","fieldPathParam","instructionParam","FieldTitle","FieldRef","getFieldTitle","useAiPaneRouter","useSelectedField","useTypePath","InstructionTaskHistoryButton","CardWithShadowBelow","CardWithShadowAbove","AssistInspectorWrapper","props","$","_c","context","statusLoading","t0","Symbol","for","textAlign","status","enabled","onClose","t1","t2","t3","t4","initialized","validToken","error","t5","t6","initLoading","undefined","t7","t8","init","t9","t10","AssistInspector","params","boundary","HTMLDivElement","pathKey","instructionKey","documentPane","documentId","documentType","value","docValue","schemaType","onChange","documentOnChange","formState","assistableDocumentId","documentIsAssistable","formStateRef","current","instructionLoading","requestRunInstruction","isDocAssistable","typePath","selectedField","aiDocId","assistDocument","initDoc","assistField","fields","find","f","path","instruction","instructions","i","_key","tasks","filter","flatMap","promptValue","prompt","isEmptyPrompt","length","firstBlock","children","text","paneNode","type","id","title","options","runCurrentInstruction","conditionalMembers","Region","_props","height","flex","overflow","assistTypeContext","jsonType","lineHeight","minHeight","paneKey","index","whiteSpace","justifySelf","name","marginTop","AiInspectorHeader","field","fieldTitle","showOnboarding","dismissOnboarding","SparklesIcon","DocumentInspector","typed","pluginTitle","AssistInspectorRouteParams","fieldPathParam","instructionParam","AssistInspectorWrapper","aiInspectorId","assistInspector","name","useMenuItem","icon","title","hidden","showAsAction","component","onClose","params","undefined","ConnectorOptions","arrowPath","options","x","y","dir","arrow","size","join","ConnectorLine","ConnectorOptions","moveTo","x","y","lineTo","join","strings","delim","quadCurve","x1","y1","drawConnectorPath","options","line","cornerRadius","path","from","to","fromX","fromY","_toX","toY","toX","dividerX","bounds","divider","offsetX","fromPathX","isAbove","isBelow","arrow","marginX","r0","Math","min","abs","r1","cmds","push","threshold","marginY","h","rgba","useTheme","useMemo","ConnectorOptions","mapConnectorToLine","Rect","arrowPath","drawConnectorPath","ConnectorPath","props","$","_c","from","options","to","strokeWidth","path","theme","t0","line","t1","t2","t3","sanity","color","base","bg","t4","t5","border","t6","t7","bounds","isAbove","x","arrow","marginX","y","threshold","marginY","t8","isBelow","h","t9","Fragment","useEffect","useState","Connector","ConnectorOptions","ConnectorPath","DEBUG","options","arrow","marginX","marginY","size","threshold","divider","offsetX","path","cornerRadius","strokeWidth","AssistConnectorsOverlay","props","$","_c","connectors","setRedraw","t0","t1","Symbol","for","t2","position","top","left","width","height","pointerEvents","zIndex","t3","map","_temp","t4","window","innerWidth","innerHeight","t5","_temp2","t6","key","from","to","bounds","y","x","w","h","overflow","outline","outlineOffset","element","border","boxSizing","connector","packageName","TranslateStyleguide","TranslateStyleguideContext","validateStyleguide","styleguide","length","Error","createStyleGuideResolver","context","styleguideResult","get","SanityDocumentLike","getLanguageParams","select","Record","document","selection","selectedValue","key","path","Object","entries","value","Array","isArray","filter","item","_type","toFieldLanguagesKeyPrefix","getPreferredToFieldLanguages","fromLanguageId","localStorage","value","getItem","JSON","parse","setPreferredToFieldLanguages","languageIds","setItem","stringify","whatwgRNG","length","rnds8","Uint8Array","crypto","getRandomValues","getByteHexTable","table","i","toString","substring","randomKey","reduce","str","n","slice","extractWithPath","isDocumentSchemaType","isKeySegment","ObjectSchemaType","Path","pathToString","SanityDocumentLike","isRecord","randomKey","DocumentMember","TranslationOutput","TranslationOutputsFunction","FieldLanguageMap","inputLanguageId","inputPath","outputs","relativeLanguagePath","DEFAULT_MAX_DEPTH","ABSOLUTE_MAX_DEPTH","getDocumentMembersFlat","doc","schemaType","maxDepth","console","error","extractPaths","Math","min","path","length","fields","reduce","acc","field","fieldPath","name","fieldSchema","type","parentValue","value","undefined","thisFieldWithPath","jsonType","innerFields","of","some","item","arrayValue","arrayPaths","itemPath","_key","itemSchema","find","t","_type","warn","arrayMember","InternationalizedArrayItemValue","language","isInternationalizedArrayItemValue","defaultLanguageOutputs","member","enclosingType","translateFromLanguageId","translateToLanguageIds","startsWith","isV5InternationalizedArrayItem","map","translateToId","outputPathKey","Array","isArray","id","outputPath","slice","pathEnd","getFieldLanguageMap","documentSchema","documentMembers","outputLanguageIds","langFn","translationMaps","parentPath","m","translations","filter","translation","push","PlayIcon","Box","Button","Checkbox","Dialog","Flex","Radio","Spinner","Stack","Text","Tooltip","createContext","PropsWithChildren","useCallback","useContext","useId","useMemo","useState","ObjectSchemaType","Path","pathToString","SanityDocumentLike","useClient","useAiAssistanceConfig","ConditionalMemberState","createStyleGuideResolver","API_VERSION_WITH_EXTENDED_TYPES","useApiClient","useTranslate","getLanguageParams","getPreferredToFieldLanguages","setPreferredToFieldLanguages","defaultLanguageOutputs","FieldLanguageMap","getDocumentMembersFlat","getFieldLanguageMap","Language","FieldTranslationParams","document","documentSchema","translatePath","conditionalMembers","FieldTranslationContextValue","openFieldTranslation","args","translationLoading","FieldTranslationContext","useFieldTranslation","hasValuesToTranslate","fieldLanguageMaps","fromLanguage","basePath","some","map","inputLanguageId","id","inputPath","startsWith","FieldTranslationProvider","props","$","_c","config","assistConfig","apiClient","__customApiClient","styleguide","translate","field","runTranslate","dialogOpen","setDialogOpen","fieldTranslationParams","setFieldTranslationParams","languages","setLanguages","setFromLanguage","undefined","toLanguages","setToLanguages","setFieldLanguageMaps","t0","Symbol","for","close","t1","apiVersion","t2","languageClient","documentId","_id","t3","maxPathDepth","translationOutputs","from","languages_0","params","preferred","allToLanguages","filter","l","filteredToLanguages","l_0","length","includes","fromId","allToIds","_temp","docMembers","transMap","toId","selectFromLanguage","t4","toggledLang","toLanguages_0","languages_1","wasSelected","find","l_2","newToLangs","anyLang","selectedLang","_temp2","toggleToLanguage","t5","params_0","languageParams","selectLanguageParams","languages_2","Promise","resolve","fromLanguage_0","console","error","t6","contextValue","t7","runDisabled","t8","client","schemaType","fieldLanguageMap","outputs","out","l_4","onRunTranslation","t9","width","t10","runButton","t11","radioLanguage","checkboxLanguage","t12","children","l_3","l_1","ToLanguageCheckbox","langId","onChange","opacity","tl","title","FromLanguageRadio","ArraySchemaType","ImageOptions","isArraySchemaType","ObjectSchemaType","ReferenceOptions","ReferenceSchemaType","Schema","SchemaType","typed","isAssistSupported","isType","assistSchemaIdPrefix","assistSerializedFieldTypeName","assistSerializedTypeName","SerializedSchemaMember","SerializedSchemaType","hiddenTypes","Options","leanFormat","inlineTypes","serializeSchema","schema","options","list","getTypeNames","filter","t","includes","startsWith","map","get","getSchemaStub","to","length","of","fields","sort","a","b","name","localeCompare","schemaType","type","console","error","Error","baseSchema","_id","_type","title","getBaseFields","removeUndef","typeName","schemaOptions","imagePromptField","aiAssist","imageInstructionField","embeddingsIndex","Object","keys","undefined","values","Array","isArray","v","value","arrayOf","refToTypeNames","serializeFields","annotations","serializeAnnotations","inlineOf","serializeInlineOf","hidden","const","readOnly","fieldsets","flatMap","fs","single","field","f","serializeMember","typeNameExists","blockSchemaType","childrenField","find","childrenType","markDefs","marksType","arrayType","Record","obj","T","forEach","key","ObjectSchemaType","asFieldRefsByTypePath","FieldRef","getFieldRefs","createFieldRefs","createFieldRefCache","byType","Record","fieldRefs","fieldRefsByTypePath","getRefsForType","schemaType","documentType","name","cached","refs","ReactNode","useCallback","useEffect","useMemo","useState","ObjectSchemaType","Schema","useSchema","AssistPluginConfig","serializeSchema","InstructStatus","useApiClient","useGetInstructStatus","useInitInstruct","AiAssistanceConfigContext","AiAssistanceConfigContextValue","createFieldRefCache","AiAssistanceConfigProvider","props","$","_c","status","setStatus","error","setError","apiClient","config","__customApiClient","getInstructStatus","loading","statusLoading","initInstruct","initLoading","schema","t0","leanFormat","serializedTypes","getFieldRefs","getFieldRefsByTypePath","useFieldRefGetters","t1","t2","then","s","catch","e","console","Error","t3","undefined","status_0","t4","init","children","context","t5","Symbol","for","getForSchemaType","getRefsForType","documentType","schemaType","get","documentType_0","fieldRefs","documentType_1","fieldRefsByTypePath","ThemeProvider","useState","LayoutProps","Connector","ConnectorsProvider","AssistConnectorsOverlay","AssistPluginConfig","FieldTranslationProvider","StudioInstruction","RunInstructionRequest","AiAssistanceConfigProvider","RunInstructionProvider","AIStudioLayoutProps","config","RunInstructionArgs","Omit","instruction","AssistLayout","props","$","_c","t0","Symbol","for","connectors","setConnectors","t1","t2","renderDefault","t3","t4","t5","createContext","useEffect","useMemo","useState","getPublishedId","InputProps","pathToString","usePerspective","useSyncState","usePaneRouter","useAssistDocumentContext","useAiAssistanceConfig","getDescriptionFieldOption","getImageInstructionFieldOption","canUseAssist","useApiClient","useGenerateCaption","ImageContextValue","imageDescriptionPath","imageInstructionPath","assetRef","ImageContext","ImageContextProvider","props","$","_c","schemaType","path","value","readOnly","asset","_ref","selectedReleaseId","assetRefState","setAssetRefState","assistableDocumentId","documentSchemaType","config","status","apiClient","__customApiClient","generateCaption","t0","isSyncing","name","router","isShowingOlderRevision","params","rev","t1","t2","descriptionField","updateOnImageChange","documentId","t3","t4","descriptionField_0","imageInstructionField","undefined","t5","context","t6","renderDefault","t7","icons","Icon","IconSymbol","Button","Menu","MenuButton","MenuItem","useCallback","useId","useMemo","set","StringInputProps","IconInput","props","$","_c","value","onChange","id","t0","Symbol","for","Object","keys","filter","isIconSymbol","t1","map","key","items","t2","getIcon","selectedSymbol","t3","t4","maxHeight","t5","t6","portal","t7","IconItem","iconKey","onClick","iconName","useMemo","Path","SchemaType","isAssistSupported","useAssistSupported","_path","schemaType","$","_c","t0","TranslateIcon","Box","Spinner","useMemo","useRef","DocumentFieldAction","DocumentFieldActionGroup","DocumentFieldActionItem","DocumentFieldActionProps","ObjectSchemaType","useClient","useDocumentPane","useDraftDelayedTask","useAiAssistanceConfig","isAssistSupported","getConditionalMembers","createStyleGuideResolver","AssistOptions","API_VERSION_WITH_EXTENDED_TYPES","useApiClient","useTranslate","useFieldTranslation","node","TranslateProps","documentIsAssistable","documentSchemaType","translateActions","name","useAction","props","config","status","apiClient","__customApiClient","client","apiVersion","schemaType","fieldSchemaType","path","documentId","isDocumentLevel","length","readOnly","docTransTypes","translate","document","documentTypes","options","addFieldAction","aiAssist","translateAction","fieldTransEnabled","field","includes","documentTranslationEnabled","isActive","value","documentValue","onChange","documentOnChange","formState","docRef","current","formStateRef","translationApi","isDocAssistable","task","styleguide","languagePath","languageField","translateDocumentAction","undefined","title","type","icon","loading","height","transform","onAction","translatePath","conditionalMembers","renderAsButton","disabled","fieldTranslate","openFieldTranslation","maxDepth","maxPathDepth","translateFieldsAction","translationLoading","_id","documentSchema","initialized","children","filter","c","expanded","AgentActionPath","ToastParams","useToast","useMemo","DocumentFieldActionDivider","DocumentFieldActionGroup","DocumentFieldActionItem","DocumentFieldActionNode","ObjectSchemaType","Path","SanityDocumentLike","SchemaType","useWorkspaceSchemaId","randomKey","useAssistDocumentContext","useAiAssistanceConfig","isDefined","documentRootKey","fieldPresenceTypeName","InstructionTask","instructionTaskTypeName","AgentActionConditionalPath","path","readOnly","hidden","AssistFieldActionProps","actionType","documentIdForAction","documentSchemaType","getDocumentValue","getConditionalPaths","schemaId","schemaType","parentSchemaType","AssistFieldActionNode","AssistFieldActionItem","AssistFieldActionGroup","Omit","onAction","Promise","children","PushToast","params","defineAssistFieldAction","action","type","defineFieldActionDivider","defineAssistFieldActionGroup","group","useCustomFieldActions","props","config","fieldActions","addSyntheticTask","removeSyntheticTask","push","pushToast","configActions","useFieldActions","title","customActions","filter","map","node","createSafeNode","onlyGroups","length","every","groups","expanded","args","task","createSafeAction","child","undefined","renderAsButton","runAction","_type","_key","started","Date","toISOString","presence","actionResult","err","console","error","description","message","status","selected","ImageIcon","Box","Spinner","useContext","useMemo","DocumentFieldAction","DocumentFieldActionGroup","DocumentFieldActionItem","useDocumentPane","useAssistDocumentContext","aiInspectorId","useAiAssistanceConfig","ImageContext","usePathKey","fieldPathParam","instructionParam","canUseAssist","useApiClient","useGenerateCaption","node","generateCaptionsActions","name","useAction","props","pathKey","path","openInspector","config","status","apiClient","__customApiClient","generateCaption","loading","imageContext","assistableDocumentId","isActive","imageDescriptionPath","undefined","type","icon","height","transform","title","onAction","documentId","renderAsButton","disabled","hidden","assetRef","ImageIcon","Box","Spinner","useContext","useMemo","DocumentFieldAction","DocumentFieldActionGroup","DocumentFieldActionItem","useAssistDocumentContext","useAiAssistanceConfig","ImageContext","usePathKey","useApiClient","useGenerateImage","node","generateImagActions","name","useAction","props","pathKey","path","config","apiClient","__customApiClient","generateImage","loading","imageContext","assistableDocumentId","isActive","imageInstructionPath","undefined","type","icon","height","transform","title","onAction","documentId","renderAsButton","disabled","LockIcon","Text","Tooltip","PrivateIcon","$","_c","t0","t1","Symbol","for","whiteSpace","t2","AgentActionPath","Icon","ControlsIcon","SparklesIcon","useCallback","useMemo","useRef","DocumentFieldAction","DocumentFieldActionGroup","DocumentFieldActionItem","pathToString","stringToPath","typed","useCurrentUser","useDocumentPane","useAssistDocumentContext","getIcon","useRequestRunInstruction","aiInspectorId","getTypePath","useSelectedField","useTypePath","pluginTitleShort","isSchemaAssistEnabled","getConditionalMembers","getInstructionTitle","usePathKey","useAssistSupported","translateActions","TranslateProps","documentRootKey","fieldPathParam","instructionParam","StudioInstruction","AgentActionConditionalPath","useCustomFieldActions","generateCaptionsActions","generateImagActions","PrivateIcon","node","assistFieldActions","name","useAction","props","schemaType","assistDocument","documentIsNew","documentIsAssistable","openInspector","closeInspector","inspector","documentOnChange","documentSchemaType","selectedPath","assistableDocumentId","fieldRefsByTypePath","value","docValue","formState","docValueRef","formStateRef","current","currentUser","isHidden","pathKey","path","typePath","assistDocumentId","_id","requestRunInstruction","isDocAssistable","isSelectable","assistSupported","readOnly","fieldAssist","fields","find","f","fieldAssistKey","_key","isInspectorOpen","isPathSelected","isSelected","imageCaptionAction","imageGenAction","translateAction","documentId","manageInstructions","undefined","onInstructionAction","instruction","conditionalMembers","privateInstructions","instructions","filter","i","userId","id","sharedInstructions","runInstructionsGroup","length","type","icon","title","children","map","instructionItem","isPrivate","Boolean","hidden","a","expanded","getDocumentValue","getConditionalPaths","flatMap","cm","some","s","parentSchemaType","parentPath","slice","customActions","actionType","documentIdForAction","manageInstructionsItem","onAction","selected","group","c","renderAsButton","emptyAction","ins","IconLeft","$","_c","t0","Symbol","for","iconRight","disabled","Card","Flex","useMemo","useAssistDocumentContext","documentRootKey","fieldPresenceTypeName","AiFieldPresence","aiPresence","createAssistDocumentPresence","documentId","AssistDocumentPresenceWrapper","AssistDocumentPresence","assistDocument","syntheticTasks","anyPresence","tasks","filter","run","ended","reason","flatMap","presence","find","f","started","Date","getTime","anyRun","path","_key","_type","undefined","ArrowLeftIcon","Button","useCallback","useDocumentPane","aiInspectorId","instructionParam","BackToInstructionListLink","$","_c","openInspector","t0","undefined","goBack","t1","createContext","ObjectSchemaType","SchemaType","SelectedFieldContextValue","documentSchema","fieldSchema","SelectedFieldContext","undefined","SelectedFieldContextProvider","Provider","Card","Stack","Text","useContext","useEffect","useMemo","useRef","FieldError","FormCallbacksProvider","FormCallbacksValue","FormInput","insert","KeyedSegment","MemberFieldError","ObjectInputProps","ObjectSchemaType","PatchEvent","Path","SchemaType","set","setIfMissing","stringToPath","typed","useFormCallbacks","useSchema","useAiPaneRouter","useAiAssistanceConfig","AssistDocument","AssistField","assistFieldTypeName","AssistInspectorRouteParams","documentRootKey","fieldPathParam","instructionParam","StudioInstruction","AssistTypeContext","BackToInstructionListLink","SelectedFieldContextProvider","SelectedFieldContextValue","EMPTY_FIELDS","AssistDocumentForm","props","$","_c","readOnly","t0","Symbol","for","AssistDocumentFormEditable","onChange","value","id","_id","fields","params","setParams","pathKey","typePath","documentType","targetDocumentType","instruction","bb0","undefined","t1","find","f","path","_key","activeKey","bb1","t2","base","t3","activePath","schema","bb2","get","documentSchema","fieldSchema","useSelectedSchema","t4","context","title","t5","t6","startsWith","name","t7","formCallbacks","onPathOpen","t8","length","Record","setTimeout","t9","newCallbacks","t10","t11","t12","bb3","t13","members","_temp","fieldError","t14","fieldError_0","t15","lineHeight","t16","renderDefault","t17","t18","m","kind","fieldName","fieldPath","currentSchema","i","segment","field","type","jsonType","FieldsInitializer","config","__presets","presets","existingField","documentPresets","existingInstructions","instructions","presetField","f_0","filter","some","ei","missingPresetInstructions","initialized","current","event","from","append","_type","map","_temp3","preset","prompt","_temp2","p","markDefs","Box","Flex","Text","useContext","PreviewProps","InlineBlockValueContext","useSelectedField","SelectedFieldContext","FieldRefPreview","props","$","_c","actions","documentSchema","path","selectedField","t0","Symbol","for","width","t1","title","t2","t3","t4","FieldProps","HiddenFieldTitle","props","renderDefault","title","level","changed","Card","Flex","Switch","Text","useCallback","useId","set","StringInputProps","unset","useCurrentUser","InstructionVisibility","props","$","_c","value","onChange","user","t0","id","newValue","handleChange","t1","Symbol","for","margin","t2","t3","t4","elementProps","readOnly","t5","t6","Box","useCallback","useContext","useEffect","useId","useRef","set","StringInputProps","FieldAutocomplete","FieldRef","AssistTypeContext","SelectedFieldContext","FieldRefPathInput","props","$","_c","documentSchema","typePath","ref","id","onChange","t0","t1","Symbol","for","current","querySelector","focus","t2","path","onSelect","t3","field","key","includes","fieldSegments","split","lastArrayItemIndex","findLastIndex","_temp","mustStartWith","slice","join","startsWith","filter","t4","renderDefault","minWidth","t5","value","s","FieldError","FieldMember","FieldSetMember","ObjectMember","findFieldMember","members","fieldName","find","m","kind","name","findFieldsetMember","fieldsetName","fieldSet","Box","Flex","Stack","Text","useId","useMemo","FieldError","FieldMember","ObjectInputMember","ObjectInputProps","findFieldMember","findFieldsetMember","InstructionInput","props","$","_c","t0","Symbol","for","t1","ObjectMember","fieldName","t2","members","member","NONE","NameField","fieldsetMember","titleId","fieldSet","iconMember","titleMember","titlePlaceholder","bb0","undefined","kind","field","schemaType","t3","placeholder","t4","t5","moddedTitleMember","marginLeft","t6","ShareField","visibilityMember","useCallback","useContext","useState","ArrayFieldProps","ArraySchemaType","isArrayOfObjectsSchemaType","isObjectSchemaType","ObjectSchemaType","SelectedFieldContext","InstructionOutputField","props","$","_c","fieldSchema","t0","children","EnabledOutputField","open","setOpen","value","length","t1","Symbol","for","onExpand","t2","onCollapse","renderDefault","collapsible","collapsed","level","title","Card","Checkbox","Flex","Stack","Text","useCallback","useContext","useEffect","useMemo","ArrayOfObjectsInputProps","ArraySchemaType","FormPatch","insert","isArrayOfObjectsSchemaType","isObjectSchemaType","ObjectSchemaType","PatchEvent","setIfMissing","typed","unset","isAssistSupported","isType","OutputFieldItem","outputFieldTypeName","OutputTypeItem","SelectedFieldContext","InstructionOutputInput","props","$","_c","fieldSchema","t0","useEmptySelectAllValue","value","allowedValues","onChange","t1","validValues","filter","v","find","f","name","_type","relativePath","type","valueLength","length","validLength","from","ObjectOutputInput","fields","_temp","t2","checked","selectedValue","_key","items","map","_temp2","patchValue","onSelectChange","t3","t4","field_1","field","title","field_0","ArrayOutputInput","of","_temp3","ofItems","_temp4","itemType_0","itemType","Selectable","arrayValue","handleChange","Symbol","for","cursor","t5","t6","t7","ArrowRightIcon","Box","Stack","Text","useEffect","ArrayOfObjectsInputProps","set","typed","styled","randomKey","instructionGuideUrl","PromptBlock","PromptTextBlock","PteMods","PromptInput","props","$","_c","useOnlyInlineBlocks","t0","Symbol","for","t1","renderDefault","t2","needsFix","val","value","map","block","_type","_key","level","markDefs","style","children","onChange","ArrayFieldProps","InstructionsArrayField","props","renderDefault","title","useMemo","ArrayOfObjectsInputProps","useCurrentUser","StudioInstruction","InstructionsArrayInput","props","$","_c","user","originalValue","value","originalMembers","members","t0","t1","id","t2","v","userId","filter","t3","t4","v_0","kind","value_0","item","renderDefault","Box","useEffect","useRef","ObjectInputProps","HideReferenceChangedBannerInput","props","$","_c","ref","t0","t1","Symbol","for","parent","current","closest","style","document","createElement","parentId","Math","random","replace","id","innerText","prepend","t2","renderDefault","t3","DocumentTextIcon","TokenIcon","defineArrayMember","defineField","defineType","HideReferenceChangedBannerInput","contextDocumentTypeName","contextDocumentSchema","type","name","title","liveEdit","icon","components","input","fields","of","styles","value","lists","marks","decorators","annotations","preview","select","context","prepare","text","flatMap","block","children","child","split","filter","Boolean","words","length","subtitle","media","Icon","IconSymbol","CodeIcon","ComposeIcon","LockIcon","SparklesIcon","ThListIcon","Box","Flex","Stack","Text","Tooltip","isValidElement","defineArrayMember","defineField","defineType","ObjectSchemaType","AssistDocumentForm","FieldRefPreview","HiddenFieldTitle","IconInput","InstructionVisibility","FieldRefPathInput","InstructionInput","InstructionOutputField","InstructionOutputInput","PromptInput","InstructionsArrayField","InstructionsArrayInput","createFieldRefCache","getInstructionTitle","assistDocumentIdPrefix","assistDocumentTypeName","assistFieldTypeName","assistTasksStatusTypeName","fieldReferenceTypeName","instructionContextTypeName","instructionTaskTypeName","instructionTypeName","outputFieldTypeName","outputTypeTypeName","promptTypeName","userInputTypeName","contextDocumentSchema","fieldReference","type","name","title","icon","fields","components","input","validation","rule","getForSchemaType","custom","value","context","docId","document","_id","targetDocType","replace","RegExp","schema","get","fieldRefs","fieldRef","find","r","key","e","console","error","preview","select","path","prepare","options","modal","userInput","placeholder","description","required","rows","width","promptContext","to","Fix","props","maxWidth","renderDefault","ref","media","prompt","of","styles","lists","marks","decorators","annotations","outputFieldType","outputTypeType","instruction","fieldsets","collapsible","collapsed","userId","IconValue","fieldset","field","initialValue","_params","currentUser","id","readOnly","Boolean","parent","createdById","hidden","fieldInstructions","assistDocumentSchema","liveEdit","instructionTask","documentInstructionStatus","ArrayOfType","FieldProps","SchemaTypeDefinition","assistDocumentSchema","documentInstructionStatus","fieldInstructions","fieldReference","instruction","instructionTask","outputFieldType","outputTypeType","prompt","promptContext","userInput","contextDocumentSchema","excludeComments","type","T","existingRender","components","field","props","newProps","__internal_comments","undefined","renderDefault","fields","map","of","arrayItemType","instructionForm","schemaTypes","SanityClient","definePlugin","isObjectSchemaType","AssistDocumentInputWrapper","AssistDocumentLayout","AssistFieldWrapper","AssistFormBlock","AssistInlineFormBlock","AssistItem","assistInspector","AssistLayout","AssistConfig","ImageContextProvider","SafeValueInput","packageName","assistFieldActions","AssistFieldActionNode","AssistFieldActionProps","isSchemaAssistEnabled","validateStyleguide","isImage","createAssistDocumentPresence","schemaTypes","TranslationConfig","assistDocumentTypeName","AssistPreset","AssistPluginConfig","translate","assist","fieldActions","title","useFieldActions","props","__customApiClient","defaultClient","__presets","Record","config","configWithDefaults","styleguide","maxPathDepth","temperature","undefined","Error","name","handlesGDR","schema","types","i18n","bundles","document","inspectors","prev","context","documentType","docSchema","get","unstable_fieldActions","unstable_languageFilter","documentId","schemaType","components","unstable_layout","studio","layout","Layout","form","input","field","item","block","inlineBlock","plugins","renderDefault","SanityClient","defer","delay","merge","Observable","of","partition","switchMap","throwError","exhaustMapToWithTrailing","filter","mergeMap","share","take","MutationEvent","ReconnectEvent","WelcomeEvent","ListenQueryParams","Record","ListenQueryOptions","tag","apiVersion","throttleTime","transitions","fetch","client","query","params","options","observable","filterResponse","listen","events","includeResult","visibility","isWelcomeEvent","event","type","listenQuery","fetchQuery","listenerQuery","fetchOnce$","events$","pipe","ev","i","isFirst","Error","welcome$","mutationAndReconnect$","isRelevantEvent","includes","transition","useEffect","useRef","useState","isEqual","of","catchError","distinctUntilChanged","ListenQueryOptions","useClient","listenQuery","Params","Record","ReturnShape","loading","error","data","T","Observable","unsubscribe","DEFAULT_PARAMS","DEFAULT_OPTIONS","apiVersion","useListeningQuery","query","t0","t1","$","_c","params","undefined","options","setLoading","setError","setData","subscription","t2","Symbol","for","client","t3","t4","current","pipe","err","console","subscribe","documents","t5","SyncIcon","Box","Button","Card","Flex","Label","Spinner","Stack","useCallback","useMemo","useState","useClient","useSchema","useListeningQuery","assistSerializedTypeName","SerializedSchemaType","serializeSchema","NO_DATA","defaultTitle","SchemaTypeTool","$","_c","schema","t0","Symbol","for","apiVersion","client","saving","setSaving","syncTitle","setSyncTitle","t1","type","data","t2","types","t3","canSave","store","length","transaction","i","createOrReplace","Required","commit","reset","catch","console","error","finally","storeTypes","t4","height","t5","marginTop","t6","t7","t8","map","_temp","t9","t10","t11","t12","_temp2","t13","t14","t15","type_1","name","type_0","SchemaEntry","schemaStub","JSON","stringify","out","useRunInstruction","GetUserInput","args","title","inputs","CustomInput","Promise","CustomInputResult","id","description","input","result","useUserInput","getUserInput"],"sources":["../src/_lib/connector/helpers.ts","../src/_lib/connector/useRegionRects.ts","../src/_lib/connector/ConnectorRegion.tsx","../src/_lib/connector/ConnectorsStoreContext.ts","../src/_lib/connector/useConnectorsStore.ts","../src/_lib/connector/ConnectFromRegion.tsx","../src/_lib/connector/ConnectorsStore.ts","../src/_lib/connector/ConnectorsProvider.tsx","../src/_lib/connector/mapConnectorToLine.ts","../src/_lib/form/constants.ts","../src/types.ts","../src/helpers/misc.ts","../src/helpers/typeUtils.ts","../src/helpers/assistSupported.ts","../src/onboarding/FirstAssistedPathProvider.tsx","../src/constants.ts","../src/helpers/ids.ts","../src/assistDocument/hooks/useDocumentState.ts","../src/assistDocument/hooks/useStudioAssistDocument.ts","../src/assistDocument/hooks/useInstructionToaster.tsx","../src/assistDocument/AssistDocumentInput.tsx","../src/assistDocument/AssistDocumentContext.tsx","../src/assistLayout/AiAssistanceConfigContext.tsx","../src/assistInspector/helpers.ts","../src/useApiClient.ts","../src/assistLayout/RunInstructionProvider.tsx","../src/assistDocument/RequestRunInstructionProvider.tsx","../src/assistDocument/hooks/useAssistDocumentContextValue.tsx","../src/assistDocument/AssistDocumentContextProvider.tsx","../src/assistDocument/AssistDocumentLayout.tsx","../src/components/FadeInContent.tsx","../src/presence/AssistAvatar.tsx","../src/presence/AiFieldPresence.tsx","../src/presence/useAssistPresence.ts","../src/assistFormComponents/AssistField.tsx","../src/components/SafeValueInput.tsx","../src/assistFormComponents/AssistFormBlock.tsx","../src/assistFormComponents/AssistInlineFormBlock.tsx","../src/assistFormComponents/AssistItem.tsx","../src/_lib/form/DocumentForm.tsx","../src/assistDocument/components/AssistTypeContext.tsx","../src/helpers/conditionalMembers.ts","../src/onboarding/InspectorOnboarding.tsx","../src/onboarding/onboardingStore.ts","../src/assistInspector/FieldAutocomplete.tsx","../src/components/TimeAgo.tsx","../src/assistInspector/InstructionTaskHistoryButton.tsx","../src/assistInspector/AssistInspector.tsx","../src/assistInspector/constants.ts","../src/assistInspector/index.ts","../src/assistConnectors/draw/arrowPath.ts","../src/assistConnectors/draw/connectorPath.ts","../src/assistConnectors/ConnectorPath.tsx","../src/assistConnectors/AssistConnectorsOverlay.tsx","../src/helpers/styleguide.ts","../src/translate/getLanguageParams.ts","../src/translate/languageStore.ts","../src/_lib/randomKey.ts","../src/translate/paths.ts","../src/translate/FieldTranslationProvider.tsx","../src/schemas/serialize/schemaUtils.ts","../src/schemas/serialize/serializeSchema.ts","../src/assistLayout/fieldRefCache.tsx","../src/assistLayout/AiAssistanceConfigProvider.tsx","../src/assistLayout/AssistLayout.tsx","../src/components/ImageContext.tsx","../src/assistDocument/components/instruction/appearance/IconInput.tsx","../src/helpers/useAssistSupported.ts","../src/translate/translateActions.tsx","../src/fieldActions/customFieldActions.tsx","../src/fieldActions/generateCaptionActions.tsx","../src/fieldActions/generateImageActions.tsx","../src/fieldActions/PrivateIcon.tsx","../src/fieldActions/assistFieldActions.tsx","../src/presence/AssistDocumentPresence.tsx","../src/assistDocument/components/instruction/BackToInstructionsLink.tsx","../src/assistDocument/components/SelectedFieldContext.tsx","../src/assistDocument/components/AssistDocumentForm.tsx","../src/assistDocument/components/FieldRefPreview.tsx","../src/assistDocument/components/generic/HiddenFieldTitle.tsx","../src/assistDocument/components/instruction/appearance/InstructionVisibility.tsx","../src/assistDocument/components/instruction/FieldRefInput.tsx","../src/assistDocument/components/helpers.ts","../src/assistDocument/components/instruction/InstructionInput.tsx","../src/assistDocument/components/instruction/InstructionOutputField.tsx","../src/assistDocument/components/instruction/InstructionOutputInput.tsx","../src/assistDocument/components/instruction/PromptInput.tsx","../src/assistDocument/components/InstructionsArrayField.tsx","../src/assistDocument/components/InstructionsArrayInput.tsx","../src/components/HideReferenceChangedBannerInput.tsx","../src/schemas/contextDocumentSchema.tsx","../src/schemas/assistDocumentSchema.tsx","../src/schemas/index.ts","../src/plugin.tsx","../src/_lib/fixedListenQuery.ts","../src/_lib/useListeningQuery.ts","../src/schemas/serialize/SchemTypeTool.tsx","../src/fieldActions/useUserInput.ts"],"sourcesContent":["export function hasOverflowScroll(el: HTMLElement): boolean {\n const overflow = getComputedStyle(el).overflow\n\n return overflow.includes('auto') || overflow.includes('hidden') || overflow.includes('scroll')\n}\n","import {useEffect, useMemo, useRef, useState} from 'react'\n\nimport {hasOverflowScroll} from './helpers'\nimport type {Rect, Scroll} from './types'\n\nexport function useRegionRects() {\n const ref = useRef<HTMLDivElement>(null)\n\n const [relativeBoundsRect, setRelativeBoundsRect] = useState<Rect | null>(null)\n const [relativeElementRect, setRelativeElementRect] = useState<Rect | null>(null)\n const [boundsScroll, setBoundsScroll] = useState<Scroll>({x: 0, y: 0})\n const [scroll, setScroll] = useState<Scroll>({x: 0, y: 0})\n\n const boundsScrollXRef = useRef(0)\n const boundsScrollYRef = useRef(0)\n\n const elementScrollXRef = useRef(0)\n const elementScrollYRef = useRef(0)\n\n useEffect(() => {\n const el = ref.current\n\n if (!el) return undefined\n\n const scrollParents: HTMLElement[] = []\n let parent = el.parentElement\n\n while (parent && parent !== document.body) {\n if (\n hasOverflowScroll(parent)\n // || parent.scrollHeight > parent.clientHeight\n ) {\n scrollParents.push(parent)\n }\n\n parent = parent.parentElement\n }\n\n function handleResize() {\n const scrollParent = scrollParents[0]\n\n const boundsRect = scrollParent?.getBoundingClientRect() || {\n x: 0,\n y: 0,\n width: window.innerWidth,\n height: window.innerHeight,\n }\n\n const domRect = el!.getBoundingClientRect()\n\n setRelativeBoundsRect({\n x: boundsRect.x + boundsScrollXRef.current,\n y: boundsRect.y + boundsScrollYRef.current,\n w: boundsRect.width,\n h: boundsRect.height,\n })\n\n setRelativeElementRect({\n x: domRect.x + elementScrollXRef.current,\n y: domRect.y + elementScrollYRef.current,\n w: domRect.width,\n h: domRect.height,\n })\n }\n\n function handleScroll() {\n let scrollX = window.scrollX\n let scrollY = window.scrollY\n\n for (const scrollParent of scrollParents) {\n scrollX += scrollParent.scrollLeft\n scrollY += scrollParent.scrollTop\n }\n\n const scrollParent = scrollParents[0]\n\n boundsScrollXRef.current = scrollX - (scrollParent?.scrollLeft || window.scrollX)\n\n boundsScrollYRef.current = scrollY - (scrollParent?.scrollTop || window.scrollY)\n\n setBoundsScroll({\n x: boundsScrollXRef.current,\n y: boundsScrollYRef.current,\n })\n\n elementScrollXRef.current = scrollX\n elementScrollYRef.current = scrollY\n\n setScroll({x: scrollX, y: scrollY})\n }\n\n window.addEventListener('scroll', handleScroll, {passive: true})\n\n const ro = new ResizeObserver(handleResize)\n\n ro.observe(el)\n\n for (const scrollParent of scrollParents) {\n scrollParent.addEventListener('scroll', handleScroll, {passive: true})\n ro.observe(scrollParent)\n }\n\n handleScroll()\n\n return () => {\n ro.unobserve(el)\n\n for (const scrollParent of scrollParents) {\n ro.unobserve(scrollParent)\n scrollParent.removeEventListener('scroll', handleScroll)\n }\n\n ro.disconnect()\n\n window.removeEventListener('scroll', handleScroll)\n }\n }, [])\n\n const bounds: Rect | null = useMemo(\n () =>\n relativeBoundsRect && {\n x: relativeBoundsRect.x - boundsScroll.x,\n y: relativeBoundsRect.y - boundsScroll.y,\n w: relativeBoundsRect.w,\n h: relativeBoundsRect.h,\n },\n [relativeBoundsRect, boundsScroll],\n )\n\n const element: Rect | null = useMemo(\n () =>\n relativeElementRect && {\n x: relativeElementRect.x - scroll.x,\n y: relativeElementRect.y - scroll.y,\n w: relativeElementRect.w,\n h: relativeElementRect.h,\n },\n [relativeElementRect, scroll],\n )\n\n return {bounds, element, ref}\n}\n","import {type HTMLProps, useEffect} from 'react'\n\nimport type {ConnectorRegionRects} from './types'\nimport {useRegionRects} from './useRegionRects'\n\nexport function ConnectorRegion(\n props: {\n onRectsChange?: (rects: ConnectorRegionRects | null) => void\n } & HTMLProps<HTMLDivElement>,\n) {\n const {children, onRectsChange, ...restProps} = props\n\n const {bounds, element, ref} = useRegionRects()\n\n useEffect(() => {\n onRectsChange?.(bounds && element ? {bounds, element} : null)\n }, [bounds, element, onRectsChange])\n\n return (\n <div {...restProps} ref={ref}>\n {children}\n </div>\n )\n}\n","import {createContext} from 'react'\n\nimport type {ConnectorsStore} from './ConnectorsStore'\n\nexport const ConnectorsStoreContext = createContext<ConnectorsStore | null>(null)\n","import {useContext} from 'react'\n\nimport type {ConnectorsStore} from './ConnectorsStore'\nimport {ConnectorsStoreContext} from './ConnectorsStoreContext'\n\nexport function useConnectorsStore(): ConnectorsStore {\n const store = useContext(ConnectorsStoreContext)\n\n if (!store) {\n throw new Error('Missing connectors store context')\n }\n\n return store\n}\n","import {type HTMLProps, useEffect, useState} from 'react'\n\nimport {ConnectorRegion} from './ConnectorRegion'\nimport type {ConnectorRegionRects} from './types'\nimport {useConnectorsStore} from './useConnectorsStore'\n\nexport function ConnectFromRegion(\n props: {_key: string; zIndex: number} & HTMLProps<HTMLDivElement>,\n) {\n const {children, _key: key, zIndex, ...restProps} = props\n const store = useConnectorsStore()\n const [rects, setRects] = useState<ConnectorRegionRects | null>(null)\n\n useEffect(() => store.from.subscribe(key, {zIndex}), [key, store, zIndex])\n\n useEffect(() => {\n if (rects) store.from.next(key, rects)\n }, [key, rects, store])\n\n return (\n <ConnectorRegion {...restProps} onRectsChange={setRects}>\n {children}\n </ConnectorRegion>\n )\n}\n","import type {Connector, ConnectorRegionRects} from './types'\n\nexport interface ConnectorsStore {\n connectors: {\n subscribe: (observer: (connectors: Connector[]) => void) => () => void\n }\n\n from: {\n subscribe: (key: string, payload?: Record<string, unknown>) => () => void\n next: (key: string, rects: ConnectorRegionRects) => void\n }\n\n to: {\n subscribe: (key: string, payload?: Record<string, unknown>) => () => void\n next: (key: string, rects: ConnectorRegionRects) => void\n }\n}\n\nexport function createConnectorsStore(): ConnectorsStore {\n const configKeys: string[] = []\n const fieldKeys: string[] = []\n\n const channels = {\n from: new Map<string, ConnectorRegionRects | null>(),\n to: new Map<string, ConnectorRegionRects | null>(),\n }\n\n const payloads = {\n from: new Map<string, Record<string, unknown> | undefined>(),\n to: new Map<string, Record<string, unknown> | undefined>(),\n }\n\n const observers: ((connectors: Connector[]) => void)[] = []\n\n function notifyObservers() {\n const connectors: Connector[] = []\n\n for (const key of configKeys) {\n const toRects = channels.to.get(key)\n const toPayload = payloads.from.get(key)\n\n const fromRects = channels.from.get(key)\n const fromPayload = payloads.from.get(key)\n\n if (toRects && fromRects) {\n connectors.push({\n key,\n from: {...fromRects, payload: fromPayload},\n to: {...toRects, payload: toPayload},\n })\n }\n }\n\n for (const observer of observers) {\n observer(connectors)\n }\n }\n\n return {\n to: {\n subscribe(key, payload) {\n channels.to.set(key, null)\n payloads.to.set(key, payload)\n\n configKeys.push(key)\n\n return () => {\n channels.to.delete(key)\n payloads.to.delete(key)\n\n const idx = configKeys.indexOf(key)\n\n if (idx > -1) configKeys.splice(idx, 1)\n\n notifyObservers()\n }\n },\n next(key, rects) {\n channels.to.set(key, rects)\n\n if (fieldKeys.includes(key)) notifyObservers()\n },\n },\n\n connectors: {\n subscribe(observer) {\n observers.push(observer)\n\n return () => {\n const idx = observers.indexOf(observer)\n\n if (idx > -1) observers.splice(idx, 1)\n }\n },\n },\n\n from: {\n subscribe(key, payload) {\n channels.from.set(key, null)\n payloads.from.set(key, payload)\n\n fieldKeys.push(key)\n\n return () => {\n channels.from.delete(key)\n payloads.from.delete(key)\n\n const idx = fieldKeys.indexOf(key)\n\n if (idx > -1) fieldKeys.splice(idx, 1)\n\n notifyObservers()\n }\n },\n next(key, rects) {\n channels.from.set(key, rects)\n\n if (configKeys.includes(key)) notifyObservers()\n },\n },\n }\n}\n","import {type ReactNode, useEffect, useMemo} from 'react'\n\nimport {type ConnectorsStore, createConnectorsStore} from './ConnectorsStore'\nimport {ConnectorsStoreContext} from './ConnectorsStoreContext'\nimport type {Connector} from './types'\n\nexport function ConnectorsProvider(props: {\n children?: ReactNode\n onConnectorsChange?: (connectors: Connector[]) => void\n}) {\n const {children, onConnectorsChange} = props\n const store: ConnectorsStore = useMemo(() => createConnectorsStore(), [])\n\n useEffect(\n () => onConnectorsChange && store.connectors.subscribe(onConnectorsChange),\n [onConnectorsChange, store],\n )\n\n return <ConnectorsStoreContext.Provider value={store}>{children}</ConnectorsStoreContext.Provider>\n}\n","import type {\n ConnectorLine,\n ConnectorLinePoint,\n ConnectorOptions,\n ConnectorRegionRects,\n Rect,\n} from './types'\n\nfunction getConnectorLinePoint(\n options: ConnectorOptions,\n rect: Rect,\n bounds: Rect,\n): ConnectorLinePoint {\n const centerY = rect.y + rect.h / 2\n const isAbove = rect.y + rect.h < bounds.y + options.arrow.marginY\n const isBelow = rect.y > bounds.y + bounds.h - options.arrow.marginY\n\n return {\n bounds,\n x: rect.x,\n y: centerY,\n centerY,\n startY: rect.y + options.path.marginY,\n endY: rect.y + rect.h - options.path.marginY,\n isAbove,\n isBelow,\n outOfBounds: isAbove || isBelow,\n }\n}\n\nexport function mapConnectorToLine(\n options: ConnectorOptions,\n connector: {from: ConnectorRegionRects; to: ConnectorRegionRects},\n): ConnectorLine {\n const fromBounds: Rect = {\n y: connector.from.bounds.y + options.arrow.threshold,\n // bottom: connector.from.bounds.y + connector.from.bounds.h - options.arrow.threshold,\n x: connector.from.bounds.x,\n // right: connector.from.bounds.x + connector.from.bounds.w,\n w: connector.from.bounds.w,\n h: connector.from.bounds.h - options.arrow.threshold * 2,\n }\n\n const from = getConnectorLinePoint(options, connector.from.element, fromBounds)\n from.x = connector.from.element.x + connector.from.element.w // + 1\n\n const fromBottom = fromBounds.y + fromBounds.h\n\n const toBounds: Rect = {\n y: connector.to.bounds.y + options.arrow.threshold,\n // bottom: connector.to.bounds.y + connector.to.bounds.h - options.arrow.threshold,\n x: connector.to.bounds.x,\n // right: connector.to.bounds.x + connector.to.bounds.w,\n w: connector.to.bounds.w,\n h: connector.to.bounds.h - options.arrow.threshold * 2,\n }\n\n const toBottom = toBounds.y + toBounds.h\n\n const to = getConnectorLinePoint(options, connector.to.element, toBounds)\n\n const maxStartY = Math.max(to.startY, from.startY)\n\n // Align from <-> to vertically\n from.y = Math.min(maxStartY, from.endY)\n if (from.y < toBounds.y) {\n from.y = Math.min(toBounds.y, from.endY)\n } else if (from.y > toBottom) {\n from.y = Math.max(toBottom, from.startY)\n }\n to.y = Math.min(maxStartY, to.endY)\n if (to.y < fromBounds.y) {\n to.y = Math.min(fromBounds.y, to.endY)\n } else if (to.y > fromBottom) {\n to.y = Math.max(fromBottom, to.startY)\n }\n\n // Keep within bounds\n from.y = Math.min(Math.max(from.y, fromBounds.y), fromBottom)\n to.y = Math.min(Math.max(to.y, toBounds.y), toBottom)\n\n return {from, to}\n}\n","export const assistFormId = 'assist'\n","import type {\n PortableTextBlock,\n PortableTextMarkDefinition,\n PortableTextSpan,\n} from '@portabletext/types'\nimport type {SanityDocument} from 'sanity'\n\n//id prefixes\nexport const assistDocumentIdPrefix = 'sanity.assist.schemaType.'\nexport const assistDocumentStatusIdPrefix = 'sanity.assist.status.'\nexport const assistSchemaIdPrefix = 'sanity.assist.schema.'\n\n// type names\nexport const assistDocumentTypeName = 'sanity.assist.schemaType.annotations' as const\nexport const assistFieldTypeName = 'sanity.assist.schemaType.field' as const\nexport const instructionTypeName = 'sanity.assist.instruction' as const\nexport const promptTypeName = 'sanity.assist.instruction.prompt' as const\n\nexport const userInputTypeName = 'sanity.assist.instruction.userInput' as const\nexport const instructionContextTypeName = 'sanity.assist.instruction.context' as const\nexport const fieldReferenceTypeName = 'sanity.assist.instruction.fieldRef' as const\n\n// user-facing type. Intentionally does not have sanity. prefix\nexport const contextDocumentTypeName = 'assist.instruction.context' as const\n\nexport const assistTasksStatusTypeName = 'sanity.assist.task.status' as const\nexport const instructionTaskTypeName = 'sanity.assist.instructionTask' as const\nexport const fieldPresenceTypeName = 'sanity.assist.instructionTask.presence' as const\n\nexport const assistSerializedTypeName = 'sanity.assist.serialized.type' as const\nexport const assistSerializedFieldTypeName = 'sanity.assist.serialized.field' as const\n\nexport const outputFieldTypeName = 'sanity.assist.output.field' as const\nexport const outputTypeTypeName = 'sanity.assist.output.type' as const\n\n//url params\nconst inspectParam = 'inspect' as const\nexport const fieldPathParam = 'pathKey' as const\nexport const instructionParam = 'instruction' as const\n\n// other constants\nexport const documentRootKey = '<document>'\n\nexport type SerializedSchemaMember = Omit<SerializedSchemaType, 'name' | '_type'> & {\n _type?: typeof assistSerializedFieldTypeName\n name?: string\n}\n\nexport interface SerializedSchemaType {\n _type?: typeof assistSerializedTypeName\n _id?: string\n type: string\n name: string\n title?: string\n fields?: SerializedSchemaMember[]\n of?: SerializedSchemaMember[]\n to?: SerializedSchemaMember[]\n annotations?: SerializedSchemaMember[]\n inlineOf?: SerializedSchemaMember[]\n values?: string[] | {value: string; title?: string}[]\n hidden?: boolean | 'function'\n readOnly?: boolean | 'function'\n options?: {\n /** equivalent to options.aiAssist.imageDescriptionField - not renamed in the api for backwards compatibility */\n imagePromptField?: string\n embeddingsIndex?: string\n }\n}\n\nexport interface AssistDocument extends SanityDocument {\n fields?: AssistField[]\n instructions?: StudioInstruction[]\n}\n\nexport interface PresetInstruction {\n _key: string\n prompt?: PromptTextBlock[]\n\n title?: string\n /**\n * String key from `@sanity/icons` IconMap\n */\n icon?: string\n\n /**\n * Type/field filter\n */\n output?: (OutputFieldItem | OutputTypeItem)[]\n}\n\nexport interface PresetField {\n path?: string\n instructions?: PresetInstruction[]\n}\n\nexport interface AssistPreset {\n fields?: PresetField[]\n}\n\nexport interface SanityAssistDocument {\n _id: string\n _type: typeof assistDocumentTypeName\n fields?: StudioAssistField[]\n}\n\nexport interface StudioAssistDocument extends SanityAssistDocument {\n // added after loading\n tasks?: InstructionTask[]\n}\n\nexport interface AssistField {\n _key: string\n _type: typeof assistFieldTypeName\n path?: string\n instructions?: StudioInstruction[]\n}\n\nexport interface StudioAssistField {\n _key: string\n path?: string\n instructions?: StudioInstruction[]\n\n // added\n tasks?: InstructionTask[]\n}\n\nexport interface FieldRef extends PortableTextMarkDefinition {\n _type: typeof fieldReferenceTypeName\n path?: string\n}\n\nexport interface ContextBlock {\n _type: typeof instructionContextTypeName\n reference?: {\n _type: 'reference'\n _ref?: string\n }\n}\n\nexport interface UserInputBlock {\n _type: typeof userInputTypeName\n _key: string\n message?: string\n description?: string\n}\n\nexport type InlinePromptBlock = PortableTextSpan | FieldRef | UserInputBlock | ContextBlock\nexport type PromptTextBlock = Omit<\n PortableTextBlock<never, InlinePromptBlock, 'normal', never>,\n '_type'\n> & {_type: 'block'}\n\nexport type PromptBlock = PromptTextBlock | FieldRef | ContextBlock | UserInputBlock\n\nexport interface AiPresence {\n _key: string\n _type: typeof fieldPresenceTypeName\n path?: string\n started?: string\n}\n\nexport type TaskEndedReason = 'success' | 'error' | 'aborted' | 'timeout'\n\nexport interface InstructionTask {\n _key: string\n _type: typeof instructionTaskTypeName\n instructionKey?: string\n title?: string\n path?: string\n started?: string\n updated?: string\n ended?: string\n message?: string\n reason?: TaskEndedReason\n presence?: AiPresence[]\n startedByUserId?: string\n\n //added by studio\n instruction?: StudioInstruction\n}\n\nexport interface StudioInstruction {\n _key: string\n _type: typeof instructionTypeName\n prompt?: PromptBlock[]\n\n icon?: string\n userId?: string\n title?: string\n placeholder?: string\n output?: (OutputFieldItem | OutputTypeItem)[]\n\n //added after query / synthetic fields\n tasks?: InstructionTask[]\n}\n\nexport interface AssistTasksStatus {\n _id: string\n _type: typeof assistTasksStatusTypeName\n tasks?: InstructionTask[]\n}\n\nexport interface AssistInspectorRouteParams {\n [inspectParam]?: string\n [fieldPathParam]?: string\n [instructionParam]?: string\n}\n\nexport interface OutputFieldItem {\n _type: typeof outputFieldTypeName\n _key: string\n //path relative to the field the instruction is for (same as _key)\n relativePath?: string\n}\n\nexport interface OutputTypeItem {\n _type: typeof outputTypeTypeName\n _key: string\n /* array item type name */\n type?: string\n //path relative to the array-field the instruction is for, can be empty string (the array itself, same as _key)\n relativePath?: string\n}\n","import {useMemo} from 'react'\nimport {type Path, pathToString} from 'sanity'\n\nimport {documentRootKey, type StudioInstruction} from '../types'\n\nexport function usePathKey(path: Path | string) {\n return useMemo(() => {\n return getPathKey(path)\n }, [path])\n}\n\nfunction getPathKey(path: Path | string) {\n if (path.length) {\n return Array.isArray(path) ? pathToString(path) : path\n }\n return documentRootKey\n}\n\nexport function getInstructionTitle(instruction?: StudioInstruction) {\n return instruction?.title ?? 'Untitled'\n}\n\nexport function isDefined<T>(t: T | undefined | null): t is T {\n return t !== undefined && t !== null\n}\n","import type {ArraySchemaType, ImageOptions, SchemaType} from 'sanity'\n\nexport function isPortableTextArray(type: ArraySchemaType) {\n return type.of.find((t) => isType(t, 'block'))\n}\n\n/**\n * Returns true if the `schemaType` or any of its parent types (`schemaType.type`)` has `name` equal\n * to `typeName`.\n *\n * Useful for checking if `schemaType` is a type alias of `ìmage`, `code` or similar.\n */\nexport function isType(schemaType: SchemaType, typeName: string): boolean {\n if (schemaType.name === typeName) {\n return true\n }\n if (!schemaType.type) {\n return false\n }\n return isType(schemaType.type, typeName)\n}\n\nexport function isImage(schemaType: SchemaType) {\n return isType(schemaType, 'image')\n}\n\nexport function getDescriptionFieldOption(\n schemaType: SchemaType | undefined,\n): {path: string; updateOnImageChange: boolean} | undefined {\n if (!schemaType) {\n return undefined\n }\n // oxlint-disable-next-line no-unsafe-type-assertion\n const descriptionField = (schemaType.options as ImageOptions)?.aiAssist?.imageDescriptionField\n if (typeof descriptionField === 'string') {\n return {\n path: descriptionField,\n updateOnImageChange: true,\n }\n } else if (descriptionField) {\n return {\n path: descriptionField.path,\n updateOnImageChange: descriptionField.updateOnImageChange ?? true,\n }\n }\n return getDescriptionFieldOption(schemaType.type)\n}\n\nexport function getImageInstructionFieldOption(\n schemaType: SchemaType | undefined,\n): string | undefined {\n if (!schemaType) {\n return undefined\n }\n // oxlint-disable-next-line no-unsafe-type-assertion\n const imageInstructionField = (schemaType.options as ImageOptions)?.aiAssist\n ?.imageInstructionField\n if (imageInstructionField) {\n return imageInstructionField\n }\n return getImageInstructionFieldOption(schemaType.type)\n}\n","import type {ReferenceOptions, SchemaType} from 'sanity'\n\nimport type {AssistOptions} from '../schemas/typeDefExtensions'\nimport {isType} from './typeUtils'\n\nexport function isSchemaAssistEnabled(type: SchemaType) {\n // oxlint-disable-next-line no-unsafe-type-assertion\n return !(type.options as AssistOptions | undefined)?.aiAssist?.exclude\n}\n\nexport function isAssistSupported(type: SchemaType) {\n if (!isSchemaAssistEnabled(type)) {\n return false\n }\n\n if (isDisabled(type)) {\n return false\n }\n\n if (type.jsonType === 'array') {\n const unsupportedArray = type.of.every((t) => isDisabled(t))\n return !unsupportedArray\n }\n\n if (type.jsonType === 'object') {\n const unsupportedObject = type.fields.every((field) => isDisabled(field.type))\n return (\n !unsupportedObject ||\n /* to allow attaching custom actions on fieldless images */\n isType(type, 'image')\n )\n }\n return true\n}\n\nfunction isDisabled(type: SchemaType) {\n return !isSchemaAssistEnabled(type) || isUnsupportedType(type)\n}\n\nfunction isUnsupportedType(type: SchemaType) {\n return (\n type.name === 'sanity.imageCrop' ||\n type.name === 'sanity.imageHotspot' ||\n isType(type, 'globalDocumentReference') ||\n (isType(type, 'reference') &&\n // oxlint-disable-next-line no-unsafe-type-assertion\n !(type?.options as ReferenceOptions)?.aiAssist?.embeddingsIndex) ||\n isType(type, 'crossDatasetReference') ||\n isType(type, 'file')\n )\n}\n","import {createContext, type PropsWithChildren, useMemo} from 'react'\nimport {type FieldMember, type ObjectInputProps, pathToString} from 'sanity'\n\nimport {isAssistSupported} from '../helpers/assistSupported'\n\nconst FirstAssistedPathContext = createContext<string | undefined>(undefined)\n\nexport interface FirstAssistedPathProviderProps {\n members: ObjectInputProps['members']\n}\n\nexport function FirstAssistedPathProvider(\n props: PropsWithChildren<FirstAssistedPathProviderProps>,\n) {\n const {members} = props\n\n const firstAssistedPath = useMemo(() => {\n const firstAssisted = members.find(\n (member): member is FieldMember =>\n member.kind === 'field' && isAssistSupported(member.field.schemaType),\n )\n return firstAssisted?.field.path ? pathToString(firstAssisted?.field.path) : undefined\n }, [members])\n\n return (\n <FirstAssistedPathContext.Provider value={firstAssistedPath}>\n {props.children}\n </FirstAssistedPathContext.Provider>\n )\n}\n","import {minutesToMilliseconds} from 'date-fns'\n\nexport const releaseAnnouncementUrl =\n 'https://www.sanity.io/blog/sanity-ai-assist-announcement?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const instructionGuideUrl =\n 'https://sanity.io/guides/getting-started-with-ai-assist-instructions?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const giveFeedbackUrl = 'https://forms.gle/Kwz7CThxGeA2GiEU8'\n\nexport const salesUrl =\n 'https://www.sanity.io/contact/sales?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const packageName = '@sanity/assist'\n\nexport const pluginTitle = 'Sanity AI Assist'\n\nexport const pluginTitleShort = 'AI Assist'\n\nexport const maxHistoryVisibilityMs = minutesToMilliseconds(30)\n","import {getPublishedId, getVersionFromId, isVersionId} from 'sanity'\n\nimport {assistDocumentIdPrefix, assistDocumentStatusIdPrefix} from '../types'\n\nconst illegalIdChars = /[^a-zA-Z0-9._-]/g\n\nexport function assistDocumentId(documentType: string) {\n return `${assistDocumentIdPrefix}${documentType}`.replace(illegalIdChars, '_')\n}\n\nexport function assistTasksStatusId(documentId: string) {\n if (isVersionId(documentId)) {\n // Creates an id: sanity.assist.status.<versionName>.<documentId>\n return `${assistDocumentStatusIdPrefix}${getVersionFromId(documentId)}.${getPublishedId(documentId)}`\n }\n\n // Creates an id: sanity.assist.status<documentId>\n return `${assistDocumentStatusIdPrefix}${getPublishedId(documentId)}`\n}\n","import {useEditState} from 'sanity'\n\n// oxlint-disable-next-line no-unnecessary-type-parameters\nexport function useDocumentState<T>(id: string, docType: string): T | undefined {\n const state = useEditState(id, docType)\n // oxlint-disable-next-line no-unsafe-type-assertion\n return (state.draft || state.published) as T | undefined\n}\n","import {useEffect, useMemo} from 'react'\nimport {type ObjectSchemaType, typed, useClient, useCurrentUser} from 'sanity'\n\nimport {maxHistoryVisibilityMs} from '../../constants'\nimport {assistDocumentId, assistTasksStatusId} from '../../helpers/ids'\nimport {\n assistDocumentTypeName,\n type AssistTasksStatus,\n assistTasksStatusTypeName,\n type InstructionTask,\n type StudioAssistDocument,\n type StudioAssistField,\n type StudioInstruction,\n} from '../../types'\nimport {useDocumentState} from './useDocumentState'\n\ninterface UseAssistDocumentProps {\n documentId: string\n schemaType: ObjectSchemaType\n initDoc?: boolean\n}\n\nexport function useStudioAssistDocument({\n documentId,\n schemaType,\n initDoc,\n}: UseAssistDocumentProps): StudioAssistDocument | undefined {\n const documentTypeName = schemaType.name\n const currentUser = useCurrentUser()\n\n const assistDocument = useDocumentState<StudioAssistDocument>(\n assistDocumentId(documentTypeName),\n assistDocumentTypeName,\n )\n const assistTasksStatus = useDocumentState<AssistTasksStatus>(\n assistTasksStatusId(documentId ?? ''),\n assistTasksStatusTypeName,\n )\n\n const client = useClient({apiVersion: '2023-01-01'})\n\n useEffect(() => {\n if (!assistDocument && initDoc) {\n client\n .createIfNotExists({\n _id: assistDocumentId(documentTypeName),\n _type: assistDocumentTypeName,\n })\n .catch(() => {\n // best effort\n })\n }\n }, [client, assistDocument, documentTypeName, initDoc])\n\n return useMemo(() => {\n if (!assistDocument) {\n return undefined\n }\n const tasks = assistTasksStatus?.tasks ?? []\n // oxlint-disable-next-line no-map-spread\n const fields = (assistDocument?.fields ?? []).map((assistField): StudioAssistField => {\n return {\n ...assistField,\n tasks: tasks.filter((task) => task.path === assistField.path),\n instructions: assistField.instructions\n ?.filter((p) => !p.userId || p.userId === currentUser?.id)\n .map((instruction) => asStudioInstruction(instruction, tasks)),\n }\n })\n return typed<StudioAssistDocument>({\n ...assistDocument,\n // oxlint-disable-next-line no-map-spread\n tasks: tasks?.map((task) => {\n const instruction = fields\n .find((f) => f.path === task.path)\n ?.instructions?.find((i) => i._key === task.instructionKey)\n return {\n ...task,\n instruction,\n }\n }),\n fields: fields,\n })\n }, [assistDocument, assistTasksStatus, currentUser])\n}\n\nfunction asStudioInstruction(\n instruction: StudioInstruction,\n run: InstructionTask[],\n): StudioInstruction {\n return {\n ...instruction,\n tasks: run\n .filter((task) => task.instructionKey === instruction._key)\n .filter(\n (task) =>\n task.started &&\n new Date().getTime() - new Date(task.started).getTime() < maxHistoryVisibilityMs,\n ),\n }\n}\n","import {useToast} from '@sanity/ui'\nimport {addSeconds, isAfter} from 'date-fns'\nimport {useEffect, useRef} from 'react'\nimport {type ObjectSchemaType, useCurrentUser} from 'sanity'\n\nimport {getInstructionTitle} from '../../helpers/misc'\nimport type {InstructionTask} from '../../types'\nimport {useStudioAssistDocument} from './useStudioAssistDocument'\n\nconst NO_TASKS: InstructionTask[] = []\n\nexport function useInstructionToaster(documentId: string, documentSchemaType: ObjectSchemaType) {\n const assistDocument = useStudioAssistDocument({documentId, schemaType: documentSchemaType})\n\n const assistDocLoaded = !!assistDocument\n const currentUser = useCurrentUser()\n const toast = useToast()\n const tasks = assistDocument?.tasks\n const previousTasks = useRef<InstructionTask[] | undefined | 'initial'>('initial')\n\n useEffect(() => {\n if (!assistDocLoaded) {\n return\n }\n\n if (previousTasks.current !== 'initial') {\n const prevTaskByKey = Object.fromEntries(\n (previousTasks.current ?? NO_TASKS).map((run) => [run._key, run]),\n )\n const endedTasks = tasks\n ?.filter((task) => task.startedByUserId === currentUser?.id)\n .filter((task) => {\n const prevTask = prevTaskByKey[task._key]\n return (!prevTask && task.ended) || (!prevTask?.ended && task.ended)\n })\n // filter out old stuff\n .filter((task) => task.ended && isAfter(addSeconds(new Date(task.ended), 30), new Date()))\n\n endedTasks?.forEach((task) => {\n const title = task.title ?? getInstructionTitle(task.instruction)\n if (task.reason === 'error') {\n toast.push({\n title: `Failed: ${title}`,\n status: 'error',\n description: `Instruction failed. ${task.message ?? ''}`,\n closable: true,\n duration: 10000,\n })\n } else if (task.reason === 'timeout') {\n toast.push({\n title: `Timeout: ${title}`,\n status: 'error',\n description: `Instruction timed out.`,\n closable: true,\n })\n } else if (task.reason === 'success') {\n toast.push({\n title: `Success: ${title}`,\n status: 'success',\n description: `Instruction completed.`,\n closable: true,\n })\n } else if (task.reason === 'aborted') {\n toast.push({\n title: `Canceled: ${title}`,\n status: 'warning',\n description: `Instruction canceled.`,\n closable: true,\n })\n }\n })\n }\n previousTasks.current = tasks\n }, [tasks, previousTasks, toast, currentUser, assistDocLoaded])\n}\n","import {useLayer} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport type {InputProps, ObjectInputProps, ObjectSchemaType} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {ConnectFromRegion} from '../_lib/connector'\nimport {assistFormId} from '../_lib/form/constants'\nimport {usePathKey} from '../helpers/misc'\nimport {isType} from '../helpers/typeUtils'\nimport {FirstAssistedPathProvider} from '../onboarding/FirstAssistedPathProvider'\nimport {assistDocumentTypeName} from '../types'\nimport {useInstructionToaster} from './hooks/useInstructionToaster'\n\nexport function AssistDocumentInputWrapper(props: InputProps) {\n if (!isType(props.schemaType, 'document') && props.id !== 'root' && props.id !== assistFormId) {\n return <AssistInput {...props} />\n }\n\n // oxlint-disable-next-line no-unsafe-type-assertion\n const documentId = (props.value as any)?._id as string | undefined\n if (!documentId) {\n return props.renderDefault(props)\n }\n\n // oxlint-disable-next-line no-unsafe-type-assertion\n return <AssistDocumentInput {...(props as ObjectInputProps)} documentId={documentId} />\n}\n\nfunction AssistDocumentInput({documentId, ...props}: ObjectInputProps & {documentId: string}) {\n useInstructionToaster(documentId, props.schemaType)\n\n const schemaType = useMemo(() => {\n if (props.schemaType.name !== assistDocumentTypeName) {\n return props.schemaType\n }\n // oxlint-disable-next-line no-unsafe-type-assertion\n return {\n ...props.schemaType,\n type: {\n ...props.schemaType.type,\n // compatibility with i18nArrays plugin that requires this to be document\n name: 'document',\n },\n } as ObjectSchemaType\n }, [props.schemaType])\n\n return (\n <FirstAssistedPathProvider members={props.members}>\n {props.renderDefault({...props, schemaType})}\n </FirstAssistedPathProvider>\n )\n}\n\nfunction AssistInput(props: InputProps) {\n const {zIndex} = useLayer()\n const {paneKey} = useDocumentPane()\n const pathKey = usePathKey(props.path)\n\n return (\n <ConnectFromRegion _key={`${paneKey}_${pathKey}`} zIndex={zIndex} style={{minWidth: 0}}>\n {props.renderDefault(props)}\n </ConnectFromRegion>\n )\n}\n","import {createContext, useContext} from 'react'\nimport {type DocumentInspector, type ObjectSchemaType, PatchEvent} from 'sanity'\n\nimport type {FieldRef} from '../assistInspector/helpers'\nimport type {InstructionTask, StudioAssistDocument} from '../types'\n\nexport type AssistDocumentContextValue = (\n | {assistDocument: StudioAssistDocument; loading: false}\n | {assistDocument: undefined; loading: true}\n) & {\n documentIsNew: boolean\n /**\n * This is the _actual_ id of the current document (ie the document loaded in the pane); it contains draft. versions. prefix ect depending on context\n */\n assistableDocumentId: string\n documentIsAssistable: boolean\n documentSchemaType: ObjectSchemaType\n openInspector: (inspectorName: string, paneParams?: Record<string, string>) => void\n closeInspector: (inspectorName?: string) => void\n inspector: DocumentInspector | null\n selectedPath?: string\n documentOnChange: (event: PatchEvent) => void\n\n /**\n * Synthetic task is used to display AI presence at the document level for the user who started the action.\n * These are not persisted, so other users will not see them.\n * It is mostly a helper to give _some_ visual feedback to the user while a custom action is running.\n * This also means that reloading the page will remove the icon.\n *\n * Agent Actions add their own \"real\" tasks, so if a custom action calls an Agent action, _those_ tasks\n * are visible across sessions.\n */\n syntheticTasks?: InstructionTask[]\n addSyntheticTask: (syntheticTask: InstructionTask) => void\n removeSyntheticTask: (syntheticTask: InstructionTask) => void\n\n fieldRefs: FieldRef[]\n fieldRefsByTypePath: Record<string, FieldRef | undefined>\n}\n\nexport const AssistDocumentContext = createContext<AssistDocumentContextValue | undefined>(\n undefined,\n)\n\nexport function useAssistDocumentContext(): AssistDocumentContextValue {\n const context = useContext(AssistDocumentContext)\n if (!context) {\n throw new Error('AssistDocumentContext value is missing')\n }\n return context\n}\n","import {createContext, useContext} from 'react'\n\nimport type {FieldRef} from '../assistInspector/helpers'\nimport type {AssistPluginConfig} from '../plugin'\nimport type {SerializedSchemaType} from '../types'\nimport type {InstructStatus} from '../useApiClient'\n\nexport interface AiAssistanceConfigContextValue {\n config: AssistPluginConfig\n status?: InstructStatus\n statusLoading: boolean\n initLoading: boolean\n init: () => void\n error?: Error\n serializedTypes: SerializedSchemaType[]\n getFieldRefs: (documentType: string) => FieldRef[]\n getFieldRefsByTypePath: (documentType: string) => Record<string, FieldRef | undefined>\n}\n\n// oxlint-disable-next-line no-unsafe-type-assertion\nexport const AiAssistanceConfigContext = createContext<AiAssistanceConfigContextValue>({} as any)\n\nexport function useAiAssistanceConfig() {\n const context = useContext(AiAssistanceConfigContext)\n if (!context) {\n throw new Error('Missing AiAssistanceConfigContext')\n }\n return context\n}\n\nexport function useSerializedTypes() {\n return useAiAssistanceConfig().serializedTypes\n}\n","// oxlint-disable no-accumulating-spread\nimport {BlockContentIcon} from '@sanity/icons/BlockContent'\nimport {BlockquoteIcon} from '@sanity/icons/Blockquote'\nimport {DocumentIcon} from '@sanity/icons/Document'\nimport {ImageIcon} from '@sanity/icons/Image'\nimport {LinkIcon} from '@sanity/icons/Link'\nimport {OlistIcon} from '@sanity/icons/Olist'\nimport {StringIcon} from '@sanity/icons/String'\nimport {extractWithPath} from '@sanity/mutator'\nimport {type ComponentType, useMemo} from 'react'\nimport {\n type ArraySchemaType,\n isKeySegment,\n isObjectSchemaType,\n type ObjectSchemaType,\n type Path,\n pathToString,\n type SanityDocumentLike,\n type SchemaType,\n stringToPath,\n} from 'sanity'\nimport {type PaneRouterContextValue, usePaneRouter} from 'sanity/structure'\n\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {isAssistSupported} from '../helpers/assistSupported'\nimport {isPortableTextArray, isType} from '../helpers/typeUtils'\nimport {type AssistInspectorRouteParams, documentRootKey} from '../types'\n\nexport interface FieldRef {\n key: string\n path: Path\n title: string\n schemaType: SchemaType\n icon: ComponentType\n synthetic?: boolean\n}\n\nconst maxDepth = 6\n\nfunction getTypeIcon(schemaType: SchemaType): ComponentType {\n let t: SchemaType | undefined = schemaType\n\n while (t) {\n if (t.icon) return t.icon\n t = t.type\n }\n\n if (isType(schemaType, 'slug')) return LinkIcon\n if (isType(schemaType, 'image')) return ImageIcon\n if (schemaType.jsonType === 'array' && isPortableTextArray(schemaType)) return BlockContentIcon\n\n if (schemaType.jsonType === 'array') return OlistIcon\n if (schemaType.jsonType === 'object') return BlockquoteIcon\n if (schemaType.jsonType === 'string') return StringIcon\n\n return DocumentIcon\n}\n\nexport function asFieldRefsByTypePath(fieldRefs: FieldRef[]): Record<string, FieldRef | undefined> {\n const lookup: Record<string, FieldRef | undefined> = fieldRefs.reduce(\n (acc, ref) => ({...acc, [ref.key]: ref}),\n {},\n )\n return lookup\n}\n\nexport function getDocumentFieldRef(schemaType: ObjectSchemaType): FieldRef {\n return {\n key: documentRootKey,\n icon: schemaType.icon ?? DocumentIcon,\n title: `The entire document`,\n path: [],\n schemaType: schemaType,\n }\n}\n\nexport function getFieldRefs(\n schemaType: ObjectSchemaType,\n parent?: FieldRef,\n depth = 0,\n): FieldRef[] {\n if (depth >= maxDepth) {\n return []\n }\n return (\n schemaType.fields\n .filter((f) => !f.name.startsWith('_'))\n // oxlint-disable-next-line no-map-spread\n .flatMap((field) => {\n const path: Path = parent ? [...parent.path, field.name] : [field.name]\n const title = field.type.title ?? field.name\n const fieldRef: FieldRef = {\n key: patchableKey(pathToString(path)),\n path,\n title: parent ? [parent.title, title].join(' / ') : title,\n schemaType: field.type,\n icon: getTypeIcon(field.type),\n }\n const fields =\n field.type.jsonType === 'object' ? getFieldRefs(field.type, fieldRef, depth + 1) : []\n\n const syntheticFields =\n field.type.jsonType === 'array' ? getSyntheticFields(field.type, fieldRef, depth + 1) : []\n if (!isAssistSupported(field.type)) {\n return [...fields, ...syntheticFields]\n }\n return [fieldRef, ...fields, ...syntheticFields]\n })\n )\n}\n\nfunction getSyntheticFields(schemaType: ArraySchemaType, parent?: FieldRef, depth = 0) {\n if (depth >= maxDepth) {\n return []\n }\n\n return (\n schemaType.of\n .filter((itemType) => !isType(itemType, 'block'))\n // oxlint-disable-next-line no-map-spread\n .flatMap((itemType) => {\n const segment = {_key: itemType.name}\n const title = itemType.title ?? itemType.name\n const path: Path = parent ? [...parent.path, segment] : [segment]\n const fieldRef: FieldRef = {\n key: patchableKey(pathToString(path)),\n path,\n title: parent ? [parent.title, title].join(' / ') : title,\n schemaType: itemType,\n icon: getTypeIcon(itemType),\n synthetic: true,\n }\n const fields =\n itemType.jsonType === 'object' ? getFieldRefs(itemType, fieldRef, depth + 1) : []\n\n if (!isAssistSupported(itemType)) {\n return fields\n }\n return [fieldRef, ...fields]\n })\n )\n}\n\nexport function getTypePath(doc: SanityDocumentLike, pathString: string) {\n if (!pathString) {\n return undefined\n }\n\n const path = stringToPath(pathString)\n const currentPath: Path = []\n let valid = true\n const syntheticPath = path.map((segment) => {\n currentPath.push(segment)\n\n if (isKeySegment(segment)) {\n const match = extractWithPath(pathToString(currentPath), doc)[0]\n const value = match?.value\n if (match && value && typeof value === 'object' && '_type' in value) {\n // oxlint-disable-next-line no-unsafe-type-assertion\n return {_key: value._type as string}\n }\n valid = false\n }\n return segment\n })\n\n return valid ? patchableKey(pathToString(syntheticPath)) : undefined\n}\n\n/**\n * mutator crashes if path contains certain letters\n * @param pathKey\n */\nfunction patchableKey(pathKey: string) {\n return pathKey.replace(/[=]=/g, ':').replace(/[[\\]]/g, '|').replace(/\"/g, '')\n}\n\nexport function useTypePath(doc: SanityDocumentLike, pathString: string) {\n return useMemo(() => getTypePath(doc, pathString), [doc, pathString])\n}\n\nexport function useSelectedField(\n documentSchemaType?: SchemaType,\n path?: string,\n): FieldRef | undefined {\n const {getFieldRefs} = useAiAssistanceConfig()\n\n const selectableFields = useMemo(\n () =>\n documentSchemaType && isObjectSchemaType(documentSchemaType)\n ? [getDocumentFieldRef(documentSchemaType), ...getFieldRefs(documentSchemaType.name)]\n : [],\n [documentSchemaType, getFieldRefs],\n )\n\n return useMemo(() => {\n return path ? selectableFields?.find((f) => f.key === path) : undefined\n }, [selectableFields, path])\n}\n\nexport function getFieldTitle(field?: FieldRef) {\n const schemaType = field?.schemaType\n return field?.title ?? schemaType?.title ?? schemaType?.name ?? 'Untitled'\n}\n\nexport type AiPaneRouter = Omit<PaneRouterContextValue, 'setParams' | 'params'> & {\n params: AssistInspectorRouteParams\n setParams: (p: Record<keyof AssistInspectorRouteParams, string | undefined>) => void\n}\n\nexport function useAiPaneRouter(): AiPaneRouter {\n const paneRouter = usePaneRouter()\n\n return useMemo(() => ({...paneRouter, params: paneRouter.params ?? {}}), [paneRouter])\n}\n","import type {SanityClient} from '@sanity/client'\nimport {useToast} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {type Path, pathToString, useClient, useCurrentUser} from 'sanity'\n\nimport {useAiAssistanceConfig, useSerializedTypes} from './assistLayout/AiAssistanceConfigContext'\nimport type {ConditionalMemberState} from './helpers/conditionalMembers'\nimport type {FieldLanguageMap} from './translate/paths'\nimport {documentRootKey} from './types'\n\nexport interface UserTextInstance {\n blockKey: string\n userInput: string\n}\n\nexport interface RunInstructionRequest {\n documentId: string\n assistDocumentId: string\n path: string\n typePath?: string\n instructionKey: string\n userId?: string\n userTexts?: UserTextInstance[]\n conditionalMembers?: ConditionalMemberState[]\n}\n\nexport interface InstructStatus {\n enabled: boolean\n initialized: boolean\n validToken: boolean\n}\n\nexport interface TranslateRequest {\n documentId: string\n translatePath: Path\n languagePath?: string\n styleguide: () => Promise<string | undefined>\n fieldLanguageMap?: FieldLanguageMap[]\n conditionalMembers?: ConditionalMemberState[]\n}\n\nconst basePath = '/assist/tasks/instruction'\nexport const API_VERSION_WITH_EXTENDED_TYPES = '2025-04-01'\n\nexport function canUseAssist(status: InstructStatus | undefined) {\n return status?.enabled && status.initialized && status.validToken\n}\n\nexport function useApiClient(customApiClient?: (defaultClient: SanityClient) => SanityClient) {\n const client = useClient({apiVersion: API_VERSION_WITH_EXTENDED_TYPES})\n return useMemo(\n () => (customApiClient ? customApiClient(client) : client),\n [client, customApiClient],\n )\n}\n\nexport function useTranslate(apiClient: SanityClient) {\n const [loading, setLoading] = useState(false)\n const user = useCurrentUser()\n const types = useSerializedTypes()\n const toast = useToast()\n\n const translate = useCallback(\n ({\n documentId,\n languagePath,\n styleguide,\n translatePath,\n fieldLanguageMap,\n conditionalMembers,\n }: TranslateRequest) => {\n setLoading(true)\n\n async function run() {\n return apiClient.request({\n method: 'POST',\n url: `/assist/tasks/translate/${apiClient.config().dataset}?projectId=${\n apiClient.config().projectId\n }`,\n body: {\n documentId,\n types,\n languagePath,\n userStyleguide: await styleguide(),\n fieldLanguageMap,\n conditionalMembers,\n translatePath:\n translatePath.length === 0 ? documentRootKey : pathToString(translatePath),\n userId: user?.id,\n },\n })\n }\n\n return run()\n .catch((e) => {\n toast.push({\n status: 'error',\n title: 'Translate failed',\n description: e.message,\n })\n setLoading(false)\n throw e\n })\n .finally(() => {\n // adding some artificial delay here\n // server responds with 201 then proceeds; we dont need to allow spamming the button\n setTimeout(() => {\n setLoading(false)\n }, 2000)\n })\n },\n [setLoading, apiClient, toast, user, types],\n )\n\n return useMemo(\n () => ({\n translate,\n loading,\n }),\n [translate, loading],\n )\n}\n\nexport function useGenerateCaption(apiClient: SanityClient) {\n const [loading, setLoading] = useState(false)\n const user = useCurrentUser()\n const types = useSerializedTypes()\n const toast = useToast()\n\n const generateCaption = useCallback(\n ({path, documentId}: {path: string; documentId: string}) => {\n setLoading(true)\n\n return apiClient\n .request({\n method: 'POST',\n url: `/assist/tasks/generate-caption/${apiClient.config().dataset}?projectId=${\n apiClient.config().projectId\n }`,\n body: {\n path,\n documentId,\n types,\n userId: user?.id,\n },\n })\n .catch((e) => {\n toast.push({\n status: 'error',\n title: 'Generate image description failed',\n description: e.message,\n })\n setLoading(false)\n throw e\n })\n .finally(() => {\n // adding some artificial delay here\n // server responds with 201 then proceeds; we dont need to allow spamming the button\n setTimeout(() => {\n setLoading(false)\n }, 2000)\n })\n },\n [setLoading, apiClient, toast, user, types],\n )\n\n return useMemo(\n () => ({\n generateCaption,\n loading,\n }),\n [generateCaption, loading],\n )\n}\n\nexport function useGenerateImage(apiClient: SanityClient) {\n const [loading, setLoading] = useState(false)\n const user = useCurrentUser()\n const types = useSerializedTypes()\n const toast = useToast()\n\n const generateImage = useCallback(\n ({path, documentId}: {path: string; documentId: string}) => {\n setLoading(true)\n\n return apiClient\n .request({\n method: 'POST',\n url: `/assist/tasks/generate-image/${apiClient.config().dataset}?projectId=${\n apiClient.config().projectId\n }`,\n body: {\n path,\n documentId,\n types,\n userId: user?.id,\n },\n })\n .catch((e) => {\n toast.push({\n status: 'error',\n title: 'Generate image from prompt failed',\n description: e.message,\n })\n setLoading(false)\n throw e\n })\n .finally(() => {\n // adding some artificial delay here\n // server responds with 201 then proceeds; we dont need to allow spamming the button\n setTimeout(() => {\n setLoading(false)\n }, 2000)\n })\n },\n [setLoading, apiClient, toast, user, types],\n )\n\n return useMemo(\n () => ({\n generateImage,\n loading,\n }),\n [generateImage, loading],\n )\n}\n\nexport function useGetInstructStatus(apiClient: SanityClient) {\n const [loading, setLoading] = useState(true)\n\n const getInstructStatus = useCallback(async () => {\n setLoading(true)\n\n const projectId = apiClient.config().projectId\n try {\n const status = await apiClient.request<InstructStatus>({\n method: 'GET',\n url: `${basePath}/${apiClient.config().dataset}/status?projectId=${projectId}`,\n })\n\n return status\n } finally {\n setLoading(false)\n }\n }, [setLoading, apiClient])\n\n return {\n loading,\n getInstructStatus,\n }\n}\n\nexport function useInitInstruct(apiClient: SanityClient) {\n const [loading, setLoading] = useState(false)\n const initInstruct = useCallback(() => {\n setLoading(true)\n return apiClient\n .request({\n method: 'GET',\n url: `${basePath}/${apiClient.config().dataset}/init?projectId=${\n apiClient.config().projectId\n }`,\n })\n .finally(() => {\n setLoading(false)\n })\n }, [setLoading, apiClient])\n\n return {\n loading,\n initInstruct,\n }\n}\n\nexport function useRunInstructionApi(apiClient: SanityClient) {\n const toast = useToast()\n const [loading, setLoading] = useState(false)\n const user = useCurrentUser()\n const types = useSerializedTypes()\n\n const {\n config: {assist: assistConfig},\n } = useAiAssistanceConfig()\n\n const runInstruction = useCallback(\n (request: RunInstructionRequest) => {\n if (!user) {\n toast.push({\n status: 'error',\n title: 'Unable to get user for instruction.',\n })\n return undefined\n }\n setLoading(true)\n\n const {timeZone, locale} = Intl.DateTimeFormat().resolvedOptions()\n const defaultLocaleSettings = {timeZone, locale}\n const localeSettings =\n assistConfig?.localeSettings?.({user, defaultSettings: defaultLocaleSettings}) ??\n defaultLocaleSettings\n\n return apiClient\n .request({\n method: 'POST',\n url: `${basePath}/${apiClient.config().dataset}?projectId=${\n apiClient.config().projectId\n }`,\n body: {\n ...request,\n types,\n userId: user?.id,\n localeSettings,\n maxPathDepth: assistConfig?.maxPathDepth,\n },\n })\n .catch((e) => {\n toast.push({\n status: 'error',\n title: 'Instruction failed',\n description: e.message,\n })\n throw e\n })\n .finally(() => {\n setLoading(false)\n })\n },\n [apiClient, types, user, toast, assistConfig],\n )\n\n return useMemo(\n () => ({\n runInstruction,\n loading,\n }),\n [runInstruction, loading],\n )\n}\n","import {PlayIcon} from '@sanity/icons/Play'\nimport {Button, Dialog, Flex, Stack, Text, TextArea, Tooltip} from '@sanity/ui'\nimport {\n createContext,\n type Dispatch,\n type FormEvent,\n type PropsWithChildren,\n type SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {FormFieldHeaderText} from 'sanity'\n\nimport type {CustomInputResult, GetUserInput} from '../fieldActions/useUserInput'\nimport {getInstructionTitle} from '../helpers/misc'\nimport {type UserInputBlock, userInputTypeName} from '../types'\nimport {useApiClient, useRunInstructionApi} from '../useApiClient'\nimport {useAiAssistanceConfig} from './AiAssistanceConfigContext'\nimport type {RunInstructionArgs} from './AssistLayout'\n\ntype BlockInputs = Record<string, string>\nconst NO_INPUT: BlockInputs = {}\n\nexport interface RunInstructionContextValue {\n runInstruction: (req: RunInstructionArgs) => void\n getUserInput: GetUserInput\n instructionLoading: boolean\n}\n\nconst RunInstructionContext = createContext<RunInstructionContextValue>({\n runInstruction: () => {},\n getUserInput: async () => undefined,\n instructionLoading: false,\n})\n\nexport function useRunInstruction() {\n return useContext(RunInstructionContext)\n}\n\nfunction isUserInputBlock(block: {_type: string}): block is UserInputBlock {\n return block._type === userInputTypeName\n}\n\nexport function RunInstructionProvider(props: PropsWithChildren<{}>) {\n const {config} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {runInstruction: runInstructionRequest, loading} = useRunInstructionApi(apiClient)\n\n const id = useId()\n\n const [inputs, setInputs] = useState(NO_INPUT)\n const [runRequest, setRunRequest] = useState<\n | (RunInstructionArgs & {userInputBlocks: UserInputBlock[]})\n | {dialogTitle: string; userInputBlocks: UserInputBlock[]}\n | undefined\n >()\n\n const [resolveUserInput, setResolveUserInput] =\n useState<\n (\n value: CustomInputResult[] | PromiseLike<CustomInputResult[] | undefined> | undefined,\n ) => void\n >()\n\n const getUserInput: GetUserInput = useCallback(async ({title, inputs}) => {\n const userInputBlocks: UserInputBlock[] = inputs.map((input, i) => ({\n _type: userInputTypeName,\n _key: input.id ?? `${i}`,\n message: input.title,\n description: input.description,\n }))\n\n if (!userInputBlocks.length) {\n return undefined\n }\n setRunRequest({dialogTitle: title, userInputBlocks})\n return new Promise<CustomInputResult[] | undefined>((resolve) => {\n setResolveUserInput(() => resolve)\n })\n }, [])\n\n const runInstruction = useCallback(\n (req: RunInstructionArgs) => {\n if (loading) {\n return\n }\n const {instruction, ...request} = req\n const instructionKey = instruction._key\n const userInputBlocks = instruction?.prompt\n ?.flatMap((block) =>\n block._type === 'block' ? block.children.filter(isUserInputBlock) : [block],\n )\n .filter(isUserInputBlock)\n\n if (!userInputBlocks?.length) {\n void runInstructionRequest({\n ...request,\n instructionKey,\n userTexts: undefined,\n })\n return\n }\n\n setRunRequest({\n ...req,\n userInputBlocks,\n })\n },\n [runInstructionRequest, loading],\n )\n\n const close = useCallback(() => {\n setRunRequest(undefined)\n setInputs(NO_INPUT)\n if (resolveUserInput) {\n resolveUserInput(undefined)\n }\n setResolveUserInput(undefined)\n }, [resolveUserInput])\n\n const runWithInput = useCallback(() => {\n if (runRequest) {\n if ('instruction' in runRequest) {\n const {instruction, userInputBlocks: _, ...request} = runRequest\n void runInstructionRequest({\n ...request,\n instructionKey: instruction._key,\n userTexts: Object.entries(inputs).map(([key, value]) => ({\n blockKey: key,\n userInput: value,\n })),\n })\n } else {\n const userInputs = Object.values(inputs).map((input, i) => {\n const userInputBlock = runRequest.userInputBlocks[i]!\n return {\n input: {\n id: userInputBlock._key,\n title: userInputBlock.message ?? '',\n description: userInputBlock.description,\n },\n result: input,\n }\n })\n resolveUserInput?.(userInputs)\n setResolveUserInput(undefined)\n }\n }\n close()\n }, [close, runInstructionRequest, runRequest, inputs, resolveUserInput])\n\n const open = !!runRequest\n\n const runDisabled = useMemo(\n () =>\n (runRequest?.userInputBlocks?.length ?? 0) >\n Object.entries(inputs).filter(([, value]) => !!value).length,\n [runRequest?.userInputBlocks, inputs],\n )\n\n const runButton = (\n <Button\n text=\"Run instruction\"\n onClick={runWithInput}\n tone=\"primary\"\n icon={PlayIcon}\n style={{width: '100%'}}\n disabled={runDisabled}\n />\n )\n\n const contextValue: RunInstructionContextValue = useMemo(\n // oxlint-disable-next-line react/react-compiler\n () => ({runInstruction, getUserInput, instructionLoading: loading}),\n // oxlint-disable-next-line react-hooks/exhaustive-deps\n [runInstruction, loading],\n )\n\n return (\n <RunInstructionContext.Provider value={contextValue}>\n {open ? (\n <Dialog\n id={id}\n open={open}\n onClose={close}\n width={1}\n header={\n 'dialogTitle' in runRequest\n ? runRequest.dialogTitle\n : getInstructionTitle(runRequest?.instruction)\n }\n footer={\n <Flex justify=\"space-between\" padding={2} flex={1}>\n {runDisabled ? (\n <Tooltip\n content={\n <Flex padding={2}>\n <Text>Unable to run instruction. All fields must have a value.</Text>\n </Flex>\n }\n placement=\"top\"\n >\n <Flex flex={1}>{runButton}</Flex>\n </Tooltip>\n ) : (\n runButton\n )}\n </Flex>\n }\n >\n <Stack padding={4} gap={2}>\n {runRequest?.userInputBlocks?.map((block, i) => (\n <UserInput\n key={block._key}\n block={block}\n autoFocus={i === 0}\n inputs={inputs}\n setInputs={setInputs}\n />\n ))}\n </Stack>\n </Dialog>\n ) : null}\n {props.children}\n </RunInstructionContext.Provider>\n )\n}\n\nfunction UserInput(props: {\n block: UserInputBlock\n inputs: BlockInputs\n setInputs: Dispatch<SetStateAction<BlockInputs>>\n autoFocus?: boolean\n}) {\n const {block, autoFocus, setInputs, inputs} = props\n const key = block._key\n const textAreaRef = useRef<HTMLTextAreaElement>(null)\n\n const onChange = useCallback(\n // oxlint-disable-next-line no-deprecated\n (e: FormEvent<HTMLTextAreaElement>) => {\n setInputs((current) => ({\n ...current,\n [key]: (e.currentTarget ?? e.target).value,\n }))\n },\n [key, setInputs],\n )\n\n const value = useMemo(() => inputs[key], [inputs, key])\n\n useEffect(() => {\n if (!autoFocus) {\n return\n }\n setTimeout(() => textAreaRef.current?.focus(), 0)\n }, [autoFocus])\n\n return (\n <Stack padding={2} gap={3}>\n <FormFieldHeaderText\n title={block?.message ?? 'Provide more context'}\n description={block.description}\n />\n <TextArea\n ref={textAreaRef}\n rows={4}\n value={value}\n onChange={onChange}\n style={{resize: 'vertical'}}\n />\n </Stack>\n )\n}\n","import {useCallback, useEffect, useState} from 'react'\nimport {type ObjectSchemaType, PatchEvent, type SanityDocument, unset} from 'sanity'\n\nimport {useRunInstruction} from '../assistLayout/RunInstructionProvider'\n\nexport interface DraftDelayedTaskArgs<T> {\n documentOnChange: (event: PatchEvent) => void\n // indicates if the document is a draft or liveEditable currently\n isDocAssistable: boolean\n task: (args: T) => void\n}\n\nexport function isDocAssistable(\n documentSchemaType: ObjectSchemaType,\n published?: SanityDocument | null,\n draft?: SanityDocument | null,\n) {\n return !!(documentSchemaType.liveEdit ? published : draft)\n}\n\nexport function useRequestRunInstruction(args: {\n documentOnChange: (event: PatchEvent) => void\n // indicates if the document is a draft or liveEditable currently\n isDocAssistable: boolean\n}) {\n const {runInstruction, instructionLoading} = useRunInstruction()\n const requestRunInstruction = useDraftDelayedTask({\n ...args,\n task: runInstruction,\n })\n\n return {\n instructionLoading,\n requestRunInstruction,\n }\n}\n\n/**\n * Ensures that the current document is a draft before running task\n */\nexport function useDraftDelayedTask<T>(args: DraftDelayedTaskArgs<T>) {\n const {documentOnChange, isDocAssistable, task} = args\n\n const [queuedArgs, setQueuedArgs] = useState<T | undefined>(undefined)\n\n useEffect(() => {\n if (queuedArgs && isDocAssistable) {\n task(queuedArgs)\n // oxlint-disable-next-line react/react-compiler\n setQueuedArgs(undefined)\n }\n }, [queuedArgs, isDocAssistable, task])\n\n return useCallback(\n (taskArgs: T) => {\n // make a dummy edit: this will trigger the document/draft to be created\n documentOnChange(PatchEvent.from([unset(['_force_document_creation'])]))\n setQueuedArgs(taskArgs)\n },\n [setQueuedArgs, documentOnChange],\n )\n}\n","import {useCallback, useEffect, useMemo, useState} from 'react'\nimport {getDraftId, getVersionId, type ObjectSchemaType, usePerspective, useSchema} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {useAiPaneRouter} from '../../assistInspector/helpers'\nimport {useAiAssistanceConfig} from '../../assistLayout/AiAssistanceConfigContext'\nimport {fieldPathParam, type InstructionTask} from '../../types'\nimport type {AssistDocumentContextValue} from '../AssistDocumentContext'\nimport {isDocAssistable} from '../RequestRunInstructionProvider'\nimport {useStudioAssistDocument} from './useStudioAssistDocument'\n\nexport function useAssistDocumentContextValue(documentId: string, documentType: string) {\n const schema = useSchema()\n\n const {getFieldRefs, getFieldRefsByTypePath} = useAiAssistanceConfig()\n const documentSchemaType = useMemo(() => {\n // oxlint-disable-next-line no-unsafe-type-assertion\n const schemaType = schema.get(documentType) as ObjectSchemaType | undefined\n if (!schemaType) {\n throw new Error(`Schema type \"${documentType}\" not found`)\n }\n return schemaType\n }, [documentType, schema])\n\n const {fieldRefs, fieldRefsByTypePath} = useMemo(() => {\n return {\n fieldRefs: getFieldRefs(documentType),\n fieldRefsByTypePath: getFieldRefsByTypePath(documentType),\n }\n }, [getFieldRefs, getFieldRefsByTypePath, documentType])\n\n const {\n openInspector,\n closeInspector,\n inspector,\n onChange: documentOnChange,\n editState,\n } = useDocumentPane()\n const {selectedReleaseId} = usePerspective()\n const {draft, published, version} = editState || {}\n\n const assistableDocumentId = selectedReleaseId\n ? getVersionId(documentId, selectedReleaseId)\n : documentSchemaType.liveEdit\n ? documentId\n : getDraftId(documentId)\n\n const documentIsNew = selectedReleaseId ? !version?._id : !draft?._id && !published?._id\n const documentIsAssistable = selectedReleaseId\n ? !!version\n : isDocAssistable(documentSchemaType, published, draft)\n\n const {params} = useAiPaneRouter()\n const selectedPath = params[fieldPathParam]\n\n const assistDocument = useStudioAssistDocument({\n documentId: assistableDocumentId,\n schemaType: documentSchemaType,\n })\n const {syntheticTasks, addSyntheticTask, removeSyntheticTask} =\n useSyntheticTasks(assistableDocumentId)\n\n const value: AssistDocumentContextValue = useMemo(() => {\n const base = {\n assistableDocumentId,\n documentSchemaType,\n documentIsNew,\n documentIsAssistable,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n selectedPath,\n syntheticTasks,\n addSyntheticTask,\n removeSyntheticTask,\n fieldRefs,\n fieldRefsByTypePath,\n }\n if (!assistDocument) {\n return {...base, loading: true, assistDocument: undefined}\n }\n return {\n ...base,\n loading: false,\n assistDocument: assistDocument,\n }\n }, [\n assistDocument,\n documentIsAssistable,\n assistableDocumentId,\n documentSchemaType,\n documentIsNew,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n selectedPath,\n syntheticTasks,\n addSyntheticTask,\n removeSyntheticTask,\n fieldRefs,\n fieldRefsByTypePath,\n ])\n\n return value\n}\n\nfunction useSyntheticTasks(assistableDocumentId: string) {\n const [syntheticTasks, setSyntheticTasks] = useState<InstructionTask[]>(() => [])\n const addSyntheticTask = useCallback((task: InstructionTask) => {\n setSyntheticTasks((current) => [...current, task])\n }, [])\n const removeSyntheticTask = useCallback((task: InstructionTask) => {\n setSyntheticTasks((current) => current.filter((t) => task._key !== t._key))\n }, [])\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler\n setSyntheticTasks([])\n }, [assistableDocumentId])\n\n return {\n syntheticTasks,\n addSyntheticTask,\n removeSyntheticTask,\n }\n}\n","import type {PropsWithChildren} from 'react'\n\nimport {AssistDocumentContext} from './AssistDocumentContext'\nimport {useAssistDocumentContextValue} from './hooks/useAssistDocumentContextValue'\n\nexport interface AIDocumentInputProps {\n documentId: string\n documentType: string\n}\n\nexport function AssistDocumentContextProvider(props: PropsWithChildren<AIDocumentInputProps>) {\n const {documentId, documentType} = props\n const value = useAssistDocumentContextValue(documentId, documentType)\n return (\n <AssistDocumentContext.Provider value={value}>{props.children}</AssistDocumentContext.Provider>\n )\n}\n","import type {DocumentLayoutProps} from 'sanity'\n\nimport {AssistDocumentContextProvider} from './AssistDocumentContextProvider'\n\nexport function AssistDocumentLayout(props: DocumentLayoutProps) {\n const {documentId, documentType} = props\n return (\n <AssistDocumentContextProvider documentType={documentType} documentId={documentId}>\n {props.renderDefault(props)}\n </AssistDocumentContextProvider>\n )\n}\n","import {type ReactElement, type ReactNode, type Ref} from 'react'\nimport {keyframes, styled} from 'styled-components'\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n transform: scale(0.75);\n }\n 40% {\n opacity: 0;\n transform: scale(0.75);\n }\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n`\n\nconst FadeInDiv = styled.div`\n animation-name: ${fadeIn};\n animation-timing-function: ease-in-out;\n`\n\nexport function FadeInContent({\n children,\n durationMs = 250,\n ref,\n}: {\n children?: ReactNode\n ms?: number\n durationMs?: number\n ref?: Ref<HTMLDivElement>\n}): ReactElement {\n return (\n <FadeInDiv ref={ref} style={{animationDuration: `${durationMs}ms`}}>\n {children}\n </FadeInDiv>\n )\n}\n","import {purple} from '@sanity/color'\nimport {SparklesIcon} from '@sanity/icons/Sparkles'\nimport {Text} from '@sanity/ui'\nimport {type CSSProperties, useMemo} from 'react'\nimport {useColorSchemeValue} from 'sanity'\nimport {keyframes, styled} from 'styled-components'\n\nconst Root = styled.span`\n display: block;\n width: 25px;\n height: 25px;\n position: relative;\n`\n\nconst dash = keyframes`\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(43deg);\n }\n`\n\nconst Outline = styled.svg`\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n\n & > circle {\n stroke: var(--ai-avatar-stroke-color);\n stroke-width: 1.5px;\n stroke-linecap: round;\n transform-origin: center;\n animation: ${dash} 500ms ease-in-out infinite;\n transition: stroke-dasharray 200ms ease-in-out;\n\n stroke-dasharray: 2.34px 0;\n\n [data-state='active'] > & {\n stroke-dasharray: 2px 2.34px;\n }\n }\n`\n\nconst IconDisc = styled.span`\n background: var(--ai-avatar-disc-color);\n color: white;\n width: 21px;\n height: 21px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10.5px;\n position: absolute;\n top: 2px;\n left: 2px;\n`\n\nexport function AssistAvatar(props: {state?: 'present' | 'active'}) {\n const {state = 'present'} = props\n const scheme = useColorSchemeValue()\n\n const style = useMemo(() => {\n if (scheme === 'dark') {\n // oxlint-disable-next-line no-unsafe-type-assertion\n return {\n [`--ai-avatar-stroke-color`]: purple[400].hex,\n [`--ai-avatar-disc-color`]: purple[600].hex,\n } as CSSProperties\n }\n\n // oxlint-disable-next-line no-unsafe-type-assertion\n return {\n [`--ai-avatar-stroke-color`]: purple[500].hex,\n [`--ai-avatar-disc-color`]: purple[600].hex,\n } as CSSProperties\n }, [scheme])\n\n return (\n <Root data-state={state} style={style}>\n <Outline\n width=\"25\"\n height=\"25\"\n viewBox=\"0 0 25 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"12.5\" cy=\"12.5\" r=\"11.75\" />\n </Outline>\n <IconDisc>\n <Text as=\"span\" size={0} style={{color: 'inherit'}}>\n <SparklesIcon style={{color: 'inherit'}} />\n </Text>\n </IconDisc>\n </Root>\n )\n}\n","import {Card, Flex, Text, Tooltip} from '@sanity/ui'\nimport type {FormNodePresence} from 'sanity'\n\nimport {FadeInContent} from '../components/FadeInContent'\nimport {AssistAvatar} from './AssistAvatar'\n\nexport function AiFieldPresence(_props: {presence: FormNodePresence}) {\n return (\n <Card style={{position: 'relative', background: 'transparent'}} contentEditable={false}>\n <Tooltip\n placement=\"left\"\n content={\n <Card padding={3} border>\n <Flex align=\"center\">\n <Text size={1}>Running instruction...</Text>\n </Flex>\n </Card>\n }\n >\n <FadeInContent durationMs={300}>\n <AssistAvatar state=\"active\" />\n </FadeInContent>\n </Tooltip>\n </Card>\n )\n}\n","import {useMemo} from 'react'\nimport {type FormNodePresence, isKeySegment, type Path, stringToPath} from 'sanity'\n\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {maxHistoryVisibilityMs, pluginTitle} from '../constants'\nimport type {AiPresence} from '../types'\n\nconst NO_PRESENCE: FormNodePresence[] = []\n\nexport function useAssistPresence(path: Path, showFocusWithin?: boolean): FormNodePresence[] {\n const context = useAssistDocumentContext()\n const assistDocument = context && 'assistDocument' in context ? context.assistDocument : undefined\n const tasks = assistDocument?.tasks\n\n return useMemo(() => {\n const activePresence = tasks\n ?.filter((task) => !task.ended)\n ?.flatMap((task) => task.presence ?? [])\n ?.filter(\n (p) =>\n p.started &&\n new Date().getTime() - new Date(p.started).getTime() < maxHistoryVisibilityMs,\n )\n .filter((presence) => {\n if (!presence.path || !path.length) {\n return false\n }\n const statusPath = stringToPath(presence.path)\n\n if (!showFocusWithin && statusPath.length !== path.length) {\n return false\n }\n\n return path.every((pathSegment, i) => {\n const statusSegment = statusPath[i]\n if (typeof pathSegment === 'string') {\n return pathSegment === statusSegment\n }\n if (isKeySegment(pathSegment) && statusSegment && isKeySegment(statusSegment)) {\n return pathSegment._key === statusSegment._key\n }\n return false\n })\n })\n if (!activePresence?.length) {\n return NO_PRESENCE\n }\n\n return activePresence.map((status) => aiPresence(status, path))\n }, [showFocusWithin, tasks, path])\n}\n\nexport function aiPresence(presence: AiPresence, path: Path, _title?: string): FormNodePresence {\n return {\n user: {\n id: `sanity-assistant_${presence._key}`,\n displayName: pluginTitle,\n },\n path: path,\n sessionId: 'not-available',\n lastActiveAt: presence?.started ?? new Date().toISOString(),\n }\n}\n","import {Box, Flex} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {type FieldProps, isArraySchemaType} from 'sanity'\n\nimport {assistFormId} from '../_lib/form/constants'\nimport {isAssistSupported} from '../helpers/assistSupported'\nimport {isPortableTextArray, isType} from '../helpers/typeUtils'\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\nimport {useAssistPresence} from '../presence/useAssistPresence'\nimport {contextDocumentTypeName} from '../types'\n\nexport function AssistFieldWrapper(props: FieldProps) {\n const {schemaType} = props\n\n const isSupported = useMemo(() => isAssistSupported(schemaType), [schemaType])\n\n if (\n !isSupported ||\n schemaType.name.startsWith('sanity.') ||\n schemaType.name === contextDocumentTypeName\n ) {\n return props.renderDefault(props)\n }\n if (\n !isType(props.schemaType, 'document') &&\n props.inputId !== 'root' &&\n props.inputId !== assistFormId\n ) {\n return <AssistField {...props}>{props.children}</AssistField>\n }\n\n return props.renderDefault(props)\n}\n\nfunction AssistField(props: FieldProps) {\n const isPortableText = useMemo(\n () => !!(isArraySchemaType(props.schemaType) && isPortableTextArray(props.schemaType)),\n [props.schemaType],\n )\n\n const presence = useAssistPresence(props.path, isPortableText)\n const singlePresence = presence[0]\n\n const actions = (\n <Flex gap={2} align=\"center\" justify=\"space-between\">\n {singlePresence && (\n <Box>\n <AiFieldPresence presence={singlePresence} />\n </Box>\n )}\n </Flex>\n )\n\n return props.renderDefault({\n ...props,\n\n actions: props.actions,\n\n // Render presence in the internal slot (between presence and the field actions)\n // oxlint-disable-next-line no-deprecated -- the slot is deprecated for external use but exists specifically for this plugin\n __internal_slot: actions,\n })\n}\n","import {Box, Button, Card, ErrorBoundary, Flex, Stack, Text} from '@sanity/ui'\nimport {type ErrorInfo, type PropsWithChildren, useCallback, useMemo, useState} from 'react'\nimport {type InputProps, isArraySchemaType, PatchEvent, unset} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {isPortableTextArray} from '../helpers/typeUtils'\n\nconst WrapPreCard = styled(Card)`\n & pre {\n white-space: pre-wrap !important;\n }\n`\n\nexport function SafeValueInput(props: InputProps) {\n return (\n <ErrorWrapper onChange={props.onChange}>\n <PteValueFixer {...props} />\n </ErrorWrapper>\n )\n}\n\nexport function ErrorWrapper(\n props: PropsWithChildren<{onChange: (patchEvent: PatchEvent) => void}>,\n) {\n const {onChange} = props\n const [error, setError] = useState<Error | undefined>()\n\n const catchError = useCallback((params: {error: Error; info: ErrorInfo}) => {\n setError(params.error)\n }, [])\n\n const unsetValue = useCallback(() => {\n onChange(PatchEvent.from(unset()))\n setError(undefined)\n }, [onChange])\n const dismiss = useCallback(() => setError(undefined), [])\n const catcher = <ErrorBoundary onCatch={catchError}>{props.children}</ErrorBoundary>\n\n return error ? (\n <Card border tone=\"critical\" padding={2} contentEditable={false}>\n <Stack gap={3}>\n <Text muted weight=\"semibold\">\n An error occurred.\n </Text>\n\n <WrapPreCard flex={1} padding={2} tone=\"critical\" border>\n {catcher}\n </WrapPreCard>\n\n <Flex flex={1} gap={3}>\n <Box flex={1}>\n <Button text=\"Dismiss\" onClick={dismiss} tone=\"primary\" />\n </Box>\n <Button text=\"Unset value\" onClick={unsetValue} tone=\"critical\" />\n </Flex>\n </Stack>\n </Card>\n ) : (\n catcher\n )\n}\n\nfunction PteValueFixer(props: InputProps) {\n const isPortableText = useMemo(\n () => isArraySchemaType(props.schemaType) && isPortableTextArray(props.schemaType),\n [props.schemaType],\n )\n const value = props.value\n // oxlint-disable-next-line no-unsafe-type-assertion\n if (isPortableText && value && !(value as any[]).length) {\n return props.renderDefault({...props, value: undefined})\n }\n\n return props.renderDefault(props)\n}\n","import {Box, Flex} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {type BlockProps, PatchEvent, useFormCallbacks} from 'sanity'\n\nimport {ErrorWrapper} from '../components/SafeValueInput'\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\nimport {useAssistPresence} from '../presence/useAssistPresence'\n\nexport function AssistFormBlock(props: BlockProps) {\n const presence = useAssistPresence(props.path, true)\n const {onChange} = useFormCallbacks()\n const key = props.value._key\n const localOnChange = useCallback(\n (patchEvent: PatchEvent) => {\n if (!key) {\n return\n }\n onChange(PatchEvent.from(patchEvent).prefixAll({_key: key}))\n },\n [onChange, key],\n )\n const singlePresence = presence[0]\n return (\n <ErrorWrapper onChange={localOnChange}>\n <Flex align=\"center\" justify=\"space-between\">\n <Box flex={1}>{props.renderDefault(props)}</Box>\n {singlePresence && <AiFieldPresence presence={singlePresence} />}\n </Flex>\n </ErrorWrapper>\n )\n}\n","import {createContext} from 'react'\nimport type {BlockProps} from 'sanity'\n\n// workaround for preview value sometimes lagging behind\nexport const InlineBlockValueContext = createContext<unknown>(undefined)\n\nexport function AssistInlineFormBlock(props: BlockProps) {\n return (\n <InlineBlockValueContext.Provider value={props.value}>\n <>{props.renderDefault(props)}</>\n </InlineBlockValueContext.Provider>\n )\n}\n","import {Box, Flex} from '@sanity/ui'\nimport type {ItemProps} from 'sanity'\n\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\nimport {useAssistPresence} from '../presence/useAssistPresence'\n\nexport function AssistItem(props: ItemProps) {\n const {path} = props\n const presence = useAssistPresence(path, true)\n\n return (\n <Flex align=\"center\" style={{position: 'relative'}}>\n <Box flex={1}>{props.renderDefault({...props})}</Box>\n {presence.map((pre) => (\n <Box key={pre.user.id} style={{position: 'absolute', right: 35}}>\n <AiFieldPresence presence={pre} />\n </Box>\n ))}\n </Flex>\n )\n}\n","import {Box, type BoxProps, Flex, focusFirstDescendant, Spinner, Text} from '@sanity/ui'\nimport type React from 'react'\nimport {type HTMLProps, useEffect, useEffectEvent, useMemo, useRef} from 'react'\nimport {tap} from 'rxjs/operators'\nimport {\n createPatchChannel,\n type DocumentMutationEvent,\n type DocumentRebaseEvent,\n FormBuilder,\n fromMutationPatches,\n type PatchMsg,\n useDocumentPresence,\n useDocumentStore,\n} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {assistFormId} from './constants'\n\n// oxlint-disable-next-line no-deprecated\nconst preventDefault = (ev: React.FormEvent) => ev.preventDefault()\n\nexport function DocumentForm(\n props: Omit<BoxProps<'form'>, 'as'> & Omit<HTMLProps<HTMLFormElement>, 'as' | 'onSubmit' | 'ref'>,\n) {\n const {\n collapsedFieldSets,\n collapsedPaths,\n displayed: value,\n documentId,\n documentType,\n editState,\n formState,\n onBlur,\n onChange,\n onFocus,\n onPathOpen,\n onSetActiveFieldGroup,\n onSetCollapsedFieldSet,\n onSetCollapsedPath,\n ready,\n validation,\n } = useDocumentPane()\n\n const documentStore = useDocumentStore()\n const presence = useDocumentPresence(documentId)\n\n // The `patchChannel` is an INTERNAL publish/subscribe channel that we use to notify form-builder\n // nodes about both remote and local patches.\n // - Used by the Portable Text input to modify selections.\n // - Used by `withDocument` to reset value.\n const patchChannel = useMemo(() => createPatchChannel(), [])\n\n const isLocked = editState?.transactionSyncLock?.enabled\n\n useEffect(() => {\n const sub = documentStore.pair\n .documentEvents(documentId, documentType)\n .pipe(\n tap((event) => {\n if (event.type === 'mutation') {\n patchChannel.publish(prepareMutationEvent(event))\n }\n\n if (event.type === 'rebase') {\n patchChannel.publish(prepareRebaseEvent(event))\n }\n }),\n )\n .subscribe()\n\n return () => {\n sub.unsubscribe()\n }\n }, [documentId, documentStore, documentType, patchChannel])\n\n const hasRev = Boolean(value?._rev)\n const patchChannelPublish = useEffectEvent(() => {\n // this is a workaround for an issue that caused the document pushed to withDocument to get\n // stuck at the first initial value.\n // This effect is triggered only when the document goes from not having a revision, to getting one\n // so it will kick in as soon as the document is received from the backend\n patchChannel.publish({\n type: 'mutation',\n patches: [],\n snapshot: value,\n })\n })\n useEffect(() => {\n if (hasRev) {\n // React to changes in hasRev only\n patchChannelPublish()\n }\n }, [hasRev])\n\n const formRef = useRef<null | HTMLFormElement>(null)\n\n useEffect(() => {\n focusFirstDescendant(formRef.current!)\n }, [])\n\n if (isLocked) {\n return (\n <Box as=\"form\" {...props} ref={formRef}>\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Text size={1}>\n Please hold tight while the document is synced. This usually happens right after the\n document has been published, and it shouldn’t take more than a few seconds\n </Text>\n </Flex>\n </Box>\n )\n }\n\n return (\n <Box as=\"form\" {...props} onSubmit={preventDefault} ref={formRef}>\n {ready ? (\n formState === null ? (\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Text size={1}>This form is hidden</Text>\n </Flex>\n ) : (\n <FormBuilder\n __internal_patchChannel={patchChannel}\n collapsedFieldSets={collapsedFieldSets}\n collapsedPaths={collapsedPaths}\n focusPath={formState.focusPath}\n changed={formState.changed}\n focused={formState.focused}\n groups={formState.groups}\n id={assistFormId}\n members={formState.members}\n onChange={onChange}\n onFieldGroupSelect={onSetActiveFieldGroup}\n onPathBlur={onBlur}\n onPathFocus={onFocus}\n onPathOpen={onPathOpen}\n onSetFieldSetCollapsed={onSetCollapsedFieldSet}\n onSetPathCollapsed={onSetCollapsedPath}\n presence={presence}\n readOnly={formState.readOnly}\n schemaType={formState.schemaType}\n validation={validation}\n // oxlint-disable-next-line no-unsafe-type-assertion\n value={formState.value as any}\n hasUpstreamVersion={false}\n />\n )\n ) : (\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Spinner muted />\n\n <Box marginTop={3}>\n <Text align=\"center\" muted size={1}>\n Loading document\n </Text>\n </Box>\n </Flex>\n )}\n </Box>\n )\n}\n\nfunction prepareMutationEvent(event: DocumentMutationEvent): PatchMsg {\n const patches = event.mutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'mutation',\n snapshot: event.document,\n patches: fromMutationPatches(event.origin, patches),\n }\n}\n\nfunction prepareRebaseEvent(event: DocumentRebaseEvent): PatchMsg {\n const remotePatches = event.remoteMutations.map((mut) => mut.patch).filter(Boolean)\n const localPatches = event.localMutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'rebase',\n snapshot: event.document,\n patches: fromMutationPatches('remote', remotePatches).concat(\n fromMutationPatches('local', localPatches),\n ),\n }\n}\n","import {createContext} from 'react'\n\nexport interface AssistTypeContextValue {\n typePath?: string\n documentType?: string\n}\nexport const AssistTypeContext = createContext<AssistTypeContextValue>({})\n","// oxlint-disable no-accumulating-spread\nimport {\n type ArrayOfObjectsFormNode,\n type ArrayOfObjectsItemMember,\n type ArrayOfPrimitivesFormNode,\n type DocumentFormNode,\n type FieldsetState,\n isObjectSchemaType,\n type ObjectFormNode,\n type Path,\n pathToString,\n type SchemaType,\n} from 'sanity'\n\nconst DEFAULT_MAX_DEPTH = 8\nconst ABSOLUTE_MAX_DEPTH = 50\n\nexport interface ConditionalMemberState {\n path: string\n hidden: boolean\n readOnly: boolean\n}\n\ninterface ConditionalMemberInnerState extends ConditionalMemberState {\n conditional: boolean\n}\n\n/**\n * This is used to statically determine the state of the functions on the server-side.\n * Paths which has a schema with conditional config should be considered hidden: true and/or readOnly: true\n * Only conditional paths are included, as static props can be determined from schema.\n *\n * Returns paths that has conditional hidden or readOnly schema config (function) and that.\n * Form-state does not contain hidden members.\n *\n * Note:\n * * If a parent path is hidden, no child paths are included\n * * If a parent path is readOnly, no child paths are included\n * * If a path is hidden, it is not included; only conditionally visible paths will be returned, with hidden: false\n */\nexport function getConditionalMembers(\n docState: DocumentFormNode,\n maxDepth = DEFAULT_MAX_DEPTH,\n): ConditionalMemberState[] {\n const doc: ConditionalMemberInnerState = {\n path: '',\n hidden: false,\n readOnly: !!docState.readOnly,\n conditional: isConditional(docState.schemaType),\n }\n return (\n [doc, ...extractConditionalPaths(docState, Math.min(maxDepth, ABSOLUTE_MAX_DEPTH))]\n .filter((v) => v.conditional)\n // oxlint-disable-next-line no-map-spread\n .map(({conditional: _conditional, ...state}) => ({...state}))\n )\n}\n\nfunction isConditional(schemaType: SchemaType) {\n return typeof schemaType.hidden === 'function' || typeof schemaType.readOnly === 'function'\n}\n\nfunction conditionalState(memberState: {\n path: Path\n schemaType: SchemaType\n readOnly?: boolean\n}): ConditionalMemberInnerState {\n return {\n path: pathToString(memberState.path),\n readOnly: !!memberState.readOnly, // Use actual form state readOnly value\n hidden: false, // If it's in form state members, it's not hidden\n conditional: isConditional(memberState.schemaType),\n }\n}\n\nfunction extractConditionalPaths(\n node: ObjectFormNode | FieldsetState,\n maxDepth: number,\n): ConditionalMemberInnerState[] {\n if (node.path.length >= maxDepth) {\n return []\n }\n\n return node.members.reduce<ConditionalMemberInnerState[]>((acc, member) => {\n if (member.kind === 'error') {\n return acc\n }\n if (member.kind === 'field') {\n const schemaType = member.field.schemaType\n if (schemaType.jsonType === 'object') {\n const innerFields = member.field.readOnly\n ? []\n : // oxlint-disable-next-line no-unsafe-type-assertion\n extractConditionalPaths(member.field as ObjectFormNode, maxDepth)\n return [...acc, conditionalState(member.field), ...innerFields]\n } else if (schemaType.jsonType === 'array') {\n // oxlint-disable-next-line no-unsafe-type-assertion\n const array = member.field as ArrayOfObjectsFormNode | ArrayOfPrimitivesFormNode\n\n let arrayPaths: ConditionalMemberInnerState[] = []\n const isObjectsArray = array.members.some(\n (m) => m.kind === 'item' && isObjectSchemaType(m.item.schemaType),\n )\n if (!array.readOnly) {\n for (const arrayMember of array.members) {\n if (arrayMember.kind === 'error') {\n continue\n }\n\n const innerFields =\n isObjectsArray && !arrayMember.item.readOnly\n ? // oxlint-disable-next-line no-unsafe-type-assertion\n extractConditionalPaths((arrayMember as ArrayOfObjectsItemMember).item, maxDepth)\n : []\n\n arrayPaths = [...arrayPaths, conditionalState(arrayMember.item), ...innerFields]\n }\n }\n return [...acc, conditionalState(array), ...arrayPaths]\n }\n\n return [...acc, conditionalState(member.field)]\n } else if (member.kind === 'fieldSet') {\n // oxlint-disable-next-line no-unsafe-type-assertion\n const conditionalFieldset = !!(node as ObjectFormNode).schemaType?.fieldsets?.some(\n (f) => !f.single && f.name === member.fieldSet.name && typeof f.hidden === 'function',\n )\n // oxlint-disable-next-line no-map-spread\n const innerFields = extractConditionalPaths(member.fieldSet, maxDepth).map((f) => ({\n ...f,\n // if fieldset is conditional, visible fields must also be considered conditional\n conditional: conditionalFieldset || f.conditional,\n }))\n return [...acc, ...innerFields]\n }\n\n return acc\n }, [])\n}\n","import {SparklesIcon} from '@sanity/icons/Sparkles'\nimport {Box, Button, Container, Flex, Stack, Text} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {releaseAnnouncementUrl} from '../constants'\n\nconst SparklesIllustration = styled(SparklesIcon)({\n 'fontSize': '3.125em',\n '& path': {\n strokeWidth: `0.6px !important`,\n },\n})\n\nexport function InspectorOnboarding(props: {onDismiss: () => void}) {\n const {onDismiss} = props\n return (\n <Box padding={4}>\n <Container width={0}>\n <Stack gap={4}>\n <div style={{textAlign: 'center'}}>\n <SparklesIllustration />\n </div>\n <Text align=\"center\" size={1}>\n Create reusable AI instructions that can be applied across all documents of a certain\n type.\n </Text>\n\n <Flex align=\"center\" gap={2} justify=\"center\">\n <Button\n as=\"a\"\n href={releaseAnnouncementUrl}\n rel=\"noreferrer\"\n target=\"_blank\"\n fontSize={1}\n mode=\"default\"\n onClick={onDismiss}\n padding={2}\n text=\"Learn more\"\n tone=\"primary\"\n />\n <Button fontSize={1} mode=\"bleed\" onClick={onDismiss} padding={2} text=\"Dismiss\" />\n </Flex>\n </Stack>\n </Container>\n </Box>\n )\n}\n","import {useCallback, useState} from 'react'\n\nexport const inspectorOnboardingKey = 'sanityStudio:assist:inspector:onboarding:dismissed'\n\nfunction isFeatureOnboardingDismissed(featureKey: string): boolean {\n if (typeof localStorage === 'undefined') {\n return false\n }\n\n const value = localStorage.getItem(featureKey)\n return value === 'true'\n}\n\nfunction dismissFeatureOnboarding(featureKey: string) {\n if (typeof localStorage === 'undefined') {\n return\n }\n\n localStorage.setItem(featureKey, 'true')\n}\n\nexport function useOnboardingFeature(featureKey: string) {\n const [showOnboarding, setShowOnboarding] = useState(\n () => !isFeatureOnboardingDismissed(featureKey),\n )\n const dismissOnboarding = useCallback(() => {\n setShowOnboarding(false)\n dismissFeatureOnboarding(featureKey)\n }, [setShowOnboarding, featureKey])\n\n return {showOnboarding, dismissOnboarding}\n}\n","import {SearchIcon} from '@sanity/icons/Search'\nimport {Autocomplete, Box, Breadcrumbs, Card, Flex, Text} from '@sanity/ui'\nimport {useCallback, useMemo} from 'react'\nimport type {ObjectSchemaType} from 'sanity'\n\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {isType} from '../helpers/typeUtils'\nimport {type FieldRef, getDocumentFieldRef} from './helpers'\n\ninterface FieldSelectorProps {\n id: string\n schemaType: ObjectSchemaType\n fieldPath?: string\n onSelect: (path: string) => void\n includeDocument?: boolean\n filter?: (field: FieldRef) => boolean\n}\n\nexport function FieldAutocomplete(props: FieldSelectorProps) {\n const {id, schemaType, fieldPath, onSelect, includeDocument, filter} = props\n\n const {getFieldRefs} = useAiAssistanceConfig()\n\n const fieldRefs = useMemo(() => {\n const refs = getFieldRefs(schemaType.name)\n if (includeDocument) {\n return [getDocumentFieldRef(schemaType), ...refs]\n }\n return refs\n }, [schemaType, includeDocument, getFieldRefs])\n\n const currentField = useMemo(\n () => fieldRefs.find((f) => f.key === fieldPath),\n [fieldPath, fieldRefs],\n )\n\n const autocompleteOptions = useMemo(\n () =>\n fieldRefs\n .filter((field) => (filter ? filter(field) : true))\n .filter((f) => !isType(f.schemaType, 'reference'))\n .map((field) => ({value: field.key, field})),\n [fieldRefs, filter],\n )\n\n const renderOption = useCallback((option: {value: string; field: FieldRef}) => {\n const {value, field} = option\n\n if (!value) {\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Text accent size={1}>\n {option.value}\n </Text>\n </Card>\n )\n }\n\n if (isType(field.schemaType, 'document')) {\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Text size={1} weight=\"semibold\">\n The entire document\n </Text>\n </Card>\n )\n }\n\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Flex gap={3}>\n <Text size={1}>\n <field.icon />\n </Text>\n\n <FieldTitle field={field} />\n </Flex>\n </Card>\n )\n }, [])\n\n const renderValue = useCallback((value: string, option?: {value: string; field: FieldRef}) => {\n return option?.field.title ?? value\n }, [])\n\n const filterOption = useCallback((query: string, option: {value: string; field: FieldRef}) => {\n const lQuery = query.toLowerCase()\n return (\n option?.value?.toLowerCase().includes(lQuery) ||\n option?.field?.title?.toLowerCase().includes(lQuery)\n )\n }, [])\n\n return (\n <Autocomplete\n fontSize={1}\n icon={currentField ? currentField.icon : SearchIcon}\n onChange={onSelect}\n openButton\n id={id}\n options={autocompleteOptions}\n placeholder=\"Search for a field\"\n radius={2}\n renderOption={renderOption}\n renderValue={renderValue}\n value={currentField?.key}\n filterOption={filterOption}\n />\n )\n}\n\nexport function FieldTitle(props: {field: FieldRef}) {\n const splitTitle = props.field.title.split('/')\n return (\n <Box flex=\"none\">\n <Breadcrumbs\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n marginTop: '-4px',\n }}\n separator={\n <Box marginTop={1}>\n <Text muted size={1}>\n /\n </Text>\n </Box>\n }\n gap={1}\n >\n {splitTitle.slice(0, splitTitle.length - 1).map((pt, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <Box key={i} marginTop={1}>\n <Text muted size={1}>\n {pt.trim()}\n </Text>\n </Box>\n ))}\n <Box marginTop={1}>\n <Text size={1} weight=\"medium\">\n {splitTitle[splitTitle.length - 1]}\n </Text>\n </Box>\n </Breadcrumbs>\n </Box>\n )\n}\n","import {formatDistanceToNow} from 'date-fns'\nimport {useEffect, useReducer} from 'react'\n\nfunction useInterval(ms: number) {\n const [tick, update] = useReducer((n) => n + 1, 0)\n\n useEffect(() => {\n const i = setInterval(update, ms)\n return () => clearInterval(i)\n }, [ms])\n return tick\n}\n\nexport function TimeAgo({date}: {date?: string}) {\n useInterval(1000)\n const timeSince = formatDistanceToNow(date ? new Date(date) : new Date())\n return <span title={timeSince}>{timeSince} ago</span>\n}\n","import {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {ClockIcon} from '@sanity/icons/Clock'\nimport {CloseCircleIcon} from '@sanity/icons/CloseCircle'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {SyncIcon} from '@sanity/icons/Sync'\nimport {\n Box,\n Button,\n Card,\n Flex,\n Popover,\n Spinner,\n Stack,\n Text,\n useClickOutside,\n useGlobalKeyDown,\n useLayer,\n} from '@sanity/ui'\nimport {type Ref, useCallback, useMemo, useState} from 'react'\nimport {StatusButton, type StatusButtonProps, typed, useClient} from 'sanity'\nimport {keyframes, styled} from 'styled-components'\n\nimport {TimeAgo} from '../components/TimeAgo'\nimport {maxHistoryVisibilityMs, pluginTitle} from '../constants'\nimport {assistTasksStatusId} from '../helpers/ids'\nimport {getInstructionTitle} from '../helpers/misc'\nimport type {AssistTasksStatus, InstructionTask, StudioInstruction, TaskEndedReason} from '../types'\n\nexport interface InstructionTaskHistoryButtonProps {\n documentId?: string\n tasks: InstructionTask[] | undefined\n instructions: StudioInstruction[] | undefined\n showTitles: boolean\n}\n\ninterface CancelableInstructionTask extends InstructionTask {\n cancel: () => void\n title?: string\n}\n\nconst rotate = keyframes`\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n`\n\nconst SyncSpinningIcon = styled(SyncIcon)`\n animation: ${rotate} 1s linear infinite;\n`\n\nconst TASK_CONFIG = {\n aborted: {\n title: 'Canceled',\n icon: CloseCircleIcon,\n tone: 'transparent',\n },\n error: {\n title: 'Error',\n icon: ErrorOutlineIcon,\n tone: 'critical',\n },\n success: {\n title: 'Completed',\n icon: CheckmarkCircleIcon,\n tone: 'positive',\n },\n timeout: {\n title: 'Timeout',\n icon: ClockIcon,\n tone: 'caution',\n },\n} as const\n\nexport function InstructionTaskHistoryButton(props: InstructionTaskHistoryButtonProps) {\n const {tasks, instructions, documentId, showTitles} = props\n\n const client = useClient({apiVersion: '2023-01-01'})\n const cancelRun = useCallback(\n (taskKey: string) => {\n if (!documentId) {\n return\n }\n const statusDocId = assistTasksStatusId(documentId)\n const basePath = `${typed<keyof AssistTasksStatus>('tasks')}[_key==\"${taskKey}\"]`\n client\n .patch(statusDocId)\n .set({\n [`${basePath}.${typed<keyof InstructionTask>('ended')}`]: new Date().toISOString(),\n [`${basePath}.${typed<keyof InstructionTask>('reason')}`]:\n typed<TaskEndedReason>('aborted'),\n })\n .commit()\n .catch(console.error)\n },\n [client, documentId],\n )\n\n const titledTasks = useMemo(() => {\n const t =\n tasks\n ?.filter(\n (task) =>\n task.started &&\n new Date().getTime() - new Date(task.started).getTime() < maxHistoryVisibilityMs,\n )\n // oxlint-disable-next-line no-map-spread\n .map((task): CancelableInstructionTask => {\n const instruction = instructions?.find((i) => i._key === task.instructionKey)\n return {\n ...task,\n title: showTitles ? (task.title ?? getInstructionTitle(instruction)) : undefined,\n cancel: () => cancelRun(task._key),\n }\n }) ?? []\n t.sort((a, b) => new Date(b.started ?? '').getTime() - new Date(a.started ?? '').getTime())\n return t\n }, [tasks, instructions, cancelRun, showTitles])\n\n // const id = useId()\n\n const isRunning = useMemo(() => titledTasks.some((r) => !r.ended), [titledTasks])\n const hasErrors = useMemo(\n () => titledTasks.some((r) => r.reason === 'error' || r.reason === 'timeout'),\n [titledTasks],\n )\n\n const [open, setOpen] = useState(false)\n\n const toggleOpen = useCallback(() => setOpen((v) => !v), [])\n\n const [button, setButton] = useState<HTMLButtonElement | null>(null)\n const [popover, setPopover] = useState<HTMLDivElement | null>(null)\n\n const handleClickOutside = useCallback(() => {\n setOpen(false)\n }, [])\n\n // oxlint-disable-next-line no-deprecated\n useClickOutside(handleClickOutside, [button, popover])\n\n const handleEscape = useCallback(() => {\n setOpen(false)\n button?.focus()\n }, [button])\n\n return (\n <Popover\n constrainSize\n content={<TaskList onEscape={handleEscape} tasks={titledTasks} />}\n open={open && !!titledTasks?.length}\n placement=\"top\"\n portal\n ref={setPopover}\n width={0}\n >\n <TaskStatusButton\n disabled={!titledTasks?.length}\n hasErrors={hasErrors}\n isRunning={isRunning}\n onClick={toggleOpen}\n ref={setButton}\n selected={open}\n />\n </Popover>\n )\n}\n\nconst TASK_STATUS_BUTTON_TOOLTIP_PROPS: NonNullable<StatusButtonProps['tooltipProps']> = {\n placement: 'top',\n}\n\nfunction TaskStatusButton(props: {\n disabled: boolean\n hasErrors: boolean\n isRunning: boolean\n onClick: () => void\n selected: boolean\n ref?: Ref<HTMLButtonElement>\n}) {\n const {disabled, hasErrors, isRunning, onClick, selected, ref} = props\n\n return (\n <StatusButton\n label={`${pluginTitle} status`}\n aria-label={`${pluginTitle} status`}\n icon={isRunning ? SyncSpinningIcon : hasErrors ? ErrorOutlineIcon : CheckmarkCircleIcon}\n mode=\"bleed\"\n onClick={onClick}\n tone={hasErrors ? 'critical' : undefined}\n disabled={disabled}\n ref={ref}\n selected={selected}\n tooltipProps={TASK_STATUS_BUTTON_TOOLTIP_PROPS}\n />\n )\n}\n\nfunction TaskList(props: {onEscape: () => void; tasks: CancelableInstructionTask[]}) {\n const {onEscape, tasks} = props\n\n const {isTopLayer} = useLayer()\n\n useGlobalKeyDown(\n useCallback(\n (event) => {\n if (isTopLayer && event.key === 'Escape') {\n onEscape()\n }\n },\n [isTopLayer, onEscape],\n ),\n )\n\n return (\n <Stack padding={1} gap={1}>\n {tasks.map((task) => (\n <TaskItem key={task._key} task={task} />\n ))}\n </Stack>\n )\n}\n\nfunction TaskItem(props: {task: CancelableInstructionTask}) {\n const {task} = props\n\n const taskType = task.reason && TASK_CONFIG[task.reason]\n const TaskIcon = taskType ? taskType.icon : null\n return (\n <Card radius={2} tone={taskType && taskType?.tone}>\n <Flex align=\"center\" gap={1}>\n <Flex align=\"flex-start\" flex={1} gap={3} padding={3}>\n <Box flex=\"none\">\n <Text size={1}>\n {TaskIcon && <TaskIcon />}\n {!task.reason && <Spinner />}\n </Text>\n </Box>\n <Stack flex={1} gap={2}>\n <Text size={1} weight=\"medium\">\n {taskType ? taskType.title : 'Running'}\n {task.title && <>: {task.title}</>}\n </Text>\n {task.message ? <Text size={1}>{task.message}</Text> : null}\n <Text muted size={1}>\n <TimeAgo date={task.ended ?? task.started} />\n </Text>\n </Stack>\n </Flex>\n\n {!task.ended && (\n <Box flex=\"none\" padding={1}>\n <Button fontSize={1} mode=\"bleed\" onClick={task.cancel} text=\"Cancel\" />\n </Box>\n )}\n </Flex>\n </Card>\n )\n}\n","import {ArrowRightIcon} from '@sanity/icons/ArrowRight'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {PlayIcon} from '@sanity/icons/Play'\nimport {RetryIcon} from '@sanity/icons/Retry'\nimport {Box, Button, Card, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {useCallback, useMemo, useRef} from 'react'\nimport {\n type DocumentInspectorProps,\n PerspectiveProvider,\n PresenceOverlay,\n VirtualizerScrollInstanceProvider,\n} from 'sanity'\nimport {\n DocumentInspectorHeader,\n type DocumentPaneNode,\n DocumentPaneProvider,\n useDocumentPane,\n} from 'sanity/structure'\nimport {styled} from 'styled-components'\n\nimport {DocumentForm} from '../_lib/form'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {AssistTypeContext} from '../assistDocument/components/AssistTypeContext'\nimport {useStudioAssistDocument} from '../assistDocument/hooks/useStudioAssistDocument'\nimport {useRequestRunInstruction} from '../assistDocument/RequestRunInstructionProvider'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {giveFeedbackUrl, pluginTitle, releaseAnnouncementUrl, salesUrl} from '../constants'\nimport {getConditionalMembers} from '../helpers/conditionalMembers'\nimport {assistDocumentId} from '../helpers/ids'\nimport {InspectorOnboarding} from '../onboarding/InspectorOnboarding'\nimport {inspectorOnboardingKey, useOnboardingFeature} from '../onboarding/onboardingStore'\nimport {assistDocumentTypeName, fieldPathParam, instructionParam} from '../types'\nimport {FieldTitle} from './FieldAutocomplete'\nimport {\n type FieldRef,\n getFieldTitle,\n useAiPaneRouter,\n useSelectedField,\n useTypePath,\n} from './helpers'\nimport {InstructionTaskHistoryButton} from './InstructionTaskHistoryButton'\n\nconst CardWithShadowBelow = styled(Card)`\n position: relative;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: -1px;\n border-bottom: 1px solid var(--card-border-color);\n opacity: 0.5;\n z-index: 100;\n }\n`\n\nconst CardWithShadowAbove = styled(Card)`\n position: relative;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: -1px;\n border-top: 1px solid var(--card-border-color);\n opacity: 0.5;\n z-index: 100;\n }\n`\n\nexport function AssistInspectorWrapper(props: DocumentInspectorProps) {\n const context = useAiAssistanceConfig()\n\n if (context.statusLoading) {\n return (\n <Flex align=\"center\" height=\"fill\" justify=\"center\" padding={4} sizing=\"border\">\n <Stack gap={3} style={{textAlign: 'center'}}>\n <Spinner muted />\n <Text muted size={1}>\n Loading {pluginTitle}...\n </Text>\n </Stack>\n </Flex>\n )\n }\n\n const status = context.status\n\n if (!status?.enabled) {\n return (\n <Flex direction=\"column\" height=\"fill\">\n <DocumentInspectorHeader\n closeButtonLabel=\"Close\"\n onClose={props.onClose}\n title={pluginTitle}\n />\n\n <Stack flex={1} overflow=\"auto\" padding={4} gap={3}>\n <Text as=\"p\" size={1} weight=\"semibold\">\n {pluginTitle} is not available\n </Text>\n\n <Text as=\"p\" muted size={1}>\n Please get in touch with a Sanity account manager or{' '}\n <a href={salesUrl} target=\"_blank\" rel=\"noreferrer\">\n contact our sales team\n </a>{' '}\n to get started with {pluginTitle}.{' '}\n <a href={releaseAnnouncementUrl} target=\"_blank\" rel=\"noreferrer\">\n Learn more →\n </a>\n </Text>\n </Stack>\n </Flex>\n )\n }\n\n if (!status?.initialized || !status.validToken) {\n return (\n <Flex direction=\"column\" height=\"fill\">\n <DocumentInspectorHeader\n closeButtonLabel=\"Close\"\n onClose={props.onClose}\n title={pluginTitle}\n />\n\n <Stack padding={4} gap={3}>\n {context.error ? (\n <Text size={1} weight=\"semibold\">\n Failed to start {pluginTitle}\n </Text>\n ) : null}\n\n {!context.error && !status?.initialized ? (\n <Text size={1} weight=\"semibold\">\n {pluginTitle} is not enabled\n </Text>\n ) : null}\n\n {!context.error && status?.initialized && !status.validToken ? (\n <>\n <Text size={1} weight=\"semibold\">\n Invalid token\n </Text>\n <Text muted size={1}>\n The token used by the AI Assistant is not valid and has to be regenerated.\n </Text>\n </>\n ) : null}\n\n {context.error && (\n <Text muted size={1}>\n Something went wrong. See console for details.\n </Text>\n )}\n\n {!context.error && !status?.initialized && (\n <Text size={1} muted>\n Please enable {pluginTitle}.\n </Text>\n )}\n\n <Button\n fontSize={1}\n icon={\n context.initLoading ? (\n <Box marginTop={1}>\n <Spinner />\n </Box>\n ) : context.error ? (\n RetryIcon\n ) : undefined\n }\n text={\n context.error\n ? 'Retry'\n : status?.initialized && !status.validToken\n ? `Restore ${pluginTitle}`\n : `Enable ${pluginTitle} now`\n }\n tone=\"primary\"\n onClick={context.init}\n disabled={context.initLoading}\n />\n </Stack>\n </Flex>\n )\n }\n\n return <AssistInspector {...props} />\n}\n\nfunction AssistInspector(props: DocumentInspectorProps) {\n const {params} = useAiPaneRouter()\n\n const boundary = useRef<HTMLDivElement | null>(null)\n const pathKey = params?.[fieldPathParam]\n const instructionKey = params?.[instructionParam]\n const documentPane = useDocumentPane()\n const {\n documentId,\n documentType,\n value: docValue,\n schemaType,\n onChange: documentOnChange,\n formState,\n } = documentPane\n\n const {assistableDocumentId, documentIsAssistable} = useAssistDocumentContext()\n\n const formStateRef = useRef(formState)\n // oxlint-disable-next-line react/react-compiler\n formStateRef.current = formState\n\n const {instructionLoading, requestRunInstruction} = useRequestRunInstruction({\n documentOnChange,\n isDocAssistable: documentIsAssistable,\n })\n\n const typePath = useTypePath(docValue, pathKey ?? '')\n const selectedField = useSelectedField(schemaType, typePath)\n\n const aiDocId = assistDocumentId(documentType)\n\n const assistDocument = useStudioAssistDocument({documentId, schemaType, initDoc: true})\n const assistField = assistDocument?.fields?.find((f) => f.path === typePath)\n const instruction = assistField?.instructions?.find((i) => i._key === instructionKey)\n const tasks = useMemo(\n () =>\n assistDocument?.tasks?.filter((i) => !instructionKey || i.instructionKey === instructionKey),\n [assistDocument?.tasks, instructionKey],\n )\n const instructions = useMemo(\n () => assistDocument?.fields?.flatMap((f) => f.instructions ?? []),\n [assistDocument?.fields],\n )\n\n const promptValue = instruction?.prompt\n const isEmptyPrompt = useMemo(() => {\n if (!promptValue?.length) {\n return true\n }\n // oxlint-disable-next-line no-unsafe-type-assertion\n const firstBlock = promptValue[0] as any\n const children = firstBlock?.children\n\n return promptValue.length == 1 && children?.length === 1 && !children?.[0]?.text?.length\n }, [promptValue])\n\n const paneNode: DocumentPaneNode = useMemo(\n () => ({\n type: 'document',\n id: aiDocId,\n title: pluginTitle,\n options: {\n id: aiDocId,\n type: assistDocumentTypeName,\n },\n }),\n [aiDocId],\n )\n\n const runCurrentInstruction = useCallback(\n () =>\n instruction &&\n pathKey &&\n typePath &&\n requestRunInstruction({\n documentId: assistableDocumentId,\n path: pathKey,\n typePath,\n assistDocumentId: assistDocumentId(documentType),\n instruction,\n conditionalMembers: formStateRef.current ? getConditionalMembers(formStateRef.current) : [],\n }),\n [pathKey, instruction, typePath, documentType, assistableDocumentId, requestRunInstruction],\n )\n\n const Region = useCallback((_props: any) => {\n // disabled for now\n /* return (\n <ConnectToRegion\n {..._props}\n _key={`${paneKey}_${selectedField?.key || '_field'}`}\n style={{height: '100%', flex: 1, overflow: 'auto'}}\n />\n )*/\n return <div {..._props} style={{height: '100%', flex: 1, overflow: 'auto'}} />\n }, [])\n\n const assistTypeContext = useMemo(() => ({typePath, documentType}), [typePath, documentType])\n\n if (!documentId || !schemaType || schemaType.jsonType !== 'object') {\n return (\n <Card flex={1} padding={4}>\n <Text>Document not ready yet.</Text>\n </Card>\n )\n }\n\n return (\n <Flex\n ref={boundary}\n direction=\"column\"\n height=\"fill\"\n overflow=\"hidden\"\n sizing=\"border\"\n style={{lineHeight: 0}}\n >\n <AiInspectorHeader\n onClose={props.onClose}\n field={selectedField}\n fieldTitle={getFieldTitle(selectedField)}\n />\n\n <Card as={Region} flex={1} overflow=\"auto\">\n <Flex direction=\"column\" style={{minHeight: '100%'}}>\n <Box flex={1}>\n <PresenceOverlay>\n <Box padding={4}>\n {selectedField && (\n <AssistTypeContext.Provider value={assistTypeContext}>\n <VirtualizerScrollInstanceProvider\n // oxlint-disable-next-line react/react-compiler\n scrollElement={boundary.current}\n containerElement={boundary}\n >\n <PerspectiveProvider selectedPerspectiveName={undefined}>\n <DocumentPaneProvider\n paneKey={documentPane.paneKey}\n index={documentPane.index}\n itemId=\"ai\"\n pane={paneNode}\n >\n <DocumentForm />\n </DocumentPaneProvider>\n </PerspectiveProvider>\n </VirtualizerScrollInstanceProvider>\n </AssistTypeContext.Provider>\n )}\n </Box>\n </PresenceOverlay>\n </Box>\n\n <Box flex=\"none\" padding={4}>\n <Text muted size={1}>\n How is Sanity AI Assist working for you?{' '}\n <a\n href={giveFeedbackUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n style={{whiteSpace: 'nowrap'}}\n >\n Let us know <ArrowRightIcon />\n </a>\n </Text>\n </Box>\n </Flex>\n </Card>\n <CardWithShadowAbove flex=\"none\" paddingX={4} paddingY={3} style={{justifySelf: 'flex-end'}}>\n <Flex gap={2} flex={1} justify=\"flex-end\">\n {schemaType?.name && pathKey && instructionKey && (\n <Stack flex={1}>\n <Button\n mode=\"ghost\"\n disabled={isEmptyPrompt || instructionLoading}\n fontSize={1}\n icon={instructionLoading ? <Spinner style={{marginTop: 3}} /> : PlayIcon}\n onClick={runCurrentInstruction}\n padding={3}\n text={'Run instruction'}\n />\n </Stack>\n )}\n\n <InstructionTaskHistoryButton\n documentId={assistableDocumentId}\n tasks={tasks}\n instructions={instructions}\n showTitles={!instructionKey}\n />\n </Flex>\n </CardWithShadowAbove>\n </Flex>\n )\n}\n\nfunction AiInspectorHeader(props: {fieldTitle: string; field?: FieldRef; onClose: () => void}) {\n const {onClose, field, fieldTitle} = props\n const {showOnboarding, dismissOnboarding} = useOnboardingFeature(inspectorOnboardingKey)\n\n return (\n <CardWithShadowBelow flex=\"none\" padding={2}>\n <Flex flex={1} align=\"center\">\n <Flex flex={1} padding={3} gap={2} align=\"center\">\n <Flex gap={1} align=\"center\" wrap=\"wrap\" style={{marginTop: '-4px'}}>\n <Box marginTop={1}>\n <Text size={1} weight=\"semibold\">\n AI instructions for\n </Text>\n </Box>\n <Card radius={2} border padding={1} marginTop={1}>\n {field ? (\n <FieldTitle field={field} />\n ) : (\n <Text size={1} weight=\"semibold\">\n {fieldTitle}\n </Text>\n )}\n </Card>\n </Flex>\n </Flex>\n <Box flex=\"none\">\n <Button fontSize={1} icon={CloseIcon} mode=\"bleed\" onClick={onClose} />\n </Box>\n </Flex>\n\n {showOnboarding && <InspectorOnboarding onDismiss={dismissOnboarding} />}\n </CardWithShadowBelow>\n )\n}\n","export const aiInspectorId = 'ai-assistance'\n","import {SparklesIcon} from '@sanity/icons/Sparkles'\nimport {type DocumentInspector, typed} from 'sanity'\n\nimport {pluginTitle} from '../constants'\nimport {type AssistInspectorRouteParams, fieldPathParam, instructionParam} from '../types'\nimport {AssistInspectorWrapper} from './AssistInspector'\nimport {aiInspectorId} from './constants'\n\nexport const assistInspector: DocumentInspector = {\n name: aiInspectorId,\n useMenuItem: () => ({\n icon: SparklesIcon,\n title: pluginTitle,\n hidden: true,\n showAsAction: false,\n }),\n component: AssistInspectorWrapper,\n onClose({params}) {\n return {\n // oxlint-disable-next-line no-unsafe-type-assertion\n params: typed<AssistInspectorRouteParams>({\n ...params,\n [fieldPathParam]: undefined,\n [instructionParam]: undefined,\n }) as typeof params,\n }\n },\n}\n","import type {ConnectorOptions} from '../../_lib/connector'\n\nexport function arrowPath(options: ConnectorOptions, x: number, y: number, dir: 1 | -1): string {\n return [\n `M ${x - options.arrow.size} ${y - options.arrow.size * dir} `,\n `L ${x} ${y}`,\n `L ${x + options.arrow.size} ${y - options.arrow.size * dir}`,\n ].join('')\n}\n","import type {ConnectorLine, ConnectorOptions} from '../../_lib/connector'\n\nfunction moveTo(x: number, y: number) {\n return `M${x} ${y}`\n}\n\nfunction lineTo(x: number, y: number) {\n return `L${x} ${y}`\n}\n\nfunction join(strings: string[], delim = '') {\n return strings.join(delim)\n}\n\nfunction quadCurve(x1: number, y1: number, x: number, y: number) {\n return `Q${x1} ${y1} ${x} ${y}`\n}\n\nexport function drawConnectorPath(options: ConnectorOptions, line: ConnectorLine): string {\n const {cornerRadius} = options.path\n const {from, to} = line\n const {x: fromX, y: fromY} = from\n const {x: _toX, y: toY} = to\n\n const toX = _toX - 1\n\n // Calculate divider position\n const dividerX = to.bounds.x + options.divider.offsetX\n\n // Calculate connector FROM path X position\n const fromPathX = from.isAbove || from.isBelow ? fromX + options.arrow.marginX : fromX\n\n // Calculate maximum corner radius\n const r0 = Math.min(cornerRadius, Math.abs(fromPathX - dividerX) / 2)\n const r1 = Math.min(cornerRadius, Math.abs(fromY - toY) / 2)\n\n const cmds: string[] = []\n\n // FROM\n if (from.isAbove) {\n cmds.push(\n moveTo(\n fromX + options.arrow.marginX,\n fromY - options.arrow.threshold + options.arrow.marginY,\n ),\n lineTo(fromX + options.arrow.marginX, fromY - r0),\n quadCurve(fromX + options.arrow.marginX, fromY, fromX + options.arrow.marginX + r0, fromY),\n )\n } else if (from.isBelow) {\n cmds.push(\n moveTo(\n fromX + options.arrow.marginX,\n fromY + options.arrow.threshold - options.arrow.marginY,\n ),\n lineTo(fromX + options.arrow.marginX, fromY + r0),\n quadCurve(fromX + options.arrow.marginX, fromY, fromX + options.arrow.marginX + r0, fromY),\n )\n } else {\n cmds.push(moveTo(fromX, fromY))\n }\n\n // TO\n if (to.isAbove) {\n if (fromY < to.bounds.y) {\n cmds.push(\n lineTo(dividerX - r1, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + r1),\n lineTo(dividerX, toY - r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(dividerX - cornerRadius, toY),\n quadCurve(dividerX, toY, dividerX, toY - cornerRadius),\n lineTo(dividerX, toY - options.arrow.threshold + options.arrow.marginY),\n )\n } else {\n cmds.push(\n lineTo(dividerX - cornerRadius, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY - cornerRadius),\n lineTo(dividerX, toY - options.arrow.threshold + options.arrow.marginY),\n )\n }\n } else if (to.isBelow) {\n if (fromY > to.bounds.y + to.bounds.h) {\n // curl around\n cmds.push(\n lineTo(dividerX - options.arrow.marginX - r1, fromY),\n quadCurve(\n dividerX - options.arrow.marginX,\n fromY,\n dividerX - options.arrow.marginX,\n fromY - r1,\n ),\n lineTo(dividerX - options.arrow.marginX, toY + r1),\n quadCurve(\n dividerX - options.arrow.marginX,\n toY,\n dividerX - options.arrow.marginX + r1,\n toY,\n ),\n lineTo(dividerX - cornerRadius, toY),\n quadCurve(dividerX, toY, dividerX, toY + cornerRadius),\n lineTo(dividerX, toY + options.arrow.threshold - options.arrow.marginY),\n )\n } else {\n cmds.push(\n lineTo(dividerX - cornerRadius, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + cornerRadius),\n lineTo(dividerX, toY + options.arrow.threshold - options.arrow.marginY),\n )\n }\n } else if (fromY < toY) {\n cmds.push(\n lineTo(dividerX - r0, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + r1),\n lineTo(dividerX, toY - r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(toX, toY),\n )\n } else {\n cmds.push(\n lineTo(dividerX - Math.min(r0, r1), fromY),\n quadCurve(dividerX, fromY, dividerX, fromY - Math.min(r0, r1)),\n lineTo(dividerX, toY + r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(toX, toY),\n )\n }\n\n return join(cmds)\n}\n","// oxlint-disable no-deprecated\nimport {rgba, useTheme} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nimport {type ConnectorOptions, mapConnectorToLine, type Rect} from '../_lib/connector'\nimport {arrowPath} from './draw/arrowPath'\nimport {drawConnectorPath} from './draw/connectorPath'\n\nexport function ConnectorPath(props: {\n from: {bounds: Rect; element: Rect}\n to: {bounds: Rect; element: Rect}\n options: ConnectorOptions\n}) {\n const {from, options, to} = props\n const {strokeWidth} = options.path\n const theme = useTheme()\n\n const line = useMemo(() => mapConnectorToLine(options, {from, to}), [from, options, to])\n\n return (\n <>\n <path\n d={drawConnectorPath(options, line)}\n stroke={theme.sanity.color.base.bg}\n strokeWidth={strokeWidth + 4}\n />\n\n <path\n d={drawConnectorPath(options, line)}\n stroke={rgba(theme.sanity.color.base.border, 0.5)}\n strokeWidth={strokeWidth}\n />\n\n {line.from.isAbove && (\n <path\n d={arrowPath(\n options,\n line.from.x + options.arrow.marginX,\n line.from.bounds.y - options.arrow.threshold + options.arrow.marginY,\n -1,\n )}\n stroke={theme.sanity.color.base.border}\n strokeWidth={strokeWidth}\n />\n )}\n\n {line.from.isBelow && (\n <path\n d={arrowPath(\n options,\n line.from.x + options.arrow.marginX,\n line.from.bounds.y +\n line.from.bounds.h +\n options.arrow.threshold -\n options.arrow.marginY,\n 1,\n )}\n stroke={theme.sanity.color.base.border}\n strokeWidth={strokeWidth}\n />\n )}\n </>\n )\n}\n","import {Fragment, useEffect, useState} from 'react'\n\nimport type {Connector, ConnectorOptions} from '../_lib/connector'\nimport {ConnectorPath} from './ConnectorPath'\n\nconst DEBUG = false\n\nconst options: ConnectorOptions = {\n arrow: {\n marginX: 10.5,\n marginY: 5,\n size: 4,\n threshold: 16.5,\n },\n divider: {\n offsetX: -10.5,\n },\n path: {\n cornerRadius: 3,\n marginY: 10.5,\n strokeWidth: 1,\n },\n}\n\nexport function AssistConnectorsOverlay(props: {connectors: Connector[]}) {\n const {connectors} = props\n // const zIndexes = connectors.map((connector) => {\n // const zIndex = connector.from.payload?.zIndex\n\n // if (typeof zIndex === 'number') {\n // return zIndex\n // }\n\n // return 1\n // })\n const [, setRedraw] = useState(false)\n useEffect(() => {\n // hacky workaround to force redraw for connectors on initial render\n // this seem to improve initial measurements of elements\n // oxlint-disable-next-line react/react-compiler\n setRedraw(true)\n }, [])\n\n // const zIndex = zIndexes.length ? Math.max(...zIndexes) : 1\n\n return (\n <>\n <svg\n fill=\"none\"\n width={window.innerWidth}\n height={window.innerHeight}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n zIndex: 150,\n // zIndex,\n }}\n >\n {connectors.map((connector) => (\n <ConnectorPath\n from={connector.from}\n key={connector.key}\n options={options}\n to={connector.to}\n />\n ))}\n </svg>\n {DEBUG &&\n connectors.map(({key, from, to}) => {\n return (\n <Fragment key={key}>\n <div\n style={{\n position: 'fixed',\n top: from.bounds.y,\n left: from.bounds.x,\n width: from.bounds.w,\n height: from.bounds.h,\n pointerEvents: 'none',\n overflow: 'hidden',\n outline: '1px dotted red',\n outlineOffset: -1,\n zIndex: 10000000 - 1,\n }}\n >\n <div\n style={{\n position: 'absolute',\n top: from.element.y - from.bounds.y,\n left: from.element.x - from.bounds.x,\n width: from.element.w,\n height: from.element.h,\n border: '1px solid red',\n boxSizing: 'border-box',\n }}\n />\n </div>\n\n <div\n style={{\n position: 'fixed',\n top: to.bounds.y,\n left: to.bounds.x,\n width: to.bounds.w,\n height: to.bounds.h,\n pointerEvents: 'none',\n overflow: 'hidden',\n outline: '1px dotted teal',\n outlineOffset: -1,\n zIndex: 10000000 - 1,\n }}\n >\n <div\n style={{\n position: 'absolute',\n top: to.element.y - to.bounds.y,\n left: to.element.x - to.bounds.x,\n width: to.element.w,\n height: to.element.h,\n border: '1px solid teal',\n boxSizing: 'border-box',\n }}\n />\n </div>\n </Fragment>\n )\n })}\n </>\n )\n}\n","import {packageName} from '../constants'\nimport type {TranslateStyleguide, TranslateStyleguideContext} from '../translate/types'\n\nexport function validateStyleguide(styleguide: string | undefined) {\n if (styleguide && styleguide.length > 2000) {\n throw new Error(\n `[${packageName}]: \\`translate.styleguide\\` value is too long. It must be 2000 characters or less, but was ${styleguide.length} characters`,\n )\n }\n return styleguide\n}\n\nexport function createStyleGuideResolver(\n styleguide: TranslateStyleguide | undefined,\n context: TranslateStyleguideContext,\n) {\n return async () => {\n if (typeof styleguide !== 'function') {\n return styleguide\n }\n const styleguideResult = await styleguide(context)\n return validateStyleguide(styleguideResult)\n }\n}\n","import get from 'lodash-es/get.js'\nimport type {SanityDocumentLike} from 'sanity'\n\nexport const getLanguageParams = (\n select: Record<string, string> | undefined,\n document: SanityDocumentLike | undefined,\n): Record<string, unknown> => {\n if (!select || !document) {\n return {}\n }\n\n const selection: Record<string, string> = select || {}\n const selectedValue: Record<string, unknown> = {}\n for (const [key, path] of Object.entries(selection)) {\n let value = get(document, path)\n if (Array.isArray(value)) {\n // If there are references in the array, ensure they have `_ref` set, otherwise they are considered empty and can safely be ignored\n value = value.filter((item) =>\n typeof item === 'object' ? item?._type !== 'reference' || '_ref' in item : true,\n )\n }\n selectedValue[key] = value\n }\n\n return selectedValue\n}\n","const toFieldLanguagesKeyPrefix = 'sanityStudio:assist:field-languages:from:'\n\nexport function getPreferredToFieldLanguages(fromLanguageId: string): string[] {\n if (typeof localStorage === 'undefined') {\n return []\n }\n\n const value = localStorage.getItem(`${toFieldLanguagesKeyPrefix}${fromLanguageId}`)\n if (!value) return []\n try {\n // oxlint-disable-next-line no-unsafe-type-assertion\n return JSON.parse(value) as string[]\n } catch {\n return []\n }\n}\n\nexport function setPreferredToFieldLanguages(fromLanguageId: string, languageIds: string[]) {\n if (typeof localStorage === 'undefined') {\n return\n }\n\n localStorage.setItem(`${toFieldLanguagesKeyPrefix}${fromLanguageId}`, JSON.stringify(languageIds))\n}\n","// WHATWG crypto RNG - https://w3c.github.io/webcrypto/Overview.html\nfunction whatwgRNG(length = 16) {\n const rnds8 = new Uint8Array(length)\n crypto.getRandomValues(rnds8)\n return rnds8\n}\n\nconst getByteHexTable = (() => {\n let table: string[]\n return () => {\n if (table) {\n return table\n }\n table = []\n for (let i = 0; i < 256; ++i) {\n table[i] = (i + 0x100).toString(16).substring(1)\n }\n return table\n }\n})()\n\nexport function randomKey(length?: number) {\n const table = getByteHexTable()\n return whatwgRNG(length)\n .reduce((str, n) => str + table[n], '')\n .slice(0, length)\n}\n","// oxlint-disable no-accumulating-spread\nimport {extractWithPath} from '@sanity/mutator'\nimport {\n isDocumentSchemaType,\n isKeySegment,\n type ObjectSchemaType,\n type Path,\n pathToString,\n type SanityDocumentLike,\n isRecord,\n} from 'sanity'\n\nimport {randomKey} from '../_lib/randomKey'\nimport type {DocumentMember, TranslationOutput, TranslationOutputsFunction} from './types'\n\nexport interface FieldLanguageMap {\n inputLanguageId: string\n inputPath: Path\n outputs: TranslationOutput[]\n relativeLanguagePath?: Path\n}\n\nconst DEFAULT_MAX_DEPTH = 6\nconst ABSOLUTE_MAX_DEPTH = 50\n\nexport function getDocumentMembersFlat(\n doc: SanityDocumentLike,\n schemaType: ObjectSchemaType,\n maxDepth = DEFAULT_MAX_DEPTH,\n) {\n if (!isDocumentSchemaType(schemaType)) {\n console.error(`Schema type is not a document`)\n return []\n }\n\n return extractPaths(doc, schemaType, [], Math.min(maxDepth, ABSOLUTE_MAX_DEPTH))\n}\n\nfunction extractPaths(\n doc: SanityDocumentLike,\n schemaType: ObjectSchemaType,\n path: Path,\n maxDepth: number,\n): DocumentMember[] {\n if (path.length >= maxDepth) {\n return []\n }\n\n return schemaType.fields.reduce<DocumentMember[]>((acc, field) => {\n const fieldPath = [...path, field.name]\n const fieldSchema = field.type\n const parentValue = path.length ? extractWithPath(pathToString(path), doc)[0]?.value : doc\n const value = isRecord(parentValue) ? parentValue[field.name] : undefined\n\n if (value === undefined || value === null) {\n return acc\n }\n\n const thisFieldWithPath: DocumentMember = {\n path: fieldPath,\n name: field.name,\n schemaType: fieldSchema,\n value,\n parentValue,\n }\n\n if (fieldSchema.jsonType === 'object') {\n const innerFields = extractPaths(doc, fieldSchema, fieldPath, maxDepth)\n\n return [...acc, thisFieldWithPath, ...innerFields]\n } else if (\n fieldSchema.jsonType === 'array' &&\n fieldSchema.of.length &&\n fieldSchema.of.some((item) => 'fields' in item) &&\n // no reason to drill into arrays if the item fields will be culled by maxDepth, ie we need 1 extra path headroom\n path.length + 1 < maxDepth\n ) {\n const {value: arrayValue} = extractWithPath(pathToString(fieldPath), doc)[0] ?? {}\n\n let arrayPaths: DocumentMember[] = []\n // oxlint-disable-next-line no-unsafe-type-assertion\n if ((arrayValue as any)?.length) {\n // oxlint-disable-next-line no-unsafe-type-assertion\n for (const item of arrayValue as any[]) {\n const itemPath = [...fieldPath, {_key: item._key}]\n let itemSchema = fieldSchema.of.find((t) => t.name === item._type)\n if (!item._type) {\n itemSchema = fieldSchema.of[0]\n console.warn(\n 'Array item is missing _type - using the first defined type in the array.of schema',\n {\n itemPath,\n item,\n itemSchema,\n },\n )\n }\n if (item._key && itemSchema) {\n const innerFields = extractPaths(\n doc,\n // oxlint-disable-next-line no-unsafe-type-assertion\n itemSchema as ObjectSchemaType,\n itemPath,\n maxDepth,\n )\n const arrayMember = {\n path: itemPath,\n name: item._key,\n schemaType: itemSchema,\n value: item,\n parentValue: arrayValue,\n }\n arrayPaths = [...arrayPaths, arrayMember, ...innerFields]\n }\n }\n }\n\n return [...acc, thisFieldWithPath, ...arrayPaths]\n }\n\n return [...acc, thisFieldWithPath]\n }, [])\n}\n\ntype InternationalizedArrayItemValue = {\n language?: string // Available in >=v5\n _key?: string // In <v5 this represents the language identifier\n value?: unknown\n}\n\nconst isInternationalizedArrayItemValue = (\n value: unknown,\n): value is InternationalizedArrayItemValue =>\n typeof value === 'object' && value !== null && ('language' in value || '_key' in value)\n\nexport const defaultLanguageOutputs: TranslationOutputsFunction = function (\n member,\n enclosingType,\n translateFromLanguageId,\n translateToLanguageIds,\n) {\n if (\n member.schemaType.jsonType === 'object' &&\n member.schemaType.name.startsWith('internationalizedArray') &&\n isInternationalizedArrayItemValue(member.value)\n ) {\n const isV5InternationalizedArrayItem = member.value.language !== undefined\n\n if (isV5InternationalizedArrayItem) {\n const language = member.value.language\n return language === translateFromLanguageId\n ? translateToLanguageIds.map((translateToId) => {\n const outputPathKey =\n (Array.isArray(member.parentValue)\n ? member.parentValue\n : ([] as InternationalizedArrayItemValue[])\n )\n // Uses parent value to verify if the item is already translated to the target language and reuse the key if it is\n .find((item) => item.language === translateToId)?._key || randomKey()\n\n return {\n id: translateToId,\n outputPath: [...member.path.slice(0, -1), {_key: outputPathKey}],\n }\n })\n : undefined\n }\n\n const pathEnd = member.path.slice(-1)\n\n const language = pathEnd[0] && isKeySegment(pathEnd[0]) ? pathEnd[0]._key : null\n return language === translateFromLanguageId\n ? translateToLanguageIds.map((translateToId) => ({\n id: translateToId,\n outputPath: [...member.path.slice(0, -1), {_key: translateToId}],\n }))\n : undefined\n }\n\n if (enclosingType.jsonType === 'object' && enclosingType.name.startsWith('locale')) {\n return translateFromLanguageId === member.name\n ? translateToLanguageIds.map((translateToId) => ({\n id: translateToId,\n outputPath: [...member.path.slice(0, -1), translateToId],\n }))\n : undefined\n }\n\n return undefined\n}\n\nexport function getFieldLanguageMap(\n documentSchema: ObjectSchemaType,\n documentMembers: DocumentMember[],\n translateFromLanguageId: string,\n outputLanguageIds: string[],\n langFn: TranslationOutputsFunction,\n): FieldLanguageMap[] {\n const translationMaps: FieldLanguageMap[] = []\n for (const member of documentMembers) {\n const parentPath = member.path.slice(0, -1)\n const enclosingType =\n documentMembers.find((m) => pathToString(m.path) === pathToString(parentPath))?.schemaType ??\n documentSchema\n\n const isV5InternationalizedArrayItem =\n member.schemaType.jsonType === 'object' &&\n member.schemaType.name.startsWith('internationalizedArray') &&\n isInternationalizedArrayItemValue(member.value) &&\n member.value.language !== undefined\n\n const translations = langFn(\n member,\n enclosingType,\n translateFromLanguageId,\n outputLanguageIds,\n )?.filter((translation) => translation.id !== translateFromLanguageId)\n\n if (translations) {\n translationMaps.push({\n inputLanguageId: translateFromLanguageId,\n inputPath: member.path,\n outputs: translations,\n ...(isV5InternationalizedArrayItem ? {relativeLanguagePath: ['language']} : {}),\n })\n }\n }\n\n return translationMaps\n}\n","import {PlayIcon} from '@sanity/icons/Play'\nimport {Box, Button, Checkbox, Dialog, Flex, Radio, Spinner, Stack, Text, Tooltip} from '@sanity/ui'\nimport {\n createContext,\n type PropsWithChildren,\n useCallback,\n useContext,\n useId,\n useMemo,\n useState,\n} from 'react'\nimport {\n type ObjectSchemaType,\n type Path,\n pathToString,\n type SanityDocumentLike,\n useClient,\n} from 'sanity'\n\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport type {ConditionalMemberState} from '../helpers/conditionalMembers'\nimport {createStyleGuideResolver} from '../helpers/styleguide'\nimport {API_VERSION_WITH_EXTENDED_TYPES, useApiClient, useTranslate} from '../useApiClient'\nimport {getLanguageParams} from './getLanguageParams'\nimport {getPreferredToFieldLanguages, setPreferredToFieldLanguages} from './languageStore'\nimport {\n defaultLanguageOutputs,\n type FieldLanguageMap,\n getDocumentMembersFlat,\n getFieldLanguageMap,\n} from './paths'\nimport type {Language} from './types'\n\ninterface FieldTranslationParams {\n document: SanityDocumentLike\n documentSchema: ObjectSchemaType\n translatePath: Path\n conditionalMembers: ConditionalMemberState[]\n}\n\nexport interface FieldTranslationContextValue {\n openFieldTranslation: (args: FieldTranslationParams) => void\n translationLoading: boolean\n}\n\nconst FieldTranslationContext = createContext<FieldTranslationContextValue>({\n openFieldTranslation: () => {},\n translationLoading: false,\n})\n\nexport function useFieldTranslation() {\n return useContext(FieldTranslationContext)\n}\n\nfunction hasValuesToTranslate(\n fieldLanguageMaps: FieldLanguageMap[] | undefined,\n fromLanguage: Language | undefined,\n basePath: Path,\n) {\n return fieldLanguageMaps?.some(\n (map) =>\n map.inputLanguageId === fromLanguage?.id &&\n map.inputPath &&\n pathToString(map.inputPath).startsWith(pathToString(basePath)),\n )\n}\n\nexport function FieldTranslationProvider(props: PropsWithChildren<{}>) {\n const {config: assistConfig} = useAiAssistanceConfig()\n\n const apiClient = useApiClient(assistConfig.__customApiClient)\n const styleguide = assistConfig.translate?.styleguide\n const config = assistConfig.translate?.field\n const {translate: runTranslate} = useTranslate(apiClient)\n\n const [dialogOpen, setDialogOpen] = useState(false)\n\n const [fieldTranslationParams, setFieldTranslationParams] = useState<\n FieldTranslationParams | undefined\n >()\n const [languages, setLanguages] = useState<Language[] | undefined>()\n const [fromLanguage, setFromLanguage] = useState<Language | undefined>(undefined)\n const [toLanguages, setToLanguages] = useState<Language[] | undefined>(undefined)\n const [fieldLanguageMaps, setFieldLanguageMaps] = useState<FieldLanguageMap[] | undefined>()\n\n const close = useCallback(() => {\n setDialogOpen(false)\n setLanguages(undefined)\n setFieldTranslationParams(undefined)\n }, [])\n const languageClient = useClient({\n apiVersion: config?.apiVersion ?? API_VERSION_WITH_EXTENDED_TYPES,\n })\n const documentId = fieldTranslationParams?.document?._id\n const id = useId()\n\n const selectFromLanguage = useCallback(\n (\n from: Language,\n languages: Language[] | undefined,\n params: FieldTranslationParams | undefined,\n ) => {\n const {document, documentSchema} = params ?? {}\n setFromLanguage(from)\n if (!document || !documentSchema || !params || !languages) {\n setFieldLanguageMaps(undefined)\n return\n }\n\n const preferred = getPreferredToFieldLanguages(from.id)\n const allToLanguages = languages.filter((l) => l.id !== from?.id)\n const filteredToLanguages = allToLanguages.filter(\n (l) => !preferred.length || preferred.includes(l.id),\n )\n\n setToLanguages(filteredToLanguages)\n const fromId = from?.id\n const allToIds = allToLanguages?.map((l) => l.id) ?? []\n const docMembers = getDocumentMembersFlat(document, documentSchema, config?.maxPathDepth)\n if (fromId && allToIds?.length) {\n const transMap = getFieldLanguageMap(\n documentSchema,\n docMembers,\n fromId,\n allToIds.filter((toId) => fromId !== toId),\n config?.translationOutputs ?? defaultLanguageOutputs,\n )\n setFieldLanguageMaps(transMap)\n } else {\n setFieldLanguageMaps(undefined)\n }\n },\n [config],\n )\n\n const toggleToLanguage = useCallback(\n (\n toggledLang: Language,\n toLanguages: Language[] | undefined,\n languages: Language[] | undefined,\n ) => {\n if (!languages || !fromLanguage) {\n return\n }\n const wasSelected = !!toLanguages?.find((l) => l.id === toggledLang.id)\n const newToLangs = languages.filter(\n (anyLang) =>\n !!toLanguages?.find(\n (selectedLang) => toggledLang.id !== selectedLang.id && selectedLang.id === anyLang.id,\n ) ||\n (toggledLang.id === anyLang.id && !wasSelected),\n )\n setToLanguages(newToLangs)\n setPreferredToFieldLanguages(\n fromLanguage.id,\n newToLangs.map((l) => l.id),\n )\n },\n [fromLanguage],\n )\n\n const openFieldTranslation = useCallback(\n async (params: FieldTranslationParams) => {\n setDialogOpen(true)\n const languageParams = getLanguageParams(config?.selectLanguageParams, params.document)\n const languages: Language[] | undefined = await (typeof config?.languages === 'function'\n ? config?.languages(languageClient, languageParams)\n : Promise.resolve(config?.languages))\n setLanguages(languages)\n setFieldTranslationParams(params)\n const fromLanguage = languages?.[0]\n if (fromLanguage) {\n selectFromLanguage(fromLanguage, languages, params)\n } else {\n console.error('No languages available for selected language params', languageParams)\n }\n },\n [selectFromLanguage, config, languageClient],\n )\n\n const contextValue: FieldTranslationContextValue = useMemo(() => {\n return {\n openFieldTranslation,\n translationLoading: false,\n }\n }, [openFieldTranslation])\n\n const runDisabled =\n !fromLanguage ||\n !toLanguages?.length ||\n !fieldLanguageMaps?.length ||\n !documentId ||\n !hasValuesToTranslate(fieldLanguageMaps, fromLanguage, fieldTranslationParams.translatePath)\n\n const onRunTranslation = useCallback(() => {\n const translatePath = fieldTranslationParams?.translatePath\n if (fieldLanguageMaps && documentId && translatePath) {\n void runTranslate({\n documentId,\n translatePath,\n styleguide: createStyleGuideResolver(styleguide, {\n client: languageClient,\n documentId,\n schemaType: fieldTranslationParams?.documentSchema,\n translatePath,\n }),\n fieldLanguageMap: fieldLanguageMaps.map((map) => ({\n ...map,\n outputs: map.outputs.filter((out) => !!toLanguages?.find((l) => l.id === out.id)),\n })),\n conditionalMembers: fieldTranslationParams?.conditionalMembers,\n })\n }\n close()\n }, [\n fieldLanguageMaps,\n documentId,\n runTranslate,\n styleguide,\n close,\n toLanguages,\n fieldTranslationParams?.translatePath,\n fieldTranslationParams?.conditionalMembers,\n fieldTranslationParams?.documentSchema,\n languageClient,\n ])\n\n const runButton = (\n <Button\n text={`Translate`}\n tone=\"primary\"\n icon={PlayIcon}\n style={{width: '100%'}}\n disabled={runDisabled}\n onClick={onRunTranslation}\n />\n )\n\n return (\n <FieldTranslationContext.Provider value={contextValue}>\n {dialogOpen ? (\n <Dialog\n id={id}\n width={1}\n open={dialogOpen}\n onClose={close}\n header=\"Translate fields\"\n footer={\n <Flex justify=\"space-between\" padding={2} flex={1}>\n {runDisabled ? (\n <Tooltip\n content={\n <Flex padding={2}>\n <Text>There is nothing to translate in the selected from-language.</Text>\n </Flex>\n }\n placement=\"top\"\n >\n <Flex flex={1}>{runButton}</Flex>\n </Tooltip>\n ) : (\n runButton\n )}\n </Flex>\n }\n >\n {languages ? (\n <Flex padding={4} gap={5} align=\"flex-start\" justify=\"center\">\n <Stack gap={2}>\n <Box marginBottom={2}>\n <Text weight=\"semibold\">From</Text>\n </Box>\n {languages?.map((radioLanguage) => (\n <FromLanguageRadio\n key={radioLanguage.id}\n {...{\n radioLanguage,\n fromLanguage,\n selectFromLanguage,\n languages,\n fieldTranslationParams,\n }}\n />\n ))}\n </Stack>\n\n <Stack gap={2}>\n <Box marginBottom={2}>\n <Text weight=\"semibold\">To</Text>\n </Box>\n {languages.map((checkboxLanguage) => (\n <ToLanguageCheckbox\n key={checkboxLanguage.id}\n {...{checkboxLanguage, fromLanguage, toLanguages, toggleToLanguage, languages}}\n />\n ))}\n </Stack>\n </Flex>\n ) : (\n <Flex padding={4} gap={2} align=\"flex-start\" justify=\"center\">\n <Box>\n <Spinner />\n </Box>\n <Text>Loading languages...</Text>\n </Flex>\n )}\n </Dialog>\n ) : null}\n {props.children}\n </FieldTranslationContext.Provider>\n )\n}\n\nfunction ToLanguageCheckbox(props: {\n checkboxLanguage: Language\n fromLanguage: Language | undefined\n toLanguages: Language[] | undefined\n toggleToLanguage: (\n toggledLang: Language,\n toLanguages: Language[] | undefined,\n languages: Language[] | undefined,\n ) => void\n languages: Language[]\n}) {\n const {checkboxLanguage, fromLanguage, toLanguages, toggleToLanguage, languages} = props\n const langId = checkboxLanguage.id\n const onChange = useCallback(\n () => toggleToLanguage(checkboxLanguage, toLanguages, languages),\n [toggleToLanguage, checkboxLanguage, toLanguages, languages],\n )\n return (\n <Flex\n key={langId}\n gap={3}\n align=\"center\"\n as={'label'}\n style={langId === fromLanguage?.id ? {opacity: 0.5} : undefined}\n >\n <Checkbox\n name=\"toLang\"\n value={langId}\n checked={langId !== fromLanguage?.id && !!toLanguages?.find((tl) => tl.id === langId)}\n onChange={onChange}\n disabled={langId === fromLanguage?.id}\n />\n <Text muted={langId === fromLanguage?.id}>{checkboxLanguage.title ?? langId}</Text>\n </Flex>\n )\n}\n\nfunction FromLanguageRadio(props: {\n radioLanguage: Language\n fromLanguage: Language | undefined\n selectFromLanguage: (\n from: Language,\n languages: Language[] | undefined,\n params: FieldTranslationParams | undefined,\n ) => void\n languages: Language[] | undefined\n fieldTranslationParams: FieldTranslationParams | undefined\n}) {\n const {languages, radioLanguage, selectFromLanguage, fromLanguage, fieldTranslationParams} = props\n const langId = radioLanguage.id\n\n const onChange = useCallback(\n () => selectFromLanguage(radioLanguage, languages, fieldTranslationParams),\n [selectFromLanguage, radioLanguage, languages, fieldTranslationParams],\n )\n return (\n <Flex key={langId} gap={3} align=\"center\" as={'label'}>\n <Radio\n name=\"fromLang\"\n value={langId}\n checked={langId === fromLanguage?.id}\n onChange={onChange}\n />\n <Text>{radioLanguage.title ?? radioLanguage.id}</Text>\n </Flex>\n )\n}\n","import {assistSerializedFieldTypeName, assistSerializedTypeName} from '../../types'\n\nexport const hiddenTypes = [\n 'any',\n 'array',\n 'block',\n 'boolean',\n 'crossDatasetReference',\n 'date',\n 'datetime',\n 'document',\n 'email',\n 'file',\n 'globalDocumentReference',\n 'image',\n 'number',\n 'object',\n 'reference',\n 'span',\n 'string',\n 'text',\n 'url',\n 'slug',\n 'geopoint',\n 'sanity.assetSourceData',\n 'sanity.imageAsset',\n 'sanity.fileAsset',\n 'sanity.imageCrop',\n 'sanity.imageHotspot',\n 'sanity.imageMetadata',\n 'sanity.imageDimensions',\n 'sanity.imagePalette',\n 'sanity.imagePaletteSwatch',\n\n assistSerializedTypeName,\n assistSerializedFieldTypeName,\n 'sanity-agent.job.document',\n]\n","import {\n type ArraySchemaType,\n type ImageOptions,\n isArraySchemaType,\n type ObjectSchemaType,\n type ReferenceOptions,\n type ReferenceSchemaType,\n type Schema,\n type SchemaType,\n typed,\n} from 'sanity'\n\nimport {isAssistSupported} from '../../helpers/assistSupported'\nimport {isType} from '../../helpers/typeUtils'\nimport {\n assistSchemaIdPrefix,\n assistSerializedFieldTypeName,\n assistSerializedTypeName,\n type SerializedSchemaMember,\n type SerializedSchemaType,\n} from '../../types'\nimport {hiddenTypes} from './schemaUtils'\n\ninterface Options {\n leanFormat?: boolean\n}\n\n// oxlint-disable-next-line prefer-set-has\nconst inlineTypes = ['document', 'object', 'image', 'file']\n\nexport function serializeSchema(schema: Schema, options?: Options): SerializedSchemaType[] {\n const list = schema\n .getTypeNames()\n .filter((t) => !(hiddenTypes.includes(t) || t.startsWith('sanity.')))\n .map((t) => schema.get(t))\n .filter((t): t is SchemaType => !!t)\n // because a field can override exclude at the type level, we have to also serialize excluded types\n // so don't do this: .filter((t) => isAssistSupported(t))\n .map((t) => getSchemaStub(t, schema, options))\n .filter((t) => {\n if ('to' in t && t.to && !t.to.length) {\n return false\n }\n if ('of' in t && t.of && !t.of.length) {\n return false\n }\n if ('fields' in t && t.fields && !t.fields.length) {\n return false\n }\n return true\n })\n list.sort((a, b) => (a?.name ?? '').localeCompare(b?.name ?? ''))\n return list\n}\n\nfunction getSchemaStub(\n schemaType: SchemaType,\n schema: Schema,\n options?: Options,\n): SerializedSchemaType {\n if (!schemaType.type?.name) {\n console.error('Missing type name', schemaType.type)\n throw new Error('Type is missing name!')\n }\n const baseSchema: SerializedSchemaType = {\n // we dont need type or id when we send using POST, so leave these out to save bandwidth\n ...(options?.leanFormat\n ? {}\n : {_id: `${assistSchemaIdPrefix}${schemaType.name}`, _type: assistSerializedTypeName}),\n name: schemaType.name,\n title: schemaType.title,\n type: schemaType.type.name,\n ...getBaseFields(schema, schemaType, schemaType.type.name, options),\n }\n\n return removeUndef(baseSchema)\n}\n\nfunction getBaseFields(\n schema: Schema,\n type: SchemaType,\n typeName: string,\n options: Options | undefined,\n) {\n const schemaOptions: SerializedSchemaType['options'] = removeUndef({\n // oxlint-disable-next-line no-unsafe-type-assertion\n imagePromptField: (type.options as ImageOptions)?.aiAssist?.imageInstructionField,\n // oxlint-disable-next-line no-unsafe-type-assertion\n embeddingsIndex: (type.options as ReferenceOptions)?.aiAssist?.embeddingsIndex,\n })\n return removeUndef({\n options: Object.keys(schemaOptions).length ? schemaOptions : undefined,\n values: Array.isArray(type?.options?.list)\n ? type?.options?.list.map((v: string | {value: string; title: string}) =>\n typeof v === 'string' ? v : (v.value ?? v.title),\n )\n : undefined,\n of: 'of' in type && typeName === 'array' ? arrayOf(type, schema, options) : undefined,\n to: 'to' in type && typeName === 'reference' ? refToTypeNames(type) : undefined,\n fields:\n 'fields' in type && inlineTypes.includes(typeName)\n ? serializeFields(schema, type, options)\n : undefined,\n annotations:\n typeName === 'block' && 'fields' in type\n ? serializeAnnotations(type, schema, options)\n : undefined,\n inlineOf:\n typeName === 'block' && 'fields' in type\n ? serializeInlineOf(type, schema, options)\n : undefined,\n hidden:\n typeof type.hidden === 'function' ? ('function' as const) : type.hidden ? true : undefined,\n readOnly:\n typeof type.readOnly === 'function'\n ? ('function' as const)\n : type.readOnly\n ? true\n : undefined,\n })\n}\n\nfunction serializeFields(\n schema: Schema,\n schemaType: ObjectSchemaType,\n options: Options | undefined,\n) {\n const fields = schemaType.fieldsets\n ? schemaType.fieldsets.flatMap((fs) =>\n fs.single\n ? fs.field\n : fs.fields.map((f) => ({\n ...f,\n type: {\n ...f.type,\n // if fieldset is (conditionally) hidden, the field must be considered the same way\n // ie, if the field does not show up in conditionalMembers, it is hidden\n // regardless of weather or not it is the field function or the fieldset function that hides it\n hidden:\n typeof fs.hidden === 'function' ? fs.hidden : fs.hidden ? true : f.type.hidden,\n },\n })),\n )\n : schemaType.fields\n\n return fields\n .filter((f) => !['sanity.imageHotspot', 'sanity.imageCrop'].includes(f.type?.name ?? ''))\n .filter((f) => isAssistSupported(f.type))\n .map((field) => serializeMember(schema, field.type, field.name, options))\n}\n\nfunction serializeMember(\n schema: Schema,\n type: SchemaType,\n name: string,\n options: Options | undefined,\n): SerializedSchemaMember {\n const typeNameExists = !!schema.get(type?.name)\n const typeName = typeNameExists ? type.name : (type.type?.name ?? '')\n return removeUndef({\n ...(options?.leanFormat ? {} : {_type: assistSerializedFieldTypeName}),\n name: name,\n type: typeName,\n title: type.title,\n ...getBaseFields(schema, type, typeName, options),\n })\n}\n\nfunction serializeInlineOf(\n blockSchemaType: ObjectSchemaType,\n schema: Schema,\n options: Options | undefined,\n): SerializedSchemaMember[] | undefined {\n const childrenField = blockSchemaType.fields.find((f) => f.name === 'children')\n const childrenType = childrenField?.type\n if (!childrenType || !isArraySchemaType(childrenType)) {\n return undefined\n }\n return arrayOf(\n {\n ...childrenType,\n of: childrenType.of.filter((t) => !isType(t, 'span')),\n },\n schema,\n options,\n )\n}\n\nfunction serializeAnnotations(\n blockSchemaType: ObjectSchemaType,\n schema: Schema,\n options: Options | undefined,\n): SerializedSchemaMember[] | undefined {\n const markDefs = blockSchemaType.fields.find((f) => f.name === 'markDefs')\n const marksType = markDefs?.type\n if (!marksType || !isArraySchemaType(marksType)) {\n return undefined\n }\n return arrayOf(marksType, schema, options)\n}\n\nfunction arrayOf(\n arrayType: ArraySchemaType,\n schema: Schema,\n options: Options | undefined,\n): SerializedSchemaMember[] {\n return arrayType.of\n .filter((type) => isAssistSupported(type))\n .map((t) => {\n return serializeMember(schema, t, t.name, options)\n })\n}\n\nfunction refToTypeNames(type: ReferenceSchemaType) {\n return type.to.map((t) => ({\n type: typed<string>(t.name),\n }))\n}\n\nfunction removeUndef<T extends Record<string, any>>(obj: T): T {\n Object.keys(obj).forEach((key) => (obj[key] === undefined ? delete obj[key] : {}))\n return obj\n}\n","import type {ObjectSchemaType} from 'sanity'\n\nimport {\n asFieldRefsByTypePath,\n type FieldRef,\n getFieldRefs as createFieldRefs,\n} from '../assistInspector/helpers'\n\nexport function createFieldRefCache() {\n const byType: Record<\n string,\n | {\n fieldRefs: FieldRef[]\n fieldRefsByTypePath: Record<string, FieldRef | undefined>\n }\n | undefined\n > = {}\n\n function getRefsForType(schemaType: ObjectSchemaType) {\n const documentType = schemaType.name\n const cached = byType[documentType]\n if (cached) return cached\n\n const fieldRefs = createFieldRefs(schemaType)\n const fieldRefsByTypePath = asFieldRefsByTypePath(fieldRefs)\n const refs = {\n fieldRefs,\n fieldRefsByTypePath,\n }\n byType[documentType] = refs\n return refs\n }\n\n return getRefsForType\n}\n","import {type ReactNode, useCallback, useEffect, useMemo, useState} from 'react'\nimport {type ObjectSchemaType, type Schema, useSchema} from 'sanity'\n\nimport type {AssistPluginConfig} from '../plugin'\nimport {serializeSchema} from '../schemas/serialize/serializeSchema'\nimport {\n type InstructStatus,\n useApiClient,\n useGetInstructStatus,\n useInitInstruct,\n} from '../useApiClient'\nimport {\n AiAssistanceConfigContext,\n type AiAssistanceConfigContextValue,\n} from './AiAssistanceConfigContext'\nimport {createFieldRefCache} from './fieldRefCache'\n\nexport function AiAssistanceConfigProvider(props: {\n children?: ReactNode\n config: AssistPluginConfig\n}) {\n const [status, setStatus] = useState<InstructStatus | undefined>()\n const [error, setError] = useState<Error | undefined>()\n\n const apiClient = useApiClient(props.config?.__customApiClient)\n const {getInstructStatus, loading: statusLoading} = useGetInstructStatus(apiClient)\n const {initInstruct, loading: initLoading} = useInitInstruct(apiClient)\n\n const schema = useSchema()\n const serializedTypes = useMemo(() => serializeSchema(schema, {leanFormat: true}), [schema])\n const {getFieldRefs, getFieldRefsByTypePath} = useFieldRefGetters(schema)\n\n useEffect(() => {\n getInstructStatus()\n .then((s) => setStatus(s))\n .catch((e) => {\n console.error(e)\n // oxlint-disable-next-line no-unsafe-type-assertion\n setError(e as Error)\n })\n }, [getInstructStatus])\n\n const init = useCallback(async () => {\n setError(undefined)\n try {\n await initInstruct()\n const status = await getInstructStatus()\n setStatus(status)\n } catch (e) {\n console.error('Failed to init ai assistance', e)\n // oxlint-disable-next-line no-unsafe-type-assertion\n setError(e as Error)\n }\n }, [initInstruct, getInstructStatus, setStatus])\n\n const {config, children} = props\n const context = useMemo<AiAssistanceConfigContextValue>(() => {\n return {\n config,\n status,\n statusLoading,\n init,\n initLoading,\n error,\n serializedTypes,\n getFieldRefs,\n getFieldRefsByTypePath,\n }\n }, [\n config,\n status,\n init,\n statusLoading,\n initLoading,\n error,\n serializedTypes,\n getFieldRefs,\n getFieldRefsByTypePath,\n ])\n\n return (\n <AiAssistanceConfigContext.Provider value={context}>\n {children}\n </AiAssistanceConfigContext.Provider>\n )\n}\n\nfunction useFieldRefGetters(schema: Schema) {\n return useMemo(() => {\n const getForSchemaType = createFieldRefCache()\n\n function getRefsForType(documentType: string) {\n // oxlint-disable-next-line no-unsafe-type-assertion\n const schemaType = schema.get(documentType) as ObjectSchemaType | undefined\n if (!schemaType) {\n throw new Error(`Schema type \"${documentType}\" not found`)\n }\n return getForSchemaType(schemaType)\n }\n\n return {\n getFieldRefs: (documentType: string) => getRefsForType(documentType).fieldRefs,\n getFieldRefsByTypePath: (documentType: string) =>\n getRefsForType(documentType).fieldRefsByTypePath,\n }\n }, [schema])\n}\n","import {ThemeProvider} from '@sanity/ui'\nimport {useState} from 'react'\nimport type {LayoutProps} from 'sanity'\n\nimport {type Connector, ConnectorsProvider} from '../_lib/connector'\nimport {AssistConnectorsOverlay} from '../assistConnectors'\nimport type {AssistPluginConfig} from '../plugin'\nimport {FieldTranslationProvider} from '../translate/FieldTranslationProvider'\nimport type {StudioInstruction} from '../types'\nimport type {RunInstructionRequest} from '../useApiClient'\nimport {AiAssistanceConfigProvider} from './AiAssistanceConfigProvider'\nimport {RunInstructionProvider} from './RunInstructionProvider'\n\nexport interface AIStudioLayoutProps extends LayoutProps {\n config: AssistPluginConfig\n}\n\nexport type RunInstructionArgs = Omit<RunInstructionRequest, 'instructionKey' | 'userTexts'> & {\n instruction: StudioInstruction\n}\n\nexport function AssistLayout(props: AIStudioLayoutProps) {\n const [connectors, setConnectors] = useState<Connector[]>([])\n\n return (\n <AiAssistanceConfigProvider config={props.config}>\n <RunInstructionProvider>\n <FieldTranslationProvider>\n <ConnectorsProvider onConnectorsChange={setConnectors}>\n {props.renderDefault(props)}\n <ThemeProvider tone=\"default\">\n <AssistConnectorsOverlay connectors={connectors} />\n </ThemeProvider>\n </ConnectorsProvider>\n </FieldTranslationProvider>\n </RunInstructionProvider>\n </AiAssistanceConfigProvider>\n )\n}\n","import {createContext, useEffect, useMemo, useState} from 'react'\nimport {getPublishedId, type InputProps, pathToString, usePerspective, useSyncState} from 'sanity'\nimport {usePaneRouter} from 'sanity/structure'\n\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {getDescriptionFieldOption, getImageInstructionFieldOption} from '../helpers/typeUtils'\nimport {canUseAssist, useApiClient, useGenerateCaption} from '../useApiClient'\n\nexport interface ImageContextValue {\n imageDescriptionPath?: string\n imageInstructionPath?: string\n assetRef?: string\n}\n\nexport const ImageContext = createContext<ImageContextValue>({})\n\nexport function ImageContextProvider(props: InputProps) {\n const {schemaType, path, value, readOnly} = props\n // oxlint-disable-next-line no-unsafe-type-assertion\n const assetRef = (value as any)?.asset?._ref\n const {selectedReleaseId} = usePerspective()\n const [assetRefState, setAssetRefState] = useState<string | undefined>(assetRef)\n\n const {assistableDocumentId, documentSchemaType} = useAssistDocumentContext()\n const {config, status} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {generateCaption} = useGenerateCaption(apiClient)\n\n const {isSyncing} = useSyncState(\n getPublishedId(assistableDocumentId),\n documentSchemaType.name,\n selectedReleaseId,\n )\n\n const router = usePaneRouter()\n const isShowingOlderRevision = !!router.params?.['rev']\n\n useEffect(() => {\n const descriptionField = getDescriptionFieldOption(schemaType)\n if (\n assetRef &&\n assistableDocumentId &&\n descriptionField?.updateOnImageChange &&\n assetRef !== assetRefState &&\n !isSyncing &&\n !isShowingOlderRevision &&\n !readOnly\n ) {\n // oxlint-disable-next-line react/react-compiler\n setAssetRefState(assetRef)\n if (canUseAssist(status)) {\n void generateCaption({\n path: pathToString([...path, descriptionField.path]),\n documentId: assistableDocumentId,\n })\n }\n }\n }, [\n schemaType,\n path,\n assetRef,\n assetRefState,\n assistableDocumentId,\n generateCaption,\n isSyncing,\n status,\n readOnly,\n isShowingOlderRevision,\n ])\n\n const context: ImageContextValue = useMemo(() => {\n const descriptionField = getDescriptionFieldOption(schemaType)\n const imageInstructionField = getImageInstructionFieldOption(schemaType)\n return {\n imageDescriptionPath: descriptionField?.path\n ? pathToString([...path, descriptionField.path])\n : undefined,\n imageInstructionPath: imageInstructionField\n ? pathToString([...path, imageInstructionField])\n : undefined,\n assetRef,\n }\n }, [schemaType, path, assetRef])\n\n return <ImageContext.Provider value={context}>{props.renderDefault(props)}</ImageContext.Provider>\n}\n","import {icons, Icon, type IconSymbol} from '@sanity/icons'\nimport {Button, Menu, MenuButton, MenuItem} from '@sanity/ui'\nimport {useCallback, useId, useMemo} from 'react'\nimport {set, type StringInputProps} from 'sanity'\n\nexport function IconInput(props: StringInputProps) {\n const {value, onChange} = props\n const id = useId()\n const items = useMemo(\n () =>\n Object.keys(icons)\n .filter(isIconSymbol)\n .map((key) => <IconItem key={key} iconKey={key} onChange={onChange} />),\n [onChange],\n )\n\n const selectedSymbol = useMemo(() => getIcon(value), [value])\n\n return (\n <MenuButton\n button={\n <Button\n icon={<Icon symbol={selectedSymbol} />}\n title=\"Select icon\"\n padding={3}\n mode=\"ghost\"\n radius={1}\n />\n }\n id={id}\n menu={<Menu style={{maxHeight: 300}}>{items}</Menu>}\n popover={{portal: true}}\n />\n )\n}\n\nfunction IconItem({\n iconKey: key,\n onChange,\n}: {\n iconKey: IconSymbol\n onChange: StringInputProps['onChange']\n}) {\n const onClick = useCallback(() => onChange(set(key)), [onChange, key])\n // `Icon` wraps the lazy-loaded icon in its own `Suspense` boundary. Rendering the raw\n // lazy component from `icons` would suspend the whole menu (there is no boundary between\n // it and the popover), which unmounts the menu and closes it before it can be seen.\n return <MenuItem icon={<Icon symbol={key} />} title={key} text={key} onClick={onClick} />\n}\n\nexport function getIcon(iconName?: string): IconSymbol {\n return iconName && isIconSymbol(iconName) ? iconName : 'sparkles'\n}\n\nfunction isIconSymbol(iconName: string): iconName is IconSymbol {\n return iconName in icons\n}\n","import {useMemo} from 'react'\nimport type {Path, SchemaType} from 'sanity'\n\nimport {isAssistSupported} from './assistSupported'\n\nexport function useAssistSupported(_path: Path, schemaType: SchemaType) {\n return useMemo(() => isAssistSupported(schemaType), [schemaType])\n}\n","import {TranslateIcon} from '@sanity/icons/Translate'\nimport {Box, Spinner} from '@sanity/ui'\nimport {useMemo, useRef} from 'react'\nimport {\n type DocumentFieldAction,\n type DocumentFieldActionGroup,\n type DocumentFieldActionItem,\n type DocumentFieldActionProps,\n type ObjectSchemaType,\n useClient,\n} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {useDraftDelayedTask} from '../assistDocument/RequestRunInstructionProvider'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {isAssistSupported} from '../helpers/assistSupported'\nimport {getConditionalMembers} from '../helpers/conditionalMembers'\nimport {createStyleGuideResolver} from '../helpers/styleguide'\nimport type {AssistOptions} from '../schemas/typeDefExtensions'\nimport {API_VERSION_WITH_EXTENDED_TYPES, useApiClient, useTranslate} from '../useApiClient'\nimport {useFieldTranslation} from './FieldTranslationProvider'\n\nfunction node(node: DocumentFieldActionItem | DocumentFieldActionGroup) {\n return node\n}\n\nexport type TranslateProps = DocumentFieldActionProps & {\n documentIsAssistable?: boolean\n documentSchemaType?: ObjectSchemaType\n}\nexport const translateActions: DocumentFieldAction = {\n name: 'sanity-assist-translate',\n useAction(props: TranslateProps) {\n const {config, status} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const client = useClient({apiVersion: API_VERSION_WITH_EXTENDED_TYPES})\n const {\n schemaType: fieldSchemaType,\n path,\n documentId,\n documentSchemaType,\n documentIsAssistable,\n } = props\n const isDocumentLevel = path.length === 0\n const readOnly = fieldSchemaType.readOnly === true\n\n const docTransTypes = config.translate?.document?.documentTypes\n // oxlint-disable-next-line no-unsafe-type-assertion\n const options = fieldSchemaType?.options as AssistOptions | undefined\n const addFieldAction = isDocumentLevel || options?.aiAssist?.translateAction\n\n const fieldTransEnabled =\n addFieldAction &&\n documentSchemaType &&\n config.translate?.field?.documentTypes?.includes(documentSchemaType.name)\n const documentTranslationEnabled =\n addFieldAction &&\n documentSchemaType &&\n ((!docTransTypes && isAssistSupported(fieldSchemaType)) ||\n docTransTypes?.includes(documentSchemaType.name))\n\n const isActive = !!(documentSchemaType && (documentTranslationEnabled || fieldTransEnabled))\n\n const {value: documentValue, onChange: documentOnChange, formState} = useDocumentPane()\n const docRef = useRef(documentValue)\n docRef.current = documentValue\n const formStateRef = useRef(formState)\n formStateRef.current = formState\n\n const translationApi = useTranslate(apiClient)\n const translate = useDraftDelayedTask({\n documentOnChange,\n isDocAssistable: documentIsAssistable ?? false,\n task: translationApi.translate,\n })\n\n const styleguide = config.translate?.styleguide\n const languagePath = config.translate?.document?.languageField\n\n const translateDocumentAction = useMemo(() => {\n if (!isActive || !languagePath || !documentTranslationEnabled) {\n return undefined\n }\n const title = path.length ? `Translate` : `Translate document`\n return node({\n type: 'action',\n icon: translationApi.loading\n ? () => (\n <Box style={{height: 17}}>\n <Spinner style={{transform: 'translateY(6px)'}} />\n </Box>\n )\n : TranslateIcon,\n title,\n onAction: () => {\n if (translationApi.loading || !languagePath || !documentId) {\n return\n }\n translate({\n languagePath,\n translatePath: path,\n styleguide: createStyleGuideResolver(styleguide, {\n client,\n documentId,\n schemaType: documentSchemaType,\n }),\n documentId: documentId ?? '',\n conditionalMembers: formStateRef.current\n ? getConditionalMembers(formStateRef.current)\n : [],\n })\n },\n renderAsButton: true,\n disabled: translationApi.loading || readOnly,\n })\n }, [\n isActive,\n languagePath,\n translate,\n styleguide,\n documentId,\n translationApi.loading,\n documentTranslationEnabled,\n path,\n readOnly,\n client,\n documentSchemaType,\n ])\n const fieldTranslate = useFieldTranslation()\n const openFieldTranslation = useDraftDelayedTask({\n documentOnChange,\n isDocAssistable: documentIsAssistable ?? false,\n task: fieldTranslate.openFieldTranslation,\n })\n\n const maxDepth = config.translate?.field?.maxPathDepth\n const translateFieldsAction = useMemo(\n () =>\n isActive && fieldTransEnabled\n ? node({\n type: 'action',\n icon: fieldTranslate.translationLoading\n ? () => (\n <Box style={{height: 17}}>\n <Spinner style={{transform: 'translateY(6px)'}} />\n </Box>\n )\n : TranslateIcon,\n title: `Translate fields...`,\n onAction: () => {\n if (fieldTranslate.translationLoading || !documentId) {\n return\n }\n if (formStateRef.current) {\n getConditionalMembers(formStateRef.current)\n }\n openFieldTranslation({\n document: {\n ...docRef.current,\n _id: documentId,\n },\n documentSchema: documentSchemaType,\n translatePath: path,\n conditionalMembers: formStateRef.current\n ? getConditionalMembers(formStateRef.current, maxDepth)\n : [],\n })\n },\n renderAsButton: true,\n disabled: fieldTranslate.translationLoading || readOnly,\n })\n : undefined,\n [\n isActive,\n openFieldTranslation,\n documentSchemaType,\n documentId,\n fieldTranslate.translationLoading,\n fieldTransEnabled,\n path,\n readOnly,\n maxDepth,\n ],\n )\n\n return useMemo(() => {\n if (!isActive || !status?.initialized) {\n // oxlint-disable-next-line no-unsafe-type-assertion\n return undefined as unknown as DocumentFieldActionItem\n }\n return node({\n type: 'group',\n icon: () => null,\n title: 'Translation',\n children: [translateDocumentAction, translateFieldsAction].filter(\n (c): c is DocumentFieldActionItem => !!c,\n ),\n expanded: true,\n })\n }, [isActive, translateDocumentAction, translateFieldsAction, status])\n },\n}\n","import type {AgentActionPath} from '@sanity/client/stega'\nimport {type ToastParams, useToast} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {\n type DocumentFieldActionDivider,\n type DocumentFieldActionGroup,\n type DocumentFieldActionItem,\n type DocumentFieldActionNode,\n type ObjectSchemaType,\n type Path,\n type SanityDocumentLike,\n type SchemaType,\n useWorkspaceSchemaId,\n} from 'sanity'\n\nimport {randomKey} from '../_lib/randomKey'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {isDefined} from '../helpers/misc'\nimport {\n documentRootKey,\n fieldPresenceTypeName,\n type InstructionTask,\n instructionTaskTypeName,\n} from '../types'\n\nexport interface AgentActionConditionalPath {\n path: AgentActionPath\n readOnly: boolean\n hidden: boolean\n}\n\nexport interface AssistFieldActionProps {\n /**\n * `actionType` will be `document` for action invoked from the top right document action menu, and\n * `field` when invoked from a field action menu.\n */\n actionType: 'document' | 'field'\n /**\n * This is the id of the current document pane; it contains `drafts.`or `versions. prefix` ect depending on context.\n * Use this for `documentId` when calling any `client.agent.action`.\n *\n * It is generally recommended to call actions from the studio like this:\n * ```ts\n * await client.agent.action.generate({\n * targetDocument: {\n * operation: 'createIfNotExists',\n * _id: props.documentIdForAction,\n * _type: props.documentSchemaType.name,\n * initialValues: props.getDocumentValue()\n * },\n * //...\n * })\n * ```\n */\n documentIdForAction: string\n\n /**\n * Schema type of the current document.\n * @see documentIdForAction\n */\n documentSchemaType: ObjectSchemaType\n\n /**\n * Returns the current document value.\n *\n * Prefer passing this function to your hooks instead of passing the document value directly to avoid unnecessary re-renders.\n * @see documentIdForAction\n */\n getDocumentValue: () => SanityDocumentLike\n\n /**\n * Returns the current readOnly and hidden state of all conditional members in the current document form.\n *\n * Intended to be passed to agent actions `conditionalPaths.paths`.\n */\n getConditionalPaths: () => AgentActionConditionalPath[]\n\n /**\n * `schemaId` for the current workspace.\n *\n * Note: the workspace schema has to be deployed using `sanity schema deploy` or `sanity deploy`.\n *\n * Use this for `schemaId` when calling any `client.agent.action`.\n *\n * It is generally recommended to call actions from the studio like this:\n * ```ts\n * await client.agent.action.generate({\n * targetDocument: {\n * operation: 'createIfNotExists',\n * _id: props.documentIdForAction,\n * _type: props.documentSchemaType.name,\n * initialValues: props.getDocumentValue()\n * },\n * //...\n * })\n *\n * ```\n */\n schemaId: string\n\n /**\n * This is the schema type of the field the actions will be attached to (ie, schemaType for `path`)\n *\n * It can be used with agent actions using `target.path`, to scope the action to a specific field.\n *\n * It is generally recommended to call actions from the studio like this:\n * ```ts\n * await client.agent.action.generate({\n * targetDocument: {\n * operation: 'createIfNotExists',\n * _id: props.documentIdForAction,\n * _type: props.documentSchemaType.name,\n * initialValues: props.getDocumentValue()\n * },\n * target: {\n * path: props.path\n * },\n * })\n * ```\n */\n path: AgentActionPath\n\n /**\n * This is the schema type of the field the actions will be attached to (ie, schemaType for `path`).\n *\n * Typically useful to dynamically return different actions based on the schema type of the field.\n *\n * ```ts\n * if(isObjectSchemaType(schemaType)) {\n * return [\n * defineAssistFieldAction({\n * title: 'Fill the object fields',\n * icon: RobotIcon,\n * onAction: () => {\n * //...\n * }\n * })\n * ]\n * }\n * return useMemo(() => {\n *\n *\n * }, [])\n *\n * ```\n */\n schemaType: SchemaType\n\n /**\n * Schema type of the parent field or array item holding this field.\n *\n * This can be undefined if the action was unable to resolve the parent type is excluded from AI Assist.\n *\n * @see schemaType\n * @see documentSchemaType\n */\n parentSchemaType?: SchemaType\n}\n\nexport type AssistFieldActionNode =\n | AssistFieldActionItem\n | AssistFieldActionGroup\n | DocumentFieldActionDivider\n\nexport type AssistFieldActionItem = Omit<\n DocumentFieldActionItem,\n 'renderAsButton' | 'selected' | 'onAction'\n> & {\n onAction: () => void | Promise<void>\n}\n\nexport type AssistFieldActionGroup = Omit<\n DocumentFieldActionGroup,\n 'renderAsButton' | 'expanded' | 'children'\n> & {\n /**\n * `children` can include undefined entries in the action array. These will be filtered out.\n * If the group has no defined children, the group will also be filtered out.\n */\n children: (AssistFieldActionNode | undefined)[]\n}\n\ntype PushToast = (params: ToastParams) => string\n\nexport function defineAssistFieldAction(\n action: Omit<AssistFieldActionItem, 'type'>,\n): AssistFieldActionItem {\n return {\n ...action,\n type: 'action',\n }\n}\n\nexport function defineFieldActionDivider(): DocumentFieldActionDivider {\n return {\n type: 'divider',\n }\n}\n\nexport function defineAssistFieldActionGroup(\n group: Omit<AssistFieldActionGroup, 'type'>,\n): AssistFieldActionGroup {\n return {\n ...group,\n type: 'group',\n }\n}\n\nexport function useCustomFieldActions(\n props: Omit<AssistFieldActionProps, 'schemaId' | 'path'> & {path: Path},\n) {\n const {\n config: {fieldActions},\n } = useAiAssistanceConfig()\n const {addSyntheticTask, removeSyntheticTask} = useAssistDocumentContext()\n\n const schemaId = useWorkspaceSchemaId()\n const {push: pushToast} = useToast()\n // oxlint-disable-next-line react/react-compiler\n const configActions = fieldActions?.useFieldActions?.({\n ...props,\n schemaId,\n // oxlint-disable-next-line no-unsafe-type-assertion\n path: props.path as AgentActionPath,\n })\n\n return useMemo(() => {\n const title = fieldActions?.title\n const customActions = configActions\n ?.filter(isDefined)\n .map((node) => {\n return createSafeNode({\n node,\n pushToast,\n // oxlint-disable-next-line react/react-compiler\n addSyntheticTask,\n removeSyntheticTask,\n })\n })\n .filter(isDefined)\n const onlyGroups =\n customActions?.length && customActions?.every((node) => node.type === 'group')\n const groups = customActions?.length\n ? onlyGroups\n ? customActions\n : [\n {\n type: 'group',\n title: title || 'Custom actions',\n children: customActions,\n expanded: true,\n } satisfies DocumentFieldActionGroup,\n ]\n : []\n return groups ?? []\n // oxlint-disable-next-line eslint-plugin-react-hooks/exhaustive-deps\n }, [configActions, fieldActions, pushToast])\n}\n\nfunction createSafeNode(args: {\n node: AssistFieldActionNode\n pushToast: PushToast\n addSyntheticTask: (task: InstructionTask) => void\n removeSyntheticTask: (task: InstructionTask) => void\n}): DocumentFieldActionNode | undefined {\n const {node} = args\n switch (node.type) {\n case 'action':\n return createSafeAction({...args, action: node})\n case 'group':\n const children = node.children\n ?.filter(isDefined)\n .map((child) => createSafeNode({...args, node: child}))\n .filter(isDefined)\n if (!children?.length) {\n return undefined\n }\n return {\n ...node,\n renderAsButton: false,\n expanded: true,\n children,\n }\n case 'divider':\n default:\n return node\n }\n}\n\nfunction createSafeAction(args: {\n action: AssistFieldActionItem\n pushToast: PushToast\n addSyntheticTask: (task: InstructionTask) => void\n removeSyntheticTask: (task: InstructionTask) => void\n}) {\n const {action, pushToast, addSyntheticTask, removeSyntheticTask} = args\n return {\n ...action,\n onAction: () => {\n async function runAction() {\n const task: InstructionTask = {\n _type: instructionTaskTypeName,\n _key: randomKey(12),\n started: new Date().toISOString(),\n presence: [\n {\n _type: fieldPresenceTypeName,\n _key: randomKey(12),\n path: documentRootKey,\n started: new Date().toISOString(),\n },\n ],\n }\n try {\n addSyntheticTask(task)\n const actionResult = action.onAction?.()\n if (actionResult instanceof Promise) {\n await actionResult\n }\n } catch (err: any) {\n console.error('Failed to execute action', action, err)\n pushToast({\n title: 'Failed to execute action',\n description: err?.message,\n status: 'error',\n })\n } finally {\n removeSyntheticTask(task)\n }\n }\n void runAction()\n },\n renderAsButton: false,\n selected: false,\n }\n}\n","import {ImageIcon} from '@sanity/icons/Image'\nimport {Box, Spinner} from '@sanity/ui'\nimport {useContext, useMemo} from 'react'\nimport type {DocumentFieldAction, DocumentFieldActionGroup, DocumentFieldActionItem} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {aiInspectorId} from '../assistInspector/constants'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {ImageContext} from '../components/ImageContext'\nimport {usePathKey} from '../helpers/misc'\nimport {fieldPathParam, instructionParam} from '../types'\nimport {canUseAssist, useApiClient, useGenerateCaption} from '../useApiClient'\n\nfunction node(node: DocumentFieldActionItem | DocumentFieldActionGroup) {\n return node\n}\n\nexport const generateCaptionsActions: DocumentFieldAction = {\n name: 'sanity-assist-generate-captions',\n useAction(props) {\n const pathKey = usePathKey(props.path)\n const {openInspector} = useDocumentPane()\n\n const {config, status} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {generateCaption, loading} = useGenerateCaption(apiClient)\n const imageContext = useContext(ImageContext)\n const {assistableDocumentId} = useAssistDocumentContext()\n\n const isActive = !!imageContext && pathKey === imageContext?.imageDescriptionPath\n\n return useMemo(() => {\n if (!isActive || !imageContext) {\n // works but not supported by types\n // oxlint-disable-next-line no-unsafe-type-assertion\n return undefined as unknown as DocumentFieldActionItem\n }\n return node({\n type: 'action',\n icon: loading\n ? () => (\n <Box style={{height: 17}}>\n <Spinner style={{transform: 'translateY(6px)'}} />\n </Box>\n )\n : ImageIcon,\n title: 'Generate image description',\n onAction: () => {\n if (loading) {\n return\n }\n if (!canUseAssist(status)) {\n openInspector(aiInspectorId, {\n [fieldPathParam]: pathKey,\n // oxlint-disable-next-line no-unsafe-type-assertion\n [instructionParam]: undefined as any,\n })\n return\n }\n void generateCaption({path: pathKey, documentId: assistableDocumentId})\n },\n renderAsButton: true,\n disabled: loading,\n hidden: !imageContext.assetRef,\n })\n }, [\n isActive,\n imageContext,\n generateCaption,\n pathKey,\n assistableDocumentId,\n loading,\n status,\n openInspector,\n ])\n },\n}\n","import {ImageIcon} from '@sanity/icons/Image'\nimport {Box, Spinner} from '@sanity/ui'\nimport {useContext, useMemo} from 'react'\nimport type {DocumentFieldAction, DocumentFieldActionGroup, DocumentFieldActionItem} from 'sanity'\n\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {ImageContext} from '../components/ImageContext'\nimport {usePathKey} from '../helpers/misc'\nimport {useApiClient, useGenerateImage} from '../useApiClient'\n\nfunction node(node: DocumentFieldActionItem | DocumentFieldActionGroup) {\n return node\n}\n\nexport const generateImagActions: DocumentFieldAction = {\n name: 'sanity-assist-generate-image',\n useAction(props) {\n const pathKey = usePathKey(props.path)\n\n const {config} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {generateImage, loading} = useGenerateImage(apiClient)\n\n const imageContext = useContext(ImageContext)\n const {assistableDocumentId} = useAssistDocumentContext()\n\n const isActive = !!imageContext && pathKey === imageContext?.imageInstructionPath\n\n return useMemo(() => {\n if (!isActive) {\n // works but not supported by types\n // oxlint-disable-next-line no-unsafe-type-assertion\n return undefined as unknown as DocumentFieldActionItem\n }\n return node({\n type: 'action',\n icon: loading\n ? () => (\n <Box style={{height: 17}}>\n <Spinner style={{transform: 'translateY(6px)'}} />\n </Box>\n )\n : ImageIcon,\n title: 'Generate image from prompt',\n onAction: () => {\n if (loading) {\n return\n }\n void generateImage({path: pathKey, documentId: assistableDocumentId})\n },\n renderAsButton: true,\n disabled: loading,\n })\n }, [isActive, generateImage, pathKey, assistableDocumentId, loading])\n },\n}\n","import {LockIcon} from '@sanity/icons/Lock'\nimport {Text, Tooltip} from '@sanity/ui'\n\nexport function PrivateIcon() {\n return (\n <Tooltip\n content={\n <Text size={1} style={{whiteSpace: 'nowrap'}}>\n Only visible to you\n </Text>\n }\n fallbackPlacements={['bottom']}\n padding={2}\n placement=\"top\"\n portal\n >\n <LockIcon />\n </Tooltip>\n )\n}\n","import type {AgentActionPath} from '@sanity/client/stega'\nimport {Icon} from '@sanity/icons'\nimport {ControlsIcon} from '@sanity/icons/Controls'\nimport {SparklesIcon} from '@sanity/icons/Sparkles'\nimport {useCallback, useMemo, useRef} from 'react'\nimport {\n type DocumentFieldAction,\n type DocumentFieldActionGroup,\n type DocumentFieldActionItem,\n pathToString,\n stringToPath,\n typed,\n useCurrentUser,\n} from 'sanity'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {getIcon} from '../assistDocument/components/instruction/appearance/IconInput'\nimport {useRequestRunInstruction} from '../assistDocument/RequestRunInstructionProvider'\nimport {aiInspectorId} from '../assistInspector/constants'\nimport {getTypePath, useSelectedField, useTypePath} from '../assistInspector/helpers'\nimport {pluginTitleShort} from '../constants'\nimport {isSchemaAssistEnabled} from '../helpers/assistSupported'\nimport {getConditionalMembers} from '../helpers/conditionalMembers'\nimport {getInstructionTitle, usePathKey} from '../helpers/misc'\nimport {useAssistSupported} from '../helpers/useAssistSupported'\nimport {translateActions, type TranslateProps} from '../translate/translateActions'\nimport {documentRootKey, fieldPathParam, instructionParam, type StudioInstruction} from '../types'\nimport {type AgentActionConditionalPath, useCustomFieldActions} from './customFieldActions'\nimport {generateCaptionsActions} from './generateCaptionActions'\nimport {generateImagActions} from './generateImageActions'\nimport {PrivateIcon} from './PrivateIcon'\n\nfunction node(node: DocumentFieldActionItem | DocumentFieldActionGroup) {\n return node\n}\n\nexport const assistFieldActions: DocumentFieldAction = {\n name: 'sanity-assist-actions',\n useAction(props) {\n const {schemaType} = props\n\n const {\n assistDocument,\n documentIsNew,\n documentIsAssistable,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n documentSchemaType,\n selectedPath,\n assistableDocumentId,\n fieldRefsByTypePath,\n } = useAssistDocumentContext()\n\n const {value: docValue, formState} = useDocumentPane()\n const docValueRef = useRef(docValue)\n const formStateRef = useRef(formState)\n formStateRef.current = formState\n\n const currentUser = useCurrentUser()\n const isHidden = !assistDocument\n const pathKey = usePathKey(props.path)\n const typePath = useTypePath(docValue, pathKey)\n const assistDocumentId = assistDocument?._id\n\n const {requestRunInstruction} = useRequestRunInstruction({\n documentOnChange,\n isDocAssistable: documentIsAssistable ?? false,\n })\n\n const isSelectable = !!useSelectedField(documentSchemaType, typePath)\n const assistSupported =\n useAssistSupported(props.path, schemaType) &&\n isSelectable &&\n isSchemaAssistEnabled(documentSchemaType) &&\n schemaType.readOnly !== true\n\n const fieldAssist = useMemo(\n () =>\n (assistDocument?.fields ?? []).find(\n (f) => f.path === typePath || (pathKey === documentRootKey && f.path === pathKey),\n ),\n [assistDocument?.fields, pathKey, typePath],\n )\n\n const fieldAssistKey = fieldAssist?._key\n const isInspectorOpen = inspector?.name === aiInspectorId\n const isPathSelected = pathKey === selectedPath\n const isSelected = isInspectorOpen && isPathSelected\n\n const imageCaptionAction = generateCaptionsActions.useAction(props)\n const imageGenAction = generateImagActions.useAction(props)\n const translateAction = translateActions.useAction(\n typed<TranslateProps>({\n ...props,\n documentId: assistableDocumentId,\n documentIsAssistable,\n documentSchemaType,\n }),\n )\n const manageInstructions = useCallback(\n () =>\n isSelected\n ? closeInspector(aiInspectorId)\n : openInspector(aiInspectorId, {\n [fieldPathParam]: pathKey,\n // oxlint-disable-next-line no-unsafe-type-assertion\n [instructionParam]: undefined as any,\n }),\n [openInspector, closeInspector, isSelected, pathKey],\n )\n\n const onInstructionAction = useCallback(\n (instruction: StudioInstruction) => {\n if (!pathKey || !fieldAssistKey || !assistDocumentId || !assistableDocumentId) {\n return\n }\n requestRunInstruction({\n documentId: assistableDocumentId,\n assistDocumentId,\n path: pathKey,\n typePath,\n instruction,\n conditionalMembers: formStateRef.current\n ? getConditionalMembers(formStateRef.current)\n : [],\n })\n },\n [\n requestRunInstruction,\n assistableDocumentId,\n pathKey,\n typePath,\n assistDocumentId,\n fieldAssistKey,\n ],\n )\n\n const privateInstructions = useMemo(\n () =>\n fieldAssist?.instructions?.filter((i) => i.userId && i.userId === currentUser?.id) || [],\n [fieldAssist?.instructions, currentUser],\n )\n\n const sharedInstructions = useMemo(\n () => fieldAssist?.instructions?.filter((i) => !i.userId) || [],\n [fieldAssist?.instructions],\n )\n\n const instructions = useMemo(\n () => [...privateInstructions, ...sharedInstructions],\n [privateInstructions, sharedInstructions],\n )\n\n const runInstructionsGroup = useMemo(() => {\n return instructions?.length || imageCaptionAction || translateAction || imageGenAction\n ? node({\n type: 'group',\n icon: () => null,\n title: 'Run instructions',\n children: [\n ...(instructions?.map((instruction) =>\n instructionItem({\n instruction,\n isPrivate: Boolean(instruction.userId && instruction.userId === currentUser?.id),\n onInstructionAction,\n hidden: isHidden,\n // oxlint-disable-next-line no-unnecessary-type-conversion\n documentIsNew: !!documentIsNew,\n assistSupported,\n }),\n ) || []),\n imageCaptionAction,\n imageGenAction,\n ].filter((a): a is DocumentFieldActionItem => !!a),\n expanded: true,\n })\n : undefined\n }, [\n instructions,\n currentUser?.id,\n onInstructionAction,\n isHidden,\n documentIsNew,\n assistSupported,\n imageCaptionAction,\n translateAction,\n imageGenAction,\n ])\n\n const getDocumentValue = useCallback(() => {\n return docValueRef.current\n }, [])\n\n const getConditionalPaths: () => AgentActionConditionalPath[] = useCallback(() => {\n // oxlint-disable-next-line no-map-spread\n return (formStateRef.current ? getConditionalMembers(formStateRef.current) : []).flatMap(\n (cm) => {\n const path = stringToPath(cm.path)\n if (path.some((s) => typeof s === 'number')) {\n //agent actions does not support indexed paths\n return []\n }\n return {\n ...cm,\n // oxlint-disable-next-line no-unsafe-type-assertion\n path: path as AgentActionPath,\n }\n },\n )\n }, [])\n\n const parentSchemaType = useMemo(() => {\n if (!props.path.length) {\n return undefined\n } else if (props.path.length === 1) {\n return documentSchemaType\n }\n const parentPath = props.path.slice(0, -1)\n const typePath = getTypePath(docValueRef.current, pathToString(parentPath))\n return typePath ? fieldRefsByTypePath[typePath]?.schemaType : undefined\n }, [fieldRefsByTypePath, props.path, documentSchemaType])\n\n const customActions = useCustomFieldActions({\n actionType: props.path.length ? 'field' : 'document',\n documentIdForAction: assistableDocumentId,\n schemaType,\n documentSchemaType,\n path: props.path,\n getDocumentValue,\n getConditionalPaths,\n parentSchemaType,\n })\n\n const manageInstructionsItem = useMemo(\n () =>\n node({\n type: 'action',\n icon: ControlsIcon,\n title: 'Manage instructions',\n onAction: manageInstructions,\n selected: isSelected,\n }),\n [manageInstructions, isSelected],\n )\n\n const group = useMemo(\n () =>\n node({\n type: 'group',\n icon: SparklesIcon,\n title: pluginTitleShort,\n children: [\n runInstructionsGroup,\n translateAction,\n ...customActions,\n assistSupported && manageInstructionsItem,\n ]\n .filter((c): c is DocumentFieldActionItem | DocumentFieldActionGroup => !!c)\n .filter((c) => (c.type === 'group' ? c.children.length : true)),\n expanded: false,\n renderAsButton: true,\n hidden: !assistSupported && !imageCaptionAction && !translateAction && !imageGenAction,\n }),\n [\n //documentIsNew,\n runInstructionsGroup,\n manageInstructionsItem,\n assistSupported,\n imageCaptionAction,\n translateAction,\n imageGenAction,\n customActions,\n ],\n )\n\n const emptyAction = useMemo(\n () =>\n node({\n type: 'action',\n hidden: !assistSupported,\n icon: SparklesIcon,\n onAction: manageInstructions,\n renderAsButton: true,\n title: pluginTitleShort,\n selected: isSelected,\n }),\n [assistSupported, manageInstructions, isSelected],\n )\n\n // If there are no instructions, we don't want to render the group\n if (\n !instructions?.length &&\n !imageCaptionAction &&\n !translateAction &&\n !imageGenAction &&\n !customActions.length\n ) {\n return emptyAction\n }\n\n return group\n },\n}\n\nfunction instructionItem(props: {\n instruction: StudioInstruction\n isPrivate: boolean\n onInstructionAction: (ins: StudioInstruction) => void\n assistSupported: boolean\n documentIsNew: boolean\n hidden: boolean\n}) {\n const {hidden, isPrivate, onInstructionAction, assistSupported, instruction} = props\n // @TODO investigate in studio core why we can't accept JSX.Element and only accept ComponentType\n function IconLeft() {\n return <Icon symbol={getIcon(instruction.icon)} />\n }\n return node({\n type: 'action',\n icon: IconLeft,\n iconRight: isPrivate ? PrivateIcon : undefined,\n title: getInstructionTitle(instruction),\n onAction: () => onInstructionAction(instruction),\n disabled: !assistSupported,\n hidden,\n })\n}\n","import {Card, Flex} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {documentRootKey, fieldPresenceTypeName} from '../types'\nimport {AiFieldPresence} from './AiFieldPresence'\nimport {aiPresence} from './useAssistPresence'\n\nexport function createAssistDocumentPresence(documentId: string | undefined) {\n return function AssistDocumentPresenceWrapper() {\n return documentId ? <AssistDocumentPresence /> : null\n }\n}\n\nfunction AssistDocumentPresence() {\n const {assistDocument, syntheticTasks} = useAssistDocumentContext()\n const anyPresence = useMemo(() => {\n const anyPresence = [...(assistDocument?.tasks ?? []), ...(syntheticTasks ?? [])]\n ?.filter((run) => !run.ended && !run.reason)\n ?.flatMap((run) => run.presence ?? [])\n .find((f) => f.started && new Date().getTime() - new Date(f.started).getTime() < 30000)\n if (anyPresence) {\n return aiPresence(anyPresence, [])\n }\n const anyRun = assistDocument?.tasks\n ?.filter((run) => !run.ended && !run.reason)\n ?.find((f) => f.started && new Date().getTime() - new Date(f.started).getTime() < 30000)\n return anyRun\n ? aiPresence(\n {\n started: anyRun.started,\n path: documentRootKey,\n _key: anyRun._key,\n _type: fieldPresenceTypeName,\n },\n [],\n )\n : undefined\n }, [assistDocument?.tasks, syntheticTasks])\n\n return (\n <Card>\n <Flex flex={1} justify=\"flex-end\">\n <Flex gap={2} align={'center'}>\n {anyPresence && <AiFieldPresence presence={anyPresence} />}\n </Flex>\n </Flex>\n </Card>\n )\n}\n","import {ArrowLeftIcon} from '@sanity/icons/ArrowLeft'\nimport {Button} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {useDocumentPane} from 'sanity/structure'\n\nimport {aiInspectorId} from '../../../assistInspector/constants'\nimport {instructionParam} from '../../../types'\n\nexport function BackToInstructionListLink() {\n const {openInspector} = useDocumentPane()\n\n const goBack = useCallback(\n // oxlint-disable-next-line no-unsafe-type-assertion\n () => openInspector(aiInspectorId, {[instructionParam]: undefined as any}),\n [openInspector],\n )\n\n return (\n <div>\n <Button\n as=\"a\"\n fontSize={1}\n icon={ArrowLeftIcon}\n mode=\"bleed\"\n padding={1}\n gap={2}\n onClick={goBack}\n text=\" Instructions\"\n textAlign=\"left\"\n />\n </div>\n )\n}\n","import {createContext} from 'react'\nimport type {ObjectSchemaType, SchemaType} from 'sanity'\n\nexport interface SelectedFieldContextValue {\n documentSchema?: ObjectSchemaType\n fieldSchema?: SchemaType\n}\n\nexport const SelectedFieldContext = createContext<SelectedFieldContextValue | undefined>(undefined)\nexport const SelectedFieldContextProvider = SelectedFieldContext.Provider\n","import {Card, Stack, Text} from '@sanity/ui'\nimport {useContext, useEffect, useMemo, useRef} from 'react'\nimport {\n type FieldError,\n FormCallbacksProvider,\n type FormCallbacksValue,\n FormInput,\n insert,\n type KeyedSegment,\n MemberFieldError,\n type ObjectInputProps,\n type ObjectSchemaType,\n PatchEvent,\n type Path,\n type SchemaType,\n set,\n setIfMissing,\n stringToPath,\n typed,\n useFormCallbacks,\n useSchema,\n} from 'sanity'\n\nimport {useAiPaneRouter} from '../../assistInspector/helpers'\nimport {useAiAssistanceConfig} from '../../assistLayout/AiAssistanceConfigContext'\nimport {\n type AssistDocument,\n type AssistField,\n assistFieldTypeName,\n type AssistInspectorRouteParams,\n documentRootKey,\n fieldPathParam,\n instructionParam,\n type StudioInstruction,\n} from '../../types'\nimport {AssistTypeContext} from './AssistTypeContext'\nimport {BackToInstructionListLink} from './instruction/BackToInstructionsLink'\nimport {SelectedFieldContextProvider, type SelectedFieldContextValue} from './SelectedFieldContext'\n\nconst EMPTY_FIELDS: AssistField[] = []\n\nexport function AssistDocumentForm(props: ObjectInputProps) {\n if (props.readOnly) {\n return (\n <Card border tone=\"caution\" padding={2}>\n <Text size={1}> You do not have sufficient permissions to manage instructions.</Text>\n </Card>\n )\n }\n return <AssistDocumentFormEditable {...props} />\n}\nfunction AssistDocumentFormEditable(props: ObjectInputProps) {\n const {onChange} = props\n // oxlint-disable-next-line no-unsafe-type-assertion\n const value = props.value as AssistDocument | undefined\n const id = value?._id\n const fields = value?.fields\n\n const {params, setParams} = useAiPaneRouter()\n const pathKey = params[fieldPathParam]\n const {typePath, documentType: targetDocumentType} = useContext(AssistTypeContext)\n const instruction = params[instructionParam]\n\n const activeKey = useMemo(() => {\n if (!typePath) {\n return undefined\n }\n return (fields ?? EMPTY_FIELDS).find((f) => f.path === typePath)?._key\n }, [fields, typePath])\n\n const activePath: Path | undefined = useMemo(() => {\n if (!activeKey) {\n return undefined\n }\n const base = ['fields', {_key: activeKey}]\n return instruction ? [...base, 'instructions', {_key: instruction}] : base\n }, [activeKey, instruction])\n\n const schema = useSchema()\n const documentSchema: ObjectSchemaType | undefined = useMemo(() => {\n if (!targetDocumentType) {\n return undefined\n }\n // oxlint-disable-next-line no-unsafe-type-assertion\n return schema.get(targetDocumentType) as ObjectSchemaType\n }, [schema, targetDocumentType])\n\n const fieldSchema = useSelectedSchema(pathKey, documentSchema)\n\n const context: SelectedFieldContextValue = useMemo(\n () => ({\n documentSchema,\n fieldSchema: fieldSchema ?? documentSchema,\n }),\n [fieldSchema, documentSchema],\n )\n\n const title = value?.['title']\n\n useEffect(() => {\n if (!title && documentSchema && !id?.startsWith('drafts.')) {\n onChange(set(documentSchema.title ?? documentSchema.name, ['title']))\n }\n }, [title, documentSchema, onChange, id])\n\n const {onPathOpen, ...formCallbacks} = useFormCallbacks()\n\n const newCallbacks: FormCallbacksValue = useMemo(\n () => ({\n ...formCallbacks,\n onPathOpen: (path) => {\n if (!instruction && path.length === 4 && path[2] === 'instructions') {\n setParams(\n // oxlint-disable-next-line no-unsafe-type-assertion\n typed<AssistInspectorRouteParams>({\n ...params,\n // oxlint-disable-next-line no-unsafe-type-assertion\n [instructionParam]: (path[3] as KeyedSegment)?._key,\n }) as Record<keyof AssistInspectorRouteParams, string | undefined>,\n )\n } else {\n setTimeout(() => onPathOpen(path), 0)\n }\n },\n }),\n [formCallbacks, onPathOpen, params, setParams, instruction],\n )\n\n // When showing the instruction list (no specific instruction selected),\n // tell the form to focus on the field path to close any open modals\n useEffect(() => {\n if (activePath && !instruction) {\n onPathOpen(activePath)\n }\n }, [activePath, instruction, onPathOpen])\n\n const fieldError = useMemo(() => {\n const fieldError = props.members.find(\n (m): m is FieldError => m.kind === 'error' && m.fieldName === 'fields',\n )\n if (fieldError) {\n return <MemberFieldError member={fieldError} />\n }\n return undefined\n }, [props.members])\n\n return (\n <SelectedFieldContextProvider value={context}>\n <Stack gap={5}>\n <FieldsInitializer\n key={typePath}\n pathKey={typePath}\n activePath={activePath}\n fields={fields}\n documentSchema={documentSchema}\n onChange={onChange}\n />\n {instruction && <BackToInstructionListLink />}\n\n {activePath && !fieldError && (\n <FormCallbacksProvider {...newCallbacks}>\n <div style={{lineHeight: '1.25em'}}>\n <FormInput {...props} absolutePath={activePath} />\n </div>\n </FormCallbacksProvider>\n )}\n\n {fieldError}\n\n {!activePath && props.renderDefault(props)}\n </Stack>\n </SelectedFieldContextProvider>\n )\n}\n\nfunction useSelectedSchema(\n fieldPath: string | undefined,\n documentSchema: ObjectSchemaType | undefined,\n): SchemaType | undefined {\n return useMemo(() => {\n if (!fieldPath) {\n return undefined\n }\n if (fieldPath === documentRootKey) {\n return documentSchema\n }\n\n const path = stringToPath(fieldPath)\n let currentSchema: ObjectSchemaType | undefined = documentSchema\n for (let i = 0; i < path.length; i++) {\n const segment = path[i]\n const field = currentSchema?.fields.find((f) => f.name === segment)\n if (!field) {\n return undefined\n }\n if (i === path.length - 1) {\n return field.type\n }\n if (field.type.jsonType !== 'object') {\n return undefined\n }\n currentSchema = field.type\n }\n return currentSchema\n }, [documentSchema, fieldPath])\n}\n\nfunction FieldsInitializer({\n pathKey,\n activePath,\n fields,\n documentSchema,\n onChange,\n}: {\n pathKey?: string\n activePath?: Path\n fields: AssistField[] | undefined\n documentSchema: ObjectSchemaType | undefined\n onChange: ObjectInputProps['onChange']\n}) {\n const {\n config: {__presets: presets},\n } = useAiAssistanceConfig()\n\n const existingField = fields?.find((f) => f._key === pathKey)\n const documentPresets = !!documentSchema?.name && presets?.[documentSchema?.name]\n\n const missingPresetInstructions = useMemo(() => {\n if (!documentPresets || !pathKey) {\n return undefined\n }\n const existingInstructions = existingField?.instructions\n const presetField = documentPresets.fields?.find((f) => f.path === pathKey)\n return presetField?.instructions?.filter(\n (i) => !existingInstructions?.some((ei) => ei._key === i._key),\n )\n }, [documentPresets, pathKey, existingField])\n\n // need this to not fire onChange twice in React strict mode\n const initialized = useRef(false)\n useEffect(() => {\n if (initialized.current || !pathKey) {\n return\n }\n if (existingField && !missingPresetInstructions?.length) {\n return\n }\n\n let event = PatchEvent.from([setIfMissing([], ['fields'])])\n if (!existingField) {\n event = event.append(\n insert(\n [\n typed<AssistField>({\n _key: pathKey,\n _type: assistFieldTypeName,\n path: pathKey,\n instructions: [],\n }),\n ],\n 'after',\n ['fields', -1],\n ),\n )\n }\n\n if (!existingField?.instructions?.length) {\n event = event.append([setIfMissing([], ['fields', {_key: pathKey}, 'instructions'])])\n }\n\n if (missingPresetInstructions?.length) {\n event = event.append(\n insert(\n missingPresetInstructions.map(\n (preset): StudioInstruction => ({\n ...preset,\n _type: 'sanity.assist.instruction',\n prompt: preset.prompt?.map((p) => ({markDefs: [], ...p})),\n }),\n ),\n 'after',\n ['fields', {_key: pathKey}, 'instructions', -1],\n ),\n )\n }\n onChange(event)\n initialized.current = true\n }, [activePath, onChange, pathKey, existingField, missingPresetInstructions])\n\n return null\n}\n","import {Box, Flex, Text} from '@sanity/ui'\nimport {useContext} from 'react'\nimport type {PreviewProps} from 'sanity'\n\nimport {InlineBlockValueContext} from '../../assistFormComponents/AssistInlineFormBlock'\nimport {useSelectedField} from '../../assistInspector/helpers'\nimport {SelectedFieldContext} from './SelectedFieldContext'\n\nexport function FieldRefPreview(props: PreviewProps & {path?: string}) {\n const {actions} = props\n const documentSchema = useContext(SelectedFieldContext)?.documentSchema\n // oxlint-disable-next-line no-unsafe-type-assertion\n const path = (useContext(InlineBlockValueContext) as {path?: string})?.path ?? props.path\n const selectedField = useSelectedField(documentSchema, path)\n return (\n <Flex gap={2} align=\"center\" style={{width: '100%'}}>\n <Flex flex={1} gap={2} align=\"center\" paddingY={3} paddingX={1}>\n <Box>\n <Text size={1} textOverflow=\"ellipsis\">\n {selectedField?.title ?? 'Select field'}\n </Text>\n </Box>\n </Flex>\n {/* oxlint-disable-next-line no-unsafe-type-assertion */}\n {actions as any}\n </Flex>\n )\n}\n","import type {FieldProps} from 'sanity'\n\nexport function HiddenFieldTitle(props: FieldProps) {\n return props.renderDefault({...props, title: '', level: props.level - 2, changed: false})\n}\n","import {Card, Flex, Switch, Text} from '@sanity/ui'\nimport {useCallback, useId} from 'react'\nimport {set, type StringInputProps, unset, useCurrentUser} from 'sanity'\n\nexport function InstructionVisibility(props: StringInputProps) {\n const {value, onChange} = props\n\n const user = useCurrentUser()\n\n const handleChange = useCallback(() => {\n const newValue = value ? '' : (user?.id ?? '')\n onChange(newValue ? set(newValue) : unset())\n }, [onChange, user, value])\n\n const id = useId()\n\n return (\n <Card>\n <Flex gap={2} align=\"flex-start\">\n <div style={{margin: '-3px 0'}}>\n <Switch\n {...props.elementProps}\n id={id}\n value={`${!value}`}\n checked={!value}\n onChange={handleChange}\n disabled={props.elementProps.readOnly}\n />\n </div>\n\n <Text muted size={1} weight=\"medium\">\n <label htmlFor={id}>Make visible to all Studio members</label>\n </Text>\n </Flex>\n </Card>\n )\n}\n","import {Box} from '@sanity/ui'\nimport {useCallback, useContext, useEffect, useId, useRef} from 'react'\nimport {set, type StringInputProps} from 'sanity'\n\nimport {FieldAutocomplete} from '../../../assistInspector/FieldAutocomplete'\nimport type {FieldRef} from '../../../assistInspector/helpers'\nimport {AssistTypeContext} from '../AssistTypeContext'\nimport {SelectedFieldContext} from '../SelectedFieldContext'\n\nexport function FieldRefPathInput(props: StringInputProps) {\n const documentSchema = useContext(SelectedFieldContext)?.documentSchema\n const {typePath} = useContext(AssistTypeContext)\n const ref = useRef<HTMLDivElement>(null)\n const id = useId()\n const {onChange} = props\n\n useEffect(() => {\n ref.current?.querySelector('input')?.focus()\n }, [])\n\n const onSelect = useCallback((path: string) => onChange(set(path)), [onChange])\n\n const filter = useCallback(\n (field: FieldRef) => {\n if (!field.key.includes('|') || !typePath) {\n return true\n }\n if (field.key.includes('|') && !typePath.includes('|')) {\n return false\n }\n\n const fieldSegments = field.key.split('.')\n const lastArrayItemIndex = fieldSegments.findLastIndex((s) => s.includes('|'))\n const mustStartWith = fieldSegments.slice(0, lastArrayItemIndex + 1).join('.')\n return typePath.startsWith(mustStartWith)\n },\n [typePath],\n )\n if (!documentSchema) {\n return props.renderDefault(props)\n }\n\n return (\n <Box flex={1} style={{minWidth: 300}} ref={ref}>\n <FieldAutocomplete\n id={id}\n schemaType={documentSchema}\n onSelect={onSelect}\n fieldPath={props.value}\n filter={filter}\n />\n </Box>\n )\n}\n","import type {FieldError, FieldMember, FieldSetMember, ObjectMember} from 'sanity'\n\nexport function findFieldMember(\n members: ObjectMember[],\n fieldName: string,\n): FieldMember | FieldError | undefined {\n return members.find(\n (m): m is FieldMember | FieldError =>\n (m.kind === 'field' && m.name === fieldName) ||\n (m.kind === 'error' && m.fieldName === fieldName),\n )\n}\n\nexport function findFieldsetMember(\n members: ObjectMember[],\n fieldsetName: string,\n): FieldSetMember | undefined {\n return members.find(\n (m): m is FieldSetMember => m.kind === 'fieldSet' && m.fieldSet.name === fieldsetName,\n )\n}\n","import {Box, Flex, Stack, Text} from '@sanity/ui'\nimport {useId, useMemo} from 'react'\nimport {type FieldError, type FieldMember, ObjectInputMember, type ObjectInputProps} from 'sanity'\n\nimport {findFieldMember, findFieldsetMember} from '../helpers'\n\nexport function InstructionInput(props: ObjectInputProps) {\n return (\n <Stack gap={[4, 4, 4, 5]}>\n <NameField {...props} />\n <ShareField {...props} />\n <ObjectMember fieldName={'prompt'} {...props} />\n <ObjectMember fieldName={'output'} {...props} />\n </Stack>\n )\n}\n\nfunction ObjectMember({fieldName, ...props}: ObjectInputProps & {fieldName: string}) {\n const member = findFieldMember(props.members, fieldName)\n return member ? <ObjectInputMember {...props} member={member} /> : null\n}\n\nconst NONE: (FieldMember | FieldError)[] = []\n\nfunction NameField(props: ObjectInputProps) {\n const fieldsetMember = findFieldsetMember(props.members, 'appearance')\n const titleId = useId()\n\n const members = fieldsetMember?.fieldSet.members ?? NONE\n const iconMember = findFieldMember(members, 'icon')\n const titleMember = findFieldMember(members, 'title')\n\n const titlePlaceholder = 'Untitled'\n const moddedTitleMember = useMemo(() => {\n if (!titleMember) {\n return undefined\n }\n if (titleMember.kind === 'error') {\n return titleMember\n }\n return {\n ...titleMember,\n field: {\n ...titleMember?.field,\n schemaType: {\n ...titleMember?.field.schemaType,\n placeholder: titlePlaceholder,\n },\n },\n }\n }, [titleMember, titlePlaceholder])\n\n return (\n <Stack gap={5}>\n <Stack gap={2}>\n <Flex gap={1}>\n <Text as=\"label\" weight=\"semibold\" size={1} htmlFor={titleId}>\n Name\n </Text>\n </Flex>\n\n <Text muted size={1}>\n How this instruction appears in menus\n </Text>\n\n <Flex align=\"center\">\n {iconMember && (\n <Box flex=\"none\">\n <ObjectInputMember {...props} member={iconMember} />\n </Box>\n )}\n {moddedTitleMember && (\n <Box flex={1} style={{marginLeft: -1}}>\n <ObjectInputMember {...props} member={moddedTitleMember} />\n </Box>\n )}\n </Flex>\n </Stack>\n </Stack>\n )\n}\n\nfunction ShareField(props: ObjectInputProps) {\n const fieldsetMember = findFieldsetMember(props.members, 'appearance')\n const members = fieldsetMember?.fieldSet.members ?? NONE\n const visibilityMember = findFieldMember(members, 'userId')\n\n return <>{visibilityMember && <ObjectInputMember {...props} member={visibilityMember} />}</>\n}\n","import {useCallback, useContext, useState} from 'react'\nimport {\n type ArrayFieldProps,\n type ArraySchemaType,\n isArrayOfObjectsSchemaType,\n isObjectSchemaType,\n type ObjectSchemaType,\n} from 'sanity'\n\nimport {SelectedFieldContext} from '../SelectedFieldContext'\n\nexport function InstructionOutputField(props: ArrayFieldProps) {\n const {fieldSchema} = useContext(SelectedFieldContext) ?? {}\n\n if (\n !fieldSchema ||\n !(isObjectSchemaType(fieldSchema) || isArrayOfObjectsSchemaType(fieldSchema))\n ) {\n return null\n }\n\n return (\n <EnabledOutputField {...props} fieldSchema={fieldSchema}>\n {props.children}\n </EnabledOutputField>\n )\n}\n\nfunction EnabledOutputField({\n fieldSchema,\n ...props\n}: ArrayFieldProps & {fieldSchema: ObjectSchemaType | ArraySchemaType<ObjectSchemaType>}) {\n const [open, setOpen] = useState(!!props.value?.length)\n const onExpand = useCallback(() => setOpen(true), [])\n const onCollapse = useCallback(() => setOpen(false), [])\n\n return props.renderDefault({\n ...props,\n collapsible: true,\n onExpand,\n onCollapse,\n collapsed: !open,\n level: 1,\n title: isObjectSchemaType(fieldSchema) ? 'Allowed fields' : 'Allowed types',\n })\n}\n","import {Card, Checkbox, Flex, Stack, Text} from '@sanity/ui'\nimport {useCallback, useContext, useEffect, useMemo} from 'react'\nimport {\n type ArrayOfObjectsInputProps,\n type ArraySchemaType,\n type FormPatch,\n insert,\n isArrayOfObjectsSchemaType,\n isObjectSchemaType,\n type ObjectSchemaType,\n PatchEvent,\n setIfMissing,\n typed,\n unset,\n} from 'sanity'\n\nimport {isAssistSupported} from '../../../helpers/assistSupported'\nimport {isType} from '../../../helpers/typeUtils'\nimport {type OutputFieldItem, outputFieldTypeName, type OutputTypeItem} from '../../../types'\nimport {SelectedFieldContext} from '../SelectedFieldContext'\n\nexport function InstructionOutputInput(props: ArrayOfObjectsInputProps) {\n const {fieldSchema} = useContext(SelectedFieldContext) ?? {}\n\n if (!fieldSchema) {\n return null\n }\n\n if (isObjectSchemaType(fieldSchema)) {\n return <ObjectOutputInput {...props} fieldSchema={fieldSchema} />\n }\n\n if (isArrayOfObjectsSchemaType(fieldSchema)) {\n return <ArrayOutputInput {...props} fieldSchema={fieldSchema} />\n }\n return null\n}\n\nfunction useEmptySelectAllValue(\n value: (OutputTypeItem | OutputFieldItem)[],\n allowedValues: {name: string}[],\n onChange: (patch: FormPatch | FormPatch[] | PatchEvent) => void,\n) {\n useEffect(() => {\n const validValues = value?.filter((v) =>\n allowedValues.find(\n (f) => f.name === (v._type === outputFieldTypeName ? v.relativePath : v.type),\n ),\n )\n const valueLength = value?.length ?? 0\n const validLength = validValues?.length ?? 0\n if ((!validLength && valueLength) || validLength >= allowedValues.length) {\n // if we end up here, we consider this a \"no selected fields/types\" selections. This should render and behave as all values selected.\n // we need this behaviour to accommodate new fields/types being added to the model, so they get visited by instructions without having to update the filter\n // when things have been explicitly selected, we let the selection remain as is\n onChange(PatchEvent.from([unset()]))\n }\n }, [allowedValues, value, onChange])\n}\n\nfunction ObjectOutputInput({\n fieldSchema,\n ...props\n}: ArrayOfObjectsInputProps & {fieldSchema: ObjectSchemaType}) {\n const {value, onChange} = props\n\n const fields = useMemo(\n () => fieldSchema.fields.filter((field) => isAssistSupported(field.type)),\n [fieldSchema.fields],\n )\n\n // oxlint-disable-next-line no-unsafe-type-assertion\n useEmptySelectAllValue(value as OutputTypeItem[], fields, onChange)\n\n const onSelectChange = useCallback(\n (checked: boolean, selectedValue: string) => {\n if (checked) {\n if (value?.length) {\n onChange(PatchEvent.from(unset([{_key: selectedValue}])))\n } else {\n // we went from empty array to everything selected but one\n const items = fields\n .filter((f) => f.name !== selectedValue)\n .map((field) =>\n typed<OutputFieldItem>({\n _key: field.name,\n _type: 'sanity.assist.output.field',\n relativePath: field.name,\n }),\n )\n onChange(PatchEvent.from([setIfMissing([]), insert(items, 'after', [-1])]))\n }\n } else {\n const patchValue: OutputFieldItem = {\n _key: selectedValue,\n _type: 'sanity.assist.output.field',\n relativePath: selectedValue,\n }\n onChange(PatchEvent.from([setIfMissing([]), insert([patchValue], 'after', [-1])]))\n }\n },\n [onChange, value, fields],\n )\n\n return (\n <Stack gap={2}>\n {fields.map((field) => {\n return (\n <Flex key={field.name} align=\"center\" gap={2}>\n <Selectable\n value={field.name}\n title={field.type.title ?? field.name}\n arrayValue={value}\n onChange={onSelectChange}\n />\n </Flex>\n )\n })}\n </Stack>\n )\n}\n\nfunction ArrayOutputInput({\n fieldSchema,\n ...props\n}: ArrayOfObjectsInputProps & {fieldSchema: ArraySchemaType}) {\n const {value, onChange} = props\n\n const ofItems = useMemo(\n () => fieldSchema.of.filter((itemType) => isAssistSupported(itemType)),\n [fieldSchema.of],\n )\n\n // oxlint-disable-next-line no-unsafe-type-assertion\n useEmptySelectAllValue(value as OutputTypeItem[], ofItems, onChange)\n\n const onSelectChange = useCallback(\n (checked: boolean, selectedValue: string) => {\n if (checked) {\n if (value?.length) {\n onChange(PatchEvent.from(unset([{_key: selectedValue}])))\n } else {\n // we went from empty array to everything selected but one\n const items = ofItems\n .filter((f) => f.name !== selectedValue)\n .map((field) =>\n typed<OutputTypeItem>({\n _key: field.name,\n _type: 'sanity.assist.output.type',\n type: field.name,\n }),\n )\n onChange(PatchEvent.from([setIfMissing([]), insert(items, 'after', [-1])]))\n }\n } else {\n const patchValue: OutputTypeItem = {\n _key: selectedValue,\n _type: 'sanity.assist.output.type',\n type: selectedValue,\n }\n onChange(PatchEvent.from([setIfMissing([]), insert([patchValue], 'after', [-1])]))\n }\n },\n [onChange, value, ofItems],\n )\n return (\n <Stack gap={2}>\n {ofItems.map((itemType) => {\n return (\n <Flex key={itemType.name}>\n <Selectable\n value={itemType.name}\n title={isType(itemType, 'block') ? 'Text' : (itemType.title ?? itemType.name)}\n arrayValue={value}\n onChange={onSelectChange}\n />\n </Flex>\n )\n })}\n </Stack>\n )\n}\n\nfunction Selectable({\n title,\n arrayValue,\n value,\n onChange,\n}: {\n title: string\n value: string\n arrayValue?: {_key: string}[]\n onChange: (checked: boolean, value: string) => void\n}) {\n const checked = !arrayValue?.length || !!arrayValue?.find((v) => v._key === value)\n const handleChange = useCallback(() => onChange(checked, value), [onChange, checked, value])\n\n return (\n <Flex gap={2} align=\"flex-start\">\n <Checkbox checked={checked} onChange={handleChange} />\n <Card marginTop={1} onClick={handleChange}>\n <Text style={{cursor: 'default'}} size={1}>\n {title}\n </Text>\n </Card>\n </Flex>\n )\n}\n","import {ArrowRightIcon} from '@sanity/icons/ArrowRight'\nimport {Box, Stack, Text} from '@sanity/ui'\nimport {useEffect} from 'react'\nimport {type ArrayOfObjectsInputProps, set, typed} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {randomKey} from '../../../_lib/randomKey'\nimport {instructionGuideUrl} from '../../../constants'\nimport type {PromptBlock, PromptTextBlock} from '../../../types'\n\nconst PteMods = styled(Box)`\n & [data-testid='pt-editor__toolbar-card'] > div > div:last-child {\n display: none;\n }\n & [data-testid='pt-editor'] {\n min-height: 300px;\n }\n & [data-testid='pt-editor'] .pt-inline-object * {\n max-width: 400px;\n }\n`\n\nexport function PromptInput(props: ArrayOfObjectsInputProps) {\n // quickfixes the model (converts blocks to inline blocks for alpha customers)\n // backend supports both types, but this prevents \"missing block\" schema errors\n useOnlyInlineBlocks(props)\n return (\n <PteMods>\n <Stack gap={3}>\n <Box paddingBottom={1}>\n <Text size={1} muted>\n Learn from{' '}\n <a href={instructionGuideUrl} target=\"_blank\" rel=\"noreferrer\">\n our instruction guide <ArrowRightIcon />\n </a>\n </Text>\n </Box>\n\n {props.renderDefault(props)}\n </Stack>\n </PteMods>\n )\n}\n\nfunction useOnlyInlineBlocks(props: ArrayOfObjectsInputProps) {\n useEffect(() => {\n let needsFix = false\n // oxlint-disable-next-line no-unsafe-type-assertion\n const val = ((props.value as PromptBlock[]) ?? []).map((block) => {\n if (block._type === 'block') {\n return block\n }\n\n needsFix = true\n return typed<PromptTextBlock>({\n _key: randomKey(12),\n _type: 'block',\n level: 0,\n markDefs: [],\n style: 'normal',\n children: [block],\n })\n })\n\n if (needsFix) {\n props.onChange(set(val))\n }\n // only run this once when loading the field\n // oxlint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n}\n","import type {ArrayFieldProps} from 'sanity'\n\nexport function InstructionsArrayField(props: ArrayFieldProps) {\n return props.renderDefault({\n ...props,\n title: ' ',\n })\n}\n","import {useMemo} from 'react'\nimport {type ArrayOfObjectsInputProps, useCurrentUser} from 'sanity'\n\nimport type {StudioInstruction} from '../../types'\n\nexport function InstructionsArrayInput(props: ArrayOfObjectsInputProps) {\n const user = useCurrentUser()\n\n // oxlint-disable-next-line no-unsafe-type-assertion\n const originalValue = props.value as StudioInstruction[] | undefined\n const originalMembers = props.members\n const value = useMemo(\n () => (originalValue ?? []).filter((v) => !v.userId || v.userId === user?.id),\n [originalValue, user],\n )\n const members = useMemo(\n () =>\n (originalMembers ?? []).filter((v) => {\n if (v.kind === 'error') {\n return true\n }\n // oxlint-disable-next-line no-unsafe-type-assertion\n const value = v?.item?.value as any\n return !value.userId || value.userId === user?.id\n }),\n [originalMembers, user],\n )\n return props.renderDefault({...props, value, members})\n}\n","import {Box} from '@sanity/ui'\nimport {useEffect, useRef} from 'react'\nimport type {ObjectInputProps} from 'sanity'\n\nexport function HideReferenceChangedBannerInput(props: ObjectInputProps) {\n const ref = useRef<HTMLDivElement>(null)\n\n // hides \"reference was changed\" banner (it is incorrectly flashing because the pane handler does not support the way wie use the assist pane)\n useEffect(() => {\n const parent = ref.current?.closest('[data-testid=\"pane-content\"]')\n if (!parent) {\n return\n }\n const style = document.createElement('style')\n const parentId = `id-${Math.random()}`.replace('.', '-')\n parent.id = parentId\n\n style.innerText = `\n #${parentId} [data-testid=\"reference-changed-banner\"] { display: none; }\n `\n parent.prepend(style)\n }, [ref])\n\n return <Box ref={ref}>{props.renderDefault(props)}</Box>\n}\n","import {DocumentTextIcon} from '@sanity/icons/DocumentText'\nimport {TokenIcon} from '@sanity/icons/Token'\nimport {defineArrayMember, defineField, defineType} from 'sanity'\n\nimport {HideReferenceChangedBannerInput} from '../components/HideReferenceChangedBannerInput'\nimport {contextDocumentTypeName} from '../types'\n\nexport const contextDocumentSchema = defineType({\n type: 'document',\n name: contextDocumentTypeName,\n title: 'AI context',\n liveEdit: true,\n icon: TokenIcon,\n components: {\n input: HideReferenceChangedBannerInput,\n },\n fields: [\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n }),\n defineField({\n name: 'context',\n type: 'array',\n title: 'Context',\n of: [\n defineArrayMember({\n type: 'block',\n styles: [{title: 'Normal', value: 'normal'}],\n lists: [],\n marks: {\n decorators: [],\n annotations: [],\n },\n }),\n ],\n }),\n ],\n preview: {\n select: {\n title: 'title',\n context: 'context',\n },\n prepare({title, context}) {\n const text = context\n ?.flatMap((block: any) => block?.children)\n .flatMap((child: any) => child?.text?.split(' '))\n .filter(Boolean)\n const words = text?.length ?? 0\n return {\n title,\n subtitle: `Words: ${words}`,\n media: DocumentTextIcon,\n }\n },\n },\n})\n","import {Icon, type IconSymbol} from '@sanity/icons'\nimport {CodeIcon} from '@sanity/icons/Code'\nimport {ComposeIcon} from '@sanity/icons/Compose'\nimport {LockIcon} from '@sanity/icons/Lock'\nimport {SparklesIcon} from '@sanity/icons/Sparkles'\nimport {ThListIcon} from '@sanity/icons/ThList'\nimport {Box, Flex, Stack, Text, Tooltip} from '@sanity/ui'\nimport {isValidElement} from 'react'\nimport {defineArrayMember, defineField, defineType, type ObjectSchemaType} from 'sanity'\n\nimport {AssistDocumentForm} from '../assistDocument/components/AssistDocumentForm'\nimport {FieldRefPreview} from '../assistDocument/components/FieldRefPreview'\nimport {HiddenFieldTitle} from '../assistDocument/components/generic/HiddenFieldTitle'\nimport {IconInput} from '../assistDocument/components/instruction/appearance/IconInput'\nimport {InstructionVisibility} from '../assistDocument/components/instruction/appearance/InstructionVisibility'\nimport {FieldRefPathInput} from '../assistDocument/components/instruction/FieldRefInput'\nimport {InstructionInput} from '../assistDocument/components/instruction/InstructionInput'\nimport {InstructionOutputField} from '../assistDocument/components/instruction/InstructionOutputField'\nimport {InstructionOutputInput} from '../assistDocument/components/instruction/InstructionOutputInput'\nimport {PromptInput} from '../assistDocument/components/instruction/PromptInput'\nimport {InstructionsArrayField} from '../assistDocument/components/InstructionsArrayField'\nimport {InstructionsArrayInput} from '../assistDocument/components/InstructionsArrayInput'\nimport {createFieldRefCache} from '../assistLayout/fieldRefCache'\nimport {getInstructionTitle} from '../helpers/misc'\nimport {\n assistDocumentIdPrefix,\n assistDocumentTypeName,\n assistFieldTypeName,\n assistTasksStatusTypeName,\n fieldReferenceTypeName,\n instructionContextTypeName,\n instructionTaskTypeName,\n instructionTypeName,\n outputFieldTypeName,\n outputTypeTypeName,\n promptTypeName,\n userInputTypeName,\n} from '../types'\nimport {contextDocumentSchema} from './contextDocumentSchema'\n\nexport const fieldReference = defineType({\n type: 'object',\n name: fieldReferenceTypeName,\n title: 'Field',\n icon: ThListIcon,\n\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Field',\n components: {\n input: FieldRefPathInput,\n },\n validation: (rule) => {\n const getForSchemaType = createFieldRefCache()\n return rule.custom((value, context) => {\n if (!value) {\n return 'Please select a field'\n }\n try {\n const docId = context.document?._id\n if (!docId) {\n return `Field reference cannot be used outside document inspector context. Could not resolve document id.`\n }\n const targetDocType = docId.replace(new RegExp(`^${assistDocumentIdPrefix}`), '')\n const schema = context.schema.get(targetDocType)\n if (!schema) {\n return `Field reference cannot be used outside document inspector context. Could not resolve schema: ${targetDocType}`\n }\n // oxlint-disable-next-line no-unsafe-type-assertion\n const {fieldRefs} = getForSchemaType(schema as ObjectSchemaType)\n const fieldRef = fieldRefs.find((r) => r.key === value)\n if (!fieldRef) {\n return `Field with path \"${value}\" does not exist in the schema.`\n }\n return true\n } catch (e) {\n console.error('Failed to resolve field reference', e)\n return 'Invalid field reference.'\n }\n })\n },\n }),\n ],\n preview: {\n select: {\n path: 'path',\n },\n prepare({path}) {\n return {\n title: path,\n path,\n icon: CodeIcon,\n }\n },\n },\n components: {\n preview: FieldRefPreview,\n },\n options: {\n modal: {\n type: 'popover',\n },\n },\n})\n\nexport const userInput = defineType({\n type: 'object',\n name: userInputTypeName,\n title: 'User input',\n icon: ComposeIcon,\n fields: [\n defineField({\n type: 'string',\n name: 'message',\n title: 'User input title',\n placeholder: 'Provide instruction text',\n description: 'The header above the user input text field',\n validation: (rule) => rule.required(),\n }),\n defineField({\n type: 'text',\n rows: 3,\n name: 'description',\n title: 'User input description',\n description: 'The description above the user input text field',\n }),\n ],\n preview: {\n select: {\n title: 'message',\n },\n },\n options: {\n modal: {\n type: 'popover',\n width: 1,\n },\n },\n})\n\nexport const promptContext = defineType({\n type: 'object',\n name: instructionContextTypeName,\n title: contextDocumentSchema.title,\n icon: contextDocumentSchema.icon,\n fields: [\n defineField({\n type: 'reference',\n name: 'reference',\n to: [{type: contextDocumentSchema.name}],\n title: 'Context',\n description: 'The referenced context will be inserted into the instruction',\n validation: (rule) => rule.required(),\n components: {\n input: function Fix(props) {\n return <Box style={{maxWidth: 300}}>{props.renderDefault(props)}</Box>\n },\n },\n }),\n ],\n preview: {\n select: {\n ref: 'reference._id',\n title: 'reference.title',\n context: 'reference.context',\n },\n prepare(select) {\n return select.ref\n ? (contextDocumentSchema?.preview?.prepare?.(select) ?? select)\n : {title: 'No reference selected', media: contextDocumentSchema.icon}\n },\n },\n options: {\n modal: {\n type: 'popover',\n width: 'auto',\n },\n },\n})\n\nexport const prompt = defineType({\n type: 'array',\n name: promptTypeName,\n title: 'Prompt',\n of: [\n defineArrayMember({\n type: 'block',\n styles: [{title: 'Normal', value: 'normal'}],\n lists: [],\n marks: {\n decorators: [],\n annotations: [],\n },\n of: [\n defineArrayMember({\n type: fieldReference.name,\n }),\n defineArrayMember({\n type: promptContext.name,\n }),\n defineArrayMember({\n type: userInput.name,\n }),\n ],\n }),\n /* defineArrayMember({\n type: fieldReference.name,\n }),\n defineArrayMember({\n type: promptContext.name,\n }),\n defineArrayMember({\n type: userInput.name,\n }),*/\n ],\n})\n\nexport const outputFieldType = defineType({\n type: 'object',\n name: outputFieldTypeName,\n title: 'Output field',\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Path',\n }),\n ],\n})\n\nexport const outputTypeType = defineType({\n type: 'object',\n name: outputTypeTypeName,\n title: 'Output type',\n fields: [\n defineField({\n type: 'string',\n name: 'type',\n title: 'Type',\n }),\n ],\n})\n\nexport const instruction = defineType({\n type: 'object',\n name: instructionTypeName,\n title: 'Instruction',\n fieldsets: [\n {name: 'appearance', title: 'Appearance', options: {collapsible: true, collapsed: true}},\n ],\n preview: {\n select: {\n icon: 'icon',\n title: 'title',\n userId: 'userId',\n },\n prepare: ({icon, title, userId}) => {\n return {\n title,\n // oxlint-disable-next-line no-unsafe-type-assertion\n icon: icon ? <Icon symbol={icon as IconSymbol} /> : SparklesIcon,\n userId,\n }\n },\n },\n components: {\n input: InstructionInput,\n preview: (props: any) => {\n // `icon` from `prepare` is either a rendered element (<Icon symbol={...} />) or a\n // component (the SparklesIcon fallback), so it cannot be rendered as <IconValue /> directly\n const IconValue = props.icon\n const icon = isValidElement(IconValue) ? IconValue : IconValue ? <IconValue /> : null\n return (\n <Flex gap={3} align=\"center\" padding={2}>\n {icon ? (\n <Box flex=\"none\">\n <Text size={1}>{icon}</Text>\n </Box>\n ) : null}\n\n <Stack flex={1} gap={2}>\n <Text size={1} textOverflow=\"ellipsis\" weight=\"medium\">\n {getInstructionTitle(props)}\n </Text>\n </Stack>\n\n {props.userId && (\n <Text size={1}>\n <Tooltip\n content={<Text size={1}>Only visible to you</Text>}\n padding={2}\n placement=\"top\"\n portal\n >\n <LockIcon />\n </Tooltip>\n </Text>\n )}\n </Flex>\n )\n },\n },\n fields: [\n defineField({\n type: prompt.name,\n name: 'prompt',\n title: 'Instruction',\n components: {\n input: PromptInput,\n },\n }),\n defineField({\n type: 'string',\n name: 'icon',\n title: 'Icon',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n input: IconInput,\n },\n }),\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n },\n }),\n defineField({\n type: 'string',\n name: 'userId',\n title: 'Visibility',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n input: InstructionVisibility,\n },\n initialValue: (_params, context) => context.currentUser?.id ?? '',\n readOnly: (context) =>\n Boolean(\n context.parent?.createdById && context.parent?.createdById !== context.currentUser?.id,\n ),\n }),\n defineField({\n type: 'string',\n name: 'createdById',\n title: 'Created by',\n hidden: true,\n fieldset: 'appearance',\n initialValue: (_params, context) => {\n return context.currentUser?.id ?? ''\n },\n }),\n defineField({\n type: 'array',\n name: 'output',\n title: 'Output filter',\n components: {\n input: InstructionOutputInput,\n field: InstructionOutputField,\n },\n of: [\n defineArrayMember({type: outputFieldType.name}),\n defineArrayMember({type: outputTypeType.name}),\n ],\n }),\n ],\n})\n\nexport const fieldInstructions = defineType({\n type: 'object',\n name: assistFieldTypeName,\n title: 'Field prompt',\n /* components: {\n input: FieldPromptInput,\n },*/\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Path',\n readOnly: true,\n hidden: true,\n }),\n defineField({\n type: 'array',\n name: 'instructions',\n title: 'Instructions',\n of: [{type: instruction.name}],\n components: {\n field: InstructionsArrayField,\n input: InstructionsArrayInput,\n },\n }),\n ],\n preview: {\n select: {\n title: 'path',\n },\n },\n})\n\nexport const assistDocumentSchema = defineType({\n //NOTE: this is a document type. Using object here ensures it does not appear in structure menus\n type: 'object',\n //workaround for using object and not document\n // oxlint-disable-next-line no-unsafe-type-assertion\n ...({liveEdit: true} as any),\n name: assistDocumentTypeName,\n title: 'AI Document',\n\n components: {\n input: AssistDocumentForm,\n field: (props: any) => {\n return props.renderDefault({...props, title: ''})\n },\n },\n fields: [\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n }),\n defineField({\n type: 'array',\n name: 'fields',\n title: 'Fields',\n of: [{type: fieldInstructions.name}],\n }),\n ],\n preview: {\n select: {\n title: 'title',\n },\n },\n})\n\nexport const instructionTask = defineType({\n type: 'object',\n name: instructionTaskTypeName,\n title: 'Instruction task',\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Path',\n }),\n defineField({\n type: 'string',\n name: 'instructionKey',\n title: 'Instruction key',\n }),\n defineField({\n type: 'datetime',\n name: 'started',\n title: 'Started',\n }),\n defineField({\n type: 'datetime',\n name: 'updated',\n title: 'Updated',\n }),\n defineField({\n type: 'string',\n name: 'info',\n title: 'Info',\n }),\n ],\n})\n\nexport const documentInstructionStatus = defineType({\n //NOTE: this is a document type. Using object here ensures it does not appear in structure menus\n type: 'object',\n //workaround for using object and not document\n // oxlint-disable-next-line no-unsafe-type-assertion\n ...({liveEdit: true} as any),\n name: assistTasksStatusTypeName,\n title: 'Document instruction status',\n fields: [\n defineField({\n type: 'array',\n name: 'tasks',\n title: 'Tasks',\n of: [{type: instructionTask.name}],\n }),\n ],\n})\n","import type {ArrayOfType, FieldProps, SchemaTypeDefinition} from 'sanity'\n\nimport {\n assistDocumentSchema,\n documentInstructionStatus,\n fieldInstructions,\n fieldReference,\n instruction,\n instructionTask,\n outputFieldType,\n outputTypeType,\n prompt,\n promptContext,\n userInput,\n} from './assistDocumentSchema'\nimport {contextDocumentSchema} from './contextDocumentSchema'\n\nfunction excludeComments<T extends SchemaTypeDefinition | ArrayOfType>(type: T): T {\n // oxlint-disable-next-line no-unsafe-type-assertion\n const existingRender = (type as any)?.components?.field\n return {\n ...type,\n ...('components' in type\n ? {\n components: {\n ...type.components,\n field: (props: FieldProps) => {\n const newProps = {...props, __internal_comments: undefined}\n if (typeof existingRender === 'function') {\n return existingRender(newProps)\n }\n return props.renderDefault(newProps)\n },\n },\n }\n : {}),\n ...('fields' in type\n ? {\n // recursively disable comments in fields\n fields: type.fields?.map((field) => excludeComments(field)),\n }\n : {}),\n ...('of' in type\n ? {\n // recursively disable comments in array items\n of: type.of?.map((arrayItemType) => excludeComments(arrayItemType)),\n }\n : {}),\n }\n}\n\nconst instructionForm = [\n fieldInstructions,\n instruction,\n fieldReference,\n prompt,\n userInput,\n promptContext,\n].map(excludeComments)\n\nexport const schemaTypes = [\n ...instructionForm,\n outputFieldType,\n outputTypeType,\n assistDocumentSchema,\n documentInstructionStatus,\n instructionTask,\n contextDocumentSchema,\n]\n","import type {SanityClient} from '@sanity/client'\nimport {definePlugin, isObjectSchemaType} from 'sanity'\n\nimport {AssistDocumentInputWrapper} from './assistDocument/AssistDocumentInput'\nimport {AssistDocumentLayout} from './assistDocument/AssistDocumentLayout'\nimport {AssistFieldWrapper} from './assistFormComponents/AssistField'\nimport {AssistFormBlock} from './assistFormComponents/AssistFormBlock'\nimport {AssistInlineFormBlock} from './assistFormComponents/AssistInlineFormBlock'\nimport {AssistItem} from './assistFormComponents/AssistItem'\nimport {assistInspector} from './assistInspector'\nimport {AssistLayout} from './assistLayout/AssistLayout'\nimport type {AssistConfig} from './assistTypes'\nimport {ImageContextProvider} from './components/ImageContext'\nimport {SafeValueInput} from './components/SafeValueInput'\nimport {packageName} from './constants'\nimport {assistFieldActions} from './fieldActions/assistFieldActions'\nimport type {AssistFieldActionNode, AssistFieldActionProps} from './fieldActions/customFieldActions'\nimport {isSchemaAssistEnabled} from './helpers/assistSupported'\nimport {validateStyleguide} from './helpers/styleguide'\nimport {isImage} from './helpers/typeUtils'\nimport {createAssistDocumentPresence} from './presence/AssistDocumentPresence'\nimport {schemaTypes} from './schemas'\nimport type {TranslationConfig} from './translate/types'\nimport {assistDocumentTypeName, type AssistPreset} from './types'\n\nexport interface AssistPluginConfig {\n translate?: TranslationConfig\n\n /**\n * Config that affects all instructions\n */\n assist?: AssistConfig\n\n fieldActions?: {\n title?: string\n /**\n * The returned array can include `undefined` entries in the action array. These will be filtered out.\n */\n useFieldActions?: (props: AssistFieldActionProps) => (AssistFieldActionNode | undefined)[]\n }\n\n /**\n * @internal\n */\n __customApiClient?: (defaultClient: SanityClient) => SanityClient\n\n /**\n * @internal\n */\n __presets?: Record<string, AssistPreset>\n}\n\nexport const assist = definePlugin<AssistPluginConfig | void>((config) => {\n const configWithDefaults = config ?? {}\n const styleguide = configWithDefaults.translate?.styleguide || ''\n const maxPathDepth = configWithDefaults.assist?.maxPathDepth\n const temperature = configWithDefaults.assist?.temperature\n\n if (typeof styleguide === 'string') {\n validateStyleguide(styleguide)\n }\n\n if (maxPathDepth !== undefined && (maxPathDepth < 1 || maxPathDepth > 12)) {\n throw new Error(\n `[${packageName}]: \\`assist.maxPathDepth\\` must be be in the range [1,12] inclusive, but was ${maxPathDepth}`,\n )\n }\n\n if (temperature !== undefined && (temperature < 0 || temperature > 1)) {\n throw new Error(\n `[${packageName}]: \\`assist.temperature\\` must be in the range [0,1] inclusive, but was ${temperature}`,\n )\n }\n\n return {\n name: packageName,\n // the addition of global references broke auto updating studios\n // new versions of studio know to look for this prop on assist plugin, and filter + console.warn if it is missing\n // oxlint-disable-next-line no-unsafe-type-assertion\n ...({handlesGDR: true} as any),\n schema: {\n types: schemaTypes,\n },\n i18n: {\n bundles: [{}],\n },\n\n document: {\n inspectors: (prev, context) => {\n const documentType = context.documentType\n const docSchema = context.schema.get(documentType)\n if (docSchema && isSchemaAssistEnabled(docSchema)) {\n return [...prev, assistInspector]\n }\n return prev\n },\n unstable_fieldActions: (prev, {documentType, schema}) => {\n if (documentType === assistDocumentTypeName) {\n return []\n }\n const docSchema = schema.get(documentType)\n if (docSchema && isSchemaAssistEnabled(docSchema)) {\n return [...prev, assistFieldActions]\n }\n return prev\n },\n unstable_languageFilter: (prev, {documentId, schema, schemaType}) => {\n if (schemaType === assistDocumentTypeName) {\n return []\n }\n const docSchema = schema.get(schemaType)\n if (docSchema && isObjectSchemaType(docSchema) && isSchemaAssistEnabled(docSchema)) {\n return [...prev, createAssistDocumentPresence(documentId)]\n }\n return prev\n },\n components: {\n unstable_layout: AssistDocumentLayout,\n },\n },\n\n studio: {\n components: {\n layout: function Layout(props) {\n return <AssistLayout {...props} config={configWithDefaults} />\n },\n },\n },\n\n form: {\n components: {\n input: AssistDocumentInputWrapper,\n field: AssistFieldWrapper,\n item: AssistItem,\n block: AssistFormBlock,\n inlineBlock: AssistInlineFormBlock,\n },\n },\n\n plugins: [\n definePlugin({\n name: `${packageName}/safe-value-input`,\n form: {components: {input: SafeValueInput}},\n })(),\n\n definePlugin({\n name: `${packageName}/generate-caption`,\n form: {\n components: {\n input: (props) => {\n const {schemaType} = props\n\n if (isImage(schemaType)) {\n return <ImageContextProvider {...props} />\n }\n return props.renderDefault(props)\n },\n },\n },\n })(),\n ],\n }\n})\n","import type {SanityClient} from '@sanity/client'\nimport {defer, delay, merge, Observable, of, partition, switchMap, throwError} from 'rxjs'\nimport {exhaustMapToWithTrailing} from 'rxjs-exhaustmap-with-trailing'\nimport {filter, mergeMap, share, take} from 'rxjs/operators'\nimport type {MutationEvent, ReconnectEvent, WelcomeEvent} from 'sanity'\n\n/** @internal */\nexport type ListenQueryParams = Record<string, string | number | boolean | string[]>\n\n/** @beta */\nexport interface ListenQueryOptions {\n tag?: string\n apiVersion?: string\n throttleTime?: number\n transitions?: ('update' | 'appear' | 'disappear')[]\n}\n\nconst fetch = (\n client: SanityClient,\n query: string,\n params: ListenQueryParams,\n options: ListenQueryOptions,\n) =>\n defer(() =>\n // getVersionedClient(options.apiVersion)\n client.observable.fetch(query, params, {\n tag: options.tag,\n filterResponse: true,\n }),\n )\n\nconst listen = (\n client: SanityClient,\n query: string,\n params: ListenQueryParams,\n options: ListenQueryOptions,\n) =>\n // oxlint-disable-next-line no-unsafe-type-assertion\n defer(() =>\n // getVersionedClient(options.apiVersion)\n client.listen(query, params, {\n events: ['welcome', 'mutation', 'reconnect'],\n includeResult: false,\n visibility: 'query',\n tag: options.tag,\n }),\n ) as Observable<ReconnectEvent | WelcomeEvent | MutationEvent>\n\nfunction isWelcomeEvent(\n event: MutationEvent | ReconnectEvent | WelcomeEvent,\n): event is WelcomeEvent {\n return event.type === 'welcome'\n}\n\n/** @internal */\nexport const listenQuery = (\n client: SanityClient,\n query: string | {fetch: string; listen: string},\n params: ListenQueryParams = {},\n options: ListenQueryOptions = {},\n) => {\n const fetchQuery = typeof query === 'string' ? query : query.fetch\n const listenerQuery = typeof query === 'string' ? query : query.listen\n\n const fetchOnce$ = fetch(client, fetchQuery, params, options)\n\n const events$ = listen(client, listenerQuery, params, options).pipe(\n mergeMap((ev, i) => {\n const isFirst = i === 0\n if (isFirst && !isWelcomeEvent(ev)) {\n // if the first event is not welcome, it is most likely a reconnect and\n // if it's not a reconnect something is very wrong\n // oxlint-disable-next-line no-deprecated\n return throwError(\n new Error(\n ev.type === 'reconnect'\n ? 'Could not establish EventSource connection'\n : `Received unexpected type of first event \"${ev.type}\"`,\n ),\n )\n }\n return of(ev)\n }),\n share(),\n )\n\n const [welcome$, mutationAndReconnect$] = partition(events$, isWelcomeEvent)\n const isRelevantEvent = (event: MutationEvent | ReconnectEvent | WelcomeEvent): boolean => {\n if (!options.transitions || event.type !== 'mutation') {\n return true\n }\n\n return options.transitions.includes(event.transition)\n }\n\n return merge(\n welcome$.pipe(take(1)),\n mutationAndReconnect$.pipe(\n filter(isRelevantEvent),\n switchMap((event) => merge(of(event), of(event).pipe(delay(options.throttleTime || 1000)))),\n ),\n ).pipe(exhaustMapToWithTrailing(fetchOnce$))\n}\n","import {useEffect, useRef, useState} from 'react'\nimport isEqual from 'react-fast-compare'\nimport {of} from 'rxjs'\nimport {catchError, distinctUntilChanged} from 'rxjs/operators'\nimport {type ListenQueryOptions, useClient} from 'sanity'\n\nimport {listenQuery} from './fixedListenQuery'\n\ntype Params = Record<string, string | number | boolean | string[]>\n\ntype ReturnShape<T> = {\n loading: boolean\n error: boolean\n data: T | null\n}\n\ntype Observable = {\n unsubscribe: () => void\n}\n\nconst DEFAULT_PARAMS = {}\nconst DEFAULT_OPTIONS: ListenQueryOptions = {apiVersion: `v2022-05-09`}\n\nexport function useListeningQuery<T>(\n query: string,\n params: Params = DEFAULT_PARAMS,\n options: ListenQueryOptions = DEFAULT_OPTIONS,\n): ReturnShape<T> {\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState(false)\n const [data, setData] = useState<T | null>(null)\n const subscription = useRef<null | Observable>(null)\n\n const client = useClient({apiVersion: `v2022-05-09`})\n\n useEffect(() => {\n if (query) {\n subscription.current = listenQuery(client, query, params, options)\n .pipe(\n distinctUntilChanged(isEqual),\n catchError((err) => {\n console.error(err)\n setError(true)\n setLoading(false)\n setData(null)\n\n return of(null)\n }),\n )\n .subscribe((documents) => {\n setData((current) => (isEqual(current, documents) ? current : documents))\n setLoading(false)\n setError(false)\n })\n }\n\n return () => {\n return subscription.current ? subscription.current.unsubscribe() : undefined\n }\n }, [query, params, options, client])\n\n return {loading, error, data}\n}\n","import {SyncIcon} from '@sanity/icons/Sync'\nimport {Box, Button, Card, Flex, Label, Spinner, Stack} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {useClient, useSchema} from 'sanity'\n\nimport {useListeningQuery} from '../../_lib/useListeningQuery'\nimport {assistSerializedTypeName, type SerializedSchemaType} from '../../types'\nimport {serializeSchema} from './serializeSchema'\n\nconst NO_DATA: SerializedSchemaType[] = []\n\nconst defaultTitle = 'Sync schema'\n\nexport function SchemaTypeTool() {\n const schema = useSchema()\n const client = useClient({apiVersion: '2023-01-01'})\n const [saving, setSaving] = useState(false)\n const [syncTitle, setSyncTitle] = useState(defaultTitle)\n\n const {data} = useListeningQuery<SerializedSchemaType[]>('*[_type==$type] | order(_type)', {\n type: assistSerializedTypeName,\n })\n\n const types = useMemo(() => {\n return serializeSchema(schema)\n }, [schema])\n\n const storeTypes = useCallback(() => {\n setSaving(true)\n let canSave = true\n async function store() {\n setSyncTitle(`Syncing 0/${types.length}`)\n const transaction = client.transaction()\n for (let i = 0; i < types.length; i++) {\n if (!canSave) {\n break\n }\n const type = types[i]!\n // oxlint-disable-next-line no-await-in-loop, no-unsafe-type-assertion, await-thenable\n await transaction.createOrReplace(type as Required<typeof type>)\n if (i > 0 && i % 50 === 0) {\n // oxlint-disable-next-line no-await-in-loop\n await transaction.commit()\n transaction.reset()\n setSyncTitle(`Syncing ${i}/${types.length}`)\n }\n }\n await transaction.commit()\n }\n store()\n .catch(console.error)\n .finally(() => {\n setSaving(false)\n setSyncTitle(defaultTitle)\n })\n return () => {\n canSave = false\n setSaving(false)\n setSyncTitle(defaultTitle)\n }\n }, [types, client, setSaving, setSyncTitle])\n\n return (\n <Card padding={4} overflow=\"auto\" style={{height: 'calc(100vh - 81px)'}}>\n <Stack gap={4}>\n <Box>\n <Button\n icon={saving ? <Spinner style={{marginTop: 5}} /> : SyncIcon}\n text={syncTitle}\n disabled={saving}\n onClick={storeTypes}\n />\n </Box>\n <Flex gap={2}>\n <Stack gap={2}>\n <Label>Studio schema</Label>\n <ul>\n {types.map((type) => (\n <li key={type.name}>\n <SchemaEntry schemaStub={type} />\n </li>\n ))}\n </ul>\n </Stack>\n\n <Stack gap={2}>\n <Label>Stored schema</Label>\n <ul>\n {(data ?? NO_DATA).map((type) => (\n <li key={type.name}>\n <SchemaEntry schemaStub={type} />\n </li>\n ))}\n </ul>\n </Stack>\n </Flex>\n </Stack>\n </Card>\n )\n}\n\nfunction SchemaEntry({schemaStub}: {schemaStub: SerializedSchemaType}) {\n const out = useMemo(() => JSON.stringify(schemaStub, null, 2), [schemaStub])\n return <pre>{out}</pre>\n}\n","import {useRunInstruction} from '../assistLayout/RunInstructionProvider'\n\nexport type GetUserInput = (args: {\n /**\n * Dialog title\n */\n title: string\n /**\n * One titled input per array item\n */\n inputs: CustomInput[]\n}) => Promise<CustomInputResult[] | undefined>\n\n/**\n *\n */\nexport interface CustomInput {\n /**\n * Id for the input\n */\n id: string\n /**\n * Title of the input field\n */\n title: string\n /**\n * Additional info that will be displayed over the input\n */\n description?: string\n}\n\nexport type CustomInputResult = {\n /**\n * Identifies which custom input the `result`belongs to\n */\n input: CustomInput\n\n /**\n * The text provided by the user in the input\n */\n result: string\n}\n\n/**\n * `useUserInput` returns a function that can be used to await user input.\n *\n * Useful for custom `fieldActions` to get user input for populating Agent Action requests,.\n *\n * ```ts\n * fieldActions: {\n * useFieldActions: (props) => {\n * const {\n * documentSchemaType,\n * schemaId,\n * getDocumentValue,\n * getConditionalPaths,\n * documentIdForAction,\n * } = props\n * const client = useClient({apiVersion: 'vX'})\n * const getUserInput = useUserInput()\n * return useMemo(() => {\n * return [\n * defineAssistFieldAction({\n * title: 'Log user input',\n * icon: UserIcon,\n * onAction: async () => {\n * const input = await getUserInput({\n * title: 'Topic',\n * inputs: [{id: 'about', title: 'What should the article be about?'}],\n * })\n * if (!input) return // user canceled input\n * await client.agent.action.generate({\n * schemaId,\n * targetDocument: {\n * operation: 'createIfNotExists',\n * _id: documentIdForAction,\n * _type: documentSchemaType.name,\n * initialValues: getDocumentValue(),\n * },\n * instruction: `\n * Create a document about the following topic:\n * $about\n * ---\n * `,\n * instructionParams: {about: input[0].result},\n * conditionalPaths: {paths: getConditionalPaths()},\n * })\n * },\n * }),\n * ]\n * }, [\n * client,\n * documentSchemaType,\n * schemaId,\n * getDocumentValue,\n * getConditionalPaths,\n * documentIdForAction,\n * getUserInput,\n * ])\n * },\n * }\n * ```\n */\nexport function useUserInput(): GetUserInput {\n const {getUserInput} = useRunInstruction()\n return getUserInput\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAgBA,kBAAkBC,IAA0B;CAC1D,IAAME,WAAWC,iBAAiBH,EAAE,CAAC,CAACE;CAEtC,OAAOA,SAASE,SAAS,MAAM,KAAKF,SAASE,SAAS,QAAQ,KAAKF,SAASE,SAAS,QAAQ;AAC/F;ACCA,SAAOQ,iBAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACLC,MAAYR,OAAuB,IAAI,GAEvC,CAAAS,oBAAAC,yBAAoDT,SAAsB,IAAI,GAC9E,CAAAU,qBAAAC,0BAAsDX,SAAsB,IAAI,GAACY;CAAA,AAAAP,EAAA,OAAAQ,OAAAC,IAAA,2BAAA,KACxBF,KAAA;EAAAG,GAAI;EAACC,GAAK;CAAC,GAACX,EAAA,KAAAO,MAAAA,KAAAP,EAAA;CAArE,IAAA,CAAAY,cAAAC,mBAAwClB,SAAiBY,EAAY,GAACO;CAAA,AAAAd,EAAA,OAAAQ,OAAAC,IAAA,2BAAA,KACzBK,KAAA;EAAAJ,GAAI;EAACC,GAAK;CAAC,GAACX,EAAA,KAAAc,MAAAA,KAAAd,EAAA;CAAzD,IAAA,CAAAe,QAAAC,aAA4BrB,SAAiBmB,EAAY,GAEzDG,mBAAyBvB,OAAO,CAAC,GACjCwB,mBAAyBxB,OAAO,CAAC,GAEjCyB,oBAA0BzB,OAAO,CAAC,GAClC0B,oBAA0B1B,OAAO,CAAC,GAAC2B,IAAAC;CAEnC9B,AAFmCQ,EAAA,OAAAQ,OAAAC,IAAA,2BAAA,KAEzBY,WAAA;EACR,IAAAE,KAAWrB,IAAGsB;EAEd,IAAI,CAACD,IAAE;EAEP,IAAAE,gBAAqC,CAAA,GACrCC,SAAaH,GAAEI;EAEf,OAAOD,UAAUA,WAAWE,SAAQC,OAQlCH,AANE9B,kBAAkB8B,MAAM,KAGxBD,cAAaK,KAAMJ,MAAM,GAG3BA,SAASA,OAAMC;EAGjB,IAAAI,eAAA,WAAA;GAGE,IAAAE,aAFqBR,cAAa,EAEH,EAAAS,sBAK/B,KALmB;IAAAxB,GACd;IAACC,GACD;IAACwB,OACGC,OAAMC;IAAWC,QAChBF,OAAMG;GAChB,GAEAC,UAAgBjB,GAAEW,sBAAwB;GAS1C5B,AAPAF,sBAAsB;IAAAM,GACjBuB,WAAUvB,IAAKO,iBAAgBO;IAAQb,GACvCsB,WAAUtB,IAAKO,iBAAgBM;IAAQiB,GACvCR,WAAUE;IAAMO,GAChBT,WAAUK;GACf,CAAC,GAEDhC,uBAAuB;IAAAI,GAClB8B,QAAO9B,IAAKS,kBAAiBK;IAAQb,GACrC6B,QAAO7B,IAAKS,kBAAiBI;IAAQiB,GACrCD,QAAOL;IAAMO,GACbF,QAAOF;GACZ,CAAC;EAAC,GAGJK,eAAA,WAAA;GACE,IAAAC,UAAcR,OAAMQ,SACpBC,UAAcT,OAAMS;GAEpB,KAAK,IAAAC,kBAAsBrB,eAEzBoB,AADAD,WAAWZ,eAAYe,YACvBF,WAAWb,eAAYgB;GAGzB,IAAAC,iBAAqBxB,cAAa;GAclCT,AAZAC,iBAAgBO,UAAWoB,WAAWZ,gBAAYe,cAAgBX,OAAMQ,UAExE1B,iBAAgBM,UAAWqB,WAAWb,gBAAYgB,aAAeZ,OAAMS,UAEvEhC,gBAAgB;IAAAH,GACXO,iBAAgBO;IAAQb,GACxBO,iBAAgBM;GACrB,CAAC,GAEDL,kBAAiBK,UAAWoB,SAC5BxB,kBAAiBI,UAAWqB,SAE5B7B,UAAU;IAAAN,GAAIkC;IAAOjC,GAAKkC;GAAO,CAAC;EAAC;EAGrCT,OAAMc,iBAAkB,UAAUP,cAAc,EAAAQ,SAAU,GAAI,CAAC;EAE/D,IAAAC,KAAW,IAAIC,eAAetB,YAAY;EAE1CqB,GAAEE,QAAS/B,EAAE;EAEb,KAAK,IAAAgC,kBAAsB9B,eAEzB2B,AADApB,eAAYkB,iBAAkB,UAAUP,cAAc,EAAAQ,SAAU,GAAI,CAAC,GACrEC,GAAEE,QAAStB,cAAY;EAGX,OAAdW,aAAa,SAEN;GACLS,GAAEI,UAAWjC,EAAE;GAEf,KAAK,IAAAkC,kBAAsBhC,eAEzBO,AADAoB,GAAEI,UAAWxB,cAAY,GACzBA,eAAY0B,oBAAqB,UAAUf,YAAY;GAKzDP,AAFAgB,GAAEO,WAAY,GAEdvB,OAAMsB,oBAAqB,UAAUf,YAAY;EAAC;CACnD,GACArB,KAAA,CAAA,GAAEtB,EAAA,KAAAqB,IAAArB,EAAA,KAAAsB,OAAAD,KAAArB,EAAA,IAAAsB,KAAAtB,EAAA,KAjGLR,UAAU6B,IAiGPC,EAAE;CAAC,IAAAsC;CAAA,AAAA5D,EAAA,OAAAY,gBAAAZ,EAAA,OAAAG,sBAIFyD,KAAAzD,sBAAA;EAAAO,GACKP,mBAAkBO,IAAKE,aAAYF;EAAEC,GACrCR,mBAAkBQ,IAAKC,aAAYD;EAAE8B,GACrCtC,mBAAkBsC;EAAEC,GACpBvC,mBAAkBuC;CACvB,GAAC1C,EAAA,KAAAY,cAAAZ,EAAA,KAAAG,oBAAAH,EAAA,KAAA4D,MAAAA,KAAA5D,EAAA;CAPL,IAAA6D,SAEID,IAOHE;CAAA,AAAA9D,EAAA,OAAAK,uBAAAL,EAAA,OAAAe,UAIG+C,KAAAzD,uBAAA;EAAAK,GACKL,oBAAmBK,IAAKK,OAAML;EAAEC,GAChCN,oBAAmBM,IAAKI,OAAMJ;EAAE8B,GAChCpC,oBAAmBoC;EAAEC,GACrBrC,oBAAmBqC;CACxB,GAAC1C,EAAA,KAAAK,qBAAAL,EAAA,KAAAe,QAAAf,EAAA,KAAA8D,MAAAA,KAAA9D,EAAA;CAPL,IAAA+D,UAEID,IAOHE;CAE4B,OAF5BhE,EAAA,QAAA6D,UAAA7D,EAAA,QAAA+D,WAEMC,KAAA;EAAAH;EAAAE;EAAA7D;CAAqB,GAACF,EAAA,MAAA6D,QAAA7D,EAAA,MAAA+D,SAAA/D,EAAA,MAAAgE,MAAAA,KAAAhE,EAAA,KAAtBgE;AAAsB;ACvI/B,SAAOK,gBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC,UAAAC,eAAAC;CAAA,AAAAJ,EAAA,OAAAD,SAKgDG,WAAAF,EAAA,IAAAG,gBAAAH,EAAA,IAAAI,YAAAJ,EAAA,OAArD,CAAAE,UAAAC,kBAAAC,aAAgDL,OAAKC,EAAA,KAAAD,OAAAC,EAAA,KAAAE,UAAAF,EAAA,KAAAG,eAAAH,EAAA,KAAAI;CAErD,IAAA,EAAAC,QAAAC,SAAAC,QAA+BV,eAAe,GAACW,IAAAC;CAE/Cd,AAF+CK,EAAA,OAAAK,UAAAL,EAAA,OAAAM,WAAAN,EAAA,OAAAG,iBAErCK,WAAA;EACRL,gBAAgBE,UAAAC,UAAA;GAAAD;GAAAC;EAA2C,IAA3C,IAA4C;CAAC,GAC5DG,KAAA;EAACJ;EAAQC;EAASH;CAAa,GAACH,EAAA,KAAAK,QAAAL,EAAA,KAAAM,SAAAN,EAAA,KAAAG,eAAAH,EAAA,KAAAQ,IAAAR,EAAA,KAAAS,OAAAD,KAAAR,EAAA,IAAAS,KAAAT,EAAA,KAFnCL,UAAUa,IAEPC,EAAgC;CAAC,IAAAC;CAK5B,OAL4BV,EAAA,OAAAE,YAAAF,EAAA,QAAAO,OAAAP,EAAA,QAAAI,aAGlCM,KAAA,oBAAA,OAAA;EAEM,GAFGN;EAAgBG;EACtBL;CACG,CAAA,GAAAF,EAAA,KAAAE,UAAAF,EAAA,MAAAO,KAAAP,EAAA,MAAAI,WAAAJ,EAAA,MAAAU,MAAAA,KAAAV,EAAA,KAFNU;AAEM;ACjBV,MAAaG,yBAAyBF,cAAsC,IAAI;ACChF,SAAOM,qBAAA;CACL,IAAAC,QAAcJ,WAAWE,sBAAsB;CAE/C,IAAI,CAACE,OACH,MAAUC,MAAM,kCAAkC;CACnD,OAEMD;AAAK;ACNd,SAAOQ,kBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC,UAAAC,KAAAC,WAAAC;CAAA,AAAAL,EAAA,OAAAD,SAGoDG,WAAAF,EAAA,IAAAG,MAAAH,EAAA,IAAAI,YAAAJ,EAAA,IAAAK,SAAAL,EAAA,OAAzD,CAAAE,UAAAI,MAAAH,KAAAE,WAAAD,aAAoDL,OAAKC,EAAA,KAAAD,OAAAC,EAAA,KAAAE,UAAAF,EAAA,KAAAG,KAAAH,EAAA,KAAAI,WAAAJ,EAAA,KAAAK;CACzD,IAAAE,QAAcV,mBAAmB,GACjC,CAAAW,OAAAC,YAA0Bf,SAAsC,IAAI,GAACgB;CAAA,AAAAV,EAAA,OAAAG,OAAAH,EAAA,OAAAO,MAAAI,QAAAX,EAAA,OAAAK,UAE3DK,WAAMH,MAAKI,KAAKC,UAAWT,KAAK,EAAAE,OAAO,CAAC,GAACL,EAAA,KAAAG,KAAAH,EAAA,KAAAO,MAAAI,MAAAX,EAAA,KAAAK,QAAAL,EAAA,KAAAU,MAAAA,KAAAV,EAAA;CAAA,IAAAa;CAAnDpB,AAAmDO,EAAA,OAAAG,OAAAH,EAAA,QAAAO,SAAAP,EAAA,QAAAK,UAAEQ,KAAA;EAACV;EAAKI;EAAOF;CAAM,GAACL,EAAA,KAAAG,KAAAH,EAAA,MAAAO,OAAAP,EAAA,MAAAK,QAAAL,EAAA,MAAAa,MAAAA,KAAAb,EAAA,KAAzEP,UAAUiB,IAA2CG,EAAoB;CAAC,IAAAC;CAAA,AAAAd,EAAA,QAAAG,OAAAH,EAAA,QAAAQ,SAAAR,EAAA,QAAAO,MAAAI,QAEhEG,WAAA;EACR,AAAIN,SAAOD,MAAKI,KAAKI,KAAMZ,KAAKK,KAAK;CAAC,GACvCR,EAAA,MAAAG,KAAAH,EAAA,MAAAQ,OAAAR,EAAA,MAAAO,MAAAI,MAAAX,EAAA,MAAAc,MAAAA,KAAAd,EAAA;CAAA,IAAAgB;CAFDvB,AAECO,EAAA,QAAAG,OAAAH,EAAA,QAAAQ,SAAAR,EAAA,QAAAO,SAAES,KAAA;EAACb;EAAKK;EAAOD;CAAK,GAACP,EAAA,MAAAG,KAAAH,EAAA,MAAAQ,OAAAR,EAAA,MAAAO,OAAAP,EAAA,MAAAgB,MAAAA,KAAAhB,EAAA,KAFtBP,UAAUqB,IAEPE,EAAmB;CAAC,IAAAC;CAKH,OALGjB,EAAA,QAAAE,YAAAF,EAAA,QAAAI,aAGrBa,KAAA,oBAAC,iBAAD;EAAgB,GAAKb;EAA0BK,eAAAA;EAC5CP;CADa,CAAA,GAEEF,EAAA,MAAAE,UAAAF,EAAA,MAAAI,WAAAJ,EAAA,MAAAiB,MAAAA,KAAAjB,EAAA,KAFlBiB;AAEkB;ACJtB,SAAgBc,wBAAyC;CACvD,IAAMC,aAAuB,CAAA,GACvBC,YAAsB,CAAA,GAEtBC,WAAW;EACfV,sBAAM,IAAIW,IAAyC;EACnDL,oBAAI,IAAIK,IAAyC;CACnD,GAEMC,WAAW;EACfZ,sBAAM,IAAIW,IAAiD;EAC3DL,oBAAI,IAAIK,IAAiD;CAC3D,GAEME,YAAmD,CAAA;CAEzD,SAASC,kBAAkB;EACzB,IAAMjB,aAA0B,CAAA;EAEhC,KAAK,IAAMI,OAAOO,YAAY;GAC5B,IAAMO,UAAUL,SAASJ,GAAGU,IAAIf,GAAG,GAC7BgB,YAAYL,SAASZ,KAAKgB,IAAIf,GAAG,GAEjCiB,YAAYR,SAASV,KAAKgB,IAAIf,GAAG,GACjCkB,cAAcP,SAASZ,KAAKgB,IAAIf,GAAG;GAEzC,AAAIc,WAAWG,aACbrB,WAAWuB,KAAK;IACdnB;IACAD,MAAM;KAAC,GAAGkB;KAAWhB,SAASiB;IAAW;IACzCb,IAAI;KAAC,GAAGS;KAASb,SAASe;IAAS;GACrC,CAAC;EAEL;EAEA,KAAK,IAAMlB,YAAYc,WACrBd,SAASF,UAAU;CAEvB;CAEA,OAAO;EACLS,IAAI;GACFR,UAAUG,KAAKC,SAAS;IAMtB,OALAQ,SAASJ,GAAGe,IAAIpB,KAAK,IAAI,GACzBW,SAASN,GAAGe,IAAIpB,KAAKC,OAAO,GAE5BM,WAAWY,KAAKnB,GAAG,SAEN;KAEXW,AADAF,SAASJ,GAAGgB,OAAOrB,GAAG,GACtBW,SAASN,GAAGgB,OAAOrB,GAAG;KAEtB,IAAMsB,MAAMf,WAAWgB,QAAQvB,GAAG;KAIlCa,AAFIS,MAAM,MAAIf,WAAWiB,OAAOF,KAAK,CAAC,GAEtCT,gBAAgB;IAClB;GACF;GACAV,KAAKH,KAAKI,OAAO;IAGf,AAFAK,SAASJ,GAAGe,IAAIpB,KAAKI,KAAK,GAEtBI,UAAUiB,SAASzB,GAAG,KAAGa,gBAAgB;GAC/C;EACF;EAEAjB,YAAY,EACVC,UAAUC,UAAU;GAGlB,OAFAc,UAAUO,KAAKrB,QAAQ,SAEV;IACX,IAAMwB,MAAMV,UAAUW,QAAQzB,QAAQ;IAEtC,AAAIwB,MAAM,MAAIV,UAAUY,OAAOF,KAAK,CAAC;GACvC;EACF,EACF;EAEAvB,MAAM;GACJF,UAAUG,KAAKC,SAAS;IAMtB,OALAQ,SAASV,KAAKqB,IAAIpB,KAAK,IAAI,GAC3BW,SAASZ,KAAKqB,IAAIpB,KAAKC,OAAO,GAE9BO,UAAUW,KAAKnB,GAAG,SAEL;KAEXW,AADAF,SAASV,KAAKsB,OAAOrB,GAAG,GACxBW,SAASZ,KAAKsB,OAAOrB,GAAG;KAExB,IAAMsB,MAAMd,UAAUe,QAAQvB,GAAG;KAIjCa,AAFIS,MAAM,MAAId,UAAUgB,OAAOF,KAAK,CAAC,GAErCT,gBAAgB;IAClB;GACF;GACAV,KAAKH,KAAKI,OAAO;IAGf,AAFAK,SAASV,KAAKqB,IAAIpB,KAAKI,KAAK,GAExBG,WAAWkB,SAASzB,GAAG,KAAGa,gBAAgB;GAChD;EACF;CACF;AACF;ACnHA,SAAOoB,mBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAIL,EAAAC,UAAAC,uBAAuCJ,OAAKK;CAAA,AAAAJ,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KACCF,KAAAT,sBAAsB,GAACK,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAApE,IAAAO,QAA6CH,IAA4BI,IAAAC;CAEzEjB,AAFyEQ,EAAA,OAAAG,sBAI5CK,KAAAR,EAAA,IAAAS,KAAAT,EAAA,OAD3BQ,WAAML,sBAAsBI,MAAKG,WAAWC,UAAWR,kBAAkB,GACzEM,KAAA,CAACN,oBAAoBI,KAAK,GAACP,EAAA,KAAAG,oBAAAH,EAAA,KAAAQ,IAAAR,EAAA,KAAAS,KAF7BjB,UACEgB,IACAC,EACF;CAAC,IAAAG;CAEiG,OAFjGZ,EAAA,OAAAE,WAEiGU,KAAAZ,EAAA,MAA3FY,KAAA,oBAAA,uBAAA,UAAA;EAAwCL,OAAAA;EAAQL;CAAS,CAAA,GAAkCF,EAAA,KAAAE,UAAAF,EAAA,KAAAY,KAA3FA;AAA2F;ACVpG,SAASM,sBACPC,SACAC,MACAC,QACoB;CACpB,IAAMC,UAAUF,KAAKG,IAAIH,KAAKI,IAAI,GAC5BC,UAAUL,KAAKG,IAAIH,KAAKI,IAAIH,OAAOE,IAAIJ,QAAQO,MAAMC,SACrDC,UAAUR,KAAKG,IAAIF,OAAOE,IAAIF,OAAOG,IAAIL,QAAQO,MAAMC;CAE7D,OAAO;EACLN;EACAQ,GAAGT,KAAKS;EACRN,GAAGD;EACHA;EACAQ,QAAQV,KAAKG,IAAIJ,QAAQY,KAAKJ;EAC9BK,MAAMZ,KAAKG,IAAIH,KAAKI,IAAIL,QAAQY,KAAKJ;EACrCF;EACAG;EACAK,aAAaR,WAAWG;CAC1B;AACF;AAEA,SAAgBM,mBACdf,SACAgB,WACe;CACf,IAAMG,aAAmB;EACvBf,GAAGY,UAAUC,KAAKf,OAAOE,IAAIJ,QAAQO,MAAMa;EAE3CV,GAAGM,UAAUC,KAAKf,OAAOQ;EAEzBW,GAAGL,UAAUC,KAAKf,OAAOmB;EACzBhB,GAAGW,UAAUC,KAAKf,OAAOG,IAAIL,QAAQO,MAAMa,YAAY;CACzD,GAEMH,OAAOlB,sBAAsBC,SAASgB,UAAUC,KAAKK,SAASH,UAAU;CAC9EF,KAAKP,IAAIM,UAAUC,KAAKK,QAAQZ,IAAIM,UAAUC,KAAKK,QAAQD;CAE3D,IAAME,aAAaJ,WAAWf,IAAIe,WAAWd,GAEvCmB,WAAiB;EACrBpB,GAAGY,UAAUE,GAAGhB,OAAOE,IAAIJ,QAAQO,MAAMa;EAEzCV,GAAGM,UAAUE,GAAGhB,OAAOQ;EAEvBW,GAAGL,UAAUE,GAAGhB,OAAOmB;EACvBhB,GAAGW,UAAUE,GAAGhB,OAAOG,IAAIL,QAAQO,MAAMa,YAAY;CACvD,GAEMK,WAAWD,SAASpB,IAAIoB,SAASnB,GAEjCa,KAAKnB,sBAAsBC,SAASgB,UAAUE,GAAGI,SAASE,QAAQ,GAElEE,YAAYC,KAAKC,IAAIV,GAAGP,QAAQM,KAAKN,MAAM;CAoBjD,OAjBAM,KAAKb,IAAIuB,KAAKE,IAAIH,WAAWT,KAAKJ,IAAI,GAClCI,KAAKb,IAAIoB,SAASpB,IACpBa,KAAKb,IAAIuB,KAAKE,IAAIL,SAASpB,GAAGa,KAAKJ,IAAI,IAC9BI,KAAKb,IAAIqB,aAClBR,KAAKb,IAAIuB,KAAKC,IAAIH,UAAUR,KAAKN,MAAM,IAEzCO,GAAGd,IAAIuB,KAAKE,IAAIH,WAAWR,GAAGL,IAAI,GAC9BK,GAAGd,IAAIe,WAAWf,IACpBc,GAAGd,IAAIuB,KAAKE,IAAIV,WAAWf,GAAGc,GAAGL,IAAI,IAC5BK,GAAGd,IAAImB,eAChBL,GAAGd,IAAIuB,KAAKC,IAAIL,YAAYL,GAAGP,MAAM,IAIvCM,KAAKb,IAAIuB,KAAKE,IAAIF,KAAKC,IAAIX,KAAKb,GAAGe,WAAWf,CAAC,GAAGmB,UAAU,GAC5DL,GAAGd,IAAIuB,KAAKE,IAAIF,KAAKC,IAAIV,GAAGd,GAAGoB,SAASpB,CAAC,GAAGqB,QAAQ,GAE7C;EAACR;EAAMC;CAAE;AAClB;AClFA,MCQa,yBAAyB,6BACzB,+BAA+B,yBAI/B,yBAAyB,wCACzB,sBAAsB,kCAItB,oBAAoB,uCAKpB,0BAA0B,8BAE1B,4BAA4B,6BAC5B,0BAA0B,iCAC1B,wBAAwB,0CAExB,2BAA2B,iCAC3B,gCAAgC,kCAOhC,iBAAiB,WACjB,mBAAmB,eAGnB,kBAAkB;ACpC/B,SAAOiB,WAAAC,MAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAEoB,OAFpBF,EAAA,OAAAD,OAEoBG,KAAAF,EAAA,MAAhBE,KAAAC,WAAWJ,IAAI,GAACC,EAAA,KAAAD,MAAAC,EAAA,KAAAE,KAAvBA;AAAuB;AAI3B,SAASC,WAAWJ,MAAqB;CAIvC,OAHIA,KAAKK,SACAC,MAAMC,QAAQP,IAAI,IAAIJ,aAAaI,IAAI,IAAIA,OAE7CH;AACT;AAEA,SAAgBW,oBAAoBC,aAAiC;CACnE,OAAOA,aAAaC,SAAS;AAC/B;AAEA,SAAgBC,UAAaC,GAAiC;CAC5D,OAAOA,KAAyB;AAClC;ACtBA,SAAgBM,oBAAoBC,MAAuB;CACzD,OAAOA,KAAKC,GAAGC,MAAMC,MAAMC,OAAOD,GAAG,OAAO,CAAC;AAC/C;;;;;;;AAQA,SAAgBC,OAAOC,YAAwBC,UAA2B;CAOxE,OANID,WAAWE,SAASD,WACf,KAEJD,WAAWL,OAGTI,OAAOC,WAAWL,MAAMM,QAAQ,IAF9B;AAGX;AAEA,SAAgBE,QAAQH,YAAwB;CAC9C,OAAOD,OAAOC,YAAY,OAAO;AACnC;AAEA,SAAgBI,0BACdJ,YAC0D;CAC1D,IAAI,CAACA,YACH;CAGF,IAAMQ,mBAAoBR,WAAWS,SAA0BC,UAAUC;CAYzE,OAXI,OAAOH,oBAAqB,WACvB;EACLH,MAAMG;EACNF,qBAAqB;CACvB,IACSE,mBACF;EACLH,MAAMG,iBAAiBH;EACvBC,qBAAqBE,iBAAiBF,uBAAuB;CAC/D,IAEKF,0BAA0BJ,WAAWL,IAAI;AAClD;AAEA,SAAgBiB,+BACdZ,YACoB;CAUpB,OATKA,aAI0BA,WAAWS,SAA0BC,UAChEG,yBAIGD,+BAA+BZ,WAAWL,IAAI,IARnD;AASJ;ACxDA,SAAgBuB,sBAAsBC,MAAkB;CAEtD,OAAO,CAAEA,KAAKC,SAAuCC,UAAUC;AACjE;AAEA,SAAgBC,kBAAkBJ,MAAkB;CAsBlD,OArBI,CAACD,sBAAsBC,IAAI,KAI3BK,WAAWL,IAAI,IACV,KAGLA,KAAKM,aAAa,UAEb,CADkBN,KAAKQ,GAAGC,OAAOC,MAAML,WAAWK,CAAC,CAClDH,IAGNP,KAAKM,aAAa,YAGlB,CAFwBN,KAAKY,OAAOH,OAAOI,UAAUR,WAAWQ,MAAMb,IAAI,CAEzEW,KAEDb,OAAOE,MAAM,OAAO;AAI1B;AAEA,SAASK,WAAWL,MAAkB;CACpC,OAAO,CAACD,sBAAsBC,IAAI,KAAKc,kBAAkBd,IAAI;AAC/D;AAEA,SAASc,kBAAkBd,MAAkB;CAC3C,OACEA,KAAKe,SAAS,sBACdf,KAAKe,SAAS,yBACdjB,OAAOE,MAAM,yBAAyB,KACrCF,OAAOE,MAAM,WAAW,KAEvB,EAAEA,MAAMC,QAAAA,EAA8BC,UAAUc,mBAClDlB,OAAOE,MAAM,uBAAuB,KACpCF,OAAOE,MAAM,MAAM;AAEvB;AC7CA,MAAMwB,2BAA2BP,cAAkCQ,KAAAA,CAAS;AAM5E,SAAOG,0BAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAGL,EAAAJ,YAAkBE,OAAKG;CAAA,IAAAF,EAAA,OAAAH,SAAA;EAGrB,IAAAM,gBAAsBN,QAAOO,KAC3BC,QAEF;EACsFL,AAA/EE,KAAAC,eAAaG,MAAYC,OAAGf,aAAaW,eAAaG,MAAYC,IAAY,IAA9EZ,KAAAA,GAA+EK,EAAA,KAAAH,SAAAG,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CALxF,IAAAQ,oBAKEN,IACWO;CAKyB,OALzBT,EAAA,OAAAQ,qBAAAR,EAAA,OAAAD,MAAAW,YAGXD,KAAA,oBAAA,yBAAA,UAAA;EAA0CD,OAAAA;YACvCT,MAAKW;CACR,CAAA,GAAoCV,EAAA,KAAAQ,mBAAAR,EAAA,KAAAD,MAAAW,UAAAV,EAAA,KAAAS,MAAAA,KAAAT,EAAA,IAFpCS;AAEoC;AAhBjC,SAAAJ,SAAAM,QAAA;CAAA,OAQCA,OAAMC,SAAU,WAAWnB,kBAAkBkB,OAAML,MAAMO,UAAW;AAAC;ACjB7E,MAAaE,yBACX,0JAUWI,cAAc,kBAEdC,cAAc,oBAEdC,mBAAmB,aAEnBC,yBAAyBR,sBAAsB,EAAE,GCfxDc,iBAAiB;AAEvB,SAAgBC,iBAAiBC,cAAsB;CACrD,OAAO,GAAGJ,yBAAyBI,eAAeC,QAAQH,gBAAgB,GAAG;AAC/E;AAEA,SAAgBI,oBAAoBC,YAAoB;CAOtD,OANIR,YAAYQ,UAAU,IAEjB,GAAGN,+BAA+BH,iBAAiBS,UAAU,EAAC,GAAIV,eAAeU,UAAU,MAI7F,GAAGN,+BAA+BJ,eAAeU,UAAU;AACpE;ACfA,SAAOE,iBAAAC,IAAAC,SAAA;CACL,IAAAC,QAAcJ,aAAaE,IAAIC,OAAO;CAAC,OAE/BC,MAAKC,SAAUD,MAAKE;AAA4B;ACgB1D,SAAOuB,wBAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAiC,EAAAN,YAAAC,YAAAC,YAAAE,IAKtCG,mBAAyBN,WAAUO,MACnCC,cAAoBtB,eAAe,GAACuB;CAAA,AAAAL,EAAA,OAAAE,mBAGAG,KAAAL,EAAA,MAAlCK,KAAArB,iBAAiBkB,gBAAgB,GAACF,EAAA,KAAAE,kBAAAF,EAAA,KAAAK;CADpC,IAAAC,iBAAuBb,iBACrBY,IACAnB,sBACF,GAEsBqB,KAAAZ,cAAA,IAAgBa;CAAA,AAAAR,EAAA,OAAAO,KAACC,KAAAR,EAAA,MAArCQ,KAAAvB,oBAAoBsB,EAAgB,GAACP,EAAA,KAAAO,IAAAP,EAAA,KAAAQ;CADvC,IAAAC,oBAA0BhB,iBACxBe,IACApB,yBACF,GAACsB;CAAA,AAAAV,EAAA,OAAAW,OAAAC,IAAA,2BAAA,KAEwBF,KAAA,EAAAG,YAAa,aAAY,GAACb,EAAA,KAAAU,MAAAA,KAAAV,EAAA;CAAnD,IAAAc,SAAejC,UAAU6B,EAA0B,GAACK,IAAAC;CAEpDvC,AAFoDuB,EAAA,OAAAM,kBAAAN,EAAA,OAAAc,UAAAd,EAAA,OAAAE,oBAAAF,EAAA,OAAAH,WAE1CkB,WAAA;EACR,AAAI,CAACT,kBAADT,WACFiB,OAAMG,kBACe;GAAAC,KACZlC,iBAAiBkB,gBAAgB;GAACiB,OAChCjC;EACT,CAAC,CAAC,CAAAkC,MACKC,QAEN;CACJ,GACAL,KAAA;EAACF;EAAQR;EAAgBJ;EAAkBL;CAAO,GAACG,EAAA,KAAAM,gBAAAN,EAAA,KAAAc,QAAAd,EAAA,KAAAE,kBAAAF,EAAA,KAAAH,SAAAG,EAAA,KAAAe,IAAAf,EAAA,MAAAgB,OAAAD,KAAAf,EAAA,IAAAgB,KAAAhB,EAAA,MAXtDvB,UAAUsC,IAWPC,EAAmD;CAAC,IAAAM;CAAAC,KAAA;EAGrD,IAAI,CAACjB,gBAAc;GACjBgB,KAAOE,KAAAA;GAAP,MAAAD;EAAgB;EACjB,IAAAE;EAAA,IAAAzB,EAAA,QAAAM,kBAAAN,EAAA,QAAAS,mBAAAiB,SAAA1B,EAAA,QAAAI,aAAAuB,IAAA;GACD,IAAAD,QAAcjB,mBAAiBiB,SAAjB,CAAA,GAEdE,UAAgBtB,gBAAcsB,UAAd,CAAA,EAAA,CAA4BC,KAAMC,iBACzC;IAAA,GACFA;IAAWJ,OACPA,MAAKK,QAAQC,SAAUA,KAAIC,SAAUH,YAAWG,IAAK;IAACC,cAC/CJ,YAAWI,cACfH,QAACI,MAAO,CAACA,EAACC,UAAWD,EAACC,WAAYhC,aAAWuB,EAClD,CAAC,CAAAE,KAACQ,gBAAiBC,oBAAoBD,aAAaX,KAAK,CAAC;GACjE,EACD;GAcC1B,AAbKyB,KAAA7C,MAA4B;IAAA,GAC9B0B;IAAcoB,OAEVA,OAAKG,KAAMU,WAAA;KAChB,IAAAC,gBAAoBZ,OAAMa,MAClBC,MAAOA,EAACT,SAAUD,OAAIC,IACf,CAAC,EAAAC,cAAMO,MAACE,MAAOA,EAACC,SAAUZ,OAAIa,cAAe;KAAC,OACtD;MAAA,GACFb;MAAIK,aACPA;KACF;IAAC,CACF;IAACT;GAEJ,CAAC,GAAC5B,EAAA,MAAAM,gBAAAN,EAAA,MAAAS,mBAAAiB,OAAA1B,EAAA,MAAAI,aAAAuB,IAAA3B,EAAA,MAAAyB;EAAA,OAAAA,KAAAzB,EAAA;EAbFsB,KAAOG;CAaL;CAAA,OA5BGH;AA6B6C;AA7D/C,SAAAD,WAAA,CAAA;AAgEP,SAASiB,oBACPD,aACAS,KACmB;CACnB,OAAO;EACL,GAAGT;EACHX,OAAOoB,IACJf,QAAQC,SAASA,KAAKa,mBAAmBR,YAAYO,IAAI,CAAC,CAC1Db,QACEC,SACCA,KAAKe,4BACL,IAAIC,KAAK,EAAA,CAAEC,QAAQ,IAAI,IAAID,KAAKhB,KAAKe,OAAO,CAAC,CAACE,QAAQ,IAAIlE,sBAC9D;CACJ;AACF;AC3FA,MAAM6E,WAA8B,CAAA;AAEpC,SAAOC,sBAAAC,YAAAC,oBAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAF,cAAAE,EAAA,OAAAD,sBAC0CG,KAAA;EAAAJ;EAAAK,YAAyBJ;CAAkB,GAACC,EAAA,KAAAF,YAAAE,EAAA,KAAAD,oBAAAC,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAA3F,IAAAI,iBAAuBT,wBAAwBO,EAA4C,GAE3FG,kBAAwB,CAAC,CAACD,gBAC1BE,cAAoBd,eAAe,GACnCe,QAAcrB,SAAS,GACvBsB,QAAcJ,gBAAcI,OAC5BC,gBAAsBnB,OAAkD,SAAS,GAACoB;CAAA,AAAAV,EAAA,OAAAK,mBAAAL,EAAA,OAAAM,aAAAK,MAAAX,EAAA,OAAAQ,SAAAR,EAAA,OAAAO,SAExEG,WAAA;EACHL,qBAIL;OAAII,cAAaG,YAAa,WAAS;IACrC,IAAAC,gBAAsBC,OAAMC,aACzBN,cAAaG,WAAbhB,SAAAA,CAAiCoB,IAAMC,QAAwB,CAClE;IAUAC,CATmBV,OAAKW,QACbC,SAAUA,KAAIC,oBAAqBf,aAAWK,EACjD,CAAC,CAAAQ,QAACG,WAAA;KACN,IAAAC,WAAiBV,cAAcO,OAAII;KAAM,OACjC,CAACD,YAAYH,OAAIK,SAAY,CAACF,UAAQE,SAAWL,OAAIK;IAAO,CAGhE,CAAC,CAAAN,OAACO,QAAiF,EAAA,EAEjFC,SAAUC,WAAA;KAClB,IAAAC,QAAcT,OAAIS,SAAUpC,oBAAoB2B,OAAIU,WAAY;KAChE,AAAIV,OAAIW,WAAY,UAClBxB,MAAKyB,KAAM;MAAAH,OACF,WAAWA;MAAOI,QACjB;MAAOC,aACF,uBAAuBd,OAAIe,WAAJ;MAAoBC,UAC9C;MAAIC,UACJ;KACZ,CAAC,IACQjB,OAAIW,WAAY,YACzBxB,MAAKyB,KAAM;MAAAH,OACF,YAAYA;MAAOI,QAClB;MAAOC,aACF;MAAwBE,UAC3B;KACZ,CAAC,IACQhB,OAAIW,WAAY,YACzBxB,MAAKyB,KAAM;MAAAH,OACF,YAAYA;MAAOI,QAClB;MAASC,aACJ;MAAwBE,UAC3B;KACZ,CAAC,IACQhB,OAAIW,WAAY,aACzBxB,MAAKyB,KAAM;MAAAH,OACF,aAAaA;MAAOI,QACnB;MAASC,aACJ;MAAuBE,UAC1B;KACZ,CAAC;IACF,CACF;GAAC;GAEJ3B,cAAaG,UAAWJ;EAFpB;CAEiB,GACtBR,EAAA,KAAAK,iBAAAL,EAAA,KAAAM,aAAAK,IAAAX,EAAA,KAAAQ,OAAAR,EAAA,KAAAO,OAAAP,EAAA,KAAAU,MAAAA,KAAAV,EAAA;CAAA,IAAAsC;CArDDjD,AAqDCW,EAAA,OAAAK,mBAAAL,EAAA,OAAAM,eAAAN,EAAA,QAAAQ,SAAAR,EAAA,QAAAO,SAAE+B,KAAA;EAAC9B;EAAOC;EAAeF;EAAOD;EAAaD;CAAe,GAACL,EAAA,KAAAK,iBAAAL,EAAA,KAAAM,aAAAN,EAAA,MAAAQ,OAAAR,EAAA,MAAAO,OAAAP,EAAA,MAAAsC,MAAAA,KAAAtC,EAAA,KArD9DX,UAAUqB,IAqDP4B,EAA2D;AAAC;AA9D1D,SAAAZ,SAAAa,QAAA;CAAA,OAyBmBnB,OAAIK,SAAUrC,QAAQD,WAAW,IAAIqD,KAAKpB,OAAIK,KAAM,GAAG,EAAE,mBAAG,IAAIe,KAAK,CAAC;AAAC;AAzB1F,SAAAvB,SAAAwB,KAAA;CAAA,OAgBkD,CAACA,IAAGjB,MAAOiB,GAAG;AAAC;ACdxE,SAAOc,2BAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA;CACL,IAAI,CAACP,OAAOK,MAAKG,YAAa,UAAU,KAAKH,MAAKI,OAAQ,UAAUJ,MAAKI,OAAAA,UAAoB;EAAA,IAAAC;EAC1D,OAD0DJ,EAAA,OAAAD,QAC1DK,KAAAJ,EAAA,MAA1BI,KAAA,oBAAC,aAAD,EAAY,GAAKL,MAAK,CAAA,GAAIC,EAAA,KAAAD,OAAAC,EAAA,KAAAI,KAA1BA;CAA0B;CAInC,IAAAC,aAAoBN,MAAKO,OAAmBC;CAC5C,IAAI,CAACF,YAAU;EAAA,IAAAD;EACoB,OADpBJ,EAAA,OAAAD,QACoBK,KAAAJ,EAAA,MAA1BI,KAAAL,MAAKS,cAAeT,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAI,KAA1BA;CAA0B;CAIF,IAAAA,KAAAL,OAAyBU;CAA6B,OAA7BT,EAAA,OAAAK,cAAAL,EAAA,OAAAI,MAAnDK,KAAA,oBAAC,qBAAD;EAAoB,GAAML;EAAwCC;CAAU,CAAA,GAAIL,EAAA,KAAAK,YAAAL,EAAA,KAAAI,IAAAJ,EAAA,KAAAS,MAAAA,KAAAT,EAAA,IAAhFS;AAAgF;AAGzF,SAAAC,oBAAAN,IAAA;CAAA,IAAAJ,IAAAC,EAAA,EAAA,GAAAI,YAAAN;CACEF,AADFG,EAAA,OAAAI,MAA4FC,aAAAL,EAAA,IAAAD,QAAAC,EAAA,OAA/D,CAAAK,eAAAN,SAAAK,IAA+DJ,EAAA,KAAAI,IAAAJ,EAAA,KAAAK,YAAAL,EAAA,KAAAD,QAC1FF,sBAAsBQ,YAAYN,MAAKG,UAAW;CAAC,IAAAO;CAAAE,KAAA;EAGjD,IAAIZ,MAAKG,WAAWU,SAAAA,wCAAgC;GAClDH,KAAOV,MAAKG;GAAZ,MAAAS;EAAuB;EACxB,IAAAE;EAAA,AAAAb,EAAA,OAAAD,MAAAG,WAAAY,OAQED,KAAAb,EAAA,MAJKa,KAAA;GAAA,GACDd,MAAKG,WAAWY;GAAKF,MAElB;EACR,GAACZ,EAAA,KAAAD,MAAAG,WAAAY,MAAAd,EAAA,KAAAa;EAAA,IAAAE;EANHN,AAMGT,EAAA,OAAAD,MAAAG,cAAAF,EAAA,OAAAa,MANIE,KAAA;GAAA,GACFhB,MAAKG;GAAWY,MACbD;EAKR,GAACb,EAAA,KAAAD,MAAAG,YAAAF,EAAA,KAAAa,IAAAb,EAAA,KAAAe,MAAAA,KAAAf,EAAA,IAPDS,KAAOM;CAOc;CAZvB,IAAAb,aAAmBO,IAgBmBI,KAAAd,MAAKiB,SAAQD;CAAA,AAAAf,EAAA,OAAAD,SAAAC,EAAA,OAAAE,cAC9Ca,KAAAhB,MAAKS,cAAe;EAAA,GAAIT;EAAKG;CAAY,CAAC,GAACF,EAAA,KAAAD,OAAAC,EAAA,KAAAE,YAAAF,EAAA,MAAAe,MAAAA,KAAAf,EAAA;CAAA,IAAAiB;CAClB,OADkBjB,EAAA,QAAAD,MAAAiB,WAAAhB,EAAA,QAAAe,MAD9CE,KAAA,oBAAC,2BAAD;EAAoC,SAAAJ;YACjCE;CADuB,CAAA,GAEEf,EAAA,MAAAD,MAAAiB,SAAAhB,EAAA,MAAAe,IAAAf,EAAA,MAAAiB,MAAAA,KAAAjB,EAAA,KAF5BiB;AAE4B;AAIhC,SAAAC,YAAAnB,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACE,EAAAkB,WAAiBlC,SAAS,GAC1B,EAAAmC,YAAkB9B,gBAAgB,GAIPc,KAAA,GAAGgB,QAAO,GAHrB3B,WAAWM,MAAKuB,IAGSD,KAASZ;CAAA,AAAAT,EAAA,OAAAuB,OAAAC,IAAA,2BAAA,KAAyBf,KAAA,EAAAgB,UAAW,EAAC,GAACzB,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CAAA,IAAAa;CAAA,AAAAb,EAAA,OAAAD,QACzDc,KAAAb,EAAA,MAA1Ba,KAAAd,MAAKS,cAAeT,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAa;CAAA,IAAAE;CACT,OADSf,EAAA,OAAAI,MAAAJ,EAAA,OAAAa,MAAAb,EAAA,OAAAmB,UAD7BJ,KAAA,oBAAC,mBAAD;EAAyB,MAAAX;EAAiCe;EAAe,OAAAV;YACtEI;CADe,CAAA,GAEEb,EAAA,KAAAI,IAAAJ,EAAA,KAAAa,IAAAb,EAAA,KAAAmB,QAAAnB,EAAA,KAAAe,MAAAA,KAAAf,EAAA,IAFpBe;AAEoB;ACrBxB,MAAayC,wBAAwB9B,cACnC+B,KAAAA,CACF;AAEA,SAAOC,2BAAA;CACL,IAAAC,UAAgBhC,WAAW6B,qBAAqB;CAChD,IAAI,CAACG,SACH,MAAUC,MAAM,wCAAwC;CACzD,OACMD;AAAO;AC7BhB,MAAaqB,4BAA4BnB,cAA8C,CAAC,CAAQ;AAEhG,SAAOoB,wBAAA;CACL,IAAAC,UAAgBpB,WAAWkB,yBAAyB;CACpD,IAAI,CAACE,SACH,MAAUR,MAAM,mCAAmC;CACpD,OACMQ;AAAO;AAGhB,SAAOC,qBAAA;CAAA,OACEF,sBAAsB,CAAC,CAAAN;AAAgB;ACQhD,SAAS4C,YAAYJ,YAAuC;CAC1D,IAAIK,IAA4BL;CAEhC,OAAOK,IAAG;EACR,IAAIA,EAAEJ,MAAM,OAAOI,EAAEJ;EACrBI,IAAIA,EAAEC;CACR;CAUA,OARIb,OAAOO,YAAY,MAAM,IAAU3B,WACnCoB,OAAOO,YAAY,OAAO,IAAU5B,YACpC4B,WAAWO,aAAa,WAAWf,oBAAoBQ,UAAU,IAAU/B,mBAE3E+B,WAAWO,aAAa,UAAgBjC,YACxC0B,WAAWO,aAAa,WAAiBrC,iBACzC8B,WAAWO,aAAa,WAAiBhC,aAEtCJ;AACT;AAEA,SAAgBqC,sBAAsBC,WAA6D;CAKjG,OAJqDA,UAAUG,QAC5DC,KAAKC,SAAS;EAAC,GAAGD;GAAMC,IAAIjB,MAAMiB;CAAG,IACtC,CAAC,CAEIH;AACT;AAEA,SAAgBI,oBAAoBf,YAAwC;CAC1E,OAAO;EACLH,KAAKF;EACLM,MAAMD,WAAWC,QAAQ9B;EACzB4B,OAAO;EACPD,MAAM,CAAA;EACME;CACd;AACF;AAEA,SAAgBgB,aACdhB,YACAiB,QACAC,QAAQ,GACI;CAIZ,OAHIA,SAASf,IACJ,CAAA,IAGPH,WAAWmB,OACRC,QAAQC,MAAM,CAACA,EAAEC,KAAKC,WAAW,GAAG,CAAC,CAAA,CAErCC,SAASC,UAAU;EAClB,IAAM3B,OAAamB,SAAS,CAAC,GAAGA,OAAOnB,MAAM2B,MAAMH,IAAI,IAAI,CAACG,MAAMH,IAAI,GAChEvB,QAAQ0B,MAAMnB,KAAKP,SAAS0B,MAAMH,MAClCI,WAAqB;GACzB7B,KAAK8B,aAAa3C,aAAac,IAAI,CAAC;GACpCA;GACAC,OAAOkB,SAAS,CAACA,OAAOlB,OAAOA,KAAK,CAAC,CAAC6B,KAAK,KAAK,IAAI7B;GACpDC,YAAYyB,MAAMnB;GAClBL,MAAMG,YAAYqB,MAAMnB,IAAI;EAC9B,GACMa,SACJM,MAAMnB,KAAKC,aAAa,WAAWS,aAAaS,MAAMnB,MAAMoB,UAAUR,QAAQ,CAAC,IAAI,CAAA,GAE/EW,kBACJJ,MAAMnB,KAAKC,aAAa,UAAUuB,mBAAmBL,MAAMnB,MAAMoB,UAAUR,QAAQ,CAAC,IAAI,CAAA;EAI1F,OAHK3B,kBAAkBkC,MAAMnB,IAAI,IAG1B;GAACoB;GAAU,GAAGP;GAAQ,GAAGU;EAAe,IAFtC,CAAC,GAAGV,QAAQ,GAAGU,eAAe;CAGzC,CAAC;AAEP;AAEA,SAASC,mBAAmB9B,YAA6BiB,QAAmBC,QAAQ,GAAG;CAKrF,OAJIA,SAASf,IACJ,CAAA,IAIPH,WAAW+B,GACRX,QAAQY,aAAa,CAACvC,OAAOuC,UAAU,OAAO,CAAC,CAAA,CAE/CR,SAASQ,aAAa;EACrB,IAAMC,UAAU,EAACC,MAAMF,SAASV,KAAI,GAC9BvB,QAAQiC,SAASjC,SAASiC,SAASV,MACnCxB,OAAamB,SAAS,CAAC,GAAGA,OAAOnB,MAAMmC,OAAO,IAAI,CAACA,OAAO,GAC1DP,WAAqB;GACzB7B,KAAK8B,aAAa3C,aAAac,IAAI,CAAC;GACpCA;GACAC,OAAOkB,SAAS,CAACA,OAAOlB,OAAOA,KAAK,CAAC,CAAC6B,KAAK,KAAK,IAAI7B;GACpDC,YAAYgC;GACZ/B,MAAMG,YAAY4B,QAAQ;GAC1B9B,WAAW;EACb,GACMiB,SACJa,SAASzB,aAAa,WAAWS,aAAagB,UAAUN,UAAUR,QAAQ,CAAC,IAAI,CAAA;EAKjF,OAHK3B,kBAAkByC,QAAQ,IAGxB,CAACN,UAAU,GAAGP,MAAM,IAFlBA;CAGX,CAAC;AAEP;AAEA,SAAgBgB,YAAYC,KAAyBC,YAAoB;CACvE,IAAI,CAACA,YACH;CAGF,IAAMvC,OAAOX,aAAakD,UAAU,GAC9BE,cAAoB,CAAA,GACtBC,QAAQ,IACNC,gBAAgB3C,KAAK4C,KAAKT,YAAY;EAG1C,IAFAM,YAAYI,KAAKV,OAAO,GAEpBrD,aAAaqD,OAAO,GAAG;GACzB,IAAMW,QAAQpE,gBAAgBQ,aAAauD,WAAW,GAAGH,GAAG,CAAC,CAAC,IACxDS,QAAQD,OAAOC;GACrB,IAAID,SAASC,SAAS,OAAOA,SAAU,YAAY,WAAWA,OAE5D,OAAO,EAACX,MAAMW,MAAMC,MAAe;GAErCN,QAAQ;EACV;EACA,OAAOP;CACT,CAAC;CAED,OAAOO,QAAQb,aAAa3C,aAAayD,aAAa,CAAC,IAAIH,KAAAA;AAC7D;;;;;AAMA,SAASX,aAAaoB,SAAiB;CACrC,OAAOA,QAAQC,QAAQ,SAAS,GAAG,CAAC,CAACA,QAAQ,UAAU,GAAG,CAAC,CAACA,QAAQ,MAAM,EAAE;AAC9E;AAEA,SAAOC,YAAAb,KAAAC,YAAA;CAAA,IAAAa,IAAAC,EAAA,CAAA,GAAAC;CAC4C,OAD5CF,EAAA,OAAAd,OAAAc,EAAA,OAAAb,cACgBe,KAAAjB,YAAYC,KAAKC,UAAU,GAACa,EAAA,KAAAd,KAAAc,EAAA,KAAAb,YAAAa,EAAA,KAAAE,MAAAA,KAAAF,EAAA,IAA5BE;AAA4B;AAGnD,SAAOC,iBAAAC,oBAAAxD,MAAA;CAAA,IAAAoD,IAAAC,EAAA,CAAA,GAIL,EAAAnC,iBAAuB1B,sBAAsB,GAAC8D;CAAA,AAAAF,EAAA,OAAAI,sBAAAJ,EAAA,OAAAlC,gBAI1CoC,KAAAE,sBAAsBzE,mBAAmByE,kBAAkB,IAA3D,CACKvC,oBAAoBuC,kBAAkB,GAAC,GAAKtC,aAAasC,mBAAkBhC,IAAK,CAAC,IADtF,CAAA,GAEM4B,EAAA,KAAAI,oBAAAJ,EAAA,KAAAlC,cAAAkC,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAJV,IAAAK,mBAEIH,IAIHI;CAGwE,OAHxEN,EAAA,OAAApD,QAAAoD,EAAA,OAAAK,oBAGQC,KAAA1D,OAAOyD,kBAAgBE,MAAOpC,MAAOA,EAACxB,QAASC,IAAgB,IAA/DwC,KAAAA,GAAgEY,EAAA,KAAApD,MAAAoD,EAAA,KAAAK,kBAAAL,EAAA,KAAAM,MAAAA,KAAAN,EAAA,IAAvEM;AAAuE;AAI3E,SAAgBE,cAAcjC,OAAkB;CAC9C,IAAMzB,aAAayB,OAAOzB;CAC1B,OAAOyB,OAAO1B,SAASC,YAAYD,SAASC,YAAYsB,QAAQ;AAClE;AAOA,SAAO0C,kBAAA;CAAA,IAAAd,IAAAC,EAAA,CAAA,GACLc,aAAmB5E,cAAc,GAAC+D;CAAA,AAAAF,EAAA,OAAAe,WAAAJ,SAEmCT,KAAAF,EAAA,MAAvBE,KAAAa,WAAUJ,UAAV,CAAsB,GAACX,EAAA,KAAAe,WAAAJ,QAAAX,EAAA,KAAAE;CAAA,IAAAI;CAAC,OAADN,EAAA,OAAAe,cAAAf,EAAA,OAAAE,MAA/CI,KAAA;EAAA,GAAIS;EAAUJ,QAAUT;CAAuB,GAACF,EAAA,KAAAe,YAAAf,EAAA,KAAAE,IAAAF,EAAA,KAAAM,MAAAA,KAAAN,EAAA,IAAhDM;AAAgD;AC5KxE,MAAM8C,WAAW,6BACJC,kCAAkC;AAE/C,SAAgBC,aAAaC,QAAoC;CAC/D,OAAOA,QAAQZ,WAAWY,OAAOX,eAAeW,OAAOV;AACzD;AAEA,SAAOW,aAAAC,iBAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KACoBF,KAAA,EAAAG,YAAaV,gCAA+B,GAACK,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAAtE,IAAAM,SAAezC,UAAUqC,EAA6C,GAACK;CAEZ,OAFYP,EAAA,OAAAM,UAAAN,EAAA,OAAAD,mBAE9DQ,KAAAR,kBAAkBA,gBAAgBO,MAAe,IAAjDA,QAAkDN,EAAA,KAAAM,QAAAN,EAAA,KAAAD,iBAAAC,EAAA,KAAAO,MAAAA,KAAAP,EAAA,IAAlDO;AAAkD;AAK7D,SAAOC,aAAAC,WAAA;CAAA,IAAAT,IAAAC,EAAA,CAAA,GACL,CAAAS,SAAAC,cAA8BjD,SAAS,EAAK,GAC5CkD,OAAa9C,eAAe,GAC5B+C,QAAc7C,mBAAmB,GACjC8C,QAAcvD,SAAS,GAAC2C;CAAA,AAAAF,EAAA,OAAAS,aAAAT,EAAA,OAAAc,SAAAd,EAAA,OAAAa,SAAAb,EAAA,OAAAY,MAAAG,MAGtBb,MAAAK,OAAA;EAAC,IAAA,EAAA/B,YAAAc,cAAAC,YAAAF,eAAAI,kBAAAV,uBAAAwB;EA4BE,OApBDI,WAAW,EAAI,GAsBRK,iBApBP;GAAA,OACSP,UAASQ,QAAS;IAAAC,QACf;IAAMC,KACT,2BAA2BV,UAASW,OAAQ,CAAC,CAAAC,QAAQ,aACxDZ,UAASW,OAAQ,CAAC,CAAAE;IAClBC,MACI;KAAA/C;KAAAqC;KAAAvB;KAAAkC,gBAIY,MAAMjC,WAAW;KAACE;KAAAV;KAAAM,eAIhCA,cAAaoC,WAAY,IAAzBtD,kBAA+CP,aAAayB,aAAa;KAACR,QACpE+B,MAAIG;IACd;GACF,CAAC;EAAC,EAGO,CAAC,CAAAW,OACHC,MAAA;GAOL,MANAb,MAAKc,KAAM;IAAA/B,QACD;IAAOgC,OACR;IAAkBC,aACZH,EAACI;GAChB,CAAC,GACDpB,WAAW,EAAK,GACVgB;EAAC,CACR,CAAC,CAAAK,cACO;GAGPC,iBAAW;IACTtB,WAAW,EAAK;GAAC,GAChB,GAAI;EAAC,CACT;CAAC,GACLX,EAAA,KAAAS,WAAAT,EAAA,KAAAc,OAAAd,EAAA,KAAAa,OAAAb,EAAA,KAAAY,MAAAG,IAAAf,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAhDH,IAAAkC,YAAkBhC,IAkDjBK;CAME,OANFP,EAAA,OAAAU,WAAAV,EAAA,OAAAkC,aAGQ3B,KAAA;EAAA2B;EAAAxB;CAGP,GAACV,EAAA,KAAAU,SAAAV,EAAA,KAAAkC,WAAAlC,EAAA,KAAAO,MAAAA,KAAAP,EAAA,IAHMO;AAGN;AAKL,SAAO4B,mBAAA1B,WAAA;CAAA,IAAAT,IAAAC,EAAA,CAAA,GACL,CAAAS,SAAAC,cAA8BjD,SAAS,EAAK,GAC5CkD,OAAa9C,eAAe,GAC5B+C,QAAc7C,mBAAmB,GACjC8C,QAAcvD,SAAS,GAAC2C;CAAA,AAAAF,EAAA,OAAAS,aAAAT,EAAA,OAAAc,SAAAd,EAAA,OAAAa,SAAAb,EAAA,OAAAY,MAAAG,MAGtBb,MAAAK,OAAA;EAAC,IAAA,EAAA7B,MAAAF,eAAA+B;EACiB,OAAhBI,WAAW,EAAI,GAERF,UAASQ,QACL;GAAAC,QACC;GAAMC,KACT,kCAAkCV,UAASW,OAAQ,CAAC,CAAAC,QAAQ,aAC/DZ,UAASW,OAAQ,CAAC,CAAAE;GAClBC,MACI;IAAA7C;IAAAF;IAAAqC;IAAAhC,QAII+B,MAAIG;GACd;EACF,CAAC,CAAC,CAAAW,OACKC,MAAA;GAOL,MANAb,MAAKc,KAAM;IAAA/B,QACD;IAAOgC,OACR;IAAmCC,aAC7BH,EAACI;GAChB,CAAC,GACDpB,WAAW,EAAK,GACVgB;EAAC,CACR,CAAC,CAAAK,cACO;GAGPC,iBAAW;IACTtB,WAAW,EAAK;GAAC,GAChB,GAAI;EAAC,CACT;CAAC,GACLX,EAAA,KAAAS,WAAAT,EAAA,KAAAc,OAAAd,EAAA,KAAAa,OAAAb,EAAA,KAAAY,MAAAG,IAAAf,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAjCH,IAAAoC,kBAAwBlC,IAmCvBK;CAME,OANFP,EAAA,OAAAoC,mBAAApC,EAAA,OAAAU,WAGQH,KAAA;EAAA6B;EAAA1B;CAGP,GAACV,EAAA,KAAAoC,iBAAApC,EAAA,KAAAU,SAAAV,EAAA,KAAAO,MAAAA,KAAAP,EAAA,IAHMO;AAGN;AAKL,SAAO8B,iBAAA5B,WAAA;CAAA,IAAAT,IAAAC,EAAA,CAAA,GACL,CAAAS,SAAAC,cAA8BjD,SAAS,EAAK,GAC5CkD,OAAa9C,eAAe,GAC5B+C,QAAc7C,mBAAmB,GACjC8C,QAAcvD,SAAS,GAAC2C;CAAA,AAAAF,EAAA,OAAAS,aAAAT,EAAA,OAAAc,SAAAd,EAAA,OAAAa,SAAAb,EAAA,OAAAY,MAAAG,MAGtBb,MAAAK,OAAA;EAAC,IAAA,EAAA7B,MAAAF,eAAA+B;EACiB,OAAhBI,WAAW,EAAI,GAERF,UAASQ,QACL;GAAAC,QACC;GAAMC,KACT,gCAAgCV,UAASW,OAAQ,CAAC,CAAAC,QAAQ,aAC7DZ,UAASW,OAAQ,CAAC,CAAAE;GAClBC,MACI;IAAA7C;IAAAF;IAAAqC;IAAAhC,QAII+B,MAAIG;GACd;EACF,CAAC,CAAC,CAAAW,OACKC,MAAA;GAOL,MANAb,MAAKc,KAAM;IAAA/B,QACD;IAAOgC,OACR;IAAmCC,aAC7BH,EAACI;GAChB,CAAC,GACDpB,WAAW,EAAK,GACVgB;EAAC,CACR,CAAC,CAAAK,cACO;GAGPC,iBAAW;IACTtB,WAAW,EAAK;GAAC,GAChB,GAAI;EAAC,CACT;CAAC,GACLX,EAAA,KAAAS,WAAAT,EAAA,KAAAc,OAAAd,EAAA,KAAAa,OAAAb,EAAA,KAAAY,MAAAG,IAAAf,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAjCH,IAAAsC,gBAAsBpC,IAmCrBK;CAME,OANFP,EAAA,OAAAsC,iBAAAtC,EAAA,OAAAU,WAGQH,KAAA;EAAA+B;EAAA5B;CAGP,GAACV,EAAA,KAAAsC,eAAAtC,EAAA,KAAAU,SAAAV,EAAA,KAAAO,MAAAA,KAAAP,EAAA,IAHMO;AAGN;AAKL,SAAgBgC,qBAAqB9B,WAAyB;CAC5D,IAAM,CAACC,SAASC,cAAcjD,SAAS,EAAI;CAkB3C,OAAO;EACLgD;EACA8B,mBAlBwBhF,YAAY,YAAY;GAChDmD,WAAW,EAAI;GAEf,IAAMW,YAAYb,UAAUW,OAAO,CAAC,CAACE;GACrC,IAAI;IAMF,OAAOzB,MALcY,UAAUQ,QAAwB;KACrDC,QAAQ;KACRC,KAAK,GAAGzB,SAAQ,GAAIe,UAAUW,OAAO,CAAC,CAACC,QAAO,oBAAqBC;IACrE,CAAC;GAGH,UAAU;IACRX,WAAW,EAAK;GAClB;EACF,GAAG,CAACA,YAAYF,SAAS,CAIvB+B;CACF;AACF;AAEA,SAAOC,gBAAAhC,WAAA;CAAA,IAAAT,IAAAC,EAAA,CAAA,GACL,CAAAS,SAAAC,cAA8BjD,SAAS,EAAK,GAACwC;CAAA,AAAAF,EAAA,OAAAS,YAa5CP,KAAAF,EAAA,MAZgCE,YAC/BS,WAAW,EAAI,GACRF,UAASQ,QACL;EAAAC,QACC;EAAKC,KACR,GAAGzB,SAAQ,GAAIe,UAASW,OAAQ,CAAC,CAAAC,QAAQ,kBAC5CZ,UAASW,OAAQ,CAAC,CAAAE;CAEtB,CAAC,CAAC,CAAAU,cACO;EACPrB,WAAW,EAAK;CAAC,CAClB,IACJX,EAAA,KAAAS,WAAAT,EAAA,KAAAE;CAZD,IAAAwC,eAAqBxC,IAYMK;CAK1B,OAL0BP,EAAA,OAAA0C,gBAAA1C,EAAA,OAAAU,WAEpBH,KAAA;EAAAG;EAAAgC;CAGP,GAAC1C,EAAA,KAAA0C,cAAA1C,EAAA,KAAAU,SAAAV,EAAA,KAAAO,MAAAA,KAAAP,EAAA,IAHMO;AAGN;AAGH,SAAOoC,qBAAAlC,WAAA;CAAA,IAAAT,IAAAC,EAAA,CAAA,GACLa,QAAcvD,SAAS,GACvB,CAAAmD,SAAAC,cAA8BjD,SAAS,EAAK,GAC5CkD,OAAa9C,eAAe,GAC5B+C,QAAc7C,mBAAmB,GAEjC,EAAAoD,QAAAlB,OAEInC,sBAAsB,GADhB,EAAA6E,QAAAC,iBAAA3C,IAAsBK;CAAA,AAAAP,EAAA,OAAAS,aAAAT,EAAA,OAAA6C,gBAAA7C,EAAA,OAAAc,SAAAd,EAAA,OAAAa,SAAAb,EAAA,OAAAY,QAI9BL,MAAAU,YAAA;EACE,IAAI,CAACL,MAAI;GACPE,MAAKc,KAAM;IAAA/B,QACD;IAAOgC,OACR;GACT,CAAC;GAAC;EAAA;EAGJlB,WAAW,EAAI;EAEf,IAAA,EAAAmC,UAAAC,WAA2BC,KAAIC,eAAgB,CAAC,CAAAC,gBAAiB,GACjEC,wBAA8B;GAAAL;GAAAC;EAAiB,GAC/CK,iBACEP,cAAYO,iBAAmB;GAAAxC;GAAAyC,iBAAwBF;EAAqB,CACxD,KADpBA;EACqB,OAEhB1C,UAASQ,QACL;GAAAC,QACC;GAAMC,KACT,GAAGzB,SAAQ,GAAIe,UAASW,OAAQ,CAAC,CAAAC,QAAQ,aAC5CZ,UAASW,OAAQ,CAAC,CAAAE;GAClBC,MACI;IAAA,GACDN;IAAOJ;IAAAhC,QAEF+B,MAAIG;IAAIqC;IAAAE,cAEFT,cAAYS;GAC5B;EACF,CAAC,CAAC,CAAA5B,OACKC,MAAA;GAML,MALAb,MAAKc,KAAM;IAAA/B,QACD;IAAOgC,OACR;IAAoBC,aACdH,EAACI;GAChB,CAAC,GACKJ;EAAC,CACR,CAAC,CAAAK,cACO;GACPrB,WAAW,EAAK;EAAC,CAClB;CAAC,GACLX,EAAA,KAAAS,WAAAT,EAAA,KAAA6C,cAAA7C,EAAA,KAAAc,OAAAd,EAAA,KAAAa,OAAAb,EAAA,KAAAY,MAAAZ,EAAA,KAAAO,MAAAA,KAAAP,EAAA;CA1CH,IAAAuD,iBAAuBhD,IA4CtBiD;CAME,OANFxD,EAAA,OAAAU,WAAAV,EAAA,OAAAuD,kBAGQC,KAAA;EAAAD;EAAA7C;CAGP,GAACV,EAAA,KAAAU,SAAAV,EAAA,KAAAuD,gBAAAvD,EAAA,KAAAwD,MAAAA,KAAAxD,EAAA,IAHMwD;AAGN;ACpTL,MAAMiC,WAAwB,CAAC,GAQzBM,wBAAwB9B,cAA0C;CACtE0B,sBAAsB,CAAC;CACvBE,cAAc,YAAYG,KAAAA;CAC1BF,oBAAoB;AACtB,CAAC;AAED,SAAOG,oBAAA;CAAA,OACE1B,WAAWwB,qBAAqB;AAAC;AAG1C,SAASG,iBAAiBC,OAAiD;CACzE,OAAOA,MAAMC,UAAUlB;AACzB;AAEA,SAAOmB,uBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAC,WAAiBpB,sBAAsB,GAEvC,EAAAM,gBAAAiB,uBAAAC,YAAyDzB,qBADvCD,aAAasB,QAAME,iBACyCD,CAAS,GAEvFI,KAAWrC,MAAM,GAEjB,CAAAsC,QAAAC,aAA4BpC,SAASa,QAAQ,GAC7C,CAAAwB,YAAAC,iBAAoCtC,SAIlC,GAEF,CAAAuC,kBAAAC,uBACExC,SAIE,GAACyC;CAAA,AAAAd,EAAA,OAAAe,OAAAC,IAAA,2BAAA,KAE0CF,KAAA,OAAAG,OAAA;EAAO,IAAA,EAAAC,OAAAV,QAAAW,aAAAF,IACpDG,kBAA0CZ,SAAMa,IAAKC,QAKnD;EAEGF,oBAAeG,QAGgC,OAApDZ,cAAc;GAAAa,aAAcN;GAAKE;EAAiB,CAAC,GAC5C,IAAIK,SAAyCC,YAAA;GAClDb,0BAA0Ba,OAAO;EAAC,CACnC;CAAC,GACH1B,EAAA,KAAAc,MAAAA,KAAAd,EAAA;CAfD,IAAAV,eAAmCwB,IAe7BG;CAAA,AAAAjB,EAAA,OAAAM,WAAAN,EAAA,OAAAK,yBAGJY,MAAA5B,QAAA;EACE,IAAIiB,SAAO;EAGX,IAAA,EAAAqB,aAAA,GAAAC,YAAkCvC,KAClCwC,iBAAuBF,YAAWG,MAClCC,oBAAwBJ,aAAWK,QACxBC,QAACC,QAGJ,CAAC,CAAAC,OAACxC,gBAAgB;EAE1B,IAAI,CAACyB,mBAAeG,QAAQ;GACrBlB,sBAAsB;IAAA,GACtBuB;IAAOC;IAAAO,WAEC3C,KAAAA;GACb,CAAC;GAAC;EAAA;EAIJkB,cAAc;GAAA,GACTtB;GAAG+B,iBACNA;EACF,CAAC;CAAC,GACHpB,EAAA,KAAAM,SAAAN,EAAA,KAAAK,uBAAAL,EAAA,KAAAiB,MAAAA,KAAAjB,EAAA;CA1BH,IAAAZ,iBAAuB6B,IA4BtBoB;CAAA,AAAArC,EAAA,OAAAY,mBASAyB,KAAArC,EAAA,MAPyBqC,WAAA;EAMxBxB,AALAF,cAAclB,KAAAA,CAAS,GACvBgB,UAAUvB,QAAQ,GACd0B,oBACFA,iBAAiBnB,KAAAA,CAAS,GAE5BoB,oBAAoBpB,KAAAA,CAAS;CAAC,GAC/BO,EAAA,KAAAY,kBAAAZ,EAAA,KAAAqC;CAPD,IAAAC,QAAcD,IAOQE;CAAA,AAAAvC,EAAA,OAAAsC,SAAAtC,EAAA,OAAAQ,UAAAR,EAAA,OAAAY,oBAAAZ,EAAA,OAAAK,yBAAAL,EAAA,QAAAU,cAEW6B,WAAA;EAC/B,IAAI7B,YACF,IAAI,iBAAiBA,YAAU;GAC7B,IAAA,EAAAiB,aAAAa,eAAApB,iBAAAqB,GAAA,GAAAC,cAAsDhC;GACjDL,sBAAsB;IAAA,GACtBuB;IAAOC,gBACMF,cAAWG;IAAKM,WACrBO,OAAMC,QAASpC,MAAM,CAAC,CAAAa,IAAKwB,QAGpC;GACJ,CAAC;EAAC,OAAA;GAEF,IAAAC,aAAmBH,OAAMI,OAAQvC,MAAM,CAAC,CAAAa,KAAK2B,SAAAC,QAAA;IAC3C,IAAAC,iBAAuBxC,WAAUU,gBAAiB+B;IAAG,OAC9C;KAAAC,OACE;MAAA7C,IACD2C,eAAcpB;MAAKZ,OAChBgC,eAAcG,WAAd;MAA4BC,aACtBJ,eAAcI;KAC7B;KAACC,QACOH;IACV;GAAC,CACF;GAEDvC,AADAD,mBAAmBkC,UAAU,GAC7BjC,oBAAoBpB,KAAAA,CAAS;EAAC;EAGlC6C,MAAM;CAAC,GACRtC,EAAA,KAAAsC,OAAAtC,EAAA,KAAAQ,QAAAR,EAAA,KAAAY,kBAAAZ,EAAA,KAAAK,uBAAAL,EAAA,MAAAU,YAAAV,EAAA,MAAAuC,MAAAA,KAAAvC,EAAA;CA7BD,IAAAwD,eAAqBjB,IA+BrBkB,OAAa,CAAC,CAAC/C;CAMZA,YAAUU;CAAiB,IAAAsC;CAAA,AAAA1D,EAAA,QAAAQ,SAD2BkD,KAAA1D,EAAA,OAArD0D,KAAAf,OAAMC,QAASpC,MAAM,CAAC,CAAA2B,OAAQwB,QAAsB,GAAC3D,EAAA,MAAAQ,QAAAR,EAAA,MAAA0D;CAHzD,IAAAE,eAEKlD,YAAUU,iBAAyBG,UAAnC,KACDmC,GAAqDnC,QAExDsC;CAAA,AAAA7D,EAAA,QAAAe,OAAAC,IAAA,2BAAA,KAQU6C,KAAA,EAAAC,OAAQ,OAAM,GAAC9D,EAAA,MAAA6D,MAAAA,KAAA7D,EAAA;CAAA,IAAA+D;CAAA,AAAA/D,EAAA,QAAA4D,eAAA5D,EAAA,QAAAwD,gBALxBO,KAAA,oBAAC,QAAD;EACO,MAAA;EACIP,SAAAA;EACJ,MAAA;EACCtG,MAAAA;EACC,OAAA2G;EACGD,UAAAA;CAAW,CAAA,GACrB5D,EAAA,MAAA4D,aAAA5D,EAAA,MAAAwD,cAAAxD,EAAA,MAAA+D,MAAAA,KAAA/D,EAAA;CARJ,IAAAgE,YACED,IAQDE;CAAA,AAAAjE,EAAA,QAAAM,WAAAN,EAAA,QAAAZ,kBAIQ6E,KAAA;EAAA7E;EAAAE;EAAAC,oBAAmDe;CAAO,GAACN,EAAA,MAAAM,SAAAN,EAAA,MAAAZ,gBAAAY,EAAA,MAAAiE,MAAAA,KAAAjE,EAAA;CAFpE,IAAAkE,eAESD,IAGRE;CAAA,AAAAnE,EAAA,QAAAsC,SAAAtC,EAAA,QAAAO,MAAAP,EAAA,QAAAQ,UAAAR,EAAA,QAAAyD,QAAAzD,EAAA,QAAAgE,aAAAhE,EAAA,QAAA4D,eAAA5D,EAAA,QAAAU,cAIIyD,KAAAV,OACC,oBAAC,QAAD;EACMlD;EACEkD;EACGnB,SAAAA;EACF,OAAA;EAEL,QAAA,iBAAiB5B,aACbA,WAAUc,cACV/C,oBAAoBiC,YAAUiB,WAAa;EAG/C,QAAA,oBAAC,MAAD;GAAc,SAAA;GAAyB,SAAA;GAAS,MAAA;aAC7CiC,cACC,oBAAC,SAAD;IAEI,SAAA,oBAAC,MAAD;KAAe,SAAA;eACb,oBAAC,MAAD,EAAA,UAAM,2DAAD,CAAA;IADF,CAAA;IAIG,WAAA;cAEV,oBAAC,MAAD;KAAY,MAAA;eAAII;IAAX,CAAA;GARC,CAAA,IADTA;EADE,CAAA;YAkBP,oBAAC,OAAD;GAAgB,SAAA;GAAQ,KAAA;aACrBtD,YAAUU,iBAAsBC,KAAC+C,SAAAC,QAChC,oBAAC,WAAD;IAESzE,OAAAA;IACI,WAAAuD,QAAM;IACT3C;IACGC;GAAS,GAJfb,QAAKkC,IAIU,CAEvB;EATG,CAAA;CA7BD,CAAA,IADR,MA0CO9B,EAAA,MAAAsC,OAAAtC,EAAA,MAAAO,IAAAP,EAAA,MAAAQ,QAAAR,EAAA,MAAAyD,MAAAzD,EAAA,MAAAgE,WAAAhE,EAAA,MAAA4D,aAAA5D,EAAA,MAAAU,YAAAV,EAAA,MAAAmE,MAAAA,KAAAnE,EAAA;CAAA,IAAAsE;CAEuB,OAFvBtE,EAAA,QAAAkE,gBAAAlE,EAAA,QAAAD,MAAAwE,YAAAvE,EAAA,QAAAmE,MA3CVG,KAAA,qBAAA,sBAAA,UAAA;EAAuCJ,OAAAA;YAAvC,CACGC,IA2CApE,MAAKwE,QACR;KAAiCvE,EAAA,MAAAkE,cAAAlE,EAAA,MAAAD,MAAAwE,UAAAvE,EAAA,MAAAmE,IAAAnE,EAAA,MAAAsE,MAAAA,KAAAtE,EAAA,KA7CjCsE;AA6CiC;AArL9B,SAAAX,SAAA7C,IAAA;CAiH8B,IAAA,GAAA0D,WAAA1D;CAAS,OAAK,CAAC,CAAC2D;AAAK;AAjHnD,SAAA5B,SAAA/B,IAAA;CAoF0C,IAAA,CAAA4D,KAAAD,SAAA3D;CAAY,OAAM;EAAA6D,UAC7CD;EAAGE,WACFH;CACb;AAAC;AAvFJ,SAAAvC,SAAAtC,OAAA;CAAA,OA+CGA,MAAKC,UAAW,UAAUD,MAAK2E,SAASpC,OAAQxC,gBAA0B,IAA1E,CAAqEC,KAAK;AAAC;AA/C9E,SAAA0B,SAAA8B,OAAAD,GAAA;CAAA,OAsBiE;EAAAtD,OAC3DlB;EAAiBmD,MAClBsB,MAAK7C,MAAL,GAAe4C;EAAGE,SACfD,MAAKlC;EAAMoC,aACPF,MAAKE;CACpB;AAAC;AA8JL,SAAAuB,UAAA9E,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAME,EAAAL,OAAAkF,WAAArE,WAAAD,WAA8CT,OAC9C2E,MAAY9E,MAAKkC,MACjBiD,cAAoB3G,OAA4B,IAAI,GAAC0C;CAAA,AAAAd,EAAA,OAAA0E,OAAA1E,EAAA,OAAAS,aAInDK,MAAAkE,MAAA;EACEvE,WAAUwE,aAAc;GAAA,GACnBA;IACFP,OAAOM,EAACE,iBAAkBF,EAACG,OAAAA,CAAOV;EACrC,EAAE;CAAC,GACJzE,EAAA,KAAA0E,KAAA1E,EAAA,KAAAS,WAAAT,EAAA,KAAAc,MAAAA,KAAAd,EAAA;CAPH,IAAAoF,WAAiBtE,IAWjB2D,QAA4BjE,OAAOkE,MAAoBzD,IAAAoB;CAEvDpE,AAFuD+B,EAAA,OAAA8E,aAOzC7D,KAAAjB,EAAA,IAAAqC,KAAArC,EAAA,OALJiB,WAAA;EACH6D,aAGLO,iBAAiBN,YAAWE,SAAeK,MAAC,GAAG,CAAC;CAAC,GAChDjD,KAAA,CAACyC,SAAS,GAAC9E,EAAA,KAAA8E,WAAA9E,EAAA,KAAAiB,IAAAjB,EAAA,KAAAqC,KALdpE,UAAUgD,IAKPoB,EAAW;CAKD,IAAAE,KAAA3C,OAAKyD,WAAL,wBAAwCK;CAAA,AAAA1D,EAAA,OAAAJ,MAAA0D,eAAAtD,EAAA,OAAAuC,MADjDmB,KAAA,oBAAC,qBAAD;EACS,OAAAnB;EACM,aAAA3C,MAAK0D;CAAY,CAAA,GAC9BtD,EAAA,KAAAJ,MAAA0D,aAAAtD,EAAA,KAAAuC,IAAAvC,EAAA,KAAA0D,MAAAA,KAAA1D,EAAA;CAAA,IAAA6D;CAAA,AAAA7D,EAAA,OAAAe,OAAAC,IAAA,2BAAA,KAMO6C,KAAA,EAAA0B,QAAS,WAAU,GAACvF,EAAA,KAAA6D,MAAAA,KAAA7D,EAAA;CAAA,IAAA+D;CAAA,AAAA/D,EAAA,QAAAoF,YAAApF,EAAA,QAAAyE,SAL7BV,KAAA,oBAAC,UAAD;EACOgB,KAAAA;EACC,MAAA;EACCN;EACGW;EACH,OAAAvB;CAAoB,CAAA,GAC3B7D,EAAA,MAAAoF,UAAApF,EAAA,MAAAyE,OAAAzE,EAAA,MAAA+D,MAAAA,KAAA/D,EAAA;CAAA,IAAAiE;CACI,OADJjE,EAAA,QAAA0D,MAAA1D,EAAA,QAAA+D,MAXJE,KAAA,qBAAC,OAAD;EAAgB,SAAA;EAAQ,KAAA;YAAxB,CACEP,IAIAK,EALI;KAYE/D,EAAA,MAAA0D,IAAA1D,EAAA,MAAA+D,IAAA/D,EAAA,MAAAiE,MAAAA,KAAAjE,EAAA,KAZRiE;AAYQ;ACxQZ,SAAgBkC,gBACdI,oBACAC,WACAC,OACA;CACA,OAAO,CAAC,EAAEF,mBAAmBG,WAAWF,YAAYC;AACtD;AAEA,SAAOE,yBAAAN,MAAA;CAAA,IAAAO,IAAAC,EAAA,CAAA,GAKL,EAAAC,gBAAAC,uBAA6ChB,kBAAkB,GAACiB;CAAA,AAAAJ,EAAA,OAAAP,QAAAO,EAAA,OAAAE,kBACdE,KAAA;EAAA,GAC7CX;EAAID,MACDU;CACR,GAACF,EAAA,KAAAP,MAAAO,EAAA,KAAAE,gBAAAF,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAHD,IAAAK,wBAA8BC,oBAAoBF,EAGjD,GAACG;CAKD,OALCP,EAAA,OAAAG,sBAAAH,EAAA,OAAAK,yBAEKE,KAAA;EAAAJ;EAAAE;CAGP,GAACL,EAAA,KAAAG,oBAAAH,EAAA,KAAAK,uBAAAL,EAAA,KAAAO,MAAAA,KAAAP,EAAA,IAHMO;AAGN;;;;AAMH,SAAOD,oBAAAb,MAAA;CAAA,IAAAO,IAAAC,EAAA,CAAA,GACL,EAAAZ,kBAAAE,iBAAAC,SAAkDC,MAElD,CAAAe,YAAAC,iBAAoC3B,SAAwB4B,KAAAA,CAAS,GAACN,IAAAG;CAEtE1B,AAFsEmB,EAAA,OAAAT,mBAAAS,EAAA,OAAAQ,cAAAR,EAAA,OAAAR,QAE5DY,WAAA;EACR,AAAII,cAAAjB,oBACFC,KAAKgB,UAAU,GAEfC,cAAcC,KAAAA,CAAS;CACxB,GACAH,KAAA;EAACC;EAAYjB;EAAiBC;CAAI,GAACQ,EAAA,KAAAT,iBAAAS,EAAA,KAAAQ,YAAAR,EAAA,KAAAR,MAAAQ,EAAA,KAAAI,IAAAJ,EAAA,KAAAO,OAAAH,KAAAJ,EAAA,IAAAO,KAAAP,EAAA,KANtCnB,UAAUuB,IAMPG,EAAmC;CAAC,IAAAI;CAOpC,OAPoCX,EAAA,OAAAX,mBAOpCsB,KAAAX,EAAA,MAJDW,MAAAC,aAAA;EAGEH,AADApB,iBAAiBL,WAAU6B,KAAM,CAAC3B,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,GACvEuB,cAAcG,QAAQ;CAAC,GACxBZ,EAAA,KAAAX,kBAAAW,EAAA,KAAAW,KALIA;AAON;ACjDH,SAAOoB,8BAAAC,YAAAC,cAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACLC,SAAed,UAAU,GAEzB,EAAAe,cAAAC,2BAA+Cb,sBAAsB,GAACc,IAAAC;CAAA,AAAAN,EAAA,OAAAD,gBAAAC,EAAA,OAAAE,UAGjDI,KAAAJ,OAAMK,IAAKR,YAAY,GAACC,EAAA,KAAAD,cAAAC,EAAA,KAAAE,QAAAF,EAAA,KAAAM,MAAAA,KAAAN,EAAA;CAA3C,IAAAQ,aAAmBF;CACnB,IAAI,CAACE,YACH,MAAUC,MAAM,gBAAgBV,aAAY,YAAa;CAE3DM,KAAOG;CANT,IAAAE,qBAA2BL,IAODM;CAAA,AAAAX,EAAA,OAAAD,gBAAAC,EAAA,OAAAG,gBAIXQ,KAAAR,aAAaJ,YAAY,GAACC,EAAA,KAAAD,cAAAC,EAAA,KAAAG,cAAAH,EAAA,KAAAW,MAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,AAAAZ,EAAA,OAAAD,gBAAAC,EAAA,OAAAI,0BAChBQ,KAAAR,uBAAuBL,YAAY,GAACC,EAAA,KAAAD,cAAAC,EAAA,KAAAI,wBAAAJ,EAAA,KAAAY,MAAAA,KAAAZ,EAAA;CAAA,IAAAa;CAAA,AAAAb,EAAA,OAAAW,MAAAX,EAAA,QAAAY,MAFpDC,KAAA;EAAAC,WACMH;EAA0BI,qBAChBH;CACvB,GAACZ,EAAA,KAAAW,IAAAX,EAAA,MAAAY,IAAAZ,EAAA,MAAAa,MAAAA,KAAAb,EAAA;CAJH,IAAA,EAAAc,WAAAC,wBACEF,IAMF,EAAAG,eAAAC,gBAAAC,WAAAC,UAAAC,kBAAAC,cAMIhC,gBAAgB,GACpB,EAAAiC,sBAA4BnC,eAAe,GAACoC;CAAA,AAAAvB,EAAA,QAAAqB,YACOE,KAAAvB,EAAA,OAAfuB,KAAAF,aAAA,CAAc,GAACrB,EAAA,MAAAqB,WAAArB,EAAA,MAAAuB;CAAnD,IAAA,EAAAC,OAAAC,WAAAC,YAAoCH,IAAeI;CAAA,AAAA3B,EAAA,QAAAF,cAAAE,EAAA,QAAAU,sBAAAV,EAAA,QAAAsB,qBAEtBK,KAAAL,oBACzBrC,aAAaa,YAAYwB,iBAGF,IAFvBZ,mBAAkBkB,WAAlB9B,aAEEd,WAAWc,UAAU,GAACE,EAAA,MAAAF,YAAAE,EAAA,MAAAU,oBAAAV,EAAA,MAAAsB,mBAAAtB,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA;CAJ5B,IAAA6B,uBAA6BF,IAM7BG,gBAAsBR,oBAAA,CAAqBI,SAAOK,MAAQ,CAACP,OAAKO,OAAN,CAAgBN,WAASM,KAAKC;CAAA,AAAAhC,EAAA,QAAAU,sBAAAV,EAAA,QAAAwB,SAAAxB,EAAA,QAAAyB,aAAAzB,EAAA,QAAAsB,qBAAAtB,EAAA,QAAA0B,WAC3DM,KAAAV,oBAAA,CACxB,CAACI,UACF/B,gBAAgBe,oBAAoBe,WAAWD,KAAK,GAACxB,EAAA,MAAAU,oBAAAV,EAAA,MAAAwB,OAAAxB,EAAA,MAAAyB,WAAAzB,EAAA,MAAAsB,mBAAAtB,EAAA,MAAA0B,SAAA1B,EAAA,MAAAgC,MAAAA,KAAAhC,EAAA;CAFzD,IAAAiC,uBAA6BD,IAI7B,EAAAE,WAAiB5C,gBAAgB,GACjC6C,eAAqBD,OAAO1C,iBAAe4C;CAAA,AAAApC,EAAA,QAAA6B,wBAAA7B,EAAA,QAAAU,sBAEI0B,KAAA;EAAAtC,YACjC+B;EAAoBrB,YACpBE;CACd,GAACV,EAAA,MAAA6B,sBAAA7B,EAAA,MAAAU,oBAAAV,EAAA,MAAAoC,MAAAA,KAAApC,EAAA;CAHD,IAAAqC,iBAAuBzC,wBAAwBwC,EAG9C,GACD,EAAAE,gBAAAC,kBAAAC,wBACEC,kBAAkBZ,oBAAoB,GAACa;CAAAC,KAAA;EAAA,IAAAC;EAAA,AAAA5C,EAAA,QAAAuC,oBAAAvC,EAAA,QAAA6B,wBAAA7B,EAAA,QAAAiB,kBAAAjB,EAAA,QAAAiC,wBAAAjC,EAAA,QAAA8B,iBAAA9B,EAAA,QAAAoB,oBAAApB,EAAA,QAAAU,sBAAAV,EAAA,QAAAc,aAAAd,EAAA,QAAAe,uBAAAf,EAAA,QAAAkB,aAAAlB,EAAA,QAAAgB,iBAAAhB,EAAA,QAAAwC,uBAAAxC,EAAA,QAAAmC,gBAAAnC,EAAA,QAAAsC,kBAG1BM,MAAA;GAAAf;GAAAnB;GAAAoB;GAAAG;GAAAjB;GAAAC;GAAAC;GAAAE;GAAAe;GAAAG;GAAAC;GAAAC;GAAA1B;GAAAC;EAeb,GAACf,EAAA,MAAAuC,kBAAAvC,EAAA,MAAA6B,sBAAA7B,EAAA,MAAAiB,gBAAAjB,EAAA,MAAAiC,sBAAAjC,EAAA,MAAA8B,eAAA9B,EAAA,MAAAoB,kBAAApB,EAAA,MAAAU,oBAAAV,EAAA,MAAAc,WAAAd,EAAA,MAAAe,qBAAAf,EAAA,MAAAkB,WAAAlB,EAAA,MAAAgB,eAAAhB,EAAA,MAAAwC,qBAAAxC,EAAA,MAAAmC,cAAAnC,EAAA,MAAAsC,gBAAAtC,EAAA,MAAA4C,OAAAA,MAAA5C,EAAA;EAfD,IAAA6C,OAAaD;EAgBb,IAAI,CAACP,gBAAc;GAAA,IAAAS;GACjBJ,AADiB1C,EAAA,QAAA6C,OACyCC,MAAA9C,EAAA,OAAnD8C,MAAA;IAAA,GAAID;IAAIE,SAAW;IAAIV,gBAAkBW,KAAAA;GAAS,GAAChD,EAAA,MAAA6C,MAAA7C,EAAA,MAAA8C,MAA1DJ,KAAOI;GAAP,MAAAH;EAA0D;EAC3D,IAAAG;EACDJ,AADC1C,EAAA,QAAAqC,kBAAArC,EAAA,QAAA6C,QACMC,MAAA;GAAA,GACFD;GAAIE,SACE;GAAKV;EAEhB,GAACrC,EAAA,MAAAqC,gBAAArC,EAAA,MAAA6C,MAAA7C,EAAA,MAAA8C,OAAAA,MAAA9C,EAAA,KAJD0C,KAAOI;CAIN;CAiBD,OAEKG;AAAK;AAGd,SAAAR,kBAAAZ,sBAAA;CAAA,IAAA7B,IAAAC,EAAA,CAAA,GACE,CAAAqC,gBAAAY,qBAA4CnE,SAA4BoE,QAAQ,GAAC9C;CAAA,AAAAL,EAAA,OAAAoD,OAAAC,IAAA,2BAAA,KAC5ChD,MAAAiD,SAAA;EACnCJ,mBAAkBK,YAAa,CAAA,GAAIA,SAASD,IAAI,CAAC;CAAC,GACnDtD,EAAA,KAAAK,MAAAA,KAAAL,EAAA;CAFD,IAAAuC,mBAAyBlC,IAEnBC;CAAA,AAAAN,EAAA,OAAAoD,OAAAC,IAAA,2BAAA,KACkC/C,MAAAkD,WAAA;EACtCN,mBAAkBO,cAAaF,UAAOG,QAAQC,MAAOL,OAAIM,SAAUD,EAACC,IAAK,CAAC;CAAC,GAC5E5D,EAAA,KAAAM,MAAAA,KAAAN,EAAA;CAFD,IAAAwC,sBAA4BlC,IAEtBK;CAAA,AAAAX,EAAA,OAAAoD,OAAAC,IAAA,2BAAA,KAEI1C,WAAA;EAERuC,kBAAkB,CAAA,CAAE;CAAC,GACtBlD,EAAA,KAAAW,MAAAA,KAAAX,EAAA;CAAA,IAAAY;CAHD/B,AAGCmB,EAAA,OAAA6B,uBAAwBjB,KAAAZ,EAAA,MAAtBY,KAAA,CAACiB,oBAAoB,GAAC7B,EAAA,KAAA6B,sBAAA7B,EAAA,KAAAY,KAHzB/B,UAAU8B,IAGPC,EAAsB;CAAC,IAAAC;CAMzB,OANyBb,EAAA,OAAAsC,iBAMzBzB,KAAAb,EAAA,MAJMa,KAAA;EAAAyB;EAAAC;EAAAC;CAIP,GAACxC,EAAA,KAAAsC,gBAAAtC,EAAA,KAAAa,KAJMA;AAIN;AAlBH,SAAAsC,WAAA;CAAA,OACgF,CAAA;AAAE;ACnGlF,SAAOgB,8BAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAAL,YAAAC,iBAAmCE,OACnCG,QAAcR,8BAA8BE,YAAYC,YAAY,GAACM;CAE4B,OAF5BH,EAAA,OAAAD,MAAAK,YAAAJ,EAAA,OAAAE,SAEnEC,KAAA,oBAAA,sBAAA,UAAA;EAAuCD;YAAQH,MAAKK;CAAU,CAAA,GAAiCJ,EAAA,KAAAD,MAAAK,UAAAJ,EAAA,KAAAE,OAAAF,EAAA,KAAAG,MAAAA,KAAAH,EAAA,IAA/FG;AAA+F;ACVnG,SAAOI,qBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAAC,YAAAC,iBAAmCJ,OAAKK;CAAA,AAAAJ,EAAA,OAAAD,QAGTK,KAAAJ,EAAA,MAA1BI,KAAAL,MAAKM,cAAeN,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAI;CAAA,IAAAE;CACG,OADHN,EAAA,OAAAE,cAAAF,EAAA,OAAAG,gBAAAH,EAAA,OAAAI,MAD7BE,KAAA,oBAAC,+BAAD;EAA6CH;EAA0BD;YACpEE;CAD2B,CAAA,GAEEJ,EAAA,KAAAE,YAAAF,EAAA,KAAAG,cAAAH,EAAA,KAAAI,IAAAJ,EAAA,KAAAM,MAAAA,KAAAN,EAAA,IAFhCM;AAEgC;ACNpC,MAAMM,SAASF,SAAS,gHAelBG,YAAYF,OAAOG,IAAAA,WAAAA;;;EAAG,kBACRF,OAAM;AAI1B,SAAOG,cAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAuB,EAAAC,UAAAC,YAAAC,IAAAC,QAAAN,IAWsBQ,KAAA,GATlDH,OAAAE,KAAAA,IAAA,MAAAF,GAS+D,KAAII;CAAA,AAAAR,EAAA,OAAAO,KAACC,KAAAR,EAAA,MAAtCQ,KAAA,EAAAC,mBAAoBF,GAAiB,GAACP,EAAA,KAAAO,IAAAP,EAAA,KAAAQ;CAAA,IAAAE;CAEtD,OAFsDV,EAAA,OAAAE,YAAAF,EAAA,OAAAK,OAAAL,EAAA,OAAAQ,MAAlEE,KAAA,oBAAC,WAAD;EAAgBL;EAAY,OAAAG;EACzBN;CADO,CAAA,GAEEF,EAAA,KAAAE,UAAAF,EAAA,KAAAK,KAAAL,EAAA,KAAAQ,IAAAR,EAAA,KAAAU,MAAAA,KAAAV,EAAA,IAFZU;AAEY;AC7BhB,MAAMS,OAAOD,OAAOE,KAAAA,WAAAA;;;EAAI,2DAOlBC,OAAOJ,SAAS,0DAShBK,UAAUJ,OAAOK,IAAAA,WAAAA;;;EAAG,0KAWTF,KAAI,+JAWfG,WAAWN,OAAOE,KAAAA,WAAAA;;;EAAI;AAc5B,SAAgBK,aAAaC,OAAuC;CAClE,IAAM,EAACC,QAAQ,cAAaD,OACtBE,SAASZ,oBAAoB,GAE7Ba,QAAQd,cACRa,WAAW,SAEN;EACJ,4BAA6BjB,OAAO,IAAI,CAACmB;EACzC,0BAA2BnB,OAAO,IAAI,CAACmB;CAC1C,IAIK;EACJ,4BAA6BnB,OAAO,IAAI,CAACmB;EACzC,0BAA2BnB,OAAO,IAAI,CAACmB;CAC1C,GACC,CAACF,MAAM,CAAC;CAEX,OACE,qBAAC,MAAD;EAAM,cAAYD;EAAcE;YAAhC,CACE,oBAAC,SAAD;GACE,OAAM;GACN,QAAO;GACP,SAAQ;GACR,MAAK;GACL,OAAM;aAEN,oBAAC,UAAD;IAAQ,IAAG;IAAO,IAAG;IAAO,GAAE;GAAO,CAAA;EAC9B,CAAA,GACT,oBAAC,UAAD,EAAA,UACE,oBAAC,MAAD;GAAM,IAAG;GAAO,MAAM;GAAG,OAAO,EAACE,OAAO,UAAS;aAC/C,oBAAC,cAAD,EAAc,OAAO,EAACA,OAAO,UAAS,EAAE,CAAA;EACpC,CAAA,EACE,CAAA,CACN;;AAEV;AC3FA,SAAOQ,gBAAAC,QAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAEUF,KAAA;EAAAG,UAAW;EAAUC,YAAc;CAAa,GAACN,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAAA,IAAAO;CAAA,AAAAP,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAIxDG,KAAA,oBAAC,MAAD;EAAe,SAAA;EAAG,QAAA;YAChB,oBAAC,MAAD;GAAY,OAAA;aACV,oBAAC,MAAD;IAAY,MAAA;cAAG;GAAV,CAAA;EADF,CAAA;CADF,CAAA,GAIEP,EAAA,KAAAO,MAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAON,OAPMR,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KARbI,KAAA,oBAAC,MAAD;EAAa,OAAAN;EAAoE,iBAAA;YAC/E,oBAAC,SAAD;GACY,WAAA;GAER,SAAAK;aAOF,oBAAC,eAAD;IAA2B,YAAA;cACzB,oBAAC,cAAD,EAAoB,OAAA,SAAQ,CAAA;GADhB,CAAA;EAVR,CAAA;CADL,CAAA,GAeEP,EAAA,KAAAQ,MAAAA,KAAAR,EAAA,IAfPQ;AAeO;AChBX,MAAMU,cAAkC,CAAA;AAExC,SAAOC,kBAAAC,MAAAC,iBAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACLC,UAAgBV,yBAAyB,GAEzCa,SADuBH,WAAW,oBAAoBA,UAAUA,QAAOC,iBAAhDC,KAAAA,EAAAA,EACKC,OAAOC;CAAA,IAAAN,EAAA,OAAAF,QAAAE,EAAA,OAAAD,mBAAAC,EAAA,OAAAK,OAAA;EAAAE,KAAA;GAGjC,IAAAC,iBAAuBH,OAAKI,OACjBC,QACD,CAAC,EAAAC,QAACC,QACH,CAAC,EAAAH,OACNI,QAII,CAAC,CAAAJ,QAACK,aAAA;IACN,IAAI,CAACA,SAAQhB,QAAT,CAAmBA,KAAIiB,QAAO,OACzB;IAET,IAAAC,aAAmBzB,aAAauB,SAAQhB,IAAK;IAI5C,OAFG,CAACC,mBAAmBiB,WAAUD,WAAYjB,KAAIiB,SACzC,KAGFjB,KAAImB,OAAOC,aAAAC,MAAA;KAChB,IAAAC,gBAAsBJ,WAAWG;KAMhC,OALG,OAAOD,eAAgB,WAClBA,gBAAgBE,gBAErB/B,aAAa6B,WAA4B,KAAzCE,iBAA8C/B,aAAa+B,aAAa,IACnEF,YAAWG,SAAUD,cAAaC,OAEpC;IAAK,CACb;GAAC,CACH;GACH,IAAI,CAACb,gBAAcO,QAAQ;IACzBT,KAAOV;IAAP,MAAAW;GAAkB;GACnB,IAAAe;GAEDhB,AAFCN,EAAA,OAAAF,OAE6DwB,KAAAtB,EAAA,MAApCsB,MAAAC,WAAYC,WAAWD,QAAQzB,IAAI,GAACE,EAAA,KAAAF,MAAAE,EAAA,KAAAsB,KAA9DhB,KAAOE,eAAciB,IAAKH,EAAoC;EAAC;EAAAtB,AAAAA,EAAA,KAAAF,MAAAE,EAAA,KAAAD,iBAAAC,EAAA,KAAAK,OAAAL,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,OAlC1DM;AAmC2B;AAxC7B,SAAAO,SAAAa,GAAA;CAAA,OAWGA,EAACC,4BACD,IAAIC,KAAK,EAAA,CAACC,QAAS,IAAI,IAAID,KAAKF,EAACC,OAAQ,CAAC,CAAAE,QAAS,IAAIpC;AAAsB;AAZhF,SAAAmB,SAAAkB,QAAA;CAAA,OAQmBC,OAAIjB,YAAJ,CAAA;AAAmB;AARtC,SAAAJ,SAAAqB,MAAA;CAAA,OAOkB,CAACA,KAAIC;AAAM;AAoCpC,SAAgBR,WAAWV,UAAsBhB,MAAYmC,QAAmC;CAC9F,OAAO;EACLC,MAAM;GACJC,IAAI,oBAAoBrB,SAASO;GACjCe,aAAa1C;EACf;EACMI;EACNuC,WAAW;EACXC,cAAcxB,UAAUa,4BAAW,IAAIC,KAAK,EAAA,CAAEW,YAAY;CAC5D;AACF;ACnDA,SAAOa,mBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAAC,eAAqBH;CAIrB,IACE,CAHgCP,kBAAkBU,UAGjDC,KACDD,WAAUE,KAAKC,WAAY,SAAS,KACpCH,WAAUE,SAAAA,8BAAiC;EAAA,IAAAE;EAEV,OAFUN,EAAA,OAAAD,QAEVO,KAAAN,EAAA,MAA1BM,KAAAP,MAAKQ,cAAeR,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAM,KAA1BA;CAA0B;CAEnC,IACE,CAACZ,OAAOK,MAAKG,YAAa,UAAU,KACpCH,MAAKS,YAAa,UAClBT,MAAKS,YAAAA,UAAyB;EAAA,IAAAF;EAE+B,OAF/BN,EAAA,OAAAD,QAE+BO,KAAAN,EAAA,MAAtDM,KAAA,oBAAC,aAAD;GAAY,GAAKP;aAAQA,MAAKU;EAAlB,CAAA,GAA0CT,EAAA,KAAAD,OAAAC,EAAA,KAAAM,KAAtDA;CAAsD;CAC9D,IAAAA;CAEgC,OAFhCN,EAAA,OAAAD,QAEgCO,KAAAN,EAAA,MAA1BM,KAAAP,MAAKQ,cAAeR,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAM,KAA1BA;AAA0B;AAGnC,SAAAI,YAAAX,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAK;CAAA,AAAAN,EAAA,OAAAD,MAAAG,aAEyFI,KAAAN,EAAA,MAA5EM,KAAAhB,kBAAkBS,MAAKG,UAAoD,KAApCT,oBAAoBM,MAAKG,UAAW,GAACF,EAAA,KAAAD,MAAAG,YAAAF,EAAA,KAAAM;CADvF,IAAAK,iBACQ,CAAC,CAAEL,IAKXQ,iBADiBlB,kBAAkBG,MAAKc,MAAOF,cACxBC,CAAQ,CAAA,IAAGG;CAAA,AAAAf,EAAA,OAAAc,iBAQ7BC,KAAAf,EAAA,MAJAe,KAAAD,kBACC,oBAAC,KAAD,EAAA,UACE,oBAAC,iBAAD,EAA2BA,UAAAA,eAAc,CAAA,EADvC,CAAA,GAGLd,EAAA,KAAAc,gBAAAd,EAAA,KAAAe;CAAA,IAAAC;CAAA,AAAAhB,EAAA,OAAAe,KACIC,KAAAhB,EAAA,MANPgB,KAAA,oBAAC,MAAD;EAAW,KAAA;EAAS,OAAA;EAAiB,SAAA;YAClCD;CADE,CAAA,GAMEf,EAAA,KAAAe,IAAAf,EAAA,KAAAgB;CAPT,IAAAC,UACED,IAODE;CAUC,OAVDlB,EAAA,OAAAiB,WAAAjB,EAAA,OAAAD,SAEMmB,KAAAnB,MAAKQ,cAAe;EAAA,GACtBR;EAAKkB,SAEClB,MAAKkB;EAAQE,iBAILF;CACnB,CAAC,GAACjB,EAAA,KAAAiB,SAAAjB,EAAA,KAAAD,OAAAC,EAAA,KAAAkB,MAAAA,KAAAlB,EAAA,IARKkB;AAQL;ACtDJ,MAAMoB,cAAcF,OAAOd,IAAI,CAAC,CAAA,WAAA;;;;AAMhC,SAAOiB,eAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAD,QAG2BG,KAAAF,EAAA,MAA5BE,KAAA,oBAAC,eAAD,EAAc,GAAKH,MAAK,CAAA,GAAIC,EAAA,KAAAD,OAAAC,EAAA,KAAAE;CAAA,IAAAC;CACf,OADeH,EAAA,OAAAD,MAAAK,YAAAJ,EAAA,OAAAE,MAD9BC,KAAA,oBAAC,cAAD;EAAwB,UAAAJ,MAAKK;YAC3BF;CADW,CAAA,GAEEF,EAAA,KAAAD,MAAAK,UAAAJ,EAAA,KAAAE,IAAAF,EAAA,KAAAG,MAAAA,KAAAH,EAAA,IAFfG;AAEe;AAInB,SAAOE,aAAAN,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAGL,EAAAG,aAAmBL,OACnB,CAAAO,OAAAC,YAA0BjB,SAA4B,GAACY;CAAA,AAAAF,EAAA,OAAAQ,OAAAC,IAAA,2BAAA,KAExBP,MAAAQ,WAAA;EAC7BH,SAASG,OAAMJ,KAAM;CAAC,GACvBN,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAFD,IAAAW,aAAmBT,IAEbC;CAAA,AAAAH,EAAA,OAAAI,WAKLD,KAAAH,EAAA,MAH8BG,WAAA;EAE7BI,AADAH,SAASX,WAAUmB,KAAMlB,MAAM,CAAC,CAAC,GACjCa,SAASM,KAAAA,CAAS;CAAC,GACpBb,EAAA,KAAAI,UAAAJ,EAAA,KAAAG;CAHD,IAAAW,aAAmBX,IAGLY;CAAA,AAAAf,EAAA,OAAAQ,OAAAC,IAAA,2BAAA,KACcM,WAAMR,SAASM,KAAAA,CAAS,GAACb,EAAA,KAAAe,MAAAA,KAAAf,EAAA;CAArD,IAAAgB,UAAgBD,IAA0CE;CAAA,AAAAjB,EAAA,OAAAD,MAAAmB,WAC0BD,KAAAjB,EAAA,MAApEiB,KAAA,oBAAC,eAAD;EAAwBN,SAAAA;YAAaZ,MAAKmB;CAA5B,CAAA,GAAsDlB,EAAA,KAAAD,MAAAmB,UAAAlB,EAAA,KAAAiB;CAApF,IAAAE,UAAgBF,IAAoEG;CAuBnF,OAvBmFpB,EAAA,OAAAmB,WAAAnB,EAAA,OAAAM,SAAAN,EAAA,OAAAc,cAE7EM,KAAAd,QACL,oBAAC,MAAD;EAAM,QAAA;EAAY,MAAA;EAAoB,SAAA;EAAoB,iBAAA;YACxD,qBAAC,OAAD;GAAY,KAAA;aAAZ;IACE,oBAAC,MAAD;KAAM,OAAA;KAAa,QAAA;eAAW;IAAzB,CAAA;IAIL,oBAAC,aAAD;KAAmB,MAAA;KAAY,SAAA;KAAQ,MAAA;KAAW,QAAA;eAC/Ca;IADS,CAAA;IAIZ,qBAAC,MAAD;KAAY,MAAA;KAAQ,KAAA;eAApB,CACE,oBAAC,KAAD;MAAW,MAAA;gBACT,oBAAC,QAAD;OAAa,MAAA;OAAmBH,SAAAA;OAAc,MAAA;MAAS,CAAA;KADrD,CAAA,GAGJ,oBAAC,QAAD;MAAa,MAAA;MAAuBF,SAAAA;MAAiB,MAAA;KAAU,CAAA,CAJ5D;;GATD;;CADH,CAAA,IADAK,SAqBNnB,EAAA,KAAAmB,SAAAnB,EAAA,KAAAM,OAAAN,EAAA,KAAAc,YAAAd,EAAA,KAAAoB,MAAAA,KAAApB,EAAA,IArBMoB;AAqBN;AAGH,SAAAC,cAAAtB,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACEqB,iBACQ9B,kBAAkBO,MAAKwB,UAAoD,KAApC3B,oBAAoBG,MAAKwB,UAAW,GAGnFC,QAAczB,MAAKyB;CAEnB,IAAIF,kBAAAE,SAAA,CAA6BA,MAAcC,QAAQ;EAAA,IAAAvB;EACG,OADHF,EAAA,OAAAD,QACGG,KAAAF,EAAA,MAAjDE,KAAAH,MAAK2B,cAAe;GAAA,GAAI3B;GAAKyB,OAASX,KAAAA;EAAS,CAAC,GAACb,EAAA,KAAAD,OAAAC,EAAA,KAAAE,KAAjDA;CAAiD;CACzD,IAAAA;CAEgC,OAFhCF,EAAA,OAAAD,QAEgCG,KAAAF,EAAA,MAA1BE,KAAAH,MAAK2B,cAAe3B,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAE,KAA1BA;AAA0B;ACjEnC,SAAOkC,gBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACLC,WAAiBL,kBAAkBE,MAAKI,MAAO,EAAI,GACnD,EAAAC,aAAmBV,iBAAiB,GACpCW,MAAYN,MAAKO,MAAMC,MAAKC;CAAA,AAAAR,EAAA,OAAAK,OAAAL,EAAA,OAAAI,YAE1BI,MAAAC,eAAA;EACOJ,OAGLD,SAASX,WAAUiB,KAAMD,UAAU,CAAC,CAAAE,UAAW,EAAAJ,MAAOF,IAAG,CAAC,CAAC;CAAC,GAC7DL,EAAA,KAAAK,KAAAL,EAAA,KAAAI,UAAAJ,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CANH,IAAAY,gBAAsBJ,IAStBK,iBAAuBX,SAAQ,IAAGY;CAAA,AAAAd,EAAA,OAAAD,QAIae,KAAAd,EAAA,MAA1Bc,KAAAf,MAAKgB,cAAehB,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAc;CAAA,IAAAE;CAAA,AAAAhB,EAAA,OAAAc,KAAOE,KAAAhB,EAAA,MAAhDgB,KAAA,oBAAC,KAAD;EAAW,MAAA;YAAIF;CAAX,CAAA,GAA4Cd,EAAA,KAAAc,IAAAd,EAAA,KAAAgB;CAAA,IAAAC;CAAA,AAAAjB,EAAA,OAAAa,iBACgBI,KAAAjB,EAAA,MAA/DiB,KAAAJ,kBAAkB,oBAAC,iBAAD,EAA2BA,UAAAA,eAAc,CAAA,GAAIb,EAAA,KAAAa,gBAAAb,EAAA,KAAAiB;CAAA,IAAAC;CAAA,AAAAlB,EAAA,OAAAgB,MAAAhB,EAAA,QAAAiB,MAFlEC,KAAA,qBAAC,MAAD;EAAY,OAAA;EAAiB,SAAA;YAA7B,CACEF,IACCC,EAFE;KAGEjB,EAAA,KAAAgB,IAAAhB,EAAA,MAAAiB,IAAAjB,EAAA,MAAAkB,MAAAA,KAAAlB,EAAA;CAAA,IAAAmB;CACM,OADNnB,EAAA,QAAAY,iBAAAZ,EAAA,QAAAkB,MAJTC,KAAA,oBAAC,cAAD;EAAwBP,UAAAA;YACtBM;CADW,CAAA,GAKElB,EAAA,MAAAY,eAAAZ,EAAA,MAAAkB,IAAAlB,EAAA,MAAAmB,MAAAA,KAAAnB,EAAA,KALfmB;AAKe;ACxBnB,MAAaG,0BAA0BF,cAAuBG,KAAAA,CAAS;AAEvE,SAAOC,sBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAEsCC,KAAAH,MAAKI,OAAMC;CAAA,AAAAJ,EAAA,OAAAD,QACrBK,KAAAJ,EAAA,MAA1BI,KAAAL,MAAKM,cAAeN,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAI;CAAA,IAAAE;CAAA,AAAAN,EAAA,OAAAI,KAAIE,KAAAN,EAAA,MAAjCM,KAAA,oBAAA,UAAA,EAAA,UAAGF,GAA0B,CAAA,GAAIJ,EAAA,KAAAI,IAAAJ,EAAA,KAAAM;CAAA,IAAAC;CACA,OADAP,EAAA,OAAAD,MAAAI,SAAAH,EAAA,OAAAM,MADnCC,KAAA,oBAAA,wBAAA,UAAA;EAAyC,OAAAL;YACvCI;CACF,CAAA,GAAmCN,EAAA,KAAAD,MAAAI,OAAAH,EAAA,KAAAM,IAAAN,EAAA,KAAAO,MAAAA,KAAAP,EAAA,IAFnCO;AAEmC;ACJvC,SAAOM,WAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAC,SAAeH,OACfI,WAAiBN,kBAAkBK,MAAM,EAAI,GAACE;CAAA,AAAAJ,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAGhBF,KAAA,EAAAG,UAAW,WAAU,GAACP,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAAA,IAAAQ;CAAA,AAAAR,EAAA,OAAAD,QACFS,KAAAR,EAAA,MAA/BQ,KAAAT,MAAKU,cAAe,EAAA,GAAIV,MAAK,CAAC,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAQ;CAAA,IAAAE;CAAA,AAAAV,EAAA,OAAAQ,KAAOE,KAAAV,EAAA,MAArDU,KAAA,oBAAC,KAAD;EAAW,MAAA;YAAIF;CAAX,CAAA,GAAiDR,EAAA,KAAAQ,IAAAR,EAAA,KAAAU;CAAA,IAAAC;CAAA,AAAAX,EAAA,OAAAG,WAKnDQ,KAAAX,EAAA,MAJDW,KAAAR,SAAQS,IAAKC,OAIb,GAACb,EAAA,KAAAG,UAAAH,EAAA,KAAAW;CAAA,IAAAG;CACG,OADHd,EAAA,OAAAU,MAAAV,EAAA,OAAAW,MANJG,KAAA,qBAAC,MAAD;EAAY,OAAA;EAAgB,OAAAV;YAA5B,CACEM,IACCC,EAFE;KAOEX,EAAA,KAAAU,IAAAV,EAAA,KAAAW,IAAAX,EAAA,KAAAc,MAAAA,KAAAd,EAAA,IAPPc;AAOO;AAZJ,SAAAD,QAAAE,KAAA;CAAA,OAQC,oBAAC,KAAD;EAA8B,OAAA;GAAAR,UAAW;GAAUW,OAAS;EAAE;YAC5D,oBAAC,iBAAD,EAA2BH,UAAAA,IAAG,CAAA;CAD5B,GAAMA,IAAGC,KAAKC,EAAd;AAEE;ACGd,MAAMyB,kBAAkBC,OAAwBA,GAAGD,eAAe;AAElE,SAAOG,aAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAGL,EAAAC,oBAAAC,gBAAAC,WAAAC,OAAAC,YAAAC,cAAAC,WAAAC,WAAAC,QAAAC,UAAAC,SAAAC,YAAAC,uBAAAC,wBAAAC,oBAAAC,OAAAC,eAiBIzB,gBAAgB,GAEpB0B,gBAAsB3B,iBAAiB,GACvC4B,WAAiB7B,oBAAoBe,UAAU,GAACe;CAAA,AAAArB,EAAA,OAAAsB,OAAAC,IAAA,2BAAA,KAMbF,KAAApC,mBAAmB,GAACe,EAAA,KAAAqB,MAAAA,KAAArB,EAAA;CAAvD,IAAAwB,eAAmCH,IAEnCI,WAAiBjB,WAASkB,qBAA8BC,SAAAC;CAAA,AAAA5B,EAAA,OAAAM,cAAAN,EAAA,OAAAmB,cAAAU,QAAA7B,EAAA,OAAAO,gBAE9CqB,WAAA;EACR,IAAAE,MAAYX,cAAaU,KAAKE,eACZzB,YAAYC,YAAY,CAAC,CAAAyB,KAEvChD,KAAIiD,UAAA;GAKF,AAJIA,MAAKC,SAAU,cACjBV,aAAYW,QAASC,qBAAqBH,KAAK,CAAC,GAG9CA,MAAKC,SAAU,YACjBV,aAAYW,QAASE,mBAAmBJ,KAAK,CAAC;EAC/C,CACF,CACH,CAAC,CAAAK,UACU;EAAC,aAEP;GACLR,IAAGS,YAAa;EAAC;CAClB,GACFvC,EAAA,KAAAM,YAAAN,EAAA,KAAAmB,cAAAU,MAAA7B,EAAA,KAAAO,cAAAP,EAAA,KAAA4B,MAAAA,KAAA5B,EAAA;CAAA,IAAAwC;CAnBD5D,AAmBCoB,EAAA,OAAAM,cAAAN,EAAA,OAAAmB,iBAAAnB,EAAA,OAAAO,gBAAEiC,KAAA;EAAClC;EAAYa;EAAeZ;EAAciB;CAAY,GAACxB,EAAA,KAAAM,YAAAN,EAAA,KAAAmB,eAAAnB,EAAA,KAAAO,cAAAP,EAAA,KAAAwC,MAAAA,KAAAxC,EAAA,IAnB1DpB,UAAUgD,IAmBPY,EAAuD;CAE1D,IAAAC,SAAeC,EAAQrC,OAAKsC,MAAOC;CAAA,AAAA5C,EAAA,OAAAK,QAWlCuC,KAAA5C,EAAA,OAV0C4C,WAAA;EAKzCpB,aAAYW,QAAS;GAAAD,MACb;GAAUW,SACP,CAAA;GAAEC,UACDzC;EACZ,CAAC;CAAC,GACHL,EAAA,KAAAK,OAAAL,EAAA,MAAA4C;CAVD,IAAAG,sBAA4BlE,eAAe+D,EAU1C,GAACI;CAAA,AAAAhD,EAAA,QAAAyC,UAAAzC,EAAA,QAAA+C,uBACQC,WAAA;EACR,AAAIP,UAEFM,oBAAoB;CACrB,GACF/C,EAAA,MAAAyC,QAAAzC,EAAA,MAAA+C,qBAAA/C,EAAA,MAAAgD,MAAAA,KAAAhD,EAAA;CAAA,IAAAiD;CALDrE,AAKCoB,EAAA,QAAAyC,SAAUQ,KAAAjD,EAAA,OAARiD,KAAA,CAACR,MAAM,GAACzC,EAAA,MAAAyC,QAAAzC,EAAA,MAAAiD,KALXrE,UAAUoE,IAKPC,EAAQ;CAEX,IAAAC,UAAgBnE,OAA+B,IAAI,GAACoE,IAAAC;CAMpD,IANoDpD,EAAA,QAAAsB,OAAAC,IAAA,2BAAA,KAE1C4B,WAAA;EACR5E,qBAAqB2E,QAAOG,OAAS;CAAC,GACrCD,KAAA,CAAA,GAAEpD,EAAA,MAAAmD,IAAAnD,EAAA,MAAAoD,OAAAD,KAAAnD,EAAA,KAAAoD,KAAApD,EAAA,MAFLpB,UAAUuE,IAEPC,EAAE,GAED3B,UAAQ;EAAA,IAAA6B;EAAA,AAAAtD,EAAA,QAAAsB,OAAAC,IAAA,2BAAA,KAGN+B,KAAA,oBAAC,MAAD;GACQ,OAAA;GACI,WAAA;GACH,QAAA;GACC,SAAA;GACC,SAAA;GACF,QAAA;aAEP,oBAAC,MAAD;IAAY,MAAA;cAAG;GAAV,CAAA;EARF,CAAA,GAYEtD,EAAA,MAAAsD,MAAAA,KAAAtD,EAAA;EAAA,IAAAuD;EACH,OADGvD,EAAA,QAAAD,QACHwD,KAAAvD,EAAA,OAdNuD,KAAA,oBAAC,KAAD;GAAQ,IAAA;GAAM,GAAKxD;GAAYmD,KAAAA;aAC7BI;EADE,CAAA,GAcEtD,EAAA,MAAAD,OAAAC,EAAA,MAAAuD,KAdNA;CAcM;CAET,IAAAD;CAAA,AAAAtD,EAAA,QAAAE,sBAAAF,EAAA,QAAAG,kBAAAH,EAAA,QAAAS,aAAAT,EAAA,QAAAU,UAAAV,EAAA,QAAAW,YAAAX,EAAA,QAAAY,WAAAZ,EAAA,QAAAa,cAAAb,EAAA,QAAAc,yBAAAd,EAAA,QAAAe,0BAAAf,EAAA,QAAAgB,sBAAAhB,EAAA,QAAAoB,YAAApB,EAAA,QAAAiB,SAAAjB,EAAA,QAAAkB,cAIIoC,KAAArC,QACCR,cAAc,OACZ,oBAAC,MAAD;EACQ,OAAA;EACI,WAAA;EACH,QAAA;EACC,SAAA;EACC,SAAA;EACF,QAAA;YAEP,oBAAC,MAAD;GAAY,MAAA;aAAG;EAAV,CAAA;CARF,CAAA,IAWL,oBAAC,aAAD;EAC2Be,yBAAAA;EACLtB;EACJC;EACL,WAAAM,UAAS+C;EACX,SAAA/C,UAASgD;EACT,SAAAhD,UAASiD;EACV,QAAAjD,UAASkD;EACbjE,IAAAA;EACK,SAAAe,UAASmD;EACRjD;EACUG,oBAAAA;EACRJ,YAAAA;EACCE,aAAAA;EACDC;EACYE,wBAAAA;EACJC,oBAAAA;EACVI;EACA,UAAAX,UAASoD;EACP,YAAApD,UAASqD;EACT5C;EAEL,OAAAT,UAASJ;EACI,oBAAA;CAAK,CAAA,IAI7B,qBAAC,MAAD;EACQ,OAAA;EACI,WAAA;EACH,QAAA;EACC,SAAA;EACC,SAAA;EACF,QAAA;YANT,CAQE,oBAAC,SAAD,EAAS,OAAA,GAAK,CAAA,GAEd,oBAAC,KAAD;GAAgB,WAAA;aACd,oBAAC,MAAD;IAAY,OAAA;IAAS,OAAA;IAAY,MAAA;cAAG;GAA/B,CAAA;EADH,CAAA,CAVD;KAgBNL,EAAA,MAAAE,oBAAAF,EAAA,MAAAG,gBAAAH,EAAA,MAAAS,WAAAT,EAAA,MAAAU,QAAAV,EAAA,MAAAW,UAAAX,EAAA,MAAAY,SAAAZ,EAAA,MAAAa,YAAAb,EAAA,MAAAc,uBAAAd,EAAA,MAAAe,wBAAAf,EAAA,MAAAgB,oBAAAhB,EAAA,MAAAoB,UAAApB,EAAA,MAAAiB,OAAAjB,EAAA,MAAAkB,YAAAlB,EAAA,MAAAsD,MAAAA,KAAAtD,EAAA;CAAA,IAAAuD;CACG,OADHvD,EAAA,QAAAD,SAAAC,EAAA,QAAAsD,MAzDHC,KAAA,oBAAC,KAAD;EAAQ,IAAA;EAAM,GAAKxD;EAAiBJ,UAAAA;EAAqBuD,KAAAA;YACtDI;CADC,CAAA,GA0DEtD,EAAA,MAAAD,OAAAC,EAAA,MAAAsD,IAAAtD,EAAA,MAAAuD,MAAAA,KAAAvD,EAAA,KA1DNuD;AA0DM;AAIV,SAASnB,qBAAqBH,OAAwC;CACpE,IAAMY,UAAUZ,MAAM8B,UAAUC,KAAKC,QAAQA,IAAIC,KAAK,CAAC,CAACC,OAAOzB,OAAO;CAEtE,OAAO;EACLR,MAAM;EACNY,UAAUb,MAAMmC;EAChBvB,SAASxD,oBAAoB4C,MAAMoC,QAAQxB,OAAO;CACpD;AACF;AAEA,SAASR,mBAAmBJ,OAAsC;CAChE,IAAMqC,gBAAgBrC,MAAMsC,gBAAgBP,KAAKC,QAAQA,IAAIC,KAAK,CAAC,CAACC,OAAOzB,OAAO,GAC5E8B,eAAevC,MAAMwC,eAAeT,KAAKC,QAAQA,IAAIC,KAAK,CAAC,CAACC,OAAOzB,OAAO;CAEhF,OAAO;EACLR,MAAM;EACNY,UAAUb,MAAMmC;EAChBvB,SAASxD,oBAAoB,UAAUiF,aAAa,CAAC,CAACI,OACpDrF,oBAAoB,SAASmF,YAAY,CAC3C;CACF;AACF;ACtMA,MAAaO,oBAAoBJ,cAAsC,CAAC,CAAC;;;;;;;;;;;;;;ACkCzE,SAAgBuB,sBACdC,UACAC,WAAWV,GACe;CAO1B,OACE,CAACW;EANDR,MAAM;EACNC,QAAQ;EACRC,UAAU,CAAC,CAACI,SAASJ;EACrBE,aAAaK,cAAcH,SAASI,UAAU;CAG7CF,GAAK,GAAGG,wBAAwBL,UAAUM,KAAKC,IAAIN,UAAUT,EAAkB,CAAC,CAAC,CAAC,CAChFgB,QAAQC,MAAMA,EAAEX,WAAW,CAAA,CAE3BY,KAAK,EAACZ,aAAaa,cAAc,GAAGC,aAAY,EAAC,GAAGA,MAAK,EAAE;AAElE;AAEA,SAAST,cAAcC,YAAwB;CAC7C,OAAO,OAAOA,WAAWT,UAAW,cAAc,OAAOS,WAAWR,YAAa;AACnF;AAEA,SAASiB,iBAAiBC,aAIM;CAC9B,OAAO;EACLpB,MAAML,aAAayB,YAAYpB,IAAI;EACnCE,UAAU,CAAC,CAACkB,YAAYlB;EACxBD,QAAQ;EACRG,aAAaK,cAAcW,YAAYV,UAAU;CACnD;AACF;AAEA,SAASC,wBACPU,MACAd,UAC+B;CAK/B,OAJIc,KAAKrB,KAAKsB,UAAUf,WACf,CAAA,IAGFc,KAAKE,QAAQC,QAAuCC,KAAKC,WAAW;EACzE,IAAIA,OAAOC,SAAS,SAClB,OAAOF;EAET,IAAIC,OAAOC,SAAS,SAAS;GAC3B,IAAMjB,aAAagB,OAAOE,MAAMlB;GAChC,IAAIA,WAAWmB,aAAa,UAAU;IACpC,IAAMC,cAAcJ,OAAOE,MAAM1B,WAC7B,CAAA,IAEAS,wBAAwBe,OAAOE,OAAyBrB,QAAQ;IACpE,OAAO;KAAC,GAAGkB;KAAKN,iBAAiBO,OAAOE,KAAK;KAAG,GAAGE;IAAW;GAChE,OAAO,IAAIpB,WAAWmB,aAAa,SAAS;IAE1C,IAAME,QAAQL,OAAOE,OAEjBI,aAA4C,CAAA,GAC1CC,iBAAiBF,MAAMR,QAAQW,MAClCC,MAAMA,EAAER,SAAS,UAAUnC,mBAAmB2C,EAAEC,KAAK1B,UAAU,CAClE;IACA,IAAI,CAACqB,MAAM7B,UACT,KAAK,IAAMmC,eAAeN,MAAMR,SAAS;KACvC,IAAIc,YAAYV,SAAS,SACvB;KAGF,IAAMG,cACJG,kBAAkB,CAACI,YAAYD,KAAKlC,WAEhCS,wBAAyB0B,YAAyCD,MAAM7B,QAAQ,IAChF,CAAA;KAENyB,aAAa;MAAC,GAAGA;MAAYb,iBAAiBkB,YAAYD,IAAI;MAAG,GAAGN;KAAW;IACjF;IAEF,OAAO;KAAC,GAAGL;KAAKN,iBAAiBY,KAAK;KAAG,GAAGC;IAAU;GACxD;GAEA,OAAO,CAAC,GAAGP,KAAKN,iBAAiBO,OAAOE,KAAK,CAAC;EAChD,OAAO,IAAIF,OAAOC,SAAS,YAAY;GAErC,IAAMW,sBAAsB,CAAC,CAAEjB,KAAwBX,YAAY6B,WAAWL,MAC3EM,MAAM,CAACA,EAAEC,UAAUD,EAAEE,SAAShB,OAAOiB,SAASD,QAAQ,OAAOF,EAAEvC,UAAW,UAC7E,GAEM6B,cAAcnB,wBAAwBe,OAAOiB,UAAUpC,QAAQ,CAAC,CAACS,KAAKwB,OAAO;IACjF,GAAGA;IAEHpC,aAAakC,uBAAuBE,EAAEpC;GACxC,EAAE;GACF,OAAO,CAAC,GAAGqB,KAAK,GAAGK,WAAW;EAChC;EAEA,OAAOL;CACT,GAAG,CAAA,CAAE;AACP;ACpIA,MAAM4B,uBAAuBF,uBAAOP,YAAY,CAAC,CAAA,WAAA;;;GAAC;CAChD,UAAY;CACZ,UAAU,EACRU,aAAa,mBACf;AACF,CAAC;AAED,SAAOC,oBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAAC,cAAoBH,OAAKI,IAAAC;CAAA,AAAAJ,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAKjBH,KAAA,oBAAA,OAAA;EAAY,OAAA,EAAAI,WAAY,SAAQ;YAC9B,oBAAC,sBAAD,CAAqB,CAAA;CACjB,CAAA,GACNH,KAAA,oBAAC,MAAD;EAAY,OAAA;EAAe,MAAA;YAAG;CAAzB,CAAA,GAGEJ,EAAA,KAAAG,IAAAH,EAAA,KAAAI,OAAAD,KAAAH,EAAA,IAAAI,KAAAJ,EAAA;CAAA,IAAAQ;CAmBP,OAnBOR,EAAA,OAAAE,YAmBPM,KAAAR,EAAA,MA5BNQ,KAAA,oBAAC,KAAD;EAAc,SAAA;YACZ,oBAAC,WAAD;GAAkB,OAAA;aAChB,qBAAC,OAAD;IAAY,KAAA;cAAZ;KACEL;KAGAC;KAKA,qBAAC,MAAD;MAAY,OAAA;MAAc,KAAA;MAAW,SAAA;gBAArC,CACE,oBAAC,QAAD;OACK,IAAA;OACGT,MAAAA;OACF,KAAA;OACG,QAAA;OACG,UAAA;OACL,MAAA;OACIO,SAAAA;OACA,SAAA;OACJ,MAAA;OACA,MAAA;MAAS,CAAA,GAEhB,oBAAC,QAAD;OAAkB,UAAA;OAAQ,MAAA;OAAiBA,SAAAA;OAAoB,SAAA;OAAQ,MAAA;MAAS,CAAA,CAb7E;;IATD;;EADE,CAAA;CADR,CAAA,GA4BEF,EAAA,KAAAE,WAAAF,EAAA,KAAAQ,KA5BNA;AA4BM;ACxCV,SAASI,6BAA6BC,YAA6B;CAMjE,OALI,OAAOC,eAAiB,MACnB,KAGKA,aAAaE,QAAQH,UAC5BE,MAAU;AACnB;AAEA,SAASE,yBAAyBJ,YAAoB;CAChD,OAAOC,eAAiB,OAI5BA,aAAaI,QAAQL,YAAY,MAAM;AACzC;AAEA,SAAOM,qBAAAN,YAAA;CAAA,IAAAO,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAP,aAE4CS,KAAAF,EAAA,MAA/CE,WAAM,CAACV,6BAA6BC,UAAU,GAACO,EAAA,KAAAP,YAAAO,EAAA,KAAAE;CADjD,IAAA,CAAAC,gBAAAC,qBAA4Cd,SAC1CY,EACF,GAACG;CAAA,AAAAL,EAAA,OAAAP,aAIAY,KAAAL,EAAA,MAHqCK,WAAA;EAEpCR,AADAO,kBAAkB,EAAK,GACvBP,yBAAyBJ,UAAU;CAAC,GACrCO,EAAA,KAAAP,YAAAO,EAAA,KAAAK;CAHD,IAAAC,oBAA0BD,IAGSE;CAEO,OAFPP,EAAA,OAAAM,qBAAAN,EAAA,OAAAG,kBAE5BI,KAAA;EAAAJ;EAAAG;CAAkC,GAACN,EAAA,KAAAM,mBAAAN,EAAA,KAAAG,gBAAAH,EAAA,KAAAO,MAAAA,KAAAP,EAAA,IAAnCO;AAAmC;ACZ5C,SAAOwB,kBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAX,IAAAC,YAAAC,WAAAC,UAAAE,iBAAAC,WAAuEG,OAEvE,EAAAG,iBAAuBjB,sBAAsB,GAACkB;CAAA,IAAAH,EAAA,OAAAE,gBAAAF,EAAA,OAAAL,mBAAAK,EAAA,OAAAT,YAAA;EAAAa,KAAA;GAG5C,IAAAC,OAAaH,aAAaX,WAAUe,IAAK;GACzC,IAAIX,iBAAe;IAAA,IAAAY;IACjBJ,AADiBH,EAAA,OAAAT,aACsBgB,KAAAP,EAAA,MAA/BO,KAAAnB,oBAAoBG,UAAU,GAACS,EAAA,KAAAT,YAAAS,EAAA,KAAAO,KAAvCJ,KAAO,CAACI,IAA+B,GAAKF,IAAI;IAAhD,MAAAD;GAAiD;GAEnDD,KAAOE;EAAI;EAAAL,AAAAA,EAAA,KAAAE,cAAAF,EAAA,KAAAL,iBAAAK,EAAA,KAAAT,YAAAS,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CALb,IAAAQ,YAAkBL,IAM6BI;CAAA,IAAAP,EAAA,OAAAR,aAAAQ,EAAA,OAAAQ,WAAA;EAAA,IAAAC;EAGGT,AAHHA,EAAA,OAAAR,YAGEiB,KAAAT,EAAA,OAA1BS,MAAAC,MAAOA,EAACC,QAASnB,WAASQ,EAAA,KAAAR,WAAAQ,EAAA,MAAAS,KAAzCF,KAAAC,UAASI,KAAMH,EAA0B,GAACT,EAAA,KAAAR,WAAAQ,EAAA,KAAAQ,WAAAR,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CADlD,IAAAa,eACQN,IAEPE;CAAA,IAAAT,EAAA,QAAAQ,aAAAR,EAAA,QAAAJ,QAAA;EAAA,IAAAkB;EAOiDd,AAPjDA,EAAA,QAAAJ,SAKuDkB,KAAAd,EAAA,OAA1Cc,MAAAjB,UAAYD,WAASA,OAAOC,KAAY,GAAEG,EAAA,MAAAJ,QAAAI,EAAA,MAAAc,KADpDL,KAAAD,UAASZ,OACCkB,EAA0C,CAAC,CAAAlB,OAC3CmB,OAAyC,CAAC,CAAAC,IAC7CC,QAAsC,GAACjB,EAAA,MAAAQ,WAAAR,EAAA,MAAAJ,QAAAI,EAAA,MAAAS;CAAA,OAAAA,KAAAT,EAAA;CALlD,IAAAkB,sBAEIT,IAOJU,eAAqBC,UAoCrBC,cAAoBC,UAIpBC,eAAqBC,QAWXV,KAAAD,eAAeA,aAAYY,OAA3BlD,YASCmD,KAAAb,cAAYF,KAAKgB;CAExB,OAFwB3B,EAAA,QAAAkB,uBAAAlB,EAAA,QAAAV,MAAAU,EAAA,QAAAP,YAAAO,EAAA,QAAAc,MAAAd,EAAA,QAAA0B,MAX1BC,KAAA,oBAAC,cAAD;EACY,UAAA;EACJ,MAAAb;EACIrB,UAAAA;EACV,YAAA;EACIH;EACK4B,SAAAA;EACG,aAAA;EACJ,QAAA;EACMC;EACDE;EACN,OAAAK;EACOH;CAAY,CAAA,GAC1BvB,EAAA,MAAAkB,qBAAAlB,EAAA,MAAAV,IAAAU,EAAA,MAAAP,UAAAO,EAAA,MAAAc,IAAAd,EAAA,MAAA0B,IAAA1B,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA,KAbF2B;AAaE;AAzFC,SAAAH,OAAAI,OAAAC,UAAA;CAoEH,IAAAC,SAAeF,MAAKG,YAAa;CAAC,OAEhCC,UAAMC,OAAoBF,YAAU,CAAC,CAAAG,SAACJ,MACa,KAAnDE,UAAMnC,OAAcsC,OAAaJ,YAAU,CAAC,CAAAG,SAACJ,MAAM;AAAC;AAvEnD,SAAAR,SAAAc,SAAAC,UAAA;CAAA,OAgEIL,UAAMnC,MAAasC,SAAnBC;AAA4B;AAhEhC,SAAAhB,SAAAY,QAAA;CA4BH,IAAA,EAAAC,OAAApC,OAAAyC,YAAuBN;CAoBtB,OAlBIC,QAUD/C,OAAOW,QAAKN,YAAa,UAAU,IAEnC,oBAAC,MAAD;EAAS,IAAA;EAAkB,SAAA;EAAW,QAAA;YACpC,oBAAC,MAAD;GAAY,MAAA;GAAU,QAAA;aAAW;EAA5B,CAAA;CADF,CAAA,IASP,oBAAC,MAAD;EAAS,IAAA;EAAkB,SAAA;EAAW,QAAA;YACpC,qBAAC,MAAD;GAAW,KAAA;aAAX,CACE,oBAAC,MAAD;IAAY,MAAA;cACV,oBAAA,QAAA,MAAA,CAAA,CAAA;GADG,CAAA,GAIL,oBAAC,YAAD,EAAmBM,OAAAA,QAAK,CAAA,CALrB;;CADF,CAAA,IAnBH,oBAAC,MAAD;EAAS,IAAA;EAAkB,SAAA;EAAW,QAAA;YACpC,oBAAC,MAAD;GAAM,QAAA;GAAa,MAAA;aAChBmC,OAAMC;EADJ,CAAA;CADF,CAAA;AA2BA;AA3DN,SAAAhB,SAAAsB,SAAA;CAAA,OAuBkB;EAAAN,OAAQpC,QAAKc;EAAId,OAAEA;CAAK;AAAC;AAvB3C,SAAAkB,QAAAyB,KAAA;CAAA,OAsBgB,CAACtD,OAAOwB,IAACnB,YAAa,WAAW;AAAC;AAuEzD,SAAOkD,WAAA1C,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAyC,IAAAC,IAAAC,YAAAzC,IAAAI,IAAAE,IAAAK,IAAAY;CAAA,AAAA1B,EAAA,OAAAD,MAAAF,MAAAsC,SA2BGO,KAAA1C,EAAA,IAAA2C,KAAA3C,EAAA,IAAA4C,aAAA5C,EAAA,IAAAG,KAAAH,EAAA,IAAAO,KAAAP,EAAA,IAAAS,KAAAT,EAAA,IAAAc,KAAAd,EAAA,IAAA0B,KAAA1B,EAAA,OA1BR4C,aAAmB7C,MAAKF,MAAMsC,MAAMU,MAAO,GAAG,GAE3CF,KAAAlE,KAASiD,KAAA,QACPgB,KAAAhE,aAAWsB,EAAA,OAAA8C,OAAAC,IAAA,2BAAA,KACH5C,KAAA;EAAA6C,SACI;EAAMC,UACL;EAAMC,YACJ;EAAQC,WACT;CACb,GAACnD,EAAA,KAAAG,MAAAA,KAAAH,EAAA,IAAAA,EAAA,QAAA8C,OAAAC,IAAA,2BAAA,KAECxC,KAAA,oBAAC,KAAD;EAAgB,WAAA;YACd,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;aAAG;EAAhB,CAAA;CADH,CAAA,GAIEP,EAAA,MAAAO,MAAAA,KAAAP,EAAA,KAEHS,KAAA,GAEJK,KAAA8B,WAAUQ,MAAO,GAAGR,WAAUS,SAAU,CAAC,CAAC,CAAArC,IAAKsC,MAO/C,GAACtD,EAAA,KAAAD,MAAAF,MAAAsC,OAAAnC,EAAA,KAAA0C,IAAA1C,EAAA,KAAA2C,IAAA3C,EAAA,KAAA4C,YAAA5C,EAAA,KAAAG,IAAAH,EAAA,KAAAO,IAAAP,EAAA,KAAAS,IAAAT,EAAA,KAAAc,IAAAd,EAAA,KAAA0B;CAGG,IAAAC,KAAAiB,WAAWA,WAAUS,SAAU,IAAEE;CAAA,AAAAvD,EAAA,QAAA2B,KAEhC4B,KAAAvD,EAAA,OAJNuD,KAAA,oBAAC,KAAD;EAAgB,WAAA;YACd,oBAAC,MAAD;GAAY,MAAA;GAAU,QAAA;aACnB5B;EADE,CAAA;CADH,CAAA,GAIE3B,EAAA,MAAA2B,IAAA3B,EAAA,MAAAuD;CAAA,IAAAC;CAAA,AAAAxD,EAAA,QAAA0C,MAAA1C,EAAA,QAAAG,MAAAH,EAAA,QAAAO,MAAAP,EAAA,QAAAS,MAAAT,EAAA,QAAAc,MAAAd,EAAA,QAAAuD,MA5BRC,KAAA,qBAAC,IAAD;EACS,OAAArD;EAOL,WAAAI;EAMG,KAAAE;YAdP,CAgBGK,IAQDyC,EAxBU;KA6BEvD,EAAA,MAAA0C,IAAA1C,EAAA,MAAAG,IAAAH,EAAA,MAAAO,IAAAP,EAAA,MAAAS,IAAAT,EAAA,MAAAc,IAAAd,EAAA,MAAAuD,IAAAvD,EAAA,MAAAwD,MAAAA,KAAAxD,EAAA;CAAA,IAAAyD;CACV,OADUzD,EAAA,QAAA2C,MAAA3C,EAAA,QAAA0B,MAAA1B,EAAA,QAAAwD,MA9BhBC,KAAA,oBAAC,IAAD;EAAU,MAAA/B;YACR8B;CADE,CAAA,GA+BExD,EAAA,MAAA2C,IAAA3C,EAAA,MAAA0B,IAAA1B,EAAA,MAAAwD,IAAAxD,EAAA,MAAAyD,MAAAA,KAAAzD,EAAA,KA/BNyD;AA+BM;AAlCH,SAAAH,OAAAI,IAAAC,GAAA;CAAA,OAsBG,oBAAC,KAAD;EAAwB,WAAA;YACtB,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;aACfD,GAAEE,KAAM;EADN,CAAA;CADH,GAAMD,CAAN;AAIE;ACtIhB,SAAAK,YAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACE,CAAAC,MAAAC,UAAuBN,WAAWO,SAAc,CAAC,GAACC,IAAAC;CAK1C,OAL0CN,EAAA,OAAAD,MAK3CM,KAAAL,EAAA,IAAAM,KAAAN,EAAA,OAHGK,WAAA;EACR,IAAAE,IAAUC,YAAYL,QAAQJ,EAAE;EAAC,aACpBU,cAAcF,CAAC;CAAC,GAC5BD,KAAA,CAACP,EAAE,GAACC,EAAA,KAAAD,IAAAC,EAAA,KAAAK,IAAAL,EAAA,KAAAM,KAHPV,UAAUS,IAGPC,EAAI,GACAJ;AAAI;AAPb,SAAAE,QAAAM,GAAA;CAAA,OAC2CA,IAAI;AAAC;AAShD,SAAOC,QAAAN,IAAA;CAAA,IAAAL,IAAAC,EAAA,CAAA,GAAiB,EAAAW,SAAAP;CACtBP,YAAY,GAAI;CAAC,IAAAQ;CAAA,AAAAN,EAAA,OAAAY,OACwDN,KAAAN,EAAA,MAAvDM,KAAAX,oBAAoBiB,OAAA,IAAWC,KAAKD,IAAiB,oBAAjC,IAA4BC,KAAK,CAAC,GAACb,EAAA,KAAAY,MAAAZ,EAAA,KAAAM;CAAzE,IAAAQ,YAAkBR,IAAuDS;CACpB,OADoBf,EAAA,OAAAc,YACpBC,KAAAf,EAAA,MAA9Ce,KAAA,qBAAA,QAAA;EAAaD,OAAAA;YAAb,CAAyBA,WAAU,MAAW;KAAAd,EAAA,KAAAc,WAAAd,EAAA,KAAAe,KAA9CA;AAA8C;ACwBvD,MAAM4C,SAASnB,SAAS,2DASlBoB,mBAAmBnB,OAAOrB,QAAQ,CAAC,CAAA,WAAA;;;eAC1BuC,OAAM,uBAGfE,cAAc;CAClBC,SAAS;EACPJ,OAAO;EACPK,MAAM7C;EACN8C,MAAM;CACR;CACAC,OAAO;EACLP,OAAO;EACPK,MAAM5C;EACN6C,MAAM;CACR;CACAE,SAAS;EACPR,OAAO;EACPK,MAAM/C;EACNgD,MAAM;CACR;CACAG,SAAS;EACPT,OAAO;EACPK,MAAM9C;EACN+C,MAAM;CACR;AACF;AAEA,SAAgBK,6BAA6BC,OAA0C;CACrF,IAAM,EAACjB,OAAOC,cAAcF,YAAYG,eAAce,OAEhDC,SAAShC,UAAU,EAACiC,YAAY,aAAY,CAAC,GAC7CC,YAAYxC,aACfyC,YAAoB;EACnB,IAAI,CAACtB,YACH;EAEF,IAAMuB,cAAc9B,oBAAoBO,UAAU,GAC5CwB,WAAW,GAAGtC,MAA+B,OAAO,EAAC,UAAWoC,QAAO;EAC7EH,OACGM,MAAMF,WAAW,CAAC,CAClBG,IAAI;IACF,GAAGF,SAAQ,GAAItC,MAA6B,OAAO,uBAAM,IAAIyC,KAAK,EAAA,CAAEC,YAAY;IAChF,GAAGJ,SAAQ,GAAItC,MAA6B,QAAQ,MACnDA,MAAuB,SAAS;EACpC,CAAC,CAAC,CACD2C,OAAO,CAAC,CACRC,MAAMC,QAAQlB,KAAK;CACxB,GACA,CAACM,QAAQnB,UAAU,CACrB,GAEMgC,cAAclD,cAAc;EAChC,IAAMmD,IACJhC,OACIiC,QACCC,SACCA,KAAKC,4BACL,IAAIT,KAAK,EAAA,CAAEU,QAAQ,IAAI,IAAIV,KAAKQ,KAAKC,OAAO,CAAC,CAACC,QAAQ,IAAI9C,sBAC9D,CAAA,CAEC+C,KAAKH,WAAoC;GACxC,IAAMI,cAAcrC,cAAcsC,MAAMC,MAAMA,EAAEC,SAASP,OAAKQ,cAAc;GAC5E,OAAO;IACL,GAAGR;IACH7B,OAAOH,aAAcgC,OAAK7B,SAASZ,oBAAoB6C,WAAW,IAAKK,KAAAA;IACvEvC,cAAcgB,UAAUc,OAAKO,IAAI;GACnC;EACF,CAAC,KAAK,CAAA;EAEV,OADAT,EAAEY,MAAMC,GAAGC,MAAM,IAAIpB,KAAKoB,EAAEX,WAAW,EAAE,CAAC,CAACC,QAAQ,IAAI,IAAIV,KAAKmB,EAAEV,WAAW,EAAE,CAAC,CAACC,QAAQ,CAAC,GACnFJ;CACT,GAAG;EAAChC;EAAOC;EAAcmB;EAAWlB;CAAU,CAAC,GAIzC6C,YAAYlE,cAAckD,YAAYiB,MAAMC,MAAM,CAACA,EAAEC,KAAK,GAAG,CAACnB,WAAW,CAAC,GAC1EoB,YAAYtE,cACVkD,YAAYiB,MAAMC,QAAMA,IAAEG,WAAW,WAAWH,IAAEG,WAAW,SAAS,GAC5E,CAACrB,WAAW,CACd,GAEM,CAACsB,MAAMC,WAAWxE,SAAS,EAAK,GAEhCyE,aAAa3E,kBAAkB0E,SAASE,MAAM,CAACA,CAAC,GAAG,CAAA,CAAE,GAErD,CAACC,QAAQC,aAAa5E,SAAmC,IAAI,GAC7D,CAAC8E,SAASC,cAAc/E,SAAgC,IAAI;CAclE,OAPAN,gBAL2BI,kBAAkB;EAC3C0E,QAAQ,EAAK;CACf,GAAG,CAAA,CAGaS,GAAoB,CAACN,QAAQG,OAAO,CAAC,GAQnD,oBAAC,SAAD;EACE,eAAA;EACA,SAAS,oBAAC,UAAD;GAAU,UARFhF,kBAAkB;IAErC6E,AADAH,QAAQ,EAAK,GACbG,QAAQQ,MAAM;GAChB,GAAG,CAACR,MAAM,CAKuBO;GAAc,OAAOjC;EAAY,CAAA;EAC9D,MAAMsB,QAAQ,CAAC,CAACtB,aAAamC;EAC7B,WAAU;EACV,QAAA;EACA,KAAKL;EACL,OAAO;YAEP,oBAAC,kBAAD;GACE,UAAU,CAAC9B,aAAamC;GACbf;GACAJ;GACX,SAASQ;GACT,KAAKG;GACL,UAAUL;EAAK,CAAA;CAEV,CAAA;AAEb;AAEA,MAAMc,mCAAmF,EACvFE,WAAW,MACb;AAEA,SAAAC,iBAAArD,OAAA;CAAA,IAAAsD,IAAAC,EAAA,CAAA,GAQE,EAAAC,UAAAtB,WAAAJ,WAAA2B,SAAAC,UAAAC,QAAiE3D,OAMvD4D,KAAA9B,YAAAxC,mBAA+B4C,YAAArF,mBAAAH,qBAG/BmH,KAAA3B,YAAA,aAAAR,KAAAA,GAAkCoC;CAKxC,OALwCR,EAAA,OAAAE,YAAAF,EAAA,OAAAG,WAAAH,EAAA,OAAAK,OAAAL,EAAA,OAAAI,YAAAJ,EAAA,OAAAM,MAAAN,EAAA,OAAAO,MAN1CC,KAAA,oBAAC,cAAD;EACS,OAAA,GAAGxF,YAAW;EACT,cAAA,GAAGA,YAAW;EACpB,MAAAsF;EACD,MAAA;EACIH;EACH,MAAAI;EACIL;EACLG;EACKD;EACIR,cAAAA;CAAgC,CAAA,GAC9CI,EAAA,KAAAE,UAAAF,EAAA,KAAAG,SAAAH,EAAA,KAAAK,KAAAL,EAAA,KAAAI,UAAAJ,EAAA,KAAAM,IAAAN,EAAA,KAAAO,IAAAP,EAAA,KAAAQ,MAAAA,KAAAR,EAAA,IAXFQ;AAWE;AAIN,SAAAC,SAAA/D,OAAA;CAAA,IAAAsD,IAAAC,EAAA,CAAA,GACE,EAAAS,UAAAjF,UAA0BiB,OAE1B,EAAAiE,eAAqBxG,SAAS,GAACmG;CAE/BpG,AAF+B8F,EAAA,OAAAW,cAAAX,EAAA,OAAAU,YAI3BJ,MAAAM,UAAA;EACE,AAAID,cAAcC,MAAKC,QAAS,YAC9BH,SAAS;CACV,GACFV,EAAA,KAAAW,YAAAX,EAAA,KAAAU,UAAAV,EAAA,KAAAM,MAAAA,KAAAN,EAAA,IANL9F,iBACEoG,EAQF;CAAC,IAAAC;CAAA,AAAAP,EAAA,OAAAvE,QAMK8E,KAAAP,EAAA,MAFDO,KAAA9E,MAAKqC,IAAKgD,OAEV,GAACd,EAAA,KAAAvE,OAAAuE,EAAA,KAAAO;CAAA,IAAAC;CACI,OADJR,EAAA,OAAAO,KACIC,KAAAR,EAAA,MAJRQ,KAAA,oBAAC,OAAD;EAAgB,SAAA;EAAQ,KAAA;YACrBD;CADG,CAAA,GAIEP,EAAA,KAAAO,IAAAP,EAAA,KAAAQ,KAJRA;AAIQ;AArBZ,SAAAM,QAAAnD,MAAA;CAAA,OAmBQ,oBAAC,UAAD,EAAgCA,KAAI,GAArBA,KAAIO,IAAiB;AAAI;AAMhD,SAAA6C,SAAArE,OAAA;CAAA,IAAAsD,IAAAC,EAAA,EAAA,GACE,EAAAtC,SAAejB,OAEfsE,WAAiBrD,KAAIkB,UAAW5C,YAAY0B,KAAIkB,SAChDoC,WAAiBD,WAAWA,SAAQ7E,OAAnB,MAEQmE,KAAAU,YAAYA,UAAQ5E,MAAMmE;CAAA,AAAAP,EAAA,OAAAiB,WAKdV,KAAAP,EAAA,MAAxBO,KAAAU,YAAY,oBAAC,UAAD,CAAS,CAAA,GAAGjB,EAAA,KAAAiB,UAAAjB,EAAA,KAAAO;CAAA,IAAAC;CAAA,AAAAR,EAAA,OAAArC,KAAAkB,SACG2B,KAAAR,EAAA,MAA3BQ,KAAA,CAAC7C,KAAIkB,UAAW,oBAAC,SAAD,CAAQ,CAAA,GAAGmB,EAAA,KAAArC,KAAAkB,QAAAmB,EAAA,KAAAQ;CAAA,IAAAU;CAAA,AAAAlB,EAAA,OAAAO,MAAAP,EAAA,OAAAQ,MAHhCU,KAAA,oBAAC,KAAD;EAAU,MAAA;YACR,qBAAC,MAAD;GAAY,MAAA;aAAZ,CACGX,IACAC,EAFE;;CADH,CAAA,GAKER,EAAA,KAAAO,IAAAP,EAAA,KAAAQ,IAAAR,EAAA,KAAAkB,MAAAA,KAAAlB,EAAA;CAGD,IAAAmB,KAAAH,WAAWA,SAAQlF,QAAnB,WAAqCsF;CAAA,AAAApB,EAAA,OAAArC,KAAA7B,QACJsF,KAAApB,EAAA,MAAjCoB,KAAAzD,KAAI7B,SAAJ,qBAAA,UAAA,EAAA,UAAA,CAAgB,MAAG6B,KAAI7B,KAAM,EAAA,CAAA,GAAIkE,EAAA,KAAArC,KAAA7B,OAAAkE,EAAA,KAAAoB;CAAA,IAAAC;CAAA,AAAArB,EAAA,OAAAmB,MAAAnB,EAAA,QAAAoB,MAFpCC,KAAA,qBAAC,MAAD;EAAY,MAAA;EAAU,QAAA;YAAtB,CACGF,IACAC,EAFE;KAGEpB,EAAA,KAAAmB,IAAAnB,EAAA,MAAAoB,IAAApB,EAAA,MAAAqB,MAAAA,KAAArB,EAAA;CAAA,IAAAsB;CAAA,AAAAtB,EAAA,QAAArC,KAAA4D,UACoDD,KAAAtB,EAAA,OAA1DsB,KAAA3D,KAAI4D,UAAW,oBAAC,MAAD;EAAY,MAAA;YAAI5D,KAAI4D;CAAf,CAAA,IAApB,MAA0DvB,EAAA,MAAArC,KAAA4D,SAAAvB,EAAA,MAAAsB;CAE1C,IAAAE,KAAA7D,KAAIgB,SAAUhB,KAAIC,SAAQ6D;CAAA,AAAAzB,EAAA,QAAAwB,KACpCC,KAAAzB,EAAA,OAFPyB,KAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;YAChB,oBAAC,SAAD,EAAe,MAAAD,GAA0B,CAAA;CADtC,CAAA,GAEExB,EAAA,MAAAwB,IAAAxB,EAAA,MAAAyB;CAAA,IAAAC;CAAA,AAAA1B,EAAA,QAAAqB,MAAArB,EAAA,QAAAsB,MAAAtB,EAAA,QAAAyB,MARTC,MAAA,qBAAC,OAAD;EAAa,MAAA;EAAQ,KAAA;YAArB;GACEL;GAICC;GACDG;EANI;KASEzB,EAAA,MAAAqB,IAAArB,EAAA,MAAAsB,IAAAtB,EAAA,MAAAyB,IAAAzB,EAAA,MAAA0B,OAAAA,MAAA1B,EAAA;CAAA,IAAA2B;CAAA,AAAA3B,EAAA,QAAA0B,OAAA1B,EAAA,QAAAkB,MAhBVS,MAAA,qBAAC,MAAD;EAAY,OAAA;EAAmB,MAAA;EAAQ,KAAA;EAAY,SAAA;YAAnD,CACET,IAMAQ,GAPG;KAiBE1B,EAAA,MAAA0B,KAAA1B,EAAA,MAAAkB,IAAAlB,EAAA,MAAA2B,OAAAA,MAAA3B,EAAA;CAAA,IAAA4B;CAAA,AAAA5B,EAAA,QAAArC,KAAA9B,UAAAmE,EAAA,QAAArC,KAAAgB,SAENiD,MAAA,CAACjE,KAAIgB,SACJ,oBAAC,KAAD;EAAU,MAAA;EAAgB,SAAA;YACxB,oBAAC,QAAD;GAAkB,UAAA;GAAQ,MAAA;GAAiB,SAAAhB,KAAI9B;GAAc,MAAA;EAAQ,CAAA;CADnE,CAAA,GAGLmE,EAAA,MAAArC,KAAA9B,QAAAmE,EAAA,MAAArC,KAAAgB,OAAAqB,EAAA,MAAA4B,OAAAA,MAAA5B,EAAA;CAAA,IAAA6B;CAAA,AAAA7B,EAAA,QAAA2B,OAAA3B,EAAA,QAAA4B,OAxBHC,MAAA,qBAAC,MAAD;EAAY,OAAA;EAAc,KAAA;YAA1B,CACEF,KAmBCC,GApBE;KAyBE5B,EAAA,MAAA2B,KAAA3B,EAAA,MAAA4B,KAAA5B,EAAA,MAAA6B,OAAAA,MAAA7B,EAAA;CAAA,IAAA8B;CACF,OADE9B,EAAA,QAAAM,MAAAN,EAAA,QAAA6B,OA1BTC,MAAA,oBAAC,MAAD;EAAc,QAAA;EAAS,MAAAxB;YACrBuB;CADG,CAAA,GA2BE7B,EAAA,MAAAM,IAAAN,EAAA,MAAA6B,KAAA7B,EAAA,MAAA8B,OAAAA,MAAA9B,EAAA,KA3BP8B;AA2BO;ACxNX,MAAMiD,sBAAsB1B,OAAOhB,IAAI,CAAC,CAAA,WAAA;;;gLAgBlC2C,sBAAsB3B,OAAOhB,IAAI,CAAC,CAAA,WAAA;;;;AAgBxC,SAAO4C,uBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACLC,UAAgB1B,sBAAsB;CAEtC,IAAI0B,QAAOC,eAAc;EAAA,IAAAC;EASd,OATcJ,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAErBF,KAAA,oBAAC,MAAD;GAAY,OAAA;GAAgB,QAAA;GAAe,SAAA;GAAkB,SAAA;GAAU,QAAA;aACrE,qBAAC,OAAD;IAAY,KAAA;IAAU,OAAA,EAAAG,WAAY,SAAQ;cAA1C,CACE,oBAAC,SAAD,EAAS,OAAA,GAAK,CAAA,GACd,qBAAC,MAAD;KAAM,OAAA;KAAY,MAAA;eAAlB;MAAqB;MACV7B;MAAY;KADlB;MAFD;;EADH,CAAA,GAOEsB,EAAA,KAAAI,MAAAA,KAAAJ,EAAA,IAPPI;CAOO;CAIX,IAAAI,SAAeN,QAAOM;CAEtB,IAAI,CAACA,QAAMC,SAAS;EAAA,IAAAL;EAAA,AAAAJ,EAAA,OAAAD,MAAAW,UAOZN,KAAAJ,EAAA,MAJFI,KAAA,oBAAC,yBAAD;GACmB,kBAAA;GACR,SAAAL,MAAKW;GACPhC,OAAAA;EAAW,CAAA,GAClBsB,EAAA,KAAAD,MAAAW,SAAAV,EAAA,KAAAI;EAAA,IAAAO;EAAA,AAAAX,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAGAK,KAAA,qBAAC,MAAD;GAAS,IAAA;GAAU,MAAA;GAAU,QAAA;aAA7B,CACGjC,aAAY,mBADV;MAEEsB,EAAA,KAAAW,MAAAA,KAAAX,EAAA;EAAA,IAAAY;EAAA,AAAAZ,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAILM,KAAA,oBAAA,KAAA;GAAShC,MAAAA;GAAiB,QAAA;GAAa,KAAA;aAAa;EAEhD,CAAA,GAAAoB,EAAA,KAAAY,MAAAA,KAAAZ,EAAA;EAAA,IAAAa;EAAA,AAAAb,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KATRO,KAAA,qBAAC,OAAD;GAAa,MAAA;GAAY,UAAA;GAAgB,SAAA;GAAQ,KAAA;aAAjD,CACEF,IAIA,qBAAC,MAAD;IAAS,IAAA;IAAI,OAAA;IAAY,MAAA;cAAzB;KAA4B;KAC2B;KACrDC;KAEK;KAAI;KACYlC;KAAY;KAAE;KACnC,oBAAA,KAAA;MAASC,MAAAA;MAA+B,QAAA;MAAa,KAAA;gBAAa;KAE9D,CAAA;IARD;KALD;MAeEqB,EAAA,KAAAa,MAAAA,KAAAb,EAAA;EAAA,IAAAc;EACH,OADGd,EAAA,OAAAI,KACHU,KAAAd,EAAA,MAvBPc,KAAA,qBAAC,MAAD;GAAgB,WAAA;GAAgB,QAAA;aAAhC,CACEV,IAMAS,EAPG;MAuBEb,EAAA,KAAAI,IAAAJ,EAAA,KAAAc,KAvBPA;CAuBO;CAIX,IAAI,CAACN,QAAMO,eAAP,CAAyBP,OAAMQ,YAAW;EAAA,IAAAZ;EAAA,AAAAJ,EAAA,OAAAD,MAAAW,UAOtCN,KAAAJ,EAAA,MAJFI,KAAA,oBAAC,yBAAD;GACmB,kBAAA;GACR,SAAAL,MAAKW;GACPhC,OAAAA;EAAW,CAAA,GAClBsB,EAAA,KAAAD,MAAAW,SAAAV,EAAA,KAAAI;EAAA,IAAAO;EAAA,AAAAX,EAAA,QAAAE,QAAAe,QAOQN,KAAAX,EAAA,OAJPW,KAAAT,QAAOe,QACN,qBAAC,MAAD;GAAY,MAAA;GAAU,QAAA;aAAtB,CAAiC,oBACdvC,WADd;OADN,MAIOsB,EAAA,MAAAE,QAAAe,OAAAjB,EAAA,MAAAW;EAAA,IAAAC;EAAA,AAAAZ,EAAA,QAAAE,QAAAe,SAAAjB,EAAA,QAAAQ,QAAAO,eAEPH,KAAA,CAACV,QAAOe,SAAR,CAAmBT,QAAMO,cACxB,qBAAC,MAAD;GAAY,MAAA;GAAU,QAAA;aAAtB,CACGrC,aAAY,iBADV;OADN,MAIOsB,EAAA,MAAAE,QAAAe,OAAAjB,EAAA,MAAAQ,QAAAO,aAAAf,EAAA,MAAAY,MAAAA,KAAAZ,EAAA;EAAA,IAAAa;EAAA,AAAAb,EAAA,QAAAE,QAAAe,SAAAjB,EAAA,QAAAQ,UAEPK,KAAA,CAACX,QAAOe,SAAUT,QAAMO,eAAxB,CAA0CP,OAAMQ,aAAhD,qBAAA,UAAA,EAAA,UAAA,CAEG,oBAAC,MAAD;GAAY,MAAA;GAAU,QAAA;aAAW;EAA5B,CAAA,GAGL,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;aAAG;EAAhB,CAAA,CAEE,EAAA,CAAA,IAPV,MASOhB,EAAA,MAAAE,QAAAe,OAAAjB,EAAA,MAAAQ,QAAAR,EAAA,MAAAa,MAAAA,KAAAb,EAAA;EAAA,IAAAc;EAAA,AAAAd,EAAA,QAAAE,QAAAe,QAMPH,KAAAd,EAAA,OAJAc,KAAAZ,QAAOe,SACN,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;aAAG;EAAhB,CAAA,GAGNjB,EAAA,MAAAE,QAAAe,OAAAjB,EAAA,MAAAc;EAAA,IAAAI;EAAA,AAAAlB,EAAA,QAAAE,QAAAe,SAAAjB,EAAA,QAAAQ,QAAAO,eAEAG,KAAA,CAAChB,QAAOe,SAAR,CAAmBT,QAAMO,eACxB,qBAAC,MAAD;GAAY,MAAA;GAAG,OAAA;aAAf;IAAqB;;IACQ;GADxB;MAGNf,EAAA,MAAAE,QAAAe,OAAAjB,EAAA,MAAAQ,QAAAO,aAAAf,EAAA,MAAAkB,MAAAA,KAAAlB,EAAA;EAAA,IAAAmB;EAAA,AAAAnB,EAAA,QAAAE,QAAAe,SAAAjB,EAAA,QAAAE,QAAAkB,eAKGD,KAAAjB,QAAOkB,cACL,oBAAC,KAAD;GAAgB,WAAA;aACd,oBAAC,SAAD,CAAQ,CAAA;EADN,CAAA,IAGFlB,QAAOe,QAAPlE,YAAAsE,KAAAA,GAESrB,EAAA,MAAAE,QAAAe,OAAAjB,EAAA,MAAAE,QAAAkB,aAAApB,EAAA,MAAAmB,MAAAA,KAAAnB,EAAA;EAGb,IAAAsB,KAAApB,QAAOe,QAAP,UAEIT,QAAMO,eAAN,CAAwBP,OAAMQ,aAA9B,WACatC,gBADb,UAEYA,YAAW,OAAM6C;EAAA,AAAAvB,EAAA,QAAAE,QAAAsB,QAAAxB,EAAA,QAAAE,QAAAkB,eAAApB,EAAA,QAAAmB,MAAAnB,EAAA,QAAAsB,MAhBrCC,KAAA,oBAAC,QAAD;GACY,UAAA;GAER,MAAAJ;GASA,MAAAG;GAMG,MAAA;GACI,SAAApB,QAAOsB;GACN,UAAAtB,QAAOkB;EAAY,CAAA,GAC7BpB,EAAA,MAAAE,QAAAsB,MAAAxB,EAAA,MAAAE,QAAAkB,aAAApB,EAAA,MAAAmB,IAAAnB,EAAA,MAAAsB,IAAAtB,EAAA,MAAAuB,MAAAA,KAAAvB,EAAA;EAAA,IAAAyB;EAAA,AAAAzB,EAAA,QAAAW,MAAAX,EAAA,QAAAY,MAAAZ,EAAA,QAAAa,MAAAb,EAAA,QAAAc,MAAAd,EAAA,QAAAkB,MAAAlB,EAAA,QAAAuB,MAzDJE,KAAA,qBAAC,OAAD;GAAgB,SAAA;GAAQ,KAAA;aAAxB;IACGd;IAMAC;IAMAC;IAWAC;IAMAI;IAMDK;GApCI;MA0DEvB,EAAA,MAAAW,IAAAX,EAAA,MAAAY,IAAAZ,EAAA,MAAAa,IAAAb,EAAA,MAAAc,IAAAd,EAAA,MAAAkB,IAAAlB,EAAA,MAAAuB,IAAAvB,EAAA,MAAAyB,MAAAA,KAAAzB,EAAA;EAAA,IAAA0B;EACH,OADG1B,EAAA,QAAAI,MAAAJ,EAAA,QAAAyB,MAjEVC,MAAA,qBAAC,MAAD;GAAgB,WAAA;GAAgB,QAAA;aAAhC,CACEtB,IAMAqB,EAPG;MAkEEzB,EAAA,MAAAI,IAAAJ,EAAA,MAAAyB,IAAAzB,EAAA,MAAA0B,OAAAA,MAAA1B,EAAA,KAlEP0B;CAkEO;CAEV,IAAAtB;CAEoC,OAFpCJ,EAAA,QAAAD,QAEoCK,KAAAJ,EAAA,OAA9BI,KAAA,oBAAC,iBAAD,EAAgB,GAAKL,MAAK,CAAA,GAAIC,EAAA,MAAAD,OAAAC,EAAA,MAAAI,KAA9BA;AAA8B;AAGvC,SAASuB,gBAAgB5B,OAA+B;CACtD,IAAM,EAAC6B,WAAUpC,gBAAgB,GAE3BqC,WAAWpE,OAA8B,IAAI,GAC7CsE,UAAUH,SAASzC,iBACnB6C,iBAAiBJ,SAASxC,mBAC1B6C,eAAehE,gBAAgB,GAC/B,EACJiE,YACAC,cACAC,OAAOC,UACPC,YACAC,UAAUC,kBACVC,cACER,cAEE,EAACS,sBAAsBC,yBAAwBvE,yBAAyB,GAExEwE,eAAenF,OAAOgF,SAAS;CAErCG,aAAaC,UAAUJ;CAEvB,IAAM,EAACK,oBAAoBC,0BAAyBxE,yBAAyB;EAC3EiE;EACAQ,iBAAiBL;CACnB,CAAC,GAEKM,WAAWvD,YAAY2C,UAAUN,WAAW,EAAE,GAC9CmB,gBAAgBzD,iBAAiB6C,YAAYW,QAAQ,GAErDE,UAAUrE,iBAAiBqD,YAAY,GAEvCiB,iBAAiB9E,wBAAwB;EAAC4D;EAAYI;EAAYe,SAAS;CAAI,CAAC,GAEhFM,eADcP,gBAAgBG,QAAQC,MAAMC,MAAMA,EAAEC,SAAST,QAAQ,EAAA,EAC1CW,cAAcJ,MAAMK,MAAMA,EAAEC,SAAS9B,cAAc,GAC9E+B,QAAQvG,cAEV4F,gBAAgBW,OAAOC,QAAQH,QAAM,CAAC7B,kBAAkB6B,IAAE7B,mBAAmBA,cAAc,GAC7F,CAACoB,gBAAgBW,OAAO/B,cAAc,CACxC,GACM4B,eAAepG,cACb4F,gBAAgBG,QAAQU,SAASR,QAAMA,IAAEG,gBAAgB,CAAA,CAAE,GACjE,CAACR,gBAAgBG,MAAM,CACzB,GAEMW,cAAcP,aAAaQ,QAC3BC,gBAAgB5G,cAAc;EAClC,IAAI,CAAC0G,aAAaG,QAChB,OAAO;EAIT,IAAME,WADaL,YAAY,EACJ,EAAEK;EAE7B,OAAOL,YAAYG,UAAU,KAAKE,UAAUF,WAAW,KAAK,CAACE,WAAW,EAAE,EAAEC,MAAMH;CACpF,GAAG,CAACH,WAAW,CAAC,GAEVO,WAA6BjH,eAC1B;EACLkH,MAAM;EACNC,IAAIxB;EACJyB,OAAOlG;EACPmG,SAAS;GACPF,IAAIxB;GACJuB,MAAMxF;EACR;CACF,IACA,CAACiE,OAAO,CACV,GAEM2B,wBAAwBvH,kBAE1BoG,eACA5B,WACAkB,YACAF,sBAAsB;EACpBb,YAAYQ;EACZgB,MAAM3B;EACNkB;EACAnE,kBAAkBA,iBAAiBqD,YAAY;EAC/CwB;EACAoB,oBAAoBnC,aAAaC,UAAUhE,sBAAsB+D,aAAaC,OAAO,IAAI,CAAA;CAC3F,CAAC,GACH;EAACd;EAAS4B;EAAaV;EAAUd;EAAcO;EAAsBK;CAAqB,CAC5F,GAEMiC,SAASzH,aAAa0H,WASnB,oBAAC,OAAD;EAAK,GAAIA;EAAQ,OAAO;GAACC,QAAQ;GAAQC,MAAM;GAAGC,UAAU;EAAM;CAAE,CAAA,GAC1E,CAAA,CAAE,GAECC,oBAAoB7H,eAAe;EAACyF;EAAUd;CAAY,IAAI,CAACc,UAAUd,YAAY,CAAC;CAU5F,OARI,CAACD,cAAc,CAACI,cAAcA,WAAWgD,aAAa,WAEtD,oBAAC,MAAD;EAAM,MAAM;EAAG,SAAS;YACtB,oBAAC,MAAD,EAAA,UAAM,0BAA6B,CAAA;CAC/B,CAAA,IAKR,qBAAC,MAAD;EACE,KAAKzD;EACL,WAAU;EACV,QAAO;EACP,UAAS;EACT,QAAO;EACP,OAAO,EAAC0D,YAAY,EAAC;YANvB;GAQE,oBAAC,mBAAD;IACE,SAASxF,MAAMW;IACf,OAAOwC;IACP,YAAY3D,cAAc2D,aAAa;GAAE,CAAA;GAG3C,oBAAC,MAAD;IAAM,IAAI8B;IAAQ,MAAM;IAAG,UAAS;cAClC,qBAAC,MAAD;KAAM,WAAU;KAAS,OAAO,EAACQ,WAAW,OAAM;eAAlD,CACE,oBAAC,KAAD;MAAK,MAAM;gBACT,oBAAC,iBAAD,EAAA,UACE,oBAAC,KAAD;OAAK,SAAS;iBACXtC,iBACC,oBAAC,kBAAkB,UAAnB;QAA4B,OAAOmC;kBACjC,oBAAC,mCAAD;SAEE,eAAexD,SAASgB;SACxB,kBAAkBhB;mBAElB,oBAAC,qBAAD;UAAqB,yBAAyBR,KAAAA;oBAC5C,oBAAC,sBAAD;WACE,SAASY,aAAawD;WACtB,OAAOxD,aAAayD;WACpB,QAAO;WACP,MAAMjB;qBAEN,oBAAC,cAAD,CAAa,CAAA;UACO,CAAA;SACH,CAAA;QACY,CAAA;OACT,CAAA;MAE3B,CAAA,EACU,CAAA;KACd,CAAA,GAEL,oBAAC,KAAD;MAAK,MAAK;MAAO,SAAS;gBACxB,qBAAC,MAAD;OAAM,OAAA;OAAM,MAAM;iBAAlB;QAAoB;QACuB;QACzC,qBAAC,KAAD;SACE,MAAMhG;SACN,QAAO;SACP,KAAI;SACJ,OAAO,EAACkH,YAAY,SAAQ;mBAJ9B,CAIgC,gBAElB,oBAAC,gBAAD,CAAe,CAAA,CAC1B;;OACC;;KACH,CAAA,CACD;;GACF,CAAA;GACN,oBAAC,qBAAD;IAAqB,MAAK;IAAO,UAAU;IAAG,UAAU;IAAG,OAAO,EAACC,aAAa,WAAU;cACxF,qBAAC,MAAD;KAAM,KAAK;KAAG,MAAM;KAAG,SAAQ;eAA/B,CACGtD,YAAYuD,QAAQ9D,WAAWC,kBAC9B,oBAAC,OAAD;MAAO,MAAM;gBACX,oBAAC,QAAD;OACE,MAAK;OACL,UAAUoC,iBAAiBtB;OAC3B,UAAU;OACV,MAAMA,qBAAqB,oBAAC,SAAD,EAAS,OAAO,EAACgD,WAAW,EAAC,EAAE,CAAA,IAAMhJ;OAChE,SAASgI;OACT,SAAS;OACT,MAAM;MAAkB,CAAA;KAErB,CAAA,GAGT,oBAAC,8BAAD;MACE,YAAYpC;MACLqB;MACOH;MACd,YAAY,CAAC5B;KAAe,CAAA,CAE1B;;GACa,CAAA;EACjB;;AAEV;AAEA,SAAA+D,kBAAAhG,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACE,EAAAS,SAAAsF,OAAAC,eAAqClG,OACrC,EAAAmG,gBAAAC,sBAA4ClH,qBAAqBD,oDAAsB,GAACoB;CAAA,AAAAJ,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAMhCF,KAAA,EAAA0F,WAAY,OAAM,GAAC9F,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAAA,IAAAW;CAAA,AAAAX,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KACjEK,KAAA,oBAAC,KAAD;EAAgB,WAAA;YACd,oBAAC,MAAD;GAAY,MAAA;GAAU,QAAA;aAAW;EAA5B,CAAA;CADH,CAAA,GAIEX,EAAA,KAAAW,MAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,AAAAZ,EAAA,OAAAgG,SAAAhG,EAAA,OAAAiG,cANVrF,KAAA,oBAAC,MAAD;EAAY,MAAA;EAAY,SAAA;EAAQ,KAAA;EAAS,OAAA;YACvC,qBAAC,MAAD;GAAW,KAAA;GAAS,OAAA;GAAc,MAAA;GAAc,OAAAR;aAAhD,CACEO,IAKA,oBAAC,MAAD;IAAc,QAAA;IAAG,QAAA;IAAgB,SAAA;IAAc,WAAA;cAC5CqF,QACC,oBAAC,YAAD,EAAmBA,MAAK,CAAA,IAExB,oBAAC,MAAD;KAAY,MAAA;KAAU,QAAA;eACnBC;IADE,CAAA;GAJJ,CAAA,CANF;;CADF,CAAA,GAiBEjG,EAAA,KAAAgG,OAAAhG,EAAA,KAAAiG,YAAAjG,EAAA,KAAAY,MAAAA,KAAAZ,EAAA;CAAA,IAAAa;CAAA,AAAAb,EAAA,OAAAU,UAGDG,KAAAb,EAAA,MAFNa,KAAA,oBAAC,KAAD;EAAU,MAAA;YACR,oBAAC,QAAD;GAAkB,UAAA;GAAShE,MAAAA;GAAgB,MAAA;GAAiB6D,SAAAA;EAAO,CAAA;CADjE,CAAA,GAEEV,EAAA,KAAAU,SAAAV,EAAA,KAAAa;CAAA,IAAAC;CAAA,AAAAd,EAAA,OAAAY,MAAAZ,EAAA,OAAAa,MArBRC,KAAA,qBAAC,MAAD;EAAY,MAAA;EAAS,OAAA;YAArB,CACEF,IAkBAC,EAnBG;KAsBEb,EAAA,KAAAY,IAAAZ,EAAA,KAAAa,IAAAb,EAAA,KAAAc,MAAAA,KAAAd,EAAA;CAAA,IAAAkB;CAAA,AAAAlB,EAAA,QAAAmG,qBAAAnG,EAAA,QAAAkG,kBAENhF,KAAAgF,kBAAkB,oBAAC,qBAAD,EAAgCC,WAAAA,kBAAiB,CAAA,GAAInG,EAAA,MAAAmG,mBAAAnG,EAAA,MAAAkG,gBAAAlG,EAAA,MAAAkB,MAAAA,KAAAlB,EAAA;CAAA,IAAAmB;CACpD,OADoDnB,EAAA,QAAAc,MAAAd,EAAA,QAAAkB,MAzB1EC,KAAA,qBAAC,qBAAD;EAA0B,MAAA;EAAgB,SAAA;YAA1C,CACEL,IAwBCI,EAzBiB;KA0BElB,EAAA,MAAAc,IAAAd,EAAA,MAAAkB,IAAAlB,EAAA,MAAAmB,MAAAA,KAAAnB,EAAA,KA1BtBmB;AA0BsB;ACta1B,MAAa,gBAAgB,iBCQhB0F,kBAAqC;CAChDC,MAAMF;CACNG,oBAAoB;EAClBC,MAAMZ;EACNa,OAAOV;EACPW,QAAQ;EACRC,cAAc;CAChB;CACAC,WAAWT;CACXU,QAAQ,EAACC,UAAS;EAChB,OAAO,EAELA,QAAQhB,MAAkC;GACxC,GAAGgB;IACFb,iBAAiBc,KAAAA;IACjBb,mBAAmBa,KAAAA;EACtB,CAAC,EACH;CACF;AACF;ACzBA,SAAgBE,UAAUC,SAA2BC,GAAWC,GAAWC,KAAqB;CAC9F,OAAO;EACL,KAAKF,IAAID,QAAQI,MAAMC,KAAI,GAAIH,IAAIF,QAAQI,MAAMC,OAAOF,IAAG;EAC3D,KAAKF,EAAC,GAAIC;EACV,KAAKD,IAAID,QAAQI,MAAMC,KAAI,GAAIH,IAAIF,QAAQI,MAAMC,OAAOF;CAAK,CAC9D,CAACG,KAAK,EAAE;AACX;ACNA,SAASG,OAAOC,GAAWC,GAAW;CACpC,OAAO,IAAID,EAAC,GAAIC;AAClB;AAEA,SAASC,OAAOF,GAAWC,GAAW;CACpC,OAAO,IAAID,EAAC,GAAIC;AAClB;AAEA,SAASE,KAAKC,SAAmBC,QAAQ,IAAI;CAC3C,OAAOD,QAAQD,KAAKE,KAAK;AAC3B;AAEA,SAASC,UAAUC,IAAYC,IAAYR,GAAWC,GAAW;CAC/D,OAAO,IAAIM,GAAE,GAAIC,GAAE,GAAIR,EAAC,GAAIC;AAC9B;AAEA,SAAgBQ,kBAAkBC,SAA2BC,MAA6B;CACxF,IAAM,EAACC,iBAAgBF,QAAQG,MACzB,EAACC,MAAMC,OAAMJ,MACb,EAACX,GAAGgB,OAAOf,GAAGgB,UAASH,MACvB,EAACd,GAAGkB,MAAMjB,GAAGkB,QAAOJ,IAEpBK,MAAMF,OAAO,GAGbG,WAAWN,GAAGO,OAAOtB,IAAIU,QAAQa,QAAQC,SAGzCC,YAAYX,KAAKY,WAAWZ,KAAKa,UAAUX,QAAQN,QAAQkB,MAAMC,UAAUb,OAG3Ec,KAAKC,KAAKC,IAAIpB,cAAcmB,KAAKE,IAAIR,YAAYJ,QAAQ,IAAI,CAAC,GAC9Da,KAAKH,KAAKC,IAAIpB,cAAcmB,KAAKE,IAAIhB,QAAQE,GAAG,IAAI,CAAC,GAErDgB,OAAiB,CAAA;CA2FvB,OAxFIrB,KAAKY,UACPS,KAAKC,KACHrC,OACEiB,QAAQN,QAAQkB,MAAMC,SACtBZ,QAAQP,QAAQkB,MAAMS,YAAY3B,QAAQkB,MAAMU,OAClD,GACApC,OAAOc,QAAQN,QAAQkB,MAAMC,SAASZ,QAAQa,EAAE,GAChDxB,UAAUU,QAAQN,QAAQkB,MAAMC,SAASZ,OAAOD,QAAQN,QAAQkB,MAAMC,UAAUC,IAAIb,KAAK,CAC3F,IACSH,KAAKa,UACdQ,KAAKC,KACHrC,OACEiB,QAAQN,QAAQkB,MAAMC,SACtBZ,QAAQP,QAAQkB,MAAMS,YAAY3B,QAAQkB,MAAMU,OAClD,GACApC,OAAOc,QAAQN,QAAQkB,MAAMC,SAASZ,QAAQa,EAAE,GAChDxB,UAAUU,QAAQN,QAAQkB,MAAMC,SAASZ,OAAOD,QAAQN,QAAQkB,MAAMC,UAAUC,IAAIb,KAAK,CAC3F,IAEAkB,KAAKC,KAAKrC,OAAOiB,OAAOC,KAAK,CAAC,GAI5BF,GAAGW,UACDT,QAAQF,GAAGO,OAAOrB,IACpBkC,KAAKC,KACHlC,OAAOmB,WAAWa,IAAIjB,KAAK,GAC3BX,UAAUe,UAAUJ,OAAOI,UAAUJ,QAAQiB,EAAE,GAC/ChC,OAAOmB,UAAUF,MAAMe,EAAE,GACzB5B,UAAUe,UAAUF,KAAKE,WAAWa,IAAIf,GAAG,GAC3CjB,OAAOmB,WAAWT,cAAcO,GAAG,GACnCb,UAAUe,UAAUF,KAAKE,UAAUF,MAAMP,YAAY,GACrDV,OAAOmB,UAAUF,MAAMT,QAAQkB,MAAMS,YAAY3B,QAAQkB,MAAMU,OAAO,CACxE,IAEAH,KAAKC,KACHlC,OAAOmB,WAAWT,cAAcK,KAAK,GACrCX,UAAUe,UAAUJ,OAAOI,UAAUJ,QAAQL,YAAY,GACzDV,OAAOmB,UAAUF,MAAMT,QAAQkB,MAAMS,YAAY3B,QAAQkB,MAAMU,OAAO,CACxE,IAEOvB,GAAGY,UACRV,QAAQF,GAAGO,OAAOrB,IAAIc,GAAGO,OAAOiB,IAElCJ,KAAKC,KACHlC,OAAOmB,WAAWX,QAAQkB,MAAMC,UAAUK,IAAIjB,KAAK,GACnDX,UACEe,WAAWX,QAAQkB,MAAMC,SACzBZ,OACAI,WAAWX,QAAQkB,MAAMC,SACzBZ,QAAQiB,EACV,GACAhC,OAAOmB,WAAWX,QAAQkB,MAAMC,SAASV,MAAMe,EAAE,GACjD5B,UACEe,WAAWX,QAAQkB,MAAMC,SACzBV,KACAE,WAAWX,QAAQkB,MAAMC,UAAUK,IACnCf,GACF,GACAjB,OAAOmB,WAAWT,cAAcO,GAAG,GACnCb,UAAUe,UAAUF,KAAKE,UAAUF,MAAMP,YAAY,GACrDV,OAAOmB,UAAUF,MAAMT,QAAQkB,MAAMS,YAAY3B,QAAQkB,MAAMU,OAAO,CACxE,IAEAH,KAAKC,KACHlC,OAAOmB,WAAWT,cAAcK,KAAK,GACrCX,UAAUe,UAAUJ,OAAOI,UAAUJ,QAAQL,YAAY,GACzDV,OAAOmB,UAAUF,MAAMT,QAAQkB,MAAMS,YAAY3B,QAAQkB,MAAMU,OAAO,CACxE,IAEOrB,QAAQE,MACjBgB,KAAKC,KACHlC,OAAOmB,WAAWS,IAAIb,KAAK,GAC3BX,UAAUe,UAAUJ,OAAOI,UAAUJ,QAAQiB,EAAE,GAC/ChC,OAAOmB,UAAUF,MAAMe,EAAE,GACzB5B,UAAUe,UAAUF,KAAKE,WAAWa,IAAIf,GAAG,GAC3CjB,OAAOkB,KAAKD,GAAG,CACjB,IAEAgB,KAAKC,KACHlC,OAAOmB,WAAWU,KAAKC,IAAIF,IAAII,EAAE,GAAGjB,KAAK,GACzCX,UAAUe,UAAUJ,OAAOI,UAAUJ,QAAQc,KAAKC,IAAIF,IAAII,EAAE,CAAC,GAC7DhC,OAAOmB,UAAUF,MAAMe,EAAE,GACzB5B,UAAUe,UAAUF,KAAKE,WAAWa,IAAIf,GAAG,GAC3CjB,OAAOkB,KAAKD,GAAG,CACjB,GAGKhB,KAAKgC,IAAI;AAClB;ACxHA,SAAOa,cAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAKL,EAAAC,MAAAC,SAAAC,OAA4BL,OAC5B,EAAAM,gBAAsBF,QAAOG,MAC7BC,QAAchB,SAAS,GAACiB;CAAA,AAAAR,EAAA,OAAAE,QAAAF,EAAA,OAAAG,WAAAH,EAAA,OAAAI,MAEGI,KAAAd,mBAAmBS,SAAS;EAAAD;EAAAE;CAAS,CAAC,GAACJ,EAAA,KAAAE,MAAAF,EAAA,KAAAG,SAAAH,EAAA,KAAAI,IAAAJ,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CAAlE,IAAAS,OAA2BD,IAA6DE;CAAA,AAAAV,EAAA,OAAAS,QAAAT,EAAA,OAAAG,WAK/EO,KAAAb,kBAAkBM,SAASM,IAAI,GAACT,EAAA,KAAAS,MAAAT,EAAA,KAAAG,SAAAH,EAAA,KAAAU,MAAAA,KAAAV,EAAA;CAEtB,IAAAW,KAAAN,cAAc,GAACO;CAAA,AAAAZ,EAAA,OAAAU,MAAAV,EAAA,OAAAW,MAAAX,EAAA,OAAAO,MAAAM,OAAAC,MAAAC,KAAAC,MAH9BJ,KAAA,oBAAA,QAAA;EACK,GAAAF;EACK,QAAAH,MAAKM,OAAOC,MAAMC,KAAKC;EAClB,aAAAL;CAAe,CAAA,GAC5BX,EAAA,KAAAU,IAAAV,EAAA,KAAAW,IAAAX,EAAA,KAAAO,MAAAM,OAAAC,MAAAC,KAAAC,IAAAhB,EAAA,MAAAY,MAAAA,KAAAZ,EAAA;CAAA,IAAAiB;CAAA,AAAAjB,EAAA,QAAAS,QAAAT,EAAA,QAAAG,WAGGc,KAAApB,kBAAkBM,SAASM,IAAI,GAACT,EAAA,MAAAS,MAAAT,EAAA,MAAAG,SAAAH,EAAA,MAAAiB,MAAAA,KAAAjB,EAAA;CAAA,IAAAkB;CAAA,AAAAlB,EAAA,QAAAO,MAAAM,OAAAC,MAAAC,KAAAI,SACcD,KAAAlB,EAAA,OAAzCkB,KAAA5B,KAAKiB,MAAKM,OAAOC,MAAMC,KAAKI,QAAS,EAAG,GAACnB,EAAA,MAAAO,MAAAM,OAAAC,MAAAC,KAAAI,QAAAnB,EAAA,MAAAkB;CAAA,IAAAE;CAAA,AAAApB,EAAA,QAAAK,eAAAL,EAAA,QAAAiB,MAAAjB,EAAA,QAAAkB,MAFnDE,KAAA,oBAAA,QAAA;EACK,GAAAH;EACK,QAAAC;EACKb;CAAW,CAAA,GACxBL,EAAA,MAAAK,aAAAL,EAAA,MAAAiB,IAAAjB,EAAA,MAAAkB,IAAAlB,EAAA,MAAAoB,MAAAA,KAAApB,EAAA;CAAA,IAAAqB;CAAA,AAAArB,EAAA,QAAAS,KAAAP,KAAAoB,UAAAtB,EAAA,QAAAS,KAAAP,KAAAqB,WAAAvB,EAAA,QAAAS,KAAAP,KAAAsB,KAAAxB,EAAA,QAAAG,WAAAH,EAAA,QAAAK,eAAAL,EAAA,QAAAO,MAAAM,OAAAC,MAAAC,KAAAI,UAEDE,KAAAZ,KAAIP,KAAKqB,WACR,oBAAA,QAAA;EACK,GAAA3B,UACDO,SACAM,KAAIP,KAAKsB,IAAKrB,QAAOsB,MAAMC,SAC3BjB,KAAIP,KAAKoB,OAAOK,IAAKxB,QAAOsB,MAAMG,YAAazB,QAAOsB,MAAMI,SAC5D,EACF;EACQ,QAAAtB,MAAKM,OAAOC,MAAMC,KAAKI;EAClBd;CAAW,CAAA,GAE3BL,EAAA,MAAAS,KAAAP,KAAAoB,QAAAtB,EAAA,MAAAS,KAAAP,KAAAqB,SAAAvB,EAAA,MAAAS,KAAAP,KAAAsB,GAAAxB,EAAA,MAAAG,SAAAH,EAAA,MAAAK,aAAAL,EAAA,MAAAO,MAAAM,OAAAC,MAAAC,KAAAI,QAAAnB,EAAA,MAAAqB,MAAAA,KAAArB,EAAA;CAAA,IAAA8B;CAAA,AAAA9B,EAAA,QAAAS,KAAAP,KAAAoB,UAAAtB,EAAA,QAAAS,KAAAP,KAAA6B,WAAA/B,EAAA,QAAAS,KAAAP,KAAAsB,KAAAxB,EAAA,QAAAG,WAAAH,EAAA,QAAAK,eAAAL,EAAA,QAAAO,MAAAM,OAAAC,MAAAC,KAAAI,UAEAW,KAAArB,KAAIP,KAAK6B,WACR,oBAAA,QAAA;EACK,GAAAnC,UACDO,SACAM,KAAIP,KAAKsB,IAAKrB,QAAOsB,MAAMC,SAC3BjB,KAAIP,KAAKoB,OAAOK,IACdlB,KAAIP,KAAKoB,OAAOU,IAChB7B,QAAOsB,MAAMG,YACbzB,QAAOsB,MAAMI,SACf,CACF;EACQ,QAAAtB,MAAKM,OAAOC,MAAMC,KAAKI;EAClBd;CAAW,CAAA,GAE3BL,EAAA,MAAAS,KAAAP,KAAAoB,QAAAtB,EAAA,MAAAS,KAAAP,KAAA6B,SAAA/B,EAAA,MAAAS,KAAAP,KAAAsB,GAAAxB,EAAA,MAAAG,SAAAH,EAAA,MAAAK,aAAAL,EAAA,MAAAO,MAAAM,OAAAC,MAAAC,KAAAI,QAAAnB,EAAA,MAAA8B,MAAAA,KAAA9B,EAAA;CAAA,IAAAiC;CACA,OADAjC,EAAA,QAAAY,MAAAZ,EAAA,QAAAoB,MAAApB,EAAA,QAAAqB,MAAArB,EAAA,QAAA8B,MAxCHG,KAAA,qBAAA,UAAA,EAAA,UAAA;EACErB;EAMAQ;EAMCC;EAaAS;CAcA,EAAA,CAAA,GACA9B,EAAA,MAAAY,IAAAZ,EAAA,MAAAoB,IAAApB,EAAA,MAAAqB,IAAArB,EAAA,MAAA8B,IAAA9B,EAAA,MAAAiC,MAAAA,KAAAjC,EAAA,KAzCHiC;AAyCG;ACxDP,MAEMQ,UAA4B;CAChCC,OAAO;EACLC,SAAS;EACTC,SAAS;EACTC,MAAM;EACNC,WAAW;CACb;CACAC,SAAS,EACPC,SAAS,MACX;CACAC,MAAM;EACJC,cAAc;EACdN,SAAS;EACTO,aAAa;CACf;AACF;AAEA,SAAOC,wBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAC,eAAqBH,OAUrB,GAAAI,aAAsBrB,SAAS,EAAK,GAACsB;CAAA,AAAAJ,EAAA,OAAAG,YAMpCC,KAAAJ,EAAA,MALSI,WAAA;EAIRD,UAAU,EAAI;CAAC,GAChBH,EAAA,KAAAG,WAAAH,EAAA,KAAAI;CAAA,IAAAC;CALDxB,AAKCmB,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAAEF,KAAA,CAAA,GAAEL,EAAA,KAAAK,MAAAA,KAAAL,EAAA,IALLnB,UAAUuB,IAKPC,EAAE;CAAC,IAAAG;CAAA,AAAAR,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAUOC,KAAA;EAAAC,UACK;EAAUC,KACf;EAACC,MACA;EAACC,OACA;EAAMC,QACL;EAAMC,eACC;EAAMC,QACb;CAEV,GAACf,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CAAA,IAAAgB;CAAA,AAAAhB,EAAA,OAAAE,aASCc,KAAAhB,EAAA,MAPDgB,KAAAd,WAAUe,IAAKC,OAOf,GAAClB,EAAA,KAAAE,YAAAF,EAAA,KAAAgB;CAAA,IAAAG;CAAA,AAAAnB,EAAA,OAAAgB,KACEG,KAAAnB,EAAA,MAvBNmB,KAAA,oBAAA,OAAA;EACO,MAAA;EACE,OAAAC,OAAMC;EACL,QAAAD,OAAME;EACP,OAAAd;YAWNQ;CAQG,CAAA,GAAAhB,EAAA,KAAAgB,IAAAhB,EAAA,KAAAmB;CAAA,IAAAI;CAAA,AAAAvB,EAAA,OAAAE,aA4DFqB,KAAAvB,EAAA,MA3DHuB,KAAArC,IA2DGc,EAAA,KAAAE,YAAAF,EAAA,KAAAuB;CAAA,IAAAE;CACH,OADGzB,EAAA,QAAAmB,MAAAnB,EAAA,QAAAuB,MApFNE,KAAA,qBAAA,UAAA,EAAA,UAAA,CACEN,IAwBCI,EA2DG,EAAA,CAAA,GACHvB,EAAA,MAAAmB,IAAAnB,EAAA,MAAAuB,IAAAvB,EAAA,MAAAyB,MAAAA,KAAAzB,EAAA,KArFHyB;AAqFG;AA3GA,SAAAP,QAAAsB,WAAA;CAAA,OAuCG,oBAAC,eAAD;EACQ,MAAAA,UAASb;EAENxC;EACL,IAAAqD,UAASZ;CAAG,GAFXY,UAASd,GAEE;AAChB;ACjEZ,SAAgBkB,mBAAmBC,YAAgC;CACjE,IAAIA,cAAcA,WAAWC,SAAS,KACpC,MAAUC,MACR,IAAIN,YAAW,6FAA8FI,WAAWC,OAAM,YAChI;CAEF,OAAOD;AACT;AAEA,SAAgBG,yBACdH,YACAI,SACA;CACA,OAAO,YACD,OAAOJ,cAAe,aAInBD,mBAAmBM,MADKL,WAAWI,OAAO,CACP,IAHjCJ;AAKb;ACpBA,MAAaQ,qBACXC,QACAE,aAC4B;CAC5B,IAAI,CAACF,UAAU,CAACE,UACd,OAAO,CAAC;CAGV,IAAMC,YAAoCH,UAAU,CAAC,GAC/CI,gBAAyC,CAAC;CAChD,KAAK,IAAM,CAACC,KAAKC,SAASC,OAAOC,QAAQL,SAAS,GAAG;EACnD,IAAIM,QAAQZ,IAAIK,UAAUI,IAAI;EAO9BF,AANIM,MAAMC,QAAQF,KAAK,MAErBA,QAAQA,MAAMG,QAAQC,SACpB,OAAOA,QAAS,YAAWA,MAAMC,UAAU,eAAe,UAAUD,IACtE,IAEFT,cAAcC,OAAOI;CACvB;CAEA,OAAOL;AACT,GCzBMW,4BAA4B;AAElC,SAAgBC,6BAA6BC,gBAAkC;CAC7E,IAAI,OAAOC,eAAiB,KAC1B,OAAO,CAAA;CAGT,IAAMC,QAAQD,aAAaE,QAAQ,GAAGL,4BAA4BE,gBAAgB;CAClF,IAAI,CAACE,OAAO,OAAO,CAAA;CACnB,IAAI;EAEF,OAAOE,KAAKC,MAAMH,KAAK;CACzB,QAAQ;EACN,OAAO,CAAA;CACT;AACF;AAEA,SAAgBI,6BAA6BN,gBAAwBO,aAAuB;CACtF,OAAON,eAAiB,OAI5BA,aAAaO,QAAQ,GAAGV,4BAA4BE,kBAAkBI,KAAKK,UAAUF,WAAW,CAAC;AACnG;ACtBA,SAASG,UAAUC,SAAS,IAAI;CAC9B,IAAMC,QAAQ,IAAIC,WAAWF,MAAM;CAEnC,OADAG,OAAOC,gBAAgBH,KAAK,GACrBA;AACT;AAEA,MAAMI,yBAAyB;CAC7B,IAAIC;CACJ,aAAa;EACX,IAAIA,OACF,OAAOA;EAETA,QAAQ,CAAA;EACR,KAAK,IAAIC,IAAI,GAAGA,IAAI,KAAK,EAAEA,GACzBD,MAAMC,MAAMA,IAAI,IAAA,CAAOC,SAAS,EAAE,CAAC,CAACC,UAAU,CAAC;EAEjD,OAAOH;CACT;AACF,EAAA,CAAG;AAEH,SAAgBI,UAAUV,QAAiB;CACzC,IAAMM,QAAQD,gBAAgB;CAC9B,OAAON,UAAUC,MAAM,CAAC,CACrBW,QAAQC,KAAKC,MAAMD,MAAMN,MAAMO,IAAI,EAAE,CAAC,CACtCC,MAAM,GAAGd,MAAM;AACpB;ACDA,SAAgBkC,uBACdC,KACAC,YACAC,WAAWL,GACX;CAMA,OALKhB,qBAAqBoB,UAAU,IAK7BI,aAAaL,KAAKC,YAAY,CAAA,GAAIK,KAAKC,IAAIL,UAAUJ,EAAkB,CAAC,KAJ7EK,QAAQC,MAAM,+BAA+B,GACtC,CAAA;AAIX;AAEA,SAASC,aACPL,KACAC,YACAO,MACAN,UACkB;CAKlB,OAJIM,KAAKC,UAAUP,WACV,CAAA,IAGFD,WAAWS,OAAOC,QAA0BC,KAAKC,UAAU;EAChE,IAAMC,YAAY,CAAC,GAAGN,MAAMK,MAAME,IAAI,GAChCC,cAAcH,MAAMI,MACpBC,cAAcV,KAAKC,SAAS7B,gBAAgBK,aAAauB,IAAI,GAAGR,GAAG,CAAC,CAAC,EAAE,EAAEmB,QAAQnB,KACjFmB,QAAQhC,SAAS+B,WAAW,IAAIA,YAAYL,MAAME,QAAQK,KAAAA;EAEhE,IAAID,SAAiC,MACnC,OAAOP;EAGT,IAAMS,oBAAoC;GACxCb,MAAMM;GACNC,MAAMF,MAAME;GACZd,YAAYe;GACZG;GACAD;EACF;EAEA,IAAIF,YAAYM,aAAa,UAAU;GACrC,IAAMC,cAAclB,aAAaL,KAAKgB,aAAaF,WAAWZ,QAAQ;GAEtE,OAAO;IAAC,GAAGU;IAAKS;IAAmB,GAAGE;GAAW;EACnD,OAAO,IACLP,YAAYM,aAAa,WACzBN,YAAYQ,GAAGf,UACfO,YAAYQ,GAAGC,MAAMC,SAAS,YAAYA,IAAI,KAE9ClB,KAAKC,SAAS,IAAIP,UAClB;GACA,IAAM,EAACiB,OAAOQ,eAAc/C,gBAAgBK,aAAa6B,SAAS,GAAGd,GAAG,CAAC,CAAC,MAAM,CAAC,GAE7E4B,aAA+B,CAAA;GAEnC,IAAKD,YAAoBlB,QAEvB,KAAK,IAAMiB,QAAQC,YAAqB;IACtC,IAAME,WAAW,CAAC,GAAGf,WAAW,EAACgB,MAAMJ,KAAKI,KAAI,CAAC,GAC7CC,aAAaf,YAAYQ,GAAGQ,MAAMC,MAAMA,EAAElB,SAASW,KAAKQ,KAAK;IAYjE,IAXKR,KAAKQ,UACRH,aAAaf,YAAYQ,GAAG,IAC5BrB,QAAQgC,KACN,qFACA;KACEN;KACAH;KACAK;IACF,CACF,IAEEL,KAAKI,QAAQC,YAAY;KAC3B,IAAMR,cAAclB,aAClBL,KAEA+B,YACAF,UACA3B,QACF,GACMkC,cAAc;MAClB5B,MAAMqB;MACNd,MAAMW,KAAKI;MACX7B,YAAY8B;MACZZ,OAAOO;MACPR,aAAaS;KACf;KACAC,aAAa;MAAC,GAAGA;MAAYQ;MAAa,GAAGb;KAAW;IAC1D;GACF;GAGF,OAAO;IAAC,GAAGX;IAAKS;IAAmB,GAAGO;GAAU;EAClD;EAEA,OAAO,CAAC,GAAGhB,KAAKS,iBAAiB;CACnC,GAAG,CAAA,CAAE;AACP;AAQA,MAAMkB,qCACJpB,UAEA,OAAOA,SAAU,cAAYA,UAAmB,cAAcA,SAAS,UAAUA,QAEtEqB,yBAAqD,SAChEC,QACAC,eACAC,yBACAC,wBACA;CACA,IACEH,OAAOxC,WAAWqB,aAAa,YAC/BmB,OAAOxC,WAAWc,KAAK8B,WAAW,wBAAwB,KAC1DN,kCAAkCE,OAAOtB,KAAK,GAC9C;EAGA,IAFuCsB,OAAOtB,MAAMmB,aAAalB,KAAAA,GAI/D,OADiBqB,OAAOtB,MAAMmB,aACVK,0BAChBC,uBAAuBG,KAAKC,kBAAkB;GAC5C,IAAMC,iBACHC,MAAMC,QAAQV,OAAOvB,WAAW,IAC7BuB,OAAOvB,cACN,CAAA,EAAA,CAGFc,MAAMN,SAASA,KAAKY,aAAaU,aAAa,CAAC,EAAElB,QAAQ1C,UAAU;GAExE,OAAO;IACLgE,IAAIJ;IACJK,YAAY,CAAC,GAAGZ,OAAOjC,KAAK8C,MAAM,GAAG,EAAE,GAAG,EAACxB,MAAMmB,cAAa,CAAC;GACjE;EACF,CAAC,IACD7B,KAAAA;EAGN,IAAMmC,UAAUd,OAAOjC,KAAK8C,MAAM,EAAE;EAGpC,QADiBC,QAAQ,MAAMzE,aAAayE,QAAQ,EAAE,IAAIA,QAAQ,EAAE,CAACzB,OAAO,UACxDa,0BAChBC,uBAAuBG,KAAKC,mBAAmB;GAC7CI,IAAIJ;GACJK,YAAY,CAAC,GAAGZ,OAAOjC,KAAK8C,MAAM,GAAG,EAAE,GAAG,EAACxB,MAAMkB,cAAa,CAAC;EACjE,EAAE,IACF5B,KAAAA;CACN;CAEA,IAAIsB,cAAcpB,aAAa,YAAYoB,cAAc3B,KAAK8B,WAAW,QAAQ,GAC/E,OAAOF,4BAA4BF,OAAO1B,OACtC6B,uBAAuBG,KAAKC,mBAAmB;EAC7CI,IAAIJ;EACJK,YAAY,CAAC,GAAGZ,OAAOjC,KAAK8C,MAAM,GAAG,EAAE,GAAGN,aAAa;CACzD,EAAE,IACF5B,KAAAA;AAIR;AAEA,SAAgBoC,oBACdC,gBACAC,iBACAf,yBACAgB,mBACAC,QACoB;CACpB,IAAMC,kBAAsC,CAAA;CAC5C,KAAK,IAAMpB,UAAUiB,iBAAiB;EACpC,IAAMI,aAAarB,OAAOjC,KAAK8C,MAAM,GAAG,EAAE,GACpCZ,gBACJgB,gBAAgB1B,MAAM+B,MAAM9E,aAAa8E,EAAEvD,IAAI,MAAMvB,aAAa6E,UAAU,CAAC,CAAC,EAAE7D,cAChFwD,gBAEIX,iCACJL,OAAOxC,WAAWqB,aAAa,YAC/BmB,OAAOxC,WAAWc,KAAK8B,WAAW,wBAAwB,KAC1DN,kCAAkCE,OAAOtB,KAAK,KAC9CsB,OAAOtB,MAAMmB,aAAalB,KAAAA,GAEtB4C,eAAeJ,OACnBnB,QACAC,eACAC,yBACAgB,iBACF,CAAC,EAAEM,QAAQC,gBAAgBA,YAAYd,OAAOT,uBAAuB;EAErE,AAAIqB,gBACFH,gBAAgBM,KAAK;GACnB1E,iBAAiBkD;GACjBjD,WAAW+C,OAAOjC;GAClBb,SAASqE;GACT,GAAIlB,iCAAiC,EAAClD,sBAAsB,CAAC,UAAU,EAAC,IAAI,CAAC;EAC/E,CAAC;CAEL;CAEA,OAAOiE;AACT;ACxLA,MAAMqD,0BAA0BnC,cAA4C;CAC1EgC,4BAA4B,CAAC;CAC7BE,oBAAoB;AACtB,CAAC;AAED,SAAOE,sBAAA;CAAA,OACEjC,WAAWgC,uBAAuB;AAAC;AAG5C,SAASE,qBACPC,mBACAC,cACAC,UACA;CACA,OAAOF,mBAAmBG,MACvBC,QACCA,IAAIC,oBAAoBJ,cAAcK,MACtCF,IAAIG,aACJpC,aAAaiC,IAAIG,SAAS,CAAC,CAACC,WAAWrC,aAAa+B,QAAQ,CAAC,CACjE;AACF;AAEA,SAAOO,yBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAC,QAAAC,iBAA+BxC,sBAAsB,GAErDyC,YAAkBrC,aAAaoC,aAAYE,iBAAkB,GAC7DC,aAAmBH,aAAYI,WAAsBD,YACrDJ,SAAeC,aAAYI,WAAiBC,OAC5C,EAAAD,WAAAE,iBAAkCzC,aAAaoC,SAAS,GAExD,CAAAM,YAAAC,iBAAoCtD,SAAS,EAAK,GAElD,CAAAuD,wBAAAC,6BAA4DxD,SAE1D,GACF,CAAAyD,WAAAC,gBAAkC1D,SAAiC,GACnE,CAAAiC,cAAA0B,mBAAwC3D,SAA+B4D,KAAAA,CAAS,GAChF,CAAAC,aAAAC,kBAAsC9D,SAAiC4D,KAAAA,CAAS,GAChF,CAAA5B,mBAAA+B,wBAAkD/D,SAAyC,GAACgE;CAAA,AAAArB,EAAA,OAAAsB,OAAAC,IAAA,2BAAA,KAElEF,WAAA;EAGxBR,AAFAF,cAAc,EAAK,GACnBI,aAAaE,KAAAA,CAAS,GACtBJ,0BAA0BI,KAAAA,CAAS;CAAC,GACrCjB,EAAA,KAAAqB,MAAAA,KAAArB,EAAA;CAJD,IAAAwB,QAAcH,IAMAI,KAAAvB,QAAMwB,cAAAA,cAA+CC;CAAA,AAAA3B,EAAA,OAAAyB,KAClEE,KAAA3B,EAAA,MAFgC2B,KAAA,EAAAD,YACnBD,GACd,GAACzB,EAAA,KAAAyB,IAAAzB,EAAA,KAAA2B;CAFD,IAAAC,iBAAuBlE,UAAUiE,EAEhC,GACDE,aAAmBjB,wBAAsBlC,UAAeoD,KACxDnC,KAAWxC,MAAM,GAAC4E;CAAA,AAAA/B,EAAA,OAAAE,QAAA8B,gBAAAhC,EAAA,OAAAE,QAAA+B,sBAGhBF,MAAAG,MAAAC,aAAAC,WAAA;EAKE,IAAA,EAAA1D,UAAAC,mBAAmCyD,UAAA,CAAW;EAE9C,IADApB,gBAAgBkB,IAAI,GAChB,CAACxD,YAAD,CAAcC,kBAAd,CAAiCyD,UAAjC,CAA4CtB,aAAS;GACvDM,qBAAqBH,KAAAA,CAAS;GAAC;EAAA;EAIjC,IAAAoB,YAAkBnE,6BAA6BgE,KAAIvC,EAAG,GACtD2C,iBAAuBxB,YAASyB,QAAQC,MAAOA,EAAC7C,OAAQuC,MAAIvC,EAAI,GAChE8C,sBAA4BH,eAAcC,QACxCG,QAAO,CAACL,UAASM,UAAWN,UAASO,SAAUJ,IAAC7C,EAAG,CACrD;EAEAwB,eAAesB,mBAAmB;EAClC,IAAAI,SAAeX,MAAIvC,IACnBmD,WAAiBR,gBAAc7C,IAAMsD,OAAiB,KAArC,CAAA,GACjBC,aAAmB1E,uBAAuBI,UAAUC,gBAAgBuB,QAAM8B,YAAc;EACxF,IAAIa,UAAUC,UAAQH,QAAQ;GAC5B,IAAAM,WAAiB1E,oBACfI,gBACAqE,YACAH,QACAC,SAAQP,QAAQW,SAAUL,WAAWK,IAAI,GACzChD,QAAM+B,sBAAN7D,sBACF;GACAgD,qBAAqB6B,QAAQ;EAAC,OAE9B7B,qBAAqBH,KAAAA,CAAS;CAC/B,GACFjB,EAAA,KAAAE,QAAA8B,cAAAhC,EAAA,KAAAE,QAAA+B,oBAAAjC,EAAA,KAAA+B,MAAAA,KAAA/B,EAAA;CAnCH,IAAAmD,qBAA2BpB,IAqC1BqB;CAAA,AAAApD,EAAA,OAAAV,eAwBE8D,KAAApD,EAAA,MArBDoD,MAAAC,aAAAC,eAAAC,gBAAA;EAKE,IAAI,CAACzC,eAAD,CAAexB,cAAY;EAG/B,IAAAkE,cAAoB,CAAC,CAACtC,eAAWuC,MAAOC,QAAOlB,IAAC7C,OAAQ0D,YAAW1D,EAAG,GACtEgE,aAAmB7C,YAASyB,QAC1BqB,YACE,CAAC,CAAC1C,eAAWuC,MACXI,iBAAkBR,YAAW1D,OAAQkE,aAAYlE,MAAOkE,aAAYlE,OAAQiE,QAAOjE,EACrF,KACC0D,YAAW1D,OAAQiE,QAAOjE,MAA1B,CAAkC6D,WACvC;EAEArF,AADAgD,eAAewC,UAAU,GACzBxF,6BACEmB,aAAYK,IACZgE,WAAUlE,IAAKqE,QAAW,CAC5B;CAAC,GACF9D,EAAA,KAAAV,cAAAU,EAAA,KAAAoD;CAtBH,IAAAW,mBAAyBX,IAwBxBY;CAAA,AAAAhE,EAAA,OAAAE,UAAAF,EAAA,OAAA4B,kBAAA5B,EAAA,QAAAmD,sBAGCa,KAAA,OAAAC,aAAA;EACEtD,cAAc,EAAI;EAClB,IAAAuD,iBAAuBjG,kBAAkBiC,QAAMiE,sBAAwB/B,SAAM1D,QAAS,GACtF0F,cAA0C,OAAO,OAAOlE,QAAMY,aAAgB,aAC1EZ,QAAMY,UAAYc,gBAAgBsC,cACD,IAAjCG,QAAOC,QAASpE,QAAMY,SAAW;EAErCD,AADAE,aAAaD,WAAS,GACtBD,0BAA0BuB,QAAM;EAChC,IAAAmC,iBAAqBzD,cAAS;EAC9B,AAAIxB,iBACF6D,mBAAmB7D,gBAAcwB,aAAWsB,QAAM,IAElDoC,QAAOC,MAAO,uDAAuDP,cAAc;CACpF,GACFlE,EAAA,KAAAE,QAAAF,EAAA,KAAA4B,gBAAA5B,EAAA,MAAAmD,oBAAAnD,EAAA,MAAAgE,MAAAA,KAAAhE,EAAA;CAfH,IAAAjB,uBAA6BiF,IAiB5BU;CAAA,AAAA1E,EAAA,QAAAjB,uBAME2F,KAAA1E,EAAA,OAHM0E,KAAA;EAAA3F;EAAAE,oBAEe;CACtB,GAACe,EAAA,MAAAjB,sBAAAiB,EAAA,MAAA0E;CAJH,IAAAC,eACED,IAIwBE;CAAA,AAAA5E,EAAA,QAAA6B,cAAA7B,EAAA,QAAAX,qBAAAW,EAAA,QAAAY,0BAAAZ,EAAA,QAAAV,gBAAAU,EAAA,QAAAkB,aAAAyB,UAGxBiC,KAAA,CAACtF,gBAAD,CACC4B,aAAWyB,UADZ,CAECtD,mBAAiBsD,UAFlB,CAGCd,cAHD,CAICzC,qBAAqBC,mBAAmBC,cAAcsB,uBAAsBhC,aAAc,GAACoB,EAAA,MAAA6B,YAAA7B,EAAA,MAAAX,mBAAAW,EAAA,MAAAY,wBAAAZ,EAAA,MAAAV,cAAAU,EAAA,MAAAkB,aAAAyB,QAAA3C,EAAA,MAAA4E,MAAAA,KAAA5E,EAAA;CAL9F,IAAA6E,cACED,IAI4FE;CA+B5FlE,AA/B4FZ,EAAA,QAAA6B,cAAA7B,EAAA,QAAAX,qBAAAW,EAAA,QAAAY,wBAAA/B,sBAAAmB,EAAA,QAAAY,wBAAAjC,kBAAAqB,EAAA,QAAAY,wBAAAhC,iBAAAoB,EAAA,QAAA4B,kBAAA5B,EAAA,QAAAS,gBAAAT,EAAA,QAAAM,cAAAN,EAAA,QAAAkB,eAEzD4D,WAAA;EACnC,IAAAlG,gBAAsBgC,wBAAsBhC;EAkB5C4C,AAjBInC,qBAAAwC,cAAAjD,iBACG6B,aAAa;GAAAoB;GAAAjD;GAAA0B,YAGJzC,yBAAyByC,YAAY;IAAAyE,QACvCnD;IAAcC;IAAAmD,YAEVpE,wBAAsBjC;IAAgBC;GAEpD,CAAC;GAACqG,kBACgB5F,kBAAiBI,KAAKA,SAAU;IAAA,GAC7CA;IAAGyF,SACGzF,IAAGyF,QAAQ3C,QAAQ4C,QAAS,CAAC,CAACjE,aAAWuC,MAAO2B,QAAO5C,IAAC7C,OAAQwF,IAAGxF,EAAG,CAAC;GAClF,EAAE;GAACd,oBACiB+B,wBAAsB/B;EAC5C,CAAC,GAEH2C,MAAM;CAAC,GACRxB,EAAA,MAAA6B,YAAA7B,EAAA,MAAAX,mBAAAW,EAAA,MAAAY,wBAAA/B,oBAAAmB,EAAA,MAAAY,wBAAAjC,gBAAAqB,EAAA,MAAAY,wBAAAhC,eAAAoB,EAAA,MAAA4B,gBAAA5B,EAAA,MAAAS,cAAAT,EAAA,MAAAM,YAAAN,EAAA,MAAAkB,aAAAlB,EAAA,MAAA8E,MAAAA,KAAA9E,EAAA,KAOCY,wBAAsBhC,eACtBgC,wBAAsB/B,oBACtB+B,wBAAsBjC;CA7BxB,IAAA0G,mBAAyBP,IA+BvBQ;CAAA,AAAAtF,EAAA,QAAAsB,OAAAC,IAAA,2BAAA,KAOS+D,KAAA,EAAAC,OAAQ,OAAM,GAACvF,EAAA,MAAAsF,MAAAA,KAAAtF,EAAA;CAAA,IAAAwF;CAAA,AAAAxF,EAAA,QAAAqF,oBAAArF,EAAA,QAAA6E,eAJxBW,MAAA,oBAAC,QAAD;EACQ,MAAA;EACD,MAAA;EACCpJ,MAAAA;EACC,OAAAkJ;EACGT,UAAAA;EACDQ,SAAAA;CAAgB,CAAA,GACzBrF,EAAA,MAAAqF,kBAAArF,EAAA,MAAA6E,aAAA7E,EAAA,MAAAwF,OAAAA,MAAAxF,EAAA;CARJ,IAAAyF,YACED,KAQDE;CAAA,AAAA1F,EAAA,QAAAU,cAAAV,EAAA,QAAAY,0BAAAZ,EAAA,QAAAV,gBAAAU,EAAA,QAAAL,MAAAK,EAAA,QAAAc,aAAAd,EAAA,QAAAyF,aAAAzF,EAAA,QAAA6E,eAAA7E,EAAA,QAAAmD,sBAAAnD,EAAA,QAAAkB,eAAAlB,EAAA,QAAA+D,oBAII2B,MAAAhF,aACC,oBAAC,QAAD;EACMf;EACG,OAAA;EACDe,MAAAA;EACGc,SAAAA;EACF,QAAA;EAEL,QAAA,oBAAC,MAAD;GAAc,SAAA;GAAyB,SAAA;GAAS,MAAA;aAC7CqD,cACC,oBAAC,SAAD;IAEI,SAAA,oBAAC,MAAD;KAAe,SAAA;eACb,oBAAC,MAAD,EAAA,UAAM,+DAAD,CAAA;IADF,CAAA;IAIG,WAAA;cAEV,oBAAC,MAAD;KAAY,MAAA;eAAIY;IAAX,CAAA;GARC,CAAA,IADTA;EADE,CAAA;YAkBN3E,YACC,qBAAC,MAAD;GAAe,SAAA;GAAQ,KAAA;GAAS,OAAA;GAAqB,SAAA;aAArD,CACE,qBAAC,OAAD;IAAY,KAAA;cAAZ,CACE,oBAAC,KAAD;KAAmB,cAAA;eACjB,oBAAC,MAAD;MAAa,QAAA;gBAAW;KAAnB,CAAA;IADH,CAAA,GAGHA,WAASrB,KAAMkG,kBACd,oBAAC,mBAAD;KAEMA;KAAArG;KAAA6D;KAAArC;KAAAF;IAMH,GAPI+E,cAAahG,EAOjB,CAEJ,CAfG;OAkBN,qBAAC,OAAD;IAAY,KAAA;cAAZ,CACE,oBAAC,KAAD;KAAmB,cAAA;eACjB,oBAAC,MAAD;MAAa,QAAA;gBAAW;KAAnB,CAAA;IADH,CAAA,GAGHmB,UAASrB,KAAKmG,qBACb,oBAAC,oBAAD;KAEMA;KAAAtG;KAAA4B;KAAA6C;KAAAjD;IAA0E,GADzE8E,iBAAgBjG,EACyD,CAEjF,CATG;KAnBH;OAgCL,qBAAC,MAAD;GAAe,SAAA;GAAQ,KAAA;GAAS,OAAA;GAAqB,SAAA;aAArD,CACE,oBAAC,KAAD,EAAA,UACE,oBAAC,SAAD,CAAQ,CAAA,EADN,CAAA,GAGJ,oBAAC,MAAD,EAAA,UAAM,uBAAD,CAAA,CAJF;;CA1DF,CAAA,IADR,MAmEOK,EAAA,MAAAU,YAAAV,EAAA,MAAAY,wBAAAZ,EAAA,MAAAV,cAAAU,EAAA,MAAAL,IAAAK,EAAA,MAAAc,WAAAd,EAAA,MAAAyF,WAAAzF,EAAA,MAAA6E,aAAA7E,EAAA,MAAAmD,oBAAAnD,EAAA,MAAAkB,aAAAlB,EAAA,MAAA+D,kBAAA/D,EAAA,MAAA0F,OAAAA,MAAA1F,EAAA;CAAA,IAAA6F;CAEyB,OAFzB7F,EAAA,QAAA2E,gBAAA3E,EAAA,QAAAD,MAAA+F,YAAA9F,EAAA,QAAA0F,OApEVG,MAAA,qBAAA,wBAAA,UAAA;EAAyClB,OAAAA;YAAzC,CACGe,KAoEA3F,MAAK+F,QACR;KAAmC9F,EAAA,MAAA2E,cAAA3E,EAAA,MAAAD,MAAA+F,UAAA9F,EAAA,MAAA0F,KAAA1F,EAAA,MAAA6F,OAAAA,MAAA7F,EAAA,KAtEnC6F;AAsEmC;AAlPhC,SAAA/B,SAAAiC,KAAA;CAAA,OAwFuBvD,IAAC7C;AAAG;AAxF3B,SAAAoD,QAAAiD,KAAA;CAAA,OAkD2CxD,IAAC7C;AAAG;AAoMtD,SAAAsG,mBAAAlG,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAWE,EAAA2F,kBAAAtG,cAAA4B,aAAA6C,kBAAAjD,cAAmFf,OACnFmG,SAAeN,iBAAgBjG,IAAG0B;CAAA,AAAArB,EAAA,OAAA4F,oBAAA5F,EAAA,OAAAc,aAAAd,EAAA,OAAAkB,eAAAlB,EAAA,OAAA+D,oBAEhC1C,WAAM0C,iBAAiB6B,kBAAkB1E,aAAaJ,SAAS,GAACd,EAAA,KAAA4F,kBAAA5F,EAAA,KAAAc,WAAAd,EAAA,KAAAkB,aAAAlB,EAAA,KAAA+D,kBAAA/D,EAAA,KAAAqB,MAAAA,KAAArB,EAAA;CADlE,IAAAmG,WAAiB9E,IAGhBI;CAAA,AAAAzB,EAAA,OAAAV,cAAAK,MAAAK,EAAA,OAAAkG,UAOUzE,KAAAyE,WAAW5G,cAAYK,KAAvB,EAAAyG,SAAwC,GAAe,IAAvDnF,KAAAA,GAAwDjB,EAAA,KAAAV,cAAAK,IAAAK,EAAA,KAAAkG,QAAAlG,EAAA,KAAAyB,MAAAA,KAAAzB,EAAA;CAAA,IAAA2B;CAAA,AAAA3B,EAAA,OAAAV,cAAAK,MAAAK,EAAA,OAAAkG,UAAAlG,EAAA,QAAAkB,eAKpDS,KAAAuE,WAAW5G,cAAYK,MAAvB,CAAgC,CAACuB,aAAWuC,MAAO4C,OAAQA,GAAE1G,OAAQuG,MAAM,GAAClG,EAAA,KAAAV,cAAAK,IAAAK,EAAA,KAAAkG,QAAAlG,EAAA,MAAAkB,aAAAlB,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA;CAE3E,IAAA+B,KAAAmE,WAAW5G,cAAYK,IAAIyD;CAAA,AAAApD,EAAA,QAAAkG,UAAAlG,EAAA,QAAAmG,YAAAnG,EAAA,QAAA2B,MAAA3B,EAAA,QAAA+B,MALvCqB,KAAA,oBAAC,UAAD;EACO,MAAA;EACE8C,OAAAA;EACE,SAAAvE;EACCwE;EACA,UAAApE;CAA2B,CAAA,GACrC/B,EAAA,MAAAkG,QAAAlG,EAAA,MAAAmG,UAAAnG,EAAA,MAAA2B,IAAA3B,EAAA,MAAA+B,IAAA/B,EAAA,MAAAoD,MAAAA,KAAApD,EAAA;CACW,IAAAgE,KAAAkC,WAAW5G,cAAYK,IAAO+E,KAAAkB,iBAAgBU,SAAhBJ,QAAgCtB;CAAA,AAAA5E,EAAA,QAAAgE,MAAAhE,EAAA,QAAA0E,MAA3EE,KAAA,oBAAC,MAAD;EAAa,OAAAZ;YAA8BU;CAAtC,CAAA,GAA8E1E,EAAA,MAAAgE,IAAAhE,EAAA,MAAA0E,IAAA1E,EAAA,MAAA4E,MAAAA,KAAA5E,EAAA;CAAA,IAAA8E;CAC9E,OAD8E9E,EAAA,QAAAkG,UAAAlG,EAAA,QAAAyB,MAAAzB,EAAA,QAAAoD,MAAApD,EAAA,QAAA4E,MAdrFE,KAAA,qBAAC,MAAD;EAEO,KAAA;EACC,OAAA;EACF,IAAA;EACG,OAAArD;YALT,CAOE2B,IAOAwB,EAdG;IACEsB,MADF,GAeElG,EAAA,MAAAkG,QAAAlG,EAAA,MAAAyB,IAAAzB,EAAA,MAAAoD,IAAApD,EAAA,MAAA4E,IAAA5E,EAAA,MAAA8E,MAAAA,KAAA9E,EAAA,KAfP8E;AAeO;AAIX,SAAAyB,kBAAAxG,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAWE,EAAAa,WAAA6E,eAAAxC,oBAAA7D,cAAAsB,2BAA6Fb,OAC7FmG,SAAeP,cAAahG,IAAG0B;CAAA,AAAArB,EAAA,OAAAY,0BAAAZ,EAAA,OAAAc,aAAAd,EAAA,OAAA2F,iBAAA3F,EAAA,OAAAmD,sBAG7B9B,WAAM8B,mBAAmBwC,eAAe7E,WAAWF,sBAAsB,GAACZ,EAAA,KAAAY,wBAAAZ,EAAA,KAAAc,WAAAd,EAAA,KAAA2F,eAAA3F,EAAA,KAAAmD,oBAAAnD,EAAA,KAAAqB,MAAAA,KAAArB,EAAA;CAD5E,IAAAmG,WAAiB9E,IASFI,KAAAyE,WAAW5G,cAAYK,IAAIgC;CAAA,AAAA3B,EAAA,OAAAkG,UAAAlG,EAAA,OAAAmG,YAAAnG,EAAA,OAAAyB,MAHtCE,KAAA,oBAAC,OAAD;EACO,MAAA;EACEuE,OAAAA;EACE,SAAAzE;EACC0E;CAAQ,CAAA,GAClBnG,EAAA,KAAAkG,QAAAlG,EAAA,KAAAmG,UAAAnG,EAAA,KAAAyB,IAAAzB,EAAA,KAAA2B,MAAAA,KAAA3B,EAAA;CACK,IAAA+B,KAAA4D,cAAaW,SAAUX,cAAahG,IAAGyD;CAAA,AAAApD,EAAA,OAAA+B,KAAQqB,KAAApD,EAAA,OAAtDoD,KAAA,oBAAC,MAAD,EAAA,UAAOrB,GAAF,CAAA,GAAiD/B,EAAA,KAAA+B,IAAA/B,EAAA,MAAAoD;CAAA,IAAAY;CACjD,OADiDhE,EAAA,QAAAkG,UAAAlG,EAAA,QAAA2B,MAAA3B,EAAA,QAAAoD,MAPxDY,KAAA,qBAAC,MAAD;EAAwB,KAAA;EAAS,OAAA;EAAa,IAAA;YAA9C,CACErC,IAMAyB,EAPG;IAAM8C,MAAN,GAQElG,EAAA,MAAAkG,QAAAlG,EAAA,MAAA2B,IAAA3B,EAAA,MAAAoD,IAAApD,EAAA,MAAAgE,MAAAA,KAAAhE,EAAA,KARPgE;AAQO;ACvXX,MAAa,cAAc;CACzB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;AACF,GCTM2D,cAAc;CAAC;CAAY;CAAU;CAAS;AAAM;AAE1D,SAAgBC,gBAAgBC,QAAgBC,SAA2C;CACzF,IAAMC,OAAOF,OACVG,aAAa,CAAC,CACdC,QAAQC,MAAM,EAAEV,YAAYW,SAASD,CAAC,KAAKA,EAAEE,WAAW,SAAS,EAAE,CAAC,CACpEC,KAAKH,MAAML,OAAOS,IAAIJ,CAAC,CAAC,CAAC,CACzBD,QAAQC,MAAuB,CAAC,CAACA,CAAC,CAAA,CAGlCG,KAAKH,MAAMK,cAAcL,GAAGL,QAAQC,OAAO,CAAC,CAAC,CAC7CG,QAAQC,MAOP,EANI,QAAQA,KAAKA,EAAEM,MAAM,CAACN,EAAEM,GAAGC,UAG3B,QAAQP,KAAKA,EAAEQ,MAAM,CAACR,EAAEQ,GAAGD,UAG3B,YAAYP,KAAKA,EAAES,UAAU,CAACT,EAAES,OAAOF,OAI5C;CAEH,OADAV,KAAKa,MAAMC,GAAGC,OAAOD,GAAGE,QAAQ,GAAA,CAAIC,cAAcF,GAAGC,QAAQ,EAAE,CAAC,GACzDhB;AACT;AAEA,SAASQ,cACPU,YACApB,QACAC,SACsB;CACtB,IAAI,CAACmB,WAAWC,MAAMH,MAEpB,MADAI,QAAQC,MAAM,qBAAqBH,WAAWC,IAAI,GACxCG,MAAM,uBAAuB;CAazC,OAAOM,YAAYL;EATjB,GAAIxB,SAASJ,aACT,CAAC,IACD;GAAC6B,KAAK,wBAA0BN,WAAWF;GAAQS,OAAOnC;EAAwB;EACtF0B,MAAME,WAAWF;EACjBU,OAAOR,WAAWQ;EAClBP,MAAMD,WAAWC,KAAKH;EACtB,GAAGW,cAAc7B,QAAQoB,YAAYA,WAAWC,KAAKH,MAAMjB,OAAO;CAGjDwB,CAAU;AAC/B;AAEA,SAASI,cACP7B,QACAqB,MACAU,UACA9B,SACA;CACA,IAAM+B,gBAAiDF,YAAY;EAEjEG,kBAAmBZ,KAAKpB,SAA0BiC,UAAUC;EAE5DC,iBAAkBf,KAAKpB,SAA8BiC,UAAUE;CACjE,CAAC;CACD,OAAON,YAAY;EACjB7B,SAASoC,OAAOC,KAAKN,aAAa,CAAC,CAACpB,SAASoB,gBAAgBO,KAAAA;EAC7DC,QAAQC,MAAMC,QAAQrB,MAAMpB,SAASC,IAAI,IACrCmB,MAAMpB,SAASC,KAAKM,KAAKmC,MACvB,OAAOA,KAAM,WAAWA,IAAKA,EAAEC,SAASD,EAAEf,KAC5C,IACAW,KAAAA;EACJ1B,IAAI,QAAQQ,QAAQU,aAAa,UAAUc,QAAQxB,MAAMrB,QAAQC,OAAO,IAAIsC,KAAAA;EAC5E5B,IAAI,QAAQU,QAAQU,aAAa,cAAce,eAAezB,IAAI,IAAIkB,KAAAA;EACtEzB,QACE,YAAYO,QAAQvB,YAAYQ,SAASyB,QAAQ,IAC7CgB,gBAAgB/C,QAAQqB,MAAMpB,OAAO,IACrCsC,KAAAA;EACNS,aACEjB,aAAa,WAAW,YAAYV,OAChC4B,qBAAqB5B,MAAMrB,QAAQC,OAAO,IAC1CsC,KAAAA;EACNW,UACEnB,aAAa,WAAW,YAAYV,OAChC8B,kBAAkB9B,MAAMrB,QAAQC,OAAO,IACvCsC,KAAAA;EACNa,QACE,OAAO/B,KAAK+B,UAAW,aAAc,aAAuB/B,KAAK+B,SAAS,KAAOb,KAAAA;EACnFe,UACE,OAAOjC,KAAKiC,YAAa,aACpB,aACDjC,KAAKiC,WACH,KACAf,KAAAA;CACV,CAAC;AACH;AAEA,SAASQ,gBACP/C,QACAoB,YACAnB,SACA;CAmBA,QAlBemB,WAAWmC,YACtBnC,WAAWmC,UAAUC,SAASC,OAC5BA,GAAGC,SACCD,GAAGE,QACHF,GAAG3C,OAAON,KAAKoD,OAAO;EACpB,GAAGA;EACHvC,MAAM;GACJ,GAAGuC,EAAEvC;GAIL+B,QACE,OAAOK,GAAGL,UAAW,aAAaK,GAAGL,SAASK,GAAGL,SAAS,KAAOQ,EAAEvC,KAAK+B;EAC5E;CACF,EAAE,CACR,IACAhC,WAAWN,OAAAA,CAGZV,QAAQwD,MAAM,CAAC,CAAC,uBAAuB,kBAAkB,CAAC,CAACtD,SAASsD,EAAEvC,MAAMH,QAAQ,EAAE,CAAC,CAAC,CACxFd,QAAQwD,MAAMxE,kBAAkBwE,EAAEvC,IAAI,CAAC,CAAC,CACxCb,KAAKmD,UAAUE,gBAAgB7D,QAAQ2D,MAAMtC,MAAMsC,MAAMzC,MAAMjB,OAAO,CAAC;AAC5E;AAEA,SAAS4D,gBACP7D,QACAqB,MACAH,MACAjB,SACwB;CAExB,IAAM8B,WADmB/B,OAAOS,IAAIY,MAAMH,IAAI,IACZG,KAAKH,OAAQG,KAAKA,MAAMH,QAAQ;CAClE,OAAOY,YAAY;EACjB,GAAI7B,SAASJ,aAAa,CAAC,IAAI,EAAC8B,OAAOpC,8BAA6B;EAC9D2B;EACNG,MAAMU;EACNH,OAAOP,KAAKO;EACZ,GAAGC,cAAc7B,QAAQqB,MAAMU,UAAU9B,OAAO;CAClD,CAAC;AACH;AAEA,SAASkD,kBACPY,iBACA/D,QACAC,SACsC;CAEtC,IAAMiE,eADgBH,gBAAgBjD,OAAOmD,MAAML,MAAMA,EAAE1C,SAAS,UAC/C8C,CAAa,EAAE3C;CAChC,OAAC6C,gBAAgB,CAACrF,kBAAkBqF,YAAY,IAGpD,OAAOrB,QACL;EACE,GAAGqB;EACHrD,IAAIqD,aAAarD,GAAGT,QAAQC,MAAM,CAAChB,OAAOgB,GAAG,MAAM,CAAC;CACtD,GACAL,QACAC,OACF;AACF;AAEA,SAASgD,qBACPc,iBACA/D,QACAC,SACsC;CAEtC,IAAMmE,YADWL,gBAAgBjD,OAAOmD,MAAML,MAAMA,EAAE1C,SAAS,UAC7CiD,CAAQ,EAAE9C;CACxB,OAAC+C,aAAa,CAACvF,kBAAkBuF,SAAS,IAG9C,OAAOvB,QAAQuB,WAAWpE,QAAQC,OAAO;AAC3C;AAEA,SAAS4C,QACPwB,WACArE,QACAC,SAC0B;CAC1B,OAAOoE,UAAUxD,GACdT,QAAQiB,SAASjC,kBAAkBiC,IAAI,CAAC,CAAC,CACzCb,KAAKH,MACGwD,gBAAgB7D,QAAQK,GAAGA,EAAEa,MAAMjB,OAAO,CAClD;AACL;AAEA,SAAS6C,eAAezB,MAA2B;CACjD,OAAOA,KAAKV,GAAGH,KAAKH,OAAO,EACzBgB,MAAMlC,MAAckB,EAAEa,IAAI,EAC5B,EAAE;AACJ;AAEA,SAASY,YAA2CyC,KAAW;CAE7D,OADAlC,OAAOC,KAAKiC,GAAG,CAAC,CAACE,SAASC,QAASH,IAAIG,SAASnC,KAAAA,IAAY,OAAOgC,IAAIG,OAAO,CAAC,CAAE,GAC1EH;AACT;ACtNA,SAAgBS,sBAAsB;CACpC,IAAMC,SAOF,CAAC;CAEL,SAASI,eAAeC,YAA8B;EACpD,IAAMC,eAAeD,WAAWE,MAC1BC,SAASR,OAAOM;EACtB,IAAIE,QAAQ,OAAOA;EAEnB,IAAMN,YAAYJ,aAAgBO,UAAU,GAEtCI,OAAO;GACXP;GACAC,qBAH0BR,sBAAsBO,SAGhDC;EACF;EAEA,OADAH,OAAOM,gBAAgBG,MAChBA;CACT;CAEA,OAAOL;AACT;ACjBA,SAAOuB,2BAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAIL,CAAAC,QAAAC,aAA4BlB,SAAqC,GACjE,CAAAmB,OAAAC,YAA0BpB,SAA4B,GAEtDqB,YAAkBd,aAAaO,MAAKQ,QAA0BC,iBAAA,GAC9D,EAAAC,mBAAAC,SAAAC,kBAAoDlB,qBAAqBa,SAAS,GAClF,EAAAM,cAAAF,SAAAG,gBAA6CnB,gBAAgBY,SAAS,GAEtEQ,SAAe1B,UAAU,GAAC2B;CAAA,AAAAf,EAAA,OAAAc,SACuDC,KAAAf,EAAA,MAA3Ce,KAAAzB,gBAAgBwB,QAAQ,EAAAE,YAAa,GAAI,CAAC,GAAChB,EAAA,KAAAc,QAAAd,EAAA,KAAAe;CAAjF,IAAAE,kBAAsCF,IACtC,EAAAG,cAAAC,2BAA+CC,mBAAmBN,MAAM,GAACO,IAAAC;CAEzEvC,AAFyEiB,EAAA,OAAAS,qBAUnDY,KAAArB,EAAA,IAAAsB,KAAAtB,EAAA,OARZqB,WAAA;EACRZ,kBAAkB,CAAC,CAAAc,MACXC,MAAOrB,UAAUqB,CAAC,CAAC,CAAC,CAAAC,OACnBC,MAAA;GAGLrB,AAFAsB,QAAOvB,MAAOsB,CAAC,GAEfrB,SAASqB,CAAU;EAAC,CACrB;CAAC,GACHJ,KAAA,CAACb,iBAAiB,GAACT,EAAA,KAAAS,mBAAAT,EAAA,KAAAqB,IAAArB,EAAA,KAAAsB,KARtBvC,UAAUsC,IAQPC,EAAmB;CAAC,IAAAO;CAAA,AAAA7B,EAAA,OAAAS,qBAAAT,EAAA,OAAAY,gBAEEiB,KAAA,YAAA;EACvBxB,SAASyB,KAAAA,CAAS;EAClB,IAAA;GACE,MAAMlB,aAAa;GACnB,IAAAmB,WAAe,MAAMtB,kBAAkB;GACvCN,UAAUD,QAAM;EAAC,SAAA8B,IAAA;GACVN,IAAAA,MAAAA;GAGPrB,AAFAsB,QAAOvB,MAAO,gCAAgCsB,GAAC,GAE/CrB,SAASqB,GAAU;EAAC;CACrB,GACF1B,EAAA,KAAAS,mBAAAT,EAAA,KAAAY,cAAAZ,EAAA,KAAA6B,MAAAA,KAAA7B,EAAA;CAXD,IAAAiC,OAAaJ,IAab,EAAAtB,QAAA2B,aAA2BnC,OAAKiC;CAAA,AAAAhC,EAAA,OAAAO,UAAAP,EAAA,OAAAI,SAAAJ,EAAA,QAAAkB,gBAAAlB,EAAA,QAAAmB,0BAAAnB,EAAA,QAAAiC,QAAAjC,EAAA,QAAAa,eAAAb,EAAA,QAAAiB,mBAAAjB,EAAA,QAAAE,UAAAF,EAAA,QAAAW,iBAEvBqB,KAAA;EAAAzB;EAAAL;EAAAS;EAAAsB;EAAApB;EAAAT;EAAAa;EAAAC;EAAAC;CAUP,GAACnB,EAAA,KAAAO,QAAAP,EAAA,KAAAI,OAAAJ,EAAA,MAAAkB,cAAAlB,EAAA,MAAAmB,wBAAAnB,EAAA,MAAAiC,MAAAjC,EAAA,MAAAa,aAAAb,EAAA,MAAAiB,iBAAAjB,EAAA,MAAAE,QAAAF,EAAA,MAAAW,eAAAX,EAAA,MAAAgC,MAAAA,KAAAhC,EAAA;CAXH,IAAAmC,UACEH,IAqBAI;CAKqC,OALrCpC,EAAA,QAAAkC,YAAAlC,EAAA,QAAAmC,WAGAC,KAAA,oBAAA,0BAAA,UAAA;EAA2CD,OAAAA;EACxCD;CACH,CAAA,GAAqClC,EAAA,MAAAkC,UAAAlC,EAAA,MAAAmC,SAAAnC,EAAA,MAAAoC,MAAAA,KAAApC,EAAA,KAFrCoC;AAEqC;AAIzC,SAAAhB,mBAAAN,QAAA;CAAA,IAAAd,IAAAC,EAAA,CAAA,GAAAc;CAAA,AAAAf,EAAA,OAAAqC,OAAAC,IAAA,2BAAA,KAE6BvB,KAAAlB,oBAAoB,GAACG,EAAA,KAAAe,MAAAA,KAAAf,EAAA;CAA9C,IAAAuC,mBAAyBxB,IAAqBM;CAAA,AAAArB,EAAA,OAAAc,SAS7CO,KAAArB,EAAA,MAPDqB,KAAA,SAAAoB,cAAA;EAEE,IAAAC,aAAmB5B,OAAM6B,IAAKF,YAAY;EAC1C,IAAI,CAACC,YACH,MAAUd,MAAM,gBAAgBa,aAAY,YAAa;EAC1D,OACMF,iBAAiBG,UAAU;CAAC,GACpC1C,EAAA,KAAAc,QAAAd,EAAA,KAAAqB;CAPD,IAAAmB,iBAAAnB,IAOCC;CAMA,OANAtB,EAAA,OAAAwC,iBAMAlB,KAAAtB,EAAA,MAJMsB,KAAA;EAAAJ,eACS0B,mBAA0BJ,eAAeC,cAAY,CAAC,CAAAI;EAAU1B,yBACtD2B,mBACtBN,eAAeC,cAAY,CAAC,CAAAM;CAChC,GAAC/C,EAAA,KAAAwC,gBAAAxC,EAAA,KAAAsB,KAJDA;AAIC;ACnFL,SAAO2C,aAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KACqDF,KAAA,CAAA,GAAEF,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAA5D,IAAA,CAAAK,YAAAC,iBAAoCxB,SAAsBoB,EAAE,GAGtBK,KAAAR,MAAKL,QAAOc;CAAA,AAAAR,EAAA,OAAAD,QAIbS,KAAAR,EAAA,MAA1BQ,KAAAT,MAAKU,cAAeV,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAQ;CAAA,IAAAE;CAAA,AAAAV,EAAA,OAAAK,aAGXK,KAAAV,EAAA,MAFhBU,KAAA,oBAAC,eAAD;EAAoB,MAAA;YAClB,oBAAC,yBAAD,EAAqCL,WAAU,CAAA;CADnC,CAAA,GAEEL,EAAA,KAAAK,YAAAL,EAAA,KAAAU;CAAA,IAAAC;CAAA,AAAAX,EAAA,OAAAQ,MAAAR,EAAA,OAAAU,MANtBC,KAAA,oBAAC,wBAAD,EAAA,UACE,oBAAC,0BAAD,EAAA,UACE,qBAAC,oBAAD;EAAwCL,oBAAAA;YAAxC,CACGE,IACDE,EAFiB;IADI,CAAA,EADJ,CAAA,GASEV,EAAA,KAAAQ,IAAAR,EAAA,KAAAU,IAAAV,EAAA,KAAAW,MAAAA,KAAAX,EAAA;CAAA,IAAAY;CACE,OADFZ,EAAA,OAAAD,MAAAL,UAAAM,EAAA,OAAAW,MAV3BC,KAAA,oBAAC,4BAAD;EAAoC,QAAAL;YAClCI;CADyB,CAAA,GAWEX,EAAA,KAAAD,MAAAL,QAAAM,EAAA,KAAAW,IAAAX,EAAA,MAAAY,MAAAA,KAAAZ,EAAA,KAX7BY;AAW6B;ACrBjC,MAAasB,eAAerB,cAAiC,CAAC,CAAC;AAE/D,SAAOsB,qBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAC,YAAAC,MAAAC,OAAAC,aAA4CN,OAE5CH,WAAkBQ,OAAoBE,OAAMC,MAC5C,EAAAC,sBAA4BzB,eAAe,GAC3C,CAAA0B,eAAAC,oBAA0C/B,SAA6BiB,QAAQ,GAE/E,EAAAe,sBAAAC,uBAAmD1B,yBAAyB,GAC5E,EAAA2B,QAAAC,WAAyB3B,sBAAsB,GAE/C,EAAA8B,oBAA0BzB,mBADRD,aAAasB,QAAMG,iBACQD,CAAS,GAACG;CAAA,AAAAlB,EAAA,OAAAW,uBAGjBO,KAAAlB,EAAA,MAApCkB,KAAAtC,eAAe+B,oBAAoB,GAACX,EAAA,KAAAW,sBAAAX,EAAA,KAAAkB;CADtC,IAAA,EAAAC,cAAoBnC,aAClBkC,IACAN,mBAAkBQ,MAClBZ,iBACF,GAGAc,yBAA+B,CAAC,CADjBrC,cACkBoC,CAAM,CAAAE,QAAgBC,KAAAC,IAAAC;CAEvDjD,AAFuDuB,EAAA,OAAAJ,YAAAI,EAAA,OAAAS,iBAAAT,EAAA,OAAAW,wBAAAX,EAAA,OAAAiB,mBAAAjB,EAAA,OAAAsB,0BAAAtB,EAAA,OAAAmB,aAAAnB,EAAA,OAAAG,QAAAH,EAAA,OAAAK,YAAAL,EAAA,QAAAE,cAAAF,EAAA,QAAAc,UAE7CW,WAAA;EACR,IAAAE,mBAAyBvC,0BAA0Bc,UAAU;EAC7D,AACEN,YAAAe,wBAEAgB,kBAAgBC,uBAChBhC,aAAaa,iBAHb,CAICU,aAJD,CAKCG,0BALD,CAMCjB,aAGDK,iBAAiBd,QAAQ,GACrBN,aAAawB,MAAM,KAChBG,gBAAgB;GAAAd,MACbrB,aAAa,CAAA,GAAIqB,MAAMwB,iBAAgBxB,IAAK,CAAC;GAAC0B,YACxClB;EACd,CAAC;CAEJ,GACAe,KAAA;EACDxB;EACAC;EACAP;EACAa;EACAE;EACAM;EACAE;EACAL;EACAT;EACAiB;CAAsB,GACvBtB,EAAA,KAAAJ,UAAAI,EAAA,KAAAS,eAAAT,EAAA,KAAAW,sBAAAX,EAAA,KAAAiB,iBAAAjB,EAAA,KAAAsB,wBAAAtB,EAAA,KAAAmB,WAAAnB,EAAA,KAAAG,MAAAH,EAAA,KAAAK,UAAAL,EAAA,MAAAE,YAAAF,EAAA,MAAAc,QAAAd,EAAA,MAAAyB,IAAAzB,EAAA,MAAA0B,OAAAD,KAAAzB,EAAA,KAAA0B,KAAA1B,EAAA,MA/BDvB,UAAUgD,IAoBPC,EAWF;CAAC,IAAAI,IAAAC;CAAA,IAAA/B,EAAA,QAAAG,QAAAH,EAAA,QAAAE,YAAA;EAGA,IAAA8B,qBAAyB5C,0BAA0Bc,UAAU,GAC7D+B,wBAA8B5C,+BAA+Ba,UAAU;EAOxDF,AALS8B,KAAAH,oBAAgBxB,OAClCrB,aAAa,CAAA,GAAIqB,MAAMwB,mBAAgBxB,IAAK,CACpC,IAFU+B,KAAAA,GAGAH,KAAAE,wBAClBnD,aAAa,CAAA,GAAIqB,MAAM8B,qBAAqB,CACpC,IAFUC,KAAAA,GAETlC,EAAA,MAAAG,MAAAH,EAAA,MAAAE,YAAAF,EAAA,MAAA8B,IAAA9B,EAAA,MAAA+B;CAAA,OAAAA,AAAAD,KAAA9B,EAAA,KAAA+B,KAAA/B,EAAA;CAAA,IAAAmC;CAAA,AAAAnC,EAAA,QAAAJ,YAAAI,EAAA,QAAA8B,MAAA9B,EAAA,QAAA+B,MANRI,KAAA;EAAAzC,sBACiBoC;EAETnC,sBACSoC;EAETnC;CAEf,GAACI,EAAA,MAAAJ,UAAAI,EAAA,MAAA8B,IAAA9B,EAAA,MAAA+B,IAAA/B,EAAA,MAAAmC,MAAAA,KAAAnC,EAAA;CAXH,IAAAoC,UAGED,IAS8BE;CAAA,AAAArC,EAAA,QAAAD,QAEyCsC,KAAArC,EAAA,OAA1BqC,KAAAtC,MAAKuC,cAAevC,KAAK,GAACC,EAAA,MAAAD,OAAAC,EAAA,MAAAqC;CAAA,IAAAE;CAAyB,OAAzBvC,EAAA,QAAAoC,WAAApC,EAAA,QAAAqC,MAAlEE,KAAA,oBAAA,aAAA,UAAA;EAA8BH,OAAAA;YAAUC;CAA2B,CAAA,GAAwBrC,EAAA,MAAAoC,SAAApC,EAAA,MAAAqC,IAAArC,EAAA,MAAAuC,MAAAA,KAAAvC,EAAA,KAA3FuC;AAA2F;AChFpG,SAAOa,UAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAC,OAAAC,aAA0BJ,OAC1BK,KAAWV,MAAM,GAACW;CAAA,AAAAL,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAGdF,KAAAG,OAAMC,KAAMvB,KAAK,CAAC,CAAAwB,OACRC,YAAY,GAACX,EAAA,KAAAK,MAAAA,KAAAL,EAAA;CAAA,IAAAY;CAAA,AAAAZ,EAAA,OAAAG,WACkDS,KAAAZ,EAAA,MAFzEY,KAAAP,GACuBQ,KAChBC,QAAS,oBAAC,UAAD;EAA6BA,SAAAA;EAAeX;CAAQ,GAArCW,GAAqC,CAAI,GAACd,EAAA,KAAAG,UAAAH,EAAA,KAAAY;CAJ7E,IAAAG,QAEIH,IAIHI;CAAA,AAAAhB,EAAA,OAAAE,QAEkDc,KAAAhB,EAAA,MAAdgB,KAAAC,QAAQf,KAAK,GAACF,EAAA,KAAAE,OAAAF,EAAA,KAAAgB;CAAnD,IAAAE,iBAAqCF,IAAwBG;CAAA,AAAAnB,EAAA,OAAAkB,iBAWrDC,KAAAnB,EAAA,MANFmB,KAAA,oBAAC,QAAD;EACQ,MAAA,oBAAC,MAAD,EAAcD,QAAAA,eAAc,CAAA;EAC5B,OAAA;EACG,SAAA;EACJ,MAAA;EACG,QAAA;CAAC,CAAA,GACTlB,EAAA,KAAAkB,gBAAAlB,EAAA,KAAAmB;CAAA,IAAAC;CAAA,AAAApB,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAGea,KAAA,EAAAC,WAAY,IAAG,GAACrB,EAAA,KAAAoB,MAAAA,KAAApB,EAAA;CAAA,IAAAsB;CAAA,AAAAtB,EAAA,OAAAe,QAAgBO,KAAAtB,EAAA,MAA7CsB,KAAA,oBAAC,MAAD;EAAa,OAAAF;YAAmBL;CAA3B,CAAA,GAAwCf,EAAA,KAAAe,OAAAf,EAAA,KAAAsB;CAAA,IAAAC;CAAA,AAAAvB,EAAA,QAAAM,OAAAC,IAAA,2BAAA,KAC1CgB,KAAA,EAAAC,QAAS,GAAI,GAACxB,EAAA,MAAAuB,MAAAA,KAAAvB,EAAA;CAAA,IAAAyB;CACvB,OADuBzB,EAAA,QAAAI,MAAAJ,EAAA,QAAAmB,MAAAnB,EAAA,QAAAsB,MAZzBG,KAAA,oBAAC,YAAD;EAEI,QAAAN;EAQEf;EACE,MAAAkB;EACG,SAAAC;CAAc,CAAA,GACvBvB,EAAA,MAAAI,IAAAJ,EAAA,MAAAmB,IAAAnB,EAAA,MAAAsB,IAAAtB,EAAA,MAAAyB,MAAAA,KAAAzB,EAAA,KAbFyB;AAaE;AAIN,SAAAC,SAAArB,IAAA;CAAA,IAAAL,IAAAC,EAAA,CAAA,GAAkB,EAAA0B,SAAAb,KAAAX,aAAAE,IAMjBO;CAAA,AAAAZ,EAAA,OAAAc,OAAAd,EAAA,OAAAG,YAC6BS,WAAMT,SAASP,IAAIkB,GAAG,CAAC,GAACd,EAAA,KAAAc,KAAAd,EAAA,KAAAG,UAAAH,EAAA,KAAAY,MAAAA,KAAAZ,EAAA;CAApD,IAAA4B,UAAgBhB,IAAsDI;CAAA,AAAAhB,EAAA,OAAAc,MAI1BE,KAAAhB,EAAA,MAArBgB,KAAA,oBAAC,MAAD,EAAcF,QAAAA,IAAG,CAAA,GAAId,EAAA,KAAAc,KAAAd,EAAA,KAAAgB;CAAA,IAAAG;CAA6C,OAA7CnB,EAAA,OAAAc,OAAAd,EAAA,OAAA4B,WAAA5B,EAAA,OAAAgB,MAArCG,KAAA,oBAAC,UAAD;EAAgB,MAAAH;EAA8BF,OAAAA;EAAWA,MAAAA;EAAcc;CAAO,CAAA,GAAI5B,EAAA,KAAAc,KAAAd,EAAA,KAAA4B,SAAA5B,EAAA,KAAAgB,IAAAhB,EAAA,KAAAmB,MAAAA,KAAAnB,EAAA,IAAlFmB;AAAkF;AAG3F,SAAgBF,QAAQY,UAA+B;CACrD,OAAOA,YAAYlB,aAAakB,QAAQ,IAAIA,WAAW;AACzD;AAEA,SAASlB,aAAakB,UAA0C;CAC9D,OAAOA,YAAY3C;AACrB;ACnDA,SAAOgD,mBAAAC,OAAAC,YAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAC6C,OAD7CF,EAAA,OAAAD,aAC6CG,KAAAF,EAAA,MAA7BE,KAAAN,kBAAkBG,UAAU,GAACC,EAAA,KAAAD,YAAAC,EAAA,KAAAE,KAA7BA;AAA6B;ACgBpD,SAASuB,OAAKA,MAA0D;CACtE,OAAOA;AACT;AAMA,MAAaI,mBAAwC;CACnDC,MAAM;CACNC,UAAUC,OAAuB;EAC/B,IAAM,EAACC,QAAQC,WAAUlB,sBAAsB,GACzCmB,YAAYb,aAAaW,QAAQG,iBAAiB,GAClDC,SAASxB,UAAU,EAACyB,YAAYjB,gCAA+B,CAAC,GAChE,EACJkB,YAAYC,iBACZC,MACAC,YACAd,oBACAD,yBACEK,OACEW,kBAAkBF,KAAKG,WAAW,GAClCC,WAAWL,gBAAgBK,aAAa,IAExCC,gBAAgBb,OAAOc,WAAWC,UAAUC,eAE5CC,UAAUV,iBAAiBU,SAC3BC,iBAAiBR,mBAAmBO,SAASE,UAAUC,iBAEvDC,oBACJH,kBACAvB,sBACAK,OAAOc,WAAWQ,OAAON,eAAeO,SAAS5B,mBAAmBE,IAAI,GACpE2B,6BACJN,kBACAvB,uBACE,CAACkB,iBAAiB7B,kBAAkBuB,eAAe,KACnDM,eAAeU,SAAS5B,mBAAmBE,IAAI,IAE7C4B,WAAW,CAAC,EAAE9B,uBAAuB6B,8BAA8BH,qBAEnE,EAACK,OAAOC,eAAeC,UAAUC,kBAAkBC,cAAajD,gBAAgB,GAChFkD,SAASzD,OAAOqD,aAAa;EACnCI,OAAOC,UAAUL;EACjB,IAAMM,eAAe3D,OAAOwD,SAAS;EACrCG,aAAaD,UAAUF;EAEvB,IAAMI,iBAAiB5C,aAAaY,SAAS,GACvCY,YAAYhC,oBAAoB;GACpC+C;GACAM,iBAAiBzC,wBAAwB;GACzC0C,MAAMF,eAAepB;EACvB,CAAC,GAEKuB,aAAarC,OAAOc,WAAWuB,YAC/BC,eAAetC,OAAOc,WAAWC,UAAUwB,eAE3CC,0BAA0BnE,cAAc;GAC5C,IAAI,CAACoD,YAAY,CAACa,gBAAgB,CAACd,4BACjC;GAEF,IAAMkB,QAAQlC,KAAKG,SAAS,cAAc;GAC1C,OAAOnB,OAAK;IACVmD,MAAM;IACNC,MAAMV,eAAeW,gBAEf,oBAAC,KAAD;KAAK,OAAO,EAACC,QAAQ,GAAE;eACrB,oBAAC,SAAD,EAAS,OAAO,EAACC,WAAW,kBAAiB,EAAE,CAAA;IAC5C,CAAA,IAEP7E;IACJwE;IACAM,gBAAgB;KACVd,eAAeW,WAAW,CAACP,gBAAgB,CAAC7B,cAGhDK,UAAU;MACRwB;MACAW,eAAezC;MACf6B,YAAYnD,yBAAyBmD,YAAY;OAC/CjC;OACAK;OACAH,YAAYX;MACd,CAAC;MACDc,YAAYA,cAAc;MAC1ByC,oBAAoBjB,aAAaD,UAC7B/C,sBAAsBgD,aAAaD,OAAO,IAC1C,CAAA;KACN,CAAC;IACH;IACAmB,gBAAgB;IAChBC,UAAUlB,eAAeW,WAAWjC;GACtC,CAAC;EACH,GAAG;GACDa;GACAa;GACAxB;GACAuB;GACA5B;GACAyB,eAAeW;GACfrB;GACAhB;GACAI;GACAR;GACAT;EAAkB,CACnB,GACK0D,iBAAiB9D,oBAAoB,GACrC+D,uBAAuBxE,oBAAoB;GAC/C+C;GACAM,iBAAiBzC,wBAAwB;GACzC0C,MAAMiB,eAAeC;EACvB,CAAC,GAEKC,WAAWvD,OAAOc,WAAWQ,OAAOkC,cACpCC,wBAAwBpF,cAE1BoD,YAAYJ,oBACR7B,OAAK;GACHmD,MAAM;GACNC,MAAMS,eAAeK,2BAEf,oBAAC,KAAD;IAAK,OAAO,EAACZ,QAAQ,GAAE;cACrB,oBAAC,SAAD,EAAS,OAAO,EAACC,WAAW,kBAAiB,EAAE,CAAA;GAC5C,CAAA,IAEP7E;GACJwE,OAAO;GACPM,gBAAgB;IACVK,eAAeK,sBAAsB,CAACjD,eAGtCwB,aAAaD,WACf/C,sBAAsBgD,aAAaD,OAAO,GAE5CsB,qBAAqB;KACnBvC,UAAU;MACR,GAAGgB,OAAOC;MACV2B,KAAKlD;KACP;KACAmD,gBAAgBjE;KAChBsD,eAAezC;KACf0C,oBAAoBjB,aAAaD,UAC7B/C,sBAAsBgD,aAAaD,SAASuB,QAAQ,IACpD,CAAA;IACN,CAAC;GACH;GACAJ,gBAAgB;GAChBC,UAAUC,eAAeK,sBAAsB9C;EACjD,CAAC,IACD6B,KAAAA,GACN;GACEhB;GACA6B;GACA3D;GACAc;GACA4C,eAAeK;GACfrC;GACAb;GACAI;GACA2C;EAAQ,CAEZ;EAEA,OAAOlF,cAAc;GACf,OAACoD,YAAY,CAACxB,QAAQ4D,cAI1B,OAAOrE,OAAK;IACVmD,MAAM;IACNC,YAAY;IACZF,OAAO;IACPoB,UAAU,CAACtB,yBAAyBiB,qBAAqB,CAAC,CAACM,QACxDC,MAAoC,CAAC,CAACA,CACzC;IACAC,UAAU;GACZ,CAAC;EACH,GAAG;GAACxC;GAAUe;GAAyBiB;GAAuBxD;EAAM,CAAC;CACvE;AACF;AChBA,SAAgB4G,wBACdC,QACuB;CACvB,OAAO;EACL,GAAGA;EACHC,MAAM;CACR;AACF;AAEA,SAAgBC,2BAAuD;CACrE,OAAO,EACLD,MAAM,UACR;AACF;AAEA,SAAgBE,6BACdC,OACwB;CACxB,OAAO;EACL,GAAGA;EACHH,MAAM;CACR;AACF;AAEA,SAAgBI,sBACdC,OACA;CACA,IAAM,EACJC,QAAQ,EAACC,mBACPrC,sBAAsB,GACpB,EAACsC,kBAAkBC,wBAAuBxC,yBAAyB,GAEnEiB,WAAWnB,qBAAqB,GAChC,EAAC2C,MAAMC,cAAatD,SAAS,GAE7BuD,gBAAgBL,cAAcM,kBAAkB;EACpD,GAAGR;EACHnB;EAEAT,MAAM4B,MAAM5B;CACd,CAAC;CAED,OAAOnB,cAAc;EACnB,IAAMwD,QAAQP,cAAcO,OACtBC,gBAAgBH,eAClBI,OAAO7C,SAAS,CAAC,CAClB8C,KAAKC,SACGC,eAAe;GACpBD;GACAP;GAEAH;GACAC;EACF,CAAC,CACF,CAAC,CACDO,OAAO7C,SAAS,GACbiD,aACJL,eAAeM,UAAUN,eAAeO,OAAOJ,WAASA,OAAKlB,SAAS,OAAO;EAa/E,QAZee,eAAeM,SAC1BD,aACEL,gBACA,CACE;GACEf,MAAM;GACNc,OAAOA,SAAS;GAChBnB,UAAUoB;GACVS,UAAU;EACZ,CAAoC,IAExC,CAAA,MACa,CAAA;CAEnB,GAAG;EAACZ;EAAeL;EAAcI;CAAS,CAAC;AAC7C;AAEA,SAASQ,eAAeM,MAKgB;CACtC,IAAM,EAACP,SAAQO;CACf,QAAQP,KAAKlB,MAAb;EACE,KAAK,UACH,OAAO2B,iBAAiB;GAAC,GAAGF;GAAM1B,QAAQmB;EAAI,CAAC;EACjD,KAAK;GACH,IAAMvB,WAAWuB,KAAKvB,UAClBqB,OAAO7C,SAAS,CAAC,CAClB8C,KAAKW,UAAUT,eAAe;IAAC,GAAGM;IAAMP,MAAMU;GAAK,CAAC,CAAC,CAAC,CACtDZ,OAAO7C,SAAS;GAInB,OAHKwB,UAAU0B,SAGR;IACL,GAAGH;IACHY,gBAAgB;IAChBN,UAAU;IACV7B;GACF,IAPE;EASJ,SACE,OAAOuB;CACX;AACF;AAEA,SAASS,iBAAiBF,MAKvB;CACD,IAAM,EAAC1B,QAAQY,WAAWH,kBAAkBC,wBAAuBgB;CACnE,OAAO;EACL,GAAG1B;EACHN,gBAAgB;GACd,eAAesC,YAAY;IACzB,IAAML,OAAwB;KAC5BM,OAAOzD;KACP0D,MAAMjE,UAAU,EAAE;KAClBkE,0BAAS,IAAIC,KAAK,EAAA,CAAEC,YAAY;KAChCC,UAAU,CACR;MACEL,OAAO3D;MACP4D,MAAMjE,UAAU,EAAE;MAClBS,MAAML;MACN8D,0BAAS,IAAIC,KAAK,EAAA,CAAEC,YAAY;KAClC,CAAC;IAEL;IACA,IAAI;KACF5B,iBAAiBkB,IAAI;KACrB,IAAMY,eAAevC,OAAON,WAAW;KACvC,AAAI6C,wBAAwB5C,WAC1B,MAAM4C;IAEV,SAASC,KAAU;KAEjB5B,AADA6B,QAAQC,MAAM,4BAA4B1C,QAAQwC,GAAG,GACrD5B,UAAU;MACRG,OAAO;MACP4B,aAAaH,KAAKI;MAClBC,QAAQ;KACV,CAAC;IACH,UAAU;KACRnC,oBAAoBiB,IAAI;IAC1B;GACF;GACA,UAAe;EACjB;EACAI,gBAAgB;EAChBe,UAAU;CACZ;AACF;AClUA,SAASoB,OAAKA,MAA0D;CACtE,OAAOA;AACT;AAEA,MAAaC,0BAA+C;CAC1DC,MAAM;CACNC,UAAUC,OAAO;EACf,IAAMC,UAAUX,WAAWU,MAAME,IAAI,GAC/B,EAACC,kBAAiBlB,gBAAgB,GAElC,EAACmB,QAAQC,WAAUjB,sBAAsB,GAEzC,EAACoB,iBAAiBC,YAAWd,mBADjBD,aAAaU,QAAQG,iBACeD,CAAS,GACzDI,eAAe9B,WAAWS,YAAY,GACtC,EAACsB,yBAAwBzB,yBAAyB,GAElD0B,WAAW,CAAC,CAACF,gBAAgBT,YAAYS,cAAcG;EAE7D,OAAOhC,cAAc;GACf,OAAC+B,YAAY,CAACF,eAKlB,OAAOd,OAAK;IACVmB,MAAM;IACNC,MAAMP,gBAEA,oBAAC,KAAD;KAAK,OAAO,EAACQ,QAAQ,GAAE;eACrB,oBAAC,SAAD,EAAS,OAAO,EAACC,WAAW,kBAAiB,EAAE,CAAA;IAC5C,CAAA,IAEPzC;IACJ0C,OAAO;IACPC,gBAAgB;KACVX,cAGJ;UAAI,CAAChB,aAAaY,MAAM,GAAG;OACzBF,cAAchB,eAAe;SAC1BI,iBAAiBU;SAEjBT,mBAAmBsB,KAAAA;OACtB,CAAC;OACD;MACF;MACA,gBAAqB;OAACZ,MAAMD;OAASoB,YAAYV;MAAoB,CAAC;KADtE;IAEF;IACAW,gBAAgB;IAChBC,UAAUd;IACVe,QAAQ,CAACd,aAAae;GACxB,CAAC;EACH,GAAG;GACDb;GACAF;GACAF;GACAP;GACAU;GACAF;GACAJ;GACAF;EAAa,CACd;CACH;AACF;AClEA,SAASqC,OAAKA,MAA0D;CACtE,OAAOA;AACT;AAEA,MAAaC,sBAA2C;CACtDC,MAAM;CACNC,UAAUC,OAAO;EACf,IAAMC,UAAUR,WAAWO,MAAME,IAAI,GAE/B,EAACC,WAAUZ,sBAAsB,GAEjC,EAACe,eAAeC,YAAWZ,iBADfD,aAAaS,QAAQE,iBACWD,CAAS,GAErDI,eAAevB,WAAWO,YAAY,GACtC,EAACiB,yBAAwBnB,yBAAyB,GAElDoB,WAAW,CAAC,CAACF,gBAAgBP,YAAYO,cAAcG;EAE7D,OAAOzB,cAAc;GACdwB,cAKL,OAAOd,OAAK;IACViB,MAAM;IACNC,MAAMP,gBAEA,oBAAC,KAAD;KAAK,OAAO,EAACQ,QAAQ,GAAE;eACrB,oBAAC,SAAD,EAAS,OAAO,EAACC,WAAW,kBAAiB,EAAE,CAAA;IAC5C,CAAA,IAEPlC;IACJmC,OAAO;IACPC,gBAAgB;KACVX,WAGJ,cAAmB;MAACL,MAAMD;MAASkB,YAAYV;KAAoB,CAAC;IACtE;IACAW,gBAAgB;IAChBC,UAAUd;GACZ,CAAC;EACH,GAAG;GAACG;GAAUJ;GAAeL;GAASQ;GAAsBF;EAAO,CAAC;CACtE;AACF;ACrDA,SAAOkB,cAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC,IAAAC;CAAA,AAAAH,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KAICH,KAAA,oBAAC,MAAD;EAAY,MAAA;EAAU,OAAA,EAAAI,YAAa,SAAQ;YAAG;CAAzC,CAAA,GAIaH,KAAA,CAAC,QAAQ,GAACH,EAAA,KAAAE,IAAAF,EAAA,KAAAG,OAAAD,KAAAF,EAAA,IAAAG,KAAAH,EAAA;CAAA,IAAAO;CAMtB,OANsBP,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KANhCE,KAAA,oBAAC,SAAD;EAEI,SAAAL;EAIkB,oBAAAC;EACX,SAAA;EACC,WAAA;EACV,QAAA;YAEA,oBAAC,UAAD,CAAS,CAAA;CAXH,CAAA,GAYEH,EAAA,KAAAO,MAAAA,KAAAP,EAAA,IAZVO;AAYU;ACgBd,SAASwC,KAAKA,MAA0D;CACtE,OAAOA;AACT;AAEA,MAAaC,qBAA0C;CACrDC,MAAM;CACNC,UAAUC,OAAO;EACf,IAAM,EAACC,eAAcD,OAEf,EACJE,gBACAC,eACAC,sBACAC,eACAC,gBACAC,WACAC,kBACAC,oBACAC,cACAC,sBACAC,wBACExC,yBAAyB,GAEvB,EAACyC,OAAOC,UAAUC,cAAa5C,gBAAgB,GAC/C6C,cAAcrD,OAAOmD,QAAQ,GAC7BG,eAAetD,OAAOoD,SAAS;EACrCE,aAAaC,UAAUH;EAEvB,IAAMI,cAAcjD,eAAe,GAC7BkD,WAAW,CAAClB,gBACZmB,UAAUtC,WAAWiB,MAAMsB,IAAI,GAC/BC,WAAW7C,YAAYoC,UAAUO,OAAO,GACxCG,mBAAmBtB,gBAAgBuB,KAEnC,EAACC,0BAAyBpD,yBAAyB;GACvDkC;GACAmB,iBAAiBvB,wBAAwB;EAC3C,CAAC,GAEKwB,eAAe,CAAC,CAACnD,iBAAiBgC,oBAAoBc,QAAQ,GAC9DM,kBACJ7C,mBAAmBgB,MAAMsB,MAAMrB,UAAU,KACzC2B,gBACAhD,sBAAsB6B,kBAAkB,KACxCR,WAAW6B,aAAa,IAEpBC,cAAcrE,eAEfwC,gBAAgB8B,UAAU,CAAA,EAAA,CAAIC,MAC5BC,MAAMA,EAAEZ,SAASC,YAAaF,YAAAA,gBAA+Ba,EAAEZ,SAASD,OAC3E,GACF;GAACnB,gBAAgB8B;GAAQX;GAASE;EAAQ,CAC5C,GAEMY,iBAAiBJ,aAAaK,MAG9BG,aAFkBhC,WAAWT,SAAAA,mBACZuB,YAAYX,cAG7B8B,qBAAqB/C,wBAAwBM,UAAUC,KAAK,GAC5DyC,iBAAiB/C,oBAAoBK,UAAUC,KAAK,GACpD0C,kBAAkBzD,iBAAiBc,UACvC9B,MAAsB;GACpB,GAAG+B;GACH2C,YAAYhC;GACZP;GACAK;EACF,CAAC,CACH,GACMmC,qBAAqBnF,kBAEvB8E,aACIjC,eAAe/B,aAAa,IAC5B8B,cAAc9B,eAAe;IAC1Ba,iBAAiBiC;IAEjBhC,mBAAmBwD,KAAAA;EACtB,CAAC,GACP;GAACxC;GAAeC;GAAgBiC;GAAYlB;EAAO,CACrD,GAEMyB,sBAAsBrF,aACzBsF,gBAAmC;GAC9B,CAAC1B,WAAW,CAACc,kBAAkB,CAACX,oBAAoB,CAACb,wBAGzDe,sBAAsB;IACpBiB,YAAYhC;IACZa;IACAF,MAAMD;IACNE;IACAwB;IACAC,oBAAoB/B,aAAaC,UAC7BrC,sBAAsBoC,aAAaC,OAAO,IAC1C,CAAA;GACN,CAAC;EACH,GACA;GACEQ;GACAf;GACAU;GACAE;GACAC;GACAW;EAAc,CAElB,GAEMc,sBAAsBvF,cAExBqE,aAAamB,cAAcC,QAAQC,MAAMA,EAAEC,UAAUD,EAAEC,WAAWlC,aAAamC,EAAE,KAAK,CAAA,GACxF,CAACvB,aAAamB,cAAc/B,WAAW,CACzC,GAEMoC,qBAAqB7F,cACnBqE,aAAamB,cAAcC,QAAQC,MAAM,CAACA,EAAEC,MAAM,KAAK,CAAA,GAC7D,CAACtB,aAAamB,YAAY,CAC5B,GAEMA,eAAexF,cACb,CAAC,GAAGuF,qBAAqB,GAAGM,kBAAkB,GACpD,CAACN,qBAAqBM,kBAAkB,CAC1C,GAEMC,uBAAuB9F,cACpBwF,cAAcO,UAAUjB,sBAAsBE,mBAAmBD,iBACpE7C,KAAK;GACH8D,MAAM;GACNC,YAAY;GACZC,OAAO;GACPC,UAAU;IACR,GAAIX,cAAcY,KAAKf,gBACrBgB,gBAAgB;KACdhB;KACAiB,WAAWC,GAAQlB,YAAYM,UAAUN,YAAYM,WAAWlC,aAAamC;KAC7ER;KACAoB,QAAQ9C;KAERjB,eAAe,CAAC,CAACA;KACjB0B;IACF,CAAC,CACH,KAAK,CAAA;IACLW;IACAC;GAAc,CACf,CAACU,QAAQgB,MAAoC,CAAC,CAACA,CAAC;GACjDC,UAAU;EACZ,CAAC,IACDvB,KAAAA,GACH;GACDK;GACA/B,aAAamC;GACbR;GACA1B;GACAjB;GACA0B;GACAW;GACAE;GACAD;EAAc,CACf,GAEK4B,mBAAmB5G,kBAChBuD,YAAYE,SAClB,CAAA,CAAE,GAECoD,sBAA0D7G,mBAEtDwD,aAAaC,UAAUrC,sBAAsBoC,aAAaC,OAAO,IAAI,CAAA,EAAA,CAAIqD,SAC9EC,OAAO;GACN,IAAMlD,OAAOtD,aAAawG,GAAGlD,IAAI;GAKjC,OAJIA,KAAKmD,MAAMC,MAAM,OAAOA,KAAM,QAAQ,IAEjC,CAAA,IAEF;IACL,GAAGF;IAEGlD;GACR;EACF,CACF,GACC,CAAA,CAAE,GAECqD,mBAAmBjH,cAAc;GACrC,IAAI,CAACsC,MAAMsB,KAAKmC,QACd;GACK,IAAIzD,MAAMsB,KAAKmC,WAAW,GAC/B,OAAOhD;GAET,IAAMmE,aAAa5E,MAAMsB,KAAKuD,MAAM,GAAG,EAAE,GACnCtD,WAAW/C,YAAYwC,YAAYE,SAASnD,aAAa6G,UAAU,CAAC;GAC1E,OAAOrD,WAAWX,oBAAoBW,SAAS,EAAEtB,aAAa4C,KAAAA;EAChE,GAAG;GAACjC;GAAqBZ,MAAMsB;GAAMb;EAAkB,CAAC,GAElDqE,gBAAgBtF,sBAAsB;GAC1CuF,YAAY/E,MAAMsB,KAAKmC,SAAS,UAAU;GAC1CuB,qBAAqBrE;GACrBV;GACAQ;GACAa,MAAMtB,MAAMsB;GACZ+C;GACAC;GACAK;EACF,CAAC,GAEKM,yBAAyBvH,cAE3BkC,KAAK;GACH8D,MAAM;GACNC,MAAMpG;GACNqG,OAAO;GACPsB,UAAUtC;GACVuC,UAAU5C;EACZ,CAAC,GACH,CAACK,oBAAoBL,UAAU,CACjC,GAEM6C,QAAQ1H,cAEVkC,KAAK;GACH8D,MAAM;GACNC,MAAMnG;GACNoG,OAAOjF;GACPkF,UAAU;IACRL;IACAd;IACA,GAAGoC;IACHjD,mBAAmBoD;GAAsB,CAC1C,CACE9B,QAAQkC,MAA+D,CAAC,CAACA,CAAC,CAAC,CAC3ElC,QAAQkC,MAAOA,EAAE3B,SAAS,WAAU2B,EAAExB,SAASJ,MAAc;GAChEW,UAAU;GACVkB,gBAAgB;GAChBpB,QAAQ,CAACrC,mBAAmB,CAACW,sBAAsB,CAACE,mBAAmB,CAACD;EAC1E,CAAC,GACH;GAEEe;GACAyB;GACApD;GACAW;GACAE;GACAD;GACAqC;EAAa,CAEjB,GAEMS,cAAc7H,cAEhBkC,KAAK;GACH8D,MAAM;GACNQ,QAAQ,CAACrC;GACT8B,MAAMnG;GACN0H,UAAUtC;GACV0C,gBAAgB;GAChB1B,OAAOjF;GACPwG,UAAU5C;EACZ,CAAC,GACH;GAACV;GAAiBe;GAAoBL;EAAU,CAClD;EAaA,OATE,CAACW,cAAcO,UACf,CAACjB,sBACD,CAACE,mBACD,CAACD,kBACD,CAACqC,cAAcrB,SAER8B,cAGFH;CACT;AACF;AAEA,SAASrB,gBAAgB/D,OAOtB;CACD,IAAM,EAACkE,QAAQF,WAAWlB,qBAAqBjB,iBAAiBkB,gBAAe/C;CAE/E,SAAAyF,WAAA;EAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;EACoD,OADpDF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KACSF,KAAA,oBAAC,MAAD,EAAc,QAAAvH,QAAQ0E,YAAWY,IAAK,EAAC,CAAA,GAAI+B,EAAA,KAAAE,MAAAA,KAAAF,EAAA,IAA3CE;CAA2C;CAEpD,OAAOhG,KAAK;EACV8D,MAAM;EACNC,MAAM8B;EACNM,WAAW/B,YAAYrE,cAAckD,KAAAA;EACrCe,OAAO9E,oBAAoBiE,WAAW;EACtCmC,gBAAgBpC,oBAAoBC,WAAW;EAC/CiD,UAAU,CAACnE;EACXqC;CACF,CAAC;AACH;ACjUA,SAAgBuC,6BAA6BC,YAAgC;CAC3E,OAAO,WAAyC;EAC9C,OAAOA,aAAa,oBAAC,wBAAD,CAAuB,CAAA,IAAM;CACnD;AACF;AAEA,SAASE,yBAAyB;CAChC,IAAM,EAACC,gBAAgBC,mBAAkBV,yBAAyB,GAC5DW,gBAAcZ,cAAc;EAChC,IAAMY,cAAc,CAAC,GAAIF,gBAAgBG,SAAS,CAAA,GAAK,GAAIF,kBAAkB,CAAA,CAAG,CAAC,CAC7EG,QAAQC,QAAQ,CAACA,IAAIC,SAAS,CAACD,IAAIE,MAAM,CAAC,EAC1CC,SAASH,UAAQA,MAAII,YAAY,CAAA,CAAE,CAAC,CACrCC,MAAMC,MAAMA,EAAEC,4BAAW,IAAIC,KAAK,EAAA,CAAEC,QAAQ,IAAI,IAAID,KAAKF,EAAEC,OAAO,CAAC,CAACE,QAAQ,IAAI,GAAK;EACxF,IAAIZ,aACF,OAAOP,WAAWO,aAAa,CAAA,CAAE;EAEnC,IAAMa,SAASf,gBAAgBG,OAC3BC,QAAQC,UAAQ,CAACA,MAAIC,SAAS,CAACD,MAAIE,MAAM,CAAC,EAC1CG,MAAMC,QAAMA,IAAEC,4BAAW,IAAIC,KAAK,EAAA,CAAEC,QAAQ,IAAI,IAAID,KAAKF,IAAEC,OAAO,CAAC,CAACE,QAAQ,IAAI,GAAK;EACzF,OAAOC,SACHpB,WACE;GACEiB,SAASG,OAAOH;GAChBI,MAAMxB;GACNyB,MAAMF,OAAOE;GACbC,OAAOzB;EACT,GACA,CAAA,CACF,IACA0B,KAAAA;CACN,GAAG,CAACnB,gBAAgBG,OAAOF,cAAc,CAAC;CAE1C,OACE,oBAAC,MAAD,EAAA,UACE,oBAAC,MAAD;EAAM,MAAM;EAAG,SAAQ;YACrB,oBAAC,MAAD;GAAM,KAAK;GAAG,OAAO;aAClBC,iBAAe,oBAAC,iBAAD,EAAiB,UAAUA,cAAY,CAAA;EACnD,CAAA;CACF,CAAA,EACF,CAAA;AAEV;ACzCA,SAAOwB,4BAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAAC,kBAAwBN,gBAAgB,GAACO;CAAA,AAAAH,EAAA,OAAAE,gBAImCC,KAAAH,EAAA,MAA1EG,WAAMD,cAAcL,eAAe,GAAEC,mBAAmBM,KAAAA,EAAgB,CAAC,GAACJ,EAAA,KAAAE,eAAAF,EAAA,KAAAG;CAF5E,IAAAE,SAAeF,IAIdG;CAeO,OAfPN,EAAA,OAAAK,SAeOC,KAAAN,EAAA,MAZNM,KAAA,oBAAA,OAAA,EAAA,UACE,oBAAC,QAAD;EACK,IAAA;EACO,UAAA;EACJb,MAAAA;EACD,MAAA;EACI,SAAA;EACJ,KAAA;EACIY,SAAAA;EACJ,MAAA;EACK,WAAA;CAAM,CAAA,EAEd,CAAA,GAAAL,EAAA,KAAAK,QAAAL,EAAA,KAAAM,KAZNA;AAYM;ACtBV,MAAaO,uBAAuBN,cAAqDO,KAAAA,CAAS,GACrFC,+BAA+BF,qBAAqBG,UC8B3DwC,eAA8B,CAAA;AAEpC,SAAOC,mBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA;CACL,IAAIF,MAAKG,UAAS;EAAA,IAAAC;EAIP,OAJOH,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KAEdF,KAAA,oBAAC,MAAD;GAAM,QAAA;GAAY,MAAA;GAAmB,SAAA;aACnC,oBAAC,MAAD;IAAY,MAAA;cAAG;GAAV,CAAA;EADF,CAAA,GAEEH,EAAA,KAAAG,MAAAA,KAAAH,EAAA,IAFPG;CAEO;CAEV,IAAAA;CAC+C,OAD/CH,EAAA,OAAAD,QAC+CI,KAAAH,EAAA,MAAzCG,KAAA,oBAAC,4BAAD,EAA2B,GAAKJ,MAAK,CAAA,GAAIC,EAAA,KAAAD,OAAAC,EAAA,KAAAG,KAAzCA;AAAyC;AAElD,SAAAG,2BAAAP,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACE,EAAAM,aAAmBR,OAEnBS,QAAcT,MAAKS,OACnBC,KAAWD,OAAKE,KAChBC,SAAeH,OAAKG,QAEpB,EAAAC,QAAAC,cAA4B9B,gBAAgB,GAC5C+B,UAAgBF,OAAOtB,iBACvB,EAAAyB,UAAAC,cAAAC,uBAAqDxD,WAAWgC,iBAAiB,GACjFyB,cAAoBN,OAAOrB,mBAAiBY;CAAAgB,KAAA;EAG1C,IAAI,CAACJ,UAAQ;GACXZ,KAAOiB,KAAAA;GAAP,MAAAD;EAAgB;EACjB,IAAAE;EACDlB,AADCH,EAAA,OAAAW,UAAAX,EAAA,OAAAe,YACMM,MAACV,UAAAd,aAAAA,CAAsByB,MAAOC,MAAOA,EAACC,SAAUT,QAAc,CAAC,EAAAU,MAAAzB,EAAA,KAAAW,QAAAX,EAAA,KAAAe,UAAAf,EAAA,KAAAqB,MAAAA,KAAArB,EAAA,IAAtEG,KAAOkB;CAA+D;CAJxE,IAAAK,YAAkBvB,IAKIkB;CAAAM,KAAA;EAGpB,IAAI,CAACD,WAAS;GACZL,KAAOD,KAAAA;GAAP,MAAAO;EAAgB;EACjB,IAAAC;EAAA,AAAA5B,EAAA,OAAA0B,YACyCE,KAAA5B,EAAA,MAA7B4B,KAAA,CAAC,UAAU,EAAAH,MAAOC,UAAS,CAAC,GAAC1B,EAAA,KAAA0B,WAAA1B,EAAA,KAAA4B;EAA1C,IAAAC,OAAaD,IAA6BE;EAC1CT,AAD0CrB,EAAA,OAAA6B,QAAA7B,EAAA,OAAAkB,eACnCY,KAAAZ,cAAA;GAAA,GAAkBW;GAAM;GAAgB,EAAAJ,MAAOP,YAAW;EAAC,IAA3DW,MAAmE7B,EAAA,KAAA6B,MAAA7B,EAAA,KAAAkB,aAAAlB,EAAA,KAAA8B,MAAAA,KAAA9B,EAAA,IAA1EqB,KAAOS;CAAmE;CAL5E,IAAAC,aAAqCV,IAQrCW,SAAelD,UAAU,GAAC8C;CAAAK,KAAA;EAExB,IAAI,CAAChB,oBAAkB;GACrBW,KAAOR,KAAAA;GAAP,MAAAa;EAAgB;EACjB,IAAAH;EAEDF,AAFC5B,EAAA,OAAAgC,UAAAhC,EAAA,OAAAiB,sBAEMa,KAAAE,OAAME,IAAKjB,kBAAkB,GAACjB,EAAA,KAAAgC,QAAAhC,EAAA,KAAAiB,oBAAAjB,EAAA,MAAA8B,MAAAA,KAAA9B,EAAA,KAArC4B,KAAOE;CAAkD;CAL3D,IAAAK,iBAAqDP,IAapCE,KALGO,kBAAkBvB,SAASqB,cAK9BC,KAAAD,gBAA6BG;CAAA,AAAAtC,EAAA,QAAAmC,kBAAAnC,EAAA,QAAA8B,MAFrCQ,KAAA;EAAAH;EAAAC,aAEQN;CACf,GAAC9B,EAAA,MAAAmC,gBAAAnC,EAAA,MAAA8B,IAAA9B,EAAA,MAAAsC,MAAAA,KAAAtC,EAAA;CAJH,IAAAuC,UACSD,IAOTE,QAAchC,OAAKgC,OAAWC,IAAAC;CAE9BhF,AAF8BsC,EAAA,QAAAmC,kBAAAnC,EAAA,QAAAS,MAAAT,EAAA,QAAAO,YAAAP,EAAA,QAAAwC,SAEpBC,WAAA;EACR,AAAI,CAACD,SAADL,kBAAA,CAA6B1B,IAAEkC,WAAa,SAAS,KACvDpC,SAAS9B,IAAI0D,eAAcK,SAAUL,eAAcS,MAAO,CAAC,OAAO,CAAC,CAAC;CACrE,GACAF,KAAA;EAACF;EAAOL;EAAgB5B;EAAUE;CAAE,GAACT,EAAA,MAAAmC,gBAAAnC,EAAA,MAAAS,IAAAT,EAAA,MAAAO,UAAAP,EAAA,MAAAwC,OAAAxC,EAAA,MAAAyC,IAAAzC,EAAA,MAAA0C,OAAAD,KAAAzC,EAAA,KAAA0C,KAAA1C,EAAA,MAJxCtC,UAAU+E,IAIPC,EAAqC;CAED,IAAAG,KAAAhE,iBAAiB,GAACiE,eAAAC;CAAA,AAAA/C,EAAA,QAAA6C,MAAAC,gBAAA9C,EAAA,KAAA+C,aAAA/C,EAAA,QAAzD,CAAA+C,eAAAD,iBAAuCD,IAAkB7C,EAAA,MAAA6C,IAAA7C,EAAA,MAAA8C,eAAA9C,EAAA,MAAA+C;CAAA,IAAAC;CAAA,AAAAhD,EAAA,QAAAkB,eAAAlB,EAAA,QAAA+C,cAAA/C,EAAA,QAAAY,UAAAZ,EAAA,QAAAa,aAKzCmC,MAAAxB,SAAA;EACV,AAAI,CAACN,eAAeM,KAAIyB,WAAY,KAAKzB,KAAI,OAAQ,iBACnDX,UAEEjC,MAAkC;GAAA,GAC7BgC;IAEFrB,mBAAoBiC,KAAI,EAAG,EAAuBC;EACrD,CAAC,CACH,IAEA0B,iBAAiBJ,WAAWvB,IAAI,GAAG,CAAC;CACrC,GACFxB,EAAA,MAAAkB,aAAAlB,EAAA,MAAA+C,YAAA/C,EAAA,MAAAY,QAAAZ,EAAA,MAAAa,WAAAb,EAAA,MAAAgD,MAAAA,KAAAhD,EAAA;CAAA,IAAAoD;CAAA,AAAApD,EAAA,QAAA8C,iBAAA9C,EAAA,QAAAgD,MAfII,KAAA;EAAA,GACFN;EAAaC,YACJC;CAcd,GAAChD,EAAA,MAAA8C,eAAA9C,EAAA,MAAAgD,IAAAhD,EAAA,MAAAoD,MAAAA,KAAApD,EAAA;CAjBH,IAAAqD,eACSD,IAkBRE,KAAAC;CAID7F,AAJCsC,EAAA,QAAA+B,cAAA/B,EAAA,QAAAkB,eAAAlB,EAAA,QAAA+C,cAISO,YAAA;EACR,AAAIvB,cAAA,CAAeb,eACjB6B,WAAWhB,UAAU;CACtB,GACAwB,MAAA;EAACxB;EAAYb;EAAa6B;CAAU,GAAC/C,EAAA,MAAA+B,YAAA/B,EAAA,MAAAkB,aAAAlB,EAAA,MAAA+C,YAAA/C,EAAA,MAAAsD,KAAAtD,EAAA,MAAAuD,QAAAD,MAAAtD,EAAA,KAAAuD,MAAAvD,EAAA,MAJxCtC,UAAU4F,KAIPC,GAAqC;CAAC,IAAAC;CAAAC,KAAA;EAAA,IAAAC;EAAA,AAAA1D,EAAA,QAAAD,MAAA4D,UAKtCD,MAAA1D,EAAA,OAFkB0D,MAAA3D,MAAK4D,QAAQrC,KAC9BsC,OACF,GAAC5D,EAAA,MAAAD,MAAA4D,SAAA3D,EAAA,MAAA0D;EAFD,IAAAG,aAAmBH;EAGnB,IAAIG,YAAU;GAAA,IAAAC;GACZN,AADYxD,EAAA,QAAA6D,aACmCC,MAAA9D,EAAA,OAAxC8D,MAAA,oBAAC,kBAAD,EAA0BD,QAAAA,WAAU,CAAA,GAAI7D,EAAA,MAAA6D,YAAA7D,EAAA,MAAA8D,MAA/CN,MAAOM;GAAP,MAAAL;EAA+C;EAEjDD,MAAOpC,KAAAA;CAAS;CAPlB,IAAA2C,eAAmBP,KAQAE;CAAA,AAAA1D,EAAA,QAAA+B,cAAA/B,EAAA,QAAAmC,kBAAAnC,EAAA,QAAAW,UAAAX,EAAA,QAAAO,YAAAP,EAAA,QAAAe,YAKb2C,MAAA,oBAAC,mBAAD;EAEW3C,SAAAA;EACGgB;EACJpB;EACQwB;EACN5B;CAAQ,GALbQ,QAKa,GAClBf,EAAA,MAAA+B,YAAA/B,EAAA,MAAAmC,gBAAAnC,EAAA,MAAAW,QAAAX,EAAA,MAAAO,UAAAP,EAAA,MAAAe,UAAAf,EAAA,MAAA0D,OAAAA,MAAA1D,EAAA;CAAA,IAAA8D;CAAA,AAAA9D,EAAA,QAAAkB,cAC2C4C,MAAA9D,EAAA,OAA5C8D,MAAA5C,eAAe,oBAAC,2BAAD,CAA0B,CAAA,GAAGlB,EAAA,MAAAkB,aAAAlB,EAAA,MAAA8D;CAAA,IAAAE;CAAA,AAAAhE,EAAA,QAAA+B,cAAA/B,EAAA,QAAA+D,gBAAA/D,EAAA,QAAAqD,gBAAArD,EAAA,QAAAD,SAE5CiE,MAAAjC,cAAA,CAAe8B,gBACd,oBAAC,uBAAD;EAAsB,GAAKR;YACzB,oBAAA,OAAA;GAAY,OAAA,EAAAY,YAAa,SAAQ;aAC/B,oBAAC,WAAD;IAAU,GAAKlE;IAAqBgC,cAAAA;GAAU,CAAA;EAC1C,CAAA;CAHc,CAAA,GAKvB/B,EAAA,MAAA+B,YAAA/B,EAAA,MAAA+D,cAAA/D,EAAA,MAAAqD,cAAArD,EAAA,MAAAD,OAAAC,EAAA,MAAAgE,OAAAA,MAAAhE,EAAA;CAAA,IAAAkE;CAAA,AAAAlE,EAAA,QAAA+B,cAAA/B,EAAA,QAAAD,SAIAmE,MAAA,CAACnC,cAAchC,MAAKoE,cAAepE,KAAK,GAACC,EAAA,MAAA+B,YAAA/B,EAAA,MAAAD,OAAAC,EAAA,MAAAkE,OAAAA,MAAAlE,EAAA;CAAA,IAAAoE;CAAA,AAAApE,EAAA,QAAA+D,gBAAA/D,EAAA,QAAA0D,OAAA1D,EAAA,QAAA8D,OAAA9D,EAAA,QAAAgE,OAAAhE,EAAA,QAAAkE,OArB5CE,MAAA,qBAAC,OAAD;EAAY,KAAA;YAAZ;GACEV;GAQCI;GAEAE;GAQAH;GAEAK;EArBG;KAsBElE,EAAA,MAAA+D,cAAA/D,EAAA,MAAA0D,KAAA1D,EAAA,MAAA8D,KAAA9D,EAAA,MAAAgE,KAAAhE,EAAA,MAAAkE,KAAAlE,EAAA,MAAAoE,OAAAA,MAAApE,EAAA;CAAA,IAAAqE;CACqB,OADrBrE,EAAA,QAAAuC,WAAAvC,EAAA,QAAAoE,OAvBVC,MAAA,oBAAC,8BAAD;EAAqC9B,OAAAA;YACnC6B;CAD2B,CAAA,GAwBEpE,EAAA,MAAAuC,SAAAvC,EAAA,MAAAoE,KAAApE,EAAA,MAAAqE,OAAAA,MAAArE,EAAA,KAxB/BqE;AAwB+B;AAxHnC,SAAAT,QAAAU,GAAA;CAAA,OAuF8BA,EAACC,SAAU,WAAWD,EAACE,cAAe;AAAQ;AAqC5E,SAAAnC,kBAAAoC,WAAAtC,gBAAA;CAAA,IAAAnC,IAAAC,EAAA,CAAA,GAAAE;CAAAgB,KAAA;EAKI,IAAI,CAACsD,WAAS;GACZtE,KAAOiB,KAAAA;GAAP,MAAAD;EAAgB;EAElB,IAAIsD,cAAAA,cAA6B;GAC/BtE,KAAOgC;GAAP,MAAAhB;EAAqB;EACtB,IAAAE;EAAA,AAAArB,EAAA,OAAAyE,YAEmCpD,KAAArB,EAAA,MAAvBqB,KAAA1C,aAAa8F,SAAS,GAACzE,EAAA,KAAAyE,WAAAzE,EAAA,KAAAqB;EAApC,IAAAG,OAAaH,IACbqD,gBAAkDvC;EAClD,KAAA,IAAAwC,IAAa,GAAGA,IAAInD,KAAIyB,QAAS0B,KAAG;GAClC,IAAAC,UAAgBpD,KAAKmD,IACrBE,QAAcH,eAAa/D,OAAaW,MAACC,MAAOA,EAACqB,SAAUgC,OAAO;GAClE,IAAI,CAACC,OAAK;IACR1E,KAAOiB,KAAAA;IAAP,MAAAD;GAAgB;GAElB,IAAIwD,MAAMnD,KAAIyB,SAAU,GAAC;IACvB9C,KAAO0E,MAAKC;IAAZ,MAAA3D;GAAiB;GAEnB,IAAI0D,MAAKC,KAAKC,aAAc,UAAQ;IAClC5E,KAAOiB,KAAAA;IAAP,MAAAD;GAAgB;GAElBuD,gBAAgBG,MAAKC;EAAR;EAEf3E,KAAOuE;CAAa;CAAA,OAxBfvE;AAyBwB;AAGjC,SAAA6E,kBAAA7E,IAAA;CAAA,IAAAH,IAAAC,EAAA,EAAA,GAA2B,EAAAa,SAAAiB,YAAApB,QAAAwB,gBAAA5B,aAAAJ,IAazB,EAAA8E,QAAA5D,OAEIrC,sBAAsB,GADhB,EAAAkG,WAAAC,YAAA9D,IAAoBO;CAAA,AAAA5B,EAAA,OAAAW,UAAAX,EAAA,OAAAc,WAGRc,KAAAjB,QAAMW,MAAOC,MAAOA,EAACE,SAAUX,OAAO,GAACd,EAAA,KAAAW,QAAAX,EAAA,KAAAc,SAAAd,EAAA,KAAA4B,MAAAA,KAAA5B,EAAA;CAA7D,IAAAoF,gBAAsBxD,IACtByD,kBAAwB,CAAC,CAAClD,gBAAcS,QAAUuC,UAAUhD,gBAAcS,OAAOd;CAAAX,KAAA;EAG/E,IAAI,CAACkE,mBAAD,CAAqBvE,SAAO;GAC9BgB,KAAOV,KAAAA;GAAP,MAAAD;EAAgB;EAElB,IAAAmE,uBAA6BF,eAAaG,cAAcjD;EAExDR,AAFwD9B,EAAA,OAAAqF,gBAAA1E,UAAAX,EAAA,OAAAsF,wBAAAtF,EAAA,OAAAc,WAEjDwB,MADa+C,gBAAe1E,QAAaW,MAACmE,QAAOlE,IAACC,SAAUV,OAAO,EAAA,EACxDyE,cAAsBG,QACtCf,MAAO,CAACW,sBAAoBK,MAAOC,OAAQA,GAAEnE,SAAUkD,EAAClD,IAAK,CAC/D,GAACzB,EAAA,KAAAqF,gBAAA1E,QAAAX,EAAA,KAAAsF,sBAAAtF,EAAA,KAAAc,SAAAd,EAAA,KAAAsC,MAAAA,KAAAtC,EAAA,IAFD8B,KAAOQ;CAEN;CARH,IAAAuD,4BAAkC/D,IAYlCgE,cAAoBlI,OAAO,EAAK,GAAC0E;CAAA,AAAAtC,EAAA,OAAAoF,iBAAApF,EAAA,OAAA6F,6BAAA7F,EAAA,OAAAO,YAAAP,EAAA,QAAAc,WACvBwB,WAAA;EAIR,IAHIwD,YAAWC,WAAX,CAAwBjF,WAGxBsE,iBAAA,CAAkBS,2BAAyB5C,QAAQ;EAIvD,IAAA+C,QAAY1H,WAAU2H,KAAM,CAACvH,aAAa,CAAA,GAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;EAsC1DoH,AArCKV,kBACHY,QAAQA,MAAKE,OACXjI,OACE,CACEW,MAAmB;GAAA6C,MACXX;GAAOqF,OACNhH;GAAmBqC,MACpBV;GAAOyE,cACC,CAAA;EAChB,CAAC,CAAC,GAEJ,SACA,CAAC,UAAU,EAAE,CACf,CACF,IAGGH,eAAaG,cAAsBtC,WACtC+C,QAAQA,MAAKE,OAAQ,CAACxH,aAAa,CAAA,GAAI;GAAC;GAAU,EAAA+C,MAAOX,QAAO;GAAG;EAAc,CAAC,CAAC,CAAC,IAGlF+E,2BAAyB5C,WAC3B+C,QAAQA,MAAKE,OACXjI,OACE4H,0BAAyBO,IACvBC,QAKF,GACA,SACA;GAAC;GAAU,EAAA5E,MAAOX,QAAO;GAAG;GAAgB;EAAE,CAChD,CACF,IAEFP,SAASyF,KAAK,GACdF,YAAWC,UAAW;CAAH,GACpB/F,EAAA,KAAAoF,eAAApF,EAAA,KAAA6F,2BAAA7F,EAAA,KAAAO,UAAAP,EAAA,MAAAc,SAAAd,EAAA,MAAAsC,MAAAA,KAAAtC,EAAA;CAAA,IAAAyC;CAA4E,OAA5EzC,EAAA,QAAA+B,cAAA/B,EAAA,QAAAoF,iBAAApF,EAAA,QAAA6F,6BAAA7F,EAAA,QAAAO,YAAAP,EAAA,QAAAc,WAAE2B,KAAA;EAACV;EAAYxB;EAAUO;EAASsE;EAAeS;CAAyB,GAAC7F,EAAA,MAAA+B,YAAA/B,EAAA,MAAAoF,eAAApF,EAAA,MAAA6F,2BAAA7F,EAAA,MAAAO,UAAAP,EAAA,MAAAc,SAAAd,EAAA,MAAAyC,MAAAA,KAAAzC,EAAA,KA/C5EtC,UAAU4E,IA+CPG,EAAyE,GAErE;AAAI;AAlFb,SAAA4D,SAAAC,QAAA;CAAA,OAmE4C;EAAA,GAC3BA;EAAMH,OACF;EAA2BI,QAC1BD,OAAMC,QAAYH,IAACI,QAA6B;CAC1D;AAAC;AAvEb,SAAAA,SAAAC,GAAA;CAAA,OAsEiD;EAAAC,UAAW,CAAA;EAAE,GAAKD;CAAC;AAAC;AC7QrE,SAAOU,gBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAAC,YAAkBH,OAClBI,iBAAuBV,WAAWI,oBAAoC,CAAC,EAAAM,gBAGvEE,gBAAsBT,iBAAiBO,gBADzBV,WAAWE,uBAAuB,CAAC,EAA0BS,QAAIL,MAAKK,IACzB,GAACE;CAAA,AAAAN,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KAEtBF,KAAA,EAAAG,OAAQ,OAAM,GAACT,EAAA,KAAAM,MAAAA,KAAAN,EAAA;CAI1C,IAAAU,KAAAL,eAAaM,SAAb,gBAAsCC;CAAA,AAAAZ,EAAA,OAAAU,KAGtCE,KAAAZ,EAAA,MANPY,KAAA,oBAAC,MAAD;EAAY,MAAA;EAAQ,KAAA;EAAS,OAAA;EAAmB,UAAA;EAAa,UAAA;YAC3D,oBAAC,KAAD,EAAA,UACE,oBAAC,MAAD;GAAY,MAAA;GAAgB,cAAA;aACzBF;EADE,CAAA,EADH,CAAA;CADD,CAAA,GAMEV,EAAA,KAAAU,IAAAV,EAAA,KAAAY;CAEN,IAAAC,KAAAX,SAAcY;CACV,OADUd,EAAA,OAAAY,MAAAZ,EAAA,OAAAa,MATjBC,KAAA,qBAAC,MAAD;EAAW,KAAA;EAAS,OAAA;EAAgB,OAAAR;YAApC,CACEM,IAQCC,EATE;KAUEb,EAAA,KAAAY,IAAAZ,EAAA,KAAAa,IAAAb,EAAA,KAAAc,MAAAA,KAAAd,EAAA,IAVPc;AAUO;ACvBX,SAAgBE,iBAAiBC,OAAmB;CAClD,OAAOA,MAAMC,cAAc;EAAC,GAAGD;EAAOE,OAAO;EAAIC,OAAOH,MAAMG,QAAQ;EAAGC,SAAS;CAAK,CAAC;AAC1F;ACAA,SAAOW,sBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAC,OAAAC,aAA0BJ,OAE1BK,OAAaP,eAAe,GAACQ;CAAA,AAAAL,EAAA,OAAAG,YAAAH,EAAA,OAAAI,MAAAE,MAAAN,EAAA,OAAAE,SAEIG,WAAA;EAC/B,IAAAE,WAAiBL,QAAA,KAAcE,MAAIE,MAAJ;EAC/BH,SAASI,WAAWb,IAAIa,QAAkB,IAANX,MAAM,CAAC;CAAC,GAC7CI,EAAA,KAAAG,UAAAH,EAAA,KAAAI,MAAAE,IAAAN,EAAA,KAAAE,OAAAF,EAAA,KAAAK,MAAAA,KAAAL,EAAA;CAHD,IAAAQ,eAAqBH,IAKrBC,KAAWb,MAAM,GAACgB;CAAA,AAAAT,EAAA,OAAAU,OAAAC,IAAA,2BAAA,KAKAF,KAAA,EAAAG,QAAS,SAAQ,GAACZ,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CAInB,IAAAa,KAAA,GAAG,CAACX,SACFY,KAAA,CAACZ,OAAKa;CAAA,AAAAf,EAAA,OAAAQ,gBAAAR,EAAA,OAAAM,MAAAN,EAAA,OAAAD,MAAAiB,gBAAAhB,EAAA,OAAAa,MAAAb,EAAA,OAAAc,MALnBC,KAAA,oBAAA,OAAA;EAAY,OAAAN;YACV,oBAAC,QAAD;GAAO,GACDV,MAAKiB;GACLV;GACG,OAAAO;GACE,SAAAC;GACCN,UAAAA;GACA,UAAAT,MAAKiB,aAAaC;EAAS,CAAA;CAEnC,CAAA,GAAAjB,EAAA,KAAAQ,cAAAR,EAAA,KAAAM,IAAAN,EAAA,KAAAD,MAAAiB,cAAAhB,EAAA,KAAAa,IAAAb,EAAA,KAAAc,IAAAd,EAAA,MAAAe,MAAAA,KAAAf,EAAA;CAAA,IAAAkB;CAAA,AAAAlB,EAAA,QAAAM,KAICY,KAAAlB,EAAA,OAFPkB,KAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAAU,QAAA;YAC1B,oBAAA,SAAA;GAAgBZ,SAAAA;aAAI;EAA0C,CAAA;CAD3D,CAAA,GAEEN,EAAA,MAAAM,IAAAN,EAAA,MAAAkB;CAAA,IAAAC;CAEJ,OAFInB,EAAA,QAAAe,MAAAf,EAAA,QAAAkB,MAfXC,KAAA,oBAAC,MAAD,EAAA,UACE,qBAAC,MAAD;EAAW,KAAA;EAAS,OAAA;YAApB,CACEJ,IAWAG,EAZG;IADF,CAAA,GAiBElB,EAAA,MAAAe,IAAAf,EAAA,MAAAkB,IAAAlB,EAAA,MAAAmB,MAAAA,KAAAnB,EAAA,KAjBPmB;AAiBO;ACzBX,SAAOa,kBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACLC,iBAAuBd,WAAWS,oBAAoC,CAAC,EAAAK,gBACvE,EAAAC,aAAmBf,WAAWQ,iBAAiB,GAC/CQ,MAAYb,OAAuB,IAAI,GACvCc,KAAWf,MAAM,GACjB,EAAAgB,aAAmBP,OAAKQ,IAAAC;CAExBnB,AAFwBW,EAAA,OAAAS,OAAAC,IAAA,2BAAA,KAEdH,WAAA;EACRH,IAAGO,SAAuBC,cAAC,OAAc,CAAC,EAAAC,MAAC;CAAC,GAC3CL,KAAA,CAAA,GAAER,EAAA,KAAAO,IAAAP,EAAA,KAAAQ,OAAAD,KAAAP,EAAA,IAAAQ,KAAAR,EAAA,KAFLX,UAAUkB,IAEPC,EAAE;CAAC,IAAAM;CAAA,AAAAd,EAAA,OAAAM,WAE4DQ,KAAAd,EAAA,MAArCc,MAAAC,SAAkBT,SAASd,IAAIuB,IAAI,CAAC,GAACf,EAAA,KAAAM,UAAAN,EAAA,KAAAc;CAAlE,IAAAE,WAAiBF,IAA8DG;CAAA,AAAAjB,EAAA,OAAAG,WAe5Ec,KAAAjB,EAAA,MAZDiB,MAAAC,UAAA;EACE,IAAI,CAACA,MAAKC,IAAIC,SAAU,GAAG,KAAvB,CAA6BjB,UAAQ,OAChC;EAET,IAAIe,MAAKC,IAAIC,SAAU,GAA8B,KAAjD,CAA4BjB,SAAQiB,SAAU,GAAG,GAAC,OAC7C;EAGT,IAAAC,gBAAsBH,MAAKC,IAAIG,MAAO,GAAG,GACzCC,qBAA2BF,cAAaG,cAAeC,OAAsB,GAC7EC,gBAAsBL,cAAaM,MAAO,GAAGJ,qBAAqB,CAAC,CAAC,CAAAK,KAAM,GAAG;EAAC,OACvEzB,SAAQ0B,WAAYH,aAAa;CAAC,GAC1C1B,EAAA,KAAAG,UAAAH,EAAA,KAAAiB;CAbH,IAAAa,SAAeb;CAgBf,IAAI,CAACf,gBAAc;EAAA,IAAA6B;EACgB,OADhB/B,EAAA,OAAAD,QACgBgC,KAAA/B,EAAA,MAA1B+B,KAAAhC,MAAKiC,cAAejC,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAA+B,KAA1BA;CAA0B;CAClC,IAAAA;CAAA,AAAA/B,EAAA,OAAAS,OAAAC,IAAA,2BAAA,KAGsBqB,KAAA,EAAAE,UAAW,IAAG,GAACjC,EAAA,KAAA+B,MAAAA,KAAA/B,EAAA;CAAA,IAAAkC;CAQ9B,OAR8BlC,EAAA,OAAAE,kBAAAF,EAAA,QAAA8B,UAAA9B,EAAA,QAAAK,MAAAL,EAAA,QAAAgB,YAAAhB,EAAA,QAAAD,MAAAoC,SAApCD,KAAA,oBAAC,KAAD;EAAW,MAAA;EAAU,OAAAH;EAAsB3B;YACzC,oBAAC,mBAAD;GACMC;GACQH,YAAAA;GACFc;GACC,WAAAjB,MAAKoC;GACRL;EAAM,CAAA;CANd,CAAA,GAQE9B,EAAA,KAAAE,gBAAAF,EAAA,MAAA8B,QAAA9B,EAAA,MAAAK,IAAAL,EAAA,MAAAgB,UAAAhB,EAAA,MAAAD,MAAAoC,OAAAnC,EAAA,MAAAkC,MAAAA,KAAAlC,EAAA,KARNkC;AAQM;AA1CH,SAAAT,QAAAW,GAAA;CAAA,OAuB6DA,EAAChB,SAAU,GAAG;AAAC;AC9BnF,SAAgBqB,gBACdC,SACAC,WACsC;CACtC,OAAOD,QAAQE,MACZC,MACEA,EAAEC,SAAS,WAAWD,EAAEE,SAASJ,aACjCE,EAAEC,SAAS,WAAWD,EAAEF,cAAcA,SAC3C;AACF;AAEA,SAAgBK,mBACdN,SACAO,cAC4B;CAC5B,OAAOP,QAAQE,MACZC,MAA2BA,EAAEC,SAAS,cAAcD,EAAEK,SAASH,SAASE,YAC3E;AACF;ACdA,SAAOc,iBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAESF,KAAA;EAAC;EAAG;EAAG;EAAG;CAAC,GAACF,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAAA,IAAAK;CAKhB,OALgBL,EAAA,OAAAD,QAKhBM,KAAAL,EAAA,MALRK,KAAA,qBAAC,OAAD;EAAY,KAAAH;YAAZ;GACE,oBAAC,WAAD,EAAU,GAAKH,MAAK,CAAA;GACpB,oBAAC,YAAD,EAAW,GAAKA,MAAK,CAAA;GACrB,oBAAC,cAAD;IAAyB,WAAA;IAAQ,GAAMA;GAAK,CAAA;GAC5C,oBAAC,cAAD;IAAyB,WAAA;IAAQ,GAAMA;GAAK,CAAA;EAJxC;KAKEC,EAAA,KAAAD,OAAAC,EAAA,KAAAK,KALRA;AAKQ;AAIZ,SAAAC,aAAAJ,IAAA;CAAA,IAAAF,IAAAC,EAAA,CAAA,GAAAF,OAAAM;CAAA,IAAAL,EAAA,OAAAE,IAAA;EAAsB,IAAA,EAAAK,WAAA,GAAAC,OAAAN;EACoCF,AADpCD,QAAAS,IACLH,KAAAT,gBAAgBG,MAAKU,SAAUF,SAAS,GAACP,EAAA,KAAAE,IAAAF,EAAA,KAAAD,OAAAC,EAAA,KAAAK;CAAA,OAAAA,AAAAN,QAAAC,EAAA,IAAAK,KAAAL,EAAA;CAAxD,IAAAU,SAAeL,IAAyCG;CACe,OADfR,EAAA,OAAAU,UAAAV,EAAA,OAAAD,SACjDS,KAAAE,SAAS,oBAAC,mBAAD;EAAkB,GAAKX;EAAeW;CAAM,CAAA,IAArD,MAAgEV,EAAA,KAAAU,QAAAV,EAAA,KAAAD,OAAAC,EAAA,KAAAQ,MAAAA,KAAAR,EAAA,IAAhEQ;AAAgE;AAGzE,MAAMG,OAAqC,CAAA;AAE3C,SAAAC,UAAAb,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACEY,iBAAuBhB,mBAAmBE,MAAKU,SAAU,YAAY,GACrEK,UAAgBxB,MAAM,GAEtBmB,UAAgBI,gBAAcE,SAAkBN,WAAhCE,MAChBK,aAAmBpB,gBAAgBa,SAAS,MAAM,GAClDQ,cAAoBrB,gBAAgBa,SAAS,OAAO,GAEjBP;CAAAiB,KAAA;EAEjC,IAAI,CAACF,aAAW;GACdf,KAAOkB,KAAAA;GAAP,MAAAD;EAAgB;EAElB,IAAIF,YAAWI,SAAU,SAAO;GAC9BnB,KAAOe;GAAP,MAAAE;EAAkB;EAKb,IAAAd,KAAAY,aAAWK,OAETd,KAAAS,aAAWK,MAAkBC,YAAAC;EAAA,AAAAxB,EAAA,OAAAQ,KAEjCgB,KAAAxB,EAAA,MAHWwB,KAAA;GAAA,GACPhB;GAA6BiB,aAbf;EAenB,GAACzB,EAAA,KAAAQ,IAAAR,EAAA,KAAAwB;EAAA,IAAAE;EAAA,AAAA1B,EAAA,OAAAK,MAAAL,EAAA,OAAAwB,MALIE,KAAA;GAAA,GACFrB;GAAkBkB,YACTC;EAId,GAACxB,EAAA,KAAAK,IAAAL,EAAA,KAAAwB,IAAAxB,EAAA,KAAA0B,MAAAA,KAAA1B,EAAA;EAAA,IAAA2B;EARHzB,AAQGF,EAAA,OAAA0B,MAAA1B,EAAA,OAAAiB,eARIU,KAAA;GAAA,GACFV;GAAWK,OACPI;EAOT,GAAC1B,EAAA,KAAA0B,IAAA1B,EAAA,KAAAiB,aAAAjB,EAAA,KAAA2B,MAAAA,KAAA3B,EAAA,IATDE,KAAOyB;CASN;CAhBH,IAAAC,oBAA0B1B,IAiBSG;CAAA,AAAAL,EAAA,OAAAc,UAStBT,KAAAL,EAAA,MAJPK,KAAA,oBAAC,MAAD;EAAW,KAAA;YACT,oBAAC,MAAD;GAAS,IAAA;GAAe,QAAA;GAAiB,MAAA;GAAYS,SAAAA;aAAS;EAAzD,CAAA;CADF,CAAA,GAIEd,EAAA,KAAAc,SAAAd,EAAA,KAAAK;CAAA,IAAAG;CAAA,AAAAR,EAAA,QAAAG,OAAAC,IAAA,2BAAA,KAEPI,KAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;YAAG;CAAhB,CAAA,GAEER,EAAA,MAAAQ,MAAAA,KAAAR,EAAA;CAAA,IAAAwB;CAAA,AAAAxB,EAAA,QAAAgB,cAAAhB,EAAA,QAAAD,SAGJyB,KAAAR,cACC,oBAAC,KAAD;EAAU,MAAA;YACR,oBAAC,mBAAD;GAAkB,GAAKjB;GAAeiB,QAAAA;EAAU,CAAA;CAD9C,CAAA,GAGLhB,EAAA,MAAAgB,YAAAhB,EAAA,MAAAD,OAAAC,EAAA,MAAAwB,MAAAA,KAAAxB,EAAA;CAAA,IAAA0B;CAAA,AAAA1B,EAAA,QAAA4B,qBAAA5B,EAAA,QAAAD,SACA2B,KAAAE,qBACC,oBAAC,KAAD;EAAW,MAAA;EAAU,OAAA,EAAAC,YAAa,GAAE;YAClC,oBAAC,mBAAD;GAAkB,GAAK9B;GAAe6B,QAAAA;EAAiB,CAAA;CADrD,CAAA,GAGL5B,EAAA,MAAA4B,mBAAA5B,EAAA,MAAAD,OAAAC,EAAA,MAAA0B,MAAAA,KAAA1B,EAAA;CAAA,IAAA2B;CAAA,AAAA3B,EAAA,QAAAwB,MAAAxB,EAAA,QAAA0B,MAVHC,KAAA,qBAAC,MAAD;EAAY,OAAA;YAAZ,CACGH,IAKAE,EANE;KAWE1B,EAAA,MAAAwB,IAAAxB,EAAA,MAAA0B,IAAA1B,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA;CAAA,IAAA8B;CAEH,OAFG9B,EAAA,QAAAK,MAAAL,EAAA,QAAA2B,MAvBXG,KAAA,oBAAC,OAAD;EAAY,KAAA;YACV,qBAAC,OAAD;GAAY,KAAA;aAAZ;IACEzB;IAMAG;IAIAmB;GAXI;;CADF,CAAA,GAyBE3B,EAAA,MAAAK,IAAAL,EAAA,MAAA2B,IAAA3B,EAAA,MAAA8B,MAAAA,KAAA9B,EAAA,KAzBR8B;AAyBQ;AAIZ,SAAAC,WAAAhC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAD,MAAAU,UAG6DP,KAAAF,EAAA,MAAlCE,KAAAN,gBAFFC,mBAAmBE,MAAKU,SAAU,YACzCI,CAAc,EAAAE,SAAkBN,WAAhCE,MACkC,QAAQ,GAACX,EAAA,KAAAD,MAAAU,SAAAT,EAAA,KAAAE;CAA3D,IAAA8B,mBAAyB9B,IAAkCG;CAAA,AAAAL,EAAA,OAAAD,SAAAC,EAAA,OAAAgC,oBAEjD3B,KAAA2B,oBAAoB,oBAAC,mBAAD;EAAkB,GAAKjC;EAAeiC,QAAAA;CAAgB,CAAA,GAAIhC,EAAA,KAAAD,OAAAC,EAAA,KAAAgC,kBAAAhC,EAAA,KAAAK,MAAAA,KAAAL,EAAA;CAAA,IAAAQ;CAAI,OAAJR,EAAA,OAAAK,KAAIG,KAAAR,EAAA,MAArFQ,KAAA,oBAAA,UAAA,EAAA,UAAGH,GAA8E,CAAA,GAAIL,EAAA,KAAAK,IAAAL,EAAA,KAAAQ,KAArFA;AAAqF;AC5E9F,SAAOkC,uBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAAC,gBAAsBZ,WAAWO,oBAA0B,KAArC,CAAqC;CAE3D,IACE,CAACK,eAAD,EACEP,mBAAmBO,WAAsD,KAAtCR,2BAA2BQ,WAAW,IAAE,OAEtE;CACR,IAAAC;CAKsB,OALtBH,EAAA,OAAAE,eAAAF,EAAA,OAAAD,SAGCI,KAAA,oBAAC,oBAAD;EAAmB,GAAKJ;EAAoBG;YACzCH,MAAKK;CADW,CAAA,GAEEJ,EAAA,KAAAE,aAAAF,EAAA,KAAAD,OAAAC,EAAA,KAAAG,MAAAA,KAAAH,EAAA,IAFrBG;AAEqB;AAIzB,SAAAE,mBAAAF,IAAA;CAAA,IAAAH,IAAAC,EAAA,CAAA,GAA4B,EAAAC,aAAA,GAAAH,UAAAI,IAI1B,CAAAG,MAAAC,WAAwBhB,SAAS,CAAC,CAACQ,MAAKS,OAAcC,MAAA,GAACC;CAAA,AAAAV,EAAA,OAAAW,OAAAC,IAAA,2BAAA,KAC1BF,WAAMH,QAAQ,EAAI,GAACP,EAAA,KAAAU,MAAAA,KAAAV,EAAA;CAAhD,IAAAa,WAAiBH,IAAoCI;CAAA,AAAAd,EAAA,OAAAW,OAAAC,IAAA,2BAAA,KACtBE,WAAMP,QAAQ,EAAK,GAACP,EAAA,KAAAc,MAAAA,KAAAd,EAAA;CAAnD,IAAAe,aAAmBD;CAAqC,OAEjDf,MAAKiB,cAAe;EAAA,GACtBjB;EAAKkB,aACK;EAAIJ;EAAAE;EAAAG,WAGN,CAACZ;EAAIa,OACT;EAACC,OACDzB,mBAAmBO,WAAgD,IAAnE,mBAAA;CACT,CAAC;AAAC;ACvBJ,SAAO6C,uBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAAC,gBAAsBxB,WAAWmB,oBAA0B,KAArC,CAAqC;CAE3D,IAAI,CAACK,aAAW,OACP;CAGT,IAAIhB,mBAAmBgB,WAAW,GAAC;EAAA,IAAAC;EACgC,OADhCH,EAAA,OAAAE,eAAAF,EAAA,OAAAD,SAC1BI,KAAA,oBAAC,mBAAD;GAAkB,GAAKJ;GAAoBG;EAAW,CAAA,GAAIF,EAAA,KAAAE,aAAAF,EAAA,KAAAD,OAAAC,EAAA,KAAAG,MAAAA,KAAAH,EAAA,IAA1DG;CAA0D;CAGnE,IAAIlB,2BAA2BiB,WAAW,GAAC;EAAA,IAAAC;EACuB,OADvBH,EAAA,OAAAE,eAAAF,EAAA,OAAAD,SAClCI,KAAA,oBAAC,kBAAD;GAAiB,GAAKJ;GAAoBG;EAAW,CAAA,GAAIF,EAAA,KAAAE,aAAAF,EAAA,KAAAD,OAAAC,EAAA,KAAAG,MAAAA,KAAAH,EAAA,IAAzDG;CAAyD;CACjE,OACM;AAAI;AAGb,SAAAC,uBAAAC,OAAAC,eAAAC,UAAA;CAAA,IAAAP,IAAAC,EAAA,CAAA,GAAAE,IAAAK;CAKE7B,AALFqB,EAAA,OAAAM,iBAAAN,EAAA,OAAAO,YAAAP,EAAA,OAAAK,SAKYF,WAAA;EACR,IAAAM,cAAoBJ,OAAKK,QAASC,MAChCL,cAAaM,MACXC,MAAOA,EAACC,UAAWH,EAACI,UAAAA,+BAAiCJ,EAACK,eAAgBL,EAACM,KACzE,CACF,GACAC,cAAoBb,OAAKc,UAAL,GACpBC,cAAoBX,aAAWU,UAAX;EACpB,CAAK,CAACC,eAADF,eAAgCE,eAAed,cAAaa,WAI/DZ,SAASnB,WAAUiC,KAAM,CAAC9B,MAAM,CAAC,CAAC,CAAC;CACpC,GACAiB,KAAA;EAACF;EAAeD;EAAOE;CAAQ,GAACP,EAAA,KAAAM,eAAAN,EAAA,KAAAO,UAAAP,EAAA,KAAAK,OAAAL,EAAA,KAAAG,IAAAH,EAAA,KAAAQ,OAAAL,KAAAH,EAAA,IAAAQ,KAAAR,EAAA,KAdnCrB,UAAUwB,IAcPK,EAAgC;AAAC;AAGtC,SAAAc,kBAAAnB,IAAA;CAAA,IAAAH,IAAAC,EAAA,EAAA,GAAAC,aAAAH;CAAA,AAAAC,EAAA,OAAAG,MAG6DD,cAAAF,EAAA,IAAAD,QAAAC,EAAA,OAHlC,CAAAE,gBAAAH,SAAAI,IAGkCH,EAAA,KAAAG,IAAAH,EAAA,KAAAE,aAAAF,EAAA,KAAAD;CAC3D,IAAA,EAAAM,OAAAE,aAA0BR,OAAKS;CAAA,AAAAR,EAAA,OAAAE,YAAAqB,SAG4Cf,KAAAR,EAAA,MAAnEQ,KAAAN,YAAWqB,OAAOb,OAAQc,OAAwC,GAACxB,EAAA,KAAAE,YAAAqB,QAAAvB,EAAA,KAAAQ;CAD3E,IAAAe,SACQf;CAKRJ,uBAAuBC,OAA2BkB,QAAQhB,QAAQ;CAAC,IAAAkB;CAAA,AAAAzB,EAAA,OAAAuB,UAAAvB,EAAA,OAAAO,YAAAP,EAAA,OAAAK,OAAAc,UAGjEM,MAAAC,SAAAC,kBAAA;EACE,IAAID,SACF,IAAIrB,OAAKc,QACPZ,SAASnB,WAAUiC,KAAM9B,MAAM,CAAC,EAAAqC,MAAOD,cAAa,CAAC,CAAC,CAAC,CAAC;OAAC;GAGzD,IAAAE,QAAcN,OAAMb,QACVG,MAAOA,EAACC,SAAUa,aAAa,CAAC,CAAAG,IACnCC,QAML;GACFxB,SAASnB,WAAUiC,KAAM,CAAChC,aAAa,CAAA,CAAE,GAAGL,OAAO6C,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EAAC;OAC5E;GAED,IAAAG,aAAoC;IAAAJ,MAC5BD;IAAaZ,OACZ;IAA4BC,cACrBW;GAChB;GACApB,SAASnB,WAAUiC,KAAM,CAAChC,aAAa,CAAA,CAAE,GAAGL,OAAO,CAACgD,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EAAC;CACnF,GACFhC,EAAA,KAAAuB,QAAAvB,EAAA,KAAAO,UAAAP,EAAA,KAAAK,OAAAc,QAAAnB,EAAA,KAAAyB,MAAAA,KAAAzB,EAAA;CA1BH,IAAAiC,iBAAuBR,IA4BtBS;CAAA,IAAAlC,EAAA,OAAAuB,UAAAvB,EAAA,QAAAiC,kBAAAjC,EAAA,QAAAK,OAAA;EAAA,IAAA8B;EAeKnC,AAfLA,EAAA,QAAAiC,kBAAAjC,EAAA,QAAAK,SAIe8B,MAAAC,YAER,oBAAC,MAAD;GAA6B,OAAA;GAAc,KAAA;aACzC,oBAAC,YAAD;IACS,OAAAC,QAAKvB;IACL,OAAAuB,QAAKpB,KAAKqB,SAAUD,QAAKvB;IACpBT,YAAAA;IACF4B,UAAAA;GAAc,CAAA;EALvB,GAAMI,QAAKvB,IAAX,GASRd,EAAA,MAAAiC,gBAAAjC,EAAA,MAAAK,OAAAL,EAAA,MAAAmC,MAAAA,KAAAnC,EAAA,KAXAkC,KAAAX,OAAMO,IAAKK,EAWX,GAACnC,EAAA,KAAAuB,QAAAvB,EAAA,MAAAiC,gBAAAjC,EAAA,MAAAK,OAAAL,EAAA,MAAAkC;CAAA,OAAAA,KAAAlC,EAAA;CAAA,IAAAmC;CACI,OADJnC,EAAA,QAAAkC,KACIC,KAAAnC,EAAA,OAbRmC,KAAA,oBAAC,OAAD;EAAY,KAAA;YACTD;CADG,CAAA,GAaElC,EAAA,MAAAkC,IAAAlC,EAAA,MAAAmC,KAbRA;AAaQ;AA1DZ,SAAAJ,SAAAQ,SAAA;CAAA,OAwBcjD,MAAuB;EAAAsC,MACfS,QAAKvB;EAAKC,OACT;EAA4BC,cACrBqB,QAAKvB;CACrB,CAAC;AAAC;AA5BhB,SAAAU,QAAAa,OAAA;CAAA,OAO+C7C,kBAAkB6C,MAAKpB,IAAK;AAAC;AAuD5E,SAAAuB,iBAAArC,IAAA;CAAA,IAAAH,IAAAC,EAAA,EAAA,GAAAC,aAAAH;CAAA,AAAAC,EAAA,OAAAG,MAG4DD,cAAAF,EAAA,IAAAD,QAAAC,EAAA,OAHlC,CAAAE,gBAAAH,SAAAI,IAGkCH,EAAA,KAAAG,IAAAH,EAAA,KAAAE,aAAAF,EAAA,KAAAD;CAC1D,IAAA,EAAAM,OAAAE,aAA0BR,OAAKS;CAAA,AAAAR,EAAA,OAAAE,YAAAuC,KAGyCjC,KAAAR,EAAA,MAAhEQ,KAAAN,YAAWuC,GAAG/B,OAAQgC,MAAyC,GAAC1C,EAAA,KAAAE,YAAAuC,IAAAzC,EAAA,KAAAQ;CADxE,IAAAmC,UACQnC;CAKRJ,uBAAuBC,OAA2BsC,SAASpC,QAAQ;CAAC,IAAAkB;CAAA,AAAAzB,EAAA,OAAA2C,WAAA3C,EAAA,OAAAO,YAAAP,EAAA,OAAAK,OAAAc,UAGlEM,MAAAC,SAAAC,kBAAA;EACE,IAAID,SACF,IAAIrB,OAAKc,QACPZ,SAASnB,WAAUiC,KAAM9B,MAAM,CAAC,EAAAqC,MAAOD,cAAa,CAAC,CAAC,CAAC,CAAC;OAAC;GAGzD,IAAAE,QAAcc,QAAOjC,QACXG,MAAOA,EAACC,SAAUa,aAAa,CAAC,CAAAG,IACnCc,MAML;GACFrC,SAASnB,WAAUiC,KAAM,CAAChC,aAAa,CAAA,CAAE,GAAGL,OAAO6C,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EAAC;OAC5E;GAED,IAAAG,aAAmC;IAAAJ,MAC3BD;IAAaZ,OACZ;IAA2BE,MAC5BU;GACR;GACApB,SAASnB,WAAUiC,KAAM,CAAChC,aAAa,CAAA,CAAE,GAAGL,OAAO,CAACgD,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EAAC;CACnF,GACFhC,EAAA,KAAA2C,SAAA3C,EAAA,KAAAO,UAAAP,EAAA,KAAAK,OAAAc,QAAAnB,EAAA,KAAAyB,MAAAA,KAAAzB,EAAA;CA1BH,IAAAiC,iBAAuBR,IA4BtBS;CAAA,IAAAlC,EAAA,OAAA2C,WAAA3C,EAAA,QAAAiC,kBAAAjC,EAAA,QAAAK,OAAA;EAAA,IAAA8B;EAcKnC,AAdLA,EAAA,QAAAiC,kBAAAjC,EAAA,QAAAK,SAGgB8B,MAAAU,eAET,oBAAC,MAAD,EAAA,UACE,oBAAC,YAAD;GACS,OAAAC,WAAQhC;GACR,OAAArB,OAAOqD,YAAU,OAAoD,IAArE,SAAsCA,WAAQR,SAAUQ,WAAQhC;GAC3DT,YAAAA;GACF4B,UAAAA;EAAc,CAAA,EALvB,GAAMa,WAAQhC,IAAd,GASRd,EAAA,MAAAiC,gBAAAjC,EAAA,MAAAK,OAAAL,EAAA,MAAAmC,MAAAA,KAAAnC,EAAA,KAXAkC,KAAAS,QAAOb,IAAKK,EAWZ,GAACnC,EAAA,KAAA2C,SAAA3C,EAAA,MAAAiC,gBAAAjC,EAAA,MAAAK,OAAAL,EAAA,MAAAkC;CAAA,OAAAA,KAAAlC,EAAA;CAAA,IAAAmC;CACI,OADJnC,EAAA,QAAAkC,KACIC,KAAAnC,EAAA,OAbRmC,KAAA,oBAAC,OAAD;EAAY,KAAA;YACTD;CADG,CAAA,GAaElC,EAAA,MAAAkC,IAAAlC,EAAA,MAAAmC,KAbRA;AAaQ;AAzDZ,SAAAS,OAAAP,OAAA;CAAA,OAwBc/C,MAAsB;EAAAsC,MACdS,MAAKvB;EAAKC,OACT;EAA2BE,MAC5BoB,MAAKvB;CACb,CAAC;AAAC;AA5BhB,SAAA4B,OAAAI,UAAA;CAAA,OAO8CtD,kBAAkBsD,QAAQ;AAAC;AAsDzE,SAAAC,WAAA5C,IAAA;CAAA,IAAAH,IAAAC,EAAA,EAAA,GAAoB,EAAAqC,OAAAU,YAAA3C,OAAAE,aAAAJ,IAUnBK;CAAA,AAAAR,EAAA,OAAAgD,cAAAhD,EAAA,OAAAK,SACiBG,KAAA,CAACwC,YAAU7B,UAAX,CAAwB,CAAC6B,YAAUpC,MAAOD,MAAOA,EAACiB,SAAUvB,KAAK,GAACL,EAAA,KAAAgD,YAAAhD,EAAA,KAAAK,OAAAL,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CAAlF,IAAA0B,UAAgBlB,IAAkEiB;CAAA,AAAAzB,EAAA,OAAA0B,WAAA1B,EAAA,OAAAO,YAAAP,EAAA,OAAAK,SACjDoB,WAAMlB,SAASmB,SAASrB,KAAK,GAACL,EAAA,KAAA0B,SAAA1B,EAAA,KAAAO,UAAAP,EAAA,KAAAK,OAAAL,EAAA,KAAAyB,MAAAA,KAAAzB,EAAA;CAA/D,IAAAiD,eAAqBxB,IAAuES;CAAA,AAAAlC,EAAA,OAAA0B,WAAA1B,EAAA,OAAAiD,gBAIxFf,KAAA,oBAAC,UAAD;EAAmBR;EAAmBuB,UAAAA;CAAY,CAAA,GAAIjD,EAAA,KAAA0B,SAAA1B,EAAA,KAAAiD,cAAAjD,EAAA,KAAAkC,MAAAA,KAAAlC,EAAA;CAAA,IAAAmC;CAAA,AAAAnC,EAAA,QAAAkD,OAAAC,IAAA,2BAAA,KAEvChB,KAAA,EAAAiB,QAAS,UAAS,GAACpD,EAAA,MAAAmC,MAAAA,KAAAnC,EAAA;CAAA,IAAAqD;CAAA,AAAArD,EAAA,QAAAsC,QAEzBe,KAAArD,EAAA,OAFPqD,KAAA,oBAAC,MAAD;EAAa,OAAAlB;EAA2B,MAAA;YACrCG;CADE,CAAA,GAEEtC,EAAA,MAAAsC,OAAAtC,EAAA,MAAAqD;CAAA,IAAAC;CAAA,AAAAtD,EAAA,QAAAiD,gBAAAjD,EAAA,QAAAqD,MAHTC,KAAA,oBAAC,MAAD;EAAiB,WAAA;EAAYL,SAAAA;YAC3BI;CADG,CAAA,GAIErD,EAAA,MAAAiD,cAAAjD,EAAA,MAAAqD,IAAArD,EAAA,MAAAsD,MAAAA,KAAAtD,EAAA;CAAA,IAAAuD;CACF,OADEvD,EAAA,QAAAkC,MAAAlC,EAAA,QAAAsD,MANTC,KAAA,qBAAC,MAAD;EAAW,KAAA;EAAS,OAAA;YAApB,CACErB,IACAoB,EAFG;KAOEtD,EAAA,MAAAkC,IAAAlC,EAAA,MAAAsD,IAAAtD,EAAA,MAAAuD,MAAAA,KAAAvD,EAAA,KAPPuD;AAOO;ACnMX,MAAMc,UAAUL,OAAOP,GAAG,CAAC,CAAA,WAAA;;;;AAY3B,SAAOa,YAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA;CAGLC,oBAAoBH,KAAK;CAAC,IAAAI;CAAA,AAAAH,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KAIpBF,KAAA,oBAAC,KAAD;EAAoB,eAAA;YAClB,qBAAC,MAAD;GAAY,MAAA;GAAG,OAAA;aAAf;IAAqB;IACR;IACX,qBAAA,KAAA;KAAST,MAAAA;KAA4B,QAAA;KAAa,KAAA;eAAlD,CAA+D,0BACvC,oBAAC,gBAAD,CAAe,CAAA,CACnC;;GAJD;;CADH,CAAA,GAOEM,EAAA,KAAAG,MAAAA,KAAAH,EAAA;CAAA,IAAAM;CAAA,AAAAN,EAAA,OAAAD,QAEqBO,KAAAN,EAAA,MAA1BM,KAAAP,MAAKQ,cAAeR,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAM;CAAA,IAAAE;CAErB,OAFqBR,EAAA,OAAAM,KAErBE,KAAAR,EAAA,MAbVQ,KAAA,oBAAC,SAAD,EAAA,UACE,qBAAC,OAAD;EAAY,KAAA;YAAZ,CACEL,IASCG,EAVG;IADA,CAAA,GAaEN,EAAA,KAAAM,IAAAN,EAAA,KAAAQ,KAbVA;AAaU;AAId,SAAAN,oBAAAH,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAE;CAAA,AAAAH,EAAA,OAAAD,QAyBGI,KAAAH,EAAA,MAxBSG,WAAA;EACR,IAAAM,WAAe,IAEfC,OAAcX,MAAKY,SAAN,CAAA,EAAA,CAAoCC,KAAMC,UACjDA,MAAKC,UAAW,UACXD,SAGTJ,WAAWA,IACJlB,MAAuB;GAAAwB,MACtBtB,UAAU,EAAE;GAACqB,OACZ;GAAOE,OACP;GAACC,UACE,CAAA;GAAEC,OACL;GAAQC,UACL,CAACN,KAAK;EAClB,CAAC,EACF;EAED,AAAIJ,YACFV,MAAKqB,SAAU9B,IAAIoB,GAAG,CAAC;CACxB,GAGFV,EAAA,KAAAD,OAAAC,EAAA,KAAAG;CAAA,IAAAG;CAxBDlB,AAwBCY,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KAAEC,KAAA,CAAA,GAAEN,EAAA,KAAAM,MAAAA,KAAAN,EAAA,IAxBLZ,UAAUe,IAwBPG,EAAE;AAAC;ACnER,SAAgBgB,uBAAuBC,OAAwB;CAC7D,OAAOA,MAAMC,cAAc;EACzB,GAAGD;EACHE,OAAO;CACT,CAAC;AACH;ACFA,SAAOK,uBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACLC,OAAaN,eAAe,GAG5BO,gBAAsBJ,MAAKK,OAC3BC,kBAAwBN,MAAKO,SAAQC;CAAA,AAAAP,EAAA,OAAAG,gBAETI,KAAAP,EAAA,MAAnBO,KAAAJ,iBAAA,CAAA,GAAmBH,EAAA,KAAAG,eAAAH,EAAA,KAAAO;CAAA,IAAAC;CAAA,IAAAR,EAAA,OAAAO,MAAAP,EAAA,OAAAE,MAAAO,IAAA;EAAA,IAAAC;EAAmDV,AAAnDA,EAAA,OAAAE,MAAAO,KAAkDC,KAAAV,EAAA,MAAzCU,MAAAC,MAAO,CAACA,EAACC,UAAWD,EAACC,WAAYV,MAAIO,IAAIT,EAAA,KAAAE,MAAAO,IAAAT,EAAA,KAAAU,KAAtEF,KAACD,GAAmBM,OAASH,EAAyC,GAACV,EAAA,KAAAO,IAAAP,EAAA,KAAAE,MAAAO,IAAAT,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAD/E,IAAAI,QACQI,IAEPE;CAAA,AAAAV,EAAA,OAAAK,kBAGyBK,KAAAV,EAAA,MAArBU,KAAAL,mBAAA,CAAA,GAAqBL,EAAA,KAAAK,iBAAAL,EAAA,KAAAU;CAAA,IAAAI;CAAA,IAAAd,EAAA,OAAAU,MAAAV,EAAA,QAAAE,MAAAO,IAAA;EAAA,IAAAM;EAOpBf,AAPoBA,EAAA,QAAAE,MAAAO,KAOrBM,KAAAf,EAAA,OAP8Be,MAAAC,QAAA;GAC7B,IAAIL,IAACM,SAAU,SAAO,OACb;GAGT,IAAAC,UAAcP,KAACQ,MAAaf;GAAO,OAC5B,CAACA,QAAKQ,UAAWR,QAAKQ,WAAYV,MAAIO;EAAI,GAClDT,EAAA,MAAAE,MAAAO,IAAAT,EAAA,MAAAe,KAPDD,KAACJ,GAAqBG,OAASE,EAO9B,GAACf,EAAA,KAAAU,IAAAV,EAAA,MAAAE,MAAAO,IAAAT,EAAA,MAAAc;CAAA,OAAAA,KAAAd,EAAA;CATN,IAAAM,UAEIQ,IASHC;CACqD,OADrDf,EAAA,QAAAM,WAAAN,EAAA,QAAAD,SAAAC,EAAA,QAAAI,SACMW,KAAAhB,MAAKqB,cAAe;EAAA,GAAIrB;EAAKK;EAAAE;CAAgB,CAAC,GAACN,EAAA,MAAAM,SAAAN,EAAA,MAAAD,OAAAC,EAAA,MAAAI,OAAAJ,EAAA,MAAAe,MAAAA,KAAAf,EAAA,KAA/Ce;AAA+C;ACvBxD,SAAOU,gCAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACLC,MAAYN,OAAuB,IAAI,GAACO,IAAAC;CAGxCT,AAHwCK,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAG9BH,WAAA;EACR,IAAAI,SAAeL,IAAGM,SAAiBC,QAAC,gCAA8B;EAClE,IAAI,CAACF,QAAM;EAGX,IAAAG,QAAcC,SAAQC,cAAe,OAAO,GAC5CC,WAAiB,MAAMC,KAAIC,OAAQ,IAAGC,QAAS,KAAK,GAAG;EAMvDT,AALAA,OAAMU,KAAMJ,UAEZH,MAAKQ,YAAa;SACbL,SAAQ;OAEbN,OAAMY,QAAST,KAAK;CAAC,GACpBN,KAAA,CAACF,GAAG,GAACF,EAAA,KAAAG,IAAAH,EAAA,KAAAI,OAAAD,KAAAH,EAAA,IAAAI,KAAAJ,EAAA,KAbRL,UAAUQ,IAaPC,EAAK;CAAC,IAAAgB;CAAA,AAAApB,EAAA,OAAAD,QAEwCqB,KAAApB,EAAA,MAA1BoB,KAAArB,MAAKsB,cAAetB,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAoB;CAAA,IAAAE;CAAO,OAAPtB,EAAA,OAAAoB,KAAOE,KAAAtB,EAAA,MAAjDsB,KAAA,oBAAC,KAAD;EAAUpB;YAAMkB;CAAZ,CAAA,GAA6CpB,EAAA,KAAAoB,IAAApB,EAAA,KAAAsB,KAAjDA;AAAiD;AChB1D,MAAaQ,wBAAwBH,WAAW;CAC9CI,MAAM;CACNC,MAAMH;CACNI,OAAO;CACPC,UAAU;CACVC,MAAMX;CACNY,YAAY,EACVC,OAAOT,gCACT;CACAU,QAAQ,CACNZ,YAAY;EACVK,MAAM;EACNC,MAAM;EACNC,OAAO;CACT,CAAC,GACDP,YAAY;EACVM,MAAM;EACND,MAAM;EACNE,OAAO;EACPM,IAAI,CACFd,kBAAkB;GAChBM,MAAM;GACNS,QAAQ,CAAC;IAACP,OAAO;IAAUQ,OAAO;GAAQ,CAAC;GAC3CC,OAAO,CAAA;GACPC,OAAO;IACLC,YAAY,CAAA;IACZC,aAAa,CAAA;GACf;EACF,CAAC,CAAC;CAEN,CAAC,CAAC;CAEJC,SAAS;EACPC,QAAQ;GACNd,OAAO;GACPe,SAAS;EACX;EACAC,QAAQ,EAAChB,OAAOe,WAAU;GAMxB,OAAO;IACLf;IACA2B,UAAU,UAPCZ,SACTG,SAASC,UAAeA,OAAOC,QAAQ,CAAC,CACzCF,SAASG,UAAeA,OAAOJ,MAAMK,MAAM,GAAG,CAAC,CAAC,CAChDC,OAAOC,OAAO,CAAA,EACGE,UAAU;IAI5BE,OAAOtC;GACT;EACF;CACF;AACF,CAAC,GCjBYmF,iBAAiB7B,WAAW;CACvC8B,MAAM;CACNC,MAAMX;CACNY,OAAO;CACPC,MAAM1C;CAEN2C,QAAQ,CACNnC,YAAY;EACV+B,MAAM;EACNC,MAAM;EACNC,OAAO;EACPG,YAAY,EACVC,OAAO7B,kBACT;EACA8B,aAAaC,SAAS;GACpB,IAAMC,mBAAmBzB,oBAAoB;GAC7C,OAAOwB,KAAKE,QAAQC,OAAOC,YAAY;IACrC,IAAI,CAACD,OACH,OAAO;IAET,IAAI;KACF,IAAME,QAAQD,QAAQE,UAAUC;KAChC,IAAI,CAACF,OACH,OAAO;KAET,IAAMG,gBAAgBH,MAAMI,QAAYC,OAAO,IAAIhC,wBAAwB,GAAG,EAAE,GAC1EiC,SAASP,QAAQO,OAAOC,IAAIJ,aAAa;KAC/C,IAAI,CAACG,QACH,OAAO,gGAAgGH;KAGzG,IAAM,EAACK,cAAaZ,iBAAiBU,MAA0B;KAK/D,OAJiBE,UAAUE,MAAMC,MAAMA,EAAEC,QAAQd,KAC5CW,IAGE,KAFE,oBAAoBX,MAAK;IAGpC,SAASe,GAAG;KAEV,OADAC,QAAQC,MAAM,qCAAqCF,CAAC,GAC7C;IACT;GACF,CAAC;EACH;CACF,CAAC,CAAC;CAEJG,SAAS;EACPC,QAAQ,EACNC,MAAM,OACR;EACAC,QAAQ,EAACD,QAAO;GACd,OAAO;IACL7B,OAAO6B;IACPA;IACA5B,MAAM9C;GACR;EACF;CACF;CACAgD,YAAY,EACVwB,SAASxD,gBACX;CACA4D,SAAS,EACPC,OAAO,EACLlC,MAAM,UACR,EACF;AACF,CAAC,GAEYmC,YAAYjE,WAAW;CAClC8B,MAAM;CACNC,MAAMJ;CACNK,OAAO;CACPC,MAAM7C;CACN8C,QAAQ,CACNnC,YAAY;EACV+B,MAAM;EACNC,MAAM;EACNC,OAAO;EACPkC,aAAa;EACbC,aAAa;EACb9B,aAAaC,SAASA,KAAK8B,SAAS;CACtC,CAAC,GACDrE,YAAY;EACV+B,MAAM;EACNuC,MAAM;EACNtC,MAAM;EACNC,OAAO;EACPmC,aAAa;CACf,CAAC,CAAC;CAEJR,SAAS,EACPC,QAAQ,EACN5B,OAAO,UACT,EACF;CACA+B,SAAS,EACPC,OAAO;EACLlC,MAAM;EACNwC,OAAO;CACT,EACF;AACF,CAAC,GAEYC,gBAAgBvE,WAAW;CACtC8B,MAAM;CACNC,MAAMV;CACNW,OAAOJ,sBAAsBI;CAC7BC,MAAML,sBAAsBK;CAC5BC,QAAQ,CACNnC,YAAY;EACV+B,MAAM;EACNC,MAAM;EACNyC,IAAI,CAAC,EAAC1C,MAAMF,sBAAsBG,KAAI,CAAC;EACvCC,OAAO;EACPmC,aAAa;EACb9B,aAAaC,SAASA,KAAK8B,SAAS;EACpCjC,YAAY,EACVC,OAAO,SAAasC,OAAO;GACzB,OAAO,oBAAC,KAAD;IAAK,OAAO,EAACC,UAAU,IAAG;cAAID,MAAME,cAAcF,KAAK;GAAO,CAAA;EACvE,EACF;CACF,CAAC,CAAC;CAEJf,SAAS;EACPC,QAAQ;GACNiB,KAAK;GACL7C,OAAO;GACPU,SAAS;EACX;EACAoB,QAAQF,QAAQ;GACd,OAAOA,OAAOiB,MACTjD,uBAAuB+B,SAASG,UAAUF,MAAM,KAAKA,SACtD;IAAC5B,OAAO;IAAyB8C,OAAOlD,sBAAsBK;GAAI;EACxE;CACF;CACA8B,SAAS,EACPC,OAAO;EACLlC,MAAM;EACNwC,OAAO;CACT,EACF;AACF,CAAC,GAEYS,SAAS/E,WAAW;CAC/B8B,MAAM;CACNC,MAAML;CACNM,OAAO;CACPgD,IAAI,CACFlF,kBAAkB;EAChBgC,MAAM;EACNmD,QAAQ,CAAC;GAACjD,OAAO;GAAUS,OAAO;EAAQ,CAAC;EAC3CyC,OAAO,CAAA;EACPC,OAAO;GACLC,YAAY,CAAA;GACZC,aAAa,CAAA;EACf;EACAL,IAAI;GACFlF,kBAAkB,EAChBgC,MAAMD,eAAeE,KACvB,CAAC;GACDjC,kBAAkB,EAChBgC,MAAMyC,cAAcxC,KACtB,CAAC;GACDjC,kBAAkB,EAChBgC,MAAMmC,UAAUlC,KAClB,CAAC;EAAC;CAEN,CAAC,CACD;AAUJ,CAAC,GAEYuD,kBAAkBtF,WAAW;CACxC8B,MAAM;CACNC,MAAMP;CACNQ,OAAO;CACPE,QAAQ,CACNnC,YAAY;EACV+B,MAAM;EACNC,MAAM;EACNC,OAAO;CACT,CAAC,CAAC;AAEN,CAAC,GAEYuD,iBAAiBvF,WAAW;CACvC8B,MAAM;CACNC,MAAMN;CACNO,OAAO;CACPE,QAAQ,CACNnC,YAAY;EACV+B,MAAM;EACNC,MAAM;EACNC,OAAO;CACT,CAAC,CAAC;AAEN,CAAC,GAEYwD,cAAcxF,WAAW;CACpC8B,MAAM;CACNC,MAAMR;CACNS,OAAO;CACPyD,WAAW,CACT;EAAC1D,MAAM;EAAcC,OAAO;EAAc+B,SAAS;GAAC2B,aAAa;GAAMC,WAAW;EAAI;CAAC,CAAC;CAE1FhC,SAAS;EACPC,QAAQ;GACN3B,MAAM;GACND,OAAO;GACP4D,QAAQ;EACV;EACA9B,UAAU,EAAC7B,MAAMD,OAAO4D,cACf;GACL5D;GAEAC,MAAMA,OAAO,oBAAC,MAAD,EAAM,QAAQA,KAAmB,CAAA,IAAM3C;GACpDsG;EACF;CAEJ;CACAzD,YAAY;EACVC,OAAO5B;EACPmD,UAAUe,UAAe;GAGvB,IAAMmB,YAAYnB,MAAMzC,MAClBA,OAAOpC,eAAegG,SAAS,IAAIA,YAAYA,YAAY,oBAAC,WAAD,CAAU,CAAA,IAAM;GACjF,OACE,qBAAC,MAAD;IAAM,KAAK;IAAG,OAAM;IAAS,SAAS;cAAtC;KACG5D,OACC,oBAAC,KAAD;MAAK,MAAK;gBACR,oBAAC,MAAD;OAAM,MAAM;iBAAIA;MAAW,CAAA;KACxB,CAAA,IACH;KAEJ,oBAAC,OAAD;MAAO,MAAM;MAAG,KAAK;gBACnB,oBAAC,MAAD;OAAM,MAAM;OAAG,cAAa;OAAW,QAAO;iBAC3ClB,oBAAoB2D,KAAK;MACtB,CAAA;KACD,CAAA;KAENA,MAAMkB,UACL,oBAAC,MAAD;MAAM,MAAM;gBACV,oBAAC,SAAD;OACE,SAAS,oBAAC,MAAD;QAAM,MAAM;kBAAG;OAAyB,CAAA;OACjD,SAAS;OACT,WAAU;OACV,QAAA;iBAEA,oBAAC,UAAD,CAAS,CAAA;MACF,CAAA;KACL,CAAA;IAEJ;;EAEV;CACF;CACA1D,QAAQ;EACNnC,YAAY;GACV+B,MAAMiD,OAAOhD;GACbA,MAAM;GACNC,OAAO;GACPG,YAAY,EACVC,OAAOzB,YACT;EACF,CAAC;EACDZ,YAAY;GACV+B,MAAM;GACNC,MAAM;GACNC,OAAO;GACP8D,UAAU;GACV3D,YAAY;IACV4D,OAAO3F;IACPgC,OAAO/B;GACT;EACF,CAAC;EACDN,YAAY;GACV+B,MAAM;GACNC,MAAM;GACNC,OAAO;GACP8D,UAAU;GACV3D,YAAY,EACV4D,OAAO3F,iBACT;EACF,CAAC;EACDL,YAAY;GACV+B,MAAM;GACNC,MAAM;GACNC,OAAO;GACP8D,UAAU;GACV3D,YAAY;IACV4D,OAAO3F;IACPgC,OAAO9B;GACT;GACA0F,eAAeC,SAASvD,YAAYA,QAAQwD,aAAaC,MAAM;GAC/DC,WAAW1D,YACT2D,GACE3D,QAAQ4D,QAAQC,eAAe7D,QAAQ4D,QAAQC,gBAAgB7D,QAAQwD,aAAaC;EAE1F,CAAC;EACDpG,YAAY;GACV+B,MAAM;GACNC,MAAM;GACNC,OAAO;GACPwE,QAAQ;GACRV,UAAU;GACVE,eAAeC,SAASvD,YACfA,QAAQwD,aAAaC,MAAM;EAEtC,CAAC;EACDpG,YAAY;GACV+B,MAAM;GACNC,MAAM;GACNC,OAAO;GACPG,YAAY;IACVC,OAAO1B;IACPqF,OAAOtF;GACT;GACAuE,IAAI,CACFlF,kBAAkB,EAACgC,MAAMwD,gBAAgBvD,KAAI,CAAC,GAC9CjC,kBAAkB,EAACgC,MAAMyD,eAAexD,KAAI,CAAC,CAAC;EAElD,CAAC;CAAC;AAEN,CAAC,GAEY0E,oBAAoBzG,WAAW;CAC1C8B,MAAM;CACNC,MAAMb;CACNc,OAAO;CAIPE,QAAQ,CACNnC,YAAY;EACV+B,MAAM;EACNC,MAAM;EACNC,OAAO;EACPoE,UAAU;EACVI,QAAQ;CACV,CAAC,GACDzG,YAAY;EACV+B,MAAM;EACNC,MAAM;EACNC,OAAO;EACPgD,IAAI,CAAC,EAAClD,MAAM0D,YAAYzD,KAAI,CAAC;EAC7BI,YAAY;GACV4D,OAAOnF;GACPwB,OAAOvB;EACT;CACF,CAAC,CAAC;CAEJ8C,SAAS,EACPC,QAAQ,EACN5B,OAAO,OACT,EACF;AACF,CAAC,GAEY0E,uBAAuB1G,WAAW;CAE7C8B,MAAM;CAGD6E,UAAU;CACf5E,MAAMd;CACNe,OAAO;CAEPG,YAAY;EACVC,OAAOlC;EACP6F,QAAQrB,UACCA,MAAME,cAAc;GAAC,GAAGF;GAAO1C,OAAO;EAAE,CAAC;CAEpD;CACAE,QAAQ,CACNnC,YAAY;EACV+B,MAAM;EACNC,MAAM;EACNC,OAAO;CACT,CAAC,GACDjC,YAAY;EACV+B,MAAM;EACNC,MAAM;EACNC,OAAO;EACPgD,IAAI,CAAC,EAAClD,MAAM2E,kBAAkB1E,KAAI,CAAC;CACrC,CAAC,CAAC;CAEJ4B,SAAS,EACPC,QAAQ,EACN5B,OAAO,QACT,EACF;AACF,CAAC,GAEY4E,kBAAkB5G,WAAW;CACxC8B,MAAM;CACNC,MAAMT;CACNU,OAAO;CACPE,QAAQ;EACNnC,YAAY;GACV+B,MAAM;GACNC,MAAM;GACNC,OAAO;EACT,CAAC;EACDjC,YAAY;GACV+B,MAAM;GACNC,MAAM;GACNC,OAAO;EACT,CAAC;EACDjC,YAAY;GACV+B,MAAM;GACNC,MAAM;GACNC,OAAO;EACT,CAAC;EACDjC,YAAY;GACV+B,MAAM;GACNC,MAAM;GACNC,OAAO;EACT,CAAC;EACDjC,YAAY;GACV+B,MAAM;GACNC,MAAM;GACNC,OAAO;EACT,CAAC;CAAC;AAEN,CAAC,GAEY6E,4BAA4B7G,WAAW;CAElD8B,MAAM;CAGD6E,UAAU;CACf5E,MAAMZ;CACNa,OAAO;CACPE,QAAQ,CACNnC,YAAY;EACV+B,MAAM;EACNC,MAAM;EACNC,OAAO;EACPgD,IAAI,CAAC,EAAClD,MAAM8E,gBAAgB7E,KAAI,CAAC;CACnC,CAAC,CAAC;AAEN,CAAC;ACzdD,SAAS8F,gBAA8DC,MAAY;CAEjF,IAAME,iBAAkBF,MAAcG,YAAYC;CAClD,OAAO;EACL,GAAGJ;EACH,GAAI,gBAAgBA,OAChB,EACEG,YAAY;GACV,GAAGH,KAAKG;GACRC,QAAQC,UAAsB;IAC5B,IAAMC,WAAW;KAAC,GAAGD;KAAOE,qBAAqBC,KAAAA;IAAS;IAI1D,OAHI,OAAON,kBAAmB,aACrBA,eAAeI,QAAQ,IAEzBD,MAAMI,cAAcH,QAAQ;GACrC;EACF,EACF,IACA,CAAC;EACL,GAAI,YAAYN,OACZ,EAEEU,QAAQV,KAAKU,QAAQC,KAAKP,UAAUL,gBAAgBK,KAAK,CAAC,EAC5D,IACA,CAAC;EACL,GAAI,QAAQJ,OACR,EAEEY,IAAIZ,KAAKY,IAAID,KAAKE,kBAAkBd,gBAAgBc,aAAa,CAAC,EACpE,IACA,CAAC;CACP;AACF;AAWA,MAAaE,cAAc;CACzB,GAVsB;EACtB1B;EACAE;EACAD;EACAK;EACAE;EACAD;CAAa,CACd,CAACe,IAAIZ,eAGDe;CACHrB;CACAC;CACAP;CACAC;CACAI;CACAM;AAAqB,GCfV8C,SAAS3B,cAAyCoC,WAAW;CACxE,IAAMC,qBAAqBD,UAAU,CAAC,GAChCE,aAAaD,mBAAmBX,WAAWY,cAAc,IACzDC,eAAeF,mBAAmBV,QAAQY,cAC1CC,cAAcH,mBAAmBV,QAAQa;CAM/C,IAJI,OAAOF,cAAe,YACxBpB,mBAAmBoB,UAAU,GAG3BC,iBAAiBE,KAAAA,MAAcF,eAAe,KAAKA,eAAe,KACpE,MAAUG,MACR,IAAI7B,YAAW,+EAAgF0B,cACjG;CAGF,IAAIC,gBAAgBC,KAAAA,MAAcD,cAAc,KAAKA,cAAc,IACjE,MAAUE,MACR,IAAI7B,YAAW,0EAA2E2B,aAC5F;CAGF,OAAO;EACLG,MAAM9B;EAID+B,YAAY;EACjBC,QAAQ,EACNC,OAAOzB,YACT;EACA0B,MAAM,EACJC,SAAS,CAAC,CAAC,CAAC,EACd;EAEAC,UAAU;GACRC,aAAaC,MAAMC,YAAY;IAC7B,IAAMC,eAAeD,QAAQC,cACvBC,YAAYF,QAAQP,OAAOU,IAAIF,YAAY;IAIjD,OAHIC,aAAarC,sBAAsBqC,SAAS,IACvC,CAAC,GAAGH,MAAM3C,eAAe,IAE3B2C;GACT;GACAK,wBAAwBL,MAAM,EAACE,cAAcR,aAAY;IACvD,IAAIQ,iBAAAA,wCACF,OAAO,CAAA;IAET,IAAMC,YAAYT,OAAOU,IAAIF,YAAY;IAIzC,OAHIC,aAAarC,sBAAsBqC,SAAS,IACvC,CAAC,GAAGH,MAAMrC,kBAAkB,IAE9BqC;GACT;GACAM,0BAA0BN,MAAM,EAACO,YAAYb,QAAQc,iBAAgB;IACnE,IAAIA,eAAAA,wCACF,OAAO,CAAA;IAET,IAAML,YAAYT,OAAOU,IAAII,UAAU;IAIvC,OAHIL,aAAarD,mBAAmBqD,SAAS,KAAKrC,sBAAsBqC,SAAS,IACxE,CAAC,GAAGH,MAAM/B,6BAA6BsC,UAAU,CAAC,IAEpDP;GACT;GACAS,YAAY,EACVC,iBAAiB1D,qBACnB;EACF;EAEA2D,QAAQ,EACNF,YAAY,EACVG,QAAQ,SAAgBhC,OAAO;GAC7B,OAAO,oBAAC,cAAD;IAAc,GAAIA;IAAO,QAAQM;GAAmB,CAAA;EAC7D,EACF,EACF;EAEA4B,MAAM,EACJL,YAAY;GACVM,OAAOhE;GACPiE,OAAO/D;GACPgE,MAAM7D;GACN8D,OAAOhE;GACPiE,aAAahE;EACf,EACF;EAEAiE,SAAS,CACPvE,aAAa;GACX2C,MAAM,GAAG9B,YAAW;GACpBoD,MAAM,EAACL,YAAY,EAACM,OAAOtD,eAAc,EAAC;EAC5C,CAAC,CAAC,CAAC,GAEHZ,aAAa;GACX2C,MAAM,GAAG9B,YAAW;GACpBoD,MAAM,EACJL,YAAY,EACVM,QAAQnC,UAAU;IAChB,IAAM,EAAC4B,eAAc5B;IAKrB,OAHIZ,QAAQwC,UAAU,IACb,oBAAC,sBAAD,EAAsB,GAAI5B,MAAM,CAAA,IAElCA,MAAMyC,cAAczC,KAAK;GAClC,EACF,EACF;EACF,CAAC,CAAC,CAAC,CAAC;CAER;AACF,CAAC,GCjJKkE,SACJC,QACAC,OACAC,QACAC,YAEA3B,YAEEwB,OAAOI,WAAWL,MAAME,OAAOC,QAAQ;CACrCP,KAAKQ,QAAQR;CACbU,gBAAgB;AAClB,CAAC,CACH,GAEIC,UACJN,QACAC,OACAC,QACAC,YAGA3B,YAEEwB,OAAOM,OAAOL,OAAOC,QAAQ;CAC3BK,QAAQ;EAAC;EAAW;EAAY;CAAW;CAC3CC,eAAe;CACfC,YAAY;CACZd,KAAKQ,QAAQR;AACf,CAAC,CACH;AAEF,SAASe,eACPC,OACuB;CACvB,OAAOA,MAAMC,SAAS;AACxB;;AAGA,MAAaC,eACXb,QACAC,OACAC,SAA4B,CAAC,GAC7BC,UAA8B,CAAC,MAC5B;CACH,IAAMW,aAAa,OAAOb,SAAU,WAAWA,QAAQA,MAAMF,OACvDgB,gBAAgB,OAAOd,SAAU,WAAWA,QAAQA,MAAMK,QAE1DU,aAAajB,MAAMC,QAAQc,YAAYZ,QAAQC,OAAO,GAsBtD,CAACoB,UAAUC,yBAAyB3C,UApB1ByB,OAAON,QAAQe,eAAeb,QAAQC,OAAO,CAAC,CAACe,KAC7DhC,UAAUiC,IAAIC,MACIA,MAAM,KACP,CAACV,eAAeS,EAAE,IAIxBpC,WACL,gBAAIuC,MACFH,GAAGP,SAAS,cACR,+CACA,4CAA4CO,GAAGP,KAAI,EACzD,CACF,IAEKhC,GAAGuC,EAAE,CACb,GACDhC,MAAM,CAG4C8B,GAASP,cAAc;CAS3E,OAAOhC,MACL6C,SAASL,KAAK9B,KAAK,CAAC,CAAC,GACrBoC,sBAAsBN,KACpBjC,QAXqB0B,UACnB,CAACR,QAAQL,eAAea,MAAMC,SAAS,cAIpCT,QAAQL,YAAY4B,SAASf,MAAMgB,UAAU,CAM5B,GACtB7C,WAAW6B,UAAUjC,MAAME,GAAG+B,KAAK,GAAG/B,GAAG+B,KAAK,CAAC,CAACO,KAAKzC,MAAM0B,QAAQN,gBAAgB,GAAI,CAAC,CAAC,CAAC,CAC5F,CACF,CAAC,CAACqB,KAAKlC,yBAAyBgC,UAAU,CAAC;AAC7C,GClFM+B,iBAAiB,CAAC,GAClBC,kBAAsC,EAACC,YAAY,cAAa;AAEtE,SAAOC,kBAAAC,OAAAC,IAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAELC,SAAAJ,OAAAK,KAAAA,IAAAV,iBAAAK,IACAM,UAAAL,OAAAI,KAAAA,IAAAT,kBAAAK,IAEA,CAAAZ,SAAAkB,cAA8B7B,SAAS,EAAI,GAC3C,CAAAY,OAAAkB,YAA0B9B,SAAS,EAAK,GACxC,CAAAa,MAAAkB,WAAwB/B,SAAmB,IAAI,GAC/CgC,eAAqBjC,OAA0B,IAAI,GAACkC;CAAA,AAAAT,EAAA,OAAAU,OAAAC,IAAA,2BAAA,KAE3BF,KAAA,EAAAd,YAAa,cAAa,GAACK,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CAApD,IAAAY,SAAe9B,UAAU2B,EAA2B,GAACI,IAAAC;CAErDxC,AAFqD0B,EAAA,OAAAY,UAAAZ,EAAA,OAAAI,WAAAJ,EAAA,OAAAE,UAAAF,EAAA,OAAAH,SAE3CgB,YACJhB,UACFW,aAAYO,UAAWhC,YAAY6B,QAAQf,OAAOK,QAAQE,OAAO,CAAC,CAAAY,KAE9DpC,qBAAqBH,OAAO,GAC5BE,YAAWsC,SACTC,QAAO9B,MAAO6B,GAAG,GACjBX,SAAS,EAAI,GACbD,WAAW,EAAK,GAChBE,QAAQ,IAAI,GAEL7B,GAAG,IAAI,EACf,CACH,CAAC,CAAAyC,WACUC,cAAA;EAGTd,AAFAC,SAAQQ,YAActC,QAAQsC,SAASK,SAA+B,IAAhDL,UAAAK,SAAkD,GACxEf,WAAW,EAAK,GAChBC,SAAS,EAAK;CAAC,CAChB,UAIIE,aAAYO,UAAWP,aAAYO,QAAQvB,YAAyB,IAApEW,KAAAA,IAERW,KAAA;EAACjB;EAAOK;EAAQE;EAASQ;CAAM,GAACZ,EAAA,KAAAY,QAAAZ,EAAA,KAAAI,SAAAJ,EAAA,KAAAE,QAAAF,EAAA,KAAAH,OAAAG,EAAA,KAAAa,IAAAb,EAAA,KAAAc,OAAAD,KAAAb,EAAA,IAAAc,KAAAd,EAAA,KAxBnC1B,UAAUuC,IAwBPC,EAAgC;CAAC,IAAAO;CAEP,OAFOrB,EAAA,OAAAX,QAAAW,EAAA,OAAAZ,SAAAY,EAAA,OAAAb,WAE7BkC,KAAA;EAAAlC;EAAAC;EAAAC;CAAqB,GAACW,EAAA,KAAAX,MAAAW,EAAA,KAAAZ,OAAAY,EAAA,KAAAb,SAAAa,EAAA,MAAAqB,MAAAA,KAAArB,EAAA,KAAtBqB;AAAsB;ACpD/B,MAAMkB,UAAkC,CAAA,GAElCC,eAAe;AAErB,SAAOC,iBAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACLC,SAAeV,UAAU,GAACW;CAAA,AAAAH,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KACDF,KAAA,EAAAG,YAAa,aAAY,GAACN,EAAA,KAAAG,MAAAA,KAAAH,EAAA;CAAnD,IAAAO,SAAehB,UAAUY,EAA0B,GACnD,CAAAK,QAAAC,aAA4BnB,SAAS,EAAK,GAC1C,CAAAoB,WAAAC,gBAAkCrB,SAASQ,YAAY,GAACc;CAAA,AAAAZ,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KAEmCO,KAAA,EAAAC,MACnFnB,yBACR,GAACM,EAAA,KAAAY,MAAAA,KAAAZ,EAAA;CAFD,IAAA,EAAAc,SAAerB,kBAA0C,kCAAkCmB,EAE1F,GAACG;CAAA,AAAAf,EAAA,OAAAE,SAG8Ba,KAAAf,EAAA,MAAvBe,KAAAnB,gBAAgBM,MAAM,GAACF,EAAA,KAAAE,QAAAF,EAAA,KAAAe;CADhC,IAAAC,QACED,IACUE;CAAA,AAAAjB,EAAA,OAAAO,UAAAP,EAAA,OAAAgB,SAEmBC,WAAA;EAC7BR,UAAU,EAAI;EACd,IAAAS,UAAc;EAyBV,QALJC,iBAnBA;GACER,aAAa,aAAaK,MAAKI,QAAS;GACxC,IAAAC,cAAoBd,OAAMc,YAAa;GACvC,KAAA,IAAAC,IAAa,GAAGA,IAAIN,MAAKI,UAClBF,SAD2BI,KAAG;IAInC,IAAAT,OAAaG,MAAMM;IAGnB,AADA,MAAMD,YAAWE,gBAAiBV,IAA6B,GAC3DS,IAAI,KAAKA,IAAI,MAAO,MAEtB,MAAMD,YAAWI,OAAQ,GACzBJ,YAAWK,MAAO,GAClBf,aAAa,WAAWW,EAAC,GAAIN,MAAKI,QAAS;GAC5C;GAEH,MAAMC,YAAWI,OAAQ;EAAC,EAAA,CAEtB,CAAC,CAAAE,MACEC,QAAOC,KAAM,CAAC,CAAAC,cACZ;GAEPnB,AADAF,UAAU,EAAK,GACfE,aAAab,YAAY;EAAC,CAC3B,SACI;GAGLa,AAFAO,UAAUA,IACVT,UAAU,EAAK,GACfE,aAAab,YAAY;EAAC;CAC3B,GACFE,EAAA,KAAAO,QAAAP,EAAA,KAAAgB,OAAAhB,EAAA,KAAAiB,MAAAA,KAAAjB,EAAA;CAjCD,IAAA+B,aAAmBd,IAiCyBe;CAAA,AAAAhC,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KAGD2B,KAAA,EAAAC,QAAS,qBAAoB,GAACjC,EAAA,KAAAgC,MAAAA,KAAAhC,EAAA;CAAA,IAAAkC;CAAA,AAAAlC,EAAA,OAAAQ,SAIH0B,KAAAlC,EAAA,MAAtDkC,KAAA1B,SAAS,oBAAC,SAAD,EAAgB,OAAA,EAAA2B,WAAY,EAAC,EAAC,CAAA,IAAvCvD,UAAsDoB,EAAA,KAAAQ,QAAAR,EAAA,KAAAkC;CAAA,IAAAE;CAAA,AAAApC,EAAA,QAAAQ,UAAAR,EAAA,QAAA+B,cAAA/B,EAAA,QAAAU,aAAAV,EAAA,QAAAkC,MAFhEE,KAAA,oBAAC,KAAD,EAAA,UACE,oBAAC,QAAD;EACQ,MAAAF;EACAxB,MAAAA;EACIF,UAAAA;EACDuB,SAAAA;CAAU,CAAA,EALnB,CAAA,GAOE/B,EAAA,MAAAQ,QAAAR,EAAA,MAAA+B,YAAA/B,EAAA,MAAAU,WAAAV,EAAA,MAAAkC,IAAAlC,EAAA,MAAAoC,MAAAA,KAAApC,EAAA;CAAA,IAAAqC;CAAA,AAAArC,EAAA,QAAAI,OAAAC,IAAA,2BAAA,KAGFgC,KAAA,oBAAC,OAAD,EAAA,UAAO,gBAAD,CAAA,GAAsBrC,EAAA,MAAAqC,MAAAA,KAAArC,EAAA;CAAA,IAAAsC;CAAA,AAAAtC,EAAA,QAAAgB,QAMxBsB,KAAAtC,EAAA,OAJDsC,KAAAtB,MAAKuB,IAAKC,KAIV,GAACxC,EAAA,MAAAgB,OAAAhB,EAAA,MAAAsC;CAAA,IAAAG;CAAA,AAAAzC,EAAA,QAAAsC,KAEEG,KAAAzC,EAAA,OATRyC,KAAA,qBAAC,OAAD;EAAY,KAAA;YAAZ,CACEJ,IACA,oBAAA,MAAA,EAAA,UACGC,GAKE,CAAA,CARD;KASEtC,EAAA,MAAAsC,IAAAtC,EAAA,MAAAyC;CAAA,IAAAC;CAAA,AAAA1C,EAAA,QAAAI,OAAAC,IAAA,2BAAA,KAGNqC,MAAA,oBAAC,OAAD,EAAA,UAAO,gBAAD,CAAA,GAAsB1C,EAAA,MAAA0C,OAAAA,MAAA1C,EAAA;CAExB,IAAA2C,MAAA7B,QAAAjB,SAAe+C;CAAA,AAAA5C,EAAA,QAAA2C,MAIfC,MAAA5C,EAAA,OAJD4C,MAACD,IAAeJ,IAAMM,MAItB,GAAC7C,EAAA,MAAA2C,KAAA3C,EAAA,MAAA4C;CAAA,IAAAE;CAAA,AAAA9C,EAAA,QAAA4C,MAEEE,MAAA9C,EAAA,OATR8C,MAAA,qBAAC,OAAD;EAAY,KAAA;YAAZ,CACEJ,KACA,oBAAA,MAAA,EAAA,UACGE,IAKE,CAAA,CARD;KASE5C,EAAA,MAAA4C,KAAA5C,EAAA,MAAA8C;CAAA,IAAAC;CAAA,AAAA/C,EAAA,QAAA8C,OAAA9C,EAAA,QAAAyC,MArBVM,MAAA,qBAAC,MAAD;EAAW,KAAA;YAAX,CACEN,IAWAK,GAZG;KAsBE9C,EAAA,MAAA8C,KAAA9C,EAAA,MAAAyC,IAAAzC,EAAA,MAAA+C,OAAAA,MAAA/C,EAAA;CAAA,IAAAgD;CAEJ,OAFIhD,EAAA,QAAA+C,OAAA/C,EAAA,QAAAoC,MAhCXY,MAAA,oBAAC,MAAD;EAAe,SAAA;EAAY,UAAA;EAAc,OAAAhB;YACvC,qBAAC,OAAD;GAAY,KAAA;aAAZ,CACEI,IAQAW,GATI;;CADH,CAAA,GAkCE/C,EAAA,MAAA+C,KAAA/C,EAAA,MAAAoC,IAAApC,EAAA,MAAAgD,OAAAA,MAAAhD,EAAA,KAlCPgD;AAkCO;AApFJ,SAAAH,OAAAI,QAAA;CAAA,OA4ES,oBAAA,MAAA,EAAA,UACE,oBAAC,aAAD,EAAyBpC,YAAAA,OAAI,CAAA,EAC1B,GAFIA,OAAIqC,IAER;AAAA;AA9Ed,SAAAV,MAAAW,QAAA;CAAA,OAiES,oBAAA,MAAA,EAAA,UACE,oBAAC,aAAD,EAAyBtC,YAAAA,OAAI,CAAA,EAC1B,GAFIA,OAAIqC,IAER;AAAA;AAqBrB,SAAAE,YAAAjD,IAAA;CAAA,IAAAH,IAAAC,EAAA,CAAA,GAAqB,EAAAoD,eAAAlD,IAAgDS;CAAA,AAAAZ,EAAA,OAAAqD,aACNzC,KAAAZ,EAAA,MAAnCY,KAAA0C,KAAIC,UAAWF,YAAY,MAAM,CAAC,GAACrD,EAAA,KAAAqD,YAAArD,EAAA,KAAAY;CAA7D,IAAA4C,MAA0B5C,IAAkDG;CACrD,OADqDf,EAAA,OAAAwD,MACrDzC,KAAAf,EAAA,MAAhBe,KAAA,oBAAA,OAAA,EAAA,UAAMyC,IAAU,CAAA,GAAAxD,EAAA,KAAAwD,KAAAxD,EAAA,KAAAe,KAAhBA;AAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAzB,SAAOsD,eAAA;CACL,IAAA,EAAAC,iBAAuBb,kBAAkB;CAAC,OACnCa;AAAY"}
\ No newline at end of file