@jobber/components 9.16.8 → 9.16.9

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,7 +1,3 @@
1
1
  type MediaQuery = `(${string}:${string})`;
2
- export declare const mediaQueryStore: {
3
- subscribe(onChange: () => void, query: MediaQuery): () => void;
4
- getSnapshot(query: MediaQuery): () => boolean;
5
- };
6
2
  export declare function useMediaQuery(query: MediaQuery): boolean;
7
3
  export {};
@@ -3,16 +3,42 @@
3
3
  var React = require('react');
4
4
  var DataList_const = require('./DataList.const-cjs.js');
5
5
 
6
+ const queryStores = new Map();
7
+ function createQueryStore(query) {
8
+ const mql = window.matchMedia(query);
9
+ const store = {
10
+ mql,
11
+ subscribers: new Set(),
12
+ matches: mql.matches,
13
+ onChange: event => {
14
+ store.matches = event.matches;
15
+ store.subscribers.forEach(notify => notify());
16
+ },
17
+ };
18
+ return store;
19
+ }
6
20
  const mediaQueryStore = {
7
21
  subscribe(onChange, query) {
8
- const matchMedia = window.matchMedia(query);
9
- matchMedia.addEventListener("change", onChange);
22
+ let store = queryStores.get(query);
23
+ if (!store) {
24
+ store = createQueryStore(query);
25
+ store.mql.addEventListener("change", store.onChange);
26
+ queryStores.set(query, store);
27
+ }
28
+ const subscribedStore = store;
29
+ subscribedStore.subscribers.add(onChange);
10
30
  return () => {
11
- matchMedia.removeEventListener("change", onChange);
31
+ subscribedStore.subscribers.delete(onChange);
32
+ if (subscribedStore.subscribers.size === 0) {
33
+ subscribedStore.mql.removeEventListener("change", subscribedStore.onChange);
34
+ if (queryStores.get(query) === subscribedStore) {
35
+ queryStores.delete(query);
36
+ }
37
+ }
12
38
  };
13
39
  },
14
40
  getSnapshot(query) {
15
- return () => window.matchMedia(query).matches;
41
+ return () => { var _a, _b; return (_b = (_a = queryStores.get(query)) === null || _a === void 0 ? void 0 : _a.matches) !== null && _b !== void 0 ? _b : window.matchMedia(query).matches; };
16
42
  },
17
43
  };
18
44
  function useMediaQuery(query) {
@@ -1,16 +1,42 @@
1
1
  import { useCallback, useSyncExternalStore } from 'react';
2
2
  import { f as BREAKPOINT_SIZES } from './DataList.const-es.js';
3
3
 
4
+ const queryStores = new Map();
5
+ function createQueryStore(query) {
6
+ const mql = window.matchMedia(query);
7
+ const store = {
8
+ mql,
9
+ subscribers: new Set(),
10
+ matches: mql.matches,
11
+ onChange: event => {
12
+ store.matches = event.matches;
13
+ store.subscribers.forEach(notify => notify());
14
+ },
15
+ };
16
+ return store;
17
+ }
4
18
  const mediaQueryStore = {
5
19
  subscribe(onChange, query) {
6
- const matchMedia = window.matchMedia(query);
7
- matchMedia.addEventListener("change", onChange);
20
+ let store = queryStores.get(query);
21
+ if (!store) {
22
+ store = createQueryStore(query);
23
+ store.mql.addEventListener("change", store.onChange);
24
+ queryStores.set(query, store);
25
+ }
26
+ const subscribedStore = store;
27
+ subscribedStore.subscribers.add(onChange);
8
28
  return () => {
9
- matchMedia.removeEventListener("change", onChange);
29
+ subscribedStore.subscribers.delete(onChange);
30
+ if (subscribedStore.subscribers.size === 0) {
31
+ subscribedStore.mql.removeEventListener("change", subscribedStore.onChange);
32
+ if (queryStores.get(query) === subscribedStore) {
33
+ queryStores.delete(query);
34
+ }
35
+ }
10
36
  };
11
37
  },
12
38
  getSnapshot(query) {
13
- return () => window.matchMedia(query).matches;
39
+ return () => { var _a, _b; return (_b = (_a = queryStores.get(query)) === null || _a === void 0 ? void 0 : _a.matches) !== null && _b !== void 0 ? _b : window.matchMedia(query).matches; };
14
40
  },
15
41
  };
16
42
  function useMediaQuery(query) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components",
3
- "version": "9.16.8",
3
+ "version": "9.16.9",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -502,7 +502,7 @@
502
502
  "@apollo/client": "^3.7.10",
503
503
  "@csstools/postcss-global-data": "^1.0.3",
504
504
  "@jobber/design": "0.121.1",
505
- "@jobber/hooks": "2.21.1",
505
+ "@jobber/hooks": "2.21.2",
506
506
  "@rollup/plugin-alias": "^5.1.0",
507
507
  "@rollup/plugin-commonjs": "^25.0.7",
508
508
  "@rollup/plugin-node-resolve": "15.2.3",
@@ -553,5 +553,5 @@
553
553
  "> 1%",
554
554
  "IE 10"
555
555
  ],
556
- "gitHead": "48f346d90f5015b50ff0c96d798cce474ae9490e"
556
+ "gitHead": "fbfc7ead780f19390f319ef0d5e604929668be3c"
557
557
  }