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.
Files changed (99) hide show
  1. package/README.md +476 -0
  2. package/index.js +3 -0
  3. package/lib/commonjs/components/Accordion.js +130 -0
  4. package/lib/commonjs/components/Accordion.js.map +1 -0
  5. package/lib/commonjs/components/AccordionContent.js +125 -0
  6. package/lib/commonjs/components/AccordionContent.js.map +1 -0
  7. package/lib/commonjs/components/AccordionItem.js +146 -0
  8. package/lib/commonjs/components/AccordionItem.js.map +1 -0
  9. package/lib/commonjs/components/AccordionSeparator.js +159 -0
  10. package/lib/commonjs/components/AccordionSeparator.js.map +1 -0
  11. package/lib/commonjs/core/AccordionContext.js +82 -0
  12. package/lib/commonjs/core/AccordionContext.js.map +1 -0
  13. package/lib/commonjs/core/AccordionRef.js +64 -0
  14. package/lib/commonjs/core/AccordionRef.js.map +1 -0
  15. package/lib/commonjs/core/types.js +6 -0
  16. package/lib/commonjs/core/types.js.map +1 -0
  17. package/lib/commonjs/hooks/useAccordion.js +18 -0
  18. package/lib/commonjs/hooks/useAccordion.js.map +1 -0
  19. package/lib/commonjs/hooks/useAccordionAccessibility.js +39 -0
  20. package/lib/commonjs/hooks/useAccordionAccessibility.js.map +1 -0
  21. package/lib/commonjs/hooks/useAccordionAnimation.js +135 -0
  22. package/lib/commonjs/hooks/useAccordionAnimation.js.map +1 -0
  23. package/lib/commonjs/hooks/useAccordionKeyboard.js +43 -0
  24. package/lib/commonjs/hooks/useAccordionKeyboard.js.map +1 -0
  25. package/lib/commonjs/hooks/useAccordionState.js +96 -0
  26. package/lib/commonjs/hooks/useAccordionState.js.map +1 -0
  27. package/lib/commonjs/index.js +176 -0
  28. package/lib/commonjs/index.js.map +1 -0
  29. package/lib/commonjs/package.json +1 -0
  30. package/lib/commonjs/theme/ThemeContext.js +48 -0
  31. package/lib/commonjs/theme/ThemeContext.js.map +1 -0
  32. package/lib/commonjs/theme/defaultTheme.js +79 -0
  33. package/lib/commonjs/theme/defaultTheme.js.map +1 -0
  34. package/lib/commonjs/theme/types.js +6 -0
  35. package/lib/commonjs/theme/types.js.map +1 -0
  36. package/lib/commonjs/utils/animations.js +41 -0
  37. package/lib/commonjs/utils/animations.js.map +1 -0
  38. package/lib/commonjs/utils/layout.js +155 -0
  39. package/lib/commonjs/utils/layout.js.map +1 -0
  40. package/lib/commonjs/utils/validators.js +26 -0
  41. package/lib/commonjs/utils/validators.js.map +1 -0
  42. package/lib/module/components/Accordion.js +125 -0
  43. package/lib/module/components/Accordion.js.map +1 -0
  44. package/lib/module/components/AccordionContent.js +120 -0
  45. package/lib/module/components/AccordionContent.js.map +1 -0
  46. package/lib/module/components/AccordionItem.js +141 -0
  47. package/lib/module/components/AccordionItem.js.map +1 -0
  48. package/lib/module/components/AccordionSeparator.js +155 -0
  49. package/lib/module/components/AccordionSeparator.js.map +1 -0
  50. package/lib/module/core/AccordionContext.js +75 -0
  51. package/lib/module/core/AccordionContext.js.map +1 -0
  52. package/lib/module/core/AccordionRef.js +59 -0
  53. package/lib/module/core/AccordionRef.js.map +1 -0
  54. package/lib/module/core/types.js +136 -0
  55. package/lib/module/core/types.js.map +1 -0
  56. package/lib/module/hooks/useAccordion.js +14 -0
  57. package/lib/module/hooks/useAccordion.js.map +1 -0
  58. package/lib/module/hooks/useAccordionAccessibility.js +34 -0
  59. package/lib/module/hooks/useAccordionAccessibility.js.map +1 -0
  60. package/lib/module/hooks/useAccordionAnimation.js +131 -0
  61. package/lib/module/hooks/useAccordionAnimation.js.map +1 -0
  62. package/lib/module/hooks/useAccordionKeyboard.js +38 -0
  63. package/lib/module/hooks/useAccordionKeyboard.js.map +1 -0
  64. package/lib/module/hooks/useAccordionState.js +92 -0
  65. package/lib/module/hooks/useAccordionState.js.map +1 -0
  66. package/lib/module/index.js +43 -0
  67. package/lib/module/index.js.map +1 -0
  68. package/lib/module/theme/ThemeContext.js +41 -0
  69. package/lib/module/theme/ThemeContext.js.map +1 -0
  70. package/lib/module/theme/defaultTheme.js +75 -0
  71. package/lib/module/theme/defaultTheme.js.map +1 -0
  72. package/lib/module/theme/types.js +66 -0
  73. package/lib/module/theme/types.js.map +1 -0
  74. package/lib/module/utils/animations.js +35 -0
  75. package/lib/module/utils/animations.js.map +1 -0
  76. package/lib/module/utils/layout.js +147 -0
  77. package/lib/module/utils/layout.js.map +1 -0
  78. package/lib/module/utils/validators.js +20 -0
  79. package/lib/module/utils/validators.js.map +1 -0
  80. package/package.json +25 -0
  81. package/src/components/Accordion.js +164 -0
  82. package/src/components/AccordionContent.js +149 -0
  83. package/src/components/AccordionItem.js +146 -0
  84. package/src/components/AccordionSeparator.js +168 -0
  85. package/src/core/AccordionContext.js +86 -0
  86. package/src/core/AccordionRef.js +69 -0
  87. package/src/core/types.js +133 -0
  88. package/src/hooks/useAccordion.js +14 -0
  89. package/src/hooks/useAccordionAccessibility.js +30 -0
  90. package/src/hooks/useAccordionAnimation.js +165 -0
  91. package/src/hooks/useAccordionKeyboard.js +38 -0
  92. package/src/hooks/useAccordionState.js +119 -0
  93. package/src/index.js +56 -0
  94. package/src/theme/ThemeContext.js +40 -0
  95. package/src/theme/defaultTheme.js +73 -0
  96. package/src/theme/types.js +63 -0
  97. package/src/utils/animations.js +38 -0
  98. package/src/utils/layout.js +138 -0
  99. 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":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,WAAW,EAAEC,IAAI,QAAQ,OAAO;AAC3D,SAASC,IAAI,EAAEC,gBAAgB,EAAEC,UAAU,QAAQ,cAAc;AACjE,SAASC,YAAY,QAAQ,6BAA0B;AACvD,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,yBAAyB,QAAQ,uCAAoC;AAC9E,SAASC,oBAAoB,QAAQ,kCAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAErE,OAAO,MAAMC,aAAa,gBAAGZ,IAAI,CAAEa,KAAK,IAAK;EAC3C,MAAM;IACJC,KAAK;IACLC,MAAM;IACNC,QAAQ;IACRC,QAAQ,GAAG,KAAK;IAChBC,KAAK;IACLC,WAAW;IACXC,YAAY;IACZC;EACF,CAAC,GAAGR,KAAK;EAET,MAAMS,SAAS,GAAGlB,YAAY,CAAC,CAAC;EAChC,MAAM;IACJmB,IAAI;IACJC,QAAQ;IACRC,UAAU;IACVC,YAAY;IACZC,UAAU;IACVC,KAAK;IACLC,QAAQ;IACRC,YAAY;IACZC,cAAc;IACdC,UAAU;IACVC;EACF,CAAC,GAAGX,SAAS;EAEb,MAAMY,QAAQ,GAAGD,UAAU,CAACnB,KAAK,CAAC;;EAElC;EACAhB,SAAS,CAAC,MAAM;IACdgC,YAAY,CAAChB,KAAK,EAAEG,QAAQ,EAAEI,IAAI,CAAC;IACnC,OAAO,MAAMU,cAAc,CAACjB,KAAK,CAAC;EACpC,CAAC,EAAE,CAACA,KAAK,EAAEG,QAAQ,EAAEI,IAAI,EAAES,YAAY,EAAEC,cAAc,CAAC,CAAC;EAEzD,MAAMI,WAAW,GAAGpC,WAAW,CAAC,MAAM;IACpC,IAAIyB,QAAQ,IAAIP,QAAQ,EAAE;IAC1Be,UAAU,CAAClB,KAAK,CAAC;EACnB,CAAC,EAAE,CAACU,QAAQ,EAAEP,QAAQ,EAAEe,UAAU,EAAElB,KAAK,CAAC,CAAC;;EAE3C;EACA,MAAM;IAAEsB;EAAmB,CAAC,GAAG9B,yBAAyB,CAAC;IACvD4B,QAAQ;IACRjB,QAAQ,EAAEA,QAAQ,IAAIO,QAAQ;IAC9Ba,KAAK,EAAE,yBAAyBvB,KAAK;EACvC,CAAC,CAAC;;EAEF;EACA,MAAM;IAAEwB;EAAc,CAAC,GAAG/B,oBAAoB,CAAC;IAC7CgC,OAAO,EAAEJ,WAAW;IACpBlB,QAAQ,EAAEA,QAAQ,IAAIO;EACxB,CAAC,CAAC;;EAEF;EACA,MAAMgB,mBAAmB,GAAGA,CAAA,KAAM;IAChC,IAAI,OAAOzB,MAAM,KAAK,UAAU,EAAE;MAChC,OAAOA,MAAM,CAAC;QAAEmB,QAAQ;QAAEjB;MAAS,CAAC,CAAC;IACvC;IACA,OAAOF,MAAM;EACf,CAAC;;EAED;EACA,MAAM0B,mBAAmB,GAAGA,CAAA,KAAM;IAChC,IAAI,CAAChB,UAAU,EAAE,OAAO,IAAI;IAE5B,MAAMiB,WAAW,GAAGjB,UAAU,CAAC;MAAES,QAAQ;MAAEjB;IAAS,CAAC,CAAC;IACtD,IAAI,CAACyB,WAAW,EAAE,OAAO,IAAI;IAE7B,oBACEjC,IAAA,CAACR,IAAI;MACHiB,KAAK,EAAEQ,YAAY,KAAK,MAAM,GAAGiB,MAAM,CAACC,QAAQ,GAAGD,MAAM,CAACE,SAAU;MAAA7B,QAAA,EAEnE0B;IAAW,CACR,CAAC;EAEX,CAAC;EAED,MAAMI,aAAa,gBACjBnC,KAAA,CAACT,gBAAgB;IACf6C,aAAa,EAAE,GAAI;IACnBR,OAAO,EAAEJ,WAAY;IACrBlB,QAAQ,EAAEA,QAAQ,IAAIO,QAAS;IAC/BN,KAAK,EAAE,CACLyB,MAAM,CAAC5B,MAAM,EACbI,WAAW,EACXF,QAAQ,IAAI0B,MAAM,CAACK,cAAc,EACjC;MAAEC,eAAe,EAAErB,KAAK,EAAEsB,MAAM,EAAEC;IAAQ,CAAC,CAC3C;IAAA,GACEf,kBAAkB;IAAA,GAClBE,aAAa;IAAAtB,QAAA,GAEhBU,YAAY,KAAK,MAAM,IAAIe,mBAAmB,CAAC,CAAC,eACjDhC,IAAA,CAACR,IAAI;MAACiB,KAAK,EAAEyB,MAAM,CAACS,mBAAoB;MAAApC,QAAA,EAAEwB,mBAAmB,CAAC;IAAC,CAAO,CAAC,EACtEd,YAAY,KAAK,OAAO,IAAIe,mBAAmB,CAAC,CAAC;EAAA,CAClC,CACnB;EAED,oBACE9B,KAAA,CAACV,IAAI;IAACiB,KAAK,EAAE,CAACyB,MAAM,CAACU,SAAS,EAAEnC,KAAK,CAAE;IAAAF,QAAA,GACpC8B,aAAa,eACdrC,IAAA,CAACJ,gBAAgB;MACf6B,QAAQ,EAAEA,QAAS;MACnBoB,eAAe,EAAEhC,SAAS,CAACgC,eAAgB;MAC3C3B,UAAU,EAAEA,UAAW;MACvBC,KAAK,EAAEA,KAAM;MACbR,YAAY,EAAEA,YAAa;MAAAJ,QAAA,EAE1B,OAAOA,QAAQ,KAAK,UAAU,GAAGA,QAAQ,CAAC;QAAEkB;MAAS,CAAC,CAAC,GAAGlB;IAAQ,CACnD,CAAC;EAAA,CACf,CAAC;AAEX,CAAC,CAAC;AAEF,MAAM2B,MAAM,GAAGxC,UAAU,CAACoD,MAAM,CAAC;EAC/BF,SAAS,EAAE;IACTG,KAAK,EAAE;EACT,CAAC;EACDzC,MAAM,EAAE;IACN0C,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,SAAS,EAAE,EAAE;IACbC,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE;EACnB,CAAC;EACDb,cAAc,EAAE;IACdc,OAAO,EAAE;EACX,CAAC;EACDV,mBAAmB,EAAE;IACnBW,IAAI,EAAE;EACR,CAAC;EACDnB,QAAQ,EAAE;IACRoB,WAAW,EAAE;EACf,CAAC;EACDnB,SAAS,EAAE;IACToB,UAAU,EAAE;EACd;AACF,CAAC,CAAC;AAEFrD,aAAa,CAACsD,WAAW,GAAG,eAAe","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":";;AAAA,SAASA,MAAM,EAAEC,SAAS,EAAEC,WAAW,QAAQ,OAAO;AACtD,SACEC,cAAc,EACdC,UAAU,EACVC,UAAU,EACVC,MAAM,EACNC,OAAO,QACF,yBAAyB;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAqB,GAAGA,CAAC;EACpCC,QAAQ;EACRC,aAAa;EACbC,eAAe;EACfC,gBAAgB;EAChBC;AACF,CAAC,KAAK;EACJ,MAAMC,MAAM,GAAGX,cAAc,CAACM,QAAQ,GAAGC,aAAa,GAAG,CAAC,CAAC;EAC3D,MAAMK,OAAO,GAAGZ,cAAc,CAACM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;EAChD,MAAMO,QAAQ,GAAGb,cAAc,CAACM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;EACjD,MAAMQ,WAAW,GAAGjB,MAAM,CAAC,KAAK,CAAC;EAEjC,MAAMkB,iBAAiB,GAAGhB,WAAW,CAClCiB,OAAO,IAAK;IACX,IAAIR,eAAe,CAACS,IAAI,KAAK,QAAQ,EAAE;MACrC,OAAOf,UAAU,CAACc,OAAO,EAAE;QACzBE,OAAO,EAAEV,eAAe,CAACU,OAAO,IAAI,EAAE;QACtCC,IAAI,EAAEX,eAAe,CAACW,IAAI,IAAI,CAAC;QAC/BC,SAAS,EAAEZ,eAAe,CAACY,SAAS,IAAI,GAAG;QAC3CC,iBAAiB,EAAEb,eAAe,CAACa,iBAAiB,IAAI,KAAK;QAC7DC,kBAAkB,EAAEd,eAAe,CAACc,kBAAkB,IAAI,IAAI;QAC9DC,yBAAyB,EACvBf,eAAe,CAACe,yBAAyB,IAAI;MACjD,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,OAAOtB,UAAU,CAACe,OAAO,EAAE;QACzBQ,QAAQ,EAAEhB,eAAe,CAACgB,QAAQ,IAAI,GAAG;QACzCC,MAAM,EAAEjB,eAAe,CAACiB,MAAM,IAAItB,MAAM,CAACuB,KAAK,CAACvB,MAAM,CAACwB,IAAI;MAC5D,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CAACnB,eAAe,CAClB,CAAC;EAED,MAAMoB,kBAAkB,GAAG7B,WAAW,CACnCiB,OAAO,IAAK;IACX,IAAIR,eAAe,CAACS,IAAI,KAAK,QAAQ,EAAE;MACrC,OAAOf,UAAU,CAACc,OAAO,EAAE;QACzBE,OAAO,EAAEV,eAAe,CAACU,OAAO,IAAI,EAAE;QACtCC,IAAI,EAAEX,eAAe,CAACW,IAAI,IAAI,CAAC;QAC/BC,SAAS,EAAEZ,eAAe,CAACY,SAAS,IAAI;MAC1C,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,OAAOnB,UAAU,CAACe,OAAO,EAAE;QACzBQ,QAAQ,EAAE,CAAChB,eAAe,CAACgB,QAAQ,IAAI,GAAG,IAAI,GAAG;QACjDC,MAAM,EAAEjB,eAAe,CAACiB,MAAM,IAAItB,MAAM,CAACuB,KAAK,CAACvB,MAAM,CAACwB,IAAI;MAC5D,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CAACnB,eAAe,CAClB,CAAC;EAED,MAAMqB,mBAAmB,GAAG9B,WAAW,CACpCiB,OAAO,IAAK;IACX,MAAMc,cAAc,GAAGd,OAAO,GAAG,CAAC,GAAG,CAAC;IACtC,IAAIR,eAAe,CAACS,IAAI,KAAK,QAAQ,EAAE;MACrC,OAAOf,UAAU,CAAC4B,cAAc,EAAE;QAChCZ,OAAO,EAAEV,eAAe,CAACU,OAAO,IAAI,EAAE;QACtCC,IAAI,EAAEX,eAAe,CAACW,IAAI,IAAI,CAAC;QAC/BC,SAAS,EAAEZ,eAAe,CAACY,SAAS,IAAI;MAC1C,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,OAAOnB,UAAU,CAAC6B,cAAc,EAAE;QAChCN,QAAQ,EAAEhB,eAAe,CAACgB,QAAQ,IAAI,GAAG;QACzCC,MAAM,EAAEjB,eAAe,CAACiB,MAAM,IAAItB,MAAM,CAACuB,KAAK,CAACvB,MAAM,CAACwB,IAAI;MAC5D,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CAACnB,eAAe,CAClB,CAAC;EAED,MAAMuB,OAAO,GAAGhC,WAAW,CAAC,MAAM;IAChC,IAAIU,gBAAgB,EAAE;MACpBL,OAAO,CAACK,gBAAgB,CAAC,CAAC,CAAC;IAC7B;IAEAK,WAAW,CAACkB,OAAO,GAAG,IAAI;IAC1B,MAAMC,QAAQ,GAAG3B,QAAQ,GAAGC,aAAa,GAAG,CAAC;IAC7C,MAAM2B,SAAS,GAAG5B,QAAQ,GAAG,CAAC,GAAG,CAAC;IAClC,MAAM6B,UAAU,GAAG7B,QAAQ,GAAG,CAAC,GAAG,CAAC;IAEnCK,MAAM,CAACyB,KAAK,GAAGrB,iBAAiB,CAACkB,QAAQ,CAAC;IAC1CrB,OAAO,CAACwB,KAAK,GAAGR,kBAAkB,CAACM,SAAS,CAAC;IAC7CrB,QAAQ,CAACuB,KAAK,GAAGP,mBAAmB,CAACM,UAAU,CAAC;;IAEhD;IACA,MAAME,SAAS,GAAGC,UAAU,CAC1B,MAAM;MACJ,IAAIxB,WAAW,CAACkB,OAAO,IAAItB,cAAc,EAAE;QACzCN,OAAO,CAACM,cAAc,CAAC,CAAC,CAAC;QACzBI,WAAW,CAACkB,OAAO,GAAG,KAAK;MAC7B;IACF,CAAC,EACDxB,eAAe,CAACS,IAAI,KAAK,QAAQ,GAC7B,GAAG,GACFT,eAAe,CAACgB,QAAQ,IAAI,GACnC,CAAC;IAED,OAAO,MAAMe,YAAY,CAACF,SAAS,CAAC;EACtC,CAAC,EAAE,CACD/B,QAAQ,EACRC,aAAa,EACbC,eAAe,EACfG,MAAM,EACNC,OAAO,EACPC,QAAQ,EACRE,iBAAiB,EACjBa,kBAAkB,EAClBC,mBAAmB,EACnBpB,gBAAgB,EAChBC,cAAc,CACf,CAAC;EAEFZ,SAAS,CAAC,MAAM;IACd,MAAM0C,OAAO,GAAGT,OAAO,CAAC,CAAC;IACzB,OAAO,MAAM;MACX,IAAIS,OAAO,EAAEA,OAAO,CAAC,CAAC;MACtB1B,WAAW,CAACkB,OAAO,GAAG,KAAK;IAC7B,CAAC;EACH,CAAC,EAAE,CAACD,OAAO,CAAC,CAAC;EAEb,MAAMU,cAAc,GAAG1C,WAAW,CAAC,MAAM;IACvCY,MAAM,CAACyB,KAAK,GAAG,CAAC;IAChBxB,OAAO,CAACwB,KAAK,GAAG,CAAC;IACjBvB,QAAQ,CAACuB,KAAK,GAAG,CAAC;IAClBtB,WAAW,CAACkB,OAAO,GAAG,KAAK;EAC7B,CAAC,EAAE,CAACrB,MAAM,EAAEC,OAAO,EAAEC,QAAQ,CAAC,CAAC;EAE/B,MAAM6B,eAAe,GAAG3C,WAAW,CAAC,MAAM;IACxC,SAAS;;IACT,OAAO;MACL4C,SAAS,EAAE,CAAC;QAAEC,MAAM,EAAE,GAAG/B,QAAQ,CAACuB,KAAK,GAAG,EAAE;MAAM,CAAC;IACrD,CAAC;EACH,CAAC,EAAE,CAACvB,QAAQ,CAAC,CAAC;EAEd,OAAO;IACLF,MAAM;IACNC,OAAO;IACPC,QAAQ;IACRC,WAAW,EAAEA,WAAW,CAACkB,OAAO;IAChCa,mBAAmB,EAAE;MAAElC;IAAO,CAAC;IAC/BmC,oBAAoB,EAAE;MAAElC;IAAQ,CAAC;IACjCmC,qBAAqB,EAAEL,eAAe;IACtCD;EACF,CAAC;AACH,CAAC","ignoreList":[]}