@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.
|
|
225
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
318
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
350
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
473
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
516
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
647
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
684
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
724
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
806
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
847
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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
|
|
1056
|
+
local;
|
|
1063
1057
|
/** Session storage namespace. */
|
|
1064
|
-
session
|
|
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.
|
|
1186
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
1609
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
1891
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
1944
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
2004
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
2049
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
2093
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
2152
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
2220
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
2292
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
2361
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
2457
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
2539
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
2632
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
2713
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
2753
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
2848
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
2887
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
2933
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
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.
|
|
3020
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
3142
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
3195
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
3249
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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.
|
|
3329
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
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.
|
|
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
|
|
3781
|
-
|
|
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 };
|