@tradly/asset 1.0.21 → 1.0.23
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/dist/components/FilesGallery.js +13 -0
- package/dist/core/FileTypes.js +11 -0
- package/dist/esm/components/FilesGallery.js +1 -0
- package/dist/esm/core/FileTypes.js +6 -0
- package/dist/esm/native/FilesGallery.native.js +288 -0
- package/dist/esm/native/MediaGallery.native.js +1 -1
- package/dist/esm/native/MediaTab.native.js +3 -2
- package/dist/esm/native/VideosGallery.native.js +23 -23
- package/dist/esm/web/FilesGallery.web.js +173 -0
- package/dist/esm/web/MediaGallery.web.js +12 -12
- package/dist/esm/web/MediaTab.web.js +26 -26
- package/dist/esm/web/VideosGallery.web.js +11 -11
- package/dist/native/FilesGallery.native.js +297 -0
- package/dist/native/MediaGallery.native.js +2 -2
- package/dist/native/MediaTab.native.js +3 -2
- package/dist/native/VideosGallery.native.js +18 -18
- package/dist/web/FilesGallery.web.js +182 -0
- package/dist/web/MediaGallery.web.js +9 -9
- package/dist/web/MediaTab.web.js +23 -23
- package/dist/web/VideosGallery.web.js +8 -8
- package/package.json +1 -1
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _reactNative = require("react-native");
|
|
10
|
+
var _FileUpload = _interopRequireDefault(require("./FileUpload.native"));
|
|
11
|
+
var _ImagesSkeleton = _interopRequireDefault(require("./ImagesSkeleton.native"));
|
|
12
|
+
var _Pagination = _interopRequireDefault(require("./Pagination.native"));
|
|
13
|
+
var _FileTypes = require("../core/FileTypes");
|
|
14
|
+
var _theme = require("./theme");
|
|
15
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
|
|
18
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
19
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
20
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
21
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
22
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
23
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
24
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
25
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
26
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
27
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
28
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
29
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
30
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
31
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
32
|
+
var _Dimensions$get = _reactNative.Dimensions.get("window"),
|
|
33
|
+
SCREEN_WIDTH = _Dimensions$get.width;
|
|
34
|
+
var NUM_COLUMNS = 3;
|
|
35
|
+
var ITEM_MARGIN = 4; // Reduced margin for better fit
|
|
36
|
+
// Calculate item size accounting for:
|
|
37
|
+
// - Container padding (md = 12px on each side = 24px total)
|
|
38
|
+
// - Grid padding (2px on each side = 4px total)
|
|
39
|
+
// - Item margins between items (4px * 2 gaps = 8px total)
|
|
40
|
+
var CONTAINER_PADDING = 24; // paddingHorizontal md (12 * 2)
|
|
41
|
+
var GRID_PADDING = 4; // padding 2 on each side (2 * 2)
|
|
42
|
+
var TOTAL_MARGINS = ITEM_MARGIN * (NUM_COLUMNS - 1) * 2; // margins between items (4px * 2 gaps = 8px)
|
|
43
|
+
var ITEM_SIZE = (SCREEN_WIDTH - CONTAINER_PADDING - GRID_PADDING - TOTAL_MARGINS) / NUM_COLUMNS;
|
|
44
|
+
var FilesGallery = function FilesGallery(_ref) {
|
|
45
|
+
var update_data = _ref.update_data,
|
|
46
|
+
closePopup = _ref.closePopup,
|
|
47
|
+
apiService = _ref.apiService,
|
|
48
|
+
onError = _ref.onError,
|
|
49
|
+
picker = _ref.picker,
|
|
50
|
+
pickerOptions = _ref.pickerOptions,
|
|
51
|
+
icons = _ref.icons,
|
|
52
|
+
_ref$theme = _ref.theme,
|
|
53
|
+
theme = _ref$theme === void 0 ? _theme.defaultTheme : _ref$theme,
|
|
54
|
+
containerStyle = _ref.containerStyle,
|
|
55
|
+
gridStyle = _ref.gridStyle,
|
|
56
|
+
fileItemStyle = _ref.fileItemStyle,
|
|
57
|
+
paginationContainerStyle = _ref.paginationContainerStyle;
|
|
58
|
+
var _useState = (0, _react.useState)([]),
|
|
59
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
60
|
+
files = _useState2[0],
|
|
61
|
+
setFiles = _useState2[1];
|
|
62
|
+
var _useState3 = (0, _react.useState)(0),
|
|
63
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
64
|
+
total_count = _useState4[0],
|
|
65
|
+
setTotalCount = _useState4[1];
|
|
66
|
+
var _useState5 = (0, _react.useState)(1),
|
|
67
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
68
|
+
currentPage = _useState6[0],
|
|
69
|
+
setCurrentPage = _useState6[1];
|
|
70
|
+
var _useState7 = (0, _react.useState)(false),
|
|
71
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
72
|
+
isLoading = _useState8[0],
|
|
73
|
+
setISLoading = _useState8[1];
|
|
74
|
+
|
|
75
|
+
// Fetch files
|
|
76
|
+
(0, _react.useEffect)(function () {
|
|
77
|
+
loadMedia();
|
|
78
|
+
}, []);
|
|
79
|
+
var loadMedia = /*#__PURE__*/function () {
|
|
80
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
81
|
+
var page_number,
|
|
82
|
+
_response$data,
|
|
83
|
+
_response$data2,
|
|
84
|
+
response,
|
|
85
|
+
mediaData,
|
|
86
|
+
count,
|
|
87
|
+
_args = arguments,
|
|
88
|
+
_t;
|
|
89
|
+
return _regenerator().w(function (_context) {
|
|
90
|
+
while (1) switch (_context.p = _context.n) {
|
|
91
|
+
case 0:
|
|
92
|
+
page_number = _args.length > 0 && _args[0] !== undefined ? _args[0] : 1;
|
|
93
|
+
_context.p = 1;
|
|
94
|
+
_context.n = 2;
|
|
95
|
+
return apiService.fetchMedia({
|
|
96
|
+
mimeTypes: _FileTypes.FILE_MIME_TYPES,
|
|
97
|
+
page: page_number,
|
|
98
|
+
setISLoading: setISLoading,
|
|
99
|
+
isLoading: isLoading
|
|
100
|
+
});
|
|
101
|
+
case 2:
|
|
102
|
+
response = _context.v;
|
|
103
|
+
// Handle different response formats
|
|
104
|
+
mediaData = (response === null || response === void 0 ? void 0 : response.media) || (response === null || response === void 0 || (_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.media) || (response === null || response === void 0 ? void 0 : response.data) || response || [];
|
|
105
|
+
count = (response === null || response === void 0 ? void 0 : response.count) || (response === null || response === void 0 || (_response$data2 = response.data) === null || _response$data2 === void 0 ? void 0 : _response$data2.count) || (response === null || response === void 0 ? void 0 : response.total) || 0;
|
|
106
|
+
setFiles(Array.isArray(mediaData) ? mediaData : []);
|
|
107
|
+
setTotalCount(count);
|
|
108
|
+
setCurrentPage(page_number);
|
|
109
|
+
_context.n = 4;
|
|
110
|
+
break;
|
|
111
|
+
case 3:
|
|
112
|
+
_context.p = 3;
|
|
113
|
+
_t = _context.v;
|
|
114
|
+
console.error("Error loading files:", _t);
|
|
115
|
+
if (onError) {
|
|
116
|
+
onError(_t);
|
|
117
|
+
}
|
|
118
|
+
case 4:
|
|
119
|
+
return _context.a(2);
|
|
120
|
+
}
|
|
121
|
+
}, _callee, null, [[1, 3]]);
|
|
122
|
+
}));
|
|
123
|
+
return function loadMedia() {
|
|
124
|
+
return _ref2.apply(this, arguments);
|
|
125
|
+
};
|
|
126
|
+
}();
|
|
127
|
+
var handleFileClick = function handleFileClick(file) {
|
|
128
|
+
if (update_data) {
|
|
129
|
+
update_data(file.url || file);
|
|
130
|
+
}
|
|
131
|
+
if (closePopup) {
|
|
132
|
+
closePopup();
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
// Get file icon based on mime type
|
|
137
|
+
var getFileIcon = function getFileIcon(mimeType) {
|
|
138
|
+
if (!mimeType) return "📄";
|
|
139
|
+
if (mimeType.includes("pdf")) return "📕";
|
|
140
|
+
if (mimeType.includes("word") || mimeType.includes("document")) return "📘";
|
|
141
|
+
if (mimeType.includes("excel") || mimeType.includes("spreadsheet")) return "📗";
|
|
142
|
+
if (mimeType.includes("powerpoint") || mimeType.includes("presentation")) return "📙";
|
|
143
|
+
if (mimeType.includes("zip") || mimeType.includes("rar")) return "📦";
|
|
144
|
+
if (mimeType.includes("audio")) return "🎵";
|
|
145
|
+
if (mimeType.includes("text")) return "📝";
|
|
146
|
+
return "📄";
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
// Get file extension from name or URL
|
|
150
|
+
var getFileExtension = function getFileExtension(file) {
|
|
151
|
+
var fileName = file.name || file.url || "";
|
|
152
|
+
var parts = fileName.split(".");
|
|
153
|
+
return parts.length > 1 ? parts[parts.length - 1].toUpperCase() : "";
|
|
154
|
+
};
|
|
155
|
+
var renderItem = function renderItem(_ref3) {
|
|
156
|
+
var item = _ref3.item,
|
|
157
|
+
index = _ref3.index;
|
|
158
|
+
// First item is the upload button
|
|
159
|
+
if (index === 0) {
|
|
160
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
161
|
+
style: [styles.uploadContainer, {
|
|
162
|
+
width: ITEM_SIZE,
|
|
163
|
+
height: ITEM_SIZE
|
|
164
|
+
}],
|
|
165
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_FileUpload.default, {
|
|
166
|
+
loadMedia: loadMedia,
|
|
167
|
+
accept: "file/*",
|
|
168
|
+
title: "Add File",
|
|
169
|
+
apiService: apiService,
|
|
170
|
+
onUploadError: onError,
|
|
171
|
+
picker: picker,
|
|
172
|
+
pickerOptions: pickerOptions,
|
|
173
|
+
icons: icons,
|
|
174
|
+
theme: theme
|
|
175
|
+
})
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
var file = files[index - 1];
|
|
179
|
+
var fileUrl = typeof file === "string" ? file : file.url;
|
|
180
|
+
var fileKey = file.id || file.url || index;
|
|
181
|
+
var mimeType = file.mime_type || file.type || "";
|
|
182
|
+
var fileName = file.name || (fileUrl === null || fileUrl === void 0 ? void 0 : fileUrl.split("/").pop()) || "File";
|
|
183
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
|
|
184
|
+
onPress: function onPress() {
|
|
185
|
+
return handleFileClick(file);
|
|
186
|
+
},
|
|
187
|
+
style: [styles.fileItem, {
|
|
188
|
+
width: ITEM_SIZE,
|
|
189
|
+
height: ITEM_SIZE,
|
|
190
|
+
backgroundColor: theme.colors.itemBackground,
|
|
191
|
+
shadowColor: theme.colors.itemShadow
|
|
192
|
+
}, fileItemStyle],
|
|
193
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
194
|
+
style: styles.fileIconContainer,
|
|
195
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
196
|
+
style: styles.fileIcon,
|
|
197
|
+
children: getFileIcon(mimeType)
|
|
198
|
+
})
|
|
199
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
200
|
+
style: [styles.fileName, {
|
|
201
|
+
color: theme.colors.text
|
|
202
|
+
}],
|
|
203
|
+
numberOfLines: 2,
|
|
204
|
+
ellipsizeMode: "tail",
|
|
205
|
+
children: fileName
|
|
206
|
+
}), getFileExtension(file) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
207
|
+
style: [styles.fileExtension, {
|
|
208
|
+
color: theme.colors.textSecondary
|
|
209
|
+
}],
|
|
210
|
+
children: getFileExtension(file)
|
|
211
|
+
})]
|
|
212
|
+
});
|
|
213
|
+
};
|
|
214
|
+
var data = isLoading ? [] : [{
|
|
215
|
+
type: "upload"
|
|
216
|
+
}].concat(_toConsumableArray(files));
|
|
217
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
218
|
+
style: [styles.container, containerStyle],
|
|
219
|
+
children: isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ImagesSkeleton.default, {}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.FlatList, {
|
|
220
|
+
data: data,
|
|
221
|
+
renderItem: renderItem,
|
|
222
|
+
keyExtractor: function keyExtractor(item, index) {
|
|
223
|
+
if (index === 0) return "upload";
|
|
224
|
+
var file = files[index - 1];
|
|
225
|
+
return file.id || file.url || "file-".concat(index);
|
|
226
|
+
},
|
|
227
|
+
numColumns: NUM_COLUMNS,
|
|
228
|
+
contentContainerStyle: [styles.grid, gridStyle],
|
|
229
|
+
showsVerticalScrollIndicator: false,
|
|
230
|
+
ListFooterComponent: total_count > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
231
|
+
style: [styles.paginationContainer, {
|
|
232
|
+
backgroundColor: theme.colors.paginationBackground,
|
|
233
|
+
paddingVertical: theme.spacing.lg,
|
|
234
|
+
paddingHorizontal: theme.spacing.sm,
|
|
235
|
+
marginTop: theme.spacing.sm
|
|
236
|
+
}, paginationContainerStyle],
|
|
237
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pagination.default, {
|
|
238
|
+
nextPage: function nextPage(value) {
|
|
239
|
+
return loadMedia(value);
|
|
240
|
+
},
|
|
241
|
+
pageCount: Math.ceil(total_count / 30),
|
|
242
|
+
current_page: currentPage,
|
|
243
|
+
theme: theme
|
|
244
|
+
})
|
|
245
|
+
}) : null
|
|
246
|
+
})
|
|
247
|
+
});
|
|
248
|
+
};
|
|
249
|
+
var styles = _reactNative.StyleSheet.create({
|
|
250
|
+
container: {
|
|
251
|
+
flex: 1
|
|
252
|
+
},
|
|
253
|
+
grid: {
|
|
254
|
+
padding: 2 // Reduced padding for better fit
|
|
255
|
+
},
|
|
256
|
+
uploadContainer: {
|
|
257
|
+
margin: ITEM_MARGIN,
|
|
258
|
+
overflow: "hidden"
|
|
259
|
+
},
|
|
260
|
+
fileItem: {
|
|
261
|
+
margin: ITEM_MARGIN,
|
|
262
|
+
borderRadius: 8,
|
|
263
|
+
overflow: "hidden",
|
|
264
|
+
padding: 8,
|
|
265
|
+
justifyContent: "center",
|
|
266
|
+
alignItems: "center",
|
|
267
|
+
shadowOffset: {
|
|
268
|
+
width: 0,
|
|
269
|
+
height: 2
|
|
270
|
+
},
|
|
271
|
+
shadowOpacity: 0.1,
|
|
272
|
+
shadowRadius: 3.84,
|
|
273
|
+
elevation: 5
|
|
274
|
+
},
|
|
275
|
+
fileIconContainer: {
|
|
276
|
+
marginBottom: 4
|
|
277
|
+
},
|
|
278
|
+
fileIcon: {
|
|
279
|
+
fontSize: 32
|
|
280
|
+
},
|
|
281
|
+
fileName: {
|
|
282
|
+
fontSize: 10,
|
|
283
|
+
textAlign: "center",
|
|
284
|
+
marginTop: 4,
|
|
285
|
+
fontWeight: "500"
|
|
286
|
+
},
|
|
287
|
+
fileExtension: {
|
|
288
|
+
fontSize: 8,
|
|
289
|
+
textAlign: "center",
|
|
290
|
+
marginTop: 2,
|
|
291
|
+
fontWeight: "400"
|
|
292
|
+
},
|
|
293
|
+
paginationContainer: {
|
|
294
|
+
// Styles applied via theme
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
var _default = exports.default = FilesGallery;
|
|
@@ -11,6 +11,7 @@ var _FileUpload = _interopRequireDefault(require("./FileUpload.native"));
|
|
|
11
11
|
var _ImagesSkeleton = _interopRequireDefault(require("./ImagesSkeleton.native"));
|
|
12
12
|
var _Pagination = _interopRequireDefault(require("./Pagination.native"));
|
|
13
13
|
var _theme = require("./theme");
|
|
14
|
+
var _FileTypes = require("../core/FileTypes");
|
|
14
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
16
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
17
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
|
|
@@ -40,7 +41,6 @@ var CONTAINER_PADDING = 24; // paddingHorizontal md (12 * 2)
|
|
|
40
41
|
var GRID_PADDING = 4; // padding 2 on each side (2 * 2)
|
|
41
42
|
var TOTAL_MARGINS = ITEM_MARGIN * (NUM_COLUMNS - 1) * 2; // margins between items (4px * 2 gaps = 8px)
|
|
42
43
|
var ITEM_SIZE = (SCREEN_WIDTH - CONTAINER_PADDING - GRID_PADDING - TOTAL_MARGINS) / NUM_COLUMNS;
|
|
43
|
-
var IMAGE_MIME_TYPES = ["image/png", "image/jpeg", "image/webp", "image/svg+xml", "image/gif", "image/avif", "image/x-icon", "image/vnd.microsoft.icon", "image/heic", "image/heif"];
|
|
44
44
|
var ImagesGallery = function ImagesGallery(_ref) {
|
|
45
45
|
var update_data = _ref.update_data,
|
|
46
46
|
closePopup = _ref.closePopup,
|
|
@@ -93,7 +93,7 @@ var ImagesGallery = function ImagesGallery(_ref) {
|
|
|
93
93
|
_context.p = 1;
|
|
94
94
|
_context.n = 2;
|
|
95
95
|
return apiService.fetchMedia({
|
|
96
|
-
mimeTypes: IMAGE_MIME_TYPES,
|
|
96
|
+
mimeTypes: _FileTypes.IMAGE_MIME_TYPES,
|
|
97
97
|
page: page_number,
|
|
98
98
|
setISLoading: setISLoading,
|
|
99
99
|
isLoading: isLoading
|
|
@@ -9,6 +9,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
9
9
|
var _reactNative = require("react-native");
|
|
10
10
|
var _MediaGallery = _interopRequireDefault(require("./MediaGallery.native"));
|
|
11
11
|
var _VideosGallery = _interopRequireDefault(require("./VideosGallery.native"));
|
|
12
|
+
var _FilesGallery = _interopRequireDefault(require("./FilesGallery.native"));
|
|
12
13
|
var _theme = require("./theme");
|
|
13
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
15
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -95,8 +96,8 @@ var MediaTab = function MediaTab(_ref) {
|
|
|
95
96
|
});
|
|
96
97
|
}
|
|
97
98
|
if (type === "file") {
|
|
98
|
-
//
|
|
99
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
99
|
+
// Use FilesGallery for non-image, non-video files
|
|
100
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FilesGallery.default, {
|
|
100
101
|
imagePopup: imagePopup,
|
|
101
102
|
update_data: update_data,
|
|
102
103
|
current_data: current_data,
|
|
@@ -11,6 +11,7 @@ var _FileUpload = _interopRequireDefault(require("./FileUpload.native"));
|
|
|
11
11
|
var _ImagesSkeleton = _interopRequireDefault(require("./ImagesSkeleton.native"));
|
|
12
12
|
var _Pagination = _interopRequireDefault(require("./Pagination.native"));
|
|
13
13
|
var _theme = require("./theme");
|
|
14
|
+
var _FileTypes = require("../core/FileTypes");
|
|
14
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
16
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
17
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
|
|
@@ -30,7 +31,7 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
|
|
|
30
31
|
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } // Icons are now passed via props, no need to import here
|
|
31
32
|
// Note: You'll need to install react-native-video for video playback
|
|
32
33
|
// import Video from 'react-native-video'
|
|
33
|
-
var _Dimensions$get = _reactNative.Dimensions.get(
|
|
34
|
+
var _Dimensions$get = _reactNative.Dimensions.get("window"),
|
|
34
35
|
SCREEN_WIDTH = _Dimensions$get.width;
|
|
35
36
|
var NUM_COLUMNS = 3;
|
|
36
37
|
var ITEM_MARGIN = 4; // Reduced margin for better fit
|
|
@@ -42,7 +43,6 @@ var CONTAINER_PADDING = 24; // paddingHorizontal md (12 * 2)
|
|
|
42
43
|
var GRID_PADDING = 4; // padding 2 on each side (2 * 2)
|
|
43
44
|
var TOTAL_MARGINS = ITEM_MARGIN * (NUM_COLUMNS - 1) * 2; // margins between items (4px * 2 gaps = 8px)
|
|
44
45
|
var ITEM_SIZE = (SCREEN_WIDTH - CONTAINER_PADDING - GRID_PADDING - TOTAL_MARGINS) / NUM_COLUMNS;
|
|
45
|
-
var VIDEO_MIME_TYPES = ['video/mp4', 'video/quicktime', 'video/x-ms-wmv', 'video/h265', 'video/hevc', 'video/webm'];
|
|
46
46
|
var VideosGallery = function VideosGallery(_ref) {
|
|
47
47
|
var update_data = _ref.update_data,
|
|
48
48
|
closePopup = _ref.closePopup,
|
|
@@ -95,7 +95,7 @@ var VideosGallery = function VideosGallery(_ref) {
|
|
|
95
95
|
_context.p = 1;
|
|
96
96
|
_context.n = 2;
|
|
97
97
|
return apiService.fetchMedia({
|
|
98
|
-
mimeTypes: VIDEO_MIME_TYPES,
|
|
98
|
+
mimeTypes: _FileTypes.VIDEO_MIME_TYPES,
|
|
99
99
|
page: page_number,
|
|
100
100
|
setISLoading: setISLoading,
|
|
101
101
|
isLoading: isLoading
|
|
@@ -113,7 +113,7 @@ var VideosGallery = function VideosGallery(_ref) {
|
|
|
113
113
|
case 3:
|
|
114
114
|
_context.p = 3;
|
|
115
115
|
_t = _context.v;
|
|
116
|
-
console.error(
|
|
116
|
+
console.error("Error loading videos:", _t);
|
|
117
117
|
if (onError) {
|
|
118
118
|
onError(_t);
|
|
119
119
|
}
|
|
@@ -158,7 +158,7 @@ var VideosGallery = function VideosGallery(_ref) {
|
|
|
158
158
|
});
|
|
159
159
|
}
|
|
160
160
|
var video = videos[index - 1];
|
|
161
|
-
var videoUrl = typeof video ===
|
|
161
|
+
var videoUrl = typeof video === "string" ? video : video.url;
|
|
162
162
|
var videoKey = video.id || video.url || index;
|
|
163
163
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
164
164
|
onPress: function onPress() {
|
|
@@ -178,7 +178,7 @@ var VideosGallery = function VideosGallery(_ref) {
|
|
|
178
178
|
});
|
|
179
179
|
};
|
|
180
180
|
var data = isLoading ? [] : [{
|
|
181
|
-
type:
|
|
181
|
+
type: "upload"
|
|
182
182
|
}].concat(_toConsumableArray(videos));
|
|
183
183
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
184
184
|
style: [styles.container, containerStyle],
|
|
@@ -186,7 +186,7 @@ var VideosGallery = function VideosGallery(_ref) {
|
|
|
186
186
|
data: data,
|
|
187
187
|
renderItem: renderItem,
|
|
188
188
|
keyExtractor: function keyExtractor(item, index) {
|
|
189
|
-
if (index === 0) return
|
|
189
|
+
if (index === 0) return "upload";
|
|
190
190
|
var video = videos[index - 1];
|
|
191
191
|
return video.id || video.url || "video-".concat(index);
|
|
192
192
|
},
|
|
@@ -225,9 +225,9 @@ var styles = _reactNative.StyleSheet.create({
|
|
|
225
225
|
videoItem: {
|
|
226
226
|
margin: ITEM_MARGIN,
|
|
227
227
|
borderRadius: 8,
|
|
228
|
-
overflow:
|
|
229
|
-
backgroundColor:
|
|
230
|
-
shadowColor:
|
|
228
|
+
overflow: "hidden",
|
|
229
|
+
backgroundColor: "#000000",
|
|
230
|
+
shadowColor: "#000",
|
|
231
231
|
shadowOffset: {
|
|
232
232
|
width: 0,
|
|
233
233
|
height: 2
|
|
@@ -237,19 +237,19 @@ var styles = _reactNative.StyleSheet.create({
|
|
|
237
237
|
elevation: 5
|
|
238
238
|
},
|
|
239
239
|
videoPlaceholder: {
|
|
240
|
-
width:
|
|
241
|
-
height:
|
|
242
|
-
backgroundColor:
|
|
243
|
-
justifyContent:
|
|
244
|
-
alignItems:
|
|
240
|
+
width: "100%",
|
|
241
|
+
height: "100%",
|
|
242
|
+
backgroundColor: "#1a1a1a",
|
|
243
|
+
justifyContent: "center",
|
|
244
|
+
alignItems: "center"
|
|
245
245
|
},
|
|
246
246
|
playIcon: {
|
|
247
247
|
fontSize: 32,
|
|
248
|
-
color:
|
|
248
|
+
color: "#FFFFFF"
|
|
249
249
|
},
|
|
250
250
|
video: {
|
|
251
|
-
width:
|
|
252
|
-
height:
|
|
251
|
+
width: "100%",
|
|
252
|
+
height: "100%"
|
|
253
253
|
},
|
|
254
254
|
paginationContainer: {
|
|
255
255
|
// Styles applied via theme
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _FileUpload = _interopRequireDefault(require("./FileUpload.web"));
|
|
10
|
+
var _ImagesSkeleton = _interopRequireDefault(require("./ImagesSkeleton.web"));
|
|
11
|
+
var _Pagination = _interopRequireDefault(require("./Pagination.web"));
|
|
12
|
+
var _FileTypes = require("../core/FileTypes");
|
|
13
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
|
|
16
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
17
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
18
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
19
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
20
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
21
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
22
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
23
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
24
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
25
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
26
|
+
var FilesGallery = function FilesGallery(_ref) {
|
|
27
|
+
var update_data = _ref.update_data,
|
|
28
|
+
closePopup = _ref.closePopup,
|
|
29
|
+
apiService = _ref.apiService,
|
|
30
|
+
onError = _ref.onError,
|
|
31
|
+
className = _ref.className,
|
|
32
|
+
gridClassName = _ref.gridClassName,
|
|
33
|
+
fileItemClassName = _ref.fileItemClassName,
|
|
34
|
+
paginationContainerClassName = _ref.paginationContainerClassName;
|
|
35
|
+
var _useState = (0, _react.useState)([]),
|
|
36
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
37
|
+
files = _useState2[0],
|
|
38
|
+
setFiles = _useState2[1];
|
|
39
|
+
var _useState3 = (0, _react.useState)(0),
|
|
40
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
41
|
+
total_count = _useState4[0],
|
|
42
|
+
setTotalCount = _useState4[1];
|
|
43
|
+
var _useState5 = (0, _react.useState)(1),
|
|
44
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
45
|
+
currentPage = _useState6[0],
|
|
46
|
+
setCurrentPage = _useState6[1];
|
|
47
|
+
var _useState7 = (0, _react.useState)(false),
|
|
48
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
49
|
+
isLoading = _useState8[0],
|
|
50
|
+
setISLoading = _useState8[1];
|
|
51
|
+
|
|
52
|
+
// Fetch files
|
|
53
|
+
(0, _react.useEffect)(function () {
|
|
54
|
+
loadMedia();
|
|
55
|
+
}, []);
|
|
56
|
+
var loadMedia = /*#__PURE__*/function () {
|
|
57
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
58
|
+
var page_number,
|
|
59
|
+
_response$data,
|
|
60
|
+
_response$data2,
|
|
61
|
+
response,
|
|
62
|
+
mediaData,
|
|
63
|
+
count,
|
|
64
|
+
_args = arguments,
|
|
65
|
+
_t;
|
|
66
|
+
return _regenerator().w(function (_context) {
|
|
67
|
+
while (1) switch (_context.p = _context.n) {
|
|
68
|
+
case 0:
|
|
69
|
+
page_number = _args.length > 0 && _args[0] !== undefined ? _args[0] : 1;
|
|
70
|
+
_context.p = 1;
|
|
71
|
+
_context.n = 2;
|
|
72
|
+
return apiService.fetchMedia({
|
|
73
|
+
mimeTypes: _FileTypes.FILE_MIME_TYPES,
|
|
74
|
+
page: page_number,
|
|
75
|
+
setISLoading: setISLoading,
|
|
76
|
+
isLoading: isLoading
|
|
77
|
+
});
|
|
78
|
+
case 2:
|
|
79
|
+
response = _context.v;
|
|
80
|
+
// Handle different response formats
|
|
81
|
+
mediaData = (response === null || response === void 0 ? void 0 : response.media) || (response === null || response === void 0 || (_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.media) || (response === null || response === void 0 ? void 0 : response.data) || response || [];
|
|
82
|
+
count = (response === null || response === void 0 ? void 0 : response.count) || (response === null || response === void 0 || (_response$data2 = response.data) === null || _response$data2 === void 0 ? void 0 : _response$data2.count) || (response === null || response === void 0 ? void 0 : response.total) || 0;
|
|
83
|
+
setFiles(Array.isArray(mediaData) ? mediaData : []);
|
|
84
|
+
setTotalCount(count);
|
|
85
|
+
setCurrentPage(page_number);
|
|
86
|
+
_context.n = 4;
|
|
87
|
+
break;
|
|
88
|
+
case 3:
|
|
89
|
+
_context.p = 3;
|
|
90
|
+
_t = _context.v;
|
|
91
|
+
console.error("Error loading files:", _t);
|
|
92
|
+
if (onError) {
|
|
93
|
+
onError(_t);
|
|
94
|
+
}
|
|
95
|
+
case 4:
|
|
96
|
+
return _context.a(2);
|
|
97
|
+
}
|
|
98
|
+
}, _callee, null, [[1, 3]]);
|
|
99
|
+
}));
|
|
100
|
+
return function loadMedia() {
|
|
101
|
+
return _ref2.apply(this, arguments);
|
|
102
|
+
};
|
|
103
|
+
}();
|
|
104
|
+
var handleFileClick = function handleFileClick(file) {
|
|
105
|
+
if (update_data) {
|
|
106
|
+
update_data(file.url || file);
|
|
107
|
+
}
|
|
108
|
+
if (closePopup) {
|
|
109
|
+
closePopup();
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
// Get file icon based on mime type
|
|
114
|
+
var getFileIcon = function getFileIcon(mimeType) {
|
|
115
|
+
if (!mimeType) return "📄";
|
|
116
|
+
if (mimeType.includes("pdf")) return "📕";
|
|
117
|
+
if (mimeType.includes("word") || mimeType.includes("document")) return "📘";
|
|
118
|
+
if (mimeType.includes("excel") || mimeType.includes("spreadsheet")) return "📗";
|
|
119
|
+
if (mimeType.includes("powerpoint") || mimeType.includes("presentation")) return "📙";
|
|
120
|
+
if (mimeType.includes("zip") || mimeType.includes("rar")) return "📦";
|
|
121
|
+
if (mimeType.includes("audio")) return "🎵";
|
|
122
|
+
if (mimeType.includes("text")) return "📝";
|
|
123
|
+
return "📄";
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
// Get file extension from name or URL
|
|
127
|
+
var getFileExtension = function getFileExtension(file) {
|
|
128
|
+
var fileName = file.name || file.url || "";
|
|
129
|
+
var parts = fileName.split(".");
|
|
130
|
+
return parts.length > 1 ? parts[parts.length - 1].toUpperCase() : "";
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
// Default classes with customization support
|
|
134
|
+
var defaultContainerClass = "h-full flex flex-col justify-between";
|
|
135
|
+
var defaultGridClass = "grid grid-cols-[repeat(auto-fill,minmax(calc(160px),1fr))] gap-5";
|
|
136
|
+
var defaultFileItemClass = "cursor-pointer w-full h-40 flex flex-col items-center justify-center p-4 overflow-hidden bg-white rounded-md shadow-md hover:shadow-lg transition-shadow border border-gray-200";
|
|
137
|
+
var defaultPaginationContainerClass = "mb-4 bg-gray-100/90 p-4 sticky bottom-0";
|
|
138
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
139
|
+
className: className || defaultContainerClass,
|
|
140
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
141
|
+
className: gridClassName || defaultGridClass,
|
|
142
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_FileUpload.default, {
|
|
143
|
+
loadMedia: loadMedia,
|
|
144
|
+
accept: "file/*",
|
|
145
|
+
title: "Add File",
|
|
146
|
+
apiService: apiService,
|
|
147
|
+
onUploadError: onError
|
|
148
|
+
}), isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ImagesSkeleton.default, {}) : files === null || files === void 0 ? void 0 : files.map(function (file, index) {
|
|
149
|
+
var fileUrl = typeof file === "string" ? file : file.url;
|
|
150
|
+
var fileKey = file.id || file.url || index;
|
|
151
|
+
var mimeType = file.mime_type || file.type || "";
|
|
152
|
+
var fileName = file.name || (fileUrl === null || fileUrl === void 0 ? void 0 : fileUrl.split("/").pop()) || "File";
|
|
153
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
154
|
+
onClick: function onClick() {
|
|
155
|
+
return handleFileClick(file);
|
|
156
|
+
},
|
|
157
|
+
className: fileItemClassName || defaultFileItemClass,
|
|
158
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
159
|
+
className: "text-4xl mb-2",
|
|
160
|
+
children: getFileIcon(mimeType)
|
|
161
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
162
|
+
className: "text-xs font-medium text-center text-gray-800 mb-1 line-clamp-2",
|
|
163
|
+
children: fileName
|
|
164
|
+
}), getFileExtension(file) && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
165
|
+
className: "text-xs text-gray-500",
|
|
166
|
+
children: getFileExtension(file)
|
|
167
|
+
})]
|
|
168
|
+
}, fileKey);
|
|
169
|
+
})]
|
|
170
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
171
|
+
className: paginationContainerClassName || defaultPaginationContainerClass,
|
|
172
|
+
children: total_count > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pagination.default, {
|
|
173
|
+
nextPage: function nextPage(value) {
|
|
174
|
+
return loadMedia(value);
|
|
175
|
+
},
|
|
176
|
+
pageCount: Math.ceil(total_count / 30),
|
|
177
|
+
current_page: currentPage
|
|
178
|
+
})
|
|
179
|
+
})]
|
|
180
|
+
});
|
|
181
|
+
};
|
|
182
|
+
var _default = exports.default = FilesGallery;
|