rita-workspace 0.5.22 → 0.5.24
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 +41 -3
- package/dist/index.mjs +41 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -431,7 +431,20 @@ function useWorkspaceLang() {
|
|
|
431
431
|
}
|
|
432
432
|
return { lang: context.lang, t: context.t };
|
|
433
433
|
}
|
|
434
|
-
var
|
|
434
|
+
var TAB_ID_KEY = "rita-workspace-tab-id";
|
|
435
|
+
var TAB_ID = (() => {
|
|
436
|
+
try {
|
|
437
|
+
const existing = sessionStorage.getItem(TAB_ID_KEY);
|
|
438
|
+
if (existing) return existing;
|
|
439
|
+
} catch {
|
|
440
|
+
}
|
|
441
|
+
const fresh = typeof crypto !== "undefined" && crypto.randomUUID ? crypto.randomUUID() : Math.random().toString(36).slice(2);
|
|
442
|
+
try {
|
|
443
|
+
sessionStorage.setItem(TAB_ID_KEY, fresh);
|
|
444
|
+
} catch {
|
|
445
|
+
}
|
|
446
|
+
return fresh;
|
|
447
|
+
})();
|
|
435
448
|
var TABS_KEY = "rita-workspace-tabs";
|
|
436
449
|
var TAB_CHANNEL = "rita-workspace-tabs";
|
|
437
450
|
function broadcastWorkspaceChange() {
|
|
@@ -464,16 +477,34 @@ function getTabsMap() {
|
|
|
464
477
|
return {};
|
|
465
478
|
}
|
|
466
479
|
}
|
|
480
|
+
var TAB_ENTRY_KEY = "rita-workspace-tab-entry";
|
|
467
481
|
function setTabDrawing(drawingId) {
|
|
468
482
|
const tabs = getTabsMap();
|
|
469
483
|
if (drawingId) {
|
|
470
484
|
const existing = tabs[TAB_ID];
|
|
485
|
+
let openedAt;
|
|
471
486
|
if (existing && existing.drawingId === drawingId) {
|
|
487
|
+
openedAt = existing.openedAt;
|
|
472
488
|
} else {
|
|
473
|
-
|
|
489
|
+
let sessionEntry = null;
|
|
490
|
+
try {
|
|
491
|
+
const raw = sessionStorage.getItem(TAB_ENTRY_KEY);
|
|
492
|
+
if (raw) sessionEntry = JSON.parse(raw);
|
|
493
|
+
} catch {
|
|
494
|
+
}
|
|
495
|
+
openedAt = sessionEntry && sessionEntry.drawingId === drawingId ? sessionEntry.openedAt : Date.now();
|
|
496
|
+
}
|
|
497
|
+
tabs[TAB_ID] = { drawingId, openedAt };
|
|
498
|
+
try {
|
|
499
|
+
sessionStorage.setItem(TAB_ENTRY_KEY, JSON.stringify(tabs[TAB_ID]));
|
|
500
|
+
} catch {
|
|
474
501
|
}
|
|
475
502
|
} else {
|
|
476
503
|
delete tabs[TAB_ID];
|
|
504
|
+
try {
|
|
505
|
+
sessionStorage.removeItem(TAB_ENTRY_KEY);
|
|
506
|
+
} catch {
|
|
507
|
+
}
|
|
477
508
|
}
|
|
478
509
|
const json = JSON.stringify(tabs);
|
|
479
510
|
localStorage.setItem(TABS_KEY, json);
|
|
@@ -717,7 +748,14 @@ function WorkspaceProvider({ children, lang = "en" }) {
|
|
|
717
748
|
const drawingIds = freshWorkspace?.drawingIds || workspace.drawingIds;
|
|
718
749
|
const wsDrawings = allDrawings.filter((d) => drawingIds.includes(d.id));
|
|
719
750
|
if (freshWorkspace) {
|
|
720
|
-
setWorkspace((prev) =>
|
|
751
|
+
setWorkspace((prev) => {
|
|
752
|
+
if (!prev) return freshWorkspace;
|
|
753
|
+
const idsEqual = prev.drawingIds.length === freshWorkspace.drawingIds.length && prev.drawingIds.every((id, i) => id === freshWorkspace.drawingIds[i]);
|
|
754
|
+
if (idsEqual && prev.name === freshWorkspace.name) {
|
|
755
|
+
return prev;
|
|
756
|
+
}
|
|
757
|
+
return { ...freshWorkspace, activeDrawingId: prev.activeDrawingId };
|
|
758
|
+
});
|
|
721
759
|
}
|
|
722
760
|
setDrawings(wsDrawings);
|
|
723
761
|
setFolders(allFolders);
|
package/dist/index.mjs
CHANGED
|
@@ -360,7 +360,20 @@ function useWorkspaceLang() {
|
|
|
360
360
|
}
|
|
361
361
|
return { lang: context.lang, t: context.t };
|
|
362
362
|
}
|
|
363
|
-
var
|
|
363
|
+
var TAB_ID_KEY = "rita-workspace-tab-id";
|
|
364
|
+
var TAB_ID = (() => {
|
|
365
|
+
try {
|
|
366
|
+
const existing = sessionStorage.getItem(TAB_ID_KEY);
|
|
367
|
+
if (existing) return existing;
|
|
368
|
+
} catch {
|
|
369
|
+
}
|
|
370
|
+
const fresh = typeof crypto !== "undefined" && crypto.randomUUID ? crypto.randomUUID() : Math.random().toString(36).slice(2);
|
|
371
|
+
try {
|
|
372
|
+
sessionStorage.setItem(TAB_ID_KEY, fresh);
|
|
373
|
+
} catch {
|
|
374
|
+
}
|
|
375
|
+
return fresh;
|
|
376
|
+
})();
|
|
364
377
|
var TABS_KEY = "rita-workspace-tabs";
|
|
365
378
|
var TAB_CHANNEL = "rita-workspace-tabs";
|
|
366
379
|
function broadcastWorkspaceChange() {
|
|
@@ -393,16 +406,34 @@ function getTabsMap() {
|
|
|
393
406
|
return {};
|
|
394
407
|
}
|
|
395
408
|
}
|
|
409
|
+
var TAB_ENTRY_KEY = "rita-workspace-tab-entry";
|
|
396
410
|
function setTabDrawing(drawingId) {
|
|
397
411
|
const tabs = getTabsMap();
|
|
398
412
|
if (drawingId) {
|
|
399
413
|
const existing = tabs[TAB_ID];
|
|
414
|
+
let openedAt;
|
|
400
415
|
if (existing && existing.drawingId === drawingId) {
|
|
416
|
+
openedAt = existing.openedAt;
|
|
401
417
|
} else {
|
|
402
|
-
|
|
418
|
+
let sessionEntry = null;
|
|
419
|
+
try {
|
|
420
|
+
const raw = sessionStorage.getItem(TAB_ENTRY_KEY);
|
|
421
|
+
if (raw) sessionEntry = JSON.parse(raw);
|
|
422
|
+
} catch {
|
|
423
|
+
}
|
|
424
|
+
openedAt = sessionEntry && sessionEntry.drawingId === drawingId ? sessionEntry.openedAt : Date.now();
|
|
425
|
+
}
|
|
426
|
+
tabs[TAB_ID] = { drawingId, openedAt };
|
|
427
|
+
try {
|
|
428
|
+
sessionStorage.setItem(TAB_ENTRY_KEY, JSON.stringify(tabs[TAB_ID]));
|
|
429
|
+
} catch {
|
|
403
430
|
}
|
|
404
431
|
} else {
|
|
405
432
|
delete tabs[TAB_ID];
|
|
433
|
+
try {
|
|
434
|
+
sessionStorage.removeItem(TAB_ENTRY_KEY);
|
|
435
|
+
} catch {
|
|
436
|
+
}
|
|
406
437
|
}
|
|
407
438
|
const json = JSON.stringify(tabs);
|
|
408
439
|
localStorage.setItem(TABS_KEY, json);
|
|
@@ -646,7 +677,14 @@ function WorkspaceProvider({ children, lang = "en" }) {
|
|
|
646
677
|
const drawingIds = freshWorkspace?.drawingIds || workspace.drawingIds;
|
|
647
678
|
const wsDrawings = allDrawings.filter((d) => drawingIds.includes(d.id));
|
|
648
679
|
if (freshWorkspace) {
|
|
649
|
-
setWorkspace((prev) =>
|
|
680
|
+
setWorkspace((prev) => {
|
|
681
|
+
if (!prev) return freshWorkspace;
|
|
682
|
+
const idsEqual = prev.drawingIds.length === freshWorkspace.drawingIds.length && prev.drawingIds.every((id, i) => id === freshWorkspace.drawingIds[i]);
|
|
683
|
+
if (idsEqual && prev.name === freshWorkspace.name) {
|
|
684
|
+
return prev;
|
|
685
|
+
}
|
|
686
|
+
return { ...freshWorkspace, activeDrawingId: prev.activeDrawingId };
|
|
687
|
+
});
|
|
650
688
|
}
|
|
651
689
|
setDrawings(wsDrawings);
|
|
652
690
|
setFolders(allFolders);
|