@appcorp/stellar-solutions-modules 0.1.52 → 0.1.53
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.
|
@@ -61,15 +61,14 @@ var utils_1 = require("../../lib/utils");
|
|
|
61
61
|
var carousel_1 = require("./carousel");
|
|
62
62
|
var button_1 = require("./button");
|
|
63
63
|
var lucide_react_1 = require("lucide-react");
|
|
64
|
-
var dropzone_1 = require("./shadcn-io/dropzone");
|
|
65
64
|
var EnhancedDropzone = function (_a) {
|
|
66
65
|
var id = _a.id, label = _a.label, info = _a.info, error = _a.error, accept = _a.accept, _b = _a.maxFiles, maxFiles = _b === void 0 ? 10 : _b, maxSize = _a.maxSize, minSize = _a.minSize, disabled = _a.disabled, _c = _a.value, value = _c === void 0 ? [] : _c, onChange = _a.onChange, onRemoveRemote = _a.onRemoveRemote, className = _a.className;
|
|
67
66
|
// Local files selected by user
|
|
68
67
|
var _d = (0, react_1.useState)([]), localFiles = _d[0], setLocalFiles = _d[1];
|
|
69
68
|
// Track object URLs created for local files
|
|
70
69
|
var localPreviewsRef = (0, react_1.useRef)(new Map());
|
|
71
|
-
// Create object URLs for local files
|
|
72
|
-
(0, react_1.
|
|
70
|
+
// Create object URLs for local files synchronously to avoid loading state
|
|
71
|
+
var createObjectURLs = (0, react_1.useCallback)(function () {
|
|
73
72
|
var map = localPreviewsRef.current;
|
|
74
73
|
// Create URLs for new files
|
|
75
74
|
localFiles.forEach(function (file) {
|
|
@@ -92,14 +91,19 @@ var EnhancedDropzone = function (_a) {
|
|
|
92
91
|
map.delete(file);
|
|
93
92
|
}
|
|
94
93
|
});
|
|
95
|
-
|
|
94
|
+
}, [localFiles]);
|
|
95
|
+
// Run synchronously on every render to avoid "loading" flash
|
|
96
|
+
createObjectURLs();
|
|
97
|
+
// Cleanup on unmount
|
|
98
|
+
(0, react_1.useEffect)(function () {
|
|
99
|
+
var map = localPreviewsRef.current;
|
|
96
100
|
return function () {
|
|
97
101
|
Array.from(map.values()).forEach(function (url) {
|
|
98
102
|
URL.revokeObjectURL(url);
|
|
99
103
|
});
|
|
100
104
|
map.clear();
|
|
101
105
|
};
|
|
102
|
-
}, [
|
|
106
|
+
}, []);
|
|
103
107
|
var dropzoneOptions = {
|
|
104
108
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
105
109
|
accept: (Array.isArray(accept) ? undefined : accept) || undefined,
|
|
@@ -137,9 +141,9 @@ var EnhancedDropzone = function (_a) {
|
|
|
137
141
|
}); }), true);
|
|
138
142
|
return (react_1.default.createElement("div", { className: (0, utils_1.cn)("w-full", className) },
|
|
139
143
|
label && (react_1.default.createElement("label", { className: "mb-2 block text-sm font-medium" }, label)),
|
|
140
|
-
react_1.default.createElement("div", __assign({}, getRootProps(), { className: (0, utils_1.cn)("relative w-full rounded-md border border-dashed p-6 text-center", isDragActive && "ring-2 ring-ring ring-offset-2", disabled && "opacity-60 pointer-events-none") }),
|
|
144
|
+
react_1.default.createElement("div", __assign({}, getRootProps(), { className: (0, utils_1.cn)("relative w-full rounded-md border border-dashed p-6 text-center min-h-[280px] flex items-center justify-center", isDragActive && "ring-2 ring-ring ring-offset-2", disabled && "opacity-60 pointer-events-none") }),
|
|
141
145
|
react_1.default.createElement("input", __assign({}, getInputProps(), { id: id })),
|
|
142
|
-
allPreviews.length > 0 ? (react_1.default.createElement("div", { className: "flex flex-col items-center" },
|
|
146
|
+
allPreviews.length > 0 ? (react_1.default.createElement("div", { className: "flex flex-col items-center w-full" },
|
|
143
147
|
react_1.default.createElement("div", { className: "relative w-full max-w-md" },
|
|
144
148
|
react_1.default.createElement(carousel_1.Carousel, { className: "w-full" },
|
|
145
149
|
react_1.default.createElement(carousel_1.CarouselPrevious, { type: "button", onClick: function (e) { return e.stopPropagation(); }, onPointerDown: function (e) { return e.stopPropagation(); }, onMouseDown: function (e) { return e.stopPropagation(); } }),
|
|
@@ -163,7 +167,21 @@ var EnhancedDropzone = function (_a) {
|
|
|
163
167
|
" image",
|
|
164
168
|
allPreviews.length !== 1 ? "s" : "",
|
|
165
169
|
" ",
|
|
166
|
-
"selected"))) : (react_1.default.createElement(
|
|
170
|
+
"selected"))) : (react_1.default.createElement("div", { className: "flex flex-col items-center justify-center gap-2" },
|
|
171
|
+
react_1.default.createElement("div", { className: "flex h-12 w-12 items-center justify-center rounded-lg bg-muted text-muted-foreground" },
|
|
172
|
+
react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "lucide lucide-image" },
|
|
173
|
+
react_1.default.createElement("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2" }),
|
|
174
|
+
react_1.default.createElement("circle", { cx: "9", cy: "9", r: "2" }),
|
|
175
|
+
react_1.default.createElement("path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21" }))),
|
|
176
|
+
react_1.default.createElement("div", { className: "space-y-1 text-center" },
|
|
177
|
+
react_1.default.createElement("p", { className: "font-medium text-sm" },
|
|
178
|
+
"Upload ",
|
|
179
|
+
maxFiles === 1 ? "an image" : "images"),
|
|
180
|
+
react_1.default.createElement("p", { className: "text-muted-foreground text-xs" }, "Drag and drop or click to browse"),
|
|
181
|
+
maxFiles > 1 && (react_1.default.createElement("p", { className: "text-muted-foreground text-xs" },
|
|
182
|
+
"Up to ",
|
|
183
|
+
maxFiles,
|
|
184
|
+
" files")))))),
|
|
167
185
|
(error || info) && (react_1.default.createElement("div", { className: "mt-2" }, error ? (react_1.default.createElement("p", { className: "text-xs text-destructive" }, error)) : info ? (react_1.default.createElement("p", { className: "text-xs text-blue-600 dark:text-blue-400" }, info)) : null))));
|
|
168
186
|
};
|
|
169
187
|
exports.EnhancedDropzone = EnhancedDropzone;
|
package/package.json
CHANGED