@angular-helpers/browser-web-apis 21.11.0 → 21.12.1

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.
@@ -221,10 +221,10 @@ class BrowserCapabilityService {
221
221
  return 'unknown';
222
222
  }
223
223
  }
224
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: BrowserCapabilityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
225
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: BrowserCapabilityService, providedIn: 'root' });
224
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: BrowserCapabilityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
225
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: BrowserCapabilityService, providedIn: 'root' });
226
226
  }
227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: BrowserCapabilityService, decorators: [{
227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: BrowserCapabilityService, decorators: [{
228
228
  type: Injectable,
229
229
  args: [{ providedIn: 'root' }]
230
230
  }] });
@@ -314,10 +314,10 @@ class BrowserApiBaseService {
314
314
  logDebug(message) {
315
315
  this.logger.debug?.(`[${this.getApiName()}] ${message}`);
316
316
  }
317
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: BrowserApiBaseService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
318
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: BrowserApiBaseService });
317
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: BrowserApiBaseService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
318
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: BrowserApiBaseService });
319
319
  }
320
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: BrowserApiBaseService, decorators: [{
320
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: BrowserApiBaseService, decorators: [{
321
321
  type: Injectable
322
322
  }] });
323
323
 
@@ -346,10 +346,10 @@ class PermissionsService extends BrowserApiBaseService {
346
346
  getCapabilityId() {
347
347
  return 'permissions';
348
348
  }
349
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: PermissionsService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
350
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: PermissionsService });
349
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: PermissionsService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
350
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: PermissionsService });
351
351
  }
352
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: PermissionsService, decorators: [{
352
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: PermissionsService, decorators: [{
353
353
  type: Injectable
354
354
  }] });
355
355
 
@@ -469,10 +469,10 @@ class CameraService extends BrowserApiBaseService {
469
469
  this.ensureSupported();
470
470
  return navigator.mediaDevices;
471
471
  }
472
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CameraService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
473
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CameraService });
472
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: CameraService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
473
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: CameraService });
474
474
  }
475
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CameraService, decorators: [{
475
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: CameraService, decorators: [{
476
476
  type: Injectable
477
477
  }] });
478
478
 
@@ -512,10 +512,10 @@ class GeolocationService extends BrowserApiBaseService {
512
512
  this.ensureSupported();
513
513
  return navigator.geolocation;
514
514
  }
515
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: GeolocationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
516
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: GeolocationService });
515
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: GeolocationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
516
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: GeolocationService });
517
517
  }
518
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: GeolocationService, decorators: [{
518
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: GeolocationService, decorators: [{
519
519
  type: Injectable
520
520
  }] });
521
521
 
@@ -643,10 +643,10 @@ class MediaDevicesService extends BrowserApiBaseService {
643
643
  this.ensureSupported();
644
644
  return navigator.mediaDevices;
645
645
  }
646
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MediaDevicesService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
647
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MediaDevicesService });
646
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: MediaDevicesService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
647
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: MediaDevicesService });
648
648
  }
649
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MediaDevicesService, decorators: [{
649
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: MediaDevicesService, decorators: [{
650
650
  type: Injectable
651
651
  }] });
652
652
 
@@ -680,10 +680,10 @@ class NotificationService extends BrowserApiBaseService {
680
680
  throw error;
681
681
  }
682
682
  }
683
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NotificationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
684
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NotificationService });
683
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: NotificationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
684
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: NotificationService });
685
685
  }
686
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NotificationService, decorators: [{
686
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: NotificationService, decorators: [{
687
687
  type: Injectable
688
688
  }] });
689
689
 
@@ -720,10 +720,10 @@ class ClipboardService extends BrowserApiBaseService {
720
720
  throw error;
721
721
  }
722
722
  }
723
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ClipboardService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
724
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ClipboardService });
723
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ClipboardService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
724
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ClipboardService });
725
725
  }
726
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ClipboardService, decorators: [{
726
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ClipboardService, decorators: [{
727
727
  type: Injectable
728
728
  }] });
729
729
 
@@ -802,10 +802,10 @@ class BatteryService extends BrowserApiBaseService {
802
802
  getDischargingTime() {
803
803
  return this.getBatteryInfo().dischargingTime;
804
804
  }
805
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: BatteryService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
806
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: BatteryService });
805
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: BatteryService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
806
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: BatteryService });
807
807
  }
808
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: BatteryService, decorators: [{
808
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: BatteryService, decorators: [{
809
809
  type: Injectable
810
810
  }] });
811
811
 
@@ -843,10 +843,10 @@ class WebShareService extends BrowserApiBaseService {
843
843
  this.ensureSupported();
844
844
  return navigator.share;
845
845
  }
846
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebShareService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
847
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebShareService });
846
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebShareService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
847
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebShareService });
848
848
  }
849
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebShareService, decorators: [{
849
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebShareService, decorators: [{
850
850
  type: Injectable
851
851
  }] });
852
852
 
@@ -1051,19 +1051,22 @@ let legacyDeprecationLogged$1 = false;
1051
1051
  class WebStorageService extends BrowserApiBaseService {
1052
1052
  storageLogger = inject(BROWSER_API_LOGGER);
1053
1053
  storageEvents = signal(null, ...(ngDevMode ? [{ debugName: "storageEvents" }] : /* istanbul ignore next */ []));
1054
- eventBus = {
1055
- emit: (event) => this.storageEvents.set(event),
1056
- events$: toObservable(this.storageEvents).pipe(filter((event) => event !== null), distinctUntilChanged((a, b) => a.key === b.key &&
1057
- a.newValue === b.newValue &&
1058
- a.oldValue === b.oldValue &&
1059
- a.storageArea === b.storageArea)),
1060
- };
1054
+ eventBus;
1061
1055
  /** Local storage namespace. */
1062
- local = new StorageNamespaceImpl('localStorage', this.eventBus, this.storageLogger);
1056
+ local;
1063
1057
  /** Session storage namespace. */
1064
- session = new StorageNamespaceImpl('sessionStorage', this.eventBus, this.storageLogger);
1058
+ session;
1065
1059
  constructor() {
1066
1060
  super();
1061
+ this.eventBus = {
1062
+ emit: (event) => this.storageEvents.set(event),
1063
+ events$: toObservable(this.storageEvents).pipe(filter((event) => event !== null), distinctUntilChanged((a, b) => a.key === b.key &&
1064
+ a.newValue === b.newValue &&
1065
+ a.oldValue === b.oldValue &&
1066
+ a.storageArea === b.storageArea)),
1067
+ };
1068
+ this.local = new StorageNamespaceImpl('localStorage', this.eventBus, this.storageLogger);
1069
+ this.session = new StorageNamespaceImpl('sessionStorage', this.eventBus, this.storageLogger);
1067
1070
  this.setupCrossTabListener();
1068
1071
  }
1069
1072
  getApiName() {
@@ -1182,10 +1185,10 @@ class WebStorageService extends BrowserApiBaseService {
1182
1185
  'deprecated. Use storage.local and storage.session namespaces. Legacy methods will be ' +
1183
1186
  'removed in v22.');
1184
1187
  }
1185
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1186
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebStorageService });
1188
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1189
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebStorageService });
1187
1190
  }
1188
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebStorageService, decorators: [{
1191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebStorageService, decorators: [{
1189
1192
  type: Injectable
1190
1193
  }], ctorParameters: () => [] });
1191
1194
 
@@ -1605,10 +1608,10 @@ class WebSocketService extends BrowserApiBaseService {
1605
1608
  'which returns a WebSocketClient with a status signal, request/response, and proper reconnect. ' +
1606
1609
  'The legacy API will be removed in v22.');
1607
1610
  }
1608
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebSocketService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
1609
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebSocketService });
1611
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebSocketService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
1612
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebSocketService });
1610
1613
  }
1611
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebSocketService, decorators: [{
1614
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebSocketService, decorators: [{
1612
1615
  type: Injectable
1613
1616
  }] });
1614
1617
  /**
@@ -1707,6 +1710,8 @@ class WebWorkerService extends BrowserApiBaseService {
1707
1710
  this.entries.delete(name);
1708
1711
  }
1709
1712
  terminateAllWorkers() {
1713
+ // Snapshot keys before mutating the map inside terminateWorker.
1714
+ // oxlint-disable-next-line unicorn/no-useless-spread
1710
1715
  for (const name of [...this.entries.keys()]) {
1711
1716
  this.terminateWorker(name);
1712
1717
  }
@@ -1887,10 +1892,10 @@ class WebWorkerService extends BrowserApiBaseService {
1887
1892
  }
1888
1893
  return `msg-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;
1889
1894
  }
1890
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebWorkerService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
1891
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebWorkerService });
1895
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebWorkerService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
1896
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebWorkerService });
1892
1897
  }
1893
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebWorkerService, decorators: [{
1898
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebWorkerService, decorators: [{
1894
1899
  type: Injectable
1895
1900
  }] });
1896
1901
 
@@ -1940,10 +1945,10 @@ class IntersectionObserverService extends BrowserApiBaseService {
1940
1945
  }
1941
1946
  return intersectionObserverStream(element, options);
1942
1947
  }
1943
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: IntersectionObserverService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
1944
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: IntersectionObserverService });
1948
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: IntersectionObserverService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
1949
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: IntersectionObserverService });
1945
1950
  }
1946
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: IntersectionObserverService, decorators: [{
1951
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: IntersectionObserverService, decorators: [{
1947
1952
  type: Injectable
1948
1953
  }] });
1949
1954
 
@@ -2000,10 +2005,10 @@ class ResizeObserverService extends BrowserApiBaseService {
2000
2005
  }
2001
2006
  return resizeObserverStream(element, options);
2002
2007
  }
2003
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ResizeObserverService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2004
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ResizeObserverService });
2008
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ResizeObserverService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2009
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ResizeObserverService });
2005
2010
  }
2006
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ResizeObserverService, decorators: [{
2011
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ResizeObserverService, decorators: [{
2007
2012
  type: Injectable
2008
2013
  }] });
2009
2014
 
@@ -2045,10 +2050,10 @@ class PageVisibilityService extends BrowserApiBaseService {
2045
2050
  watchVisibility() {
2046
2051
  return pageVisibilityStream().pipe(map$1((s) => s === 'visible'));
2047
2052
  }
2048
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: PageVisibilityService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2049
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: PageVisibilityService });
2053
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: PageVisibilityService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2054
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: PageVisibilityService });
2050
2055
  }
2051
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: PageVisibilityService, decorators: [{
2056
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: PageVisibilityService, decorators: [{
2052
2057
  type: Injectable
2053
2058
  }] });
2054
2059
 
@@ -2089,10 +2094,10 @@ class ConnectionRegistryBaseService extends BrowserApiBaseService {
2089
2094
  getConnectionKeys() {
2090
2095
  return Array.from(this.connections.keys());
2091
2096
  }
2092
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ConnectionRegistryBaseService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2093
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ConnectionRegistryBaseService });
2097
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ConnectionRegistryBaseService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2098
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ConnectionRegistryBaseService });
2094
2099
  }
2095
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ConnectionRegistryBaseService, decorators: [{
2100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ConnectionRegistryBaseService, decorators: [{
2096
2101
  type: Injectable
2097
2102
  }] });
2098
2103
 
@@ -2116,17 +2121,17 @@ class BroadcastChannelService extends ConnectionRegistryBaseService {
2116
2121
  if (!channel) {
2117
2122
  channel = new BroadcastChannel(name);
2118
2123
  this.connections.set(name, channel);
2124
+ // Register cleanup once per channel, not per subscription.
2125
+ this.destroyRef.onDestroy(() => this.close(name));
2119
2126
  }
2120
2127
  const handler = (event) => observer.next(event.data);
2121
2128
  const errorHandler = () => observer.error(new Error(`BroadcastChannel "${name}" error`));
2122
2129
  channel.addEventListener('message', handler);
2123
2130
  channel.addEventListener('messageerror', errorHandler);
2124
- const cleanup = () => {
2131
+ return () => {
2125
2132
  channel.removeEventListener('message', handler);
2126
2133
  channel.removeEventListener('messageerror', errorHandler);
2127
2134
  };
2128
- this.destroyRef.onDestroy(() => this.close(name));
2129
- return cleanup;
2130
2135
  });
2131
2136
  }
2132
2137
  post(name, data) {
@@ -2135,6 +2140,7 @@ class BroadcastChannelService extends ConnectionRegistryBaseService {
2135
2140
  if (!channel) {
2136
2141
  channel = new BroadcastChannel(name);
2137
2142
  this.connections.set(name, channel);
2143
+ // Register cleanup once per channel creation.
2138
2144
  this.destroyRef.onDestroy(() => this.close(name));
2139
2145
  }
2140
2146
  channel.postMessage(data);
@@ -2148,10 +2154,10 @@ class BroadcastChannelService extends ConnectionRegistryBaseService {
2148
2154
  getOpenChannels() {
2149
2155
  return this.getConnectionKeys();
2150
2156
  }
2151
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: BroadcastChannelService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2152
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: BroadcastChannelService });
2157
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: BroadcastChannelService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2158
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: BroadcastChannelService });
2153
2159
  }
2154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: BroadcastChannelService, decorators: [{
2160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: BroadcastChannelService, decorators: [{
2155
2161
  type: Injectable
2156
2162
  }] });
2157
2163
 
@@ -2216,15 +2222,16 @@ class NetworkInformationService extends BrowserApiBaseService {
2216
2222
  get isOnline() {
2217
2223
  return this.isBrowserEnvironment() ? navigator.onLine : true;
2218
2224
  }
2219
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NetworkInformationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2220
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NetworkInformationService });
2225
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: NetworkInformationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2226
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: NetworkInformationService });
2221
2227
  }
2222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: NetworkInformationService, decorators: [{
2228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: NetworkInformationService, decorators: [{
2223
2229
  type: Injectable
2224
2230
  }] });
2225
2231
 
2226
2232
  class ScreenWakeLockService extends BrowserApiBaseService {
2227
2233
  sentinel = null;
2234
+ releaseRegistered = false;
2228
2235
  getApiName() {
2229
2236
  return 'screen-wake-lock';
2230
2237
  }
@@ -2246,7 +2253,11 @@ class ScreenWakeLockService extends BrowserApiBaseService {
2246
2253
  this.sentinel.addEventListener('release', () => {
2247
2254
  this.sentinel = null;
2248
2255
  });
2249
- this.destroyRef.onDestroy(() => this.release());
2256
+ // Register the destroy cleanup only once across multiple request() calls.
2257
+ if (!this.releaseRegistered) {
2258
+ this.releaseRegistered = true;
2259
+ this.destroyRef.onDestroy(() => this.release());
2260
+ }
2250
2261
  return { active: true, type, released: false };
2251
2262
  }
2252
2263
  catch (error) {
@@ -2283,15 +2294,13 @@ class ScreenWakeLockService extends BrowserApiBaseService {
2283
2294
  };
2284
2295
  document.addEventListener('visibilitychange', handleVisibilityChange);
2285
2296
  emit();
2286
- const cleanup = () => document.removeEventListener('visibilitychange', handleVisibilityChange);
2287
- this.destroyRef.onDestroy(cleanup);
2288
- return cleanup;
2297
+ return () => document.removeEventListener('visibilitychange', handleVisibilityChange);
2289
2298
  });
2290
2299
  }
2291
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScreenWakeLockService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2292
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScreenWakeLockService });
2300
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ScreenWakeLockService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2301
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ScreenWakeLockService });
2293
2302
  }
2294
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScreenWakeLockService, decorators: [{
2303
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ScreenWakeLockService, decorators: [{
2295
2304
  type: Injectable
2296
2305
  }] });
2297
2306
 
@@ -2357,10 +2366,10 @@ class ScreenOrientationService extends BrowserApiBaseService {
2357
2366
  screen.orientation.unlock();
2358
2367
  }
2359
2368
  }
2360
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScreenOrientationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2361
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScreenOrientationService });
2369
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ScreenOrientationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2370
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ScreenOrientationService });
2362
2371
  }
2363
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScreenOrientationService, decorators: [{
2372
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ScreenOrientationService, decorators: [{
2364
2373
  type: Injectable
2365
2374
  }] });
2366
2375
 
@@ -2445,18 +2454,16 @@ class FullscreenService extends BrowserApiBaseService {
2445
2454
  document.addEventListener('fullscreenchange', handler);
2446
2455
  document.addEventListener('webkitfullscreenchange', handler);
2447
2456
  observer.next(this.isFullscreen);
2448
- const cleanup = () => {
2457
+ return () => {
2449
2458
  document.removeEventListener('fullscreenchange', handler);
2450
2459
  document.removeEventListener('webkitfullscreenchange', handler);
2451
2460
  };
2452
- this.destroyRef.onDestroy(cleanup);
2453
- return cleanup;
2454
2461
  });
2455
2462
  }
2456
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: FullscreenService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2457
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: FullscreenService });
2463
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: FullscreenService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2464
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: FullscreenService });
2458
2465
  }
2459
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: FullscreenService, decorators: [{
2466
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: FullscreenService, decorators: [{
2460
2467
  type: Injectable
2461
2468
  }] });
2462
2469
 
@@ -2535,10 +2542,10 @@ class FileSystemAccessService extends BrowserApiBaseService {
2535
2542
  async readFileAsArrayBuffer(file) {
2536
2543
  return file.arrayBuffer();
2537
2544
  }
2538
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: FileSystemAccessService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2539
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: FileSystemAccessService });
2545
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: FileSystemAccessService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2546
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: FileSystemAccessService });
2540
2547
  }
2541
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: FileSystemAccessService, decorators: [{
2548
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: FileSystemAccessService, decorators: [{
2542
2549
  type: Injectable
2543
2550
  }] });
2544
2551
 
@@ -2628,10 +2635,10 @@ class MediaRecorderService extends BrowserApiBaseService {
2628
2635
  const duration = Date.now() - this.startTime;
2629
2636
  return { blob, url, mimeType, duration };
2630
2637
  }
2631
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MediaRecorderService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2632
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MediaRecorderService });
2638
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: MediaRecorderService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2639
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: MediaRecorderService });
2633
2640
  }
2634
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MediaRecorderService, decorators: [{
2641
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: MediaRecorderService, decorators: [{
2635
2642
  type: Injectable
2636
2643
  }] });
2637
2644
 
@@ -2686,11 +2693,9 @@ class ServerSentEventsService extends ConnectionRegistryBaseService {
2686
2693
  source.addEventListener(type, messageHandler);
2687
2694
  }
2688
2695
  }
2689
- const cleanup = () => {
2696
+ return () => {
2690
2697
  this.disconnect(url);
2691
2698
  };
2692
- this.destroyRef.onDestroy(cleanup);
2693
- return cleanup;
2694
2699
  });
2695
2700
  }
2696
2701
  disconnect(url) {
@@ -2709,10 +2714,10 @@ class ServerSentEventsService extends ConnectionRegistryBaseService {
2709
2714
  getActiveConnections() {
2710
2715
  return this.getConnectionKeys();
2711
2716
  }
2712
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ServerSentEventsService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2713
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ServerSentEventsService });
2717
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ServerSentEventsService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2718
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ServerSentEventsService });
2714
2719
  }
2715
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ServerSentEventsService, decorators: [{
2720
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: ServerSentEventsService, decorators: [{
2716
2721
  type: Injectable
2717
2722
  }] });
2718
2723
 
@@ -2749,10 +2754,10 @@ class VibrationService extends BrowserApiBaseService {
2749
2754
  stop() {
2750
2755
  return this.vibrate(0);
2751
2756
  }
2752
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: VibrationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2753
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: VibrationService });
2757
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: VibrationService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2758
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: VibrationService });
2754
2759
  }
2755
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: VibrationService, decorators: [{
2760
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: VibrationService, decorators: [{
2756
2761
  type: Injectable
2757
2762
  }] });
2758
2763
 
@@ -2793,9 +2798,7 @@ class SpeechSynthesisService extends BrowserApiBaseService {
2793
2798
  const emit = () => observer.next(speechSynthesis.getVoices());
2794
2799
  speechSynthesis.addEventListener('voiceschanged', emit);
2795
2800
  emit();
2796
- const cleanup = () => speechSynthesis.removeEventListener('voiceschanged', emit);
2797
- this.destroyRef.onDestroy(cleanup);
2798
- return cleanup;
2801
+ return () => speechSynthesis.removeEventListener('voiceschanged', emit);
2799
2802
  });
2800
2803
  }
2801
2804
  speak(text, options = {}) {
@@ -2824,12 +2827,19 @@ class SpeechSynthesisService extends BrowserApiBaseService {
2824
2827
  };
2825
2828
  observer.next('speaking');
2826
2829
  speechSynthesis.speak(utterance);
2827
- const cleanup = () => {
2830
+ let completed = false;
2831
+ const origOnEnd = utterance.onend;
2832
+ utterance.onend = (ev) => {
2833
+ completed = true;
2834
+ origOnEnd?.call(utterance, ev);
2835
+ };
2836
+ return () => {
2828
2837
  speechSynthesis.cancel();
2829
- observer.next('idle');
2838
+ // Only emit idle if the Observable hasn't already completed via onend/onerror.
2839
+ if (!completed) {
2840
+ observer.next('idle');
2841
+ }
2830
2842
  };
2831
- this.destroyRef.onDestroy(cleanup);
2832
- return cleanup;
2833
2843
  });
2834
2844
  }
2835
2845
  pause() {
@@ -2844,10 +2854,10 @@ class SpeechSynthesisService extends BrowserApiBaseService {
2844
2854
  if (this.isSupported())
2845
2855
  speechSynthesis.cancel();
2846
2856
  }
2847
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SpeechSynthesisService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2848
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SpeechSynthesisService });
2857
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: SpeechSynthesisService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2858
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: SpeechSynthesisService });
2849
2859
  }
2850
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SpeechSynthesisService, decorators: [{
2860
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: SpeechSynthesisService, decorators: [{
2851
2861
  type: Injectable
2852
2862
  }] });
2853
2863
 
@@ -2883,10 +2893,10 @@ class MutationObserverService extends BrowserApiBaseService {
2883
2893
  }
2884
2894
  return mutationObserverStream(target, options);
2885
2895
  }
2886
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MutationObserverService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2887
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MutationObserverService });
2896
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: MutationObserverService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2897
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: MutationObserverService });
2888
2898
  }
2889
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MutationObserverService, decorators: [{
2899
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: MutationObserverService, decorators: [{
2890
2900
  type: Injectable
2891
2901
  }] });
2892
2902
 
@@ -2929,10 +2939,10 @@ class PerformanceObserverService extends BrowserApiBaseService {
2929
2939
  return [];
2930
2940
  return (PerformanceObserver.supportedEntryTypes ?? []);
2931
2941
  }
2932
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: PerformanceObserverService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2933
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: PerformanceObserverService });
2942
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: PerformanceObserverService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2943
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: PerformanceObserverService });
2934
2944
  }
2935
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: PerformanceObserverService, decorators: [{
2945
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: PerformanceObserverService, decorators: [{
2936
2946
  type: Injectable
2937
2947
  }] });
2938
2948
 
@@ -2941,6 +2951,7 @@ class WebAudioService extends BrowserApiBaseService {
2941
2951
  return 'web-audio';
2942
2952
  }
2943
2953
  context = null;
2954
+ destroyRegistered = false;
2944
2955
  getCapabilityId() {
2945
2956
  return 'webAudio';
2946
2957
  }
@@ -2950,7 +2961,10 @@ class WebAudioService extends BrowserApiBaseService {
2950
2961
  }
2951
2962
  if (!this.context || this.context.state === 'closed') {
2952
2963
  this.context = new AudioContext();
2953
- this.destroyRef.onDestroy(() => this.close());
2964
+ if (!this.destroyRegistered) {
2965
+ this.destroyRegistered = true;
2966
+ this.destroyRef.onDestroy(() => this.close());
2967
+ }
2954
2968
  }
2955
2969
  return this.context;
2956
2970
  }
@@ -3016,10 +3030,10 @@ class WebAudioService extends BrowserApiBaseService {
3016
3030
  source.start(0);
3017
3031
  return source;
3018
3032
  }
3019
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebAudioService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
3020
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebAudioService });
3033
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebAudioService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
3034
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebAudioService });
3021
3035
  }
3022
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebAudioService, decorators: [{
3036
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebAudioService, decorators: [{
3023
3037
  type: Injectable
3024
3038
  }] });
3025
3039
 
@@ -3138,10 +3152,128 @@ class GamepadService extends BrowserApiBaseService {
3138
3152
  }
3139
3153
  return gamepadPollStream(index, intervalMs);
3140
3154
  }
3141
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: GamepadService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
3142
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: GamepadService });
3155
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: GamepadService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
3156
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: GamepadService });
3143
3157
  }
3144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: GamepadService, decorators: [{
3158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: GamepadService, decorators: [{
3159
+ type: Injectable
3160
+ }] });
3161
+
3162
+ class EyeDropperService extends BrowserApiBaseService {
3163
+ getApiName() {
3164
+ return 'eye-dropper';
3165
+ }
3166
+ getCapabilityId() {
3167
+ return 'eyeDropper';
3168
+ }
3169
+ /** Override to also assert secure context (required by the spec). */
3170
+ isSupported() {
3171
+ return (super.isSupported() &&
3172
+ typeof window !== 'undefined' &&
3173
+ 'EyeDropper' in window &&
3174
+ window.isSecureContext);
3175
+ }
3176
+ ensureSupported() {
3177
+ super.ensureSupported();
3178
+ if (!window.isSecureContext) {
3179
+ throw new Error('EyeDropper API requires a secure context (HTTPS)');
3180
+ }
3181
+ }
3182
+ /**
3183
+ * Opens the system eye dropper tool and returns the selected color.
3184
+ *
3185
+ * @param options Optional configuration including an AbortSignal to cancel the dropper.
3186
+ * @returns A promise that resolves with the selected color in sRGB Hex format (e.g., "#000000").
3187
+ * @throws DOMException if the user cancels the selection (AbortError).
3188
+ */
3189
+ async open(options) {
3190
+ this.ensureSupported();
3191
+ const EyeDropperClass = window.EyeDropper;
3192
+ if (!EyeDropperClass) {
3193
+ throw new Error('EyeDropper is not supported in this browser.');
3194
+ }
3195
+ const eyeDropper = new EyeDropperClass();
3196
+ return eyeDropper.open(options);
3197
+ }
3198
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: EyeDropperService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
3199
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: EyeDropperService, providedIn: 'root' });
3200
+ }
3201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: EyeDropperService, decorators: [{
3202
+ type: Injectable,
3203
+ args: [{
3204
+ providedIn: 'root',
3205
+ }]
3206
+ }] });
3207
+
3208
+ class IdleDetectorService extends BrowserApiBaseService {
3209
+ getApiName() {
3210
+ return 'idle-detector';
3211
+ }
3212
+ getCapabilityId() {
3213
+ return 'idleDetector';
3214
+ }
3215
+ isSupported() {
3216
+ return (super.isSupported() &&
3217
+ typeof window !== 'undefined' &&
3218
+ 'IdleDetector' in window &&
3219
+ window.isSecureContext);
3220
+ }
3221
+ ensureSupported() {
3222
+ super.ensureSupported();
3223
+ if (!window.isSecureContext) {
3224
+ throw new Error('IdleDetector API requires a secure context (HTTPS)');
3225
+ }
3226
+ }
3227
+ async requestPermission() {
3228
+ this.ensureSupported();
3229
+ const IdleDetectorClass = window.IdleDetector;
3230
+ return IdleDetectorClass.requestPermission();
3231
+ }
3232
+ /**
3233
+ * Starts tracking idle state. Emits the current state and subsequent changes.
3234
+ * Note: You must call requestPermission() and be granted access before starting.
3235
+ *
3236
+ * @param options Configuration for the idle detector, including the threshold (minimum 60000ms).
3237
+ * @returns An Observable of the IdleState.
3238
+ */
3239
+ watch(options) {
3240
+ return new Observable((observer) => {
3241
+ this.ensureSupported();
3242
+ const IdleDetectorClass = window.IdleDetector;
3243
+ const detector = new IdleDetectorClass();
3244
+ const emit = () => {
3245
+ observer.next({
3246
+ userState: detector.userState,
3247
+ screenState: detector.screenState,
3248
+ });
3249
+ };
3250
+ detector.addEventListener('change', emit);
3251
+ // We use a custom AbortController if one wasn't provided,
3252
+ // so we can abort the detector when the observable is unsubscribed.
3253
+ const abortController = new AbortController();
3254
+ const signal = options.signal || abortController.signal;
3255
+ const combinedOptions = { ...options, signal };
3256
+ // Stop tracking if an external signal aborts
3257
+ if (options.signal) {
3258
+ options.signal.addEventListener('abort', () => {
3259
+ observer.complete();
3260
+ }, { once: true });
3261
+ }
3262
+ detector.start(combinedOptions).catch((err) => {
3263
+ observer.error(err);
3264
+ });
3265
+ return () => {
3266
+ detector.removeEventListener('change', emit);
3267
+ if (!signal.aborted) {
3268
+ abortController.abort();
3269
+ }
3270
+ };
3271
+ });
3272
+ }
3273
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: IdleDetectorService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
3274
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: IdleDetectorService });
3275
+ }
3276
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: IdleDetectorService, decorators: [{
3145
3277
  type: Injectable
3146
3278
  }] });
3147
3279
 
@@ -3191,10 +3323,10 @@ class WebLocksService extends BrowserApiBaseService {
3191
3323
  throw new Error('Web Locks API not supported in this browser');
3192
3324
  }
3193
3325
  }
3194
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebLocksService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
3195
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebLocksService });
3326
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebLocksService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
3327
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebLocksService });
3196
3328
  }
3197
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: WebLocksService, decorators: [{
3329
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: WebLocksService, decorators: [{
3198
3330
  type: Injectable
3199
3331
  }] });
3200
3332
 
@@ -3245,10 +3377,10 @@ class StorageManagerService extends BrowserApiBaseService {
3245
3377
  throw new Error('StorageManager API not supported in this browser');
3246
3378
  }
3247
3379
  }
3248
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: StorageManagerService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
3249
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: StorageManagerService });
3380
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: StorageManagerService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
3381
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: StorageManagerService });
3250
3382
  }
3251
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: StorageManagerService, decorators: [{
3383
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: StorageManagerService, decorators: [{
3252
3384
  type: Injectable
3253
3385
  }] });
3254
3386
 
@@ -3325,10 +3457,10 @@ class CompressionService extends BrowserApiBaseService {
3325
3457
  }
3326
3458
  return result;
3327
3459
  }
3328
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CompressionService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
3329
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CompressionService });
3460
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: CompressionService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
3461
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: CompressionService });
3330
3462
  }
3331
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CompressionService, decorators: [{
3463
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: CompressionService, decorators: [{
3332
3464
  type: Injectable
3333
3465
  }] });
3334
3466
 
@@ -3738,6 +3870,9 @@ function injectWakeLock() {
3738
3870
  let sentinel = null;
3739
3871
  let disposed = false;
3740
3872
  const onRelease = () => {
3873
+ if (sentinel) {
3874
+ sentinel.removeEventListener('release', onRelease);
3875
+ }
3741
3876
  if (!disposed)
3742
3877
  active.set(false);
3743
3878
  sentinel = null;
@@ -3777,8 +3912,11 @@ function injectWakeLock() {
3777
3912
  };
3778
3913
  destroyRef.onDestroy(() => {
3779
3914
  disposed = true;
3780
- if (sentinel && !sentinel.released) {
3781
- void sentinel.release();
3915
+ if (sentinel) {
3916
+ sentinel.removeEventListener('release', onRelease);
3917
+ if (!sentinel.released) {
3918
+ void sentinel.release();
3919
+ }
3782
3920
  }
3783
3921
  sentinel = null;
3784
3922
  });
@@ -3791,6 +3929,153 @@ function injectWakeLock() {
3791
3929
  };
3792
3930
  }
3793
3931
 
3932
+ function injectEyeDropper() {
3933
+ const platformId = inject(PLATFORM_ID);
3934
+ const isBrowser = isPlatformBrowser(platformId);
3935
+ const hasDropper = isBrowser && typeof window !== 'undefined' && 'EyeDropper' in window;
3936
+ const supported = signal(hasDropper && window.isSecureContext, ...(ngDevMode ? [{ debugName: "supported" }] : /* istanbul ignore next */ []));
3937
+ const color = signal(null, ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
3938
+ const error = signal(null, ...(ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []));
3939
+ const isOpening = signal(false, ...(ngDevMode ? [{ debugName: "isOpening" }] : /* istanbul ignore next */ []));
3940
+ const open = async (options) => {
3941
+ if (!supported()) {
3942
+ error.set(new Error('EyeDropper API is not supported in this environment'));
3943
+ return null;
3944
+ }
3945
+ const EyeDropperClass = window.EyeDropper;
3946
+ const dropper = new EyeDropperClass();
3947
+ isOpening.set(true);
3948
+ error.set(null);
3949
+ try {
3950
+ const result = await dropper.open(options);
3951
+ color.set(result.sRGBHex);
3952
+ return result;
3953
+ }
3954
+ catch (e) {
3955
+ if (e instanceof DOMException && e.name === 'AbortError') {
3956
+ // User canceled, not an error
3957
+ return null;
3958
+ }
3959
+ const err = e instanceof Error ? e : new Error(String(e));
3960
+ error.set(err);
3961
+ return null;
3962
+ }
3963
+ finally {
3964
+ isOpening.set(false);
3965
+ }
3966
+ };
3967
+ return {
3968
+ isSupported: supported.asReadonly(),
3969
+ color: color.asReadonly(),
3970
+ error: error.asReadonly(),
3971
+ isOpening: isOpening.asReadonly(),
3972
+ open,
3973
+ };
3974
+ }
3975
+
3976
+ function injectIdleDetector() {
3977
+ const platformId = inject(PLATFORM_ID);
3978
+ const destroyRef = inject(DestroyRef);
3979
+ const isBrowser = isPlatformBrowser(platformId);
3980
+ const hasDetector = isBrowser && typeof window !== 'undefined' && 'IdleDetector' in window;
3981
+ const supported = signal(hasDetector && window.isSecureContext, ...(ngDevMode ? [{ debugName: "supported" }] : /* istanbul ignore next */ []));
3982
+ const state = signal(null, ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
3983
+ const error = signal(null, ...(ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []));
3984
+ const isTracking = signal(false, ...(ngDevMode ? [{ debugName: "isTracking" }] : /* istanbul ignore next */ []));
3985
+ let detector = null;
3986
+ let abortController = null;
3987
+ let disposed = false;
3988
+ const onStateChange = () => {
3989
+ if (disposed || !detector)
3990
+ return;
3991
+ state.set({
3992
+ userState: detector.userState,
3993
+ screenState: detector.screenState,
3994
+ });
3995
+ };
3996
+ const stop = () => {
3997
+ if (detector) {
3998
+ detector.removeEventListener('change', onStateChange);
3999
+ }
4000
+ if (abortController) {
4001
+ abortController.abort();
4002
+ abortController = null;
4003
+ }
4004
+ detector = null;
4005
+ if (!disposed) {
4006
+ isTracking.set(false);
4007
+ }
4008
+ };
4009
+ destroyRef.onDestroy(() => {
4010
+ disposed = true;
4011
+ stop();
4012
+ });
4013
+ const requestPermission = async () => {
4014
+ if (!supported())
4015
+ return 'denied';
4016
+ const IdleDetectorClass = window.IdleDetector;
4017
+ return IdleDetectorClass.requestPermission();
4018
+ };
4019
+ const start = async (options) => {
4020
+ if (!supported() || disposed) {
4021
+ error.set(new Error('IdleDetector API is not supported in this environment'));
4022
+ return;
4023
+ }
4024
+ stop();
4025
+ error.set(null);
4026
+ const IdleDetectorClass = window.IdleDetector;
4027
+ detector = new IdleDetectorClass();
4028
+ abortController = new AbortController();
4029
+ const combinedSignal = options.signal
4030
+ ? abortSignalAny([options.signal, abortController.signal])
4031
+ : abortController.signal;
4032
+ detector.addEventListener('change', onStateChange);
4033
+ try {
4034
+ await detector.start({ ...options, signal: combinedSignal });
4035
+ if (!disposed) {
4036
+ isTracking.set(true);
4037
+ // Initial state emit
4038
+ onStateChange();
4039
+ }
4040
+ }
4041
+ catch (e) {
4042
+ stop();
4043
+ if (!disposed) {
4044
+ if (e instanceof DOMException && e.name === 'AbortError') {
4045
+ // Expected when stopped manually
4046
+ return;
4047
+ }
4048
+ error.set(e instanceof Error ? e : new Error(String(e)));
4049
+ }
4050
+ }
4051
+ };
4052
+ // Helper to combine abort signals since AbortSignal.any is relatively new
4053
+ function abortSignalAny(signals) {
4054
+ if (typeof AbortSignal !== 'undefined' && 'any' in AbortSignal) {
4055
+ return AbortSignal.any(signals);
4056
+ }
4057
+ const controller = new AbortController();
4058
+ for (const s of signals) {
4059
+ if (s.aborted) {
4060
+ controller.abort(s.reason);
4061
+ return controller.signal;
4062
+ }
4063
+ s.addEventListener('abort', () => controller.abort(s.reason), { once: true });
4064
+ }
4065
+ return controller.signal;
4066
+ }
4067
+ return {
4068
+ isSupported: supported.asReadonly(),
4069
+ state: state.asReadonly(),
4070
+ error: error.asReadonly(),
4071
+ isTracking: isTracking.asReadonly(),
4072
+ isIdle: computed(() => state()?.userState === 'idle'),
4073
+ start,
4074
+ stop,
4075
+ requestPermission,
4076
+ };
4077
+ }
4078
+
3794
4079
  class BrowserSupportUtil {
3795
4080
  static isSupported(feature) {
3796
4081
  if (typeof window === 'undefined' || typeof navigator === 'undefined') {
@@ -3896,6 +4181,7 @@ const permissionGuard = (permission) => {
3896
4181
  return true;
3897
4182
  }
3898
4183
  catch (error) {
4184
+ // oxlint-disable-next-line no-console -- guard errors must surface to DevTools; no injectable logger here
3899
4185
  console.error('Permission guard error:', error);
3900
4186
  router.navigate(['/permission-denied'], {
3901
4187
  queryParams: { permission },
@@ -4029,6 +4315,14 @@ function provideCompression() {
4029
4315
  return makeEnvironmentProviders([CompressionService]);
4030
4316
  }
4031
4317
 
4318
+ function provideEyeDropper() {
4319
+ return makeEnvironmentProviders([EyeDropperService, PermissionsService]);
4320
+ }
4321
+
4322
+ function provideIdleDetector() {
4323
+ return makeEnvironmentProviders([IdleDetectorService, PermissionsService]);
4324
+ }
4325
+
4032
4326
  function provideMediaApis() {
4033
4327
  return makeEnvironmentProviders([PermissionsService, CameraService, MediaDevicesService]);
4034
4328
  }
@@ -4075,6 +4369,8 @@ const defaultBrowserWebApisConfig = {
4075
4369
  enablePerformanceObserver: false,
4076
4370
  enableWebAudio: false,
4077
4371
  enableGamepad: false,
4372
+ enableEyeDropper: false,
4373
+ enableIdleDetector: false,
4078
4374
  };
4079
4375
  let legacyFlagsDeprecationLogged = false;
4080
4376
  function provideBrowserWebApis(config = {}) {
@@ -4131,6 +4427,8 @@ function provideBrowserWebApis(config = {}) {
4131
4427
  [mergedConfig.enablePerformanceObserver, PerformanceObserverService],
4132
4428
  [mergedConfig.enableWebAudio, WebAudioService],
4133
4429
  [mergedConfig.enableGamepad, GamepadService],
4430
+ [mergedConfig.enableEyeDropper, EyeDropperService],
4431
+ [mergedConfig.enableIdleDetector, IdleDetectorService],
4134
4432
  ];
4135
4433
  for (const [enabled, provider] of conditionalProviders) {
4136
4434
  if (enabled) {
@@ -4148,4 +4446,4 @@ const version = '0.1.0';
4148
4446
  * Generated bundle index. Do not edit.
4149
4447
  */
4150
4448
 
4151
- export { BROWSER_API_EXPERIMENTAL_SILENT, BROWSER_API_LOGGER, BROWSER_API_LOG_LEVEL, BatteryService, BroadcastChannelService, BrowserApiBaseService, BrowserCapabilityService, BrowserSupportUtil, CameraService, ClipboardService, CompressionService, ConnectionRegistryBaseService, FileSystemAccessService, FullscreenService, GamepadService, GeolocationService, IntersectionObserverService, MediaDevicesService, MediaRecorderService, MutationObserverService, NetworkInformationService, NotificationService, PageVisibilityService, PerformanceObserverService, PermissionsService, ResizeObserverService, ScreenOrientationService, ScreenWakeLockService, ServerSentEventsService, SpeechSynthesisService, StorageManagerService, VibrationService, WebAudioService, WebLocksService, WebShareService, WebSocketClient, WebSocketService, WebStorageService, WebWorkerService, permissionGuard as createPermissionGuard, defaultBrowserWebApisConfig, injectBattery, injectClipboard, injectGamepad, injectGeolocation, injectIntersectionObserver, injectMutationObserver, injectNetworkInformation, injectPageVisibility, injectPerformanceObserver, injectResizeObserver, injectScreenOrientation, injectWakeLock, permissionGuard, provideBattery, provideBroadcastChannel, provideBrowserApiLogLevel, provideBrowserWebApis, provideCamera, provideClipboard, provideCommunicationApis, provideCompression, provideFileSystemAccess, provideFullscreen, provideGamepad, provideGeolocation, provideIntersectionObserver, provideLocationApis, provideMediaApis, provideMediaDevices, provideMediaRecorder, provideMutationObserver, provideNetworkInformation, provideNotifications, providePageVisibility, providePerformanceObserver, providePermissions, provideResizeObserver, provideScreenOrientation, provideScreenWakeLock, provideServerSentEvents, provideSpeechSynthesis, provideStorageApis, provideStorageManager, provideVibration, provideWebAudio, provideWebLocks, provideWebShare, provideWebSocket, provideWebStorage, provideWebWorker, version, warnExperimental };
4449
+ export { BROWSER_API_EXPERIMENTAL_SILENT, BROWSER_API_LOGGER, BROWSER_API_LOG_LEVEL, BatteryService, BroadcastChannelService, BrowserApiBaseService, BrowserCapabilityService, BrowserSupportUtil, CameraService, ClipboardService, CompressionService, ConnectionRegistryBaseService, EyeDropperService, FileSystemAccessService, FullscreenService, GamepadService, GeolocationService, IdleDetectorService, IntersectionObserverService, MediaDevicesService, MediaRecorderService, MutationObserverService, NetworkInformationService, NotificationService, PageVisibilityService, PerformanceObserverService, PermissionsService, ResizeObserverService, ScreenOrientationService, ScreenWakeLockService, ServerSentEventsService, SpeechSynthesisService, StorageManagerService, VibrationService, WebAudioService, WebLocksService, WebShareService, WebSocketClient, WebSocketService, WebStorageService, WebWorkerService, permissionGuard as createPermissionGuard, defaultBrowserWebApisConfig, injectBattery, injectClipboard, injectEyeDropper, injectGamepad, injectGeolocation, injectIdleDetector, injectIntersectionObserver, injectMutationObserver, injectNetworkInformation, injectPageVisibility, injectPerformanceObserver, injectResizeObserver, injectScreenOrientation, injectWakeLock, permissionGuard, provideBattery, provideBroadcastChannel, provideBrowserApiLogLevel, provideBrowserWebApis, provideCamera, provideClipboard, provideCommunicationApis, provideCompression, provideEyeDropper, provideFileSystemAccess, provideFullscreen, provideGamepad, provideGeolocation, provideIdleDetector, provideIntersectionObserver, provideLocationApis, provideMediaApis, provideMediaDevices, provideMediaRecorder, provideMutationObserver, provideNetworkInformation, provideNotifications, providePageVisibility, providePerformanceObserver, providePermissions, provideResizeObserver, provideScreenOrientation, provideScreenWakeLock, provideServerSentEvents, provideSpeechSynthesis, provideStorageApis, provideStorageManager, provideVibration, provideWebAudio, provideWebLocks, provideWebShare, provideWebSocket, provideWebStorage, provideWebWorker, version, warnExperimental };