@panneau/medias 3.0.261 → 3.0.262

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 ADDED
@@ -0,0 +1,1769 @@
1
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
+ import classNames from 'classnames';
4
+ import PropTypes from 'prop-types';
5
+ import React, { useContext, useMemo, useCallback, useState, useEffect } from 'react';
6
+ import { FormattedMessage } from 'react-intl';
7
+ import { useFieldComponent, usePanneauResource } from '@panneau/core/contexts';
8
+ import { useForm, useQuery } from '@panneau/core/hooks';
9
+ import Button from '@panneau/element-button';
10
+ import Form from '@panneau/element-form';
11
+ import FormStatus from '@panneau/element-form-status';
12
+ import UploadField from '@panneau/field-upload';
13
+ import ImageDisplay from '@panneau/display-image';
14
+ import MediaPlayer from '@panneau/element-media-player';
15
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
16
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
17
+ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
18
+ import isArray from 'lodash/isArray';
19
+ import uniqBy from 'lodash/uniqBy';
20
+ import { PropTypes as PropTypes$1 } from '@panneau/core';
21
+ import Buttons from '@panneau/element-buttons';
22
+ import Grid from '@panneau/element-grid';
23
+ import Icon from '@panneau/element-icon';
24
+ import MediaCard from '@panneau/element-media-card';
25
+ import Pagination from '@panneau/element-pagination';
26
+ import Table from '@panneau/element-table';
27
+ import Filters from '@panneau/filter-filters';
28
+ import { useItemsStore, useData, useApi } from '@panneau/data';
29
+
30
+ /* eslint-disable react/jsx-props-no-spreading */
31
+ var MediasApiContext = /*#__PURE__*/React.createContext(null);
32
+ var useMediasApi = function useMediasApi() {
33
+ return useContext(MediasApiContext);
34
+ };
35
+ var apiPropTypes = PropTypes.shape({
36
+ get: PropTypes.func.isRequired,
37
+ getTrashed: PropTypes.func.isRequired,
38
+ create: PropTypes.func.isRequired,
39
+ find: PropTypes.func.isRequired,
40
+ update: PropTypes.func.isRequired,
41
+ trash: PropTypes.func.isRequired,
42
+ restore: PropTypes.func.isRequired,
43
+ "delete": PropTypes.func.isRequired
44
+ });
45
+ var propTypes$9 = {
46
+ api: apiPropTypes,
47
+ children: PropTypes.node.isRequired
48
+ };
49
+ var defaultProps$9 = {
50
+ api: null
51
+ };
52
+ function MediasApiProvider(_ref) {
53
+ var providedApi = _ref.api,
54
+ children = _ref.children;
55
+ var previousApi = useMediasApi();
56
+ var api = useMemo(function () {
57
+ return providedApi || previousApi;
58
+ }, [providedApi, previousApi]);
59
+ return /*#__PURE__*/React.createElement(MediasApiContext.Provider, {
60
+ value: api
61
+ }, children);
62
+ }
63
+ MediasApiProvider.propTypes = propTypes$9;
64
+ MediasApiProvider.defaultProps = defaultProps$9;
65
+
66
+ var _excluded$7 = ["items"];
67
+ var useMedias = function useMedias() {
68
+ var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
69
+ var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
70
+ var count = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
71
+ var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
72
+ var api = useMediasApi();
73
+ var trashed = useMemo(function () {
74
+ var _ref = opts || {},
75
+ _ref$trashed = _ref.trashed,
76
+ trashedOpt = _ref$trashed === void 0 ? false : _ref$trashed;
77
+ return trashedOpt;
78
+ }, [opts]);
79
+ var finalQuery = useMemo(function () {
80
+ return _objectSpread(_objectSpread({}, query), {}, {
81
+ trashed: trashed
82
+ });
83
+ }, [query, trashed]);
84
+ var getItems = useCallback(function () {
85
+ var requestedPage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
86
+ return trashed ? api.getTrashed(query, requestedPage, count) : api.get(query, requestedPage, count);
87
+ }, [api, query, count, trashed]);
88
+ var _useItemsStore = useItemsStore('medias', _objectSpread({
89
+ getPage: page !== null ? getItems : null,
90
+ getItems: page === null ? getItems : null,
91
+ page: page,
92
+ count: count,
93
+ query: finalQuery
94
+ }, opts)),
95
+ items = _useItemsStore.items,
96
+ props = _objectWithoutProperties(_useItemsStore, _excluded$7);
97
+ return _objectSpread({
98
+ items: items
99
+ }, props);
100
+ };
101
+ var useMedias$1 = useMedias;
102
+
103
+ var _excluded$6 = ["data"];
104
+ var useMedia = function useMedia(id, opts) {
105
+ var api = useMediasApi();
106
+ var loader = useCallback(function () {
107
+ return api.find(id);
108
+ }, [api, id]);
109
+ var _useData = useData(loader, opts),
110
+ data = _useData.data,
111
+ request = _objectWithoutProperties(_useData, _excluded$6);
112
+ return _objectSpread({
113
+ story: data
114
+ }, request);
115
+ };
116
+ var useMedia$1 = useMedia;
117
+
118
+ var useMediaCreate = function useMediaCreate() {
119
+ var _useState = useState(false),
120
+ _useState2 = _slicedToArray(_useState, 2),
121
+ creating = _useState2[0],
122
+ setCreating = _useState2[1];
123
+ var api = useMediasApi();
124
+ var create = useCallback(function (data) {
125
+ setCreating(true);
126
+ return api.create(data).then(function (response) {
127
+ setCreating(false);
128
+ return response;
129
+ });
130
+ }, [api, setCreating]);
131
+ return {
132
+ create: create,
133
+ creating: creating
134
+ };
135
+ };
136
+ var useMediaCreate$1 = useMediaCreate;
137
+
138
+ var useMediaUpdate = function useMediaUpdate() {
139
+ var _useState = useState(false),
140
+ _useState2 = _slicedToArray(_useState, 2),
141
+ updating = _useState2[0],
142
+ setUpdating = _useState2[1];
143
+ var api = useMediasApi();
144
+ var update = useCallback(function (id, data) {
145
+ setUpdating(true);
146
+ return api.update(id, data).then(function (response) {
147
+ setUpdating(false);
148
+ return response;
149
+ });
150
+ }, [api, setUpdating]);
151
+ return {
152
+ update: update,
153
+ updating: updating
154
+ };
155
+ };
156
+ var useMediaUpdate$1 = useMediaUpdate;
157
+
158
+ var useMediaDelete = function useMediaDelete() {
159
+ var _useState = useState(false),
160
+ _useState2 = _slicedToArray(_useState, 2),
161
+ deleting = _useState2[0],
162
+ setDeleting = _useState2[1];
163
+ var api = useMediasApi();
164
+ var mediaDelete = useCallback(function (id, data) {
165
+ setDeleting(true);
166
+ return api["delete"](id, data).then(function (response) {
167
+ setDeleting(false);
168
+ return response;
169
+ });
170
+ }, [api, setDeleting]);
171
+ return {
172
+ mediaDelete: mediaDelete,
173
+ deleting: deleting
174
+ };
175
+ };
176
+ var useMediaDelete$1 = useMediaDelete;
177
+
178
+ var useMediaTrash = function useMediaTrash() {
179
+ var _useState = useState(false),
180
+ _useState2 = _slicedToArray(_useState, 2),
181
+ trashing = _useState2[0],
182
+ setTrashing = _useState2[1];
183
+ var api = useMediasApi();
184
+ var mediaTrash = useCallback(function (id, data) {
185
+ setTrashing(true);
186
+ return api.trash(id, data).then(function (response) {
187
+ setTrashing(false);
188
+ return response;
189
+ });
190
+ }, [api, setTrashing]);
191
+ return {
192
+ mediaTrash: mediaTrash,
193
+ trashing: trashing
194
+ };
195
+ };
196
+ var useMediaTrash$1 = useMediaTrash;
197
+
198
+ var useMediaRestore = function useMediaRestore() {
199
+ var _useState = useState(false),
200
+ _useState2 = _slicedToArray(_useState, 2),
201
+ restoring = _useState2[0],
202
+ setRestoring = _useState2[1];
203
+ var api = useMediasApi();
204
+ var mediaRestore = useCallback(function (id, data) {
205
+ setRestoring(true);
206
+ return api.restore(id, data).then(function (response) {
207
+ setRestoring(false);
208
+ return response;
209
+ });
210
+ }, [api, setRestoring]);
211
+ return {
212
+ mediaRestore: mediaRestore,
213
+ restoring: restoring
214
+ };
215
+ };
216
+ var useMediaRestore$1 = useMediaRestore;
217
+
218
+ var useMediaReplace = function useMediaReplace() {
219
+ var _useState = useState(false),
220
+ _useState2 = _slicedToArray(_useState, 2),
221
+ replacing = _useState2[0],
222
+ setReplacing = _useState2[1];
223
+ var api = useMediasApi();
224
+ var mediaReplace = useCallback(function (id, data) {
225
+ setReplacing(true);
226
+ return api.replace(id, data).then(function (response) {
227
+ setReplacing(false);
228
+ return response;
229
+ });
230
+ }, [api, setReplacing]);
231
+ return {
232
+ mediaReplace: mediaReplace,
233
+ replacing: replacing
234
+ };
235
+ };
236
+ var useMediaReplace$1 = useMediaReplace;
237
+
238
+ var styles = {"mediaFrame":"panneau-medias-mediaFrame","playButton":"panneau-medias-playButton"};
239
+
240
+ var propTypes$8 = {
241
+ value: PropTypes.shape({
242
+ id: PropTypes.string,
243
+ type: PropTypes.string
244
+ }),
245
+ showPlayer: PropTypes.bool,
246
+ className: PropTypes.string
247
+ };
248
+ var defaultProps$8 = {
249
+ value: null,
250
+ showPlayer: true,
251
+ className: null
252
+ };
253
+ function MediaFrame(_ref) {
254
+ var value = _ref.value,
255
+ initialShowPlayer = _ref.showPlayer,
256
+ className = _ref.className;
257
+ var _useState = useState(initialShowPlayer),
258
+ _useState2 = _slicedToArray(_useState, 2),
259
+ showPlayer = _useState2[0],
260
+ setShowPlayer = _useState2[1];
261
+ var _ref2 = value || {},
262
+ _ref2$type = _ref2.type,
263
+ type = _ref2$type === void 0 ? null : _ref2$type;
264
+ var onClick = useCallback(function () {
265
+ setShowPlayer(!showPlayer);
266
+ }, [showPlayer, setShowPlayer]);
267
+ return /*#__PURE__*/React.createElement("div", {
268
+ className: classNames([styles.mediaFrame, 'position-relative', 'd-flex', 'flex-grow-1', 'w-100', 'mw-100', _defineProperty({}, className, className != null)])
269
+ }, showPlayer && type !== 'image' ? /*#__PURE__*/React.createElement(MediaPlayer, {
270
+ value: value,
271
+ autoPlay: false,
272
+ width: "100%"
273
+ }) : /*#__PURE__*/React.createElement(ImageDisplay, {
274
+ className: "w-100",
275
+ value: value,
276
+ maxWidth: "100%",
277
+ maxHeight: "100%",
278
+ onClick: type === 'video' || type === 'audio' ? onClick : null
279
+ }));
280
+ }
281
+ MediaFrame.propTypes = propTypes$8;
282
+ MediaFrame.defaultProps = defaultProps$8;
283
+
284
+ var defaultFields = [{
285
+ name: 'name',
286
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
287
+ id: "WX83V9",
288
+ defaultMessage: [{
289
+ "type": 0,
290
+ "value": "File name"
291
+ }]
292
+ }),
293
+ type: 'text',
294
+ component: 'text'
295
+ }, {
296
+ name: 'description',
297
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
298
+ id: "ygNvmz",
299
+ defaultMessage: [{
300
+ "type": 0,
301
+ "value": "Description"
302
+ }]
303
+ }),
304
+ type: 'text',
305
+ component: 'text'
306
+ },
307
+ // Creatable example
308
+ // {
309
+ // name: 'tags',
310
+ // label: <FormattedMessage defaultMessage="Tags" description="Field name" />,
311
+ // type: 'array',
312
+ // component: 'select',
313
+ // requestUrl: '/api/tags',
314
+ // optionLabelPath: 'label',
315
+ // optionValuePath: 'id', // Uses taggable so change the logic here
316
+ // valueIsOption: true,
317
+ // multiple: true,
318
+ // paginated: false,
319
+ // creatable: true, // TODO
320
+ // },
321
+ {
322
+ id: 'info',
323
+ component: 'fields',
324
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
325
+ id: "3RT69u",
326
+ defaultMessage: [{
327
+ "type": 0,
328
+ "value": "Informations"
329
+ }]
330
+ }),
331
+ isList: true,
332
+ hideWithoutValue: true,
333
+ fields: [{
334
+ id: 'user',
335
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
336
+ id: "yByaBh",
337
+ defaultMessage: [{
338
+ "type": 0,
339
+ "value": "Added by"
340
+ }]
341
+ }),
342
+ type: 'display',
343
+ display: 'avatar',
344
+ name: 'user',
345
+ horizontal: true
346
+ }, {
347
+ id: 'created_at',
348
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
349
+ id: "PN+75e",
350
+ defaultMessage: [{
351
+ "type": 0,
352
+ "value": "Created at"
353
+ }]
354
+ }),
355
+ type: 'display',
356
+ display: 'date',
357
+ name: 'created_at',
358
+ format: 'yyyy-MM-dd hh:ss',
359
+ horizontal: true
360
+ }]
361
+ }, {
362
+ id: 'technical',
363
+ component: 'fields',
364
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
365
+ id: "xKUOLG",
366
+ defaultMessage: [{
367
+ "type": 0,
368
+ "value": "Technical details"
369
+ }]
370
+ }),
371
+ isList: true,
372
+ hideWithoutValue: true,
373
+ fields: [{
374
+ id: 'format',
375
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
376
+ id: "JuxiUN",
377
+ defaultMessage: [{
378
+ "type": 0,
379
+ "value": "Format"
380
+ }]
381
+ }),
382
+ type: 'display',
383
+ display: 'unit',
384
+ format: 'format',
385
+ name: 'format',
386
+ horizontal: true
387
+ }, {
388
+ id: 'dimensions',
389
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
390
+ id: "rmJBin",
391
+ defaultMessage: [{
392
+ "type": 0,
393
+ "value": "Dimensions"
394
+ }]
395
+ }),
396
+ type: 'display',
397
+ display: 'unit',
398
+ format: 'dimensions',
399
+ name: 'metadata',
400
+ horizontal: true
401
+ }, {
402
+ id: 'size',
403
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
404
+ id: "g2CRt5",
405
+ defaultMessage: [{
406
+ "type": 0,
407
+ "value": "Size"
408
+ }]
409
+ }),
410
+ type: 'display',
411
+ display: 'unit',
412
+ format: 'bytes',
413
+ name: 'metadata.size',
414
+ horizontal: true
415
+ }, {
416
+ id: 'duration',
417
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
418
+ id: "wU++NJ",
419
+ defaultMessage: [{
420
+ "type": 0,
421
+ "value": "Duration"
422
+ }]
423
+ }),
424
+ type: 'display',
425
+ display: 'unit',
426
+ format: 'duration',
427
+ name: 'metadata.duration',
428
+ horizontal: true
429
+ }]
430
+ }];
431
+
432
+ var propTypes$7 = {
433
+ value: PropTypes.shape({
434
+ id: PropTypes.string
435
+ }),
436
+ fields: PropTypes.arrayOf(PropTypes.shape({
437
+ name: PropTypes.string
438
+ })),
439
+ onChange: PropTypes.func,
440
+ onSave: PropTypes.func,
441
+ onReplaceUploadComplete: PropTypes.func,
442
+ onDelete: PropTypes.func,
443
+ onClose: PropTypes.func,
444
+ withDelete: PropTypes.bool,
445
+ withTrash: PropTypes.bool,
446
+ withReplace: PropTypes.bool,
447
+ className: PropTypes.string,
448
+ children: PropTypes.node
449
+ };
450
+ var defaultProps$7 = {
451
+ value: null,
452
+ fields: defaultFields,
453
+ onChange: null,
454
+ onSave: null,
455
+ onReplaceUploadComplete: null,
456
+ onDelete: null,
457
+ onClose: null,
458
+ withDelete: false,
459
+ withTrash: false,
460
+ withReplace: false,
461
+ className: null,
462
+ children: null
463
+ };
464
+ function MediaForm(_ref) {
465
+ var initialValue = _ref.value,
466
+ initialFields = _ref.fields,
467
+ onChange = _ref.onChange,
468
+ onSave = _ref.onSave,
469
+ onReplaceUploadComplete = _ref.onReplaceUploadComplete,
470
+ onDelete = _ref.onDelete,
471
+ onClose = _ref.onClose,
472
+ withDelete = _ref.withDelete,
473
+ withTrash = _ref.withTrash,
474
+ withReplace = _ref.withReplace,
475
+ className = _ref.className,
476
+ children = _ref.children;
477
+ var FieldsComponent = useFieldComponent('fields');
478
+ var _useMediaUpdate = useMediaUpdate$1(),
479
+ update = _useMediaUpdate.update,
480
+ updating = _useMediaUpdate.updating;
481
+ var _useMediaTrash = useMediaTrash$1(),
482
+ mediaTrash = _useMediaTrash.mediaTrash,
483
+ trashing = _useMediaTrash.trashing;
484
+ var _useMediaDelete = useMediaDelete$1(),
485
+ mediaDelete = _useMediaDelete.mediaDelete,
486
+ deleting = _useMediaDelete.deleting;
487
+ var _useState = useState(false),
488
+ _useState2 = _slicedToArray(_useState, 2),
489
+ uploadProcessing = _useState2[0],
490
+ setUploadProcessing = _useState2[1];
491
+ var _useState3 = useState(false),
492
+ _useState4 = _slicedToArray(_useState3, 2),
493
+ changed = _useState4[0],
494
+ setChanged = _useState4[1];
495
+ var disabled = updating || deleting || trashing || initialValue === null;
496
+ var _ref2 = initialValue || {},
497
+ _ref2$name = _ref2.name,
498
+ name = _ref2$name === void 0 ? null : _ref2$name,
499
+ _ref2$type = _ref2.type,
500
+ type = _ref2$type === void 0 ? null : _ref2$type,
501
+ _ref2$deletedAt = _ref2.deletedAt,
502
+ deletedAt = _ref2$deletedAt === void 0 ? null : _ref2$deletedAt;
503
+ var onChangeMedia = useCallback(function (newValue) {
504
+ if (onChange !== null) {
505
+ onChange(newValue);
506
+ }
507
+ setChanged(true);
508
+ }, [onChange, setChanged]);
509
+ var onMediaSaved = useCallback(function (newValue) {
510
+ if (onSave !== null) {
511
+ onSave(newValue);
512
+ }
513
+ setChanged(false);
514
+ }, [onChange, setChanged]);
515
+ var onDeleteMedia = useCallback(function () {
516
+ var _ref3 = initialValue || {},
517
+ _ref3$id = _ref3.id,
518
+ id = _ref3$id === void 0 ? null : _ref3$id;
519
+ if (withTrash && deletedAt !== null) {
520
+ mediaTrash(id, initialValue).then(function () {
521
+ if (onDelete !== null) {
522
+ onDelete();
523
+ }
524
+ setChanged(false);
525
+ if (onClose !== null) {
526
+ onClose();
527
+ }
528
+ });
529
+ } else {
530
+ // Destroy
531
+ mediaDelete(id, initialValue).then(function () {
532
+ if (onDelete !== null) {
533
+ onDelete();
534
+ }
535
+ setChanged(false);
536
+ if (onClose !== null) {
537
+ onClose();
538
+ }
539
+ });
540
+ }
541
+ }, [initialValue, mediaDelete, mediaTrash, deletedAt, setChanged, onDelete, withTrash]);
542
+ var onUploadComplete = useCallback(function (data) {
543
+ var _ref4 = initialValue || {},
544
+ _ref4$id = _ref4.id,
545
+ id = _ref4$id === void 0 ? null : _ref4$id;
546
+ if (onReplaceUploadComplete) {
547
+ setUploadProcessing(true);
548
+ onReplaceUploadComplete(id, data).then(function () {
549
+ return setUploadProcessing(false);
550
+ })["catch"](function () {
551
+ return setUploadProcessing(false);
552
+ });
553
+ }
554
+ }, [initialValue]);
555
+ var postForm = useCallback(function (action, data) {
556
+ return initialValue !== null ? update(initialValue.id, data) : new Promise();
557
+ }, [initialValue, update]);
558
+ var _useForm = useForm({
559
+ fields: initialFields,
560
+ postForm: postForm,
561
+ onComplete: onMediaSaved,
562
+ value: initialValue,
563
+ setValue: onChangeMedia,
564
+ disabled: updating
565
+ }),
566
+ value = _useForm.value,
567
+ setValue = _useForm.setValue,
568
+ fields = _useForm.fields,
569
+ onSubmit = _useForm.onSubmit,
570
+ status = _useForm.status,
571
+ generalError = _useForm.generalError;
572
+ return /*#__PURE__*/React.createElement("div", {
573
+ className: classNames(['text-body', _defineProperty({}, className, className !== null)])
574
+ }, /*#__PURE__*/React.createElement("nav", {
575
+ className: "navbar d-flex w-100 align-items-end justify-content-between border-bottom mb-3"
576
+ }, /*#__PURE__*/React.createElement("div", {
577
+ className: "d-flex align-items-end justify-content-start mb-1",
578
+ style: {
579
+ maxWidth: '66%'
580
+ }
581
+ }, /*#__PURE__*/React.createElement("div", {
582
+ className: "me-3 mb-0"
583
+ }, /*#__PURE__*/React.createElement(Button, {
584
+ theme: "secondary",
585
+ outline: true,
586
+ onClick: onClose,
587
+ icon: "arrow-left"
588
+ }, /*#__PURE__*/React.createElement(FormattedMessage, {
589
+ id: "8NyYTH",
590
+ defaultMessage: [{
591
+ "type": 0,
592
+ "value": "Back"
593
+ }]
594
+ }))), /*#__PURE__*/React.createElement("h4", {
595
+ className: "d-inline text-truncate mb-0"
596
+ }, name), /*#__PURE__*/React.createElement("span", {
597
+ className: "mx-2"
598
+ }, type)), /*#__PURE__*/React.createElement("div", {
599
+ className: classNames('d-flex', 'justify-content-between', 'align-items-center', 'gap-1')
600
+ }, withReplace ? /*#__PURE__*/React.createElement(UploadField, {
601
+ className: "w-auto text-nowrap",
602
+ withButton: true,
603
+ withoutMedia: true,
604
+ types: [type],
605
+ outline: false,
606
+ closeAfterFinish: true,
607
+ addButtonLabel: /*#__PURE__*/React.createElement(FormattedMessage, {
608
+ id: "GxOBVL",
609
+ defaultMessage: [{
610
+ "type": 0,
611
+ "value": "Replace"
612
+ }]
613
+ }),
614
+ onUploadComplete: onUploadComplete
615
+ }) : null, withDelete ? /*#__PURE__*/React.createElement(Button, {
616
+ className: "me-2 mb-1 mt-1",
617
+ theme: "danger",
618
+ icon: withTrash && deletedAt !== null ? 'trash-fill' : 'trash',
619
+ iconPosition: "right",
620
+ onClick: onDeleteMedia,
621
+ disabled: deleting || trashing || updating || uploadProcessing
622
+ }, withTrash && deletedAt === null ? /*#__PURE__*/React.createElement(FormattedMessage, {
623
+ id: "PSlT7H",
624
+ defaultMessage: [{
625
+ "type": 0,
626
+ "value": "Trash"
627
+ }]
628
+ }) : /*#__PURE__*/React.createElement(FormattedMessage, {
629
+ id: "Bhu3B2",
630
+ defaultMessage: [{
631
+ "type": 0,
632
+ "value": "Delete"
633
+ }]
634
+ })) : null, onSave !== null ? /*#__PURE__*/React.createElement(Button, {
635
+ className: "mb-1 mt-1",
636
+ theme: "primary",
637
+ icon: changed ? 'check' : 'check',
638
+ iconPosition: "right",
639
+ onClick: onSubmit,
640
+ disabled: !changed || updating || deleting || trashing
641
+ }, /*#__PURE__*/React.createElement(FormattedMessage, {
642
+ id: "R1HYj0",
643
+ defaultMessage: [{
644
+ "type": 0,
645
+ "value": "Save"
646
+ }]
647
+ })) : null)), /*#__PURE__*/React.createElement("div", {
648
+ className: "row"
649
+ }, /*#__PURE__*/React.createElement("div", {
650
+ className: "col-md-6"
651
+ }, /*#__PURE__*/React.createElement("div", {
652
+ className: "position-relative w-100"
653
+ }, /*#__PURE__*/React.createElement("div", {
654
+ className: styles.mediaFrame
655
+ }, /*#__PURE__*/React.createElement(MediaFrame, {
656
+ value: value
657
+ }))), children), /*#__PURE__*/React.createElement("div", {
658
+ className: "col-md-6"
659
+ }, /*#__PURE__*/React.createElement(Form, {
660
+ onChange: onChangeMedia,
661
+ withoutActions: true
662
+ }, /*#__PURE__*/React.createElement(FieldsComponent, {
663
+ fields: fields,
664
+ value: value,
665
+ onChange: setValue,
666
+ disabled: disabled
667
+ })), generalError !== null && status !== null ? /*#__PURE__*/React.createElement("div", {
668
+ className: "mt-5"
669
+ }, /*#__PURE__*/React.createElement(FormStatus, {
670
+ status: status
671
+ })) : null)));
672
+ }
673
+ MediaForm.propTypes = propTypes$7;
674
+ MediaForm.defaultProps = defaultProps$7;
675
+
676
+ var MediaContext = /*#__PURE__*/React.createContext(null);
677
+ var useCurrentMedia = function useCurrentMedia() {
678
+ return useContext(MediaContext);
679
+ };
680
+ var propTypes$6 = {
681
+ media: PropTypes.shape({
682
+ id: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
683
+ }),
684
+ children: PropTypes.node.isRequired
685
+ };
686
+ var defaultProps$6 = {
687
+ media: null
688
+ };
689
+ function MediaProvider(_ref) {
690
+ var providedMedia = _ref.media,
691
+ children = _ref.children;
692
+ var _useState = useState(providedMedia),
693
+ _useState2 = _slicedToArray(_useState, 2),
694
+ currentMedia = _useState2[0],
695
+ setCurrentMedia = _useState2[1];
696
+ var values = useMemo(function () {
697
+ return {
698
+ currentMedia: currentMedia,
699
+ setCurrentMedia: setCurrentMedia
700
+ };
701
+ }, [currentMedia, setCurrentMedia]);
702
+ return /*#__PURE__*/React.createElement(MediaContext.Provider, {
703
+ value: values
704
+ }, children);
705
+ }
706
+ MediaProvider.propTypes = propTypes$6;
707
+ MediaProvider.defaultProps = defaultProps$6;
708
+
709
+ var defaultColumns = [{
710
+ id: 'image',
711
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
712
+ id: "UbxbKP",
713
+ defaultMessage: [{
714
+ "type": 0,
715
+ "value": "Preview"
716
+ }]
717
+ }),
718
+ component: 'image',
719
+ path: 'thumbnail_url',
720
+ sortable: false
721
+ }, {
722
+ id: 'name',
723
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
724
+ id: "WX83V9",
725
+ defaultMessage: [{
726
+ "type": 0,
727
+ "value": "File name"
728
+ }]
729
+ }),
730
+ component: 'text-description',
731
+ path: 'name',
732
+ descriptionPath: 'type',
733
+ descriptionValues: {
734
+ image: /*#__PURE__*/React.createElement(FormattedMessage, {
735
+ id: "AwDQvD",
736
+ defaultMessage: [{
737
+ "type": 0,
738
+ "value": "Image"
739
+ }]
740
+ }),
741
+ video: /*#__PURE__*/React.createElement(FormattedMessage, {
742
+ id: "mQiyAm",
743
+ defaultMessage: [{
744
+ "type": 0,
745
+ "value": "Video"
746
+ }]
747
+ }),
748
+ audio: /*#__PURE__*/React.createElement(FormattedMessage, {
749
+ id: "XnyI69",
750
+ defaultMessage: [{
751
+ "type": 0,
752
+ "value": "Audio"
753
+ }]
754
+ }),
755
+ document: /*#__PURE__*/React.createElement(FormattedMessage, {
756
+ id: "1dqmFw",
757
+ defaultMessage: [{
758
+ "type": 0,
759
+ "value": "Document"
760
+ }]
761
+ })
762
+ },
763
+ sortable: true
764
+ }, {
765
+ id: 'dimensions',
766
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
767
+ id: "eCe9ZY",
768
+ defaultMessage: [{
769
+ "type": 0,
770
+ "value": "Dimensions"
771
+ }]
772
+ }),
773
+ component: 'unit',
774
+ format: 'dimensions',
775
+ path: 'metadata'
776
+ }, {
777
+ id: 'size',
778
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
779
+ id: "c3hu9o",
780
+ defaultMessage: [{
781
+ "type": 0,
782
+ "value": "Size"
783
+ }]
784
+ }),
785
+ component: 'unit',
786
+ format: 'bytes',
787
+ path: 'metadata.size'
788
+ }, {
789
+ id: 'duration',
790
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
791
+ id: "002oWQ",
792
+ defaultMessage: [{
793
+ "type": 0,
794
+ "value": "Duration"
795
+ }]
796
+ }),
797
+ component: 'unit',
798
+ format: 'duration',
799
+ path: 'metadata.duration'
800
+ },
801
+ // {
802
+ // id: 'author',
803
+ // label: <FormattedMessage defaultMessage="Added by" description="Field name" />,
804
+ // component: 'avatar',
805
+ // path: 'metadata.author',
806
+ // namePath: 'name',
807
+ // withoutName: true,
808
+ // },
809
+ {
810
+ id: 'created_at',
811
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
812
+ id: "OzYWZz",
813
+ defaultMessage: [{
814
+ "type": 0,
815
+ "value": "Created at"
816
+ }]
817
+ }),
818
+ component: 'date',
819
+ path: 'created_at',
820
+ format: 'yyyy-MM-dd hh:ss',
821
+ sortable: true
822
+ }, {
823
+ id: 'actions',
824
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
825
+ id: "rtwfuZ",
826
+ defaultMessage: [{
827
+ "type": 0,
828
+ "value": "Actions"
829
+ }]
830
+ }),
831
+ actions: ['edit', 'delete']
832
+ // component: ItemActions,
833
+ // label: 'Edit',
834
+ // url: '/edit/1',
835
+ }
836
+ // {
837
+ // id: 'status',
838
+ // label: <FormattedMessage defaultMessage="Status" description="Field name" />,
839
+ // component: 'text',
840
+ // path: 'metadata.status',
841
+ // },
842
+ ];
843
+
844
+ var defaultFilters = [{
845
+ id: 'search',
846
+ component: 'search',
847
+ name: 'search',
848
+ width: 220
849
+ }, {
850
+ id: 'types',
851
+ component: 'select',
852
+ name: 'types',
853
+ placeholder: /*#__PURE__*/React.createElement(FormattedMessage, {
854
+ id: "9/t5wK",
855
+ defaultMessage: [{
856
+ "type": 0,
857
+ "value": "Type"
858
+ }]
859
+ }),
860
+ options: [{
861
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
862
+ id: "yHAmDD",
863
+ defaultMessage: [{
864
+ "type": 0,
865
+ "value": "Image"
866
+ }]
867
+ }),
868
+ value: 'image'
869
+ }, {
870
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
871
+ id: "xSERPA",
872
+ defaultMessage: [{
873
+ "type": 0,
874
+ "value": "Video"
875
+ }]
876
+ }),
877
+ value: 'video'
878
+ }, {
879
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
880
+ id: "yQRtgx",
881
+ defaultMessage: [{
882
+ "type": 0,
883
+ "value": "Audio"
884
+ }]
885
+ }),
886
+ value: 'audio'
887
+ }, {
888
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
889
+ id: "8INLfU",
890
+ defaultMessage: [{
891
+ "type": 0,
892
+ "value": "Document"
893
+ }]
894
+ }),
895
+ value: 'document'
896
+ }],
897
+ multiple: true
898
+ }
899
+ // {
900
+ // id: 'author',
901
+ // component: 'select',
902
+ // name: 'author',
903
+ // placeholder: <FormattedMessage defaultMessage="Author" description="Filter label" />,
904
+ // requestUrl: '/persons',
905
+ // itemLabelPath: 'name',
906
+ // multiple: true,
907
+ // },
908
+ // {
909
+ // id: 'tag',
910
+ // component: 'select',
911
+ // name: 'tag',
912
+ // placeholder: <FormattedMessage defaultMessage="Tag" description="Filter label" />,
913
+ // requestUrl: '/tags',
914
+ // itemLabelPath: 'label',
915
+ // multiple: true,
916
+ // },
917
+ ];
918
+
919
+ var _excluded$5 = ["page", "count"],
920
+ _excluded2 = ["types", "trashed"];
921
+ var propTypes$5 = {
922
+ items: PropTypes$1.medias,
923
+ extraItems: PropTypes$1.medias,
924
+ types: PropTypes.arrayOf(PropTypes.string),
925
+ permissions: PropTypes.shape({
926
+ create: PropTypes.bool,
927
+ edit: PropTypes.bool,
928
+ "delete": PropTypes.bool
929
+ }),
930
+ filters: PropTypes$1.filters,
931
+ columns: PropTypes$1.tableColumns,
932
+ query: PropTypes.shape({}),
933
+ baseUrl: PropTypes.string,
934
+ fields: PropTypes$1.fields,
935
+ layout: PropTypes.string,
936
+ layouts: PropTypes.arrayOf(PropTypes.shape({})),
937
+ theme: PropTypes.string,
938
+ onMediaUploaded: PropTypes.func,
939
+ onMediaReplacementUploaded: PropTypes.func,
940
+ onItemsChange: PropTypes.func,
941
+ onLayoutChange: PropTypes.func,
942
+ onMediaFormOpen: PropTypes.func,
943
+ onMediaFormClose: PropTypes.func,
944
+ selectable: PropTypes.bool,
945
+ selectedItems: PropTypes.oneOfType([PropTypes.shape({}), PropTypes.arrayOf(PropTypes.shape({}))]),
946
+ onSelectionChange: PropTypes.func,
947
+ multipleSelection: PropTypes.bool,
948
+ uppyConfig: PropTypes.shape({}),
949
+ withDelete: PropTypes.bool,
950
+ withTrash: PropTypes.bool,
951
+ withReplace: PropTypes.bool,
952
+ withStickySelection: PropTypes.bool,
953
+ withoutUpload: PropTypes.bool,
954
+ className: PropTypes.string,
955
+ formChildren: PropTypes.node
956
+ };
957
+ var defaultProps$5 = {
958
+ items: null,
959
+ extraItems: null,
960
+ types: null,
961
+ permissions: null,
962
+ filters: defaultFilters,
963
+ columns: defaultColumns,
964
+ fields: defaultFields,
965
+ query: null,
966
+ baseUrl: null,
967
+ layout: 'table',
968
+ layouts: [{
969
+ id: 'table',
970
+ label: /*#__PURE__*/React.createElement(Icon, {
971
+ name: "table"
972
+ })
973
+ }, {
974
+ id: 'grid',
975
+ label: /*#__PURE__*/React.createElement(Icon, {
976
+ name: "grid"
977
+ })
978
+ }],
979
+ theme: null,
980
+ onMediaUploaded: null,
981
+ onMediaReplacementUploaded: null,
982
+ onItemsChange: null,
983
+ onLayoutChange: null,
984
+ onMediaFormOpen: null,
985
+ onMediaFormClose: null,
986
+ selectable: false,
987
+ selectedItems: null,
988
+ onSelectionChange: null,
989
+ multipleSelection: false,
990
+ uppyConfig: null,
991
+ withDelete: false,
992
+ withTrash: false,
993
+ withReplace: false,
994
+ withStickySelection: false,
995
+ withoutUpload: false,
996
+ className: null,
997
+ formChildren: null
998
+ };
999
+ function MediasBrowser(_ref) {
1000
+ var initialItems = _ref.items,
1001
+ extraItems = _ref.extraItems,
1002
+ types = _ref.types,
1003
+ permissions = _ref.permissions,
1004
+ baseUrl = _ref.baseUrl,
1005
+ filters = _ref.filters,
1006
+ columns = _ref.columns,
1007
+ fields = _ref.fields,
1008
+ initialQuery = _ref.query,
1009
+ initialLayout = _ref.layout,
1010
+ layouts = _ref.layouts,
1011
+ theme = _ref.theme,
1012
+ onMediaUploaded = _ref.onMediaUploaded,
1013
+ onMediaReplacementUploaded = _ref.onMediaReplacementUploaded,
1014
+ onItemsChange = _ref.onItemsChange,
1015
+ onLayoutChange = _ref.onLayoutChange,
1016
+ onMediaFormOpen = _ref.onMediaFormOpen,
1017
+ onMediaFormClose = _ref.onMediaFormClose,
1018
+ selectable = _ref.selectable,
1019
+ selectedItems = _ref.selectedItems,
1020
+ onSelectionChange = _ref.onSelectionChange,
1021
+ multipleSelection = _ref.multipleSelection,
1022
+ uppyConfig = _ref.uppyConfig,
1023
+ withDelete = _ref.withDelete,
1024
+ withTrash = _ref.withTrash,
1025
+ withReplace = _ref.withReplace,
1026
+ withStickySelection = _ref.withStickySelection,
1027
+ withoutUpload = _ref.withoutUpload,
1028
+ className = _ref.className,
1029
+ formChildren = _ref.formChildren;
1030
+ var _useState = useState(initialItems || null),
1031
+ _useState2 = _slicedToArray(_useState, 1),
1032
+ baseItems = _useState2[0];
1033
+ var baseQuery = useMemo(function () {
1034
+ return _objectSpread(_objectSpread({
1035
+ count: 12
1036
+ }, initialQuery), types !== null ? {
1037
+ types: types
1038
+ } : null);
1039
+ }, [initialQuery, types]);
1040
+ var _useQuery = useQuery(baseQuery),
1041
+ fullQuery = _useQuery.query,
1042
+ onPageChange = _useQuery.onPageChange,
1043
+ onQueryChange = _useQuery.onQueryChange,
1044
+ onQueryReset = _useQuery.onQueryReset;
1045
+ var _useMemo = useMemo(function () {
1046
+ var _ref2 = fullQuery || {},
1047
+ _ref2$page = _ref2.page,
1048
+ fullQueryPage = _ref2$page === void 0 ? null : _ref2$page,
1049
+ _ref2$count = _ref2.count,
1050
+ fullQueryCount = _ref2$count === void 0 ? null : _ref2$count,
1051
+ params = _objectWithoutProperties(_ref2, _excluded$5);
1052
+ return {
1053
+ page: fullQueryPage,
1054
+ count: fullQueryCount,
1055
+ query: params
1056
+ };
1057
+ }, [fullQuery]),
1058
+ _useMemo$page = _useMemo.page,
1059
+ page = _useMemo$page === void 0 ? null : _useMemo$page,
1060
+ _useMemo$count = _useMemo.count,
1061
+ count = _useMemo$count === void 0 ? null : _useMemo$count,
1062
+ _useMemo$query = _useMemo.query,
1063
+ query = _useMemo$query === void 0 ? null : _useMemo$query;
1064
+ var _ref3 = permissions || {},
1065
+ _ref3$create = _ref3.create,
1066
+ canCreate = _ref3$create === void 0 ? true : _ref3$create,
1067
+ _ref3$edit = _ref3.edit,
1068
+ canEdit = _ref3$edit === void 0 ? true : _ref3$edit,
1069
+ _ref3$delete = _ref3["delete"],
1070
+ canDelete = _ref3$delete === void 0 ? true : _ref3$delete;
1071
+ var canUpload = canCreate && !withoutUpload;
1072
+
1073
+ // eslint-disable-next-line no-unused-vars
1074
+ var _ref4 = query || {};
1075
+ _ref4.types;
1076
+ var _ref4$trashed = _ref4.trashed,
1077
+ trashed = _ref4$trashed === void 0 ? null : _ref4$trashed,
1078
+ queryWithoutTypes = _objectWithoutProperties(_ref4, _excluded2);
1079
+ var _useMediaTrash = useMediaTrash$1(),
1080
+ mediaTrash = _useMediaTrash.mediaTrash,
1081
+ trashing = _useMediaTrash.trashing;
1082
+ var _useMediaDelete = useMediaDelete$1(),
1083
+ mediaDelete = _useMediaDelete.mediaDelete,
1084
+ deleting = _useMediaDelete.deleting;
1085
+ var _useMediaRestore = useMediaRestore$1(),
1086
+ mediaRestore = _useMediaRestore.mediaRestore;
1087
+ var _useState3 = useState(false),
1088
+ _useState4 = _slicedToArray(_useState3, 2),
1089
+ showTrashed = _useState4[0],
1090
+ setShowTrashed = _useState4[1];
1091
+ var _useMedias = useMedias$1(query, page, count, {
1092
+ items: baseItems,
1093
+ trashed: showTrashed
1094
+ }),
1095
+ items = _useMedias.items,
1096
+ allItems = _useMedias.allItems,
1097
+ _useMedias$loading = _useMedias.loading,
1098
+ loading = _useMedias$loading === void 0 ? false : _useMedias$loading,
1099
+ _useMedias$loaded = _useMedias.loaded,
1100
+ loaded = _useMedias$loaded === void 0 ? false : _useMedias$loaded,
1101
+ _useMedias$updateItem = _useMedias.updateItem,
1102
+ updateItem = _useMedias$updateItem === void 0 ? null : _useMedias$updateItem,
1103
+ _useMedias$pagination = _useMedias.pagination,
1104
+ _useMedias$pagination2 = _useMedias$pagination === void 0 ? {} : _useMedias$pagination,
1105
+ lastPage = _useMedias$pagination2.lastPage,
1106
+ total = _useMedias$pagination2.total,
1107
+ _useMedias$pages = _useMedias.pages,
1108
+ pages = _useMedias$pages === void 0 ? null : _useMedias$pages,
1109
+ reload = _useMedias.reload;
1110
+ var onClickTrash = useCallback(function () {
1111
+ setShowTrashed(!showTrashed);
1112
+ }, [showTrashed, setShowTrashed]);
1113
+
1114
+ // dirty fix to bypass global query caching
1115
+ useEffect(function () {
1116
+ reload();
1117
+ }, [showTrashed]);
1118
+ useEffect(function () {
1119
+ if (onItemsChange !== null) {
1120
+ onItemsChange(items);
1121
+ }
1122
+ }, [items, onItemsChange]);
1123
+ var _useState5 = useState(initialLayout || 'table'),
1124
+ _useState6 = _slicedToArray(_useState5, 2),
1125
+ layout = _useState6[0],
1126
+ setLayout = _useState6[1];
1127
+ var hasLayouts = useMemo(function () {
1128
+ return layouts !== null && layouts.length > 1;
1129
+ }, [layouts]);
1130
+ var onClickLayout = useCallback(function (newLayout) {
1131
+ setLayout(newLayout);
1132
+ if (onLayoutChange !== null) {
1133
+ onLayoutChange(newLayout);
1134
+ }
1135
+ }, [setLayout]);
1136
+ var _useCurrentMedia = useCurrentMedia(),
1137
+ currentMedia = _useCurrentMedia.currentMedia,
1138
+ setCurrentMedia = _useCurrentMedia.setCurrentMedia;
1139
+ useEffect(function () {
1140
+ if (currentMedia !== null && onMediaFormOpen !== null) {
1141
+ onMediaFormOpen();
1142
+ }
1143
+ if (currentMedia === null && onMediaFormClose !== null) {
1144
+ onMediaFormClose();
1145
+ }
1146
+ }, [currentMedia]);
1147
+ var onOpenMedia = useCallback(function (media) {
1148
+ setCurrentMedia(media);
1149
+ }, [setCurrentMedia]);
1150
+ var onCloseMedia = useCallback(function () {
1151
+ setCurrentMedia(null);
1152
+ }, [setCurrentMedia]);
1153
+ var onSaveMedia = useCallback(function (item) {
1154
+ setCurrentMedia(null);
1155
+ updateItem(item);
1156
+ }, [setCurrentMedia, updateItem]);
1157
+ var onDeleteMedia = useCallback(function () {
1158
+ if (reload !== null) {
1159
+ reload();
1160
+ }
1161
+ }, [reload]);
1162
+ var onTrashMedia = useCallback(function (id) {
1163
+ return !showTrashed && withTrash ? mediaTrash(id).then(function () {
1164
+ if (!multipleSelection) {
1165
+ var _ref5 = selectedItems || {},
1166
+ _ref5$id = _ref5.id,
1167
+ selectedId = _ref5$id === void 0 ? null : _ref5$id;
1168
+ if (selectedId !== null && selectedId === id) {
1169
+ onSelectionChange(null);
1170
+ }
1171
+ }
1172
+ // Todo remove from mult selection
1173
+ }).then(reload) : mediaDelete(id).then(function () {
1174
+ if (!multipleSelection) {
1175
+ var _ref6 = selectedItems || {},
1176
+ _ref6$id = _ref6.id,
1177
+ selectedId = _ref6$id === void 0 ? null : _ref6$id;
1178
+ if (selectedId !== null && selectedId === id) {
1179
+ onSelectionChange(null);
1180
+ }
1181
+ }
1182
+ // Todo remove from selection
1183
+ }).then(reload);
1184
+ }, [showTrashed, withTrash, mediaTrash, mediaDelete, reload, selectedItems, multipleSelection, onSelectionChange]);
1185
+ var _useState7 = useState(null),
1186
+ _useState8 = _slicedToArray(_useState7, 2),
1187
+ uploadedMedias = _useState8[0],
1188
+ setUploadedMedias = _useState8[1];
1189
+ var _useState9 = useState(false),
1190
+ _useState10 = _slicedToArray(_useState9, 2),
1191
+ uploadProcessing = _useState10[0],
1192
+ setUploadProcessing = _useState10[1];
1193
+ var onUploadedMediaChanged = useCallback(function (newMedias) {
1194
+ var uploadedNewMedias = (isArray(newMedias) ? [].concat(_toConsumableArray(newMedias), _toConsumableArray(uploadedMedias || [])) : [newMedias].concat(_toConsumableArray(uploadedMedias || []))).filter(function (it) {
1195
+ return it !== null;
1196
+ });
1197
+ setUploadedMedias(uploadedNewMedias);
1198
+ if (onSelectionChange !== null) {
1199
+ var _ref7 = newMedias || [],
1200
+ _ref8 = _slicedToArray(_ref7, 1),
1201
+ _ref8$ = _ref8[0],
1202
+ firstMedia = _ref8$ === void 0 ? null : _ref8$;
1203
+ onSelectionChange(multipleSelection && isArray(newMedias) ? newMedias : firstMedia);
1204
+ onQueryReset();
1205
+ reload().then(function () {
1206
+ setUploadedMedias(null);
1207
+ });
1208
+ }
1209
+ }, [onSelectionChange, setUploadedMedias, uploadedMedias, onQueryReset, reload, multipleSelection]);
1210
+ var onUploadComplete = useCallback(function () {
1211
+ var medias = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
1212
+ if (showTrashed) {
1213
+ setShowTrashed(false);
1214
+ }
1215
+ if (medias === null) return;
1216
+ var rawMedias = (isArray(medias) ? medias : [medias]).filter(function (it) {
1217
+ return it !== null;
1218
+ });
1219
+ if (onMediaUploaded !== null) {
1220
+ setUploadProcessing(true);
1221
+ onMediaUploaded(rawMedias).then(function (newMedias) {
1222
+ onUploadedMediaChanged(newMedias);
1223
+ setUploadProcessing(false);
1224
+ })["catch"](function () {
1225
+ setUploadProcessing(false);
1226
+ });
1227
+ } else {
1228
+ onUploadedMediaChanged(rawMedias);
1229
+ }
1230
+ }, [onMediaUploaded, setUploadedMedias, setUploadProcessing, onUploadedMediaChanged]);
1231
+ var pagination = /*#__PURE__*/React.createElement(Pagination, {
1232
+ page: page,
1233
+ lastPage: lastPage,
1234
+ total: total,
1235
+ url: baseUrl,
1236
+ query: query,
1237
+ onClickPage: onPageChange,
1238
+ theme: theme,
1239
+ loading: loading && pages !== null,
1240
+ selectable: selectable,
1241
+ selectedItems: selectedItems,
1242
+ onSelectionChange: onSelectionChange,
1243
+ multipleSelection: multipleSelection,
1244
+ withPreviousNext: true,
1245
+ alwaysShowButtons: true
1246
+ });
1247
+ var hidePagination = loaded && !loading && (items || []).length === 0;
1248
+ var finalFilters = useMemo(function () {
1249
+ var partialFilters = withTrash ? (filters || []).concat([{
1250
+ name: 'trashed',
1251
+ component: 'button',
1252
+ theme: showTrashed ? 'danger' : 'secondary',
1253
+ outline: !showTrashed,
1254
+ activeTheme: 'danger',
1255
+ icon: showTrashed ? 'trash-fill' : 'trash',
1256
+ disabled: uploadProcessing,
1257
+ onClick: onClickTrash
1258
+ }]) : filters;
1259
+ if (types !== null && partialFilters !== null) {
1260
+ return (partialFilters || []).map(function (filter) {
1261
+ var _ref9 = filter || {},
1262
+ _ref9$id = _ref9.id,
1263
+ id = _ref9$id === void 0 ? null : _ref9$id;
1264
+ return id === 'types' ? _objectSpread(_objectSpread({}, filter), {}, {
1265
+ disabled: true
1266
+ }) : filter;
1267
+ });
1268
+ }
1269
+ return partialFilters;
1270
+ }, [filters, types, withTrash, showTrashed, uploadProcessing, onClickTrash]);
1271
+ var partialColumns = useMemo(function () {
1272
+ return withTrash && showTrashed ? (columns || []).map(function (column) {
1273
+ var _ref10 = column || {},
1274
+ _ref10$id = _ref10.id,
1275
+ columnId = _ref10$id === void 0 ? null : _ref10$id;
1276
+ if (columnId === 'created_at') {
1277
+ return _objectSpread(_objectSpread({}, column), {}, {
1278
+ path: 'deleted_at',
1279
+ label: /*#__PURE__*/React.createElement(FormattedMessage, {
1280
+ id: "uds4wJ",
1281
+ defaultMessage: [{
1282
+ "type": 0,
1283
+ "value": "Deleted at"
1284
+ }]
1285
+ })
1286
+ });
1287
+ }
1288
+ if (columnId === 'actions') {
1289
+ var _ref11 = column || {},
1290
+ _ref11$actions = _ref11.actions,
1291
+ actions = _ref11$actions === void 0 ? [] : _ref11$actions;
1292
+ return _objectSpread(_objectSpread({}, column), {}, {
1293
+ actions: (actions || []).reduce(function (acc, action) {
1294
+ if (action === 'delete') {
1295
+ acc.push({
1296
+ id: 'restore',
1297
+ component: 'restore',
1298
+ withConfirmation: true,
1299
+ action: function action(ids) {
1300
+ return mediaRestore(ids[0]).then(reload);
1301
+ }
1302
+ });
1303
+ }
1304
+ acc.push(action);
1305
+ return acc;
1306
+ }, []).filter(function (it) {
1307
+ return it !== 'edit';
1308
+ })
1309
+ });
1310
+ }
1311
+ return column;
1312
+ }) : columns;
1313
+ }, [columns, withTrash, showTrashed]);
1314
+ var finalColumns = useMemo(function () {
1315
+ return (partialColumns || []).map(function (column) {
1316
+ var _ref12 = column || {},
1317
+ _ref12$id = _ref12.id,
1318
+ columnId = _ref12$id === void 0 ? null : _ref12$id;
1319
+ if (columnId === 'actions') {
1320
+ var _ref13 = column || {},
1321
+ _ref13$actions = _ref13.actions,
1322
+ actions = _ref13$actions === void 0 ? [] : _ref13$actions;
1323
+ var availableActions = actions.filter(function (act) {
1324
+ return act !== 'delete' || canDelete;
1325
+ }).filter(function (act) {
1326
+ return act !== 'edit' || canEdit;
1327
+ });
1328
+ if (availableActions.length === 0) {
1329
+ return null;
1330
+ }
1331
+ return _objectSpread(_objectSpread({}, column), {}, {
1332
+ actions: availableActions
1333
+ });
1334
+ }
1335
+ return column;
1336
+ }).filter(function (act) {
1337
+ return act !== null;
1338
+ });
1339
+ }, [partialColumns, canEdit, canDelete]);
1340
+ var hasQueryItem = useMemo(function () {
1341
+ var showOnTopQuery = types === null ? query : queryWithoutTypes;
1342
+ return showOnTopQuery !== null && !trashed ? Object.keys(showOnTopQuery).length > 0 : false;
1343
+ }, [types, query, queryWithoutTypes, trashed]);
1344
+ var finalItems = useMemo(function () {
1345
+ if (withStickySelection && (extraItems !== null || uploadedMedias !== null || uploadProcessing === true)) {
1346
+ return uniqBy([].concat(_toConsumableArray(uploadProcessing ? [{
1347
+ id: '-',
1348
+ loading: true,
1349
+ actionsDisabled: true,
1350
+ selectionDisabled: true
1351
+ }] : []), _toConsumableArray(page === 1 && !hasQueryItem ? uploadedMedias || [] : []), _toConsumableArray(page === 1 && !hasQueryItem && !showTrashed ? (extraItems || []).map(function (item) {
1352
+ var _item$id = item.id,
1353
+ itemId = _item$id === void 0 ? null : _item$id;
1354
+ return (allItems || []).find(function () {
1355
+ var _ref14 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1356
+ _ref14$id = _ref14.id,
1357
+ otherId = _ref14$id === void 0 ? null : _ref14$id;
1358
+ return otherId === itemId;
1359
+ }) || item || null;
1360
+ }).filter(function (it) {
1361
+ return it !== null;
1362
+ }) || [] : []), _toConsumableArray(items || [])), function (it) {
1363
+ return it === null || it === void 0 ? void 0 : it.id;
1364
+ });
1365
+ }
1366
+ return items;
1367
+ }, [items, page, allItems, withStickySelection, extraItems, uploadProcessing, hasQueryItem, showTrashed]);
1368
+
1369
+ // const emptyWithSticky = useMemo(
1370
+ // () => (items || []).length === 0 && (finalItems || []).length > 0,
1371
+ // [items, finalItems],
1372
+ // );
1373
+
1374
+ return /*#__PURE__*/React.createElement("div", {
1375
+ className: className
1376
+ }, currentMedia !== null ? /*#__PURE__*/React.createElement(MediaForm, {
1377
+ value: currentMedia,
1378
+ fields: fields,
1379
+ onChange: setCurrentMedia,
1380
+ onSave: onSaveMedia,
1381
+ onReplaceUploadComplete: onMediaReplacementUploaded,
1382
+ onClose: onCloseMedia,
1383
+ onDelete: onDeleteMedia,
1384
+ withDelete: withDelete,
1385
+ withTrash: withTrash,
1386
+ withReplace: withReplace
1387
+ }, formChildren) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
1388
+ className: classNames(['d-flex', 'justify-content-between'])
1389
+ }, filters !== null ? /*#__PURE__*/React.createElement(Filters, {
1390
+ value: query,
1391
+ clearValue: types !== null ? queryWithoutTypes : null,
1392
+ filters: finalFilters,
1393
+ onChange: onQueryChange,
1394
+ onReset: onQueryReset,
1395
+ theme: theme
1396
+ }) : null, canUpload ? /*#__PURE__*/React.createElement(UploadField, {
1397
+ className: "ms-auto w-auto text-nowrap mt-2 mb-2 ps-2",
1398
+ withButton: true,
1399
+ withoutMedia: true,
1400
+ uppyProps: uppyConfig,
1401
+ types: types,
1402
+ allowMultipleUploads: true,
1403
+ onChange: onUploadComplete,
1404
+ disabled: uploadProcessing,
1405
+ loading: uploadProcessing,
1406
+ outline: false,
1407
+ closeAfterFinish: true
1408
+ }) : null), /*#__PURE__*/React.createElement("div", {
1409
+ className: classNames(['d-flex', 'mt-1', 'mb-3', {
1410
+ 'justify-content-between': hasLayouts,
1411
+ 'justify-content-end': !hasLayouts
1412
+ }])
1413
+ }, hasLayouts ? /*#__PURE__*/React.createElement(Buttons, {
1414
+ size: "sm",
1415
+ theme: "secondary",
1416
+ outline: true,
1417
+ items: (layouts || []).map(function (lay) {
1418
+ return _objectSpread(_objectSpread({}, lay), {}, {
1419
+ active: layout === lay.id,
1420
+ onClick: function onClick() {
1421
+ return onClickLayout(lay.id);
1422
+ },
1423
+ className: 'px-3 py-2'
1424
+ });
1425
+ })
1426
+ }) : null, !hidePagination ? pagination : /*#__PURE__*/React.createElement("div", null)), layout === 'grid' ? /*#__PURE__*/React.createElement(Grid, {
1427
+ size: "small",
1428
+ theme: theme,
1429
+ component: MediaCard,
1430
+ componentProps: {
1431
+ className: 'd-flex w-100',
1432
+ cardClassName: 'flex-grow-1',
1433
+ vertical: true,
1434
+ onClickDescription: function onClickDescription(it) {
1435
+ onOpenMedia(it);
1436
+ }
1437
+ },
1438
+ selectable: selectable && !showTrashed,
1439
+ selectedItems: selectedItems,
1440
+ onSelectionChange: uploadProcessing ? null : onSelectionChange,
1441
+ multipleSelection: multipleSelection,
1442
+ query: query // For sort
1443
+ ,
1444
+ onQueryChange: onQueryChange,
1445
+ items: finalItems || [],
1446
+ loading: loading,
1447
+ loaded: loaded
1448
+ // empty={emptyWithSticky}
1449
+ }) : null, layout === 'table' ? /*#__PURE__*/React.createElement(Table, {
1450
+ theme: theme,
1451
+ columns: finalColumns,
1452
+ displayPlaceholder: /*#__PURE__*/React.createElement("span", {
1453
+ className: "text-secondary text-opacity-75"
1454
+ }, "\u2014"),
1455
+ selectable: selectable && !showTrashed,
1456
+ selectedItems: selectedItems,
1457
+ onSelectionChange: uploadProcessing ? null : onSelectionChange,
1458
+ multipleSelection: multipleSelection,
1459
+ query: query // For sort
1460
+ ,
1461
+ onQueryChange: onQueryChange,
1462
+ items: finalItems,
1463
+ loading: loading,
1464
+ loaded: loaded
1465
+ // empty={emptyWithSticky}
1466
+ ,
1467
+ actionsProps: {
1468
+ getDeletePropsFromItem: function getDeletePropsFromItem() {
1469
+ return {
1470
+ href: null,
1471
+ withConfirmation: true,
1472
+ disabled: trashing || deleting,
1473
+ icon: showTrashed ? 'trash-fill' : 'trash',
1474
+ action: function action(ids) {
1475
+ return onTrashMedia(ids[0]);
1476
+ }
1477
+ };
1478
+ },
1479
+ getEditPropsFromItem: function getEditPropsFromItem(it) {
1480
+ return {
1481
+ href: null,
1482
+ onClick: function onClick() {
1483
+ onOpenMedia(it);
1484
+ }
1485
+ };
1486
+ }
1487
+ }
1488
+ }) : null, !hidePagination ? /*#__PURE__*/React.createElement("div", {
1489
+ className: classNames(['d-flex', 'mt-3', 'mb-1', 'justify-content-end'])
1490
+ }, pagination) : null));
1491
+ }
1492
+ MediasBrowser.propTypes = propTypes$5;
1493
+ MediasBrowser.defaultProps = defaultProps$5;
1494
+
1495
+ var _excluded$4 = ["items", "value", "onChange", "multiple", "className"];
1496
+ var propTypes$4 = {
1497
+ items: PropTypes.arrayOf(PropTypes.shape({})),
1498
+ value: PropTypes.oneOfType([PropTypes.shape({}), PropTypes.arrayOf(PropTypes.shape({}))]),
1499
+ multiple: PropTypes.bool,
1500
+ onChange: PropTypes.func.isRequired,
1501
+ className: PropTypes.string
1502
+ };
1503
+ var defaultProps$4 = {
1504
+ items: null,
1505
+ value: null,
1506
+ multiple: false,
1507
+ className: null
1508
+ };
1509
+ function MediasPicker(_ref) {
1510
+ var initialItems = _ref.items,
1511
+ initialSelectedItems = _ref.value,
1512
+ onChange = _ref.onChange,
1513
+ multiple = _ref.multiple,
1514
+ className = _ref.className,
1515
+ props = _objectWithoutProperties(_ref, _excluded$4);
1516
+ // Keep the previous selection on top of first page
1517
+ var extraItems = useMemo(function () {
1518
+ if (initialSelectedItems === null) {
1519
+ return null;
1520
+ }
1521
+ return isArray(initialSelectedItems) ? initialSelectedItems : [initialSelectedItems];
1522
+ }, []);
1523
+
1524
+ // Mostly for testing
1525
+ var _useState = useState(initialSelectedItems || null),
1526
+ _useState2 = _slicedToArray(_useState, 2),
1527
+ selectedItems = _useState2[0],
1528
+ setSelectedItems = _useState2[1];
1529
+ var onSelectionChange = useCallback(function (newSelection) {
1530
+ setSelectedItems(newSelection);
1531
+ }, [setSelectedItems]);
1532
+
1533
+ // Sync from the top
1534
+ useEffect(function () {
1535
+ setSelectedItems(initialSelectedItems);
1536
+ }, [initialSelectedItems, setSelectedItems]);
1537
+ useEffect(function () {
1538
+ if (onChange !== null) {
1539
+ onChange(selectedItems);
1540
+ }
1541
+ }, [selectedItems, onChange]);
1542
+ return /*#__PURE__*/React.createElement("div", {
1543
+ className: className
1544
+ }, /*#__PURE__*/React.createElement(MediasBrowser, Object.assign({
1545
+ items: initialItems // TODO: fix useItems if actually using this
1546
+ ,
1547
+ selectable: true,
1548
+ selectedItems: selectedItems,
1549
+ onSelectionChange: onSelectionChange,
1550
+ multipleSelection: multiple,
1551
+ extraItems: extraItems
1552
+ }, props)));
1553
+ }
1554
+ MediasPicker.propTypes = propTypes$4;
1555
+ MediasPicker.defaultProps = defaultProps$4;
1556
+
1557
+ var _excluded$3 = ["api", "media"];
1558
+ var propTypes$3 = {
1559
+ api: apiPropTypes,
1560
+ media: PropTypes.shape({
1561
+ id: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
1562
+ })
1563
+ };
1564
+ var defaultProps$3 = {
1565
+ api: null,
1566
+ media: null
1567
+ };
1568
+ function MediasBrowserContainer(_ref) {
1569
+ var api = _ref.api,
1570
+ media = _ref.media,
1571
+ props = _objectWithoutProperties(_ref, _excluded$3);
1572
+ return /*#__PURE__*/React.createElement(MediasApiProvider, {
1573
+ api: api
1574
+ }, /*#__PURE__*/React.createElement(MediaProvider, {
1575
+ media: media
1576
+ }, /*#__PURE__*/React.createElement(MediasBrowser, props)));
1577
+ }
1578
+ MediasBrowserContainer.propTypes = propTypes$3;
1579
+ MediasBrowserContainer.defaultProps = defaultProps$3;
1580
+
1581
+ var _excluded$2 = ["api", "media", "onChange"];
1582
+ var propTypes$2 = {
1583
+ api: apiPropTypes,
1584
+ media: PropTypes.shape({
1585
+ id: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
1586
+ }),
1587
+ onChange: PropTypes.func.isRequired
1588
+ };
1589
+ var defaultProps$2 = {
1590
+ api: null,
1591
+ media: null
1592
+ };
1593
+ function MediasPickerContainer(_ref) {
1594
+ var api = _ref.api,
1595
+ media = _ref.media,
1596
+ onChange = _ref.onChange,
1597
+ props = _objectWithoutProperties(_ref, _excluded$2);
1598
+ return /*#__PURE__*/React.createElement(MediasApiProvider, {
1599
+ api: api
1600
+ }, /*#__PURE__*/React.createElement(MediaProvider, {
1601
+ media: media
1602
+ }, /*#__PURE__*/React.createElement(MediasPicker, Object.assign({}, props, {
1603
+ onChange: onChange
1604
+ }))));
1605
+ }
1606
+ MediasPickerContainer.propTypes = propTypes$2;
1607
+ MediasPickerContainer.defaultProps = defaultProps$2;
1608
+
1609
+ var _excluded$1 = ["resource"];
1610
+ var propTypes$1 = {
1611
+ resource: PropTypes.string
1612
+ };
1613
+ var defaultProps$1 = {
1614
+ resource: 'medias'
1615
+ };
1616
+ function MediasResourceBrowser(_ref) {
1617
+ var resourceId = _ref.resource,
1618
+ props = _objectWithoutProperties(_ref, _excluded$1);
1619
+ var resource = usePanneauResource(resourceId);
1620
+ var api = useApi();
1621
+ var mediasApi = useMemo(function () {
1622
+ return {
1623
+ get: function get() {
1624
+ var _api$resources;
1625
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1626
+ args[_key] = arguments[_key];
1627
+ }
1628
+ return (_api$resources = api.resources).get.apply(_api$resources, [resource].concat(args));
1629
+ },
1630
+ getTrashed: function getTrashed() {
1631
+ var _api$resources2;
1632
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
1633
+ args[_key2] = arguments[_key2];
1634
+ }
1635
+ return (_api$resources2 = api.resources).getTrashed.apply(_api$resources2, [resource].concat(args));
1636
+ },
1637
+ find: function find() {
1638
+ var _api$resources3;
1639
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
1640
+ args[_key3] = arguments[_key3];
1641
+ }
1642
+ return (_api$resources3 = api.resources).find.apply(_api$resources3, [resource].concat(args));
1643
+ },
1644
+ create: function create() {
1645
+ var _api$resources4;
1646
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
1647
+ args[_key4] = arguments[_key4];
1648
+ }
1649
+ return (_api$resources4 = api.resources).create.apply(_api$resources4, [resource].concat(args));
1650
+ },
1651
+ update: function update() {
1652
+ var _api$resources5;
1653
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
1654
+ args[_key5] = arguments[_key5];
1655
+ }
1656
+ return (_api$resources5 = api.resources).update.apply(_api$resources5, [resource].concat(args));
1657
+ },
1658
+ trash: function trash() {
1659
+ var _api$resources6;
1660
+ for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
1661
+ args[_key6] = arguments[_key6];
1662
+ }
1663
+ return (_api$resources6 = api.resources).trash.apply(_api$resources6, [resource].concat(args));
1664
+ },
1665
+ "delete": function _delete() {
1666
+ var _api$resources7;
1667
+ for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
1668
+ args[_key7] = arguments[_key7];
1669
+ }
1670
+ return (_api$resources7 = api.resources)["delete"].apply(_api$resources7, [resource].concat(args));
1671
+ }
1672
+ };
1673
+ }, [api, resource]);
1674
+ return /*#__PURE__*/React.createElement(MediasBrowserContainer, Object.assign({
1675
+ api: mediasApi
1676
+ }, props));
1677
+ }
1678
+ MediasResourceBrowser.propTypes = propTypes$1;
1679
+ MediasResourceBrowser.defaultProps = defaultProps$1;
1680
+
1681
+ var _excluded = ["resource"];
1682
+ var propTypes = {
1683
+ resource: PropTypes.string
1684
+ };
1685
+ var defaultProps = {
1686
+ resource: 'medias'
1687
+ };
1688
+ function MediasResourcePicker(_ref) {
1689
+ var resourceId = _ref.resource,
1690
+ props = _objectWithoutProperties(_ref, _excluded);
1691
+ var resource = usePanneauResource(resourceId);
1692
+ var _ref2 = resource || {},
1693
+ _ref2$index = _ref2.index,
1694
+ index = _ref2$index === void 0 ? null : _ref2$index,
1695
+ _ref2$fields = _ref2.fields,
1696
+ fields = _ref2$fields === void 0 ? null : _ref2$fields;
1697
+ var _ref3 = index || {},
1698
+ _ref3$filters = _ref3.filters,
1699
+ filters = _ref3$filters === void 0 ? null : _ref3$filters,
1700
+ _ref3$columns = _ref3.columns,
1701
+ columns = _ref3$columns === void 0 ? null : _ref3$columns;
1702
+ var api = useApi();
1703
+ var mediasApi = useMemo(function () {
1704
+ return {
1705
+ get: function get() {
1706
+ var _api$resources;
1707
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1708
+ args[_key] = arguments[_key];
1709
+ }
1710
+ return (_api$resources = api.resources).get.apply(_api$resources, [resource].concat(args));
1711
+ },
1712
+ getTrashed: function getTrashed() {
1713
+ var _api$resources2;
1714
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
1715
+ args[_key2] = arguments[_key2];
1716
+ }
1717
+ return (_api$resources2 = api.resources).getTrashed.apply(_api$resources2, [resource].concat(args));
1718
+ },
1719
+ find: function find() {
1720
+ var _api$resources3;
1721
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
1722
+ args[_key3] = arguments[_key3];
1723
+ }
1724
+ return (_api$resources3 = api.resources).find.apply(_api$resources3, [resource].concat(args));
1725
+ },
1726
+ create: function create() {
1727
+ var _api$resources4;
1728
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
1729
+ args[_key4] = arguments[_key4];
1730
+ }
1731
+ return (_api$resources4 = api.resources).create.apply(_api$resources4, [resource].concat(args));
1732
+ },
1733
+ update: function update() {
1734
+ var _api$resources5;
1735
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
1736
+ args[_key5] = arguments[_key5];
1737
+ }
1738
+ return (_api$resources5 = api.resources).update.apply(_api$resources5, [resource].concat(args));
1739
+ },
1740
+ trash: function trash() {
1741
+ var _api$resources6;
1742
+ for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
1743
+ args[_key6] = arguments[_key6];
1744
+ }
1745
+ return (_api$resources6 = api.resources).trash.apply(_api$resources6, [resource].concat(args));
1746
+ },
1747
+ "delete": function _delete() {
1748
+ var _api$resources7;
1749
+ for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
1750
+ args[_key7] = arguments[_key7];
1751
+ }
1752
+ return (_api$resources7 = api.resources)["delete"].apply(_api$resources7, [resource].concat(args));
1753
+ }
1754
+ };
1755
+ }, [api, resource]);
1756
+ return /*#__PURE__*/React.createElement(MediasPickerContainer, Object.assign({
1757
+ api: mediasApi
1758
+ }, filters !== null ? {
1759
+ filters: filters
1760
+ } : null, fields !== null ? {
1761
+ fields: fields
1762
+ } : null, columns !== null ? {
1763
+ columns: columns
1764
+ } : null, props));
1765
+ }
1766
+ MediasResourcePicker.propTypes = propTypes;
1767
+ MediasResourcePicker.defaultProps = defaultProps;
1768
+
1769
+ export { MediaForm, MediaProvider, MediasApiProvider, MediasBrowser, MediasBrowserContainer, MediasPicker, MediasPickerContainer, MediasResourceBrowser, MediasResourcePicker, apiPropTypes, defaultColumns as columns, defaultFields as fields, defaultFilters as filters, useCurrentMedia, useMedia$1 as useMedia, useMediaCreate$1 as useMediaCreate, useMediaDelete$1 as useMediaDelete, useMediaReplace$1 as useMediaReplace, useMediaRestore$1 as useMediaRestore, useMediaTrash$1 as useMediaTrash, useMediaUpdate$1 as useMediaUpdate, useMedias$1 as useMedias, useMediasApi };