ryugi-artifacts 1.41.1 → 1.42.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.
@@ -0,0 +1,20 @@
1
+ import type { View } from '../lib/view';
2
+ interface Client {
3
+ clientX: number;
4
+ clientY: number;
5
+ }
6
+ export declare function useHoverDwell({ scaling, view, inside, locate }: {
7
+ scaling: boolean;
8
+ view: View;
9
+ inside?: string | null;
10
+ locate: (client: Client) => {
11
+ board: string | null;
12
+ x: number;
13
+ y: number;
14
+ };
15
+ }): {
16
+ hovered: string | null;
17
+ track: (client: Client) => void;
18
+ leave: () => void;
19
+ };
20
+ export {};
@@ -0,0 +1,2 @@
1
+ import type { BoardSpec } from '../../shared/types';
2
+ export declare function useKeptBoards(boards: [string, BoardSpec][], versions: Record<string, number>, accepts?: (id: string) => boolean): ReadonlySet<string>;
@@ -8,6 +8,7 @@ export type ArtboardViewProps = Omit<ReturnType<typeof useCanvasData>, 'live' |
8
8
  artifact: string | null;
9
9
  live?: boolean;
10
10
  actions?: ReactNode;
11
+ tiers?: boolean;
11
12
  send?: (message: SelectionMessage) => void;
12
13
  comments?: BoardCommentsState | null;
13
14
  comment?: (op: BoardHumanOp) => Promise<BoardCommentsState>;
@@ -3,7 +3,7 @@ export declare const SNAPSHOT_SCALES: readonly [0.125, 0.25, 0.5, 1, 2];
3
3
  export type SnapshotScale = (typeof SNAPSHOT_SCALES)[number];
4
4
  export type BoardTier = 'live' | 'snapshot' | 'placeholder' | 'empty';
5
5
  export declare const LIVE_MIN_ZOOM = 0.4;
6
- export declare const LIVE_MAX = 4;
6
+ export declare const LIVE_MAX = 8;
7
7
  export declare const WARM_MIN_WIDTH = 120;
8
8
  export interface TierBoard {
9
9
  id: string;
@@ -21,6 +21,7 @@ export interface TierInput {
21
21
  };
22
22
  pinned: ReadonlySet<string>;
23
23
  snapshots: ReadonlySet<string>;
24
+ hovered?: string | null;
24
25
  }
25
26
  export interface BoardRender {
26
27
  tier: BoardTier;
@@ -30,7 +31,7 @@ export interface BoardRender {
30
31
  hidden: boolean;
31
32
  }
32
33
  export declare const snapshotScale: (k: number, dpr: number) => SnapshotScale;
33
- export declare function chooseTiers({ boards, view, viewport, pinned, snapshots }: TierInput): Map<string, BoardTier>;
34
+ export declare function chooseTiers({ boards, view, viewport, pinned, snapshots, hovered }: TierInput): Map<string, BoardTier>;
34
35
  export declare function visibleRenders({ boards, view, viewport }: Pick<TierInput, 'boards' | 'view' | 'viewport'>): Map<string, BoardRender>;
35
36
  export declare function boardsToWarm({ boards, view, viewport, snapshots, skip }: Pick<TierInput, 'boards' | 'view' | 'viewport' | 'snapshots'> & {
36
37
  skip: ReadonlySet<string>;
@@ -0,0 +1,18 @@
1
+ export declare const HOVER_DWELL_MS = 600;
2
+ interface Point {
3
+ x: number;
4
+ y: number;
5
+ }
6
+ export declare function createHoverDwell({ dwellMs, schedule, cancel, onChange }: {
7
+ dwellMs: number;
8
+ schedule: (fn: () => void, ms: number) => number;
9
+ cancel: (id: number) => void;
10
+ onChange: () => void;
11
+ }): {
12
+ move(board: string | null, point: Point): void;
13
+ setScaling(next: boolean): void;
14
+ current: () => string | null;
15
+ dispose: () => void;
16
+ };
17
+ export type HoverDwell = ReturnType<typeof createHoverDwell>;
18
+ export {};
@@ -0,0 +1,7 @@
1
+ export declare const KEPT_MAX = 6;
2
+ export interface KeptBoard {
3
+ id: string;
4
+ version: number;
5
+ }
6
+ export declare function keepBoard(list: readonly KeptBoard[], id: string, version: number): KeptBoard[];
7
+ export declare function pruneKept(list: KeptBoard[], current: ReadonlyMap<string, number>): KeptBoard[];
@@ -16,10 +16,11 @@ interface Clock {
16
16
  schedule?: (fn: () => void, ms: number) => number;
17
17
  cancel?: (id: number) => void;
18
18
  onChange: () => void;
19
+ onGiveUp?: (id: string) => void;
19
20
  }
20
- export declare function createTierController({ now, schedule, cancel, onChange, }: Clock): {
21
+ export declare function createTierController({ now, schedule, cancel, onChange, onGiveUp, }: Clock): {
21
22
  loaded(id: string): void;
22
- ready: (id: string) => void;
23
+ ready(id: string): void;
23
24
  update(input: ControllerInput): Map<string, BoardState>;
24
25
  };
25
26
  export type TierController = ReturnType<typeof createTierController>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ryugi-artifacts",
3
- "version": "1.41.1",
3
+ "version": "1.42.0",
4
4
  "type": "module",
5
5
  "description": "Server and viewer for the Ryugi artifacts app",
6
6
  "license": "AGPL-3.0-only",