sanity 6.7.0 → 6.8.0-next.13
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-DGvQRg0M.js → AddonDatasetProvider-j4tCiH3e.js} +2 -2
- package/lib/{AddonDatasetProvider-DGvQRg0M.js.map → AddonDatasetProvider-j4tCiH3e.js.map} +1 -1
- package/lib/{CalendarFilter-Cz5HCFLA.js → CalendarFilter-D7qsXo8l.js} +3 -3
- package/lib/{CalendarFilter-Cz5HCFLA.js.map → CalendarFilter-D7qsXo8l.js.map} +1 -1
- package/lib/{CommentsDocumentLayout-C8D--w7w.js → CommentsDocumentLayout-DdqM0Xva.js} +2 -2
- package/lib/{CommentsDocumentLayout-C8D--w7w.js.map → CommentsDocumentLayout-DdqM0Xva.js.map} +1 -1
- package/lib/{CommentsField-01fndj6n.js → CommentsField-boIeJpD6.js} +3 -3
- package/lib/{CommentsField-01fndj6n.js.map → CommentsField-boIeJpD6.js.map} +1 -1
- package/lib/{CommentsInput-DEXCCEGP.js → CommentsInput-CXUjX47s.js} +5 -5
- package/lib/{CommentsInput-DEXCCEGP.js.map → CommentsInput-CXUjX47s.js.map} +1 -1
- package/lib/{CommentsInspector-DBY7KD3P.js → CommentsInspector-DnhaBRvP.js} +5 -5
- package/lib/{CommentsInspector-DBY7KD3P.js.map → CommentsInspector-DnhaBRvP.js.map} +1 -1
- package/lib/{CommentsListItem-BEGOSIY0.js → CommentsListItem-Dn3MXuMi.js} +3 -3
- package/lib/{CommentsListItem-BEGOSIY0.js.map → CommentsListItem-Dn3MXuMi.js.map} +1 -1
- package/lib/{CommentsSelectedPathProvider-Clvemp0W.js → CommentsSelectedPathProvider-jbvY-MJ0.js} +3 -3
- package/lib/{CommentsSelectedPathProvider-Clvemp0W.js.map → CommentsSelectedPathProvider-jbvY-MJ0.js.map} +1 -1
- package/lib/{CommentsStudioLayout-D1kFwOni.js → CommentsStudioLayout-jxq4yKzW.js} +4 -4
- package/lib/{CommentsStudioLayout-D1kFwOni.js.map → CommentsStudioLayout-jxq4yKzW.js.map} +1 -1
- package/lib/{PaneContainer-QCEhEyzd.js → PaneContainer-BtFBEWLZ.js} +5 -6
- package/lib/PaneContainer-BtFBEWLZ.js.map +1 -0
- package/lib/{PresentationToolGrantsCheck-CxqDuu8I.js → PresentationToolGrantsCheck-CITNu5DG.js} +14 -6
- package/lib/PresentationToolGrantsCheck-CITNu5DG.js.map +1 -0
- package/lib/{ReleasesMetadataProvider-DH9ZPiY1.js → ReleasesMetadataProvider-16P_iZKZ.js} +2 -2
- package/lib/{ReleasesMetadataProvider-DH9ZPiY1.js.map → ReleasesMetadataProvider-16P_iZKZ.js.map} +1 -1
- package/lib/{ReleasesNav-DIkvTixA.js → ReleasesNav-BzrUhOoJ.js} +59 -19
- package/lib/ReleasesNav-BzrUhOoJ.js.map +1 -0
- package/lib/{ReleasesStudioLayout-KuVpj5_v.js → ReleasesStudioLayout-DEWAqdmR.js} +8 -8
- package/lib/{ReleasesStudioLayout-KuVpj5_v.js.map → ReleasesStudioLayout-DEWAqdmR.js.map} +1 -1
- package/lib/{ReleasesTool-DN5FBLWz.js → ReleasesTool-DJhN0bPA.js} +14 -14
- package/lib/{ReleasesTool-DN5FBLWz.js.map → ReleasesTool-DJhN0bPA.js.map} +1 -1
- package/lib/{SchedulePublishingStudioLayout-B5K8nqiH.js → SchedulePublishingStudioLayout-B3d-Pcp4.js} +3 -3
- package/lib/{SchedulePublishingStudioLayout-B5K8nqiH.js.map → SchedulePublishingStudioLayout-B3d-Pcp4.js.map} +1 -1
- package/lib/{SchedulePublishingUpsellProvider-CSMocuXk.js → SchedulePublishingUpsellProvider-tHnK31n0.js} +2 -2
- package/lib/{SchedulePublishingUpsellProvider-CSMocuXk.js.map → SchedulePublishingUpsellProvider-tHnK31n0.js.map} +1 -1
- package/lib/{ScheduledPublishingEnabledProvider-DGpt_kKu.js → ScheduledPublishingEnabledProvider-CzQXgTsk.js} +3 -3
- package/lib/{ScheduledPublishingEnabledProvider-DGpt_kKu.js.map → ScheduledPublishingEnabledProvider-CzQXgTsk.js.map} +1 -1
- package/lib/{SearchProvider-Iy4-6hcz.js → SearchProvider-D_Y0UV_W.js} +24 -24
- package/lib/SearchProvider-D_Y0UV_W.js.map +1 -0
- package/lib/{SingleDocReleaseLayout-CRJT6Vu9.js → SingleDocReleaseLayout-BCJmxy5s.js} +2 -2
- package/lib/{SingleDocReleaseLayout-CRJT6Vu9.js.map → SingleDocReleaseLayout-BCJmxy5s.js.map} +1 -1
- package/lib/{SingleDocReleaseUpsellProvider-BRUYOryN.js → SingleDocReleaseUpsellProvider-CpUQPbkP.js} +4 -4
- package/lib/{SingleDocReleaseUpsellProvider-BRUYOryN.js.map → SingleDocReleaseUpsellProvider-CpUQPbkP.js.map} +1 -1
- package/lib/{TasksStudioActiveToolLayout-BUnLMMYi.js → TasksStudioActiveToolLayout-uoPm3E0Y.js} +11 -11
- package/lib/{TasksStudioActiveToolLayout-BUnLMMYi.js.map → TasksStudioActiveToolLayout-uoPm3E0Y.js.map} +1 -1
- package/lib/{TasksStudioLayout-ClMZ9sWa.js → TasksStudioLayout-CFRlrtHs.js} +5 -5
- package/lib/{TasksStudioLayout-ClMZ9sWa.js.map → TasksStudioLayout-CFRlrtHs.js.map} +1 -1
- package/lib/{Tool-CGMUCSOs.js → Tool-CjZmRZ_L.js} +12 -12
- package/lib/{Tool-CGMUCSOs.js.map → Tool-CjZmRZ_L.js.map} +1 -1
- package/lib/{UnpublishVersionDialog-DnGH3SLI.js → UnpublishVersionDialog-dJM5TcRn.js} +4 -4
- package/lib/{UnpublishVersionDialog-DnGH3SLI.js.map → UnpublishVersionDialog-dJM5TcRn.js.map} +1 -1
- package/lib/{UpsellDialog-Dcjf8OuF.js → UpsellDialog-2urLJ5H5.js} +2 -2
- package/lib/{UpsellDialog-Dcjf8OuF.js.map → UpsellDialog-2urLJ5H5.js.map} +1 -1
- package/lib/{VariantsStudioNavbar-D8L9UWqH.js → VariantsStudioNavbar-BbpP-SV6.js} +7 -27
- package/lib/VariantsStudioNavbar-BbpP-SV6.js.map +1 -0
- package/lib/{VariantsTool-JHeKZHcr.js → VariantsTool-BpDy94Yo.js} +7 -7
- package/lib/{VariantsTool-JHeKZHcr.js.map → VariantsTool-BpDy94Yo.js.map} +1 -1
- package/lib/{WorkspaceLoader-CtnP9tNF.js → WorkspaceLoader-COkgKUSq.js} +25 -25
- package/lib/{WorkspaceLoader-CtnP9tNF.js.map → WorkspaceLoader-COkgKUSq.js.map} +1 -1
- package/lib/_createContext.js +1 -1
- package/lib/_singletons.d.ts +1 -1
- package/lib/{buildTextSelectionFromFragment-k_rh1KNa.js → buildTextSelectionFromFragment-DkScjl9L.js} +3 -3
- package/lib/{buildTextSelectionFromFragment-k_rh1KNa.js.map → buildTextSelectionFromFragment-DkScjl9L.js.map} +1 -1
- package/lib/{datastores-X2znh4zT.js → datastores-BKRF0Q9p.js} +16 -5
- package/lib/datastores-BKRF0Q9p.js.map +1 -0
- package/lib/desk.d.ts +1 -1
- package/lib/desk.js +2 -2
- package/lib/{index-Z0jxEn8U.d.ts → index-CnGXln7W.d.ts} +62 -12
- package/lib/index.d.ts +2 -2
- package/lib/index.js +640 -257
- package/lib/index.js.map +1 -1
- package/lib/{inputResolver-CwZU1DyA.js → inputResolver-BxWoGLcP.js} +4 -4
- package/lib/{inputResolver-CwZU1DyA.js.map → inputResolver-BxWoGLcP.js.map} +1 -1
- package/lib/{list-CQ5wYKGN.js → list-BqCyKicl.js} +2 -2
- package/lib/{list-CQ5wYKGN.js.map → list-BqCyKicl.js.map} +1 -1
- package/lib/{navigation.telemetry-Poh1ANIW.js → navigation.telemetry-BdALj7hP.js} +7 -7
- package/lib/{navigation.telemetry-Poh1ANIW.js.map → navigation.telemetry-BdALj7hP.js.map} +1 -1
- package/lib/pane-8ExVl8qY.js +2 -0
- package/lib/pane-wKH9j_H3.js +2 -0
- package/lib/{plugin-CNhX_Tb7.js → plugin-BQpcUNhw.js} +6 -6
- package/lib/{plugin-CNhX_Tb7.js.map → plugin-BQpcUNhw.js.map} +1 -1
- package/lib/{plugin-CXnu--df.js → plugin-CWQXnaVS.js} +5 -5
- package/lib/{plugin-CXnu--df.js.map → plugin-CWQXnaVS.js.map} +1 -1
- package/lib/{plugin-WOJhZc9d.js → plugin-DbF85jWy.js} +4 -4
- package/lib/{plugin-WOJhZc9d.js.map → plugin-DbF85jWy.js.map} +1 -1
- package/lib/{plugin-C220AR82.js → plugin-QIqhqpZS.js} +3 -3
- package/lib/{plugin-C220AR82.js.map → plugin-QIqhqpZS.js.map} +1 -1
- package/lib/presentation.js +1 -1
- package/lib/{scheduleItem-DvRHEFEW.js → scheduleItem-CBN6T3h1.js} +8 -8
- package/lib/{scheduleItem-DvRHEFEW.js.map → scheduleItem-CBN6T3h1.js.map} +1 -1
- package/lib/{schedules-pdE6eEGn.js → schedules-ORlte5Aq.js} +3 -3
- package/lib/{schedules-pdE6eEGn.js.map → schedules-ORlte5Aq.js.map} +1 -1
- package/lib/structure.js +2 -2
- package/lib/{structureTool-BwC_ba3R.js → structureTool-CB6Y6xfI.js} +6 -6
- package/lib/{structureTool-BwC_ba3R.js.map → structureTool-CB6Y6xfI.js.map} +1 -1
- package/lib/{structureTool-BRYk4qG7.js → structureTool-CupaRvVm.js} +68 -68
- package/lib/structureTool-CupaRvVm.js.map +1 -0
- package/lib/{studioClient--dm-G_7a.js → studioClient-CJOrhmsT.js} +2 -2
- package/lib/{studioClient--dm-G_7a.js.map → studioClient-CJOrhmsT.js.map} +1 -1
- package/lib/{useBundleDocuments-oAq5rEkm.js → useBundleDocuments-Bhs3f0QF.js} +15 -13
- package/lib/useBundleDocuments-Bhs3f0QF.js.map +1 -0
- package/lib/{useComments-DYQ9xguT.js → useComments-b_kg13ZL.js} +2 -2
- package/lib/{useComments-DYQ9xguT.js.map → useComments-b_kg13ZL.js.map} +1 -1
- package/lib/{useCommentsTelemetry-BoYJL3eG.js → useCommentsTelemetry-BFtot5ib.js} +3 -3
- package/lib/{useCommentsTelemetry-BoYJL3eG.js.map → useCommentsTelemetry-BFtot5ib.js.map} +1 -1
- package/lib/{useDocumentPreviewValues-v43xdQrb.js → useDocumentPreviewValues-Cp12V_zK.js} +3 -3
- package/lib/{useDocumentPreviewValues-v43xdQrb.js.map → useDocumentPreviewValues-Cp12V_zK.js.map} +1 -1
- package/lib/{useFeatureEnabled-4gSsu40G.js → useFeatureEnabled-CKA9SpR4.js} +2 -2
- package/lib/{useFeatureEnabled-4gSsu40G.js.map → useFeatureEnabled-CKA9SpR4.js.map} +1 -1
- package/lib/{useFieldActions-BKWh56GI.js → useFieldActions-BT0dmvAk.js} +2 -2
- package/lib/{useFieldActions-BKWh56GI.js.map → useFieldActions-BT0dmvAk.js.map} +1 -1
- package/lib/{useReleasesToolAvailable-5DSPa2Gx.js → useReleasesToolAvailable-BtNPK1ns.js} +3 -3
- package/lib/{useReleasesToolAvailable-5DSPa2Gx.js.map → useReleasesToolAvailable-BtNPK1ns.js.map} +1 -1
- package/lib/{useScheduledDraftMenuActions-BxKkDOS8.js → useScheduledDraftMenuActions-Btn2NKF9.js} +38 -21
- package/lib/useScheduledDraftMenuActions-Btn2NKF9.js.map +1 -0
- package/lib/{useSetVariant-C6TkfVCm.js → useSetVariant-D6nDqKeX.js} +3 -3
- package/lib/{useSetVariant-C6TkfVCm.js.map → useSetVariant-D6nDqKeX.js.map} +1 -1
- package/lib/{useStudioUrl-CGakngEM.js → useStudioUrl-DFBaha5x.js} +5 -5
- package/lib/{useStudioUrl-CGakngEM.js.map → useStudioUrl-DFBaha5x.js.map} +1 -1
- package/lib/{useTimeZone-BoKWaSj6.js → useTimeZone-DceoecRg.js} +2 -2
- package/lib/{useTimeZone-BoKWaSj6.js.map → useTimeZone-DceoecRg.js.map} +1 -1
- package/lib/{userComponent-DIoiRgtl.js → userComponent-DBLembOH.js} +2 -2
- package/lib/{userComponent-DIoiRgtl.js.map → userComponent-DBLembOH.js.map} +1 -1
- package/lib/{validationUtils-CX9mO1s1.js → validationUtils-BefUKU_E.js} +4 -4
- package/lib/{validationUtils-CX9mO1s1.js.map → validationUtils-BefUKU_E.js.map} +1 -1
- package/lib/{version-CUL0S-Ix.js → version-D8FgjwBF.js} +2 -2
- package/lib/{version-CUL0S-Ix.js.map → version-D8FgjwBF.js.map} +1 -1
- package/package.json +10 -10
- package/lib/Delay-DjgiAi06.js +0 -21
- package/lib/Delay-DjgiAi06.js.map +0 -1
- package/lib/PaneContainer-QCEhEyzd.js.map +0 -1
- package/lib/PresentationToolGrantsCheck-CxqDuu8I.js.map +0 -1
- package/lib/ReleasesNav-DIkvTixA.js.map +0 -1
- package/lib/SearchProvider-Iy4-6hcz.js.map +0 -1
- package/lib/VariantsStudioNavbar-D8L9UWqH.js.map +0 -1
- package/lib/datastores-X2znh4zT.js.map +0 -1
- package/lib/pane-CoSiSpvR.js +0 -2
- package/lib/pane-ptq8ykm7.js +0 -2
- package/lib/structureTool-BRYk4qG7.js.map +0 -1
- package/lib/useBundleDocuments-oAq5rEkm.js.map +0 -1
- package/lib/useScheduledDraftMenuActions-BxKkDOS8.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariantsTool-JHeKZHcr.js","names":["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","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","PinIcon","PinFilledIcon","useCallback","Button","useTranslation","usePerspective","useSetVariant","variantsLocaleNamespace","SystemVariant","getVariantTitle","VariantPinButton","t0","$","_c","variant","t1","dataTestId","undefined","t","selectedVariant","setVariant","isPinned","_id","t2","variantTitle","t3","variantId","handlePinVariant","t4","t5","t6","t7","content","t8","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","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","Menu","useRouter","MenuButton","MenuItem","ContextMenuButton","useTranslation","DeleteVariantDialog","useVariantDeleteAction","variantsLocaleNamespace","SystemVariant","getVariantId","getVariantTitle","VariantDetailMenuButton","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","t8","t9","content","t10","t11","Symbol","for","placement","portal","t12","t13","t14","DiamondIcon","Card","Flex","Text","Button","RelativeTime","useTranslation","variantsLocaleNamespace","SystemVariant","VariantDetailMenuButton","VariantDetailFooter","t0","$","_c","openEditDialog","documentCount","documentsLoading","t1","variant","undefined","t","t2","Symbol","for","opacity","t3","t4","t5","_createdAt","t6","t7","t8","t9","t10","t11","SanityDocument","getDocumentPreviewTitle","document","title","name","trim","_id","ReleaseDocument","Badge","Box","Flex","IntentLink","useTranslation","ReleaseTitle","RELEASES_INTENT","getReleaseDocumentIdFromReleaseId","getReleaseIdFromReleaseDocumentId","isPublishedBundleId","isReleaseBundle","VariantDocumentVersion","getReleaseDocumentForVersion","version","releasesById","Map","releaseRef","get","bundleId","releaseDocumentId","undefined","ReleaseBundleChip","t0","$","_c","release","t","t1","_id","releaseId","t2","metadata","title","t3","t4","t5","displayTitle","id","StaticBundleChip","label","tone","VariantDocumentBundleChips","versions","Symbol","for","minWidth","width","overflowX","overflowY","documentId","map","Card","ForwardedRef","forwardRef","useMemo","IntentLink","PreviewLayoutKey","DocumentPreviewPresence","SanityDefaultPreview","useDocumentPresence","useDocumentPreviewValues","getPublishedId","isPublishedBundleId","DocumentInVariantGroup","VariantDocumentPreviewProps","row","layout","variantId","VariantDocumentPreviewLinkProps","React","ComponentPropsWithoutRef","publishedId","documentType","searchParams","Array","VariantDocumentPreviewLink","t0","ref","$","_c","linkProps","t1","id","type","t2","getVersionPerspectiveNavigation","bundleId","perspectiveStack","length","undefined","VariantDocumentPreview","groupId","documentPresence","document","_id","version","t3","previewPresence","t4","_type","documentId","isLoading","previewLoading","value","resolvedPreview","t5","t6","t7","ReleaseDocument","ErrorOutlineIcon","Box","Flex","Text","TFunction","memo","ToneIcon","Tooltip","RelativeTime","useSchema","SanityDefaultPreview","Headers","Column","DocumentInVariantGroup","getDocumentPreviewTitle","VariantDocumentBundleChips","VariantDocumentPreview","MemoVariantDocumentPreview","t0","$","_c","row","variantId","t1","prev","next","memoKey","MemoDocumentType","DocumentType","type","schema","get","schemaType","t2","title","t3","getVariantDocumentTableColumnDefs","t","releasesById","Map","id","hidden","width","sorting","sortTransform","groupId","style","minWidth","maxWidth","header","props","headerProps","cell","cellProps","datum","flex","overflow","isLoading","versions","document","_type","toLowerCase","_updatedAt","validationErrorCount","validation","filter","level","length","hasError","count","Card","CSSProperties","useMemo","useState","useTranslation","useActiveReleases","Table","Column","searchDocumentRelease","variantsLocaleNamespace","DocumentInVariantGroup","getVariantDocumentTableColumnDefs","TABLE_CARD_STYLE","height","overflow","filterDocuments","rows","searchTerm","trim","filter","document","VariantDocumentsTable","t0","$","_c","loading","t1","variantId","undefined","t","scrollContainerRef","setScrollContainerRef","data","releases","t2","Map","map","_temp","releasesById","t3","columnDefs","t4","Symbol","for","column","direction","t5","t6","release","_id","Box","Card","Container","Flex","Stack","Text","useMemo","useState","useRouter","Button","LoadingBlock","useTranslation","EditVariantDialog","useVariantDocuments","variantsLocaleNamespace","useAllVariants","VariantPinButton","decodeVariantIdFromRoute","getVariantConditionsText","getVariantDescription","getVariantId","getVariantTitle","groupVariantDocumentsByGroup","VariantDetailFooter","VariantDocumentsTable","VariantDetail","$","_c","router","t","editDialogOpen","setEditDialogOpen","variantIdRaw","state","variantId","undefined","byId","loading","variant","get","documentsLoading","results","variantDocuments","error","variantDocumentsError","_id","t0","tableRows","t1","t2","navigate","t3","t4","t5","t6","t7","t8","t9","description","conditionsText","conditions","Symbol","for","minHeight","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","length","t23","t24","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","Menu","MenuButton","MenuItem","ContextMenuButton","useTranslation","DeleteVariantDialog","useVariantDeleteAction","variantsLocaleNamespace","SystemVariant","getVariantId","getVariantTitle","VariantMenuButton","t0","$","_c","documentCount","variant","t","t1","variantTitle","t2","deleteDisabled","deleteDisabledTooltip","handleCloseDeleteDialog","handleConfirmDelete","handleDelete","isDeleteDialogOpen","isDeleting","dialogVariantTitle","_id","t3","t4","t5","t6","t7","content","undefined","t8","t9","Symbol","for","placement","portal","t10","t11","t12","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","ForwardedRef","forwardRef","HTMLProps","useMemo","StateLink","useTranslation","UseTranslationResponse","Headers","Column","VisibleColumn","variantsLocaleNamespace","SystemVariant","VariantPinButton","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","variantId","VariantLink","t4","t5","conditions","conditionsText","t6","t7","t8","t9","t10","t11","t12","variantsOverviewColumnDefs","id","sorting","style","minWidth","header","props","headerProps","cell","sortTransform","AddIcon","SearchIcon","Box","Card","Container","Flex","Stack","Text","TextInput","useCallback","useMemo","useState","useRouter","Button","useTranslation","Table","TableProps","CreateVariantDialog","useVariantsDocumentCounts","variantsLocaleNamespace","useAllVariants","SystemVariant","filterVariantsForSearch","getVariantId","VariantMenuButton","VariantsEmptyState","TableVariant","variantsOverviewColumnDefs","VARIANT_TABLE_ROW_ID","VariantsOverview","$","_c","t","router","data","variants","error","loading","scrollContainerRef","setScrollContainerRef","searchQuery","setSearchQuery","isCreateVariantDialogOpen","setIsCreateVariantDialogOpen","t0","Symbol","for","handleCreateVariant","t1","createdVariantId","navigate","variantId","handleOnCreateVariant","t2","columnDefs","renderRowActions","_temp","t3","variantsList","documentCounts","documentCountsError","t4","t5","variant","documentCount","_id","undefined","map","filteredVariants","hasVariants","length","t6","createVariantButton","t7","tableEmptyState","t8","t9","t10","t11","t12","t13","t14","t15","t16","event","currentTarget","value","t17","t18","t19","t20","t21","t22","t23","datum","useRouter","VariantDetail","VariantsOverview","VariantsTool","$","_c","router","variantId","state","undefined","t0","Symbol","for"],"sources":["../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/tool/detail/variantDocumentVersion.ts","../src/core/variants/hooks/useVariantDocuments.ts","../src/core/variants/tool/components/VariantPinButton.tsx","../src/core/variants/tool/detail/groupVariantDocumentsByGroup.ts","../src/core/variants/components/dialog/DeleteVariantDialog.tsx","../src/core/variants/hooks/useVariantDeleteAction.ts","../src/core/variants/tool/detail/VariantDetailMenuButton.tsx","../src/core/variants/tool/detail/VariantDetailFooter.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/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/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 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 space={5}>\n <Stack space={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 space={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 space={3}>\n <Inline space={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 space={3}>\n <Stack space={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 space={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} space={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 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 {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 {PinIcon} from '@sanity/icons/Pin'\nimport {PinFilledIcon} from '@sanity/icons/PinFilled'\nimport {useCallback} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {usePerspective} from '../../../perspective/usePerspective'\nimport {useSetVariant} from '../../../perspective/useSetVariant'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {getVariantTitle} from '../util'\n\nexport function VariantPinButton({\n variant,\n 'data-testid': dataTestId = 'pin-variant-button',\n}: {\n 'variant': SystemVariant\n 'data-testid'?: string\n}) {\n const {t} = useTranslation(variantsLocaleNamespace)\n const {selectedVariant} = usePerspective()\n const setVariant = useSetVariant()\n\n const isPinned = selectedVariant?._id === variant._id\n const variantTitle = getVariantTitle(variant)\n\n const handlePinVariant = useCallback(() => {\n if (isPinned) {\n setVariant({\n variantId: undefined,\n })\n } else {\n setVariant({\n variantId: variant._id,\n })\n }\n }, [isPinned, setVariant, variant])\n\n return (\n <Button\n aria-label={\n isPinned\n ? `${t('detail.unpin-variant')}: \"${variantTitle}\"`\n : `${t('detail.pin-variant')}: \"${variantTitle}\"`\n }\n aria-live=\"assertive\"\n data-testid={dataTestId}\n icon={isPinned ? PinFilledIcon : PinIcon}\n mode=\"bleed\"\n onClick={handlePinVariant}\n radius=\"full\"\n selected={isPinned}\n tooltipProps={{\n content: isPinned ? t('detail.unpin-variant') : t('detail.pin-variant'),\n }}\n />\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 {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 {Menu} from '@sanity/ui'\nimport {useRouter} from 'sanity/router'\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 {useVariantDeleteAction} from '../../hooks/useVariantDeleteAction'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {getVariantId, getVariantTitle} from '../util'\n\nexport function VariantDetailMenuButton({\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 button={<ContextMenuButton disabled={isDeleting} loading={isDeleting} />}\n id={`variant-detail-actions-${getVariantId(variant._id)}`}\n menu={\n <Menu>\n <MenuItem\n disabled={deleteDisabled}\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 {DiamondIcon} from '@sanity/icons/Diamond'\nimport {Card, Flex, Text} from '@sanity/ui'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {RelativeTime} from '../../../components/RelativeTime'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {VariantDetailMenuButton} from './VariantDetailMenuButton'\n\nexport function VariantDetailFooter({\n openEditDialog,\n documentCount,\n documentsLoading = false,\n variant,\n}: {\n openEditDialog: () => void\n documentCount: number\n documentsLoading?: boolean\n variant: SystemVariant\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n return (\n <Card flex=\"none\">\n <Card borderTop marginX={2} style={{opacity: 0.6}} />\n\n <Flex padding={3}>\n <Flex flex={1} gap={1}>\n <Card>\n <Flex align=\"center\" gap={2}>\n <Text size={1}>\n <DiamondIcon />\n </Text>\n <Text muted size={1}>\n {t('detail.footer.created')}{' '}\n <RelativeTime time={variant._createdAt} useTemporalPhrase minimal />\n </Text>\n </Flex>\n </Card>\n </Flex>\n\n <Flex flex=\"none\" gap={1} data-testid=\"variant-detail-footer-actions\">\n <Button onClick={openEditDialog} text={t('detail.action.edit-variant')} />\n <VariantDetailMenuButton\n documentCount={documentCount}\n documentsLoading={documentsLoading}\n variant={variant}\n />\n </Flex>\n </Flex>\n </Card>\n )\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} from '@sanity/ui'\nimport {IntentLink} from 'sanity/router'\n\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {ReleaseTitle} from '../../../../releases/components/ReleaseTitle'\nimport {RELEASES_INTENT} from '../../../../releases/plugin'\nimport {getReleaseDocumentIdFromReleaseId} from '../../../../releases/util/getReleaseDocumentIdFromReleaseId'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {isPublishedBundleId, isReleaseBundle} from '../../util'\nimport {type VariantDocumentVersion} from '../types'\n\nfunction getReleaseDocumentForVersion(\n version: VariantDocumentVersion,\n releasesById: Map<string, ReleaseDocument>,\n): ReleaseDocument | undefined {\n if (version.releaseRef) {\n return releasesById.get(version.releaseRef)\n }\n\n if (isReleaseBundle(version.bundleId)) {\n const releaseDocumentId = getReleaseDocumentIdFromReleaseId(version.bundleId!)\n\n return releasesById.get(releaseDocumentId)\n }\n\n return undefined\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 <Badge radius={2} tone=\"primary\">\n {displayTitle}\n </Badge>\n </IntentLink>\n )}\n </ReleaseTitle>\n )\n}\n\nfunction StaticBundleChip({label, tone}: {label: string; tone: 'positive' | 'default'}) {\n return (\n <Badge radius={2} tone={tone}>\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()\n\n return (\n <Box style={{minWidth: 0, width: '100%', overflowX: 'auto', overflowY: 'hidden'}}>\n <Flex align=\"center\" gap={1} wrap=\"nowrap\" style={{width: 'max-content'}}>\n {versions.map((version) => {\n if (isPublishedBundleId(version.bundleId)) {\n return (\n <StaticBundleChip\n key={version.documentId}\n label={t('release.chip.published')}\n tone=\"positive\"\n />\n )\n }\n\n if (version.bundleId === 'drafts') {\n return (\n <StaticBundleChip\n key={version.documentId}\n label={t('release.chip.draft')}\n tone=\"default\"\n />\n )\n }\n\n const release = getReleaseDocumentForVersion(version, releasesById)\n\n if (release) {\n return <ReleaseBundleChip key={version.documentId} release={release} />\n }\n\n return (\n <StaticBundleChip\n key={version.documentId}\n label={t('release.placeholder-untitled-release')}\n tone=\"default\"\n />\n )\n })}\n </Flex>\n </Box>\n )\n}\n","import {Card} from '@sanity/ui'\nimport {type ForwardedRef, forwardRef, useMemo} 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 {useDocumentPresence} from '../../../../store/presence/useDocumentPresence'\nimport {useDocumentPreviewValues} from '../../../../tasks/hooks/useDocumentPreviewValues'\nimport {getPublishedId} from '../../../../util/draftUtils'\nimport {isPublishedBundleId} from '../../util'\nimport {type DocumentInVariantGroup} from '../types'\n\ninterface VariantDocumentPreviewProps {\n row: DocumentInVariantGroup\n layout?: PreviewLayoutKey\n variantId?: string\n}\n\ninterface VariantDocumentPreviewLinkProps extends React.ComponentPropsWithoutRef<'a'> {\n publishedId: string\n documentType: string\n searchParams: Array<[string, string]> | undefined\n}\n\nconst VariantDocumentPreviewLink = forwardRef(function VariantDocumentPreviewLink(\n {publishedId, documentType, searchParams, ...linkProps}: VariantDocumentPreviewLinkProps,\n ref: ForwardedRef<HTMLAnchorElement>,\n) {\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 layout,\n variantId,\n}: VariantDocumentPreviewProps): React.JSX.Element {\n const publishedId = getPublishedId(row.groupId)\n const documentPresence = useDocumentPresence(row.document._id)\n const {perspectiveStack, searchParams} = useMemo(\n () => getVersionPerspectiveNavigation(row.version.bundleId, variantId),\n [row.version.bundleId, variantId],\n )\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 })\n\n return (\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 >\n <SanityDefaultPreview\n {...(resolvedPreview || {})}\n status={previewPresence}\n isPlaceholder={previewLoading}\n layout={layout}\n />\n </Card>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\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 {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 {type DocumentInVariantGroup} from '../types'\nimport {getDocumentPreviewTitle} from './getDocumentPreviewTitle'\nimport {VariantDocumentBundleChips} from './VariantDocumentBundleChips'\nimport {VariantDocumentPreview} from './VariantDocumentPreview'\n\nconst MemoVariantDocumentPreview = memo(\n function MemoVariantDocumentPreview({\n row,\n variantId,\n }: {\n row: DocumentInVariantGroup\n variantId?: string\n }) {\n return <VariantDocumentPreview row={row} variantId={variantId} />\n },\n (prev, next) => prev.row.memoKey === next.row.memoKey && prev.variantId === next.variantId,\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\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.groupId,\n },\n {\n id: 'bundle',\n width: 140,\n style: {minWidth: 100, maxWidth: 140},\n sorting: false,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={t('detail.documents.table.bundle')} />\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 flex={1} paddingX={2} style={{minWidth: 0, overflow: 'hidden'}}>\n {!datum.isLoading && (\n <VariantDocumentBundleChips versions={datum.versions} releasesById={releasesById} />\n )}\n </Box>\n </Flex>\n ),\n },\n {\n id: 'document._type',\n width: null,\n style: {minWidth: 100},\n sorting: true,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('detail.documents.table.type')} {...props} />\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 id: 'search',\n width: null,\n style: {minWidth: 'min(50%, calc(100vw - 80px))', maxWidth: 'min(50%, calc(100vw - 80px))'},\n sortTransform: ({document}) => getDocumentPreviewTitle(document).toLowerCase(),\n header: (props) => (\n <Headers.TableHeaderSearch\n {...props}\n placeholder={t('detail.documents.table.search-placeholder')}\n />\n ),\n cell: ({cellProps, datum}) => (\n <Box {...cellProps} flex={1} padding={1} paddingRight={2} sizing=\"border\">\n {datum.isLoading ? (\n <SanityDefaultPreview isPlaceholder />\n ) : (\n <MemoVariantDocumentPreview row={datum} variantId={variantId} />\n )}\n </Box>\n ),\n },\n {\n id: 'document._updatedAt',\n sorting: true,\n width: 130,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('detail.documents.table.edited')} {...props} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} style={{minWidth: 130}}>\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 id: 'validation',\n sorting: false,\n width: 50,\n header: ({headerProps}) => (\n <Flex {...headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={''} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => {\n if (datum.isLoading) return null\n\n const validationErrorCount = datum.validation.validation.filter(\n (validation) => validation.level === 'error',\n ).length\n\n return (\n <Flex {...cellProps} flex={1} padding={1} justify=\"center\" align=\"center\" sizing=\"border\">\n {datum.validation.hasError && (\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}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n </Text>\n </Tooltip>\n )}\n </Flex>\n )\n },\n },\n]\n","import {Card} from '@sanity/ui'\nimport {type CSSProperties, useMemo, useState} from 'react'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useActiveReleases} from '../../../releases/store/useActiveReleases'\nimport {Table} from '../../../releases/tool/components/Table/Table'\nimport {type Column} from '../../../releases/tool/components/Table/types'\nimport {searchDocumentRelease} from '../../../releases/tool/detail/documentTable/searchDocumentRelease'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type DocumentInVariantGroup} from './types'\nimport {getVariantDocumentTableColumnDefs} from './variantDocumentTable/VariantDocumentTableColumnDefs'\n\nconst TABLE_CARD_STYLE: CSSProperties = {\n height: '100%',\n overflow: 'auto',\n}\n\nfunction filterDocuments(\n rows: DocumentInVariantGroup[],\n searchTerm: string,\n): DocumentInVariantGroup[] {\n if (!searchTerm.trim()) {\n return rows\n }\n\n return rows.filter(({document}) => searchDocumentRelease(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 [scrollContainerRef, setScrollContainerRef] = useState<HTMLDivElement | null>(null)\n const {data: releases} = useActiveReleases()\n const releasesById = useMemo(\n () => new Map(releases.map((release) => [release._id, release])),\n [releases],\n )\n const columnDefs = useMemo<Column<DocumentInVariantGroup>[]>(\n () => getVariantDocumentTableColumnDefs(t, variantId, releasesById),\n [t, variantId, releasesById],\n )\n\n return (\n <Card flex={1} ref={setScrollContainerRef} style={TABLE_CARD_STYLE}>\n <Table<DocumentInVariantGroup>\n columnDefs={columnDefs}\n data={rows}\n defaultSort={{column: 'documentGroup', direction: 'asc'}}\n emptyState={t('detail.documents.no-documents')}\n loading={loading}\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n rowId=\"groupId\"\n scrollContainerRef={scrollContainerRef}\n searchFilter={filterDocuments}\n />\n </Card>\n )\n}\n","import {Box, Card, Container, Flex, Stack, Text} from '@sanity/ui'\nimport {useMemo, useState} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {LoadingBlock} from '../../../components/loadingBlock/LoadingBlock'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {EditVariantDialog} from '../../components/dialog/EditVariantDialog'\nimport {useVariantDocuments} from '../../hooks/useVariantDocuments'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {VariantPinButton} from '../components/VariantPinButton'\nimport {\n decodeVariantIdFromRoute,\n getVariantConditionsText,\n getVariantDescription,\n getVariantId,\n getVariantTitle,\n} from '../util'\nimport {groupVariantDocumentsByGroup} from './groupVariantDocumentsByGroup'\nimport {VariantDetailFooter} from './VariantDetailFooter'\nimport {VariantDocumentsTable} from './VariantDocumentsTable'\n\nexport function VariantDetail() {\n const router = useRouter()\n const {t} = useTranslation(variantsLocaleNamespace)\n const [editDialogOpen, setEditDialogOpen] = useState(false)\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 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 <Button mode=\"bleed\" onClick={() => router.navigate({})} text={t('detail.back')} />\n </Card>\n <Box padding={4}>\n <Card border padding={4} radius={3}>\n <Stack space={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 const conditionsText = getVariantConditionsText(variant.conditions)\n\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\" overflow=\"hidden\">\n <Card borderBottom flex=\"none\" padding={3}>\n <Button mode=\"bleed\" onClick={() => router.navigate({})} text={t('detail.back')} />\n </Card>\n <Flex direction=\"column\" flex={1} height=\"fill\" overflow=\"hidden\" style={{minHeight: 0}}>\n <Container flex=\"none\" width={3}>\n <Flex direction=\"column\" paddingX={3}>\n <Card paddingY={5}>\n <Flex align=\"flex-start\" gap={4} justify=\"space-between\">\n <Stack space={3}>\n <Flex align=\"center\" gap={1}>\n <VariantPinButton variant={variant} />\n <Text as=\"h1\" size={4} weight=\"bold\">\n {getVariantTitle(variant)}\n </Text>\n </Flex>\n <Text muted size={1}>\n {description || t('detail.no-description')}\n </Text>\n </Stack>\n </Flex>\n\n <Box paddingTop={4}>\n <Stack space={2}>\n <Text size={1} weight=\"medium\">\n {t('dialog.create.conditions.title')}\n </Text>\n <Text muted size={1}>\n {conditionsText || t('overview.table.no-conditions')}\n </Text>\n </Stack>\n </Box>\n </Card>\n </Flex>\n </Container>\n <Flex direction=\"column\" flex={1} 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 <VariantDetailFooter\n openEditDialog={() => setEditDialogOpen(true)}\n documentCount={tableRows.length}\n documentsLoading={documentsLoading}\n variant={variant}\n />\n {editDialogOpen && (\n <EditVariantDialog\n onCancel={() => setEditDialogOpen(false)}\n onSubmit={() => setEditDialogOpen(false)}\n variant={variant}\n />\n )}\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(\n (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 ),\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 {Menu} from '@sanity/ui'\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 {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 {\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 disabled={deleteDisabled}\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","/**\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 ForwardedRef, forwardRef, type HTMLProps, useMemo} 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 {VariantPinButton} from '../components/VariantPinButton'\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 forwardRef(function VariantLinkComponent(\n linkProps: HTMLProps<HTMLAnchorElement>,\n ref: ForwardedRef<HTMLAnchorElement>,\n ) {\n return <StateLink {...linkProps} 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 space={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 <VariantPinButton variant={variant} />\n <Card as={VariantLink} data-as=\"a\" flex={1} padding={2} radius={2} tone=\"inherit\">\n <Flex align=\"center\" gap={3}>\n <Stack flex={1} space={2}>\n <Text size={1} weight=\"medium\">\n {getVariantTitle(variant)}\n </Text>\n <Text muted size={1}>\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 {SearchIcon} from '@sanity/icons/Search'\nimport {Box, Card, Container, Flex, Stack, Text, TextInput} 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 {Table, type TableProps} from '../../../releases/tool/components/Table/Table'\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 {filterVariantsForSearch, getVariantId} from '../util'\nimport {VariantMenuButton} from './VariantMenuButton'\nimport {VariantsEmptyState} from './VariantsEmptyState'\nimport {type TableVariant, variantsOverviewColumnDefs} from './VariantsOverviewColumnDefs'\n\nconst VARIANT_TABLE_ROW_ID = '_id'\n\nexport function VariantsOverview() {\n const {t} = useTranslation(variantsLocaleNamespace)\n const router = useRouter()\n const {data: variants, error, loading} = useAllVariants()\n const [scrollContainerRef, setScrollContainerRef] = useState<HTMLDivElement | null>(null)\n const [searchQuery, setSearchQuery] = useState('')\n const [isCreateVariantDialogOpen, setIsCreateVariantDialogOpen] = useState(false)\n\n const handleCreateVariant = useCallback(() => {\n setIsCreateVariantDialogOpen(true)\n }, [])\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 const renderRowActions = useCallback<\n NonNullable<TableProps<TableVariant, undefined>['rowActions']>\n >(\n ({datum}) => (\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\n const {data: documentCounts, error: documentCountsError} = useVariantsDocumentCounts()\n\n const filteredVariants = useMemo(\n () =>\n filterVariantsForSearch(variantsList, searchQuery).map(\n (variant): TableVariant => ({\n ...variant,\n documentCount: documentCounts?.[variant._id] ?? (documentCountsError ? null : undefined),\n }),\n ),\n [variantsList, searchQuery, documentCounts, documentCountsError],\n )\n\n const hasVariants = variantsList.length > 0\n\n const createVariantButton = useMemo(\n () => (\n <Button\n disabled={isCreateVariantDialogOpen}\n icon={AddIcon}\n onClick={handleCreateVariant}\n text={t('overview.action.create-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 return <VariantsEmptyState createVariantButton={createVariantButton} />\n }, [createVariantButton, error, hasVariants, t])\n\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\">\n {/* Same container width as releases document table (`container[3]` in Table), so chrome aligns with row content */}\n <Container flex=\"none\" width={3}>\n <Flex direction=\"column\" paddingX={3}>\n <Card flex=\"none\" paddingY={5}>\n <Flex align=\"flex-start\" gap={4} justify=\"space-between\">\n <Stack space={3}>\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 <Box flex=\"none\" paddingBottom={4} paddingTop={2}>\n <TextInput\n clearButton={!!searchQuery}\n fontSize={1}\n icon={SearchIcon}\n onChange={(event) => setSearchQuery(event.currentTarget.value)}\n onClear={() => setSearchQuery('')}\n placeholder={t('overview.search.placeholder')}\n radius={3}\n value={searchQuery}\n />\n </Box>\n\n {error && (\n <Card flex=\"none\" padding={3} tone=\"critical\">\n <Text size={1}>{t('overview.error')}</Text>\n </Card>\n )}\n </Flex>\n </Container>\n\n {/* Full-width scroll region so table borders span the tool pane (same pattern as release detail summary). */}\n <Box flex={1} overflow=\"auto\" ref={setScrollContainerRef}>\n <Table<TableVariant>\n columnDefs={columnDefs}\n data={filteredVariants}\n emptyState={tableEmptyState}\n loading={loading}\n rowId={VARIANT_TABLE_ROW_ID}\n rowActions={renderRowActions}\n scrollContainerRef={scrollContainerRef}\n />\n </Box>\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,SAAgBY,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;EAAc,OAAA;EAAd,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;EAAc,OAAA;EAAd,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;EAAe,OAAA;EAAf,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;EAAc,OAAA;EAAd,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;EAAc,OAAA;EAAd,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;GAA2B,OAAA;GAA3B,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;EAAc,OAAA;EACXT,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;EAAc,OAAA;EAAd,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;EAAc,OAAA;EAAd,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,WAGJ6B,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;CAvBH,IAAAkC,eAAqBV,IAgCDG,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;AC5Gb,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;;;;ACxCN,SAAgBK,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,SAAOY,iBAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAA0B,EAAAC,SAAA,eAAAC,OAAAJ,IAEhBK,aAAAD,OAAAE,KAAAA,IAAA,uBAAAF,IAKf,EAAAG,MAAYd,eAAeG,uBAAuB,GAClD,EAAAY,oBAA0Bd,eAAe,GACzCe,aAAmBd,cAAc,GAEjCe,WAAiBF,iBAAeG,QAAUR,QAAOQ,KAAIC;CAAA,AAAAX,EAAA,OAAAE,UACRS,KAAAX,EAAA,MAAxBW,KAAAd,gBAAgBK,OAAO,GAACF,EAAA,KAAAE,SAAAF,EAAA,KAAAW;CAA7C,IAAAC,eAAqBD,IAAwBE;CAAA,AAAAb,EAAA,OAAAS,YAAAT,EAAA,OAAAQ,cAAAR,EAAA,OAAAE,QAAAQ,OAERG,WAAA;EACnC,AACEL,WADEC,WACS,EAAAK,WACET,KAAAA,EACb,IAEW,EAAAS,WACEZ,QAAOQ,IACpB,CAAC;CACF,GACFV,EAAA,KAAAS,UAAAT,EAAA,KAAAQ,YAAAR,EAAA,KAAAE,QAAAQ,KAAAV,EAAA,KAAAa,MAAAA,KAAAb,EAAA;CAVD,IAAAe,mBAAyBF,IAUUG;CAAA,AAAAhB,EAAA,OAAAS,YAAAT,EAAA,OAAAM,KAAAN,EAAA,OAAAY,gBAK7BI,KAAAP,WAAA,GACOH,EAAE,sBAAsB,EAAC,KAAMM,aAAY,KADlD,GAEON,EAAE,oBAAoB,EAAC,KAAMM,aAAY,IAAGZ,EAAA,KAAAS,UAAAT,EAAA,KAAAM,GAAAN,EAAA,KAAAY,cAAAZ,EAAA,KAAAgB,MAAAA,KAAAhB,EAAA;CAI/C,IAAAiB,KAAAR,WAAApB,gBAAAD,SAAkC8B;CAAA,AAAAlB,EAAA,QAAAS,YAAAT,EAAA,QAAAM,KAM7BY,KAAWZ,EAAXG,WAAa,yBAA4B,oBAAoB,GAACT,EAAA,MAAAS,UAAAT,EAAA,MAAAM,GAAAN,EAAA,MAAAkB,MAAAA,KAAAlB,EAAA;CAAA,IAAAmB;CAAA,AAAAnB,EAAA,QAAAkB,KACxEC,KAAAnB,EAAA,OAFamB,KAAA,EAAAC,SACHF,GACX,GAAClB,EAAA,MAAAkB,IAAAlB,EAAA,MAAAmB;CAAA,IAAAE;CACD,OADCrB,EAAA,QAAAI,cAAAJ,EAAA,QAAAe,oBAAAf,EAAA,QAAAS,YAAAT,EAAA,QAAAgB,MAAAhB,EAAA,QAAAiB,MAAAjB,EAAA,QAAAmB,MAfHE,KAAA,oBAAC,UAAD;EAEI,cAAAL;EAIQ,aAAA;EACGZ,eAAAA;EACP,MAAAa;EACD,MAAA;EACIF,SAAAA;EACF,QAAA;EACGN,UAAAA;EACI,cAAAU;CAEb,CAAA,GACDnB,EAAA,MAAAI,YAAAJ,EAAA,MAAAe,kBAAAf,EAAA,MAAAS,UAAAT,EAAA,MAAAgB,IAAAhB,EAAA,MAAAiB,IAAAjB,EAAA,MAAAmB,IAAAnB,EAAA,MAAAqB,MAAAA,KAAArB,EAAA,KAhBFqB;AAgBE;AC3CN,SAASS,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;ACrFA,SAAOc,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;AC7FA,SAAOuC,wBAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAiC,EAAAC,eAAAC,kBAAAC,IAAAC,YAAAN,IAEtCI,mBAAAC,OAAAE,KAAAA,KAAAF,IAOA,EAAAG,MAAYhB,eAAeG,uBAAuB,GAClDc,SAAerB,UAAU,GAACsB;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,uBASI7B,uBAAuBY,QAAOkB,KAAMV,EAKvC,GAACW;CAAA,AAAAxB,EAAA,OAAAqB,aAK4EG,KAAAxB,EAAA,OAAhEwB,KAAA,oBAAC,mBAAD;EAA6BH,UAAAA;EAAqBA,SAAAA;CAAU,CAAA,GAAIrB,EAAA,KAAAqB,YAAArB,EAAA,MAAAwB;CAAA,IAAAC;CAAA,AAAAzB,EAAA,QAAAK,QAAAkB,MACjBE,KAAAzB,EAAA,OAAzByB,KAAA7B,aAAaS,QAAOkB,GAAI,GAACvB,EAAA,MAAAK,QAAAkB,KAAAvB,EAAA,MAAAyB;CAAnD,IAAAC,KAAA,0BAA0BD,MAA2BE;CAAA,AAAA3B,EAAA,QAAAO,IAMVoB,KAAA3B,EAAA,OAAnC2B,KAAApB,EAAE,gCAAgC,GAACP,EAAA,MAAAO,GAAAP,EAAA,MAAA2B;CAAA,IAAAC;CAAA,AAAA5B,EAAA,QAAAgB,wBAEyCY,KAAA5B,EAAA,OAApE4B,KAAAZ,wBAAA,EAAAa,SAAkCb,sBAAiC,IAAnEV,KAAAA,GAAoEN,EAAA,MAAAgB,uBAAAhB,EAAA,MAAA4B;CAAA,IAAAE;CAAA,AAAA9B,EAAA,QAAAe,kBAAAf,EAAA,QAAAmB,gBAAAnB,EAAA,QAAA2B,MAAA3B,EAAA,QAAA4B,MANtFE,MAAA,oBAAC,MAAD,EAAA,UACE,oBAAC,YAAD;EACYf,UAAAA;EACDI,SAAAA;EACH,MAAAQ;EACD,MAAA;EACS,cAAAC;CAAoE,CAAA,EANjF,CAAA,GAQE5B,EAAA,MAAAe,gBAAAf,EAAA,MAAAmB,cAAAnB,EAAA,MAAA2B,IAAA3B,EAAA,MAAA4B,IAAA5B,EAAA,MAAA8B,OAAAA,MAAA9B,EAAA;CAAA,IAAA+B;CAAA,AAAA/B,EAAA,QAAAgC,OAAAC,IAAA,2BAAA,KAEAF,MAAA;EAAAG,WAAY;EAAYC,QAAU;CAAI,GAACnC,EAAA,MAAA+B,OAAAA,MAAA/B,EAAA;CAAA,IAAAoC;CAAA,AAAApC,EAAA,QAAA8B,OAAA9B,EAAA,QAAAwB,MAAAxB,EAAA,QAAA0B,MAdlDU,MAAA,oBAAC,cAAD;EACU,QAAAZ;EACJ,IAAAE;EAEF,MAAAI;EAUO,SAAAC;CAAuC,CAAA,GAChD/B,EAAA,MAAA8B,KAAA9B,EAAA,MAAAwB,IAAAxB,EAAA,MAAA0B,IAAA1B,EAAA,MAAAoC,OAAAA,MAAApC,EAAA;CAAA,IAAAqC;CAAA,AAAArC,EAAA,QAAAsB,sBAAAtB,EAAA,QAAAiB,2BAAAjB,EAAA,QAAAkB,uBAAAlB,EAAA,QAAAoB,sBAAApB,EAAA,QAAAqB,cACDgB,MAAAjB,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,MAAAqC,OAAAA,MAAArC,EAAA;CAAA,IAAAsC;CACA,OADAtC,EAAA,QAAAoC,OAAApC,EAAA,QAAAqC,OAxBHC,MAAA,qBAAA,YAAA,EAAA,UAAA,CACEF,KAgBCC,GAOA,EAAA,CAAA,GACArC,EAAA,MAAAoC,KAAApC,EAAA,MAAAqC,KAAArC,EAAA,MAAAsC,OAAAA,MAAAtC,EAAA,KAzBHsC;AAyBG;ACzDP,SAAOW,oBAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAA6B,EAAAC,gBAAAC,eAAAC,kBAAAC,IAAAC,YAAAP,IAGlCK,mBAAAC,OAAAE,KAAAA,KAAAF,IAQA,EAAAG,MAAYd,eAAeC,uBAAuB,GAACc;CAAA,AAAAT,EAAA,OAAAU,OAAAC,IAAA,2BAAA,KAI/CF,KAAA,oBAAC,MAAD;EAAM,WAAA;EAAmB,SAAA;EAAU,OAAA,EAAAG,SAAU,GAAG;CAAC,CAAA,GAAIZ,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CAAA,IAAAa;CAAA,AAAAb,EAAA,OAAAU,OAAAC,IAAA,2BAAA,KAM7CE,KAAA,oBAAC,MAAD;EAAY,MAAA;EACV,UAAA,oBAAC,aAAD,CAAY,CAAA;CADT,CAAA,GAEEb,EAAA,KAAAa,MAAAA,KAAAb,EAAA;CAAA,IAAAc;CAAA,AAAAd,EAAA,OAAAQ,IAEsBM,KAAAd,EAAA,MAA1Bc,KAAAN,EAAE,uBAAuB,GAACR,EAAA,KAAAQ,GAAAR,EAAA,KAAAc;CAAA,IAAAC;CAAA,AAAAf,EAAA,OAAAM,QAAAU,aACyCD,KAAAf,EAAA,MAApEe,KAAA,oBAAC,cAAD;EAAoB,MAAAT,QAAOU;EAAa,mBAAA;EAAkB,SAAA;CAAO,CAAA,GAAGhB,EAAA,KAAAM,QAAAU,YAAAhB,EAAA,KAAAe;CAAA,IAAAE;CAAA,AAAAjB,EAAA,OAAAc,MAAAd,EAAA,OAAAe,MAR5EE,KAAA,oBAAC,MAAD;EAAY,MAAA;EAAQ,KAAA;EAClB,UAAA,oBAAC,MAAD,EAAA,UACE,qBAAC,MAAD;GAAY,OAAA;GAAc,KAAA;GAA1B,UAAA,CACEJ,IAGA,qBAAC,MAAD;IAAM,OAAA;IAAY,MAAA;IAAlB,UAAA;KACGC;KAA4B;KAC7BC;IAFG;GAJF,CAAA,CAAA;EADF,CAAA,EAAA,CAAA;CADF,CAAA,GAYEf,EAAA,KAAAc,IAAAd,EAAA,KAAAe,IAAAf,EAAA,KAAAiB,MAAAA,KAAAjB,EAAA;CAAA,IAAAkB;CAAA,AAAAlB,EAAA,OAAAQ,IAGiEU,KAAAlB,EAAA,OAA/BkB,KAAAV,EAAE,4BAA4B,GAACR,EAAA,KAAAQ,GAAAR,EAAA,MAAAkB;CAAA,IAAAC;CAAA,AAAAnB,EAAA,QAAAE,kBAAAF,EAAA,QAAAkB,MAAtEC,KAAA,oBAAC,UAAD;EAAiBjB,SAAAA;EAAsB,MAAAgB;CAA+B,CAAA,GAAIlB,EAAA,MAAAE,gBAAAF,EAAA,MAAAkB,IAAAlB,EAAA,MAAAmB,MAAAA,KAAAnB,EAAA;CAAA,IAAAoB;CAAA,AAAApB,EAAA,QAAAG,iBAAAH,EAAA,QAAAI,oBAAAJ,EAAA,QAAAM,WAC1Ec,KAAA,oBAAC,yBAAD;EACiBjB;EACGC;EACTE;CAAO,CAAA,GAChBN,EAAA,MAAAG,eAAAH,EAAA,MAAAI,kBAAAJ,EAAA,MAAAM,SAAAN,EAAA,MAAAoB,MAAAA,KAAApB,EAAA;CAAA,IAAAqB;CAAA,AAAArB,EAAA,QAAAmB,MAAAnB,EAAA,QAAAoB,MANJC,MAAA,qBAAC,MAAD;EAAW,MAAA;EAAY,KAAA;EAAe,eAAA;EAAtC,UAAA,CACEF,IACAC,EAFG;KAOEpB,EAAA,MAAAmB,IAAAnB,EAAA,MAAAoB,IAAApB,EAAA,MAAAqB,OAAAA,MAAArB,EAAA;CAAA,IAAAsB;CAEJ,OAFItB,EAAA,QAAAqB,OAAArB,EAAA,QAAAiB,MAzBXK,MAAA,qBAAC,MAAD;EAAW,MAAA;EAAX,UAAA,CACEb,IAEA,qBAAC,MAAD;GAAe,SAAA;GAAf,UAAA,CACEQ,IAcAI,GAfG;EAHF,CAAA,CAAA;KA2BErB,EAAA,MAAAqB,KAAArB,EAAA,MAAAiB,IAAAjB,EAAA,MAAAsB,OAAAA,MAAAtB,EAAA,KA3BPsB;AA2BO;ACjDX,SAAgBE,wBAAwBC,UAAkC;CACxE,IAAMC,QAAQD,SAASC,SAASD,SAASE;CAEzC,OAAO,OAAOD,SAAU,YAAYA,MAAME,KAAK,IAAIF,QAAQD,SAASI;AACtE;ACMA,SAASc,6BACPC,SACAC,cAC6B;CAC7B,IAAID,QAAQG,YACV,OAAOF,aAAaG,IAAIJ,QAAQG,UAAU;CAG5C,IAAIN,gBAAgBG,QAAQK,QAAQ,GAAG;EACrC,IAAMC,oBAAoBZ,kCAAkCM,QAAQK,QAAS;EAE7E,OAAOJ,aAAaG,IAAIE,iBAAiB;CAC3C;AAGF;AAEA,SAAAE,kBAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAA2B,EAAAC,YAAAH,IACzB,EAAAI,MAAYtB,eAAe,GAACuB;CAAA,AAAAJ,EAAA,OAAAE,QAAAG,MACoCD,KAAAJ,EAAA,MAA9CI,KAAAnB,kCAAkCiB,QAAOG,GAAI,GAACL,EAAA,KAAAE,QAAAG,KAAAL,EAAA,KAAAI;CAAhE,IAAAE,YAAkBF,IAIPG,KAAAL,QAAOM,UAAgBC,OAAAC;CAAA,AAAAV,EAAA,OAAAG,IACqBO,KAAAV,EAAA,MAAzCU,KAAAP,EAAE,sCAAsC,GAACH,EAAA,KAAAG,GAAAH,EAAA,KAAAU;CAAA,IAAAC;CAAA,AAAAX,EAAA,OAAAM,YAQlDK,KAAAX,EAAA,MANAW,MAAAC,OAAA;EAAC,IAAA,EAAAC,iBAAAD;EAAc,OACd,oBAAC,YAAD;GAAoB7B,QAAAA;GAAyB,QAAA,EAAA+B,IAAKR,UAAS;GACzD,UAAA,oBAAC,OAAD;IAAe,QAAA;IAAQ,MAAA;IACpBO,UAAAA;GADG,CAAA;EADG,CAAA;CAIE,GACdb,EAAA,KAAAM,WAAAN,EAAA,KAAAW;CAAA,IAAAC;CACY,OADZZ,EAAA,OAAAO,MAAAP,EAAA,OAAAU,MAAAV,EAAA,OAAAW,MAVHC,KAAA,oBAAC,cAAD;EACS,OAAAL;EACG,UAAAG;EAETC,UAAAA;CAJU,CAAA,GAWEX,EAAA,KAAAO,IAAAP,EAAA,KAAAU,IAAAV,EAAA,KAAAW,IAAAX,EAAA,KAAAY,MAAAA,KAAAZ,EAAA,IAXfY;AAWe;AAInB,SAAAG,iBAAAhB,IAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAA0B,EAAAe,OAAAC,SAAAlB,IAA4DK;CAI1E,OAJ0EJ,EAAA,OAAAgB,SAAAhB,EAAA,OAAAiB,QAElFb,KAAA,oBAAC,OAAD;EAAe,QAAA;EAASa;EACrBD,UAAAA;CADG,CAAA,GAEEhB,EAAA,KAAAgB,OAAAhB,EAAA,KAAAiB,MAAAjB,EAAA,KAAAI,MAAAA,KAAAJ,EAAA,IAFRI;AAEQ;AAIZ,SAAOc,2BAAAnB,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAoC,EAAAkB,UAAA5B,iBAAAQ,IAOzC,EAAAI,MAAYtB,eAAe,GAACuB;CAAA,AAAAJ,EAAA,OAAAoB,OAAAC,IAAA,2BAAA,KAGdjB,KAAA;EAAAkB,UAAW;EAACC,OAAS;EAAMC,WAAa;EAAMC,WAAa;CAAQ,GAACzB,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAAA,IAAAO;CAAA,AAAAP,EAAA,OAAAoB,OAAAC,IAAA,2BAAA,KAC5Bd,KAAA,EAAAgB,OAAQ,cAAa,GAACvB,EAAA,KAAAO,MAAAA,KAAAP,EAAA;CAAA,IAAAU;CAAA,IAAAV,EAAA,OAAAT,gBAAAS,EAAA,OAAAG,KAAAH,EAAA,OAAAmB,UAAA;EAAA,IAAAR;EAmCpEX,AAnCoEA,EAAA,OAAAT,gBAAAS,EAAA,OAAAG,KACxDQ,MAAArB,YAAA;GACZ,IAAIJ,oBAAoBI,QAAOK,QAAS,GAAC,OAErC,oBAAC,kBAAD;IAES,OAAAQ,EAAE,wBAAwB;IAC5B,MAAA;GAAU,GAFVb,QAAOoC,UAEG;GAKrB,IAAIpC,QAAOK,aAAc,UAAQ,OAE7B,oBAAC,kBAAD;IAES,OAAAQ,EAAE,oBAAoB;IACxB,MAAA;GAAS,GAFTb,QAAOoC,UAEE;GAKpB,IAAAxB,UAAgBb,6BAA6BC,SAASC,YAAY;GAIjE,OAFGW,UACK,oBAAC,mBAAD,EAAqDA,QAAO,GAApCZ,QAAOoC,UAA6B,IAInE,oBAAC,kBAAD;IAES,OAAAvB,EAAE,sCAAsC;IAC1C,MAAA;GAAS,GAFTb,QAAOoC,UAEE;EACd,GAEL1B,EAAA,KAAAT,cAAAS,EAAA,KAAAG,GAAAH,EAAA,KAAAW,MAAAA,KAAAX,EAAA,IAlCAU,KAAAS,SAAQQ,IAAKhB,EAkCb,GAACX,EAAA,KAAAT,cAAAS,EAAA,KAAAG,GAAAH,EAAA,KAAAmB,UAAAnB,EAAA,KAAAU;CAAA,OAAAA,KAAAV,EAAA;CAAA,IAAAW;CAEA,OAFAX,EAAA,OAAAU,KAEAC,KAAAX,EAAA,OAtCNW,KAAA,oBAAC,KAAD;EAAY,OAAAP;EACV,UAAA,oBAAC,MAAD;GAAY,OAAA;GAAc,KAAA;GAAQ,MAAA;GAAgB,OAAAG;GAC/CG,UAAAA;EADE,CAAA;CADH,CAAA,GAsCEV,EAAA,KAAAU,IAAAV,EAAA,MAAAW,KAtCNA;AAsCM;AChFV,MAAMyC,6BAA6BtB,WAAW,SAAAsB,2BAAAC,IAAAC,KAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAP,cAAAQ,WAAAT,aAAAE;CAAA,AAAAK,EAAA,OAAAF,MAC4CJ,eAAAM,EAAA,IAAAE,YAAAF,EAAA,IAAAP,cAAAO,EAAA,IAAAL,eAAAK,EAAA,OAAxF,CAAAP,aAAAC,cAAAC,iBAAAO,aAAAJ,IAAwFE,EAAA,KAAAF,IAAAE,EAAA,KAAAN,cAAAM,EAAA,KAAAE,WAAAF,EAAA,KAAAP,aAAAO,EAAA,KAAAL;CAAA,IAAAQ;CAAA,AAAAH,EAAA,OAAAN,gBAAAM,EAAA,OAAAP,eAO5EU,KAAA;EAAAC,IACFX;EAAWY,MACTX;CACR,GAACM,EAAA,KAAAN,cAAAM,EAAA,KAAAP,aAAAO,EAAA,KAAAG,MAAAA,KAAAH,EAAA;CAAA,IAAAM;CAGD,OAHCN,EAAA,OAAAE,aAAAF,EAAA,OAAAD,OAAAC,EAAA,QAAAL,gBAAAK,EAAA,QAAAG,MANHG,KAAA,oBAAC,YAAD;EAAW,GACLJ;EACG,QAAA;EACC,QAAAC;EAIMR;EACTI;CAAG,CAAA,GACRC,EAAA,KAAAE,WAAAF,EAAA,KAAAD,KAAAC,EAAA,MAAAL,cAAAK,EAAA,MAAAG,IAAAH,EAAA,MAAAM,MAAAA,KAAAN,EAAA,KATFM;AASE,CAEL;AAED,SAASC,gCACPC,UACAnB,WAIA;CACA,IAAMM,eAAwCN,YAAY,CAAC,CAAC,WAAWA,SAAS,CAAC,IAAI,CAAA;CAgBrF,OAdIL,oBAAoBwB,QAAQ,IACvB;EACLC,kBAAkB,CAAC,WAAW;EAC9Bd,cAAc,CAAC,GAAGA,cAAc,CAAC,eAAe,WAAW,CAAC;CAC9D,IAGEa,aAAa,WACR;EACLC,kBAAkB,CAAC,QAAQ;EAC3Bd,cAAcA,aAAae,SAAS,IAAIf,eAAegB,KAAAA;CACzD,IAGK;EACLF,kBAAkB,CAACD,YAAY,IAAI,QAAQ;EAC3Cb,cAAc,CAAC,GAAGA,cAAc,CAAC,eAAea,YAAY,EAAE,CAAC;CACjE;AACF;AAEA,SAAOI,uBAAAd,IAAA;CAAA,IAAAE,IAAAC,EAAA,EAAA,GAAgC,EAAAd,KAAAC,QAAAC,cAAAS,IAITK;CAAA,AAAAH,EAAA,OAAAb,IAAA0B,UACmBV,KAAAH,EAAA,MAA3BG,KAAApB,eAAeI,IAAG0B,OAAQ,GAACb,EAAA,KAAAb,IAAA0B,SAAAb,EAAA,KAAAG;CAA/C,IAAAV,cAAoBU,IACpBW,mBAAyBjC,oBAAoBM,IAAG4B,SAASC,GAAI,GAACV;CAAA,AAAAN,EAAA,OAAAb,IAAA8B,QAAAT,YAAAR,EAAA,OAAAX,aAEtDiB,KAAAC,gCAAgCpB,IAAG8B,QAAQT,UAAWnB,SAAS,GAACW,EAAA,KAAAb,IAAA8B,QAAAT,UAAAR,EAAA,KAAAX,WAAAW,EAAA,KAAAM,MAAAA,KAAAN,EAAA;CADxE,IAAA,EAAAS,kBAAAd,iBACQW,IAEPY;CAAA,AAAAlB,EAAA,OAAAc,mBAG8FI,KAAAlB,EAAA,MAAvFkB,KAAAJ,kBAAgBJ,SAAW,KAAK,oBAAC,yBAAD,EAAmCI,UAAAA,iBAAgB,CAAA,GAAId,EAAA,KAAAc,kBAAAd,EAAA,KAAAkB;CAD/F,IAAAC,kBACQD,IAEPE;CAAA,AAAApB,EAAA,OAAAS,oBAAAT,EAAA,OAAAb,IAAA4B,SAAAC,OAAAhB,EAAA,OAAAb,IAAA4B,SAAAM,SAEoFD,KAAA;EAAAE,YACvEnC,IAAG4B,SAASC;EAAItB,cACdP,IAAG4B,SAASM;EAAMZ;CAElC,GAACT,EAAA,KAAAS,kBAAAT,EAAA,KAAAb,IAAA4B,SAAAC,KAAAhB,EAAA,KAAAb,IAAA4B,SAAAM,OAAArB,EAAA,MAAAoB,MAAAA,KAAApB,EAAA;CAJD,IAAA,EAAAuB,WAAAC,gBAAAC,OAAAC,oBAA4D5C,yBAAyBsC,EAIpF,GAACO;CAAA,AAAA3B,EAAA,QAAA0B,kBAa8BC,KAAA3B,EAAA,OAArB2B,KAAAD,mBAAA,CAAoB,GAAC1B,EAAA,MAAA0B,iBAAA1B,EAAA,MAAA2B;CAAA,IAAAC;CAAA,AAAA5B,EAAA,QAAAZ,UAAAY,EAAA,QAAAwB,kBAAAxB,EAAA,QAAAmB,mBAAAnB,EAAA,QAAA2B,MAD5BC,KAAA,oBAAC,sBAAD;EAAqB,GACdD;EACGR,QAAAA;EACOK,eAAAA;EACPpC;CAAM,CAAA,GACdY,EAAA,MAAAZ,QAAAY,EAAA,MAAAwB,gBAAAxB,EAAA,MAAAmB,iBAAAnB,EAAA,MAAA2B,IAAA3B,EAAA,MAAA4B,MAAAA,KAAA5B,EAAA;CAAA,IAAA6B;CACG,OADH7B,EAAA,QAAAP,eAAAO,EAAA,QAAAb,IAAA4B,SAAAM,SAAArB,EAAA,QAAAL,gBAAAK,EAAA,QAAA4B,MAdJC,KAAA,oBAAC,MAAD;EACO,MAAA;EACDhC,IAAAA;EACSJ;EACC,cAAAN,IAAG4B,SAASM;EACZ1B;EACN,QAAA;EACA,WAAA;EAERiC,UAAAA;CATG,CAAA,GAeE5B,EAAA,MAAAP,aAAAO,EAAA,MAAAb,IAAA4B,SAAAM,OAAArB,EAAA,MAAAL,cAAAK,EAAA,MAAA4B,IAAA5B,EAAA,MAAA6B,MAAAA,KAAA7B,EAAA,KAfP6B;AAeO;AC5FX,MAAMmB,6BAA6BZ,KACjC,SAAAY,2BAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAoC,EAAAC,KAAAC,cAAAJ,IAMnCK;CACkE,OADlEJ,EAAA,OAAAE,OAAAF,EAAA,OAAAG,aACQC,KAAA,oBAAC,wBAAD;EAA6BF;EAAgBC;CAAS,CAAA,GAAIH,EAAA,KAAAE,KAAAF,EAAA,KAAAG,WAAAH,EAAA,KAAAI,MAAAA,KAAAJ,EAAA,IAA1DI;AAA0D,IAElEC,MAAMC,SAASD,KAAKH,IAAIK,YAAYD,KAAKJ,IAAIK,WAAWF,KAAKF,cAAcG,KAAKH,SACnF,GAEMK,mBAAmBtB,KACvB,SAAAuB,aAAAV,IAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAsB,EAAAS,SAAAX,IACpBY,SAAerB,UAAU,GAACc;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,GAEaO,qCACXC,GACAf,WACAgB,iBACqC;CACrC;EACEE,IAAI;EACJC,QAAQ;EACRC,OAAO;EACPC,SAAS;EACTC,gBAAgBvB,QAAQA,IAAIwB;CAC9B;CACA;EACEL,IAAI;EACJE,OAAO;EACPI,OAAO;GAACC,UAAU;GAAKC,UAAU;EAAG;EACpCL,SAAS;EACTM,SAASC,UACP,oBAAC,MAAD;GAAM,GAAIA,MAAMC;GAAa,UAAU;GAAG,QAAO;GAC/C,UAAA,oBAAC,QAAQ,aAAT,EAAqB,MAAMd,EAAE,+BAA+B,EAAE,CAAA;EAC1D,CAAA;EAERe,OAAO,EAACC,WAAWC,YACjB,oBAAC,MAAD;GACE,OAAM;GACN,GAAID;GACJ,OAAO;IAAC,GAAGA,UAAUP;IAAOS,MAAM;IAAYR,UAAU;IAAGS,UAAU;GAAQ;GAE7E,UAAA,oBAAC,KAAD;IAAK,MAAM;IAAG,UAAU;IAAG,OAAO;KAACT,UAAU;KAAGS,UAAU;IAAQ;IAC/D,UAAA,CAACF,MAAMG,aACN,oBAAC,4BAAD;KAA4B,UAAUH,MAAMI;KAAwBpB;IAAa,CAAA;GAEhF,CAAA;EACD,CAAA;CAEV;CACA;EACEE,IAAI;EACJE,OAAO;EACPI,OAAO,EAACC,UAAU,IAAG;EACrBJ,SAAS;EACTM,SAASC,UACP,oBAAC,MAAD;GAAM,GAAIA,MAAMC;GAAa,UAAU;GAAG,QAAO;GAC/C,UAAA,oBAAC,QAAQ,kBAAT;IAA0B,MAAMd,EAAE,6BAA6B;IAAG,GAAIa;GAAM,CAAA;EACxE,CAAA;EAERE,OAAO,EAACC,WAAWC,YACjB,oBAAC,MAAD;GAAM,OAAM;GAAS,GAAID;GACvB,UAAA,oBAAC,KAAD;IAAK,UAAU;IACZ,UAAA,CAACC,MAAMG,aAAa,oBAAC,kBAAD,EAAkB,MAAMH,MAAMK,SAASC,MAAM,CAAA;GAC/D,CAAA;EACD,CAAA;CAEV;CACA;EACEpB,IAAI;EACJE,OAAO;EACPI,OAAO;GAACC,UAAU;GAAgCC,UAAU;EAA8B;EAC1FJ,gBAAgB,EAACe,eAAc7C,wBAAwB6C,QAAQ,CAAC,CAACE,YAAY;EAC7EZ,SAASC,UACP,oBAAC,QAAQ,mBAAT;GACE,GAAIA;GACJ,aAAab,EAAE,2CAA2C;EAAE,CAAA;EAGhEe,OAAO,EAACC,WAAWC,YACjB,oBAAC,KAAD;GAAK,GAAID;GAAW,MAAM;GAAG,SAAS;GAAG,cAAc;GAAG,QAAO;GAC9DC,UAAAA,MAAMG,YACL,oBAAC,sBAAD,EAAsB,eAAA,GAAa,CAAA,IAEnC,oBAAC,4BAAD;IAA4B,KAAKH;IAAkBhC;GAAU,CAAA;EAE5D,CAAA;CAET;CACA;EACEkB,IAAI;EACJG,SAAS;EACTD,OAAO;EACPO,SAASC,UACP,oBAAC,MAAD;GAAM,GAAIA,MAAMC;GAAa,UAAU;GAAG,QAAO;GAC/C,UAAA,oBAAC,QAAQ,kBAAT;IAA0B,MAAMd,EAAE,+BAA+B;IAAG,GAAIa;GAAM,CAAA;EAC1E,CAAA;EAERE,OAAO,EAACC,WAAWC,YACjB,oBAAC,MAAD;GAAM,GAAID;GAAW,OAAM;GAAS,UAAU;GAAG,UAAU;GAAG,OAAO,EAACN,UAAU,IAAG;GAChF,UAAA,CAACO,MAAMG,aAAaH,MAAMK,SAASG,cAClC,oBAAC,MAAD;IAAM,OAAA;IAAM,MAAM;IAChB,UAAA,oBAAC,cAAD;KAAc,MAAMR,MAAMK,SAASG;KAAY,mBAAA;KAAkB,SAAA;IAAO,CAAA;GACpE,CAAA;EAEJ,CAAA;CAEV;CACA;EACEtB,IAAI;EACJG,SAAS;EACTD,OAAO;EACPO,SAAS,EAACE,kBACR,oBAAC,MAAD;GAAM,GAAIA;GAAa,UAAU;GAAG,QAAO;GACzC,UAAA,oBAAC,QAAQ,aAAT,EAAqB,MAAM,GAAG,CAAA;EAC1B,CAAA;EAERC,OAAO,EAACC,WAAWC,YAAW;GAC5B,IAAIA,MAAMG,WAAW,OAAO;GAE5B,IAAMM,uBAAuBT,MAAMU,WAAWA,WAAWC,QACtDD,eAAeA,WAAWE,UAAU,OACvC,CAAC,CAACC;GAEF,OACE,oBAAC,MAAD;IAAM,GAAId;IAAW,MAAM;IAAG,SAAS;IAAG,SAAQ;IAAS,OAAM;IAAS,QAAO;IAC9EC,UAAAA,MAAMU,WAAWI,YAChB,oBAAC,WAAD;KACE,QAAA;KACA,WAAU;KACV,SACE,oBAAC,MAAD;MAAM,OAAA;MAAM,MAAM;MAChB,UAAA,qBAAC,MAAD;OAAM,OAAM;OAAS,KAAK;OAAG,SAAS;OAAtC,UAAA,CACE,oBAAC,UAAD;QAAU,MAAMpE;QAAkB,MAAK;OAAU,CAAA,GAChDqC,EACC0B,yBAAyB,IACrB,gDACA,iDACJ,EAACM,OAAON,qBAAoB,CAC9B,CACI;;KACF,CAAA;KAGR,UAAA,oBAAC,MAAD;MAAM,MAAM;MACV,UAAA,oBAAC,UAAD;OAAU,MAAM/D;OAAkB,MAAK;MAAU,CAAA;KAC7C,CAAA;IACC,CAAA;GAEP,CAAA;EAEV;CACF;AAAC,GCxKGkF,mBAAkC;CACtCC,QAAQ;CACRC,UAAU;AACZ;AAEA,SAASC,gBACPC,MACAC,YAC0B;CAK1B,OAJKA,WAAWC,KAAK,IAIdF,KAAKG,QAAQ,EAACC,eAAcZ,sBAAsBY,UAAUH,UAAU,CAAC,IAHrED;AAIX;AAEA,SAAOK,sBAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAA+B,EAAAR,MAAAS,SAAAC,IAAAC,cAAAL,IAEpCG,UAAAC,OAAAE,KAAAA,KAAAF,IAOA,EAAAG,MAAYzB,eAAeK,uBAAuB,GAClD,CAAAqB,oBAAAC,yBAAoD5B,SAAgC,IAAI,GACxF,EAAA6B,MAAAC,aAAyB5B,kBAAkB,GAAC6B;CAAA,AAAAX,EAAA,OAAAU,WAEsBC,KAAAX,EAAA,MAA1DW,KAAA,IAAIC,IAAIF,SAAQG,IAAKC,OAAmC,CAAC,GAACd,EAAA,KAAAU,UAAAV,EAAA,KAAAW;CADlE,IAAAI,eACQJ,IAEPK;CAAA,AAAAhB,EAAA,OAAAe,gBAAAf,EAAA,OAAAM,KAAAN,EAAA,OAAAI,aAEOY,KAAA5B,kCAAkCkB,GAAGF,WAAWW,YAAY,GAACf,EAAA,KAAAe,cAAAf,EAAA,KAAAM,GAAAN,EAAA,KAAAI,WAAAJ,EAAA,KAAAgB,MAAAA,KAAAhB,EAAA;CADrE,IAAAiB,aACQD,IAEPE;CAAA,AAAAlB,EAAA,OAAAmB,OAAAC,IAAA,2BAAA,KAOkBF,KAAA;EAAAG,QAAS;EAAeC,WAAa;CAAK,GAACtB,EAAA,KAAAkB,MAAAA,KAAAlB,EAAA;CAAA,IAAAuB;CAAA,AAAAvB,EAAA,OAAAM,IACViB,KAAAvB,EAAA,MAAlCuB,KAAAjB,EAAE,+BAA+B,GAACN,EAAA,KAAAM,GAAAN,EAAA,KAAAuB;CAAA,IAAAC;CAO3C,OAP2CxB,EAAA,OAAAiB,cAAAjB,EAAA,QAAAE,WAAAF,EAAA,QAAAP,QAAAO,EAAA,QAAAO,sBAAAP,EAAA,QAAAuB,MALlDC,KAAA,oBAAC,MAAD;EAAY,MAAA;EAAQhB,KAAAA;EAA8BnB,OAAAA;EAChD,UAAA,oBAAC,OAAD;GACc4B;GACNxB,MAAAA;GACO,aAAAyB;GACD,YAAAK;GACHrB;GAEH,OAAA;GACcK;GACNf,cAAAA;EAAe,CAAA;CAV5B,CAAA,GAYEQ,EAAA,KAAAiB,YAAAjB,EAAA,MAAAE,SAAAF,EAAA,MAAAP,MAAAO,EAAA,MAAAO,oBAAAP,EAAA,MAAAuB,IAAAvB,EAAA,MAAAwB,MAAAA,KAAAxB,EAAA,KAZPwB;AAYO;AAlCJ,SAAAV,QAAAW,SAAA;CAAA,OAaqC,CAACA,QAAOC,KAAMD,OAAO;AAAC;AClBlE,SAAO2B,gBAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACLC,SAAepB,UAAU,GACzB,EAAAqB,MAAYlB,eAAeG,uBAAuB,GAClD,CAAAgB,gBAAAC,qBAA4CxB,SAAS,EAAK,GAG1D2B,YAAkBjB,yBADhB,OAAOW,OAAMK,MAAMC,aAAe,WAAWN,OAAMK,MAAMC,YAAzDC,KAAAA,CACqD,GACvD,EAAAC,MAAAC,YAAwBtB,eAAe,GAEvCuB,UAAgBJ,YAAYE,KAAIG,IAAKL,SAAqB,IAA1CC,KAAAA,GAChB,EAAAE,SAAAG,kBAAAC,SAAAC,kBAAAC,OAAAC,0BAII/B,oBAAoByB,SAAOO,GAAK,GAACC;CAAA,AAAApB,EAAA,OAAAgB,mBAGiBI,KAAApB,EAAA,MAA9CoB,KAAAxB,6BAA6BoB,gBAAgB,GAAChB,EAAA,KAAAgB,kBAAAhB,EAAA,KAAAoB;CADtD,IAAAC,YACQD;CAIR,IAAIT,SAAO;EAAA,IAAAW;EAAA,AAAAtB,EAAA,OAAAG,IAC2CmB,KAAAtB,EAAA,MAAnBsB,KAAAnB,EAAE,gBAAgB,GAACH,EAAA,KAAAG,GAAAH,EAAA,KAAAsB;EAAA,IAAAC;EAAI,OAAJvB,EAAA,OAAAsB,KAAIC,KAAAvB,EAAA,MAAjDuB,KAAA,oBAAC,cAAD;GAAc,MAAA;GAAY,OAAAD;EAAmB,CAAA,GAAItB,EAAA,KAAAsB,IAAAtB,EAAA,KAAAuB,KAAjDA;CAAiD;CAG1D,IAAI,CAACX,SAAO;EAAA,IAAAU;EAAA,AAAAtB,EAAA,OAAAE,SAImDoB,KAAAtB,EAAA,MAAzBsB,WAAMpB,OAAMsB,SAAU,CAAC,CAAC,GAACxB,EAAA,KAAAE,QAAAF,EAAA,KAAAsB;EAAA,IAAAC;EAAA,AAAAvB,EAAA,OAAAG,IAAwBoB,KAAAvB,EAAA,MAAhBuB,KAAApB,EAAE,aAAa,GAACH,EAAA,KAAAG,GAAAH,EAAA,KAAAuB;EAAA,IAAAE;EAAA,AAAAzB,EAAA,QAAAsB,MAAAtB,EAAA,QAAAuB,MADjFE,KAAA,oBAAC,MAAD;GAAM,cAAA;GAAkB,MAAA;GAAgB,SAAA;GACtC,UAAA,oBAAC,UAAD;IAAa,MAAA;IAAiB,SAAAH;IAAiC,MAAAC;GAAgB,CAAA;EAD5E,CAAA,GAEEvB,EAAA,MAAAsB,IAAAtB,EAAA,MAAAuB,IAAAvB,EAAA,MAAAyB,MAAAA,KAAAzB,EAAA;EAAA,IAAA0B;EAAA,AAAA1B,EAAA,QAAAG,IAK6BuB,KAAA1B,EAAA,OAA3B0B,KAAAvB,EAAE,wBAAwB,GAACH,EAAA,MAAAG,GAAAH,EAAA,MAAA0B;EAAA,IAAAC;EAAA,AAAA3B,EAAA,QAAA0B,KACvBC,KAAA3B,EAAA,OAFP2B,KAAA,oBAAC,MAAD;GAAY,MAAA;GAAU,QAAA;GACnBD,UAAAA;EADE,CAAA,GAEE1B,EAAA,MAAA0B,IAAA1B,EAAA,MAAA2B;EAAA,IAAAC;EAAA,AAAA5B,EAAA,QAAAG,IAE6ByB,KAAA5B,EAAA,OAAjC4B,KAAAzB,EAAE,8BAA8B,GAACH,EAAA,MAAAG,GAAAH,EAAA,MAAA4B;EAAA,IAAAC;EAAA,AAAA7B,EAAA,QAAA4B,KAC7BC,KAAA7B,EAAA,OAFP6B,KAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GACfD,UAAAA;EADE,CAAA,GAEE5B,EAAA,MAAA4B,IAAA5B,EAAA,MAAA6B;EAAA,IAAAC;EAAA,AAAA9B,EAAA,QAAA2B,MAAA3B,EAAA,QAAA6B,MARbC,KAAA,oBAAC,KAAD;GAAc,SAAA;GACZ,UAAA,oBAAC,MAAD;IAAM,QAAA;IAAgB,SAAA;IAAW,QAAA;IAC/B,UAAA,qBAAC,OAAD;KAAc,OAAA;KAAd,UAAA,CACEH,IAGAE,EAJI;;GADH,CAAA;EADH,CAAA,GAWE7B,EAAA,MAAA2B,IAAA3B,EAAA,MAAA6B,IAAA7B,EAAA,MAAA8B,MAAAA,KAAA9B,EAAA;EAAA,IAAA+B;EACD,OADC/B,EAAA,QAAAyB,MAAAzB,EAAA,QAAA8B,MAfRC,KAAA,qBAAC,MAAD;GAAgB,WAAA;GAAe,MAAA;GAAU,QAAA;GAAzC,UAAA,CACEN,IAGAK,EAJG;MAgBE9B,EAAA,MAAAyB,IAAAzB,EAAA,MAAA8B,IAAA9B,EAAA,MAAA+B,MAAAA,KAAA/B,EAAA,KAhBP+B;CAgBO;CAIX,IAAAC,cAAoBvC,sBAAsBmB,OAAO,GACjDqB,iBAAuBzC,yBAAyBoB,QAAOsB,UAAW,GAACZ;CAAA,AAAAtB,EAAA,QAAAE,SAKNoB,KAAAtB,EAAA,OAAzBsB,WAAMpB,OAAMsB,SAAU,CAAC,CAAC,GAACxB,EAAA,MAAAE,QAAAF,EAAA,MAAAsB;CAAA,IAAAC;CAAA,AAAAvB,EAAA,QAAAG,IAAwBoB,KAAAvB,EAAA,OAAhBuB,KAAApB,EAAE,aAAa,GAACH,EAAA,MAAAG,GAAAH,EAAA,MAAAuB;CAAA,IAAAE;CAAA,AAAAzB,EAAA,QAAAsB,MAAAtB,EAAA,QAAAuB,MADjFE,KAAA,oBAAC,MAAD;EAAM,cAAA;EAAkB,MAAA;EAAgB,SAAA;EACtC,UAAA,oBAAC,UAAD;GAAa,MAAA;GAAiB,SAAAH;GAAiC,MAAAC;EAAgB,CAAA;CAD5E,CAAA,GAEEvB,EAAA,MAAAsB,IAAAtB,EAAA,MAAAuB,IAAAvB,EAAA,MAAAyB,MAAAA,KAAAzB,EAAA;CAAA,IAAA0B;CAAA,AAAA1B,EAAA,QAAAmC,OAAAC,IAAA,2BAAA,KACkEV,KAAA,EAAAW,WAAY,EAAC,GAACrC,EAAA,MAAA0B,MAAAA,KAAA1B,EAAA;CAAA,IAAA2B;CAAA,AAAA3B,EAAA,QAAAY,UAOnCe,KAAA3B,EAAA,OAAtC2B,KAAA,oBAAC,kBAAD,EAA2Bf,QAAO,CAAA,GAAIZ,EAAA,MAAAY,SAAAZ,EAAA,MAAA2B;CAAA,IAAAC;CAAA,AAAA5B,EAAA,QAAAY,UAEXgB,KAAA5B,EAAA,OAAxB4B,KAAAjC,gBAAgBiB,OAAO,GAACZ,EAAA,MAAAY,SAAAZ,EAAA,MAAA4B;CAAA,IAAAC;CAAA,AAAA7B,EAAA,QAAA4B,KACpBC,KAAA7B,EAAA,OAFP6B,KAAA,oBAAC,MAAD;EAAS,IAAA;EAAW,MAAA;EAAU,QAAA;EAC3BD,UAAAA;CADE,CAAA,GAEE5B,EAAA,MAAA4B,IAAA5B,EAAA,MAAA6B;CAAA,IAAAC;CAAA,AAAA9B,EAAA,QAAA2B,MAAA3B,EAAA,QAAA6B,MAJTC,KAAA,qBAAC,MAAD;EAAY,OAAA;EAAc,KAAA;EAA1B,UAAA,CACEH,IACAE,EAFG;KAKE7B,EAAA,MAAA2B,IAAA3B,EAAA,MAAA6B,IAAA7B,EAAA,MAAA8B,MAAAA,KAAA9B,EAAA;CAAA,IAAA+B;CAAA,AAAA/B,EAAA,QAAAgC,eAAAhC,EAAA,QAAAG,KAEJ4B,KAAAC,eAAe7B,EAAE,uBAAuB,GAACH,EAAA,MAAAgC,aAAAhC,EAAA,MAAAG,GAAAH,EAAA,MAAA+B,MAAAA,KAAA/B,EAAA;CAAA,IAAAsC;CAAA,AAAAtC,EAAA,QAAA+B,KACrCO,MAAAtC,EAAA,OAFPsC,MAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EACfP,UAAAA;CADE,CAAA,GAEE/B,EAAA,MAAA+B,IAAA/B,EAAA,MAAAsC;CAAA,IAAAC;CAAA,AAAAvC,EAAA,QAAAsC,OAAAtC,EAAA,QAAA8B,MAVXS,MAAA,oBAAC,MAAD;EAAY,OAAA;EAAkB,KAAA;EAAW,SAAA;EACvC,UAAA,qBAAC,OAAD;GAAc,OAAA;GAAd,UAAA,CACET,IAMAQ,GAPI;;CADH,CAAA,GAYEtC,EAAA,MAAAsC,KAAAtC,EAAA,MAAA8B,IAAA9B,EAAA,MAAAuC,OAAAA,MAAAvC,EAAA;CAAA,IAAAwC;CAAA,AAAAxC,EAAA,QAAAG,IAKmCqC,MAAAxC,EAAA,OAAnCwC,MAAArC,EAAE,gCAAgC,GAACH,EAAA,MAAAG,GAAAH,EAAA,MAAAwC;CAAA,IAAAC;CAAA,AAAAzC,EAAA,QAAAwC,MAC/BC,MAAAzC,EAAA,OAFPyC,MAAA,oBAAC,MAAD;EAAY,MAAA;EAAU,QAAA;EACnBD,UAAAA;CADE,CAAA,GAEExC,EAAA,MAAAwC,KAAAxC,EAAA,MAAAyC;CAAA,IAAAC;CAAA,AAAA1C,EAAA,QAAAiC,kBAAAjC,EAAA,QAAAG,KAEJuC,MAAAT,kBAAkB9B,EAAE,8BAA8B,GAACH,EAAA,MAAAiC,gBAAAjC,EAAA,MAAAG,GAAAH,EAAA,MAAA0C,OAAAA,MAAA1C,EAAA;CAAA,IAAA2C;CAAA,AAAA3C,EAAA,QAAA0C,MAC/CC,MAAA3C,EAAA,OAFP2C,MAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EACfD,UAAAA;CADE,CAAA,GAEE1C,EAAA,MAAA0C,KAAA1C,EAAA,MAAA2C;CAAA,IAAAC;CAAA,AAAA5C,EAAA,QAAAyC,OAAAzC,EAAA,QAAA2C,OAPXC,MAAA,oBAAC,KAAD;EAAiB,YAAA;EACf,UAAA,qBAAC,OAAD;GAAc,OAAA;GAAd,UAAA,CACEH,KAGAE,GAJI;;CADJ,CAAA,GASE3C,EAAA,MAAAyC,KAAAzC,EAAA,MAAA2C,KAAA3C,EAAA,MAAA4C,OAAAA,MAAA5C,EAAA;CAAA,IAAA6C;CAAA,AAAA7C,EAAA,QAAAuC,OAAAvC,EAAA,QAAA4C,OA1BZC,MAAA,oBAAC,WAAD;EAAgB,MAAA;EAAc,OAAA;EAC5B,UAAA,oBAAC,MAAD;GAAgB,WAAA;GAAmB,UAAA;GACjC,UAAA,qBAAC,MAAD;IAAgB,UAAA;IAAhB,UAAA,CACEN,KAcAK,GAfG;;EADF,CAAA;CADG,CAAA,GA6BE5C,EAAA,MAAAuC,KAAAvC,EAAA,MAAA4C,KAAA5C,EAAA,MAAA6C,OAAAA,MAAA7C,EAAA;CAAA,IAAA8C;CAAA,AAAA9C,EAAA,QAAAmC,OAAAC,IAAA,2BAAA,KAC+CU,MAAA,EAAAT,WAAY,EAAC,GAACrC,EAAA,MAAA8C,OAAAA,MAAA9C,EAAA;CAAA,IAAA+C;CAAA,AAAA/C,EAAA,QAAAc,oBAAAd,EAAA,QAAAG,KAAAH,EAAA,QAAAqB,aAAArB,EAAA,QAAAY,WAAAZ,EAAA,QAAAkB,yBAAzE6B,MAAA,oBAAC,MAAD;EAAgB,WAAA;EAAe,MAAA;EAAY,UAAA;EAAgB,OAAAD;EACxD5B,UAAAA,wBACC,oBAAC,KAAD;GAAc,SAAA;GACZ,UAAA,oBAAC,MAAD;IAAM,OAAA;IAAY,MAAA;IACff,UAAAA,EAAE,wBAAwB;GADxB,CAAA;EADH,CAAA,IAMJ,oBAAC,uBAAD;GACWW,SAAAA;GACHO,MAAAA;GACK,WAAA3B,aAAakB,QAAOO,GAAI;EAAC,CAAA;CAXrC,CAAA,GAcEnB,EAAA,MAAAc,kBAAAd,EAAA,MAAAG,GAAAH,EAAA,MAAAqB,WAAArB,EAAA,MAAAY,SAAAZ,EAAA,MAAAkB,uBAAAlB,EAAA,MAAA+C,OAAAA,MAAA/C,EAAA;CAAA,IAAAgD;CAAA,AAAAhD,EAAA,QAAA6C,OAAA7C,EAAA,QAAA+C,OA7CTC,MAAA,qBAAC,MAAD;EAAgB,WAAA;EAAe,MAAA;EAAU,QAAA;EAAgB,UAAA;EAAgB,OAAAtB;EAAzE,UAAA,CACEmB,KA8BAE,GA/BG;KA8CE/C,EAAA,MAAA6C,KAAA7C,EAAA,MAAA+C,KAAA/C,EAAA,MAAAgD,OAAAA,MAAAhD,EAAA;CAAA,IAAAiD;CAAA,AAAAjD,EAAA,QAAAmC,OAAAC,IAAA,2BAAA,KAEWa,YAAM5C,kBAAkB,EAAI,GAACL,EAAA,MAAAiD,OAAAA,MAAAjD,EAAA;CAAA,IAAAkD;CAAA,AAAAlD,EAAA,QAAAc,oBAAAd,EAAA,QAAAqB,UAAA8B,UAAAnD,EAAA,QAAAY,WAD/CsC,MAAA,oBAAC,qBAAD;EACkB,gBAAAD;EACD,eAAA5B,UAAS8B;EACNrC;EACTF;CAAO,CAAA,GAChBZ,EAAA,MAAAc,kBAAAd,EAAA,MAAAqB,UAAA8B,QAAAnD,EAAA,MAAAY,SAAAZ,EAAA,MAAAkD,OAAAA,MAAAlD,EAAA;CAAA,IAAAoD;CAAA,AAAApD,EAAA,QAAAI,kBAAAJ,EAAA,QAAAY,WACDwC,MAAAhD,kBACC,oBAAC,mBAAD;EACY,gBAAMC,kBAAkB,EAAK;EAC7B,gBAAMA,kBAAkB,EAAK;EAC9BO;CAAO,CAAA,GAEnBZ,EAAA,MAAAI,gBAAAJ,EAAA,MAAAY,SAAAZ,EAAA,MAAAoD,OAAAA,MAAApD,EAAA;CAAA,IAAAqD;CACI,OADJrD,EAAA,QAAAgD,OAAAhD,EAAA,QAAAkD,OAAAlD,EAAA,QAAAoD,OAAApD,EAAA,QAAAyB,MA/DH4B,MAAA,qBAAC,MAAD;EAAgB,WAAA;EAAe,MAAA;EAAU,QAAA;EAAgB,UAAA;EAAzD,UAAA;GACE5B;GAGAuB;GA+CAE;GAMCE;EAzDE;KAgEEpD,EAAA,MAAAgD,KAAAhD,EAAA,MAAAkD,KAAAlD,EAAA,MAAAoD,KAAApD,EAAA,MAAAyB,IAAAzB,EAAA,MAAAqD,OAAAA,MAAArD,EAAA,KAhEPqD;AAgEO;AC7HX,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,OACGqC,cAAmE;EAClEb,MAAMc,OAAOC,YACXzB,mBAAmBd,KAAKiB,sBAAsB,CAC5CA,mBACAoB,WAAWpB,sBAAsB,CAAC,CACnC,CACH;EACAS,SAAS;EACTC,OAAO;CACT,EACF,GACAzB,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;ACzJjD,SAAOwC,kBAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAA2B,EAAAC,eAAAC,YAAAJ,IAOhC,EAAAK,MAAYb,eAAeG,uBAAuB,GAACW;CAAA,AAAAL,EAAA,OAAAG,UACNE,KAAAL,EAAA,MAAxBK,KAAAR,gBAAgBM,OAAO,GAACH,EAAA,KAAAG,SAAAH,EAAA,KAAAK;CAA7C,IAAAC,eAAqBD,IAAwBE;CAAA,AAAAP,EAAA,OAAAE,iBAAAF,EAAA,OAAAM,gBAULC,KAAA;EAAAL;EAAAI;CAA4B,GAACN,EAAA,KAAAE,eAAAF,EAAA,KAAAM,cAAAN,EAAA,KAAAO,MAAAA,KAAAP,EAAA;CATrE,IAAA,EAAAQ,gBAAAC,uBAAAC,yBAAAC,qBAAAC,cAAAC,oBAAAC,YAAAR,cAAAS,uBASItB,uBAAuBU,QAAOa,KAAMT,EAA6B,GAACU;CAAA,AAAAjB,EAAA,OAAAc,aAKQG,KAAAjB,EAAA,MAAhEiB,KAAA,oBAAC,mBAAD;EAA6BH,UAAAA;EAAqBA,SAAAA;CAAU,CAAA,GAAId,EAAA,KAAAc,YAAAd,EAAA,KAAAiB;CAAA,IAAAC;CAAA,AAAAlB,EAAA,OAAAG,QAAAa,MACxBE,KAAAlB,EAAA,MAAzBkB,KAAAtB,aAAaO,QAAOa,GAAI,GAAChB,EAAA,KAAAG,QAAAa,KAAAhB,EAAA,KAAAkB;CAA5C,IAAAC,KAAA,mBAAmBD,MAA2BE;CAAA,AAAApB,EAAA,OAAAI,IAMHgB,KAAApB,EAAA,OAAnCoB,KAAAhB,EAAE,gCAAgC,GAACJ,EAAA,KAAAI,GAAAJ,EAAA,MAAAoB;CAAA,IAAAC;CAAA,AAAArB,EAAA,QAAAS,wBAEyCY,KAAArB,EAAA,OAApEqB,KAAAZ,wBAAA,EAAAa,SAAkCb,sBAAiC,IAAnEc,KAAAA,GAAoEvB,EAAA,MAAAS,uBAAAT,EAAA,MAAAqB;CAAA,IAAAG;CAAA,AAAAxB,EAAA,QAAAQ,kBAAAR,EAAA,QAAAY,gBAAAZ,EAAA,QAAAoB,MAAApB,EAAA,QAAAqB,MANtFG,KAAA,oBAAC,MAAD,EAAA,UACE,oBAAC,YAAD;EACYhB,UAAAA;EACDI,SAAAA;EACH,MAAAQ;EACD,MAAA;EACS,cAAAC;CAAoE,CAAA,EANjF,CAAA,GAQErB,EAAA,MAAAQ,gBAAAR,EAAA,MAAAY,cAAAZ,EAAA,MAAAoB,IAAApB,EAAA,MAAAqB,IAAArB,EAAA,MAAAwB,MAAAA,KAAAxB,EAAA;CAAA,IAAAyB;CAAA,AAAAzB,EAAA,QAAA0B,OAAAC,IAAA,2BAAA,KAEAF,KAAA;EAAAG,WAAY;EAAYC,QAAU;CAAI,GAAC7B,EAAA,MAAAyB,MAAAA,KAAAzB,EAAA;CAAA,IAAA8B;CAAA,AAAA9B,EAAA,QAAAiB,MAAAjB,EAAA,QAAAmB,MAAAnB,EAAA,QAAAwB,MAdlDM,MAAA,oBAAC,cAAD;EACU,QAAAb;EACJ,IAAAE;EAEF,MAAAK;EAUO,SAAAC;CAAuC,CAAA,GAChDzB,EAAA,MAAAiB,IAAAjB,EAAA,MAAAmB,IAAAnB,EAAA,MAAAwB,IAAAxB,EAAA,MAAA8B,OAAAA,MAAA9B,EAAA;CAAA,IAAA+B;CAAA,AAAA/B,EAAA,QAAAe,sBAAAf,EAAA,QAAAU,2BAAAV,EAAA,QAAAW,uBAAAX,EAAA,QAAAa,sBAAAb,EAAA,QAAAc,cACDiB,MAAAlB,sBACC,oBAAC,qBAAD;EACcC;EACHJ,SAAAA;EACEC,WAAAA;EACGI,cAAAA;CAAkB,CAAA,GAEnCf,EAAA,MAAAe,oBAAAf,EAAA,MAAAU,yBAAAV,EAAA,MAAAW,qBAAAX,EAAA,MAAAa,oBAAAb,EAAA,MAAAc,YAAAd,EAAA,MAAA+B,OAAAA,MAAA/B,EAAA;CAAA,IAAAgC;CACA,OADAhC,EAAA,QAAA8B,OAAA9B,EAAA,QAAA+B,OAxBHC,MAAA,qBAAA,YAAA,EAAA,UAAA,CACEF,KAgBCC,GAOA,EAAA,CAAA,GACA/B,EAAA,MAAA8B,KAAA9B,EAAA,MAAA+B,KAAA/B,EAAA,MAAAgC,OAAAA,MAAAhC,EAAA,KAzBHgC;AAyBG;;;;;ACtDP,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,MAS3B,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,OAAAO,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,GCnBLyB,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,MAAY7B,eAAeK,uBAAuB,GAACgB;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,mBAS5CN,KAAAV,EAAA,MALFU,KAAA7B,WAAW,SAAAoC,qBAAAC,WAAAC,KAAA;EAAA,OAIF,oBAAC,WAAD;GAAU,GAAKD;GAAgBC;GAAY,OAAA,EAAAC,WAAYJ,iBAAgB;EAAC,CAAA;CAAI,CACpF,GAAChB,EAAA,KAAAgB,kBAAAhB,EAAA,KAAAU;CAPN,IAAAW,cAEIX;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,IAAAsB;EAAA,AAAAtB,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KAHTc,KAAA,qBAAC,OAAD;GAAc,OAAA;GAAd,UAAA,CACEX,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,KAAAsB,MAAAA,KAAAtB,EAAA;EAAA,IAAAuB;EACJ,OADIvB,EAAA,OAAAE,YACJqB,KAAAvB,EAAA,MATNuB,KAAA,oBAAC,KAAD;GAAI,GAAKrB;GAAiB,MAAA;GAAgB,aAAA;GAAiB,cAAA;GAAa,UAAA;GAAU,QAAA;GAChFoB,UAAAA;EADE,CAAA,GASEtB,EAAA,KAAAE,WAAAF,EAAA,KAAAuB,KATNA;CASM;CAET,IAAAZ;CAAA,AAAAX,EAAA,OAAAa,QAAAW,aAEkEb,KAAAX,EAAA,MAA5CW,KAAAjB,yBAAyBmB,QAAOW,UAAW,GAACxB,EAAA,KAAAa,QAAAW,YAAAxB,EAAA,KAAAW;CAAnE,IAAAc,iBAAuBd,IAA4CW;CAAA,AAAAtB,EAAA,QAAAa,UAKvBS,KAAAtB,EAAA,OAAtCsB,KAAA,oBAAC,kBAAD,EAA2BT,QAAO,CAAA,GAAIb,EAAA,MAAAa,SAAAb,EAAA,MAAAsB;CAAA,IAAAC;CAAA,AAAAvB,EAAA,QAAAa,UAKLU,KAAAvB,EAAA,OAAxBuB,KAAA5B,gBAAgBkB,OAAO,GAACb,EAAA,MAAAa,SAAAb,EAAA,MAAAuB;CAAA,IAAAG;CAAA,AAAA1B,EAAA,QAAAuB,KACpBG,KAAA1B,EAAA,OAFP0B,KAAA,oBAAC,MAAD;EAAY,MAAA;EAAU,QAAA;EACnBH,UAAAA;CADE,CAAA,GAEEvB,EAAA,MAAAuB,IAAAvB,EAAA,MAAA0B;CAAA,IAAAC;CAAA,AAAA3B,EAAA,QAAAyB,kBAAAzB,EAAA,QAAAc,KAEJa,KAAAF,kBAAkBX,EAAE,8BAA8B,GAACd,EAAA,MAAAyB,gBAAAzB,EAAA,MAAAc,GAAAd,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA;CAAA,IAAA4B;CAAA,AAAA5B,EAAA,QAAA2B,KAC/CC,KAAA5B,EAAA,OAFP4B,KAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EACfD,UAAAA;CADE,CAAA,GAEE3B,EAAA,MAAA2B,IAAA3B,EAAA,MAAA4B;CAAA,IAAAC;CAAA,AAAA7B,EAAA,QAAA0B,MAAA1B,EAAA,QAAA4B,MAPXC,KAAA,oBAAC,MAAD;EAAY,OAAA;EAAc,KAAA;EACxB,UAAA,qBAAC,OAAD;GAAa,MAAA;GAAU,OAAA;GAAvB,UAAA,CACEH,IAGAE,EAJI;;CADH,CAAA,GASE5B,EAAA,MAAA0B,IAAA1B,EAAA,MAAA4B,IAAA5B,EAAA,MAAA6B,MAAAA,KAAA7B,EAAA;CAAA,IAAA8B;CAAA,AAAA9B,EAAA,QAAAqB,eAAArB,EAAA,QAAA6B,MAVTC,MAAA,oBAAC,MAAD;EAAUT,IAAAA;EAAqB,WAAA;EAAU,MAAA;EAAY,SAAA;EAAW,QAAA;EAAQ,MAAA;EACtEQ,UAAAA;CADG,CAAA,GAWE7B,EAAA,MAAAqB,aAAArB,EAAA,MAAA6B,IAAA7B,EAAA,MAAA8B,OAAAA,MAAA9B,EAAA;CAAA,IAAA+B;CAAA,AAAA/B,EAAA,QAAA8B,OAAA9B,EAAA,QAAAsB,MAbTS,MAAA,qBAAC,MAAD;EAAY,OAAA;EAAc,KAAA;EAA1B,UAAA,CACET,IACAQ,GAFG;KAcE9B,EAAA,MAAA8B,KAAA9B,EAAA,MAAAsB,IAAAtB,EAAA,MAAA+B,OAAAA,MAAA/B,EAAA;CAAA,IAAAgC;CACH,OADGhC,EAAA,QAAAE,aAAAF,EAAA,QAAA+B,OAfTC,MAAA,oBAAC,KAAD;EAAI,GAAK9B;EAAiB,MAAA;EAAgB,aAAA;EAAiB,cAAA;EAAa,UAAA;EAAU,QAAA;EAChF6B,UAAAA;CADE,CAAA,GAgBE/B,EAAA,MAAAE,WAAAF,EAAA,MAAA+B,KAAA/B,EAAA,MAAAgC,OAAAA,MAAAhC,EAAA,KAhBNgC;AAgBM;AAIV,SAAgBC,2BACdnB,GACwB;CACxB,OAAO,CACL;EACEoB,IAAI;EACJC,SAAS;EACT1B,OAAO;EACP2B,OAAO,EAACC,UAAU,+BAA8B;EAChDC,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;EACEqB,IAAI;EACJC,SAAS;EACT1B,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;ACjHA,SAAO0E,mBAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAC,MAAYlB,eAAeK,uBAAuB,GAClDc,SAAerB,UAAU,GACzB,EAAAsB,MAAAC,UAAAC,OAAAC,YAAyCjB,eAAe,GACxD,CAAAkB,oBAAAC,yBAAoD5B,SAAgC,IAAI,GACxF,CAAA6B,aAAAC,kBAAsC9B,SAAS,EAAE,GACjD,CAAA+B,2BAAAC,gCAAkEhC,SAAS,EAAK,GAACiC;CAAA,AAAAd,EAAA,OAAAe,OAAAC,IAAA,2BAAA,KAEzCF,WAAA;EACtCD,6BAA6B,EAAI;CAAC,GACnCb,EAAA,KAAAc,MAAAA,KAAAd,EAAA;CAFD,IAAAiB,sBAA4BH,IAEtBI;CAAA,AAAAlB,EAAA,OAAAG,SAMHe,KAAAlB,EAAA,MAHDkB,MAAAC,qBAAA;EAEEhB,AADAU,6BAA6B,EAAK,GAClCV,OAAMiB,SAAU,EAAAC,WAAY5B,aAAa0B,gBAAgB,EAAC,CAAC;CAAC,GAC7DnB,EAAA,KAAAG,QAAAH,EAAA,KAAAkB;CAJH,IAAAI,wBAA8BJ,IAM7BK;CAAA,AAAAvB,EAAA,OAAAE,IAE6DqB,KAAAvB,EAAA,MAA7BuB,KAAA1B,2BAA2BK,CAAC,GAACF,EAAA,KAAAE,GAAAF,EAAA,KAAAuB;CAA9D,IAAAC,aAAiCD,IACjCE,mBAAyBC,OAUxBC;CAAA,AAAA3B,EAAA,OAAAK,WAEgDsB,KAAA3B,EAAA,MAAd2B,KAAAtB,YAAA,CAAA,GAAcL,EAAA,KAAAK,UAAAL,EAAA,KAAA2B;CAAjD,IAAAC,eAAmCD,IAEnC,EAAAvB,MAAAyB,gBAAAvB,OAAAwB,wBAA2D1C,0BAA0B,GAAC2C;CAAA,IAAA/B,EAAA,OAAA6B,kBAAA7B,EAAA,OAAA8B,uBAAA9B,EAAA,OAAAU,eAAAV,EAAA,QAAA4B,cAAA;EAAA,IAAAI;EASjFhC,AATiFA,EAAA,QAAA6B,kBAAA7B,EAAA,QAAA8B,uBAKhFE,MAAAC,aAA4B;GAAA,GACvBA;GAAOC,eACKL,iBAAiBI,QAAOE,SAAUL,sBAAA,OAAAM,KAAAA;EACnD,IAAEpC,EAAA,MAAA6B,gBAAA7B,EAAA,MAAA8B,qBAAA9B,EAAA,MAAAgC,MAAAA,KAAAhC,EAAA,KAJJ+B,KAAAvC,wBAAwBoC,cAAclB,WAAW,CAAC,CAAA2B,IAChDL,EAIF,GAAChC,EAAA,KAAA6B,gBAAA7B,EAAA,KAAA8B,qBAAA9B,EAAA,KAAAU,aAAAV,EAAA,MAAA4B,cAAA5B,EAAA,MAAA+B;CAAA,OAAAA,KAAA/B,EAAA;CAPL,IAAAsC,mBAEIP,IASJQ,cAAoBX,aAAYY,SAAU,GAACR;CAAA,AAAAhC,EAAA,QAAAE,IAQI8B,KAAAhC,EAAA,OAAnCgC,KAAA9B,EAAE,gCAAgC,GAACF,EAAA,MAAAE,GAAAF,EAAA,MAAAgC;CAAA,IAAAS;CAAA,AAAAzC,EAAA,QAAAY,6BAAAZ,EAAA,QAAAgC,MAJ3CS,KAAA,oBAAC,UAAD;EACY7B,UAAAA;EACJ1C,MAAAA;EACG+C,SAAAA;EACH,MAAAe;CAAmC,CAAA,GACzChC,EAAA,MAAAY,2BAAAZ,EAAA,MAAAgC,IAAAhC,EAAA,MAAAyC,MAAAA,KAAAzC,EAAA;CAPN,IAAA0C,sBAEID,IAQHE;CAAA,AAAA3C,EAAA,QAAA0C,uBAAA1C,EAAA,QAAAM,SAAAN,EAAA,QAAAuC,eAAAvC,EAAA,QAAAE,KAEmCyC,WAC9BrC,SAAA,CAAUiC,cAEV,oBAAC,MAAD;EAAY,OAAA;EAAmB,WAAA;EAAc,KAAA;EAAW,SAAA;EAAkB,SAAA;EACxE,UAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GACfrC,UAAAA,EAAE,gBAAgB;EADhB,CAAA;CADF,CAAA,IAQF,oBAAC,oBAAD,EAAyCwC,oBAAmB,CAAA,GACpE1C,EAAA,MAAA0C,qBAAA1C,EAAA,MAAAM,OAAAN,EAAA,MAAAuC,aAAAvC,EAAA,MAAAE,GAAAF,EAAA,MAAA2C,MAAAA,KAAA3C,EAAA;CAZD,IAAA4C,kBAAwBD,IAYwBE;CAAA,AAAA7C,EAAA,QAAAE,IAWZ2C,KAAA7C,EAAA,OAAnB6C,KAAA3C,EAAE,gBAAgB,GAACF,EAAA,MAAAE,GAAAF,EAAA,MAAA6C;CAAA,IAAAC;CAAA,AAAA9C,EAAA,QAAA6C,KACfC,KAAA9C,EAAA,OAFP8C,KAAA,oBAAC,MAAD;EAAS,IAAA;EAAW,MAAA;EAAU,QAAA;EAC3BD,UAAAA;CADE,CAAA,GAEE7C,EAAA,MAAA6C,IAAA7C,EAAA,MAAA8C;CAAA,IAAAC;CAAA,AAAA/C,EAAA,QAAAE,IAEqB6C,MAAA/C,EAAA,OAAzB+C,MAAA7C,EAAE,sBAAsB,GAACF,EAAA,MAAAE,GAAAF,EAAA,MAAA+C;CAAA,IAAAC;CAAA,AAAAhD,EAAA,QAAA+C,MACrBC,MAAAhD,EAAA,OAFPgD,MAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EACfD,UAAAA;CADE,CAAA,GAEE/C,EAAA,MAAA+C,KAAA/C,EAAA,MAAAgD;CAAA,IAAAC;CAAA,AAAAjD,EAAA,QAAAgD,OAAAhD,EAAA,QAAA8C,MANTG,MAAA,qBAAC,OAAD;EAAc,OAAA;EAAd,UAAA,CACEH,IAGAE,GAJI;KAOEhD,EAAA,MAAAgD,KAAAhD,EAAA,MAAA8C,IAAA9C,EAAA,MAAAiD,OAAAA,MAAAjD,EAAA;CAAA,IAAAkD;CAAA,AAAAlD,EAAA,QAAA0C,uBAAA1C,EAAA,QAAAiD,OATZC,MAAA,oBAAC,MAAD;EAAW,MAAA;EAAiB,UAAA;EAC1B,UAAA,qBAAC,MAAD;GAAY,OAAA;GAAkB,KAAA;GAAW,SAAA;GAAzC,UAAA,CACED,KAQCP,mBATE;;CADF,CAAA,GAYE1C,EAAA,MAAA0C,qBAAA1C,EAAA,MAAAiD,KAAAjD,EAAA,MAAAkD,OAAAA,MAAAlD,EAAA;CAIU,IAAAmD,MAAA,CAAC,CAACzC,aAAW0C,KAAAC;CAAA,AAAArD,EAAA,QAAAe,OAAAC,IAAA,2BAAA,KAGhBoC,OAAAE,UAAW3C,eAAe2C,MAAKC,cAAcC,KAAM,GACpDH,YAAM1C,eAAe,EAAE,GAACX,EAAA,MAAAoD,KAAApD,EAAA,MAAAqD,QAAAD,MAAApD,EAAA,KAAAqD,MAAArD,EAAA;CAAA,IAAAyD;CAAA,AAAAzD,EAAA,QAAAE,IACYuD,MAAAzD,EAAA,OAAhCyD,MAAAvD,EAAE,6BAA6B,GAACF,EAAA,MAAAE,GAAAF,EAAA,MAAAyD;CAAA,IAAAC;CAAA,AAAA1D,EAAA,QAAAU,eAAAV,EAAA,QAAAmD,OAAAnD,EAAA,QAAAyD,OAPjDC,MAAA,oBAAC,KAAD;EAAU,MAAA;EAAsB,eAAA;EAAe,YAAA;EAC7C,UAAA,oBAAC,WAAD;GACe,aAAAP;GACH,UAAA;GACJhF,MAAAA;GACI,UAAAiF;GACD,SAAAC;GACI,aAAAI;GACL,QAAA;GACD/C,OAAAA;EAAW,CAAA;CATlB,CAAA,GAWEV,EAAA,MAAAU,aAAAV,EAAA,MAAAmD,KAAAnD,EAAA,MAAAyD,KAAAzD,EAAA,MAAA0D,OAAAA,MAAA1D,EAAA;CAAA,IAAA2D;CAAA,AAAA3D,EAAA,QAAAM,SAAAN,EAAA,QAAAE,KAELyD,MAAArD,SACC,oBAAC,MAAD;EAAW,MAAA;EAAgB,SAAA;EAAQ,MAAA;EACjC,UAAA,oBAAC,MAAD;GAAY,MAAA;GAAIJ,UAAAA,EAAE,gBAAgB;EAA7B,CAAA;CADF,CAAA,GAGNF,EAAA,MAAAM,OAAAN,EAAA,MAAAE,GAAAF,EAAA,MAAA2D,OAAAA,MAAA3D,EAAA;CAAA,IAAA4D;CAAA,AAAA5D,EAAA,QAAAkD,OAAAlD,EAAA,QAAA0D,OAAA1D,EAAA,QAAA2D,OAjCLC,MAAA,oBAAC,WAAD;EAAgB,MAAA;EAAc,OAAA;EAC5B,UAAA,qBAAC,MAAD;GAAgB,WAAA;GAAmB,UAAA;GAAnC,UAAA;IACEV;IAcAQ;IAaCC;GA5BE;;CADG,CAAA,GAmCE3D,EAAA,MAAAkD,KAAAlD,EAAA,MAAA0D,KAAA1D,EAAA,MAAA2D,KAAA3D,EAAA,MAAA4D,OAAAA,MAAA5D,EAAA;CAAA,IAAA6D;CAAA,AAAA7D,EAAA,QAAAwB,cAAAxB,EAAA,QAAAsC,oBAAAtC,EAAA,QAAAO,WAAAP,EAAA,QAAAQ,sBAAAR,EAAA,QAAA4C,mBAGZiB,MAAA,oBAAC,KAAD;EAAW,MAAA;EAAY,UAAA;EAAYpD,KAAAA;EACjC,UAAA,oBAAC,OAAD;GACce;GACNc,MAAAA;GACMM,YAAAA;GACHrC;GACFT,OAAAA;GACK2B,YAAAA;GACQjB;EAAkB,CAAA;CARtC,CAAA,GAUER,EAAA,MAAAwB,YAAAxB,EAAA,MAAAsC,kBAAAtC,EAAA,MAAAO,SAAAP,EAAA,MAAAQ,oBAAAR,EAAA,MAAA4C,iBAAA5C,EAAA,MAAA6D,OAAAA,MAAA7D,EAAA;CAAA,IAAA8D;CAAA,AAAA9D,EAAA,QAAAsB,yBAAAtB,EAAA,QAAAY,6BAELkD,MAAAlD,6BACC,oBAAC,qBAAD;EACY,gBAAMC,6BAA6B,EAAK;EACxCS,UAAAA;CAAqB,CAAA,GAElCtB,EAAA,MAAAsB,uBAAAtB,EAAA,MAAAY,2BAAAZ,EAAA,MAAA8D,OAAAA,MAAA9D,EAAA;CAAA,IAAA+D;CACI,OADJ/D,EAAA,QAAA4D,OAAA5D,EAAA,QAAA6D,OAAA7D,EAAA,QAAA8D,OAzDHC,MAAA,qBAAC,MAAD;EAAgB,WAAA;EAAe,MAAA;EAAU,QAAA;EAAzC,UAAA;GAEEH;GAsCAC;GAYCC;EApDE;KA0DE9D,EAAA,MAAA4D,KAAA5D,EAAA,MAAA6D,KAAA7D,EAAA,MAAA8D,KAAA9D,EAAA,MAAA+D,OAAAA,MAAA/D,EAAA,KA1DP+D;AA0DO;AAvIJ,SAAArC,MAAAZ,IAAA;CAwBF,IAAA,EAAAkD,UAAAlD;CAAO,OACN,oBAAC,mBAAD;EACiB,eAACkD,MAAqB9B;EAC5B,SAAA8B;CAAsB,CAAA;AAC/B;AC5CR,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-BpDy94Yo.js","names":["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","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","PinIcon","PinFilledIcon","useCallback","Button","useTranslation","usePerspective","useSetVariant","variantsLocaleNamespace","SystemVariant","getVariantTitle","VariantPinButton","t0","$","_c","variant","t1","dataTestId","undefined","t","selectedVariant","setVariant","isPinned","_id","t2","variantTitle","t3","variantId","handlePinVariant","t4","t5","t6","t7","content","t8","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","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","Menu","useRouter","MenuButton","MenuItem","ContextMenuButton","useTranslation","DeleteVariantDialog","useVariantDeleteAction","variantsLocaleNamespace","SystemVariant","getVariantId","getVariantTitle","VariantDetailMenuButton","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","t8","t9","content","t10","t11","Symbol","for","placement","portal","t12","t13","t14","DiamondIcon","Card","Flex","Text","Button","RelativeTime","useTranslation","variantsLocaleNamespace","SystemVariant","VariantDetailMenuButton","VariantDetailFooter","t0","$","_c","openEditDialog","documentCount","documentsLoading","t1","variant","undefined","t","t2","Symbol","for","opacity","t3","t4","t5","_createdAt","t6","t7","t8","t9","t10","t11","SanityDocument","getDocumentPreviewTitle","document","title","name","trim","_id","ReleaseDocument","Badge","Box","Flex","IntentLink","useTranslation","ReleaseTitle","RELEASES_INTENT","getReleaseDocumentIdFromReleaseId","getReleaseIdFromReleaseDocumentId","isPublishedBundleId","isReleaseBundle","VariantDocumentVersion","getReleaseDocumentForVersion","version","releasesById","Map","releaseRef","get","bundleId","releaseDocumentId","undefined","ReleaseBundleChip","t0","$","_c","release","t","t1","_id","releaseId","t2","metadata","title","t3","t4","t5","displayTitle","id","StaticBundleChip","label","tone","VariantDocumentBundleChips","versions","Symbol","for","minWidth","width","overflowX","overflowY","documentId","map","Card","ForwardedRef","forwardRef","useMemo","IntentLink","PreviewLayoutKey","DocumentPreviewPresence","SanityDefaultPreview","useDocumentPresence","useDocumentPreviewValues","getPublishedId","isPublishedBundleId","DocumentInVariantGroup","VariantDocumentPreviewProps","row","layout","variantId","VariantDocumentPreviewLinkProps","React","ComponentPropsWithoutRef","publishedId","documentType","searchParams","Array","VariantDocumentPreviewLink","t0","ref","$","_c","linkProps","t1","id","type","t2","getVersionPerspectiveNavigation","bundleId","perspectiveStack","length","undefined","VariantDocumentPreview","groupId","documentPresence","document","_id","version","t3","previewPresence","t4","_type","documentId","isLoading","previewLoading","value","resolvedPreview","t5","t6","t7","ReleaseDocument","ErrorOutlineIcon","Box","Flex","Text","TFunction","memo","ToneIcon","Tooltip","RelativeTime","useSchema","SanityDefaultPreview","Headers","Column","DocumentInVariantGroup","getDocumentPreviewTitle","VariantDocumentBundleChips","VariantDocumentPreview","MemoVariantDocumentPreview","t0","$","_c","row","variantId","t1","prev","next","memoKey","MemoDocumentType","DocumentType","type","schema","get","schemaType","t2","title","t3","getVariantDocumentTableColumnDefs","t","releasesById","Map","id","hidden","width","sorting","sortTransform","groupId","style","minWidth","maxWidth","header","props","headerProps","cell","cellProps","datum","flex","overflow","isLoading","versions","document","_type","toLowerCase","_updatedAt","validationErrorCount","validation","filter","level","length","hasError","count","Card","CSSProperties","useMemo","useState","useTranslation","useActiveReleases","Table","Column","searchDocumentRelease","variantsLocaleNamespace","DocumentInVariantGroup","getVariantDocumentTableColumnDefs","TABLE_CARD_STYLE","height","overflow","filterDocuments","rows","searchTerm","trim","filter","document","VariantDocumentsTable","t0","$","_c","loading","t1","variantId","undefined","t","scrollContainerRef","setScrollContainerRef","data","releases","t2","Map","map","_temp","releasesById","t3","columnDefs","t4","Symbol","for","column","direction","t5","t6","release","_id","Box","Card","Container","Flex","Stack","Text","useMemo","useState","useRouter","Button","LoadingBlock","useTranslation","EditVariantDialog","useVariantDocuments","variantsLocaleNamespace","useAllVariants","VariantPinButton","decodeVariantIdFromRoute","getVariantConditionsText","getVariantDescription","getVariantId","getVariantTitle","groupVariantDocumentsByGroup","VariantDetailFooter","VariantDocumentsTable","VariantDetail","$","_c","router","t","editDialogOpen","setEditDialogOpen","variantIdRaw","state","variantId","undefined","byId","loading","variant","get","documentsLoading","results","variantDocuments","error","variantDocumentsError","_id","t0","tableRows","t1","t2","navigate","t3","t4","t5","t6","t7","t8","t9","description","conditionsText","conditions","Symbol","for","minHeight","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","length","t23","t24","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","Menu","MenuButton","MenuItem","ContextMenuButton","useTranslation","DeleteVariantDialog","useVariantDeleteAction","variantsLocaleNamespace","SystemVariant","getVariantId","getVariantTitle","VariantMenuButton","t0","$","_c","documentCount","variant","t","t1","variantTitle","t2","deleteDisabled","deleteDisabledTooltip","handleCloseDeleteDialog","handleConfirmDelete","handleDelete","isDeleteDialogOpen","isDeleting","dialogVariantTitle","_id","t3","t4","t5","t6","t7","content","undefined","t8","t9","Symbol","for","placement","portal","t10","t11","t12","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","ForwardedRef","forwardRef","HTMLProps","useMemo","StateLink","useTranslation","UseTranslationResponse","Headers","Column","VisibleColumn","variantsLocaleNamespace","SystemVariant","VariantPinButton","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","variantId","VariantLink","t4","t5","conditions","conditionsText","t6","t7","t8","t9","t10","t11","t12","variantsOverviewColumnDefs","id","sorting","style","minWidth","header","props","headerProps","cell","sortTransform","AddIcon","SearchIcon","Box","Card","Container","Flex","Stack","Text","TextInput","useCallback","useMemo","useState","useRouter","Button","useTranslation","Table","TableProps","CreateVariantDialog","useVariantsDocumentCounts","variantsLocaleNamespace","useAllVariants","SystemVariant","filterVariantsForSearch","getVariantId","VariantMenuButton","VariantsEmptyState","TableVariant","variantsOverviewColumnDefs","VARIANT_TABLE_ROW_ID","VariantsOverview","$","_c","t","router","data","variants","error","loading","scrollContainerRef","setScrollContainerRef","searchQuery","setSearchQuery","isCreateVariantDialogOpen","setIsCreateVariantDialogOpen","t0","Symbol","for","handleCreateVariant","t1","createdVariantId","navigate","variantId","handleOnCreateVariant","t2","columnDefs","renderRowActions","_temp","t3","variantsList","documentCounts","documentCountsError","t4","t5","variant","documentCount","_id","undefined","map","filteredVariants","hasVariants","length","t6","createVariantButton","t7","tableEmptyState","t8","t9","t10","t11","t12","t13","t14","t15","t16","event","currentTarget","value","t17","t18","t19","t20","t21","t22","t23","datum","useRouter","VariantDetail","VariantsOverview","VariantsTool","$","_c","router","variantId","state","undefined","t0","Symbol","for"],"sources":["../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/tool/detail/variantDocumentVersion.ts","../src/core/variants/hooks/useVariantDocuments.ts","../src/core/variants/tool/components/VariantPinButton.tsx","../src/core/variants/tool/detail/groupVariantDocumentsByGroup.ts","../src/core/variants/components/dialog/DeleteVariantDialog.tsx","../src/core/variants/hooks/useVariantDeleteAction.ts","../src/core/variants/tool/detail/VariantDetailMenuButton.tsx","../src/core/variants/tool/detail/VariantDetailFooter.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/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/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 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 space={5}>\n <Stack space={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 space={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 space={3}>\n <Inline space={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 space={3}>\n <Stack space={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 space={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} space={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 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 {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 {PinIcon} from '@sanity/icons/Pin'\nimport {PinFilledIcon} from '@sanity/icons/PinFilled'\nimport {useCallback} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {usePerspective} from '../../../perspective/usePerspective'\nimport {useSetVariant} from '../../../perspective/useSetVariant'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {getVariantTitle} from '../util'\n\nexport function VariantPinButton({\n variant,\n 'data-testid': dataTestId = 'pin-variant-button',\n}: {\n 'variant': SystemVariant\n 'data-testid'?: string\n}) {\n const {t} = useTranslation(variantsLocaleNamespace)\n const {selectedVariant} = usePerspective()\n const setVariant = useSetVariant()\n\n const isPinned = selectedVariant?._id === variant._id\n const variantTitle = getVariantTitle(variant)\n\n const handlePinVariant = useCallback(() => {\n if (isPinned) {\n setVariant({\n variantId: undefined,\n })\n } else {\n setVariant({\n variantId: variant._id,\n })\n }\n }, [isPinned, setVariant, variant])\n\n return (\n <Button\n aria-label={\n isPinned\n ? `${t('detail.unpin-variant')}: \"${variantTitle}\"`\n : `${t('detail.pin-variant')}: \"${variantTitle}\"`\n }\n aria-live=\"assertive\"\n data-testid={dataTestId}\n icon={isPinned ? PinFilledIcon : PinIcon}\n mode=\"bleed\"\n onClick={handlePinVariant}\n radius=\"full\"\n selected={isPinned}\n tooltipProps={{\n content: isPinned ? t('detail.unpin-variant') : t('detail.pin-variant'),\n }}\n />\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 {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 {Menu} from '@sanity/ui'\nimport {useRouter} from 'sanity/router'\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 {useVariantDeleteAction} from '../../hooks/useVariantDeleteAction'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {getVariantId, getVariantTitle} from '../util'\n\nexport function VariantDetailMenuButton({\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 button={<ContextMenuButton disabled={isDeleting} loading={isDeleting} />}\n id={`variant-detail-actions-${getVariantId(variant._id)}`}\n menu={\n <Menu>\n <MenuItem\n disabled={deleteDisabled}\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 {DiamondIcon} from '@sanity/icons/Diamond'\nimport {Card, Flex, Text} from '@sanity/ui'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {RelativeTime} from '../../../components/RelativeTime'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type SystemVariant} from '../../types'\nimport {VariantDetailMenuButton} from './VariantDetailMenuButton'\n\nexport function VariantDetailFooter({\n openEditDialog,\n documentCount,\n documentsLoading = false,\n variant,\n}: {\n openEditDialog: () => void\n documentCount: number\n documentsLoading?: boolean\n variant: SystemVariant\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n return (\n <Card flex=\"none\">\n <Card borderTop marginX={2} style={{opacity: 0.6}} />\n\n <Flex padding={3}>\n <Flex flex={1} gap={1}>\n <Card>\n <Flex align=\"center\" gap={2}>\n <Text size={1}>\n <DiamondIcon />\n </Text>\n <Text muted size={1}>\n {t('detail.footer.created')}{' '}\n <RelativeTime time={variant._createdAt} useTemporalPhrase minimal />\n </Text>\n </Flex>\n </Card>\n </Flex>\n\n <Flex flex=\"none\" gap={1} data-testid=\"variant-detail-footer-actions\">\n <Button onClick={openEditDialog} text={t('detail.action.edit-variant')} />\n <VariantDetailMenuButton\n documentCount={documentCount}\n documentsLoading={documentsLoading}\n variant={variant}\n />\n </Flex>\n </Flex>\n </Card>\n )\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} from '@sanity/ui'\nimport {IntentLink} from 'sanity/router'\n\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {ReleaseTitle} from '../../../../releases/components/ReleaseTitle'\nimport {RELEASES_INTENT} from '../../../../releases/plugin'\nimport {getReleaseDocumentIdFromReleaseId} from '../../../../releases/util/getReleaseDocumentIdFromReleaseId'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {isPublishedBundleId, isReleaseBundle} from '../../util'\nimport {type VariantDocumentVersion} from '../types'\n\nfunction getReleaseDocumentForVersion(\n version: VariantDocumentVersion,\n releasesById: Map<string, ReleaseDocument>,\n): ReleaseDocument | undefined {\n if (version.releaseRef) {\n return releasesById.get(version.releaseRef)\n }\n\n if (isReleaseBundle(version.bundleId)) {\n const releaseDocumentId = getReleaseDocumentIdFromReleaseId(version.bundleId!)\n\n return releasesById.get(releaseDocumentId)\n }\n\n return undefined\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 <Badge radius={2} tone=\"primary\">\n {displayTitle}\n </Badge>\n </IntentLink>\n )}\n </ReleaseTitle>\n )\n}\n\nfunction StaticBundleChip({label, tone}: {label: string; tone: 'positive' | 'default'}) {\n return (\n <Badge radius={2} tone={tone}>\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()\n\n return (\n <Box style={{minWidth: 0, width: '100%', overflowX: 'auto', overflowY: 'hidden'}}>\n <Flex align=\"center\" gap={1} wrap=\"nowrap\" style={{width: 'max-content'}}>\n {versions.map((version) => {\n if (isPublishedBundleId(version.bundleId)) {\n return (\n <StaticBundleChip\n key={version.documentId}\n label={t('release.chip.published')}\n tone=\"positive\"\n />\n )\n }\n\n if (version.bundleId === 'drafts') {\n return (\n <StaticBundleChip\n key={version.documentId}\n label={t('release.chip.draft')}\n tone=\"default\"\n />\n )\n }\n\n const release = getReleaseDocumentForVersion(version, releasesById)\n\n if (release) {\n return <ReleaseBundleChip key={version.documentId} release={release} />\n }\n\n return (\n <StaticBundleChip\n key={version.documentId}\n label={t('release.placeholder-untitled-release')}\n tone=\"default\"\n />\n )\n })}\n </Flex>\n </Box>\n )\n}\n","import {Card} from '@sanity/ui'\nimport {type ForwardedRef, forwardRef, useMemo} 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 {useDocumentPresence} from '../../../../store/presence/useDocumentPresence'\nimport {useDocumentPreviewValues} from '../../../../tasks/hooks/useDocumentPreviewValues'\nimport {getPublishedId} from '../../../../util/draftUtils'\nimport {isPublishedBundleId} from '../../util'\nimport {type DocumentInVariantGroup} from '../types'\n\ninterface VariantDocumentPreviewProps {\n row: DocumentInVariantGroup\n layout?: PreviewLayoutKey\n variantId?: string\n}\n\ninterface VariantDocumentPreviewLinkProps extends React.ComponentPropsWithoutRef<'a'> {\n publishedId: string\n documentType: string\n searchParams: Array<[string, string]> | undefined\n}\n\nconst VariantDocumentPreviewLink = forwardRef(function VariantDocumentPreviewLink(\n {publishedId, documentType, searchParams, ...linkProps}: VariantDocumentPreviewLinkProps,\n ref: ForwardedRef<HTMLAnchorElement>,\n) {\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 layout,\n variantId,\n}: VariantDocumentPreviewProps): React.JSX.Element {\n const publishedId = getPublishedId(row.groupId)\n const documentPresence = useDocumentPresence(row.document._id)\n const {perspectiveStack, searchParams} = useMemo(\n () => getVersionPerspectiveNavigation(row.version.bundleId, variantId),\n [row.version.bundleId, variantId],\n )\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 })\n\n return (\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 >\n <SanityDefaultPreview\n {...(resolvedPreview || {})}\n status={previewPresence}\n isPlaceholder={previewLoading}\n layout={layout}\n />\n </Card>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\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 {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 {type DocumentInVariantGroup} from '../types'\nimport {getDocumentPreviewTitle} from './getDocumentPreviewTitle'\nimport {VariantDocumentBundleChips} from './VariantDocumentBundleChips'\nimport {VariantDocumentPreview} from './VariantDocumentPreview'\n\nconst MemoVariantDocumentPreview = memo(\n function MemoVariantDocumentPreview({\n row,\n variantId,\n }: {\n row: DocumentInVariantGroup\n variantId?: string\n }) {\n return <VariantDocumentPreview row={row} variantId={variantId} />\n },\n (prev, next) => prev.row.memoKey === next.row.memoKey && prev.variantId === next.variantId,\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\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.groupId,\n },\n {\n id: 'bundle',\n width: 140,\n style: {minWidth: 100, maxWidth: 140},\n sorting: false,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={t('detail.documents.table.bundle')} />\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 flex={1} paddingX={2} style={{minWidth: 0, overflow: 'hidden'}}>\n {!datum.isLoading && (\n <VariantDocumentBundleChips versions={datum.versions} releasesById={releasesById} />\n )}\n </Box>\n </Flex>\n ),\n },\n {\n id: 'document._type',\n width: null,\n style: {minWidth: 100},\n sorting: true,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('detail.documents.table.type')} {...props} />\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 id: 'search',\n width: null,\n style: {minWidth: 'min(50%, calc(100vw - 80px))', maxWidth: 'min(50%, calc(100vw - 80px))'},\n sortTransform: ({document}) => getDocumentPreviewTitle(document).toLowerCase(),\n header: (props) => (\n <Headers.TableHeaderSearch\n {...props}\n placeholder={t('detail.documents.table.search-placeholder')}\n />\n ),\n cell: ({cellProps, datum}) => (\n <Box {...cellProps} flex={1} padding={1} paddingRight={2} sizing=\"border\">\n {datum.isLoading ? (\n <SanityDefaultPreview isPlaceholder />\n ) : (\n <MemoVariantDocumentPreview row={datum} variantId={variantId} />\n )}\n </Box>\n ),\n },\n {\n id: 'document._updatedAt',\n sorting: true,\n width: 130,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('detail.documents.table.edited')} {...props} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} style={{minWidth: 130}}>\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 id: 'validation',\n sorting: false,\n width: 50,\n header: ({headerProps}) => (\n <Flex {...headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={''} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => {\n if (datum.isLoading) return null\n\n const validationErrorCount = datum.validation.validation.filter(\n (validation) => validation.level === 'error',\n ).length\n\n return (\n <Flex {...cellProps} flex={1} padding={1} justify=\"center\" align=\"center\" sizing=\"border\">\n {datum.validation.hasError && (\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}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n </Text>\n </Tooltip>\n )}\n </Flex>\n )\n },\n },\n]\n","import {Card} from '@sanity/ui'\nimport {type CSSProperties, useMemo, useState} from 'react'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useActiveReleases} from '../../../releases/store/useActiveReleases'\nimport {Table} from '../../../releases/tool/components/Table/Table'\nimport {type Column} from '../../../releases/tool/components/Table/types'\nimport {searchDocumentRelease} from '../../../releases/tool/detail/documentTable/searchDocumentRelease'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {type DocumentInVariantGroup} from './types'\nimport {getVariantDocumentTableColumnDefs} from './variantDocumentTable/VariantDocumentTableColumnDefs'\n\nconst TABLE_CARD_STYLE: CSSProperties = {\n height: '100%',\n overflow: 'auto',\n}\n\nfunction filterDocuments(\n rows: DocumentInVariantGroup[],\n searchTerm: string,\n): DocumentInVariantGroup[] {\n if (!searchTerm.trim()) {\n return rows\n }\n\n return rows.filter(({document}) => searchDocumentRelease(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 [scrollContainerRef, setScrollContainerRef] = useState<HTMLDivElement | null>(null)\n const {data: releases} = useActiveReleases()\n const releasesById = useMemo(\n () => new Map(releases.map((release) => [release._id, release])),\n [releases],\n )\n const columnDefs = useMemo<Column<DocumentInVariantGroup>[]>(\n () => getVariantDocumentTableColumnDefs(t, variantId, releasesById),\n [t, variantId, releasesById],\n )\n\n return (\n <Card flex={1} ref={setScrollContainerRef} style={TABLE_CARD_STYLE}>\n <Table<DocumentInVariantGroup>\n columnDefs={columnDefs}\n data={rows}\n defaultSort={{column: 'documentGroup', direction: 'asc'}}\n emptyState={t('detail.documents.no-documents')}\n loading={loading}\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n rowId=\"groupId\"\n scrollContainerRef={scrollContainerRef}\n searchFilter={filterDocuments}\n />\n </Card>\n )\n}\n","import {Box, Card, Container, Flex, Stack, Text} from '@sanity/ui'\nimport {useMemo, useState} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {LoadingBlock} from '../../../components/loadingBlock/LoadingBlock'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {EditVariantDialog} from '../../components/dialog/EditVariantDialog'\nimport {useVariantDocuments} from '../../hooks/useVariantDocuments'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {VariantPinButton} from '../components/VariantPinButton'\nimport {\n decodeVariantIdFromRoute,\n getVariantConditionsText,\n getVariantDescription,\n getVariantId,\n getVariantTitle,\n} from '../util'\nimport {groupVariantDocumentsByGroup} from './groupVariantDocumentsByGroup'\nimport {VariantDetailFooter} from './VariantDetailFooter'\nimport {VariantDocumentsTable} from './VariantDocumentsTable'\n\nexport function VariantDetail() {\n const router = useRouter()\n const {t} = useTranslation(variantsLocaleNamespace)\n const [editDialogOpen, setEditDialogOpen] = useState(false)\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 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 <Button mode=\"bleed\" onClick={() => router.navigate({})} text={t('detail.back')} />\n </Card>\n <Box padding={4}>\n <Card border padding={4} radius={3}>\n <Stack space={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 const conditionsText = getVariantConditionsText(variant.conditions)\n\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\" overflow=\"hidden\">\n <Card borderBottom flex=\"none\" padding={3}>\n <Button mode=\"bleed\" onClick={() => router.navigate({})} text={t('detail.back')} />\n </Card>\n <Flex direction=\"column\" flex={1} height=\"fill\" overflow=\"hidden\" style={{minHeight: 0}}>\n <Container flex=\"none\" width={3}>\n <Flex direction=\"column\" paddingX={3}>\n <Card paddingY={5}>\n <Flex align=\"flex-start\" gap={4} justify=\"space-between\">\n <Stack space={3}>\n <Flex align=\"center\" gap={1}>\n <VariantPinButton variant={variant} />\n <Text as=\"h1\" size={4} weight=\"bold\">\n {getVariantTitle(variant)}\n </Text>\n </Flex>\n <Text muted size={1}>\n {description || t('detail.no-description')}\n </Text>\n </Stack>\n </Flex>\n\n <Box paddingTop={4}>\n <Stack space={2}>\n <Text size={1} weight=\"medium\">\n {t('dialog.create.conditions.title')}\n </Text>\n <Text muted size={1}>\n {conditionsText || t('overview.table.no-conditions')}\n </Text>\n </Stack>\n </Box>\n </Card>\n </Flex>\n </Container>\n <Flex direction=\"column\" flex={1} 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 <VariantDetailFooter\n openEditDialog={() => setEditDialogOpen(true)}\n documentCount={tableRows.length}\n documentsLoading={documentsLoading}\n variant={variant}\n />\n {editDialogOpen && (\n <EditVariantDialog\n onCancel={() => setEditDialogOpen(false)}\n onSubmit={() => setEditDialogOpen(false)}\n variant={variant}\n />\n )}\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(\n (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 ),\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 {Menu} from '@sanity/ui'\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 {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 {\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 disabled={deleteDisabled}\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","/**\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 ForwardedRef, forwardRef, type HTMLProps, useMemo} 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 {VariantPinButton} from '../components/VariantPinButton'\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 forwardRef(function VariantLinkComponent(\n linkProps: HTMLProps<HTMLAnchorElement>,\n ref: ForwardedRef<HTMLAnchorElement>,\n ) {\n return <StateLink {...linkProps} 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 space={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 <VariantPinButton variant={variant} />\n <Card as={VariantLink} data-as=\"a\" flex={1} padding={2} radius={2} tone=\"inherit\">\n <Flex align=\"center\" gap={3}>\n <Stack flex={1} space={2}>\n <Text size={1} weight=\"medium\">\n {getVariantTitle(variant)}\n </Text>\n <Text muted size={1}>\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 {SearchIcon} from '@sanity/icons/Search'\nimport {Box, Card, Container, Flex, Stack, Text, TextInput} 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 {Table, type TableProps} from '../../../releases/tool/components/Table/Table'\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 {filterVariantsForSearch, getVariantId} from '../util'\nimport {VariantMenuButton} from './VariantMenuButton'\nimport {VariantsEmptyState} from './VariantsEmptyState'\nimport {type TableVariant, variantsOverviewColumnDefs} from './VariantsOverviewColumnDefs'\n\nconst VARIANT_TABLE_ROW_ID = '_id'\n\nexport function VariantsOverview() {\n const {t} = useTranslation(variantsLocaleNamespace)\n const router = useRouter()\n const {data: variants, error, loading} = useAllVariants()\n const [scrollContainerRef, setScrollContainerRef] = useState<HTMLDivElement | null>(null)\n const [searchQuery, setSearchQuery] = useState('')\n const [isCreateVariantDialogOpen, setIsCreateVariantDialogOpen] = useState(false)\n\n const handleCreateVariant = useCallback(() => {\n setIsCreateVariantDialogOpen(true)\n }, [])\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 const renderRowActions = useCallback<\n NonNullable<TableProps<TableVariant, undefined>['rowActions']>\n >(\n ({datum}) => (\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\n const {data: documentCounts, error: documentCountsError} = useVariantsDocumentCounts()\n\n const filteredVariants = useMemo(\n () =>\n filterVariantsForSearch(variantsList, searchQuery).map(\n (variant): TableVariant => ({\n ...variant,\n documentCount: documentCounts?.[variant._id] ?? (documentCountsError ? null : undefined),\n }),\n ),\n [variantsList, searchQuery, documentCounts, documentCountsError],\n )\n\n const hasVariants = variantsList.length > 0\n\n const createVariantButton = useMemo(\n () => (\n <Button\n disabled={isCreateVariantDialogOpen}\n icon={AddIcon}\n onClick={handleCreateVariant}\n text={t('overview.action.create-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 return <VariantsEmptyState createVariantButton={createVariantButton} />\n }, [createVariantButton, error, hasVariants, t])\n\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\">\n {/* Same container width as releases document table (`container[3]` in Table), so chrome aligns with row content */}\n <Container flex=\"none\" width={3}>\n <Flex direction=\"column\" paddingX={3}>\n <Card flex=\"none\" paddingY={5}>\n <Flex align=\"flex-start\" gap={4} justify=\"space-between\">\n <Stack space={3}>\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 <Box flex=\"none\" paddingBottom={4} paddingTop={2}>\n <TextInput\n clearButton={!!searchQuery}\n fontSize={1}\n icon={SearchIcon}\n onChange={(event) => setSearchQuery(event.currentTarget.value)}\n onClear={() => setSearchQuery('')}\n placeholder={t('overview.search.placeholder')}\n radius={3}\n value={searchQuery}\n />\n </Box>\n\n {error && (\n <Card flex=\"none\" padding={3} tone=\"critical\">\n <Text size={1}>{t('overview.error')}</Text>\n </Card>\n )}\n </Flex>\n </Container>\n\n {/* Full-width scroll region so table borders span the tool pane (same pattern as release detail summary). */}\n <Box flex={1} overflow=\"auto\" ref={setScrollContainerRef}>\n <Table<TableVariant>\n columnDefs={columnDefs}\n data={filteredVariants}\n emptyState={tableEmptyState}\n loading={loading}\n rowId={VARIANT_TABLE_ROW_ID}\n rowActions={renderRowActions}\n scrollContainerRef={scrollContainerRef}\n />\n </Box>\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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"}
|