@jobber/hooks 2.17.1 → 2.17.2

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