@tradly/asset 1.0.12 → 1.0.14
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/README.md +257 -13
- package/dist/components/FileUpload.js +8 -247
- package/dist/components/FileUpload.native.js +13 -0
- package/dist/components/Icons.js +10 -33
- package/dist/components/Icons.native.js +16 -0
- package/dist/components/ImagesSkeleton.js +7 -15
- package/dist/components/ImagesSkeleton.native.js +13 -0
- package/dist/components/MediaGallery.js +8 -148
- package/dist/components/MediaGallery.native.js +13 -0
- package/dist/components/MediaPopup.js +8 -99
- package/dist/components/MediaPopup.native.js +13 -0
- package/dist/components/MediaTab.js +7 -180
- package/dist/components/MediaTab.native.js +13 -0
- package/dist/components/Pagination.js +8 -136
- package/dist/components/Pagination.native.js +13 -0
- package/dist/components/VideosGallery.js +8 -148
- package/dist/components/VideosGallery.native.js +13 -0
- package/dist/core/MediaApiService.js +396 -0
- package/dist/esm/components/FileUpload.js +1 -246
- package/dist/esm/components/FileUpload.native.js +1 -0
- package/dist/esm/components/Icons.js +1 -32
- package/dist/esm/components/Icons.native.js +1 -0
- package/dist/esm/components/ImagesSkeleton.js +1 -14
- package/dist/esm/components/ImagesSkeleton.native.js +1 -0
- package/dist/esm/components/MediaGallery.js +1 -144
- package/dist/esm/components/MediaGallery.native.js +1 -0
- package/dist/esm/components/MediaPopup.js +1 -97
- package/dist/esm/components/MediaPopup.native.js +1 -0
- package/dist/esm/components/MediaTab.js +1 -177
- package/dist/esm/components/MediaTab.native.js +1 -0
- package/dist/esm/components/Pagination.js +1 -134
- package/dist/esm/components/Pagination.native.js +1 -0
- package/dist/esm/components/VideosGallery.js +1 -144
- package/dist/esm/components/VideosGallery.native.js +1 -0
- package/dist/esm/core/MediaApiService.js +390 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/native/FileUpload.native.js +298 -0
- package/dist/esm/native/Icons.native.js +51 -0
- package/dist/esm/native/ImagesSkeleton.native.js +45 -0
- package/dist/esm/native/MediaGallery.native.js +221 -0
- package/dist/esm/native/MediaPopup.native.js +151 -0
- package/dist/esm/native/MediaTab.native.js +175 -0
- package/dist/esm/native/Pagination.native.js +186 -0
- package/dist/esm/native/VideosGallery.native.js +233 -0
- package/dist/esm/services/apiService.js +1 -372
- package/dist/esm/web/FileUpload.web.js +253 -0
- package/dist/esm/web/Icons.web.js +32 -0
- package/dist/esm/web/ImagesSkeleton.web.js +14 -0
- package/dist/esm/web/MediaGallery.web.js +144 -0
- package/dist/esm/web/MediaPopup.web.js +97 -0
- package/dist/esm/web/MediaTab.web.js +177 -0
- package/dist/esm/web/Pagination.web.js +134 -0
- package/dist/esm/web/VideosGallery.web.js +144 -0
- package/dist/index.js +2 -2
- package/dist/native/FileUpload.native.js +304 -0
- package/dist/native/Icons.native.js +59 -0
- package/dist/native/ImagesSkeleton.native.js +52 -0
- package/dist/native/MediaGallery.native.js +230 -0
- package/dist/native/MediaPopup.native.js +158 -0
- package/dist/native/MediaTab.native.js +184 -0
- package/dist/native/Pagination.native.js +193 -0
- package/dist/native/VideosGallery.native.js +241 -0
- package/dist/services/apiService.js +2 -372
- package/dist/web/FileUpload.web.js +259 -0
- package/dist/web/Icons.web.js +39 -0
- package/dist/web/ImagesSkeleton.web.js +21 -0
- package/dist/web/MediaGallery.web.js +153 -0
- package/dist/web/MediaPopup.web.js +104 -0
- package/dist/web/MediaTab.web.js +186 -0
- package/dist/web/Pagination.web.js +141 -0
- package/dist/web/VideosGallery.web.js +153 -0
- package/package.json +4 -3
|
@@ -0,0 +1,259 @@
|
|
|
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 _Icons = require("./Icons.web");
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
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); }
|
|
12
|
+
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 }; })(); }
|
|
13
|
+
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); }
|
|
14
|
+
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); }
|
|
15
|
+
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); }); }; }
|
|
16
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
17
|
+
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."); }
|
|
18
|
+
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; } }
|
|
19
|
+
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; }
|
|
20
|
+
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; } }
|
|
21
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } // Helper: compress image on the client before upload
|
|
22
|
+
// - Downscale to fit within maxWidth/maxHeight.
|
|
23
|
+
// - Convert raster images (JPEG/PNG, etc.) to WebP for better compression.
|
|
24
|
+
// - Skip SVG (vector) to avoid degradation.
|
|
25
|
+
var compressImage = function compressImage(file) {
|
|
26
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
27
|
+
_ref$maxWidth = _ref.maxWidth,
|
|
28
|
+
maxWidth = _ref$maxWidth === void 0 ? 1600 : _ref$maxWidth,
|
|
29
|
+
_ref$maxHeight = _ref.maxHeight,
|
|
30
|
+
maxHeight = _ref$maxHeight === void 0 ? 1600 : _ref$maxHeight,
|
|
31
|
+
_ref$quality = _ref.quality,
|
|
32
|
+
quality = _ref$quality === void 0 ? 1 : _ref$quality,
|
|
33
|
+
_ref$convertToWebp = _ref.convertToWebp,
|
|
34
|
+
convertToWebp = _ref$convertToWebp === void 0 ? true : _ref$convertToWebp;
|
|
35
|
+
return new Promise(function (resolve) {
|
|
36
|
+
// Non-image or SVG: skip compression to avoid losing vector quality
|
|
37
|
+
if (!file.type.startsWith('image/') || file.type === 'image/svg+xml') {
|
|
38
|
+
resolve(file);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
var img = new Image();
|
|
42
|
+
img.onload = function () {
|
|
43
|
+
var width = img.width,
|
|
44
|
+
height = img.height;
|
|
45
|
+
|
|
46
|
+
// If the image is already small, keep it as-is
|
|
47
|
+
if (width <= maxWidth && height <= maxHeight) {
|
|
48
|
+
resolve(file);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
var scale = Math.min(maxWidth / width, maxHeight / height);
|
|
52
|
+
var targetWidth = Math.round(width * scale);
|
|
53
|
+
var targetHeight = Math.round(height * scale);
|
|
54
|
+
var canvas = document.createElement('canvas');
|
|
55
|
+
canvas.width = targetWidth;
|
|
56
|
+
canvas.height = targetHeight;
|
|
57
|
+
var ctx = canvas.getContext('2d');
|
|
58
|
+
if (!ctx) {
|
|
59
|
+
resolve(file);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
ctx.drawImage(img, 0, 0, targetWidth, targetHeight);
|
|
63
|
+
|
|
64
|
+
// Prefer WebP for raster images to reduce size (where supported)
|
|
65
|
+
// Keep original type for GIF to avoid breaking animation.
|
|
66
|
+
var isRaster = file.type === 'image/jpeg' || file.type === 'image/jpg' || file.type === 'image/png' || file.type === 'image/webp' || file.type === 'image/heic' || file.type === 'image/heif';
|
|
67
|
+
var targetType = convertToWebp && isRaster && file.type !== 'image/gif' ? 'image/webp' : file.type;
|
|
68
|
+
canvas.toBlob(function (blob) {
|
|
69
|
+
if (!blob) {
|
|
70
|
+
resolve(file);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// If we converted to WebP, normalize extension in the file name
|
|
75
|
+
var newName = file.name;
|
|
76
|
+
if (targetType === 'image/webp') {
|
|
77
|
+
var dotIndex = file.name.lastIndexOf('.');
|
|
78
|
+
newName = dotIndex > 0 ? "".concat(file.name.slice(0, dotIndex), ".webp") : "".concat(file.name, ".webp");
|
|
79
|
+
}
|
|
80
|
+
var compressedFile = new File([blob], newName, {
|
|
81
|
+
type: targetType,
|
|
82
|
+
lastModified: Date.now()
|
|
83
|
+
});
|
|
84
|
+
resolve(compressedFile);
|
|
85
|
+
}, targetType, quality);
|
|
86
|
+
};
|
|
87
|
+
img.onerror = function () {
|
|
88
|
+
resolve(file);
|
|
89
|
+
};
|
|
90
|
+
var reader = new FileReader();
|
|
91
|
+
reader.onload = function (event) {
|
|
92
|
+
var _event$target;
|
|
93
|
+
img.src = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.result;
|
|
94
|
+
};
|
|
95
|
+
reader.onerror = function () {
|
|
96
|
+
return resolve(file);
|
|
97
|
+
};
|
|
98
|
+
reader.readAsDataURL(file);
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
var FileUpload = function FileUpload(_ref2) {
|
|
102
|
+
var loadMedia = _ref2.loadMedia,
|
|
103
|
+
accept = _ref2.accept,
|
|
104
|
+
title = _ref2.title,
|
|
105
|
+
apiService = _ref2.apiService,
|
|
106
|
+
onUploadStart = _ref2.onUploadStart,
|
|
107
|
+
onUploadComplete = _ref2.onUploadComplete,
|
|
108
|
+
onUploadError = _ref2.onUploadError,
|
|
109
|
+
className = _ref2.className,
|
|
110
|
+
buttonClassName = _ref2.buttonClassName,
|
|
111
|
+
iconContainerClassName = _ref2.iconContainerClassName,
|
|
112
|
+
titleClassName = _ref2.titleClassName,
|
|
113
|
+
loadingClassName = _ref2.loadingClassName;
|
|
114
|
+
var _useState = (0, _react.useState)([]),
|
|
115
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
116
|
+
files = _useState2[0],
|
|
117
|
+
setFiles = _useState2[1];
|
|
118
|
+
var _useState3 = (0, _react.useState)(false),
|
|
119
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
120
|
+
isLoading = _useState4[0],
|
|
121
|
+
setISLoading = _useState4[1];
|
|
122
|
+
var _useState5 = (0, _react.useState)(0),
|
|
123
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
124
|
+
length = _useState6[0],
|
|
125
|
+
setLength = _useState6[1];
|
|
126
|
+
|
|
127
|
+
// Upload files
|
|
128
|
+
var uploadFiles = /*#__PURE__*/function () {
|
|
129
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(fileList) {
|
|
130
|
+
var filesToUpload, uploadedUrls, _t;
|
|
131
|
+
return _regenerator().w(function (_context) {
|
|
132
|
+
while (1) switch (_context.p = _context.n) {
|
|
133
|
+
case 0:
|
|
134
|
+
if (onUploadStart) {
|
|
135
|
+
onUploadStart(fileList);
|
|
136
|
+
}
|
|
137
|
+
setISLoading(true);
|
|
138
|
+
setLength(fileList.length);
|
|
139
|
+
_context.p = 1;
|
|
140
|
+
filesToUpload = fileList; // For image uploads, compress on the client before sending
|
|
141
|
+
if (!(accept && accept.includes('image'))) {
|
|
142
|
+
_context.n = 3;
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
_context.n = 2;
|
|
146
|
+
return Promise.all(fileList.map(function (file) {
|
|
147
|
+
return compressImage(file, {
|
|
148
|
+
maxWidth: 1600,
|
|
149
|
+
maxHeight: 1600,
|
|
150
|
+
quality: 0.95,
|
|
151
|
+
convertToWebp: true
|
|
152
|
+
});
|
|
153
|
+
}));
|
|
154
|
+
case 2:
|
|
155
|
+
filesToUpload = _context.v;
|
|
156
|
+
case 3:
|
|
157
|
+
_context.n = 4;
|
|
158
|
+
return apiService.uploadMedia(filesToUpload, apiService.authKey);
|
|
159
|
+
case 4:
|
|
160
|
+
uploadedUrls = _context.v;
|
|
161
|
+
if (onUploadComplete) {
|
|
162
|
+
onUploadComplete(uploadedUrls);
|
|
163
|
+
}
|
|
164
|
+
setLength(0);
|
|
165
|
+
if (loadMedia) {
|
|
166
|
+
loadMedia();
|
|
167
|
+
}
|
|
168
|
+
_context.n = 6;
|
|
169
|
+
break;
|
|
170
|
+
case 5:
|
|
171
|
+
_context.p = 5;
|
|
172
|
+
_t = _context.v;
|
|
173
|
+
console.error('Upload error:', _t);
|
|
174
|
+
if (onUploadError) {
|
|
175
|
+
onUploadError(_t);
|
|
176
|
+
}
|
|
177
|
+
case 6:
|
|
178
|
+
_context.p = 6;
|
|
179
|
+
setISLoading(false);
|
|
180
|
+
return _context.f(6);
|
|
181
|
+
case 7:
|
|
182
|
+
return _context.a(2);
|
|
183
|
+
}
|
|
184
|
+
}, _callee, null, [[1, 5, 6, 7]]);
|
|
185
|
+
}));
|
|
186
|
+
return function uploadFiles(_x) {
|
|
187
|
+
return _ref3.apply(this, arguments);
|
|
188
|
+
};
|
|
189
|
+
}();
|
|
190
|
+
|
|
191
|
+
// Default classes with customization support
|
|
192
|
+
var defaultContainerClass = 'min-w-40 h-40';
|
|
193
|
+
var defaultButtonClass = 'w-full h-full flex flex-col justify-center items-center text-sm border border-primary border-dashed rounded-lg hover:bg-gray-50 transition-colors';
|
|
194
|
+
var defaultIconContainerClass = 'p-[10px] bg-primary rounded-full';
|
|
195
|
+
var defaultTitleClass = 'mt-2';
|
|
196
|
+
var defaultLoadingClass = 'flex items-center justify-center h-40 bg-gray-200 rounded-lg shadow-md animate-pulse';
|
|
197
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
198
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
199
|
+
className: className || defaultContainerClass,
|
|
200
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
|
|
201
|
+
required: true,
|
|
202
|
+
id: "media_select_".concat(files === null || files === void 0 ? void 0 : files.length),
|
|
203
|
+
type: "file",
|
|
204
|
+
className: "hidden",
|
|
205
|
+
accept: accept,
|
|
206
|
+
placeholder: "",
|
|
207
|
+
onChange: (/*#__PURE__*/function () {
|
|
208
|
+
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(e) {
|
|
209
|
+
var all_files;
|
|
210
|
+
return _regenerator().w(function (_context2) {
|
|
211
|
+
while (1) switch (_context2.n) {
|
|
212
|
+
case 0:
|
|
213
|
+
e.stopPropagation();
|
|
214
|
+
all_files = Array.from(e.target.files || []);
|
|
215
|
+
if (!((all_files === null || all_files === void 0 ? void 0 : all_files.length) > 0)) {
|
|
216
|
+
_context2.n = 1;
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
_context2.n = 1;
|
|
220
|
+
return uploadFiles(all_files);
|
|
221
|
+
case 1:
|
|
222
|
+
// Reset input
|
|
223
|
+
e.target.value = '';
|
|
224
|
+
case 2:
|
|
225
|
+
return _context2.a(2);
|
|
226
|
+
}
|
|
227
|
+
}, _callee2);
|
|
228
|
+
}));
|
|
229
|
+
return function (_x2) {
|
|
230
|
+
return _ref4.apply(this, arguments);
|
|
231
|
+
};
|
|
232
|
+
}()),
|
|
233
|
+
multiple: true
|
|
234
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("button", {
|
|
235
|
+
type: "button",
|
|
236
|
+
className: buttonClassName || defaultButtonClass,
|
|
237
|
+
onClick: function onClick() {
|
|
238
|
+
return document.getElementById("media_select_".concat(files === null || files === void 0 ? void 0 : files.length)).click();
|
|
239
|
+
},
|
|
240
|
+
disabled: isLoading,
|
|
241
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
242
|
+
className: iconContainerClassName || defaultIconContainerClass,
|
|
243
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icons.CameraIcon, {})
|
|
244
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
245
|
+
className: titleClassName || defaultTitleClass,
|
|
246
|
+
children: title
|
|
247
|
+
})]
|
|
248
|
+
})]
|
|
249
|
+
}), isLoading && Array.from({
|
|
250
|
+
length: length
|
|
251
|
+
}).map(function (_, index) {
|
|
252
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
253
|
+
className: loadingClassName || defaultLoadingClass,
|
|
254
|
+
children: ["File Uploading... ", index + 1, "/", length]
|
|
255
|
+
}, index);
|
|
256
|
+
})]
|
|
257
|
+
});
|
|
258
|
+
};
|
|
259
|
+
var _default = exports.default = FileUpload;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.CloseIcon = exports.CameraIcon = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
var CloseIcon = exports.CloseIcon = function CloseIcon(_ref) {
|
|
11
|
+
var _ref$className = _ref.className,
|
|
12
|
+
className = _ref$className === void 0 ? 'w-8 h-8' : _ref$className;
|
|
13
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", {
|
|
14
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
15
|
+
fill: "none",
|
|
16
|
+
viewBox: "0 0 24 24",
|
|
17
|
+
strokeWidth: "1.5",
|
|
18
|
+
stroke: "currentColor",
|
|
19
|
+
className: className,
|
|
20
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
|
|
21
|
+
strokeLinecap: "round",
|
|
22
|
+
strokeLinejoin: "round",
|
|
23
|
+
d: "M6 18L18 6M6 6l12 12"
|
|
24
|
+
})
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
var CameraIcon = exports.CameraIcon = function CameraIcon() {
|
|
28
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", {
|
|
29
|
+
width: "22",
|
|
30
|
+
height: "18",
|
|
31
|
+
viewBox: "0 0 22 20",
|
|
32
|
+
fill: "none",
|
|
33
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
34
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
|
|
35
|
+
d: "M7.75033 0.166672L5.76783 2.33334H2.33366C1.14199 2.33334 0.166992 3.30834 0.166992 4.50001V17.5C0.166992 18.6917 1.14199 19.6667 2.33366 19.6667H19.667C20.8587 19.6667 21.8337 18.6917 21.8337 17.5V4.50001C21.8337 3.30834 20.8587 2.33334 19.667 2.33334H16.2328L14.2503 0.166672H7.75033ZM11.0003 16.4167C8.01033 16.4167 5.58366 13.99 5.58366 11C5.58366 8.01001 8.01033 5.58334 11.0003 5.58334C13.9903 5.58334 16.417 8.01001 16.417 11C16.417 13.99 13.9903 16.4167 11.0003 16.4167Z",
|
|
36
|
+
fill: "white"
|
|
37
|
+
})
|
|
38
|
+
});
|
|
39
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
var ImagesSkeleton = function ImagesSkeleton(_ref) {
|
|
11
|
+
var _ref$per_page = _ref.per_page,
|
|
12
|
+
per_page = _ref$per_page === void 0 ? 30 : _ref$per_page;
|
|
13
|
+
var gridItems = [];
|
|
14
|
+
for (var i = 0; i < per_page; i++) {
|
|
15
|
+
gridItems.push(/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
16
|
+
className: "w-full min-h-[160px] bg-[#3B3269] bg-opacity-[20%] rounded-card animate-pulse"
|
|
17
|
+
}, i));
|
|
18
|
+
}
|
|
19
|
+
return gridItems;
|
|
20
|
+
};
|
|
21
|
+
var _default = exports.default = ImagesSkeleton;
|
|
@@ -0,0 +1,153 @@
|
|
|
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 _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
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); }
|
|
15
|
+
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 }; })(); }
|
|
16
|
+
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); }
|
|
17
|
+
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); }
|
|
18
|
+
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); }); }; }
|
|
19
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
20
|
+
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."); }
|
|
21
|
+
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; } }
|
|
22
|
+
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; }
|
|
23
|
+
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; } }
|
|
24
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
25
|
+
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'];
|
|
26
|
+
var ImagesGallery = function ImagesGallery(_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
|
+
imageItemClassName = _ref.imageItemClassName,
|
|
34
|
+
paginationContainerClassName = _ref.paginationContainerClassName;
|
|
35
|
+
var _useState = (0, _react.useState)([]),
|
|
36
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
37
|
+
images = _useState2[0],
|
|
38
|
+
setImages = _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 images
|
|
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: IMAGE_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
|
+
// Response might be: { media: [...], count: ... } or { data: { media: [...], count: ... } } or directly [...]
|
|
82
|
+
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 || [];
|
|
83
|
+
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;
|
|
84
|
+
setImages(Array.isArray(mediaData) ? mediaData : []);
|
|
85
|
+
setTotalCount(count);
|
|
86
|
+
setCurrentPage(page_number);
|
|
87
|
+
_context.n = 4;
|
|
88
|
+
break;
|
|
89
|
+
case 3:
|
|
90
|
+
_context.p = 3;
|
|
91
|
+
_t = _context.v;
|
|
92
|
+
console.error('Error loading media:', _t);
|
|
93
|
+
if (onError) {
|
|
94
|
+
onError(_t);
|
|
95
|
+
}
|
|
96
|
+
case 4:
|
|
97
|
+
return _context.a(2);
|
|
98
|
+
}
|
|
99
|
+
}, _callee, null, [[1, 3]]);
|
|
100
|
+
}));
|
|
101
|
+
return function loadMedia() {
|
|
102
|
+
return _ref2.apply(this, arguments);
|
|
103
|
+
};
|
|
104
|
+
}();
|
|
105
|
+
var handleImageClick = function handleImageClick(image) {
|
|
106
|
+
if (update_data) {
|
|
107
|
+
update_data(image.url || image);
|
|
108
|
+
}
|
|
109
|
+
if (closePopup) {
|
|
110
|
+
closePopup();
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
// Default classes with customization support
|
|
115
|
+
var defaultContainerClass = 'h-full flex flex-col justify-between';
|
|
116
|
+
var defaultGridClass = 'grid grid-cols-[repeat(auto-fill,minmax(calc(160px),1fr))] gap-5';
|
|
117
|
+
var defaultImageItemClass = 'cursor-pointer w-full h-40 object-contain p-3 overflow-hidden bg-white rounded-md shadow-md hover:shadow-lg transition-shadow';
|
|
118
|
+
var defaultPaginationContainerClass = 'mb-4 bg-gray-100/90 p-4 sticky bottom-0';
|
|
119
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
120
|
+
className: className || defaultContainerClass,
|
|
121
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
122
|
+
className: gridClassName || defaultGridClass,
|
|
123
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_FileUpload.default, {
|
|
124
|
+
loadMedia: loadMedia,
|
|
125
|
+
accept: "image/*",
|
|
126
|
+
title: "Add Image",
|
|
127
|
+
apiService: apiService,
|
|
128
|
+
onUploadError: onError
|
|
129
|
+
}), isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ImagesSkeleton.default, {}) : images === null || images === void 0 ? void 0 : images.map(function (image, index) {
|
|
130
|
+
var imageUrl = typeof image === 'string' ? image : image.url;
|
|
131
|
+
var imageKey = image.id || image.url || index;
|
|
132
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
|
|
133
|
+
onClick: function onClick() {
|
|
134
|
+
return handleImageClick(image);
|
|
135
|
+
},
|
|
136
|
+
className: imageItemClassName || defaultImageItemClass,
|
|
137
|
+
src: imageUrl,
|
|
138
|
+
alt: image.name || 'Media item'
|
|
139
|
+
}, imageKey);
|
|
140
|
+
})]
|
|
141
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
142
|
+
className: paginationContainerClassName || defaultPaginationContainerClass,
|
|
143
|
+
children: total_count > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pagination.default, {
|
|
144
|
+
nextPage: function nextPage(value) {
|
|
145
|
+
return loadMedia(value);
|
|
146
|
+
},
|
|
147
|
+
pageCount: Math.ceil(total_count / 30),
|
|
148
|
+
current_page: currentPage
|
|
149
|
+
})
|
|
150
|
+
})]
|
|
151
|
+
});
|
|
152
|
+
};
|
|
153
|
+
var _default = exports.default = ImagesGallery;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactDom = require("react-dom");
|
|
9
|
+
var _MediaTab = _interopRequireDefault(require("../components/MediaTab"));
|
|
10
|
+
var _Icons = require("./Icons");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
var MediaPopup = function MediaPopup(_ref) {
|
|
14
|
+
var isOpen = _ref.isOpen,
|
|
15
|
+
onClose = _ref.onClose,
|
|
16
|
+
onSelect = _ref.onSelect,
|
|
17
|
+
currentData = _ref.currentData,
|
|
18
|
+
_ref$options = _ref.options,
|
|
19
|
+
options = _ref$options === void 0 ? ['image'] : _ref$options,
|
|
20
|
+
apiService = _ref.apiService,
|
|
21
|
+
onError = _ref.onError,
|
|
22
|
+
_ref$title = _ref.title,
|
|
23
|
+
title = _ref$title === void 0 ? 'Media Gallery' : _ref$title,
|
|
24
|
+
className = _ref.className,
|
|
25
|
+
overlayClassName = _ref.overlayClassName,
|
|
26
|
+
containerClassName = _ref.containerClassName,
|
|
27
|
+
headerClassName = _ref.headerClassName,
|
|
28
|
+
titleClassName = _ref.titleClassName,
|
|
29
|
+
closeButtonClassName = _ref.closeButtonClassName,
|
|
30
|
+
tabListClassName = _ref.tabListClassName,
|
|
31
|
+
tabButtonClassName = _ref.tabButtonClassName,
|
|
32
|
+
tabButtonActiveClassName = _ref.tabButtonActiveClassName,
|
|
33
|
+
tabButtonInactiveClassName = _ref.tabButtonInactiveClassName,
|
|
34
|
+
tabPanelClassName = _ref.tabPanelClassName,
|
|
35
|
+
gridClassName = _ref.gridClassName,
|
|
36
|
+
imageItemClassName = _ref.imageItemClassName,
|
|
37
|
+
videoItemClassName = _ref.videoItemClassName,
|
|
38
|
+
paginationContainerClassName = _ref.paginationContainerClassName;
|
|
39
|
+
if (!isOpen) return null;
|
|
40
|
+
var handleUpdate = function handleUpdate(data) {
|
|
41
|
+
if (onSelect) {
|
|
42
|
+
onSelect(data);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
var handleClose = function handleClose() {
|
|
46
|
+
if (onClose) {
|
|
47
|
+
onClose();
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
// Default classes with customization support
|
|
52
|
+
var defaultOverlayClass = 'fixed inset-0 w-screen h-screen bg-black opacity-10';
|
|
53
|
+
var defaultContainerClass = 'origin-top-right z-[9999] absolute inset-0 max-w-3xl mx-auto my-auto min-h-[200px] h-[600px] bg-white rounded shadow-inner cursor-auto p-6';
|
|
54
|
+
var defaultHeaderClass = 'flex items-center justify-between gap-4';
|
|
55
|
+
var defaultTitleClass = 'text-[#000] font-bold text-2xl';
|
|
56
|
+
var defaultCloseButtonClass = 'bg-transparent rounded-full hover:bg-gray-100 p-1 transition-colors';
|
|
57
|
+
return /*#__PURE__*/(0, _reactDom.createPortal)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
58
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
59
|
+
className: overlayClassName || defaultOverlayClass,
|
|
60
|
+
style: {
|
|
61
|
+
zIndex: 9998
|
|
62
|
+
},
|
|
63
|
+
onClick: handleClose
|
|
64
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
65
|
+
className: containerClassName || defaultContainerClass,
|
|
66
|
+
style: {
|
|
67
|
+
zIndex: 9999
|
|
68
|
+
},
|
|
69
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
70
|
+
className: headerClassName || defaultHeaderClass,
|
|
71
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
72
|
+
className: titleClassName || defaultTitleClass,
|
|
73
|
+
children: title
|
|
74
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
|
|
75
|
+
className: closeButtonClassName || defaultCloseButtonClass,
|
|
76
|
+
type: "button",
|
|
77
|
+
onClick: handleClose,
|
|
78
|
+
"aria-label": "Close",
|
|
79
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icons.CloseIcon, {})
|
|
80
|
+
})]
|
|
81
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_MediaTab.default, {
|
|
82
|
+
imagePopup: isOpen,
|
|
83
|
+
update_data: handleUpdate,
|
|
84
|
+
current_data: currentData,
|
|
85
|
+
closePopup: handleClose,
|
|
86
|
+
options: options,
|
|
87
|
+
apiService: apiService,
|
|
88
|
+
onError: onError
|
|
89
|
+
// Pass styling props through
|
|
90
|
+
,
|
|
91
|
+
tabListClassName: tabListClassName,
|
|
92
|
+
tabButtonClassName: tabButtonClassName,
|
|
93
|
+
tabButtonActiveClassName: tabButtonActiveClassName,
|
|
94
|
+
tabButtonInactiveClassName: tabButtonInactiveClassName,
|
|
95
|
+
tabPanelClassName: tabPanelClassName,
|
|
96
|
+
gridClassName: gridClassName,
|
|
97
|
+
imageItemClassName: imageItemClassName,
|
|
98
|
+
videoItemClassName: videoItemClassName,
|
|
99
|
+
paginationContainerClassName: paginationContainerClassName
|
|
100
|
+
})]
|
|
101
|
+
})]
|
|
102
|
+
}), document.body);
|
|
103
|
+
};
|
|
104
|
+
var _default = exports.default = MediaPopup;
|