@sanity/ui 2.16.21 → 2.16.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks-cjs/_visual-editing.js +121 -1046
- package/dist/_chunks-cjs/_visual-editing.js.map +1 -1
- package/dist/_chunks-cjs/refractor.js.map +1 -1
- package/dist/_chunks-es/_visual-editing.mjs +116 -1041
- package/dist/_chunks-es/_visual-editing.mjs.map +1 -1
- package/dist/_chunks-es/refractor.mjs.map +1 -1
- package/dist/_visual-editing.d.mts +411 -351
- package/dist/_visual-editing.d.ts +411 -351
- package/dist/index.d.mts +1107 -930
- package/dist/index.d.ts +1107 -930
- package/dist/index.js +67 -158
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +65 -156
- package/dist/index.mjs.map +1 -1
- package/dist/theme.d.mts +769 -681
- package/dist/theme.d.ts +769 -681
- package/dist/theme.js +47 -0
- package/dist/theme.js.map +1 -1
- package/dist/theme.mjs +47 -0
- package/dist/theme.mjs.map +1 -1
- package/exports/_visual-editing.ts +1 -0
- package/package.json +50 -163
- package/src/core/_compat.ts +30 -0
- package/src/core/components/autocomplete/autocomplete.tsx +11 -4
- package/src/core/components/autocomplete/autocompleteOption.tsx +1 -0
- package/src/core/components/breadcrumbs/breadcrumbs.tsx +1 -0
- package/src/core/components/dialog/dialog.tsx +3 -0
- package/src/core/components/hotkeys/hotkeys.tsx +1 -0
- package/src/core/components/menu/menu.test.tsx +6 -4
- package/src/core/components/menu/menu.tsx +3 -2
- package/src/core/components/menu/menuButton.tsx +8 -0
- package/src/core/components/menu/menuGroup.tsx +5 -2
- package/src/core/components/menu/menuItem.tsx +4 -0
- package/src/core/components/menu/useMenuController.ts +6 -4
- package/src/core/components/skeleton/skeleton.tsx +2 -1
- package/src/core/components/tab/tab.tsx +1 -0
- package/src/core/components/tab/tabList.tsx +1 -0
- package/src/core/components/toast/toast.test.tsx +9 -4
- package/src/core/components/toast/toast.tsx +1 -1
- package/src/core/components/toast/toastProvider.tsx +1 -1
- package/src/core/components/tree/tree.tsx +1 -0
- package/src/core/components/tree/treeGroup.tsx +1 -0
- package/src/core/components/tree/treeItem.tsx +2 -2
- package/src/core/constants.ts +2 -2
- package/src/core/hooks/useClickOutside.test.tsx +43 -15
- package/src/core/hooks/useClickOutside.ts +1 -1
- package/src/core/hooks/useClickOutsideEvent.test.tsx +8 -4
- package/src/core/hooks/useDelayed.test.ts +7 -6
- package/src/core/hooks/useElementRect/useElementRect.ts +1 -0
- package/src/core/hooks/useForwardedRef.ts +1 -0
- package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +2 -1
- package/src/core/hooks/usePrefersDark.hydration.test.tsx +7 -5
- package/src/core/hooks/usePrefersDark.test.tsx +3 -1
- package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +7 -5
- package/src/core/hooks/usePrefersReducedMotion.test.tsx +3 -1
- package/src/core/lib/createGlobalScopedContext.ts +1 -0
- package/src/core/lib/globalScope.ts +1 -0
- package/src/core/observers/elementSizeObserver.ts +1 -0
- package/src/core/primitives/avatar/avatar.tsx +1 -2
- package/src/core/primitives/avatar/avatarStack.tsx +1 -0
- package/src/core/primitives/badge/badge.test.tsx +3 -2
- package/src/core/primitives/badge/badge.tsx +2 -1
- package/src/core/primitives/box/box.tsx +2 -1
- package/src/core/primitives/button/button.test.tsx +3 -2
- package/src/core/primitives/button/button.tsx +2 -0
- package/src/core/primitives/button/styles.ts +1 -0
- package/src/core/primitives/card/card.tsx +1 -5
- package/src/core/primitives/card/types.ts +1 -0
- package/src/core/primitives/code/refractor.tsx +2 -0
- package/src/core/primitives/flex/flex.tsx +1 -3
- package/src/core/primitives/inline/inline.tsx +1 -0
- package/src/core/primitives/popover/popover.tsx +13 -4
- package/src/core/primitives/popover/popoverCard.tsx +2 -1
- package/src/core/primitives/popover/types.ts +0 -1
- package/src/core/primitives/stack/styles.ts +1 -0
- package/src/core/primitives/textInput/textInput.tsx +2 -0
- package/src/core/primitives/tooltip/tooltip.test.tsx +82 -49
- package/src/core/primitives/tooltip/tooltip.tsx +6 -1
- package/src/core/primitives/tooltip/tooltipCard.tsx +2 -1
- package/src/core/primitives/tooltip/tooltipDelayGroup/types.ts +2 -0
- package/src/core/styles/flex/types.ts +0 -1
- package/src/core/styles/font/responsiveFont.ts +0 -3
- package/src/core/styles/font/types.ts +1 -3
- package/src/core/styles/grid/gridStyle.ts +1 -0
- package/src/core/styles/margin/marginStyle.ts +1 -0
- package/src/core/styles/margin/marginsStyle.test.ts +2 -1
- package/src/core/styles/padding/paddingStyle.test.ts +2 -1
- package/src/core/styles/padding/paddingStyle.ts +1 -0
- package/src/core/theme/theme.test.tsx +7 -3
- package/src/core/theme/useRootTheme.ts +1 -0
- package/src/core/theme/useTheme.ts +2 -0
- package/src/core/utils/arrow/arrow.tsx +1 -0
- package/src/core/utils/boundaryElement/boundaryElement.test.tsx +9 -4
- package/src/core/utils/conditionalWrapper/conditionalWrapper.tsx +1 -0
- package/src/core/utils/getElementRef.ts +5 -0
- package/src/core/utils/layer/getLayerContext.test.ts +2 -0
- package/src/core/utils/layer/layer.test.tsx +9 -4
- package/src/core/utils/layer/layer.tsx +1 -0
- package/src/core/utils/layer/useLayer.ts +2 -0
- package/src/core/utils/portal/portal.test.tsx +9 -4
- package/src/core/utils/portal/portalProvider.tsx +4 -3
- package/src/core/utils/virtualList/virtualList.tsx +2 -1
- package/src/theme/build/_deprecated/color/_selectable/createSelectableTones.ts +10 -0
- package/src/theme/build/_deprecated/color/_solid/createSolidTones.ts +4 -0
- package/src/theme/build/_deprecated/color/button/createButtonModes.ts +5 -0
- package/src/theme/build/_deprecated/color/button/createButtonTones.ts +5 -0
- package/src/theme/build/_deprecated/color/card/createCardStates.ts +6 -0
- package/src/theme/build/_deprecated/color/color.test.ts +5 -1
- package/src/theme/build/_deprecated/color/defaults.ts +1 -0
- package/src/theme/build/_deprecated/color/factory.ts +36 -0
- package/src/theme/build/_deprecated/color/input/createInputModes.ts +5 -0
- package/src/theme/build/_deprecated/color/muted/createMuted.ts +4 -0
- package/src/theme/build/_deprecated/color/spot/createSpot.ts +3 -0
- package/src/theme/build/buildColorTheme.test.ts +2 -0
- package/src/theme/build/buildColorTheme.ts +7 -0
- package/src/theme/build/buildTheme.test.ts +2 -0
- package/src/theme/build/lib/color-fns/color-fns.test.ts +3 -1
- package/src/theme/build/merge.ts +5 -0
- package/src/theme/build/mixThemeColor.test.ts +2 -0
- package/src/theme/build/renderColorTheme.ts +6 -0
- package/src/theme/build/renderColorValue.ts +0 -2
- package/src/theme/build/resolveColorTokens.ts +6 -0
- package/src/theme/build/theme.test.ts +2 -0
- package/src/theme/config/helpers.ts +5 -0
- package/src/theme/config/system.ts +2 -0
- package/src/theme/config/tokens/color/types.ts +6 -4
- package/src/theme/config/tokens/parseTokenKey.test.ts +2 -0
- package/src/theme/config/tokens/parseTokenValue.test.ts +2 -0
- package/src/theme/config/tokens/parseTokenValue.ts +1 -0
- package/src/theme/getScopedTheme.ts +5 -0
- package/src/theme/system/color/_helpers.ts +4 -0
- package/src/theme/system/theme.ts +4 -0
- package/src/theme/system/v0/color/_system.ts +1 -0
- package/src/theme/system/v0/color/button.ts +14 -0
- package/src/theme/system/v0/color/card.ts +6 -0
- package/src/theme/system/v0/color/color.ts +11 -0
- package/src/theme/system/v0/color/input.ts +6 -0
- package/src/theme/system/v0/color/muted.ts +11 -0
- package/src/theme/system/v0/color/selectable.ts +11 -0
- package/src/theme/system/v0/color/solid.ts +11 -0
- package/src/theme/system/v0/color/spot.ts +1 -0
- package/src/theme/versioning/getTheme_v2.ts +15 -0
- package/src/theme/versioning/themeColor_v0_v2.ts +7 -0
- package/src/theme/versioning/themeColor_v2_v2_9.ts +1 -0
- package/src/theme/versioning/v0_v2.ts +13 -1
- package/src/theme/versioning/v2_v0.ts +15 -0
- package/src/core/__workshop__/constants.ts +0 -293
- package/src/core/components/autocomplete/__mocks__/apiStore.ts +0 -49
- package/src/core/components/autocomplete/__mocks__/countries.ts +0 -245
- package/src/core/components/autocomplete/__workshop__/async.tsx +0 -156
- package/src/core/components/autocomplete/__workshop__/constrainedHeight.tsx +0 -137
- package/src/core/components/autocomplete/__workshop__/custom.tsx +0 -89
- package/src/core/components/autocomplete/__workshop__/example.tsx +0 -79
- package/src/core/components/autocomplete/__workshop__/focusAndBlur.tsx +0 -36
- package/src/core/components/autocomplete/__workshop__/fullscreen.tsx +0 -294
- package/src/core/components/autocomplete/__workshop__/index.ts +0 -39
- package/src/core/components/autocomplete/__workshop__/types.ts +0 -4
- package/src/core/components/breadcrumbs/__workshop__/example.tsx +0 -62
- package/src/core/components/breadcrumbs/__workshop__/index.ts +0 -14
- package/src/core/components/dialog/__workshop__/activate.tsx +0 -134
- package/src/core/components/dialog/__workshop__/autoFocus.tsx +0 -29
- package/src/core/components/dialog/__workshop__/index.ts +0 -19
- package/src/core/components/dialog/__workshop__/layering.tsx +0 -41
- package/src/core/components/dialog/__workshop__/nested.tsx +0 -72
- package/src/core/components/dialog/__workshop__/onScroll.tsx +0 -39
- package/src/core/components/dialog/__workshop__/panes.tsx +0 -82
- package/src/core/components/dialog/__workshop__/position.tsx +0 -30
- package/src/core/components/dialog/__workshop__/props.tsx +0 -75
- package/src/core/components/dialog/__workshop__/provider.tsx +0 -11
- package/src/core/components/dialog/__workshop__/wrapped.tsx +0 -76
- package/src/core/components/hotkeys/__workshop__/index.ts +0 -14
- package/src/core/components/hotkeys/__workshop__/plain.tsx +0 -9
- package/src/core/components/menu/__workshop__/asComponent.tsx +0 -45
- package/src/core/components/menu/__workshop__/avatarMenu.tsx +0 -51
- package/src/core/components/menu/__workshop__/closableMenuButton.tsx +0 -46
- package/src/core/components/menu/__workshop__/constrainedInBoundary.tsx +0 -134
- package/src/core/components/menu/__workshop__/customMenuItem.tsx +0 -45
- package/src/core/components/menu/__workshop__/customSelectedState.tsx +0 -39
- package/src/core/components/menu/__workshop__/disableFocusOnClose.tsx +0 -40
- package/src/core/components/menu/__workshop__/groups.tsx +0 -156
- package/src/core/components/menu/__workshop__/index.ts +0 -89
- package/src/core/components/menu/__workshop__/menuButton.tsx +0 -80
- package/src/core/components/menu/__workshop__/menuGroupRight.tsx +0 -65
- package/src/core/components/menu/__workshop__/nestedMenu.tsx +0 -22
- package/src/core/components/menu/__workshop__/onCloseMenuButton.tsx +0 -41
- package/src/core/components/menu/__workshop__/selectedItem.tsx +0 -69
- package/src/core/components/menu/__workshop__/shouldFocus.tsx +0 -47
- package/src/core/components/menu/__workshop__/tones.tsx +0 -25
- package/src/core/components/menu/__workshop__/withoutArrow.tsx +0 -32
- package/src/core/components/skeleton/__workshop__/delay.tsx +0 -70
- package/src/core/components/skeleton/__workshop__/index.ts +0 -11
- package/src/core/components/skeleton/__workshop__/skeleton.tsx +0 -64
- package/src/core/components/tab/__workshop__/example.tsx +0 -79
- package/src/core/components/tab/__workshop__/index.ts +0 -14
- package/src/core/components/toast/__workshop__/hook.tsx +0 -71
- package/src/core/components/toast/__workshop__/index.ts +0 -19
- package/src/core/components/toast/__workshop__/toast.tsx +0 -26
- package/src/core/components/tree/__workshop__/basic.perf.ts +0 -19
- package/src/core/components/tree/__workshop__/basic.tsx +0 -105
- package/src/core/components/tree/__workshop__/index.ts +0 -21
- package/src/core/components/tree/__workshop__/tabFromElement.tsx +0 -84
- package/src/core/hooks/useElementRect/__workshop__/example.tsx +0 -32
- package/src/core/hooks/useElementRect/__workshop__/index.ts +0 -14
- package/src/core/hooks/useMediaIndex/__workshop__/index.ts +0 -14
- package/src/core/hooks/useMediaIndex/__workshop__/test.tsx +0 -14
- package/src/core/primitives/avatar/__workshop__/asButton.tsx +0 -14
- package/src/core/primitives/avatar/__workshop__/index.ts +0 -29
- package/src/core/primitives/avatar/__workshop__/stack.tsx +0 -25
- package/src/core/primitives/avatar/__workshop__/withinButton.tsx +0 -63
- package/src/core/primitives/avatar/__workshop__/withinMenuItem.tsx +0 -70
- package/src/core/primitives/badge/__workshop__/index.ts +0 -19
- package/src/core/primitives/badge/__workshop__/props.tsx +0 -30
- package/src/core/primitives/badge/__workshop__/tones.tsx +0 -21
- package/src/core/primitives/box/__workshop__/index.ts +0 -19
- package/src/core/primitives/box/__workshop__/props.tsx +0 -20
- package/src/core/primitives/box/__workshop__/responsive.tsx +0 -20
- package/src/core/primitives/button/__workshop__/custom.tsx +0 -51
- package/src/core/primitives/button/__workshop__/customIcons.tsx +0 -30
- package/src/core/primitives/button/__workshop__/disabled.tsx +0 -74
- package/src/core/primitives/button/__workshop__/index.ts +0 -59
- package/src/core/primitives/button/__workshop__/mixedChildren.tsx +0 -12
- package/src/core/primitives/button/__workshop__/props.tsx +0 -55
- package/src/core/primitives/button/__workshop__/sanityUploadButton.tsx +0 -36
- package/src/core/primitives/button/__workshop__/stacked.tsx +0 -58
- package/src/core/primitives/button/__workshop__/styled1.tsx +0 -17
- package/src/core/primitives/button/__workshop__/styled2.tsx +0 -19
- package/src/core/primitives/button/__workshop__/uploadButton.tsx +0 -28
- package/src/core/primitives/card/__workshop__/allTones.tsx +0 -25
- package/src/core/primitives/card/__workshop__/asButton.tsx +0 -107
- package/src/core/primitives/card/__workshop__/asComponent.tsx +0 -27
- package/src/core/primitives/card/__workshop__/checkered.tsx +0 -26
- package/src/core/primitives/card/__workshop__/index.ts +0 -18
- package/src/core/primitives/card/__workshop__/interactive.tsx +0 -30
- package/src/core/primitives/card/__workshop__/listNavigation.tsx +0 -80
- package/src/core/primitives/card/__workshop__/props.tsx +0 -53
- package/src/core/primitives/card/__workshop__/selected.tsx +0 -94
- package/src/core/primitives/card/__workshop__/styled.tsx +0 -14
- package/src/core/primitives/checkbox/__workshop__/example.tsx +0 -25
- package/src/core/primitives/checkbox/__workshop__/index.ts +0 -13
- package/src/core/primitives/checkbox/__workshop__/props.tsx +0 -33
- package/src/core/primitives/checkbox/__workshop__/readOnly.tsx +0 -16
- package/src/core/primitives/checkbox/__workshop__/tones.tsx +0 -28
- package/src/core/primitives/code/__workshop__/index.ts +0 -19
- package/src/core/primitives/code/__workshop__/opticalAlignment.tsx +0 -48
- package/src/core/primitives/code/__workshop__/props.tsx +0 -21
- package/src/core/primitives/container/__workshop__/example.tsx +0 -20
- package/src/core/primitives/container/__workshop__/index.ts +0 -8
- package/src/core/primitives/flex/__workshop__/example.tsx +0 -34
- package/src/core/primitives/flex/__workshop__/gap.tsx +0 -25
- package/src/core/primitives/flex/__workshop__/index.ts +0 -11
- package/src/core/primitives/grid/__workshop__/index.ts +0 -10
- package/src/core/primitives/grid/__workshop__/responsive.tsx +0 -54
- package/src/core/primitives/heading/__workshop__/index.ts +0 -19
- package/src/core/primitives/heading/__workshop__/opticalAlignment.tsx +0 -54
- package/src/core/primitives/heading/__workshop__/plain.tsx +0 -32
- package/src/core/primitives/inline/__workshop__/index.ts +0 -8
- package/src/core/primitives/inline/__workshop__/plain.tsx +0 -27
- package/src/core/primitives/kbd/__workshop__/index.ts +0 -8
- package/src/core/primitives/kbd/__workshop__/plain.tsx +0 -9
- package/src/core/primitives/label/__workshop__/index.ts +0 -19
- package/src/core/primitives/label/__workshop__/opticalAlignment.tsx +0 -48
- package/src/core/primitives/label/__workshop__/plain.tsx +0 -24
- package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +0 -77
- package/src/core/primitives/popover/__workshop__/MarginsStory.tsx +0 -31
- package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -32
- package/src/core/primitives/popover/__workshop__/OpenOnMountStory.tsx +0 -11
- package/src/core/primitives/popover/__workshop__/PlainStory.tsx +0 -71
- package/src/core/primitives/popover/__workshop__/RecursiveStory.tsx +0 -71
- package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +0 -89
- package/src/core/primitives/popover/__workshop__/TestStory.tsx +0 -97
- package/src/core/primitives/popover/__workshop__/index.ts +0 -49
- package/src/core/primitives/radio/__workshop__/example.tsx +0 -63
- package/src/core/primitives/radio/__workshop__/index.ts +0 -11
- package/src/core/primitives/radio/__workshop__/plain.tsx +0 -28
- package/src/core/primitives/select/__workshop__/index.ts +0 -11
- package/src/core/primitives/select/__workshop__/plain.tsx +0 -27
- package/src/core/primitives/select/__workshop__/readOnly.tsx +0 -23
- package/src/core/primitives/spinner/__workshop__/Props.tsx +0 -15
- package/src/core/primitives/spinner/__workshop__/index.ts +0 -14
- package/src/core/primitives/stack/__workshop__/index.ts +0 -14
- package/src/core/primitives/stack/__workshop__/plain.tsx +0 -32
- package/src/core/primitives/switch/__workshop__/example.tsx +0 -23
- package/src/core/primitives/switch/__workshop__/index.ts +0 -11
- package/src/core/primitives/switch/__workshop__/props.tsx +0 -21
- package/src/core/primitives/text/__workshop__/colored.tsx +0 -30
- package/src/core/primitives/text/__workshop__/example.tsx +0 -39
- package/src/core/primitives/text/__workshop__/index.ts +0 -24
- package/src/core/primitives/text/__workshop__/opticalAlignment.tsx +0 -48
- package/src/core/primitives/textArea/__workshop__/index.ts +0 -14
- package/src/core/primitives/textArea/__workshop__/plain.tsx +0 -50
- package/src/core/primitives/textInput/__workshop__/clearButton.tsx +0 -30
- package/src/core/primitives/textInput/__workshop__/customValidity.tsx +0 -17
- package/src/core/primitives/textInput/__workshop__/index.ts +0 -44
- package/src/core/primitives/textInput/__workshop__/plain.tsx +0 -98
- package/src/core/primitives/textInput/__workshop__/readOnly.tsx +0 -9
- package/src/core/primitives/textInput/__workshop__/states.tsx +0 -53
- package/src/core/primitives/textInput/__workshop__/tones.tsx +0 -277
- package/src/core/primitives/textInput/__workshop__/typed.tsx +0 -23
- package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +0 -102
- package/src/core/primitives/tooltip/__workshop__/index.ts +0 -29
- package/src/core/primitives/tooltip/__workshop__/overflowingBoundary.tsx +0 -74
- package/src/core/primitives/tooltip/__workshop__/props.tsx +0 -107
- package/src/core/primitives/tooltip/__workshop__/resizableBoundary.tsx +0 -86
- package/src/core/theme/__workshop__/build/Root.tsx +0 -367
- package/src/core/theme/__workshop__/build/helpers.ts +0 -46
- package/src/core/theme/__workshop__/build/story.tsx +0 -465
- package/src/core/theme/__workshop__/canvas.tsx +0 -352
- package/src/core/theme/__workshop__/color.tsx +0 -62
- package/src/core/theme/__workshop__/debug/story.tsx +0 -408
- package/src/core/theme/__workshop__/index.ts +0 -39
- package/src/core/theme/__workshop__/layer.tsx +0 -78
- package/src/core/theme/__workshop__/nestedProvider.tsx +0 -15
- package/src/core/utils/boundaryElement/__workshop__/index.ts +0 -14
- package/src/core/utils/boundaryElement/__workshop__/plain.tsx +0 -19
- package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +0 -30
- package/src/core/utils/elementQuery/__workshop__/index.ts +0 -14
- package/src/core/utils/layer/__workshop__/_debug.tsx +0 -17
- package/src/core/utils/layer/__workshop__/index.ts +0 -24
- package/src/core/utils/layer/__workshop__/multipleRoots.tsx +0 -49
- package/src/core/utils/layer/__workshop__/nested.tsx +0 -98
- package/src/core/utils/layer/__workshop__/responsiveZOffset.tsx +0 -13
- package/src/core/utils/portal/__workshop__/index.ts +0 -14
- package/src/core/utils/portal/__workshop__/named.tsx +0 -63
- package/src/core/utils/virtualList/__workshop__/changingProps.tsx +0 -36
- package/src/core/utils/virtualList/__workshop__/elementScroll.tsx +0 -24
- package/src/core/utils/virtualList/__workshop__/index.ts +0 -29
- package/src/core/utils/virtualList/__workshop__/infiniteList.tsx +0 -48
- package/src/core/utils/virtualList/__workshop__/windowScrolll.tsx +0 -22
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/core/helpers/animation.ts","../src/core/helpers/focus.ts","../src/core/hooks/useClickOutside.ts","../src/core/hooks/useElementRect/useElementRect.ts","../src/core/hooks/useForwardedRef.ts","../src/core/utils/errorBoundary.tsx","../src/core/components/autocomplete/autocomplete.styles.tsx","../src/core/components/autocomplete/autocompleteOption.tsx","../src/core/components/autocomplete/autocompleteReducer.ts","../src/core/components/autocomplete/constants.ts","../src/core/components/autocomplete/autocomplete.tsx","../src/core/components/breadcrumbs/breadcrumbs.styles.ts","../src/core/components/breadcrumbs/breadcrumbs.tsx","../src/core/components/dialog/styles.ts","../src/core/components/dialog/dialogContext.ts","../src/core/components/dialog/useDialog.ts","../src/core/components/dialog/dialog.tsx","../src/core/components/dialog/dialogProvider.tsx","../src/core/components/menu/menuButton.tsx","../src/core/components/skeleton/styles.ts","../src/core/components/skeleton/skeleton.tsx","../src/core/components/skeleton/textSkeleton.tsx","../src/core/components/tab/tabPanel.tsx","../src/core/components/toast/styles.ts","../src/core/components/toast/toast.tsx","../src/core/hooks/useMounted.ts","../src/core/components/toast/toastContext.ts","../src/core/components/toast/toastLayer.tsx","../src/core/components/toast/toastState.ts","../src/core/components/toast/toastProvider.tsx","../src/core/components/toast/useToast.ts","../src/core/components/tree/helpers.ts","../src/core/components/tree/treeContext.ts","../src/core/components/tree/tree.tsx","../src/core/components/tree/style.ts","../src/core/components/tree/useTree.ts","../src/core/components/tree/treeGroup.tsx","../src/core/components/tree/treeItem.tsx"],"sourcesContent":["/**\n * @internal\n */\nexport function _raf(fn: () => void): () => void {\n const frameId = requestAnimationFrame(fn)\n\n return () => {\n cancelAnimationFrame(frameId)\n }\n}\n\n/**\n * @internal\n */\nexport function _raf2(fn: () => void): () => void {\n let innerDispose: (() => void) | null = null\n\n const outerDispose = _raf(() => {\n innerDispose = _raf(fn)\n })\n\n return () => {\n if (innerDispose) innerDispose()\n\n outerDispose()\n }\n}\n","import {\n isHTMLAnchorElement,\n isHTMLButtonElement,\n isHTMLElement,\n isHTMLInputElement,\n isHTMLSelectElement,\n isHTMLTextAreaElement,\n} from './element'\n\n// export const globalFocusState = {\n// IgnoreUtilFocusChanges: false,\n// }\n\n/**\n * @internal\n */\nexport function _hasFocus(element: HTMLElement): boolean {\n return Boolean(document.activeElement) && element.contains(document.activeElement)\n}\n\n/**\n * @internal\n */\nexport function isFocusable(element: HTMLElement): boolean {\n if (\n element.tabIndex > 0 ||\n (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)\n ) {\n return true\n }\n\n if (isHTMLAnchorElement(element)) {\n return Boolean(element.href) && element.rel !== 'ignore'\n }\n\n if (isHTMLInputElement(element)) {\n return element.type !== 'hidden' && element.type !== 'file' && !element.disabled\n }\n\n if (\n isHTMLButtonElement(element) ||\n isHTMLSelectElement(element) ||\n isHTMLTextAreaElement(element)\n ) {\n return !element.disabled\n }\n\n return false\n}\n\n/**\n * @internal\n */\nexport function attemptFocus(element: HTMLElement): boolean {\n if (!isFocusable(element)) {\n return false\n }\n\n // globalFocusState.IgnoreUtilFocusChanges = true\n\n try {\n element.focus()\n } catch {\n // ignore\n }\n\n // globalFocusState.IgnoreUtilFocusChanges = false\n\n return document.activeElement === element\n}\n\n/**\n * @internal\n */\nexport function focusFirstDescendant(element: HTMLElement): boolean {\n for (let i = 0; i < element.childNodes.length; i++) {\n const child = element.childNodes[i]\n\n if (isHTMLElement(child) && (attemptFocus(child) || focusFirstDescendant(child))) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * @internal\n */\nexport function focusLastDescendant(element: HTMLElement): boolean {\n for (let i = element.childNodes.length - 1; i >= 0; i--) {\n const child = element.childNodes[i]\n\n if (isHTMLElement(child) && (attemptFocus(child) || focusLastDescendant(child))) {\n return true\n }\n }\n\n return false\n}\n","import {useEffect, useRef, useState} from 'react'\n\nimport {EMPTY_ARRAY} from '../constants'\n\n/**\n * @public\n */\nexport type ClickOutsideListener = (event: MouseEvent) => void\n\n/**\n * @public\n */\nexport type ClickOutsideElements = (HTMLElement | null | (HTMLElement | null)[])[]\n\nfunction _getElements(\n element: HTMLElement | null,\n elementsArg: ClickOutsideElements,\n): HTMLElement[] {\n const ret = [element]\n\n for (const el of elementsArg) {\n if (Array.isArray(el)) {\n ret.push(...el)\n } else {\n ret.push(el)\n }\n }\n\n return ret.filter(Boolean) as HTMLElement[]\n}\n\n/**\n * @public\n * @deprecated replaced by the new `useClickOutsideEvent` hook, instead of:\n * ```tsx\n * const [button, setButtonElement] = useState(null)\n * useClickOutside((event) => {}, [button])\n * return <button ref={setButtonElement} />\n * ```\n * do:\n * ```tsx\n * const buttonRef = useRef()\n * useClickOutsideEvent((event) => {}, () => [buttonRef.current])\n * return <button ref={buttonRef} />\n * ```\n */\nexport function useClickOutside(\n listener: ClickOutsideListener,\n elementsArg: ClickOutsideElements = EMPTY_ARRAY,\n boundaryElement?: HTMLElement | null,\n): (el: HTMLElement | null) => void {\n const [element, setElement] = useState<HTMLElement | null>(null)\n const [elements, setElements] = useState(() => _getElements(element, elementsArg))\n const elementsRef = useRef(elements)\n\n useEffect(() => {\n const prevElements = elementsRef.current\n const nextElements = _getElements(element, elementsArg)\n\n if (prevElements.length !== nextElements.length) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setElements(nextElements)\n elementsRef.current = nextElements\n\n return\n }\n\n for (const el of prevElements) {\n if (!nextElements.includes(el)) {\n setElements(nextElements)\n elementsRef.current = nextElements\n\n return\n }\n }\n\n for (const el of nextElements) {\n if (!prevElements.includes(el)) {\n setElements(nextElements)\n elementsRef.current = nextElements\n\n return\n }\n }\n }, [element, elementsArg])\n\n useEffect(() => {\n if (!listener) return undefined\n\n const handleWindowMouseDown = (evt: MouseEvent) => {\n const target = evt.target\n\n if (!(target instanceof Node)) {\n return\n }\n\n if (boundaryElement && !boundaryElement.contains(target)) {\n return\n }\n\n for (const el of elements) {\n if (target === el || el.contains(target)) {\n return\n }\n }\n\n listener(evt)\n }\n\n window.addEventListener('mousedown', handleWindowMouseDown)\n\n return () => {\n window.removeEventListener('mousedown', handleWindowMouseDown)\n }\n }, [boundaryElement, listener, elements])\n\n return setElement\n}\n","import {useElementSize} from '../useElementSize'\n\n/**\n * Subscribe to the rect of a DOM element.\n * @beta\n *\n * @deprecated Use `useElementSize` instead\n */\nexport function useElementRect(element: HTMLElement | null): DOMRectReadOnly | null {\n const elementSize = useElementSize(element)\n\n return elementSize?._contentRect || null\n}\n","import {useImperativeHandle, useRef} from 'react'\n\n/**\n * @beta\n * @deprecated use `useImperativeHandle` instead\n * @example\n * ```diff\n * -const ref = useForwardedRef(forwardedRef)\n * +const ref = useRef(null)\n * +useImperativeHandle(forwardedRef, () => ref.current)\n * ```\n */\nexport function useForwardedRef<T>(ref: React.ForwardedRef<T>): React.MutableRefObject<T | null> {\n const innerRef = useRef<T | null>(null)\n\n useImperativeHandle(ref, () => innerRef.current!)\n\n return innerRef\n}\n","import {Component, PropsWithChildren} from 'react'\n\nimport {Code} from '../primitives/code'\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport type ErrorBoundaryProps = PropsWithChildren<{\n onCatch: (params: {error: Error; info: React.ErrorInfo}) => void\n}>\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport interface ErrorBoundaryState {\n error: Error | null\n}\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = {error: null}\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n // Update state so the next render will show the fallback UI.\n return {error}\n }\n\n componentDidCatch(error: Error, info: React.ErrorInfo): void {\n this.props.onCatch({error, info})\n }\n\n render(): React.ReactNode {\n const {error} = this.state\n\n if (error) {\n const message = typeof error?.message === 'string' ? error.message : 'Error'\n\n return <Code>{message}</Code>\n }\n\n return this.props.children\n }\n}\n","import {SpinnerIcon} from '@sanity/icons'\nimport {keyframes, styled} from 'styled-components'\n\nimport {Box} from '../../primitives'\n\n/**\n * @internal\n */\nexport const StyledAutocomplete = styled.div`\n line-height: 0;\n`\n\n/**\n * @internal\n */\nexport const ListBox = styled(Box)`\n & > ul {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n`\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n`\n\n/**\n * @internal\n */\nexport const AnimatedSpinnerIcon = styled(SpinnerIcon)`\n animation: ${rotate} 500ms linear infinite;\n`\n","import {useCallback} from 'react'\n\nimport {_isEnterToClickElement} from '../../helpers'\n\nexport interface AutocompleteOptionProps {\n children: React.ReactNode\n id: string\n onSelect: (v: string) => void\n selected: boolean\n value: string\n}\n\nexport function AutocompleteOption(props: AutocompleteOptionProps): React.JSX.Element {\n const {children, id, onSelect, selected, value} = props\n\n const handleClick = useCallback(() => {\n // Calling the `onSelect` in a timeout is a fix to\n // allow the `click` event to propagate in some cases\n setTimeout(() => {\n onSelect(value)\n }, 0)\n }, [onSelect, value])\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLLIElement>) => {\n if (event.key === 'Enter' && !_isEnterToClickElement(event.currentTarget)) {\n handleClick()\n }\n },\n [handleClick],\n )\n\n return (\n <li\n aria-selected={selected}\n data-ui=\"AutocompleteOption\"\n id={id}\n role=\"option\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {children}\n </li>\n )\n}\n","import {AutocompleteMsg, AutocompleteState} from './types'\n\n/**\n * @internal\n */\nexport function autocompleteReducer(\n state: AutocompleteState,\n msg: AutocompleteMsg,\n): AutocompleteState {\n if (msg.type === 'input/change') {\n return {...state, activeValue: null, focused: true, query: msg.query}\n }\n\n if (msg.type === 'input/focus') {\n return {...state, focused: true}\n }\n\n if (msg.type === 'root/blur') {\n return {...state, focused: false, query: null}\n }\n\n if (msg.type === 'root/clear') {\n return {...state, activeValue: null, query: null, value: null}\n }\n\n if (msg.type === 'root/escape') {\n return {...state, focused: false, query: null}\n }\n\n if (msg.type === 'root/open') {\n return {...state, query: state.query || msg.query}\n }\n\n if (msg.type === 'root/setActiveValue') {\n return {...state, activeValue: msg.value, listFocused: msg.listFocused || state.listFocused}\n }\n\n if (msg.type === 'root/setListFocused') {\n return {...state, listFocused: msg.listFocused}\n }\n\n if (msg.type === 'value/change') {\n return {...state, activeValue: msg.value, query: null, value: msg.value}\n }\n\n return state\n}\n","import {Placement} from '../../types'\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_LISTBOX_IGNORE_KEYS = [\n 'Control',\n 'Shift',\n 'Alt',\n 'Enter',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n 'Meta',\n 'Tab',\n 'CapsLock',\n]\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_POPOVER_PLACEMENT: Placement = 'bottom-start'\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS: Placement[] = ['bottom-start', 'top-start']\n","import {ChevronDownIcon} from '@sanity/icons'\nimport {\n ChangeEvent,\n cloneElement,\n ElementType,\n FocusEvent,\n forwardRef,\n HTMLProps,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\n\nimport {EMPTY_ARRAY, EMPTY_RECORD} from '../../constants'\nimport {_hasFocus, _raf, focusFirstDescendant} from '../../helpers'\nimport {useArrayProp} from '../../hooks'\nimport {\n Box,\n BoxProps,\n Button,\n Card,\n Popover,\n PopoverProps,\n Stack,\n Text,\n TextInput,\n} from '../../primitives'\nimport {Radius} from '../../types'\nimport {AnimatedSpinnerIcon, ListBox, StyledAutocomplete} from './autocomplete.styles'\nimport {AutocompleteOption} from './autocompleteOption'\nimport {autocompleteReducer} from './autocompleteReducer'\nimport {\n AUTOCOMPLETE_LISTBOX_IGNORE_KEYS,\n AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS,\n AUTOCOMPLETE_POPOVER_PLACEMENT,\n} from './constants'\nimport {AutocompleteOpenButtonProps, BaseAutocompleteOption} from './types'\n\n/**\n * @public\n */\nexport interface AutocompleteProps<Option extends BaseAutocompleteOption = BaseAutocompleteOption> {\n border?: boolean\n customValidity?: string\n filterOption?: (query: string, option: Option) => boolean\n fontSize?: number | number[]\n icon?: ElementType | ReactNode\n id: string\n /** @beta */\n listBox?: BoxProps\n loading?: boolean\n onChange?: (value: string) => void\n onQueryChange?: (query: string | null) => void\n onSelect?: (value: string) => void\n /** @beta */\n openButton?: boolean | AutocompleteOpenButtonProps\n /** @beta */\n openOnFocus?: boolean\n /** The options to render. */\n options?: Option[]\n padding?: number | number[]\n popover?: Omit<PopoverProps, 'content' | 'onMouseEnter' | 'onMouseLeave' | 'open'> &\n Omit<HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'ref' | 'width'>\n prefix?: ReactNode\n radius?: Radius | Radius[]\n /** @beta */\n relatedElements?: HTMLElement[]\n /** The callback function for rendering each option. */\n renderOption?: (option: Option) => React.JSX.Element\n /** @beta */\n renderPopover?: (\n props: {\n content: React.JSX.Element | null\n hidden: boolean\n inputElement: HTMLInputElement | null\n onMouseEnter: () => void\n onMouseLeave: () => void\n },\n ref: Ref<HTMLDivElement>,\n ) => ReactNode\n renderValue?: (value: string, option?: Option) => string\n suffix?: ReactNode\n /** The current value. */\n value?: string\n}\n\nconst DEFAULT_RENDER_VALUE = (value: string, option?: BaseAutocompleteOption) =>\n option ? option.value : value\n\nconst DEFAULT_FILTER_OPTION = (query: string, option: BaseAutocompleteOption) =>\n option.value.toLowerCase().indexOf(query.toLowerCase()) > -1\n\nconst InnerAutocomplete = forwardRef(function InnerAutocomplete<\n Option extends BaseAutocompleteOption,\n>(\n props: AutocompleteProps<Option> &\n Omit<\n HTMLProps<HTMLInputElement>,\n | 'aria-activedescendant'\n | 'aria-autocomplete'\n | 'aria-expanded'\n | 'aria-owns'\n | 'as'\n | 'autoCapitalize'\n | 'autoComplete'\n | 'autoCorrect'\n | 'id'\n | 'inputMode'\n | 'onChange'\n | 'onSelect'\n | 'popover'\n | 'prefix'\n | 'ref'\n | 'role'\n | 'spellCheck'\n | 'type'\n | 'value'\n >,\n forwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n const {\n border = true,\n customValidity,\n disabled,\n filterOption: filterOptionProp,\n fontSize = 2,\n icon,\n id,\n listBox = EMPTY_RECORD,\n loading,\n onBlur,\n onChange,\n onFocus,\n onQueryChange,\n onSelect,\n openButton,\n openOnFocus,\n options: optionsProp,\n padding: paddingProp = 3,\n popover = EMPTY_RECORD,\n prefix,\n radius = 2,\n readOnly,\n relatedElements,\n renderOption: renderOptionProp,\n renderPopover,\n renderValue = DEFAULT_RENDER_VALUE,\n suffix,\n value: valueProp,\n ...restProps\n } = props\n\n const [state, dispatch] = useReducer(autocompleteReducer, {\n activeValue: valueProp || null,\n focused: false,\n listFocused: false,\n query: null,\n value: valueProp || null,\n })\n\n const {activeValue, focused, listFocused, query, value} = state\n\n const defaultRenderOption = useCallback(\n ({value}: BaseAutocompleteOption) => (\n <Card data-as=\"button\" padding={paddingProp} radius={2} tone=\"inherit\">\n <Text size={fontSize} textOverflow=\"ellipsis\">\n {value}\n </Text>\n </Card>\n ),\n [fontSize, paddingProp],\n )\n\n const renderOption =\n typeof renderOptionProp === 'function' ? renderOptionProp : defaultRenderOption\n\n const filterOption =\n typeof filterOptionProp === 'function' ? filterOptionProp : DEFAULT_FILTER_OPTION\n\n // Element refs\n const rootElementRef = useRef<HTMLDivElement | null>(null)\n const resultsPopoverElementRef = useRef<HTMLDivElement | null>(null)\n const inputElementRef = useRef<HTMLInputElement | null>(null)\n const listBoxElementRef = useRef<HTMLDivElement | null>(null)\n\n // Value refs\n const listFocusedRef = useRef(false)\n const valueRef = useRef(value)\n const valuePropRef = useRef(valueProp)\n const popoverMouseWithinRef = useRef(false)\n\n // Forward ref to parent\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => inputElementRef.current,\n )\n\n const listBoxId = `${id}-listbox`\n const options = Array.isArray(optionsProp) ? optionsProp : EMPTY_ARRAY\n const padding = useArrayProp(paddingProp)\n const currentOption = useMemo(\n () => (value !== null ? options.find((o) => o.value === value) : undefined),\n [options, value],\n )\n const filteredOptions = useMemo(\n () => options.filter((option) => (query ? filterOption(query, option) : true)),\n [filterOption, options, query],\n )\n const filteredOptionsLen = filteredOptions.length\n const activeItemId = activeValue ? `${id}-option-${activeValue}` : undefined\n const expanded = (query !== null && loading) || (focused && query !== null)\n\n const handleRootBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n setTimeout(() => {\n // NOTE: This is a workaround for a bug that may happen in Chrome (clicking the scrollbar\n // closes the results in certain situations):\n // - Do not handle blur if the mouse is within the popover\n if (popoverMouseWithinRef.current) {\n return\n }\n\n const elements: HTMLElement[] = (relatedElements || []).concat(\n rootElementRef.current ? [rootElementRef.current] : [],\n resultsPopoverElementRef.current ? [resultsPopoverElementRef.current] : [],\n )\n\n let focusInside = false\n\n if (document.activeElement) {\n for (const e of elements) {\n if (e === document.activeElement || e.contains(document.activeElement)) {\n focusInside = true\n break\n }\n }\n }\n\n if (focusInside === false) {\n dispatch({type: 'root/blur'})\n popoverMouseWithinRef.current = false\n if (onQueryChange) onQueryChange(null)\n if (onBlur) onBlur(event)\n }\n }, 0)\n },\n [onBlur, onQueryChange, relatedElements],\n )\n\n const handleRootFocus = useCallback((event: FocusEvent<HTMLDivElement>) => {\n const listBoxElement = listBoxElementRef.current\n const focusedElement = event.target instanceof HTMLElement ? event.target : null\n const listFocused = listBoxElement?.contains(focusedElement) || false\n\n if (listFocused !== listFocusedRef.current) {\n listFocusedRef.current = listFocused\n\n dispatch({type: 'root/setListFocused', listFocused})\n }\n }, [])\n\n const handleOptionSelect = useCallback(\n (v: string) => {\n dispatch({type: 'value/change', value: v})\n\n popoverMouseWithinRef.current = false\n\n if (onSelect) onSelect(v)\n\n valueRef.current = v\n\n if (onChange) onChange(v)\n if (onQueryChange) onQueryChange(null)\n\n inputElementRef.current?.focus()\n },\n [onChange, onSelect, onQueryChange],\n )\n\n const handleRootKeyDown = useCallback(\n (event: KeyboardEvent<HTMLElement>) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n\n if (!filteredOptionsLen) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n const activeIndex = activeOption ? filteredOptions.indexOf(activeOption) : -1\n const nextActiveOption = filteredOptions[(activeIndex + 1) % filteredOptionsLen]\n\n if (nextActiveOption) {\n dispatch({type: 'root/setActiveValue', value: nextActiveOption.value, listFocused: true})\n }\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n\n if (!filteredOptionsLen) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n const activeIndex = activeOption ? filteredOptions.indexOf(activeOption) : -1\n const nextActiveOption =\n filteredOptions[\n activeIndex === -1\n ? filteredOptionsLen - 1\n : (filteredOptionsLen + activeIndex - 1) % filteredOptionsLen\n ]\n\n if (nextActiveOption) {\n dispatch({type: 'root/setActiveValue', value: nextActiveOption.value, listFocused: true})\n }\n\n return\n }\n\n if (event.key === 'Escape') {\n dispatch({type: 'root/escape'})\n popoverMouseWithinRef.current = false\n if (onQueryChange) onQueryChange(null)\n inputElementRef.current?.focus()\n\n return\n }\n\n const target = event.target as Node\n const listEl = listBoxElementRef.current\n\n if (\n (listEl === target || listEl?.contains(target)) &&\n !AUTOCOMPLETE_LISTBOX_IGNORE_KEYS.includes(event.key)\n ) {\n inputElementRef.current?.focus()\n\n return\n }\n },\n [activeValue, filteredOptions, filteredOptionsLen, onQueryChange],\n )\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const nextQuery = event.currentTarget.value\n\n dispatch({type: 'input/change', query: nextQuery})\n\n if (onQueryChange) onQueryChange(nextQuery)\n },\n [onQueryChange],\n )\n\n const dispatchOpen = useCallback(() => {\n dispatch({\n type: 'root/open',\n query: value ? renderValue(value, currentOption) : '',\n })\n }, [currentOption, renderValue, value])\n\n const handleInputFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (!focused) {\n dispatch({type: 'input/focus'})\n\n if (onFocus) onFocus(event)\n if (openOnFocus) dispatchOpen()\n }\n },\n [focused, onFocus, openOnFocus, dispatchOpen],\n )\n\n const handlePopoverMouseEnter = useCallback(() => {\n popoverMouseWithinRef.current = true\n }, [])\n\n const handlePopoverMouseLeave = useCallback(() => {\n popoverMouseWithinRef.current = false\n }, [])\n\n const handleClearButtonClick = useCallback(() => {\n dispatch({type: 'root/clear'})\n valueRef.current = ''\n if (onChange) onChange('')\n if (onQueryChange) onQueryChange(null)\n inputElementRef.current?.focus()\n }, [onChange, onQueryChange])\n\n const handleClearButtonFocus = useCallback(() => {\n dispatch({type: 'input/focus'})\n }, [])\n\n // Change the value when `value` prop changes\n useEffect(() => {\n // If `valueProp` changed\n if (valueProp !== valuePropRef.current) {\n valuePropRef.current = valueProp\n\n if (valueProp !== undefined) {\n dispatch({type: 'value/change', value: valueProp})\n valueRef.current = valueProp\n }\n\n return\n }\n\n // If `valueProp` is not equal to `value`\n if (valueProp !== valueRef.current) {\n valueRef.current = valueProp || null\n\n dispatch({type: 'value/change', value: valueProp || null})\n }\n }, [valueProp])\n\n // Reset active item when closing\n useEffect(() => {\n if (!focused && valueRef.current) {\n dispatch({type: 'root/setActiveValue', value: valueRef.current})\n }\n }, [focused])\n\n // Focus the selected item\n useEffect(() => {\n const listElement = listBoxElementRef.current\n\n if (!listElement) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n\n if (activeOption) {\n const activeIndex = filteredOptions.indexOf(activeOption)\n const activeItemElement = listElement.childNodes[activeIndex] as HTMLLIElement | undefined\n\n if (activeItemElement) {\n if (_hasFocus(activeItemElement)) {\n // already focused\n return\n }\n\n focusFirstDescendant(activeItemElement)\n }\n }\n }, [activeValue, filteredOptions])\n\n const clearButton = useMemo(() => {\n if (!loading && !disabled && value) {\n return {\n 'aria-label': 'Clear',\n 'onFocus': handleClearButtonFocus,\n }\n }\n\n return undefined\n }, [disabled, handleClearButtonFocus, loading, value])\n\n const openButtonBoxPadding = useMemo(\n () =>\n padding.map((v) => {\n if (v === 0) return 0\n if (v === 1) return 1\n if (v === 2) return 1\n\n return v - 2\n }),\n [padding],\n )\n const openButtonPadding = useMemo(() => padding.map((v) => Math.max(v - 1, 0)), [padding])\n const openButtonProps: AutocompleteOpenButtonProps = useMemo(\n () => (typeof openButton === 'object' ? openButton : EMPTY_RECORD),\n [openButton],\n )\n\n const handleOpenClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n dispatchOpen()\n\n if (openButtonProps.onClick) openButtonProps.onClick(event)\n\n _raf(() => inputElementRef.current?.focus())\n },\n [openButtonProps, dispatchOpen],\n )\n\n const openButtonNode = useMemo(\n () =>\n !disabled && !readOnly && openButton ? (\n <Box aria-hidden={expanded} padding={openButtonBoxPadding}>\n <Button\n aria-label=\"Open\"\n disabled={expanded}\n fontSize={fontSize}\n icon={ChevronDownIcon}\n mode=\"bleed\"\n padding={openButtonPadding}\n {...openButtonProps}\n onClick={handleOpenClick}\n />\n </Box>\n ) : undefined,\n [\n disabled,\n expanded,\n fontSize,\n handleOpenClick,\n openButton,\n openButtonBoxPadding,\n openButtonPadding,\n openButtonProps,\n readOnly,\n ],\n )\n\n const inputValue = useMemo(() => {\n if (query === null) {\n if (value !== null) {\n return renderValue(value, currentOption)\n }\n\n return ''\n }\n\n return query\n }, [currentOption, query, renderValue, value])\n\n const input = (\n <TextInput\n {...restProps}\n aria-activedescendant={activeItemId}\n aria-autocomplete=\"list\"\n aria-expanded={expanded}\n aria-owns={listBoxId}\n autoCapitalize=\"off\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n border={border}\n clearButton={clearButton}\n customValidity={customValidity}\n disabled={disabled}\n fontSize={fontSize}\n icon={icon}\n iconRight={loading && AnimatedSpinnerIcon}\n id={id}\n inputMode=\"search\"\n onChange={handleInputChange}\n onClear={handleClearButtonClick}\n onFocus={handleInputFocus}\n padding={padding}\n prefix={prefix}\n radius={radius}\n readOnly={readOnly}\n ref={inputElementRef}\n role=\"combobox\"\n spellCheck={false}\n suffix={suffix || openButtonNode}\n value={inputValue}\n />\n )\n\n const handleListBoxKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n // If the focus is currently in the list, move focus to the input element\n if (event.key === 'Tab') {\n if (listFocused) inputElementRef.current?.focus()\n }\n },\n [listFocused],\n )\n\n const content = useMemo(() => {\n if (filteredOptions.length === 0) return null\n\n return (\n <ListBox\n data-ui=\"AutoComplete__results\"\n onKeyDown={handleListBoxKeyDown}\n padding={1}\n {...listBox}\n tabIndex={-1}\n >\n <Stack\n as=\"ul\"\n aria-multiselectable={false}\n data-ui=\"AutoComplete__resultsList\"\n id={listBoxId}\n ref={listBoxElementRef}\n role=\"listbox\"\n space={1}\n >\n {filteredOptions.map((option) => {\n const active =\n activeValue !== null ? option.value === activeValue : currentOption === option\n\n return (\n <AutocompleteOption\n id={`${id}-option-${option.value}`}\n key={option.value}\n onSelect={handleOptionSelect}\n selected={active}\n value={option.value}\n >\n {cloneElement(renderOption(option), {\n disabled: loading,\n selected: active,\n tabIndex: listFocused && active ? 0 : -1,\n })}\n </AutocompleteOption>\n )\n })}\n </Stack>\n </ListBox>\n )\n }, [\n activeValue,\n currentOption,\n filteredOptions,\n handleOptionSelect,\n handleListBoxKeyDown,\n id,\n listBox,\n listBoxId,\n listFocused,\n loading,\n renderOption,\n ])\n\n const results = useMemo(() => {\n if (renderPopover) {\n return renderPopover(\n // eslint-disable-next-line react-hooks/refs\n {\n content,\n hidden: !expanded,\n // eslint-disable-next-line react-hooks/refs\n inputElement: inputElementRef.current,\n onMouseEnter: handlePopoverMouseEnter,\n onMouseLeave: handlePopoverMouseLeave,\n },\n // eslint-disable-next-line react-hooks/refs\n resultsPopoverElementRef,\n )\n }\n\n if (filteredOptionsLen === 0) {\n return null\n }\n\n return (\n <Popover\n arrow={false}\n constrainSize\n content={content}\n fallbackPlacements={AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS}\n matchReferenceWidth\n onMouseEnter={handlePopoverMouseEnter}\n onMouseLeave={handlePopoverMouseLeave}\n open={expanded}\n overflow=\"auto\"\n placement={AUTOCOMPLETE_POPOVER_PLACEMENT}\n portal\n radius={radius}\n ref={resultsPopoverElementRef}\n // eslint-disable-next-line react-hooks/refs\n referenceElement={inputElementRef.current}\n {...popover}\n />\n )\n }, [\n content,\n expanded,\n filteredOptionsLen,\n handlePopoverMouseEnter,\n handlePopoverMouseLeave,\n popover,\n radius,\n renderPopover,\n ])\n\n return (\n <StyledAutocomplete\n data-ui=\"Autocomplete\"\n onBlur={handleRootBlur}\n onFocus={handleRootFocus}\n onKeyDown={handleRootKeyDown}\n ref={rootElementRef}\n >\n {input}\n {results}\n </StyledAutocomplete>\n )\n})\n\nInnerAutocomplete.displayName = 'ForwardRef(Autocomplete)'\n\n/**\n * The Autocomplete component is typically used for search components.\n * It consists of a text input for writing a query, and properties for rendering suggestions.\n *\n * @public\n */\nexport const Autocomplete = InnerAutocomplete as <Option extends BaseAutocompleteOption>(\n props: AutocompleteProps<Option> &\n Omit<\n HTMLProps<HTMLInputElement>,\n | 'aria-activedescendant'\n | 'aria-autocomplete'\n | 'aria-expanded'\n | 'aria-owns'\n | 'as'\n | 'autoCapitalize'\n | 'autoComplete'\n | 'autoCorrect'\n | 'id'\n | 'inputMode'\n | 'onChange'\n | 'onSelect'\n | 'popover'\n | 'prefix'\n | 'ref'\n | 'role'\n | 'spellCheck'\n | 'type'\n | 'value'\n > & {\n ref?: Ref<HTMLInputElement>\n },\n) => React.JSX.Element\n","import {styled} from 'styled-components'\n\nimport {Button} from '../../primitives'\n\nexport const StyledBreadcrumbs = styled.ol`\n margin: 0;\n padding: 0;\n display: flex;\n list-style: none;\n align-items: center;\n white-space: nowrap;\n line-height: 0;\n`\n\nexport const ExpandButton = styled(Button)`\n appearance: none;\n margin: -4px;\n`\n","import {\n Children,\n forwardRef,\n Fragment,\n isValidElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport {useArrayProp, useClickOutsideEvent} from '../../hooks'\nimport {Box, Popover, Stack, Text} from '../../primitives'\nimport {ExpandButton, StyledBreadcrumbs} from './breadcrumbs.styles'\n\n/**\n * @beta\n */\nexport interface BreadcrumbsProps {\n maxLength?: number\n separator?: React.ReactNode\n space?: number | number[]\n}\n\n/**\n * @beta\n */\nexport const Breadcrumbs = forwardRef(function Breadcrumbs(\n props: BreadcrumbsProps & Omit<React.HTMLProps<HTMLOListElement>, 'as' | 'ref' | 'type'>,\n ref: React.ForwardedRef<HTMLOListElement>,\n) {\n const {children, maxLength, separator, space: spaceRaw = 2, ...restProps} = props\n const space = useArrayProp(spaceRaw)\n const [open, setOpen] = useState(false)\n const expandElementRef = useRef<HTMLButtonElement | null>(null)\n const popoverElementRef = useRef<HTMLDivElement | null>(null)\n\n const collapse = useCallback(() => setOpen(false), [])\n const expand = useCallback(() => setOpen(true), [])\n\n useClickOutsideEvent(collapse, () => [expandElementRef.current, popoverElementRef.current])\n\n const rawItems = useMemo(() => Children.toArray(children).filter(isValidElement), [children])\n\n const items = useMemo(() => {\n const len = rawItems.length\n\n if (maxLength && len > maxLength) {\n const beforeLength = Math.ceil(maxLength / 2)\n const afterLength = Math.floor(maxLength / 2)\n\n return [\n ...rawItems.slice(0, beforeLength - 1),\n <Popover\n constrainSize\n content={\n <Stack as=\"ol\" overflow=\"auto\" padding={space} space={space}>\n {rawItems.slice(beforeLength - 1, len - afterLength)}\n </Stack>\n }\n key=\"button\"\n open={open}\n placement=\"top\"\n portal\n ref={popoverElementRef}\n >\n <ExpandButton\n fontSize={1}\n mode=\"bleed\"\n onClick={open ? collapse : expand}\n padding={1}\n ref={expandElementRef}\n selected={open}\n text=\"…\"\n />\n </Popover>,\n ...rawItems.slice(len - afterLength),\n ]\n }\n\n return rawItems\n }, [collapse, expand, maxLength, open, rawItems, space])\n\n return (\n <StyledBreadcrumbs data-ui=\"Breadcrumbs\" {...restProps} ref={ref}>\n {items.map((item, itemIndex) => (\n <Fragment key={itemIndex}>\n {itemIndex > 0 && (\n <Box aria-hidden as=\"li\" paddingX={space}>\n {separator || <Text muted>/</Text>}\n </Box>\n )}\n <Box as=\"li\">{item}</Box>\n </Fragment>\n ))}\n </StyledBreadcrumbs>\n )\n})\nBreadcrumbs.displayName = 'ForwardRef(Breadcrumbs)'\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\n\nimport {_responsive, ThemeProps} from '../../styles'\nimport {DialogPosition} from '../../types'\n\n/**\n * @internal\n */\nexport interface ResponsiveDialogPositionStyleProps {\n $position: DialogPosition[]\n}\n\nexport function dialogStyle({theme}: ThemeProps): CSSObject {\n const {color} = getTheme_v2(theme)\n\n return {\n '&:not([hidden])': {\n display: 'flex',\n },\n\n 'top': 0,\n 'left': 0,\n 'right': 0,\n 'bottom': 0,\n 'alignItems': 'center',\n 'justifyContent': 'center',\n 'outline': 'none',\n 'background': color.backdrop,\n }\n}\n\nexport function responsiveDialogPositionStyle(\n props: ResponsiveDialogPositionStyleProps & ThemeProps,\n): CSSObject[] {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$position, (position) => ({'&&': {position}}))\n}\n\n/**\n * @internal\n */\nexport interface AnimationDialogStyleProps {\n $animate: boolean\n}\n\nexport function animationDialogStyle(props: AnimationDialogStyleProps): ReturnType<typeof css> {\n if (!props.$animate) return css``\n\n return css`\n @keyframes zoomIn {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n }\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n animation: fadeIn 200ms ease-out;\n // Animates the dialog card.\n & > [data-ui='DialogCard'] {\n animation: zoomIn 200ms ease-out;\n }\n `\n}\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {DialogPosition} from '../../types'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface DialogContextValue {\n version: 0.0\n position?: DialogPosition | DialogPosition[]\n zOffset?: number | number[]\n}\n\n/**\n * @internal\n */\nexport const DialogContext = createGlobalScopedContext<DialogContextValue>(\n '@sanity/ui/context/dialog',\n {version: 0.0},\n)\n","import {useContext} from 'react'\n\nimport {DialogContext, DialogContextValue} from './dialogContext'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function useDialog(): DialogContextValue {\n return useContext(DialogContext)\n}\n","import {CloseIcon} from '@sanity/icons'\nimport {ThemeColorSchemeKey} from '@sanity/ui/theme'\nimport {forwardRef, useCallback, useEffect, useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {\n containsOrEqualsElement,\n focusFirstDescendant,\n focusLastDescendant,\n isHTMLElement,\n} from '../../helpers'\nimport {\n useArrayProp,\n useClickOutsideEvent,\n useGlobalKeyDown,\n usePrefersReducedMotion,\n} from '../../hooks'\nimport {Box, Button, Card, Container, Flex, Text} from '../../primitives'\nimport {ResponsivePaddingProps, ResponsiveWidthProps} from '../../primitives/types'\nimport {responsivePaddingStyle, ResponsivePaddingStyleProps} from '../../styles/internal'\nimport {useTheme_v2} from '../../theme'\nimport {DialogPosition, Radius} from '../../types'\nimport {Layer, LayerProps, Portal, useBoundaryElement, useLayer, usePortal} from '../../utils'\nimport {\n animationDialogStyle,\n AnimationDialogStyleProps,\n dialogStyle,\n responsiveDialogPositionStyle,\n ResponsiveDialogPositionStyleProps,\n} from './styles'\nimport {useDialog} from './useDialog'\n\n/**\n * @public\n */\nexport interface DialogProps extends ResponsivePaddingProps, ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_autoFocus?: boolean\n /**\n * @beta\n */\n __unstable_hideCloseButton?: boolean\n cardRadius?: Radius | Radius[]\n cardShadow?: number | number[]\n contentRef?: React.ForwardedRef<HTMLDivElement>\n footer?: React.ReactNode\n header?: React.ReactNode\n id: string\n /** A callback that fires when the dialog becomes the top layer when it was not the top layer before. */\n onActivate?: LayerProps['onActivate']\n onClickOutside?: () => void\n onClose?: () => void\n portal?: string\n position?: DialogPosition | DialogPosition[]\n scheme?: ThemeColorSchemeKey\n zOffset?: number | number[]\n /**\n * Whether the dialog should animate in on mount.\n *\n * @beta\n * @defaultValue false\n */\n animate?: boolean\n}\n\ninterface DialogCardProps extends ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_autoFocus: boolean\n /**\n * @beta\n */\n __unstable_hideCloseButton: boolean\n children: React.ReactNode\n contentRef?: React.ForwardedRef<HTMLDivElement>\n footer: React.ReactNode\n header: React.ReactNode\n id: string\n onClickOutside?: () => void\n onClose?: () => void\n portal?: string\n radius: Radius | Radius[]\n scheme?: ThemeColorSchemeKey\n shadow: number | number[]\n}\n\nfunction isTargetWithinScope(\n boundaryElement: HTMLElement | null,\n portalElement: HTMLElement | null,\n target: Node,\n): boolean {\n if (!boundaryElement || !portalElement) return true\n\n return (\n containsOrEqualsElement(boundaryElement, target) ||\n containsOrEqualsElement(portalElement, target)\n )\n}\n\nconst StyledDialog = styled(Layer)<\n ResponsiveDialogPositionStyleProps & ResponsivePaddingStyleProps & AnimationDialogStyleProps\n>(responsivePaddingStyle, dialogStyle, responsiveDialogPositionStyle, animationDialogStyle)\n\nconst DialogContainer = styled(Container)`\n &:not([hidden]) {\n display: flex;\n }\n width: 100%;\n height: 100%;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`\n\nconst DialogCardRoot = styled(Card)`\n &:not([hidden]) {\n display: flex;\n }\n width: 100%;\n min-height: 0;\n max-height: 100%;\n overflow: hidden;\n overflow: clip;\n`\n\nconst DialogLayout = styled(Flex)`\n flex: 1;\n min-height: 0;\n width: 100%;\n`\n\nconst DialogHeader = styled(Box)`\n position: relative;\n z-index: 2;\n`\n\nconst DialogContent = styled(Box)`\n position: relative;\n z-index: 1;\n overflow: auto;\n outline: none;\n`\n\nconst DialogFooter = styled(Box)`\n position: relative;\n z-index: 3;\n`\n\nconst DialogCard = forwardRef(function DialogCard(\n props: DialogCardProps,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n __unstable_autoFocus: autoFocus,\n __unstable_hideCloseButton: hideCloseButton,\n children,\n contentRef: forwardedContentRef,\n footer,\n header,\n id,\n onClickOutside,\n onClose,\n portal: portalProp,\n radius: radiusProp,\n scheme,\n shadow: shadowProp,\n width: widthProp,\n } = props\n const portal = usePortal()\n const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element\n const boundaryElement = useBoundaryElement().element\n const radius = useArrayProp(radiusProp)\n const shadow = useArrayProp(shadowProp)\n const width = useArrayProp(widthProp)\n const ref = useRef<HTMLDivElement | null>(null)\n const contentRef = useRef<HTMLDivElement | null>(null)\n const layer = useLayer()\n const {isTopLayer} = layer\n const labelId = `${id}_label`\n const showCloseButton = Boolean(onClose) && hideCloseButton === false\n const showHeader = Boolean(header) || showCloseButton\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(\n forwardedContentRef,\n () => contentRef.current,\n )\n\n useEffect(() => {\n if (!autoFocus) return\n\n // On mount: focus the first focusable element\n if (ref.current) {\n focusFirstDescendant(ref.current)\n }\n }, [autoFocus, ref])\n\n useGlobalKeyDown(\n useCallback(\n (event: KeyboardEvent) => {\n if (!isTopLayer || !onClose) return\n\n const target = document.activeElement\n\n if (target && !isTargetWithinScope(boundaryElement, portalElement, target)) {\n // Ignore key presses when the focused element is outside of scope\n return\n }\n\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n onClose()\n }\n },\n [boundaryElement, isTopLayer, onClose, portalElement],\n ),\n )\n\n useClickOutsideEvent(\n isTopLayer &&\n onClickOutside &&\n ((event) => {\n const target = event.target as Node | null\n\n if (target && !isTargetWithinScope(boundaryElement, portalElement, target)) {\n // Ignore clicks outside of the scope\n return\n }\n\n onClickOutside()\n }),\n () => [ref.current],\n )\n\n return (\n <DialogContainer data-ui=\"DialogCard\" width={width}>\n <DialogCardRoot radius={radius} ref={ref} scheme={scheme} shadow={shadow}>\n <DialogLayout direction=\"column\">\n {showHeader && (\n <DialogHeader>\n <Flex align=\"flex-start\" padding={3}>\n <Box flex={1} padding={2}>\n {header && (\n <Text id={labelId} size={1} weight=\"semibold\">\n {header}\n </Text>\n )}\n </Box>\n {showCloseButton && (\n <Box flex=\"none\">\n <Button\n aria-label=\"Close dialog\"\n disabled={!onClose}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n padding={2}\n />\n </Box>\n )}\n </Flex>\n </DialogHeader>\n )}\n\n <DialogContent flex={1} ref={contentRef} tabIndex={-1}>\n {children}\n </DialogContent>\n\n {footer && <DialogFooter>{footer}</DialogFooter>}\n </DialogLayout>\n </DialogCardRoot>\n </DialogContainer>\n )\n})\n\nDialogCard.displayName = 'ForwardRef(DialogCard)'\n\n/**\n * The Dialog component.\n *\n * @public\n */\nexport const Dialog = forwardRef(function Dialog(\n props: DialogProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'id' | 'width'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const dialog = useDialog()\n const {layer} = useTheme_v2()\n const {\n __unstable_autoFocus: autoFocus = true,\n __unstable_hideCloseButton: hideCloseButton = false,\n cardRadius: cardRadiusProp = 4,\n cardShadow = 3,\n children,\n contentRef,\n footer,\n header,\n id,\n onActivate,\n onClickOutside,\n onClose,\n onFocus,\n padding: paddingProp = 3,\n portal: portalProp,\n position: _positionProp,\n scheme,\n width: widthProp = 0,\n zOffset: _zOffsetProp,\n animate: _animate = false,\n ...restProps\n } = props\n const positionProp = _positionProp ?? (dialog.position || 'fixed')\n const zOffsetProp = _zOffsetProp ?? (dialog.zOffset || layer.dialog.zOffset)\n const prefersReducedMotion = usePrefersReducedMotion()\n const animate = prefersReducedMotion ? false : _animate\n const portal = usePortal()\n const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element\n const boundaryElement = useBoundaryElement().element\n const cardRadius = useArrayProp(cardRadiusProp)\n const padding = useArrayProp(paddingProp)\n const position = useArrayProp(positionProp)\n const width = useArrayProp(widthProp)\n const zOffset = useArrayProp(zOffsetProp)\n const preDivRef = useRef<HTMLDivElement | null>(null)\n const postDivRef = useRef<HTMLDivElement | null>(null)\n const cardRef = useRef<HTMLDivElement | null>(null)\n const focusedElementRef = useRef<HTMLElement | null>(null)\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n onFocus?.(event)\n\n const target = event.target\n const cardElement = cardRef.current\n\n if (cardElement && target === preDivRef.current) {\n focusLastDescendant(cardElement)\n\n return\n }\n\n if (cardElement && target === postDivRef.current) {\n focusFirstDescendant(cardElement)\n\n return\n }\n\n if (isHTMLElement(event.target)) {\n focusedElementRef.current = event.target\n }\n },\n [onFocus],\n )\n\n const labelId = `${id}_label`\n\n const rootClickTimeoutRef = useRef<NodeJS.Timeout>(undefined)\n\n // If the resulting active element (a.k.a. focused element) is not withing scope when clicking\n // within the dialog, then we want to focus the previously interactive element in the dialog instead.\n // This is to allow the user to tab or close the dialog by pressing escape.\n const handleRootClick = useCallback(() => {\n if (rootClickTimeoutRef.current) {\n clearTimeout(rootClickTimeoutRef.current)\n }\n\n rootClickTimeoutRef.current = setTimeout(() => {\n const activeElement = document.activeElement\n\n if (activeElement && !isTargetWithinScope(boundaryElement, portalElement, activeElement)) {\n const target = focusedElementRef.current\n\n if (!target || !document.body.contains(target)) {\n // No previously focused element, or it's not in the document anymore\n const cardElement = cardRef.current\n if (cardElement) focusFirstDescendant(cardElement)\n\n return\n }\n\n target.focus()\n }\n }, 0)\n }, [boundaryElement, portalElement])\n\n return (\n <Portal __unstable_name={portalProp}>\n <StyledDialog\n {...restProps}\n $animate={animate}\n $padding={padding}\n $position={position}\n aria-labelledby={labelId}\n aria-modal\n data-ui=\"Dialog\"\n id={id}\n onActivate={onActivate}\n onClick={handleRootClick}\n onFocus={handleFocus}\n ref={ref}\n role=\"dialog\"\n zOffset={zOffset}\n >\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n <div ref={preDivRef} tabIndex={0} />\n <DialogCard\n __unstable_autoFocus={autoFocus}\n __unstable_hideCloseButton={hideCloseButton}\n contentRef={contentRef}\n footer={footer}\n header={header}\n id={id}\n onClickOutside={onClickOutside}\n onClose={onClose}\n portal={portalProp}\n radius={cardRadius}\n ref={cardRef}\n scheme={scheme}\n shadow={cardShadow}\n width={width}\n >\n {children}\n </DialogCard>\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n <div ref={postDivRef} tabIndex={0} />\n </StyledDialog>\n </Portal>\n )\n})\nDialog.displayName = 'ForwardRef(Dialog)'\n","import {useMemo} from 'react'\n\nimport {DialogPosition} from '../../types'\nimport {DialogContext, DialogContextValue} from './dialogContext'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface DialogProviderProps {\n children?: React.ReactNode\n position?: DialogPosition | DialogPosition[]\n zOffset?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function DialogProvider(props: DialogProviderProps): React.JSX.Element {\n const {children, position, zOffset} = props\n\n const contextValue: DialogContextValue = useMemo(\n () => ({\n version: 0.0,\n position,\n zOffset,\n }),\n [position, zOffset],\n )\n\n return <DialogContext.Provider value={contextValue}>{children}</DialogContext.Provider>\n}\n\nDialogProvider.displayName = 'DialogProvider'\n","import {ThemeColorSchemeKey} from '@sanity/ui/theme'\nimport {\n cloneElement,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport {Popover, PopoverProps} from '../../primitives'\nimport {Placement, Radius} from '../../types'\nimport {MenuProps} from './menu'\n\n/**\n * @public\n */\nexport interface MenuButtonProps {\n /**\n * @beta Do not use in production.\n */\n __unstable_disableRestoreFocusOnClose?: boolean\n /**\n * @deprecated Use `popover={{boundaryElement: element}}` instead.\n */\n boundaryElement?: HTMLElement\n button: React.JSX.Element\n id: string\n menu?: React.JSX.Element\n onClose?: () => void\n onOpen?: () => void\n /**\n * @deprecated Use `popover={{placement: 'top'}}` instead.\n */\n placement?: Placement\n popover?: Omit<PopoverProps, 'content' | 'open'>\n /**\n * @deprecated Use `popover={{scheme: 'dark'}}` instead.\n */\n popoverScheme?: ThemeColorSchemeKey\n /**\n * @deprecated Use `popover={{radius: 2}}` instead.\n */\n popoverRadius?: Radius | Radius[]\n /**\n * @beta Do not use in production.\n * @deprecated Use `popover={{portal: true}}` instead.\n */\n portal?: boolean\n /**\n * @deprecated Use `popover={{preventOverflow: true}}` instead.\n */\n preventOverflow?: boolean\n}\n\n/**\n * The `MenuButton` component follows the WAI-ARIA specification for menu buttons.\n *\n * @public\n */\nexport const MenuButton = forwardRef(function MenuButton(\n props: MenuButtonProps,\n forwardedRef: React.ForwardedRef<HTMLButtonElement | null>,\n) {\n const {\n __unstable_disableRestoreFocusOnClose: disableRestoreFocusOnClose = false,\n boundaryElement: deprecated_boundaryElement,\n button: buttonProp,\n id,\n menu: menuProp,\n onClose,\n onOpen,\n placement: deprecated_placement,\n popoverScheme: deprecated_popoverScheme,\n portal: deprecated_portal = true,\n popover,\n popoverRadius: deprecated_popoverRadius,\n preventOverflow: deprecated_preventOverflow,\n } = props\n const [open, setOpen] = useState(false)\n const [shouldFocus, setShouldFocus] = useState<'first' | 'last' | null>(null)\n const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)\n const [menuElements, setChildMenuElements] = useState<HTMLElement[]>([])\n const openRef = useRef<boolean>(open)\n\n // Notify consumers when the menu opens\n useEffect(() => {\n if (onOpen && open && !openRef.current) {\n onOpen()\n }\n }, [onOpen, open])\n\n // Notify consumers when the menu closes\n useEffect(() => {\n if (onClose && !open && openRef.current) {\n onClose()\n }\n }, [onClose, open])\n\n useEffect(() => {\n openRef.current = open\n }, [open])\n\n const handleButtonClick = useCallback(() => {\n setOpen((v) => !v)\n setShouldFocus(null)\n }, [])\n\n // Prevent mouse event propagation when the menu is open.\n // This is to ensure that `handleBlur` isn't triggered when clicking the menu button whilst open,\n // which can lead to `setOpen` being triggered multiple times (once by `handleBlur`, and again by `handleButtonClick`).\n const handleMouseDown = useCallback(\n (event: PointerEvent) => {\n if (open) event.preventDefault()\n },\n [open],\n )\n\n const handleButtonKeyDown = useCallback((event: React.KeyboardEvent<HTMLButtonElement>) => {\n // On `ArrowDown`, `Enter` and `Space`\n // - Opens menu and moves focus to first menuitem\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n setOpen(true)\n setShouldFocus('first')\n\n return\n }\n\n // On `ArrowUp`\n // - \tOpens menu and moves focus to last menuitem\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n setOpen(true)\n setShouldFocus('last')\n\n return\n }\n }, [])\n\n const handleMenuClickOutside = useCallback(\n (event: MouseEvent) => {\n const target = event.target\n\n if (!(target instanceof Node)) {\n return\n }\n\n if (buttonElement && (target === buttonElement || buttonElement.contains(target))) {\n return\n }\n\n for (const el of menuElements) {\n if (target === el || el.contains(target)) {\n return\n }\n }\n\n setOpen(false)\n },\n [buttonElement, menuElements],\n )\n\n const handleMenuEscape = useCallback(() => {\n setOpen(false)\n if (disableRestoreFocusOnClose) return\n if (buttonElement) buttonElement.focus()\n }, [buttonElement, disableRestoreFocusOnClose])\n\n const handleBlur = useCallback(\n (event: FocusEvent) => {\n const target = event.relatedTarget\n\n if (!(target instanceof Node)) {\n return\n }\n\n for (const el of menuElements) {\n if (el === target || el.contains(target)) {\n return\n }\n }\n\n setOpen(false)\n },\n [menuElements],\n )\n\n const handleItemClick = useCallback(() => {\n setOpen(false)\n if (disableRestoreFocusOnClose) return\n if (buttonElement) buttonElement.focus()\n }, [buttonElement, disableRestoreFocusOnClose])\n\n const registerElement = useCallback((el: HTMLElement) => {\n setChildMenuElements((els) => els.concat([el]))\n\n return () => setChildMenuElements((els) => els.filter((_el) => _el !== el))\n }, [])\n\n const menuProps: MenuProps = {\n 'aria-labelledby': id,\n 'onBlurCapture': handleBlur,\n 'onClickOutside': handleMenuClickOutside,\n 'onEscape': handleMenuEscape,\n 'onItemClick': handleItemClick,\n 'originElement': buttonElement,\n registerElement,\n shouldFocus,\n }\n\n const menu = menuProp && cloneElement(menuProp, menuProps)\n\n const button = useMemo(\n () =>\n buttonProp &&\n cloneElement(buttonProp, {\n 'data-ui': 'MenuButton',\n id,\n 'onClick': handleButtonClick,\n 'onKeyDown': handleButtonKeyDown,\n 'onMouseDown': handleMouseDown,\n 'aria-haspopup': true,\n 'aria-expanded': open,\n 'ref': setButtonElement,\n 'selected': buttonProp.props.selected ?? open,\n }),\n [buttonProp, handleButtonClick, handleButtonKeyDown, handleMouseDown, id, open],\n )\n\n // Forward button ref to parent\n useImperativeHandle<HTMLButtonElement | null, HTMLButtonElement | null>(\n forwardedRef,\n () => buttonElement,\n [buttonElement],\n )\n\n const popoverProps: MenuButtonProps['popover'] = useMemo(\n () => ({\n boundaryElement: deprecated_boundaryElement,\n overflow: 'auto',\n placement: deprecated_placement,\n portal: deprecated_portal,\n preventOverflow: deprecated_preventOverflow,\n radius: deprecated_popoverRadius,\n scheme: deprecated_popoverScheme,\n ...(popover || {}),\n }),\n [\n deprecated_boundaryElement,\n deprecated_placement,\n deprecated_popoverRadius,\n deprecated_popoverScheme,\n deprecated_portal,\n deprecated_preventOverflow,\n popover,\n ],\n )\n\n return (\n <Popover data-ui=\"MenuButton__popover\" {...popoverProps} content={menu} open={open}>\n {button || <></>}\n </Popover>\n )\n})\nMenuButton.displayName = 'ForwardRef(MenuButton)'\n","import {css, keyframes} from 'styled-components'\n\nconst keyframe = keyframes`\n 0% {\n background-position: 100%;\n }\n 100% {\n background-position: -100%;\n }\n`\n\nconst animation = css`\n background-image: linear-gradient(\n to right,\n var(--card-skeleton-color-from),\n var(--card-skeleton-color-to),\n var(--card-skeleton-color-from),\n var(--card-skeleton-color-from),\n var(--card-skeleton-color-from)\n );\n background-position: 100%;\n background-size: 200% 100%;\n background-attachment: fixed;\n animation-name: ${keyframe};\n animation-timing-function: ease-in-out;\n animation-iteration-count: infinite;\n animation-duration: 2000ms;\n`\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const skeletonStyle = css<{$animated: boolean; $visible: boolean}>`\n opacity: ${({$visible}) => ($visible ? 1 : 0)};\n transition: opacity 200ms ease-in;\n\n @media screen and (prefers-reduced-motion: no-preference) {\n ${({$animated}) =>\n $animated\n ? animation\n : css`\n background-color: var(--card-skeleton-color-from);\n `}\n }\n\n @media screen and (prefers-reduced-motion: reduce) {\n background-color: var(--card-skeleton-color-from);\n }\n`\n","import {forwardRef, useEffect, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useArrayProp} from '../../hooks'\nimport {Box, BoxProps, ResponsiveRadiusProps} from '../../primitives'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {skeletonStyle} from './styles'\n\nconst StyledSkeleton = styled(Box)<\n {$animated: boolean; $visible: boolean} & ResponsiveRadiusStyleProps\n>(responsiveRadiusStyle, skeletonStyle)\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface SkeletonProps extends ResponsiveRadiusProps, Omit<BoxProps, 'children'> {\n animated?: boolean\n delay?: number\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const Skeleton = forwardRef(function Skeleton(\n props: SkeletonProps & React.HTMLProps<HTMLDivElement>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {animated = false, delay, radius, ...restProps} = props\n const [visible, setVisible] = useState<boolean>(delay ? false : true)\n\n useEffect(() => {\n if (!delay) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n return setVisible(true)\n }\n\n const timeout = setTimeout(() => {\n setVisible(true)\n }, delay)\n\n return () => {\n clearTimeout(timeout)\n }\n }, [delay])\n\n return (\n <StyledSkeleton\n {...restProps}\n $animated={animated}\n $radius={useArrayProp(radius)}\n $visible={visible}\n ref={ref}\n />\n )\n})\nSkeleton.displayName = 'ForwardRef(Skeleton)'\n","import {getTheme_v2, ThemeFontKey} from '@sanity/ui/theme'\nimport {forwardRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useArrayProp} from '../../hooks'\nimport {_responsive, ThemeProps} from '../../styles'\nimport {Skeleton, SkeletonProps} from './skeleton'\n\nconst StyledSkeleton = styled(Skeleton)<{$size: number[]; $style: ThemeFontKey}>((\n props: {\n $size: number[]\n $style: ThemeFontKey\n } & ThemeProps,\n) => {\n const {$size, $style} = props\n const {font, media} = getTheme_v2(props.theme)\n const fontStyle = font[$style]\n\n const styles = _responsive(media, $size, (sizeIndex) => {\n const fontSize = fontStyle.sizes[sizeIndex]\n const capHeight = fontSize.lineHeight - fontSize.ascenderHeight - fontSize.descenderHeight\n\n return {height: capHeight}\n })\n\n return styles\n})\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface TextSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface LabelSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface HeadingSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface CodeSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const TextSkeleton = forwardRef(function TextSkeleton(\n props: TextSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} ref={ref} $style=\"text\" />\n})\nTextSkeleton.displayName = 'ForwardRef(TextSkeleton)'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const LabelSkeleton = forwardRef(function TextSkeleton(\n props: LabelSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} ref={ref} $style=\"label\" />\n})\nLabelSkeleton.displayName = 'ForwardRef(LabelSkeleton)'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const HeadingSkeleton = forwardRef(function TextSkeleton(\n props: HeadingSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} ref={ref} $style=\"heading\" />\n})\nHeadingSkeleton.displayName = 'ForwardRef(HeadingSkeleton)'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const CodeSkeleton = forwardRef(function TextSkeleton(\n props: CodeSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} ref={ref} $style=\"code\" />\n})\nCodeSkeleton.displayName = 'ForwardRef(CodeSkeleton)'\n","import {forwardRef} from 'react'\n\nimport {Box, BoxProps} from '../../primitives'\n\n/**\n * @public\n */\nexport interface TabPanelProps extends BoxProps {\n /**\n * The `id` of the correlating `Tab` component.\n */\n 'aria-labelledby': string\n 'id': string\n}\n\n/**\n * @public\n */\nexport const TabPanel = forwardRef(function TabPanel(\n props: TabPanelProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'aria-labelledby' | 'id' | 'role'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {flex, ...restProps} = props\n\n return (\n <Box\n data-ui=\"TabPanel\"\n {...restProps}\n flex={flex}\n ref={ref}\n role=\"tabpanel\"\n tabIndex={props.tabIndex === undefined ? 0 : props.tabIndex}\n >\n {props.children}\n </Box>\n )\n})\nTabPanel.displayName = 'ForwardRef(TabPanel)'\n","import {getTheme_v2, ThemeColorStateToneKey} from '@sanity/ui/theme'\nimport {styled} from 'styled-components'\n\nimport {Card, Flex} from '../../primitives'\nimport type {ButtonTone} from '../../types'\n\nconst LOADING_BAR_HEIGHT = 2\n\nexport const STATUS_CARD_TONE = {\n error: 'critical',\n warning: 'caution',\n success: 'positive',\n info: 'neutral',\n} satisfies {[key: string]: ThemeColorStateToneKey}\n\nexport const BUTTON_TONE = {\n error: 'critical',\n warning: 'caution',\n success: 'positive',\n info: 'neutral',\n} satisfies {[key: string]: ButtonTone}\n\nexport const TextBox = styled(Flex)`\n overflow-x: auto;\n`\n\nexport const StyledToast = styled(Card)`\n pointer-events: all;\n width: 100%;\n position: relative;\n overflow: hidden;\n overflow: clip;\n\n &[data-has-duration] {\n padding-bottom: calc(${LOADING_BAR_HEIGHT}px / 2);\n }\n`\n\nexport const LoadingBar = styled.div`\n display: flex;\n position: absolute;\n bottom: 0px;\n top: 0px;\n left: 0px;\n right: 0px;\n pointer-events: none;\n z-index: -1;\n overflow: hidden;\n overflow: clip;\n background: transparent;\n align-items: flex-end;\n will-change: opacity;\n`\n\nexport const LoadingBarMask = styled(Card)`\n position: absolute;\n top: 0;\n left: -${LOADING_BAR_HEIGHT}px;\n right: -${LOADING_BAR_HEIGHT}px;\n bottom: ${LOADING_BAR_HEIGHT}px;\n z-index: 1;\n`\n\ntype LoadingBarProgressProps = Omit<React.ComponentProps<typeof Card>, 'tone'> & {\n tone: ThemeColorStateToneKey\n}\nexport const LoadingBarProgress = styled<React.ComponentType<LoadingBarProgressProps>>(Card)`\n display: block;\n height: 100%;\n width: 100%;\n transform-origin: 0% 50%;\n background-color: ${(props) => {\n const {color} = getTheme_v2(props.theme)\n\n return color.button.default[props.tone].enabled.bg\n }};\n`\n","import {CloseIcon} from '@sanity/icons'\nimport {motion, type Variant, type Variants} from 'framer-motion'\n\nimport {usePrefersReducedMotion} from '../../hooks/usePrefersReducedMotion'\nimport {Box, Button, Flex, Stack, Text} from '../../primitives'\nimport {\n BUTTON_TONE,\n LoadingBar,\n LoadingBarMask,\n LoadingBarProgress,\n STATUS_CARD_TONE,\n StyledToast,\n TextBox,\n} from './styles'\n\n/**\n * @public\n */\nexport interface ToastProps {\n closable?: boolean\n description?: React.ReactNode\n onClose: () => void\n radius?: number | number[]\n title?: React.ReactNode\n status?: 'error' | 'warning' | 'success' | 'info'\n duration?: number\n updatedAt?: number\n}\n\nconst ROLES = {\n error: 'alert',\n warning: 'alert',\n success: 'alert',\n info: 'alert',\n} as const\n\n// Support pattern used by Sanity Studio, that works around the lack of `duration: Infinity` support in older @sanity/ui versions\n// https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value\nconst LONG_ENOUGH_BUT_NOT_TOO_LONG = 1000 * 60 * 60 * 24 * 24\n\n/**\n * The `Toast` component gives feedback to users when an action has taken place.\n *\n * Toasts can be closed with a close button, or auto-dismiss after a certain timeout.\n *\n * @public\n */\nexport function Toast(\n props: ToastProps &\n Omit<\n React.HTMLProps<HTMLDivElement>,\n | 'as'\n | 'height'\n | 'ref'\n | 'title'\n | 'onAnimationStart'\n | 'onDragStart'\n | 'onDragEnd'\n | 'onDrag'\n >,\n): React.JSX.Element {\n const {\n closable,\n description,\n duration,\n onClose,\n radius = 3,\n title,\n status,\n updatedAt,\n ...restProps\n } = props\n const cardTone = status ? STATUS_CARD_TONE[status] : 'default'\n const buttonTone = status ? BUTTON_TONE[status] : 'default'\n const role = status ? ROLES[status] : 'status'\n\n const prefersReducedMotion = usePrefersReducedMotion()\n\n const visualDuration: number = prefersReducedMotion ? 0 : 0.26\n const transition = visualDuration\n ? {type: 'spring' as const, visualDuration, bounce: 0.25}\n : {duration: 0}\n\n const hasDuration = duration && isFinite(duration) && duration < LONG_ENOUGH_BUT_NOT_TOO_LONG\n const initial: ContainerVariants[] = ['hidden', 'initial']\n const animate: ContainerVariants[] = ['visible', 'slideIn']\n const exit: ContainerVariants[] = ['hidden', 'slideOut']\n\n return (\n <MotionToast\n data-ui=\"Toast\"\n role={role}\n {...restProps}\n data-has-duration={hasDuration ? '' : undefined}\n custom={visualDuration}\n radius={radius}\n shadow={2}\n tone={cardTone}\n forwardedAs=\"li\"\n layout=\"position\"\n variants={container}\n initial={initial}\n animate={animate}\n exit={exit}\n transition={transition}\n >\n <MotionFlex align=\"flex-start\" variants={content} transition={transition}>\n <TextBox flex={1} padding={3}>\n <Stack space={3}>\n {title && (\n <Text size={1} weight=\"medium\">\n {title}\n </Text>\n )}\n {description && (\n <MotionText muted size={1} variants={content} transition={transition}>\n {description}\n </MotionText>\n )}\n </Stack>\n </TextBox>\n\n {closable && (\n <Box padding={1}>\n <Button\n as=\"button\"\n icon={CloseIcon}\n mode=\"bleed\"\n padding={2}\n tone={buttonTone}\n onClick={onClose}\n style={{verticalAlign: 'top'}}\n />\n </Box>\n )}\n </MotionFlex>\n {hasDuration && (\n <MotionLoadingBar variants={content} transition={transition}>\n <LoadingBarMask tone={cardTone} radius={radius} />\n <MotionLoadingBarProgress\n key={`progress-${updatedAt}`}\n tone={cardTone}\n initial={{scaleX: 0}}\n animate={{scaleX: 1}}\n transition={{delay: visualDuration, duration: duration / 1_000, ease: 'linear'}}\n onAnimationComplete={onClose}\n />\n </MotionLoadingBar>\n )}\n </MotionToast>\n )\n}\n\nToast.displayName = 'Toast'\n\nconst container = {\n initial: {y: 32, scale: 0.5, zIndex: 1},\n hidden: {opacity: 0},\n visible: (visualDuration: number) => {\n if (!visualDuration) return {opacity: 1}\n\n return {\n opacity: 1,\n transition: {\n when: 'beforeChildren',\n staggerChildren: visualDuration / 3,\n duration: visualDuration / 3,\n },\n }\n },\n slideIn: {\n y: 0,\n scale: 1,\n },\n slideOut: {\n zIndex: 0,\n scale: 0.75,\n },\n} satisfies Variants\ntype ContainerVariants = keyof typeof container\n\nconst content = {\n initial: {\n willChange: 'transform',\n },\n hidden: {\n opacity: 0,\n },\n visible: {\n opacity: 1,\n },\n} satisfies Partial<Record<ContainerVariants, Variant>>\n\nconst MotionToast = motion.create(StyledToast)\nconst MotionFlex = motion.create(Flex)\nconst MotionText = motion.create(Text)\nconst MotionLoadingBar = motion.create(LoadingBar)\nconst MotionLoadingBarProgress = motion.create(LoadingBarProgress)\n","import {useSyncExternalStore} from 'react'\n\n/**\n * Some components should only render after mounting to the DOM, and not be rendered at all during SSR renderToString or equivalent.\n * @public\n */\nexport function useMounted(): boolean {\n return useSyncExternalStore(\n subscribe,\n () => true,\n () => false,\n )\n}\n\nconst subscribe = () => () => {}\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {ToastContextValue} from './types'\n\nexport const ToastContext = createGlobalScopedContext<ToastContextValue | null>(\n '@sanity/ui/context/toast',\n null,\n)\n","import {styled} from 'styled-components'\n\nimport {Grid} from '../../primitives/grid'\nimport {useLayer} from '../../utils'\n\n/**\n * @public\n */\nexport interface ToastLayerProps {\n children: React.ReactNode\n padding?: number | number[]\n paddingX?: number | number[]\n paddingY?: number | number[]\n gap?: number | number[]\n}\n\n/**\n * @internal\n */\nexport function ToastLayer(props: ToastLayerProps): React.JSX.Element {\n const {children, padding = 4, paddingX, paddingY, gap = 3} = props\n const {zIndex} = useLayer()\n\n return (\n <StyledLayer\n forwardedAs=\"ul\"\n data-ui=\"ToastProvider\"\n padding={padding}\n paddingX={paddingX}\n paddingY={paddingY}\n gap={gap}\n columns={1}\n style={{zIndex}}\n >\n {children}\n </StyledLayer>\n )\n}\n\nToastLayer.displayName = 'ToastLayer'\n\nconst StyledLayer = styled(Grid)`\n box-sizing: border-box;\n position: fixed;\n right: 0;\n bottom: 0;\n list-style: none;\n pointer-events: none;\n max-width: 420px;\n width: 100%;\n`\n","let toastId = 0\n\n/** @internal */\nexport function generateToastId(): string {\n return String(toastId++)\n}\n","import {AnimatePresence} from 'framer-motion'\nimport {startTransition, useMemo, useState} from 'react'\n\nimport {useMounted} from '../../hooks/useMounted'\nimport {LayerProvider} from '../../utils'\nimport {Toast} from './toast'\nimport {ToastContext} from './toastContext'\nimport {ToastLayer, type ToastLayerProps} from './toastLayer'\nimport {generateToastId} from './toastState'\nimport {ToastContextValue, ToastParams} from './types'\n\ntype ToastState = {\n dismiss: () => void\n id: string\n updatedAt: number\n params: ToastParams\n}[]\n\n/**\n * @public\n */\nexport interface ToastProviderProps extends Omit<ToastLayerProps, 'children'> {\n children?: React.ReactNode\n zOffset?: number | number[]\n}\n\n/**\n * @public\n */\nexport function ToastProvider(props: ToastProviderProps): React.JSX.Element {\n const {children, padding, paddingX, paddingY, gap, zOffset = 1} = props\n const [state, setState] = useState<ToastState>([])\n const mounted = useMounted()\n\n const value: ToastContextValue = useMemo(() => {\n const push = (params: ToastParams) => {\n const id = params.id || generateToastId()\n const duration = params.duration || 5000\n\n startTransition(() => {\n setState((prevState): ToastState => {\n /**\n * Backwards compatibility for `sanity` patterns workaround a lack of programatically dismissible toasts.\n * It uses a super short duration that closes the toast immediately in previous versions of `@sanity/ui`.\n * We interpret this as a request to dismiss the toast immediately, and remove it from the state right away.\n * Even once we support programatic dismissal we'll need to keep this for backwards compatibility with v2 and v1.\n */\n if (duration === 0.01) {\n return prevState.filter((toast) => toast.id !== id)\n }\n\n /**\n * Creates a function to dismiss this specific toast.\n * This function will be passed to the Toast component\n * and called either on close button click or after duration.\n */\n const dismiss = () =>\n startTransition(() =>\n setState((currentState) => currentState.filter((toast) => toast.id !== id)),\n )\n\n /**\n * Create updated state by:\n * 1. Removing any existing toast with the same ID (prevents duplicates)\n * 2. Adding the new toast with its dismiss handler\n * 3. Updates the `updatedAt` timestamp, which resets progress bar count downs.\n */\n return [\n ...prevState.filter((toast) => toast.id !== id),\n {\n dismiss,\n id,\n updatedAt: Date.now(),\n params: {...params, duration},\n },\n ]\n })\n })\n\n return id\n }\n\n return {version: 0.0, push}\n }, [])\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n {mounted && (\n <LayerProvider zOffset={zOffset}>\n <ToastLayer padding={padding} paddingX={paddingX} paddingY={paddingY} gap={gap}>\n <AnimatePresence initial={false} mode=\"popLayout\">\n {state.map(({dismiss, id, params, updatedAt}) => (\n <Toast\n key={id}\n closable={params.closable}\n description={params.description}\n onClose={dismiss}\n status={params.status}\n title={params.title}\n duration={params.duration}\n updatedAt={updatedAt}\n />\n ))}\n </AnimatePresence>\n </ToastLayer>\n </LayerProvider>\n )}\n </ToastContext.Provider>\n )\n}\n\nToastProvider.displayName = 'ToastProvider'\n","import {useContext} from 'react'\n\nimport {isRecord} from '../../lib/isRecord'\nimport {ToastContext} from './toastContext'\nimport {ToastContextValue} from './types'\n\n/**\n * @public\n */\nexport function useToast(): ToastContextValue {\n const value = useContext(ToastContext)\n\n if (!value) {\n throw new Error('useToast(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('useToast(): the context value is not compatible')\n }\n\n return value\n}\n","import {TreeState} from './types'\n\nexport function _findPrevItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement,\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(0, idx)\n const len = els.length\n\n for (let i = len - 1; i >= 0; i -= 1) {\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _findNextItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement,\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(idx)\n const len = itemElements.length\n\n for (let i = 1; i < len; i += 1) {\n if (!els[i]) {\n continue\n }\n\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _focusItemElement(el: HTMLElement): void {\n if (el.getAttribute('role') === 'treeitem') {\n el.focus()\n }\n\n if (el.getAttribute('role') === 'none') {\n const firstChild = el.firstChild\n\n if (firstChild && firstChild instanceof HTMLElement) {\n firstChild.focus()\n }\n }\n}\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {TreeContextValue} from './types'\n\n/**\n * @internal\n */\nexport const TreeContext = createGlobalScopedContext<TreeContextValue | null>(\n '@sanity/ui/context/tree',\n null,\n)\n","import {\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport {Stack} from '../../primitives'\nimport {_findNextItemElement, _findPrevItemElement, _focusItemElement} from './helpers'\nimport {TreeContext} from './treeContext'\nimport {TreeContextValue, TreeState} from './types'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface TreeProps {\n space?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const Tree = memo(\n forwardRef(function Tree(\n props: TreeProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'align' | 'as' | 'height' | 'ref' | 'role' | 'wrap'>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n ): React.JSX.Element {\n const {children, space = 1, onFocus, ...restProps} = props\n const ref = useRef<HTMLDivElement | null>(null)\n const [focusedElement, setFocusedElement] = useState<HTMLElement | null>(null)\n const focusedElementRef = useRef(focusedElement)\n const path: string[] = useMemo(() => [], [])\n const [itemElements, setItemElements] = useState<HTMLElement[]>([])\n const [state, setState] = useState<TreeState>({})\n const stateRef = useRef(state)\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useEffect(() => {\n focusedElementRef.current = focusedElement\n }, [focusedElement])\n\n useEffect(() => {\n stateRef.current = state\n }, [state])\n\n const registerItem = useCallback(\n (element: HTMLElement, path: string, expanded: boolean, selected: boolean) => {\n setState((s) => ({...s, [path]: {element, expanded}}))\n\n if (selected) {\n setFocusedElement(element)\n }\n\n return () => {\n setState((s) => {\n const newState = {...s}\n\n delete newState[path]\n\n return newState\n })\n }\n },\n [],\n )\n\n const setExpanded = useCallback((path: string, expanded: boolean) => {\n setState((s) => {\n const itemState = s[path]\n\n if (!itemState) return s\n\n return {...s, [path]: {...itemState, expanded}}\n })\n }, [])\n\n const contextValue: TreeContextValue = useMemo(\n () => ({\n version: 0.0,\n focusedElement: focusedElement || itemElements[0] || null,\n level: 0,\n path,\n registerItem,\n setExpanded,\n setFocusedElement,\n space,\n state,\n }),\n [focusedElement, itemElements, path, registerItem, setExpanded, space, state],\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!focusedElementRef.current) return\n\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n\n const nextEl = _findNextItemElement(\n stateRef.current,\n itemElements,\n focusedElementRef.current,\n )\n\n if (nextEl) {\n _focusItemElement(nextEl)\n setFocusedElement(nextEl)\n }\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n\n const prevEl = _findPrevItemElement(\n stateRef.current,\n itemElements,\n focusedElementRef.current,\n )\n\n if (prevEl) {\n _focusItemElement(prevEl)\n setFocusedElement(prevEl)\n }\n\n return\n }\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n\n const itemKey = focusedElementRef.current.getAttribute('data-tree-key')\n\n if (!itemKey) return\n\n const itemState = stateRef.current[itemKey]\n\n if (!itemState) return\n\n if (itemState.expanded) {\n setState((s) => {\n const itemState = s[itemKey]\n\n if (!itemState) return s\n\n return {...s, [itemKey]: {...itemState, expanded: false}}\n })\n } else {\n const itemPath = itemKey.split('/')\n\n itemPath.pop()\n\n const parentKey = itemPath.join('/')\n const parentState = parentKey && stateRef.current[parentKey]\n\n if (parentState) {\n parentState.element.focus()\n setFocusedElement(parentState.element)\n }\n }\n\n return\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault()\n\n const focusedKey = focusedElementRef.current.getAttribute('data-tree-key')\n\n if (!focusedKey) return\n\n if (!stateRef.current[focusedKey]?.expanded) {\n setState((s) => {\n const itemState = s[focusedKey]\n\n if (!itemState) return s\n\n return {...s, [focusedKey]: {...itemState, expanded: true}}\n })\n }\n\n return\n }\n },\n [itemElements],\n )\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n setFocusedElement(event.target)\n\n // Call the element's `focus` handler\n onFocus?.(event)\n },\n [onFocus],\n )\n\n useEffect(() => {\n if (!ref.current) return\n const _itemElements = Array.from(\n ref.current.querySelectorAll('[data-ui=\"TreeItem\"]'),\n ) as HTMLElement[]\n\n setItemElements(_itemElements)\n }, [children])\n\n return (\n <TreeContext.Provider value={contextValue}>\n <Stack\n as=\"ul\"\n data-ui=\"Tree\"\n {...restProps}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n ref={ref}\n role=\"tree\"\n space={space}\n >\n {children}\n </Stack>\n </TreeContext.Provider>\n )\n }),\n)\nTree.displayName = 'Memo(ForwardRef(Tree))'\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\n\nimport {rem, ThemeProps} from '../../styles'\nimport {_cardColorStyle} from '../../styles/card'\n\nexport function treeItemRootStyle(): ReturnType<typeof css> {\n return css`\n &[role='none'] > [role='treeitem'] {\n outline: none;\n cursor: default;\n border-radius: 3px;\n\n background-color: var(--card-bg-color);\n color: var(--treeitem-fg-color);\n\n &:focus {\n position: relative;\n }\n }\n\n &[role='treeitem'] {\n outline: none;\n\n & > div {\n cursor: default;\n border-radius: 3px;\n\n background-color: var(--card-bg-color);\n color: var(--treeitem-fg-color);\n }\n\n &:focus > div {\n position: relative;\n }\n }\n `\n}\n\nexport function treeItemRootColorStyle(props: ThemeProps): ReturnType<typeof css> {\n const $tone = 'default'\n const {color} = getTheme_v2(props.theme)\n const tone = color.selectable[$tone]\n\n return css`\n &[role='none'] {\n & > [role='treeitem'] {\n ${_cardColorStyle(color, tone.enabled)}\n }\n\n &[data-selected] > [role='treeitem'] {\n ${_cardColorStyle(color, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) > [role='treeitem']:not(:focus):hover {\n ${_cardColorStyle(color, tone.hovered)}\n }\n\n & > [role='treeitem']:focus {\n ${_cardColorStyle(color, tone.selected)}\n }\n }\n }\n\n &[role='treeitem'] {\n & > [data-ui='TreeItem__box'] {\n ${_cardColorStyle(color, tone.enabled)}\n }\n\n &[data-selected] > [data-ui='TreeItem__box'] {\n ${_cardColorStyle(color, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]):not(:focus) > [data-ui='TreeItem__box']:hover {\n ${_cardColorStyle(color, tone.hovered)}\n }\n\n &:focus > [data-ui='TreeItem__box'] {\n ${_cardColorStyle(color, tone.selected)}\n }\n }\n }\n `\n}\n\nexport interface TreeItemBoxStyleProps {\n $level: number\n}\n\nexport function treeItemBoxStyle(\n props: TreeItemBoxStyleProps & ThemeProps,\n): ReturnType<typeof css> {\n const {$level} = props\n const {space} = getTheme_v2(props.theme)\n\n return css`\n padding-left: ${rem(space[2] * $level)};\n\n &[data-as='a'] {\n text-decoration: none;\n }\n `\n}\n","import {useContext} from 'react'\n\nimport {TreeContext} from './treeContext'\nimport {TreeContextValue} from './types'\n\n/**\n * @beta\n */\nexport function useTree(): TreeContextValue {\n const tree = useContext(TreeContext)\n\n if (!tree) {\n throw new Error('Tree: missing context value')\n }\n\n return tree\n}\n","import {memo} from 'react'\n\nimport {Stack} from '../../primitives'\nimport {useTree} from './useTree'\n\nexport interface TreeGroupProps {\n expanded?: boolean\n}\n\nexport const TreeGroup = memo(function TreeGroup(\n props: TreeGroupProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'role' | 'wrap'>,\n): React.JSX.Element {\n const {children, expanded = false, ...restProps} = props\n const tree = useTree()\n\n return (\n <Stack\n as=\"ul\"\n data-ui=\"TreeGroup\"\n {...restProps}\n hidden={!expanded}\n marginTop={tree.space}\n role=\"group\"\n space={tree.space}\n >\n {children}\n </Stack>\n )\n})\n","import {ToggleArrowRightIcon} from '@sanity/icons'\nimport {ThemeFontWeightKey} from '@sanity/ui/theme'\nimport {memo, useCallback, useEffect, useId, useMemo, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Box, BoxProps, Flex, Text} from '../../primitives'\nimport {\n treeItemBoxStyle,\n TreeItemBoxStyleProps,\n treeItemRootColorStyle,\n treeItemRootStyle,\n} from './style'\nimport {TreeContext} from './treeContext'\nimport {TreeGroup} from './treeGroup'\nimport {useTree} from './useTree'\n\n/**\n * @beta\n */\nexport interface TreeItemProps {\n expanded?: boolean\n fontSize?: number | number[]\n icon?: React.ElementType\n /**\n * Allows passing a custom element type to the link component\n */\n linkAs?: BoxProps['as']\n padding?: number | number[]\n space?: number | number[]\n text?: React.ReactNode\n weight?: ThemeFontWeightKey\n}\n\nconst StyledTreeItem = memo(styled.li(treeItemRootStyle, treeItemRootColorStyle))\n\nconst TreeItemBox = styled(Box).attrs({forwardedAs: 'a'})<TreeItemBoxStyleProps>(treeItemBoxStyle)\n\nconst ToggleArrowText = styled(Text)`\n & > svg {\n transition: transform 100ms;\n }\n`\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const TreeItem = memo(function TreeItem(\n props: TreeItemProps & Omit<React.HTMLProps<HTMLLIElement>, 'as' | 'ref' | 'role'>,\n): React.JSX.Element {\n const {\n children,\n expanded: expandedProp = false,\n fontSize = 1,\n href,\n icon: IconComponent,\n id: idProp,\n linkAs,\n muted,\n onClick,\n padding = 2,\n selected = false,\n space = 2,\n text,\n weight,\n ...restProps\n } = props\n const rootRef = useRef<HTMLLIElement | null>(null)\n const treeitemRef = useRef<HTMLDivElement | null>(null)\n const tree = useTree()\n const {path, registerItem, setExpanded, setFocusedElement} = tree\n const _id = useId()\n const id = idProp || _id\n const itemPath = useMemo(() => path.concat([id || '']), [id, path])\n const itemKey = itemPath.join('/')\n const itemState = tree.state[itemKey]\n // eslint-disable-next-line react-hooks/refs\n const focused = tree.focusedElement === rootRef.current\n const expanded = itemState?.expanded === undefined ? expandedProp : itemState?.expanded || false\n // eslint-disable-next-line react-hooks/refs\n const tabIndex = tree.focusedElement && tree.focusedElement === rootRef.current ? 0 : -1\n const contextValue = useMemo(\n () => ({...tree, level: tree.level + 1, path: itemPath}),\n [itemPath, tree],\n )\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLLIElement>) => {\n if (onClick) onClick(event)\n\n const target = event.target\n\n if (\n target instanceof HTMLElement &&\n (target.getAttribute('data-ui') === 'TreeItem' ||\n target.closest('[data-ui=\"TreeItem__box\"]'))\n ) {\n event.stopPropagation()\n setExpanded(itemKey, !expanded)\n setFocusedElement(rootRef.current)\n }\n },\n [expanded, itemKey, onClick, setExpanded, setFocusedElement],\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n if (focused && event.key === 'Enter') {\n const el = treeitemRef.current || rootRef.current\n\n el?.click()\n }\n },\n [focused],\n )\n\n useEffect(() => {\n if (!rootRef.current) return\n\n return registerItem(rootRef.current, itemPath.join('/'), expanded, selected)\n }, [expanded, itemPath, registerItem, selected])\n\n const content = (\n <Flex padding={padding}>\n <Box\n marginRight={space}\n style={{\n visibility: IconComponent || children ? 'visible' : 'hidden',\n pointerEvents: 'none',\n }}\n >\n {IconComponent && (\n <Text muted={muted} size={fontSize} weight={weight}>\n <IconComponent />\n </Text>\n )}\n {!IconComponent && (\n <ToggleArrowText muted={muted} size={fontSize} weight={weight}>\n <ToggleArrowRightIcon style={{transform: expanded ? 'rotate(90deg)' : undefined}} />\n </ToggleArrowText>\n )}\n </Box>\n <Box flex={1}>\n <Text muted={muted} size={fontSize} textOverflow=\"ellipsis\" weight={weight}>\n {text}\n </Text>\n </Box>\n </Flex>\n )\n\n if (href) {\n return (\n <StyledTreeItem\n data-selected={selected ? '' : undefined}\n data-tree-id={id}\n data-tree-key={itemKey}\n data-ui=\"TreeItem\"\n {...restProps}\n onClick={handleClick}\n ref={rootRef}\n role=\"none\"\n >\n <TreeItemBox\n $level={tree.level}\n aria-expanded={expanded}\n as={linkAs}\n data-ui=\"TreeItem__box\"\n href={href}\n ref={treeitemRef}\n role=\"treeitem\"\n tabIndex={tabIndex}\n >\n {content}\n </TreeItemBox>\n\n <TreeContext.Provider value={contextValue}>\n {children && <TreeGroup hidden={!expanded}>{children}</TreeGroup>}\n </TreeContext.Provider>\n </StyledTreeItem>\n )\n }\n\n return (\n <StyledTreeItem\n data-selected={selected ? '' : undefined}\n data-ui=\"TreeItem\"\n data-tree-id={id}\n data-tree-key={itemKey}\n {...restProps}\n aria-expanded={expanded}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n ref={rootRef}\n role=\"treeitem\"\n tabIndex={tabIndex}\n >\n <TreeItemBox $level={tree.level} as=\"div\" data-ui=\"TreeItem__box\">\n {content}\n </TreeItemBox>\n\n <TreeContext.Provider value={contextValue}>\n {children && <TreeGroup expanded={expanded}>{children}</TreeGroup>}\n </TreeContext.Provider>\n </StyledTreeItem>\n )\n})\nTreeItem.displayName = 'Memo(TreeItem)'\n"],"names":["_raf","fn","frameId","requestAnimationFrame","cancelAnimationFrame","_raf2","innerDispose","outerDispose","_hasFocus","element","Boolean","document","activeElement","contains","isFocusable","tabIndex","getAttribute","isHTMLAnchorElement","href","rel","isHTMLInputElement","type","disabled","isHTMLButtonElement","isHTMLSelectElement","isHTMLTextAreaElement","attemptFocus","focus","focusFirstDescendant","i","childNodes","length","child","isHTMLElement","focusLastDescendant","_getElements","elementsArg","ret","el","Array","isArray","push","filter","useClickOutside","listener","t0","boundaryElement","$","_c","undefined","EMPTY_ARRAY","setElement","useState","t1","elements","setElements","elementsRef","useRef","t2","t3","prevElements","current","nextElements","includes","el_0","useEffect","t4","t5","handleWindowMouseDown","evt","target","Node","el_1","window","addEventListener","removeEventListener","useElementRect","useElementSize","_contentRect","useForwardedRef","ref","innerRef","Symbol","for","useImperativeHandle","ErrorBoundary","Component","state","error","getDerivedStateFromError","componentDidCatch","info","props","onCatch","render","message","children","StyledAutocomplete","styled","div","withConfig","displayName","componentId","ListBox","Box","rotate","keyframes","AnimatedSpinnerIcon","SpinnerIcon","AutocompleteOption","id","onSelect","selected","value","setTimeout","handleClick","event","key","_isEnterToClickElement","currentTarget","handleKeyDown","autocompleteReducer","msg","activeValue","focused","query","listFocused","AUTOCOMPLETE_LISTBOX_IGNORE_KEYS","AUTOCOMPLETE_POPOVER_PLACEMENT","AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS","DEFAULT_RENDER_VALUE","option","DEFAULT_FILTER_OPTION","toLowerCase","indexOf","InnerAutocomplete","forwardRef","forwardedRef","border","customValidity","filterOption","filterOptionProp","fontSize","icon","listBox","EMPTY_RECORD","loading","onBlur","onChange","onFocus","onQueryChange","openButton","openOnFocus","options","optionsProp","padding","paddingProp","popover","prefix","radius","readOnly","relatedElements","renderOption","renderOptionProp","renderPopover","renderValue","suffix","valueProp","restProps","dispatch","useReducer","defaultRenderOption","useCallback","rootElementRef","resultsPopoverElementRef","inputElementRef","listBoxElementRef","listFocusedRef","valueRef","valuePropRef","popoverMouseWithinRef","listBoxId","useArrayProp","currentOption","useMemo","find","o","filteredOptions","filteredOptionsLen","activeItemId","expanded","handleRootBlur","concat","focusInside","e","handleRootFocus","listBoxElement","focusedElement","HTMLElement","handleOptionSelect","v","handleRootKeyDown","preventDefault","activeOption","activeIndex","nextActiveOption","listEl","handleInputChange","nextQuery","dispatchOpen","handleInputFocus","handlePopoverMouseEnter","handlePopoverMouseLeave","handleClearButtonClick","handleClearButtonFocus","listElement","activeItemElement","clearButton","openButtonBoxPadding","map","openButtonPadding","Math","max","openButtonProps","handleOpenClick","onClick","openButtonNode","ChevronDownIcon","inputValue","input","handleListBoxKeyDown","content","active","cloneElement","results","hidden","inputElement","onMouseEnter","onMouseLeave","Autocomplete","StyledBreadcrumbs","ol","ExpandButton","Button","Breadcrumbs","maxLength","separator","space","open","setOpen","expandElementRef","popoverElementRef","collapse","expand","useClickOutsideEvent","Children","toArray","isValidElement","rawItems","bb0","len","beforeLength","ceil","afterLength","floor","t6","t7","slice","t8","t9","t10","t11","t12","items","item","itemIndex","dialogStyle","theme","color","getTheme_v2","display","backdrop","responsiveDialogPositionStyle","media","_responsive","$position","position","animationDialogStyle","$animate","css","DialogContext","createGlobalScopedContext","version","useDialog","useContext","isTargetWithinScope","portalElement","containsOrEqualsElement","StyledDialog","Layer","responsivePaddingStyle","DialogContainer","Container","DialogCardRoot","Card","DialogLayout","Flex","DialogHeader","DialogContent","DialogFooter","DialogCard","__unstable_autoFocus","autoFocus","__unstable_hideCloseButton","hideCloseButton","contentRef","forwardedContentRef","footer","header","onClickOutside","onClose","portal","portalProp","radiusProp","scheme","shadow","shadowProp","width","widthProp","usePortal","useBoundaryElement","layer","useLayer","isTopLayer","labelId","showCloseButton","showHeader","stopPropagation","useGlobalKeyDown","event_0","target_0","CloseIcon","Dialog","dialog","useTheme_v2","_positionProp","_zOffsetProp","onActivate","cardRadius","cardShadow","zOffset","animate","cardRadiusProp","_animate","positionProp","zOffsetProp","usePrefersReducedMotion","preDivRef","postDivRef","cardRef","focusedElementRef","cardElement","handleFocus","rootClickTimeoutRef","clearTimeout","body","cardElement_0","handleRootClick","t13","DialogProvider","contextValue","MenuButton","__unstable_disableRestoreFocusOnClose","deprecated_boundaryElement","button","buttonProp","menu","menuProp","onOpen","placement","deprecated_placement","popoverScheme","deprecated_popoverScheme","popoverRadius","deprecated_popoverRadius","preventOverflow","deprecated_preventOverflow","disableRestoreFocusOnClose","deprecated_portal","shouldFocus","setShouldFocus","buttonElement","setButtonElement","menuElements","setChildMenuElements","openRef","_temp","handleButtonClick","handleMouseDown","handleButtonKeyDown","event_1","handleMenuClickOutside","handleMenuEscape","t14","event_2","relatedTarget","handleBlur","t15","handleItemClick","t16","els","els_0","_el","registerElement","t17","t18","t19","t20","t21","t22","overflow","popoverProps","t23","t24","keyframe","animation","skeletonStyle","$visible","$animated","StyledSkeleton","responsiveRadiusStyle","Skeleton","delay","animated","visible","setVisible","timeout","$size","$style","font","fontStyle","sizeIndex","sizes","height","lineHeight","ascenderHeight","descenderHeight","TextSkeleton","size","LabelSkeleton","HeadingSkeleton","CodeSkeleton","TabPanel","flex","LOADING_BAR_HEIGHT","STATUS_CARD_TONE","warning","success","BUTTON_TONE","TextBox","StyledToast","LoadingBar","LoadingBarMask","LoadingBarProgress","default","tone","enabled","bg","ROLES","LONG_ENOUGH_BUT_NOT_TOO_LONG","Toast","closable","description","duration","status","title","updatedAt","cardTone","buttonTone","role","visualDuration","bounce","transition","hasDuration","isFinite","initial","exit","verticalAlign","scaleX","ease","container","y","scale","zIndex","opacity","when","staggerChildren","slideIn","slideOut","willChange","MotionToast","motion","create","MotionFlex","MotionText","Text","MotionLoadingBar","MotionLoadingBarProgress","useMounted","useSyncExternalStore","subscribe","_temp2","ToastContext","ToastLayer","paddingX","paddingY","gap","StyledLayer","Grid","toastId","generateToastId","String","ToastProvider","setState","mounted","params","startTransition","prevState","toast","dismiss","currentState","toast_0","toast_1","Date","now","dismiss_0","id_0","params_0","useToast","Error","isRecord","_findPrevItemElement","itemElements","idx","itemKey","segments","split","pop","p","j","k","join","_findNextItemElement","_focusItemElement","firstChild","TreeContext","Tree","memo","setFocusedElement","path","setItemElements","stateRef","path_0","s","s_0","newState","registerItem","path_1","expanded_0","s_1","itemState","setExpanded","level","nextEl","prevEl","itemState_0","s_2","itemState_1","itemPath","parentKey","parentState","focusedKey","s_3","itemState_2","_itemElements","from","querySelectorAll","treeItemRootStyle","treeItemRootColorStyle","$tone","selectable","_cardColorStyle","pressed","hovered","treeItemBoxStyle","$level","rem","useTree","tree","TreeGroup","StyledTreeItem","li","TreeItemBox","attrs","forwardedAs","ToggleArrowText","TreeItem","expandedProp","IconComponent","idProp","linkAs","muted","text","weight","rootRef","treeitemRef","_id","useId","closest","click","visibility","pointerEvents","transform"],"mappings":";;;;;;;;;AAGO,SAASA,KAAKC,IAA4B;AAC/C,QAAMC,UAAUC,sBAAsBF,EAAE;AAExC,SAAO,MAAM;AACXG,yBAAqBF,OAAO;AAAA,EAC9B;AACF;AAKO,SAASG,MAAMJ,IAA4B;AAChD,MAAIK,eAAoC;AAExC,QAAMC,eAAeP,KAAK,MAAM;AAC9BM,mBAAeN,KAAKC,EAAE;AAAA,EACxB,CAAC;AAED,SAAO,MAAM;AACPK,oBAAcA,aAAAA,GAElBC,aAAAA;AAAAA,EACF;AACF;ACVO,SAASC,UAAUC,SAA+B;AACvD,SAAOC,EAAQC,SAASC,iBAAkBH,QAAQI,SAASF,SAASC,aAAa;AACnF;AAKO,SAASE,YAAYL,SAA+B;AACzD,SACEA,QAAQM,WAAW,KAClBN,QAAQM,aAAa,KAAKN,QAAQO,aAAa,UAAU,MAAM,OAEzD,KAGLC,oBAAoBR,OAAO,IACtBC,CAAAA,CAAQD,QAAQS,QAAST,QAAQU,QAAQ,WAG9CC,mBAAmBX,OAAO,IACrBA,QAAQY,SAAS,YAAYZ,QAAQY,SAAS,UAAU,CAACZ,QAAQa,WAIxEC,oBAAoBd,OAAO,KAC3Be,oBAAoBf,OAAO,KAC3BgB,sBAAsBhB,OAAO,IAEtB,CAACA,QAAQa,WAGX;AACT;AAKO,SAASI,aAAajB,SAA+B;AAC1D,MAAI,CAACK,YAAYL,OAAO;AACtB,WAAO;AAKT,MAAI;AACFA,YAAQkB,MAAAA;AAAAA,EACV,QAAQ;AAAA,EACN;AAKF,SAAOhB,SAASC,kBAAkBH;AACpC;AAKO,SAASmB,qBAAqBnB,SAA+B;AAClE,WAASoB,IAAI,GAAGA,IAAIpB,QAAQqB,WAAWC,QAAQF,KAAK;AAClD,UAAMG,QAAQvB,QAAQqB,WAAWD,CAAC;AAElC,QAAII,cAAcD,KAAK,MAAMN,aAAaM,KAAK,KAAKJ,qBAAqBI,KAAK;AAC5E,aAAO;AAAA,EAEX;AAEA,SAAO;AACT;AAKO,SAASE,oBAAoBzB,SAA+B;AACjE,WAASoB,IAAIpB,QAAQqB,WAAWC,SAAS,GAAGF,KAAK,GAAGA,KAAK;AACvD,UAAMG,QAAQvB,QAAQqB,WAAWD,CAAC;AAElC,QAAII,cAAcD,KAAK,MAAMN,aAAaM,KAAK,KAAKE,oBAAoBF,KAAK;AAC3E,aAAO;AAAA,EAEX;AAEA,SAAO;AACT;ACrFA,SAASG,aACP1B,SACA2B,aACe;AACf,QAAMC,MAAM,CAAC5B,OAAO;AAEpB,aAAW6B,MAAMF;AACXG,UAAMC,QAAQF,EAAE,IAClBD,IAAII,KAAK,GAAGH,EAAE,IAEdD,IAAII,KAAKH,EAAE;AAIf,SAAOD,IAAIK,OAAOhC,OAAO;AAC3B;AAiBO,SAAAiC,gBAAAC,UAAAC,IAAAC,iBAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAELZ,cAAAS,OAAAI,SAAAC,cAAAL,IAGA,CAAApC,SAAA0C,UAAA,IAA8BC,SAA6B,IAAI;AAAC,MAAAC;AAAAN,IAAA,CAAA,MAAAtC,WAAAsC,SAAAX,eACvBiB,KAAAA,MAAMlB,aAAa1B,SAAS2B,WAAW,GAACW,OAAAtC,SAAAsC,OAAAX,aAAAW,OAAAM,MAAAA,KAAAN,EAAA,CAAA;AAAjF,QAAA,CAAAO,UAAAC,WAAA,IAAgCH,SAASC,EAAwC,GACjFG,cAAoBC,OAAOH,QAAQ;AAAC,MAAAI,IAAAC;AAAAZ,IAAA,CAAA,MAAAtC,WAAAsC,SAAAX,eAE1BsB,KAAAA,MAAA;AACR,UAAAE,eAAqBJ,YAAWK,SAChCC,eAAqB3B,aAAa1B,SAAS2B,WAAW;AAEtD,QAAIwB,aAAY7B,WAAY+B,aAAY/B,QAAO;AAE7CwB,kBAAYO,YAAY,GACxBN,YAAWK,UAAWC;AAAH;AAAA,IAAA;AAKrB,eAAKxB,MAAYsB;AACf,UAAI,CAACE,aAAYC,SAAUzB,EAAE,GAAC;AAC5BiB,oBAAYO,YAAY,GACxBN,YAAWK,UAAWC;AAAH;AAAA,MAAA;AAMvB,eAAKE,QAAYF;AACf,UAAI,CAACF,aAAYG,SAAUzB,IAAE,GAAC;AAC5BiB,oBAAYO,YAAY,GACxBN,YAAWK,UAAWC;AAAH;AAAA,MAAA;AAAA,EAItB,GACAH,KAAA,CAAClD,SAAS2B,WAAW,GAACW,OAAAtC,SAAAsC,OAAAX,aAAAW,OAAAW,IAAAX,OAAAY,OAAAD,KAAAX,EAAA,CAAA,GAAAY,KAAAZ,EAAA,CAAA,IA7BzBkB,UAAUP,IA6BPC,EAAsB;AAAC,MAAAO,IAAAC;AAAA,SAAApB,EAAA,CAAA,MAAAD,mBAAAC,SAAAO,YAAAP,EAAA,CAAA,MAAAH,YAEhBsB,KAAAA,MAAA;AACR,QAAI,CAACtB;AAAQ;AAEb,UAAAwB,wBAA8BC,CAAAA,QAAA;AAC5B,YAAAC,SAAeD,IAAGC;AAElB,UAAMA,kBAAkBC,QAIpBzB,EAAAA,mBAAA,CAAoBA,gBAAejC,SAAUyD,MAAM,IAIvD;AAAA,mBAAKE,QAAYlB;AACf,cAAIgB,WAAWhC,QAAMA,KAAEzB,SAAUyD,MAAM;AAAC;AAK1C1B,iBAASyB,GAAG;AAAA,MAAA;AAAA,IAAC;AAGfI,WAAAA,OAAMC,iBAAkB,aAAaN,qBAAqB,GAEnD,MAAA;AACLK,aAAME,oBAAqB,aAAaP,qBAAqB;AAAA,IAAC;AAAA,EAC/D,GACAD,MAACrB,iBAAiBF,UAAUU,QAAQ,GAACP,OAAAD,iBAAAC,OAAAO,UAAAP,OAAAH,UAAAG,QAAAmB,IAAAnB,QAAAoB,OAAAD,KAAAnB,EAAA,EAAA,GAAAoB,KAAApB,EAAA,EAAA,IA5BxCkB,UAAUC,IA4BPC,EAAqC,GAEjChB;AAAU;AC5GZ,SAAAyB,eAAAnE,SAAA;AACsC,SAAvBoE,eAAepE,OAAO,GAExBqE,gBAAX;AAAiC;ACCnC,SAAAC,gBAAAC,KAAA;AAAA,QAAAjC,IAAAC,EAAA,CAAA,GACLiC,WAAiBxB,OAAiB,IAAI;AAAC,MAAAZ;AAAA,SAAAE,EAAA,CAAA,MAAAmC,OAAAC,IAAA,2BAAA,KAEdtC,KAAAA,MAAMoC,SAAQpB,SAASd,OAAAF,MAAAA,KAAAE,EAAA,CAAA,GAAhDqC,oBAAoBJ,KAAKnC,EAAuB,GAEzCoC;AAAQ;ACOV,MAAMI,sBAAsBC,UAAkD;AAAA,EACnFC,QAA4B;AAAA,IAACC,OAAO;AAAA,EAAA;AAAA,EAEpC,OAAOC,yBAAyBD,OAAkC;AAEhE,WAAO;AAAA,MAACA;AAAAA,IAAAA;AAAAA,EACV;AAAA,EAEAE,kBAAkBF,OAAcG,MAA6B;AAC3D,SAAKC,MAAMC,QAAQ;AAAA,MAACL;AAAAA,MAAOG;AAAAA,IAAAA,CAAK;AAAA,EAClC;AAAA,EAEAG,SAA0B;AACxB,UAAM;AAAA,MAACN;AAAAA,IAAAA,IAAS,KAAKD;AAErB,QAAIC,OAAO;AACT,YAAMO,UAAU,OAAOP,OAAOO,WAAY,WAAWP,MAAMO,UAAU;AAErE,aAAO,oBAAC,QAAMA,UAAAA,QAAAA,CAAQ;AAAA,IACxB;AAEA,WAAO,KAAKH,MAAMI;AAAAA,EACpB;AACF;ACvCO,MAAMC,qBAAqBC,OAAOC,IAAGC,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,mBAO/BC,UAAUL,OAAOM,GAAG,EAACJ,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,gDAQ5BG,SAASC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAaFC,sBAAsBT,OAAOU,WAAW,EAACR,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,cACvCG,MAAM;ACzBd,SAAAI,mBAAAjB,OAAA;AAAA,QAAA7C,IAAAC,EAAA,EAAA,GACL;AAAA,IAAAgD;AAAAA,IAAAc;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAkDrB;AAAK,MAAA/C;AAAAE,IAAA,CAAA,MAAAgE,YAAAhE,SAAAkE,SAEvBpE,KAAAA,MAAA;AAG9BqE,eAAW,MAAA;AACTH,eAASE,KAAK;AAAA,IAAC,GACd,CAAC;AAAA,EAAC,GACNlE,OAAAgE,UAAAhE,OAAAkE,OAAAlE,OAAAF,MAAAA,KAAAE,EAAA,CAAA;AAND,QAAAoE,cAAoBtE;AAMC,MAAAQ;AAAAN,WAAAoE,eAGnB9D,KAAA+D,CAAAA,UAAA;AACMA,UAAKC,QAAS,WAAd,CAA0BC,uBAAuBF,MAAKG,aAAc,KACtEJ,YAAAA;AAAAA,EACD,GACFpE,OAAAoE,aAAApE,OAAAM,MAAAA,KAAAN,EAAA,CAAA;AALH,QAAAyE,gBAAsBnE;AAOrB,MAAAK;AAAA,SAAAX,EAAA,CAAA,MAAAiD,YAAAjD,EAAA,CAAA,MAAAoE,eAAApE,EAAA,CAAA,MAAAyE,iBAAAzE,EAAA,CAAA,MAAA+D,MAAA/D,SAAAiE,YAGCtD,KAAA,oBAAA,MAAA,EACiBsD,2BACP,WAAA,sBACJF,IACC,MAAA,UACIK,sBACEK,0BAEVxB,SAAAA,CACH,GAAKjD,OAAAiD,UAAAjD,OAAAoE,aAAApE,OAAAyE,eAAAzE,OAAA+D,IAAA/D,OAAAiE,UAAAjE,QAAAW,MAAAA,KAAAX,EAAA,EAAA,GATLW;AASK;ACrCF,SAAS+D,oBACdlC,OACAmC,KACmB;AACnB,SAAIA,IAAIrG,SAAS,iBACR;AAAA,IAAC,GAAGkE;AAAAA,IAAOoC,aAAa;AAAA,IAAMC,SAAS;AAAA,IAAMC,OAAOH,IAAIG;AAAAA,EAAAA,IAG7DH,IAAIrG,SAAS,gBACR;AAAA,IAAC,GAAGkE;AAAAA,IAAOqC,SAAS;AAAA,EAAA,IAGzBF,IAAIrG,SAAS,cACR;AAAA,IAAC,GAAGkE;AAAAA,IAAOqC,SAAS;AAAA,IAAOC,OAAO;AAAA,EAAA,IAGvCH,IAAIrG,SAAS,eACR;AAAA,IAAC,GAAGkE;AAAAA,IAAOoC,aAAa;AAAA,IAAME,OAAO;AAAA,IAAMZ,OAAO;AAAA,EAAA,IAGvDS,IAAIrG,SAAS,gBACR;AAAA,IAAC,GAAGkE;AAAAA,IAAOqC,SAAS;AAAA,IAAOC,OAAO;AAAA,EAAA,IAGvCH,IAAIrG,SAAS,cACR;AAAA,IAAC,GAAGkE;AAAAA,IAAOsC,OAAOtC,MAAMsC,SAASH,IAAIG;AAAAA,EAAAA,IAG1CH,IAAIrG,SAAS,wBACR;AAAA,IAAC,GAAGkE;AAAAA,IAAOoC,aAAaD,IAAIT;AAAAA,IAAOa,aAAaJ,IAAII,eAAevC,MAAMuC;AAAAA,EAAAA,IAG9EJ,IAAIrG,SAAS,wBACR;AAAA,IAAC,GAAGkE;AAAAA,IAAOuC,aAAaJ,IAAII;AAAAA,EAAAA,IAGjCJ,IAAIrG,SAAS,iBACR;AAAA,IAAC,GAAGkE;AAAAA,IAAOoC,aAAaD,IAAIT;AAAAA,IAAOY,OAAO;AAAA,IAAMZ,OAAOS,IAAIT;AAAAA,EAAAA,IAG7D1B;AACT;ACzCO,MAAMwC,mCAAmC,CAC9C,WACA,SACA,OACA,SACA,QACA,OACA,UACA,YACA,QACA,OACA,UAAU,GAMCC,iCAA4C,gBAK5CC,2CAAwD,CAAC,gBAAgB,WAAW,GCkE3FC,uBAAuBA,CAACjB,OAAekB,WAC3CA,SAASA,OAAOlB,QAAQA,OAEpBmB,wBAAwBA,CAACP,OAAeM,WAC5CA,OAAOlB,MAAMoB,YAAAA,EAAcC,QAAQT,MAAMQ,YAAAA,CAAa,IAAI,IAEtDE,oBAAoBC,WAAW,SAGnC5C,OAuBA6C,cACA;AACA,QAAM;AAAA,IACJC,SAAS;AAAA,IACTC;AAAAA,IACArH;AAAAA,IACAsH,cAAcC;AAAAA,IACdC,WAAW;AAAA,IACXC;AAAAA,IACAjC;AAAAA,IACAkC,UAAUC;AAAAA,IACVC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAvC;AAAAA,IACAwC;AAAAA,IACAC;AAAAA,IACAC,SAASC;AAAAA,IACTC,SAASC,cAAc;AAAA,IACvBC,UAAUZ;AAAAA,IACVa;AAAAA,IACAC,SAAS;AAAA,IACTC;AAAAA,IACAC;AAAAA,IACAC,cAAcC;AAAAA,IACdC;AAAAA,IACAC,cAAcnC;AAAAA,IACdoC;AAAAA,IACArD,OAAOsD;AAAAA,IACP,GAAGC;AAAAA,EAAAA,IACD5E,OAEE,CAACL,OAAOkF,QAAQ,IAAIC,WAAWjD,qBAAqB;AAAA,IACxDE,aAAa4C,aAAa;AAAA,IAC1B3C,SAAS;AAAA,IACTE,aAAa;AAAA,IACbD,OAAO;AAAA,IACPZ,OAAOsD,aAAa;AAAA,EAAA,CACrB,GAEK;AAAA,IAAC5C;AAAAA,IAAaC;AAAAA,IAASE;AAAAA,IAAaD;AAAAA,IAAOZ;AAAAA,EAAAA,IAAS1B,OAEpDoF,sBAAsBC,YAC1B,CAAC;AAAA,IAAC3D,OAAAA;AAAAA,EAAAA,MACA,oBAAC,MAAA,EAAK,WAAQ,UAAS,SAAS2C,aAAa,QAAQ,GAAG,MAAK,WAC3D,UAAA,oBAAC,QAAK,MAAMd,UAAU,cAAa,YAChC7B,UAAAA,QAAAA,CACH,EAAA,CACF,GAEF,CAAC6B,UAAUc,WAAW,CACxB,GAEMM,eACJ,OAAOC,oBAAqB,aAAaA,mBAAmBQ,qBAExD/B,eACJ,OAAOC,oBAAqB,aAAaA,mBAAmBT,uBAGxDyC,iBAAiBpH,OAA8B,IAAI,GACnDqH,2BAA2BrH,OAA8B,IAAI,GAC7DsH,kBAAkBtH,OAAgC,IAAI,GACtDuH,oBAAoBvH,OAA8B,IAAI,GAGtDwH,iBAAiBxH,OAAO,EAAK,GAC7ByH,WAAWzH,OAAOwD,KAAK,GACvBkE,eAAe1H,OAAO8G,SAAS,GAC/Ba,wBAAwB3H,OAAO,EAAK;AAG1C2B,sBACEqD,cACA,MAAMsC,gBAAgBlH,OACxB;AAEA,QAAMwH,YAAY,GAAGvE,EAAE,YACjB2C,UAAUlH,MAAMC,QAAQkH,WAAW,IAAIA,cAAcxG,aACrDyG,UAAU2B,aAAa1B,WAAW,GAClC2B,gBAAgBC,QACpB,MAAOvE,UAAU,OAAOwC,QAAQgC,KAAMC,CAAAA,MAAMA,EAAEzE,UAAUA,KAAK,IAAIhE,QACjE,CAACwG,SAASxC,KAAK,CACjB,GACM0E,kBAAkBH,QACtB,MAAM/B,QAAQ/G,OAAQyF,CAAAA,WAAYN,QAAQe,aAAaf,OAAOM,MAAM,IAAI,EAAK,GAC7E,CAACS,cAAca,SAAS5B,KAAK,CAC/B,GACM+D,qBAAqBD,gBAAgB5J,QACrC8J,eAAelE,cAAc,GAAGb,EAAE,WAAWa,WAAW,KAAK1E,QAC7D6I,WAAYjE,UAAU,QAAQqB,WAAatB,WAAWC,UAAU,MAEhEkE,iBAAiBnB,YACpBxD,CAAAA,UAAwC;AACvCF,eAAW,MAAM;AAIf,UAAIkE,sBAAsBvH;AACxB;AAGF,YAAMP,YAA2B2G,mBAAmB,CAAA,GAAI+B,OACtDnB,eAAehH,UAAU,CAACgH,eAAehH,OAAO,IAAI,CAAA,GACpDiH,yBAAyBjH,UAAU,CAACiH,yBAAyBjH,OAAO,IAAI,EAC1E;AAEA,UAAIoI,cAAc;AAElB,UAAItL,SAASC;AACX,mBAAWsL,KAAK5I;AACd,cAAI4I,MAAMvL,SAASC,iBAAiBsL,EAAErL,SAASF,SAASC,aAAa,GAAG;AACtEqL,0BAAc;AACd;AAAA,UACF;AAAA;AAIAA,sBAAgB,OAClBxB,SAAS;AAAA,QAACpJ,MAAM;AAAA,MAAA,CAAY,GAC5B+J,sBAAsBvH,UAAU,IAC5ByF,iBAAeA,cAAc,IAAI,GACjCH,UAAQA,OAAO/B,KAAK;AAAA,IAE5B,GAAG,CAAC;AAAA,EACN,GACA,CAAC+B,QAAQG,eAAeW,eAAe,CACzC,GAEMkC,kBAAkBvB,YAAaxD,CAAAA,YAAsC;AACzE,UAAMgF,iBAAiBpB,kBAAkBnH,SACnCwI,iBAAiBjF,QAAM9C,kBAAkBgI,cAAclF,QAAM9C,SAAS,MACtEwD,gBAAcsE,gBAAgBvL,SAASwL,cAAc,KAAK;AAE5DvE,sBAAgBmD,eAAepH,YACjCoH,eAAepH,UAAUiE,eAEzB2C,SAAS;AAAA,MAACpJ,MAAM;AAAA,MAAuByG,aAAAA;AAAAA,IAAAA,CAAY;AAAA,EAEvD,GAAG,CAAA,CAAE,GAECyE,qBAAqB3B,YACxB4B,CAAAA,MAAc;AACb/B,aAAS;AAAA,MAACpJ,MAAM;AAAA,MAAgB4F,OAAOuF;AAAAA,IAAAA,CAAE,GAEzCpB,sBAAsBvH,UAAU,IAE5BkD,YAAUA,SAASyF,CAAC,GAExBtB,SAASrH,UAAU2I,GAEfpD,YAAUA,SAASoD,CAAC,GACpBlD,iBAAeA,cAAc,IAAI,GAErCyB,gBAAgBlH,SAASlC,MAAAA;AAAAA,EAC3B,GACA,CAACyH,UAAUrC,UAAUuC,aAAa,CACpC,GAEMmD,oBAAoB7B,YACvBxD,CAAAA,YAAsC;AACrC,QAAIA,QAAMC,QAAQ,aAAa;AAG7B,UAFAD,QAAMsF,kBAEF,CAACd,mBAAoB;AAEzB,YAAMe,eAAehB,gBAAgBF,KAAMC,SAAMA,IAAEzE,UAAUU,WAAW,GAClEiF,cAAcD,eAAehB,gBAAgBrD,QAAQqE,YAAY,IAAI,IACrEE,mBAAmBlB,iBAAiBiB,cAAc,KAAKhB,kBAAkB;AAE3EiB,0BACFpC,SAAS;AAAA,QAACpJ,MAAM;AAAA,QAAuB4F,OAAO4F,iBAAiB5F;AAAAA,QAAOa,aAAa;AAAA,MAAA,CAAK;AAG1F;AAAA,IACF;AAEA,QAAIV,QAAMC,QAAQ,WAAW;AAG3B,UAFAD,QAAMsF,kBAEF,CAACd,mBAAoB;AAEzB,YAAMe,iBAAehB,gBAAgBF,KAAMC,CAAAA,QAAMA,IAAEzE,UAAUU,WAAW,GAClEiF,gBAAcD,iBAAehB,gBAAgBrD,QAAQqE,cAAY,IAAI,IACrEE,qBACJlB,gBACEiB,kBAAgB,KACZhB,qBAAqB,KACpBA,qBAAqBgB,gBAAc,KAAKhB,kBAAkB;AAG/DiB,4BACFpC,SAAS;AAAA,QAACpJ,MAAM;AAAA,QAAuB4F,OAAO4F,mBAAiB5F;AAAAA,QAAOa,aAAa;AAAA,MAAA,CAAK;AAG1F;AAAA,IACF;AAEA,QAAIV,QAAMC,QAAQ,UAAU;AAC1BoD,eAAS;AAAA,QAACpJ,MAAM;AAAA,MAAA,CAAc,GAC9B+J,sBAAsBvH,UAAU,IAC5ByF,iBAAeA,cAAc,IAAI,GACrCyB,gBAAgBlH,SAASlC,MAAAA;AAEzB;AAAA,IACF;AAEA,UAAM2C,SAAS8C,QAAM9C,QACfwI,SAAS9B,kBAAkBnH;AAEjC,SACGiJ,WAAWxI,UAAUwI,QAAQjM,SAASyD,MAAM,MAC7C,CAACyD,iCAAiChE,SAASqD,QAAMC,GAAG,GACpD;AACA0D,sBAAgBlH,SAASlC,MAAAA;AAEzB;AAAA,IACF;AAAA,EACF,GACA,CAACgG,aAAagE,iBAAiBC,oBAAoBtC,aAAa,CAClE,GAEMyD,oBAAoBnC,YACvBxD,CAAAA,YAAyC;AACxC,UAAM4F,YAAY5F,QAAMG,cAAcN;AAEtCwD,aAAS;AAAA,MAACpJ,MAAM;AAAA,MAAgBwG,OAAOmF;AAAAA,IAAAA,CAAU,GAE7C1D,iBAAeA,cAAc0D,SAAS;AAAA,EAC5C,GACA,CAAC1D,aAAa,CAChB,GAEM2D,eAAerC,YAAY,MAAM;AACrCH,aAAS;AAAA,MACPpJ,MAAM;AAAA,MACNwG,OAAOZ,QAAQoD,YAAYpD,OAAOsE,aAAa,IAAI;AAAA,IAAA,CACpD;AAAA,EACH,GAAG,CAACA,eAAelB,aAAapD,KAAK,CAAC,GAEhCiG,mBAAmBtC,YACtBxD,CAAAA,YAAwC;AAClCQ,gBACH6C,SAAS;AAAA,MAACpJ,MAAM;AAAA,IAAA,CAAc,GAE1BgI,WAASA,QAAQjC,OAAK,GACtBoC,eAAayD;EAErB,GACA,CAACrF,SAASyB,SAASG,aAAayD,YAAY,CAC9C,GAEME,0BAA0BvC,YAAY,MAAM;AAChDQ,0BAAsBvH,UAAU;AAAA,EAClC,GAAG,CAAA,CAAE,GAECuJ,0BAA0BxC,YAAY,MAAM;AAChDQ,0BAAsBvH,UAAU;AAAA,EAClC,GAAG,CAAA,CAAE,GAECwJ,yBAAyBzC,YAAY,MAAM;AAC/CH,aAAS;AAAA,MAACpJ,MAAM;AAAA,IAAA,CAAa,GAC7B6J,SAASrH,UAAU,IACfuF,YAAUA,SAAS,EAAE,GACrBE,iBAAeA,cAAc,IAAI,GACrCyB,gBAAgBlH,SAASlC,MAAAA;AAAAA,EAC3B,GAAG,CAACyH,UAAUE,aAAa,CAAC,GAEtBgE,yBAAyB1C,YAAY,MAAM;AAC/CH,aAAS;AAAA,MAACpJ,MAAM;AAAA,IAAA,CAAc;AAAA,EAChC,GAAG,CAAA,CAAE;AAGL4C,YAAU,MAAM;AAEd,QAAIsG,cAAcY,aAAatH,SAAS;AACtCsH,mBAAatH,UAAU0G,WAEnBA,cAActH,WAChBwH,SAAS;AAAA,QAACpJ,MAAM;AAAA,QAAgB4F,OAAOsD;AAAAA,MAAAA,CAAU,GACjDW,SAASrH,UAAU0G;AAGrB;AAAA,IACF;AAGIA,kBAAcW,SAASrH,YACzBqH,SAASrH,UAAU0G,aAAa,MAEhCE,SAAS;AAAA,MAACpJ,MAAM;AAAA,MAAgB4F,OAAOsD,aAAa;AAAA,IAAA,CAAK;AAAA,EAE7D,GAAG,CAACA,SAAS,CAAC,GAGdtG,UAAU,MAAM;AACV,KAAC2D,WAAWsD,SAASrH,WACvB4G,SAAS;AAAA,MAACpJ,MAAM;AAAA,MAAuB4F,OAAOiE,SAASrH;AAAAA,IAAAA,CAAQ;AAAA,EAEnE,GAAG,CAAC+D,OAAO,CAAC,GAGZ3D,UAAU,MAAM;AACd,UAAMsJ,cAAcvC,kBAAkBnH;AAEtC,QAAI,CAAC0J,YAAa;AAElB,UAAMZ,iBAAehB,gBAAgBF,KAAMC,CAAAA,QAAMA,IAAEzE,UAAUU,WAAW;AAExE,QAAIgF,gBAAc;AAChB,YAAMC,gBAAcjB,gBAAgBrD,QAAQqE,cAAY,GAClDa,oBAAoBD,YAAYzL,WAAW8K,aAAW;AAE5D,UAAIY,mBAAmB;AACrB,YAAIhN,UAAUgN,iBAAiB;AAE7B;AAGF5L,6BAAqB4L,iBAAiB;AAAA,MACxC;AAAA,IACF;AAAA,EACF,GAAG,CAAC7F,aAAagE,eAAe,CAAC;AAEjC,QAAM8B,cAAcjC,QAAQ,MAAM;AAChC,QAAI,CAACtC,WAAW,CAAC5H,YAAY2F;AAC3B,aAAO;AAAA,QACL,cAAc;AAAA,QACd,SAAWqG;AAAAA,MAAAA;AAAAA,EAKjB,GAAG,CAAChM,UAAUgM,wBAAwBpE,SAASjC,KAAK,CAAC,GAE/CyG,uBAAuBlC,QAC3B,MACE7B,QAAQgE,IAAKnB,CAAAA,QACPA,QAAM,IAAU,IAChBA,QAAM,KACNA,QAAM,IAAU,IAEbA,MAAI,CACZ,GACH,CAAC7C,OAAO,CACV,GACMiE,oBAAoBpC,QAAQ,MAAM7B,QAAQgE,IAAKnB,CAAAA,QAAMqB,KAAKC,IAAItB,MAAI,GAAG,CAAC,CAAC,GAAG,CAAC7C,OAAO,CAAC,GACnFoE,kBAA+CvC,QACnD,MAAO,OAAOjC,cAAe,WAAWA,aAAaN,cACrD,CAACM,UAAU,CACb,GAEMyE,kBAAkBpD,YACrBxD,CAAAA,YAAyC;AACxC6F,oBAEIc,gBAAgBE,WAASF,gBAAgBE,QAAQ7G,OAAK,GAE1DpH,KAAK,MAAM+K,gBAAgBlH,SAASlC,MAAAA,CAAO;AAAA,EAC7C,GACA,CAACoM,iBAAiBd,YAAY,CAChC,GAEMiB,iBAAiB1C,QACrB,MACE,CAAClK,YAAY,CAAC0I,YAAYT,aACxB,oBAAC,KAAA,EAAI,eAAauC,UAAU,SAAS4B,sBACnC,UAAA,oBAAC,QAAA,EACC,cAAW,QACX,UAAU5B,UACV,UACA,MAAMqC,iBACN,MAAK,SACL,SAASP,mBACT,GAAIG,iBACJ,SAASC,gBAAAA,CAAgB,EAAA,CAE7B,IACE/K,QACN,CACE3B,UACAwK,UACAhD,UACAkF,iBACAzE,YACAmE,sBACAE,mBACAG,iBACA/D,QAAQ,CAEZ,GAEMoE,aAAa5C,QAAQ,MACrB3D,UAAU,OACRZ,UAAU,OACLoD,YAAYpD,OAAOsE,aAAa,IAGlC,KAGF1D,OACN,CAAC0D,eAAe1D,OAAOwC,aAAapD,KAAK,CAAC,GAEvCoH,QACJ,oBAAC,WAAA,KACK7D,WACJ,yBAAuBqB,cACvB,qBAAkB,QAClB,iBAAeC,UACf,aAAWT,WACX,gBAAe,OACf,cAAa,OACb,aAAY,OACZ,QACA,aACA,gBACA,UACA,UACA,MACA,WAAWnC,WAAWvC,qBACtB,IACA,WAAU,UACV,UAAUoG,mBACV,SAASM,wBACT,SAASH,kBACT,SACA,QACA,QACA,UACA,KAAKnC,iBACL,MAAK,YACL,YAAY,IACZ,QAAQT,UAAU4D,gBAClB,OAAOE,WAAAA,CAAW,GAIhBE,uBAAuB1D,YAC1BxD,CAAAA,YAAyC;AAEpCA,YAAMC,QAAQ,SACZS,eAAaiD,gBAAgBlH,SAASlC,MAAAA;AAAAA,EAE9C,GACA,CAACmG,WAAW,CACd,GAEMyG,WAAU/C,QAAQ,MAClBG,gBAAgB5J,WAAW,IAAU,2BAGtC,SAAA,EACC,WAAQ,yBACR,WAAWuM,sBACX,SAAS,GACT,GAAItF,SACJ,UAAU,IAEV,UAAA,oBAAC,OAAA,EACC,IAAG,MACH,wBAAsB,IACtB,WAAQ,6BACR,IAAIqC,WACJ,KAAKL,mBACL,MAAK,WACL,OAAO,GAENW,UAAAA,gBAAgBgC,IAAKxF,CAAAA,aAAW;AAC/B,UAAMqG,SACJ7G,gBAAgB,OAAOQ,SAAOlB,UAAUU,cAAc4D,kBAAkBpD;AAE1E,+BACG,oBAAA,EACC,IAAI,GAAGrB,EAAE,WAAWqB,SAAOlB,KAAK,IAEhC,UAAUsF,oBACV,UAAUiC,QACV,OAAOrG,SAAOlB,OAEbwH,UAAAA,aAAavE,aAAa/B,QAAM,GAAG;AAAA,MAClC7G,UAAU4H;AAAAA,MACVlC,UAAUwH;AAAAA,MACVzN,UAAU+G,eAAe0G,SAAS,IAAI;AAAA,IAAA,CACvC,EAAA,GATIrG,SAAOlB,KAUd;AAAA,EAEJ,CAAC,GACH,EAAA,CACF,GAED,CACDU,aACA4D,eACAI,iBACAY,oBACA+B,sBACAxH,IACAkC,SACAqC,WACAvD,aACAoB,SACAgB,YAAY,CACb,GAEKwE,UAAUlD,QAAQ,MAClBpB,gBACKA;AAAAA;AAAAA,IAEL;AAAA,MACEmE,SAAAA;AAAAA,MACAI,QAAQ,CAAC7C;AAAAA;AAAAA,MAET8C,cAAc7D,gBAAgBlH;AAAAA,MAC9BgL,cAAc1B;AAAAA,MACd2B,cAAc1B;AAAAA,IAAAA;AAAAA;AAAAA,IAGhBtC;AAAAA,EAAAA,IAIAc,uBAAuB,IAClB,OAIP;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,eAAa;AAAA,MACb,SAAA2C;AAAA,MACA,oBAAoBtG;AAAAA,MACpB,qBAAmB;AAAA,MACnB,cAAckF;AAAAA,MACd,cAAcC;AAAAA,MACd,MAAMtB;AAAAA,MACN,UAAS;AAAA,MACT,WAAW9D;AAAAA,MACX,QAAM;AAAA,MACN;AAAA,MACA,KAAK8C;AAAAA,MAEL,kBAAkBC,gBAAgBlH;AAAAA,MAClC,GAAIgG;AAAAA,IAAAA;AAAAA,EAAAA,GAGP,CACD0E,UACAzC,UACAF,oBACAuB,yBACAC,yBACAvD,SACAE,QACAK,aAAa,CACd;AAED,SACE,qBAAC,oBAAA,EACC,WAAQ,gBACR,QAAQ2B,gBACR,SAASI,iBACT,WAAWM,mBACX,KAAK5B,gBAEJwD,UAAAA;AAAAA,IAAAA;AAAAA,IACAK;AAAAA,EAAAA,GACH;AAEJ,CAAC;AAEDnG,kBAAkBlC,cAAc;AAQzB,MAAM0I,eAAexG,mBC9rBfyG,oBAAoB9I,OAAO+I,GAAE7I,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,yGAU7B4I,eAAehJ,OAAOiJ,MAAM,EAAC/I,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,iCCa7B8I,cAAc5G,WAAW,SAAA5C,OAAAZ,KAAA;AAAA,QAAAjC,IAAAC,EAAA,EAAA;AAAA,MAAAgD,UAAAqJ,WAAA7E,WAAA8E,WAAAzM;AAAAE,WAAA6C,SAIpC;AAAA,IAAAI;AAAAA,IAAAqJ;AAAAA,IAAAC;AAAAA,IAAAC,OAAA1M;AAAAA,IAAA,GAAA2H;AAAAA,EAAAA,IAA4E5E,OAAK7C,OAAA6C,OAAA7C,OAAAiD,UAAAjD,OAAAsM,WAAAtM,OAAAyH,WAAAzH,OAAAuM,WAAAvM,OAAAF,OAAAmD,WAAAjD,EAAA,CAAA,GAAAsM,YAAAtM,EAAA,CAAA,GAAAyH,YAAAzH,EAAA,CAAA,GAAAuM,YAAAvM,EAAA,CAAA,GAAAF,KAAAE,EAAA,CAAA;AACjF,QAAAwM,QAAcjE,aADgCzI,OAAAI,SAAA,IAAAJ,EACX,GACnC,CAAA2M,MAAAC,OAAA,IAAwBrM,SAAS,EAAK,GACtCsM,mBAAyBjM,OAAiC,IAAI,GAC9DkM,oBAA0BlM,OAA8B,IAAI;AAAC,MAAAJ;AAAAN,IAAA,CAAA,MAAAmC,OAAAC,IAAA,2BAAA,KAEhC9B,KAAAA,MAAMoM,QAAQ,EAAK,GAAC1M,OAAAM,MAAAA,KAAAN,EAAA,CAAA;AAAjD,QAAA6M,WAAiBvM;AAAqC,MAAAK;AAAAX,IAAA,CAAA,MAAAmC,OAAAC,IAAA,2BAAA,KAC3BzB,KAAAA,MAAM+L,QAAQ,EAAI,GAAC1M,OAAAW,MAAAA,KAAAX,EAAA,CAAA;AAA9C,QAAA8M,SAAenM;AAAoC,MAAAC;AAAAZ,IAAA,CAAA,MAAAmC,OAAAC,IAAA,2BAAA,KAEpBxB,KAAAA,MAAM,CAAC+L,iBAAgB7L,SAAU8L,kBAAiB9L,OAAQ,GAACd,OAAAY,MAAAA,KAAAZ,EAAA,CAAA,GAA1F+M,qBAAqBF,UAAUjM,EAA2D;AAAC,MAAAO;AAAAnB,WAAAiD,YAE5D9B,KAAA6L,SAAQC,QAAShK,QAAQ,EAACtD,OAAQuN,cAAc,GAAClN,OAAAiD,UAAAjD,QAAAmB,MAAAA,KAAAnB,EAAA,EAAA;AAAhF,QAAAmN,WAA+BhM;AAA8D,MAAAC;AAAAgM,OAAA;AAG3F,UAAAC,MAAYF,SAAQnO;AAEpB,QAAIsN,aAAae,MAAMf,WAAS;AAC9B,YAAAgB,eAAqBxC,KAAIyC,KAAMjB,YAAY,CAAC,GAC5CkB,cAAoB1C,KAAI2C,MAAOnB,YAAY,CAAC;AAAC,UAAAoB;AAAA,UAAA1N,UAAAwN,eAAAxN,EAAA,EAAA,MAAAsN,gBAAAtN,EAAA,EAAA,MAAAqN,OAAArN,EAAA,EAAA,MAAAyM,QAAAzM,UAAAmN,YAAAnN,EAAA,EAAA,MAAAwM,OAAA;AAGxC,cAAAmB,MAAAR,SAAQS,MAAO,GAAGN,eAAe,CAAC;AAAC,YAAAO;AAAA7N,UAAA,EAAA,MAAAwN,eAAAxN,EAAA,EAAA,MAAAsN,gBAAAtN,EAAA,EAAA,MAAAqN,OAAArN,UAAAmN,YAK/BU,KAAAV,SAAQS,MAAON,eAAe,GAAGD,MAAMG,WAAW,GAACxN,QAAAwN,aAAAxN,QAAAsN,cAAAtN,QAAAqN,KAAArN,QAAAmN,UAAAnN,QAAA6N,MAAAA,KAAA7N,EAAA,EAAA;AAAA,YAAA8N;AAAA9N,UAAA,EAAA,MAAAwM,SAAAxM,UAAA6N,MADtDC,yBAAC,OAAA,EAAS,IAAA,MAAc,UAAA,QAAgBtB,gBAAcA,OACnDqB,UAAAA,GAAAA,CACH,GAAQ7N,QAAAwM,OAAAxM,QAAA6N,IAAA7N,QAAA8N,MAAAA,KAAA9N,EAAA,EAAA;AAWC,cAAA+N,MAAAtB,OAAAI,WAAAC;AAAwB,YAAAkB;AAAAhO,UAAA,EAAA,MAAAyM,QAAAzM,UAAA+N,OAHnCC,MAAA,oBAAC,cAAA,EACW,UAAA,GACL,MAAA,SACI,SAAAD,KACA,YACJpB,KAAAA,kBACKF,UAAAA,MACL,MAAA,SAAA,CAAG,GACRzM,QAAAyM,MAAAzM,QAAA+N,KAAA/N,QAAAgO,OAAAA,MAAAhO,EAAA,EAAA;AAAA,YAAAiO;AAAAjO,UAAA,EAAA,MAAAyM,QAAAzM,UAAAgO,OAAAhO,EAAA,EAAA,MAAA8N,MArBJG,0BAAC,WACC,eAAA,IAEE,SAAAH,IAKIrB,MACI,WAAA,OACV,YACKG,KAAAA,mBAELoB,UAAAA,IAAAA,GANI,QAeN,GAAUhO,QAAAyM,MAAAzM,QAAAgO,KAAAhO,QAAA8N,IAAA9N,QAAAiO,OAAAA,MAAAjO,EAAA,EAAA,GAxBL0N,MAAA,CAAA,GACFC,KACHM,KAsBU,GACPd,SAAQS,MAAOP,MAAMG,WAAW,CAAC,GACrCxN,QAAAwN,aAAAxN,QAAAsN,cAAAtN,QAAAqN,KAAArN,QAAAyM,MAAAzM,QAAAmN,UAAAnN,QAAAwM,OAAAxM,QAAA0N;AAAAA,MAAA;AAAAA,cAAA1N,EAAA,EAAA;AA1BDoB,WAAOsM;AAAP,YAAAN;AAAAA,IA0BC;AAGHhM,SAAO+L;AAAAA,EAAQ;AApCjB,QAAAe,QAAc9M;AAqC0C,MAAAsM;AAAA,MAAA1N,EAAA,EAAA,MAAAkO,SAAAlO,UAAAuM,aAAAvM,EAAA,EAAA,MAAAwM,OAAA;AAAA,QAAAmB;AAAA3N,MAAA,EAAA,MAAAuM,aAAAvM,UAAAwM,SAIzCmB,MAAAA,CAAAQ,MAAAC,mCACR,UAAA,EACEA,UAAAA;AAAAA,MAAAA,YAAY,KACX,oBAAC,KAAA,EAAI,eAAA,IAAe,IAAA,MAAe5B,UAAAA,OAChCD,uBAAa,oBAAC,MAAA,EAAK,OAAA,IAAM,eAAC,GAC7B;AAAA,MAEF,oBAAC,KAAA,EAAO,IAAA,MAAM4B,UAAAA,KAAAA,CAAK;AAAA,IAAA,EAAA,GANNC,SAOf,GACDpO,QAAAuM,WAAAvM,QAAAwM,OAAAxM,QAAA2N,OAAAA,MAAA3N,EAAA,EAAA,GATA0N,KAAAQ,MAAKtD,IAAK+C,GASV,GAAC3N,QAAAkO,OAAAlO,QAAAuM,WAAAvM,QAAAwM,OAAAxM,QAAA0N;AAAAA,EAAA;AAAAA,SAAA1N,EAAA,EAAA;AAAA,MAAA2N;AAAA,SAAA3N,EAAA,EAAA,MAAAiC,OAAAjC,UAAAyH,aAAAzH,EAAA,EAAA,MAAA0N,MAVJC,yBAAC,qBAA0B,WAAA,kBAAkBlG,WAAgBxF,KAC1DyL,UAAAA,IAUH,GAAoB1N,QAAAiC,KAAAjC,QAAAyH,WAAAzH,QAAA0N,IAAA1N,QAAA2N,MAAAA,KAAA3N,EAAA,EAAA,GAXpB2N;AAWoB,CAEvB;AACDtB,YAAY/I,cAAc;ACrFnB,SAAS+K,YAAY;AAAA,EAACC;AAAiB,GAAc;AAC1D,QAAM;AAAA,IAACC;AAAAA,EAAAA,IAASC,YAAYF,KAAK;AAEjC,SAAO;AAAA,IACL,mBAAmB;AAAA,MACjBG,SAAS;AAAA,IAAA;AAAA,IAGX,KAAO;AAAA,IACP,MAAQ;AAAA,IACR,OAAS;AAAA,IACT,QAAU;AAAA,IACV,YAAc;AAAA,IACd,gBAAkB;AAAA,IAClB,SAAW;AAAA,IACX,YAAcF,MAAMG;AAAAA,EAAAA;AAExB;AAEO,SAASC,8BACd9L,OACa;AACb,QAAM;AAAA,IAAC+L;AAAAA,EAAAA,IAASJ,YAAY3L,MAAMyL,KAAK;AAEvC,SAAOO,YAAYD,OAAO/L,MAAMiM,WAAYC,CAAAA,cAAc;AAAA,IAAC,MAAM;AAAA,MAACA;AAAAA,IAAAA;AAAAA,EAAQ,EAAG;AAC/E;AASO,SAASC,qBAAqBnM,OAA0D;AAC7F,SAAKA,MAAMoM,WAEJC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,MAFqBA;AA4B9B;AC5DO,MAAMC,gBAAgBC,0BAC3B,6BACA;AAAA,EAACC,SAAS;AAAG,CACf;ACXO,SAAAC,YAAA;AAAA,SACEC,WAAWJ,aAAa;AAAC;ACgFlC,SAASK,oBACPzP,iBACA0P,eACAlO,QACS;AACT,SAAI,CAACxB,mBAAmB,CAAC0P,gBAAsB,KAG7CC,wBAAwB3P,iBAAiBwB,MAAM,KAC/CmO,wBAAwBD,eAAelO,MAAM;AAEjD;AAEA,MAAMoO,eAAexM,uBAAOyM,KAAK,EAACvM,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,EAEhCsM,wBAAwBxB,aAAaM,+BAA+BK,oBAAoB,GAEpFc,kBAAkB3M,OAAO4M,SAAS,EAAC1M,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,0HAWnCyM,iBAAiB7M,OAAO8M,IAAI,EAAC5M,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,yGAW7B2M,eAAe/M,OAAOgN,IAAI,EAAC9M,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,oCAM3B6M,eAAejN,OAAOM,GAAG,EAACJ,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,iCAK1B8M,gBAAgBlN,OAAOM,GAAG,EAACJ,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,4DAO3B+M,eAAenN,OAAOM,GAAG,EAACJ,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,iCAK1BgN,aAAa9K,WAAW,SAAA5C,OAAA6C,cAAA;AAAA,QAAA1F,IAAAC,EAAA,EAAA,GAI5B;AAAA,IAAAuQ,sBAAAC;AAAAA,IAAAC,4BAAAC;AAAAA,IAAA1N;AAAAA,IAAA2N,YAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAhN;AAAAA,IAAAiN;AAAAA,IAAAC;AAAAA,IAAAC,QAAAC;AAAAA,IAAAnK,QAAAoK;AAAAA,IAAAC;AAAAA,IAAAC,QAAAC;AAAAA,IAAAC,OAAAC;AAAAA,EAAAA,IAeI5O,OACJqO,SAAeQ,aACfjC,gBAAsB0B,aAAaD,OAAM3Q,WAAY4Q,UAAU,KAA5B,OAAwCD,OAAMxT,SACjFqC,kBAAwB4R,mBAAAA,EAAoBjU,SAC5CsJ,SAAeuB,aAAa6I,UAAU,GACtCE,SAAe/I,aAAagJ,UAAU,GACtCC,QAAcjJ,aAAakJ,SAAS,GACpCxP,MAAYvB,OAA8B,IAAI,GAC9CkQ,aAAmBlQ,OAA8B,IAAI,GACrDkR,QAAcC,YACd;AAAA,IAAAC;AAAAA,EAAAA,IAAqBF,OACrBG,UAAgB,GAAGhO,EAAE,UACrBiO,kBAAwBrU,CAAAA,CAAQsT,WAAYN,oBAAoB,IAChEsB,aAAmBtU,EAAQoT,UAARiB;AAAkC,MAAAlS;AAAAE,IAAA,CAAA,MAAAmC,OAAAC,IAAA,2BAAA,KAE2BtC,KAAAA,MAAMmC,IAAGnB,SAAQd,OAAAF,MAAAA,KAAAE,EAAA,CAAA,GAAjGqC,oBAAkEqD,cAAc5F,EAAiB;AAAC,MAAAQ;AAAAN,IAAA,CAAA,MAAAmC,OAAAC,IAAA,2BAAA,KAGhG9B,KAAAA,MAAMsQ,WAAU9P,SAAQd,OAAAM,MAAAA,KAAAN,EAAA,CAAA,GAF1BqC,oBACEwO,qBACAvQ,EACF;AAAC,MAAAK,IAAAC;AAAAZ,WAAAyQ,aAES9P,KAAAA,MAAA;AACH8P,iBAGDxO,IAAGnB,WACLjC,qBAAqBoD,IAAGnB,OAAQ;AAAA,EACjC,GACAF,KAAA,CAAC6P,WAAWxO,GAAG,GAACjC,OAAAyQ,WAAAzQ,OAAAW,IAAAX,OAAAY,OAAAD,KAAAX,EAAA,CAAA,GAAAY,KAAAZ,EAAA,CAAA,IAPnBkB,UAAUP,IAOPC,EAAgB;AAAC,MAAAO;AAAAnB,IAAA,CAAA,MAAAD,mBAAAC,EAAA,CAAA,MAAA8R,cAAA9R,EAAA,CAAA,MAAAiR,WAAAjR,SAAAyP,iBAIhBtO,KAAAkD,CAAAA,UAAA;AACE,QAAI,CAACyN,cAAD,CAAgBb;AAAO;AAE3B,UAAA1P,SAAe3D,SAAQC;AAEnB0D,cAAA,CAAWiO,oBAAoBzP,iBAAiB0P,eAAelO,MAAM,KAKrE8C,MAAKC,QAAS,aAChBD,MAAKsF,eAAAA,GACLtF,MAAK6N,gBAAAA,GACLjB;EACD,GACFjR,OAAAD,iBAAAC,OAAA8R,YAAA9R,OAAAiR,SAAAjR,OAAAyP,eAAAzP,OAAAmB,MAAAA,KAAAnB,EAAA,CAAA,GAjBLmS,iBACEhR,EAmBF;AAAC,MAAAC;AAAApB,IAAA,EAAA,MAAAD,mBAAAC,EAAA,EAAA,MAAA8R,cAAA9R,EAAA,EAAA,MAAAgR,kBAAAhR,UAAAyP,iBAGCrO,KAAA0Q,cAAAd,mBAAAoB,CAAAA,YAAA;AAGI,UAAAC,WAAehO,QAAK9C;AAEhB8Q,gBAAA,CAAW7C,oBAAoBzP,iBAAiB0P,eAAelO,QAAM,KAKzEyP,eAAAA;AAAAA,EAAgB,IAChBhR,QAAAD,iBAAAC,QAAA8R,YAAA9R,QAAAgR,gBAAAhR,QAAAyP,eAAAzP,QAAAoB,MAAAA,KAAApB,EAAA,EAAA;AAAA,MAAA0N;AAAA1N,IAAA,EAAA,MAAAmC,OAAAC,IAAA,2BAAA,KACJsL,KAAAA,MAAM,CAACzL,IAAGnB,OAAQ,GAACd,QAAA0N,MAAAA,KAAA1N,EAAA,EAAA,GAbrB+M,qBACE3L,IAYAsM,EACF;AAAC,MAAAC;AAAA3N,IAAA,EAAA,MAAA+Q,UAAA/Q,EAAA,EAAA,MAAA+R,WAAA/R,EAAA,EAAA,MAAAiR,WAAAjR,EAAA,EAAA,MAAAgS,mBAAAhS,UAAAiS,cAMQtE,KAAAsE,cACC,oBAAC,cAAA,EACC,UAAA,qBAAC,MAAA,EAAW,OAAA,cAAsB,SAAA,GAChC,UAAA;AAAA,IAAA,oBAAC,KAAA,EAAU,MAAA,GAAY,SAAA,GACpBlB,UAAAA,UACC,oBAAC,MAAA,EAASgB,IAAAA,SAAe,MAAA,GAAU,QAAA,YAChChB,kBACH,GAEJ;AAAA,IACCiB,uCACE,KAAA,EAAS,MAAA,QACR,UAAA,oBAAC,QAAA,EACY,cAAA,gBACD,UAAA,CAACf,SACLqB,MAAAA,WACD,MAAA,SACIrB,SAAAA,SACA,SAAA,GAAC,EAAA,CAEd;AAAA,EAAA,EAAA,CAEJ,EAAA,CACF,GACDjR,QAAA+Q,QAAA/Q,QAAA+R,SAAA/R,QAAAiR,SAAAjR,QAAAgS,iBAAAhS,QAAAiS,YAAAjS,QAAA2N,MAAAA,KAAA3N,EAAA,EAAA;AAAA,MAAA6N;AAAA7N,YAAAiD,YAED4K,yBAAC,eAAA,EAAoB,MAAA,GAAQ+C,KAAAA,YAAsB,UAAA,IAChD3N,UACH,GAAgBjD,QAAAiD,UAAAjD,QAAA6N,MAAAA,KAAA7N,EAAA,EAAA;AAAA,MAAA8N;AAAA9N,YAAA8Q,UAEfhD,KAAAgD,UAAU,oBAAC,gBAAcA,UAAAA,OAAAA,CAAO,GAAe9Q,QAAA8Q,QAAA9Q,QAAA8N,MAAAA,KAAA9N,EAAA,EAAA;AAAA,MAAA+N;AAAA/N,IAAA,EAAA,MAAA2N,MAAA3N,UAAA6N,MAAA7N,EAAA,EAAA,MAAA8N,MA/BlDC,2BAAC,cAAA,EAAuB,WAAA,UACrBJ,UAAAA;AAAAA,IAAAA;AAAAA,IA0BDE;AAAAA,IAICC;AAAAA,EAAAA,GACH,GAAe9N,QAAA2N,IAAA3N,QAAA6N,IAAA7N,QAAA8N,IAAA9N,QAAA+N,OAAAA,MAAA/N,EAAA,EAAA;AAAA,MAAAgO;AAAAhO,IAAA,EAAA,MAAAgH,UAAAhH,EAAA,EAAA,MAAAqR,UAAArR,EAAA,EAAA,MAAAsR,UAAAtR,UAAA+N,OAjCjBC,MAAA,oBAAC,gBAAA,EAAuBhH,QAAa/E,KAAaoP,QAAgBC,QAChEvD,eAiCF,GAAiB/N,QAAAgH,QAAAhH,QAAAqR,QAAArR,QAAAsR,QAAAtR,QAAA+N,KAAA/N,QAAAgO,OAAAA,MAAAhO,EAAA,EAAA;AAAA,MAAAiO;AAAA,SAAAjO,EAAA,EAAA,MAAAgO,OAAAhO,UAAAwR,SAnCnBvD,0BAAC,iBAAA,EAAwB,WAAA,cAAoBuD,OAC3CxD,UAAAA,IAAAA,CAmCF,GAAkBhO,QAAAgO,KAAAhO,QAAAwR,OAAAxR,QAAAiO,OAAAA,MAAAjO,EAAA,EAAA,GApClBiO;AAoCkB,CAErB;AAEDsC,WAAWjN,cAAc;AAOlB,MAAMiP,SAAS9M,WAAW,SAAA5C,OAAAZ,KAAA;AAAA,QAAAjC,IAAAC,EAAA,EAAA,GAI/BuS,SAAelD,aACf;AAAA,IAAAsC;AAAAA,EAAAA,IAAgBa,YAAAA;AAAa,MAAAC,eAAAC,cAAA1P,UAAA2N,YAAAE,QAAAC,QAAAhN,IAAA6O,YAAA5B,gBAAAC,SAAA3K,SAAA6K,YAAA1J,WAAA4J,QAAAvR,IAAAQ,IAAAK,IAAAC,IAAAO,IAAAC,IAAAsM;AAAA1N,WAAA6C,SAC7B;AAAA,IAAA2N,sBAAA1Q;AAAAA,IAAA4Q,4BAAApQ;AAAAA,IAAAuS,YAAAlS;AAAAA,IAAAmS,YAAAlS;AAAAA,IAAAqC;AAAAA,IAAA2N;AAAAA,IAAAE;AAAAA,IAAAC;AAAAA,IAAAhN;AAAAA,IAAA6O;AAAAA,IAAA5B;AAAAA,IAAAC;AAAAA,IAAA3K;AAAAA,IAAAM,SAAAzF;AAAAA,IAAA+P,QAAAC;AAAAA,IAAApC,UAAA2D;AAAAA,IAAArB;AAAAA,IAAAG,OAAApQ;AAAAA,IAAA2R,SAAAJ;AAAAA,IAAAK,SAAAtF;AAAAA,IAAA,GAAAjG;AAAAA,EAAAA,IAsBI5E,OAAK7C,OAAA6C,OAAA7C,OAAA0S,eAAA1S,OAAA2S,cAAA3S,OAAAiD,UAAAjD,OAAA4Q,YAAA5Q,OAAA8Q,QAAA9Q,OAAA+Q,QAAA/Q,OAAA+D,IAAA/D,OAAA4S,YAAA5S,OAAAgR,gBAAAhR,QAAAiR,SAAAjR,QAAAsG,SAAAtG,QAAAmR,YAAAnR,QAAAyH,WAAAzH,QAAAqR,QAAArR,QAAAF,IAAAE,QAAAM,IAAAN,QAAAW,IAAAX,QAAAY,IAAAZ,QAAAmB,IAAAnB,QAAAoB,IAAApB,QAAA0N,OAAAgF,gBAAA1S,EAAA,CAAA,GAAA2S,eAAA3S,EAAA,CAAA,GAAAiD,WAAAjD,EAAA,CAAA,GAAA4Q,aAAA5Q,EAAA,CAAA,GAAA8Q,SAAA9Q,EAAA,CAAA,GAAA+Q,SAAA/Q,EAAA,CAAA,GAAA+D,KAAA/D,EAAA,CAAA,GAAA4S,aAAA5S,EAAA,CAAA,GAAAgR,iBAAAhR,EAAA,CAAA,GAAAiR,UAAAjR,EAAA,EAAA,GAAAsG,UAAAtG,EAAA,EAAA,GAAAmR,aAAAnR,EAAA,EAAA,GAAAyH,YAAAzH,EAAA,EAAA,GAAAqR,SAAArR,EAAA,EAAA,GAAAF,KAAAE,EAAA,EAAA,GAAAM,KAAAN,EAAA,EAAA,GAAAW,KAAAX,EAAA,EAAA,GAAAY,KAAAZ,EAAA,EAAA,GAAAmB,KAAAnB,EAAA,EAAA,GAAAoB,KAAApB,EAAA,EAAA,GAAA0N,KAAA1N,EAAA,EAAA;AArBe,QAAAyQ,YAAA3Q,OAAAI,SAAA,KAAAJ,IACM6Q,kBAAArQ,OAAAJ,SAAA,KAAAI,IAChB2S,iBAAAtS,OAAAT,SAAA,IAAAS,IACZmS,aAAAlS,OAAAV,SAAA,IAAAU,IAUSiG,cAAA1F,OAAAjB,SAAA,IAAAiB,IAIFsQ,YAAArQ,OAAAlB,SAAA,IAAAkB,IAEE8R,WAAAxF,OAAAxN,SAAA,KAAAwN,IAGXyF,eAAqBT,kBAAkBF,OAAMzD,YAAN,UACvCqE,cAAoBT,iBAAiBH,OAAMO,WAAYnB,MAAKY,OAAOO,UAEnEC,UAD6BK,wBAAAA,IACb,KAAAH,UAChBhC,SAAeQ,UAAAA,GACfjC,gBAAsB0B,aAAaD,OAAM3Q,WAAY4Q,UAAU,KAA5B,OAAwCD,OAAMxT,SACjFqC,kBAAwB4R,mBAAAA,EAAoBjU,SAC5CmV,aAAmBtK,aAAa0K,cAAc,GAC9CrM,UAAgB2B,aAAa1B,WAAW,GACxCkI,WAAiBxG,aAAa4K,YAAY,GAC1C3B,QAAcjJ,aAAakJ,SAAS,GACpCsB,UAAgBxK,aAAa6K,WAAW,GACxCE,YAAkB5S,OAA8B,IAAI,GACpD6S,aAAmB7S,OAA8B,IAAI,GACrD8S,UAAgB9S,OAA8B,IAAI,GAClD+S,oBAA0B/S,OAA2B,IAAI;AAAC,MAAAiN;AAAA3N,YAAAsG,WAGxDqH,KAAAtJ,CAAAA,UAAA;AACEiC,cAAUjC,KAAK;AAEf,UAAA9C,SAAe8C,MAAK9C,QACpBmS,cAAoBF,QAAO1S;AAE3B,QAAI4S,eAAenS,WAAW+R,UAASxS,SAAQ;AAC7C3B,0BAAoBuU,WAAW;AAAC;AAAA,IAAA;AAKlC,QAAIA,eAAenS,WAAWgS,WAAUzS,SAAQ;AAC9CjC,2BAAqB6U,WAAW;AAAC;AAAA,IAAA;AAK/BxU,kBAAcmF,MAAK9C,MAAO,MAC5BkS,kBAAiB3S,UAAWuD,MAAK9C;AAAAA,EAClC,GACFvB,QAAAsG,SAAAtG,QAAA2N,MAAAA,KAAA3N,EAAA,EAAA;AAtBH,QAAA2T,cAAoBhG,IA0BpBoE,UAAgB,GAAGhO,EAAE,UAErB6P,sBAA4BlT,OAAuBR,MAAS;AAAC,MAAA2N;AAAA7N,IAAA,EAAA,MAAAD,mBAAAC,UAAAyP,iBAKzB5B,KAAAA,MAAA;AAC9B+F,wBAAmB9S,WACrB+S,aAAaD,oBAAmB9S,OAAQ,GAG1C8S,oBAAmB9S,UAAWqD,WAAW,MAAA;AACvC,YAAAtG,gBAAsBD,SAAQC;AAE9B,UAAIA,iBAAA,CAAkB2R,oBAAoBzP,iBAAiB0P,eAAe5R,aAAa,GAAC;AACtF,cAAAwU,WAAeoB,kBAAiB3S;AAEhC,YAAI,CAACS,YAAD,CAAY3D,SAAQkW,KAAKhW,SAAUyD,QAAM,GAAC;AAE5C,gBAAAwS,gBAAoBP,QAAO1S;AACvB4S,2BAAa7U,qBAAqB6U,aAAW;AAAC;AAAA,QAAA;AAKpDnS,iBAAM3C,MAAAA;AAAAA,MAAQ;AAAA,IACf,GACA,CAAC;AAAA,EAhBuB,GAiB5BoB,QAAAD,iBAAAC,QAAAyP,eAAAzP,QAAA6N,MAAAA,KAAA7N,EAAA,EAAA;AAtBD,QAAAgU,kBAAwBnG;AAsBY,MAAAC;AAAA9N,IAAA,EAAA,MAAAmC,OAAAC,IAAA,2BAAA,KAqB9B0L,KAAA,oBAAA,OAAA,EAAUwF,KAAAA,WAAqB,UAAA,GAAC,GAAItT,QAAA8N,MAAAA,KAAA9N,EAAA,EAAA;AAAA,MAAA+N;AAAA/N,IAAA,EAAA,MAAAyQ,aAAAzQ,UAAA6S,cAAA7S,EAAA,EAAA,MAAA8S,cAAA9S,EAAA,EAAA,MAAAiD,YAAAjD,EAAA,EAAA,MAAA4Q,cAAA5Q,EAAA,EAAA,MAAA8Q,UAAA9Q,EAAA,EAAA,MAAA+Q,UAAA/Q,EAAA,EAAA,MAAA2Q,mBAAA3Q,EAAA,EAAA,MAAA+D,MAAA/D,EAAA,EAAA,MAAAgR,kBAAAhR,UAAAiR,WAAAjR,EAAA,EAAA,MAAAmR,cAAAnR,EAAA,EAAA,MAAAqR,UAAArR,EAAA,EAAA,MAAAwR,SACpCzD,0BAAC,cACuB0C,iCACME,6CAChBC,YACJE,QACAC,QACJhN,IACYiN,gBACPC,SACDE,oBACA0B,oBACHW,cACGnC,QACAyB,oBACDtB,iBAGT,GAAaxR,QAAAyQ,WAAAzQ,QAAA6S,YAAA7S,QAAA8S,YAAA9S,QAAAiD,UAAAjD,QAAA4Q,YAAA5Q,QAAA8Q,QAAA9Q,QAAA+Q,QAAA/Q,QAAA2Q,iBAAA3Q,QAAA+D,IAAA/D,QAAAgR,gBAAAhR,QAAAiR,SAAAjR,QAAAmR,YAAAnR,QAAAqR,QAAArR,QAAAwR,OAAAxR,QAAA+N,OAAAA,MAAA/N,EAAA,EAAA;AAAA,MAAAgO;AAAAhO,IAAA,EAAA,MAAAmC,OAAAC,IAAA,2BAAA,KAEb4L,MAAA,oBAAA,OAAA,EAAUuF,KAAAA,YAAsB,UAAA,GAAC,GAAIvT,QAAAgO,OAAAA,MAAAhO,EAAA,EAAA;AAAA,MAAAiO;AAAAjO,YAAAgT,WAAAhT,EAAA,EAAA,MAAA2T,eAAA3T,EAAA,EAAA,MAAAgU,mBAAAhU,UAAA+D,MAAA/D,EAAA,EAAA,MAAA+R,WAAA/R,EAAA,EAAA,MAAA4S,cAAA5S,EAAA,EAAA,MAAA4G,WAAA5G,UAAA+O,YAAA/O,EAAA,EAAA,MAAAiC,OAAAjC,EAAA,EAAA,MAAAyH,aAAAzH,UAAA+N,OAAA/N,EAAA,EAAA,MAAA+S,WArCvC9E,2BAAC,cAAA,EAAY,GACPxG,WACMuL,UAAAA,SACApM,UAAAA,SACCmI,WAAAA,UACMgD,mBAAAA,SACjB,cAAA,IACQ,WAAA,UACJhO,IACQ6O,YACHoB,0BACAL,sBACJ1R,KACA,MAAA,UACI8Q,SAGTjF,UAAAA;AAAAA,IAAAA;AAAAA,IACAC;AAAAA,IAmBAC;AAAAA,EAAAA,EAAAA,CACF,GAAehO,QAAAgT,SAAAhT,QAAA2T,aAAA3T,QAAAgU,iBAAAhU,QAAA+D,IAAA/D,QAAA+R,SAAA/R,QAAA4S,YAAA5S,QAAA4G,SAAA5G,QAAA+O,UAAA/O,QAAAiC,KAAAjC,QAAAyH,WAAAzH,QAAA+N,KAAA/N,QAAA+S,SAAA/S,QAAAiO,OAAAA,MAAAjO,EAAA,EAAA;AAAA,MAAAiU;AAAA,SAAAjU,EAAA,EAAA,MAAAmR,cAAAnR,UAAAiO,OAvCjBgG,MAAA,oBAAC,QAAA,EAAwB9C,iBAAAA,YACvBlD,UAAAA,IAAAA,CAuCF,GAASjO,QAAAmR,YAAAnR,QAAAiO,KAAAjO,QAAAiU,OAAAA,MAAAjU,EAAA,EAAA,GAxCTiU;AAwCS,CAEZ;AACD1B,OAAOjP,cAAc;AC9Zd,SAAA4Q,eAAArR,OAAA;AAAA,QAAA7C,IAAAC,EAAA,CAAA,GACL;AAAA,IAAAgD;AAAAA,IAAA8L;AAAAA,IAAAgE;AAAAA,EAAAA,IAAsClQ;AAAK,MAAA/C;AAAAE,IAAA,CAAA,MAAA+O,YAAA/O,SAAA+S,WAGlCjT,KAAA;AAAA,IAAAuP,SACI;AAAA,IAAGN;AAAAA,IAAAgE;AAAAA,EAAAA,GAGb/S,OAAA+O,UAAA/O,OAAA+S,SAAA/S,OAAAF,MAAAA,KAAAE,EAAA,CAAA;AALH,QAAAmU,eACSrU;AAMR,MAAAQ;AAAA,SAAAN,EAAA,CAAA,MAAAiD,YAAAjD,SAAAmU,gBAEM7T,KAAA,oBAAA,cAAA,UAAA,EAA+B6T,OAAAA,cAAelR,SAAAA,CAAS,GAAyBjD,OAAAiD,UAAAjD,OAAAmU,cAAAnU,OAAAM,MAAAA,KAAAN,EAAA,CAAA,GAAhFM;AAAgF;AAGzF4T,eAAe5Q,cAAc;AC4BtB,MAAM8Q,aAAa3O,WAAW,SAAA5C,OAAA6C,cAAA;AAAA,QAAA1F,IAAAC,EAAA,EAAA,GAInC;AAAA,IAAAoU,uCAAAvU;AAAAA,IAAAC,iBAAAuU;AAAAA,IAAAC,QAAAC;AAAAA,IAAAzQ;AAAAA,IAAA0Q,MAAAC;AAAAA,IAAAzD;AAAAA,IAAA0D;AAAAA,IAAAC,WAAAC;AAAAA,IAAAC,eAAAC;AAAAA,IAAA7D,QAAA5Q;AAAAA,IAAAwG;AAAAA,IAAAkO,eAAAC;AAAAA,IAAAC,iBAAAC;AAAAA,EAAAA,IAcItS,OAbqCuS,6BAAAtV,OAAAI,SAAA,KAAAJ,IAS/BuV,oBAAA/U,OAAAJ,SAAA,KAAAI,IAKV,CAAAmM,MAAAC,OAAA,IAAwBrM,SAAS,EAAK,GACtC,CAAAiV,aAAAC,cAAA,IAAsClV,SAAkC,IAAI,GAC5E,CAAAmV,eAAAC,gBAAA,IAA0CpV,SAAmC,IAAI;AAAC,MAAAM;AAAAX,IAAA,CAAA,MAAAmC,OAAAC,IAAA,2BAAA,KACbzB,KAAA,CAAA,GAAEX,OAAAW,MAAAA,KAAAX,EAAA,CAAA;AAAvE,QAAA,CAAA0V,cAAAC,oBAAA,IAA6CtV,SAAwBM,EAAE,GACvEiV,UAAgBlV,OAAgB+L,IAAI;AAAC,MAAA7L,IAAAO;AAAAnB,IAAA,CAAA,MAAA2U,UAAA3U,SAAAyM,QAG3B7L,KAAAA,MAAA;AACJ+T,cAAAlI,QAAA,CAAmBmJ,QAAO9U,WAC5B6T,OAAAA;AAAAA,EACD,GACAxT,KAAA,CAACwT,QAAQlI,IAAI,GAACzM,OAAA2U,QAAA3U,OAAAyM,MAAAzM,OAAAY,IAAAZ,OAAAmB,OAAAP,KAAAZ,EAAA,CAAA,GAAAmB,KAAAnB,EAAA,CAAA,IAJjBkB,UAAUN,IAIPO,EAAc;AAAC,MAAAC,IAAAsM;AAAA1N,IAAA,CAAA,MAAAiR,WAAAjR,SAAAyM,QAGRrL,KAAAA,MAAA;AACJ6P,eAAA,CAAYxE,QAAQmJ,QAAO9U,WAC7BmQ,QAAAA;AAAAA,EACD,GACAvD,KAAA,CAACuD,SAASxE,IAAI,GAACzM,OAAAiR,SAAAjR,OAAAyM,MAAAzM,OAAAoB,IAAApB,OAAA0N,OAAAtM,KAAApB,EAAA,CAAA,GAAA0N,KAAA1N,EAAA,CAAA,IAJlBkB,UAAUE,IAIPsM,EAAe;AAAC,MAAAC,IAAAE;AAAA7N,WAAAyM,QAETkB,KAAAA,MAAA;AACRiI,YAAO9U,UAAW2L;AAAAA,EAAH,GACdoB,KAAA,CAACpB,IAAI,GAACzM,OAAAyM,MAAAzM,QAAA2N,IAAA3N,QAAA6N,OAAAF,KAAA3N,EAAA,EAAA,GAAA6N,KAAA7N,EAAA,EAAA,IAFTkB,UAAUyM,IAEPE,EAAM;AAAC,MAAAC;AAAA9N,IAAA,EAAA,MAAAmC,OAAAC,IAAA,2BAAA,KAE4B0L,KAAAA,MAAA;AACpCpB,YAAQmJ,OAAS,GACjBN,eAAe,IAAI;AAAA,EAAC,GACrBvV,QAAA8N,MAAAA,KAAA9N,EAAA,EAAA;AAHD,QAAA8V,oBAA0BhI;AAGpB,MAAAC;AAAA/N,YAAAyM,QAMJsB,MAAA1J,CAAAA,UAAA;AACMoI,YAAMpI,MAAKsF,eAAAA;AAAAA,EAAiB,GACjC3J,QAAAyM,MAAAzM,QAAA+N,OAAAA,MAAA/N,EAAA,EAAA;AAHH,QAAA+V,kBAAwBhI;AAKvB,MAAAC;AAAAhO,IAAA,EAAA,MAAAmC,OAAAC,IAAA,2BAAA,KAEuC4L,MAAAoE,CAAAA,YAAA;AAGtC,QAAI/N,QAAKC,QAAS,eAAeD,QAAKC,QAAS,WAAWD,QAAKC,QAAS,KAAG;AACzED,cAAKsF,kBACL+C,QAAQ,EAAI,GACZ6I,eAAe,OAAO;AAAC;AAAA,IAAA;AAOzB,QAAIlR,QAAKC,QAAS,WAAS;AACzBD,cAAKsF,kBACL+C,QAAQ,EAAI,GACZ6I,eAAe,MAAM;AAAC;AAAA,IAAA;AAAA,EAGvB,GACFvV,QAAAgO,OAAAA,MAAAhO,EAAA,EAAA;AApBD,QAAAgW,sBAA4BhI;AAoBtB,MAAAC;AAAAjO,IAAA,EAAA,MAAAwV,iBAAAxV,UAAA0V,gBAGJzH,MAAAgI,CAAAA,YAAA;AACE,UAAA1U,SAAe8C,QAAK9C;AAEpB,QAAMA,kBAAkBC,QAIpBgU,EAAAA,kBAAkBjU,WAAWiU,iBAAiBA,cAAa1X,SAAUyD,MAAM,KAI/E;AAAA,iBAAKhC,MAAYmW;AACf,YAAInU,WAAWhC,MAAMA,GAAEzB,SAAUyD,MAAM;AAAC;AAK1CmL,cAAQ,EAAK;AAAA,IAAA;AAAA,EAAC,GACf1M,QAAAwV,eAAAxV,QAAA0V,cAAA1V,QAAAiO,OAAAA,MAAAjO,EAAA,EAAA;AAnBH,QAAAkW,yBAA+BjI;AAqB9B,MAAAgG;AAAAjU,IAAA,EAAA,MAAAwV,iBAAAxV,UAAAoV,8BAEoCnB,MAAAA,MAAA;AACnCvH,YAAQ,EAAK,GACT0I,CAAAA,8BACAI,iBAAeA,cAAa5W,MAAAA;AAAAA,EAAQ,GACzCoB,QAAAwV,eAAAxV,QAAAoV,4BAAApV,QAAAiU,OAAAA,MAAAjU,EAAA,EAAA;AAJD,QAAAmW,mBAAyBlC;AAIsB,MAAAmC;AAAApW,YAAA0V,gBAG7CU,MAAAC,CAAAA,YAAA;AACE,UAAAhE,WAAehO,QAAKiS;AAEpB,QAAM/U,oBAAkBC,MAIxB;AAAA,iBAAKP,QAAYyU;AACf,YAAInW,SAAOgC,YAAUhC,KAAEzB,SAAUyD,QAAM;AAAC;AAK1CmL,cAAQ,EAAK;AAAA,IAAA;AAAA,EAAC,GACf1M,QAAA0V,cAAA1V,QAAAoW,OAAAA,MAAApW,EAAA,EAAA;AAfH,QAAAuW,aAAmBH;AAiBlB,MAAAI;AAAAxW,IAAA,EAAA,MAAAwV,iBAAAxV,UAAAoV,8BAEmCoB,MAAAA,MAAA;AAClC9J,YAAQ,EAAK,GACT0I,CAAAA,8BACAI,iBAAeA,cAAa5W,MAAAA;AAAAA,EAAQ,GACzCoB,QAAAwV,eAAAxV,QAAAoV,4BAAApV,QAAAwW,OAAAA,MAAAxW,EAAA,EAAA;AAJD,QAAAyW,kBAAwBD;AAIuB,MAAAE;AAAA1W,IAAA,EAAA,MAAAmC,OAAAC,IAAA,2BAAA,KAEXsU,MAAAjV,CAAAA,UAClCkU,qBAAqBgB,CAAAA,QAASA,IAAG1N,OAAQ,CAAC1J,IAAE,CAAC,CAAC,GAEvC,MAAMoW,qBAAqBiB,CAAAA,UAASD,MAAGhX,OAAQkX,SAASA,QAAQtX,IAAE,CAAC,IAC3ES,QAAA0W,OAAAA,MAAA1W,EAAA,EAAA;AAJD,QAAA8W,kBAAwBJ;AAIlB,MAAAK;AAAA/W,IAAA,EAAA,MAAAwV,iBAAAxV,EAAA,EAAA,MAAAuW,cAAAvW,EAAA,EAAA,MAAAyW,mBAAAzW,EAAA,EAAA,MAAAkW,0BAAAlW,EAAA,EAAA,MAAAmW,oBAAAnW,EAAA,EAAA,MAAA+D,MAAA/D,EAAA,EAAA,MAAA0U,YAAA1U,UAAAsV,eAaOyB,MAAArC,YAAYhJ,aAAagJ,UAXT;AAAA,IAAA,mBACR3Q;AAAAA,IAAE,eACJwS;AAAAA,IAAU,gBACTL;AAAAA,IAAsB,UAC5BC;AAAAA,IAAgB,aACbM;AAAAA,IAAe,eACbjB;AAAAA,IAAasB;AAAAA,IAAAxB;AAAAA,EAAAA,CAKyB,GAACtV,QAAAwV,eAAAxV,QAAAuW,YAAAvW,QAAAyW,iBAAAzW,QAAAkW,wBAAAlW,QAAAmW,kBAAAnW,QAAA+D,IAAA/D,QAAA0U,UAAA1U,QAAAsV,aAAAtV,QAAA+W,OAAAA,MAAA/W,EAAA,EAAA;AAA1D,QAAAyU,OAAasC;AAA6C,MAAAC;AAAAhX,IAAA,EAAA,MAAAwU,cAAAxU,EAAA,EAAA,MAAA+V,mBAAA/V,EAAA,EAAA,MAAA+D,MAAA/D,UAAAyM,QAItDuK,MAAAxC,cACA9I,aAAa8I,YAAY;AAAA,IAAA,WACZ;AAAA,IAAYzQ;AAAAA,IAAA,SAEZ+R;AAAAA,IAAiB,WACfE;AAAAA,IAAmB,aACjBD;AAAAA,IAAe,iBACb;AAAA,IAAI,iBACJtJ;AAAAA,IAAI,KACdgJ;AAAAA,IAAgB,UACXjB,WAAU3R,MAAMoB,YAAhBwI;AAAAA,EAAAA,CACb,GAACzM,QAAAwU,YAAAxU,QAAA+V,iBAAA/V,QAAA+D,IAAA/D,QAAAyM,MAAAzM,QAAAgX,OAAAA,MAAAhX,EAAA,EAAA;AAbN,QAAAuU,SAEIyC;AAaH,MAAAC,KAAAC;AAAAlX,YAAAwV,iBAKCyB,MAAAA,MAAMzB,eACN0B,MAAA,CAAC1B,aAAa,GAACxV,QAAAwV,eAAAxV,QAAAiX,KAAAjX,QAAAkX,QAAAD,MAAAjX,EAAA,EAAA,GAAAkX,MAAAlX,EAAA,EAAA,IAHjBqC,oBACEqD,cACAuR,KACAC,GACF;AAAC,MAAAC;AAAAnX,YAAA8G,WAWOqQ,MAAArQ,WAAA,CAAA,GAAa9G,QAAA8G,SAAA9G,QAAAmX,OAAAA,MAAAnX,EAAA,EAAA;AAAA,MAAAoX;AAAApX,IAAA,EAAA,MAAAsU,8BAAAtU,EAAA,EAAA,MAAA6U,wBAAA7U,EAAA,EAAA,MAAAiV,4BAAAjV,UAAA+U,4BAAA/U,EAAA,EAAA,MAAAqV,qBAAArV,EAAA,EAAA,MAAAmV,8BAAAnV,EAAA,EAAA,MAAAmX,OARZC,MAAA;AAAA,IAAArX,iBACYuU;AAAAA,IAA0B+C,UACjC;AAAA,IAAMzC,WACLC;AAAAA,IAAoB3D,QACvBmE;AAAAA,IAAiBH,iBACRC;AAAAA,IAA0BnO,QACnCiO;AAAAA,IAAwB5D,QACxB0D;AAAAA,IAAwB,GAC5BoC;AAAAA,EAAAA,GACLnX,QAAAsU,4BAAAtU,QAAA6U,sBAAA7U,QAAAiV,0BAAAjV,QAAA+U,0BAAA/U,QAAAqV,mBAAArV,QAAAmV,4BAAAnV,QAAAmX,KAAAnX,QAAAoX,OAAAA,MAAApX,EAAA,EAAA;AAVH,QAAAsX,eACSF;AAmBR,MAAAG;AAAAvX,YAAAuU,UAIIgD,MAAAhD,4CAAA,GAAevU,QAAAuU,QAAAvU,QAAAuX,OAAAA,MAAAvX,EAAA,EAAA;AAAA,MAAAwX;AAAA,SAAAxX,EAAA,EAAA,MAAAyU,QAAAzU,EAAA,EAAA,MAAAyM,QAAAzM,EAAA,EAAA,MAAAsX,gBAAAtX,UAAAuX,OADlBC,MAAA,oBAAC,WAAgB,WAAA,uBAAqB,GAAKF,cAAuB7C,SAAAA,MAAYhI,MAC3E8K,UAAAA,IAAAA,CACH,GAAUvX,QAAAyU,MAAAzU,QAAAyM,MAAAzM,QAAAsX,cAAAtX,QAAAuX,KAAAvX,QAAAwX,OAAAA,MAAAxX,EAAA,EAAA,GAFVwX;AAEU,CAEb;AACDpD,WAAW9Q,cAAc;AA7MY,SAAAuS,QAAApM,GAAA;AAAA,SA4ClB,CAACA;AAAC;ACxGrB,MAAMgO,WAAW9T;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GASX+T,YAAYxI;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,oBAYEuI,QAAQ;AAAA;AAAA;AAAA;AAAA,GAUfE,gBAAgBzI;AAAAA,aAChB,CAAC;AAAA,EAAC0I;AAAQ,MAAOA,WAAW,IAAI,CAAE;AAAA;AAAA;AAAA;AAAA,MAIzC,CAAC;AAAA,EAACC;AAAS,MACXA,YACIH,YACAxI;AAAAA;AAAAA,WAEC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCnCL4I,mBAAiB3U,uBAAOM,GAAG,EAACJ,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,EAEhCwU,uBAAuBJ,aAAa,GAezBK,WAAWvS,WAAW,SAAA5C,OAAAZ,KAAA;AAAA,QAAAjC,IAAAC,EAAA,EAAA;AAAA,MAAAgY,OAAAjR,QAAAS,WAAA3H;AAAAE,WAAA6C,SAIjC;AAAA,IAAAqV,UAAApY;AAAAA,IAAAmY;AAAAA,IAAAjR;AAAAA,IAAA,GAAAS;AAAAA,EAAAA,IAAwD5E,OAAK7C,OAAA6C,OAAA7C,OAAAiY,OAAAjY,OAAAgH,QAAAhH,OAAAyH,WAAAzH,OAAAF,OAAAmY,QAAAjY,EAAA,CAAA,GAAAgH,SAAAhH,EAAA,CAAA,GAAAyH,YAAAzH,EAAA,CAAA,GAAAF,KAAAE,EAAA,CAAA;AAAtD,QAAAkY,WAAApY,OAAAI,SAAA,KAAAJ,IACP,CAAAqY,SAAAC,UAAA,IAA8B/X,SAAkB4X,CAAAA,KAAoB;AAAC,MAAA3X,IAAAK;AAAAX,WAAAiY,SAE3D3X,KAAAA,MAAA;AACR,QAAI,CAAC2X;AAAK,aAEDG,WAAW,EAAI;AAGxB,UAAAC,UAAgBlU,WAAW,MAAA;AACzBiU,iBAAW,EAAI;AAAA,IAAC,GACfH,KAAK;AAAC,WAEF,MAAA;AACLpE,mBAAawE,OAAO;AAAA,IAAC;AAAA,EACtB,GACA1X,KAAA,CAACsX,KAAK,GAACjY,OAAAiY,OAAAjY,OAAAM,IAAAN,OAAAW,OAAAL,KAAAN,EAAA,CAAA,GAAAW,KAAAX,EAAA,CAAA,IAbVkB,UAAUZ,IAaPK,EAAO;AAMG,QAAAC,KAAA2H,aAAavB,MAAM;AAAC,MAAA7F;AAAA,SAAAnB,EAAA,CAAA,MAAAkY,YAAAlY,EAAA,CAAA,MAAAiC,OAAAjC,EAAA,EAAA,MAAAyH,aAAAzH,EAAA,EAAA,MAAAY,MAAAZ,UAAAmY,WAH/BhX,KAAA,oBAAC2W,kBAAA,EAAc,GACTrQ,WACOyQ,WAAAA,UACF,SAAAtX,IACCuX,UAAAA,SACLlW,IAAAA,CAAG,GACRjC,OAAAkY,UAAAlY,OAAAiC,KAAAjC,QAAAyH,WAAAzH,QAAAY,IAAAZ,QAAAmY,SAAAnY,QAAAmB,MAAAA,KAAAnB,EAAA,EAAA,GANFmB;AAME,CAEL;AACD6W,SAAS1U,cAAc;ACjDvB,MAAMwU,iBAAiB3U,uBAAO6U,QAAQ,EAAC3U,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,EACrCV,CAAAA,UAIG;AACH,QAAM;AAAA,IAACyV;AAAAA,IAAOC;AAAAA,EAAAA,IAAU1V,OAClB;AAAA,IAAC2V;AAAAA,IAAM5J;AAAAA,EAAAA,IAASJ,YAAY3L,MAAMyL,KAAK,GACvCmK,YAAYD,KAAKD,MAAM;AAS7B,SAPe1J,YAAYD,OAAO0J,OAAQI,CAAAA,cAAc;AACtD,UAAM3S,WAAW0S,UAAUE,MAAMD,SAAS;AAG1C,WAAO;AAAA,MAACE,QAFU7S,SAAS8S,aAAa9S,SAAS+S,iBAAiB/S,SAASgT;AAAAA,IAAAA;AAAAA,EAG7E,CAAC;AAGH,CAAC,GAsCYC,eAAevT,WAAW,SAAA5C,OAAAZ,KAAA;AAAA,QAAAjC,IAAAC,EAAA,CAAA;AAAA,MAAAwH,WAAA3H;AAAAE,WAAA6C,SAKrC;AAAA,IAAAoW,MAAAnZ;AAAAA,IAAA,GAAA2H;AAAAA,EAAAA,IAAiC5E,OAAK7C,OAAA6C,OAAA7C,OAAAyH,WAAAzH,OAAAF,OAAA2H,YAAAzH,EAAA,CAAA,GAAAF,KAAAE,EAAA,CAAA;AACtC,QAAAsY,QAAc/P,aADPzI,OAAAI,SAAA,IAAAJ,EACwB;AAAC,MAAAQ;AAAA,SAAAN,EAAA,CAAA,MAAAsY,SAAAtY,SAAAiC,OAAAjC,EAAA,CAAA,MAAAyH,aAEzBnH,yBAAC,kBAAc,GAAKmH,WAAkB6Q,OAAYrW,KAAY,QAAA,OAAA,CAAM,GAAGjC,OAAAsY,OAAAtY,OAAAiC,KAAAjC,OAAAyH,WAAAzH,OAAAM,MAAAA,KAAAN,EAAA,CAAA,GAAvEM;AAAuE,CAC/E;AACD0Y,aAAa1V,cAAc;AAMpB,MAAM4V,gBAAgBzT,WAAW,SAAA5C,OAAAZ,KAAA;AAAA,QAAAjC,IAAAC,EAAA,CAAA;AAAA,MAAAwH,WAAA3H;AAAAE,WAAA6C,SAKtC;AAAA,IAAAoW,MAAAnZ;AAAAA,IAAA,GAAA2H;AAAAA,EAAAA,IAAiC5E,OAAK7C,OAAA6C,OAAA7C,OAAAyH,WAAAzH,OAAAF,OAAA2H,YAAAzH,EAAA,CAAA,GAAAF,KAAAE,EAAA,CAAA;AACtC,QAAAsY,QAAc/P,aADPzI,OAAAI,SAAA,IAAAJ,EACwB;AAAC,MAAAQ;AAAA,SAAAN,EAAA,CAAA,MAAAsY,SAAAtY,SAAAiC,OAAAjC,EAAA,CAAA,MAAAyH,aAEzBnH,yBAAC,kBAAc,GAAKmH,WAAkB6Q,OAAYrW,KAAY,QAAA,QAAA,CAAO,GAAGjC,OAAAsY,OAAAtY,OAAAiC,KAAAjC,OAAAyH,WAAAzH,OAAAM,MAAAA,KAAAN,EAAA,CAAA,GAAxEM;AAAwE,CAChF;AACD4Y,cAAc5V,cAAc;AAMrB,MAAM6V,kBAAkB1T,WAAW,SAAA5C,OAAAZ,KAAA;AAAA,QAAAjC,IAAAC,EAAA,CAAA;AAAA,MAAAwH,WAAA3H;AAAAE,WAAA6C,SAKxC;AAAA,IAAAoW,MAAAnZ;AAAAA,IAAA,GAAA2H;AAAAA,EAAAA,IAAiC5E,OAAK7C,OAAA6C,OAAA7C,OAAAyH,WAAAzH,OAAAF,OAAA2H,YAAAzH,EAAA,CAAA,GAAAF,KAAAE,EAAA,CAAA;AACtC,QAAAsY,QAAc/P,aADPzI,OAAAI,SAAA,IAAAJ,EACwB;AAAC,MAAAQ;AAAA,SAAAN,EAAA,CAAA,MAAAsY,SAAAtY,SAAAiC,OAAAjC,EAAA,CAAA,MAAAyH,aAEzBnH,yBAAC,kBAAc,GAAKmH,WAAkB6Q,OAAYrW,KAAY,QAAA,UAAA,CAAS,GAAGjC,OAAAsY,OAAAtY,OAAAiC,KAAAjC,OAAAyH,WAAAzH,OAAAM,MAAAA,KAAAN,EAAA,CAAA,GAA1EM;AAA0E,CAClF;AACD6Y,gBAAgB7V,cAAc;AAMvB,MAAM8V,eAAe3T,WAAW,SAAA5C,OAAAZ,KAAA;AAAA,QAAAjC,IAAAC,EAAA,CAAA;AAAA,MAAAwH,WAAA3H;AAAAE,WAAA6C,SAKrC;AAAA,IAAAoW,MAAAnZ;AAAAA,IAAA,GAAA2H;AAAAA,EAAAA,IAAiC5E,OAAK7C,OAAA6C,OAAA7C,OAAAyH,WAAAzH,OAAAF,OAAA2H,YAAAzH,EAAA,CAAA,GAAAF,KAAAE,EAAA,CAAA;AACtC,QAAAsY,QAAc/P,aADPzI,OAAAI,SAAA,IAAAJ,EACwB;AAAC,MAAAQ;AAAA,SAAAN,EAAA,CAAA,MAAAsY,SAAAtY,SAAAiC,OAAAjC,EAAA,CAAA,MAAAyH,aAEzBnH,yBAAC,kBAAc,GAAKmH,WAAkB6Q,OAAYrW,KAAY,QAAA,OAAA,CAAM,GAAGjC,OAAAsY,OAAAtY,OAAAiC,KAAAjC,OAAAyH,WAAAzH,OAAAM,MAAAA,KAAAN,EAAA,CAAA,GAAvEM;AAAuE,CAC/E;AACD8Y,aAAa9V,cAAc;ACxGpB,MAAM+V,WAAW5T,WAAW,SAAA5C,OAAAZ,KAAA;AAAA,QAAAjC,IAAAC,EAAA,CAAA;AAAA,MAAAqZ,MAAA7R;AAAAzH,WAAA6C,SAKjC;AAAA,IAAAyW;AAAAA,IAAA,GAAA7R;AAAAA,EAAAA,IAA6B5E,OAAK7C,OAAA6C,OAAA7C,OAAAsZ,MAAAtZ,OAAAyH,cAAA6R,OAAAtZ,EAAA,CAAA,GAAAyH,YAAAzH,EAAA,CAAA;AASpB,QAAAF,KAAA+C,MAAK7E,aAAckC,SAAnB,IAAmC2C,MAAK7E;AAAS,MAAAsC;AAAA,SAAAN,SAAAsZ,QAAAtZ,EAAA,CAAA,MAAA6C,MAAAI,YAAAjD,EAAA,CAAA,MAAAiC,OAAAjC,EAAA,CAAA,MAAAyH,aAAAzH,SAAAF,MAN7DQ,yBAAC,KAAA,EACS,WAAA,YAAU,GACdmH,WACE6R,MACDrX,KACA,MAAA,YACK,UAAAnC,IAET+C,UAAAA,MAAKI,SAAAA,CACR,GAAMjD,OAAAsZ,MAAAtZ,EAAA,CAAA,IAAA6C,MAAAI,UAAAjD,OAAAiC,KAAAjC,OAAAyH,WAAAzH,OAAAF,IAAAE,OAAAM,MAAAA,KAAAN,EAAA,CAAA,GATNM;AASM,CAET;AACD+Y,SAAS/V,cAAc;AChCvB,MAAMiW,qBAAqB,GAEdC,mBAAmB;AAAA,EAC9B/W,OAAO;AAAA,EACPgX,SAAS;AAAA,EACTC,SAAS;AAAA,EACT9W,MAAM;AACR,GAEa+W,cAAc;AAAA,EACzBlX,OAAO;AAAA,EACPgX,SAAS;AAAA,EACTC,SAAS;AAAA,EACT9W,MAAM;AACR,GAEagX,UAAUzW,OAAOgN,IAAI,EAAC9M,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,qBAItBsW,cAAc1W,OAAO8M,IAAI,EAAC5M,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,2HAQZgW,kBAAkB,aAIhCO,aAAa3W,OAAOC,IAAGC,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,uMAgBvBwW,iBAAiB5W,OAAO8M,IAAI,EAAC5M,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,kCAG/BgW,kBAAkB,aACjBA,kBAAkB,aAClBA,kBAAkB,iBAOjBS,qBAAqB7W,OAAqD8M,IAAI,EAAC5M,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,kFAKrEV,CAAAA,UAAU;AAC7B,QAAM;AAAA,IAAC0L;AAAAA,EAAAA,IAASC,YAAY3L,MAAMyL,KAAK;AAEvC,SAAOC,MAAMgG,OAAO0F,QAAQpX,MAAMqX,IAAI,EAAEC,QAAQC;AAClD,CAAC,KC9CGC,QAAQ;AAAA,EACZ5X,OAAO;AAAA,EACPgX,SAAS;AAAA,EACTC,SAAS;AAAA,EACT9W,MAAM;AACR,GAIM0X,+BAA+B,MAAO,KAAK,KAAK,KAAK;AASpD,SAAAC,MAAA1X,OAAA;AAAA,QAAA7C,IAAAC,EAAA,EAAA;AAAA,MAAAua,UAAAC,aAAAC,UAAAzJ,SAAAxJ,WAAAkT,QAAA7a,IAAA8a,OAAAC;AAAA7a,WAAA6C,SAcL;AAAA,IAAA2X;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAzJ;AAAAA,IAAAjK,QAAAlH;AAAAA,IAAA8a;AAAAA,IAAAD;AAAAA,IAAAE;AAAAA,IAAA,GAAApT;AAAAA,EAAAA,IAUI5E,OAAK7C,OAAA6C,OAAA7C,OAAAwa,UAAAxa,OAAAya,aAAAza,OAAA0a,UAAA1a,OAAAiR,SAAAjR,OAAAyH,WAAAzH,OAAA2a,QAAA3a,OAAAF,IAAAE,OAAA4a,OAAA5a,OAAA6a,cAAAL,WAAAxa,EAAA,CAAA,GAAAya,cAAAza,EAAA,CAAA,GAAA0a,WAAA1a,EAAA,CAAA,GAAAiR,UAAAjR,EAAA,CAAA,GAAAyH,YAAAzH,EAAA,CAAA,GAAA2a,SAAA3a,EAAA,CAAA,GAAAF,KAAAE,EAAA,CAAA,GAAA4a,QAAA5a,EAAA,CAAA,GAAA6a,YAAA7a,EAAA,CAAA;AALP,QAAAgH,SAAAlH,OAAAI,SAAA,IAAAJ,IAMFgb,WAAiBH,SAASnB,iBAAiBmB,MAAM,IAAhC,WACjBI,aAAmBJ,SAAShB,YAAYgB,MAAM,IAA3B,WACnBK,OAAaL,SAASN,MAAMM,MAAM,IAArB,UAIbM,iBAF6B5H,wBAAAA,IAEE,IAAA;AAA+B,MAAA/S;AAAAN,YAAAib,kBAC3C3a,KAAA2a,iBAAA;AAAA,IAAA3c,MACR;AAAA,IAAQ2c;AAAAA,IAAAC,QAAmC;AAAA,EAAA,IADnC;AAAA,IAAAR,UAEJ;AAAA,EAAA,GAAE1a,QAAAib,gBAAAjb,QAAAM,MAAAA,KAAAN,EAAA,EAAA;AAFjB,QAAAmb,aAAmB7a,IAInB8a,cAAoBV,YAAYW,SAASX,QAAQ,KAAKA,WAAWJ;AAA4B,MAAA3Z;AAAAX,IAAA,EAAA,MAAAmC,OAAAC,IAAA,2BAAA,KACxDzB,KAAA,CAAC,UAAU,SAAS,GAACX,QAAAW,MAAAA,KAAAX,EAAA,EAAA;AAA1D,QAAAsb,UAAqC3a;AAAqB,MAAAC;AAAAZ,IAAA,EAAA,MAAAmC,OAAAC,IAAA,2BAAA,KACrBxB,KAAA,CAAC,WAAW,SAAS,GAACZ,QAAAY,MAAAA,KAAAZ,EAAA,EAAA;AAA3D,QAAAgT,UAAqCpS;AAAsB,MAAAO;AAAAnB,IAAA,EAAA,MAAAmC,OAAAC,IAAA,2BAAA,KACzBjB,KAAA,CAAC,UAAU,UAAU,GAACnB,QAAAmB,MAAAA,KAAAnB,EAAA,EAAA;AAAxD,QAAAub,OAAkCpa,IAOXC,KAAAga,cAAA,KAAAlb;AAA4B,MAAAwN;AAAA1N,YAAA4a,SAgBxClN,KAAAkN,SACC,oBAAC,MAAA,EAAW,MAAA,GAAU,QAAA,2BAEtB,GACD5a,QAAA4a,OAAA5a,QAAA0N,MAAAA,KAAA1N,EAAA,EAAA;AAAA,MAAA2N;AAAA3N,IAAA,EAAA,MAAAya,eAAAza,UAAAmb,cACAxN,KAAA8M,eACC,oBAAC,YAAA,EAAW,OAAA,IAAY,MAAA,GAAajP,UAAAA,SAAqB2P,YACvDV,uBACH,GACDza,QAAAya,aAAAza,QAAAmb,YAAAnb,QAAA2N,MAAAA,KAAA3N,EAAA,EAAA;AAAA,MAAA6N;AAAA7N,IAAA,EAAA,MAAA0N,MAAA1N,UAAA2N,MAXLE,KAAA,oBAAC,SAAA,EAAc,MAAA,GAAY,SAAA,GACzB,UAAA,qBAAC,OAAA,EAAa,OAAA,GACXH,UAAAA;AAAAA,IAAAA;AAAAA,IAKAC;AAAAA,EAAAA,EAAAA,CAKH,GACF,GAAU3N,QAAA0N,IAAA1N,QAAA2N,IAAA3N,QAAA6N,MAAAA,KAAA7N,EAAA,EAAA;AAAA,MAAA8N;AAAA9N,IAAA,EAAA,MAAA+a,cAAA/a,UAAAwa,YAAAxa,EAAA,EAAA,MAAAiR,WAETnD,KAAA0M,YACC,oBAAC,KAAA,EAAa,SAAA,GACZ,UAAA,oBAAC,QAAA,EACI,IAAA,UACGlI,MAAAA,WACD,MAAA,SACI,YACHyI,MAAAA,YACG9J,kBACF,OAAA;AAAA,IAAAuK,eAAgB;AAAA,EAAA,GAAM,GAEjC,GACDxb,QAAA+a,YAAA/a,QAAAwa,UAAAxa,QAAAiR,SAAAjR,QAAA8N,MAAAA,KAAA9N,EAAA,EAAA;AAAA,MAAA+N;AAAA/N,IAAA,EAAA,MAAA6N,MAAA7N,UAAA8N,MAAA9N,EAAA,EAAA,MAAAmb,cA5BHpN,MAAA,qBAAC,YAAA,EAAiB,OAAA,cAAuBvC,UAAAA,SAAqB2P,YAC5DtN,UAAAA;AAAAA,IAAAA;AAAAA,IAeCC;AAAAA,EAAAA,GAaH,GAAa9N,QAAA6N,IAAA7N,QAAA8N,IAAA9N,QAAAmb,YAAAnb,QAAA+N,OAAAA,MAAA/N,EAAA,EAAA;AAAA,MAAAgO;AAAAhO,IAAA,EAAA,MAAA8a,YAAA9a,EAAA,EAAA,MAAA0a,YAAA1a,EAAA,EAAA,MAAAob,eAAApb,EAAA,EAAA,MAAAiR,WAAAjR,EAAA,EAAA,MAAAgH,UAAAhH,EAAA,EAAA,MAAAmb,cAAAnb,EAAA,EAAA,MAAA6a,aAAA7a,UAAAib,kBACZjN,MAAAoN,oCACE,kBAAA,EAA2B5P,UAAAA,SAAqB2P,YAC/C,UAAA;AAAA,IAAA,oBAAC,gBAAA,EAAqBL,MAAAA,UAAkB9T,OAAAA;IACxC,oBAAC,0BAAA,EAEO8T,MAAAA,UACG,SAAA;AAAA,MAAAW,QAAS;AAAA,IAAA,GACT,SAAA;AAAA,MAAAA,QAAS;AAAA,IAAA,GACN,YAAA;AAAA,MAAAxD,OAAQgD;AAAAA,MAAcP,UAAYA,WAAW;AAAA,MAAKgB,MAAQ;AAAA,IAAA,GACjDzK,qBAAAA,QAAAA,eALJ4J,SAAS,EAKE;AAAA,EAAA,EAAA,CAEhC,GACD7a,QAAA8a,UAAA9a,QAAA0a,UAAA1a,QAAAob,aAAApb,QAAAiR,SAAAjR,QAAAgH,QAAAhH,QAAAmb,YAAAnb,QAAA6a,WAAA7a,QAAAib,gBAAAjb,QAAAgO,OAAAA,MAAAhO,EAAA,EAAA;AAAA,MAAAiO;AAAA,SAAAjO,EAAA,EAAA,MAAA8a,YAAA9a,EAAA,EAAA,MAAAgH,UAAAhH,UAAAyH,aAAAzH,EAAA,EAAA,MAAAgb,QAAAhb,EAAA,EAAA,MAAA+N,OAAA/N,EAAA,EAAA,MAAAgO,OAAAhO,EAAA,EAAA,MAAAoB,MAAApB,EAAA,EAAA,MAAAmb,cAAAnb,UAAAib,kBA3DHhN,2BAAC,aAAA,EACS,WAAA,SACF+M,MAAI,GACNvT,WACe,qBAAArG,IACX6Z,QAAAA,gBACAjU,QACA,QAAA,GACF8T,MAAAA,UACM,aAAA,MACL,QAAA,YACGa,UAAAA,WACDL,SACAtI,SACHuI,MACMJ,YAEZpN,UAAAA;AAAAA,IAAAA;AAAAA,IA8BCC;AAAAA,EAAAA,GAaH,GAAchO,QAAA8a,UAAA9a,QAAAgH,QAAAhH,QAAAyH,WAAAzH,QAAAgb,MAAAhb,QAAA+N,KAAA/N,QAAAgO,KAAAhO,QAAAoB,IAAApB,QAAAmb,YAAAnb,QAAAib,gBAAAjb,QAAAiO,OAAAA,MAAAjO,EAAA,EAAA,GA5DdiO;AA4Dc;AAIlBsM,MAAMjX,cAAc;AAEpB,MAAMqY,YAAY;AAAA,EAChBL,SAAS;AAAA,IAACM,GAAG;AAAA,IAAIC,OAAO;AAAA,IAAKC,QAAQ;AAAA,EAAA;AAAA,EACrClQ,QAAQ;AAAA,IAACmQ,SAAS;AAAA,EAAA;AAAA,EAClB5D,SAAU8C,oBACHA,iBAEE;AAAA,IACLc,SAAS;AAAA,IACTZ,YAAY;AAAA,MACVa,MAAM;AAAA,MACNC,iBAAiBhB,iBAAiB;AAAA,MAClCP,UAAUO,iBAAiB;AAAA,IAAA;AAAA,EAC7B,IAR0B;AAAA,IAACc,SAAS;AAAA,EAAA;AAAA,EAWxCG,SAAS;AAAA,IACPN,GAAG;AAAA,IACHC,OAAO;AAAA,EAAA;AAAA,EAETM,UAAU;AAAA,IACRL,QAAQ;AAAA,IACRD,OAAO;AAAA,EAAA;AAEX,GAGMrQ,UAAU;AAAA,EACd8P,SAAS;AAAA,IACPc,YAAY;AAAA,EAAA;AAAA,EAEdxQ,QAAQ;AAAA,IACNmQ,SAAS;AAAA,EAAA;AAAA,EAEX5D,SAAS;AAAA,IACP4D,SAAS;AAAA,EAAA;AAEb,GAEMM,cAAcC,OAAOC,OAAO1C,WAAW,GACvC2C,aAAaF,OAAOC,OAAOpM,IAAI,GAC/BsM,aAAaH,OAAOC,OAAOG,IAAI,GAC/BC,mBAAmBL,OAAOC,OAAOzC,UAAU,GAC3C8C,2BAA2BN,OAAOC,OAAOvC,kBAAkB;AC/L1D,SAAA6C,aAAA;AAAA,SACEC,qBACLC,WACAlH,SACAmH,MACF;AAAC;AALI,SAAAA,SAAA;AAAA,SAIG;AAAK;AAJR,SAAAnH,UAAA;AAAA,SAGG;AAAI;AAKd,MAAMkH,YAAYA,MAAM,MAAM;AAAC,GCXlBE,eAAe7N,0BAC1B,4BACA,IACF;ACaO,SAAA8N,WAAAra,OAAA;AAAA,QAAA7C,IAAAC,EAAA,CAAA,GACL;AAAA,IAAAgD;AAAAA,IAAA2D,SAAA9G;AAAAA,IAAAqd;AAAAA,IAAAC;AAAAA,IAAAC,KAAA/c;AAAAA,EAAAA,IAA6DuC,OAA5C+D,UAAA9G,OAAAI,SAAA,IAAAJ,IAAiCud,MAAA/c,OAAAJ,SAAA,IAAAI,IAClD;AAAA,IAAAwb;AAAAA,EAAAA,IAAiBjK,SAAAA;AAAU,MAAAlR;AAAAX,WAAA8b,UAWhBnb,KAAA;AAAA,IAAAmb;AAAAA,EAAAA,GAAQ9b,OAAA8b,QAAA9b,OAAAW,MAAAA,KAAAX,EAAA,CAAA;AAAA,MAAAY;AAAA,SAAAZ,SAAAiD,YAAAjD,EAAA,CAAA,MAAAqd,OAAArd,EAAA,CAAA,MAAA4G,WAAA5G,EAAA,CAAA,MAAAmd,YAAAnd,SAAAod,YAAApd,EAAA,CAAA,MAAAW,MARjBC,KAAA,oBAAC,aAAA,EACa,aAAA,MACJ,WAAA,iBACCgG,SACCuW,UACAC,UACLC,KACI,SAAA,GACF,OAAA1c,IAENsC,SAAAA,CACH,GAAcjD,OAAAiD,UAAAjD,OAAAqd,KAAArd,OAAA4G,SAAA5G,OAAAmd,UAAAnd,OAAAod,UAAApd,OAAAW,IAAAX,OAAAY,MAAAA,KAAAZ,EAAA,CAAA,GAXdY;AAWc;AAIlBsc,WAAW5Z,cAAc;AAEzB,MAAMga,cAAcna,OAAOoa,IAAI,EAACla,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA;ACzChC,IAAIia,UAAU;AAGP,SAASC,kBAA0B;AACxC,SAAOC,OAAOF,SAAS;AACzB;ACwBO,SAAAG,cAAA9a,OAAA;AAAA,QAAA7C,IAAAC,EAAA,EAAA,GACL;AAAA,IAAAgD;AAAAA,IAAA2D;AAAAA,IAAAuW;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAtK,SAAAjT;AAAAA,EAAAA,IAAkE+C,OAAfkQ,UAAAjT,OAAAI,SAAA,IAAAJ;AAAW,MAAAQ;AAAAN,IAAA,CAAA,MAAAmC,OAAAC,IAAA,2BAAA,KACf9B,KAAA,CAAA,GAAEN,OAAAM,MAAAA,KAAAN,EAAA,CAAA;AAAjD,QAAA,CAAAwC,OAAAob,QAAA,IAA0Bvd,SAAqBC,EAAE,GACjDud,UAAgBhB,WAAAA;AAAY,MAAAlc;AAAAX,IAAA,CAAA,MAAAmC,OAAAC,IAAA,2BAAA,KAkDnBzB,KAAA;AAAA,IAAA0O,SAAU;AAAA,IAAG3P,MA/CPoe,CAAAA,WAAA;AACX,YAAA/Z,KAAW+Z,OAAM/Z,MAAO0Z,mBACxB/C,WAAiBoD,OAAMpD,YAAN;AAEjBqD,aAAAA,gBAAgB,MAAA;AACdH,iBAASI,CAAAA,cAAA;AAOP,cAAItD,aAAa;AAAI,mBACZsD,UAASre,OAAQse,CAAAA,UAAWA,MAAKla,OAAQA,EAAE;AAQpD,gBAAAma,UAAgBA,MACdH,gBAAgB,MACdH,SAASO,CAAAA,iBAAkBA,aAAYxe,OAAQye,CAAAA,YAAWH,QAAKla,OAAQA,EAAE,CAAC,CAC5E;AAAC,iBAQI,CAAA,GACFia,UAASre,OAAQ0e,aAAWJ,QAAKla,OAAQA,EAAE,GAC9C;AAAA,YAAAma;AAAAA,YAAAna;AAAAA,YAAA8W,WAGayD,KAAIC,IAAAA;AAAAA,YAAMT,QACb;AAAA,cAAA,GAAIA;AAAAA,cAAMpD;AAAAA,YAAAA;AAAAA,UAAU,CAC7B;AAAA,QACF,CACF;AAAA,MAAC,CACH,GAEM3W;AAAAA,IAAE;AAAA,EAAA,GAGgB/D,OAAAW,MAAAA,KAAAX,EAAA,CAAA;AAhD7B,QAAAkE,QAgDEvD;AACI,MAAAC;AAAAZ,IAAA,CAAA,MAAAqd,OAAArd,EAAA,CAAA,MAAA6d,WAAA7d,EAAA,CAAA,MAAA4G,WAAA5G,SAAAmd,YAAAnd,EAAA,CAAA,MAAAod,YAAApd,EAAA,CAAA,MAAAwC,SAAAxC,EAAA,CAAA,MAAA+S,WAKDnS,KAAAid,WACC,oBAAC,iBAAuB9K,SACtB,UAAA,oBAAC,cAAoBnM,SAAmBuW,UAAoBC,UAAeC,KACzE,UAAA,oBAAC,mBAAyB,SAAA,IAAY,MAAA,aACnC7a,gBAAKoI,IAAKiL,KAWV,GACH,EAAA,CACF,EAAA,CACF,GACD7V,OAAAqd,KAAArd,OAAA6d,SAAA7d,OAAA4G,SAAA5G,OAAAmd,UAAAnd,OAAAod,UAAApd,OAAAwC,OAAAxC,OAAA+S,SAAA/S,OAAAY,MAAAA,KAAAZ,EAAA,CAAA;AAAA,MAAAmB;AAAA,SAAAnB,EAAA,EAAA,MAAAiD,YAAAjD,UAAAY,MArBHO,KAAA,qBAAA,aAAA,UAAA,EAA8B+C,OAC3BjB,UAAAA;AAAAA,IAAAA;AAAAA,IACArC;AAAAA,EAAAA,EAAAA,CAoBH,GAAwBZ,QAAAiD,UAAAjD,QAAAY,IAAAZ,QAAAmB,MAAAA,KAAAnB,EAAA,EAAA,GAtBxBmB;AAsBwB;AA/ErB,SAAA0U,MAAA/V,IAAA;AA+DmB,QAAA;AAAA,IAAAoe,SAAAM;AAAAA,IAAAza,IAAA0a;AAAAA,IAAAX,QAAAY;AAAAA,IAAA7D;AAAAA,EAAAA,IAAA/a;AAAgC,SAC1C,oBAAC,SAEW,UAAAge,SAAMtD,UACH,aAAAsD,SAAMrD,aACVyD,SAAAA,WACD,QAAAJ,SAAMnD,QACP,OAAAmD,SAAMlD,OACH,UAAAkD,SAAMpD,UACLG,aAPN9W,IAOe;AACpB;AAUlB4Z,cAAcra,cAAc;ACvGrB,SAAAqb,WAAA;AACL,QAAAza,QAAcqL,WAAW0N,YAAY;AAErC,MAAI,CAAC/Y;AACH,UAAM,IAAI0a,MAAM,mCAAmC;AAMrD,MAAI,CAACC,SAAS3a,KAAK,KAAKA,MAAKmL,YAAa;AACxC,UAAM,IAAIuP,MAAM,iDAAiD;AAClE,SAEM1a;AAAK;ACrBP,SAAS4a,qBACdtc,OACAuc,cACAzV,gBACoB;AACpB,QAAM0V,MAAMD,aAAaxZ,QAAQ+D,cAAc,GACzCqN,MAAMoI,aAAanR,MAAM,GAAGoR,GAAG,GAC/B3R,MAAMsJ,IAAI3X;AAEhB,WAASF,IAAIuO,MAAM,GAAGvO,KAAK,GAAGA,KAAK,GAAG;AACpC,UAAMmgB,UAAUtI,IAAI7X,CAAC,EAAEb,aAAa,eAAe;AAEnD,QAAI,CAACghB;AACH;AAGF,UAAMC,WAAWD,QAAQE,MAAM,GAAG;AAElCD,aAASE,IAAAA;AAET,UAAMC,IAAc,CAAA;AAEpB,QAAItW,WAAW;AAEf,aAASuW,IAAI,GAAGA,IAAIJ,SAASlgB,QAAQsgB,KAAK,GAAG;AAC3CD,QAAE3f,KAAKwf,SAASI,CAAC,CAAC;AAElB,YAAMC,IAAIF,EAAEG,KAAK,GAAG;AAEpB,UAAI,CAAChd,MAAM+c,CAAC,GAAGxW,UAAU;AACvBA,mBAAW;AACX;AAAA,MACF;AAAA,IACF;AAEA,QAAIA;AACF,aAAO4N,IAAI7X,CAAC;AAAA,EAEhB;AAEA,SAAO;AACT;AAEO,SAAS2gB,qBACdjd,OACAuc,cACAzV,gBACoB;AACpB,QAAM0V,MAAMD,aAAaxZ,QAAQ+D,cAAc,GACzCqN,MAAMoI,aAAanR,MAAMoR,GAAG,GAC5B3R,MAAM0R,aAAa/f;AAEzB,WAASF,IAAI,GAAGA,IAAIuO,KAAKvO,KAAK,GAAG;AAC/B,QAAI,CAAC6X,IAAI7X,CAAC;AACR;AAGF,UAAMmgB,UAAUtI,IAAI7X,CAAC,EAAEb,aAAa,eAAe;AAEnD,QAAI,CAACghB;AACH;AAGF,UAAMC,WAAWD,QAAQE,MAAM,GAAG;AAElCD,aAASE,IAAAA;AAET,UAAMC,IAAc,CAAA;AAEpB,QAAItW,WAAW;AAEf,aAASuW,IAAI,GAAGA,IAAIJ,SAASlgB,QAAQsgB,KAAK,GAAG;AAC3CD,QAAE3f,KAAKwf,SAASI,CAAC,CAAC;AAElB,YAAMC,IAAIF,EAAEG,KAAK,GAAG;AAEpB,UAAI,CAAChd,MAAM+c,CAAC,GAAGxW,UAAU;AACvBA,mBAAW;AACX;AAAA,MACF;AAAA,IACF;AAEA,QAAIA;AACF,aAAO4N,IAAI7X,CAAC;AAAA,EAEhB;AAEA,SAAO;AACT;AAEO,SAAS4gB,kBAAkBngB,IAAuB;AAKvD,MAJIA,GAAGtB,aAAa,MAAM,MAAM,cAC9BsB,GAAGX,MAAAA,GAGDW,GAAGtB,aAAa,MAAM,MAAM,QAAQ;AACtC,UAAM0hB,aAAapgB,GAAGogB;AAElBA,kBAAcA,sBAAsBpW,eACtCoW,WAAW/gB,MAAAA;AAAAA,EAEf;AACF;AClGO,MAAMghB,cAAcxQ,0BACzB,2BACA,IACF,GCmBayQ,OAAOC,KAClBra,WAAW,SAAA5C,OAAA6C,cAAA;AAAA,QAAA1F,IAAAC,EAAA,EAAA;AAAA,MAAAgD,UAAAqD,SAAAmB,WAAA3H;AAAAE,WAAA6C,SAKT;AAAA,IAAAI;AAAAA,IAAAuJ,OAAA1M;AAAAA,IAAAwG;AAAAA,IAAA,GAAAmB;AAAAA,EAAAA,IAAqD5E,OAAK7C,OAAA6C,OAAA7C,OAAAiD,UAAAjD,OAAAsG,SAAAtG,OAAAyH,WAAAzH,OAAAF,OAAAmD,WAAAjD,EAAA,CAAA,GAAAsG,UAAAtG,EAAA,CAAA,GAAAyH,YAAAzH,EAAA,CAAA,GAAAF,KAAAE,EAAA,CAAA;AAAzC,QAAAwM,QAAA1M,OAAAI,SAAA,IAAAJ,IACjBmC,MAAYvB,OAA8B,IAAI,GAC9C,CAAA4I,gBAAAyW,iBAAA,IAA4C1f,SAA6B,IAAI,GAC7EoT,oBAA0B/S,OAAO4I,cAAc;AAAC,MAAAhJ;AAAAN,IAAA,CAAA,MAAAmC,OAAAC,IAAA,2BAAA,KACX9B,KAAA,CAAA,GAAEN,OAAAM,MAAAA,KAAAN,EAAA,CAAA;AAAvC,QAAAggB,OAAqC1f;AAAO,MAAAK;AAAAX,IAAA,CAAA,MAAAmC,OAAAC,IAAA,2BAAA,KACoBzB,KAAA,CAAA,GAAEX,OAAAW,MAAAA,KAAAX,EAAA,CAAA;AAAlE,QAAA,CAAA+e,cAAAkB,eAAA,IAAwC5f,SAAwBM,EAAE;AAAC,MAAAC;AAAAZ,IAAA,CAAA,MAAAmC,OAAAC,IAAA,2BAAA,KACrBxB,SAAEZ,OAAAY,MAAAA,KAAAZ,EAAA,CAAA;AAAhD,QAAA,CAAAwC,OAAAob,QAAA,IAA0Bvd,SAAoBO,EAAE,GAChDsf,WAAiBxf,OAAO8B,KAAK;AAAC,MAAArB;AAAAnB,IAAA,CAAA,MAAAmC,OAAAC,IAAA,2BAAA,KAI5BjB,KAAAA,MAAMc,IAAGnB,SAAQd,OAAAmB,MAAAA,KAAAnB,EAAA,CAAA,GAFnBqC,oBACEqD,cACAvE,EACF;AAAC,MAAAC,IAAAsM;AAAA1N,WAAAsJ,kBAESlI,KAAAA,MAAA;AACRqS,sBAAiB3S,UAAWwI;AAAAA,EAAH,GACxBoE,KAAA,CAACpE,cAAc,GAACtJ,OAAAsJ,gBAAAtJ,QAAAoB,IAAApB,QAAA0N,OAAAtM,KAAApB,EAAA,EAAA,GAAA0N,KAAA1N,EAAA,EAAA,IAFnBkB,UAAUE,IAEPsM,EAAgB;AAAC,MAAAC,IAAAE;AAAA7N,YAAAwC,SAEVmL,KAAAA,MAAA;AACRuS,aAAQpf,UAAW0B;AAAAA,EAAH,GACfqL,KAAA,CAACrL,KAAK,GAACxC,QAAAwC,OAAAxC,QAAA2N,IAAA3N,QAAA6N,OAAAF,KAAA3N,EAAA,EAAA,GAAA6N,KAAA7N,EAAA,EAAA,IAFVkB,UAAUyM,IAEPE,EAAO;AAAC,MAAAC;AAAA9N,IAAA,EAAA,MAAAmC,OAAAC,IAAA,2BAAA,KAGT0L,KAAAA,CAAApQ,SAAAyiB,QAAApX,UAAA9E,cACE2Z,SAASwC,CAAAA,OAAQ;AAAA,IAAA,GAAIA;AAAAA,IAAC,CAAGJ,MAAI,GAAG;AAAA,MAAAtiB;AAAAA,MAAAqL;AAAAA,IAAAA;AAAAA,EAAkB,EAAG,GAEjD9E,YACF8b,kBAAkBriB,OAAO,GAGpB,MAAA;AACLkgB,aAASyC,CAAAA,QAAA;AACP,YAAAC,WAAiB;AAAA,QAAA,GAAIF;AAAAA,MAAAA;AAErB,aAAA,OAAOE,SAASN,MAAI,GAEbM;AAAAA,IAAQ,CAChB;AAAA,EAAC,IAELtgB,QAAA8N,MAAAA,KAAA9N,EAAA,EAAA;AAjBH,QAAAugB,eAAqBzS;AAmBpB,MAAAC;AAAA/N,IAAA,EAAA,MAAAmC,OAAAC,IAAA,2BAAA,KAE+B2L,MAAAA,CAAAyS,QAAAC,eAAA;AAC9B7C,aAAS8C,CAAAA,QAAA;AACP,YAAAC,YAAkBP,IAAEJ,MAAI;AAExB,aAAKW,YAEE;AAAA,QAAA,GAAIP;AAAAA,QAAC,CAAGJ,MAAI,GAAG;AAAA,UAAA,GAAIW;AAAAA,UAAS5X,UAAEA;AAAAA,QAAAA;AAAAA,MAAQ,IAFtBqX;AAAAA,IAEwB,CAChD;AAAA,EAAC,GACHpgB,QAAA+N,OAAAA,MAAA/N,EAAA,EAAA;AARD,QAAA4gB,cAAoB7S,KAaAC,MAAA1E,kBAAkByV,aAAY,CAAA,KAA9B;AAAyC,MAAA9Q;AAAAjO,IAAA,EAAA,MAAAwM,SAAAxM,UAAAwC,SAAAxC,EAAA,EAAA,MAAAgO,OAFpDC,MAAA;AAAA,IAAAoB,SACI;AAAA,IAAG/F,gBACI0E;AAAAA,IAAyC6S,OAClD;AAAA,IAACb;AAAAA,IAAAO;AAAAA,IAAAK;AAAAA,IAAAb;AAAAA,IAAAvT;AAAAA,IAAAhK;AAAAA,EAAAA,GAOTxC,QAAAwM,OAAAxM,QAAAwC,OAAAxC,QAAAgO,KAAAhO,QAAAiO,OAAAA,MAAAjO,EAAA,EAAA;AAXH,QAAAmU,eACSlG;AAYR,MAAAgG;AAAAjU,YAAA+e,gBAGC9K,MAAA5P,CAAAA,UAAA;AACE,QAAKoP,kBAAiB3S,SAEtB;AAAA,UAAIuD,MAAKC,QAAS,aAAW;AAC3BD,cAAKsF,eAAAA;AAEL,cAAAmX,SAAerB,qBACbS,SAAQpf,SACRie,cACAtL,kBAAiB3S,OACnB;AAEIggB,mBACFpB,kBAAkBoB,MAAM,GACxBf,kBAAkBe,MAAM;AACzB;AAAA,MAAA;AAKH,UAAIzc,MAAKC,QAAS,WAAS;AACzBD,cAAKsF,eAAAA;AAEL,cAAAoX,SAAejC,qBACboB,SAAQpf,SACRie,cACAtL,kBAAiB3S,OACnB;AAEIigB,mBACFrB,kBAAkBqB,MAAM,GACxBhB,kBAAkBgB,MAAM;AACzB;AAAA,MAAA;AAKH,UAAI1c,MAAKC,QAAS,aAAW;AAC3BD,cAAKsF,eAAAA;AAEL,cAAAsV,UAAgBxL,kBAAiB3S,QAAQ7C,aAAc,eAAe;AAEtE,YAAI,CAACghB;AAAO;AAEZ,cAAA+B,cAAkBd,SAAQpf,QAASme,OAAO;AAE1C,YAAI,CAAC0B;AAAS;AAEd,YAAIA,YAAS5X;AACX6U,mBAASqD,CAAAA,QAAA;AACP,kBAAAC,cAAkBd,IAAEnB,OAAO;AAE3B,mBAAK0B,cAEE;AAAA,cAAA,GAAIP;AAAAA,cAAC,CAAGnB,OAAO,GAAG;AAAA,gBAAA,GAAI0B;AAAAA,gBAAS5X,UAAY;AAAA,cAAA;AAAA,YAAK,IAFhCqX;AAAAA,UAEkC,CAC1D;AAAA,aAAC;AAEF,gBAAAe,WAAiBlC,QAAOE,MAAO,GAAG;AAElCgC,mBAAQ/B,IAAAA;AAER,gBAAAgC,YAAkBD,SAAQ3B,KAAM,GAAG,GACnC6B,cAAoBD,aAAalB,SAAQpf,QAASsgB,SAAS;AAEvDC,0BACFA,YAAW3jB,QAAQkB,SACnBmhB,kBAAkBsB,YAAW3jB,OAAQ;AAAA,QACtC;AACF;AAAA,MAAA;AAKH,UAAI2G,MAAKC,QAAS,cAAY;AAC5BD,cAAKsF,eAAAA;AAEL,cAAA2X,aAAmB7N,kBAAiB3S,QAAQ7C,aAAc,eAAe;AAEzE,YAAI,CAACqjB;AAAU;AAEVpB,iBAAQpf,QAASwgB,UAAU,GAAWvY,YACzC6U,SAAS2D,CAAAA,QAAA;AACP,gBAAAC,cAAkBpB,IAAEkB,UAAU;AAE9B,iBAAKX,cAEE;AAAA,YAAA,GAAIP;AAAAA,YAAC,CAAGkB,UAAU,GAAG;AAAA,cAAA,GAAIX;AAAAA,cAAS5X,UAAY;AAAA,YAAA;AAAA,UAAI,IAFlCqX;AAAAA,QAEoC,CAC5D;AACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGF,GACFpgB,QAAA+e,cAAA/e,QAAAiU,OAAAA,MAAAjU,EAAA,EAAA;AA7FH,QAAAyE,gBAAsBwP;AA+FrB,MAAAmC;AAAApW,YAAAsG,WAGC8P,MAAAhE,CAAAA,YAAA;AACE2N,sBAAkB1b,QAAK9C,MAAO,GAG9B+E,UAAUjC,OAAK;AAAA,EAAC,GACjBrE,QAAAsG,SAAAtG,QAAAoW,OAAAA,MAAApW,EAAA,EAAA;AANH,QAAA2T,cAAoByC;AAQnB,MAAAI;AAAAxW,IAAA,EAAA,MAAAmC,OAAAC,IAAA,2BAAA,KAESoU,MAAAA,MAAA;AACR,QAAI,CAACvU,IAAGnB;AAAQ;AAChB,UAAA2gB,gBAAsBjiB,MAAKkiB,KACzBzf,IAAGnB,QAAQ6gB,iBAAkB,sBAAsB,CACrD;AAEA1B,oBAAgBwB,aAAa;AAAA,EAAC,GAC/BzhB,QAAAwW,OAAAA,MAAAxW,EAAA,EAAA;AAAA,MAAA0W;AAAA1W,YAAAiD,YAAEyT,MAAA,CAACzT,QAAQ,GAACjD,QAAAiD,UAAAjD,QAAA0W,OAAAA,MAAA1W,EAAA,EAAA,GAPbkB,UAAUsV,KAOPE,GAAU;AAAC,MAAAK;AAAA/W,IAAA,EAAA,MAAAiD,YAAAjD,EAAA,EAAA,MAAA2T,eAAA3T,EAAA,EAAA,MAAAyE,iBAAAzE,EAAA,EAAA,MAAAyH,aAAAzH,UAAAwM,SAIVuK,0BAAC,OAAA,EACI,IAAA,MACK,WAAA,QAAM,GACVtP,WACKkM,SAAAA,aACElP,WAAAA,eACNxC,KACA,MAAA,QACEuK,iBAGT,GAAQxM,QAAAiD,UAAAjD,QAAA2T,aAAA3T,QAAAyE,eAAAzE,QAAAyH,WAAAzH,QAAAwM,OAAAxM,QAAA+W,OAAAA,MAAA/W,EAAA,EAAA;AAAA,MAAAgX;AAAA,SAAAhX,EAAA,EAAA,MAAAmU,gBAAAnU,UAAA+W,OAZVC,MAAA,oBAAA,YAAA,UAAA,EAA6B7C,OAAAA,cAC3B4C,UAAAA,IAAAA,CAYF,GAAuB/W,QAAAmU,cAAAnU,QAAA+W,KAAA/W,QAAAgX,OAAAA,MAAAhX,EAAA,EAAA,GAbvBgX;AAauB,CAE1B,CACH;AACA6I,KAAKvc,cAAc;ACtOZ,SAASse,oBAA4C;AAC1D,SAAO1S;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AA8BT;AAEO,SAAS2S,uBAAuBhf,OAA2C;AAChF,QAAMif,QAAQ,WACR;AAAA,IAACvT;AAAAA,EAAAA,IAASC,YAAY3L,MAAMyL,KAAK,GACjC4L,OAAO3L,MAAMwT,WAAWD,KAAK;AAEnC,SAAO5S;AAAAA;AAAAA;AAAAA,UAGC8S,gBAAgBzT,OAAO2L,KAAKC,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA,UAIpC6H,gBAAgBzT,OAAO2L,KAAK+H,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,YAKlCD,gBAAgBzT,OAAO2L,KAAKgI,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA,YAIpCF,gBAAgBzT,OAAO2L,KAAKjW,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOvC+d,gBAAgBzT,OAAO2L,KAAKC,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA,UAIpC6H,gBAAgBzT,OAAO2L,KAAK+H,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,YAKlCD,gBAAgBzT,OAAO2L,KAAKgI,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA,YAIpCF,gBAAgBzT,OAAO2L,KAAKjW,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAKjD;AAMO,SAASke,iBACdtf,OACwB;AACxB,QAAM;AAAA,IAACuf;AAAAA,EAAAA,IAAUvf,OACX;AAAA,IAAC2J;AAAAA,EAAAA,IAASgC,YAAY3L,MAAMyL,KAAK;AAEvC,SAAOY;AAAAA,oBACWmT,IAAI7V,MAAM,CAAC,IAAI4V,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAM1C;AChGO,SAAAE,UAAA;AACL,QAAAC,OAAahT,WAAWqQ,WAAW;AAEnC,MAAI,CAAC2C;AACH,UAAM,IAAI3D,MAAM,6BAA6B;AAC9C,SAEM2D;AAAI;ACNN,MAAMC,YAAY1C,KAAK,SAAAjd,OAAA;AAAA,QAAA7C,IAAAC,EAAA,CAAA;AAAA,MAAAgD,UAAAwE,WAAA3H;AAAAE,WAAA6C,SAI5B;AAAA,IAAAI;AAAAA,IAAA8F,UAAAjJ;AAAAA,IAAA,GAAA2H;AAAAA,EAAAA,IAAmD5E,OAAK7C,OAAA6C,OAAA7C,OAAAiD,UAAAjD,OAAAyH,WAAAzH,OAAAF,OAAAmD,WAAAjD,EAAA,CAAA,GAAAyH,YAAAzH,EAAA,CAAA,GAAAF,KAAAE,EAAA,CAAA;AAAvC,QAAA+I,WAAAjJ,OAAAI,SAAA,KAAAJ,IACjByiB,OAAaD,QAAAA,GAODhiB,MAACyI;AAAQ,MAAApI;AAAA,SAAAX,EAAA,CAAA,MAAAiD,YAAAjD,SAAAyH,aAAAzH,EAAA,CAAA,MAAAM,MAAAN,EAAA,CAAA,MAAAuiB,KAAA/V,SAJnB7L,yBAAC,OAAA,EACI,IAAA,MACK,WAAA,aAAW,GACf8G,WACI,QAAAnH,IACG,WAAAiiB,KAAI/V,OACV,MAAA,SACE,OAAA+V,KAAI/V,iBAGb,GAAQxM,OAAAiD,UAAAjD,OAAAyH,WAAAzH,OAAAM,IAAAN,EAAA,CAAA,IAAAuiB,KAAA/V,OAAAxM,OAAAW,MAAAA,KAAAX,EAAA,CAAA,GAVRW;AAUQ,CAEX,GCIK8hB,iBAAiB3C,KAAK3c,OAAOuf,GAAErf,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,EAACqe,mBAAmBC,sBAAsB,CAAC,GAE1Ec,cAAcxf,uBAAOM,GAAG,EAAEmf,MAAM;AAAA,EAACC,aAAa;AAAG,CAAC,EAACxf,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,EAAwB4e,gBAAgB,GAE3FW,kBAAkB3f,OAAOuZ,IAAI,EAACrZ,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA,yCAUvBwf,WAAWjD,KAAK,SAC3Bjd,OACmB;AACnB,QAAM;AAAA,IACJI;AAAAA,IACA8F,UAAUia,eAAe;AAAA,IACzBjd,WAAW;AAAA,IACX5H;AAAAA,IACA6H,MAAMid;AAAAA,IACNlf,IAAImf;AAAAA,IACJC;AAAAA,IACAC;AAAAA,IACAlY;AAAAA,IACAtE,UAAU;AAAA,IACV3C,WAAW;AAAA,IACXuI,QAAQ;AAAA,IACR6W;AAAAA,IACAC;AAAAA,IACA,GAAG7b;AAAAA,EAAAA,IACD5E,OACE0gB,UAAU7iB,OAA6B,IAAI,GAC3C8iB,cAAc9iB,OAA8B,IAAI,GAChD6hB,OAAOD,QAAAA,GACP;AAAA,IAACtC;AAAAA,IAAMO;AAAAA,IAAcK;AAAAA,IAAab;AAAAA,EAAAA,IAAqBwC,MACvDkB,MAAMC,MAAAA,GACN3f,KAAKmf,UAAUO,KACftC,WAAW1Y,QAAQ,MAAMuX,KAAK/W,OAAO,CAAClF,MAAM,EAAE,CAAC,GAAG,CAACA,IAAIic,IAAI,CAAC,GAC5Df,UAAUkC,SAAS3B,KAAK,GAAG,GAC3BmB,YAAY4B,KAAK/f,MAAMyc,OAAO,GAE9Bpa,UAAU0d,KAAKjZ,mBAAmBia,QAAQziB,SAC1CiI,WAAW4X,WAAW5X,aAAa7I,SAAY8iB,eAAerC,WAAW5X,YAAY,IAErF/K,WAAWukB,KAAKjZ,kBAAkBiZ,KAAKjZ,mBAAmBia,QAAQziB,UAAU,IAAI,IAChFqT,eAAe1L,QACnB,OAAO;AAAA,IAAC,GAAG8Z;AAAAA,IAAM1B,OAAO0B,KAAK1B,QAAQ;AAAA,IAAGb,MAAMmB;AAAAA,EAAAA,IAC9C,CAACA,UAAUoB,IAAI,CACjB,GAEMne,cAAcyD,YACjBxD,CAAAA,UAA2C;AACtC6G,eAASA,QAAQ7G,KAAK;AAE1B,UAAM9C,SAAS8C,MAAM9C;AAGnBA,sBAAkBgI,gBACjBhI,OAAOtD,aAAa,SAAS,MAAM,cAClCsD,OAAOoiB,QAAQ,2BAA2B,OAE5Ctf,MAAM6N,gBAAAA,GACN0O,YAAY3B,SAAS,CAAClW,QAAQ,GAC9BgX,kBAAkBwD,QAAQziB,OAAO;AAAA,EAErC,GACA,CAACiI,UAAUkW,SAAS/T,SAAS0V,aAAab,iBAAiB,CAC7D,GAEMtb,gBAAgBoD,YACnBxD,CAAAA,YAA4C;AACvCQ,eAAWR,QAAMC,QAAQ,YAChBkf,YAAY1iB,WAAWyiB,QAAQziB,UAEtC8iB,MAAAA;AAAAA,EAER,GACA,CAAC/e,OAAO,CACV;AAEA3D,YAAU,MAAM;AACd,QAAKqiB,QAAQziB;AAEb,aAAOyf,aAAagD,QAAQziB,SAASqgB,SAAS3B,KAAK,GAAG,GAAGzW,UAAU9E,QAAQ;AAAA,EAC7E,GAAG,CAAC8E,UAAUoY,UAAUZ,cAActc,QAAQ,CAAC;AAE/C,QAAMuH,WACJ,qBAAC,MAAA,EAAK,SACJ,UAAA;AAAA,IAAA,qBAAC,KAAA,EACC,aAAagB,OACb,OAAO;AAAA,MACLqX,YAAYZ,iBAAiBhgB,WAAW,YAAY;AAAA,MACpD6gB,eAAe;AAAA,IAAA,GAGhBb,UAAAA;AAAAA,MAAAA,iBACC,oBAAC,QAAK,OAAc,MAAMld,UAAU,QAClC,UAAA,oBAAC,iBAAa,EAAA,CAChB;AAAA,MAED,CAACkd,iBACA,oBAAC,iBAAA,EAAgB,OAAc,MAAMld,UAAU,QAC7C,UAAA,oBAAC,sBAAA,EAAqB,OAAO;AAAA,QAACge,WAAWhb,WAAW,kBAAkB7I;AAAAA,MAAAA,GAAW,EAAA,CACnF;AAAA,IAAA,GAEJ;AAAA,IACA,oBAAC,KAAA,EAAI,MAAM,GACT,UAAA,oBAAC,MAAA,EAAK,OAAc,MAAM6F,UAAU,cAAa,YAAW,QACzDsd,gBACH,EAAA,CACF;AAAA,EAAA,GACF;AAGF,SAAIllB,4BAEC,gBAAA,EACC,iBAAe8F,WAAW,KAAK/D,QAC/B,gBAAc6D,IACd,iBAAekb,SACf,WAAQ,eACJxX,WACJ,SAASrD,aACT,KAAKmf,SACL,MAAK,QAEL,UAAA;AAAA,IAAA,oBAAC,eACC,QAAQhB,KAAK1B,OACb,iBAAe9X,UACf,IAAIoa,QACJ,WAAQ,iBACR,MACA,KAAKK,aACL,MAAK,YACL,UAEChY,UAAAA,UACH;AAAA,IAEA,oBAAC,YAAY,UAAZ,EAAqB,OAAO2I,cAC1BlR,UAAAA,YAAY,oBAAC,WAAA,EAAU,QAAQ,CAAC8F,UAAW9F,UAAS,EAAA,CACvD;AAAA,EAAA,EAAA,CACF,IAKF,qBAAC,gBAAA,EACC,iBAAegB,WAAW,KAAK/D,QAC/B,WAAQ,YACR,gBAAc6D,IACd,iBAAekb,YACXxX,WACJ,iBAAesB,UACf,SAAS3E,aACT,WAAWK,eACX,KAAK8e,SACL,MAAK,YACL,UAEA,UAAA;AAAA,IAAA,oBAAC,aAAA,EAAY,QAAQhB,KAAK1B,OAAO,IAAG,OAAM,WAAQ,iBAC/CrV,UAAAA,SAAAA,CACH;AAAA,IAEA,oBAAC,YAAY,UAAZ,EAAqB,OAAO2I,cAC1BlR,UAAAA,YAAY,oBAAC,WAAA,EAAU,UAAqBA,SAAAA,CAAS,EAAA,CACxD;AAAA,EAAA,GACF;AAEJ,CAAC;AACD8f,SAASzf,cAAc;"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/core/helpers/animation.ts","../src/core/helpers/focus.ts","../src/core/hooks/useClickOutside.ts","../src/core/hooks/useElementRect/useElementRect.ts","../src/core/hooks/useForwardedRef.ts","../src/core/utils/errorBoundary.tsx","../src/core/components/autocomplete/autocomplete.styles.tsx","../src/core/components/autocomplete/autocompleteOption.tsx","../src/core/components/autocomplete/autocompleteReducer.ts","../src/core/components/autocomplete/constants.ts","../src/core/components/autocomplete/autocomplete.tsx","../src/core/components/breadcrumbs/breadcrumbs.styles.ts","../src/core/components/breadcrumbs/breadcrumbs.tsx","../src/core/components/dialog/styles.ts","../src/core/components/dialog/dialogContext.ts","../src/core/components/dialog/useDialog.ts","../src/core/components/dialog/dialog.tsx","../src/core/components/dialog/dialogProvider.tsx","../src/core/components/menu/menuButton.tsx","../src/core/components/skeleton/styles.ts","../src/core/components/skeleton/skeleton.tsx","../src/core/components/skeleton/textSkeleton.tsx","../src/core/components/tab/tabPanel.tsx","../src/core/components/toast/styles.ts","../src/core/components/toast/toast.tsx","../src/core/hooks/useMounted.ts","../src/core/components/toast/toastContext.ts","../src/core/components/toast/toastLayer.tsx","../src/core/components/toast/toastState.ts","../src/core/components/toast/toastProvider.tsx","../src/core/components/toast/useToast.ts","../src/core/components/tree/helpers.ts","../src/core/components/tree/treeContext.ts","../src/core/components/tree/tree.tsx","../src/core/components/tree/style.ts","../src/core/components/tree/useTree.ts","../src/core/components/tree/treeGroup.tsx","../src/core/components/tree/treeItem.tsx"],"sourcesContent":["/**\n * @internal\n */\nexport function _raf(fn: () => void): () => void {\n const frameId = requestAnimationFrame(fn)\n\n return () => {\n cancelAnimationFrame(frameId)\n }\n}\n\n/**\n * @internal\n */\nexport function _raf2(fn: () => void): () => void {\n let innerDispose: (() => void) | null = null\n\n const outerDispose = _raf(() => {\n innerDispose = _raf(fn)\n })\n\n return () => {\n if (innerDispose) innerDispose()\n\n outerDispose()\n }\n}\n","import {\n isHTMLAnchorElement,\n isHTMLButtonElement,\n isHTMLElement,\n isHTMLInputElement,\n isHTMLSelectElement,\n isHTMLTextAreaElement,\n} from './element'\n\n// export const globalFocusState = {\n// IgnoreUtilFocusChanges: false,\n// }\n\n/**\n * @internal\n */\nexport function _hasFocus(element: HTMLElement): boolean {\n return Boolean(document.activeElement) && element.contains(document.activeElement)\n}\n\n/**\n * @internal\n */\nexport function isFocusable(element: HTMLElement): boolean {\n if (\n element.tabIndex > 0 ||\n (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)\n ) {\n return true\n }\n\n if (isHTMLAnchorElement(element)) {\n return Boolean(element.href) && element.rel !== 'ignore'\n }\n\n if (isHTMLInputElement(element)) {\n return element.type !== 'hidden' && element.type !== 'file' && !element.disabled\n }\n\n if (\n isHTMLButtonElement(element) ||\n isHTMLSelectElement(element) ||\n isHTMLTextAreaElement(element)\n ) {\n return !element.disabled\n }\n\n return false\n}\n\n/**\n * @internal\n */\nexport function attemptFocus(element: HTMLElement): boolean {\n if (!isFocusable(element)) {\n return false\n }\n\n // globalFocusState.IgnoreUtilFocusChanges = true\n\n try {\n element.focus()\n } catch {\n // ignore\n }\n\n // globalFocusState.IgnoreUtilFocusChanges = false\n\n return document.activeElement === element\n}\n\n/**\n * @internal\n */\nexport function focusFirstDescendant(element: HTMLElement): boolean {\n for (let i = 0; i < element.childNodes.length; i++) {\n const child = element.childNodes[i]\n\n if (isHTMLElement(child) && (attemptFocus(child) || focusFirstDescendant(child))) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * @internal\n */\nexport function focusLastDescendant(element: HTMLElement): boolean {\n for (let i = element.childNodes.length - 1; i >= 0; i--) {\n const child = element.childNodes[i]\n\n if (isHTMLElement(child) && (attemptFocus(child) || focusLastDescendant(child))) {\n return true\n }\n }\n\n return false\n}\n","import {useEffect, useRef, useState} from 'react'\n\nimport {EMPTY_ARRAY} from '../constants'\n\n/**\n * @public\n */\nexport type ClickOutsideListener = (event: MouseEvent) => void\n\n/**\n * @public\n */\nexport type ClickOutsideElements = (HTMLElement | null | (HTMLElement | null)[])[]\n\nfunction _getElements(\n element: HTMLElement | null,\n elementsArg: ClickOutsideElements,\n): HTMLElement[] {\n const ret = [element]\n\n for (const el of elementsArg) {\n if (Array.isArray(el)) {\n ret.push(...el)\n } else {\n ret.push(el)\n }\n }\n\n // oxlint-disable-next-line no-unsafe-type-assertion\n return ret.filter(Boolean) as HTMLElement[]\n}\n\n/**\n * @public\n * @deprecated replaced by the new `useClickOutsideEvent` hook, instead of:\n * ```tsx\n * const [button, setButtonElement] = useState(null)\n * useClickOutside((event) => {}, [button])\n * return <button ref={setButtonElement} />\n * ```\n * do:\n * ```tsx\n * const buttonRef = useRef()\n * useClickOutsideEvent((event) => {}, () => [buttonRef.current])\n * return <button ref={buttonRef} />\n * ```\n */\nexport function useClickOutside(\n listener: ClickOutsideListener,\n elementsArg: ClickOutsideElements = EMPTY_ARRAY,\n boundaryElement?: HTMLElement | null,\n): (el: HTMLElement | null) => void {\n const [element, setElement] = useState<HTMLElement | null>(null)\n const [elements, setElements] = useState(() => _getElements(element, elementsArg))\n const elementsRef = useRef(elements)\n\n useEffect(() => {\n const prevElements = elementsRef.current\n const nextElements = _getElements(element, elementsArg)\n\n if (prevElements.length !== nextElements.length) {\n setElements(nextElements)\n elementsRef.current = nextElements\n\n return\n }\n\n for (const el of prevElements) {\n if (!nextElements.includes(el)) {\n setElements(nextElements)\n elementsRef.current = nextElements\n\n return\n }\n }\n\n for (const el of nextElements) {\n if (!prevElements.includes(el)) {\n setElements(nextElements)\n elementsRef.current = nextElements\n\n return\n }\n }\n }, [element, elementsArg])\n\n useEffect(() => {\n if (!listener) return undefined\n\n const handleWindowMouseDown = (evt: MouseEvent) => {\n const target = evt.target\n\n if (!(target instanceof Node)) {\n return\n }\n\n if (boundaryElement && !boundaryElement.contains(target)) {\n return\n }\n\n for (const el of elements) {\n if (target === el || el.contains(target)) {\n return\n }\n }\n\n listener(evt)\n }\n\n window.addEventListener('mousedown', handleWindowMouseDown)\n\n return () => {\n window.removeEventListener('mousedown', handleWindowMouseDown)\n }\n }, [boundaryElement, listener, elements])\n\n return setElement\n}\n","import {useElementSize} from '../useElementSize'\n\n/**\n * Subscribe to the rect of a DOM element.\n * @beta\n *\n * @deprecated Use `useElementSize` instead\n */\nexport function useElementRect(element: HTMLElement | null): DOMRectReadOnly | null {\n const elementSize = useElementSize(element)\n\n // oxlint-disable-next-line no-deprecated\n return elementSize?._contentRect || null\n}\n","import {useImperativeHandle, useRef} from 'react'\n\n/**\n * @beta\n * @deprecated use `useImperativeHandle` instead\n * @example\n * ```diff\n * -const ref = useForwardedRef(forwardedRef)\n * +const ref = useRef(null)\n * +useImperativeHandle(forwardedRef, () => ref.current)\n * ```\n */\n// oxlint-disable-next-line no-deprecated\nexport function useForwardedRef<T>(ref: React.ForwardedRef<T>): React.MutableRefObject<T | null> {\n const innerRef = useRef<T | null>(null)\n\n useImperativeHandle(ref, () => innerRef.current!)\n\n return innerRef\n}\n","import {Component, PropsWithChildren} from 'react'\n\nimport {Code} from '../primitives/code'\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport type ErrorBoundaryProps = PropsWithChildren<{\n onCatch: (params: {error: Error; info: React.ErrorInfo}) => void\n}>\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport interface ErrorBoundaryState {\n error: Error | null\n}\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = {error: null}\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n // Update state so the next render will show the fallback UI.\n return {error}\n }\n\n componentDidCatch(error: Error, info: React.ErrorInfo): void {\n this.props.onCatch({error, info})\n }\n\n render(): React.ReactNode {\n const {error} = this.state\n\n if (error) {\n const message = typeof error?.message === 'string' ? error.message : 'Error'\n\n return <Code>{message}</Code>\n }\n\n return this.props.children\n }\n}\n","import {SpinnerIcon} from '@sanity/icons'\nimport {keyframes, styled} from 'styled-components'\n\nimport {Box} from '../../primitives'\n\n/**\n * @internal\n */\nexport const StyledAutocomplete = styled.div`\n line-height: 0;\n`\n\n/**\n * @internal\n */\nexport const ListBox = styled(Box)`\n & > ul {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n`\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n`\n\n/**\n * @internal\n */\nexport const AnimatedSpinnerIcon = styled(SpinnerIcon)`\n animation: ${rotate} 500ms linear infinite;\n`\n","import {useCallback} from 'react'\n\nimport {_isEnterToClickElement} from '../../helpers'\n\nexport interface AutocompleteOptionProps {\n children: React.ReactNode\n id: string\n onSelect: (v: string) => void\n selected: boolean\n value: string\n}\n\nexport function AutocompleteOption(props: AutocompleteOptionProps): React.JSX.Element {\n const {children, id, onSelect, selected, value} = props\n\n const handleClick = useCallback(() => {\n // Calling the `onSelect` in a timeout is a fix to\n // allow the `click` event to propagate in some cases\n setTimeout(() => {\n onSelect(value)\n }, 0)\n }, [onSelect, value])\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLLIElement>) => {\n if (event.key === 'Enter' && !_isEnterToClickElement(event.currentTarget)) {\n handleClick()\n }\n },\n [handleClick],\n )\n\n return (\n <li\n aria-selected={selected}\n data-ui=\"AutocompleteOption\"\n id={id}\n // oxlint-disable-next-line no-noninteractive-element-to-interactive-role, prefer-tag-over-role\n role=\"option\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {children}\n </li>\n )\n}\n","import {AutocompleteMsg, AutocompleteState} from './types'\n\n/**\n * @internal\n */\nexport function autocompleteReducer(\n state: AutocompleteState,\n msg: AutocompleteMsg,\n): AutocompleteState {\n if (msg.type === 'input/change') {\n return {...state, activeValue: null, focused: true, query: msg.query}\n }\n\n if (msg.type === 'input/focus') {\n return {...state, focused: true}\n }\n\n if (msg.type === 'root/blur') {\n return {...state, focused: false, query: null}\n }\n\n if (msg.type === 'root/clear') {\n return {...state, activeValue: null, query: null, value: null}\n }\n\n if (msg.type === 'root/escape') {\n return {...state, focused: false, query: null}\n }\n\n if (msg.type === 'root/open') {\n return {...state, query: state.query || msg.query}\n }\n\n if (msg.type === 'root/setActiveValue') {\n return {...state, activeValue: msg.value, listFocused: msg.listFocused || state.listFocused}\n }\n\n if (msg.type === 'root/setListFocused') {\n return {...state, listFocused: msg.listFocused}\n }\n\n if (msg.type === 'value/change') {\n return {...state, activeValue: msg.value, query: null, value: msg.value}\n }\n\n return state\n}\n","import {Placement} from '../../types'\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_LISTBOX_IGNORE_KEYS = [\n 'Control',\n 'Shift',\n 'Alt',\n 'Enter',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n 'Meta',\n 'Tab',\n 'CapsLock',\n]\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_POPOVER_PLACEMENT: Placement = 'bottom-start'\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS: Placement[] = ['bottom-start', 'top-start']\n","import {ChevronDownIcon} from '@sanity/icons'\nimport {\n ChangeEvent,\n cloneElement,\n ElementType,\n FocusEvent,\n forwardRef,\n HTMLProps,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\n\nimport {EMPTY_ARRAY, EMPTY_RECORD} from '../../constants'\nimport {_hasFocus, _raf, focusFirstDescendant} from '../../helpers'\nimport {useArrayProp} from '../../hooks'\nimport {\n Box,\n BoxProps,\n Button,\n Card,\n Popover,\n PopoverProps,\n Stack,\n Text,\n TextInput,\n} from '../../primitives'\nimport {Radius} from '../../types'\nimport {AnimatedSpinnerIcon, ListBox, StyledAutocomplete} from './autocomplete.styles'\nimport {AutocompleteOption} from './autocompleteOption'\nimport {autocompleteReducer} from './autocompleteReducer'\nimport {\n AUTOCOMPLETE_LISTBOX_IGNORE_KEYS,\n AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS,\n AUTOCOMPLETE_POPOVER_PLACEMENT,\n} from './constants'\nimport {AutocompleteOpenButtonProps, BaseAutocompleteOption} from './types'\n\n/**\n * @public\n */\nexport interface AutocompleteProps<Option extends BaseAutocompleteOption = BaseAutocompleteOption> {\n border?: boolean\n customValidity?: string\n filterOption?: (query: string, option: Option) => boolean\n fontSize?: number | number[]\n // oxlint-disable-next-line no-redundant-type-constituents\n icon?: ElementType | ReactNode\n id: string\n /** @beta */\n listBox?: BoxProps\n loading?: boolean\n onChange?: (value: string) => void\n onQueryChange?: (query: string | null) => void\n onSelect?: (value: string) => void\n /** @beta */\n openButton?: boolean | AutocompleteOpenButtonProps\n /** @beta */\n openOnFocus?: boolean\n /** The options to render. */\n options?: Option[]\n padding?: number | number[]\n popover?: Omit<PopoverProps, 'content' | 'onMouseEnter' | 'onMouseLeave' | 'open'> &\n Omit<HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'ref' | 'width'>\n prefix?: ReactNode\n radius?: Radius | Radius[]\n /** @beta */\n relatedElements?: HTMLElement[]\n /** The callback function for rendering each option. */\n renderOption?: (option: Option) => React.JSX.Element\n /** @beta */\n renderPopover?: (\n props: {\n content: React.JSX.Element | null\n hidden: boolean\n inputElement: HTMLInputElement | null\n onMouseEnter: () => void\n onMouseLeave: () => void\n },\n ref: Ref<HTMLDivElement>,\n ) => ReactNode\n renderValue?: (value: string, option?: Option) => string\n suffix?: ReactNode\n /** The current value. */\n value?: string\n}\n\nconst DEFAULT_RENDER_VALUE = (value: string, option?: BaseAutocompleteOption) =>\n option ? option.value : value\n\nconst DEFAULT_FILTER_OPTION = (query: string, option: BaseAutocompleteOption) =>\n option.value.toLowerCase().indexOf(query.toLowerCase()) > -1\n\nconst InnerAutocomplete = forwardRef(function InnerAutocomplete<\n Option extends BaseAutocompleteOption,\n>(\n props: AutocompleteProps<Option> &\n Omit<\n HTMLProps<HTMLInputElement>,\n | 'aria-activedescendant'\n | 'aria-autocomplete'\n | 'aria-expanded'\n | 'aria-owns'\n | 'as'\n | 'autoCapitalize'\n | 'autoComplete'\n | 'autoCorrect'\n | 'id'\n | 'inputMode'\n | 'onChange'\n | 'onSelect'\n | 'popover'\n | 'prefix'\n | 'ref'\n | 'role'\n | 'spellCheck'\n | 'type'\n | 'value'\n >,\n forwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n const {\n border = true,\n customValidity,\n disabled,\n filterOption: filterOptionProp,\n fontSize = 2,\n icon,\n id,\n listBox = EMPTY_RECORD,\n loading,\n onBlur,\n onChange,\n onFocus,\n onQueryChange,\n onSelect,\n openButton,\n openOnFocus,\n options: optionsProp,\n padding: paddingProp = 3,\n popover = EMPTY_RECORD,\n prefix,\n radius = 2,\n readOnly,\n relatedElements,\n renderOption: renderOptionProp,\n renderPopover,\n renderValue = DEFAULT_RENDER_VALUE,\n suffix,\n value: valueProp,\n ...restProps\n } = props\n\n const [state, dispatch] = useReducer(autocompleteReducer, {\n activeValue: valueProp || null,\n focused: false,\n listFocused: false,\n query: null,\n value: valueProp || null,\n })\n\n const {activeValue, focused, listFocused, query, value} = state\n\n const defaultRenderOption = useCallback(\n ({value}: BaseAutocompleteOption) => (\n <Card data-as=\"button\" padding={paddingProp} radius={2} tone=\"inherit\">\n <Text size={fontSize} textOverflow=\"ellipsis\">\n {value}\n </Text>\n </Card>\n ),\n [fontSize, paddingProp],\n )\n\n const renderOption =\n typeof renderOptionProp === 'function' ? renderOptionProp : defaultRenderOption\n\n const filterOption =\n typeof filterOptionProp === 'function' ? filterOptionProp : DEFAULT_FILTER_OPTION\n\n // Element refs\n const rootElementRef = useRef<HTMLDivElement | null>(null)\n const resultsPopoverElementRef = useRef<HTMLDivElement | null>(null)\n const inputElementRef = useRef<HTMLInputElement | null>(null)\n const listBoxElementRef = useRef<HTMLDivElement | null>(null)\n\n // Value refs\n const listFocusedRef = useRef(false)\n const valueRef = useRef(value)\n const valuePropRef = useRef(valueProp)\n const popoverMouseWithinRef = useRef(false)\n\n // Forward ref to parent\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => inputElementRef.current,\n )\n\n const listBoxId = `${id}-listbox`\n const options = Array.isArray(optionsProp) ? optionsProp : EMPTY_ARRAY\n const padding = useArrayProp(paddingProp)\n const currentOption = useMemo(\n () => (value !== null ? options.find((o) => o.value === value) : undefined),\n [options, value],\n )\n const filteredOptions = useMemo(\n () => options.filter((option) => (query ? filterOption(query, option) : true)),\n [filterOption, options, query],\n )\n const filteredOptionsLen = filteredOptions.length\n const activeItemId = activeValue ? `${id}-option-${activeValue}` : undefined\n const expanded = (query !== null && loading) || (focused && query !== null)\n\n const handleRootBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n setTimeout(() => {\n // NOTE: This is a workaround for a bug that may happen in Chrome (clicking the scrollbar\n // closes the results in certain situations):\n // - Do not handle blur if the mouse is within the popover\n if (popoverMouseWithinRef.current) {\n return\n }\n\n const elements: HTMLElement[] = (relatedElements || []).concat(\n rootElementRef.current ? [rootElementRef.current] : [],\n resultsPopoverElementRef.current ? [resultsPopoverElementRef.current] : [],\n )\n\n let focusInside = false\n\n if (document.activeElement) {\n for (const e of elements) {\n if (e === document.activeElement || e.contains(document.activeElement)) {\n focusInside = true\n break\n }\n }\n }\n\n // oxlint-disable-next-line no-unnecessary-boolean-literal-compare\n if (focusInside === false) {\n dispatch({type: 'root/blur'})\n popoverMouseWithinRef.current = false\n if (onQueryChange) onQueryChange(null)\n if (onBlur) onBlur(event)\n }\n }, 0)\n },\n [onBlur, onQueryChange, relatedElements],\n )\n\n const handleRootFocus = useCallback((event: FocusEvent<HTMLDivElement>) => {\n const listBoxElement = listBoxElementRef.current\n const focusedElement = event.target instanceof HTMLElement ? event.target : null\n const listFocused = listBoxElement?.contains(focusedElement) || false\n\n if (listFocused !== listFocusedRef.current) {\n listFocusedRef.current = listFocused\n\n dispatch({type: 'root/setListFocused', listFocused})\n }\n }, [])\n\n const handleOptionSelect = useCallback(\n (v: string) => {\n dispatch({type: 'value/change', value: v})\n\n popoverMouseWithinRef.current = false\n\n if (onSelect) onSelect(v)\n\n valueRef.current = v\n\n if (onChange) onChange(v)\n if (onQueryChange) onQueryChange(null)\n\n inputElementRef.current?.focus()\n },\n [onChange, onSelect, onQueryChange],\n )\n\n const handleRootKeyDown = useCallback(\n (event: KeyboardEvent<HTMLElement>) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n\n if (!filteredOptionsLen) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n const activeIndex = activeOption ? filteredOptions.indexOf(activeOption) : -1\n const nextActiveOption = filteredOptions[(activeIndex + 1) % filteredOptionsLen]\n\n if (nextActiveOption) {\n dispatch({type: 'root/setActiveValue', value: nextActiveOption.value, listFocused: true})\n }\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n\n if (!filteredOptionsLen) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n const activeIndex = activeOption ? filteredOptions.indexOf(activeOption) : -1\n const nextActiveOption =\n filteredOptions[\n activeIndex === -1\n ? filteredOptionsLen - 1\n : (filteredOptionsLen + activeIndex - 1) % filteredOptionsLen\n ]\n\n if (nextActiveOption) {\n dispatch({type: 'root/setActiveValue', value: nextActiveOption.value, listFocused: true})\n }\n\n return\n }\n\n if (event.key === 'Escape') {\n dispatch({type: 'root/escape'})\n popoverMouseWithinRef.current = false\n if (onQueryChange) onQueryChange(null)\n inputElementRef.current?.focus()\n\n return\n }\n\n // oxlint-disable-next-line no-unsafe-type-assertion\n const target = event.target as Node\n const listEl = listBoxElementRef.current\n\n if (\n (listEl === target || listEl?.contains(target)) &&\n !AUTOCOMPLETE_LISTBOX_IGNORE_KEYS.includes(event.key)\n ) {\n inputElementRef.current?.focus()\n\n return\n }\n },\n [activeValue, filteredOptions, filteredOptionsLen, onQueryChange],\n )\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const nextQuery = event.currentTarget.value\n\n dispatch({type: 'input/change', query: nextQuery})\n\n if (onQueryChange) onQueryChange(nextQuery)\n },\n [onQueryChange],\n )\n\n const dispatchOpen = useCallback(() => {\n dispatch({\n type: 'root/open',\n query: value ? renderValue(value, currentOption) : '',\n })\n }, [currentOption, renderValue, value])\n\n const handleInputFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (!focused) {\n dispatch({type: 'input/focus'})\n\n if (onFocus) onFocus(event)\n if (openOnFocus) dispatchOpen()\n }\n },\n [focused, onFocus, openOnFocus, dispatchOpen],\n )\n\n const handlePopoverMouseEnter = useCallback(() => {\n popoverMouseWithinRef.current = true\n }, [])\n\n const handlePopoverMouseLeave = useCallback(() => {\n popoverMouseWithinRef.current = false\n }, [])\n\n const handleClearButtonClick = useCallback(() => {\n dispatch({type: 'root/clear'})\n valueRef.current = ''\n if (onChange) onChange('')\n if (onQueryChange) onQueryChange(null)\n inputElementRef.current?.focus()\n }, [onChange, onQueryChange])\n\n const handleClearButtonFocus = useCallback(() => {\n dispatch({type: 'input/focus'})\n }, [])\n\n // Change the value when `value` prop changes\n useEffect(() => {\n // If `valueProp` changed\n if (valueProp !== valuePropRef.current) {\n valuePropRef.current = valueProp\n\n if (valueProp !== undefined) {\n dispatch({type: 'value/change', value: valueProp})\n valueRef.current = valueProp\n }\n\n return\n }\n\n // If `valueProp` is not equal to `value`\n if (valueProp !== valueRef.current) {\n valueRef.current = valueProp || null\n\n dispatch({type: 'value/change', value: valueProp || null})\n }\n }, [valueProp])\n\n // Reset active item when closing\n useEffect(() => {\n if (!focused && valueRef.current) {\n dispatch({type: 'root/setActiveValue', value: valueRef.current})\n }\n }, [focused])\n\n // Focus the selected item\n useEffect(() => {\n const listElement = listBoxElementRef.current\n\n if (!listElement) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n\n if (activeOption) {\n const activeIndex = filteredOptions.indexOf(activeOption)\n // oxlint-disable-next-line no-unsafe-type-assertion\n const activeItemElement = listElement.childNodes[activeIndex] as HTMLLIElement | undefined\n\n if (activeItemElement) {\n if (_hasFocus(activeItemElement)) {\n // already focused\n return\n }\n\n focusFirstDescendant(activeItemElement)\n }\n }\n }, [activeValue, filteredOptions])\n\n const clearButton = useMemo(() => {\n if (!loading && !disabled && value) {\n return {\n 'aria-label': 'Clear',\n 'onFocus': handleClearButtonFocus,\n }\n }\n\n return undefined\n }, [disabled, handleClearButtonFocus, loading, value])\n\n const openButtonBoxPadding = useMemo(\n () =>\n padding.map((v) => {\n if (v === 0) return 0\n if (v === 1) return 1\n if (v === 2) return 1\n\n return v - 2\n }),\n [padding],\n )\n const openButtonPadding = useMemo(() => padding.map((v) => Math.max(v - 1, 0)), [padding])\n const openButtonProps: AutocompleteOpenButtonProps = useMemo(\n () => (typeof openButton === 'object' ? openButton : EMPTY_RECORD),\n [openButton],\n )\n\n const handleOpenClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n dispatchOpen()\n\n if (openButtonProps.onClick) openButtonProps.onClick(event)\n\n _raf(() => inputElementRef.current?.focus())\n },\n [openButtonProps, dispatchOpen],\n )\n\n const openButtonNode = useMemo(\n () =>\n !disabled && !readOnly && openButton ? (\n <Box aria-hidden={expanded} padding={openButtonBoxPadding}>\n <Button\n aria-label=\"Open\"\n disabled={expanded}\n fontSize={fontSize}\n icon={ChevronDownIcon}\n mode=\"bleed\"\n padding={openButtonPadding}\n {...openButtonProps}\n onClick={handleOpenClick}\n />\n </Box>\n ) : undefined,\n [\n disabled,\n expanded,\n fontSize,\n handleOpenClick,\n openButton,\n openButtonBoxPadding,\n openButtonPadding,\n openButtonProps,\n readOnly,\n ],\n )\n\n const inputValue = useMemo(() => {\n if (query === null) {\n if (value !== null) {\n return renderValue(value, currentOption)\n }\n\n return ''\n }\n\n return query\n }, [currentOption, query, renderValue, value])\n\n const input = (\n <TextInput\n {...restProps}\n aria-activedescendant={activeItemId}\n aria-autocomplete=\"list\"\n aria-expanded={expanded}\n aria-owns={listBoxId}\n autoCapitalize=\"off\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n border={border}\n clearButton={clearButton}\n customValidity={customValidity}\n disabled={disabled}\n fontSize={fontSize}\n icon={icon}\n iconRight={loading && AnimatedSpinnerIcon}\n id={id}\n inputMode=\"search\"\n onChange={handleInputChange}\n onClear={handleClearButtonClick}\n onFocus={handleInputFocus}\n padding={padding}\n prefix={prefix}\n radius={radius}\n readOnly={readOnly}\n ref={inputElementRef}\n // oxlint-disable-next-line prefer-tag-over-role, role-has-required-aria-props\n role=\"combobox\"\n spellCheck={false}\n suffix={suffix || openButtonNode}\n value={inputValue}\n />\n )\n\n const handleListBoxKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n // If the focus is currently in the list, move focus to the input element\n if (event.key === 'Tab') {\n if (listFocused) inputElementRef.current?.focus()\n }\n },\n [listFocused],\n )\n\n const content = useMemo(() => {\n if (filteredOptions.length === 0) return null\n\n return (\n <ListBox\n data-ui=\"AutoComplete__results\"\n onKeyDown={handleListBoxKeyDown}\n padding={1}\n {...listBox}\n tabIndex={-1}\n >\n <Stack\n as=\"ul\"\n aria-multiselectable={false}\n data-ui=\"AutoComplete__resultsList\"\n id={listBoxId}\n ref={listBoxElementRef}\n // oxlint-disable-next-line prefer-tag-over-role\n role=\"listbox\"\n space={1}\n >\n {filteredOptions.map((option) => {\n const active =\n activeValue !== null ? option.value === activeValue : currentOption === option\n\n return (\n <AutocompleteOption\n id={`${id}-option-${option.value}`}\n key={option.value}\n onSelect={handleOptionSelect}\n selected={active}\n value={option.value}\n >\n {cloneElement(renderOption(option), {\n disabled: loading,\n selected: active,\n tabIndex: listFocused && active ? 0 : -1,\n })}\n </AutocompleteOption>\n )\n })}\n </Stack>\n </ListBox>\n )\n }, [\n activeValue,\n currentOption,\n filteredOptions,\n handleOptionSelect,\n handleListBoxKeyDown,\n id,\n listBox,\n listBoxId,\n listFocused,\n loading,\n renderOption,\n ])\n\n const results = useMemo(() => {\n if (renderPopover) {\n return renderPopover(\n // oxlint-disable-next-line react-compiler\n {\n content,\n hidden: !expanded,\n // oxlint-disable-next-line react-compiler\n inputElement: inputElementRef.current,\n onMouseEnter: handlePopoverMouseEnter,\n onMouseLeave: handlePopoverMouseLeave,\n },\n // oxlint-disable-next-line react-compiler\n resultsPopoverElementRef,\n )\n }\n\n if (filteredOptionsLen === 0) {\n return null\n }\n\n return (\n <Popover\n arrow={false}\n constrainSize\n content={content}\n fallbackPlacements={AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS}\n matchReferenceWidth\n onMouseEnter={handlePopoverMouseEnter}\n onMouseLeave={handlePopoverMouseLeave}\n open={expanded}\n overflow=\"auto\"\n placement={AUTOCOMPLETE_POPOVER_PLACEMENT}\n portal\n radius={radius}\n ref={resultsPopoverElementRef}\n // oxlint-disable-next-line react-compiler\n referenceElement={inputElementRef.current}\n {...popover}\n />\n )\n }, [\n content,\n expanded,\n filteredOptionsLen,\n handlePopoverMouseEnter,\n handlePopoverMouseLeave,\n popover,\n radius,\n renderPopover,\n ])\n\n return (\n <StyledAutocomplete\n data-ui=\"Autocomplete\"\n onBlur={handleRootBlur}\n onFocus={handleRootFocus}\n onKeyDown={handleRootKeyDown}\n ref={rootElementRef}\n >\n {input}\n {results}\n </StyledAutocomplete>\n )\n})\n\nInnerAutocomplete.displayName = 'ForwardRef(Autocomplete)'\n\n/**\n * The Autocomplete component is typically used for search components.\n * It consists of a text input for writing a query, and properties for rendering suggestions.\n *\n * @public\n */\n// oxlint-disable-next-line no-unsafe-type-assertion\nexport const Autocomplete = InnerAutocomplete as <Option extends BaseAutocompleteOption>(\n props: AutocompleteProps<Option> &\n Omit<\n HTMLProps<HTMLInputElement>,\n | 'aria-activedescendant'\n | 'aria-autocomplete'\n | 'aria-expanded'\n | 'aria-owns'\n | 'as'\n | 'autoCapitalize'\n | 'autoComplete'\n | 'autoCorrect'\n | 'id'\n | 'inputMode'\n | 'onChange'\n | 'onSelect'\n | 'popover'\n | 'prefix'\n | 'ref'\n | 'role'\n | 'spellCheck'\n | 'type'\n | 'value'\n > & {\n ref?: Ref<HTMLInputElement>\n },\n) => React.JSX.Element\n","import {styled} from 'styled-components'\n\nimport {Button} from '../../primitives'\n\nexport const StyledBreadcrumbs = styled.ol`\n margin: 0;\n padding: 0;\n display: flex;\n list-style: none;\n align-items: center;\n white-space: nowrap;\n line-height: 0;\n`\n\nexport const ExpandButton = styled(Button)`\n appearance: none;\n margin: -4px;\n`\n","import {\n Children,\n forwardRef,\n Fragment,\n isValidElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport {useArrayProp, useClickOutsideEvent} from '../../hooks'\nimport {Box, Popover, Stack, Text} from '../../primitives'\nimport {ExpandButton, StyledBreadcrumbs} from './breadcrumbs.styles'\n\n/**\n * @beta\n */\nexport interface BreadcrumbsProps {\n maxLength?: number\n separator?: React.ReactNode\n space?: number | number[]\n}\n\n/**\n * @beta\n */\nexport const Breadcrumbs = forwardRef(function Breadcrumbs(\n props: BreadcrumbsProps & Omit<React.HTMLProps<HTMLOListElement>, 'as' | 'ref' | 'type'>,\n ref: React.ForwardedRef<HTMLOListElement>,\n) {\n const {children, maxLength, separator, space: spaceRaw = 2, ...restProps} = props\n const space = useArrayProp(spaceRaw)\n const [open, setOpen] = useState(false)\n const expandElementRef = useRef<HTMLButtonElement | null>(null)\n const popoverElementRef = useRef<HTMLDivElement | null>(null)\n\n const collapse = useCallback(() => setOpen(false), [])\n const expand = useCallback(() => setOpen(true), [])\n\n useClickOutsideEvent(collapse, () => [expandElementRef.current, popoverElementRef.current])\n\n const rawItems = useMemo(() => Children.toArray(children).filter(isValidElement), [children])\n\n const items = useMemo(() => {\n const len = rawItems.length\n\n if (maxLength && len > maxLength) {\n const beforeLength = Math.ceil(maxLength / 2)\n const afterLength = Math.floor(maxLength / 2)\n\n return [\n ...rawItems.slice(0, beforeLength - 1),\n <Popover\n constrainSize\n content={\n <Stack as=\"ol\" overflow=\"auto\" padding={space} space={space}>\n {rawItems.slice(beforeLength - 1, len - afterLength)}\n </Stack>\n }\n key=\"button\"\n open={open}\n placement=\"top\"\n portal\n ref={popoverElementRef}\n >\n <ExpandButton\n fontSize={1}\n mode=\"bleed\"\n onClick={open ? collapse : expand}\n padding={1}\n ref={expandElementRef}\n selected={open}\n text=\"…\"\n />\n </Popover>,\n ...rawItems.slice(len - afterLength),\n ]\n }\n\n return rawItems\n }, [collapse, expand, maxLength, open, rawItems, space])\n\n return (\n <StyledBreadcrumbs data-ui=\"Breadcrumbs\" {...restProps} ref={ref}>\n {items.map((item, itemIndex) => (\n // oxlint-disable-next-line no-array-index-key\n <Fragment key={itemIndex}>\n {itemIndex > 0 && (\n <Box aria-hidden as=\"li\" paddingX={space}>\n {separator || <Text muted>/</Text>}\n </Box>\n )}\n <Box as=\"li\">{item}</Box>\n </Fragment>\n ))}\n </StyledBreadcrumbs>\n )\n})\nBreadcrumbs.displayName = 'ForwardRef(Breadcrumbs)'\n","import {CSSObject, getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\n\nimport {_responsive, ThemeProps} from '../../styles'\nimport {DialogPosition} from '../../types'\n\n/**\n * @internal\n */\nexport interface ResponsiveDialogPositionStyleProps {\n $position: DialogPosition[]\n}\n\nexport function dialogStyle({theme}: ThemeProps): CSSObject {\n const {color} = getTheme_v2(theme)\n\n return {\n '&:not([hidden])': {\n display: 'flex',\n },\n\n 'top': 0,\n 'left': 0,\n 'right': 0,\n 'bottom': 0,\n 'alignItems': 'center',\n 'justifyContent': 'center',\n 'outline': 'none',\n 'background': color.backdrop,\n }\n}\n\nexport function responsiveDialogPositionStyle(\n props: ResponsiveDialogPositionStyleProps & ThemeProps,\n): CSSObject[] {\n const {media} = getTheme_v2(props.theme)\n\n return _responsive(media, props.$position, (position) => ({'&&': {position}}))\n}\n\n/**\n * @internal\n */\nexport interface AnimationDialogStyleProps {\n $animate: boolean\n}\n\nexport function animationDialogStyle(props: AnimationDialogStyleProps): ReturnType<typeof css> {\n if (!props.$animate) return css``\n\n return css`\n @keyframes zoomIn {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n }\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n animation: fadeIn 200ms ease-out;\n // Animates the dialog card.\n & > [data-ui='DialogCard'] {\n animation: zoomIn 200ms ease-out;\n }\n `\n}\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {DialogPosition} from '../../types'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface DialogContextValue {\n version: 0.0\n position?: DialogPosition | DialogPosition[]\n zOffset?: number | number[]\n}\n\n/**\n * @internal\n */\nexport const DialogContext = createGlobalScopedContext<DialogContextValue>(\n '@sanity/ui/context/dialog',\n {version: 0.0},\n)\n","import {useContext} from 'react'\n\nimport {DialogContext, DialogContextValue} from './dialogContext'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function useDialog(): DialogContextValue {\n return useContext(DialogContext)\n}\n","import {CloseIcon} from '@sanity/icons'\nimport {ThemeColorSchemeKey} from '@sanity/ui/theme'\nimport {forwardRef, useCallback, useEffect, useImperativeHandle, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {\n containsOrEqualsElement,\n focusFirstDescendant,\n focusLastDescendant,\n isHTMLElement,\n} from '../../helpers'\nimport {\n useArrayProp,\n useClickOutsideEvent,\n useGlobalKeyDown,\n usePrefersReducedMotion,\n} from '../../hooks'\nimport {Box, Button, Card, Container, Flex, Text} from '../../primitives'\nimport {ResponsivePaddingProps, ResponsiveWidthProps} from '../../primitives/types'\nimport {responsivePaddingStyle, ResponsivePaddingStyleProps} from '../../styles/internal'\nimport {useTheme_v2} from '../../theme'\nimport {DialogPosition, Radius} from '../../types'\nimport {Layer, LayerProps, Portal, useBoundaryElement, useLayer, usePortal} from '../../utils'\nimport {\n animationDialogStyle,\n AnimationDialogStyleProps,\n dialogStyle,\n responsiveDialogPositionStyle,\n ResponsiveDialogPositionStyleProps,\n} from './styles'\nimport {useDialog} from './useDialog'\n\n/**\n * @public\n */\nexport interface DialogProps extends ResponsivePaddingProps, ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_autoFocus?: boolean\n /**\n * @beta\n */\n __unstable_hideCloseButton?: boolean\n cardRadius?: Radius | Radius[]\n cardShadow?: number | number[]\n contentRef?: React.ForwardedRef<HTMLDivElement>\n footer?: React.ReactNode\n header?: React.ReactNode\n id: string\n /** A callback that fires when the dialog becomes the top layer when it was not the top layer before. */\n onActivate?: LayerProps['onActivate']\n onClickOutside?: () => void\n onClose?: () => void\n portal?: string\n position?: DialogPosition | DialogPosition[]\n scheme?: ThemeColorSchemeKey\n zOffset?: number | number[]\n /**\n * Whether the dialog should animate in on mount.\n *\n * @beta\n * @defaultValue false\n */\n animate?: boolean\n}\n\ninterface DialogCardProps extends ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_autoFocus: boolean\n /**\n * @beta\n */\n __unstable_hideCloseButton: boolean\n children: React.ReactNode\n contentRef?: React.ForwardedRef<HTMLDivElement>\n footer: React.ReactNode\n header: React.ReactNode\n id: string\n onClickOutside?: () => void\n onClose?: () => void\n portal?: string\n radius: Radius | Radius[]\n scheme?: ThemeColorSchemeKey\n shadow: number | number[]\n}\n\nfunction isTargetWithinScope(\n boundaryElement: HTMLElement | null,\n portalElement: HTMLElement | null,\n target: Node,\n): boolean {\n if (!boundaryElement || !portalElement) return true\n\n return (\n containsOrEqualsElement(boundaryElement, target) ||\n containsOrEqualsElement(portalElement, target)\n )\n}\n\nconst StyledDialog = styled(Layer)<\n ResponsiveDialogPositionStyleProps & ResponsivePaddingStyleProps & AnimationDialogStyleProps\n>(responsivePaddingStyle, dialogStyle, responsiveDialogPositionStyle, animationDialogStyle)\n\nconst DialogContainer = styled(Container)`\n &:not([hidden]) {\n display: flex;\n }\n width: 100%;\n height: 100%;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`\n\nconst DialogCardRoot = styled(Card)`\n &:not([hidden]) {\n display: flex;\n }\n width: 100%;\n min-height: 0;\n max-height: 100%;\n overflow: hidden;\n overflow: clip;\n`\n\nconst DialogLayout = styled(Flex)`\n flex: 1;\n min-height: 0;\n width: 100%;\n`\n\nconst DialogHeader = styled(Box)`\n position: relative;\n z-index: 2;\n`\n\nconst DialogContent = styled(Box)`\n position: relative;\n z-index: 1;\n overflow: auto;\n outline: none;\n`\n\nconst DialogFooter = styled(Box)`\n position: relative;\n z-index: 3;\n`\n\nconst DialogCard = forwardRef(function DialogCard(\n props: DialogCardProps,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n __unstable_autoFocus: autoFocus,\n __unstable_hideCloseButton: hideCloseButton,\n children,\n contentRef: forwardedContentRef,\n footer,\n header,\n id,\n onClickOutside,\n onClose,\n portal: portalProp,\n radius: radiusProp,\n scheme,\n shadow: shadowProp,\n width: widthProp,\n } = props\n const portal = usePortal()\n const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element\n const boundaryElement = useBoundaryElement().element\n const radius = useArrayProp(radiusProp)\n const shadow = useArrayProp(shadowProp)\n const width = useArrayProp(widthProp)\n const ref = useRef<HTMLDivElement | null>(null)\n const contentRef = useRef<HTMLDivElement | null>(null)\n const layer = useLayer()\n const {isTopLayer} = layer\n const labelId = `${id}_label`\n // oxlint-disable-next-line no-unnecessary-boolean-literal-compare\n const showCloseButton = Boolean(onClose) && hideCloseButton === false\n const showHeader = Boolean(header) || showCloseButton\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(\n forwardedContentRef,\n () => contentRef.current,\n )\n\n useEffect(() => {\n if (!autoFocus) return\n\n // On mount: focus the first focusable element\n if (ref.current) {\n focusFirstDescendant(ref.current)\n }\n }, [autoFocus, ref])\n\n useGlobalKeyDown(\n useCallback(\n (event: KeyboardEvent) => {\n if (!isTopLayer || !onClose) return\n\n const target = document.activeElement\n\n if (target && !isTargetWithinScope(boundaryElement, portalElement, target)) {\n // Ignore key presses when the focused element is outside of scope\n return\n }\n\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n onClose()\n }\n },\n [boundaryElement, isTopLayer, onClose, portalElement],\n ),\n )\n\n useClickOutsideEvent(\n isTopLayer &&\n onClickOutside &&\n ((event) => {\n // oxlint-disable-next-line no-unsafe-type-assertion\n const target = event.target as Node | null\n\n if (target && !isTargetWithinScope(boundaryElement, portalElement, target)) {\n // Ignore clicks outside of the scope\n return\n }\n\n onClickOutside()\n }),\n () => [ref.current],\n )\n\n return (\n <DialogContainer data-ui=\"DialogCard\" width={width}>\n <DialogCardRoot radius={radius} ref={ref} scheme={scheme} shadow={shadow}>\n <DialogLayout direction=\"column\">\n {showHeader && (\n <DialogHeader>\n <Flex align=\"flex-start\" padding={3}>\n <Box flex={1} padding={2}>\n {header && (\n <Text id={labelId} size={1} weight=\"semibold\">\n {header}\n </Text>\n )}\n </Box>\n {showCloseButton && (\n <Box flex=\"none\">\n <Button\n aria-label=\"Close dialog\"\n disabled={!onClose}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n padding={2}\n />\n </Box>\n )}\n </Flex>\n </DialogHeader>\n )}\n\n <DialogContent flex={1} ref={contentRef} tabIndex={-1}>\n {children}\n </DialogContent>\n\n {footer && <DialogFooter>{footer}</DialogFooter>}\n </DialogLayout>\n </DialogCardRoot>\n </DialogContainer>\n )\n})\n\nDialogCard.displayName = 'ForwardRef(DialogCard)'\n\n/**\n * The Dialog component.\n *\n * @public\n */\nexport const Dialog = forwardRef(function Dialog(\n props: DialogProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'id' | 'width'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const dialog = useDialog()\n const {layer} = useTheme_v2()\n const {\n __unstable_autoFocus: autoFocus = true,\n __unstable_hideCloseButton: hideCloseButton = false,\n cardRadius: cardRadiusProp = 4,\n cardShadow = 3,\n children,\n contentRef,\n footer,\n header,\n id,\n onActivate,\n onClickOutside,\n onClose,\n onFocus,\n padding: paddingProp = 3,\n portal: portalProp,\n position: _positionProp,\n scheme,\n width: widthProp = 0,\n zOffset: _zOffsetProp,\n animate: _animate = false,\n ...restProps\n } = props\n const positionProp = _positionProp ?? (dialog.position || 'fixed')\n const zOffsetProp = _zOffsetProp ?? (dialog.zOffset || layer.dialog.zOffset)\n const prefersReducedMotion = usePrefersReducedMotion()\n const animate = prefersReducedMotion ? false : _animate\n const portal = usePortal()\n const portalElement = portalProp ? portal.elements?.[portalProp] || null : portal.element\n const boundaryElement = useBoundaryElement().element\n const cardRadius = useArrayProp(cardRadiusProp)\n const padding = useArrayProp(paddingProp)\n const position = useArrayProp(positionProp)\n const width = useArrayProp(widthProp)\n const zOffset = useArrayProp(zOffsetProp)\n const preDivRef = useRef<HTMLDivElement | null>(null)\n const postDivRef = useRef<HTMLDivElement | null>(null)\n const cardRef = useRef<HTMLDivElement | null>(null)\n const focusedElementRef = useRef<HTMLElement | null>(null)\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n onFocus?.(event)\n\n const target = event.target\n const cardElement = cardRef.current\n\n if (cardElement && target === preDivRef.current) {\n focusLastDescendant(cardElement)\n\n return\n }\n\n if (cardElement && target === postDivRef.current) {\n focusFirstDescendant(cardElement)\n\n return\n }\n\n if (isHTMLElement(event.target)) {\n focusedElementRef.current = event.target\n }\n },\n [onFocus],\n )\n\n const labelId = `${id}_label`\n\n const rootClickTimeoutRef = useRef<NodeJS.Timeout>(undefined)\n\n // If the resulting active element (a.k.a. focused element) is not withing scope when clicking\n // within the dialog, then we want to focus the previously interactive element in the dialog instead.\n // This is to allow the user to tab or close the dialog by pressing escape.\n const handleRootClick = useCallback(() => {\n if (rootClickTimeoutRef.current) {\n clearTimeout(rootClickTimeoutRef.current)\n }\n\n rootClickTimeoutRef.current = setTimeout(() => {\n const activeElement = document.activeElement\n\n if (activeElement && !isTargetWithinScope(boundaryElement, portalElement, activeElement)) {\n const target = focusedElementRef.current\n\n if (!target || !document.body.contains(target)) {\n // No previously focused element, or it's not in the document anymore\n const cardElement = cardRef.current\n if (cardElement) focusFirstDescendant(cardElement)\n\n return\n }\n\n target.focus()\n }\n }, 0)\n }, [boundaryElement, portalElement])\n\n return (\n <Portal __unstable_name={portalProp}>\n <StyledDialog\n {...restProps}\n $animate={animate}\n $padding={padding}\n $position={position}\n aria-labelledby={labelId}\n aria-modal\n data-ui=\"Dialog\"\n id={id}\n onActivate={onActivate}\n onClick={handleRootClick}\n onFocus={handleFocus}\n ref={ref}\n // oxlint-disable-next-line prefer-tag-over-role\n role=\"dialog\"\n zOffset={zOffset}\n >\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n <div ref={preDivRef} tabIndex={0} />\n <DialogCard\n __unstable_autoFocus={autoFocus}\n __unstable_hideCloseButton={hideCloseButton}\n contentRef={contentRef}\n footer={footer}\n header={header}\n id={id}\n onClickOutside={onClickOutside}\n onClose={onClose}\n portal={portalProp}\n radius={cardRadius}\n ref={cardRef}\n scheme={scheme}\n shadow={cardShadow}\n width={width}\n >\n {children}\n </DialogCard>\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n <div ref={postDivRef} tabIndex={0} />\n </StyledDialog>\n </Portal>\n )\n})\nDialog.displayName = 'ForwardRef(Dialog)'\n","import {useMemo} from 'react'\n\nimport {DialogPosition} from '../../types'\nimport {DialogContext, DialogContextValue} from './dialogContext'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface DialogProviderProps {\n children?: React.ReactNode\n position?: DialogPosition | DialogPosition[]\n zOffset?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function DialogProvider(props: DialogProviderProps): React.JSX.Element {\n const {children, position, zOffset} = props\n\n const contextValue: DialogContextValue = useMemo(\n () => ({\n version: 0.0,\n position,\n zOffset,\n }),\n [position, zOffset],\n )\n\n return <DialogContext.Provider value={contextValue}>{children}</DialogContext.Provider>\n}\n\nDialogProvider.displayName = 'DialogProvider'\n","import {ThemeColorSchemeKey} from '@sanity/ui/theme'\nimport {\n cloneElement,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport {Popover, PopoverProps} from '../../primitives'\nimport {Placement, Radius} from '../../types'\nimport {MenuProps} from './menu'\n\n/**\n * @public\n */\nexport interface MenuButtonProps {\n /**\n * @beta Do not use in production.\n */\n __unstable_disableRestoreFocusOnClose?: boolean\n /**\n * @deprecated Use `popover={{boundaryElement: element}}` instead.\n */\n boundaryElement?: HTMLElement\n button: React.JSX.Element\n id: string\n menu?: React.JSX.Element\n onClose?: () => void\n onOpen?: () => void\n /**\n * @deprecated Use `popover={{placement: 'top'}}` instead.\n */\n placement?: Placement\n popover?: Omit<PopoverProps, 'content' | 'open'>\n /**\n * @deprecated Use `popover={{scheme: 'dark'}}` instead.\n */\n popoverScheme?: ThemeColorSchemeKey\n /**\n * @deprecated Use `popover={{radius: 2}}` instead.\n */\n popoverRadius?: Radius | Radius[]\n /**\n * @beta Do not use in production.\n * @deprecated Use `popover={{portal: true}}` instead.\n */\n portal?: boolean\n /**\n * @deprecated Use `popover={{preventOverflow: true}}` instead.\n */\n preventOverflow?: boolean\n}\n\n/**\n * The `MenuButton` component follows the WAI-ARIA specification for menu buttons.\n *\n * @public\n */\nexport const MenuButton = forwardRef(function MenuButton(\n props: MenuButtonProps,\n forwardedRef: React.ForwardedRef<HTMLButtonElement | null>,\n) {\n const {\n __unstable_disableRestoreFocusOnClose: disableRestoreFocusOnClose = false,\n // oxlint-disable-next-line no-deprecated\n boundaryElement: deprecated_boundaryElement,\n button: buttonProp,\n id,\n menu: menuProp,\n onClose,\n onOpen,\n // oxlint-disable-next-line no-deprecated\n placement: deprecated_placement,\n // oxlint-disable-next-line no-deprecated\n popoverScheme: deprecated_popoverScheme,\n // oxlint-disable-next-line no-deprecated\n portal: deprecated_portal = true,\n popover,\n // oxlint-disable-next-line no-deprecated\n popoverRadius: deprecated_popoverRadius,\n // oxlint-disable-next-line no-deprecated\n preventOverflow: deprecated_preventOverflow,\n } = props\n const [open, setOpen] = useState(false)\n const [shouldFocus, setShouldFocus] = useState<'first' | 'last' | null>(null)\n const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)\n const [menuElements, setChildMenuElements] = useState<HTMLElement[]>([])\n const openRef = useRef<boolean>(open)\n\n // Notify consumers when the menu opens\n useEffect(() => {\n if (onOpen && open && !openRef.current) {\n onOpen()\n }\n }, [onOpen, open])\n\n // Notify consumers when the menu closes\n useEffect(() => {\n if (onClose && !open && openRef.current) {\n onClose()\n }\n }, [onClose, open])\n\n useEffect(() => {\n openRef.current = open\n }, [open])\n\n const handleButtonClick = useCallback(() => {\n setOpen((v) => !v)\n setShouldFocus(null)\n }, [])\n\n // Prevent mouse event propagation when the menu is open.\n // This is to ensure that `handleBlur` isn't triggered when clicking the menu button whilst open,\n // which can lead to `setOpen` being triggered multiple times (once by `handleBlur`, and again by `handleButtonClick`).\n const handleMouseDown = useCallback(\n (event: PointerEvent) => {\n if (open) event.preventDefault()\n },\n [open],\n )\n\n const handleButtonKeyDown = useCallback((event: React.KeyboardEvent<HTMLButtonElement>) => {\n // On `ArrowDown`, `Enter` and `Space`\n // - Opens menu and moves focus to first menuitem\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n setOpen(true)\n setShouldFocus('first')\n\n return\n }\n\n // On `ArrowUp`\n // - \tOpens menu and moves focus to last menuitem\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n setOpen(true)\n setShouldFocus('last')\n\n return\n }\n }, [])\n\n const handleMenuClickOutside = useCallback(\n (event: MouseEvent) => {\n const target = event.target\n\n if (!(target instanceof Node)) {\n return\n }\n\n if (buttonElement && (target === buttonElement || buttonElement.contains(target))) {\n return\n }\n\n for (const el of menuElements) {\n if (target === el || el.contains(target)) {\n return\n }\n }\n\n setOpen(false)\n },\n [buttonElement, menuElements],\n )\n\n const handleMenuEscape = useCallback(() => {\n setOpen(false)\n if (disableRestoreFocusOnClose) return\n if (buttonElement) buttonElement.focus()\n }, [buttonElement, disableRestoreFocusOnClose])\n\n const handleBlur = useCallback(\n (event: FocusEvent) => {\n const target = event.relatedTarget\n\n if (!(target instanceof Node)) {\n return\n }\n\n for (const el of menuElements) {\n if (el === target || el.contains(target)) {\n return\n }\n }\n\n setOpen(false)\n },\n [menuElements],\n )\n\n const handleItemClick = useCallback(() => {\n setOpen(false)\n if (disableRestoreFocusOnClose) return\n if (buttonElement) buttonElement.focus()\n }, [buttonElement, disableRestoreFocusOnClose])\n\n const registerElement = useCallback((el: HTMLElement) => {\n setChildMenuElements((els) => els.concat([el]))\n\n return () => setChildMenuElements((els) => els.filter((_el) => _el !== el))\n }, [])\n\n const menuProps: MenuProps = {\n 'aria-labelledby': id,\n 'onBlurCapture': handleBlur,\n 'onClickOutside': handleMenuClickOutside,\n 'onEscape': handleMenuEscape,\n 'onItemClick': handleItemClick,\n 'originElement': buttonElement,\n registerElement,\n shouldFocus,\n }\n\n const menu = menuProp && cloneElement(menuProp, menuProps)\n\n const button = useMemo(\n () =>\n buttonProp &&\n cloneElement(buttonProp, {\n 'data-ui': 'MenuButton',\n id,\n 'onClick': handleButtonClick,\n 'onKeyDown': handleButtonKeyDown,\n 'onMouseDown': handleMouseDown,\n 'aria-haspopup': true,\n 'aria-expanded': open,\n 'ref': setButtonElement,\n 'selected': buttonProp.props.selected ?? open,\n }),\n [buttonProp, handleButtonClick, handleButtonKeyDown, handleMouseDown, id, open],\n )\n\n // Forward button ref to parent\n useImperativeHandle<HTMLButtonElement | null, HTMLButtonElement | null>(\n forwardedRef,\n () => buttonElement,\n [buttonElement],\n )\n\n const popoverProps: MenuButtonProps['popover'] = useMemo(\n () => ({\n // oxlint-disable-next-line no-deprecated\n boundaryElement: deprecated_boundaryElement,\n overflow: 'auto',\n placement: deprecated_placement,\n portal: deprecated_portal,\n preventOverflow: deprecated_preventOverflow,\n radius: deprecated_popoverRadius,\n scheme: deprecated_popoverScheme,\n // oxlint-disable-next-line no-useless-fallback-in-spread\n ...(popover || {}),\n }),\n [\n deprecated_boundaryElement,\n deprecated_placement,\n deprecated_popoverRadius,\n deprecated_popoverScheme,\n deprecated_portal,\n deprecated_preventOverflow,\n popover,\n ],\n )\n\n return (\n <Popover data-ui=\"MenuButton__popover\" {...popoverProps} content={menu} open={open}>\n {button || <></>}\n </Popover>\n )\n})\nMenuButton.displayName = 'ForwardRef(MenuButton)'\n","import {css, keyframes} from 'styled-components'\n\nconst keyframe = keyframes`\n 0% {\n background-position: 100%;\n }\n 100% {\n background-position: -100%;\n }\n`\n\nconst animation = css`\n background-image: linear-gradient(\n to right,\n var(--card-skeleton-color-from),\n var(--card-skeleton-color-to),\n var(--card-skeleton-color-from),\n var(--card-skeleton-color-from),\n var(--card-skeleton-color-from)\n );\n background-position: 100%;\n background-size: 200% 100%;\n background-attachment: fixed;\n animation-name: ${keyframe};\n animation-timing-function: ease-in-out;\n animation-iteration-count: infinite;\n animation-duration: 2000ms;\n`\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const skeletonStyle = css<{$animated: boolean; $visible: boolean}>`\n opacity: ${({$visible}) => ($visible ? 1 : 0)};\n transition: opacity 200ms ease-in;\n\n @media screen and (prefers-reduced-motion: no-preference) {\n ${({$animated}) =>\n $animated\n ? animation\n : css`\n background-color: var(--card-skeleton-color-from);\n `}\n }\n\n @media screen and (prefers-reduced-motion: reduce) {\n background-color: var(--card-skeleton-color-from);\n }\n`\n","import {forwardRef, useEffect, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useArrayProp} from '../../hooks'\nimport {Box, BoxProps, ResponsiveRadiusProps} from '../../primitives'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {skeletonStyle} from './styles'\n\nconst StyledSkeleton = styled(Box)<\n {$animated: boolean; $visible: boolean} & ResponsiveRadiusStyleProps\n>(responsiveRadiusStyle, skeletonStyle)\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface SkeletonProps extends ResponsiveRadiusProps, Omit<BoxProps, 'children'> {\n animated?: boolean\n delay?: number\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const Skeleton = forwardRef(function Skeleton(\n props: SkeletonProps & React.HTMLProps<HTMLDivElement>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {animated = false, delay, radius, ...restProps} = props\n // oxlint-disable-next-line no-unneeded-ternary\n const [visible, setVisible] = useState<boolean>(delay ? false : true)\n\n useEffect(() => {\n if (!delay) {\n // oxlint-disable-next-line react-compiler\n return setVisible(true)\n }\n\n const timeout = setTimeout(() => {\n setVisible(true)\n }, delay)\n\n return () => {\n clearTimeout(timeout)\n }\n }, [delay])\n\n return (\n <StyledSkeleton\n {...restProps}\n $animated={animated}\n $radius={useArrayProp(radius)}\n $visible={visible}\n ref={ref}\n />\n )\n})\nSkeleton.displayName = 'ForwardRef(Skeleton)'\n","import {getTheme_v2, ThemeFontKey} from '@sanity/ui/theme'\nimport {forwardRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useArrayProp} from '../../hooks'\nimport {_responsive, ThemeProps} from '../../styles'\nimport {Skeleton, SkeletonProps} from './skeleton'\n\nconst StyledSkeleton = styled(Skeleton)<{$size: number[]; $style: ThemeFontKey}>((\n props: {\n $size: number[]\n $style: ThemeFontKey\n } & ThemeProps,\n) => {\n const {$size, $style} = props\n const {font, media} = getTheme_v2(props.theme)\n const fontStyle = font[$style]\n\n const styles = _responsive(media, $size, (sizeIndex) => {\n const fontSize = fontStyle.sizes[sizeIndex]\n const capHeight = fontSize.lineHeight - fontSize.ascenderHeight - fontSize.descenderHeight\n\n return {height: capHeight}\n })\n\n return styles\n})\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface TextSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface LabelSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface HeadingSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface CodeSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const TextSkeleton = forwardRef(function TextSkeleton(\n props: TextSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} ref={ref} $style=\"text\" />\n})\nTextSkeleton.displayName = 'ForwardRef(TextSkeleton)'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const LabelSkeleton = forwardRef(function TextSkeleton(\n props: LabelSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} ref={ref} $style=\"label\" />\n})\nLabelSkeleton.displayName = 'ForwardRef(LabelSkeleton)'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const HeadingSkeleton = forwardRef(function TextSkeleton(\n props: HeadingSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} ref={ref} $style=\"heading\" />\n})\nHeadingSkeleton.displayName = 'ForwardRef(HeadingSkeleton)'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const CodeSkeleton = forwardRef(function TextSkeleton(\n props: CodeSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <StyledSkeleton {...restProps} $size={$size} ref={ref} $style=\"code\" />\n})\nCodeSkeleton.displayName = 'ForwardRef(CodeSkeleton)'\n","import {forwardRef} from 'react'\n\nimport {Box, BoxProps} from '../../primitives'\n\n/**\n * @public\n */\nexport interface TabPanelProps extends BoxProps {\n /**\n * The `id` of the correlating `Tab` component.\n */\n 'aria-labelledby': string\n 'id': string\n}\n\n/**\n * @public\n */\nexport const TabPanel = forwardRef(function TabPanel(\n props: TabPanelProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'aria-labelledby' | 'id' | 'role'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {flex, ...restProps} = props\n\n return (\n <Box\n data-ui=\"TabPanel\"\n {...restProps}\n flex={flex}\n ref={ref}\n role=\"tabpanel\"\n tabIndex={props.tabIndex === undefined ? 0 : props.tabIndex}\n >\n {props.children}\n </Box>\n )\n})\nTabPanel.displayName = 'ForwardRef(TabPanel)'\n","import {getTheme_v2, ThemeColorStateToneKey} from '@sanity/ui/theme'\nimport {styled} from 'styled-components'\n\nimport {Card, Flex} from '../../primitives'\nimport type {ButtonTone} from '../../types'\n\nconst LOADING_BAR_HEIGHT = 2\n\nexport const STATUS_CARD_TONE = {\n error: 'critical',\n warning: 'caution',\n success: 'positive',\n info: 'neutral',\n} satisfies {[key: string]: ThemeColorStateToneKey}\n\nexport const BUTTON_TONE = {\n error: 'critical',\n warning: 'caution',\n success: 'positive',\n info: 'neutral',\n} satisfies {[key: string]: ButtonTone}\n\nexport const TextBox = styled(Flex)`\n overflow-x: auto;\n`\n\nexport const StyledToast = styled(Card)`\n pointer-events: all;\n width: 100%;\n position: relative;\n overflow: hidden;\n overflow: clip;\n\n &[data-has-duration] {\n padding-bottom: calc(${LOADING_BAR_HEIGHT}px / 2);\n }\n`\n\nexport const LoadingBar = styled.div`\n display: flex;\n position: absolute;\n bottom: 0px;\n top: 0px;\n left: 0px;\n right: 0px;\n pointer-events: none;\n z-index: -1;\n overflow: hidden;\n overflow: clip;\n background: transparent;\n align-items: flex-end;\n will-change: opacity;\n`\n\nexport const LoadingBarMask = styled(Card)`\n position: absolute;\n top: 0;\n left: -${LOADING_BAR_HEIGHT}px;\n right: -${LOADING_BAR_HEIGHT}px;\n bottom: ${LOADING_BAR_HEIGHT}px;\n z-index: 1;\n`\n\ntype LoadingBarProgressProps = Omit<React.ComponentProps<typeof Card>, 'tone'> & {\n tone: ThemeColorStateToneKey\n}\nexport const LoadingBarProgress = styled<React.ComponentType<LoadingBarProgressProps>>(Card)`\n display: block;\n height: 100%;\n width: 100%;\n transform-origin: 0% 50%;\n background-color: ${(props) => {\n const {color} = getTheme_v2(props.theme)\n\n return color.button.default[props.tone].enabled.bg\n }};\n`\n","import {CloseIcon} from '@sanity/icons'\nimport {motion, type Variant, type Variants} from 'motion/react'\n\nimport {usePrefersReducedMotion} from '../../hooks/usePrefersReducedMotion'\nimport {Box, Button, Flex, Stack, Text} from '../../primitives'\nimport {\n BUTTON_TONE,\n LoadingBar,\n LoadingBarMask,\n LoadingBarProgress,\n STATUS_CARD_TONE,\n StyledToast,\n TextBox,\n} from './styles'\n\n/**\n * @public\n */\nexport interface ToastProps {\n closable?: boolean\n description?: React.ReactNode\n onClose: () => void\n radius?: number | number[]\n title?: React.ReactNode\n status?: 'error' | 'warning' | 'success' | 'info'\n duration?: number\n updatedAt?: number\n}\n\nconst ROLES = {\n error: 'alert',\n warning: 'alert',\n success: 'alert',\n info: 'alert',\n} as const\n\n// Support pattern used by Sanity Studio, that works around the lack of `duration: Infinity` support in older @sanity/ui versions\n// https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value\nconst LONG_ENOUGH_BUT_NOT_TOO_LONG = 1000 * 60 * 60 * 24 * 24\n\n/**\n * The `Toast` component gives feedback to users when an action has taken place.\n *\n * Toasts can be closed with a close button, or auto-dismiss after a certain timeout.\n *\n * @public\n */\nexport function Toast(\n props: ToastProps &\n Omit<\n React.HTMLProps<HTMLDivElement>,\n | 'as'\n | 'height'\n | 'ref'\n | 'title'\n | 'onAnimationStart'\n | 'onDragStart'\n | 'onDragEnd'\n | 'onDrag'\n >,\n): React.JSX.Element {\n const {\n closable,\n description,\n duration,\n onClose,\n radius = 3,\n title,\n status,\n updatedAt,\n ...restProps\n } = props\n const cardTone = status ? STATUS_CARD_TONE[status] : 'default'\n const buttonTone = status ? BUTTON_TONE[status] : 'default'\n const role = status ? ROLES[status] : 'status'\n\n const prefersReducedMotion = usePrefersReducedMotion()\n\n const visualDuration: number = prefersReducedMotion ? 0 : 0.26\n const transition = visualDuration\n ? {type: 'spring' as const, visualDuration, bounce: 0.25}\n : {duration: 0}\n\n const hasDuration = duration && isFinite(duration) && duration < LONG_ENOUGH_BUT_NOT_TOO_LONG\n const initial: ContainerVariants[] = ['hidden', 'initial']\n const animate: ContainerVariants[] = ['visible', 'slideIn']\n const exit: ContainerVariants[] = ['hidden', 'slideOut']\n\n return (\n <MotionToast\n data-ui=\"Toast\"\n role={role}\n {...restProps}\n data-has-duration={hasDuration ? '' : undefined}\n custom={visualDuration}\n radius={radius}\n shadow={2}\n tone={cardTone}\n forwardedAs=\"li\"\n layout=\"position\"\n variants={container}\n initial={initial}\n animate={animate}\n exit={exit}\n transition={transition}\n >\n <MotionFlex align=\"flex-start\" variants={content} transition={transition}>\n <TextBox flex={1} padding={3}>\n <Stack space={3}>\n {title && (\n <Text size={1} weight=\"medium\">\n {title}\n </Text>\n )}\n {description && (\n <MotionText muted size={1} variants={content} transition={transition}>\n {description}\n </MotionText>\n )}\n </Stack>\n </TextBox>\n\n {closable && (\n <Box padding={1}>\n <Button\n as=\"button\"\n icon={CloseIcon}\n mode=\"bleed\"\n padding={2}\n tone={buttonTone}\n onClick={onClose}\n style={{verticalAlign: 'top'}}\n />\n </Box>\n )}\n </MotionFlex>\n {hasDuration && (\n <MotionLoadingBar variants={content} transition={transition}>\n <LoadingBarMask tone={cardTone} radius={radius} />\n <MotionLoadingBarProgress\n key={`progress-${updatedAt}`}\n tone={cardTone}\n initial={{scaleX: 0}}\n animate={{scaleX: 1}}\n transition={{delay: visualDuration, duration: duration / 1_000, ease: 'linear'}}\n onAnimationComplete={onClose}\n />\n </MotionLoadingBar>\n )}\n </MotionToast>\n )\n}\n\nToast.displayName = 'Toast'\n\nconst container = {\n initial: {y: 32, scale: 0.5, zIndex: 1},\n hidden: {opacity: 0},\n visible: (visualDuration: number) => {\n if (!visualDuration) return {opacity: 1}\n\n return {\n opacity: 1,\n transition: {\n when: 'beforeChildren',\n staggerChildren: visualDuration / 3,\n duration: visualDuration / 3,\n },\n }\n },\n slideIn: {\n y: 0,\n scale: 1,\n },\n slideOut: {\n zIndex: 0,\n scale: 0.75,\n },\n} satisfies Variants\ntype ContainerVariants = keyof typeof container\n\nconst content = {\n initial: {\n willChange: 'transform',\n },\n hidden: {\n opacity: 0,\n },\n visible: {\n opacity: 1,\n },\n} satisfies Partial<Record<ContainerVariants, Variant>>\n\nconst MotionToast = motion.create(StyledToast)\nconst MotionFlex = motion.create(Flex)\nconst MotionText = motion.create(Text)\nconst MotionLoadingBar = motion.create(LoadingBar)\nconst MotionLoadingBarProgress = motion.create(LoadingBarProgress)\n","import {useSyncExternalStore} from 'react'\n\n/**\n * Some components should only render after mounting to the DOM, and not be rendered at all during SSR renderToString or equivalent.\n * @public\n */\nexport function useMounted(): boolean {\n return useSyncExternalStore(\n subscribe,\n () => true,\n () => false,\n )\n}\n\nconst subscribe = () => () => {}\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {ToastContextValue} from './types'\n\nexport const ToastContext = createGlobalScopedContext<ToastContextValue | null>(\n '@sanity/ui/context/toast',\n null,\n)\n","import {styled} from 'styled-components'\n\nimport {Grid} from '../../primitives/grid'\nimport {useLayer} from '../../utils'\n\n/**\n * @public\n */\nexport interface ToastLayerProps {\n children: React.ReactNode\n padding?: number | number[]\n paddingX?: number | number[]\n paddingY?: number | number[]\n gap?: number | number[]\n}\n\n/**\n * @internal\n */\nexport function ToastLayer(props: ToastLayerProps): React.JSX.Element {\n const {children, padding = 4, paddingX, paddingY, gap = 3} = props\n const {zIndex} = useLayer()\n\n return (\n <StyledLayer\n forwardedAs=\"ul\"\n data-ui=\"ToastProvider\"\n padding={padding}\n paddingX={paddingX}\n paddingY={paddingY}\n gap={gap}\n columns={1}\n style={{zIndex}}\n >\n {children}\n </StyledLayer>\n )\n}\n\nToastLayer.displayName = 'ToastLayer'\n\nconst StyledLayer = styled(Grid)`\n box-sizing: border-box;\n position: fixed;\n right: 0;\n bottom: 0;\n list-style: none;\n pointer-events: none;\n max-width: 420px;\n width: 100%;\n`\n","let toastId = 0\n\n/** @internal */\nexport function generateToastId(): string {\n return String(toastId++)\n}\n","import {AnimatePresence} from 'motion/react'\nimport {startTransition, useMemo, useState} from 'react'\n\nimport {useMounted} from '../../hooks/useMounted'\nimport {LayerProvider} from '../../utils'\nimport {Toast} from './toast'\nimport {ToastContext} from './toastContext'\nimport {ToastLayer, type ToastLayerProps} from './toastLayer'\nimport {generateToastId} from './toastState'\nimport {ToastContextValue, ToastParams} from './types'\n\ntype ToastState = {\n dismiss: () => void\n id: string\n updatedAt: number\n params: ToastParams\n}[]\n\n/**\n * @public\n */\nexport interface ToastProviderProps extends Omit<ToastLayerProps, 'children'> {\n children?: React.ReactNode\n zOffset?: number | number[]\n}\n\n/**\n * @public\n */\nexport function ToastProvider(props: ToastProviderProps): React.JSX.Element {\n const {children, padding, paddingX, paddingY, gap, zOffset = 1} = props\n const [state, setState] = useState<ToastState>([])\n const mounted = useMounted()\n\n const value: ToastContextValue = useMemo(() => {\n const push = (params: ToastParams) => {\n const id = params.id || generateToastId()\n const duration = params.duration || 5000\n\n startTransition(() => {\n setState((prevState): ToastState => {\n /**\n * Backwards compatibility for `sanity` patterns workaround a lack of programatically dismissible toasts.\n * It uses a super short duration that closes the toast immediately in previous versions of `@sanity/ui`.\n * We interpret this as a request to dismiss the toast immediately, and remove it from the state right away.\n * Even once we support programatic dismissal we'll need to keep this for backwards compatibility with v2 and v1.\n */\n if (duration === 0.01) {\n return prevState.filter((toast) => toast.id !== id)\n }\n\n /**\n * Creates a function to dismiss this specific toast.\n * This function will be passed to the Toast component\n * and called either on close button click or after duration.\n */\n const dismiss = () =>\n startTransition(() =>\n setState((currentState) => currentState.filter((toast) => toast.id !== id)),\n )\n\n /**\n * Create updated state by:\n * 1. Removing any existing toast with the same ID (prevents duplicates)\n * 2. Adding the new toast with its dismiss handler\n * 3. Updates the `updatedAt` timestamp, which resets progress bar count downs.\n */\n return [\n ...prevState.filter((toast) => toast.id !== id),\n {\n dismiss,\n id,\n updatedAt: Date.now(),\n params: {...params, duration},\n },\n ]\n })\n })\n\n return id\n }\n\n return {version: 0.0, push}\n }, [])\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n {mounted && (\n <LayerProvider zOffset={zOffset}>\n <ToastLayer padding={padding} paddingX={paddingX} paddingY={paddingY} gap={gap}>\n <AnimatePresence initial={false} mode=\"popLayout\">\n {state.map(({dismiss, id, params, updatedAt}) => (\n <Toast\n key={id}\n closable={params.closable}\n description={params.description}\n onClose={dismiss}\n status={params.status}\n title={params.title}\n duration={params.duration}\n updatedAt={updatedAt}\n />\n ))}\n </AnimatePresence>\n </ToastLayer>\n </LayerProvider>\n )}\n </ToastContext.Provider>\n )\n}\n\nToastProvider.displayName = 'ToastProvider'\n","import {useContext} from 'react'\n\nimport {isRecord} from '../../lib/isRecord'\nimport {ToastContext} from './toastContext'\nimport {ToastContextValue} from './types'\n\n/**\n * @public\n */\nexport function useToast(): ToastContextValue {\n const value = useContext(ToastContext)\n\n if (!value) {\n throw new Error('useToast(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('useToast(): the context value is not compatible')\n }\n\n return value\n}\n","import {TreeState} from './types'\n\nexport function _findPrevItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement,\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(0, idx)\n const len = els.length\n\n for (let i = len - 1; i >= 0; i -= 1) {\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _findNextItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement,\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(idx)\n const len = itemElements.length\n\n for (let i = 1; i < len; i += 1) {\n if (!els[i]) {\n continue\n }\n\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _focusItemElement(el: HTMLElement): void {\n if (el.getAttribute('role') === 'treeitem') {\n el.focus()\n }\n\n if (el.getAttribute('role') === 'none') {\n const firstChild = el.firstChild\n\n if (firstChild && firstChild instanceof HTMLElement) {\n firstChild.focus()\n }\n }\n}\n","import {createGlobalScopedContext} from '../../lib/createGlobalScopedContext'\nimport {TreeContextValue} from './types'\n\n/**\n * @internal\n */\nexport const TreeContext = createGlobalScopedContext<TreeContextValue | null>(\n '@sanity/ui/context/tree',\n null,\n)\n","import {\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport {Stack} from '../../primitives'\nimport {_findNextItemElement, _findPrevItemElement, _focusItemElement} from './helpers'\nimport {TreeContext} from './treeContext'\nimport {TreeContextValue, TreeState} from './types'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface TreeProps {\n space?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const Tree = memo(\n forwardRef(function Tree(\n props: TreeProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'align' | 'as' | 'height' | 'ref' | 'role' | 'wrap'>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n ): React.JSX.Element {\n const {children, space = 1, onFocus, ...restProps} = props\n const ref = useRef<HTMLDivElement | null>(null)\n const [focusedElement, setFocusedElement] = useState<HTMLElement | null>(null)\n const focusedElementRef = useRef(focusedElement)\n const path: string[] = useMemo(() => [], [])\n const [itemElements, setItemElements] = useState<HTMLElement[]>([])\n const [state, setState] = useState<TreeState>({})\n const stateRef = useRef(state)\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n useEffect(() => {\n focusedElementRef.current = focusedElement\n }, [focusedElement])\n\n useEffect(() => {\n stateRef.current = state\n }, [state])\n\n const registerItem = useCallback(\n (element: HTMLElement, path: string, expanded: boolean, selected: boolean) => {\n setState((s) => ({...s, [path]: {element, expanded}}))\n\n if (selected) {\n setFocusedElement(element)\n }\n\n return () => {\n setState((s) => {\n const newState = {...s}\n\n delete newState[path]\n\n return newState\n })\n }\n },\n [],\n )\n\n const setExpanded = useCallback((path: string, expanded: boolean) => {\n setState((s) => {\n const itemState = s[path]\n\n if (!itemState) return s\n\n return {...s, [path]: {...itemState, expanded}}\n })\n }, [])\n\n const contextValue: TreeContextValue = useMemo(\n () => ({\n version: 0.0,\n focusedElement: focusedElement || itemElements[0] || null,\n level: 0,\n path,\n registerItem,\n setExpanded,\n setFocusedElement,\n space,\n state,\n }),\n [focusedElement, itemElements, path, registerItem, setExpanded, space, state],\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!focusedElementRef.current) return\n\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n\n const nextEl = _findNextItemElement(\n stateRef.current,\n itemElements,\n focusedElementRef.current,\n )\n\n if (nextEl) {\n _focusItemElement(nextEl)\n setFocusedElement(nextEl)\n }\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n\n const prevEl = _findPrevItemElement(\n stateRef.current,\n itemElements,\n focusedElementRef.current,\n )\n\n if (prevEl) {\n _focusItemElement(prevEl)\n setFocusedElement(prevEl)\n }\n\n return\n }\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n\n const itemKey = focusedElementRef.current.getAttribute('data-tree-key')\n\n if (!itemKey) return\n\n const itemState = stateRef.current[itemKey]\n\n if (!itemState) return\n\n if (itemState.expanded) {\n setState((s) => {\n const itemState = s[itemKey]\n\n if (!itemState) return s\n\n return {...s, [itemKey]: {...itemState, expanded: false}}\n })\n } else {\n const itemPath = itemKey.split('/')\n\n itemPath.pop()\n\n const parentKey = itemPath.join('/')\n const parentState = parentKey && stateRef.current[parentKey]\n\n if (parentState) {\n parentState.element.focus()\n setFocusedElement(parentState.element)\n }\n }\n\n return\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault()\n\n const focusedKey = focusedElementRef.current.getAttribute('data-tree-key')\n\n if (!focusedKey) return\n\n if (!stateRef.current[focusedKey]?.expanded) {\n setState((s) => {\n const itemState = s[focusedKey]\n\n if (!itemState) return s\n\n return {...s, [focusedKey]: {...itemState, expanded: true}}\n })\n }\n\n return\n }\n },\n [itemElements],\n )\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n setFocusedElement(event.target)\n\n // Call the element's `focus` handler\n onFocus?.(event)\n },\n [onFocus],\n )\n\n useEffect(() => {\n if (!ref.current) return\n const _itemElements = Array.from(\n ref.current.querySelectorAll('[data-ui=\"TreeItem\"]'),\n ) as HTMLElement[]\n\n setItemElements(_itemElements)\n }, [children])\n\n return (\n <TreeContext.Provider value={contextValue}>\n {/* oxlint-disable-next-line interactive-supports-focus */}\n <Stack\n as=\"ul\"\n data-ui=\"Tree\"\n {...restProps}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n ref={ref}\n role=\"tree\"\n space={space}\n >\n {children}\n </Stack>\n </TreeContext.Provider>\n )\n }),\n)\nTree.displayName = 'Memo(ForwardRef(Tree))'\n","import {getTheme_v2} from '@sanity/ui/theme'\nimport {css} from 'styled-components'\n\nimport {rem, ThemeProps} from '../../styles'\nimport {_cardColorStyle} from '../../styles/card'\n\nexport function treeItemRootStyle(): ReturnType<typeof css> {\n return css`\n &[role='none'] > [role='treeitem'] {\n outline: none;\n cursor: default;\n border-radius: 3px;\n\n background-color: var(--card-bg-color);\n color: var(--treeitem-fg-color);\n\n &:focus {\n position: relative;\n }\n }\n\n &[role='treeitem'] {\n outline: none;\n\n & > div {\n cursor: default;\n border-radius: 3px;\n\n background-color: var(--card-bg-color);\n color: var(--treeitem-fg-color);\n }\n\n &:focus > div {\n position: relative;\n }\n }\n `\n}\n\nexport function treeItemRootColorStyle(props: ThemeProps): ReturnType<typeof css> {\n const $tone = 'default'\n const {color} = getTheme_v2(props.theme)\n const tone = color.selectable[$tone]\n\n return css`\n &[role='none'] {\n & > [role='treeitem'] {\n ${_cardColorStyle(color, tone.enabled)}\n }\n\n &[data-selected] > [role='treeitem'] {\n ${_cardColorStyle(color, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) > [role='treeitem']:not(:focus):hover {\n ${_cardColorStyle(color, tone.hovered)}\n }\n\n & > [role='treeitem']:focus {\n ${_cardColorStyle(color, tone.selected)}\n }\n }\n }\n\n &[role='treeitem'] {\n & > [data-ui='TreeItem__box'] {\n ${_cardColorStyle(color, tone.enabled)}\n }\n\n &[data-selected] > [data-ui='TreeItem__box'] {\n ${_cardColorStyle(color, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]):not(:focus) > [data-ui='TreeItem__box']:hover {\n ${_cardColorStyle(color, tone.hovered)}\n }\n\n &:focus > [data-ui='TreeItem__box'] {\n ${_cardColorStyle(color, tone.selected)}\n }\n }\n }\n `\n}\n\nexport interface TreeItemBoxStyleProps {\n $level: number\n}\n\nexport function treeItemBoxStyle(\n props: TreeItemBoxStyleProps & ThemeProps,\n): ReturnType<typeof css> {\n const {$level} = props\n const {space} = getTheme_v2(props.theme)\n\n return css`\n padding-left: ${rem(space[2] * $level)};\n\n &[data-as='a'] {\n text-decoration: none;\n }\n `\n}\n","import {useContext} from 'react'\n\nimport {TreeContext} from './treeContext'\nimport {TreeContextValue} from './types'\n\n/**\n * @beta\n */\nexport function useTree(): TreeContextValue {\n const tree = useContext(TreeContext)\n\n if (!tree) {\n throw new Error('Tree: missing context value')\n }\n\n return tree\n}\n","import {memo} from 'react'\n\nimport {Stack} from '../../primitives'\nimport {useTree} from './useTree'\n\nexport interface TreeGroupProps {\n expanded?: boolean\n}\n\nexport const TreeGroup = memo(function TreeGroup(\n props: TreeGroupProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'role' | 'wrap'>,\n): React.JSX.Element {\n const {children, expanded = false, ...restProps} = props\n const tree = useTree()\n\n return (\n <Stack\n as=\"ul\"\n data-ui=\"TreeGroup\"\n {...restProps}\n hidden={!expanded}\n marginTop={tree.space}\n // oxlint-disable-next-line prefer-tag-over-role\n role=\"group\"\n space={tree.space}\n >\n {children}\n </Stack>\n )\n})\n","import {ToggleArrowRightIcon} from '@sanity/icons'\nimport {ThemeFontWeightKey} from '@sanity/ui/theme'\nimport {memo, useCallback, useEffect, useId, useMemo, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Box, BoxProps, Flex, Text} from '../../primitives'\nimport {\n treeItemBoxStyle,\n TreeItemBoxStyleProps,\n treeItemRootColorStyle,\n treeItemRootStyle,\n} from './style'\nimport {TreeContext} from './treeContext'\nimport {TreeGroup} from './treeGroup'\nimport {useTree} from './useTree'\n\n/**\n * @beta\n */\nexport interface TreeItemProps {\n expanded?: boolean\n fontSize?: number | number[]\n icon?: React.ElementType\n /**\n * Allows passing a custom element type to the link component\n */\n linkAs?: BoxProps['as']\n padding?: number | number[]\n space?: number | number[]\n text?: React.ReactNode\n weight?: ThemeFontWeightKey\n}\n\nconst StyledTreeItem = memo(styled.li(treeItemRootStyle, treeItemRootColorStyle))\n\nconst TreeItemBox = styled(Box).attrs({forwardedAs: 'a'})<TreeItemBoxStyleProps>(treeItemBoxStyle)\n\nconst ToggleArrowText = styled(Text)`\n & > svg {\n transition: transform 100ms;\n }\n`\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const TreeItem = memo(function TreeItem(\n props: TreeItemProps & Omit<React.HTMLProps<HTMLLIElement>, 'as' | 'ref' | 'role'>,\n): React.JSX.Element {\n const {\n children,\n expanded: expandedProp = false,\n fontSize = 1,\n href,\n icon: IconComponent,\n id: idProp,\n linkAs,\n muted,\n onClick,\n padding = 2,\n selected = false,\n space = 2,\n text,\n weight,\n ...restProps\n } = props\n const rootRef = useRef<HTMLLIElement | null>(null)\n const treeitemRef = useRef<HTMLDivElement | null>(null)\n const tree = useTree()\n const {path, registerItem, setExpanded, setFocusedElement} = tree\n const _id = useId()\n const id = idProp || _id\n const itemPath = useMemo(() => path.concat([id || '']), [id, path])\n const itemKey = itemPath.join('/')\n const itemState = tree.state[itemKey]\n // oxlint-disable-next-line react-compiler\n const focused = tree.focusedElement === rootRef.current\n const expanded = itemState?.expanded === undefined ? expandedProp : itemState?.expanded || false\n // oxlint-disable-next-line react-compiler\n const tabIndex = tree.focusedElement && tree.focusedElement === rootRef.current ? 0 : -1\n const contextValue = useMemo(\n () => ({...tree, level: tree.level + 1, path: itemPath}),\n [itemPath, tree],\n )\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLLIElement>) => {\n if (onClick) onClick(event)\n\n const target = event.target\n\n if (\n target instanceof HTMLElement &&\n (target.getAttribute('data-ui') === 'TreeItem' ||\n target.closest('[data-ui=\"TreeItem__box\"]'))\n ) {\n event.stopPropagation()\n setExpanded(itemKey, !expanded)\n setFocusedElement(rootRef.current)\n }\n },\n [expanded, itemKey, onClick, setExpanded, setFocusedElement],\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n if (focused && event.key === 'Enter') {\n const el = treeitemRef.current || rootRef.current\n\n el?.click()\n }\n },\n [focused],\n )\n\n useEffect(() => {\n if (!rootRef.current) return\n\n return registerItem(rootRef.current, itemPath.join('/'), expanded, selected)\n }, [expanded, itemPath, registerItem, selected])\n\n const content = (\n <Flex padding={padding}>\n <Box\n marginRight={space}\n style={{\n visibility: IconComponent || children ? 'visible' : 'hidden',\n pointerEvents: 'none',\n }}\n >\n {IconComponent && (\n <Text muted={muted} size={fontSize} weight={weight}>\n <IconComponent />\n </Text>\n )}\n {!IconComponent && (\n <ToggleArrowText muted={muted} size={fontSize} weight={weight}>\n <ToggleArrowRightIcon style={{transform: expanded ? 'rotate(90deg)' : undefined}} />\n </ToggleArrowText>\n )}\n </Box>\n <Box flex={1}>\n <Text muted={muted} size={fontSize} textOverflow=\"ellipsis\" weight={weight}>\n {text}\n </Text>\n </Box>\n </Flex>\n )\n\n if (href) {\n return (\n <StyledTreeItem\n data-selected={selected ? '' : undefined}\n data-tree-id={id}\n data-tree-key={itemKey}\n data-ui=\"TreeItem\"\n {...restProps}\n onClick={handleClick}\n ref={rootRef}\n role=\"none\"\n >\n <TreeItemBox\n $level={tree.level}\n aria-expanded={expanded}\n as={linkAs}\n data-ui=\"TreeItem__box\"\n href={href}\n ref={treeitemRef}\n role=\"treeitem\"\n tabIndex={tabIndex}\n >\n {content}\n </TreeItemBox>\n\n <TreeContext.Provider value={contextValue}>\n {children && <TreeGroup hidden={!expanded}>{children}</TreeGroup>}\n </TreeContext.Provider>\n </StyledTreeItem>\n )\n }\n\n return (\n <StyledTreeItem\n data-selected={selected ? '' : undefined}\n data-ui=\"TreeItem\"\n data-tree-id={id}\n data-tree-key={itemKey}\n {...restProps}\n aria-expanded={expanded}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n ref={rootRef}\n role=\"treeitem\"\n tabIndex={tabIndex}\n >\n <TreeItemBox $level={tree.level} as=\"div\" data-ui=\"TreeItem__box\">\n {content}\n </TreeItemBox>\n\n <TreeContext.Provider value={contextValue}>\n {children && <TreeGroup expanded={expanded}>{children}</TreeGroup>}\n </TreeContext.Provider>\n </StyledTreeItem>\n )\n})\nTreeItem.displayName = 'Memo(TreeItem)'\n"],"names":["_raf","fn","frameId","requestAnimationFrame","cancelAnimationFrame","_raf2","innerDispose","outerDispose","_hasFocus","element","Boolean","document","activeElement","contains","isFocusable","tabIndex","getAttribute","isHTMLAnchorElement","href","rel","isHTMLInputElement","type","disabled","isHTMLButtonElement","isHTMLSelectElement","isHTMLTextAreaElement","attemptFocus","focus","focusFirstDescendant","i","childNodes","length","child","isHTMLElement","focusLastDescendant","_getElements","elementsArg","ret","el","Array","isArray","push","filter","useClickOutside","listener","t0","boundaryElement","$","_c","undefined","EMPTY_ARRAY","setElement","useState","t1","elements","setElements","elementsRef","useRef","t2","t3","prevElements","current","nextElements","includes","el_0","useEffect","t4","t5","handleWindowMouseDown","evt","target","Node","el_1","window","addEventListener","removeEventListener","useElementRect","useElementSize","_contentRect","useForwardedRef","ref","innerRef","Symbol","for","useImperativeHandle","ErrorBoundary","Component","state","error","getDerivedStateFromError","componentDidCatch","info","props","onCatch","render","message","children","StyledAutocomplete","styled","div","withConfig","displayName","componentId","ListBox","Box","rotate","keyframes","AnimatedSpinnerIcon","SpinnerIcon","AutocompleteOption","id","onSelect","selected","value","setTimeout","handleClick","event","key","_isEnterToClickElement","currentTarget","handleKeyDown","autocompleteReducer","msg","activeValue","focused","query","listFocused","AUTOCOMPLETE_LISTBOX_IGNORE_KEYS","AUTOCOMPLETE_POPOVER_PLACEMENT","AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS","DEFAULT_RENDER_VALUE","option","DEFAULT_FILTER_OPTION","toLowerCase","indexOf","InnerAutocomplete","forwardRef","forwardedRef","border","customValidity","filterOption","filterOptionProp","fontSize","icon","listBox","EMPTY_RECORD","loading","onBlur","onChange","onFocus","onQueryChange","openButton","openOnFocus","options","optionsProp","padding","paddingProp","popover","prefix","radius","readOnly","relatedElements","renderOption","renderOptionProp","renderPopover","renderValue","suffix","valueProp","restProps","dispatch","useReducer","defaultRenderOption","useCallback","rootElementRef","resultsPopoverElementRef","inputElementRef","listBoxElementRef","listFocusedRef","valueRef","valuePropRef","popoverMouseWithinRef","listBoxId","useArrayProp","currentOption","useMemo","find","o","filteredOptions","filteredOptionsLen","activeItemId","expanded","handleRootBlur","concat","focusInside","e","handleRootFocus","listBoxElement","focusedElement","HTMLElement","handleOptionSelect","v","handleRootKeyDown","preventDefault","activeOption","activeIndex","nextActiveOption","listEl","handleInputChange","nextQuery","dispatchOpen","handleInputFocus","handlePopoverMouseEnter","handlePopoverMouseLeave","handleClearButtonClick","handleClearButtonFocus","listElement","activeItemElement","clearButton","openButtonBoxPadding","map","openButtonPadding","Math","max","openButtonProps","handleOpenClick","onClick","openButtonNode","ChevronDownIcon","inputValue","input","handleListBoxKeyDown","content","active","cloneElement","results","hidden","inputElement","onMouseEnter","onMouseLeave","Autocomplete","StyledBreadcrumbs","ol","ExpandButton","Button","Breadcrumbs","maxLength","separator","space","open","setOpen","expandElementRef","popoverElementRef","collapse","expand","useClickOutsideEvent","Children","toArray","isValidElement","rawItems","bb0","len","beforeLength","ceil","afterLength","floor","t6","t7","slice","t8","t9","t10","t11","t12","items","item","itemIndex","dialogStyle","theme","color","getTheme_v2","display","backdrop","responsiveDialogPositionStyle","media","_responsive","$position","position","animationDialogStyle","$animate","css","DialogContext","createGlobalScopedContext","version","useDialog","useContext","isTargetWithinScope","portalElement","containsOrEqualsElement","StyledDialog","Layer","responsivePaddingStyle","DialogContainer","Container","DialogCardRoot","Card","DialogLayout","Flex","DialogHeader","DialogContent","DialogFooter","DialogCard","__unstable_autoFocus","autoFocus","__unstable_hideCloseButton","hideCloseButton","contentRef","forwardedContentRef","footer","header","onClickOutside","onClose","portal","portalProp","radiusProp","scheme","shadow","shadowProp","width","widthProp","usePortal","useBoundaryElement","layer","useLayer","isTopLayer","labelId","showCloseButton","showHeader","stopPropagation","useGlobalKeyDown","event_0","target_0","CloseIcon","Dialog","dialog","useTheme_v2","_positionProp","_zOffsetProp","onActivate","cardRadius","cardShadow","zOffset","animate","cardRadiusProp","_animate","positionProp","zOffsetProp","usePrefersReducedMotion","preDivRef","postDivRef","cardRef","focusedElementRef","cardElement","handleFocus","rootClickTimeoutRef","clearTimeout","body","cardElement_0","handleRootClick","t13","DialogProvider","contextValue","MenuButton","__unstable_disableRestoreFocusOnClose","deprecated_boundaryElement","button","buttonProp","menu","menuProp","onOpen","placement","deprecated_placement","popoverScheme","deprecated_popoverScheme","popoverRadius","deprecated_popoverRadius","preventOverflow","deprecated_preventOverflow","disableRestoreFocusOnClose","deprecated_portal","shouldFocus","setShouldFocus","buttonElement","setButtonElement","menuElements","setChildMenuElements","openRef","_temp","handleButtonClick","handleMouseDown","handleButtonKeyDown","event_1","handleMenuClickOutside","handleMenuEscape","t14","event_2","relatedTarget","handleBlur","t15","handleItemClick","t16","els","els_0","_el","registerElement","t17","t18","t19","t20","t21","t22","overflow","popoverProps","t23","t24","keyframe","animation","skeletonStyle","$visible","$animated","StyledSkeleton","responsiveRadiusStyle","Skeleton","delay","animated","visible","setVisible","timeout","$size","$style","font","fontStyle","sizeIndex","sizes","height","lineHeight","ascenderHeight","descenderHeight","TextSkeleton","size","LabelSkeleton","HeadingSkeleton","CodeSkeleton","TabPanel","flex","LOADING_BAR_HEIGHT","STATUS_CARD_TONE","warning","success","BUTTON_TONE","TextBox","StyledToast","LoadingBar","LoadingBarMask","LoadingBarProgress","default","tone","enabled","bg","ROLES","LONG_ENOUGH_BUT_NOT_TOO_LONG","Toast","closable","description","duration","status","title","updatedAt","cardTone","buttonTone","role","visualDuration","bounce","transition","hasDuration","isFinite","initial","exit","verticalAlign","scaleX","ease","container","y","scale","zIndex","opacity","when","staggerChildren","slideIn","slideOut","willChange","MotionToast","motion","create","MotionFlex","MotionText","Text","MotionLoadingBar","MotionLoadingBarProgress","useMounted","useSyncExternalStore","subscribe","_temp2","ToastContext","ToastLayer","paddingX","paddingY","gap","StyledLayer","Grid","toastId","generateToastId","String","ToastProvider","setState","mounted","params","startTransition","prevState","toast","dismiss","currentState","toast_0","toast_1","Date","now","dismiss_0","id_0","params_0","useToast","Error","isRecord","_findPrevItemElement","itemElements","idx","itemKey","segments","split","pop","p","j","k","join","_findNextItemElement","_focusItemElement","firstChild","TreeContext","Tree","memo","setFocusedElement","path","setItemElements","stateRef","path_0","s","s_0","newState","registerItem","path_1","expanded_0","s_1","itemState","setExpanded","level","nextEl","prevEl","itemState_0","s_2","itemState_1","itemPath","parentKey","parentState","focusedKey","s_3","itemState_2","_itemElements","from","querySelectorAll","treeItemRootStyle","treeItemRootColorStyle","$tone","selectable","_cardColorStyle","pressed","hovered","treeItemBoxStyle","$level","rem","useTree","tree","TreeGroup","StyledTreeItem","li","TreeItemBox","attrs","forwardedAs","ToggleArrowText","TreeItem","expandedProp","IconComponent","idProp","linkAs","muted","text","weight","rootRef","treeitemRef","_id","useId","closest","click","visibility","pointerEvents","transform"],"mappings":"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"}
|