-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
75 lines (74 loc) · 2.47 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
EventContext: function() {
return EventContext;
},
EventProvider: function() {
return EventProvider;
},
useEvent: function() {
return useEvent;
}
});
var _react = /*#__PURE__*/ _interopRequireDefault(require("react"));
var _reactNative = /*#__PURE__*/ _interopRequireDefault(require("react-native"));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
var EventContext = /*#__PURE__*/ _react.default.createContext(undefined);
function EventProvider(param) {
var children = param.children;
var onEvent = function onEvent(event) {
handlers.forEach(function(subscriber) {
return subscriber(event);
});
};
var subscribe = function subscribe(handler) {
handlers.push(handler);
return function() {
return handlers.splice(handlers.indexOf(handler), 1);
};
};
var state = _react.default.useState([]);
var handlers = state[0];
return /*#__PURE__*/ _react.default.createElement(EventContext.Provider, {
value: {
subscribe: subscribe
}
}, /*#__PURE__*/ _react.default.createElement(_reactNative.default.View, {
style: _reactNative.default.StyleSheet.absoluteFill,
onStartShouldSetResponderCapture: function(event) {
event.persist();
onEvent(event);
return false;
}
}, children));
}
function useEvent(handler, dependencies) {
var context = _react.default.useContext(EventContext);
if (!context) {
throw new Error("react-native-event: subscribe not found on context. You might be missing the EventProvider or have multiple instances of react-native-event");
}
_react.default.useEffect(function() {
return context.subscribe(handler);
}, [
context.subscribe,
handler
].concat(dependencies));
}
if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {
Object.defineProperty(exports.default, '__esModule', { value: true });
for (var key in exports) exports.default[key] = exports[key];
module.exports = exports.default;
}