rita-workspace 0.5.12 → 0.5.13
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/index.js +40 -17
- package/dist/index.mjs +40 -17
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -517,8 +517,11 @@ function WorkspaceProvider({ children, lang = "en" }) {
|
|
|
517
517
|
const id = activeDrawingIdRef.current;
|
|
518
518
|
if (id) {
|
|
519
519
|
getDrawing(id).then((fresh) => {
|
|
520
|
-
if (fresh && activeDrawingIdRef.current === id) {
|
|
521
|
-
setActiveDrawing2(
|
|
520
|
+
if (fresh && activeDrawingIdRef.current === id && !prevConflictRef.current) {
|
|
521
|
+
setActiveDrawing2((prev) => {
|
|
522
|
+
if (!prev || prev.id !== id) return prev;
|
|
523
|
+
return { ...prev, name: fresh.name, folderId: fresh.folderId };
|
|
524
|
+
});
|
|
522
525
|
}
|
|
523
526
|
});
|
|
524
527
|
}
|
|
@@ -664,10 +667,12 @@ function WorkspaceProvider({ children, lang = "en" }) {
|
|
|
664
667
|
const refreshDrawings = (0, import_react.useCallback)(async () => {
|
|
665
668
|
if (!workspace) return;
|
|
666
669
|
try {
|
|
667
|
-
const allDrawings = await
|
|
670
|
+
const [allDrawings, allFolders] = await Promise.all([
|
|
671
|
+
getAllDrawings(),
|
|
672
|
+
getAllFolders()
|
|
673
|
+
]);
|
|
668
674
|
const wsDrawings = allDrawings.filter((d) => workspace.drawingIds.includes(d.id));
|
|
669
675
|
setDrawings(wsDrawings);
|
|
670
|
-
const allFolders = await getAllFolders();
|
|
671
676
|
setFolders(allFolders);
|
|
672
677
|
} catch (err) {
|
|
673
678
|
}
|
|
@@ -1547,10 +1552,11 @@ var DrawingsDialog = ({
|
|
|
1547
1552
|
const { rootDrawings, drawingsByFolder, filteredFolders } = (0, import_react5.useMemo)(() => {
|
|
1548
1553
|
const query = searchQuery.toLowerCase().trim();
|
|
1549
1554
|
const filtered = query ? drawings.filter((d) => d.name.toLowerCase().includes(query)) : drawings;
|
|
1550
|
-
const
|
|
1555
|
+
const sorted = [...filtered].sort((a, b) => a.createdAt - b.createdAt);
|
|
1556
|
+
const root = sorted.filter((d) => !d.folderId);
|
|
1551
1557
|
const byFolder = {};
|
|
1552
1558
|
for (const folder of folders) {
|
|
1553
|
-
byFolder[folder.id] =
|
|
1559
|
+
byFolder[folder.id] = sorted.filter((d) => d.folderId === folder.id);
|
|
1554
1560
|
}
|
|
1555
1561
|
const foldersFiltered = query ? folders.filter((f) => f.name.toLowerCase().includes(query) || (byFolder[f.id] || []).length > 0) : folders;
|
|
1556
1562
|
return { rootDrawings: root, drawingsByFolder: byFolder, filteredFolders: foldersFiltered };
|
|
@@ -1592,16 +1598,6 @@ var DrawingsDialog = ({
|
|
|
1592
1598
|
const renderDrawingRow = (drawing) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1593
1599
|
"div",
|
|
1594
1600
|
{
|
|
1595
|
-
draggable: !editingId && !confirmDeleteId,
|
|
1596
|
-
onDragStart: (e) => {
|
|
1597
|
-
setDraggingDrawingId(drawing.id);
|
|
1598
|
-
e.dataTransfer.effectAllowed = "move";
|
|
1599
|
-
e.dataTransfer.setData("text/plain", drawing.id);
|
|
1600
|
-
},
|
|
1601
|
-
onDragEnd: () => {
|
|
1602
|
-
setDraggingDrawingId(null);
|
|
1603
|
-
setDropTargetFolderId(null);
|
|
1604
|
-
},
|
|
1605
1601
|
onMouseEnter: () => setHoveredId(drawing.id),
|
|
1606
1602
|
onMouseLeave: () => setHoveredId(null),
|
|
1607
1603
|
onClick: (e) => {
|
|
@@ -1616,13 +1612,40 @@ var DrawingsDialog = ({
|
|
|
1616
1612
|
gap: "12px",
|
|
1617
1613
|
borderRadius: "8px",
|
|
1618
1614
|
marginBottom: "4px",
|
|
1619
|
-
cursor:
|
|
1615
|
+
cursor: "pointer",
|
|
1620
1616
|
backgroundColor: activeDrawing?.id === drawing.id ? "var(--color-primary-light, rgba(108, 99, 255, 0.1))" : selectedId === drawing.id ? "var(--color-primary-light, rgba(108, 99, 255, 0.06))" : "transparent",
|
|
1621
1617
|
border: selectedId === drawing.id && activeDrawing?.id !== drawing.id ? "1px solid var(--color-primary, #6c63ff)" : "1px solid transparent",
|
|
1622
1618
|
transition: "background-color 0.15s, border-color 0.15s",
|
|
1623
1619
|
opacity: draggingDrawingId === drawing.id ? 0.4 : switchingId && switchingId !== drawing.id ? 0.5 : 1
|
|
1624
1620
|
},
|
|
1625
1621
|
children: [
|
|
1622
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1623
|
+
"span",
|
|
1624
|
+
{
|
|
1625
|
+
draggable: !editingId && !confirmDeleteId,
|
|
1626
|
+
onDragStart: (e) => {
|
|
1627
|
+
setDraggingDrawingId(drawing.id);
|
|
1628
|
+
e.dataTransfer.effectAllowed = "move";
|
|
1629
|
+
e.dataTransfer.setData("text/plain", drawing.id);
|
|
1630
|
+
},
|
|
1631
|
+
onDragEnd: () => {
|
|
1632
|
+
setDraggingDrawingId(null);
|
|
1633
|
+
setDropTargetFolderId(null);
|
|
1634
|
+
},
|
|
1635
|
+
onClick: (e) => e.stopPropagation(),
|
|
1636
|
+
style: {
|
|
1637
|
+
cursor: "grab",
|
|
1638
|
+
fontSize: "14px",
|
|
1639
|
+
color: "var(--text-secondary-color, #aaa)",
|
|
1640
|
+
flexShrink: 0,
|
|
1641
|
+
userSelect: "none",
|
|
1642
|
+
padding: "4px 2px",
|
|
1643
|
+
visibility: hoveredId === drawing.id || selectedId === drawing.id || draggingDrawingId === drawing.id ? "visible" : "hidden"
|
|
1644
|
+
},
|
|
1645
|
+
title: t.moveToFolder,
|
|
1646
|
+
children: "\u283F"
|
|
1647
|
+
}
|
|
1648
|
+
),
|
|
1626
1649
|
renderThumbnail && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: {
|
|
1627
1650
|
width: "64px",
|
|
1628
1651
|
height: "48px",
|
package/dist/index.mjs
CHANGED
|
@@ -449,8 +449,11 @@ function WorkspaceProvider({ children, lang = "en" }) {
|
|
|
449
449
|
const id = activeDrawingIdRef.current;
|
|
450
450
|
if (id) {
|
|
451
451
|
getDrawing(id).then((fresh) => {
|
|
452
|
-
if (fresh && activeDrawingIdRef.current === id) {
|
|
453
|
-
setActiveDrawing2(
|
|
452
|
+
if (fresh && activeDrawingIdRef.current === id && !prevConflictRef.current) {
|
|
453
|
+
setActiveDrawing2((prev) => {
|
|
454
|
+
if (!prev || prev.id !== id) return prev;
|
|
455
|
+
return { ...prev, name: fresh.name, folderId: fresh.folderId };
|
|
456
|
+
});
|
|
454
457
|
}
|
|
455
458
|
});
|
|
456
459
|
}
|
|
@@ -596,10 +599,12 @@ function WorkspaceProvider({ children, lang = "en" }) {
|
|
|
596
599
|
const refreshDrawings = useCallback(async () => {
|
|
597
600
|
if (!workspace) return;
|
|
598
601
|
try {
|
|
599
|
-
const allDrawings = await
|
|
602
|
+
const [allDrawings, allFolders] = await Promise.all([
|
|
603
|
+
getAllDrawings(),
|
|
604
|
+
getAllFolders()
|
|
605
|
+
]);
|
|
600
606
|
const wsDrawings = allDrawings.filter((d) => workspace.drawingIds.includes(d.id));
|
|
601
607
|
setDrawings(wsDrawings);
|
|
602
|
-
const allFolders = await getAllFolders();
|
|
603
608
|
setFolders(allFolders);
|
|
604
609
|
} catch (err) {
|
|
605
610
|
}
|
|
@@ -1479,10 +1484,11 @@ var DrawingsDialog = ({
|
|
|
1479
1484
|
const { rootDrawings, drawingsByFolder, filteredFolders } = useMemo(() => {
|
|
1480
1485
|
const query = searchQuery.toLowerCase().trim();
|
|
1481
1486
|
const filtered = query ? drawings.filter((d) => d.name.toLowerCase().includes(query)) : drawings;
|
|
1482
|
-
const
|
|
1487
|
+
const sorted = [...filtered].sort((a, b) => a.createdAt - b.createdAt);
|
|
1488
|
+
const root = sorted.filter((d) => !d.folderId);
|
|
1483
1489
|
const byFolder = {};
|
|
1484
1490
|
for (const folder of folders) {
|
|
1485
|
-
byFolder[folder.id] =
|
|
1491
|
+
byFolder[folder.id] = sorted.filter((d) => d.folderId === folder.id);
|
|
1486
1492
|
}
|
|
1487
1493
|
const foldersFiltered = query ? folders.filter((f) => f.name.toLowerCase().includes(query) || (byFolder[f.id] || []).length > 0) : folders;
|
|
1488
1494
|
return { rootDrawings: root, drawingsByFolder: byFolder, filteredFolders: foldersFiltered };
|
|
@@ -1524,16 +1530,6 @@ var DrawingsDialog = ({
|
|
|
1524
1530
|
const renderDrawingRow = (drawing) => /* @__PURE__ */ jsxs4(
|
|
1525
1531
|
"div",
|
|
1526
1532
|
{
|
|
1527
|
-
draggable: !editingId && !confirmDeleteId,
|
|
1528
|
-
onDragStart: (e) => {
|
|
1529
|
-
setDraggingDrawingId(drawing.id);
|
|
1530
|
-
e.dataTransfer.effectAllowed = "move";
|
|
1531
|
-
e.dataTransfer.setData("text/plain", drawing.id);
|
|
1532
|
-
},
|
|
1533
|
-
onDragEnd: () => {
|
|
1534
|
-
setDraggingDrawingId(null);
|
|
1535
|
-
setDropTargetFolderId(null);
|
|
1536
|
-
},
|
|
1537
1533
|
onMouseEnter: () => setHoveredId(drawing.id),
|
|
1538
1534
|
onMouseLeave: () => setHoveredId(null),
|
|
1539
1535
|
onClick: (e) => {
|
|
@@ -1548,13 +1544,40 @@ var DrawingsDialog = ({
|
|
|
1548
1544
|
gap: "12px",
|
|
1549
1545
|
borderRadius: "8px",
|
|
1550
1546
|
marginBottom: "4px",
|
|
1551
|
-
cursor:
|
|
1547
|
+
cursor: "pointer",
|
|
1552
1548
|
backgroundColor: activeDrawing?.id === drawing.id ? "var(--color-primary-light, rgba(108, 99, 255, 0.1))" : selectedId === drawing.id ? "var(--color-primary-light, rgba(108, 99, 255, 0.06))" : "transparent",
|
|
1553
1549
|
border: selectedId === drawing.id && activeDrawing?.id !== drawing.id ? "1px solid var(--color-primary, #6c63ff)" : "1px solid transparent",
|
|
1554
1550
|
transition: "background-color 0.15s, border-color 0.15s",
|
|
1555
1551
|
opacity: draggingDrawingId === drawing.id ? 0.4 : switchingId && switchingId !== drawing.id ? 0.5 : 1
|
|
1556
1552
|
},
|
|
1557
1553
|
children: [
|
|
1554
|
+
/* @__PURE__ */ jsx6(
|
|
1555
|
+
"span",
|
|
1556
|
+
{
|
|
1557
|
+
draggable: !editingId && !confirmDeleteId,
|
|
1558
|
+
onDragStart: (e) => {
|
|
1559
|
+
setDraggingDrawingId(drawing.id);
|
|
1560
|
+
e.dataTransfer.effectAllowed = "move";
|
|
1561
|
+
e.dataTransfer.setData("text/plain", drawing.id);
|
|
1562
|
+
},
|
|
1563
|
+
onDragEnd: () => {
|
|
1564
|
+
setDraggingDrawingId(null);
|
|
1565
|
+
setDropTargetFolderId(null);
|
|
1566
|
+
},
|
|
1567
|
+
onClick: (e) => e.stopPropagation(),
|
|
1568
|
+
style: {
|
|
1569
|
+
cursor: "grab",
|
|
1570
|
+
fontSize: "14px",
|
|
1571
|
+
color: "var(--text-secondary-color, #aaa)",
|
|
1572
|
+
flexShrink: 0,
|
|
1573
|
+
userSelect: "none",
|
|
1574
|
+
padding: "4px 2px",
|
|
1575
|
+
visibility: hoveredId === drawing.id || selectedId === drawing.id || draggingDrawingId === drawing.id ? "visible" : "hidden"
|
|
1576
|
+
},
|
|
1577
|
+
title: t.moveToFolder,
|
|
1578
|
+
children: "\u283F"
|
|
1579
|
+
}
|
|
1580
|
+
),
|
|
1558
1581
|
renderThumbnail && /* @__PURE__ */ jsx6("div", { style: {
|
|
1559
1582
|
width: "64px",
|
|
1560
1583
|
height: "48px",
|