@kaspernj/api-maker 1.0.2105 → 1.0.2106

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.
@@ -1,16 +1,16 @@
1
1
  export default apiMakerUseDestroyedEvent;
2
2
  /**
3
- * @param {object} model
3
+ * @param {object|object[]} model
4
4
  * @param {Function} onDestroyed
5
- * @param {object} props
6
- * @param {boolean} props.active
7
- * @param {number} props.debounce
8
- * @param {Function} props.onConnected
5
+ * @param {object} [props]
6
+ * @param {boolean} [props.active]
7
+ * @param {number} [props.debounce]
8
+ * @param {Function} [props.onConnected]
9
9
  * @returns {void}
10
10
  */
11
- declare function apiMakerUseDestroyedEvent(model: object, onDestroyed: Function, props: {
12
- active: boolean;
13
- debounce: number;
14
- onConnected: Function;
11
+ declare function apiMakerUseDestroyedEvent(model: object | object[], onDestroyed: Function, props?: {
12
+ active?: boolean;
13
+ debounce?: number;
14
+ onConnected?: Function;
15
15
  }): void;
16
16
  //# sourceMappingURL=use-destroyed-event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-destroyed-event.d.ts","sourceRoot":"/src/","sources":["use-destroyed-event.js"],"names":[],"mappings":";AAMA;;;;;;;;GAQG;AACH,kDARW,MAAM,gCAGd;IAAuB,MAAM,EAArB,OAAO;IACO,QAAQ,EAAtB,MAAM;IACU,WAAW;CACnC,GAAU,IAAI,CAsDhB"}
1
+ {"version":3,"file":"use-destroyed-event.d.ts","sourceRoot":"/src/","sources":["use-destroyed-event.js"],"names":[],"mappings":";AA0CA;;;;;;;;GAQG;AACH,kDARW,MAAM,GAAC,MAAM,EAAE,iCAGvB;IAAwB,MAAM,GAAtB,OAAO;IACQ,QAAQ,GAAvB,MAAM;IACW,WAAW;CACpC,GAAU,IAAI,CA0EhB"}
@@ -1,19 +1,51 @@
1
1
  /* eslint-disable sort-imports */
2
- import { useCallback, useLayoutEffect, useMemo } from "react";
2
+ import { useCallback, useLayoutEffect, useMemo, useRef } from "react";
3
3
  import debounceFunction from "debounce";
4
4
  import ModelEvents from "./model-events.js";
5
5
  import useShape from "set-state-compare/build/use-shape.js";
6
6
  /**
7
- * @param {object} model
7
+ * @param {object|object[]|undefined|null} modelOrModels
8
+ * @returns {object[]}
9
+ */
10
+ const modelsFromInput = (modelOrModels) => {
11
+ if (!modelOrModels) {
12
+ return [];
13
+ }
14
+ else if (Array.isArray(modelOrModels)) {
15
+ return modelOrModels.filter(Boolean);
16
+ }
17
+ else {
18
+ return [modelOrModels];
19
+ }
20
+ };
21
+ /**
22
+ * @param {object|object[]|undefined|null} modelOrModels
23
+ * @returns {string}
24
+ */
25
+ const modelsDependencyKey = (modelOrModels) => JSON.stringify(modelsFromInput(modelOrModels).map((model) => model.id()));
26
+ /**
27
+ * @param {object|object[]|undefined|null} modelOrModels
28
+ * @returns {Record<string, object>}
29
+ */
30
+ const modelsByIdFromInput = (modelOrModels) => {
31
+ const modelsById = {};
32
+ modelsFromInput(modelOrModels).forEach((model) => {
33
+ modelsById[model.id()] = model;
34
+ });
35
+ return modelsById;
36
+ };
37
+ /**
38
+ * @param {object|object[]} model
8
39
  * @param {Function} onDestroyed
9
- * @param {object} props
10
- * @param {boolean} props.active
11
- * @param {number} props.debounce
12
- * @param {Function} props.onConnected
40
+ * @param {object} [props]
41
+ * @param {boolean} [props.active]
42
+ * @param {number} [props.debounce]
43
+ * @param {Function} [props.onConnected]
13
44
  * @returns {void}
14
45
  */
15
46
  const apiMakerUseDestroyedEvent = (model, onDestroyed, props) => {
16
47
  const { active = true, debounce, onConnected, ...restProps } = props || {};
48
+ const connectionsRef = useRef({});
17
49
  if (Object.keys(restProps).length > 0) {
18
50
  throw new Error(`Unknown props given to useDestroyedEvent: ${Object.keys(restProps).join(", ")}`);
19
51
  }
@@ -39,22 +71,37 @@ const apiMakerUseDestroyedEvent = (model, onDestroyed, props) => {
39
71
  }
40
72
  }, []);
41
73
  useLayoutEffect(() => {
42
- let connectDestroyed, onConnectedListener;
43
- if (model) {
44
- connectDestroyed = ModelEvents.connectDestroyed(model, onDestroyedCallback);
45
- if (onConnected) {
46
- onConnectedListener = connectDestroyed.events.addListener("connected", onConnected);
74
+ const currentConnections = connectionsRef.current;
75
+ const nextModelsById = modelsByIdFromInput(model);
76
+ Object.keys(currentConnections).forEach((modelId) => {
77
+ if (!(modelId in nextModelsById)) {
78
+ if (onConnected) {
79
+ currentConnections[modelId].events.removeListener("connected", onConnected);
80
+ }
81
+ currentConnections[modelId].unsubscribe();
82
+ delete currentConnections[modelId];
47
83
  }
48
- }
49
- return () => {
50
- if (onConnectedListener) {
51
- connectDestroyed.events.removeListener("connected", onConnected);
84
+ });
85
+ Object.keys(nextModelsById).forEach((modelId) => {
86
+ if (modelId in currentConnections) {
87
+ return;
52
88
  }
53
- if (connectDestroyed) {
54
- connectDestroyed.unsubscribe();
89
+ const destroyedConnection = ModelEvents.connectDestroyed(nextModelsById[modelId], onDestroyedCallback);
90
+ currentConnections[modelId] = destroyedConnection;
91
+ if (onConnected) {
92
+ destroyedConnection.events.addListener("connected", onConnected);
93
+ }
94
+ });
95
+ }, [modelsDependencyKey(model)]);
96
+ useLayoutEffect(() => () => {
97
+ Object.values(connectionsRef.current).forEach((destroyedConnection) => {
98
+ if (onConnected) {
99
+ destroyedConnection.events.removeListener("connected", onConnected);
55
100
  }
56
- };
57
- }, [model?.id()]);
101
+ destroyedConnection.unsubscribe();
102
+ });
103
+ connectionsRef.current = {};
104
+ }, []);
58
105
  };
59
106
  export default apiMakerUseDestroyedEvent;
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWRlc3Ryb3llZC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsidXNlLWRlc3Ryb3llZC1ldmVudC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFDakMsT0FBTyxFQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQzNELE9BQU8sZ0JBQWdCLE1BQU0sVUFBVSxDQUFBO0FBQ3ZDLE9BQU8sV0FBVyxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sUUFBUSxNQUFNLHNDQUFzQyxDQUFBO0FBRTNEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEVBQUU7SUFDOUQsTUFBTSxFQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLFNBQVMsRUFBQyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUE7SUFFeEUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDbkcsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUE7SUFFMUQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ3BDLElBQUksT0FBTyxRQUFRLElBQUksUUFBUSxFQUFFLENBQUM7WUFDaEMsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUNwRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUMxQyxDQUFDO0lBQ0gsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUVkLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBQyxnQkFBZ0IsRUFBQyxDQUFDLENBQUE7SUFFaEMsTUFBTSxtQkFBbUIsR0FBRyxXQUFXLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFO1FBQ2xELElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE9BQU07UUFDUixDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUMvQixDQUFDO2FBQU0sQ0FBQztZQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDMUIsQ0FBQztJQUNILENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUVOLGVBQWUsQ0FBQyxHQUFHLEVBQUU7UUFDbkIsSUFBSSxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQTtRQUV6QyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO1lBRTNFLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLG1CQUFtQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ3JGLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxHQUFHLEVBQUU7WUFDVixJQUFJLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3hCLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ2xFLENBQUM7WUFFRCxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3JCLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQ2hDLENBQUM7UUFDSCxDQUFDLENBQUE7SUFDSCxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ25CLENBQUMsQ0FBQTtBQUVELGVBQWUseUJBQXlCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCB7dXNlQ2FsbGJhY2ssIHVzZUxheW91dEVmZmVjdCwgdXNlTWVtb30gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBkZWJvdW5jZUZ1bmN0aW9uIGZyb20gXCJkZWJvdW5jZVwiXG5pbXBvcnQgTW9kZWxFdmVudHMgZnJvbSBcIi4vbW9kZWwtZXZlbnRzLmpzXCJcbmltcG9ydCB1c2VTaGFwZSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvdXNlLXNoYXBlLmpzXCJcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gbW9kZWxcbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9uRGVzdHJveWVkXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMuYWN0aXZlXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuZGVib3VuY2VcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByb3BzLm9uQ29ubmVjdGVkXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuY29uc3QgYXBpTWFrZXJVc2VEZXN0cm95ZWRFdmVudCA9IChtb2RlbCwgb25EZXN0cm95ZWQsIHByb3BzKSA9PiB7XG4gIGNvbnN0IHthY3RpdmUgPSB0cnVlLCBkZWJvdW5jZSwgb25Db25uZWN0ZWQsIC4uLnJlc3RQcm9wc30gPSBwcm9wcyB8fCB7fVxuXG4gIGlmIChPYmplY3Qua2V5cyhyZXN0UHJvcHMpLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcHJvcHMgZ2l2ZW4gdG8gdXNlRGVzdHJveWVkRXZlbnQ6ICR7T2JqZWN0LmtleXMocmVzdFByb3BzKS5qb2luKFwiLCBcIil9YClcbiAgfVxuXG4gIGNvbnN0IHMgPSB1c2VTaGFwZSh7YWN0aXZlLCBkZWJvdW5jZSwgbW9kZWwsIG9uRGVzdHJveWVkfSlcblxuICBjb25zdCBkZWJvdW5jZUNhbGxiYWNrID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZWJvdW5jZSA9PSBcIm51bWJlclwiKSB7XG4gICAgICByZXR1cm4gZGVib3VuY2VGdW5jdGlvbihzLnAub25EZXN0cm95ZWQsIGRlYm91bmNlKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZGVib3VuY2VGdW5jdGlvbihzLnAub25EZXN0cm95ZWQpXG4gICAgfVxuICB9LCBbZGVib3VuY2VdKVxuXG4gIHMudXBkYXRlTWV0YSh7ZGVib3VuY2VDYWxsYmFja30pXG5cbiAgY29uc3Qgb25EZXN0cm95ZWRDYWxsYmFjayA9IHVzZUNhbGxiYWNrKCguLi5hcmdzKSA9PiB7XG4gICAgaWYgKCFzLnAuYWN0aXZlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAocy5wLmRlYm91bmNlKSB7XG4gICAgICBzLm0uZGVib3VuY2VDYWxsYmFjayguLi5hcmdzKVxuICAgIH0gZWxzZSB7XG4gICAgICBzLnAub25EZXN0cm95ZWQoLi4uYXJncylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGNvbm5lY3REZXN0cm95ZWQsIG9uQ29ubmVjdGVkTGlzdGVuZXJcblxuICAgIGlmIChtb2RlbCkge1xuICAgICAgY29ubmVjdERlc3Ryb3llZCA9IE1vZGVsRXZlbnRzLmNvbm5lY3REZXN0cm95ZWQobW9kZWwsIG9uRGVzdHJveWVkQ2FsbGJhY2spXG5cbiAgICAgIGlmIChvbkNvbm5lY3RlZCkge1xuICAgICAgICBvbkNvbm5lY3RlZExpc3RlbmVyID0gY29ubmVjdERlc3Ryb3llZC5ldmVudHMuYWRkTGlzdGVuZXIoXCJjb25uZWN0ZWRcIiwgb25Db25uZWN0ZWQpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChvbkNvbm5lY3RlZExpc3RlbmVyKSB7XG4gICAgICAgIGNvbm5lY3REZXN0cm95ZWQuZXZlbnRzLnJlbW92ZUxpc3RlbmVyKFwiY29ubmVjdGVkXCIsIG9uQ29ubmVjdGVkKVxuICAgICAgfVxuXG4gICAgICBpZiAoY29ubmVjdERlc3Ryb3llZCkge1xuICAgICAgICBjb25uZWN0RGVzdHJveWVkLnVuc3Vic2NyaWJlKClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFttb2RlbD8uaWQoKV0pXG59XG5cbmV4cG9ydCBkZWZhdWx0IGFwaU1ha2VyVXNlRGVzdHJveWVkRXZlbnRcbiJdfQ==
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWRlc3Ryb3llZC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsidXNlLWRlc3Ryb3llZC1ldmVudC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFDakMsT0FBTyxFQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUNuRSxPQUFPLGdCQUFnQixNQUFNLFVBQVUsQ0FBQTtBQUN2QyxPQUFPLFdBQVcsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLFFBQVEsTUFBTSxzQ0FBc0MsQ0FBQTtBQUUzRDs7O0dBR0c7QUFDSCxNQUFNLGVBQWUsR0FBRyxDQUFDLGFBQWEsRUFBRSxFQUFFO0lBQ3hDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuQixPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUN4QyxPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDdEMsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDeEIsQ0FBQztBQUNILENBQUMsQ0FBQTtBQUVEOzs7R0FHRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQzNELGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUMxRCxDQUFBO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLGFBQWEsRUFBRSxFQUFFO0lBQzVDLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQTtJQUVyQixlQUFlLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENB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LENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDOUMsSUFBSSxPQUFPLElBQUksa0JBQWtCLEVBQUUsQ0FBQztnQkFDbEMsT0FBTTtZQUNSLENBQUM7WUFFRCxNQUFNLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsQ0FBQTtZQUN0RyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxtQkFBbUIsQ0FBQTtZQUVqRCxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixtQkFBbUIsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQTtZQUNsRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFaEMsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRTtRQUN6QixNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFO1lBQ3BFLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ3JFLENBQUM7WUFFRCxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUNuQyxDQUFDLENBQUMsQ0FBQTtRQUVGLGNBQWMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBQzdCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUNSLENBQUMsQ0FBQTtBQUVELGVBQWUseUJBQXlCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCB7dXNlQ2FsbGJhY2ssIHVzZUxheW91dEVmZmVjdCwgdXNlTWVtbywgdXNlUmVmfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IGRlYm91bmNlRnVuY3Rpb24gZnJvbSBcImRlYm91bmNlXCJcbmltcG9ydCBNb2RlbEV2ZW50cyBmcm9tIFwiLi9tb2RlbC1ldmVudHMuanNcIlxuaW1wb3J0IHVzZVNoYXBlIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC91c2Utc2hhcGUuanNcIlxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fG9iamVjdFtdfHVuZGVmaW5lZHxudWxsfSBtb2RlbE9yTW9kZWxzXG4gKiBAcmV0dXJucyB7b2JqZWN0W119XG4gKi9cbmNvbnN0IG1vZGVsc0Zyb21JbnB1dCA9IChtb2RlbE9yTW9kZWxzKSA9PiB7XG4gIGlmICghbW9kZWxPck1vZGVscykge1xuICAgIHJldHVybiBbXVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobW9kZWxPck1vZGVscykpIHtcbiAgICByZXR1cm4gbW9kZWxPck1vZGVscy5maWx0ZXIoQm9vbGVhbilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gW21vZGVsT3JNb2RlbHNdXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdHxvYmplY3RbXXx1bmRlZmluZWR8bnVsbH0gbW9kZWxPck1vZGVsc1xuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuY29uc3QgbW9kZWxzRGVwZW5kZW5jeUtleSA9IChtb2RlbE9yTW9kZWxzKSA9PiBKU09OLnN0cmluZ2lmeShcbiAgbW9kZWxzRnJvbUlucHV0KG1vZGVsT3JNb2RlbHMpLm1hcCgobW9kZWwpID0+IG1vZGVsLmlkKCkpXG4pXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R8b2JqZWN0W118dW5kZWZpbmVkfG51bGx9IG1vZGVsT3JNb2RlbHNcbiAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+fVxuICovXG5jb25zdCBtb2RlbHNCeUlkRnJvbUlucHV0ID0gKG1vZGVsT3JNb2RlbHMpID0+IHtcbiAgY29uc3QgbW9kZWxzQnlJZCA9IHt9XG5cbiAgbW9kZWxzRnJvbUlucHV0KG1vZGVsT3JNb2RlbHMpLmZvckVhY2goKG1vZGVsKSA9PiB7XG4gICAgbW9kZWxzQnlJZFttb2RlbC5pZCgpXSA9IG1vZGVsXG4gIH0pXG5cbiAgcmV0dXJuIG1vZGVsc0J5SWRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdHxvYmplY3RbXX0gbW9kZWxcbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9uRGVzdHJveWVkXG4gKiBAcGFyYW0ge29iamVjdH0gW3Byb3BzXVxuICogQHBhcmFtIHtib29sZWFufSBbcHJvcHMuYWN0aXZlXVxuICogQHBhcmFtIHtudW1iZXJ9IFtwcm9wcy5kZWJvdW5jZV1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcm9wcy5vbkNvbm5lY3RlZF1cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5jb25zdCBhcGlNYWtlclVzZURlc3Ryb3llZEV2ZW50ID0gKG1vZGVsLCBvbkRlc3Ryb3llZCwgcHJvcHMpID0+IHtcbiAgY29uc3Qge2FjdGl2ZSA9IHRydWUsIGRlYm91bmNlLCBvbkNvbm5lY3RlZCwgLi4ucmVzdFByb3BzfSA9IHByb3BzIHx8IHt9XG4gIGNvbnN0IGNvbm5lY3Rpb25zUmVmID0gdXNlUmVmKHt9KVxuXG4gIGlmIChPYmplY3Qua2V5cyhyZXN0UHJvcHMpLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcHJvcHMgZ2l2ZW4gdG8gdXNlRGVzdHJveWVkRXZlbnQ6ICR7T2JqZWN0LmtleXMocmVzdFByb3BzKS5qb2luKFwiLCBcIil9YClcbiAgfVxuXG4gIGNvbnN0IHMgPSB1c2VTaGFwZSh7YWN0aXZlLCBkZWJvdW5jZSwgbW9kZWwsIG9uRGVzdHJveWVkfSlcblxuICBjb25zdCBkZWJvdW5jZUNhbGxiYWNrID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZWJvdW5jZSA9PSBcIm51bWJlclwiKSB7XG4gICAgICByZXR1cm4gZGVib3VuY2VGdW5jdGlvbihzLnAub25EZXN0cm95ZWQsIGRlYm91bmNlKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZGVib3VuY2VGdW5jdGlvbihzLnAub25EZXN0cm95ZWQpXG4gICAgfVxuICB9LCBbZGVib3VuY2VdKVxuXG4gIHMudXBkYXRlTWV0YSh7ZGVib3VuY2VDYWxsYmFja30pXG5cbiAgY29uc3Qgb25EZXN0cm95ZWRDYWxsYmFjayA9IHVzZUNhbGxiYWNrKCguLi5hcmdzKSA9PiB7XG4gICAgaWYgKCFzLnAuYWN0aXZlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAocy5wLmRlYm91bmNlKSB7XG4gICAgICBzLm0uZGVib3VuY2VDYWxsYmFjayguLi5hcmdzKVxuICAgIH0gZWxzZSB7XG4gICAgICBzLnAub25EZXN0cm95ZWQoLi4uYXJncylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudENvbm5lY3Rpb25zID0gY29ubmVjdGlvbnNSZWYuY3VycmVudFxuICAgIGNvbnN0IG5leHRNb2RlbHNCeUlkID0gbW9kZWxzQnlJZEZyb21JbnB1dChtb2RlbClcblxuICAgIE9iamVjdC5rZXlzKGN1cnJlbnRDb25uZWN0aW9ucykuZm9yRWFjaCgobW9kZWxJZCkgPT4ge1xuICAgICAgaWYgKCEobW9kZWxJZCBpbiBuZXh0TW9kZWxzQnlJZCkpIHtcbiAgICAgICAgaWYgKG9uQ29ubmVjdGVkKSB7XG4gICAgICAgICAgY3VycmVudENvbm5lY3Rpb25zW21vZGVsSWRdLmV2ZW50cy5yZW1vdmVMaXN0ZW5lcihcImNvbm5lY3RlZFwiLCBvbkNvbm5lY3RlZClcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRDb25uZWN0aW9uc1ttb2RlbElkXS51bnN1YnNjcmliZSgpXG4gICAgICAgIGRlbGV0ZSBjdXJyZW50Q29ubmVjdGlvbnNbbW9kZWxJZF1cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgT2JqZWN0LmtleXMobmV4dE1vZGVsc0J5SWQpLmZvckVhY2goKG1vZGVsSWQpID0+IHtcbiAgICAgIGlmIChtb2RlbElkIGluIGN1cnJlbnRDb25uZWN0aW9ucykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVzdHJveWVkQ29ubmVjdGlvbiA9IE1vZGVsRXZlbnRzLmNvbm5lY3REZXN0cm95ZWQobmV4dE1vZGVsc0J5SWRbbW9kZWxJZF0sIG9uRGVzdHJveWVkQ2FsbGJhY2spXG4gICAgICBjdXJyZW50Q29ubmVjdGlvbnNbbW9kZWxJZF0gPSBkZXN0cm95ZWRDb25uZWN0aW9uXG5cbiAgICAgIGlmIChvbkNvbm5lY3RlZCkge1xuICAgICAgICBkZXN0cm95ZWRDb25uZWN0aW9uLmV2ZW50cy5hZGRMaXN0ZW5lcihcImNvbm5lY3RlZFwiLCBvbkNvbm5lY3RlZClcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbbW9kZWxzRGVwZW5kZW5jeUtleShtb2RlbCldKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiAoKSA9PiB7XG4gICAgT2JqZWN0LnZhbHVlcyhjb25uZWN0aW9uc1JlZi5jdXJyZW50KS5mb3JFYWNoKChkZXN0cm95ZWRDb25uZWN0aW9uKSA9PiB7XG4gICAgICBpZiAob25Db25uZWN0ZWQpIHtcbiAgICAgICAgZGVzdHJveWVkQ29ubmVjdGlvbi5ldmVudHMucmVtb3ZlTGlzdGVuZXIoXCJjb25uZWN0ZWRcIiwgb25Db25uZWN0ZWQpXG4gICAgICB9XG5cbiAgICAgIGRlc3Ryb3llZENvbm5lY3Rpb24udW5zdWJzY3JpYmUoKVxuICAgIH0pXG5cbiAgICBjb25uZWN0aW9uc1JlZi5jdXJyZW50ID0ge31cbiAgfSwgW10pXG59XG5cbmV4cG9ydCBkZWZhdWx0IGFwaU1ha2VyVXNlRGVzdHJveWVkRXZlbnRcbiJdfQ==
@@ -1,17 +1,17 @@
1
1
  export default apiMakerUseModelEvent;
2
2
  /**
3
- * @param {import("./base-model.js").default} model
3
+ * @param {import("./base-model.js").default|import("./base-model.js").default[]} model
4
4
  * @param {string} event
5
5
  * @param {Function} onCallback
6
- * @param {object} props
7
- * @param {object} props.active
8
- * @param {number} props.debounce
9
- * @param {Function} props.onConnected
6
+ * @param {object} [props]
7
+ * @param {boolean} [props.active]
8
+ * @param {number} [props.debounce]
9
+ * @param {Function} [props.onConnected]
10
10
  * @returns {void}
11
11
  */
12
- declare function apiMakerUseModelEvent(model: import("./base-model.js").default, event: string, onCallback: Function, props: {
13
- active: object;
14
- debounce: number;
15
- onConnected: Function;
12
+ declare function apiMakerUseModelEvent(model: import("./base-model.js").default | import("./base-model.js").default[], event: string, onCallback: Function, props?: {
13
+ active?: boolean;
14
+ debounce?: number;
15
+ onConnected?: Function;
16
16
  }): void;
17
17
  //# sourceMappingURL=use-model-event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-model-event.d.ts","sourceRoot":"/src/","sources":["use-model-event.js"],"names":[],"mappings":";AAMA;;;;;;;;;GASG;AAEH,8CAVW,OAAO,iBAAiB,EAAE,OAAO,SACjC,MAAM,+BAGd;IAAsB,MAAM,EAApB,MAAM;IACQ,QAAQ,EAAtB,MAAM;IACU,WAAW;CACnC,GAAU,IAAI,CAuDhB"}
1
+ {"version":3,"file":"use-model-event.d.ts","sourceRoot":"/src/","sources":["use-model-event.js"],"names":[],"mappings":";AA0CA;;;;;;;;;GASG;AAEH,8CAVW,OAAO,iBAAiB,EAAE,OAAO,GAAC,OAAO,iBAAiB,EAAE,OAAO,EAAE,SACrE,MAAM,gCAGd;IAAwB,MAAM,GAAtB,OAAO;IACQ,QAAQ,GAAvB,MAAM;IACW,WAAW;CACpC,GAAU,IAAI,CA2EhB"}
@@ -1,21 +1,53 @@
1
1
  /* eslint-disable sort-imports */
2
- import { useCallback, useLayoutEffect, useMemo } from "react";
2
+ import { useCallback, useLayoutEffect, useMemo, useRef } from "react";
3
3
  import debounceFunction from "debounce";
4
4
  import ModelEvents from "./model-events.js";
5
5
  import useShape from "set-state-compare/build/use-shape.js";
6
6
  /**
7
- * @param {import("./base-model.js").default} model
7
+ * @param {object|object[]|undefined|null} modelOrModels
8
+ * @returns {object[]}
9
+ */
10
+ const modelsFromInput = (modelOrModels) => {
11
+ if (!modelOrModels) {
12
+ return [];
13
+ }
14
+ else if (Array.isArray(modelOrModels)) {
15
+ return modelOrModels.filter(Boolean);
16
+ }
17
+ else {
18
+ return [modelOrModels];
19
+ }
20
+ };
21
+ /**
22
+ * @param {object|object[]|undefined|null} modelOrModels
23
+ * @returns {string}
24
+ */
25
+ const modelsDependencyKey = (modelOrModels) => JSON.stringify(modelsFromInput(modelOrModels).map((model) => model.id()));
26
+ /**
27
+ * @param {object|object[]|undefined|null} modelOrModels
28
+ * @returns {Record<string, object>}
29
+ */
30
+ const modelsByIdFromInput = (modelOrModels) => {
31
+ const modelsById = {};
32
+ modelsFromInput(modelOrModels).forEach((model) => {
33
+ modelsById[model.id()] = model;
34
+ });
35
+ return modelsById;
36
+ };
37
+ /**
38
+ * @param {import("./base-model.js").default|import("./base-model.js").default[]} model
8
39
  * @param {string} event
9
40
  * @param {Function} onCallback
10
- * @param {object} props
11
- * @param {object} props.active
12
- * @param {number} props.debounce
13
- * @param {Function} props.onConnected
41
+ * @param {object} [props]
42
+ * @param {boolean} [props.active]
43
+ * @param {number} [props.debounce]
44
+ * @param {Function} [props.onConnected]
14
45
  * @returns {void}
15
46
  */
16
47
  // eslint-disable-next-line max-params
17
48
  const apiMakerUseModelEvent = (model, event, onCallback, props) => {
18
49
  const { active = true, debounce, onConnected, ...restProps } = props || {};
50
+ const connectionsRef = useRef({});
19
51
  if (Object.keys(restProps).length > 0) {
20
52
  throw new Error(`Unknown props given to apiMakerUseModelEvent: ${Object.keys(restProps).join(", ")}`);
21
53
  }
@@ -41,22 +73,37 @@ const apiMakerUseModelEvent = (model, event, onCallback, props) => {
41
73
  }
42
74
  }, []);
43
75
  useLayoutEffect(() => {
44
- let connectEvent, onConnectedListener;
45
- if (model) {
46
- connectEvent = ModelEvents.connect(model, event, onCallbackCallback);
47
- if (onConnected) {
48
- onConnectedListener = connectEvent.events.addListener("connected", onConnected);
76
+ const currentConnections = connectionsRef.current;
77
+ const nextModelsById = modelsByIdFromInput(model);
78
+ Object.keys(currentConnections).forEach((modelId) => {
79
+ if (!(modelId in nextModelsById)) {
80
+ if (onConnected) {
81
+ currentConnections[modelId].events.removeListener("connected", onConnected);
82
+ }
83
+ currentConnections[modelId].unsubscribe();
84
+ delete currentConnections[modelId];
49
85
  }
50
- }
51
- return () => {
52
- if (onConnectedListener) {
53
- connectEvent.events.removeListener("connected", onConnected);
86
+ });
87
+ Object.keys(nextModelsById).forEach((modelId) => {
88
+ if (modelId in currentConnections) {
89
+ return;
54
90
  }
55
- if (connectEvent) {
56
- connectEvent.unsubscribe();
91
+ const eventConnection = ModelEvents.connect(nextModelsById[modelId], event, onCallbackCallback);
92
+ currentConnections[modelId] = eventConnection;
93
+ if (onConnected) {
94
+ eventConnection.events.addListener("connected", onConnected);
95
+ }
96
+ });
97
+ }, [event, modelsDependencyKey(model)]);
98
+ useLayoutEffect(() => () => {
99
+ Object.values(connectionsRef.current).forEach((eventConnection) => {
100
+ if (onConnected) {
101
+ eventConnection.events.removeListener("connected", onConnected);
57
102
  }
58
- };
59
- }, [model?.id()]);
103
+ eventConnection.unsubscribe();
104
+ });
105
+ connectionsRef.current = {};
106
+ }, []);
60
107
  };
61
108
  export default apiMakerUseModelEvent;
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLW1vZGVsLWV2ZW50LmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ1c2UtbW9kZWwtZXZlbnQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLE9BQU8sRUFBQyxXQUFXLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUMzRCxPQUFPLGdCQUFnQixNQUFNLFVBQVUsQ0FBQTtBQUN2QyxPQUFPLFdBQVcsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLFFBQVEsTUFBTSxzQ0FBc0MsQ0FBQTtBQUUzRDs7Ozs7Ozs7O0dBU0c7QUFDSCxzQ0FBc0M7QUFDdEMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFO0lBQ2hFLE1BQU0sRUFBQyxNQUFNLEdBQUcsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsR0FBRyxTQUFTLEVBQUMsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFBO0lBRXhFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3ZHLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsRUFBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFBO0lBRXpELE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUNwQyxJQUFJLE9BQU8sUUFBUSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDbkQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDekMsQ0FBQztJQUNILENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7SUFFZCxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUMsZ0JBQWdCLEVBQUMsQ0FBQyxDQUFBO0lBRWhDLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRTtRQUNqRCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFNO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDL0IsQ0FBQzthQUFNLENBQUM7WUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO1FBQ3pCLENBQUM7SUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFFTixlQUFlLENBQUMsR0FBRyxFQUFFO1FBQ25CLElBQUksWUFBWSxFQUFFLG1CQUFtQixDQUFBO1FBRXJDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixZQUFZLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixDQUFDLENBQUE7WUFFcEUsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsbUJBQW1CLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ2pGLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxHQUFHLEVBQUU7WUFDVixJQUFJLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3hCLFlBQVksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQTtZQUM5RCxDQUFDO1lBRUQsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQzVCLENBQUM7UUFDSCxDQUFDLENBQUE7SUFDSCxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ25CLENBQUMsQ0FBQTtBQUVELGVBQWUscUJBQXFCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCB7dXNlQ2FsbGJhY2ssIHVzZUxheW91dEVmZmVjdCwgdXNlTWVtb30gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBkZWJvdW5jZUZ1bmN0aW9uIGZyb20gXCJkZWJvdW5jZVwiXG5pbXBvcnQgTW9kZWxFdmVudHMgZnJvbSBcIi4vbW9kZWwtZXZlbnRzLmpzXCJcbmltcG9ydCB1c2VTaGFwZSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvdXNlLXNoYXBlLmpzXCJcblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSBtb2RlbFxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbkNhbGxiYWNrXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wcy5hY3RpdmVcbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5kZWJvdW5jZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJvcHMub25Db25uZWN0ZWRcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXBhcmFtc1xuY29uc3QgYXBpTWFrZXJVc2VNb2RlbEV2ZW50ID0gKG1vZGVsLCBldmVudCwgb25DYWxsYmFjaywgcHJvcHMpID0+IHtcbiAgY29uc3Qge2FjdGl2ZSA9IHRydWUsIGRlYm91bmNlLCBvbkNvbm5lY3RlZCwgLi4ucmVzdFByb3BzfSA9IHByb3BzIHx8IHt9XG5cbiAgaWYgKE9iamVjdC5rZXlzKHJlc3RQcm9wcykubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBwcm9wcyBnaXZlbiB0byBhcGlNYWtlclVzZU1vZGVsRXZlbnQ6ICR7T2JqZWN0LmtleXMocmVzdFByb3BzKS5qb2luKFwiLCBcIil9YClcbiAgfVxuXG4gIGNvbnN0IHMgPSB1c2VTaGFwZSh7YWN0aXZlLCBkZWJvdW5jZSwgbW9kZWwsIG9uQ2FsbGJhY2t9KVxuXG4gIGNvbnN0IGRlYm91bmNlQ2FsbGJhY2sgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGRlYm91bmNlID09IFwibnVtYmVyXCIpIHtcbiAgICAgIHJldHVybiBkZWJvdW5jZUZ1bmN0aW9uKHMucC5vbkNhbGxiYWNrLCBkZWJvdW5jZSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRlYm91bmNlRnVuY3Rpb24ocy5wLm9uQ2FsbGJhY2spXG4gICAgfVxuICB9LCBbZGVib3VuY2VdKVxuXG4gIHMudXBkYXRlTWV0YSh7ZGVib3VuY2VDYWxsYmFja30pXG5cbiAgY29uc3Qgb25DYWxsYmFja0NhbGxiYWNrID0gdXNlQ2FsbGJhY2soKC4uLmFyZ3MpID0+IHtcbiAgICBpZiAoIXMucC5hY3RpdmUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChzLnAuZGVib3VuY2UpIHtcbiAgICAgIHMubS5kZWJvdW5jZUNhbGxiYWNrKC4uLmFyZ3MpXG4gICAgfSBlbHNlIHtcbiAgICAgIHMucC5vbkNhbGxiYWNrKC4uLmFyZ3MpXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBjb25uZWN0RXZlbnQsIG9uQ29ubmVjdGVkTGlzdGVuZXJcblxuICAgIGlmIChtb2RlbCkge1xuICAgICAgY29ubmVjdEV2ZW50ID0gTW9kZWxFdmVudHMuY29ubmVjdChtb2RlbCwgZXZlbnQsIG9uQ2FsbGJhY2tDYWxsYmFjaylcblxuICAgICAgaWYgKG9uQ29ubmVjdGVkKSB7XG4gICAgICAgIG9uQ29ubmVjdGVkTGlzdGVuZXIgPSBjb25uZWN0RXZlbnQuZXZlbnRzLmFkZExpc3RlbmVyKFwiY29ubmVjdGVkXCIsIG9uQ29ubmVjdGVkKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAob25Db25uZWN0ZWRMaXN0ZW5lcikge1xuICAgICAgICBjb25uZWN0RXZlbnQuZXZlbnRzLnJlbW92ZUxpc3RlbmVyKFwiY29ubmVjdGVkXCIsIG9uQ29ubmVjdGVkKVxuICAgICAgfVxuXG4gICAgICBpZiAoY29ubmVjdEV2ZW50KSB7XG4gICAgICAgIGNvbm5lY3RFdmVudC51bnN1YnNjcmliZSgpXG4gICAgICB9XG4gICAgfVxuICB9LCBbbW9kZWw/LmlkKCldKVxufVxuXG5leHBvcnQgZGVmYXVsdCBhcGlNYWtlclVzZU1vZGVsRXZlbnRcbiJdfQ==
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLW1vZGVsLWV2ZW50LmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ1c2UtbW9kZWwtZXZlbnQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLE9BQU8sRUFBQyxXQUFXLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDbkUsT0FBTyxnQkFBZ0IsTUFBTSxVQUFVLENBQUE7QUFDdkMsT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxRQUFRLE1BQU0sc0NBQXNDLENBQUE7QUFFM0Q7OztHQUdHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsQ0FBQyxhQUFhLEVBQUUsRUFBRTtJQUN4QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkIsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO1NBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFDeEMsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3RDLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQ3hCLENBQUM7QUFDSCxDQUFDLENBQUE7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLG1CQUFtQixHQUFHLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUMzRCxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDMUQsQ0FBQTtBQUVEOzs7R0FHRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxhQUFhLEVBQUUsRUFBRTtJQUM1QyxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUE7SUFFckIsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUss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RixNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzlDLElBQUksT0FBTyxJQUFJLGtCQUFrQixFQUFFLENBQUM7Z0JBQ2xDLE9BQU07WUFDUixDQUFDO1lBRUQsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixDQUFDLENBQUE7WUFDL0Ysa0JBQWtCLENBQUMsT0FBTyxDQUFDLEdBQUcsZUFBZSxDQUFBO1lBRTdDLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLGVBQWUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQTtZQUM5RCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRXZDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUU7UUFDekIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDaEUsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsZUFBZSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ2pFLENBQUM7WUFFRCxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDL0IsQ0FBQyxDQUFDLENBQUE7UUFFRixjQUFjLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQTtJQUM3QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDUixDQUFDLENBQUE7QUFFRCxlQUFlLHFCQUFxQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgc29ydC1pbXBvcnRzICovXG5pbXBvcnQge3VzZUNhbGxiYWNrLCB1c2VMYXlvdXRFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBkZWJvdW5jZUZ1bmN0aW9uIGZyb20gXCJkZWJvdW5jZVwiXG5pbXBvcnQgTW9kZWxFdmVudHMgZnJvbSBcIi4vbW9kZWwtZXZlbnRzLmpzXCJcbmltcG9ydCB1c2VTaGFwZSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvdXNlLXNoYXBlLmpzXCJcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdHxvYmplY3RbXXx1bmRlZmluZWR8bnVsbH0gbW9kZWxPck1vZGVsc1xuICogQHJldHVybnMge29iamVjdFtdfVxuICovXG5jb25zdCBtb2RlbHNGcm9tSW5wdXQgPSAobW9kZWxPck1vZGVscykgPT4ge1xuICBpZiAoIW1vZGVsT3JNb2RlbHMpIHtcbiAgICByZXR1cm4gW11cbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG1vZGVsT3JNb2RlbHMpKSB7XG4gICAgcmV0dXJuIG1vZGVsT3JNb2RlbHMuZmlsdGVyKEJvb2xlYW4pXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFttb2RlbE9yTW9kZWxzXVxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R8b2JqZWN0W118dW5kZWZpbmVkfG51bGx9IG1vZGVsT3JNb2RlbHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmNvbnN0IG1vZGVsc0RlcGVuZGVuY3lLZXkgPSAobW9kZWxPck1vZGVscykgPT4gSlNPTi5zdHJpbmdpZnkoXG4gIG1vZGVsc0Zyb21JbnB1dChtb2RlbE9yTW9kZWxzKS5tYXAoKG1vZGVsKSA9PiBtb2RlbC5pZCgpKVxuKVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fG9iamVjdFtdfHVuZGVmaW5lZHxudWxsfSBtb2RlbE9yTW9kZWxzXG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgb2JqZWN0Pn1cbiAqL1xuY29uc3QgbW9kZWxzQnlJZEZyb21JbnB1dCA9IChtb2RlbE9yTW9kZWxzKSA9PiB7XG4gIGNvbnN0IG1vZGVsc0J5SWQgPSB7fVxuXG4gIG1vZGVsc0Zyb21JbnB1dChtb2RlbE9yTW9kZWxzKS5mb3JFYWNoKChtb2RlbCkgPT4ge1xuICAgIG1vZGVsc0J5SWRbbW9kZWwuaWQoKV0gPSBtb2RlbFxuICB9KVxuXG4gIHJldHVybiBtb2RlbHNCeUlkXG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdHxpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdFtdfSBtb2RlbFxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbkNhbGxiYWNrXG4gKiBAcGFyYW0ge29iamVjdH0gW3Byb3BzXVxuICogQHBhcmFtIHtib29sZWFufSBbcHJvcHMuYWN0aXZlXVxuICogQHBhcmFtIHtudW1iZXJ9IFtwcm9wcy5kZWJvdW5jZV1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcm9wcy5vbkNvbm5lY3RlZF1cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXBhcmFtc1xuY29uc3QgYXBpTWFrZXJVc2VNb2RlbEV2ZW50ID0gKG1vZGVsLCBldmVudCwgb25DYWxsYmFjaywgcHJvcHMpID0+IHtcbiAgY29uc3Qge2FjdGl2ZSA9IHRydWUsIGRlYm91bmNlLCBvbkNvbm5lY3RlZCwgLi4ucmVzdFByb3BzfSA9IHByb3BzIHx8IHt9XG4gIGNvbnN0IGNvbm5lY3Rpb25zUmVmID0gdXNlUmVmKHt9KVxuXG4gIGlmIChPYmplY3Qua2V5cyhyZXN0UHJvcHMpLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcHJvcHMgZ2l2ZW4gdG8gYXBpTWFrZXJVc2VNb2RlbEV2ZW50OiAke09iamVjdC5rZXlzKHJlc3RQcm9wcykuam9pbihcIiwgXCIpfWApXG4gIH1cblxuICBjb25zdCBzID0gdXNlU2hhcGUoe2FjdGl2ZSwgZGVib3VuY2UsIG1vZGVsLCBvbkNhbGxiYWNrfSlcblxuICBjb25zdCBkZWJvdW5jZUNhbGxiYWNrID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZWJvdW5jZSA9PSBcIm51bWJlclwiKSB7XG4gICAgICByZXR1cm4gZGVib3VuY2VGdW5jdGlvbihzLnAub25DYWxsYmFjaywgZGVib3VuY2UpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBkZWJvdW5jZUZ1bmN0aW9uKHMucC5vbkNhbGxiYWNrKVxuICAgIH1cbiAgfSwgW2RlYm91bmNlXSlcblxuICBzLnVwZGF0ZU1ldGEoe2RlYm91bmNlQ2FsbGJhY2t9KVxuXG4gIGNvbnN0IG9uQ2FsbGJhY2tDYWxsYmFjayA9IHVzZUNhbGxiYWNrKCguLi5hcmdzKSA9PiB7XG4gICAgaWYgKCFzLnAuYWN0aXZlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAocy5wLmRlYm91bmNlKSB7XG4gICAgICBzLm0uZGVib3VuY2VDYWxsYmFjayguLi5hcmdzKVxuICAgIH0gZWxzZSB7XG4gICAgICBzLnAub25DYWxsYmFjayguLi5hcmdzKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50Q29ubmVjdGlvbnMgPSBjb25uZWN0aW9uc1JlZi5jdXJyZW50XG4gICAgY29uc3QgbmV4dE1vZGVsc0J5SWQgPSBtb2RlbHNCeUlkRnJvbUlucHV0KG1vZGVsKVxuXG4gICAgT2JqZWN0LmtleXMoY3VycmVudENvbm5lY3Rpb25zKS5mb3JFYWNoKChtb2RlbElkKSA9PiB7XG4gICAgICBpZiAoIShtb2RlbElkIGluIG5leHRNb2RlbHNCeUlkKSkge1xuICAgICAgICBpZiAob25Db25uZWN0ZWQpIHtcbiAgICAgICAgICBjdXJyZW50Q29ubmVjdGlvbnNbbW9kZWxJZF0uZXZlbnRzLnJlbW92ZUxpc3RlbmVyKFwiY29ubmVjdGVkXCIsIG9uQ29ubmVjdGVkKVxuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudENvbm5lY3Rpb25zW21vZGVsSWRdLnVuc3Vic2NyaWJlKClcbiAgICAgICAgZGVsZXRlIGN1cnJlbnRDb25uZWN0aW9uc1ttb2RlbElkXVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBPYmplY3Qua2V5cyhuZXh0TW9kZWxzQnlJZCkuZm9yRWFjaCgobW9kZWxJZCkgPT4ge1xuICAgICAgaWYgKG1vZGVsSWQgaW4gY3VycmVudENvbm5lY3Rpb25zKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBldmVudENvbm5lY3Rpb24gPSBNb2RlbEV2ZW50cy5jb25uZWN0KG5leHRNb2RlbHNCeUlkW21vZGVsSWRdLCBldmVudCwgb25DYWxsYmFja0NhbGxiYWNrKVxuICAgICAgY3VycmVudENvbm5lY3Rpb25zW21vZGVsSWRdID0gZXZlbnRDb25uZWN0aW9uXG5cbiAgICAgIGlmIChvbkNvbm5lY3RlZCkge1xuICAgICAgICBldmVudENvbm5lY3Rpb24uZXZlbnRzLmFkZExpc3RlbmVyKFwiY29ubmVjdGVkXCIsIG9uQ29ubmVjdGVkKVxuICAgICAgfVxuICAgIH0pXG4gIH0sIFtldmVudCwgbW9kZWxzRGVwZW5kZW5jeUtleShtb2RlbCldKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiAoKSA9PiB7XG4gICAgT2JqZWN0LnZhbHVlcyhjb25uZWN0aW9uc1JlZi5jdXJyZW50KS5mb3JFYWNoKChldmVudENvbm5lY3Rpb24pID0+IHtcbiAgICAgIGlmIChvbkNvbm5lY3RlZCkge1xuICAgICAgICBldmVudENvbm5lY3Rpb24uZXZlbnRzLnJlbW92ZUxpc3RlbmVyKFwiY29ubmVjdGVkXCIsIG9uQ29ubmVjdGVkKVxuICAgICAgfVxuXG4gICAgICBldmVudENvbm5lY3Rpb24udW5zdWJzY3JpYmUoKVxuICAgIH0pXG5cbiAgICBjb25uZWN0aW9uc1JlZi5jdXJyZW50ID0ge31cbiAgfSwgW10pXG59XG5cbmV4cG9ydCBkZWZhdWx0IGFwaU1ha2VyVXNlTW9kZWxFdmVudFxuIl19
@@ -1,16 +1,16 @@
1
1
  export default apiMakerUseUpdatedEvent;
2
2
  /**
3
- * @param {import("./base-model.js").default} model
3
+ * @param {import("./base-model.js").default|import("./base-model.js").default[]} model
4
4
  * @param {Function} onUpdated
5
- * @param {object} props
6
- * @param {boolean} props.active
7
- * @param {number} props.debounce
8
- * @param {Function} props.onConnected
5
+ * @param {object} [props]
6
+ * @param {boolean} [props.active]
7
+ * @param {number} [props.debounce]
8
+ * @param {Function} [props.onConnected]
9
9
  * @returns {void}
10
10
  */
11
- declare function apiMakerUseUpdatedEvent(model: import("./base-model.js").default, onUpdated: Function, props?: {
12
- active: boolean;
13
- debounce: number;
14
- onConnected: Function;
11
+ declare function apiMakerUseUpdatedEvent(model: import("./base-model.js").default | import("./base-model.js").default[], onUpdated: Function, props?: {
12
+ active?: boolean;
13
+ debounce?: number;
14
+ onConnected?: Function;
15
15
  }): void;
16
16
  //# sourceMappingURL=use-updated-event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-updated-event.d.ts","sourceRoot":"/src/","sources":["use-updated-event.js"],"names":[],"mappings":";AAMA;;;;;;;;GAQG;AACH,gDARW,OAAO,iBAAiB,EAAE,OAAO,+BAGzC;IAAuB,MAAM,EAArB,OAAO;IACO,QAAQ,EAAtB,MAAM;IACU,WAAW;CACnC,GAAU,IAAI,CAsDhB"}
1
+ {"version":3,"file":"use-updated-event.d.ts","sourceRoot":"/src/","sources":["use-updated-event.js"],"names":[],"mappings":";AA0CA;;;;;;;;GAQG;AACH,gDARW,OAAO,iBAAiB,EAAE,OAAO,GAAC,OAAO,iBAAiB,EAAE,OAAO,EAAE,+BAG7E;IAAwB,MAAM,GAAtB,OAAO;IACQ,QAAQ,GAAvB,MAAM;IACW,WAAW;CACpC,GAAU,IAAI,CA0EhB"}
@@ -1,19 +1,51 @@
1
1
  /* eslint-disable sort-imports */
2
- import { useCallback, useLayoutEffect, useMemo } from "react";
2
+ import { useCallback, useLayoutEffect, useMemo, useRef } from "react";
3
3
  import debounceFunction from "debounce";
4
4
  import ModelEvents from "./model-events.js";
5
5
  import useShape from "set-state-compare/build/use-shape.js";
6
6
  /**
7
- * @param {import("./base-model.js").default} model
7
+ * @param {object|object[]|undefined|null} modelOrModels
8
+ * @returns {object[]}
9
+ */
10
+ const modelsFromInput = (modelOrModels) => {
11
+ if (!modelOrModels) {
12
+ return [];
13
+ }
14
+ else if (Array.isArray(modelOrModels)) {
15
+ return modelOrModels.filter(Boolean);
16
+ }
17
+ else {
18
+ return [modelOrModels];
19
+ }
20
+ };
21
+ /**
22
+ * @param {object|object[]|undefined|null} modelOrModels
23
+ * @returns {string}
24
+ */
25
+ const modelsDependencyKey = (modelOrModels) => JSON.stringify(modelsFromInput(modelOrModels).map((model) => model.id()));
26
+ /**
27
+ * @param {object|object[]|undefined|null} modelOrModels
28
+ * @returns {Record<string, object>}
29
+ */
30
+ const modelsByIdFromInput = (modelOrModels) => {
31
+ const modelsById = {};
32
+ modelsFromInput(modelOrModels).forEach((model) => {
33
+ modelsById[model.id()] = model;
34
+ });
35
+ return modelsById;
36
+ };
37
+ /**
38
+ * @param {import("./base-model.js").default|import("./base-model.js").default[]} model
8
39
  * @param {Function} onUpdated
9
- * @param {object} props
10
- * @param {boolean} props.active
11
- * @param {number} props.debounce
12
- * @param {Function} props.onConnected
40
+ * @param {object} [props]
41
+ * @param {boolean} [props.active]
42
+ * @param {number} [props.debounce]
43
+ * @param {Function} [props.onConnected]
13
44
  * @returns {void}
14
45
  */
15
46
  const apiMakerUseUpdatedEvent = (model, onUpdated, props = {}) => {
16
47
  const { active = true, debounce, onConnected, ...restProps } = props;
48
+ const connectionsRef = useRef({});
17
49
  if (Object.keys(restProps).length > 0) {
18
50
  throw new Error(`Unknown props given to useUpdatedEvent: ${Object.keys(restProps).join(", ")}`);
19
51
  }
@@ -39,22 +71,37 @@ const apiMakerUseUpdatedEvent = (model, onUpdated, props = {}) => {
39
71
  }
40
72
  }, []);
41
73
  useLayoutEffect(() => {
42
- let connectUpdated, onConnectedListener;
43
- if (model) {
44
- connectUpdated = ModelEvents.connectUpdated(model, onUpdatedCallback);
45
- if (onConnected) {
46
- onConnectedListener = connectUpdated.events.addListener("connected", onConnected);
74
+ const currentConnections = connectionsRef.current;
75
+ const nextModelsById = modelsByIdFromInput(model);
76
+ Object.keys(currentConnections).forEach((modelId) => {
77
+ if (!(modelId in nextModelsById)) {
78
+ if (onConnected) {
79
+ currentConnections[modelId].events.removeListener("connected", onConnected);
80
+ }
81
+ currentConnections[modelId].unsubscribe();
82
+ delete currentConnections[modelId];
47
83
  }
48
- }
49
- return () => {
50
- if (onConnectedListener) {
51
- connectUpdated.events.removeListener("connected", onConnected);
84
+ });
85
+ Object.keys(nextModelsById).forEach((modelId) => {
86
+ if (modelId in currentConnections) {
87
+ return;
52
88
  }
53
- if (connectUpdated) {
54
- connectUpdated.unsubscribe();
89
+ const updatedConnection = ModelEvents.connectUpdated(nextModelsById[modelId], onUpdatedCallback);
90
+ currentConnections[modelId] = updatedConnection;
91
+ if (onConnected) {
92
+ updatedConnection.events.addListener("connected", onConnected);
93
+ }
94
+ });
95
+ }, [modelsDependencyKey(model)]);
96
+ useLayoutEffect(() => () => {
97
+ Object.values(connectionsRef.current).forEach((updatedConnection) => {
98
+ if (onConnected) {
99
+ updatedConnection.events.removeListener("connected", onConnected);
55
100
  }
56
- };
57
- }, [model?.id()]);
101
+ updatedConnection.unsubscribe();
102
+ });
103
+ connectionsRef.current = {};
104
+ }, []);
58
105
  };
59
106
  export default apiMakerUseUpdatedEvent;
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXVwZGF0ZWQtZXZlbnQuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInVzZS11cGRhdGVkLWV2ZW50LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlDQUFpQztBQUNqQyxPQUFPLEVBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDM0QsT0FBTyxnQkFBZ0IsTUFBTSxVQUFVLENBQUE7QUFDdkMsT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxRQUFRLE1BQU0sc0NBQXNDLENBQUE7QUFFM0Q7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHVCQUF1QixHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLEVBQUU7SUFDL0QsTUFBTSxFQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLFNBQVMsRUFBQyxHQUFHLEtBQUssQ0FBQTtJQUVsRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNqRyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLEVBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtJQUV4RCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDcEMsSUFBSSxPQUFPLFFBQVEsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNoQyxPQUFPLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQ2xELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3hDLENBQUM7SUFDSCxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0lBRWQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFDLGdCQUFnQixFQUFDLENBQUMsQ0FBQTtJQUVoQyxNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUU7UUFDaEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsT0FBTTtRQUNSLENBQUM7UUFFRCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUN4QixDQUFDO0lBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRU4sZUFBZSxDQUFDLEdBQUcsRUFBRTtRQUNuQixJQUFJLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQTtRQUV2QyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsY0FBYyxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUE7WUFFckUsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsbUJBQW1CLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ25GLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxHQUFHLEVBQUU7WUFDVixJQUFJLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3hCLGNBQWMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQTtZQUNoRSxDQUFDO1lBRUQsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDbkIsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQzlCLENBQUM7UUFDSCxDQUFDLENBQUE7SUFDSCxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ25CLENBQUMsQ0FBQTtBQUVELGVBQWUsdUJBQXVCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCB7dXNlQ2FsbGJhY2ssIHVzZUxheW91dEVmZmVjdCwgdXNlTWVtb30gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBkZWJvdW5jZUZ1bmN0aW9uIGZyb20gXCJkZWJvdW5jZVwiXG5pbXBvcnQgTW9kZWxFdmVudHMgZnJvbSBcIi4vbW9kZWwtZXZlbnRzLmpzXCJcbmltcG9ydCB1c2VTaGFwZSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvdXNlLXNoYXBlLmpzXCJcblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSBtb2RlbFxuICogQHBhcmFtIHtGdW5jdGlvbn0gb25VcGRhdGVkXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMuYWN0aXZlXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuZGVib3VuY2VcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByb3BzLm9uQ29ubmVjdGVkXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuY29uc3QgYXBpTWFrZXJVc2VVcGRhdGVkRXZlbnQgPSAobW9kZWwsIG9uVXBkYXRlZCwgcHJvcHMgPSB7fSkgPT4ge1xuICBjb25zdCB7YWN0aXZlID0gdHJ1ZSwgZGVib3VuY2UsIG9uQ29ubmVjdGVkLCAuLi5yZXN0UHJvcHN9ID0gcHJvcHNcblxuICBpZiAoT2JqZWN0LmtleXMocmVzdFByb3BzKS5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHByb3BzIGdpdmVuIHRvIHVzZVVwZGF0ZWRFdmVudDogJHtPYmplY3Qua2V5cyhyZXN0UHJvcHMpLmpvaW4oXCIsIFwiKX1gKVxuICB9XG5cbiAgY29uc3QgcyA9IHVzZVNoYXBlKHthY3RpdmUsIGRlYm91bmNlLCBtb2RlbCwgb25VcGRhdGVkfSlcblxuICBjb25zdCBkZWJvdW5jZUNhbGxiYWNrID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBkZWJvdW5jZSA9PSBcIm51bWJlclwiKSB7XG4gICAgICByZXR1cm4gZGVib3VuY2VGdW5jdGlvbihzLnAub25VcGRhdGVkLCBkZWJvdW5jZSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRlYm91bmNlRnVuY3Rpb24ocy5wLm9uVXBkYXRlZClcbiAgICB9XG4gIH0sIFtkZWJvdW5jZV0pXG5cbiAgcy51cGRhdGVNZXRhKHtkZWJvdW5jZUNhbGxiYWNrfSlcblxuICBjb25zdCBvblVwZGF0ZWRDYWxsYmFjayA9IHVzZUNhbGxiYWNrKCguLi5hcmdzKSA9PiB7XG4gICAgaWYgKCFzLnAuYWN0aXZlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAocy5wLmRlYm91bmNlKSB7XG4gICAgICBzLm0uZGVib3VuY2VDYWxsYmFjayguLi5hcmdzKVxuICAgIH0gZWxzZSB7XG4gICAgICBzLnAub25VcGRhdGVkKC4uLmFyZ3MpXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBjb25uZWN0VXBkYXRlZCwgb25Db25uZWN0ZWRMaXN0ZW5lclxuXG4gICAgaWYgKG1vZGVsKSB7XG4gICAgICBjb25uZWN0VXBkYXRlZCA9IE1vZGVsRXZlbnRzLmNvbm5lY3RVcGRhdGVkKG1vZGVsLCBvblVwZGF0ZWRDYWxsYmFjaylcblxuICAgICAgaWYgKG9uQ29ubmVjdGVkKSB7XG4gICAgICAgIG9uQ29ubmVjdGVkTGlzdGVuZXIgPSBjb25uZWN0VXBkYXRlZC5ldmVudHMuYWRkTGlzdGVuZXIoXCJjb25uZWN0ZWRcIiwgb25Db25uZWN0ZWQpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChvbkNvbm5lY3RlZExpc3RlbmVyKSB7XG4gICAgICAgIGNvbm5lY3RVcGRhdGVkLmV2ZW50cy5yZW1vdmVMaXN0ZW5lcihcImNvbm5lY3RlZFwiLCBvbkNvbm5lY3RlZClcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbm5lY3RVcGRhdGVkKSB7XG4gICAgICAgIGNvbm5lY3RVcGRhdGVkLnVuc3Vic2NyaWJlKClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFttb2RlbD8uaWQoKV0pXG59XG5cbmV4cG9ydCBkZWZhdWx0IGFwaU1ha2VyVXNlVXBkYXRlZEV2ZW50XG4iXX0=
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXVwZGF0ZWQtZXZlbnQuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInVzZS11cGRhdGVkLWV2ZW50LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlDQUFpQztBQUNqQyxPQUFPLEVBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQ25FLE9BQU8sZ0JBQWdCLE1BQU0sVUFBVSxDQUFBO0FBQ3ZDLE9BQU8sV0FBVyxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sUUFBUSxNQUFNLHNDQUFzQyxDQUFBO0FBRTNEOzs7R0FHRztBQUNILE1BQU0sZUFBZSxHQUFHLENBQUMsYUFBYSxFQUFFLEVBQUU7SUFDeEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25CLE9BQU8sRUFBRSxDQUFBO0lBQ1gsQ0FBQztTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN0QyxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUN4QixDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDM0QsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQzFELENBQUE7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLG1CQUFtQixHQUFHLENBQUMsYUFBYSxFQUFFLEVBQUU7SUFDNUMsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFBO0lBRXJCLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUMvQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFBO0lBQ2hDLENBQUMsQ0FBQyxDQUFBO0lBRUYsT0FBTyxVQUFVLENBQUE7QUFDbkIsQ0FBQyxDQUFBO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHVCQUF1QixHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLEVBQUU7SUFDL0QsTUFBTSxFQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLFNBQVMsRUFBQyxHQUFHLEtBQUssQ0FBQTtJQUNsRSxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFakMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDakcsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUE7SUFFeEQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ3BDLElBQUksT0FBTyxRQUFRLElBQUksUUFBUSxFQUFFLENBQUM7WUFDaEMsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUNsRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUN4QyxDQUFDO0lBQ0gsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUVkLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBQyxnQkFBZ0IsRUFBQyxDQUFDLENBQUE7SUFFaEMsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFO1FBQ2hELElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE9BQU07UUFDUixDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUMvQixDQUFDO2FBQU0sQ0FBQztZQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDeEIsQ0FBQztJQUNILENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUVOLGVBQWUsQ0FBQyxHQUFHLEVBQUU7UUFDbkIsTUFBTSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFBO1FBQ2pELE1BQU0sY0FBYyxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRWpELE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNsRCxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksY0FBYyxDQUFDLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDaEIsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUE7Z0JBQzdFLENBQUM7Z0JBRUQsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7Z0JBQ3pDLE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDcEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO1FBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM5QyxJQUFJLE9BQU8sSUFBSSxrQkFBa0IsRUFBRSxDQUFDO2dCQUNsQyxPQUFNO1lBQ1IsQ0FBQztZQUVELE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtZQUNoRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxpQkFBaUIsQ0FBQTtZQUUvQyxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixpQkFBaUIsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQTtZQUNoRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFaEMsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRTtRQUN6QixNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO1lBQ2xFLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ25FLENBQUM7WUFFRCxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUNqQyxDQUFDLENBQUMsQ0FBQTtRQUVGLGNBQWMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBQzdCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUNSLENBQUMsQ0FBQTtBQUVELGVBQWUsdUJBQXVCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCB7dXNlQ2FsbGJhY2ssIHVzZUxheW91dEVmZmVjdCwgdXNlTWVtbywgdXNlUmVmfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IGRlYm91bmNlRnVuY3Rpb24gZnJvbSBcImRlYm91bmNlXCJcbmltcG9ydCBNb2RlbEV2ZW50cyBmcm9tIFwiLi9tb2RlbC1ldmVudHMuanNcIlxuaW1wb3J0IHVzZVNoYXBlIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC91c2Utc2hhcGUuanNcIlxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fG9iamVjdFtdfHVuZGVmaW5lZHxudWxsfSBtb2RlbE9yTW9kZWxzXG4gKiBAcmV0dXJucyB7b2JqZWN0W119XG4gKi9cbmNvbnN0IG1vZGVsc0Zyb21JbnB1dCA9IChtb2RlbE9yTW9kZWxzKSA9PiB7XG4gIGlmICghbW9kZWxPck1vZGVscykge1xuICAgIHJldHVybiBbXVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobW9kZWxPck1vZGVscykpIHtcbiAgICByZXR1cm4gbW9kZWxPck1vZGVscy5maWx0ZXIoQm9vbGVhbilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gW21vZGVsT3JNb2RlbHNdXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdHxvYmplY3RbXXx1bmRlZmluZWR8bnVsbH0gbW9kZWxPck1vZGVsc1xuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuY29uc3QgbW9kZWxzRGVwZW5kZW5jeUtleSA9IChtb2RlbE9yTW9kZWxzKSA9PiBKU09OLnN0cmluZ2lmeShcbiAgbW9kZWxzRnJvbUlucHV0KG1vZGVsT3JNb2RlbHMpLm1hcCgobW9kZWwpID0+IG1vZGVsLmlkKCkpXG4pXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R8b2JqZWN0W118dW5kZWZpbmVkfG51bGx9IG1vZGVsT3JNb2RlbHNcbiAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+fVxuICovXG5jb25zdCBtb2RlbHNCeUlkRnJvbUlucHV0ID0gKG1vZGVsT3JNb2RlbHMpID0+IHtcbiAgY29uc3QgbW9kZWxzQnlJZCA9IHt9XG5cbiAgbW9kZWxzRnJvbUlucHV0KG1vZGVsT3JNb2RlbHMpLmZvckVhY2goKG1vZGVsKSA9PiB7XG4gICAgbW9kZWxzQnlJZFttb2RlbC5pZCgpXSA9IG1vZGVsXG4gIH0pXG5cbiAgcmV0dXJuIG1vZGVsc0J5SWRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0W119IG1vZGVsXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvblVwZGF0ZWRcbiAqIEBwYXJhbSB7b2JqZWN0fSBbcHJvcHNdXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtwcm9wcy5hY3RpdmVdXG4gKiBAcGFyYW0ge251bWJlcn0gW3Byb3BzLmRlYm91bmNlXVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3Byb3BzLm9uQ29ubmVjdGVkXVxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmNvbnN0IGFwaU1ha2VyVXNlVXBkYXRlZEV2ZW50ID0gKG1vZGVsLCBvblVwZGF0ZWQsIHByb3BzID0ge30pID0+IHtcbiAgY29uc3Qge2FjdGl2ZSA9IHRydWUsIGRlYm91bmNlLCBvbkNvbm5lY3RlZCwgLi4ucmVzdFByb3BzfSA9IHByb3BzXG4gIGNvbnN0IGNvbm5lY3Rpb25zUmVmID0gdXNlUmVmKHt9KVxuXG4gIGlmIChPYmplY3Qua2V5cyhyZXN0UHJvcHMpLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcHJvcHMgZ2l2ZW4gdG8gdXNlVXBkYXRlZEV2ZW50OiAke09iamVjdC5rZXlzKHJlc3RQcm9wcykuam9pbihcIiwgXCIpfWApXG4gIH1cblxuICBjb25zdCBzID0gdXNlU2hhcGUoe2FjdGl2ZSwgZGVib3VuY2UsIG1vZGVsLCBvblVwZGF0ZWR9KVxuXG4gIGNvbnN0IGRlYm91bmNlQ2FsbGJhY2sgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGRlYm91bmNlID09IFwibnVtYmVyXCIpIHtcbiAgICAgIHJldHVybiBkZWJvdW5jZUZ1bmN0aW9uKHMucC5vblVwZGF0ZWQsIGRlYm91bmNlKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZGVib3VuY2VGdW5jdGlvbihzLnAub25VcGRhdGVkKVxuICAgIH1cbiAgfSwgW2RlYm91bmNlXSlcblxuICBzLnVwZGF0ZU1ldGEoe2RlYm91bmNlQ2FsbGJhY2t9KVxuXG4gIGNvbnN0IG9uVXBkYXRlZENhbGxiYWNrID0gdXNlQ2FsbGJhY2soKC4uLmFyZ3MpID0+IHtcbiAgICBpZiAoIXMucC5hY3RpdmUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChzLnAuZGVib3VuY2UpIHtcbiAgICAgIHMubS5kZWJvdW5jZUNhbGxiYWNrKC4uLmFyZ3MpXG4gICAgfSBlbHNlIHtcbiAgICAgIHMucC5vblVwZGF0ZWQoLi4uYXJncylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudENvbm5lY3Rpb25zID0gY29ubmVjdGlvbnNSZWYuY3VycmVudFxuICAgIGNvbnN0IG5leHRNb2RlbHNCeUlkID0gbW9kZWxzQnlJZEZyb21JbnB1dChtb2RlbClcblxuICAgIE9iamVjdC5rZXlzKGN1cnJlbnRDb25uZWN0aW9ucykuZm9yRWFjaCgobW9kZWxJZCkgPT4ge1xuICAgICAgaWYgKCEobW9kZWxJZCBpbiBuZXh0TW9kZWxzQnlJZCkpIHtcbiAgICAgICAgaWYgKG9uQ29ubmVjdGVkKSB7XG4gICAgICAgICAgY3VycmVudENvbm5lY3Rpb25zW21vZGVsSWRdLmV2ZW50cy5yZW1vdmVMaXN0ZW5lcihcImNvbm5lY3RlZFwiLCBvbkNvbm5lY3RlZClcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRDb25uZWN0aW9uc1ttb2RlbElkXS51bnN1YnNjcmliZSgpXG4gICAgICAgIGRlbGV0ZSBjdXJyZW50Q29ubmVjdGlvbnNbbW9kZWxJZF1cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgT2JqZWN0LmtleXMobmV4dE1vZGVsc0J5SWQpLmZvckVhY2goKG1vZGVsSWQpID0+IHtcbiAgICAgIGlmIChtb2RlbElkIGluIGN1cnJlbnRDb25uZWN0aW9ucykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdXBkYXRlZENvbm5lY3Rpb24gPSBNb2RlbEV2ZW50cy5jb25uZWN0VXBkYXRlZChuZXh0TW9kZWxzQnlJZFttb2RlbElkXSwgb25VcGRhdGVkQ2FsbGJhY2spXG4gICAgICBjdXJyZW50Q29ubmVjdGlvbnNbbW9kZWxJZF0gPSB1cGRhdGVkQ29ubmVjdGlvblxuXG4gICAgICBpZiAob25Db25uZWN0ZWQpIHtcbiAgICAgICAgdXBkYXRlZENvbm5lY3Rpb24uZXZlbnRzLmFkZExpc3RlbmVyKFwiY29ubmVjdGVkXCIsIG9uQ29ubmVjdGVkKVxuICAgICAgfVxuICAgIH0pXG4gIH0sIFttb2RlbHNEZXBlbmRlbmN5S2V5KG1vZGVsKV0pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+ICgpID0+IHtcbiAgICBPYmplY3QudmFsdWVzKGNvbm5lY3Rpb25zUmVmLmN1cnJlbnQpLmZvckVhY2goKHVwZGF0ZWRDb25uZWN0aW9uKSA9PiB7XG4gICAgICBpZiAob25Db25uZWN0ZWQpIHtcbiAgICAgICAgdXBkYXRlZENvbm5lY3Rpb24uZXZlbnRzLnJlbW92ZUxpc3RlbmVyKFwiY29ubmVjdGVkXCIsIG9uQ29ubmVjdGVkKVxuICAgICAgfVxuXG4gICAgICB1cGRhdGVkQ29ubmVjdGlvbi51bnN1YnNjcmliZSgpXG4gICAgfSlcblxuICAgIGNvbm5lY3Rpb25zUmVmLmN1cnJlbnQgPSB7fVxuICB9LCBbXSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXBpTWFrZXJVc2VVcGRhdGVkRXZlbnRcbiJdfQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kaspernj/api-maker",
3
3
  "type": "module",
4
- "version": "1.0.2105",
4
+ "version": "1.0.2106",
5
5
  "description": "My new module",
6
6
  "files": [
7
7
  "build/**"