@appcorp/stellar-solutions-modules 0.1.50 → 0.1.51
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.
|
@@ -74,6 +74,9 @@ var EnhancedDropzone = function (_a) {
|
|
|
74
74
|
// Track remote URLs removed by the user so they don't reappear when
|
|
75
75
|
// previews are rebuilt from the unchanged `initial` prop.
|
|
76
76
|
var removedRemoteRef = (0, react_1.useRef)(new Set());
|
|
77
|
+
// Track previous previews and remote map to avoid emitting unchanged values
|
|
78
|
+
var previewsRef = (0, react_1.useRef)([]);
|
|
79
|
+
var remotePreviewsRef = (0, react_1.useRef)({});
|
|
77
80
|
var dropzoneOptions = {
|
|
78
81
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
79
82
|
accept: (Array.isArray(accept) ? undefined : accept) || undefined,
|
|
@@ -137,8 +140,47 @@ var EnhancedDropzone = function (_a) {
|
|
|
137
140
|
next.push("");
|
|
138
141
|
}
|
|
139
142
|
});
|
|
140
|
-
|
|
141
|
-
|
|
143
|
+
// Avoid unnecessary updates: only set state / notify parent when previews
|
|
144
|
+
// or remoteMap actually changed (shallow equality check). This prevents
|
|
145
|
+
// a cycle when parent mirrors the previews back into `initial`.
|
|
146
|
+
var prev = previewsRef.current || [];
|
|
147
|
+
var arraysEqual = function (a, b) {
|
|
148
|
+
if (a === b)
|
|
149
|
+
return true;
|
|
150
|
+
if (!a || !b)
|
|
151
|
+
return false;
|
|
152
|
+
if (a.length !== b.length)
|
|
153
|
+
return false;
|
|
154
|
+
for (var i = 0; i < a.length; i++)
|
|
155
|
+
if (a[i] !== b[i])
|
|
156
|
+
return false;
|
|
157
|
+
return true;
|
|
158
|
+
};
|
|
159
|
+
var remoteKeysEqual = function (m1, m2) {
|
|
160
|
+
var k1 = Object.keys(m1 || {});
|
|
161
|
+
var k2 = Object.keys(m2 || {});
|
|
162
|
+
if (k1.length !== k2.length)
|
|
163
|
+
return false;
|
|
164
|
+
k1.sort();
|
|
165
|
+
k2.sort();
|
|
166
|
+
for (var i = 0; i < k1.length; i++)
|
|
167
|
+
if (k1[i] !== k2[i])
|
|
168
|
+
return false;
|
|
169
|
+
return true;
|
|
170
|
+
};
|
|
171
|
+
var previewsChanged = !arraysEqual(prev, next);
|
|
172
|
+
var remoteChanged = !remoteKeysEqual(remotePreviewsRef.current || {}, remoteMap);
|
|
173
|
+
if (previewsChanged) {
|
|
174
|
+
setPreviews(next);
|
|
175
|
+
previewsRef.current = next.slice();
|
|
176
|
+
}
|
|
177
|
+
if (remoteChanged) {
|
|
178
|
+
setRemotePreviews(remoteMap);
|
|
179
|
+
remotePreviewsRef.current = __assign({}, remoteMap);
|
|
180
|
+
}
|
|
181
|
+
if (previewsChanged) {
|
|
182
|
+
onPreviewsChange === null || onPreviewsChange === void 0 ? void 0 : onPreviewsChange(next);
|
|
183
|
+
}
|
|
142
184
|
// notify parent about the current rendered previews (object URLs and remote URLs)
|
|
143
185
|
onPreviewsChange === null || onPreviewsChange === void 0 ? void 0 : onPreviewsChange(next);
|
|
144
186
|
return function () {
|
|
@@ -168,10 +210,8 @@ var EnhancedDropzone = function (_a) {
|
|
|
168
210
|
return;
|
|
169
211
|
var isRemote = Boolean(remotePreviews[entry]);
|
|
170
212
|
if (isRemote) {
|
|
171
|
-
// notify parent
|
|
213
|
+
// notify parent and mark as removed so it won't reappear from `initial`
|
|
172
214
|
onRemoveUrl === null || onRemoveUrl === void 0 ? void 0 : onRemoveUrl(entry);
|
|
173
|
-
// record removal locally so the value isn't re-added from the `initial`
|
|
174
|
-
// prop on the next rebuild
|
|
175
215
|
removedRemoteRef.current.add(entry);
|
|
176
216
|
// remove only the specific preview at previewIndex
|
|
177
217
|
setPreviews(function (p) {
|
|
@@ -184,6 +224,9 @@ var EnhancedDropzone = function (_a) {
|
|
|
184
224
|
delete next[entry];
|
|
185
225
|
return next;
|
|
186
226
|
});
|
|
227
|
+
// inform parent of the immediate change
|
|
228
|
+
var updatedPreviews = previews.filter(function (_, i) { return i !== previewIndex; });
|
|
229
|
+
onPreviewsChange === null || onPreviewsChange === void 0 ? void 0 : onPreviewsChange(updatedPreviews);
|
|
187
230
|
return;
|
|
188
231
|
}
|
|
189
232
|
// local file - compute index relative to files array and remove
|
package/package.json
CHANGED