@kaspernj/api-maker 1.0.336 → 1.0.338

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/package.json CHANGED
@@ -16,7 +16,7 @@
16
16
  ]
17
17
  },
18
18
  "name": "@kaspernj/api-maker",
19
- "version": "1.0.336",
19
+ "version": "1.0.338",
20
20
  "type": "module",
21
21
  "description": "",
22
22
  "main": "index.js",
@@ -1,36 +1,25 @@
1
1
  import PropTypes from "prop-types"
2
2
  import propTypesExact from "prop-types-exact"
3
- import React from "react"
3
+ import {memo} from "react"
4
+ import useEventListener from "./use-event-listener.mjs"
4
5
 
5
- export default class ApiMakerEventListener extends React.PureComponent {
6
- static callEvent (target, eventName, args = []) {
7
- let event = document.createEvent("Event")
8
- event.initEvent(eventName, false, true)
9
- target.dispatchEvent(event, args)
10
- }
11
-
12
- static propTypes = propTypesExact({
13
- event: PropTypes.string.isRequired,
14
- onCalled: PropTypes.func.isRequired,
15
- target: PropTypes.object.isRequired
16
- })
17
-
18
- constructor (props) {
19
- super(props)
20
- this.onCalled = this.onCalled.bind(this)
21
- }
6
+ const callEvent = (target, eventName, args = []) => {
7
+ let event = document.createEvent("Event")
8
+ event.initEvent(eventName, false, true)
9
+ target.dispatchEvent(event, args)
10
+ }
22
11
 
23
- componentDidMount () {
24
- this.props.target.addEventListener(this.props.event, this.onCalled)
25
- }
12
+ const ApiMakerEventListener = ({event, onCalled, target}) => {
13
+ useEventListener(target, event, onCalled)
26
14
 
27
- componentWillUnmount () {
28
- this.props.target.removeEventListener(this.props.event, this.onCalled)
29
- }
15
+ return null
16
+ }
30
17
 
31
- onCalled (...args) {
32
- this.props.onCalled.apply(null, args)
33
- }
18
+ ApiMakerEventListener.propTypes = propTypesExact({
19
+ event: PropTypes.string.isRequired,
20
+ onCalled: PropTypes.func.isRequired,
21
+ target: PropTypes.object.isRequired
22
+ })
34
23
 
35
- render = () => null
36
- }
24
+ export {callEvent}
25
+ export default memo(ApiMakerEventListener)
@@ -32,8 +32,8 @@ const useCurrentUser = (args) => {
32
32
  const current = digg(result, "current")
33
33
 
34
34
  if (!(scopeName in s.setStates)) throw new Error(`'${scopeName}' not found in setStates`)
35
+ if (current) Devise.updateSession(current)
35
36
 
36
- Devise.updateSession(current)
37
37
  s.setStates[scopeName](current)
38
38
 
39
39
  if (s.props.onCurrentUserLoaded) setTimeout(() => s.props.onCurrentUserLoaded(current), 0)
@@ -1,5 +1,3 @@
1
- import EventEmitter from "events"
2
- import PropTypes from "prop-types"
3
1
  import {useCallback, useEffect} from "react"
4
2
 
5
3
  const ApiMakerUseEventEmitter = (events, event, onCalled) => {
@@ -16,10 +14,4 @@ const ApiMakerUseEventEmitter = (events, event, onCalled) => {
16
14
  }, [events, event, onCalled])
17
15
  }
18
16
 
19
- ApiMakerUseEventEmitter.propTypes = {
20
- event: PropTypes.string.isRequired,
21
- events: PropTypes.instanceOf(EventEmitter).isRequired,
22
- onCalled: PropTypes.func.isRequired
23
- }
24
-
25
17
  export default ApiMakerUseEventEmitter
@@ -0,0 +1,17 @@
1
+ import {useCallback, useEffect} from "react"
2
+
3
+ const ApiMakerUseEventListener = (target, event, onCalled) => {
4
+ const onCalledCallback = useCallback((...args) => {
5
+ onCalled.apply(null, args)
6
+ }, [target, event, onCalled])
7
+
8
+ useEffect(() => {
9
+ target.addEventListener(event, onCalledCallback)
10
+
11
+ return () => {
12
+ target.removeEventListener(event, onCalledCallback)
13
+ }
14
+ }, [target, event, onCalled])
15
+ }
16
+
17
+ export default ApiMakerUseEventListener