@flighthq/screen 0.4.0-next.1898.266773a → 0.4.0-next.1908.751021c

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.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { attachScreenSignals, createScreenMode, detachScreenSignals, dipToScreenPoint, dipToScreenRect, disposeScreenSignals, enableScreenSignals, getPrimaryScreen, getScreenBounds, getScreenById, getScreenContainingRect, getScreenCurrentMode, getScreenCursorPosition, getScreenCursorScreen, getScreenDetailPermission, getScreenModes, getScreenNearestPoint, getScreenNearestRect, getScreenWorkArea, getScreens, onScreenChange, onScreenDetailPermissionChange, refreshScreens, requestScreenDetails, screenToDipPoint, screenToDipRect, } from './contract';
1
+ export { explainScreenBackend, attachScreenSignals, createScreenMode, detachScreenSignals, dipToScreenPoint, dipToScreenRect, disposeScreenSignals, enableScreenSignals, getPrimaryScreen, getScreenBounds, getScreenById, getScreenContainingRect, getScreenCurrentMode, getScreenCursorPosition, getScreenCursorScreen, getScreenDetailPermission, getScreenModes, getScreenNearestPoint, getScreenNearestRect, getScreenWorkArea, getScreens, onScreenChange, onScreenDetailPermissionChange, refreshScreens, requestScreenDetails, screenToDipPoint, screenToDipRect, } from './contract';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,8BAA8B,EAC9B,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,8BAA8B,EAC9B,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { attachScreenSignals, createScreenMode, detachScreenSignals, dipToScreenPoint, dipToScreenRect, disposeScreenSignals, enableScreenSignals, getPrimaryScreen, getScreenBounds, getScreenById, getScreenContainingRect, getScreenCurrentMode, getScreenCursorPosition, getScreenCursorScreen, getScreenDetailPermission, getScreenModes, getScreenNearestPoint, getScreenNearestRect, getScreenWorkArea, getScreens, onScreenChange, onScreenDetailPermissionChange, refreshScreens, requestScreenDetails, screenToDipPoint, screenToDipRect, } from './contract';
1
+ export { explainScreenBackend, attachScreenSignals, createScreenMode, detachScreenSignals, dipToScreenPoint, dipToScreenRect, disposeScreenSignals, enableScreenSignals, getPrimaryScreen, getScreenBounds, getScreenById, getScreenContainingRect, getScreenCurrentMode, getScreenCursorPosition, getScreenCursorScreen, getScreenDetailPermission, getScreenModes, getScreenNearestPoint, getScreenNearestRect, getScreenWorkArea, getScreens, onScreenChange, onScreenDetailPermissionChange, refreshScreens, requestScreenDetails, screenToDipPoint, screenToDipRect, } from './contract';
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,8BAA8B,EAC9B,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,8BAA8B,EAC9B,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC"}
package/dist/screen.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { BackendExplanation } from '@flighthq/types/contract';
1
2
  import type { RectangleLike, ScreenBackend, ScreenChangeEvent, ScreenInfo, ScreenMode, ScreenSignals, Vector2Like } from '@flighthq/types/contract';
2
3
  export declare function attachScreenSignals(signals: ScreenSignals): void;
3
4
  export declare function createScreenInfo(): ScreenInfo;
@@ -25,6 +26,7 @@ export declare function dipToScreenRect(screen: Readonly<ScreenInfo>, rect: Read
25
26
  };
26
27
  export declare function disposeScreenSignals(signals: ScreenSignals): void;
27
28
  export declare function enableScreenSignals(): ScreenSignals;
29
+ export declare function explainScreenBackend(): BackendExplanation;
28
30
  export declare function getPrimaryScreen(out: ScreenInfo): ScreenInfo;
29
31
  export declare function getScreenBackend(): ScreenBackend;
30
32
  export declare function getScreenBounds(screen: Readonly<ScreenInfo>, out: {
@@ -65,10 +67,13 @@ export declare function getScreenWorkArea(screen: Readonly<ScreenInfo>, out: {
65
67
  width: number;
66
68
  height: number;
67
69
  };
70
+ export declare function installScreenHostBackend(backend: ScreenBackend): void;
71
+ export declare function observeScreenHostResult(operation: string, succeeded: boolean): void;
68
72
  export declare function onScreenChange(listener: (event: Readonly<ScreenChangeEvent>) => void): () => void;
69
73
  export declare function onScreenDetailPermissionChange(listener: (state: 'denied' | 'granted' | 'prompt') => void): () => void;
70
74
  export declare function refreshScreens(): void;
71
75
  export declare function requestScreenDetails(): Promise<boolean>;
76
+ export declare function resetScreenBackendForTest(): void;
72
77
  export declare function screenToDipPoint(screen: Readonly<ScreenInfo>, point: Readonly<Vector2Like>, out: {
73
78
  x: number;
74
79
  y: number;
@@ -1 +1 @@
1
- {"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../src/screen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../src/screen.ts"],"names":[],"mappings":"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"}
package/dist/screen.js CHANGED
@@ -1,7 +1,4 @@
1
1
  import { createSignal, emitSignal } from '@flighthq/signals/contract';
2
- // Attaches the active backend's change subscription to `signals`, fanning out events to the
3
- // appropriate signal for each ScreenChangeKind. Idempotent: a prior subscription is torn down first.
4
- // Pair with detachScreenSignals / disposeScreenSignals.
5
2
  export function attachScreenSignals(signals) {
6
3
  detachScreenSignals(signals);
7
4
  const unsubscribe = getScreenBackend().subscribe((event) => {
@@ -17,8 +14,6 @@ export function attachScreenSignals(signals) {
17
14
  });
18
15
  _signalSubscriptions.set(signals, unsubscribe);
19
16
  }
20
- // Allocates a zeroed ScreenInfo; use as the `out` for getPrimaryScreen or as an array slot for
21
- // getScreens. scaleFactor defaults to 1 (no scaling) and isPrimary to false.
22
17
  export function createScreenInfo() {
23
18
  return {
24
19
  id: 0,
@@ -48,7 +43,6 @@ export function createScreenInfo() {
48
43
  monochrome: false,
49
44
  };
50
45
  }
51
- // Allocates a zeroed ScreenMode; use as an array slot for getScreenModes / getScreenCurrentMode.
52
46
  export function createScreenMode() {
53
47
  return {
54
48
  width: 0,
@@ -58,7 +52,6 @@ export function createScreenMode() {
58
52
  pixelFormat: '',
59
53
  };
60
54
  }
61
- // Allocates a ScreenSignals group with inert signals; call attachScreenSignals to start delivery.
62
55
  export function createScreenSignals() {
63
56
  return {
64
57
  onScreenAdded: createSignal(),
@@ -301,7 +294,6 @@ export function createWebScreenBackend() {
301
294
  };
302
295
  return backend;
303
296
  }
304
- // Stops delivery to `signals` and forgets its subscription. Safe to call when not attached.
305
297
  export function detachScreenSignals(signals) {
306
298
  const unsubscribe = _signalSubscriptions.get(signals);
307
299
  if (unsubscribe !== undefined) {
@@ -309,9 +301,6 @@ export function detachScreenSignals(signals) {
309
301
  _signalSubscriptions.delete(signals);
310
302
  }
311
303
  }
312
- // Converts a point from DIP (logical) coordinates to physical screen pixel coordinates relative to
313
- // `screen`'s origin. Alias-safe: `out` may be the same object as `point`.
314
- // physicalX = (point.x - screen.x) * screen.scaleFactor
315
304
  export function dipToScreenPoint(screen, point, out) {
316
305
  const px = point.x;
317
306
  const py = point.y;
@@ -319,8 +308,6 @@ export function dipToScreenPoint(screen, point, out) {
319
308
  out.y = (py - screen.y) * screen.scaleFactor;
320
309
  return out;
321
310
  }
322
- // Converts a rectangle from DIP (logical) coordinates to physical screen pixel coordinates relative
323
- // to `screen`'s origin. Alias-safe: `out` may be the same object as `rect`.
324
311
  export function dipToScreenRect(screen, rect, out) {
325
312
  const rx = rect.x;
326
313
  const ry = rect.y;
@@ -333,28 +320,32 @@ export function dipToScreenRect(screen, rect, out) {
333
320
  out.height = rh * sf;
334
321
  return out;
335
322
  }
336
- // Releases `signals` for garbage collection by detaching its backend subscription. The signals
337
- // remain plain GC-managed memory afterward.
338
323
  export function disposeScreenSignals(signals) {
339
324
  detachScreenSignals(signals);
340
325
  }
341
- // Enables a signals group for screen change events. Signals stay inert until attachScreenSignals is
342
- // called. This is the opt-in; the cost is paid when attached.
343
326
  export function enableScreenSignals() {
344
327
  return createScreenSignals();
345
328
  }
346
- // Fills `out` with the primary display and returns it. The web reports one screen; a native host its
347
- // OS-designated primary monitor.
329
+ export function explainScreenBackend() {
330
+ if (_custom !== null) {
331
+ return { conflict: _hostConflict, layer: 'custom', operation: null, viability: 'unobserved' };
332
+ }
333
+ if (_host !== null) {
334
+ return {
335
+ conflict: _hostConflict,
336
+ layer: 'host',
337
+ operation: _hostObservation !== null ? _hostObservation.operation : null,
338
+ viability: _hostObservation !== null ? _hostObservation.viability : 'unobserved',
339
+ };
340
+ }
341
+ return { conflict: false, layer: 'host-not-enabled', operation: null, viability: 'unobserved' };
342
+ }
348
343
  export function getPrimaryScreen(out) {
349
344
  return getScreenBackend().getPrimaryScreen(out);
350
345
  }
351
- // The active screen backend, or a lazily-created web default. There is always a backend.
352
346
  export function getScreenBackend() {
353
- if (_backend === null)
354
- _backend = createWebScreenBackend();
355
- return _backend;
347
+ return _custom ?? _host ?? _sentinel;
356
348
  }
357
- // Fills `out` with the bounds rectangle of the given screen. Convenience accessor over the flat fields.
358
349
  export function getScreenBounds(screen, out) {
359
350
  out.x = screen.x;
360
351
  out.y = screen.y;
@@ -362,7 +353,6 @@ export function getScreenBounds(screen, out) {
362
353
  out.height = screen.height;
363
354
  return out;
364
355
  }
365
- // Returns the screen with the given id, or null when no screen matches. Sentinel null means not found.
366
356
  export function getScreenById(id, out) {
367
357
  const screens = [];
368
358
  getScreens(screens);
@@ -374,8 +364,6 @@ export function getScreenById(id, out) {
374
364
  }
375
365
  return null;
376
366
  }
377
- // Returns the screen whose bounds contain the given rectangle (largest-overlap strategy). Falls back
378
- // to the screen nearest to the rectangle's center when no screen contains it.
379
367
  export function getScreenContainingRect(rect, out) {
380
368
  const screens = [];
381
369
  getScreens(screens);
@@ -394,7 +382,6 @@ export function getScreenContainingRect(rect, out) {
394
382
  bestScreen = screen;
395
383
  }
396
384
  }
397
- // No overlap — fall back to nearest by center distance.
398
385
  if (bestOverlap <= 0) {
399
386
  const cx = rect.x + rect.width / 2;
400
387
  const cy = rect.y + rect.height / 2;
@@ -414,8 +401,6 @@ export function getScreenContainingRect(rect, out) {
414
401
  copyScreenInfo(bestScreen, out);
415
402
  return out;
416
403
  }
417
- // Fills `out` with the current-mode for the given screen (the active resolution/refresh pair).
418
- // Web returns a synthetic single-entry mode derived from ScreenInfo fields.
419
404
  export function getScreenCurrentMode(screen, out) {
420
405
  out.width = screen.width;
421
406
  out.height = screen.height;
@@ -424,22 +409,14 @@ export function getScreenCurrentMode(screen, out) {
424
409
  out.pixelFormat = '';
425
410
  return out;
426
411
  }
427
- // Fills `out` with the current cursor position in virtual-desktop coordinates and returns it.
428
- // Uses the active backend's getCursorPosition. Returns (0, 0) before the first pointermove (web)
429
- // or when unavailable.
430
412
  export function getScreenCursorPosition(out) {
431
413
  return getScreenBackend().getCursorPosition(out);
432
414
  }
433
- // Returns the screen currently containing the cursor. Composites getScreenCursorPosition with
434
- // getScreenNearestPoint.
435
415
  export function getScreenCursorScreen(out) {
436
416
  const pos = _scratchPoint;
437
417
  getScreenCursorPosition(pos);
438
418
  return getScreenNearestPoint(pos, out);
439
419
  }
440
- // Returns the permission state for the Window Management API (multi-monitor on web).
441
- // 'granted' | 'denied' | 'prompt' mirrors the PermissionState vocabulary.
442
- // Returns 'prompt' when the Permissions API is unavailable.
443
420
  export async function getScreenDetailPermission() {
444
421
  if (typeof navigator === 'undefined' || !('permissions' in navigator))
445
422
  return 'prompt';
@@ -453,22 +430,17 @@ export async function getScreenDetailPermission() {
453
430
  return 'prompt';
454
431
  }
455
432
  }
456
- // Fills `out` with all available display modes for the given screen. Web returns a single synthetic
457
- // entry derived from the screen's current fields.
458
433
  export function getScreenModes(screen, out) {
459
434
  const backend = getScreenBackend();
460
435
  if (backend.getModes !== undefined) {
461
436
  return backend.getModes(screen, out);
462
437
  }
463
- // Fallback: a single synthetic mode from the screen's current fields.
464
438
  out.length = 1;
465
439
  if (out[0] === undefined)
466
440
  out[0] = createScreenMode();
467
441
  getScreenCurrentMode(screen, out[0]);
468
442
  return out;
469
443
  }
470
- // Returns the screen whose bounds contain `point` (virtual-desktop coordinates). Falls back to the
471
- // closest screen by Euclidean distance when the point lies outside all screens.
472
444
  export function getScreenNearestPoint(point, out) {
473
445
  const screens = [];
474
446
  getScreens(screens);
@@ -476,7 +448,6 @@ export function getScreenNearestPoint(point, out) {
476
448
  fillDefaultScreenInfo(out);
477
449
  return out;
478
450
  }
479
- // Prefer the screen that contains the point.
480
451
  for (const screen of screens) {
481
452
  if (point.x >= screen.x &&
482
453
  point.x < screen.x + screen.width &&
@@ -486,7 +457,6 @@ export function getScreenNearestPoint(point, out) {
486
457
  return out;
487
458
  }
488
459
  }
489
- // Fall back to the nearest screen by distance from point to screen center.
490
460
  let bestScreen = screens[0];
491
461
  let bestDist = Infinity;
492
462
  for (const screen of screens) {
@@ -503,12 +473,6 @@ export function getScreenNearestPoint(point, out) {
503
473
  copyScreenInfo(bestScreen, out);
504
474
  return out;
505
475
  }
506
- // Returns the screen this rectangle is nearest to. A screen that fully contains the rectangle wins;
507
- // otherwise the screen whose center is closest to the rectangle's center (squared Euclidean distance,
508
- // used only for ordering). This lifts getScreenNearestPoint's contains-else-nearest rule from a point
509
- // to a rectangle, and complements getScreenContainingRect, which instead selects by largest overlap
510
- // area. The two diverge only when a rectangle straddles screens without being contained by any: this
511
- // picks by center proximity, getScreenContainingRect by overlap area.
512
476
  export function getScreenNearestRect(rect, out) {
513
477
  const screens = [];
514
478
  getScreens(screens);
@@ -516,9 +480,6 @@ export function getScreenNearestRect(rect, out) {
516
480
  fillDefaultScreenInfo(out);
517
481
  return out;
518
482
  }
519
- // Prefer a screen that fully contains the rectangle, mirroring getScreenNearestPoint's containment
520
- // preference. This beats center proximity: a rectangle wholly on one screen belongs to that screen
521
- // even when a differently-sized neighbor's center happens to sit closer.
522
483
  for (const screen of screens) {
523
484
  if (rect.x >= screen.x &&
524
485
  rect.y >= screen.y &&
@@ -528,7 +489,6 @@ export function getScreenNearestRect(rect, out) {
528
489
  return out;
529
490
  }
530
491
  }
531
- // Fall back to the screen whose center is closest to the rectangle's center.
532
492
  const cx = rect.x + rect.width / 2;
533
493
  const cy = rect.y + rect.height / 2;
534
494
  let bestScreen = screens[0];
@@ -547,12 +507,9 @@ export function getScreenNearestRect(rect, out) {
547
507
  copyScreenInfo(bestScreen, out);
548
508
  return out;
549
509
  }
550
- // Fills `out` with every attached display and returns it. out.length is set to the screen count;
551
- // missing slots are allocated. On the web this is a single screen; an empty array when no window.
552
510
  export function getScreens(out) {
553
511
  return getScreenBackend().getScreens(out);
554
512
  }
555
- // Fills `out` with the work-area rectangle of the given screen (excluding OS chrome).
556
513
  export function getScreenWorkArea(screen, out) {
557
514
  out.x = screen.x;
558
515
  out.y = screen.y;
@@ -560,17 +517,23 @@ export function getScreenWorkArea(screen, out) {
560
517
  out.height = screen.workHeight;
561
518
  return out;
562
519
  }
563
- // Subscribes to display change events via the active backend; returns an unsubscribe.
564
- // Each event carries the affected ScreenInfo and the ScreenChangeKind, plus changedMetrics for
565
- // ScreenMetricsChanged events.
520
+ export function installScreenHostBackend(backend) {
521
+ if (_host !== null) {
522
+ if (_host !== backend)
523
+ _hostConflict = true;
524
+ return;
525
+ }
526
+ _host = backend;
527
+ }
528
+ export function observeScreenHostResult(operation, succeeded) {
529
+ _hostObservation = {
530
+ operation,
531
+ viability: succeeded ? 'available' : 'runtime-api-unavailable',
532
+ };
533
+ }
566
534
  export function onScreenChange(listener) {
567
535
  return getScreenBackend().subscribe(listener);
568
536
  }
569
- // Watches the Window Management permission for later grant/revoke and invokes `listener` with the
570
- // new state on each change. Backed by the Permissions API PermissionStatus change event, so it
571
- // reflects a grant/revoke made outside this call (browser UI, another tab) without polling.
572
- // Returns a no-op unsubscribe when the Permissions API is unavailable (SSR, jsdom, non-Chromium)
573
- // or the query rejects — matching getScreenDetailPermission's sentinel discipline.
574
537
  export function onScreenDetailPermissionChange(listener) {
575
538
  if (typeof navigator === 'undefined' || !('permissions' in navigator))
576
539
  return () => { };
@@ -594,43 +557,16 @@ export function onScreenDetailPermissionChange(listener) {
594
557
  status?.removeEventListener('change', handleChange);
595
558
  };
596
559
  }
597
- // Invalidates the backend's cached enumeration so the next getScreens / getPrimaryScreen call reads
598
- // fresh data. Call after a known reconfiguration (e.g. when the backend fires a change event but
599
- // the application needs to force-refresh before the next natural poll).
600
- export function refreshScreens() {
601
- // The web backend re-reads window.screen on every call; no explicit invalidation needed.
602
- // Native backends should override this via the backend seam if they cache internally.
603
- // This function is a hook: calling it is always safe.
604
- }
605
- // Requests the Window Management permission and, if granted, upgrades the active web backend to
606
- // expose all attached screens via the Screen Details API. Returns true when permission is granted
607
- // and the multi-monitor view is active. Returns false in environments where the API is unavailable
608
- // (SSR, jsdom, non-Chromium browsers) or when the user denies the request.
609
- //
610
- // After this returns true, getScreens() enumerates from ScreenDetails.screens and refreshRate is
611
- // populated from ScreenDetailed.refreshRate. The active backend must be the web backend (created by
612
- // createWebScreenBackend); calling this when a native host backend is installed is a no-op (native
613
- // backends provide multi-monitor natively without a permission grant).
614
- export async function requestScreenDetails() {
615
- if (typeof window === 'undefined')
616
- return false;
617
- const win = window;
618
- if (typeof win.getScreenDetails !== 'function')
619
- return false;
620
- try {
621
- const details = await win.getScreenDetails();
622
- // Upgrade the active backend if it is a web backend (has the internal _upgrade hook).
623
- const b = getScreenBackend();
624
- b._upgrade?.(details);
625
- return true;
626
- }
627
- catch {
628
- return false;
629
- }
560
+ export function refreshScreens() { }
561
+ export function requestScreenDetails() {
562
+ return _requestScreenDetails();
563
+ }
564
+ export function resetScreenBackendForTest() {
565
+ _custom = null;
566
+ _host = null;
567
+ _hostConflict = false;
568
+ _hostObservation = null;
630
569
  }
631
- // Converts a point from physical screen pixel coordinates (relative to `screen`'s origin) to DIP
632
- // (logical) coordinates. Alias-safe: `out` may be the same object as `point`.
633
- // dipX = point.x / screen.scaleFactor + screen.x
634
570
  export function screenToDipPoint(screen, point, out) {
635
571
  const px = point.x;
636
572
  const py = point.y;
@@ -638,8 +574,6 @@ export function screenToDipPoint(screen, point, out) {
638
574
  out.y = py / screen.scaleFactor + screen.y;
639
575
  return out;
640
576
  }
641
- // Converts a rectangle from physical screen pixel coordinates to DIP (logical) coordinates.
642
- // Alias-safe: `out` may be the same object as `rect`.
643
577
  export function screenToDipRect(screen, rect, out) {
644
578
  const rx = rect.x;
645
579
  const ry = rect.y;
@@ -652,14 +586,15 @@ export function screenToDipRect(screen, rect, out) {
652
586
  out.height = rh / sf;
653
587
  return out;
654
588
  }
655
- // Installs a native host screen backend; pass null to fall back to the web default.
656
589
  export function setScreenBackend(backend) {
657
- _backend = backend;
590
+ _custom = backend;
658
591
  }
659
- let _backend = null;
592
+ let _custom = null;
593
+ let _host = null;
594
+ let _hostConflict = false;
595
+ let _hostObservation = null;
660
596
  const _signalSubscriptions = new WeakMap();
661
597
  const _scratchPoint = { x: 0, y: 0 };
662
- // Copies all fields from src to dst.
663
598
  function copyScreenInfo(src, dst) {
664
599
  dst.id = src.id;
665
600
  dst.x = src.x;
@@ -687,21 +622,6 @@ function copyScreenInfo(src, dst) {
687
622
  dst.touchSupport = src.touchSupport;
688
623
  dst.monochrome = src.monochrome;
689
624
  }
690
- // Returns a ScreenChangedMetrics diff between two ScreenInfo snapshots, or null when nothing changed.
691
- function diffScreenInfo(prev, curr) {
692
- const boundsChanged = prev.x !== curr.x || prev.y !== curr.y || prev.width !== curr.width || prev.height !== curr.height;
693
- const workAreaChanged = prev.workWidth !== curr.workWidth || prev.workHeight !== curr.workHeight;
694
- const scaleChanged = prev.scaleFactor !== curr.scaleFactor;
695
- const orientationChanged = prev.rotation !== curr.rotation || prev.orientation !== curr.orientation;
696
- if (!boundsChanged && !workAreaChanged && !scaleChanged && !orientationChanged)
697
- return null;
698
- return {
699
- bounds: boundsChanged,
700
- workArea: workAreaChanged,
701
- scaleFactor: scaleChanged,
702
- orientation: orientationChanged,
703
- };
704
- }
705
625
  function fillDefaultScreenInfo(out) {
706
626
  out.id = 0;
707
627
  out.x = 0;
@@ -729,6 +649,21 @@ function fillDefaultScreenInfo(out) {
729
649
  out.touchSupport = 'unknown';
730
650
  out.monochrome = false;
731
651
  }
652
+ // Returns a ScreenChangedMetrics diff between two ScreenInfo snapshots, or null when nothing changed.
653
+ function diffScreenInfo(prev, curr) {
654
+ const boundsChanged = prev.x !== curr.x || prev.y !== curr.y || prev.width !== curr.width || prev.height !== curr.height;
655
+ const workAreaChanged = prev.workWidth !== curr.workWidth || prev.workHeight !== curr.workHeight;
656
+ const scaleChanged = prev.scaleFactor !== curr.scaleFactor;
657
+ const orientationChanged = prev.rotation !== curr.rotation || prev.orientation !== curr.orientation;
658
+ if (!boundsChanged && !workAreaChanged && !scaleChanged && !orientationChanged)
659
+ return null;
660
+ return {
661
+ bounds: boundsChanged,
662
+ workArea: workAreaChanged,
663
+ scaleFactor: scaleChanged,
664
+ orientation: orientationChanged,
665
+ };
666
+ }
732
667
  function getWebColorSpace() {
733
668
  if (typeof window === 'undefined' || typeof window.matchMedia !== 'function')
734
669
  return 'srgb';
@@ -767,4 +702,42 @@ function getWebScreenOrientationObject() {
767
702
  const s = window.screen;
768
703
  return s.orientation ?? null;
769
704
  }
705
+ async function _requestScreenDetails() {
706
+ if (typeof window === 'undefined')
707
+ return false;
708
+ const win = window;
709
+ if (typeof win.getScreenDetails !== 'function')
710
+ return false;
711
+ try {
712
+ const details = await win.getScreenDetails();
713
+ const b = getScreenBackend();
714
+ b._upgrade?.(details);
715
+ return true;
716
+ }
717
+ catch {
718
+ return false;
719
+ }
720
+ }
721
+ const _sentinel = {
722
+ getScreens(out) {
723
+ out.length = 0;
724
+ return out;
725
+ },
726
+ getPrimaryScreen(out) {
727
+ fillDefaultScreenInfo(out);
728
+ return out;
729
+ },
730
+ subscribe() {
731
+ return () => { };
732
+ },
733
+ getCursorPosition(out) {
734
+ out.x = 0;
735
+ out.y = 0;
736
+ return out;
737
+ },
738
+ getModes(_screen, out) {
739
+ out.length = 0;
740
+ return out;
741
+ },
742
+ };
770
743
  //# sourceMappingURL=screen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"screen.js","sourceRoot":"","sources":["../src/screen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screen.js","sourceRoot":"","sources":["../src/screen.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/screen",
3
- "version": "0.4.0-next.1898.266773a",
3
+ "version": "0.4.0-next.1908.751021c",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,8 +38,8 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/signals": "0.4.0-next.1898.266773a",
42
- "@flighthq/types": "0.4.0-next.1898.266773a"
41
+ "@flighthq/signals": "0.4.0-next.1908.751021c",
42
+ "@flighthq/types": "0.4.0-next.1908.751021c"
43
43
  },
44
44
  "devDependencies": {
45
45
  "typescript": "^5.3.0"
@@ -32,6 +32,10 @@ import {
32
32
  screenToDipPoint,
33
33
  screenToDipRect,
34
34
  setScreenBackend,
35
+ explainScreenBackend,
36
+ installScreenHostBackend,
37
+ observeScreenHostResult,
38
+ resetScreenBackendForTest,
35
39
  } from './screen';
36
40
  function makeScreenInfo(overrides: Partial<ScreenInfo> = {}): ScreenInfo {
37
41
  return { ...createScreenInfo(), ...overrides };
@@ -447,6 +451,33 @@ describe('enableScreenSignals', () => {
447
451
  expect(signals.onScreenRemoved).toBeDefined();
448
452
  });
449
453
  });
454
+ describe('explainScreenBackend', () => {
455
+ afterEach(() => resetScreenBackendForTest());
456
+
457
+ it('reports host-not-enabled when no backend is installed', () => {
458
+ resetScreenBackendForTest();
459
+ const explanation = explainScreenBackend();
460
+ expect(explanation.layer).toBe('host-not-enabled');
461
+ expect(explanation.conflict).toBe(false);
462
+ expect(explanation.viability).toBe('unobserved');
463
+ });
464
+
465
+ it('reports custom layer when a custom backend is set', () => {
466
+ setScreenBackend(fakeBackend([]));
467
+ expect(explainScreenBackend().layer).toBe('custom');
468
+ });
469
+
470
+ it('reports host layer when a host backend is installed', () => {
471
+ installScreenHostBackend(fakeBackend([]));
472
+ expect(explainScreenBackend().layer).toBe('host');
473
+ });
474
+
475
+ it('reports conflict when two different host backends are installed', () => {
476
+ installScreenHostBackend(fakeBackend([]));
477
+ installScreenHostBackend(fakeBackend([]));
478
+ expect(explainScreenBackend().conflict).toBe(true);
479
+ });
480
+ });
450
481
  describe('getPrimaryScreen', () => {
451
482
  it('fills and returns the passed out object', () => {
452
483
  setScreenBackend(fakeBackend([{ width: 1920, isPrimary: true }]));
@@ -729,6 +760,41 @@ describe('getScreenWorkArea', () => {
729
760
  expect(out.height).toBe(1040);
730
761
  });
731
762
  });
763
+ describe('installScreenHostBackend', () => {
764
+ afterEach(() => resetScreenBackendForTest());
765
+
766
+ it('installs a host backend that getScreenBackend returns', () => {
767
+ const backend = fakeBackend([]);
768
+ installScreenHostBackend(backend);
769
+ expect(getScreenBackend()).toBe(backend);
770
+ });
771
+
772
+ it('is first-host-wins: a second different backend sets conflict', () => {
773
+ const first = fakeBackend([]);
774
+ const second = fakeBackend([]);
775
+ installScreenHostBackend(first);
776
+ installScreenHostBackend(second);
777
+ expect(getScreenBackend()).toBe(first);
778
+ expect(explainScreenBackend().conflict).toBe(true);
779
+ });
780
+ });
781
+ describe('observeScreenHostResult', () => {
782
+ afterEach(() => resetScreenBackendForTest());
783
+
784
+ it('records a successful observation', () => {
785
+ installScreenHostBackend(fakeBackend([]));
786
+ observeScreenHostResult('getScreens', true);
787
+ const explanation = explainScreenBackend();
788
+ expect(explanation.operation).toBe('getScreens');
789
+ expect(explanation.viability).toBe('available');
790
+ });
791
+
792
+ it('records a failed observation', () => {
793
+ installScreenHostBackend(fakeBackend([]));
794
+ observeScreenHostResult('getScreens', false);
795
+ expect(explainScreenBackend().viability).toBe('runtime-api-unavailable');
796
+ });
797
+ });
732
798
  describe('onScreenChange', () => {
733
799
  it('delivers change events to the listener and unsubscribes', () => {
734
800
  const backend = fakeBackend([{}]);
@@ -891,6 +957,19 @@ describe('requestScreenDetails', () => {
891
957
  }
892
958
  });
893
959
  });
960
+
961
+ describe('resetScreenBackendForTest', () => {
962
+ it('clears all backend slots', () => {
963
+ setScreenBackend(fakeBackend([]));
964
+ installScreenHostBackend(fakeBackend([]));
965
+ observeScreenHostResult('getScreens', true);
966
+ resetScreenBackendForTest();
967
+ expect(explainScreenBackend().layer).toBe('host-not-enabled');
968
+ expect(explainScreenBackend().conflict).toBe(false);
969
+ expect(explainScreenBackend().viability).toBe('unobserved');
970
+ });
971
+ });
972
+
894
973
  describe('screenToDipPoint', () => {
895
974
  it('converts physical pixels to DIP', () => {
896
975
  const screen = makeScreenInfo({ x: 0, y: 0, scaleFactor: 2 });
@@ -927,6 +1006,7 @@ describe('screenToDipPoint', () => {
927
1006
  expect(recovered.y).toBeCloseTo(original.y);
928
1007
  });
929
1008
  });
1009
+
930
1010
  describe('screenToDipRect', () => {
931
1011
  it('scales the rect back to DIP', () => {
932
1012
  const screen = makeScreenInfo({ x: 0, y: 0, scaleFactor: 2 });
@@ -961,6 +1041,7 @@ describe('screenToDipRect', () => {
961
1041
  expect(recovered.height).toBeCloseTo(original.height);
962
1042
  });
963
1043
  });
1044
+
964
1045
  describe('setScreenBackend', () => {
965
1046
  it('clears back to the web fallback when passed null', () => {
966
1047
  setScreenBackend(fakeBackend([{}]));