@panneau/core 3.0.119 → 3.0.130

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.
package/lib/hooks.js CHANGED
@@ -1,7 +1,5 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var react = require('react');
6
4
  var core = require('@panneau/core');
7
5
  var utils = require('@panneau/core/utils');
@@ -16,41 +14,11 @@ var isArray = require('lodash/isArray');
16
14
  var isObject = require('lodash/isObject');
17
15
  var isString = require('lodash/isString');
18
16
  var contexts = require('@panneau/core/contexts');
17
+ var uniqBy = require('lodash/uniqBy');
19
18
  var reactIntl = require('react-intl');
20
19
  var dayjs = require('dayjs');
21
20
  var cssMediaquery = require('css-mediaquery');
22
21
 
23
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
24
-
25
- function _interopNamespace(e) {
26
- if (e && e.__esModule) return e;
27
- var n = Object.create(null);
28
- if (e) {
29
- Object.keys(e).forEach(function (k) {
30
- if (k !== 'default') {
31
- var d = Object.getOwnPropertyDescriptor(e, k);
32
- Object.defineProperty(n, k, d.get ? d : {
33
- enumerable: true,
34
- get: function () { return e[k]; }
35
- });
36
- }
37
- });
38
- }
39
- n["default"] = e;
40
- return Object.freeze(n);
41
- }
42
-
43
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
44
- var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
45
- var _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);
46
- var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
47
- var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
48
- var get__default = /*#__PURE__*/_interopDefaultLegacy(get);
49
- var isArray__default = /*#__PURE__*/_interopDefaultLegacy(isArray);
50
- var isObject__default = /*#__PURE__*/_interopDefaultLegacy(isObject);
51
- var isString__default = /*#__PURE__*/_interopDefaultLegacy(isString);
52
- var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
53
-
54
22
  var useAnimationFrame = function useAnimationFrame(onFrame) {
55
23
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
56
24
  _ref$disabled = _ref.disabled,
@@ -85,9 +53,9 @@ var useFormattedDate = function useFormattedDate() {
85
53
  _ref$showToday = _ref.showToday,
86
54
  showToday = _ref$showToday === void 0 ? true : _ref$showToday;
87
55
  var intl = reactIntl.useIntl();
88
- var today = dayjs__default["default"]();
56
+ var today = dayjs();
89
57
  return react.useCallback(function (date) {
90
- var dateToFormat = isString__default["default"](date) ? dayjs__default["default"](date) : date;
58
+ var dateToFormat = isString(date) ? dayjs(date) : date;
91
59
  if (showToday && dateToFormat.format('YYYY-MM-DD') === today.format('YYYY-MM-DD')) {
92
60
  return intl.formatMessage({
93
61
  "id": "v4Qtl9",
@@ -97,7 +65,7 @@ var useFormattedDate = function useFormattedDate() {
97
65
  }]
98
66
  });
99
67
  }
100
- return intl.formatDate(dayjs__default["default"](date).toDate(), _objectSpread__default["default"]({
68
+ return intl.formatDate(dayjs(date).toDate(), _objectSpread({
101
69
  year: 'numeric',
102
70
  month: 'long',
103
71
  day: '2-digit'
@@ -113,9 +81,9 @@ var useFormattedTime = function useFormattedTime() {
113
81
  _ref2$timeGap = _ref2.timeGap,
114
82
  timeGap = _ref2$timeGap === void 0 ? 2 : _ref2$timeGap;
115
83
  var intl = reactIntl.useIntl();
116
- var now = dayjs__default["default"]();
84
+ var now = dayjs();
117
85
  return react.useCallback(function (date) {
118
- var dateToFormat = isString__default["default"](date) ? dayjs__default["default"](date) : date;
86
+ var dateToFormat = isString(date) ? dayjs(date) : date;
119
87
  if (showNow && dateToFormat.format('YYYY-MM-DD') === now.format('YYYY-MM-DD') && dateToFormat.hour() === now.hour() && dateToFormat.minute() > now.minute() - timeGap && dateToFormat.minute() < now.minute() + timeGap) {
120
88
  return intl.formatMessage({
121
89
  "id": "3na7F8",
@@ -125,7 +93,7 @@ var useFormattedTime = function useFormattedTime() {
125
93
  }]
126
94
  });
127
95
  }
128
- return intl.formatTime(dateToFormat.toDate(), _objectSpread__default["default"]({
96
+ return intl.formatTime(dateToFormat.toDate(), _objectSpread({
129
97
  hour: 'numeric',
130
98
  minute: 'numeric'
131
99
  }, format));
@@ -143,22 +111,22 @@ var getFieldsPropsFromFields = function getFieldsPropsFromFields(fields, _ref) {
143
111
  var value = _ref.value,
144
112
  errors = _ref.errors,
145
113
  _onChange = _ref.onChange,
146
- props = _objectWithoutProperties__default["default"](_ref, _excluded$1);
114
+ props = _objectWithoutProperties(_ref, _excluded$1);
147
115
  var locales = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
148
116
  return fields.reduce(function (allFields, field) {
149
- var _ref2 = isObject__default["default"](field) ? field : {},
117
+ var _ref2 = isObject(field) ? field : {},
150
118
  _ref2$name = _ref2.name,
151
- name = _ref2$name === void 0 ? isString__default["default"](field) ? field : null : _ref2$name,
119
+ name = _ref2$name === void 0 ? isString(field) ? field : null : _ref2$name,
152
120
  _ref2$component = _ref2.component,
153
121
  component = _ref2$component === void 0 ? null : _ref2$component;
154
122
  var fieldErrors = errors !== null ? errors[name] || [] : [];
155
123
  var localizedErrors = component === 'localized' ? (locales || []).reduce(function (previousErrors, locale) {
156
- var items = errors !== null ? get__default["default"](errors, "".concat(name, ".").concat(locale), []) || [] : [];
157
- var finalItems = isArray__default["default"](items) ? items : [items];
158
- var finalPrevious = isArray__default["default"](previousErrors) ? previousErrors : [];
159
- return [].concat(_toConsumableArray__default["default"](finalPrevious), _toConsumableArray__default["default"](finalItems));
124
+ var items = errors !== null ? get(errors, "".concat(name, ".").concat(locale), []) || [] : [];
125
+ var finalItems = isArray(items) ? items : [items];
126
+ var finalPrevious = isArray(previousErrors) ? previousErrors : [];
127
+ return [].concat(_toConsumableArray(finalPrevious), _toConsumableArray(finalItems));
160
128
  }, fieldErrors) : fieldErrors;
161
- return [].concat(_toConsumableArray__default["default"](allFields), [_objectSpread__default["default"](_objectSpread__default["default"]({}, isObject__default["default"](field) ? field : null), {}, {
129
+ return [].concat(_toConsumableArray(allFields), [_objectSpread(_objectSpread({}, isObject(field) ? field : null), {}, {
162
130
  name: name,
163
131
  component: component,
164
132
  value: value !== null ? value[name] || null : null,
@@ -206,15 +174,15 @@ var useForm = function useForm() {
206
174
  _opts$locales = opts.locales,
207
175
  locales = _opts$locales === void 0 ? [] : _opts$locales;
208
176
  var _useState = react.useState(initialValue || providedValue),
209
- _useState2 = _slicedToArray__default["default"](_useState, 2),
177
+ _useState2 = _slicedToArray(_useState, 2),
210
178
  stateValue = _useState2[0],
211
179
  setStateValue = _useState2[1];
212
180
  var _useState3 = react.useState(initialErrors || providedErrors),
213
- _useState4 = _slicedToArray__default["default"](_useState3, 2),
181
+ _useState4 = _slicedToArray(_useState3, 2),
214
182
  stateErrors = _useState4[0],
215
183
  setStateErrors = _useState4[1];
216
184
  var _useState5 = react.useState(initialGeneralError || providedGeneralError),
217
- _useState6 = _slicedToArray__default["default"](_useState5, 2),
185
+ _useState6 = _slicedToArray(_useState5, 2),
218
186
  stateGeneralError = _useState6[0],
219
187
  setStateGeneralError = _useState6[1];
220
188
  var _useState7 = react.useState({
@@ -222,11 +190,11 @@ var useForm = function useForm() {
222
190
  loading: false,
223
191
  error: false
224
192
  }),
225
- _useState8 = _slicedToArray__default["default"](_useState7, 2),
193
+ _useState8 = _slicedToArray(_useState7, 2),
226
194
  requestState = _useState8[0],
227
195
  setRequestState = _useState8[1];
228
196
  var _useState9 = react.useState(null),
229
- _useState10 = _slicedToArray__default["default"](_useState9, 2),
197
+ _useState10 = _slicedToArray(_useState9, 2),
230
198
  response = _useState10[0],
231
199
  setResponse = _useState10[1];
232
200
  var hasProvidedValue = setProvidedValue !== null;
@@ -249,7 +217,7 @@ var useForm = function useForm() {
249
217
  error = _ref3$error === void 0 ? false : _ref3$error;
250
218
  var fieldErrors = errors !== null ? errors[fieldName] || null : null;
251
219
  if (fieldErrors !== null) {
252
- setErrors(_objectSpread__default["default"](_objectSpread__default["default"]({}, errors), {}, _defineProperty__default["default"]({}, fieldName, null)));
220
+ setErrors(_objectSpread(_objectSpread({}, errors), {}, _defineProperty({}, fieldName, null)));
253
221
  }
254
222
  if (!loading && (success !== false || error !== false)) {
255
223
  setRequestState({
@@ -258,7 +226,7 @@ var useForm = function useForm() {
258
226
  error: false
259
227
  });
260
228
  }
261
- setValue(_objectSpread__default["default"](_objectSpread__default["default"]({}, value), {}, _defineProperty__default["default"]({}, fieldName, fieldValue)));
229
+ setValue(_objectSpread(_objectSpread({}, value), {}, _defineProperty({}, fieldName, fieldValue)));
262
230
  }, fieldsKey);
263
231
  var fieldsProps = react.useMemo(function () {
264
232
  return getFieldsPropsFromFields(fields, {
@@ -314,7 +282,7 @@ var useForm = function useForm() {
314
282
  });
315
283
  setGeneralError(null);
316
284
  setErrors(null);
317
- finalPostForm(action, _objectSpread__default["default"](_objectSpread__default["default"]({}, submitValue), {}, {
285
+ finalPostForm(action, _objectSpread(_objectSpread({}, submitValue), {}, {
318
286
  _token: csrfToken
319
287
  })).then(onSubmitSuccess)["catch"](onSubmitError);
320
288
  }, [finalPostForm, action, value]);
@@ -338,7 +306,7 @@ var useForm = function useForm() {
338
306
  } else if (requestState.error) {
339
307
  status = 'error';
340
308
  }
341
- return _objectSpread__default["default"](_objectSpread__default["default"]({
309
+ return _objectSpread(_objectSpread({
342
310
  value: value,
343
311
  setValue: setValue,
344
312
  csrfToken: csrfToken,
@@ -375,21 +343,21 @@ var createObserver = function createObserver(Observer) {
375
343
  }) || null;
376
344
  if (currentSubscriber !== null) {
377
345
  return subscribers.map(function (it) {
378
- return it.element === element && it.callbacks.indexOf(callback) === -1 ? _objectSpread__default["default"](_objectSpread__default["default"]({}, it), {}, {
379
- callbacks: [].concat(_toConsumableArray__default["default"](it.callbacks), [callback])
346
+ return it.element === element && it.callbacks.indexOf(callback) === -1 ? _objectSpread(_objectSpread({}, it), {}, {
347
+ callbacks: [].concat(_toConsumableArray(it.callbacks), [callback])
380
348
  }) : it;
381
349
  }).filter(function (it) {
382
350
  return it.callbacks.length > 0;
383
351
  });
384
352
  }
385
- return [].concat(_toConsumableArray__default["default"](subscribers), [{
353
+ return [].concat(_toConsumableArray(subscribers), [{
386
354
  element: element,
387
355
  callbacks: [callback]
388
356
  }]);
389
357
  };
390
358
  var removeSubscriber = function removeSubscriber(element, callback) {
391
359
  return subscribers.map(function (it) {
392
- return it.element === element ? _objectSpread__default["default"](_objectSpread__default["default"]({}, it), {}, {
360
+ return it.element === element ? _objectSpread(_objectSpread({}, it), {}, {
393
361
  callbacks: it.callbacks.filter(function (subCallback) {
394
362
  return subCallback !== callback;
395
363
  })
@@ -469,7 +437,7 @@ var useObserver = function useObserver(Observer) {
469
437
  _opts$disabled = opts.disabled,
470
438
  disabled = _opts$disabled === void 0 ? false : _opts$disabled;
471
439
  var _useState = react.useState(initialEntry),
472
- _useState2 = _slicedToArray__default["default"](_useState, 2),
440
+ _useState2 = _slicedToArray(_useState, 2),
473
441
  entry = _useState2[0],
474
442
  setEntry = _useState2[1];
475
443
  var nodeRef = react.useRef(null);
@@ -600,7 +568,7 @@ var addFontLoading = function addFontLoading(name) {
600
568
  fontsMap.active = fontsMap.active.filter(function (it) {
601
569
  return it !== name;
602
570
  });
603
- fontsMap.loading = [].concat(_toConsumableArray__default["default"](fontsMap.loading), [name]);
571
+ fontsMap.loading = [].concat(_toConsumableArray(fontsMap.loading), [name]);
604
572
  };
605
573
  var removeFontLoading = function removeFontLoading(name) {
606
574
  fontsMap.loading = fontsMap.loading.filter(function (it) {
@@ -611,24 +579,24 @@ var addFontActive = function addFontActive(name) {
611
579
  fontsMap.loading = fontsMap.loading.filter(function (it) {
612
580
  return it !== name;
613
581
  });
614
- fontsMap.active = [].concat(_toConsumableArray__default["default"](fontsMap.active), [name]);
582
+ fontsMap.active = [].concat(_toConsumableArray(fontsMap.active), [name]);
615
583
  };
616
584
  var useLoadedFonts = function useLoadedFonts(fonts) {
617
585
  var _useState = react.useState(false),
618
- _useState2 = _slicedToArray__default["default"](_useState, 2),
586
+ _useState2 = _slicedToArray(_useState, 2),
619
587
  loaded = _useState2[0],
620
588
  setLoaded = _useState2[1];
621
589
  react.useEffect(function () {
622
590
  var config = fonts.reduce(function (newConfig, font) {
623
- var _ref = isObject__default["default"](font) ? font : {
591
+ var _ref = isObject(font) ? font : {
624
592
  type: 'system',
625
593
  name: font
626
594
  },
627
595
  type = _ref.type,
628
596
  name = _ref.name;
629
597
  if ((type === 'google' || type === 'custom') && !isFontLoading(name) && !isFontActive(name)) {
630
- return _objectSpread__default["default"](_objectSpread__default["default"]({}, newConfig), {}, _defineProperty__default["default"]({}, type, {
631
- families: [].concat(_toConsumableArray__default["default"](newConfig !== null ? (newConfig[type] || {}).families || [] : []), [name])
598
+ return _objectSpread(_objectSpread({}, newConfig), {}, _defineProperty({}, type, {
599
+ families: [].concat(_toConsumableArray(newConfig !== null ? (newConfig[type] || {}).families || [] : []), [name])
632
600
  }));
633
601
  }
634
602
  return newConfig;
@@ -636,10 +604,10 @@ var useLoadedFonts = function useLoadedFonts(fonts) {
636
604
  var hasConfig = config !== null;
637
605
  if (hasConfig && typeof window !== 'undefined') {
638
606
  utils.loadPackage('webfontloader', function () {
639
- return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('webfontloader')); });
607
+ return import('webfontloader');
640
608
  }).then(function (_ref2) {
641
609
  var WebFont = _ref2["default"];
642
- return WebFont.load(_objectSpread__default["default"](_objectSpread__default["default"]({}, config), {}, {
610
+ return WebFont.load(_objectSpread(_objectSpread({}, config), {}, {
643
611
  timeout: 3000,
644
612
  active: function active() {
645
613
  return setLoaded(true);
@@ -694,27 +662,27 @@ var useMediaApi = function useMediaApi() {
694
662
  onCanPlayThough = _ref$onCanPlayThough === void 0 ? null : _ref$onCanPlayThough;
695
663
  var ref = react.useRef(null);
696
664
  var _useState = react.useState(initialMuted),
697
- _useState2 = _slicedToArray__default["default"](_useState, 2),
665
+ _useState2 = _slicedToArray(_useState, 2),
698
666
  muted = _useState2[0],
699
667
  setMuted = _useState2[1];
700
668
  var _useState3 = react.useState(null),
701
- _useState4 = _slicedToArray__default["default"](_useState3, 2),
669
+ _useState4 = _slicedToArray(_useState3, 2),
702
670
  currentTime = _useState4[0],
703
671
  setCurrentTime = _useState4[1];
704
672
  var _useState5 = react.useState(null),
705
- _useState6 = _slicedToArray__default["default"](_useState5, 2),
673
+ _useState6 = _slicedToArray(_useState5, 2),
706
674
  duration = _useState6[0],
707
675
  setDuration = _useState6[1];
708
676
  var _useState7 = react.useState(false),
709
- _useState8 = _slicedToArray__default["default"](_useState7, 2),
677
+ _useState8 = _slicedToArray(_useState7, 2),
710
678
  playing = _useState8[0],
711
679
  setPlaying = _useState8[1];
712
680
  var _useState9 = react.useState(false),
713
- _useState10 = _slicedToArray__default["default"](_useState9, 2),
681
+ _useState10 = _slicedToArray(_useState9, 2),
714
682
  ready = _useState10[0],
715
683
  setReady = _useState10[1];
716
684
  var _useState11 = react.useState(true),
717
- _useState12 = _slicedToArray__default["default"](_useState11, 2),
685
+ _useState12 = _slicedToArray(_useState11, 2),
718
686
  initialPlay = _useState12[0],
719
687
  setInitialPlay = _useState12[1];
720
688
  var progressStepsReached = react.useRef({});
@@ -958,7 +926,7 @@ var useResourceTypeName = function useResourceTypeName(resource) {
958
926
  var useResourceTypeName$1 = useResourceTypeName;
959
927
 
960
928
  var getResource = function getResource(resources, resourceId) {
961
- return resourceId !== null && !isObject__default["default"](resourceId) ? resources.find(function (it) {
929
+ return resourceId !== null && !isObject(resourceId) ? resources.find(function (it) {
962
930
  return it.id === resourceId;
963
931
  }) || null : resourceId;
964
932
  };
@@ -978,7 +946,7 @@ var useResourceUrlGenerator = function useResourceUrlGenerator() {
978
946
  _ref$id = _ref.id,
979
947
  id = _ref$id === void 0 ? null : _ref$id;
980
948
  // console.log('route name', finalRouteName, id, finalParams);
981
- var finalRoute = id !== null ? route("resources.".concat(finalRouteName), _objectSpread__default["default"](_objectSpread__default["default"]({}, finalParams), {}, {
949
+ var finalRoute = id !== null ? route("resources.".concat(finalRouteName), _objectSpread(_objectSpread({}, finalParams), {}, {
982
950
  resource: id
983
951
  })) : null;
984
952
  // console.log('route', finalRoute);
@@ -987,41 +955,34 @@ var useResourceUrlGenerator = function useResourceUrlGenerator() {
987
955
  };
988
956
  var useResourceUrlGenerator$1 = useResourceUrlGenerator;
989
957
 
990
- var useResourceQuery = function useResourceQuery() {
958
+ var useQuery = function useQuery() {
991
959
  var initialBaseQuery = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
992
960
  var paginated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
993
- var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
994
- _ref$forceInitialQuer = _ref.forceInitialQuery,
995
- forceInitialQuery = _ref$forceInitialQuer === void 0 ? false : _ref$forceInitialQuer;
996
961
  var initialQuery = react.useMemo(function () {
997
- return paginated ? _objectSpread__default["default"]({
962
+ return paginated ? _objectSpread({
998
963
  page: 1,
999
964
  count: 10
1000
965
  }, initialBaseQuery) : initialBaseQuery || null;
1001
966
  }, [paginated, initialBaseQuery]);
1002
967
  var _useState = react.useState(initialQuery),
1003
- _useState2 = _slicedToArray__default["default"](_useState, 2),
968
+ _useState2 = _slicedToArray(_useState, 2),
1004
969
  query = _useState2[0],
1005
970
  setQuery = _useState2[1];
1006
971
  react.useEffect(function () {
1007
972
  setQuery(initialQuery);
1008
973
  }, [initialQuery, setQuery]);
1009
974
  var onPageChange = react.useCallback(function (newPage) {
1010
- setQuery(_objectSpread__default["default"](_objectSpread__default["default"]({}, query), {}, {
975
+ setQuery(_objectSpread(_objectSpread({}, query), {}, {
1011
976
  page: newPage || 1
1012
977
  }));
1013
978
  }, [query, setQuery]);
1014
979
  var onQueryChange = react.useCallback(function (newQuery) {
1015
980
  var finalQuery = newQuery !== null ? Object.keys(newQuery).reduce(function (currentQuery, key) {
1016
981
  var val = newQuery[key];
1017
- return val !== null ? _objectSpread__default["default"](_objectSpread__default["default"]({}, currentQuery), {}, _defineProperty__default["default"]({}, key, val)) : currentQuery;
982
+ return val !== null ? _objectSpread(_objectSpread({}, currentQuery), {}, _defineProperty({}, key, val)) : currentQuery;
1018
983
  }, null) : null;
1019
- if (forceInitialQuery) {
1020
- setQuery(_objectSpread__default["default"](_objectSpread__default["default"]({}, initialBaseQuery || null), finalQuery || null));
1021
- } else {
1022
- setQuery(finalQuery);
1023
- }
1024
- }, [query, setQuery, initialBaseQuery, forceInitialQuery]);
984
+ setQuery(_objectSpread(_objectSpread({}, initialQuery || null), finalQuery || null));
985
+ }, [query, setQuery, initialQuery]);
1025
986
  var onQueryReset = react.useCallback(function () {
1026
987
  setQuery(initialQuery);
1027
988
  }, [initialQuery, setQuery]);
@@ -1032,7 +993,7 @@ var useResourceQuery = function useResourceQuery() {
1032
993
  onQueryReset: onQueryReset
1033
994
  };
1034
995
  };
1035
- var useResourceQuery$1 = useResourceQuery;
996
+ var useQuery$1 = useQuery;
1036
997
 
1037
998
  var _excluded = ["width", "height"];
1038
999
  var useScreenSize = function useScreenSize(_ref) {
@@ -1059,7 +1020,7 @@ var useScreenSize = function useScreenSize(_ref) {
1059
1020
 
1060
1021
  // Get matching screens
1061
1022
  var matchingScreens = react.useMemo(function () {
1062
- return _toConsumableArray__default["default"](screens).reverse().filter(function (_ref2) {
1023
+ return _toConsumableArray(screens).reverse().filter(function (_ref2) {
1063
1024
  var _ref2$mediaQuery = _ref2.mediaQuery,
1064
1025
  mediaQuery = _ref2$mediaQuery === void 0 ? null : _ref2$mediaQuery;
1065
1026
  return mediaQuery === null || cssMediaquery.match(mediaQuery, media);
@@ -1067,7 +1028,7 @@ var useScreenSize = function useScreenSize(_ref) {
1067
1028
  }, [screens, media]);
1068
1029
  return {
1069
1030
  screen: matchingScreens.length > 0 ? matchingScreens[0].name : null,
1070
- screens: _toConsumableArray__default["default"](matchingScreens).reverse().map(function (_ref3) {
1031
+ screens: _toConsumableArray(matchingScreens).reverse().map(function (_ref3) {
1071
1032
  var name = _ref3.name;
1072
1033
  return name;
1073
1034
  }),
@@ -1082,7 +1043,7 @@ var useScreenSizeFromElement = function useScreenSizeFromElement() {
1082
1043
  width = _ref4$width === void 0 ? null : _ref4$width,
1083
1044
  _ref4$height = _ref4.height,
1084
1045
  height = _ref4$height === void 0 ? null : _ref4$height,
1085
- opts = _objectWithoutProperties__default["default"](_ref4, _excluded);
1046
+ opts = _objectWithoutProperties(_ref4, _excluded);
1086
1047
  var _useResizeObserver = useResizeObserver(),
1087
1048
  ref = _useResizeObserver.ref,
1088
1049
  contentRect = _useResizeObserver.entry.contentRect;
@@ -1104,7 +1065,7 @@ var useScreenSizeFromElement = function useScreenSizeFromElement() {
1104
1065
  if (finalHeight % 2 === 1) {
1105
1066
  finalHeight -= 1;
1106
1067
  }
1107
- var screenSize = useScreenSize(_objectSpread__default["default"]({
1068
+ var screenSize = useScreenSize(_objectSpread({
1108
1069
  width: finalWidth,
1109
1070
  height: finalHeight,
1110
1071
  landscape: landscape
@@ -1122,7 +1083,7 @@ var getWindowSize = function getWindowSize() {
1122
1083
  };
1123
1084
  var useScreenSizeFromWindow = function useScreenSizeFromWindow(opts) {
1124
1085
  var _useState = react.useState(getWindowSize()),
1125
- _useState2 = _slicedToArray__default["default"](_useState, 2),
1086
+ _useState2 = _slicedToArray(_useState, 2),
1126
1087
  windowSize = _useState2[0],
1127
1088
  setWindowSize = _useState2[1];
1128
1089
  react.useEffect(function () {
@@ -1138,13 +1099,134 @@ var useScreenSizeFromWindow = function useScreenSizeFromWindow(opts) {
1138
1099
  }
1139
1100
  };
1140
1101
  }, [setWindowSize]);
1141
- return useScreenSize(_objectSpread__default["default"](_objectSpread__default["default"]({}, opts), windowSize));
1102
+ return useScreenSize(_objectSpread(_objectSpread({}, opts), windowSize));
1142
1103
  };
1143
1104
 
1144
1105
  var eventsManager = typeof window !== 'undefined' ? new core.EventsManager(window) : null;
1145
1106
  var useWindowEvent = utils.createUseEvent(eventsManager);
1146
1107
  var useWindowEvent$1 = useWindowEvent;
1147
1108
 
1109
+ var useItemSelection = function useItemSelection(_ref) {
1110
+ var _ref$items = _ref.items,
1111
+ items = _ref$items === void 0 ? null : _ref$items,
1112
+ _ref$selectedItems = _ref.selectedItems,
1113
+ initialSelectedItems = _ref$selectedItems === void 0 ? null : _ref$selectedItems,
1114
+ _ref$multiple = _ref.multiple,
1115
+ multiple = _ref$multiple === void 0 ? false : _ref$multiple,
1116
+ _ref$onSelectionChang = _ref.onSelectionChange,
1117
+ onSelectionChange = _ref$onSelectionChang === void 0 ? null : _ref$onSelectionChang;
1118
+ var initialItems = !isArray(initialSelectedItems) && initialSelectedItems !== null ? [initialSelectedItems] : initialSelectedItems;
1119
+ var _useState = react.useState(initialItems),
1120
+ _useState2 = _slicedToArray(_useState, 2),
1121
+ selectedItems = _useState2[0],
1122
+ setSelectedItems = _useState2[1];
1123
+ var onSelectItem = react.useCallback(function (item, index) {
1124
+ var newItems = selectedItems !== null && multiple ? [].concat(_toConsumableArray(selectedItems), [item]) : [item];
1125
+ setSelectedItems(newItems);
1126
+ if (onSelectionChange !== null) {
1127
+ onSelectionChange(newItems, item, index);
1128
+ }
1129
+ }, [selectedItems, onSelectionChange, multiple]);
1130
+ var onDeselectItem = react.useCallback(function (item, index) {
1131
+ var _ref2 = item || {},
1132
+ _ref2$id = _ref2.id,
1133
+ itemId = _ref2$id === void 0 ? null : _ref2$id;
1134
+ var newItems = (selectedItems || []).filter(function (_ref3) {
1135
+ var id = _ref3.id;
1136
+ return id !== itemId;
1137
+ });
1138
+ setSelectedItems(newItems);
1139
+ if (onSelectionChange !== null) {
1140
+ onSelectionChange(multiple ? newItems : null, item, index);
1141
+ }
1142
+ }, [selectedItems, onSelectionChange, multiple]);
1143
+ var onSelectPage = react.useCallback(function () {
1144
+ var nextItems = uniqBy([].concat(_toConsumableArray(items || []), _toConsumableArray(selectedItems || [])), function () {
1145
+ var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1146
+ _ref4$id = _ref4.id,
1147
+ id = _ref4$id === void 0 ? null : _ref4$id;
1148
+ return id;
1149
+ });
1150
+ setSelectedItems(nextItems);
1151
+ if (onSelectionChange !== null) {
1152
+ onSelectionChange(nextItems);
1153
+ }
1154
+ }, [items, selectedItems, setSelectedItems, onSelectionChange]);
1155
+ var onDeselectPage = react.useCallback(function () {
1156
+ var ids = (items || []).map(function () {
1157
+ var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1158
+ _ref5$id = _ref5.id,
1159
+ id = _ref5$id === void 0 ? null : _ref5$id;
1160
+ return id;
1161
+ }).filter(function (id) {
1162
+ return id !== null;
1163
+ });
1164
+ var nextItems = uniqBy((selectedItems || []).filter(function (it) {
1165
+ var _ref6 = it || {},
1166
+ _ref6$id = _ref6.id,
1167
+ id = _ref6$id === void 0 ? null : _ref6$id;
1168
+ return ids.indexOf(id) === -1;
1169
+ }), function () {
1170
+ var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1171
+ _ref7$id = _ref7.id,
1172
+ id = _ref7$id === void 0 ? null : _ref7$id;
1173
+ return id;
1174
+ });
1175
+ setSelectedItems(nextItems);
1176
+ if (onSelectionChange !== null) {
1177
+ onSelectionChange(nextItems);
1178
+ }
1179
+ }, [items, selectedItems, setSelectedItems, onSelectionChange]);
1180
+ var onClearAll = react.useCallback(function () {
1181
+ setSelectedItems([]);
1182
+ if (onSelectionChange !== null) {
1183
+ onSelectionChange([]);
1184
+ }
1185
+ }, [setSelectedItems, onSelectionChange]);
1186
+ react.useEffect(function () {
1187
+ setSelectedItems(initialSelectedItems);
1188
+ }, [initialSelectedItems]);
1189
+ var pageSelected = react.useMemo(function () {
1190
+ var ids = (items || []).map(function () {
1191
+ var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1192
+ _ref8$id = _ref8.id,
1193
+ id = _ref8$id === void 0 ? null : _ref8$id;
1194
+ return id;
1195
+ }).filter(function (id) {
1196
+ return id !== null;
1197
+ });
1198
+ // console.log('selectedItems', selectedItems);
1199
+ var currentPageItems = (selectedItems || []).filter(function (it) {
1200
+ var _ref9 = it || {},
1201
+ _ref9$id = _ref9.id,
1202
+ id = _ref9$id === void 0 ? null : _ref9$id;
1203
+ return ids.indexOf(id) !== -1;
1204
+ });
1205
+ // console.log('currentPageItems', currentPageItems);
1206
+ return currentPageItems.length === (items || []).length;
1207
+ }, [selectedItems, items]);
1208
+
1209
+ // const allSelected = useMemo(
1210
+ // () => selectedItems !== null && selectedItems.length === selectedItemsCount,
1211
+ // [selectedItems, selectedItemsCount],
1212
+ // );
1213
+
1214
+ var countSelected = react.useMemo(function () {
1215
+ return selectedItems !== null && selectedItems.length > 0 ? selectedItems.length : null;
1216
+ }, [selectedItems]);
1217
+ return {
1218
+ onSelectItem: onSelectItem,
1219
+ onDeselectItem: onDeselectItem,
1220
+ onSelectPage: onSelectPage,
1221
+ onDeselectPage: onDeselectPage,
1222
+ onClearAll: onClearAll,
1223
+ pageSelected: pageSelected,
1224
+ count: countSelected,
1225
+ selectedItems: selectedItems
1226
+ };
1227
+ };
1228
+ var useItemSelection$1 = useItemSelection;
1229
+
1148
1230
  exports.getObserver = getObserver;
1149
1231
  exports.useAnimationFrame = useAnimationFrame$1;
1150
1232
  exports.useDocumentEvent = useDocumentEvent$1;
@@ -1153,12 +1235,13 @@ exports.useFormattedDate = useFormattedDate;
1153
1235
  exports.useFormattedTime = useFormattedTime;
1154
1236
  exports.useIntersectionObserver = useIntersectionObserver;
1155
1237
  exports.useIsVisible = useIsVisible$1;
1238
+ exports.useItemSelection = useItemSelection$1;
1156
1239
  exports.useLoadedFonts = useLoadedFonts$1;
1157
1240
  exports.useMediaApi = useMediaApi$1;
1158
1241
  exports.useMediasParser = useMediasParser$1;
1159
1242
  exports.useObserver = useObserver;
1243
+ exports.useQuery = useQuery$1;
1160
1244
  exports.useResizeObserver = useResizeObserver;
1161
- exports.useResourceQuery = useResourceQuery$1;
1162
1245
  exports.useResourceTypeName = useResourceTypeName$1;
1163
1246
  exports.useResourceUrlGenerator = useResourceUrlGenerator$1;
1164
1247
  exports.useScreenSizeFromElement = useScreenSizeFromElement;