sanity 6.9.2-next.20 → 6.9.2-next.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/{AddonDatasetProvider-CV-U_KIH.js → AddonDatasetProvider-B5npf4J4.js} +2 -2
- package/lib/{AddonDatasetProvider-CV-U_KIH.js.map → AddonDatasetProvider-B5npf4J4.js.map} +1 -1
- package/lib/{CalendarFilter-j59Y77CD.js → CalendarFilter-DYJEZDCP.js} +3 -3
- package/lib/{CalendarFilter-j59Y77CD.js.map → CalendarFilter-DYJEZDCP.js.map} +1 -1
- package/lib/{CommentsDocumentLayout-Cb-LKOmj.js → CommentsDocumentLayout-CTL7lt6a.js} +2 -2
- package/lib/{CommentsDocumentLayout-Cb-LKOmj.js.map → CommentsDocumentLayout-CTL7lt6a.js.map} +1 -1
- package/lib/{CommentsField-BHAQjUyR.js → CommentsField-BE_CI2SY.js} +3 -3
- package/lib/{CommentsField-BHAQjUyR.js.map → CommentsField-BE_CI2SY.js.map} +1 -1
- package/lib/{CommentsInput-CB5RUrIi.js → CommentsInput-D_EM-t5a.js} +5 -5
- package/lib/{CommentsInput-CB5RUrIi.js.map → CommentsInput-D_EM-t5a.js.map} +1 -1
- package/lib/{CommentsInspector-B7M2QxR2.js → CommentsInspector-DtBIUadl.js} +5 -5
- package/lib/{CommentsInspector-B7M2QxR2.js.map → CommentsInspector-DtBIUadl.js.map} +1 -1
- package/lib/{CommentsListItem-CEpLMePM.js → CommentsListItem-BFRqZMJ6.js} +3 -3
- package/lib/{CommentsListItem-CEpLMePM.js.map → CommentsListItem-BFRqZMJ6.js.map} +1 -1
- package/lib/{CommentsSelectedPathProvider-DznhPdxI.js → CommentsSelectedPathProvider-CIKpHpK3.js} +3 -3
- package/lib/{CommentsSelectedPathProvider-DznhPdxI.js.map → CommentsSelectedPathProvider-CIKpHpK3.js.map} +1 -1
- package/lib/{CommentsStudioLayout-BoXa16ia.js → CommentsStudioLayout-Dx0jIDle.js} +4 -4
- package/lib/{CommentsStudioLayout-BoXa16ia.js.map → CommentsStudioLayout-Dx0jIDle.js.map} +1 -1
- package/lib/{ReleasesMetadataProvider-CWH3_eG9.js → ReleasesMetadataProvider-hILX90V4.js} +2 -2
- package/lib/{ReleasesMetadataProvider-CWH3_eG9.js.map → ReleasesMetadataProvider-hILX90V4.js.map} +1 -1
- package/lib/{ReleasesNav-CfGnfOHd.js → ReleasesNav-DIv-1iR7.js} +14 -14
- package/lib/{ReleasesNav-CfGnfOHd.js.map → ReleasesNav-DIv-1iR7.js.map} +1 -1
- package/lib/{ReleasesStudioLayout-BkCC9W7a.js → ReleasesStudioLayout-DW7fJSfG.js} +8 -8
- package/lib/{ReleasesStudioLayout-BkCC9W7a.js.map → ReleasesStudioLayout-DW7fJSfG.js.map} +1 -1
- package/lib/{ReleasesTool-D2NmesiP.js → ReleasesTool-BQjO7osC.js} +15 -15
- package/lib/{ReleasesTool-D2NmesiP.js.map → ReleasesTool-BQjO7osC.js.map} +1 -1
- package/lib/{SchedulePublishingStudioLayout-C4e4OuST.js → SchedulePublishingStudioLayout-Cwmdz7HZ.js} +3 -3
- package/lib/{SchedulePublishingStudioLayout-C4e4OuST.js.map → SchedulePublishingStudioLayout-Cwmdz7HZ.js.map} +1 -1
- package/lib/{SchedulePublishingUpsellProvider-BV7JVIDN.js → SchedulePublishingUpsellProvider-C5B21VDh.js} +2 -2
- package/lib/{SchedulePublishingUpsellProvider-BV7JVIDN.js.map → SchedulePublishingUpsellProvider-C5B21VDh.js.map} +1 -1
- package/lib/{ScheduledPublishingEnabledProvider-Dw04ZZwf.js → ScheduledPublishingEnabledProvider-BNMAVqrS.js} +3 -3
- package/lib/{ScheduledPublishingEnabledProvider-Dw04ZZwf.js.map → ScheduledPublishingEnabledProvider-BNMAVqrS.js.map} +1 -1
- package/lib/{SearchProvider-DdG2QzPT.js → SearchProvider-DkGUk8a6.js} +4 -4
- package/lib/{SearchProvider-DdG2QzPT.js.map → SearchProvider-DkGUk8a6.js.map} +1 -1
- package/lib/{SingleDocReleaseLayout-CtJIgW4L.js → SingleDocReleaseLayout-fW8U-ktp.js} +2 -2
- package/lib/{SingleDocReleaseLayout-CtJIgW4L.js.map → SingleDocReleaseLayout-fW8U-ktp.js.map} +1 -1
- package/lib/{SingleDocReleaseUpsellProvider-BeQYxpmc.js → SingleDocReleaseUpsellProvider-BNF2Rj3j.js} +4 -4
- package/lib/{SingleDocReleaseUpsellProvider-BeQYxpmc.js.map → SingleDocReleaseUpsellProvider-BNF2Rj3j.js.map} +1 -1
- package/lib/{TasksStudioActiveToolLayout-xaEWt-uA.js → TasksStudioActiveToolLayout-CHazNA61.js} +11 -11
- package/lib/{TasksStudioActiveToolLayout-xaEWt-uA.js.map → TasksStudioActiveToolLayout-CHazNA61.js.map} +1 -1
- package/lib/{TasksStudioLayout-DSKrYQAK.js → TasksStudioLayout-B7bCL28Q.js} +5 -5
- package/lib/{TasksStudioLayout-DSKrYQAK.js.map → TasksStudioLayout-B7bCL28Q.js.map} +1 -1
- package/lib/{Tool-c9e3HT3x.js → Tool-rkq_tjXo.js} +12 -12
- package/lib/{Tool-c9e3HT3x.js.map → Tool-rkq_tjXo.js.map} +1 -1
- package/lib/{UnpublishVersionDialog-BgCVm562.js → UnpublishVersionDialog-DWYCXGkz.js} +4 -4
- package/lib/{UnpublishVersionDialog-BgCVm562.js.map → UnpublishVersionDialog-DWYCXGkz.js.map} +1 -1
- package/lib/{UpsellDialog-BlsjdTJ5.js → UpsellDialog-BiDSVmne.js} +2 -2
- package/lib/{UpsellDialog-BlsjdTJ5.js.map → UpsellDialog-BiDSVmne.js.map} +1 -1
- package/lib/{VariantsStudioNavbar-CITwIqT4.js → VariantsStudioNavbar-Bae9LOIN.js} +7 -7
- package/lib/{VariantsStudioNavbar-CITwIqT4.js.map → VariantsStudioNavbar-Bae9LOIN.js.map} +1 -1
- package/lib/{VariantsTool-C2-mCbDU.js → VariantsTool-E4ptTHik.js} +7 -7
- package/lib/{VariantsTool-C2-mCbDU.js.map → VariantsTool-E4ptTHik.js.map} +1 -1
- package/lib/{WorkspaceLoader-DvPaRVsD.js → WorkspaceLoader-sdFQ9rkh.js} +21 -21
- package/lib/{WorkspaceLoader-DvPaRVsD.js.map → WorkspaceLoader-sdFQ9rkh.js.map} +1 -1
- package/lib/_createContext.js +1 -1
- package/lib/{buildTextSelectionFromFragment-DTYxC8zv.js → buildTextSelectionFromFragment-CuXpitEZ.js} +3 -3
- package/lib/{buildTextSelectionFromFragment-DTYxC8zv.js.map → buildTextSelectionFromFragment-CuXpitEZ.js.map} +1 -1
- package/lib/{datastores-BKPUa-oX.js → datastores-XTDIa3jc.js} +2 -2
- package/lib/{datastores-BKPUa-oX.js.map → datastores-XTDIa3jc.js.map} +1 -1
- package/lib/index.js +28 -28
- package/lib/{inputResolver-YXTUB1af.js → inputResolver-DLP8YZcM.js} +4 -4
- package/lib/{inputResolver-YXTUB1af.js.map → inputResolver-DLP8YZcM.js.map} +1 -1
- package/lib/{navigation.telemetry-DRwUiurs.js → navigation.telemetry-4pppJENG.js} +7 -7
- package/lib/{navigation.telemetry-DRwUiurs.js.map → navigation.telemetry-4pppJENG.js.map} +1 -1
- package/lib/{plugin-2hVe07Dd.js → plugin-BRnqEpCl.js} +6 -6
- package/lib/{plugin-2hVe07Dd.js.map → plugin-BRnqEpCl.js.map} +1 -1
- package/lib/{plugin-G8hWhEki.js → plugin-BUox1zeI.js} +3 -3
- package/lib/{plugin-G8hWhEki.js.map → plugin-BUox1zeI.js.map} +1 -1
- package/lib/{plugin-BBpCRQeY.js → plugin-BmARoHKH.js} +4 -4
- package/lib/{plugin-BBpCRQeY.js.map → plugin-BmARoHKH.js.map} +1 -1
- package/lib/{plugin-CF8rdLgw.js → plugin-CjN39wwt.js} +5 -5
- package/lib/{plugin-CF8rdLgw.js.map → plugin-CjN39wwt.js.map} +1 -1
- package/lib/{scheduleItem-Di-U4U5S.js → scheduleItem-Dtb26ejO.js} +8 -8
- package/lib/{scheduleItem-Di-U4U5S.js.map → scheduleItem-Dtb26ejO.js.map} +1 -1
- package/lib/{schedules-vdS--I5b.js → schedules-6qsR7E_I.js} +3 -3
- package/lib/{schedules-vdS--I5b.js.map → schedules-6qsR7E_I.js.map} +1 -1
- package/lib/{searchDocumentRelease-BdHG8UuT.js → searchDocumentRelease-CUk7BiST.js} +4 -4
- package/lib/{searchDocumentRelease-BdHG8UuT.js.map → searchDocumentRelease-CUk7BiST.js.map} +1 -1
- package/lib/{studioClient-BwxgmLhi.js → studioClient-D1Z2zK3C.js} +2 -2
- package/lib/{studioClient-BwxgmLhi.js.map → studioClient-D1Z2zK3C.js.map} +1 -1
- package/lib/{useBundleDocuments-DQo9TiWp.js → useBundleDocuments-BnCBcbdJ.js} +7 -7
- package/lib/{useBundleDocuments-DQo9TiWp.js.map → useBundleDocuments-BnCBcbdJ.js.map} +1 -1
- package/lib/{useComments-dgt5MtDt.js → useComments-Bm-0CwNH.js} +2 -2
- package/lib/{useComments-dgt5MtDt.js.map → useComments-Bm-0CwNH.js.map} +1 -1
- package/lib/{useCommentsTelemetry-tsY98PEt.js → useCommentsTelemetry-D1kYRuPU.js} +3 -3
- package/lib/{useCommentsTelemetry-tsY98PEt.js.map → useCommentsTelemetry-D1kYRuPU.js.map} +1 -1
- package/lib/{useDocumentPreviewValues-6ZF0YWW7.js → useDocumentPreviewValues-DJvES8Wi.js} +3 -3
- package/lib/{useDocumentPreviewValues-6ZF0YWW7.js.map → useDocumentPreviewValues-DJvES8Wi.js.map} +1 -1
- package/lib/{useFeatureEnabled-CjakjPiy.js → useFeatureEnabled-g8eZoiLM.js} +2 -2
- package/lib/{useFeatureEnabled-CjakjPiy.js.map → useFeatureEnabled-g8eZoiLM.js.map} +1 -1
- package/lib/{useFieldActions-CnldzBM0.js → useFieldActions-BV_qfe65.js} +2 -2
- package/lib/{useFieldActions-CnldzBM0.js.map → useFieldActions-BV_qfe65.js.map} +1 -1
- package/lib/{useReleasesToolAvailable-CMbq6a40.js → useReleasesToolAvailable-Duu10qV0.js} +3 -3
- package/lib/{useReleasesToolAvailable-CMbq6a40.js.map → useReleasesToolAvailable-Duu10qV0.js.map} +1 -1
- package/lib/{useScheduledDraftMenuActions-LOI8hKEc.js → useScheduledDraftMenuActions-Byiy3-k3.js} +5 -5
- package/lib/{useScheduledDraftMenuActions-LOI8hKEc.js.map → useScheduledDraftMenuActions-Byiy3-k3.js.map} +1 -1
- package/lib/{useStudioUrl-DGru3FP7.js → useStudioUrl-BEb30_UK.js} +5 -5
- package/lib/{useStudioUrl-DGru3FP7.js.map → useStudioUrl-BEb30_UK.js.map} +1 -1
- package/lib/{useTimeZone-B0ZhF1i9.js → useTimeZone-zs0ybzXu.js} +2 -2
- package/lib/{useTimeZone-B0ZhF1i9.js.map → useTimeZone-zs0ybzXu.js.map} +1 -1
- package/lib/{validationUtils-o0P-Hm5O.js → validationUtils-LdwtMTh5.js} +4 -4
- package/lib/{validationUtils-o0P-Hm5O.js.map → validationUtils-LdwtMTh5.js.map} +1 -1
- package/lib/{version-CdlwC8TG.js → version-XEmBTnIh.js} +2 -2
- package/lib/{version-CdlwC8TG.js.map → version-XEmBTnIh.js.map} +1 -1
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariantsTool-C2-mCbDU.js","names":["SanityDocument","DocumentSystem","DOCUMENT_SYSTEM_FIELD","VariantDocumentVersion","toVariantDocumentVersion","document","system","group","_ref","documentId","_id","bundleId","undefined","releaseRef","release","updatedAt","_updatedAt","useMemo","BundleDocument","useBundleDocuments","DocumentInVariant","toVariantDocumentVersion","getVariantId","useVariantDocuments","variantId","$","_c","enabled","Boolean","t0","t1","params","t2","t3","groqFilter","cacheKey","loading","results","error","t4","toDocumentInVariants","variantResults","t5","t6","t7","flatMap","result","version","document","DocumentSystem","PerspectiveBundle","DOCUMENT_SYSTEM_FIELD","isPublishedBundleId","DocumentInVariant","DocumentInVariantGroup","DocumentValidationStatus","VariantDocumentVersion","getBundleSortOrder","bundleId","compareVariantDocumentVersions","left","right","leftOrder","rightOrder","documentId","localeCompare","pickRepresentativeDocument","documents","reduce","latest","current","latestUpdatedAt","document","_updatedAt","currentUpdatedAt","aggregateValidation","representative","isValidating","some","validation","flatMap","revision","hasError","groupVariantDocumentsByGroup","groups","Map","system","groupId","group","_ref","existingGroup","get","push","set","Array","from","entries","map","groupDocuments","versions","item","version","toSorted","SanityClient","getVariantId","EditableSystemVariant","variantsClient","VariantDefinitionActionResult","VariantOperationsStore","createVariant","variant","Promise","updateVariant","deleteVariant","variantId","createVariantOperationsStore","options","client","handleCreateVariant","_id","action","actionType","const","conditions","priority","metadata","tag","handleUpdateVariant","setPayload","Pick","Partial","patch","set","unset","handleDeleteVariant","variantIdOrDocumentId","useMemo","useClient","VARIANTS_STUDIO_CLIENT_OPTIONS","createVariantOperationsStore","useVariantOperations","$","_c","studioClient","t0","client","EditableSystemVariant","getVariantTitleValue","variant","title","metadata","trim","getIsVariantInvalid","getHasValidConditions","conditions","entries","Object","length","every","key","value","Boolean","CONDITION_KEY_REGEX","CONDITION_SEPARATOR","RESERVED_KEY_PREFIXES","const","ConditionKeyValidationError","ConditionValueValidationError","getConditionKeyValidationError","key","trimmedKey","trim","undefined","prefix","startsWith","includes","test","getConditionValueValidationError","value","PriorityValidationError","getPriorityValidationError","priority","Number","isFinite","undefined","getPriorityInputValidationError","input","trim","customAlphabet","VARIANT_DOCUMENTS_PATH","createVariantIdSuffix","createVariantId","PortableTextBlock","randomKey","EditableSystemVariant","createVariantId","getVariantDefaults","_id","_type","conditions","priority","metadata","title","description","createPortableTextDescription","text","trimmedText","trim","_key","children","marks","markDefs","style","SystemVariant","ConditionSuggestionOption","value","ConditionSuggestionIndex","keys","valuesByKey","Map","sortValues","values","Iterable","Array","from","filter","Boolean","toSorted","a","b","localeCompare","buildConditionSuggestionIndex","variants","Set","forEach","variant","Object","entries","conditions","rawKey","rawValue","key","trim","add","get","set","getConditionKeyOptions","index","rows","ReadonlyArray","currentRowIndex","usedKeys","_","rowIndex","map","row","has","getConditionValueOptions","conditionKey","filterConditionOption","query","option","toLowerCase","includes","Autocomplete","useCallback","useId","useState","ConditionSuggestionOption","filterConditionOption","ConditionAutocompleteInputProps","ariaLabel","autoFocus","customValidity","invalid","onChange","value","options","placeholder","testId","ConditionAutocompleteInput","props","$","_c","id","focused","setFocused","t0","nextValue","handleQueryChange","t1","undefined","t2","Symbol","for","t3","t4","t5","isPortableTextBlock","toPlainText","AddIcon","HelpCircleIcon","TrashIcon","Path","PortableTextBlock","Box","Flex","Inline","Stack","Text","TextArea","TextInput","randomKey","ChangeEvent","useCallback","useId","useMemo","useState","Button","Tooltip","TextWithTone","useTranslation","VariantsLocaleResourceKeys","variantsLocaleNamespace","useAllVariants","EditableSystemVariant","getConditionKeyValidationError","getConditionValueValidationError","getVariantTitleValue","getPriorityInputValidationError","createPortableTextDescription","ConditionAutocompleteInput","buildConditionSuggestionIndex","getConditionKeyOptions","getConditionValueOptions","ConditionRow","id","key","value","ConditionRowValidation","getConditionRows","conditions","rows","Object","entries","map","length","getConditionsFromRows","reduce","row","trim","isConditionRowEmpty","getEmptyConditionRowValidation","getConditionRowsValidation","Map","conditionRowsValidation","seenKeys","Set","forEach","index","validation","has","add","keyError","valueError","set","hasConditionRowsValidationErrors","Array","from","values","some","getPortableTextDescriptionValue","description","isArray","every","VariantFormChangeHandler","path","VariantForm","props","$","_c","onChange","onConditionValidityChange","onPriorityValidityChange","showValidation","t0","undefined","t","data","variants","t1","suggestionIndex","titleId","descriptionId","priorityId","t2","conditionRows","setConditionRows","t3","priority","String","priorityInput","setPriorityInput","t4","conditionsValidation","t5","hasTitle","Boolean","showTitleError","t6","priorityValidationError","showPriorityError","lastConditionRow","t7","canAddCondition","t8","nextRows","nextRowsValidation","nextRowsInvalid","updateConditionRows","t9","event","currentTarget","handleTitleChange","t10","event_0","handleDescriptionChange","t11","event_1","rawValue","nextValue","valueAsNumber","priorityValidationError_0","Number","isFinite","handlePriorityChange","t12","field","nextValue_0","nextRows_0","rowIndex","handleConditionChange","t13","handleAddCondition","t14","index_0","nextRows_1","filter","_","rowIndex_0","handleRemoveCondition","t15","t16","t17","t18","t19","t20","metadata","title","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","t34","Symbol","for","t35","t36","t37","t38","t39","t40","t41","t42","t43","t44","t45","t46","t47","row_0","index_1","get","valueValidation","conditionValidationError","nextValue_1","nextValue_2","content","t48","t49","t50","t51","t52","t53","t54","at","set","applyPatches","Box","Card","Flex","useToast","FormEvent","useCallback","useState","Button","Dialog","useTranslation","variantsLocaleNamespace","EditableSystemVariant","getIsVariantInvalid","VariantForm","VariantFormChangeHandler","VariantDialogProps","confirmDataTestId","confirmText","errorTitle","header","id","initialValue","onCancel","onSubmit","variant","Promise","renderCancelButton","VariantDialog","props","$","_c","t0","undefined","toast","t","setVariant","isSubmitting","setIsSubmitting","showValidation","setShowValidation","conditionsInvalid","setConditionsInvalid","priorityInvalid","setPriorityInvalid","t1","invalid","t2","Symbol","for","path","nextValue","currentVariant","handleVariantChange","t3","event","preventDefault","t4","error","console","push","closable","status","title","handleSubmit","t5","t6","t7","t8","t9","t10","t11","useCallback","useMemo","useTranslation","variantsLocaleNamespace","useVariantOperations","EditableSystemVariant","SystemVariant","VariantDialog","EditVariantDialogProps","onCancel","onSubmit","variant","toEditableVariant","_id","_type","conditions","priority","metadata","EditVariantDialog","props","$","_c","initialVariant","t","updateVariant","t0","initialValue","t1","handleSubmit","t2","t3","t4","t5","Text","Dialog","useTranslation","variantsLocaleNamespace","DeleteVariantDialogProps","isDeleting","onClose","onConfirm","variantTitle","DeleteVariantDialog","t0","$","_c","t","t1","disabled","t2","t3","loading","onClick","text","tone","t4","cancelButton","confirmButton","t5","t6","undefined","t7","title","t8","t9","useToast","useCallback","useMemo","useState","useTranslation","variantsLocaleNamespace","useVariantOperations","UseVariantDeleteActionOptions","documentCount","documentsLoading","onDeleted","variantTitle","useVariantDeleteAction","variantId","options","deleteDisabled","deleteDisabledTooltip","handleCloseDeleteDialog","handleConfirmDelete","Promise","handleDelete","isDeleteDialogOpen","isDeleting","t","toast","deleteVariant","setIsDeleting","setIsDeleteDialogOpen","hasDocuments","countUnknown","undefined","count","error","console","push","closable","status","title","EllipsisHorizontalIcon","TrashIcon","Menu","useRouter","Button","MenuButton","MenuItem","useTranslation","DeleteVariantDialog","useVariantDeleteAction","variantsLocaleNamespace","SystemVariant","getVariantTitle","VariantMenuButton","t0","$","_c","documentCount","documentsLoading","t1","variant","undefined","t","router","t2","variantTitle","t3","navigate","t4","onDeleted","deleteDisabled","deleteDisabledTooltip","handleCloseDeleteDialog","handleConfirmDelete","handleDelete","isDeleteDialogOpen","isDeleting","dialogVariantTitle","_id","t5","t6","t7","content","t8","t9","t10","t11","t12","t13","Symbol","for","placement","portal","t14","t15","t16","EditIcon","useState","Button","DetailActionRail","useTranslation","EditVariantDialog","variantsLocaleNamespace","SystemVariant","VariantMenuButton","VariantActionRail","t0","$","_c","documentCount","documentsLoading","variant","t","editDialogOpen","setEditDialogOpen","t1","Symbol","for","t2","t3","t4","t5","t6","t7","CalendarIcon","CaseIcon","DesktopIcon","EarthAmericasIcon","EarthGlobeIcon","FilterIcon","MobileDeviceIcon","PackageIcon","RocketIcon","SplitVerticalIcon","StarIcon","TagIcon","TargetIcon","TranslateIcon","UserIcon","UsersIcon","ComponentType","DIMENSION_ICONS","Record","audience","segment","cohort","role","location","region","country","market","geo","locale","language","lang","device","platform","environment","env","os","brand","campaign","plan","tier","subscription","industry","vertical","category","product","channel","source","date","season","getVariantConditionIcon","key","normalized","trim","toLowerCase","replace","ReleaseDocument","getReleaseDocumentIdFromReleaseId","isPublishedBundleId","isReleaseBundle","DocumentInVariantGroup","VariantDocumentVersion","ReleaseLaneKind","RELEASE_LANE_ALL","ResolvedVersionBundle","id","kind","release","resolveVersionBundle","version","releasesById","Map","bundleId","releaseRef","get","_id","releaseDocumentId","getRowBundleIds","row","Set","ids","versions","add","ReleaseLaneSegment","count","getKindOrder","bundleSortLabel","bundle","metadata","title","compareResolvedBundles","left","right","kindDelta","localeCompare","getSortedRowBundles","seen","resolved","has","set","Array","from","values","toSorted","computeReleaseLaneSegments","rows","segments","existing","segment","rowMatchesLane","laneId","getRowBundleSortKey","primary","getPrimaryBundle","TFunction","memo","DocumentInVariantGroup","VariantDocumentActions","_props","row","t","SanityDocument","getDocumentPreviewTitle","document","title","name","trim","_id","ReleaseDocument","Badge","Box","Flex","Stack","Text","useMemo","IntentLink","Tooltip","useTranslation","ReleaseAvatarIcon","ReleaseTitle","RELEASES_INTENT","getReleaseIdFromReleaseDocumentId","variantsLocaleNamespace","getSortedRowBundles","ReleaseLaneKind","VariantDocumentVersion","MAX_VISIBLE_CHIPS","ResolvedChip","key","kind","release","useChipLabel","$","_c","t","t0","chip","metadata","title","getChipTone","ChipIcon","t1","Symbol","for","ReleaseBundleChip","_id","releaseId","t2","t3","t4","t5","displayTitle","id","maxWidth","overflow","textOverflow","whiteSpace","VisibleChip","label","VariantDocumentBundleChips","versions","releasesById","getLabel","map","_temp","chips","visible","slice","minWidth","length","chip_0","resolved","ReleaseDocument","Box","Card","Flex","Text","useMemo","RefAttributes","IntentLink","PreviewLayoutKey","DocumentPreviewPresence","SanityDefaultPreview","ReleaseAvatarIcon","getReleaseIdFromReleaseDocumentId","useDocumentPresence","useDocumentPreviewValues","getPublishedId","isPublishedBundleId","getPrimaryBundle","DocumentInVariantGroup","VariantDocumentPreviewProps","row","releasesById","Map","layout","variantId","PrimaryBundleIcon","t0","$","_c","t1","primary","t2","kind","release","VariantDocumentPreviewLinkProps","React","ComponentPropsWithoutRef","publishedId","documentType","searchParams","Array","VariantDocumentPreviewLink","linkProps","ref","id","type","getVersionPerspectiveNavigation","bundleId","perspectiveStack","length","undefined","VariantDocumentPreview","groupId","documentPresence","document","_id","version","navBundleId","t3","t4","previewPresence","t5","_type","documentId","variant","isLoading","previewLoading","value","resolvedPreview","t6","t7","Symbol","for","minWidth","t8","t9","t10","t11","ReleaseDocument","CheckmarkCircleIcon","ClockIcon","ErrorOutlineIcon","Box","Flex","Text","TFunction","memo","ToneIcon","Tooltip","EditedByCell","RelativeTime","useSchema","SanityDefaultPreview","Headers","Column","getRowBundleSortKey","DocumentInVariantGroup","getDocumentPreviewTitle","VariantDocumentBundleChips","VariantDocumentPreview","versionsFingerprint","row","versions","map","v","documentId","bundleId","releaseRef","join","MemoVariantDocumentPreview","t0","$","_c","releasesById","variantId","t1","prev","next","memoKey","MemoDocumentType","DocumentType","type","schema","get","schemaType","t2","title","t3","ValidationStatusIndicator","datum","t","validation","hasError","T0","T1","T2","t4","t5","t6","t7","t8","t9","validationErrorCount","filter","_temp","length","Symbol","for","count","t10","t11","t12","t13","isValidating","level","getVariantDocumentTableColumnDefs","Map","id","hidden","width","sorting","sortTransform","rowKey","groupId","style","minWidth","maxWidth","header","props","headerProps","cell","cellProps","flex","overflow","isLoading","document","_type","toLowerCase","_updatedAt","_id","_rev","Flex","TabList","Tab","useTranslation","variantsLocaleNamespace","ReleaseLaneKind","RELEASE_LANE_ALL","ReleaseLaneSegment","getSegmentTone","kind","VariantReleaseLane","t0","$","_c","segments","totalCount","activeLane","onSelectLane","t","tCore","t1","label","count","t2","t3","t4","t5","t6","segment","release","metadata","title","isSelected","id","map","useCallback","useMemo","useState","useTranslation","useActiveReleases","DocumentTable","Column","searchDocumentRelease","variantsLocaleNamespace","computeReleaseLaneSegments","RELEASE_LANE_ALL","rowMatchesLane","DocumentInVariantGroup","VariantDocumentActions","getVariantDocumentTableColumnDefs","VariantReleaseLane","searchVariantDocument","row","searchTerm","document","VariantDocumentsTable","t0","$","_c","rows","loading","t1","variantId","undefined","t","activeLane","setActiveLane","data","releases","t2","Map","map","_temp","releasesById","t3","segments","activeLaneIsValid","some","segment","id","resolvedActiveLane","t4","filter","filtered","t5","_temp2","laneRows","t6","Symbol","for","laneId","previous","handleSelectLane","t7","t8","datum","renderRowActions","hasReleaseControls","length","columnDefs","t9","column","direction","t10","t11","t12","t13","_temp3","row_1","groupId","row_0","rowKey","release","_id","DocumentsIcon","EditIcon","SortIcon","UserIcon","Box","Card","Container","Flex","Skeleton","Stack","Text","useMemo","useRouter","DetailBackButton","DetailIdentity","DetailPropertiesPanel","DetailPropertiesSection","LoadingBlock","RelativeTime","useTranslation","useVariantDocuments","variantsLocaleNamespace","useAllVariants","decodeVariantIdFromRoute","getVariantDescription","getVariantId","getVariantTitle","groupVariantDocumentsByGroup","VariantActionRail","getVariantConditionIcon","VariantDocumentsTable","VariantDetail","$","_c","router","t","variantIdRaw","state","variantId","undefined","byId","loading","variant","get","documentsLoading","results","variantDocuments","error","variantDocumentsError","_id","t0","tableRows","t1","filter","_temp2","unpublishedCount","length","t2","bb0","t3","Symbol","for","conditions","conditionEntries","Object","entries","map","_temp3","label","value","conditionRows","t4","t5","title","multiColumn","rows","definitionSections","count","width","height","String","countValue","t6","t7","t8","icon","t9","t10","t11","t12","t13","priority","t14","_createdAt","t15","t16","documentSections","t17","t18","navigate","t19","t20","t21","t22","t23","t24","t25","description","minWidth","t26","t27","t28","t29","t30","t31","t32","t33","minHeight","t34","t35","key","DimensionIcon","row","versions","some","_temp","version","bundleId","useCallback","useMemo","useTranslation","variantsLocaleNamespace","useVariantOperations","getVariantDefaults","VariantDialog","CreateVariantDialogProps","onCancel","onSubmit","createdVariantId","CreateVariantDialog","props","$","_c","t","createVariant","t0","Symbol","for","initialValue","t1","variant","_id","handleSubmit","t2","t3","t4","t5","SanityClient","useMemo","useObservable","Observable","of","catchError","distinctUntilChanged","map","scan","startWith","switchMap","useClient","listenQuery","VARIANTS_STUDIO_CLIENT_OPTIONS","VariantStoreState","useVariantsStore","getVariantId","VariantsDocumentCountsQuery","fetch","listen","buildVariantsDocumentCountsQuery","variantDocumentIds","projections","filters","variantDocumentId","membership","JSON","stringify","push","join","VariantsDocumentCountsState","data","Record","loading","error","Error","INITIAL_STATE","EMPTY_STATE","listenVariantsDocumentCounts","client","length","tag","perspective","pipe","response","Object","fromEntries","getVariantsDocumentCounts","variantsState$","state","Array","from","variants","keys","toSorted","idsKey","split","previous","next","useVariantsDocumentCounts","$","_c","state$","t0","observable","AddIcon","CheckmarkIcon","CloseIcon","FilterIcon","SearchIcon","Box","Card","Flex","Stack","Text","TextInput","useClickOutsideEvent","ComponentType","useCallback","useEffect","useMemo","useRef","useState","Button","Popover","Tooltip","useTranslation","variantsLocaleNamespace","getVariantConditionIcon","ConditionFacet","facetLabel","key","charAt","toUpperCase","slice","AddFilterMenu","t0","$","_c","facets","value","onToggleValue","t","open","setOpen","dimensionKey","setDimensionKey","query","setQuery","buttonEl","setButtonEl","popoverEl","setPopoverEl","t1","Symbol","for","close","t2","T0","T1","T2","t3","t4","t5","t6","t7","t8","t9","facet","activeFacet","find","t10","bb0","normalized","trim","toLowerCase","filter","facet_0","includes","matchingFacets","width","t11","borderBottom","t12","event","currentTarget","t13","t14","borderRight","t15","length","map","facet_1","count","flex","values","val","isSelected","undefined","content","prev","NOOP","ActiveChip","icon","label","title","FilterChip","chip","iconOnly","onRemove","Icon","whiteSpace","body","ActiveChips","chips","collapsed","setCollapsed","containerRef","measureRef","container","current","measure","ResizeObserver","observer","scrollWidth","clientWidth","observe","disconnect","minWidth","overflow","position","left","pointerEvents","top","visibility","_temp","chip_0","VariantConditionFilters","onChange","Object","entries","flatMap","_temp2","activeChips","hasActive","key_0","val_0","next","v","updated","toggleValue","display","height","background","EditIcon","TrashIcon","Menu","MenuDivider","useState","MenuButton","MenuItem","ContextMenuButton","useTranslation","DeleteVariantDialog","EditVariantDialog","useVariantDeleteAction","variantsLocaleNamespace","SystemVariant","getVariantId","getVariantTitle","VariantMenuButton","t0","$","_c","documentCount","variant","t","t1","variantTitle","isEditDialogOpen","setIsEditDialogOpen","t2","deleteDisabled","deleteDisabledTooltip","handleCloseDeleteDialog","handleConfirmDelete","handleDelete","isDeleteDialogOpen","isDeleting","dialogVariantTitle","_id","t3","t4","t5","t6","Symbol","for","t7","t8","t9","t10","t11","content","undefined","t12","t13","t14","placement","portal","t15","t16","t17","t18","BASE_PANEL","LINES_FULL","LINES_MEDIUM","LINES_SHORT","VariantIllustration","$","_c","t0","Symbol","for","t1","map","_temp","t2","slice","_temp2","t3","_temp3","t4","t5","_temp4","d","d_0","d_1","d_2","index","Flex","rem","Text","Button","useTranslation","variantsLocaleNamespace","VariantIllustration","VariantsEmptyStateProps","createVariantButton","React","ReactNode","VARIANTS_DOCUMENTATION_URL","VariantsEmptyState","t0","$","_c","t","t1","Symbol","for","maxWidth","t2","t3","t4","t5","textAlign","t6","t7","t8","t9","t10","t11","Box","Card","Flex","Skeleton","Stack","Text","HTMLProps","useMemo","RefAttributes","StateLink","useTranslation","UseTranslationResponse","Headers","Column","VisibleColumn","variantsLocaleNamespace","SystemVariant","getVariantId","getVariantConditionsText","getVariantTitle","TableVariant","documentCount","VariantDocumentsCell","t0","$","_c","cellProps","datum","isLoading","undefined","t1","Symbol","for","width","t2","t3","VariantTitleCell","variant","t","_id","encodedVariantId","VariantLinkComponent","linkProps","ref","rest","variantId","VariantLink","t4","t5","conditions","conditionsText","minWidth","t6","t7","t8","t9","t10","t11","variantsOverviewColumnDefs","id","sorting","style","header","props","headerProps","cell","sortTransform","AddIcon","Card","Container","Flex","Stack","Text","useCallback","useMemo","useState","useRouter","Button","useTranslation","DocumentTable","CreateVariantDialog","useVariantsDocumentCounts","variantsLocaleNamespace","useAllVariants","SystemVariant","buildConditionFacets","filterVariantsForSearch","getVariantId","variantMatchesConditionFilters","VariantConditionFilters","VariantMenuButton","VariantsEmptyState","TableVariant","variantsOverviewColumnDefs","VARIANT_TABLE_ROW_ID","getRowKey","variant","_id","searchPredicate","term","length","VariantsOverview","$","_c","t","router","data","variants","error","loading","isCreateVariantDialogOpen","setIsCreateVariantDialogOpen","t0","Symbol","for","conditionFilters","setConditionFilters","t1","handleCreateVariant","t2","createdVariantId","navigate","variantId","handleOnCreateVariant","t3","columnDefs","renderRowActions","_temp","t4","variantsList","documentCounts","documentCountsError","t5","facets","t6","t7","t8","variant_0","documentCount","undefined","filter","map","rows","hasVariants","hasActiveConditionFilters","Object","values","some","_temp2","createVariantButton","t9","tableEmptyState","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","datum","useRouter","VariantDetail","VariantsOverview","VariantsTool","$","_c","router","variantId","state","undefined","t0","Symbol","for"],"sources":["../src/core/variants/tool/detail/variantDocumentVersion.ts","../src/core/variants/hooks/useVariantDocuments.ts","../src/core/variants/tool/detail/groupVariantDocumentsByGroup.ts","../src/core/variants/store/createVariantOperationsStore.ts","../src/core/variants/store/useVariantOperations.ts","../src/core/variants/util/getIsVariantInvalid.ts","../src/core/variants/util/conditionValidation.ts","../src/core/variants/util/priorityValidation.ts","../src/core/variants/util/createVariantId.ts","../src/core/variants/util/variantDefaults.ts","../src/core/variants/components/dialog/conditionSuggestions.ts","../src/core/variants/components/dialog/ConditionAutocompleteInput.tsx","../src/core/variants/components/dialog/VariantForm.tsx","../src/core/variants/components/dialog/VariantDialog.tsx","../src/core/variants/components/dialog/EditVariantDialog.tsx","../src/core/variants/components/dialog/DeleteVariantDialog.tsx","../src/core/variants/hooks/useVariantDeleteAction.ts","../src/core/variants/tool/detail/VariantMenuButton.tsx","../src/core/variants/tool/detail/VariantActionRail.tsx","../src/core/variants/tool/detail/variantConditionIcons.ts","../src/core/variants/tool/detail/releaseLane.ts","../src/core/variants/tool/detail/variantDocumentTable/VariantDocumentActions.tsx","../src/core/variants/tool/detail/variantDocumentTable/getDocumentPreviewTitle.ts","../src/core/variants/tool/detail/variantDocumentTable/VariantDocumentBundleChips.tsx","../src/core/variants/tool/detail/variantDocumentTable/VariantDocumentPreview.tsx","../src/core/variants/tool/detail/variantDocumentTable/VariantDocumentTableColumnDefs.tsx","../src/core/variants/tool/detail/VariantReleaseLane.tsx","../src/core/variants/tool/detail/VariantDocumentsTable.tsx","../src/core/variants/tool/detail/VariantDetail.tsx","../src/core/variants/components/dialog/CreateVariantDialog.tsx","../src/core/variants/hooks/useVariantsDocumentCounts.ts","../src/core/variants/tool/overview/VariantConditionFilters.tsx","../src/core/variants/tool/overview/VariantMenuButton.tsx","../src/core/variants/tool/resources/VariantIllustration.tsx","../src/core/variants/tool/overview/VariantsEmptyState.tsx","../src/core/variants/tool/overview/VariantsOverviewColumnDefs.tsx","../src/core/variants/tool/overview/VariantsOverview.tsx","../src/core/variants/tool/VariantsTool.tsx"],"sourcesContent":["import {type SanityDocument} from '@sanity/client'\nimport {type DocumentSystem} from '@sanity/types'\n\nimport {DOCUMENT_SYSTEM_FIELD} from '../../../preview/constants'\nimport {type VariantDocumentVersion} from './types'\n\n/**\n * @internal\n */\nexport function toVariantDocumentVersion(document: SanityDocument): VariantDocumentVersion | null {\n const system = document[DOCUMENT_SYSTEM_FIELD] as DocumentSystem | undefined\n\n if (!system?.group?._ref) {\n return null\n }\n\n return {\n documentId: document._id,\n bundleId: system.bundleId ?? undefined,\n releaseRef: system.release?._ref ?? null,\n updatedAt: document._updatedAt ?? '',\n }\n}\n","import {useMemo} from 'react'\n\nimport {\n type BundleDocument,\n useBundleDocuments,\n} from '../../releases/tool/detail/useBundleDocuments'\nimport {type DocumentInVariant} from '../tool/detail/types'\nimport {toVariantDocumentVersion} from '../tool/detail/variantDocumentVersion'\nimport {getVariantId} from '../tool/util'\n\n/**\n * Hook to fetch the documents that belong to a variant.\n *\n * Reuses the generic {@link useBundleDocuments} machinery with\n * `sanity::partOfVariant($variantId)`.\n *\n * @internal\n */\nexport function useVariantDocuments(variantId: string | undefined): {\n loading: boolean\n results: DocumentInVariant[]\n error: null | Error\n} {\n const enabled = Boolean(variantId)\n const params = useMemo(() => ({variantId: variantId ? getVariantId(variantId) : ''}), [variantId])\n\n const {loading, results, error} = useBundleDocuments({\n groqFilter: `sanity::partOfVariant($variantId)`,\n params,\n cacheKey: enabled ? `variant-${variantId}` : 'variant-disabled',\n enabled,\n })\n\n const variantResults = useMemo(\n () => (enabled ? toDocumentInVariants(results) : []),\n [enabled, results],\n )\n\n return {\n loading: enabled && loading,\n results: variantResults,\n error: enabled ? error : null,\n }\n}\n\nfunction toDocumentInVariants(results: BundleDocument[]): DocumentInVariant[] {\n return results.flatMap((result) => {\n const version = toVariantDocumentVersion(result.document)\n\n return version ? [{...result, version}] : []\n })\n}\n","import {type DocumentSystem} from '@sanity/types'\n\nimport {type PerspectiveBundle} from '../../../perspective/types'\nimport {DOCUMENT_SYSTEM_FIELD} from '../../../preview/constants'\nimport {isPublishedBundleId} from '../util'\nimport {\n type DocumentInVariant,\n type DocumentInVariantGroup,\n type DocumentValidationStatus,\n type VariantDocumentVersion,\n} from './types'\n\nfunction getBundleSortOrder(bundleId: PerspectiveBundle | undefined): number {\n if (isPublishedBundleId(bundleId)) {\n return 0\n }\n\n if (bundleId === 'drafts') {\n return 1\n }\n\n return 2\n}\n\nfunction compareVariantDocumentVersions(\n left: VariantDocumentVersion,\n right: VariantDocumentVersion,\n): number {\n const leftOrder = getBundleSortOrder(left.bundleId)\n const rightOrder = getBundleSortOrder(right.bundleId)\n\n if (leftOrder !== rightOrder) {\n return leftOrder - rightOrder\n }\n\n return left.documentId.localeCompare(right.documentId)\n}\n\nfunction pickRepresentativeDocument(documents: DocumentInVariant[]): DocumentInVariant {\n return documents.reduce((latest, current) => {\n const latestUpdatedAt = latest.document._updatedAt ?? ''\n const currentUpdatedAt = current.document._updatedAt ?? ''\n\n return currentUpdatedAt > latestUpdatedAt ? current : latest\n })\n}\n\nfunction aggregateValidation(documents: DocumentInVariant[]): DocumentValidationStatus {\n const representative = pickRepresentativeDocument(documents)\n\n return {\n isValidating: documents.some((document) => document.validation.isValidating),\n validation: documents.flatMap((document) => document.validation.validation),\n revision: representative.validation.revision,\n hasError: documents.some((document) => document.validation.hasError),\n }\n}\n\n/**\n * Groups flat variant document versions into one row per document group.\n *\n * @internal\n */\nexport function groupVariantDocumentsByGroup(\n documents: DocumentInVariant[],\n): DocumentInVariantGroup[] {\n const groups = new Map<string, DocumentInVariant[]>()\n\n for (const document of documents) {\n const system = document.document[DOCUMENT_SYSTEM_FIELD] as DocumentSystem | undefined\n const groupId = system?.group?._ref\n\n if (!groupId) {\n continue\n }\n\n const existingGroup = groups.get(groupId)\n\n if (existingGroup) {\n existingGroup.push(document)\n } else {\n groups.set(groupId, [document])\n }\n }\n\n return Array.from(groups.entries()).map(([groupId, groupDocuments]) => {\n const representative = pickRepresentativeDocument(groupDocuments)\n const versions = groupDocuments\n .map((item) => item.version)\n .toSorted(compareVariantDocumentVersions)\n\n return {\n ...representative,\n groupId,\n versions,\n validation: aggregateValidation(groupDocuments),\n }\n })\n}\n","import {type SanityClient} from '@sanity/client'\n\nimport {getVariantId} from '../tool/util'\nimport {type EditableSystemVariant} from '../types'\nimport {variantsClient, type VariantDefinitionActionResult} from './variantsClient'\n\nexport interface VariantOperationsStore {\n createVariant: (variant: EditableSystemVariant) => Promise<VariantDefinitionActionResult>\n updateVariant: (variant: EditableSystemVariant) => Promise<VariantDefinitionActionResult>\n deleteVariant: (variantId: string) => Promise<VariantDefinitionActionResult>\n}\n\n/**\n * Variant definition writes use the actions API. See ../ACTIONS.md.\n */\nexport function createVariantOperationsStore(options: {\n client: SanityClient\n}): VariantOperationsStore {\n const client = variantsClient(options.client)\n\n const handleCreateVariant = async (variant: EditableSystemVariant) => {\n const variantId = getVariantId(variant._id)\n const action = {\n actionType: 'sanity.action.variant.definition.create' as const,\n variantId,\n conditions: variant.conditions,\n priority: variant.priority,\n ...(variant.metadata ? {metadata: variant.metadata} : {}),\n }\n\n return await client.action(action, {tag: 'variants.create'})\n }\n\n const handleUpdateVariant = async (variant: EditableSystemVariant) => {\n const variantId = getVariantId(variant._id)\n const setPayload: Pick<EditableSystemVariant, 'conditions' | 'priority'> &\n Partial<Pick<EditableSystemVariant, 'metadata'>> = {\n conditions: variant.conditions,\n priority: variant.priority,\n }\n\n if (variant.metadata) {\n setPayload.metadata = variant.metadata\n }\n\n const patch: {\n set: typeof setPayload\n unset?: ['metadata']\n } = {\n set: setPayload,\n }\n\n if (!variant.metadata) {\n patch.unset = ['metadata']\n }\n\n const action = {\n actionType: 'sanity.action.variant.definition.edit' as const,\n variantId,\n patch,\n }\n\n return await client.action(action, {tag: 'variants.edit'})\n }\n\n const handleDeleteVariant = async (variantIdOrDocumentId: string) => {\n const action = {\n actionType: 'sanity.action.variant.definition.delete' as const,\n variantId: getVariantId(variantIdOrDocumentId),\n }\n\n return await client.action(action, {tag: 'variants.delete'})\n }\n\n return {\n createVariant: handleCreateVariant,\n updateVariant: handleUpdateVariant,\n deleteVariant: handleDeleteVariant,\n }\n}\n","import {useMemo} from 'react'\n\nimport {useClient} from '../../hooks/useClient'\nimport {VARIANTS_STUDIO_CLIENT_OPTIONS} from './constants'\nimport {createVariantOperationsStore} from './createVariantOperationsStore'\n\n/**\n * @internal\n */\nexport function useVariantOperations() {\n const studioClient = useClient(VARIANTS_STUDIO_CLIENT_OPTIONS)\n\n return useMemo(\n () =>\n createVariantOperationsStore({\n client: studioClient,\n }),\n [studioClient],\n )\n}\n","import {type EditableSystemVariant} from '../types'\n\n/**\n * @internal\n */\nexport function getVariantTitleValue(variant: EditableSystemVariant): string {\n const title = variant.metadata?.title\n\n return typeof title === 'string' ? title.trim() : ''\n}\n\n/**\n * @internal\n */\nexport function getIsVariantInvalid(variant: EditableSystemVariant): boolean {\n return !getVariantTitleValue(variant) || !getHasValidConditions(variant.conditions)\n}\n\nfunction getHasValidConditions(conditions: EditableSystemVariant['conditions']): boolean {\n const entries = Object.entries(conditions)\n\n return entries.length > 0 && entries.every(([key, value]) => Boolean(key.trim() && value.trim()))\n}\n","const CONDITION_KEY_REGEX = /^[a-z][a-z0-9_-]{0,63}$/\nconst CONDITION_SEPARATOR = ':'\nconst RESERVED_KEY_PREFIXES = ['_', '$'] as const\n\nexport type ConditionKeyValidationError = 'invalid' | 'reserved'\nexport type ConditionValueValidationError = 'empty' | 'invalid'\n\nexport function getConditionKeyValidationError(\n key: string,\n): ConditionKeyValidationError | undefined {\n const trimmedKey = key.trim()\n\n if (!trimmedKey) {\n return undefined\n }\n\n for (const prefix of RESERVED_KEY_PREFIXES) {\n if (trimmedKey.startsWith(prefix)) {\n return 'reserved'\n }\n }\n\n if (trimmedKey.includes(CONDITION_SEPARATOR) || !CONDITION_KEY_REGEX.test(trimmedKey)) {\n return 'invalid'\n }\n\n return undefined\n}\n\nexport function getConditionValueValidationError(\n value: string,\n): ConditionValueValidationError | undefined {\n if (!value.trim()) {\n return 'empty'\n }\n\n if (value.includes(CONDITION_SEPARATOR)) {\n return 'invalid'\n }\n\n return undefined\n}\n","export type PriorityValidationError = 'invalid'\n\nexport function getPriorityValidationError(priority: number): PriorityValidationError | undefined {\n if (!Number.isFinite(priority)) {\n return 'invalid'\n }\n\n return undefined\n}\n\nexport function getPriorityInputValidationError(\n input: string,\n): PriorityValidationError | undefined {\n if (input.trim() === '') {\n return 'invalid'\n }\n\n return getPriorityValidationError(Number(input))\n}\n","// Mimics the implementation from createReleaseId.ts\nimport {customAlphabet} from 'nanoid'\n\nimport {VARIANT_DOCUMENTS_PATH} from '../store/constants'\n\n/**\n * ~24 years (or 7.54e+8 seconds) needed, in order to have a 1% probability of at least one collision if 10 ID's are generated every hour.\n */\nconst createVariantIdSuffix = customAlphabet(\n 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',\n 8,\n)\n\n/**\n * Create a unique system variant document id.\n *\n * @internal\n */\nexport function createVariantId(): `${typeof VARIANT_DOCUMENTS_PATH}.${string}` {\n return `${VARIANT_DOCUMENTS_PATH}.${createVariantIdSuffix()}`\n}\n","import {type PortableTextBlock} from '@sanity/types'\nimport {randomKey} from '@sanity/util/content'\n\nimport {type EditableSystemVariant} from '../types'\nimport {createVariantId} from './createVariantId'\n\n/**\n * @internal\n */\nexport function getVariantDefaults(): EditableSystemVariant {\n return {\n _id: createVariantId(),\n _type: 'system.variant',\n conditions: {},\n priority: 0,\n metadata: {\n title: '',\n description: [],\n },\n }\n}\n\n/**\n * @internal\n */\nexport function createPortableTextDescription(text: string): PortableTextBlock[] {\n const trimmedText = text.trim()\n\n if (!trimmedText) {\n return []\n }\n\n return [\n {\n _key: randomKey(12),\n _type: 'block',\n children: [\n {\n _key: randomKey(12),\n _type: 'span',\n marks: [],\n text,\n },\n ],\n markDefs: [],\n style: 'normal',\n },\n ]\n}\n","import {type SystemVariant} from '../../types'\n\nexport interface ConditionSuggestionOption {\n value: string\n}\n\n/**\n * Precomputed lookup of the condition keys and per-key values used across all\n * existing variants. Building this once (e.g. in a `useMemo` keyed on the\n * variants) keeps per-row option derivation cheap, since it avoids re-scanning\n * every variant on each render/keystroke.\n *\n * @internal\n */\nexport interface ConditionSuggestionIndex {\n /** Unique condition keys, sorted. */\n keys: string[]\n /** Unique values per condition key, sorted. */\n valuesByKey: Map<string, string[]>\n}\n\nfunction sortValues(values: Iterable<string>): string[] {\n return Array.from(values)\n .filter(Boolean)\n .toSorted((a, b) => a.localeCompare(b))\n}\n\n/**\n * @internal\n */\nexport function buildConditionSuggestionIndex(variants: SystemVariant[]): ConditionSuggestionIndex {\n const keys = new Set<string>()\n const valuesByKey = new Map<string, Set<string>>()\n\n variants.forEach((variant) => {\n Object.entries(variant.conditions).forEach(([rawKey, rawValue]) => {\n const key = rawKey.trim()\n\n if (!key) {\n return\n }\n\n keys.add(key)\n\n const value = rawValue?.trim()\n\n if (!value) {\n return\n }\n\n let values = valuesByKey.get(key)\n\n if (!values) {\n values = new Set<string>()\n valuesByKey.set(key, values)\n }\n\n values.add(value)\n })\n })\n\n return {\n keys: sortValues(keys),\n valuesByKey: new Map(Array.from(valuesByKey, ([key, values]) => [key, sortValues(values)])),\n }\n}\n\n/**\n * @internal\n */\nexport function getConditionKeyOptions(\n index: ConditionSuggestionIndex,\n rows: ReadonlyArray<{key: string}>,\n currentRowIndex: number,\n): ConditionSuggestionOption[] {\n const usedKeys = new Set(\n rows\n .filter((_, rowIndex) => rowIndex !== currentRowIndex)\n .map((row) => row.key.trim())\n .filter(Boolean),\n )\n\n return index.keys.filter((key) => !usedKeys.has(key)).map((value) => ({value}))\n}\n\n/**\n * @internal\n */\nexport function getConditionValueOptions(\n index: ConditionSuggestionIndex,\n conditionKey: string,\n): ConditionSuggestionOption[] {\n const key = conditionKey.trim()\n\n if (!key) {\n return []\n }\n\n return index.valuesByKey.get(key)?.map((value) => ({value})) ?? []\n}\n\n/**\n * @internal\n */\nexport function filterConditionOption(query: string, option: ConditionSuggestionOption): boolean {\n return option.value.toLowerCase().includes(query.trim().toLowerCase())\n}\n","import {Autocomplete} from '@sanity/ui'\nimport {useCallback, useId, useState} from 'react'\n\nimport {type ConditionSuggestionOption, filterConditionOption} from './conditionSuggestions'\n\ninterface ConditionAutocompleteInputProps {\n ariaLabel: string\n autoFocus?: boolean\n customValidity?: string\n invalid?: boolean\n onChange: (value: string) => void\n options: ConditionSuggestionOption[]\n placeholder: string\n testId: string\n value: string\n}\n\nexport function ConditionAutocompleteInput(\n props: ConditionAutocompleteInputProps,\n): React.JSX.Element {\n const {\n ariaLabel,\n autoFocus,\n customValidity,\n invalid,\n onChange,\n options,\n placeholder,\n testId,\n value,\n } = props\n const id = useId()\n const [focused, setFocused] = useState(false)\n\n const handleQueryChange = useCallback(\n (nextValue: string | null) => {\n // `onChange` fires when an option is selected. Free-text typing is exposed\n // through `onQueryChange`; `null` means the internal query closed.\n if (nextValue !== null) {\n onChange(nextValue)\n }\n },\n [onChange],\n )\n\n return (\n <Autocomplete\n id={id}\n aria-invalid={invalid ? 'true' : undefined}\n aria-label={ariaLabel}\n autoFocus={autoFocus}\n customValidity={customValidity}\n data-testid={testId}\n filterOption={filterConditionOption}\n fontSize={1}\n onBlur={() => setFocused(false)}\n onChange={onChange}\n onFocus={() => setFocused(true)}\n onQueryChange={handleQueryChange}\n openButton\n options={options}\n placeholder={placeholder}\n value={focused ? undefined : value}\n />\n )\n}\n","import {isPortableTextBlock, toPlainText} from '@portabletext/toolkit'\nimport {AddIcon} from '@sanity/icons/Add'\nimport {HelpCircleIcon} from '@sanity/icons/HelpCircle'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {type Path} from '@sanity/mutate'\nimport {type PortableTextBlock} from '@sanity/types'\nimport {Box, Flex, Inline, Stack, Text, TextArea, TextInput} from '@sanity/ui'\nimport {randomKey} from '@sanity/util/content'\nimport {type ChangeEvent, useCallback, useId, useMemo, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {TextWithTone} from '../../../components/textWithTone/TextWithTone'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type VariantsLocaleResourceKeys, variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {type EditableSystemVariant} from '../../types'\nimport {\n getConditionKeyValidationError,\n getConditionValueValidationError,\n} from '../../util/conditionValidation'\nimport {getVariantTitleValue} from '../../util/getIsVariantInvalid'\nimport {getPriorityInputValidationError} from '../../util/priorityValidation'\nimport {createPortableTextDescription} from '../../util/variantDefaults'\nimport {ConditionAutocompleteInput} from './ConditionAutocompleteInput'\nimport {\n buildConditionSuggestionIndex,\n getConditionKeyOptions,\n getConditionValueOptions,\n} from './conditionSuggestions'\n\ninterface ConditionRow {\n id: string\n key: string\n value: string\n}\n\ninterface ConditionRowValidation {\n key: VariantsLocaleResourceKeys | null\n value: VariantsLocaleResourceKeys | null\n}\n\nfunction getConditionRows(conditions: EditableSystemVariant['conditions']): ConditionRow[] {\n const rows = Object.entries(conditions).map(([key, value]) => ({\n id: randomKey(12),\n key,\n value,\n }))\n\n return rows.length ? rows : [{id: randomKey(12), key: '', value: ''}]\n}\n\nfunction getConditionsFromRows(rows: ConditionRow[]): EditableSystemVariant['conditions'] {\n return rows.reduce<EditableSystemVariant['conditions']>((conditions, row) => {\n const key = row.key.trim()\n const value = row.value.trim()\n\n if (key && value) {\n conditions[key] = value\n }\n\n return conditions\n }, {})\n}\n\nfunction isConditionRowEmpty(row: ConditionRow): boolean {\n return !row.key.trim() && !row.value.trim()\n}\n\nfunction getEmptyConditionRowValidation(): ConditionRowValidation {\n return {key: null, value: null}\n}\n\nfunction getConditionRowsValidation(rows: ConditionRow[]): Map<number, ConditionRowValidation> {\n const conditionRowsValidation = new Map<number, ConditionRowValidation>()\n const seenKeys = new Set<string>()\n\n rows.forEach((row, index) => {\n const validation: ConditionRowValidation = {key: null, value: null}\n const key = row.key.trim()\n const value = row.value.trim()\n\n if (key) {\n if (seenKeys.has(key)) {\n validation.key = 'dialog.create.condition-key.duplicate'\n } else {\n seenKeys.add(key)\n }\n\n const keyError = getConditionKeyValidationError(row.key)\n\n if (!validation.key && keyError === 'reserved') {\n validation.key = 'dialog.create.condition-key.reserved'\n } else if (!validation.key && keyError === 'invalid') {\n validation.key = 'dialog.create.condition-key.invalid'\n }\n } else if (value) {\n validation.key = 'dialog.create.condition-key.required'\n }\n\n const valueError = getConditionValueValidationError(row.value)\n\n if ((key || isConditionRowEmpty(row)) && valueError === 'empty') {\n validation.value = 'dialog.create.condition-value.required'\n } else if (valueError === 'invalid') {\n validation.value = 'dialog.create.condition-value.invalid'\n }\n\n conditionRowsValidation.set(index, validation)\n })\n\n return conditionRowsValidation\n}\n\nfunction hasConditionRowsValidationErrors(\n validation: Map<number, ConditionRowValidation>,\n): boolean {\n return Array.from(validation.values()).some(({key, value}) => key || value)\n}\n\nfunction getPortableTextDescriptionValue(description?: PortableTextBlock[]): string {\n if (!Array.isArray(description) || !description.every(isPortableTextBlock)) {\n return ''\n }\n\n return toPlainText(description)\n}\n\nexport type VariantFormChangeHandler = (path: Path, value: unknown) => void\n\nexport function VariantForm(props: {\n onChange: VariantFormChangeHandler\n onConditionValidityChange: (invalid: boolean) => void\n onPriorityValidityChange: (invalid: boolean) => void\n showValidation?: boolean\n value: EditableSystemVariant\n}) {\n const {\n onChange,\n onConditionValidityChange,\n onPriorityValidityChange,\n showValidation = false,\n value,\n } = props\n const {t} = useTranslation(variantsLocaleNamespace)\n const {data: variants} = useAllVariants()\n const suggestionIndex = useMemo(() => buildConditionSuggestionIndex(variants), [variants])\n const titleId = useId()\n const descriptionId = useId()\n const priorityId = useId()\n // `conditions` is stored as an object, but object keys are awkward to edit live:\n // duplicates collapse and partial key edits like \"far\" -> \"favorite\" can lose data.\n // Keep rows locally while editing, then commit back once they serialize cleanly.\n const [conditionRows, setConditionRows] = useState(() => getConditionRows(value.conditions))\n const [priorityInput, setPriorityInput] = useState(() => String(value.priority))\n const conditionsValidation = useMemo(\n () => getConditionRowsValidation(conditionRows),\n [conditionRows],\n )\n\n const hasTitle = Boolean(getVariantTitleValue(value))\n const showTitleError = showValidation && !hasTitle\n const priorityValidationError = getPriorityInputValidationError(priorityInput)\n const showPriorityError = showValidation && priorityValidationError\n\n const lastConditionRow = conditionRows[conditionRows.length - 1]\n const canAddCondition = Boolean(\n lastConditionRow && !hasConditionRowsValidationErrors(conditionsValidation),\n )\n\n const updateConditionRows = useCallback(\n (nextRows: ConditionRow[]) => {\n const rows = nextRows.length ? nextRows : getConditionRows({})\n\n setConditionRows(rows)\n\n const nextRowsValidation = getConditionRowsValidation(rows)\n const nextRowsInvalid = hasConditionRowsValidationErrors(nextRowsValidation)\n onConditionValidityChange(nextRowsInvalid)\n\n if (nextRows.length === 0 || !nextRowsInvalid) {\n onChange(['conditions'], getConditionsFromRows(nextRows))\n }\n },\n [onChange, onConditionValidityChange],\n )\n\n const handleTitleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n onChange(['metadata', 'title'], event.currentTarget.value)\n },\n [onChange],\n )\n\n const handleDescriptionChange = useCallback(\n (event: ChangeEvent<HTMLTextAreaElement>) => {\n onChange(\n ['metadata', 'description'],\n createPortableTextDescription(event.currentTarget.value),\n )\n },\n [onChange],\n )\n\n const handlePriorityChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const rawValue = event.currentTarget.value\n const nextValue = event.currentTarget.valueAsNumber\n\n setPriorityInput(rawValue)\n const priorityValidationError = getPriorityInputValidationError(rawValue)\n onPriorityValidityChange(Boolean(priorityValidationError))\n\n if (Number.isFinite(nextValue)) {\n onChange(['priority'], nextValue)\n }\n },\n [onChange, onPriorityValidityChange],\n )\n\n const handleConditionChange = useCallback(\n (index: number, field: 'key' | 'value', nextValue: string) => {\n const nextRows = conditionRows.map((row, rowIndex) =>\n rowIndex === index ? {...row, [field]: nextValue} : row,\n )\n\n updateConditionRows(nextRows)\n },\n [conditionRows, updateConditionRows],\n )\n\n const handleAddCondition = useCallback(() => {\n if (!canAddCondition) {\n return\n }\n\n updateConditionRows([...conditionRows, {id: randomKey(12), key: '', value: ''}])\n }, [canAddCondition, conditionRows, updateConditionRows])\n\n const handleRemoveCondition = useCallback(\n (index: number) => {\n const nextRows = conditionRows.filter((_, rowIndex) => rowIndex !== index)\n\n updateConditionRows(nextRows)\n },\n [conditionRows, updateConditionRows],\n )\n\n return (\n <Stack gap={5}>\n <Stack gap={3}>\n <Text as=\"label\" htmlFor={titleId} size={1} weight=\"medium\">\n {t('dialog.create.variant-title.label')}\n </Text>\n <TextInput\n autoFocus\n aria-invalid={showTitleError ? 'true' : undefined}\n customValidity={showTitleError ? t('dialog.create.variant-title.required') : undefined}\n data-testid=\"variant-form-title\"\n fontSize={2}\n id={titleId}\n onChange={handleTitleChange}\n placeholder={t('dialog.create.variant-title.placeholder')}\n value={typeof value.metadata?.title === 'string' ? value.metadata.title : ''}\n />\n {showTitleError && (\n <TextWithTone data-testid=\"variant-form-title-error\" size={1} tone=\"critical\">\n {t('dialog.create.variant-title.required')}\n </TextWithTone>\n )}\n </Stack>\n\n <Stack gap={3}>\n <Text as=\"label\" htmlFor={descriptionId} size={1} weight=\"medium\">\n {t('dialog.create.description.label')}\n </Text>\n <TextArea\n data-testid=\"variant-form-description\"\n fontSize={1}\n id={descriptionId}\n onChange={handleDescriptionChange}\n placeholder={t('dialog.create.description.placeholder')}\n rows={3}\n value={getPortableTextDescriptionValue(value.metadata?.description)}\n />\n </Stack>\n\n <Stack gap={3}>\n <Inline gap={1}>\n <Text as=\"label\" htmlFor={priorityId} size={1} weight=\"medium\">\n {t('dialog.create.priority.label')}\n </Text>\n <Tooltip content={t('dialog.create.priority.tooltip')} placement=\"right\">\n <HelpCircleIcon data-testid=\"variant-form-priority-help\" />\n </Tooltip>\n </Inline>\n <TextInput\n aria-invalid={showPriorityError ? 'true' : undefined}\n customValidity={\n showPriorityError && priorityValidationError\n ? t(`dialog.create.priority.${priorityValidationError}`)\n : undefined\n }\n data-testid=\"variant-form-priority\"\n fontSize={2}\n id={priorityId}\n inputMode=\"decimal\"\n onChange={handlePriorityChange}\n type=\"number\"\n value={priorityInput}\n />\n {showPriorityError && priorityValidationError && (\n <TextWithTone data-testid=\"variant-form-priority-error\" size={1} tone=\"critical\">\n {t(`dialog.create.priority.${priorityValidationError}`)}\n </TextWithTone>\n )}\n </Stack>\n\n <Stack gap={3}>\n <Stack gap={2}>\n <Text size={1} weight=\"medium\">\n {t('dialog.create.conditions.title')}\n </Text>\n <Text muted size={1}>\n {t('dialog.create.conditions.description')}\n </Text>\n </Stack>\n\n <Stack gap={2}>\n {conditionRows.map((row, index) => {\n const validation = conditionsValidation.get(index) ?? getEmptyConditionRowValidation()\n const valueValidation = showValidation ? validation.value : null\n const conditionValidationError = validation.key || valueValidation\n\n return (\n <Stack key={row.id} gap={2}>\n <Flex align=\"center\" gap={2}>\n <Box flex={1}>\n <ConditionAutocompleteInput\n autoFocus={index > 0}\n ariaLabel={t('dialog.create.condition-key.label')}\n customValidity={validation.key ? t(validation.key) : undefined}\n invalid={Boolean(validation.key)}\n onChange={(nextValue) => handleConditionChange(index, 'key', nextValue)}\n options={getConditionKeyOptions(suggestionIndex, conditionRows, index)}\n placeholder={t('dialog.create.condition-key.placeholder')}\n testId=\"variant-form-condition-key\"\n value={row.key}\n />\n </Box>\n <Box flex={1}>\n <ConditionAutocompleteInput\n ariaLabel={t('dialog.create.condition-value.label')}\n customValidity={valueValidation ? t(valueValidation) : undefined}\n invalid={Boolean(valueValidation)}\n onChange={(nextValue) => handleConditionChange(index, 'value', nextValue)}\n options={getConditionValueOptions(suggestionIndex, row.key)}\n placeholder={t('dialog.create.condition-value.placeholder')}\n testId=\"variant-form-condition-value\"\n value={row.value}\n />\n </Box>\n <Button\n disabled={isConditionRowEmpty(row) && conditionRows.length === 1}\n icon={TrashIcon}\n mode=\"bleed\"\n onClick={() => handleRemoveCondition(index)}\n tone=\"critical\"\n tooltipProps={{content: t('dialog.create.remove-condition')}}\n type=\"button\"\n />\n </Flex>\n {conditionValidationError && (\n <TextWithTone\n data-testid={\n validation.key\n ? 'variant-form-condition-key-error'\n : 'variant-form-condition-value-error'\n }\n size={1}\n tone=\"critical\"\n >\n {t(conditionValidationError)}\n </TextWithTone>\n )}\n </Stack>\n )\n })}\n </Stack>\n\n <Flex>\n <Button\n disabled={!canAddCondition}\n icon={AddIcon}\n mode=\"ghost\"\n onClick={handleAddCondition}\n text={t('dialog.create.action.add-condition')}\n tooltipProps={\n canAddCondition\n ? null\n : {content: t('dialog.create.action.add-condition.disabled-hint')}\n }\n type=\"button\"\n />\n </Flex>\n </Stack>\n </Stack>\n )\n}\n","import {at, set} from '@sanity/mutate'\nimport {applyPatches} from '@sanity/mutate/_unstable_apply'\nimport {Box, Card, Flex, useToast} from '@sanity/ui'\nimport {type FormEvent, useCallback, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {Dialog} from '../../../../ui-components/dialog/Dialog'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type EditableSystemVariant} from '../../types'\nimport {getIsVariantInvalid} from '../../util/getIsVariantInvalid'\nimport {VariantForm, type VariantFormChangeHandler} from './VariantForm'\n\ninterface VariantDialogProps {\n confirmDataTestId: string\n confirmText: string\n errorTitle: string\n header: string\n id: string\n initialValue: EditableSystemVariant\n onCancel: () => void\n onSubmit: (variant: EditableSystemVariant) => Promise<void>\n renderCancelButton?: boolean\n}\n\nexport function VariantDialog(props: VariantDialogProps): React.JSX.Element {\n const {\n confirmDataTestId,\n confirmText,\n errorTitle,\n header,\n id,\n initialValue,\n onCancel,\n onSubmit,\n renderCancelButton = false,\n } = props\n const toast = useToast()\n const {t} = useTranslation(variantsLocaleNamespace)\n const [variant, setVariant] = useState(initialValue)\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [showValidation, setShowValidation] = useState(false)\n const [conditionsInvalid, setConditionsInvalid] = useState(false)\n const [priorityInvalid, setPriorityInvalid] = useState(false)\n const invalid = getIsVariantInvalid(variant) || conditionsInvalid || priorityInvalid\n\n const handleVariantChange = useCallback<VariantFormChangeHandler>((path, nextValue) => {\n setVariant(\n (currentVariant) =>\n applyPatches([at(path, set(nextValue))], currentVariant) as EditableSystemVariant,\n )\n }, [])\n\n const handleSubmit = useCallback(\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n async (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n\n if (invalid) {\n setShowValidation(true)\n return\n }\n\n setIsSubmitting(true)\n\n try {\n await onSubmit(variant)\n setIsSubmitting(false)\n } catch (error) {\n setIsSubmitting(false)\n console.error(error)\n toast.push({\n closable: true,\n status: 'error',\n title: errorTitle,\n })\n }\n },\n [errorTitle, invalid, onSubmit, toast, variant],\n )\n\n return (\n <Dialog\n __unstable_autoFocus={false}\n header={header}\n id={id}\n onClickOutside={isSubmitting ? undefined : onCancel}\n onClose={isSubmitting ? undefined : onCancel}\n padding={false}\n width={1}\n >\n <Card borderTop padding={4}>\n <form onSubmit={handleSubmit}>\n <Box paddingBottom={4}>\n <VariantForm\n onChange={handleVariantChange}\n onConditionValidityChange={setConditionsInvalid}\n onPriorityValidityChange={setPriorityInvalid}\n showValidation={showValidation}\n value={variant}\n />\n </Box>\n <Flex gap={2} justify=\"flex-end\" paddingTop={5}>\n {renderCancelButton && (\n <Button\n disabled={isSubmitting}\n mode=\"ghost\"\n onClick={onCancel}\n text={t('dialog.edit.action.cancel')}\n type=\"button\"\n />\n )}\n <Button\n data-testid={confirmDataTestId}\n disabled={isSubmitting}\n loading={isSubmitting}\n size=\"large\"\n text={confirmText}\n type=\"submit\"\n />\n </Flex>\n </form>\n </Card>\n </Dialog>\n )\n}\n","import {useCallback, useMemo} from 'react'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useVariantOperations} from '../../store/useVariantOperations'\nimport {type EditableSystemVariant, type SystemVariant} from '../../types'\nimport {VariantDialog} from './VariantDialog'\n\ninterface EditVariantDialogProps {\n onCancel: () => void\n onSubmit: () => void\n variant: SystemVariant\n}\n\nfunction toEditableVariant(variant: SystemVariant): EditableSystemVariant {\n return {\n _id: variant._id,\n _type: variant._type,\n conditions: variant.conditions,\n priority: variant.priority,\n metadata: variant.metadata,\n }\n}\n\nexport function EditVariantDialog(props: EditVariantDialogProps): React.JSX.Element {\n const {onCancel, onSubmit, variant: initialVariant} = props\n const {t} = useTranslation(variantsLocaleNamespace)\n const {updateVariant} = useVariantOperations()\n const initialValue = useMemo(() => toEditableVariant(initialVariant), [initialVariant])\n\n const handleSubmit = useCallback(\n async (variant: EditableSystemVariant) => {\n await updateVariant(variant)\n onSubmit()\n },\n [onSubmit, updateVariant],\n )\n\n return (\n <VariantDialog\n confirmDataTestId=\"save-variant-button\"\n confirmText={t('dialog.edit.action.confirm')}\n errorTitle={t('dialog.edit.error.title')}\n header={t('dialog.edit.title')}\n id=\"edit-variant-dialog\"\n initialValue={initialValue}\n onCancel={onCancel}\n onSubmit={handleSubmit}\n renderCancelButton\n />\n )\n}\n","import {Text} from '@sanity/ui'\n\nimport {Dialog} from '../../../../ui-components/dialog/Dialog'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../../i18n'\n\ninterface DeleteVariantDialogProps {\n isDeleting: boolean\n onClose: () => void\n onConfirm: () => void\n variantTitle: string\n}\n\nexport function DeleteVariantDialog({\n isDeleting,\n onClose,\n onConfirm,\n variantTitle,\n}: DeleteVariantDialogProps): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n return (\n <Dialog\n data-testid=\"delete-variant-dialog\"\n footer={{\n cancelButton: {\n disabled: isDeleting,\n },\n confirmButton: {\n disabled: isDeleting,\n loading: isDeleting,\n onClick: onConfirm,\n text: t('dialog.delete.action.confirm'),\n tone: 'critical',\n },\n }}\n header={t('dialog.delete.title')}\n id=\"delete-variant-dialog\"\n onClose={isDeleting ? undefined : onClose}\n >\n <Text muted size={1}>\n {t('dialog.delete.description', {title: variantTitle})}\n </Text>\n </Dialog>\n )\n}\n","import {useToast} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\n\nimport {useTranslation} from '../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../i18n'\nimport {useVariantOperations} from '../store/useVariantOperations'\n\ninterface UseVariantDeleteActionOptions {\n documentCount?: number | null\n documentsLoading?: boolean\n onDeleted?: () => void\n variantTitle?: string\n}\n\n/**\n * Shared delete action state for variant menu buttons.\n *\n * @internal\n */\nexport function useVariantDeleteAction(\n variantId: string,\n options?: UseVariantDeleteActionOptions,\n): {\n deleteDisabled: boolean\n deleteDisabledTooltip: string | undefined\n handleCloseDeleteDialog: () => void\n handleConfirmDelete: () => Promise<void>\n handleDelete: () => void\n isDeleteDialogOpen: boolean\n isDeleting: boolean\n variantTitle: string\n} {\n const {documentCount, documentsLoading = false, onDeleted, variantTitle = ''} = options ?? {}\n const {t} = useTranslation(variantsLocaleNamespace)\n const toast = useToast()\n const {deleteVariant} = useVariantOperations()\n const [isDeleting, setIsDeleting] = useState(false)\n const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false)\n\n const hasDocuments = typeof documentCount === 'number' && documentCount > 0\n const countUnknown = documentsLoading || documentCount === undefined || documentCount === null\n\n const deleteDisabled = isDeleting || countUnknown || hasDocuments\n\n const deleteDisabledTooltip = useMemo(() => {\n if (!hasDocuments || typeof documentCount !== 'number') {\n return undefined\n }\n\n return t(\n documentCount === 1\n ? 'overview.action.delete-variant.disabled-hint_one'\n : 'overview.action.delete-variant.disabled-hint_other',\n {count: documentCount},\n )\n }, [documentCount, hasDocuments, t])\n\n const handleDelete = useCallback(() => {\n if (countUnknown || hasDocuments) {\n return\n }\n\n setIsDeleteDialogOpen(true)\n }, [countUnknown, hasDocuments])\n\n const handleCloseDeleteDialog = useCallback(() => {\n if (isDeleting) {\n return\n }\n\n setIsDeleteDialogOpen(false)\n }, [isDeleting])\n\n const handleConfirmDelete = useCallback(async () => {\n if (countUnknown || hasDocuments) {\n return\n }\n\n setIsDeleting(true)\n\n try {\n await deleteVariant(variantId)\n setIsDeleting(false)\n setIsDeleteDialogOpen(false)\n onDeleted?.()\n } catch (error) {\n console.error(error)\n toast.push({\n closable: true,\n status: 'error',\n title: t('overview.action.delete-variant.error.title'),\n })\n setIsDeleting(false)\n }\n }, [countUnknown, deleteVariant, hasDocuments, onDeleted, t, toast, variantId])\n\n return {\n deleteDisabled,\n deleteDisabledTooltip,\n handleCloseDeleteDialog,\n handleConfirmDelete,\n handleDelete,\n isDeleteDialogOpen,\n isDeleting,\n variantTitle,\n }\n}\n","import {EllipsisHorizontalIcon} from '@sanity/icons/EllipsisHorizontal'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {Menu} from '@sanity/ui'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {MenuItem} from '../../../../ui-components/menuItem/MenuItem'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {DeleteVariantDialog} from '../../components/dialog/DeleteVariantDialog'\nimport {useVariantDeleteAction} from '../../hooks/useVariantDeleteAction'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {getVariantTitle} from '../util'\n\n/**\n * The variant detail overflow (`⋯`) menu — the `menu` slot of the shared {@link DetailActionRail}.\n *\n * Delete lives here (critical) rather than as its own top-level button, so the variant detail's\n * action rail matches the Releases rail's shape (primary + `⋯`). Delete is disabled while the\n * variant still contains documents (with an explanatory hint), reusing {@link useVariantDeleteAction}\n * for the confirm flow. Future variant-level actions (duplicate, add-to-release) land here too.\n *\n * @internal\n */\nexport function VariantMenuButton({\n documentCount,\n documentsLoading = false,\n variant,\n}: {\n documentCount: number\n documentsLoading?: boolean\n variant: SystemVariant\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const router = useRouter()\n const variantTitle = getVariantTitle(variant)\n const {\n deleteDisabled,\n deleteDisabledTooltip,\n handleCloseDeleteDialog,\n handleConfirmDelete,\n handleDelete,\n isDeleteDialogOpen,\n isDeleting,\n variantTitle: dialogVariantTitle,\n } = useVariantDeleteAction(variant._id, {\n documentCount,\n documentsLoading,\n onDeleted: () => router.navigate({}),\n variantTitle,\n })\n\n return (\n <>\n <MenuButton\n id=\"variant-detail-menu\"\n button={\n <Button\n aria-label={t('detail.menu.label')}\n icon={EllipsisHorizontalIcon}\n mode=\"bleed\"\n tooltipProps={{content: t('detail.menu.label')}}\n data-testid=\"variant-detail-menu-button\"\n />\n }\n menu={\n <Menu>\n <MenuItem\n data-testid=\"delete-variant-menu-item\"\n disabled={deleteDisabled || isDeleting}\n icon={TrashIcon}\n onClick={handleDelete}\n text={t('overview.action.delete-variant')}\n tone=\"critical\"\n tooltipProps={deleteDisabledTooltip ? {content: deleteDisabledTooltip} : undefined}\n />\n </Menu>\n }\n popover={{placement: 'bottom-end', portal: true}}\n />\n {isDeleteDialogOpen && (\n <DeleteVariantDialog\n isDeleting={isDeleting}\n onClose={handleCloseDeleteDialog}\n onConfirm={handleConfirmDelete}\n variantTitle={dialogVariantTitle}\n />\n )}\n </>\n )\n}\n","import {EditIcon} from '@sanity/icons/Edit'\nimport {useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {DetailActionRail} from '../../../components/detailLayout'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {EditVariantDialog} from '../../components/dialog/EditVariantDialog'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {VariantMenuButton} from './VariantMenuButton'\n\n/**\n * The variant detail top-right action rail — the `DetailActionRail` shared with Releases.\n *\n * `Edit definition` is the prominent primary (a defined, always-visible affordance, not an inline\n * hover pencil), opening the existing {@link EditVariantDialog} which edits name + description +\n * conditions. Delete lives in the overflow `⋯` menu ({@link VariantMenuButton}), critical-toned.\n *\n * @internal\n */\nexport function VariantActionRail({\n documentCount,\n documentsLoading,\n variant,\n}: {\n documentCount: number\n documentsLoading: boolean\n variant: SystemVariant\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const [editDialogOpen, setEditDialogOpen] = useState(false)\n\n return (\n <>\n <DetailActionRail\n primary={\n <Button\n data-testid=\"edit-variant-button\"\n icon={EditIcon}\n mode=\"default\"\n onClick={() => setEditDialogOpen(true)}\n text={t('detail.action.edit-definition')}\n />\n }\n menu={\n <VariantMenuButton\n documentCount={documentCount}\n documentsLoading={documentsLoading}\n variant={variant}\n />\n }\n />\n {editDialogOpen && (\n <EditVariantDialog\n onCancel={() => setEditDialogOpen(false)}\n onSubmit={() => setEditDialogOpen(false)}\n variant={variant}\n />\n )}\n </>\n )\n}\n","import {CalendarIcon} from '@sanity/icons/Calendar'\nimport {CaseIcon} from '@sanity/icons/Case'\nimport {DesktopIcon} from '@sanity/icons/Desktop'\nimport {EarthAmericasIcon} from '@sanity/icons/EarthAmericas'\nimport {EarthGlobeIcon} from '@sanity/icons/EarthGlobe'\nimport {FilterIcon} from '@sanity/icons/Filter'\nimport {MobileDeviceIcon} from '@sanity/icons/MobileDevice'\nimport {PackageIcon} from '@sanity/icons/Package'\nimport {RocketIcon} from '@sanity/icons/Rocket'\nimport {SplitVerticalIcon} from '@sanity/icons/SplitVertical'\nimport {StarIcon} from '@sanity/icons/Star'\nimport {TagIcon} from '@sanity/icons/Tag'\nimport {TargetIcon} from '@sanity/icons/Target'\nimport {TranslateIcon} from '@sanity/icons/Translate'\nimport {UserIcon} from '@sanity/icons/User'\nimport {UsersIcon} from '@sanity/icons/Users'\nimport {type ComponentType} from 'react'\n\n/**\n * Icon per common variant targeting *dimension* (the key of a condition — \"audience\", \"location\",\n * \"market\", …). A variant's conditions are the dimensions along which content is personalized, so\n * giving each a recognizable glyph turns a flat key/value list into a scannable, purposeful panel\n * and lets a definition with several dimensions still read clearly.\n *\n * Keys are matched case-insensitively against the normalized (lowercased, singularized) condition\n * key. Unknown dimensions fall back to a neutral \"filter\" glyph — every condition is, structurally,\n * a filter on the audience.\n *\n * @internal\n */\nconst DIMENSION_ICONS: Record<string, ComponentType> = {\n audience: UsersIcon,\n segment: TargetIcon,\n cohort: TargetIcon,\n role: UserIcon,\n location: EarthGlobeIcon,\n region: EarthAmericasIcon,\n country: EarthGlobeIcon,\n market: EarthGlobeIcon,\n geo: EarthGlobeIcon,\n locale: TranslateIcon,\n language: TranslateIcon,\n lang: TranslateIcon,\n device: MobileDeviceIcon,\n platform: DesktopIcon,\n environment: DesktopIcon,\n env: DesktopIcon,\n os: DesktopIcon,\n brand: TagIcon,\n campaign: RocketIcon,\n plan: StarIcon,\n tier: StarIcon,\n subscription: StarIcon,\n industry: CaseIcon,\n vertical: CaseIcon,\n category: PackageIcon,\n product: PackageIcon,\n channel: SplitVerticalIcon,\n source: SplitVerticalIcon,\n date: CalendarIcon,\n season: CalendarIcon,\n}\n\n/**\n * Resolves the glyph for a condition dimension key. Normalizes case and a trailing plural \"s\" so\n * \"Audiences\" and \"audience\" map alike; unknown keys get the neutral fallback.\n *\n * @internal\n */\nexport function getVariantConditionIcon(key: string): ComponentType {\n const normalized = key.trim().toLowerCase()\n\n return DIMENSION_ICONS[normalized] ?? DIMENSION_ICONS[normalized.replace(/s$/, '')] ?? FilterIcon\n}\n","import {type ReleaseDocument} from '@sanity/client'\n\nimport {getReleaseDocumentIdFromReleaseId} from '../../../releases/util/getReleaseDocumentIdFromReleaseId'\nimport {isPublishedBundleId, isReleaseBundle} from '../util'\nimport {type DocumentInVariantGroup, type VariantDocumentVersion} from './types'\n\n/**\n * The kind of bundle a variant-scoped document version lives in. Drives the label\n * and tone the release lane / bundle chips render with.\n *\n * @internal\n */\nexport type ReleaseLaneKind = 'published' | 'drafts' | 'release'\n\n/**\n * Stable filter key for the \"all documents\" (unfiltered) lane segment.\n *\n * @internal\n */\nexport const RELEASE_LANE_ALL = 'all'\n\n/**\n * A resolved bundle descriptor for a single version: a stable id used both as the lane\n * filter key and the chip key, the kind, and the release document when applicable.\n *\n * @internal\n */\nexport interface ResolvedVersionBundle {\n id: string\n kind: ReleaseLaneKind\n release?: ReleaseDocument\n}\n\n/**\n * Resolves a single variant document version to its bundle descriptor.\n *\n * Shared by the release lane (to tally and filter) and the per-row bundle chips\n * (to render), so both agree on what bundle a version belongs to.\n *\n * @internal\n */\nexport function resolveVersionBundle(\n version: VariantDocumentVersion,\n releasesById: Map<string, ReleaseDocument>,\n): ResolvedVersionBundle {\n if (isPublishedBundleId(version.bundleId)) {\n return {id: 'published', kind: 'published'}\n }\n\n if (version.bundleId === 'drafts') {\n return {id: 'drafts', kind: 'drafts'}\n }\n\n if (version.releaseRef) {\n const release = releasesById.get(version.releaseRef)\n return {id: release?._id ?? version.releaseRef, kind: 'release', release}\n }\n\n if (isReleaseBundle(version.bundleId)) {\n const releaseDocumentId = getReleaseDocumentIdFromReleaseId(version.bundleId!)\n const release = releasesById.get(releaseDocumentId)\n return {id: release?._id ?? releaseDocumentId, kind: 'release', release}\n }\n\n // Every constructed version sets either a valid bundleId or a releaseRef, so this is\n // unreachable in practice; kept only to keep the function total over its declared input type.\n return {id: 'unresolved-release', kind: 'release'}\n}\n\n/**\n * The distinct bundle ids a document group participates in (deduped across its versions),\n * so a group counts at most once per lane segment.\n *\n * @internal\n */\nfunction getRowBundleIds(\n row: DocumentInVariantGroup,\n releasesById: Map<string, ReleaseDocument>,\n): Set<string> {\n const ids = new Set<string>()\n for (const version of row.versions) {\n ids.add(resolveVersionBundle(version, releasesById).id)\n }\n return ids\n}\n\n/**\n * A single release-lane segment: a bundle this variant's documents participate in,\n * with the number of document groups riding on it.\n *\n * @internal\n */\nexport interface ReleaseLaneSegment {\n id: string\n kind: ReleaseLaneKind\n release?: ReleaseDocument\n count: number\n}\n\nfunction getKindOrder(kind: ReleaseLaneKind): number {\n if (kind === 'published') return 0\n if (kind === 'drafts') return 1\n return 2\n}\n\nfunction bundleSortLabel(bundle: ResolvedVersionBundle): string {\n return bundle.release?.metadata?.title ?? bundle.id\n}\n\n/**\n * Sort order shared by the release lane, row sort key, primary bundle badge, and bundle chips.\n * Module-private — consumed by getSortedRowBundles / computeReleaseLaneSegments below.\n */\nfunction compareResolvedBundles(left: ResolvedVersionBundle, right: ResolvedVersionBundle): number {\n const kindDelta = getKindOrder(left.kind) - getKindOrder(right.kind)\n if (kindDelta !== 0) {\n return kindDelta\n }\n\n return bundleSortLabel(left).localeCompare(bundleSortLabel(right))\n}\n\n/**\n * Distinct bundles a document group appears in, ordered published → drafts → releases (by title).\n *\n * @internal\n */\nexport function getSortedRowBundles(\n versions: VariantDocumentVersion[],\n releasesById: Map<string, ReleaseDocument>,\n): ResolvedVersionBundle[] {\n const seen = new Map<string, ResolvedVersionBundle>()\n for (const version of versions) {\n const resolved = resolveVersionBundle(version, releasesById)\n if (!seen.has(resolved.id)) {\n seen.set(resolved.id, resolved)\n }\n }\n return Array.from(seen.values()).toSorted(compareResolvedBundles)\n}\n\n/**\n * Computes the release lane for a variant detail table: one segment per bundle the\n * documents participate in, ordered published → drafts → releases (by title), each\n * carrying the number of document groups in it.\n *\n * @internal\n */\nexport function computeReleaseLaneSegments(\n rows: DocumentInVariantGroup[],\n releasesById: Map<string, ReleaseDocument>,\n): ReleaseLaneSegment[] {\n const segments = new Map<string, ReleaseLaneSegment>()\n\n for (const row of rows) {\n for (const version of row.versions) {\n const resolved = resolveVersionBundle(version, releasesById)\n const existing = segments.get(resolved.id)\n if (existing) {\n continue\n }\n segments.set(resolved.id, {...resolved, count: 0})\n }\n }\n\n // Count each document group once per bundle it appears in.\n for (const row of rows) {\n for (const bundleId of getRowBundleIds(row, releasesById)) {\n const segment = segments.get(bundleId)\n if (segment) {\n segment.count += 1\n }\n }\n }\n\n return Array.from(segments.values()).toSorted(compareResolvedBundles)\n}\n\n/**\n * Whether a document group has any version in the given lane segment.\n *\n * @internal\n */\nexport function rowMatchesLane(\n row: DocumentInVariantGroup,\n laneId: string,\n releasesById: Map<string, ReleaseDocument>,\n): boolean {\n if (laneId === RELEASE_LANE_ALL) {\n return true\n }\n return getRowBundleIds(row, releasesById).has(laneId)\n}\n\n/**\n * A stable sort key for the \"Appears in\" column: orders rows by the most prominent bundle they\n * appear in (published → drafts → releases), then by release title, so sorting the column groups\n * documents by bundle the same way the release lane orders its segments.\n *\n * @internal\n */\nexport function getRowBundleSortKey(\n row: DocumentInVariantGroup,\n releasesById: Map<string, ReleaseDocument>,\n): string {\n const primary = getSortedRowBundles(row.versions, releasesById)[0]\n if (!primary) {\n return ''\n }\n\n return `${getKindOrder(primary.kind)}:${bundleSortLabel(primary)}`\n}\n\n/**\n * The most prominent bundle a document group appears in (published → drafts → releases by title),\n * used to badge the document preview with the shared perspective-bar iconography.\n *\n * @internal\n */\nexport function getPrimaryBundle(\n row: DocumentInVariantGroup,\n releasesById: Map<string, ReleaseDocument>,\n): ResolvedVersionBundle | undefined {\n return getSortedRowBundles(row.versions, releasesById)[0]\n}\n","// eslint-disable-next-line @sanity/i18n/no-i18next-import -- types-only import\nimport {type TFunction} from 'i18next'\nimport {memo} from 'react'\n\nimport {type DocumentInVariantGroup} from '../types'\n\n/**\n * Per-row actions for a single document in a variant, opened from a trailing ⋯ button — the same\n * operations the bulk-selection toolbar would offer, so a row doesn't have to be selected first.\n * Mirrors the releases document table's per-row menu so the two read as one family.\n *\n * Renders nothing until the variant document actions are wired up (FH-113) — a menu of\n * permanently-disabled items has no affordance over no menu at all, so this is a no-op rather\n * than a stub UI. Wiring FH-113 restores the menu here (see git history for the prior\n * publish/add-to-release/unpublish/delete disabled menu) and in the bulk toolbar together.\n *\n * @internal\n */\nexport const VariantDocumentActions = memo(function VariantDocumentActions(_props: {\n row: DocumentInVariantGroup\n t: TFunction<'variants'>\n}) {\n return null\n})\n","import {type SanityDocument} from '@sanity/client'\n\nexport function getDocumentPreviewTitle(document: SanityDocument): string {\n const title = document.title || document.name\n\n return typeof title === 'string' && title.trim() ? title : document._id\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {Badge, Box, Flex, Stack, Text} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {IntentLink} from 'sanity/router'\n\nimport {Tooltip} from '../../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {ReleaseAvatarIcon} from '../../../../releases/components/ReleaseAvatar'\nimport {ReleaseTitle} from '../../../../releases/components/ReleaseTitle'\nimport {RELEASES_INTENT} from '../../../../releases/plugin'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {variantsLocaleNamespace} from '../../../i18n'\nimport {getSortedRowBundles, type ReleaseLaneKind} from '../releaseLane'\nimport {type VariantDocumentVersion} from '../types'\n\n// Only one chip fits comfortably in the fixed-width cell; the rest collapse into a \"+N\" badge\n// whose hover tooltip lists them, so the row never crops or scrolls horizontally.\nconst MAX_VISIBLE_CHIPS = 1\n\ninterface ResolvedChip {\n key: string\n kind: ReleaseLaneKind\n release?: ReleaseDocument\n}\n\nfunction useChipLabel() {\n const {t} = useTranslation()\n\n return (chip: ResolvedChip): string => {\n if (chip.kind === 'published') return t('release.chip.published')\n if (chip.kind === 'drafts') return t('release.chip.draft')\n return chip.release?.metadata?.title ?? t('release.placeholder-untitled-release')\n }\n}\n\nfunction getChipTone(kind: ReleaseLaneKind): 'positive' | 'primary' | 'default' {\n if (kind === 'published') return 'positive'\n if (kind === 'release') return 'primary'\n return 'default'\n}\n\n// The shared perspective-bar iconography (dot / bolt / clock, tone-coloured). Used only in the\n// overflow list — the visible chips lean on their badge tone, and the document preview already\n// carries this icon per row, so repeating it on the chip would be redundant.\nfunction ChipIcon({chip}: {chip: ResolvedChip}) {\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n if (chip.kind === 'published') return <ReleaseAvatarIcon tone=\"positive\" />\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n if (chip.kind === 'drafts') return <ReleaseAvatarIcon tone=\"caution\" />\n if (chip.release) return <ReleaseAvatarIcon release={chip.release} />\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n return <ReleaseAvatarIcon tone=\"default\" />\n}\n\nfunction ReleaseBundleChip({release}: {release: ReleaseDocument}) {\n const {t} = useTranslation()\n const releaseId = getReleaseIdFromReleaseDocumentId(release._id)\n\n return (\n <ReleaseTitle\n title={release.metadata?.title}\n fallback={t('release.placeholder-untitled-release')}\n >\n {({displayTitle}) => (\n <IntentLink intent={RELEASES_INTENT} params={{id: releaseId}}>\n {/* Constrain to a single line so a long release name truncates with an ellipsis instead\n of wrapping into a tall, heavy two-line filled badge that dominates the row. */}\n <Badge\n radius={2}\n style={{\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n title={displayTitle}\n tone=\"primary\"\n >\n {displayTitle}\n </Badge>\n </IntentLink>\n )}\n </ReleaseTitle>\n )\n}\n\nfunction VisibleChip({chip, label}: {chip: ResolvedChip; label: string}) {\n if (chip.kind === 'release' && chip.release) {\n return <ReleaseBundleChip release={chip.release} />\n }\n return (\n <Badge radius={2} tone={getChipTone(chip.kind)}>\n {label}\n </Badge>\n )\n}\n\nexport function VariantDocumentBundleChips({\n versions,\n releasesById,\n}: {\n versions: VariantDocumentVersion[]\n releasesById: Map<string, ReleaseDocument>\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const getLabel = useChipLabel()\n\n // Dedupe by bundle and order like the release lane / preview primary badge so the visible\n // chip always matches the leading icon when a document appears in multiple releases.\n const chips = useMemo<ResolvedChip[]>(() => {\n return getSortedRowBundles(versions, releasesById).map((resolved) => ({\n key: resolved.id,\n kind: resolved.kind,\n release: resolved.release,\n }))\n }, [versions, releasesById])\n\n const visible = chips.slice(0, MAX_VISIBLE_CHIPS)\n const overflow = chips.slice(MAX_VISIBLE_CHIPS)\n\n return (\n <Flex align=\"center\" gap={2} style={{minWidth: 0, overflow: 'hidden'}} wrap=\"nowrap\">\n {visible.map((chip) => (\n <Box key={chip.key} style={{minWidth: 0, overflow: 'hidden'}}>\n <VisibleChip chip={chip} label={getLabel(chip)} />\n </Box>\n ))}\n {overflow.length > 0 && (\n <Tooltip\n content={\n <Stack gap={3} padding={1}>\n <Text muted size={0} weight=\"medium\">\n {t('detail.documents.appears-in.also-in')}\n </Text>\n <Stack gap={2}>\n {overflow.map((chip) => (\n <Flex align=\"center\" gap={2} key={chip.key}>\n <Text size={0}>\n <ChipIcon chip={chip} />\n </Text>\n <Text size={1}>{getLabel(chip)}</Text>\n </Flex>\n ))}\n </Stack>\n </Stack>\n }\n placement=\"bottom-start\"\n portal\n >\n <Badge data-testid=\"variant-bundle-chips-overflow\" radius={2} tone=\"default\">\n {`+${overflow.length}`}\n </Badge>\n </Tooltip>\n )}\n </Flex>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\nimport {useMemo, type RefAttributes} from 'react'\nimport {IntentLink} from 'sanity/router'\n\nimport {type PreviewLayoutKey} from '../../../../components/previews/types'\nimport {DocumentPreviewPresence} from '../../../../presence/DocumentPreviewPresence'\nimport {SanityDefaultPreview} from '../../../../preview/components/SanityDefaultPreview'\nimport {ReleaseAvatarIcon} from '../../../../releases/components/ReleaseAvatar'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {useDocumentPresence} from '../../../../store/presence/useDocumentPresence'\nimport {useDocumentPreviewValues} from '../../../../tasks/hooks/useDocumentPreviewValues'\nimport {getPublishedId} from '../../../../util/draftUtils'\nimport {isPublishedBundleId} from '../../util'\nimport {getPrimaryBundle} from '../releaseLane'\nimport {type DocumentInVariantGroup} from '../types'\n\ninterface VariantDocumentPreviewProps {\n row: DocumentInVariantGroup\n releasesById: Map<string, ReleaseDocument>\n layout?: PreviewLayoutKey\n variantId?: string\n}\n\n// Leading badge that reuses the shared perspective-bar iconography, so a document's primary\n// bundle is recognisable at a glance in the preview column too.\nfunction PrimaryBundleIcon({\n row,\n releasesById,\n}: {\n row: DocumentInVariantGroup\n releasesById: Map<string, ReleaseDocument>\n}) {\n const primary = getPrimaryBundle(row, releasesById)\n if (!primary) return null\n\n return (\n <Box flex=\"none\">\n <Text size={1}>\n {primary.kind === 'published' ? (\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n <ReleaseAvatarIcon tone=\"positive\" />\n ) : primary.kind === 'drafts' ? (\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n <ReleaseAvatarIcon tone=\"caution\" />\n ) : primary.release ? (\n <ReleaseAvatarIcon release={primary.release} />\n ) : (\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n <ReleaseAvatarIcon tone=\"default\" />\n )}\n </Text>\n </Box>\n )\n}\n\ninterface VariantDocumentPreviewLinkProps extends React.ComponentPropsWithoutRef<'a'> {\n publishedId: string\n documentType: string\n searchParams: Array<[string, string]> | undefined\n}\n\nfunction VariantDocumentPreviewLink({\n ref,\n publishedId,\n documentType,\n searchParams,\n ...linkProps\n}: VariantDocumentPreviewLinkProps & RefAttributes<HTMLAnchorElement>) {\n return (\n <IntentLink\n {...linkProps}\n intent=\"edit\"\n params={{\n id: publishedId,\n type: documentType,\n }}\n searchParams={searchParams}\n ref={ref}\n />\n )\n}\n\nfunction getVersionPerspectiveNavigation(\n bundleId: DocumentInVariantGroup['version']['bundleId'],\n variantId?: string,\n): {\n perspectiveStack: string[]\n searchParams: Array<[string, string]> | undefined\n} {\n const searchParams: Array<[string, string]> = variantId ? [['variant', variantId]] : []\n\n if (isPublishedBundleId(bundleId)) {\n return {\n perspectiveStack: ['published'],\n searchParams: [...searchParams, ['perspective', 'published']],\n }\n }\n\n if (bundleId === 'drafts') {\n return {\n perspectiveStack: ['drafts'],\n searchParams: searchParams.length > 0 ? searchParams : undefined,\n }\n }\n\n return {\n perspectiveStack: [bundleId ?? '', 'drafts'],\n searchParams: [...searchParams, ['perspective', bundleId ?? '']],\n }\n}\n\nexport function VariantDocumentPreview({\n row,\n releasesById,\n layout,\n variantId,\n}: VariantDocumentPreviewProps): React.JSX.Element {\n const publishedId = getPublishedId(row.groupId)\n const documentPresence = useDocumentPresence(row.document._id)\n // Navigate to the same bundle the leading badge shows — the row's primary bundle (published →\n // drafts → releases), which is also what the \"Appears in\" chip leads with — so the icon and the\n // open target never disagree. `row.version` is the most-recently-updated version, which can be a\n // different bundle from the primary; falling back to it only when the primary can't be resolved.\n const {perspectiveStack, searchParams} = useMemo(() => {\n const primary = getPrimaryBundle(row, releasesById)\n const navBundleId =\n primary?.kind === 'published'\n ? undefined\n : primary?.kind === 'drafts'\n ? 'drafts'\n : primary?.release\n ? getReleaseIdFromReleaseDocumentId(primary.release._id)\n : row.version.bundleId\n return getVersionPerspectiveNavigation(navBundleId, variantId)\n }, [row, releasesById, variantId])\n\n const previewPresence = useMemo(\n () => documentPresence?.length > 0 && <DocumentPreviewPresence presence={documentPresence} />,\n [documentPresence],\n )\n\n const {isLoading: previewLoading, value: resolvedPreview} = useDocumentPreviewValues({\n documentId: row.document._id,\n documentType: row.document._type,\n perspectiveStack,\n // The table lists documents of the variant being viewed, so previews resolve in that variant\n // rather than whichever variant is selected globally\n variant: variantId,\n })\n\n return (\n <Flex align=\"center\" gap={2}>\n <PrimaryBundleIcon releasesById={releasesById} row={row} />\n <Card\n tone=\"inherit\"\n as={VariantDocumentPreviewLink}\n publishedId={publishedId}\n documentType={row.document._type}\n searchParams={searchParams}\n radius={2}\n data-as=\"a\"\n flex={1}\n style={{minWidth: 0}}\n >\n <SanityDefaultPreview\n {...(resolvedPreview || {})}\n status={previewPresence}\n isPlaceholder={previewLoading}\n layout={layout}\n />\n </Card>\n </Flex>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {ClockIcon} from '@sanity/icons/Clock'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Flex, Text} from '@sanity/ui'\n// eslint-disable-next-line @sanity/i18n/no-i18next-import -- figure out how to have the linter be fine with importing types-only\nimport {type TFunction} from 'i18next'\nimport {memo} from 'react'\n\nimport {ToneIcon} from '../../../../../ui-components/toneIcon/ToneIcon'\nimport {Tooltip} from '../../../../../ui-components/tooltip/Tooltip'\nimport {EditedByCell} from '../../../../components/documentTable/EditedByCell'\nimport {RelativeTime} from '../../../../components/RelativeTime'\nimport {useSchema} from '../../../../hooks/useSchema'\nimport {SanityDefaultPreview} from '../../../../preview/components/SanityDefaultPreview'\nimport {Headers} from '../../../../releases/tool/components/Table/TableHeader'\nimport {type Column} from '../../../../releases/tool/components/Table/types'\nimport {getRowBundleSortKey} from '../releaseLane'\nimport {type DocumentInVariantGroup} from '../types'\nimport {getDocumentPreviewTitle} from './getDocumentPreviewTitle'\nimport {VariantDocumentBundleChips} from './VariantDocumentBundleChips'\nimport {VariantDocumentPreview} from './VariantDocumentPreview'\n\n// `memoKey` only identifies the row's representative document snapshot — it doesn't change when a\n// *sibling* version is added to or removed from `row.versions`, even though that's exactly what the\n// preview's primary-bundle badge and its navigation target (both derived from `row.versions` via\n// `getPrimaryBundle`) depend on. Without this fingerprint the comparator reports \"unchanged\" and the\n// badge/nav target go stale while the unmemoized \"Appears in\" chips (rendered outside this memo)\n// update correctly — the disagreement the surrounding code comments are meant to prevent.\nconst versionsFingerprint = (row: DocumentInVariantGroup): string =>\n row.versions.map((v) => `${v.documentId}:${v.bundleId ?? ''}:${v.releaseRef ?? ''}`).join('|')\n\nconst MemoVariantDocumentPreview = memo(\n function MemoVariantDocumentPreview({\n row,\n releasesById,\n variantId,\n }: {\n row: DocumentInVariantGroup\n releasesById: Map<string, ReleaseDocument>\n variantId?: string\n }) {\n return <VariantDocumentPreview releasesById={releasesById} row={row} variantId={variantId} />\n },\n (prev, next) =>\n prev.row.memoKey === next.row.memoKey &&\n prev.variantId === next.variantId &&\n prev.releasesById === next.releasesById &&\n versionsFingerprint(prev.row) === versionsFingerprint(next.row),\n)\n\nconst MemoDocumentType = memo(\n function DocumentType({type}: {type: string}) {\n const schema = useSchema()\n const schemaType = schema.get(type)\n\n return <Text size={1}>{schemaType?.title || type}</Text>\n },\n (prev, next) => prev.type === next.type,\n)\n\n// Per-row validation status, rendered in its own narrow column so every row answers the same\n// question in the same place — a scannable \"ready vs. not\" rail. A structural column beats an\n// inline error-only glyph: because it's always present, an empty-looking cell reads as \"checked,\n// fine\" (a muted check) rather than the ambiguous absence of an inline mark. Errors get the loud\n// critical glyph so they pop against the muted checks around them.\nfunction ValidationStatusIndicator({\n datum,\n t,\n}: {\n datum: DocumentInVariantGroup\n t: TFunction<'variants'>\n}) {\n if (datum.validation.hasError) {\n const validationErrorCount = datum.validation.validation.filter(\n (validation) => validation.level === 'error',\n ).length\n\n return (\n <Tooltip\n portal\n placement=\"bottom-end\"\n content={\n <Text muted size={1}>\n <Flex align=\"center\" gap={3} padding={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n {t(\n validationErrorCount === 1\n ? 'detail.documents.table.validation.error_one'\n : 'detail.documents.table.validation.error_other',\n {count: validationErrorCount},\n )}\n </Flex>\n </Text>\n }\n >\n <Text size={1} data-testid=\"variant-document-validation-error\">\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n </Text>\n </Tooltip>\n )\n }\n\n if (datum.validation.isValidating) {\n return (\n <Tooltip\n portal\n placement=\"bottom-end\"\n content={\n <Text muted size={1}>\n <Box padding={1}>{t('detail.documents.table.validation.validating')}</Box>\n </Text>\n }\n >\n <Text muted size={1} data-testid=\"variant-document-validation-validating\">\n <ToneIcon icon={ClockIcon} tone=\"default\" />\n </Text>\n </Tooltip>\n )\n }\n\n return (\n <Tooltip\n portal\n placement=\"bottom-end\"\n content={\n <Text muted size={1}>\n <Box padding={1}>{t('detail.documents.table.validation.valid')}</Box>\n </Text>\n }\n >\n <Text muted size={1} data-testid=\"variant-document-validation-valid\">\n <ToneIcon icon={CheckmarkCircleIcon} tone=\"positive\" />\n </Text>\n </Tooltip>\n )\n}\n\n// The leading select column (select-all header + row checkboxes) is injected by the shared\n// DocumentTable, so it is not defined here.\nexport const getVariantDocumentTableColumnDefs = (\n t: TFunction<'variants'>,\n variantId: string | undefined,\n releasesById: Map<string, ReleaseDocument>,\n): Column<DocumentInVariantGroup>[] => [\n {\n id: 'documentGroup',\n hidden: true,\n width: null,\n sorting: true,\n sortTransform: (row) => row.rowKey ?? row.groupId,\n },\n {\n id: 'bundle',\n // Wider than the old 140 so typical release names (\"Compliance Dashboard\") render in full;\n // only genuine outliers truncate. The extra room is reclaimed from the Type column below,\n // which only ever holds short schema titles.\n width: 190,\n style: {minWidth: 120, maxWidth: 190},\n sorting: true,\n sortTransform: (row) => getRowBundleSortKey(row, releasesById),\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton\n paddingLeft={2}\n text={t('detail.documents.table.appears-in')}\n {...props}\n />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex\n align=\"center\"\n {...cellProps}\n style={{...cellProps.style, flex: '0 1 auto', minWidth: 0, overflow: 'hidden'}}\n >\n <Box style={{minWidth: 0, overflow: 'hidden'}} paddingX={2}>\n {!datum.isLoading && (\n <VariantDocumentBundleChips versions={datum.versions} releasesById={releasesById} />\n )}\n </Box>\n </Flex>\n ),\n },\n {\n id: 'document._type',\n // Trimmed from 160 → 130: schema titles are short, so the freed width goes to \"Appears in\".\n width: 130,\n style: {minWidth: 110, maxWidth: 130},\n sorting: true,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton\n paddingLeft={2}\n text={t('detail.documents.table.type')}\n {...props}\n />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex align=\"center\" {...cellProps}>\n <Box paddingX={2}>\n {!datum.isLoading && <MemoDocumentType type={datum.document._type} />}\n </Box>\n </Flex>\n ),\n },\n {\n // The document preview / title column. Search moved out of this header into the command lane;\n // the header is a plain sortable \"Document\" label. flex={1} in BOTH header and body (the body\n // cell below is also flex={1}) so this column grows to fill the row — pushing \"Edited\" to the\n // right edge with no trailing dead space — and keeps the same width whether the table has rows\n // or not. (A content-sized column collapses to its label width when empty and diverges between\n // the independent header and body flexboxes.)\n id: 'search',\n width: null,\n style: {minWidth: 240},\n sorting: true,\n sortTransform: ({document}) => getDocumentPreviewTitle(document).toLowerCase(),\n header: (props) => (\n <Flex {...props.headerProps} flex={1} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton\n paddingLeft={2}\n text={t('detail.documents.table.document')}\n {...props}\n />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex\n {...cellProps}\n align=\"center\"\n flex={1}\n gap={2}\n padding={1}\n paddingRight={2}\n sizing=\"border\"\n >\n <Box flex={1} style={{minWidth: 0}}>\n {datum.isLoading ? (\n <SanityDefaultPreview isPlaceholder />\n ) : (\n <MemoVariantDocumentPreview\n releasesById={releasesById}\n row={datum}\n variantId={variantId}\n />\n )}\n </Box>\n </Flex>\n ),\n },\n {\n // \"Last edited\" (relative time) comes BEFORE \"Edited by\" so this text column sits between the\n // document preview's live-presence avatar and the edited-by avatar — otherwise the two round\n // avatars would neighbour across the column boundary and read as one crowded cluster. Also reads\n // naturally: \"last edited 6 days ago, by …\".\n id: 'document._updatedAt',\n sorting: true,\n width: 130,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton\n paddingLeft={2}\n text={t('detail.documents.table.last-edited')}\n {...props}\n />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex\n {...cellProps}\n align=\"center\"\n paddingX={2}\n paddingY={3}\n style={{minWidth: 130}}\n sizing=\"border\"\n >\n {!datum.isLoading && datum.document._updatedAt && (\n <Text muted size={1}>\n <RelativeTime time={datum.document._updatedAt} useTemporalPhrase minimal />\n </Text>\n )}\n </Flex>\n ),\n },\n {\n // \"Edited by\" — the person who last edited the document. Its own named column (not just an\n // avatar tucked beside the time) so authorship reads distinctly from live presence, which stays\n // in the document preview. The name collapses to avatar-only when the column is squeezed.\n id: 'editedBy',\n sorting: false,\n width: 170,\n style: {minWidth: 44, maxWidth: 170},\n header: (props) => (\n <Flex {...props.headerProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Text muted size={1} textOverflow=\"ellipsis\" weight=\"medium\">\n {t('detail.documents.table.edited-by')}\n </Text>\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n {!datum.isLoading && (\n <EditedByCell documentId={datum.document._id} revision={datum.document._rev} />\n )}\n </Flex>\n ),\n },\n {\n // Validation status trails the row, grouped with the other status/meta columns (edited-by,\n // last-edited) and matching the releases table. A scannable \"ready vs. has errors\" cell —\n // sortable so a reader can pull error rows to the top. No header label: the glyphs speak for\n // themselves and a text header would overflow the 44px slot.\n id: 'validation',\n width: 44,\n style: {minWidth: 44, maxWidth: 44},\n sorting: true,\n sortTransform: (row) => (row.validation.hasError ? 0 : 1),\n header: (props) => <Flex {...props.headerProps} paddingY={3} sizing=\"border\" />,\n cell: ({cellProps, datum}) => (\n <Flex {...cellProps} align=\"center\" justify=\"center\" paddingY={3} sizing=\"border\">\n {!datum.isLoading && <ValidationStatusIndicator datum={datum} t={t} />}\n </Flex>\n ),\n },\n]\n","import {Flex, TabList} from '@sanity/ui'\n\nimport {Tab} from '../../../../ui-components/tab/Tab'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type ReleaseLaneKind, RELEASE_LANE_ALL, type ReleaseLaneSegment} from './releaseLane'\n\nfunction getSegmentTone(kind: ReleaseLaneKind): 'positive' | 'primary' | 'default' {\n if (kind === 'published') return 'positive'\n if (kind === 'release') return 'primary'\n return 'default'\n}\n\n/**\n * The release lane: a filter-tab strip summarizing which bundles this variant's documents\n * participate in, each tab filtering the documents table to that bundle. Mirrors the Releases\n * tool's ReleaseDocumentFilterTabs so the two document tables share one filter idiom.\n *\n * @internal\n */\nexport function VariantReleaseLane({\n segments,\n totalCount,\n activeLane,\n onSelectLane,\n}: {\n segments: ReleaseLaneSegment[]\n totalCount: number\n activeLane: string\n onSelectLane: (laneId: string) => void\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n // Bundle labels live in the core namespace (shared with the per-row bundle chips).\n const {t: tCore} = useTranslation()\n\n return (\n <Flex align=\"center\" wrap=\"nowrap\" data-testid=\"variant-release-lane\">\n {/* No leading icon/label: the tabs (All, Published, Drafts, release names) are self-evidently\n bundle filters. A filter icon here read as a clickable control that wasn't one. */}\n <TabList gap={1}>\n {[\n <Tab\n key=\"all\"\n aria-controls=\"variant-documents-table\"\n data-testid=\"variant-release-lane-segment-all\"\n id=\"variant-release-lane-segment-all\"\n label={t('detail.release-lane.count', {\n label: t('detail.release-lane.all'),\n count: totalCount,\n })}\n onClick={() => onSelectLane(RELEASE_LANE_ALL)}\n selected={activeLane === RELEASE_LANE_ALL}\n />,\n ...segments.map((segment) => {\n let label: string\n if (segment.kind === 'published') {\n label = tCore('release.chip.published')\n } else if (segment.kind === 'drafts') {\n label = tCore('release.chip.draft')\n } else {\n label =\n segment.release?.metadata?.title ?? tCore('release.placeholder-untitled-release')\n }\n\n const isSelected = activeLane === segment.id\n\n return (\n <Tab\n key={segment.id}\n aria-controls=\"variant-documents-table\"\n data-testid={`variant-release-lane-segment-${segment.id}`}\n id={`variant-release-lane-segment-${segment.id}`}\n label={t('detail.release-lane.count', {label, count: segment.count})}\n onClick={() => onSelectLane(segment.id)}\n selected={isSelected}\n tone={isSelected ? getSegmentTone(segment.kind) : 'default'}\n />\n )\n }),\n ]}\n </TabList>\n </Flex>\n )\n}\n","import {useCallback, useMemo, useState} from 'react'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useActiveReleases} from '../../../releases/store/useActiveReleases'\nimport {DocumentTable} from '../../../releases/tool/components/Table/DocumentTable'\nimport {type Column} from '../../../releases/tool/components/Table/types'\nimport {searchDocumentRelease} from '../../../releases/tool/detail/documentTable/searchDocumentRelease'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {computeReleaseLaneSegments, RELEASE_LANE_ALL, rowMatchesLane} from './releaseLane'\nimport {type DocumentInVariantGroup} from './types'\nimport {VariantDocumentActions} from './variantDocumentTable/VariantDocumentActions'\nimport {getVariantDocumentTableColumnDefs} from './variantDocumentTable/VariantDocumentTableColumnDefs'\nimport {VariantReleaseLane} from './VariantReleaseLane'\n\nfunction searchVariantDocument(row: DocumentInVariantGroup, searchTerm: string): boolean {\n return searchDocumentRelease(row.document, searchTerm)\n}\n\nexport function VariantDocumentsTable({\n rows,\n loading = false,\n variantId,\n}: {\n rows: DocumentInVariantGroup[]\n loading?: boolean\n variantId?: string\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const [activeLane, setActiveLane] = useState<string>(RELEASE_LANE_ALL)\n const {data: releases} = useActiveReleases()\n const releasesById = useMemo(\n () => new Map(releases.map((release) => [release._id, release])),\n [releases],\n )\n\n const segments = useMemo(\n () => computeReleaseLaneSegments(rows, releasesById),\n [rows, releasesById],\n )\n\n const activeLaneIsValid =\n activeLane === RELEASE_LANE_ALL || segments.some((segment) => segment.id === activeLane)\n\n // If the active release lane disappears (e.g. its documents move), fall back to \"All\" and\n // clear state so a later reappearance of that bundle does not resurrect the stale filter.\n if (!activeLaneIsValid) {\n setActiveLane(RELEASE_LANE_ALL)\n }\n\n const resolvedActiveLane = activeLaneIsValid ? activeLane : RELEASE_LANE_ALL\n\n // Filter tabs are the one way to scope by bundle (grouping was removed: filtering preserves\n // column sorting, which grouping cannot). A selected tab filters the flat, always-sortable list;\n // the shared DocumentTable applies free-text search on top of these lane-filtered rows.\n const laneRows = useMemo(() => {\n const filtered =\n resolvedActiveLane === RELEASE_LANE_ALL\n ? rows\n : rows.filter((row) => rowMatchesLane(row, resolvedActiveLane, releasesById))\n return filtered.map((row) => ({...row, rowKey: row.groupId}))\n }, [rows, resolvedActiveLane, releasesById])\n\n const handleSelectLane = useCallback((laneId: string) => {\n // Clicking the already-active segment clears the filter back to \"All\".\n setActiveLane((previous) => (previous === laneId ? RELEASE_LANE_ALL : laneId))\n }, [])\n\n const renderRowActions = useCallback(\n ({datum}: {datum: unknown}) => (\n <VariantDocumentActions row={datum as DocumentInVariantGroup} t={t} />\n ),\n [t],\n )\n\n const hasReleaseControls = !loading && rows.length > 0 && segments.length > 1\n\n const columnDefs = useMemo<Column<DocumentInVariantGroup>[]>(\n () => getVariantDocumentTableColumnDefs(t, variantId, releasesById),\n [t, variantId, releasesById],\n )\n\n return (\n <DocumentTable<DocumentInVariantGroup>\n // Keep the command lane (search + filter tabs) mounted during load so it doesn't pop in when\n // rows arrive — matching the release detail table and avoiding a layout jump.\n alwaysShowCommandLane\n columnDefs={columnDefs}\n defaultSort={{column: 'documentGroup', direction: 'asc'}}\n emptyState={t('detail.documents.no-documents')}\n filterTabs={\n hasReleaseControls ? (\n <VariantReleaseLane\n activeLane={resolvedActiveLane}\n onSelectLane={handleSelectLane}\n segments={segments}\n totalCount={rows.length}\n />\n ) : undefined\n }\n getRowKey={(row) => row.groupId}\n id=\"variant-documents-table\"\n loading={loading}\n rowActions={renderRowActions}\n rows={laneRows}\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n rowId=\"rowKey\"\n searchPlaceholder={t('detail.documents.table.search-placeholder')}\n searchPredicate={searchVariantDocument}\n searchTestId=\"variant-documents-search\"\n />\n )\n}\n","import {DocumentsIcon} from '@sanity/icons/Documents'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {SortIcon} from '@sanity/icons/Sort'\nimport {UserIcon} from '@sanity/icons/User'\nimport {Box, Card, Container, Flex, Skeleton, Stack, Text} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {\n DetailBackButton,\n DetailIdentity,\n DetailPropertiesPanel,\n type DetailPropertiesSection,\n} from '../../../components/detailLayout'\nimport {LoadingBlock} from '../../../components/loadingBlock/LoadingBlock'\nimport {RelativeTime} from '../../../components/RelativeTime'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useVariantDocuments} from '../../hooks/useVariantDocuments'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {\n decodeVariantIdFromRoute,\n getVariantDescription,\n getVariantId,\n getVariantTitle,\n} from '../util'\nimport {groupVariantDocumentsByGroup} from './groupVariantDocumentsByGroup'\nimport {VariantActionRail} from './VariantActionRail'\nimport {getVariantConditionIcon} from './variantConditionIcons'\nimport {VariantDocumentsTable} from './VariantDocumentsTable'\n\nexport function VariantDetail() {\n const router = useRouter()\n const {t} = useTranslation(variantsLocaleNamespace)\n const variantIdRaw =\n typeof router.state.variantId === 'string' ? router.state.variantId : undefined\n const variantId = decodeVariantIdFromRoute(variantIdRaw)\n const {byId, loading} = useAllVariants()\n\n const variant = variantId ? byId.get(variantId) : undefined\n const {\n loading: documentsLoading,\n results: variantDocuments,\n error: variantDocumentsError,\n } = useVariantDocuments(variant?._id)\n\n const tableRows = useMemo(\n () => groupVariantDocumentsByGroup(variantDocuments),\n [variantDocuments],\n )\n\n // \"Unpublished changes\" = document groups that carry a draft version. Counted separately from the\n // total (a group can hold both a published and a draft version), so the two numbers each answer a\n // distinct question — \"how many documents\" vs \"how many have pending changes\" — without implying\n // they partition the total.\n const unpublishedCount = useMemo(\n () =>\n tableRows.filter((row) => row.versions.some((version) => version.bundleId === 'drafts'))\n .length,\n [tableRows],\n )\n\n // Two short, side-by-side panels rather than one tall stacked one: one about the variant\n // definition itself (its targeting conditions + when it was created), one about the documents it\n // holds. Same bordered pattern, split along a semantic seam (\"what defines it\" vs \"what's in it\").\n const definitionSections = useMemo<DetailPropertiesSection[]>(() => {\n if (!variant) return []\n\n const conditionEntries = Object.entries(variant.conditions)\n const conditionRows =\n conditionEntries.length > 0\n ? conditionEntries.map(([key, value]) => {\n // Each targeting dimension gets a recognizable glyph (audience → people, location →\n // pin, …) so a multi-dimension definition reads at a glance.\n const DimensionIcon = getVariantConditionIcon(key)\n return {\n icon: (\n <Text muted size={1}>\n <DimensionIcon />\n </Text>\n ),\n label: key,\n value,\n }\n })\n : [\n {\n label: '',\n value: (\n <Text muted size={1}>\n {t('overview.table.no-conditions')}\n </Text>\n ),\n },\n ]\n\n return [\n {\n title: t('detail.metadata.definition'),\n // Split the conditions into two columns once a definition carries several, so a 5-6 dimension\n // definition reads as a compact block rather than a tall stack — keeping it closer to the\n // fixed-height Details panel beside it. Conditions only: \"Created\" is provenance, not a\n // targeting condition, so it lives in the Details panel with the other variant-level facts.\n multiColumn: true,\n rows: conditionRows,\n },\n ]\n }, [t, variant])\n\n const documentSections = useMemo<DetailPropertiesSection[]>(() => {\n // While documents are still streaming in, show a skeleton rather than \"0\" — a literal 0\n // mid-load reads as \"empty\" when the real count just hasn't arrived yet.\n const countValue = (count: number): React.ReactNode =>\n documentsLoading ? (\n <Skeleton animated radius={1} style={{width: 24, height: 11}} />\n ) : (\n String(count)\n )\n\n return [\n {\n // \"Details\" — variant-level facts: document counts plus when it was created. Titled\n // \"Details\" (not \"Documents\") because it now holds provenance too, so the count row is\n // labeled \"Total documents\" to stay unambiguous without the panel title carrying it.\n title: t('detail.metadata.details'),\n rows: [\n {\n icon: (\n <Text muted size={1}>\n <DocumentsIcon />\n </Text>\n ),\n label: t('detail.metadata.total-documents'),\n value: countValue(tableRows.length),\n },\n {\n icon: (\n <Text muted size={1}>\n <EditIcon />\n </Text>\n ),\n label: t('detail.metadata.unpublished-changes'),\n value: countValue(unpublishedCount),\n },\n variant && {\n // Resolution priority — the tiebreaker when several definitions match. Shown here (it is\n // authored in the create/edit dialog) so the detail page reflects the full definition.\n icon: (\n <Text muted size={1}>\n <SortIcon />\n </Text>\n ),\n label: t('detail.metadata.priority'),\n value: String(variant.priority),\n },\n variant && {\n // A person glyph (not a clock — a clock reads as \"time/schedule\"). The author identity\n // isn't on the variant document yet, so this shows the relative time for now; wiring the\n // creator's name/avatar is a follow-up.\n icon: (\n <Text muted size={1}>\n <UserIcon />\n </Text>\n ),\n label: t('detail.footer.created'),\n value: (\n <Text size={1}>\n <RelativeTime minimal time={variant._createdAt} useTemporalPhrase />\n </Text>\n ),\n },\n ],\n },\n ]\n }, [documentsLoading, t, tableRows.length, unpublishedCount, variant])\n\n if (loading) {\n return <LoadingBlock fill title={t('detail.loading')} />\n }\n\n if (!variant) {\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\">\n <Card borderBottom flex=\"none\" padding={3}>\n <DetailBackButton onClick={() => router.navigate({})} text={t('detail.back')} />\n </Card>\n <Box padding={4}>\n <Card border padding={4} radius={3}>\n <Stack gap={3}>\n <Text size={2} weight=\"semibold\">\n {t('detail.not-found.title')}\n </Text>\n <Text muted size={1}>\n {t('detail.not-found.description')}\n </Text>\n </Stack>\n </Card>\n </Box>\n </Flex>\n )\n }\n\n const description = getVariantDescription(variant)\n\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\" overflow=\"hidden\">\n {/* Header region — the shared detail spine: a top rail (back on the left, action rail on the\n right), then a two-zone body (identity on the left, a bordered properties panel on the\n right). Matches the Releases detail page so the two read as one family. No borderBottom:\n the command lane below already carries a divider, and the table's own row lines are enough —\n a header border here would double-line the filter tabs (and Releases has none). */}\n <Card flex=\"none\" paddingY={3}>\n {/* container[3] so the header aligns with the table's row content below (the shared Table\n centers rows at container[3]) instead of spreading edge-to-edge on wide screens. */}\n <Container flex=\"none\" width={3}>\n {/* paddingX={2} (8px) matches the table's first-column content inset so the back button and\n actions line up with the row content below. */}\n <Box paddingX={2}>\n <Stack gap={4}>\n <Flex align=\"center\" gap={3}>\n <Flex align=\"center\" flex={1} style={{minWidth: 0}}>\n <DetailBackButton\n onClick={() => router.navigate({})}\n testId=\"back-to-variants-button\"\n text={t('detail.back')}\n />\n </Flex>\n <Flex data-testid=\"variant-detail-actions\" flex=\"none\">\n <VariantActionRail\n documentCount={tableRows.length}\n documentsLoading={documentsLoading}\n variant={variant}\n />\n </Flex>\n </Flex>\n <Flex align=\"flex-start\" gap={4} wrap=\"wrap\">\n <Box flex={1} style={{minWidth: 280}}>\n <DetailIdentity\n description={description || undefined}\n descriptionTestId=\"variant-description-display\"\n title={getVariantTitle(variant)}\n titleAs=\"h1\"\n titlePlaceholder={t('overview.table.variant')}\n titleTestId=\"variant-title-display\"\n />\n </Box>\n {/* Both panels are direct children of the wrapping row (not a nested flex=\"none\"\n group) so each can wrap onto its own line when the viewport is too narrow to hold\n them side by side — otherwise the fit-content panels overflow on small screens. */}\n <DetailPropertiesPanel\n maxWidth={480}\n sections={definitionSections}\n testId=\"variant-detail-definition\"\n />\n <DetailPropertiesPanel\n sections={documentSections}\n testId=\"variant-detail-documents\"\n />\n </Flex>\n </Stack>\n </Box>\n </Container>\n </Card>\n <Flex direction=\"column\" flex={1} height=\"fill\" overflow=\"hidden\" style={{minHeight: 0}}>\n {variantDocumentsError ? (\n <Box padding={4}>\n <Text muted size={1}>\n {t('detail.documents.error')}\n </Text>\n </Box>\n ) : (\n <VariantDocumentsTable\n loading={documentsLoading}\n rows={tableRows}\n variantId={getVariantId(variant._id)}\n />\n )}\n </Flex>\n </Flex>\n )\n}\n","import {useCallback, useMemo} from 'react'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useVariantOperations} from '../../store/useVariantOperations'\nimport {getVariantDefaults} from '../../util/variantDefaults'\nimport {VariantDialog} from './VariantDialog'\n\ninterface CreateVariantDialogProps {\n onCancel: () => void\n onSubmit: (createdVariantId: string) => void\n}\n\nexport function CreateVariantDialog(props: CreateVariantDialogProps): React.JSX.Element {\n const {onCancel, onSubmit} = props\n const {t} = useTranslation(variantsLocaleNamespace)\n const {createVariant} = useVariantOperations()\n const initialValue = useMemo(() => getVariantDefaults(), [])\n\n const handleSubmit = useCallback(\n async (variant: typeof initialValue) => {\n await createVariant(variant)\n onSubmit(variant._id)\n },\n [createVariant, onSubmit],\n )\n\n return (\n <VariantDialog\n confirmDataTestId=\"submit-variant-button\"\n confirmText={t('dialog.create.action.confirm')}\n errorTitle={t('dialog.create.error.title')}\n header={t('dialog.create.title')}\n id=\"create-variant-dialog\"\n initialValue={initialValue}\n onCancel={onCancel}\n onSubmit={handleSubmit}\n />\n )\n}\n","import {type SanityClient} from '@sanity/client'\nimport {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {type Observable, of} from 'rxjs'\nimport {catchError, distinctUntilChanged, map, scan, startWith, switchMap} from 'rxjs/operators'\n\nimport {useClient} from '../../hooks/useClient'\nimport {listenQuery} from '../../store/document/listenQuery'\nimport {VARIANTS_STUDIO_CLIENT_OPTIONS} from '../store/constants'\nimport {type VariantStoreState} from '../store/reducer'\nimport {useVariantsStore} from '../store/useVariantsStore'\nimport {getVariantId} from '../tool/util'\n\n/**\n * The fetch and listen GROQ queries used to keep per-variant document counts fresh.\n *\n * @internal\n */\nexport interface VariantsDocumentCountsQuery {\n /**\n * Aggregate object query returning one count per variant, keyed by variant definition\n * document id (`_.variants.*`).\n */\n fetch: string\n /** Filter matching every document in any of the variants, used for the single listener. */\n listen: string\n}\n\n/**\n * Builds a single aggregate fetch query that counts the documents in each variant, and a\n * single listen filter covering all of them.\n *\n * Documents are counted per document group (`_system.group._ref`), so the count matches the\n * number of rows in the variant detail table, where versions of the same document are grouped.\n *\n * `sanity::partOfVariant()` matches on the short variant id (the `_.variants.` path prefix is\n * stripped via {@link getVariantId}).\n *\n * @internal\n */\nexport function buildVariantsDocumentCountsQuery(\n variantDocumentIds: string[],\n): VariantsDocumentCountsQuery {\n const projections: string[] = []\n const filters: string[] = []\n\n for (const variantDocumentId of variantDocumentIds) {\n const membership = `sanity::partOfVariant(${JSON.stringify(getVariantId(variantDocumentId))})`\n\n projections.push(\n `${JSON.stringify(variantDocumentId)}: count(array::unique(*[${membership}]._system.group._ref))`,\n )\n filters.push(membership)\n }\n\n return {\n fetch: `{${projections.join(',')}}`,\n listen: `*[${filters.join(' || ')}]`,\n }\n}\n\n/** @internal */\nexport interface VariantsDocumentCountsState {\n /**\n * Document counts keyed by variant definition document id (`_.variants.*`), or `null` before\n * the first fetch has completed (or after an error).\n */\n data: Record<string, number> | null\n loading: boolean\n error: Error | null\n}\n\nconst INITIAL_STATE: VariantsDocumentCountsState = {data: null, loading: true, error: null}\nconst EMPTY_STATE: VariantsDocumentCountsState = {data: {}, loading: false, error: null}\n\n/**\n * Fetches the document counts for one set of variants and keeps them fresh: a single listener\n * (one OR-chained `sanity::partOfVariant()` filter covering all the variants) triggers a\n * throttled refetch of one aggregate count query, via {@link listenQuery}.\n */\nfunction listenVariantsDocumentCounts(\n client: SanityClient,\n variantDocumentIds: string[],\n): Observable<VariantsDocumentCountsState> {\n if (variantDocumentIds.length === 0) {\n return of(EMPTY_STATE)\n }\n\n const {fetch, listen} = buildVariantsDocumentCountsQuery(variantDocumentIds)\n\n return listenQuery(\n client,\n {fetch, listen},\n {},\n // Variant-scoped documents are version documents, which are only visible to queries\n // using the raw perspective.\n {tag: 'variants-doc-counts.listen', perspective: 'raw'},\n ).pipe(\n map((response: Record<string, number>): VariantsDocumentCountsState => ({\n data: Object.fromEntries(\n variantDocumentIds.map((variantDocumentId) => [\n variantDocumentId,\n response?.[variantDocumentId] ?? 0,\n ]),\n ),\n loading: false,\n error: null,\n })),\n startWith(INITIAL_STATE),\n // catchError stays on this inner observable so the outer stream in\n // `getVariantsDocumentCounts` keeps reacting to variant list changes after a failure.\n catchError((error) => of({data: null, loading: false, error})),\n )\n}\n\n/**\n * Creates an observable that keeps a live count of the documents in each variant held by the\n * variants store.\n *\n * The variant ids are derived from the store's `state$`, so the returned observable never\n * needs to be recreated: when the set of variants changes, the current listener is closed\n * and a new fetch + listener is started inside the same stream (`switchMap`) — there is\n * never more than one active listener. Previously fetched counts are carried across the\n * switch (`scan`), so existing rows don't flash back to a loading state.\n *\n * @internal\n */\nexport function getVariantsDocumentCounts(\n client: SanityClient,\n variantsState$: Observable<VariantStoreState>,\n): Observable<VariantsDocumentCountsState> {\n return variantsState$.pipe(\n // Document ids cannot contain commas, so a sorted joined string is a stable identity\n // key that lets `distinctUntilChanged` ignore store emissions (e.g. variant metadata\n // edits) that don't change the set of variants.\n map((state) => Array.from(state.variants.keys()).toSorted().join(',')),\n distinctUntilChanged(),\n switchMap((idsKey) => listenVariantsDocumentCounts(client, idsKey ? idsKey.split(',') : [])),\n scan(\n (previous, next): VariantsDocumentCountsState => ({\n // Keep the previous counts while the next fetch is loading (or errored), so counts\n // for unchanged variants remain visible across variant list changes.\n data: next.data ? {...previous.data, ...next.data} : previous.data,\n loading: next.loading && previous.data === null,\n error: next.error,\n }),\n INITIAL_STATE,\n ),\n )\n}\n\n/**\n * Keeps a live count of the documents in each variant, using a single listener and a single\n * aggregate count query (see {@link getVariantsDocumentCounts}).\n *\n * @internal\n */\nexport function useVariantsDocumentCounts(): VariantsDocumentCountsState {\n const client = useClient(VARIANTS_STUDIO_CLIENT_OPTIONS)\n const {state$} = useVariantsStore()\n\n const observable = useMemo(() => getVariantsDocumentCounts(client, state$), [client, state$])\n\n return useObservable(observable, INITIAL_STATE)\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {CheckmarkIcon} from '@sanity/icons/Checkmark'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {FilterIcon} from '@sanity/icons/Filter'\nimport {SearchIcon} from '@sanity/icons/Search'\nimport {Box, Card, Flex, Stack, Text, TextInput, useClickOutsideEvent} from '@sanity/ui'\nimport {type ComponentType, useCallback, useEffect, useMemo, useRef, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {Popover} from '../../../../ui-components/popover/Popover'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {getVariantConditionIcon} from '../detail/variantConditionIcons'\nimport {type ConditionFacet} from '../util'\n\n// Condition keys are authored strings (\"brand\", \"market\", …); present them title-cased.\nfunction facetLabel(key: string): string {\n return key.charAt(0).toUpperCase() + key.slice(1)\n}\n\n/**\n * The single entry point for adding a filter — an \"Add filter\" button that opens a two-level menu:\n * a searchable list of dimensions, then the values for the chosen dimension (multi-select, so the\n * menu stays open). Scales to any number of dimensions without overflowing the lane, unlike a\n * dropdown-per-dimension row.\n */\nfunction AddFilterMenu({\n facets,\n value,\n onToggleValue,\n}: {\n facets: ConditionFacet[]\n value: Record<string, string[]>\n onToggleValue: (key: string, val: string) => void\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const [open, setOpen] = useState(false)\n const [dimensionKey, setDimensionKey] = useState<string | null>(null)\n const [query, setQuery] = useState('')\n const [buttonEl, setButtonEl] = useState<HTMLButtonElement | null>(null)\n const [popoverEl, setPopoverEl] = useState<HTMLElement | null>(null)\n\n const close = useCallback(() => {\n setOpen(false)\n setDimensionKey(null)\n setQuery('')\n }, [])\n\n useClickOutsideEvent(close, () => [buttonEl, popoverEl])\n\n const activeFacet = facets.find((facet) => facet.key === dimensionKey)\n\n const matchingFacets = useMemo(() => {\n const normalized = query.trim().toLowerCase()\n if (!normalized) return facets\n return facets.filter((facet) => facetLabel(facet.key).toLowerCase().includes(normalized))\n }, [facets, query])\n\n // Master-detail: dimensions on the left, the selected dimension's values on the right — both panes\n // visible at once, so choosing a dimension and toggling its values needs no back-and-forth.\n const content = (\n <Stack gap={0} style={{width: 520}}>\n <Box padding={2} style={{borderBottom: '1px solid var(--card-border-color)'}}>\n <TextInput\n fontSize={1}\n icon={SearchIcon}\n onChange={(event) => setQuery(event.currentTarget.value)}\n placeholder={t('overview.filter.find-dimension')}\n radius={2}\n value={query}\n />\n </Box>\n <Flex>\n {/* Left: dimensions — icon + label grouped left (flex-start); the highlighted row and the\n live value pane convey the drill, so no trailing chevron is needed. */}\n <Box style={{width: 240, borderRight: '1px solid var(--card-border-color)'}}>\n <Stack padding={2} gap={1}>\n {matchingFacets.length === 0 ? (\n <Box padding={3}>\n <Text muted size={1}>\n {t('overview.filter.no-dimensions')}\n </Text>\n </Box>\n ) : (\n matchingFacets.map((facet) => {\n const count = (value[facet.key] ?? []).length\n return (\n <Button\n key={facet.key}\n data-testid={`variant-filter-dimension-${facet.key}`}\n icon={getVariantConditionIcon(facet.key)}\n justify=\"flex-start\"\n mode=\"bleed\"\n onClick={() => setDimensionKey(facet.key)}\n selected={facet.key === dimensionKey}\n text={count > 0 ? `${facetLabel(facet.key)} (${count})` : facetLabel(facet.key)}\n />\n )\n })\n )}\n </Stack>\n </Box>\n {/* Right: values of the selected dimension — a muted header names the dimension, then the\n values (text left, selected checkmark pinned right via space-between). */}\n <Box style={{flex: 1}}>\n {activeFacet ? (\n <Stack padding={2} gap={1}>\n <Box paddingBottom={1} paddingTop={1} paddingX={2}>\n <Text muted size={0} weight=\"medium\">\n {facetLabel(activeFacet.key)}\n </Text>\n </Box>\n {activeFacet.values.map((val) => {\n const isSelected = (value[activeFacet.key] ?? []).includes(val)\n return (\n <Button\n key={val}\n data-testid={`variant-filter-value-${activeFacet.key}-${val}`}\n iconRight={isSelected ? CheckmarkIcon : undefined}\n justify=\"space-between\"\n mode=\"bleed\"\n onClick={() => onToggleValue(activeFacet.key, val)}\n selected={isSelected}\n text={val}\n />\n )\n })}\n </Stack>\n ) : (\n <Flex align=\"center\" height=\"fill\" justify=\"center\" padding={4}>\n <Text align=\"center\" muted size={1}>\n {t('overview.filter.pick-dimension-hint')}\n </Text>\n </Flex>\n )}\n </Box>\n </Flex>\n </Stack>\n )\n\n return (\n <Popover ref={setPopoverEl} content={content} open={open} placement=\"bottom-start\" portal>\n <Button\n ref={setButtonEl}\n icon={AddIcon}\n mode=\"ghost\"\n onClick={() => {\n if (open) {\n close()\n } else {\n // Default to the first dimension so the value pane is populated on open.\n setDimensionKey((prev) => prev ?? facets[0]?.key ?? null)\n setOpen(true)\n }\n }}\n selected={open}\n text={t('overview.filter.add')}\n />\n </Popover>\n )\n}\n\nconst NOOP = (): void => {}\n\ninterface ActiveChip {\n key: string\n val: string\n icon: ComponentType\n /** The value, shown as the chip text. */\n label: string\n /** \"Dimension: value\", used as the tooltip (and the only cue when collapsed to an icon). */\n title: string\n}\n\n/**\n * A single active filter value, shown as a removable chip carrying its dimension icon. When\n * `iconOnly` (the overflow-collapsed state) it drops the value text and surfaces it via a tooltip.\n */\nfunction FilterChip({\n chip,\n iconOnly,\n onRemove,\n}: {\n chip: ActiveChip\n iconOnly: boolean\n onRemove: () => void\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const Icon = chip.icon\n const body = (\n <Card border padding={1} radius={2} style={{flex: 'none'}} tone=\"primary\">\n <Flex align=\"center\" gap={2}>\n <Box paddingLeft={1}>\n <Text size={1}>\n <Icon />\n </Text>\n </Box>\n {!iconOnly && (\n <Text muted size={1} style={{whiteSpace: 'nowrap'}}>\n {chip.label}\n </Text>\n )}\n <Button\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onRemove}\n paddingY={1}\n tooltipProps={{content: t('overview.filter.remove-value')}}\n />\n </Flex>\n </Card>\n )\n\n // Collapsed chips are just an icon; the tooltip carries the dimension + value.\n return iconOnly ? (\n <Tooltip content={<Text size={1}>{chip.title}</Text>} portal>\n <Box style={{flex: 'none'}}>{body}</Box>\n </Tooltip>\n ) : (\n body\n )\n}\n\n/**\n * The active filter chips, in a flexible zone that never scrolls: a hidden, always-expanded copy is\n * measured against the visible zone's width, and when the full chips would overflow they all collapse\n * to icon-only (tooltip-labelled). The zone flexes, so \"Add filter\" and \"Clear filters\" beside it stay\n * pinned and always visible.\n */\nfunction ActiveChips({\n chips,\n onRemove,\n}: {\n chips: ActiveChip[]\n onRemove: (key: string, val: string) => void\n}): React.JSX.Element {\n const [collapsed, setCollapsed] = useState(false)\n const containerRef = useRef<HTMLDivElement | null>(null)\n const measureRef = useRef<HTMLDivElement | null>(null)\n\n useEffect(() => {\n const container = containerRef.current\n const measure = measureRef.current\n if (!container || !measure || typeof ResizeObserver === 'undefined') return undefined\n const observer = new ResizeObserver(() => {\n setCollapsed(measure.scrollWidth > container.clientWidth)\n })\n observer.observe(container)\n observer.observe(measure)\n return () => observer.disconnect()\n }, [])\n\n return (\n <Box\n flex={1}\n ref={containerRef}\n style={{minWidth: 0, overflow: 'hidden', position: 'relative'}}\n >\n <Flex align=\"center\" gap={2} wrap=\"nowrap\">\n {chips.map((chip) => (\n <FilterChip\n chip={chip}\n iconOnly={collapsed}\n key={`${chip.key}:${chip.val}`}\n onRemove={() => onRemove(chip.key, chip.val)}\n />\n ))}\n </Flex>\n {/* Hidden, always-expanded copy — measured to decide whether the visible chips must collapse. */}\n <Flex\n aria-hidden\n gap={2}\n ref={measureRef}\n style={{\n left: 0,\n pointerEvents: 'none',\n position: 'absolute',\n top: 0,\n visibility: 'hidden',\n }}\n wrap=\"nowrap\"\n >\n {chips.map((chip) => (\n <FilterChip\n chip={chip}\n iconOnly={false}\n key={`measure-${chip.key}:${chip.val}`}\n onRemove={NOOP}\n />\n ))}\n </Flex>\n </Box>\n )\n}\n\n/**\n * Faceted filter bar for the variant definitions overview, rendered in the shared DocumentTable's\n * filter-tabs slot. A bordered \"Filters\" group with a single \"Add filter\" entry point (a searchable\n * dimension menu, derived from the data) and a removable chip per active value. Selecting narrows the\n * list — OR within a dimension, AND across dimensions. The single entry point scales to any number of\n * dimensions without overflowing the lane.\n *\n * @internal\n */\nexport function VariantConditionFilters({\n facets,\n value,\n onChange,\n}: {\n facets: ConditionFacet[]\n value: Record<string, string[]>\n onChange: (next: Record<string, string[]>) => void\n}): React.JSX.Element | null {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n const activeChips: ActiveChip[] = Object.entries(value).flatMap(([key, values]) =>\n values.map((val) => ({\n key,\n val,\n icon: getVariantConditionIcon(key),\n label: val,\n title: `${facetLabel(key)}: ${val}`,\n })),\n )\n const hasActive = activeChips.length > 0\n\n const toggleValue = useCallback(\n (key: string, val: string) => {\n const current = value[key] ?? []\n const next = current.includes(val) ? current.filter((v) => v !== val) : [...current, val]\n const updated = {...value}\n if (next.length > 0) updated[key] = next\n else delete updated[key]\n onChange(updated)\n },\n [onChange, value],\n )\n\n if (facets.length === 0) return null\n\n return (\n // Fill the lane when there are chips (so Clear pins right and the chips zone can measure its\n // available width); shrink to content when there are none, so the empty bar stays compact.\n <Card border padding={1} radius={2} style={hasActive ? undefined : {display: 'inline-flex'}}>\n <Flex align=\"center\" gap={2} wrap=\"nowrap\">\n <Box paddingX={1} style={{flex: 'none'}}>\n <Text muted size={1}>\n <FilterIcon />\n </Text>\n </Box>\n\n <Box style={{flex: 'none'}}>\n <AddFilterMenu facets={facets} onToggleValue={toggleValue} value={value} />\n </Box>\n\n {hasActive && (\n <>\n {/* Thin rule separating the add control from the active-value chips. */}\n <Box\n style={{flex: 'none', width: 1, height: 20, background: 'var(--card-border-color)'}}\n />\n <ActiveChips chips={activeChips} onRemove={toggleValue} />\n <Box style={{flex: 'none'}}>\n <Button\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={() => onChange({})}\n text={t('overview.filter.clear-all')}\n tone=\"primary\"\n />\n </Box>\n </>\n )}\n </Flex>\n </Card>\n )\n}\n","import {EditIcon} from '@sanity/icons/Edit'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {Menu, MenuDivider} from '@sanity/ui'\nimport {useState} from 'react'\n\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {MenuItem} from '../../../../ui-components/menuItem/MenuItem'\nimport {ContextMenuButton} from '../../../components/contextMenuButton/ContextMenuButton'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {DeleteVariantDialog} from '../../components/dialog/DeleteVariantDialog'\nimport {EditVariantDialog} from '../../components/dialog/EditVariantDialog'\nimport {useVariantDeleteAction} from '../../hooks/useVariantDeleteAction'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {getVariantId, getVariantTitle} from '../util'\n\nexport function VariantMenuButton({\n documentCount,\n variant,\n}: {\n documentCount?: number | null\n variant: SystemVariant\n}) {\n const {t} = useTranslation(variantsLocaleNamespace)\n const variantTitle = getVariantTitle(variant)\n const [isEditDialogOpen, setIsEditDialogOpen] = useState(false)\n const {\n deleteDisabled,\n deleteDisabledTooltip,\n handleCloseDeleteDialog,\n handleConfirmDelete,\n handleDelete,\n isDeleteDialogOpen,\n isDeleting,\n variantTitle: dialogVariantTitle,\n } = useVariantDeleteAction(variant._id, {documentCount, variantTitle})\n\n return (\n <>\n <MenuButton\n button={<ContextMenuButton disabled={isDeleting} loading={isDeleting} />}\n id={`variant-actions-${getVariantId(variant._id)}`}\n menu={\n <Menu>\n <MenuItem\n icon={EditIcon}\n onClick={() => setIsEditDialogOpen(true)}\n text={t('overview.action.edit-variant')}\n />\n <MenuDivider />\n <MenuItem\n disabled={deleteDisabled}\n icon={TrashIcon}\n onClick={handleDelete}\n text={t('overview.action.delete-variant')}\n tone=\"critical\"\n tooltipProps={deleteDisabledTooltip ? {content: deleteDisabledTooltip} : undefined}\n />\n </Menu>\n }\n popover={{placement: 'bottom-end', portal: true}}\n />\n {isEditDialogOpen && (\n <EditVariantDialog\n onCancel={() => setIsEditDialogOpen(false)}\n onSubmit={() => setIsEditDialogOpen(false)}\n variant={variant}\n />\n )}\n {isDeleteDialogOpen && (\n <DeleteVariantDialog\n isDeleting={isDeleting}\n onClose={handleCloseDeleteDialog}\n onConfirm={handleConfirmDelete}\n variantTitle={dialogVariantTitle}\n />\n )}\n </>\n )\n}\n","/**\n * Isometric illustration: one primary document with smaller derived copies,\n * echoing the layered panels used in {@link ReleaseIllustration}.\n */\nconst BASE_PANEL =\n 'M64 150.174V81.8262C64 79.1748 65.498 76.751 67.8695 75.5653L103.87 57.5652C108.524 55.2381 114 58.6226 114 63.8262V132.174C114 134.825 112.502 137.249 110.131 138.435L74.1305 156.435C69.4762 158.762 64 155.377 64 150.174Z'\n\n/** Horizontal “body copy” lines in panel local coordinates */\nconst LINES_FULL = ['M72 86 L106 86', 'M72 96 L102 96', 'M72 106 L104 106', 'M72 116 L98 116']\n\nconst LINES_MEDIUM = ['M72 88 L100 88', 'M72 98 L96 98', 'M72 108 L102 108']\n\nconst LINES_SHORT = ['M72 90 L94 90', 'M72 100 L92 100']\n\nexport const VariantIllustration = () => (\n <svg\n aria-hidden=\"true\"\n data-testid=\"variant-illustration\"\n width=\"248\"\n height=\"201\"\n viewBox=\"0 0 248 201\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* faint depth behind hub */}\n <g opacity={0.12}>\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n transform=\"translate(12 10)\"\n />\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n transform=\"translate(6 6)\"\n />\n </g>\n\n {/* derived copies — same silhouette, different inner lines */}\n <g opacity={0.28}>\n <g transform=\"translate(118 6) scale(0.5)\">\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n />\n {LINES_MEDIUM.map((d) => (\n <path\n key={d}\n d={d}\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n strokeLinecap=\"round\"\n opacity={0.55}\n />\n ))}\n </g>\n </g>\n\n <g opacity={0.34}>\n <g transform=\"translate(126 52) scale(0.52)\">\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n />\n {LINES_FULL.slice(0, 3).map((d) => (\n <path\n key={d}\n d={d}\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n strokeLinecap=\"round\"\n opacity={0.5}\n />\n ))}\n </g>\n </g>\n\n <g opacity={0.26}>\n <g transform=\"translate(106 102) scale(0.48)\">\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n />\n {LINES_SHORT.map((d) => (\n <path\n key={d}\n d={d}\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n strokeLinecap=\"round\"\n opacity={0.55}\n />\n ))}\n </g>\n </g>\n\n {/* soft connectors — hub to satellites */}\n <g opacity={0.14} stroke=\"var(--card-muted-fg-color)\" strokeWidth={1.2} strokeLinecap=\"round\">\n <path d=\"M118 112 Q 152 72 168 58\" fill=\"none\" />\n <path d=\"M124 124 Q 168 108 188 92\" fill=\"none\" />\n <path d=\"M118 138 Q 150 152 162 168\" fill=\"none\" />\n </g>\n\n {/* primary document */}\n <g transform=\"translate(26 20) scale(1.06)\">\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n opacity={0.92}\n />\n {LINES_FULL.map((d, index) => (\n <path\n key={d}\n d={d}\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n strokeLinecap=\"round\"\n opacity={0.42 + index * 0.06}\n />\n ))}\n </g>\n </svg>\n)\n","import {Flex, rem, Text} from '@sanity/ui'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {VariantIllustration} from '../resources/VariantIllustration'\n\ninterface VariantsEmptyStateProps {\n createVariantButton?: React.ReactNode\n}\n\nconst VARIANTS_DOCUMENTATION_URL = 'https://www.sanity.io/docs/content-variants'\n\nexport const VariantsEmptyState = ({createVariantButton}: VariantsEmptyStateProps) => {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n return (\n <Flex\n align=\"center\"\n data-testid=\"variants-empty-state\"\n flex={1}\n direction=\"column\"\n gap={3}\n style={{maxWidth: rem(300)}}\n paddingBottom={5}\n >\n <VariantIllustration />\n <Text as=\"h1\" size={1} weight=\"semibold\" data-testid=\"no-variants-info-text\">\n {t('overview.title')}\n </Text>\n <Text size={1} muted style={{textAlign: 'center'}}>\n {t('overview.empty-state.description')}\n </Text>\n <Flex gap={2}>\n {createVariantButton}\n <Button\n as=\"a\"\n href={VARIANTS_DOCUMENTATION_URL}\n target=\"_blank\"\n mode=\"ghost\"\n text={t('overview.action.documentation')}\n />\n </Flex>\n </Flex>\n )\n}\n","import {Box, Card, Flex, Skeleton, Stack, Text} from '@sanity/ui'\nimport {type HTMLProps, useMemo, type RefAttributes} from 'react'\nimport {StateLink} from 'sanity/router'\n\nimport {useTranslation, type UseTranslationResponse} from '../../../i18n/hooks/useTranslation'\nimport {Headers} from '../../../releases/tool/components/Table/TableHeader'\nimport {type Column, type VisibleColumn} from '../../../releases/tool/components/Table/types'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {getVariantId, getVariantConditionsText, getVariantTitle} from '../util'\n\n/**\n * A variant row in the overview table, with its live document count attached.\n *\n * `documentCount` is `undefined` while the count is being fetched and `null` when it could\n * not be fetched.\n *\n * @internal\n */\nexport interface TableVariant extends SystemVariant {\n documentCount?: number | null\n}\n\nconst VariantDocumentsCell: VisibleColumn<TableVariant>['cell'] = ({cellProps, datum}) => {\n if (datum.isLoading || datum.documentCount === undefined) {\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Text size={1}>\n <Skeleton animated radius={1} style={{width: '4ch'}} />\n </Text>\n </Flex>\n )\n }\n\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Text muted size={1}>\n {datum.documentCount === null ? '-' : datum.documentCount}\n </Text>\n </Flex>\n )\n}\n\nconst VariantTitleCell: VisibleColumn<TableVariant>['cell'] = ({cellProps, datum: variant}) => {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n const encodedVariantId = getVariantId(variant._id)\n\n const VariantLink = useMemo(\n () =>\n function VariantLinkComponent(\n linkProps: HTMLProps<HTMLAnchorElement> & RefAttributes<HTMLAnchorElement>,\n ) {\n const {ref, ...rest} = linkProps\n return <StateLink {...rest} ref={ref} state={{variantId: encodedVariantId}} />\n },\n [encodedVariantId],\n )\n\n if (variant.isLoading) {\n return (\n <Box {...cellProps} flex={1} paddingLeft={3} paddingRight={2} paddingY={2} sizing=\"border\">\n <Stack gap={2}>\n <Text size={1} weight=\"medium\">\n <Skeleton animated radius={1} style={{width: '16ch'}} />\n </Text>\n <Text muted size={1}>\n <Skeleton animated radius={1} style={{width: '32ch'}} />\n </Text>\n </Stack>\n </Box>\n )\n }\n\n const conditionsText = getVariantConditionsText(variant.conditions)\n\n return (\n <Box {...cellProps} flex={1} paddingLeft={3} paddingRight={2} paddingY={1} sizing=\"border\">\n <Flex align=\"center\" gap={3}>\n <Card as={VariantLink} data-as=\"a\" flex={1} padding={2} radius={2} tone=\"inherit\">\n <Flex align=\"center\" gap={3}>\n {/* min-width: 0 lets the flex child shrink below its content width so a long name\n truncates with a trailing ellipsis instead of overflowing on narrow viewports. */}\n <Stack flex={1} gap={2} style={{minWidth: 0}}>\n <Text size={1} textOverflow=\"ellipsis\" weight=\"medium\">\n {getVariantTitle(variant)}\n </Text>\n <Text muted size={1} textOverflow=\"ellipsis\">\n {conditionsText || t('overview.table.no-conditions')}\n </Text>\n </Stack>\n </Flex>\n </Card>\n </Flex>\n </Box>\n )\n}\n\nexport function variantsOverviewColumnDefs(\n t: UseTranslationResponse<'variants', undefined>['t'],\n): Column<TableVariant>[] {\n return [\n {\n id: 'metadata.title',\n sorting: true,\n width: null,\n style: {minWidth: 'min(50%, calc(100vw - 80px))'},\n header: (props) => (\n <Flex\n {...props.headerProps}\n flex={1}\n paddingLeft={3}\n paddingRight={2}\n paddingY={3}\n sizing=\"border\"\n >\n <Headers.SortHeaderButton {...props} text={t('overview.table.variant')} />\n </Flex>\n ),\n cell: VariantTitleCell,\n sortTransform: (variant) => getVariantTitle(variant),\n },\n {\n id: 'documentCount',\n sorting: false,\n width: 120,\n header: ({headerProps}) => (\n <Flex {...headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={t('overview.table.documents')} />\n </Flex>\n ),\n cell: VariantDocumentsCell,\n },\n ]\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {Card, Container, Flex, Stack, Text} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {DocumentTable} from '../../../releases/tool/components/Table/DocumentTable'\nimport {CreateVariantDialog} from '../../components/dialog/CreateVariantDialog'\nimport {useVariantsDocumentCounts} from '../../hooks/useVariantsDocumentCounts'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {type SystemVariant} from '../../types'\nimport {\n buildConditionFacets,\n filterVariantsForSearch,\n getVariantId,\n variantMatchesConditionFilters,\n} from '../util'\nimport {VariantConditionFilters} from './VariantConditionFilters'\nimport {VariantMenuButton} from './VariantMenuButton'\nimport {VariantsEmptyState} from './VariantsEmptyState'\nimport {type TableVariant, variantsOverviewColumnDefs} from './VariantsOverviewColumnDefs'\n\nconst VARIANT_TABLE_ROW_ID = '_id'\nconst getRowKey = (variant: TableVariant): string => variant._id\n// DocumentTable filters internally per-row; reuse the list matcher on a single-element list so the\n// search behaviour stays identical to the previous standalone search box.\nconst searchPredicate = (variant: TableVariant, term: string): boolean =>\n filterVariantsForSearch([variant], term).length > 0\n\nexport function VariantsOverview(): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const router = useRouter()\n const {data: variants, error, loading} = useAllVariants()\n const [isCreateVariantDialogOpen, setIsCreateVariantDialogOpen] = useState(false)\n const [conditionFilters, setConditionFilters] = useState<Record<string, string[]>>({})\n\n const handleCreateVariant = useCallback(() => setIsCreateVariantDialogOpen(true), [])\n\n const handleOnCreateVariant = useCallback(\n (createdVariantId: string) => {\n setIsCreateVariantDialogOpen(false)\n router.navigate({variantId: getVariantId(createdVariantId)})\n },\n [router],\n )\n\n const columnDefs = useMemo(() => variantsOverviewColumnDefs(t), [t])\n\n const renderRowActions = useCallback(\n ({datum}: {datum: unknown}) => (\n <VariantMenuButton\n documentCount={(datum as TableVariant).documentCount}\n variant={datum as SystemVariant}\n />\n ),\n [],\n )\n\n const variantsList = useMemo(() => variants ?? [], [variants])\n const {data: documentCounts, error: documentCountsError} = useVariantsDocumentCounts()\n\n // Facets come from the full list so the dropdown options never shrink as filters are applied.\n const facets = useMemo(() => buildConditionFacets(variantsList), [variantsList])\n\n // Rows are pre-filtered by the active condition filters; DocumentTable owns the free-text search\n // on top of that via searchPredicate.\n const rows = useMemo(\n () =>\n variantsList\n .filter((variant) => variantMatchesConditionFilters(variant, conditionFilters))\n .map((variant): TableVariant => ({\n ...variant,\n documentCount: documentCounts?.[variant._id] ?? (documentCountsError ? null : undefined),\n })),\n [variantsList, conditionFilters, documentCounts, documentCountsError],\n )\n\n const hasVariants = variantsList.length > 0\n const hasActiveConditionFilters = useMemo(\n () => Object.values(conditionFilters).some((values) => values.length > 0),\n [conditionFilters],\n )\n\n const createVariantButton = useMemo(\n () => (\n <Button\n disabled={isCreateVariantDialogOpen}\n icon={AddIcon}\n onClick={handleCreateVariant}\n text={t('overview.action.new-variant')}\n />\n ),\n [handleCreateVariant, isCreateVariantDialogOpen, t],\n )\n\n const tableEmptyState = useCallback(() => {\n if (error && !hasVariants) {\n return (\n <Flex align=\"center\" direction=\"column\" gap={3} justify=\"center\" padding={4}>\n <Text muted size={1}>\n {t('overview.error')}\n </Text>\n </Flex>\n )\n }\n\n if (hasVariants && hasActiveConditionFilters && rows.length === 0) {\n return (\n <Flex align=\"center\" direction=\"column\" gap={3} justify=\"center\" padding={4}>\n <Text data-testid=\"variants-filter-empty-state\" muted size={1}>\n {t('overview.filter.no-matching-definitions')}\n </Text>\n </Flex>\n )\n }\n\n return <VariantsEmptyState createVariantButton={createVariantButton} />\n }, [createVariantButton, error, hasActiveConditionFilters, hasVariants, rows.length, t])\n\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\">\n {/* Same container width as the releases document table (`container[3]`), so the page header\n aligns with the table's row content below. */}\n <Container flex=\"none\" width={3}>\n <Flex direction=\"column\" paddingX={3}>\n <Card flex=\"none\" paddingBottom={4} paddingTop={5}>\n <Flex align=\"flex-start\" gap={4} justify=\"space-between\">\n <Stack gap={2}>\n <Text as=\"h1\" size={4} weight=\"bold\">\n {t('overview.title')}\n </Text>\n <Text muted size={1}>\n {t('overview.description')}\n </Text>\n </Stack>\n {createVariantButton}\n </Flex>\n </Card>\n\n {error && (\n <Card flex=\"none\" marginBottom={4} padding={3} tone=\"critical\">\n <Text size={1}>{t('overview.error')}</Text>\n </Card>\n )}\n </Flex>\n </Container>\n\n {/* Shared DocumentTable — the same table the release and variant detail surfaces use: search in\n the command lane and per-row actions. (Multi-select is supported by the component but not\n wired here yet — bulk operations ship separately once transactional batching lands.) */}\n <DocumentTable<TableVariant>\n alwaysShowCommandLane\n columnDefs={columnDefs}\n // Reserve the bordered filter group's height so selecting rows (which swaps in the shorter\n // bulk toolbar) never shifts the table.\n commandLaneMinHeight={47}\n emptyState={tableEmptyState}\n filterTabs={\n // VariantConditionFilters renders nothing when there are no condition facets; passing the\n // element unconditionally would still read as \"tabs present\" to DocumentTable and strand a\n // fixed-width search with an empty gutter. Omit it so the search lane fills the row.\n facets.length > 0 ? (\n <VariantConditionFilters\n facets={facets}\n onChange={setConditionFilters}\n value={conditionFilters}\n />\n ) : undefined\n }\n filterTabsScroll={false}\n getRowKey={getRowKey}\n id=\"variant-definitions-table\"\n loading={loading}\n rowActions={renderRowActions}\n rowId={VARIANT_TABLE_ROW_ID}\n rows={rows}\n searchPlaceholder={t('overview.search.placeholder')}\n searchPredicate={searchPredicate}\n />\n\n {isCreateVariantDialogOpen && (\n <CreateVariantDialog\n onCancel={() => setIsCreateVariantDialogOpen(false)}\n onSubmit={handleOnCreateVariant}\n />\n )}\n </Flex>\n )\n}\n","import {useRouter} from 'sanity/router'\n\nimport {VariantDetail} from './detail/VariantDetail'\nimport {VariantsOverview} from './overview/VariantsOverview'\n\nexport function VariantsTool() {\n const router = useRouter()\n const variantId = typeof router.state.variantId === 'string' ? router.state.variantId : undefined\n\n if (variantId) {\n return <VariantDetail key={variantId} />\n }\n\n return <VariantsOverview />\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,SAAgBI,yBAAyBC,UAAyD;CAChG,IAAMC,SAASD,SAASH;CAMxB,OAJKI,QAAQC,OAAOC,OAIb;EACLC,YAAYJ,SAASK;EACrBC,UAAUL,OAAOK,YAAYC,KAAAA;EAC7BC,YAAYP,OAAOQ,SAASN,QAAQ;EACpCO,WAAWV,SAASW,cAAc;CACpC,IARS;AASX;;;;;;;;;ACJA,SAAOO,oBAAAC,WAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAKLC,UAAgBC,EAAQJ,WAAUK;CAAA,AAAAJ,EAAA,OAAAD,YACgDK,KAAAJ,EAAA,MAAxCI,KAAAL,YAAYF,aAAaE,SAAc,IAAvC,IAAwCC,EAAA,KAAAD,WAAAC,EAAA,KAAAI;CAAA,IAAAC;CAAA,AAAAL,EAAA,OAAAI,KAACC,KAAAL,EAAA,MAArDK,KAAA,EAAAN,WAAYK,GAAwC,GAACJ,EAAA,KAAAI,IAAAJ,EAAA,KAAAK;CAAnF,IAAAC,SAA8BD,IAKlBE,KAAAL,UAAA,WAAqBH,cAArB,oBAAqDS;CAAA,AAAAR,EAAA,OAAAE,WAAAF,EAAA,OAAAM,UAAAN,EAAA,OAAAO,MAHZC,KAAA;EAAAC,YACvC;EAAmCH;EAAAI,UAErCH;EAAqDL;CAEjE,GAACF,EAAA,KAAAE,SAAAF,EAAA,KAAAM,QAAAN,EAAA,KAAAO,IAAAP,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CALD,IAAA,EAAAW,SAAAC,SAAAC,UAAkCnB,mBAAmBc,EAKpD,GAACM;CAAA,AAAAd,EAAA,OAAAE,WAAAF,EAAA,OAAAY,WAGOE,KAAAZ,UAAUa,qBAAqBH,OAAY,IAA3C,CAAA,GAA4CZ,EAAA,KAAAE,SAAAF,EAAA,KAAAY,SAAAZ,EAAA,MAAAc,MAAAA,KAAAd,EAAA;CADrD,IAAAgB,iBACSF,IAKEG,KAAAf,WAAAS,SAEFO,KAAAhB,UAAAW,QAAA,MAAsBM;CAC9B,OAD8BnB,EAAA,QAAAiB,MAAAjB,EAAA,QAAAkB,MAAAlB,EAAA,QAAAgB,kBAHxBG,KAAA;EAAAR,SACIM;EAAkBL,SAClBI;EAAcH,OAChBK;CACT,GAAClB,EAAA,MAAAiB,IAAAjB,EAAA,MAAAkB,IAAAlB,EAAA,MAAAgB,gBAAAhB,EAAA,MAAAmB,MAAAA,KAAAnB,EAAA,KAJMmB;AAIN;AAGH,SAASJ,qBAAqBH,SAAgD;CAC5E,OAAOA,QAAQQ,SAASC,WAAW;EACjC,IAAMC,UAAU1B,yBAAyByB,OAAOE,QAAQ;EAExD,OAAOD,UAAU,CAAC;GAAC,GAAGD;GAAQC;EAAO,CAAC,IAAI,CAAA;CAC5C,CAAC;AACH;ACvCA,SAASU,mBAAmBC,UAAiD;CAS3E,OARIN,oBAAoBM,QAAQ,IACvB,IAGLA,aAAa,WACR,IAGF;AACT;AAEA,SAASC,+BACPC,MACAC,OACQ;CACR,IAAMC,YAAYL,mBAAmBG,KAAKF,QAAQ,GAC5CK,aAAaN,mBAAmBI,MAAMH,QAAQ;CAMpD,OAJII,cAAcC,aAIXH,KAAKI,WAAWC,cAAcJ,MAAMG,UAAU,IAH5CF,YAAYC;AAIvB;AAEA,SAASG,2BAA2BC,WAAmD;CACrF,OAAOA,UAAUC,QAAQC,QAAQC,YAAY;EAC3C,IAAMC,kBAAkBF,OAAOG,SAASC,cAAc;EAGtD,QAFyBH,QAAQE,SAASC,cAAc,MAE9BF,kBAAkBD,UAAUD;CACxD,CAAC;AACH;AAEA,SAASM,oBAAoBR,WAA0D;CACrF,IAAMS,iBAAiBV,2BAA2BC,SAAS;CAE3D,OAAO;EACLU,cAAcV,UAAUW,MAAMN,aAAaA,SAASO,WAAWF,YAAY;EAC3EE,YAAYZ,UAAUa,SAASR,aAAaA,SAASO,WAAWA,UAAU;EAC1EE,UAAUL,eAAeG,WAAWE;EACpCC,UAAUf,UAAUW,MAAMN,aAAaA,SAASO,WAAWG,QAAQ;CACrE;AACF;;;;;;AAOA,SAAgBC,6BACdhB,WAC0B;CAC1B,IAAMiB,yBAAS,IAAIC,IAAiC;CAEpD,KAAK,IAAMb,YAAYL,WAAW;EAEhC,IAAMoB,UADSf,SAASA,SAASrB,sBACX,EAAEqC,OAAOC;EAE/B,IAAI,CAACF,SACH;EAGF,IAAMG,gBAAgBN,OAAOO,IAAIJ,OAAO;EAExC,AAAIG,gBACFA,cAAcE,KAAKpB,QAAQ,IAE3BY,OAAOS,IAAIN,SAAS,CAACf,QAAQ,CAAC;CAElC;CAEA,OAAOsB,MAAMC,KAAKX,OAAOY,QAAQ,CAAC,CAAC,CAACC,KAAK,CAACV,SAASW,oBAAoB;EACrE,IAAMtB,iBAAiBV,2BAA2BgC,cAAc,GAC1DC,WAAWD,eACdD,KAAKG,SAASA,KAAKC,OAAO,CAAC,CAC3BC,SAAS3C,8BAA8B;EAE1C,OAAO;GACL,GAAGiB;GACHW;GACAY;GACApB,YAAYJ,oBAAoBuB,cAAc;EAChD;CACF,CAAC;AACH;;;;ACnFA,SAAgBiB,6BAA6BC,SAElB;CACzB,IAAMC,SAASX,eAAeU,QAAQC,MAAM,GAEtCC,sBAAsB,OAAOR,YAAmC;EAEpE,IAAMU,SAAS;GACbC,YAAY;GACZP,WAHgBV,aAAaM,QAAQS,GAGrCL;GACAS,YAAYb,QAAQa;GACpBC,UAAUd,QAAQc;GAClB,GAAId,QAAQe,WAAW,EAACA,UAAUf,QAAQe,SAAQ,IAAI,CAAC;EACzD;EAEA,OAAO,MAAMR,OAAOG,OAAOA,QAAQ,EAACM,KAAK,kBAAiB,CAAC;CAC7D,GAEMC,sBAAsB,OAAOjB,YAAmC;EACpE,IAAMI,YAAYV,aAAaM,QAAQS,GAAG,GACpCS,aAC+C;GACnDL,YAAYb,QAAQa;GACpBC,UAAUd,QAAQc;EACpB;EAEA,AAAId,QAAQe,aACVG,WAAWH,WAAWf,QAAQe;EAGhC,IAAMM,QAGF,EACFC,KAAKJ,WACP;EAEA,AAAKlB,QAAQe,aACXM,MAAME,QAAQ,CAAC,UAAU;EAG3B,IAAMb,SAAS;GACbC,YAAY;GACZP;GACAiB;EACF;EAEA,OAAO,MAAMd,OAAOG,OAAOA,QAAQ,EAACM,KAAK,gBAAe,CAAC;CAC3D,GAEMQ,sBAAsB,OAAOC,0BAAkC;EACnE,IAAMf,SAAS;GACbC,YAAY;GACZP,WAAWV,aAAa+B,qBAAqB;EAC/C;EAEA,OAAO,MAAMlB,OAAOG,OAAOA,QAAQ,EAACM,KAAK,kBAAiB,CAAC;CAC7D;CAEA,OAAO;EACLjB,eAAeS;EACfN,eAAee;EACfd,eAAeqB;CACjB;AACF;;;;ACtEA,SAAOM,uBAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACLC,eAAqBN,UAAUC,8BAA8B,GAACM;CAMxD,OANwDH,EAAA,OAAAE,eAMxDC,KAAAH,EAAA,MAFFG,KAAAL,6BAA6B,EAAAM,QACnBF,aACV,CAAC,GAACF,EAAA,KAAAE,cAAAF,EAAA,KAAAG,KAFFA;AAEE;;;;ACXR,SAAgBG,qBAAqBC,SAAwC;CAC3E,IAAMC,QAAQD,QAAQE,UAAUD;CAEhC,OAAO,OAAOA,SAAU,WAAWA,MAAME,KAAK,IAAI;AACpD;;;;AAKA,SAAgBC,oBAAoBJ,SAAyC;CAC3E,OAAO,CAACD,qBAAqBC,OAAO,KAAK,CAACK,sBAAsBL,QAAQM,UAAU;AACpF;AAEA,SAASD,sBAAsBC,YAA0D;CACvF,IAAMC,UAAUC,OAAOD,QAAQD,UAAU;CAEzC,OAAOC,QAAQE,SAAS,KAAKF,QAAQG,OAAO,CAACC,KAAKC,WAAWC,GAAQF,IAAIR,KAAK,KAAKS,MAAMT,KAAK,EAAE;AAClG;ACtBA,MAAMW,sBAAsB,2BAEtBE,wBAAwB,CAAC,KAAK,GAAG;AAKvC,SAAgBI,+BACdC,KACyC;CACzC,IAAMC,aAAaD,IAAIE,KAAK;CAEvBD,gBAIL;OAAK,IAAMG,UAAUT,uBACnB,IAAIM,WAAWI,WAAWD,MAAM,GAC9B,OAAO;EAIX,IAAIH,WAAWK,SAASZ,GAAmB,KAAK,CAACD,oBAAoBc,KAAKN,UAAU,GAClF,OAAO;CALE;AASb;AAEA,SAAgBO,iCACdC,OAC2C;CAC3C,IAAI,CAACA,MAAMP,KAAK,GACd,OAAO;CAGT,IAAIO,MAAMH,SAASZ,GAAmB,GACpC,OAAO;AAIX;ACvCA,SAAgBiB,2BAA2BC,UAAuD;CAChG,IAAI,CAACC,OAAOC,SAASF,QAAQ,GAC3B,OAAO;AAIX;AAEA,SAAgBI,gCACdC,OACqC;CAKrC,OAJIA,MAAMC,KAAK,MAAM,KACZ,YAGFP,2BAA2BE,OAAOI,KAAK,CAAC;AACjD;;;;ACVA,MAAMI,wBAAwBF,eAC5B,kEACA,CACF;;;;;;AAOA,SAAgBG,kBAAgE;CAC9E,OAAO,GAAGF,uBAAsB,GAAIC,sBAAsB;AAC5D;;;;ACXA,SAAgBM,qBAA4C;CAC1D,OAAO;EACLC,KAAKF,gBAAgB;EACrBG,OAAO;EACPC,YAAY,CAAC;EACbC,UAAU;EACVC,UAAU;GACRC,OAAO;GACPC,aAAa,CAAA;EACf;CACF;AACF;;;;AAKA,SAAgBC,8BAA8BC,MAAmC;CAO/E,OANoBA,KAAKE,KAEpBD,IAIE,CACL;EACEE,MAAMf,UAAU,EAAE;EAClBK,OAAO;EACPW,UAAU,CACR;GACED,MAAMf,UAAU,EAAE;GAClBK,OAAO;GACPY,OAAO,CAAA;GACPL;EACF,CAAC;EAEHM,UAAU,CAAA;EACVC,OAAO;CACT,CAAC,IAjBM,CAAA;AAmBX;AC3BA,SAASQ,WAAWC,QAAoC;CACtD,OAAOE,MAAMC,KAAKH,MAAM,CAAC,CACtBI,OAAOC,OAAO,CAAC,CACfC,UAAUC,GAAGC,MAAMD,EAAEE,cAAcD,CAAC,CAAC;AAC1C;;;;AAKA,SAAgBE,8BAA8BC,UAAqD;CACjG,IAAMf,uBAAO,IAAIgB,IAAY,GACvBf,8BAAc,IAAIC,IAAyB;CA6BjD,OA3BAa,SAASE,SAASC,YAAY;EAC5BC,OAAOC,QAAQF,QAAQG,UAAU,CAAC,CAACJ,SAAS,CAACK,QAAQC,cAAc;GACjE,IAAMC,MAAMF,OAAOG,KAAK;GAExB,IAAI,CAACD,KACH;GAGFxB,KAAK0B,IAAIF,GAAG;GAEZ,IAAM1B,QAAQyB,UAAUE,KAAK;GAE7B,IAAI,CAAC3B,OACH;GAGF,IAAIM,SAASH,YAAY0B,IAAIH,GAAG;GAOhCpB,AALKA,WACHA,yBAAS,IAAIY,IAAY,GACzBf,YAAY2B,IAAIJ,KAAKpB,MAAM,IAG7BA,OAAOsB,IAAI5B,KAAK;EAClB,CAAC;CACH,CAAC,GAEM;EACLE,MAAMG,WAAWH,IAAI;EACrBC,aAAa,IAAIC,IAAII,MAAMC,KAAKN,cAAc,CAACuB,KAAKpB,YAAY,CAACoB,KAAKrB,WAAWC,MAAM,CAAC,CAAC,CAAC;CAC5F;AACF;;;;AAKA,SAAgByB,uBACdC,OACAC,MACAE,iBAC6B;CAC7B,IAAMC,WAAW,IAAIlB,IACnBe,KACGvB,QAAQ2B,GAAGC,aAAaA,aAAaH,eAAe,CAAC,CACrDI,KAAKC,QAAQA,IAAId,IAAIC,KAAK,CAAC,CAAC,CAC5BjB,OAAOC,OAAO,CACnB;CAEA,OAAOqB,MAAM9B,KAAKQ,QAAQgB,QAAQ,CAACU,SAASK,IAAIf,GAAG,CAAC,CAAC,CAACa,KAAKvC,WAAW,EAACA,MAAK,EAAE;AAChF;;;;AAKA,SAAgB0C,yBACdV,OACAW,cAC6B;CAC7B,IAAMjB,MAAMiB,aAAahB,KAAK;CAM9B,OAJKD,MAIEM,MAAM7B,YAAY0B,IAAIH,GAAG,CAAC,EAAEa,KAAKvC,WAAW,EAACA,MAAK,EAAE,KAAK,CAAA,IAHvD,CAAA;AAIX;;;;AAKA,SAAgB4C,sBAAsBC,OAAeC,QAA4C;CAC/F,OAAOA,OAAO9C,MAAM+C,YAAY,CAAC,CAACC,SAASH,MAAMlB,KAAK,CAAC,CAACoB,YAAY,CAAC;AACvE;ACzFA,SAAOkB,2BAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAGL,EAAAZ,WAAAC,WAAAC,gBAAAC,SAAAC,UAAAE,SAAAC,aAAAC,QAAAH,UAUIK,OACJG,KAAWlB,MAAM,GACjB,CAAAmB,SAAAC,cAA8BnB,SAAS,EAAK,GAACoB;CAAA,AAAAL,EAAA,OAAAP,WAS1CY,KAAAL,EAAA,MANDK,MAAAC,cAAA;EAGE,AAAIA,cAAc,QAChBb,SAASa,SAAS;CACnB,GACFN,EAAA,KAAAP,UAAAO,EAAA,KAAAK;CAPH,IAAAE,oBAA0BF,IAcRG,KAAAhB,UAAA,SAAAiB,KAAAA,GAA4BC;CAAA,AAAAV,EAAA,OAAAW,OAAAC,IAAA,2BAAA,KAOlCF,WAAMN,WAAW,EAAK,GAACJ,EAAA,KAAAU,MAAAA,KAAAV,EAAA;CAAA,IAAAa;CAAA,AAAAb,EAAA,OAAAW,OAAAC,IAAA,2BAAA,KAEtBC,WAAMT,WAAW,EAAI,GAACJ,EAAA,KAAAa,MAAAA,KAAAb,EAAA;CAKxB,IAAAc,KAAAX,UAAAM,KAAAA,IAAAf,OAA2BqB;CAClC,OADkCf,EAAA,OAAAX,aAAAW,EAAA,OAAAV,aAAAU,EAAA,OAAAT,kBAAAS,EAAA,OAAAO,qBAAAP,EAAA,OAAAE,MAAAF,EAAA,OAAAP,YAAAO,EAAA,QAAAL,WAAAK,EAAA,QAAAJ,eAAAI,EAAA,QAAAQ,MAAAR,EAAA,QAAAc,MAAAd,EAAA,QAAAH,UAhBpCkB,KAAA,oBAAC,cAAD;EACMb;EACU,gBAAAM;EACFnB,cAAAA;EACDC;EACKC;EACHM,eAAAA;EACCV,cAAAA;EACJ,UAAA;EACF,QAAAuB;EACEjB;EACD,SAAAoB;EACMN,eAAAA;EACf,YAAA;EACSZ;EACIC;EACN,OAAAkB;CAA2B,CAAA,GAClCd,EAAA,KAAAX,WAAAW,EAAA,KAAAV,WAAAU,EAAA,KAAAT,gBAAAS,EAAA,KAAAO,mBAAAP,EAAA,KAAAE,IAAAF,EAAA,KAAAP,UAAAO,EAAA,MAAAL,SAAAK,EAAA,MAAAJ,aAAAI,EAAA,MAAAQ,IAAAR,EAAA,MAAAc,IAAAd,EAAA,MAAAH,QAAAG,EAAA,MAAAe,MAAAA,KAAAf,EAAA,KAjBFe;AAiBE;ACrBN,SAAS2C,iBAAiBC,YAAiE;CACzF,IAAMC,OAAOC,OAAOC,QAAQH,UAAU,CAAC,CAACI,KAAK,CAACR,KAAKC,YAAY;EAC7DF,IAAIxB,UAAU,EAAE;EAChByB;EACAC;CACF,EAAE;CAEF,OAAOI,KAAKI,SAASJ,OAAO,CAAC;EAACN,IAAIxB,UAAU,EAAE;EAAGyB,KAAK;EAAIC,OAAO;CAAE,CAAC;AACtE;AAEA,SAASS,sBAAsBL,MAA2D;CACxF,OAAOA,KAAKM,QAA6CP,YAAYQ,QAAQ;EAC3E,IAAMZ,MAAMY,IAAIZ,IAAIa,KAAK,GACnBZ,QAAQW,IAAIX,MAAMY,KAAK;EAM7B,OAJIb,OAAOC,UACTG,WAAWJ,OAAOC,QAGbG;CACT,GAAG,CAAC,CAAC;AACP;AAEA,SAASU,oBAAoBF,KAA4B;CACvD,OAAO,CAACA,IAAIZ,IAAIa,KAAK,KAAK,CAACD,IAAIX,MAAMY,KAAK;AAC5C;AAEA,SAASE,iCAAyD;CAChE,OAAO;EAACf,KAAK;EAAMC,OAAO;CAAI;AAChC;AAEA,SAASe,2BAA2BX,MAA2D;CAC7F,IAAMa,0CAA0B,IAAID,IAAoC,GAClEE,2BAAW,IAAIC,IAAY;CAoCjC,OAlCAf,KAAKgB,SAAST,KAAKU,UAAU;EAC3B,IAAMC,aAAqC;GAACvB,KAAK;GAAMC,OAAO;EAAI,GAC5DD,MAAMY,IAAIZ,IAAIa,KAAK,GACnBZ,QAAQW,IAAIX,MAAMY,KAAK;EAE7B,IAAIb,KAAK;GACP,AAAImB,SAASK,IAAIxB,GAAG,IAClBuB,WAAWvB,MAAM,0CAEjBmB,SAASM,IAAIzB,GAAG;GAGlB,IAAM0B,WAAWrC,+BAA+BuB,IAAIZ,GAAG;GAEvD,AAAI,CAACuB,WAAWvB,OAAO0B,aAAa,aAClCH,WAAWvB,MAAM,yCACR,CAACuB,WAAWvB,OAAO0B,aAAa,cACzCH,WAAWvB,MAAM;EAErB,OAAO,AAAIC,UACTsB,WAAWvB,MAAM;EAGnB,IAAM2B,aAAarC,iCAAiCsB,IAAIX,KAAK;EAQ7DiB,CANKlB,OAAOc,oBAAoBF,GAAG,MAAMe,eAAe,UACtDJ,WAAWtB,QAAQ,2CACV0B,eAAe,cACxBJ,WAAWtB,QAAQ,0CAGrBiB,wBAAwBU,IAAIN,OAAOC,UAAU;CAC/C,CAAC,GAEML;AACT;AAEA,SAASW,iCACPN,YACS;CACT,OAAOO,MAAMC,KAAKR,WAAWS,OAAO,CAAC,CAAC,CAACC,MAAM,EAACjC,KAAKC,YAAWD,OAAOC,KAAK;AAC5E;AAEA,SAASiC,gCAAgCC,aAA2C;CAKlF,OAJI,CAACL,MAAMM,QAAQD,WAAW,KAAK,CAACA,YAAYE,MAAM5E,mBAAmB,IAChE,KAGFC,YAAYyE,WAAW;AAChC;AAIA,SAAOK,YAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,GAOL,EAAAC,UAAAC,2BAAAC,0BAAAC,gBAAAC,IAAA/C,UAMIwC,OAFFM,iBAAAC,OAAAC,KAAAA,KAAAD,IAGF,EAAAE,MAAYlE,eAAeE,uBAAuB,GAClD,EAAAiE,MAAAC,aAAyBjE,eAAe,GAACkE;CAAA,AAAAX,EAAA,OAAAU,WACoCC,KAAAX,EAAA,MAAvCW,KAAA1D,8BAA8ByD,QAAQ,GAACV,EAAA,KAAAU,UAAAV,EAAA,KAAAW;CAA7E,IAAAC,kBAAsCD,IACtCE,UAAgB7E,MAAM,GACtB8E,gBAAsB9E,MAAM,GAC5B+E,aAAmB/E,MAAM,GAACgF;CAAA,AAAAhB,EAAA,OAAAzC,MAAAG,aAIiEsD,KAAAhB,EAAA,MAAxCgB,WAAMvD,iBAAiBF,MAAKG,UAAW,GAACsC,EAAA,KAAAzC,MAAAG,YAAAsC,EAAA,KAAAgB;CAA3F,IAAA,CAAAC,eAAAC,oBAA0ChF,SAAS8E,EAAwC,GAACG;CAAA,AAAAnB,EAAA,OAAAzC,MAAA6D,WACbD,KAAAnB,EAAA,MAA5BmB,WAAME,OAAO9D,MAAK6D,QAAS,GAACpB,EAAA,KAAAzC,MAAA6D,UAAApB,EAAA,KAAAmB;CAA/E,IAAA,CAAAG,eAAAC,oBAA0CrF,SAASiF,EAA4B,GAACK;CAAA,AAAAxB,EAAA,OAAAiB,gBAE/BO,KAAAxB,EAAA,MAAzCwB,KAAAlD,2BAA2B2C,aAAa,GAACjB,EAAA,KAAAiB,eAAAjB,EAAA,KAAAwB;CADjD,IAAAC,uBACQD,IAEPE;CAAA,AAAA1B,EAAA,OAAAzC,QAEmDmE,KAAA1B,EAAA,MAA3B0B,KAAA7E,qBAAqBU,KAAK,GAACyC,EAAA,KAAAzC,OAAAyC,EAAA,KAAA0B;CACpD,IAAAG,iBAAuBxB,kBAAA,CADEqB,IACyBI;CAAA,AAAA9B,EAAA,QAAAsB,gBAC4BQ,KAAA9B,EAAA,OAA9C8B,KAAAhF,gCAAgCwE,aAAa,GAACtB,EAAA,MAAAsB,eAAAtB,EAAA,MAAA8B;CAA9E,IAAAC,0BAAgCD,IAChCE,oBAA0B3B,kBAAA0B,yBAE1BE,mBAAyBhB,cAAcA,cAAalD,SAAU,IAAEmE;CAAA,AAAAlC,EAAA,QAAAyB,wBAAAzB,EAAA,QAAAiC,oBAE9DC,KAAAD,oBAAA,CAAqB9C,iCAAiCsC,oBAAoB,GAACzB,EAAA,MAAAyB,sBAAAzB,EAAA,MAAAiC,kBAAAjC,EAAA,MAAAkC,MAAAA,KAAAlC,EAAA;CAD7E,IAAAmC,kBAAwBP,EACtBM,IACDE;CAAA,AAAApC,EAAA,QAAAE,YAAAF,EAAA,QAAAG,6BAGCiC,MAAAC,aAAA;EACE,IAAA1E,OAAa0E,SAAQtE,SAARsE,WAA6B5E,iBAAiB,CAAC,CAAC;EAE7DyD,iBAAiBvD,IAAI;EAGrB,IAAA4E,kBAAwBpD,iCADGb,2BAA2BX,IACG2E,CAAkB;EAG3E,AAFAnC,0BAA0BoC,eAAe,IAErCF,SAAQtE,WAAY,KAApB,CAA0BwE,oBAC5BrC,SAAS,CAAC,YAAY,GAAGlC,sBAAsBqE,QAAQ,CAAC;CACzD,GACFrC,EAAA,MAAAE,UAAAF,EAAA,MAAAG,2BAAAH,EAAA,MAAAoC,MAAAA,KAAApC,EAAA;CAbH,IAAAwC,sBAA4BJ,IAe3BK;CAAA,AAAAzC,EAAA,QAAAE,WAKEuC,KAAAzC,EAAA,OAFDyC,MAAAC,UAAA;EACExC,SAAS,CAAC,YAAY,OAAO,GAAGwC,MAAKC,cAAcpF,KAAM;CAAC,GAC3DyC,EAAA,MAAAE,UAAAF,EAAA,MAAAyC;CAHH,IAAAG,oBAA0BH,IAKzBI;CAAA,AAAA7C,EAAA,QAAAE,WAQE2C,MAAA7C,EAAA,OALD6C,OAAAC,YAAA;EACE5C,SACE,CAAC,YAAY,aAAa,GAC1BnD,8BAA8B2F,QAAKC,cAAcpF,KAAM,CACzD;CAAC,GACFyC,EAAA,MAAAE,UAAAF,EAAA,MAAA6C;CANH,IAAAE,0BAAgCF,KAQ/BG;CAAA,AAAAhD,EAAA,QAAAE,YAAAF,EAAA,QAAAI,4BAGC4C,OAAAC,YAAA;EACE,IAAAC,WAAiBR,QAAKC,cAAcpF,OACpC4F,YAAkBT,QAAKC,cAAcS;EAErC7B,iBAAiB2B,QAAQ;EACzB,IAAAG,4BAAgCvG,gCAAgCoG,QAAQ;EAGxE,AAFA9C,yBAAyBwB,EAAQG,yBAAwB,GAErDuB,OAAMC,SAAUJ,SAAS,KAC3BjD,SAAS,CAAC,UAAU,GAAGiD,SAAS;CACjC,GACFnD,EAAA,MAAAE,UAAAF,EAAA,MAAAI,0BAAAJ,EAAA,MAAAgD,OAAAA,MAAAhD,EAAA;CAZH,IAAAwD,uBAA6BR,KAc5BS;CAAA,AAAAzD,EAAA,QAAAiB,iBAAAjB,EAAA,QAAAwC,uBAGCiB,OAAA7E,OAAA8E,OAAAC,gBAAA;EACE,IAAAC,aAAiB3C,cAAanD,KAAKI,KAAA2F,aACjCA,aAAajF,QAAb;GAAA,GAAyBV;IAAMwF,QAAQP;EAAe,IAAtDjF,GACF;EAEAsE,oBAAoBH,UAAQ;CAAC,GAC9BrC,EAAA,MAAAiB,eAAAjB,EAAA,MAAAwC,qBAAAxC,EAAA,MAAAyD,OAAAA,MAAAzD,EAAA;CAPH,IAAA8D,wBAA8BL,KAS7BM;CAAA,AAAA/D,EAAA,QAAAmC,mBAAAnC,EAAA,QAAAiB,iBAAAjB,EAAA,QAAAwC,uBAEsCuB,YAAA;EAChC5B,mBAILK,oBAAoB,CAAA,GAAIvB,eAAe;GAAA5D,IAAKxB,UAAU,EAAE;GAACyB,KAAO;GAAEC,OAAS;EAAE,CAAC,CAAC;CAAC,GACjFyC,EAAA,MAAAmC,iBAAAnC,EAAA,MAAAiB,eAAAjB,EAAA,MAAAwC,qBAAAxC,EAAA,MAAA+D,OAAAA,MAAA/D,EAAA;CAND,IAAAgE,qBAA2BD,KAM8BE;CAAA,AAAAjE,EAAA,QAAAiB,iBAAAjB,EAAA,QAAAwC,uBAGvDyB,OAAAC,YAAA;EACE,IAAAC,aAAiBlD,cAAamD,QAAQC,GAAAC,eAAiBT,eAAajF,OAAK;EAEzE4D,oBAAoBH,UAAQ;CAAC,GAC9BrC,EAAA,MAAAiB,eAAAjB,EAAA,MAAAwC,qBAAAxC,EAAA,MAAAiE,OAAAA,MAAAjE,EAAA;CALH,IAAAuE,wBAA8BN,KAO7BO;CAAA,AAAAxE,EAAA,QAAAQ,IAM8CgE,MAAAxE,EAAA,OAAtCwE,MAAAhE,EAAE,mCAAmC,GAACR,EAAA,MAAAQ,GAAAR,EAAA,MAAAwE;CAAA,IAAAC;CAAA,AAAAzE,EAAA,QAAAwE,OAAAxE,EAAA,QAAAa,WADzC4D,MAAA,oBAAC,MAAD;EAAS,IAAA;EAAiB5D,SAAAA;EAAe,MAAA;EAAU,QAAA;EAChD2D,UAAAA;CADE,CAAA,GAEExE,EAAA,MAAAwE,KAAAxE,EAAA,MAAAa,SAAAb,EAAA,MAAAyE,OAAAA,MAAAzE,EAAA;CAGS,IAAA0E,MAAA7C,iBAAA,SAAAtB,KAAAA,GAAmCoE;CAAA,AAAA3E,EAAA,QAAA6B,kBAAA7B,EAAA,QAAAQ,KACjCmE,MAAA9C,iBAAiBrB,EAAE,sCAAkD,IAArED,KAAAA,GAAsEP,EAAA,MAAA6B,gBAAA7B,EAAA,MAAAQ,GAAAR,EAAA,MAAA2E,OAAAA,MAAA3E,EAAA;CAAA,IAAA4E;CAAA,AAAA5E,EAAA,QAAAQ,IAK7BoE,MAAA5E,EAAA,OAA5C4E,MAAApE,EAAE,yCAAyC,GAACR,EAAA,MAAAQ,GAAAR,EAAA,MAAA4E;CAClD,IAAAC,MAAA,OAAOtH,MAAKuH,UAAgBC,SAAK,WAAWxH,MAAKuH,SAASC,QAA1D,IAAqEC;CAAA,AAAAhF,EAAA,QAAA4C,qBAAA5C,EAAA,QAAA0E,OAAA1E,EAAA,QAAA2E,OAAA3E,EAAA,QAAA4E,OAAA5E,EAAA,QAAA6E,OAAA7E,EAAA,QAAAa,WAT9EmE,MAAA,oBAAC,WAAD;EACE,WAAA;EACc,gBAAAN;EACE,gBAAAC;EACJ,eAAA;EACF,UAAA;EACN9D,IAAAA;EACM+B,UAAAA;EACG,aAAAgC;EACN,OAAAC;CAAqE,CAAA,GAC5E7E,EAAA,MAAA4C,mBAAA5C,EAAA,MAAA0E,KAAA1E,EAAA,MAAA2E,KAAA3E,EAAA,MAAA4E,KAAA5E,EAAA,MAAA6E,KAAA7E,EAAA,MAAAa,SAAAb,EAAA,MAAAgF,OAAAA,MAAAhF,EAAA;CAAA,IAAAiF;CAAA,AAAAjF,EAAA,QAAA6B,kBAAA7B,EAAA,QAAAQ,KACDyE,MAAApD,kBACC,oBAAC,cAAD;EAA0B,eAAA;EAAiC,MAAA;EAAQ,MAAA;EAChErB,UAAAA,EAAE,sCAAsC;CAD9B,CAAA,GAGdR,EAAA,MAAA6B,gBAAA7B,EAAA,MAAAQ,GAAAR,EAAA,MAAAiF,OAAAA,MAAAjF,EAAA;CAAA,IAAAkF;CAAA,AAAAlF,EAAA,QAAAyE,OAAAzE,EAAA,QAAAgF,OAAAhF,EAAA,QAAAiF,OAnBHC,MAAA,qBAAC,OAAD;EAAY,KAAA;EAAZ,UAAA;GACET;GAGAO;GAWCC;EAfG;KAoBEjF,EAAA,MAAAyE,KAAAzE,EAAA,MAAAgF,KAAAhF,EAAA,MAAAiF,KAAAjF,EAAA,MAAAkF,OAAAA,MAAAlF,EAAA;CAAA,IAAAmF;CAAA,AAAAnF,EAAA,QAAAQ,IAIiC2E,MAAAnF,EAAA,OAApCmF,MAAA3E,EAAE,iCAAiC,GAACR,EAAA,MAAAQ,GAAAR,EAAA,MAAAmF;CAAA,IAAAC;CAAA,AAAApF,EAAA,QAAAc,iBAAAd,EAAA,QAAAmF,OADvCC,MAAA,oBAAC,MAAD;EAAS,IAAA;EAAiBtE,SAAAA;EAAqB,MAAA;EAAU,QAAA;EACtDqE,UAAAA;CADE,CAAA,GAEEnF,EAAA,MAAAc,eAAAd,EAAA,MAAAmF,KAAAnF,EAAA,MAAAoF,OAAAA,MAAApF,EAAA;CAAA,IAAAqF;CAAA,AAAArF,EAAA,QAAAQ,IAMkD6E,MAAArF,EAAA,OAA1CqF,MAAA7E,EAAE,uCAAuC,GAACR,EAAA,MAAAQ,GAAAR,EAAA,MAAAqF;CAEhB,IAAAC,MAAA/H,MAAKuH,UAAsBrF,aAAA8F;CAAA,AAAAvF,EAAA,QAAAsF,MAACC,MAAAvF,EAAA,OAA5DuF,MAAA/F,gCAAgC8F,GAA2B,GAACtF,EAAA,MAAAsF,KAAAtF,EAAA,MAAAuF;CAAA,IAAAC;CAAA,AAAAxF,EAAA,QAAAc,iBAAAd,EAAA,QAAA+C,2BAAA/C,EAAA,QAAAqF,OAAArF,EAAA,QAAAuF,OAPrEC,MAAA,oBAAC,UAAD;EACc,eAAA;EACF,UAAA;EACN1E,IAAAA;EACMiC,UAAAA;EACG,aAAAsC;EACP,MAAA;EACC,OAAAE;CAA4D,CAAA,GACnEvF,EAAA,MAAAc,eAAAd,EAAA,MAAA+C,yBAAA/C,EAAA,MAAAqF,KAAArF,EAAA,MAAAuF,KAAAvF,EAAA,MAAAwF,OAAAA,MAAAxF,EAAA;CAAA,IAAAyF;CAAA,AAAAzF,EAAA,QAAAoF,OAAApF,EAAA,QAAAwF,OAZJC,MAAA,qBAAC,OAAD;EAAY,KAAA;EAAZ,UAAA,CACEL,KAGAI,GAJI;KAaExF,EAAA,MAAAoF,KAAApF,EAAA,MAAAwF,KAAAxF,EAAA,MAAAyF,OAAAA,MAAAzF,EAAA;CAAA,IAAA0F;CAAA,AAAA1F,EAAA,QAAAQ,IAKgCkF,MAAA1F,EAAA,OAAjC0F,MAAAlF,EAAE,8BAA8B,GAACR,EAAA,MAAAQ,GAAAR,EAAA,MAAA0F;CAAA,IAAAC;CAAA,AAAA3F,EAAA,QAAAe,cAAAf,EAAA,QAAA0F,OADpCC,MAAA,oBAAC,MAAD;EAAS,IAAA;EAAiB5E,SAAAA;EAAkB,MAAA;EAAU,QAAA;EACnD2E,UAAAA;CADE,CAAA,GAEE1F,EAAA,MAAAe,YAAAf,EAAA,MAAA0F,KAAA1F,EAAA,MAAA2F,OAAAA,MAAA3F,EAAA;CAAA,IAAA4F;CAAA,AAAA5F,EAAA,QAAAQ,IAC8CoF,MAAA5F,EAAA,OAAnC4F,MAAApF,EAAE,gCAAgC,GAACR,EAAA,MAAAQ,GAAAR,EAAA,MAAA4F;CAAA,IAAAC;CAAA,AAAA7F,EAAA,QAAA8F,OAAAC,IAAA,2BAAA,KACnDF,MAAA,oBAAC,gBAAD,EAA4B,eAAA,6BAA4B,CAAA,GAAG7F,EAAA,MAAA6F,OAAAA,MAAA7F,EAAA;CAAA,IAAAgG;CAAA,AAAAhG,EAAA,QAAA4F,MACnDI,MAAAhG,EAAA,OAFVgG,MAAA,oBAAC,WAAD;EAAkB,SAAAJ;EAA+C,WAAA;EAC/DC,UAAAA;CADM,CAAA,GAEE7F,EAAA,MAAA4F,KAAA5F,EAAA,MAAAgG;CAAA,IAAAC;CAAA,AAAAjG,EAAA,QAAA2F,OAAA3F,EAAA,QAAAgG,OANZC,MAAA,qBAAC,QAAD;EAAa,KAAA;EAAb,UAAA,CACEN,KAGAK,GAJK;KAOEhG,EAAA,MAAA2F,KAAA3F,EAAA,MAAAgG,KAAAhG,EAAA,MAAAiG,OAAAA,MAAAjG,EAAA;CAEO,IAAAkG,MAAAlE,oBAAA,SAAAzB,KAAAA,GAAsC4F;CAAA,AAAAnG,EAAA,QAAA+B,2BAAA/B,EAAA,QAAAgC,qBAAAhC,EAAA,QAAAQ,KAElD2F,MAAAnE,qBAAAD,0BACIvB,EAAE,0BAA0BuB,yBACpB,IAFZxB,KAAAA,GAEaP,EAAA,MAAA+B,yBAAA/B,EAAA,MAAAgC,mBAAAhC,EAAA,MAAAQ,GAAAR,EAAA,MAAAmG,OAAAA,MAAAnG,EAAA;CAAA,IAAAoG;CAAA,AAAApG,EAAA,QAAAwD,wBAAAxD,EAAA,QAAAe,cAAAf,EAAA,QAAAsB,iBAAAtB,EAAA,QAAAkG,OAAAlG,EAAA,QAAAmG,OALjBC,MAAA,oBAAC,WAAD;EACgB,gBAAAF;EAEZ,gBAAAC;EAIU,eAAA;EACF,UAAA;EACNpF,IAAAA;EACM,WAAA;EACAyC,UAAAA;EACL,MAAA;EACElC,OAAAA;CAAa,CAAA,GACpBtB,EAAA,MAAAwD,sBAAAxD,EAAA,MAAAe,YAAAf,EAAA,MAAAsB,eAAAtB,EAAA,MAAAkG,KAAAlG,EAAA,MAAAmG,KAAAnG,EAAA,MAAAoG,OAAAA,MAAApG,EAAA;CAAA,IAAAqG;CAAA,AAAArG,EAAA,QAAA+B,2BAAA/B,EAAA,SAAAgC,qBAAAhC,EAAA,SAAAQ,KACD6F,MAAArE,qBAAAD,2BACC,oBAAC,cAAD;EAA0B,eAAA;EAAoC,MAAA;EAAQ,MAAA;EACnEvB,UAAAA,EAAE,0BAA0BuB,yBAAyB;CAD3C,CAAA,GAGd/B,EAAA,MAAA+B,yBAAA/B,EAAA,OAAAgC,mBAAAhC,EAAA,OAAAQ,GAAAR,EAAA,OAAAqG,OAAAA,MAAArG,EAAA;CAAA,IAAAsG;CAAA,AAAAtG,EAAA,SAAAiG,OAAAjG,EAAA,SAAAoG,OAAApG,EAAA,SAAAqG,OA5BHC,MAAA,qBAAC,OAAD;EAAY,KAAA;EAAZ,UAAA;GACEL;GAQAG;GAeCC;EAxBG;KA6BErG,EAAA,OAAAiG,KAAAjG,EAAA,OAAAoG,KAAApG,EAAA,OAAAqG,KAAArG,EAAA,OAAAsG,OAAAA,MAAAtG,EAAA;CAAA,IAAAuG;CAAA,AAAAvG,EAAA,SAAAQ,IAKkC+F,MAAAvG,EAAA,QAAnCuG,MAAA/F,EAAE,gCAAgC,GAACR,EAAA,OAAAQ,GAAAR,EAAA,OAAAuG;CAAA,IAAAC;CAAA,AAAAxG,EAAA,SAAAuG,MAC/BC,MAAAxG,EAAA,QAFPwG,MAAA,oBAAC,MAAD;EAAY,MAAA;EAAU,QAAA;EACnBD,UAAAA;CADE,CAAA,GAEEvG,EAAA,OAAAuG,KAAAvG,EAAA,OAAAwG;CAAA,IAAAC;CAAA,AAAAzG,EAAA,SAAAQ,IAEqCiG,MAAAzG,EAAA,QAAzCyG,MAAAjG,EAAE,sCAAsC,GAACR,EAAA,OAAAQ,GAAAR,EAAA,OAAAyG;CAAA,IAAAC;CAAA,AAAA1G,EAAA,SAAAyG,MACrCC,MAAA1G,EAAA,QAFP0G,MAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EACfD,UAAAA;CADE,CAAA,GAEEzG,EAAA,OAAAyG,KAAAzG,EAAA,OAAA0G;CAAA,IAAAC;CAAA,AAAA3G,EAAA,SAAAwG,OAAAxG,EAAA,SAAA0G,OANTC,MAAA,qBAAC,OAAD;EAAY,KAAA;EAAZ,UAAA,CACEH,KAGAE,GAJI;KAOE1G,EAAA,OAAAwG,KAAAxG,EAAA,OAAA0G,KAAA1G,EAAA,OAAA2G,OAAAA,MAAA3G,EAAA;CAAA,IAAA4G;CAAA,AAAA5G,EAAA,SAAAiB,iBAAAjB,EAAA,SAAAyB,wBAAAzB,EAAA,SAAA8D,yBAAA9D,EAAA,SAAAuE,yBAAAvE,EAAA,SAAAK,kBAAAL,EAAA,SAAAY,mBAAAZ,EAAA,SAAAQ,KAGLoG,MAAA3F,cAAanD,KAAK+I,OAAAC,YAAA;EACjB,IAAAjI,aAAmB4C,qBAAoBsF,IAAKnI,OAAyC,KAA/BP,+BAA+B,GACrF2I,kBAAwB3G,iBAAiBxB,WAAUtB,QAA3B,MACxB0J,2BAAiCpI,WAAUvB,OAAV0J;EAAiC,OAGhE,qBAAC,OAAD;GAAyB,KAAA;GAAzB,UAAA,CACE,qBAAC,MAAD;IAAY,OAAA;IAAc,KAAA;IAA1B,UAAA;KACE,oBAAC,KAAD;MAAW,MAAA;MACT,UAAA,oBAAC,4BAAD;OACa,WAAApI,UAAQ;OACR,WAAA4B,EAAE,mCAAmC;OAChC,gBAAA3B,WAAUvB,MAAOkD,EAAE3B,WAAUvB,GAAgB,IAA7CiD,KAAAA;OACP,SAAAqB,EAAQ/C,WAAUvB;OACjB,WAAA4J,gBAAepD,sBAAsBlF,SAAO,OAAOuE,WAAS;OAC7D,SAAAjG,uBAAuB0D,iBAAiBK,eAAerC,OAAK;OACxD,aAAA4B,EAAE,yCAAyC;OACjD,QAAA;OACA,OAAAtC,MAAGZ;MAAI,CAAA;KAVd,CAAA;KAaJ,oBAAC,KAAD;MAAW,MAAA;MACT,UAAA,oBAAC,4BAAD;OACa,WAAAkD,EAAE,qCAAqC;OAClC,gBAAAwG,kBAAkBxG,EAAEwG,eAA2B,IAA/CzG,KAAAA;OACP,SAAAqB,EAAQoF;OACP,WAAAG,gBAAerD,sBAAsBlF,SAAO,SAASuE,WAAS;OAC/D,SAAAhG,yBAAyByD,iBAAiB1C,MAAGZ,GAAI;OAC7C,aAAAkD,EAAE,2CAA2C;OACnD,QAAA;OACA,OAAAtC,MAAGX;MAAM,CAAA;KAThB,CAAA;KAYJ,oBAAC,UAAD;MACY,UAAAa,oBAAoBF,KAAiC,KAAzB+C,cAAalD,WAAY;MACzD5C,MAAAA;MACD,MAAA;MACI,eAAMoJ,sBAAsB3F,OAAK;MACrC,MAAA;MACS,cAAA,EAAAwI,SAAU5G,EAAE,gCAAgC,EAAC;MACtD,MAAA;KAAQ,CAAA;IAjCZ;GAoCJyG,CAAAA,GAAAA,4BACC,oBAAC,cAAD;IAEI,eAAApI,WAAUvB,MAAV,qCAAA;IAII,MAAA;IACD,MAAA;IAEJkD,UAAAA,EAAEyG,wBAAwB;GAThB,CAAA,CAtCX;EAAM/I,GAAAA,MAAGb,EAAT;CAkDE,CAEX,GAAC2C,EAAA,OAAAiB,eAAAjB,EAAA,OAAAyB,sBAAAzB,EAAA,OAAA8D,uBAAA9D,EAAA,OAAAuE,uBAAAvE,EAAA,OAAAK,gBAAAL,EAAA,OAAAY,iBAAAZ,EAAA,OAAAQ,GAAAR,EAAA,OAAA4G,OAAAA,MAAA5G,EAAA;CAAA,IAAAqH;CAAA,AAAArH,EAAA,SAAA4G,MACIS,MAAArH,EAAA,QA5DRqH,MAAA,oBAAC,OAAD;EAAY,KAAA;EACTT,UAAAA;CADG,CAAA,GA4DE5G,EAAA,OAAA4G,KAAA5G,EAAA,OAAAqH;CAIM,IAAAC,MAAA,CAACnF,iBAAeoF;CAAA,AAAAvH,EAAA,SAAAQ,IAImB+G,MAAAvH,EAAA,QAAvCuH,MAAA/G,EAAE,oCAAoC,GAACR,EAAA,OAAAQ,GAAAR,EAAA,OAAAuH;CAAA,IAAAC;CAAA,AAAAxH,EAAA,SAAAmC,mBAAAnC,EAAA,SAAAQ,KAE3CgH,MAAArF,kBAAA,OAAA,EAAAiF,SAEc5G,EAAE,kDAAkD,EAAC,GAACR,EAAA,OAAAmC,iBAAAnC,EAAA,OAAAQ,GAAAR,EAAA,OAAAwH,OAAAA,MAAAxH,EAAA;CAAA,IAAAyH;CAAA,AAAAzH,EAAA,SAAAgE,sBAAAhE,EAAA,SAAAsH,OAAAtH,EAAA,SAAAuH,OAAAvH,EAAA,SAAAwH,OAV1EC,MAAA,oBAAC,MAAD,EAAA,UACE,oBAAC,UAAD;EACY,UAAAH;EACJrM,MAAAA;EACD,MAAA;EACI+I,SAAAA;EACH,MAAAuD;EAEJ,cAAAC;EAIG,MAAA;CAAQ,CAAA,EAZZ,CAAA,GAcExH,EAAA,OAAAgE,oBAAAhE,EAAA,OAAAsH,KAAAtH,EAAA,OAAAuH,KAAAvH,EAAA,OAAAwH,KAAAxH,EAAA,OAAAyH,OAAAA,MAAAzH,EAAA;CAAA,IAAA0H;CAAA,AAAA1H,EAAA,SAAA2G,OAAA3G,EAAA,SAAAqH,OAAArH,EAAA,SAAAyH,OAtFTC,MAAA,qBAAC,OAAD;EAAY,KAAA;EAAZ,UAAA;GACEf;GASAU;GA8DAI;EAxEI;KAuFEzH,EAAA,OAAA2G,KAAA3G,EAAA,OAAAqH,KAAArH,EAAA,OAAAyH,KAAAzH,EAAA,OAAA0H,OAAAA,MAAA1H,EAAA;CAAA,IAAA2H;CACF,OADE3H,EAAA,SAAAkF,OAAAlF,EAAA,SAAAyF,OAAAzF,EAAA,SAAAsG,OAAAtG,EAAA,SAAA0H,OA5JVC,MAAA,qBAAC,OAAD;EAAY,KAAA;EAAZ,UAAA;GACEzC;GAsBAO;GAeAa;GA+BAoB;EArEI;KA6JE1H,EAAA,OAAAkF,KAAAlF,EAAA,OAAAyF,KAAAzF,EAAA,OAAAsG,KAAAtG,EAAA,OAAA0H,KAAA1H,EAAA,OAAA2H,OAAAA,MAAA3H,EAAA,MA7JR2H;AA6JQ;AC7XZ,SAAO+B,cAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAd,mBAAAC,aAAAC,YAAAC,QAAAC,IAAAC,cAAAC,UAAAC,UAAAG,oBAAAK,OAUIH,OADFF,qBAAAK,OAAAC,KAAAA,KAAAD,IAEFE,QAAc9B,SAAS,GACvB,EAAA+B,MAAYzB,eAAeC,uBAAuB,GAClD,CAAAc,SAAAW,cAA8B7B,SAASe,YAAY,GACnD,CAAAe,cAAAC,mBAAwC/B,SAAS,EAAK,GACtD,CAAAgC,gBAAAC,qBAA4CjC,SAAS,EAAK,GAC1D,CAAAkC,mBAAAC,wBAAkDnC,SAAS,EAAK,GAChE,CAAAoC,iBAAAC,sBAA8CrC,SAAS,EAAK,GAACsC;CAAA,AAAAf,EAAA,OAAAW,qBAAAX,EAAA,OAAAa,mBAAAb,EAAA,OAAAL,WAC7CoB,KAAAhC,oBAAoBY,OAA4B,KAAhDgB,qBAAAE,iBAAoEb,EAAA,KAAAW,mBAAAX,EAAA,KAAAa,iBAAAb,EAAA,KAAAL,SAAAK,EAAA,KAAAe,MAAAA,KAAAf,EAAA;CAApF,IAAAgB,UAAgBD,IAAoEE;CAAA,AAAAjB,EAAA,OAAAkB,OAAAC,IAAA,2BAAA,KAElBF,MAAAG,MAAAC,cAAA;EAChEf,YACEgB,mBACEpD,aAAa,CAACF,GAAGoD,MAAMnD,IAAIoD,SAAS,CAAC,CAAC,GAAGC,cAAc,CAC3D;CAAC,GACFtB,EAAA,KAAAiB,MAAAA,KAAAjB,EAAA;CALD,IAAAuB,sBAA4BN,IAKtBO;CAAA,AAAAxB,EAAA,OAAAX,cAAAW,EAAA,OAAAgB,WAAAhB,EAAA,OAAAN,YAAAM,EAAA,OAAAI,SAAAJ,EAAA,OAAAL,WAIJ6B,KAAA,OAAAC,UAAA;EAGE,IAFAA,MAAKC,eAAgB,GAEjBV,SAAO;GACTN,kBAAkB,EAAI;GAAC;EAAA;EAIzBF,gBAAgB,EAAI;EAEpB,IAAA;GAEEA,AADA,MAAMd,SAASC,OAAO,GACtBa,gBAAgB,EAAK;EAAC,SAAAmB,IAAA;GACfC,IAAAA,QAAAA;GAGPxB,AAFAI,gBAAgB,EAAK,GACrBqB,QAAOD,MAAOA,KAAK,GACnBxB,MAAK0B,KAAM;IAAAC,UACC;IAAIC,QACN;IAAOC,OACR5C;GACT,CAAC;EAAC;CACH,GACFW,EAAA,KAAAX,YAAAW,EAAA,KAAAgB,SAAAhB,EAAA,KAAAN,UAAAM,EAAA,KAAAI,OAAAJ,EAAA,KAAAL,SAAAK,EAAA,MAAAwB,MAAAA,KAAAxB,EAAA;CAxBH,IAAAkC,eAAqBV,IAiCDG,KAAApB,eAAAJ,KAAAA,IAAAV,UACP0C,KAAA5B,eAAAJ,KAAAA,IAAAV,UAAmC2C;CAAA,AAAApC,EAAA,QAAAS,kBAAAT,EAAA,QAAAL,WAMxCyC,KAAA,oBAAC,KAAD;EAAoB,eAAA;EAClB,UAAA,oBAAC,aAAD;GACYb,UAAAA;GACiBX,2BAAAA;GACDE,0BAAAA;GACVL;GACTd,OAAAA;EAAO,CAAA;CANd,CAAA,GAQEK,EAAA,MAAAS,gBAAAT,EAAA,MAAAL,SAAAK,EAAA,MAAAoC,MAAAA,KAAApC,EAAA;CAAA,IAAAqC;CAAA,AAAArC,EAAA,QAAAO,gBAAAP,EAAA,QAAAP,YAAAO,EAAA,QAAAH,sBAAAG,EAAA,QAAAK,KAEHgC,KAAAxC,sBACC,oBAAC,UAAD;EACYU,UAAAA;EACL,MAAA;EACId,SAAAA;EACH,MAAAY,EAAE,2BAA2B;EAC9B,MAAA;CAAQ,CAAA,GAEhBL,EAAA,MAAAO,cAAAP,EAAA,MAAAP,UAAAO,EAAA,MAAAH,oBAAAG,EAAA,MAAAK,GAAAL,EAAA,MAAAqC,MAAAA,KAAArC,EAAA;CAAA,IAAAsC;CAAA,AAAAtC,EAAA,QAAAb,qBAAAa,EAAA,QAAAZ,eAAAY,EAAA,QAAAO,gBACD+B,KAAA,oBAAC,UAAD;EACenD,eAAAA;EACHoB,UAAAA;EACDA,SAAAA;EACJ,MAAA;EACCnB,MAAAA;EACD,MAAA;CAAQ,CAAA,GACbY,EAAA,MAAAb,mBAAAa,EAAA,MAAAZ,aAAAY,EAAA,MAAAO,cAAAP,EAAA,MAAAsC,MAAAA,KAAAtC,EAAA;CAAA,IAAAuC;CAAA,AAAAvC,EAAA,QAAAqC,MAAArC,EAAA,QAAAsC,MAjBJC,KAAA,qBAAC,MAAD;EAAW,KAAA;EAAW,SAAA;EAAuB,YAAA;EAA7C,UAAA,CACGF,IASDC,EAVG;KAkBEtC,EAAA,MAAAqC,IAAArC,EAAA,MAAAsC,IAAAtC,EAAA,MAAAuC,MAAAA,KAAAvC,EAAA;CAAA,IAAAwC;CAAA,AAAAxC,EAAA,QAAAkC,gBAAAlC,EAAA,QAAAoC,MAAApC,EAAA,QAAAuC,MA7BXC,MAAA,oBAAC,MAAD;EAAM,WAAA;EAAmB,SAAA;EACvB,UAAA,qBAAA,QAAA;GAAgBN,UAAAA;GAAhB,UAAA,CACEE,IASAG,EAmBK;;CA9BJ,CAAA,GA+BEvC,EAAA,MAAAkC,cAAAlC,EAAA,MAAAoC,IAAApC,EAAA,MAAAuC,IAAAvC,EAAA,MAAAwC,OAAAA,MAAAxC,EAAA;CAAA,IAAAyC;CACA,OADAzC,EAAA,QAAAV,UAAAU,EAAA,QAAAT,MAAAS,EAAA,QAAAwC,OAAAxC,EAAA,QAAA2B,MAAA3B,EAAA,QAAAmC,MAxCTM,MAAA,oBAAC,UAAD;EACwB,sBAAA;EACdnD;EACJC;EACY,gBAAAoC;EACP,SAAAQ;EACA,SAAA;EACF,OAAA;EAEPK,UAAAA;CATK,CAAA,GAyCExC,EAAA,MAAAV,QAAAU,EAAA,MAAAT,IAAAS,EAAA,MAAAwC,KAAAxC,EAAA,MAAA2B,IAAA3B,EAAA,MAAAmC,IAAAnC,EAAA,MAAAyC,OAAAA,MAAAzC,EAAA,KAzCTyC;AAyCS;AC7Gb,SAASa,kBAAkBD,SAA+C;CACxE,OAAO;EACLE,KAAKF,QAAQE;EACbC,OAAOH,QAAQG;EACfC,YAAYJ,QAAQI;EACpBC,UAAUL,QAAQK;EAClBC,UAAUN,QAAQM;CACpB;AACF;AAEA,SAAOC,kBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAZ,UAAAC,UAAAC,SAAAW,mBAAsDH,OACtD,EAAAI,MAAYrB,eAAeC,uBAAuB,GAClD,EAAAqB,kBAAwBpB,qBAAqB,GAACqB;CAAA,AAAAL,EAAA,OAAAE,iBACsBG,KAAAL,EAAA,MAAjCK,KAAAb,kBAAkBU,cAAc,GAACF,EAAA,KAAAE,gBAAAF,EAAA,KAAAK;CAApE,IAAAC,eAAmCD,IAAoDE;CAAA,AAAAP,EAAA,OAAAV,YAAAU,EAAA,OAAAI,iBAGrFG,KAAA,OAAAhB,YAAA;EAEED,AADA,MAAMc,cAAcb,OAAO,GAC3BD,SAAS;CAAC,GACXU,EAAA,KAAAV,UAAAU,EAAA,KAAAI,eAAAJ,EAAA,KAAAO,MAAAA,KAAAP,EAAA;CAJH,IAAAQ,eAAqBD,IAMpBE;CAAA,AAAAT,EAAA,OAAAG,IAK+CM,KAAAT,EAAA,MAA/BS,KAAAN,EAAE,4BAA4B,GAACH,EAAA,KAAAG,GAAAH,EAAA,KAAAS;CAAA,IAAAC;CAAA,AAAAV,EAAA,OAAAG,IACJO,KAAAV,EAAA,MAA5BU,KAAAP,EAAE,yBAAyB,GAACH,EAAA,KAAAG,GAAAH,EAAA,KAAAU;CAAA,IAAAC;CAAA,AAAAX,EAAA,OAAAG,IACVQ,KAAAX,EAAA,OAAtBW,KAAAR,EAAE,mBAAmB,GAACH,EAAA,KAAAG,GAAAH,EAAA,MAAAW;CAAA,IAAAC;CAM9B,OAN8BZ,EAAA,QAAAQ,gBAAAR,EAAA,QAAAM,gBAAAN,EAAA,QAAAX,YAAAW,EAAA,QAAAS,MAAAT,EAAA,QAAAU,MAAAV,EAAA,QAAAW,MAJhCC,KAAA,oBAAC,eAAD;EACoB,mBAAA;EACL,aAAAH;EACD,YAAAC;EACJ,QAAAC;EACL,IAAA;EACWL;EACJjB;EACAmB,UAAAA;EACV,oBAAA;CAAkB,CAAA,GAClBR,EAAA,MAAAQ,cAAAR,EAAA,MAAAM,cAAAN,EAAA,MAAAX,UAAAW,EAAA,MAAAS,IAAAT,EAAA,MAAAU,IAAAV,EAAA,MAAAW,IAAAX,EAAA,MAAAY,MAAAA,KAAAZ,EAAA,KAVFY;AAUE;ACpCN,SAAOU,oBAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAA6B,EAAAP,YAAAC,SAAAC,WAAAC,iBAAAE,IAMlC,EAAAG,MAAYX,eAAeC,uBAAuB,GAACW;CAAA,AAAAH,EAAA,OAAAN,aAQ5CS,KAAAH,EAAA,MAFaG,KAAA,EAAAC,UACFV,WACZ,GAACM,EAAA,KAAAN,YAAAM,EAAA,KAAAG;CAAA,IAAAE;CAAA,AAAAL,EAAA,OAAAE,IAKwCG,KAAAL,EAAA,MAAjCK,KAAAH,EAAE,8BAA8B,GAACF,EAAA,KAAAE,GAAAF,EAAA,KAAAK;CAAA,IAAAC;CAAA,AAAAN,EAAA,OAAAN,cAAAM,EAAA,OAAAJ,aAAAI,EAAA,OAAAK,MAJ1BC,KAAA;EAAAF,UACHV;EAAUa,SACXb;EAAUc,SACVZ;EAASa,MACZJ;EAAiCK,MACjC;CACR,GAACV,EAAA,KAAAN,YAAAM,EAAA,KAAAJ,WAAAI,EAAA,KAAAK,IAAAL,EAAA,KAAAM,MAAAA,KAAAN,EAAA;CAAA,IAAAW;CAAA,AAAAX,EAAA,OAAAG,MAAAH,EAAA,OAAAM,MAVKK,KAAA;EAAAC,cACQT;EAEbU,eACcP;CAOjB,GAACN,EAAA,KAAAG,IAAAH,EAAA,KAAAM,IAAAN,EAAA,MAAAW,MAAAA,KAAAX,EAAA;CAAA,IAAAc;CAAA,AAAAd,EAAA,QAAAE,IAC+BY,KAAAd,EAAA,OAAxBc,KAAAZ,EAAE,qBAAqB,GAACF,EAAA,MAAAE,GAAAF,EAAA,MAAAc;CAEvB,IAAAC,KAAArB,aAAAsB,KAAAA,IAAArB,SAAgCsB;CAAA,AAAAjB,EAAA,QAAAE,KAAAF,EAAA,QAAAH,gBAGtCoB,KAAAf,EAAE,6BAA6B,EAAAgB,OAAQrB,aAAY,CAAC,GAACG,EAAA,MAAAE,GAAAF,EAAA,MAAAH,cAAAG,EAAA,MAAAiB,MAAAA,KAAAjB,EAAA;CAAA,IAAAmB;CAAA,AAAAnB,EAAA,QAAAiB,KACjDE,KAAAnB,EAAA,OAFPmB,KAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EACfF,UAAAA;CADE,CAAA,GAEEjB,EAAA,MAAAiB,IAAAjB,EAAA,MAAAmB;CAAA,IAAAC;CACA,OADApB,EAAA,QAAAW,MAAAX,EAAA,QAAAc,MAAAd,EAAA,QAAAe,MAAAf,EAAA,QAAAmB,MApBTC,KAAA,oBAAC,UAAD;EACc,eAAA;EACJ,QAAAT;EAYA,QAAAG;EACL,IAAA;EACM,SAAAC;EAETI,UAAAA;CAlBK,CAAA,GAqBEnB,EAAA,MAAAW,IAAAX,EAAA,MAAAc,IAAAd,EAAA,MAAAe,IAAAf,EAAA,MAAAmB,IAAAnB,EAAA,MAAAoB,MAAAA,KAAApB,EAAA,KArBToB;AAqBS;;;;;;ACxBb,SAAgBa,uBACdC,WACAC,SAUA;CACA,IAAM,EAACN,eAAeC,mBAAmB,IAAOC,WAAWC,eAAe,OAAMG,WAAW,CAAC,GACtF,EAACS,MAAKnB,eAAeC,uBAAuB,GAC5CmB,QAAQxB,SAAS,GACjB,EAACyB,kBAAiBnB,qBAAqB,GACvC,CAACgB,YAAYI,iBAAiBvB,SAAS,EAAK,GAC5C,CAACkB,oBAAoBM,yBAAyBxB,SAAS,EAAK,GAE5DyB,eAAe,OAAOpB,iBAAkB,YAAYA,gBAAgB,GACpEqB,eAAepB,oBAAoBD,iBAAiD,MAEpFO,iBAAiBO,cAAcO,gBAAgBD,cAE/CZ,wBAAwBd,cAAc;EACtC,OAAC0B,gBAAgB,OAAOpB,iBAAkB,WAI9C,OAAOe,EACLf,kBAAkB,IACd,qDACA,sDACJ,EAACuB,OAAOvB,cAAa,CACvB;CACF,GAAG;EAACA;EAAeoB;EAAcL;CAAC,CAAC,GAE7BH,eAAenB,kBAAkB;EACjC4B,gBAAgBD,gBAIpBD,sBAAsB,EAAI;CAC5B,GAAG,CAACE,cAAcD,YAAY,CAAC;CAiC/B,OAAO;EACLb;EACAC;EACAC,yBAlC8BhB,kBAAkB;GAC5CqB,cAIJK,sBAAsB,EAAK;EAC7B,GAAG,CAACL,UAAU,CA4BZL;EACAC,qBA3B0BjB,YAAY,YAAY;GAC9C4B,sBAAgBD,eAIpBF;kBAAc,EAAI;IAElB,IAAI;KAIFhB,AAHA,MAAMe,cAAcZ,SAAS,GAC7Ba,cAAc,EAAK,GACnBC,sBAAsB,EAAK,GAC3BjB,YAAY;IACd,SAASsB,OAAO;KAOdN,AANAO,QAAQD,MAAMA,KAAK,GACnBR,MAAMU,KAAK;MACTC,UAAU;MACVC,QAAQ;MACRC,OAAOd,EAAE,4CAA4C;KACvD,CAAC,GACDG,cAAc,EAAK;IACrB;GAfkB;EAgBpB,GAAG;GAACG;GAAcJ;GAAeG;GAAclB;GAAWa;GAAGC;GAAOX;EAAS,CAM3EK;EACAE;EACAC;EACAC;EACAX;CACF;AACF;;;;;;;;;;;ACjFA,SAAOwC,oBAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAA2B,EAAAC,eAAAC,kBAAAC,IAAAC,YAAAN,IAEhCI,mBAAAC,OAAAE,KAAAA,KAAAF,IAOA,EAAAG,MAAYf,eAAeG,uBAAuB,GAClDa,SAAepB,UAAU,GAACqB;CAAA,AAAAT,EAAA,OAAAK,UACmBI,KAAAT,EAAA,MAAxBS,KAAAZ,gBAAgBQ,OAAO,GAACL,EAAA,KAAAK,SAAAL,EAAA,KAAAS;CAA7C,IAAAC,eAAqBD,IAAwBE;CAAA,AAAAX,EAAA,OAAAQ,SAaPG,KAAAX,EAAA,MAAzBW,WAAMH,OAAMI,SAAU,CAAC,CAAC,GAACZ,EAAA,KAAAQ,QAAAR,EAAA,KAAAW;CAAA,IAAAE;CAAA,AAAAb,EAAA,OAAAE,iBAAAF,EAAA,OAAAG,oBAAAH,EAAA,OAAAW,MAAAX,EAAA,OAAAU,gBAHEG,KAAA;EAAAX;EAAAC;EAAAW,WAG3BH;EAAyBD;CAEtC,GAACV,EAAA,KAAAE,eAAAF,EAAA,KAAAG,kBAAAH,EAAA,KAAAW,IAAAX,EAAA,KAAAU,cAAAV,EAAA,KAAAa,MAAAA,KAAAb,EAAA;CAdD,IAAA,EAAAe,gBAAAC,uBAAAC,yBAAAC,qBAAAC,cAAAC,oBAAAC,YAAAX,cAAAY,uBASI5B,uBAAuBW,QAAOkB,KAAMV,EAKvC,GAACW;CAAA,AAAAxB,EAAA,OAAAO,IAQ0CiB,KAAAxB,EAAA,OAAtBwB,KAAAjB,EAAE,mBAAmB,GAACP,EAAA,KAAAO,GAAAP,EAAA,MAAAwB;CAAA,IAAAC;CAAA,AAAAzB,EAAA,QAAAO,IAGYkB,KAAAzB,EAAA,OAAtByB,KAAAlB,EAAE,mBAAmB,GAACP,EAAA,MAAAO,GAAAP,EAAA,MAAAyB;CAAA,IAAAC;CAAA,AAAA1B,EAAA,QAAAyB,KAACC,KAAA1B,EAAA,OAAjC0B,KAAA,EAAAC,SAAUF,GAAsB,GAACzB,EAAA,MAAAyB,IAAAzB,EAAA,MAAA0B;CAAA,IAAAE;CAAA,AAAA5B,EAAA,QAAAwB,MAAAxB,EAAA,QAAA0B,MAJjDE,KAAA,oBAAC,UAAD;EACc,cAAAJ;EACNvC,MAAAA;EACD,MAAA;EACS,cAAAyC;EACF,eAAA;CAA4B,CAAA,GACxC1B,EAAA,MAAAwB,IAAAxB,EAAA,MAAA0B,IAAA1B,EAAA,MAAA4B,MAAAA,KAAA5B,EAAA;CAMY,IAAA6B,KAAAd,kBAAAM,YAA4BS;CAAA,AAAA9B,EAAA,QAAAO,IAGGuB,MAAA9B,EAAA,OAAnC8B,MAAAvB,EAAE,gCAAgC,GAACP,EAAA,MAAAO,GAAAP,EAAA,MAAA8B;CAAA,IAAAC;CAAA,AAAA/B,EAAA,QAAAgB,wBAEyCe,MAAA/B,EAAA,OAApE+B,MAAAf,wBAAA,EAAAW,SAAkCX,sBAAiC,IAAnEV,KAAAA,GAAoEN,EAAA,MAAAgB,uBAAAhB,EAAA,MAAA+B;CAAA,IAAAC;CAAA,AAAAhC,EAAA,QAAAmB,gBAAAnB,EAAA,QAAA8B,OAAA9B,EAAA,QAAA+B,OAAA/B,EAAA,QAAA6B,MARtFG,MAAA,oBAAC,MAAD,EAAA,UACE,oBAAC,YAAD;EACc,eAAA;EACF,UAAAH;EACJ3C,MAAAA;EACGiC,SAAAA;EACH,MAAAW;EACD,MAAA;EACS,cAAAC;CAAoE,CAAA,EARjF,CAAA,GAUE/B,EAAA,MAAAmB,cAAAnB,EAAA,MAAA8B,KAAA9B,EAAA,MAAA+B,KAAA/B,EAAA,MAAA6B,IAAA7B,EAAA,MAAAgC,OAAAA,MAAAhC,EAAA;CAAA,IAAAiC;CAAA,AAAAjC,EAAA,QAAAkC,OAAAC,IAAA,2BAAA,KAEAF,MAAA;EAAAG,WAAY;EAAYC,QAAU;CAAI,GAACrC,EAAA,MAAAiC,OAAAA,MAAAjC,EAAA;CAAA,IAAAsC;CAAA,AAAAtC,EAAA,QAAAgC,OAAAhC,EAAA,QAAA4B,MAxBlDU,MAAA,oBAAC,cAAD;EACK,IAAA;EAED,QAAAV;EASA,MAAAI;EAYO,SAAAC;CAAuC,CAAA,GAChDjC,EAAA,MAAAgC,KAAAhC,EAAA,MAAA4B,IAAA5B,EAAA,MAAAsC,OAAAA,MAAAtC,EAAA;CAAA,IAAAuC;CAAA,AAAAvC,EAAA,QAAAsB,sBAAAtB,EAAA,QAAAiB,2BAAAjB,EAAA,QAAAkB,uBAAAlB,EAAA,QAAAoB,sBAAApB,EAAA,QAAAqB,cACDkB,MAAAnB,sBACC,oBAAC,qBAAD;EACcC;EACHJ,SAAAA;EACEC,WAAAA;EACGI,cAAAA;CAAkB,CAAA,GAEnCtB,EAAA,MAAAsB,oBAAAtB,EAAA,MAAAiB,yBAAAjB,EAAA,MAAAkB,qBAAAlB,EAAA,MAAAoB,oBAAApB,EAAA,MAAAqB,YAAArB,EAAA,MAAAuC,OAAAA,MAAAvC,EAAA;CAAA,IAAAwC;CACA,OADAxC,EAAA,QAAAsC,OAAAtC,EAAA,QAAAuC,OAlCHC,MAAA,qBAAA,YAAA,EAAA,UAAA,CACEF,KA0BCC,GAOA,EAAA,CAAA,GACAvC,EAAA,MAAAsC,KAAAtC,EAAA,MAAAuC,KAAAvC,EAAA,MAAAwC,OAAAA,MAAAxC,EAAA,KAnCHwC;AAmCG;;;;;;;;;;ACrEP,SAAOU,kBAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAA2B,EAAAC,eAAAC,kBAAAC,YAAAL,IAShC,EAAAM,MAAYZ,eAAeE,uBAAuB,GAClD,CAAAW,gBAAAC,qBAA4CjB,SAAS,EAAK,GAACkB;CAAA,AAAAR,EAAA,OAAAS,OAAAC,IAAA,2BAAA,KAUxCF,WAAMD,kBAAkB,EAAI,GAACP,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CAAA,IAAAW;CAAA,AAAAX,EAAA,OAAAK,IACEM,KAAAX,EAAA,MAAlCW,KAAAN,EAAE,+BAA+B,GAACL,EAAA,KAAAK,GAAAL,EAAA,KAAAW;CAAA,IAAAC;CAAA,AAAAZ,EAAA,OAAAW,KACxCC,KAAAZ,EAAA,MANFY,KAAA,oBAAC,UAAD;EACc,eAAA;EACNvB,MAAAA;EACD,MAAA;EACI,SAAAmB;EACH,MAAAG;CAAkC,CAAA,GACxCX,EAAA,KAAAW,IAAAX,EAAA,KAAAY;CAAA,IAAAC;CAAA,AAAAb,EAAA,OAAAE,iBAAAF,EAAA,OAAAG,oBAAAH,EAAA,OAAAI,WAGFS,KAAA,oBAAC,qBAAD;EACiBX;EACGC;EACTC;CAAO,CAAA,GAChBJ,EAAA,KAAAE,eAAAF,EAAA,KAAAG,kBAAAH,EAAA,KAAAI,SAAAJ,EAAA,KAAAa,MAAAA,KAAAb,EAAA;CAAA,IAAAc;CAAA,AAAAd,EAAA,OAAAY,MAAAZ,EAAA,QAAAa,MAfNC,KAAA,oBAAC,kBAAD;EAEI,SAAAF;EASA,MAAAC;CAIE,CAAA,GAEJb,EAAA,KAAAY,IAAAZ,EAAA,MAAAa,IAAAb,EAAA,MAAAc,MAAAA,KAAAd,EAAA;CAAA,IAAAe;CAAA,AAAAf,EAAA,QAAAM,kBAAAN,EAAA,QAAAI,WACDW,KAAAT,kBACC,oBAAC,mBAAD;EACY,gBAAMC,kBAAkB,EAAK;EAC7B,gBAAMA,kBAAkB,EAAK;EAC9BH;CAAO,CAAA,GAEnBJ,EAAA,MAAAM,gBAAAN,EAAA,MAAAI,SAAAJ,EAAA,MAAAe,MAAAA,KAAAf,EAAA;CAAA,IAAAgB;CACA,OADAhB,EAAA,QAAAc,MAAAd,EAAA,QAAAe,MAzBHC,KAAA,qBAAA,YAAA,EAAA,UAAA,CACEF,IAkBCC,EAMA,EAAA,CAAA,GACAf,EAAA,MAAAc,IAAAd,EAAA,MAAAe,IAAAf,EAAA,MAAAgB,MAAAA,KAAAhB,EAAA,KA1BHgB;AA0BG;;;;;;;;;;;;;AC7BP,MAAMkB,kBAAiD;CACrDE,UAAUJ;CACVK,SAASR;CACTS,QAAQT;CACRU,MAAMR;CACNS,UAAUnB;CACVoB,QAAQrB;CACRsB,SAASrB;CACTsB,QAAQtB;CACRuB,KAAKvB;CACLwB,QAAQf;CACRgB,UAAUhB;CACViB,MAAMjB;CACNkB,QAAQzB;CACR0B,UAAU9B;CACV+B,aAAa/B;CACbgC,KAAKhC;CACLiC,IAAIjC;CACJkC,OAAOzB;CACP0B,UAAU7B;CACV8B,MAAM5B;CACN6B,MAAM7B;CACN8B,cAAc9B;CACd+B,UAAUxC;CACVyC,UAAUzC;CACV0C,UAAUpC;CACVqC,SAASrC;CACTsC,SAASpC;CACTqC,QAAQrC;CACRsC,MAAM/C;CACNgD,QAAQhD;AACV;;;;;;;AAQA,SAAgBiD,wBAAwBC,KAA4B;CAClE,IAAMC,aAAaD,IAAIE,KAAK,CAAC,CAACC,YAAY;CAE1C,OAAOpC,gBAAgBkC,eAAelC,gBAAgBkC,WAAWG,QAAQ,MAAM,EAAE,MAAMjD;AACzF;;;;;;;;;AChCA,SAAgB8D,qBACdC,SACAC,cACuB;CACvB,IAAIZ,oBAAoBW,QAAQG,QAAQ,GACtC,OAAO;EAACP,IAAI;EAAaC,MAAM;CAAW;CAG5C,IAAIG,QAAQG,aAAa,UACvB,OAAO;EAACP,IAAI;EAAUC,MAAM;CAAQ;CAGtC,IAAIG,QAAQI,YAAY;EACtB,IAAMN,UAAUG,aAAaI,IAAIL,QAAQI,UAAU;EACnD,OAAO;GAACR,IAAIE,SAASQ,OAAON,QAAQI;GAAYP,MAAM;GAAWC;EAAO;CAC1E;CAEA,IAAIR,gBAAgBU,QAAQG,QAAQ,GAAG;EACrC,IAAMI,oBAAoBnB,kCAAkCY,QAAQG,QAAS,GACvEL,UAAUG,aAAaI,IAAIE,iBAAiB;EAClD,OAAO;GAACX,IAAIE,SAASQ,OAAOC;GAAmBV,MAAM;GAAWC;EAAO;CACzE;CAIA,OAAO;EAACF,IAAI;EAAsBC,MAAM;CAAS;AACnD;;;;;;;AAQA,SAASW,gBACPC,KACAR,cACa;CACb,IAAMU,sBAAM,IAAID,IAAY;CAC5B,KAAK,IAAMV,WAAWS,IAAIG,UACxBD,IAAIE,IAAId,qBAAqBC,SAASC,YAAY,CAAC,CAACL,EAAE;CAExD,OAAOe;AACT;AAeA,SAASK,aAAanB,MAA+B;CAGnD,OAFIA,SAAS,cAAoB,IAC7BA,SAAS,WAAiB,IACvB;AACT;AAEA,SAASoB,gBAAgBC,QAAuC;CAC9D,OAAOA,OAAOpB,SAASqB,UAAUC,SAASF,OAAOtB;AACnD;;;;;AAMA,SAASyB,uBAAuBC,MAA6BC,OAAsC;CACjG,IAAMC,YAAYR,aAAaM,KAAKzB,IAAI,IAAImB,aAAaO,MAAM1B,IAAI;CAKnE,OAJI2B,cAAc,IAIXP,gBAAgBK,IAAI,CAAC,CAACG,cAAcR,gBAAgBM,KAAK,CAAC,IAHxDC;AAIX;;;;;;AAOA,SAAgBE,oBACdd,UACAX,cACyB;CACzB,IAAM0B,uBAAO,IAAIzB,IAAmC;CACpD,KAAK,IAAMF,WAAWY,UAAU;EAC9B,IAAMgB,WAAW7B,qBAAqBC,SAASC,YAAY;EAC3D,AAAK0B,KAAKE,IAAID,SAAShC,EAAE,KACvB+B,KAAKG,IAAIF,SAAShC,IAAIgC,QAAQ;CAElC;CACA,OAAOG,MAAMC,KAAKL,KAAKM,OAAO,CAAC,CAAC,CAACC,SAASb,sBAAsB;AAClE;;;;;;;;AASA,SAAgBc,2BACdC,MACAnC,cACsB;CACtB,IAAMoC,2BAAW,IAAInC,IAAgC;CAErD,KAAK,IAAMO,OAAO2B,MAChB,KAAK,IAAMpC,WAAWS,IAAIG,UAAU;EAClC,IAAMgB,WAAW7B,qBAAqBC,SAASC,YAAY;EAC1CoC,SAAShC,IAAIuB,SAAShC,EACnC0C,KAGJD,SAASP,IAAIF,SAAShC,IAAI;GAAC,GAAGgC;GAAUb,OAAO;EAAC,CAAC;CACnD;CAIF,KAAK,IAAMN,OAAO2B,MAChB,KAAK,IAAMjC,YAAYK,gBAAgBC,KAAKR,YAAY,GAAG;EACzD,IAAMsC,UAAUF,SAAShC,IAAIF,QAAQ;EACrC,AAAIoC,YACFA,QAAQxB,SAAS;CAErB;CAGF,OAAOgB,MAAMC,KAAKK,SAASJ,OAAO,CAAC,CAAC,CAACC,SAASb,sBAAsB;AACtE;;;;;;AAOA,SAAgBmB,eACd/B,KACAgC,QACAxC,cACS;CAIT,OAHIwC,WAAAA,SAGGjC,gBAAgBC,KAAKR,YAAY,CAAC,CAAC4B,IAAIY,MAAM;AACtD;;;;;;;;AASA,SAAgBC,oBACdjC,KACAR,cACQ;CACR,IAAM0C,UAAUjB,oBAAoBjB,IAAIG,UAAUX,YAAY,CAAC,CAAC;CAKhE,OAJK0C,UAIE,GAAG3B,aAAa2B,QAAQ9C,IAAI,EAAC,GAAIoB,gBAAgB0B,OAAO,MAHtD;AAIX;;;;;;;AAQA,SAAgBC,iBACdnC,KACAR,cACmC;CACnC,OAAOyB,oBAAoBjB,IAAIG,UAAUX,YAAY,CAAC,CAAC;AACzD;;;;;;;;;;;;;AC9MA,MAAa+C,yBAAyBF,KAAK,SAASE,uBAAuBC,QAGxE;CACD,OAAO;AACT,CAAC;ACrBD,SAAgBI,wBAAwBC,UAAkC;CACxE,IAAMC,QAAQD,SAASC,SAASD,SAASE;CAEzC,OAAO,OAAOD,SAAU,YAAYA,MAAME,KAAK,IAAIF,QAAQD,SAASI;AACtE;ACmBA,SAAAwB,eAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACE,EAAAC,MAAYjB,eAAe,GAACkB;CAM3B,OAN2BH,EAAA,OAAAE,IAM3BC,KAAAH,EAAA,MAJMG,MAAAC,SACDA,KAAIP,SAAU,cAAoBK,EAAE,wBAAwB,IAC5DE,KAAIP,SAAU,WAAiBK,EAAE,oBAAoB,IAClDE,KAAIN,SAAkBO,UAAOC,SAAIJ,EAAE,sCAAsC,GACjFF,EAAA,KAAAE,GAAAF,EAAA,KAAAG,KAJMA;AAIN;AAGH,SAASI,YAAYV,MAA2D;CAG9E,OAFIA,SAAS,cAAoB,aAC7BA,SAAS,YAAkB,YACxB;AACT;AAKA,SAAAW,SAAAL,IAAA;CAAA,IAAAH,IAAAC,EAAA,CAAA,GAAkB,EAAAG,SAAAD;CAEhB,IAAIC,KAAIP,SAAU,aAAW;EAAA,IAAAY;EAA8C,OAA9CT,EAAA,OAAAU,OAAAC,IAAA,2BAAA,KAASF,KAAA,oBAAC,mBAAD,EAAwB,MAAA,WAAU,CAAA,GAAGT,EAAA,KAAAS,MAAAA,KAAAT,EAAA,IAArCS;CAAqC;CAE3E,IAAIL,KAAIP,SAAU,UAAQ;EAAA,IAAAY;EAA6C,OAA7CT,EAAA,OAAAU,OAAAC,IAAA,2BAAA,KAASF,KAAA,oBAAC,mBAAD,EAAwB,MAAA,UAAS,CAAA,GAAGT,EAAA,KAAAS,MAAAA,KAAAT,EAAA,IAApCS;CAAoC;CACvE,IAAIL,KAAIN,SAAQ;EAAA,IAAAW;EAAqD,OAArDT,EAAA,OAAAI,KAAAN,UAAqDW,KAAAT,EAAA,MAA5CS,KAAA,oBAAC,mBAAD,EAA4B,SAAAL,KAAIN,QAAQ,CAAA,GAAIE,EAAA,KAAAI,KAAAN,SAAAE,EAAA,KAAAS,KAA5CA;CAA4C;CAAA,IAAAA;CAE1B,OAF0BT,EAAA,OAAAU,OAAAC,IAAA,2BAAA,KAE9DF,KAAA,oBAAC,mBAAD,EAAwB,MAAA,UAAS,CAAA,GAAGT,EAAA,KAAAS,MAAAA,KAAAT,EAAA,IAApCS;AAAoC;AAG7C,SAAAG,kBAAAT,IAAA;CAAA,IAAAH,IAAAC,EAAA,EAAA,GAA2B,EAAAH,YAAAK,IACzB,EAAAD,MAAYjB,eAAe,GAACwB;CAAA,AAAAT,EAAA,OAAAF,QAAAe,MACoCJ,KAAAT,EAAA,MAA9CS,KAAApB,kCAAkCS,QAAOe,GAAI,GAACb,EAAA,KAAAF,QAAAe,KAAAb,EAAA,KAAAS;CAAhE,IAAAK,YAAkBL,IAIPM,KAAAjB,QAAOO,UAAgBC,OAAAU;CAAA,AAAAhB,EAAA,OAAAE,IACqBc,KAAAhB,EAAA,MAAzCgB,KAAAd,EAAE,sCAAsC,GAACF,EAAA,KAAAE,GAAAF,EAAA,KAAAgB;CAAA,IAAAC;CAAA,AAAAjB,EAAA,OAAAc,YAoBlDG,KAAAjB,EAAA,MAlBAiB,MAAAC,OAAA;EAAC,IAAA,EAAAC,iBAAAD;EAAc,OACd,oBAAC,YAAD;GAAoB9B,QAAAA;GAAyB,QAAA,EAAAgC,IAAKN,UAAS;GAGzD,UAAA,oBAAC,OAAD;IACU,QAAA;IACD,OAAA;KAAAO,UACK;KAAMC,UACN;KAAQC,cACJ;KAAUC,YACZ;IACd;IACOL,OAAAA;IACF,MAAA;IAEJA,UAAAA;GAXG,CAAA;EAHG,CAAA;CAgBE,GACdnB,EAAA,KAAAc,WAAAd,EAAA,KAAAiB;CAAA,IAAAC;CACY,OADZlB,EAAA,OAAAe,MAAAf,EAAA,OAAAgB,MAAAhB,EAAA,OAAAiB,MAtBHC,KAAA,oBAAC,cAAD;EACS,OAAAH;EACG,UAAAC;EAETC,UAAAA;CAJU,CAAA,GAuBEjB,EAAA,KAAAe,IAAAf,EAAA,KAAAgB,IAAAhB,EAAA,KAAAiB,IAAAjB,EAAA,KAAAkB,MAAAA,KAAAlB,EAAA,IAvBfkB;AAuBe;AAInB,SAAAO,YAAAtB,IAAA;CAAA,IAAAH,IAAAC,EAAA,CAAA,GAAqB,EAAAG,MAAAsB,UAAAvB;CACnB,IAAIC,KAAIP,SAAU,aAAaO,KAAIN,SAAQ;EAAA,IAAAW;EACU,OADVT,EAAA,OAAAI,KAAAN,UACUW,KAAAT,EAAA,MAA5CS,KAAA,oBAAC,mBAAD,EAA4B,SAAAL,KAAIN,QAAQ,CAAA,GAAIE,EAAA,KAAAI,KAAAN,SAAAE,EAAA,KAAAS,KAA5CA;CAA4C;CACpD,IAAAA;CAAA,AAAAT,EAAA,OAAAI,KAAAP,OAE+CY,KAAAT,EAAA,MAAtBS,KAAAF,YAAYH,KAAIP,IAAK,GAACG,EAAA,KAAAI,KAAAP,MAAAG,EAAA,KAAAS;CAAA,IAAAM;CAEtC,OAFsCf,EAAA,OAAA0B,SAAA1B,EAAA,OAAAS,MAA9CM,KAAA,oBAAC,OAAD;EAAe,QAAA;EAAS,MAAAN;EACrBiB,UAAAA;CADG,CAAA,GAEE1B,EAAA,KAAA0B,OAAA1B,EAAA,KAAAS,IAAAT,EAAA,KAAAe,MAAAA,KAAAf,EAAA,IAFRe;AAEQ;AAIZ,SAAOY,2BAAAxB,IAAA;CAAA,IAAAH,IAAAC,EAAA,EAAA,GAAoC,EAAA2B,UAAAC,iBAAA1B,IAOzC,EAAAD,MAAYjB,eAAeK,uBAAuB,GAClDwC,WAAiB/B,aAAa,GAACU;CAAA,AAAAT,EAAA,OAAA6B,gBAAA7B,EAAA,OAAA4B,YAKtBnB,KAAAlB,oBAAoBqC,UAAUC,YAAY,CAAC,CAAAE,IAAKC,OAIrD,GAAChC,EAAA,KAAA6B,cAAA7B,EAAA,KAAA4B,UAAA5B,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CALL,IAAAiC,QACExB,IAK0BM;CAAA,IAAAf,EAAA,OAAAiC,SAAAjC,EAAA,OAAA8B,YAAA9B,EAAA,OAAAE,GAAA;EAE5B,IAAAgC,UAAgBD,MAAKE,MAAO,GAAGzC,CAAiB,GAChD4B,WAAiBW,MAAKE,MAAOzC,CAAiB,GAACsB;EAAA,AAAAhB,EAAA,OAAAU,OAAAC,IAAA,2BAAA,KAGTK,KAAA;GAAAoB,UAAW;GAACd,UAAY;EAAQ,GAACtB,EAAA,KAAAgB,MAAAA,KAAAhB,EAAA;EAAA,IAAAiB;EAiC9DjB,AAjC8DA,EAAA,OAAA8B,WAKlEb,KAAAjB,EAAA,MAJYiB,MAAAb,SACX,oBAAC,KAAD;GAA2B,OAAA;IAAAgC,UAAW;IAACd,UAAY;GAAQ;GACzD,UAAA,oBAAC,aAAD;IAAmBlB;IAAa,OAAA0B,SAAS1B,IAAI;GAAC,CAAA;EAD5C,GAAMA,KAAIR,GAAV,GAGLI,EAAA,KAAA8B,UAAA9B,EAAA,KAAAiB,KALHF,KAAA,qBAAC,MAAD;GAAY,OAAA;GAAc,KAAA;GAAU,OAAAC;GAAwC,MAAA;GAA5E,UAAA,CACGkB,QAAOH,IAAKd,EAIZ,GACAK,SAAQe,SAAU,KACjB,oBAAC,WAAD;IAEI,SAAA,qBAAC,OAAD;KAAY,KAAA;KAAY,SAAA;KAAxB,UAAA,CACE,oBAAC,MAAD;MAAM,OAAA;MAAY,MAAA;MAAU,QAAA;MACzBnC,UAAAA,EAAE,qCAAqC;KADrC,CAAA,GAGL,oBAAC,OAAD;MAAY,KAAA;MACToB,UAAAA,SAAQS,KAAKO,WACZ,qBAAC,MAAD;OAAY,OAAA;OAAc,KAAA;OAA1B,UAAA,CACE,oBAAC,MAAD;QAAY,MAAA;QACV,UAAA,oBAAC,UAAD,EAAgBlC,MAAAA,OAAI,CAAA;OADjB,CAAA,GAGL,oBAAC,MAAD;QAAY,MAAA;QAAI0B,UAAAA,SAAS1B,MAAI;OAAxB,CAAA,CAJF;MAA6BA,GAAAA,OAAIR,GAAjC,CAMN;KARG,CAAA,CAJF;;IAgBE,WAAA;IACV,QAAA;IAEA,UAAA,oBAAC,OAAD;KAAmB,eAAA;KAAwC,QAAA;KAAQ,MAAA;KAChE,UAAA,IAAI0B,SAAQe;IADT,CAAA;GArBA,CAAA,CAPP;MAiCErC,EAAA,KAAAiC,OAAAjC,EAAA,KAAA8B,UAAA9B,EAAA,KAAAE,GAAAF,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,OAjCPe;AAiCO;AAzDJ,SAAAiB,QAAAO,UAAA;CAAA,OAamE;EAAA3C,KAC/D2C,SAAQnB;EAAGvB,MACV0C,SAAQ1C;EAAKC,SACVyC,SAAQzC;CACnB;AAAC;ACxFL,SAAAmE,kBAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAA2B,EAAAR,KAAAC,iBAAAK,IAM1BG;CAAA,AAAAF,EAAA,OAAAN,gBAAAM,EAAA,OAAAP,OACiBS,KAAAZ,iBAAiBG,KAAKC,YAAY,GAACM,EAAA,KAAAN,cAAAM,EAAA,KAAAP,KAAAO,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAAnD,IAAAG,UAAgBD;CAChB,IAAI,CAACC,SAAO,OAAS;CAAI,IAAAC;CAkBjB,OAlBiBJ,EAAA,OAAAG,QAAAE,QAAAL,EAAA,OAAAG,QAAAG,WAGvBF,KAAA,oBAAC,KAAD;EAAU,MAAA;EACR,UAAA,oBAAC,MAAD;GAAY,MAAA;GACTD,UAAAA,QAAOE,SAAU,cAEhB,oBAAC,mBAAD,EAAwB,MAAA,WAAU,CAAA,IAChCF,QAAOE,SAAU,WAEnB,oBAAC,mBAAD,EAAwB,MAAA,UAAS,CAAA,IAC/BF,QAAOG,UACT,oBAAC,mBAAD,EAA4B,SAAAH,QAAOG,QAAQ,CAAA,IAG3C,oBAAC,mBAAD,EAAwB,MAAA,UAAS,CAAA;EAXhC,CAAA;CADH,CAAA,GAeEN,EAAA,KAAAG,QAAAE,MAAAL,EAAA,KAAAG,QAAAG,SAAAN,EAAA,KAAAI,MAAAA,KAAAJ,EAAA,IAfNI;AAeM;AAUV,SAAAU,2BAAAf,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAU,cAAAI,WAAAL,aAAAM,KAAAJ;CAAA,AAAAZ,EAAA,OAAAD,MAMqEY,eAAAX,EAAA,IAAAe,YAAAf,EAAA,IAAAU,cAAAV,EAAA,IAAAgB,MAAAhB,EAAA,IAAAY,eAAAZ,EAAA,OANjC,CAAAgB,KAAAN,aAAAC,cAAAC,iBAAAG,aAAAhB,IAMiCC,EAAA,KAAAD,IAAAC,EAAA,KAAAW,cAAAX,EAAA,KAAAe,WAAAf,EAAA,KAAAU,aAAAV,EAAA,KAAAgB,KAAAhB,EAAA,KAAAY;CAAA,IAAAV;CAAA,AAAAF,EAAA,OAAAW,gBAAAX,EAAA,OAAAU,eAKvDR,KAAA;EAAAe,IACFP;EAAWQ,MACTP;CACR,GAACX,EAAA,KAAAW,cAAAX,EAAA,KAAAU,aAAAV,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAAA,IAAAI;CAGD,OAHCJ,EAAA,OAAAe,aAAAf,EAAA,QAAAgB,OAAAhB,EAAA,QAAAY,gBAAAZ,EAAA,QAAAE,MANHE,KAAA,oBAAC,YAAD;EAAW,GACLW;EACG,QAAA;EACC,QAAAb;EAIMU;EACTI;CAAG,CAAA,GACRhB,EAAA,KAAAe,WAAAf,EAAA,MAAAgB,KAAAhB,EAAA,MAAAY,cAAAZ,EAAA,MAAAE,IAAAF,EAAA,MAAAI,MAAAA,KAAAJ,EAAA,KATFI;AASE;AAIN,SAASe,gCACPC,UACAvB,WAIA;CACA,IAAMe,eAAwCf,YAAY,CAAC,CAAC,WAAWA,SAAS,CAAC,IAAI,CAAA;CAgBrF,OAdIR,oBAAoB+B,QAAQ,IACvB;EACLC,kBAAkB,CAAC,WAAW;EAC9BT,cAAc,CAAC,GAAGA,cAAc,CAAC,eAAe,WAAW,CAAC;CAC9D,IAGEQ,aAAa,WACR;EACLC,kBAAkB,CAAC,QAAQ;EAC3BT,cAAcA,aAAaU,SAAS,IAAIV,eAAeW,KAAAA;CACzD,IAGK;EACLF,kBAAkB,CAACD,YAAY,IAAI,QAAQ;EAC3CR,cAAc,CAAC,GAAGA,cAAc,CAAC,eAAeQ,YAAY,EAAE,CAAC;CACjE;AACF;AAEA,SAAOI,uBAAAzB,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAgC,EAAAR,KAAAC,cAAAE,QAAAC,cAAAE,IAKTG;CAAA,AAAAF,EAAA,OAAAP,IAAAgC,UACmBvB,KAAAF,EAAA,MAA3BE,KAAAd,eAAeK,IAAGgC,OAAQ,GAACzB,EAAA,KAAAP,IAAAgC,SAAAzB,EAAA,KAAAE;CAA/C,IAAAQ,cAAoBR,IACpBwB,mBAAyBxC,oBAAoBO,IAAGkC,SAASC,GAAI,GAACxB;CAAA,IAAAJ,EAAA,OAAAN,gBAAAM,EAAA,OAAAP,KAAA;EAM5D,IAAAU,UAAgBb,iBAAiBG,KAAKC,YAAY;EAQpBM,AAN5BI,KAAAD,SAAOE,SAAW,cAAlBkB,KAAAA,IAEIpB,SAAOE,SAAW,WAAlB,WAEEF,SAAOG,UACLrB,kCAAkCkB,QAAOG,QAAQsB,GAC9B,IAAnBnC,IAAGoC,QAAQT,UAASpB,EAAA,KAAAN,cAAAM,EAAA,KAAAP,KAAAO,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAP9B,IAAA8B,cACE1B,IAM4B2B;CAAA,AAAA/B,EAAA,OAAA8B,eAAA9B,EAAA,OAAAH,aACvBkC,KAAAZ,gCAAgCW,aAAajC,SAAS,GAACG,EAAA,KAAA8B,aAAA9B,EAAA,KAAAH,WAAAG,EAAA,KAAA+B,MAAAA,KAAA/B,EAAA;CAVhE,IAAA,EAAAqB,kBAAAT,iBAUEmB,IACgCC;CAAA,AAAAhC,EAAA,OAAA0B,mBAG6DM,KAAAhC,EAAA,MAAvFgC,KAAAN,kBAAgBJ,SAAW,KAAK,oBAAC,yBAAD,EAAmCI,UAAAA,iBAAgB,CAAA,GAAI1B,EAAA,KAAA0B,kBAAA1B,EAAA,KAAAgC;CAD/F,IAAAC,kBACQD,IAEPE;CAAA,AAAAlC,EAAA,QAAAqB,oBAAArB,EAAA,QAAAP,IAAAkC,SAAAC,OAAA5B,EAAA,QAAAP,IAAAkC,SAAAQ,SAAAnC,EAAA,QAAAH,aAEoFqC,KAAA;EAAAE,YACvE3C,IAAGkC,SAASC;EAAIjB,cACdlB,IAAGkC,SAASQ;EAAMd;EAAAgB,SAIvBxC;CACX,GAACG,EAAA,MAAAqB,kBAAArB,EAAA,MAAAP,IAAAkC,SAAAC,KAAA5B,EAAA,MAAAP,IAAAkC,SAAAQ,OAAAnC,EAAA,MAAAH,WAAAG,EAAA,MAAAkC,MAAAA,KAAAlC,EAAA;CAPD,IAAA,EAAAsC,WAAAC,gBAAAC,OAAAC,oBAA4DtD,yBAAyB+C,EAOpF,GAACQ;CAAA,AAAA1C,EAAA,QAAAN,gBAAAM,EAAA,QAAAP,OAIEiD,KAAA,oBAAC,mBAAD;EAAiChD;EAAmBD;CAAG,CAAA,GAAIO,EAAA,MAAAN,cAAAM,EAAA,MAAAP,KAAAO,EAAA,MAAA0C,MAAAA,KAAA1C,EAAA;CAAA,IAAA2C;CAAA,AAAA3C,EAAA,QAAA4C,OAAAC,IAAA,2BAAA,KAUlDF,KAAA,EAAAG,UAAW,EAAC,GAAC9C,EAAA,MAAA2C,MAAAA,KAAA3C,EAAA;CAAA,IAAA+C;CAAA,AAAA/C,EAAA,QAAAyC,kBAGQM,KAAA/C,EAAA,OAArB+C,KAAAN,mBAAA,CAAoB,GAACzC,EAAA,MAAAyC,iBAAAzC,EAAA,MAAA+C;CAAA,IAAAC;CAAA,AAAAhD,EAAA,QAAAJ,UAAAI,EAAA,QAAAuC,kBAAAvC,EAAA,QAAAiC,mBAAAjC,EAAA,QAAA+C,MAD5BC,KAAA,oBAAC,sBAAD;EAAqB,GACdD;EACGd,QAAAA;EACOM,eAAAA;EACP3C;CAAM,CAAA,GACdI,EAAA,MAAAJ,QAAAI,EAAA,MAAAuC,gBAAAvC,EAAA,MAAAiC,iBAAAjC,EAAA,MAAA+C,IAAA/C,EAAA,MAAAgD,MAAAA,KAAAhD,EAAA;CAAA,IAAAiD;CAAA,AAAAjD,EAAA,QAAAU,eAAAV,EAAA,QAAAP,IAAAkC,SAAAQ,SAAAnC,EAAA,QAAAY,gBAAAZ,EAAA,QAAAgD,MAhBJC,MAAA,oBAAC,MAAD;EACO,MAAA;EACDnC,IAAAA;EACSJ;EACC,cAAAjB,IAAGkC,SAASQ;EACZvB;EACN,QAAA;EACA,WAAA;EACF,MAAA;EACC,OAAA+B;EAEPK,UAAAA;CAXG,CAAA,GAiBEhD,EAAA,MAAAU,aAAAV,EAAA,MAAAP,IAAAkC,SAAAQ,OAAAnC,EAAA,MAAAY,cAAAZ,EAAA,MAAAgD,IAAAhD,EAAA,MAAAiD,OAAAA,MAAAjD,EAAA;CAAA,IAAAkD;CACF,OADElD,EAAA,QAAAiD,OAAAjD,EAAA,QAAA0C,MAnBTQ,MAAA,qBAAC,MAAD;EAAY,OAAA;EAAc,KAAA;EAA1B,UAAA,CACER,IACAO,GAFG;KAoBEjD,EAAA,MAAAiD,KAAAjD,EAAA,MAAA0C,IAAA1C,EAAA,MAAAkD,OAAAA,MAAAlD,EAAA,KApBPkD;AAoBO;AC/IX,MAAMuB,uBAAuBC,QAC3BA,IAAIC,SAASC,KAAKC,MAAM,GAAGA,EAAEC,WAAU,GAAID,EAAEE,YAAY,GAAE,GAAIF,EAAEG,cAAc,IAAI,CAAC,CAACC,KAAK,GAAG,GAEzFC,6BAA6BvB,KACjC,SAAAuB,2BAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAoC,EAAAX,KAAAY,cAAAC,cAAAJ,IAQnCK;CAC8F,OAD9FJ,EAAA,OAAAE,gBAAAF,EAAA,OAAAV,OAAAU,EAAA,OAAAG,aACQC,KAAA,oBAAC,wBAAD;EAAsCF;EAAmBZ;EAAgBa;CAAS,CAAA,GAAIH,EAAA,KAAAE,cAAAF,EAAA,KAAAV,KAAAU,EAAA,KAAAG,WAAAH,EAAA,KAAAI,MAAAA,KAAAJ,EAAA,IAAtFI;AAAsF,IAE9FC,MAAMC,SACLD,KAAKf,IAAIiB,YAAYD,KAAKhB,IAAIiB,WAC9BF,KAAKF,cAAcG,KAAKH,aACxBE,KAAKH,iBAAiBI,KAAKJ,gBAC3Bb,oBAAoBgB,KAAKf,GAAG,MAAMD,oBAAoBiB,KAAKhB,GAAG,CAClE,GAEMkB,mBAAmBjC,KACvB,SAAAkC,aAAAV,IAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAsB,EAAAS,SAAAX,IACpBY,SAAe/B,UAAU,GAACwB;CAAA,AAAAJ,EAAA,OAAAW,UAAAX,EAAA,OAAAU,QACPN,KAAAO,OAAMC,IAAKF,IAAI,GAACV,EAAA,KAAAW,QAAAX,EAAA,KAAAU,MAAAV,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAEZ,IAAAc,KAAAD,IAAUE,SAAVL,MAAyBM;CAAQ,OAARhB,EAAA,OAAAc,KAAQE,KAAAhB,EAAA,MAAjDgB,KAAA,oBAAC,MAAD;EAAY,MAAA;EAAIF,UAAAA;CAAX,CAAA,GAA4Cd,EAAA,KAAAc,IAAAd,EAAA,KAAAgB,KAAjDA;AAAiD,IAEzDX,MAAMC,SAASD,KAAKK,SAASJ,KAAKI,IACrC;AAOA,SAAAO,0BAAAlB,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAmC,EAAAiB,OAAAC,MAAApB;CAOjC,IAAImB,MAAKE,WAAWC,UAAS;EAAA,IAAAC,IAAAC,IAAAC,IAAApB,IAAAU,IAAAE,IAAAS,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;EAAA,IAAA9B,EAAA,OAAAkB,MAAAE,WAAAA,cAAApB,EAAA,OAAAmB,GAAA;GAC3B,IAAAY,uBAA6Bb,MAAKE,WAAWA,WAAWY,OACtDC,OACF,CAAC,CAAAC;GAeUlC,AAZRwB,KAAA/C,WACCoD,KAAA,IACUC,KAAA,cAEPP,KAAAlD,MAAKsD,KAAA,IAAYC,KAAA,GACfN,KAAAlD,MAAWgC,KAAA,UAAcU,KAAA,GAAYE,KAAA,GAAChB,EAAA,QAAAmC,OAAAC,IAAA,2BAAA,KACrCX,KAAA,oBAAC,UAAD;IAAgBvD,MAAAA;IAAuB,MAAA;GAAU,CAAA,GAAG8B,EAAA,MAAAyB,MAAAA,KAAAzB,EAAA,KACnD0B,KAAAP,EACCY,yBAAyB,IAAzB,gDAAA,iDAGA,EAAAM,OAAQN,qBAAoB,CAC9B,GAAC/B,EAAA,KAAAkB,MAAAE,WAAAA,YAAApB,EAAA,KAAAmB,GAAAnB,EAAA,KAAAsB,IAAAtB,EAAA,KAAAuB,IAAAvB,EAAA,KAAAwB,IAAAxB,EAAA,KAAAI,IAAAJ,EAAA,KAAAc,IAAAd,EAAA,KAAAgB,IAAAhB,EAAA,KAAAyB,IAAAzB,EAAA,KAAA0B,IAAA1B,EAAA,MAAA2B,IAAA3B,EAAA,MAAA4B,IAAA5B,EAAA,MAAA6B,IAAA7B,EAAA,MAAA8B;EAAA,OAAAA,AAAAR,KAAAtB,EAAA,IAAAuB,KAAAvB,EAAA,IAAAwB,KAAAxB,EAAA,IAAAI,KAAAJ,EAAA,IAAAc,KAAAd,EAAA,IAAAgB,KAAAhB,EAAA,IAAAyB,KAAAzB,EAAA,IAAA0B,KAAA1B,EAAA,IAAA2B,KAAA3B,EAAA,KAAA4B,KAAA5B,EAAA,KAAA6B,KAAA7B,EAAA,KAAA8B,KAAA9B,EAAA;EAAA,IAAAsC;EAAA,AAAAtC,EAAA,QAAAsB,MAAAtB,EAAA,QAAAI,MAAAJ,EAAA,QAAAc,MAAAd,EAAA,QAAAgB,MAAAhB,EAAA,QAAAyB,MAAAzB,EAAA,QAAA0B,MAPHY,MAAA,qBAAC,IAAD;GAAY,OAAAlC;GAAc,KAAAU;GAAY,SAAAE;GAAtC,UAAA,CACES,IACCC,EAFE;MAQE1B,EAAA,MAAAsB,IAAAtB,EAAA,MAAAI,IAAAJ,EAAA,MAAAc,IAAAd,EAAA,MAAAgB,IAAAhB,EAAA,MAAAyB,IAAAzB,EAAA,MAAA0B,IAAA1B,EAAA,MAAAsC,OAAAA,MAAAtC,EAAA;EAAA,IAAAuC;EAAA,AAAAvC,EAAA,QAAAuB,MAAAvB,EAAA,QAAAsC,OAAAtC,EAAA,QAAA2B,MAAA3B,EAAA,QAAA4B,MATTW,MAAA,oBAAC,IAAD;GAAM,OAAAZ;GAAY,MAAAC;GAChBU,UAAAA;EADG,CAAA,GAUEtC,EAAA,MAAAuB,IAAAvB,EAAA,MAAAsC,KAAAtC,EAAA,MAAA2B,IAAA3B,EAAA,MAAA4B,IAAA5B,EAAA,MAAAuC,OAAAA,MAAAvC,EAAA;EAAA,IAAAwC;EAAA,AAAAxC,EAAA,QAAAmC,OAAAC,IAAA,2BAAA,KAGTI,MAAA,oBAAC,MAAD;GAAY,MAAA;GAAe,eAAA;GACzB,UAAA,oBAAC,UAAD;IAAgBtE,MAAAA;IAAuB,MAAA;GAAU,CAAA;EAD9C,CAAA,GAEE8B,EAAA,MAAAwC,OAAAA,MAAAxC,EAAA;EAAA,IAAAyC;EACC,OADDzC,EAAA,QAAAwB,MAAAxB,EAAA,QAAAuC,OAAAvC,EAAA,QAAA6B,MAAA7B,EAAA,QAAA8B,MAnBTW,MAAA,oBAAC,IAAD;GACE,QAAAZ;GACU,WAAAC;GAER,SAAAS;GAaFC,UAAAA;EAjBM,CAAA,GAoBExC,EAAA,MAAAwB,IAAAxB,EAAA,MAAAuC,KAAAvC,EAAA,MAAA6B,IAAA7B,EAAA,MAAA8B,IAAA9B,EAAA,MAAAyC,OAAAA,MAAAzC,EAAA,KApBVyC;CAoBU;CAId,IAAIvB,MAAKE,WAAWsB,cAAa;EAAA,IAAAtC;EAAA,AAAAJ,EAAA,QAAAmB,IAO4Cf,KAAAJ,EAAA,OAAjDI,KAAAe,EAAE,8CAA8C,GAACnB,EAAA,MAAAmB,GAAAnB,EAAA,MAAAI;EAAA,IAAAU;EAAA,AAAAd,EAAA,QAAAI,KAC9DU,KAAAd,EAAA,OAFPc,KAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAChB,UAAA,oBAAC,KAAD;IAAc,SAAA;IAAIV,UAAAA;GAAd,CAAA;EADD,CAAA,GAEEJ,EAAA,MAAAI,IAAAJ,EAAA,MAAAc;EAAA,IAAAE;EAAA,AAAAhB,EAAA,QAAAmC,OAAAC,IAAA,2BAAA,KAGTpB,KAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAAe,eAAA;GAC/B,UAAA,oBAAC,UAAD;IAAgB/C,MAAAA;IAAgB,MAAA;GAAS,CAAA;EADtC,CAAA,GAEE+B,EAAA,MAAAgB,MAAAA,KAAAhB,EAAA;EAAA,IAAAyB;EACC,OADDzB,EAAA,QAAAc,KACCW,KAAAzB,EAAA,OAZVyB,KAAA,oBAAC,WAAD;GACE,QAAA;GACU,WAAA;GAER,SAAAX;GAKFE,UAAAA;EATM,CAAA,GAYEhB,EAAA,MAAAc,IAAAd,EAAA,MAAAyB,KAZVA;CAYU;CAEb,IAAArB;CAAA,AAAAJ,EAAA,QAAAmB,IAQqEf,KAAAJ,EAAA,OAA5CI,KAAAe,EAAE,yCAAyC,GAACnB,EAAA,MAAAmB,GAAAnB,EAAA,MAAAI;CAAA,IAAAU;CAAA,AAAAd,EAAA,QAAAI,KACzDU,KAAAd,EAAA,OAFPc,KAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAChB,UAAA,oBAAC,KAAD;GAAc,SAAA;GAAIV,UAAAA;EAAd,CAAA;CADD,CAAA,GAEEJ,EAAA,MAAAI,IAAAJ,EAAA,MAAAc;CAAA,IAAAE;CAAA,AAAAhB,EAAA,QAAAmC,OAAAC,IAAA,2BAAA,KAGTpB,KAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAAe,eAAA;EAC/B,UAAA,oBAAC,UAAD;GAAgBhD,MAAAA;GAA0B,MAAA;EAAU,CAAA;CADjD,CAAA,GAEEgC,EAAA,MAAAgB,MAAAA,KAAAhB,EAAA;CAAA,IAAAyB;CACC,OADDzB,EAAA,QAAAc,KACCW,KAAAzB,EAAA,OAZVyB,KAAA,oBAAC,WAAD;EACE,QAAA;EACU,WAAA;EAER,SAAAX;EAKFE,UAAAA;CATM,CAAA,GAYEhB,EAAA,MAAAc,IAAAd,EAAA,MAAAyB,KAZVA;AAYU;AApEd,SAAAQ,QAAAb,YAAA;CAAA,OASsBA,WAAUuB,UAAW;AAAO;AAiElD,MAAaC,qCACXzB,GACAhB,WACAD,iBACqC;CACrC;EACE4C,IAAI;EACJC,QAAQ;EACRC,OAAO;EACPC,SAAS;EACTC,gBAAgB5D,QAAQA,IAAI6D,UAAU7D,IAAI8D;CAC5C;CACA;EACEN,IAAI;EAIJE,OAAO;EACPK,OAAO;GAACC,UAAU;GAAKC,UAAU;EAAG;EACpCN,SAAS;EACTC,gBAAgB5D,QAAQN,oBAAoBM,KAAKY,YAAY;EAC7DsD,SAASC,UACP,oBAAC,MAAD;GAAM,GAAIA,MAAMC;GAAa,UAAU;GAAG,QAAO;GAC/C,UAAA,oBAAC,QAAQ,kBAAT;IACE,aAAa;IACb,MAAMvC,EAAE,mCAAmC;IAC3C,GAAIsC;GAAM,CAAA;EAER,CAAA;EAERE,OAAO,EAACC,WAAW1C,YACjB,oBAAC,MAAD;GACE,OAAM;GACN,GAAI0C;GACJ,OAAO;IAAC,GAAGA,UAAUP;IAAOQ,MAAM;IAAYP,UAAU;IAAGQ,UAAU;GAAQ;GAE7E,UAAA,oBAAC,KAAD;IAAK,OAAO;KAACR,UAAU;KAAGQ,UAAU;IAAQ;IAAG,UAAU;IACtD,UAAA,CAAC5C,MAAM6C,aACN,oBAAC,4BAAD;KAA4B,UAAU7C,MAAM3B;KAAwBW;IAAa,CAAA;GAEhF,CAAA;EACD,CAAA;CAEV;CACA;EACE4C,IAAI;EAEJE,OAAO;EACPK,OAAO;GAACC,UAAU;GAAKC,UAAU;EAAG;EACpCN,SAAS;EACTO,SAASC,UACP,oBAAC,MAAD;GAAM,GAAIA,MAAMC;GAAa,UAAU;GAAG,QAAO;GAC/C,UAAA,oBAAC,QAAQ,kBAAT;IACE,aAAa;IACb,MAAMvC,EAAE,6BAA6B;IACrC,GAAIsC;GAAM,CAAA;EAER,CAAA;EAERE,OAAO,EAACC,WAAW1C,YACjB,oBAAC,MAAD;GAAM,OAAM;GAAS,GAAI0C;GACvB,UAAA,oBAAC,KAAD;IAAK,UAAU;IACZ,UAAA,CAAC1C,MAAM6C,aAAa,oBAAC,kBAAD,EAAkB,MAAM7C,MAAM8C,SAASC,MAAM,CAAA;GAC/D,CAAA;EACD,CAAA;CAEV;CACA;EAOEnB,IAAI;EACJE,OAAO;EACPK,OAAO,EAACC,UAAU,IAAG;EACrBL,SAAS;EACTC,gBAAgB,EAACc,eAAc9E,wBAAwB8E,QAAQ,CAAC,CAACE,YAAY;EAC7EV,SAASC,UACP,oBAAC,MAAD;GAAM,GAAIA,MAAMC;GAAa,MAAM;GAAG,UAAU;GAAG,QAAO;GACxD,UAAA,oBAAC,QAAQ,kBAAT;IACE,aAAa;IACb,MAAMvC,EAAE,iCAAiC;IACzC,GAAIsC;GAAM,CAAA;EAER,CAAA;EAERE,OAAO,EAACC,WAAW1C,YACjB,oBAAC,MAAD;GACE,GAAI0C;GACJ,OAAM;GACN,MAAM;GACN,KAAK;GACL,SAAS;GACT,cAAc;GACd,QAAO;GAEP,UAAA,oBAAC,KAAD;IAAK,MAAM;IAAG,OAAO,EAACN,UAAU,EAAC;IAC9BpC,UAAAA,MAAM6C,YACL,oBAAC,sBAAD,EAAsB,eAAA,GAAa,CAAA,IAEnC,oBAAC,4BAAD;KACgB7D;KACd,KAAKgB;KACMf;IAAU,CAAA;GAGtB,CAAA;EACD,CAAA;CAEV;CACA;EAKE2C,IAAI;EACJG,SAAS;EACTD,OAAO;EACPQ,SAASC,UACP,oBAAC,MAAD;GAAM,GAAIA,MAAMC;GAAa,UAAU;GAAG,QAAO;GAC/C,UAAA,oBAAC,QAAQ,kBAAT;IACE,aAAa;IACb,MAAMvC,EAAE,oCAAoC;IAC5C,GAAIsC;GAAM,CAAA;EAER,CAAA;EAERE,OAAO,EAACC,WAAW1C,YACjB,oBAAC,MAAD;GACE,GAAI0C;GACJ,OAAM;GACN,UAAU;GACV,UAAU;GACV,OAAO,EAACN,UAAU,IAAG;GACrB,QAAO;GAEN,UAAA,CAACpC,MAAM6C,aAAa7C,MAAM8C,SAASG,cAClC,oBAAC,MAAD;IAAM,OAAA;IAAM,MAAM;IAChB,UAAA,oBAAC,cAAD;KAAc,MAAMjD,MAAM8C,SAASG;KAAY,mBAAA;KAAkB,SAAA;IAAO,CAAA;GACpE,CAAA;EAEJ,CAAA;CAEV;CACA;EAIErB,IAAI;EACJG,SAAS;EACTD,OAAO;EACPK,OAAO;GAACC,UAAU;GAAIC,UAAU;EAAG;EACnCC,SAASC,UACP,oBAAC,MAAD;GAAM,GAAIA,MAAMC;GAAa,OAAM;GAAS,UAAU;GAAG,UAAU;GAAG,QAAO;GAC3E,UAAA,oBAAC,MAAD;IAAM,OAAA;IAAM,MAAM;IAAG,cAAa;IAAW,QAAO;IACjDvC,UAAAA,EAAE,kCAAkC;GACjC,CAAA;EACF,CAAA;EAERwC,OAAO,EAACC,WAAW1C,YACjB,oBAAC,MAAD;GAAM,GAAI0C;GAAW,OAAM;GAAS,UAAU;GAAG,UAAU;GAAG,QAAO;GAClE,UAAA,CAAC1C,MAAM6C,aACN,oBAAC,cAAD;IAAc,YAAY7C,MAAM8C,SAASI;IAAK,UAAUlD,MAAM8C,SAASK;GAAK,CAAA;EAE1E,CAAA;CAEV;CACA;EAKEvB,IAAI;EACJE,OAAO;EACPK,OAAO;GAACC,UAAU;GAAIC,UAAU;EAAE;EAClCN,SAAS;EACTC,gBAAgB5D,QAASA,MAAI8B,WAAWC;EACxCmC,SAASC,UAAU,oBAAC,MAAD;GAAM,GAAIA,MAAMC;GAAa,UAAU;GAAG,QAAO;EAAQ,CAAA;EAC5EC,OAAO,EAACC,WAAW1C,YACjB,oBAAC,MAAD;GAAM,GAAI0C;GAAW,OAAM;GAAS,SAAQ;GAAS,UAAU;GAAG,QAAO;GACtE,UAAA,CAAC1C,MAAM6C,aAAa,oBAAC,2BAAD;IAAkC7C;IAAUC;GAAE,CAAA;EAC/D,CAAA;CAEV;AAAC;AC9TH,SAAS2D,eAAeC,MAA2D;CAGjF,OAFIA,SAAS,cAAoB,aAC7BA,SAAS,YAAkB,YACxB;AACT;;;;;;;;AASA,SAAOC,mBAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAA4B,EAAAC,UAAAC,YAAAC,YAAAC,iBAAAN,IAWjC,EAAAO,MAAYf,eAAeC,uBAAuB,GAElD,EAAAc,GAAAC,UAAmBhB,eAAe,GAACiB;CAAA,AAAAR,EAAA,OAAAM,KAAAN,EAAA,OAAAG,cAalBK,KAAAF,EAAE,6BAA6B;EAAAG,OAC7BH,EAAE,yBAAyB;EAACI,OAC5BP;CACT,CAAC,GAACH,EAAA,KAAAM,GAAAN,EAAA,KAAAG,YAAAH,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CAAA,IAAAW;CAAA,AAAAX,EAAA,OAAAK,eAC2CM,KAAAX,EAAA,MAApCW,WAAMN,aAAAA,KAA6B,GAACL,EAAA,KAAAK,cAAAL,EAAA,KAAAW;CACnC,IAAAC,KAAAR,eAAAA,OAA+BS;CAAA,AAAAb,EAAA,OAAAQ,MAAAR,EAAA,OAAAW,MAAAX,EAAA,OAAAY,MAV3CC,KAAA,oBAAC,OAAD;EAEgB,iBAAA;EACF,eAAA;EACT,IAAA;EACI,OAAAL;EAIE,SAAAG;EACC,UAAAC;CAA+B,GATrC,KASqC,GACzCZ,EAAA,KAAAQ,IAAAR,EAAA,KAAAW,IAAAX,EAAA,KAAAY,IAAAZ,EAAA,KAAAa,MAAAA,KAAAb,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,OAAAI,cAAAJ,EAAA,QAAAK,gBAAAL,EAAA,QAAAE,YAAAF,EAAA,QAAAM,KAAAN,EAAA,QAAAa,MAAAb,EAAA,QAAAO,OAAA;EAAA,IAAAQ;EA6BDf,AA7BCA,EAAA,QAAAI,cAAAJ,EAAA,QAAAK,gBAAAL,EAAA,QAAAM,KAAAN,EAAA,QAAAO,SACcQ,MAAAC,YAAA;GACVP,IAAAA;GACJ,AAKEA,QALEO,QAAOnB,SAAU,cACXU,MAAM,wBAAwB,IAC7BS,QAAOnB,SAAU,WAClBU,MAAM,oBAAoB,IAGhCS,QAAOC,SAAkBC,UAAOC,SAAIZ,MAAM,sCAAsC;GAGpF,IAAAa,aAAmBhB,eAAeY,QAAOK;GAAG,OAG1C,oBAAC,OAAD;IAEgB,iBAAA;IACD,eAAA,gCAAgCL,QAAOK;IAChD,IAAA,gCAAgCL,QAAOK;IACpC,OAAAf,EAAE,6BAA6B;KAAAG;KAAAC,OAAeM,QAAON;IAAM,CAAC;IAC1D,eAAML,aAAaW,QAAOK,EAAG;IAC5BD,UAAAA;IACJ,MAAAA,aAAaxB,eAAeoB,QAAOnB,IAAiB,IAApD;GAAqD,GAPtDmB,QAAOK,EAO+C;EAC3D,GAELrB,EAAA,MAAAI,YAAAJ,EAAA,MAAAK,cAAAL,EAAA,MAAAM,GAAAN,EAAA,MAAAO,OAAAP,EAAA,MAAAe,MAAAA,KAAAf,EAAA,KA1CPc,KAAA,oBAAC,MAAD;GAAY,OAAA;GAAc,MAAA;GAAqB,eAAA;GAG7C,UAAA,oBAAC,SAAD;IAAc,KAAA;IACX,UAAA,CACCD,IAWE,GACCX,SAAQoB,IAAKP,EAyBf,CAAC;GAvCE,CAAA;EAHL,CAAA,GA6CEf,EAAA,KAAAI,YAAAJ,EAAA,MAAAK,cAAAL,EAAA,MAAAE,UAAAF,EAAA,MAAAM,GAAAN,EAAA,MAAAa,IAAAb,EAAA,MAAAO,OAAAP,EAAA,MAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,OA7CPc;AA6CO;ACnEX,SAASyB,sBAAsBC,KAA6BC,YAA6B;CACvF,OAAOX,sBAAsBU,IAAIE,UAAUD,UAAU;AACvD;AAEA,SAAOE,sBAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAA+B,EAAAC,MAAAC,SAAAC,IAAAC,cAAAN,IAEpCI,UAAAC,OAAAE,KAAAA,KAAAF,IAOA,EAAAG,MAAY1B,eAAeK,uBAAuB,GAClD,CAAAsB,YAAAC,iBAAoC7B,SAAAA,KAAiC,GACrE,EAAA8B,MAAAC,aAAyB7B,kBAAkB,GAAC8B;CAAA,AAAAZ,EAAA,OAAAW,WAEsBC,KAAAZ,EAAA,MAA1DY,KAAA,IAAIC,IAAIF,SAAQG,IAAKC,OAAmC,CAAC,GAACf,EAAA,KAAAW,UAAAX,EAAA,KAAAY;CADlE,IAAAI,eACQJ,IAEPK;CAAA,AAAAjB,EAAA,OAAAgB,gBAAAhB,EAAA,OAAAE,QAGOe,KAAA9B,2BAA2Be,MAAMc,YAAY,GAAChB,EAAA,KAAAgB,cAAAhB,EAAA,KAAAE,MAAAF,EAAA,KAAAiB,MAAAA,KAAAjB,EAAA;CADtD,IAAAkB,WACQD,IAIRE,oBACEX,eAAAA,SAAmCU,SAAQE,MAAMC,YAAaA,QAAOC,OAAQd,UAAU;CAIzF,AAAKW,qBACHV,cAAAA,KAA8B;CAGhC,IAAAc,qBAA2BJ,oBAAAX,aAAAA,OAAiDgB;CAAA,AAAAxB,EAAA,OAAAgB,gBAAAhB,EAAA,OAAAuB,sBAAAvB,EAAA,OAAAE,QAOxEsB,KAAAD,uBAAAA,QAAArB,OAEIA,KAAIuB,QAAQ9B,QAASN,eAAeM,KAAK4B,oBAAoBP,YAAY,CAAC,GAAChB,EAAA,KAAAgB,cAAAhB,EAAA,KAAAuB,oBAAAvB,EAAA,KAAAE,MAAAF,EAAA,KAAAwB,MAAAA,KAAAxB,EAAA;CAHjF,IAAA0B,WACEF,IAE+EG;CAAA,AAAA3B,EAAA,OAAA0B,WACpBC,KAAA3B,EAAA,OAAtD2B,KAAAD,SAAQZ,IAAKc,QAAwC,GAAC5B,EAAA,KAAA0B,UAAA1B,EAAA,MAAA2B;CAL/D,IAAAE,WAKEF,IAC0CG;CAAA,AAAA9B,EAAA,QAAA+B,OAAAC,IAAA,2BAAA,KAEPF,MAAAG,WAAA;EAEnCxB,eAAcyB,aAAeA,aAAaD,SAAAA,QAAbA,MAAgD;CAAC,GAC/EjC,EAAA,MAAA8B,MAAAA,KAAA9B,EAAA;CAHD,IAAAmC,mBAAyBL,IAGnBM;CAAA,AAAApC,EAAA,QAAAO,IAKH6B,KAAApC,EAAA,OAFDoC,MAAAC,OAAA;EAAC,IAAA,EAAAC,UAAAD;EAAyB,OACxB,oBAAC,wBAAD;GAA6B,KAAAC;GAAoC/B;EAAC,CAAA;CAAI,GACvEP,EAAA,MAAAO,GAAAP,EAAA,MAAAoC;CAHH,IAAAG,mBAAyBH,IAOzBI,qBAA2B,CAACrC,WAAWD,KAAIuC,SAAU,KAAKvB,SAAQuB,SAAU,GAACJ;CAAA,AAAArC,EAAA,QAAAgB,gBAAAhB,EAAA,QAAAO,KAAAP,EAAA,QAAAK,aAGrEgC,KAAA7C,kCAAkCe,GAAGF,WAAWW,YAAY,GAAChB,EAAA,MAAAgB,cAAAhB,EAAA,MAAAO,GAAAP,EAAA,MAAAK,WAAAL,EAAA,MAAAqC,MAAAA,KAAArC,EAAA;CADrE,IAAA0C,aACQL,IAEPM;CAAA,AAAA3C,EAAA,QAAA+B,OAAAC,IAAA,2BAAA,KAQgBW,KAAA;EAAAC,QAAS;EAAeC,WAAa;CAAK,GAAC7C,EAAA,MAAA2C,MAAAA,KAAA3C,EAAA;CAAA,IAAA8C;CAAA,AAAA9C,EAAA,QAAAO,IACVuC,MAAA9C,EAAA,OAAlC8C,MAAAvC,EAAE,+BAA+B,GAACP,EAAA,MAAAO,GAAAP,EAAA,MAAA8C;CAAA,IAAAC;CAAA,AAAA/C,EAAA,QAAAwC,sBAAAxC,EAAA,QAAAuB,sBAAAvB,EAAA,QAAAE,QAAAF,EAAA,QAAAkB,YAE5C6B,MAAAP,qBACE,oBAAC,oBAAD;EACcjB,YAAAA;EACEY,cAAAA;EACJjB;EACE,YAAAhB,KAAIuC;CAAO,CAAA,IAL3BnC,KAAAA,GAOaN,EAAA,MAAAwC,oBAAAxC,EAAA,MAAAuB,oBAAAvB,EAAA,MAAAE,MAAAF,EAAA,MAAAkB,UAAAlB,EAAA,MAAA+C,OAAAA,MAAA/C,EAAA;CAAA,IAAAgD;CAAA,AAAAhD,EAAA,QAAAO,IASkDyC,MAAAhD,EAAA,OAA9CgD,MAAAzC,EAAE,2CAA2C,GAACP,EAAA,MAAAO,GAAAP,EAAA,MAAAgD;CAAA,IAAAC;CAGjE,OAHiEjD,EAAA,QAAA0C,cAAA1C,EAAA,QAAA6B,YAAA7B,EAAA,QAAAG,WAAAH,EAAA,QAAAuC,oBAAAvC,EAAA,QAAA8C,OAAA9C,EAAA,QAAA+C,OAAA/C,EAAA,QAAAgD,OAxBnEC,MAAA,oBAAC,eAAD;EAGE,uBAAA;EACYP;EACC,aAAAC;EACD,YAAAG;EAEV,YAAAC;EASS,WAAAG;EACR,IAAA;EACM/C;EACGoC,YAAAA;EACNV,MAAAA;EAEA,OAAA;EACa,mBAAAmB;EACFtD,iBAAAA;EACJ,cAAA;CAA0B,CAAA,GACvCM,EAAA,MAAA0C,YAAA1C,EAAA,MAAA6B,UAAA7B,EAAA,MAAAG,SAAAH,EAAA,MAAAuC,kBAAAvC,EAAA,MAAA8C,KAAA9C,EAAA,MAAA+C,KAAA/C,EAAA,MAAAgD,KAAAhD,EAAA,MAAAiD,OAAAA,MAAAjD,EAAA,KA3BFiD;AA2BE;AA3FC,SAAAC,SAAAC,OAAA;CAAA,OAiFmBxD,MAAGyD;AAAQ;AAjF9B,SAAAxB,SAAAyB,OAAA;CAAA,OAyC2B;EAAA,GAAI1D;EAAG2D,QAAU3D,MAAGyD;CAAQ;AAAC;AAzCxD,SAAArC,QAAAwC,SAAA;CAAA,OAaqC,CAACA,QAAOC,KAAMD,OAAO;AAAC;ACAlE,SAAOiC,gBAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,GACLC,SAAetB,UAAU,GACzB,EAAAuB,MAAYhB,eAAeE,uBAAuB,GAClDe,eACE,OAAOF,OAAMG,MAAMC,aAAe,WAAWJ,OAAMG,MAAMC,YAAzDC,KAAAA,GACFD,YAAkBf,yBAAyBa,YAAY,GACvD,EAAAI,MAAAC,YAAwBnB,eAAe,GAEvCoB,UAAgBJ,YAAYE,KAAIG,IAAKL,SAAqB,IAA1CC,KAAAA,GAChB,EAAAE,SAAAG,kBAAAC,SAAAC,kBAAAC,OAAAC,0BAII5B,oBAAoBsB,SAAOO,GAAK,GAACC;CAAA,AAAAlB,EAAA,OAAAc,mBAGiBI,KAAAlB,EAAA,MAA9CkB,KAAAvB,6BAA6BmB,gBAAgB,GAACd,EAAA,KAAAc,kBAAAd,EAAA,KAAAkB;CADtD,IAAAC,YACQD,IAEPE;CAAA,AAAApB,EAAA,OAAAmB,YAQ2FC,KAAApB,EAAA,MAAxFoB,KAAAD,UAASE,OAAQC,QAAsE,GAACtB,EAAA,KAAAmB,WAAAnB,EAAA,KAAAoB;CAF5F,IAAAG,mBAEIH,GAAwFI,QAG3FC;CAAAC,KAAA;EAMC,IAAI,CAAChB,SAAO;GAAA,IAAAiB;GAAEF,AAAFzB,EAAA,OAAA4B,OAAAC,IAAA,2BAAA,KAASF,KAAA,CAAA,GAAE3B,EAAA,KAAA2B,MAAAA,KAAA3B,EAAA,IAATyB,KAAOE;GAAP,MAAAD;EAAS;EAAA,IAAAC;EAAA,IAAA3B,EAAA,OAAAG,KAAAH,EAAA,OAAAU,QAAAoB,YAAA;GAEvB,IAAAC,mBAAyBC,OAAMC,QAASvB,QAAOoB,UAAW;GA0BnD9B,AAxBL2B,KAAAI,iBAAgBP,SAAU,IACtBO,iBAAgBG,IAAKC,QAuBrB,IAxBJ,CAgBM;IAAAC,OACS;IAAEC,OAEP,oBAAC,MAAD;KAAM,OAAA;KAAY,MAAA;KACflC,UAAAA,EAAE,8BAA8B;IAD9B,CAAA;GAIT,CAAC,GACFH,EAAA,KAAAG,GAAAH,EAAA,KAAAU,QAAAoB,YAAA9B,EAAA,KAAA2B;EAAA,OAAAA,KAAA3B,EAAA;EAzBP,IAAAsC,gBACEX,IAwBKY;EAAA,AAAAvC,EAAA,OAAAG,IAImCoC,KAAAvC,EAAA,MAA/BuC,KAAApC,EAAE,4BAA4B,GAACH,EAAA,KAAAG,GAAAH,EAAA,KAAAuC;EAAA,IAAAC;EAF1Cf,AAE0CzB,EAAA,QAAAsC,iBAAAtC,EAAA,QAAAuC,MAFnCC,KAAA,CACL;GAAAC,OACSF;GAA+BG,aAKzB;GAAIC,MACXL;EACR,CAAC,GACFtC,EAAA,MAAAsC,eAAAtC,EAAA,MAAAuC,IAAAvC,EAAA,MAAAwC,MAAAA,KAAAxC,EAAA,KAVDyB,KAAOe;CAUN;CAzCH,IAAAI,qBAA2BnB,IA0CXE;CAAA,AAAA3B,EAAA,QAAAY,mBAUXe,KAAA3B,EAAA,OALgB2B,MAAAkB,UACjBjC,mBACE,oBAAC,UAAD;EAAU,UAAA;EAAiB,QAAA;EAAU,OAAA;GAAAkC,OAAQ;GAAEC,QAAU;EAAE;CAAC,CAAA,IAE5DC,OAAOH,KACT,GAAC7C,EAAA,MAAAY,kBAAAZ,EAAA,MAAA2B;CALH,IAAAsB,aAAmBtB,IAKhBY;CAAA,AAAAvC,EAAA,QAAAG,IAOoCoC,KAAAvC,EAAA,OAA5BuC,KAAApC,EAAE,yBAAyB,GAACH,EAAA,MAAAG,GAAAH,EAAA,MAAAuC;CAAA,IAAAC;CAAA,AAAAxC,EAAA,QAAA4B,OAAAC,IAAA,2BAAA,KAI7BW,KAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAChB,UAAA,oBAAC,eAAD,CAAc,CAAA;CADX,CAAA,GAEExC,EAAA,MAAAwC,MAAAA,KAAAxC,EAAA;CAAA,IAAAkD;CAAA,AAAAlD,EAAA,QAAAG,IAEkC+C,KAAAlD,EAAA,OAApCkD,KAAA/C,EAAE,iCAAiC,GAACH,EAAA,MAAAG,GAAAH,EAAA,MAAAkD;CAAA,IAAAC;CAAA,AAAAnD,EAAA,QAAAiD,cAAAjD,EAAA,QAAAmB,UAAAK,UACpC2B,KAAAF,WAAW9B,UAASK,MAAO,GAACxB,EAAA,MAAAiD,YAAAjD,EAAA,MAAAmB,UAAAK,QAAAxB,EAAA,MAAAmD,MAAAA,KAAAnD,EAAA;CAAA,IAAAoD;CAAA,AAAApD,EAAA,QAAAkD,MAAAlD,EAAA,QAAAmD,MAPrCC,KAAA;EAAAC,MAEIb;EAEOJ,OAEFc;EAAoCb,OACpCc;CACT,GAACnD,EAAA,MAAAkD,IAAAlD,EAAA,MAAAmD,IAAAnD,EAAA,MAAAoD,MAAAA,KAAApD,EAAA;CAAA,IAAAsD;CAAA,AAAAtD,EAAA,QAAA4B,OAAAC,IAAA,2BAAA,KAGGyB,KAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAChB,UAAA,oBAAC,UAAD,CAAS,CAAA;CADN,CAAA,GAEEtD,EAAA,MAAAsD,MAAAA,KAAAtD,EAAA;CAAA,IAAAuD;CAAA,AAAAvD,EAAA,QAAAG,IAEsCoD,MAAAvD,EAAA,OAAxCuD,MAAApD,EAAE,qCAAqC,GAACH,EAAA,MAAAG,GAAAH,EAAA,MAAAuD;CAAA,IAAAC;CAAA,AAAAxD,EAAA,QAAAiD,cAAAjD,EAAA,QAAAuB,oBACxCiC,MAAAP,WAAW1B,gBAAgB,GAACvB,EAAA,MAAAiD,YAAAjD,EAAA,MAAAuB,kBAAAvB,EAAA,MAAAwD,OAAAA,MAAAxD,EAAA;CAAA,IAAAyD;CAAA,AAAAzD,EAAA,QAAAuD,OAAAvD,EAAA,QAAAwD,OAPrCC,MAAA;EAAAJ,MAEIC;EAEOlB,OAEFmB;EAAwClB,OACxCmB;CACT,GAACxD,EAAA,MAAAuD,KAAAvD,EAAA,MAAAwD,KAAAxD,EAAA,MAAAyD,OAAAA,MAAAzD,EAAA;CAAA,IAAA0D;CAAA,AAAA1D,EAAA,QAAAG,KAAAH,EAAA,QAAAU,WACDgD,MAAAhD,WAAA;EAAA2C,MAII,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAChB,UAAA,oBAAC,UAAD,CAAS,CAAA;EADN,CAAA;EAEEjB,OAEFjC,EAAE,0BAA0B;EAACkC,OAC7BW,OAAOtC,QAAOiD,QAAS;CAChC,GAAC3D,EAAA,MAAAG,GAAAH,EAAA,MAAAU,SAAAV,EAAA,MAAA0D,OAAAA,MAAA1D,EAAA;CAAA,IAAA4D;CAAA,AAAA5D,EAAA,QAAAG,KAAAH,EAAA,QAAAU,WACDkD,MAAAlD,WAAA;EAAA2C,MAKI,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAChB,UAAA,oBAAC,UAAD,CAAS,CAAA;EADN,CAAA;EAEEjB,OAEFjC,EAAE,uBAAuB;EAACkC,OAE/B,oBAAC,MAAD;GAAY,MAAA;GACV,UAAA,oBAAC,cAAD;IAAc,SAAA;IAAc,MAAA3B,QAAOmD;IAAa,mBAAA;GAAiB,CAAA;EAD9D,CAAA;CAIT,GAAC7D,EAAA,MAAAG,GAAAH,EAAA,MAAAU,SAAAV,EAAA,MAAA4D,OAAAA,MAAA5D,EAAA;CAAA,IAAA8D;CAAA,AAAA9D,EAAA,QAAAyD,OAAAzD,EAAA,QAAA0D,OAAA1D,EAAA,QAAA4D,OAAA5D,EAAA,QAAAoD,MA7CGU,MAAA;EACJV;EASAK;EASAC;EAWAE;CAeC,GACF5D,EAAA,MAAAyD,KAAAzD,EAAA,MAAA0D,KAAA1D,EAAA,MAAA4D,KAAA5D,EAAA,MAAAoD,IAAApD,EAAA,MAAA8D,OAAAA,MAAA9D,EAAA;CAAA,IAAA+D;CAAA,AAAA/D,EAAA,QAAA8D,OAAA9D,EAAA,QAAAuC,MApDEwB,MAAA,CACL;EAAAtB,OAISF;EAA4BI,MAC7BmB;CA+CR,CAAC,GACF9D,EAAA,MAAA8D,KAAA9D,EAAA,MAAAuC,IAAAvC,EAAA,MAAA+D,OAAAA,MAAA/D,EAAA;CAhEH,IAAAgE,mBAUED;CAyDF,IAAItD,SAAO;EAAA,IAAAwD;EAAA,AAAAjE,EAAA,QAAAG,IAC2C8D,MAAAjE,EAAA,OAAnBiE,MAAA9D,EAAE,gBAAgB,GAACH,EAAA,MAAAG,GAAAH,EAAA,MAAAiE;EAAA,IAAAC;EAAI,OAAJlE,EAAA,QAAAiE,MAAIC,MAAAlE,EAAA,OAAjDkE,MAAA,oBAAC,cAAD;GAAc,MAAA;GAAY,OAAAD;EAAmB,CAAA,GAAIjE,EAAA,MAAAiE,KAAAjE,EAAA,MAAAkE,MAAjDA;CAAiD;CAG1D,IAAI,CAACxD,SAAO;EAAA,IAAAuD;EAAA,AAAAjE,EAAA,QAAAE,SAIgD+D,MAAAjE,EAAA,OAAzBiE,YAAM/D,OAAMiE,SAAU,CAAC,CAAC,GAACnE,EAAA,MAAAE,QAAAF,EAAA,MAAAiE;EAAA,IAAAC;EAAA,AAAAlE,EAAA,QAAAG,IAAwB+D,MAAAlE,EAAA,OAAhBkE,MAAA/D,EAAE,aAAa,GAACH,EAAA,MAAAG,GAAAH,EAAA,MAAAkE;EAAA,IAAAE;EAAA,AAAApE,EAAA,QAAAiE,OAAAjE,EAAA,QAAAkE,OAD9EE,MAAA,oBAAC,MAAD;GAAM,cAAA;GAAkB,MAAA;GAAgB,SAAA;GACtC,UAAA,oBAAC,kBAAD;IAA2B,SAAAH;IAAiC,MAAAC;GAAgB,CAAA;EADzE,CAAA,GAEElE,EAAA,MAAAiE,KAAAjE,EAAA,MAAAkE,KAAAlE,EAAA,MAAAoE,OAAAA,MAAApE,EAAA;EAAA,IAAAqE;EAAA,AAAArE,EAAA,QAAAG,IAK6BkE,MAAArE,EAAA,OAA3BqE,MAAAlE,EAAE,wBAAwB,GAACH,EAAA,MAAAG,GAAAH,EAAA,MAAAqE;EAAA,IAAAC;EAAA,AAAAtE,EAAA,QAAAqE,MACvBC,MAAAtE,EAAA,OAFPsE,MAAA,oBAAC,MAAD;GAAY,MAAA;GAAU,QAAA;GACnBD,UAAAA;EADE,CAAA,GAEErE,EAAA,MAAAqE,KAAArE,EAAA,MAAAsE;EAAA,IAAAC;EAAA,AAAAvE,EAAA,QAAAG,IAE6BoE,MAAAvE,EAAA,OAAjCuE,MAAApE,EAAE,8BAA8B,GAACH,EAAA,MAAAG,GAAAH,EAAA,MAAAuE;EAAA,IAAAC;EAAA,AAAAxE,EAAA,QAAAuE,MAC7BC,MAAAxE,EAAA,OAFPwE,MAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GACfD,UAAAA;EADE,CAAA,GAEEvE,EAAA,MAAAuE,KAAAvE,EAAA,MAAAwE;EAAA,IAAAC;EAAA,AAAAzE,EAAA,QAAAsE,OAAAtE,EAAA,QAAAwE,OARbC,MAAA,oBAAC,KAAD;GAAc,SAAA;GACZ,UAAA,oBAAC,MAAD;IAAM,QAAA;IAAgB,SAAA;IAAW,QAAA;IAC/B,UAAA,qBAAC,OAAD;KAAY,KAAA;KAAZ,UAAA,CACEH,KAGAE,GAJI;;GADH,CAAA;EADH,CAAA,GAWExE,EAAA,MAAAsE,KAAAtE,EAAA,MAAAwE,KAAAxE,EAAA,MAAAyE,OAAAA,MAAAzE,EAAA;EAAA,IAAA0E;EACD,OADC1E,EAAA,QAAAoE,OAAApE,EAAA,QAAAyE,OAfRC,MAAA,qBAAC,MAAD;GAAgB,WAAA;GAAe,MAAA;GAAU,QAAA;GAAzC,UAAA,CACEN,KAGAK,GAJG;MAgBEzE,EAAA,MAAAoE,KAAApE,EAAA,MAAAyE,KAAAzE,EAAA,MAAA0E,OAAAA,MAAA1E,EAAA,KAhBP0E;CAgBO;CAEV,IAAAT;CAAA,AAAAjE,EAAA,QAAAU,UAEiDuD,MAAAjE,EAAA,OAA9BiE,MAAAzE,sBAAsBkB,OAAO,GAACV,EAAA,MAAAU,SAAAV,EAAA,MAAAiE;CAAlD,IAAAU,cAAoBV,KAA8BC;CAAA,AAAAlE,EAAA,QAAA4B,OAAAC,IAAA,2BAAA,KAkBCqC,MAAA,EAAAU,UAAW,EAAC,GAAC5E,EAAA,MAAAkE,OAAAA,MAAAlE,EAAA;CAAA,IAAAoE;CAAA,AAAApE,EAAA,QAAAE,SAEZkE,MAAApE,EAAA,OAAzBoE,YAAMlE,OAAMiE,SAAU,CAAC,CAAC,GAACnE,EAAA,MAAAE,QAAAF,EAAA,MAAAoE;CAAA,IAAAC;CAAA,AAAArE,EAAA,QAAAG,IAEZkE,MAAArE,EAAA,OAAhBqE,MAAAlE,EAAE,aAAa,GAACH,EAAA,MAAAG,GAAAH,EAAA,MAAAqE;CAAA,IAAAC;CAAA,AAAAtE,EAAA,QAAAoE,OAAApE,EAAA,QAAAqE,OAJ1BC,MAAA,oBAAC,MAAD;EAAY,OAAA;EAAe,MAAA;EAAU,OAAAJ;EACnC,UAAA,oBAAC,kBAAD;GACW,SAAAE;GACF,QAAA;GACD,MAAAC;EAAgB,CAAA;CAJrB,CAAA,GAMErE,EAAA,MAAAoE,KAAApE,EAAA,MAAAqE,KAAArE,EAAA,MAAAsE,OAAAA,MAAAtE,EAAA;CAAA,IAAAuE;CAAA,AAAAvE,EAAA,QAAAY,oBAAAZ,EAAA,QAAAmB,UAAAK,UAAAxB,EAAA,QAAAU,WACP6D,MAAA,oBAAC,MAAD;EAAkB,eAAA;EAA8B,MAAA;EAC9C,UAAA,oBAAC,mBAAD;GACiB,eAAApD,UAASK;GACNZ;GACTF;EAAO,CAAA;CAJf,CAAA,GAMEV,EAAA,MAAAY,kBAAAZ,EAAA,MAAAmB,UAAAK,QAAAxB,EAAA,MAAAU,SAAAV,EAAA,MAAAuE,OAAAA,MAAAvE,EAAA;CAAA,IAAAwE;CAAA,AAAAxE,EAAA,QAAAsE,OAAAtE,EAAA,QAAAuE,OAdTC,MAAA,qBAAC,MAAD;EAAY,OAAA;EAAc,KAAA;EAA1B,UAAA,CACEF,KAOAC,GARG;KAeEvE,EAAA,MAAAsE,KAAAtE,EAAA,MAAAuE,KAAAvE,EAAA,MAAAwE,OAAAA,MAAAxE,EAAA;CAAA,IAAAyE;CAAA,AAAAzE,EAAA,QAAA4B,OAAAC,IAAA,2BAAA,KAEgB4C,MAAA,EAAAG,UAAW,IAAG,GAAC5E,EAAA,MAAAyE,OAAAA,MAAAzE,EAAA;CAEnB,IAAA0E,MAAAC,eAAApE,KAAAA,GAAwBsE;CAAA,AAAA7E,EAAA,QAAAU,UAENmE,MAAA7E,EAAA,OAAxB6E,MAAAnF,gBAAgBgB,OAAO,GAACV,EAAA,MAAAU,SAAAV,EAAA,MAAA6E;CAAA,IAAAC;CAAA,AAAA9E,EAAA,QAAAG,IAEc2E,MAAA9E,EAAA,OAA3B8E,MAAA3E,EAAE,wBAAwB,GAACH,EAAA,MAAAG,GAAAH,EAAA,MAAA8E;CAAA,IAAAC;CAAA,AAAA/E,EAAA,QAAA0E,OAAA1E,EAAA,QAAA6E,OAAA7E,EAAA,QAAA8E,OANjDC,MAAA,oBAAC,KAAD;EAAW,MAAA;EAAU,OAAAN;EACnB,UAAA,oBAAC,gBAAD;GACe,aAAAC;GACK,mBAAA;GACX,OAAAG;GACC,SAAA;GACU,kBAAAC;GACN,aAAA;EAAuB,CAAA;CAPnC,CAAA,GASE9E,EAAA,MAAA0E,KAAA1E,EAAA,MAAA6E,KAAA7E,EAAA,MAAA8E,KAAA9E,EAAA,MAAA+E,OAAAA,MAAA/E,EAAA;CAAA,IAAAgF;CAAA,AAAAhF,EAAA,SAAA4C,qBAQJoC,MAAAhF,EAAA,QAJFgF,MAAA,oBAAC,uBAAD;EACY,UAAA;EACApC,UAAAA;EACH,QAAA;CAA2B,CAAA,GAClC5C,EAAA,OAAA4C,oBAAA5C,EAAA,OAAAgF;CAAA,IAAAC;CAAA,AAAAjF,EAAA,SAAAgE,mBAIAiB,MAAAjF,EAAA,QAHFiF,MAAA,oBAAC,uBAAD;EACYjB,UAAAA;EACH,QAAA;CAA0B,CAAA,GACjChE,EAAA,OAAAgE,kBAAAhE,EAAA,OAAAiF;CAAA,IAAAC;CAAA,AAAAlF,EAAA,SAAA+E,OAAA/E,EAAA,SAAAgF,OAAAhF,EAAA,SAAAiF,OAtBJC,MAAA,qBAAC,MAAD;EAAY,OAAA;EAAkB,KAAA;EAAQ,MAAA;EAAtC,UAAA;GACEH;GAaAC;GAKAC;EAnBG;KAuBEjF,EAAA,OAAA+E,KAAA/E,EAAA,OAAAgF,KAAAhF,EAAA,OAAAiF,KAAAjF,EAAA,OAAAkF,OAAAA,MAAAlF,EAAA;CAAA,IAAAmF;CAAA,AAAAnF,EAAA,SAAAwE,OAAAxE,EAAA,SAAAkF,OA/CfC,MAAA,oBAAC,MAAD;EAAW,MAAA;EAAiB,UAAA;EAG1B,UAAA,oBAAC,WAAD;GAAgB,MAAA;GAAc,OAAA;GAG5B,UAAA,oBAAC,KAAD;IAAe,UAAA;IACb,UAAA,qBAAC,OAAD;KAAY,KAAA;KAAZ,UAAA,CACEX,KAgBAU,GAjBI;;GADJ,CAAA;EAHI,CAAA;CAHP,CAAA,GAmDElF,EAAA,OAAAwE,KAAAxE,EAAA,OAAAkF,KAAAlF,EAAA,OAAAmF,OAAAA,MAAAnF,EAAA;CAAA,IAAAoF;CAAA,AAAApF,EAAA,SAAA4B,OAAAC,IAAA,2BAAA,KACkEuD,MAAA,EAAAC,WAAY,EAAC,GAACrF,EAAA,OAAAoF,OAAAA,MAAApF,EAAA;CAAA,IAAAsF;CAAA,AAAAtF,EAAA,SAAAY,oBAAAZ,EAAA,SAAAG,KAAAH,EAAA,SAAAmB,aAAAnB,EAAA,SAAAU,WAAAV,EAAA,SAAAgB,yBAAvFsE,MAAA,oBAAC,MAAD;EAAgB,WAAA;EAAe,MAAA;EAAU,QAAA;EAAgB,UAAA;EAAgB,OAAAF;EACtEpE,UAAAA,wBACC,oBAAC,KAAD;GAAc,SAAA;GACZ,UAAA,oBAAC,MAAD;IAAM,OAAA;IAAY,MAAA;IACfb,UAAAA,EAAE,wBAAwB;GADxB,CAAA;EADH,CAAA,IAMJ,oBAAC,uBAAD;GACWS,SAAAA;GACHO,MAAAA;GACK,WAAA1B,aAAaiB,QAAOO,GAAI;EAAC,CAAA;CAXrC,CAAA,GAcEjB,EAAA,OAAAY,kBAAAZ,EAAA,OAAAG,GAAAH,EAAA,OAAAmB,WAAAnB,EAAA,OAAAU,SAAAV,EAAA,OAAAgB,uBAAAhB,EAAA,OAAAsF,OAAAA,MAAAtF,EAAA;CAAA,IAAAuF;CACF,OADEvF,EAAA,SAAAmF,OAAAnF,EAAA,SAAAsF,OAxETC,MAAA,qBAAC,MAAD;EAAgB,WAAA;EAAe,MAAA;EAAU,QAAA;EAAgB,UAAA;EAAzD,UAAA,CAMEJ,KAoDAG,GA1DG;KAyEEtF,EAAA,OAAAmF,KAAAnF,EAAA,OAAAsF,KAAAtF,EAAA,OAAAuF,OAAAA,MAAAvF,EAAA,MAzEPuF;AAyEO;AAvPJ,SAAApD,SAAAjB,IAAA;CAwCyB,IAAA,CAAAsE,KAAAnD,SAAAnB,IAGpBuE,gBAAsB5F,wBAAwB2F,GAAG;CAAC,OAC3C;EAAAnC,MAEH,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAChB,UAAA,oBAAC,eAAD,CAAc,CAAA;EADX,CAAA;EAEEjB,OAEFoD;EAAGnD;CAEZ;AAAC;AApDN,SAAAf,SAAAoE,KAAA;CAAA,OA0ByBA,IAAGC,SAASC,KAAMC,OAA0C;AAAC;AA1BtF,SAAAA,QAAAC,SAAA;CAAA,OA0BwDA,QAAOC,aAAc;AAAQ;AC5C5F,SAAOY,oBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAN,UAAAC,aAA6BG,OAC7B,EAAAG,MAAYb,eAAeC,uBAAuB,GAClD,EAAAa,kBAAwBZ,qBAAqB,GAACa;CAAA,AAAAJ,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KACXF,KAAAZ,mBAAmB,GAACQ,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAAvD,IAAAO,eAAmCH,IAAyBI;CAAA,AAAAR,EAAA,OAAAG,iBAAAH,EAAA,OAAAJ,YAG1DY,KAAA,OAAAC,YAAA;EAEEb,AADA,MAAMO,cAAcM,OAAO,GAC3Bb,SAASa,QAAOC,GAAI;CAAC,GACtBV,EAAA,KAAAG,eAAAH,EAAA,KAAAJ,UAAAI,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CAJH,IAAAW,eAAqBH,IAMpBI;CAAA,AAAAZ,EAAA,OAAAE,IAKiDU,KAAAZ,EAAA,MAAjCY,KAAAV,EAAE,8BAA8B,GAACF,EAAA,KAAAE,GAAAF,EAAA,KAAAY;CAAA,IAAAC;CAAA,AAAAb,EAAA,OAAAE,IACJW,KAAAb,EAAA,MAA9Ba,KAAAX,EAAE,2BAA2B,GAACF,EAAA,KAAAE,GAAAF,EAAA,KAAAa;CAAA,IAAAC;CAAA,AAAAd,EAAA,OAAAE,IACVY,KAAAd,EAAA,MAAxBc,KAAAZ,EAAE,qBAAqB,GAACF,EAAA,KAAAE,GAAAF,EAAA,KAAAc;CAAA,IAAAC;CAKhC,OALgCf,EAAA,QAAAW,gBAAAX,EAAA,QAAAL,YAAAK,EAAA,QAAAY,MAAAZ,EAAA,QAAAa,MAAAb,EAAA,QAAAc,MAJlCC,KAAA,oBAAC,eAAD;EACoB,mBAAA;EACL,aAAAH;EACD,YAAAC;EACJ,QAAAC;EACL,IAAA;EACWP;EACJZ;EACAgB,UAAAA;CAAY,CAAA,GACtBX,EAAA,MAAAW,cAAAX,EAAA,MAAAL,UAAAK,EAAA,MAAAY,IAAAZ,EAAA,MAAAa,IAAAb,EAAA,MAAAc,IAAAd,EAAA,MAAAe,MAAAA,KAAAf,EAAA,KATFe;AASE;;;;;;;;;;;;;ACGN,SAAgBqB,iCACdC,oBAC6B;CAC7B,IAAMC,cAAwB,CAAA,GACxBC,UAAoB,CAAA;CAE1B,KAAK,IAAMC,qBAAqBH,oBAAoB;EAClD,IAAMI,aAAa,yBAAyBC,KAAKC,UAAUX,aAAaQ,iBAAiB,CAAC,EAAC;EAK3FD,AAHAD,YAAYM,KACV,GAAGF,KAAKC,UAAUH,iBAAiB,EAAC,0BAA2BC,WAAU,uBAC3E,GACAF,QAAQK,KAAKH,UAAU;CACzB;CAEA,OAAO;EACLP,OAAO,IAAII,YAAYO,KAAK,GAAG,EAAC;EAChCV,QAAQ,KAAKI,QAAQM,KAAK,MAAM,EAAC;CACnC;AACF;AAaA,MAAMO,gBAA6C;CAACL,MAAM;CAAME,SAAS;CAAMC,OAAO;AAAI,GACpFG,cAA2C;CAACN,MAAM,CAAC;CAAGE,SAAS;CAAOC,OAAO;AAAI;;;;;;AAOvF,SAASI,6BACPC,QACAlB,oBACyC;CACzC,IAAIA,mBAAmBmB,WAAW,GAChC,OAAOpC,GAAGiC,WAAW;CAGvB,IAAM,EAACnB,OAAOC,WAAUC,iCAAiCC,kBAAkB;CAE3E,OAAOT,YACL2B,QACA;EAACrB;EAAOC;CAAM,GACd,CAAC,GAGD;EAACsB,KAAK;EAA8BC,aAAa;CAAK,CACxD,CAAC,CAACC,KACApC,OAAKqC,cAAmE;EACtEb,MAAMc,OAAOC,YACXzB,mBAAmBd,KAAKiB,sBAAsB,CAC5CA,mBACAoB,WAAWpB,sBAAsB,CAAC,CACnC,CACH;EACAS,SAAS;EACTC,OAAO;CACT,EAAE,GACFzB,YAAU2B,aAAa,GAGvB/B,cAAY6B,UAAU9B,GAAG;EAAC2B,MAAM;EAAME,SAAS;EAAOC;CAAK,CAAC,CAAC,CAC/D;AACF;;;;;;;;;;;;;AAcA,SAAgBa,0BACdR,QACAS,gBACyC;CACzC,OAAOA,eAAeL,KAIpBpC,OAAK0C,UAAUC,MAAMC,KAAKF,MAAMG,SAASC,KAAK,CAAC,CAAC,CAACC,SAAS,CAAC,CAACzB,KAAK,GAAG,CAAC,GACrEvB,uBAAqB,GACrBI,aAAW6C,WAAWjB,6BAA6BC,QAAQgB,SAASA,OAAOC,MAAM,GAAG,IAAI,CAAA,CAAE,CAAC,GAC3FhD,QACGiD,UAAUC,UAAuC;EAGhD3B,MAAM2B,KAAK3B,OAAO;GAAC,GAAG0B,SAAS1B;GAAM,GAAG2B,KAAK3B;EAAI,IAAI0B,SAAS1B;EAC9DE,SAASyB,KAAKzB,WAAWwB,SAAS1B,SAAS;EAC3CG,OAAOwB,KAAKxB;CACd,IACAE,aACF,CACF;AACF;;;;;;;AAQA,SAAOuB,4BAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACLtB,SAAe5B,UAAUE,8BAA8B,GACvD,EAAAiD,WAAiB/C,iBAAiB,GAACgD;CAE0D,OAF1DH,EAAA,OAAArB,UAAAqB,EAAA,OAAAE,UAEFC,KAAAhB,0BAA0BR,QAAQuB,MAAM,GAACF,EAAA,KAAArB,QAAAqB,EAAA,KAAAE,QAAAF,EAAA,KAAAG,MAAAA,KAAAH,EAAA,IAEnE1D,cAAc8D,IAAY5B,aAAa;AAAC;AClJjD,SAASsD,WAAWC,KAAqB;CACvC,OAAOA,IAAIC,OAAO,CAAC,CAAC,CAACC,YAAY,IAAIF,IAAIG,MAAM,CAAC;AAClD;;;;;;;AAQA,SAAAC,cAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAuB,EAAAC,QAAAC,OAAAC,kBAAAL,IASrB,EAAAM,MAAYhB,eAAeC,uBAAuB,GAClD,CAAAgB,MAAAC,WAAwBtB,SAAS,EAAK,GACtC,CAAAuB,cAAAC,mBAAwCxB,SAAwB,IAAI,GACpE,CAAAyB,OAAAC,YAA0B1B,SAAS,EAAE,GACrC,CAAA2B,UAAAC,eAAgC5B,SAAmC,IAAI,GACvE,CAAA6B,WAAAC,gBAAkC9B,SAA6B,IAAI,GAAC+B;CAAA,AAAAhB,EAAA,OAAAiB,OAAAC,IAAA,2BAAA,KAE1CF,WAAA;EAGxBL,AAFAJ,QAAQ,EAAK,GACbE,gBAAgB,IAAI,GACpBE,SAAS,EAAE;CAAC,GACbX,EAAA,KAAAgB,MAAAA,KAAAhB,EAAA;CAJD,IAAAmB,QAAcH,IAIRI;CAENzC,AAFMqB,EAAA,OAAAY,YAAAZ,EAAA,OAAAc,aAEsBM,WAAM,CAACR,UAAUE,SAAS,GAACd,EAAA,KAAAY,UAAAZ,EAAA,KAAAc,WAAAd,EAAA,KAAAoB,MAAAA,KAAApB,EAAA,IAAvDrB,qBAAqBwC,OAAOC,EAA2B;CAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;CAAA,IAAA7B,EAAA,OAAAQ,gBAAAR,EAAA,OAAAE,UAAAF,EAAA,OAAAI,iBAAAJ,EAAA,OAAAU,SAAAV,EAAA,OAAAK,KAAAL,EAAA,OAAAG,OAAA;EAAA,IAAA2B;EAAA,AAAA9B,EAAA,QAAAQ,eAEasB,KAAA9B,EAAA,OAArC8B,MAAAC,UAAWA,MAAKrC,QAASc,cAAYR,EAAA,MAAAQ,cAAAR,EAAA,MAAA8B;EAArE,IAAAE,cAAoB9B,OAAM+B,KAAMH,EAAqC,GAACI;EAAA,IAAAlC,EAAA,QAAAE,UAAAF,EAAA,QAAAU,OAAA;GAAAyB,KAAA;IAGpE,IAAAC,aAAmB1B,MAAK2B,KAAM,CAAC,CAAAC,YAAa;IAC5C,IAAI,CAACF,YAAU;KAAEF,MAAOhC;KAAP,MAAAiC;IAAa;IAC9BD,MAAOhC,OAAMqC,QAAQC,YAAW/C,WAAWsC,QAAKrC,GAAI,CAAC,CAAA4C,YAAa,CAAC,CAAAG,SAAUL,UAAU,CAAC;GAAC;GAAApC,AAAAA,EAAA,MAAAE,QAAAF,EAAA,MAAAU,OAAAV,EAAA,MAAAkC;EAAA,OAAAA,MAAAlC,EAAA;EAH3F,IAAA0C,iBAAuBR;EASR,AAAZX,KAAA/C,OAAWmD,KAAA,GAAC3B,EAAA,QAAAiB,OAAAC,IAAA,2BAAA,KAASU,KAAA,EAAAe,OAAQ,IAAG,GAAC3C,EAAA,MAAA4B,MAAAA,KAAA5B,EAAA;EAAA,IAAA4C;EAAA,AAAA5C,EAAA,QAAAiB,OAAAC,IAAA,2BAAA,KACR0B,MAAA,EAAAC,cAAe,qCAAoC,GAAC7C,EAAA,MAAA4C,OAAAA,MAAA5C,EAAA;EAAA,IAAA8C;EAAA,AAAA9C,EAAA,QAAAiB,OAAAC,IAAA,2BAAA,KAI9D4B,OAAAC,UAAWpC,SAASoC,MAAKC,cAAc7C,KAAM,GAACH,EAAA,MAAA8C,OAAAA,MAAA9C,EAAA;EAAA,IAAAiD;EAM3D3B,AAN2DtB,EAAA,QAAAK,IACR4C,MAAAjD,EAAA,OAAnCiD,MAAA5C,EAAE,gCAAgC,GAACL,EAAA,MAAAK,GAAAL,EAAA,MAAAiD,MAAAjD,EAAA,QAAAU,SAAAV,EAAA,QAAAiD,OALpDpB,KAAA,oBAAC,KAAD;GAAc,SAAA;GAAU,OAAAe;GACtB,UAAA,oBAAC,WAAD;IACY,UAAA;IACJxE,MAAAA;IACI,UAAA0E;IACG,aAAAG;IACL,QAAA;IACDvC,OAAAA;GAAK,CAAA;EAPZ,CAAA,GASEV,EAAA,MAAAU,OAAAV,EAAA,MAAAiD,KAAAjD,EAAA,MAAA6B,MAAAA,KAAA7B,EAAA,KACLsB,KAAA/C;EAAI,IAAA2E;EAAA,AAAAlD,EAAA,QAAAiB,OAAAC,IAAA,2BAAA,KAGSgC,MAAA;GAAAP,OAAQ;GAAGQ,aAAe;EAAoC,GAACnD,EAAA,MAAAkD,OAAAA,MAAAlD,EAAA;EAAA,IAAAoD;EA2DxEpD,AA3DwEA,EAAA,QAAAQ,gBAAAR,EAAA,QAAA0C,kBAAA1C,EAAA,QAAAK,KAAAL,EAAA,QAAAG,SAEtEiD,MAAAV,eAAcW,WAAY,IACzB,oBAAC,KAAD;GAAc,SAAA;GACZ,UAAA,oBAAC,MAAD;IAAM,OAAA;IAAY,MAAA;IACfhD,UAAAA,EAAE,+BAA+B;GAD/B,CAAA;EADH,CAAA,IAMJqC,eAAcY,KAAKC,YAAA;GACjB,IAAAC,SAAerD,MAAM4B,QAAKrC,QAAX,CAAA,EAAA,CAAsB2D;GAAQ,OAE3C,oBAAC,UAAD;IAEe,eAAA,4BAA4BtB,QAAKrC;IACxC,MAAAH,wBAAwBwC,QAAKrC,GAAI;IAC/B,SAAA;IACH,MAAA;IACI,eAAMe,gBAAgBsB,QAAKrC,GAAI;IAC9B,UAAAqC,QAAKrC,QAASc;IAClB,MAAAgD,QAAQ,IAAR,GAAe/D,WAAWsC,QAAKrC,GAAI,EAAC,IAAK8D,MAAK,KAAM/D,WAAWsC,QAAKrC,GAAI;GAAC,GAP1EqC,QAAKrC,GAOqE;EAC/E,CAGR,GAACM,EAAA,MAAAQ,cAAAR,EAAA,MAAA0C,gBAAA1C,EAAA,MAAAK,GAAAL,EAAA,MAAAG,OAAAH,EAAA,MAAAoD,OAAAA,MAAApD,EAAA,KAAAA,EAAA,QAAAoD,MAEC1B,KAAA1B,EAAA,OA1BN0B,KAAA,oBAAC,KAAD;GAAY,OAAAwB;GACV,UAAA,oBAAC,OAAD;IAAgB,SAAA;IAAQ,KAAA;IACrBE,UAAAA;GADG,CAAA;EADJ,CAAA,GA0BEpD,EAAA,MAAAoD,KAAApD,EAAA,MAAA0B,KAGLL,KAAAhD,KAAG2B,EAAA,QAAAiB,OAAAC,IAAA,2BAAA,KAAQM,KAAA,EAAAiC,MAAO,EAAC,GAACzD,EAAA,MAAAwB,MAAAA,KAAAxB,EAAA,KAClByB,KAAAO,cACC,qBAAC,OAAD;GAAgB,SAAA;GAAQ,KAAA;GAAxB,UAAA,CACE,oBAAC,KAAD;IAAoB,eAAA;IAAe,YAAA;IAAa,UAAA;IAC9C,UAAA,oBAAC,MAAD;KAAM,OAAA;KAAY,MAAA;KAAU,QAAA;KACzBvC,UAAAA,WAAWuC,YAAWtC,GAAI;IADxB,CAAA;GADH,CAAA,GAKHsC,YAAW0B,OAAOJ,KAAKK,QAAA;IACtB,IAAAC,cAAoBzD,MAAM6B,YAAWtC,QAAjB,CAAA,EAAA,CAA4B+C,SAAWkB,GAAG;IAAC,OAE7D,oBAAC,UAAD;KAEe,eAAA,wBAAwB3B,YAAWtC,IAAI,GAAIiE;KAC7C,WAAAC,aAAA3F,gBAAA4F,KAAAA;KACH,SAAA;KACH,MAAA;KACI,eAAMzD,cAAc4B,YAAWtC,KAAMiE,GAAG;KACvCC,UAAAA;KACJD,MAAAA;IAAG,GAPJA,GAOI;GACT,CAEL,CApBG;EAuBN,CAAA,IAAA,oBAAC,MAAD;GAAY,OAAA;GAAgB,QAAA;GAAe,SAAA;GAAkB,SAAA;GAC3D,UAAA,oBAAC,MAAD;IAAY,OAAA;IAAS,OAAA;IAAY,MAAA;IAC9BtD,UAAAA,EAAE,qCAAqC;GADrC,CAAA;EADF,CAAA,GAKNL,EAAA,KAAAQ,cAAAR,EAAA,KAAAE,QAAAF,EAAA,KAAAI,eAAAJ,EAAA,KAAAU,OAAAV,EAAA,KAAAK,GAAAL,EAAA,KAAAG,OAAAH,EAAA,MAAAqB,IAAArB,EAAA,MAAAsB,IAAAtB,EAAA,MAAAuB,IAAAvB,EAAA,MAAAwB,IAAAxB,EAAA,MAAAyB,IAAAzB,EAAA,MAAA0B,IAAA1B,EAAA,MAAA2B,IAAA3B,EAAA,MAAA4B,IAAA5B,EAAA,MAAA6B;CAAA,OAAAA,AAAAR,KAAArB,EAAA,KAAAsB,KAAAtB,EAAA,KAAAuB,KAAAvB,EAAA,KAAAwB,KAAAxB,EAAA,KAAAyB,KAAAzB,EAAA,KAAA0B,KAAA1B,EAAA,KAAA2B,KAAA3B,EAAA,KAAA4B,KAAA5B,EAAA,KAAA6B,KAAA7B,EAAA;CAAA,IAAA8B;CAAA,AAAA9B,EAAA,QAAAqB,MAAArB,EAAA,QAAAwB,MAAAxB,EAAA,QAAAyB,MA9BHK,KAAA,oBAAC,IAAD;EAAY,OAAAN;EACTC,UAAAA;CADC,CAAA,GA+BEzB,EAAA,MAAAqB,IAAArB,EAAA,MAAAwB,IAAAxB,EAAA,MAAAyB,IAAAzB,EAAA,MAAA8B,MAAAA,KAAA9B,EAAA;CAAA,IAAAkC;CAAA,AAAAlC,EAAA,QAAAsB,MAAAtB,EAAA,QAAA0B,MAAA1B,EAAA,QAAA8B,MA/DRI,MAAA,qBAAC,IAAD,EAAA,UAAA,CAGER,IA6BAI,EAhCG,EAAA,CAAA,GAgEE9B,EAAA,MAAAsB,IAAAtB,EAAA,MAAA0B,IAAA1B,EAAA,MAAA8B,IAAA9B,EAAA,MAAAkC,OAAAA,MAAAlC,EAAA;CAAA,IAAA4C;CAAA,AAAA5C,EAAA,QAAAuB,MAAAvB,EAAA,QAAAkC,OAAAlC,EAAA,QAAA2B,MAAA3B,EAAA,QAAA4B,MAAA5B,EAAA,QAAA6B,MA3ETe,MAAA,qBAAC,IAAD;EAAY,KAAAjB;EAAU,OAAAC;EAAtB,UAAA,CACEC,IAUAK,GAXI;KA4EElC,EAAA,MAAAuB,IAAAvB,EAAA,MAAAkC,KAAAlC,EAAA,MAAA2B,IAAA3B,EAAA,MAAA4B,IAAA5B,EAAA,MAAA6B,IAAA7B,EAAA,MAAA4C,OAAAA,MAAA5C,EAAA;CA7EV,IAAA8D,UACElB,KA6EDE;CAAA,AAAA9C,EAAA,QAAAE,OAAA,EAAA,EAAAR,OAAAM,EAAA,QAAAM,QAQcwC,YAAA;EACP,AAAIxC,OACFa,MAAM,KAGNV,iBAAgBsD,SAAUA,QAAQ7D,OAAM,EAAQ,EAAAR,OAAtB,IAA8B,GACxDa,QAAQ,EAAI;CACb,GACFP,EAAA,MAAAE,OAAA,EAAA,EAAAR,KAAAM,EAAA,MAAAM,MAAAN,EAAA,MAAA8C,OAAAA,MAAA9C,EAAA;CAAA,IAAAiD;CAAA,AAAAjD,EAAA,QAAAK,IAE6B4C,MAAAjD,EAAA,OAAxBiD,MAAA5C,EAAE,qBAAqB,GAACL,EAAA,MAAAK,GAAAL,EAAA,MAAAiD;CAAA,IAAAC;CAAA,AAAAlD,EAAA,QAAAM,QAAAN,EAAA,QAAA8C,OAAA9C,EAAA,QAAAiD,OAdhCC,MAAA,oBAAC,UAAD;EACOrC,KAAAA;EACC7C,MAAAA;EACD,MAAA;EACI,SAAA8E;EASCxC,UAAAA;EACJ,MAAA2C;CAAwB,CAAA,GAC9BjD,EAAA,MAAAM,MAAAN,EAAA,MAAA8C,KAAA9C,EAAA,MAAAiD,KAAAjD,EAAA,MAAAkD,OAAAA,MAAAlD,EAAA;CAAA,IAAAoD;CACM,OADNpD,EAAA,QAAA8D,WAAA9D,EAAA,QAAAM,QAAAN,EAAA,QAAAkD,OAhBJE,MAAA,oBAAC,WAAD;EAAcrC,KAAAA;EAAuB+C;EAAexD;EAAgB,WAAA;EAAe,QAAA;EACjF4C,UAAAA;CADM,CAAA,GAiBElD,EAAA,MAAA8D,SAAA9D,EAAA,MAAAM,MAAAN,EAAA,MAAAkD,KAAAlD,EAAA,MAAAoD,OAAAA,MAAApD,EAAA,KAjBVoD;AAiBU;AAId,MAAMY,aAAmB,CAAC;;;;;AAgB1B,SAAAK,WAAAtE,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAoB,EAAAqE,MAAAC,UAAAC,aAAAzE,IASlB,EAAAM,MAAYhB,eAAeC,uBAAuB,GAClDmF,OAAaH,KAAIJ,MAAKlD;CAAA,AAAAhB,EAAA,OAAAiB,OAAAC,IAAA,2BAAA,KAEuBF,KAAA,EAAAyC,MAAO,OAAM,GAACzD,EAAA,KAAAgB,MAAAA,KAAAhB,EAAA;CAAA,IAAAoB;CAAA,AAAApB,EAAA,OAAAyE,OAM/CrD,KAAApB,EAAA,MAJNoB,KAAA,oBAAC,KAAD;EAAkB,aAAA;EAChB,UAAA,oBAAC,MAAD;GAAY,MAAA;GACV,UAAA,oBAAC,MAAD,CAAK,CAAA;EADF,CAAA;CADH,CAAA,GAIEpB,EAAA,KAAAyE,MAAAzE,EAAA,KAAAoB;CAAA,IAAAI;CAAA,AAAAxB,EAAA,OAAAsE,KAAAH,SAAAnE,EAAA,OAAAuE,YACL/C,KAAA,CAAC+C,YACA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAAU,OAAA,EAAAG,YAAa,SAAQ;EAC9CJ,UAAAA,KAAIH;CADF,CAAA,GAGNnE,EAAA,KAAAsE,KAAAH,OAAAnE,EAAA,KAAAuE,UAAAvE,EAAA,KAAAwB,MAAAA,KAAAxB,EAAA;CAAA,IAAAyB;CAAA,AAAAzB,EAAA,OAAAK,IAM0DoB,KAAAzB,EAAA,MAAjCyB,KAAApB,EAAE,8BAA8B,GAACL,EAAA,KAAAK,GAAAL,EAAA,KAAAyB;CAAA,IAAAC;CAAA,AAAA1B,EAAA,OAAAyB,KAACC,KAAA1B,EAAA,MAA5C0B,KAAA,EAAAoC,SAAUrC,GAAiC,GAACzB,EAAA,KAAAyB,IAAAzB,EAAA,KAAA0B;CAAA,IAAAC;CAAA,AAAA3B,EAAA,QAAAwE,YAAAxE,EAAA,QAAA0B,MAL5DC,KAAA,oBAAC,UAAD;EACQzD,MAAAA;EACD,MAAA;EACIsG,SAAAA;EACC,UAAA;EACI,cAAA9C;CAA4C,CAAA,GAC1D1B,EAAA,MAAAwE,UAAAxE,EAAA,MAAA0B,IAAA1B,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA;CAAA,IAAA4B;CAAA,AAAA5B,EAAA,QAAAoB,MAAApB,EAAA,QAAAwB,MAAAxB,EAAA,QAAA2B,MAlBNC,KAAA,oBAAC,MAAD;EAAM,QAAA;EAAgB,SAAA;EAAW,QAAA;EAAU,OAAAZ;EAAqB,MAAA;EAC9D,UAAA,qBAAC,MAAD;GAAY,OAAA;GAAc,KAAA;GAA1B,UAAA;IACEI;IAKCI;IAKDG;GAXG;;CADF,CAAA,GAoBE3B,EAAA,MAAAoB,IAAApB,EAAA,MAAAwB,IAAAxB,EAAA,MAAA2B,IAAA3B,EAAA,MAAA4B,MAAAA,KAAA5B,EAAA;CArBT,IAAA2E,OACE/C,IAqBDC;CASA,OATA7B,EAAA,QAAA2E,QAAA3E,EAAA,QAAAsE,KAAAF,SAAApE,EAAA,QAAAuE,YAGM1C,KAAA0C,WACL,oBAAC,WAAD;EAAkB,SAAA,oBAAC,MAAD;GAAY,MAAA;GAAID,UAAAA,KAAIF;EAAf,CAAA;EAA+B,QAAA;EACpD,UAAA,oBAAC,KAAD;GAAY,OAAA,EAAAX,MAAO,OAAM;GAAIkB,UAAAA;EAAzB,CAAA;CADE,CAAA,IADHA,MAMN3E,EAAA,MAAA2E,MAAA3E,EAAA,MAAAsE,KAAAF,OAAApE,EAAA,MAAAuE,UAAAvE,EAAA,MAAA6B,MAAAA,KAAA7B,EAAA,KANM6B;AAMN;;;;;;;AASH,SAAA+C,YAAA7E,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAqB,EAAA4E,OAAAL,aAAAzE,IAOnB,CAAA+E,WAAAC,gBAAkC9F,SAAS,EAAK,GAChD+F,eAAqBhG,OAA8B,IAAI,GACvDiG,aAAmBjG,OAA8B,IAAI,GAACgC,IAAAI;CAEtDtC,AAFsDkB,EAAA,OAAAiB,OAAAC,IAAA,2BAAA,KAE5CF,WAAA;EACR,IAAAkE,YAAkBF,aAAYG,SAC9BC,UAAgBH,WAAUE;EAC1B,IAAI,CAACD,aAAD,CAAeE,WAAW,OAAOC,iBAAmB,KAAW;EACnE,IAAAC,WAAiB,IAAID,qBAAe;GAClCN,aAAaK,QAAOG,cAAeL,UAASM,WAAY;EAAC,CAC1D;EAEwB,OADzBF,SAAQG,QAASP,SAAS,GAC1BI,SAAQG,QAASL,OAAO,SACXE,SAAQI,WAAY;CAAC,GACjCtE,KAAA,CAAA,GAAEpB,EAAA,KAAAgB,IAAAhB,EAAA,KAAAoB,OAAAJ,KAAAhB,EAAA,IAAAoB,KAAApB,EAAA,KAVLlB,UAAUkC,IAUPI,EAAE;CAAC,IAAAI;CAAA,AAAAxB,EAAA,OAAAiB,OAAAC,IAAA,2BAAA,KAMKM,KAAA;EAAAmE,UAAW;EAACC,UAAY;EAAQC,UAAY;CAAU,GAAC7F,EAAA,KAAAwB,MAAAA,KAAAxB,EAAA;CAAA,IAAAyB;CAAA,IAAAzB,EAAA,OAAA6E,SAAA7E,EAAA,OAAA8E,aAAA9E,EAAA,OAAAwE,UAAA;EAAA,IAAA9C;EAU1D1B,AAV0DA,EAAA,OAAA8E,aAAA9E,EAAA,OAAAwE,YAGjD9C,MAAA4C,SACT,oBAAC,YAAD;GACQA;GACIQ,UAAAA;GAEA,gBAAMN,SAASF,KAAI5E,KAAM4E,KAAIX,GAAI;EAAC,GADvC,GAAGW,KAAI5E,IAAI,GAAI4E,KAAIX,KACoB,GAE/C3D,EAAA,KAAA8E,WAAA9E,EAAA,KAAAwE,UAAAxE,EAAA,KAAA0B,MAAAA,KAAA1B,EAAA,IAPAyB,KAAAoD,MAAKvB,IAAK5B,EAOV,GAAC1B,EAAA,KAAA6E,OAAA7E,EAAA,KAAA8E,WAAA9E,EAAA,KAAAwE,UAAAxE,EAAA,KAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CAAA,IAAA0B;CAAA,AAAA1B,EAAA,QAAAyB,KACGC,KAAA1B,EAAA,OATP0B,KAAA,oBAAC,MAAD;EAAY,OAAA;EAAc,KAAA;EAAQ,MAAA;EAC/BD,UAAAA;CADE,CAAA,GASEzB,EAAA,MAAAyB,IAAAzB,EAAA,MAAA0B;CAAA,IAAAC;CAAA,AAAA3B,EAAA,QAAAiB,OAAAC,IAAA,2BAAA,KAMES,KAAA;EAAAmE,MACC;EAACC,eACQ;EAAMF,UACX;EAAUG,KACf;EAACC,YACM;CACd,GAACjG,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA;CAAA,IAAA4B;CAAA,AAAA5B,EAAA,QAAA6E,QAUCjD,KAAA5B,EAAA,OAPD4B,KAAAiD,MAAKvB,IAAK4C,OAOV,GAAClG,EAAA,MAAA6E,OAAA7E,EAAA,MAAA4B;CAAA,IAAAC;CAAA,AAAA7B,EAAA,QAAA4B,KACGC,KAAA7B,EAAA,OArBP6B,KAAA,oBAAC,MAAD;EACE,eAAA;EACK,KAAA;EACAoD,KAAAA;EACE,OAAAtD;EAOF,MAAA;EAEJC,UAAAA;CAbE,CAAA,GAqBE5B,EAAA,MAAA4B,IAAA5B,EAAA,MAAA6B;CAAA,IAAAC;CACH,OADG9B,EAAA,QAAA0B,MAAA1B,EAAA,QAAA6B,MArCTC,KAAA,qBAAC,KAAD;EACQ,MAAA;EACDkD,KAAAA;EACE,OAAAxD;EAHT,UAAA,CAKEE,IAWAG,EAhBE;KAsCE7B,EAAA,MAAA0B,IAAA1B,EAAA,MAAA6B,IAAA7B,EAAA,MAAA8B,MAAAA,KAAA9B,EAAA,KAtCN8B;AAsCM;;;;;;;;;;AA9DV,SAAAoE,QAAAC,QAAA;CAAA,OAsDU,oBAAC,YAAD;EACQ7B,MAAAA;EACI,UAAA;EAEAN,UAAAA;CAAI,GADT,WAAWM,OAAI5E,IAAI,GAAI4E,OAAIX,KAClB;AACd;AAgBZ,SAAOyC,wBAAArG,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAiC,EAAAC,QAAAC,OAAAkG,aAAAtG,IAStC,EAAAM,MAAYhB,eAAeC,uBAAuB,GAAC0B;CAAA,AAAAhB,EAAA,OAAAG,QAUlDa,KAAAhB,EAAA,MARiCgB,KAAAsF,OAAMC,QAASpG,KAAK,CAAC,CAAAqG,QAASC,QAQhE,GAACzG,EAAA,KAAAG,OAAAH,EAAA,KAAAgB;CARD,IAAA0F,cAAkC1F,IASlC2F,YAAkBD,YAAWrD,SAAU,GAACjC;CAAA,AAAApB,EAAA,OAAAqG,YAAArG,EAAA,OAAAG,SAGtCiB,MAAAwF,OAAAC,UAAA;EACE,IAAA1B,UAAgBhF,MAAMT,UAAN,CAAA,GAChBoH,OAAa3B,QAAO1C,SAAUkB,KAA0D,IAAnDwB,QAAO5C,QAAQwE,MAAOA,MAAMpD,KAAuB,IAA3E,CAAA,GAA+DwB,SAASxB,KAAG,GACxFqD,UAAgB,EAAA,GAAI7G,MAAK;EAGzBkG,AAFIS,KAAIzD,SAAU,IAAG2D,QAAQtH,SAAOoH,OAC/B,OAAOE,QAAQtH,QACpB2G,SAASW,OAAO;CAAC,GAClBhH,EAAA,KAAAqG,UAAArG,EAAA,KAAAG,OAAAH,EAAA,KAAAoB,MAAAA,KAAApB,EAAA;CARH,IAAAiH,cAAoB7F;CAYpB,IAAIlB,OAAMmD,WAAY,GAAC,OAAS;CAAI,IAAA7B;CAAA,AAAAxB,EAAA,OAAA2G,YAKyDnF,KAAAxB,EAAA,MAAhDwB,KAAAmF,YAAA9C,KAAAA,IAAA,EAAAqD,SAAkC,cAAa,GAAClH,EAAA,KAAA2G,WAAA3G,EAAA,KAAAwB;CAAA,IAAAC;CAAA,AAAAzB,EAAA,OAAAiB,OAAAC,IAAA,2BAAA,KAE9DO,KAAA,EAAAgC,MAAO,OAAM,GAACzD,EAAA,KAAAyB,MAAAA,KAAAzB,EAAA;CAAA,IAAA0B;CAAA,AAAA1B,EAAA,OAAAiB,OAAAC,IAAA,2BAAA,KAAvCQ,KAAA,oBAAC,KAAD;EAAe,UAAA;EAAU,OAAAD;EACvB,UAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAChB,UAAA,oBAAC,YAAD,CAAW,CAAA;EADR,CAAA;CADH,CAAA,GAIEzB,EAAA,KAAA0B,MAAAA,KAAA1B,EAAA;CAAA,IAAA2B;CAAA,AAAA3B,EAAA,OAAAiB,OAAAC,IAAA,2BAAA,KAEMS,KAAA,EAAA8B,MAAO,OAAM,GAACzD,EAAA,KAAA2B,MAAAA,KAAA3B,EAAA;CAAA,IAAA4B;CAAA,AAAA5B,EAAA,QAAAE,UAAAF,EAAA,QAAAiH,eAAAjH,EAAA,QAAAG,SAA1ByB,KAAA,oBAAC,KAAD;EAAY,OAAAD;EACV,UAAA,oBAAC,eAAD;GAAuBzB;GAAuB+G,eAAAA;GAAoB9G;EAAK,CAAA;CADrE,CAAA,GAEEH,EAAA,MAAAE,QAAAF,EAAA,MAAAiH,aAAAjH,EAAA,MAAAG,OAAAH,EAAA,MAAA4B,MAAAA,KAAA5B,EAAA;CAAA,IAAA6B;CAAA,AAAA7B,EAAA,QAAA0G,eAAA1G,EAAA,QAAA2G,aAAA3G,EAAA,QAAAqG,YAAArG,EAAA,QAAAK,KAAAL,EAAA,QAAAiH,eAELpF,KAAA8E,aAAA,qBAAA,YAAA,EAAA,UAAA;EAGG,oBAAC,KAAD,EACS,OAAA;GAAAlD,MAAO;GAAMd,OAAS;GAACwE,QAAU;GAAEC,YAAc;EAA0B,EAAC,CAAA;EAErF,oBAAC,aAAD;GAAoBV,OAAAA;GAAuBO,UAAAA;EAAW,CAAA;EACtD,oBAAC,KAAD;GAAY,OAAA,EAAAxD,MAAO,OAAM;GACvB,UAAA,oBAAC,UAAD;IACQvF,MAAAA;IACD,MAAA;IACI,eAAMmI,SAAS,CAAC,CAAC;IACpB,MAAAhG,EAAE,2BAA2B;IAC9B,MAAA;GAAS,CAAA;EANd,CAAA;CAQE,EAAA,CAAA,GAETL,EAAA,MAAA0G,aAAA1G,EAAA,MAAA2G,WAAA3G,EAAA,MAAAqG,UAAArG,EAAA,MAAAK,GAAAL,EAAA,MAAAiH,aAAAjH,EAAA,MAAA6B,MAAAA,KAAA7B,EAAA;CAAA,IAAA8B;CAAA,AAAA9B,EAAA,QAAA4B,MAAA5B,EAAA,QAAA6B,MA5BHC,KAAA,qBAAC,MAAD;EAAY,OAAA;EAAc,KAAA;EAAQ,MAAA;EAAlC,UAAA;GACEJ;GAMAE;GAICC;EAXE;KA6BE7B,EAAA,MAAA4B,IAAA5B,EAAA,MAAA6B,IAAA7B,EAAA,MAAA8B,MAAAA,KAAA9B,EAAA;CAAA,IAAAkC;CACF,OADElC,EAAA,QAAAwB,MAAAxB,EAAA,QAAA8B,MA9BTI,MAAA,oBAAC,MAAD;EAAM,QAAA;EAAgB,SAAA;EAAW,QAAA;EAAU,OAAAV;EACzCM,UAAAA;CADG,CAAA,GA+BE9B,EAAA,MAAAwB,IAAAxB,EAAA,MAAA8B,IAAA9B,EAAA,MAAAkC,OAAAA,MAAAlC,EAAA,KA/BPkC;AA+BO;AAtEJ,SAAAuE,SAAA1G,IAAA;CAW4D,IAAA,CAAAL,KAAAgE,UAAA3D;CAAa,OAC5E2D,OAAMJ,KAAKK,SAAU;EAAAjE;EAAAiE;EAAAO,MAGb3E,wBAAwBG,GAAG;EAACyE,OAC3BR;EAAGS,OACH,GAAG3E,WAAWC,GAAG,EAAC,IAAKiE;CAChC,EAAE;AAAC;ACnTP,SAAO0E,kBAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAA2B,EAAAC,eAAAC,YAAAJ,IAOhC,EAAAK,MAAYd,eAAeI,uBAAuB,GAACW;CAAA,AAAAL,EAAA,OAAAG,UACNE,KAAAL,EAAA,MAAxBK,KAAAR,gBAAgBM,OAAO,GAACH,EAAA,KAAAG,SAAAH,EAAA,KAAAK;CAA7C,IAAAC,eAAqBD,IACrB,CAAAE,kBAAAC,uBAAgDtB,SAAS,EAAK,GAACuB;CAAA,AAAAT,EAAA,OAAAE,iBAAAF,EAAA,OAAAM,gBAUvBG,KAAA;EAAAP;EAAAI;CAA4B,GAACN,EAAA,KAAAE,eAAAF,EAAA,KAAAM,cAAAN,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CATrE,IAAA,EAAAU,gBAAAC,uBAAAC,yBAAAC,qBAAAC,cAAAC,oBAAAC,YAAAV,cAAAW,uBASIxB,uBAAuBU,QAAOe,KAAMT,EAA6B,GAACU;CAAA,AAAAnB,EAAA,OAAAgB,aAKQG,KAAAnB,EAAA,MAAhEmB,KAAA,oBAAC,mBAAD;EAA6BH,UAAAA;EAAqBA,SAAAA;CAAU,CAAA,GAAIhB,EAAA,KAAAgB,YAAAhB,EAAA,KAAAmB;CAAA,IAAAC;CAAA,AAAApB,EAAA,OAAAG,QAAAe,MACxBE,KAAApB,EAAA,MAAzBoB,KAAAxB,aAAaO,QAAOe,GAAI,GAAClB,EAAA,KAAAG,QAAAe,KAAAlB,EAAA,KAAAoB;CAA5C,IAAAC,KAAA,mBAAmBD,MAA2BE;CAAA,AAAAtB,EAAA,OAAAuB,OAAAC,IAAA,2BAAA,KAKnCF,WAAMd,oBAAoB,EAAI,GAACR,EAAA,KAAAsB,MAAAA,KAAAtB,EAAA;CAAA,IAAAyB;CAAA,AAAAzB,EAAA,QAAAI,IACDqB,KAAAzB,EAAA,OAAjCyB,KAAArB,EAAE,8BAA8B,GAACJ,EAAA,MAAAI,GAAAJ,EAAA,MAAAyB;CAAA,IAAAC;CAAA,AAAA1B,EAAA,QAAAyB,KACvCC,KAAA1B,EAAA,OAJF0B,KAAA,oBAAC,YAAD;EACQ5C,MAAAA;EACG,SAAAwC;EACH,MAAAG;CAAiC,CAAA,GACvCzB,EAAA,MAAAyB,IAAAzB,EAAA,MAAA0B;CAAA,IAAAC;CAAA,AAAA3B,EAAA,QAAAuB,OAAAC,IAAA,2BAAA,KACFG,KAAA,oBAAC,aAAD,CAAY,CAAA,GAAG3B,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA;CAAA,IAAA4B;CAAA,AAAA5B,EAAA,QAAAI,IAK4BwB,MAAA5B,EAAA,OAAnC4B,MAAAxB,EAAE,gCAAgC,GAACJ,EAAA,MAAAI,GAAAJ,EAAA,MAAA4B;CAAA,IAAAC;CAAA,AAAA7B,EAAA,QAAAW,wBAEyCkB,MAAA7B,EAAA,OAApE6B,MAAAlB,wBAAA,EAAAmB,SAAkCnB,sBAAiC,IAAnEoB,KAAAA,GAAoE/B,EAAA,MAAAW,uBAAAX,EAAA,MAAA6B;CAAA,IAAAG;CAAA,AAAAhC,EAAA,QAAAU,kBAAAV,EAAA,QAAAc,gBAAAd,EAAA,QAAA4B,OAAA5B,EAAA,QAAA6B,OANpFG,MAAA,oBAAC,YAAD;EACYtB,UAAAA;EACJ3B,MAAAA;EACG+B,SAAAA;EACH,MAAAc;EACD,MAAA;EACS,cAAAC;CAAoE,CAAA,GAClF7B,EAAA,MAAAU,gBAAAV,EAAA,MAAAc,cAAAd,EAAA,MAAA4B,KAAA5B,EAAA,MAAA6B,KAAA7B,EAAA,MAAAgC,OAAAA,MAAAhC,EAAA;CAAA,IAAAiC;CAAA,AAAAjC,EAAA,QAAAgC,OAAAhC,EAAA,QAAA0B,MAdJO,MAAA,qBAAC,MAAD,EAAA,UAAA;EACEP;EAKAC;EACAK;CAPG,EAAA,CAAA,GAeEhC,EAAA,MAAAgC,KAAAhC,EAAA,MAAA0B,IAAA1B,EAAA,MAAAiC,OAAAA,MAAAjC,EAAA;CAAA,IAAAkC;CAAA,AAAAlC,EAAA,QAAAuB,OAAAC,IAAA,2BAAA,KAEAU,MAAA;EAAAC,WAAY;EAAYC,QAAU;CAAI,GAACpC,EAAA,MAAAkC,OAAAA,MAAAlC,EAAA;CAAA,IAAAqC;CAAA,AAAArC,EAAA,QAAAiC,OAAAjC,EAAA,QAAAmB,MAAAnB,EAAA,QAAAqB,MArBlDgB,MAAA,oBAAC,cAAD;EACU,QAAAlB;EACJ,IAAAE;EAEF,MAAAY;EAiBO,SAAAC;CAAuC,CAAA,GAChDlC,EAAA,MAAAiC,KAAAjC,EAAA,MAAAmB,IAAAnB,EAAA,MAAAqB,IAAArB,EAAA,MAAAqC,OAAAA,MAAArC,EAAA;CAAA,IAAAsC;CAAA,AAAAtC,EAAA,QAAAO,oBAAAP,EAAA,QAAAG,WACDmC,MAAA/B,oBACC,oBAAC,mBAAD;EACY,gBAAMC,oBAAoB,EAAK;EAC/B,gBAAMA,oBAAoB,EAAK;EAChCL;CAAO,CAAA,GAEnBH,EAAA,MAAAO,kBAAAP,EAAA,MAAAG,SAAAH,EAAA,MAAAsC,OAAAA,MAAAtC,EAAA;CAAA,IAAAuC;CAAA,AAAAvC,EAAA,QAAAiB,sBAAAjB,EAAA,QAAAY,2BAAAZ,EAAA,QAAAa,uBAAAb,EAAA,QAAAe,sBAAAf,EAAA,QAAAgB,cACAuB,MAAAxB,sBACC,oBAAC,qBAAD;EACcC;EACHJ,SAAAA;EACEC,WAAAA;EACGI,cAAAA;CAAkB,CAAA,GAEnCjB,EAAA,MAAAiB,oBAAAjB,EAAA,MAAAY,yBAAAZ,EAAA,MAAAa,qBAAAb,EAAA,MAAAe,oBAAAf,EAAA,MAAAgB,YAAAhB,EAAA,MAAAuC,OAAAA,MAAAvC,EAAA;CAAA,IAAAwC;CACA,OADAxC,EAAA,QAAAqC,OAAArC,EAAA,QAAAsC,OAAAtC,EAAA,QAAAuC,OAtCHC,MAAA,qBAAA,YAAA,EAAA,UAAA;EACEH;EAuBCC;EAOAC;CAOA,EAAA,CAAA,GACAvC,EAAA,MAAAqC,KAAArC,EAAA,MAAAsC,KAAAtC,EAAA,MAAAuC,KAAAvC,EAAA,MAAAwC,OAAAA,MAAAxC,EAAA,KAvCHwC;AAuCG;;;;;ACzEP,MAAMC,aACJ,kOAGIC,aAAa;CAAC;CAAkB;CAAkB;CAAoB;AAAiB,GAEvFC,eAAe;CAAC;CAAkB;CAAiB;AAAkB,GAErEC,cAAc,CAAC,iBAAiB,iBAAiB,GAE1CC,4BAAsB;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAW/BF,KAAA,qBAAA,KAAA;EAAY,SAAA;EAAZ,UAAA,CACE,oBAAA,QAAA;GACKP,GAAAA;GACE,MAAA;GACE,QAAA;GACM,aAAA;GACH,WAAA;EAAkB,CAAA,GAE9B,oBAAA,QAAA;GACKA,GAAAA;GACE,MAAA;GACE,QAAA;GACM,aAAA;GACH,WAAA;EAAgB,CAAA,CAE1B;KAAAK,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAAA,IAAAK;CAAA,AAAAL,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAGJC,KAAA,oBAAA,KAAA;EAAY,SAAA;EACV,UAAA,qBAAA,KAAA;GAAa,WAAA;GAAb,UAAA,CACE,oBAAA,QAAA;IACKV,GAAAA;IACE,MAAA;IACE,QAAA;IACM,aAAA;GAAG,CAAA,GAEjBE,aAAYS,IAAKC,OASjB,CACC;;CACF,CAAA,GAAAP,EAAA,KAAAK,MAAAA,KAAAL,EAAA;CAAA,IAAAQ;CAAA,AAAAR,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAEJI,KAAA,oBAAA,KAAA;EAAY,SAAA;EACV,UAAA,qBAAA,KAAA;GAAa,WAAA;GAAb,UAAA,CACE,oBAAA,QAAA;IACKb,GAAAA;IACE,MAAA;IACE,QAAA;IACM,aAAA;GAAG,CAAA,GAEjBC,WAAUa,MAAO,GAAG,CAAC,CAAC,CAAAH,IAAKI,QAS3B,CACC;;CACF,CAAA,GAAAV,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CAAA,IAAAW;CAAA,AAAAX,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAEJO,KAAA,oBAAA,KAAA;EAAY,SAAA;EACV,UAAA,qBAAA,KAAA;GAAa,WAAA;GAAb,UAAA,CACE,oBAAA,QAAA;IACKhB,GAAAA;IACE,MAAA;IACE,QAAA;IACM,aAAA;GAAG,CAAA,GAEjBG,YAAWQ,IAAKM,MAShB,CACC;;CACF,CAAA,GAAAZ,EAAA,KAAAW,MAAAA,KAAAX,EAAA;CAAA,IAAAa;CAAA,AAAAb,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAGJS,KAAA,qBAAA,KAAA;EAAY,SAAA;EAAa,QAAA;EAA0C,aAAA;EAAmB,eAAA;EAAtF,UAAA;GACE,oBAAA,QAAA;IAAQ,GAAA;IAAgC,MAAA;GAAM,CAAA;GAC9C,oBAAA,QAAA;IAAQ,GAAA;IAAiC,MAAA;GAAM,CAAA;GAC/C,oBAAA,QAAA;IAAQ,GAAA;IAAkC,MAAA;GAAM,CAAA;EAC9C;KAAAb,EAAA,KAAAa,MAAAA,KAAAb,EAAA;CAAA,IAAAc;CAsBA,OAtBAd,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAhGNU,KAAA,qBAAA,OAAA;EACc,eAAA;EACA,eAAA;EACN,OAAA;EACC,QAAA;EACC,SAAA;EACH,MAAA;EACC,OAAA;EAPR,UAAA;GAUEZ;GAkBAG;GAqBAG;GAqBAG;GAsBAE;GAOA,qBAAA,KAAA;IAAa,WAAA;IAAb,UAAA,CACE,oBAAA,QAAA;KACKlB,GAAAA;KACE,MAAA;KACE,QAAA;KACM,aAAA;KACJ,SAAA;IAAI,CAAA,GAEdC,WAAUU,IAAKS,MASf,CACC;;EACA;KAAAf,EAAA,KAAAc,MAAAA,KAAAd,EAAA,IAtHNc;AAsHM;AAvH2B,SAAAP,QAAAS,GAAA;CAAA,OAsCzB,oBAAA,QAAA;EAEKA;EACI,QAAA;EACM,aAAA;EACC,eAAA;EACL,SAAA;CAAI,GALRA,CAKQ;AACb;AA7CuB,SAAAN,SAAAO,KAAA;CAAA,OA2DzB,oBAAA,QAAA;EAEKD,GAAAA;EACI,QAAA;EACM,aAAA;EACC,eAAA;EACL,SAAA;CAAG,GALPA,GAKO;AACZ;AAlEuB,SAAAJ,OAAAM,KAAA;CAAA,OAgFzB,oBAAA,QAAA;EAEKF,GAAAA;EACI,QAAA;EACM,aAAA;EACC,eAAA;EACL,SAAA;CAAI,GALRA,GAKQ;AACb;AAvFuB,SAAAD,OAAAI,KAAAC,OAAA;CAAA,OA6G3B,oBAAA,QAAA;EAEKJ,GAAAA;EACI,QAAA;EACM,aAAA;EACC,eAAA;EACL,SAAA,MAAOI,QAAQ;CAAI,GALvBJ,GAKuB;AAC5B;ACvHV,MAEaiB,sBAAqBC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAP,wBAAAK,IACjC,EAAAG,MAAYZ,eAAeC,uBAAuB,GAACY;CAAA,AAAAH,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KASxCF,KAAA,EAAAG,UAAWnB,IAAI,GAAG,EAAC,GAACa,EAAA,KAAAG,MAAAA,KAAAH,EAAA;CAAA,IAAAO;CAAA,AAAAP,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KAG3BE,KAAA,oBAAC,qBAAD,CAAoB,CAAA,GAAGP,EAAA,KAAAO,MAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAAA,AAAAR,EAAA,OAAAE,IAEDM,KAAAR,EAAA,MAAnBQ,KAAAN,EAAE,gBAAgB,GAACF,EAAA,KAAAE,GAAAF,EAAA,KAAAQ;CAAA,IAAAC;CAAA,AAAAT,EAAA,OAAAQ,KACfC,KAAAT,EAAA,MAFPS,KAAA,oBAAC,MAAD;EAAS,IAAA;EAAW,MAAA;EAAU,QAAA;EAAuB,eAAA;EAClDD,UAAAA;CADE,CAAA,GAEER,EAAA,KAAAQ,IAAAR,EAAA,KAAAS;CAAA,IAAAC;CAAA,AAAAV,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KACqBK,KAAA,EAAAC,WAAY,SAAQ,GAACX,EAAA,KAAAU,MAAAA,KAAAV,EAAA;CAAA,IAAAY;CAAA,AAAAZ,EAAA,OAAAE,IACTU,KAAAZ,EAAA,MAArCY,KAAAV,EAAE,kCAAkC,GAACF,EAAA,KAAAE,GAAAF,EAAA,KAAAY;CAAA,IAAAC;CAAA,AAAAb,EAAA,OAAAY,KACjCC,KAAAb,EAAA,OAFPa,KAAA,oBAAC,MAAD;EAAY,MAAA;EAAG,OAAA;EAAa,OAAAH;EACzBE,UAAAA;CADE,CAAA,GAEEZ,EAAA,KAAAY,IAAAZ,EAAA,MAAAa;CAAA,IAAAC;CAAA,AAAAd,EAAA,QAAAE,IAQqCY,KAAAd,EAAA,OAAlCc,KAAAZ,EAAE,+BAA+B,GAACF,EAAA,MAAAE,GAAAF,EAAA,MAAAc;CAAA,IAAAC;CAAA,AAAAf,EAAA,QAAAc,KACxCC,KAAAf,EAAA,OANFe,KAAA,oBAAC,UAAD;EACK,IAAA;EACGlB,MAAAA;EACC,QAAA;EACF,MAAA;EACC,MAAAiB;CAAkC,CAAA,GACxCd,EAAA,MAAAc,IAAAd,EAAA,MAAAe;CAAA,IAAAC;CAAA,AAAAhB,EAAA,QAAAN,uBAAAM,EAAA,QAAAe,MARJC,MAAA,qBAAC,MAAD;EAAW,KAAA;EAAX,UAAA,CACGtB,qBACDqB,EAFG;KASEf,EAAA,MAAAN,qBAAAM,EAAA,MAAAe,IAAAf,EAAA,MAAAgB,OAAAA,MAAAhB,EAAA;CAAA,IAAAiB;CACF,OADEjB,EAAA,QAAAgB,OAAAhB,EAAA,QAAAS,MAAAT,EAAA,QAAAa,MAzBTI,MAAA,qBAAC,MAAD;EACQ,OAAA;EACM,eAAA;EACN,MAAA;EACI,WAAA;EACL,KAAA;EACE,OAAAd;EACQ,eAAA;EAPjB,UAAA;GASEI;GACAE;GAGAI;GAGAG;EAhBG;KA0BEhB,EAAA,MAAAgB,KAAAhB,EAAA,MAAAS,IAAAT,EAAA,MAAAa,IAAAb,EAAA,MAAAiB,OAAAA,MAAAjB,EAAA,KA1BPiB;AA0BO,GCpBLuB,wBAA4DC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAC,EAAAC,WAAAC,UAAAJ;CACjE,IAAII,MAAKC,aAAcD,MAAKN,kBAAmBQ,KAAAA,GAAS;EAAA,IAAAC;EAAA,AAAAN,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KAGlDF,KAAA,oBAAC,MAAD;GAAY,MAAA;GACV,UAAA,oBAAC,UAAD;IAAU,UAAA;IAAiB,QAAA;IAAU,OAAA,EAAAG,OAAQ,MAAK;GAAC,CAAA;EADhD,CAAA,GAEET,EAAA,KAAAM,MAAAA,KAAAN,EAAA;EAAA,IAAAU;EACF,OADEV,EAAA,OAAAE,YACFQ,KAAAV,EAAA,MAJPU,KAAA,oBAAC,MAAD;GAAK,GAAKR;GAAiB,OAAA;GAAmB,UAAA;GAAa,UAAA;GAAU,QAAA;GACnEI,UAAAA;EADG,CAAA,GAIEN,EAAA,KAAAE,WAAAF,EAAA,KAAAU,KAJPA;CAIO;CAOJ,IAAAJ,KAAAH,MAAKN,kBAAmB,OAAxB,MAAqCM,MAAKN,eAAca;CAAA,AAAAV,EAAA,OAAAM,KACpDI,KAAAV,EAAA,MAFPU,KAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EACfJ,UAAAA;CADE,CAAA,GAEEN,EAAA,KAAAM,IAAAN,EAAA,KAAAU;CAAA,IAAAC;CACF,OADEX,EAAA,OAAAE,aAAAF,EAAA,OAAAU,MAHTC,KAAA,oBAAC,MAAD;EAAK,GAAKT;EAAiB,OAAA;EAAmB,UAAA;EAAa,UAAA;EAAU,QAAA;EACnEQ,UAAAA;CADG,CAAA,GAIEV,EAAA,KAAAE,WAAAF,EAAA,KAAAU,IAAAV,EAAA,KAAAW,MAAAA,KAAAX,EAAA,IAJPW;AAIO,GAILC,oBAAwDb,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAC,WAAAC,OAAAU,YAAAd,IAC7D,EAAAe,MAAY5B,eAAeK,uBAAuB,GAACe;CAAA,AAAAN,EAAA,OAAAa,QAAAE,MAEDT,KAAAN,EAAA,MAAzBM,KAAAb,aAAaoB,QAAOE,GAAI,GAACf,EAAA,KAAAa,QAAAE,KAAAf,EAAA,KAAAM;CAAlD,IAAAU,mBAAyBV,IAAyBI;CAAA,AAAAV,EAAA,OAAAgB,mBAS7CN,KAAAV,EAAA,MALDU,KAAA,SAAAO,qBAAAC,WAAA;EAGE,IAAA,EAAAC,KAAA,GAAAC,SAAuBF;EAAS,OACzB,oBAAC,WAAD;GAAU,GAAKE;GAAWD;GAAY,OAAA,EAAAE,WAAYL,iBAAgB;EAAC,CAAA;CAAI,GAC/EhB,EAAA,KAAAgB,kBAAAhB,EAAA,KAAAU;CAPL,IAAAY,cAEIZ;CASJ,IAAIG,QAAOT,WAAU;EAAA,IAAAO;EAAA,AAAAX,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KAIbG,KAAA,oBAAC,MAAD;GAAY,MAAA;GAAU,QAAA;GACpB,UAAA,oBAAC,UAAD;IAAU,UAAA;IAAiB,QAAA;IAAU,OAAA,EAAAF,OAAQ,OAAM;GAAC,CAAA;EADjD,CAAA,GAEET,EAAA,KAAAW,MAAAA,KAAAX,EAAA;EAAA,IAAAuB;EAAA,AAAAvB,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KAHTe,KAAA,qBAAC,OAAD;GAAY,KAAA;GAAZ,UAAA,CACEZ,IAGA,oBAAC,MAAD;IAAM,OAAA;IAAY,MAAA;IAChB,UAAA,oBAAC,UAAD;KAAU,UAAA;KAAiB,QAAA;KAAU,OAAA,EAAAF,OAAQ,OAAM;IAAC,CAAA;GADjD,CAAA,CAJD;MAOET,EAAA,KAAAuB,MAAAA,KAAAvB,EAAA;EAAA,IAAAwB;EACJ,OADIxB,EAAA,OAAAE,YACJsB,KAAAxB,EAAA,MATNwB,KAAA,oBAAC,KAAD;GAAI,GAAKtB;GAAiB,MAAA;GAAgB,aAAA;GAAiB,cAAA;GAAa,UAAA;GAAU,QAAA;GAChFqB,UAAAA;EADE,CAAA,GASEvB,EAAA,KAAAE,WAAAF,EAAA,KAAAwB,KATNA;CASM;CAET,IAAAb;CAAA,AAAAX,EAAA,OAAAa,QAAAY,aAEkEd,KAAAX,EAAA,MAA5CW,KAAAjB,yBAAyBmB,QAAOY,UAAW,GAACzB,EAAA,KAAAa,QAAAY,YAAAzB,EAAA,KAAAW;CAAnE,IAAAe,iBAAuBf,IAA4CY;CAAA,AAAAvB,EAAA,QAAAO,OAAAC,IAAA,2BAAA,KAS1Be,KAAA,EAAAI,UAAW,EAAC,GAAC3B,EAAA,MAAAuB,MAAAA,KAAAvB,EAAA;CAAA,IAAAwB;CAAA,AAAAxB,EAAA,QAAAa,UAEfW,KAAAxB,EAAA,OAAxBwB,KAAA7B,gBAAgBkB,OAAO,GAACb,EAAA,MAAAa,SAAAb,EAAA,MAAAwB;CAAA,IAAAI;CAAA,AAAA5B,EAAA,QAAAwB,KACpBI,KAAA5B,EAAA,OAFP4B,KAAA,oBAAC,MAAD;EAAY,MAAA;EAAgB,cAAA;EAAkB,QAAA;EAC3CJ,UAAAA;CADE,CAAA,GAEExB,EAAA,MAAAwB,IAAAxB,EAAA,MAAA4B;CAAA,IAAAC;CAAA,AAAA7B,EAAA,QAAA0B,kBAAA1B,EAAA,QAAAc,KAEJe,KAAAH,kBAAkBZ,EAAE,8BAA8B,GAACd,EAAA,MAAA0B,gBAAA1B,EAAA,MAAAc,GAAAd,EAAA,MAAA6B,MAAAA,KAAA7B,EAAA;CAAA,IAAA8B;CAAA,AAAA9B,EAAA,QAAA6B,KAC/CC,KAAA9B,EAAA,OAFP8B,KAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAAgB,cAAA;EAC/BD,UAAAA;CADE,CAAA,GAEE7B,EAAA,MAAA6B,IAAA7B,EAAA,MAAA8B;CAAA,IAAAC;CAAA,AAAA/B,EAAA,QAAA4B,MAAA5B,EAAA,QAAA8B,MATXC,KAAA,oBAAC,MAAD;EAAY,OAAA;EAAc,KAAA;EAGxB,UAAA,qBAAC,OAAD;GAAa,MAAA;GAAQ,KAAA;GAAU,OAAAR;GAA/B,UAAA,CACEK,IAGAE,EAJI;;CAHH,CAAA,GAWE9B,EAAA,MAAA4B,IAAA5B,EAAA,MAAA8B,IAAA9B,EAAA,MAAA+B,MAAAA,KAAA/B,EAAA;CAAA,IAAAgC;CAAA,AAAAhC,EAAA,QAAAsB,eAAAtB,EAAA,QAAA+B,MAbXC,MAAA,oBAAC,MAAD;EAAY,OAAA;EAAc,KAAA;EACxB,UAAA,oBAAC,MAAD;GAAUV,IAAAA;GAAqB,WAAA;GAAU,MAAA;GAAY,SAAA;GAAW,QAAA;GAAQ,MAAA;GACtES,UAAAA;EADG,CAAA;CADF,CAAA,GAeE/B,EAAA,MAAAsB,aAAAtB,EAAA,MAAA+B,IAAA/B,EAAA,MAAAgC,OAAAA,MAAAhC,EAAA;CAAA,IAAAiC;CACH,OADGjC,EAAA,QAAAE,aAAAF,EAAA,QAAAgC,OAhBTC,MAAA,oBAAC,KAAD;EAAI,GAAK/B;EAAiB,MAAA;EAAgB,aAAA;EAAiB,cAAA;EAAa,UAAA;EAAU,QAAA;EAChF8B,UAAAA;CADE,CAAA,GAiBEhC,EAAA,MAAAE,WAAAF,EAAA,MAAAgC,KAAAhC,EAAA,MAAAiC,OAAAA,MAAAjC,EAAA,KAjBNiC;AAiBM;AAIV,SAAgBC,2BACdpB,GACwB;CACxB,OAAO,CACL;EACEqB,IAAI;EACJC,SAAS;EACT3B,OAAO;EACP4B,OAAO,EAACV,UAAU,+BAA8B;EAChDW,SAASC,UACP,oBAAC,MAAD;GACE,GAAIA,MAAMC;GACV,MAAM;GACN,aAAa;GACb,cAAc;GACd,UAAU;GACV,QAAO;GAEP,UAAA,oBAAC,QAAQ,kBAAT;IAA0B,GAAID;IAAO,MAAMzB,EAAE,wBAAwB;GAAE,CAAA;EACnE,CAAA;EAER2B,MAAM7B;EACN8B,gBAAgB7B,YAAYlB,gBAAgBkB,OAAO;CACrD,GACA;EACEsB,IAAI;EACJC,SAAS;EACT3B,OAAO;EACP6B,SAAS,EAACE,kBACR,oBAAC,MAAD;GAAM,GAAIA;GAAa,UAAU;GAAG,QAAO;GACzC,UAAA,oBAAC,QAAQ,aAAT,EAAqB,MAAM1B,EAAE,0BAA0B,EAAE,CAAA;EACrD,CAAA;EAER2B,MAAM3C;CACR,CAAC;AAEL;AC9GA,MACMyE,aAAaC,YAAkCA,QAAQC,KAGvDC,mBAAmBF,SAAuBG,SAC9Cb,wBAAwB,CAACU,OAAO,GAAGG,IAAI,CAAC,CAACC,SAAS;AAEpD,SAAOC,mBAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAC,MAAY1B,eAAeI,uBAAuB,GAClDuB,SAAe7B,UAAU,GACzB,EAAA8B,MAAAC,UAAAC,OAAAC,YAAyC1B,eAAe,GACxD,CAAA2B,2BAAAC,gCAAkEpC,SAAS,EAAK,GAACqC;CAAA,AAAAV,EAAA,OAAAW,OAAAC,IAAA,2BAAA,KACEF,KAAA,CAAC,GAACV,EAAA,KAAAU,MAAAA,KAAAV,EAAA;CAArF,IAAA,CAAAa,kBAAAC,uBAAgDzC,SAAmCqC,EAAE,GAACK;CAAA,AAAAf,EAAA,OAAAW,OAAAC,IAAA,2BAAA,KAE9CG,WAAMN,6BAA6B,EAAI,GAACT,EAAA,KAAAe,MAAAA,KAAAf,EAAA;CAAhF,IAAAgB,sBAA4BD,IAAyDE;CAAA,AAAAjB,EAAA,OAAAG,SAMlFc,KAAAjB,EAAA,MAHDiB,MAAAC,qBAAA;EAEEf,AADAM,6BAA6B,EAAK,GAClCN,OAAMgB,SAAU,EAAAC,WAAYnC,aAAaiC,gBAAgB,EAAC,CAAC;CAAC,GAC7DlB,EAAA,KAAAG,QAAAH,EAAA,KAAAiB;CAJH,IAAAI,wBAA8BJ,IAM7BK;CAAA,AAAAtB,EAAA,OAAAE,IAE6DoB,KAAAtB,EAAA,MAA7BsB,KAAA/B,2BAA2BW,CAAC,GAACF,EAAA,KAAAE,GAAAF,EAAA,KAAAsB;CAA9D,IAAAC,aAAiCD,IAEjCE,mBAAyBC,OAQxBC;CAAA,AAAA1B,EAAA,OAAAK,WAEgDqB,KAAA1B,EAAA,MAAd0B,KAAArB,YAAA,CAAA,GAAcL,EAAA,KAAAK,UAAAL,EAAA,KAAA0B;CAAjD,IAAAC,eAAmCD,IACnC,EAAAtB,MAAAwB,gBAAAtB,OAAAuB,wBAA2DlD,0BAA0B,GAACmD;CAAA,AAAA9B,EAAA,OAAA2B,eAGvBG,KAAA9B,EAAA,MAAlC8B,KAAA/C,qBAAqB4C,YAAY,GAAC3B,EAAA,KAAA2B,cAAA3B,EAAA,KAAA8B;CAA/D,IAAAC,SAA6BD,IAAmDE;CAAA,IAAAhC,EAAA,QAAAa,oBAAAb,EAAA,QAAA4B,kBAAA5B,EAAA,QAAA6B,uBAAA7B,EAAA,QAAA2B,cAAA;EAAA,IAAAM;EAAA,AAAAjC,EAAA,QAAAa,mBAOIoB,KAAAjC,EAAA,OAAtEiC,MAAAvC,YAAaR,+BAA+BQ,SAASmB,gBAAgB,GAACb,EAAA,MAAAa,kBAAAb,EAAA,MAAAiC;EAAA,IAAAC;EAI3ElC,AAJ2EA,EAAA,QAAA4B,kBAAA5B,EAAA,QAAA6B,uBACzEK,MAAAC,eAA4B;GAAA,GAC5BzC;GAAO0C,eACKR,iBAAiBlC,UAAOC,SAAUkC,sBAAA,OAAAQ,KAAAA;EACnD,IAAErC,EAAA,MAAA4B,gBAAA5B,EAAA,MAAA6B,qBAAA7B,EAAA,MAAAkC,MAAAA,KAAAlC,EAAA,KALJgC,KAAAL,aAAYW,OACFL,EAAsE,CAAC,CAAAM,IAC1EL,EAGH,GAAClC,EAAA,MAAAa,kBAAAb,EAAA,MAAA4B,gBAAA5B,EAAA,MAAA6B,qBAAA7B,EAAA,MAAA2B,cAAA3B,EAAA,MAAAgC;CAAA,OAAAA,KAAAhC,EAAA;CAPT,IAAAwC,OAEIR,IASJS,cAAoBd,aAAY7B,SAAU,GAC1C4C,4BACQC,OAAMC,OAAQ/B,gBAAgB,CAAC,CAAAgC,KAAMC,MAA6B,GAEzEb;CAAA,AAAAjC,EAAA,QAAAE,IAQ2C+B,KAAAjC,EAAA,OAAhCiC,KAAA/B,EAAE,6BAA6B,GAACF,EAAA,MAAAE,GAAAF,EAAA,MAAAiC;CAAA,IAAAC;CAAA,AAAAlC,EAAA,QAAAQ,6BAAAR,EAAA,QAAAiC,MAJxCC,KAAA,oBAAC,UAAD;EACY1B,UAAAA;EACJ3C,MAAAA;EACGmD,SAAAA;EACH,MAAAiB;CAAgC,CAAA,GACtCjC,EAAA,MAAAQ,2BAAAR,EAAA,MAAAiC,IAAAjC,EAAA,MAAAkC,MAAAA,KAAAlC,EAAA;CAPN,IAAA+C,sBAEIb,IAQHc;CAAA,AAAAhD,EAAA,QAAA+C,uBAAA/C,EAAA,QAAAM,SAAAN,EAAA,QAAA0C,6BAAA1C,EAAA,QAAAyC,eAAAzC,EAAA,QAAAwC,KAAA1C,UAAAE,EAAA,QAAAE,KAEmC8C,WAC9B1C,SAAA,CAAUmC,cAEV,oBAAC,MAAD;EAAY,OAAA;EAAmB,WAAA;EAAc,KAAA;EAAW,SAAA;EAAkB,SAAA;EACxE,UAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GACfvC,UAAAA,EAAE,gBAAgB;EADhB,CAAA;CADF,CAAA,IAQLuC,eAAAC,6BAA4CF,KAAI1C,WAAY,IAE5D,oBAAC,MAAD;EAAY,OAAA;EAAmB,WAAA;EAAc,KAAA;EAAW,SAAA;EAAkB,SAAA;EACxE,UAAA,oBAAC,MAAD;GAAkB,eAAA;GAA8B,OAAA;GAAY,MAAA;GACzDI,UAAAA,EAAE,yCAAyC;EADzC,CAAA;CADF,CAAA,IAQF,oBAAC,oBAAD,EAAyC6C,oBAAmB,CAAA,GACpE/C,EAAA,MAAA+C,qBAAA/C,EAAA,MAAAM,OAAAN,EAAA,MAAA0C,2BAAA1C,EAAA,MAAAyC,aAAAzC,EAAA,MAAAwC,KAAA1C,QAAAE,EAAA,MAAAE,GAAAF,EAAA,MAAAgD,MAAAA,KAAAhD,EAAA;CAtBD,IAAAiD,kBAAwBD,IAsBgEE;CAAA,AAAAlD,EAAA,QAAAE,IAYpDgD,MAAAlD,EAAA,OAAnBkD,MAAAhD,EAAE,gBAAgB,GAACF,EAAA,MAAAE,GAAAF,EAAA,MAAAkD;CAAA,IAAAC;CAAA,AAAAnD,EAAA,QAAAkD,MACfC,MAAAnD,EAAA,OAFPmD,MAAA,oBAAC,MAAD;EAAS,IAAA;EAAW,MAAA;EAAU,QAAA;EAC3BD,UAAAA;CADE,CAAA,GAEElD,EAAA,MAAAkD,KAAAlD,EAAA,MAAAmD;CAAA,IAAAC;CAAA,AAAApD,EAAA,QAAAE,IAEqBkD,MAAApD,EAAA,OAAzBoD,MAAAlD,EAAE,sBAAsB,GAACF,EAAA,MAAAE,GAAAF,EAAA,MAAAoD;CAAA,IAAAC;CAAA,AAAArD,EAAA,QAAAoD,MACrBC,MAAArD,EAAA,OAFPqD,MAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EACfD,UAAAA;CADE,CAAA,GAEEpD,EAAA,MAAAoD,KAAApD,EAAA,MAAAqD;CAAA,IAAAC;CAAA,AAAAtD,EAAA,QAAAmD,OAAAnD,EAAA,QAAAqD,OANTC,MAAA,qBAAC,OAAD;EAAY,KAAA;EAAZ,UAAA,CACEH,KAGAE,GAJI;KAOErD,EAAA,MAAAmD,KAAAnD,EAAA,MAAAqD,KAAArD,EAAA,MAAAsD,OAAAA,MAAAtD,EAAA;CAAA,IAAAuD;CAAA,AAAAvD,EAAA,QAAA+C,uBAAA/C,EAAA,QAAAsD,OATZC,MAAA,oBAAC,MAAD;EAAW,MAAA;EAAsB,eAAA;EAAe,YAAA;EAC9C,UAAA,qBAAC,MAAD;GAAY,OAAA;GAAkB,KAAA;GAAW,SAAA;GAAzC,UAAA,CACED,KAQCP,mBATE;;CADF,CAAA,GAYE/C,EAAA,MAAA+C,qBAAA/C,EAAA,MAAAsD,KAAAtD,EAAA,MAAAuD,OAAAA,MAAAvD,EAAA;CAAA,IAAAwD;CAAA,AAAAxD,EAAA,QAAAM,SAAAN,EAAA,QAAAE,KAENsD,MAAAlD,SACC,oBAAC,MAAD;EAAW,MAAA;EAAqB,cAAA;EAAY,SAAA;EAAQ,MAAA;EAClD,UAAA,oBAAC,MAAD;GAAY,MAAA;GAAIJ,UAAAA,EAAE,gBAAgB;EAA7B,CAAA;CADF,CAAA,GAGNF,EAAA,MAAAM,OAAAN,EAAA,MAAAE,GAAAF,EAAA,MAAAwD,OAAAA,MAAAxD,EAAA;CAAA,IAAAyD;CAAA,AAAAzD,EAAA,QAAAuD,OAAAvD,EAAA,QAAAwD,OApBLC,MAAA,oBAAC,WAAD;EAAgB,MAAA;EAAc,OAAA;EAC5B,UAAA,qBAAC,MAAD;GAAgB,WAAA;GAAmB,UAAA;GAAnC,UAAA,CACEF,KAcCC,GAfE;;CADG,CAAA,GAsBExD,EAAA,MAAAuD,KAAAvD,EAAA,MAAAwD,KAAAxD,EAAA,MAAAyD,OAAAA,MAAAzD,EAAA;CAAA,IAAA0D;CAAA,AAAA1D,EAAA,QAAAa,oBAAAb,EAAA,QAAA+B,UAgBR2B,MAAA3B,OAAMjC,SAAU,IACd,oBAAC,yBAAD;EACUiC;EACEjB,UAAAA;EACHD,OAAAA;CAAgB,CAAA,IAJ3BwB,KAAAA,GAMarC,EAAA,MAAAa,kBAAAb,EAAA,MAAA+B,QAAA/B,EAAA,MAAA0D,OAAAA,MAAA1D,EAAA;CAAA,IAAA2D;CAAA,AAAA3D,EAAA,QAAAE,IASoCyD,MAAA3D,EAAA,OAAhC2D,MAAAzD,EAAE,6BAA6B,GAACF,EAAA,MAAAE,GAAAF,EAAA,MAAA2D;CAAA,IAAAC;CAAA,AAAA5D,EAAA,QAAAuB,cAAAvB,EAAA,QAAAO,WAAAP,EAAA,QAAAwC,QAAAxC,EAAA,QAAA0D,OAAA1D,EAAA,QAAA2D,OAAA3D,EAAA,QAAAiD,mBA1BrDW,MAAA,oBAAC,eAAD;EACE,uBAAA;EACYrC;EAGU,sBAAA;EACV0B,YAAAA;EAKV,YAAAS;EAQgB,kBAAA;EACPjE;EACR,IAAA;EACMc;EACGiB,YAAAA;EACLhC,OAAAA;EACDgD;EACa,mBAAAmB;EACF/D;CAAe,CAAA,GAChCI,EAAA,MAAAuB,YAAAvB,EAAA,MAAAO,SAAAP,EAAA,MAAAwC,MAAAxC,EAAA,MAAA0D,KAAA1D,EAAA,MAAA2D,KAAA3D,EAAA,MAAAiD,iBAAAjD,EAAA,MAAA4D,OAAAA,MAAA5D,EAAA;CAAA,IAAA6D;CAAA,AAAA7D,EAAA,QAAAqB,yBAAArB,EAAA,QAAAQ,6BAEDqD,MAAArD,6BACC,oBAAC,qBAAD;EACY,gBAAMC,6BAA6B,EAAK;EACxCY,UAAAA;CAAqB,CAAA,GAElCrB,EAAA,MAAAqB,uBAAArB,EAAA,MAAAQ,2BAAAR,EAAA,MAAA6D,OAAAA,MAAA7D,EAAA;CAAA,IAAA8D;CACI,OADJ9D,EAAA,QAAAyD,OAAAzD,EAAA,QAAA4D,OAAA5D,EAAA,QAAA6D,OAjEHC,MAAA,qBAAC,MAAD;EAAgB,WAAA;EAAe,MAAA;EAAU,QAAA;EAAzC,UAAA;GAGEL;GA2BAG;GA8BCC;EA5DE;KAkEE7D,EAAA,MAAAyD,KAAAzD,EAAA,MAAA4D,KAAA5D,EAAA,MAAA6D,KAAA7D,EAAA,MAAA8D,OAAAA,MAAA9D,EAAA,KAlEP8D;AAkEO;AA7JJ,SAAAhB,OAAAF,QAAA;CAAA,OAkDoDA,OAAM9C,SAAU;AAAC;AAlDrE,SAAA2B,MAAAf,IAAA;CAoBF,IAAA,EAAAqD,UAAArD;CAAyB,OACxB,oBAAC,mBAAD;EACiB,eAACqD,MAAqB3B;EAC5B,SAAA2B;CAAsB,CAAA;AAC/B;AClDR,SAAOI,eAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACLC,SAAeN,UAAU,GACzBO,YAAkB,OAAOD,OAAME,MAAMD,aAAe,WAAWD,OAAME,MAAMD,YAAzDE,KAAAA;CAElB,IAAIF,WAAS;EAAA,IAAAG;EAC6B,OAD7BN,EAAA,OAAAG,YAC6BG,KAAAN,EAAA,MAAjCM,KAAA,oBAAC,eAAD,CAA6B,GAATH,SAAS,GAAIH,EAAA,KAAAG,WAAAH,EAAA,KAAAM,KAAjCA;CAAiC;CACzC,IAAAA;CAE0B,OAF1BN,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KAEMF,KAAA,oBAAC,kBAAD,CAAiB,CAAA,GAAGN,EAAA,KAAAM,MAAAA,KAAAN,EAAA,IAApBM;AAAoB"}
|
|
1
|
+
{"version":3,"file":"VariantsTool-E4ptTHik.js","names":["SanityDocument","DocumentSystem","DOCUMENT_SYSTEM_FIELD","VariantDocumentVersion","toVariantDocumentVersion","document","system","group","_ref","documentId","_id","bundleId","undefined","releaseRef","release","updatedAt","_updatedAt","useMemo","BundleDocument","useBundleDocuments","DocumentInVariant","toVariantDocumentVersion","getVariantId","useVariantDocuments","variantId","$","_c","enabled","Boolean","t0","t1","params","t2","t3","groqFilter","cacheKey","loading","results","error","t4","toDocumentInVariants","variantResults","t5","t6","t7","flatMap","result","version","document","DocumentSystem","PerspectiveBundle","DOCUMENT_SYSTEM_FIELD","isPublishedBundleId","DocumentInVariant","DocumentInVariantGroup","DocumentValidationStatus","VariantDocumentVersion","getBundleSortOrder","bundleId","compareVariantDocumentVersions","left","right","leftOrder","rightOrder","documentId","localeCompare","pickRepresentativeDocument","documents","reduce","latest","current","latestUpdatedAt","document","_updatedAt","currentUpdatedAt","aggregateValidation","representative","isValidating","some","validation","flatMap","revision","hasError","groupVariantDocumentsByGroup","groups","Map","system","groupId","group","_ref","existingGroup","get","push","set","Array","from","entries","map","groupDocuments","versions","item","version","toSorted","SanityClient","getVariantId","EditableSystemVariant","variantsClient","VariantDefinitionActionResult","VariantOperationsStore","createVariant","variant","Promise","updateVariant","deleteVariant","variantId","createVariantOperationsStore","options","client","handleCreateVariant","_id","action","actionType","const","conditions","priority","metadata","tag","handleUpdateVariant","setPayload","Pick","Partial","patch","set","unset","handleDeleteVariant","variantIdOrDocumentId","useMemo","useClient","VARIANTS_STUDIO_CLIENT_OPTIONS","createVariantOperationsStore","useVariantOperations","$","_c","studioClient","t0","client","EditableSystemVariant","getVariantTitleValue","variant","title","metadata","trim","getIsVariantInvalid","getHasValidConditions","conditions","entries","Object","length","every","key","value","Boolean","CONDITION_KEY_REGEX","CONDITION_SEPARATOR","RESERVED_KEY_PREFIXES","const","ConditionKeyValidationError","ConditionValueValidationError","getConditionKeyValidationError","key","trimmedKey","trim","undefined","prefix","startsWith","includes","test","getConditionValueValidationError","value","PriorityValidationError","getPriorityValidationError","priority","Number","isFinite","undefined","getPriorityInputValidationError","input","trim","customAlphabet","VARIANT_DOCUMENTS_PATH","createVariantIdSuffix","createVariantId","PortableTextBlock","randomKey","EditableSystemVariant","createVariantId","getVariantDefaults","_id","_type","conditions","priority","metadata","title","description","createPortableTextDescription","text","trimmedText","trim","_key","children","marks","markDefs","style","SystemVariant","ConditionSuggestionOption","value","ConditionSuggestionIndex","keys","valuesByKey","Map","sortValues","values","Iterable","Array","from","filter","Boolean","toSorted","a","b","localeCompare","buildConditionSuggestionIndex","variants","Set","forEach","variant","Object","entries","conditions","rawKey","rawValue","key","trim","add","get","set","getConditionKeyOptions","index","rows","ReadonlyArray","currentRowIndex","usedKeys","_","rowIndex","map","row","has","getConditionValueOptions","conditionKey","filterConditionOption","query","option","toLowerCase","includes","Autocomplete","useCallback","useId","useState","ConditionSuggestionOption","filterConditionOption","ConditionAutocompleteInputProps","ariaLabel","autoFocus","customValidity","invalid","onChange","value","options","placeholder","testId","ConditionAutocompleteInput","props","$","_c","id","focused","setFocused","t0","nextValue","handleQueryChange","t1","undefined","t2","Symbol","for","t3","t4","t5","isPortableTextBlock","toPlainText","AddIcon","HelpCircleIcon","TrashIcon","Path","PortableTextBlock","Box","Flex","Inline","Stack","Text","TextArea","TextInput","randomKey","ChangeEvent","useCallback","useId","useMemo","useState","Button","Tooltip","TextWithTone","useTranslation","VariantsLocaleResourceKeys","variantsLocaleNamespace","useAllVariants","EditableSystemVariant","getConditionKeyValidationError","getConditionValueValidationError","getVariantTitleValue","getPriorityInputValidationError","createPortableTextDescription","ConditionAutocompleteInput","buildConditionSuggestionIndex","getConditionKeyOptions","getConditionValueOptions","ConditionRow","id","key","value","ConditionRowValidation","getConditionRows","conditions","rows","Object","entries","map","length","getConditionsFromRows","reduce","row","trim","isConditionRowEmpty","getEmptyConditionRowValidation","getConditionRowsValidation","Map","conditionRowsValidation","seenKeys","Set","forEach","index","validation","has","add","keyError","valueError","set","hasConditionRowsValidationErrors","Array","from","values","some","getPortableTextDescriptionValue","description","isArray","every","VariantFormChangeHandler","path","VariantForm","props","$","_c","onChange","onConditionValidityChange","onPriorityValidityChange","showValidation","t0","undefined","t","data","variants","t1","suggestionIndex","titleId","descriptionId","priorityId","t2","conditionRows","setConditionRows","t3","priority","String","priorityInput","setPriorityInput","t4","conditionsValidation","t5","hasTitle","Boolean","showTitleError","t6","priorityValidationError","showPriorityError","lastConditionRow","t7","canAddCondition","t8","nextRows","nextRowsValidation","nextRowsInvalid","updateConditionRows","t9","event","currentTarget","handleTitleChange","t10","event_0","handleDescriptionChange","t11","event_1","rawValue","nextValue","valueAsNumber","priorityValidationError_0","Number","isFinite","handlePriorityChange","t12","field","nextValue_0","nextRows_0","rowIndex","handleConditionChange","t13","handleAddCondition","t14","index_0","nextRows_1","filter","_","rowIndex_0","handleRemoveCondition","t15","t16","t17","t18","t19","t20","metadata","title","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","t34","Symbol","for","t35","t36","t37","t38","t39","t40","t41","t42","t43","t44","t45","t46","t47","row_0","index_1","get","valueValidation","conditionValidationError","nextValue_1","nextValue_2","content","t48","t49","t50","t51","t52","t53","t54","at","set","applyPatches","Box","Card","Flex","useToast","FormEvent","useCallback","useState","Button","Dialog","useTranslation","variantsLocaleNamespace","EditableSystemVariant","getIsVariantInvalid","VariantForm","VariantFormChangeHandler","VariantDialogProps","confirmDataTestId","confirmText","errorTitle","header","id","initialValue","onCancel","onSubmit","variant","Promise","renderCancelButton","VariantDialog","props","$","_c","t0","undefined","toast","t","setVariant","isSubmitting","setIsSubmitting","showValidation","setShowValidation","conditionsInvalid","setConditionsInvalid","priorityInvalid","setPriorityInvalid","t1","invalid","t2","Symbol","for","path","nextValue","currentVariant","handleVariantChange","t3","event","preventDefault","t4","error","console","push","closable","status","title","handleSubmit","t5","t6","t7","t8","t9","t10","t11","useCallback","useMemo","useTranslation","variantsLocaleNamespace","useVariantOperations","EditableSystemVariant","SystemVariant","VariantDialog","EditVariantDialogProps","onCancel","onSubmit","variant","toEditableVariant","_id","_type","conditions","priority","metadata","EditVariantDialog","props","$","_c","initialVariant","t","updateVariant","t0","initialValue","t1","handleSubmit","t2","t3","t4","t5","Text","Dialog","useTranslation","variantsLocaleNamespace","DeleteVariantDialogProps","isDeleting","onClose","onConfirm","variantTitle","DeleteVariantDialog","t0","$","_c","t","t1","disabled","t2","t3","loading","onClick","text","tone","t4","cancelButton","confirmButton","t5","t6","undefined","t7","title","t8","t9","useToast","useCallback","useMemo","useState","useTranslation","variantsLocaleNamespace","useVariantOperations","UseVariantDeleteActionOptions","documentCount","documentsLoading","onDeleted","variantTitle","useVariantDeleteAction","variantId","options","deleteDisabled","deleteDisabledTooltip","handleCloseDeleteDialog","handleConfirmDelete","Promise","handleDelete","isDeleteDialogOpen","isDeleting","t","toast","deleteVariant","setIsDeleting","setIsDeleteDialogOpen","hasDocuments","countUnknown","undefined","count","error","console","push","closable","status","title","EllipsisHorizontalIcon","TrashIcon","Menu","useRouter","Button","MenuButton","MenuItem","useTranslation","DeleteVariantDialog","useVariantDeleteAction","variantsLocaleNamespace","SystemVariant","getVariantTitle","VariantMenuButton","t0","$","_c","documentCount","documentsLoading","t1","variant","undefined","t","router","t2","variantTitle","t3","navigate","t4","onDeleted","deleteDisabled","deleteDisabledTooltip","handleCloseDeleteDialog","handleConfirmDelete","handleDelete","isDeleteDialogOpen","isDeleting","dialogVariantTitle","_id","t5","t6","t7","content","t8","t9","t10","t11","t12","t13","Symbol","for","placement","portal","t14","t15","t16","EditIcon","useState","Button","DetailActionRail","useTranslation","EditVariantDialog","variantsLocaleNamespace","SystemVariant","VariantMenuButton","VariantActionRail","t0","$","_c","documentCount","documentsLoading","variant","t","editDialogOpen","setEditDialogOpen","t1","Symbol","for","t2","t3","t4","t5","t6","t7","CalendarIcon","CaseIcon","DesktopIcon","EarthAmericasIcon","EarthGlobeIcon","FilterIcon","MobileDeviceIcon","PackageIcon","RocketIcon","SplitVerticalIcon","StarIcon","TagIcon","TargetIcon","TranslateIcon","UserIcon","UsersIcon","ComponentType","DIMENSION_ICONS","Record","audience","segment","cohort","role","location","region","country","market","geo","locale","language","lang","device","platform","environment","env","os","brand","campaign","plan","tier","subscription","industry","vertical","category","product","channel","source","date","season","getVariantConditionIcon","key","normalized","trim","toLowerCase","replace","ReleaseDocument","getReleaseDocumentIdFromReleaseId","isPublishedBundleId","isReleaseBundle","DocumentInVariantGroup","VariantDocumentVersion","ReleaseLaneKind","RELEASE_LANE_ALL","ResolvedVersionBundle","id","kind","release","resolveVersionBundle","version","releasesById","Map","bundleId","releaseRef","get","_id","releaseDocumentId","getRowBundleIds","row","Set","ids","versions","add","ReleaseLaneSegment","count","getKindOrder","bundleSortLabel","bundle","metadata","title","compareResolvedBundles","left","right","kindDelta","localeCompare","getSortedRowBundles","seen","resolved","has","set","Array","from","values","toSorted","computeReleaseLaneSegments","rows","segments","existing","segment","rowMatchesLane","laneId","getRowBundleSortKey","primary","getPrimaryBundle","TFunction","memo","DocumentInVariantGroup","VariantDocumentActions","_props","row","t","SanityDocument","getDocumentPreviewTitle","document","title","name","trim","_id","ReleaseDocument","Badge","Box","Flex","Stack","Text","useMemo","IntentLink","Tooltip","useTranslation","ReleaseAvatarIcon","ReleaseTitle","RELEASES_INTENT","getReleaseIdFromReleaseDocumentId","variantsLocaleNamespace","getSortedRowBundles","ReleaseLaneKind","VariantDocumentVersion","MAX_VISIBLE_CHIPS","ResolvedChip","key","kind","release","useChipLabel","$","_c","t","t0","chip","metadata","title","getChipTone","ChipIcon","t1","Symbol","for","ReleaseBundleChip","_id","releaseId","t2","t3","t4","t5","displayTitle","id","maxWidth","overflow","textOverflow","whiteSpace","VisibleChip","label","VariantDocumentBundleChips","versions","releasesById","getLabel","map","_temp","chips","visible","slice","minWidth","length","chip_0","resolved","ReleaseDocument","Box","Card","Flex","Text","useMemo","RefAttributes","IntentLink","PreviewLayoutKey","DocumentPreviewPresence","SanityDefaultPreview","ReleaseAvatarIcon","getReleaseIdFromReleaseDocumentId","useDocumentPresence","useDocumentPreviewValues","getPublishedId","isPublishedBundleId","getPrimaryBundle","DocumentInVariantGroup","VariantDocumentPreviewProps","row","releasesById","Map","layout","variantId","PrimaryBundleIcon","t0","$","_c","t1","primary","t2","kind","release","VariantDocumentPreviewLinkProps","React","ComponentPropsWithoutRef","publishedId","documentType","searchParams","Array","VariantDocumentPreviewLink","linkProps","ref","id","type","getVersionPerspectiveNavigation","bundleId","perspectiveStack","length","undefined","VariantDocumentPreview","groupId","documentPresence","document","_id","version","navBundleId","t3","t4","previewPresence","t5","_type","documentId","variant","isLoading","previewLoading","value","resolvedPreview","t6","t7","Symbol","for","minWidth","t8","t9","t10","t11","ReleaseDocument","CheckmarkCircleIcon","ClockIcon","ErrorOutlineIcon","Box","Flex","Text","TFunction","memo","ToneIcon","Tooltip","EditedByCell","RelativeTime","useSchema","SanityDefaultPreview","Headers","Column","getRowBundleSortKey","DocumentInVariantGroup","getDocumentPreviewTitle","VariantDocumentBundleChips","VariantDocumentPreview","versionsFingerprint","row","versions","map","v","documentId","bundleId","releaseRef","join","MemoVariantDocumentPreview","t0","$","_c","releasesById","variantId","t1","prev","next","memoKey","MemoDocumentType","DocumentType","type","schema","get","schemaType","t2","title","t3","ValidationStatusIndicator","datum","t","validation","hasError","T0","T1","T2","t4","t5","t6","t7","t8","t9","validationErrorCount","filter","_temp","length","Symbol","for","count","t10","t11","t12","t13","isValidating","level","getVariantDocumentTableColumnDefs","Map","id","hidden","width","sorting","sortTransform","rowKey","groupId","style","minWidth","maxWidth","header","props","headerProps","cell","cellProps","flex","overflow","isLoading","document","_type","toLowerCase","_updatedAt","_id","_rev","Flex","TabList","Tab","useTranslation","variantsLocaleNamespace","ReleaseLaneKind","RELEASE_LANE_ALL","ReleaseLaneSegment","getSegmentTone","kind","VariantReleaseLane","t0","$","_c","segments","totalCount","activeLane","onSelectLane","t","tCore","t1","label","count","t2","t3","t4","t5","t6","segment","release","metadata","title","isSelected","id","map","useCallback","useMemo","useState","useTranslation","useActiveReleases","DocumentTable","Column","searchDocumentRelease","variantsLocaleNamespace","computeReleaseLaneSegments","RELEASE_LANE_ALL","rowMatchesLane","DocumentInVariantGroup","VariantDocumentActions","getVariantDocumentTableColumnDefs","VariantReleaseLane","searchVariantDocument","row","searchTerm","document","VariantDocumentsTable","t0","$","_c","rows","loading","t1","variantId","undefined","t","activeLane","setActiveLane","data","releases","t2","Map","map","_temp","releasesById","t3","segments","activeLaneIsValid","some","segment","id","resolvedActiveLane","t4","filter","filtered","t5","_temp2","laneRows","t6","Symbol","for","laneId","previous","handleSelectLane","t7","t8","datum","renderRowActions","hasReleaseControls","length","columnDefs","t9","column","direction","t10","t11","t12","t13","_temp3","row_1","groupId","row_0","rowKey","release","_id","DocumentsIcon","EditIcon","SortIcon","UserIcon","Box","Card","Container","Flex","Skeleton","Stack","Text","useMemo","useRouter","DetailBackButton","DetailIdentity","DetailPropertiesPanel","DetailPropertiesSection","LoadingBlock","RelativeTime","useTranslation","useVariantDocuments","variantsLocaleNamespace","useAllVariants","decodeVariantIdFromRoute","getVariantDescription","getVariantId","getVariantTitle","groupVariantDocumentsByGroup","VariantActionRail","getVariantConditionIcon","VariantDocumentsTable","VariantDetail","$","_c","router","t","variantIdRaw","state","variantId","undefined","byId","loading","variant","get","documentsLoading","results","variantDocuments","error","variantDocumentsError","_id","t0","tableRows","t1","filter","_temp2","unpublishedCount","length","t2","bb0","t3","Symbol","for","conditions","conditionEntries","Object","entries","map","_temp3","label","value","conditionRows","t4","t5","title","multiColumn","rows","definitionSections","count","width","height","String","countValue","t6","t7","t8","icon","t9","t10","t11","t12","t13","priority","t14","_createdAt","t15","t16","documentSections","t17","t18","navigate","t19","t20","t21","t22","t23","t24","t25","description","minWidth","t26","t27","t28","t29","t30","t31","t32","t33","minHeight","t34","t35","key","DimensionIcon","row","versions","some","_temp","version","bundleId","useCallback","useMemo","useTranslation","variantsLocaleNamespace","useVariantOperations","getVariantDefaults","VariantDialog","CreateVariantDialogProps","onCancel","onSubmit","createdVariantId","CreateVariantDialog","props","$","_c","t","createVariant","t0","Symbol","for","initialValue","t1","variant","_id","handleSubmit","t2","t3","t4","t5","SanityClient","useMemo","useObservable","Observable","of","catchError","distinctUntilChanged","map","scan","startWith","switchMap","useClient","listenQuery","VARIANTS_STUDIO_CLIENT_OPTIONS","VariantStoreState","useVariantsStore","getVariantId","VariantsDocumentCountsQuery","fetch","listen","buildVariantsDocumentCountsQuery","variantDocumentIds","projections","filters","variantDocumentId","membership","JSON","stringify","push","join","VariantsDocumentCountsState","data","Record","loading","error","Error","INITIAL_STATE","EMPTY_STATE","listenVariantsDocumentCounts","client","length","tag","perspective","pipe","response","Object","fromEntries","getVariantsDocumentCounts","variantsState$","state","Array","from","variants","keys","toSorted","idsKey","split","previous","next","useVariantsDocumentCounts","$","_c","state$","t0","observable","AddIcon","CheckmarkIcon","CloseIcon","FilterIcon","SearchIcon","Box","Card","Flex","Stack","Text","TextInput","useClickOutsideEvent","ComponentType","useCallback","useEffect","useMemo","useRef","useState","Button","Popover","Tooltip","useTranslation","variantsLocaleNamespace","getVariantConditionIcon","ConditionFacet","facetLabel","key","charAt","toUpperCase","slice","AddFilterMenu","t0","$","_c","facets","value","onToggleValue","t","open","setOpen","dimensionKey","setDimensionKey","query","setQuery","buttonEl","setButtonEl","popoverEl","setPopoverEl","t1","Symbol","for","close","t2","T0","T1","T2","t3","t4","t5","t6","t7","t8","t9","facet","activeFacet","find","t10","bb0","normalized","trim","toLowerCase","filter","facet_0","includes","matchingFacets","width","t11","borderBottom","t12","event","currentTarget","t13","t14","borderRight","t15","length","map","facet_1","count","flex","values","val","isSelected","undefined","content","prev","NOOP","ActiveChip","icon","label","title","FilterChip","chip","iconOnly","onRemove","Icon","whiteSpace","body","ActiveChips","chips","collapsed","setCollapsed","containerRef","measureRef","container","current","measure","ResizeObserver","observer","scrollWidth","clientWidth","observe","disconnect","minWidth","overflow","position","left","pointerEvents","top","visibility","_temp","chip_0","VariantConditionFilters","onChange","Object","entries","flatMap","_temp2","activeChips","hasActive","key_0","val_0","next","v","updated","toggleValue","display","height","background","EditIcon","TrashIcon","Menu","MenuDivider","useState","MenuButton","MenuItem","ContextMenuButton","useTranslation","DeleteVariantDialog","EditVariantDialog","useVariantDeleteAction","variantsLocaleNamespace","SystemVariant","getVariantId","getVariantTitle","VariantMenuButton","t0","$","_c","documentCount","variant","t","t1","variantTitle","isEditDialogOpen","setIsEditDialogOpen","t2","deleteDisabled","deleteDisabledTooltip","handleCloseDeleteDialog","handleConfirmDelete","handleDelete","isDeleteDialogOpen","isDeleting","dialogVariantTitle","_id","t3","t4","t5","t6","Symbol","for","t7","t8","t9","t10","t11","content","undefined","t12","t13","t14","placement","portal","t15","t16","t17","t18","BASE_PANEL","LINES_FULL","LINES_MEDIUM","LINES_SHORT","VariantIllustration","$","_c","t0","Symbol","for","t1","map","_temp","t2","slice","_temp2","t3","_temp3","t4","t5","_temp4","d","d_0","d_1","d_2","index","Flex","rem","Text","Button","useTranslation","variantsLocaleNamespace","VariantIllustration","VariantsEmptyStateProps","createVariantButton","React","ReactNode","VARIANTS_DOCUMENTATION_URL","VariantsEmptyState","t0","$","_c","t","t1","Symbol","for","maxWidth","t2","t3","t4","t5","textAlign","t6","t7","t8","t9","t10","t11","Box","Card","Flex","Skeleton","Stack","Text","HTMLProps","useMemo","RefAttributes","StateLink","useTranslation","UseTranslationResponse","Headers","Column","VisibleColumn","variantsLocaleNamespace","SystemVariant","getVariantId","getVariantConditionsText","getVariantTitle","TableVariant","documentCount","VariantDocumentsCell","t0","$","_c","cellProps","datum","isLoading","undefined","t1","Symbol","for","width","t2","t3","VariantTitleCell","variant","t","_id","encodedVariantId","VariantLinkComponent","linkProps","ref","rest","variantId","VariantLink","t4","t5","conditions","conditionsText","minWidth","t6","t7","t8","t9","t10","t11","variantsOverviewColumnDefs","id","sorting","style","header","props","headerProps","cell","sortTransform","AddIcon","Card","Container","Flex","Stack","Text","useCallback","useMemo","useState","useRouter","Button","useTranslation","DocumentTable","CreateVariantDialog","useVariantsDocumentCounts","variantsLocaleNamespace","useAllVariants","SystemVariant","buildConditionFacets","filterVariantsForSearch","getVariantId","variantMatchesConditionFilters","VariantConditionFilters","VariantMenuButton","VariantsEmptyState","TableVariant","variantsOverviewColumnDefs","VARIANT_TABLE_ROW_ID","getRowKey","variant","_id","searchPredicate","term","length","VariantsOverview","$","_c","t","router","data","variants","error","loading","isCreateVariantDialogOpen","setIsCreateVariantDialogOpen","t0","Symbol","for","conditionFilters","setConditionFilters","t1","handleCreateVariant","t2","createdVariantId","navigate","variantId","handleOnCreateVariant","t3","columnDefs","renderRowActions","_temp","t4","variantsList","documentCounts","documentCountsError","t5","facets","t6","t7","t8","variant_0","documentCount","undefined","filter","map","rows","hasVariants","hasActiveConditionFilters","Object","values","some","_temp2","createVariantButton","t9","tableEmptyState","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","datum","useRouter","VariantDetail","VariantsOverview","VariantsTool","$","_c","router","variantId","state","undefined","t0","Symbol","for"],"sources":["../src/core/variants/tool/detail/variantDocumentVersion.ts","../src/core/variants/hooks/useVariantDocuments.ts","../src/core/variants/tool/detail/groupVariantDocumentsByGroup.ts","../src/core/variants/store/createVariantOperationsStore.ts","../src/core/variants/store/useVariantOperations.ts","../src/core/variants/util/getIsVariantInvalid.ts","../src/core/variants/util/conditionValidation.ts","../src/core/variants/util/priorityValidation.ts","../src/core/variants/util/createVariantId.ts","../src/core/variants/util/variantDefaults.ts","../src/core/variants/components/dialog/conditionSuggestions.ts","../src/core/variants/components/dialog/ConditionAutocompleteInput.tsx","../src/core/variants/components/dialog/VariantForm.tsx","../src/core/variants/components/dialog/VariantDialog.tsx","../src/core/variants/components/dialog/EditVariantDialog.tsx","../src/core/variants/components/dialog/DeleteVariantDialog.tsx","../src/core/variants/hooks/useVariantDeleteAction.ts","../src/core/variants/tool/detail/VariantMenuButton.tsx","../src/core/variants/tool/detail/VariantActionRail.tsx","../src/core/variants/tool/detail/variantConditionIcons.ts","../src/core/variants/tool/detail/releaseLane.ts","../src/core/variants/tool/detail/variantDocumentTable/VariantDocumentActions.tsx","../src/core/variants/tool/detail/variantDocumentTable/getDocumentPreviewTitle.ts","../src/core/variants/tool/detail/variantDocumentTable/VariantDocumentBundleChips.tsx","../src/core/variants/tool/detail/variantDocumentTable/VariantDocumentPreview.tsx","../src/core/variants/tool/detail/variantDocumentTable/VariantDocumentTableColumnDefs.tsx","../src/core/variants/tool/detail/VariantReleaseLane.tsx","../src/core/variants/tool/detail/VariantDocumentsTable.tsx","../src/core/variants/tool/detail/VariantDetail.tsx","../src/core/variants/components/dialog/CreateVariantDialog.tsx","../src/core/variants/hooks/useVariantsDocumentCounts.ts","../src/core/variants/tool/overview/VariantConditionFilters.tsx","../src/core/variants/tool/overview/VariantMenuButton.tsx","../src/core/variants/tool/resources/VariantIllustration.tsx","../src/core/variants/tool/overview/VariantsEmptyState.tsx","../src/core/variants/tool/overview/VariantsOverviewColumnDefs.tsx","../src/core/variants/tool/overview/VariantsOverview.tsx","../src/core/variants/tool/VariantsTool.tsx"],"sourcesContent":["import {type SanityDocument} from '@sanity/client'\nimport {type DocumentSystem} from '@sanity/types'\n\nimport {DOCUMENT_SYSTEM_FIELD} from '../../../preview/constants'\nimport {type VariantDocumentVersion} from './types'\n\n/**\n * @internal\n */\nexport function toVariantDocumentVersion(document: SanityDocument): VariantDocumentVersion | null {\n const system = document[DOCUMENT_SYSTEM_FIELD] as DocumentSystem | undefined\n\n if (!system?.group?._ref) {\n return null\n }\n\n return {\n documentId: document._id,\n bundleId: system.bundleId ?? undefined,\n releaseRef: system.release?._ref ?? null,\n updatedAt: document._updatedAt ?? '',\n }\n}\n","import {useMemo} from 'react'\n\nimport {\n type BundleDocument,\n useBundleDocuments,\n} from '../../releases/tool/detail/useBundleDocuments'\nimport {type DocumentInVariant} from '../tool/detail/types'\nimport {toVariantDocumentVersion} from '../tool/detail/variantDocumentVersion'\nimport {getVariantId} from '../tool/util'\n\n/**\n * Hook to fetch the documents that belong to a variant.\n *\n * Reuses the generic {@link useBundleDocuments} machinery with\n * `sanity::partOfVariant($variantId)`.\n *\n * @internal\n */\nexport function useVariantDocuments(variantId: string | undefined): {\n loading: boolean\n results: DocumentInVariant[]\n error: null | Error\n} {\n const enabled = Boolean(variantId)\n const params = useMemo(() => ({variantId: variantId ? getVariantId(variantId) : ''}), [variantId])\n\n const {loading, results, error} = useBundleDocuments({\n groqFilter: `sanity::partOfVariant($variantId)`,\n params,\n cacheKey: enabled ? `variant-${variantId}` : 'variant-disabled',\n enabled,\n })\n\n const variantResults = useMemo(\n () => (enabled ? toDocumentInVariants(results) : []),\n [enabled, results],\n )\n\n return {\n loading: enabled && loading,\n results: variantResults,\n error: enabled ? error : null,\n }\n}\n\nfunction toDocumentInVariants(results: BundleDocument[]): DocumentInVariant[] {\n return results.flatMap((result) => {\n const version = toVariantDocumentVersion(result.document)\n\n return version ? [{...result, version}] : []\n })\n}\n","import {type DocumentSystem} from '@sanity/types'\n\nimport {type PerspectiveBundle} from '../../../perspective/types'\nimport {DOCUMENT_SYSTEM_FIELD} from '../../../preview/constants'\nimport {isPublishedBundleId} from '../util'\nimport {\n type DocumentInVariant,\n type DocumentInVariantGroup,\n type DocumentValidationStatus,\n type VariantDocumentVersion,\n} from './types'\n\nfunction getBundleSortOrder(bundleId: PerspectiveBundle | undefined): number {\n if (isPublishedBundleId(bundleId)) {\n return 0\n }\n\n if (bundleId === 'drafts') {\n return 1\n }\n\n return 2\n}\n\nfunction compareVariantDocumentVersions(\n left: VariantDocumentVersion,\n right: VariantDocumentVersion,\n): number {\n const leftOrder = getBundleSortOrder(left.bundleId)\n const rightOrder = getBundleSortOrder(right.bundleId)\n\n if (leftOrder !== rightOrder) {\n return leftOrder - rightOrder\n }\n\n return left.documentId.localeCompare(right.documentId)\n}\n\nfunction pickRepresentativeDocument(documents: DocumentInVariant[]): DocumentInVariant {\n return documents.reduce((latest, current) => {\n const latestUpdatedAt = latest.document._updatedAt ?? ''\n const currentUpdatedAt = current.document._updatedAt ?? ''\n\n return currentUpdatedAt > latestUpdatedAt ? current : latest\n })\n}\n\nfunction aggregateValidation(documents: DocumentInVariant[]): DocumentValidationStatus {\n const representative = pickRepresentativeDocument(documents)\n\n return {\n isValidating: documents.some((document) => document.validation.isValidating),\n validation: documents.flatMap((document) => document.validation.validation),\n revision: representative.validation.revision,\n hasError: documents.some((document) => document.validation.hasError),\n }\n}\n\n/**\n * Groups flat variant document versions into one row per document group.\n *\n * @internal\n */\nexport function groupVariantDocumentsByGroup(\n documents: DocumentInVariant[],\n): DocumentInVariantGroup[] {\n const groups = new Map<string, DocumentInVariant[]>()\n\n for (const document of documents) {\n const system = document.document[DOCUMENT_SYSTEM_FIELD] as DocumentSystem | undefined\n const groupId = system?.group?._ref\n\n if (!groupId) {\n continue\n }\n\n const existingGroup = groups.get(groupId)\n\n if (existingGroup) {\n existingGroup.push(document)\n } else {\n groups.set(groupId, [document])\n }\n }\n\n return Array.from(groups.entries()).map(([groupId, groupDocuments]) => {\n const representative = pickRepresentativeDocument(groupDocuments)\n const versions = groupDocuments\n .map((item) => item.version)\n .toSorted(compareVariantDocumentVersions)\n\n return {\n ...representative,\n groupId,\n versions,\n validation: aggregateValidation(groupDocuments),\n }\n })\n}\n","import {type SanityClient} from '@sanity/client'\n\nimport {getVariantId} from '../tool/util'\nimport {type EditableSystemVariant} from '../types'\nimport {variantsClient, type VariantDefinitionActionResult} from './variantsClient'\n\nexport interface VariantOperationsStore {\n createVariant: (variant: EditableSystemVariant) => Promise<VariantDefinitionActionResult>\n updateVariant: (variant: EditableSystemVariant) => Promise<VariantDefinitionActionResult>\n deleteVariant: (variantId: string) => Promise<VariantDefinitionActionResult>\n}\n\n/**\n * Variant definition writes use the actions API. See ../ACTIONS.md.\n */\nexport function createVariantOperationsStore(options: {\n client: SanityClient\n}): VariantOperationsStore {\n const client = variantsClient(options.client)\n\n const handleCreateVariant = async (variant: EditableSystemVariant) => {\n const variantId = getVariantId(variant._id)\n const action = {\n actionType: 'sanity.action.variant.definition.create' as const,\n variantId,\n conditions: variant.conditions,\n priority: variant.priority,\n ...(variant.metadata ? {metadata: variant.metadata} : {}),\n }\n\n return await client.action(action, {tag: 'variants.create'})\n }\n\n const handleUpdateVariant = async (variant: EditableSystemVariant) => {\n const variantId = getVariantId(variant._id)\n const setPayload: Pick<EditableSystemVariant, 'conditions' | 'priority'> &\n Partial<Pick<EditableSystemVariant, 'metadata'>> = {\n conditions: variant.conditions,\n priority: variant.priority,\n }\n\n if (variant.metadata) {\n setPayload.metadata = variant.metadata\n }\n\n const patch: {\n set: typeof setPayload\n unset?: ['metadata']\n } = {\n set: setPayload,\n }\n\n if (!variant.metadata) {\n patch.unset = ['metadata']\n }\n\n const action = {\n actionType: 'sanity.action.variant.definition.edit' as const,\n variantId,\n patch,\n }\n\n return await client.action(action, {tag: 'variants.edit'})\n }\n\n const handleDeleteVariant = async (variantIdOrDocumentId: string) => {\n const action = {\n actionType: 'sanity.action.variant.definition.delete' as const,\n variantId: getVariantId(variantIdOrDocumentId),\n }\n\n return await client.action(action, {tag: 'variants.delete'})\n }\n\n return {\n createVariant: handleCreateVariant,\n updateVariant: handleUpdateVariant,\n deleteVariant: handleDeleteVariant,\n }\n}\n","import {useMemo} from 'react'\n\nimport {useClient} from '../../hooks/useClient'\nimport {VARIANTS_STUDIO_CLIENT_OPTIONS} from './constants'\nimport {createVariantOperationsStore} from './createVariantOperationsStore'\n\n/**\n * @internal\n */\nexport function useVariantOperations() {\n const studioClient = useClient(VARIANTS_STUDIO_CLIENT_OPTIONS)\n\n return useMemo(\n () =>\n createVariantOperationsStore({\n client: studioClient,\n }),\n [studioClient],\n )\n}\n","import {type EditableSystemVariant} from '../types'\n\n/**\n * @internal\n */\nexport function getVariantTitleValue(variant: EditableSystemVariant): string {\n const title = variant.metadata?.title\n\n return typeof title === 'string' ? title.trim() : ''\n}\n\n/**\n * @internal\n */\nexport function getIsVariantInvalid(variant: EditableSystemVariant): boolean {\n return !getVariantTitleValue(variant) || !getHasValidConditions(variant.conditions)\n}\n\nfunction getHasValidConditions(conditions: EditableSystemVariant['conditions']): boolean {\n const entries = Object.entries(conditions)\n\n return entries.length > 0 && entries.every(([key, value]) => Boolean(key.trim() && value.trim()))\n}\n","const CONDITION_KEY_REGEX = /^[a-z][a-z0-9_-]{0,63}$/\nconst CONDITION_SEPARATOR = ':'\nconst RESERVED_KEY_PREFIXES = ['_', '$'] as const\n\nexport type ConditionKeyValidationError = 'invalid' | 'reserved'\nexport type ConditionValueValidationError = 'empty' | 'invalid'\n\nexport function getConditionKeyValidationError(\n key: string,\n): ConditionKeyValidationError | undefined {\n const trimmedKey = key.trim()\n\n if (!trimmedKey) {\n return undefined\n }\n\n for (const prefix of RESERVED_KEY_PREFIXES) {\n if (trimmedKey.startsWith(prefix)) {\n return 'reserved'\n }\n }\n\n if (trimmedKey.includes(CONDITION_SEPARATOR) || !CONDITION_KEY_REGEX.test(trimmedKey)) {\n return 'invalid'\n }\n\n return undefined\n}\n\nexport function getConditionValueValidationError(\n value: string,\n): ConditionValueValidationError | undefined {\n if (!value.trim()) {\n return 'empty'\n }\n\n if (value.includes(CONDITION_SEPARATOR)) {\n return 'invalid'\n }\n\n return undefined\n}\n","export type PriorityValidationError = 'invalid'\n\nexport function getPriorityValidationError(priority: number): PriorityValidationError | undefined {\n if (!Number.isFinite(priority)) {\n return 'invalid'\n }\n\n return undefined\n}\n\nexport function getPriorityInputValidationError(\n input: string,\n): PriorityValidationError | undefined {\n if (input.trim() === '') {\n return 'invalid'\n }\n\n return getPriorityValidationError(Number(input))\n}\n","// Mimics the implementation from createReleaseId.ts\nimport {customAlphabet} from 'nanoid'\n\nimport {VARIANT_DOCUMENTS_PATH} from '../store/constants'\n\n/**\n * ~24 years (or 7.54e+8 seconds) needed, in order to have a 1% probability of at least one collision if 10 ID's are generated every hour.\n */\nconst createVariantIdSuffix = customAlphabet(\n 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',\n 8,\n)\n\n/**\n * Create a unique system variant document id.\n *\n * @internal\n */\nexport function createVariantId(): `${typeof VARIANT_DOCUMENTS_PATH}.${string}` {\n return `${VARIANT_DOCUMENTS_PATH}.${createVariantIdSuffix()}`\n}\n","import {type PortableTextBlock} from '@sanity/types'\nimport {randomKey} from '@sanity/util/content'\n\nimport {type EditableSystemVariant} from '../types'\nimport {createVariantId} from './createVariantId'\n\n/**\n * @internal\n */\nexport function getVariantDefaults(): EditableSystemVariant {\n return {\n _id: createVariantId(),\n _type: 'system.variant',\n conditions: {},\n priority: 0,\n metadata: {\n title: '',\n description: [],\n },\n }\n}\n\n/**\n * @internal\n */\nexport function createPortableTextDescription(text: string): PortableTextBlock[] {\n const trimmedText = text.trim()\n\n if (!trimmedText) {\n return []\n }\n\n return [\n {\n _key: randomKey(12),\n _type: 'block',\n children: [\n {\n _key: randomKey(12),\n _type: 'span',\n marks: [],\n text,\n },\n ],\n markDefs: [],\n style: 'normal',\n },\n ]\n}\n","import {type SystemVariant} from '../../types'\n\nexport interface ConditionSuggestionOption {\n value: string\n}\n\n/**\n * Precomputed lookup of the condition keys and per-key values used across all\n * existing variants. Building this once (e.g. in a `useMemo` keyed on the\n * variants) keeps per-row option derivation cheap, since it avoids re-scanning\n * every variant on each render/keystroke.\n *\n * @internal\n */\nexport interface ConditionSuggestionIndex {\n /** Unique condition keys, sorted. */\n keys: string[]\n /** Unique values per condition key, sorted. */\n valuesByKey: Map<string, string[]>\n}\n\nfunction sortValues(values: Iterable<string>): string[] {\n return Array.from(values)\n .filter(Boolean)\n .toSorted((a, b) => a.localeCompare(b))\n}\n\n/**\n * @internal\n */\nexport function buildConditionSuggestionIndex(variants: SystemVariant[]): ConditionSuggestionIndex {\n const keys = new Set<string>()\n const valuesByKey = new Map<string, Set<string>>()\n\n variants.forEach((variant) => {\n Object.entries(variant.conditions).forEach(([rawKey, rawValue]) => {\n const key = rawKey.trim()\n\n if (!key) {\n return\n }\n\n keys.add(key)\n\n const value = rawValue?.trim()\n\n if (!value) {\n return\n }\n\n let values = valuesByKey.get(key)\n\n if (!values) {\n values = new Set<string>()\n valuesByKey.set(key, values)\n }\n\n values.add(value)\n })\n })\n\n return {\n keys: sortValues(keys),\n valuesByKey: new Map(Array.from(valuesByKey, ([key, values]) => [key, sortValues(values)])),\n }\n}\n\n/**\n * @internal\n */\nexport function getConditionKeyOptions(\n index: ConditionSuggestionIndex,\n rows: ReadonlyArray<{key: string}>,\n currentRowIndex: number,\n): ConditionSuggestionOption[] {\n const usedKeys = new Set(\n rows\n .filter((_, rowIndex) => rowIndex !== currentRowIndex)\n .map((row) => row.key.trim())\n .filter(Boolean),\n )\n\n return index.keys.filter((key) => !usedKeys.has(key)).map((value) => ({value}))\n}\n\n/**\n * @internal\n */\nexport function getConditionValueOptions(\n index: ConditionSuggestionIndex,\n conditionKey: string,\n): ConditionSuggestionOption[] {\n const key = conditionKey.trim()\n\n if (!key) {\n return []\n }\n\n return index.valuesByKey.get(key)?.map((value) => ({value})) ?? []\n}\n\n/**\n * @internal\n */\nexport function filterConditionOption(query: string, option: ConditionSuggestionOption): boolean {\n return option.value.toLowerCase().includes(query.trim().toLowerCase())\n}\n","import {Autocomplete} from '@sanity/ui'\nimport {useCallback, useId, useState} from 'react'\n\nimport {type ConditionSuggestionOption, filterConditionOption} from './conditionSuggestions'\n\ninterface ConditionAutocompleteInputProps {\n ariaLabel: string\n autoFocus?: boolean\n customValidity?: string\n invalid?: boolean\n onChange: (value: string) => void\n options: ConditionSuggestionOption[]\n placeholder: string\n testId: string\n value: string\n}\n\nexport function ConditionAutocompleteInput(\n props: ConditionAutocompleteInputProps,\n): React.JSX.Element {\n const {\n ariaLabel,\n autoFocus,\n customValidity,\n invalid,\n onChange,\n options,\n placeholder,\n testId,\n value,\n } = props\n const id = useId()\n const [focused, setFocused] = useState(false)\n\n const handleQueryChange = useCallback(\n (nextValue: string | null) => {\n // `onChange` fires when an option is selected. Free-text typing is exposed\n // through `onQueryChange`; `null` means the internal query closed.\n if (nextValue !== null) {\n onChange(nextValue)\n }\n },\n [onChange],\n )\n\n return (\n <Autocomplete\n id={id}\n aria-invalid={invalid ? 'true' : undefined}\n aria-label={ariaLabel}\n autoFocus={autoFocus}\n customValidity={customValidity}\n data-testid={testId}\n filterOption={filterConditionOption}\n fontSize={1}\n onBlur={() => setFocused(false)}\n onChange={onChange}\n onFocus={() => setFocused(true)}\n onQueryChange={handleQueryChange}\n openButton\n options={options}\n placeholder={placeholder}\n value={focused ? undefined : value}\n />\n )\n}\n","import {isPortableTextBlock, toPlainText} from '@portabletext/toolkit'\nimport {AddIcon} from '@sanity/icons/Add'\nimport {HelpCircleIcon} from '@sanity/icons/HelpCircle'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {type Path} from '@sanity/mutate'\nimport {type PortableTextBlock} from '@sanity/types'\nimport {Box, Flex, Inline, Stack, Text, TextArea, TextInput} from '@sanity/ui'\nimport {randomKey} from '@sanity/util/content'\nimport {type ChangeEvent, useCallback, useId, useMemo, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {TextWithTone} from '../../../components/textWithTone/TextWithTone'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type VariantsLocaleResourceKeys, variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {type EditableSystemVariant} from '../../types'\nimport {\n getConditionKeyValidationError,\n getConditionValueValidationError,\n} from '../../util/conditionValidation'\nimport {getVariantTitleValue} from '../../util/getIsVariantInvalid'\nimport {getPriorityInputValidationError} from '../../util/priorityValidation'\nimport {createPortableTextDescription} from '../../util/variantDefaults'\nimport {ConditionAutocompleteInput} from './ConditionAutocompleteInput'\nimport {\n buildConditionSuggestionIndex,\n getConditionKeyOptions,\n getConditionValueOptions,\n} from './conditionSuggestions'\n\ninterface ConditionRow {\n id: string\n key: string\n value: string\n}\n\ninterface ConditionRowValidation {\n key: VariantsLocaleResourceKeys | null\n value: VariantsLocaleResourceKeys | null\n}\n\nfunction getConditionRows(conditions: EditableSystemVariant['conditions']): ConditionRow[] {\n const rows = Object.entries(conditions).map(([key, value]) => ({\n id: randomKey(12),\n key,\n value,\n }))\n\n return rows.length ? rows : [{id: randomKey(12), key: '', value: ''}]\n}\n\nfunction getConditionsFromRows(rows: ConditionRow[]): EditableSystemVariant['conditions'] {\n return rows.reduce<EditableSystemVariant['conditions']>((conditions, row) => {\n const key = row.key.trim()\n const value = row.value.trim()\n\n if (key && value) {\n conditions[key] = value\n }\n\n return conditions\n }, {})\n}\n\nfunction isConditionRowEmpty(row: ConditionRow): boolean {\n return !row.key.trim() && !row.value.trim()\n}\n\nfunction getEmptyConditionRowValidation(): ConditionRowValidation {\n return {key: null, value: null}\n}\n\nfunction getConditionRowsValidation(rows: ConditionRow[]): Map<number, ConditionRowValidation> {\n const conditionRowsValidation = new Map<number, ConditionRowValidation>()\n const seenKeys = new Set<string>()\n\n rows.forEach((row, index) => {\n const validation: ConditionRowValidation = {key: null, value: null}\n const key = row.key.trim()\n const value = row.value.trim()\n\n if (key) {\n if (seenKeys.has(key)) {\n validation.key = 'dialog.create.condition-key.duplicate'\n } else {\n seenKeys.add(key)\n }\n\n const keyError = getConditionKeyValidationError(row.key)\n\n if (!validation.key && keyError === 'reserved') {\n validation.key = 'dialog.create.condition-key.reserved'\n } else if (!validation.key && keyError === 'invalid') {\n validation.key = 'dialog.create.condition-key.invalid'\n }\n } else if (value) {\n validation.key = 'dialog.create.condition-key.required'\n }\n\n const valueError = getConditionValueValidationError(row.value)\n\n if ((key || isConditionRowEmpty(row)) && valueError === 'empty') {\n validation.value = 'dialog.create.condition-value.required'\n } else if (valueError === 'invalid') {\n validation.value = 'dialog.create.condition-value.invalid'\n }\n\n conditionRowsValidation.set(index, validation)\n })\n\n return conditionRowsValidation\n}\n\nfunction hasConditionRowsValidationErrors(\n validation: Map<number, ConditionRowValidation>,\n): boolean {\n return Array.from(validation.values()).some(({key, value}) => key || value)\n}\n\nfunction getPortableTextDescriptionValue(description?: PortableTextBlock[]): string {\n if (!Array.isArray(description) || !description.every(isPortableTextBlock)) {\n return ''\n }\n\n return toPlainText(description)\n}\n\nexport type VariantFormChangeHandler = (path: Path, value: unknown) => void\n\nexport function VariantForm(props: {\n onChange: VariantFormChangeHandler\n onConditionValidityChange: (invalid: boolean) => void\n onPriorityValidityChange: (invalid: boolean) => void\n showValidation?: boolean\n value: EditableSystemVariant\n}) {\n const {\n onChange,\n onConditionValidityChange,\n onPriorityValidityChange,\n showValidation = false,\n value,\n } = props\n const {t} = useTranslation(variantsLocaleNamespace)\n const {data: variants} = useAllVariants()\n const suggestionIndex = useMemo(() => buildConditionSuggestionIndex(variants), [variants])\n const titleId = useId()\n const descriptionId = useId()\n const priorityId = useId()\n // `conditions` is stored as an object, but object keys are awkward to edit live:\n // duplicates collapse and partial key edits like \"far\" -> \"favorite\" can lose data.\n // Keep rows locally while editing, then commit back once they serialize cleanly.\n const [conditionRows, setConditionRows] = useState(() => getConditionRows(value.conditions))\n const [priorityInput, setPriorityInput] = useState(() => String(value.priority))\n const conditionsValidation = useMemo(\n () => getConditionRowsValidation(conditionRows),\n [conditionRows],\n )\n\n const hasTitle = Boolean(getVariantTitleValue(value))\n const showTitleError = showValidation && !hasTitle\n const priorityValidationError = getPriorityInputValidationError(priorityInput)\n const showPriorityError = showValidation && priorityValidationError\n\n const lastConditionRow = conditionRows[conditionRows.length - 1]\n const canAddCondition = Boolean(\n lastConditionRow && !hasConditionRowsValidationErrors(conditionsValidation),\n )\n\n const updateConditionRows = useCallback(\n (nextRows: ConditionRow[]) => {\n const rows = nextRows.length ? nextRows : getConditionRows({})\n\n setConditionRows(rows)\n\n const nextRowsValidation = getConditionRowsValidation(rows)\n const nextRowsInvalid = hasConditionRowsValidationErrors(nextRowsValidation)\n onConditionValidityChange(nextRowsInvalid)\n\n if (nextRows.length === 0 || !nextRowsInvalid) {\n onChange(['conditions'], getConditionsFromRows(nextRows))\n }\n },\n [onChange, onConditionValidityChange],\n )\n\n const handleTitleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n onChange(['metadata', 'title'], event.currentTarget.value)\n },\n [onChange],\n )\n\n const handleDescriptionChange = useCallback(\n (event: ChangeEvent<HTMLTextAreaElement>) => {\n onChange(\n ['metadata', 'description'],\n createPortableTextDescription(event.currentTarget.value),\n )\n },\n [onChange],\n )\n\n const handlePriorityChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const rawValue = event.currentTarget.value\n const nextValue = event.currentTarget.valueAsNumber\n\n setPriorityInput(rawValue)\n const priorityValidationError = getPriorityInputValidationError(rawValue)\n onPriorityValidityChange(Boolean(priorityValidationError))\n\n if (Number.isFinite(nextValue)) {\n onChange(['priority'], nextValue)\n }\n },\n [onChange, onPriorityValidityChange],\n )\n\n const handleConditionChange = useCallback(\n (index: number, field: 'key' | 'value', nextValue: string) => {\n const nextRows = conditionRows.map((row, rowIndex) =>\n rowIndex === index ? {...row, [field]: nextValue} : row,\n )\n\n updateConditionRows(nextRows)\n },\n [conditionRows, updateConditionRows],\n )\n\n const handleAddCondition = useCallback(() => {\n if (!canAddCondition) {\n return\n }\n\n updateConditionRows([...conditionRows, {id: randomKey(12), key: '', value: ''}])\n }, [canAddCondition, conditionRows, updateConditionRows])\n\n const handleRemoveCondition = useCallback(\n (index: number) => {\n const nextRows = conditionRows.filter((_, rowIndex) => rowIndex !== index)\n\n updateConditionRows(nextRows)\n },\n [conditionRows, updateConditionRows],\n )\n\n return (\n <Stack gap={5}>\n <Stack gap={3}>\n <Text as=\"label\" htmlFor={titleId} size={1} weight=\"medium\">\n {t('dialog.create.variant-title.label')}\n </Text>\n <TextInput\n autoFocus\n aria-invalid={showTitleError ? 'true' : undefined}\n customValidity={showTitleError ? t('dialog.create.variant-title.required') : undefined}\n data-testid=\"variant-form-title\"\n fontSize={2}\n id={titleId}\n onChange={handleTitleChange}\n placeholder={t('dialog.create.variant-title.placeholder')}\n value={typeof value.metadata?.title === 'string' ? value.metadata.title : ''}\n />\n {showTitleError && (\n <TextWithTone data-testid=\"variant-form-title-error\" size={1} tone=\"critical\">\n {t('dialog.create.variant-title.required')}\n </TextWithTone>\n )}\n </Stack>\n\n <Stack gap={3}>\n <Text as=\"label\" htmlFor={descriptionId} size={1} weight=\"medium\">\n {t('dialog.create.description.label')}\n </Text>\n <TextArea\n data-testid=\"variant-form-description\"\n fontSize={1}\n id={descriptionId}\n onChange={handleDescriptionChange}\n placeholder={t('dialog.create.description.placeholder')}\n rows={3}\n value={getPortableTextDescriptionValue(value.metadata?.description)}\n />\n </Stack>\n\n <Stack gap={3}>\n <Inline gap={1}>\n <Text as=\"label\" htmlFor={priorityId} size={1} weight=\"medium\">\n {t('dialog.create.priority.label')}\n </Text>\n <Tooltip content={t('dialog.create.priority.tooltip')} placement=\"right\">\n <HelpCircleIcon data-testid=\"variant-form-priority-help\" />\n </Tooltip>\n </Inline>\n <TextInput\n aria-invalid={showPriorityError ? 'true' : undefined}\n customValidity={\n showPriorityError && priorityValidationError\n ? t(`dialog.create.priority.${priorityValidationError}`)\n : undefined\n }\n data-testid=\"variant-form-priority\"\n fontSize={2}\n id={priorityId}\n inputMode=\"decimal\"\n onChange={handlePriorityChange}\n type=\"number\"\n value={priorityInput}\n />\n {showPriorityError && priorityValidationError && (\n <TextWithTone data-testid=\"variant-form-priority-error\" size={1} tone=\"critical\">\n {t(`dialog.create.priority.${priorityValidationError}`)}\n </TextWithTone>\n )}\n </Stack>\n\n <Stack gap={3}>\n <Stack gap={2}>\n <Text size={1} weight=\"medium\">\n {t('dialog.create.conditions.title')}\n </Text>\n <Text muted size={1}>\n {t('dialog.create.conditions.description')}\n </Text>\n </Stack>\n\n <Stack gap={2}>\n {conditionRows.map((row, index) => {\n const validation = conditionsValidation.get(index) ?? getEmptyConditionRowValidation()\n const valueValidation = showValidation ? validation.value : null\n const conditionValidationError = validation.key || valueValidation\n\n return (\n <Stack key={row.id} gap={2}>\n <Flex align=\"center\" gap={2}>\n <Box flex={1}>\n <ConditionAutocompleteInput\n autoFocus={index > 0}\n ariaLabel={t('dialog.create.condition-key.label')}\n customValidity={validation.key ? t(validation.key) : undefined}\n invalid={Boolean(validation.key)}\n onChange={(nextValue) => handleConditionChange(index, 'key', nextValue)}\n options={getConditionKeyOptions(suggestionIndex, conditionRows, index)}\n placeholder={t('dialog.create.condition-key.placeholder')}\n testId=\"variant-form-condition-key\"\n value={row.key}\n />\n </Box>\n <Box flex={1}>\n <ConditionAutocompleteInput\n ariaLabel={t('dialog.create.condition-value.label')}\n customValidity={valueValidation ? t(valueValidation) : undefined}\n invalid={Boolean(valueValidation)}\n onChange={(nextValue) => handleConditionChange(index, 'value', nextValue)}\n options={getConditionValueOptions(suggestionIndex, row.key)}\n placeholder={t('dialog.create.condition-value.placeholder')}\n testId=\"variant-form-condition-value\"\n value={row.value}\n />\n </Box>\n <Button\n disabled={isConditionRowEmpty(row) && conditionRows.length === 1}\n icon={TrashIcon}\n mode=\"bleed\"\n onClick={() => handleRemoveCondition(index)}\n tone=\"critical\"\n tooltipProps={{content: t('dialog.create.remove-condition')}}\n type=\"button\"\n />\n </Flex>\n {conditionValidationError && (\n <TextWithTone\n data-testid={\n validation.key\n ? 'variant-form-condition-key-error'\n : 'variant-form-condition-value-error'\n }\n size={1}\n tone=\"critical\"\n >\n {t(conditionValidationError)}\n </TextWithTone>\n )}\n </Stack>\n )\n })}\n </Stack>\n\n <Flex>\n <Button\n disabled={!canAddCondition}\n icon={AddIcon}\n mode=\"ghost\"\n onClick={handleAddCondition}\n text={t('dialog.create.action.add-condition')}\n tooltipProps={\n canAddCondition\n ? null\n : {content: t('dialog.create.action.add-condition.disabled-hint')}\n }\n type=\"button\"\n />\n </Flex>\n </Stack>\n </Stack>\n )\n}\n","import {at, set} from '@sanity/mutate'\nimport {applyPatches} from '@sanity/mutate/_unstable_apply'\nimport {Box, Card, Flex, useToast} from '@sanity/ui'\nimport {type FormEvent, useCallback, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {Dialog} from '../../../../ui-components/dialog/Dialog'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type EditableSystemVariant} from '../../types'\nimport {getIsVariantInvalid} from '../../util/getIsVariantInvalid'\nimport {VariantForm, type VariantFormChangeHandler} from './VariantForm'\n\ninterface VariantDialogProps {\n confirmDataTestId: string\n confirmText: string\n errorTitle: string\n header: string\n id: string\n initialValue: EditableSystemVariant\n onCancel: () => void\n onSubmit: (variant: EditableSystemVariant) => Promise<void>\n renderCancelButton?: boolean\n}\n\nexport function VariantDialog(props: VariantDialogProps): React.JSX.Element {\n const {\n confirmDataTestId,\n confirmText,\n errorTitle,\n header,\n id,\n initialValue,\n onCancel,\n onSubmit,\n renderCancelButton = false,\n } = props\n const toast = useToast()\n const {t} = useTranslation(variantsLocaleNamespace)\n const [variant, setVariant] = useState(initialValue)\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [showValidation, setShowValidation] = useState(false)\n const [conditionsInvalid, setConditionsInvalid] = useState(false)\n const [priorityInvalid, setPriorityInvalid] = useState(false)\n const invalid = getIsVariantInvalid(variant) || conditionsInvalid || priorityInvalid\n\n const handleVariantChange = useCallback<VariantFormChangeHandler>((path, nextValue) => {\n setVariant(\n (currentVariant) =>\n applyPatches([at(path, set(nextValue))], currentVariant) as EditableSystemVariant,\n )\n }, [])\n\n const handleSubmit = useCallback(\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n async (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n\n if (invalid) {\n setShowValidation(true)\n return\n }\n\n setIsSubmitting(true)\n\n try {\n await onSubmit(variant)\n setIsSubmitting(false)\n } catch (error) {\n setIsSubmitting(false)\n console.error(error)\n toast.push({\n closable: true,\n status: 'error',\n title: errorTitle,\n })\n }\n },\n [errorTitle, invalid, onSubmit, toast, variant],\n )\n\n return (\n <Dialog\n __unstable_autoFocus={false}\n header={header}\n id={id}\n onClickOutside={isSubmitting ? undefined : onCancel}\n onClose={isSubmitting ? undefined : onCancel}\n padding={false}\n width={1}\n >\n <Card borderTop padding={4}>\n <form onSubmit={handleSubmit}>\n <Box paddingBottom={4}>\n <VariantForm\n onChange={handleVariantChange}\n onConditionValidityChange={setConditionsInvalid}\n onPriorityValidityChange={setPriorityInvalid}\n showValidation={showValidation}\n value={variant}\n />\n </Box>\n <Flex gap={2} justify=\"flex-end\" paddingTop={5}>\n {renderCancelButton && (\n <Button\n disabled={isSubmitting}\n mode=\"ghost\"\n onClick={onCancel}\n text={t('dialog.edit.action.cancel')}\n type=\"button\"\n />\n )}\n <Button\n data-testid={confirmDataTestId}\n disabled={isSubmitting}\n loading={isSubmitting}\n size=\"large\"\n text={confirmText}\n type=\"submit\"\n />\n </Flex>\n </form>\n </Card>\n </Dialog>\n )\n}\n","import {useCallback, useMemo} from 'react'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useVariantOperations} from '../../store/useVariantOperations'\nimport {type EditableSystemVariant, type SystemVariant} from '../../types'\nimport {VariantDialog} from './VariantDialog'\n\ninterface EditVariantDialogProps {\n onCancel: () => void\n onSubmit: () => void\n variant: SystemVariant\n}\n\nfunction toEditableVariant(variant: SystemVariant): EditableSystemVariant {\n return {\n _id: variant._id,\n _type: variant._type,\n conditions: variant.conditions,\n priority: variant.priority,\n metadata: variant.metadata,\n }\n}\n\nexport function EditVariantDialog(props: EditVariantDialogProps): React.JSX.Element {\n const {onCancel, onSubmit, variant: initialVariant} = props\n const {t} = useTranslation(variantsLocaleNamespace)\n const {updateVariant} = useVariantOperations()\n const initialValue = useMemo(() => toEditableVariant(initialVariant), [initialVariant])\n\n const handleSubmit = useCallback(\n async (variant: EditableSystemVariant) => {\n await updateVariant(variant)\n onSubmit()\n },\n [onSubmit, updateVariant],\n )\n\n return (\n <VariantDialog\n confirmDataTestId=\"save-variant-button\"\n confirmText={t('dialog.edit.action.confirm')}\n errorTitle={t('dialog.edit.error.title')}\n header={t('dialog.edit.title')}\n id=\"edit-variant-dialog\"\n initialValue={initialValue}\n onCancel={onCancel}\n onSubmit={handleSubmit}\n renderCancelButton\n />\n )\n}\n","import {Text} from '@sanity/ui'\n\nimport {Dialog} from '../../../../ui-components/dialog/Dialog'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../../i18n'\n\ninterface DeleteVariantDialogProps {\n isDeleting: boolean\n onClose: () => void\n onConfirm: () => void\n variantTitle: string\n}\n\nexport function DeleteVariantDialog({\n isDeleting,\n onClose,\n onConfirm,\n variantTitle,\n}: DeleteVariantDialogProps): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n return (\n <Dialog\n data-testid=\"delete-variant-dialog\"\n footer={{\n cancelButton: {\n disabled: isDeleting,\n },\n confirmButton: {\n disabled: isDeleting,\n loading: isDeleting,\n onClick: onConfirm,\n text: t('dialog.delete.action.confirm'),\n tone: 'critical',\n },\n }}\n header={t('dialog.delete.title')}\n id=\"delete-variant-dialog\"\n onClose={isDeleting ? undefined : onClose}\n >\n <Text muted size={1}>\n {t('dialog.delete.description', {title: variantTitle})}\n </Text>\n </Dialog>\n )\n}\n","import {useToast} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\n\nimport {useTranslation} from '../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../i18n'\nimport {useVariantOperations} from '../store/useVariantOperations'\n\ninterface UseVariantDeleteActionOptions {\n documentCount?: number | null\n documentsLoading?: boolean\n onDeleted?: () => void\n variantTitle?: string\n}\n\n/**\n * Shared delete action state for variant menu buttons.\n *\n * @internal\n */\nexport function useVariantDeleteAction(\n variantId: string,\n options?: UseVariantDeleteActionOptions,\n): {\n deleteDisabled: boolean\n deleteDisabledTooltip: string | undefined\n handleCloseDeleteDialog: () => void\n handleConfirmDelete: () => Promise<void>\n handleDelete: () => void\n isDeleteDialogOpen: boolean\n isDeleting: boolean\n variantTitle: string\n} {\n const {documentCount, documentsLoading = false, onDeleted, variantTitle = ''} = options ?? {}\n const {t} = useTranslation(variantsLocaleNamespace)\n const toast = useToast()\n const {deleteVariant} = useVariantOperations()\n const [isDeleting, setIsDeleting] = useState(false)\n const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false)\n\n const hasDocuments = typeof documentCount === 'number' && documentCount > 0\n const countUnknown = documentsLoading || documentCount === undefined || documentCount === null\n\n const deleteDisabled = isDeleting || countUnknown || hasDocuments\n\n const deleteDisabledTooltip = useMemo(() => {\n if (!hasDocuments || typeof documentCount !== 'number') {\n return undefined\n }\n\n return t(\n documentCount === 1\n ? 'overview.action.delete-variant.disabled-hint_one'\n : 'overview.action.delete-variant.disabled-hint_other',\n {count: documentCount},\n )\n }, [documentCount, hasDocuments, t])\n\n const handleDelete = useCallback(() => {\n if (countUnknown || hasDocuments) {\n return\n }\n\n setIsDeleteDialogOpen(true)\n }, [countUnknown, hasDocuments])\n\n const handleCloseDeleteDialog = useCallback(() => {\n if (isDeleting) {\n return\n }\n\n setIsDeleteDialogOpen(false)\n }, [isDeleting])\n\n const handleConfirmDelete = useCallback(async () => {\n if (countUnknown || hasDocuments) {\n return\n }\n\n setIsDeleting(true)\n\n try {\n await deleteVariant(variantId)\n setIsDeleting(false)\n setIsDeleteDialogOpen(false)\n onDeleted?.()\n } catch (error) {\n console.error(error)\n toast.push({\n closable: true,\n status: 'error',\n title: t('overview.action.delete-variant.error.title'),\n })\n setIsDeleting(false)\n }\n }, [countUnknown, deleteVariant, hasDocuments, onDeleted, t, toast, variantId])\n\n return {\n deleteDisabled,\n deleteDisabledTooltip,\n handleCloseDeleteDialog,\n handleConfirmDelete,\n handleDelete,\n isDeleteDialogOpen,\n isDeleting,\n variantTitle,\n }\n}\n","import {EllipsisHorizontalIcon} from '@sanity/icons/EllipsisHorizontal'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {Menu} from '@sanity/ui'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {MenuItem} from '../../../../ui-components/menuItem/MenuItem'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {DeleteVariantDialog} from '../../components/dialog/DeleteVariantDialog'\nimport {useVariantDeleteAction} from '../../hooks/useVariantDeleteAction'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {getVariantTitle} from '../util'\n\n/**\n * The variant detail overflow (`⋯`) menu — the `menu` slot of the shared {@link DetailActionRail}.\n *\n * Delete lives here (critical) rather than as its own top-level button, so the variant detail's\n * action rail matches the Releases rail's shape (primary + `⋯`). Delete is disabled while the\n * variant still contains documents (with an explanatory hint), reusing {@link useVariantDeleteAction}\n * for the confirm flow. Future variant-level actions (duplicate, add-to-release) land here too.\n *\n * @internal\n */\nexport function VariantMenuButton({\n documentCount,\n documentsLoading = false,\n variant,\n}: {\n documentCount: number\n documentsLoading?: boolean\n variant: SystemVariant\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const router = useRouter()\n const variantTitle = getVariantTitle(variant)\n const {\n deleteDisabled,\n deleteDisabledTooltip,\n handleCloseDeleteDialog,\n handleConfirmDelete,\n handleDelete,\n isDeleteDialogOpen,\n isDeleting,\n variantTitle: dialogVariantTitle,\n } = useVariantDeleteAction(variant._id, {\n documentCount,\n documentsLoading,\n onDeleted: () => router.navigate({}),\n variantTitle,\n })\n\n return (\n <>\n <MenuButton\n id=\"variant-detail-menu\"\n button={\n <Button\n aria-label={t('detail.menu.label')}\n icon={EllipsisHorizontalIcon}\n mode=\"bleed\"\n tooltipProps={{content: t('detail.menu.label')}}\n data-testid=\"variant-detail-menu-button\"\n />\n }\n menu={\n <Menu>\n <MenuItem\n data-testid=\"delete-variant-menu-item\"\n disabled={deleteDisabled || isDeleting}\n icon={TrashIcon}\n onClick={handleDelete}\n text={t('overview.action.delete-variant')}\n tone=\"critical\"\n tooltipProps={deleteDisabledTooltip ? {content: deleteDisabledTooltip} : undefined}\n />\n </Menu>\n }\n popover={{placement: 'bottom-end', portal: true}}\n />\n {isDeleteDialogOpen && (\n <DeleteVariantDialog\n isDeleting={isDeleting}\n onClose={handleCloseDeleteDialog}\n onConfirm={handleConfirmDelete}\n variantTitle={dialogVariantTitle}\n />\n )}\n </>\n )\n}\n","import {EditIcon} from '@sanity/icons/Edit'\nimport {useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {DetailActionRail} from '../../../components/detailLayout'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {EditVariantDialog} from '../../components/dialog/EditVariantDialog'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {VariantMenuButton} from './VariantMenuButton'\n\n/**\n * The variant detail top-right action rail — the `DetailActionRail` shared with Releases.\n *\n * `Edit definition` is the prominent primary (a defined, always-visible affordance, not an inline\n * hover pencil), opening the existing {@link EditVariantDialog} which edits name + description +\n * conditions. Delete lives in the overflow `⋯` menu ({@link VariantMenuButton}), critical-toned.\n *\n * @internal\n */\nexport function VariantActionRail({\n documentCount,\n documentsLoading,\n variant,\n}: {\n documentCount: number\n documentsLoading: boolean\n variant: SystemVariant\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const [editDialogOpen, setEditDialogOpen] = useState(false)\n\n return (\n <>\n <DetailActionRail\n primary={\n <Button\n data-testid=\"edit-variant-button\"\n icon={EditIcon}\n mode=\"default\"\n onClick={() => setEditDialogOpen(true)}\n text={t('detail.action.edit-definition')}\n />\n }\n menu={\n <VariantMenuButton\n documentCount={documentCount}\n documentsLoading={documentsLoading}\n variant={variant}\n />\n }\n />\n {editDialogOpen && (\n <EditVariantDialog\n onCancel={() => setEditDialogOpen(false)}\n onSubmit={() => setEditDialogOpen(false)}\n variant={variant}\n />\n )}\n </>\n )\n}\n","import {CalendarIcon} from '@sanity/icons/Calendar'\nimport {CaseIcon} from '@sanity/icons/Case'\nimport {DesktopIcon} from '@sanity/icons/Desktop'\nimport {EarthAmericasIcon} from '@sanity/icons/EarthAmericas'\nimport {EarthGlobeIcon} from '@sanity/icons/EarthGlobe'\nimport {FilterIcon} from '@sanity/icons/Filter'\nimport {MobileDeviceIcon} from '@sanity/icons/MobileDevice'\nimport {PackageIcon} from '@sanity/icons/Package'\nimport {RocketIcon} from '@sanity/icons/Rocket'\nimport {SplitVerticalIcon} from '@sanity/icons/SplitVertical'\nimport {StarIcon} from '@sanity/icons/Star'\nimport {TagIcon} from '@sanity/icons/Tag'\nimport {TargetIcon} from '@sanity/icons/Target'\nimport {TranslateIcon} from '@sanity/icons/Translate'\nimport {UserIcon} from '@sanity/icons/User'\nimport {UsersIcon} from '@sanity/icons/Users'\nimport {type ComponentType} from 'react'\n\n/**\n * Icon per common variant targeting *dimension* (the key of a condition — \"audience\", \"location\",\n * \"market\", …). A variant's conditions are the dimensions along which content is personalized, so\n * giving each a recognizable glyph turns a flat key/value list into a scannable, purposeful panel\n * and lets a definition with several dimensions still read clearly.\n *\n * Keys are matched case-insensitively against the normalized (lowercased, singularized) condition\n * key. Unknown dimensions fall back to a neutral \"filter\" glyph — every condition is, structurally,\n * a filter on the audience.\n *\n * @internal\n */\nconst DIMENSION_ICONS: Record<string, ComponentType> = {\n audience: UsersIcon,\n segment: TargetIcon,\n cohort: TargetIcon,\n role: UserIcon,\n location: EarthGlobeIcon,\n region: EarthAmericasIcon,\n country: EarthGlobeIcon,\n market: EarthGlobeIcon,\n geo: EarthGlobeIcon,\n locale: TranslateIcon,\n language: TranslateIcon,\n lang: TranslateIcon,\n device: MobileDeviceIcon,\n platform: DesktopIcon,\n environment: DesktopIcon,\n env: DesktopIcon,\n os: DesktopIcon,\n brand: TagIcon,\n campaign: RocketIcon,\n plan: StarIcon,\n tier: StarIcon,\n subscription: StarIcon,\n industry: CaseIcon,\n vertical: CaseIcon,\n category: PackageIcon,\n product: PackageIcon,\n channel: SplitVerticalIcon,\n source: SplitVerticalIcon,\n date: CalendarIcon,\n season: CalendarIcon,\n}\n\n/**\n * Resolves the glyph for a condition dimension key. Normalizes case and a trailing plural \"s\" so\n * \"Audiences\" and \"audience\" map alike; unknown keys get the neutral fallback.\n *\n * @internal\n */\nexport function getVariantConditionIcon(key: string): ComponentType {\n const normalized = key.trim().toLowerCase()\n\n return DIMENSION_ICONS[normalized] ?? DIMENSION_ICONS[normalized.replace(/s$/, '')] ?? FilterIcon\n}\n","import {type ReleaseDocument} from '@sanity/client'\n\nimport {getReleaseDocumentIdFromReleaseId} from '../../../releases/util/getReleaseDocumentIdFromReleaseId'\nimport {isPublishedBundleId, isReleaseBundle} from '../util'\nimport {type DocumentInVariantGroup, type VariantDocumentVersion} from './types'\n\n/**\n * The kind of bundle a variant-scoped document version lives in. Drives the label\n * and tone the release lane / bundle chips render with.\n *\n * @internal\n */\nexport type ReleaseLaneKind = 'published' | 'drafts' | 'release'\n\n/**\n * Stable filter key for the \"all documents\" (unfiltered) lane segment.\n *\n * @internal\n */\nexport const RELEASE_LANE_ALL = 'all'\n\n/**\n * A resolved bundle descriptor for a single version: a stable id used both as the lane\n * filter key and the chip key, the kind, and the release document when applicable.\n *\n * @internal\n */\nexport interface ResolvedVersionBundle {\n id: string\n kind: ReleaseLaneKind\n release?: ReleaseDocument\n}\n\n/**\n * Resolves a single variant document version to its bundle descriptor.\n *\n * Shared by the release lane (to tally and filter) and the per-row bundle chips\n * (to render), so both agree on what bundle a version belongs to.\n *\n * @internal\n */\nexport function resolveVersionBundle(\n version: VariantDocumentVersion,\n releasesById: Map<string, ReleaseDocument>,\n): ResolvedVersionBundle {\n if (isPublishedBundleId(version.bundleId)) {\n return {id: 'published', kind: 'published'}\n }\n\n if (version.bundleId === 'drafts') {\n return {id: 'drafts', kind: 'drafts'}\n }\n\n if (version.releaseRef) {\n const release = releasesById.get(version.releaseRef)\n return {id: release?._id ?? version.releaseRef, kind: 'release', release}\n }\n\n if (isReleaseBundle(version.bundleId)) {\n const releaseDocumentId = getReleaseDocumentIdFromReleaseId(version.bundleId!)\n const release = releasesById.get(releaseDocumentId)\n return {id: release?._id ?? releaseDocumentId, kind: 'release', release}\n }\n\n // Every constructed version sets either a valid bundleId or a releaseRef, so this is\n // unreachable in practice; kept only to keep the function total over its declared input type.\n return {id: 'unresolved-release', kind: 'release'}\n}\n\n/**\n * The distinct bundle ids a document group participates in (deduped across its versions),\n * so a group counts at most once per lane segment.\n *\n * @internal\n */\nfunction getRowBundleIds(\n row: DocumentInVariantGroup,\n releasesById: Map<string, ReleaseDocument>,\n): Set<string> {\n const ids = new Set<string>()\n for (const version of row.versions) {\n ids.add(resolveVersionBundle(version, releasesById).id)\n }\n return ids\n}\n\n/**\n * A single release-lane segment: a bundle this variant's documents participate in,\n * with the number of document groups riding on it.\n *\n * @internal\n */\nexport interface ReleaseLaneSegment {\n id: string\n kind: ReleaseLaneKind\n release?: ReleaseDocument\n count: number\n}\n\nfunction getKindOrder(kind: ReleaseLaneKind): number {\n if (kind === 'published') return 0\n if (kind === 'drafts') return 1\n return 2\n}\n\nfunction bundleSortLabel(bundle: ResolvedVersionBundle): string {\n return bundle.release?.metadata?.title ?? bundle.id\n}\n\n/**\n * Sort order shared by the release lane, row sort key, primary bundle badge, and bundle chips.\n * Module-private — consumed by getSortedRowBundles / computeReleaseLaneSegments below.\n */\nfunction compareResolvedBundles(left: ResolvedVersionBundle, right: ResolvedVersionBundle): number {\n const kindDelta = getKindOrder(left.kind) - getKindOrder(right.kind)\n if (kindDelta !== 0) {\n return kindDelta\n }\n\n return bundleSortLabel(left).localeCompare(bundleSortLabel(right))\n}\n\n/**\n * Distinct bundles a document group appears in, ordered published → drafts → releases (by title).\n *\n * @internal\n */\nexport function getSortedRowBundles(\n versions: VariantDocumentVersion[],\n releasesById: Map<string, ReleaseDocument>,\n): ResolvedVersionBundle[] {\n const seen = new Map<string, ResolvedVersionBundle>()\n for (const version of versions) {\n const resolved = resolveVersionBundle(version, releasesById)\n if (!seen.has(resolved.id)) {\n seen.set(resolved.id, resolved)\n }\n }\n return Array.from(seen.values()).toSorted(compareResolvedBundles)\n}\n\n/**\n * Computes the release lane for a variant detail table: one segment per bundle the\n * documents participate in, ordered published → drafts → releases (by title), each\n * carrying the number of document groups in it.\n *\n * @internal\n */\nexport function computeReleaseLaneSegments(\n rows: DocumentInVariantGroup[],\n releasesById: Map<string, ReleaseDocument>,\n): ReleaseLaneSegment[] {\n const segments = new Map<string, ReleaseLaneSegment>()\n\n for (const row of rows) {\n for (const version of row.versions) {\n const resolved = resolveVersionBundle(version, releasesById)\n const existing = segments.get(resolved.id)\n if (existing) {\n continue\n }\n segments.set(resolved.id, {...resolved, count: 0})\n }\n }\n\n // Count each document group once per bundle it appears in.\n for (const row of rows) {\n for (const bundleId of getRowBundleIds(row, releasesById)) {\n const segment = segments.get(bundleId)\n if (segment) {\n segment.count += 1\n }\n }\n }\n\n return Array.from(segments.values()).toSorted(compareResolvedBundles)\n}\n\n/**\n * Whether a document group has any version in the given lane segment.\n *\n * @internal\n */\nexport function rowMatchesLane(\n row: DocumentInVariantGroup,\n laneId: string,\n releasesById: Map<string, ReleaseDocument>,\n): boolean {\n if (laneId === RELEASE_LANE_ALL) {\n return true\n }\n return getRowBundleIds(row, releasesById).has(laneId)\n}\n\n/**\n * A stable sort key for the \"Appears in\" column: orders rows by the most prominent bundle they\n * appear in (published → drafts → releases), then by release title, so sorting the column groups\n * documents by bundle the same way the release lane orders its segments.\n *\n * @internal\n */\nexport function getRowBundleSortKey(\n row: DocumentInVariantGroup,\n releasesById: Map<string, ReleaseDocument>,\n): string {\n const primary = getSortedRowBundles(row.versions, releasesById)[0]\n if (!primary) {\n return ''\n }\n\n return `${getKindOrder(primary.kind)}:${bundleSortLabel(primary)}`\n}\n\n/**\n * The most prominent bundle a document group appears in (published → drafts → releases by title),\n * used to badge the document preview with the shared perspective-bar iconography.\n *\n * @internal\n */\nexport function getPrimaryBundle(\n row: DocumentInVariantGroup,\n releasesById: Map<string, ReleaseDocument>,\n): ResolvedVersionBundle | undefined {\n return getSortedRowBundles(row.versions, releasesById)[0]\n}\n","// eslint-disable-next-line @sanity/i18n/no-i18next-import -- types-only import\nimport {type TFunction} from 'i18next'\nimport {memo} from 'react'\n\nimport {type DocumentInVariantGroup} from '../types'\n\n/**\n * Per-row actions for a single document in a variant, opened from a trailing ⋯ button — the same\n * operations the bulk-selection toolbar would offer, so a row doesn't have to be selected first.\n * Mirrors the releases document table's per-row menu so the two read as one family.\n *\n * Renders nothing until the variant document actions are wired up (FH-113) — a menu of\n * permanently-disabled items has no affordance over no menu at all, so this is a no-op rather\n * than a stub UI. Wiring FH-113 restores the menu here (see git history for the prior\n * publish/add-to-release/unpublish/delete disabled menu) and in the bulk toolbar together.\n *\n * @internal\n */\nexport const VariantDocumentActions = memo(function VariantDocumentActions(_props: {\n row: DocumentInVariantGroup\n t: TFunction<'variants'>\n}) {\n return null\n})\n","import {type SanityDocument} from '@sanity/client'\n\nexport function getDocumentPreviewTitle(document: SanityDocument): string {\n const title = document.title || document.name\n\n return typeof title === 'string' && title.trim() ? title : document._id\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {Badge, Box, Flex, Stack, Text} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {IntentLink} from 'sanity/router'\n\nimport {Tooltip} from '../../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {ReleaseAvatarIcon} from '../../../../releases/components/ReleaseAvatar'\nimport {ReleaseTitle} from '../../../../releases/components/ReleaseTitle'\nimport {RELEASES_INTENT} from '../../../../releases/plugin'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {variantsLocaleNamespace} from '../../../i18n'\nimport {getSortedRowBundles, type ReleaseLaneKind} from '../releaseLane'\nimport {type VariantDocumentVersion} from '../types'\n\n// Only one chip fits comfortably in the fixed-width cell; the rest collapse into a \"+N\" badge\n// whose hover tooltip lists them, so the row never crops or scrolls horizontally.\nconst MAX_VISIBLE_CHIPS = 1\n\ninterface ResolvedChip {\n key: string\n kind: ReleaseLaneKind\n release?: ReleaseDocument\n}\n\nfunction useChipLabel() {\n const {t} = useTranslation()\n\n return (chip: ResolvedChip): string => {\n if (chip.kind === 'published') return t('release.chip.published')\n if (chip.kind === 'drafts') return t('release.chip.draft')\n return chip.release?.metadata?.title ?? t('release.placeholder-untitled-release')\n }\n}\n\nfunction getChipTone(kind: ReleaseLaneKind): 'positive' | 'primary' | 'default' {\n if (kind === 'published') return 'positive'\n if (kind === 'release') return 'primary'\n return 'default'\n}\n\n// The shared perspective-bar iconography (dot / bolt / clock, tone-coloured). Used only in the\n// overflow list — the visible chips lean on their badge tone, and the document preview already\n// carries this icon per row, so repeating it on the chip would be redundant.\nfunction ChipIcon({chip}: {chip: ResolvedChip}) {\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n if (chip.kind === 'published') return <ReleaseAvatarIcon tone=\"positive\" />\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n if (chip.kind === 'drafts') return <ReleaseAvatarIcon tone=\"caution\" />\n if (chip.release) return <ReleaseAvatarIcon release={chip.release} />\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n return <ReleaseAvatarIcon tone=\"default\" />\n}\n\nfunction ReleaseBundleChip({release}: {release: ReleaseDocument}) {\n const {t} = useTranslation()\n const releaseId = getReleaseIdFromReleaseDocumentId(release._id)\n\n return (\n <ReleaseTitle\n title={release.metadata?.title}\n fallback={t('release.placeholder-untitled-release')}\n >\n {({displayTitle}) => (\n <IntentLink intent={RELEASES_INTENT} params={{id: releaseId}}>\n {/* Constrain to a single line so a long release name truncates with an ellipsis instead\n of wrapping into a tall, heavy two-line filled badge that dominates the row. */}\n <Badge\n radius={2}\n style={{\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n title={displayTitle}\n tone=\"primary\"\n >\n {displayTitle}\n </Badge>\n </IntentLink>\n )}\n </ReleaseTitle>\n )\n}\n\nfunction VisibleChip({chip, label}: {chip: ResolvedChip; label: string}) {\n if (chip.kind === 'release' && chip.release) {\n return <ReleaseBundleChip release={chip.release} />\n }\n return (\n <Badge radius={2} tone={getChipTone(chip.kind)}>\n {label}\n </Badge>\n )\n}\n\nexport function VariantDocumentBundleChips({\n versions,\n releasesById,\n}: {\n versions: VariantDocumentVersion[]\n releasesById: Map<string, ReleaseDocument>\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const getLabel = useChipLabel()\n\n // Dedupe by bundle and order like the release lane / preview primary badge so the visible\n // chip always matches the leading icon when a document appears in multiple releases.\n const chips = useMemo<ResolvedChip[]>(() => {\n return getSortedRowBundles(versions, releasesById).map((resolved) => ({\n key: resolved.id,\n kind: resolved.kind,\n release: resolved.release,\n }))\n }, [versions, releasesById])\n\n const visible = chips.slice(0, MAX_VISIBLE_CHIPS)\n const overflow = chips.slice(MAX_VISIBLE_CHIPS)\n\n return (\n <Flex align=\"center\" gap={2} style={{minWidth: 0, overflow: 'hidden'}} wrap=\"nowrap\">\n {visible.map((chip) => (\n <Box key={chip.key} style={{minWidth: 0, overflow: 'hidden'}}>\n <VisibleChip chip={chip} label={getLabel(chip)} />\n </Box>\n ))}\n {overflow.length > 0 && (\n <Tooltip\n content={\n <Stack gap={3} padding={1}>\n <Text muted size={0} weight=\"medium\">\n {t('detail.documents.appears-in.also-in')}\n </Text>\n <Stack gap={2}>\n {overflow.map((chip) => (\n <Flex align=\"center\" gap={2} key={chip.key}>\n <Text size={0}>\n <ChipIcon chip={chip} />\n </Text>\n <Text size={1}>{getLabel(chip)}</Text>\n </Flex>\n ))}\n </Stack>\n </Stack>\n }\n placement=\"bottom-start\"\n portal\n >\n <Badge data-testid=\"variant-bundle-chips-overflow\" radius={2} tone=\"default\">\n {`+${overflow.length}`}\n </Badge>\n </Tooltip>\n )}\n </Flex>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\nimport {useMemo, type RefAttributes} from 'react'\nimport {IntentLink} from 'sanity/router'\n\nimport {type PreviewLayoutKey} from '../../../../components/previews/types'\nimport {DocumentPreviewPresence} from '../../../../presence/DocumentPreviewPresence'\nimport {SanityDefaultPreview} from '../../../../preview/components/SanityDefaultPreview'\nimport {ReleaseAvatarIcon} from '../../../../releases/components/ReleaseAvatar'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {useDocumentPresence} from '../../../../store/presence/useDocumentPresence'\nimport {useDocumentPreviewValues} from '../../../../tasks/hooks/useDocumentPreviewValues'\nimport {getPublishedId} from '../../../../util/draftUtils'\nimport {isPublishedBundleId} from '../../util'\nimport {getPrimaryBundle} from '../releaseLane'\nimport {type DocumentInVariantGroup} from '../types'\n\ninterface VariantDocumentPreviewProps {\n row: DocumentInVariantGroup\n releasesById: Map<string, ReleaseDocument>\n layout?: PreviewLayoutKey\n variantId?: string\n}\n\n// Leading badge that reuses the shared perspective-bar iconography, so a document's primary\n// bundle is recognisable at a glance in the preview column too.\nfunction PrimaryBundleIcon({\n row,\n releasesById,\n}: {\n row: DocumentInVariantGroup\n releasesById: Map<string, ReleaseDocument>\n}) {\n const primary = getPrimaryBundle(row, releasesById)\n if (!primary) return null\n\n return (\n <Box flex=\"none\">\n <Text size={1}>\n {primary.kind === 'published' ? (\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n <ReleaseAvatarIcon tone=\"positive\" />\n ) : primary.kind === 'drafts' ? (\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n <ReleaseAvatarIcon tone=\"caution\" />\n ) : primary.release ? (\n <ReleaseAvatarIcon release={primary.release} />\n ) : (\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n <ReleaseAvatarIcon tone=\"default\" />\n )}\n </Text>\n </Box>\n )\n}\n\ninterface VariantDocumentPreviewLinkProps extends React.ComponentPropsWithoutRef<'a'> {\n publishedId: string\n documentType: string\n searchParams: Array<[string, string]> | undefined\n}\n\nfunction VariantDocumentPreviewLink({\n ref,\n publishedId,\n documentType,\n searchParams,\n ...linkProps\n}: VariantDocumentPreviewLinkProps & RefAttributes<HTMLAnchorElement>) {\n return (\n <IntentLink\n {...linkProps}\n intent=\"edit\"\n params={{\n id: publishedId,\n type: documentType,\n }}\n searchParams={searchParams}\n ref={ref}\n />\n )\n}\n\nfunction getVersionPerspectiveNavigation(\n bundleId: DocumentInVariantGroup['version']['bundleId'],\n variantId?: string,\n): {\n perspectiveStack: string[]\n searchParams: Array<[string, string]> | undefined\n} {\n const searchParams: Array<[string, string]> = variantId ? [['variant', variantId]] : []\n\n if (isPublishedBundleId(bundleId)) {\n return {\n perspectiveStack: ['published'],\n searchParams: [...searchParams, ['perspective', 'published']],\n }\n }\n\n if (bundleId === 'drafts') {\n return {\n perspectiveStack: ['drafts'],\n searchParams: searchParams.length > 0 ? searchParams : undefined,\n }\n }\n\n return {\n perspectiveStack: [bundleId ?? '', 'drafts'],\n searchParams: [...searchParams, ['perspective', bundleId ?? '']],\n }\n}\n\nexport function VariantDocumentPreview({\n row,\n releasesById,\n layout,\n variantId,\n}: VariantDocumentPreviewProps): React.JSX.Element {\n const publishedId = getPublishedId(row.groupId)\n const documentPresence = useDocumentPresence(row.document._id)\n // Navigate to the same bundle the leading badge shows — the row's primary bundle (published →\n // drafts → releases), which is also what the \"Appears in\" chip leads with — so the icon and the\n // open target never disagree. `row.version` is the most-recently-updated version, which can be a\n // different bundle from the primary; falling back to it only when the primary can't be resolved.\n const {perspectiveStack, searchParams} = useMemo(() => {\n const primary = getPrimaryBundle(row, releasesById)\n const navBundleId =\n primary?.kind === 'published'\n ? undefined\n : primary?.kind === 'drafts'\n ? 'drafts'\n : primary?.release\n ? getReleaseIdFromReleaseDocumentId(primary.release._id)\n : row.version.bundleId\n return getVersionPerspectiveNavigation(navBundleId, variantId)\n }, [row, releasesById, variantId])\n\n const previewPresence = useMemo(\n () => documentPresence?.length > 0 && <DocumentPreviewPresence presence={documentPresence} />,\n [documentPresence],\n )\n\n const {isLoading: previewLoading, value: resolvedPreview} = useDocumentPreviewValues({\n documentId: row.document._id,\n documentType: row.document._type,\n perspectiveStack,\n // The table lists documents of the variant being viewed, so previews resolve in that variant\n // rather than whichever variant is selected globally\n variant: variantId,\n })\n\n return (\n <Flex align=\"center\" gap={2}>\n <PrimaryBundleIcon releasesById={releasesById} row={row} />\n <Card\n tone=\"inherit\"\n as={VariantDocumentPreviewLink}\n publishedId={publishedId}\n documentType={row.document._type}\n searchParams={searchParams}\n radius={2}\n data-as=\"a\"\n flex={1}\n style={{minWidth: 0}}\n >\n <SanityDefaultPreview\n {...(resolvedPreview || {})}\n status={previewPresence}\n isPlaceholder={previewLoading}\n layout={layout}\n />\n </Card>\n </Flex>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {ClockIcon} from '@sanity/icons/Clock'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Flex, Text} from '@sanity/ui'\n// eslint-disable-next-line @sanity/i18n/no-i18next-import -- figure out how to have the linter be fine with importing types-only\nimport {type TFunction} from 'i18next'\nimport {memo} from 'react'\n\nimport {ToneIcon} from '../../../../../ui-components/toneIcon/ToneIcon'\nimport {Tooltip} from '../../../../../ui-components/tooltip/Tooltip'\nimport {EditedByCell} from '../../../../components/documentTable/EditedByCell'\nimport {RelativeTime} from '../../../../components/RelativeTime'\nimport {useSchema} from '../../../../hooks/useSchema'\nimport {SanityDefaultPreview} from '../../../../preview/components/SanityDefaultPreview'\nimport {Headers} from '../../../../releases/tool/components/Table/TableHeader'\nimport {type Column} from '../../../../releases/tool/components/Table/types'\nimport {getRowBundleSortKey} from '../releaseLane'\nimport {type DocumentInVariantGroup} from '../types'\nimport {getDocumentPreviewTitle} from './getDocumentPreviewTitle'\nimport {VariantDocumentBundleChips} from './VariantDocumentBundleChips'\nimport {VariantDocumentPreview} from './VariantDocumentPreview'\n\n// `memoKey` only identifies the row's representative document snapshot — it doesn't change when a\n// *sibling* version is added to or removed from `row.versions`, even though that's exactly what the\n// preview's primary-bundle badge and its navigation target (both derived from `row.versions` via\n// `getPrimaryBundle`) depend on. Without this fingerprint the comparator reports \"unchanged\" and the\n// badge/nav target go stale while the unmemoized \"Appears in\" chips (rendered outside this memo)\n// update correctly — the disagreement the surrounding code comments are meant to prevent.\nconst versionsFingerprint = (row: DocumentInVariantGroup): string =>\n row.versions.map((v) => `${v.documentId}:${v.bundleId ?? ''}:${v.releaseRef ?? ''}`).join('|')\n\nconst MemoVariantDocumentPreview = memo(\n function MemoVariantDocumentPreview({\n row,\n releasesById,\n variantId,\n }: {\n row: DocumentInVariantGroup\n releasesById: Map<string, ReleaseDocument>\n variantId?: string\n }) {\n return <VariantDocumentPreview releasesById={releasesById} row={row} variantId={variantId} />\n },\n (prev, next) =>\n prev.row.memoKey === next.row.memoKey &&\n prev.variantId === next.variantId &&\n prev.releasesById === next.releasesById &&\n versionsFingerprint(prev.row) === versionsFingerprint(next.row),\n)\n\nconst MemoDocumentType = memo(\n function DocumentType({type}: {type: string}) {\n const schema = useSchema()\n const schemaType = schema.get(type)\n\n return <Text size={1}>{schemaType?.title || type}</Text>\n },\n (prev, next) => prev.type === next.type,\n)\n\n// Per-row validation status, rendered in its own narrow column so every row answers the same\n// question in the same place — a scannable \"ready vs. not\" rail. A structural column beats an\n// inline error-only glyph: because it's always present, an empty-looking cell reads as \"checked,\n// fine\" (a muted check) rather than the ambiguous absence of an inline mark. Errors get the loud\n// critical glyph so they pop against the muted checks around them.\nfunction ValidationStatusIndicator({\n datum,\n t,\n}: {\n datum: DocumentInVariantGroup\n t: TFunction<'variants'>\n}) {\n if (datum.validation.hasError) {\n const validationErrorCount = datum.validation.validation.filter(\n (validation) => validation.level === 'error',\n ).length\n\n return (\n <Tooltip\n portal\n placement=\"bottom-end\"\n content={\n <Text muted size={1}>\n <Flex align=\"center\" gap={3} padding={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n {t(\n validationErrorCount === 1\n ? 'detail.documents.table.validation.error_one'\n : 'detail.documents.table.validation.error_other',\n {count: validationErrorCount},\n )}\n </Flex>\n </Text>\n }\n >\n <Text size={1} data-testid=\"variant-document-validation-error\">\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n </Text>\n </Tooltip>\n )\n }\n\n if (datum.validation.isValidating) {\n return (\n <Tooltip\n portal\n placement=\"bottom-end\"\n content={\n <Text muted size={1}>\n <Box padding={1}>{t('detail.documents.table.validation.validating')}</Box>\n </Text>\n }\n >\n <Text muted size={1} data-testid=\"variant-document-validation-validating\">\n <ToneIcon icon={ClockIcon} tone=\"default\" />\n </Text>\n </Tooltip>\n )\n }\n\n return (\n <Tooltip\n portal\n placement=\"bottom-end\"\n content={\n <Text muted size={1}>\n <Box padding={1}>{t('detail.documents.table.validation.valid')}</Box>\n </Text>\n }\n >\n <Text muted size={1} data-testid=\"variant-document-validation-valid\">\n <ToneIcon icon={CheckmarkCircleIcon} tone=\"positive\" />\n </Text>\n </Tooltip>\n )\n}\n\n// The leading select column (select-all header + row checkboxes) is injected by the shared\n// DocumentTable, so it is not defined here.\nexport const getVariantDocumentTableColumnDefs = (\n t: TFunction<'variants'>,\n variantId: string | undefined,\n releasesById: Map<string, ReleaseDocument>,\n): Column<DocumentInVariantGroup>[] => [\n {\n id: 'documentGroup',\n hidden: true,\n width: null,\n sorting: true,\n sortTransform: (row) => row.rowKey ?? row.groupId,\n },\n {\n id: 'bundle',\n // Wider than the old 140 so typical release names (\"Compliance Dashboard\") render in full;\n // only genuine outliers truncate. The extra room is reclaimed from the Type column below,\n // which only ever holds short schema titles.\n width: 190,\n style: {minWidth: 120, maxWidth: 190},\n sorting: true,\n sortTransform: (row) => getRowBundleSortKey(row, releasesById),\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton\n paddingLeft={2}\n text={t('detail.documents.table.appears-in')}\n {...props}\n />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex\n align=\"center\"\n {...cellProps}\n style={{...cellProps.style, flex: '0 1 auto', minWidth: 0, overflow: 'hidden'}}\n >\n <Box style={{minWidth: 0, overflow: 'hidden'}} paddingX={2}>\n {!datum.isLoading && (\n <VariantDocumentBundleChips versions={datum.versions} releasesById={releasesById} />\n )}\n </Box>\n </Flex>\n ),\n },\n {\n id: 'document._type',\n // Trimmed from 160 → 130: schema titles are short, so the freed width goes to \"Appears in\".\n width: 130,\n style: {minWidth: 110, maxWidth: 130},\n sorting: true,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton\n paddingLeft={2}\n text={t('detail.documents.table.type')}\n {...props}\n />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex align=\"center\" {...cellProps}>\n <Box paddingX={2}>\n {!datum.isLoading && <MemoDocumentType type={datum.document._type} />}\n </Box>\n </Flex>\n ),\n },\n {\n // The document preview / title column. Search moved out of this header into the command lane;\n // the header is a plain sortable \"Document\" label. flex={1} in BOTH header and body (the body\n // cell below is also flex={1}) so this column grows to fill the row — pushing \"Edited\" to the\n // right edge with no trailing dead space — and keeps the same width whether the table has rows\n // or not. (A content-sized column collapses to its label width when empty and diverges between\n // the independent header and body flexboxes.)\n id: 'search',\n width: null,\n style: {minWidth: 240},\n sorting: true,\n sortTransform: ({document}) => getDocumentPreviewTitle(document).toLowerCase(),\n header: (props) => (\n <Flex {...props.headerProps} flex={1} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton\n paddingLeft={2}\n text={t('detail.documents.table.document')}\n {...props}\n />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex\n {...cellProps}\n align=\"center\"\n flex={1}\n gap={2}\n padding={1}\n paddingRight={2}\n sizing=\"border\"\n >\n <Box flex={1} style={{minWidth: 0}}>\n {datum.isLoading ? (\n <SanityDefaultPreview isPlaceholder />\n ) : (\n <MemoVariantDocumentPreview\n releasesById={releasesById}\n row={datum}\n variantId={variantId}\n />\n )}\n </Box>\n </Flex>\n ),\n },\n {\n // \"Last edited\" (relative time) comes BEFORE \"Edited by\" so this text column sits between the\n // document preview's live-presence avatar and the edited-by avatar — otherwise the two round\n // avatars would neighbour across the column boundary and read as one crowded cluster. Also reads\n // naturally: \"last edited 6 days ago, by …\".\n id: 'document._updatedAt',\n sorting: true,\n width: 130,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton\n paddingLeft={2}\n text={t('detail.documents.table.last-edited')}\n {...props}\n />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex\n {...cellProps}\n align=\"center\"\n paddingX={2}\n paddingY={3}\n style={{minWidth: 130}}\n sizing=\"border\"\n >\n {!datum.isLoading && datum.document._updatedAt && (\n <Text muted size={1}>\n <RelativeTime time={datum.document._updatedAt} useTemporalPhrase minimal />\n </Text>\n )}\n </Flex>\n ),\n },\n {\n // \"Edited by\" — the person who last edited the document. Its own named column (not just an\n // avatar tucked beside the time) so authorship reads distinctly from live presence, which stays\n // in the document preview. The name collapses to avatar-only when the column is squeezed.\n id: 'editedBy',\n sorting: false,\n width: 170,\n style: {minWidth: 44, maxWidth: 170},\n header: (props) => (\n <Flex {...props.headerProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Text muted size={1} textOverflow=\"ellipsis\" weight=\"medium\">\n {t('detail.documents.table.edited-by')}\n </Text>\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n {!datum.isLoading && (\n <EditedByCell documentId={datum.document._id} revision={datum.document._rev} />\n )}\n </Flex>\n ),\n },\n {\n // Validation status trails the row, grouped with the other status/meta columns (edited-by,\n // last-edited) and matching the releases table. A scannable \"ready vs. has errors\" cell —\n // sortable so a reader can pull error rows to the top. No header label: the glyphs speak for\n // themselves and a text header would overflow the 44px slot.\n id: 'validation',\n width: 44,\n style: {minWidth: 44, maxWidth: 44},\n sorting: true,\n sortTransform: (row) => (row.validation.hasError ? 0 : 1),\n header: (props) => <Flex {...props.headerProps} paddingY={3} sizing=\"border\" />,\n cell: ({cellProps, datum}) => (\n <Flex {...cellProps} align=\"center\" justify=\"center\" paddingY={3} sizing=\"border\">\n {!datum.isLoading && <ValidationStatusIndicator datum={datum} t={t} />}\n </Flex>\n ),\n },\n]\n","import {Flex, TabList} from '@sanity/ui'\n\nimport {Tab} from '../../../../ui-components/tab/Tab'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type ReleaseLaneKind, RELEASE_LANE_ALL, type ReleaseLaneSegment} from './releaseLane'\n\nfunction getSegmentTone(kind: ReleaseLaneKind): 'positive' | 'primary' | 'default' {\n if (kind === 'published') return 'positive'\n if (kind === 'release') return 'primary'\n return 'default'\n}\n\n/**\n * The release lane: a filter-tab strip summarizing which bundles this variant's documents\n * participate in, each tab filtering the documents table to that bundle. Mirrors the Releases\n * tool's ReleaseDocumentFilterTabs so the two document tables share one filter idiom.\n *\n * @internal\n */\nexport function VariantReleaseLane({\n segments,\n totalCount,\n activeLane,\n onSelectLane,\n}: {\n segments: ReleaseLaneSegment[]\n totalCount: number\n activeLane: string\n onSelectLane: (laneId: string) => void\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n // Bundle labels live in the core namespace (shared with the per-row bundle chips).\n const {t: tCore} = useTranslation()\n\n return (\n <Flex align=\"center\" wrap=\"nowrap\" data-testid=\"variant-release-lane\">\n {/* No leading icon/label: the tabs (All, Published, Drafts, release names) are self-evidently\n bundle filters. A filter icon here read as a clickable control that wasn't one. */}\n <TabList gap={1}>\n {[\n <Tab\n key=\"all\"\n aria-controls=\"variant-documents-table\"\n data-testid=\"variant-release-lane-segment-all\"\n id=\"variant-release-lane-segment-all\"\n label={t('detail.release-lane.count', {\n label: t('detail.release-lane.all'),\n count: totalCount,\n })}\n onClick={() => onSelectLane(RELEASE_LANE_ALL)}\n selected={activeLane === RELEASE_LANE_ALL}\n />,\n ...segments.map((segment) => {\n let label: string\n if (segment.kind === 'published') {\n label = tCore('release.chip.published')\n } else if (segment.kind === 'drafts') {\n label = tCore('release.chip.draft')\n } else {\n label =\n segment.release?.metadata?.title ?? tCore('release.placeholder-untitled-release')\n }\n\n const isSelected = activeLane === segment.id\n\n return (\n <Tab\n key={segment.id}\n aria-controls=\"variant-documents-table\"\n data-testid={`variant-release-lane-segment-${segment.id}`}\n id={`variant-release-lane-segment-${segment.id}`}\n label={t('detail.release-lane.count', {label, count: segment.count})}\n onClick={() => onSelectLane(segment.id)}\n selected={isSelected}\n tone={isSelected ? getSegmentTone(segment.kind) : 'default'}\n />\n )\n }),\n ]}\n </TabList>\n </Flex>\n )\n}\n","import {useCallback, useMemo, useState} from 'react'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useActiveReleases} from '../../../releases/store/useActiveReleases'\nimport {DocumentTable} from '../../../releases/tool/components/Table/DocumentTable'\nimport {type Column} from '../../../releases/tool/components/Table/types'\nimport {searchDocumentRelease} from '../../../releases/tool/detail/documentTable/searchDocumentRelease'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {computeReleaseLaneSegments, RELEASE_LANE_ALL, rowMatchesLane} from './releaseLane'\nimport {type DocumentInVariantGroup} from './types'\nimport {VariantDocumentActions} from './variantDocumentTable/VariantDocumentActions'\nimport {getVariantDocumentTableColumnDefs} from './variantDocumentTable/VariantDocumentTableColumnDefs'\nimport {VariantReleaseLane} from './VariantReleaseLane'\n\nfunction searchVariantDocument(row: DocumentInVariantGroup, searchTerm: string): boolean {\n return searchDocumentRelease(row.document, searchTerm)\n}\n\nexport function VariantDocumentsTable({\n rows,\n loading = false,\n variantId,\n}: {\n rows: DocumentInVariantGroup[]\n loading?: boolean\n variantId?: string\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const [activeLane, setActiveLane] = useState<string>(RELEASE_LANE_ALL)\n const {data: releases} = useActiveReleases()\n const releasesById = useMemo(\n () => new Map(releases.map((release) => [release._id, release])),\n [releases],\n )\n\n const segments = useMemo(\n () => computeReleaseLaneSegments(rows, releasesById),\n [rows, releasesById],\n )\n\n const activeLaneIsValid =\n activeLane === RELEASE_LANE_ALL || segments.some((segment) => segment.id === activeLane)\n\n // If the active release lane disappears (e.g. its documents move), fall back to \"All\" and\n // clear state so a later reappearance of that bundle does not resurrect the stale filter.\n if (!activeLaneIsValid) {\n setActiveLane(RELEASE_LANE_ALL)\n }\n\n const resolvedActiveLane = activeLaneIsValid ? activeLane : RELEASE_LANE_ALL\n\n // Filter tabs are the one way to scope by bundle (grouping was removed: filtering preserves\n // column sorting, which grouping cannot). A selected tab filters the flat, always-sortable list;\n // the shared DocumentTable applies free-text search on top of these lane-filtered rows.\n const laneRows = useMemo(() => {\n const filtered =\n resolvedActiveLane === RELEASE_LANE_ALL\n ? rows\n : rows.filter((row) => rowMatchesLane(row, resolvedActiveLane, releasesById))\n return filtered.map((row) => ({...row, rowKey: row.groupId}))\n }, [rows, resolvedActiveLane, releasesById])\n\n const handleSelectLane = useCallback((laneId: string) => {\n // Clicking the already-active segment clears the filter back to \"All\".\n setActiveLane((previous) => (previous === laneId ? RELEASE_LANE_ALL : laneId))\n }, [])\n\n const renderRowActions = useCallback(\n ({datum}: {datum: unknown}) => (\n <VariantDocumentActions row={datum as DocumentInVariantGroup} t={t} />\n ),\n [t],\n )\n\n const hasReleaseControls = !loading && rows.length > 0 && segments.length > 1\n\n const columnDefs = useMemo<Column<DocumentInVariantGroup>[]>(\n () => getVariantDocumentTableColumnDefs(t, variantId, releasesById),\n [t, variantId, releasesById],\n )\n\n return (\n <DocumentTable<DocumentInVariantGroup>\n // Keep the command lane (search + filter tabs) mounted during load so it doesn't pop in when\n // rows arrive — matching the release detail table and avoiding a layout jump.\n alwaysShowCommandLane\n columnDefs={columnDefs}\n defaultSort={{column: 'documentGroup', direction: 'asc'}}\n emptyState={t('detail.documents.no-documents')}\n filterTabs={\n hasReleaseControls ? (\n <VariantReleaseLane\n activeLane={resolvedActiveLane}\n onSelectLane={handleSelectLane}\n segments={segments}\n totalCount={rows.length}\n />\n ) : undefined\n }\n getRowKey={(row) => row.groupId}\n id=\"variant-documents-table\"\n loading={loading}\n rowActions={renderRowActions}\n rows={laneRows}\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n rowId=\"rowKey\"\n searchPlaceholder={t('detail.documents.table.search-placeholder')}\n searchPredicate={searchVariantDocument}\n searchTestId=\"variant-documents-search\"\n />\n )\n}\n","import {DocumentsIcon} from '@sanity/icons/Documents'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {SortIcon} from '@sanity/icons/Sort'\nimport {UserIcon} from '@sanity/icons/User'\nimport {Box, Card, Container, Flex, Skeleton, Stack, Text} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {\n DetailBackButton,\n DetailIdentity,\n DetailPropertiesPanel,\n type DetailPropertiesSection,\n} from '../../../components/detailLayout'\nimport {LoadingBlock} from '../../../components/loadingBlock/LoadingBlock'\nimport {RelativeTime} from '../../../components/RelativeTime'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useVariantDocuments} from '../../hooks/useVariantDocuments'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {\n decodeVariantIdFromRoute,\n getVariantDescription,\n getVariantId,\n getVariantTitle,\n} from '../util'\nimport {groupVariantDocumentsByGroup} from './groupVariantDocumentsByGroup'\nimport {VariantActionRail} from './VariantActionRail'\nimport {getVariantConditionIcon} from './variantConditionIcons'\nimport {VariantDocumentsTable} from './VariantDocumentsTable'\n\nexport function VariantDetail() {\n const router = useRouter()\n const {t} = useTranslation(variantsLocaleNamespace)\n const variantIdRaw =\n typeof router.state.variantId === 'string' ? router.state.variantId : undefined\n const variantId = decodeVariantIdFromRoute(variantIdRaw)\n const {byId, loading} = useAllVariants()\n\n const variant = variantId ? byId.get(variantId) : undefined\n const {\n loading: documentsLoading,\n results: variantDocuments,\n error: variantDocumentsError,\n } = useVariantDocuments(variant?._id)\n\n const tableRows = useMemo(\n () => groupVariantDocumentsByGroup(variantDocuments),\n [variantDocuments],\n )\n\n // \"Unpublished changes\" = document groups that carry a draft version. Counted separately from the\n // total (a group can hold both a published and a draft version), so the two numbers each answer a\n // distinct question — \"how many documents\" vs \"how many have pending changes\" — without implying\n // they partition the total.\n const unpublishedCount = useMemo(\n () =>\n tableRows.filter((row) => row.versions.some((version) => version.bundleId === 'drafts'))\n .length,\n [tableRows],\n )\n\n // Two short, side-by-side panels rather than one tall stacked one: one about the variant\n // definition itself (its targeting conditions + when it was created), one about the documents it\n // holds. Same bordered pattern, split along a semantic seam (\"what defines it\" vs \"what's in it\").\n const definitionSections = useMemo<DetailPropertiesSection[]>(() => {\n if (!variant) return []\n\n const conditionEntries = Object.entries(variant.conditions)\n const conditionRows =\n conditionEntries.length > 0\n ? conditionEntries.map(([key, value]) => {\n // Each targeting dimension gets a recognizable glyph (audience → people, location →\n // pin, …) so a multi-dimension definition reads at a glance.\n const DimensionIcon = getVariantConditionIcon(key)\n return {\n icon: (\n <Text muted size={1}>\n <DimensionIcon />\n </Text>\n ),\n label: key,\n value,\n }\n })\n : [\n {\n label: '',\n value: (\n <Text muted size={1}>\n {t('overview.table.no-conditions')}\n </Text>\n ),\n },\n ]\n\n return [\n {\n title: t('detail.metadata.definition'),\n // Split the conditions into two columns once a definition carries several, so a 5-6 dimension\n // definition reads as a compact block rather than a tall stack — keeping it closer to the\n // fixed-height Details panel beside it. Conditions only: \"Created\" is provenance, not a\n // targeting condition, so it lives in the Details panel with the other variant-level facts.\n multiColumn: true,\n rows: conditionRows,\n },\n ]\n }, [t, variant])\n\n const documentSections = useMemo<DetailPropertiesSection[]>(() => {\n // While documents are still streaming in, show a skeleton rather than \"0\" — a literal 0\n // mid-load reads as \"empty\" when the real count just hasn't arrived yet.\n const countValue = (count: number): React.ReactNode =>\n documentsLoading ? (\n <Skeleton animated radius={1} style={{width: 24, height: 11}} />\n ) : (\n String(count)\n )\n\n return [\n {\n // \"Details\" — variant-level facts: document counts plus when it was created. Titled\n // \"Details\" (not \"Documents\") because it now holds provenance too, so the count row is\n // labeled \"Total documents\" to stay unambiguous without the panel title carrying it.\n title: t('detail.metadata.details'),\n rows: [\n {\n icon: (\n <Text muted size={1}>\n <DocumentsIcon />\n </Text>\n ),\n label: t('detail.metadata.total-documents'),\n value: countValue(tableRows.length),\n },\n {\n icon: (\n <Text muted size={1}>\n <EditIcon />\n </Text>\n ),\n label: t('detail.metadata.unpublished-changes'),\n value: countValue(unpublishedCount),\n },\n variant && {\n // Resolution priority — the tiebreaker when several definitions match. Shown here (it is\n // authored in the create/edit dialog) so the detail page reflects the full definition.\n icon: (\n <Text muted size={1}>\n <SortIcon />\n </Text>\n ),\n label: t('detail.metadata.priority'),\n value: String(variant.priority),\n },\n variant && {\n // A person glyph (not a clock — a clock reads as \"time/schedule\"). The author identity\n // isn't on the variant document yet, so this shows the relative time for now; wiring the\n // creator's name/avatar is a follow-up.\n icon: (\n <Text muted size={1}>\n <UserIcon />\n </Text>\n ),\n label: t('detail.footer.created'),\n value: (\n <Text size={1}>\n <RelativeTime minimal time={variant._createdAt} useTemporalPhrase />\n </Text>\n ),\n },\n ],\n },\n ]\n }, [documentsLoading, t, tableRows.length, unpublishedCount, variant])\n\n if (loading) {\n return <LoadingBlock fill title={t('detail.loading')} />\n }\n\n if (!variant) {\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\">\n <Card borderBottom flex=\"none\" padding={3}>\n <DetailBackButton onClick={() => router.navigate({})} text={t('detail.back')} />\n </Card>\n <Box padding={4}>\n <Card border padding={4} radius={3}>\n <Stack gap={3}>\n <Text size={2} weight=\"semibold\">\n {t('detail.not-found.title')}\n </Text>\n <Text muted size={1}>\n {t('detail.not-found.description')}\n </Text>\n </Stack>\n </Card>\n </Box>\n </Flex>\n )\n }\n\n const description = getVariantDescription(variant)\n\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\" overflow=\"hidden\">\n {/* Header region — the shared detail spine: a top rail (back on the left, action rail on the\n right), then a two-zone body (identity on the left, a bordered properties panel on the\n right). Matches the Releases detail page so the two read as one family. No borderBottom:\n the command lane below already carries a divider, and the table's own row lines are enough —\n a header border here would double-line the filter tabs (and Releases has none). */}\n <Card flex=\"none\" paddingY={3}>\n {/* container[3] so the header aligns with the table's row content below (the shared Table\n centers rows at container[3]) instead of spreading edge-to-edge on wide screens. */}\n <Container flex=\"none\" width={3}>\n {/* paddingX={2} (8px) matches the table's first-column content inset so the back button and\n actions line up with the row content below. */}\n <Box paddingX={2}>\n <Stack gap={4}>\n <Flex align=\"center\" gap={3}>\n <Flex align=\"center\" flex={1} style={{minWidth: 0}}>\n <DetailBackButton\n onClick={() => router.navigate({})}\n testId=\"back-to-variants-button\"\n text={t('detail.back')}\n />\n </Flex>\n <Flex data-testid=\"variant-detail-actions\" flex=\"none\">\n <VariantActionRail\n documentCount={tableRows.length}\n documentsLoading={documentsLoading}\n variant={variant}\n />\n </Flex>\n </Flex>\n <Flex align=\"flex-start\" gap={4} wrap=\"wrap\">\n <Box flex={1} style={{minWidth: 280}}>\n <DetailIdentity\n description={description || undefined}\n descriptionTestId=\"variant-description-display\"\n title={getVariantTitle(variant)}\n titleAs=\"h1\"\n titlePlaceholder={t('overview.table.variant')}\n titleTestId=\"variant-title-display\"\n />\n </Box>\n {/* Both panels are direct children of the wrapping row (not a nested flex=\"none\"\n group) so each can wrap onto its own line when the viewport is too narrow to hold\n them side by side — otherwise the fit-content panels overflow on small screens. */}\n <DetailPropertiesPanel\n maxWidth={480}\n sections={definitionSections}\n testId=\"variant-detail-definition\"\n />\n <DetailPropertiesPanel\n sections={documentSections}\n testId=\"variant-detail-documents\"\n />\n </Flex>\n </Stack>\n </Box>\n </Container>\n </Card>\n <Flex direction=\"column\" flex={1} height=\"fill\" overflow=\"hidden\" style={{minHeight: 0}}>\n {variantDocumentsError ? (\n <Box padding={4}>\n <Text muted size={1}>\n {t('detail.documents.error')}\n </Text>\n </Box>\n ) : (\n <VariantDocumentsTable\n loading={documentsLoading}\n rows={tableRows}\n variantId={getVariantId(variant._id)}\n />\n )}\n </Flex>\n </Flex>\n )\n}\n","import {useCallback, useMemo} from 'react'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useVariantOperations} from '../../store/useVariantOperations'\nimport {getVariantDefaults} from '../../util/variantDefaults'\nimport {VariantDialog} from './VariantDialog'\n\ninterface CreateVariantDialogProps {\n onCancel: () => void\n onSubmit: (createdVariantId: string) => void\n}\n\nexport function CreateVariantDialog(props: CreateVariantDialogProps): React.JSX.Element {\n const {onCancel, onSubmit} = props\n const {t} = useTranslation(variantsLocaleNamespace)\n const {createVariant} = useVariantOperations()\n const initialValue = useMemo(() => getVariantDefaults(), [])\n\n const handleSubmit = useCallback(\n async (variant: typeof initialValue) => {\n await createVariant(variant)\n onSubmit(variant._id)\n },\n [createVariant, onSubmit],\n )\n\n return (\n <VariantDialog\n confirmDataTestId=\"submit-variant-button\"\n confirmText={t('dialog.create.action.confirm')}\n errorTitle={t('dialog.create.error.title')}\n header={t('dialog.create.title')}\n id=\"create-variant-dialog\"\n initialValue={initialValue}\n onCancel={onCancel}\n onSubmit={handleSubmit}\n />\n )\n}\n","import {type SanityClient} from '@sanity/client'\nimport {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {type Observable, of} from 'rxjs'\nimport {catchError, distinctUntilChanged, map, scan, startWith, switchMap} from 'rxjs/operators'\n\nimport {useClient} from '../../hooks/useClient'\nimport {listenQuery} from '../../store/document/listenQuery'\nimport {VARIANTS_STUDIO_CLIENT_OPTIONS} from '../store/constants'\nimport {type VariantStoreState} from '../store/reducer'\nimport {useVariantsStore} from '../store/useVariantsStore'\nimport {getVariantId} from '../tool/util'\n\n/**\n * The fetch and listen GROQ queries used to keep per-variant document counts fresh.\n *\n * @internal\n */\nexport interface VariantsDocumentCountsQuery {\n /**\n * Aggregate object query returning one count per variant, keyed by variant definition\n * document id (`_.variants.*`).\n */\n fetch: string\n /** Filter matching every document in any of the variants, used for the single listener. */\n listen: string\n}\n\n/**\n * Builds a single aggregate fetch query that counts the documents in each variant, and a\n * single listen filter covering all of them.\n *\n * Documents are counted per document group (`_system.group._ref`), so the count matches the\n * number of rows in the variant detail table, where versions of the same document are grouped.\n *\n * `sanity::partOfVariant()` matches on the short variant id (the `_.variants.` path prefix is\n * stripped via {@link getVariantId}).\n *\n * @internal\n */\nexport function buildVariantsDocumentCountsQuery(\n variantDocumentIds: string[],\n): VariantsDocumentCountsQuery {\n const projections: string[] = []\n const filters: string[] = []\n\n for (const variantDocumentId of variantDocumentIds) {\n const membership = `sanity::partOfVariant(${JSON.stringify(getVariantId(variantDocumentId))})`\n\n projections.push(\n `${JSON.stringify(variantDocumentId)}: count(array::unique(*[${membership}]._system.group._ref))`,\n )\n filters.push(membership)\n }\n\n return {\n fetch: `{${projections.join(',')}}`,\n listen: `*[${filters.join(' || ')}]`,\n }\n}\n\n/** @internal */\nexport interface VariantsDocumentCountsState {\n /**\n * Document counts keyed by variant definition document id (`_.variants.*`), or `null` before\n * the first fetch has completed (or after an error).\n */\n data: Record<string, number> | null\n loading: boolean\n error: Error | null\n}\n\nconst INITIAL_STATE: VariantsDocumentCountsState = {data: null, loading: true, error: null}\nconst EMPTY_STATE: VariantsDocumentCountsState = {data: {}, loading: false, error: null}\n\n/**\n * Fetches the document counts for one set of variants and keeps them fresh: a single listener\n * (one OR-chained `sanity::partOfVariant()` filter covering all the variants) triggers a\n * throttled refetch of one aggregate count query, via {@link listenQuery}.\n */\nfunction listenVariantsDocumentCounts(\n client: SanityClient,\n variantDocumentIds: string[],\n): Observable<VariantsDocumentCountsState> {\n if (variantDocumentIds.length === 0) {\n return of(EMPTY_STATE)\n }\n\n const {fetch, listen} = buildVariantsDocumentCountsQuery(variantDocumentIds)\n\n return listenQuery(\n client,\n {fetch, listen},\n {},\n // Variant-scoped documents are version documents, which are only visible to queries\n // using the raw perspective.\n {tag: 'variants-doc-counts.listen', perspective: 'raw'},\n ).pipe(\n map((response: Record<string, number>): VariantsDocumentCountsState => ({\n data: Object.fromEntries(\n variantDocumentIds.map((variantDocumentId) => [\n variantDocumentId,\n response?.[variantDocumentId] ?? 0,\n ]),\n ),\n loading: false,\n error: null,\n })),\n startWith(INITIAL_STATE),\n // catchError stays on this inner observable so the outer stream in\n // `getVariantsDocumentCounts` keeps reacting to variant list changes after a failure.\n catchError((error) => of({data: null, loading: false, error})),\n )\n}\n\n/**\n * Creates an observable that keeps a live count of the documents in each variant held by the\n * variants store.\n *\n * The variant ids are derived from the store's `state$`, so the returned observable never\n * needs to be recreated: when the set of variants changes, the current listener is closed\n * and a new fetch + listener is started inside the same stream (`switchMap`) — there is\n * never more than one active listener. Previously fetched counts are carried across the\n * switch (`scan`), so existing rows don't flash back to a loading state.\n *\n * @internal\n */\nexport function getVariantsDocumentCounts(\n client: SanityClient,\n variantsState$: Observable<VariantStoreState>,\n): Observable<VariantsDocumentCountsState> {\n return variantsState$.pipe(\n // Document ids cannot contain commas, so a sorted joined string is a stable identity\n // key that lets `distinctUntilChanged` ignore store emissions (e.g. variant metadata\n // edits) that don't change the set of variants.\n map((state) => Array.from(state.variants.keys()).toSorted().join(',')),\n distinctUntilChanged(),\n switchMap((idsKey) => listenVariantsDocumentCounts(client, idsKey ? idsKey.split(',') : [])),\n scan(\n (previous, next): VariantsDocumentCountsState => ({\n // Keep the previous counts while the next fetch is loading (or errored), so counts\n // for unchanged variants remain visible across variant list changes.\n data: next.data ? {...previous.data, ...next.data} : previous.data,\n loading: next.loading && previous.data === null,\n error: next.error,\n }),\n INITIAL_STATE,\n ),\n )\n}\n\n/**\n * Keeps a live count of the documents in each variant, using a single listener and a single\n * aggregate count query (see {@link getVariantsDocumentCounts}).\n *\n * @internal\n */\nexport function useVariantsDocumentCounts(): VariantsDocumentCountsState {\n const client = useClient(VARIANTS_STUDIO_CLIENT_OPTIONS)\n const {state$} = useVariantsStore()\n\n const observable = useMemo(() => getVariantsDocumentCounts(client, state$), [client, state$])\n\n return useObservable(observable, INITIAL_STATE)\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {CheckmarkIcon} from '@sanity/icons/Checkmark'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {FilterIcon} from '@sanity/icons/Filter'\nimport {SearchIcon} from '@sanity/icons/Search'\nimport {Box, Card, Flex, Stack, Text, TextInput, useClickOutsideEvent} from '@sanity/ui'\nimport {type ComponentType, useCallback, useEffect, useMemo, useRef, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {Popover} from '../../../../ui-components/popover/Popover'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {getVariantConditionIcon} from '../detail/variantConditionIcons'\nimport {type ConditionFacet} from '../util'\n\n// Condition keys are authored strings (\"brand\", \"market\", …); present them title-cased.\nfunction facetLabel(key: string): string {\n return key.charAt(0).toUpperCase() + key.slice(1)\n}\n\n/**\n * The single entry point for adding a filter — an \"Add filter\" button that opens a two-level menu:\n * a searchable list of dimensions, then the values for the chosen dimension (multi-select, so the\n * menu stays open). Scales to any number of dimensions without overflowing the lane, unlike a\n * dropdown-per-dimension row.\n */\nfunction AddFilterMenu({\n facets,\n value,\n onToggleValue,\n}: {\n facets: ConditionFacet[]\n value: Record<string, string[]>\n onToggleValue: (key: string, val: string) => void\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const [open, setOpen] = useState(false)\n const [dimensionKey, setDimensionKey] = useState<string | null>(null)\n const [query, setQuery] = useState('')\n const [buttonEl, setButtonEl] = useState<HTMLButtonElement | null>(null)\n const [popoverEl, setPopoverEl] = useState<HTMLElement | null>(null)\n\n const close = useCallback(() => {\n setOpen(false)\n setDimensionKey(null)\n setQuery('')\n }, [])\n\n useClickOutsideEvent(close, () => [buttonEl, popoverEl])\n\n const activeFacet = facets.find((facet) => facet.key === dimensionKey)\n\n const matchingFacets = useMemo(() => {\n const normalized = query.trim().toLowerCase()\n if (!normalized) return facets\n return facets.filter((facet) => facetLabel(facet.key).toLowerCase().includes(normalized))\n }, [facets, query])\n\n // Master-detail: dimensions on the left, the selected dimension's values on the right — both panes\n // visible at once, so choosing a dimension and toggling its values needs no back-and-forth.\n const content = (\n <Stack gap={0} style={{width: 520}}>\n <Box padding={2} style={{borderBottom: '1px solid var(--card-border-color)'}}>\n <TextInput\n fontSize={1}\n icon={SearchIcon}\n onChange={(event) => setQuery(event.currentTarget.value)}\n placeholder={t('overview.filter.find-dimension')}\n radius={2}\n value={query}\n />\n </Box>\n <Flex>\n {/* Left: dimensions — icon + label grouped left (flex-start); the highlighted row and the\n live value pane convey the drill, so no trailing chevron is needed. */}\n <Box style={{width: 240, borderRight: '1px solid var(--card-border-color)'}}>\n <Stack padding={2} gap={1}>\n {matchingFacets.length === 0 ? (\n <Box padding={3}>\n <Text muted size={1}>\n {t('overview.filter.no-dimensions')}\n </Text>\n </Box>\n ) : (\n matchingFacets.map((facet) => {\n const count = (value[facet.key] ?? []).length\n return (\n <Button\n key={facet.key}\n data-testid={`variant-filter-dimension-${facet.key}`}\n icon={getVariantConditionIcon(facet.key)}\n justify=\"flex-start\"\n mode=\"bleed\"\n onClick={() => setDimensionKey(facet.key)}\n selected={facet.key === dimensionKey}\n text={count > 0 ? `${facetLabel(facet.key)} (${count})` : facetLabel(facet.key)}\n />\n )\n })\n )}\n </Stack>\n </Box>\n {/* Right: values of the selected dimension — a muted header names the dimension, then the\n values (text left, selected checkmark pinned right via space-between). */}\n <Box style={{flex: 1}}>\n {activeFacet ? (\n <Stack padding={2} gap={1}>\n <Box paddingBottom={1} paddingTop={1} paddingX={2}>\n <Text muted size={0} weight=\"medium\">\n {facetLabel(activeFacet.key)}\n </Text>\n </Box>\n {activeFacet.values.map((val) => {\n const isSelected = (value[activeFacet.key] ?? []).includes(val)\n return (\n <Button\n key={val}\n data-testid={`variant-filter-value-${activeFacet.key}-${val}`}\n iconRight={isSelected ? CheckmarkIcon : undefined}\n justify=\"space-between\"\n mode=\"bleed\"\n onClick={() => onToggleValue(activeFacet.key, val)}\n selected={isSelected}\n text={val}\n />\n )\n })}\n </Stack>\n ) : (\n <Flex align=\"center\" height=\"fill\" justify=\"center\" padding={4}>\n <Text align=\"center\" muted size={1}>\n {t('overview.filter.pick-dimension-hint')}\n </Text>\n </Flex>\n )}\n </Box>\n </Flex>\n </Stack>\n )\n\n return (\n <Popover ref={setPopoverEl} content={content} open={open} placement=\"bottom-start\" portal>\n <Button\n ref={setButtonEl}\n icon={AddIcon}\n mode=\"ghost\"\n onClick={() => {\n if (open) {\n close()\n } else {\n // Default to the first dimension so the value pane is populated on open.\n setDimensionKey((prev) => prev ?? facets[0]?.key ?? null)\n setOpen(true)\n }\n }}\n selected={open}\n text={t('overview.filter.add')}\n />\n </Popover>\n )\n}\n\nconst NOOP = (): void => {}\n\ninterface ActiveChip {\n key: string\n val: string\n icon: ComponentType\n /** The value, shown as the chip text. */\n label: string\n /** \"Dimension: value\", used as the tooltip (and the only cue when collapsed to an icon). */\n title: string\n}\n\n/**\n * A single active filter value, shown as a removable chip carrying its dimension icon. When\n * `iconOnly` (the overflow-collapsed state) it drops the value text and surfaces it via a tooltip.\n */\nfunction FilterChip({\n chip,\n iconOnly,\n onRemove,\n}: {\n chip: ActiveChip\n iconOnly: boolean\n onRemove: () => void\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const Icon = chip.icon\n const body = (\n <Card border padding={1} radius={2} style={{flex: 'none'}} tone=\"primary\">\n <Flex align=\"center\" gap={2}>\n <Box paddingLeft={1}>\n <Text size={1}>\n <Icon />\n </Text>\n </Box>\n {!iconOnly && (\n <Text muted size={1} style={{whiteSpace: 'nowrap'}}>\n {chip.label}\n </Text>\n )}\n <Button\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onRemove}\n paddingY={1}\n tooltipProps={{content: t('overview.filter.remove-value')}}\n />\n </Flex>\n </Card>\n )\n\n // Collapsed chips are just an icon; the tooltip carries the dimension + value.\n return iconOnly ? (\n <Tooltip content={<Text size={1}>{chip.title}</Text>} portal>\n <Box style={{flex: 'none'}}>{body}</Box>\n </Tooltip>\n ) : (\n body\n )\n}\n\n/**\n * The active filter chips, in a flexible zone that never scrolls: a hidden, always-expanded copy is\n * measured against the visible zone's width, and when the full chips would overflow they all collapse\n * to icon-only (tooltip-labelled). The zone flexes, so \"Add filter\" and \"Clear filters\" beside it stay\n * pinned and always visible.\n */\nfunction ActiveChips({\n chips,\n onRemove,\n}: {\n chips: ActiveChip[]\n onRemove: (key: string, val: string) => void\n}): React.JSX.Element {\n const [collapsed, setCollapsed] = useState(false)\n const containerRef = useRef<HTMLDivElement | null>(null)\n const measureRef = useRef<HTMLDivElement | null>(null)\n\n useEffect(() => {\n const container = containerRef.current\n const measure = measureRef.current\n if (!container || !measure || typeof ResizeObserver === 'undefined') return undefined\n const observer = new ResizeObserver(() => {\n setCollapsed(measure.scrollWidth > container.clientWidth)\n })\n observer.observe(container)\n observer.observe(measure)\n return () => observer.disconnect()\n }, [])\n\n return (\n <Box\n flex={1}\n ref={containerRef}\n style={{minWidth: 0, overflow: 'hidden', position: 'relative'}}\n >\n <Flex align=\"center\" gap={2} wrap=\"nowrap\">\n {chips.map((chip) => (\n <FilterChip\n chip={chip}\n iconOnly={collapsed}\n key={`${chip.key}:${chip.val}`}\n onRemove={() => onRemove(chip.key, chip.val)}\n />\n ))}\n </Flex>\n {/* Hidden, always-expanded copy — measured to decide whether the visible chips must collapse. */}\n <Flex\n aria-hidden\n gap={2}\n ref={measureRef}\n style={{\n left: 0,\n pointerEvents: 'none',\n position: 'absolute',\n top: 0,\n visibility: 'hidden',\n }}\n wrap=\"nowrap\"\n >\n {chips.map((chip) => (\n <FilterChip\n chip={chip}\n iconOnly={false}\n key={`measure-${chip.key}:${chip.val}`}\n onRemove={NOOP}\n />\n ))}\n </Flex>\n </Box>\n )\n}\n\n/**\n * Faceted filter bar for the variant definitions overview, rendered in the shared DocumentTable's\n * filter-tabs slot. A bordered \"Filters\" group with a single \"Add filter\" entry point (a searchable\n * dimension menu, derived from the data) and a removable chip per active value. Selecting narrows the\n * list — OR within a dimension, AND across dimensions. The single entry point scales to any number of\n * dimensions without overflowing the lane.\n *\n * @internal\n */\nexport function VariantConditionFilters({\n facets,\n value,\n onChange,\n}: {\n facets: ConditionFacet[]\n value: Record<string, string[]>\n onChange: (next: Record<string, string[]>) => void\n}): React.JSX.Element | null {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n const activeChips: ActiveChip[] = Object.entries(value).flatMap(([key, values]) =>\n values.map((val) => ({\n key,\n val,\n icon: getVariantConditionIcon(key),\n label: val,\n title: `${facetLabel(key)}: ${val}`,\n })),\n )\n const hasActive = activeChips.length > 0\n\n const toggleValue = useCallback(\n (key: string, val: string) => {\n const current = value[key] ?? []\n const next = current.includes(val) ? current.filter((v) => v !== val) : [...current, val]\n const updated = {...value}\n if (next.length > 0) updated[key] = next\n else delete updated[key]\n onChange(updated)\n },\n [onChange, value],\n )\n\n if (facets.length === 0) return null\n\n return (\n // Fill the lane when there are chips (so Clear pins right and the chips zone can measure its\n // available width); shrink to content when there are none, so the empty bar stays compact.\n <Card border padding={1} radius={2} style={hasActive ? undefined : {display: 'inline-flex'}}>\n <Flex align=\"center\" gap={2} wrap=\"nowrap\">\n <Box paddingX={1} style={{flex: 'none'}}>\n <Text muted size={1}>\n <FilterIcon />\n </Text>\n </Box>\n\n <Box style={{flex: 'none'}}>\n <AddFilterMenu facets={facets} onToggleValue={toggleValue} value={value} />\n </Box>\n\n {hasActive && (\n <>\n {/* Thin rule separating the add control from the active-value chips. */}\n <Box\n style={{flex: 'none', width: 1, height: 20, background: 'var(--card-border-color)'}}\n />\n <ActiveChips chips={activeChips} onRemove={toggleValue} />\n <Box style={{flex: 'none'}}>\n <Button\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={() => onChange({})}\n text={t('overview.filter.clear-all')}\n tone=\"primary\"\n />\n </Box>\n </>\n )}\n </Flex>\n </Card>\n )\n}\n","import {EditIcon} from '@sanity/icons/Edit'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {Menu, MenuDivider} from '@sanity/ui'\nimport {useState} from 'react'\n\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {MenuItem} from '../../../../ui-components/menuItem/MenuItem'\nimport {ContextMenuButton} from '../../../components/contextMenuButton/ContextMenuButton'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {DeleteVariantDialog} from '../../components/dialog/DeleteVariantDialog'\nimport {EditVariantDialog} from '../../components/dialog/EditVariantDialog'\nimport {useVariantDeleteAction} from '../../hooks/useVariantDeleteAction'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {getVariantId, getVariantTitle} from '../util'\n\nexport function VariantMenuButton({\n documentCount,\n variant,\n}: {\n documentCount?: number | null\n variant: SystemVariant\n}) {\n const {t} = useTranslation(variantsLocaleNamespace)\n const variantTitle = getVariantTitle(variant)\n const [isEditDialogOpen, setIsEditDialogOpen] = useState(false)\n const {\n deleteDisabled,\n deleteDisabledTooltip,\n handleCloseDeleteDialog,\n handleConfirmDelete,\n handleDelete,\n isDeleteDialogOpen,\n isDeleting,\n variantTitle: dialogVariantTitle,\n } = useVariantDeleteAction(variant._id, {documentCount, variantTitle})\n\n return (\n <>\n <MenuButton\n button={<ContextMenuButton disabled={isDeleting} loading={isDeleting} />}\n id={`variant-actions-${getVariantId(variant._id)}`}\n menu={\n <Menu>\n <MenuItem\n icon={EditIcon}\n onClick={() => setIsEditDialogOpen(true)}\n text={t('overview.action.edit-variant')}\n />\n <MenuDivider />\n <MenuItem\n disabled={deleteDisabled}\n icon={TrashIcon}\n onClick={handleDelete}\n text={t('overview.action.delete-variant')}\n tone=\"critical\"\n tooltipProps={deleteDisabledTooltip ? {content: deleteDisabledTooltip} : undefined}\n />\n </Menu>\n }\n popover={{placement: 'bottom-end', portal: true}}\n />\n {isEditDialogOpen && (\n <EditVariantDialog\n onCancel={() => setIsEditDialogOpen(false)}\n onSubmit={() => setIsEditDialogOpen(false)}\n variant={variant}\n />\n )}\n {isDeleteDialogOpen && (\n <DeleteVariantDialog\n isDeleting={isDeleting}\n onClose={handleCloseDeleteDialog}\n onConfirm={handleConfirmDelete}\n variantTitle={dialogVariantTitle}\n />\n )}\n </>\n )\n}\n","/**\n * Isometric illustration: one primary document with smaller derived copies,\n * echoing the layered panels used in {@link ReleaseIllustration}.\n */\nconst BASE_PANEL =\n 'M64 150.174V81.8262C64 79.1748 65.498 76.751 67.8695 75.5653L103.87 57.5652C108.524 55.2381 114 58.6226 114 63.8262V132.174C114 134.825 112.502 137.249 110.131 138.435L74.1305 156.435C69.4762 158.762 64 155.377 64 150.174Z'\n\n/** Horizontal “body copy” lines in panel local coordinates */\nconst LINES_FULL = ['M72 86 L106 86', 'M72 96 L102 96', 'M72 106 L104 106', 'M72 116 L98 116']\n\nconst LINES_MEDIUM = ['M72 88 L100 88', 'M72 98 L96 98', 'M72 108 L102 108']\n\nconst LINES_SHORT = ['M72 90 L94 90', 'M72 100 L92 100']\n\nexport const VariantIllustration = () => (\n <svg\n aria-hidden=\"true\"\n data-testid=\"variant-illustration\"\n width=\"248\"\n height=\"201\"\n viewBox=\"0 0 248 201\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* faint depth behind hub */}\n <g opacity={0.12}>\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n transform=\"translate(12 10)\"\n />\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n transform=\"translate(6 6)\"\n />\n </g>\n\n {/* derived copies — same silhouette, different inner lines */}\n <g opacity={0.28}>\n <g transform=\"translate(118 6) scale(0.5)\">\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n />\n {LINES_MEDIUM.map((d) => (\n <path\n key={d}\n d={d}\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n strokeLinecap=\"round\"\n opacity={0.55}\n />\n ))}\n </g>\n </g>\n\n <g opacity={0.34}>\n <g transform=\"translate(126 52) scale(0.52)\">\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n />\n {LINES_FULL.slice(0, 3).map((d) => (\n <path\n key={d}\n d={d}\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n strokeLinecap=\"round\"\n opacity={0.5}\n />\n ))}\n </g>\n </g>\n\n <g opacity={0.26}>\n <g transform=\"translate(106 102) scale(0.48)\">\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n />\n {LINES_SHORT.map((d) => (\n <path\n key={d}\n d={d}\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n strokeLinecap=\"round\"\n opacity={0.55}\n />\n ))}\n </g>\n </g>\n\n {/* soft connectors — hub to satellites */}\n <g opacity={0.14} stroke=\"var(--card-muted-fg-color)\" strokeWidth={1.2} strokeLinecap=\"round\">\n <path d=\"M118 112 Q 152 72 168 58\" fill=\"none\" />\n <path d=\"M124 124 Q 168 108 188 92\" fill=\"none\" />\n <path d=\"M118 138 Q 150 152 162 168\" fill=\"none\" />\n </g>\n\n {/* primary document */}\n <g transform=\"translate(26 20) scale(1.06)\">\n <path\n d={BASE_PANEL}\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n opacity={0.92}\n />\n {LINES_FULL.map((d, index) => (\n <path\n key={d}\n d={d}\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth={1.2}\n strokeLinecap=\"round\"\n opacity={0.42 + index * 0.06}\n />\n ))}\n </g>\n </svg>\n)\n","import {Flex, rem, Text} from '@sanity/ui'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {VariantIllustration} from '../resources/VariantIllustration'\n\ninterface VariantsEmptyStateProps {\n createVariantButton?: React.ReactNode\n}\n\nconst VARIANTS_DOCUMENTATION_URL = 'https://www.sanity.io/docs/content-variants'\n\nexport const VariantsEmptyState = ({createVariantButton}: VariantsEmptyStateProps) => {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n return (\n <Flex\n align=\"center\"\n data-testid=\"variants-empty-state\"\n flex={1}\n direction=\"column\"\n gap={3}\n style={{maxWidth: rem(300)}}\n paddingBottom={5}\n >\n <VariantIllustration />\n <Text as=\"h1\" size={1} weight=\"semibold\" data-testid=\"no-variants-info-text\">\n {t('overview.title')}\n </Text>\n <Text size={1} muted style={{textAlign: 'center'}}>\n {t('overview.empty-state.description')}\n </Text>\n <Flex gap={2}>\n {createVariantButton}\n <Button\n as=\"a\"\n href={VARIANTS_DOCUMENTATION_URL}\n target=\"_blank\"\n mode=\"ghost\"\n text={t('overview.action.documentation')}\n />\n </Flex>\n </Flex>\n )\n}\n","import {Box, Card, Flex, Skeleton, Stack, Text} from '@sanity/ui'\nimport {type HTMLProps, useMemo, type RefAttributes} from 'react'\nimport {StateLink} from 'sanity/router'\n\nimport {useTranslation, type UseTranslationResponse} from '../../../i18n/hooks/useTranslation'\nimport {Headers} from '../../../releases/tool/components/Table/TableHeader'\nimport {type Column, type VisibleColumn} from '../../../releases/tool/components/Table/types'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {getVariantId, getVariantConditionsText, getVariantTitle} from '../util'\n\n/**\n * A variant row in the overview table, with its live document count attached.\n *\n * `documentCount` is `undefined` while the count is being fetched and `null` when it could\n * not be fetched.\n *\n * @internal\n */\nexport interface TableVariant extends SystemVariant {\n documentCount?: number | null\n}\n\nconst VariantDocumentsCell: VisibleColumn<TableVariant>['cell'] = ({cellProps, datum}) => {\n if (datum.isLoading || datum.documentCount === undefined) {\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Text size={1}>\n <Skeleton animated radius={1} style={{width: '4ch'}} />\n </Text>\n </Flex>\n )\n }\n\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Text muted size={1}>\n {datum.documentCount === null ? '-' : datum.documentCount}\n </Text>\n </Flex>\n )\n}\n\nconst VariantTitleCell: VisibleColumn<TableVariant>['cell'] = ({cellProps, datum: variant}) => {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n const encodedVariantId = getVariantId(variant._id)\n\n const VariantLink = useMemo(\n () =>\n function VariantLinkComponent(\n linkProps: HTMLProps<HTMLAnchorElement> & RefAttributes<HTMLAnchorElement>,\n ) {\n const {ref, ...rest} = linkProps\n return <StateLink {...rest} ref={ref} state={{variantId: encodedVariantId}} />\n },\n [encodedVariantId],\n )\n\n if (variant.isLoading) {\n return (\n <Box {...cellProps} flex={1} paddingLeft={3} paddingRight={2} paddingY={2} sizing=\"border\">\n <Stack gap={2}>\n <Text size={1} weight=\"medium\">\n <Skeleton animated radius={1} style={{width: '16ch'}} />\n </Text>\n <Text muted size={1}>\n <Skeleton animated radius={1} style={{width: '32ch'}} />\n </Text>\n </Stack>\n </Box>\n )\n }\n\n const conditionsText = getVariantConditionsText(variant.conditions)\n\n return (\n <Box {...cellProps} flex={1} paddingLeft={3} paddingRight={2} paddingY={1} sizing=\"border\">\n <Flex align=\"center\" gap={3}>\n <Card as={VariantLink} data-as=\"a\" flex={1} padding={2} radius={2} tone=\"inherit\">\n <Flex align=\"center\" gap={3}>\n {/* min-width: 0 lets the flex child shrink below its content width so a long name\n truncates with a trailing ellipsis instead of overflowing on narrow viewports. */}\n <Stack flex={1} gap={2} style={{minWidth: 0}}>\n <Text size={1} textOverflow=\"ellipsis\" weight=\"medium\">\n {getVariantTitle(variant)}\n </Text>\n <Text muted size={1} textOverflow=\"ellipsis\">\n {conditionsText || t('overview.table.no-conditions')}\n </Text>\n </Stack>\n </Flex>\n </Card>\n </Flex>\n </Box>\n )\n}\n\nexport function variantsOverviewColumnDefs(\n t: UseTranslationResponse<'variants', undefined>['t'],\n): Column<TableVariant>[] {\n return [\n {\n id: 'metadata.title',\n sorting: true,\n width: null,\n style: {minWidth: 'min(50%, calc(100vw - 80px))'},\n header: (props) => (\n <Flex\n {...props.headerProps}\n flex={1}\n paddingLeft={3}\n paddingRight={2}\n paddingY={3}\n sizing=\"border\"\n >\n <Headers.SortHeaderButton {...props} text={t('overview.table.variant')} />\n </Flex>\n ),\n cell: VariantTitleCell,\n sortTransform: (variant) => getVariantTitle(variant),\n },\n {\n id: 'documentCount',\n sorting: false,\n width: 120,\n header: ({headerProps}) => (\n <Flex {...headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={t('overview.table.documents')} />\n </Flex>\n ),\n cell: VariantDocumentsCell,\n },\n ]\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {Card, Container, Flex, Stack, Text} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {DocumentTable} from '../../../releases/tool/components/Table/DocumentTable'\nimport {CreateVariantDialog} from '../../components/dialog/CreateVariantDialog'\nimport {useVariantsDocumentCounts} from '../../hooks/useVariantsDocumentCounts'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {type SystemVariant} from '../../types'\nimport {\n buildConditionFacets,\n filterVariantsForSearch,\n getVariantId,\n variantMatchesConditionFilters,\n} from '../util'\nimport {VariantConditionFilters} from './VariantConditionFilters'\nimport {VariantMenuButton} from './VariantMenuButton'\nimport {VariantsEmptyState} from './VariantsEmptyState'\nimport {type TableVariant, variantsOverviewColumnDefs} from './VariantsOverviewColumnDefs'\n\nconst VARIANT_TABLE_ROW_ID = '_id'\nconst getRowKey = (variant: TableVariant): string => variant._id\n// DocumentTable filters internally per-row; reuse the list matcher on a single-element list so the\n// search behaviour stays identical to the previous standalone search box.\nconst searchPredicate = (variant: TableVariant, term: string): boolean =>\n filterVariantsForSearch([variant], term).length > 0\n\nexport function VariantsOverview(): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const router = useRouter()\n const {data: variants, error, loading} = useAllVariants()\n const [isCreateVariantDialogOpen, setIsCreateVariantDialogOpen] = useState(false)\n const [conditionFilters, setConditionFilters] = useState<Record<string, string[]>>({})\n\n const handleCreateVariant = useCallback(() => setIsCreateVariantDialogOpen(true), [])\n\n const handleOnCreateVariant = useCallback(\n (createdVariantId: string) => {\n setIsCreateVariantDialogOpen(false)\n router.navigate({variantId: getVariantId(createdVariantId)})\n },\n [router],\n )\n\n const columnDefs = useMemo(() => variantsOverviewColumnDefs(t), [t])\n\n const renderRowActions = useCallback(\n ({datum}: {datum: unknown}) => (\n <VariantMenuButton\n documentCount={(datum as TableVariant).documentCount}\n variant={datum as SystemVariant}\n />\n ),\n [],\n )\n\n const variantsList = useMemo(() => variants ?? [], [variants])\n const {data: documentCounts, error: documentCountsError} = useVariantsDocumentCounts()\n\n // Facets come from the full list so the dropdown options never shrink as filters are applied.\n const facets = useMemo(() => buildConditionFacets(variantsList), [variantsList])\n\n // Rows are pre-filtered by the active condition filters; DocumentTable owns the free-text search\n // on top of that via searchPredicate.\n const rows = useMemo(\n () =>\n variantsList\n .filter((variant) => variantMatchesConditionFilters(variant, conditionFilters))\n .map((variant): TableVariant => ({\n ...variant,\n documentCount: documentCounts?.[variant._id] ?? (documentCountsError ? null : undefined),\n })),\n [variantsList, conditionFilters, documentCounts, documentCountsError],\n )\n\n const hasVariants = variantsList.length > 0\n const hasActiveConditionFilters = useMemo(\n () => Object.values(conditionFilters).some((values) => values.length > 0),\n [conditionFilters],\n )\n\n const createVariantButton = useMemo(\n () => (\n <Button\n disabled={isCreateVariantDialogOpen}\n icon={AddIcon}\n onClick={handleCreateVariant}\n text={t('overview.action.new-variant')}\n />\n ),\n [handleCreateVariant, isCreateVariantDialogOpen, t],\n )\n\n const tableEmptyState = useCallback(() => {\n if (error && !hasVariants) {\n return (\n <Flex align=\"center\" direction=\"column\" gap={3} justify=\"center\" padding={4}>\n <Text muted size={1}>\n {t('overview.error')}\n </Text>\n </Flex>\n )\n }\n\n if (hasVariants && hasActiveConditionFilters && rows.length === 0) {\n return (\n <Flex align=\"center\" direction=\"column\" gap={3} justify=\"center\" padding={4}>\n <Text data-testid=\"variants-filter-empty-state\" muted size={1}>\n {t('overview.filter.no-matching-definitions')}\n </Text>\n </Flex>\n )\n }\n\n return <VariantsEmptyState createVariantButton={createVariantButton} />\n }, [createVariantButton, error, hasActiveConditionFilters, hasVariants, rows.length, t])\n\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\">\n {/* Same container width as the releases document table (`container[3]`), so the page header\n aligns with the table's row content below. */}\n <Container flex=\"none\" width={3}>\n <Flex direction=\"column\" paddingX={3}>\n <Card flex=\"none\" paddingBottom={4} paddingTop={5}>\n <Flex align=\"flex-start\" gap={4} justify=\"space-between\">\n <Stack gap={2}>\n <Text as=\"h1\" size={4} weight=\"bold\">\n {t('overview.title')}\n </Text>\n <Text muted size={1}>\n {t('overview.description')}\n </Text>\n </Stack>\n {createVariantButton}\n </Flex>\n </Card>\n\n {error && (\n <Card flex=\"none\" marginBottom={4} padding={3} tone=\"critical\">\n <Text size={1}>{t('overview.error')}</Text>\n </Card>\n )}\n </Flex>\n </Container>\n\n {/* Shared DocumentTable — the same table the release and variant detail surfaces use: search in\n the command lane and per-row actions. (Multi-select is supported by the component but not\n wired here yet — bulk operations ship separately once transactional batching lands.) */}\n <DocumentTable<TableVariant>\n alwaysShowCommandLane\n columnDefs={columnDefs}\n // Reserve the bordered filter group's height so selecting rows (which swaps in the shorter\n // bulk toolbar) never shifts the table.\n commandLaneMinHeight={47}\n emptyState={tableEmptyState}\n filterTabs={\n // VariantConditionFilters renders nothing when there are no condition facets; passing the\n // element unconditionally would still read as \"tabs present\" to DocumentTable and strand a\n // fixed-width search with an empty gutter. Omit it so the search lane fills the row.\n facets.length > 0 ? (\n <VariantConditionFilters\n facets={facets}\n onChange={setConditionFilters}\n value={conditionFilters}\n />\n ) : undefined\n }\n filterTabsScroll={false}\n getRowKey={getRowKey}\n id=\"variant-definitions-table\"\n loading={loading}\n rowActions={renderRowActions}\n rowId={VARIANT_TABLE_ROW_ID}\n rows={rows}\n searchPlaceholder={t('overview.search.placeholder')}\n searchPredicate={searchPredicate}\n />\n\n {isCreateVariantDialogOpen && (\n <CreateVariantDialog\n onCancel={() => setIsCreateVariantDialogOpen(false)}\n onSubmit={handleOnCreateVariant}\n />\n )}\n </Flex>\n )\n}\n","import {useRouter} from 'sanity/router'\n\nimport {VariantDetail} from './detail/VariantDetail'\nimport {VariantsOverview} from './overview/VariantsOverview'\n\nexport function VariantsTool() {\n const router = useRouter()\n const variantId = typeof router.state.variantId === 'string' ? router.state.variantId : undefined\n\n if (variantId) {\n return <VariantDetail key={variantId} />\n }\n\n return <VariantsOverview />\n}\n"],"mappings":"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"}
|