@kaspernj/api-maker 1.0.2039 → 1.0.2041
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/build/environment.js +12 -0
- package/build/rest-props-validator.js +8 -0
- package/build/use-event-emitter.js +6 -3
- package/build/use-event-listener.js +3 -6
- package/package.json +3 -3
- package/src/environment.js +13 -0
- package/src/rest-props-validator.js +9 -0
- package/src/use-event-emitter.js +5 -2
- package/src/use-event-listener.js +2 -4
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
let isBrowser = false;
|
|
2
|
+
let isNative = false;
|
|
3
|
+
let isServer = false;
|
|
4
|
+
if (navigator === undefined && navigator.product == "ReactNative") {
|
|
5
|
+
isNative = true;
|
|
6
|
+
} else if (window === undefined && window.document?.createElement) {
|
|
7
|
+
isBrowser = true;
|
|
8
|
+
} else {
|
|
9
|
+
isServer = true;
|
|
10
|
+
}
|
|
11
|
+
export { isBrowser, isNative, isServer };
|
|
12
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc0Jyb3dzZXIiLCJpc05hdGl2ZSIsImlzU2VydmVyIiwibmF2aWdhdG9yIiwidW5kZWZpbmVkIiwicHJvZHVjdCIsIndpbmRvdyIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9lbnZpcm9ubWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgaXNCcm93c2VyID0gZmFsc2VcbmxldCBpc05hdGl2ZSA9IGZhbHNlXG5sZXQgaXNTZXJ2ZXIgPSBmYWxzZVxuXG5pZiAobmF2aWdhdG9yID09PSB1bmRlZmluZWQgJiYgbmF2aWdhdG9yLnByb2R1Y3QgPT0gXCJSZWFjdE5hdGl2ZVwiKSB7XG4gIGlzTmF0aXZlID0gdHJ1ZVxufSBlbHNlIGlmICh3aW5kb3cgPT09IHVuZGVmaW5lZCAmJiB3aW5kb3cuZG9jdW1lbnQ/LmNyZWF0ZUVsZW1lbnQpIHtcbiAgaXNCcm93c2VyID0gdHJ1ZVxufSBlbHNlIHtcbiAgaXNTZXJ2ZXIgPSB0cnVlXG59XG5cbmV4cG9ydCB7aXNCcm93c2VyLCBpc05hdGl2ZSwgaXNTZXJ2ZXJ9XG4iXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLFNBQVMsR0FBRyxLQUFLO0FBQ3JCLElBQUlDLFFBQVEsR0FBRyxLQUFLO0FBQ3BCLElBQUlDLFFBQVEsR0FBRyxLQUFLO0FBRXBCLElBQUlDLFNBQVMsS0FBS0MsU0FBUyxJQUFJRCxTQUFTLENBQUNFLE9BQU8sSUFBSSxhQUFhLEVBQUU7RUFDakVKLFFBQVEsR0FBRyxJQUFJO0FBQ2pCLENBQUMsTUFBTSxJQUFJSyxNQUFNLEtBQUtGLFNBQVMsSUFBSUUsTUFBTSxDQUFDQyxRQUFRLEVBQUVDLGFBQWEsRUFBRTtFQUNqRVIsU0FBUyxHQUFHLElBQUk7QUFDbEIsQ0FBQyxNQUFNO0VBQ0xFLFFBQVEsR0FBRyxJQUFJO0FBQ2pCO0FBRUEsU0FBUUYsU0FBUyxFQUFFQyxRQUFRLEVBQUVDLFFBQVEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const restPropsValidator = restProps => {
|
|
2
|
+
const restPropsKeys = Object.keys(restProps);
|
|
3
|
+
if (restPropsKeys.length > 0) {
|
|
4
|
+
throw new Error(`Invalid props: ${restPropsKeys.join(", ")}`);
|
|
5
|
+
}
|
|
6
|
+
};
|
|
7
|
+
export default restPropsValidator;
|
|
8
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXN0UHJvcHNWYWxpZGF0b3IiLCJyZXN0UHJvcHMiLCJyZXN0UHJvcHNLZXlzIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsIkVycm9yIiwiam9pbiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXN0LXByb3BzLXZhbGlkYXRvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCByZXN0UHJvcHNWYWxpZGF0b3IgPSAocmVzdFByb3BzKSA9PiB7XG4gIGNvbnN0IHJlc3RQcm9wc0tleXMgPSBPYmplY3Qua2V5cyhyZXN0UHJvcHMpXG5cbiAgaWYgKHJlc3RQcm9wc0tleXMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwcm9wczogJHtyZXN0UHJvcHNLZXlzLmpvaW4oXCIsIFwiKX1gKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlc3RQcm9wc1ZhbGlkYXRvclxuIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxrQkFBa0IsR0FBSUMsU0FBUyxJQUFLO0VBQ3hDLE1BQU1DLGFBQWEsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUNILFNBQVMsQ0FBQztFQUU1QyxJQUFJQyxhQUFhLENBQUNHLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDNUIsTUFBTSxJQUFJQyxLQUFLLENBQUMsa0JBQWtCSixhQUFhLENBQUNLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0VBQy9EO0FBQ0YsQ0FBQztBQUVELGVBQWVQLGtCQUFrQiIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { useLayoutEffect, useMemo } from "react";
|
|
1
|
+
import { useEffect, useLayoutEffect, useMemo } from "react";
|
|
2
|
+
import { isServer } from "./environment";
|
|
2
3
|
const ApiMakerUseEventEmitter = (events, event, onCalled) => {
|
|
4
|
+
const useWorkingEffect = isServer ? useEffect : useLayoutEffect;
|
|
5
|
+
|
|
3
6
|
// useMemo to instantly connect
|
|
4
7
|
useMemo(() => {
|
|
5
8
|
if (events) {
|
|
@@ -8,7 +11,7 @@ const ApiMakerUseEventEmitter = (events, event, onCalled) => {
|
|
|
8
11
|
}, [events, event, onCalled]);
|
|
9
12
|
|
|
10
13
|
// useLayoutEffect to disconnect when unmounted or changed
|
|
11
|
-
|
|
14
|
+
useWorkingEffect(() => {
|
|
12
15
|
if (events) {
|
|
13
16
|
return () => {
|
|
14
17
|
events.removeListener(event, onCalled);
|
|
@@ -17,4 +20,4 @@ const ApiMakerUseEventEmitter = (events, event, onCalled) => {
|
|
|
17
20
|
}, [events, event, onCalled]);
|
|
18
21
|
};
|
|
19
22
|
export default ApiMakerUseEventEmitter;
|
|
20
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VNZW1vIiwiaXNTZXJ2ZXIiLCJBcGlNYWtlclVzZUV2ZW50RW1pdHRlciIsImV2ZW50cyIsImV2ZW50Iiwib25DYWxsZWQiLCJ1c2VXb3JraW5nRWZmZWN0IiwiYWRkTGlzdGVuZXIiLCJyZW1vdmVMaXN0ZW5lciJdLCJzb3VyY2VzIjpbIi4uL3NyYy91c2UtZXZlbnQtZW1pdHRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtpc1NlcnZlcn0gZnJvbSBcIi4vZW52aXJvbm1lbnRcIlxuXG5jb25zdCBBcGlNYWtlclVzZUV2ZW50RW1pdHRlciA9IChldmVudHMsIGV2ZW50LCBvbkNhbGxlZCkgPT4ge1xuICBjb25zdCB1c2VXb3JraW5nRWZmZWN0ID0gaXNTZXJ2ZXIgPyB1c2VFZmZlY3QgOiB1c2VMYXlvdXRFZmZlY3RcblxuICAvLyB1c2VNZW1vIHRvIGluc3RhbnRseSBjb25uZWN0XG4gIHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChldmVudHMpIHtcbiAgICAgIGV2ZW50cy5hZGRMaXN0ZW5lcihldmVudCwgb25DYWxsZWQpXG4gICAgfVxuICB9LCBbZXZlbnRzLCBldmVudCwgb25DYWxsZWRdKVxuXG4gIC8vIHVzZUxheW91dEVmZmVjdCB0byBkaXNjb25uZWN0IHdoZW4gdW5tb3VudGVkIG9yIGNoYW5nZWRcbiAgdXNlV29ya2luZ0VmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGV2ZW50cykge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZXZlbnRzLnJlbW92ZUxpc3RlbmVyKGV2ZW50LCBvbkNhbGxlZClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtldmVudHMsIGV2ZW50LCBvbkNhbGxlZF0pXG59XG5cbmV4cG9ydCBkZWZhdWx0IEFwaU1ha2VyVXNlRXZlbnRFbWl0dGVyXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLFNBQVMsRUFBRUMsZUFBZSxFQUFFQyxPQUFPLFFBQU8sT0FBTztBQUN6RCxTQUFRQyxRQUFRLFFBQU8sZUFBZTtBQUV0QyxNQUFNQyx1QkFBdUIsR0FBR0EsQ0FBQ0MsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLFFBQVEsS0FBSztFQUMzRCxNQUFNQyxnQkFBZ0IsR0FBR0wsUUFBUSxHQUFHSCxTQUFTLEdBQUdDLGVBQWU7O0VBRS9EO0VBQ0FDLE9BQU8sQ0FBQyxNQUFNO0lBQ1osSUFBSUcsTUFBTSxFQUFFO01BQ1ZBLE1BQU0sQ0FBQ0ksV0FBVyxDQUFDSCxLQUFLLEVBQUVDLFFBQVEsQ0FBQztJQUNyQztFQUNGLENBQUMsRUFBRSxDQUFDRixNQUFNLEVBQUVDLEtBQUssRUFBRUMsUUFBUSxDQUFDLENBQUM7O0VBRTdCO0VBQ0FDLGdCQUFnQixDQUFDLE1BQU07SUFDckIsSUFBSUgsTUFBTSxFQUFFO01BQ1YsT0FBTyxNQUFNO1FBQ1hBLE1BQU0sQ0FBQ0ssY0FBYyxDQUFDSixLQUFLLEVBQUVDLFFBQVEsQ0FBQztNQUN4QyxDQUFDO0lBQ0g7RUFDRixDQUFDLEVBQUUsQ0FBQ0YsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLFFBQVEsQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRCxlQUFlSCx1QkFBdUIiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { useCallback, useEffect, useLayoutEffect } from "react";
|
|
2
|
-
import
|
|
2
|
+
import { isServer } from "./environment";
|
|
3
3
|
const ApiMakerUseEventListener = (target, event, onCalled) => {
|
|
4
|
-
const {
|
|
5
|
-
isServer
|
|
6
|
-
} = useSSR();
|
|
7
4
|
const useWorkingEffect = isServer ? useEffect : useLayoutEffect;
|
|
8
5
|
const onCalledCallback = useCallback((...args) => {
|
|
9
6
|
onCalled.apply(null, args);
|
|
@@ -12,11 +9,11 @@ const ApiMakerUseEventListener = (target, event, onCalled) => {
|
|
|
12
9
|
if (target) {
|
|
13
10
|
const eventListener = target.addEventListener(event, onCalledCallback);
|
|
14
11
|
return () => {
|
|
15
|
-
if (eventListener) eventListener.remove(); // This is how its done in Expo + Jest.
|
|
12
|
+
if (eventListener?.remove) eventListener.remove(); // This is how its done in Expo + Jest.
|
|
16
13
|
if (target.removeEventListener) target.removeEventListener(event, onCalledCallback); // This is the "old" way in browsers.
|
|
17
14
|
};
|
|
18
15
|
}
|
|
19
16
|
}, [target, event, onCalled]);
|
|
20
17
|
};
|
|
21
18
|
export default ApiMakerUseEventListener;
|
|
22
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsImlzU2VydmVyIiwiQXBpTWFrZXJVc2VFdmVudExpc3RlbmVyIiwidGFyZ2V0IiwiZXZlbnQiLCJvbkNhbGxlZCIsInVzZVdvcmtpbmdFZmZlY3QiLCJvbkNhbGxlZENhbGxiYWNrIiwiYXJncyIsImFwcGx5IiwiZXZlbnRMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sInNvdXJjZXMiOlsiLi4vc3JjL3VzZS1ldmVudC1saXN0ZW5lci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7aXNTZXJ2ZXJ9IGZyb20gXCIuL2Vudmlyb25tZW50XCJcblxuY29uc3QgQXBpTWFrZXJVc2VFdmVudExpc3RlbmVyID0gKHRhcmdldCwgZXZlbnQsIG9uQ2FsbGVkKSA9PiB7XG4gIGNvbnN0IHVzZVdvcmtpbmdFZmZlY3QgPSBpc1NlcnZlciA/IHVzZUVmZmVjdCA6IHVzZUxheW91dEVmZmVjdFxuICBjb25zdCBvbkNhbGxlZENhbGxiYWNrID0gdXNlQ2FsbGJhY2soKC4uLmFyZ3MpID0+IHtcbiAgICBvbkNhbGxlZC5hcHBseShudWxsLCBhcmdzKVxuICB9LCBbdGFyZ2V0LCBldmVudCwgb25DYWxsZWRdKVxuXG4gIHVzZVdvcmtpbmdFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0YXJnZXQpIHtcbiAgICAgIGNvbnN0IGV2ZW50TGlzdGVuZXIgPSB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgb25DYWxsZWRDYWxsYmFjaylcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50TGlzdGVuZXI/LnJlbW92ZSkgZXZlbnRMaXN0ZW5lci5yZW1vdmUoKSAvLyBUaGlzIGlzIGhvdyBpdHMgZG9uZSBpbiBFeHBvICsgSmVzdC5cbiAgICAgICAgaWYgKHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKSB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgb25DYWxsZWRDYWxsYmFjaykgLy8gVGhpcyBpcyB0aGUgXCJvbGRcIiB3YXkgaW4gYnJvd3NlcnMuXG4gICAgICB9XG4gICAgfVxuICB9LCBbdGFyZ2V0LCBldmVudCwgb25DYWxsZWRdKVxufVxuXG5leHBvcnQgZGVmYXVsdCBBcGlNYWtlclVzZUV2ZW50TGlzdGVuZXJcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLGVBQWUsUUFBTyxPQUFPO0FBQzdELFNBQVFDLFFBQVEsUUFBTyxlQUFlO0FBRXRDLE1BQU1DLHdCQUF3QixHQUFHQSxDQUFDQyxNQUFNLEVBQUVDLEtBQUssRUFBRUMsUUFBUSxLQUFLO0VBQzVELE1BQU1DLGdCQUFnQixHQUFHTCxRQUFRLEdBQUdGLFNBQVMsR0FBR0MsZUFBZTtFQUMvRCxNQUFNTyxnQkFBZ0IsR0FBR1QsV0FBVyxDQUFDLENBQUMsR0FBR1UsSUFBSSxLQUFLO0lBQ2hESCxRQUFRLENBQUNJLEtBQUssQ0FBQyxJQUFJLEVBQUVELElBQUksQ0FBQztFQUM1QixDQUFDLEVBQUUsQ0FBQ0wsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLFFBQVEsQ0FBQyxDQUFDO0VBRTdCQyxnQkFBZ0IsQ0FBQyxNQUFNO0lBQ3JCLElBQUlILE1BQU0sRUFBRTtNQUNWLE1BQU1PLGFBQWEsR0FBR1AsTUFBTSxDQUFDUSxnQkFBZ0IsQ0FBQ1AsS0FBSyxFQUFFRyxnQkFBZ0IsQ0FBQztNQUV0RSxPQUFPLE1BQU07UUFDWCxJQUFJRyxhQUFhLEVBQUVFLE1BQU0sRUFBRUYsYUFBYSxDQUFDRSxNQUFNLENBQUMsQ0FBQyxFQUFDO1FBQ2xELElBQUlULE1BQU0sQ0FBQ1UsbUJBQW1CLEVBQUVWLE1BQU0sQ0FBQ1UsbUJBQW1CLENBQUNULEtBQUssRUFBRUcsZ0JBQWdCLENBQUMsRUFBQztNQUN0RixDQUFDO0lBQ0g7RUFDRixDQUFDLEVBQUUsQ0FBQ0osTUFBTSxFQUFFQyxLQUFLLEVBQUVDLFFBQVEsQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRCxlQUFlSCx3QkFBd0IiLCJpZ25vcmVMaXN0IjpbXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kaspernj/api-maker",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2041",
|
|
4
4
|
"description": "My new module",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -57,7 +57,6 @@
|
|
|
57
57
|
"strftime": ">= 0.10.0",
|
|
58
58
|
"uniqunize": "^1.0.1",
|
|
59
59
|
"url-parse": "^1.5.10",
|
|
60
|
-
"use-ssr": "^1.0.25",
|
|
61
60
|
"wake-event": ">= 0.0.1"
|
|
62
61
|
},
|
|
63
62
|
"devDependencies": {
|
|
@@ -79,5 +78,6 @@
|
|
|
79
78
|
"react": "*",
|
|
80
79
|
"react-native": "*",
|
|
81
80
|
"react-native-vector-icons": "*"
|
|
82
|
-
}
|
|
81
|
+
},
|
|
82
|
+
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
|
|
83
83
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
let isBrowser = false
|
|
2
|
+
let isNative = false
|
|
3
|
+
let isServer = false
|
|
4
|
+
|
|
5
|
+
if (navigator === undefined && navigator.product == "ReactNative") {
|
|
6
|
+
isNative = true
|
|
7
|
+
} else if (window === undefined && window.document?.createElement) {
|
|
8
|
+
isBrowser = true
|
|
9
|
+
} else {
|
|
10
|
+
isServer = true
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export {isBrowser, isNative, isServer}
|
package/src/use-event-emitter.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import {useLayoutEffect, useMemo} from "react"
|
|
1
|
+
import {useEffect, useLayoutEffect, useMemo} from "react"
|
|
2
|
+
import {isServer} from "./environment"
|
|
2
3
|
|
|
3
4
|
const ApiMakerUseEventEmitter = (events, event, onCalled) => {
|
|
5
|
+
const useWorkingEffect = isServer ? useEffect : useLayoutEffect
|
|
6
|
+
|
|
4
7
|
// useMemo to instantly connect
|
|
5
8
|
useMemo(() => {
|
|
6
9
|
if (events) {
|
|
@@ -9,7 +12,7 @@ const ApiMakerUseEventEmitter = (events, event, onCalled) => {
|
|
|
9
12
|
}, [events, event, onCalled])
|
|
10
13
|
|
|
11
14
|
// useLayoutEffect to disconnect when unmounted or changed
|
|
12
|
-
|
|
15
|
+
useWorkingEffect(() => {
|
|
13
16
|
if (events) {
|
|
14
17
|
return () => {
|
|
15
18
|
events.removeListener(event, onCalled)
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import {useCallback, useEffect, useLayoutEffect} from "react"
|
|
2
|
-
import
|
|
2
|
+
import {isServer} from "./environment"
|
|
3
3
|
|
|
4
4
|
const ApiMakerUseEventListener = (target, event, onCalled) => {
|
|
5
|
-
const {isServer} = useSSR()
|
|
6
5
|
const useWorkingEffect = isServer ? useEffect : useLayoutEffect
|
|
7
|
-
|
|
8
6
|
const onCalledCallback = useCallback((...args) => {
|
|
9
7
|
onCalled.apply(null, args)
|
|
10
8
|
}, [target, event, onCalled])
|
|
@@ -14,7 +12,7 @@ const ApiMakerUseEventListener = (target, event, onCalled) => {
|
|
|
14
12
|
const eventListener = target.addEventListener(event, onCalledCallback)
|
|
15
13
|
|
|
16
14
|
return () => {
|
|
17
|
-
if (eventListener) eventListener.remove() // This is how its done in Expo + Jest.
|
|
15
|
+
if (eventListener?.remove) eventListener.remove() // This is how its done in Expo + Jest.
|
|
18
16
|
if (target.removeEventListener) target.removeEventListener(event, onCalledCallback) // This is the "old" way in browsers.
|
|
19
17
|
}
|
|
20
18
|
}
|