@dfosco/storyboard-react 4.2.0-beta.27 → 4.2.0-beta.28
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/package.json +3 -3
- package/src/vite/data-plugin.js +9 -0
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dfosco/storyboard-react",
|
|
3
|
-
"version": "4.2.0-beta.
|
|
3
|
+
"version": "4.2.0-beta.28",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@base-ui/react": "^1.4.0",
|
|
7
|
-
"@dfosco/storyboard-core": "4.2.0-beta.
|
|
8
|
-
"@dfosco/tiny-canvas": "4.2.0-beta.
|
|
7
|
+
"@dfosco/storyboard-core": "4.2.0-beta.28",
|
|
8
|
+
"@dfosco/tiny-canvas": "4.2.0-beta.28",
|
|
9
9
|
"@neodrag/react": "^2.3.1",
|
|
10
10
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
11
11
|
"@radix-ui/react-visually-hidden": "^1.2.4",
|
package/src/vite/data-plugin.js
CHANGED
|
@@ -533,6 +533,15 @@ function deepMergeBuild(target, source) {
|
|
|
533
533
|
const tv = target[key]
|
|
534
534
|
if (sv && typeof sv === 'object' && !Array.isArray(sv) && tv && typeof tv === 'object' && !Array.isArray(tv)) {
|
|
535
535
|
result[key] = deepMergeBuild(tv, sv)
|
|
536
|
+
} else if (Array.isArray(sv) && Array.isArray(tv) && sv.length > 0 && tv.length > 0 && sv[0]?.id && tv[0]?.id) {
|
|
537
|
+
// Id-based array merge: override matching entries by id, keep the rest, append new ones
|
|
538
|
+
const targetMap = new Map(tv.map(item => [item.id, item]))
|
|
539
|
+
for (const item of sv) {
|
|
540
|
+
targetMap.set(item.id, item.id && targetMap.has(item.id)
|
|
541
|
+
? deepMergeBuild(targetMap.get(item.id), item)
|
|
542
|
+
: item)
|
|
543
|
+
}
|
|
544
|
+
result[key] = [...targetMap.values()]
|
|
536
545
|
} else {
|
|
537
546
|
result[key] = sv
|
|
538
547
|
}
|