@micromag/media-gallery 0.3.507 → 0.3.509

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/index.js CHANGED
@@ -1,1845 +1,228 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
+ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
3
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
3
4
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
5
  import classNames from 'classnames';
5
- import isArray from 'lodash/isArray';
6
- import PropTypes$1 from 'prop-types';
7
- import React, { useMemo, useCallback, useState, useEffect, useRef } from 'react';
6
+ import PropTypes from 'prop-types';
7
+ import React, { useMemo, useState, useCallback } from 'react';
8
8
  import { createPortal } from 'react-dom';
9
- import { FormattedMessage, useIntl } from 'react-intl';
10
- import { PropTypes } from '@micromag/core';
11
- import { Card, Button, Media, Spinner, UploadModal } from '@micromag/core/components';
12
- import { useFieldComponent, useStory } from '@micromag/core/contexts';
13
- import { useMediaUpdate, useMediaRequestDelete, useMediaDelete, useMediasRecentSearches, useMediaTags, useMediaAuthors, useMedias, useMediaCreate } from '@micromag/data';
14
- import { useDimensionObserver } from '@micromag/core/hooks';
15
- import { faHeadphonesAlt } from '@fortawesome/free-solid-svg-icons/faHeadphonesAlt';
16
- import { faInfoCircle } from '@fortawesome/free-solid-svg-icons/faInfoCircle';
17
- import { faPlayCircle } from '@fortawesome/free-solid-svg-icons/faPlayCircle';
18
- import { faTimesCircle } from '@fortawesome/free-solid-svg-icons/faTimesCircle';
19
- import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
20
- import uniqBy from 'lodash/uniqBy';
21
- import prettyBytes from 'pretty-bytes';
22
- import _objectSpread from '@babel/runtime/helpers/objectSpread2';
23
- import { faChevronLeft } from '@fortawesome/free-solid-svg-icons/faChevronLeft';
24
- import { faPlus } from '@fortawesome/free-solid-svg-icons/faPlus';
25
- import { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes';
26
- import { faSearch } from '@fortawesome/free-solid-svg-icons/faSearch';
27
- import { faSpinner } from '@fortawesome/free-solid-svg-icons/faSpinner';
28
- import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
29
-
30
- var middleEllipsis = function middleEllipsis(string, maxLength) {
31
- if (!string) return string;
32
- if (maxLength < 1) return string;
33
- if (string.length <= maxLength) return string;
34
- if (maxLength === 1) return "".concat(string.substring(0, 1), "...");
35
- var midpoint = Math.ceil(string.length / 2);
36
- var toremove = string.length - maxLength;
37
- var lstrip = Math.ceil(toremove / 2);
38
- var rstrip = toremove - lstrip;
39
- return "".concat(string.substring(0, midpoint - lstrip), "...").concat(string.substring(midpoint + rstrip));
40
- };
41
-
42
- var styles$b = {"container":"micromag-media-gallery-items-gallery-item-container","selected":"micromag-media-gallery-items-gallery-item-selected","imageButton":"micromag-media-gallery-items-gallery-item-imageButton","image":"micromag-media-gallery-items-gallery-item-image","icon":"micromag-media-gallery-items-gallery-item-icon","footer":"micromag-media-gallery-items-gallery-item-footer","label":"micromag-media-gallery-items-gallery-item-label","infoButton":"micromag-media-gallery-items-gallery-item-infoButton","closeButton":"micromag-media-gallery-items-gallery-item-closeButton"};
43
-
44
- var propTypes$b = {
45
- item: PropTypes.media,
46
- width: PropTypes$1.number,
47
- selected: PropTypes$1.bool,
48
- withInfoButton: PropTypes$1.bool,
49
- className: PropTypes$1.string,
50
- onClick: PropTypes$1.func,
51
- onClickInfo: PropTypes$1.func,
52
- onClickRemove: PropTypes$1.func
53
- };
54
- var defaultProps$b = {
55
- item: null,
56
- width: 0,
57
- selected: false,
58
- withInfoButton: false,
59
- className: null,
60
- onClick: null,
61
- onClickInfo: null,
62
- onClickRemove: null
63
- };
64
- var GalleryItem = function GalleryItem(_ref) {
65
- var item = _ref.item,
66
- width = _ref.width,
67
- selected = _ref.selected,
68
- withInfoButton = _ref.withInfoButton,
69
- className = _ref.className,
70
- onClick = _ref.onClick,
71
- onClickInfo = _ref.onClickInfo,
72
- onClickRemove = _ref.onClickRemove;
73
- var type = item.type,
74
- _item$thumbnail_url = item.thumbnail_url,
75
- thumbnail = _item$thumbnail_url === void 0 ? null : _item$thumbnail_url,
76
- name = item.name,
77
- size = item.size;
78
- var title = name;
79
- if (width < 768) {
80
- title = middleEllipsis(name, Math.floor(Math.max(18, width / 2 / 9)));
81
- } else {
82
- title = middleEllipsis(name, Math.floor(Math.max(25, width / 3 / 8)));
83
- }
84
- return /*#__PURE__*/React.createElement(Card, {
85
- image: /*#__PURE__*/React.createElement("button", {
86
- className: classNames(['d-block', 'position-relative', 'p-0', 'border-0', 'w-100', 'text-start', 'bg-dark', 'text-black', styles$b.imageButton]),
87
- type: "button",
88
- onClick: onClick
89
- }, /*#__PURE__*/React.createElement("div", {
90
- className: classNames(['card-img-top', styles$b.image]),
91
- style: {
92
- backgroundImage: thumbnail !== null ? "url('".concat(thumbnail, "')") : null
93
- }
94
- })),
95
- beforeBody: /*#__PURE__*/React.createElement(React.Fragment, null, withInfoButton ? /*#__PURE__*/React.createElement(Button, {
96
- className: styles$b.infoButton,
97
- onClick: onClickInfo,
98
- withoutStyle: true
99
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
100
- icon: faInfoCircle,
101
- className: styles$b.icon
102
- })) : null, selected ? /*#__PURE__*/React.createElement(Button, {
103
- className: classNames(['text-danger', styles$b.closeButton]),
104
- onClick: onClickRemove,
105
- withoutStyle: true
106
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
107
- icon: faTimesCircle,
108
- className: styles$b.icon
109
- })) : null),
110
- footer: /*#__PURE__*/React.createElement(React.Fragment, null, type === 'video' ? /*#__PURE__*/React.createElement(FontAwesomeIcon, {
111
- className: styles$b.icon,
112
- icon: faPlayCircle
113
- }) : null, type === 'audio' ? /*#__PURE__*/React.createElement(FontAwesomeIcon, {
114
- className: styles$b.icon,
115
- icon: faHeadphonesAlt
116
- }) : null, /*#__PURE__*/React.createElement("div", {
117
- className: classNames(['text-truncate', styles$b.label])
118
- }, /*#__PURE__*/React.createElement("small", null, title), size !== null ? /*#__PURE__*/React.createElement("small", {
119
- className: "text-body-secondary ms-1"
120
- }, size) : null)),
121
- theme: selected ? null : null,
122
- className: classNames([styles$b.container, _defineProperty(_defineProperty({}, styles$b.selected, selected), className, className !== null)]),
123
- footerClassName: classNames(['p-1', styles$b.footer]),
124
- onClickFooter: onClick
125
- });
126
- };
127
- GalleryItem.propTypes = propTypes$b;
128
- GalleryItem.defaultProps = defaultProps$b;
129
- var GalleryItem$1 = GalleryItem;
130
-
131
- var styles$a = {};
132
-
133
- var propTypes$a = {
134
- items: PropTypes.medias,
135
- selectedItem: PropTypes.media,
136
- withInfoButton: PropTypes$1.bool,
137
- isSmall: PropTypes$1.bool,
138
- selectedFirst: PropTypes$1.bool,
139
- className: PropTypes$1.string,
140
- onClickItem: PropTypes$1.func,
141
- onClickItemInfo: PropTypes$1.func,
142
- onClickRemoveItem: PropTypes$1.func
143
- };
144
- var defaultProps$a = {
145
- items: null,
146
- selectedItem: null,
147
- withInfoButton: false,
148
- isSmall: false,
149
- selectedFirst: false,
150
- className: null,
151
- onClickItem: null,
152
- onClickItemInfo: null,
153
- onClickRemoveItem: null
154
- };
155
- function Gallery(_ref) {
156
- var items = _ref.items,
157
- selectedItem = _ref.selectedItem,
158
- withInfoButton = _ref.withInfoButton,
159
- isSmall = _ref.isSmall,
160
- selectedFirst = _ref.selectedFirst,
161
- className = _ref.className,
162
- onClickItem = _ref.onClickItem,
163
- onClickItemInfo = _ref.onClickItemInfo,
164
- onClickRemoveItem = _ref.onClickRemoveItem;
165
- var _useDimensionObserver = useDimensionObserver(),
166
- ref = _useDimensionObserver.ref,
167
- width = _useDimensionObserver.width;
168
- var finalItems = useMemo(function () {
169
- if (selectedFirst && selectedItem !== null && typeof selectedItem.id !== 'undefined') {
170
- return [selectedItem].concat(_toConsumableArray(items.filter(function (_ref2) {
171
- var id = _ref2.id;
172
- return id !== selectedItem.id;
173
- })));
174
- }
175
- return items;
176
- }, [selectedFirst, selectedItem, items]);
177
- return /*#__PURE__*/React.createElement("div", {
178
- className: classNames([styles$a.container, 'p-2', 'pt-0', _defineProperty({}, className, className !== null)]),
179
- ref: ref
180
- }, /*#__PURE__*/React.createElement("div", {
181
- className: classNames(['row', 'mx-n1', 'row-cols-2', {
182
- 'row-cols-md-3': !isSmall
183
- }])
184
- }, finalItems.map(function (item) {
185
- return /*#__PURE__*/React.createElement("div", {
186
- className: "col px-1 py-1",
187
- key: "gallery-item-".concat(item.id)
188
- }, /*#__PURE__*/React.createElement(GalleryItem$1, {
189
- item: item,
190
- width: width,
191
- selected: selectedItem !== null && selectedItem.id === item.id,
192
- onClick: onClickItem !== null ? function () {
193
- return onClickItem(item);
194
- } : null,
195
- onClickInfo: onClickItemInfo !== null ? function () {
196
- return onClickItemInfo(item);
197
- } : null,
198
- onClickRemove: onClickRemoveItem !== null ? function () {
199
- onClickRemoveItem();
200
- } : null,
201
- withInfoButton: withInfoButton
202
- }));
203
- })));
204
- }
205
- Gallery.propTypes = propTypes$a;
206
- Gallery.defaultProps = defaultProps$a;
207
-
208
- var styles$9 = {"container":"micromag-media-gallery-partials-media-metadata-container","image":"micromag-media-gallery-partials-media-metadata-image","video":"micromag-media-gallery-partials-media-metadata-video","player":"micromag-media-gallery-partials-media-metadata-player","audio":"micromag-media-gallery-partials-media-metadata-audio","placeholder":"micromag-media-gallery-partials-media-metadata-placeholder"};
209
-
210
- var propTypes$9 = {
211
- media: PropTypes.media,
212
- tags: PropTypes.tags,
213
- onChange: PropTypes$1.func,
214
- onClickClose: PropTypes$1.func,
215
- onClickSave: PropTypes$1.func,
216
- onClickDelete: PropTypes$1.func,
217
- className: PropTypes$1.string
218
- };
219
- var defaultProps$9 = {
220
- media: null,
221
- tags: [],
222
- onChange: null,
223
- onClickClose: null,
224
- onClickSave: null,
225
- onClickDelete: null,
226
- className: null
227
- };
228
- function MediaMetadata(_ref) {
229
- var media = _ref.media,
230
- allTags = _ref.tags,
231
- onChange = _ref.onChange,
232
- onClickClose = _ref.onClickClose,
233
- onClickSave = _ref.onClickSave,
234
- onClickDelete = _ref.onClickDelete,
235
- className = _ref.className;
236
- var _ref2 = media || {},
237
- mediaId = _ref2.id,
238
- type = _ref2.type,
239
- _ref2$url = _ref2.url,
240
- url = _ref2$url === void 0 ? null : _ref2$url,
241
- _ref2$thumbnail_url = _ref2.thumbnail_url,
242
- thumbnail = _ref2$thumbnail_url === void 0 ? null : _ref2$thumbnail_url,
243
- _ref2$name = _ref2.name,
244
- mediaName = _ref2$name === void 0 ? null : _ref2$name,
245
- _ref2$metadata = _ref2.metadata,
246
- metadata = _ref2$metadata === void 0 ? {} : _ref2$metadata;
247
- var _ref3 = metadata || {},
248
- _ref3$filename = _ref3.filename,
249
- filename = _ref3$filename === void 0 ? null : _ref3$filename,
250
- _ref3$size = _ref3.size,
251
- size = _ref3$size === void 0 ? null : _ref3$size,
252
- _ref3$width = _ref3.width,
253
- width = _ref3$width === void 0 ? null : _ref3$width,
254
- _ref3$height = _ref3.height,
255
- height = _ref3$height === void 0 ? null : _ref3$height,
256
- _ref3$duration = _ref3.duration,
257
- duration = _ref3$duration === void 0 ? null : _ref3$duration,
258
- _ref3$user = _ref3.user,
259
- user = _ref3$user === void 0 ? null : _ref3$user,
260
- _ref3$description = _ref3.description,
261
- mediaDescription = _ref3$description === void 0 ? null : _ref3$description,
262
- _ref3$tags = _ref3.tags,
263
- mediaTags = _ref3$tags === void 0 ? [] : _ref3$tags;
264
- var _useMediaUpdate = useMediaUpdate(),
265
- update = _useMediaUpdate.update;
266
- var _useMediaRequestDelet = useMediaRequestDelete(),
267
- requestDeleteMedia = _useMediaRequestDelet.requestDeleteMedia;
268
- var _useMediaDelete = useMediaDelete(),
269
- deleteMedia = _useMediaDelete.deleteMedia;
270
- var getOptionLabel = useCallback(function (_ref4) {
271
- var name = _ref4.name;
272
- return name;
273
- }, []);
274
- var getOptionValue = useCallback(function (_ref5) {
275
- var name = _ref5.name;
276
- return name;
277
- }, []);
278
- var getNewOptionData = useCallback(function (inputValue) {
279
- return {
280
- name: inputValue
281
- };
282
- }, []);
283
- var finalTags = useMemo(function () {
284
- return allTags !== null ? uniqBy(mediaTags.concat(allTags), function (_ref6) {
285
- var id = _ref6.id;
286
- return id;
287
- }) : mediaTags;
288
- }, [mediaTags, allTags]);
289
- var _useState = useState(mediaName),
290
- _useState2 = _slicedToArray(_useState, 2),
291
- name = _useState2[0],
292
- setName = _useState2[1];
293
- var _useState3 = useState(mediaDescription),
294
- _useState4 = _slicedToArray(_useState3, 2),
295
- description = _useState4[0],
296
- setDescription = _useState4[1];
297
- var _useState5 = useState(mediaTags.map(getOptionValue)),
298
- _useState6 = _slicedToArray(_useState5, 2),
299
- tags = _useState6[0],
300
- setTags = _useState6[1];
301
- var _useState7 = useState(false),
302
- _useState8 = _slicedToArray(_useState7, 2),
303
- changed = _useState8[0],
304
- setChanged = _useState8[1];
305
- var onTagChange = useCallback(function (val) {
306
- setTags(val);
307
- setChanged(true);
308
- }, [tags, setTags, setChanged]);
309
- var onNameChange = useCallback(function (val) {
310
- setName(val);
311
- setChanged(true);
312
- }, [tags, setName, setChanged]);
313
- var onDescriptionChange = useCallback(function (val) {
314
- setDescription(val);
315
- setChanged(true);
316
- }, [tags, setDescription, setChanged]);
317
- var _useState9 = useState(null),
318
- _useState10 = _slicedToArray(_useState9, 2),
319
- saveState = _useState10[0],
320
- setSaveState = _useState10[1];
321
- var onSave = useCallback(function () {
322
- return update(mediaId, {
323
- name: name,
324
- tags: tags,
325
- description: description
326
- }).then(function (response) {
327
- setChanged(false);
328
- setSaveState(null);
329
- if (onClickSave !== null) {
330
- onClickSave();
331
- }
332
- if (onChange !== null) {
333
- onChange(response);
334
- }
335
- })["catch"](function () {
336
- setSaveState(false);
337
- });
338
- }, [mediaId, name, tags, description, metadata, update, onChange, onClickSave, onClickClose, setChanged, setSaveState]);
339
- var _useState11 = useState(null),
340
- _useState12 = _slicedToArray(_useState11, 2),
341
- deletedState = _useState12[0],
342
- setDeletedState = _useState12[1];
343
- var _useState13 = useState(null),
344
- _useState14 = _slicedToArray(_useState13, 2),
345
- confirmation = _useState14[0],
346
- setConfirmation = _useState14[1];
347
- useEffect(function () {
348
- setDeletedState(null);
349
- setConfirmation(null);
350
- }, [mediaId, setDeletedState, setConfirmation]);
351
- var onConfirm = useCallback(function () {
352
- requestDeleteMedia(mediaId).then(function (response) {
353
- var _ref7 = response || {},
354
- state = _ref7.state,
355
- _ref7$items = _ref7.items,
356
- items = _ref7$items === void 0 ? [] : _ref7$items;
357
- if (state === 'needs_confirmation') {
358
- setConfirmation(items || []);
359
- } else {
360
- setConfirmation(null);
361
- }
362
- })["catch"](function () {
363
- setConfirmation(null);
364
- });
365
- }, [mediaId, requestDeleteMedia, setConfirmation]);
366
- var onDelete = useCallback(function () {
367
- deleteMedia(mediaId).then(function () {
368
- setChanged(false);
369
- setDeletedState(true);
370
- setConfirmation(null);
371
- if (onClickDelete !== null) {
372
- onClickDelete(mediaId);
373
- }
374
- })["catch"](function () {
375
- setDeletedState(false);
376
- setConfirmation(null);
377
- });
378
- }, [mediaId, deleteMedia, onClickDelete, setChanged, setDeletedState, setConfirmation]);
379
- var onCancelDelete = useCallback(function () {
380
- setConfirmation(null);
381
- setDeletedState(null);
382
- }, [setConfirmation, setDeletedState]);
383
- useEffect(function () {
384
- if (media !== null) {
385
- setTags(mediaTags);
386
- setName(mediaName);
387
- setDescription(mediaDescription);
388
- } else {
389
- setTags([]);
390
- setName(null);
391
- setDescription(null);
392
- }
393
- setChanged(false);
394
- }, [media, setTags, setName, setDescription, setChanged]);
395
- var TextField = useFieldComponent('text');
396
- var TokensField = useFieldComponent('tokens');
397
- return /*#__PURE__*/React.createElement("div", {
398
- className: classNames([styles$9.container, _defineProperty({}, className, className)])
399
- }, /*#__PURE__*/React.createElement("div", {
400
- className: classNames(['position-relative', _defineProperty({
401
- 'bg-light': type === 'audio',
402
- 'bg-black': type === 'image'
403
- }, styles$9.video, type === 'video')])
404
- }, type === 'video' ? /*#__PURE__*/React.createElement("video", {
405
- className: styles$9.player,
406
- controls: true,
407
- src: url
408
- }) : null, type === 'audio' ? /*#__PURE__*/React.createElement("div", {
409
- className: styles$9.audio
410
- }, /*#__PURE__*/React.createElement("audio", {
411
- className: styles$9.player,
412
- controls: true,
413
- src: url
414
- })) : null, type !== 'video' && thumbnail !== null ? /*#__PURE__*/React.createElement("img", {
415
- src: thumbnail,
416
- className: styles$9.image,
417
- alt: filename
418
- }) : /*#__PURE__*/React.createElement("div", {
419
- className: styles$9.placeholder
420
- })), /*#__PURE__*/React.createElement("div", {
421
- className: "p-2"
422
- }, /*#__PURE__*/React.createElement("div", {
423
- className: "tags mb-4"
424
- }, /*#__PURE__*/React.createElement("div", {
425
- className: "my-3"
426
- }, /*#__PURE__*/React.createElement("h6", null, /*#__PURE__*/React.createElement(FormattedMessage, {
427
- id: "kBz8vF",
428
- defaultMessage: [{
429
- "type": 0,
430
- "value": "Name"
431
- }]
432
- })), /*#__PURE__*/React.createElement(TextField, {
433
- value: name,
434
- onChange: onNameChange
435
- })), /*#__PURE__*/React.createElement("div", {
436
- className: "my-3"
437
- }, /*#__PURE__*/React.createElement("h6", {
438
- className: "mb-0"
439
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
440
- id: "YJZtWR",
441
- defaultMessage: [{
442
- "type": 0,
443
- "value": "Description"
444
- }]
445
- })), /*#__PURE__*/React.createElement("p", {
446
- className: "mb-1"
447
- }, /*#__PURE__*/React.createElement("small", null, /*#__PURE__*/React.createElement(FormattedMessage, {
448
- id: "EDFyUp",
449
- defaultMessage: [{
450
- "type": 0,
451
- "value": "Alternative text (accessibility)"
452
- }]
453
- }))), /*#__PURE__*/React.createElement(TextField, {
454
- value: description,
455
- onChange: onDescriptionChange
456
- })), /*#__PURE__*/React.createElement("div", {
457
- className: "my-3"
458
- }, /*#__PURE__*/React.createElement("h6", null, /*#__PURE__*/React.createElement(FormattedMessage, {
459
- id: "4fHMVj",
460
- defaultMessage: [{
461
- "type": 0,
462
- "value": "Tags"
463
- }]
464
- })), /*#__PURE__*/React.createElement(TokensField, {
465
- value: tags,
466
- options: finalTags
467
- // loadOptions={loadTags}
468
- ,
469
- getOptionLabel: getOptionLabel,
470
- getOptionValue: getOptionValue,
471
- getNewOptionData: getNewOptionData,
472
- onChange: onTagChange
473
- })), changed ? /*#__PURE__*/React.createElement(Button, {
474
- theme: "primary",
475
- onClick: onSave
476
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
477
- id: "qIw1nW",
478
- defaultMessage: [{
479
- "type": 0,
480
- "value": "Save"
481
- }]
482
- })) : null, saveState === false ? /*#__PURE__*/React.createElement("p", {
483
- className: "pt-1 text-danger"
484
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
485
- id: "DYjRd/",
486
- defaultMessage: [{
487
- "type": 0,
488
- "value": "Sorry, this media could not be saved."
489
- }]
490
- })) : null), /*#__PURE__*/React.createElement("h6", null, /*#__PURE__*/React.createElement(FormattedMessage, {
491
- id: "c9VwT/",
492
- defaultMessage: [{
493
- "type": 0,
494
- "value": "Technical details"
495
- }]
496
- })), /*#__PURE__*/React.createElement("ul", {
497
- className: "list-group"
498
- }, type !== null ? /*#__PURE__*/React.createElement("li", {
499
- className: "list-group-item py-2 px-2"
500
- }, /*#__PURE__*/React.createElement("div", {
501
- className: "row"
502
- }, /*#__PURE__*/React.createElement("div", {
503
- className: "col-4 text-body-secondary"
504
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
505
- id: "OkNUmk",
506
- defaultMessage: [{
507
- "type": 0,
508
- "value": "Type"
509
- }]
510
- })), /*#__PURE__*/React.createElement("div", {
511
- className: "col text-capitalize"
512
- }, /*#__PURE__*/React.createElement("small", null, type)))) : null, filename !== null ? /*#__PURE__*/React.createElement("li", {
513
- className: "list-group-item py-2 px-2"
514
- }, /*#__PURE__*/React.createElement("div", {
515
- className: "row"
516
- }, /*#__PURE__*/React.createElement("div", {
517
- className: "col-4 text-body-secondary"
518
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
519
- id: "aovRFH",
520
- defaultMessage: [{
521
- "type": 0,
522
- "value": "Filename"
523
- }]
524
- })), /*#__PURE__*/React.createElement("div", {
525
- className: "col"
526
- }, /*#__PURE__*/React.createElement("small", null, filename)))) : null, duration ? /*#__PURE__*/React.createElement("li", {
527
- className: "list-group-item py-2 px-2"
528
- }, /*#__PURE__*/React.createElement("div", {
529
- className: "row"
530
- }, /*#__PURE__*/React.createElement("div", {
531
- className: "col-4 text-body-secondary"
532
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
533
- id: "eoW0tZ",
534
- defaultMessage: [{
535
- "type": 0,
536
- "value": "Duration"
537
- }]
538
- })), /*#__PURE__*/React.createElement("div", {
539
- className: "col"
540
- }, /*#__PURE__*/React.createElement("small", null, duration)))) : null, width !== null || height !== null ? /*#__PURE__*/React.createElement("li", {
541
- className: "list-group-item py-2 px-2"
542
- }, /*#__PURE__*/React.createElement("div", {
543
- className: "row"
544
- }, /*#__PURE__*/React.createElement("div", {
545
- className: "col-4 text-body-secondary"
546
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
547
- id: "mv37oK",
548
- defaultMessage: [{
549
- "type": 0,
550
- "value": "Dimension"
551
- }]
552
- })), /*#__PURE__*/React.createElement("div", {
553
- className: "col"
554
- }, /*#__PURE__*/React.createElement("small", null, width, "x", height)))) : null, size !== null ? /*#__PURE__*/React.createElement("li", {
555
- className: "list-group-item py-2 px-2"
556
- }, /*#__PURE__*/React.createElement("div", {
557
- className: "row"
558
- }, /*#__PURE__*/React.createElement("div", {
559
- className: "col-4 text-body-secondary"
560
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
561
- id: "liyV7Y",
562
- defaultMessage: [{
563
- "type": 0,
564
- "value": "Size"
565
- }]
566
- })), /*#__PURE__*/React.createElement("div", {
567
- className: "col"
568
- }, /*#__PURE__*/React.createElement("small", null, prettyBytes(size))))) : null, description !== null ? /*#__PURE__*/React.createElement("li", {
569
- className: "list-group-item py-2 px-2"
570
- }, /*#__PURE__*/React.createElement("div", {
571
- className: "row"
572
- }, /*#__PURE__*/React.createElement("div", {
573
- className: "col-4 text-body-secondary"
574
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
575
- id: "7uyslu",
576
- defaultMessage: [{
577
- "type": 0,
578
- "value": "Description"
579
- }]
580
- })), /*#__PURE__*/React.createElement("div", {
581
- className: "col"
582
- }, /*#__PURE__*/React.createElement("small", null, description)))) : null, user !== null && user.name ? /*#__PURE__*/React.createElement("li", {
583
- className: "list-group-item py-2 px-2"
584
- }, /*#__PURE__*/React.createElement("div", {
585
- className: "row"
586
- }, /*#__PURE__*/React.createElement("div", {
587
- className: "col-4 text-body-secondary"
588
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
589
- id: "sUR1xV",
590
- defaultMessage: [{
591
- "type": 0,
592
- "value": "Author"
593
- }]
594
- })), /*#__PURE__*/React.createElement("div", {
595
- className: "col"
596
- }, /*#__PURE__*/React.createElement("small", null, user.name)))) : null), /*#__PURE__*/React.createElement("div", {
597
- className: "py-3"
598
- }, confirmation !== null ? /*#__PURE__*/React.createElement(React.Fragment, null, confirmation.length > 0 ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("p", {
599
- className: "pt-1 text-danger"
600
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
601
- id: "2FD6tj",
602
- defaultMessage: [{
603
- "type": 0,
604
- "value": "This media is used by the following documents:"
605
- }]
606
- })), /*#__PURE__*/React.createElement("ul", null, confirmation.map(function (it, i) {
607
- return /*#__PURE__*/React.createElement("li", {
608
- key: "".concat(it, "-").concat(i + 1),
609
- className: "text-danger"
610
- }, it);
611
- }))) : null, /*#__PURE__*/React.createElement("p", {
612
- className: "pt-1 text-danger"
613
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
614
- id: "wy2g+x",
615
- defaultMessage: [{
616
- "type": 0,
617
- "value": "Are you sure you want to continue?"
618
- }]
619
- }))) : null, /*#__PURE__*/React.createElement("div", {
620
- className: "d-flex"
621
- }, /*#__PURE__*/React.createElement(Button, {
622
- className: "me-2",
623
- theme: "danger",
624
- outline: true,
625
- onClick: confirmation === null ? onConfirm : onDelete
626
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
627
- id: "/KQ87r",
628
- defaultMessage: [{
629
- "type": 0,
630
- "value": "Delete media"
631
- }]
632
- })), confirmation !== null ? /*#__PURE__*/React.createElement(Button, {
633
- theme: "primary",
634
- outline: true,
635
- onClick: onCancelDelete
636
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
637
- id: "Xb6r3F",
638
- defaultMessage: [{
639
- "type": 0,
640
- "value": "Cancel"
641
- }]
642
- })) : null), deletedState === false ? /*#__PURE__*/React.createElement("p", {
643
- className: "pt-1 text-danger"
644
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
645
- id: "rqbRV2",
646
- defaultMessage: [{
647
- "type": 0,
648
- "value": "Sorry, this media could not be deleted."
649
- }]
650
- })) : null)));
651
- }
652
- MediaMetadata.propTypes = propTypes$9;
653
- MediaMetadata.defaultProps = defaultProps$9;
654
-
655
- var useSearchFilters = function useSearchFilters(_ref) {
656
- var _ref$recent = _ref.recent,
657
- recent = _ref$recent === void 0 ? [] : _ref$recent,
658
- _ref$tags = _ref.tags,
659
- tags = _ref$tags === void 0 ? [] : _ref$tags,
660
- _ref$team = _ref.team,
661
- team = _ref$team === void 0 ? [] : _ref$team,
662
- _ref$sources = _ref.sources,
663
- upstreamSources = _ref$sources === void 0 ? [] : _ref$sources,
664
- _ref$withType = _ref.withType,
665
- withType = _ref$withType === void 0 ? false : _ref$withType,
666
- _ref$storyId = _ref.storyId,
667
- storyId = _ref$storyId === void 0 ? null : _ref$storyId;
668
- var sources = [].concat(_toConsumableArray(storyId !== null ? [{
669
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
670
- id: "eiaIIB",
671
- defaultMessage: [{
672
- "type": 0,
673
- "value": "This Micromag"
674
- }]
675
- }),
676
- value: "document-".concat(storyId)
677
- }] : []), [{
678
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
679
- id: "xAzv6g",
680
- defaultMessage: [{
681
- "type": 0,
682
- "value": "All sources"
683
- }]
684
- }),
685
- value: 'all'
686
- }], _toConsumableArray(team !== null && team.length > 0 ? [{
687
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
688
- id: "/62oe4",
689
- defaultMessage: [{
690
- "type": 0,
691
- "value": "My files"
692
- }]
693
- }),
694
- value: 'user'
695
- }] : []), _toConsumableArray(upstreamSources)).filter(function (it) {
696
- return it !== null;
697
- });
698
- var types = [{
699
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
700
- id: "2J05S0",
701
- defaultMessage: [{
702
- "type": 0,
703
- "value": "Images"
704
- }]
705
- }),
706
- value: 'image'
707
- }, {
708
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
709
- id: "QBlqW9",
710
- defaultMessage: [{
711
- "type": 0,
712
- "value": "Videos"
713
- }]
714
- }),
715
- value: 'video'
716
- }, {
717
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
718
- id: "PNMMo/",
719
- defaultMessage: [{
720
- "type": 0,
721
- "value": "Audios"
722
- }]
723
- }),
724
- value: 'audio'
725
- }];
726
- var usage = [{
727
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
728
- id: "tmfbUn",
729
- defaultMessage: [{
730
- "type": 0,
731
- "value": "Unused"
732
- }]
733
- }),
734
- value: 'unused'
9
+ import { QueryProvider } from '@panneau/data';
10
+ import DisplaysProvider from '@panneau/displays';
11
+ import FieldsProvider from '@panneau/fields';
12
+ import FiltersProvider from '@panneau/filters';
13
+ import { MediasPickerContainer, MediasBrowserContainer } from '@panneau/medias';
14
+ import { PropTypes as PropTypes$1 } from '@micromag/core';
15
+ import { UploadModal } from '@micromag/core/components';
16
+ import { useApi, useMediaCreate } from '@micromag/data';
17
+ import { useUrlGenerator } from '@folklore/routes';
18
+ import { FormattedMessage } from 'react-intl';
19
+
20
+ function filters() {
21
+ var route = useUrlGenerator();
22
+ return [{
23
+ id: 'search',
24
+ component: 'search',
25
+ name: 'search'
735
26
  }, {
736
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
737
- id: "AQ8Aig",
738
- defaultMessage: [{
739
- "type": 0,
740
- "value": "Used"
741
- }]
742
- }),
743
- value: 'used'
744
- }];
745
- var sections = [withType ? {
746
- value: 'types',
747
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
748
- id: "/ca7BX",
27
+ id: 'types',
28
+ component: 'select',
29
+ name: 'types',
30
+ placeholder: /*#__PURE__*/React.createElement(FormattedMessage, {
31
+ id: "9/t5wK",
749
32
  defaultMessage: [{
750
33
  "type": 0,
751
- "value": "Types"
34
+ "value": "Type"
752
35
  }]
753
36
  }),
754
- items: types
755
- } : null, {
756
- value: 'recent',
757
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
758
- id: "vYunz+",
759
- defaultMessage: [{
760
- "type": 0,
761
- "value": "Recent searches"
762
- }]
763
- }),
764
- items: recent
37
+ options: [{
38
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
39
+ id: "yHAmDD",
40
+ defaultMessage: [{
41
+ "type": 0,
42
+ "value": "Image"
43
+ }]
44
+ }),
45
+ value: 'image'
46
+ }, {
47
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
48
+ id: "xSERPA",
49
+ defaultMessage: [{
50
+ "type": 0,
51
+ "value": "Video"
52
+ }]
53
+ }),
54
+ value: 'video'
55
+ }, {
56
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
57
+ id: "yQRtgx",
58
+ defaultMessage: [{
59
+ "type": 0,
60
+ "value": "Audio"
61
+ }]
62
+ }),
63
+ value: 'audio'
64
+ }],
65
+ multiple: true
765
66
  }, {
766
- value: 'tags',
767
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
768
- id: "/OM5UY",
67
+ id: 'source',
68
+ component: 'select',
69
+ placeholder: /*#__PURE__*/React.createElement(FormattedMessage, {
70
+ id: "Pc4AD8",
769
71
  defaultMessage: [{
770
72
  "type": 0,
771
- "value": "Tags"
73
+ "value": "Source"
772
74
  }]
773
75
  }),
774
- items: tags
76
+ name: 'source',
77
+ options: [{
78
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
79
+ id: "DYxnlo",
80
+ defaultMessage: [{
81
+ "type": 0,
82
+ "value": "All"
83
+ }]
84
+ }),
85
+ value: 'all'
86
+ }, {
87
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
88
+ id: "AgH3AR",
89
+ defaultMessage: [{
90
+ "type": 0,
91
+ "value": "This micromag"
92
+ }]
93
+ }),
94
+ value: 'video'
95
+ }]
775
96
  }, {
776
- value: 'users',
777
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
778
- id: "pfvDzR",
97
+ id: 'authors',
98
+ component: 'select',
99
+ name: 'authors',
100
+ placeholder: /*#__PURE__*/React.createElement(FormattedMessage, {
101
+ id: "skmuWU",
779
102
  defaultMessage: [{
780
103
  "type": 0,
781
- "value": "Added by"
104
+ "value": "Author"
782
105
  }]
783
106
  }),
784
- items: team
107
+ requestUrl: route('medias.authors') || '/api/medias/authors',
108
+ itemLabelPath: 'name',
109
+ multiple: true
785
110
  }, {
786
- value: 'usage',
787
- label: /*#__PURE__*/React.createElement(FormattedMessage, {
788
- id: "mOSkbf",
111
+ id: 'tags',
112
+ component: 'select',
113
+ name: 'tags',
114
+ placeholder: /*#__PURE__*/React.createElement(FormattedMessage, {
115
+ id: "hnLSrX",
789
116
  defaultMessage: [{
790
117
  "type": 0,
791
- "value": "Usage"
118
+ "value": "Tag"
792
119
  }]
793
120
  }),
794
- items: usage
795
- }].filter(function (it) {
796
- return it !== null;
797
- });
798
- return {
799
- sources: sources,
800
- sections: sections,
801
- types: types
802
- };
803
- };
804
-
805
- // eslint-disable-next-line import/prefer-default-export
806
- var filtersValue = PropTypes$1.shape({
807
- search: PropTypes$1.string
808
- });
809
- PropTypes$1.shape({
810
- types: PropTypes$1.arrayOf(PropTypes$1.string),
811
- tags: PropTypes$1.arrayOf(PropTypes$1.string),
812
- users: PropTypes$1.arrayOf(PropTypes$1.string),
813
- usage: PropTypes$1.arrayOf(PropTypes$1.oneOf(['used', 'unused']))
814
- });
815
-
816
- var styles$8 = {"container":"micromag-media-gallery-forms-dropdown-section-container","dropdownToggle":"micromag-media-gallery-forms-dropdown-section-dropdownToggle","label":"micromag-media-gallery-forms-dropdown-section-label","dropdown":"micromag-media-gallery-forms-dropdown-section-dropdown"};
817
-
818
- var propTypes$8 = {
819
- value: PropTypes$1.string,
820
- items: PropTypes$1.arrayOf(PropTypes$1.shape({
821
- label: PropTypes.label,
822
- value: PropTypes$1.oneOfType([PropTypes$1.string, PropTypes$1.node]),
823
- active: PropTypes$1.bool
824
- })),
825
- onChange: PropTypes$1.func,
826
- className: PropTypes$1.string
827
- };
828
- var defaultProps$8 = {
829
- value: null,
830
- items: null,
831
- onChange: null,
832
- className: null
833
- };
834
- function DropdownSection(_ref) {
835
- var value = _ref.value,
836
- items = _ref.items,
837
- onChange = _ref.onChange,
838
- className = _ref.className;
839
- var _useState = useState(false),
840
- _useState2 = _slicedToArray(_useState, 2),
841
- open = _useState2[0],
842
- setOpen = _useState2[1];
843
- var currentItem = items.find(function (i) {
844
- return i.value === value;
845
- });
846
- var onOpen = useCallback(function () {
847
- setOpen(!open);
848
- }, [open, setOpen]);
849
- var onBlur = useCallback(function () {
850
- // Work around the event call order
851
- setTimeout(function () {
852
- setOpen(false);
853
- }, 300);
854
- }, [setOpen]);
855
- var onItemClick = useCallback(function (e) {
856
- var val = e.target.dataset.value || null;
857
- setOpen(false);
858
- onChange(val);
859
- }, [setOpen]);
860
- return items !== null && items.length > 1 ? /*#__PURE__*/React.createElement("div", {
861
- className: classNames([styles$8.container, 'dropdown', _defineProperty({}, className, className !== null)])
862
- }, /*#__PURE__*/React.createElement("span", {
863
- className: styles$8.label
864
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
865
- id: "9ZdD+Q",
866
- defaultMessage: [{
867
- "type": 0,
868
- "value": "Library for"
869
- }]
870
- })), /*#__PURE__*/React.createElement("button", {
871
- className: classNames([styles$8.dropdownToggle, 'dropdown-toggle', {
872
- open: open === true
873
- }]),
874
- type: "button",
875
- onClick: onOpen,
876
- onBlur: onBlur
877
- }, (currentItem ? currentItem.label : null) || /*#__PURE__*/React.createElement(FormattedMessage, {
878
- id: "15GBmG",
879
- defaultMessage: [{
880
- "type": 0,
881
- "value": "All"
882
- }]
883
- })), /*#__PURE__*/React.createElement("div", {
884
- className: classNames([styles$8.dropdown, 'dropdown-menu', {
885
- show: open === true
886
- }])
887
- }, items.map(function (_ref3) {
888
- var label = _ref3.label,
889
- itemValue = _ref3.value;
890
- var itemClassNames = classNames(['dropdown-item', {
891
- active: itemValue === value
892
- }]);
893
- return /*#__PURE__*/React.createElement("button", {
894
- className: itemClassNames,
895
- type: "button",
896
- key: "drop-".concat(itemValue),
897
- onClick: onItemClick,
898
- "data-value": itemValue
899
- }, label);
900
- }))) : null;
121
+ requestUrl: route('medias.tags.get') || '/api/medias/tags',
122
+ itemLabelPath: 'name',
123
+ itemValuePath: 'id',
124
+ multiple: true,
125
+ // requestQuery: { page: 1 },
126
+ paginated: true
127
+ // options: null,
128
+ }];
901
129
  }
902
- DropdownSection.propTypes = propTypes$8;
903
- DropdownSection.defaultProps = defaultProps$8;
904
130
 
905
- var styles$7 = {"container":"micromag-media-gallery-forms-search-container","input":"micromag-media-gallery-forms-search-input","active":"micromag-media-gallery-forms-search-active"};
131
+ var styles = {"container":"micromag-media-gallery-new-media-gallery-container","browser":"micromag-media-gallery-new-media-gallery-browser"};
906
132
 
907
- var propTypes$7 = {
908
- value: PropTypes$1.string,
909
- loading: PropTypes$1.bool,
910
- onChange: PropTypes$1.func,
911
- onFocus: PropTypes$1.func,
912
- onBlur: PropTypes$1.func,
913
- onClickIcon: PropTypes$1.func,
914
- className: PropTypes$1.string
915
- };
916
- var defaultProps$7 = {
917
- value: null,
918
- loading: false,
919
- onChange: null,
920
- onFocus: null,
921
- onBlur: null,
922
- onClickIcon: null,
923
- className: null
924
- };
925
- var Search = function Search(_ref) {
926
- var value = _ref.value,
927
- loading = _ref.loading,
928
- onChange = _ref.onChange,
929
- onFocus = _ref.onFocus,
930
- onBlur = _ref.onBlur,
931
- onClickIcon = _ref.onClickIcon,
932
- className = _ref.className;
933
- var intl = useIntl();
934
- var onSearchChange = useCallback(function (e) {
935
- var newValue = e.currentTarget.value.length > 0 ? e.currentTarget.value : null;
936
- if (onChange !== null) {
937
- onChange(newValue);
938
- }
939
- }, [onChange]);
940
- useCallback(function () {
941
- if (onChange !== null) {
942
- onChange('');
943
- }
944
- }, [onChange]);
945
- var onClickSearchIcon = useCallback(function () {
946
- if (onClickIcon !== null) {
947
- onClickIcon();
948
- }
949
- }, [onClickIcon]);
950
- return /*#__PURE__*/React.createElement("form", {
951
- method: "post",
952
- className: classNames([styles$7.container, 'w-100', 'border', 'border-dark', 'rounded', _defineProperty({}, className, className !== null)]),
953
- onSubmit: function onSubmit(e) {
954
- return e.preventDefault();
955
- }
956
- }, /*#__PURE__*/React.createElement("div", {
957
- className: "input-group w-100"
958
- }, /*#__PURE__*/React.createElement("button", {
959
- type: "button",
960
- className: "btn",
961
- onClick: onClickSearchIcon
962
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
963
- icon: loading ? faSpinner : faSearch,
964
- spin: loading
965
- })), /*#__PURE__*/React.createElement("input", {
966
- className: classNames([styles$7.input, 'form-control', {
967
- 'bg-light': !!value,
968
- 'text-dark': value
969
- }]),
970
- type: "text",
971
- value: value || '',
972
- placeholder: intl.formatMessage({
973
- id: "n/SxMs",
974
- defaultMessage: [{
975
- "type": 0,
976
- "value": "Search medias"
977
- }]
978
- }),
979
- onChange: onSearchChange,
980
- onFocus: onFocus,
981
- onBlur: onBlur
982
- }), null));
983
- };
984
- Search.propTypes = propTypes$7;
985
- Search.defaultProps = defaultProps$7;
986
- var SearchForm = Search;
987
-
988
- var styles$6 = {"container":"micromag-media-gallery-forms-tag-dropdown-container","select":"micromag-media-gallery-forms-tag-dropdown-select"};
989
-
990
- var propTypes$6 = {
991
- tags: PropTypes$1.arrayOf(PropTypes$1.shape({
992
- label: PropTypes$1.string,
993
- value: PropTypes$1.oneOf([PropTypes$1.string, PropTypes$1.node]),
994
- active: PropTypes$1.bool
995
- })),
996
- parent: PropTypes$1.string,
997
- onChange: PropTypes$1.func,
998
- className: PropTypes$1.string
999
- };
1000
- var defaultProps$6 = {
1001
- tags: null,
1002
- parent: null,
1003
- onChange: null,
1004
- className: null
1005
- };
1006
- var TagDropdown = function TagDropdown(_ref) {
1007
- var tags = _ref.tags,
1008
- parent = _ref.parent,
1009
- onChange = _ref.onChange,
1010
- className = _ref.className;
1011
- var onItemChange = useCallback(function (e) {
1012
- var val = e.target.dataset.value || null;
1013
- onChange(val, parent);
1014
- }, [onChange, parent]);
1015
- return /*#__PURE__*/React.createElement("div", {
1016
- className: classNames([styles$6.container, 'd-flex', 'mt-1', _defineProperty({}, className, className !== null)])
1017
- }, /*#__PURE__*/React.createElement("select", {
1018
- className: classNames(['form-select', styles$6.select])
1019
- }, tags !== null ? tags.map(function (_ref3) {
1020
- var label = _ref3.label,
1021
- value = _ref3.value,
1022
- active = _ref3.active;
1023
- var itemClassNames = classNames([styles$6.tag, 'fs-6', {
1024
- 'btn-primary': active === true
1025
- }]);
1026
- return /*#__PURE__*/React.createElement("option", {
1027
- className: itemClassNames,
1028
- type: "button",
1029
- key: "option-".concat(value),
1030
- onClick: onItemChange,
1031
- "data-value": value,
1032
- value: value
1033
- }, label);
1034
- }) : null));
1035
- };
1036
- TagDropdown.propTypes = propTypes$6;
1037
- TagDropdown.defaultProps = defaultProps$6;
1038
- var TagDropdown$1 = TagDropdown;
133
+ // const videoTypes = ['video', 'image/gif'];
1039
134
 
1040
- var styles$5 = {"container":"micromag-media-gallery-forms-tag-section-container","tag":"micromag-media-gallery-forms-tag-section-tag"};
1041
-
1042
- var propTypes$5 = {
1043
- tags: PropTypes$1.arrayOf(PropTypes$1.shape({
1044
- label: PropTypes$1.string,
1045
- value: PropTypes$1.oneOf([PropTypes$1.string, PropTypes$1.node]),
1046
- active: PropTypes$1.bool
1047
- })),
1048
- parent: PropTypes$1.string,
1049
- onChange: PropTypes$1.func,
1050
- className: PropTypes$1.string
1051
- };
1052
- var defaultProps$5 = {
1053
- tags: null,
1054
- parent: null,
1055
- onChange: null,
1056
- className: null
1057
- };
1058
- var TagSection = function TagSection(_ref) {
1059
- var tags = _ref.tags,
1060
- parent = _ref.parent,
1061
- onChange = _ref.onChange,
1062
- className = _ref.className;
1063
- var onItemChange = useCallback(function (e) {
1064
- var val = e.target.dataset.value || null;
1065
- onChange(val, parent);
1066
- }, [onChange, parent]);
1067
- return /*#__PURE__*/React.createElement("div", {
1068
- className: classNames([styles$5.container, 'd-flex', 'mt-1', _defineProperty({}, className, className !== null)])
1069
- }, tags !== null ? tags.map(function (_ref3) {
1070
- var label = _ref3.label,
1071
- value = _ref3.value,
1072
- active = _ref3.active;
1073
- var itemClassNames = classNames([styles$5.tag, 'btn', 'btn-sm', 'mb-1', 'me-1', 'p-1', 'btn-secondary', 'text-truncate', {
1074
- 'btn-primary': active === true
1075
- // 'btn-outline-light': active === false,
1076
- }]);
1077
- return /*#__PURE__*/React.createElement("button", {
1078
- className: itemClassNames,
1079
- type: "button",
1080
- key: "tag-".concat(value),
1081
- onClick: onItemChange,
1082
- "data-value": value
1083
- }, label);
1084
- }) : null);
1085
- };
1086
- TagSection.propTypes = propTypes$5;
1087
- TagSection.defaultProps = defaultProps$5;
1088
- var TagSection$1 = TagSection;
1089
-
1090
- var styles$4 = {"container":"micromag-media-gallery-forms-search-filters-container","closeBtn":"micromag-media-gallery-forms-search-filters-closeBtn","section":"micromag-media-gallery-forms-search-filters-section","title":"micromag-media-gallery-forms-search-filters-title","tags":"micromag-media-gallery-forms-search-filters-tags"};
1091
-
1092
- var propTypes$4 = {
1093
- filters: PropTypes$1.object,
1094
- // eslint-disable-line
1095
- sections: PropTypes$1.arrayOf(PropTypes$1.shape({})),
1096
- onChange: PropTypes$1.func,
1097
- onClose: PropTypes$1.func,
1098
- className: PropTypes$1.string
1099
- };
1100
- var defaultProps$4 = {
1101
- filters: null,
1102
- sections: [],
1103
- onChange: null,
1104
- onClose: null,
1105
- className: null
1106
- };
1107
- var SearchFilters = function SearchFilters(_ref) {
1108
- var filters = _ref.filters,
1109
- sections = _ref.sections,
1110
- onChange = _ref.onChange,
1111
- onClose = _ref.onClose,
1112
- className = _ref.className;
1113
- var intl = useIntl();
1114
- var getActive = useCallback(function (items, sectionFilters) {
1115
- return items !== null ? items.map(function (it) {
1116
- return _objectSpread(_objectSpread({}, it), {}, {
1117
- active: sectionFilters ? !!sectionFilters.find(function (f) {
1118
- return f === it.value;
1119
- }) : false
1120
- });
1121
- }) : [];
1122
- }, []);
1123
- var activeSections = useMemo(function () {
1124
- return sections.map(function (section) {
1125
- return _objectSpread(_objectSpread({}, section), {}, {
1126
- items: getActive(section.items, filters[section.value])
1127
- });
1128
- });
1129
- }, [getActive, sections, filters]);
1130
- var onSectionChange = useCallback(function (data, section) {
1131
- var val = filters[section] ? filters[section] : [];
1132
- var found = !!val.find(function (f) {
1133
- return f === data;
1134
- });
1135
- if (found) {
1136
- onChange(section, val.filter(function (f) {
1137
- return f !== data;
1138
- }));
1139
- } else if (data) {
1140
- if (section === 'recent') {
1141
- onChange('search', data);
1142
- } else if (section === 'usage') {
1143
- onChange(section, [data]);
1144
- } else {
1145
- onChange(section, [].concat(_toConsumableArray(val), [data]));
1146
- }
1147
- }
1148
- }, [filters, onChange]);
1149
- return /*#__PURE__*/React.createElement("div", {
1150
- className: classNames([styles$4.container, 'flex-nowrap', 'mt-1', _defineProperty({}, className, className !== null)])
1151
- }, activeSections.length > 0 ? /*#__PURE__*/React.createElement("div", {
1152
- className: classNames(['bg-dark', 'flex-nowrap', 'text-dark', 'py-1', 'px-3', 'rounded'])
1153
- }, /*#__PURE__*/React.createElement(Button, {
1154
- className: classNames([styles$4.closeBtn, 'py-1', 'px-1', 'text-light']),
1155
- icon: /*#__PURE__*/React.createElement(FontAwesomeIcon, {
1156
- icon: faTimes
1157
- }),
1158
- onClick: onClose,
1159
- title: intl.formatMessage({
1160
- id: "yCXMzz",
1161
- defaultMessage: [{
1162
- "type": 0,
1163
- "value": "Close"
1164
- }]
1165
- })
1166
- }), activeSections.map(function (_ref3) {
1167
- var value = _ref3.value,
1168
- label = _ref3.label,
1169
- items = _ref3.items;
1170
- return items.length > 0 ? /*#__PURE__*/React.createElement("div", {
1171
- key: "filter-".concat(value),
1172
- className: classNames([styles$4.section, 'py-2'])
1173
- }, /*#__PURE__*/React.createElement("p", {
1174
- className: classNames([styles$4.title, 'm-0'])
1175
- }, label), value === 'tags' || value === 'recent' || value === 'users' ? /*#__PURE__*/React.createElement(TagDropdown$1, {
1176
- className: classNames([styles$4.tags]),
1177
- tags: items,
1178
- parent: value,
1179
- onChange: onSectionChange
1180
- }) : /*#__PURE__*/React.createElement(TagSection$1, {
1181
- className: classNames([styles$4.tags]),
1182
- tags: items,
1183
- parent: value,
1184
- onChange: onSectionChange
1185
- })) : null;
1186
- })) : null);
1187
- };
1188
- SearchFilters.propTypes = propTypes$4;
1189
- SearchFilters.defaultProps = defaultProps$4;
1190
- var SearchFilters$1 = SearchFilters;
1191
-
1192
- var styles$3 = {"container":"micromag-media-gallery-buttons-close-container"};
1193
-
1194
- var _excluded = ["className"];
1195
- var propTypes$3 = {
1196
- className: PropTypes$1.string
1197
- };
1198
- var defaultProps$3 = {
1199
- className: null
1200
- };
1201
- var CloseButton = function CloseButton(_ref) {
1202
- var className = _ref.className,
1203
- props = _objectWithoutProperties(_ref, _excluded);
1204
- return /*#__PURE__*/React.createElement(Button, Object.assign({
1205
- className: classNames([styles$3.container, _defineProperty({}, className, className !== null)]),
1206
- withoutStyle: true,
1207
- icon: /*#__PURE__*/React.createElement(FontAwesomeIcon, {
1208
- icon: faTimes,
1209
- className: styles$3.icon
1210
- }),
1211
- iconPosition: "right"
1212
- }, props));
1213
- };
1214
- CloseButton.propTypes = propTypes$3;
1215
- CloseButton.defaultProps = defaultProps$3;
1216
- var CloseButton$1 = CloseButton;
1217
-
1218
- var styles$2 = {"container":"micromag-media-gallery-partials-active-filters-container","heading":"micromag-media-gallery-partials-active-filters-heading","title":"micromag-media-gallery-partials-active-filters-title","resetButton":"micromag-media-gallery-partials-active-filters-resetButton","activeTag":"micromag-media-gallery-partials-active-filters-activeTag"};
1219
-
1220
- var propTypes$2 = {
1221
- filters: PropTypes$1.shape({
1222
- types: PropTypes$1.arrayOf(PropTypes$1.string),
1223
- tags: PropTypes$1.arrayOf(PropTypes$1.string),
1224
- users: PropTypes$1.arrayOf(PropTypes$1.string),
1225
- usage: PropTypes$1.arrayOf(PropTypes$1.oneOf(['used', 'unused']))
135
+ var propTypes = {
136
+ value: PropTypes.shape({
137
+ id: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
1226
138
  }),
1227
- onChange: PropTypes$1.func,
1228
- onReset: PropTypes$1.func,
1229
- sections: PropTypes$1.arrayOf(PropTypes$1.shape({})),
1230
- className: PropTypes$1.string
1231
- };
1232
- var defaultProps$2 = {
1233
- filters: null,
1234
- onChange: null,
1235
- onReset: null,
1236
- sections: [],
1237
- className: null
1238
- };
1239
- function ActiveFilters(_ref) {
1240
- var filters = _ref.filters,
1241
- onChange = _ref.onChange,
1242
- onReset = _ref.onReset,
1243
- sections = _ref.sections,
1244
- className = _ref.className;
1245
- var handleReset = useCallback(function () {
1246
- if (onReset !== null) {
1247
- onReset();
1248
- }
1249
- }, [onReset]);
1250
- var removeFilter = useCallback(function (key, activeValue) {
1251
- var newFilterValue = filters[key].filter(function (it) {
1252
- return it !== activeValue;
1253
- });
1254
- var newValue = newFilterValue.length > 0 ? newFilterValue : null;
1255
- if (onChange !== null) {
1256
- onChange(key, newValue);
1257
- }
1258
- }, [onChange, filters]);
1259
- var hasValue = Object.keys(filters).reduce(function (oneHasValue, key) {
1260
- return oneHasValue || filters[key] !== null;
1261
- }, false);
1262
- return /*#__PURE__*/React.createElement("div", {
1263
- className: classNames(['w-100', styles$2.container, _defineProperty({}, className, className)])
1264
- }, hasValue ? /*#__PURE__*/React.createElement("div", {
1265
- className: styles$2.heading
1266
- }, /*#__PURE__*/React.createElement("div", {
1267
- className: styles$2.title
1268
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
1269
- id: "t2cFdl",
1270
- defaultMessage: [{
1271
- "type": 0,
1272
- "value": "Active filters"
1273
- }]
1274
- })), /*#__PURE__*/React.createElement(CloseButton$1, {
1275
- className: styles$2.resetButton,
1276
- onClick: handleReset
1277
- }, /*#__PURE__*/React.createElement("u", null, /*#__PURE__*/React.createElement(FormattedMessage, {
1278
- id: "/T/UDH",
1279
- defaultMessage: [{
1280
- "type": 0,
1281
- "value": "Remove all"
1282
- }]
1283
- })))) : null, filters !== null ? Object.keys(filters).map(function (key) {
1284
- var section = sections.find(function (s) {
1285
- return s.value === key;
1286
- });
1287
- return section && filters[key] !== null ? filters[key].map(function (activeValue) {
1288
- var current = section.items.find(function (s) {
1289
- return s.value === activeValue;
1290
- });
1291
- var _ref3 = current || {},
1292
- _ref3$label = _ref3.label,
1293
- label = _ref3$label === void 0 ? '' : _ref3$label;
1294
- return /*#__PURE__*/React.createElement(Button, {
1295
- className: styles$2.activeTag,
1296
- key: "filter-button-".concat(activeValue),
1297
- type: "submit",
1298
- size: "sm",
1299
- label: /*#__PURE__*/React.createElement("span", null, section.label, " : ", label),
1300
- theme: "secondary",
1301
- icon: /*#__PURE__*/React.createElement(FontAwesomeIcon, {
1302
- icon: faTimes
1303
- }),
1304
- iconPosition: "right",
1305
- onClick: function onClick() {
1306
- return removeFilter(key, activeValue);
1307
- }
1308
- });
1309
- }) : null;
1310
- }) : null);
1311
- }
1312
- ActiveFilters.propTypes = propTypes$2;
1313
- ActiveFilters.defaultProps = defaultProps$2;
1314
-
1315
- var styles$1 = {"container":"micromag-media-gallery-partials-navbar-container","inner":"micromag-media-gallery-partials-navbar-inner","mediaPreview":"micromag-media-gallery-partials-navbar-mediaPreview","thumbnail":"micromag-media-gallery-partials-navbar-thumbnail","mediaLabel":"micromag-media-gallery-partials-navbar-mediaLabel"};
1316
-
1317
- var propTypes$1 = {
1318
- types: PropTypes$1.arrayOf(PropTypes$1.string),
1319
- filters: filtersValue,
1320
- media: PropTypes.media,
1321
- selectedMedia: PropTypes.media,
1322
- storyId: PropTypes$1.oneOfType([PropTypes$1.string, PropTypes$1.number]),
1323
- tags: PropTypes.tags,
1324
- authors: PropTypes$1.arrayOf(PropTypes$1.shape({
1325
- name: PropTypes$1.string
139
+ types: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
140
+ source: PropTypes.string,
141
+ filters: PropTypes.arrayOf(PropTypes.shape({
142
+ id: PropTypes.string
1326
143
  })),
1327
- loading: PropTypes$1.bool,
1328
- withoutSource: PropTypes$1.bool,
1329
- withoutType: PropTypes$1.bool,
1330
- onClickAdd: PropTypes$1.func,
1331
- onClickItem: PropTypes$1.func,
1332
- onClickItemInfo: PropTypes$1.func,
1333
- onClickClear: PropTypes$1.func,
1334
- // TODO: still needed?
1335
- onFocusSearch: PropTypes$1.func,
1336
- onFiltersChange: PropTypes$1.func,
1337
- onClickBack: PropTypes$1.func,
1338
- className: PropTypes$1.string
1339
- };
1340
- var defaultProps$1 = {
1341
- types: null,
1342
- filters: null,
1343
- media: null,
1344
- selectedMedia: null,
1345
- storyId: null,
1346
- tags: [],
1347
- authors: [],
1348
- loading: false,
1349
- withoutSource: false,
1350
- withoutType: true,
1351
- onClickAdd: null,
1352
- onClickItem: null,
1353
- onClickItemInfo: null,
1354
- onClickClear: null,
1355
- onFocusSearch: null,
1356
- onFiltersChange: null,
1357
- onClickBack: null,
1358
- className: null
1359
- };
1360
- function Navbar(_ref) {
1361
- var types = _ref.types,
1362
- filters = _ref.filters,
1363
- media = _ref.media,
1364
- selectedMedia = _ref.selectedMedia,
1365
- storyId = _ref.storyId,
1366
- tags = _ref.tags,
1367
- authors = _ref.authors,
1368
- loading = _ref.loading,
1369
- withoutSource = _ref.withoutSource,
1370
- withoutType = _ref.withoutType,
1371
- className = _ref.className,
1372
- onClickAdd = _ref.onClickAdd,
1373
- onClickItem = _ref.onClickItem,
1374
- onClickItemInfo = _ref.onClickItemInfo,
1375
- onClickClear = _ref.onClickClear,
1376
- onFocusSearch = _ref.onFocusSearch,
1377
- onFiltersChange = _ref.onFiltersChange,
1378
- onClickBack = _ref.onClickBack;
1379
- var intl = useIntl();
1380
- var throttle = useRef(null);
1381
- var _useState = useState(false),
1382
- _useState2 = _slicedToArray(_useState, 2),
1383
- open = _useState2[0],
1384
- setOpen = _useState2[1];
1385
-
1386
- // TODO: get data from api for real testing
1387
-
1388
- var _useMediasRecentSearc = useMediasRecentSearches(),
1389
- getSearches = _useMediasRecentSearc.getSearches,
1390
- createSearch = _useMediasRecentSearc.createSearch;
1391
- var recent = useMemo(function () {
1392
- return getSearches();
1393
- }, [getSearches]);
1394
- var _useSearchFilters = useSearchFilters({
1395
- recent: recent.map(function (val) {
1396
- return {
1397
- value: val,
1398
- label: val
1399
- };
1400
- }),
1401
- tags: tags !== null ? tags.map(function (t) {
1402
- return {
1403
- value: t.name,
1404
- label: t.name
1405
- };
1406
- }) : [],
1407
- team: authors || [],
1408
- withType: !withoutType,
1409
- storyId: storyId
1410
- }),
1411
- sources = _useSearchFilters.sources,
1412
- sections = _useSearchFilters.sections;
1413
- var searchValue = filters !== null ? filters.search || null : null;
1414
- var hasFilter = filters !== null ? Object.keys(filters).reduce(function (acc, val) {
1415
- if (val !== 'type' && val !== 'search' && val !== 'source' && filters[val] !== null && filters[val].length > 0) {
1416
- return true;
1417
- }
1418
- return acc;
1419
- }, false) : false;
1420
- var onFilterChange = useCallback(function (type, value) {
1421
- var isOpen = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
1422
- var newFiltersValue = _objectSpread(_objectSpread({}, filters), {}, _defineProperty({}, type, value));
1423
- if (onFiltersChange !== null) {
1424
- onFiltersChange(newFiltersValue);
1425
- }
1426
- setOpen(isOpen);
1427
- }, [filters, onFiltersChange, setOpen]);
1428
- var onFiltersReset = useCallback(function () {
1429
- onFiltersChange({
1430
- type: filters.type || null,
1431
- search: filters.search || null,
1432
- source: filters.source || null
1433
- });
1434
- setOpen(false);
1435
- }, [filters, onFiltersChange]);
1436
- var onSearchChange = useCallback(function (value) {
1437
- if (throttle.current !== null) {
1438
- clearTimeout(throttle.current);
1439
- }
1440
- throttle.current = setTimeout(function () {
1441
- createSearch(value);
1442
- throttle.current = null;
1443
- }, 5000);
1444
- onFilterChange('search', value, !!value);
1445
- setOpen(false);
1446
- }, [onFilterChange, createSearch, setOpen, throttle]);
1447
- var onSourceChange = useCallback(function (value) {
1448
- onFilterChange('source', value);
1449
- }, [onFilterChange]);
1450
- var onSearchFocus = useCallback(function () {
1451
- if (onFocusSearch !== null) {
1452
- onFocusSearch();
1453
- }
1454
- }, [onFocusSearch]);
1455
- var onCloseFilters = useCallback(function () {
1456
- setOpen(false);
1457
- }, [setOpen]);
1458
- var onToggleMenu = useCallback(function () {
1459
- setOpen(!open);
1460
- }, [open, setOpen]);
1461
- var onClickRemove = useCallback(function () {
1462
- if (onClickClear !== null) {
1463
- onClickClear();
1464
- } else if (onClickItem !== null) {
1465
- onClickItem(null);
1466
- }
1467
- }, [onClickClear, onClickItem]);
1468
- var uploadMessage = useMemo(function () {
1469
- var message = /*#__PURE__*/React.createElement(FormattedMessage, {
1470
- id: "3Ap0C1",
1471
- defaultMessage: [{
1472
- "type": 0,
1473
- "value": "Upload a media"
1474
- }]
1475
- });
1476
- if (types !== null) {
1477
- if (types.indexOf('video') !== -1 && types.indexOf('image') !== -1) {
1478
- message = /*#__PURE__*/React.createElement(FormattedMessage, {
1479
- id: "KK5teQ",
1480
- defaultMessage: [{
1481
- "type": 0,
1482
- "value": "Upload a visual file"
1483
- }]
1484
- });
1485
- } else if (types.indexOf('video') !== -1) {
1486
- message = /*#__PURE__*/React.createElement(FormattedMessage, {
1487
- id: "WeD4nB",
1488
- defaultMessage: [{
1489
- "type": 0,
1490
- "value": "Upload a video file"
1491
- }]
1492
- });
1493
- } else if (types.indexOf('image') !== -1) {
1494
- message = /*#__PURE__*/React.createElement(FormattedMessage, {
1495
- id: "KdAKt7",
1496
- defaultMessage: [{
1497
- "type": 0,
1498
- "value": "Upload an image file"
1499
- }]
1500
- });
1501
- } else if (types.indexOf('audio') !== -1) {
1502
- message = /*#__PURE__*/React.createElement(FormattedMessage, {
1503
- id: "6W4St0",
1504
- defaultMessage: [{
1505
- "type": 0,
1506
- "value": "Upload an audio file"
1507
- }]
1508
- });
1509
- } else if (types.indexOf('subtitle') !== -1) {
1510
- message = /*#__PURE__*/React.createElement(FormattedMessage, {
1511
- id: "BAfC6s",
1512
- defaultMessage: [{
1513
- "type": 0,
1514
- "value": "Upload a closed captions file"
1515
- }]
1516
- });
1517
- }
1518
- }
1519
- return message;
1520
- }, [types]);
1521
- return /*#__PURE__*/React.createElement("nav", {
1522
- className: classNames([styles$1.container, 'navbar', _defineProperty({}, className, className !== null)])
1523
- }, /*#__PURE__*/React.createElement("div", {
1524
- className: classNames([styles$1.inner])
1525
- }, media === null ? /*#__PURE__*/React.createElement("div", {
1526
- className: classNames(['list-group-item rounded w-100 mw-100 navbar-text mb-2', {
1527
- 'border border-primary bg-dark py-2 px-2': selectedMedia !== null
1528
- }])
1529
- }, selectedMedia !== null ? /*#__PURE__*/React.createElement("div", {
1530
- className: ""
1531
- }, /*#__PURE__*/React.createElement("div", {
1532
- className: "d-flex align-items-center mb-2 overflow-hidden"
1533
- }, /*#__PURE__*/React.createElement(Media, {
1534
- className: styles$1.mediaPreview,
1535
- thumbnailClassName: styles$1.thumbnail,
1536
- thumbnail: selectedMedia === null || selectedMedia === void 0 ? void 0 : selectedMedia.thumbnail_url,
1537
- thumbnailAlign: "center"
1538
- }), /*#__PURE__*/React.createElement("span", {
1539
- className: classNames([styles$1.mediaLabel, 'd-inline-block', 'text-break', 'mx-1', 'me-2'])
1540
- }, selectedMedia.name || /*#__PURE__*/React.createElement(FormattedMessage, {
1541
- id: "fVqgfl",
1542
- defaultMessage: [{
1543
- "type": 0,
1544
- "value": "[no title]"
1545
- }]
1546
- }))), /*#__PURE__*/React.createElement("div", {
1547
- className: "d-flex w-100 align-content-center justify-content-between"
1548
- }, /*#__PURE__*/React.createElement(Button, {
1549
- onClick: function onClick() {
1550
- return onClickItemInfo(selectedMedia);
1551
- },
1552
- theme: "secondary",
1553
- size: "sm",
1554
- iconPosition: "right",
1555
- icon: /*#__PURE__*/React.createElement(FontAwesomeIcon, {
1556
- icon: faInfoCircle
1557
- }),
1558
- outline: true
1559
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
1560
- id: "iCf/MP",
1561
- defaultMessage: [{
1562
- "type": 0,
1563
- "value": "Edit"
1564
- }]
1565
- })), /*#__PURE__*/React.createElement(Button, {
1566
- theme: "secondary",
1567
- size: "sm",
1568
- outline: true,
1569
- iconPosition: "right",
1570
- icon: /*#__PURE__*/React.createElement(FontAwesomeIcon, {
1571
- icon: faTimes
1572
- }),
1573
- onClick: onClickRemove,
1574
- title: intl.formatMessage({
1575
- id: "UG3SXh",
1576
- defaultMessage: [{
1577
- "type": 0,
1578
- "value": "Remove"
1579
- }]
1580
- })
1581
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
1582
- id: "8TbpT7",
1583
- defaultMessage: [{
1584
- "type": 0,
1585
- "value": "Remove"
1586
- }]
1587
- })))) : /*#__PURE__*/React.createElement(Button, {
1588
- className: "w-100",
1589
- theme: "primary",
1590
- icon: /*#__PURE__*/React.createElement(FontAwesomeIcon, {
1591
- icon: faPlus
1592
- }),
1593
- onClick: onClickAdd,
1594
- title: intl.formatMessage({
1595
- id: "Tt4jN1",
1596
- defaultMessage: [{
1597
- "type": 0,
1598
- "value": "Add"
1599
- }]
1600
- })
1601
- }, /*#__PURE__*/React.createElement("span", {
1602
- className: "ps-2"
1603
- }, uploadMessage))) : null, !withoutSource && media === null && sources !== null && sources.length > 1 ? /*#__PURE__*/React.createElement("div", {
1604
- className: "mb-2 d-flex w-100 align-items-center flex-nowrap"
1605
- }, /*#__PURE__*/React.createElement(DropdownSection, {
1606
- items: sources,
1607
- value: filters.source || null,
1608
- onChange: onSourceChange
1609
- })) : null, media !== null ? /*#__PURE__*/React.createElement("div", {
1610
- className: "w-100 d-flex flex-nowrap justify-content-between"
1611
- }, /*#__PURE__*/React.createElement("form", {
1612
- className: classNames(['d-flex', 'me-2'])
1613
- }, /*#__PURE__*/React.createElement(Button, {
1614
- theme: "secondary",
1615
- outline: true,
1616
- size: "sm",
1617
- icon: /*#__PURE__*/React.createElement(FontAwesomeIcon, {
1618
- icon: faChevronLeft
1619
- }),
1620
- onClick: onClickBack
1621
- })), /*#__PURE__*/React.createElement("strong", {
1622
- className: "navbar-text me-auto w-100 text-truncate text-light"
1623
- }, media !== null ? media.name : null)) : null, media === null ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
1624
- className: "d-flex w-100 flex-nowrap justify-content-between"
1625
- }, /*#__PURE__*/React.createElement(SearchForm, {
1626
- value: searchValue,
1627
- onChange: onSearchChange,
1628
- onFocus: onSearchFocus,
1629
- onClickIcon: onToggleMenu,
1630
- loading: loading,
1631
- className: classNames(['d-flex'])
1632
- })), open ? /*#__PURE__*/React.createElement("div", {
1633
- className: "d-flex w-100 my-1 flex-nowrap justify-content-between"
1634
- }, /*#__PURE__*/React.createElement(SearchFilters$1, {
1635
- filters: filters,
1636
- sections: sections,
1637
- onChange: onFilterChange,
1638
- onClose: onCloseFilters
1639
- })) : null) : null, hasFilter && !open && media === null ? /*#__PURE__*/React.createElement("div", {
1640
- className: "list-group-item py-2 px-2 d-flex w-100 my-2 flex-nowrap justify-content-between"
1641
- }, /*#__PURE__*/React.createElement(ActiveFilters, {
1642
- filters: filters,
1643
- sections: sections,
1644
- onChange: onFilterChange,
1645
- onReset: onFiltersReset
1646
- })) : null));
1647
- }
1648
- Navbar.propTypes = propTypes$1;
1649
- Navbar.defaultProps = defaultProps$1;
1650
-
1651
- var styles = {"container":"micromag-media-gallery-container","metadataOpened":"micromag-media-gallery-metadataOpened","gallery":"micromag-media-gallery-gallery","mediaMetadata":"micromag-media-gallery-mediaMetadata","content":"micromag-media-gallery-content","loading":"micromag-media-gallery-loading"};
1652
-
1653
- var videoTypes = ['video', 'image/gif'];
1654
- var propTypes = {
1655
- type: PropTypes$1.oneOfType([PropTypes$1.string, PropTypes$1.array]),
1656
- source: PropTypes$1.string,
1657
- isPicker: PropTypes$1.bool,
1658
- isSmall: PropTypes$1.bool,
1659
- withoutTitle: PropTypes$1.bool,
1660
- withoutSource: PropTypes$1.bool,
1661
- withoutType: PropTypes$1.bool,
1662
- medias: PropTypes.medias,
1663
- selectedMedia: PropTypes.media,
1664
- className: PropTypes$1.string,
1665
- navbarClassName: PropTypes$1.string,
1666
- onChange: PropTypes$1.func,
1667
- onClickMedia: PropTypes$1.func,
1668
- onClearMedia: PropTypes$1.func
144
+ isPicker: PropTypes.bool,
145
+ multiple: PropTypes.bool,
146
+ medias: PropTypes$1.medias,
147
+ buttons: PropTypes.arrayOf(PropTypes.shape({})),
148
+ className: PropTypes.string,
149
+ onChange: PropTypes.func
1669
150
  };
1670
151
  var defaultProps = {
1671
- type: null,
152
+ value: null,
153
+ types: null,
1672
154
  source: 'all',
155
+ filters: null,
1673
156
  isPicker: false,
1674
- isSmall: false,
1675
- withoutTitle: false,
1676
- withoutSource: false,
1677
- withoutType: true,
157
+ multiple: false,
1678
158
  medias: null,
1679
- selectedMedia: null,
159
+ buttons: null,
1680
160
  className: null,
1681
- navbarClassName: null,
1682
- onChange: null,
1683
- onClickMedia: null,
1684
- onClearMedia: null
161
+ onChange: null
1685
162
  };
1686
163
  function MediaGallery(_ref) {
1687
- var type = _ref.type,
164
+ var value = _ref.value,
165
+ types = _ref.types,
1688
166
  source = _ref.source,
167
+ filters$1 = _ref.filters,
1689
168
  isPicker = _ref.isPicker,
1690
- isSmall = _ref.isSmall,
1691
- withoutTitle = _ref.withoutTitle,
1692
- withoutSource = _ref.withoutSource,
1693
- withoutType = _ref.withoutType,
169
+ multiple = _ref.multiple,
1694
170
  initialMedias = _ref.medias,
1695
- selectedMedia = _ref.selectedMedia,
171
+ buttons = _ref.buttons,
1696
172
  className = _ref.className,
1697
- navbarClassName = _ref.navbarClassName,
1698
- onChange = _ref.onChange,
1699
- onClickMedia = _ref.onClickMedia,
1700
- onClearMedia = _ref.onClearMedia;
1701
- var intl = useIntl();
1702
- // Base state for filters
1703
- var defaultFilters = {
1704
- type: type,
1705
- source: source
1706
- };
1707
-
1708
- // Filters
1709
- var throttle = useRef(null);
1710
- var _useState = useState(defaultFilters),
1711
- _useState2 = _slicedToArray(_useState, 2),
1712
- queryValue = _useState2[0],
1713
- setQueryValue = _useState2[1];
1714
- var _useState3 = useState(defaultFilters),
1715
- _useState4 = _slicedToArray(_useState3, 2),
1716
- filtersValue = _useState4[0],
1717
- setFiltersValue = _useState4[1];
1718
- var story = useStory();
1719
- var _ref2 = story || {},
1720
- _ref2$id = _ref2.id,
1721
- storyId = _ref2$id === void 0 ? null : _ref2$id;
1722
- var _useMediaTags = useMediaTags(),
1723
- tags = _useMediaTags.tags;
1724
- var _useMediaAuthors = useMediaAuthors(),
1725
- authors = _useMediaAuthors.authors;
1726
- var onFiltersChange = useCallback(function (value) {
1727
- if (throttle.current !== null) {
1728
- clearTimeout(throttle.current);
1729
- }
1730
- throttle.current = setTimeout(function () {
1731
- setQueryValue(value);
1732
- throttle.current = null;
1733
- }, 500);
1734
- setFiltersValue(value);
1735
- }, [setFiltersValue, setQueryValue, throttle]);
1736
- var _useState5 = useState(initialMedias),
1737
- _useState6 = _slicedToArray(_useState5, 2),
1738
- defaultItems = _useState6[0],
1739
- setDefaultItems = _useState6[1];
1740
-
1741
- // Items
1742
- var _useMedias = useMedias(queryValue, 1, 30, {
1743
- pages: defaultItems
1744
- }),
1745
- loadedMedias = _useMedias.items,
1746
- _useMedias$loading = _useMedias.loading,
1747
- loading = _useMedias$loading === void 0 ? false : _useMedias$loading,
1748
- _useMedias$loadNextPa = _useMedias.loadNextPage,
1749
- loadNextPage = _useMedias$loadNextPa === void 0 ? null : _useMedias$loadNextPa,
1750
- _useMedias$allLoaded = _useMedias.allLoaded,
1751
- allLoaded = _useMedias$allLoaded === void 0 ? false : _useMedias$allLoaded;
1752
-
1753
- // Temporary type filter
1754
- var _useState7 = useState([]),
1755
- _useState8 = _slicedToArray(_useState7, 2),
1756
- addedMedias = _useState8[0],
1757
- setAddedMedias = _useState8[1];
1758
- var medias = useMemo(function () {
1759
- var allMedias = [].concat(_toConsumableArray(addedMedias), _toConsumableArray(loadedMedias || []));
1760
- return allMedias.length > 0 ? allMedias : null;
1761
- }, [loadedMedias, addedMedias]);
1762
-
1763
- // Medias
1764
- var _useState9 = useState(null),
1765
- _useState10 = _slicedToArray(_useState9, 2),
1766
- metadataMedia = _useState10[0],
1767
- setMetadataMedia = _useState10[1];
1768
- var onClickItem = useCallback(function (media) {
1769
- var _ref3 = media || {},
1770
- _ref3$id = _ref3.id,
1771
- mediaId = _ref3$id === void 0 ? null : _ref3$id;
1772
- var _ref4 = selectedMedia || {},
1773
- _ref4$id = _ref4.id,
1774
- selectedId = _ref4$id === void 0 ? null : _ref4$id;
1775
- var different = mediaId !== selectedId;
1776
- if (!isPicker) {
1777
- setMetadataMedia(media);
1778
- } else if (onClickMedia !== null) {
1779
- if (different) {
1780
- onClickMedia(media);
173
+ onChange = _ref.onChange;
174
+ var api = useApi();
175
+ var mediasApi = useMemo(function () {
176
+ return {
177
+ get: function get() {
178
+ var _api$medias;
179
+ return (_api$medias = api.medias).get.apply(_api$medias, arguments);
180
+ },
181
+ getTrashed: function getTrashed() {
182
+ var _api$medias2;
183
+ return (_api$medias2 = api.medias).get.apply(_api$medias2, arguments);
184
+ },
185
+ find: function find() {
186
+ var _api$medias3;
187
+ return (_api$medias3 = api.medias).find.apply(_api$medias3, arguments);
188
+ },
189
+ create: function create() {
190
+ var _api$medias4;
191
+ return (_api$medias4 = api.medias).create.apply(_api$medias4, arguments);
192
+ },
193
+ update: function update() {
194
+ var _api$medias5;
195
+ return (_api$medias5 = api.medias).update.apply(_api$medias5, arguments);
196
+ },
197
+ "delete": function _delete() {
198
+ var _api$medias6;
199
+ return (_api$medias6 = api.medias)["delete"].apply(_api$medias6, arguments);
200
+ },
201
+ trash: function trash() {
202
+ var _api$medias7;
203
+ return (_api$medias7 = api.medias)["delete"].apply(_api$medias7, arguments);
1781
204
  }
1782
- }
1783
- }, [isPicker, setMetadataMedia, onClickMedia, selectedMedia]);
1784
- var onClickRemoveItem = useCallback(function () {
1785
- setMetadataMedia(null);
1786
- if (onClickMedia !== null) {
1787
- onClickMedia(null);
1788
- }
1789
- }, [isPicker, setMetadataMedia, onClickMedia]);
1790
- var onClickItemInfo = useCallback(function (media) {
1791
- return setMetadataMedia(media);
1792
- }, [setMetadataMedia]);
1793
- var onMetadataClickClose = useCallback(function () {
1794
- setMetadataMedia(null);
1795
- }, [setMetadataMedia]);
1796
- var onMetadataClickDelete = useCallback(function () {
1797
- var mediaId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
1798
- var _ref5 = selectedMedia || {},
1799
- _ref5$id = _ref5.id,
1800
- selectedId = _ref5$id === void 0 ? null : _ref5$id;
1801
- if (mediaId !== null && mediaId === selectedId && onClickMedia !== null) {
1802
- onClickMedia(null);
1803
- }
1804
- setMetadataMedia(null);
1805
- }, [setMetadataMedia, onClickMedia, selectedMedia]);
1806
- var onMetadataChange = useCallback(function (val) {
1807
- setMetadataMedia(val);
1808
- var _ref6 = val || {},
1809
- _ref6$id = _ref6.id,
1810
- mediaId = _ref6$id === void 0 ? null : _ref6$id;
1811
- var _ref7 = selectedMedia || {},
1812
- _ref7$id = _ref7.id,
1813
- selectedId = _ref7$id === void 0 ? null : _ref7$id;
1814
- if (onChange !== null && mediaId === selectedId) {
1815
- onChange(val);
1816
- }
1817
- }, [setMetadataMedia, selectedMedia, onChange]);
1818
- useEffect(function () {
1819
- if (metadataMedia !== null) {
1820
- window.scrollTo(0, 0);
1821
- }
1822
- }, [metadataMedia]);
1823
-
1824
- // Navigation
1825
- var onClickBack = useCallback(function () {
1826
- setMetadataMedia(null);
1827
- }, [setMetadataMedia, setDefaultItems, setQueryValue]);
205
+ };
206
+ }, [api]);
1828
207
 
1829
208
  // Upload modal
1830
- var _useState11 = useState(false),
1831
- _useState12 = _slicedToArray(_useState11, 2),
1832
- uploading = _useState12[0],
1833
- setUploading = _useState12[1];
1834
- var _useState13 = useState(false),
1835
- _useState14 = _slicedToArray(_useState13, 2),
1836
- uploadModalOpened = _useState14[0],
1837
- setUploadModalOpened = _useState14[1];
1838
- var _useMediaCreate = useMediaCreate(),
1839
- createMedia = _useMediaCreate.create;
1840
- var onClickAdd = useCallback(function () {
209
+ var _useState = useState([]),
210
+ _useState2 = _slicedToArray(_useState, 2),
211
+ addedMedias = _useState2[0],
212
+ setAddedMedias = _useState2[1];
213
+ var _useState3 = useState(false),
214
+ _useState4 = _slicedToArray(_useState3, 2);
215
+ _useState4[0];
216
+ var setUploading = _useState4[1];
217
+ var _useState5 = useState(false),
218
+ _useState6 = _slicedToArray(_useState5, 2),
219
+ uploadModalOpened = _useState6[0],
220
+ setUploadModalOpened = _useState6[1];
221
+ useCallback(function () {
1841
222
  return setUploadModalOpened(true);
1842
223
  }, [setUploadModalOpened]);
224
+ var _useMediaCreate = useMediaCreate(),
225
+ createMedia = _useMediaCreate.create;
1843
226
  var onUploadCompleted = useCallback(function (newMedias) {
1844
227
  setUploading(true);
1845
228
  Promise.all(newMedias.map(createMedia)).then(function (newAddedMedias) {
@@ -1850,67 +233,69 @@ function MediaGallery(_ref) {
1850
233
  var onUploadRequestClose = useCallback(function () {
1851
234
  return setUploadModalOpened(false);
1852
235
  }, [setUploadModalOpened]);
236
+ var partialFilters = filters$1 || filters() || [];
237
+ var finalFilters = useMemo(function () {
238
+ return partialFilters.map(function (filter) {
239
+ var _ref2 = filter || {},
240
+ _ref2$id = _ref2.id,
241
+ id = _ref2$id === void 0 ? null : _ref2$id;
242
+ if (id === 'sources') {
243
+ return filter;
244
+ }
245
+ // if (id === 'tags' && tags !== null) {
246
+ // return { ...filter, options: tags };
247
+ // }
248
+ return filter;
249
+ });
250
+ }, [partialFilters]);
251
+ var _useState7 = useState(source !== null ? {
252
+ source: source
253
+ } : null),
254
+ _useState8 = _slicedToArray(_useState7, 2),
255
+ query = _useState8[0],
256
+ setQuery = _useState8[1];
257
+ var finalQuery = useMemo(function () {
258
+ setQuery(_objectSpread(_objectSpread({}, query || null), source !== null ? {
259
+ source: source
260
+ } : null));
261
+ }, [source, setQuery]);
262
+
263
+ // const finalValue = useMemo(() => {
264
+ // const allMedias = [...addedMedias, ...(value || [])];
265
+ // return allMedias.length > 0 ? allMedias : null;
266
+ // }, [value, addedMedias]);
267
+
1853
268
  return /*#__PURE__*/React.createElement("div", {
1854
- className: classNames([styles.container, _defineProperty(_defineProperty({}, styles.metadataOpened, metadataMedia !== null), className, className)])
1855
- }, /*#__PURE__*/React.createElement(Navbar, {
1856
- types: isArray(type) ? type : [type],
1857
- filters: filtersValue,
1858
- media: metadataMedia !== null ? metadataMedia : null,
1859
- selectedMedia: selectedMedia,
1860
- onFiltersChange: onFiltersChange,
1861
- onClickAdd: onClickAdd,
1862
- onClickItem: onClickItem,
1863
- onClickItemInfo: onClickItemInfo,
1864
- onClickBack: onClickBack,
1865
- onClickClear: onClearMedia,
1866
- withoutTitle: withoutTitle,
1867
- withoutSource: withoutSource,
1868
- withoutType: withoutType,
1869
- storyId: storyId,
1870
- authors: authors,
1871
- tags: tags,
1872
- loading: loading || uploading,
1873
- className: navbarClassName
1874
- }), /*#__PURE__*/React.createElement("div", {
1875
- className: styles.content
1876
- }, /*#__PURE__*/React.createElement("div", {
1877
- className: styles.gallery
1878
- }, medias !== null && !uploading ? /*#__PURE__*/React.createElement(Gallery, {
1879
- items: medias,
1880
- selectedItem: selectedMedia,
1881
- selectedFirst: true,
1882
- withInfoButton: isPicker,
1883
- isSmall: isSmall,
1884
- onClickItem: onClickItem,
1885
- onClickItemInfo: onClickItemInfo,
1886
- onClickRemoveItem: onClickRemoveItem
1887
- }) : null, !allLoaded ? /*#__PURE__*/React.createElement("div", {
1888
- className: "w-100 mb-2"
1889
- }, loading || uploading ? /*#__PURE__*/React.createElement(Spinner, {
1890
- className: styles.loading
1891
- }) : null, !loading && !uploading ? /*#__PURE__*/React.createElement(Button, {
1892
- className: "d-block mx-auto",
1893
- theme: "secondary",
1894
- outline: true,
1895
- onClick: loadNextPage
1896
- }, intl.formatMessage({
1897
- id: "ur6G0U",
1898
- defaultMessage: [{
1899
- "type": 0,
1900
- "value": "Load more"
1901
- }]
1902
- })) : null) : null), /*#__PURE__*/React.createElement("div", {
1903
- className: styles.mediaMetadata
1904
- }, /*#__PURE__*/React.createElement(MediaMetadata, {
1905
- media: metadataMedia,
1906
- tags: tags,
1907
- onChange: onMetadataChange,
1908
- onClickClose: onMetadataClickClose
1909
- // onClickSave={onMetadataClickSave}
1910
- ,
1911
- onClickDelete: onMetadataClickDelete
1912
- }))), /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(UploadModal, {
1913
- type: type === 'video' ? videoTypes : type,
269
+ className: classNames([styles.container, _defineProperty({}, className, className)])
270
+ }, /*#__PURE__*/React.createElement(QueryProvider, null, /*#__PURE__*/React.createElement(FieldsProvider, null, /*#__PURE__*/React.createElement(DisplaysProvider, null, /*#__PURE__*/React.createElement(FiltersProvider, null, isPicker ? /*#__PURE__*/React.createElement(MediasPickerContainer, {
271
+ className: styles.browser,
272
+ api: mediasApi,
273
+ value: value,
274
+ theme: "dark",
275
+ types: types,
276
+ query: finalQuery,
277
+ multiple: multiple,
278
+ items: initialMedias,
279
+ filters: finalFilters,
280
+ onChange: onChange,
281
+ buttons: buttons,
282
+ buttonsClassName: "ms-xl-auto",
283
+ withStickySelection: true
284
+ }) : /*#__PURE__*/React.createElement(MediasBrowserContainer, {
285
+ className: styles.browser,
286
+ api: mediasApi,
287
+ value: value,
288
+ theme: "dark",
289
+ types: types,
290
+ query: finalQuery,
291
+ multiple: multiple,
292
+ items: initialMedias,
293
+ filters: finalFilters,
294
+ buttons: buttons,
295
+ buttonsClassName: "ms-xl-auto",
296
+ withStickySelection: true
297
+ }))))), /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(UploadModal, {
298
+ types: types,
1914
299
  opened: uploadModalOpened,
1915
300
  onUploaded: onUploadCompleted,
1916
301
  onRequestClose: onUploadRequestClose