@salutejs/plasma-new-hope 0.113.1-canary.1325.10178064945.0 → 0.113.1-canary.1333.10181217073.0
Sign up to get free protection for your applications and to get access to all the features.
- package/cjs/components/Modal/hooks/useModal.js +15 -0
- package/cjs/components/Modal/hooks/useModal.js.map +1 -1
- package/cjs/components/Popup/PopupContext.js +8 -23
- package/cjs/components/Popup/PopupContext.js.map +1 -1
- package/cjs/components/Popup/hooks/usePopup.js +0 -5
- package/cjs/components/Popup/hooks/usePopup.js.map +1 -1
- package/cjs/components/Tabs/tokens.js +3 -1
- package/cjs/components/Tabs/tokens.js.map +1 -1
- package/cjs/components/Tabs/ui/TabItem/TabItem.js +8 -2
- package/cjs/components/Tabs/ui/TabItem/TabItem.js.map +1 -1
- package/cjs/components/Tabs/ui/Tabs/Tabs.css +4 -4
- package/cjs/components/Tabs/ui/Tabs/Tabs.js +49 -7
- package/cjs/components/Tabs/ui/Tabs/Tabs.js.map +1 -1
- package/cjs/components/Tabs/ui/Tabs/Tabs.styles.js +7 -7
- package/cjs/components/Tabs/ui/Tabs/Tabs.styles.js.map +1 -1
- package/cjs/components/Tabs/ui/Tabs/{Tabs.styles_1b8qt33.css → Tabs.styles_106qhdc.css} +1 -1
- package/cjs/index.css +4 -4
- package/emotion/cjs/components/Modal/hooks/useModal.js +15 -0
- package/emotion/cjs/components/Popup/PopupContext.js +8 -23
- package/emotion/cjs/components/Popup/hooks/usePopup.js +0 -5
- package/emotion/cjs/components/Tabs/tokens.js +3 -1
- package/emotion/cjs/components/Tabs/ui/TabItem/TabItem.js +8 -2
- package/emotion/cjs/components/Tabs/ui/Tabs/Tabs.js +49 -7
- package/emotion/cjs/components/Tabs/ui/Tabs/Tabs.styles.js +4 -12
- package/emotion/cjs/examples/plasma_b2c/components/Tabs/Tabs.config.js +16 -17
- package/emotion/cjs/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +160 -53
- package/emotion/cjs/examples/plasma_web/components/Tabs/Tabs.config.js +16 -17
- package/emotion/cjs/examples/plasma_web/components/Tabs/Tabs.stories.tsx +169 -94
- package/emotion/cjs/examples/sds_engineer/components/Tabs/Tabs.config.js +16 -17
- package/emotion/es/components/Modal/hooks/useModal.js +17 -2
- package/emotion/es/components/Popup/PopupContext.js +9 -24
- package/emotion/es/components/Popup/hooks/usePopup.js +0 -5
- package/emotion/es/components/Tabs/tokens.js +3 -1
- package/emotion/es/components/Tabs/ui/TabItem/TabItem.js +8 -2
- package/emotion/es/components/Tabs/ui/Tabs/Tabs.js +50 -8
- package/emotion/es/components/Tabs/ui/Tabs/Tabs.styles.js +5 -13
- package/emotion/es/examples/plasma_b2c/components/Tabs/Tabs.config.js +16 -17
- package/emotion/es/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +160 -53
- package/emotion/es/examples/plasma_web/components/Tabs/Tabs.config.js +16 -17
- package/emotion/es/examples/plasma_web/components/Tabs/Tabs.stories.tsx +169 -94
- package/emotion/es/examples/sds_engineer/components/Tabs/Tabs.config.js +16 -17
- package/es/components/Modal/hooks/useModal.js +17 -2
- package/es/components/Modal/hooks/useModal.js.map +1 -1
- package/es/components/Popup/PopupContext.js +9 -24
- package/es/components/Popup/PopupContext.js.map +1 -1
- package/es/components/Popup/hooks/usePopup.js +0 -5
- package/es/components/Popup/hooks/usePopup.js.map +1 -1
- package/es/components/Tabs/tokens.js +3 -1
- package/es/components/Tabs/tokens.js.map +1 -1
- package/es/components/Tabs/ui/TabItem/TabItem.js +8 -2
- package/es/components/Tabs/ui/TabItem/TabItem.js.map +1 -1
- package/es/components/Tabs/ui/Tabs/Tabs.css +4 -4
- package/es/components/Tabs/ui/Tabs/Tabs.js +50 -8
- package/es/components/Tabs/ui/Tabs/Tabs.js.map +1 -1
- package/es/components/Tabs/ui/Tabs/Tabs.styles.js +7 -7
- package/es/components/Tabs/ui/Tabs/Tabs.styles.js.map +1 -1
- package/es/components/Tabs/ui/Tabs/{Tabs.styles_1b8qt33.css → Tabs.styles_106qhdc.css} +1 -1
- package/es/index.css +4 -4
- package/package.json +2 -2
- package/styled-components/cjs/components/Modal/hooks/useModal.js +15 -0
- package/styled-components/cjs/components/Popup/PopupContext.js +8 -23
- package/styled-components/cjs/components/Popup/hooks/usePopup.js +0 -5
- package/styled-components/cjs/components/Tabs/tokens.js +3 -1
- package/styled-components/cjs/components/Tabs/ui/TabItem/TabItem.js +8 -2
- package/styled-components/cjs/components/Tabs/ui/Tabs/Tabs.js +49 -7
- package/styled-components/cjs/components/Tabs/ui/Tabs/Tabs.styles.js +1 -1
- package/styled-components/cjs/examples/plasma_b2c/components/Tabs/Tabs.config.js +4 -5
- package/styled-components/cjs/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +160 -53
- package/styled-components/cjs/examples/plasma_web/components/Tabs/Tabs.config.js +4 -5
- package/styled-components/cjs/examples/plasma_web/components/Tabs/Tabs.stories.tsx +169 -94
- package/styled-components/cjs/examples/sds_engineer/components/Tabs/Tabs.config.js +4 -5
- package/styled-components/es/components/Modal/hooks/useModal.js +17 -2
- package/styled-components/es/components/Popup/PopupContext.js +9 -24
- package/styled-components/es/components/Popup/hooks/usePopup.js +0 -5
- package/styled-components/es/components/Tabs/tokens.js +3 -1
- package/styled-components/es/components/Tabs/ui/TabItem/TabItem.js +8 -2
- package/styled-components/es/components/Tabs/ui/Tabs/Tabs.js +50 -8
- package/styled-components/es/components/Tabs/ui/Tabs/Tabs.styles.js +2 -2
- package/styled-components/es/examples/plasma_b2c/components/Tabs/Tabs.config.js +4 -5
- package/styled-components/es/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +160 -53
- package/styled-components/es/examples/plasma_web/components/Tabs/Tabs.config.js +4 -5
- package/styled-components/es/examples/plasma_web/components/Tabs/Tabs.stories.tsx +169 -94
- package/styled-components/es/examples/sds_engineer/components/Tabs/Tabs.config.js +4 -5
- package/types/components/Modal/hooks/useModal.d.ts +1 -1
- package/types/components/Modal/hooks/useModal.d.ts.map +1 -1
- package/types/components/Popup/PopupContext.d.ts.map +1 -1
- package/types/components/Popup/hooks/usePopup.d.ts.map +1 -1
- package/types/components/Tabs/tokens.d.ts +2 -0
- package/types/components/Tabs/tokens.d.ts.map +1 -1
- package/types/components/Tabs/ui/TabItem/TabItem.d.ts.map +1 -1
- package/types/components/Tabs/ui/Tabs/Tabs.d.ts +4 -2
- package/types/components/Tabs/ui/Tabs/Tabs.d.ts.map +1 -1
- package/types/components/Tabs/ui/Tabs/Tabs.styles.d.ts.map +1 -1
- package/types/components/Tabs/ui/Tabs/Tabs.types.d.ts +12 -5
- package/types/components/Tabs/ui/Tabs/Tabs.types.d.ts.map +1 -1
- package/types/examples/plasma_b2c/components/Tabs/Tabs.config.d.ts +0 -1
- package/types/examples/plasma_b2c/components/Tabs/Tabs.config.d.ts.map +1 -1
- package/types/examples/plasma_b2c/components/Tabs/Tabs.d.ts +2 -1
- package/types/examples/plasma_b2c/components/Tabs/Tabs.d.ts.map +1 -1
- package/types/examples/plasma_web/components/Tabs/Tabs.config.d.ts +0 -1
- package/types/examples/plasma_web/components/Tabs/Tabs.config.d.ts.map +1 -1
- package/types/examples/plasma_web/components/Tabs/Tabs.d.ts +2 -1
- package/types/examples/plasma_web/components/Tabs/Tabs.d.ts.map +1 -1
- package/types/examples/sds_engineer/components/Tabs/Tabs.config.d.ts +0 -1
- package/types/examples/sds_engineer/components/Tabs/Tabs.config.d.ts.map +1 -1
- package/types/examples/sds_engineer/components/Tabs/Tabs.d.ts +2 -1
- package/types/examples/sds_engineer/components/Tabs/Tabs.d.ts.map +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useModal.js","sources":["../../../../src/components/Modal/hooks/useModal.ts"],"sourcesContent":["import { useCallback, useEffect } from 'react';\n\nimport { ModalInfo, getIdLastModal } from '../ModalContext';\nimport { ModalHookArgs } from '../Modal.types';\nimport { usePopupContext } from '../../Popup';\n\nconst ESCAPE_KEYCODE = 27;\n\nexport const useModal = ({ id, popupInfo, onEscKeyDown, onClose, closeOnEsc = true }: ModalHookArgs) => {\n const popupController = usePopupContext();\n\n // При ESC закрывает текущее окно, если это возможно\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (!closeOnEsc) {\n return;\n }\n if (event.keyCode === ESCAPE_KEYCODE && getIdLastModal(popupController.items) === id) {\n if (onEscKeyDown) {\n onEscKeyDown(event);\n return;\n }\n\n if (onClose) {\n onClose();\n }\n }\n },\n [onClose, onEscKeyDown, popupController.items, closeOnEsc],\n );\n\n useEffect(() => {\n window.addEventListener('keydown', onKeyDown);\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [onClose, onEscKeyDown, popupController.items, closeOnEsc]);\n\n const modalInfo: ModalInfo = {\n id,\n info: {\n isModal: true,\n },\n ...popupInfo,\n };\n\n return { modalInfo };\n};\n"],"names":["ESCAPE_KEYCODE","useModal","_ref","id","popupInfo","onEscKeyDown","onClose","_ref$closeOnEsc","closeOnEsc","popupController","usePopupContext","onKeyDown","useCallback","event","keyCode","getIdLastModal","items","useEffect","window","addEventListener","removeEventListener","modalInfo","_objectSpread","info","isModal"],"mappings":";;;;;;;;;AAMA,IAAMA,cAAc,GAAG,EAAE,CAAA;IAEZC,QAAQ,GAAG,SAAXA,QAAQA,CAAAC,IAAA,
|
1
|
+
{"version":3,"file":"useModal.js","sources":["../../../../src/components/Modal/hooks/useModal.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nimport { ModalInfo, getIdLastModal, hasModals } from '../ModalContext';\nimport { ModalHookArgs } from '../Modal.types';\nimport { usePopupContext } from '../../Popup';\n\nconst ESCAPE_KEYCODE = 27;\n\nexport const useModal = ({ id, isOpen, popupInfo, onEscKeyDown, onClose, closeOnEsc = true }: ModalHookArgs) => {\n const popupController = usePopupContext();\n const overflow = useRef<string>(document.body.style.overflowY);\n\n // При ESC закрывает текущее окно, если это возможно\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (!closeOnEsc) {\n return;\n }\n if (event.keyCode === ESCAPE_KEYCODE && getIdLastModal(popupController.items) === id) {\n if (onEscKeyDown) {\n onEscKeyDown(event);\n return;\n }\n\n if (onClose) {\n onClose();\n }\n }\n },\n [onClose, onEscKeyDown, popupController.items, closeOnEsc],\n );\n\n useEffect(() => {\n window.addEventListener('keydown', onKeyDown);\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [onClose, onEscKeyDown, popupController.items, closeOnEsc]);\n\n // linaria не поддерживает динамический global\n useEffect(() => {\n if (isOpen) {\n overflow.current = document.body.style.overflowY;\n document.body.style.overflowY = 'hidden';\n }\n }, [isOpen]);\n\n useEffect(() => {\n if (!isOpen && !hasModals(popupController.items)) {\n document.body.style.overflowY = overflow.current;\n }\n }, [isOpen, overflow.current, popupController.items]);\n\n const modalInfo: ModalInfo = {\n id,\n info: {\n isModal: true,\n },\n ...popupInfo,\n };\n\n return { modalInfo };\n};\n"],"names":["ESCAPE_KEYCODE","useModal","_ref","id","isOpen","popupInfo","onEscKeyDown","onClose","_ref$closeOnEsc","closeOnEsc","popupController","usePopupContext","overflow","useRef","document","body","style","overflowY","onKeyDown","useCallback","event","keyCode","getIdLastModal","items","useEffect","window","addEventListener","removeEventListener","current","hasModals","modalInfo","_objectSpread","info","isModal"],"mappings":";;;;;;;;;AAMA,IAAMA,cAAc,GAAG,EAAE,CAAA;IAEZC,QAAQ,GAAG,SAAXA,QAAQA,CAAAC,IAAA,EAA2F;AAAA,EAAA,IAArFC,EAAE,GAAAD,IAAA,CAAFC,EAAE;IAAEC,MAAM,GAAAF,IAAA,CAANE,MAAM;IAAEC,SAAS,GAAAH,IAAA,CAATG,SAAS;IAAEC,YAAY,GAAAJ,IAAA,CAAZI,YAAY;IAAEC,OAAO,GAAAL,IAAA,CAAPK,OAAO;IAAAC,eAAA,GAAAN,IAAA,CAAEO,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAG,KAAA,CAAA,GAAA,IAAI,GAAAA,eAAA,CAAA;AACtF,EAAA,IAAME,eAAe,GAAGC,eAAe,EAAE,CAAA;EACzC,IAAMC,QAAQ,GAAGC,MAAM,CAASC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAACC,SAAS,CAAC,CAAA;;AAE9D;AACA,EAAA,IAAMC,SAAS,GAAGC,WAAW,CACzB,UAACC,KAAoB,EAAK;IACtB,IAAI,CAACX,UAAU,EAAE;AACb,MAAA,OAAA;AACJ,KAAA;AACA,IAAA,IAAIW,KAAK,CAACC,OAAO,KAAKrB,cAAc,IAAIsB,cAAc,CAACZ,eAAe,CAACa,KAAK,CAAC,KAAKpB,EAAE,EAAE;AAClF,MAAA,IAAIG,YAAY,EAAE;QACdA,YAAY,CAACc,KAAK,CAAC,CAAA;AACnB,QAAA,OAAA;AACJ,OAAA;AAEA,MAAA,IAAIb,OAAO,EAAE;AACTA,QAAAA,OAAO,EAAE,CAAA;AACb,OAAA;AACJ,KAAA;AACJ,GAAC,EACD,CAACA,OAAO,EAAED,YAAY,EAAEI,eAAe,CAACa,KAAK,EAAEd,UAAU,CAC7D,CAAC,CAAA;AAEDe,EAAAA,SAAS,CAAC,YAAM;AACZC,IAAAA,MAAM,CAACC,gBAAgB,CAAC,SAAS,EAAER,SAAS,CAAC,CAAA;AAC7C,IAAA,OAAO,YAAM;AACTO,MAAAA,MAAM,CAACE,mBAAmB,CAAC,SAAS,EAAET,SAAS,CAAC,CAAA;KACnD,CAAA;AACL,GAAC,EAAE,CAACX,OAAO,EAAED,YAAY,EAAEI,eAAe,CAACa,KAAK,EAAEd,UAAU,CAAC,CAAC,CAAA;;AAE9D;AACAe,EAAAA,SAAS,CAAC,YAAM;AACZ,IAAA,IAAIpB,MAAM,EAAE;MACRQ,QAAQ,CAACgB,OAAO,GAAGd,QAAQ,CAACC,IAAI,CAACC,KAAK,CAACC,SAAS,CAAA;AAChDH,MAAAA,QAAQ,CAACC,IAAI,CAACC,KAAK,CAACC,SAAS,GAAG,QAAQ,CAAA;AAC5C,KAAA;AACJ,GAAC,EAAE,CAACb,MAAM,CAAC,CAAC,CAAA;AAEZoB,EAAAA,SAAS,CAAC,YAAM;IACZ,IAAI,CAACpB,MAAM,IAAI,CAACyB,SAAS,CAACnB,eAAe,CAACa,KAAK,CAAC,EAAE;MAC9CT,QAAQ,CAACC,IAAI,CAACC,KAAK,CAACC,SAAS,GAAGL,QAAQ,CAACgB,OAAO,CAAA;AACpD,KAAA;AACJ,GAAC,EAAE,CAACxB,MAAM,EAAEQ,QAAQ,CAACgB,OAAO,EAAElB,eAAe,CAACa,KAAK,CAAC,CAAC,CAAA;EAErD,IAAMO,SAAoB,GAAAC,cAAA,CAAA;AACtB5B,IAAAA,EAAE,EAAFA,EAAE;AACF6B,IAAAA,IAAI,EAAE;AACFC,MAAAA,OAAO,EAAE,IAAA;AACb,KAAA;AAAC,GAAA,EACE5B,SAAS,CACf,CAAA;EAED,OAAO;AAAEyB,IAAAA,SAAS,EAATA,SAAAA;GAAW,CAAA;AACxB;;;;"}
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { slicedToArray as _slicedToArray, toConsumableArray as _toConsumableArray } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
2
|
-
import React, { useContext,
|
3
|
-
import { hasModals } from '../Modal/ModalContext.js';
|
2
|
+
import React, { useContext, useState, useEffect, createContext } from 'react';
|
4
3
|
|
5
4
|
var POPUP_PORTAL_ID = 'plasma-popup-root';
|
6
5
|
var items = [];
|
@@ -18,36 +17,22 @@ var usePopupContext = function usePopupContext() {
|
|
18
17
|
};
|
19
18
|
var PopupProvider = function PopupProvider(_ref) {
|
20
19
|
var children = _ref.children;
|
21
|
-
var prevBodyOverflowY = useRef(document.body.style.overflowY);
|
22
20
|
var _useState = useState([]),
|
23
21
|
_useState2 = _slicedToArray(_useState, 2),
|
24
22
|
items = _useState2[0],
|
25
23
|
setItems = _useState2[1];
|
26
24
|
var register = function register(info) {
|
27
|
-
setItems(
|
28
|
-
var _info$info;
|
29
|
-
if ((_info$info = info.info) !== null && _info$info !== void 0 && _info$info.isModal && !hasModals(prevItems)) {
|
30
|
-
prevBodyOverflowY.current = document.body.style.overflowY;
|
31
|
-
document.body.style.overflowY = 'hidden';
|
32
|
-
}
|
33
|
-
return [].concat(_toConsumableArray(prevItems), [info]);
|
34
|
-
});
|
25
|
+
setItems([].concat(_toConsumableArray(items), [info]));
|
35
26
|
};
|
36
27
|
var unregister = function unregister(id) {
|
37
|
-
|
38
|
-
|
39
|
-
return id === item.id;
|
40
|
-
});
|
41
|
-
if (index === -1) {
|
42
|
-
return prevItems;
|
43
|
-
}
|
44
|
-
var prevHasModals = hasModals(prevItems);
|
45
|
-
prevItems.splice(index, 1);
|
46
|
-
if (prevHasModals && !hasModals(prevItems)) {
|
47
|
-
document.body.style.overflowY = prevBodyOverflowY.current;
|
48
|
-
}
|
49
|
-
return prevItems;
|
28
|
+
var index = items.findIndex(function (item) {
|
29
|
+
return id === item.id;
|
50
30
|
});
|
31
|
+
if (index === -1) {
|
32
|
+
return;
|
33
|
+
}
|
34
|
+
items.splice(index, 1);
|
35
|
+
setItems(_toConsumableArray(items));
|
51
36
|
};
|
52
37
|
var context = {
|
53
38
|
items: items,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"PopupContext.js","sources":["../../../src/components/Popup/PopupContext.tsx"],"sourcesContent":["import React, { createContext, useEffect, useState, useContext, FC, PropsWithChildren
|
1
|
+
{"version":3,"file":"PopupContext.js","sources":["../../../src/components/Popup/PopupContext.tsx"],"sourcesContent":["import React, { createContext, useEffect, useState, useContext, FC, PropsWithChildren } from 'react';\n\nimport type { PopupContextType, PopupInfo } from './Popup.types';\n\nexport const POPUP_PORTAL_ID = 'plasma-popup-root';\n\nconst items: PopupInfo[] = [];\n\nconst PopupContext = createContext<PopupContextType>({\n items,\n register(_info: PopupInfo): void {\n throw new Error('Function not implemented. Add PopupProvider');\n },\n unregister(_id: string): void {\n throw new Error('Function not implemented. Add PopupProvider');\n },\n});\n\nexport const usePopupContext = () => useContext(PopupContext);\n\nexport const PopupProvider: FC<PropsWithChildren> = ({ children }) => {\n const [items, setItems] = useState<PopupInfo[]>([]);\n\n const register = (info: PopupInfo) => {\n setItems([...items, info]);\n };\n\n const unregister = (id: string) => {\n const index = items.findIndex((item: PopupInfo) => id === item.id);\n\n if (index === -1) {\n return;\n }\n\n items.splice(index, 1);\n setItems([...items]);\n };\n\n const context = {\n items,\n register,\n unregister,\n };\n\n useEffect(() => {\n return () => {\n const portal = document.createElement('div');\n if (portal && document.body.contains(portal)) {\n document.body.removeChild(portal);\n }\n };\n }, []);\n\n return <PopupContext.Provider value={context}>{children}</PopupContext.Provider>;\n};\n"],"names":["POPUP_PORTAL_ID","items","PopupContext","createContext","register","_info","Error","unregister","_id","usePopupContext","useContext","PopupProvider","_ref","children","_useState","useState","_useState2","_slicedToArray","setItems","info","concat","_toConsumableArray","id","index","findIndex","item","splice","context","useEffect","portal","document","createElement","body","contains","removeChild","React","Provider","value"],"mappings":";;;AAIO,IAAMA,eAAe,GAAG,oBAAmB;AAElD,IAAMC,KAAkB,GAAG,EAAE,CAAA;AAE7B,IAAMC,YAAY,gBAAGC,aAAa,CAAmB;AACjDF,EAAAA,KAAK,EAALA,KAAK;EACLG,QAAQ,EAAA,SAAAA,QAACC,CAAAA,KAAgB,EAAQ;AAC7B,IAAA,MAAM,IAAIC,KAAK,CAAC,6CAA6C,CAAC,CAAA;GACjE;EACDC,UAAU,EAAA,SAAAA,UAACC,CAAAA,GAAW,EAAQ;AAC1B,IAAA,MAAM,IAAIF,KAAK,CAAC,6CAA6C,CAAC,CAAA;AAClE,GAAA;AACJ,CAAC,CAAC,CAAA;AAEWG,IAAAA,eAAe,GAAG,SAAlBA,eAAeA,GAAA;EAAA,OAASC,UAAU,CAACR,YAAY,CAAC,CAAA;AAAA,EAAA;IAEhDS,aAAoC,GAAG,SAAvCA,aAAoCA,CAAAC,IAAA,EAAqB;AAAA,EAAA,IAAfC,QAAQ,GAAAD,IAAA,CAARC,QAAQ,CAAA;AAC3D,EAAA,IAAAC,SAAA,GAA0BC,QAAQ,CAAc,EAAE,CAAC;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAA5Cb,IAAAA,KAAK,GAAAe,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,QAAQ,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AAEtB,EAAA,IAAMZ,QAAQ,GAAG,SAAXA,QAAQA,CAAIe,IAAe,EAAK;IAClCD,QAAQ,CAAA,EAAA,CAAAE,MAAA,CAAAC,kBAAA,CAAKpB,KAAK,CAAA,EAAA,CAAEkB,IAAI,CAAA,CAAC,CAAC,CAAA;GAC7B,CAAA;AAED,EAAA,IAAMZ,UAAU,GAAG,SAAbA,UAAUA,CAAIe,EAAU,EAAK;AAC/B,IAAA,IAAMC,KAAK,GAAGtB,KAAK,CAACuB,SAAS,CAAC,UAACC,IAAe,EAAA;AAAA,MAAA,OAAKH,EAAE,KAAKG,IAAI,CAACH,EAAE,CAAA;KAAC,CAAA,CAAA;AAElE,IAAA,IAAIC,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,MAAA,OAAA;AACJ,KAAA;AAEAtB,IAAAA,KAAK,CAACyB,MAAM,CAACH,KAAK,EAAE,CAAC,CAAC,CAAA;AACtBL,IAAAA,QAAQ,CAAAG,kBAAA,CAAKpB,KAAK,CAAC,CAAC,CAAA;GACvB,CAAA;AAED,EAAA,IAAM0B,OAAO,GAAG;AACZ1B,IAAAA,KAAK,EAALA,KAAK;AACLG,IAAAA,QAAQ,EAARA,QAAQ;AACRG,IAAAA,UAAU,EAAVA,UAAAA;GACH,CAAA;AAEDqB,EAAAA,SAAS,CAAC,YAAM;AACZ,IAAA,OAAO,YAAM;AACT,MAAA,IAAMC,MAAM,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC,CAAA;MAC5C,IAAIF,MAAM,IAAIC,QAAQ,CAACE,IAAI,CAACC,QAAQ,CAACJ,MAAM,CAAC,EAAE;AAC1CC,QAAAA,QAAQ,CAACE,IAAI,CAACE,WAAW,CAACL,MAAM,CAAC,CAAA;AACrC,OAAA;KACH,CAAA;GACJ,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,oBAAOM,KAAA,CAAAJ,aAAA,CAAC7B,YAAY,CAACkC,QAAQ,EAAA;AAACC,IAAAA,KAAK,EAAEV,OAAAA;AAAQ,GAAA,EAAEd,QAAgC,CAAC,CAAA;AACpF;;;;"}
|
@@ -65,11 +65,6 @@ var usePopup = function usePopup(_ref) {
|
|
65
65
|
popupController.unregister(id);
|
66
66
|
setVisible(false);
|
67
67
|
}, [isOpen, isVisible, animationInfo]);
|
68
|
-
useEffect(function () {
|
69
|
-
return function () {
|
70
|
-
popupController.unregister(id);
|
71
|
-
};
|
72
|
-
}, [id]);
|
73
68
|
return {
|
74
69
|
isVisible: isVisible,
|
75
70
|
setVisible: setVisible,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"usePopup.js","sources":["../../../../src/components/Popup/hooks/usePopup.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { PopupAnimationInfo, PopupHookArgs } from '../Popup.types';\nimport { usePopupContext } from '../PopupContext';\n\n// Хук для поключения анимации\nconst usePopupAnimation = (): PopupAnimationInfo => {\n const [endAnimation, setEndAnimation] = useState<boolean>(false);\n const [endTransition, setEndTransition] = useState<boolean>(false);\n\n return { endAnimation, endTransition, setEndTransition, setEndAnimation };\n};\n\n// Хук для внутреннего состояния, необходимого для правильного отображения вложенных окон, а также для анимации\nexport const usePopup = ({ isOpen, id, popupInfo, withAnimation }: PopupHookArgs) => {\n const [isVisible, setVisible] = useState<boolean>(false);\n const popupController = usePopupContext();\n const animationInfo = usePopupAnimation();\n\n // для использования transition в качестве анимации\n useEffect(() => {\n if (withAnimation && animationInfo) {\n animationInfo.setEndTransition(!isVisible || animationInfo?.endAnimation);\n }\n }, [animationInfo, withAnimation, isVisible]);\n\n // сначала добавление/удаление из контекста, и только после этого отображение/скрытие\n useEffect(() => {\n // при первом открытии\n if (isOpen && !isVisible) {\n popupController.register({ id, ...popupInfo });\n setVisible(true);\n animationInfo.setEndAnimation(false);\n return;\n }\n\n if (isOpen || !isVisible) {\n return;\n }\n\n // если есть анимация - закрытие по окончании анимации\n if (withAnimation) {\n animationInfo.setEndAnimation(true);\n return;\n }\n\n // иначе обычное закрытие\n popupController.unregister(id);\n setVisible(false);\n }, [isOpen, isVisible, animationInfo]);\n\n
|
1
|
+
{"version":3,"file":"usePopup.js","sources":["../../../../src/components/Popup/hooks/usePopup.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { PopupAnimationInfo, PopupHookArgs } from '../Popup.types';\nimport { usePopupContext } from '../PopupContext';\n\n// Хук для поключения анимации\nconst usePopupAnimation = (): PopupAnimationInfo => {\n const [endAnimation, setEndAnimation] = useState<boolean>(false);\n const [endTransition, setEndTransition] = useState<boolean>(false);\n\n return { endAnimation, endTransition, setEndTransition, setEndAnimation };\n};\n\n// Хук для внутреннего состояния, необходимого для правильного отображения вложенных окон, а также для анимации\nexport const usePopup = ({ isOpen, id, popupInfo, withAnimation }: PopupHookArgs) => {\n const [isVisible, setVisible] = useState<boolean>(false);\n const popupController = usePopupContext();\n const animationInfo = usePopupAnimation();\n\n // для использования transition в качестве анимации\n useEffect(() => {\n if (withAnimation && animationInfo) {\n animationInfo.setEndTransition(!isVisible || animationInfo?.endAnimation);\n }\n }, [animationInfo, withAnimation, isVisible]);\n\n // сначала добавление/удаление из контекста, и только после этого отображение/скрытие\n useEffect(() => {\n // при первом открытии\n if (isOpen && !isVisible) {\n popupController.register({ id, ...popupInfo });\n setVisible(true);\n animationInfo.setEndAnimation(false);\n return;\n }\n\n if (isOpen || !isVisible) {\n return;\n }\n\n // если есть анимация - закрытие по окончании анимации\n if (withAnimation) {\n animationInfo.setEndAnimation(true);\n return;\n }\n\n // иначе обычное закрытие\n popupController.unregister(id);\n setVisible(false);\n }, [isOpen, isVisible, animationInfo]);\n\n return { isVisible, setVisible, animationInfo, withAnimation };\n};\n"],"names":["usePopupAnimation","_useState","useState","_useState2","_slicedToArray","endAnimation","setEndAnimation","_useState3","_useState4","endTransition","setEndTransition","usePopup","_ref","isOpen","id","popupInfo","withAnimation","_useState5","_useState6","isVisible","setVisible","popupController","usePopupContext","animationInfo","useEffect","register","_objectSpread","unregister"],"mappings":"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"}
|
@@ -9,7 +9,9 @@ var classes = {
|
|
9
9
|
tabRightContent: 'tab-item-right-content',
|
10
10
|
tabLeftContent: 'tab-item-left-content',
|
11
11
|
tabsHasLeftArrow: 'tabs-has-left-arrow',
|
12
|
-
tabsHasRightArrow: 'tabs-has-right-arrow'
|
12
|
+
tabsHasRightArrow: 'tabs-has-right-arrow',
|
13
|
+
tabsClipScroll: 'tabs-clip-scroll',
|
14
|
+
tabsClipShowAll: 'tabs-clip-show-all'
|
13
15
|
};
|
14
16
|
var tokens = {
|
15
17
|
disabledOpacity: '--plasma-tabs-disabled-opacity',
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"tokens.js","sources":["../../../src/components/Tabs/tokens.ts"],"sourcesContent":["export const classes = {\n selectedTabsItem: 'selected-tabs-item',\n tabsPilled: 'tabs-pilled',\n tabsGroupFilledBackground: 'tabs-group-filled-background',\n tabsStretch: 'tabs-stretched',\n tabItemDivider: 'tab-item-divider',\n tabItemAnimated: 'tab-item-animated',\n tabContent: 'tab-item-content',\n tabRightContent: 'tab-item-right-content',\n tabLeftContent: 'tab-item-left-content',\n tabsHasLeftArrow: 'tabs-has-left-arrow',\n tabsHasRightArrow: 'tabs-has-right-arrow',\n};\n\nexport const tokens = {\n disabledOpacity: '--plasma-tabs-disabled-opacity',\n containerWidth: '--plasma-tabs-container-width',\n cursor: '--plasma-tabs-cursor',\n color: '--plasma-tabs-color',\n colorHover: '--plasma-tabs-color-hover',\n\n tabsDividerHeight: '--plasma-tabs-divider-height',\n tabsDividerColor: '--plasma-tabs-divider-color',\n tabsDividerBorderRadius: '--plasma-tabs-divider-border-radius',\n\n itemSelectedDividerHeight: '--plasma-tab-item-selected-divider-height',\n itemSelectedDividerColor: '--plasma-tab-item-selected-divider-color',\n itemSelectedDividerColorHover: '--plasma-tab-item-selected-hover-divider-color',\n\n outlineFocusColor: '--plasma-tabs-outline-focus-color',\n arrowColor: '--plasma-tabs-arrow-color',\n tabsFilledBackgroundColor: '--plasma-tabs-filled-background-color',\n\n tabsBackgroundColor: '--plasma-tabs-backgorund-color',\n tabsBorderRadius: '--plasma-tabs-border-radius',\n tabsWidth: '--plasma-tabs-width',\n tabsHeight: '--plasma-tabs-height',\n tabsPadding: '--plasma-tabs-padding',\n tabsPilledBorderRadius: '--plasma-tabs-pilled-border-radius',\n\n itemBorderRadius: '--plasma-tab-item-border-radius',\n itemPilledBorderRadius: '--plasma-tab-item-pilled-border-radius',\n itemWidth: '--plasma-tab-item-width',\n itemHeight: '--plasma-tab-item-height',\n itemPadding: '--plasma-tab-item-padding',\n itemPaddingClear: '--plasma-tab-item-padding-clear',\n itemPaddingPilled: '--plasma-tab-item-padding-pilled',\n itemMarginLeft: '--plasma-tab-item-margin-left',\n itemMarginLeftFilled: '--plasma-tab-item-margin-left-filled',\n itemContentGap: '--plasma-tab-item-content-gap',\n\n itemContentPadding: '--plasma-tab-item-content-padding',\n itemContentPaddingClear: '--plasma-tab-item-content-padding-clear',\n\n arrowInnerPadding: '--plasma-tab-arrow-inner-padding',\n arrowOuterPadding: '--plasma-tab-arrow-outer-padding',\n arrowViewOuterPadding: '--plasma-tab-arrow-view-outer-padding',\n\n itemColor: '--plasma-tab-item-color',\n itemBackgroundColor: '--plasma-tab-item-background-color',\n itemColorHover: '--plasma-tab-item-color-hover',\n itemBackgroundColorHover: '--plasma-tab-item-background-color-hover',\n\n itemSelectedColor: '--plasma-tab-item-selected-color',\n itemSelectedBackgroundColor: '--plasma-tab-item-selected-background-color',\n itemSelectedColorHover: '--plasma-tab-item-selected-color-hover',\n itemSelectedBackgroundColorHover: '--plasma-tab-item-selected-background-color-hover',\n\n itemBackgroundTransition: '--plasma-tab-item-background-transition',\n\n additionalContentColor: '--plasma-tab-item-additional-content-color',\n additionalContentHoverColor: '--plasma-tab-item-hover-additional-content-color',\n additionalContentSelectedColor: '--plasma-tab-item-selected-additional-content-color',\n additionalContentSelectedHoverColor: '--plasma-tab-item-selected-hover-additional-content-color',\n\n fontFamily: '--plasma-tab-item-font-family',\n fontSize: '--plasma-tab-item-font-size',\n fontStyle: '--plasma-tab-item-font-style',\n fontWeight: '--plasma-tab-item-font-weight',\n letterSpacing: '--plasma-tab-item-letter-spacing',\n lineHeight: '--plasma-tab-item-lineheight',\n};\n"],"names":["classes","selectedTabsItem","tabsPilled","tabsGroupFilledBackground","tabsStretch","tabItemDivider","tabItemAnimated","tabContent","tabRightContent","tabLeftContent","tabsHasLeftArrow","tabsHasRightArrow","tokens","disabledOpacity","containerWidth","cursor","color","colorHover","tabsDividerHeight","tabsDividerColor","tabsDividerBorderRadius","itemSelectedDividerHeight","itemSelectedDividerColor","itemSelectedDividerColorHover","outlineFocusColor","arrowColor","tabsFilledBackgroundColor","tabsBackgroundColor","tabsBorderRadius","tabsWidth","tabsHeight","tabsPadding","tabsPilledBorderRadius","itemBorderRadius","itemPilledBorderRadius","itemWidth","itemHeight","itemPadding","itemPaddingClear","itemPaddingPilled","itemMarginLeft","itemMarginLeftFilled","itemContentGap","itemContentPadding","itemContentPaddingClear","arrowInnerPadding","arrowOuterPadding","arrowViewOuterPadding","itemColor","itemBackgroundColor","itemColorHover","itemBackgroundColorHover","itemSelectedColor","itemSelectedBackgroundColor","itemSelectedColorHover","itemSelectedBackgroundColorHover","itemBackgroundTransition","additionalContentColor","additionalContentHoverColor","additionalContentSelectedColor","additionalContentSelectedHoverColor","fontFamily","fontSize","fontStyle","fontWeight","letterSpacing","lineHeight"],"mappings":"AAAO,IAAMA,OAAO,GAAG;AACnBC,EAAAA,gBAAgB,EAAE,oBAAoB;AACtCC,EAAAA,UAAU,EAAE,aAAa;AACzBC,EAAAA,yBAAyB,EAAE,8BAA8B;AACzDC,EAAAA,WAAW,EAAE,gBAAgB;AAC7BC,EAAAA,cAAc,EAAE,kBAAkB;AAClCC,EAAAA,eAAe,EAAE,mBAAmB;AACpCC,EAAAA,UAAU,EAAE,kBAAkB;AAC9BC,EAAAA,eAAe,EAAE,wBAAwB;AACzCC,EAAAA,cAAc,EAAE,uBAAuB;AACvCC,EAAAA,gBAAgB,EAAE,qBAAqB;AACvCC,EAAAA,iBAAiB,EAAE,
|
1
|
+
{"version":3,"file":"tokens.js","sources":["../../../src/components/Tabs/tokens.ts"],"sourcesContent":["export const classes = {\n selectedTabsItem: 'selected-tabs-item',\n tabsPilled: 'tabs-pilled',\n tabsGroupFilledBackground: 'tabs-group-filled-background',\n tabsStretch: 'tabs-stretched',\n tabItemDivider: 'tab-item-divider',\n tabItemAnimated: 'tab-item-animated',\n tabContent: 'tab-item-content',\n tabRightContent: 'tab-item-right-content',\n tabLeftContent: 'tab-item-left-content',\n tabsHasLeftArrow: 'tabs-has-left-arrow',\n tabsHasRightArrow: 'tabs-has-right-arrow',\n tabsClipScroll: 'tabs-clip-scroll',\n tabsClipShowAll: 'tabs-clip-show-all',\n};\n\nexport const tokens = {\n disabledOpacity: '--plasma-tabs-disabled-opacity',\n containerWidth: '--plasma-tabs-container-width',\n cursor: '--plasma-tabs-cursor',\n color: '--plasma-tabs-color',\n colorHover: '--plasma-tabs-color-hover',\n\n tabsDividerHeight: '--plasma-tabs-divider-height',\n tabsDividerColor: '--plasma-tabs-divider-color',\n tabsDividerBorderRadius: '--plasma-tabs-divider-border-radius',\n\n itemSelectedDividerHeight: '--plasma-tab-item-selected-divider-height',\n itemSelectedDividerColor: '--plasma-tab-item-selected-divider-color',\n itemSelectedDividerColorHover: '--plasma-tab-item-selected-hover-divider-color',\n\n outlineFocusColor: '--plasma-tabs-outline-focus-color',\n arrowColor: '--plasma-tabs-arrow-color',\n tabsFilledBackgroundColor: '--plasma-tabs-filled-background-color',\n\n tabsBackgroundColor: '--plasma-tabs-backgorund-color',\n tabsBorderRadius: '--plasma-tabs-border-radius',\n tabsWidth: '--plasma-tabs-width',\n tabsHeight: '--plasma-tabs-height',\n tabsPadding: '--plasma-tabs-padding',\n tabsPilledBorderRadius: '--plasma-tabs-pilled-border-radius',\n\n itemBorderRadius: '--plasma-tab-item-border-radius',\n itemPilledBorderRadius: '--plasma-tab-item-pilled-border-radius',\n itemWidth: '--plasma-tab-item-width',\n itemHeight: '--plasma-tab-item-height',\n itemPadding: '--plasma-tab-item-padding',\n itemPaddingClear: '--plasma-tab-item-padding-clear',\n itemPaddingPilled: '--plasma-tab-item-padding-pilled',\n itemMarginLeft: '--plasma-tab-item-margin-left',\n itemMarginLeftFilled: '--plasma-tab-item-margin-left-filled',\n itemContentGap: '--plasma-tab-item-content-gap',\n\n itemContentPadding: '--plasma-tab-item-content-padding',\n itemContentPaddingClear: '--plasma-tab-item-content-padding-clear',\n\n arrowInnerPadding: '--plasma-tab-arrow-inner-padding',\n arrowOuterPadding: '--plasma-tab-arrow-outer-padding',\n arrowViewOuterPadding: '--plasma-tab-arrow-view-outer-padding',\n\n itemColor: '--plasma-tab-item-color',\n itemBackgroundColor: '--plasma-tab-item-background-color',\n itemColorHover: '--plasma-tab-item-color-hover',\n itemBackgroundColorHover: '--plasma-tab-item-background-color-hover',\n\n itemSelectedColor: '--plasma-tab-item-selected-color',\n itemSelectedBackgroundColor: '--plasma-tab-item-selected-background-color',\n itemSelectedColorHover: '--plasma-tab-item-selected-color-hover',\n itemSelectedBackgroundColorHover: '--plasma-tab-item-selected-background-color-hover',\n\n itemBackgroundTransition: '--plasma-tab-item-background-transition',\n\n additionalContentColor: '--plasma-tab-item-additional-content-color',\n additionalContentHoverColor: '--plasma-tab-item-hover-additional-content-color',\n additionalContentSelectedColor: '--plasma-tab-item-selected-additional-content-color',\n additionalContentSelectedHoverColor: '--plasma-tab-item-selected-hover-additional-content-color',\n\n fontFamily: '--plasma-tab-item-font-family',\n fontSize: '--plasma-tab-item-font-size',\n fontStyle: '--plasma-tab-item-font-style',\n fontWeight: '--plasma-tab-item-font-weight',\n letterSpacing: '--plasma-tab-item-letter-spacing',\n lineHeight: '--plasma-tab-item-lineheight',\n};\n"],"names":["classes","selectedTabsItem","tabsPilled","tabsGroupFilledBackground","tabsStretch","tabItemDivider","tabItemAnimated","tabContent","tabRightContent","tabLeftContent","tabsHasLeftArrow","tabsHasRightArrow","tabsClipScroll","tabsClipShowAll","tokens","disabledOpacity","containerWidth","cursor","color","colorHover","tabsDividerHeight","tabsDividerColor","tabsDividerBorderRadius","itemSelectedDividerHeight","itemSelectedDividerColor","itemSelectedDividerColorHover","outlineFocusColor","arrowColor","tabsFilledBackgroundColor","tabsBackgroundColor","tabsBorderRadius","tabsWidth","tabsHeight","tabsPadding","tabsPilledBorderRadius","itemBorderRadius","itemPilledBorderRadius","itemWidth","itemHeight","itemPadding","itemPaddingClear","itemPaddingPilled","itemMarginLeft","itemMarginLeftFilled","itemContentGap","itemContentPadding","itemContentPaddingClear","arrowInnerPadding","arrowOuterPadding","arrowViewOuterPadding","itemColor","itemBackgroundColor","itemColorHover","itemBackgroundColorHover","itemSelectedColor","itemSelectedBackgroundColor","itemSelectedColorHover","itemSelectedBackgroundColorHover","itemBackgroundTransition","additionalContentColor","additionalContentHoverColor","additionalContentSelectedColor","additionalContentSelectedHoverColor","fontFamily","fontSize","fontStyle","fontWeight","letterSpacing","lineHeight"],"mappings":"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"}
|
@@ -10,7 +10,7 @@ import { base as base$4 } from './variations/_pilled/base.js';
|
|
10
10
|
import { base as base$3 } from './variations/_disabled/base.js';
|
11
11
|
import { LeftContent, StyledContent, RightContent, base } from './TabItem.styles.js';
|
12
12
|
|
13
|
-
var _excluded = ["size", "view", "isActive", "selected", "disabled", "pilled", "children", "contentLeft", "contentRight", "animated", "onIndexChange", "itemIndex", "tabIndex", "className"];
|
13
|
+
var _excluded = ["size", "view", "isActive", "selected", "disabled", "pilled", "children", "contentLeft", "contentRight", "animated", "onIndexChange", "itemIndex", "tabIndex", "className", "onClick"];
|
14
14
|
var tabItemRoot = function tabItemRoot(Root) {
|
15
15
|
return /*#__PURE__*/forwardRef(function (props, outerRef) {
|
16
16
|
var size = props.size,
|
@@ -30,6 +30,7 @@ var tabItemRoot = function tabItemRoot(Root) {
|
|
30
30
|
itemIndex = props.itemIndex,
|
31
31
|
tabIndex = props.tabIndex,
|
32
32
|
className = props.className,
|
33
|
+
onClick = props.onClick,
|
33
34
|
rest = _objectWithoutProperties(props, _excluded);
|
34
35
|
var innerRef = useRef(null);
|
35
36
|
var ref = useForkRef(outerRef, innerRef);
|
@@ -71,6 +72,10 @@ var tabItemRoot = function tabItemRoot(Root) {
|
|
71
72
|
onIndexChange === null || onIndexChange === void 0 || onIndexChange(focusIndex);
|
72
73
|
refs.setCurrent(focusIndex);
|
73
74
|
}, [refs, innerRef, onIndexChange, disabled]);
|
75
|
+
var handleClick = useCallback(function (event) {
|
76
|
+
event.currentTarget.scrollIntoView();
|
77
|
+
onClick && onClick(event);
|
78
|
+
}, [onClick]);
|
74
79
|
return /*#__PURE__*/React.createElement(Root, _extends({
|
75
80
|
ref: ref,
|
76
81
|
disabled: disabled,
|
@@ -80,7 +85,8 @@ var tabItemRoot = function tabItemRoot(Root) {
|
|
80
85
|
size: size,
|
81
86
|
onFocus: onItemFocus,
|
82
87
|
tabIndex: hasKeyNavigation ? navigationTabIndex : tabIndex,
|
83
|
-
className: cx(pilledClass, selectedClass, animatedClass, className)
|
88
|
+
className: cx(pilledClass, selectedClass, animatedClass, className),
|
89
|
+
onClick: handleClick
|
84
90
|
}, rest), /*#__PURE__*/React.createElement(React.Fragment, null, contentLeft && /*#__PURE__*/React.createElement(LeftContent, {
|
85
91
|
className: classes.tabLeftContent
|
86
92
|
}, contentLeft), /*#__PURE__*/React.createElement(StyledContent, {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TabItem.js","sources":["../../../../../src/components/Tabs/ui/TabItem/TabItem.tsx"],"sourcesContent":["import React, { forwardRef, useRef, useContext, useEffect, useCallback } from 'react';\nimport { useForkRef } from '@salutejs/plasma-core';\n\nimport { ComponentConfig, RootProps } from '../../../../engines';\nimport { classes } from '../../tokens';\nimport { cx } from '../../../../utils';\nimport { TabsContext } from '../../TabsContext';\n\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as pilledCSS } from './variations/_pilled/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\nimport { TabItemProps } from './TabItem.types';\nimport { LeftContent, RightContent, StyledContent, base } from './TabItem.styles';\n\nexport const tabItemRoot = (Root: RootProps<HTMLDivElement, TabItemProps>) =>\n forwardRef<HTMLDivElement, TabItemProps>((props, outerRef) => {\n const {\n size,\n view,\n isActive,\n selected,\n disabled = false,\n pilled = false,\n children,\n contentLeft,\n contentRight,\n animated = true,\n onIndexChange,\n itemIndex,\n tabIndex,\n className,\n ...rest\n } = props;\n\n const innerRef = useRef<HTMLDivElement>(null);\n const ref = useForkRef(outerRef, innerRef);\n const refs = useContext(TabsContext);\n\n const role = 'tab';\n\n const pilledAttr = view !== 'clear' && pilled;\n const animatedClass = animated ? classes.tabItemAnimated : undefined;\n const pilledClass = pilledAttr ? classes.tabsPilled : undefined;\n const selectedClass = isActive || selected ? classes.selectedTabsItem : undefined;\n const hasKeyNavigation = itemIndex !== undefined && onIndexChange !== undefined;\n const navigationTabIndex = !disabled && refs?.current === itemIndex ? 0 : -1;\n\n useEffect(() => {\n if (!refs) {\n return;\n }\n\n refs.register(innerRef);\n\n return () => refs.unregister(innerRef);\n }, [refs]);\n\n const onItemFocus = useCallback<React.FocusEventHandler>(\n (event) => {\n if (!hasKeyNavigation && innerRef?.current) {\n innerRef.current.scrollTo({\n top: 0,\n left: innerRef.current.offsetLeft,\n behavior: 'smooth',\n });\n\n return;\n }\n\n if (disabled || !refs) {\n return;\n }\n\n const focusIndex = refs.items.findIndex((itemRef) => itemRef.current === event.target);\n\n if (focusIndex === refs.current) {\n return;\n }\n\n onIndexChange?.(focusIndex);\n refs.setCurrent(focusIndex);\n },\n [refs, innerRef, onIndexChange, disabled],\n );\n\n return (\n <Root\n ref={ref}\n disabled={disabled}\n pilled={pilled}\n role={role}\n view={view}\n size={size}\n onFocus={onItemFocus}\n tabIndex={hasKeyNavigation ? navigationTabIndex : tabIndex}\n className={cx(pilledClass, selectedClass, animatedClass, className)}\n {...rest}\n >\n <>\n {contentLeft && <LeftContent className={classes.tabLeftContent}>{contentLeft}</LeftContent>}\n <StyledContent className={classes.tabContent}>{children}</StyledContent>\n {contentRight && <RightContent className={classes.tabRightContent}>{contentRight}</RightContent>}\n </>\n </Root>\n );\n });\n\nexport const tabItemConfig: ComponentConfig = {\n name: 'TabItem',\n tag: 'button',\n layout: tabItemRoot,\n base,\n variations: {\n size: {\n css: sizeCSS,\n },\n view: {\n css: viewCSS,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n pilled: {\n css: pilledCSS,\n },\n },\n defaults: {\n view: 'default',\n },\n};\n"],"names":["tabItemRoot","Root","forwardRef","props","outerRef","size","view","isActive","selected","_props$disabled","disabled","_props$pilled","pilled","children","contentLeft","contentRight","_props$animated","animated","onIndexChange","itemIndex","tabIndex","className","rest","_objectWithoutProperties","_excluded","innerRef","useRef","ref","useForkRef","refs","useContext","TabsContext","role","pilledAttr","animatedClass","classes","tabItemAnimated","undefined","pilledClass","tabsPilled","selectedClass","selectedTabsItem","hasKeyNavigation","navigationTabIndex","current","useEffect","register","unregister","onItemFocus","useCallback","event","scrollTo","top","left","offsetLeft","behavior","focusIndex","items","findIndex","itemRef","target","setCurrent","React","createElement","_extends","onFocus","cx","Fragment","LeftContent","tabLeftContent","StyledContent","tabContent","RightContent","tabRightContent","tabItemConfig","name","tag","layout","base","variations","css","sizeCSS","viewCSS","disabledCSS","attrs","pilledCSS","defaults"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"TabItem.js","sources":["../../../../../src/components/Tabs/ui/TabItem/TabItem.tsx"],"sourcesContent":["import React, { forwardRef, useRef, useContext, useEffect, useCallback } from 'react';\nimport { useForkRef } from '@salutejs/plasma-core';\n\nimport { ComponentConfig, RootProps } from '../../../../engines';\nimport { classes } from '../../tokens';\nimport { cx } from '../../../../utils';\nimport { TabsContext } from '../../TabsContext';\n\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as pilledCSS } from './variations/_pilled/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\nimport { TabItemProps } from './TabItem.types';\nimport { LeftContent, RightContent, StyledContent, base } from './TabItem.styles';\n\nexport const tabItemRoot = (Root: RootProps<HTMLDivElement, TabItemProps>) =>\n forwardRef<HTMLDivElement, TabItemProps>((props, outerRef) => {\n const {\n size,\n view,\n isActive,\n selected,\n disabled = false,\n pilled = false,\n children,\n contentLeft,\n contentRight,\n animated = true,\n onIndexChange,\n itemIndex,\n tabIndex,\n className,\n onClick,\n ...rest\n } = props;\n\n const innerRef = useRef<HTMLDivElement>(null);\n const ref = useForkRef(outerRef, innerRef);\n const refs = useContext(TabsContext);\n\n const role = 'tab';\n\n const pilledAttr = view !== 'clear' && pilled;\n const animatedClass = animated ? classes.tabItemAnimated : undefined;\n const pilledClass = pilledAttr ? classes.tabsPilled : undefined;\n const selectedClass = isActive || selected ? classes.selectedTabsItem : undefined;\n const hasKeyNavigation = itemIndex !== undefined && onIndexChange !== undefined;\n const navigationTabIndex = !disabled && refs?.current === itemIndex ? 0 : -1;\n\n useEffect(() => {\n if (!refs) {\n return;\n }\n\n refs.register(innerRef);\n\n return () => refs.unregister(innerRef);\n }, [refs]);\n\n const onItemFocus = useCallback<React.FocusEventHandler>(\n (event) => {\n if (!hasKeyNavigation && innerRef?.current) {\n innerRef.current.scrollTo({\n top: 0,\n left: innerRef.current.offsetLeft,\n behavior: 'smooth',\n });\n\n return;\n }\n\n if (disabled || !refs) {\n return;\n }\n\n const focusIndex = refs.items.findIndex((itemRef) => itemRef.current === event.target);\n\n if (focusIndex === refs.current) {\n return;\n }\n\n onIndexChange?.(focusIndex);\n refs.setCurrent(focusIndex);\n },\n [refs, innerRef, onIndexChange, disabled],\n );\n\n const handleClick = useCallback<React.MouseEventHandler<HTMLButtonElement>>(\n (event) => {\n event.currentTarget.scrollIntoView();\n onClick && onClick(event);\n },\n [onClick],\n );\n\n return (\n <Root\n ref={ref}\n disabled={disabled}\n pilled={pilled}\n role={role}\n view={view}\n size={size}\n onFocus={onItemFocus}\n tabIndex={hasKeyNavigation ? navigationTabIndex : tabIndex}\n className={cx(pilledClass, selectedClass, animatedClass, className)}\n onClick={handleClick}\n {...rest}\n >\n <>\n {contentLeft && <LeftContent className={classes.tabLeftContent}>{contentLeft}</LeftContent>}\n <StyledContent className={classes.tabContent}>{children}</StyledContent>\n {contentRight && <RightContent className={classes.tabRightContent}>{contentRight}</RightContent>}\n </>\n </Root>\n );\n });\n\nexport const tabItemConfig: ComponentConfig = {\n name: 'TabItem',\n tag: 'button',\n layout: tabItemRoot,\n base,\n variations: {\n size: {\n css: sizeCSS,\n },\n view: {\n css: viewCSS,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n pilled: {\n css: pilledCSS,\n },\n },\n defaults: {\n view: 'default',\n },\n};\n"],"names":["tabItemRoot","Root","forwardRef","props","outerRef","size","view","isActive","selected","_props$disabled","disabled","_props$pilled","pilled","children","contentLeft","contentRight","_props$animated","animated","onIndexChange","itemIndex","tabIndex","className","onClick","rest","_objectWithoutProperties","_excluded","innerRef","useRef","ref","useForkRef","refs","useContext","TabsContext","role","pilledAttr","animatedClass","classes","tabItemAnimated","undefined","pilledClass","tabsPilled","selectedClass","selectedTabsItem","hasKeyNavigation","navigationTabIndex","current","useEffect","register","unregister","onItemFocus","useCallback","event","scrollTo","top","left","offsetLeft","behavior","focusIndex","items","findIndex","itemRef","target","setCurrent","handleClick","currentTarget","scrollIntoView","React","createElement","_extends","onFocus","cx","Fragment","LeftContent","tabLeftContent","StyledContent","tabContent","RightContent","tabRightContent","tabItemConfig","name","tag","layout","base","variations","css","sizeCSS","viewCSS","disabledCSS","attrs","pilledCSS","defaults"],"mappings":"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"}
|
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
.base_176tz0n_be36ynn__f15737ac.base_176tz0n_tabsStretched__f15737ac{width:100%;}.base_176tz0n_be36ynn__f15737ac.base_176tz0n_tabsStretched__f15737ac .base_176tz0n_sh5e38r__f15737ac,.base_176tz0n_be36ynn__f15737ac.base_176tz0n_tabsStretched__f15737ac .base_176tz0n_s8qwlso__f15737ac,.base_176tz0n_be36ynn__f15737ac.base_176tz0n_tabsStretched__f15737ac .base_176tz0n_s8qwlso__f15737ac > button{width:100%;}
|
12
12
|
|
13
|
-
.
|
14
|
-
.
|
15
|
-
.
|
16
|
-
.
|
13
|
+
.Tabs_styles_106qhdc_bu8v92r__cc94d4fb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;}
|
14
|
+
.Tabs_styles_106qhdc_s8qwlso__cc94d4fb{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}
|
15
|
+
.Tabs_styles_106qhdc_sh5e38r__cc94d4fb{margin:-0.125rem;padding:0.25rem;box-sizing:content-box;position:relative;height:100%;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.Tabs_styles_106qhdc_sh5e38r__cc94d4fb.Tabs_styles_106qhdc_tabsClipScroll__cc94d4fb{overflow:scroll;-webkit-scroll-padding:0.25rem;-moz-scroll-padding:0.25rem;-ms-scroll-padding:0.25rem;scroll-padding:0.25rem;overscroll-behavior:contain;-webkit-scrollbar-width:none;-moz-scrollbar-width:none;-ms-scrollbar-width:none;scrollbar-width:none;}.Tabs_styles_106qhdc_sh5e38r__cc94d4fb.Tabs_styles_106qhdc_tabsClipScroll__cc94d4fb::-webkit-scrollbar{display:none;}.Tabs_styles_106qhdc_sh5e38r__cc94d4fb.Tabs_styles_106qhdc_tabsClipShowAll__cc94d4fb{overflow:visible;}
|
16
|
+
.Tabs_styles_106qhdc_s1ekwj92__cc94d4fb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;cursor:pointer;border:none;background-color:transparent;padding:0;outline:none;position:relative;--plasma_private-outer-padding:var(--s1ekwj92-0);padding-right:var(--s1ekwj92-1);padding-left:var(--s1ekwj92-2);}.Tabs_styles_106qhdc_s1ekwj92__cc94d4fb::before{content:'';position:absolute;top:-0.125rem;left:-0.125rem;right:-0.125rem;bottom:-0.125rem;z-index:1;display:block;box-sizing:content-box;border:0.063rem solid transparent;border-radius:calc(var(--plasma_private-outline-radius) - 0.063rem);-webkit-transition:box-shadow 0.2s ease-in-out;transition:box-shadow 0.2s ease-in-out;pointer-events:none;}.Tabs_styles_106qhdc_s1ekwj92__cc94d4fb.Tabs_styles_106qhdc_focusVisible__cc94d4fb:focus::before,.Tabs_styles_106qhdc_s1ekwj92__cc94d4fb[data-focus-visible-added]::before{outline:none;box-shadow:0 0 0 0.063rem var(--plasma-tabs-outline-focus-color);}.Tabs_styles_106qhdc_s1ekwj92__cc94d4fb[disabled]{cursor:not-allowed;}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _slicedToArray, extends as _extends } from '../../../../_virtual/_rollupPluginBabelHelpers.js';
|
2
2
|
import React, { forwardRef, useState, useMemo, useRef, useCallback, useEffect } from 'react';
|
3
|
-
import { safeUseId
|
3
|
+
import { safeUseId } from '@salutejs/plasma-core';
|
4
4
|
import { IconDisclosureLeft } from '../../../_Icon/Icons/IconDisclosureLeft.js';
|
5
5
|
import { IconDisclosureRight } from '../../../_Icon/Icons/IconDisclosureRight.js';
|
6
6
|
import '@linaria/react';
|
@@ -14,7 +14,7 @@ import { base as base$5 } from './variations/_pilled/base.js';
|
|
14
14
|
import { base as base$4 } from './variations/_stretch/base.js';
|
15
15
|
import { StyledArrow, StyledContentWrapper, StyledContent, base } from './Tabs.styles.js';
|
16
16
|
|
17
|
-
var _excluded = ["id", "stretch", "disabled", "size", "view", "children", "pilled", "index", "className"];
|
17
|
+
var _excluded = ["id", "stretch", "disabled", "clip", "size", "view", "children", "pilled", "index", "className"];
|
18
18
|
var Keys = /*#__PURE__*/function (Keys) {
|
19
19
|
Keys[Keys["end"] = 35] = "end";
|
20
20
|
Keys[Keys["home"] = 36] = "home";
|
@@ -29,6 +29,8 @@ var tabsRoot = function tabsRoot(Root) {
|
|
29
29
|
stretch = _props$stretch === void 0 ? false : _props$stretch,
|
30
30
|
_props$disabled = props.disabled,
|
31
31
|
disabled = _props$disabled === void 0 ? false : _props$disabled,
|
32
|
+
_props$clip = props.clip,
|
33
|
+
clip = _props$clip === void 0 ? 'scroll' : _props$clip,
|
32
34
|
size = props.size,
|
33
35
|
view = props.view,
|
34
36
|
children = props.children,
|
@@ -55,14 +57,41 @@ var tabsRoot = function tabsRoot(Root) {
|
|
55
57
|
var stretchClass = firstItemVisible && lastItemVisible && stretch ? classes.tabsStretch : undefined;
|
56
58
|
var hasLeftArrowClass = !firstItemVisible ? classes.tabsHasLeftArrow : undefined;
|
57
59
|
var hasRightArrowClass = !lastItemVisible ? classes.tabsHasRightArrow : undefined;
|
60
|
+
var clipScrollClass = clip === 'scroll' ? classes.tabsClipScroll : undefined;
|
61
|
+
var clipShowAllClass = clip === 'showAll' ? classes.tabsClipShowAll : undefined;
|
58
62
|
var scrollRef = useRef(null);
|
59
63
|
var trackRef = useRef(null);
|
64
|
+
var leftArrowRef = useRef(null);
|
60
65
|
var onPrev = useCallback(function () {
|
61
|
-
|
62
|
-
|
66
|
+
var _firstOverflowingTab$;
|
67
|
+
if (disabled || !scrollRef.current) {
|
68
|
+
return;
|
69
|
+
}
|
70
|
+
var scrollLeft = Math.round(scrollRef.current.scrollLeft);
|
71
|
+
var firstOverflowingTab = refs.items.slice().reverse().find(function (item) {
|
72
|
+
if (!item.current || item.current.offsetLeft === undefined) {
|
73
|
+
return;
|
74
|
+
}
|
75
|
+
var tabStartX = item.current.offsetLeft;
|
76
|
+
return tabStartX < scrollLeft;
|
77
|
+
});
|
78
|
+
firstOverflowingTab === null || firstOverflowingTab === void 0 || (_firstOverflowingTab$ = firstOverflowingTab.current) === null || _firstOverflowingTab$ === void 0 || _firstOverflowingTab$.scrollIntoView();
|
79
|
+
}, [disabled, scrollRef, refs]);
|
63
80
|
var onNext = useCallback(function () {
|
64
|
-
|
65
|
-
|
81
|
+
var _lastOverflowingTab$c;
|
82
|
+
if (disabled || !scrollRef.current) {
|
83
|
+
return;
|
84
|
+
}
|
85
|
+
var scrollRight = Math.round(scrollRef.current.scrollLeft + scrollRef.current.clientWidth);
|
86
|
+
var lastOverflowingTab = refs.items.find(function (item) {
|
87
|
+
if (!item.current || item.current.offsetLeft === undefined) {
|
88
|
+
return;
|
89
|
+
}
|
90
|
+
var tabEndX = item.current.offsetLeft + item.current.offsetWidth;
|
91
|
+
return tabEndX > scrollRight;
|
92
|
+
});
|
93
|
+
lastOverflowingTab === null || lastOverflowingTab === void 0 || (_lastOverflowingTab$c = lastOverflowingTab.current) === null || _lastOverflowingTab$c === void 0 || _lastOverflowingTab$c.scrollIntoView();
|
94
|
+
}, [disabled, scrollRef, refs]);
|
66
95
|
var PreviousButton = useMemo(function () {
|
67
96
|
return /*#__PURE__*/React.createElement(StyledArrow, {
|
68
97
|
type: "button",
|
@@ -71,6 +100,7 @@ var tabsRoot = function tabsRoot(Root) {
|
|
71
100
|
tabIndex: disabled ? -1 : 0,
|
72
101
|
disabled: disabled,
|
73
102
|
isFilled: isFilled,
|
103
|
+
ref: leftArrowRef,
|
74
104
|
isLeftArrow: true
|
75
105
|
}, /*#__PURE__*/React.createElement(IconDisclosureLeft, {
|
76
106
|
color: "var(".concat(tokens.arrowColor, ")")
|
@@ -91,8 +121,9 @@ var tabsRoot = function tabsRoot(Root) {
|
|
91
121
|
var handleScroll = useCallback(function (event) {
|
92
122
|
event.stopPropagation();
|
93
123
|
var maxScrollLeft = event.currentTarget.scrollWidth - event.currentTarget.clientWidth;
|
94
|
-
|
95
|
-
|
124
|
+
var scrollLeft = Math.round(event.currentTarget.scrollLeft);
|
125
|
+
setFirstItemVisible(scrollLeft <= 0);
|
126
|
+
setLastItemVisible(scrollLeft >= maxScrollLeft);
|
96
127
|
}, [setFirstItemVisible, setLastItemVisible]);
|
97
128
|
var onKeyDown = useCallback(function (event) {
|
98
129
|
if (index === undefined) {
|
@@ -132,6 +163,16 @@ var tabsRoot = function tabsRoot(Root) {
|
|
132
163
|
var _scrollRef$current, _scrollRef$current2;
|
133
164
|
setLastItemVisible(((_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 ? void 0 : _scrollRef$current.scrollWidth) === ((_scrollRef$current2 = scrollRef.current) === null || _scrollRef$current2 === void 0 ? void 0 : _scrollRef$current2.clientWidth));
|
134
165
|
}, []);
|
166
|
+
|
167
|
+
// Этот хук компенсирует появление левой стрелки при прокрутке
|
168
|
+
useEffect(function () {
|
169
|
+
if (firstItemVisible || !scrollRef.current || !leftArrowRef.current) {
|
170
|
+
return;
|
171
|
+
}
|
172
|
+
scrollRef.current.scrollTo({
|
173
|
+
left: Math.round(scrollRef.current.scrollLeft + leftArrowRef.current.clientWidth)
|
174
|
+
});
|
175
|
+
}, [firstItemVisible, scrollRef, leftArrowRef]);
|
135
176
|
return /*#__PURE__*/React.createElement(TabsContext.Provider, {
|
136
177
|
value: refs
|
137
178
|
}, /*#__PURE__*/React.createElement(Root, _extends({
|
@@ -145,6 +186,7 @@ var tabsRoot = function tabsRoot(Root) {
|
|
145
186
|
className: cx(pilledClass, stretchClass, hasLeftArrowClass, hasRightArrowClass, className),
|
146
187
|
onKeyDown: onKeyDown
|
147
188
|
}, rest), !firstItemVisible && PreviousButton, /*#__PURE__*/React.createElement(StyledContentWrapper, {
|
189
|
+
className: cx(clipScrollClass, clipShowAllClass),
|
148
190
|
ref: scrollRef,
|
149
191
|
onScroll: handleScroll
|
150
192
|
}, /*#__PURE__*/React.createElement(StyledContent, {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Tabs.js","sources":["../../../../../src/components/Tabs/ui/Tabs/Tabs.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useState, useEffect, useRef, KeyboardEvent } from 'react';\nimport type { MutableRefObject } from 'react';\nimport { animatedScrollToX, safeUseId } from '@salutejs/plasma-core';\n\nimport type { RootProps } from '../../../../engines/types';\nimport { IconDisclosureLeft, IconDisclosureRight } from '../../../_Icon';\nimport { classes, tokens } from '../../tokens';\nimport { cx } from '../../../../utils';\nimport { TabItemRefs, TabsContext } from '../../TabsContext';\n\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\nimport { base as pilledCSS } from './variations/_pilled/base';\nimport { base as stretchCSS } from './variations/_stretch/base';\nimport { StyledArrow, StyledContent, StyledContentWrapper, base } from './Tabs.styles';\nimport type { TabsProps } from './Tabs.types';\n\nenum Keys {\n end = 35,\n home = 36,\n left = 37,\n right = 39,\n}\n\nexport const tabsRoot = (Root: RootProps<HTMLDivElement, TabsProps>) =>\n forwardRef<HTMLDivElement, TabsProps>((props, outerRef) => {\n const {\n id,\n stretch = false,\n disabled = false,\n size,\n view,\n children,\n pilled,\n index,\n className,\n ...rest\n } = props;\n\n const [firstItemVisible, setFirstItemVisible] = useState(true);\n const [lastItemVisible, setLastItemVisible] = useState(true);\n\n const refs = useMemo(() => new TabItemRefs(index), []);\n\n const uniqId = safeUseId();\n const tabsId = id || uniqId;\n\n const isFilled = view === 'filled'; // outer padding is only for filled view\n const pilledAttr = view !== 'clear' && pilled;\n const pilledClass = pilledAttr ? classes.tabsPilled : undefined;\n\n const stretchClass = firstItemVisible && lastItemVisible && stretch ? classes.tabsStretch : undefined;\n const hasLeftArrowClass = !firstItemVisible ? classes.tabsHasLeftArrow : undefined;\n const hasRightArrowClass = !lastItemVisible ? classes.tabsHasRightArrow : undefined;\n\n const scrollRef = useRef<HTMLElement | null>(null);\n const trackRef = useRef<HTMLElement | null>(null);\n\n const onPrev = useCallback(() => {\n !disabled &&\n scrollRef.current &&\n animatedScrollToX(scrollRef.current, scrollRef.current.scrollLeft - scrollRef.current.offsetWidth / 2);\n }, [disabled, scrollRef]);\n\n const onNext = useCallback(() => {\n !disabled &&\n scrollRef.current &&\n animatedScrollToX(scrollRef.current, scrollRef.current.scrollLeft + scrollRef.current.offsetWidth / 2);\n }, [disabled, scrollRef]);\n\n const PreviousButton = useMemo(\n () => (\n <StyledArrow\n type=\"button\"\n aria-label=\"Предыдущий таб\"\n onClick={onPrev}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n isFilled={isFilled}\n isLeftArrow\n >\n <IconDisclosureLeft color={`var(${tokens.arrowColor})`} />\n </StyledArrow>\n ),\n [onPrev, disabled, isFilled],\n );\n\n const NextButton = useMemo(\n () => (\n <StyledArrow\n type=\"button\"\n aria-label=\"Следующий таб\"\n onClick={onNext}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n isFilled={isFilled}\n >\n <IconDisclosureRight color={`var(${tokens.arrowColor})`} />\n </StyledArrow>\n ),\n [onNext, disabled, isFilled],\n );\n\n const handleScroll = useCallback(\n (event: React.UIEvent<HTMLElement>): void => {\n event.stopPropagation();\n const maxScrollLeft = event.currentTarget.scrollWidth - event.currentTarget.clientWidth;\n\n setFirstItemVisible(event.currentTarget.scrollLeft <= 0);\n setLastItemVisible(event.currentTarget.scrollLeft >= maxScrollLeft);\n },\n [setFirstItemVisible, setLastItemVisible],\n );\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (index === undefined) {\n return;\n }\n\n const minIndex = 0;\n const maxIndex = refs.items.length - 1;\n let nextIndex: number;\n\n switch (event.keyCode) {\n case Keys.end:\n nextIndex = maxIndex;\n break;\n case Keys.left:\n nextIndex = index > minIndex ? index - 1 : index;\n break;\n case Keys.right:\n nextIndex = index < maxIndex ? index + 1 : index;\n break;\n case Keys.home:\n nextIndex = minIndex;\n break;\n default:\n return;\n }\n\n if (nextIndex !== index) {\n event.preventDefault();\n refs.items[nextIndex].current?.focus();\n refs.items[nextIndex].current?.scrollIntoView({\n block: 'center',\n inline: 'center',\n behavior: 'smooth',\n });\n }\n },\n [index],\n );\n\n useEffect(() => {\n setLastItemVisible(scrollRef.current?.scrollWidth === scrollRef.current?.clientWidth);\n }, []);\n\n return (\n <TabsContext.Provider value={refs}>\n <Root\n view={view}\n role=\"tablist\"\n size={size}\n pilled={pilled}\n id={tabsId}\n ref={outerRef}\n disabled={disabled}\n className={cx(pilledClass, stretchClass, hasLeftArrowClass, hasRightArrowClass, className)}\n onKeyDown={onKeyDown}\n {...rest}\n >\n {!firstItemVisible && PreviousButton}\n <StyledContentWrapper\n ref={scrollRef as MutableRefObject<HTMLDivElement | null>}\n onScroll={handleScroll}\n >\n <StyledContent ref={trackRef as MutableRefObject<HTMLDivElement | null>}>\n {children}\n </StyledContent>\n </StyledContentWrapper>\n {!lastItemVisible && NextButton}\n </Root>\n </TabsContext.Provider>\n );\n });\n\nexport const tabsConfig = {\n name: 'Tabs',\n tag: 'div',\n layout: tabsRoot,\n base,\n variations: {\n size: {\n css: sizeCSS,\n },\n view: {\n css: viewCSS,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n stretch: {\n css: stretchCSS,\n attrs: true,\n },\n pilled: {\n css: pilledCSS,\n },\n },\n defaults: {\n view: 'clear',\n size: 'xs',\n },\n};\n"],"names":["Keys","tabsRoot","Root","forwardRef","props","outerRef","id","_props$stretch","stretch","_props$disabled","disabled","size","view","children","pilled","index","className","rest","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","firstItemVisible","setFirstItemVisible","_useState3","_useState4","lastItemVisible","setLastItemVisible","refs","useMemo","TabItemRefs","uniqId","safeUseId","tabsId","isFilled","pilledAttr","pilledClass","classes","tabsPilled","undefined","stretchClass","tabsStretch","hasLeftArrowClass","tabsHasLeftArrow","hasRightArrowClass","tabsHasRightArrow","scrollRef","useRef","trackRef","onPrev","useCallback","current","animatedScrollToX","scrollLeft","offsetWidth","onNext","PreviousButton","React","createElement","StyledArrow","type","onClick","tabIndex","isLeftArrow","IconDisclosureLeft","color","concat","tokens","arrowColor","NextButton","IconDisclosureRight","handleScroll","event","stopPropagation","maxScrollLeft","currentTarget","scrollWidth","clientWidth","onKeyDown","minIndex","maxIndex","items","length","nextIndex","keyCode","end","left","right","home","_refs$items$nextIndex","_refs$items$nextIndex2","preventDefault","focus","scrollIntoView","block","inline","behavior","useEffect","_scrollRef$current","_scrollRef$current2","TabsContext","Provider","value","_extends","role","ref","cx","StyledContentWrapper","onScroll","StyledContent","tabsConfig","name","tag","layout","base","variations","css","sizeCSS","viewCSS","disabledCSS","attrs","stretchCSS","pilledCSS","defaults"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"Tabs.js","sources":["../../../../../src/components/Tabs/ui/Tabs/Tabs.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useState, useEffect, useRef, KeyboardEvent } from 'react';\nimport type { MutableRefObject } from 'react';\nimport { safeUseId } from '@salutejs/plasma-core';\n\nimport type { RootProps } from '../../../../engines/types';\nimport { IconDisclosureLeft, IconDisclosureRight } from '../../../_Icon';\nimport { classes, tokens } from '../../tokens';\nimport { cx } from '../../../../utils';\nimport { TabItemRefs, TabsContext } from '../../TabsContext';\n\nimport { base as sizeCSS } from './variations/_size/base';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as disabledCSS } from './variations/_disabled/base';\nimport { base as pilledCSS } from './variations/_pilled/base';\nimport { base as stretchCSS } from './variations/_stretch/base';\nimport { StyledArrow, StyledContent, StyledContentWrapper, base } from './Tabs.styles';\nimport type { TabsProps } from './Tabs.types';\n\nenum Keys {\n end = 35,\n home = 36,\n left = 37,\n right = 39,\n}\n\nexport const tabsRoot = (Root: RootProps<HTMLDivElement, TabsProps>) =>\n forwardRef<HTMLDivElement, TabsProps>((props, outerRef) => {\n const {\n id,\n stretch = false,\n disabled = false,\n clip = 'scroll',\n size,\n view,\n children,\n pilled,\n index,\n className,\n ...rest\n } = props;\n const [firstItemVisible, setFirstItemVisible] = useState(true);\n const [lastItemVisible, setLastItemVisible] = useState(true);\n\n const refs = useMemo(() => new TabItemRefs(index), []);\n\n const uniqId = safeUseId();\n const tabsId = id || uniqId;\n\n const isFilled = view === 'filled'; // outer padding is only for filled view\n const pilledAttr = view !== 'clear' && pilled;\n const pilledClass = pilledAttr ? classes.tabsPilled : undefined;\n\n const stretchClass = firstItemVisible && lastItemVisible && stretch ? classes.tabsStretch : undefined;\n const hasLeftArrowClass = !firstItemVisible ? classes.tabsHasLeftArrow : undefined;\n const hasRightArrowClass = !lastItemVisible ? classes.tabsHasRightArrow : undefined;\n const clipScrollClass = clip === 'scroll' ? classes.tabsClipScroll : undefined;\n const clipShowAllClass = clip === 'showAll' ? classes.tabsClipShowAll : undefined;\n\n const scrollRef = useRef<HTMLElement | null>(null);\n const trackRef = useRef<HTMLElement | null>(null);\n const leftArrowRef = useRef<HTMLButtonElement | null>(null);\n\n const onPrev = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollLeft = Math.round(scrollRef.current.scrollLeft);\n const firstOverflowingTab = refs.items\n .slice()\n .reverse()\n .find((item: MutableRefObject<HTMLElement | null>) => {\n if (!item.current || item.current.offsetLeft === undefined) {\n return;\n }\n const tabStartX = item.current.offsetLeft;\n\n return tabStartX < scrollLeft;\n });\n\n firstOverflowingTab?.current?.scrollIntoView();\n }, [disabled, scrollRef, refs]);\n\n const onNext = useCallback(() => {\n if (disabled || !scrollRef.current) {\n return;\n }\n\n const scrollRight = Math.round(scrollRef.current.scrollLeft + scrollRef.current.clientWidth);\n const lastOverflowingTab = refs.items.find((item: MutableRefObject<HTMLElement | null>) => {\n if (!item.current || item.current.offsetLeft === undefined) {\n return;\n }\n const tabEndX = item.current.offsetLeft + item.current.offsetWidth;\n\n return tabEndX > scrollRight;\n });\n\n lastOverflowingTab?.current?.scrollIntoView();\n }, [disabled, scrollRef, refs]);\n\n const PreviousButton = useMemo(\n () => (\n <StyledArrow\n type=\"button\"\n aria-label=\"Предыдущий таб\"\n onClick={onPrev}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n isFilled={isFilled}\n ref={leftArrowRef}\n isLeftArrow\n >\n <IconDisclosureLeft color={`var(${tokens.arrowColor})`} />\n </StyledArrow>\n ),\n [onPrev, disabled, isFilled],\n );\n\n const NextButton = useMemo(\n () => (\n <StyledArrow\n type=\"button\"\n aria-label=\"Следующий таб\"\n onClick={onNext}\n tabIndex={disabled ? -1 : 0}\n disabled={disabled}\n isFilled={isFilled}\n >\n <IconDisclosureRight color={`var(${tokens.arrowColor})`} />\n </StyledArrow>\n ),\n [onNext, disabled, isFilled],\n );\n\n const handleScroll = useCallback(\n (event: React.UIEvent<HTMLElement>): void => {\n event.stopPropagation();\n const maxScrollLeft = event.currentTarget.scrollWidth - event.currentTarget.clientWidth;\n const scrollLeft = Math.round(event.currentTarget.scrollLeft);\n\n setFirstItemVisible(scrollLeft <= 0);\n setLastItemVisible(scrollLeft >= maxScrollLeft);\n },\n [setFirstItemVisible, setLastItemVisible],\n );\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (index === undefined) {\n return;\n }\n\n const minIndex = 0;\n const maxIndex = refs.items.length - 1;\n let nextIndex: number;\n\n switch (event.keyCode) {\n case Keys.end:\n nextIndex = maxIndex;\n break;\n case Keys.left:\n nextIndex = index > minIndex ? index - 1 : index;\n break;\n case Keys.right:\n nextIndex = index < maxIndex ? index + 1 : index;\n break;\n case Keys.home:\n nextIndex = minIndex;\n break;\n default:\n return;\n }\n\n if (nextIndex !== index) {\n event.preventDefault();\n refs.items[nextIndex].current?.focus();\n refs.items[nextIndex].current?.scrollIntoView({\n block: 'center',\n inline: 'center',\n behavior: 'smooth',\n });\n }\n },\n [index],\n );\n\n useEffect(() => {\n setLastItemVisible(scrollRef.current?.scrollWidth === scrollRef.current?.clientWidth);\n }, []);\n\n // Этот хук компенсирует появление левой стрелки при прокрутке\n useEffect(() => {\n if (firstItemVisible || !scrollRef.current || !leftArrowRef.current) {\n return;\n }\n\n scrollRef.current.scrollTo({\n left: Math.round(scrollRef.current.scrollLeft + leftArrowRef.current.clientWidth),\n });\n }, [firstItemVisible, scrollRef, leftArrowRef]);\n\n return (\n <TabsContext.Provider value={refs}>\n <Root\n view={view}\n role=\"tablist\"\n size={size}\n pilled={pilled}\n id={tabsId}\n ref={outerRef}\n disabled={disabled}\n className={cx(pilledClass, stretchClass, hasLeftArrowClass, hasRightArrowClass, className)}\n onKeyDown={onKeyDown}\n {...rest}\n >\n {!firstItemVisible && PreviousButton}\n <StyledContentWrapper\n className={cx(clipScrollClass, clipShowAllClass)}\n ref={scrollRef as MutableRefObject<HTMLDivElement | null>}\n onScroll={handleScroll}\n >\n <StyledContent ref={trackRef as MutableRefObject<HTMLDivElement | null>}>\n {children}\n </StyledContent>\n </StyledContentWrapper>\n {!lastItemVisible && NextButton}\n </Root>\n </TabsContext.Provider>\n );\n });\n\nexport const tabsConfig = {\n name: 'Tabs',\n tag: 'div',\n layout: tabsRoot,\n base,\n variations: {\n size: {\n css: sizeCSS,\n },\n view: {\n css: viewCSS,\n },\n disabled: {\n css: disabledCSS,\n attrs: true,\n },\n stretch: {\n css: stretchCSS,\n attrs: true,\n },\n pilled: {\n css: pilledCSS,\n },\n },\n defaults: {\n view: 'clear',\n size: 'xs',\n },\n};\n"],"names":["Keys","tabsRoot","Root","forwardRef","props","outerRef","id","_props$stretch","stretch","_props$disabled","disabled","_props$clip","clip","size","view","children","pilled","index","className","rest","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","firstItemVisible","setFirstItemVisible","_useState3","_useState4","lastItemVisible","setLastItemVisible","refs","useMemo","TabItemRefs","uniqId","safeUseId","tabsId","isFilled","pilledAttr","pilledClass","classes","tabsPilled","undefined","stretchClass","tabsStretch","hasLeftArrowClass","tabsHasLeftArrow","hasRightArrowClass","tabsHasRightArrow","clipScrollClass","tabsClipScroll","clipShowAllClass","tabsClipShowAll","scrollRef","useRef","trackRef","leftArrowRef","onPrev","useCallback","_firstOverflowingTab$","current","scrollLeft","Math","round","firstOverflowingTab","items","slice","reverse","find","item","offsetLeft","tabStartX","scrollIntoView","onNext","_lastOverflowingTab$c","scrollRight","clientWidth","lastOverflowingTab","tabEndX","offsetWidth","PreviousButton","React","createElement","StyledArrow","type","onClick","tabIndex","ref","isLeftArrow","IconDisclosureLeft","color","concat","tokens","arrowColor","NextButton","IconDisclosureRight","handleScroll","event","stopPropagation","maxScrollLeft","currentTarget","scrollWidth","onKeyDown","minIndex","maxIndex","length","nextIndex","keyCode","end","left","right","home","_refs$items$nextIndex","_refs$items$nextIndex2","preventDefault","focus","block","inline","behavior","useEffect","_scrollRef$current","_scrollRef$current2","scrollTo","TabsContext","Provider","value","_extends","role","cx","StyledContentWrapper","onScroll","StyledContent","tabsConfig","name","tag","layout","base","variations","css","sizeCSS","viewCSS","disabledCSS","attrs","stretchCSS","pilledCSS","defaults"],"mappings":"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"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import './Tabs.
|
1
|
+
import './Tabs.styles_106qhdc.css';
|
2
2
|
import { styled } from '@linaria/react';
|
3
3
|
import { tokens } from '../../tokens.js';
|
4
4
|
|
@@ -13,19 +13,19 @@ var StyledContentWrapper = /*#__PURE__*/styled('div')({
|
|
13
13
|
"class": "sh5e38r",
|
14
14
|
propsAsIs: false
|
15
15
|
});
|
16
|
-
var
|
16
|
+
var _exp4 = function _exp4() {
|
17
17
|
return function (_ref) {
|
18
18
|
var isFilled = _ref.isFilled;
|
19
19
|
return isFilled ? "var(".concat(tokens.arrowOuterPadding, ")") : '';
|
20
20
|
};
|
21
21
|
};
|
22
|
-
var
|
22
|
+
var _exp5 = function _exp5() {
|
23
23
|
return function (_ref2) {
|
24
24
|
var isLeftArrow = _ref2.isLeftArrow;
|
25
25
|
return isLeftArrow ? "var(".concat(tokens.arrowInnerPadding, ")") : 'var(--plasma_private-outer-padding)';
|
26
26
|
};
|
27
27
|
};
|
28
|
-
var
|
28
|
+
var _exp6 = function _exp6() {
|
29
29
|
return function (_ref3) {
|
30
30
|
var isLeftArrow = _ref3.isLeftArrow;
|
31
31
|
return isLeftArrow ? 'var(--plasma_private-outer-padding)' : "var(".concat(tokens.arrowInnerPadding, ")");
|
@@ -36,9 +36,9 @@ var StyledArrow = /*#__PURE__*/styled('button')({
|
|
36
36
|
"class": "s1ekwj92",
|
37
37
|
propsAsIs: false,
|
38
38
|
vars: {
|
39
|
-
"s1ekwj92-0": [/*#__PURE__*/
|
40
|
-
"s1ekwj92-1": [/*#__PURE__*/
|
41
|
-
"s1ekwj92-2": [/*#__PURE__*/
|
39
|
+
"s1ekwj92-0": [/*#__PURE__*/_exp4()],
|
40
|
+
"s1ekwj92-1": [/*#__PURE__*/_exp5()],
|
41
|
+
"s1ekwj92-2": [/*#__PURE__*/_exp6()]
|
42
42
|
}
|
43
43
|
});
|
44
44
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Tabs.styles.js","sources":["../../../../../src/components/Tabs/ui/Tabs/Tabs.styles.ts"],"sourcesContent":["import { css } from '@linaria/core';\nimport { styled } from '@linaria/react';\n\nimport { addFocus } from '../../../../mixins';\nimport { tokens } from '../../tokens';\n\nexport const base = css`\n display: flex;\n align-items: center;\n position: relative;\n`;\n\nexport const StyledContent = styled.div`\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n`;\n\nexport const StyledContentWrapper = styled.div`\n /* allows correctly display outline focus on tabs item */\n margin: -0.125rem;\n padding: 0.25rem;\n\n box-sizing: content-box;\n
|
1
|
+
{"version":3,"file":"Tabs.styles.js","sources":["../../../../../src/components/Tabs/ui/Tabs/Tabs.styles.ts"],"sourcesContent":["import { css } from '@linaria/core';\nimport { styled } from '@linaria/react';\n\nimport { addFocus } from '../../../../mixins';\nimport { classes, tokens } from '../../tokens';\n\nexport const base = css`\n display: flex;\n align-items: center;\n position: relative;\n`;\n\nexport const StyledContent = styled.div`\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n`;\n\nexport const StyledContentWrapper = styled.div`\n /* allows correctly display outline focus on tabs item */\n margin: -0.125rem;\n padding: 0.25rem;\n\n box-sizing: content-box;\n position: relative;\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n\n &.${classes.tabsClipScroll} {\n overflow: scroll;\n scroll-padding: 0.25rem;\n overscroll-behavior: contain;\n\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n }\n\n &.${classes.tabsClipShowAll} {\n overflow: visible;\n }\n`;\n\nexport const StyledArrow = styled.button<{ isLeftArrow?: boolean; isFilled?: boolean }>`\n display: flex;\n cursor: pointer;\n border: none;\n background-color: transparent;\n padding: 0;\n outline: none;\n\n ${addFocus({\n outlineSize: '0.063rem',\n outlineOffset: '-0.125rem',\n outlineColor: `var(${tokens.outlineFocusColor})`,\n outlineRadius: 'calc(var(--plasma_private-outline-radius) - 0.063rem)',\n })};\n\n &[disabled] {\n cursor: not-allowed;\n }\n\n --plasma_private-outer-padding: ${({ isFilled }) => (isFilled ? `var(${tokens.arrowOuterPadding})` : '')};\n\n padding-right: ${({ isLeftArrow }) =>\n isLeftArrow ? `var(${tokens.arrowInnerPadding})` : 'var(--plasma_private-outer-padding)'};\n padding-left: ${({ isLeftArrow }) =>\n isLeftArrow ? 'var(--plasma_private-outer-padding)' : `var(${tokens.arrowInnerPadding})`};\n`;\n"],"names":["base","StyledContent","styled","name","class","propsAsIs","StyledContentWrapper","_exp4","_ref","isFilled","concat","tokens","arrowOuterPadding","_exp5","_ref2","isLeftArrow","arrowInnerPadding","_exp6","_ref3","StyledArrow","vars"],"mappings":";;;AAMO,IAAMA,IAAI,GAIhB,UAAA;AAEM,IAAMC,aAAa,gBAAGC,MAAM,CAAA,KAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,eAAA;AAAAC,EAAAA,OAAAA,EAAA,SAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAA,CAIlC,EAAA;AAEM,IAAMC,oBAAoB,gBAAGJ,MAAM,CAAA,KAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,sBAAA;AAAAC,EAAAA,OAAAA,EAAA,SAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAA,CA0BzC,EAAA;AAAC,IAAAE,KAAA,GA3CgBA,SA2ChBA,KAAAA,GAAA;AAAA,EAAA,OAqBoC,UAAAC,IAAA,EAAA;AAAA,IAAA,IAAGC,QAAAA,GAAAA,IAAAA,CAAAA,QAAAA,CAAAA;IAAAA,OAAgBA,QAAQ,UAAAC,MAAA,CAAUC,MAAM,CAACC,iBAAkB,SAAK,EAAG,CAAA;AAAA,GAAA,CAAA;AAAA,CAAA,CAAA;AAAA,IAAAC,KAAA,GAhE1FA,SAgE0FA,KAAAA,GAAA;AAAA,EAAA,OAEvF,UAAAC,KAAA,EAAA;AAAA,IAAA,IAAGC,WAAAA,GAAAA,KAAAA,CAAAA,WAAAA,CAAAA;IAAAA,OAChBA,WAAW,UAAAL,MAAA,CAAUC,MAAM,CAACK,iBAAkB,SAAK,qCAAqC,CAAA;AAAA,GAAA,CAAA;AAAA,CAAA,CAAA;AAAA,IAAAC,KAAA,GAnE9EA,SAmE8EA,KAAAA,GAAA;AAAA,EAAA,OAC5E,UAAAC,KAAA,EAAA;AAAA,IAAA,IAAGH,WAAAA,GAAAA,KAAAA,CAAAA,WAAAA,CAAAA;IAAAA,OACfA,WAAW,GAAG,qCAAqC,GAAA,MAAA,CAAAL,MAAA,CAAUC,MAAM,CAACK,iBAAkB,EAAE,GAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAAA,CAAA;AAxBzF,IAAMG,WAAW,gBAAGjB,MAAM,CAAA,QAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,aAAA;AAAAC,EAAAA,OAAAA,EAAA,UAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAAe,EAAAA,IAAA,EAAA;AAAA,IAAA,YAAA,EAAA,cAmBKb,KAAsE,EAAA,CAAA;AAAA,IAAA,YAAA,EAAA,cAEvFM,KAC2E,EAAA,CAAA;AAAA,IAAA,YAAA,EAAA,cAC5EI,KAC4E,EAAA,CAAA;AAAA,GAAA;AAAA,CAC/F;;;;"}
|