@feugene/granularity 0.33.0 → 0.34.0
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/{config-vYMJ3Cr1.js → config-CYthTVK2.js} +2 -2
- package/dist/chunks/config-CYthTVK2.js.map +1 -0
- package/dist/chunks/{config-CPSxM7XE.js → config-CsCUuukB.js} +1 -0
- package/dist/chunks/config-CsCUuukB.js.map +1 -0
- package/dist/chunks/{config-BTwYMQaz2.js → config-DBXCIb6r2.js} +4 -3
- package/dist/chunks/config-DBXCIb6r2.js.map +1 -0
- package/dist/chunks/{config-uzUuosv7.js → config-DGGaKf4R.js} +6 -5
- package/dist/chunks/config-DGGaKf4R.js.map +1 -0
- package/dist/chunks/{config-DnF472Ox.js → config-DOYz_SVK.js} +2 -2
- package/dist/chunks/{config-DnF472Ox.js.map → config-DOYz_SVK.js.map} +1 -1
- package/dist/chunks/{config-T3-DMXYm.js → config-DUNH02Fg.js} +2 -2
- package/dist/chunks/config-DUNH02Fg.js.map +1 -0
- package/dist/chunks/{generated-CSyPsWtM.js → generated-Buw6W7Te.js} +7 -0
- package/dist/chunks/{generated-CSyPsWtM.js.map → generated-Buw6W7Te.js.map} +1 -1
- package/dist/chunks/grDropdownStyles-DLToHWMX.js +5 -0
- package/dist/chunks/grDropdownStyles-DLToHWMX.js.map +1 -0
- package/dist/chunks/grPopoverStyles-DKwigt7b.js +91 -0
- package/dist/chunks/grPopoverStyles-DKwigt7b.js.map +1 -0
- package/dist/chunks/{grSelectStyles-Cdtd10eY.js → grSelectStyles-D9EQ-pgK.js} +2 -1
- package/dist/chunks/grSelectStyles-D9EQ-pgK.js.map +1 -0
- package/dist/chunks/{granular-provider-CrQua8PT.js → granular-provider-3LUawDPh.js} +6 -6
- package/dist/chunks/{granular-provider-CrQua8PT.js.map → granular-provider-3LUawDPh.js.map} +1 -1
- package/dist/chunks/{overlayTransition-0Fj5tQbq.js → overlayPanelSurface-BKeMhRx4.js} +24 -1
- package/dist/chunks/overlayPanelSurface-BKeMhRx4.js.map +1 -0
- package/dist/chunks/{focusables-BkzK42SQ.js → useFocusTrap-D9bIPNF6.js} +123 -1
- package/dist/chunks/useFocusTrap-D9bIPNF6.js.map +1 -0
- package/dist/chunks/{useMenuItemsFocus-B6TldmGf.js → useMenuItemsFocus-B7Bl_aFA.js} +1 -1
- package/dist/chunks/{useMenuItemsFocus-B6TldmGf.js.map → useMenuItemsFocus-B7Bl_aFA.js.map} +1 -1
- package/dist/chunks/{useModalOverlay-D__CqLGn.js → useModalOverlay-BnAGZpcI.js} +1 -1
- package/dist/chunks/{useModalOverlay-D__CqLGn.js.map → useModalOverlay-BnAGZpcI.js.map} +1 -1
- package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-CoQjEF8h.js → GrAutocomplete-BQsSE7sj.js} +2 -2
- package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-CoQjEF8h.js.map → GrAutocomplete-BQsSE7sj.js.map} +1 -1
- package/dist/components/GrAutocomplete/index.js +2 -2
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-p2XH_8cE.js → GrColorPicker-D1Iis7jf.js} +2 -1
- package/dist/components/GrColorPicker/chunks/GrColorPicker-D1Iis7jf.js.map +1 -0
- package/dist/components/GrColorPicker/index.js +1 -1
- package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BXbh3q7O.js → GrCommandPalette-BZHUKlux.js} +1 -1
- package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BXbh3q7O.js.map → GrCommandPalette-BZHUKlux.js.map} +1 -1
- package/dist/components/GrCommandPalette/index.js +1 -1
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-CUP43q__.js → GrConfirmDialog-jRDs_E6C.js} +1 -1
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-CUP43q__.js.map → GrConfirmDialog-jRDs_E6C.js.map} +1 -1
- package/dist/components/GrConfirmDialog/index.js +1 -1
- package/dist/components/GrContextMenu/chunks/{GrContextMenu-ClkVjdcP.js → GrContextMenu-CWmgrzpi.js} +17 -3
- package/dist/components/GrContextMenu/chunks/GrContextMenu-CWmgrzpi.js.map +1 -0
- package/dist/components/GrContextMenu/index.js +2 -2
- package/dist/components/GrDialog/chunks/{GrDialog-BiMJ9_T4.js → GrDialog-C01Hhk6G.js} +1 -1
- package/dist/components/GrDialog/chunks/{GrDialog-BiMJ9_T4.js.map → GrDialog-C01Hhk6G.js.map} +1 -1
- package/dist/components/GrDialog/index.js +1 -1
- package/dist/components/GrDialogService/chunks/{GrDialogService-BxNK6crD.js → GrDialogService-CmsJNUmM.js} +7 -2
- package/dist/components/GrDialogService/chunks/{GrDialogService-BxNK6crD.js.map → GrDialogService-CmsJNUmM.js.map} +1 -1
- package/dist/components/GrDialogService/index.js +1 -1
- package/dist/components/GrDrawer/chunks/{GrDrawer-Ce2l3zaG.js → GrDrawer-xfoy-MCj.js} +1 -1
- package/dist/components/GrDrawer/chunks/{GrDrawer-Ce2l3zaG.js.map → GrDrawer-xfoy-MCj.js.map} +1 -1
- package/dist/components/GrDrawer/index.js +1 -1
- package/dist/components/GrDropdown/chunks/GrDropdown-CDkPkvIJ.js +180 -0
- package/dist/components/GrDropdown/chunks/GrDropdown-CDkPkvIJ.js.map +1 -0
- package/dist/components/GrDropdown/index.js +2 -2
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-GOzuAXsi.js → GrDropdownMenu-DQrZ_yPV.js} +1 -1
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-GOzuAXsi.js.map → GrDropdownMenu-DQrZ_yPV.js.map} +1 -1
- package/dist/components/GrDropdownMenu/index.js +1 -1
- package/dist/components/GrFileUpload/chunks/{GrFileUpload-NsHkRRIa.js → GrFileUpload-LL8RZvC0.js} +10 -0
- package/dist/components/GrFileUpload/chunks/GrFileUpload-LL8RZvC0.js.map +1 -0
- package/dist/components/GrFileUpload/index.js +1 -1
- package/dist/components/GrImageViewer/chunks/{GrImageViewer-CG4vUBg_.js → GrImageViewer--BU8yrfx.js} +1 -1
- package/dist/components/GrImageViewer/chunks/{GrImageViewer-CG4vUBg_.js.map → GrImageViewer--BU8yrfx.js.map} +1 -1
- package/dist/components/GrImageViewer/index.js +1 -1
- package/dist/components/GrModal/chunks/{GrModal-D0mf1SAx.js → GrModal-_JrDhon-.js} +1 -1
- package/dist/components/GrModal/chunks/{GrModal-D0mf1SAx.js.map → GrModal-_JrDhon-.js.map} +1 -1
- package/dist/components/GrModal/index.js +1 -1
- package/dist/components/GrPagination/chunks/{GrPagination-FiiXzVyv.js → GrPagination-gBoWVHk6.js} +1 -1
- package/dist/components/GrPagination/chunks/{GrPagination-FiiXzVyv.js.map → GrPagination-gBoWVHk6.js.map} +1 -1
- package/dist/components/GrPagination/index.js +1 -1
- package/dist/components/GrPopover/chunks/{GrPopover-faJanmGs.js → GrPopover-CzeXMcvh.js} +87 -13
- package/dist/components/GrPopover/chunks/GrPopover-CzeXMcvh.js.map +1 -0
- package/dist/components/GrPopover/index.js +2 -2
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-C6QGC7QJ.js → GrPromptDialog-CailXSqW.js} +1 -1
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-C6QGC7QJ.js.map → GrPromptDialog-CailXSqW.js.map} +1 -1
- package/dist/components/GrPromptDialog/index.js +1 -1
- package/dist/components/GrSelect/chunks/{GrSelect-Dt8iqruc.js → GrSelect-CZqV1Eg4.js} +2 -2
- package/dist/components/GrSelect/chunks/{GrSelect-Dt8iqruc.js.map → GrSelect-CZqV1Eg4.js.map} +1 -1
- package/dist/components/GrSelect/index.js +2 -2
- package/dist/components/GrTabs/chunks/{GrTabs-ugDnkk-2.js → GrTabs-UsO4j8zv.js} +5 -0
- package/dist/components/GrTabs/chunks/GrTabs-UsO4j8zv.js.map +1 -0
- package/dist/components/GrTabs/index.js +1 -1
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-BHwgGJcT.js → GrTreeSelect-DOXcpWq2.js} +2 -2
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-BHwgGJcT.js.map → GrTreeSelect-DOXcpWq2.js.map} +1 -1
- package/dist/components/GrTreeSelect/index.js +2 -2
- package/dist/composables/useFocusTrap.js +1 -123
- package/dist/granular-provider-node.js +1 -1
- package/dist/granular-provider.js +1 -1
- package/dist/index.js +26 -26
- package/dist/theme.js +1 -1
- package/dist/tokens.js +1 -1
- package/dist/types/components/GrAutocomplete/grAutocompleteStyles.d.ts +1 -1
- package/dist/types/components/GrDropdown/GrDropdown.vue.d.ts +5 -5
- package/dist/types/components/GrDropdown/grDropdownStyles.d.ts +8 -2
- package/dist/types/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +2 -2
- package/dist/types/components/GrPopover/GrPopover.vue.d.ts +54 -4
- package/dist/types/components/GrPopover/grPopoverStyles.d.ts +19 -11
- package/dist/types/components/GrSelect/grSelectStyles.d.ts +1 -1
- package/dist/types/components/GrTreeSelect/grTreeSelectStyles.d.ts +1 -1
- package/dist/types/components/shared/overlayOrigin.d.ts +22 -0
- package/dist/types/components/shared/overlayPanelSurface.d.ts +21 -0
- package/dist/web-types.json +40 -4
- package/package.json +1 -1
- package/dist/chunks/config-BTwYMQaz2.js.map +0 -1
- package/dist/chunks/config-CPSxM7XE.js.map +0 -1
- package/dist/chunks/config-T3-DMXYm.js.map +0 -1
- package/dist/chunks/config-uzUuosv7.js.map +0 -1
- package/dist/chunks/config-vYMJ3Cr1.js.map +0 -1
- package/dist/chunks/focusables-BkzK42SQ.js.map +0 -1
- package/dist/chunks/grDropdownStyles-V7TRiCXn.js +0 -24
- package/dist/chunks/grDropdownStyles-V7TRiCXn.js.map +0 -1
- package/dist/chunks/grPopoverStyles-Djh5RNhn.js +0 -59
- package/dist/chunks/grPopoverStyles-Djh5RNhn.js.map +0 -1
- package/dist/chunks/grSelectStyles-Cdtd10eY.js.map +0 -1
- package/dist/chunks/overlayTransition-0Fj5tQbq.js.map +0 -1
- package/dist/components/GrColorPicker/chunks/GrColorPicker-p2XH_8cE.js.map +0 -1
- package/dist/components/GrContextMenu/chunks/GrContextMenu-ClkVjdcP.js.map +0 -1
- package/dist/components/GrDropdown/chunks/GrDropdown-13Wt9eB_.js +0 -239
- package/dist/components/GrDropdown/chunks/GrDropdown-13Wt9eB_.js.map +0 -1
- package/dist/components/GrFileUpload/chunks/GrFileUpload-NsHkRRIa.js.map +0 -1
- package/dist/components/GrPopover/chunks/GrPopover-faJanmGs.js.map +0 -1
- package/dist/components/GrTabs/chunks/GrTabs-ugDnkk-2.js.map +0 -1
- package/dist/composables/useFocusTrap.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as granularityDefaultThemes, i as granularityComponentConfigs, n as GRANULARITY_PROVIDER_ID, o as granularityThemeNames, r as createGranularityProvider, t as granularityProvider } from "./chunks/granular-provider-
|
|
1
|
+
import { a as granularityDefaultThemes, i as granularityComponentConfigs, n as GRANULARITY_PROVIDER_ID, o as granularityThemeNames, r as createGranularityProvider, t as granularityProvider } from "./chunks/granular-provider-3LUawDPh.js";
|
|
2
2
|
export { GRANULARITY_PROVIDER_ID, createGranularityProvider, granularityProvider as default, granularityProvider, granularityComponentConfigs, granularityDefaultThemes, granularityThemeNames };
|
package/dist/index.js
CHANGED
|
@@ -22,8 +22,8 @@ import { useGrFormControl } from "./composables/useGrFormControl.js";
|
|
|
22
22
|
import { useComboboxNavigation } from "./composables/useComboboxNavigation.js";
|
|
23
23
|
import { useRovingFocus } from "./composables/useRovingFocus.js";
|
|
24
24
|
import { t as GrChip_default } from "./components/GrChip/chunks/GrChip-BTivtwff.js";
|
|
25
|
-
import { n as grAutocompleteSafelist, t as grAutocompleteConfig } from "./chunks/config-
|
|
26
|
-
import { t as GrAutocomplete_default } from "./components/GrAutocomplete/chunks/GrAutocomplete-
|
|
25
|
+
import { n as grAutocompleteSafelist, t as grAutocompleteConfig } from "./chunks/config-CYthTVK2.js";
|
|
26
|
+
import { t as GrAutocomplete_default } from "./components/GrAutocomplete/chunks/GrAutocomplete-BQsSE7sj.js";
|
|
27
27
|
import { t as GrSkeleton_default } from "./components/GrSkeleton/chunks/GrSkeleton-CgfXxPQ2.js";
|
|
28
28
|
import { n as GrAvatar_default, t as GrAvatarGroup_default } from "./components/GrAvatar/chunks/GrAvatar-CNmLmgcr.js";
|
|
29
29
|
import { c as initialsFrom, n as grAvatarSafelist, t as grAvatarConfig } from "./chunks/config-B3J0alyY.js";
|
|
@@ -62,26 +62,26 @@ import { n as grCollapseSafelist, t as grCollapseConfig } from "./chunks/config-
|
|
|
62
62
|
import { n as GrCollapse_default, t as GrCollapseItem_default } from "./components/GrCollapse/chunks/GrCollapse-BlW6ybdL.js";
|
|
63
63
|
import { n as grIconSafelist, t as grIconConfig } from "./chunks/config-3bQeQvqd.js";
|
|
64
64
|
import { t as GrInput_default } from "./components/GrInput/chunks/GrInput-BLywRZUN.js";
|
|
65
|
-
import { useFocusTrap } from "./
|
|
66
|
-
import { t as GrPopover_default } from "./components/GrPopover/chunks/GrPopover-
|
|
65
|
+
import { t as useFocusTrap } from "./chunks/useFocusTrap-D9bIPNF6.js";
|
|
66
|
+
import { t as GrPopover_default } from "./components/GrPopover/chunks/GrPopover-CzeXMcvh.js";
|
|
67
67
|
import { useDragGesture } from "./composables/useDragGesture.js";
|
|
68
68
|
import { t as GrSlider_default } from "./components/GrSlider/chunks/GrSlider-DTTrZTHK.js";
|
|
69
|
-
import { t as GrColorPicker_default } from "./components/GrColorPicker/chunks/GrColorPicker-
|
|
69
|
+
import { t as GrColorPicker_default } from "./components/GrColorPicker/chunks/GrColorPicker-D1Iis7jf.js";
|
|
70
70
|
import { n as grColorPickerSafelist, t as grColorPickerConfig } from "./chunks/config-DIDz_E5m.js";
|
|
71
71
|
import { a as GR_KBD_TOKENS, o as findKbdToken, t as GrKbd_default } from "./components/GrKbd/chunks/GrKbd-D2ga1H9i.js";
|
|
72
|
-
import { t as GrModal_default } from "./components/GrModal/chunks/GrModal-
|
|
73
|
-
import { t as GrCommandPalette_default } from "./components/GrCommandPalette/chunks/GrCommandPalette-
|
|
72
|
+
import { t as GrModal_default } from "./components/GrModal/chunks/GrModal-_JrDhon-.js";
|
|
73
|
+
import { t as GrCommandPalette_default } from "./components/GrCommandPalette/chunks/GrCommandPalette-BZHUKlux.js";
|
|
74
74
|
import { n as grCommandPaletteSafelist, t as grCommandPaletteConfig } from "./chunks/config-D0NzGYaE.js";
|
|
75
75
|
import { t as GrConfigProvider_default } from "./components/GrConfigProvider/chunks/GrConfigProvider-BF7R3hgg.js";
|
|
76
76
|
import { t as grConfigProviderConfig } from "./chunks/config-B7W9VlZ7.js";
|
|
77
|
-
import { i as GrDialogFooter_default, n as GrDialogHeader_default, r as GrDialogCloseButton_default, t as GrDialog_default } from "./components/GrDialog/chunks/GrDialog-
|
|
77
|
+
import { i as GrDialogFooter_default, n as GrDialogHeader_default, r as GrDialogCloseButton_default, t as GrDialog_default } from "./components/GrDialog/chunks/GrDialog-C01Hhk6G.js";
|
|
78
78
|
import { a as extendDefaultParsers, n as coreResponseErrorParsers, r as createResponseErrorClassifier, s as normalizeError, t as GrResponseErrorBanner_default } from "./components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-DMeOWlzj.js";
|
|
79
|
-
import { t as GrConfirmDialog_default } from "./components/GrConfirmDialog/chunks/GrConfirmDialog-
|
|
79
|
+
import { t as GrConfirmDialog_default } from "./components/GrConfirmDialog/chunks/GrConfirmDialog-jRDs_E6C.js";
|
|
80
80
|
import { t as grConfirmDialogConfig } from "./chunks/config-A-bBiotF.js";
|
|
81
81
|
import "./components/GrConfirmDialog/index.js";
|
|
82
82
|
import { a as GrDropdownMenuItem_default, c as GrDropdownMenuDivider_default, o as GrDropdownMenuGroup_default, s as GrDropdownMenuHeader_default, t as GrDropdownMenuList_default } from "./components/GrDropdownMenu/chunks/GrDropdownMenuList-B33ZzwfB.js";
|
|
83
|
-
import { t as GrContextMenu_default } from "./components/GrContextMenu/chunks/GrContextMenu-
|
|
84
|
-
import { t as grContextMenuConfig } from "./chunks/config-
|
|
83
|
+
import { t as GrContextMenu_default } from "./components/GrContextMenu/chunks/GrContextMenu-CWmgrzpi.js";
|
|
84
|
+
import { t as grContextMenuConfig } from "./chunks/config-CsCUuukB.js";
|
|
85
85
|
import { t as GrTable_default } from "./components/GrTable/chunks/GrTable-jhUTczjv.js";
|
|
86
86
|
import { t as useDragSort } from "./chunks/useDragSort-0l47h4yb.js";
|
|
87
87
|
import { t as GrDataTable_default } from "./components/GrDataTable/chunks/GrDataTable-4JAgOQ-7.js";
|
|
@@ -99,24 +99,24 @@ import { n as useGrFormContext } from "./chunks/context-Bfrgsluh.js";
|
|
|
99
99
|
import { t as GrFormField_default } from "./components/GrFormField/chunks/GrFormField-DSylU7IU.js";
|
|
100
100
|
import { t as GrTextarea_default } from "./components/GrTextarea/chunks/GrTextarea-DinXG12-.js";
|
|
101
101
|
import { n as getByPath, o as runFieldRules, r as isEmpty, s as setByPath, t as createGrFormMessageResolver } from "./chunks/validation-5HhpanPP.js";
|
|
102
|
-
import { t as GrPromptDialog_default } from "./components/GrPromptDialog/chunks/GrPromptDialog-
|
|
103
|
-
import { a as useDialogService, i as teardownDialogService, n as dialogService, r as granularityDialogServicePlugin, t as GrDialogServiceHost_default } from "./components/GrDialogService/chunks/GrDialogService-
|
|
102
|
+
import { t as GrPromptDialog_default } from "./components/GrPromptDialog/chunks/GrPromptDialog-CailXSqW.js";
|
|
103
|
+
import { a as useDialogService, i as teardownDialogService, n as dialogService, r as granularityDialogServicePlugin, t as GrDialogServiceHost_default } from "./components/GrDialogService/chunks/GrDialogService-CmsJNUmM.js";
|
|
104
104
|
import { t as grDialogServiceConfig } from "./chunks/config-CjXjhphs.js";
|
|
105
105
|
import { n as grDividerSafelist, t as grDividerConfig } from "./chunks/config-D82r782v.js";
|
|
106
106
|
import { t as GrDivider_default } from "./components/GrDivider/chunks/GrDivider-BXavGcMX.js";
|
|
107
107
|
import { n as grDrawerSafelist, t as grDrawerConfig } from "./chunks/config-ChPg-BQv.js";
|
|
108
|
-
import { t as GrDrawer_default } from "./components/GrDrawer/chunks/GrDrawer-
|
|
109
|
-
import { t as GrDropdown_default } from "./components/GrDropdown/chunks/GrDropdown-
|
|
110
|
-
import { n as grDropdownSafelist, t as grDropdownConfig } from "./chunks/config-
|
|
108
|
+
import { t as GrDrawer_default } from "./components/GrDrawer/chunks/GrDrawer-xfoy-MCj.js";
|
|
109
|
+
import { t as GrDropdown_default } from "./components/GrDropdown/chunks/GrDropdown-CDkPkvIJ.js";
|
|
110
|
+
import { n as grDropdownSafelist, t as grDropdownConfig } from "./chunks/config-DGGaKf4R.js";
|
|
111
111
|
import "./components/GrDropdown/index.js";
|
|
112
|
-
import { n as GrDropdownMenuColumn_default, r as GrDropdownMenu_default, t as GrDropdownMenuColumns_default } from "./components/GrDropdownMenu/chunks/GrDropdownMenu-
|
|
112
|
+
import { n as GrDropdownMenuColumn_default, r as GrDropdownMenu_default, t as GrDropdownMenuColumns_default } from "./components/GrDropdownMenu/chunks/GrDropdownMenu-DQrZ_yPV.js";
|
|
113
113
|
import { n as grDropdownMenuSafelist, t as grDropdownMenuConfig } from "./chunks/config-_jbgsFpw.js";
|
|
114
114
|
import { t as GrEmptyState_default } from "./components/GrEmptyState/chunks/GrEmptyState-RqsWvgI9.js";
|
|
115
115
|
import { n as grEmptyStateSafelist, t as grEmptyStateConfig } from "./chunks/config-CWtfxkM9.js";
|
|
116
116
|
import { n as fileKindOf, r as isPreviewableKind, t as GrFilePreview_default } from "./components/GrFilePreview/chunks/GrFilePreview-C9Z7hMK8.js";
|
|
117
117
|
import { n as grFilePreviewSafelist, t as grFilePreviewConfig } from "./chunks/config-BaWANzzB.js";
|
|
118
118
|
import { t as GrProgressBar_default } from "./components/GrProgressBar/chunks/GrProgressBar-hszUOC8f.js";
|
|
119
|
-
import { n as GrUploadAbortError, r as GrUploadHttpError, t as GrFileUpload_default } from "./components/GrFileUpload/chunks/GrFileUpload-
|
|
119
|
+
import { n as GrUploadAbortError, r as GrUploadHttpError, t as GrFileUpload_default } from "./components/GrFileUpload/chunks/GrFileUpload-LL8RZvC0.js";
|
|
120
120
|
import { n as grFileUploadSafelist, t as grFileUploadConfig } from "./chunks/config-BlJa1Mj9.js";
|
|
121
121
|
import { t as GrForm_default } from "./components/GrForm/chunks/GrForm-CrnfCsgj.js";
|
|
122
122
|
import { t as grFormConfig } from "./chunks/config-Droqn55j.js";
|
|
@@ -126,7 +126,7 @@ import { t as GrFormFile_default } from "./components/GrFormFile/chunks/GrFormFi
|
|
|
126
126
|
import { n as grFormFileSafelist, t as grFormFileConfig } from "./chunks/config-BcXX7S7B.js";
|
|
127
127
|
import { n as grFormSectionSafelist, t as grFormSectionConfig } from "./chunks/config-BEO7brpO.js";
|
|
128
128
|
import { t as GrFormSection_default } from "./components/GrFormSection/chunks/GrFormSection-ejieOg9H.js";
|
|
129
|
-
import { t as GrImageViewer_default } from "./components/GrImageViewer/chunks/GrImageViewer
|
|
129
|
+
import { t as GrImageViewer_default } from "./components/GrImageViewer/chunks/GrImageViewer--BU8yrfx.js";
|
|
130
130
|
import { n as grImageViewerSafelist, t as grImageViewerConfig } from "./chunks/config-BDSaD-5p.js";
|
|
131
131
|
import { n as grInputSafelist, t as grInputConfig } from "./chunks/config-CIkdsWUk.js";
|
|
132
132
|
import "./components/GrInput/index.js";
|
|
@@ -149,10 +149,10 @@ import { t as GrNavbar_default } from "./components/GrNavbar/chunks/GrNavbar-_rt
|
|
|
149
149
|
import { n as grNavbarSafelist, t as grNavbarConfig } from "./chunks/config-2ZHRsdOc.js";
|
|
150
150
|
import { n as grNumberInputSafelist, t as grNumberInputConfig } from "./chunks/config-MmPym-Z72.js";
|
|
151
151
|
import { t as GrNumberInput_default } from "./components/GrNumberInput/chunks/GrNumberInput-DQ59YICu.js";
|
|
152
|
-
import { t as GrSelect_default } from "./components/GrSelect/chunks/GrSelect-
|
|
152
|
+
import { t as GrSelect_default } from "./components/GrSelect/chunks/GrSelect-CZqV1Eg4.js";
|
|
153
153
|
import { n as grPaginationSafelist, t as grPaginationConfig } from "./chunks/config-CjKpUcmy.js";
|
|
154
|
-
import { t as GrPagination_default } from "./components/GrPagination/chunks/GrPagination-
|
|
155
|
-
import { n as grPopoverSafelist, t as grPopoverConfig } from "./chunks/config-
|
|
154
|
+
import { t as GrPagination_default } from "./components/GrPagination/chunks/GrPagination-gBoWVHk6.js";
|
|
155
|
+
import { n as grPopoverSafelist, t as grPopoverConfig } from "./chunks/config-DBXCIb6r2.js";
|
|
156
156
|
import "./components/GrPopover/index.js";
|
|
157
157
|
import { n as grProgressBarSafelist, r as GR_TONES, t as grProgressBarConfig } from "./chunks/config-DWL81-aM.js";
|
|
158
158
|
import "./components/GrProgressBar/index.js";
|
|
@@ -170,7 +170,7 @@ import { t as GrRating_default } from "./components/GrRating/chunks/GrRating-IEi
|
|
|
170
170
|
import { n as GrFormErrorBanner_default, r as GrUploadErrorBanner_default, t as useResponseError } from "./components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-CBVRpgIG.js";
|
|
171
171
|
import { n as titleWhenTruncated, t as GrSegmented_default } from "./components/GrSegmented/chunks/GrSegmented-CB-VR-yL.js";
|
|
172
172
|
import { n as grSegmentedSafelist, t as grSegmentedConfig } from "./chunks/config-rLkc9Zn2.js";
|
|
173
|
-
import { n as grSelectSafelist, t as grSelectConfig } from "./chunks/config-
|
|
173
|
+
import { n as grSelectSafelist, t as grSelectConfig } from "./chunks/config-DOYz_SVK.js";
|
|
174
174
|
import "./components/GrSelect/index.js";
|
|
175
175
|
import { n as grSidebarSafelist, t as grSidebarConfig } from "./chunks/config-DNDgp9bB.js";
|
|
176
176
|
import { n as GrSidebarItem_default, r as GrSidebar_default, t as GrSidebarGroup_default } from "./components/GrSidebar/chunks/GrSidebar-alkwBUzL.js";
|
|
@@ -193,7 +193,7 @@ import "./components/GrTable/index.js";
|
|
|
193
193
|
import { n as GrTabPanels_default, t as GrTabPanel_default } from "./components/GrTabPanels/chunks/GrTabPanels-BZQS8-JM.js";
|
|
194
194
|
import { t as grTabPanelsConfig } from "./chunks/config-eXB87DOi.js";
|
|
195
195
|
import { n as grTabsSafelist, t as grTabsConfig } from "./chunks/config-_QF0O1vq.js";
|
|
196
|
-
import { t as GrTabs_default } from "./components/GrTabs/chunks/GrTabs-
|
|
196
|
+
import { t as GrTabs_default } from "./components/GrTabs/chunks/GrTabs-UsO4j8zv.js";
|
|
197
197
|
import { n as grTextareaSafelist, t as grTextareaConfig } from "./chunks/config-BhfNgyWL.js";
|
|
198
198
|
import "./components/GrTextarea/index.js";
|
|
199
199
|
import { n as GrTimeline_default, t as GrTimelineItem_default } from "./components/GrTimeline/chunks/GrTimeline-BiHpArsg.js";
|
|
@@ -204,8 +204,8 @@ import { t as GrToaster_default } from "./components/GrToaster/chunks/GrToaster-
|
|
|
204
204
|
import { n as grTooltipSafelist, t as grTooltipConfig } from "./chunks/config-BTmfQFwi.js";
|
|
205
205
|
import { t as GrTooltip_default } from "./components/GrTooltip/chunks/GrTooltip-uYETdbCD.js";
|
|
206
206
|
import { n as grTreeSafelist, t as grTreeConfig } from "./chunks/config-CDat1wXf.js";
|
|
207
|
-
import { n as grTreeSelectSafelist, t as grTreeSelectConfig } from "./chunks/config-
|
|
208
|
-
import { t as GrTreeSelect_default } from "./components/GrTreeSelect/chunks/GrTreeSelect-
|
|
207
|
+
import { n as grTreeSelectSafelist, t as grTreeSelectConfig } from "./chunks/config-DUNH02Fg.js";
|
|
208
|
+
import { t as GrTreeSelect_default } from "./components/GrTreeSelect/chunks/GrTreeSelect-DOXcpWq2.js";
|
|
209
209
|
import "./composables/useGrComponentConfig.js";
|
|
210
210
|
import "./composables/useGranularityTranslations.js";
|
|
211
211
|
import { GRANULARITY_THEME_STATE, granularityThemePlugin, initThemeEarly, useTheme } from "./composables/useTheme.js";
|
package/dist/theme.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as grThemeTokens, n as grDerivedTokens, t as grComponentTokens } from "./chunks/generated-
|
|
1
|
+
import { a as grThemeTokens, n as grDerivedTokens, t as grComponentTokens } from "./chunks/generated-Buw6W7Te.js";
|
|
2
2
|
//#region src/theme/color.ts
|
|
3
3
|
function parseHex(value) {
|
|
4
4
|
const match = value.trim().match(/^#([\da-f]{3}|[\da-f]{6})$/i);
|
package/dist/tokens.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as grThemeTokens, i as grThemeNames, n as grDerivedTokens, r as grFoundationTokens, t as grComponentTokens } from "./chunks/generated-
|
|
1
|
+
import { a as grThemeTokens, i as grThemeNames, n as grDerivedTokens, r as grFoundationTokens, t as grComponentTokens } from "./chunks/generated-Buw6W7Te.js";
|
|
2
2
|
export { grComponentTokens, grDerivedTokens, grFoundationTokens, grThemeNames, grThemeTokens };
|
|
@@ -60,4 +60,4 @@ export declare const autocompleteStateClass = "flex items-center justify-center
|
|
|
60
60
|
* (card + бордер + shadow-2 + скругление). Держим локальную копию строки,
|
|
61
61
|
* чтобы не тянуть зависимость от `GrSelect` (компоненты гранулярно независимы).
|
|
62
62
|
*/
|
|
63
|
-
export declare const autocompletePanelClasses = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-
|
|
63
|
+
export declare const autocompletePanelClasses = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-popover)] text-[var(--gr-popover-fg)] shadow-[var(--gr-shadow-2)] overflow-hidden";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { UseFloatingPlacement } from '../../composables/useFloating';
|
|
2
2
|
import { type GrDropdownWidth } from './grDropdownStyles';
|
|
3
3
|
export type GrDropdownTrigger = 'click' | 'hover';
|
|
4
4
|
export interface GrDropdownProps {
|
|
@@ -36,13 +36,13 @@ export interface GrDropdownEmits {
|
|
|
36
36
|
(e: 'update:open', value: boolean): void;
|
|
37
37
|
}
|
|
38
38
|
declare function open(): void;
|
|
39
|
-
declare function toggle(): void;
|
|
40
39
|
declare function close(): void;
|
|
40
|
+
declare function toggle(): void;
|
|
41
41
|
type __VLS_Slots = {
|
|
42
42
|
/**
|
|
43
43
|
* Триггер панели. `triggerProps` обязаны попасть на сам интерактивный
|
|
44
44
|
* элемент, а не на обёртку вокруг него: `aria-expanded` и `aria-controls`
|
|
45
|
-
* читаются с того узла, который получает
|
|
45
|
+
* читаются с того узла, который получает фокус, а клик приезжает вместе с ними.
|
|
46
46
|
*/
|
|
47
47
|
trigger?: (props: {
|
|
48
48
|
open: boolean;
|
|
@@ -94,11 +94,11 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
94
94
|
open: boolean;
|
|
95
95
|
disabled: boolean;
|
|
96
96
|
trigger: GrDropdownTrigger;
|
|
97
|
+
openDelay: number;
|
|
98
|
+
closeDelay: number;
|
|
97
99
|
closeOnContentClick: boolean;
|
|
98
100
|
teleportTo: string | HTMLElement;
|
|
99
101
|
contentClass: string;
|
|
100
|
-
openDelay: number;
|
|
101
|
-
closeDelay: number;
|
|
102
102
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
103
103
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
104
104
|
declare const _default: typeof __VLS_export;
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import type { Placement } from '@floating-ui/dom';
|
|
2
2
|
/** Ширина панели: число — пиксели, строка — CSS-длина, `auto` — по контенту. */
|
|
3
3
|
export type GrDropdownWidth = number | string;
|
|
4
|
-
export declare const originClassByPlacement: Record<Placement, string>;
|
|
5
4
|
export declare function grDropdownOriginClass(placement: Placement): string;
|
|
6
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Поле вокруг пунктов меню.
|
|
7
|
+
*
|
|
8
|
+
* Поверхности здесь больше нет: панель рисует `GrPopover`, на котором меню и
|
|
9
|
+
* стоит. Осталось только поле — пункты не должны прилегать к рамке вплотную, —
|
|
10
|
+
* и классы потребителя.
|
|
11
|
+
*/
|
|
12
|
+
export declare const dropdownContentBaseClass = "p-1";
|
|
7
13
|
export declare function grDropdownContentClass(contentClass?: string): string;
|
|
@@ -116,13 +116,13 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
116
116
|
disabled: boolean;
|
|
117
117
|
items: GrDropdownMenuEntry[];
|
|
118
118
|
trigger: GrDropdownTrigger;
|
|
119
|
+
openDelay: number;
|
|
120
|
+
closeDelay: number;
|
|
119
121
|
closeOnContentClick: boolean;
|
|
120
122
|
teleportTo: string | HTMLElement;
|
|
121
123
|
contentClass: string;
|
|
122
124
|
dividers: boolean;
|
|
123
125
|
listClass: string;
|
|
124
|
-
openDelay: number;
|
|
125
|
-
closeDelay: number;
|
|
126
126
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
127
127
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
128
128
|
declare const _default: typeof __VLS_export;
|
|
@@ -27,10 +27,24 @@ export interface GrPopoverProps {
|
|
|
27
27
|
/** `id` видимого заголовка внутри панели — альтернатива `ariaLabel`. */
|
|
28
28
|
labelledBy?: string;
|
|
29
29
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
30
|
+
* Чем открывается панель.
|
|
31
|
+
*
|
|
32
|
+
* `manual` — только программно (через `v-model:open`): нужно контекстному меню
|
|
33
|
+
* и подтверждениям, где момент открытия решает потребитель. `hover` — по
|
|
34
|
+
* наведению, с задержками из `openDelay` и `closeDelay`; клик и клавиатура в
|
|
35
|
+
* этом режиме продолжают работать.
|
|
36
|
+
*/
|
|
37
|
+
trigger?: 'click' | 'manual' | 'hover';
|
|
38
|
+
/**
|
|
39
|
+
* Задержка открытия по наведению, мс.
|
|
40
|
+
*
|
|
41
|
+
* Обе задержки нужны, и каждая по своей причине: без `openDelay` панель
|
|
42
|
+
* выпрыгивает на любое пересечение курсором, без `closeDelay` её не удержать
|
|
43
|
+
* при переходе с триггера на панель — между ними зазор `offsetPx`.
|
|
32
44
|
*/
|
|
33
|
-
|
|
45
|
+
openDelay?: number;
|
|
46
|
+
/** Задержка закрытия после ухода курсора, мс. */
|
|
47
|
+
closeDelay?: number;
|
|
34
48
|
closeOnEsc?: boolean;
|
|
35
49
|
closeOnClickOutside?: boolean;
|
|
36
50
|
/** Закрывать по клику внутри панели — удобно для меню, вредно для формы. */
|
|
@@ -61,6 +75,30 @@ export interface GrPopoverProps {
|
|
|
61
75
|
anchor?: GrFloatingAnchorRect | null;
|
|
62
76
|
/** Поле панели. `none` — содержимое рисует своё (меню, список опций). */
|
|
63
77
|
padding?: GrPopoverPadding;
|
|
78
|
+
/**
|
|
79
|
+
* Брать ширину у триггера: `true` — точно его ширина, `'min'` — не уже его,
|
|
80
|
+
* дальше по содержимому. Панель у поля или у широкой кнопки, оказавшаяся уже
|
|
81
|
+
* своего триггера, читается как ошибка вёрстки.
|
|
82
|
+
*
|
|
83
|
+
* С потолком `--gr-popover-max-width` сочетается, а не спорит: ширину задаёт
|
|
84
|
+
* триггер, потолок её ограничивает — «шириной с триггер, но не шире
|
|
85
|
+
* читаемого». Поэтому это отдельный проп, а не значение одного перечисления
|
|
86
|
+
* вместе с потолком: оси независимы, и сочетание осмысленно.
|
|
87
|
+
*/
|
|
88
|
+
matchWidth?: boolean | 'min';
|
|
89
|
+
/**
|
|
90
|
+
* Обёртка триггера занимает всю ширину родителя вместо того, чтобы обжимать
|
|
91
|
+
* содержимое.
|
|
92
|
+
*
|
|
93
|
+
* Нужно форм-контролам: обёртка `inline-block` схлопывается по содержимому, и
|
|
94
|
+
* `w-full` у самого триггера начинает резолвиться относительно неё, а не
|
|
95
|
+
* относительно поля. Контрол, объявивший себя во всю ширину, рисуется по
|
|
96
|
+
* содержимому — рядом с полем ввода это читается как сбитая вёрстка.
|
|
97
|
+
*
|
|
98
|
+
* Имя то же, что у `GrButton` и `GrSegmented`: в ядре это устоявшееся слово
|
|
99
|
+
* для «во всю ширину».
|
|
100
|
+
*/
|
|
101
|
+
block?: boolean;
|
|
64
102
|
}
|
|
65
103
|
export interface GrPopoverEmits {
|
|
66
104
|
(e: 'update:open', value: boolean): void;
|
|
@@ -95,6 +133,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
95
133
|
ariaLabel: undefined;
|
|
96
134
|
labelledBy: undefined;
|
|
97
135
|
trigger: string;
|
|
136
|
+
openDelay: number;
|
|
137
|
+
closeDelay: number;
|
|
98
138
|
closeOnEsc: boolean;
|
|
99
139
|
closeOnClickOutside: boolean;
|
|
100
140
|
closeOnContentClick: boolean;
|
|
@@ -104,6 +144,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
104
144
|
disabled: boolean;
|
|
105
145
|
anchor: undefined;
|
|
106
146
|
padding: string;
|
|
147
|
+
matchWidth: boolean;
|
|
148
|
+
block: boolean;
|
|
107
149
|
}>>, {
|
|
108
150
|
open: typeof open;
|
|
109
151
|
close: typeof close;
|
|
@@ -120,6 +162,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
120
162
|
ariaLabel: undefined;
|
|
121
163
|
labelledBy: undefined;
|
|
122
164
|
trigger: string;
|
|
165
|
+
openDelay: number;
|
|
166
|
+
closeDelay: number;
|
|
123
167
|
closeOnEsc: boolean;
|
|
124
168
|
closeOnClickOutside: boolean;
|
|
125
169
|
closeOnContentClick: boolean;
|
|
@@ -129,6 +173,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
129
173
|
disabled: boolean;
|
|
130
174
|
anchor: undefined;
|
|
131
175
|
padding: string;
|
|
176
|
+
matchWidth: boolean;
|
|
177
|
+
block: boolean;
|
|
132
178
|
}>>> & Readonly<{
|
|
133
179
|
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
134
180
|
}>, {
|
|
@@ -138,12 +184,16 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
138
184
|
role: GrPopoverRole;
|
|
139
185
|
modal: boolean;
|
|
140
186
|
placement: UseFloatingPlacement;
|
|
187
|
+
block: boolean;
|
|
141
188
|
open: boolean;
|
|
142
189
|
disabled: boolean;
|
|
143
190
|
ariaLabel: string;
|
|
191
|
+
matchWidth: boolean | "min";
|
|
144
192
|
labelledBy: string;
|
|
145
193
|
offsetPx: number;
|
|
146
|
-
trigger: "click" | "manual";
|
|
194
|
+
trigger: "click" | "manual" | "hover";
|
|
195
|
+
openDelay: number;
|
|
196
|
+
closeDelay: number;
|
|
147
197
|
closeOnEsc: boolean;
|
|
148
198
|
closeOnClickOutside: boolean;
|
|
149
199
|
closeOnContentClick: boolean;
|
|
@@ -14,17 +14,25 @@ export type GrPopoverRole = 'dialog' | 'menu' | 'listbox' | 'grid' | 'group' | '
|
|
|
14
14
|
export type GrPopoverPadding = 'default' | 'none';
|
|
15
15
|
export declare const panelSizes: Record<GrPopoverSize, string>;
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
18
|
-
* `useFloating`, здесь остаётся направление «роста» относительно триггера.
|
|
17
|
+
* Поверхность панели.
|
|
19
18
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
*
|
|
27
|
-
*
|
|
19
|
+
* Ширина — `min()` из двух пределов, и они разной природы. Первый, `22rem`, —
|
|
20
|
+
* потолок содержимого: читаемая ширина колонки текста. Он **дефолт**, а не
|
|
21
|
+
* закон, и снимается хуком `--gr-popover-max-width` — примитив объявил, что
|
|
22
|
+
* содержимое панели дело потребителя, и навязывать ему форму не вправе.
|
|
23
|
+
* Тулбар, палитра и сетка шире прозы законно.
|
|
24
|
+
*
|
|
25
|
+
* Второй, `calc(100vw-1rem)`, — инвариант слоя: `useFloating` смещает панель в
|
|
26
|
+
* пределах вьюпорта, но не сужает её. Он не настраивается ничем и снаружи не
|
|
27
|
+
* отключается, потому что стоит вторым операндом `min()`: даже
|
|
28
|
+
* `--gr-popover-max-width: 100vw` его не снимает, а лишь уступает ему место.
|
|
29
|
+
*
|
|
30
|
+
* Хуком, а не пропом, — по трём причинам. Спор специфичности не возникает
|
|
31
|
+
* вовсе: кастомное свойство разрешается каскадом на самом элементе, а не
|
|
32
|
+
* порядком правил в сгенерированном CSS (та же ловушка, что описана у
|
|
33
|
+
* `panelSizesFlush`). Потолок можно менять по брейкпоинту и по теме — пропом
|
|
34
|
+
* этого не сделать. И словарь компонента не растёт: значение остаётся
|
|
35
|
+
* значением. Так же устроена высота списка у `GrCommandPalette`.
|
|
28
36
|
*/
|
|
29
37
|
/**
|
|
30
38
|
* Кегль без поля.
|
|
@@ -34,5 +42,5 @@ export declare function grPopoverOriginClass(placement: Placement): string;
|
|
|
34
42
|
* сгенерированном CSS. Меню внутри поповера с `p-3` — визуально не меню.
|
|
35
43
|
*/
|
|
36
44
|
export declare const panelSizesFlush: Record<GrPopoverSize, string>;
|
|
37
|
-
export declare const popoverPanelBaseClass = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-popover)] text-[var(--gr-popover-fg)] shadow-[var(--gr-shadow-2)] max-w-[min(22rem,calc(100vw-1rem))] focus:outline-none";
|
|
45
|
+
export declare const popoverPanelBaseClass = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-popover)] text-[var(--gr-popover-fg)] shadow-[var(--gr-shadow-2)] max-w-[min(var(--gr-popover-max-width,22rem),calc(100vw-1rem))] focus:outline-none";
|
|
38
46
|
export declare function grPopoverPanelClass(size: GrPopoverSize, placement: Placement, extra?: string, padding?: GrPopoverPadding): string;
|
|
@@ -122,7 +122,7 @@ export declare function grSelectTriggerClass(options: {
|
|
|
122
122
|
state?: GrSelectState;
|
|
123
123
|
invalid?: boolean;
|
|
124
124
|
}): string;
|
|
125
|
-
export declare const grSelectPanelClasses = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-
|
|
125
|
+
export declare const grSelectPanelClasses = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-popover)] text-[var(--gr-popover-fg)] shadow-[var(--gr-shadow-2)] overflow-hidden";
|
|
126
126
|
export declare const selectOptionBaseClass = "rounded-[var(--gr-radius-md)] px-3 py-2 text-left text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]";
|
|
127
127
|
export declare const selectOptionLinkWidthClass = "block min-w-full w-max whitespace-nowrap";
|
|
128
128
|
export declare const selectOptionWidthClass = "w-full";
|
|
@@ -29,7 +29,7 @@ export declare function grTreeSelectClass(options: {
|
|
|
29
29
|
invalid: boolean;
|
|
30
30
|
disabled?: boolean;
|
|
31
31
|
}): string;
|
|
32
|
-
export declare const grTreeSelectPanelClass = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-
|
|
32
|
+
export declare const grTreeSelectPanelClass = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-popover)] text-[var(--gr-popover-fg)] shadow-[var(--gr-shadow-2)] overflow-hidden";
|
|
33
33
|
/**
|
|
34
34
|
* Строка состояния панели: загрузка и «нет данных». По центру и с двойным
|
|
35
35
|
* воздухом — тот же язык, что у `GrSelect`, `GrAutocomplete` и палитры команд.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Placement } from '@floating-ui/dom';
|
|
2
|
+
/**
|
|
3
|
+
* `transform-origin` для scale-анимации всплывающей панели.
|
|
4
|
+
*
|
|
5
|
+
* Ключ — `resolvedPlacement`, то есть положение **после** `flip`: если снизу не
|
|
6
|
+
* хватило места и панель перевернуло вверх, origin переворачивается вместе с
|
|
7
|
+
* ней. Координаты панели к этому моменту уже посчитал `useFloating`, здесь
|
|
8
|
+
* остаётся только направление роста относительно триггера.
|
|
9
|
+
*
|
|
10
|
+
* До выноса карта существовала копиями в `GrPopover` и `GrDropdown` — двенадцать
|
|
11
|
+
* записей, совпадавших дословно, вместе с комментарием об одном и том же.
|
|
12
|
+
*
|
|
13
|
+
* Отдельным модулем от поверхности намеренно: списки выбора берут поверхность,
|
|
14
|
+
* но своей анимации роста не имеют, и импорт соседа затащил бы им в чанк восемь
|
|
15
|
+
* классов, которыми они не пользуются. Гейт `src/__tests__/safelist.test.ts`
|
|
16
|
+
* назвал бы их поимённо — и был бы прав.
|
|
17
|
+
*
|
|
18
|
+
* Модуль безадресный: в `dist` он уезжает в общий чанк, который пресет не
|
|
19
|
+
* сканирует, поэтому каждый потребитель объявляет эти классы в своём `safelist.ts`.
|
|
20
|
+
*/
|
|
21
|
+
export declare const overlayOriginClassByPlacement: Record<Placement, string>;
|
|
22
|
+
export declare function overlayOriginClass(placement: Placement): string;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Общая поверхность всплывающей панели: радиус, рамка, фон, тень.
|
|
3
|
+
*
|
|
4
|
+
* До выноса шесть этих утилит были скопированы пять раз — у поповера,
|
|
5
|
+
* выпадающего меню и трёх списков выбора. Расходились бы молча: разница в одном
|
|
6
|
+
* токене видна только рядом с эталоном, а эталоны у компонентов свои.
|
|
7
|
+
*
|
|
8
|
+
* Фон — `--gr-popover`, и это не выбор из двух равных. Описание токена в
|
|
9
|
+
* `tokens/themes/*.json` — «Фон popover-, dropdown- и overlay-поверхностей», то
|
|
10
|
+
* есть он заведён ровно под этот случай; `--gr-card` — фон карточки. Четверо из
|
|
11
|
+
* пяти брали карточный, и значения совпадали, поэтому расхождение не
|
|
12
|
+
* проявлялось. Проявилось бы у первого, кто перекрасит `--gr-popover`, чтобы
|
|
13
|
+
* отличать всплывающие поверхности от карточек.
|
|
14
|
+
*
|
|
15
|
+
* Всё, что специфично для компонента, — поле, потолок ширины, `overflow` — он
|
|
16
|
+
* дописывает сам: это уже не поверхность, а его собственная раскладка.
|
|
17
|
+
*
|
|
18
|
+
* Модуль безадресный: в `dist` он уезжает в общий чанк, который пресет не
|
|
19
|
+
* сканирует, поэтому каждый потребитель объявляет эти классы в своём `safelist.ts`.
|
|
20
|
+
*/
|
|
21
|
+
export declare const overlayPanelSurfaceClass = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-popover)] text-[var(--gr-popover-fg)] shadow-[var(--gr-shadow-2)]";
|
package/dist/web-types.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
|
|
3
3
|
"name": "@feugene/granularity",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.34.0",
|
|
5
5
|
"framework": "vue",
|
|
6
6
|
"js-types-syntax": "typescript",
|
|
7
7
|
"description-markup": "markdown",
|
|
@@ -3819,7 +3819,7 @@
|
|
|
3819
3819
|
"slots": [
|
|
3820
3820
|
{
|
|
3821
3821
|
"name": "trigger",
|
|
3822
|
-
"description": "Триггер панели. `triggerProps` обязаны попасть на сам интерактивный элемент, а не на обёртку вокруг него: `aria-expanded` и `aria-controls` читаются с того узла, который получает
|
|
3822
|
+
"description": "Триггер панели. `triggerProps` обязаны попасть на сам интерактивный элемент, а не на обёртку вокруг него: `aria-expanded` и `aria-controls` читаются с того узла, который получает фокус, а клик приезжает вместе с ними."
|
|
3823
3823
|
},
|
|
3824
3824
|
{
|
|
3825
3825
|
"name": "content",
|
|
@@ -7128,6 +7128,15 @@
|
|
|
7128
7128
|
"type": "Placement | undefined"
|
|
7129
7129
|
}
|
|
7130
7130
|
},
|
|
7131
|
+
{
|
|
7132
|
+
"name": "block",
|
|
7133
|
+
"description": "Обёртка триггера занимает всю ширину родителя вместо того, чтобы обжимать содержимое. Нужно форм-контролам: обёртка `inline-block` схлопывается по содержимому, и `w-full` у самого триггера начинает резолвиться относительно неё, а не относительно поля. Контрол, объявивший себя во всю ширину, рисуется по содержимому — рядом с полем ввода это читается как сбитая вёрстка. Имя то же, что у `GrButton` и `GrSegmented`: в ядре это устоявшееся слово для «во всю ширину».",
|
|
7134
|
+
"default": "false",
|
|
7135
|
+
"value": {
|
|
7136
|
+
"kind": "expression",
|
|
7137
|
+
"type": "boolean | undefined"
|
|
7138
|
+
}
|
|
7139
|
+
},
|
|
7131
7140
|
{
|
|
7132
7141
|
"name": "padding",
|
|
7133
7142
|
"description": "Поле панели. `none` — содержимое рисует своё (меню, список опций).",
|
|
@@ -7147,11 +7156,11 @@
|
|
|
7147
7156
|
},
|
|
7148
7157
|
{
|
|
7149
7158
|
"name": "trigger",
|
|
7150
|
-
"description": "`manual` —
|
|
7159
|
+
"description": "Чем открывается панель. `manual` — только программно (через `v-model:open`): нужно контекстному меню и подтверждениям, где момент открытия решает потребитель. `hover` — по наведению, с задержками из `openDelay` и `closeDelay`; клик и клавиатура в этом режиме продолжают работать.",
|
|
7151
7160
|
"default": "\"click\"",
|
|
7152
7161
|
"value": {
|
|
7153
7162
|
"kind": "expression",
|
|
7154
|
-
"type": "\"click\" | \"manual\" | undefined"
|
|
7163
|
+
"type": "\"click\" | \"manual\" | \"hover\" | undefined"
|
|
7155
7164
|
}
|
|
7156
7165
|
},
|
|
7157
7166
|
{
|
|
@@ -7207,6 +7216,24 @@
|
|
|
7207
7216
|
"type": "boolean | undefined"
|
|
7208
7217
|
}
|
|
7209
7218
|
},
|
|
7219
|
+
{
|
|
7220
|
+
"name": "openDelay",
|
|
7221
|
+
"description": "Задержка открытия по наведению, мс. Обе задержки нужны, и каждая по своей причине: без `openDelay` панель выпрыгивает на любое пересечение курсором, без `closeDelay` её не удержать при переходе с триггера на панель — между ними зазор `offsetPx`.",
|
|
7222
|
+
"default": "120",
|
|
7223
|
+
"value": {
|
|
7224
|
+
"kind": "expression",
|
|
7225
|
+
"type": "number | undefined"
|
|
7226
|
+
}
|
|
7227
|
+
},
|
|
7228
|
+
{
|
|
7229
|
+
"name": "closeDelay",
|
|
7230
|
+
"description": "Задержка закрытия после ухода курсора, мс.",
|
|
7231
|
+
"default": "160",
|
|
7232
|
+
"value": {
|
|
7233
|
+
"kind": "expression",
|
|
7234
|
+
"type": "number | undefined"
|
|
7235
|
+
}
|
|
7236
|
+
},
|
|
7210
7237
|
{
|
|
7211
7238
|
"name": "closeOnContentClick",
|
|
7212
7239
|
"description": "Закрывать по клику внутри панели — удобно для меню, вредно для формы.",
|
|
@@ -7241,6 +7268,15 @@
|
|
|
7241
7268
|
"kind": "expression",
|
|
7242
7269
|
"type": "boolean | undefined"
|
|
7243
7270
|
}
|
|
7271
|
+
},
|
|
7272
|
+
{
|
|
7273
|
+
"name": "matchWidth",
|
|
7274
|
+
"description": "Брать ширину у триггера: `true` — точно его ширина, `'min'` — не уже его, дальше по содержимому. Панель у поля или у широкой кнопки, оказавшаяся уже своего триггера, читается как ошибка вёрстки. С потолком `--gr-popover-max-width` сочетается, а не спорит: ширину задаёт триггер, потолок её ограничивает — «шириной с триггер, но не шире читаемого». Поэтому это отдельный проп, а не значение одного перечисления вместе с потолком: оси независимы, и сочетание осмысленно.",
|
|
7275
|
+
"default": "false",
|
|
7276
|
+
"value": {
|
|
7277
|
+
"kind": "expression",
|
|
7278
|
+
"type": "boolean | \"min\" | undefined"
|
|
7279
|
+
}
|
|
7244
7280
|
}
|
|
7245
7281
|
],
|
|
7246
7282
|
"slots": [
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@feugene/granularity",
|
|
3
3
|
"description": "Granularity design system package with Vue 3 components, consumed via the `@feugene/unocss-preset-granular` preset.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.34.0",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Evgeniy Fureev",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-BTwYMQaz2.js","names":[],"sources":["../../src/components/GrPopover/safelist.ts","../../src/components/GrPopover/config.ts"],"sourcesContent":["import { flattenTransitionTokens, splitClassTokens } from '../shared/classTokens'\nimport { panelPopTransition } from '../shared/overlayTransition'\nimport { originClassByPlacement, panelSizes, panelSizesFlush, popoverPanelBaseClass } from './grPopoverStyles'\n\nexport const grPopoverSafelist = [...new Set([\n ...Object.values(panelSizes).flatMap(splitClassTokens),\n ...Object.values(panelSizesFlush).flatMap(splitClassTokens),\n ...Object.values(originClassByPlacement).flatMap(splitClassTokens),\n // Базовый класс живёт литералом в `grPopoverStyles.ts`, а такой хелпер на\n // сборке уезжает в общий чанк, которого скан не видит (см. gotchas.md §2).\n ...splitClassTokens(popoverPanelBaseClass),\n // Набор перехода панели общий на пять компонентов и живёт безадресным\n // модулем в `shared/`: в `dist` он лежит в общем чанке, который пресет не\n // сканирует, поэтому объявить его обязан каждый потребитель.\n ...flattenTransitionTokens(panelPopTransition),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grPopoverSafelist } from './safelist'\n\nexport const grPopoverConfig = defineGranularComponent(import.meta.url, {\n name: 'GrPopover',\n safelist: grPopoverSafelist,\n})\n"],"mappings":";;;;;AAIA,IAAa,oBAAoB,CAAC,mBAAG,IAAI,IAAI;CAC3C,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACrD,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CAGjE,GAAG,iBAAiB,qBAAqB;CAIzC,GAAG,wBAAwB,kBAAkB;AAC/C,CAAC,CAAC;;;ACXF,IAAa,kBAAkB,wBAAwB,OAAO,KAAK,KAAK;CACtE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-CPSxM7XE.js","names":[],"sources":["../../src/components/GrContextMenu/config.ts"],"sourcesContent":["import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nexport const grContextMenuConfig = defineGranularComponent(import.meta.url, {\n name: 'GrContextMenu',\n // Компонент рендерит и слой, и пункты: без обоих рёбер у потребителя,\n // выбравшего только контекстное меню, панель приедет без фона, а пункты — без цветов.\n dependencies: ['GrPopover', 'GrDropdownMenu'],\n})\n"],"mappings":";;AAEA,IAAa,sBAAsB,wBAAwB,OAAO,KAAK,KAAK;CAC1E,MAAM;CAGN,cAAc,CAAC,aAAa,gBAAgB;AAC9C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-T3-DMXYm.js","names":[],"sources":["../../src/components/GrTreeSelect/grTreeSelectStyles.ts","../../src/components/GrTreeSelect/safelist.ts","../../src/components/GrTreeSelect/config.ts"],"sourcesContent":["import type { GrControlState } from '../shared/sizes'\n\nimport type { GrInputSize } from '../GrInput'\n\nexport type GrTreeSelectState = GrControlState\n\nexport const sizeClassBySize: Record<GrInputSize, string> = {\n xs: 'h-7 px-2.5 text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'h-8 px-3 text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: 'h-10 px-3 text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]',\n lg: 'h-11 px-4 text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]',\n}\n\n/**\n * Горизонтальный отступ из `sizeClassBySize`, но числом: аддоны задают паддинг\n * инлайн-стилем, а он перекрывает класс — значение нужно обеим формам, и\n * расходиться им нельзя.\n */\nexport const paddingX: Record<GrInputSize, string> = {\n xs: '10px',\n sm: '12px',\n md: '12px',\n lg: '16px',\n}\n\n/** Ширина зоны шеврона/крестика справа (`pr-9` в классе триггера). */\nexport const trailingZoneWidth = '2.25rem'\n\nexport const borderClassByState: Record<GrTreeSelectState, string> = {\n default: 'border-[var(--gr-brd)]',\n success: 'border-[var(--gr-success)] focus-visible:ring-[var(--gr-success)]',\n warning: 'border-[var(--gr-warning)] focus-visible:ring-[var(--gr-warning)]',\n danger: 'border-[var(--gr-danger)] focus-visible:ring-[var(--gr-danger)]',\n}\n\n/**\n * Ошибка валидации красится своей ролью, а не декоративным тоном `danger`:\n * `state=\"danger\"` — это подсветка по решению разработчика, `invalid` — вердикт\n * валидации, и тема вправе развести их по цвету.\n */\nexport const invalidBorderClass = 'border-[var(--gr-invalid-brd)] focus-visible:ring-[var(--gr-invalid-ring)]'\n\n/**\n * Disabled красится фоном и цветом текста, а не прозрачностью: `opacity`\n * разбавляет выверенные на AA токены и роняет контраст подписи.\n */\nexport const shellEnabledClass = 'bg-[var(--gr-bg)] text-[var(--gr-fg)]'\nexport const shellDisabledClass = 'bg-[var(--gr-muted)] text-[var(--gr-muted-fg)] cursor-not-allowed'\n\nexport function grTreeSelectClass(options: {\n size: GrInputSize\n state: GrTreeSelectState\n invalid: boolean\n disabled?: boolean\n}): string {\n return [\n sizeClassBySize[options.size],\n 'pr-9',\n options.disabled ? shellDisabledClass : shellEnabledClass,\n options.invalid ? invalidBorderClass : borderClassByState[options.state],\n ].join(' ')\n}\n\nexport const grTreeSelectPanelClass = 'rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-card)] text-[var(--gr-card-fg)] shadow-[var(--gr-shadow-2)] overflow-hidden'\n\n/**\n * Строка состояния панели: загрузка и «нет данных». По центру и с двойным\n * воздухом — тот же язык, что у `GrSelect`, `GrAutocomplete` и палитры команд.\n * Слева она расходилась с содержимым дерева на паддинг скроллера.\n */\nexport const grTreeSelectStateClass = 'flex items-center justify-center gap-2 px-3 py-4 text-center text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] text-[var(--gr-muted-fg)]'\n","import { flattenTransitionTokens, splitClassTokens } from '../shared/classTokens'\nimport { panelPopTransition } from '../shared/overlayTransition'\nimport {\n borderClassByState,\n grTreeSelectPanelClass,\n grTreeSelectStateClass,\n invalidBorderClass,\n shellDisabledClass,\n shellEnabledClass,\n sizeClassBySize,\n} from './grTreeSelectStyles'\n\nexport const grTreeSelectSafelist = [...new Set([\n ...Object.values(sizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(borderClassByState).flatMap(splitClassTokens),\n ...splitClassTokens(invalidBorderClass),\n 'pr-9',\n ...splitClassTokens(shellEnabledClass),\n ...splitClassTokens(shellDisabledClass),\n ...splitClassTokens(grTreeSelectPanelClass),\n ...splitClassTokens(grTreeSelectStateClass),\n // Набор перехода панели общий на пять компонентов и живёт безадресным\n // модулем в `shared/`: в `dist` он лежит в общем чанке, который пресет не\n // сканирует, поэтому объявить его обязан каждый потребитель.\n ...flattenTransitionTokens(panelPopTransition),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grTreeSelectSafelist } from './safelist'\n\nexport const grTreeSelectConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTreeSelect',\n safelist: grTreeSelectSafelist,\n dependencies: ['GrInput', 'GrTree'],\n})\n"],"mappings":";;;;AAMA,IAAa,kBAA+C;CAC1D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;AAOA,IAAa,WAAwC;CACnD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,oBAAoB;AAEjC,IAAa,qBAAwD;CACnE,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;AACV;;;;;;AAOA,IAAa,qBAAqB;;;;;AAMlC,IAAa,oBAAoB;AACjC,IAAa,qBAAqB;AAElC,SAAgB,kBAAkB,SAKvB;CACT,OAAO;EACL,gBAAgB,QAAQ;EACxB;EACA,QAAQ,WAAW,qBAAqB;EACxC,QAAQ,UAAU,qBAAqB,mBAAmB,QAAQ;CACpE,CAAC,CAAC,KAAK,GAAG;AACZ;AAEA,IAAa,yBAAyB;;;;;;AAOtC,IAAa,yBAAyB;;;AC1DtC,IAAa,uBAAuB,CAAC,mBAAG,IAAI,IAAI;CAC9C,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,GAAG,iBAAiB,kBAAkB;CACtC;CACA,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,sBAAsB;CAI1C,GAAG,wBAAwB,kBAAkB;AAC/C,CAAC,CAAC;;;ACrBF,IAAa,qBAAqB,wBAAwB,OAAO,KAAK,KAAK;CACzE,MAAM;CACN,UAAU;CACV,cAAc,CAAC,WAAW,QAAQ;AACpC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-uzUuosv7.js","names":[],"sources":["../../src/components/GrDropdown/safelist.ts","../../src/components/GrDropdown/config.ts"],"sourcesContent":["import { flattenTransitionTokens, splitClassTokens } from '../shared/classTokens'\nimport { panelPopTransition } from '../shared/overlayTransition'\nimport {\n dropdownContentBaseClass,\n originClassByPlacement,\n} from './grDropdownStyles'\n\n// И динамические токены (`resolvedPlacement`), и литералы отделки панели:\n// `grDropdownStyles.ts` уезжает в общий `dist/chunks/`, вне области скана\n// компонента — гейт `src/__tests__/safelist.test.ts`.\nexport const grDropdownSafelist = [...new Set([\n ...Object.values(originClassByPlacement).flatMap(v => splitClassTokens(v ?? '')),\n ...splitClassTokens(dropdownContentBaseClass),\n // Набор перехода панели общий на пять компонентов и живёт безадресным\n // модулем в `shared/`: в `dist` он лежит в общем чанке, который пресет не\n // сканирует, поэтому объявить его обязан каждый потребитель.\n ...flattenTransitionTokens(panelPopTransition),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDropdownSafelist } from './safelist'\n\nexport const grDropdownConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDropdown',\n safelist: grDropdownSafelist,\n})\n"],"mappings":";;;;;AAUA,IAAa,qBAAqB,CAAC,mBAAG,IAAI,IAAI;CAC5C,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,SAAQ,MAAK,iBAAiB,KAAK,EAAE,CAAC;CAC/E,GAAG,iBAAiB,wBAAwB;CAI5C,GAAG,wBAAwB,kBAAkB;AAC/C,CAAC,CAAC;;;ACbF,IAAa,mBAAmB,wBAAwB,OAAO,KAAK,KAAK;CACvE,MAAM;CACN,UAAU;AACZ,CAAC"}
|