@kgdiff/viewer 0.2.0 → 0.3.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/dist/framing.d.ts CHANGED
@@ -3,7 +3,8 @@
3
3
  * float over the canvas; a fit or flight must keep its target clear of them without wasting the
4
4
  * rest of the canvas. Each obstacle can be avoided through one side (an inset); all assignments
5
5
  * are tried (4ⁿ, n ≤ ~6 visible chips) and the one that shows `bounds` largest wins, ties going
6
- * to the free region closest to the canvas center. Pure; all sizes in canvas px.
6
+ * to the free region closest to the canvas center. `zoomFit` fits content whose world extent
7
+ * depends on the zoom (labels). Pure; all sizes in canvas px.
7
8
  */
8
9
  import type { Rect } from '@kgdiff/core';
9
10
  export interface Insets {
@@ -40,6 +41,24 @@ export declare function chromeInsets(bounds: Rect, layout: ChromeLayout, padding
40
41
  * canvas center.
41
42
  */
42
43
  export declare function frameTarget(bounds: Rect, width: number, height: number, insets: Insets, minK: number, maxK: number): CameraTarget;
44
+ /** A fit whose content depends on the zoom it reaches. */
45
+ export interface ZoomFit {
46
+ /** The zoom the fit lands on. */
47
+ readonly k: number;
48
+ /** What it shows (world units). */
49
+ readonly content: Rect;
50
+ /** Bounds for the camera: `content` centred in a rect that a fit lands on at exactly `k`. */
51
+ readonly bounds: Rect;
52
+ }
53
+ /**
54
+ * Fit content whose world extent depends on the zoom, `extent(k)`: labels keep their pixel size
55
+ * (and change sides as they make room for each other), so the further out the camera, the more
56
+ * world they cover. Finds the largest zoom up to `maxK` at which the content fits the canvas
57
+ * minus `insets` at that very zoom, by bisection (what fits only grows on screen as the camera
58
+ * zooms in), and lands exactly there, since the labels could move at another zoom. When not
59
+ * even the smallest zoom has room, `extent(Infinity)` (the discs alone) is fitted plainly.
60
+ */
61
+ export declare function zoomFit(extent: (k: number) => Rect | null, width: number, height: number, insets: Insets, maxK: number): ZoomFit | null;
43
62
  /** The part of `view` (world units) not covered by `insets` at zoom `k`. */
44
63
  export declare function freeView(view: Rect, k: number, insets: Insets): Rect;
45
64
  //# sourceMappingURL=framing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"framing.d.ts","sourceRoot":"","sources":["../src/framing.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,sFAAsF;AACtF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4CAA4C;AAC5C,eAAO,MAAM,aAAa,KAAK,CAAC;AAShC,eAAO,MAAM,SAAS,EAAE,MAAgE,CAAC;AAEzF,+FAA+F;AAC/F,wBAAgB,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO3F;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,YAAY,EACpB,OAAO,SAAgB,EACvB,OAAO,SAA2B,GACjC,MAAM,CAwDR;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,YAAY,CAQd;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAOpE"}
1
+ {"version":3,"file":"framing.d.ts","sourceRoot":"","sources":["../src/framing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,sFAAsF;AACtF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4CAA4C;AAC5C,eAAO,MAAM,aAAa,KAAK,CAAC;AAShC,eAAO,MAAM,SAAS,EAAE,MAAgE,CAAC;AAEzF,+FAA+F;AAC/F,wBAAgB,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO3F;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,YAAY,EACpB,OAAO,SAAgB,EACvB,OAAO,SAA2B,GACjC,MAAM,CAwDR;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,YAAY,CAQd;AAOD,0DAA0D;AAC1D,MAAM,WAAW,OAAO;IACtB,iCAAiC;IACjC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,EAClC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,GAAG,IAAI,CAgChB;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAOpE"}
package/dist/framing.js CHANGED
@@ -95,6 +95,55 @@ export function frameTarget(bounds, width, height, insets, minK, maxK) {
95
95
  const cy = bounds.y + bounds.height / 2;
96
96
  return { x: cx - (sx - width / 2) / k, y: cy - (sy - height / 2) / k, k };
97
97
  }
98
+ /** Lowest zoom a fit considers (the renderer's default `minZoom`). */
99
+ const MIN_FIT_ZOOM = 0.05;
100
+ /** Bisection steps for the zoom of a label-aware fit (a fraction of a percent). */
101
+ const FIT_STEPS = 16;
102
+ /**
103
+ * Fit content whose world extent depends on the zoom, `extent(k)`: labels keep their pixel size
104
+ * (and change sides as they make room for each other), so the further out the camera, the more
105
+ * world they cover. Finds the largest zoom up to `maxK` at which the content fits the canvas
106
+ * minus `insets` at that very zoom, by bisection (what fits only grows on screen as the camera
107
+ * zooms in), and lands exactly there, since the labels could move at another zoom. When not
108
+ * even the smallest zoom has room, `extent(Infinity)` (the discs alone) is fitted plainly.
109
+ */
110
+ export function zoomFit(extent, width, height, insets, maxK) {
111
+ const fits = (k) => {
112
+ const b = extent(k);
113
+ return b !== null && fitZoom(b, width, height, insets) >= k;
114
+ };
115
+ let k = maxK;
116
+ if (!fits(k)) {
117
+ let lo = Math.min(MIN_FIT_ZOOM, maxK);
118
+ if (!fits(lo)) {
119
+ const discs = extent(Number.POSITIVE_INFINITY);
120
+ if (!discs)
121
+ return null;
122
+ return { k: fitZoom(discs, width, height, insets), content: discs, bounds: discs };
123
+ }
124
+ let hi = k;
125
+ for (let i = 0; i < FIT_STEPS; i++) {
126
+ const mid = Math.sqrt(lo * hi);
127
+ if (fits(mid))
128
+ lo = mid;
129
+ else
130
+ hi = mid;
131
+ }
132
+ k = lo;
133
+ }
134
+ const content = extent(k);
135
+ if (!content)
136
+ return null;
137
+ const w = (width - insets.left - insets.right) / k;
138
+ const h = (height - insets.top - insets.bottom) / k;
139
+ const bounds = {
140
+ x: content.x + content.width / 2 - w / 2,
141
+ y: content.y + content.height / 2 - h / 2,
142
+ width: w,
143
+ height: h,
144
+ };
145
+ return { k, content, bounds };
146
+ }
98
147
  /** The part of `view` (world units) not covered by `insets` at zoom `k`. */
99
148
  export function freeView(view, k, insets) {
100
149
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"framing.js","sourceRoot":"","sources":["../src/framing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"framing.js","sourceRoot":"","sources":["../src/framing.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -15,6 +15,10 @@ import type { LayoutJSON, LayoutOptions } from '@kgdiff/layout';
15
15
  import type { PaletteName } from '@kgdiff/scene';
16
16
  export type ViewerMode = 'overlay' | 'swipe' | 'replay' | 'changes';
17
17
  export type ThemePreference = 'auto' | 'light' | 'dark';
18
+ /** `none`: the graph alone, for small embeds (see `KgdiffViewerElement.chrome`). */
19
+ export type ViewerChrome = 'full' | 'none';
20
+ /** The legend card, one line of dots, no legend, or `auto` (the card, one line without chrome). */
21
+ export type ViewerLegend = 'auto' | 'full' | 'mini' | 'none';
18
22
  /** A precomputed diff + layout: what the CLI embeds in HTML reports. Deterministic. */
19
23
  export interface ReportPayload {
20
24
  readonly format: 'kgdiff.report';
@@ -85,6 +89,19 @@ export interface KgdiffViewerEventMap {
85
89
  'kgdiff-error': CustomEvent<{
86
90
  readonly error: Error;
87
91
  }>;
92
+ /**
93
+ * Playback reached the end of the replay (not fired for seeking or stepping there). `loop`:
94
+ * it starts again after `loopDelay` ms; set `loop = false` or call `pause()` to stop it.
95
+ */
96
+ 'kgdiff-replay-end': CustomEvent<{
97
+ readonly loop: boolean;
98
+ }>;
99
+ }
100
+ export interface FitOptions {
101
+ /** Default true (false with reduced motion). */
102
+ readonly animate?: boolean;
103
+ /** Room kept around the graph and its labels, px. Default 24; later automatic fits keep it. */
104
+ readonly padding?: number;
88
105
  }
89
106
  /**
90
107
  * Public surface of the `<kgdiff-viewer>` element.
@@ -97,6 +114,9 @@ export interface KgdiffViewerEventMap {
97
114
  *
98
115
  * `header="compact"` leaves the brand and the compared names out of the header, for hosts that
99
116
  * show their own (such as the playground).
117
+ *
118
+ * A small looping replay for another page: `mode="replay" chrome="none" loop` (with a height of
119
+ * your choosing, such as 320px).
100
120
  */
101
121
  export interface KgdiffViewerElement extends HTMLElement {
102
122
  /** Reflected to the `mode` attribute. Default `overlay` (`changes` for large graphs). */
@@ -107,6 +127,32 @@ export interface KgdiffViewerElement extends HTMLElement {
107
127
  palette: PaletteName;
108
128
  /** Reflected to the `locale` attribute. Default from `navigator.language`. */
109
129
  locale: Locale;
130
+ /**
131
+ * Reflected to the `chrome` attribute. `none` shows the graph alone: no header, change list,
132
+ * step caption, playback bar, zoom buttons, minimap or legend card; the hover tooltip and a
133
+ * one-line legend stay. Clicks and keyboard shortcuts do nothing, the minimum height drops
134
+ * from 420px to 120px, and the view stays fitted: when the canvas is resized (unless the user
135
+ * panned or zoomed since) and at the start of every loop. Labels are never cut at the edge:
136
+ * one pushed from its spot by a neighbour moves inside or is left out. Default `full`.
137
+ */
138
+ chrome: ViewerChrome;
139
+ /**
140
+ * Reflected to the `legend` attribute: `full` (the card), `mini` (one line: the families this
141
+ * diff has, then unchanged), `none`. Default `auto`: `full`, or `mini` with `chrome="none"`.
142
+ */
143
+ legend: ViewerLegend;
144
+ /**
145
+ * Reflected to the boolean `loop` attribute. In `replay` mode the replay plays by itself and
146
+ * starts again `loopDelay` ms after it ends. `pause()` stops it until `play()`. Default false.
147
+ */
148
+ loop: boolean;
149
+ /** Reflected to `loop-delay`: ms between the end of a looping replay and its restart. Default 1200. */
150
+ loopDelay: number;
151
+ /**
152
+ * With `loop`, the replay pauses while the pointer is over the graph and continues when it
153
+ * leaves (a mouse or pen; not touch). Reflected as `pause-on-hover="false"` when off. Default true.
154
+ */
155
+ pauseOnHover: boolean;
110
156
  /** Set a precomputed report (no diff / layout work in the browser). */
111
157
  payload: ReportPayload | null;
112
158
  /** Parse (if needed), diff, lay out and show two graphs. Rejects with a KgdiffError on bad input. */
@@ -117,7 +163,8 @@ export interface KgdiffViewerElement extends HTMLElement {
117
163
  prev(): void;
118
164
  play(): void;
119
165
  pause(): void;
120
- fit(): Promise<void>;
166
+ /** Fit the whole graph, labels included, into view. */
167
+ fit(options?: FitOptions): Promise<void>;
121
168
  /** The full delta of the current diff. */
122
169
  exportDelta(): Delta;
123
170
  reviewState(): ReviewState;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAoG3C;;;;;;;;GAQG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,mFAAmF;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAE7D,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B,8FAA8F;AAC9F,MAAM,UAAU,YAAY,CAAC,OAAO,GAAG,eAAe;IACpD,IAAI,OAAO,cAAc,KAAK,WAAW;QAAE,OAAO;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QAC3C,8EAA8E;QAC9E,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,KAAM,SAAQ,YAAY;SAAG,CAAC,CAAC,CAAC,YAAY,CAAC;QAC5E,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAiB;IACvD,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/E,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACpD,CAAC;AAQD,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAkJ3C;;;;;;;;GAQG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,mFAAmF;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAE7D,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B,8FAA8F;AAC9F,MAAM,UAAU,YAAY,CAAC,OAAO,GAAG,eAAe;IACpD,IAAI,OAAO,cAAc,KAAK,WAAW;QAAE,OAAO;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QAC3C,8EAA8E;QAC9E,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,KAAM,SAAQ,YAAY;SAAG,CAAC,CAAC,CAAC,YAAY,CAAC;QAC5E,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAiB;IACvD,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/E,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACpD,CAAC;AAQD,YAAY,EAAE,CAAC"}
package/dist/prefs.d.ts CHANGED
@@ -5,12 +5,18 @@
5
5
  */
6
6
  import type { Locale } from '@kgdiff/core';
7
7
  import type { PaletteName } from '@kgdiff/scene';
8
- import type { ReportPayload, ThemePreference, ViewerMode } from './index.js';
8
+ import type { ReportPayload, ThemePreference, ViewerChrome, ViewerLegend, ViewerMode } from './index.js';
9
+ /** Pause between the end of a looping replay and its next start, ms. */
10
+ export declare const DEFAULT_LOOP_DELAY = 1200;
9
11
  export declare const THEME_PREFERENCES: readonly ThemePreference[];
10
12
  export declare function toMode(value: unknown): ViewerMode | null;
11
13
  export declare function toTheme(value: unknown): ThemePreference | null;
12
14
  export declare function toPalette(value: unknown): PaletteName | null;
13
15
  export declare function toLocale(value: unknown): Locale | null;
16
+ export declare function toChrome(value: unknown): ViewerChrome | null;
17
+ export declare function toLegend(value: unknown): ViewerLegend | null;
18
+ /** A delay in ms (number or numeric string), at least 0. */
19
+ export declare function toDelay(value: unknown): number | null;
14
20
  type View = NonNullable<ReportPayload['view']>;
15
21
  /** Keep only the valid fields of a report's `view` (warning about the rest). */
16
22
  export declare function sanitizeView(view: unknown): View | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"prefs.d.ts","sourceRoot":"","sources":["../src/prefs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7E,eAAO,MAAM,iBAAiB,4BAAS,CAAC;AAExC,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAExD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAE9D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAE5D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAEtD;AAED,KAAK,IAAI,GAAG,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/C,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAmB5D"}
1
+ {"version":3,"file":"prefs.d.ts","sourceRoot":"","sources":["../src/prefs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,YAAY,CAAC;AAQpB,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,eAAO,MAAM,iBAAiB,4BAAS,CAAC;AAExC,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAExD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAE9D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAE5D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAEtD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAE5D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAE5D;AAED,4DAA4D;AAC5D,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGrD;AAED,KAAK,IAAI,GAAG,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/C,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAmB5D"}
package/dist/prefs.js CHANGED
@@ -2,6 +2,10 @@ import { normalizeLocale } from './i18n.js';
2
2
  const MODES = ['overlay', 'swipe', 'replay', 'changes'];
3
3
  const THEMES = ['auto', 'light', 'dark'];
4
4
  const PALETTES = ['default', 'colorblind'];
5
+ const CHROMES = ['full', 'none'];
6
+ const LEGENDS = ['auto', 'full', 'mini', 'none'];
7
+ /** Pause between the end of a looping replay and its next start, ms. */
8
+ export const DEFAULT_LOOP_DELAY = 1200;
5
9
  export const THEME_PREFERENCES = THEMES;
6
10
  export function toMode(value) {
7
11
  return MODES.includes(value) ? value : null;
@@ -15,6 +19,17 @@ export function toPalette(value) {
15
19
  export function toLocale(value) {
16
20
  return typeof value === 'string' ? normalizeLocale(value) : null;
17
21
  }
22
+ export function toChrome(value) {
23
+ return CHROMES.includes(value) ? value : null;
24
+ }
25
+ export function toLegend(value) {
26
+ return LEGENDS.includes(value) ? value : null;
27
+ }
28
+ /** A delay in ms (number or numeric string), at least 0. */
29
+ export function toDelay(value) {
30
+ const n = typeof value === 'string' && value.trim() !== '' ? Number(value) : value;
31
+ return typeof n === 'number' && Number.isFinite(n) && n >= 0 ? n : null;
32
+ }
18
33
  /** Keep only the valid fields of a report's `view` (warning about the rest). */
19
34
  export function sanitizeView(view) {
20
35
  if (typeof view !== 'object' || view === null)
package/dist/prefs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"prefs.js","sourceRoot":"","sources":["../src/prefs.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG5C,MAAM,KAAK,GAA0B,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC/E,MAAM,MAAM,GAA+B,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACrE,MAAM,QAAQ,GAA2B,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAExC,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAmB,CAAC,CAAC,CAAC,CAAE,KAAoB,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAwB,CAAC,CAAC,CAAC,CAAE,KAAyB,CAAC,CAAC,CAAC,IAAI,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAoB,CAAC,CAAC,CAAC,CAAE,KAAqB,CAAC,CAAC,CAAC,IAAI,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,CAAC;AAID,gFAAgF;AAChF,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAChE,MAAM,CAAC,GAAG,IAA+B,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,OAAO,GAAI,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAW,CAAC,MAAM,CACtE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAC1E,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,sDAAsD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO;QACL,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"prefs.js","sourceRoot":"","sources":["../src/prefs.ts"],"names":[],"mappings":"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"}