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.
- package/LICENCE +21 -0
- package/README.md +38 -0
- package/lib/commonjs/components/backdrop/Backdrop.js +104 -0
- package/lib/commonjs/components/backdrop/Backdrop.js.map +1 -0
- package/lib/commonjs/components/backdrop/constants.js +14 -0
- package/lib/commonjs/components/backdrop/constants.js.map +1 -0
- package/lib/commonjs/components/backdrop/index.js +16 -0
- package/lib/commonjs/components/backdrop/index.js.map +1 -0
- package/lib/commonjs/components/backdrop/styles.js +17 -0
- package/lib/commonjs/components/backdrop/styles.js.map +1 -0
- package/lib/commonjs/components/flatList/FlatList.js +35 -0
- package/lib/commonjs/components/flatList/FlatList.js.map +1 -0
- package/lib/commonjs/components/flatList/index.js +16 -0
- package/lib/commonjs/components/flatList/index.js.map +1 -0
- package/lib/commonjs/components/holdItem/HoldItem.js +369 -0
- package/lib/commonjs/components/holdItem/HoldItem.js.map +1 -0
- package/lib/commonjs/components/holdItem/index.js +16 -0
- package/lib/commonjs/components/holdItem/index.js.map +1 -0
- package/lib/commonjs/components/holdItem/styles.js +22 -0
- package/lib/commonjs/components/holdItem/styles.js.map +1 -0
- package/lib/commonjs/components/holdItem/types.d.js +2 -0
- package/lib/commonjs/components/holdItem/types.d.js.map +1 -0
- package/lib/commonjs/components/icon/Icon.js +43 -0
- package/lib/commonjs/components/icon/Icon.js.map +1 -0
- package/lib/commonjs/components/icon/index.js +16 -0
- package/lib/commonjs/components/icon/index.js.map +1 -0
- package/lib/commonjs/components/menu/Menu.js +57 -0
- package/lib/commonjs/components/menu/Menu.js.map +1 -0
- package/lib/commonjs/components/menu/MenuItem.js +85 -0
- package/lib/commonjs/components/menu/MenuItem.js.map +1 -0
- package/lib/commonjs/components/menu/MenuItems.js +35 -0
- package/lib/commonjs/components/menu/MenuItems.js.map +1 -0
- package/lib/commonjs/components/menu/MenuList.js +121 -0
- package/lib/commonjs/components/menu/MenuList.js.map +1 -0
- package/lib/commonjs/components/menu/Separator.js +47 -0
- package/lib/commonjs/components/menu/Separator.js.map +1 -0
- package/lib/commonjs/components/menu/calculations.js +31 -0
- package/lib/commonjs/components/menu/calculations.js.map +1 -0
- package/lib/commonjs/components/menu/constants.js +21 -0
- package/lib/commonjs/components/menu/constants.js.map +1 -0
- package/lib/commonjs/components/menu/index.js +16 -0
- package/lib/commonjs/components/menu/index.js.map +1 -0
- package/lib/commonjs/components/menu/styles.js +77 -0
- package/lib/commonjs/components/menu/styles.js.map +1 -0
- package/lib/commonjs/components/menu/types.d.js +2 -0
- package/lib/commonjs/components/menu/types.d.js.map +1 -0
- package/lib/commonjs/components/provider/Provider.js +98 -0
- package/lib/commonjs/components/provider/Provider.js.map +1 -0
- package/lib/commonjs/components/provider/index.js +16 -0
- package/lib/commonjs/components/provider/index.js.map +1 -0
- package/lib/commonjs/components/provider/reducer.js +50 -0
- package/lib/commonjs/components/provider/reducer.js.map +1 -0
- package/lib/commonjs/components/provider/types.d.js +2 -0
- package/lib/commonjs/components/provider/types.d.js.map +1 -0
- package/lib/commonjs/constants.js +60 -0
- package/lib/commonjs/constants.js.map +1 -0
- package/lib/commonjs/context/index.js +14 -0
- package/lib/commonjs/context/index.js.map +1 -0
- package/lib/commonjs/context/internal.js +13 -0
- package/lib/commonjs/context/internal.js.map +1 -0
- package/lib/commonjs/hooks/index.js +24 -0
- package/lib/commonjs/hooks/index.js.map +1 -0
- package/lib/commonjs/hooks/useDeviceOrientation.js +38 -0
- package/lib/commonjs/hooks/useDeviceOrientation.js.map +1 -0
- package/lib/commonjs/hooks/useInternal.js +15 -0
- package/lib/commonjs/hooks/useInternal.js.map +1 -0
- package/lib/commonjs/index.js +40 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/styleGuide.js +39 -0
- package/lib/commonjs/styleGuide.js.map +1 -0
- package/lib/commonjs/utils/calculations.js +73 -0
- package/lib/commonjs/utils/calculations.js.map +1 -0
- package/lib/commonjs/utils/validations.js +43 -0
- package/lib/commonjs/utils/validations.js.map +1 -0
- package/lib/module/components/backdrop/Backdrop.js +83 -0
- package/lib/module/components/backdrop/Backdrop.js.map +1 -0
- package/lib/module/components/backdrop/constants.js +4 -0
- package/lib/module/components/backdrop/constants.js.map +1 -0
- package/lib/module/components/backdrop/index.js +2 -0
- package/lib/module/components/backdrop/index.js.map +1 -0
- package/lib/module/components/backdrop/styles.js +7 -0
- package/lib/module/components/backdrop/styles.js.map +1 -0
- package/lib/module/components/flatList/FlatList.js +17 -0
- package/lib/module/components/flatList/FlatList.js.map +1 -0
- package/lib/module/components/flatList/index.js +2 -0
- package/lib/module/components/flatList/index.js.map +1 -0
- package/lib/module/components/holdItem/HoldItem.js +344 -0
- package/lib/module/components/holdItem/HoldItem.js.map +1 -0
- package/lib/module/components/holdItem/index.js +2 -0
- package/lib/module/components/holdItem/index.js.map +1 -0
- package/lib/module/components/holdItem/styles.js +12 -0
- package/lib/module/components/holdItem/styles.js.map +1 -0
- package/lib/module/components/holdItem/types.d.js +2 -0
- package/lib/module/components/holdItem/types.d.js.map +1 -0
- package/lib/module/components/icon/Icon.js +26 -0
- package/lib/module/components/icon/Icon.js.map +1 -0
- package/lib/module/components/icon/index.js +2 -0
- package/lib/module/components/icon/index.js.map +1 -0
- package/lib/module/components/menu/Menu.js +37 -0
- package/lib/module/components/menu/Menu.js.map +1 -0
- package/lib/module/components/menu/MenuItem.js +59 -0
- package/lib/module/components/menu/MenuItem.js.map +1 -0
- package/lib/module/components/menu/MenuItems.js +19 -0
- package/lib/module/components/menu/MenuItems.js.map +1 -0
- package/lib/module/components/menu/MenuList.js +93 -0
- package/lib/module/components/menu/MenuList.js.map +1 -0
- package/lib/module/components/menu/Separator.js +29 -0
- package/lib/module/components/menu/Separator.js.map +1 -0
- package/lib/module/components/menu/calculations.js +17 -0
- package/lib/module/components/menu/calculations.js.map +1 -0
- package/lib/module/components/menu/constants.js +8 -0
- package/lib/module/components/menu/constants.js.map +1 -0
- package/lib/module/components/menu/index.js +2 -0
- package/lib/module/components/menu/index.js.map +1 -0
- package/lib/module/components/menu/styles.js +63 -0
- package/lib/module/components/menu/styles.js.map +1 -0
- package/lib/module/components/menu/types.d.js +2 -0
- package/lib/module/components/menu/types.d.js.map +1 -0
- package/lib/module/components/provider/Provider.js +75 -0
- package/lib/module/components/provider/Provider.js.map +1 -0
- package/lib/module/components/provider/index.js +2 -0
- package/lib/module/components/provider/index.js.map +1 -0
- package/lib/module/components/provider/reducer.js +38 -0
- package/lib/module/components/provider/reducer.js.map +1 -0
- package/lib/module/components/provider/types.d.js +2 -0
- package/lib/module/components/provider/types.d.js.map +1 -0
- package/lib/module/constants.js +37 -0
- package/lib/module/constants.js.map +1 -0
- package/lib/module/context/index.js +2 -0
- package/lib/module/context/index.js.map +1 -0
- package/lib/module/context/internal.js +4 -0
- package/lib/module/context/internal.js.map +1 -0
- package/lib/module/hooks/index.js +3 -0
- package/lib/module/hooks/index.js.map +1 -0
- package/lib/module/hooks/useDeviceOrientation.js +27 -0
- package/lib/module/hooks/useDeviceOrientation.js.map +1 -0
- package/lib/module/hooks/useInternal.js +4 -0
- package/lib/module/hooks/useInternal.js.map +1 -0
- package/lib/module/index.js +5 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/styleGuide.js +30 -0
- package/lib/module/styleGuide.js.map +1 -0
- package/lib/module/utils/calculations.js +51 -0
- package/lib/module/utils/calculations.js.map +1 -0
- package/lib/module/utils/validations.js +38 -0
- package/lib/module/utils/validations.js.map +1 -0
- package/lib/typescript/components/backdrop/Backdrop.d.ts +3 -0
- package/lib/typescript/components/backdrop/constants.d.ts +2 -0
- package/lib/typescript/components/backdrop/index.d.ts +1 -0
- package/lib/typescript/components/backdrop/styles.d.ts +10 -0
- package/lib/typescript/components/flatList/FlatList.d.ts +5 -0
- package/lib/typescript/components/flatList/index.d.ts +2 -0
- package/lib/typescript/components/holdItem/HoldItem.d.ts +4 -0
- package/lib/typescript/components/holdItem/index.d.ts +2 -0
- package/lib/typescript/components/holdItem/styles.d.ts +15 -0
- package/lib/typescript/components/holdItem/types.d.ts +131 -0
- package/lib/typescript/components/icon/Icon.d.ts +7 -0
- package/lib/typescript/components/icon/index.d.ts +1 -0
- package/lib/typescript/components/menu/Menu.d.ts +3 -0
- package/lib/typescript/components/menu/MenuItem.d.ts +8 -0
- package/lib/typescript/components/menu/MenuItems.d.ts +6 -0
- package/lib/typescript/components/menu/MenuList.d.ts +3 -0
- package/lib/typescript/components/menu/Separator.d.ts +3 -0
- package/lib/typescript/components/menu/calculations.d.ts +4 -0
- package/lib/typescript/components/menu/constants.d.ts +7 -0
- package/lib/typescript/components/menu/index.d.ts +1 -0
- package/lib/typescript/components/menu/styles.d.ts +59 -0
- package/lib/typescript/components/menu/types.d.ts +28 -0
- package/lib/typescript/components/provider/Provider.d.ts +10 -0
- package/lib/typescript/components/provider/index.d.ts +2 -0
- package/lib/typescript/components/provider/reducer.d.ts +20 -0
- package/lib/typescript/components/provider/types.d.ts +33 -0
- package/lib/typescript/constants.d.ts +29 -0
- package/lib/typescript/context/index.d.ts +1 -0
- package/lib/typescript/context/internal.d.ts +16 -0
- package/lib/typescript/hooks/index.d.ts +2 -0
- package/lib/typescript/hooks/useDeviceOrientation.d.ts +3 -0
- package/lib/typescript/hooks/useInternal.d.ts +1 -0
- package/lib/typescript/index.d.ts +4 -0
- package/lib/typescript/styleGuide.d.ts +28 -0
- package/lib/typescript/utils/calculations.d.ts +14 -0
- package/lib/typescript/utils/validations.d.ts +3 -0
- package/package.json +106 -0
- package/src/components/backdrop/Backdrop.tsx +138 -0
- package/src/components/backdrop/constants.ts +8 -0
- package/src/components/backdrop/index.ts +1 -0
- package/src/components/backdrop/styles.ts +8 -0
- package/src/components/flatList/FlatList.tsx +23 -0
- package/src/components/flatList/index.ts +2 -0
- package/src/components/holdItem/HoldItem.tsx +449 -0
- package/src/components/holdItem/index.ts +2 -0
- package/src/components/holdItem/styles.ts +11 -0
- package/src/components/holdItem/types.d.ts +131 -0
- package/src/components/icon/Icon.tsx +33 -0
- package/src/components/icon/index.ts +1 -0
- package/src/components/menu/Menu.tsx +57 -0
- package/src/components/menu/MenuItem.tsx +79 -0
- package/src/components/menu/MenuItems.tsx +26 -0
- package/src/components/menu/MenuList.tsx +151 -0
- package/src/components/menu/Separator.tsx +28 -0
- package/src/components/menu/calculations.ts +49 -0
- package/src/components/menu/constants.ts +9 -0
- package/src/components/menu/index.ts +1 -0
- package/src/components/menu/styles.ts +64 -0
- package/src/components/menu/types.d.ts +28 -0
- package/src/components/provider/Provider.tsx +105 -0
- package/src/components/provider/index.ts +2 -0
- package/src/components/provider/reducer.ts +48 -0
- package/src/components/provider/types.d.ts +33 -0
- package/src/constants.ts +54 -0
- package/src/context/index.ts +1 -0
- package/src/context/internal.ts +19 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useDeviceOrientation.ts +28 -0
- package/src/hooks/useInternal.ts +4 -0
- package/src/index.ts +4 -0
- package/src/styleGuide.ts +31 -0
- package/src/utils/calculations.ts +110 -0
- 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 @@
|
|
|
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"]}
|