@jobber/hooks 2.17.2 → 2.17.3

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 (63) hide show
  1. package/dist/index.js +34 -18
  2. package/dist/useBool/index.js +5 -1
  3. package/dist/useBool/useBool.js +9 -6
  4. package/dist/useBool/useBool.test.js +11 -9
  5. package/dist/useBreakpoints/index.js +20 -2
  6. package/dist/useBreakpoints/mockViewportWidth/index.js +17 -1
  7. package/dist/useBreakpoints/mockViewportWidth/mockViewportWidth.js +6 -2
  8. package/dist/useBreakpoints/mockViewportWidth/mockViewportWidth.test.js +6 -4
  9. package/dist/useBreakpoints/useBreakpoints.js +13 -9
  10. package/dist/useBreakpoints/useBreakpoints.test.js +35 -30
  11. package/dist/useBreakpoints/useMediaQuery.js +9 -5
  12. package/dist/useCallbackRef/index.js +5 -1
  13. package/dist/useCallbackRef/useCallbackRef.js +8 -5
  14. package/dist/useCallbackRef/useCallbackRef.test.js +6 -4
  15. package/dist/useCollectionQuery/index.js +5 -1
  16. package/dist/useCollectionQuery/mdxUtils.js +12 -8
  17. package/dist/useCollectionQuery/test-utilities/index.js +19 -3
  18. package/dist/useCollectionQuery/test-utilities/mocks.js +30 -19
  19. package/dist/useCollectionQuery/test-utilities/queries.js +7 -4
  20. package/dist/useCollectionQuery/test-utilities/utils.js +4 -1
  21. package/dist/useCollectionQuery/uniqueEdges.js +6 -2
  22. package/dist/useCollectionQuery/uniqueNodes.js +4 -1
  23. package/dist/useCollectionQuery/useCollectionQuery.js +34 -27
  24. package/dist/useCollectionQuery/useCollectionQuery.test.js +128 -126
  25. package/dist/useDebounce/index.js +5 -1
  26. package/dist/useDebounce/useDebounce.js +11 -8
  27. package/dist/useDebounce/useDebounce.test.js +70 -42
  28. package/dist/useFocusTrap/index.js +5 -1
  29. package/dist/useFocusTrap/useFocusTrap.js +7 -4
  30. package/dist/useFocusTrap/useFocusTrap.test.js +31 -26
  31. package/dist/useFormState/index.js +5 -1
  32. package/dist/useFormState/useFormState.js +6 -3
  33. package/dist/useInView/index.js +17 -1
  34. package/dist/useInView/useInView.js +9 -6
  35. package/dist/useInView/useInView.test.js +17 -12
  36. package/dist/useIsMounted/index.js +5 -1
  37. package/dist/useIsMounted/useIsMounted.js +8 -5
  38. package/dist/useIsMounted/useIsMounted.test.js +6 -4
  39. package/dist/useLiveAnnounce/index.js +5 -1
  40. package/dist/useLiveAnnounce/useLiveAnnounce.js +7 -4
  41. package/dist/useLiveAnnounce/useLiveAnnounce.test.js +24 -19
  42. package/dist/useOnKeyDown/index.js +5 -1
  43. package/dist/useOnKeyDown/useOnKeyDown.js +6 -3
  44. package/dist/useOnKeyDown/useOnKeyDown.test.js +12 -7
  45. package/dist/useOnMount/index.js +5 -1
  46. package/dist/useOnMount/useOnMount.js +10 -6
  47. package/dist/useOnMount/useOnMount.test.js +6 -4
  48. package/dist/useRefocusOnActivator/index.js +5 -1
  49. package/dist/useRefocusOnActivator/useRefocusOnActivator.js +6 -3
  50. package/dist/useResizeObserver/index.js +17 -1
  51. package/dist/useResizeObserver/useResizeObserver.js +16 -9
  52. package/dist/useSafeLayoutEffect/index.js +5 -1
  53. package/dist/useSafeLayoutEffect/useSafeLayoutEffect.js +7 -4
  54. package/dist/useShowClear/index.js +5 -1
  55. package/dist/useShowClear/useShowClear.js +4 -1
  56. package/dist/useShowClear/useShowClear.test.js +8 -6
  57. package/dist/useStepper/index.js +5 -1
  58. package/dist/useStepper/useStepper.js +15 -9
  59. package/dist/useStepper/useStepper.test.js +17 -15
  60. package/dist/useWindowDimensions/index.js +5 -1
  61. package/dist/useWindowDimensions/useWIndowDimensions.test.js +8 -6
  62. package/dist/useWindowDimensions/useWindowDimensions.js +7 -4
  63. package/package.json +5 -102
@@ -1,15 +1,26 @@
1
- import { MockedProvider } from "@apollo/react-testing";
2
- import React from "react";
3
- import { v1 as uuidv1 } from "uuid";
4
- import { SUBSCRIPTION_QUERY } from "./queries";
5
- export function wrapper(mocks) {
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.subscriptionQueryMock = exports.listQueryWithTotalCountResponseMock = exports.listQueryResponseMock = void 0;
7
+ exports.wrapper = wrapper;
8
+ exports.buildListRequestMock = buildListRequestMock;
9
+ exports.buildSubscriptionRequestMock = buildSubscriptionRequestMock;
10
+ exports.buildListRequestMockForNextPage = buildListRequestMockForNextPage;
11
+ exports.setListQueryMockHasNextPage = setListQueryMockHasNextPage;
12
+ const react_testing_1 = require("@apollo/react-testing");
13
+ const react_1 = __importDefault(require("react"));
14
+ const uuid_1 = require("uuid");
15
+ const queries_1 = require("./queries");
16
+ function wrapper(mocks) {
6
17
  function ApolloMockedProvider({ children, }) {
7
- return (React.createElement(MockedProvider, { addTypename: true, mocks: mocks }, children));
18
+ return (react_1.default.createElement(react_testing_1.MockedProvider, { addTypename: true, mocks: mocks }, children));
8
19
  }
9
20
  return ApolloMockedProvider;
10
21
  }
11
22
  let listQueryHasNextPage = true;
12
- export const listQueryResponseMock = jest.fn(id => {
23
+ exports.listQueryResponseMock = jest.fn(id => {
13
24
  return {
14
25
  data: {
15
26
  conversation: {
@@ -21,14 +32,14 @@ export const listQueryResponseMock = jest.fn(id => {
21
32
  __typename: "SMSMessageEdge",
22
33
  node: {
23
34
  __typename: "SMSMessage",
24
- id: id || uuidv1(),
35
+ id: id || (0, uuid_1.v1)(),
25
36
  },
26
37
  },
27
38
  ],
28
39
  nodes: [
29
40
  {
30
41
  __typename: "SMSMessage",
31
- id: id || uuidv1(),
42
+ id: id || (0, uuid_1.v1)(),
32
43
  },
33
44
  ],
34
45
  pageInfo: {
@@ -41,7 +52,7 @@ export const listQueryResponseMock = jest.fn(id => {
41
52
  },
42
53
  };
43
54
  });
44
- export const listQueryWithTotalCountResponseMock = jest.fn(id => {
55
+ exports.listQueryWithTotalCountResponseMock = jest.fn(id => {
45
56
  return {
46
57
  data: {
47
58
  conversation: {
@@ -53,14 +64,14 @@ export const listQueryWithTotalCountResponseMock = jest.fn(id => {
53
64
  __typename: "SMSMessageEdge",
54
65
  node: {
55
66
  __typename: "SMSMessage",
56
- id: id || uuidv1(),
67
+ id: id || (0, uuid_1.v1)(),
57
68
  },
58
69
  },
59
70
  ],
60
71
  nodes: [
61
72
  {
62
73
  __typename: "SMSMessage",
63
- id: id || uuidv1(),
74
+ id: id || (0, uuid_1.v1)(),
64
75
  },
65
76
  ],
66
77
  pageInfo: {
@@ -74,7 +85,7 @@ export const listQueryWithTotalCountResponseMock = jest.fn(id => {
74
85
  },
75
86
  };
76
87
  });
77
- export const subscriptionQueryMock = jest.fn(id => {
88
+ exports.subscriptionQueryMock = jest.fn(id => {
78
89
  return {
79
90
  data: {
80
91
  conversationMessage: {
@@ -88,7 +99,7 @@ export const subscriptionQueryMock = jest.fn(id => {
88
99
  },
89
100
  };
90
101
  });
91
- export function buildListRequestMock(query, responseMock, id, searchTerm) {
102
+ function buildListRequestMock(query, responseMock, id, searchTerm) {
92
103
  return {
93
104
  request: {
94
105
  query: query,
@@ -97,16 +108,16 @@ export function buildListRequestMock(query, responseMock, id, searchTerm) {
97
108
  result: () => responseMock(id),
98
109
  };
99
110
  }
100
- export function buildSubscriptionRequestMock(id) {
111
+ function buildSubscriptionRequestMock(id) {
101
112
  return {
102
113
  request: {
103
- query: SUBSCRIPTION_QUERY,
114
+ query: queries_1.SUBSCRIPTION_QUERY,
104
115
  },
105
- result: () => subscriptionQueryMock(id),
116
+ result: () => (0, exports.subscriptionQueryMock)(id),
106
117
  delay: 100,
107
118
  };
108
119
  }
109
- export function buildListRequestMockForNextPage(query, responseMock, id) {
120
+ function buildListRequestMockForNextPage(query, responseMock, id) {
110
121
  return {
111
122
  request: {
112
123
  query: query,
@@ -115,6 +126,6 @@ export function buildListRequestMockForNextPage(query, responseMock, id) {
115
126
  result: () => responseMock(id),
116
127
  };
117
128
  }
118
- export function setListQueryMockHasNextPage(hasNextPage) {
129
+ function setListQueryMockHasNextPage(hasNextPage) {
119
130
  listQueryHasNextPage = hasNextPage;
120
131
  }
@@ -1,5 +1,8 @@
1
- import { gql } from "@apollo/client";
2
- export const LIST_QUERY = gql `
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SUBSCRIPTION_QUERY = exports.LIST_QUERY_WITH_TOTAL_COUNT = exports.LIST_QUERY = void 0;
4
+ const client_1 = require("@apollo/client");
5
+ exports.LIST_QUERY = (0, client_1.gql) `
3
6
  query ConversationMessages($cursor: string, $searchTerm: string) {
4
7
  conversation(id: "MQ==") {
5
8
  smsMessages(first: 1, after: $cursor, searchTerm: $searchTerm) {
@@ -21,7 +24,7 @@ export const LIST_QUERY = gql `
21
24
  }
22
25
  }
23
26
  `;
24
- export const LIST_QUERY_WITH_TOTAL_COUNT = gql `
27
+ exports.LIST_QUERY_WITH_TOTAL_COUNT = (0, client_1.gql) `
25
28
  query ConversationMessages($cursor: string, $searchTerm: string) {
26
29
  conversation(id: "MQ==") {
27
30
  smsMessages(first: 1, after: $cursor, searchTerm: $searchTerm) {
@@ -44,7 +47,7 @@ export const LIST_QUERY_WITH_TOTAL_COUNT = gql `
44
47
  }
45
48
  }
46
49
  `;
47
- export const SUBSCRIPTION_QUERY = gql `
50
+ exports.SUBSCRIPTION_QUERY = (0, client_1.gql) `
48
51
  subscription ConversationMessage($conversationId: EncodedId!) {
49
52
  conversationMessage(conversationId: $conversationId) {
50
53
  smsMessage {
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -7,7 +8,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
9
  });
9
10
  };
10
- export function wait() {
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.wait = wait;
13
+ function wait() {
11
14
  return __awaiter(this, arguments, void 0, function* (milliseconds = 0) {
12
15
  yield new Promise(resolve => setTimeout(resolve, milliseconds));
13
16
  });
@@ -1,11 +1,15 @@
1
- export function createEdge(node) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEdge = createEdge;
4
+ exports.uniqueEdges = uniqueEdges;
5
+ function createEdge(node) {
2
6
  return {
3
7
  node: node,
4
8
  cursor: "",
5
9
  __typename: `${node.__typename}Edge`,
6
10
  };
7
11
  }
8
- export function uniqueEdges(edges) {
12
+ function uniqueEdges(edges) {
9
13
  const result = new Map();
10
14
  edges.forEach(edge => {
11
15
  result.set(`${edge.__typename}-${edge.node.__typename}-${edge.node.id}`, edge);
@@ -1,4 +1,7 @@
1
- export function uniqueNodes(nodes) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uniqueNodes = uniqueNodes;
4
+ function uniqueNodes(nodes) {
2
5
  const result = new Map();
3
6
  nodes.forEach(node => {
4
7
  result.set(`${node.__typename}-${node.id}`, node);
@@ -1,20 +1,27 @@
1
- import { useQuery, } from "@apollo/client";
2
- import cloneDeep from "lodash/cloneDeep";
3
- import { useCallback, useEffect, useState } from "react";
4
- import { config } from "@jobber/formatters";
5
- import { uniqueNodes } from "./uniqueNodes";
6
- import { createEdge, uniqueEdges } from "./uniqueEdges";
7
- import { useIsMounted } from "../useIsMounted";
8
- export function useCollectionQuery({ query, queryOptions, getCollectionByPath, subscription, }) {
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useCollectionQuery = useCollectionQuery;
7
+ exports.isAlreadyUpdated = isAlreadyUpdated;
8
+ const client_1 = require("@apollo/client");
9
+ const cloneDeep_1 = __importDefault(require("lodash/cloneDeep"));
10
+ const react_1 = require("react");
11
+ const formatters_1 = require("@jobber/formatters");
12
+ const uniqueNodes_1 = require("./uniqueNodes");
13
+ const uniqueEdges_1 = require("./uniqueEdges");
14
+ const useIsMounted_1 = require("../useIsMounted");
15
+ function useCollectionQuery({ query, queryOptions, getCollectionByPath, subscription, }) {
9
16
  var _a, _b;
10
- const { data, loading, refetch, error, fetchMore, subscribeToMore } = useQuery(query, queryOptions);
11
- const isMounted = useIsMounted();
12
- const [loadingRefresh, setLoadingRefresh] = useState(false);
13
- const [loadingNextPage, setLoadingNextPage] = useState(false);
14
- const [hookError, setHookError] = useState();
17
+ const { data, loading, refetch, error, fetchMore, subscribeToMore } = (0, client_1.useQuery)(query, queryOptions);
18
+ const isMounted = (0, useIsMounted_1.useIsMounted)();
19
+ const [loadingRefresh, setLoadingRefresh] = (0, react_1.useState)(false);
20
+ const [loadingNextPage, setLoadingNextPage] = (0, react_1.useState)(false);
21
+ const [hookError, setHookError] = (0, react_1.useState)();
15
22
  const loadingInitialContent = loading && !loadingRefresh && !loadingNextPage;
16
23
  const isSearching = !!((_a = queryOptions === null || queryOptions === void 0 ? void 0 : queryOptions.variables) === null || _a === void 0 ? void 0 : _a.searchTerm);
17
- const refresh = useCallback(() => {
24
+ const refresh = (0, react_1.useCallback)(() => {
18
25
  if (loadingInitialContent || loadingRefresh) {
19
26
  return;
20
27
  }
@@ -27,7 +34,7 @@ export function useCollectionQuery({ query, queryOptions, getCollectionByPath, s
27
34
  variables: {},
28
35
  updateQuery: (prev, { fetchMoreResult }) => fetchMoreResult || prev,
29
36
  })
30
- .catch(err => config.errorNotifier("Refetch Error", err))
37
+ .catch(err => formatters_1.config.errorNotifier("Refetch Error", err))
31
38
  .finally(() => {
32
39
  if (isMounted.current) {
33
40
  setLoadingRefresh(false);
@@ -40,7 +47,7 @@ export function useCollectionQuery({ query, queryOptions, getCollectionByPath, s
40
47
  refetch,
41
48
  isMounted,
42
49
  ]);
43
- const nextPage = useCallback(() => {
50
+ const nextPage = (0, react_1.useCallback)(() => {
44
51
  var _a;
45
52
  if (loadingInitialContent || loadingRefresh || loadingNextPage) {
46
53
  return;
@@ -58,7 +65,7 @@ export function useCollectionQuery({ query, queryOptions, getCollectionByPath, s
58
65
  updateQuery: (prev, { fetchMoreResult }) => fetchMoreUpdateQueryHandler(prev, fetchMoreResult, getCollectionByPath),
59
66
  })
60
67
  .catch(err => {
61
- config.errorNotifier("FetchMore Error", err);
68
+ formatters_1.config.errorNotifier("FetchMore Error", err);
62
69
  setHookError(err);
63
70
  })
64
71
  .finally(() => {
@@ -76,14 +83,14 @@ export function useCollectionQuery({ query, queryOptions, getCollectionByPath, s
76
83
  getCollectionByPath,
77
84
  isMounted,
78
85
  ]);
79
- useEffect(() => {
86
+ (0, react_1.useEffect)(() => {
80
87
  if (subscription == undefined)
81
88
  return;
82
89
  const subscriptionOptions = subscription.options || {};
83
90
  // Reset this state so we can handle errors from the subscription
84
91
  setHookError(undefined);
85
92
  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 => {
86
- config.errorNotifier("Subscribe to More Error", err);
93
+ formatters_1.config.errorNotifier("Subscribe to More Error", err);
87
94
  setHookError(err);
88
95
  } }));
89
96
  },
@@ -121,7 +128,7 @@ export function useCollectionQuery({ query, queryOptions, getCollectionByPath, s
121
128
  */
122
129
  function fetchMoreUpdateQueryHandler(prev, fetchMoreResult, getCollectionByPath) {
123
130
  const nextCollection = getCollectionByPath(fetchMoreResult);
124
- const output = cloneDeep(prev);
131
+ const output = (0, cloneDeep_1.default)(prev);
125
132
  const outputCollection = getCollectionByPath(output);
126
133
  if (outputCollection === undefined || nextCollection === undefined) {
127
134
  return output;
@@ -132,12 +139,12 @@ function fetchMoreUpdateQueryHandler(prev, fetchMoreResult, getCollectionByPath)
132
139
  if (outputCollection.edges && nextCollection.edges) {
133
140
  outputCollection.edges = getUpdatedEdges(outputCollection.edges, nextCollection.edges);
134
141
  }
135
- Object.assign(outputCollection, Object.assign({ pageInfo: cloneDeep(nextCollection.pageInfo) }, getTotalCount(nextCollection.totalCount)));
142
+ Object.assign(outputCollection, Object.assign({ pageInfo: (0, cloneDeep_1.default)(nextCollection.pageInfo) }, getTotalCount(nextCollection.totalCount)));
136
143
  return output;
137
144
  }
138
145
  function subscribeToMoreHandler(isSearching, prev, getCollectionByPath, subscriptionData, getNodeByPath) {
139
146
  const node = getNodeByPath(subscriptionData);
140
- const output = cloneDeep(prev);
147
+ const output = (0, cloneDeep_1.default)(prev);
141
148
  const outputCollection = getCollectionByPath(output);
142
149
  if (outputCollection == undefined || node == undefined)
143
150
  return output;
@@ -148,9 +155,9 @@ function subscribeToMoreHandler(isSearching, prev, getCollectionByPath, subscrip
148
155
  outputCollection.nodes = getUpdatedNodes(outputCollection.nodes, [node], false);
149
156
  }
150
157
  if (outputCollection.edges) {
151
- outputCollection.edges = getUpdatedEdges(outputCollection.edges, [createEdge(node)], false);
158
+ outputCollection.edges = getUpdatedEdges(outputCollection.edges, [(0, uniqueEdges_1.createEdge)(node)], false);
152
159
  }
153
- Object.assign(outputCollection, Object.assign({ pageInfo: cloneDeep(outputCollection.pageInfo) }, getTotalCount(outputCollection.totalCount, 1)));
160
+ Object.assign(outputCollection, Object.assign({ pageInfo: (0, cloneDeep_1.default)(outputCollection.pageInfo) }, getTotalCount(outputCollection.totalCount, 1)));
154
161
  return output;
155
162
  }
156
163
  function getTotalCount(totalCount, additionalCount = 0) {
@@ -158,7 +165,7 @@ function getTotalCount(totalCount, additionalCount = 0) {
158
165
  ? { totalCount: totalCount + additionalCount }
159
166
  : {};
160
167
  }
161
- export function isAlreadyUpdated(outputCollection, newNode) {
168
+ function isAlreadyUpdated(outputCollection, newNode) {
162
169
  let edgesAlreadyUpdated = true;
163
170
  let nodesAlreadyUpdated = true;
164
171
  if (outputCollection.edges) {
@@ -177,11 +184,11 @@ function getUpdatedEdges(prevEdges, nextEdges, appendToEnd = true) {
177
184
  const newEdges = appendToEnd
178
185
  ? [...prevEdges, ...nextEdges]
179
186
  : [...nextEdges, ...prevEdges];
180
- return uniqueEdges(newEdges);
187
+ return (0, uniqueEdges_1.uniqueEdges)(newEdges);
181
188
  }
182
189
  function getUpdatedNodes(prevNodes, nextNodes, appendToEnd = true) {
183
190
  const newNodes = appendToEnd
184
191
  ? [...prevNodes, ...nextNodes]
185
192
  : [...nextNodes, ...prevNodes];
186
- return uniqueNodes(newNodes);
193
+ return (0, uniqueNodes_1.uniqueNodes)(newNodes);
187
194
  }