@hh.ru/magritte-ui-swipe 8.2.5 → 8.2.6
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/Swipe.js +1 -1
- package/Swipe.js.map +1 -1
- package/SwipeGroup.js.map +1 -1
- package/context.js.map +1 -1
- package/index.css +289 -289
- package/package.json +11 -11
package/Swipe.js
CHANGED
|
@@ -11,7 +11,7 @@ import { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';
|
|
|
11
11
|
import { Layer } from '@hh.ru/magritte-ui-layer';
|
|
12
12
|
import { SwipeContext } from './context.js';
|
|
13
13
|
|
|
14
|
-
var styles = {"text":"magritte-text___gUsfc_8-2-5","text_max-lines":"magritte-text_max-lines___foe9-_8-2-5","textMaxLines":"magritte-text_max-lines___foe9-_8-2-5","text-ellipsis":"magritte-text-ellipsis___oTw5J_8-2-5","textEllipsis":"magritte-text-ellipsis___oTw5J_8-2-5","text-dynamic":"magritte-text-dynamic___KzitV_8-2-5","textDynamic":"magritte-text-dynamic___KzitV_8-2-5","text-dynamic_stretched":"magritte-text-dynamic_stretched___hv3Th_8-2-5","textDynamicStretched":"magritte-text-dynamic_stretched___hv3Th_8-2-5","text_style-primary":"magritte-text_style-primary___vYlpl_8-2-5","textStylePrimary":"magritte-text_style-primary___vYlpl_8-2-5","text-dynamic-disabled":"magritte-text-dynamic-disabled___M1GFt_8-2-5","textDynamicDisabled":"magritte-text-dynamic-disabled___M1GFt_8-2-5","text_style-secondary":"magritte-text_style-secondary___qb-4O_8-2-5","textStyleSecondary":"magritte-text_style-secondary___qb-4O_8-2-5","text_style-tertiary":"magritte-text_style-tertiary___atZvg_8-2-5","textStyleTertiary":"magritte-text_style-tertiary___atZvg_8-2-5","text_style-accent":"magritte-text_style-accent___JDNe4_8-2-5","textStyleAccent":"magritte-text_style-accent___JDNe4_8-2-5","text_style-accent-secondary":"magritte-text_style-accent-secondary___JM6z5_8-2-5","textStyleAccentSecondary":"magritte-text_style-accent-secondary___JM6z5_8-2-5","text_style-positive":"magritte-text_style-positive___OjJIB_8-2-5","textStylePositive":"magritte-text_style-positive___OjJIB_8-2-5","text_style-positive-secondary":"magritte-text_style-positive-secondary___LkPe1_8-2-5","textStylePositiveSecondary":"magritte-text_style-positive-secondary___LkPe1_8-2-5","text_style-negative":"magritte-text_style-negative___wBLmp_8-2-5","textStyleNegative":"magritte-text_style-negative___wBLmp_8-2-5","text_style-negative-secondary":"magritte-text_style-negative-secondary___CO58y_8-2-5","textStyleNegativeSecondary":"magritte-text_style-negative-secondary___CO58y_8-2-5","text_style-warning":"magritte-text_style-warning___23C3Y_8-2-5","textStyleWarning":"magritte-text_style-warning___23C3Y_8-2-5","text_style-warning-secondary":"magritte-text_style-warning-secondary___ZJ3uf_8-2-5","textStyleWarningSecondary":"magritte-text_style-warning-secondary___ZJ3uf_8-2-5","text_style-special":"magritte-text_style-special___LaqKY_8-2-5","textStyleSpecial":"magritte-text_style-special___LaqKY_8-2-5","text_style-special-secondary":"magritte-text_style-special-secondary___-whB-_8-2-5","textStyleSpecialSecondary":"magritte-text_style-special-secondary___-whB-_8-2-5","text_style-contrast":"magritte-text_style-contrast___Bx24w_8-2-5","textStyleContrast":"magritte-text_style-contrast___Bx24w_8-2-5","text_style-contrast-secondary":"magritte-text_style-contrast-secondary___xMS2f_8-2-5","textStyleContrastSecondary":"magritte-text_style-contrast-secondary___xMS2f_8-2-5","text_typography-title-1-semibold":"magritte-text_typography-title-1-semibold___WDZXM_8-2-5","textTypographyTitle1Semibold":"magritte-text-typography-title-1-semibold___RE-5E_8-2-5","text_typography-title-2-semibold":"magritte-text_typography-title-2-semibold___4PvYn_8-2-5","textTypographyTitle2Semibold":"magritte-text-typography-title-2-semibold___r-gyn_8-2-5","text_typography-title-3-semibold":"magritte-text_typography-title-3-semibold___E7pmd_8-2-5","textTypographyTitle3Semibold":"magritte-text-typography-title-3-semibold___AxOn9_8-2-5","text_typography-title-4-semibold":"magritte-text_typography-title-4-semibold___u-8Kd_8-2-5","textTypographyTitle4Semibold":"magritte-text-typography-title-4-semibold___4FOf2_8-2-5","text_typography-title-5-semibold":"magritte-text_typography-title-5-semibold___PRTQc_8-2-5","textTypographyTitle5Semibold":"magritte-text-typography-title-5-semibold___ayTa0_8-2-5","text_typography-subtitle-1-semibold":"magritte-text_typography-subtitle-1-semibold___TNYKE_8-2-5","textTypographySubtitle1Semibold":"magritte-text_typography-subtitle-1-semibold___TNYKE_8-2-5","text_typography-subtitle-2-semibold":"magritte-text_typography-subtitle-2-semibold___8GJr9_8-2-5","textTypographySubtitle2Semibold":"magritte-text_typography-subtitle-2-semibold___8GJr9_8-2-5","text_typography-subtitle-3-semibold":"magritte-text_typography-subtitle-3-semibold___scHMl_8-2-5","textTypographySubtitle3Semibold":"magritte-text_typography-subtitle-3-semibold___scHMl_8-2-5","text_typography-subtitle-4-semibold":"magritte-text_typography-subtitle-4-semibold___Yr4Bt_8-2-5","textTypographySubtitle4Semibold":"magritte-text_typography-subtitle-4-semibold___Yr4Bt_8-2-5","text_typography-label-1-regular":"magritte-text_typography-label-1-regular___JMO56_8-2-5","textTypographyLabel1Regular":"magritte-text_typography-label-1-regular___JMO56_8-2-5","text_typography-label-2-regular":"magritte-text_typography-label-2-regular___7gS1P_8-2-5","textTypographyLabel2Regular":"magritte-text_typography-label-2-regular___7gS1P_8-2-5","text_typography-label-3-regular":"magritte-text_typography-label-3-regular___DogGv_8-2-5","textTypographyLabel3Regular":"magritte-text_typography-label-3-regular___DogGv_8-2-5","text_typography-label-4-regular":"magritte-text_typography-label-4-regular___TIPoS_8-2-5","textTypographyLabel4Regular":"magritte-text_typography-label-4-regular___TIPoS_8-2-5","text_typography-label-5-regular":"magritte-text_typography-label-5-regular___y55-P_8-2-5","textTypographyLabel5Regular":"magritte-text_typography-label-5-regular___y55-P_8-2-5","text_typography-paragraph-1-regular":"magritte-text_typography-paragraph-1-regular___ZvHBC_8-2-5","textTypographyParagraph1Regular":"magritte-text_typography-paragraph-1-regular___ZvHBC_8-2-5","text_typography-paragraph-2-regular":"magritte-text_typography-paragraph-2-regular___ndKyc_8-2-5","textTypographyParagraph2Regular":"magritte-text_typography-paragraph-2-regular___ndKyc_8-2-5","text_typography-paragraph-3-regular":"magritte-text_typography-paragraph-3-regular___g0oZF_8-2-5","textTypographyParagraph3Regular":"magritte-text_typography-paragraph-3-regular___g0oZF_8-2-5","text_typography-paragraph-4-regular":"magritte-text_typography-paragraph-4-regular___Iy3Zy_8-2-5","textTypographyParagraph4Regular":"magritte-text_typography-paragraph-4-regular___Iy3Zy_8-2-5","text_typography-custom-1-semibold":"magritte-text_typography-custom-1-semibold___Pv6Lp_8-2-5","textTypographyCustom1Semibold":"magritte-text_typography-custom-1-semibold___Pv6Lp_8-2-5","text_typography-custom-2-semibold":"magritte-text_typography-custom-2-semibold___UP1hj_8-2-5","textTypographyCustom2Semibold":"magritte-text_typography-custom-2-semibold___UP1hj_8-2-5","text_typography-custom-3-semibold":"magritte-text_typography-custom-3-semibold___6yO4m_8-2-5","textTypographyCustom3Semibold":"magritte-text_typography-custom-3-semibold___6yO4m_8-2-5","text_typography-custom-4-semibold":"magritte-text_typography-custom-4-semibold___NEahp_8-2-5","textTypographyCustom4Semibold":"magritte-text_typography-custom-4-semibold___NEahp_8-2-5","text_typography-custom-5-semibold":"magritte-text_typography-custom-5-semibold___-UJfV_8-2-5","textTypographyCustom5Semibold":"magritte-text_typography-custom-5-semibold___-UJfV_8-2-5","text_typography-custom-1-italic":"magritte-text_typography-custom-1-italic___-CpMs_8-2-5","textTypographyCustom1Italic":"magritte-text_typography-custom-1-italic___-CpMs_8-2-5","text_typography-custom-2-italic":"magritte-text_typography-custom-2-italic___SvOG4_8-2-5","textTypographyCustom2Italic":"magritte-text_typography-custom-2-italic___SvOG4_8-2-5","text_typography-custom-3-italic":"magritte-text_typography-custom-3-italic___-g0na_8-2-5","textTypographyCustom3Italic":"magritte-text_typography-custom-3-italic___-g0na_8-2-5","text_typography-custom-4-italic":"magritte-text_typography-custom-4-italic___gOGey_8-2-5","textTypographyCustom4Italic":"magritte-text_typography-custom-4-italic___gOGey_8-2-5","text_typography-custom-5-italic":"magritte-text_typography-custom-5-italic___VR9wy_8-2-5","textTypographyCustom5Italic":"magritte-text_typography-custom-5-italic___VR9wy_8-2-5","text_typography-custom-1-medium":"magritte-text_typography-custom-1-medium___hik0e_8-2-5","textTypographyCustom1Medium":"magritte-text_typography-custom-1-medium___hik0e_8-2-5","text_typography-custom-2-medium":"magritte-text_typography-custom-2-medium___-f6Sh_8-2-5","textTypographyCustom2Medium":"magritte-text_typography-custom-2-medium___-f6Sh_8-2-5","text_typography-custom-3-medium":"magritte-text_typography-custom-3-medium___pLvIb_8-2-5","textTypographyCustom3Medium":"magritte-text_typography-custom-3-medium___pLvIb_8-2-5","text_typography-custom-4-medium":"magritte-text_typography-custom-4-medium___zZteM_8-2-5","textTypographyCustom4Medium":"magritte-text_typography-custom-4-medium___zZteM_8-2-5","text_typography-custom-5-medium":"magritte-text_typography-custom-5-medium___gW1Y8_8-2-5","textTypographyCustom5Medium":"magritte-text_typography-custom-5-medium___gW1Y8_8-2-5","text_typography-display-1-display":"magritte-text_typography-display-1-display___74lcX_8-2-5","textTypographyDisplay1Display":"magritte-text_typography-display-1-display___74lcX_8-2-5","text_typography-display-2-display":"magritte-text_typography-display-2-display___naML1_8-2-5","textTypographyDisplay2Display":"magritte-text_typography-display-2-display___naML1_8-2-5","text_typography-display-3-display":"magritte-text_typography-display-3-display___EYcBk_8-2-5","textTypographyDisplay3Display":"magritte-text_typography-display-3-display___EYcBk_8-2-5","text_typography-display-4-display":"magritte-text_typography-display-4-display___2oLzQ_8-2-5","textTypographyDisplay4Display":"magritte-text_typography-display-4-display___2oLzQ_8-2-5","text_typography-display-5-display":"magritte-text_typography-display-5-display___S5wBT_8-2-5","textTypographyDisplay5Display":"magritte-text_typography-display-5-display___S5wBT_8-2-5","text_typography-display-6-display":"magritte-text_typography-display-6-display___mhZQp_8-2-5","textTypographyDisplay6Display":"magritte-text_typography-display-6-display___mhZQp_8-2-5","text_typography-display-7-display":"magritte-text_typography-display-7-display___4O6kW_8-2-5","textTypographyDisplay7Display":"magritte-text_typography-display-7-display___4O6kW_8-2-5","text_typography-display-8-display":"magritte-text_typography-display-8-display___HkNzC_8-2-5","textTypographyDisplay8Display":"magritte-text_typography-display-8-display___HkNzC_8-2-5","text-typography-title-1-semibold":"magritte-text-typography-title-1-semibold___RE-5E_8-2-5","text-typography-title-2-semibold":"magritte-text-typography-title-2-semibold___r-gyn_8-2-5","text-typography-title-3-semibold":"magritte-text-typography-title-3-semibold___AxOn9_8-2-5","text-typography-title-4-semibold":"magritte-text-typography-title-4-semibold___4FOf2_8-2-5","text-typography-title-5-semibold":"magritte-text-typography-title-5-semibold___ayTa0_8-2-5","fixed-container":"magritte-fixed-container___gruvI_8-2-5","fixedContainer":"magritte-fixed-container___gruvI_8-2-5","swipe-container":"magritte-swipe-container___HCz0Y_8-2-5","swipeContainer":"magritte-swipe-container___HCz0Y_8-2-5","content":"magritte-content___oKEcs_8-2-5","buttons":"magritte-buttons___PHNdL_8-2-5","swipe-container_in-progress":"magritte-swipe-container_in-progress___D4pLw_8-2-5","swipeContainerInProgress":"magritte-swipe-container_in-progress___D4pLw_8-2-5","left-buttons-animation":"magritte-left-buttons-animation___KnKbA_8-2-5","leftButtonsAnimation":"magritte-left-buttons-animation___KnKbA_8-2-5","right-buttons-animation":"magritte-right-buttons-animation___Wgsss_8-2-5","rightButtonsAnimation":"magritte-right-buttons-animation___Wgsss_8-2-5","button-wrapper":"magritte-button-wrapper___fp3-5_8-2-5","buttonWrapper":"magritte-button-wrapper___fp3-5_8-2-5","button-wrapper-hide":"magritte-button-wrapper-hide___MN7-s_8-2-5","buttonWrapperHide":"magritte-button-wrapper-hide___MN7-s_8-2-5","button-wrapper-grow":"magritte-button-wrapper-grow___-hbrz_8-2-5","buttonWrapperGrow":"magritte-button-wrapper-grow___-hbrz_8-2-5","button":"magritte-button___jZvyY_8-2-5","button-grow":"magritte-button-grow___IT4MK_8-2-5","buttonGrow":"magritte-button-grow___IT4MK_8-2-5","gap":"magritte-gap___3z9to_8-2-5","button-content":"magritte-button-content___hlzd-_8-2-5","buttonContent":"magritte-button-content___hlzd-_8-2-5","button-content-column":"magritte-button-content-column___48Tzo_8-2-5","buttonContentColumn":"magritte-button-content-column___48Tzo_8-2-5","button-label":"magritte-button-label___l03VO_8-2-5","buttonLabel":"magritte-button-label___l03VO_8-2-5","button_style-neutral":"magritte-button_style-neutral___1yyqh_8-2-5","buttonStyleNeutral":"magritte-button_style-neutral___1yyqh_8-2-5","button_style-accent":"magritte-button_style-accent___L9krS_8-2-5","buttonStyleAccent":"magritte-button_style-accent___L9krS_8-2-5","button_style-positive":"magritte-button_style-positive___2pgae_8-2-5","buttonStylePositive":"magritte-button_style-positive___2pgae_8-2-5","button_style-negative":"magritte-button_style-negative___UClE4_8-2-5","buttonStyleNegative":"magritte-button_style-negative___UClE4_8-2-5","button_style-special":"magritte-button_style-special___sGvAc_8-2-5","buttonStyleSpecial":"magritte-button_style-special___sGvAc_8-2-5","button_style-warning":"magritte-button_style-warning___5bEK0_8-2-5","buttonStyleWarning":"magritte-button_style-warning___5bEK0_8-2-5","icon-wrapper":"magritte-icon-wrapper___0xJZX_8-2-5","iconWrapper":"magritte-icon-wrapper___0xJZX_8-2-5"};
|
|
14
|
+
var styles = {"text":"magritte-text___gUsfc_8-2-6","text_max-lines":"magritte-text_max-lines___foe9-_8-2-6","textMaxLines":"magritte-text_max-lines___foe9-_8-2-6","text-ellipsis":"magritte-text-ellipsis___oTw5J_8-2-6","textEllipsis":"magritte-text-ellipsis___oTw5J_8-2-6","text-dynamic":"magritte-text-dynamic___KzitV_8-2-6","textDynamic":"magritte-text-dynamic___KzitV_8-2-6","text-dynamic_stretched":"magritte-text-dynamic_stretched___hv3Th_8-2-6","textDynamicStretched":"magritte-text-dynamic_stretched___hv3Th_8-2-6","text_style-primary":"magritte-text_style-primary___vYlpl_8-2-6","textStylePrimary":"magritte-text_style-primary___vYlpl_8-2-6","text-dynamic-disabled":"magritte-text-dynamic-disabled___M1GFt_8-2-6","textDynamicDisabled":"magritte-text-dynamic-disabled___M1GFt_8-2-6","text_style-secondary":"magritte-text_style-secondary___qb-4O_8-2-6","textStyleSecondary":"magritte-text_style-secondary___qb-4O_8-2-6","text_style-tertiary":"magritte-text_style-tertiary___atZvg_8-2-6","textStyleTertiary":"magritte-text_style-tertiary___atZvg_8-2-6","text_style-accent":"magritte-text_style-accent___JDNe4_8-2-6","textStyleAccent":"magritte-text_style-accent___JDNe4_8-2-6","text_style-accent-secondary":"magritte-text_style-accent-secondary___JM6z5_8-2-6","textStyleAccentSecondary":"magritte-text_style-accent-secondary___JM6z5_8-2-6","text_style-positive":"magritte-text_style-positive___OjJIB_8-2-6","textStylePositive":"magritte-text_style-positive___OjJIB_8-2-6","text_style-positive-secondary":"magritte-text_style-positive-secondary___LkPe1_8-2-6","textStylePositiveSecondary":"magritte-text_style-positive-secondary___LkPe1_8-2-6","text_style-negative":"magritte-text_style-negative___wBLmp_8-2-6","textStyleNegative":"magritte-text_style-negative___wBLmp_8-2-6","text_style-negative-secondary":"magritte-text_style-negative-secondary___CO58y_8-2-6","textStyleNegativeSecondary":"magritte-text_style-negative-secondary___CO58y_8-2-6","text_style-warning":"magritte-text_style-warning___23C3Y_8-2-6","textStyleWarning":"magritte-text_style-warning___23C3Y_8-2-6","text_style-warning-secondary":"magritte-text_style-warning-secondary___ZJ3uf_8-2-6","textStyleWarningSecondary":"magritte-text_style-warning-secondary___ZJ3uf_8-2-6","text_style-special":"magritte-text_style-special___LaqKY_8-2-6","textStyleSpecial":"magritte-text_style-special___LaqKY_8-2-6","text_style-special-secondary":"magritte-text_style-special-secondary___-whB-_8-2-6","textStyleSpecialSecondary":"magritte-text_style-special-secondary___-whB-_8-2-6","text_style-contrast":"magritte-text_style-contrast___Bx24w_8-2-6","textStyleContrast":"magritte-text_style-contrast___Bx24w_8-2-6","text_style-contrast-secondary":"magritte-text_style-contrast-secondary___xMS2f_8-2-6","textStyleContrastSecondary":"magritte-text_style-contrast-secondary___xMS2f_8-2-6","text_typography-title-1-semibold":"magritte-text_typography-title-1-semibold___WDZXM_8-2-6","textTypographyTitle1Semibold":"magritte-text-typography-title-1-semibold___RE-5E_8-2-6","text_typography-title-2-semibold":"magritte-text_typography-title-2-semibold___4PvYn_8-2-6","textTypographyTitle2Semibold":"magritte-text-typography-title-2-semibold___r-gyn_8-2-6","text_typography-title-3-semibold":"magritte-text_typography-title-3-semibold___E7pmd_8-2-6","textTypographyTitle3Semibold":"magritte-text-typography-title-3-semibold___AxOn9_8-2-6","text_typography-title-4-semibold":"magritte-text_typography-title-4-semibold___u-8Kd_8-2-6","textTypographyTitle4Semibold":"magritte-text-typography-title-4-semibold___4FOf2_8-2-6","text_typography-title-5-semibold":"magritte-text_typography-title-5-semibold___PRTQc_8-2-6","textTypographyTitle5Semibold":"magritte-text-typography-title-5-semibold___ayTa0_8-2-6","text_typography-subtitle-1-semibold":"magritte-text_typography-subtitle-1-semibold___TNYKE_8-2-6","textTypographySubtitle1Semibold":"magritte-text_typography-subtitle-1-semibold___TNYKE_8-2-6","text_typography-subtitle-2-semibold":"magritte-text_typography-subtitle-2-semibold___8GJr9_8-2-6","textTypographySubtitle2Semibold":"magritte-text_typography-subtitle-2-semibold___8GJr9_8-2-6","text_typography-subtitle-3-semibold":"magritte-text_typography-subtitle-3-semibold___scHMl_8-2-6","textTypographySubtitle3Semibold":"magritte-text_typography-subtitle-3-semibold___scHMl_8-2-6","text_typography-subtitle-4-semibold":"magritte-text_typography-subtitle-4-semibold___Yr4Bt_8-2-6","textTypographySubtitle4Semibold":"magritte-text_typography-subtitle-4-semibold___Yr4Bt_8-2-6","text_typography-label-1-regular":"magritte-text_typography-label-1-regular___JMO56_8-2-6","textTypographyLabel1Regular":"magritte-text_typography-label-1-regular___JMO56_8-2-6","text_typography-label-2-regular":"magritte-text_typography-label-2-regular___7gS1P_8-2-6","textTypographyLabel2Regular":"magritte-text_typography-label-2-regular___7gS1P_8-2-6","text_typography-label-3-regular":"magritte-text_typography-label-3-regular___DogGv_8-2-6","textTypographyLabel3Regular":"magritte-text_typography-label-3-regular___DogGv_8-2-6","text_typography-label-4-regular":"magritte-text_typography-label-4-regular___TIPoS_8-2-6","textTypographyLabel4Regular":"magritte-text_typography-label-4-regular___TIPoS_8-2-6","text_typography-label-5-regular":"magritte-text_typography-label-5-regular___y55-P_8-2-6","textTypographyLabel5Regular":"magritte-text_typography-label-5-regular___y55-P_8-2-6","text_typography-paragraph-1-regular":"magritte-text_typography-paragraph-1-regular___ZvHBC_8-2-6","textTypographyParagraph1Regular":"magritte-text_typography-paragraph-1-regular___ZvHBC_8-2-6","text_typography-paragraph-2-regular":"magritte-text_typography-paragraph-2-regular___ndKyc_8-2-6","textTypographyParagraph2Regular":"magritte-text_typography-paragraph-2-regular___ndKyc_8-2-6","text_typography-paragraph-3-regular":"magritte-text_typography-paragraph-3-regular___g0oZF_8-2-6","textTypographyParagraph3Regular":"magritte-text_typography-paragraph-3-regular___g0oZF_8-2-6","text_typography-paragraph-4-regular":"magritte-text_typography-paragraph-4-regular___Iy3Zy_8-2-6","textTypographyParagraph4Regular":"magritte-text_typography-paragraph-4-regular___Iy3Zy_8-2-6","text_typography-custom-1-semibold":"magritte-text_typography-custom-1-semibold___Pv6Lp_8-2-6","textTypographyCustom1Semibold":"magritte-text_typography-custom-1-semibold___Pv6Lp_8-2-6","text_typography-custom-2-semibold":"magritte-text_typography-custom-2-semibold___UP1hj_8-2-6","textTypographyCustom2Semibold":"magritte-text_typography-custom-2-semibold___UP1hj_8-2-6","text_typography-custom-3-semibold":"magritte-text_typography-custom-3-semibold___6yO4m_8-2-6","textTypographyCustom3Semibold":"magritte-text_typography-custom-3-semibold___6yO4m_8-2-6","text_typography-custom-4-semibold":"magritte-text_typography-custom-4-semibold___NEahp_8-2-6","textTypographyCustom4Semibold":"magritte-text_typography-custom-4-semibold___NEahp_8-2-6","text_typography-custom-5-semibold":"magritte-text_typography-custom-5-semibold___-UJfV_8-2-6","textTypographyCustom5Semibold":"magritte-text_typography-custom-5-semibold___-UJfV_8-2-6","text_typography-custom-1-italic":"magritte-text_typography-custom-1-italic___-CpMs_8-2-6","textTypographyCustom1Italic":"magritte-text_typography-custom-1-italic___-CpMs_8-2-6","text_typography-custom-2-italic":"magritte-text_typography-custom-2-italic___SvOG4_8-2-6","textTypographyCustom2Italic":"magritte-text_typography-custom-2-italic___SvOG4_8-2-6","text_typography-custom-3-italic":"magritte-text_typography-custom-3-italic___-g0na_8-2-6","textTypographyCustom3Italic":"magritte-text_typography-custom-3-italic___-g0na_8-2-6","text_typography-custom-4-italic":"magritte-text_typography-custom-4-italic___gOGey_8-2-6","textTypographyCustom4Italic":"magritte-text_typography-custom-4-italic___gOGey_8-2-6","text_typography-custom-5-italic":"magritte-text_typography-custom-5-italic___VR9wy_8-2-6","textTypographyCustom5Italic":"magritte-text_typography-custom-5-italic___VR9wy_8-2-6","text_typography-custom-1-medium":"magritte-text_typography-custom-1-medium___hik0e_8-2-6","textTypographyCustom1Medium":"magritte-text_typography-custom-1-medium___hik0e_8-2-6","text_typography-custom-2-medium":"magritte-text_typography-custom-2-medium___-f6Sh_8-2-6","textTypographyCustom2Medium":"magritte-text_typography-custom-2-medium___-f6Sh_8-2-6","text_typography-custom-3-medium":"magritte-text_typography-custom-3-medium___pLvIb_8-2-6","textTypographyCustom3Medium":"magritte-text_typography-custom-3-medium___pLvIb_8-2-6","text_typography-custom-4-medium":"magritte-text_typography-custom-4-medium___zZteM_8-2-6","textTypographyCustom4Medium":"magritte-text_typography-custom-4-medium___zZteM_8-2-6","text_typography-custom-5-medium":"magritte-text_typography-custom-5-medium___gW1Y8_8-2-6","textTypographyCustom5Medium":"magritte-text_typography-custom-5-medium___gW1Y8_8-2-6","text_typography-display-1-display":"magritte-text_typography-display-1-display___74lcX_8-2-6","textTypographyDisplay1Display":"magritte-text_typography-display-1-display___74lcX_8-2-6","text_typography-display-2-display":"magritte-text_typography-display-2-display___naML1_8-2-6","textTypographyDisplay2Display":"magritte-text_typography-display-2-display___naML1_8-2-6","text_typography-display-3-display":"magritte-text_typography-display-3-display___EYcBk_8-2-6","textTypographyDisplay3Display":"magritte-text_typography-display-3-display___EYcBk_8-2-6","text_typography-display-4-display":"magritte-text_typography-display-4-display___2oLzQ_8-2-6","textTypographyDisplay4Display":"magritte-text_typography-display-4-display___2oLzQ_8-2-6","text_typography-display-5-display":"magritte-text_typography-display-5-display___S5wBT_8-2-6","textTypographyDisplay5Display":"magritte-text_typography-display-5-display___S5wBT_8-2-6","text_typography-display-6-display":"magritte-text_typography-display-6-display___mhZQp_8-2-6","textTypographyDisplay6Display":"magritte-text_typography-display-6-display___mhZQp_8-2-6","text_typography-display-7-display":"magritte-text_typography-display-7-display___4O6kW_8-2-6","textTypographyDisplay7Display":"magritte-text_typography-display-7-display___4O6kW_8-2-6","text_typography-display-8-display":"magritte-text_typography-display-8-display___HkNzC_8-2-6","textTypographyDisplay8Display":"magritte-text_typography-display-8-display___HkNzC_8-2-6","text-typography-title-1-semibold":"magritte-text-typography-title-1-semibold___RE-5E_8-2-6","text-typography-title-2-semibold":"magritte-text-typography-title-2-semibold___r-gyn_8-2-6","text-typography-title-3-semibold":"magritte-text-typography-title-3-semibold___AxOn9_8-2-6","text-typography-title-4-semibold":"magritte-text-typography-title-4-semibold___4FOf2_8-2-6","text-typography-title-5-semibold":"magritte-text-typography-title-5-semibold___ayTa0_8-2-6","fixed-container":"magritte-fixed-container___gruvI_8-2-6","fixedContainer":"magritte-fixed-container___gruvI_8-2-6","swipe-container":"magritte-swipe-container___HCz0Y_8-2-6","swipeContainer":"magritte-swipe-container___HCz0Y_8-2-6","content":"magritte-content___oKEcs_8-2-6","buttons":"magritte-buttons___PHNdL_8-2-6","swipe-container_in-progress":"magritte-swipe-container_in-progress___D4pLw_8-2-6","swipeContainerInProgress":"magritte-swipe-container_in-progress___D4pLw_8-2-6","left-buttons-animation":"magritte-left-buttons-animation___KnKbA_8-2-6","leftButtonsAnimation":"magritte-left-buttons-animation___KnKbA_8-2-6","right-buttons-animation":"magritte-right-buttons-animation___Wgsss_8-2-6","rightButtonsAnimation":"magritte-right-buttons-animation___Wgsss_8-2-6","button-wrapper":"magritte-button-wrapper___fp3-5_8-2-6","buttonWrapper":"magritte-button-wrapper___fp3-5_8-2-6","button-wrapper-hide":"magritte-button-wrapper-hide___MN7-s_8-2-6","buttonWrapperHide":"magritte-button-wrapper-hide___MN7-s_8-2-6","button-wrapper-grow":"magritte-button-wrapper-grow___-hbrz_8-2-6","buttonWrapperGrow":"magritte-button-wrapper-grow___-hbrz_8-2-6","button":"magritte-button___jZvyY_8-2-6","button-grow":"magritte-button-grow___IT4MK_8-2-6","buttonGrow":"magritte-button-grow___IT4MK_8-2-6","gap":"magritte-gap___3z9to_8-2-6","button-content":"magritte-button-content___hlzd-_8-2-6","buttonContent":"magritte-button-content___hlzd-_8-2-6","button-content-column":"magritte-button-content-column___48Tzo_8-2-6","buttonContentColumn":"magritte-button-content-column___48Tzo_8-2-6","button-label":"magritte-button-label___l03VO_8-2-6","buttonLabel":"magritte-button-label___l03VO_8-2-6","button_style-neutral":"magritte-button_style-neutral___1yyqh_8-2-6","buttonStyleNeutral":"magritte-button_style-neutral___1yyqh_8-2-6","button_style-accent":"magritte-button_style-accent___L9krS_8-2-6","buttonStyleAccent":"magritte-button_style-accent___L9krS_8-2-6","button_style-positive":"magritte-button_style-positive___2pgae_8-2-6","buttonStylePositive":"magritte-button_style-positive___2pgae_8-2-6","button_style-negative":"magritte-button_style-negative___UClE4_8-2-6","buttonStyleNegative":"magritte-button_style-negative___UClE4_8-2-6","button_style-special":"magritte-button_style-special___sGvAc_8-2-6","buttonStyleSpecial":"magritte-button_style-special___sGvAc_8-2-6","button_style-warning":"magritte-button_style-warning___5bEK0_8-2-6","buttonStyleWarning":"magritte-button_style-warning___5bEK0_8-2-6","icon-wrapper":"magritte-icon-wrapper___0xJZX_8-2-6","iconWrapper":"magritte-icon-wrapper___0xJZX_8-2-6"};
|
|
15
15
|
|
|
16
16
|
const MIN_BUTTON_WIDTH = 76;
|
|
17
17
|
const OPEN_THRESHOLD = 1 / 3;
|
package/Swipe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Swipe.js","sources":["../src/Swipe.tsx"],"sourcesContent":["import { FC, Fragment, MutableRefObject, useCallback, useContext, useEffect, useId, useRef, useState } from 'react';\nimport { animated, config, useSpring } from '@react-spring/web';\nimport classNames from 'classnames';\n\nimport { useDebounce } from '@hh.ru/magritte-common-func-utils';\nimport { useResize } from '@hh.ru/magritte-common-resize';\nimport { SwipeEvent, SwipeEventHandler, SwipeThreshold } from '@hh.ru/magritte-common-use-swipe';\nimport { MAIN_AXIS_THRESHOLD_PX, useSwipe } from '@hh.ru/magritte-common-use-swipe/useSwipe';\nimport { useWhenFontLoaded } from '@hh.ru/magritte-common-use-when-font-loaded';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\nimport { SwipeContext } from '@hh.ru/magritte-ui-swipe/context';\nimport { SwipeButtonsArray, SwipeProps } from '@hh.ru/magritte-ui-swipe/types';\n\nimport styles from './swipe.less';\n\nconst MIN_BUTTON_WIDTH = 76;\nconst OPEN_THRESHOLD = 1 / 3;\nconst MIN_SWIPE_DISTANCE = MIN_BUTTON_WIDTH * OPEN_THRESHOLD;\nconst GAP_WIDTH = 16;\n\nenum ButtonsState {\n Close = 'close',\n LeftOpen = 'leftOpen',\n RightOpen = 'rightOpen',\n}\n\nenum LongState {\n Off = 'off',\n Left = 'left',\n Right = 'right',\n}\n\nexport const Swipe: FC<SwipeProps> = ({\n children,\n leftButtons,\n rightButtons,\n onStart,\n onFinish,\n useLongSwipe = true,\n 'data-qa': dataQa,\n demo = false,\n twoSidedDemoMode = 'right-to-left',\n demoAppearTime = 200,\n demoIdleTime = 300,\n demoDisappearTime = 200,\n onFinishDemo,\n onStartDemo,\n onResetDemo,\n gap = false,\n borderRadius,\n}) => {\n const fixedContainerRef = useRef<HTMLDivElement | null>(null);\n const swipeContainerRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const [swipeContainerWidth, setSwipeContainerWidth] = useState(0);\n const leftButtonsRef = useRef<HTMLDivElement | null>(null);\n const rightButtonsRef = useRef<HTMLDivElement | null>(null);\n\n const sumRefs = useRef<HTMLDivElement[]>([]); // ссылки на кнопки, по которым считается реальный размер\n const leftButtonsSumSizeRef = useRef(0); // реальный размер, требуемый левым кнопкам\n const rightButtonsSumSizeRef = useRef(0); // реальный размер, требуемый правым кнопкам\n\n const leftButtonsSizeRef = useRef(0); // установленный размер левых кнопок\n const rigthButtonsSizeRef = useRef(0); // установленный размер правых кнопок\n const prevDistance = useRef(0);\n const swipeThresholdRef = useRef<SwipeThreshold>({ max: MIN_SWIPE_DISTANCE });\n const swipeLockRef = useRef(false);\n const { isMobile } = useBreakpoint();\n const [isFontLoaded, setFontLoaded] = useState(false);\n const visible = isMobile && isFontLoaded;\n\n useWhenFontLoaded(() => setFontLoaded(true));\n\n const [leftBlockStyles, leftBlockApi] = useSpring(() => ({ width: 0 }));\n const [rightBlockStyles, rightBlockApi] = useSpring(() => ({ width: 0 }));\n\n const [longState, setLongState] = useState(LongState.Off);\n const stateRef = useRef({\n candidate: ButtonsState.Close, // предполагаемое состояние, нужно чтобы нельзя было двигать влево-вправо за один раз\n now: ButtonsState.Close, // текущее состояние\n next: ButtonsState.Close, // следующее состояние, после завершения свайпа\n });\n\n const [demoInProgress, setDemoInProgress] = useState<boolean>(false);\n\n const setAnimateButtonsWidth = useCallback((flag: boolean) => {\n if (leftButtonsRef.current) {\n leftButtonsRef.current.style.transitionProperty = flag ? 'width' : 'none';\n }\n if (rightButtonsRef.current) {\n rightButtonsRef.current.style.transitionProperty = flag ? 'width' : 'none';\n }\n }, []);\n\n const recalcSwipeContainerWidth = useCallback(() => {\n if (swipeContainerRef.current && contentRef.current && fixedContainerRef.current) {\n const width = Math.round(fixedContainerRef.current.getBoundingClientRect().width);\n // устанавливаем размер области равной размеру контента,\n // чтобы она не растягивалась, когда растягиваются кнопки\n setSwipeContainerWidth(width);\n swipeContainerRef.current.style.width = `${width}px`;\n contentRef.current.style.width = `${width}px`;\n contentRef.current.style.minWidth = `${width}px`;\n }\n }, [setSwipeContainerWidth]);\n\n useEffect(() => {\n if (visible) {\n recalcSwipeContainerWidth();\n }\n }, [visible, recalcSwipeContainerWidth]);\n\n useResize(useDebounce(recalcSwipeContainerWidth, 50));\n\n // обновляет порог срабатывания для useSwipe в зависимости от состояния\n const updateSwipeThreshold = useCallback(() => {\n const { now, candidate } = stateRef.current;\n\n // если открыта одна из сторон, то мы можем свайпнуть к закрытию, или к активации длинного свайпа\n if ([ButtonsState.LeftOpen, ButtonsState.RightOpen].includes(now)) {\n swipeThresholdRef.current =\n now === ButtonsState.LeftOpen\n ? {\n // свайп к закрытию\n minDelta: -MIN_SWIPE_DISTANCE,\n // свайп к активации длинного свайпа\n maxDelta: useLongSwipe ? MIN_SWIPE_DISTANCE : Number.MAX_SAFE_INTEGER,\n }\n : {\n // свайп к закрытию\n maxDelta: MIN_SWIPE_DISTANCE,\n // свайп к активации длинного свайпа\n minDelta: useLongSwipe ? -MIN_SWIPE_DISTANCE : -Number.MAX_SAFE_INTEGER,\n };\n } else if (candidate === ButtonsState.LeftOpen) {\n // если кандидат на открытие слева, то мы можем свайпнуть к открытию слева\n swipeThresholdRef.current = { maxDelta: MIN_SWIPE_DISTANCE };\n } else if (candidate === ButtonsState.RightOpen) {\n // если кандидат на открытие справа, то мы можем свайпнуть к открытию справа, дельта с отрицательным знаком\n // потому что свайпаем вправо\n swipeThresholdRef.current = { minDelta: -MIN_SWIPE_DISTANCE };\n }\n }, [useLongSwipe]);\n\n // анимирует размер кнопок для перехода в переданное состояние\n const animateToState = useCallback(\n (toState: ButtonsState, velocity: number) => {\n leftBlockApi.stop();\n rightBlockApi.stop();\n stateRef.current.now = toState;\n\n const animationConfig = {\n width: 0,\n config: {\n ...config.gentle,\n clamp: true,\n velocity: 0,\n },\n };\n let api: typeof leftBlockApi | typeof rightBlockApi;\n\n // если нужно закрыть кнопки, то сначала определяем с какой стороны кнопки открыты\n // получаем апи для акнимации кнопок с нужной стороны\n // вычисляем начальную скорость, т.к. анимация закрытия кнопок с разных сторон направлена в разные стороны\n // то для правой стороны нужно поменять знак начальной скорости\n if (toState === ButtonsState.Close) {\n const fromLeft = leftBlockApi.current[0].get().width > 0;\n api = fromLeft ? leftBlockApi : rightBlockApi;\n const v = fromLeft ? velocity : -velocity;\n\n // скорость делим на 1000 т.к. в событии приходит скорость в пикселях в секунду\n // а нужна в пикселях в миллисекунду\n animationConfig.config.velocity = v / 1000;\n } else {\n // если нужно открыть кнопки, то получаем апи для анимации блока кнопок с нужной стороны\n // вычисляем начальную скорость, т.к. анимация открытия кнопок с разных сторон направлена в разные стороны\n // то для правой стороны нужно поменять знак начальной скорости\n api = toState === ButtonsState.LeftOpen ? leftBlockApi : rightBlockApi;\n const v = toState === ButtonsState.LeftOpen ? velocity : -velocity;\n animationConfig.width = Math.min(\n swipeContainerWidth,\n (toState === ButtonsState.LeftOpen ? leftButtonsSumSizeRef : rightButtonsSumSizeRef).current\n );\n animationConfig.config.velocity = v / 1000;\n }\n\n void api.start(animationConfig)[0].then(({ finished }) => {\n if (finished) {\n stateRef.current.candidate = ButtonsState.Close;\n if (swipeContainerRef.current !== null) {\n swipeContainerRef.current.classList.remove(styles.swipeContainerInProgress);\n }\n }\n });\n },\n [leftBlockApi, rightBlockApi, swipeContainerWidth]\n );\n\n const id = useId();\n const swipeContext = useContext(SwipeContext);\n\n useEffect(() => {\n if (visible && swipeContext !== null) {\n swipeContext.register(id, () => {\n animateToState(ButtonsState.Close, 0);\n });\n }\n }, [visible, swipeContext, id, animateToState]);\n\n const handleSwipeStart: SwipeEventHandler = useCallback(() => {\n if (demoInProgress || swipeLockRef.current) {\n return;\n }\n\n rightBlockApi.stop();\n leftBlockApi.stop();\n onStart?.();\n onResetDemo?.();\n updateSwipeThreshold();\n if (longState !== LongState.Off) {\n setLongState(LongState.Off);\n }\n prevDistance.current = 0;\n setAnimateButtonsWidth(false);\n }, [\n demoInProgress,\n rightBlockApi,\n leftBlockApi,\n onStart,\n onResetDemo,\n updateSwipeThreshold,\n longState,\n setAnimateButtonsWidth,\n ]);\n\n const recalcButtonsSizes = useCallback(\n (distance: number) => {\n // работаем с изменением дистанции, чтобы добавлять ее к существующей ширине\n const distanceDelta = distance - prevDistance.current;\n\n if (distanceDelta === 0) {\n return;\n }\n\n prevDistance.current = distance;\n\n // определяем сторону свайпа, проверяем есть ли с этой стороны кнопки, если есть меняем ширину блока кнопок\n const isLeft =\n stateRef.current.now === ButtonsState.LeftOpen ||\n stateRef.current.candidate === ButtonsState.LeftOpen ||\n (stateRef.current.now !== ButtonsState.RightOpen &&\n stateRef.current.candidate === ButtonsState.Close &&\n distanceDelta > 0);\n const hasButtons = isLeft ? !!leftButtonsRef.current : !!rightButtonsRef.current;\n const api = isLeft ? leftBlockApi : rightBlockApi;\n const currentWidth = api.current[0].get().width;\n\n if (!hasButtons) {\n return;\n }\n\n const width = Math.max(currentWidth + (isLeft ? distanceDelta : -distanceDelta), 0);\n api.set({ width });\n\n // если ширина блока кнопок > 0 фиксируем сторону-кандидат\n // чтобы не было возможности двигать влево-вправо за один свайп\n if (width > 0) {\n stateRef.current.candidate = isLeft ? ButtonsState.LeftOpen : ButtonsState.RightOpen;\n updateSwipeThreshold();\n }\n\n // определяем значение justifyContent у контейнера в зависимости от того, с какой стороны сейчас раскрыты кнопки\n // если раскрыты слева, то контент должен уходить за пределы области в право, ставим flex-start\n // если раскрыты справа, то контент должен уходить за пределы области в лево, ставим flex-end\n // визуально ничего не меняется, потому что контент в контейнере растянут на всю ширину\n if (swipeContainerRef.current) {\n swipeContainerRef.current.classList.toggle(styles.swipeContainerInProgress, width > 0);\n swipeContainerRef.current.style.justifyContent =\n stateRef.current.candidate === ButtonsState.RightOpen ? 'flex-end' : 'flex-start';\n }\n\n // определяем выполнены ли условия для перевода компонента в состояние длинного свайпа\n // длинный свайп может быть отключен вообще или может быть недоступен если это сдвиг на проекцию\n const sumSize = isLeft ? leftButtonsSumSizeRef.current : rightButtonsSumSizeRef.current;\n if (useLongSwipe && width > sumSize + MIN_SWIPE_DISTANCE) {\n setLongState(isLeft ? LongState.Left : LongState.Right);\n stateRef.current.next = ButtonsState.Close;\n } else {\n setLongState(LongState.Off);\n }\n\n if (Math.abs(distance) > MAIN_AXIS_THRESHOLD_PX) {\n swipeContext?.onShown(id);\n }\n },\n [leftBlockApi, rightBlockApi, useLongSwipe, updateSwipeThreshold, id, swipeContext]\n );\n\n const handleSwipeMove: SwipeEventHandler = useCallback(\n (event: SwipeEvent) => {\n if (demoInProgress || swipeLockRef.current) {\n return;\n }\n // сдвиг вслед за пальцем, можем делать длинный свайп\n recalcButtonsSizes(event.distanceX);\n },\n [demoInProgress, recalcButtonsSizes]\n );\n\n const runSwipeAnimation = useCallback(() => {\n if (!swipeContainerRef.current) {\n return;\n }\n\n if (stateRef.current.next === ButtonsState.Close) {\n // свайп завершен, кнопки должны закрыться, потому что не выполнен минимальный размер раскрытия\n // сбрасываем ширину в 0\n if (leftButtonsRef.current) {\n leftButtonsRef.current.style.width = '0';\n }\n leftButtonsSizeRef.current = 0;\n if (rightButtonsRef.current) {\n rightButtonsRef.current.style.width = '0';\n }\n rigthButtonsSizeRef.current = 0;\n } else if (stateRef.current.next === ButtonsState.LeftOpen) {\n // выполнено условие раскрытия слева\n // раскрываем кнопки на ширину их контента, но не больше ширины контейнера\n const maxLeftSize = Math.min(swipeContainerWidth, leftButtonsSumSizeRef.current);\n if (leftButtonsRef.current) {\n leftButtonsRef.current.style.width = `${maxLeftSize}px`;\n }\n leftButtonsSizeRef.current = maxLeftSize;\n rigthButtonsSizeRef.current = 0;\n } else if (stateRef.current.next === ButtonsState.RightOpen) {\n // выполнено условие раскрытия справа\n // раскрываем кнопки на ширину их контента, но не больше ширины контейнера\n const maxRightSize = Math.min(swipeContainerWidth, rightButtonsSumSizeRef.current);\n if (rightButtonsRef.current) {\n rightButtonsRef.current.style.width = `${maxRightSize}px`;\n }\n rigthButtonsSizeRef.current = maxRightSize;\n leftButtonsSizeRef.current = 0;\n }\n stateRef.current.now = stateRef.current.next;\n }, [swipeContainerWidth]);\n\n const handleSwipeEnd: SwipeEventHandler = useCallback(\n (event: SwipeEvent) => {\n if (demoInProgress) {\n return;\n }\n\n onFinish?.();\n\n // если это длинный свайп, то триггерим клик на соответствующую кнопку, и закрываем блок кнопок\n // если не установлен флаг keepStateAfterLong\n if (longState !== LongState.Off) {\n const buttons = longState === LongState.Left ? leftButtons : rightButtons;\n const button = longState === LongState.Left ? buttons?.[0] : buttons?.[buttons.length - 1];\n button?.onClick();\n onResetDemo?.();\n swipeLockRef.current = !!button?.keepStateAfterLong;\n if (!button?.keepStateAfterLong) {\n animateToState(ButtonsState.Close, event.velocityX);\n }\n return;\n }\n\n // если это не длинный свайп, то анимируем к соответствующему состоянию\n // если открыт левый или правый блок, то анимируем в закрытое состояние\n // если закрыты оба блока, то анимируем к открытию стороны-кадидата\n const { now, candidate } = stateRef.current;\n animateToState(\n [ButtonsState.LeftOpen, ButtonsState.RightOpen].includes(now) ? ButtonsState.Close : candidate,\n event.velocityX\n );\n },\n [demoInProgress, longState, leftButtons, rightButtons, onFinish, onResetDemo, animateToState]\n );\n\n const handleSwipeCancel: SwipeEventHandler = useCallback(\n (event) => {\n animateToState(stateRef.current.now, event.velocityX);\n },\n [animateToState]\n );\n\n const swipeHandlers = useSwipe({\n thresholdXRef: swipeThresholdRef,\n onSwipeStart: handleSwipeStart,\n onSwipeMove: handleSwipeMove,\n onSwipeEnd: handleSwipeEnd,\n onSwipeCancel: handleSwipeCancel,\n });\n\n useEffect(() => {\n const swipeContainer = swipeContainerRef.current;\n if (!visible || !swipeContainer) {\n return void 0;\n }\n\n const preventScroll = (event: TouchEvent) => {\n if (Math.abs(prevDistance.current) > MAIN_AXIS_THRESHOLD_PX) {\n event.preventDefault();\n }\n };\n\n swipeContainer.addEventListener('touchmove', preventScroll, { passive: false });\n return () => swipeContainer.removeEventListener('touchmove', preventScroll);\n }, [visible]);\n\n const getButtonsFromSide = useCallback((side = stateRef.current.now) => {\n const buttons = side === ButtonsState.RightOpen ? rightButtonsRef.current : leftButtonsRef.current;\n const oppositeButtons = buttons === rightButtonsRef.current ? leftButtonsRef.current : rightButtonsRef.current;\n\n return { buttons, oppositeButtons };\n }, []);\n\n const unmountDemoEndHandler = useCallback(\n (event: TransitionEvent) => {\n if (event.propertyName !== 'width') {\n return;\n }\n\n setDemoInProgress(false);\n\n const isTwoSidedSwipe = !!rightButtonsRef.current && !!leftButtonsRef.current;\n const isLeft = isTwoSidedSwipe\n ? twoSidedDemoMode === 'right-to-left' || twoSidedDemoMode === 'left'\n : !!leftButtonsRef.current;\n const buttons = isLeft ? leftButtonsRef.current : rightButtonsRef.current;\n\n buttons?.removeEventListener('transitionend', unmountDemoEndHandler);\n\n fixedContainerRef.current?.style.removeProperty('--transition-duration');\n fixedContainerRef.current?.style.removeProperty('--transition-delay');\n\n onResetDemo?.();\n onFinishDemo?.();\n },\n [onFinishDemo, onResetDemo, twoSidedDemoMode]\n );\n\n const demoSideAppearHandler = useCallback(\n (event: TransitionEvent) => {\n if (event.propertyName !== 'width') {\n return;\n }\n\n const currentSide = stateRef.current.now;\n const { buttons, oppositeButtons } = getButtonsFromSide(currentSide);\n\n const appearedIsFirstOfSides =\n !!rightButtonsRef.current &&\n !!leftButtonsRef.current &&\n ((currentSide === ButtonsState.LeftOpen && twoSidedDemoMode === 'left-to-right') ||\n (currentSide === ButtonsState.RightOpen && twoSidedDemoMode === 'right-to-left'));\n\n buttons?.removeEventListener('transitionend', demoSideAppearHandler);\n\n if (fixedContainerRef.current) {\n fixedContainerRef.current.style.setProperty(\n '--transition-duration',\n `${appearedIsFirstOfSides ? demoAppearTime : demoDisappearTime}ms`\n );\n fixedContainerRef.current.style.setProperty('--transition-delay', `${demoIdleTime}ms`);\n }\n\n stateRef.current.next = ButtonsState.Close;\n stateRef.current.candidate = stateRef.current.next;\n runSwipeAnimation();\n\n if (appearedIsFirstOfSides) {\n stateRef.current.next =\n currentSide === ButtonsState.LeftOpen ? ButtonsState.RightOpen : ButtonsState.LeftOpen;\n stateRef.current.candidate = stateRef.current.next;\n\n runSwipeAnimation();\n\n const twiceSideTransitionHandler = () => {\n oppositeButtons?.removeEventListener('transitionstart', twiceSideTransitionHandler);\n\n if (oppositeButtons && contentRef.current) {\n const isRight = currentSide === ButtonsState.RightOpen;\n\n contentRef.current.style.transform = `translateX(${\n isRight ? leftButtonsSumSizeRef.current : -rightButtonsSumSizeRef.current\n }px)`;\n }\n };\n\n oppositeButtons?.addEventListener('transitionstart', twiceSideTransitionHandler);\n oppositeButtons?.addEventListener('transitionend', demoSideAppearHandler);\n } else {\n const startDestroyDemoHandler = () => {\n buttons?.removeEventListener('transitionstart', startDestroyDemoHandler);\n contentRef.current?.style.removeProperty('transform');\n };\n\n buttons?.addEventListener('transitionstart', startDestroyDemoHandler);\n buttons?.addEventListener('transitionend', unmountDemoEndHandler);\n }\n },\n [\n getButtonsFromSide,\n twoSidedDemoMode,\n runSwipeAnimation,\n demoAppearTime,\n demoDisappearTime,\n demoIdleTime,\n unmountDemoEndHandler,\n ]\n );\n\n const startDemo = useCallback(\n (side: ButtonsState.RightOpen | ButtonsState.LeftOpen) => {\n onResetDemo?.();\n onStartDemo?.();\n setDemoInProgress(true);\n\n stateRef.current.now = ButtonsState.Close;\n stateRef.current.next = side;\n stateRef.current.candidate = side;\n\n if (swipeContainerRef.current) {\n swipeContainerRef.current.style.justifyContent =\n side === ButtonsState.RightOpen ? 'flex-end' : 'flex-start';\n }\n\n if (fixedContainerRef.current) {\n fixedContainerRef.current.style.setProperty('--transition-duration', `${demoAppearTime}ms`);\n }\n\n setLongState(LongState.Off);\n setAnimateButtonsWidth(true);\n runSwipeAnimation();\n\n const { buttons } = getButtonsFromSide(side);\n buttons?.addEventListener('transitionend', demoSideAppearHandler);\n },\n [\n demoAppearTime,\n demoSideAppearHandler,\n getButtonsFromSide,\n runSwipeAnimation,\n onResetDemo,\n onStartDemo,\n setAnimateButtonsWidth,\n ]\n );\n\n useEffect(() => {\n if (\n demo &&\n !demoInProgress &&\n stateRef.current.now === ButtonsState.Close &&\n swipeContainerRef.current?.style.width\n ) {\n const isTwoSidedSwipe = Boolean(rightButtonsRef.current && leftButtonsRef.current);\n\n if (isTwoSidedSwipe) {\n startDemo(\n twoSidedDemoMode === 'right' || twoSidedDemoMode === 'right-to-left'\n ? ButtonsState.RightOpen\n : ButtonsState.LeftOpen\n );\n } else {\n startDemo(rightButtonsRef.current ? ButtonsState.RightOpen : ButtonsState.LeftOpen);\n }\n }\n\n if (!isMobile && demoInProgress) {\n setDemoInProgress(false);\n stateRef.current = {\n candidate: ButtonsState.Close,\n now: ButtonsState.Close,\n next: ButtonsState.Close,\n };\n }\n }, [demo, twoSidedDemoMode, startDemo, demoInProgress, isMobile, onResetDemo]);\n\n // подсчитываем реальный необходимый размер для кнопок\n // и назначаем проперти исходя из положения кнопки (последняя/не последняя)\n const handleButtonContentRef = useCallback(\n (side: 'left' | 'right', grow: boolean) => (ref: HTMLDivElement) => {\n // нужно чтобы посчитать размеры для каждой кнопки один раз\n if (sumRefs.current.includes(ref) || !ref) {\n return;\n }\n\n const width = ref?.offsetWidth ?? 0;\n if (!grow) {\n ref.style.maxWidth = `${width}px`;\n }\n sumRefs.current.push(ref);\n const widthWithGap = gap && width > 0 ? width + GAP_WIDTH : width;\n if (side === 'left') {\n leftButtonsSumSizeRef.current += widthWithGap;\n } else {\n rightButtonsSumSizeRef.current += widthWithGap;\n }\n },\n [gap]\n );\n\n const renderButtons = (\n buttons: SwipeButtonsArray,\n ref: MutableRefObject<HTMLDivElement | null>,\n side: 'left' | 'right'\n ) => {\n const isTwoSidedDemoInProgress = leftButtons && rightButtons && demoInProgress;\n return (\n <Layer layer=\"content\">\n <animated.div\n className={classNames(styles.buttons, {\n [styles.leftButtonsAnimation]:\n side === 'left' && twoSidedDemoMode === 'right-to-left' && isTwoSidedDemoInProgress,\n [styles.rightButtonsAnimation]:\n side === 'right' && twoSidedDemoMode === 'left-to-right' && isTwoSidedDemoInProgress,\n })}\n // \"длинная\" кнопка растягивается максимум на ширину контейнера (buttons)\n // чтобы не было видно пустоты между ней и контейнером\n // нужно устанавливать выравнивание в зависимости от стороны\n style={{\n ...(side === 'left' ? { justifyContent: 'flex-start', ...leftBlockStyles } : {}),\n ...(side === 'right' ? { justifyContent: 'flex-end', ...rightBlockStyles } : {}),\n }}\n ref={ref}\n data-qa={`swipe-buttons-${side}`}\n >\n {gap && side === 'right' && longState === LongState.Right && <div className={styles.gap} />}\n {buttons.map((item, index) => {\n if (!item) {\n return null;\n }\n const grow = side === 'left' ? index === 0 : index === buttons.length - 1;\n const hide =\n (side === 'left' && index !== 0 && longState === LongState.Left) ||\n (side === 'right' && index !== buttons.length - 1 && longState === LongState.Right);\n const Icon = item.icon;\n const iconProps = item.showLabel\n ? { 'aria-hidden': true, focusable: false }\n : { 'aria-label': item.label };\n return (\n <Fragment key={index}>\n {gap && side === 'right' && longState !== LongState.Right && (\n <div className={styles.gap} />\n )}\n <div\n className={classNames(styles.buttonWrapper, {\n [styles.buttonWrapperGrow]: grow,\n [styles.buttonWrapperHide]: hide,\n })}\n // это нужно чтобы анимировался длинный свайп.\n // Здесь должно быть значение максимально близкое к тому,\n // какой максимум может занимать одна кнопка, если кнопок больше 1\n style={grow ? { maxWidth: `${swipeContainerWidth}px` } : {}}\n >\n <button\n className={classNames(styles.button, {\n [styles.buttonGrow]: grow,\n [styles[`button_style-${item.style}`]]: item.style,\n })}\n onClick={() => {\n if (demoInProgress) {\n return;\n }\n if (item.closeOnAction) {\n animateToState(ButtonsState.Close, 0);\n }\n item.onClick();\n }}\n style={gap ? { borderRadius } : {}}\n data-qa={`swipe-button-${side}-${index}`}\n >\n <div\n className={styles.buttonContent}\n ref={handleButtonContentRef(side, grow)}\n data-qa={`swipe-button-content-${side}-${index}`}\n >\n <div className={styles.buttonContentColumn}>\n {Icon && (\n <div className={styles.iconWrapper}>\n <Icon {...iconProps} />\n </div>\n )}\n {item.showLabel && (\n <span className={styles.buttonLabel}>{item.label}</span>\n )}\n </div>\n </div>\n </button>\n </div>\n {gap && side === 'left' && <div className={styles.gap} />}\n </Fragment>\n );\n })}\n </animated.div>\n </Layer>\n );\n };\n\n if (!visible) {\n return null;\n }\n\n return (\n <div className={styles.fixedContainer} ref={fixedContainerRef} data-qa={dataQa ?? 'swipe-root'}>\n <div\n className={classNames(styles.swipeContainer)}\n ref={swipeContainerRef}\n {...swipeHandlers}\n data-qa=\"swipe-swipeable\"\n >\n {!!leftButtons?.length && renderButtons(leftButtons, leftButtonsRef, 'left')}\n <div ref={contentRef} className={styles.content}>\n {children}\n </div>\n {!!rightButtons?.length && renderButtons(rightButtons, rightButtonsRef, 'right')}\n </div>\n </div>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;;;AAgBA,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7B,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAC7D,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,IAAK,YAIJ,CAAA;AAJD,CAAA,UAAK,YAAY,EAAA;AACb,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AAC3B,CAAC,EAJI,YAAY,KAAZ,YAAY,GAIhB,EAAA,CAAA,CAAA,CAAA;AAED,IAAK,SAIJ,CAAA;AAJD,CAAA,UAAK,SAAS,EAAA;AACV,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACnB,CAAC,EAJI,SAAS,KAAT,SAAS,GAIb,EAAA,CAAA,CAAA,CAAA;AAEY,MAAA,KAAK,GAAmB,CAAC,EAClC,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,YAAY,GAAG,IAAI,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAG,KAAK,EACZ,gBAAgB,GAAG,eAAe,EAClC,cAAc,GAAG,GAAG,EACpB,YAAY,GAAG,GAAG,EAClB,iBAAiB,GAAG,GAAG,EACvB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,GAAG,GAAG,KAAK,EACX,YAAY,GACf,KAAI;AACD,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;AAC9D,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;AAC9D,IAAA,MAAM,UAAU,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClE,IAAA,MAAM,cAAc,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;AAC3D,IAAA,MAAM,eAAe,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAE5D,MAAM,OAAO,GAAG,MAAM,CAAmB,EAAE,CAAC,CAAC;IAC7C,MAAM,qBAAqB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEzC,MAAM,kBAAkB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,mBAAmB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtC,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,iBAAiB,GAAG,MAAM,CAAiB,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAC9E,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACnC,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAC;IACrC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtD,IAAA,MAAM,OAAO,GAAG,QAAQ,IAAI,YAAY,CAAC;IAEzC,iBAAiB,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAE7C,IAAA,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxE,IAAA,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE1E,IAAA,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC;AACpB,QAAA,SAAS,EAAE,YAAY,CAAC,KAAK;AAC7B,QAAA,GAAG,EAAE,YAAY,CAAC,KAAK;AACvB,QAAA,IAAI,EAAE,YAAY,CAAC,KAAK;AAC3B,KAAA,CAAC,CAAC;IAEH,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;AAErE,IAAA,MAAM,sBAAsB,GAAG,WAAW,CAAC,CAAC,IAAa,KAAI;AACzD,QAAA,IAAI,cAAc,CAAC,OAAO,EAAE;AACxB,YAAA,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC;SAC7E;AACD,QAAA,IAAI,eAAe,CAAC,OAAO,EAAE;AACzB,YAAA,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC;SAC9E;KACJ,EAAE,EAAE,CAAC,CAAC;AAEP,IAAA,MAAM,yBAAyB,GAAG,WAAW,CAAC,MAAK;AAC/C,QAAA,IAAI,iBAAiB,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,IAAI,iBAAiB,CAAC,OAAO,EAAE;AAC9E,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,CAAC;;;YAGlF,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC9B,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,CAAC;YACrD,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,CAAC;YAC9C,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,CAAC;SACpD;AACL,KAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAE7B,SAAS,CAAC,MAAK;QACX,IAAI,OAAO,EAAE;AACT,YAAA,yBAAyB,EAAE,CAAC;SAC/B;AACL,KAAC,EAAE,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAEzC,SAAS,CAAC,WAAW,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,CAAC;;AAGtD,IAAA,MAAM,oBAAoB,GAAG,WAAW,CAAC,MAAK;QAC1C,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC;;AAG5C,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC/D,YAAA,iBAAiB,CAAC,OAAO;gBACrB,GAAG,KAAK,YAAY,CAAC,QAAQ;AACzB,sBAAE;;wBAEI,QAAQ,EAAE,CAAC,kBAAkB;;wBAE7B,QAAQ,EAAE,YAAY,GAAG,kBAAkB,GAAG,MAAM,CAAC,gBAAgB;AACxE,qBAAA;AACH,sBAAE;;AAEI,wBAAA,QAAQ,EAAE,kBAAkB;;AAE5B,wBAAA,QAAQ,EAAE,YAAY,GAAG,CAAC,kBAAkB,GAAG,CAAC,MAAM,CAAC,gBAAgB;qBAC1E,CAAC;SACf;AAAM,aAAA,IAAI,SAAS,KAAK,YAAY,CAAC,QAAQ,EAAE;;YAE5C,iBAAiB,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;SAChE;AAAM,aAAA,IAAI,SAAS,KAAK,YAAY,CAAC,SAAS,EAAE;;;YAG7C,iBAAiB,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,CAAC,kBAAkB,EAAE,CAAC;SACjE;AACL,KAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;;IAGnB,MAAM,cAAc,GAAG,WAAW,CAC9B,CAAC,OAAqB,EAAE,QAAgB,KAAI;QACxC,YAAY,CAAC,IAAI,EAAE,CAAC;QACpB,aAAa,CAAC,IAAI,EAAE,CAAC;AACrB,QAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC;AAE/B,QAAA,MAAM,eAAe,GAAG;AACpB,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE;gBACJ,GAAG,MAAM,CAAC,MAAM;AAChB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,QAAQ,EAAE,CAAC;AACd,aAAA;SACJ,CAAC;AACF,QAAA,IAAI,GAA+C,CAAC;;;;;AAMpD,QAAA,IAAI,OAAO,KAAK,YAAY,CAAC,KAAK,EAAE;AAChC,YAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;YACzD,GAAG,GAAG,QAAQ,GAAG,YAAY,GAAG,aAAa,CAAC;AAC9C,YAAA,MAAM,CAAC,GAAG,QAAQ,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC;;;YAI1C,eAAe,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC;SAC9C;aAAM;;;;AAIH,YAAA,GAAG,GAAG,OAAO,KAAK,YAAY,CAAC,QAAQ,GAAG,YAAY,GAAG,aAAa,CAAC;AACvE,YAAA,MAAM,CAAC,GAAG,OAAO,KAAK,YAAY,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC;YACnE,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAC5B,mBAAmB,EACnB,CAAC,OAAO,KAAK,YAAY,CAAC,QAAQ,GAAG,qBAAqB,GAAG,sBAAsB,EAAE,OAAO,CAC/F,CAAC;YACF,eAAe,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC;SAC9C;AAED,QAAA,KAAK,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAI;YACrD,IAAI,QAAQ,EAAE;gBACV,QAAQ,CAAC,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AAChD,gBAAA,IAAI,iBAAiB,CAAC,OAAO,KAAK,IAAI,EAAE;oBACpC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;iBAC/E;aACJ;AACL,SAAC,CAAC,CAAC;KACN,EACD,CAAC,YAAY,EAAE,aAAa,EAAE,mBAAmB,CAAC,CACrD,CAAC;AAEF,IAAA,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;AACnB,IAAA,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAE9C,SAAS,CAAC,MAAK;AACX,QAAA,IAAI,OAAO,IAAI,YAAY,KAAK,IAAI,EAAE;AAClC,YAAA,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAK;AAC3B,gBAAA,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1C,aAAC,CAAC,CAAC;SACN;KACJ,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;AAEhD,IAAA,MAAM,gBAAgB,GAAsB,WAAW,CAAC,MAAK;AACzD,QAAA,IAAI,cAAc,IAAI,YAAY,CAAC,OAAO,EAAE;YACxC,OAAO;SACV;QAED,aAAa,CAAC,IAAI,EAAE,CAAC;QACrB,YAAY,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;QACZ,WAAW,IAAI,CAAC;AAChB,QAAA,oBAAoB,EAAE,CAAC;AACvB,QAAA,IAAI,SAAS,KAAK,SAAS,CAAC,GAAG,EAAE;AAC7B,YAAA,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SAC/B;AACD,QAAA,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC;QACzB,sBAAsB,CAAC,KAAK,CAAC,CAAC;AAClC,KAAC,EAAE;QACC,cAAc;QACd,aAAa;QACb,YAAY;QACZ,OAAO;QACP,WAAW;QACX,oBAAoB;QACpB,SAAS;QACT,sBAAsB;AACzB,KAAA,CAAC,CAAC;AAEH,IAAA,MAAM,kBAAkB,GAAG,WAAW,CAClC,CAAC,QAAgB,KAAI;;AAEjB,QAAA,MAAM,aAAa,GAAG,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC;AAEtD,QAAA,IAAI,aAAa,KAAK,CAAC,EAAE;YACrB,OAAO;SACV;AAED,QAAA,YAAY,CAAC,OAAO,GAAG,QAAQ,CAAC;;QAGhC,MAAM,MAAM,GACR,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,YAAY,CAAC,QAAQ;AAC9C,YAAA,QAAQ,CAAC,OAAO,CAAC,SAAS,KAAK,YAAY,CAAC,QAAQ;aACnD,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,YAAY,CAAC,SAAS;AAC5C,gBAAA,QAAQ,CAAC,OAAO,CAAC,SAAS,KAAK,YAAY,CAAC,KAAK;gBACjD,aAAa,GAAG,CAAC,CAAC,CAAC;AAC3B,QAAA,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC;QACjF,MAAM,GAAG,GAAG,MAAM,GAAG,YAAY,GAAG,aAAa,CAAC;AAClD,QAAA,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;QAEhD,IAAI,CAAC,UAAU,EAAE;YACb,OAAO;SACV;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,MAAM,GAAG,aAAa,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;AACpF,QAAA,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;;;AAInB,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACX,YAAA,QAAQ,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,GAAG,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC;AACrF,YAAA,oBAAoB,EAAE,CAAC;SAC1B;;;;;AAMD,QAAA,IAAI,iBAAiB,CAAC,OAAO,EAAE;AAC3B,YAAA,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,wBAAwB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AACvF,YAAA,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc;AAC1C,gBAAA,QAAQ,CAAC,OAAO,CAAC,SAAS,KAAK,YAAY,CAAC,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;SACzF;;;AAID,QAAA,MAAM,OAAO,GAAG,MAAM,GAAG,qBAAqB,CAAC,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC;QACxF,IAAI,YAAY,IAAI,KAAK,GAAG,OAAO,GAAG,kBAAkB,EAAE;AACtD,YAAA,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YACxD,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC;SAC9C;aAAM;AACH,YAAA,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SAC/B;QAED,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,sBAAsB,EAAE;AAC7C,YAAA,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;SAC7B;AACL,KAAC,EACD,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,oBAAoB,EAAE,EAAE,EAAE,YAAY,CAAC,CACtF,CAAC;AAEF,IAAA,MAAM,eAAe,GAAsB,WAAW,CAClD,CAAC,KAAiB,KAAI;AAClB,QAAA,IAAI,cAAc,IAAI,YAAY,CAAC,OAAO,EAAE;YACxC,OAAO;SACV;;AAED,QAAA,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACxC,KAAC,EACD,CAAC,cAAc,EAAE,kBAAkB,CAAC,CACvC,CAAC;AAEF,IAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAK;AACvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;YAC5B,OAAO;SACV;QAED,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,EAAE;;;AAG9C,YAAA,IAAI,cAAc,CAAC,OAAO,EAAE;gBACxB,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;aAC5C;AACD,YAAA,kBAAkB,CAAC,OAAO,GAAG,CAAC,CAAC;AAC/B,YAAA,IAAI,eAAe,CAAC,OAAO,EAAE;gBACzB,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;aAC7C;AACD,YAAA,mBAAmB,CAAC,OAAO,GAAG,CAAC,CAAC;SACnC;aAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,QAAQ,EAAE;;;AAGxD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACjF,YAAA,IAAI,cAAc,CAAC,OAAO,EAAE;gBACxB,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI,CAAC;aAC3D;AACD,YAAA,kBAAkB,CAAC,OAAO,GAAG,WAAW,CAAC;AACzC,YAAA,mBAAmB,CAAC,OAAO,GAAG,CAAC,CAAC;SACnC;aAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,EAAE;;;AAGzD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;AACnF,YAAA,IAAI,eAAe,CAAC,OAAO,EAAE;gBACzB,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI,CAAC;aAC7D;AACD,YAAA,mBAAmB,CAAC,OAAO,GAAG,YAAY,CAAC;AAC3C,YAAA,kBAAkB,CAAC,OAAO,GAAG,CAAC,CAAC;SAClC;QACD,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AACjD,KAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAE1B,IAAA,MAAM,cAAc,GAAsB,WAAW,CACjD,CAAC,KAAiB,KAAI;QAClB,IAAI,cAAc,EAAE;YAChB,OAAO;SACV;QAED,QAAQ,IAAI,CAAC;;;AAIb,QAAA,IAAI,SAAS,KAAK,SAAS,CAAC,GAAG,EAAE;AAC7B,YAAA,MAAM,OAAO,GAAG,SAAS,KAAK,SAAS,CAAC,IAAI,GAAG,WAAW,GAAG,YAAY,CAAC;YAC1E,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,CAAC,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3F,MAAM,EAAE,OAAO,EAAE,CAAC;YAClB,WAAW,IAAI,CAAC;YAChB,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC;AACpD,YAAA,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE;gBAC7B,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;aACvD;YACD,OAAO;SACV;;;;QAKD,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC;AAC5C,QAAA,cAAc,CACV,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,GAAG,SAAS,EAC9F,KAAK,CAAC,SAAS,CAClB,CAAC;AACN,KAAC,EACD,CAAC,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,CAAC,CAChG,CAAC;AAEF,IAAA,MAAM,iBAAiB,GAAsB,WAAW,CACpD,CAAC,KAAK,KAAI;QACN,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AAC1D,KAAC,EACD,CAAC,cAAc,CAAC,CACnB,CAAC;IAEF,MAAM,aAAa,GAAG,QAAQ,CAAC;AAC3B,QAAA,aAAa,EAAE,iBAAiB;AAChC,QAAA,YAAY,EAAE,gBAAgB;AAC9B,QAAA,WAAW,EAAE,eAAe;AAC5B,QAAA,UAAU,EAAE,cAAc;AAC1B,QAAA,aAAa,EAAE,iBAAiB;AACnC,KAAA,CAAC,CAAC;IAEH,SAAS,CAAC,MAAK;AACX,QAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC;AACjD,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE;YAC7B,OAAO,KAAK,CAAC,CAAC;SACjB;AAED,QAAA,MAAM,aAAa,GAAG,CAAC,KAAiB,KAAI;YACxC,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,sBAAsB,EAAE;gBACzD,KAAK,CAAC,cAAc,EAAE,CAAC;aAC1B;AACL,SAAC,CAAC;AAEF,QAAA,cAAc,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAChF,OAAO,MAAM,cAAc,CAAC,mBAAmB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAChF,KAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAEd,IAAA,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAI;AACnE,QAAA,MAAM,OAAO,GAAG,IAAI,KAAK,YAAY,CAAC,SAAS,GAAG,eAAe,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;AACnG,QAAA,MAAM,eAAe,GAAG,OAAO,KAAK,eAAe,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;AAE/G,QAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;KACvC,EAAE,EAAE,CAAC,CAAC;AAEP,IAAA,MAAM,qBAAqB,GAAG,WAAW,CACrC,CAAC,KAAsB,KAAI;AACvB,QAAA,IAAI,KAAK,CAAC,YAAY,KAAK,OAAO,EAAE;YAChC,OAAO;SACV;QAED,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAEzB,QAAA,MAAM,eAAe,GAAG,CAAC,CAAC,eAAe,CAAC,OAAO,IAAI,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC;QAC9E,MAAM,MAAM,GAAG,eAAe;AAC1B,cAAE,gBAAgB,KAAK,eAAe,IAAI,gBAAgB,KAAK,MAAM;AACrE,cAAE,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC;AAC/B,QAAA,MAAM,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;AAE1E,QAAA,OAAO,EAAE,mBAAmB,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;QAErE,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QACzE,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;QAEtE,WAAW,IAAI,CAAC;QAChB,YAAY,IAAI,CAAC;KACpB,EACD,CAAC,YAAY,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAChD,CAAC;AAEF,IAAA,MAAM,qBAAqB,GAAG,WAAW,CACrC,CAAC,KAAsB,KAAI;AACvB,QAAA,IAAI,KAAK,CAAC,YAAY,KAAK,OAAO,EAAE;YAChC,OAAO;SACV;AAED,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;QACzC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;AAErE,QAAA,MAAM,sBAAsB,GACxB,CAAC,CAAC,eAAe,CAAC,OAAO;YACzB,CAAC,CAAC,cAAc,CAAC,OAAO;aACvB,CAAC,WAAW,KAAK,YAAY,CAAC,QAAQ,IAAI,gBAAgB,KAAK,eAAe;iBAC1E,WAAW,KAAK,YAAY,CAAC,SAAS,IAAI,gBAAgB,KAAK,eAAe,CAAC,CAAC,CAAC;AAE1F,QAAA,OAAO,EAAE,mBAAmB,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;AAErE,QAAA,IAAI,iBAAiB,CAAC,OAAO,EAAE;YAC3B,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CACvC,uBAAuB,EACvB,CAAA,EAAG,sBAAsB,GAAG,cAAc,GAAG,iBAAiB,CAAI,EAAA,CAAA,CACrE,CAAC;AACF,YAAA,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI,CAAC,CAAC;SAC1F;QAED,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC;QAC3C,QAAQ,CAAC,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AACnD,QAAA,iBAAiB,EAAE,CAAC;QAEpB,IAAI,sBAAsB,EAAE;YACxB,QAAQ,CAAC,OAAO,CAAC,IAAI;AACjB,gBAAA,WAAW,KAAK,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC;YAC3F,QAAQ,CAAC,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AAEnD,YAAA,iBAAiB,EAAE,CAAC;YAEpB,MAAM,0BAA0B,GAAG,MAAK;AACpC,gBAAA,eAAe,EAAE,mBAAmB,CAAC,iBAAiB,EAAE,0BAA0B,CAAC,CAAC;AAEpF,gBAAA,IAAI,eAAe,IAAI,UAAU,CAAC,OAAO,EAAE;AACvC,oBAAA,MAAM,OAAO,GAAG,WAAW,KAAK,YAAY,CAAC,SAAS,CAAC;oBAEvD,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CACjC,WAAA,EAAA,OAAO,GAAG,qBAAqB,CAAC,OAAO,GAAG,CAAC,sBAAsB,CAAC,OACtE,CAAA,GAAA,CAAK,CAAC;iBACT;AACL,aAAC,CAAC;AAEF,YAAA,eAAe,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,0BAA0B,CAAC,CAAC;AACjF,YAAA,eAAe,EAAE,gBAAgB,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;SAC7E;aAAM;YACH,MAAM,uBAAuB,GAAG,MAAK;AACjC,gBAAA,OAAO,EAAE,mBAAmB,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;gBACzE,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAC1D,aAAC,CAAC;AAEF,YAAA,OAAO,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;AACtE,YAAA,OAAO,EAAE,gBAAgB,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;SACrE;AACL,KAAC,EACD;QACI,kBAAkB;QAClB,gBAAgB;QAChB,iBAAiB;QACjB,cAAc;QACd,iBAAiB;QACjB,YAAY;QACZ,qBAAqB;AACxB,KAAA,CACJ,CAAC;AAEF,IAAA,MAAM,SAAS,GAAG,WAAW,CACzB,CAAC,IAAoD,KAAI;QACrD,WAAW,IAAI,CAAC;QAChB,WAAW,IAAI,CAAC;QAChB,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAExB,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC;AAC1C,QAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B,QAAA,QAAQ,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AAElC,QAAA,IAAI,iBAAiB,CAAC,OAAO,EAAE;AAC3B,YAAA,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc;AAC1C,gBAAA,IAAI,KAAK,YAAY,CAAC,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;SACnE;AAED,QAAA,IAAI,iBAAiB,CAAC,OAAO,EAAE;AAC3B,YAAA,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAA,EAAG,cAAc,CAAA,EAAA,CAAI,CAAC,CAAC;SAC/F;AAED,QAAA,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC5B,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAA,iBAAiB,EAAE,CAAC;QAEpB,MAAM,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAA,OAAO,EAAE,gBAAgB,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;AACtE,KAAC,EACD;QACI,cAAc;QACd,qBAAqB;QACrB,kBAAkB;QAClB,iBAAiB;QACjB,WAAW;QACX,WAAW;QACX,sBAAsB;AACzB,KAAA,CACJ,CAAC;IAEF,SAAS,CAAC,MAAK;AACX,QAAA,IACI,IAAI;AACJ,YAAA,CAAC,cAAc;AACf,YAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,YAAY,CAAC,KAAK;AAC3C,YAAA,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EACxC;AACE,YAAA,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;YAEnF,IAAI,eAAe,EAAE;AACjB,gBAAA,SAAS,CACL,gBAAgB,KAAK,OAAO,IAAI,gBAAgB,KAAK,eAAe;sBAC9D,YAAY,CAAC,SAAS;AACxB,sBAAE,YAAY,CAAC,QAAQ,CAC9B,CAAC;aACL;iBAAM;AACH,gBAAA,SAAS,CAAC,eAAe,CAAC,OAAO,GAAG,YAAY,CAAC,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;aACvF;SACJ;AAED,QAAA,IAAI,CAAC,QAAQ,IAAI,cAAc,EAAE;YAC7B,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACzB,QAAQ,CAAC,OAAO,GAAG;gBACf,SAAS,EAAE,YAAY,CAAC,KAAK;gBAC7B,GAAG,EAAE,YAAY,CAAC,KAAK;gBACvB,IAAI,EAAE,YAAY,CAAC,KAAK;aAC3B,CAAC;SACL;AACL,KAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;;;AAI/E,IAAA,MAAM,sBAAsB,GAAG,WAAW,CACtC,CAAC,IAAsB,EAAE,IAAa,KAAK,CAAC,GAAmB,KAAI;;AAE/D,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;YACvC,OAAO;SACV;AAED,QAAA,MAAM,KAAK,GAAG,GAAG,EAAE,WAAW,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE;YACP,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAG,EAAA,KAAK,IAAI,CAAC;SACrC;AACD,QAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,QAAA,MAAM,YAAY,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;AAClE,QAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACjB,YAAA,qBAAqB,CAAC,OAAO,IAAI,YAAY,CAAC;SACjD;aAAM;AACH,YAAA,sBAAsB,CAAC,OAAO,IAAI,YAAY,CAAC;SAClD;AACL,KAAC,EACD,CAAC,GAAG,CAAC,CACR,CAAC;IAEF,MAAM,aAAa,GAAG,CAClB,OAA0B,EAC1B,GAA4C,EAC5C,IAAsB,KACtB;AACA,QAAA,MAAM,wBAAwB,GAAG,WAAW,IAAI,YAAY,IAAI,cAAc,CAAC;QAC/E,QACIA,IAAC,KAAK,EAAA,EAAC,KAAK,EAAC,SAAS,YAClBC,IAAC,CAAA,QAAQ,CAAC,GAAG,EAAA,EACT,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE;AAClC,oBAAA,CAAC,MAAM,CAAC,oBAAoB,GACxB,IAAI,KAAK,MAAM,IAAI,gBAAgB,KAAK,eAAe,IAAI,wBAAwB;AACvF,oBAAA,CAAC,MAAM,CAAC,qBAAqB,GACzB,IAAI,KAAK,OAAO,IAAI,gBAAgB,KAAK,eAAe,IAAI,wBAAwB;iBAC3F,CAAC;;;;AAIF,gBAAA,KAAK,EAAE;AACH,oBAAA,IAAI,IAAI,KAAK,MAAM,GAAG,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE,GAAG,EAAE;AAC/E,oBAAA,IAAI,IAAI,KAAK,OAAO,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,gBAAgB,EAAE,GAAG,EAAE;AAClF,iBAAA,EACD,GAAG,EAAE,GAAG,EACC,SAAA,EAAA,CAAA,cAAA,EAAiB,IAAI,CAAE,CAAA,EAAA,QAAA,EAAA,CAE/B,GAAG,IAAI,IAAI,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,CAAC,KAAK,IAAID,aAAK,SAAS,EAAE,MAAM,CAAC,GAAG,EAAI,CAAA,EAC1F,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;wBACzB,IAAI,CAAC,IAAI,EAAE;AACP,4BAAA,OAAO,IAAI,CAAC;yBACf;wBACD,MAAM,IAAI,GAAG,IAAI,KAAK,MAAM,GAAG,KAAK,KAAK,CAAC,GAAG,KAAK,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1E,wBAAA,MAAM,IAAI,GACN,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,KAAK,CAAC,IAAI,SAAS,KAAK,SAAS,CAAC,IAAI;AAC/D,6BAAC,IAAI,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC;AACxF,wBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACvB,wBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;8BAC1B,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;8BACzC,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACnC,wBAAA,QACIC,IAAA,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,CACJ,GAAG,IAAI,IAAI,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,CAAC,KAAK,KACrDD,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,GAAG,GAAI,CACjC,EACDA,GACI,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,aAAa,EAAE;AACxC,wCAAA,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI;AAChC,wCAAA,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI;qCACnC,CAAC;;;;oCAIF,KAAK,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE,CAAG,EAAA,mBAAmB,CAAI,EAAA,CAAA,EAAE,GAAG,EAAE,EAAA,QAAA,EAE3DA,GACI,CAAA,QAAA,EAAA,EAAA,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE;AACjC,4CAAA,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI;AACzB,4CAAA,CAAC,MAAM,CAAC,CAAgB,aAAA,EAAA,IAAI,CAAC,KAAK,CAAE,CAAA,CAAC,GAAG,IAAI,CAAC,KAAK;AACrD,yCAAA,CAAC,EACF,OAAO,EAAE,MAAK;4CACV,IAAI,cAAc,EAAE;gDAChB,OAAO;6CACV;AACD,4CAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,gDAAA,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;6CACzC;4CACD,IAAI,CAAC,OAAO,EAAE,CAAC;yCAClB,EACD,KAAK,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,EACzB,SAAA,EAAA,CAAA,aAAA,EAAgB,IAAI,CAAA,CAAA,EAAI,KAAK,CAAE,CAAA,EAAA,QAAA,EAExCA,GACI,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,aAAa,EAC/B,GAAG,EAAE,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAA,SAAA,EAC9B,CAAwB,qBAAA,EAAA,IAAI,IAAI,KAAK,CAAA,CAAE,EAEhD,QAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,mBAAmB,EACrC,QAAA,EAAA,CAAA,IAAI,KACDD,aAAK,SAAS,EAAE,MAAM,CAAC,WAAW,EAAA,QAAA,EAC9BA,IAAC,IAAI,EAAA,EAAA,GAAK,SAAS,EAAA,CAAI,EACrB,CAAA,CACT,EACA,IAAI,CAAC,SAAS,KACXA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,WAAW,EAAG,QAAA,EAAA,IAAI,CAAC,KAAK,EAAA,CAAQ,CAC3D,CAAA,EAAA,CACC,EACJ,CAAA,EAAA,CACD,GACP,EACL,GAAG,IAAI,IAAI,KAAK,MAAM,IAAIA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,GAAG,GAAI,CAjD9C,EAAA,EAAA,KAAK,CAkDT,EACb;AACN,qBAAC,CAAC,CAAA,EAAA,CACS,EACX,CAAA,EACV;AACN,KAAC,CAAC;IAEF,IAAI,CAAC,OAAO,EAAE;AACV,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,QACIA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,iBAAiB,EAAW,SAAA,EAAA,MAAM,IAAI,YAAY,EAAA,QAAA,EAC1FC,cACI,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,EAC5C,GAAG,EAAE,iBAAiB,EAClB,GAAA,aAAa,aACT,iBAAiB,EAAA,QAAA,EAAA,CAExB,CAAC,CAAC,WAAW,EAAE,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EAC5ED,GAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,EAC1C,QAAA,EAAA,QAAQ,EACP,CAAA,EACL,CAAC,CAAC,YAAY,EAAE,MAAM,IAAI,aAAa,CAAC,YAAY,EAAE,eAAe,EAAE,OAAO,CAAC,CAC9E,EAAA,CAAA,EAAA,CACJ,EACR;AACN;;;;"}
|
|
1
|
+
{"version":3,"file":"Swipe.js","sources":["src/Swipe.tsx"],"sourcesContent":["import { FC, Fragment, MutableRefObject, useCallback, useContext, useEffect, useId, useRef, useState } from 'react';\nimport { animated, config, useSpring } from '@react-spring/web';\nimport classNames from 'classnames';\n\nimport { useDebounce } from '@hh.ru/magritte-common-func-utils';\nimport { useResize } from '@hh.ru/magritte-common-resize';\nimport { SwipeEvent, SwipeEventHandler, SwipeThreshold } from '@hh.ru/magritte-common-use-swipe';\nimport { MAIN_AXIS_THRESHOLD_PX, useSwipe } from '@hh.ru/magritte-common-use-swipe/useSwipe';\nimport { useWhenFontLoaded } from '@hh.ru/magritte-common-use-when-font-loaded';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\nimport { SwipeContext } from '@hh.ru/magritte-ui-swipe/context';\nimport { SwipeButtonsArray, SwipeProps } from '@hh.ru/magritte-ui-swipe/types';\n\nimport styles from './swipe.less';\n\nconst MIN_BUTTON_WIDTH = 76;\nconst OPEN_THRESHOLD = 1 / 3;\nconst MIN_SWIPE_DISTANCE = MIN_BUTTON_WIDTH * OPEN_THRESHOLD;\nconst GAP_WIDTH = 16;\n\nenum ButtonsState {\n Close = 'close',\n LeftOpen = 'leftOpen',\n RightOpen = 'rightOpen',\n}\n\nenum LongState {\n Off = 'off',\n Left = 'left',\n Right = 'right',\n}\n\nexport const Swipe: FC<SwipeProps> = ({\n children,\n leftButtons,\n rightButtons,\n onStart,\n onFinish,\n useLongSwipe = true,\n 'data-qa': dataQa,\n demo = false,\n twoSidedDemoMode = 'right-to-left',\n demoAppearTime = 200,\n demoIdleTime = 300,\n demoDisappearTime = 200,\n onFinishDemo,\n onStartDemo,\n onResetDemo,\n gap = false,\n borderRadius,\n}) => {\n const fixedContainerRef = useRef<HTMLDivElement | null>(null);\n const swipeContainerRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const [swipeContainerWidth, setSwipeContainerWidth] = useState(0);\n const leftButtonsRef = useRef<HTMLDivElement | null>(null);\n const rightButtonsRef = useRef<HTMLDivElement | null>(null);\n\n const sumRefs = useRef<HTMLDivElement[]>([]); // ссылки на кнопки, по которым считается реальный размер\n const leftButtonsSumSizeRef = useRef(0); // реальный размер, требуемый левым кнопкам\n const rightButtonsSumSizeRef = useRef(0); // реальный размер, требуемый правым кнопкам\n\n const leftButtonsSizeRef = useRef(0); // установленный размер левых кнопок\n const rigthButtonsSizeRef = useRef(0); // установленный размер правых кнопок\n const prevDistance = useRef(0);\n const swipeThresholdRef = useRef<SwipeThreshold>({ max: MIN_SWIPE_DISTANCE });\n const swipeLockRef = useRef(false);\n const { isMobile } = useBreakpoint();\n const [isFontLoaded, setFontLoaded] = useState(false);\n const visible = isMobile && isFontLoaded;\n\n useWhenFontLoaded(() => setFontLoaded(true));\n\n const [leftBlockStyles, leftBlockApi] = useSpring(() => ({ width: 0 }));\n const [rightBlockStyles, rightBlockApi] = useSpring(() => ({ width: 0 }));\n\n const [longState, setLongState] = useState(LongState.Off);\n const stateRef = useRef({\n candidate: ButtonsState.Close, // предполагаемое состояние, нужно чтобы нельзя было двигать влево-вправо за один раз\n now: ButtonsState.Close, // текущее состояние\n next: ButtonsState.Close, // следующее состояние, после завершения свайпа\n });\n\n const [demoInProgress, setDemoInProgress] = useState<boolean>(false);\n\n const setAnimateButtonsWidth = useCallback((flag: boolean) => {\n if (leftButtonsRef.current) {\n leftButtonsRef.current.style.transitionProperty = flag ? 'width' : 'none';\n }\n if (rightButtonsRef.current) {\n rightButtonsRef.current.style.transitionProperty = flag ? 'width' : 'none';\n }\n }, []);\n\n const recalcSwipeContainerWidth = useCallback(() => {\n if (swipeContainerRef.current && contentRef.current && fixedContainerRef.current) {\n const width = Math.round(fixedContainerRef.current.getBoundingClientRect().width);\n // устанавливаем размер области равной размеру контента,\n // чтобы она не растягивалась, когда растягиваются кнопки\n setSwipeContainerWidth(width);\n swipeContainerRef.current.style.width = `${width}px`;\n contentRef.current.style.width = `${width}px`;\n contentRef.current.style.minWidth = `${width}px`;\n }\n }, [setSwipeContainerWidth]);\n\n useEffect(() => {\n if (visible) {\n recalcSwipeContainerWidth();\n }\n }, [visible, recalcSwipeContainerWidth]);\n\n useResize(useDebounce(recalcSwipeContainerWidth, 50));\n\n // обновляет порог срабатывания для useSwipe в зависимости от состояния\n const updateSwipeThreshold = useCallback(() => {\n const { now, candidate } = stateRef.current;\n\n // если открыта одна из сторон, то мы можем свайпнуть к закрытию, или к активации длинного свайпа\n if ([ButtonsState.LeftOpen, ButtonsState.RightOpen].includes(now)) {\n swipeThresholdRef.current =\n now === ButtonsState.LeftOpen\n ? {\n // свайп к закрытию\n minDelta: -MIN_SWIPE_DISTANCE,\n // свайп к активации длинного свайпа\n maxDelta: useLongSwipe ? MIN_SWIPE_DISTANCE : Number.MAX_SAFE_INTEGER,\n }\n : {\n // свайп к закрытию\n maxDelta: MIN_SWIPE_DISTANCE,\n // свайп к активации длинного свайпа\n minDelta: useLongSwipe ? -MIN_SWIPE_DISTANCE : -Number.MAX_SAFE_INTEGER,\n };\n } else if (candidate === ButtonsState.LeftOpen) {\n // если кандидат на открытие слева, то мы можем свайпнуть к открытию слева\n swipeThresholdRef.current = { maxDelta: MIN_SWIPE_DISTANCE };\n } else if (candidate === ButtonsState.RightOpen) {\n // если кандидат на открытие справа, то мы можем свайпнуть к открытию справа, дельта с отрицательным знаком\n // потому что свайпаем вправо\n swipeThresholdRef.current = { minDelta: -MIN_SWIPE_DISTANCE };\n }\n }, [useLongSwipe]);\n\n // анимирует размер кнопок для перехода в переданное состояние\n const animateToState = useCallback(\n (toState: ButtonsState, velocity: number) => {\n leftBlockApi.stop();\n rightBlockApi.stop();\n stateRef.current.now = toState;\n\n const animationConfig = {\n width: 0,\n config: {\n ...config.gentle,\n clamp: true,\n velocity: 0,\n },\n };\n let api: typeof leftBlockApi | typeof rightBlockApi;\n\n // если нужно закрыть кнопки, то сначала определяем с какой стороны кнопки открыты\n // получаем апи для акнимации кнопок с нужной стороны\n // вычисляем начальную скорость, т.к. анимация закрытия кнопок с разных сторон направлена в разные стороны\n // то для правой стороны нужно поменять знак начальной скорости\n if (toState === ButtonsState.Close) {\n const fromLeft = leftBlockApi.current[0].get().width > 0;\n api = fromLeft ? leftBlockApi : rightBlockApi;\n const v = fromLeft ? velocity : -velocity;\n\n // скорость делим на 1000 т.к. в событии приходит скорость в пикселях в секунду\n // а нужна в пикселях в миллисекунду\n animationConfig.config.velocity = v / 1000;\n } else {\n // если нужно открыть кнопки, то получаем апи для анимации блока кнопок с нужной стороны\n // вычисляем начальную скорость, т.к. анимация открытия кнопок с разных сторон направлена в разные стороны\n // то для правой стороны нужно поменять знак начальной скорости\n api = toState === ButtonsState.LeftOpen ? leftBlockApi : rightBlockApi;\n const v = toState === ButtonsState.LeftOpen ? velocity : -velocity;\n animationConfig.width = Math.min(\n swipeContainerWidth,\n (toState === ButtonsState.LeftOpen ? leftButtonsSumSizeRef : rightButtonsSumSizeRef).current\n );\n animationConfig.config.velocity = v / 1000;\n }\n\n void api.start(animationConfig)[0].then(({ finished }) => {\n if (finished) {\n stateRef.current.candidate = ButtonsState.Close;\n if (swipeContainerRef.current !== null) {\n swipeContainerRef.current.classList.remove(styles.swipeContainerInProgress);\n }\n }\n });\n },\n [leftBlockApi, rightBlockApi, swipeContainerWidth]\n );\n\n const id = useId();\n const swipeContext = useContext(SwipeContext);\n\n useEffect(() => {\n if (visible && swipeContext !== null) {\n swipeContext.register(id, () => {\n animateToState(ButtonsState.Close, 0);\n });\n }\n }, [visible, swipeContext, id, animateToState]);\n\n const handleSwipeStart: SwipeEventHandler = useCallback(() => {\n if (demoInProgress || swipeLockRef.current) {\n return;\n }\n\n rightBlockApi.stop();\n leftBlockApi.stop();\n onStart?.();\n onResetDemo?.();\n updateSwipeThreshold();\n if (longState !== LongState.Off) {\n setLongState(LongState.Off);\n }\n prevDistance.current = 0;\n setAnimateButtonsWidth(false);\n }, [\n demoInProgress,\n rightBlockApi,\n leftBlockApi,\n onStart,\n onResetDemo,\n updateSwipeThreshold,\n longState,\n setAnimateButtonsWidth,\n ]);\n\n const recalcButtonsSizes = useCallback(\n (distance: number) => {\n // работаем с изменением дистанции, чтобы добавлять ее к существующей ширине\n const distanceDelta = distance - prevDistance.current;\n\n if (distanceDelta === 0) {\n return;\n }\n\n prevDistance.current = distance;\n\n // определяем сторону свайпа, проверяем есть ли с этой стороны кнопки, если есть меняем ширину блока кнопок\n const isLeft =\n stateRef.current.now === ButtonsState.LeftOpen ||\n stateRef.current.candidate === ButtonsState.LeftOpen ||\n (stateRef.current.now !== ButtonsState.RightOpen &&\n stateRef.current.candidate === ButtonsState.Close &&\n distanceDelta > 0);\n const hasButtons = isLeft ? !!leftButtonsRef.current : !!rightButtonsRef.current;\n const api = isLeft ? leftBlockApi : rightBlockApi;\n const currentWidth = api.current[0].get().width;\n\n if (!hasButtons) {\n return;\n }\n\n const width = Math.max(currentWidth + (isLeft ? distanceDelta : -distanceDelta), 0);\n api.set({ width });\n\n // если ширина блока кнопок > 0 фиксируем сторону-кандидат\n // чтобы не было возможности двигать влево-вправо за один свайп\n if (width > 0) {\n stateRef.current.candidate = isLeft ? ButtonsState.LeftOpen : ButtonsState.RightOpen;\n updateSwipeThreshold();\n }\n\n // определяем значение justifyContent у контейнера в зависимости от того, с какой стороны сейчас раскрыты кнопки\n // если раскрыты слева, то контент должен уходить за пределы области в право, ставим flex-start\n // если раскрыты справа, то контент должен уходить за пределы области в лево, ставим flex-end\n // визуально ничего не меняется, потому что контент в контейнере растянут на всю ширину\n if (swipeContainerRef.current) {\n swipeContainerRef.current.classList.toggle(styles.swipeContainerInProgress, width > 0);\n swipeContainerRef.current.style.justifyContent =\n stateRef.current.candidate === ButtonsState.RightOpen ? 'flex-end' : 'flex-start';\n }\n\n // определяем выполнены ли условия для перевода компонента в состояние длинного свайпа\n // длинный свайп может быть отключен вообще или может быть недоступен если это сдвиг на проекцию\n const sumSize = isLeft ? leftButtonsSumSizeRef.current : rightButtonsSumSizeRef.current;\n if (useLongSwipe && width > sumSize + MIN_SWIPE_DISTANCE) {\n setLongState(isLeft ? LongState.Left : LongState.Right);\n stateRef.current.next = ButtonsState.Close;\n } else {\n setLongState(LongState.Off);\n }\n\n if (Math.abs(distance) > MAIN_AXIS_THRESHOLD_PX) {\n swipeContext?.onShown(id);\n }\n },\n [leftBlockApi, rightBlockApi, useLongSwipe, updateSwipeThreshold, id, swipeContext]\n );\n\n const handleSwipeMove: SwipeEventHandler = useCallback(\n (event: SwipeEvent) => {\n if (demoInProgress || swipeLockRef.current) {\n return;\n }\n // сдвиг вслед за пальцем, можем делать длинный свайп\n recalcButtonsSizes(event.distanceX);\n },\n [demoInProgress, recalcButtonsSizes]\n );\n\n const runSwipeAnimation = useCallback(() => {\n if (!swipeContainerRef.current) {\n return;\n }\n\n if (stateRef.current.next === ButtonsState.Close) {\n // свайп завершен, кнопки должны закрыться, потому что не выполнен минимальный размер раскрытия\n // сбрасываем ширину в 0\n if (leftButtonsRef.current) {\n leftButtonsRef.current.style.width = '0';\n }\n leftButtonsSizeRef.current = 0;\n if (rightButtonsRef.current) {\n rightButtonsRef.current.style.width = '0';\n }\n rigthButtonsSizeRef.current = 0;\n } else if (stateRef.current.next === ButtonsState.LeftOpen) {\n // выполнено условие раскрытия слева\n // раскрываем кнопки на ширину их контента, но не больше ширины контейнера\n const maxLeftSize = Math.min(swipeContainerWidth, leftButtonsSumSizeRef.current);\n if (leftButtonsRef.current) {\n leftButtonsRef.current.style.width = `${maxLeftSize}px`;\n }\n leftButtonsSizeRef.current = maxLeftSize;\n rigthButtonsSizeRef.current = 0;\n } else if (stateRef.current.next === ButtonsState.RightOpen) {\n // выполнено условие раскрытия справа\n // раскрываем кнопки на ширину их контента, но не больше ширины контейнера\n const maxRightSize = Math.min(swipeContainerWidth, rightButtonsSumSizeRef.current);\n if (rightButtonsRef.current) {\n rightButtonsRef.current.style.width = `${maxRightSize}px`;\n }\n rigthButtonsSizeRef.current = maxRightSize;\n leftButtonsSizeRef.current = 0;\n }\n stateRef.current.now = stateRef.current.next;\n }, [swipeContainerWidth]);\n\n const handleSwipeEnd: SwipeEventHandler = useCallback(\n (event: SwipeEvent) => {\n if (demoInProgress) {\n return;\n }\n\n onFinish?.();\n\n // если это длинный свайп, то триггерим клик на соответствующую кнопку, и закрываем блок кнопок\n // если не установлен флаг keepStateAfterLong\n if (longState !== LongState.Off) {\n const buttons = longState === LongState.Left ? leftButtons : rightButtons;\n const button = longState === LongState.Left ? buttons?.[0] : buttons?.[buttons.length - 1];\n button?.onClick();\n onResetDemo?.();\n swipeLockRef.current = !!button?.keepStateAfterLong;\n if (!button?.keepStateAfterLong) {\n animateToState(ButtonsState.Close, event.velocityX);\n }\n return;\n }\n\n // если это не длинный свайп, то анимируем к соответствующему состоянию\n // если открыт левый или правый блок, то анимируем в закрытое состояние\n // если закрыты оба блока, то анимируем к открытию стороны-кадидата\n const { now, candidate } = stateRef.current;\n animateToState(\n [ButtonsState.LeftOpen, ButtonsState.RightOpen].includes(now) ? ButtonsState.Close : candidate,\n event.velocityX\n );\n },\n [demoInProgress, longState, leftButtons, rightButtons, onFinish, onResetDemo, animateToState]\n );\n\n const handleSwipeCancel: SwipeEventHandler = useCallback(\n (event) => {\n animateToState(stateRef.current.now, event.velocityX);\n },\n [animateToState]\n );\n\n const swipeHandlers = useSwipe({\n thresholdXRef: swipeThresholdRef,\n onSwipeStart: handleSwipeStart,\n onSwipeMove: handleSwipeMove,\n onSwipeEnd: handleSwipeEnd,\n onSwipeCancel: handleSwipeCancel,\n });\n\n useEffect(() => {\n const swipeContainer = swipeContainerRef.current;\n if (!visible || !swipeContainer) {\n return void 0;\n }\n\n const preventScroll = (event: TouchEvent) => {\n if (Math.abs(prevDistance.current) > MAIN_AXIS_THRESHOLD_PX) {\n event.preventDefault();\n }\n };\n\n swipeContainer.addEventListener('touchmove', preventScroll, { passive: false });\n return () => swipeContainer.removeEventListener('touchmove', preventScroll);\n }, [visible]);\n\n const getButtonsFromSide = useCallback((side = stateRef.current.now) => {\n const buttons = side === ButtonsState.RightOpen ? rightButtonsRef.current : leftButtonsRef.current;\n const oppositeButtons = buttons === rightButtonsRef.current ? leftButtonsRef.current : rightButtonsRef.current;\n\n return { buttons, oppositeButtons };\n }, []);\n\n const unmountDemoEndHandler = useCallback(\n (event: TransitionEvent) => {\n if (event.propertyName !== 'width') {\n return;\n }\n\n setDemoInProgress(false);\n\n const isTwoSidedSwipe = !!rightButtonsRef.current && !!leftButtonsRef.current;\n const isLeft = isTwoSidedSwipe\n ? twoSidedDemoMode === 'right-to-left' || twoSidedDemoMode === 'left'\n : !!leftButtonsRef.current;\n const buttons = isLeft ? leftButtonsRef.current : rightButtonsRef.current;\n\n buttons?.removeEventListener('transitionend', unmountDemoEndHandler);\n\n fixedContainerRef.current?.style.removeProperty('--transition-duration');\n fixedContainerRef.current?.style.removeProperty('--transition-delay');\n\n onResetDemo?.();\n onFinishDemo?.();\n },\n [onFinishDemo, onResetDemo, twoSidedDemoMode]\n );\n\n const demoSideAppearHandler = useCallback(\n (event: TransitionEvent) => {\n if (event.propertyName !== 'width') {\n return;\n }\n\n const currentSide = stateRef.current.now;\n const { buttons, oppositeButtons } = getButtonsFromSide(currentSide);\n\n const appearedIsFirstOfSides =\n !!rightButtonsRef.current &&\n !!leftButtonsRef.current &&\n ((currentSide === ButtonsState.LeftOpen && twoSidedDemoMode === 'left-to-right') ||\n (currentSide === ButtonsState.RightOpen && twoSidedDemoMode === 'right-to-left'));\n\n buttons?.removeEventListener('transitionend', demoSideAppearHandler);\n\n if (fixedContainerRef.current) {\n fixedContainerRef.current.style.setProperty(\n '--transition-duration',\n `${appearedIsFirstOfSides ? demoAppearTime : demoDisappearTime}ms`\n );\n fixedContainerRef.current.style.setProperty('--transition-delay', `${demoIdleTime}ms`);\n }\n\n stateRef.current.next = ButtonsState.Close;\n stateRef.current.candidate = stateRef.current.next;\n runSwipeAnimation();\n\n if (appearedIsFirstOfSides) {\n stateRef.current.next =\n currentSide === ButtonsState.LeftOpen ? ButtonsState.RightOpen : ButtonsState.LeftOpen;\n stateRef.current.candidate = stateRef.current.next;\n\n runSwipeAnimation();\n\n const twiceSideTransitionHandler = () => {\n oppositeButtons?.removeEventListener('transitionstart', twiceSideTransitionHandler);\n\n if (oppositeButtons && contentRef.current) {\n const isRight = currentSide === ButtonsState.RightOpen;\n\n contentRef.current.style.transform = `translateX(${\n isRight ? leftButtonsSumSizeRef.current : -rightButtonsSumSizeRef.current\n }px)`;\n }\n };\n\n oppositeButtons?.addEventListener('transitionstart', twiceSideTransitionHandler);\n oppositeButtons?.addEventListener('transitionend', demoSideAppearHandler);\n } else {\n const startDestroyDemoHandler = () => {\n buttons?.removeEventListener('transitionstart', startDestroyDemoHandler);\n contentRef.current?.style.removeProperty('transform');\n };\n\n buttons?.addEventListener('transitionstart', startDestroyDemoHandler);\n buttons?.addEventListener('transitionend', unmountDemoEndHandler);\n }\n },\n [\n getButtonsFromSide,\n twoSidedDemoMode,\n runSwipeAnimation,\n demoAppearTime,\n demoDisappearTime,\n demoIdleTime,\n unmountDemoEndHandler,\n ]\n );\n\n const startDemo = useCallback(\n (side: ButtonsState.RightOpen | ButtonsState.LeftOpen) => {\n onResetDemo?.();\n onStartDemo?.();\n setDemoInProgress(true);\n\n stateRef.current.now = ButtonsState.Close;\n stateRef.current.next = side;\n stateRef.current.candidate = side;\n\n if (swipeContainerRef.current) {\n swipeContainerRef.current.style.justifyContent =\n side === ButtonsState.RightOpen ? 'flex-end' : 'flex-start';\n }\n\n if (fixedContainerRef.current) {\n fixedContainerRef.current.style.setProperty('--transition-duration', `${demoAppearTime}ms`);\n }\n\n setLongState(LongState.Off);\n setAnimateButtonsWidth(true);\n runSwipeAnimation();\n\n const { buttons } = getButtonsFromSide(side);\n buttons?.addEventListener('transitionend', demoSideAppearHandler);\n },\n [\n demoAppearTime,\n demoSideAppearHandler,\n getButtonsFromSide,\n runSwipeAnimation,\n onResetDemo,\n onStartDemo,\n setAnimateButtonsWidth,\n ]\n );\n\n useEffect(() => {\n if (\n demo &&\n !demoInProgress &&\n stateRef.current.now === ButtonsState.Close &&\n swipeContainerRef.current?.style.width\n ) {\n const isTwoSidedSwipe = Boolean(rightButtonsRef.current && leftButtonsRef.current);\n\n if (isTwoSidedSwipe) {\n startDemo(\n twoSidedDemoMode === 'right' || twoSidedDemoMode === 'right-to-left'\n ? ButtonsState.RightOpen\n : ButtonsState.LeftOpen\n );\n } else {\n startDemo(rightButtonsRef.current ? ButtonsState.RightOpen : ButtonsState.LeftOpen);\n }\n }\n\n if (!isMobile && demoInProgress) {\n setDemoInProgress(false);\n stateRef.current = {\n candidate: ButtonsState.Close,\n now: ButtonsState.Close,\n next: ButtonsState.Close,\n };\n }\n }, [demo, twoSidedDemoMode, startDemo, demoInProgress, isMobile, onResetDemo]);\n\n // подсчитываем реальный необходимый размер для кнопок\n // и назначаем проперти исходя из положения кнопки (последняя/не последняя)\n const handleButtonContentRef = useCallback(\n (side: 'left' | 'right', grow: boolean) => (ref: HTMLDivElement) => {\n // нужно чтобы посчитать размеры для каждой кнопки один раз\n if (sumRefs.current.includes(ref) || !ref) {\n return;\n }\n\n const width = ref?.offsetWidth ?? 0;\n if (!grow) {\n ref.style.maxWidth = `${width}px`;\n }\n sumRefs.current.push(ref);\n const widthWithGap = gap && width > 0 ? width + GAP_WIDTH : width;\n if (side === 'left') {\n leftButtonsSumSizeRef.current += widthWithGap;\n } else {\n rightButtonsSumSizeRef.current += widthWithGap;\n }\n },\n [gap]\n );\n\n const renderButtons = (\n buttons: SwipeButtonsArray,\n ref: MutableRefObject<HTMLDivElement | null>,\n side: 'left' | 'right'\n ) => {\n const isTwoSidedDemoInProgress = leftButtons && rightButtons && demoInProgress;\n return (\n <Layer layer=\"content\">\n <animated.div\n className={classNames(styles.buttons, {\n [styles.leftButtonsAnimation]:\n side === 'left' && twoSidedDemoMode === 'right-to-left' && isTwoSidedDemoInProgress,\n [styles.rightButtonsAnimation]:\n side === 'right' && twoSidedDemoMode === 'left-to-right' && isTwoSidedDemoInProgress,\n })}\n // \"длинная\" кнопка растягивается максимум на ширину контейнера (buttons)\n // чтобы не было видно пустоты между ней и контейнером\n // нужно устанавливать выравнивание в зависимости от стороны\n style={{\n ...(side === 'left' ? { justifyContent: 'flex-start', ...leftBlockStyles } : {}),\n ...(side === 'right' ? { justifyContent: 'flex-end', ...rightBlockStyles } : {}),\n }}\n ref={ref}\n data-qa={`swipe-buttons-${side}`}\n >\n {gap && side === 'right' && longState === LongState.Right && <div className={styles.gap} />}\n {buttons.map((item, index) => {\n if (!item) {\n return null;\n }\n const grow = side === 'left' ? index === 0 : index === buttons.length - 1;\n const hide =\n (side === 'left' && index !== 0 && longState === LongState.Left) ||\n (side === 'right' && index !== buttons.length - 1 && longState === LongState.Right);\n const Icon = item.icon;\n const iconProps = item.showLabel\n ? { 'aria-hidden': true, focusable: false }\n : { 'aria-label': item.label };\n return (\n <Fragment key={index}>\n {gap && side === 'right' && longState !== LongState.Right && (\n <div className={styles.gap} />\n )}\n <div\n className={classNames(styles.buttonWrapper, {\n [styles.buttonWrapperGrow]: grow,\n [styles.buttonWrapperHide]: hide,\n })}\n // это нужно чтобы анимировался длинный свайп.\n // Здесь должно быть значение максимально близкое к тому,\n // какой максимум может занимать одна кнопка, если кнопок больше 1\n style={grow ? { maxWidth: `${swipeContainerWidth}px` } : {}}\n >\n <button\n className={classNames(styles.button, {\n [styles.buttonGrow]: grow,\n [styles[`button_style-${item.style}`]]: item.style,\n })}\n onClick={() => {\n if (demoInProgress) {\n return;\n }\n if (item.closeOnAction) {\n animateToState(ButtonsState.Close, 0);\n }\n item.onClick();\n }}\n style={gap ? { borderRadius } : {}}\n data-qa={`swipe-button-${side}-${index}`}\n >\n <div\n className={styles.buttonContent}\n ref={handleButtonContentRef(side, grow)}\n data-qa={`swipe-button-content-${side}-${index}`}\n >\n <div className={styles.buttonContentColumn}>\n {Icon && (\n <div className={styles.iconWrapper}>\n <Icon {...iconProps} />\n </div>\n )}\n {item.showLabel && (\n <span className={styles.buttonLabel}>{item.label}</span>\n )}\n </div>\n </div>\n </button>\n </div>\n {gap && side === 'left' && <div className={styles.gap} />}\n </Fragment>\n );\n })}\n </animated.div>\n </Layer>\n );\n };\n\n if (!visible) {\n return null;\n }\n\n return (\n <div className={styles.fixedContainer} ref={fixedContainerRef} data-qa={dataQa ?? 'swipe-root'}>\n <div\n className={classNames(styles.swipeContainer)}\n ref={swipeContainerRef}\n {...swipeHandlers}\n data-qa=\"swipe-swipeable\"\n >\n {!!leftButtons?.length && renderButtons(leftButtons, leftButtonsRef, 'left')}\n <div ref={contentRef} className={styles.content}>\n {children}\n </div>\n {!!rightButtons?.length && renderButtons(rightButtons, rightButtonsRef, 'right')}\n </div>\n </div>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
package/SwipeGroup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwipeGroup.js","sources":["
|
|
1
|
+
{"version":3,"file":"SwipeGroup.js","sources":["src/SwipeGroup.tsx"],"sourcesContent":["import { FC, PropsWithChildren, useRef } from 'react';\n\nimport { SwipeContext, SwipeContextProps } from '@hh.ru/magritte-ui-swipe/context';\n\nexport const SwipeGroup: FC<PropsWithChildren> = ({ children }) => {\n const closeFuncsRef = useRef<Record<string, VoidFunction>>({});\n\n const valueRef = useRef<SwipeContextProps>({\n register: (id, closeFunc) => {\n closeFuncsRef.current[id] = closeFunc;\n },\n onShown: (activeId) => {\n Object.entries(closeFuncsRef.current)\n .filter(([id]) => id !== activeId)\n .forEach(([, closeFunc]) => closeFunc());\n },\n });\n\n return <SwipeContext.Provider value={valueRef.current}>{children}</SwipeContext.Provider>;\n};\n"],"names":["_jsx"],"mappings":";;;;MAIa,UAAU,GAA0B,CAAC,EAAE,QAAQ,EAAE,KAAI;AAC9D,IAAA,MAAM,aAAa,GAAG,MAAM,CAA+B,EAAE,CAAC,CAAC;IAE/D,MAAM,QAAQ,GAAG,MAAM,CAAoB;AACvC,QAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,SAAS,KAAI;AACxB,YAAA,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;SACzC;AACD,QAAA,OAAO,EAAE,CAAC,QAAQ,KAAI;AAClB,YAAA,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC;iBAChC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,QAAQ,CAAC;AACjC,iBAAA,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC;SAChD;AACJ,KAAA,CAAC,CAAC;AAEH,IAAA,OAAOA,GAAC,CAAA,YAAY,CAAC,QAAQ,EAAC,EAAA,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAG,QAAA,EAAA,QAAQ,GAAyB,CAAC;AAC9F;;;;"}
|
package/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sources":["
|
|
1
|
+
{"version":3,"file":"context.js","sources":["src/context.ts"],"sourcesContent":["import { createContext } from 'react';\n\nexport interface SwipeContextProps {\n register: (id: string, closeFunc: VoidFunction) => void;\n onShown: (activeId: string) => void;\n}\n\nexport const SwipeContext = createContext<SwipeContextProps | null>(null);\n"],"names":[],"mappings":";;MAOa,YAAY,GAAG,aAAa,CAA2B,IAAI;;;;"}
|