@panneau/core 3.0.126 → 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/es/contexts.js CHANGED
@@ -385,8 +385,18 @@ var modal = PropTypes.shape({
385
385
  name: PropTypes.string
386
386
  });
387
387
  PropTypes.arrayOf(modal);
388
-
389
- //
388
+ var filter = PropTypes.shape({
389
+ id: PropTypes.string,
390
+ component: PropTypes.string
391
+ });
392
+ PropTypes.arrayOf(filter);
393
+ var media = PropTypes.shape({
394
+ id: PropTypes.string.isRequired,
395
+ name: PropTypes.string.isRequired,
396
+ type: PropTypes.string.isRequired,
397
+ thumbnail_url: PropTypes.string
398
+ });
399
+ PropTypes.arrayOf(media);
390
400
 
391
401
  /* eslint-disable react/jsx-props-no-spreading */
392
402
  var DefinitionContext = /*#__PURE__*/React.createContext(null);
package/es/hooks.js CHANGED
@@ -12,6 +12,7 @@ import isArray from 'lodash/isArray';
12
12
  import isObject from 'lodash/isObject';
13
13
  import isString from 'lodash/isString';
14
14
  import { useFieldsManager, usePanneauResources, useResource, useUrlGenerator } from '@panneau/core/contexts';
15
+ import uniqBy from 'lodash/uniqBy';
15
16
  import { useIntl } from 'react-intl';
16
17
  import dayjs from 'dayjs';
17
18
  import { match } from 'css-mediaquery';
@@ -952,12 +953,9 @@ var useResourceUrlGenerator = function useResourceUrlGenerator() {
952
953
  };
953
954
  var useResourceUrlGenerator$1 = useResourceUrlGenerator;
954
955
 
955
- var useResourceQuery = function useResourceQuery() {
956
+ var useQuery = function useQuery() {
956
957
  var initialBaseQuery = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
957
958
  var paginated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
958
- var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
959
- _ref$forceInitialQuer = _ref.forceInitialQuery,
960
- forceInitialQuery = _ref$forceInitialQuer === void 0 ? false : _ref$forceInitialQuer;
961
959
  var initialQuery = useMemo(function () {
962
960
  return paginated ? _objectSpread({
963
961
  page: 1,
@@ -981,12 +979,8 @@ var useResourceQuery = function useResourceQuery() {
981
979
  var val = newQuery[key];
982
980
  return val !== null ? _objectSpread(_objectSpread({}, currentQuery), {}, _defineProperty({}, key, val)) : currentQuery;
983
981
  }, null) : null;
984
- if (forceInitialQuery) {
985
- setQuery(_objectSpread(_objectSpread({}, initialBaseQuery || null), finalQuery || null));
986
- } else {
987
- setQuery(finalQuery);
988
- }
989
- }, [query, setQuery, initialBaseQuery, forceInitialQuery]);
982
+ setQuery(_objectSpread(_objectSpread({}, initialQuery || null), finalQuery || null));
983
+ }, [query, setQuery, initialQuery]);
990
984
  var onQueryReset = useCallback(function () {
991
985
  setQuery(initialQuery);
992
986
  }, [initialQuery, setQuery]);
@@ -997,7 +991,7 @@ var useResourceQuery = function useResourceQuery() {
997
991
  onQueryReset: onQueryReset
998
992
  };
999
993
  };
1000
- var useResourceQuery$1 = useResourceQuery;
994
+ var useQuery$1 = useQuery;
1001
995
 
1002
996
  var _excluded = ["width", "height"];
1003
997
  var useScreenSize = function useScreenSize(_ref) {
@@ -1110,4 +1104,125 @@ var eventsManager = typeof window !== 'undefined' ? new EventsManager(window) :
1110
1104
  var useWindowEvent = createUseEvent(eventsManager);
1111
1105
  var useWindowEvent$1 = useWindowEvent;
1112
1106
 
1113
- export { getObserver, useAnimationFrame$1 as useAnimationFrame, useDocumentEvent$1 as useDocumentEvent, useForm$1 as useForm, useFormattedDate, useFormattedTime, useIntersectionObserver, useIsVisible$1 as useIsVisible, useLoadedFonts$1 as useLoadedFonts, useMediaApi$1 as useMediaApi, useMediasParser$1 as useMediasParser, useObserver, useResizeObserver, useResourceQuery$1 as useResourceQuery, useResourceTypeName$1 as useResourceTypeName, useResourceUrlGenerator$1 as useResourceUrlGenerator, useScreenSizeFromElement, useScreenSizeFromWindow, useWindowEvent$1 as useWindowEvent };
1107
+ var useItemSelection = function useItemSelection(_ref) {
1108
+ var _ref$items = _ref.items,
1109
+ items = _ref$items === void 0 ? null : _ref$items,
1110
+ _ref$selectedItems = _ref.selectedItems,
1111
+ initialSelectedItems = _ref$selectedItems === void 0 ? null : _ref$selectedItems,
1112
+ _ref$multiple = _ref.multiple,
1113
+ multiple = _ref$multiple === void 0 ? false : _ref$multiple,
1114
+ _ref$onSelectionChang = _ref.onSelectionChange,
1115
+ onSelectionChange = _ref$onSelectionChang === void 0 ? null : _ref$onSelectionChang;
1116
+ var initialItems = !isArray(initialSelectedItems) && initialSelectedItems !== null ? [initialSelectedItems] : initialSelectedItems;
1117
+ var _useState = useState(initialItems),
1118
+ _useState2 = _slicedToArray(_useState, 2),
1119
+ selectedItems = _useState2[0],
1120
+ setSelectedItems = _useState2[1];
1121
+ var onSelectItem = useCallback(function (item, index) {
1122
+ var newItems = selectedItems !== null && multiple ? [].concat(_toConsumableArray(selectedItems), [item]) : [item];
1123
+ setSelectedItems(newItems);
1124
+ if (onSelectionChange !== null) {
1125
+ onSelectionChange(newItems, item, index);
1126
+ }
1127
+ }, [selectedItems, onSelectionChange, multiple]);
1128
+ var onDeselectItem = useCallback(function (item, index) {
1129
+ var _ref2 = item || {},
1130
+ _ref2$id = _ref2.id,
1131
+ itemId = _ref2$id === void 0 ? null : _ref2$id;
1132
+ var newItems = (selectedItems || []).filter(function (_ref3) {
1133
+ var id = _ref3.id;
1134
+ return id !== itemId;
1135
+ });
1136
+ setSelectedItems(newItems);
1137
+ if (onSelectionChange !== null) {
1138
+ onSelectionChange(multiple ? newItems : null, item, index);
1139
+ }
1140
+ }, [selectedItems, onSelectionChange, multiple]);
1141
+ var onSelectPage = useCallback(function () {
1142
+ var nextItems = uniqBy([].concat(_toConsumableArray(items || []), _toConsumableArray(selectedItems || [])), function () {
1143
+ var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1144
+ _ref4$id = _ref4.id,
1145
+ id = _ref4$id === void 0 ? null : _ref4$id;
1146
+ return id;
1147
+ });
1148
+ setSelectedItems(nextItems);
1149
+ if (onSelectionChange !== null) {
1150
+ onSelectionChange(nextItems);
1151
+ }
1152
+ }, [items, selectedItems, setSelectedItems, onSelectionChange]);
1153
+ var onDeselectPage = useCallback(function () {
1154
+ var ids = (items || []).map(function () {
1155
+ var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1156
+ _ref5$id = _ref5.id,
1157
+ id = _ref5$id === void 0 ? null : _ref5$id;
1158
+ return id;
1159
+ }).filter(function (id) {
1160
+ return id !== null;
1161
+ });
1162
+ var nextItems = uniqBy((selectedItems || []).filter(function (it) {
1163
+ var _ref6 = it || {},
1164
+ _ref6$id = _ref6.id,
1165
+ id = _ref6$id === void 0 ? null : _ref6$id;
1166
+ return ids.indexOf(id) === -1;
1167
+ }), function () {
1168
+ var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1169
+ _ref7$id = _ref7.id,
1170
+ id = _ref7$id === void 0 ? null : _ref7$id;
1171
+ return id;
1172
+ });
1173
+ setSelectedItems(nextItems);
1174
+ if (onSelectionChange !== null) {
1175
+ onSelectionChange(nextItems);
1176
+ }
1177
+ }, [items, selectedItems, setSelectedItems, onSelectionChange]);
1178
+ var onClearAll = useCallback(function () {
1179
+ setSelectedItems([]);
1180
+ if (onSelectionChange !== null) {
1181
+ onSelectionChange([]);
1182
+ }
1183
+ }, [setSelectedItems, onSelectionChange]);
1184
+ useEffect(function () {
1185
+ setSelectedItems(initialSelectedItems);
1186
+ }, [initialSelectedItems]);
1187
+ var pageSelected = useMemo(function () {
1188
+ var ids = (items || []).map(function () {
1189
+ var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1190
+ _ref8$id = _ref8.id,
1191
+ id = _ref8$id === void 0 ? null : _ref8$id;
1192
+ return id;
1193
+ }).filter(function (id) {
1194
+ return id !== null;
1195
+ });
1196
+ // console.log('selectedItems', selectedItems);
1197
+ var currentPageItems = (selectedItems || []).filter(function (it) {
1198
+ var _ref9 = it || {},
1199
+ _ref9$id = _ref9.id,
1200
+ id = _ref9$id === void 0 ? null : _ref9$id;
1201
+ return ids.indexOf(id) !== -1;
1202
+ });
1203
+ // console.log('currentPageItems', currentPageItems);
1204
+ return currentPageItems.length === (items || []).length;
1205
+ }, [selectedItems, items]);
1206
+
1207
+ // const allSelected = useMemo(
1208
+ // () => selectedItems !== null && selectedItems.length === selectedItemsCount,
1209
+ // [selectedItems, selectedItemsCount],
1210
+ // );
1211
+
1212
+ var countSelected = useMemo(function () {
1213
+ return selectedItems !== null && selectedItems.length > 0 ? selectedItems.length : null;
1214
+ }, [selectedItems]);
1215
+ return {
1216
+ onSelectItem: onSelectItem,
1217
+ onDeselectItem: onDeselectItem,
1218
+ onSelectPage: onSelectPage,
1219
+ onDeselectPage: onDeselectPage,
1220
+ onClearAll: onClearAll,
1221
+ pageSelected: pageSelected,
1222
+ count: countSelected,
1223
+ selectedItems: selectedItems
1224
+ };
1225
+ };
1226
+ var useItemSelection$1 = useItemSelection;
1227
+
1228
+ export { getObserver, useAnimationFrame$1 as useAnimationFrame, useDocumentEvent$1 as useDocumentEvent, useForm$1 as useForm, useFormattedDate, useFormattedTime, useIntersectionObserver, useIsVisible$1 as useIsVisible, useItemSelection$1 as useItemSelection, useLoadedFonts$1 as useLoadedFonts, useMediaApi$1 as useMediaApi, useMediasParser$1 as useMediasParser, useObserver, useQuery$1 as useQuery, useResizeObserver, useResourceTypeName$1 as useResourceTypeName, useResourceUrlGenerator$1 as useResourceUrlGenerator, useScreenSizeFromElement, useScreenSizeFromWindow, useWindowEvent$1 as useWindowEvent };
package/es/index.js CHANGED
@@ -161,8 +161,18 @@ var modal = PropTypes$1.shape({
161
161
  name: PropTypes$1.string
162
162
  });
163
163
  var modals = PropTypes$1.arrayOf(modal);
164
-
165
- //
164
+ var filter = PropTypes$1.shape({
165
+ id: PropTypes$1.string,
166
+ component: PropTypes$1.string
167
+ });
168
+ var filters = PropTypes$1.arrayOf(filter);
169
+ var media = PropTypes$1.shape({
170
+ id: PropTypes$1.string.isRequired,
171
+ name: PropTypes$1.string.isRequired,
172
+ type: PropTypes$1.string.isRequired,
173
+ thumbnail_url: PropTypes$1.string
174
+ });
175
+ var medias = PropTypes$1.arrayOf(media);
166
176
 
167
177
  var PropTypes = /*#__PURE__*/Object.freeze({
168
178
  __proto__: null,
@@ -181,6 +191,8 @@ var PropTypes = /*#__PURE__*/Object.freeze({
181
191
  fieldOption: fieldOption,
182
192
  fieldOptions: fieldOptions,
183
193
  fields: fields,
194
+ filter: filter,
195
+ filters: filters,
184
196
  font: font,
185
197
  fonts: fonts,
186
198
  form: form,
@@ -192,6 +204,8 @@ var PropTypes = /*#__PURE__*/Object.freeze({
192
204
  item: item,
193
205
  items: items,
194
206
  label: label,
207
+ media: media,
208
+ medias: medias,
195
209
  menuItem: menuItem,
196
210
  menuItems: menuItems,
197
211
  message: message,
package/es/utils.js CHANGED
@@ -189,6 +189,24 @@ var flattenComponents = function flattenComponents(components) {
189
189
  };
190
190
  var flattenComponents$1 = flattenComponents;
191
191
 
192
+ var formatDuration = function formatDuration(timeInSeconds) {
193
+ var numberOfSeconds = parseInt(timeInSeconds, 10); // don't forget the second param
194
+ var hours = Math.floor(numberOfSeconds / 3600);
195
+ var minutes = Math.floor((numberOfSeconds - hours * 3600) / 60);
196
+ var seconds = numberOfSeconds - hours * 3600 - minutes * 60;
197
+ if (hours < 10) {
198
+ hours = "0".concat(hours);
199
+ }
200
+ if (minutes < 10) {
201
+ minutes = "0".concat(minutes);
202
+ }
203
+ if (seconds < 10) {
204
+ seconds = "0".concat(seconds);
205
+ }
206
+ return "".concat(hours, ":").concat(minutes, ":").concat(seconds);
207
+ };
208
+ var formatDuration$1 = formatDuration;
209
+
192
210
  var _excluded$1 = ["component"];
193
211
  var getComponent = function getComponent(component) {
194
212
  var _ref = isObject(component) ? component : {
@@ -467,4 +485,4 @@ var validateFields = function validateFields(fields, value) {
467
485
  };
468
486
  var validateFields$1 = validateFields;
469
487
 
470
- export { convertStyleToString$1 as convertStyleToString, copyToClipboard, createNullableOnChange$1 as createNullableOnChange, createUseEvent$1 as createUseEvent, flattenComponents$1 as flattenComponents, getColumnsWithFields$1 as getColumnsWithFields, getComponent$1 as getComponent, getComponentFromName$1 as getComponentFromName, getDefinitionFromId$1 as getDefinitionFromId, getDisplayName$1 as getDisplayName, getFieldByName$1 as getFieldByName, getFieldFromPath$1 as getFieldFromPath, getFileName$1 as getFileName, getPathValue$1 as getPathValue, getSelectOptions$1 as getSelectOptions, isMessage$1 as isMessage, loadPackage, setValue$1 as setFieldValue, slug$1 as slug, validateFields$1 as validateFields };
488
+ export { convertStyleToString$1 as convertStyleToString, copyToClipboard, createNullableOnChange$1 as createNullableOnChange, createUseEvent$1 as createUseEvent, flattenComponents$1 as flattenComponents, formatDuration$1 as formatDuration, getColumnsWithFields$1 as getColumnsWithFields, getComponent$1 as getComponent, getComponentFromName$1 as getComponentFromName, getDefinitionFromId$1 as getDefinitionFromId, getDisplayName$1 as getDisplayName, getFieldByName$1 as getFieldByName, getFieldFromPath$1 as getFieldFromPath, getFileName$1 as getFileName, getPathValue$1 as getPathValue, getSelectOptions$1 as getSelectOptions, isMessage$1 as isMessage, loadPackage, setValue$1 as setFieldValue, slug$1 as slug, validateFields$1 as validateFields };
package/lib/contexts.js CHANGED
@@ -406,8 +406,18 @@ var modal = PropTypes.shape({
406
406
  name: PropTypes.string
407
407
  });
408
408
  PropTypes.arrayOf(modal);
409
-
410
- //
409
+ var filter = PropTypes.shape({
410
+ id: PropTypes.string,
411
+ component: PropTypes.string
412
+ });
413
+ PropTypes.arrayOf(filter);
414
+ var media = PropTypes.shape({
415
+ id: PropTypes.string.isRequired,
416
+ name: PropTypes.string.isRequired,
417
+ type: PropTypes.string.isRequired,
418
+ thumbnail_url: PropTypes.string
419
+ });
420
+ PropTypes.arrayOf(media);
411
421
 
412
422
  /* eslint-disable react/jsx-props-no-spreading */
413
423
  var DefinitionContext = /*#__PURE__*/React.createContext(null);
package/lib/hooks.js CHANGED
@@ -14,6 +14,7 @@ var isArray = require('lodash/isArray');
14
14
  var isObject = require('lodash/isObject');
15
15
  var isString = require('lodash/isString');
16
16
  var contexts = require('@panneau/core/contexts');
17
+ var uniqBy = require('lodash/uniqBy');
17
18
  var reactIntl = require('react-intl');
18
19
  var dayjs = require('dayjs');
19
20
  var cssMediaquery = require('css-mediaquery');
@@ -954,12 +955,9 @@ var useResourceUrlGenerator = function useResourceUrlGenerator() {
954
955
  };
955
956
  var useResourceUrlGenerator$1 = useResourceUrlGenerator;
956
957
 
957
- var useResourceQuery = function useResourceQuery() {
958
+ var useQuery = function useQuery() {
958
959
  var initialBaseQuery = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
959
960
  var paginated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
960
- var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
961
- _ref$forceInitialQuer = _ref.forceInitialQuery,
962
- forceInitialQuery = _ref$forceInitialQuer === void 0 ? false : _ref$forceInitialQuer;
963
961
  var initialQuery = react.useMemo(function () {
964
962
  return paginated ? _objectSpread({
965
963
  page: 1,
@@ -983,12 +981,8 @@ var useResourceQuery = function useResourceQuery() {
983
981
  var val = newQuery[key];
984
982
  return val !== null ? _objectSpread(_objectSpread({}, currentQuery), {}, _defineProperty({}, key, val)) : currentQuery;
985
983
  }, null) : null;
986
- if (forceInitialQuery) {
987
- setQuery(_objectSpread(_objectSpread({}, initialBaseQuery || null), finalQuery || null));
988
- } else {
989
- setQuery(finalQuery);
990
- }
991
- }, [query, setQuery, initialBaseQuery, forceInitialQuery]);
984
+ setQuery(_objectSpread(_objectSpread({}, initialQuery || null), finalQuery || null));
985
+ }, [query, setQuery, initialQuery]);
992
986
  var onQueryReset = react.useCallback(function () {
993
987
  setQuery(initialQuery);
994
988
  }, [initialQuery, setQuery]);
@@ -999,7 +993,7 @@ var useResourceQuery = function useResourceQuery() {
999
993
  onQueryReset: onQueryReset
1000
994
  };
1001
995
  };
1002
- var useResourceQuery$1 = useResourceQuery;
996
+ var useQuery$1 = useQuery;
1003
997
 
1004
998
  var _excluded = ["width", "height"];
1005
999
  var useScreenSize = function useScreenSize(_ref) {
@@ -1112,6 +1106,127 @@ var eventsManager = typeof window !== 'undefined' ? new core.EventsManager(windo
1112
1106
  var useWindowEvent = utils.createUseEvent(eventsManager);
1113
1107
  var useWindowEvent$1 = useWindowEvent;
1114
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
+
1115
1230
  exports.getObserver = getObserver;
1116
1231
  exports.useAnimationFrame = useAnimationFrame$1;
1117
1232
  exports.useDocumentEvent = useDocumentEvent$1;
@@ -1120,12 +1235,13 @@ exports.useFormattedDate = useFormattedDate;
1120
1235
  exports.useFormattedTime = useFormattedTime;
1121
1236
  exports.useIntersectionObserver = useIntersectionObserver;
1122
1237
  exports.useIsVisible = useIsVisible$1;
1238
+ exports.useItemSelection = useItemSelection$1;
1123
1239
  exports.useLoadedFonts = useLoadedFonts$1;
1124
1240
  exports.useMediaApi = useMediaApi$1;
1125
1241
  exports.useMediasParser = useMediasParser$1;
1126
1242
  exports.useObserver = useObserver;
1243
+ exports.useQuery = useQuery$1;
1127
1244
  exports.useResizeObserver = useResizeObserver;
1128
- exports.useResourceQuery = useResourceQuery$1;
1129
1245
  exports.useResourceTypeName = useResourceTypeName$1;
1130
1246
  exports.useResourceUrlGenerator = useResourceUrlGenerator$1;
1131
1247
  exports.useScreenSizeFromElement = useScreenSizeFromElement;
package/lib/index.js CHANGED
@@ -163,8 +163,18 @@ var modal = PropTypes$1.shape({
163
163
  name: PropTypes$1.string
164
164
  });
165
165
  var modals = PropTypes$1.arrayOf(modal);
166
-
167
- //
166
+ var filter = PropTypes$1.shape({
167
+ id: PropTypes$1.string,
168
+ component: PropTypes$1.string
169
+ });
170
+ var filters = PropTypes$1.arrayOf(filter);
171
+ var media = PropTypes$1.shape({
172
+ id: PropTypes$1.string.isRequired,
173
+ name: PropTypes$1.string.isRequired,
174
+ type: PropTypes$1.string.isRequired,
175
+ thumbnail_url: PropTypes$1.string
176
+ });
177
+ var medias = PropTypes$1.arrayOf(media);
168
178
 
169
179
  var PropTypes = /*#__PURE__*/Object.freeze({
170
180
  __proto__: null,
@@ -183,6 +193,8 @@ var PropTypes = /*#__PURE__*/Object.freeze({
183
193
  fieldOption: fieldOption,
184
194
  fieldOptions: fieldOptions,
185
195
  fields: fields,
196
+ filter: filter,
197
+ filters: filters,
186
198
  font: font,
187
199
  fonts: fonts,
188
200
  form: form,
@@ -194,6 +206,8 @@ var PropTypes = /*#__PURE__*/Object.freeze({
194
206
  item: item,
195
207
  items: items,
196
208
  label: label,
209
+ media: media,
210
+ medias: medias,
197
211
  menuItem: menuItem,
198
212
  menuItems: menuItems,
199
213
  message: message,
package/lib/utils.js CHANGED
@@ -282,6 +282,24 @@ var flattenComponents = function flattenComponents(components) {
282
282
  };
283
283
  var flattenComponents$1 = flattenComponents;
284
284
 
285
+ var formatDuration = function formatDuration(timeInSeconds) {
286
+ var numberOfSeconds = parseInt(timeInSeconds, 10); // don't forget the second param
287
+ var hours = Math.floor(numberOfSeconds / 3600);
288
+ var minutes = Math.floor((numberOfSeconds - hours * 3600) / 60);
289
+ var seconds = numberOfSeconds - hours * 3600 - minutes * 60;
290
+ if (hours < 10) {
291
+ hours = "0".concat(hours);
292
+ }
293
+ if (minutes < 10) {
294
+ minutes = "0".concat(minutes);
295
+ }
296
+ if (seconds < 10) {
297
+ seconds = "0".concat(seconds);
298
+ }
299
+ return "".concat(hours, ":").concat(minutes, ":").concat(seconds);
300
+ };
301
+ var formatDuration$1 = formatDuration;
302
+
285
303
  var _excluded$1 = ["component"];
286
304
  var getComponent = function getComponent(component) {
287
305
  var _ref = isObject(component) ? component : {
@@ -566,6 +584,7 @@ exports.createNullableOnChange = createNullableOnChange$1;
566
584
  exports.createUseEvent = createUseEvent$1;
567
585
  exports.dashCase = paramCase;
568
586
  exports.flattenComponents = flattenComponents$1;
587
+ exports.formatDuration = formatDuration$1;
569
588
  exports.getColumnsWithFields = getColumnsWithFields$1;
570
589
  exports.getComponent = getComponent$1;
571
590
  exports.getComponentFromName = getComponentFromName$1;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/core",
3
- "version": "3.0.126",
3
+ "version": "3.0.130",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "javascript"
@@ -80,7 +80,7 @@
80
80
  },
81
81
  "dependencies": {
82
82
  "@babel/runtime": "^7.12.5",
83
- "@folklore/fetch": "^0.1.16",
83
+ "@folklore/fetch": "^0.1.17",
84
84
  "@folklore/forms": "^0.0.22",
85
85
  "@folklore/routes": "^0.2.26",
86
86
  "@folklore/services": "^0.1.24",
@@ -111,5 +111,5 @@
111
111
  "publishConfig": {
112
112
  "access": "public"
113
113
  },
114
- "gitHead": "fa69ddff3f8cf22b00504093087608d5701e6f6a"
114
+ "gitHead": "e6070daacb45351ccbef67ae8006f1a293ca8e2b"
115
115
  }