@jobber/hooks 2.0.0 → 2.0.1

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.
Files changed (37) hide show
  1. package/dist/index.js +24 -13
  2. package/dist/useAssert/index.js +2 -1
  3. package/dist/useAssert/useAssert.js +2 -1
  4. package/dist/useCollectionQuery/index.js +2 -1
  5. package/dist/useCollectionQuery/mdxUtils.js +19 -7
  6. package/dist/useCollectionQuery/test-utilities/index.js +17 -6
  7. package/dist/useCollectionQuery/test-utilities/mocks.d.ts +3 -3
  8. package/dist/useCollectionQuery/test-utilities/mocks.js +17 -17
  9. package/dist/useCollectionQuery/test-utilities/queries.js +57 -9
  10. package/dist/useCollectionQuery/test-utilities/utils.js +4 -38
  11. package/dist/useCollectionQuery/uniqueEdges.js +5 -4
  12. package/dist/useCollectionQuery/uniqueNodes.js +4 -3
  13. package/dist/useCollectionQuery/useCollectionQuery.d.ts +2 -2
  14. package/dist/useCollectionQuery/useCollectionQuery.js +60 -101
  15. package/dist/useCollectionQuery/useCollectionQuery.test.js +240 -438
  16. package/dist/useFocusTrap/index.js +2 -1
  17. package/dist/useFocusTrap/useFocusTrap.js +11 -10
  18. package/dist/useFocusTrap/useFocusTrap.test.js +19 -20
  19. package/dist/useFormState/index.js +2 -1
  20. package/dist/useFormState/useFormState.js +5 -20
  21. package/dist/useIsMounted/index.js +2 -1
  22. package/dist/useIsMounted/useIsMounted.js +5 -4
  23. package/dist/useIsMounted/useIsMounted.test.js +8 -8
  24. package/dist/useLiveAnnounce/index.js +2 -1
  25. package/dist/useLiveAnnounce/useLiveAnnounce.js +9 -24
  26. package/dist/useLiveAnnounce/useLiveAnnounce.test.js +36 -97
  27. package/dist/useOnKeyDown/index.js +2 -1
  28. package/dist/useOnKeyDown/useOnKeyDown.d.ts +2 -2
  29. package/dist/useOnKeyDown/useOnKeyDown.js +7 -6
  30. package/dist/useOnKeyDown/useOnKeyDown.test.js +9 -10
  31. package/dist/usePasswordStrength/index.js +2 -1
  32. package/dist/usePasswordStrength/usePasswordStrength.js +9 -8
  33. package/dist/useRefocusOnActivator/index.js +2 -1
  34. package/dist/useRefocusOnActivator/useRefocusOnActivator.js +5 -4
  35. package/dist/useResizeObserver/index.js +15 -4
  36. package/dist/useResizeObserver/useResizeObserver.js +20 -36
  37. package/package.json +4 -4
@@ -1,53 +1,22 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __read = (this && this.__read) || function (o, n) {
14
- var m = typeof Symbol === "function" && o[Symbol.iterator];
15
- if (!m) return o;
16
- var i = m.call(o), r, ar = [], e;
17
- try {
18
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
- }
20
- catch (error) { e = { error: error }; }
21
- finally {
22
- try {
23
- if (r && !r.done && (m = i["return"])) m.call(i);
24
- }
25
- finally { if (e) throw e.error; }
26
- }
27
- return ar;
28
- };
29
- var __spread = (this && this.__spread) || function () {
30
- for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
31
- return ar;
32
- };
33
2
  Object.defineProperty(exports, "__esModule", { value: true });
34
- var client_1 = require("@apollo/client");
35
- var lodash_1 = require("lodash");
36
- var react_1 = require("react");
37
- var formatters_1 = require("@jobber/formatters");
38
- var uniqueNodes_1 = require("./uniqueNodes");
39
- var uniqueEdges_1 = require("./uniqueEdges");
40
- var useIsMounted_1 = require("../useIsMounted");
41
- function useCollectionQuery(_a) {
42
- var query = _a.query, queryOptions = _a.queryOptions, getCollectionByPath = _a.getCollectionByPath, subscription = _a.subscription;
43
- var _b, _c;
44
- var _d = client_1.useQuery(query, queryOptions), data = _d.data, loading = _d.loading, refetch = _d.refetch, error = _d.error, fetchMore = _d.fetchMore, subscribeToMore = _d.subscribeToMore;
45
- var isMounted = useIsMounted_1.useIsMounted();
46
- var _e = __read(react_1.useState(false), 2), loadingRefresh = _e[0], setLoadingRefresh = _e[1];
47
- var _f = __read(react_1.useState(false), 2), loadingNextPage = _f[0], setLoadingNextPage = _f[1];
48
- var loadingInitialContent = loading && !loadingRefresh && !loadingNextPage;
49
- var isSearching = !!((_b = queryOptions === null || queryOptions === void 0 ? void 0 : queryOptions.variables) === null || _b === void 0 ? void 0 : _b.searchTerm);
50
- var refresh = react_1.useCallback(function () {
3
+ exports.isAlreadyUpdated = exports.useCollectionQuery = void 0;
4
+ const client_1 = require("@apollo/client");
5
+ const lodash_1 = require("lodash");
6
+ const react_1 = require("react");
7
+ const formatters_1 = require("@jobber/formatters");
8
+ const uniqueNodes_1 = require("./uniqueNodes");
9
+ const uniqueEdges_1 = require("./uniqueEdges");
10
+ const useIsMounted_1 = require("../useIsMounted");
11
+ function useCollectionQuery({ query, queryOptions, getCollectionByPath, subscription, }) {
12
+ var _a, _b;
13
+ const { data, loading, refetch, error, fetchMore, subscribeToMore } = (0, client_1.useQuery)(query, queryOptions);
14
+ const isMounted = (0, useIsMounted_1.useIsMounted)();
15
+ const [loadingRefresh, setLoadingRefresh] = (0, react_1.useState)(false);
16
+ const [loadingNextPage, setLoadingNextPage] = (0, react_1.useState)(false);
17
+ const loadingInitialContent = loading && !loadingRefresh && !loadingNextPage;
18
+ const isSearching = !!((_a = queryOptions === null || queryOptions === void 0 ? void 0 : queryOptions.variables) === null || _a === void 0 ? void 0 : _a.searchTerm);
19
+ const refresh = (0, react_1.useCallback)(() => {
51
20
  if (loadingInitialContent || loadingRefresh) {
52
21
  return;
53
22
  }
@@ -58,13 +27,10 @@ function useCollectionQuery(_a) {
58
27
  // These changes can be reverted once we can update to version 3.4
59
28
  // (the current release candidate)
60
29
  variables: {},
61
- updateQuery: function (prev, _a) {
62
- var fetchMoreResult = _a.fetchMoreResult;
63
- return fetchMoreResult || prev;
64
- },
30
+ updateQuery: (prev, { fetchMoreResult }) => fetchMoreResult || prev,
65
31
  })
66
- .catch(function (err) { return formatters_1.config.errorNotifier("Refetch Error", err); })
67
- .finally(function () {
32
+ .catch(err => formatters_1.config.errorNotifier("Refetch Error", err))
33
+ .finally(() => {
68
34
  if (isMounted.current) {
69
35
  setLoadingRefresh(false);
70
36
  }
@@ -76,12 +42,12 @@ function useCollectionQuery(_a) {
76
42
  refetch,
77
43
  isMounted,
78
44
  ]);
79
- var nextPage = react_1.useCallback(function () {
45
+ const nextPage = (0, react_1.useCallback)(() => {
80
46
  var _a;
81
47
  if (loadingInitialContent || loadingRefresh || loadingNextPage) {
82
48
  return;
83
49
  }
84
- var pageInfo = (_a = getCollectionByPath(data)) === null || _a === void 0 ? void 0 : _a.pageInfo;
50
+ const pageInfo = (_a = getCollectionByPath(data)) === null || _a === void 0 ? void 0 : _a.pageInfo;
85
51
  if (!pageInfo || !pageInfo.hasNextPage) {
86
52
  return;
87
53
  }
@@ -90,13 +56,10 @@ function useCollectionQuery(_a) {
90
56
  variables: {
91
57
  cursor: pageInfo.endCursor,
92
58
  },
93
- updateQuery: function (prev, _a) {
94
- var fetchMoreResult = _a.fetchMoreResult;
95
- return fetchMoreUpdateQueryHandler(prev, fetchMoreResult, getCollectionByPath);
96
- },
59
+ updateQuery: (prev, { fetchMoreResult }) => fetchMoreUpdateQueryHandler(prev, fetchMoreResult, getCollectionByPath),
97
60
  })
98
- .catch(function (err) { return formatters_1.config.errorNotifier("FetchMore Error", err); })
99
- .finally(function () {
61
+ .catch(err => formatters_1.config.errorNotifier("FetchMore Error", err))
62
+ .finally(() => {
100
63
  if (isMounted.current) {
101
64
  setLoadingNextPage(false);
102
65
  }
@@ -111,27 +74,24 @@ function useCollectionQuery(_a) {
111
74
  getCollectionByPath,
112
75
  isMounted,
113
76
  ]);
114
- react_1.useEffect(function () {
77
+ (0, react_1.useEffect)(() => {
115
78
  if (subscription == undefined)
116
79
  return;
117
- var subscriptionOptions = subscription.options || {};
118
- return subscribeToMore(__assign(__assign({}, subscriptionOptions), { document: subscription.document, updateQuery: function (prev, _a) {
119
- var subscriptionData = _a.subscriptionData;
120
- return subscribeToMoreHandler(isSearching, prev, getCollectionByPath, subscriptionData === null || subscriptionData === void 0 ? void 0 : subscriptionData.data, subscription.getNodeByPath);
121
- }, onError: function (err) { return formatters_1.config.errorNotifier("Subscribe to More Error", err); } }));
80
+ const subscriptionOptions = subscription.options || {};
81
+ return subscribeToMore(Object.assign(Object.assign({}, subscriptionOptions), { document: subscription.document, updateQuery: (prev, { subscriptionData }) => subscribeToMoreHandler(isSearching, prev, getCollectionByPath, subscriptionData === null || subscriptionData === void 0 ? void 0 : subscriptionData.data, subscription.getNodeByPath), onError: err => formatters_1.config.errorNotifier("Subscribe to More Error", err) }));
122
82
  },
123
83
  // Disabling this linter so we can force this only run once. If we didn't
124
84
  // do this we would need to ensure subscription, subscribeToMore, and getNodeByPath
125
85
  // all use useCallback.
126
- [(_c = queryOptions === null || queryOptions === void 0 ? void 0 : queryOptions.variables) === null || _c === void 0 ? void 0 : _c.searchTerm]);
86
+ [(_b = queryOptions === null || queryOptions === void 0 ? void 0 : queryOptions.variables) === null || _b === void 0 ? void 0 : _b.searchTerm]);
127
87
  return {
128
- data: data,
129
- error: error,
130
- refresh: refresh,
131
- loadingRefresh: loadingRefresh,
132
- nextPage: nextPage,
133
- loadingNextPage: loadingNextPage,
134
- loadingInitialContent: loadingInitialContent,
88
+ data,
89
+ error,
90
+ refresh,
91
+ loadingRefresh,
92
+ nextPage,
93
+ loadingNextPage,
94
+ loadingInitialContent,
135
95
  };
136
96
  }
137
97
  exports.useCollectionQuery = useCollectionQuery;
@@ -153,9 +113,9 @@ exports.useCollectionQuery = useCollectionQuery;
153
113
  * makes the `useCollectionQuery` interface more complicated by adding arguments
154
114
  */
155
115
  function fetchMoreUpdateQueryHandler(prev, fetchMoreResult, getCollectionByPath) {
156
- var nextCollection = getCollectionByPath(fetchMoreResult);
157
- var output = lodash_1.cloneDeep(prev);
158
- var outputCollection = getCollectionByPath(output);
116
+ const nextCollection = getCollectionByPath(fetchMoreResult);
117
+ const output = (0, lodash_1.cloneDeep)(prev);
118
+ const outputCollection = getCollectionByPath(output);
159
119
  if (outputCollection === undefined || nextCollection === undefined) {
160
120
  return output;
161
121
  }
@@ -165,13 +125,13 @@ function fetchMoreUpdateQueryHandler(prev, fetchMoreResult, getCollectionByPath)
165
125
  if (outputCollection.edges && nextCollection.edges) {
166
126
  outputCollection.edges = getUpdatedEdges(outputCollection.edges, nextCollection.edges);
167
127
  }
168
- Object.assign(outputCollection, __assign({ pageInfo: lodash_1.cloneDeep(nextCollection.pageInfo) }, getTotalCount(nextCollection.totalCount)));
128
+ Object.assign(outputCollection, Object.assign({ pageInfo: (0, lodash_1.cloneDeep)(nextCollection.pageInfo) }, getTotalCount(nextCollection.totalCount)));
169
129
  return output;
170
130
  }
171
131
  function subscribeToMoreHandler(isSearching, prev, getCollectionByPath, subscriptionData, getNodeByPath) {
172
- var node = getNodeByPath(subscriptionData);
173
- var output = lodash_1.cloneDeep(prev);
174
- var outputCollection = getCollectionByPath(output);
132
+ const node = getNodeByPath(subscriptionData);
133
+ const output = (0, lodash_1.cloneDeep)(prev);
134
+ const outputCollection = getCollectionByPath(output);
175
135
  if (outputCollection == undefined || node == undefined)
176
136
  return output;
177
137
  if (isAlreadyUpdated(outputCollection, node) || isSearching) {
@@ -181,42 +141,41 @@ function subscribeToMoreHandler(isSearching, prev, getCollectionByPath, subscrip
181
141
  outputCollection.nodes = getUpdatedNodes(outputCollection.nodes, [node], false);
182
142
  }
183
143
  if (outputCollection.edges) {
184
- outputCollection.edges = getUpdatedEdges(outputCollection.edges, [uniqueEdges_1.createEdge(node)], false);
144
+ outputCollection.edges = getUpdatedEdges(outputCollection.edges, [(0, uniqueEdges_1.createEdge)(node)], false);
185
145
  }
186
- Object.assign(outputCollection, __assign({ pageInfo: lodash_1.cloneDeep(outputCollection.pageInfo) }, getTotalCount(outputCollection.totalCount, 1)));
146
+ Object.assign(outputCollection, Object.assign({ pageInfo: (0, lodash_1.cloneDeep)(outputCollection.pageInfo) }, getTotalCount(outputCollection.totalCount, 1)));
187
147
  return output;
188
148
  }
189
- function getTotalCount(totalCount, additionalCount) {
190
- if (additionalCount === void 0) { additionalCount = 0; }
149
+ function getTotalCount(totalCount, additionalCount = 0) {
191
150
  return totalCount !== undefined
192
151
  ? { totalCount: totalCount + additionalCount }
193
152
  : {};
194
153
  }
195
154
  function isAlreadyUpdated(outputCollection, newNode) {
196
- var edgesAlreadyUpdated = true;
197
- var nodesAlreadyUpdated = true;
155
+ let edgesAlreadyUpdated = true;
156
+ let nodesAlreadyUpdated = true;
198
157
  if (outputCollection.edges) {
199
- edgesAlreadyUpdated = outputCollection.edges.some(function (edge) {
158
+ edgesAlreadyUpdated = outputCollection.edges.some(edge => {
200
159
  return edge.node.id === newNode.id;
201
160
  });
202
161
  }
203
162
  if (outputCollection.nodes) {
204
- nodesAlreadyUpdated = outputCollection.nodes.some(function (node) {
163
+ nodesAlreadyUpdated = outputCollection.nodes.some(node => {
205
164
  return node.id === newNode.id;
206
165
  });
207
166
  }
208
167
  return edgesAlreadyUpdated && nodesAlreadyUpdated;
209
168
  }
210
169
  exports.isAlreadyUpdated = isAlreadyUpdated;
211
- function getUpdatedEdges(prevEdges, nextEdges, appendToEnd) {
212
- if (appendToEnd === void 0) { appendToEnd = true; }
213
- var newEdges = appendToEnd
214
- ? __spread(prevEdges, nextEdges) : __spread(nextEdges, prevEdges);
215
- return uniqueEdges_1.uniqueEdges(newEdges);
170
+ function getUpdatedEdges(prevEdges, nextEdges, appendToEnd = true) {
171
+ const newEdges = appendToEnd
172
+ ? [...prevEdges, ...nextEdges]
173
+ : [...nextEdges, ...prevEdges];
174
+ return (0, uniqueEdges_1.uniqueEdges)(newEdges);
216
175
  }
217
- function getUpdatedNodes(prevNodes, nextNodes, appendToEnd) {
218
- if (appendToEnd === void 0) { appendToEnd = true; }
219
- var newNodes = appendToEnd
220
- ? __spread(prevNodes, nextNodes) : __spread(nextNodes, prevNodes);
221
- return uniqueNodes_1.uniqueNodes(newNodes);
176
+ function getUpdatedNodes(prevNodes, nextNodes, appendToEnd = true) {
177
+ const newNodes = appendToEnd
178
+ ? [...prevNodes, ...nextNodes]
179
+ : [...nextNodes, ...prevNodes];
180
+ return (0, uniqueNodes_1.uniqueNodes)(newNodes);
222
181
  }