react-native-pro-accordion 1.0.1
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/README.md +476 -0
- package/index.js +3 -0
- package/lib/commonjs/components/Accordion.js +130 -0
- package/lib/commonjs/components/Accordion.js.map +1 -0
- package/lib/commonjs/components/AccordionContent.js +125 -0
- package/lib/commonjs/components/AccordionContent.js.map +1 -0
- package/lib/commonjs/components/AccordionItem.js +146 -0
- package/lib/commonjs/components/AccordionItem.js.map +1 -0
- package/lib/commonjs/components/AccordionSeparator.js +159 -0
- package/lib/commonjs/components/AccordionSeparator.js.map +1 -0
- package/lib/commonjs/core/AccordionContext.js +82 -0
- package/lib/commonjs/core/AccordionContext.js.map +1 -0
- package/lib/commonjs/core/AccordionRef.js +64 -0
- package/lib/commonjs/core/AccordionRef.js.map +1 -0
- package/lib/commonjs/core/types.js +6 -0
- package/lib/commonjs/core/types.js.map +1 -0
- package/lib/commonjs/hooks/useAccordion.js +18 -0
- package/lib/commonjs/hooks/useAccordion.js.map +1 -0
- package/lib/commonjs/hooks/useAccordionAccessibility.js +39 -0
- package/lib/commonjs/hooks/useAccordionAccessibility.js.map +1 -0
- package/lib/commonjs/hooks/useAccordionAnimation.js +135 -0
- package/lib/commonjs/hooks/useAccordionAnimation.js.map +1 -0
- package/lib/commonjs/hooks/useAccordionKeyboard.js +43 -0
- package/lib/commonjs/hooks/useAccordionKeyboard.js.map +1 -0
- package/lib/commonjs/hooks/useAccordionState.js +96 -0
- package/lib/commonjs/hooks/useAccordionState.js.map +1 -0
- package/lib/commonjs/index.js +176 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/theme/ThemeContext.js +48 -0
- package/lib/commonjs/theme/ThemeContext.js.map +1 -0
- package/lib/commonjs/theme/defaultTheme.js +79 -0
- package/lib/commonjs/theme/defaultTheme.js.map +1 -0
- package/lib/commonjs/theme/types.js +6 -0
- package/lib/commonjs/theme/types.js.map +1 -0
- package/lib/commonjs/utils/animations.js +41 -0
- package/lib/commonjs/utils/animations.js.map +1 -0
- package/lib/commonjs/utils/layout.js +155 -0
- package/lib/commonjs/utils/layout.js.map +1 -0
- package/lib/commonjs/utils/validators.js +26 -0
- package/lib/commonjs/utils/validators.js.map +1 -0
- package/lib/module/components/Accordion.js +125 -0
- package/lib/module/components/Accordion.js.map +1 -0
- package/lib/module/components/AccordionContent.js +120 -0
- package/lib/module/components/AccordionContent.js.map +1 -0
- package/lib/module/components/AccordionItem.js +141 -0
- package/lib/module/components/AccordionItem.js.map +1 -0
- package/lib/module/components/AccordionSeparator.js +155 -0
- package/lib/module/components/AccordionSeparator.js.map +1 -0
- package/lib/module/core/AccordionContext.js +75 -0
- package/lib/module/core/AccordionContext.js.map +1 -0
- package/lib/module/core/AccordionRef.js +59 -0
- package/lib/module/core/AccordionRef.js.map +1 -0
- package/lib/module/core/types.js +136 -0
- package/lib/module/core/types.js.map +1 -0
- package/lib/module/hooks/useAccordion.js +14 -0
- package/lib/module/hooks/useAccordion.js.map +1 -0
- package/lib/module/hooks/useAccordionAccessibility.js +34 -0
- package/lib/module/hooks/useAccordionAccessibility.js.map +1 -0
- package/lib/module/hooks/useAccordionAnimation.js +131 -0
- package/lib/module/hooks/useAccordionAnimation.js.map +1 -0
- package/lib/module/hooks/useAccordionKeyboard.js +38 -0
- package/lib/module/hooks/useAccordionKeyboard.js.map +1 -0
- package/lib/module/hooks/useAccordionState.js +92 -0
- package/lib/module/hooks/useAccordionState.js.map +1 -0
- package/lib/module/index.js +43 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/theme/ThemeContext.js +41 -0
- package/lib/module/theme/ThemeContext.js.map +1 -0
- package/lib/module/theme/defaultTheme.js +75 -0
- package/lib/module/theme/defaultTheme.js.map +1 -0
- package/lib/module/theme/types.js +66 -0
- package/lib/module/theme/types.js.map +1 -0
- package/lib/module/utils/animations.js +35 -0
- package/lib/module/utils/animations.js.map +1 -0
- package/lib/module/utils/layout.js +147 -0
- package/lib/module/utils/layout.js.map +1 -0
- package/lib/module/utils/validators.js +20 -0
- package/lib/module/utils/validators.js.map +1 -0
- package/package.json +25 -0
- package/src/components/Accordion.js +164 -0
- package/src/components/AccordionContent.js +149 -0
- package/src/components/AccordionItem.js +146 -0
- package/src/components/AccordionSeparator.js +168 -0
- package/src/core/AccordionContext.js +86 -0
- package/src/core/AccordionRef.js +69 -0
- package/src/core/types.js +133 -0
- package/src/hooks/useAccordion.js +14 -0
- package/src/hooks/useAccordionAccessibility.js +30 -0
- package/src/hooks/useAccordionAnimation.js +165 -0
- package/src/hooks/useAccordionKeyboard.js +38 -0
- package/src/hooks/useAccordionState.js +119 -0
- package/src/index.js +56 -0
- package/src/theme/ThemeContext.js +40 -0
- package/src/theme/defaultTheme.js +73 -0
- package/src/theme/types.js +63 -0
- package/src/utils/animations.js +38 -0
- package/src/utils/layout.js +138 -0
- package/src/utils/validators.js +20 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","useCallback","memo","View","TouchableOpacity","StyleSheet","useAccordion","AccordionContent","useAccordionAccessibility","useAccordionKeyboard","jsx","_jsx","jsxs","_jsxs","AccordionItem","props","value","header","children","disabled","style","headerStyle","contentStyle","data","accordion","mode","readOnly","renderIcon","iconPosition","lazyRender","theme","darkMode","registerItem","unregisterItem","toggleItem","isExpanded","expanded","handlePress","accessibilityProps","label","keyboardProps","onPress","renderHeaderContent","renderIconComponent","iconElement","styles","leftIcon","rightIcon","headerContent","activeOpacity","disabledHeader","backgroundColor","colors","surface","headerTextContainer","container","animationConfig","create","width","flexDirection","alignItems","minHeight","paddingHorizontal","paddingVertical","opacity","flex","marginRight","marginLeft","displayName"],"sourceRoot":"..\\..\\..\\src","sources":["components/AccordionItem.js"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo } from "react";
|
|
4
|
+
import { View, StyleSheet } from "react-native";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Separator component for accordion items
|
|
8
|
+
* @param {Object} props
|
|
9
|
+
* @param {Object} props.style - Custom style for separator
|
|
10
|
+
* @param {string} props.color - Color of separator
|
|
11
|
+
* @param {number} props.thickness - Thickness of separator
|
|
12
|
+
* @param {number} props.marginVertical - Vertical margin
|
|
13
|
+
* @param {boolean} props.hasIcon - Whether adjacent item has icon
|
|
14
|
+
* @param {string} props.iconPosition - Position of icon ('left' or 'right')
|
|
15
|
+
*/
|
|
16
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
+
export const AccordionSeparator = /*#__PURE__*/memo(({
|
|
18
|
+
style,
|
|
19
|
+
color = "#E0E0E0",
|
|
20
|
+
thickness = 1,
|
|
21
|
+
marginVertical = 8,
|
|
22
|
+
hasIcon = false,
|
|
23
|
+
iconPosition = "right"
|
|
24
|
+
}) => {
|
|
25
|
+
const getSeparatorStyle = () => {
|
|
26
|
+
const baseStyle = {
|
|
27
|
+
height: thickness,
|
|
28
|
+
backgroundColor: color,
|
|
29
|
+
marginVertical
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// Adjust indentation if there's an icon
|
|
33
|
+
if (hasIcon) {
|
|
34
|
+
if (iconPosition === "left") {
|
|
35
|
+
return {
|
|
36
|
+
...baseStyle,
|
|
37
|
+
marginLeft: 40 // Account for icon width + padding
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return baseStyle;
|
|
42
|
+
};
|
|
43
|
+
return /*#__PURE__*/_jsx(View, {
|
|
44
|
+
style: [styles.container, getSeparatorStyle(), style]
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Separator with indentation for nested accordions
|
|
50
|
+
*/
|
|
51
|
+
export const NestedAccordionSeparator = /*#__PURE__*/memo(({
|
|
52
|
+
style,
|
|
53
|
+
color = "#E0E0E0",
|
|
54
|
+
thickness = 1,
|
|
55
|
+
marginVertical = 8,
|
|
56
|
+
nestingLevel = 0
|
|
57
|
+
}) => {
|
|
58
|
+
const getNestedStyle = () => {
|
|
59
|
+
const baseStyle = {
|
|
60
|
+
height: thickness,
|
|
61
|
+
backgroundColor: color,
|
|
62
|
+
marginVertical,
|
|
63
|
+
marginLeft: nestingLevel * 16 // Indent based on nesting level
|
|
64
|
+
};
|
|
65
|
+
return baseStyle;
|
|
66
|
+
};
|
|
67
|
+
return /*#__PURE__*/_jsx(View, {
|
|
68
|
+
style: [styles.container, getNestedStyle(), style]
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Custom separator with dashed style
|
|
74
|
+
*/
|
|
75
|
+
export const DashedSeparator = /*#__PURE__*/memo(({
|
|
76
|
+
style,
|
|
77
|
+
color = "#E0E0E0",
|
|
78
|
+
thickness = 1,
|
|
79
|
+
dashLength = 5,
|
|
80
|
+
dashGap = 3,
|
|
81
|
+
marginVertical = 8
|
|
82
|
+
}) => {
|
|
83
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
84
|
+
style: [styles.dashedContainer, {
|
|
85
|
+
marginVertical
|
|
86
|
+
}, style],
|
|
87
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
88
|
+
style: {
|
|
89
|
+
height: thickness,
|
|
90
|
+
backgroundColor: color,
|
|
91
|
+
width: dashLength,
|
|
92
|
+
marginRight: dashGap
|
|
93
|
+
}
|
|
94
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
95
|
+
style: {
|
|
96
|
+
height: thickness,
|
|
97
|
+
backgroundColor: color,
|
|
98
|
+
width: dashLength,
|
|
99
|
+
marginRight: dashGap
|
|
100
|
+
}
|
|
101
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
102
|
+
style: {
|
|
103
|
+
height: thickness,
|
|
104
|
+
backgroundColor: color,
|
|
105
|
+
width: dashLength,
|
|
106
|
+
marginRight: dashGap
|
|
107
|
+
}
|
|
108
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
109
|
+
style: {
|
|
110
|
+
height: thickness,
|
|
111
|
+
backgroundColor: color,
|
|
112
|
+
width: dashLength
|
|
113
|
+
}
|
|
114
|
+
})]
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Gradient separator for modern UI
|
|
120
|
+
*/
|
|
121
|
+
export const GradientSeparator = /*#__PURE__*/memo(({
|
|
122
|
+
style,
|
|
123
|
+
colors = ["#E0E0E0", "#FFFFFF"],
|
|
124
|
+
height = 1,
|
|
125
|
+
marginVertical = 8
|
|
126
|
+
}) => {
|
|
127
|
+
// Note: For actual gradient, you'd need Expo LinearGradient or similar
|
|
128
|
+
// This is a simplified version
|
|
129
|
+
return /*#__PURE__*/_jsx(View, {
|
|
130
|
+
style: [styles.gradientContainer, {
|
|
131
|
+
height,
|
|
132
|
+
marginVertical,
|
|
133
|
+
backgroundColor: colors[0]
|
|
134
|
+
}, style]
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
const styles = StyleSheet.create({
|
|
138
|
+
container: {
|
|
139
|
+
width: "100%"
|
|
140
|
+
},
|
|
141
|
+
dashedContainer: {
|
|
142
|
+
flexDirection: "row",
|
|
143
|
+
alignItems: "center",
|
|
144
|
+
width: "100%"
|
|
145
|
+
},
|
|
146
|
+
gradientContainer: {
|
|
147
|
+
width: "100%",
|
|
148
|
+
opacity: 0.5
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
AccordionSeparator.displayName = "AccordionSeparator";
|
|
152
|
+
NestedAccordionSeparator.displayName = "NestedAccordionSeparator";
|
|
153
|
+
DashedSeparator.displayName = "DashedSeparator";
|
|
154
|
+
GradientSeparator.displayName = "GradientSeparator";
|
|
155
|
+
//# sourceMappingURL=AccordionSeparator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","View","StyleSheet","jsx","_jsx","jsxs","_jsxs","AccordionSeparator","style","color","thickness","marginVertical","hasIcon","iconPosition","getSeparatorStyle","baseStyle","height","backgroundColor","marginLeft","styles","container","NestedAccordionSeparator","nestingLevel","getNestedStyle","DashedSeparator","dashLength","dashGap","dashedContainer","children","width","marginRight","GradientSeparator","colors","gradientContainer","create","flexDirection","alignItems","opacity","displayName"],"sourceRoot":"..\\..\\..\\src","sources":["components/AccordionSeparator.js"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { createContext, useContext, useRef, useCallback } from "react";
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
const defaultAnimationConfig = {
|
|
6
|
+
type: "timing",
|
|
7
|
+
duration: 300
|
|
8
|
+
};
|
|
9
|
+
export const AccordionContext = /*#__PURE__*/createContext(null);
|
|
10
|
+
export const useAccordion = () => {
|
|
11
|
+
const context = useContext(AccordionContext);
|
|
12
|
+
if (!context) {
|
|
13
|
+
throw new Error("useAccordion must be used within an Accordion");
|
|
14
|
+
}
|
|
15
|
+
return context;
|
|
16
|
+
};
|
|
17
|
+
export const AccordionProvider = ({
|
|
18
|
+
mode,
|
|
19
|
+
readOnly,
|
|
20
|
+
animationConfig = defaultAnimationConfig,
|
|
21
|
+
renderIcon,
|
|
22
|
+
iconPosition = "right",
|
|
23
|
+
showSeparators = false,
|
|
24
|
+
lazyRender = false,
|
|
25
|
+
theme,
|
|
26
|
+
darkMode = false,
|
|
27
|
+
expandedValues,
|
|
28
|
+
onToggleItem,
|
|
29
|
+
children
|
|
30
|
+
}) => {
|
|
31
|
+
const itemsMap = useRef(new Map());
|
|
32
|
+
const eventsRef = useRef({});
|
|
33
|
+
const registerItem = useCallback((value, disabled = false, data) => {
|
|
34
|
+
itemsMap.current.set(value, {
|
|
35
|
+
disabled,
|
|
36
|
+
data
|
|
37
|
+
});
|
|
38
|
+
}, []);
|
|
39
|
+
const unregisterItem = useCallback(value => {
|
|
40
|
+
itemsMap.current.delete(value);
|
|
41
|
+
}, []);
|
|
42
|
+
const toggleItem = useCallback(value => {
|
|
43
|
+
if (readOnly) return;
|
|
44
|
+
const item = itemsMap.current.get(value);
|
|
45
|
+
if (item?.disabled) return;
|
|
46
|
+
onToggleItem(value);
|
|
47
|
+
}, [readOnly, onToggleItem]);
|
|
48
|
+
const isExpanded = useCallback(value => {
|
|
49
|
+
return expandedValues.includes(value);
|
|
50
|
+
}, [expandedValues]);
|
|
51
|
+
const getItemData = useCallback(value => {
|
|
52
|
+
return itemsMap.current.get(value)?.data;
|
|
53
|
+
}, []);
|
|
54
|
+
const contextValue = {
|
|
55
|
+
mode,
|
|
56
|
+
readOnly,
|
|
57
|
+
animationConfig,
|
|
58
|
+
renderIcon,
|
|
59
|
+
iconPosition,
|
|
60
|
+
showSeparators,
|
|
61
|
+
lazyRender,
|
|
62
|
+
theme,
|
|
63
|
+
darkMode,
|
|
64
|
+
registerItem,
|
|
65
|
+
unregisterItem,
|
|
66
|
+
toggleItem,
|
|
67
|
+
isExpanded,
|
|
68
|
+
getItemData
|
|
69
|
+
};
|
|
70
|
+
return /*#__PURE__*/_jsx(AccordionContext.Provider, {
|
|
71
|
+
value: contextValue,
|
|
72
|
+
children: children
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=AccordionContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","createContext","useContext","useRef","useCallback","jsx","_jsx","defaultAnimationConfig","type","duration","AccordionContext","useAccordion","context","Error","AccordionProvider","mode","readOnly","animationConfig","renderIcon","iconPosition","showSeparators","lazyRender","theme","darkMode","expandedValues","onToggleItem","children","itemsMap","Map","eventsRef","registerItem","value","disabled","data","current","set","unregisterItem","delete","toggleItem","item","get","isExpanded","includes","getItemData","contextValue","Provider"],"sourceRoot":"..\\..\\..\\src","sources":["core/AccordionContext.js"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,UAAU,EAAEC,MAAM,EAAEC,WAAW,QAAQ,OAAO;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE9E,MAAMC,sBAAsB,GAAG;EAC7BC,IAAI,EAAE,QAAQ;EACdC,QAAQ,EAAE;AACZ,CAAC;AAED,OAAO,MAAMC,gBAAgB,gBAAGT,aAAa,CAAC,IAAI,CAAC;AAEnD,OAAO,MAAMU,YAAY,GAAGA,CAAA,KAAM;EAChC,MAAMC,OAAO,GAAGV,UAAU,CAACQ,gBAAgB,CAAC;EAC5C,IAAI,CAACE,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,+CAA+C,CAAC;EAClE;EACA,OAAOD,OAAO;AAChB,CAAC;AAED,OAAO,MAAME,iBAAiB,GAAGA,CAAC;EAChCC,IAAI;EACJC,QAAQ;EACRC,eAAe,GAAGV,sBAAsB;EACxCW,UAAU;EACVC,YAAY,GAAG,OAAO;EACtBC,cAAc,GAAG,KAAK;EACtBC,UAAU,GAAG,KAAK;EAClBC,KAAK;EACLC,QAAQ,GAAG,KAAK;EAChBC,cAAc;EACdC,YAAY;EACZC;AACF,CAAC,KAAK;EACJ,MAAMC,QAAQ,GAAGxB,MAAM,CAAC,IAAIyB,GAAG,CAAC,CAAC,CAAC;EAClC,MAAMC,SAAS,GAAG1B,MAAM,CAAC,CAAC,CAAC,CAAC;EAE5B,MAAM2B,YAAY,GAAG1B,WAAW,CAAC,CAAC2B,KAAK,EAAEC,QAAQ,GAAG,KAAK,EAAEC,IAAI,KAAK;IAClEN,QAAQ,CAACO,OAAO,CAACC,GAAG,CAACJ,KAAK,EAAE;MAAEC,QAAQ;MAAEC;IAAK,CAAC,CAAC;EACjD,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMG,cAAc,GAAGhC,WAAW,CAAE2B,KAAK,IAAK;IAC5CJ,QAAQ,CAACO,OAAO,CAACG,MAAM,CAACN,KAAK,CAAC;EAChC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMO,UAAU,GAAGlC,WAAW,CAC3B2B,KAAK,IAAK;IACT,IAAIf,QAAQ,EAAE;IACd,MAAMuB,IAAI,GAAGZ,QAAQ,CAACO,OAAO,CAACM,GAAG,CAACT,KAAK,CAAC;IACxC,IAAIQ,IAAI,EAAEP,QAAQ,EAAE;IACpBP,YAAY,CAACM,KAAK,CAAC;EACrB,CAAC,EACD,CAACf,QAAQ,EAAES,YAAY,CACzB,CAAC;EAED,MAAMgB,UAAU,GAAGrC,WAAW,CAC3B2B,KAAK,IAAK;IACT,OAAOP,cAAc,CAACkB,QAAQ,CAACX,KAAK,CAAC;EACvC,CAAC,EACD,CAACP,cAAc,CACjB,CAAC;EAED,MAAMmB,WAAW,GAAGvC,WAAW,CAAE2B,KAAK,IAAK;IACzC,OAAOJ,QAAQ,CAACO,OAAO,CAACM,GAAG,CAACT,KAAK,CAAC,EAAEE,IAAI;EAC1C,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMW,YAAY,GAAG;IACnB7B,IAAI;IACJC,QAAQ;IACRC,eAAe;IACfC,UAAU;IACVC,YAAY;IACZC,cAAc;IACdC,UAAU;IACVC,KAAK;IACLC,QAAQ;IACRO,YAAY;IACZM,cAAc;IACdE,UAAU;IACVG,UAAU;IACVE;EACF,CAAC;EAED,oBACErC,IAAA,CAACI,gBAAgB,CAACmC,QAAQ;IAACd,KAAK,EAAEa,YAAa;IAAAlB,QAAA,EAC5CA;EAAQ,CACgB,CAAC;AAEhC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export class AccordionRefImpl {
|
|
4
|
+
constructor(expandedValuesRef, setExpandedValues, mode, readOnly) {
|
|
5
|
+
this.expandedValuesRef = expandedValuesRef;
|
|
6
|
+
this.setExpandedValues = setExpandedValues;
|
|
7
|
+
this.mode = mode;
|
|
8
|
+
this.readOnly = readOnly;
|
|
9
|
+
}
|
|
10
|
+
open = value => {
|
|
11
|
+
if (this.readOnly) return;
|
|
12
|
+
const currentValues = this.expandedValuesRef.current;
|
|
13
|
+
if (currentValues.includes(value)) return;
|
|
14
|
+
let newValues;
|
|
15
|
+
if (this.mode === "single") {
|
|
16
|
+
newValues = [value];
|
|
17
|
+
} else {
|
|
18
|
+
newValues = [...currentValues, value];
|
|
19
|
+
}
|
|
20
|
+
this.setExpandedValues(newValues);
|
|
21
|
+
};
|
|
22
|
+
close = value => {
|
|
23
|
+
if (this.readOnly) return;
|
|
24
|
+
const currentValues = this.expandedValuesRef.current;
|
|
25
|
+
if (!currentValues.includes(value)) return;
|
|
26
|
+
const newValues = currentValues.filter(v => v !== value);
|
|
27
|
+
this.setExpandedValues(newValues);
|
|
28
|
+
};
|
|
29
|
+
toggle = value => {
|
|
30
|
+
if (this.readOnly) return;
|
|
31
|
+
const currentValues = this.expandedValuesRef.current;
|
|
32
|
+
if (currentValues.includes(value)) {
|
|
33
|
+
this.close(value);
|
|
34
|
+
} else {
|
|
35
|
+
this.open(value);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
expandAll = () => {
|
|
39
|
+
if (this.readOnly || this.mode !== "multiple") return;
|
|
40
|
+
console.warn("expandAll requires all item values to be known");
|
|
41
|
+
};
|
|
42
|
+
collapseAll = () => {
|
|
43
|
+
if (this.readOnly) return;
|
|
44
|
+
this.setExpandedValues([]);
|
|
45
|
+
};
|
|
46
|
+
toggleAll = () => {
|
|
47
|
+
if (this.readOnly || this.mode !== "multiple") return;
|
|
48
|
+
const currentValues = this.expandedValuesRef.current;
|
|
49
|
+
if (currentValues.length > 0) {
|
|
50
|
+
this.collapseAll();
|
|
51
|
+
} else {
|
|
52
|
+
this.expandAll();
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
getExpandedItems = () => {
|
|
56
|
+
return [...this.expandedValuesRef.current];
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=AccordionRef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AccordionRefImpl","constructor","expandedValuesRef","setExpandedValues","mode","readOnly","open","value","currentValues","current","includes","newValues","close","filter","v","toggle","expandAll","console","warn","collapseAll","toggleAll","length","getExpandedItems"],"sourceRoot":"..\\..\\..\\src","sources":["core/AccordionRef.js"],"mappings":";;AAAA,OAAO,MAAMA,gBAAgB,CAAC;EAC5BC,WAAWA,CAACC,iBAAiB,EAAEC,iBAAiB,EAAEC,IAAI,EAAEC,QAAQ,EAAE;IAChE,IAAI,CAACH,iBAAiB,GAAGA,iBAAiB;IAC1C,IAAI,CAACC,iBAAiB,GAAGA,iBAAiB;IAC1C,IAAI,CAACC,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,QAAQ,GAAGA,QAAQ;EAC1B;EAEAC,IAAI,GAAIC,KAAK,IAAK;IAChB,IAAI,IAAI,CAACF,QAAQ,EAAE;IAEnB,MAAMG,aAAa,GAAG,IAAI,CAACN,iBAAiB,CAACO,OAAO;IACpD,IAAID,aAAa,CAACE,QAAQ,CAACH,KAAK,CAAC,EAAE;IAEnC,IAAII,SAAS;IACb,IAAI,IAAI,CAACP,IAAI,KAAK,QAAQ,EAAE;MAC1BO,SAAS,GAAG,CAACJ,KAAK,CAAC;IACrB,CAAC,MAAM;MACLI,SAAS,GAAG,CAAC,GAAGH,aAAa,EAAED,KAAK,CAAC;IACvC;IAEA,IAAI,CAACJ,iBAAiB,CAACQ,SAAS,CAAC;EACnC,CAAC;EAEDC,KAAK,GAAIL,KAAK,IAAK;IACjB,IAAI,IAAI,CAACF,QAAQ,EAAE;IAEnB,MAAMG,aAAa,GAAG,IAAI,CAACN,iBAAiB,CAACO,OAAO;IACpD,IAAI,CAACD,aAAa,CAACE,QAAQ,CAACH,KAAK,CAAC,EAAE;IAEpC,MAAMI,SAAS,GAAGH,aAAa,CAACK,MAAM,CAAEC,CAAC,IAAKA,CAAC,KAAKP,KAAK,CAAC;IAC1D,IAAI,CAACJ,iBAAiB,CAACQ,SAAS,CAAC;EACnC,CAAC;EAEDI,MAAM,GAAIR,KAAK,IAAK;IAClB,IAAI,IAAI,CAACF,QAAQ,EAAE;IAEnB,MAAMG,aAAa,GAAG,IAAI,CAACN,iBAAiB,CAACO,OAAO;IACpD,IAAID,aAAa,CAACE,QAAQ,CAACH,KAAK,CAAC,EAAE;MACjC,IAAI,CAACK,KAAK,CAACL,KAAK,CAAC;IACnB,CAAC,MAAM;MACL,IAAI,CAACD,IAAI,CAACC,KAAK,CAAC;IAClB;EACF,CAAC;EAEDS,SAAS,GAAGA,CAAA,KAAM;IAChB,IAAI,IAAI,CAACX,QAAQ,IAAI,IAAI,CAACD,IAAI,KAAK,UAAU,EAAE;IAC/Ca,OAAO,CAACC,IAAI,CAAC,gDAAgD,CAAC;EAChE,CAAC;EAEDC,WAAW,GAAGA,CAAA,KAAM;IAClB,IAAI,IAAI,CAACd,QAAQ,EAAE;IACnB,IAAI,CAACF,iBAAiB,CAAC,EAAE,CAAC;EAC5B,CAAC;EAEDiB,SAAS,GAAGA,CAAA,KAAM;IAChB,IAAI,IAAI,CAACf,QAAQ,IAAI,IAAI,CAACD,IAAI,KAAK,UAAU,EAAE;IAC/C,MAAMI,aAAa,GAAG,IAAI,CAACN,iBAAiB,CAACO,OAAO;IACpD,IAAID,aAAa,CAACa,MAAM,GAAG,CAAC,EAAE;MAC5B,IAAI,CAACF,WAAW,CAAC,CAAC;IACpB,CAAC,MAAM;MACL,IAAI,CAACH,SAAS,CAAC,CAAC;IAClB;EACF,CAAC;EAEDM,gBAAgB,GAAGA,CAAA,KAAM;IACvB,OAAO,CAAC,GAAG,IAAI,CAACpB,iBAAiB,CAACO,OAAO,CAAC;EAC5C,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @typedef {'timing' | 'spring'} AnimationType
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @typedef {Object} TimingAnimationConfig
|
|
9
|
+
* @property {'timing'} type
|
|
10
|
+
* @property {number} [duration]
|
|
11
|
+
* @property {Function} [easing]
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @typedef {Object} SpringAnimationConfig
|
|
16
|
+
* @property {'spring'} type
|
|
17
|
+
* @property {number} [damping]
|
|
18
|
+
* @property {number} [mass]
|
|
19
|
+
* @property {number} [stiffness]
|
|
20
|
+
* @property {boolean} [overshootClamping]
|
|
21
|
+
* @property {number} [restSpeedThreshold]
|
|
22
|
+
* @property {number} [restDisplacementThreshold]
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @typedef {TimingAnimationConfig | SpringAnimationConfig} AnimationConfig
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @typedef {Object} AccordionTheme
|
|
31
|
+
* @property {Object} colors
|
|
32
|
+
* @property {string} colors.background
|
|
33
|
+
* @property {string} colors.surface
|
|
34
|
+
* @property {string} colors.primary
|
|
35
|
+
* @property {string} colors.text
|
|
36
|
+
* @property {string} colors.textSecondary
|
|
37
|
+
* @property {string} colors.border
|
|
38
|
+
* @property {string} colors.disabled
|
|
39
|
+
* @property {string} colors.icon
|
|
40
|
+
* @property {Object} spacing
|
|
41
|
+
* @property {number} spacing.xs
|
|
42
|
+
* @property {number} spacing.sm
|
|
43
|
+
* @property {number} spacing.md
|
|
44
|
+
* @property {number} spacing.lg
|
|
45
|
+
* @property {number} spacing.xl
|
|
46
|
+
* @property {Object} typography
|
|
47
|
+
* @property {Object} typography.header
|
|
48
|
+
* @property {Object} typography.content
|
|
49
|
+
* @property {Object} borderRadius
|
|
50
|
+
* @property {number} borderRadius.sm
|
|
51
|
+
* @property {number} borderRadius.md
|
|
52
|
+
* @property {number} borderRadius.lg
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @typedef {Object} AccordionItemProps
|
|
57
|
+
* @property {string} value - Unique identifier for the item
|
|
58
|
+
* @property {React.ReactNode | Function} header - Header content or render function
|
|
59
|
+
* @property {React.ReactNode | Function} children - Content to display when expanded
|
|
60
|
+
* @property {boolean} [disabled] - Whether the item is disabled
|
|
61
|
+
* @property {object} [style] - Custom style overrides
|
|
62
|
+
* @property {object} [headerStyle] - Custom header style
|
|
63
|
+
* @property {object} [contentStyle] - Custom content style
|
|
64
|
+
* @property {any} [data] - Custom data attached to item
|
|
65
|
+
*/
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* @typedef {Object} AccordionEventHandlers
|
|
69
|
+
* @property {Function} [onOpen]
|
|
70
|
+
* @property {Function} [onClose]
|
|
71
|
+
* @property {Function} [onToggle]
|
|
72
|
+
* @property {Function} [onAnimationStart]
|
|
73
|
+
* @property {Function} [onAnimationEnd]
|
|
74
|
+
* @property {Function} [onStateChange]
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @typedef {Object} AccordionProps
|
|
79
|
+
* @property {React.ReactNode} children - Array of accordion items
|
|
80
|
+
* @property {string[]} [value] - Controlled expanded values
|
|
81
|
+
* @property {string[]} [defaultValue] - Initial expanded values (uncontrolled)
|
|
82
|
+
* @property {Function} [onChange] - Callback when expanded values change
|
|
83
|
+
* @property {'single' | 'multiple'} [mode] - Expand mode
|
|
84
|
+
* @property {boolean} [readOnly] - Whether accordion is in read-only mode
|
|
85
|
+
* @property {AnimationConfig} [animation] - Animation configuration
|
|
86
|
+
* @property {Function} [renderIcon] - Custom renderer for expand/collapse icon
|
|
87
|
+
* @property {'left' | 'right'} [iconPosition] - Icon position
|
|
88
|
+
* @property {boolean} [showSeparators] - Whether to show item separators
|
|
89
|
+
* @property {React.ReactNode} [separatorComponent] - Custom separator component
|
|
90
|
+
* @property {object} [separatorStyle] - Separator style
|
|
91
|
+
* @property {boolean} [stickyHeaders] - Enable sticky headers
|
|
92
|
+
* @property {boolean} [lazyRender] - Lazy render content
|
|
93
|
+
* @property {Partial<AccordionTheme>} [theme] - Custom theme
|
|
94
|
+
* @property {boolean} [darkMode] - Enable dark mode
|
|
95
|
+
* @property {string} [accessibilityLabel] - Accessibility label
|
|
96
|
+
* @property {string} [testID] - Test ID for testing
|
|
97
|
+
* @property {Function} [onOpen]
|
|
98
|
+
* @property {Function} [onClose]
|
|
99
|
+
* @property {Function} [onToggle]
|
|
100
|
+
* @property {Function} [onAnimationStart]
|
|
101
|
+
* @property {Function} [onAnimationEnd]
|
|
102
|
+
* @property {Function} [onStateChange]
|
|
103
|
+
*/
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* @typedef {Object} AccordionRef
|
|
107
|
+
* @property {Function} open - Open a specific item by value
|
|
108
|
+
* @property {Function} close - Close a specific item by value
|
|
109
|
+
* @property {Function} toggle - Toggle a specific item by value
|
|
110
|
+
* @property {Function} expandAll - Open all items (only works in multiple mode)
|
|
111
|
+
* @property {Function} collapseAll - Close all items
|
|
112
|
+
* @property {Function} toggleAll - Toggle all items
|
|
113
|
+
* @property {Function} getExpandedItems - Get currently expanded items
|
|
114
|
+
*/
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @typedef {Object} AccordionContextType
|
|
118
|
+
* @property {string} mode
|
|
119
|
+
* @property {boolean} readOnly
|
|
120
|
+
* @property {AnimationConfig} animationConfig
|
|
121
|
+
* @property {Function} [renderIcon]
|
|
122
|
+
* @property {string} iconPosition
|
|
123
|
+
* @property {boolean} showSeparators
|
|
124
|
+
* @property {boolean} lazyRender
|
|
125
|
+
* @property {AccordionTheme} [theme]
|
|
126
|
+
* @property {boolean} darkMode
|
|
127
|
+
* @property {Function} registerItem
|
|
128
|
+
* @property {Function} unregisterItem
|
|
129
|
+
* @property {Function} toggleItem
|
|
130
|
+
* @property {Function} isExpanded
|
|
131
|
+
* @property {Function} getItemData
|
|
132
|
+
* @property {Function} [onEvent]
|
|
133
|
+
*/
|
|
134
|
+
|
|
135
|
+
export {};
|
|
136
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"..\\..\\..\\src","sources":["core/types.js"],"mappings":";;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
export function useAccordion(defaultIndex = null) {
|
|
5
|
+
const [activeIndex, setActiveIndex] = useState(defaultIndex);
|
|
6
|
+
const toggle = index => {
|
|
7
|
+
setActiveIndex(prev => prev === index ? null : index);
|
|
8
|
+
};
|
|
9
|
+
return {
|
|
10
|
+
activeIndex,
|
|
11
|
+
toggle
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=useAccordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useState","useAccordion","defaultIndex","activeIndex","setActiveIndex","toggle","index","prev"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useAccordion.js"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,OAAO;AAEhC,OAAO,SAASC,YAAYA,CAACC,YAAY,GAAG,IAAI,EAAE;EAChD,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGJ,QAAQ,CAACE,YAAY,CAAC;EAE5D,MAAMG,MAAM,GAAIC,KAAK,IAAK;IACxBF,cAAc,CAAEG,IAAI,IAAMA,IAAI,KAAKD,KAAK,GAAG,IAAI,GAAGA,KAAM,CAAC;EAC3D,CAAC;EAED,OAAO;IACLH,WAAW;IACXE;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useMemo } from "react";
|
|
4
|
+
import { Platform } from "react-native";
|
|
5
|
+
export const useAccordionAccessibility = props => {
|
|
6
|
+
const {
|
|
7
|
+
expanded,
|
|
8
|
+
disabled,
|
|
9
|
+
label
|
|
10
|
+
} = props;
|
|
11
|
+
const accessibilityProps = useMemo(() => {
|
|
12
|
+
const baseProps = {
|
|
13
|
+
accessible: true,
|
|
14
|
+
accessibilityRole: "button",
|
|
15
|
+
accessibilityState: {
|
|
16
|
+
expanded,
|
|
17
|
+
disabled
|
|
18
|
+
},
|
|
19
|
+
accessibilityLabel: label || "Toggle accordion"
|
|
20
|
+
};
|
|
21
|
+
if (Platform.OS === "web") {
|
|
22
|
+
return {
|
|
23
|
+
...baseProps,
|
|
24
|
+
"aria-expanded": expanded,
|
|
25
|
+
"aria-disabled": disabled
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return baseProps;
|
|
29
|
+
}, [expanded, disabled, label]);
|
|
30
|
+
return {
|
|
31
|
+
accessibilityProps
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=useAccordionAccessibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useMemo","Platform","useAccordionAccessibility","props","expanded","disabled","label","accessibilityProps","baseProps","accessible","accessibilityRole","accessibilityState","accessibilityLabel","OS"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useAccordionAccessibility.js"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,QAAQ,QAAQ,cAAc;AAEvC,OAAO,MAAMC,yBAAyB,GAAIC,KAAK,IAAK;EAClD,MAAM;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC;EAAM,CAAC,GAAGH,KAAK;EAE3C,MAAMI,kBAAkB,GAAGP,OAAO,CAAC,MAAM;IACvC,MAAMQ,SAAS,GAAG;MAChBC,UAAU,EAAE,IAAI;MAChBC,iBAAiB,EAAE,QAAQ;MAC3BC,kBAAkB,EAAE;QAClBP,QAAQ;QACRC;MACF,CAAC;MACDO,kBAAkB,EAAEN,KAAK,IAAI;IAC/B,CAAC;IAED,IAAIL,QAAQ,CAACY,EAAE,KAAK,KAAK,EAAE;MACzB,OAAO;QACL,GAAGL,SAAS;QACZ,eAAe,EAAEJ,QAAQ;QACzB,eAAe,EAAEC;MACnB,CAAC;IACH;IAEA,OAAOG,SAAS;EAClB,CAAC,EAAE,CAACJ,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,CAAC,CAAC;EAE/B,OAAO;IAAEC;EAAmB,CAAC;AAC/B,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useRef, useEffect, useCallback } from "react";
|
|
4
|
+
import { useSharedValue, withTiming, withSpring, Easing, runOnJS } from "react-native-reanimated";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Hook for managing accordion animations
|
|
8
|
+
* @param {Object} options
|
|
9
|
+
* @param {boolean} options.expanded - Whether item is expanded
|
|
10
|
+
* @param {number} options.contentHeight - Height of the content
|
|
11
|
+
* @param {Object} options.animationConfig - Animation configuration
|
|
12
|
+
* @param {Function} options.onAnimationStart - Callback when animation starts
|
|
13
|
+
* @param {Function} options.onAnimationEnd - Callback when animation ends
|
|
14
|
+
* @returns {Object} Animation values and utilities
|
|
15
|
+
*/
|
|
16
|
+
export const useAccordionAnimation = ({
|
|
17
|
+
expanded,
|
|
18
|
+
contentHeight,
|
|
19
|
+
animationConfig,
|
|
20
|
+
onAnimationStart,
|
|
21
|
+
onAnimationEnd
|
|
22
|
+
}) => {
|
|
23
|
+
const height = useSharedValue(expanded ? contentHeight : 0);
|
|
24
|
+
const opacity = useSharedValue(expanded ? 1 : 0);
|
|
25
|
+
const rotation = useSharedValue(expanded ? 1 : 0);
|
|
26
|
+
const isAnimating = useRef(false);
|
|
27
|
+
const getAnimatedHeight = useCallback(toValue => {
|
|
28
|
+
if (animationConfig.type === "spring") {
|
|
29
|
+
return withSpring(toValue, {
|
|
30
|
+
damping: animationConfig.damping ?? 10,
|
|
31
|
+
mass: animationConfig.mass ?? 1,
|
|
32
|
+
stiffness: animationConfig.stiffness ?? 100,
|
|
33
|
+
overshootClamping: animationConfig.overshootClamping ?? false,
|
|
34
|
+
restSpeedThreshold: animationConfig.restSpeedThreshold ?? 0.01,
|
|
35
|
+
restDisplacementThreshold: animationConfig.restDisplacementThreshold ?? 0.01
|
|
36
|
+
});
|
|
37
|
+
} else {
|
|
38
|
+
return withTiming(toValue, {
|
|
39
|
+
duration: animationConfig.duration ?? 300,
|
|
40
|
+
easing: animationConfig.easing ?? Easing.inOut(Easing.ease)
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}, [animationConfig]);
|
|
44
|
+
const getAnimatedOpacity = useCallback(toValue => {
|
|
45
|
+
if (animationConfig.type === "spring") {
|
|
46
|
+
return withSpring(toValue, {
|
|
47
|
+
damping: animationConfig.damping ?? 10,
|
|
48
|
+
mass: animationConfig.mass ?? 1,
|
|
49
|
+
stiffness: animationConfig.stiffness ?? 100
|
|
50
|
+
});
|
|
51
|
+
} else {
|
|
52
|
+
return withTiming(toValue, {
|
|
53
|
+
duration: (animationConfig.duration ?? 300) * 0.6,
|
|
54
|
+
easing: animationConfig.easing ?? Easing.inOut(Easing.ease)
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}, [animationConfig]);
|
|
58
|
+
const getAnimatedRotation = useCallback(toValue => {
|
|
59
|
+
const targetRotation = toValue ? 1 : 0;
|
|
60
|
+
if (animationConfig.type === "spring") {
|
|
61
|
+
return withSpring(targetRotation, {
|
|
62
|
+
damping: animationConfig.damping ?? 10,
|
|
63
|
+
mass: animationConfig.mass ?? 1,
|
|
64
|
+
stiffness: animationConfig.stiffness ?? 100
|
|
65
|
+
});
|
|
66
|
+
} else {
|
|
67
|
+
return withTiming(targetRotation, {
|
|
68
|
+
duration: animationConfig.duration ?? 300,
|
|
69
|
+
easing: animationConfig.easing ?? Easing.inOut(Easing.ease)
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}, [animationConfig]);
|
|
73
|
+
const animate = useCallback(() => {
|
|
74
|
+
if (onAnimationStart) {
|
|
75
|
+
runOnJS(onAnimationStart)();
|
|
76
|
+
}
|
|
77
|
+
isAnimating.current = true;
|
|
78
|
+
const toHeight = expanded ? contentHeight : 0;
|
|
79
|
+
const toOpacity = expanded ? 1 : 0;
|
|
80
|
+
const toRotation = expanded ? 1 : 0;
|
|
81
|
+
height.value = getAnimatedHeight(toHeight);
|
|
82
|
+
opacity.value = getAnimatedOpacity(toOpacity);
|
|
83
|
+
rotation.value = getAnimatedRotation(toRotation);
|
|
84
|
+
|
|
85
|
+
// Set up animation end callback
|
|
86
|
+
const timeoutId = setTimeout(() => {
|
|
87
|
+
if (isAnimating.current && onAnimationEnd) {
|
|
88
|
+
runOnJS(onAnimationEnd)();
|
|
89
|
+
isAnimating.current = false;
|
|
90
|
+
}
|
|
91
|
+
}, animationConfig.type === "spring" ? 500 : animationConfig.duration ?? 300);
|
|
92
|
+
return () => clearTimeout(timeoutId);
|
|
93
|
+
}, [expanded, contentHeight, animationConfig, height, opacity, rotation, getAnimatedHeight, getAnimatedOpacity, getAnimatedRotation, onAnimationStart, onAnimationEnd]);
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
const cleanup = animate();
|
|
96
|
+
return () => {
|
|
97
|
+
if (cleanup) cleanup();
|
|
98
|
+
isAnimating.current = false;
|
|
99
|
+
};
|
|
100
|
+
}, [animate]);
|
|
101
|
+
const resetAnimation = useCallback(() => {
|
|
102
|
+
height.value = 0;
|
|
103
|
+
opacity.value = 0;
|
|
104
|
+
rotation.value = 0;
|
|
105
|
+
isAnimating.current = false;
|
|
106
|
+
}, [height, opacity, rotation]);
|
|
107
|
+
const getRotatedStyle = useCallback(() => {
|
|
108
|
+
"worklet";
|
|
109
|
+
|
|
110
|
+
return {
|
|
111
|
+
transform: [{
|
|
112
|
+
rotate: `${rotation.value * 90}deg`
|
|
113
|
+
}]
|
|
114
|
+
};
|
|
115
|
+
}, [rotation]);
|
|
116
|
+
return {
|
|
117
|
+
height,
|
|
118
|
+
opacity,
|
|
119
|
+
rotation,
|
|
120
|
+
isAnimating: isAnimating.current,
|
|
121
|
+
animatedHeightStyle: {
|
|
122
|
+
height
|
|
123
|
+
},
|
|
124
|
+
animatedOpacityStyle: {
|
|
125
|
+
opacity
|
|
126
|
+
},
|
|
127
|
+
animatedRotationStyle: getRotatedStyle,
|
|
128
|
+
resetAnimation
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=useAccordionAnimation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useRef","useEffect","useCallback","useSharedValue","withTiming","withSpring","Easing","runOnJS","useAccordionAnimation","expanded","contentHeight","animationConfig","onAnimationStart","onAnimationEnd","height","opacity","rotation","isAnimating","getAnimatedHeight","toValue","type","damping","mass","stiffness","overshootClamping","restSpeedThreshold","restDisplacementThreshold","duration","easing","inOut","ease","getAnimatedOpacity","getAnimatedRotation","targetRotation","animate","current","toHeight","toOpacity","toRotation","value","timeoutId","setTimeout","clearTimeout","cleanup","resetAnimation","getRotatedStyle","transform","rotate","animatedHeightStyle","animatedOpacityStyle","animatedRotationStyle"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useAccordionAnimation.js"],"mappings":"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","ignoreList":[]}
|