react-native-hold-menu-actions 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/LICENCE +21 -0
  2. package/README.md +38 -0
  3. package/lib/commonjs/components/backdrop/Backdrop.js +104 -0
  4. package/lib/commonjs/components/backdrop/Backdrop.js.map +1 -0
  5. package/lib/commonjs/components/backdrop/constants.js +14 -0
  6. package/lib/commonjs/components/backdrop/constants.js.map +1 -0
  7. package/lib/commonjs/components/backdrop/index.js +16 -0
  8. package/lib/commonjs/components/backdrop/index.js.map +1 -0
  9. package/lib/commonjs/components/backdrop/styles.js +17 -0
  10. package/lib/commonjs/components/backdrop/styles.js.map +1 -0
  11. package/lib/commonjs/components/flatList/FlatList.js +35 -0
  12. package/lib/commonjs/components/flatList/FlatList.js.map +1 -0
  13. package/lib/commonjs/components/flatList/index.js +16 -0
  14. package/lib/commonjs/components/flatList/index.js.map +1 -0
  15. package/lib/commonjs/components/holdItem/HoldItem.js +369 -0
  16. package/lib/commonjs/components/holdItem/HoldItem.js.map +1 -0
  17. package/lib/commonjs/components/holdItem/index.js +16 -0
  18. package/lib/commonjs/components/holdItem/index.js.map +1 -0
  19. package/lib/commonjs/components/holdItem/styles.js +22 -0
  20. package/lib/commonjs/components/holdItem/styles.js.map +1 -0
  21. package/lib/commonjs/components/holdItem/types.d.js +2 -0
  22. package/lib/commonjs/components/holdItem/types.d.js.map +1 -0
  23. package/lib/commonjs/components/icon/Icon.js +43 -0
  24. package/lib/commonjs/components/icon/Icon.js.map +1 -0
  25. package/lib/commonjs/components/icon/index.js +16 -0
  26. package/lib/commonjs/components/icon/index.js.map +1 -0
  27. package/lib/commonjs/components/menu/Menu.js +57 -0
  28. package/lib/commonjs/components/menu/Menu.js.map +1 -0
  29. package/lib/commonjs/components/menu/MenuItem.js +85 -0
  30. package/lib/commonjs/components/menu/MenuItem.js.map +1 -0
  31. package/lib/commonjs/components/menu/MenuItems.js +35 -0
  32. package/lib/commonjs/components/menu/MenuItems.js.map +1 -0
  33. package/lib/commonjs/components/menu/MenuList.js +121 -0
  34. package/lib/commonjs/components/menu/MenuList.js.map +1 -0
  35. package/lib/commonjs/components/menu/Separator.js +47 -0
  36. package/lib/commonjs/components/menu/Separator.js.map +1 -0
  37. package/lib/commonjs/components/menu/calculations.js +31 -0
  38. package/lib/commonjs/components/menu/calculations.js.map +1 -0
  39. package/lib/commonjs/components/menu/constants.js +21 -0
  40. package/lib/commonjs/components/menu/constants.js.map +1 -0
  41. package/lib/commonjs/components/menu/index.js +16 -0
  42. package/lib/commonjs/components/menu/index.js.map +1 -0
  43. package/lib/commonjs/components/menu/styles.js +77 -0
  44. package/lib/commonjs/components/menu/styles.js.map +1 -0
  45. package/lib/commonjs/components/menu/types.d.js +2 -0
  46. package/lib/commonjs/components/menu/types.d.js.map +1 -0
  47. package/lib/commonjs/components/provider/Provider.js +98 -0
  48. package/lib/commonjs/components/provider/Provider.js.map +1 -0
  49. package/lib/commonjs/components/provider/index.js +16 -0
  50. package/lib/commonjs/components/provider/index.js.map +1 -0
  51. package/lib/commonjs/components/provider/reducer.js +50 -0
  52. package/lib/commonjs/components/provider/reducer.js.map +1 -0
  53. package/lib/commonjs/components/provider/types.d.js +2 -0
  54. package/lib/commonjs/components/provider/types.d.js.map +1 -0
  55. package/lib/commonjs/constants.js +60 -0
  56. package/lib/commonjs/constants.js.map +1 -0
  57. package/lib/commonjs/context/index.js +14 -0
  58. package/lib/commonjs/context/index.js.map +1 -0
  59. package/lib/commonjs/context/internal.js +13 -0
  60. package/lib/commonjs/context/internal.js.map +1 -0
  61. package/lib/commonjs/hooks/index.js +24 -0
  62. package/lib/commonjs/hooks/index.js.map +1 -0
  63. package/lib/commonjs/hooks/useDeviceOrientation.js +38 -0
  64. package/lib/commonjs/hooks/useDeviceOrientation.js.map +1 -0
  65. package/lib/commonjs/hooks/useInternal.js +15 -0
  66. package/lib/commonjs/hooks/useInternal.js.map +1 -0
  67. package/lib/commonjs/index.js +40 -0
  68. package/lib/commonjs/index.js.map +1 -0
  69. package/lib/commonjs/styleGuide.js +39 -0
  70. package/lib/commonjs/styleGuide.js.map +1 -0
  71. package/lib/commonjs/utils/calculations.js +73 -0
  72. package/lib/commonjs/utils/calculations.js.map +1 -0
  73. package/lib/commonjs/utils/validations.js +43 -0
  74. package/lib/commonjs/utils/validations.js.map +1 -0
  75. package/lib/module/components/backdrop/Backdrop.js +83 -0
  76. package/lib/module/components/backdrop/Backdrop.js.map +1 -0
  77. package/lib/module/components/backdrop/constants.js +4 -0
  78. package/lib/module/components/backdrop/constants.js.map +1 -0
  79. package/lib/module/components/backdrop/index.js +2 -0
  80. package/lib/module/components/backdrop/index.js.map +1 -0
  81. package/lib/module/components/backdrop/styles.js +7 -0
  82. package/lib/module/components/backdrop/styles.js.map +1 -0
  83. package/lib/module/components/flatList/FlatList.js +17 -0
  84. package/lib/module/components/flatList/FlatList.js.map +1 -0
  85. package/lib/module/components/flatList/index.js +2 -0
  86. package/lib/module/components/flatList/index.js.map +1 -0
  87. package/lib/module/components/holdItem/HoldItem.js +344 -0
  88. package/lib/module/components/holdItem/HoldItem.js.map +1 -0
  89. package/lib/module/components/holdItem/index.js +2 -0
  90. package/lib/module/components/holdItem/index.js.map +1 -0
  91. package/lib/module/components/holdItem/styles.js +12 -0
  92. package/lib/module/components/holdItem/styles.js.map +1 -0
  93. package/lib/module/components/holdItem/types.d.js +2 -0
  94. package/lib/module/components/holdItem/types.d.js.map +1 -0
  95. package/lib/module/components/icon/Icon.js +26 -0
  96. package/lib/module/components/icon/Icon.js.map +1 -0
  97. package/lib/module/components/icon/index.js +2 -0
  98. package/lib/module/components/icon/index.js.map +1 -0
  99. package/lib/module/components/menu/Menu.js +37 -0
  100. package/lib/module/components/menu/Menu.js.map +1 -0
  101. package/lib/module/components/menu/MenuItem.js +59 -0
  102. package/lib/module/components/menu/MenuItem.js.map +1 -0
  103. package/lib/module/components/menu/MenuItems.js +19 -0
  104. package/lib/module/components/menu/MenuItems.js.map +1 -0
  105. package/lib/module/components/menu/MenuList.js +93 -0
  106. package/lib/module/components/menu/MenuList.js.map +1 -0
  107. package/lib/module/components/menu/Separator.js +29 -0
  108. package/lib/module/components/menu/Separator.js.map +1 -0
  109. package/lib/module/components/menu/calculations.js +17 -0
  110. package/lib/module/components/menu/calculations.js.map +1 -0
  111. package/lib/module/components/menu/constants.js +8 -0
  112. package/lib/module/components/menu/constants.js.map +1 -0
  113. package/lib/module/components/menu/index.js +2 -0
  114. package/lib/module/components/menu/index.js.map +1 -0
  115. package/lib/module/components/menu/styles.js +63 -0
  116. package/lib/module/components/menu/styles.js.map +1 -0
  117. package/lib/module/components/menu/types.d.js +2 -0
  118. package/lib/module/components/menu/types.d.js.map +1 -0
  119. package/lib/module/components/provider/Provider.js +75 -0
  120. package/lib/module/components/provider/Provider.js.map +1 -0
  121. package/lib/module/components/provider/index.js +2 -0
  122. package/lib/module/components/provider/index.js.map +1 -0
  123. package/lib/module/components/provider/reducer.js +38 -0
  124. package/lib/module/components/provider/reducer.js.map +1 -0
  125. package/lib/module/components/provider/types.d.js +2 -0
  126. package/lib/module/components/provider/types.d.js.map +1 -0
  127. package/lib/module/constants.js +37 -0
  128. package/lib/module/constants.js.map +1 -0
  129. package/lib/module/context/index.js +2 -0
  130. package/lib/module/context/index.js.map +1 -0
  131. package/lib/module/context/internal.js +4 -0
  132. package/lib/module/context/internal.js.map +1 -0
  133. package/lib/module/hooks/index.js +3 -0
  134. package/lib/module/hooks/index.js.map +1 -0
  135. package/lib/module/hooks/useDeviceOrientation.js +27 -0
  136. package/lib/module/hooks/useDeviceOrientation.js.map +1 -0
  137. package/lib/module/hooks/useInternal.js +4 -0
  138. package/lib/module/hooks/useInternal.js.map +1 -0
  139. package/lib/module/index.js +5 -0
  140. package/lib/module/index.js.map +1 -0
  141. package/lib/module/styleGuide.js +30 -0
  142. package/lib/module/styleGuide.js.map +1 -0
  143. package/lib/module/utils/calculations.js +51 -0
  144. package/lib/module/utils/calculations.js.map +1 -0
  145. package/lib/module/utils/validations.js +38 -0
  146. package/lib/module/utils/validations.js.map +1 -0
  147. package/lib/typescript/components/backdrop/Backdrop.d.ts +3 -0
  148. package/lib/typescript/components/backdrop/constants.d.ts +2 -0
  149. package/lib/typescript/components/backdrop/index.d.ts +1 -0
  150. package/lib/typescript/components/backdrop/styles.d.ts +10 -0
  151. package/lib/typescript/components/flatList/FlatList.d.ts +5 -0
  152. package/lib/typescript/components/flatList/index.d.ts +2 -0
  153. package/lib/typescript/components/holdItem/HoldItem.d.ts +4 -0
  154. package/lib/typescript/components/holdItem/index.d.ts +2 -0
  155. package/lib/typescript/components/holdItem/styles.d.ts +15 -0
  156. package/lib/typescript/components/holdItem/types.d.ts +131 -0
  157. package/lib/typescript/components/icon/Icon.d.ts +7 -0
  158. package/lib/typescript/components/icon/index.d.ts +1 -0
  159. package/lib/typescript/components/menu/Menu.d.ts +3 -0
  160. package/lib/typescript/components/menu/MenuItem.d.ts +8 -0
  161. package/lib/typescript/components/menu/MenuItems.d.ts +6 -0
  162. package/lib/typescript/components/menu/MenuList.d.ts +3 -0
  163. package/lib/typescript/components/menu/Separator.d.ts +3 -0
  164. package/lib/typescript/components/menu/calculations.d.ts +4 -0
  165. package/lib/typescript/components/menu/constants.d.ts +7 -0
  166. package/lib/typescript/components/menu/index.d.ts +1 -0
  167. package/lib/typescript/components/menu/styles.d.ts +59 -0
  168. package/lib/typescript/components/menu/types.d.ts +28 -0
  169. package/lib/typescript/components/provider/Provider.d.ts +10 -0
  170. package/lib/typescript/components/provider/index.d.ts +2 -0
  171. package/lib/typescript/components/provider/reducer.d.ts +20 -0
  172. package/lib/typescript/components/provider/types.d.ts +33 -0
  173. package/lib/typescript/constants.d.ts +29 -0
  174. package/lib/typescript/context/index.d.ts +1 -0
  175. package/lib/typescript/context/internal.d.ts +16 -0
  176. package/lib/typescript/hooks/index.d.ts +2 -0
  177. package/lib/typescript/hooks/useDeviceOrientation.d.ts +3 -0
  178. package/lib/typescript/hooks/useInternal.d.ts +1 -0
  179. package/lib/typescript/index.d.ts +4 -0
  180. package/lib/typescript/styleGuide.d.ts +28 -0
  181. package/lib/typescript/utils/calculations.d.ts +14 -0
  182. package/lib/typescript/utils/validations.d.ts +3 -0
  183. package/package.json +106 -0
  184. package/src/components/backdrop/Backdrop.tsx +138 -0
  185. package/src/components/backdrop/constants.ts +8 -0
  186. package/src/components/backdrop/index.ts +1 -0
  187. package/src/components/backdrop/styles.ts +8 -0
  188. package/src/components/flatList/FlatList.tsx +23 -0
  189. package/src/components/flatList/index.ts +2 -0
  190. package/src/components/holdItem/HoldItem.tsx +449 -0
  191. package/src/components/holdItem/index.ts +2 -0
  192. package/src/components/holdItem/styles.ts +11 -0
  193. package/src/components/holdItem/types.d.ts +131 -0
  194. package/src/components/icon/Icon.tsx +33 -0
  195. package/src/components/icon/index.ts +1 -0
  196. package/src/components/menu/Menu.tsx +57 -0
  197. package/src/components/menu/MenuItem.tsx +79 -0
  198. package/src/components/menu/MenuItems.tsx +26 -0
  199. package/src/components/menu/MenuList.tsx +151 -0
  200. package/src/components/menu/Separator.tsx +28 -0
  201. package/src/components/menu/calculations.ts +49 -0
  202. package/src/components/menu/constants.ts +9 -0
  203. package/src/components/menu/index.ts +1 -0
  204. package/src/components/menu/styles.ts +64 -0
  205. package/src/components/menu/types.d.ts +28 -0
  206. package/src/components/provider/Provider.tsx +105 -0
  207. package/src/components/provider/index.ts +2 -0
  208. package/src/components/provider/reducer.ts +48 -0
  209. package/src/components/provider/types.d.ts +33 -0
  210. package/src/constants.ts +54 -0
  211. package/src/context/index.ts +1 -0
  212. package/src/context/internal.ts +19 -0
  213. package/src/hooks/index.ts +2 -0
  214. package/src/hooks/useDeviceOrientation.ts +28 -0
  215. package/src/hooks/useInternal.ts +4 -0
  216. package/src/index.ts +4 -0
  217. package/src/styleGuide.ts +31 -0
  218. package/src/utils/calculations.ts +110 -0
  219. package/src/utils/validations.ts +42 -0
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _reactNative = require("react-native");
11
+
12
+ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
13
+
14
+ var _Separator = _interopRequireDefault(require("./Separator"));
15
+
16
+ var _styles = _interopRequireDefault(require("./styles"));
17
+
18
+ var _hooks = require("../../hooks");
19
+
20
+ var _constants = require("../../constants");
21
+
22
+ var _constants2 = require("./constants");
23
+
24
+ var _lodash = _interopRequireDefault(require("lodash.isequal"));
25
+
26
+ var _calculations = require("./calculations");
27
+
28
+ var _Provider = require("../provider/Provider");
29
+
30
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
+
32
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
33
+
34
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
+
36
+ // @ts-ignore
37
+ const AnimatedTouchable = _reactNativeReanimated.default.createAnimatedComponent(_reactNative.TouchableOpacity);
38
+
39
+ const MenuItemComponent = ({
40
+ item,
41
+ isLast
42
+ }) => {
43
+ const {
44
+ state,
45
+ theme,
46
+ menuProps
47
+ } = (0, _hooks.useInternal)();
48
+ const borderStyles = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
49
+ const borderBottomColor = theme.value === 'dark' ? _constants2.BORDER_DARK_COLOR : _constants2.BORDER_LIGHT_COLOR;
50
+ return {
51
+ borderBottomColor,
52
+ borderBottomWidth: isLast ? 0 : 1
53
+ };
54
+ }, [theme, isLast, item]);
55
+ const textColor = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
56
+ return {
57
+ color: (0, _calculations.getColor)(item.isTitle, item.isDestructive, theme.value)
58
+ };
59
+ }, [theme, item]);
60
+ const handleOnPress = (0, _react.useCallback)(() => {
61
+ if (!item.isTitle) {
62
+ const params = menuProps.value.actionParams[item.text] || [];
63
+ if (item.onPress) item.onPress(...params);
64
+ state.value = _constants.CONTEXT_MENU_STATE.END;
65
+ } // eslint-disable-next-line react-hooks/exhaustive-deps
66
+
67
+ }, [state, item]);
68
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(AnimatedTouchable, {
69
+ onPress: handleOnPress,
70
+ activeOpacity: !item.isTitle ? 0.4 : 1,
71
+ style: [_styles.default.menuItem, borderStyles]
72
+ }, /*#__PURE__*/_react.default.createElement(_reactNativeReanimated.default.Text, {
73
+ style: [item.isTitle ? _styles.default.menuItemTitleText : _styles.default.menuItemText, textColor]
74
+ }, item.text), !item.isTitle && item.icon && (_Provider.AnimatedIcon && typeof item.icon === 'string' ? /*#__PURE__*/_react.default.createElement(_Provider.AnimatedIcon, {
75
+ name: item.icon,
76
+ size: 18,
77
+ style: textColor
78
+ }) : typeof item.icon === 'function' ? item.icon() : null)), item.withSeparator && /*#__PURE__*/_react.default.createElement(_Separator.default, null));
79
+ };
80
+
81
+ const MenuItem = /*#__PURE__*/_react.default.memo(MenuItemComponent, _lodash.default);
82
+
83
+ var _default = MenuItem;
84
+ exports.default = _default;
85
+ //# sourceMappingURL=MenuItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["MenuItem.tsx"],"names":["AnimatedTouchable","Animated","createAnimatedComponent","TouchableOpacity","MenuItemComponent","item","isLast","state","theme","menuProps","borderStyles","borderBottomColor","value","BORDER_DARK_COLOR","BORDER_LIGHT_COLOR","borderBottomWidth","textColor","color","isTitle","isDestructive","handleOnPress","params","actionParams","text","onPress","CONTEXT_MENU_STATE","END","styles","menuItem","menuItemTitleText","menuItemText","icon","AnimatedIcon","withSeparator","MenuItem","React","memo","isEqual"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA;AACA,MAAMA,iBAAiB,GAAGC,+BAASC,uBAAT,CAAiCC,6BAAjC,CAA1B;;AAOA,MAAMC,iBAAiB,GAAG,CAAC;AAAEC,EAAAA,IAAF;AAAQC,EAAAA;AAAR,CAAD,KAA8C;AACtE,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,KAAT;AAAgBC,IAAAA;AAAhB,MAA8B,yBAApC;AAEA,QAAMC,YAAY,GAAG,6CAAiB,MAAM;AAC1C,UAAMC,iBAAiB,GACrBH,KAAK,CAACI,KAAN,KAAgB,MAAhB,GAAyBC,6BAAzB,GAA6CC,8BAD/C;AAGA,WAAO;AACLH,MAAAA,iBADK;AAELI,MAAAA,iBAAiB,EAAET,MAAM,GAAG,CAAH,GAAO;AAF3B,KAAP;AAID,GARoB,EAQlB,CAACE,KAAD,EAAQF,MAAR,EAAgBD,IAAhB,CARkB,CAArB;AAUA,QAAMW,SAAS,GAAG,6CAAiB,MAAM;AACvC,WAAO;AAAEC,MAAAA,KAAK,EAAE,4BAASZ,IAAI,CAACa,OAAd,EAAuBb,IAAI,CAACc,aAA5B,EAA2CX,KAAK,CAACI,KAAjD;AAAT,KAAP;AACD,GAFiB,EAEf,CAACJ,KAAD,EAAQH,IAAR,CAFe,CAAlB;AAIA,QAAMe,aAAa,GAAG,wBAAY,MAAM;AACtC,QAAI,CAACf,IAAI,CAACa,OAAV,EAAmB;AACjB,YAAMG,MAAM,GAAGZ,SAAS,CAACG,KAAV,CAAgBU,YAAhB,CAA6BjB,IAAI,CAACkB,IAAlC,KAA2C,EAA1D;AACA,UAAIlB,IAAI,CAACmB,OAAT,EAAkBnB,IAAI,CAACmB,OAAL,CAAa,GAAGH,MAAhB;AAClBd,MAAAA,KAAK,CAACK,KAAN,GAAca,8BAAmBC,GAAjC;AACD,KALqC,CAMtC;;AACD,GAPqB,EAOnB,CAACnB,KAAD,EAAQF,IAAR,CAPmB,CAAtB;AASA,sBACE,yEACE,6BAAC,iBAAD;AACE,IAAA,OAAO,EAAEe,aADX;AAEE,IAAA,aAAa,EAAE,CAACf,IAAI,CAACa,OAAN,GAAgB,GAAhB,GAAsB,CAFvC;AAGE,IAAA,KAAK,EAAE,CAACS,gBAAOC,QAAR,EAAkBlB,YAAlB;AAHT,kBAKE,6BAAC,8BAAD,CAAU,IAAV;AACE,IAAA,KAAK,EAAE,CACLL,IAAI,CAACa,OAAL,GAAeS,gBAAOE,iBAAtB,GAA0CF,gBAAOG,YAD5C,EAELd,SAFK;AADT,KAMGX,IAAI,CAACkB,IANR,CALF,EAaG,CAAClB,IAAI,CAACa,OAAN,IACCb,IAAI,CAAC0B,IADN,KAEEC,0BAAgB,OAAO3B,IAAI,CAAC0B,IAAZ,KAAqB,QAArC,gBACC,6BAAC,sBAAD;AAAc,IAAA,IAAI,EAAE1B,IAAI,CAAC0B,IAAzB;AAA+B,IAAA,IAAI,EAAE,EAArC;AAAyC,IAAA,KAAK,EAAEf;AAAhD,IADD,GAEG,OAAOX,IAAI,CAAC0B,IAAZ,KAAqB,UAArB,GACF1B,IAAI,CAAC0B,IAAL,EADE,GAEA,IANL,CAbH,CADF,EAsBG1B,IAAI,CAAC4B,aAAL,iBAAsB,6BAAC,kBAAD,OAtBzB,CADF;AA0BD,CApDD;;AAsDA,MAAMC,QAAQ,gBAAGC,eAAMC,IAAN,CAAWhC,iBAAX,EAA8BiC,eAA9B,CAAjB;;eACeH,Q","sourcesContent":["import React, { useCallback } from 'react';\nimport { TouchableOpacity } from 'react-native';\nimport Animated, { useAnimatedStyle } from 'react-native-reanimated';\n\nimport Separator from './Separator';\nimport styles from './styles';\n\nimport { MenuItemProps } from './types';\nimport { useInternal } from '../../hooks';\nimport { CONTEXT_MENU_STATE } from '../../constants';\nimport { BORDER_LIGHT_COLOR, BORDER_DARK_COLOR } from './constants';\nimport isEqual from 'lodash.isequal';\nimport { getColor } from './calculations';\nimport { AnimatedIcon } from '../provider/Provider';\n\n// @ts-ignore\nconst AnimatedTouchable = Animated.createAnimatedComponent(TouchableOpacity);\n\ntype MenuItemComponentProps = {\n item: MenuItemProps;\n isLast?: boolean;\n};\n\nconst MenuItemComponent = ({ item, isLast }: MenuItemComponentProps) => {\n const { state, theme, menuProps } = useInternal();\n\n const borderStyles = useAnimatedStyle(() => {\n const borderBottomColor =\n theme.value === 'dark' ? BORDER_DARK_COLOR : BORDER_LIGHT_COLOR;\n\n return {\n borderBottomColor,\n borderBottomWidth: isLast ? 0 : 1,\n };\n }, [theme, isLast, item]);\n\n const textColor = useAnimatedStyle(() => {\n return { color: getColor(item.isTitle, item.isDestructive, theme.value) };\n }, [theme, item]);\n\n const handleOnPress = useCallback(() => {\n if (!item.isTitle) {\n const params = menuProps.value.actionParams[item.text] || [];\n if (item.onPress) item.onPress(...params);\n state.value = CONTEXT_MENU_STATE.END;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state, item]);\n\n return (\n <>\n <AnimatedTouchable\n onPress={handleOnPress}\n activeOpacity={!item.isTitle ? 0.4 : 1}\n style={[styles.menuItem, borderStyles]}\n >\n <Animated.Text\n style={[\n item.isTitle ? styles.menuItemTitleText : styles.menuItemText,\n textColor,\n ]}\n >\n {item.text}\n </Animated.Text>\n {!item.isTitle &&\n item.icon &&\n (AnimatedIcon && typeof item.icon === 'string' ? (\n <AnimatedIcon name={item.icon} size={18} style={textColor} />\n ) : typeof item.icon === 'function' ? (\n item.icon()\n ) : null)}\n </AnimatedTouchable>\n {item.withSeparator && <Separator />}\n </>\n );\n};\n\nconst MenuItem = React.memo(MenuItemComponent, isEqual);\nexport default MenuItem;\n"]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _MenuItem = _interopRequireDefault(require("./MenuItem"));
11
+
12
+ var _lodash = _interopRequireDefault(require("lodash.isequal"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
17
+
18
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+
20
+ const MenuItemsComponent = ({
21
+ items
22
+ }) => {
23
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, items.map((item, index) => {
24
+ return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
25
+ key: index,
26
+ item: item,
27
+ isLast: items.length === index + 1
28
+ });
29
+ }));
30
+ };
31
+
32
+ const MenuItems = /*#__PURE__*/(0, _react.memo)(MenuItemsComponent, _lodash.default);
33
+ var _default = MenuItems;
34
+ exports.default = _default;
35
+ //# sourceMappingURL=MenuItems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["MenuItems.tsx"],"names":["MenuItemsComponent","items","map","item","index","length","MenuItems","isEqual"],"mappings":";;;;;;;AAAA;;AAEA;;AAEA;;;;;;;;AAGA,MAAMA,kBAAkB,GAAG,CAAC;AAAEC,EAAAA;AAAF,CAAD,KAA2C;AACpE,sBACE,4DACGA,KAAK,CAACC,GAAN,CAAU,CAACC,IAAD,EAAsBC,KAAtB,KAAwC;AACjD,wBACE,6BAAC,iBAAD;AACE,MAAA,GAAG,EAAEA,KADP;AAEE,MAAA,IAAI,EAAED,IAFR;AAGE,MAAA,MAAM,EAAEF,KAAK,CAACI,MAAN,KAAiBD,KAAK,GAAG;AAHnC,MADF;AAOD,GARA,CADH,CADF;AAaD,CAdD;;AAgBA,MAAME,SAAS,gBAAG,iBAAKN,kBAAL,EAAyBO,eAAzB,CAAlB;eAEeD,S","sourcesContent":["import React, { memo } from 'react';\n\nimport MenuItem from './MenuItem';\n\nimport isEqual from 'lodash.isequal';\nimport { MenuItemProps } from './types';\n\nconst MenuItemsComponent = ({ items }: { items: MenuItemProps[] }) => {\n return (\n <>\n {items.map((item: MenuItemProps, index: number) => {\n return (\n <MenuItem\n key={index}\n item={item}\n isLast={items.length === index + 1}\n />\n );\n })}\n </>\n );\n};\n\nconst MenuItems = memo(MenuItemsComponent, isEqual);\n\nexport default MenuItems;\n"]}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _reactNative = require("react-native");
11
+
12
+ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
13
+
14
+ var _calculations = require("../../utils/calculations");
15
+
16
+ var _blur = require("@react-native-community/blur");
17
+
18
+ var _MenuItems = _interopRequireDefault(require("./MenuItems"));
19
+
20
+ var _constants = require("../../constants");
21
+
22
+ var _styles = _interopRequireDefault(require("./styles"));
23
+
24
+ var _hooks = require("../../hooks");
25
+
26
+ var _validations = require("../../utils/validations");
27
+
28
+ var _calculations2 = require("./calculations");
29
+
30
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
31
+
32
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
+
34
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
+
36
+ // @ts-ignore
37
+ const AnimatedView = _reactNativeReanimated.default.createAnimatedComponent(_blur.BlurView);
38
+
39
+ const MenuListComponent = () => {
40
+ const {
41
+ state,
42
+ theme,
43
+ menuProps
44
+ } = (0, _hooks.useInternal)();
45
+
46
+ const [itemList, setItemList] = _react.default.useState([]);
47
+
48
+ const menuHeight = (0, _reactNativeReanimated.useDerivedValue)(() => {
49
+ const itemsWithSeparator = menuProps.value.items.filter(item => item.withSeparator);
50
+ return (0, _calculations.calculateMenuHeight)(menuProps.value.items.length, itemsWithSeparator.length);
51
+ }, [menuProps]);
52
+ const prevList = (0, _reactNativeReanimated.useSharedValue)([]);
53
+ const messageStyles = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
54
+ const itemsWithSeparator = menuProps.value.items.filter(item => item.withSeparator);
55
+ const translate = (0, _calculations.menuAnimationAnchor)(menuProps.value.anchorPosition, menuProps.value.itemWidth, menuProps.value.items.length, itemsWithSeparator.length);
56
+
57
+ const _leftPosition = (0, _calculations2.leftOrRight)(menuProps);
58
+
59
+ const menuScaleAnimation = () => state.value === _constants.CONTEXT_MENU_STATE.ACTIVE ? (0, _reactNativeReanimated.withSpring)(1, _constants.SPRING_CONFIGURATION_MENU) : (0, _reactNativeReanimated.withTiming)(0, {
60
+ duration: _constants.HOLD_ITEM_TRANSFORM_DURATION
61
+ });
62
+
63
+ const opacityAnimation = () => (0, _reactNativeReanimated.withTiming)(state.value === _constants.CONTEXT_MENU_STATE.ACTIVE ? 1 : 0, {
64
+ duration: _constants.HOLD_ITEM_TRANSFORM_DURATION
65
+ });
66
+
67
+ return {
68
+ left: _leftPosition,
69
+ height: menuHeight.value,
70
+ opacity: opacityAnimation(),
71
+ transform: [{
72
+ translateX: translate.beginningTransformations.translateX
73
+ }, {
74
+ translateY: translate.beginningTransformations.translateY
75
+ }, {
76
+ scale: menuScaleAnimation()
77
+ }, {
78
+ translateX: translate.endingTransformations.translateX
79
+ }, {
80
+ translateY: translate.endingTransformations.translateY
81
+ }]
82
+ };
83
+ });
84
+ const animatedInnerContainerStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
85
+ return {
86
+ backgroundColor: theme.value === 'light' ? _constants.IS_IOS ? 'rgba(255, 255, 255, .75)' : 'rgba(255, 255, 255, .95)' : _constants.IS_IOS ? 'rgba(0,0,0,0.5)' : 'rgba(39, 39, 39, .8)'
87
+ };
88
+ }, [theme]);
89
+ const animatedProps = (0, _reactNativeReanimated.useAnimatedProps)(() => {
90
+ return {
91
+ blurType: theme.value
92
+ };
93
+ }, [theme]);
94
+
95
+ const setter = items => {
96
+ setItemList(items);
97
+ prevList.value = items;
98
+ };
99
+
100
+ (0, _reactNativeReanimated.useAnimatedReaction)(() => menuProps.value.items, _items => {
101
+ if (!(0, _validations.deepEqual)(_items, prevList.value)) {
102
+ (0, _reactNativeReanimated.runOnJS)(setter)(_items);
103
+ }
104
+ }, [menuProps]);
105
+ return /*#__PURE__*/_react.default.createElement(AnimatedView, {
106
+ blurAmount: 100 //@ts-ignore
107
+ ,
108
+ animatedProps: animatedProps,
109
+ style: [_styles.default.menuContainer, messageStyles]
110
+ }, /*#__PURE__*/_react.default.createElement(_reactNativeReanimated.default.View, {
111
+ style: [_reactNative.StyleSheet.absoluteFillObject, _styles.default.menuInnerContainer, animatedInnerContainerStyle]
112
+ }, /*#__PURE__*/_react.default.createElement(_MenuItems.default, {
113
+ items: itemList
114
+ })));
115
+ };
116
+
117
+ const MenuList = /*#__PURE__*/_react.default.memo(MenuListComponent);
118
+
119
+ var _default = MenuList;
120
+ exports.default = _default;
121
+ //# sourceMappingURL=MenuList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["MenuList.tsx"],"names":["AnimatedView","Animated","createAnimatedComponent","BlurView","MenuListComponent","state","theme","menuProps","itemList","setItemList","React","useState","menuHeight","itemsWithSeparator","value","items","filter","item","withSeparator","length","prevList","messageStyles","translate","anchorPosition","itemWidth","_leftPosition","menuScaleAnimation","CONTEXT_MENU_STATE","ACTIVE","SPRING_CONFIGURATION_MENU","duration","HOLD_ITEM_TRANSFORM_DURATION","opacityAnimation","left","height","opacity","transform","translateX","beginningTransformations","translateY","scale","endingTransformations","animatedInnerContainerStyle","backgroundColor","IS_IOS","animatedProps","blurType","setter","_items","styles","menuContainer","StyleSheet","absoluteFillObject","menuInnerContainer","MenuList","memo"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet } from 'react-native';\n\nimport Animated, {\n runOnJS,\n useAnimatedProps,\n useAnimatedReaction,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withSpring,\n withTiming,\n} from 'react-native-reanimated';\n\nimport {\n calculateMenuHeight,\n menuAnimationAnchor,\n} from '../../utils/calculations';\n// @ts-ignore\nimport { BlurView } from '@react-native-community/blur';\n\nimport MenuItems from './MenuItems';\n\nimport {\n SPRING_CONFIGURATION_MENU,\n HOLD_ITEM_TRANSFORM_DURATION,\n IS_IOS,\n CONTEXT_MENU_STATE,\n} from '../../constants';\n\nimport styles from './styles';\nimport { MenuItemProps } from './types';\nimport { useInternal } from '../../hooks';\nimport { deepEqual } from '../../utils/validations';\nimport { leftOrRight } from './calculations';\n\nconst AnimatedView = Animated.createAnimatedComponent(BlurView);\n\nconst MenuListComponent = () => {\n const { state, theme, menuProps } = useInternal();\n\n const [itemList, setItemList] = React.useState<MenuItemProps[]>([]);\n\n const menuHeight = useDerivedValue(() => {\n const itemsWithSeparator = menuProps.value.items.filter(\n item => item.withSeparator\n );\n return calculateMenuHeight(\n menuProps.value.items.length,\n itemsWithSeparator.length\n );\n }, [menuProps]);\n const prevList = useSharedValue<MenuItemProps[]>([]);\n\n const messageStyles = useAnimatedStyle(() => {\n const itemsWithSeparator = menuProps.value.items.filter(\n item => item.withSeparator\n );\n\n const translate = menuAnimationAnchor(\n menuProps.value.anchorPosition,\n menuProps.value.itemWidth,\n menuProps.value.items.length,\n itemsWithSeparator.length\n );\n\n const _leftPosition = leftOrRight(menuProps);\n\n const menuScaleAnimation = () =>\n state.value === CONTEXT_MENU_STATE.ACTIVE\n ? withSpring(1, SPRING_CONFIGURATION_MENU)\n : withTiming(0, {\n duration: HOLD_ITEM_TRANSFORM_DURATION,\n });\n\n const opacityAnimation = () =>\n withTiming(state.value === CONTEXT_MENU_STATE.ACTIVE ? 1 : 0, {\n duration: HOLD_ITEM_TRANSFORM_DURATION,\n });\n\n return {\n left: _leftPosition,\n height: menuHeight.value,\n opacity: opacityAnimation(),\n transform: [\n { translateX: translate.beginningTransformations.translateX },\n { translateY: translate.beginningTransformations.translateY },\n {\n scale: menuScaleAnimation(),\n },\n { translateX: translate.endingTransformations.translateX },\n { translateY: translate.endingTransformations.translateY },\n ],\n };\n });\n\n const animatedInnerContainerStyle = useAnimatedStyle(() => {\n return {\n backgroundColor:\n theme.value === 'light'\n ? IS_IOS\n ? 'rgba(255, 255, 255, .75)'\n : 'rgba(255, 255, 255, .95)'\n : IS_IOS\n ? 'rgba(0,0,0,0.5)'\n : 'rgba(39, 39, 39, .8)',\n };\n }, [theme]);\n\n const animatedProps = useAnimatedProps(() => {\n return { blurType: theme.value };\n }, [theme]);\n\n const setter = (items: MenuItemProps[]) => {\n setItemList(items);\n prevList.value = items;\n };\n\n useAnimatedReaction(\n () => menuProps.value.items,\n _items => {\n if (!deepEqual(_items, prevList.value)) {\n runOnJS(setter)(_items);\n }\n },\n [menuProps]\n );\n\n return (\n <AnimatedView\n blurAmount={100}\n //@ts-ignore\n animatedProps={animatedProps}\n style={[styles.menuContainer, messageStyles]}\n >\n <Animated.View\n style={[\n StyleSheet.absoluteFillObject,\n styles.menuInnerContainer,\n animatedInnerContainerStyle,\n ]}\n >\n <MenuItems items={itemList} />\n </Animated.View>\n </AnimatedView>\n );\n};\n\nconst MenuList = React.memo(MenuListComponent);\n\nexport default MenuList;\n"]}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _reactNative = require("react-native");
11
+
12
+ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
13
+
14
+ var _hooks = require("../../hooks");
15
+
16
+ var _constants = require("./constants");
17
+
18
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
19
+
20
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+
22
+ const Separator = () => {
23
+ const {
24
+ theme
25
+ } = (0, _hooks.useInternal)();
26
+ const separatorStyles = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
27
+ return {
28
+ backgroundColor: theme.value === 'dark' ? _constants.BORDER_DARK_COLOR : _constants.BORDER_LIGHT_COLOR
29
+ };
30
+ }, [theme]);
31
+ return /*#__PURE__*/_react.default.createElement(_reactNativeReanimated.default.View, {
32
+ style: [styles.separator, { ...separatorStyles
33
+ }]
34
+ });
35
+ };
36
+
37
+ var _default = /*#__PURE__*/(0, _react.memo)(Separator);
38
+
39
+ exports.default = _default;
40
+
41
+ const styles = _reactNative.StyleSheet.create({
42
+ separator: {
43
+ width: '100%',
44
+ height: 8
45
+ }
46
+ });
47
+ //# sourceMappingURL=Separator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Separator.tsx"],"names":["Separator","theme","separatorStyles","backgroundColor","value","BORDER_DARK_COLOR","BORDER_LIGHT_COLOR","styles","separator","StyleSheet","create","width","height"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;AAEA,MAAMA,SAAS,GAAG,MAAM;AACtB,QAAM;AAAEC,IAAAA;AAAF,MAAY,yBAAlB;AAEA,QAAMC,eAAe,GAAG,6CAAiB,MAAM;AAC7C,WAAO;AACLC,MAAAA,eAAe,EACbF,KAAK,CAACG,KAAN,KAAgB,MAAhB,GAAyBC,4BAAzB,GAA6CC;AAF1C,KAAP;AAID,GALuB,EAKrB,CAACL,KAAD,CALqB,CAAxB;AAOA,sBAAO,6BAAC,8BAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAE,CAACM,MAAM,CAACC,SAAR,EAAmB,EAAE,GAAGN;AAAL,KAAnB;AAAtB,IAAP;AACD,CAXD;;4BAae,iBAAKF,SAAL,C;;;;AAEf,MAAMO,MAAM,GAAGE,wBAAWC,MAAX,CAAkB;AAC/BF,EAAAA,SAAS,EAAE;AACTG,IAAAA,KAAK,EAAE,MADE;AAETC,IAAAA,MAAM,EAAE;AAFC;AADoB,CAAlB,CAAf","sourcesContent":["import React, { memo } from 'react';\nimport { StyleSheet } from 'react-native';\nimport Animated, { useAnimatedStyle } from 'react-native-reanimated';\nimport { useInternal } from '../../hooks';\n\nimport { BORDER_LIGHT_COLOR, BORDER_DARK_COLOR } from './constants';\n\nconst Separator = () => {\n const { theme } = useInternal();\n\n const separatorStyles = useAnimatedStyle(() => {\n return {\n backgroundColor:\n theme.value === 'dark' ? BORDER_DARK_COLOR : BORDER_LIGHT_COLOR,\n };\n }, [theme]);\n\n return <Animated.View style={[styles.separator, { ...separatorStyles }]} />;\n};\n\nexport default memo(Separator);\n\nconst styles = StyleSheet.create({\n separator: {\n width: '100%',\n height: 8,\n },\n});\n"]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getColor = exports.leftOrRight = void 0;
7
+
8
+ var _constants = require("../../constants");
9
+
10
+ var _constants2 = require("./constants");
11
+
12
+ const leftOrRight = menuProps => {
13
+ 'worklet';
14
+
15
+ const anchorPositionHorizontal = menuProps.value.anchorPosition.split('-')[1];
16
+ const itemWidth = menuProps.value.itemWidth;
17
+ let leftPosition = 0;
18
+ anchorPositionHorizontal === 'right' ? leftPosition = -_constants.MENU_WIDTH + itemWidth : anchorPositionHorizontal === 'left' ? leftPosition = 0 : leftPosition = -menuProps.value.itemWidth - _constants.MENU_WIDTH / 2 + menuProps.value.itemWidth / 2;
19
+ return leftPosition;
20
+ };
21
+
22
+ exports.leftOrRight = leftOrRight;
23
+
24
+ const getColor = (isTitle, isDestructive, themeValue) => {
25
+ 'worklet';
26
+
27
+ return isTitle ? _constants2.MENU_TITLE_COLOR : isDestructive ? themeValue === 'dark' ? _constants2.MENU_TEXT_DESTRUCTIVE_COLOR_DARK : _constants2.MENU_TEXT_DESTRUCTIVE_COLOR_LIGHT : themeValue === 'dark' ? _constants2.MENU_TEXT_DARK_COLOR : _constants2.MENU_TEXT_LIGHT_COLOR;
28
+ };
29
+
30
+ exports.getColor = getColor;
31
+ //# sourceMappingURL=calculations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["calculations.ts"],"names":["leftOrRight","menuProps","anchorPositionHorizontal","value","anchorPosition","split","itemWidth","leftPosition","MENU_WIDTH","getColor","isTitle","isDestructive","themeValue","MENU_TITLE_COLOR","MENU_TEXT_DESTRUCTIVE_COLOR_DARK","MENU_TEXT_DESTRUCTIVE_COLOR_LIGHT","MENU_TEXT_DARK_COLOR","MENU_TEXT_LIGHT_COLOR"],"mappings":";;;;;;;AAEA;;AACA;;AASO,MAAMA,WAAW,GACtBC,SADyB,IAEtB;AACH;;AAEA,QAAMC,wBAAwB,GAAGD,SAAS,CAACE,KAAV,CAAgBC,cAAhB,CAA+BC,KAA/B,CAAqC,GAArC,EAA0C,CAA1C,CAAjC;AACA,QAAMC,SAAS,GAAGL,SAAS,CAACE,KAAV,CAAgBG,SAAlC;AAEA,MAAIC,YAAY,GAAG,CAAnB;AACAL,EAAAA,wBAAwB,KAAK,OAA7B,GACKK,YAAY,GAAG,CAACC,qBAAD,GAAcF,SADlC,GAEIJ,wBAAwB,KAAK,MAA7B,GACCK,YAAY,GAAG,CADhB,GAECA,YAAY,GACX,CAACN,SAAS,CAACE,KAAV,CAAgBG,SAAjB,GACAE,wBAAa,CADb,GAEAP,SAAS,CAACE,KAAV,CAAgBG,SAAhB,GAA4B,CAPlC;AASA,SAAOC,YAAP;AACD,CAnBM;;;;AAqBA,MAAME,QAAQ,GAAG,CACtBC,OADsB,EAEtBC,aAFsB,EAGtBC,UAHsB,KAInB;AACH;;AACA,SAAOF,OAAO,GACVG,4BADU,GAEVF,aAAa,GACbC,UAAU,KAAK,MAAf,GACEE,4CADF,GAEEC,6CAHW,GAIbH,UAAU,KAAK,MAAf,GACAI,gCADA,GAEAC,iCARJ;AASD,CAfM","sourcesContent":["import Animated from 'react-native-reanimated';\n\nimport { MENU_WIDTH } from '../../constants';\nimport {\n MENU_TEXT_DARK_COLOR,\n MENU_TEXT_DESTRUCTIVE_COLOR_DARK,\n MENU_TEXT_DESTRUCTIVE_COLOR_LIGHT,\n MENU_TEXT_LIGHT_COLOR,\n MENU_TITLE_COLOR,\n} from './constants';\nimport type { MenuInternalProps } from './types';\n\nexport const leftOrRight = (\n menuProps: Animated.SharedValue<MenuInternalProps>\n) => {\n 'worklet';\n\n const anchorPositionHorizontal = menuProps.value.anchorPosition.split('-')[1];\n const itemWidth = menuProps.value.itemWidth;\n\n let leftPosition = 0;\n anchorPositionHorizontal === 'right'\n ? (leftPosition = -MENU_WIDTH + itemWidth)\n : anchorPositionHorizontal === 'left'\n ? (leftPosition = 0)\n : (leftPosition =\n -menuProps.value.itemWidth -\n MENU_WIDTH / 2 +\n menuProps.value.itemWidth / 2);\n\n return leftPosition;\n};\n\nexport const getColor = (\n isTitle: boolean | undefined,\n isDestructive: boolean | undefined,\n themeValue: 'light' | 'dark'\n) => {\n 'worklet';\n return isTitle\n ? MENU_TITLE_COLOR\n : isDestructive\n ? themeValue === 'dark'\n ? MENU_TEXT_DESTRUCTIVE_COLOR_DARK\n : MENU_TEXT_DESTRUCTIVE_COLOR_LIGHT\n : themeValue === 'dark'\n ? MENU_TEXT_DARK_COLOR\n : MENU_TEXT_LIGHT_COLOR;\n};\n"]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MENU_TEXT_DESTRUCTIVE_COLOR_DARK = exports.MENU_TEXT_DESTRUCTIVE_COLOR_LIGHT = exports.MENU_TEXT_DARK_COLOR = exports.MENU_TEXT_LIGHT_COLOR = exports.MENU_TITLE_COLOR = exports.BORDER_DARK_COLOR = exports.BORDER_LIGHT_COLOR = void 0;
7
+ const BORDER_LIGHT_COLOR = 'rgba(0, 0, 0, 0.1)';
8
+ exports.BORDER_LIGHT_COLOR = BORDER_LIGHT_COLOR;
9
+ const BORDER_DARK_COLOR = 'rgba(255, 255, 255, 0.1)';
10
+ exports.BORDER_DARK_COLOR = BORDER_DARK_COLOR;
11
+ const MENU_TITLE_COLOR = 'gray';
12
+ exports.MENU_TITLE_COLOR = MENU_TITLE_COLOR;
13
+ const MENU_TEXT_LIGHT_COLOR = 'rgba(0, 0, 0, 1)';
14
+ exports.MENU_TEXT_LIGHT_COLOR = MENU_TEXT_LIGHT_COLOR;
15
+ const MENU_TEXT_DARK_COLOR = 'rgb(255, 255, 255)';
16
+ exports.MENU_TEXT_DARK_COLOR = MENU_TEXT_DARK_COLOR;
17
+ const MENU_TEXT_DESTRUCTIVE_COLOR_LIGHT = 'rgb(255, 59,48)';
18
+ exports.MENU_TEXT_DESTRUCTIVE_COLOR_LIGHT = MENU_TEXT_DESTRUCTIVE_COLOR_LIGHT;
19
+ const MENU_TEXT_DESTRUCTIVE_COLOR_DARK = 'rgb(255, 69,58)';
20
+ exports.MENU_TEXT_DESTRUCTIVE_COLOR_DARK = MENU_TEXT_DESTRUCTIVE_COLOR_DARK;
21
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["constants.ts"],"names":["BORDER_LIGHT_COLOR","BORDER_DARK_COLOR","MENU_TITLE_COLOR","MENU_TEXT_LIGHT_COLOR","MENU_TEXT_DARK_COLOR","MENU_TEXT_DESTRUCTIVE_COLOR_LIGHT","MENU_TEXT_DESTRUCTIVE_COLOR_DARK"],"mappings":";;;;;;AAAO,MAAMA,kBAAkB,GAAG,oBAA3B;;AACA,MAAMC,iBAAiB,GAAG,0BAA1B;;AAEA,MAAMC,gBAAgB,GAAG,MAAzB;;AACA,MAAMC,qBAAqB,GAAG,kBAA9B;;AACA,MAAMC,oBAAoB,GAAG,oBAA7B;;AAEA,MAAMC,iCAAiC,GAAG,iBAA1C;;AACA,MAAMC,gCAAgC,GAAG,iBAAzC","sourcesContent":["export const BORDER_LIGHT_COLOR = 'rgba(0, 0, 0, 0.1)';\nexport const BORDER_DARK_COLOR = 'rgba(255, 255, 255, 0.1)';\n\nexport const MENU_TITLE_COLOR = 'gray';\nexport const MENU_TEXT_LIGHT_COLOR = 'rgba(0, 0, 0, 1)';\nexport const MENU_TEXT_DARK_COLOR = 'rgb(255, 255, 255)';\n\nexport const MENU_TEXT_DESTRUCTIVE_COLOR_LIGHT = 'rgb(255, 59,48)';\nexport const MENU_TEXT_DESTRUCTIVE_COLOR_DARK = 'rgb(255, 69,58)';\n"]}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _Menu.default;
10
+ }
11
+ });
12
+
13
+ var _Menu = _interopRequireDefault(require("./Menu"));
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA","sourcesContent":["export { default } from './Menu';\n"]}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _reactNative = require("react-native");
9
+
10
+ var _constants = require("../../constants");
11
+
12
+ var _styleGuide = _interopRequireDefault(require("../../styleGuide"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ const styles = _reactNative.StyleSheet.create({
17
+ menuWrapper: {
18
+ position: 'absolute',
19
+ left: 0,
20
+ zIndex: 10
21
+ },
22
+ menuContainer: {
23
+ position: 'absolute',
24
+ top: 0,
25
+ width: _constants.MENU_WIDTH,
26
+ borderRadius: _styleGuide.default.spacing * 1.5,
27
+ display: 'flex',
28
+ flexDirection: 'row',
29
+ justifyContent: 'flex-start',
30
+ alignItems: 'flex-start',
31
+ overflow: 'hidden',
32
+ zIndex: 15
33
+ },
34
+ menuInnerContainer: {
35
+ display: 'flex',
36
+ flexDirection: 'column',
37
+ justifyContent: 'flex-start',
38
+ alignItems: 'center'
39
+ },
40
+ menuItem: {
41
+ width: '100%',
42
+ display: 'flex',
43
+ flexDirection: 'row',
44
+ justifyContent: 'space-between',
45
+ alignItems: 'center',
46
+ paddingHorizontal: _styleGuide.default.spacing * 2,
47
+ paddingVertical: _styleGuide.default.spacing * 1.25
48
+ },
49
+ border: {
50
+ borderBottomWidth: 1,
51
+ borderBottomColor: 'rgba(255, 255, 255, 0.1)'
52
+ },
53
+ menuItemText: {
54
+ fontSize: _styleGuide.default.typography.callout.fontSize,
55
+ lineHeight: _styleGuide.default.typography.callout.lineHeight,
56
+ textAlign: 'left',
57
+ width: '100%',
58
+ flex: 1
59
+ },
60
+ menuItemTitleText: {
61
+ fontSize: _styleGuide.default.typography.callout2.fontSize,
62
+ lineHeight: _styleGuide.default.typography.callout2.lineHeight,
63
+ textAlign: 'center',
64
+ width: '100%',
65
+ flex: 1
66
+ },
67
+ textDark: {
68
+ color: 'black'
69
+ },
70
+ textLight: {
71
+ color: 'white'
72
+ }
73
+ });
74
+
75
+ var _default = styles;
76
+ exports.default = _default;
77
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["styles.ts"],"names":["styles","StyleSheet","create","menuWrapper","position","left","zIndex","menuContainer","top","width","MENU_WIDTH","borderRadius","styleGuide","spacing","display","flexDirection","justifyContent","alignItems","overflow","menuInnerContainer","menuItem","paddingHorizontal","paddingVertical","border","borderBottomWidth","borderBottomColor","menuItemText","fontSize","typography","callout","lineHeight","textAlign","flex","menuItemTitleText","callout2","textDark","color","textLight"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEA,MAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,WAAW,EAAE;AACXC,IAAAA,QAAQ,EAAE,UADC;AAEXC,IAAAA,IAAI,EAAE,CAFK;AAGXC,IAAAA,MAAM,EAAE;AAHG,GADkB;AAM/BC,EAAAA,aAAa,EAAE;AACbH,IAAAA,QAAQ,EAAE,UADG;AAEbI,IAAAA,GAAG,EAAE,CAFQ;AAGbC,IAAAA,KAAK,EAAEC,qBAHM;AAIbC,IAAAA,YAAY,EAAEC,oBAAWC,OAAX,GAAqB,GAJtB;AAKbC,IAAAA,OAAO,EAAE,MALI;AAMbC,IAAAA,aAAa,EAAE,KANF;AAObC,IAAAA,cAAc,EAAE,YAPH;AAQbC,IAAAA,UAAU,EAAE,YARC;AASbC,IAAAA,QAAQ,EAAE,QATG;AAUbZ,IAAAA,MAAM,EAAE;AAVK,GANgB;AAkB/Ba,EAAAA,kBAAkB,EAAE;AAClBL,IAAAA,OAAO,EAAE,MADS;AAElBC,IAAAA,aAAa,EAAE,QAFG;AAGlBC,IAAAA,cAAc,EAAE,YAHE;AAIlBC,IAAAA,UAAU,EAAE;AAJM,GAlBW;AAwB/BG,EAAAA,QAAQ,EAAE;AACRX,IAAAA,KAAK,EAAE,MADC;AAERK,IAAAA,OAAO,EAAE,MAFD;AAGRC,IAAAA,aAAa,EAAE,KAHP;AAIRC,IAAAA,cAAc,EAAE,eAJR;AAKRC,IAAAA,UAAU,EAAE,QALJ;AAMRI,IAAAA,iBAAiB,EAAET,oBAAWC,OAAX,GAAqB,CANhC;AAORS,IAAAA,eAAe,EAAEV,oBAAWC,OAAX,GAAqB;AAP9B,GAxBqB;AAiC/BU,EAAAA,MAAM,EAAE;AACNC,IAAAA,iBAAiB,EAAE,CADb;AAENC,IAAAA,iBAAiB,EAAE;AAFb,GAjCuB;AAqC/BC,EAAAA,YAAY,EAAE;AACZC,IAAAA,QAAQ,EAAEf,oBAAWgB,UAAX,CAAsBC,OAAtB,CAA8BF,QAD5B;AAEZG,IAAAA,UAAU,EAAElB,oBAAWgB,UAAX,CAAsBC,OAAtB,CAA8BC,UAF9B;AAGZC,IAAAA,SAAS,EAAE,MAHC;AAIZtB,IAAAA,KAAK,EAAE,MAJK;AAKZuB,IAAAA,IAAI,EAAE;AALM,GArCiB;AA4C/BC,EAAAA,iBAAiB,EAAE;AACjBN,IAAAA,QAAQ,EAAEf,oBAAWgB,UAAX,CAAsBM,QAAtB,CAA+BP,QADxB;AAEjBG,IAAAA,UAAU,EAAElB,oBAAWgB,UAAX,CAAsBM,QAAtB,CAA+BJ,UAF1B;AAGjBC,IAAAA,SAAS,EAAE,QAHM;AAIjBtB,IAAAA,KAAK,EAAE,MAJU;AAKjBuB,IAAAA,IAAI,EAAE;AALW,GA5CY;AAmD/BG,EAAAA,QAAQ,EAAE;AACRC,IAAAA,KAAK,EAAE;AADC,GAnDqB;AAsD/BC,EAAAA,SAAS,EAAE;AACTD,IAAAA,KAAK,EAAE;AADE;AAtDoB,CAAlB,CAAf;;eA2DepC,M","sourcesContent":["import { StyleSheet } from 'react-native';\nimport { MENU_WIDTH } from '../../constants';\nimport styleGuide from '../../styleGuide';\n\nconst styles = StyleSheet.create({\n menuWrapper: {\n position: 'absolute',\n left: 0,\n zIndex: 10,\n },\n menuContainer: {\n position: 'absolute',\n top: 0,\n width: MENU_WIDTH,\n borderRadius: styleGuide.spacing * 1.5,\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'flex-start',\n alignItems: 'flex-start',\n overflow: 'hidden',\n zIndex: 15,\n },\n menuInnerContainer: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-start',\n alignItems: 'center',\n },\n menuItem: {\n width: '100%',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingHorizontal: styleGuide.spacing * 2,\n paddingVertical: styleGuide.spacing * 1.25,\n },\n border: {\n borderBottomWidth: 1,\n borderBottomColor: 'rgba(255, 255, 255, 0.1)',\n },\n menuItemText: {\n fontSize: styleGuide.typography.callout.fontSize,\n lineHeight: styleGuide.typography.callout.lineHeight,\n textAlign: 'left',\n width: '100%',\n flex: 1,\n },\n menuItemTitleText: {\n fontSize: styleGuide.typography.callout2.fontSize,\n lineHeight: styleGuide.typography.callout2.lineHeight,\n textAlign: 'center',\n width: '100%',\n flex: 1,\n },\n textDark: {\n color: 'black',\n },\n textLight: {\n color: 'white',\n },\n});\n\nexport default styles;\n"]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.AnimatedIcon = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _portal = require("@gorhom/portal");
11
+
12
+ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
13
+
14
+ var _reactNativeGestureHandler = require("react-native-gesture-handler");
15
+
16
+ var _backdrop = require("../backdrop");
17
+
18
+ var _internal = require("../../context/internal");
19
+
20
+ var _constants = require("../../constants");
21
+
22
+ var _menu = _interopRequireDefault(require("../menu"));
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
27
+
28
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
+
30
+ // Components
31
+ // Utils
32
+ let AnimatedIcon;
33
+ exports.AnimatedIcon = AnimatedIcon;
34
+
35
+ const ProviderComponent = ({
36
+ children,
37
+ theme: selectedTheme,
38
+ iconComponent,
39
+ safeAreaInsets,
40
+ onOpen,
41
+ onClose
42
+ }) => {
43
+ if (iconComponent) exports.AnimatedIcon = AnimatedIcon = _reactNativeReanimated.default.createAnimatedComponent(iconComponent);
44
+ const state = (0, _reactNativeReanimated.useSharedValue)(_constants.CONTEXT_MENU_STATE.UNDETERMINED);
45
+ const theme = (0, _reactNativeReanimated.useSharedValue)(selectedTheme || 'light');
46
+ const menuProps = (0, _reactNativeReanimated.useSharedValue)({
47
+ itemHeight: 0,
48
+ itemWidth: 0,
49
+ itemX: 0,
50
+ itemY: 0,
51
+ items: [],
52
+ anchorPosition: 'top-center',
53
+ menuHeight: 0,
54
+ transformValue: 0,
55
+ actionParams: {}
56
+ });
57
+ (0, _react.useEffect)(() => {
58
+ theme.value = selectedTheme || 'light'; // eslint-disable-next-line react-hooks/exhaustive-deps
59
+ }, [selectedTheme]);
60
+ (0, _reactNativeReanimated.useAnimatedReaction)(() => state.value, state => {
61
+ switch (state) {
62
+ case _constants.CONTEXT_MENU_STATE.ACTIVE:
63
+ {
64
+ if (onOpen) (0, _reactNativeReanimated.runOnJS)(onOpen)();
65
+ break;
66
+ }
67
+
68
+ case _constants.CONTEXT_MENU_STATE.END:
69
+ {
70
+ if (onClose) (0, _reactNativeReanimated.runOnJS)(onClose)();
71
+ break;
72
+ }
73
+ }
74
+ }, [state]);
75
+ const internalContextVariables = (0, _react.useMemo)(() => ({
76
+ state,
77
+ theme,
78
+ menuProps,
79
+ safeAreaInsets: safeAreaInsets || {
80
+ top: 0,
81
+ bottom: 0,
82
+ left: 0,
83
+ right: 0
84
+ }
85
+ }), [state, theme, menuProps, safeAreaInsets]);
86
+ return /*#__PURE__*/_react.default.createElement(_reactNativeGestureHandler.GestureHandlerRootView, {
87
+ style: {
88
+ flex: 1
89
+ }
90
+ }, /*#__PURE__*/_react.default.createElement(_internal.InternalContext.Provider, {
91
+ value: internalContextVariables
92
+ }, /*#__PURE__*/_react.default.createElement(_portal.PortalProvider, null, children, /*#__PURE__*/_react.default.createElement(_backdrop.Backdrop, null), /*#__PURE__*/_react.default.createElement(_menu.default, null))));
93
+ };
94
+
95
+ const Provider = /*#__PURE__*/(0, _react.memo)(ProviderComponent);
96
+ var _default = Provider;
97
+ exports.default = _default;
98
+ //# sourceMappingURL=Provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Provider.tsx"],"names":["AnimatedIcon","ProviderComponent","children","theme","selectedTheme","iconComponent","safeAreaInsets","onOpen","onClose","Animated","createAnimatedComponent","state","CONTEXT_MENU_STATE","UNDETERMINED","menuProps","itemHeight","itemWidth","itemX","itemY","items","anchorPosition","menuHeight","transformValue","actionParams","value","ACTIVE","END","internalContextVariables","top","bottom","left","right","flex","Provider"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AAGA;;AAGA;;AAGA;;AAEA;;;;;;;;AATA;AAGA;AAaO,IAAIA,YAAJ;;;AAEP,MAAMC,iBAAiB,GAAG,CAAC;AACzBC,EAAAA,QADyB;AAEzBC,EAAAA,KAAK,EAAEC,aAFkB;AAGzBC,EAAAA,aAHyB;AAIzBC,EAAAA,cAJyB;AAKzBC,EAAAA,MALyB;AAMzBC,EAAAA;AANyB,CAAD,KAOG;AAC3B,MAAIH,aAAJ,EACE,uBAAAL,YAAY,GAAGS,+BAASC,uBAAT,CAAiCL,aAAjC,CAAf;AAEF,QAAMM,KAAK,GAAG,2CACZC,8BAAmBC,YADP,CAAd;AAGA,QAAMV,KAAK,GAAG,2CAAiCC,aAAa,IAAI,OAAlD,CAAd;AACA,QAAMU,SAAS,GAAG,2CAAkC;AAClDC,IAAAA,UAAU,EAAE,CADsC;AAElDC,IAAAA,SAAS,EAAE,CAFuC;AAGlDC,IAAAA,KAAK,EAAE,CAH2C;AAIlDC,IAAAA,KAAK,EAAE,CAJ2C;AAKlDC,IAAAA,KAAK,EAAE,EAL2C;AAMlDC,IAAAA,cAAc,EAAE,YANkC;AAOlDC,IAAAA,UAAU,EAAE,CAPsC;AAQlDC,IAAAA,cAAc,EAAE,CARkC;AASlDC,IAAAA,YAAY,EAAE;AAToC,GAAlC,CAAlB;AAYA,wBAAU,MAAM;AACdpB,IAAAA,KAAK,CAACqB,KAAN,GAAcpB,aAAa,IAAI,OAA/B,CADc,CAEd;AACD,GAHD,EAGG,CAACA,aAAD,CAHH;AAKA,kDACE,MAAMO,KAAK,CAACa,KADd,EAEEb,KAAK,IAAI;AACP,YAAQA,KAAR;AACE,WAAKC,8BAAmBa,MAAxB;AAAgC;AAC9B,cAAIlB,MAAJ,EACE,oCAAQA,MAAR;AACF;AACD;;AACD,WAAKK,8BAAmBc,GAAxB;AAA6B;AAC3B,cAAIlB,OAAJ,EACE,oCAAQA,OAAR;AACF;AACD;AAVH;AAYD,GAfH,EAgBE,CAACG,KAAD,CAhBF;AAmBA,QAAMgB,wBAAwB,GAAG,oBAC/B,OAAO;AACLhB,IAAAA,KADK;AAELR,IAAAA,KAFK;AAGLW,IAAAA,SAHK;AAILR,IAAAA,cAAc,EAAEA,cAAc,IAAI;AAChCsB,MAAAA,GAAG,EAAE,CAD2B;AAEhCC,MAAAA,MAAM,EAAE,CAFwB;AAGhCC,MAAAA,IAAI,EAAE,CAH0B;AAIhCC,MAAAA,KAAK,EAAE;AAJyB;AAJ7B,GAAP,CAD+B,EAY/B,CAACpB,KAAD,EAAQR,KAAR,EAAeW,SAAf,EAA0BR,cAA1B,CAZ+B,CAAjC;AAeA,sBACE,6BAAC,iDAAD;AAAwB,IAAA,KAAK,EAAE;AAAE0B,MAAAA,IAAI,EAAE;AAAR;AAA/B,kBACE,6BAAC,yBAAD,CAAiB,QAAjB;AAA0B,IAAA,KAAK,EAAEL;AAAjC,kBACE,6BAAC,sBAAD,QACGzB,QADH,eAEE,6BAAC,kBAAD,OAFF,eAGE,6BAAC,aAAD,OAHF,CADF,CADF,CADF;AAWD,CA7ED;;AA+EA,MAAM+B,QAAQ,gBAAG,iBAAKhC,iBAAL,CAAjB;eAEegC,Q","sourcesContent":["import React, { memo, useEffect, useMemo } from 'react';\nimport { PortalProvider } from '@gorhom/portal';\nimport Animated, { useSharedValue, useAnimatedReaction, runOnJS } from 'react-native-reanimated';\nimport { GestureHandlerRootView } from 'react-native-gesture-handler';\n\n// Components\nimport { Backdrop } from '../backdrop';\n\n// Utils\nimport { InternalContext } from '../../context/internal';\nimport { HoldMenuProviderProps } from './types';\nimport { StateProps, Action } from './reducer';\nimport { CONTEXT_MENU_STATE } from '../../constants';\nimport { MenuInternalProps } from '../menu/types';\nimport Menu from '../menu';\n\nexport interface Store {\n state: StateProps;\n dispatch?: React.Dispatch<Action>;\n}\n\nexport let AnimatedIcon: any;\n\nconst ProviderComponent = ({\n children,\n theme: selectedTheme,\n iconComponent,\n safeAreaInsets,\n onOpen,\n onClose,\n}: HoldMenuProviderProps) => {\n if (iconComponent)\n AnimatedIcon = Animated.createAnimatedComponent(iconComponent);\n\n const state = useSharedValue<CONTEXT_MENU_STATE>(\n CONTEXT_MENU_STATE.UNDETERMINED\n );\n const theme = useSharedValue<'light' | 'dark'>(selectedTheme || 'light');\n const menuProps = useSharedValue<MenuInternalProps>({\n itemHeight: 0,\n itemWidth: 0,\n itemX: 0,\n itemY: 0,\n items: [],\n anchorPosition: 'top-center',\n menuHeight: 0,\n transformValue: 0,\n actionParams: {},\n });\n\n useEffect(() => {\n theme.value = selectedTheme || 'light';\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedTheme]);\n\n useAnimatedReaction(\n () => state.value,\n state => {\n switch (state) {\n case CONTEXT_MENU_STATE.ACTIVE: {\n if (onOpen)\n runOnJS(onOpen)();\n break\n }\n case CONTEXT_MENU_STATE.END: {\n if (onClose)\n runOnJS(onClose)();\n break\n }\n }\n },\n [state]\n );\n\n const internalContextVariables = useMemo(\n () => ({\n state,\n theme,\n menuProps,\n safeAreaInsets: safeAreaInsets || {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n },\n }),\n [state, theme, menuProps, safeAreaInsets]\n );\n\n return (\n <GestureHandlerRootView style={{ flex: 1 }}>\n <InternalContext.Provider value={internalContextVariables}>\n <PortalProvider>\n {children}\n <Backdrop />\n <Menu />\n </PortalProvider>\n </InternalContext.Provider>\n </GestureHandlerRootView>\n );\n};\n\nconst Provider = memo(ProviderComponent);\n\nexport default Provider;\n"]}