@ai-matrx/canvas 0.5.3 → 0.6.0
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/CHANGELOG.md +15 -0
- package/README.md +6 -0
- package/dist/index.cjs +45 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +45 -9
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +218 -47
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/react.js +218 -47
- package/dist/react.js.map +1 -1
- package/dist/styles.css +51 -30
- package/dist/{toggleKind-BD78LnMB.d.cts → toggleKind-DhDmWExm.d.cts} +27 -1
- package/dist/{toggleKind-BD78LnMB.d.ts → toggleKind-DhDmWExm.d.ts} +27 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as CanvasItemId, a as CanvasWindowId, b as CanvasJson, c as CanvasLayoutNode, d as CanvasPaneId, e as CanvasStoreBinding, f as CanvasState, g as CanvasAction, h as CanvasController, i as CanvasItem, j as CanvasExtraWindow, k as CanvasHistoryEntry, l as CanvasPane, m as canvasWindowOfItem } from './toggleKind-
|
|
2
|
-
export { n as CANVAS_DEFAULT_KEY, o as CANVAS_DEFAULT_WIDTH, p as CANVAS_DESKTOP_LAYOUT_RULES, q as CANVAS_HISTORY_LIMIT, r as
|
|
1
|
+
import { C as CanvasItemId, a as CanvasWindowId, b as CanvasJson, c as CanvasLayoutNode, d as CanvasPaneId, e as CanvasStoreBinding, f as CanvasState, g as CanvasAction, h as CanvasController, i as CanvasItem, j as CanvasExtraWindow, k as CanvasHistoryEntry, l as CanvasPane, m as canvasWindowOfItem } from './toggleKind-DhDmWExm.cjs';
|
|
2
|
+
export { n as CANVAS_DEFAULT_KEY, o as CANVAS_DEFAULT_WIDTH, p as CANVAS_DESKTOP_LAYOUT_RULES, q as CANVAS_HISTORY_LIMIT, r as CANVAS_KEEP_ALIVE_DEPTH, s as CANVAS_LAUNCHER_KIND, t as CANVAS_MAIN_WINDOW, u as CANVAS_MIN_SPLIT_FRACTION, v as CANVAS_MIN_WIDTH, w as CANVAS_NARROW_WIDTH, x as CANVAS_PHONE_MAX_WIDTH, y as CANVAS_STORAGE_KEY, z as CANVAS_WEB_LAYOUT_RULES, A as CanvasControllerOptions, B as CanvasErrorReport, D as CanvasErrorSink, E as CanvasKeyValueStore, F as CanvasKindVisibility, G as CanvasLayoutRules, H as CanvasNavigateInput, I as CanvasOpenInput, J as CanvasOpenTarget, K as CanvasOrientation, L as CanvasPersistencePort, M as CanvasPreferredTarget, N as CanvasPresentation, O as CanvasPresentationOrientation, P as CanvasRect, Q as CanvasSessionAttachReason, R as CanvasSessionDetachReason, S as CanvasSessionEvent, T as CanvasSessionHooks, U as CanvasSplitId, V as CanvasWindowCloseMode, W as CanvasWindowFrame, X as CanvasWindowPorts, Y as ReduxStoreLike, Z as ToggleKindInput, _ as bindCanvasToReduxStore, $ as canvasActions, a0 as canvasOrientation, a1 as canvasPresentation, a2 as canvasReducer, a3 as canvasWindowFrame, a4 as canvasWindowOfPane, a5 as clampDraggedCanvasWidth, a6 as consoleCanvasErrorSink, a7 as createCanvasController, a8 as createCanvasStore, a9 as createInitialCanvasState, aa as createKeyValueCanvasPersistence, ab as createLocalStorageCanvasPersistence, ac as defaultCanvasWidth, ad as fitCanvasWidth, ae as foldCanvasWindows, af as isCanvasAction, ag as listCanvasWindowIds, ah as preferredFlowDirection, ai as resolveCanvasLayoutRules, aj as sanitizeCanvasSnapshot, ak as selectCanvasKindVisibility, al as shouldStackSplit, am as toPersistableSnapshot, an as toggleKind } from './toggleKind-DhDmWExm.cjs';
|
|
3
3
|
|
|
4
4
|
declare function canvasItemId(kind: string, key: string): CanvasItemId;
|
|
5
5
|
declare function parseCanvasItemId(id: CanvasItemId): {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as CanvasItemId, a as CanvasWindowId, b as CanvasJson, c as CanvasLayoutNode, d as CanvasPaneId, e as CanvasStoreBinding, f as CanvasState, g as CanvasAction, h as CanvasController, i as CanvasItem, j as CanvasExtraWindow, k as CanvasHistoryEntry, l as CanvasPane, m as canvasWindowOfItem } from './toggleKind-
|
|
2
|
-
export { n as CANVAS_DEFAULT_KEY, o as CANVAS_DEFAULT_WIDTH, p as CANVAS_DESKTOP_LAYOUT_RULES, q as CANVAS_HISTORY_LIMIT, r as
|
|
1
|
+
import { C as CanvasItemId, a as CanvasWindowId, b as CanvasJson, c as CanvasLayoutNode, d as CanvasPaneId, e as CanvasStoreBinding, f as CanvasState, g as CanvasAction, h as CanvasController, i as CanvasItem, j as CanvasExtraWindow, k as CanvasHistoryEntry, l as CanvasPane, m as canvasWindowOfItem } from './toggleKind-DhDmWExm.js';
|
|
2
|
+
export { n as CANVAS_DEFAULT_KEY, o as CANVAS_DEFAULT_WIDTH, p as CANVAS_DESKTOP_LAYOUT_RULES, q as CANVAS_HISTORY_LIMIT, r as CANVAS_KEEP_ALIVE_DEPTH, s as CANVAS_LAUNCHER_KIND, t as CANVAS_MAIN_WINDOW, u as CANVAS_MIN_SPLIT_FRACTION, v as CANVAS_MIN_WIDTH, w as CANVAS_NARROW_WIDTH, x as CANVAS_PHONE_MAX_WIDTH, y as CANVAS_STORAGE_KEY, z as CANVAS_WEB_LAYOUT_RULES, A as CanvasControllerOptions, B as CanvasErrorReport, D as CanvasErrorSink, E as CanvasKeyValueStore, F as CanvasKindVisibility, G as CanvasLayoutRules, H as CanvasNavigateInput, I as CanvasOpenInput, J as CanvasOpenTarget, K as CanvasOrientation, L as CanvasPersistencePort, M as CanvasPreferredTarget, N as CanvasPresentation, O as CanvasPresentationOrientation, P as CanvasRect, Q as CanvasSessionAttachReason, R as CanvasSessionDetachReason, S as CanvasSessionEvent, T as CanvasSessionHooks, U as CanvasSplitId, V as CanvasWindowCloseMode, W as CanvasWindowFrame, X as CanvasWindowPorts, Y as ReduxStoreLike, Z as ToggleKindInput, _ as bindCanvasToReduxStore, $ as canvasActions, a0 as canvasOrientation, a1 as canvasPresentation, a2 as canvasReducer, a3 as canvasWindowFrame, a4 as canvasWindowOfPane, a5 as clampDraggedCanvasWidth, a6 as consoleCanvasErrorSink, a7 as createCanvasController, a8 as createCanvasStore, a9 as createInitialCanvasState, aa as createKeyValueCanvasPersistence, ab as createLocalStorageCanvasPersistence, ac as defaultCanvasWidth, ad as fitCanvasWidth, ae as foldCanvasWindows, af as isCanvasAction, ag as listCanvasWindowIds, ah as preferredFlowDirection, ai as resolveCanvasLayoutRules, aj as sanitizeCanvasSnapshot, ak as selectCanvasKindVisibility, al as shouldStackSplit, am as toPersistableSnapshot, an as toggleKind } from './toggleKind-DhDmWExm.js';
|
|
3
3
|
|
|
4
4
|
declare function canvasItemId(kind: string, key: string): CanvasItemId;
|
|
5
5
|
declare function parseCanvasItemId(id: CanvasItemId): {
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
var CANVAS_MAIN_WINDOW = "main";
|
|
3
3
|
var CANVAS_LAUNCHER_KIND = "canvas.launcher";
|
|
4
4
|
var CANVAS_HISTORY_LIMIT = 50;
|
|
5
|
+
var CANVAS_KEEP_ALIVE_DEPTH = 5;
|
|
5
6
|
var CANVAS_MIN_WIDTH = 360;
|
|
6
7
|
var CANVAS_DEFAULT_WIDTH = 640;
|
|
7
8
|
var CANVAS_MIN_SPLIT_FRACTION = 0.12;
|
|
@@ -367,8 +368,10 @@ function sendHome(state, itemId, home, activate) {
|
|
|
367
368
|
next = insertInto(next, homeFrame.focusedPaneId, itemId, activate);
|
|
368
369
|
return activate ? withFrame(next, target, { focusedPaneId: homeFrame.focusedPaneId }) : next;
|
|
369
370
|
}
|
|
370
|
-
function newItem(kind, key, title, data, now,
|
|
371
|
+
function newItem(kind, key, title, data, now, steps) {
|
|
371
372
|
const id = canvasItemId(kind, key);
|
|
373
|
+
const history = steps?.history ?? [];
|
|
374
|
+
const kept = steps?.kept ?? [];
|
|
372
375
|
return {
|
|
373
376
|
id,
|
|
374
377
|
kind,
|
|
@@ -377,12 +380,14 @@ function newItem(kind, key, title, data, now, history) {
|
|
|
377
380
|
data,
|
|
378
381
|
openedAt: now,
|
|
379
382
|
updatedAt: now,
|
|
380
|
-
instance
|
|
381
|
-
|
|
383
|
+
// A reused instance is the SAME live body coming back (Back, or returning to a kept step).
|
|
384
|
+
instance: steps?.instance ?? `${now.toString(36)}:${id}`,
|
|
385
|
+
...history.length > 0 ? { history: history.slice(-CANVAS_HISTORY_LIMIT) } : {},
|
|
386
|
+
...kept.length > 0 ? { kept: kept.slice(-CANVAS_KEEP_ALIVE_DEPTH) } : {}
|
|
382
387
|
};
|
|
383
388
|
}
|
|
384
389
|
function historyEntry(item) {
|
|
385
|
-
return { kind: item.kind, key: item.key, title: item.title, data: item.data };
|
|
390
|
+
return { kind: item.kind, key: item.key, title: item.title, data: item.data, ...item.instance ? { instance: item.instance } : {} };
|
|
386
391
|
}
|
|
387
392
|
function replaceInPlace(state, current, next) {
|
|
388
393
|
const pane = paneOf(state, current.id);
|
|
@@ -411,17 +416,25 @@ function sanitizeHistory(raw) {
|
|
|
411
416
|
if (!entry || typeof entry !== "object") continue;
|
|
412
417
|
const e = entry;
|
|
413
418
|
if (typeof e.kind !== "string" || typeof e.key !== "string") continue;
|
|
414
|
-
out.push({
|
|
419
|
+
out.push({
|
|
420
|
+
kind: e.kind,
|
|
421
|
+
key: e.key,
|
|
422
|
+
title: typeof e.title === "string" ? e.title : null,
|
|
423
|
+
data: e.data ?? null,
|
|
424
|
+
...typeof e.instance === "string" && e.instance ? { instance: e.instance } : {}
|
|
425
|
+
});
|
|
415
426
|
}
|
|
416
427
|
return out.slice(-CANVAS_HISTORY_LIMIT);
|
|
417
428
|
}
|
|
418
429
|
function sanitizeItem(item) {
|
|
419
430
|
const history = sanitizeHistory(item.history);
|
|
420
|
-
const
|
|
431
|
+
const kept = sanitizeHistory(item.kept).slice(-CANVAS_KEEP_ALIVE_DEPTH);
|
|
432
|
+
const { history: _history, kept: _kept, instance, ...rest } = item;
|
|
421
433
|
return {
|
|
422
434
|
...rest,
|
|
423
435
|
...typeof instance === "string" && instance ? { instance } : {},
|
|
424
|
-
...history.length > 0 ? { history } : {}
|
|
436
|
+
...history.length > 0 ? { history } : {},
|
|
437
|
+
...kept.length > 0 ? { kept } : {}
|
|
425
438
|
};
|
|
426
439
|
}
|
|
427
440
|
function clampWidth(width) {
|
|
@@ -608,7 +621,22 @@ function canvasReducer(state = createInitialCanvasState(), action) {
|
|
|
608
621
|
return current.kind === CANVAS_LAUNCHER_KIND ? canvasReducer(focused, canvasActions.closeItem(itemId)) : focused;
|
|
609
622
|
}
|
|
610
623
|
const history = [...current.history ?? [], historyEntry(current)];
|
|
611
|
-
|
|
624
|
+
const keptAll = current.kept ?? [];
|
|
625
|
+
const keptIndex = keptAll.findIndex((entry) => canvasItemId(entry.kind, entry.key) === targetId);
|
|
626
|
+
const revived = keptIndex >= 0 ? keptAll[keptIndex] : void 0;
|
|
627
|
+
const kept = keptAll.filter((_, i) => i !== keptIndex);
|
|
628
|
+
return replaceInPlace(
|
|
629
|
+
state,
|
|
630
|
+
current,
|
|
631
|
+
newItem(
|
|
632
|
+
to.kind,
|
|
633
|
+
to.key,
|
|
634
|
+
to.title !== void 0 ? to.title : revived?.title ?? null,
|
|
635
|
+
to.data !== void 0 ? to.data : revived?.data ?? null,
|
|
636
|
+
now,
|
|
637
|
+
{ history, kept, instance: revived?.instance }
|
|
638
|
+
)
|
|
639
|
+
);
|
|
612
640
|
}
|
|
613
641
|
case `${P}back`: {
|
|
614
642
|
const { itemId, now } = action.payload;
|
|
@@ -621,7 +649,12 @@ function canvasReducer(state = createInitialCanvasState(), action) {
|
|
|
621
649
|
if (state.items[targetId]) {
|
|
622
650
|
return focusExisting(canvasReducer(state, canvasActions.closeItem(itemId)), targetId);
|
|
623
651
|
}
|
|
624
|
-
|
|
652
|
+
const kept = [...(current.kept ?? []).filter((k) => canvasItemId(k.kind, k.key) !== itemId), historyEntry(current)];
|
|
653
|
+
return replaceInPlace(
|
|
654
|
+
state,
|
|
655
|
+
current,
|
|
656
|
+
newItem(entry.kind, entry.key, entry.title, entry.data, now, { history: history.slice(0, -1), kept, instance: entry.instance })
|
|
657
|
+
);
|
|
625
658
|
}
|
|
626
659
|
case `${P}closeItem`: {
|
|
627
660
|
const { itemId } = action.payload;
|
|
@@ -1458,6 +1491,7 @@ function selectCanvasItemHistory(s, itemId) {
|
|
|
1458
1491
|
var selectCanvasCanGoBack = (s, itemId) => (s.items[itemId]?.history?.length ?? 0) > 0;
|
|
1459
1492
|
|
|
1460
1493
|
// src/core/presentation.ts
|
|
1494
|
+
var CANVAS_PHONE_MAX_WIDTH = 767;
|
|
1461
1495
|
var CANVAS_NARROW_WIDTH = 480;
|
|
1462
1496
|
var SQUARE_BAND = 1.2;
|
|
1463
1497
|
function canvasOrientation(width, height) {
|
|
@@ -1529,11 +1563,13 @@ export {
|
|
|
1529
1563
|
CANVAS_DEFAULT_WIDTH,
|
|
1530
1564
|
CANVAS_DESKTOP_LAYOUT_RULES,
|
|
1531
1565
|
CANVAS_HISTORY_LIMIT,
|
|
1566
|
+
CANVAS_KEEP_ALIVE_DEPTH,
|
|
1532
1567
|
CANVAS_LAUNCHER_KIND,
|
|
1533
1568
|
CANVAS_MAIN_WINDOW,
|
|
1534
1569
|
CANVAS_MIN_SPLIT_FRACTION,
|
|
1535
1570
|
CANVAS_MIN_WIDTH,
|
|
1536
1571
|
CANVAS_NARROW_WIDTH,
|
|
1572
|
+
CANVAS_PHONE_MAX_WIDTH,
|
|
1537
1573
|
CANVAS_SHORTCUTS,
|
|
1538
1574
|
CANVAS_STORAGE_KEY,
|
|
1539
1575
|
CANVAS_WEB_LAYOUT_RULES,
|