diff --git a/angular.json b/angular.json index fe0759b..1c0e340 100644 --- a/angular.json +++ b/angular.json @@ -46,7 +46,10 @@ "maximumError": "4kb" } ], - "outputHashing": "all" + "outputHashing": "all", + "optimization": { + "fonts": false + } }, "development": { "optimization": false, diff --git a/docs/classes/AppPage.html b/docs/classes/AppPage.html index 7e15bb2..618ac0a 100644 --- a/docs/classes/AppPage.html +++ b/docs/classes/AppPage.html @@ -14,7 +14,7 @@
-BluetoothRemoteGATTServer
+ Type : BluetoothRemoteGATTServer | null
null
+ literal type
+
+ {
@@ -540,9 +544,9 @@
export class FakeBluetoothDevice {
- gatt: BluetoothRemoteGATTServer;
+ gatt: BluetoothRemoteGATTServer | null = null;
private listeners: {
- [key in 'gattserverdisconnected']: EventListener[]
+ [key: string]: EventListener[]
} = {
gattserverdisconnected: []
};
@@ -559,12 +563,12 @@
disconnect() {
const mockedEvent = {target: this} as unknown;
- this.listeners.gattserverdisconnected.forEach(listener => listener(mockedEvent as Event));
+ this.listeners['gattserverdisconnected'].forEach(listener => listener(mockedEvent as Event));
}
clear() {
- this.id = undefined;
- this.name = undefined;
+ this.id = "";
+ this.name = "";
this.listeners = {
gattserverdisconnected: []
};
@@ -574,7 +578,7 @@
export class FakeBluetoothRemoteGATTServer {
connected = false;
- constructor(public device, public services: { [key: string]: { service, primary: boolean } }) {
+ constructor(public device: any, public services: { [key: string]: { service: any, primary: boolean } }) {
device.gatt = this;
}
@@ -594,7 +598,7 @@
}
export class FakeBluetoothRemoteGATTService {
- constructor(public device, public characteristics) {
+ constructor(public device: any, public characteristics: any) {
this.characteristics.service = this;
}
@@ -604,11 +608,11 @@
}
export class FakeBluetoothRemoteGATTCharacteristic {
- value: DataView;
+ value: DataView | undefined;
properties: BluetoothCharacteristicProperties;
- private readonly initialValue: DataView;
+ private readonly initialValue: DataView | undefined;
private listeners: {
- [key in 'characteristicvaluechanged']: EventListener[]
+ [key: string]: EventListener[]
} = {
characteristicvaluechanged: []
};
@@ -633,7 +637,7 @@
changeValue(value: DataView) {
this.value = value;
const mockedEvent = {target: this} as unknown;
- this.listeners.characteristicvaluechanged.forEach(listener => listener(mockedEvent as Event));
+ this.listeners['characteristicvaluechanged'].forEach(listener => listener(mockedEvent as Event));
}
clear() {
@@ -685,6 +689,19 @@ No results matching "
+
+
@@ -696,7 +713,6 @@ No results matching "
-
diff --git a/docs/classes/FakeBluetoothRemoteGATTCharacteristic.html b/docs/classes/FakeBluetoothRemoteGATTCharacteristic.html
index f2e4b0f..fa01aec 100644
--- a/docs/classes/FakeBluetoothRemoteGATTCharacteristic.html
+++ b/docs/classes/FakeBluetoothRemoteGATTCharacteristic.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -279,7 +272,7 @@
DataView
+ Type : DataView | undefined
literal type
+
+ {
@@ -359,7 +358,7 @@
DataView
+ Type : DataView | undefined
export class FakeBluetoothDevice {
- gatt: BluetoothRemoteGATTServer;
+ gatt: BluetoothRemoteGATTServer | null = null;
private listeners: {
- [key in 'gattserverdisconnected']: EventListener[]
+ [key: string]: EventListener[]
} = {
gattserverdisconnected: []
};
@@ -629,12 +628,12 @@
disconnect() {
const mockedEvent = {target: this} as unknown;
- this.listeners.gattserverdisconnected.forEach(listener => listener(mockedEvent as Event));
+ this.listeners['gattserverdisconnected'].forEach(listener => listener(mockedEvent as Event));
}
clear() {
- this.id = undefined;
- this.name = undefined;
+ this.id = "";
+ this.name = "";
this.listeners = {
gattserverdisconnected: []
};
@@ -644,7 +643,7 @@
export class FakeBluetoothRemoteGATTServer {
connected = false;
- constructor(public device, public services: { [key: string]: { service, primary: boolean } }) {
+ constructor(public device: any, public services: { [key: string]: { service: any, primary: boolean } }) {
device.gatt = this;
}
@@ -664,7 +663,7 @@
}
export class FakeBluetoothRemoteGATTService {
- constructor(public device, public characteristics) {
+ constructor(public device: any, public characteristics: any) {
this.characteristics.service = this;
}
@@ -674,11 +673,11 @@
}
export class FakeBluetoothRemoteGATTCharacteristic {
- value: DataView;
+ value: DataView | undefined;
properties: BluetoothCharacteristicProperties;
- private readonly initialValue: DataView;
+ private readonly initialValue: DataView | undefined;
private listeners: {
- [key in 'characteristicvaluechanged']: EventListener[]
+ [key: string]: EventListener[]
} = {
characteristicvaluechanged: []
};
@@ -703,7 +702,7 @@
changeValue(value: DataView) {
this.value = value;
const mockedEvent = {target: this} as unknown;
- this.listeners.characteristicvaluechanged.forEach(listener => listener(mockedEvent as Event));
+ this.listeners['characteristicvaluechanged'].forEach(listener => listener(mockedEvent as Event));
}
clear() {
@@ -755,6 +754,19 @@ No results matching "
+
+
@@ -766,7 +778,6 @@ No results matching "
-
diff --git a/docs/classes/FakeBluetoothRemoteGATTServer.html b/docs/classes/FakeBluetoothRemoteGATTServer.html
index 24d945c..db2547a 100644
--- a/docs/classes/FakeBluetoothRemoteGATTServer.html
+++ b/docs/classes/FakeBluetoothRemoteGATTServer.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -197,7 +190,7 @@ Constructor
-constructor(device, services: literal type)
+constructor(device: any, services: literal type)
@@ -223,6 +216,7 @@ Constructor
device
+ any
@@ -293,6 +287,12 @@
+
+
+ Type : any
+
+
+
@@ -488,9 +488,9 @@
export class FakeBluetoothDevice {
- gatt: BluetoothRemoteGATTServer;
+ gatt: BluetoothRemoteGATTServer | null = null;
private listeners: {
- [key in 'gattserverdisconnected']: EventListener[]
+ [key: string]: EventListener[]
} = {
gattserverdisconnected: []
};
@@ -507,12 +507,12 @@
disconnect() {
const mockedEvent = {target: this} as unknown;
- this.listeners.gattserverdisconnected.forEach(listener => listener(mockedEvent as Event));
+ this.listeners['gattserverdisconnected'].forEach(listener => listener(mockedEvent as Event));
}
clear() {
- this.id = undefined;
- this.name = undefined;
+ this.id = "";
+ this.name = "";
this.listeners = {
gattserverdisconnected: []
};
@@ -522,7 +522,7 @@
export class FakeBluetoothRemoteGATTServer {
connected = false;
- constructor(public device, public services: { [key: string]: { service, primary: boolean } }) {
+ constructor(public device: any, public services: { [key: string]: { service: any, primary: boolean } }) {
device.gatt = this;
}
@@ -542,7 +542,7 @@
}
export class FakeBluetoothRemoteGATTService {
- constructor(public device, public characteristics) {
+ constructor(public device: any, public characteristics: any) {
this.characteristics.service = this;
}
@@ -552,11 +552,11 @@
}
export class FakeBluetoothRemoteGATTCharacteristic {
- value: DataView;
+ value: DataView | undefined;
properties: BluetoothCharacteristicProperties;
- private readonly initialValue: DataView;
+ private readonly initialValue: DataView | undefined;
private listeners: {
- [key in 'characteristicvaluechanged']: EventListener[]
+ [key: string]: EventListener[]
} = {
characteristicvaluechanged: []
};
@@ -581,7 +581,7 @@
changeValue(value: DataView) {
this.value = value;
const mockedEvent = {target: this} as unknown;
- this.listeners.characteristicvaluechanged.forEach(listener => listener(mockedEvent as Event));
+ this.listeners['characteristicvaluechanged'].forEach(listener => listener(mockedEvent as Event));
}
clear() {
@@ -633,6 +633,19 @@ No results matching "
+
+
@@ -644,7 +657,6 @@ No results matching "
-
diff --git a/docs/classes/FakeBluetoothRemoteGATTService.html b/docs/classes/FakeBluetoothRemoteGATTService.html
index 1be6b51..9bf0342 100644
--- a/docs/classes/FakeBluetoothRemoteGATTService.html
+++ b/docs/classes/FakeBluetoothRemoteGATTService.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -188,7 +181,7 @@ Constructor
-constructor(device, characteristics)
+constructor(device: any, characteristics: any)
@@ -205,6 +198,7 @@ Constructor
Name
+ Type
Optional
@@ -212,6 +206,9 @@ Constructor
device
+
+ any
+
No
@@ -221,6 +218,9 @@ Constructor
characteristics
+
+ any
+
No
@@ -253,6 +253,12 @@
+
+
+ Type : any
+
+
+
@@ -274,6 +280,12 @@
+
+
+ Type : any
+
+
+
@@ -368,9 +380,9 @@
export class FakeBluetoothDevice {
- gatt: BluetoothRemoteGATTServer;
+ gatt: BluetoothRemoteGATTServer | null = null;
private listeners: {
- [key in 'gattserverdisconnected']: EventListener[]
+ [key: string]: EventListener[]
} = {
gattserverdisconnected: []
};
@@ -387,12 +399,12 @@
disconnect() {
const mockedEvent = {target: this} as unknown;
- this.listeners.gattserverdisconnected.forEach(listener => listener(mockedEvent as Event));
+ this.listeners['gattserverdisconnected'].forEach(listener => listener(mockedEvent as Event));
}
clear() {
- this.id = undefined;
- this.name = undefined;
+ this.id = "";
+ this.name = "";
this.listeners = {
gattserverdisconnected: []
};
@@ -402,7 +414,7 @@
export class FakeBluetoothRemoteGATTServer {
connected = false;
- constructor(public device, public services: { [key: string]: { service, primary: boolean } }) {
+ constructor(public device: any, public services: { [key: string]: { service: any, primary: boolean } }) {
device.gatt = this;
}
@@ -422,7 +434,7 @@
}
export class FakeBluetoothRemoteGATTService {
- constructor(public device, public characteristics) {
+ constructor(public device: any, public characteristics: any) {
this.characteristics.service = this;
}
@@ -432,11 +444,11 @@
}
export class FakeBluetoothRemoteGATTCharacteristic {
- value: DataView;
+ value: DataView | undefined;
properties: BluetoothCharacteristicProperties;
- private readonly initialValue: DataView;
+ private readonly initialValue: DataView | undefined;
private listeners: {
- [key in 'characteristicvaluechanged']: EventListener[]
+ [key: string]: EventListener[]
} = {
characteristicvaluechanged: []
};
@@ -461,7 +473,7 @@
changeValue(value: DataView) {
this.value = value;
const mockedEvent = {target: this} as unknown;
- this.listeners.characteristicvaluechanged.forEach(listener => listener(mockedEvent as Event));
+ this.listeners['characteristicvaluechanged'].forEach(listener => listener(mockedEvent as Event));
}
clear() {
@@ -513,6 +525,19 @@ No results matching "
+
+
@@ -524,7 +549,6 @@ No results matching "
-
diff --git a/docs/components/AppComponent.html b/docs/components/AppComponent.html
index 5d72216..ef46d3f 100644
--- a/docs/components/AppComponent.html
+++ b/docs/components/AppComponent.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -275,6 +268,19 @@ No results matching "
+
+
@@ -286,7 +292,6 @@ No results matching "
-
diff --git a/docs/components/BatteryLevelComponent.html b/docs/components/BatteryLevelComponent.html
index 794b2a1..de91930 100644
--- a/docs/components/BatteryLevelComponent.html
+++ b/docs/components/BatteryLevelComponent.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -1325,6 +1318,19 @@ No results matching "
+
+
@@ -1336,7 +1342,6 @@ No results matching "
-
diff --git a/docs/components/DashboardComponent.html b/docs/components/DashboardComponent.html
index 8e7af58..c0b1e00 100644
--- a/docs/components/DashboardComponent.html
+++ b/docs/components/DashboardComponent.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -491,6 +484,19 @@ No results matching "
+
+
@@ -502,7 +508,6 @@ No results matching "
-
diff --git a/docs/components/HumidityComponent.html b/docs/components/HumidityComponent.html
index c7472e5..ba89fcf 100644
--- a/docs/components/HumidityComponent.html
+++ b/docs/components/HumidityComponent.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -1149,6 +1142,19 @@ No results matching "
+
+
@@ -1160,7 +1166,6 @@ No results matching "
-
diff --git a/docs/components/StepCounterComponent.html b/docs/components/StepCounterComponent.html
index 6fad5a9..cb19b88 100644
--- a/docs/components/StepCounterComponent.html
+++ b/docs/components/StepCounterComponent.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -1042,6 +1035,19 @@ No results matching "
+
+
@@ -1053,7 +1059,6 @@ No results matching "
-
diff --git a/docs/components/TemperatureComponent.html b/docs/components/TemperatureComponent.html
index 0ce1ed6..7a73137 100644
--- a/docs/components/TemperatureComponent.html
+++ b/docs/components/TemperatureComponent.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -1175,6 +1168,19 @@ No results matching "
+
+
@@ -1186,7 +1192,6 @@ No results matching "
-
diff --git a/docs/coverage.html b/docs/coverage.html
index 145df4c..a955fd6 100644
--- a/docs/coverage.html
+++ b/docs/coverage.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -153,7 +146,7 @@
- projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts
+ projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts
function
browserWebBluetooth
@@ -165,7 +158,7 @@
- projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts
+ projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts
function
consoleLoggerServiceConfig
@@ -177,7 +170,7 @@
- projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts
+ projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts
function
makeMeTokenInjector
@@ -201,7 +194,19 @@
- projects/manekinekko/angular-web-bluetooth/src/lib/lang/uuids/ti-sensortag2.ts
+ projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.service.ts
+
+ type alias
+ ReadValueOptions
+
+ 0 %
+ (0/1)
+
+
+
+
+
+ projects/manekinekko/angular-web-bluetooth/src/lib/lang/uuids/ti-sensortag2.ts
variable
TI_SENSORAG_SERVICES
@@ -213,7 +218,7 @@
- projects/manekinekko/angular-web-bluetooth/src/lib/lang/uuids/ti-sensortag2.ts
+ projects/manekinekko/angular-web-bluetooth/src/lib/lang/uuids/ti-sensortag2.ts
variable
TiTag
@@ -354,6 +359,18 @@
(0/9)
+
+
+
+ src/app/ble.service.ts
+
+ type alias
+ ServiceOptions
+
+ 0 %
+ (0/1)
+
+
@@ -381,7 +398,7 @@
- src/app/thingy52/battery-level.component.ts
+ src/app/thingy52/battery-level.component.ts
variable
bleCore
@@ -393,7 +410,7 @@
- src/app/thingy52/battery-level.component.ts
+ src/app/thingy52/battery-level.component.ts
variable
bleService
@@ -405,7 +422,7 @@
- src/app/thingy52/battery-level.component.ts
+ src/app/thingy52/battery-level.component.ts
variable
PROVIDERS
@@ -429,7 +446,7 @@
- src/app/thingy52/humidity.component.ts
+ src/app/thingy52/humidity.component.ts
variable
bleCore
@@ -441,7 +458,7 @@
- src/app/thingy52/humidity.component.ts
+ src/app/thingy52/humidity.component.ts
variable
bleService
@@ -453,7 +470,7 @@
- src/app/thingy52/humidity.component.ts
+ src/app/thingy52/humidity.component.ts
variable
PROVIDERS
@@ -477,7 +494,7 @@
- src/app/thingy52/stepcounter.component.ts
+ src/app/thingy52/stepcounter.component.ts
variable
bleCore
@@ -489,7 +506,7 @@
- src/app/thingy52/stepcounter.component.ts
+ src/app/thingy52/stepcounter.component.ts
variable
bleService
@@ -501,7 +518,7 @@
- src/app/thingy52/stepcounter.component.ts
+ src/app/thingy52/stepcounter.component.ts
variable
PROVIDERS
@@ -525,7 +542,7 @@
- src/app/thingy52/temperature.component.ts
+ src/app/thingy52/temperature.component.ts
variable
bleCore
@@ -537,7 +554,7 @@
- src/app/thingy52/temperature.component.ts
+ src/app/thingy52/temperature.component.ts
variable
bleService
@@ -549,7 +566,7 @@
- src/app/thingy52/temperature.component.ts
+ src/app/thingy52/temperature.component.ts
variable
PROVIDERS
@@ -561,7 +578,7 @@
- src/environments/environment.prod.ts
+ src/environments/environment.prod.ts
variable
environment
@@ -573,7 +590,7 @@
- src/environments/environment.ts
+ src/environments/environment.ts
variable
environment
@@ -621,6 +638,19 @@ No results matching "
+
+
@@ -632,7 +662,6 @@ No results matching "
-
diff --git a/docs/dependencies.html b/docs/dependencies.html
index e3136d6..742dc99 100644
--- a/docs/dependencies.html
+++ b/docs/dependencies.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -128,8 +121,6 @@
@angular/platform-browser-dynamic : ^17.1.3
@angular/router : ^17.1.3
-
- @manekinekko/angular-web-bluetooth : file:../../@manekinekko/angular-web-bluetooth/dist/manekinekko/angular-web-bluetooth
@types/web-bluetooth : 0.0.6
@@ -180,6 +171,19 @@ No results matching "
+
+
@@ -191,7 +195,6 @@ No results matching "
-
diff --git a/docs/index.html b/docs/index.html
index 303149b..436cfe7 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -287,6 +280,19 @@ No results matching "
+
+
@@ -298,7 +304,6 @@ No results matching "
-
diff --git a/docs/injectables/BleService.html b/docs/injectables/BleService.html
index 55d6396..80b0f13 100644
--- a/docs/injectables/BleService.html
+++ b/docs/injectables/BleService.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -626,6 +619,19 @@ No results matching "
+
+
@@ -637,7 +643,6 @@ No results matching "
-
diff --git a/docs/injectables/BluetoothCore.html b/docs/injectables/BluetoothCore.html
index 5896bf9..42ae7b8 100644
--- a/docs/injectables/BluetoothCore.html
+++ b/docs/injectables/BluetoothCore.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -1149,7 +1142,7 @@
- Returns : Observable<BluetoothDevice>
+ Returns : Observable<BluetoothDevice | null>
@@ -2386,7 +2379,7 @@
this.gattServer = null;
}
- getDevice$(): Observable<BluetoothDevice> {
+ getDevice$(): Observable<BluetoothDevice | null> {
return this.device$;
}
@@ -2841,6 +2834,19 @@ No results matching "
+
+
@@ -2852,7 +2858,6 @@ No results matching "
-
diff --git a/docs/injectables/BrowserWebBluetooth.html b/docs/injectables/BrowserWebBluetooth.html
index af40905..567e767 100644
--- a/docs/injectables/BrowserWebBluetooth.html
+++ b/docs/injectables/BrowserWebBluetooth.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -361,6 +354,19 @@ No results matching "
+
+
@@ -372,7 +378,6 @@ No results matching "
-
diff --git a/docs/injectables/ConsoleLoggerService.html b/docs/injectables/ConsoleLoggerService.html
index 7a6f988..85f62f7 100644
--- a/docs/injectables/ConsoleLoggerService.html
+++ b/docs/injectables/ConsoleLoggerService.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -455,6 +448,19 @@ No results matching "
+
+
@@ -466,7 +472,6 @@ No results matching "
-
diff --git a/docs/injectables/NoLoggerService.html b/docs/injectables/NoLoggerService.html
index 4dc5b84..184cb88 100644
--- a/docs/injectables/NoLoggerService.html
+++ b/docs/injectables/NoLoggerService.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -455,6 +448,19 @@ No results matching "
+
+
@@ -466,7 +472,6 @@ No results matching "
-
diff --git a/docs/injectables/ServerWebBluetooth.html b/docs/injectables/ServerWebBluetooth.html
index 2633da9..a65e98e 100644
--- a/docs/injectables/ServerWebBluetooth.html
+++ b/docs/injectables/ServerWebBluetooth.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -266,6 +259,19 @@ No results matching "
+
+
@@ -277,7 +283,6 @@ No results matching "
-
diff --git a/docs/interfaces/AWBOptions.html b/docs/interfaces/AWBOptions.html
index 7d39af6..cce00b7 100644
--- a/docs/interfaces/AWBOptions.html
+++ b/docs/interfaces/AWBOptions.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -303,6 +296,19 @@ No results matching "
+
+
@@ -314,7 +320,6 @@ No results matching "
-
diff --git a/docs/interfaces/Logger.html b/docs/interfaces/Logger.html
index 44d5b79..da9afc4 100644
--- a/docs/interfaces/Logger.html
+++ b/docs/interfaces/Logger.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+
@@ -457,6 +450,19 @@ No results matching "
+
+
@@ -468,7 +474,6 @@ No results matching "
-
diff --git a/docs/js/libs/bootstrap-native.js b/docs/js/libs/bootstrap-native.js
index b315b73..f622037 100644
--- a/docs/js/libs/bootstrap-native.js
+++ b/docs/js/libs/bootstrap-native.js
@@ -1,2 +1,2 @@
-var BSN=function(H){"use strict";var Vc=Object.defineProperty;var Kc=(H,it,ct)=>it in H?Vc(H,it,{enumerable:!0,configurable:!0,writable:!0,value:ct}):H[it]=ct;var d=(H,it,ct)=>(Kc(H,typeof it!="symbol"?it+"":it,ct),ct);const it="aria-describedby",ct="aria-expanded",Se="aria-hidden",He="aria-modal",_s="aria-pressed",Ue="aria-selected",Bo="DOMContentLoaded",qe="focus",Qe="focusin",Bs="focusout",Pe="keydown",Ro="keyup",N="click",Rs="mousedown",Wo="hover",De="mouseenter",Ze="mouseleave",Fo="pointerdown",jo="pointermove",zo="pointerup",xe="resize",Ae="scroll",Ge="touchstart",Vo="dragstart",Je="ArrowDown",ts="ArrowUp",Ws="ArrowLeft",Fs="ArrowRight",es="Escape",Ko="transitionDuration",Xo="transitionDelay",ss="transitionend",js="transitionProperty",Yo=navigator.userAgentData,Le=Yo,{userAgent:Uo}=navigator,Ie=Uo,zs=/iPhone|iPad|iPod|Android/i;Le?Le.brands.some(t=>zs.test(t.brand)):zs.test(Ie);const Vs=/(iPhone|iPod|iPad)/,qo=Le?Le.brands.some(t=>Vs.test(t.brand)):Vs.test(Ie);Ie&&Ie.includes("Firefox");const{head:ke}=document;["webkitPerspective","perspective"].some(t=>t in ke.style);const Qo=(t,s,e,n)=>{const o=n||!1;t.addEventListener(s,e,o)},Zo=(t,s,e,n)=>{const o=n||!1;t.removeEventListener(s,e,o)},Go=(t,s,e,n)=>{const o=i=>{(i.target===t||i.currentTarget===t)&&(e.apply(t,[i]),Zo(t,s,o,n))};Qo(t,s,o,n)},le=()=>{};(()=>{let t=!1;try{const s=Object.defineProperty({},"passive",{get:()=>(t=!0,t)});Go(document,Bo,le,s)}catch{}return t})(),["webkitTransform","transform"].some(t=>t in ke.style),["webkitAnimation","animation"].some(t=>t in ke.style),["webkitTransition","transition"].some(t=>t in ke.style);const at=(t,s)=>t.getAttribute(s),Ne=(t,s)=>t.hasAttribute(s),O=(t,s,e)=>t.setAttribute(s,e),At=(t,s)=>t.removeAttribute(s),f=(t,...s)=>{t.classList.add(...s)},b=(t,...s)=>{t.classList.remove(...s)},h=(t,s)=>t.classList.contains(s),de=t=>t!=null&&typeof t=="object"||!1,A=t=>de(t)&&typeof t.nodeType=="number"&&[1,2,3,4,5,6,7,8,9,10,11].some(s=>t.nodeType===s)||!1,T=t=>A(t)&&t.nodeType===1||!1,jt=new Map,Lt={data:jt,set:(t,s,e)=>{T(t)&&(jt.has(s)||jt.set(s,new Map),jt.get(s).set(t,e))},getAllFor:t=>jt.get(t)||null,get:(t,s)=>{if(!T(t)||!s)return null;const e=Lt.getAllFor(s);return t&&e&&e.get(t)||null},remove:(t,s)=>{const e=Lt.getAllFor(s);!e||!T(t)||(e.delete(t),e.size===0&&jt.delete(s))}},F=(t,s)=>Lt.get(t,s),he=t=>typeof t=="string"||!1,ns=t=>de(t)&&t.constructor.name==="Window"||!1,Ks=t=>A(t)&&t.nodeType===9||!1,E=t=>ns(t)?t.document:Ks(t)?t:A(t)?t.ownerDocument:window.document,dt=(t,...s)=>Object.assign(t,...s),vt=t=>{if(!t)return;if(he(t))return E().createElement(t);const{tagName:s}=t,e=vt(s);if(!e)return;const n={...t};return delete n.tagName,dt(e,n)},w=(t,s)=>t.dispatchEvent(s),z=(t,s)=>{const e=getComputedStyle(t),n=s.replace("webkit","Webkit").replace(/([A-Z])/g,"-$1").toLowerCase();return e.getPropertyValue(n)},Jo=t=>{const s=z(t,js),e=z(t,Xo),n=e.includes("ms")?1:1e3,o=s&&s!=="none"?parseFloat(e)*n:0;return Number.isNaN(o)?0:o},zt=t=>{const s=z(t,js),e=z(t,Ko),n=e.includes("ms")?1:1e3,o=s&&s!=="none"?parseFloat(e)*n:0;return Number.isNaN(o)?0:o},P=(t,s)=>{let e=0;const n=new Event(ss),o=zt(t),i=Jo(t);if(o){const c=a=>{a.target===t&&(s.apply(t,[a]),t.removeEventListener(ss,c),e=1)};t.addEventListener(ss,c),setTimeout(()=>{e||w(t,n)},o+i+17)}else s.apply(t,[n])},ht=(t,s)=>t.focus(s),Xs=t=>["true",!0].includes(t)?!0:["false",!1].includes(t)?!1:["null","",null,void 0].includes(t)?null:t!==""&&!Number.isNaN(+t)?+t:t,Oe=t=>Object.entries(t),Vt=t=>t.toLowerCase(),ti=(t,s,e,n)=>{const o={...e},i={...t.dataset},c={...s},a={},l="title";return Oe(i).forEach(([r,g])=>{const p=n&&typeof r=="string"&&r.includes(n)?r.replace(n,"").replace(/[A-Z]/g,v=>Vt(v)):r;a[p]=Xs(g)}),Oe(o).forEach(([r,g])=>{o[r]=Xs(g)}),Oe(s).forEach(([r,g])=>{r in o?c[r]=o[r]:r in a?c[r]=a[r]:c[r]=r===l?at(t,l):g}),c},Ys=t=>Object.keys(t),$=(t,s)=>{const e=new CustomEvent(t,{cancelable:!0,bubbles:!0});return de(s)&&dt(e,s),e},tt={passive:!0},It=t=>t.offsetHeight,L=(t,s)=>{Oe(s).forEach(([e,n])=>{if(n&&he(e)&&e.includes("--"))t.style.setProperty(e,n);else{const o={};o[e]=n,dt(t.style,o)}})},os=t=>de(t)&&t.constructor.name==="Map"||!1,ei=t=>typeof t=="number"||!1,bt=new Map,u={set:(t,s,e,n)=>{T(t)&&(n&&n.length?(bt.has(t)||bt.set(t,new Map),bt.get(t).set(n,setTimeout(s,e))):bt.set(t,setTimeout(s,e)))},get:(t,s)=>{if(!T(t))return null;const e=bt.get(t);return s&&e&&os(e)?e.get(s)||null:ei(e)?e:null},clear:(t,s)=>{if(!T(t))return;const e=bt.get(t);s&&s.length&&os(e)?(clearTimeout(e.get(s)),e.delete(s),e.size===0&&bt.delete(t)):(clearTimeout(e),bt.delete(t))}},fe=(t,s)=>{const{width:e,height:n,top:o,right:i,bottom:c,left:a}=t.getBoundingClientRect();let l=1,r=1;if(s&&T(t)){const{offsetWidth:g,offsetHeight:p}=t;l=g>0?Math.round(e)/g:1,r=p>0?Math.round(n)/p:1}return{width:e/l,height:n/r,top:o/r,right:i/l,bottom:c/r,left:a/l,x:a/l,y:o/r}},wt=t=>E(t).body,ft=t=>E(t).documentElement,Us=t=>A(t)&&t.constructor.name==="ShadowRoot"||!1,si=t=>t.nodeName==="HTML"?t:T(t)&&t.assignedSlot||A(t)&&t.parentNode||Us(t)&&t.host||ft(t);let qs=0,Qs=0;const Kt=new Map,Zs=(t,s)=>{let e=s?qs:Qs;if(s){const n=Zs(t),o=Kt.get(n)||new Map;Kt.has(n)||Kt.set(n,o),os(o)&&!o.has(s)?(o.set(s,e),qs+=1):e=o.get(s)}else{const n=t.id||t;Kt.has(n)?e=Kt.get(n):(Kt.set(n,e),Qs+=1)}return e},Xt=t=>{var s;return t?Ks(t)?t.defaultView:A(t)?(s=t==null?void 0:t.ownerDocument)==null?void 0:s.defaultView:t:window},ni=t=>Array.isArray(t)||!1,Gs=t=>{if(!A(t))return!1;const{top:s,bottom:e}=fe(t),{clientHeight:n}=ft(t);return s<=n&&e>=0},oi=t=>typeof t=="function"||!1,ii=t=>de(t)&&t.constructor.name==="NodeList"||!1,Et=t=>ft(t).dir==="rtl",ci=t=>A(t)&&["TABLE","TD","TH"].includes(t.nodeName)||!1,M=(t,s)=>t?t.closest(s)||M(t.getRootNode().host,s):null,D=(t,s)=>T(t)?t:(A(s)?s:E()).querySelector(t),is=(t,s)=>(A(s)?s:E()).getElementsByTagName(t),et=(t,s)=>(A(s)?s:E()).querySelectorAll(t),gt=(t,s)=>(s&&A(s)?s:E()).getElementsByClassName(t),Js=(t,s)=>t.matches(s),Yt={},tn=t=>{const{type:s,currentTarget:e}=t;[...Yt[s]].forEach(([n,o])=>{e===n&&[...o].forEach(([i,c])=>{i.apply(n,[t]),typeof c=="object"&&c.once&&B(n,s,i,c)})})},_=(t,s,e,n)=>{Yt[s]||(Yt[s]=new Map);const o=Yt[s];o.has(t)||o.set(t,new Map);const i=o.get(t),{size:c}=i;i.set(e,n),c||t.addEventListener(s,tn,n)},B=(t,s,e,n)=>{const o=Yt[s],i=o&&o.get(t),c=i&&i.get(e),a=c!==void 0?c:n;i&&i.has(e)&&i.delete(e),o&&(!i||!i.size)&&o.delete(t),(!o||!o.size)&&delete Yt[s],(!i||!i.size)&&t.removeEventListener(s,tn,a)},W="fade",m="show",Me="data-bs-dismiss",_e="alert",en="Alert",ai="5.0.10";class st{constructor(s,e){d(this,"_toggleEventListeners",()=>{});const n=D(s);if(!n)throw he(s)?Error(`${this.name} Error: "${s}" is not a valid selector.`):Error(`${this.name} Error: your target is not an instance of HTMLElement.`);const o=Lt.get(n,this.name);o&&o._toggleEventListeners(),this.element=n,this.options=this.defaults&&Ys(this.defaults).length?ti(n,this.defaults,e||{},"bs"):{},Lt.set(n,this.name,this)}get version(){return ai}get name(){return"BaseComponent"}get defaults(){return{}}dispose(){Lt.remove(this.element,this.name),Ys(this).forEach(s=>{delete this[s]})}}const ri=`.${_e}`,li=`[${Me}="${_e}"]`,di=t=>F(t,en),hi=t=>new Ut(t),sn=$(`close.bs.${_e}`),fi=$(`closed.bs.${_e}`),nn=t=>{const{element:s}=t;w(s,fi),t._toggleEventListeners(),t.dispose(),s.remove()};class Ut extends st{constructor(e){super(e);d(this,"dismiss");d(this,"close",()=>{const{element:e}=this;e&&h(e,m)&&(w(e,sn),sn.defaultPrevented||(b(e,m),h(e,W)?P(e,()=>nn(this)):nn(this)))});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{dismiss:o,close:i}=this;o&&n(o,N,i)});this.dismiss=D(li,this.element),this._toggleEventListeners(!0)}get name(){return en}dispose(){this._toggleEventListeners(),super.dispose()}}d(Ut,"selector",ri),d(Ut,"init",hi),d(Ut,"getInstance",di);const C="active",rt="data-bs-toggle",gi="button",on="Button",pi=`[${rt}="${gi}"]`,ui=t=>F(t,on),mi=t=>new qt(t);class qt extends st{constructor(e){super(e);d(this,"isActive",!1);d(this,"toggle",e=>{e&&e.preventDefault();const{element:n,isActive:o}=this;!h(n,"disabled")&&!at(n,"disabled")&&((o?b:f)(n,C),O(n,_s,o?"false":"true"),this.isActive=h(n,C))});d(this,"_toggleEventListeners",e=>{(e?_:B)(this.element,N,this.toggle)});const{element:n}=this;this.isActive=h(n,C),O(n,_s,String(!!this.isActive)),this._toggleEventListeners(!0)}get name(){return on}dispose(){this._toggleEventListeners(),super.dispose()}}d(qt,"selector",pi),d(qt,"init",mi),d(qt,"getInstance",ui);const cs="data-bs-target",kt="carousel",cn="Carousel",an="data-bs-parent",vi="data-bs-container",V=t=>{const s=[cs,an,vi,"href"],e=E(t);return s.map(n=>{const o=at(t,n);return o?n===an?M(t,o):D(o,e):null}).filter(n=>n)[0]},ge=`[data-bs-ride="${kt}"]`,Q=`${kt}-item`,as="data-bs-slide-to",$t="data-bs-slide",Tt="paused",rn={pause:"hover",keyboard:!1,touch:!0,interval:5e3},pt=t=>F(t,cn),bi=t=>new Qt(t);let pe=0,Be=0,rs=0;const ls=$(`slide.bs.${kt}`),ds=$(`slid.bs.${kt}`),ln=t=>{const{index:s,direction:e,element:n,slides:o,options:i}=t;if(t.isAnimating){const c=fs(t),a=e==="left"?"next":"prev",l=e==="left"?"start":"end";f(o[s],C),b(o[s],`${Q}-${a}`),b(o[s],`${Q}-${l}`),b(o[c],C),b(o[c],`${Q}-${l}`),w(n,ds),u.clear(n,$t),t.cycle&&!E(n).hidden&&i.interval&&!t.isPaused&&t.cycle()}};function wi(){const t=pt(this);t&&!t.isPaused&&!u.get(this,Tt)&&f(this,Tt)}function Ei(){const t=pt(this);t&&t.isPaused&&!u.get(this,Tt)&&t.cycle()}function $i(t){t.preventDefault();const s=M(this,ge)||V(this),e=pt(s);if(e&&!e.isAnimating){const n=+(at(this,as)||0);this&&!h(this,C)&&!Number.isNaN(n)&&e.to(n)}}function Ti(t){t.preventDefault();const s=M(this,ge)||V(this),e=pt(s);if(e&&!e.isAnimating){const n=at(this,$t);n==="next"?e.next():n==="prev"&&e.prev()}}const yi=({code:t,target:s})=>{const e=E(s),[n]=[...et(ge,e)].filter(i=>Gs(i)),o=pt(n);if(o&&!o.isAnimating&&!/textarea|input/i.test(s.nodeName)){const i=Et(n);t===(i?Fs:Ws)?o.prev():t===(i?Ws:Fs)&&o.next()}};function dn(t){const{target:s}=t,e=pt(this);e&&e.isTouch&&(e.indicator&&!e.indicator.contains(s)||!e.controls.includes(s))&&(t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault())}function Ci(t){const{target:s}=t,e=pt(this);if(e&&!e.isAnimating&&!e.isTouch){const{controls:n,indicators:o}=e;[...n,...o].every(i=>i===s||i.contains(s))||(pe=t.pageX,this.contains(s)&&(e.isTouch=!0,hn(e,!0)))}}const Si=t=>{Be=t.pageX},Hi=t=>{var o;const{target:s}=t,e=E(s),n=[...et(ge,e)].map(i=>pt(i)).find(i=>i.isTouch);if(n){const{element:i,index:c}=n,a=Et(i);rs=t.pageX,n.isTouch=!1,hn(n),!((o=e.getSelection())!=null&&o.toString().length)&&i.contains(s)&&Math.abs(pe-rs)>120&&(Bepe&&n.to(c+(a?1:-1))),pe=0,Be=0,rs=0}},hs=(t,s)=>{const{indicators:e}=t;[...e].forEach(n=>b(n,C)),t.indicators[s]&&f(e[s],C)},hn=(t,s)=>{const{element:e}=t,n=s?_:B;n(E(e),jo,Si,tt),n(E(e),zo,Hi,tt)},fs=t=>{const{slides:s,element:e}=t,n=D(`.${Q}.${C}`,e);return T(n)?[...s].indexOf(n):-1};class Qt extends st{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const{element:n,options:o,slides:i,controls:c,indicators:a}=this,{touch:l,pause:r,interval:g,keyboard:p}=o,v=e?_:B;r&&g&&(v(n,De,wi),v(n,Ze,Ei)),l&&i.length>2&&(v(n,Fo,Ci,tt),v(n,Ge,dn,{passive:!1}),v(n,Vo,dn,{passive:!1})),c.length&&c.forEach(k=>{k&&v(k,N,Ti)}),a.length&&a.forEach(k=>{v(k,N,$i)}),p&&v(E(n),Pe,yi)});const{element:o}=this;this.direction=Et(o)?"right":"left",this.isTouch=!1,this.slides=gt(Q,o);const{slides:i}=this;if(i.length>=2){const c=fs(this),a=[...i].find(g=>Js(g,`.${Q}-next,.${Q}-next`));this.index=c;const l=E(o);this.controls=[...et(`[${$t}]`,o),...et(`[${$t}][${cs}="#${o.id}"]`,l)].filter((g,p,v)=>p===v.indexOf(g)),this.indicator=D(`.${kt}-indicators`,o),this.indicators=[...this.indicator?et(`[${as}]`,this.indicator):[],...et(`[${as}][${cs}="#${o.id}"]`,l)].filter((g,p,v)=>p===v.indexOf(g));const{options:r}=this;this.options.interval=r.interval===!0?rn.interval:r.interval,a?this.index=[...i].indexOf(a):c<0&&(this.index=0,f(i[0],C),this.indicators.length&&hs(this,0)),this.indicators.length&&hs(this,this.index),this._toggleEventListeners(!0),r.interval&&this.cycle()}}get name(){return cn}get defaults(){return rn}get isPaused(){return h(this.element,Tt)}get isAnimating(){return D(`.${Q}-next,.${Q}-prev`,this.element)!==null}cycle(){const{element:e,options:n,isPaused:o,index:i}=this;u.clear(e,kt),o&&(u.clear(e,Tt),b(e,Tt)),u.set(e,()=>{this.element&&!this.isPaused&&!this.isTouch&&Gs(e)&&this.to(i+1)},n.interval,kt)}pause(){const{element:e,options:n}=this;!this.isPaused&&n.interval&&(f(e,Tt),u.set(e,()=>{},1,Tt))}next(){this.isAnimating||this.to(this.index+1)}prev(){this.isAnimating||this.to(this.index-1)}to(e){const{element:n,slides:o,options:i}=this,c=fs(this),a=Et(n);let l=e;if(!this.isAnimating&&c!==l&&!u.get(n,$t)){cl||c===o.length-1&&l===0)&&(this.direction=a?"left":"right");const{direction:r}=this;l<0?l=o.length-1:l>=o.length&&(l=0);const g=r==="left"?"next":"prev",p=r==="left"?"start":"end",v={relatedTarget:o[l],from:c,to:l,direction:r};dt(ls,v),dt(ds,v),w(n,ls),ls.defaultPrevented||(this.index=l,hs(this,l),zt(o[l])&&h(n,"slide")?u.set(n,()=>{f(o[l],`${Q}-${g}`),It(o[l]),f(o[l],`${Q}-${p}`),f(o[c],`${Q}-${p}`),P(o[l],()=>this.slides&&this.slides.length&&ln(this))},0,$t):(f(o[l],C),b(o[c],C),u.set(n,()=>{u.clear(n,$t),n&&i.interval&&!this.isPaused&&this.cycle(),w(n,ds)},0,$t)))}}dispose(){const{isAnimating:e}=this,n={...this,isAnimating:e};this._toggleEventListeners(),super.dispose(),n.isAnimating&&P(n.slides[n.index],()=>{ln(n)})}}d(Qt,"selector",ge),d(Qt,"init",bi),d(Qt,"getInstance",pt);const Nt="collapsing",K="collapse",fn="Collapse",Pi=`.${K}`,gn=`[${rt}="${K}"]`,Di={parent:null},Re=t=>F(t,fn),xi=t=>new Zt(t),pn=$(`show.bs.${K}`),Ai=$(`shown.bs.${K}`),un=$(`hide.bs.${K}`),Li=$(`hidden.bs.${K}`),Ii=t=>{const{element:s,parent:e,triggers:n}=t;w(s,pn),pn.defaultPrevented||(u.set(s,le,17),e&&u.set(e,le,17),f(s,Nt),b(s,K),L(s,{height:`${s.scrollHeight}px`}),P(s,()=>{u.clear(s),e&&u.clear(e),n.forEach(o=>O(o,ct,"true")),b(s,Nt),f(s,K),f(s,m),L(s,{height:""}),w(s,Ai)}))},mn=t=>{const{element:s,parent:e,triggers:n}=t;w(s,un),un.defaultPrevented||(u.set(s,le,17),e&&u.set(e,le,17),L(s,{height:`${s.scrollHeight}px`}),b(s,K),b(s,m),f(s,Nt),It(s),L(s,{height:"0px"}),P(s,()=>{u.clear(s),e&&u.clear(e),n.forEach(o=>O(o,ct,"false")),b(s,Nt),f(s,K),L(s,{height:""}),w(s,Li)}))},ki=t=>{const{target:s}=t,e=s&&M(s,gn),n=e&&V(e),o=n&&Re(n);o&&o.toggle(),e&&e.tagName==="A"&&t.preventDefault()};class Zt extends st{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const n=e?_:B,{triggers:o}=this;o.length&&o.forEach(i=>n(i,N,ki))});const{element:o,options:i}=this,c=E(o);this.triggers=[...et(gn,c)].filter(a=>V(a)===o),this.parent=T(i.parent)?i.parent:he(i.parent)?V(o)||D(i.parent,c):null,this._toggleEventListeners(!0)}get name(){return fn}get defaults(){return Di}hide(){const{triggers:e,element:n}=this;u.get(n)||(mn(this),e.length&&e.forEach(o=>f(o,`${K}d`)))}show(){const{element:e,parent:n,triggers:o}=this;let i,c;n&&(i=[...et(`.${K}.${m}`,n)].find(a=>Re(a)),c=i&&Re(i)),(!n||!u.get(n))&&!u.get(e)&&(c&&i!==e&&(mn(c),c.triggers.forEach(a=>{f(a,`${K}d`)})),Ii(this),o.length&&o.forEach(a=>b(a,`${K}d`)))}toggle(){h(this.element,m)?this.hide():this.show()}dispose(){this._toggleEventListeners(),super.dispose()}}d(Zt,"selector",Pi),d(Zt,"init",xi),d(Zt,"getInstance",Re);const Ot=["dropdown","dropup","dropstart","dropend"],vn="Dropdown",bn="dropdown-menu",wn=t=>{const s=M(t,"A");return t.tagName==="A"&&Ne(t,"href")&&at(t,"href").slice(-1)==="#"||s&&Ne(s,"href")&&at(s,"href").slice(-1)==="#"},[nt,gs,ps,us]=Ot,En=`[${rt}="${nt}"]`,Gt=t=>F(t,vn),Ni=t=>new Jt(t),Oi=`${bn}-end`,$n=[nt,gs],Tn=[ps,us],yn=["A","BUTTON"],Mi={offset:5,display:"dynamic"},ms=$(`show.bs.${nt}`),Cn=$(`shown.bs.${nt}`),vs=$(`hide.bs.${nt}`),Sn=$(`hidden.bs.${nt}`),Hn=$(`updated.bs.${nt}`),Pn=t=>{const{element:s,menu:e,parentElement:n,options:o}=t,{offset:i}=o;if(z(e,"position")!=="static"){const c=Et(s),a=h(e,Oi);["margin","top","bottom","left","right"].forEach(R=>{const Pt={};Pt[R]="",L(e,Pt)});let r=Ot.find(R=>h(n,R))||nt;const g={dropdown:[i,0,0],dropup:[0,0,i],dropstart:c?[-1,0,0,i]:[-1,i,0],dropend:c?[-1,i,0]:[-1,0,0,i]},p={dropdown:{top:"100%"},dropup:{top:"auto",bottom:"100%"},dropstart:c?{left:"100%",right:"auto"}:{left:"auto",right:"100%"},dropend:c?{left:"auto",right:"100%"}:{left:"100%",right:"auto"},menuStart:c?{right:"0",left:"auto"}:{right:"auto",left:"0"},menuEnd:c?{right:"auto",left:"0"}:{right:"0",left:"auto"}},{offsetWidth:v,offsetHeight:k}=e,{clientWidth:J,clientHeight:y}=ft(s),{left:X,top:q,width:ce,height:mt}=fe(s),S=X-v-i<0,ot=X+v+ce+i>=J,lt=q+k+i>=y,j=q+k+mt+i>=y,Y=q-k-i<0,x=(!c&&a||c&&!a)&&X+ce-v<0,ae=(c&&a||!c&&!a)&&X+v>=J;if(Tn.includes(r)&&S&&ot&&(r=nt),r===ps&&(c?ot:S)&&(r=us),r===us&&(c?S:ot)&&(r=ps),r===gs&&Y&&!j&&(r=nt),r===nt&&j&&!Y&&(r=gs),Tn.includes(r)&<&&dt(p[r],{top:"auto",bottom:0}),$n.includes(r)&&(x||ae)){let R={left:"auto",right:"auto"};!x&&ae&&!c&&(R={left:"auto",right:0}),x&&!ae&&c&&(R={left:0,right:"auto"}),R&&dt(p[r],R)}const Ht=g[r];L(e,{...p[r],margin:`${Ht.map(R=>R&&`${R}px`).join(" ")}`}),$n.includes(r)&&a&&a&&L(e,p[!c&&x||c&&ae?"menuStart":"menuEnd"]),w(n,Hn)}},_i=t=>[...t.children].map(s=>{if(s&&yn.includes(s.tagName))return s;const{firstElementChild:e}=s;return e&&yn.includes(e.tagName)?e:null}).filter(s=>s),Dn=t=>{const{element:s,options:e}=t,n=t.open?_:B,o=E(s);n(o,N,xn),n(o,qe,xn),n(o,Pe,Ri),n(o,Ro,Wi),e.display==="dynamic"&&[Ae,xe].forEach(i=>{n(Xt(s),i,Fi,tt)})},We=t=>{const s=[...Ot,"btn-group","input-group"].map(e=>gt(`${e} ${m}`,E(t))).find(e=>e.length);if(s&&s.length)return[...s[0].children].find(e=>Ot.some(n=>n===at(e,rt)))},xn=t=>{const{target:s,type:e}=t;if(s&&T(s)){const n=We(s),o=n&&Gt(n);if(o){const{parentElement:i,menu:c}=o,a=i&&i.contains(s)&&(s.tagName==="form"||M(s,"form")!==null);[N,Rs].includes(e)&&wn(s)&&t.preventDefault(),!a&&e!==qe&&s!==n&&s!==c&&o.hide()}}},Bi=t=>{const{target:s}=t,e=s&&M(s,En),n=e&&Gt(e);n&&(t.stopPropagation(),n.toggle(),e&&wn(e)&&t.preventDefault())},Ri=t=>{[Je,ts].includes(t.code)&&t.preventDefault()};function Wi(t){const{code:s}=t,e=We(this),n=e&&Gt(e),{activeElement:o}=e&&E(e);if(n&&o){const{menu:i,open:c}=n,a=_i(i);if(a&&a.length&&[Je,ts].includes(s)){let l=a.indexOf(o);o===e?l=0:s===ts?l=l>1?l-1:0:s===Je&&(l=l{(e?_:B)(this.element,N,Bi)});const{parentElement:o}=this.element,[i]=gt(bn,o);i&&(this.parentElement=o,this.menu=i,this._toggleEventListeners(!0))}get name(){return vn}get defaults(){return Mi}toggle(){this.open?this.hide():this.show()}show(){const{element:e,open:n,menu:o,parentElement:i}=this;if(!n){const c=We(e),a=c&&Gt(c);a&&a.hide(),[ms,Cn,Hn].forEach(l=>{l.relatedTarget=e}),w(i,ms),ms.defaultPrevented||(f(o,m),f(i,m),O(e,ct,"true"),Pn(this),this.open=!n,ht(e),Dn(this),w(i,Cn))}}hide(){const{element:e,open:n,menu:o,parentElement:i}=this;n&&([vs,Sn].forEach(c=>{c.relatedTarget=e}),w(i,vs),vs.defaultPrevented||(b(o,m),b(i,m),O(e,ct,"false"),this.open=!n,Dn(this),w(i,Sn)))}dispose(){this.open&&this.hide(),this._toggleEventListeners(),super.dispose()}}d(Jt,"selector",En),d(Jt,"init",Ni),d(Jt,"getInstance",Gt);const U="modal",bs="Modal",ws="Offcanvas",ji="fixed-top",zi="fixed-bottom",An="sticky-top",Ln="position-sticky",In=t=>[...gt(ji,t),...gt(zi,t),...gt(An,t),...gt(Ln,t),...gt("is-fixed",t)],Vi=t=>{const s=wt(t);L(s,{paddingRight:"",overflow:""});const e=In(s);e.length&&e.forEach(n=>{L(n,{paddingRight:"",marginRight:""})})},kn=t=>{const{clientWidth:s}=ft(t),{innerWidth:e}=Xt(t);return Math.abs(e-s)},Nn=(t,s)=>{const e=wt(t),n=parseInt(z(e,"paddingRight"),10),i=z(e,"overflow")==="hidden"&&n?0:kn(t),c=In(e);s&&(L(e,{overflow:"hidden",paddingRight:`${n+i}px`}),c.length&&c.forEach(a=>{const l=z(a,"paddingRight");if(a.style.paddingRight=`${parseInt(l,10)+i}px`,[An,Ln].some(r=>h(a,r))){const r=z(a,"marginRight");a.style.marginRight=`${parseInt(r,10)-i}px`}}))},Z="offcanvas",yt=vt({tagName:"div",className:"popup-container"}),On=(t,s)=>{const e=A(s)&&s.nodeName==="BODY",n=A(s)&&!e?s:yt,o=e?s:wt(t);A(t)&&(n===yt&&o.append(yt),n.append(t))},Mn=(t,s)=>{const e=A(s)&&s.nodeName==="BODY",n=A(s)&&!e?s:yt;A(t)&&(t.remove(),n===yt&&!yt.children.length&&yt.remove())},Es=(t,s)=>{const e=A(s)&&s.nodeName!=="BODY"?s:yt;return A(t)&&e.contains(t)},_n="backdrop",Bn=`${U}-${_n}`,Rn=`${Z}-${_n}`,Wn=`.${U}.${m}`,$s=`.${Z}.${m}`,I=vt("div"),Mt=t=>D(`${Wn},${$s}`,E(t)),Ts=t=>{const s=t?Bn:Rn;[Bn,Rn].forEach(e=>{b(I,e)}),f(I,s)},Fn=(t,s,e)=>{Ts(e),On(I,wt(t)),s&&f(I,W)},jn=()=>{h(I,m)||(f(I,m),It(I))},Fe=()=>{b(I,m)},zn=t=>{Mt(t)||(b(I,W),Mn(I,wt(t)),Vi(t))},Vn=t=>T(t)&&z(t,"visibility")!=="hidden"&&t.offsetParent!==null,Ki=`.${U}`,Kn=`[${rt}="${U}"]`,Xi=`[${Me}="${U}"]`,Xn=`${U}-static`,Yi={backdrop:!0,keyboard:!0},ue=t=>F(t,bs),Ui=t=>new te(t),je=$(`show.bs.${U}`),Yn=$(`shown.bs.${U}`),ys=$(`hide.bs.${U}`),Un=$(`hidden.bs.${U}`),qn=t=>{const{element:s}=t,e=kn(s),{clientHeight:n,scrollHeight:o}=ft(s),{clientHeight:i,scrollHeight:c}=s,a=i!==c;if(!a&&e){const l=Et(s)?"paddingLeft":"paddingRight",r={};r[l]=`${e}px`,L(s,r)}Nn(s,a||n!==o)},Qn=(t,s)=>{const e=s?_:B,{element:n,update:o}=t;e(n,N,Zi),e(Xt(n),xe,o,tt),e(E(n),Pe,Qi)},Zn=t=>{const{triggers:s,element:e,relatedTarget:n}=t;zn(e),L(e,{paddingRight:"",display:""}),Qn(t);const o=je.relatedTarget||s.find(Vn);o&&ht(o),Un.relatedTarget=n,w(e,Un)},Gn=t=>{const{element:s,relatedTarget:e}=t;ht(s),Qn(t,!0),Yn.relatedTarget=e,w(s,Yn)},Jn=t=>{const{element:s,hasFade:e}=t;L(s,{display:"block"}),qn(t),Mt(s)||L(wt(s),{overflow:"hidden"}),f(s,m),At(s,Se),O(s,He,"true"),e?P(s,()=>Gn(t)):Gn(t)},to=t=>{const{element:s,options:e,hasFade:n}=t;e.backdrop&&n&&h(I,m)&&!Mt(s)?(Fe(),P(I,()=>Zn(t))):Zn(t)},qi=t=>{const{target:s}=t,e=s&&M(s,Kn),n=e&&V(e),o=n&&ue(n);o&&(e&&e.tagName==="A"&&t.preventDefault(),o.relatedTarget=e,o.toggle())},Qi=({code:t,target:s})=>{const e=D(Wn,E(s)),n=e&&ue(e);if(n){const{options:o}=n;o.keyboard&&t===es&&h(e,m)&&(n.relatedTarget=null,n.hide())}},Zi=t=>{var n,o;const{currentTarget:s}=t,e=s?ue(s):null;if(e&&s&&!u.get(s)){const{options:i,isStatic:c,modalDialog:a}=e,{backdrop:l}=i,{target:r}=t,g=(o=(n=E(s))==null?void 0:n.getSelection())==null?void 0:o.toString().length,p=a.contains(r),v=r&&M(r,Xi);c&&!p?u.set(s,()=>{f(s,Xn),P(a,()=>Gi(e))},17):(v||!g&&!c&&!p&&l)&&(e.relatedTarget=v||null,e.hide(),t.preventDefault())}},Gi=t=>{const{element:s,modalDialog:e}=t,n=(zt(e)||0)+17;b(s,Xn),u.set(s,()=>u.clear(s),n)};class te extends st{constructor(e,n){super(e,n);d(this,"update",()=>{h(this.element,m)&&qn(this)});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{triggers:o}=this;o.length&&o.forEach(i=>n(i,N,qi))});const{element:o}=this,i=D(`.${U}-dialog`,o);i&&(this.modalDialog=i,this.triggers=[...et(Kn,E(o))].filter(c=>V(c)===o),this.isStatic=this.options.backdrop==="static",this.hasFade=h(o,W),this.relatedTarget=null,this._toggleEventListeners(!0))}get name(){return bs}get defaults(){return Yi}toggle(){h(this.element,m)?this.hide():this.show()}show(){const{element:e,options:n,hasFade:o,relatedTarget:i}=this,{backdrop:c}=n;let a=0;if(!h(e,m)&&(je.relatedTarget=i||void 0,w(e,je),!je.defaultPrevented)){const l=Mt(e);if(l&&l!==e){const r=ue(l)||F(l,ws);r&&r.hide()}c?(Es(I)?Ts(!0):Fn(e,o,!0),a=zt(I),jn(),setTimeout(()=>Jn(this),a)):(Jn(this),l&&h(I,m)&&Fe())}}hide(){const{element:e,hasFade:n,relatedTarget:o}=this;h(e,m)&&(ys.relatedTarget=o||void 0,w(e,ys),ys.defaultPrevented||(b(e,m),O(e,Se,"true"),At(e,He),n?P(e,()=>to(this)):to(this)))}dispose(){const e={...this},{element:n,modalDialog:o}=e,i=()=>super.dispose();this._toggleEventListeners(),this.hide(),h(n,"fade")?P(o,i):i()}}d(te,"selector",Ki),d(te,"init",Ui),d(te,"getInstance",ue);const Ji=`.${Z}`,Cs=`[${rt}="${Z}"]`,tc=`[${Me}="${Z}"]`,ze=`${Z}-toggling`,ec={backdrop:!0,keyboard:!0,scroll:!1},me=t=>F(t,ws),sc=t=>new ee(t),Ve=$(`show.bs.${Z}`),eo=$(`shown.bs.${Z}`),Ss=$(`hide.bs.${Z}`),so=$(`hidden.bs.${Z}`),nc=t=>{const{element:s}=t,{clientHeight:e,scrollHeight:n}=ft(s);Nn(s,e!==n)},no=(t,s)=>{const e=s?_:B,n=E(t.element);e(n,Pe,ac),e(n,N,cc)},oo=t=>{const{element:s,options:e}=t;e.scroll||(nc(t),L(wt(s),{overflow:"hidden"})),f(s,ze),f(s,m),L(s,{visibility:"visible"}),P(s,()=>rc(t))},oc=t=>{const{element:s,options:e}=t,n=Mt(s);s.blur(),!n&&e.backdrop&&h(I,m)&&Fe(),P(s,()=>lc(t))},ic=t=>{const s=M(t.target,Cs),e=s&&V(s),n=e&&me(e);n&&(n.relatedTarget=s,n.toggle(),s&&s.tagName==="A"&&t.preventDefault())},cc=t=>{const{target:s}=t,e=D($s,E(s)),n=D(tc,e),o=e&&me(e);if(o){const{options:i,triggers:c}=o,{backdrop:a}=i,l=M(s,Cs),r=E(e).getSelection();(!I.contains(s)||a!=="static")&&(!(r&&r.toString().length)&&(!e.contains(s)&&a&&(!l||c.includes(s))||n&&n.contains(s))&&(o.relatedTarget=n&&n.contains(s)?n:null,o.hide()),l&&l.tagName==="A"&&t.preventDefault())}},ac=({code:t,target:s})=>{const e=D($s,E(s)),n=e&&me(e);n&&n.options.keyboard&&t===es&&(n.relatedTarget=null,n.hide())},rc=t=>{const{element:s}=t;b(s,ze),At(s,Se),O(s,He,"true"),O(s,"role","dialog"),w(s,eo),no(t,!0),ht(s)},lc=t=>{const{element:s,triggers:e}=t;O(s,Se,"true"),At(s,He),At(s,"role"),L(s,{visibility:""});const n=Ve.relatedTarget||e.find(Vn);n&&ht(n),zn(s),w(s,so),b(s,ze),Mt(s)||no(t)};class ee extends st{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const n=e?_:B;this.triggers.forEach(o=>n(o,N,ic))});const{element:o}=this;this.triggers=[...et(Cs,E(o))].filter(i=>V(i)===o),this.relatedTarget=null,this._toggleEventListeners(!0)}get name(){return ws}get defaults(){return ec}toggle(){h(this.element,m)?this.hide():this.show()}show(){const{element:e,options:n,relatedTarget:o}=this;let i=0;if(!h(e,m)&&(Ve.relatedTarget=o||void 0,eo.relatedTarget=o||void 0,w(e,Ve),!Ve.defaultPrevented)){const c=Mt(e);if(c&&c!==e){const a=me(c)||F(c,bs);a&&a.hide()}n.backdrop?(Es(I)?Ts():Fn(e,!0),i=zt(I),jn(),setTimeout(()=>oo(this),i)):(oo(this),c&&h(I,m)&&Fe())}}hide(){const{element:e,relatedTarget:n}=this;h(e,m)&&(Ss.relatedTarget=n||void 0,so.relatedTarget=n||void 0,w(e,Ss),Ss.defaultPrevented||(f(e,ze),b(e,m),oc(this)))}dispose(){const e={...this},{element:n,options:o}=e,i=o.backdrop?zt(I):0,c=()=>setTimeout(()=>super.dispose(),i+17);this._toggleEventListeners(),this.hide(),h(n,m)?P(n,c):c()}}d(ee,"selector",Ji),d(ee,"init",sc),d(ee,"getInstance",me);const _t="popover",Ke="Popover",ut="tooltip",io=t=>{const s=t===ut,e=s?`${t}-inner`:`${t}-body`,n=s?"":``,o=``,i=``;return`${n+o+i}`},co={top:"top",bottom:"bottom",left:"start",right:"end"},Hs=t=>{const s=/\b(top|bottom|start|end)+/,{element:e,tooltip:n,container:o,options:i,arrow:c}=t;if(n){const a={...co},l=Et(e);L(n,{top:"",left:"",right:"",bottom:""});const r=t.name===Ke,{offsetWidth:g,offsetHeight:p}=n,{clientWidth:v,clientHeight:k,offsetWidth:J}=ft(e);let{placement:y}=i;const{clientWidth:X,offsetWidth:q}=o,mt=z(o,"position")==="fixed",S=Math.abs(mt?X-q:v-J),ot=l&&mt?S:0,lt=v-(l?0:S)-1,{width:j,height:Y,left:x,right:ae,top:Ht}=fe(e,!0),{x:R,y:Pt}={x,y:Ht};L(c,{top:"",left:"",right:"",bottom:""});let Wt=0,Ee="",Dt=0,ks="",re="",Xe="",Ns="";const Ft=c.offsetWidth||0,xt=c.offsetHeight||0,Os=Ft/2;let $e=Ht-p-xt<0,Te=Ht+p+Y+xt>=k,ye=x-g-Ft=lt;const Ye=["left","right"],Ms=["top","bottom"];$e=Ye.includes(y)?Ht+Y/2-p/2-xt<0:$e,Te=Ye.includes(y)?Ht+p/2+Y/2+xt>=k:Te,ye=Ms.includes(y)?x+j/2-g/2=lt:Ce,y=Ye.includes(y)&&ye&&Ce?"top":y,y=y==="top"&&$e?"bottom":y,y=y==="bottom"&&Te?"top":y,y=y==="left"&&ye?"right":y,y=y==="right"&&Ce?"left":y,n.className.includes(y)||(n.className=n.className.replace(s,a[y])),Ye.includes(y)?(y==="left"?Dt=R-g-(r?Ft:0):Dt=R+j+(r?Ft:0),$e&&Te?(Wt=0,Ee=0,re=Ht+Y/2-xt/2):$e?(Wt=Pt,Ee="",re=Y/2-Ft):Te?(Wt=Pt-p+Y,Ee="",re=p-Y/2-Ft):(Wt=Pt-p/2+Y/2,re=p/2-xt/2)):Ms.includes(y)&&(y==="top"?Wt=Pt-p-(r?xt:0):Wt=Pt+Y+(r?xt:0),ye?(Dt=0,Xe=R+j/2-Os):Ce?(Dt="auto",ks=0,Ns=j/2+lt-ae-Os):(Dt=R-g/2+j/2,Xe=g/2-Os)),L(n,{top:`${Wt}px`,bottom:Ee===""?"":`${Ee}px`,left:Dt==="auto"?Dt:`${Dt}px`,right:ks!==""?`${ks}px`:""}),T(c)&&(re!==""&&(c.style.top=`${re}px`),Xe!==""?c.style.left=`${Xe}px`:Ns!==""&&(c.style.right=`${Ns}px`));const zc=$(`updated.bs.${Vt(t.name)}`);w(e,zc)}},Ps={template:io(ut),title:"",customClass:"",trigger:"hover focus",placement:"top",sanitizeFn:void 0,animation:!0,delay:200,container:document.body,content:"",dismissible:!1,btnClose:""},ao="data-original-title",Bt="Tooltip",Ct=(t,s,e)=>{if(he(s)&&s.length){let n=s.trim();oi(e)&&(n=e(n));const i=new DOMParser().parseFromString(n,"text/html");t.append(...i.body.childNodes)}else T(s)?t.append(s):(ii(s)||ni(s)&&s.every(A))&&t.append(...s)},dc=t=>{const s=t.name===Bt,{id:e,element:n,options:o}=t,{title:i,placement:c,template:a,animation:l,customClass:r,sanitizeFn:g,dismissible:p,content:v,btnClose:k}=o,J=s?ut:_t,y={...co};let X=[],q=[];Et(n)&&(y.left="end",y.right="start");const ce=`bs-${J}-${y[c]}`;let mt;if(T(a))mt=a;else{const ot=vt("div");Ct(ot,a,g),mt=ot.firstChild}t.tooltip=T(mt)?mt.cloneNode(!0):void 0;const{tooltip:S}=t;if(S){O(S,"id",e),O(S,"role",ut);const ot=s?`${ut}-inner`:`${_t}-body`,lt=s?null:D(`.${_t}-header`,S),j=D(`.${ot}`,S);t.arrow=D(`.${J}-arrow`,S);const{arrow:Y}=t;if(T(i))X=[i.cloneNode(!0)];else{const x=vt("div");Ct(x,i,g),X=[...x.childNodes]}if(T(v))q=[v.cloneNode(!0)];else{const x=vt("div");Ct(x,v,g),q=[...x.childNodes]}if(p)if(i)if(T(k))X=[...X,k.cloneNode(!0)];else{const x=vt("div");Ct(x,k,g),X=[...X,x.firstChild]}else if(lt&<.remove(),T(k))q=[...q,k.cloneNode(!0)];else{const x=vt("div");Ct(x,k,g),q=[...q,x.firstChild]}s?i&&j&&Ct(j,i,g):(i&<&&Ct(lt,X,g),v&&j&&Ct(j,q,g),t.btn=D(".btn-close",S)||void 0),f(S,"position-fixed"),f(Y,"position-absolute"),h(S,J)||f(S,J),l&&!h(S,W)&&f(S,W),r&&!h(S,r)&&f(S,r),h(S,ce)||f(S,ce)}},hc=t=>{const s=["HTML","BODY"],e=[];let{parentNode:n}=t;for(;n&&!s.includes(n.nodeName);)n=si(n),Us(n)||ci(n)||e.push(n);return e.find((o,i)=>z(o,"position")!=="relative"&&e.slice(i+1).every(c=>z(c,"position")==="static")?o:null)||E(t).body},fc=`[${rt}="${ut}"],[data-tip="${ut}"]`,ro="title";let lo=t=>F(t,Bt);const gc=t=>new St(t),pc=t=>{const{element:s,tooltip:e,container:n,offsetParent:o}=t;At(s,it),Mn(e,n===o?n:o)},ve=t=>{const{tooltip:s,container:e,offsetParent:n}=t;return s&&Es(s,e===n?e:n)},uc=(t,s)=>{const{element:e}=t;t._toggleEventListeners(),Ne(e,ao)&&t.name===Bt&&uo(t),s&&s()},ho=(t,s)=>{const e=s?_:B,{element:n}=t;e(E(n),Ge,t.handleTouch,tt),[Ae,xe].forEach(o=>{e(Xt(n),o,t.update,tt)})},fo=t=>{const{element:s}=t,e=$(`shown.bs.${Vt(t.name)}`);ho(t,!0),w(s,e),u.clear(s,"in")},go=t=>{const{element:s}=t,e=$(`hidden.bs.${Vt(t.name)}`);ho(t),pc(t),w(s,e),u.clear(s,"out")},po=(t,s)=>{const e=s?_:B,{element:n,container:o,offsetParent:i}=t,{offsetHeight:c,scrollHeight:a}=o,l=M(n,`.${U}`),r=M(n,`.${Z}`),g=Xt(n),v=o===i&&c!==a?o:g;e(v,xe,t.update,tt),e(v,Ae,t.update,tt),l&&e(l,`hide.bs.${U}`,t.handleHide),r&&e(r,`hide.bs.${Z}`,t.handleHide)},uo=(t,s)=>{const e=[ao,ro],{element:n}=t;O(n,e[s?0:1],s||at(n,e[0])||""),At(n,e[s?1:0])};class St extends st{constructor(e,n){super(e,n);d(this,"handleFocus",()=>ht(this.element));d(this,"handleShow",()=>this.show());d(this,"handleHide",()=>this.hide());d(this,"update",()=>{Hs(this)});d(this,"toggle",()=>{const{tooltip:e}=this;e&&!ve(this)?this.show():this.hide()});d(this,"handleTouch",({target:e})=>{const{tooltip:n,element:o}=this;n&&n.contains(e)||e===o||e&&o.contains(e)||this.hide()});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{element:o,options:i,btn:c}=this,{trigger:a}=i,r=!!(this.name!==Bt&&i.dismissible);a.includes("manual")||(this.enabled=!!e,a.split(" ").forEach(p=>{p===Wo?(n(o,Rs,this.handleShow),n(o,De,this.handleShow),r||(n(o,Ze,this.handleHide),n(E(o),Ge,this.handleTouch,tt))):p===N?n(o,p,r?this.handleShow:this.toggle):p===qe&&(n(o,Qe,this.handleShow),r||n(o,Bs,this.handleHide),qo&&n(o,N,this.handleFocus)),r&&c&&n(c,N,this.handleHide)}))});const{element:o}=this,i=this.name===Bt,c=i?ut:_t,a=i?Bt:Ke;lo=r=>F(r,a),this.enabled=!0,this.id=`${c}-${Zs(o,c)}`;const{options:l}=this;!l.title&&i||!i&&!l.content||(dt(Ps,{titleAttr:""}),Ne(o,ro)&&i&&typeof l.title=="string"&&uo(this,l.title),this.container=hc(o),this.offsetParent=["sticky","fixed"].some(r=>z(this.container,"position")===r)?this.container:E(this.element).body,dc(this),this._toggleEventListeners(!0))}get name(){return Bt}get defaults(){return Ps}show(){const{options:e,tooltip:n,element:o,container:i,offsetParent:c,id:a}=this,{animation:l}=e,r=u.get(o,"out"),g=i===c?i:c;u.clear(o,"out"),n&&!r&&!ve(this)&&u.set(o,()=>{const p=$(`show.bs.${Vt(this.name)}`);w(o,p),p.defaultPrevented||(On(n,g),O(o,it,`#${a}`),this.update(),po(this,!0),h(n,m)||f(n,m),l?P(n,()=>fo(this)):fo(this))},17,"in")}hide(){const{options:e,tooltip:n,element:o}=this,{animation:i,delay:c}=e;u.clear(o,"in"),n&&ve(this)&&u.set(o,()=>{const a=$(`hide.bs.${Vt(this.name)}`);w(o,a),a.defaultPrevented||(this.update(),b(n,m),po(this),i?P(n,()=>go(this)):go(this))},c+17,"out")}enable(){const{enabled:e}=this;e||(this._toggleEventListeners(!0),this.enabled=!e)}disable(){const{tooltip:e,options:n,enabled:o}=this,{animation:i}=n;o&&(e&&ve(this)&&i?(this.hide(),P(e,()=>this._toggleEventListeners())):this._toggleEventListeners(),this.enabled=!o)}toggleEnabled(){this.enabled?this.disable():this.enable()}dispose(){const{tooltip:e,options:n}=this,o={...this,name:this.name},i=()=>setTimeout(()=>uc(o,()=>super.dispose()),17);n.animation&&ve(o)?(this.options.delay=0,this.hide(),P(e,i)):i()}}d(St,"selector",fc),d(St,"init",gc),d(St,"getInstance",lo),d(St,"styleTip",Hs);const mc=`[${rt}="${_t}"],[data-tip="${_t}"]`,vc=dt({},Ps,{template:io(_t),content:"",dismissible:!1,btnClose:''}),bc=t=>F(t,Ke),wc=t=>new Rt(t);class Rt extends St{constructor(e,n){super(e,n);d(this,"show",()=>{super.show();const{options:e,btn:n}=this;e.dismissible&&n&&setTimeout(()=>ht(n),17)})}get name(){return Ke}get defaults(){return vc}}d(Rt,"selector",mc),d(Rt,"init",wc),d(Rt,"getInstance",bc),d(Rt,"styleTip",Hs);const Ec="scrollspy",mo="ScrollSpy",$c='[data-bs-spy="scroll"]',Tc={offset:10,target:null},yc=t=>F(t,mo),Cc=t=>new se(t),vo=$(`activate.bs.${Ec}`),Sc=t=>{const{target:s,scrollTarget:e,options:n,itemsLength:o,scrollHeight:i,element:c}=t,{offset:a}=n,l=ns(e),r=s&&is("A",s),g=e?bo(e):i;if(t.scrollTop=l?e.scrollY:e.scrollTop,r&&(g!==i||o!==r.length)){let p,v,k;t.items=[],t.offsets=[],t.scrollHeight=g,t.maxScroll=t.scrollHeight-Hc(t),[...r].forEach(J=>{p=at(J,"href"),v=p&&p.charAt(0)==="#"&&p.slice(-1)!=="#"&&D(p,E(c)),v&&(t.items.push(J),k=fe(v),t.offsets.push((l?k.top+t.scrollTop:v.offsetTop)-a))}),t.itemsLength=t.items.length}},bo=t=>T(t)?t.scrollHeight:ft(t).scrollHeight,Hc=({element:t,scrollTarget:s})=>ns(s)?s.innerHeight:fe(t).height,wo=t=>{[...is("A",t)].forEach(s=>{h(s,C)&&b(s,C)})},Eo=(t,s)=>{const{target:e,element:n}=t;T(e)&&wo(e),t.activeItem=s,f(s,C);const o=[];let i=s;for(;i!==wt(n);)i=i.parentElement,(h(i,"nav")||h(i,"dropdown-menu"))&&o.push(i);o.forEach(c=>{const a=c.previousElementSibling;a&&!h(a,C)&&f(a,C)}),vo.relatedTarget=s,w(n,vo)};class se extends st{constructor(e,n){super(e,n);d(this,"refresh",()=>{const{target:e}=this;if(T(e)&&e.offsetHeight>0){Sc(this);const{scrollTop:n,maxScroll:o,itemsLength:i,items:c,activeItem:a}=this;if(n>=o){const r=c[i-1];a!==r&&Eo(this,r);return}const{offsets:l}=this;if(a&&n0){this.activeItem=null,e&&wo(e);return}c.forEach((r,g)=>{a!==r&&n>=l[g]&&(typeof l[g+1]>"u"||n{(e?_:B)(this.scrollTarget,Ae,this.refresh,tt)});const{element:o,options:i}=this;this.target=D(i.target,E(o)),this.target&&(this.scrollTarget=o.clientHeightF(t,$o),Pc=t=>new ne(t),Ds=$(`show.bs.${be}`),Co=$(`shown.bs.${be}`),xs=$(`hide.bs.${be}`),So=$(`hidden.bs.${be}`),we=new Map,Ho=t=>{const{tabContent:s,nav:e}=t;s&&h(s,Nt)&&(s.style.height="",b(s,Nt)),e&&u.clear(e)},Po=t=>{const{element:s,tabContent:e,content:n,nav:o}=t,{tab:i}=T(o)&&we.get(o)||{tab:null};if(e&&n&&h(n,W)){const{currentHeight:c,nextHeight:a}=we.get(s)||{currentHeight:0,nextHeight:0};c===a?Ho(t):setTimeout(()=>{e.style.height=`${a}px`,It(e),P(e,()=>Ho(t))},50)}else o&&u.clear(o);Co.relatedTarget=i,w(s,Co)},Do=t=>{const{element:s,content:e,tabContent:n,nav:o}=t,{tab:i,content:c}=o&&we.get(o)||{tab:null,content:null};let a=0;if(n&&e&&h(e,W)&&([c,e].forEach(l=>{T(l)&&f(l,"overflow-hidden")}),a=T(c)?c.scrollHeight:0),Ds.relatedTarget=i,So.relatedTarget=s,w(s,Ds),!Ds.defaultPrevented){if(e&&f(e,C),c&&b(c,C),n&&e&&h(e,W)){const l=e.scrollHeight;we.set(s,{currentHeight:a,nextHeight:l,tab:null,content:null}),f(n,Nt),n.style.height=`${a}px`,It(n),[c,e].forEach(r=>{r&&b(r,"overflow-hidden")})}e&&e&&h(e,W)?setTimeout(()=>{f(e,m),P(e,()=>{Po(t)})},1):(e&&f(e,m),Po(t)),i&&w(i,So)}},xo=t=>{const{nav:s}=t;if(!T(s))return{tab:null,content:null};const e=gt(C,s);let n=null;e.length===1&&!Ot.some(i=>h(e[0].parentElement,i))?[n]=e:e.length>1&&(n=e[e.length-1]);const o=T(n)?V(n):null;return{tab:n,content:o}},Ao=t=>{if(!T(t))return null;const s=M(t,`.${Ot.join(",.")}`);return s?D(`.${Ot[0]}-toggle`,s):null},Dc=t=>{const s=yo(t.target);s&&(t.preventDefault(),s.show())};class ne extends st{constructor(e){super(e);d(this,"_toggleEventListeners",e=>{(e?_:B)(this.element,N,Dc)});const{element:n}=this,o=V(n);if(o){const i=M(n,".nav"),c=M(o,".tab-content");this.nav=i,this.content=o,this.tabContent=c,this.dropdown=Ao(n);const{tab:a}=xo(this);if(i&&!a){const l=D(To,i),r=l&&V(l);r&&(f(l,C),f(r,m),f(r,C),O(n,Ue,"true"))}this._toggleEventListeners(!0)}}get name(){return $o}show(){const{element:e,content:n,nav:o,dropdown:i}=this;if(!(o&&u.get(o))&&!h(e,C)){const{tab:c,content:a}=xo(this);if(o&&we.set(o,{tab:c,content:a,currentHeight:0,nextHeight:0}),xs.relatedTarget=e,T(c)&&(w(c,xs),!xs.defaultPrevented)){f(e,C),O(e,Ue,"true");const l=T(c)&&Ao(c);if(l&&h(l,C)&&b(l,C),o){const r=()=>{c&&(b(c,C),O(c,Ue,"false")),i&&!h(i,C)&&f(i,C)};a&&(h(a,W)||n&&h(n,W))?u.set(o,r,1):r()}a&&(b(a,m),h(a,W)?P(a,()=>Do(this)):Do(this))}}}dispose(){this._toggleEventListeners(),super.dispose()}}d(ne,"selector",To),d(ne,"init",Pc),d(ne,"getInstance",yo);const G="toast",Lo="Toast",xc=`.${G}`,Ac=`[${Me}="${G}"]`,Io=`[${rt}="${G}"]`,oe="showing",ko="hide",Lc={animation:!0,autohide:!0,delay:5e3},As=t=>F(t,Lo),Ic=t=>new ie(t),No=$(`show.bs.${G}`),kc=$(`shown.bs.${G}`),Oo=$(`hide.bs.${G}`),Nc=$(`hidden.bs.${G}`),Mo=t=>{const{element:s,options:e}=t;b(s,oe),u.clear(s,oe),w(s,kc),e.autohide&&u.set(s,()=>t.hide(),e.delay,G)},_o=t=>{const{element:s}=t;b(s,oe),b(s,m),f(s,ko),u.clear(s,G),w(s,Nc)},Oc=t=>{const{element:s,options:e}=t;f(s,oe),e.animation?(It(s),P(s,()=>_o(t))):_o(t)},Mc=t=>{const{element:s,options:e}=t;u.set(s,()=>{b(s,ko),It(s),f(s,m),f(s,oe),e.animation?P(s,()=>Mo(t)):Mo(t)},17,oe)},_c=t=>{u.clear(t.element,G),t._toggleEventListeners()},Bc=t=>{const{target:s}=t,e=s&&M(s,Io),n=e&&V(e),o=n&&As(n);o&&(e&&e.tagName==="A"&&t.preventDefault(),o.relatedTarget=e,o.show())},Rc=t=>{const s=t.target,e=As(s),{type:n,relatedTarget:o}=t;e&&s!==o&&!s.contains(o)&&([De,Qe].includes(n)?u.clear(s,G):u.set(s,()=>e.hide(),e.options.delay,G))};class ie extends st{constructor(e,n){super(e,n);d(this,"show",()=>{const{element:e,isShown:n}=this;e&&!n&&(w(e,No),No.defaultPrevented||Mc(this))});d(this,"hide",()=>{const{element:e,isShown:n}=this;e&&n&&(w(e,Oo),Oo.defaultPrevented||Oc(this))});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{element:o,triggers:i,dismiss:c,options:a,hide:l}=this;c&&n(c,N,l),a.autohide&&[Qe,Bs,De,Ze].forEach(r=>n(o,r,Rc)),i.length&&i.forEach(r=>n(r,N,Bc))});const{element:o,options:i}=this;i.animation&&!h(o,W)?f(o,W):!i.animation&&h(o,W)&&b(o,W),this.dismiss=D(Ac,o),this.triggers=[...et(Io,E(o))].filter(c=>V(c)===o),this._toggleEventListeners(!0)}get name(){return Lo}get defaults(){return Lc}get isShown(){return h(this.element,m)}dispose(){const{element:e,isShown:n}=this;n&&b(e,m),_c(this),super.dispose()}}d(ie,"selector",xc),d(ie,"init",Ic),d(ie,"getInstance",As);const Ls=new Map;[Ut,qt,Qt,Zt,Jt,te,ee,Rt,se,ne,ie,St].forEach(t=>Ls.set(t.prototype.name,t));const Wc=(t,s)=>{[...s].forEach(e=>t(e))},Fc=(t,s)=>{const e=Lt.getAllFor(t);e&&[...e].forEach(([n,o])=>{s.contains(n)&&o.dispose()})},Is=t=>{const s=t&&t.nodeName?t:document,e=[...is("*",s)];Ls.forEach(n=>{const{init:o,selector:i}=n;Wc(o,e.filter(c=>Js(c,i)))})},jc=t=>{const s=t&&t.nodeName?t:document;Ls.forEach(e=>{Fc(e.prototype.name,s)})};return document.body?Is():_(document,"DOMContentLoaded",()=>Is(),{once:!0}),H.Alert=Ut,H.Button=qt,H.Carousel=Qt,H.Collapse=Zt,H.Dropdown=Jt,H.Modal=te,H.Offcanvas=ee,H.Popover=Rt,H.ScrollSpy=se,H.Tab=ne,H.Toast=ie,H.Tooltip=St,H.initCallback=Is,H.removeDataAPI=jc,Object.defineProperty(H,Symbol.toStringTag,{value:"Module"}),H}({});
+var BSN=function(H){"use strict";var Vc=Object.defineProperty;var Kc=(H,it,ct)=>it in H?Vc(H,it,{enumerable:!0,configurable:!0,writable:!0,value:ct}):H[it]=ct;var d=(H,it,ct)=>(Kc(H,typeof it!="symbol"?it+"":it,ct),ct);const it="aria-describedby",ct="aria-expanded",Se="aria-hidden",He="aria-modal",_s="aria-pressed",Ue="aria-selected",Bo="DOMContentLoaded",qe="focus",Qe="focusin",Bs="focusout",Pe="keydown",Ro="keyup",N="click",Rs="mousedown",Wo="hover",De="mouseenter",Ze="mouseleave",Fo="pointerdown",jo="pointermove",zo="pointerup",xe="resize",Ae="scroll",Ge="touchstart",Vo="dragstart",Je="ArrowDown",ts="ArrowUp",Ws="ArrowLeft",Fs="ArrowRight",es="Escape",Ko="transitionDuration",Xo="transitionDelay",ss="transitionend",js="transitionProperty",Yo=navigator.userAgentData,Le=Yo,{userAgent:Uo}=navigator,Ie=Uo,zs=/iPhone|iPad|iPod|Android/i;Le?Le.brands.some(t=>zs.test(t.brand)):zs.test(Ie);const Vs=/(iPhone|iPod|iPad)/,qo=Le?Le.brands.some(t=>Vs.test(t.brand)):Vs.test(Ie);Ie&&Ie.includes("Firefox");const{head:ke}=document;["webkitPerspective","perspective"].some(t=>t in ke.style);const Qo=(t,s,e,n)=>{const o=n||!1;t.addEventListener(s,e,o)},Zo=(t,s,e,n)=>{const o=n||!1;t.removeEventListener(s,e,o)},Go=(t,s,e,n)=>{const o=i=>{(i.target===t||i.currentTarget===t)&&(e.apply(t,[i]),Zo(t,s,o,n))};Qo(t,s,o,n)},le=()=>{};(()=>{let t=!1;try{const s=Object.defineProperty({},"passive",{get:()=>(t=!0,t)});Go(document,Bo,le,s)}catch{}return t})(),["webkitTransform","transform"].some(t=>t in ke.style),["webkitAnimation","animation"].some(t=>t in ke.style),["webkitTransition","transition"].some(t=>t in ke.style);const at=(t,s)=>t.getAttribute(s),Ne=(t,s)=>t.hasAttribute(s),O=(t,s,e)=>t.setAttribute(s,e),At=(t,s)=>t.removeAttribute(s),f=(t,...s)=>{t.classList.add(...s)},b=(t,...s)=>{t.classList.remove(...s)},h=(t,s)=>t.classList.contains(s),de=t=>t!=null&&typeof t=="object"||!1,A=t=>de(t)&&typeof t.nodeType=="number"&&[1,2,3,4,5,6,7,8,9,10,11].some(s=>t.nodeType===s)||!1,T=t=>A(t)&&t.nodeType===1||!1,jt=new Map,Lt={data:jt,set:(t,s,e)=>{T(t)&&(jt.has(s)||jt.set(s,new Map),jt.get(s).set(t,e))},getAllFor:t=>jt.get(t)||null,get:(t,s)=>{if(!T(t)||!s)return null;const e=Lt.getAllFor(s);return t&&e&&e.get(t)||null},remove:(t,s)=>{const e=Lt.getAllFor(s);!e||!T(t)||(e.delete(t),e.size===0&&jt.delete(s))}},F=(t,s)=>Lt.get(t,s),he=t=>typeof t=="string"||!1,ns=t=>de(t)&&t.constructor.name==="Window"||!1,Ks=t=>A(t)&&t.nodeType===9||!1,E=t=>ns(t)?t.document:Ks(t)?t:A(t)?t.ownerDocument:window.document,dt=(t,...s)=>Object.assign(t,...s),vt=t=>{if(!t)return;if(he(t))return E().createElement(t);const{tagName:s}=t,e=vt(s);if(!e)return;const n={...t};return delete n.tagName,dt(e,n)},w=(t,s)=>t.dispatchEvent(s),z=(t,s)=>{const e=getComputedStyle(t),n=s.replace("webkit","Webkit").replace(/([A-Z])/g,"-$1").toLowerCase();return e.getPropertyValue(n)},Jo=t=>{const s=z(t,js),e=z(t,Xo),n=e.includes("ms")?1:1e3,o=s&&s!=="none"?parseFloat(e)*n:0;return Number.isNaN(o)?0:o},zt=t=>{const s=z(t,js),e=z(t,Ko),n=e.includes("ms")?1:1e3,o=s&&s!=="none"?parseFloat(e)*n:0;return Number.isNaN(o)?0:o},P=(t,s)=>{let e=0;const n=new Event(ss),o=zt(t),i=Jo(t);if(o){const c=a=>{a.target===t&&(s.apply(t,[a]),t.removeEventListener(ss,c),e=1)};t.addEventListener(ss,c),setTimeout(()=>{e||w(t,n)},o+i+17)}else s.apply(t,[n])},ht=(t,s)=>t.focus(s),Xs=t=>["true",!0].includes(t)?!0:["false",!1].includes(t)?!1:["null","",null,void 0].includes(t)?null:t!==""&&!Number.isNaN(+t)?+t:t,Oe=t=>Object.entries(t),Vt=t=>t.toLowerCase(),ti=(t,s,e,n)=>{const o={...e},i={...t.dataset},c={...s},a={},l="title";return Oe(i).forEach(([r,g])=>{const p=n&&typeof r=="string"&&r.includes(n)?r.replace(n,"").replace(/[A-Z]/g,v=>Vt(v)):r;a[p]=Xs(g)}),Oe(o).forEach(([r,g])=>{o[r]=Xs(g)}),Oe(s).forEach(([r,g])=>{r in o?c[r]=o[r]:r in a?c[r]=a[r]:c[r]=r===l?at(t,l):g}),c},Ys=t=>Object.keys(t),$=(t,s)=>{const e=new CustomEvent(t,{cancelable:!0,bubbles:!0});return de(s)&&dt(e,s),e},tt={passive:!0},It=t=>t.offsetHeight,L=(t,s)=>{Oe(s).forEach(([e,n])=>{if(n&&he(e)&&e.includes("--"))t.style.setProperty(e,n);else{const o={};o[e]=n,dt(t.style,o)}})},os=t=>de(t)&&t.constructor.name==="Map"||!1,ei=t=>typeof t=="number"||!1,bt=new Map,u={set:(t,s,e,n)=>{T(t)&&(n&&n.length?(bt.has(t)||bt.set(t,new Map),bt.get(t).set(n,setTimeout(s,e))):bt.set(t,setTimeout(s,e)))},get:(t,s)=>{if(!T(t))return null;const e=bt.get(t);return s&&e&&os(e)?e.get(s)||null:ei(e)?e:null},clear:(t,s)=>{if(!T(t))return;const e=bt.get(t);s&&s.length&&os(e)?(clearTimeout(e.get(s)),e.delete(s),e.size===0&&bt.delete(t)):(clearTimeout(e),bt.delete(t))}},fe=(t,s)=>{const{width:e,height:n,top:o,right:i,bottom:c,left:a}=t.getBoundingClientRect();let l=1,r=1;if(s&&T(t)){const{offsetWidth:g,offsetHeight:p}=t;l=g>0?Math.round(e)/g:1,r=p>0?Math.round(n)/p:1}return{width:e/l,height:n/r,top:o/r,right:i/l,bottom:c/r,left:a/l,x:a/l,y:o/r}},wt=t=>E(t).body,ft=t=>E(t).documentElement,Us=t=>A(t)&&t.constructor.name==="ShadowRoot"||!1,si=t=>t.nodeName==="HTML"?t:T(t)&&t.assignedSlot||A(t)&&t.parentNode||Us(t)&&t.host||ft(t);let qs=0,Qs=0;const Kt=new Map,Zs=(t,s)=>{let e=s?qs:Qs;if(s){const n=Zs(t),o=Kt.get(n)||new Map;Kt.has(n)||Kt.set(n,o),os(o)&&!o.has(s)?(o.set(s,e),qs+=1):e=o.get(s)}else{const n=t.id||t;Kt.has(n)?e=Kt.get(n):(Kt.set(n,e),Qs+=1)}return e},Xt=t=>{var s;return t?Ks(t)?t.defaultView:A(t)?(s=t==null?void 0:t.ownerDocument)==null?void 0:s.defaultView:t:window},ni=t=>Array.isArray(t)||!1,Gs=t=>{if(!A(t))return!1;const{top:s,bottom:e}=fe(t),{clientHeight:n}=ft(t);return s<=n&&e>=0},oi=t=>typeof t=="function"||!1,ii=t=>de(t)&&t.constructor.name==="NodeList"||!1,Et=t=>ft(t).dir==="rtl",ci=t=>A(t)&&["TABLE","TD","TH"].includes(t.nodeName)||!1,M=(t,s)=>t?t.closest(s)||M(t.getRootNode().host,s):null,D=(t,s)=>T(t)?t:(A(s)?s:E()).querySelector(t),is=(t,s)=>(A(s)?s:E()).getElementsByTagName(t),et=(t,s)=>(A(s)?s:E()).querySelectorAll(t),gt=(t,s)=>(s&&A(s)?s:E()).getElementsByClassName(t),Js=(t,s)=>t.matches(s),Yt={},tn=t=>{const{type:s,currentTarget:e}=t;[...Yt[s]].forEach(([n,o])=>{e===n&&[...o].forEach(([i,c])=>{i.apply(n,[t]),typeof c=="object"&&c.once&&B(n,s,i,c)})})},_=(t,s,e,n)=>{Yt[s]||(Yt[s]=new Map);const o=Yt[s];o.has(t)||o.set(t,new Map);const i=o.get(t),{size:c}=i;i.set(e,n),c||t.addEventListener(s,tn,n)},B=(t,s,e,n)=>{const o=Yt[s],i=o&&o.get(t),c=i&&i.get(e),a=c!==void 0?c:n;i&&i.has(e)&&i.delete(e),o&&(!i||!i.size)&&o.delete(t),(!o||!o.size)&&delete Yt[s],(!i||!i.size)&&t.removeEventListener(s,tn,a)},W="fade",m="show",Me="data-bs-dismiss",_e="alert",en="Alert",ai="5.0.13";class st{constructor(s,e){d(this,"_toggleEventListeners",()=>{});const n=D(s);if(!n)throw he(s)?Error(`${this.name} Error: "${s}" is not a valid selector.`):Error(`${this.name} Error: your target is not an instance of HTMLElement.`);const o=Lt.get(n,this.name);o&&o._toggleEventListeners(),this.element=n,this.options=this.defaults&&Ys(this.defaults).length?ti(n,this.defaults,e||{},"bs"):{},Lt.set(n,this.name,this)}get version(){return ai}get name(){return"BaseComponent"}get defaults(){return{}}dispose(){Lt.remove(this.element,this.name),Ys(this).forEach(s=>{delete this[s]})}}const ri=`.${_e}`,li=`[${Me}="${_e}"]`,di=t=>F(t,en),hi=t=>new Ut(t),sn=$(`close.bs.${_e}`),fi=$(`closed.bs.${_e}`),nn=t=>{const{element:s}=t;w(s,fi),t._toggleEventListeners(),t.dispose(),s.remove()};class Ut extends st{constructor(e){super(e);d(this,"dismiss");d(this,"close",()=>{const{element:e}=this;e&&h(e,m)&&(w(e,sn),sn.defaultPrevented||(b(e,m),h(e,W)?P(e,()=>nn(this)):nn(this)))});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{dismiss:o,close:i}=this;o&&n(o,N,i)});this.dismiss=D(li,this.element),this._toggleEventListeners(!0)}get name(){return en}dispose(){this._toggleEventListeners(),super.dispose()}}d(Ut,"selector",ri),d(Ut,"init",hi),d(Ut,"getInstance",di);const C="active",rt="data-bs-toggle",gi="button",on="Button",pi=`[${rt}="${gi}"]`,ui=t=>F(t,on),mi=t=>new qt(t);class qt extends st{constructor(e){super(e);d(this,"isActive",!1);d(this,"toggle",e=>{e&&e.preventDefault();const{element:n,isActive:o}=this;!h(n,"disabled")&&!at(n,"disabled")&&((o?b:f)(n,C),O(n,_s,o?"false":"true"),this.isActive=h(n,C))});d(this,"_toggleEventListeners",e=>{(e?_:B)(this.element,N,this.toggle)});const{element:n}=this;this.isActive=h(n,C),O(n,_s,String(!!this.isActive)),this._toggleEventListeners(!0)}get name(){return on}dispose(){this._toggleEventListeners(),super.dispose()}}d(qt,"selector",pi),d(qt,"init",mi),d(qt,"getInstance",ui);const cs="data-bs-target",kt="carousel",cn="Carousel",an="data-bs-parent",vi="data-bs-container",V=t=>{const s=[cs,an,vi,"href"],e=E(t);return s.map(n=>{const o=at(t,n);return o?n===an?M(t,o):D(o,e):null}).filter(n=>n)[0]},ge=`[data-bs-ride="${kt}"]`,Q=`${kt}-item`,as="data-bs-slide-to",$t="data-bs-slide",Tt="paused",rn={pause:"hover",keyboard:!1,touch:!0,interval:5e3},pt=t=>F(t,cn),bi=t=>new Qt(t);let pe=0,Be=0,rs=0;const ls=$(`slide.bs.${kt}`),ds=$(`slid.bs.${kt}`),ln=t=>{const{index:s,direction:e,element:n,slides:o,options:i}=t;if(t.isAnimating){const c=fs(t),a=e==="left"?"next":"prev",l=e==="left"?"start":"end";f(o[s],C),b(o[s],`${Q}-${a}`),b(o[s],`${Q}-${l}`),b(o[c],C),b(o[c],`${Q}-${l}`),w(n,ds),u.clear(n,$t),t.cycle&&!E(n).hidden&&i.interval&&!t.isPaused&&t.cycle()}};function wi(){const t=pt(this);t&&!t.isPaused&&!u.get(this,Tt)&&f(this,Tt)}function Ei(){const t=pt(this);t&&t.isPaused&&!u.get(this,Tt)&&t.cycle()}function $i(t){t.preventDefault();const s=M(this,ge)||V(this),e=pt(s);if(e&&!e.isAnimating){const n=+(at(this,as)||0);this&&!h(this,C)&&!Number.isNaN(n)&&e.to(n)}}function Ti(t){t.preventDefault();const s=M(this,ge)||V(this),e=pt(s);if(e&&!e.isAnimating){const n=at(this,$t);n==="next"?e.next():n==="prev"&&e.prev()}}const yi=({code:t,target:s})=>{const e=E(s),[n]=[...et(ge,e)].filter(i=>Gs(i)),o=pt(n);if(o&&!o.isAnimating&&!/textarea|input/i.test(s.nodeName)){const i=Et(n);t===(i?Fs:Ws)?o.prev():t===(i?Ws:Fs)&&o.next()}};function dn(t){const{target:s}=t,e=pt(this);e&&e.isTouch&&(e.indicator&&!e.indicator.contains(s)||!e.controls.includes(s))&&(t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault())}function Ci(t){const{target:s}=t,e=pt(this);if(e&&!e.isAnimating&&!e.isTouch){const{controls:n,indicators:o}=e;[...n,...o].every(i=>i===s||i.contains(s))||(pe=t.pageX,this.contains(s)&&(e.isTouch=!0,hn(e,!0)))}}const Si=t=>{Be=t.pageX},Hi=t=>{var o;const{target:s}=t,e=E(s),n=[...et(ge,e)].map(i=>pt(i)).find(i=>i.isTouch);if(n){const{element:i,index:c}=n,a=Et(i);rs=t.pageX,n.isTouch=!1,hn(n),!((o=e.getSelection())!=null&&o.toString().length)&&i.contains(s)&&Math.abs(pe-rs)>120&&(Bepe&&n.to(c+(a?1:-1))),pe=0,Be=0,rs=0}},hs=(t,s)=>{const{indicators:e}=t;[...e].forEach(n=>b(n,C)),t.indicators[s]&&f(e[s],C)},hn=(t,s)=>{const{element:e}=t,n=s?_:B;n(E(e),jo,Si,tt),n(E(e),zo,Hi,tt)},fs=t=>{const{slides:s,element:e}=t,n=D(`.${Q}.${C}`,e);return T(n)?[...s].indexOf(n):-1};class Qt extends st{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const{element:n,options:o,slides:i,controls:c,indicators:a}=this,{touch:l,pause:r,interval:g,keyboard:p}=o,v=e?_:B;r&&g&&(v(n,De,wi),v(n,Ze,Ei)),l&&i.length>2&&(v(n,Fo,Ci,tt),v(n,Ge,dn,{passive:!1}),v(n,Vo,dn,{passive:!1})),c.length&&c.forEach(k=>{k&&v(k,N,Ti)}),a.length&&a.forEach(k=>{v(k,N,$i)}),p&&v(E(n),Pe,yi)});const{element:o}=this;this.direction=Et(o)?"right":"left",this.isTouch=!1,this.slides=gt(Q,o);const{slides:i}=this;if(i.length>=2){const c=fs(this),a=[...i].find(g=>Js(g,`.${Q}-next,.${Q}-next`));this.index=c;const l=E(o);this.controls=[...et(`[${$t}]`,o),...et(`[${$t}][${cs}="#${o.id}"]`,l)].filter((g,p,v)=>p===v.indexOf(g)),this.indicator=D(`.${kt}-indicators`,o),this.indicators=[...this.indicator?et(`[${as}]`,this.indicator):[],...et(`[${as}][${cs}="#${o.id}"]`,l)].filter((g,p,v)=>p===v.indexOf(g));const{options:r}=this;this.options.interval=r.interval===!0?rn.interval:r.interval,a?this.index=[...i].indexOf(a):c<0&&(this.index=0,f(i[0],C),this.indicators.length&&hs(this,0)),this.indicators.length&&hs(this,this.index),this._toggleEventListeners(!0),r.interval&&this.cycle()}}get name(){return cn}get defaults(){return rn}get isPaused(){return h(this.element,Tt)}get isAnimating(){return D(`.${Q}-next,.${Q}-prev`,this.element)!==null}cycle(){const{element:e,options:n,isPaused:o,index:i}=this;u.clear(e,kt),o&&(u.clear(e,Tt),b(e,Tt)),u.set(e,()=>{this.element&&!this.isPaused&&!this.isTouch&&Gs(e)&&this.to(i+1)},n.interval,kt)}pause(){const{element:e,options:n}=this;!this.isPaused&&n.interval&&(f(e,Tt),u.set(e,()=>{},1,Tt))}next(){this.isAnimating||this.to(this.index+1)}prev(){this.isAnimating||this.to(this.index-1)}to(e){const{element:n,slides:o,options:i}=this,c=fs(this),a=Et(n);let l=e;if(!this.isAnimating&&c!==l&&!u.get(n,$t)){cl||c===o.length-1&&l===0)&&(this.direction=a?"left":"right");const{direction:r}=this;l<0?l=o.length-1:l>=o.length&&(l=0);const g=r==="left"?"next":"prev",p=r==="left"?"start":"end",v={relatedTarget:o[l],from:c,to:l,direction:r};dt(ls,v),dt(ds,v),w(n,ls),ls.defaultPrevented||(this.index=l,hs(this,l),zt(o[l])&&h(n,"slide")?u.set(n,()=>{f(o[l],`${Q}-${g}`),It(o[l]),f(o[l],`${Q}-${p}`),f(o[c],`${Q}-${p}`),P(o[l],()=>this.slides&&this.slides.length&&ln(this))},0,$t):(f(o[l],C),b(o[c],C),u.set(n,()=>{u.clear(n,$t),n&&i.interval&&!this.isPaused&&this.cycle(),w(n,ds)},0,$t)))}}dispose(){const{isAnimating:e}=this,n={...this,isAnimating:e};this._toggleEventListeners(),super.dispose(),n.isAnimating&&P(n.slides[n.index],()=>{ln(n)})}}d(Qt,"selector",ge),d(Qt,"init",bi),d(Qt,"getInstance",pt);const Nt="collapsing",K="collapse",fn="Collapse",Pi=`.${K}`,gn=`[${rt}="${K}"]`,Di={parent:null},Re=t=>F(t,fn),xi=t=>new Zt(t),pn=$(`show.bs.${K}`),Ai=$(`shown.bs.${K}`),un=$(`hide.bs.${K}`),Li=$(`hidden.bs.${K}`),Ii=t=>{const{element:s,parent:e,triggers:n}=t;w(s,pn),pn.defaultPrevented||(u.set(s,le,17),e&&u.set(e,le,17),f(s,Nt),b(s,K),L(s,{height:`${s.scrollHeight}px`}),P(s,()=>{u.clear(s),e&&u.clear(e),n.forEach(o=>O(o,ct,"true")),b(s,Nt),f(s,K),f(s,m),L(s,{height:""}),w(s,Ai)}))},mn=t=>{const{element:s,parent:e,triggers:n}=t;w(s,un),un.defaultPrevented||(u.set(s,le,17),e&&u.set(e,le,17),L(s,{height:`${s.scrollHeight}px`}),b(s,K),b(s,m),f(s,Nt),It(s),L(s,{height:"0px"}),P(s,()=>{u.clear(s),e&&u.clear(e),n.forEach(o=>O(o,ct,"false")),b(s,Nt),f(s,K),L(s,{height:""}),w(s,Li)}))},ki=t=>{const{target:s}=t,e=s&&M(s,gn),n=e&&V(e),o=n&&Re(n);o&&o.toggle(),e&&e.tagName==="A"&&t.preventDefault()};class Zt extends st{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const n=e?_:B,{triggers:o}=this;o.length&&o.forEach(i=>n(i,N,ki))});const{element:o,options:i}=this,c=E(o);this.triggers=[...et(gn,c)].filter(a=>V(a)===o),this.parent=T(i.parent)?i.parent:he(i.parent)?V(o)||D(i.parent,c):null,this._toggleEventListeners(!0)}get name(){return fn}get defaults(){return Di}hide(){const{triggers:e,element:n}=this;u.get(n)||(mn(this),e.length&&e.forEach(o=>f(o,`${K}d`)))}show(){const{element:e,parent:n,triggers:o}=this;let i,c;n&&(i=[...et(`.${K}.${m}`,n)].find(a=>Re(a)),c=i&&Re(i)),(!n||!u.get(n))&&!u.get(e)&&(c&&i!==e&&(mn(c),c.triggers.forEach(a=>{f(a,`${K}d`)})),Ii(this),o.length&&o.forEach(a=>b(a,`${K}d`)))}toggle(){h(this.element,m)?this.hide():this.show()}dispose(){this._toggleEventListeners(),super.dispose()}}d(Zt,"selector",Pi),d(Zt,"init",xi),d(Zt,"getInstance",Re);const Ot=["dropdown","dropup","dropstart","dropend"],vn="Dropdown",bn="dropdown-menu",wn=t=>{const s=M(t,"A");return t.tagName==="A"&&Ne(t,"href")&&at(t,"href").slice(-1)==="#"||s&&Ne(s,"href")&&at(s,"href").slice(-1)==="#"},[nt,gs,ps,us]=Ot,En=`[${rt}="${nt}"]`,Gt=t=>F(t,vn),Ni=t=>new Jt(t),Oi=`${bn}-end`,$n=[nt,gs],Tn=[ps,us],yn=["A","BUTTON"],Mi={offset:5,display:"dynamic"},ms=$(`show.bs.${nt}`),Cn=$(`shown.bs.${nt}`),vs=$(`hide.bs.${nt}`),Sn=$(`hidden.bs.${nt}`),Hn=$(`updated.bs.${nt}`),Pn=t=>{const{element:s,menu:e,parentElement:n,options:o}=t,{offset:i}=o;if(z(e,"position")!=="static"){const c=Et(s),a=h(e,Oi);["margin","top","bottom","left","right"].forEach(R=>{const Pt={};Pt[R]="",L(e,Pt)});let r=Ot.find(R=>h(n,R))||nt;const g={dropdown:[i,0,0],dropup:[0,0,i],dropstart:c?[-1,0,0,i]:[-1,i,0],dropend:c?[-1,i,0]:[-1,0,0,i]},p={dropdown:{top:"100%"},dropup:{top:"auto",bottom:"100%"},dropstart:c?{left:"100%",right:"auto"}:{left:"auto",right:"100%"},dropend:c?{left:"auto",right:"100%"}:{left:"100%",right:"auto"},menuStart:c?{right:"0",left:"auto"}:{right:"auto",left:"0"},menuEnd:c?{right:"auto",left:"0"}:{right:"0",left:"auto"}},{offsetWidth:v,offsetHeight:k}=e,{clientWidth:J,clientHeight:y}=ft(s),{left:X,top:q,width:ce,height:mt}=fe(s),S=X-v-i<0,ot=X+v+ce+i>=J,lt=q+k+i>=y,j=q+k+mt+i>=y,Y=q-k-i<0,x=(!c&&a||c&&!a)&&X+ce-v<0,ae=(c&&a||!c&&!a)&&X+v>=J;if(Tn.includes(r)&&S&&ot&&(r=nt),r===ps&&(c?ot:S)&&(r=us),r===us&&(c?S:ot)&&(r=ps),r===gs&&Y&&!j&&(r=nt),r===nt&&j&&!Y&&(r=gs),Tn.includes(r)&<&&dt(p[r],{top:"auto",bottom:0}),$n.includes(r)&&(x||ae)){let R={left:"auto",right:"auto"};!x&&ae&&!c&&(R={left:"auto",right:0}),x&&!ae&&c&&(R={left:0,right:"auto"}),R&&dt(p[r],R)}const Ht=g[r];L(e,{...p[r],margin:`${Ht.map(R=>R&&`${R}px`).join(" ")}`}),$n.includes(r)&&a&&a&&L(e,p[!c&&x||c&&ae?"menuStart":"menuEnd"]),w(n,Hn)}},_i=t=>[...t.children].map(s=>{if(s&&yn.includes(s.tagName))return s;const{firstElementChild:e}=s;return e&&yn.includes(e.tagName)?e:null}).filter(s=>s),Dn=t=>{const{element:s,options:e}=t,n=t.open?_:B,o=E(s);n(o,N,xn),n(o,qe,xn),n(o,Pe,Ri),n(o,Ro,Wi),e.display==="dynamic"&&[Ae,xe].forEach(i=>{n(Xt(s),i,Fi,tt)})},We=t=>{const s=[...Ot,"btn-group","input-group"].map(e=>gt(`${e} ${m}`,E(t))).find(e=>e.length);if(s&&s.length)return[...s[0].children].find(e=>Ot.some(n=>n===at(e,rt)))},xn=t=>{const{target:s,type:e}=t;if(s&&T(s)){const n=We(s),o=n&&Gt(n);if(o){const{parentElement:i,menu:c}=o,a=i&&i.contains(s)&&(s.tagName==="form"||M(s,"form")!==null);[N,Rs].includes(e)&&wn(s)&&t.preventDefault(),!a&&e!==qe&&s!==n&&s!==c&&o.hide()}}},Bi=t=>{const{target:s}=t,e=s&&M(s,En),n=e&&Gt(e);n&&(t.stopPropagation(),n.toggle(),e&&wn(e)&&t.preventDefault())},Ri=t=>{[Je,ts].includes(t.code)&&t.preventDefault()};function Wi(t){const{code:s}=t,e=We(this),n=e&&Gt(e),{activeElement:o}=e&&E(e);if(n&&o){const{menu:i,open:c}=n,a=_i(i);if(a&&a.length&&[Je,ts].includes(s)){let l=a.indexOf(o);o===e?l=0:s===ts?l=l>1?l-1:0:s===Je&&(l=l{(e?_:B)(this.element,N,Bi)});const{parentElement:o}=this.element,[i]=gt(bn,o);i&&(this.parentElement=o,this.menu=i,this._toggleEventListeners(!0))}get name(){return vn}get defaults(){return Mi}toggle(){this.open?this.hide():this.show()}show(){const{element:e,open:n,menu:o,parentElement:i}=this;if(!n){const c=We(e),a=c&&Gt(c);a&&a.hide(),[ms,Cn,Hn].forEach(l=>{l.relatedTarget=e}),w(i,ms),ms.defaultPrevented||(f(o,m),f(i,m),O(e,ct,"true"),Pn(this),this.open=!n,ht(e),Dn(this),w(i,Cn))}}hide(){const{element:e,open:n,menu:o,parentElement:i}=this;n&&([vs,Sn].forEach(c=>{c.relatedTarget=e}),w(i,vs),vs.defaultPrevented||(b(o,m),b(i,m),O(e,ct,"false"),this.open=!n,Dn(this),w(i,Sn)))}dispose(){this.open&&this.hide(),this._toggleEventListeners(),super.dispose()}}d(Jt,"selector",En),d(Jt,"init",Ni),d(Jt,"getInstance",Gt);const U="modal",bs="Modal",ws="Offcanvas",ji="fixed-top",zi="fixed-bottom",An="sticky-top",Ln="position-sticky",In=t=>[...gt(ji,t),...gt(zi,t),...gt(An,t),...gt(Ln,t),...gt("is-fixed",t)],Vi=t=>{const s=wt(t);L(s,{paddingRight:"",overflow:""});const e=In(s);e.length&&e.forEach(n=>{L(n,{paddingRight:"",marginRight:""})})},kn=t=>{const{clientWidth:s}=ft(t),{innerWidth:e}=Xt(t);return Math.abs(e-s)},Nn=(t,s)=>{const e=wt(t),n=parseInt(z(e,"paddingRight"),10),i=z(e,"overflow")==="hidden"&&n?0:kn(t),c=In(e);s&&(L(e,{overflow:"hidden",paddingRight:`${n+i}px`}),c.length&&c.forEach(a=>{const l=z(a,"paddingRight");if(a.style.paddingRight=`${parseInt(l,10)+i}px`,[An,Ln].some(r=>h(a,r))){const r=z(a,"marginRight");a.style.marginRight=`${parseInt(r,10)-i}px`}}))},Z="offcanvas",yt=vt({tagName:"div",className:"popup-container"}),On=(t,s)=>{const e=A(s)&&s.nodeName==="BODY",n=A(s)&&!e?s:yt,o=e?s:wt(t);A(t)&&(n===yt&&o.append(yt),n.append(t))},Mn=(t,s)=>{const e=A(s)&&s.nodeName==="BODY",n=A(s)&&!e?s:yt;A(t)&&(t.remove(),n===yt&&!yt.children.length&&yt.remove())},Es=(t,s)=>{const e=A(s)&&s.nodeName!=="BODY"?s:yt;return A(t)&&e.contains(t)},_n="backdrop",Bn=`${U}-${_n}`,Rn=`${Z}-${_n}`,Wn=`.${U}.${m}`,$s=`.${Z}.${m}`,I=vt("div"),Mt=t=>D(`${Wn},${$s}`,E(t)),Ts=t=>{const s=t?Bn:Rn;[Bn,Rn].forEach(e=>{b(I,e)}),f(I,s)},Fn=(t,s,e)=>{Ts(e),On(I,wt(t)),s&&f(I,W)},jn=()=>{h(I,m)||(f(I,m),It(I))},Fe=()=>{b(I,m)},zn=t=>{Mt(t)||(b(I,W),Mn(I,wt(t)),Vi(t))},Vn=t=>T(t)&&z(t,"visibility")!=="hidden"&&t.offsetParent!==null,Ki=`.${U}`,Kn=`[${rt}="${U}"]`,Xi=`[${Me}="${U}"]`,Xn=`${U}-static`,Yi={backdrop:!0,keyboard:!0},ue=t=>F(t,bs),Ui=t=>new te(t),je=$(`show.bs.${U}`),Yn=$(`shown.bs.${U}`),ys=$(`hide.bs.${U}`),Un=$(`hidden.bs.${U}`),qn=t=>{const{element:s}=t,e=kn(s),{clientHeight:n,scrollHeight:o}=ft(s),{clientHeight:i,scrollHeight:c}=s,a=i!==c;if(!a&&e){const l=Et(s)?"paddingLeft":"paddingRight",r={};r[l]=`${e}px`,L(s,r)}Nn(s,a||n!==o)},Qn=(t,s)=>{const e=s?_:B,{element:n,update:o}=t;e(n,N,Zi),e(Xt(n),xe,o,tt),e(E(n),Pe,Qi)},Zn=t=>{const{triggers:s,element:e,relatedTarget:n}=t;zn(e),L(e,{paddingRight:"",display:""}),Qn(t);const o=je.relatedTarget||s.find(Vn);o&&ht(o),Un.relatedTarget=n,w(e,Un)},Gn=t=>{const{element:s,relatedTarget:e}=t;ht(s),Qn(t,!0),Yn.relatedTarget=e,w(s,Yn)},Jn=t=>{const{element:s,hasFade:e}=t;L(s,{display:"block"}),qn(t),Mt(s)||L(wt(s),{overflow:"hidden"}),f(s,m),At(s,Se),O(s,He,"true"),e?P(s,()=>Gn(t)):Gn(t)},to=t=>{const{element:s,options:e,hasFade:n}=t;e.backdrop&&n&&h(I,m)&&!Mt(s)?(Fe(),P(I,()=>Zn(t))):Zn(t)},qi=t=>{const{target:s}=t,e=s&&M(s,Kn),n=e&&V(e),o=n&&ue(n);o&&(e&&e.tagName==="A"&&t.preventDefault(),o.relatedTarget=e,o.toggle())},Qi=({code:t,target:s})=>{const e=D(Wn,E(s)),n=e&&ue(e);if(n){const{options:o}=n;o.keyboard&&t===es&&h(e,m)&&(n.relatedTarget=null,n.hide())}},Zi=t=>{var n,o;const{currentTarget:s}=t,e=s?ue(s):null;if(e&&s&&!u.get(s)){const{options:i,isStatic:c,modalDialog:a}=e,{backdrop:l}=i,{target:r}=t,g=(o=(n=E(s))==null?void 0:n.getSelection())==null?void 0:o.toString().length,p=a.contains(r),v=r&&M(r,Xi);c&&!p?u.set(s,()=>{f(s,Xn),P(a,()=>Gi(e))},17):(v||!g&&!c&&!p&&l)&&(e.relatedTarget=v||null,e.hide(),t.preventDefault())}},Gi=t=>{const{element:s,modalDialog:e}=t,n=(zt(e)||0)+17;b(s,Xn),u.set(s,()=>u.clear(s),n)};class te extends st{constructor(e,n){super(e,n);d(this,"update",()=>{h(this.element,m)&&qn(this)});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{triggers:o}=this;o.length&&o.forEach(i=>n(i,N,qi))});const{element:o}=this,i=D(`.${U}-dialog`,o);i&&(this.modalDialog=i,this.triggers=[...et(Kn,E(o))].filter(c=>V(c)===o),this.isStatic=this.options.backdrop==="static",this.hasFade=h(o,W),this.relatedTarget=null,this._toggleEventListeners(!0))}get name(){return bs}get defaults(){return Yi}toggle(){h(this.element,m)?this.hide():this.show()}show(){const{element:e,options:n,hasFade:o,relatedTarget:i}=this,{backdrop:c}=n;let a=0;if(!h(e,m)&&(je.relatedTarget=i||void 0,w(e,je),!je.defaultPrevented)){const l=Mt(e);if(l&&l!==e){const r=ue(l)||F(l,ws);r&&r.hide()}c?(Es(I)?Ts(!0):Fn(e,o,!0),a=zt(I),jn(),setTimeout(()=>Jn(this),a)):(Jn(this),l&&h(I,m)&&Fe())}}hide(){const{element:e,hasFade:n,relatedTarget:o}=this;h(e,m)&&(ys.relatedTarget=o||void 0,w(e,ys),ys.defaultPrevented||(b(e,m),O(e,Se,"true"),At(e,He),n?P(e,()=>to(this)):to(this)))}dispose(){const e={...this},{element:n,modalDialog:o}=e,i=()=>super.dispose();this._toggleEventListeners(),this.hide(),h(n,"fade")?P(o,i):i()}}d(te,"selector",Ki),d(te,"init",Ui),d(te,"getInstance",ue);const Ji=`.${Z}`,Cs=`[${rt}="${Z}"]`,tc=`[${Me}="${Z}"]`,ze=`${Z}-toggling`,ec={backdrop:!0,keyboard:!0,scroll:!1},me=t=>F(t,ws),sc=t=>new ee(t),Ve=$(`show.bs.${Z}`),eo=$(`shown.bs.${Z}`),Ss=$(`hide.bs.${Z}`),so=$(`hidden.bs.${Z}`),nc=t=>{const{element:s}=t,{clientHeight:e,scrollHeight:n}=ft(s);Nn(s,e!==n)},no=(t,s)=>{const e=s?_:B,n=E(t.element);e(n,Pe,ac),e(n,N,cc)},oo=t=>{const{element:s,options:e}=t;e.scroll||(nc(t),L(wt(s),{overflow:"hidden"})),f(s,ze),f(s,m),L(s,{visibility:"visible"}),P(s,()=>rc(t))},oc=t=>{const{element:s,options:e}=t,n=Mt(s);s.blur(),!n&&e.backdrop&&h(I,m)&&Fe(),P(s,()=>lc(t))},ic=t=>{const s=M(t.target,Cs),e=s&&V(s),n=e&&me(e);n&&(n.relatedTarget=s,n.toggle(),s&&s.tagName==="A"&&t.preventDefault())},cc=t=>{const{target:s}=t,e=D($s,E(s)),n=D(tc,e),o=e&&me(e);if(o){const{options:i,triggers:c}=o,{backdrop:a}=i,l=M(s,Cs),r=E(e).getSelection();(!I.contains(s)||a!=="static")&&(!(r&&r.toString().length)&&(!e.contains(s)&&a&&(!l||c.includes(s))||n&&n.contains(s))&&(o.relatedTarget=n&&n.contains(s)?n:null,o.hide()),l&&l.tagName==="A"&&t.preventDefault())}},ac=({code:t,target:s})=>{const e=D($s,E(s)),n=e&&me(e);n&&n.options.keyboard&&t===es&&(n.relatedTarget=null,n.hide())},rc=t=>{const{element:s}=t;b(s,ze),At(s,Se),O(s,He,"true"),O(s,"role","dialog"),w(s,eo),no(t,!0),ht(s)},lc=t=>{const{element:s,triggers:e}=t;O(s,Se,"true"),At(s,He),At(s,"role"),L(s,{visibility:""});const n=Ve.relatedTarget||e.find(Vn);n&&ht(n),zn(s),w(s,so),b(s,ze),Mt(s)||no(t)};class ee extends st{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const n=e?_:B;this.triggers.forEach(o=>n(o,N,ic))});const{element:o}=this;this.triggers=[...et(Cs,E(o))].filter(i=>V(i)===o),this.relatedTarget=null,this._toggleEventListeners(!0)}get name(){return ws}get defaults(){return ec}toggle(){h(this.element,m)?this.hide():this.show()}show(){const{element:e,options:n,relatedTarget:o}=this;let i=0;if(!h(e,m)&&(Ve.relatedTarget=o||void 0,eo.relatedTarget=o||void 0,w(e,Ve),!Ve.defaultPrevented)){const c=Mt(e);if(c&&c!==e){const a=me(c)||F(c,bs);a&&a.hide()}n.backdrop?(Es(I)?Ts():Fn(e,!0),i=zt(I),jn(),setTimeout(()=>oo(this),i)):(oo(this),c&&h(I,m)&&Fe())}}hide(){const{element:e,relatedTarget:n}=this;h(e,m)&&(Ss.relatedTarget=n||void 0,so.relatedTarget=n||void 0,w(e,Ss),Ss.defaultPrevented||(f(e,ze),b(e,m),oc(this)))}dispose(){const e={...this},{element:n,options:o}=e,i=o.backdrop?zt(I):0,c=()=>setTimeout(()=>super.dispose(),i+17);this._toggleEventListeners(),this.hide(),h(n,m)?P(n,c):c()}}d(ee,"selector",Ji),d(ee,"init",sc),d(ee,"getInstance",me);const _t="popover",Ke="Popover",ut="tooltip",io=t=>{const s=t===ut,e=s?`${t}-inner`:`${t}-body`,n=s?"":``,o=``,i=``;return`${n+o+i}`},co={top:"top",bottom:"bottom",left:"start",right:"end"},Hs=t=>{const s=/\b(top|bottom|start|end)+/,{element:e,tooltip:n,container:o,options:i,arrow:c}=t;if(n){const a={...co},l=Et(e);L(n,{top:"",left:"",right:"",bottom:""});const r=t.name===Ke,{offsetWidth:g,offsetHeight:p}=n,{clientWidth:v,clientHeight:k,offsetWidth:J}=ft(e);let{placement:y}=i;const{clientWidth:X,offsetWidth:q}=o,mt=z(o,"position")==="fixed",S=Math.abs(mt?X-q:v-J),ot=l&&mt?S:0,lt=v-(l?0:S)-1,{width:j,height:Y,left:x,right:ae,top:Ht}=fe(e,!0),{x:R,y:Pt}={x,y:Ht};L(c,{top:"",left:"",right:"",bottom:""});let Wt=0,Ee="",Dt=0,ks="",re="",Xe="",Ns="";const Ft=c.offsetWidth||0,xt=c.offsetHeight||0,Os=Ft/2;let $e=Ht-p-xt<0,Te=Ht+p+Y+xt>=k,ye=x-g-Ft=lt;const Ye=["left","right"],Ms=["top","bottom"];$e=Ye.includes(y)?Ht+Y/2-p/2-xt<0:$e,Te=Ye.includes(y)?Ht+p/2+Y/2+xt>=k:Te,ye=Ms.includes(y)?x+j/2-g/2=lt:Ce,y=Ye.includes(y)&&ye&&Ce?"top":y,y=y==="top"&&$e?"bottom":y,y=y==="bottom"&&Te?"top":y,y=y==="left"&&ye?"right":y,y=y==="right"&&Ce?"left":y,n.className.includes(y)||(n.className=n.className.replace(s,a[y])),Ye.includes(y)?(y==="left"?Dt=R-g-(r?Ft:0):Dt=R+j+(r?Ft:0),$e&&Te?(Wt=0,Ee=0,re=Ht+Y/2-xt/2):$e?(Wt=Pt,Ee="",re=Y/2-Ft):Te?(Wt=Pt-p+Y,Ee="",re=p-Y/2-Ft):(Wt=Pt-p/2+Y/2,re=p/2-xt/2)):Ms.includes(y)&&(y==="top"?Wt=Pt-p-(r?xt:0):Wt=Pt+Y+(r?xt:0),ye?(Dt=0,Xe=R+j/2-Os):Ce?(Dt="auto",ks=0,Ns=j/2+lt-ae-Os):(Dt=R-g/2+j/2,Xe=g/2-Os)),L(n,{top:`${Wt}px`,bottom:Ee===""?"":`${Ee}px`,left:Dt==="auto"?Dt:`${Dt}px`,right:ks!==""?`${ks}px`:""}),T(c)&&(re!==""&&(c.style.top=`${re}px`),Xe!==""?c.style.left=`${Xe}px`:Ns!==""&&(c.style.right=`${Ns}px`));const zc=$(`updated.bs.${Vt(t.name)}`);w(e,zc)}},Ps={template:io(ut),title:"",customClass:"",trigger:"hover focus",placement:"top",sanitizeFn:void 0,animation:!0,delay:200,container:document.body,content:"",dismissible:!1,btnClose:""},ao="data-original-title",Bt="Tooltip",Ct=(t,s,e)=>{if(he(s)&&s.length){let n=s.trim();oi(e)&&(n=e(n));const i=new DOMParser().parseFromString(n,"text/html");t.append(...i.body.childNodes)}else T(s)?t.append(s):(ii(s)||ni(s)&&s.every(A))&&t.append(...s)},dc=t=>{const s=t.name===Bt,{id:e,element:n,options:o}=t,{title:i,placement:c,template:a,animation:l,customClass:r,sanitizeFn:g,dismissible:p,content:v,btnClose:k}=o,J=s?ut:_t,y={...co};let X=[],q=[];Et(n)&&(y.left="end",y.right="start");const ce=`bs-${J}-${y[c]}`;let mt;if(T(a))mt=a;else{const ot=vt("div");Ct(ot,a,g),mt=ot.firstChild}t.tooltip=T(mt)?mt.cloneNode(!0):void 0;const{tooltip:S}=t;if(S){O(S,"id",e),O(S,"role",ut);const ot=s?`${ut}-inner`:`${_t}-body`,lt=s?null:D(`.${_t}-header`,S),j=D(`.${ot}`,S);t.arrow=D(`.${J}-arrow`,S);const{arrow:Y}=t;if(T(i))X=[i.cloneNode(!0)];else{const x=vt("div");Ct(x,i,g),X=[...x.childNodes]}if(T(v))q=[v.cloneNode(!0)];else{const x=vt("div");Ct(x,v,g),q=[...x.childNodes]}if(p)if(i)if(T(k))X=[...X,k.cloneNode(!0)];else{const x=vt("div");Ct(x,k,g),X=[...X,x.firstChild]}else if(lt&<.remove(),T(k))q=[...q,k.cloneNode(!0)];else{const x=vt("div");Ct(x,k,g),q=[...q,x.firstChild]}s?i&&j&&Ct(j,i,g):(i&<&&Ct(lt,X,g),v&&j&&Ct(j,q,g),t.btn=D(".btn-close",S)||void 0),f(S,"position-fixed"),f(Y,"position-absolute"),h(S,J)||f(S,J),l&&!h(S,W)&&f(S,W),r&&!h(S,r)&&f(S,r),h(S,ce)||f(S,ce)}},hc=t=>{const s=["HTML","BODY"],e=[];let{parentNode:n}=t;for(;n&&!s.includes(n.nodeName);)n=si(n),Us(n)||ci(n)||e.push(n);return e.find((o,i)=>z(o,"position")!=="relative"&&e.slice(i+1).every(c=>z(c,"position")==="static")?o:null)||E(t).body},fc=`[${rt}="${ut}"],[data-tip="${ut}"]`,ro="title";let lo=t=>F(t,Bt);const gc=t=>new St(t),pc=t=>{const{element:s,tooltip:e,container:n,offsetParent:o}=t;At(s,it),Mn(e,n===o?n:o)},ve=t=>{const{tooltip:s,container:e,offsetParent:n}=t;return s&&Es(s,e===n?e:n)},uc=(t,s)=>{const{element:e}=t;t._toggleEventListeners(),Ne(e,ao)&&t.name===Bt&&uo(t),s&&s()},ho=(t,s)=>{const e=s?_:B,{element:n}=t;e(E(n),Ge,t.handleTouch,tt),[Ae,xe].forEach(o=>{e(Xt(n),o,t.update,tt)})},fo=t=>{const{element:s}=t,e=$(`shown.bs.${Vt(t.name)}`);ho(t,!0),w(s,e),u.clear(s,"in")},go=t=>{const{element:s}=t,e=$(`hidden.bs.${Vt(t.name)}`);ho(t),pc(t),w(s,e),u.clear(s,"out")},po=(t,s)=>{const e=s?_:B,{element:n,container:o,offsetParent:i}=t,{offsetHeight:c,scrollHeight:a}=o,l=M(n,`.${U}`),r=M(n,`.${Z}`),g=Xt(n),v=o===i&&c!==a?o:g;e(v,xe,t.update,tt),e(v,Ae,t.update,tt),l&&e(l,`hide.bs.${U}`,t.handleHide),r&&e(r,`hide.bs.${Z}`,t.handleHide)},uo=(t,s)=>{const e=[ao,ro],{element:n}=t;O(n,e[s?0:1],s||at(n,e[0])||""),At(n,e[s?1:0])};class St extends st{constructor(e,n){super(e,n);d(this,"handleFocus",()=>ht(this.element));d(this,"handleShow",()=>this.show());d(this,"handleHide",()=>this.hide());d(this,"update",()=>{Hs(this)});d(this,"toggle",()=>{const{tooltip:e}=this;e&&!ve(this)?this.show():this.hide()});d(this,"handleTouch",({target:e})=>{const{tooltip:n,element:o}=this;n&&n.contains(e)||e===o||e&&o.contains(e)||this.hide()});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{element:o,options:i,btn:c}=this,{trigger:a}=i,r=!!(this.name!==Bt&&i.dismissible);a.includes("manual")||(this.enabled=!!e,a.split(" ").forEach(p=>{p===Wo?(n(o,Rs,this.handleShow),n(o,De,this.handleShow),r||(n(o,Ze,this.handleHide),n(E(o),Ge,this.handleTouch,tt))):p===N?n(o,p,r?this.handleShow:this.toggle):p===qe&&(n(o,Qe,this.handleShow),r||n(o,Bs,this.handleHide),qo&&n(o,N,this.handleFocus)),r&&c&&n(c,N,this.handleHide)}))});const{element:o}=this,i=this.name===Bt,c=i?ut:_t,a=i?Bt:Ke;lo=r=>F(r,a),this.enabled=!0,this.id=`${c}-${Zs(o,c)}`;const{options:l}=this;!l.title&&i||!i&&!l.content||(dt(Ps,{titleAttr:""}),Ne(o,ro)&&i&&typeof l.title=="string"&&uo(this,l.title),this.container=hc(o),this.offsetParent=["sticky","fixed"].some(r=>z(this.container,"position")===r)?this.container:E(this.element).body,dc(this),this._toggleEventListeners(!0))}get name(){return Bt}get defaults(){return Ps}show(){const{options:e,tooltip:n,element:o,container:i,offsetParent:c,id:a}=this,{animation:l}=e,r=u.get(o,"out"),g=i===c?i:c;u.clear(o,"out"),n&&!r&&!ve(this)&&u.set(o,()=>{const p=$(`show.bs.${Vt(this.name)}`);w(o,p),p.defaultPrevented||(On(n,g),O(o,it,`#${a}`),this.update(),po(this,!0),h(n,m)||f(n,m),l?P(n,()=>fo(this)):fo(this))},17,"in")}hide(){const{options:e,tooltip:n,element:o}=this,{animation:i,delay:c}=e;u.clear(o,"in"),n&&ve(this)&&u.set(o,()=>{const a=$(`hide.bs.${Vt(this.name)}`);w(o,a),a.defaultPrevented||(this.update(),b(n,m),po(this),i?P(n,()=>go(this)):go(this))},c+17,"out")}enable(){const{enabled:e}=this;e||(this._toggleEventListeners(!0),this.enabled=!e)}disable(){const{tooltip:e,options:n,enabled:o}=this,{animation:i}=n;o&&(e&&ve(this)&&i?(this.hide(),P(e,()=>this._toggleEventListeners())):this._toggleEventListeners(),this.enabled=!o)}toggleEnabled(){this.enabled?this.disable():this.enable()}dispose(){const{tooltip:e,options:n}=this,o={...this,name:this.name},i=()=>setTimeout(()=>uc(o,()=>super.dispose()),17);n.animation&&ve(o)?(this.options.delay=0,this.hide(),P(e,i)):i()}}d(St,"selector",fc),d(St,"init",gc),d(St,"getInstance",lo),d(St,"styleTip",Hs);const mc=`[${rt}="${_t}"],[data-tip="${_t}"]`,vc=dt({},Ps,{template:io(_t),content:"",dismissible:!1,btnClose:''}),bc=t=>F(t,Ke),wc=t=>new Rt(t);class Rt extends St{constructor(e,n){super(e,n);d(this,"show",()=>{super.show();const{options:e,btn:n}=this;e.dismissible&&n&&setTimeout(()=>ht(n),17)})}get name(){return Ke}get defaults(){return vc}}d(Rt,"selector",mc),d(Rt,"init",wc),d(Rt,"getInstance",bc),d(Rt,"styleTip",Hs);const Ec="scrollspy",mo="ScrollSpy",$c='[data-bs-spy="scroll"]',Tc={offset:10,target:null},yc=t=>F(t,mo),Cc=t=>new se(t),vo=$(`activate.bs.${Ec}`),Sc=t=>{const{target:s,scrollTarget:e,options:n,itemsLength:o,scrollHeight:i,element:c}=t,{offset:a}=n,l=ns(e),r=s&&is("A",s),g=e?bo(e):i;if(t.scrollTop=l?e.scrollY:e.scrollTop,r&&(g!==i||o!==r.length)){let p,v,k;t.items=[],t.offsets=[],t.scrollHeight=g,t.maxScroll=t.scrollHeight-Hc(t),[...r].forEach(J=>{p=at(J,"href"),v=p&&p.charAt(0)==="#"&&p.slice(-1)!=="#"&&D(p,E(c)),v&&(t.items.push(J),k=fe(v),t.offsets.push((l?k.top+t.scrollTop:v.offsetTop)-a))}),t.itemsLength=t.items.length}},bo=t=>T(t)?t.scrollHeight:ft(t).scrollHeight,Hc=({element:t,scrollTarget:s})=>ns(s)?s.innerHeight:fe(t).height,wo=t=>{[...is("A",t)].forEach(s=>{h(s,C)&&b(s,C)})},Eo=(t,s)=>{const{target:e,element:n}=t;T(e)&&wo(e),t.activeItem=s,f(s,C);const o=[];let i=s;for(;i!==wt(n);)i=i.parentElement,(h(i,"nav")||h(i,"dropdown-menu"))&&o.push(i);o.forEach(c=>{const a=c.previousElementSibling;a&&!h(a,C)&&f(a,C)}),vo.relatedTarget=s,w(n,vo)};class se extends st{constructor(e,n){super(e,n);d(this,"refresh",()=>{const{target:e}=this;if(T(e)&&e.offsetHeight>0){Sc(this);const{scrollTop:n,maxScroll:o,itemsLength:i,items:c,activeItem:a}=this;if(n>=o){const r=c[i-1];a!==r&&Eo(this,r);return}const{offsets:l}=this;if(a&&n0){this.activeItem=null,e&&wo(e);return}c.forEach((r,g)=>{a!==r&&n>=l[g]&&(typeof l[g+1]>"u"||n{(e?_:B)(this.scrollTarget,Ae,this.refresh,tt)});const{element:o,options:i}=this;this.target=D(i.target,E(o)),this.target&&(this.scrollTarget=o.clientHeightF(t,$o),Pc=t=>new ne(t),Ds=$(`show.bs.${be}`),Co=$(`shown.bs.${be}`),xs=$(`hide.bs.${be}`),So=$(`hidden.bs.${be}`),we=new Map,Ho=t=>{const{tabContent:s,nav:e}=t;s&&h(s,Nt)&&(s.style.height="",b(s,Nt)),e&&u.clear(e)},Po=t=>{const{element:s,tabContent:e,content:n,nav:o}=t,{tab:i}=T(o)&&we.get(o)||{tab:null};if(e&&n&&h(n,W)){const{currentHeight:c,nextHeight:a}=we.get(s)||{currentHeight:0,nextHeight:0};c===a?Ho(t):setTimeout(()=>{e.style.height=`${a}px`,It(e),P(e,()=>Ho(t))},50)}else o&&u.clear(o);Co.relatedTarget=i,w(s,Co)},Do=t=>{const{element:s,content:e,tabContent:n,nav:o}=t,{tab:i,content:c}=o&&we.get(o)||{tab:null,content:null};let a=0;if(n&&e&&h(e,W)&&([c,e].forEach(l=>{T(l)&&f(l,"overflow-hidden")}),a=T(c)?c.scrollHeight:0),Ds.relatedTarget=i,So.relatedTarget=s,w(s,Ds),!Ds.defaultPrevented){if(e&&f(e,C),c&&b(c,C),n&&e&&h(e,W)){const l=e.scrollHeight;we.set(s,{currentHeight:a,nextHeight:l,tab:null,content:null}),f(n,Nt),n.style.height=`${a}px`,It(n),[c,e].forEach(r=>{r&&b(r,"overflow-hidden")})}e&&e&&h(e,W)?setTimeout(()=>{f(e,m),P(e,()=>{Po(t)})},1):(e&&f(e,m),Po(t)),i&&w(i,So)}},xo=t=>{const{nav:s}=t;if(!T(s))return{tab:null,content:null};const e=gt(C,s);let n=null;e.length===1&&!Ot.some(i=>h(e[0].parentElement,i))?[n]=e:e.length>1&&(n=e[e.length-1]);const o=T(n)?V(n):null;return{tab:n,content:o}},Ao=t=>{if(!T(t))return null;const s=M(t,`.${Ot.join(",.")}`);return s?D(`.${Ot[0]}-toggle`,s):null},Dc=t=>{const s=yo(t.target);s&&(t.preventDefault(),s.show())};class ne extends st{constructor(e){super(e);d(this,"_toggleEventListeners",e=>{(e?_:B)(this.element,N,Dc)});const{element:n}=this,o=V(n);if(o){const i=M(n,".nav"),c=M(o,".tab-content");this.nav=i,this.content=o,this.tabContent=c,this.dropdown=Ao(n);const{tab:a}=xo(this);if(i&&!a){const l=D(To,i),r=l&&V(l);r&&(f(l,C),f(r,m),f(r,C),O(n,Ue,"true"))}this._toggleEventListeners(!0)}}get name(){return $o}show(){const{element:e,content:n,nav:o,dropdown:i}=this;if(!(o&&u.get(o))&&!h(e,C)){const{tab:c,content:a}=xo(this);if(o&&we.set(o,{tab:c,content:a,currentHeight:0,nextHeight:0}),xs.relatedTarget=e,T(c)&&(w(c,xs),!xs.defaultPrevented)){f(e,C),O(e,Ue,"true");const l=T(c)&&Ao(c);if(l&&h(l,C)&&b(l,C),o){const r=()=>{c&&(b(c,C),O(c,Ue,"false")),i&&!h(i,C)&&f(i,C)};a&&(h(a,W)||n&&h(n,W))?u.set(o,r,1):r()}a&&(b(a,m),h(a,W)?P(a,()=>Do(this)):Do(this))}}}dispose(){this._toggleEventListeners(),super.dispose()}}d(ne,"selector",To),d(ne,"init",Pc),d(ne,"getInstance",yo);const G="toast",Lo="Toast",xc=`.${G}`,Ac=`[${Me}="${G}"]`,Io=`[${rt}="${G}"]`,oe="showing",ko="hide",Lc={animation:!0,autohide:!0,delay:5e3},As=t=>F(t,Lo),Ic=t=>new ie(t),No=$(`show.bs.${G}`),kc=$(`shown.bs.${G}`),Oo=$(`hide.bs.${G}`),Nc=$(`hidden.bs.${G}`),Mo=t=>{const{element:s,options:e}=t;b(s,oe),u.clear(s,oe),w(s,kc),e.autohide&&u.set(s,()=>t.hide(),e.delay,G)},_o=t=>{const{element:s}=t;b(s,oe),b(s,m),f(s,ko),u.clear(s,G),w(s,Nc)},Oc=t=>{const{element:s,options:e}=t;f(s,oe),e.animation?(It(s),P(s,()=>_o(t))):_o(t)},Mc=t=>{const{element:s,options:e}=t;u.set(s,()=>{b(s,ko),It(s),f(s,m),f(s,oe),e.animation?P(s,()=>Mo(t)):Mo(t)},17,oe)},_c=t=>{u.clear(t.element,G),t._toggleEventListeners()},Bc=t=>{const{target:s}=t,e=s&&M(s,Io),n=e&&V(e),o=n&&As(n);o&&(e&&e.tagName==="A"&&t.preventDefault(),o.relatedTarget=e,o.show())},Rc=t=>{const s=t.target,e=As(s),{type:n,relatedTarget:o}=t;e&&s!==o&&!s.contains(o)&&([De,Qe].includes(n)?u.clear(s,G):u.set(s,()=>e.hide(),e.options.delay,G))};class ie extends st{constructor(e,n){super(e,n);d(this,"show",()=>{const{element:e,isShown:n}=this;e&&!n&&(w(e,No),No.defaultPrevented||Mc(this))});d(this,"hide",()=>{const{element:e,isShown:n}=this;e&&n&&(w(e,Oo),Oo.defaultPrevented||Oc(this))});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{element:o,triggers:i,dismiss:c,options:a,hide:l}=this;c&&n(c,N,l),a.autohide&&[Qe,Bs,De,Ze].forEach(r=>n(o,r,Rc)),i.length&&i.forEach(r=>n(r,N,Bc))});const{element:o,options:i}=this;i.animation&&!h(o,W)?f(o,W):!i.animation&&h(o,W)&&b(o,W),this.dismiss=D(Ac,o),this.triggers=[...et(Io,E(o))].filter(c=>V(c)===o),this._toggleEventListeners(!0)}get name(){return Lo}get defaults(){return Lc}get isShown(){return h(this.element,m)}dispose(){const{element:e,isShown:n}=this;n&&b(e,m),_c(this),super.dispose()}}d(ie,"selector",xc),d(ie,"init",Ic),d(ie,"getInstance",As);const Ls=new Map;[Ut,qt,Qt,Zt,Jt,te,ee,Rt,se,ne,ie,St].forEach(t=>Ls.set(t.prototype.name,t));const Wc=(t,s)=>{[...s].forEach(e=>t(e))},Fc=(t,s)=>{const e=Lt.getAllFor(t);e&&[...e].forEach(([n,o])=>{s.contains(n)&&o.dispose()})},Is=t=>{const s=t&&t.nodeName?t:document,e=[...is("*",s)];Ls.forEach(n=>{const{init:o,selector:i}=n;Wc(o,e.filter(c=>Js(c,i)))})},jc=t=>{const s=t&&t.nodeName?t:document;Ls.forEach(e=>{Fc(e.prototype.name,s)})};return document.body?Is():_(document,"DOMContentLoaded",()=>Is(),{once:!0}),H.Alert=Ut,H.Button=qt,H.Carousel=Qt,H.Collapse=Zt,H.Dropdown=Jt,H.Modal=te,H.Offcanvas=ee,H.Popover=Rt,H.ScrollSpy=se,H.Tab=ne,H.Toast=ie,H.Tooltip=St,H.initCallback=Is,H.removeDataAPI=jc,Object.defineProperty(H,Symbol.toStringTag,{value:"Module"}),H}({});
//# sourceMappingURL=bootstrap-native.js.map
diff --git a/docs/js/menu-wc_es5.js b/docs/js/menu-wc_es5.js
index 58e6bb7..3aeb598 100644
--- a/docs/js/menu-wc_es5.js
+++ b/docs/js/menu-wc_es5.js
@@ -1,23 +1,22 @@
'use strict';
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
-function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
-function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
+function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
+function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
+function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
+function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
-function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
-function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
-function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }
+function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
+function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
+function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
+function _wrapNativeSuper(t) { var r = "function" == typeof Map ? new Map() : void 0; return _wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !_isNativeFunction(t)) return t; if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); }
function _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
-function _isNativeFunction(fn) { try { return Function.toString.call(fn).indexOf("[native code]") !== -1; } catch (e) { return typeof fn === "function"; } }
-function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
-function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
+function _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf("[native code]"); } catch (n) { return "function" == typeof t; } }
+function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
+function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
customElements.define('compodoc-menu', /*#__PURE__*/function (_HTMLElement) {
- _inherits(_class, _HTMLElement);
function _class() {
var _this;
_classCallCheck(this, _class);
@@ -25,7 +24,8 @@ customElements.define('compodoc-menu', /*#__PURE__*/function (_HTMLElement) {
_this.isNormalMode = _this.getAttribute('mode') === 'normal';
return _this;
}
- _createClass(_class, [{
+ _inherits(_class, _HTMLElement);
+ return _createClass(_class, [{
key: "connectedCallback",
value: function connectedCallback() {
this.render(this.isNormalMode);
@@ -37,5 +37,4 @@ customElements.define('compodoc-menu', /*#__PURE__*/function (_HTMLElement) {
this.innerHTML = tp.strings;
}
}]);
- return _class;
-}( /*#__PURE__*/_wrapNativeSuper(HTMLElement)));
\ No newline at end of file
+}(/*#__PURE__*/_wrapNativeSuper(HTMLElement)));
\ No newline at end of file
diff --git a/docs/js/menu.js b/docs/js/menu.js
index 984c65d..9b6884a 100644
--- a/docs/js/menu.js
+++ b/docs/js/menu.js
@@ -150,17 +150,17 @@ document.addEventListener('DOMContentLoaded', function () {
faAngleUpClass = 'ion-ios-arrow-up',
faAngleDownClass = 'ion-ios-arrow-down',
toggleItemMenu = function (e) {
- var element = $(e.target),
- parent = element[0].parentNode,
+ var element = e.target,
+ parent = element.parentNode,
parentLink,
elementIconChild;
if (parent) {
- if (!$(parent).hasClass('linked')) {
+ if (!parent.classList.contains('linked')) {
e.preventDefault();
} else {
parentLink = parent.parentNode;
- if (parentLink && element.hasClass('link-name')) {
- $(parentLink).trigger('click');
+ if (parentLink && element.classList.contains('link-name')) {
+ parentLink.trigger('click');
}
}
elementIconChild = parent.getElementsByClassName(faAngleUpClass)[0];
@@ -168,13 +168,12 @@ document.addEventListener('DOMContentLoaded', function () {
elementIconChild = parent.getElementsByClassName(faAngleDownClass)[0];
}
if (elementIconChild) {
- elementIconChild = $(elementIconChild);
- if (elementIconChild.hasClass(faAngleUpClass)) {
- elementIconChild.addClass(faAngleDownClass);
- elementIconChild.removeClass(faAngleUpClass);
+ if (elementIconChild.classList.contains(faAngleUpClass)) {
+ elementIconChild.classList.add(faAngleDownClass);
+ elementIconChild.classList.remove(faAngleUpClass);
} else {
- elementIconChild.addClass(faAngleUpClass);
- elementIconChild.removeClass(faAngleDownClass);
+ elementIconChild.classList.add(faAngleUpClass);
+ elementIconChild.classList.remove(faAngleDownClass);
}
}
}
diff --git a/docs/js/search/search-lunr.js b/docs/js/search/search-lunr.js
index 35e7dde..24f483b 100644
--- a/docs/js/search/search-lunr.js
+++ b/docs/js/search/search-lunr.js
@@ -1,12 +1,11 @@
-(function(compodoc) {
-
+(function (compodoc) {
function LunrSearchEngine() {
this.index = undefined;
this.store = {};
this.name = 'LunrSearchEngine';
}
- LunrSearchEngine.prototype.init = function() {
+ LunrSearchEngine.prototype.init = function () {
var that = this,
d = new promise.Promise();
@@ -17,13 +16,13 @@
return d;
};
- LunrSearchEngine.prototype.search = function(q, offset, length) {
+ LunrSearchEngine.prototype.search = function (q, offset, length) {
var that = this,
results = [],
d = new promise.Promise();
if (this.index) {
- results = $.map(this.index.search('*' + q + '*'), function(result) {
+ results = this.index.search('*' + q + '*').map(function (result) {
var doc = that.store[result.ref];
return {
@@ -43,7 +42,7 @@
return d;
};
- compodoc.addEventListener(compodoc.EVENTS.READY, function(event) {
+ compodoc.addEventListener(compodoc.EVENTS.READY, function (event) {
var engine = new LunrSearchEngine(),
initialized = false;
@@ -56,8 +55,7 @@
query: query
};
- engine.init()
- .then(function() {
+ engine.init().then(function () {
initialized = true;
compodoc.dispatchEvent({
type: compodoc.EVENTS.SEARCH_READY
diff --git a/docs/js/search/search.js b/docs/js/search/search.js
index 6451d3d..5851086 100644
--- a/docs/js/search/search.js
+++ b/docs/js/search/search.js
@@ -1,8 +1,7 @@
-(function(compodoc) {
- var usePushState = (typeof history.pushState !== 'undefined'),
-
- // DOM Elements
- $body = $('body'),
+(function (compodoc) {
+ var usePushState = typeof history.pushState !== 'undefined',
+ // DOM Elements
+ $body = document.querySelector('body'),
$searchResults,
$searchInput,
$searchList,
@@ -16,10 +15,11 @@
function throttle(fn, wait) {
var timeout;
- return function() {
- var ctx = this, args = arguments;
+ return function () {
+ var ctx = this,
+ args = arguments;
if (!timeout) {
- timeout = setTimeout(function() {
+ timeout = setTimeout(function () {
timeout = undefined;
fn.apply(ctx, args);
}, wait);
@@ -30,24 +30,28 @@
function displayResults(res) {
var noResults = res.count == 0;
var groups = {};
- $searchResults.toggleClass('no-results', noResults);
+ if (noResults) {
+ $searchResults.classList.add('no-results');
+ } else {
+ $searchResults.classList.remove('no-results');
+ }
// Clear old results
- $searchList.empty();
+ $searchList.innerText = '';
// Display title for research
- $searchResultsCount.text(res.count);
- $searchQuery.text(res.query);
+ $searchResultsCount.innerText = res.count;
+ $searchQuery.innerText = res.query;
// Group result by context
- res.results.forEach(function(res) {
+ res.results.forEach(function (res) {
var context = res.title.split(' - ')[0];
if (typeof groups[context] === 'undefined') {
groups[context] = {
results: [res]
- }
+ };
} else {
- groups[context].results.push(res)
+ groups[context].results.push(res);
}
});
@@ -55,34 +59,48 @@
for (var i = 0; i < sortedGroups.length; i++) {
var property = sortedGroups[i];
-
- var $li = $('', {
- 'class': 'search-results-group'
- });
+
+ var $li = document.createElement('li');
+ $li.classList.add('search-results-group');
var finalPropertyLabel = '';
var propertyLabels = property.split('-');
-
- if (propertyLabels.length === 2 && propertyLabels[0] !== 'miscellaneous' && propertyLabels[0] !== 'additional') {
- finalPropertyLabel = propertyLabels[0].charAt(0).toUpperCase() + propertyLabels[0].substring(1) + ' - ' + propertyLabels[1].charAt(0).toUpperCase() + propertyLabels[1].substring(1) + ' (' + groups[property].results.length + ')';
+
+ if (
+ propertyLabels.length === 2 &&
+ propertyLabels[0] !== 'miscellaneous' &&
+ propertyLabels[0] !== 'additional'
+ ) {
+ finalPropertyLabel =
+ propertyLabels[0].charAt(0).toUpperCase() +
+ propertyLabels[0].substring(1) +
+ ' - ' +
+ propertyLabels[1].charAt(0).toUpperCase() +
+ propertyLabels[1].substring(1) +
+ ' (' +
+ groups[property].results.length +
+ ')';
} else if (propertyLabels[0] === 'additional') {
- finalPropertyLabel = 'Additional pages' + ' (' + groups[property].results.length + ')'
+ finalPropertyLabel =
+ 'Additional pages' + ' (' + groups[property].results.length + ')';
} else {
- finalPropertyLabel = propertyLabels[0].charAt(0).toUpperCase() + propertyLabels[0].substring(1) + ' (' + groups[property].results.length + ')'
+ finalPropertyLabel =
+ propertyLabels[0].charAt(0).toUpperCase() +
+ propertyLabels[0].substring(1) +
+ ' (' +
+ groups[property].results.length +
+ ')';
}
- var $groupTitle = $('', {
- 'text': finalPropertyLabel
- });
- $groupTitle.appendTo($li);
+ var $groupTitle = document.createElement('h3');
+ $groupTitle.innerText = finalPropertyLabel;
+ $li.appendChild($groupTitle);
- var $ulResults = $('', {
- 'class': 'search-results-list'
- })
+ var $ulResults = document.createElement('ul');
+ $ulResults.classList.add('search-results-list');
- groups[property].results.forEach(function(res) {
+ groups[property].results.forEach(function (res) {
var link = '';
- var $liResult = $('- ', {
- 'class': 'search-results-item'
- });
+ var $liResult = document.createElement('li');
+ $liResult.classList.add('search-results-item');
switch (COMPODOC_CURRENT_PAGE_DEPTH) {
case 0:
link = './';
@@ -94,72 +112,72 @@
case 5:
link = '../'.repeat(COMPODOC_CURRENT_PAGE_DEPTH);
break;
- };
- var finalResLabel = res.title.split(' - ')[1].charAt(0).toUpperCase() + res.title.split(' - ')[1].substring(1);
- var $link = $('', {
- 'href': link + res.url,
- 'text': finalResLabel
- });
- $link.appendTo($liResult);
- $liResult.appendTo($ulResults);
+ }
+ var finalResLabel =
+ res.title.split(' - ')[1].charAt(0).toUpperCase() +
+ res.title.split(' - ')[1].substring(1);
+ var $link = document.createElement('a');
+ $link.innerText = finalResLabel;
+ $link.href = link + res.url;
+ $liResult.appendChild($link);
+ $ulResults.appendChild($liResult);
});
- $ulResults.appendTo($li);
+ $li.appendChild($ulResults);
- $li.appendTo($searchList);
+ $searchList.appendChild($li);
}
}
function launchSearch(q) {
- $body.addClass('with-search');
+ $body.classList.add('with-search');
- if ($xsMenu.css('display') === 'block') {
- $mainContainer.css('height', 'calc(100% - 100px)');
- $mainContainer.css('margin-top', '100px');
+ if ($xsMenu.style.display === 'block') {
+ $mainContainer.style.height = 'calc(100% - 100px)';
+ $mainContainer.style.marginTop = '100px';
}
- throttle(compodoc.search.query(q, 0, MAX_SEARCH_RESULTS)
- .then(function(results) {
- displayResults(results);
- }), 1000);
+ throttle(
+ compodoc.search.query(q, 0, MAX_SEARCH_RESULTS).then(function (results) {
+ displayResults(results);
+ }),
+ 1000
+ );
}
function closeSearch() {
- $body.removeClass('with-search');
- if ($xsMenu.css('display') === 'block') {
- $mainContainer.css('height', 'calc(100% - 50px)');
- $mainContainer.css('margin-top', '50px');
+ $body.classList.remove('with-search');
+ if ($xsMenu.style.display === 'block') {
+ $mainContainer.style.height = 'calc(100% - 50px)';
}
}
function bindMenuButton() {
- document.getElementById('btn-menu').addEventListener('click', function() {
- if ($xsMenu.css('display') === 'none') {
- $body.removeClass('with-search');
- $mainContainer.css('height', 'calc(100% - 50px)');
- $mainContainer.css('margin-top', '50px');
+ document.getElementById('btn-menu').addEventListener('click', function () {
+ if ($xsMenu.style.display === 'none') {
+ $body.classList.remove('with-search');
+ $mainContainer.style.height = 'calc(100% - 50px)';
}
- $.each($searchInputs, function(index, item){
- var item = $(item);
- item.val('');
+ $searchInputs.forEach((item, index) => {
+ item.value = '';
});
});
}
function bindSearch() {
// Bind DOM
- $searchInputs = $('#book-search-input input');
+ $searchInputs = document.querySelectorAll('#book-search-input input');
- $searchResults = $('.search-results');
- $searchList = $searchResults.find('.search-results-list');
- $searchTitle = $searchResults.find('.search-results-title');
- $searchResultsCount = $searchTitle.find('.search-results-count');
- $searchQuery = $searchTitle.find('.search-query');
- $mainContainer = $('.container-fluid');
- $xsMenu = $('.xs-menu');
+ $searchResults = document.querySelector('.search-results');
+ $searchList = $searchResults.querySelector('.search-results-list');
+ $searchTitle = $searchResults.querySelector('.search-results-title');
+ $searchResultsCount = $searchTitle.querySelector('.search-results-count');
+ $searchQuery = $searchTitle.querySelector('.search-query');
+ $mainContainer = document.querySelector('.container-fluid');
+ $xsMenu = document.querySelector('.xs-menu');
// Launch query based on input content
function handleUpdate(item) {
- var q = item.val();
+ var q = item.value;
if (q.length == 0) {
closeSearch();
@@ -172,30 +190,23 @@
// Detect true content change in search input
var propertyChangeUnbound = false;
- $.each($searchInputs, function(index, item){
- var item = $(item);
+ $searchInputs.forEach((item, index) => {
// HTML5 (IE9 & others)
- item.on('input', function(e) {
- // Unbind propertychange event for IE9+
- if (!propertyChangeUnbound) {
- $(this).unbind('propertychange');
- propertyChangeUnbound = true;
- }
-
- handleUpdate($(this));
+ item.addEventListener('input', function (e) {
+ handleUpdate(this);
});
// Workaround for IE < 9
- item.on('propertychange', function(e) {
+ item.addEventListener('propertychange', function (e) {
if (e.originalEvent.propertyName == 'value') {
- handleUpdate($(this));
+ handleUpdate(this);
}
});
// Push to history on blur
- item.on('blur', function(e) {
+ item.addEventListener('blur', function (e) {
// Update history state
if (usePushState) {
- var uri = updateQueryString('q', $(this).val());
- if ($(this).val() !== '') {
+ var uri = updateQueryString('q', this.value);
+ if (this.value !== '') {
history.pushState({ path: uri }, null, uri);
}
}
@@ -207,16 +218,15 @@
var q = getParameterByName('q');
if (q && q.length > 0) {
// Update search inputs
- $.each($searchInputs, function(index, item){
- var item = $(item);
- item.val(q)
+ $searchInputs.forEach((item, index) => {
+ item.value = q;
});
// Launch search
launchSearch(q);
}
}
- compodoc.addEventListener(compodoc.EVENTS.SEARCH_READY, function(event) {
+ compodoc.addEventListener(compodoc.EVENTS.SEARCH_READY, function (event) {
bindSearch();
bindMenuButton();
@@ -247,22 +257,17 @@
else {
hash = url.split('#');
url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, '');
- if (typeof hash[1] !== 'undefined' && hash[1] !== null)
- url += '#' + hash[1];
+ if (typeof hash[1] !== 'undefined' && hash[1] !== null) url += '#' + hash[1];
return url;
}
- }
- else {
+ } else {
if (typeof value !== 'undefined' && value !== null) {
var separator = url.indexOf('?') !== -1 ? '&' : '?';
hash = url.split('#');
url = hash[0] + separator + key + '=' + value;
- if (typeof hash[1] !== 'undefined' && hash[1] !== null)
- url += '#' + hash[1];
- return url;
- }
- else
+ if (typeof hash[1] !== 'undefined' && hash[1] !== null) url += '#' + hash[1];
return url;
+ } else return url;
}
}
})(compodoc);
diff --git a/docs/js/search/search_index.js b/docs/js/search/search_index.js
index d7d3931..191690a 100644
--- a/docs/js/search/search_index.js
+++ b/docs/js/search/search_index.js
@@ -1,4 +1,4 @@
var COMPODOC_SEARCH_INDEX = {
- "index": {"version":"2.3.9","fields":["title","body"],"fieldVectors":[["title/interfaces/AWBOptions.html",[0,1.352,1,1.806]],["body/interfaces/AWBOptions.html",[0,1.565,1,3.158,2,2.639,3,0.5,4,0.5,5,0.443,6,0.839,7,0.285,8,2.335,9,0.443,10,1.298,11,1.09,12,3.525,13,2.7,14,0.561,15,0.035,16,1.081,17,3.336,18,3.931,19,3.046,20,0.692,21,3.931,22,2.639,23,1.69,24,3.046,25,1.875,26,3.046,27,1.57,28,2.215,29,3.046,30,0.692,31,3.77,32,1.31,33,2.16,34,2.639,35,2.7,36,3.046,37,3.336,38,3.046,39,2.335,40,0.145,41,2.215,42,1.89,43,3.046,44,1.31,45,2.237,46,2.215,47,3.046,48,2.335,49,1.717,50,0.025,51,0.025]],["title/components/AppComponent.html",[52,0.868,53,1.131]],["body/components/AppComponent.html",[3,0.566,4,0.566,5,0.501,15,0.034,16,0.782,20,0.782,30,0.501,40,0.164,50,0.027,51,0.027,52,1.521,53,2.067,54,2.394,55,2.137,56,2.137,57,3.444,58,2.137,59,3.194,60,2.418,61,2.394,62,2.635,63,1.77,64,2.635,65,2.394,66,2.137,67,2.983,68,2.137,69,0.965,70,2.137,71,1.481,72,1.77,73,2.137,74,1.481,75,2.137,76,1.481,77,2.137,78,1.481,79,2.137,80,1.481,81,1.941,82,2.137,83,2.137]],["title/modules/AppModule.html",[84,1.806,85,1.806]],["body/modules/AppModule.html",[3,0.421,4,0.421,5,0.372,7,0.239,12,1.963,15,0.035,16,1.192,17,2.685,20,0.582,30,0.372,39,2.685,40,0.122,41,2.533,44,1.101,50,0.023,51,0.023,53,2.171,63,1.316,71,1.995,74,1.995,76,1.995,78,1.995,80,1.995,84,1.759,85,3.585,86,1.759,87,1.963,88,3.992,89,3.992,90,2.561,91,2.561,92,2.561,93,2.561,94,2.561,95,3.503,96,2.561,97,1.963,98,3.081,99,4.213,100,3.081,101,4.213,102,3.081,103,4.213,104,3.503,105,3.081,106,4.213,107,3.081,108,4.213,109,3.081,110,4.213,111,3.081,112,3.081,113,4.213,114,3.081,115,4.213,116,3.081,117,4.213,118,3.081,119,4.213,120,2.561,121,2.561,122,4.213,123,1.759,124,1.759,125,4.213,126,3.081,127,1.316,128,1.203,129,3.081,130,3.081,131,3.081,132,3.081,133,3.081,134,3.081,135,3.081,136,4.213,137,1.589,138,2.561,139,1.101]],["title/classes/AppPage.html",[40,0.125,140,2.279]],["body/classes/AppPage.html",[3,0.601,4,0.601,5,0.532,9,0.532,15,0.034,16,0.831,30,0.532,32,1.213,40,0.174,50,0.028,51,0.028,61,2.062,65,2.062,137,2.27,140,3.818,141,2.27,142,3.659,143,1.104,144,5.904,145,5.904,146,1.001,147,4.401,148,1.104,149,5.102,150,4.401,151,4.401,152,4.401,153,4.401,154,3.17,155,4.401]],["title/components/BatteryLevelComponent.html",[52,0.868,71,1.131]],["body/components/BatteryLevelComponent.html",[3,0.218,4,0.218,5,0.193,7,0.124,9,0.193,10,0.707,11,0.674,14,0.832,15,0.035,16,0.823,20,0.302,23,1.329,25,1.061,27,1.375,30,0.391,32,0.366,33,1.006,40,0.063,44,1.457,45,1.101,46,1.207,49,1.207,50,0.014,51,0.014,52,0.889,53,0.571,54,1.207,55,0.824,56,0.824,58,0.824,59,2.461,60,1.863,62,1.329,63,0.682,64,1.329,65,1.207,66,0.824,67,1.917,68,0.824,69,0.77,70,0.824,71,1.329,72,1.588,73,0.824,74,0.571,75,0.824,76,0.571,77,0.824,78,0.571,79,0.824,80,0.571,81,0.748,82,0.824,83,0.824,120,1.328,121,3.09,123,0.912,124,0.912,127,0.682,128,0.624,143,0.537,146,1.07,148,0.955,154,2.333,156,1.849,157,4.112,158,1.15,159,1.207,160,2.064,161,2.064,162,2.064,163,2.064,164,2.778,165,4.359,166,3.239,167,3.548,168,3.239,169,3.239,170,3.139,171,3.139,172,2.693,173,3.624,174,3.624,175,2.693,176,3.139,177,3.139,178,3.139,179,3.239,180,2.333,181,2.693,182,2.064,183,3.239,184,3.239,185,3.139,186,3.239,187,3.239,188,1.849,189,2.693,190,2.333,191,2.693,192,3.239,193,1.725,194,2.693,195,3.239,196,3.239,197,1.924,198,3.389,199,3.239,200,3.239,201,1.427,202,2.598,203,2.064,204,2.064,205,1.329,206,3.716,207,1.642,208,2.368,209,2.368,210,2.368,211,2.064,212,1.642,213,1.592,214,0.844,215,1.018,216,2.039,217,2.598,218,1.597,219,0.741,220,1.597,221,1.501,222,1.597,223,1.642,224,1.375,225,1.597,226,1.518,227,1.597,228,1.597,229,1.597,230,1.018,231,2.888,232,1.471,233,1.597,234,1.558,235,1.671,236,1.597,237,1.597,238,2.922,239,3.358,240,1.597,241,3.239,242,3.716,243,1.597,244,1.597,245,1.597,246,1.597,247,2.368,248,1.597,249,1.597,250,0.824,251,1.597,252,0.912,253,1.018,254,1.384,255,1.329,256,1.471,257,1.471,258,0.912,259,0.912,260,0.912,261,0.912,262,1.018,263,0.912,264,1.018,265,1.018,266,1.018,267,1.018,268,0.571,269,1.018,270,1.328,271,0.748,272,1.328,273,1.597,274,1.018,275,1.328,276,1.518,277,1.597,278,1.597,279,1.597,280,1.597,281,2.577,282,1.018,283,3.239,284,1.597,285,1.917,286,0.824,287,1.597,288,1.15,289,1.018,290,1.328,291,0.912,292,1.018,293,1.018,294,1.018,295,1.018,296,1.15,297,1.597,298,1.018,299,1.018,300,1.597,301,1.018,302,1.018,303,1.018,304,1.597,305,1.597,306,1.597]],["title/injectables/BleService.html",[216,1.352,307,0.868]],["body/injectables/BleService.html",[3,0.457,4,0.457,5,0.405,7,0.26,9,0.405,10,1.224,11,0.928,14,0.851,15,0.035,16,0.946,20,0.633,23,1.989,30,0.405,32,1.147,35,2.546,40,0.133,50,0.024,51,0.024,60,2.086,61,1.57,69,0.946,127,1.431,128,1.308,143,0.928,146,1.12,148,1.158,193,1.715,197,1.741,201,1.46,214,1.097,216,1.905,219,1.02,221,1.46,224,1.337,231,1.913,234,1.198,250,2.756,268,1.198,271,2.089,291,1.913,307,1.224,308,1.728,309,2.413,310,2.585,311,5.011,312,3.706,313,4.441,314,4.441,315,3.35,316,4.459,317,4.459,318,4.755,319,3.35,320,3.35,321,3.35,322,3.35,323,3.35,324,3.35,325,2.785,326,3.35,327,2.785,328,3.35,329,1.913,330,2.785,331,2.785,332,2.785,333,1.57,334,3.35,335,2.785,336,2.785,337,3.35,338,3.35,339,4.459,340,2.413,341,3.35,342,3.35,343,2.785,344,2.785]],["title/injectables/BrowserWebBluetooth.html",[25,1.036,307,0.868]],["body/injectables/BrowserWebBluetooth.html",[3,0.558,4,0.558,5,0.494,6,1.317,7,0.447,9,0.494,10,1.391,11,0.851,14,0.626,15,0.034,16,0.772,20,0.772,25,1.659,30,0.494,32,0.936,33,1.596,35,2.334,40,0.162,50,0.027,51,0.027,60,2.15,69,0.772,128,1.596,137,2.109,143,1.055,146,1.04,148,0.851,149,4.212,214,1.803,219,0.936,307,1.391,308,2.109,310,2.84,340,3.649,345,3.398,346,5.067,347,5.067,348,5.067,349,5.507,350,4.088,351,4.088,352,4.088,353,4.088,354,3.398,355,4.088,356,4.088,357,4.088,358,3.398,359,4.088,360,4.088]],["title/injectables/ConsoleLoggerService.html",[27,0.949,307,0.868]],["body/injectables/ConsoleLoggerService.html",[0,1.617,3,0.517,4,0.517,5,0.457,6,1.281,7,0.435,9,0.457,11,1.107,14,0.814,15,0.035,16,0.715,20,0.715,27,1.448,28,1.773,30,0.642,40,0.191,50,0.026,51,0.026,61,2.262,69,1.004,143,1.005,146,1.004,148,1.107,159,2.262,219,1.217,221,1.936,224,1.594,226,2.262,282,3.076,307,1.459,308,1.952,329,2.756,361,2.412,362,3.477,363,3.828,364,3.785,365,4.259,366,3.828,367,3.785,368,3.828,369,3.785,370,3.035,371,2.726,372,2.726,373,2.726,374,2.726,375,2.726,376,2.726]],["title/components/DashboardComponent.html",[52,0.868,74,1.131]],["body/components/DashboardComponent.html",[3,0.404,4,0.404,5,0.358,7,0.319,9,0.358,15,0.035,16,0.559,20,0.559,30,0.358,40,0.117,50,0.022,51,0.022,52,1.291,53,1.059,54,1.921,55,1.528,56,1.528,58,1.528,59,2.972,60,2.313,62,1.528,63,1.265,64,2.115,65,1.921,66,1.528,67,2.619,68,1.528,69,0.774,70,1.528,71,1.059,72,2.009,73,1.528,74,1.815,75,1.528,76,1.059,77,1.528,78,1.059,79,1.528,80,1.059,81,2.204,82,1.528,83,1.528,146,0.559,154,2.133,156,1.691,162,3.235,167,2.133,170,2.133,171,2.133,176,3.387,177,2.953,178,3.387,180,2.953,185,2.953,188,1.691,189,2.462,190,2.133,191,2.462,205,2.06,214,1.54,235,1.528,247,3.514,358,2.462,377,2.462,378,5.077,379,4.1,380,4.703,381,4.1,382,4.1,383,2.962,384,3.409,385,4.1,386,5.763,387,5.763,388,3.29,389,5.763,390,5.763,391,2.953,392,4.1,393,2.962,394,2.962,395,2.962,396,2.462,397,2.962,398,3.656,399,2.962,400,2.962,401,2.962,402,2.962,403,1.887,404,2.133,405,2.962,406,2.962,407,4.1,408,5.077,409,3.409,410,2.962,411,4.703,412,2.962,413,2.962]],["title/classes/FakeBluetoothDevice.html",[40,0.125,414,1.632]],["body/classes/FakeBluetoothDevice.html",[3,0.359,4,0.359,5,0.317,6,1.303,7,0.442,9,0.317,10,1.321,11,0.785,13,1.355,14,0.812,15,0.035,30,0.582,32,1.102,40,0.19,50,0.02,51,0.02,69,1.032,139,0.939,141,1.355,143,0.785,146,1.055,148,0.918,193,1.321,197,2.134,201,0.86,205,1.822,213,1.472,214,0.86,219,0.862,221,1.443,224,1.787,234,0.939,235,1.355,254,1.61,268,1.721,276,2.065,285,2.273,286,1.355,310,2.629,333,2.065,388,1.5,414,1.944,415,1.5,416,2.516,417,3.068,418,3.068,419,3.133,420,2.91,421,2.627,422,2.627,423,2.152,424,2.627,425,3.768,426,3.068,427,2.627,428,2.808,429,3.38,430,3.38,431,2.627,432,2.627,433,2.627,434,3.068,435,2.401,436,2.401,437,2.401,438,1.674,439,2.401,440,1.944,441,1.674,442,2.401,443,1.674,444,2.401,445,1.355,446,1.61,447,1.674,448,1.674,449,2.401,450,1.674,451,1.674,452,1.674,453,1.674,454,1.674,455,1.355,456,1.5,457,1.674,458,1.674,459,1.674,460,1.674,461,1.355,462,2.401,463,1.5,464,3.068,465,2.808,466,1.674,467,1.674,468,2.401,469,1.674,470,1.674,471,1.674,472,1.674]],["title/classes/FakeBluetoothRemoteGATTCharacteristic.html",[40,0.125,461,1.632]],["body/classes/FakeBluetoothRemoteGATTCharacteristic.html",[3,0.35,4,0.35,5,0.309,6,1.314,7,0.446,9,0.309,10,1.488,11,0.905,13,1.321,14,0.83,15,0.035,30,0.575,32,1.089,40,0.188,50,0.02,51,0.02,69,0.898,139,0.916,141,1.321,143,0.77,146,1.068,148,0.991,193,1.577,197,1.696,201,0.839,205,1.323,213,1.445,214,0.839,219,0.994,221,1.422,224,1.626,234,0.916,235,1.321,254,1.581,268,2.053,276,2.035,285,2.241,286,1.321,310,2.797,333,2.035,388,1.462,414,1.321,415,1.462,416,1.462,417,1.632,418,3.032,419,3.076,420,2.881,423,1.462,426,2.768,428,2.768,429,3.351,430,3.351,434,3.032,435,2.358,436,2.358,437,2.358,438,1.632,439,2.358,440,1.909,441,1.632,442,2.358,443,1.632,444,2.358,445,1.321,446,1.581,447,1.632,448,1.632,449,2.358,450,1.632,451,1.632,452,1.632,453,1.632,454,1.632,455,1.321,456,1.462,457,1.632,458,1.632,459,1.632,460,1.632,461,1.909,462,3.216,463,2.48,464,3.538,465,3.032,466,2.358,467,1.632,468,2.358,469,3.032,470,1.632,471,2.358,472,1.632,473,3.7,474,2.561,475,2.561,476,2.561,477,2.561,478,2.561,479,2.561,480,2.561,481,2.561,482,2.561,483,2.561]],["title/classes/FakeBluetoothRemoteGATTServer.html",[40,0.125,445,1.632]],["body/classes/FakeBluetoothRemoteGATTServer.html",[3,0.37,4,0.37,5,0.328,6,1.29,7,0.438,9,0.328,10,1.341,11,0.803,13,1.399,14,0.821,15,0.035,30,0.59,32,1.118,40,0.193,50,0.021,51,0.021,69,0.847,139,0.97,141,1.399,143,0.803,146,1.041,148,0.934,193,1.345,197,2.154,201,1.262,205,1.844,213,2.015,214,0.888,219,0.882,221,0.888,224,1.547,232,2.561,234,0.97,235,1.399,254,1.647,268,1.746,276,2.102,285,2.314,286,2.314,310,2.314,333,2.102,388,2.789,414,1.399,415,1.549,416,1.549,417,1.728,418,2.457,420,2.201,423,1.549,426,2.858,428,2.457,429,3.113,430,3.113,434,3.113,435,2.457,436,2.457,437,2.457,438,1.728,439,2.457,440,1.989,441,1.728,442,2.457,443,1.728,444,2.457,445,1.989,446,1.916,447,3.288,448,1.728,449,2.457,450,1.728,451,2.457,452,2.858,453,1.728,454,1.728,455,1.399,456,1.549,457,1.728,458,1.728,459,1.728,460,1.728,461,1.399,462,2.457,463,1.549,464,3.113,465,2.858,466,1.728,467,1.728,468,2.457,469,1.728,470,1.728,471,1.728,472,1.728,484,3.855,485,2.255,486,3.855,487,3.855,488,2.712,489,2.712,490,2.712]],["title/classes/FakeBluetoothRemoteGATTService.html",[40,0.125,455,1.632]],["body/classes/FakeBluetoothRemoteGATTService.html",[3,0.392,4,0.392,5,0.347,6,1.207,7,0.41,9,0.347,10,1.375,11,0.836,13,1.482,14,0.44,15,0.035,30,0.605,32,1.147,40,0.198,50,0.022,51,0.022,69,0.874,139,1.027,141,1.482,143,0.836,146,0.946,148,0.598,193,1.204,197,2.189,201,0.941,205,1.435,213,2.059,214,0.941,219,0.919,224,1.581,235,1.482,254,1.716,268,1.791,271,1.346,276,2.169,285,2.387,286,1.482,310,2.387,333,2.169,388,1.641,414,1.482,415,1.641,416,1.641,417,1.831,418,2.559,420,2.293,423,1.641,426,2.949,428,2.559,429,3.193,430,3.193,434,3.193,435,2.559,436,2.559,437,2.559,438,1.831,439,2.559,440,2.071,441,1.831,442,2.559,443,1.831,444,2.559,445,1.482,446,1.716,447,1.831,448,1.831,449,2.559,450,1.831,451,1.831,452,1.831,453,1.831,454,1.831,455,2.071,456,3.01,457,1.831,458,2.559,459,2.949,460,1.831,461,1.482,462,2.559,463,1.641,464,3.193,465,2.949,466,1.831,467,1.831,468,2.559,469,1.831,470,1.831,471,1.831,472,1.831,485,2.389,491,4.015,492,2.874,493,4.015,494,2.874]],["title/components/HumidityComponent.html",[52,0.868,76,1.131]],["body/components/HumidityComponent.html",[3,0.259,4,0.259,5,0.229,7,0.147,9,0.229,10,0.809,11,0.754,14,0.843,15,0.035,16,0.886,20,0.358,23,1.462,25,1.186,27,1.086,30,0.438,32,0.433,33,1.597,40,0.075,42,1.521,44,1.584,45,1.26,46,1.382,49,1.382,50,0.016,51,0.016,52,0.994,53,0.677,54,1.382,55,0.977,56,0.977,58,0.977,59,2.614,60,1.979,62,1.521,63,0.809,64,1.521,65,1.382,66,0.977,67,2.109,68,0.977,69,0.837,70,0.977,71,0.677,72,0.809,73,0.977,74,0.677,75,0.977,76,1.462,77,0.977,78,0.677,79,0.977,80,0.677,81,0.887,82,0.977,83,0.977,123,1.081,124,1.081,127,0.809,128,0.739,139,1.295,143,0.614,146,1.087,148,1.02,156,2.068,159,1.382,160,2.308,161,2.308,163,2.308,164,2.308,182,2.308,188,2.068,193,1.596,197,1.833,201,1.537,202,2.824,203,2.308,204,2.308,205,1.462,207,1.879,208,2.605,209,2.605,210,2.605,211,1.879,212,1.879,213,1.414,214,0.966,215,1.207,216,2.165,217,2.824,219,0.829,221,1.604,223,1.879,224,1.329,226,1.382,230,1.879,231,2.798,232,1.684,234,1.584,238,2.824,239,3.791,250,0.977,252,1.081,253,1.207,254,1.747,255,1.521,256,1.684,257,1.684,258,1.081,259,1.081,260,1.081,261,1.081,262,1.207,263,1.081,264,1.207,265,1.207,266,1.207,267,1.207,268,0.677,269,1.207,271,0.887,274,1.207,276,1.382,289,1.207,291,1.684,292,1.207,293,1.207,294,1.207,295,1.207,296,1.364,298,1.207,299,1.207,301,1.879,302,1.207,303,1.207,330,1.574,331,2.452,391,2.609,396,1.574,398,2.609,403,1.207,404,1.364,446,0.809,495,1.364,496,3.399,497,3.011,498,3.011,499,3.011,500,3.011,501,3.399,502,1.894,503,1.894,504,1.894,505,1.894,506,1.894,507,1.894,508,1.894,509,1.894,510,3.011,511,1.894,512,3.011,513,1.574,514,2.452,515,1.894,516,3.399,517,1.894,518,1.894,519,1.894,520,1.894,521,1.894,522,1.894,523,1.574,524,1.364,525,1.574,526,2.124,527,2.124,528,2.124,529,2.124,530,1.894,531,1.574,532,1.574,533,2.452,534,1.574,535,1.574,536,1.574,537,1.894,538,1.574,539,1.574,540,1.574,541,1.364,542,3.011,543,1.574,544,2.452,545,1.574,546,1.574,547,1.574,548,1.574,549,1.574,550,1.574,551,1.574,552,1.574,553,1.574,554,1.574,555,1.574,556,1.574,557,2.452,558,1.574,559,1.894,560,1.364,561,1.574,562,1.574,563,1.574,564,1.364]],["title/interfaces/Logger.html",[0,1.352,370,1.806]],["body/interfaces/Logger.html",[0,1.597,2,2.693,3,0.511,4,0.511,5,0.452,6,1.276,7,0.433,9,0.452,11,1.1,14,0.809,15,0.035,16,0.706,20,0.706,27,1.121,28,1.752,30,0.639,40,0.189,50,0.026,51,0.026,61,2.244,69,0.998,143,0.997,146,0.998,148,1.1,159,2.244,219,1.21,221,1.93,224,1.838,226,2.244,282,3.052,307,1.451,329,2.735,361,2.382,362,3.45,363,3.45,365,4.245,366,3.45,368,3.45,370,3.182,371,3.45,372,3.45,373,3.45,374,2.693,375,2.693,376,2.693,565,3.739,566,3.739,567,3.739]],["title/injectables/NoLoggerService.html",[28,1.482,307,0.868]],["body/injectables/NoLoggerService.html",[0,1.617,3,0.517,4,0.517,5,0.457,6,1.281,7,0.435,9,0.457,11,1.107,14,0.814,15,0.035,16,0.715,20,0.715,27,1.135,28,2.262,30,0.642,40,0.191,50,0.026,51,0.026,61,2.262,69,1.004,143,1.005,146,1.004,148,1.107,159,2.262,219,1.217,221,1.936,224,1.594,226,2.262,282,3.076,307,1.459,308,1.952,329,2.756,361,2.412,362,3.477,363,3.828,365,4.259,366,3.828,368,3.828,370,3.035,371,2.726,372,2.726,373,2.726,374,2.726,375,2.726,376,2.726,568,3.785,569,3.785,570,3.785]],["title/injectables/ServerWebBluetooth.html",[307,0.868,571,2.279]],["body/injectables/ServerWebBluetooth.html",[3,0.614,4,0.614,5,0.543,6,1.229,7,0.417,9,0.543,15,0.034,16,0.849,20,0.849,30,0.543,32,1.029,40,0.178,42,2.962,50,0.029,51,0.029,143,1.118,146,0.849,148,0.937,263,3.396,307,1.474,308,2.32,571,3.868,572,3.739,573,4.498,574,4.498,575,3.739,576,4.498]],["title/components/StepCounterComponent.html",[52,0.868,78,1.131]],["body/components/StepCounterComponent.html",[3,0.273,4,0.273,5,0.241,7,0.155,9,0.241,10,0.844,11,0.78,14,0.79,15,0.035,16,0.858,20,0.377,23,1.504,25,1.227,27,1.124,30,0.453,32,0.704,33,1.201,40,0.079,44,1.624,45,1.314,46,1.441,49,1.441,50,0.017,51,0.017,52,1.029,53,0.714,54,1.441,55,1.031,56,1.031,58,1.031,59,2.661,60,2.014,62,1.586,63,0.854,64,1.586,65,1.441,66,1.031,67,2.17,68,1.031,69,0.858,70,1.031,71,0.714,72,0.854,73,1.031,74,0.714,75,1.031,76,0.714,77,1.031,78,1.504,79,1.031,80,0.714,81,0.936,82,1.031,83,1.031,123,1.141,124,1.141,127,0.854,128,0.78,139,1.099,143,0.64,146,1.066,148,0.999,156,2.14,159,1.441,160,2.388,161,2.388,163,2.388,164,3.057,167,2.699,170,2.699,171,2.699,172,3.115,173,3.988,174,3.988,175,3.115,176,2.699,177,2.699,178,2.699,180,3.455,181,3.115,182,3.057,185,2.699,188,2.14,190,2.699,193,1.694,194,3.115,197,1.873,201,1.571,202,2.895,203,2.388,204,2.388,205,1.504,207,1.959,208,2.681,209,2.681,210,2.681,211,1.959,212,1.959,213,1.463,214,1.007,215,1.274,216,2.204,217,2.895,219,0.858,221,1.571,223,1.959,224,1.124,226,1.756,230,1.959,231,2.594,234,1.34,238,2.895,239,3.372,247,1.959,250,1.031,252,1.141,253,1.274,254,1.941,255,1.586,256,1.756,257,1.756,258,1.141,259,1.141,260,1.141,261,1.141,262,1.274,263,1.141,264,1.274,265,1.274,266,1.274,267,1.274,268,0.714,271,0.936,274,1.274,285,1.031,288,1.439,289,1.274,291,1.141,292,1.274,293,1.274,294,1.274,295,1.274,298,1.274,299,1.274,301,1.959,302,1.274,303,1.274,526,2.215,527,2.215,528,2.215,529,2.215,532,1.661,533,2.556,541,1.439,558,1.661,560,1.439,564,1.439,577,1.439,578,3.075,579,3.748,580,3.748,581,3.748,582,3.988,583,3.748,584,3.748,585,1.999,586,1.999,587,1.999,588,1.999,589,1.999,590,1.999,591,1.999,592,1.999,593,1.999,594,1.999,595,1.999,596,1.999,597,1.999,598,3.075,599,1.999,600,1.999,601,1.999,602,1.999,603,1.999,604,1.999]],["title/components/TemperatureComponent.html",[52,0.868,80,1.131]],["body/components/TemperatureComponent.html",[3,0.256,4,0.256,5,0.226,7,0.146,9,0.226,10,0.803,11,0.749,14,0.841,15,0.035,16,0.882,20,0.354,23,1.453,25,1.178,27,1.079,30,0.435,32,0.67,33,1.588,40,0.074,42,1.509,44,1.576,45,1.25,46,1.371,49,1.371,50,0.016,51,0.016,52,0.988,53,0.67,54,1.371,55,0.967,56,0.967,58,0.967,59,2.605,60,1.972,62,1.509,63,0.801,64,1.509,65,1.371,66,0.967,67,2.097,68,0.967,69,0.833,70,0.967,71,0.67,72,0.801,73,0.967,74,0.67,75,0.967,76,0.67,77,0.967,78,0.67,79,0.967,80,1.453,81,1.905,82,0.967,83,0.967,123,1.07,124,1.07,127,0.801,128,0.732,139,1.286,143,0.609,146,1.085,148,1.016,156,2.055,159,1.371,160,2.293,161,2.293,163,2.293,164,2.293,182,2.293,188,2.055,193,1.592,197,1.722,201,1.53,202,2.81,203,2.293,204,2.293,205,1.453,207,1.864,208,2.591,209,2.591,210,2.591,211,1.864,212,1.864,213,1.405,214,0.614,215,1.194,216,2.158,217,2.81,219,0.824,221,1.598,223,1.864,224,1.322,226,1.686,230,1.864,231,2.787,232,1.67,234,1.576,238,2.81,239,3.785,250,0.967,252,1.07,253,1.194,254,1.997,255,1.509,256,1.67,257,1.67,258,1.07,259,1.07,260,1.07,261,1.07,262,1.194,263,1.07,264,1.194,265,1.194,266,1.194,267,1.194,268,0.67,269,1.194,271,0.878,274,1.194,275,1.558,276,1.371,288,1.35,289,1.194,290,1.558,291,1.07,292,1.194,293,1.194,294,1.194,295,1.194,296,1.35,298,1.194,299,1.194,301,1.864,302,1.194,303,1.194,333,0.878,398,2.592,403,1.194,404,1.35,446,0.801,496,3.38,497,2.991,498,2.991,499,2.991,500,2.991,501,3.38,510,2.991,512,2.991,513,1.558,514,2.432,516,3.38,523,1.558,524,1.35,525,1.558,526,2.107,527,2.107,528,2.107,529,2.107,531,1.558,534,1.558,535,1.558,536,1.558,538,1.558,539,1.558,540,1.558,541,1.35,542,2.991,543,1.558,544,2.432,545,1.558,546,1.558,547,1.558,548,1.558,549,1.558,550,1.558,551,1.558,552,1.558,553,1.558,554,1.558,555,1.558,556,1.558,557,2.432,560,1.35,561,1.558,562,1.558,563,1.558,564,1.35,582,1.558,605,1.35,606,1.874,607,1.874,608,1.874,609,1.874,610,1.874,611,1.874,612,1.874,613,1.874,614,1.874,615,1.874,616,1.874,617,2.926,618,1.874,619,1.874,620,1.874,621,1.874,622,2.926,623,2.926,624,1.874]],["title/modules/WebBluetoothModule.html",[41,1.482,84,1.806]],["body/modules/WebBluetoothModule.html",[0,1.535,1,3.249,3,0.491,4,0.491,5,0.434,6,1.068,7,0.363,8,2.289,11,0.972,12,2.289,13,1.853,14,0.55,15,0.035,16,1.074,17,3.304,18,4.311,19,2.987,20,0.678,21,3.881,22,2.587,23,1.669,24,2.987,25,1.863,26,2.987,27,1.555,28,2.187,29,2.987,30,0.688,31,3.735,32,1.302,33,2.144,34,2.587,35,2.961,36,2.987,37,3.304,38,2.987,39,2.289,40,0.142,41,2.43,42,2.408,43,3.881,44,1.284,45,2.215,46,2.187,47,2.987,48,2.289,49,1.683,50,0.025,51,0.025,69,0.678,86,2.051,143,0.748,146,0.678,148,0.748,193,1.077,219,0.822,234,1.284,625,3.592,626,3.592]],["title/coverage.html",[627,3.567]],["body/coverage.html",[0,1.716,1,1.641,5,0.347,6,1.409,7,0.478,8,3.193,14,0.44,15,0.035,23,1.027,25,1.315,27,0.862,28,1.346,31,3.333,33,1.122,37,1.831,40,0.209,44,1.791,48,1.831,50,0.022,51,0.022,52,1.499,53,1.027,57,2.389,71,1.027,74,1.027,76,1.027,78,1.027,80,1.027,140,2.07,142,2.389,157,3.609,158,3.609,216,2.253,247,4.1,255,2.585,307,1.499,309,2.07,332,5.117,345,2.389,361,2.949,370,1.641,377,2.389,414,1.482,415,2.861,445,1.482,455,1.482,461,1.482,495,3.609,571,2.07,572,2.389,577,3.609,605,3.609,627,2.389,628,2.07,629,2.874,630,2.874,631,2.874,632,4.628,633,6.251,634,2.389,635,2.874,636,2.874,637,3.338,638,3.338,639,2.389,640,2.389,641,5.011,642,4.015,643,2.874,644,2.874,645,2.874,646,2.874,647,4.015,648,2.874,649,2.389,650,3.338,651,2.389,652,2.874,653,2.874]],["title/dependencies.html",[87,2.42,654,1.913]],["body/dependencies.html",[7,0.437,15,0.035,20,0.811,22,3.096,50,0.028,51,0.028,87,2.739,104,4.344,127,1.836,128,2.199,137,2.695,252,2.454,524,3.096,655,4.298,656,6.234,657,4.298,658,5.225,659,4.298,660,4.298,661,4.298,662,4.298,663,4.298,664,4.298,665,4.298,666,3.573,667,4.298,668,4.298,669,4.298,670,4.298,671,4.298,672,4.298,673,4.298,674,4.298,675,4.298,676,4.298]],["title/miscellaneous/functions.html",[677,1.37,678,3.157]],["body/miscellaneous/functions.html",[1,3.149,6,1.077,7,0.366,8,2.998,9,0.569,11,0.98,14,0.72,15,0.031,25,1.916,34,3.389,35,2.687,37,3.729,48,3.515,50,0.03,51,0.03,69,0.888,219,1.077,677,2.427,678,3.912,679,5.851]],["title/index.html",[9,0.321,680,1.913,681,1.913]],["body/index.html",[7,0.386,12,1.392,15,0.035,16,1.024,17,2.096,20,0.747,23,1.775,30,0.478,32,1.285,39,1.392,40,0.157,41,1.541,42,1.697,45,0.933,50,0.018,51,0.018,60,1.285,61,1.541,72,1.691,84,1.878,85,1.247,97,1.392,127,1.882,128,2.071,137,1.126,138,1.815,139,1.176,162,2.522,193,1.545,198,1.815,201,1.736,205,0.781,213,1.939,250,1.697,260,1.247,261,1.247,268,1.689,269,1.392,270,2.735,271,2.214,272,2.735,286,1.697,307,1.209,313,2.735,314,3.662,325,2.735,327,2.735,329,1.878,333,1.541,335,2.735,336,1.815,340,2.369,343,1.815,344,2.735,384,1.815,403,2.096,409,1.815,416,1.247,420,1.247,423,1.247,440,1.126,446,0.933,456,1.247,463,1.247,628,2.85,654,1.573,666,2.735,680,1.573,681,1.573,682,2.184,683,3.289,684,5.153,685,3.289,686,2.184,687,2.184,688,2.184,689,2.184,690,2.184,691,2.184,692,2.184,693,2.184,694,2.184,695,3.928,696,3.289,697,2.184,698,3.289,699,4.404,700,3.289,701,3.289,702,3.289,703,4.965,704,5.153,705,3.289,706,3.289,707,2.184,708,3.289,709,2.184,710,2.184,711,2.184,712,3.289,713,2.184,714,2.184,715,2.184,716,2.184,717,2.184,718,2.184,719,3.289,720,2.184,721,3.289,722,2.184,723,2.184,724,2.184,725,2.184,726,2.735,727,2.184,728,2.184,729,2.184,730,2.184,731,3.289,732,2.184,733,2.184,734,2.184,735,2.184,736,2.184,737,3.289,738,1.815,739,2.184,740,2.184,741,2.184,742,2.184,743,2.184,744,2.184,745,2.184,746,2.184,747,2.184,748,2.184,749,2.184,750,2.184,751,1.815,752,3.289,753,2.184,754,2.184,755,3.289,756,3.289,757,2.184,758,2.184,759,2.184,760,2.735,761,2.184,762,2.184,763,3.289,764,2.184,765,2.184,766,2.184,767,2.184,768,2.184,769,2.184,770,2.184,771,2.184,772,2.184,773,2.184,774,2.184,775,2.184,776,2.369,777,2.735,778,3.29,779,1.815,780,1.815,781,1.815,782,1.815,783,2.735,784,1.815,785,1.815,786,1.815,787,1.815,788,1.815,789,2.735,790,4.511,791,1.815,792,1.815,793,1.815,794,3.29,795,1.815,796,2.735,797,1.815,798,1.815,799,1.815,800,1.815,801,1.815,802,1.815,803,1.815,804,1.815,805,1.815,806,2.735,807,1.815,808,1.815,809,1.815,810,1.815,811,1.815,812,1.815,813,2.735,814,2.735,815,1.815,816,1.815,817,1.815,818,1.815,819,1.815,820,1.815,821,1.815,822,1.815,823,1.815,824,1.815,825,1.815,826,1.815,827,1.815,828,1.815,829,1.815,830,1.815,831,1.815,832,1.815,833,1.815,834,1.815,835,1.815,836,1.815,837,1.815,838,1.815,839,1.815,840,1.815,841,1.815,842,1.815,843,1.815]],["title/license.html",[680,1.913,681,1.913,776,1.913]],["body/license.html",[15,0.027,50,0.027,51,0.027,97,2.554,440,2.067,628,2.886,695,4.161,726,3.332,760,3.332,776,2.886,777,4.161,778,4.537,779,3.332,780,3.332,781,3.332,782,3.332,783,4.161,784,3.332,785,3.332,786,3.332,787,3.332,788,3.332,789,4.161,790,5.159,791,3.332,792,3.332,793,3.332,794,4.537,795,3.332,796,4.161,797,3.332,798,3.332,799,3.332,800,3.332,801,3.332,802,3.332,803,3.332,804,3.332,805,3.332,806,4.161,807,3.332,808,3.332,809,3.332,810,3.332,811,3.332,812,3.332,813,4.161,814,4.161,815,3.332,816,3.332,817,3.332,818,3.332,819,3.332,820,3.332,821,3.332,822,3.332,823,3.332,824,3.332,825,3.332,826,3.332,827,3.332,828,3.332,829,3.332,830,3.332,831,3.332,832,3.332,833,3.332,834,3.332,835,3.332,836,3.332,837,3.332,838,3.332,839,3.332,840,3.332,841,3.332,842,3.332,843,3.332]],["title/modules.html",[86,2.45]],["body/modules.html",[15,0.03,41,2.299,50,0.03,51,0.03,85,2.801,86,2.801,137,2.531,354,4.079,844,4.906,845,5.651,846,4.906,847,4.079]],["title/overview.html",[848,3.567]],["body/overview.html",[2,3.004,15,0.034,41,2.604,44,1.491,50,0.028,51,0.028,53,2.195,54,1.955,63,1.782,71,1.986,74,1.986,76,1.986,78,1.986,80,1.986,84,2.382,85,3.675,86,2.382,87,2.658,88,3.468,89,3.468,90,3.468,91,3.468,92,3.468,93,3.468,94,3.468,95,4.265,96,3.468,97,2.658,141,2.152,308,2.152,738,4.265,751,3.468,848,3.468,849,5.131]],["title/properties.html",[10,1.042,654,1.913]],["body/properties.html",[10,1.369,15,0.032,50,0.031,51,0.031,850,4.986,851,4.986]],["title/miscellaneous/typealiases.html",[677,1.37,852,3.798]],["body/miscellaneous/typealiases.html",[6,1.099,7,0.373,9,0.58,14,0.903,15,0.03,50,0.03,51,0.03,232,3.188,309,3.46,318,4.641,634,3.993,677,2.478,853,4.804,854,5.583,855,4.804,856,4.804]],["title/miscellaneous/variables.html",[677,1.37,857,3.157]],["body/miscellaneous/variables.html",[6,0.361,7,0.123,9,0.191,14,0.698,15,0.035,23,1.878,25,1.555,27,1.424,33,1.855,44,1.698,45,2.029,46,2.226,49,2.226,50,0.014,51,0.014,72,0.674,81,0.739,139,0.564,157,1.137,158,2.658,162,1.006,193,1.663,201,1.85,216,2.369,234,1.983,255,2.709,256,2.712,257,2.712,258,2.107,259,2.107,312,1.312,391,1.137,446,0.674,495,1.137,575,2.671,577,1.137,605,1.137,637,1.312,638,2.671,639,2.121,640,2.121,649,1.312,650,3.068,651,1.312,677,0.814,847,2.671,857,1.312,858,3.213,859,3.213,860,3.213,861,3.213,862,1.578,863,1.578,864,2.552,865,2.552,866,1.578,867,1.578,868,1.578,869,1.578,870,6.334,871,6.334,872,6.334,873,6.334,874,1.578,875,1.578,876,1.578,877,1.578,878,1.578,879,1.578,880,1.578,881,1.578,882,1.578,883,1.578,884,1.578,885,1.578,886,1.578,887,1.578,888,1.578,889,1.578,890,1.578,891,1.578,892,1.578,893,1.578,894,1.578,895,5.039,896,1.578,897,4.75,898,1.578,899,4.75,900,1.578,901,1.578,902,1.578,903,1.578,904,1.578,905,1.578,906,1.578,907,1.578,908,1.578,909,1.578,910,3.213,911,3.213,912,1.578,913,1.578,914,1.578,915,1.578,916,1.578,917,1.578,918,1.578,919,1.578,920,1.578,921,1.578,922,1.578,923,1.578,924,1.578,925,1.578,926,1.578,927,1.578,928,1.578,929,1.578,930,1.578,931,1.578,932,1.578,933,1.578,934,1.578,935,1.578,936,1.578,937,1.578,938,1.578,939,1.578,940,1.578,941,1.578,942,1.578,943,1.578,944,1.578,945,1.578,946,1.578,947,1.578,948,1.578,949,1.578,950,1.578,951,1.578,952,1.578,953,1.578,954,1.578,955,1.578,956,1.578,957,1.578,958,1.578,959,1.578,960,1.578,961,1.578,962,1.578,963,1.578,964,1.578,965,1.578,966,1.578,967,1.578,968,1.578,969,1.578]]],"invertedIndex":[["",{"_index":15,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/functions.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"properties.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["0",{"_index":247,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{},"coverage.html":{}}}],["0.0.6",{"_index":667,"title":{},"body":{"dependencies.html":{}}}],["0.14.3",{"_index":676,"title":{},"body":{"dependencies.html":{}}}],["0/1",{"_index":633,"title":{},"body":{"coverage.html":{}}}],["0/10",{"_index":643,"title":{},"body":{"coverage.html":{}}}],["0/13",{"_index":648,"title":{},"body":{"coverage.html":{}}}],["0/16",{"_index":647,"title":{},"body":{"coverage.html":{}}}],["0/18",{"_index":646,"title":{},"body":{"coverage.html":{}}}],["0/2",{"_index":632,"title":{},"body":{"coverage.html":{}}}],["0/3",{"_index":631,"title":{},"body":{"coverage.html":{}}}],["0/4",{"_index":641,"title":{},"body":{"coverage.html":{}}}],["0/5",{"_index":645,"title":{},"body":{"coverage.html":{}}}],["0/8",{"_index":644,"title":{},"body":{"coverage.html":{}}}],["0/9",{"_index":642,"title":{},"body":{"coverage.html":{}}}],["000",{"_index":194,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/StepCounterComponent.html":{}}}],["000000",{"_index":548,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["000000000000",{"_index":873,"title":{},"body":{"miscellaneous/variables.html":{}}}],["0451",{"_index":870,"title":{},"body":{"miscellaneous/variables.html":{}}}],["1",{"_index":403,"title":{},"body":{"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["1.35.0",{"_index":669,"title":{},"body":{"dependencies.html":{}}}],["100",{"_index":582,"title":{},"body":{"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["10px",{"_index":411,"title":{},"body":{"components/DashboardComponent.html":{}}}],["112px",{"_index":579,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["11em",{"_index":581,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["120px",{"_index":181,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/StepCounterComponent.html":{}}}],["15px",{"_index":408,"title":{},"body":{"components/DashboardComponent.html":{}}}],["16px",{"_index":497,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["17",{"_index":550,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["17.0.0",{"_index":851,"title":{},"body":{"properties.html":{}}}],["17.1.2",{"_index":658,"title":{},"body":{"dependencies.html":{}}}],["17.1.3",{"_index":656,"title":{},"body":{"dependencies.html":{}}}],["2",{"_index":738,"title":{},"body":{"index.html":{},"overview.html":{}}}],["2.3.0",{"_index":674,"title":{},"body":{"dependencies.html":{}}}],["2.a",{"_index":694,"title":{},"body":{"index.html":{}}}],["2.b",{"_index":713,"title":{},"body":{"index.html":{}}}],["2017",{"_index":780,"title":{},"body":{"index.html":{},"license.html":{}}}],["20px",{"_index":406,"title":{},"body":{"components/DashboardComponent.html":{}}}],["21/31",{"_index":636,"title":{},"body":{"coverage.html":{}}}],["214px",{"_index":580,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["222px",{"_index":179,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["24px",{"_index":184,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["255px",{"_index":192,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["29.0.5",{"_index":672,"title":{},"body":{"dependencies.html":{}}}],["3",{"_index":741,"title":{},"body":{"index.html":{}}}],["32px",{"_index":413,"title":{},"body":{"components/DashboardComponent.html":{}}}],["4",{"_index":746,"title":{},"body":{"index.html":{}}}],["4000",{"_index":871,"title":{},"body":{"miscellaneous/variables.html":{}}}],["40px",{"_index":395,"title":{},"body":{"components/DashboardComponent.html":{}}}],["4933",{"_index":527,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["5",{"_index":751,"title":{},"body":{"index.html":{},"overview.html":{}}}],["52ffa9740042",{"_index":529,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["5em",{"_index":175,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/StepCounterComponent.html":{}}}],["5px",{"_index":189,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{}}}],["6",{"_index":849,"title":{},"body":{"overview.html":{}}}],["67",{"_index":635,"title":{},"body":{"coverage.html":{}}}],["7.8.0",{"_index":668,"title":{},"body":{"dependencies.html":{}}}],["700px",{"_index":397,"title":{},"body":{"components/DashboardComponent.html":{}}}],["90px",{"_index":187,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["9b10",{"_index":528,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["9b35",{"_index":526,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["__register__",{"_index":941,"title":{},"body":{"miscellaneous/variables.html":{}}}],["_config",{"_index":311,"title":{},"body":{"injectables/BleService.html":{}}}],["above",{"_index":812,"title":{},"body":{"index.html":{},"license.html":{}}}],["absolute",{"_index":177,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["abstract",{"_index":723,"title":{},"body":{"index.html":{}}}],["accelerometer",{"_index":912,"title":{},"body":{"miscellaneous/variables.html":{}}}],["acceptalldevices",{"_index":735,"title":{},"body":{"index.html":{}}}],["accessors",{"_index":212,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["action",{"_index":837,"title":{},"body":{"index.html":{},"license.html":{}}}],["actual_component",{"_index":83,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["addeventlistener",{"_index":419,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["addeventlistener(type",{"_index":428,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["address",{"_index":944,"title":{},"body":{"miscellaneous/variables.html":{}}}],["advanced",{"_index":714,"title":{},"body":{"index.html":{}}}],["aliases",{"_index":853,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["align",{"_index":171,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["and/or",{"_index":804,"title":{},"body":{"index.html":{},"license.html":{}}}],["angular",{"_index":384,"title":{},"body":{"components/DashboardComponent.html":{},"index.html":{}}}],["angular/animations",{"_index":655,"title":{},"body":{"dependencies.html":{}}}],["angular/cdk",{"_index":657,"title":{},"body":{"dependencies.html":{}}}],["angular/cdk/layout",{"_index":100,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/common",{"_index":22,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{},"dependencies.html":{}}}],["angular/compiler",{"_index":659,"title":{},"body":{"dependencies.html":{}}}],["angular/core",{"_index":20,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"dependencies.html":{},"index.html":{}}}],["angular/forms",{"_index":660,"title":{},"body":{"dependencies.html":{}}}],["angular/material",{"_index":661,"title":{},"body":{"dependencies.html":{}}}],["angular/material/button",{"_index":102,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/material/card",{"_index":107,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/material/expansion",{"_index":109,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/material/grid",{"_index":111,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/material/icon",{"_index":114,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/material/list",{"_index":116,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/material/menu",{"_index":118,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/material/progress",{"_index":120,"title":{},"body":{"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{}}}],["angular/material/snack",{"_index":123,"title":{},"body":{"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["angular/material/toolbar",{"_index":126,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/platform",{"_index":104,"title":{},"body":{"modules/AppModule.html":{},"dependencies.html":{}}}],["angular/router",{"_index":663,"title":{},"body":{"dependencies.html":{}}}],["annotated",{"_index":700,"title":{},"body":{"index.html":{}}}],["api",{"_index":752,"title":{},"body":{"index.html":{}}}],["app",{"_index":768,"title":{},"body":{"index.html":{}}}],["app.component",{"_index":129,"title":{},"body":{"modules/AppModule.html":{}}}],["appcomponent",{"_index":53,"title":{"components/AppComponent.html":{}},"body":{"components/AppComponent.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{},"overview.html":{}}}],["appmodule",{"_index":85,"title":{"modules/AppModule.html":{}},"body":{"modules/AppModule.html":{},"index.html":{},"modules.html":{},"overview.html":{}}}],["apppage",{"_index":140,"title":{"classes/AppPage.html":{}},"body":{"classes/AppPage.html":{},"coverage.html":{}}}],["args",{"_index":365,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["arising",{"_index":841,"title":{},"body":{"index.html":{},"license.html":{}}}],["ask",{"_index":747,"title":{},"body":{"index.html":{}}}],["associated",{"_index":791,"title":{},"body":{"index.html":{},"license.html":{}}}],["authors",{"_index":830,"title":{},"body":{"index.html":{},"license.html":{}}}],["auto",{"_index":399,"title":{},"body":{"components/DashboardComponent.html":{}}}],["available",{"_index":847,"title":{},"body":{"modules.html":{},"miscellaneous/variables.html":{}}}],["awboptions",{"_index":1,"title":{"interfaces/AWBOptions.html":{}},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/functions.html":{}}}],["b",{"_index":256,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"miscellaneous/variables.html":{}}}],["b000",{"_index":872,"title":{},"body":{"miscellaneous/variables.html":{}}}],["bar",{"_index":124,"title":{},"body":{"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["barometer",{"_index":905,"title":{},"body":{"miscellaneous/variables.html":{}}}],["battery",{"_index":72,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["battery_charging_full",{"_index":195,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["battery_level",{"_index":272,"title":{},"body":{"components/BatteryLevelComponent.html":{},"index.html":{}}}],["battery_service",{"_index":270,"title":{},"body":{"components/BatteryLevelComponent.html":{},"index.html":{}}}],["batterylevelcomponent",{"_index":71,"title":{"components/BatteryLevelComponent.html":{}},"body":{"components/AppComponent.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{},"overview.html":{}}}],["batterylevelservice",{"_index":702,"title":{},"body":{"index.html":{}}}],["batterylevelservice.gatt_characteristic_battery_level",{"_index":745,"title":{},"body":{"index.html":{}}}],["batterylevelservice.gatt_primary_service",{"_index":737,"title":{},"body":{"index.html":{}}}],["ble",{"_index":60,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["ble.service",{"_index":253,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["blecore",{"_index":255,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["bleservice",{"_index":216,"title":{"injectables/BleService.html":{}},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["bleservice(b",{"_index":259,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"miscellaneous/variables.html":{}}}],["block",{"_index":182,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["blog",{"_index":766,"title":{},"body":{"index.html":{}}}],["bluetooth",{"_index":128,"title":{},"body":{"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"dependencies.html":{},"index.html":{}}}],["bluetooth.service",{"_index":24,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["bluetooth/dist/manekinekko/angular",{"_index":665,"title":{},"body":{"dependencies.html":{}}}],["bluetooth/src/lib/bluetooth.module.ts",{"_index":8,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/functions.html":{}}}],["bluetooth/src/lib/bluetooth.module.ts:32",{"_index":626,"title":{},"body":{"modules/WebBluetoothModule.html":{}}}],["bluetooth/src/lib/bluetooth.service.ts",{"_index":634,"title":{},"body":{"coverage.html":{},"miscellaneous/typealiases.html":{}}}],["bluetooth/src/lib/lang/uuids/ti",{"_index":637,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["bluetooth/src/lib/logger.service.ts",{"_index":361,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"coverage.html":{}}}],["bluetooth/src/lib/logger.service.ts:13",{"_index":367,"title":{},"body":{"injectables/ConsoleLoggerService.html":{}}}],["bluetooth/src/lib/logger.service.ts:16",{"_index":364,"title":{},"body":{"injectables/ConsoleLoggerService.html":{}}}],["bluetooth/src/lib/logger.service.ts:19",{"_index":369,"title":{},"body":{"injectables/ConsoleLoggerService.html":{}}}],["bluetooth/src/lib/logger.service.ts:28",{"_index":569,"title":{},"body":{"injectables/NoLoggerService.html":{}}}],["bluetooth/src/lib/logger.service.ts:29",{"_index":568,"title":{},"body":{"injectables/NoLoggerService.html":{}}}],["bluetooth/src/lib/logger.service.ts:30",{"_index":570,"title":{},"body":{"injectables/NoLoggerService.html":{}}}],["bluetooth/src/lib/logger.service.ts:4",{"_index":566,"title":{},"body":{"interfaces/Logger.html":{}}}],["bluetooth/src/lib/logger.service.ts:5",{"_index":565,"title":{},"body":{"interfaces/Logger.html":{}}}],["bluetooth/src/lib/logger.service.ts:6",{"_index":567,"title":{},"body":{"interfaces/Logger.html":{}}}],["bluetooth/src/lib/platform/browser.ts",{"_index":345,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{},"coverage.html":{}}}],["bluetooth/src/lib/platform/browser.ts:14",{"_index":350,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["bluetooth/src/lib/platform/browser.ts:5",{"_index":347,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["bluetooth/src/lib/platform/server.ts",{"_index":572,"title":{},"body":{"injectables/ServerWebBluetooth.html":{},"coverage.html":{}}}],["bluetooth/src/lib/platform/server.ts:5",{"_index":573,"title":{},"body":{"injectables/ServerWebBluetooth.html":{}}}],["bluetooth/src/lib/test.utils.ts",{"_index":415,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"coverage.html":{}}}],["bluetooth/src/lib/test.utils.ts:103",{"_index":482,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth/src/lib/test.utils.ts:12",{"_index":422,"title":{},"body":{"classes/FakeBluetoothDevice.html":{}}}],["bluetooth/src/lib/test.utils.ts:14",{"_index":425,"title":{},"body":{"classes/FakeBluetoothDevice.html":{}}}],["bluetooth/src/lib/test.utils.ts:17",{"_index":431,"title":{},"body":{"classes/FakeBluetoothDevice.html":{}}}],["bluetooth/src/lib/test.utils.ts:24",{"_index":433,"title":{},"body":{"classes/FakeBluetoothDevice.html":{}}}],["bluetooth/src/lib/test.utils.ts:29",{"_index":432,"title":{},"body":{"classes/FakeBluetoothDevice.html":{}}}],["bluetooth/src/lib/test.utils.ts:39",{"_index":486,"title":{},"body":{"classes/FakeBluetoothRemoteGATTServer.html":{}}}],["bluetooth/src/lib/test.utils.ts:41",{"_index":487,"title":{},"body":{"classes/FakeBluetoothRemoteGATTServer.html":{}}}],["bluetooth/src/lib/test.utils.ts:45",{"_index":488,"title":{},"body":{"classes/FakeBluetoothRemoteGATTServer.html":{}}}],["bluetooth/src/lib/test.utils.ts:50",{"_index":490,"title":{},"body":{"classes/FakeBluetoothRemoteGATTServer.html":{}}}],["bluetooth/src/lib/test.utils.ts:54",{"_index":489,"title":{},"body":{"classes/FakeBluetoothRemoteGATTServer.html":{}}}],["bluetooth/src/lib/test.utils.ts:60",{"_index":492,"title":{},"body":{"classes/FakeBluetoothRemoteGATTService.html":{}}}],["bluetooth/src/lib/test.utils.ts:61",{"_index":493,"title":{},"body":{"classes/FakeBluetoothRemoteGATTService.html":{}}}],["bluetooth/src/lib/test.utils.ts:65",{"_index":494,"title":{},"body":{"classes/FakeBluetoothRemoteGATTService.html":{}}}],["bluetooth/src/lib/test.utils.ts:7",{"_index":424,"title":{},"body":{"classes/FakeBluetoothDevice.html":{}}}],["bluetooth/src/lib/test.utils.ts:71",{"_index":479,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth/src/lib/test.utils.ts:72",{"_index":478,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth/src/lib/test.utils.ts:73",{"_index":476,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth/src/lib/test.utils.ts:74",{"_index":477,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth/src/lib/test.utils.ts:78",{"_index":474,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth/src/lib/test.utils.ts:8",{"_index":427,"title":{},"body":{"classes/FakeBluetoothDevice.html":{}}}],["bluetooth/src/lib/test.utils.ts:86",{"_index":483,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth/src/lib/test.utils.ts:90",{"_index":480,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth/src/lib/test.utils.ts:97",{"_index":481,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth_disabled",{"_index":389,"title":{},"body":{"components/DashboardComponent.html":{}}}],["bluetooth_searching",{"_index":387,"title":{},"body":{"components/DashboardComponent.html":{}}}],["bluetoothcharacteristicproperties",{"_index":462,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["bluetoothcharacteristicuuid",{"_index":459,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["bluetoothcore",{"_index":23,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["bluetoothcore(b",{"_index":258,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"miscellaneous/variables.html":{}}}],["bluetoothremotegattcharacteristic",{"_index":749,"title":{},"body":{"index.html":{}}}],["bluetoothremotegattserver",{"_index":423,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"index.html":{}}}],["bluetoothremotegattservice",{"_index":743,"title":{},"body":{"index.html":{}}}],["bluetoothserviceuuid",{"_index":452,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["boolean",{"_index":13,"title":{},"body":{"interfaces/AWBOptions.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"modules/WebBluetoothModule.html":{}}}],["bootstrap",{"_index":89,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["bordervisible",{"_index":546,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["bottom",{"_index":191,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{}}}],["browse",{"_index":845,"title":{},"body":{"modules.html":{}}}],["browser",{"_index":137,"title":{},"body":{"modules/AppModule.html":{},"classes/AppPage.html":{},"injectables/BrowserWebBluetooth.html":{},"dependencies.html":{},"index.html":{},"modules.html":{}}}],["browser's",{"_index":693,"title":{},"body":{"index.html":{}}}],["browser.get(browser.baseurl",{"_index":152,"title":{},"body":{"classes/AppPage.html":{}}}],["browser/animations",{"_index":105,"title":{},"body":{"modules/AppModule.html":{}}}],["browseranimationsmodule",{"_index":103,"title":{},"body":{"modules/AppModule.html":{}}}],["browsermodule",{"_index":136,"title":{},"body":{"modules/AppModule.html":{}}}],["browserwebbluetooth",{"_index":25,"title":{"injectables/BrowserWebBluetooth.html":{}},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"injectables/BrowserWebBluetooth.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["button",{"_index":410,"title":{},"body":{"components/DashboardComponent.html":{}}}],["c",{"_index":779,"title":{},"body":{"index.html":{},"license.html":{}}}],["call",{"_index":703,"title":{},"body":{"index.html":{}}}],["can't",{"_index":722,"title":{},"body":{"index.html":{}}}],["canvas",{"_index":496,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["card",{"_index":407,"title":{},"body":{"components/DashboardComponent.html":{}}}],["cc2650",{"_index":911,"title":{},"body":{"miscellaneous/variables.html":{}}}],["center",{"_index":167,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["changevalue",{"_index":473,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["changevalue(value",{"_index":471,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["characteristic",{"_index":271,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["characteristics",{"_index":456,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"index.html":{}}}],["characteristicvaluechanged",{"_index":465,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["charge",{"_index":786,"title":{},"body":{"index.html":{},"license.html":{}}}],["chart",{"_index":498,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["chartref",{"_index":499,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["checkout",{"_index":764,"title":{},"body":{"index.html":{}}}],["chegham",{"_index":782,"title":{},"body":{"index.html":{},"license.html":{}}}],["claim",{"_index":833,"title":{},"body":{"index.html":{},"license.html":{}}}],["class",{"_index":40,"title":{"classes/AppPage.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"index.html":{}}}],["classes",{"_index":141,"title":{},"body":{"classes/AppPage.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"overview.html":{}}}],["clear",{"_index":420,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"index.html":{}}}],["close",{"_index":303,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["cluster_appmodule",{"_index":91,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["cluster_appmodule_bootstrap",{"_index":93,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["cluster_appmodule_declarations",{"_index":94,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["cluster_appmodule_imports",{"_index":92,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["color",{"_index":196,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["command",{"_index":761,"title":{},"body":{"index.html":{}}}],["commonmodule",{"_index":21,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["component",{"_index":52,"title":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{}}}],["component_template",{"_index":68,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["components",{"_index":54,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"overview.html":{}}}],["conditions",{"_index":811,"title":{},"body":{"index.html":{},"license.html":{}}}],["config",{"_index":312,"title":{},"body":{"injectables/BleService.html":{},"miscellaneous/variables.html":{}}}],["config(options",{"_index":317,"title":{},"body":{"injectables/BleService.html":{}}}],["configuration",{"_index":897,"title":{},"body":{"miscellaneous/variables.html":{}}}],["connect",{"_index":388,"title":{},"body":{"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["connected",{"_index":286,"title":{},"body":{"components/BatteryLevelComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"index.html":{}}}],["connection",{"_index":842,"title":{},"body":{"index.html":{},"license.html":{}}}],["console",{"_index":198,"title":{},"body":{"components/BatteryLevelComponent.html":{},"index.html":{}}}],["console.error.apply(console",{"_index":375,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["console.log('getting",{"_index":712,"title":{},"body":{"index.html":{}}}],["console.log('reading",{"_index":560,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["console.log(value",{"_index":338,"title":{},"body":{"injectables/BleService.html":{}}}],["console.log.apply(console",{"_index":374,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["console.warn.apply(console",{"_index":376,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["consoleloggerservice",{"_index":27,"title":{"injectables/ConsoleLoggerService.html":{}},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"injectables/ConsoleLoggerService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["consoleloggerserviceconfig",{"_index":48,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/functions.html":{}}}],["consoleloggerserviceconfig(options",{"_index":34,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{},"miscellaneous/functions.html":{}}}],["const",{"_index":254,"title":{},"body":{"components/BatteryLevelComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["constructor",{"_index":214,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["constructor(ble",{"_index":315,"title":{},"body":{"injectables/BleService.html":{}}}],["constructor(device",{"_index":485,"title":{},"body":{"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["constructor(id",{"_index":421,"title":{},"body":{"classes/FakeBluetoothDevice.html":{}}}],["constructor(properties",{"_index":466,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["constructor(public",{"_index":333,"title":{},"body":{"injectables/BleService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["constructor(service",{"_index":215,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["container",{"_index":405,"title":{},"body":{"components/DashboardComponent.html":{}}}],["content",{"_index":154,"title":{},"body":{"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{}}}],["contract",{"_index":838,"title":{},"body":{"index.html":{},"license.html":{}}}],["contributions",{"_index":770,"title":{},"body":{"index.html":{}}}],["control",{"_index":948,"title":{},"body":{"miscellaneous/variables.html":{}}}],["copies",{"_index":806,"title":{},"body":{"index.html":{},"license.html":{}}}],["copy",{"_index":789,"title":{},"body":{"index.html":{},"license.html":{}}}],["copyright",{"_index":778,"title":{},"body":{"index.html":{},"license.html":{}}}],["correctly",{"_index":689,"title":{},"body":{"index.html":{}}}],["count",{"_index":598,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["counter",{"_index":604,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["coverage",{"_index":627,"title":{"coverage.html":{}},"body":{"coverage.html":{}}}],["current_used_parameters",{"_index":950,"title":{},"body":{"miscellaneous/variables.html":{}}}],["d",{"_index":298,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["damages",{"_index":834,"title":{},"body":{"index.html":{},"license.html":{}}}],["dashboard",{"_index":378,"title":{},"body":{"components/DashboardComponent.html":{}}}],["dashboard'},{'name",{"_index":75,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["dashboard.component.css",{"_index":380,"title":{},"body":{"components/DashboardComponent.html":{}}}],["dashboard.component.html",{"_index":382,"title":{},"body":{"components/DashboardComponent.html":{}}}],["dashboard/dashboard.component",{"_index":132,"title":{},"body":{"modules/AppModule.html":{}}}],["dashboardcomponent",{"_index":74,"title":{"components/DashboardComponent.html":{}},"body":{"components/AppComponent.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{},"overview.html":{}}}],["data",{"_index":895,"title":{},"body":{"miscellaneous/variables.html":{}}}],["dataview",{"_index":268,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["deal",{"_index":793,"title":{},"body":{"index.html":{},"license.html":{}}}],["dealings",{"_index":843,"title":{},"body":{"index.html":{},"license.html":{}}}],["decimal",{"_index":623,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["declarations",{"_index":88,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["decoder",{"_index":267,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["decoder(value",{"_index":328,"title":{},"body":{"injectables/BleService.html":{}}}],["decorators",{"_index":513,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["default",{"_index":234,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"miscellaneous/variables.html":{}}}],["defined",{"_index":146,"title":{},"body":{"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{}}}],["demo",{"_index":385,"title":{},"body":{"components/DashboardComponent.html":{}}}],["dependencies",{"_index":87,"title":{"dependencies.html":{}},"body":{"modules/AppModule.html":{},"dependencies.html":{},"overview.html":{}}}],["deps",{"_index":49,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"miscellaneous/variables.html":{}}}],["details",{"_index":359,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["determinate",{"_index":242,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["dev.to",{"_index":767,"title":{},"body":{"index.html":{}}}],["developer",{"_index":725,"title":{},"body":{"index.html":{}}}],["device",{"_index":213,"title":{},"body":{"components/BatteryLevelComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["device.gatt",{"_index":448,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["device.name",{"_index":390,"title":{},"body":{"components/DashboardComponent.html":{}}}],["device_id",{"_index":946,"title":{},"body":{"miscellaneous/variables.html":{}}}],["device_information",{"_index":868,"title":{},"body":{"miscellaneous/variables.html":{}}}],["devicesubscription",{"_index":199,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["direction",{"_index":168,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["directions_walk",{"_index":584,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["directive",{"_index":66,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["directives",{"_index":82,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["disconnect",{"_index":205,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["disconnect_request",{"_index":954,"title":{},"body":{"miscellaneous/variables.html":{}}}],["disconnectdevice",{"_index":313,"title":{},"body":{"injectables/BleService.html":{},"index.html":{}}}],["disconnected",{"_index":287,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["discover",{"_index":731,"title":{},"body":{"index.html":{}}}],["discovery",{"_index":733,"title":{},"body":{"index.html":{}}}],["display",{"_index":164,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["distribute",{"_index":802,"title":{},"body":{"index.html":{},"license.html":{}}}],["documentation",{"_index":628,"title":{},"body":{"coverage.html":{},"index.html":{},"license.html":{}}}],["dom",{"_index":55,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["dynamic",{"_index":662,"title":{},"body":{"dependencies.html":{}}}],["e2e/src/app.po.ts",{"_index":142,"title":{},"body":{"classes/AppPage.html":{},"coverage.html":{}}}],["e2e/src/app.po.ts:4",{"_index":150,"title":{},"body":{"classes/AppPage.html":{}}}],["e2e/src/app.po.ts:8",{"_index":147,"title":{},"body":{"classes/AppPage.html":{}}}],["each",{"_index":264,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["easiest",{"_index":697,"title":{},"body":{"index.html":{}}}],["ef680200",{"_index":525,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["ef680201",{"_index":621,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["ef680203",{"_index":530,"title":{},"body":{"components/HumidityComponent.html":{}}}],["ef680400",{"_index":602,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["ef680405",{"_index":603,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["element",{"_index":65,"title":{},"body":{"components/AppComponent.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["element(by.css('app",{"_index":153,"title":{},"body":{"classes/AppPage.html":{}}}],["elementref",{"_index":512,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["elsewhere",{"_index":724,"title":{},"body":{"index.html":{}}}],["emites",{"_index":728,"title":{},"body":{"index.html":{}}}],["emitted",{"_index":706,"title":{},"body":{"index.html":{}}}],["enable",{"_index":691,"title":{},"body":{"index.html":{}}}],["enabletracing",{"_index":12,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/AppModule.html":{},"modules/WebBluetoothModule.html":{},"index.html":{}}}],["environment",{"_index":650,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["err",{"_index":294,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["error",{"_index":226,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/ConsoleLoggerService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["error('your",{"_index":353,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["error(...args",{"_index":363,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["error(args",{"_index":372,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["event",{"_index":440,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"index.html":{},"license.html":{}}}],["eventlistener",{"_index":430,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["example",{"_index":684,"title":{},"body":{"index.html":{}}}],["export",{"_index":30,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"index.html":{}}}],["exports",{"_index":90,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["express",{"_index":821,"title":{},"body":{"index.html":{},"license.html":{}}}],["f000180a",{"_index":869,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000180f",{"_index":892,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a19",{"_index":893,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a23",{"_index":875,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a24",{"_index":877,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a25",{"_index":879,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a26",{"_index":881,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a27",{"_index":883,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a28",{"_index":885,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a29",{"_index":887,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a2a",{"_index":889,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a50",{"_index":891,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa00",{"_index":894,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa01",{"_index":896,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa02",{"_index":898,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa03",{"_index":900,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa10",{"_index":913,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa11",{"_index":914,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa12",{"_index":915,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa13",{"_index":916,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa20",{"_index":901,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa21",{"_index":902,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa22",{"_index":903,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa23",{"_index":904,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa30",{"_index":918,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa31",{"_index":919,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa32",{"_index":920,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa33",{"_index":921,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa40",{"_index":906,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa41",{"_index":907,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa42",{"_index":908,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa44",{"_index":909,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa50",{"_index":923,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa51",{"_index":924,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa52",{"_index":925,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa53",{"_index":926,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa64",{"_index":967,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa65",{"_index":968,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa66",{"_index":969,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa70",{"_index":933,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa71",{"_index":934,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa72",{"_index":935,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa73",{"_index":936,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa80",{"_index":928,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa81",{"_index":929,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa82",{"_index":930,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa83",{"_index":931,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ac00",{"_index":942,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ac01",{"_index":943,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ac02",{"_index":945,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ac03",{"_index":947,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ccc0",{"_index":949,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ccc1",{"_index":951,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ccc2",{"_index":953,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ccc3",{"_index":955,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ffc0",{"_index":957,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ffc1",{"_index":959,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ffc2",{"_index":961,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ffc3",{"_index":963,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ffc4",{"_index":965,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ffe0",{"_index":938,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ffe1",{"_index":940,"title":{},"body":{"miscellaneous/variables.html":{}}}],["fakebluetoothdevice",{"_index":414,"title":{"classes/FakeBluetoothDevice.html":{}},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"coverage.html":{}}}],["fakebluetoothremotegattcharacteristic",{"_index":461,"title":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"coverage.html":{}}}],["fakebluetoothremotegattserver",{"_index":445,"title":{"classes/FakeBluetoothRemoteGATTServer.html":{}},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"coverage.html":{}}}],["fakebluetoothremotegattservice",{"_index":455,"title":{"classes/FakeBluetoothRemoteGATTService.html":{}},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"coverage.html":{}}}],["false",{"_index":446,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["few",{"_index":772,"title":{},"body":{"index.html":{}}}],["ff0000",{"_index":554,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["ffffff",{"_index":543,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["file",{"_index":5,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{}}}],["file:../../@manekinekko/angular",{"_index":664,"title":{},"body":{"dependencies.html":{}}}],["files",{"_index":792,"title":{},"body":{"index.html":{},"license.html":{}}}],["fillstyle",{"_index":542,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["firmware_rev",{"_index":880,"title":{},"body":{"miscellaneous/variables.html":{}}}],["fitness",{"_index":826,"title":{},"body":{"index.html":{},"license.html":{}}}],["flex",{"_index":165,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["following",{"_index":760,"title":{},"body":{"index.html":{},"license.html":{}}}],["font",{"_index":173,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/StepCounterComponent.html":{}}}],["fontsize",{"_index":549,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["forroot",{"_index":625,"title":{},"body":{"modules/WebBluetoothModule.html":{}}}],["forroot(options",{"_index":43,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["found",{"_index":753,"title":{},"body":{"index.html":{}}}],["free",{"_index":726,"title":{},"body":{"index.html":{},"license.html":{}}}],["full",{"_index":765,"title":{},"body":{"index.html":{}}}],["function",{"_index":31,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{}}}],["functions",{"_index":678,"title":{"miscellaneous/functions.html":{}},"body":{"miscellaneous/functions.html":{}}}],["furnished",{"_index":809,"title":{},"body":{"index.html":{},"license.html":{}}}],["gatt",{"_index":416,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"index.html":{}}}],["gatt_characteristic_battery_level",{"_index":716,"title":{},"body":{"index.html":{}}}],["gatt_primary_service",{"_index":717,"title":{},"body":{"index.html":{}}}],["gattserverdisconnected",{"_index":426,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["getcharacteristic",{"_index":491,"title":{},"body":{"classes/FakeBluetoothRemoteGATTService.html":{}}}],["getcharacteristic(characteristic",{"_index":458,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["getdevice",{"_index":250,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["getdevicestatus",{"_index":206,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["getprimaryservice",{"_index":484,"title":{},"body":{"classes/FakeBluetoothRemoteGATTServer.html":{}}}],["getprimaryservice(service",{"_index":451,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["getting",{"_index":680,"title":{"index.html":{},"license.html":{}},"body":{"index.html":{}}}],["gettitletext",{"_index":144,"title":{},"body":{"classes/AppPage.html":{}}}],["given",{"_index":707,"title":{},"body":{"index.html":{}}}],["granted",{"_index":785,"title":{},"body":{"index.html":{},"license.html":{}}}],["graph",{"_index":846,"title":{},"body":{"modules.html":{}}}],["grid",{"_index":404,"title":{},"body":{"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["gyroscope",{"_index":922,"title":{},"body":{"miscellaneous/variables.html":{}}}],["hardware_rev",{"_index":882,"title":{},"body":{"miscellaneous/variables.html":{}}}],["haserror",{"_index":207,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["haserror(error",{"_index":223,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["height",{"_index":583,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["help",{"_index":775,"title":{},"body":{"index.html":{}}}],["here",{"_index":699,"title":{},"body":{"index.html":{}}}],["hereby",{"_index":784,"title":{},"body":{"index.html":{},"license.html":{}}}],["holders",{"_index":831,"title":{},"body":{"index.html":{},"license.html":{}}}],["host",{"_index":163,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["html",{"_index":64,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["http://caniuse.com/#search=bluetooth",{"_index":357,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["https://manekinekko.github.io/angular",{"_index":754,"title":{},"body":{"index.html":{}}}],["humidity",{"_index":391,"title":{},"body":{"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"miscellaneous/variables.html":{}}}],["humidity'},{'name",{"_index":77,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["humiditycomponent",{"_index":76,"title":{"components/HumidityComponent.html":{}},"body":{"components/AppComponent.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{},"overview.html":{}}}],["icon",{"_index":190,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["id",{"_index":417,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["identifier",{"_index":629,"title":{},"body":{"coverage.html":{}}}],["ieee11073",{"_index":888,"title":{},"body":{"miscellaneous/variables.html":{}}}],["image_block_request",{"_index":960,"title":{},"body":{"miscellaneous/variables.html":{}}}],["image_count",{"_index":962,"title":{},"body":{"miscellaneous/variables.html":{}}}],["image_notify",{"_index":958,"title":{},"body":{"miscellaneous/variables.html":{}}}],["image_status",{"_index":964,"title":{},"body":{"miscellaneous/variables.html":{}}}],["img",{"_index":412,"title":{},"body":{"components/DashboardComponent.html":{}}}],["implements",{"_index":159,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/ConsoleLoggerService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["implied",{"_index":822,"title":{},"body":{"index.html":{},"license.html":{}}}],["import",{"_index":16,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"index.html":{}}}],["imports",{"_index":39,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/AppModule.html":{},"modules/WebBluetoothModule.html":{},"index.html":{}}}],["included",{"_index":815,"title":{},"body":{"index.html":{},"license.html":{}}}],["including",{"_index":796,"title":{},"body":{"index.html":{},"license.html":{}}}],["indeterminate",{"_index":284,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["index",{"_index":9,"title":{"index.html":{}},"body":{"interfaces/AWBOptions.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["info",{"_index":3,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{}}}],["initchart",{"_index":501,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["initialvalue",{"_index":464,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["injectable",{"_index":307,"title":{"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{}},"body":{"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"coverage.html":{},"index.html":{}}}],["injectables",{"_index":308,"title":{},"body":{"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"overview.html":{}}}],["injectiontoken",{"_index":19,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["injectiontoken('awboptions",{"_index":38,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["install",{"_index":683,"title":{},"body":{"index.html":{}}}],["installed",{"_index":688,"title":{},"body":{"index.html":{}}}],["instance",{"_index":263,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["integer",{"_index":622,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["interface",{"_index":0,"title":{"interfaces/AWBOptions.html":{},"interfaces/Logger.html":{}},"body":{"interfaces/AWBOptions.html":{},"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{}}}],["interfaces",{"_index":2,"title":{},"body":{"interfaces/AWBOptions.html":{},"interfaces/Logger.html":{},"overview.html":{}}}],["interpolation",{"_index":540,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["io",{"_index":966,"title":{},"body":{"miscellaneous/variables.html":{}}}],["issues",{"_index":774,"title":{},"body":{"index.html":{}}}],["jest",{"_index":671,"title":{},"body":{"dependencies.html":{}}}],["justify",{"_index":166,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["key",{"_index":276,"title":{},"body":{"components/BatteryLevelComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["keypress",{"_index":937,"title":{},"body":{"miscellaneous/variables.html":{}}}],["kind",{"_index":820,"title":{},"body":{"index.html":{},"license.html":{}}}],["l",{"_index":257,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"miscellaneous/variables.html":{}}}],["labels",{"_index":547,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["layoutmodule",{"_index":99,"title":{},"body":{"modules/AppModule.html":{}}}],["left",{"_index":188,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["legend",{"_index":63,"title":{},"body":{"components/AppComponent.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"overview.html":{}}}],["length",{"_index":537,"title":{},"body":{"components/HumidityComponent.html":{}}}],["level",{"_index":162,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["level'},{'name",{"_index":73,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["level.component",{"_index":131,"title":{},"body":{"modules/AppModule.html":{}}}],["level.component.ts",{"_index":158,"title":{},"body":{"components/BatteryLevelComponent.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["level.component.ts:116",{"_index":222,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:131",{"_index":229,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:144",{"_index":233,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:162",{"_index":220,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:168",{"_index":225,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:172",{"_index":227,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:76",{"_index":248,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:77",{"_index":243,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:78",{"_index":236,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:79",{"_index":249,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:80",{"_index":246,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:81",{"_index":240,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:83",{"_index":251,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:85",{"_index":218,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:88",{"_index":244,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:89",{"_index":245,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:90",{"_index":237,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:99",{"_index":228,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["liability",{"_index":835,"title":{},"body":{"index.html":{},"license.html":{}}}],["liable",{"_index":832,"title":{},"body":{"index.html":{},"license.html":{}}}],["license",{"_index":776,"title":{"license.html":{}},"body":{"index.html":{},"license.html":{}}}],["light",{"_index":932,"title":{},"body":{"miscellaneous/variables.html":{}}}],["limitation",{"_index":797,"title":{},"body":{"index.html":{},"license.html":{}}}],["limited",{"_index":823,"title":{},"body":{"index.html":{},"license.html":{}}}],["line",{"_index":331,"title":{},"body":{"injectables/BleService.html":{},"components/HumidityComponent.html":{}}}],["linewidth",{"_index":553,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["list",{"_index":112,"title":{},"body":{"modules/AppModule.html":{}}}],["listener",{"_index":429,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["listener(mockedevent",{"_index":439,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["listeners",{"_index":418,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["literal",{"_index":232,"title":{},"body":{"components/BatteryLevelComponent.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{},"miscellaneous/typealiases.html":{}}}],["log",{"_index":362,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["log(...args",{"_index":366,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["log(args",{"_index":371,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["logger",{"_index":370,"title":{"interfaces/Logger.html":{}},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"coverage.html":{}}}],["logger.service",{"_index":29,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["logic",{"_index":720,"title":{},"body":{"index.html":{}}}],["logs",{"_index":692,"title":{},"body":{"index.html":{}}}],["magnetometer",{"_index":917,"title":{},"body":{"miscellaneous/variables.html":{}}}],["make",{"_index":260,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["makemetokeninjector",{"_index":37,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/functions.html":{}}}],["manekinekko/angular",{"_index":127,"title":{},"body":{"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"dependencies.html":{},"index.html":{}}}],["manifacturer",{"_index":886,"title":{},"body":{"miscellaneous/variables.html":{}}}],["map",{"_index":325,"title":{},"body":{"injectables/BleService.html":{},"index.html":{}}}],["map((value",{"_index":708,"title":{},"body":{"index.html":{}}}],["map(this._config.decoder",{"_index":339,"title":{},"body":{"injectables/BleService.html":{}}}],["margin",{"_index":398,"title":{},"body":{"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["mat",{"_index":185,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["matbuttonmodule",{"_index":101,"title":{},"body":{"modules/AppModule.html":{}}}],["matcardmodule",{"_index":106,"title":{},"body":{"modules/AppModule.html":{}}}],["matching",{"_index":51,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/functions.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"properties.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["matexpansionmodule",{"_index":108,"title":{},"body":{"modules/AppModule.html":{}}}],["matgridlistmodule",{"_index":110,"title":{},"body":{"modules/AppModule.html":{}}}],["maticonmodule",{"_index":113,"title":{},"body":{"modules/AppModule.html":{}}}],["matlistmodule",{"_index":115,"title":{},"body":{"modules/AppModule.html":{}}}],["matmenumodule",{"_index":117,"title":{},"body":{"modules/AppModule.html":{}}}],["matprogressspinnermodule",{"_index":119,"title":{},"body":{"modules/AppModule.html":{}}}],["matsnackbar",{"_index":217,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["matsnackbarmodule",{"_index":122,"title":{},"body":{"modules/AppModule.html":{}}}],["mattoolbarmodule",{"_index":125,"title":{},"body":{"modules/AppModule.html":{}}}],["max",{"_index":396,"title":{},"body":{"components/DashboardComponent.html":{},"components/HumidityComponent.html":{}}}],["merchantability",{"_index":825,"title":{},"body":{"index.html":{},"license.html":{}}}],["merge",{"_index":800,"title":{},"body":{"index.html":{},"license.html":{}}}],["mergemap",{"_index":715,"title":{},"body":{"index.html":{}}}],["mergemap((characteristic",{"_index":748,"title":{},"body":{"index.html":{}}}],["mergemap((gatt",{"_index":739,"title":{},"body":{"index.html":{}}}],["mergemap((primaryservice",{"_index":742,"title":{},"body":{"index.html":{}}}],["metadata",{"_index":58,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["method",{"_index":704,"title":{},"body":{"index.html":{}}}],["methods",{"_index":143,"title":{},"body":{"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{}}}],["miscellaneous",{"_index":677,"title":{"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}},"body":{"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["missing",{"_index":682,"title":{},"body":{"index.html":{}}}],["mit",{"_index":777,"title":{},"body":{"index.html":{},"license.html":{}}}],["mocked",{"_index":574,"title":{},"body":{"injectables/ServerWebBluetooth.html":{}}}],["mockedevent",{"_index":435,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["mode",{"_index":200,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["model",{"_index":910,"title":{},"body":{"miscellaneous/variables.html":{}}}],["model_number",{"_index":876,"title":{},"body":{"miscellaneous/variables.html":{}}}],["modify",{"_index":799,"title":{},"body":{"index.html":{},"license.html":{}}}],["module",{"_index":84,"title":{"modules/AppModule.html":{},"modules/WebBluetoothModule.html":{}},"body":{"modules/AppModule.html":{},"index.html":{},"overview.html":{}}}],["modules",{"_index":86,"title":{"modules.html":{}},"body":{"modules/AppModule.html":{},"modules/WebBluetoothModule.html":{},"modules.html":{},"overview.html":{}}}],["modulewithproviders",{"_index":18,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["more",{"_index":358,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{},"components/DashboardComponent.html":{}}}],["more_vert",{"_index":386,"title":{},"body":{"components/DashboardComponent.html":{}}}],["movement",{"_index":927,"title":{},"body":{"miscellaneous/variables.html":{}}}],["name",{"_index":69,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"miscellaneous/functions.html":{}}}],["navigateto",{"_index":145,"title":{},"body":{"classes/AppPage.html":{}}}],["navigator.bluetooth",{"_index":351,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["need",{"_index":755,"title":{},"body":{"index.html":{}}}],["new",{"_index":33,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"injectables/BrowserWebBluetooth.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["next",{"_index":291,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["ngmodule",{"_index":17,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/AppModule.html":{},"modules/WebBluetoothModule.html":{},"index.html":{}}}],["ngondestroy",{"_index":208,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["ngoninit",{"_index":209,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["node_modules",{"_index":690,"title":{},"body":{"index.html":{}}}],["nologgerservice",{"_index":28,"title":{"injectables/NoLoggerService.html":{}},"body":{"interfaces/AWBOptions.html":{},"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{}}}],["noninfringement",{"_index":829,"title":{},"body":{"index.html":{},"license.html":{}}}],["note",{"_index":687,"title":{},"body":{"index.html":{}}}],["notice",{"_index":813,"title":{},"body":{"index.html":{},"license.html":{}}}],["notifications",{"_index":711,"title":{},"body":{"index.html":{}}}],["now",{"_index":576,"title":{},"body":{"injectables/ServerWebBluetooth.html":{}}}],["npm",{"_index":685,"title":{},"body":{"index.html":{}}}],["null",{"_index":239,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["number",{"_index":231,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["oad",{"_index":956,"title":{},"body":{"miscellaneous/variables.html":{}}}],["object",{"_index":575,"title":{},"body":{"injectables/ServerWebBluetooth.html":{},"miscellaneous/variables.html":{}}}],["object.keys(titag).map(key",{"_index":866,"title":{},"body":{"miscellaneous/variables.html":{}}}],["obtaining",{"_index":788,"title":{},"body":{"index.html":{},"license.html":{}}}],["of(this.haserror.bind(this",{"_index":559,"title":{},"body":{"components/HumidityComponent.html":{}}}],["ondestroy",{"_index":161,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["oninit",{"_index":160,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["open",{"_index":773,"title":{},"body":{"index.html":{}}}],["optional",{"_index":11,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"miscellaneous/functions.html":{}}}],["optionalservices",{"_index":736,"title":{},"body":{"index.html":{}}}],["options",{"_index":35,"title":{},"body":{"interfaces/AWBOptions.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"modules/WebBluetoothModule.html":{},"miscellaneous/functions.html":{}}}],["options.enabletracing",{"_index":36,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["otherwise",{"_index":840,"title":{},"body":{"index.html":{},"license.html":{}}}],["out",{"_index":97,"title":{},"body":{"modules/AppModule.html":{},"index.html":{},"license.html":{},"overview.html":{}}}],["overview",{"_index":848,"title":{"overview.html":{}},"body":{"overview.html":{}}}],["package",{"_index":654,"title":{"dependencies.html":{},"properties.html":{}},"body":{"index.html":{}}}],["padding",{"_index":394,"title":{},"body":{"components/DashboardComponent.html":{}}}],["parameters",{"_index":219,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"miscellaneous/functions.html":{}}}],["particular",{"_index":827,"title":{},"body":{"index.html":{},"license.html":{}}}],["period",{"_index":899,"title":{},"body":{"miscellaneous/variables.html":{}}}],["permission",{"_index":783,"title":{},"body":{"index.html":{},"license.html":{}}}],["permit",{"_index":807,"title":{},"body":{"index.html":{},"license.html":{}}}],["person",{"_index":787,"title":{},"body":{"index.html":{},"license.html":{}}}],["persons",{"_index":808,"title":{},"body":{"index.html":{},"license.html":{}}}],["pipe",{"_index":343,"title":{},"body":{"injectables/BleService.html":{},"index.html":{}}}],["platform/browser",{"_index":26,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["pnp_id",{"_index":890,"title":{},"body":{"miscellaneous/variables.html":{}}}],["portions",{"_index":817,"title":{},"body":{"index.html":{},"license.html":{}}}],["position",{"_index":176,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["post",{"_index":763,"title":{},"body":{"index.html":{}}}],["pr",{"_index":769,"title":{},"body":{"index.html":{}}}],["primary",{"_index":235,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["private",{"_index":310,"title":{},"body":{"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["process",{"_index":734,"title":{},"body":{"index.html":{}}}],["production",{"_index":865,"title":{},"body":{"miscellaneous/variables.html":{}}}],["progress",{"_index":186,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["progressspinnermode",{"_index":241,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["project",{"_index":757,"title":{},"body":{"index.html":{}}}],["projects/.../bluetooth.module.ts",{"_index":679,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/.../bluetooth.service.ts",{"_index":855,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["projects/.../ti",{"_index":864,"title":{},"body":{"miscellaneous/variables.html":{}}}],["projects/manekinekko/angular",{"_index":6,"title":{},"body":{"interfaces/AWBOptions.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["promise",{"_index":149,"title":{},"body":{"classes/AppPage.html":{},"injectables/BrowserWebBluetooth.html":{}}}],["promise.resolve(this",{"_index":450,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["promise.resolve(this.characteristics[characteristic",{"_index":460,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["promise.resolve(this.services[service].service",{"_index":453,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["promise.resolve(this.value",{"_index":470,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["properties",{"_index":10,"title":{"properties.html":{}},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"properties.html":{}}}],["protractor",{"_index":151,"title":{},"body":{"classes/AppPage.html":{}}}],["provide",{"_index":45,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["provided",{"_index":818,"title":{},"body":{"index.html":{},"license.html":{}}}],["providedin",{"_index":329,"title":{},"body":{"injectables/BleService.html":{},"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"index.html":{}}}],["providers",{"_index":44,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"overview.html":{},"miscellaneous/variables.html":{}}}],["public",{"_index":197,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["publish",{"_index":801,"title":{},"body":{"index.html":{},"license.html":{}}}],["purpose",{"_index":828,"title":{},"body":{"index.html":{},"license.html":{}}}],["read",{"_index":730,"title":{},"body":{"index.html":{}}}],["readonly",{"_index":463,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"index.html":{}}}],["readvalue",{"_index":469,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["readvalueoptions",{"_index":854,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["request_new_parameters",{"_index":952,"title":{},"body":{"miscellaneous/variables.html":{}}}],["requestdevice",{"_index":346,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["requestdevice(options",{"_index":348,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["requestdeviceoptions",{"_index":349,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["requested",{"_index":729,"title":{},"body":{"index.html":{}}}],["requestvalue",{"_index":210,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["reset",{"_index":96,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["restriction",{"_index":795,"title":{},"body":{"index.html":{},"license.html":{}}}],["results",{"_index":50,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/functions.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"properties.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["return",{"_index":32,"title":{},"body":{"interfaces/AWBOptions.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"index.html":{}}}],["returns",{"_index":148,"title":{},"body":{"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{}}}],["rgba(119,119,119,0.18",{"_index":545,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["rgba(255,161,161,0.30",{"_index":555,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["right",{"_index":409,"title":{},"body":{"components/DashboardComponent.html":{},"index.html":{}}}],["rights",{"_index":798,"title":{},"body":{"index.html":{},"license.html":{}}}],["root",{"_index":61,"title":{},"body":{"components/AppComponent.html":{},"classes/AppPage.html":{},"injectables/BleService.html":{},"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"index.html":{}}}],["root'},{'name",{"_index":70,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["row",{"_index":169,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["run",{"_index":759,"title":{},"body":{"index.html":{}}}],["rxjs",{"_index":252,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"dependencies.html":{}}}],["rxjs/operators",{"_index":327,"title":{},"body":{"injectables/BleService.html":{},"index.html":{}}}],["s",{"_index":686,"title":{},"body":{"index.html":{}}}],["section",{"_index":393,"title":{},"body":{"components/DashboardComponent.html":{}}}],["see",{"_index":356,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["selector",{"_index":59,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["sell",{"_index":805,"title":{},"body":{"index.html":{},"license.html":{}}}],["sensortag2.ts",{"_index":638,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["serial_number",{"_index":878,"title":{},"body":{"miscellaneous/variables.html":{}}}],["series",{"_index":500,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["serverwebbluetooth",{"_index":571,"title":{"injectables/ServerWebBluetooth.html":{}},"body":{"injectables/ServerWebBluetooth.html":{},"coverage.html":{}}}],["serves",{"_index":758,"title":{},"body":{"index.html":{}}}],["service",{"_index":201,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["service.config",{"_index":266,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["service/component",{"_index":696,"title":{},"body":{"index.html":{}}}],["serviceoptions",{"_index":318,"title":{},"body":{"injectables/BleService.html":{},"miscellaneous/typealiases.html":{}}}],["services",{"_index":447,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["shall",{"_index":814,"title":{},"body":{"index.html":{},"license.html":{}}}],["singleton",{"_index":262,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["size",{"_index":174,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/StepCounterComponent.html":{}}}],["smart",{"_index":355,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["smoothie",{"_index":524,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{},"dependencies.html":{}}}],["smoothiechart",{"_index":510,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["snackbar",{"_index":202,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["software",{"_index":790,"title":{},"body":{"index.html":{},"license.html":{}}}],["software_rev",{"_index":884,"title":{},"body":{"miscellaneous/variables.html":{}}}],["source",{"_index":4,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{}}}],["span",{"_index":172,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/StepCounterComponent.html":{}}}],["span')).gettext",{"_index":155,"title":{},"body":{"classes/AppPage.html":{}}}],["specific",{"_index":721,"title":{},"body":{"index.html":{}}}],["spinner",{"_index":121,"title":{},"body":{"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{}}}],["src/.../battery",{"_index":858,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../ble.service.ts",{"_index":856,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["src/.../environment.prod.ts",{"_index":862,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../environment.ts",{"_index":863,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../humidity.component.ts",{"_index":859,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../stepcounter.component.ts",{"_index":860,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../temperature.component.ts",{"_index":861,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/app/app.component.ts",{"_index":57,"title":{},"body":{"components/AppComponent.html":{},"coverage.html":{}}}],["src/app/app.module.ts",{"_index":98,"title":{},"body":{"modules/AppModule.html":{}}}],["src/app/ble.service.ts",{"_index":309,"title":{},"body":{"injectables/BleService.html":{},"coverage.html":{},"miscellaneous/typealiases.html":{}}}],["src/app/ble.service.ts:17",{"_index":316,"title":{},"body":{"injectables/BleService.html":{}}}],["src/app/ble.service.ts:19",{"_index":324,"title":{},"body":{"injectables/BleService.html":{}}}],["src/app/ble.service.ts:21",{"_index":319,"title":{},"body":{"injectables/BleService.html":{}}}],["src/app/ble.service.ts:25",{"_index":321,"title":{},"body":{"injectables/BleService.html":{}}}],["src/app/ble.service.ts:29",{"_index":322,"title":{},"body":{"injectables/BleService.html":{}}}],["src/app/ble.service.ts:36",{"_index":323,"title":{},"body":{"injectables/BleService.html":{}}}],["src/app/ble.service.ts:47",{"_index":320,"title":{},"body":{"injectables/BleService.html":{}}}],["src/app/dashboard/dashboard.component.ts",{"_index":377,"title":{},"body":{"components/DashboardComponent.html":{},"coverage.html":{}}}],["src/app/dashboard/dashboard.component.ts:8",{"_index":383,"title":{},"body":{"components/DashboardComponent.html":{}}}],["src/app/thingy52/battery",{"_index":157,"title":{},"body":{"components/BatteryLevelComponent.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/app/thingy52/humidity.component.ts",{"_index":495,"title":{},"body":{"components/HumidityComponent.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/app/thingy52/humidity.component.ts:101",{"_index":503,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:108",{"_index":504,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:112",{"_index":506,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:38",{"_index":517,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:39",{"_index":511,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:40",{"_index":521,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:41",{"_index":520,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:44",{"_index":515,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:46",{"_index":522,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:48",{"_index":502,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:51",{"_index":518,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:52",{"_index":519,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:61",{"_index":507,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:71",{"_index":505,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:81",{"_index":508,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:90",{"_index":509,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts",{"_index":577,"title":{},"body":{"components/StepCounterComponent.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/app/thingy52/stepcounter.component.ts:49",{"_index":596,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:50",{"_index":594,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:51",{"_index":595,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:53",{"_index":597,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:55",{"_index":585,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:58",{"_index":592,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:59",{"_index":593,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:72",{"_index":589,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:80",{"_index":590,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:85",{"_index":591,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:90",{"_index":586,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:95",{"_index":587,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:99",{"_index":588,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/temperature.component.ts",{"_index":605,"title":{},"body":{"components/TemperatureComponent.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/app/thingy52/temperature.component.ts:110",{"_index":612,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:117",{"_index":613,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:126",{"_index":607,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:133",{"_index":608,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:137",{"_index":610,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:52",{"_index":616,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:53",{"_index":614,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:54",{"_index":619,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:55",{"_index":618,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:58",{"_index":615,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:60",{"_index":620,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:62",{"_index":606,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:64",{"_index":617,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:76",{"_index":611,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:85",{"_index":609,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/environments/environment.prod.ts",{"_index":649,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/environments/environment.ts",{"_index":651,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["startblog",{"_index":762,"title":{},"body":{"index.html":{}}}],["started",{"_index":681,"title":{"index.html":{},"license.html":{}},"body":{"index.html":{}}}],["starter",{"_index":756,"title":{},"body":{"index.html":{}}}],["state",{"_index":939,"title":{},"body":{"miscellaneous/variables.html":{}}}],["statements",{"_index":630,"title":{},"body":{"coverage.html":{}}}],["static",{"_index":42,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/HumidityComponent.html":{},"injectables/ServerWebBluetooth.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"index.html":{}}}],["step",{"_index":541,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["stepcounter",{"_index":578,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["stepcounter'},{'name",{"_index":79,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["stepcountercomponent",{"_index":78,"title":{"components/StepCounterComponent.html":{}},"body":{"components/AppComponent.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{},"overview.html":{}}}],["stepper",{"_index":392,"title":{},"body":{"components/DashboardComponent.html":{}}}],["sticky",{"_index":401,"title":{},"body":{"components/DashboardComponent.html":{}}}],["stop",{"_index":709,"title":{},"body":{"index.html":{}}}],["stream",{"_index":314,"title":{},"body":{"injectables/BleService.html":{},"index.html":{}}}],["streamsubscription",{"_index":203,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["string",{"_index":224,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/ConsoleLoggerService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["strokestyle",{"_index":544,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["styles",{"_index":156,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["styleurls",{"_index":379,"title":{},"body":{"components/DashboardComponent.html":{}}}],["subject",{"_index":810,"title":{},"body":{"index.html":{},"license.html":{}}}],["sublicense",{"_index":803,"title":{},"body":{"index.html":{},"license.html":{}}}],["subscribe",{"_index":533,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{}}}],["subscribed",{"_index":710,"title":{},"body":{"index.html":{}}}],["subscription",{"_index":238,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["substantial",{"_index":816,"title":{},"body":{"index.html":{},"license.html":{}}}],["sup",{"_index":183,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["support",{"_index":354,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{},"modules.html":{}}}],["sure",{"_index":261,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["svg",{"_index":844,"title":{},"body":{"modules.html":{}}}],["system_id",{"_index":874,"title":{},"body":{"miscellaneous/variables.html":{}}}],["table",{"_index":653,"title":{},"body":{"coverage.html":{}}}],["tablesort(document.getelementbyid('coverage",{"_index":652,"title":{},"body":{"coverage.html":{}}}],["tap",{"_index":326,"title":{},"body":{"injectables/BleService.html":{}}}],["tap(value",{"_index":337,"title":{},"body":{"injectables/BleService.html":{}}}],["target",{"_index":436,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["temperature",{"_index":81,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"miscellaneous/variables.html":{}}}],["temperaturecomponent",{"_index":80,"title":{"components/TemperatureComponent.html":{}},"body":{"components/AppComponent.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{},"overview.html":{}}}],["template",{"_index":62,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["templateurl",{"_index":381,"title":{},"body":{"components/DashboardComponent.html":{}}}],["text",{"_index":170,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["thingy52/battery",{"_index":130,"title":{},"body":{"modules/AppModule.html":{}}}],["thingy52/humidity.component",{"_index":133,"title":{},"body":{"modules/AppModule.html":{}}}],["thingy52/stepcounter.component",{"_index":134,"title":{},"body":{"modules/AppModule.html":{}}}],["thingy52/temperature.component",{"_index":135,"title":{},"body":{"modules/AppModule.html":{}}}],["this._config",{"_index":334,"title":{},"body":{"injectables/BleService.html":{}}}],["this._config.characteristic",{"_index":342,"title":{},"body":{"injectables/BleService.html":{}}}],["this._config.service",{"_index":341,"title":{},"body":{"injectables/BleService.html":{}}}],["this.ble",{"_index":340,"title":{},"body":{"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"index.html":{}}}],["this.ble.disconnectdevice",{"_index":344,"title":{},"body":{"injectables/BleService.html":{},"index.html":{}}}],["this.ble.getcharacteristic$(primaryservice",{"_index":744,"title":{},"body":{"index.html":{}}}],["this.ble.getdevice",{"_index":335,"title":{},"body":{"injectables/BleService.html":{},"index.html":{}}}],["this.ble.getprimaryservice$(gatt",{"_index":740,"title":{},"body":{"index.html":{}}}],["this.ble.readvalue$(characteristic",{"_index":750,"title":{},"body":{"index.html":{}}}],["this.ble.requestdevice(options",{"_index":360,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["this.ble.streamvalues$().pipe",{"_index":336,"title":{},"body":{"injectables/BleService.html":{},"index.html":{}}}],["this.ble.streamvalues$().pipe(map((value",{"_index":718,"title":{},"body":{"index.html":{}}}],["this.characteristics.service",{"_index":457,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.chart",{"_index":538,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.chart!.addtimeseries(this.series",{"_index":552,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.chart!.start",{"_index":562,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.chart!.stop",{"_index":557,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.chart!.streamto(canvas",{"_index":556,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.chartref!.nativeelement",{"_index":536,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.color",{"_index":281,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.connected",{"_index":449,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.console.log('reading",{"_index":297,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.device.disconnect",{"_index":454,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.devicesubscription",{"_index":279,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.devicesubscription!.unsubscribe",{"_index":300,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.devicesubscription?.unsubscribe",{"_index":305,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.getdevicestatus",{"_index":273,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.haserror(err",{"_index":295,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.haserror(error",{"_index":278,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.haserror.bind(this",{"_index":288,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.id",{"_index":441,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.initchart",{"_index":531,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.initialvalue",{"_index":468,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.listeners",{"_index":444,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.listeners.characteristicvaluechanged.foreach(listener",{"_index":472,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.listeners.gattserverdisconnected.foreach(listener",{"_index":438,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.listeners[type",{"_index":434,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.mode",{"_index":283,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.name",{"_index":443,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.properties",{"_index":467,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.series",{"_index":534,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.series!.append(date.now",{"_index":561,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.series!.clear",{"_index":563,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.service.disconnectdevice",{"_index":299,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.service.getdevice",{"_index":265,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.service.getdevice().subscribe((device",{"_index":280,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.service.stream",{"_index":532,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{}}}],["this.service.stream().subscribe",{"_index":275,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.service.value",{"_index":558,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{}}}],["this.service.value().subscribe",{"_index":290,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.snackbar.open(error",{"_index":302,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.streamsubscription",{"_index":274,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.streamsubscription!.unsubscribe",{"_index":564,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.streamsubscription?.unsubscribe",{"_index":306,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.updatevalue(val",{"_index":293,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.updatevalue(value",{"_index":277,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.value",{"_index":285,"title":{},"body":{"components/BatteryLevelComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/StepCounterComponent.html":{}}}],["this.valuessubscription",{"_index":289,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.valuessubscription!.unsubscribe",{"_index":301,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.valuessubscription?.unsubscribe",{"_index":304,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["throw",{"_index":352,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["ti_sensorag_services",{"_index":639,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["time",{"_index":600,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["timeseries",{"_index":516,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["titag",{"_index":640,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["titag[key].service",{"_index":867,"title":{},"body":{"miscellaneous/variables.html":{}}}],["toolbar.mat",{"_index":400,"title":{},"body":{"components/DashboardComponent.html":{}}}],["tooltip",{"_index":551,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["top",{"_index":178,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["tort",{"_index":839,"title":{},"body":{"index.html":{},"license.html":{}}}],["tree",{"_index":56,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["trigger",{"_index":732,"title":{},"body":{"index.html":{}}}],["true",{"_index":139,"title":{},"body":{"modules/AppModule.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["ts",{"_index":670,"title":{},"body":{"dependencies.html":{}}}],["tslib",{"_index":673,"title":{},"body":{"dependencies.html":{}}}],["tslint:disable",{"_index":330,"title":{},"body":{"injectables/BleService.html":{},"components/HumidityComponent.html":{}}}],["type",{"_index":14,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["typealiases",{"_index":852,"title":{"miscellaneous/typealiases.html":{}},"body":{}}],["typeof",{"_index":296,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["types/web",{"_index":666,"title":{},"body":{"dependencies.html":{},"index.html":{}}}],["undefined",{"_index":442,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["unknown",{"_index":437,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["updatevalue",{"_index":211,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["updatevalue(value",{"_index":230,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["use",{"_index":695,"title":{},"body":{"index.html":{},"license.html":{}}}],["usefactory",{"_index":46,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"miscellaneous/variables.html":{}}}],["usevalue",{"_index":47,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["using",{"_index":701,"title":{},"body":{"index.html":{}}}],["val",{"_index":292,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["value",{"_index":193,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["value.getint8(0",{"_index":269,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["value.getuint32(0",{"_index":599,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["value.getuint32(4",{"_index":601,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["value.getuint8(0",{"_index":719,"title":{},"body":{"index.html":{}}}],["value.getuint8(1",{"_index":624,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["values",{"_index":705,"title":{},"body":{"index.html":{}}}],["valuessubscription",{"_index":204,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["var",{"_index":67,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["variable",{"_index":332,"title":{},"body":{"injectables/BleService.html":{},"coverage.html":{}}}],["variables",{"_index":857,"title":{"miscellaneous/variables.html":{}},"body":{"miscellaneous/variables.html":{}}}],["version",{"_index":850,"title":{},"body":{"properties.html":{}}}],["viewchild",{"_index":523,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["viewchild('chart",{"_index":514,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["void",{"_index":221,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/ConsoleLoggerService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["want",{"_index":727,"title":{},"body":{"index.html":{}}}],["warn",{"_index":282,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["warn(...args",{"_index":368,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["warn(args",{"_index":373,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["warranties",{"_index":824,"title":{},"body":{"index.html":{},"license.html":{}}}],["warranty",{"_index":819,"title":{},"body":{"index.html":{},"license.html":{}}}],["wassim",{"_index":781,"title":{},"body":{"index.html":{},"license.html":{}}}],["way",{"_index":698,"title":{},"body":{"index.html":{}}}],["web",{"_index":7,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/functions.html":{},"index.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["webbluetoothmodule",{"_index":41,"title":{"modules/WebBluetoothModule.html":{}},"body":{"interfaces/AWBOptions.html":{},"modules/AppModule.html":{},"modules/WebBluetoothModule.html":{},"index.html":{},"modules.html":{},"overview.html":{}}}],["webbluetoothmodule.forroot",{"_index":138,"title":{},"body":{"modules/AppModule.html":{},"index.html":{}}}],["welcome",{"_index":771,"title":{},"body":{"index.html":{}}}],["whether",{"_index":836,"title":{},"body":{"index.html":{},"license.html":{}}}],["width",{"_index":180,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["window.smoothiechart",{"_index":539,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["window.timeseries",{"_index":535,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["without",{"_index":794,"title":{},"body":{"index.html":{},"license.html":{}}}],["yes",{"_index":475,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["z",{"_index":402,"title":{},"body":{"components/DashboardComponent.html":{}}}],["zone.js",{"_index":675,"title":{},"body":{"dependencies.html":{}}}],["zoom",{"_index":95,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}]],"pipeline":["stemmer"]},
- "store": {"interfaces/AWBOptions.html":{"url":"interfaces/AWBOptions.html","title":"interface - AWBOptions","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n AWBOptions\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n \n enableTracing\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n enableTracing\n \n \n \n \n \n \n \n \n enableTracing: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n\n\n \n import { NgModule, ModuleWithProviders, InjectionToken, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BluetoothCore } from './bluetooth.service';\nimport { BrowserWebBluetooth } from './platform/browser';\n\nimport { ConsoleLoggerService, NoLoggerService } from './logger.service';\n\nexport interface AWBOptions {\n enableTracing?: boolean;\n}\n\nexport function browserWebBluetooth() {\n return new BrowserWebBluetooth();\n}\n\nexport function consoleLoggerServiceConfig(options: AWBOptions) {\n if (options && options.enableTracing) {\n return new ConsoleLoggerService();\n } else {\n return new NoLoggerService();\n }\n}\nexport function makeMeTokenInjector() {\n return new InjectionToken('AWBOptions');\n}\n\n@NgModule({\n imports: [CommonModule]\n})\nexport class WebBluetoothModule {\n static forRoot(options: AWBOptions = {}): ModuleWithProviders {\n return {\n ngModule: WebBluetoothModule,\n providers: [\n BluetoothCore,\n {\n provide: BrowserWebBluetooth,\n useFactory: browserWebBluetooth\n },\n {\n provide: makeMeTokenInjector,\n useValue: options\n },\n {\n provide: ConsoleLoggerService,\n useFactory: consoleLoggerServiceConfig,\n deps: [makeMeTokenInjector]\n }\n ]\n };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/AppComponent.html":{"url":"components/AppComponent.html","title":"component - AppComponent","body":"\n \n\n\n\n\n\n Components\n \n AppComponent\n\n\n\n \n Info\n \n \n Source\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/app.component.ts\n\n\n\n\n\n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n selector\n ble-root\n \n\n\n\n\n\n \n template\n \n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n import { Component } from '@angular/core';\n\n@Component({\n selector: 'ble-root',\n template: `\n \n `\n})\nexport class AppComponent {}\n\n \n\n\n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ''\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'ble-root'},{'name': 'BatteryLevelComponent', 'selector': 'ble-battery-level'},{'name': 'DashboardComponent', 'selector': 'ble-dashboard'},{'name': 'HumidityComponent', 'selector': 'ble-humidity'},{'name': 'StepCounterComponent', 'selector': 'ble-stepcounter'},{'name': 'TemperatureComponent', 'selector': 'ble-temperature'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'AppComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules/AppModule.html":{"url":"modules/AppModule.html","title":"module - AppModule","body":"\n \n\n\n\n\n Modules\n AppModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_AppModule\n\n\n\ncluster_AppModule_imports\n\n\n\ncluster_AppModule_bootstrap\n\n\n\ncluster_AppModule_declarations\n\n\n\n\nAppComponent\n\nAppComponent\n\n\n\nAppModule\n\nAppModule\n\nAppModule -->\n\nAppComponent->AppModule\n\n\n\n\n\nBatteryLevelComponent\n\nBatteryLevelComponent\n\nAppModule -->\n\nBatteryLevelComponent->AppModule\n\n\n\n\n\nDashboardComponent\n\nDashboardComponent\n\nAppModule -->\n\nDashboardComponent->AppModule\n\n\n\n\n\nHumidityComponent\n\nHumidityComponent\n\nAppModule -->\n\nHumidityComponent->AppModule\n\n\n\n\n\nStepCounterComponent\n\nStepCounterComponent\n\nAppModule -->\n\nStepCounterComponent->AppModule\n\n\n\n\n\nTemperatureComponent\n\nTemperatureComponent\n\nAppModule -->\n\nTemperatureComponent->AppModule\n\n\n\n\n\nAppComponent \n\nAppComponent \n\nAppComponent -->\n\nAppModule->AppComponent \n\n\n\n\n\nWebBluetoothModule\n\nWebBluetoothModule\n\nAppModule -->\n\nWebBluetoothModule->AppModule\n\n\n\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n src/app/app.module.ts\n \n\n\n\n\n\n \n \n \n Declarations\n \n \n AppComponent\n \n \n BatteryLevelComponent\n \n \n DashboardComponent\n \n \n HumidityComponent\n \n \n StepCounterComponent\n \n \n TemperatureComponent\n \n \n \n \n Imports\n \n \n WebBluetoothModule\n \n \n \n \n Bootstrap\n \n \n AppComponent\n \n \n \n \n \n\n\n \n\n\n \n import { LayoutModule } from '@angular/cdk/layout';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatToolbarModule } from '@angular/material/toolbar';\n\nimport { WebBluetoothModule } from '@manekinekko/angular-web-bluetooth';\nimport { AppComponent } from './app.component';\nimport { BatteryLevelComponent } from './thingy52/battery-level.component';\nimport { DashboardComponent } from './dashboard/dashboard.component';\nimport { HumidityComponent } from './thingy52/humidity.component';\nimport { StepCounterComponent } from './thingy52/stepcounter.component';\nimport { TemperatureComponent } from './thingy52/temperature.component';\nimport { BrowserModule } from '@angular/platform-browser';\n\n@NgModule({\n declarations: [\n AppComponent,\n BatteryLevelComponent,\n TemperatureComponent,\n HumidityComponent,\n StepCounterComponent,\n DashboardComponent\n ],\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n WebBluetoothModule.forRoot({\n enableTracing: true\n }),\n LayoutModule,\n MatToolbarModule,\n MatButtonModule,\n MatIconModule,\n MatListModule,\n MatExpansionModule,\n MatSnackBarModule,\n MatProgressSpinnerModule,\n MatGridListModule,\n MatCardModule,\n MatMenuModule\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule {}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/AppPage.html":{"url":"classes/AppPage.html","title":"class - AppPage","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n AppPage\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n e2e/src/app.po.ts\n \n\n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n getTitleText\n \n \n navigateTo\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getTitleText\n \n \n \n \n \n \ngetTitleText()\n \n \n\n\n \n \n Defined in e2e/src/app.po.ts:8\n \n \n\n\n \n \n\n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n \n \n \n navigateTo\n \n \n \n \n \n \nnavigateTo()\n \n \n\n\n \n \n Defined in e2e/src/app.po.ts:4\n \n \n\n\n \n \n\n \n Returns : Promise<>\n\n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { browser, by, element } from 'protractor';\n\nexport class AppPage {\n navigateTo(): Promise {\n return browser.get(browser.baseUrl) as Promise;\n }\n\n getTitleText(): Promise {\n return element(by.css('app-root .content span')).getText() as Promise;\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/BatteryLevelComponent.html":{"url":"components/BatteryLevelComponent.html","title":"component - BatteryLevelComponent","body":"\n \n\n\n\n\n\n Components\n \n BatteryLevelComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/thingy52/battery-level.component.ts\n\n\n\n\n\n \n Implements\n \n \n OnInit\n OnDestroy\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n \n providers\n \n PROVIDERS\n \n \n\n\n \n selector\n ble-battery-level\n \n\n\n\n\n \n styles\n \n :host {\n display: flex;\n justify-content: center;\n flex-direction: row;\n text-align: center;\n }\n span {\n font-size: 5em;\n position: absolute;\n top: 222px;\n width: 120px;\n display: block;\n text-align: center;\n }\n sup {\n font-size: 24px;\n }\n mat-progress-spinner {\n top: 90px;\n left: 5px;\n }\n mat-icon {\n position: absolute;\n bottom: 255px;\n }\n \n \n\n \n template\n {{ value || '000' }}%\n\n\nbattery_charging_full\n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n color\n \n \n Public\n console\n \n \n deviceSubscription\n \n \n mode\n \n \n Public\n service\n \n \n Public\n snackBar\n \n \n streamSubscription\n \n \n value\n \n \n valuesSubscription\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n disconnect\n \n \n getDeviceStatus\n \n \n hasError\n \n \n ngOnDestroy\n \n \n ngOnInit\n \n \n requestValue\n \n \n updateValue\n \n \n \n \n\n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n device\n \n \n \n \n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(service: BleService, snackBar: MatSnackBar, console: ConsoleLoggerService)\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:85\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n service\n \n \n BleService\n \n \n \n No\n \n \n \n \n snackBar\n \n \n MatSnackBar\n \n \n \n No\n \n \n \n \n console\n \n \n ConsoleLoggerService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n disconnect\n \n \n \n \n \n \ndisconnect()\n \n \n\n\n \n \n Defined in src/app/thingy52/battery-level.component.ts:162\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n getDeviceStatus\n \n \n \n \n \n \ngetDeviceStatus()\n \n \n\n\n \n \n Defined in src/app/thingy52/battery-level.component.ts:116\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n hasError\n \n \n \n \n \n \nhasError(error: string)\n \n \n\n\n \n \n Defined in src/app/thingy52/battery-level.component.ts:168\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n error\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ngOnDestroy\n \n \n \n \n \n \nngOnDestroy()\n \n \n\n\n \n \n Defined in src/app/thingy52/battery-level.component.ts:172\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n ngOnInit\n \n \n \n \n \n \nngOnInit()\n \n \n\n\n \n \n Defined in src/app/thingy52/battery-level.component.ts:99\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n requestValue\n \n \n \n \n \n \nrequestValue()\n \n \n\n\n \n \n Defined in src/app/thingy52/battery-level.component.ts:131\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n updateValue\n \n \n \n \n \n \nupdateValue(value: number | literal type)\n \n \n\n\n \n \n Defined in src/app/thingy52/battery-level.component.ts:144\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n number | literal type\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n color\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Default value : 'primary'\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:78\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n console\n \n \n \n \n \n \n Type : ConsoleLoggerService\n\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:90\n \n \n\n\n \n \n \n \n \n \n \n \n deviceSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:81\n \n \n\n\n \n \n \n \n \n \n \n \n mode\n \n \n \n \n \n \n Type : ProgressSpinnerMode\n\n \n \n \n \n Default value : 'determinate'\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:77\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n service\n \n \n \n \n \n \n Type : BleService\n\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:88\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n snackBar\n \n \n \n \n \n \n Type : MatSnackBar\n\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:89\n \n \n\n\n \n \n \n \n \n \n \n \n streamSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:80\n \n \n\n\n \n \n \n \n \n \n \n \n value\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Default value : 0\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:76\n \n \n\n\n \n \n \n \n \n \n \n \n valuesSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:79\n \n \n\n\n \n \n\n\n \n \n Accessors\n \n \n \n \n \n \n device\n \n \n\n \n \n getdevice()\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:83\n \n \n\n \n \n\n\n\n\n \n import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n BluetoothCore,\n BrowserWebBluetooth,\n ConsoleLoggerService,\n} from '@manekinekko/angular-web-bluetooth';\nimport { Subscription } from 'rxjs';\nimport { BleService } from '../ble.service';\nimport { ProgressSpinnerMode } from '@angular/material/progress-spinner';\n\nexport const bleCore = (b: BrowserWebBluetooth, l: ConsoleLoggerService) =>\n new BluetoothCore(b, l);\nexport const bleService = (b: BluetoothCore) => new BleService(b);\n\n// make sure we get a singleton instance of each service\nconst PROVIDERS = [\n {\n provide: BluetoothCore,\n useFactory: bleCore,\n deps: [BrowserWebBluetooth, ConsoleLoggerService],\n },\n {\n provide: BleService,\n useFactory: bleService,\n deps: [BluetoothCore],\n },\n];\n\n@Component({\n selector: 'ble-battery-level',\n template: `\n {{ value || '000' }}%\n \n \n battery_charging_full\n `,\n styles: [\n `\n :host {\n display: flex;\n justify-content: center;\n flex-direction: row;\n text-align: center;\n }\n span {\n font-size: 5em;\n position: absolute;\n top: 222px;\n width: 120px;\n display: block;\n text-align: center;\n }\n sup {\n font-size: 24px;\n }\n mat-progress-spinner {\n top: 90px;\n left: 5px;\n }\n mat-icon {\n position: absolute;\n bottom: 255px;\n }\n `,\n ],\n providers: PROVIDERS,\n})\nexport class BatteryLevelComponent implements OnInit, OnDestroy {\n value = 0;\n mode: ProgressSpinnerMode = 'determinate';\n color = 'primary';\n valuesSubscription: Subscription | null = null;\n streamSubscription: Subscription | null = null;\n deviceSubscription: Subscription | null = null;\n\n get device() {\n return this.service.getDevice();\n }\n\n constructor(\n public service: BleService,\n public snackBar: MatSnackBar,\n public console: ConsoleLoggerService\n ) {\n service.config({\n decoder: (value: DataView) => value.getInt8(0),\n service: 'battery_service',\n characteristic: 'battery_level',\n });\n }\n\n ngOnInit() {\n this.getDeviceStatus();\n\n this.streamSubscription = this.service.stream().subscribe(\n (\n value:\n | number\n | {\n [key: string]: number;\n }\n ) => {\n this.updateValue(value);\n },\n (error) => this.hasError(error)\n );\n }\n\n getDeviceStatus() {\n this.deviceSubscription = this.service.getDevice().subscribe((device) => {\n if (device) {\n this.color = 'warn';\n this.mode = 'indeterminate';\n this.value = 0;\n } else {\n // device not connected or disconnected\n this.value = 0;\n this.mode = 'determinate';\n this.color = 'primary';\n }\n }, this.hasError.bind(this));\n }\n\n requestValue() {\n this.valuesSubscription = this.service.value().subscribe({\n next: (\n val:\n | number\n | {\n [key: string]: number;\n }\n ) => this.updateValue(val),\n error: (err) => this.hasError(err),\n });\n }\n\n updateValue(\n value:\n | number\n | {\n [key: string]: number;\n }\n ) {\n\n if (typeof value === 'number') {\n this.value = value;\n } else {\n this.value = value[''];\n }\n\n this.console.log('Reading battery level %d', value);\n this.mode = 'determinate';\n }\n\n disconnect() {\n this.service.disconnectDevice();\n this.deviceSubscription!.unsubscribe();\n this.valuesSubscription!.unsubscribe();\n }\n\n hasError(error: string) {\n this.snackBar.open(error, 'Close');\n }\n\n ngOnDestroy() {\n this.valuesSubscription?.unsubscribe();\n this.deviceSubscription?.unsubscribe();\n this.streamSubscription?.unsubscribe();\n }\n}\n\n \n\n\n \n \n :host {\n display: flex;\n justify-content: center;\n flex-direction: row;\n text-align: center;\n }\n span {\n font-size: 5em;\n position: absolute;\n top: 222px;\n width: 120px;\n display: block;\n text-align: center;\n }\n sup {\n font-size: 24px;\n }\n mat-progress-spinner {\n top: 90px;\n left: 5px;\n }\n mat-icon {\n position: absolute;\n bottom: 255px;\n }\n \n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = '{{ value || \\'000\\' }}%battery_charging_full'\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'ble-root'},{'name': 'BatteryLevelComponent', 'selector': 'ble-battery-level'},{'name': 'DashboardComponent', 'selector': 'ble-dashboard'},{'name': 'HumidityComponent', 'selector': 'ble-humidity'},{'name': 'StepCounterComponent', 'selector': 'ble-stepcounter'},{'name': 'TemperatureComponent', 'selector': 'ble-temperature'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'BatteryLevelComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/BleService.html":{"url":"injectables/BleService.html","title":"injectable - BleService","body":"\n \n\n\n\n\n\n\n\n\n\n Injectables\n BleService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/ble.service.ts\n \n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Private\n _config\n \n \n Public\n ble\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n config\n \n \n disconnectDevice\n \n \n getDevice\n \n \n stream\n \n \n value\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(ble: BluetoothCore)\n \n \n \n \n Defined in src/app/ble.service.ts:17\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n ble\n \n \n BluetoothCore\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n config\n \n \n \n \n \n \nconfig(options: ServiceOptions)\n \n \n\n\n \n \n Defined in src/app/ble.service.ts:21\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n options\n \n ServiceOptions\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n disconnectDevice\n \n \n \n \n \n \ndisconnectDevice()\n \n \n\n\n \n \n Defined in src/app/ble.service.ts:47\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n getDevice\n \n \n \n \n \n \ngetDevice()\n \n \n\n\n \n \n Defined in src/app/ble.service.ts:25\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n stream\n \n \n \n \n \n \nstream()\n \n \n\n\n \n \n Defined in src/app/ble.service.ts:29\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n value\n \n \n \n \n \n \nvalue()\n \n \n\n\n \n \n Defined in src/app/ble.service.ts:36\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Private\n _config\n \n \n \n \n \n \n Type : ServiceOptions\n\n \n \n \n \n Default value : {} as any\n \n \n \n \n Defined in src/app/ble.service.ts:17\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n ble\n \n \n \n \n \n \n Type : BluetoothCore\n\n \n \n \n \n Defined in src/app/ble.service.ts:19\n \n \n\n\n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\nimport { BluetoothCore } from '@manekinekko/angular-web-bluetooth';\nimport { map, tap } from 'rxjs/operators';\n\ntype ServiceOptions = {\n characteristic: string;\n service: string,\n decoder(value: DataView): number\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BleService {\n\n // tslint:disable-next-line: variable-name\n private _config: ServiceOptions = {} as any;\n\n constructor(public ble: BluetoothCore) {}\n\n config(options: ServiceOptions) {\n this._config = options;\n }\n\n getDevice() {\n return this.ble.getDevice$();\n }\n\n stream() {\n return this.ble.streamValues$().pipe(\n tap(value => console.log(value)),\n map(this._config.decoder)\n );\n }\n\n value() {\n return this.ble\n .value$({\n service: this._config.service,\n characteristic: this._config.characteristic\n })\n .pipe(\n map(this._config.decoder)\n );\n }\n\n disconnectDevice() {\n this.ble.disconnectDevice();\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/BrowserWebBluetooth.html":{"url":"injectables/BrowserWebBluetooth.html","title":"injectable - BrowserWebBluetooth","body":"\n \n\n\n\n\n\n\n\n\n\n Injectables\n BrowserWebBluetooth\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/platform/browser.ts\n \n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Private\n ble\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n requestDevice\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/platform/browser.ts:5\n \n \n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n requestDevice\n \n \n \n \n \n \nrequestDevice(options: RequestDeviceOptions)\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/platform/browser.ts:14\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n options\n \n RequestDeviceOptions\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Private\n ble\n \n \n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/platform/browser.ts:5\n \n \n\n\n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class BrowserWebBluetooth {\n private ble;\n\n constructor() {\n this.ble = navigator.bluetooth;\n if (!this.ble) {\n throw new Error('Your browser does not support Smart Bluetooth. See http://caniuse.com/#search=Bluetooth for more details.');\n }\n }\n\n requestDevice(options: RequestDeviceOptions): Promise {\n return this.ble.requestDevice(options);\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/ConsoleLoggerService.html":{"url":"injectables/ConsoleLoggerService.html","title":"injectable - ConsoleLoggerService","body":"\n \n\n\n\n\n\n\n\n\n\n Injectables\n ConsoleLoggerService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n error\n \n \n log\n \n \n warn\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n error\n \n \n \n \n \n \nerror(...args: any[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:16\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n log\n \n \n \n \n \n \nlog(...args: any[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:13\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n warn\n \n \n \n \n \n \nwarn(...args: any[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:19\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\nexport interface Logger {\n log(args: string[]): void;\n error(args: string[]): void;\n warn(args: string[]): void;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConsoleLoggerService implements Logger {\n log(...args: any[]) {\n console.log.apply(console, args);\n }\n error(...args: any[]) {\n console.error.apply(console, args);\n }\n warn(...args: any[]) {\n console.warn.apply(console, args);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NoLoggerService implements Logger {\n log(...args: any[]) {}\n error(...args: any[]) {}\n warn(...args: any[]) {}\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/DashboardComponent.html":{"url":"components/DashboardComponent.html","title":"component - DashboardComponent","body":"\n \n\n\n\n\n\n Components\n \n DashboardComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/dashboard/dashboard.component.ts\n\n\n\n\n\n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n selector\n ble-dashboard\n \n\n\n\n \n styleUrls\n ./dashboard.component.css\n \n\n\n\n \n templateUrl\n ./dashboard.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/app/dashboard/dashboard.component.ts:8\n \n \n\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n import { Component } from '@angular/core';\n\n@Component({\n selector: 'ble-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.css'],\n})\nexport class DashboardComponent {\n\n constructor() {}\n}\n\n \n\n \n \n \n Angular Web BLE Demo\n\n\n\n \n\n \n\n \n \n \n \n Battery Level\n \n more_vert\n \n \n \n bluetooth_searching\n Connect\n \n \n bluetooth_disabled\n Disconnect\n \n \n \n \n {{ device.name }}\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n Humidity Level\n \n more_vert\n \n \n \n bluetooth_searching\n Connect\n \n \n bluetooth_disabled\n Disconnect\n \n \n \n \n {{ device.name }}\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n Temperature\n \n more_vert\n \n \n \n bluetooth_searching\n Connect\n \n \n bluetooth_disabled\n Disconnect\n \n \n \n \n {{ device.name }}\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n Stepper\n \n more_vert\n \n \n \n bluetooth_searching\n Connect\n \n \n bluetooth_disabled\n Disconnect\n \n \n \n \n {{ device.name }}\n \n \n \n \n \n \n \n\n \n\n\n \n\n \n \n ./dashboard.component.css\n \n section {\n padding: 40px;\n max-width: 700px;\n margin: 0 auto;\n}\n\n.mat-toolbar.mat-primary {\n position: sticky;\n top: 0;\n z-index: 1;\n}\n\n.grid-container {\n margin: 20px;\n}\n\n.dashboard-card {\n position: absolute;\n top: 15px;\n left: 15px;\n right: 15px;\n bottom: 15px;\n}\n\n.more-button {\n position: absolute;\n top: 5px;\n right: 10px;\n}\n\n.dashboard-card-content {\n text-align: center;\n}\n\n\nimg {\n width: 32px;\n margin: 0 10px;\n}\n\n.mat-icon {\n margin: 0 10px 0 0;\n}\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' Angular Web BLE Demo Battery Level more_vert bluetooth_searching Connect bluetooth_disabled Disconnect {{ device.name }} Humidity Level more_vert bluetooth_searching Connect bluetooth_disabled Disconnect {{ device.name }} Temperature more_vert bluetooth_searching Connect bluetooth_disabled Disconnect {{ device.name }} Stepper more_vert bluetooth_searching Connect bluetooth_disabled Disconnect {{ device.name }} '\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'ble-root'},{'name': 'BatteryLevelComponent', 'selector': 'ble-battery-level'},{'name': 'DashboardComponent', 'selector': 'ble-dashboard'},{'name': 'HumidityComponent', 'selector': 'ble-humidity'},{'name': 'StepCounterComponent', 'selector': 'ble-stepcounter'},{'name': 'TemperatureComponent', 'selector': 'ble-temperature'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'DashboardComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/FakeBluetoothDevice.html":{"url":"classes/FakeBluetoothDevice.html","title":"class - FakeBluetoothDevice","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n FakeBluetoothDevice\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n gatt\n \n \n Public\n id\n \n \n Private\n listeners\n \n \n Public\n name\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n addEventListener\n \n \n clear\n \n \n disconnect\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(id: string, name: string)\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:12\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n id\n \n \n string\n \n \n \n No\n \n \n \n \n name\n \n \n string\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n gatt\n \n \n \n \n \n \n Type : BluetoothRemoteGATTServer\n\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:7\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:14\n \n \n\n\n \n \n \n \n \n \n \n \n Private\n listeners\n \n \n \n \n \n \n Default value : {\n gattserverdisconnected: []\n }\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:8\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n name\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:14\n \n \n\n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n addEventListener\n \n \n \n \n \n \naddEventListener(type: string, listener: EventListener)\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:17\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n type\n \n string\n \n\n \n No\n \n\n\n \n \n listener\n \n EventListener\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n clear\n \n \n \n \n \n \nclear()\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:29\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n disconnect\n \n \n \n \n \n \ndisconnect()\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:24\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n export class FakeBluetoothDevice {\n gatt: BluetoothRemoteGATTServer;\n private listeners: {\n [key in 'gattserverdisconnected']: EventListener[]\n } = {\n gattserverdisconnected: []\n };\n\n constructor(public id: string, public name: string) {\n }\n\n addEventListener(type: string, listener: EventListener) {\n this.listeners[type] = [\n ...this.listeners[type],\n listener\n ];\n }\n\n disconnect() {\n const mockedEvent = {target: this} as unknown;\n this.listeners.gattserverdisconnected.forEach(listener => listener(mockedEvent as Event));\n }\n\n clear() {\n this.id = undefined;\n this.name = undefined;\n this.listeners = {\n gattserverdisconnected: []\n };\n }\n}\n\nexport class FakeBluetoothRemoteGATTServer {\n connected = false;\n\n constructor(public device, public services: { [key: string]: { service, primary: boolean } }) {\n device.gatt = this;\n }\n\n connect() {\n this.connected = true;\n return Promise.resolve(this);\n }\n\n getPrimaryService(service: BluetoothServiceUUID) {\n return Promise.resolve(this.services[service].service);\n }\n\n disconnect() {\n this.device.disconnect();\n this.connected = false;\n }\n}\n\nexport class FakeBluetoothRemoteGATTService {\n constructor(public device, public characteristics) {\n this.characteristics.service = this;\n }\n\n getCharacteristic(characteristic: BluetoothCharacteristicUUID) {\n return Promise.resolve(this.characteristics[characteristic]);\n }\n}\n\nexport class FakeBluetoothRemoteGATTCharacteristic {\n value: DataView;\n properties: BluetoothCharacteristicProperties;\n private readonly initialValue: DataView;\n private listeners: {\n [key in 'characteristicvaluechanged']: EventListener[]\n } = {\n characteristicvaluechanged: []\n };\n\n constructor(properties: BluetoothCharacteristicProperties, initialValue?: DataView) {\n this.properties = properties;\n this.value = initialValue;\n this.initialValue = initialValue;\n }\n\n readValue() {\n return Promise.resolve(this.value);\n }\n\n addEventListener(type: string, listener: EventListener) {\n this.listeners[type] = [\n ...this.listeners[type],\n listener\n ];\n }\n\n changeValue(value: DataView) {\n this.value = value;\n const mockedEvent = {target: this} as unknown;\n this.listeners.characteristicvaluechanged.forEach(listener => listener(mockedEvent as Event));\n }\n\n clear() {\n this.value = this.initialValue;\n this.listeners = {\n characteristicvaluechanged: []\n };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{"url":"classes/FakeBluetoothRemoteGATTCharacteristic.html","title":"class - FakeBluetoothRemoteGATTCharacteristic","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n FakeBluetoothRemoteGATTCharacteristic\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Private\n Readonly\n initialValue\n \n \n Private\n listeners\n \n \n properties\n \n \n value\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n addEventListener\n \n \n changeValue\n \n \n clear\n \n \n readValue\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(properties: BluetoothCharacteristicProperties, initialValue?: DataView)\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:78\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n properties\n \n \n BluetoothCharacteristicProperties\n \n \n \n No\n \n \n \n \n initialValue\n \n \n DataView\n \n \n \n Yes\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Private\n Readonly\n initialValue\n \n \n \n \n \n \n Type : DataView\n\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:73\n \n \n\n\n \n \n \n \n \n \n \n \n Private\n listeners\n \n \n \n \n \n \n Default value : {\n characteristicvaluechanged: []\n }\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:74\n \n \n\n\n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n \n Type : BluetoothCharacteristicProperties\n\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:72\n \n \n\n\n \n \n \n \n \n \n \n \n value\n \n \n \n \n \n \n Type : DataView\n\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:71\n \n \n\n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n addEventListener\n \n \n \n \n \n \naddEventListener(type: string, listener: EventListener)\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:90\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n type\n \n string\n \n\n \n No\n \n\n\n \n \n listener\n \n EventListener\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n changeValue\n \n \n \n \n \n \nchangeValue(value: DataView)\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:97\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n DataView\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n clear\n \n \n \n \n \n \nclear()\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:103\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n readValue\n \n \n \n \n \n \nreadValue()\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:86\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n export class FakeBluetoothDevice {\n gatt: BluetoothRemoteGATTServer;\n private listeners: {\n [key in 'gattserverdisconnected']: EventListener[]\n } = {\n gattserverdisconnected: []\n };\n\n constructor(public id: string, public name: string) {\n }\n\n addEventListener(type: string, listener: EventListener) {\n this.listeners[type] = [\n ...this.listeners[type],\n listener\n ];\n }\n\n disconnect() {\n const mockedEvent = {target: this} as unknown;\n this.listeners.gattserverdisconnected.forEach(listener => listener(mockedEvent as Event));\n }\n\n clear() {\n this.id = undefined;\n this.name = undefined;\n this.listeners = {\n gattserverdisconnected: []\n };\n }\n}\n\nexport class FakeBluetoothRemoteGATTServer {\n connected = false;\n\n constructor(public device, public services: { [key: string]: { service, primary: boolean } }) {\n device.gatt = this;\n }\n\n connect() {\n this.connected = true;\n return Promise.resolve(this);\n }\n\n getPrimaryService(service: BluetoothServiceUUID) {\n return Promise.resolve(this.services[service].service);\n }\n\n disconnect() {\n this.device.disconnect();\n this.connected = false;\n }\n}\n\nexport class FakeBluetoothRemoteGATTService {\n constructor(public device, public characteristics) {\n this.characteristics.service = this;\n }\n\n getCharacteristic(characteristic: BluetoothCharacteristicUUID) {\n return Promise.resolve(this.characteristics[characteristic]);\n }\n}\n\nexport class FakeBluetoothRemoteGATTCharacteristic {\n value: DataView;\n properties: BluetoothCharacteristicProperties;\n private readonly initialValue: DataView;\n private listeners: {\n [key in 'characteristicvaluechanged']: EventListener[]\n } = {\n characteristicvaluechanged: []\n };\n\n constructor(properties: BluetoothCharacteristicProperties, initialValue?: DataView) {\n this.properties = properties;\n this.value = initialValue;\n this.initialValue = initialValue;\n }\n\n readValue() {\n return Promise.resolve(this.value);\n }\n\n addEventListener(type: string, listener: EventListener) {\n this.listeners[type] = [\n ...this.listeners[type],\n listener\n ];\n }\n\n changeValue(value: DataView) {\n this.value = value;\n const mockedEvent = {target: this} as unknown;\n this.listeners.characteristicvaluechanged.forEach(listener => listener(mockedEvent as Event));\n }\n\n clear() {\n this.value = this.initialValue;\n this.listeners = {\n characteristicvaluechanged: []\n };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/FakeBluetoothRemoteGATTServer.html":{"url":"classes/FakeBluetoothRemoteGATTServer.html","title":"class - FakeBluetoothRemoteGATTServer","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n FakeBluetoothRemoteGATTServer\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n connected\n \n \n Public\n device\n \n \n Public\n services\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n connect\n \n \n disconnect\n \n \n getPrimaryService\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(device, services: literal type)\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:39\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n device\n \n \n \n \n \n No\n \n \n \n \n services\n \n \n literal type\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n connected\n \n \n \n \n \n \n Default value : false\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:39\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n device\n \n \n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:41\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n services\n \n \n \n \n \n \n Type : literal type\n\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:41\n \n \n\n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n connect\n \n \n \n \n \n \nconnect()\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:45\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n disconnect\n \n \n \n \n \n \ndisconnect()\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:54\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n getPrimaryService\n \n \n \n \n \n \ngetPrimaryService(service: BluetoothServiceUUID)\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:50\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n service\n \n BluetoothServiceUUID\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n export class FakeBluetoothDevice {\n gatt: BluetoothRemoteGATTServer;\n private listeners: {\n [key in 'gattserverdisconnected']: EventListener[]\n } = {\n gattserverdisconnected: []\n };\n\n constructor(public id: string, public name: string) {\n }\n\n addEventListener(type: string, listener: EventListener) {\n this.listeners[type] = [\n ...this.listeners[type],\n listener\n ];\n }\n\n disconnect() {\n const mockedEvent = {target: this} as unknown;\n this.listeners.gattserverdisconnected.forEach(listener => listener(mockedEvent as Event));\n }\n\n clear() {\n this.id = undefined;\n this.name = undefined;\n this.listeners = {\n gattserverdisconnected: []\n };\n }\n}\n\nexport class FakeBluetoothRemoteGATTServer {\n connected = false;\n\n constructor(public device, public services: { [key: string]: { service, primary: boolean } }) {\n device.gatt = this;\n }\n\n connect() {\n this.connected = true;\n return Promise.resolve(this);\n }\n\n getPrimaryService(service: BluetoothServiceUUID) {\n return Promise.resolve(this.services[service].service);\n }\n\n disconnect() {\n this.device.disconnect();\n this.connected = false;\n }\n}\n\nexport class FakeBluetoothRemoteGATTService {\n constructor(public device, public characteristics) {\n this.characteristics.service = this;\n }\n\n getCharacteristic(characteristic: BluetoothCharacteristicUUID) {\n return Promise.resolve(this.characteristics[characteristic]);\n }\n}\n\nexport class FakeBluetoothRemoteGATTCharacteristic {\n value: DataView;\n properties: BluetoothCharacteristicProperties;\n private readonly initialValue: DataView;\n private listeners: {\n [key in 'characteristicvaluechanged']: EventListener[]\n } = {\n characteristicvaluechanged: []\n };\n\n constructor(properties: BluetoothCharacteristicProperties, initialValue?: DataView) {\n this.properties = properties;\n this.value = initialValue;\n this.initialValue = initialValue;\n }\n\n readValue() {\n return Promise.resolve(this.value);\n }\n\n addEventListener(type: string, listener: EventListener) {\n this.listeners[type] = [\n ...this.listeners[type],\n listener\n ];\n }\n\n changeValue(value: DataView) {\n this.value = value;\n const mockedEvent = {target: this} as unknown;\n this.listeners.characteristicvaluechanged.forEach(listener => listener(mockedEvent as Event));\n }\n\n clear() {\n this.value = this.initialValue;\n this.listeners = {\n characteristicvaluechanged: []\n };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/FakeBluetoothRemoteGATTService.html":{"url":"classes/FakeBluetoothRemoteGATTService.html","title":"class - FakeBluetoothRemoteGATTService","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n FakeBluetoothRemoteGATTService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n characteristics\n \n \n Public\n device\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getCharacteristic\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(device, characteristics)\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:60\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Optional\n \n \n \n \n device\n \n \n \n No\n \n \n \n \n characteristics\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n characteristics\n \n \n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:61\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n device\n \n \n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:61\n \n \n\n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getCharacteristic\n \n \n \n \n \n \ngetCharacteristic(characteristic: BluetoothCharacteristicUUID)\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:65\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n characteristic\n \n BluetoothCharacteristicUUID\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n export class FakeBluetoothDevice {\n gatt: BluetoothRemoteGATTServer;\n private listeners: {\n [key in 'gattserverdisconnected']: EventListener[]\n } = {\n gattserverdisconnected: []\n };\n\n constructor(public id: string, public name: string) {\n }\n\n addEventListener(type: string, listener: EventListener) {\n this.listeners[type] = [\n ...this.listeners[type],\n listener\n ];\n }\n\n disconnect() {\n const mockedEvent = {target: this} as unknown;\n this.listeners.gattserverdisconnected.forEach(listener => listener(mockedEvent as Event));\n }\n\n clear() {\n this.id = undefined;\n this.name = undefined;\n this.listeners = {\n gattserverdisconnected: []\n };\n }\n}\n\nexport class FakeBluetoothRemoteGATTServer {\n connected = false;\n\n constructor(public device, public services: { [key: string]: { service, primary: boolean } }) {\n device.gatt = this;\n }\n\n connect() {\n this.connected = true;\n return Promise.resolve(this);\n }\n\n getPrimaryService(service: BluetoothServiceUUID) {\n return Promise.resolve(this.services[service].service);\n }\n\n disconnect() {\n this.device.disconnect();\n this.connected = false;\n }\n}\n\nexport class FakeBluetoothRemoteGATTService {\n constructor(public device, public characteristics) {\n this.characteristics.service = this;\n }\n\n getCharacteristic(characteristic: BluetoothCharacteristicUUID) {\n return Promise.resolve(this.characteristics[characteristic]);\n }\n}\n\nexport class FakeBluetoothRemoteGATTCharacteristic {\n value: DataView;\n properties: BluetoothCharacteristicProperties;\n private readonly initialValue: DataView;\n private listeners: {\n [key in 'characteristicvaluechanged']: EventListener[]\n } = {\n characteristicvaluechanged: []\n };\n\n constructor(properties: BluetoothCharacteristicProperties, initialValue?: DataView) {\n this.properties = properties;\n this.value = initialValue;\n this.initialValue = initialValue;\n }\n\n readValue() {\n return Promise.resolve(this.value);\n }\n\n addEventListener(type: string, listener: EventListener) {\n this.listeners[type] = [\n ...this.listeners[type],\n listener\n ];\n }\n\n changeValue(value: DataView) {\n this.value = value;\n const mockedEvent = {target: this} as unknown;\n this.listeners.characteristicvaluechanged.forEach(listener => listener(mockedEvent as Event));\n }\n\n clear() {\n this.value = this.initialValue;\n this.listeners = {\n characteristicvaluechanged: []\n };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/HumidityComponent.html":{"url":"components/HumidityComponent.html","title":"component - HumidityComponent","body":"\n \n\n\n\n\n\n Components\n \n HumidityComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/thingy52/humidity.component.ts\n\n\n\n\n\n \n Implements\n \n \n OnInit\n OnDestroy\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n \n providers\n \n PROVIDERS\n \n \n\n\n \n selector\n ble-humidity\n \n\n\n\n\n \n styles\n \n :host {\n display: block;\n }\n canvas {\n margin-left: -16px;\n }\n \n\n \n template\n \n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n chart\n \n \n \n chartRef\n \n \n series\n \n \n Public\n service\n \n \n Public\n snackBar\n \n \n streamSubscription\n \n \n valuesSubscription\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n disconnect\n \n \n hasError\n \n \n initChart\n \n \n ngOnDestroy\n \n \n ngOnInit\n \n \n requestValue\n \n \n updateValue\n \n \n \n \n\n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n device\n \n \n \n \n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(service: BleService, snackBar: MatSnackBar)\n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:48\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n service\n \n \n BleService\n \n \n \n No\n \n \n \n \n snackBar\n \n \n MatSnackBar\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n disconnect\n \n \n \n \n \n \ndisconnect()\n \n \n\n\n \n \n Defined in src/app/thingy52/humidity.component.ts:101\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n hasError\n \n \n \n \n \n \nhasError(error: string)\n \n \n\n\n \n \n Defined in src/app/thingy52/humidity.component.ts:108\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n error\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n initChart\n \n \n \n \n \n \ninitChart()\n \n \n\n\n \n \n Defined in src/app/thingy52/humidity.component.ts:71\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n ngOnDestroy\n \n \n \n \n \n \nngOnDestroy()\n \n \n\n\n \n \n Defined in src/app/thingy52/humidity.component.ts:112\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n ngOnInit\n \n \n \n \n \n \nngOnInit()\n \n \n\n\n \n \n Defined in src/app/thingy52/humidity.component.ts:61\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n requestValue\n \n \n \n \n \n \nrequestValue()\n \n \n\n\n \n \n Defined in src/app/thingy52/humidity.component.ts:81\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n updateValue\n \n \n \n \n \n \nupdateValue(value: number | literal type)\n \n \n\n\n \n \n Defined in src/app/thingy52/humidity.component.ts:90\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n number | literal type\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n chart\n \n \n \n \n \n \n Type : SmoothieChart | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:39\n \n \n\n\n \n \n \n \n \n \n \n \n \n chartRef\n \n \n \n \n \n \n Type : ElementRef | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Decorators : \n \n \n @ViewChild('chart', {static: true})\n \n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:44\n \n \n\n\n \n \n \n \n \n \n \n \n series\n \n \n \n \n \n \n Type : TimeSeries | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:38\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n service\n \n \n \n \n \n \n Type : BleService\n\n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:51\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n snackBar\n \n \n \n \n \n \n Type : MatSnackBar\n\n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:52\n \n \n\n\n \n \n \n \n \n \n \n \n streamSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:41\n \n \n\n\n \n \n \n \n \n \n \n \n valuesSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:40\n \n \n\n\n \n \n\n\n \n \n Accessors\n \n \n \n \n \n \n device\n \n \n\n \n \n getdevice()\n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:46\n \n \n\n \n \n\n\n\n\n \n import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { BluetoothCore, BrowserWebBluetooth, ConsoleLoggerService } from '@manekinekko/angular-web-bluetooth';\nimport { of, Subscription } from 'rxjs';\nimport { SmoothieChart, TimeSeries } from 'smoothie';\nimport { BleService } from '../ble.service';\n\nexport const bleCore = (b: BrowserWebBluetooth, l: ConsoleLoggerService) => new BluetoothCore(b, l);\nexport const bleService = (b: BluetoothCore) => new BleService(b);\n\n\n// make sure we get a singleton instance of each service\nconst PROVIDERS = [{\n provide: BluetoothCore,\n useFactory: bleCore,\n deps: [BrowserWebBluetooth, ConsoleLoggerService]\n}, {\n provide: BleService,\n useFactory: bleService,\n deps: [BluetoothCore]\n}];\n\n@Component({\n selector: 'ble-humidity',\n template: `\n \n `,\n styles: [`\n :host {\n display: block;\n }\n canvas {\n margin-left: -16px;\n }`],\n providers: PROVIDERS\n})\nexport class HumidityComponent implements OnInit, OnDestroy {\n series: TimeSeries | null = null;\n chart: SmoothieChart | null = null;\n valuesSubscription: Subscription | null = null;\n streamSubscription: Subscription | null = null;\n\n @ViewChild('chart', { static: true })\n chartRef: ElementRef | null = null;\n\n get device() {\n return this.service.getDevice();\n }\n\n constructor(\n public service: BleService,\n public snackBar: MatSnackBar) {\n\n service.config({\n decoder: (value: DataView) => value.getInt8(0),\n service: 'ef680200-9b35-4933-9b10-52ffa9740042',\n characteristic: 'ef680203-9b35-4933-9b10-52ffa9740042'\n });\n }\n\n ngOnInit() {\n this.initChart();\n\n this.streamSubscription = this.service.stream()\n .subscribe({\n next: (val: number | { [key: string]: number; }) => this.updateValue(val),\n error: (err) => this.hasError(err)\n });\n }\n\n initChart() {\n this.series = new window.TimeSeries() as TimeSeries;\n const canvas = this.chartRef!.nativeElement;\n // tslint:disable-next-line: max-line-length\n this.chart = new window.SmoothieChart({ interpolation: 'step', grid: { fillStyle: '#ffffff', strokeStyle: 'rgba(119,119,119,0.18)', borderVisible: false }, labels: { fillStyle: '#000000', fontSize: 17 }, tooltip: true });\n this.chart!.addTimeSeries(this.series, { lineWidth: 1, strokeStyle: '#ff0000', fillStyle: 'rgba(255,161,161,0.30)' });\n this.chart!.streamTo(canvas);\n this.chart!.stop();\n }\n\n requestValue() {\n this.valuesSubscription = this.service.value()\n .subscribe(\n () => null,\n () => of(this.hasError.bind(this)),\n );\n }\n\n\n updateValue(value: number | { [key: string]: number; }) {\n console.log('Reading humidity %d', value);\n\n if (typeof value === 'number') {\n this.series!.append(Date.now(), value);\n this.chart!.start();\n }\n\n }\n\n\n disconnect() {\n this.service.disconnectDevice();\n this.series!.clear();\n this.chart!.stop();\n this.valuesSubscription!.unsubscribe();\n }\n\n hasError(error: string) {\n this.snackBar.open(error, 'Close');\n }\n\n ngOnDestroy() {\n this.valuesSubscription!.unsubscribe();\n this.streamSubscription!.unsubscribe();\n }\n}\n\n \n\n\n \n \n :host {\n display: block;\n }\n canvas {\n margin-left: -16px;\n }\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ''\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'ble-root'},{'name': 'BatteryLevelComponent', 'selector': 'ble-battery-level'},{'name': 'DashboardComponent', 'selector': 'ble-dashboard'},{'name': 'HumidityComponent', 'selector': 'ble-humidity'},{'name': 'StepCounterComponent', 'selector': 'ble-stepcounter'},{'name': 'TemperatureComponent', 'selector': 'ble-temperature'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'HumidityComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/Logger.html":{"url":"interfaces/Logger.html","title":"interface - Logger","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n Logger\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Methods\n \n \n \n \n \n \n \n error\n \n \n \n \n log\n \n \n \n \n warn\n \n \n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n \n \n error\n \n \n \n \n \n \nerror(args: string[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:5\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n string[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n log\n \n \n \n \n \n \nlog(args: string[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:4\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n string[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n warn\n \n \n \n \n \n \nwarn(args: string[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:6\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n string[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\nexport interface Logger {\n log(args: string[]): void;\n error(args: string[]): void;\n warn(args: string[]): void;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConsoleLoggerService implements Logger {\n log(...args: any[]) {\n console.log.apply(console, args);\n }\n error(...args: any[]) {\n console.error.apply(console, args);\n }\n warn(...args: any[]) {\n console.warn.apply(console, args);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NoLoggerService implements Logger {\n log(...args: any[]) {}\n error(...args: any[]) {}\n warn(...args: any[]) {}\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/NoLoggerService.html":{"url":"injectables/NoLoggerService.html","title":"injectable - NoLoggerService","body":"\n \n\n\n\n\n\n\n\n\n\n Injectables\n NoLoggerService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n error\n \n \n log\n \n \n warn\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n error\n \n \n \n \n \n \nerror(...args: any[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:29\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n log\n \n \n \n \n \n \nlog(...args: any[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:28\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n warn\n \n \n \n \n \n \nwarn(...args: any[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:30\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\nexport interface Logger {\n log(args: string[]): void;\n error(args: string[]): void;\n warn(args: string[]): void;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConsoleLoggerService implements Logger {\n log(...args: any[]) {\n console.log.apply(console, args);\n }\n error(...args: any[]) {\n console.error.apply(console, args);\n }\n warn(...args: any[]) {\n console.warn.apply(console, args);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NoLoggerService implements Logger {\n log(...args: any[]) {}\n error(...args: any[]) {}\n warn(...args: any[]) {}\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/ServerWebBluetooth.html":{"url":"injectables/ServerWebBluetooth.html","title":"injectable - ServerWebBluetooth","body":"\n \n\n\n\n\n\n\n\n\n\n Injectables\n ServerWebBluetooth\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/platform/server.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Static\n instance\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Static\n instance\n \n \n \n \n \n \n \n instance()\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/platform/server.ts:5\n \n \n\n\n \n \n\n \n Returns : {}\n\n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ServerWebBluetooth {\n static instance() {\n // mocked object for now\n return {};\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/StepCounterComponent.html":{"url":"components/StepCounterComponent.html","title":"component - StepCounterComponent","body":"\n \n\n\n\n\n\n Components\n \n StepCounterComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/thingy52/stepcounter.component.ts\n\n\n\n\n\n \n Implements\n \n \n OnInit\n OnDestroy\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n \n providers\n \n PROVIDERS\n \n \n\n\n \n selector\n ble-stepcounter\n \n\n\n\n\n \n styles\n \n :host {\n display: block;\n }\n span {\n font-size: 5em;\n position: absolute;\n top: 112px;\n left: 214px;\n width: 120px;\n display: block;\n text-align: center;\n }\n mat-icon {\n font-size: 11em;\n width: 100%;\n height: 100%;\n }\n \n\n \n template\n {{ value || \"000\" }}\ndirections_walk\n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n service\n \n \n Public\n snackBar\n \n \n streamSubscription\n \n \n value\n \n \n valuesSubscription\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n disconnect\n \n \n hasError\n \n \n ngOnDestroy\n \n \n ngOnInit\n \n \n requestValue\n \n \n updateValue\n \n \n \n \n\n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n device\n \n \n \n \n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(service: BleService, snackBar: MatSnackBar)\n \n \n \n \n Defined in src/app/thingy52/stepcounter.component.ts:55\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n service\n \n \n BleService\n \n \n \n No\n \n \n \n \n snackBar\n \n \n MatSnackBar\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n disconnect\n \n \n \n \n \n \ndisconnect()\n \n \n\n\n \n \n Defined in src/app/thingy52/stepcounter.component.ts:90\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n hasError\n \n \n \n \n \n \nhasError(error: string)\n \n \n\n\n \n \n Defined in src/app/thingy52/stepcounter.component.ts:95\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n error\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ngOnDestroy\n \n \n \n \n \n \nngOnDestroy()\n \n \n\n\n \n \n Defined in src/app/thingy52/stepcounter.component.ts:99\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n ngOnInit\n \n \n \n \n \n \nngOnInit()\n \n \n\n\n \n \n Defined in src/app/thingy52/stepcounter.component.ts:72\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n requestValue\n \n \n \n \n \n \nrequestValue()\n \n \n\n\n \n \n Defined in src/app/thingy52/stepcounter.component.ts:80\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n updateValue\n \n \n \n \n \n \nupdateValue(value: number)\n \n \n\n\n \n \n Defined in src/app/thingy52/stepcounter.component.ts:85\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n number\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n service\n \n \n \n \n \n \n Type : BleService\n\n \n \n \n \n Defined in src/app/thingy52/stepcounter.component.ts:58\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n snackBar\n \n \n \n \n \n \n Type : MatSnackBar\n\n \n \n \n \n Defined in src/app/thingy52/stepcounter.component.ts:59\n \n \n\n\n \n \n \n \n \n \n \n \n streamSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/stepcounter.component.ts:50\n \n \n\n\n \n \n \n \n \n \n \n \n value\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Default value : 0\n \n \n \n \n Defined in src/app/thingy52/stepcounter.component.ts:51\n \n \n\n\n \n \n \n \n \n \n \n \n valuesSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/stepcounter.component.ts:49\n \n \n\n\n \n \n\n\n \n \n Accessors\n \n \n \n \n \n \n device\n \n \n\n \n \n getdevice()\n \n \n \n \n Defined in src/app/thingy52/stepcounter.component.ts:53\n \n \n\n \n \n\n\n\n\n \n import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { BluetoothCore, BrowserWebBluetooth, ConsoleLoggerService } from '@manekinekko/angular-web-bluetooth';\nimport { Subscription } from 'rxjs';\nimport { BleService } from '../ble.service';\n\nexport const bleCore = (b: BrowserWebBluetooth, l: ConsoleLoggerService) => new BluetoothCore(b, l);\nexport const bleService = (b: BluetoothCore) => new BleService(b);\n\n\n// make sure we get a singleton instance of each service\nconst PROVIDERS = [{\n provide: BluetoothCore,\n useFactory: bleCore,\n deps: [BrowserWebBluetooth, ConsoleLoggerService]\n}, {\n provide: BleService,\n useFactory: bleService,\n deps: [BluetoothCore]\n}];\n\n@Component({\n selector: 'ble-stepcounter',\n template: `\n {{ value || \"000\" }}\n directions_walk\n `,\n styles: [`\n :host {\n display: block;\n }\n span {\n font-size: 5em;\n position: absolute;\n top: 112px;\n left: 214px;\n width: 120px;\n display: block;\n text-align: center;\n }\n mat-icon {\n font-size: 11em;\n width: 100%;\n height: 100%;\n }`],\n providers: PROVIDERS\n})\nexport class StepCounterComponent implements OnInit, OnDestroy {\n valuesSubscription: Subscription | null = null;\n streamSubscription: Subscription | null = null;\n value = 0;\n\n get device() {\n return this.service.getDevice();\n }\n\n constructor(\n public service: BleService,\n public snackBar: MatSnackBar) {\n\n service.config({\n decoder: (value: DataView) => {\n const count = value.getUint32(0, true);\n const time = value.getUint32(4, true);\n return count;\n },\n service: 'ef680400-9b35-4933-9b10-52ffa9740042',\n characteristic: 'ef680405-9b35-4933-9b10-52ffa9740042'\n });\n }\n\n ngOnInit() {\n this.streamSubscription = this.service.stream()\n .subscribe({\n next: (val: number) => this.updateValue(val),\n error: (err) => this.hasError(err)\n });\n }\n\n requestValue() {\n this.valuesSubscription = this.service.value()\n .subscribe(() => null, error => this.hasError.bind(this));\n }\n\n updateValue(value: number) {\n console.log('Reading step counter %d', value);\n this.value = value;\n }\n\n disconnect() {\n this.service.disconnectDevice();\n this.valuesSubscription!.unsubscribe();\n }\n\n hasError(error: string) {\n this.snackBar.open(error, 'Close');\n }\n\n ngOnDestroy() {\n this.valuesSubscription!.unsubscribe();\n this.streamSubscription!.unsubscribe();\n }\n}\n\n\n\n \n\n\n \n \n :host {\n display: block;\n }\n span {\n font-size: 5em;\n position: absolute;\n top: 112px;\n left: 214px;\n width: 120px;\n display: block;\n text-align: center;\n }\n mat-icon {\n font-size: 11em;\n width: 100%;\n height: 100%;\n }\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = '{{ value || \"000\" }}directions_walk'\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'ble-root'},{'name': 'BatteryLevelComponent', 'selector': 'ble-battery-level'},{'name': 'DashboardComponent', 'selector': 'ble-dashboard'},{'name': 'HumidityComponent', 'selector': 'ble-humidity'},{'name': 'StepCounterComponent', 'selector': 'ble-stepcounter'},{'name': 'TemperatureComponent', 'selector': 'ble-temperature'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'StepCounterComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TemperatureComponent.html":{"url":"components/TemperatureComponent.html","title":"component - TemperatureComponent","body":"\n \n\n\n\n\n\n Components\n \n TemperatureComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/thingy52/temperature.component.ts\n\n\n\n\n\n \n Implements\n \n \n OnInit\n OnDestroy\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n \n providers\n \n PROVIDERS\n \n \n\n\n \n selector\n ble-temperature\n \n\n\n\n\n \n styles\n \n :host {\n display: block;\n }\n canvas {\n margin-left: -16px;\n }\n \n \n\n \n template\n \n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n chart\n \n \n \n chartRef\n \n \n series\n \n \n Public\n service\n \n \n Public\n snackBar\n \n \n streamSubscription\n \n \n valuesSubscription\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n disconnect\n \n \n hasError\n \n \n initChart\n \n \n ngOnDestroy\n \n \n ngOnInit\n \n \n requestValue\n \n \n updateValue\n \n \n \n \n\n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n device\n \n \n \n \n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(service: BleService, snackBar: MatSnackBar)\n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:62\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n service\n \n \n BleService\n \n \n \n No\n \n \n \n \n snackBar\n \n \n MatSnackBar\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n disconnect\n \n \n \n \n \n \ndisconnect()\n \n \n\n\n \n \n Defined in src/app/thingy52/temperature.component.ts:126\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n hasError\n \n \n \n \n \n \nhasError(error: string)\n \n \n\n\n \n \n Defined in src/app/thingy52/temperature.component.ts:133\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n error\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n initChart\n \n \n \n \n \n \ninitChart()\n \n \n\n\n \n \n Defined in src/app/thingy52/temperature.component.ts:85\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n ngOnDestroy\n \n \n \n \n \n \nngOnDestroy()\n \n \n\n\n \n \n Defined in src/app/thingy52/temperature.component.ts:137\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n ngOnInit\n \n \n \n \n \n \nngOnInit()\n \n \n\n\n \n \n Defined in src/app/thingy52/temperature.component.ts:76\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n requestValue\n \n \n \n \n \n \nrequestValue()\n \n \n\n\n \n \n Defined in src/app/thingy52/temperature.component.ts:110\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n updateValue\n \n \n \n \n \n \nupdateValue(value: number | literal type)\n \n \n\n\n \n \n Defined in src/app/thingy52/temperature.component.ts:117\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n number | literal type\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n chart\n \n \n \n \n \n \n Type : SmoothieChart | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:53\n \n \n\n\n \n \n \n \n \n \n \n \n \n chartRef\n \n \n \n \n \n \n Type : ElementRef | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Decorators : \n \n \n @ViewChild('chart', {static: true})\n \n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:58\n \n \n\n\n \n \n \n \n \n \n \n \n series\n \n \n \n \n \n \n Type : TimeSeries | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:52\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n service\n \n \n \n \n \n \n Type : BleService\n\n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:64\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n snackBar\n \n \n \n \n \n \n Type : MatSnackBar\n\n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:64\n \n \n\n\n \n \n \n \n \n \n \n \n streamSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:55\n \n \n\n\n \n \n \n \n \n \n \n \n valuesSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:54\n \n \n\n\n \n \n\n\n \n \n Accessors\n \n \n \n \n \n \n device\n \n \n\n \n \n getdevice()\n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:60\n \n \n\n \n \n\n\n\n\n \n import {\n Component,\n ElementRef,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n BluetoothCore,\n BrowserWebBluetooth,\n ConsoleLoggerService,\n} from '@manekinekko/angular-web-bluetooth';\nimport { Subscription } from 'rxjs';\nimport { SmoothieChart, TimeSeries } from 'smoothie';\nimport { BleService } from '../ble.service';\n\nexport const bleCore = (b: BrowserWebBluetooth, l: ConsoleLoggerService) =>\n new BluetoothCore(b, l);\nexport const bleService = (b: BluetoothCore) => new BleService(b);\n\n// make sure we get a singleton instance of each service\nconst PROVIDERS = [\n {\n provide: BluetoothCore,\n useFactory: bleCore,\n deps: [BrowserWebBluetooth, ConsoleLoggerService],\n },\n {\n provide: BleService,\n useFactory: bleService,\n deps: [BluetoothCore],\n },\n];\n\n@Component({\n selector: 'ble-temperature',\n template: ` `,\n styles: [\n `\n :host {\n display: block;\n }\n canvas {\n margin-left: -16px;\n }\n `,\n ],\n providers: PROVIDERS,\n})\nexport class TemperatureComponent implements OnInit, OnDestroy {\n series: TimeSeries | null = null;\n chart: SmoothieChart | null = null;\n valuesSubscription: Subscription | null = null;\n streamSubscription: Subscription | null = null;\n\n @ViewChild('chart', { static: true })\n chartRef: ElementRef | null = null;\n\n get device() {\n return this.service.getDevice();\n }\n\n constructor(public service: BleService, public snackBar: MatSnackBar) {\n service.config({\n characteristic: 'ef680201-9b35-4933-9b10-52ffa9740042',\n service: 'ef680200-9b35-4933-9b10-52ffa9740042',\n decoder: (value: DataView) => {\n const integer = value.getInt8(0);\n const decimal = value.getUint8(1);\n return integer + decimal / 100;\n },\n });\n }\n\n ngOnInit() {\n this.initChart();\n\n this.streamSubscription = this.service.stream().subscribe({\n next: (val: number | { [key: string]: number; }) => this.updateValue(val),\n error: (err) => this.hasError(err),\n });\n }\n\n initChart() {\n this.series = new window.TimeSeries() as TimeSeries;\n const canvas = this.chartRef!.nativeElement;\n this.chart = new window.SmoothieChart({\n interpolation: 'step',\n grid: {\n fillStyle: '#ffffff',\n strokeStyle: 'rgba(119,119,119,0.18)',\n borderVisible: false,\n },\n labels: {\n fillStyle: '#000000',\n fontSize: 17,\n },\n tooltip: true,\n });\n this.chart!.addTimeSeries(this.series, {\n lineWidth: 1,\n strokeStyle: '#ff0000',\n fillStyle: 'rgba(255,161,161,0.30)',\n });\n this.chart!.streamTo(canvas);\n this.chart!.stop();\n }\n\n requestValue() {\n this.valuesSubscription = this.service.value().subscribe(\n () => null,\n (error) => this.hasError.bind(this)\n );\n }\n\n updateValue(value: number | { [key: string]: number; }) {\n console.log('Reading temperature %d', value);\n\n if (typeof value === 'number') {\n this.series!.append(Date.now(), value);\n this.chart!.start();\n }\n }\n\n disconnect() {\n this.service.disconnectDevice();\n this.series!.clear();\n this.chart!.stop();\n this.valuesSubscription!.unsubscribe();\n }\n\n hasError(error: string) {\n this.snackBar.open(error, 'Close');\n }\n\n ngOnDestroy() {\n this.valuesSubscription!.unsubscribe();\n this.streamSubscription!.unsubscribe();\n }\n}\n\n \n\n\n \n \n :host {\n display: block;\n }\n canvas {\n margin-left: -16px;\n }\n \n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ''\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'ble-root'},{'name': 'BatteryLevelComponent', 'selector': 'ble-battery-level'},{'name': 'DashboardComponent', 'selector': 'ble-dashboard'},{'name': 'HumidityComponent', 'selector': 'ble-humidity'},{'name': 'StepCounterComponent', 'selector': 'ble-stepcounter'},{'name': 'TemperatureComponent', 'selector': 'ble-temperature'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TemperatureComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules/WebBluetoothModule.html":{"url":"modules/WebBluetoothModule.html","title":"module - WebBluetoothModule","body":"\n \n\n\n\n\n Modules\n WebBluetoothModule\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts\n \n\n\n\n\n\n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n \n \n Static\n forRoot\n \n \n \n \n \n \n \n forRoot(options: AWBOptions)\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts:32\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n Default value\n \n \n \n \n options\n \n AWBOptions\n \n\n \n No\n \n\n \n {}\n \n\n \n \n \n \n \n Returns : ModuleWithProviders\n\n \n \n \n \n \n \n \n \n\n \n\n\n \n import { NgModule, ModuleWithProviders, InjectionToken, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BluetoothCore } from './bluetooth.service';\nimport { BrowserWebBluetooth } from './platform/browser';\n\nimport { ConsoleLoggerService, NoLoggerService } from './logger.service';\n\nexport interface AWBOptions {\n enableTracing?: boolean;\n}\n\nexport function browserWebBluetooth() {\n return new BrowserWebBluetooth();\n}\n\nexport function consoleLoggerServiceConfig(options: AWBOptions) {\n if (options && options.enableTracing) {\n return new ConsoleLoggerService();\n } else {\n return new NoLoggerService();\n }\n}\nexport function makeMeTokenInjector() {\n return new InjectionToken('AWBOptions');\n}\n\n@NgModule({\n imports: [CommonModule]\n})\nexport class WebBluetoothModule {\n static forRoot(options: AWBOptions = {}): ModuleWithProviders {\n return {\n ngModule: WebBluetoothModule,\n providers: [\n BluetoothCore,\n {\n provide: BrowserWebBluetooth,\n useFactory: browserWebBluetooth\n },\n {\n provide: makeMeTokenInjector,\n useValue: options\n },\n {\n provide: ConsoleLoggerService,\n useFactory: consoleLoggerServiceConfig,\n deps: [makeMeTokenInjector]\n }\n ]\n };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"coverage.html":{"url":"coverage.html","title":"coverage - coverage","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Documentation coverage\n\n\n\n \n\n\n\n \n \n File\n Type\n Identifier\n Statements\n \n \n \n \n \n \n e2e/src/app.po.ts\n \n class\n AppPage\n \n 0 %\n (0/3)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts\n \n interface\n AWBOptions\n \n 0 %\n (0/2)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts\n \n function\n browserWebBluetooth\n \n 0 %\n (0/1)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts\n \n function\n consoleLoggerServiceConfig\n \n 0 %\n (0/1)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts\n \n function\n makeMeTokenInjector\n \n 0 %\n (0/1)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.service.ts\n \n injectable\n BluetoothCore\n \n 67 %\n (21/31)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/lang/uuids/ti-sensortag2.ts\n \n variable\n TI_SENSORAG_SERVICES\n \n 0 %\n (0/1)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/lang/uuids/ti-sensortag2.ts\n \n variable\n TiTag\n \n 0 %\n (0/1)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts\n \n injectable\n ConsoleLoggerService\n \n 0 %\n (0/4)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts\n \n injectable\n NoLoggerService\n \n 0 %\n (0/4)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts\n \n interface\n Logger\n \n 0 %\n (0/4)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/platform/browser.ts\n \n injectable\n BrowserWebBluetooth\n \n 0 %\n (0/4)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/platform/server.ts\n \n injectable\n ServerWebBluetooth\n \n 0 %\n (0/2)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts\n \n class\n FakeBluetoothDevice\n \n 0 %\n (0/9)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts\n \n class\n FakeBluetoothRemoteGATTCharacteristic\n \n 0 %\n (0/10)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts\n \n class\n FakeBluetoothRemoteGATTServer\n \n 0 %\n (0/8)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts\n \n class\n FakeBluetoothRemoteGATTService\n \n 0 %\n (0/5)\n \n \n \n \n \n src/app/app.component.ts\n \n component\n AppComponent\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/ble.service.ts\n \n injectable\n BleService\n \n 0 %\n (0/9)\n \n \n \n \n \n src/app/dashboard/dashboard.component.ts\n \n component\n DashboardComponent\n \n 0 %\n (0/2)\n \n \n \n \n \n src/app/thingy52/battery-level.component.ts\n \n component\n BatteryLevelComponent\n \n 0 %\n (0/18)\n \n \n \n \n \n src/app/thingy52/battery-level.component.ts\n \n variable\n bleCore\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/battery-level.component.ts\n \n variable\n bleService\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/battery-level.component.ts\n \n variable\n PROVIDERS\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/humidity.component.ts\n \n component\n HumidityComponent\n \n 0 %\n (0/16)\n \n \n \n \n \n src/app/thingy52/humidity.component.ts\n \n variable\n bleCore\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/humidity.component.ts\n \n variable\n bleService\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/humidity.component.ts\n \n variable\n PROVIDERS\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/stepcounter.component.ts\n \n component\n StepCounterComponent\n \n 0 %\n (0/13)\n \n \n \n \n \n src/app/thingy52/stepcounter.component.ts\n \n variable\n bleCore\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/stepcounter.component.ts\n \n variable\n bleService\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/stepcounter.component.ts\n \n variable\n PROVIDERS\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/temperature.component.ts\n \n component\n TemperatureComponent\n \n 0 %\n (0/16)\n \n \n \n \n \n src/app/thingy52/temperature.component.ts\n \n variable\n bleCore\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/temperature.component.ts\n \n variable\n bleService\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/temperature.component.ts\n \n variable\n PROVIDERS\n \n 0 %\n (0/1)\n \n \n \n \n \n src/environments/environment.prod.ts\n \n variable\n environment\n \n 0 %\n (0/1)\n \n \n \n \n \n src/environments/environment.ts\n \n variable\n environment\n \n 0 %\n (0/1)\n \n \n \n\n\n\n\n\n new Tablesort(document.getElementById('coverage-table'));\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"dependencies.html":{"url":"dependencies.html","title":"package-dependencies - dependencies","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n Dependencies\n \n \n \n @angular/animations : ^17.1.3\n \n @angular/cdk : ^17.1.2\n \n @angular/common : ^17.1.3\n \n @angular/compiler : ^17.1.3\n \n @angular/core : ^17.1.3\n \n @angular/forms : ^17.1.3\n \n @angular/material : ^17.1.2\n \n @angular/platform-browser : ^17.1.3\n \n @angular/platform-browser-dynamic : ^17.1.3\n \n @angular/router : ^17.1.3\n \n @manekinekko/angular-web-bluetooth : file:../../@manekinekko/angular-web-bluetooth/dist/manekinekko/angular-web-bluetooth\n \n @types/web-bluetooth : 0.0.6\n \n rxjs : ~7.8.0\n \n smoothie : ^1.35.0\n \n ts-jest : ^29.0.5\n \n tslib : ^2.3.0\n \n zone.js : ~0.14.3\n \n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/functions.html":{"url":"miscellaneous/functions.html","title":"miscellaneous-functions - functions","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Miscellaneous\n Functions\n\n\n\n Index\n \n \n \n \n \n \n browserWebBluetooth   (projects/.../bluetooth.module.ts)\n \n \n consoleLoggerServiceConfig   (projects/.../bluetooth.module.ts)\n \n \n makeMeTokenInjector   (projects/.../bluetooth.module.ts)\n \n \n \n \n \n \n\n\n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts\n \n \n \n \n \n \n \n browserWebBluetooth\n \n \n \n \n \n \nbrowserWebBluetooth()\n \n \n\n\n\n\n \n \n \n \n \n \n \n \n consoleLoggerServiceConfig\n \n \n \n \n \n \nconsoleLoggerServiceConfig(options: AWBOptions)\n \n \n\n\n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n options\n \n AWBOptions\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n makeMeTokenInjector\n \n \n \n \n \n \nmakeMeTokenInjector()\n \n \n\n\n\n\n \n \n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"index.html":{"url":"index.html","title":"getting-started - index","body":"\n \n\n\n \n\nThe missing Web Bluetooth module for Angular\n\n\nInstall\nExample :npm install -S @manekinekko/angular-web-bluetooth @types/web-bluetooth\nNote: Make also sure the @types/web-bluetooth is installed correctly in your node_modules.\n\nGetting started\n1) import the WebBluetoothModule module\nExample :import { NgModule } from '@angular/core';\nimport { WebBluetoothModule } from '@manekinekko/angular-web-bluetooth';\n\n@NgModule({\n imports: [\n //...,\n WebBluetoothModule.forRoot({\n enableTracing: true // or false, this will enable logs in the browser's console\n })\n ]\n //...\n})\nexport class AppModule {}2.a) use it in your service/component (the easiest way)\nHere is an annotated example using the BluetoothCore service:\nExample :import { Injectable } from '@angular/core';\nimport { BluetoothCore } from '@manekinekko/angular-web-bluetooth';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BatteryLevelService {\n\n constructor(public readonly ble: BluetoothCore) {}\n\n getDevice() {\n // call this method to get the connected device\n return this.ble.getDevice$();\n }\n\n stream() {\n // call this method to get a stream of values emitted by the device for a given characteristic\n return this.ble.streamValues$().pipe(\n map((value: DataView) => value.getInt8(0))\n );\n }\n\n disconnectDevice() {\n // call this method to disconnect from the device. This method will also stop clear all subscribed notifications\n this.ble.disconnectDevice();\n }\n\n value() {\n console.log('Getting Battery level...');\n\n return this.ble\n .value$({\n service: 'battery_service',\n characteristic: 'battery_level'\n });\n }\n\n}2.b) use it in your service/component (the advanced way)\nHere is an annotated example using the BluetoothCore service:\nExample :import { Injectable } from '@angular/core';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { BluetoothCore } from '@manekinekko/angular-web-bluetooth';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BatteryLevelService {\n static GATT_CHARACTERISTIC_BATTERY_LEVEL = 'battery_level';\n static GATT_PRIMARY_SERVICE = 'battery_service';\n\n constructor(public ble: BluetoothCore) {}\n\n getDevice() {\n // call this method to get the connected device\n return this.ble.getDevice$();\n }\n\n stream() {\n // call this method to get a stream of values emitted by the device\n return this.ble.streamValues$().pipe(map((value: DataView) => value.getUint8(0)));\n }\n\n disconnectDevice() {\n this.ble.disconnectDevice();\n }\n\n /**\n * Get Battery Level GATT Characteristic value.\n * This logic is specific to this service, this is why we can't abstract it elsewhere.\n * The developer is free to provide any service, and characteristics they want.\n *\n * @return Emites the value of the requested service read from the device\n */\n value() {\n console.log('Getting Battery level...');\n\n return this.ble\n\n // 1) call the discover method will trigger the discovery process (by the browser)\n .discover$({\n acceptAllDevices: true,\n optionalServices: [BatteryLevelService.GATT_PRIMARY_SERVICE]\n })\n .pipe(\n\n // 2) get that service\n mergeMap((gatt: BluetoothRemoteGATTServer) => {\n return this.ble.getPrimaryService$(gatt, BatteryLevelService.GATT_PRIMARY_SERVICE);\n }),\n\n // 3) get a specific characteristic on that service\n mergeMap((primaryService: BluetoothRemoteGATTService) => {\n return this.ble.getCharacteristic$(primaryService, BatteryLevelService.GATT_CHARACTERISTIC_BATTERY_LEVEL);\n }),\n\n // 4) ask for the value of that characteristic (will return a DataView)\n mergeMap((characteristic: BluetoothRemoteGATTCharacteristic) => {\n return this.ble.readValue$(characteristic);\n }),\n\n // 5) on that DataView, get the right value\n map((value: DataView) => value.getUint8(0))\n )\n }\n}API documentation\nThe API documentation can be found here: https://manekinekko.github.io/angular-web-bluetooth/\nNeed a starter?\n\n\nThis project serves also as a starter. Run the following command:\nExample :npm startBlog post\nCheckout my full blog post on dev.to about how to use this package in your app.\nHave a PR?\nAll contributions are welcome. Here are few open issues that I need help with ;)\nLicense\nThe MIT License (MIT) Copyright (c) 2017 - Wassim CHEGHAM\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"license.html":{"url":"license.html","title":"getting-started - license","body":"\n \n\nThe MIT License (MIT) Copyright (c) 2017 - Wassim CHEGHAM\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules.html":{"url":"modules.html","title":"modules - modules","body":"\n \n\n\n\n\n Modules\n\n\n \n \n \n \n AppModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n WebBluetoothModule\n \n \n \n No graph available.\n \n \n Browse\n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"overview.html":{"url":"overview.html","title":"overview - overview","body":"\n \n\n\n\n Overview\n\n \n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_AppModule\n\n\n\ncluster_AppModule_declarations\n\n\n\ncluster_AppModule_imports\n\n\n\ncluster_AppModule_bootstrap\n\n\n\n\nAppComponent\n\nAppComponent\n\n\n\nAppModule\n\nAppModule\n\nAppModule -->\n\nAppComponent->AppModule\n\n\n\n\n\nBatteryLevelComponent\n\nBatteryLevelComponent\n\nAppModule -->\n\nBatteryLevelComponent->AppModule\n\n\n\n\n\nDashboardComponent\n\nDashboardComponent\n\nAppModule -->\n\nDashboardComponent->AppModule\n\n\n\n\n\nHumidityComponent\n\nHumidityComponent\n\nAppModule -->\n\nHumidityComponent->AppModule\n\n\n\n\n\nStepCounterComponent\n\nStepCounterComponent\n\nAppModule -->\n\nStepCounterComponent->AppModule\n\n\n\n\n\nTemperatureComponent\n\nTemperatureComponent\n\nAppModule -->\n\nTemperatureComponent->AppModule\n\n\n\n\n\nAppComponent \n\nAppComponent \n\nAppComponent -->\n\nAppModule->AppComponent \n\n\n\n\n\nWebBluetoothModule\n\nWebBluetoothModule\n\nAppModule -->\n\nWebBluetoothModule->AppModule\n\n\n\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n \n\n \n \n \n \n \n \n 2 Modules\n \n \n \n \n \n \n \n \n 6 Components\n \n \n \n \n \n \n \n 6 Injectables\n \n \n \n \n \n \n \n 5 Classes\n \n \n \n \n \n \n \n 2 Interfaces\n \n \n \n \n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"properties.html":{"url":"properties.html","title":"package-properties - properties","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n Properties\n \n \n \n Version : 17.0.0\n \n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/typealiases.html":{"url":"miscellaneous/typealiases.html","title":"miscellaneous-typealiases - typealiases","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Miscellaneous\n Type aliases\n\n\n\n Index\n \n \n \n \n \n \n ReadValueOptions   (projects/.../bluetooth.service.ts)\n \n \n ServiceOptions   (src/.../ble.service.ts)\n \n \n \n \n \n \n\n\n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.service.ts\n \n \n \n \n \n \n ReadValueOptions\n \n \n \n \n literal type\n\n \n \n \n \n src/app/ble.service.ts\n \n \n \n \n \n \n ServiceOptions\n \n \n \n \n literal type\n\n \n \n \n \n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/variables.html":{"url":"miscellaneous/variables.html","title":"miscellaneous-variables - variables","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Miscellaneous\n Variables\n\n\n\n Index\n \n \n \n \n \n \n bleCore   (src/.../battery-level.component.ts)\n \n \n bleCore   (src/.../humidity.component.ts)\n \n \n bleCore   (src/.../stepcounter.component.ts)\n \n \n bleCore   (src/.../temperature.component.ts)\n \n \n bleService   (src/.../battery-level.component.ts)\n \n \n bleService   (src/.../humidity.component.ts)\n \n \n bleService   (src/.../stepcounter.component.ts)\n \n \n bleService   (src/.../temperature.component.ts)\n \n \n environment   (src/.../environment.prod.ts)\n \n \n environment   (src/.../environment.ts)\n \n \n PROVIDERS   (src/.../battery-level.component.ts)\n \n \n PROVIDERS   (src/.../humidity.component.ts)\n \n \n PROVIDERS   (src/.../stepcounter.component.ts)\n \n \n PROVIDERS   (src/.../temperature.component.ts)\n \n \n TI_SENSORAG_SERVICES   (projects/.../ti-sensortag2.ts)\n \n \n TiTag   (projects/.../ti-sensortag2.ts)\n \n \n \n \n \n \n\n\n src/app/thingy52/battery-level.component.ts\n \n \n \n \n \n \n \n bleCore\n \n \n \n \n \n \n Default value : (b: BrowserWebBluetooth, l: ConsoleLoggerService) =>\n new BluetoothCore(b, l)\n \n \n\n\n \n \n \n \n \n \n \n \n bleService\n \n \n \n \n \n \n Default value : (b: BluetoothCore) => new BleService(b)\n \n \n\n\n \n \n \n \n \n \n \n \n PROVIDERS\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : [\n {\n provide: BluetoothCore,\n useFactory: bleCore,\n deps: [BrowserWebBluetooth, ConsoleLoggerService],\n },\n {\n provide: BleService,\n useFactory: bleService,\n deps: [BluetoothCore],\n },\n]\n \n \n\n\n \n \n\n src/app/thingy52/humidity.component.ts\n \n \n \n \n \n \n \n bleCore\n \n \n \n \n \n \n Default value : (b: BrowserWebBluetooth, l: ConsoleLoggerService) => new BluetoothCore(b, l)\n \n \n\n\n \n \n \n \n \n \n \n \n bleService\n \n \n \n \n \n \n Default value : (b: BluetoothCore) => new BleService(b)\n \n \n\n\n \n \n \n \n \n \n \n \n PROVIDERS\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : [{\n provide: BluetoothCore,\n useFactory: bleCore,\n deps: [BrowserWebBluetooth, ConsoleLoggerService]\n}, {\n provide: BleService,\n useFactory: bleService,\n deps: [BluetoothCore]\n}]\n \n \n\n\n \n \n\n src/app/thingy52/stepcounter.component.ts\n \n \n \n \n \n \n \n bleCore\n \n \n \n \n \n \n Default value : (b: BrowserWebBluetooth, l: ConsoleLoggerService) => new BluetoothCore(b, l)\n \n \n\n\n \n \n \n \n \n \n \n \n bleService\n \n \n \n \n \n \n Default value : (b: BluetoothCore) => new BleService(b)\n \n \n\n\n \n \n \n \n \n \n \n \n PROVIDERS\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : [{\n provide: BluetoothCore,\n useFactory: bleCore,\n deps: [BrowserWebBluetooth, ConsoleLoggerService]\n}, {\n provide: BleService,\n useFactory: bleService,\n deps: [BluetoothCore]\n}]\n \n \n\n\n \n \n\n src/app/thingy52/temperature.component.ts\n \n \n \n \n \n \n \n bleCore\n \n \n \n \n \n \n Default value : (b: BrowserWebBluetooth, l: ConsoleLoggerService) =>\n new BluetoothCore(b, l)\n \n \n\n\n \n \n \n \n \n \n \n \n bleService\n \n \n \n \n \n \n Default value : (b: BluetoothCore) => new BleService(b)\n \n \n\n\n \n \n \n \n \n \n \n \n PROVIDERS\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : [\n {\n provide: BluetoothCore,\n useFactory: bleCore,\n deps: [BrowserWebBluetooth, ConsoleLoggerService],\n },\n {\n provide: BleService,\n useFactory: bleService,\n deps: [BluetoothCore],\n },\n]\n \n \n\n\n \n \n\n src/environments/environment.prod.ts\n \n \n \n \n \n \n \n environment\n \n \n \n \n \n \n Type : object\n\n \n \n \n \n Default value : {\n production: true\n}\n \n \n\n\n \n \n\n src/environments/environment.ts\n \n \n \n \n \n \n \n environment\n \n \n \n \n \n \n Type : object\n\n \n \n \n \n Default value : {\n production: false\n}\n \n \n\n\n \n \n\n projects/manekinekko/angular-web-bluetooth/src/lib/lang/uuids/ti-sensortag2.ts\n \n \n \n \n \n \n \n TI_SENSORAG_SERVICES\n \n \n \n \n \n \n Default value : Object.keys(TiTag).map(key => TiTag[key].SERVICE)\n \n \n\n\n \n \n \n \n \n \n \n \n TiTag\n \n \n \n \n \n \n Type : object\n\n \n \n \n \n Default value : {\n\n DEVICE_INFORMATION : {\n SERVICE : 'f000180a-0451-4000-b000-000000000000',\n SYSTEM_ID : 'f0002a23-0451-4000-b000-000000000000',\n MODEL_NUMBER : 'f0002a24-0451-4000-b000-000000000000',\n SERIAL_NUMBER : 'f0002a25-0451-4000-b000-000000000000',\n FIRMWARE_REV : 'f0002a26-0451-4000-b000-000000000000',\n HARDWARE_REV : 'f0002a27-0451-4000-b000-000000000000',\n SOFTWARE_REV : 'f0002a28-0451-4000-b000-000000000000',\n MANIFACTURER : 'f0002a29-0451-4000-b000-000000000000',\n IEEE11073 : 'f0002a2a-0451-4000-b000-000000000000',\n PNP_ID : 'f0002a50-0451-4000-b000-000000000000'\n },\n\n BATTERY : {\n SERVICE : 'f000180f-0451-4000-b000-000000000000',\n LEVEL : 'f0002a19-0451-4000-b000-000000000000'\n },\n\n TEMPERATURE : {\n SERVICE : 'f000aa00-0451-4000-b000-000000000000',\n DATA : 'f000aa01-0451-4000-b000-000000000000',\n CONFIGURATION : 'f000aa02-0451-4000-b000-000000000000',\n PERIOD : 'f000aa03-0451-4000-b000-000000000000'\n },\n\n HUMIDITY : {\n SERVICE : 'f000aa20-0451-4000-b000-000000000000',\n DATA : 'f000aa21-0451-4000-b000-000000000000',\n CONFIGURATION : 'f000aa22-0451-4000-b000-000000000000',\n PERIOD : 'f000aa23-0451-4000-b000-000000000000'\n },\n\n BAROMETER : {\n SERVICE : 'f000aa40-0451-4000-b000-000000000000',\n DATA : 'f000aa41-0451-4000-b000-000000000000',\n CONFIGURATION : 'f000aa42-0451-4000-b000-000000000000',\n PERIOD : 'f000aa44-0451-4000-b000-000000000000'\n },\n\n // service not available in model CC2650\n // ACCELEROMETER : {\n // SERVICE : 'f000aa10-0451-4000-b000-000000000000',\n // DATA : 'f000aa11-0451-4000-b000-000000000000',\n // CONFIGURATION : 'f000aa12-0451-4000-b000-000000000000',\n // PERIOD : 'f000aa13-0451-4000-b000-000000000000'\n // },\n\n // service not available in model CC2650\n // MAGNETOMETER : {\n // SERVICE : 'f000aa30-0451-4000-b000-000000000000',\n // DATA : 'f000aa31-0451-4000-b000-000000000000',\n // CONFIGURATION : 'f000aa32-0451-4000-b000-000000000000',\n // PERIOD : 'f000aa33-0451-4000-b000-000000000000'\n // },\n\n // service not available in model CC2650\n // GYROSCOPE : {\n // SERVICE : 'f000aa50-0451-4000-b000-000000000000',\n // DATA : 'f000aa51-0451-4000-b000-000000000000',\n // CONFIGURATION : 'f000aa52-0451-4000-b000-000000000000',\n // PERIOD : 'f000aa53-0451-4000-b000-000000000000'\n // },\n\n MOVEMENT : {\n SERVICE : 'f000aa80-0451-4000-b000-000000000000',\n DATA : 'f000aa81-0451-4000-b000-000000000000',\n CONFIGURATION : 'f000aa82-0451-4000-b000-000000000000',\n PERIOD : 'f000aa83-0451-4000-b000-000000000000'\n },\n\n LIGHT : {\n SERVICE : 'f000aa70-0451-4000-b000-000000000000',\n DATA : 'f000aa71-0451-4000-b000-000000000000',\n CONFIGURATION : 'f000aa72-0451-4000-b000-000000000000',\n PERIOD : 'f000aa73-0451-4000-b000-000000000000'\n },\n\n KEYPRESS : {\n SERVICE : 'f000ffe0-0451-4000-b000-000000000000',\n STATE : 'f000ffe1-0451-4000-b000-000000000000'\n },\n\n __REGISTER__ : {\n SERVICE : 'f000ac00-0451-4000-b000-000000000000',\n DATA : 'f000ac01-0451-4000-b000-000000000000',\n ADDRESS : 'f000ac02-0451-4000-b000-000000000000',\n DEVICE_ID : 'f000ac03-0451-4000-b000-000000000000'\n },\n\n CONTROL : {\n SERVICE : 'f000ccc0-0451-4000-b000-000000000000',\n CURRENT_USED_PARAMETERS : 'f000ccc1-0451-4000-b000-000000000000',\n REQUEST_NEW_PARAMETERS : 'f000ccc2-0451-4000-b000-000000000000',\n DISCONNECT_REQUEST : 'f000ccc3-0451-4000-b000-000000000000'\n },\n\n OAD : {\n SERVICE : 'f000ffc0-0451-4000-b000-000000000000',\n IMAGE_NOTIFY : 'f000ffc1-0451-4000-b000-000000000000',\n IMAGE_BLOCK_REQUEST : 'f000ffc2-0451-4000-b000-000000000000',\n IMAGE_COUNT : 'f000ffc3-0451-4000-b000-000000000000',\n IMAGE_STATUS : 'f000ffc4-0451-4000-b000-000000000000'\n },\n\n IO : {\n SERVICE : 'f000aa64-0451-4000-b000-000000000000',\n DATA : 'f000aa65-0451-4000-b000-000000000000',\n CONFIG : 'f000aa66-0451-4000-b000-000000000000'\n }\n}\n \n \n\n\n \n \n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"}}
+ "index": {"version":"2.3.9","fields":["title","body"],"fieldVectors":[["title/interfaces/AWBOptions.html",[0,1.352,1,1.806]],["body/interfaces/AWBOptions.html",[0,1.57,1,3.161,2,2.646,3,0.502,4,0.502,5,0.444,6,0.841,7,0.336,8,2.341,9,0.444,10,1.3,11,1.091,12,3.528,13,2.704,14,0.562,15,0.035,16,1.082,17,3.34,18,3.937,19,3.054,20,0.694,21,3.937,22,2.646,23,1.693,24,3.054,25,1.876,26,3.054,27,1.572,28,2.219,29,3.054,30,0.692,31,3.775,32,1.312,33,2.162,34,2.646,35,2.704,36,3.054,37,3.34,38,3.054,39,2.341,40,0.145,41,2.219,42,1.895,43,3.054,44,1.313,45,2.239,46,2.219,47,3.054,48,2.341,49,1.721,50,0.025,51,0.025]],["title/components/AppComponent.html",[52,0.868,53,1.131]],["body/components/AppComponent.html",[3,0.567,4,0.567,5,0.501,15,0.034,16,0.784,20,0.784,30,0.501,40,0.164,50,0.027,51,0.027,52,1.522,53,2.069,54,2.397,55,2.141,56,2.141,57,3.45,58,2.141,59,3.195,60,2.419,61,2.397,62,2.638,63,1.773,64,2.638,65,2.397,66,2.141,67,2.985,68,2.141,69,0.966,70,2.141,71,1.484,72,1.773,73,2.141,74,1.484,75,2.141,76,1.484,77,2.141,78,1.484,79,2.141,80,1.484,81,1.945,82,2.141,83,2.141]],["title/modules/AppModule.html",[84,1.806,85,1.806]],["body/modules/AppModule.html",[3,0.422,4,0.422,5,0.374,7,0.283,12,1.97,15,0.035,16,1.192,17,2.692,20,0.584,30,0.374,39,2.692,40,0.122,41,2.536,44,1.105,50,0.023,51,0.023,53,2.173,63,1.321,71,1.997,74,1.997,76,1.997,78,1.997,80,1.997,84,1.765,85,3.586,86,1.765,87,1.97,88,3.999,89,3.999,90,2.57,91,2.57,92,2.57,93,2.57,94,2.57,95,3.511,96,2.57,97,1.97,98,3.092,99,4.224,100,3.092,101,4.224,102,3.092,103,4.224,104,3.511,105,3.092,106,4.224,107,3.092,108,4.224,109,3.092,110,4.224,111,3.092,112,3.092,113,4.224,114,3.092,115,4.224,116,3.092,117,4.224,118,3.092,119,4.224,120,2.57,121,2.57,122,4.224,123,1.765,124,1.765,125,4.224,126,3.092,127,1.449,128,1.207,129,3.092,130,3.092,131,3.092,132,3.092,133,3.092,134,3.092,135,3.092,136,4.224,137,1.595,138,2.57,139,1.105]],["title/classes/AppPage.html",[40,0.125,140,2.279]],["body/classes/AppPage.html",[3,0.602,4,0.602,5,0.532,9,0.532,15,0.034,16,0.832,30,0.532,32,1.214,40,0.174,50,0.028,51,0.028,61,2.065,65,2.065,137,2.273,140,3.821,141,2.273,142,3.664,143,1.105,144,5.907,145,5.907,146,1.002,147,4.407,148,1.105,149,5.104,150,4.407,151,4.407,152,4.407,153,4.407,154,3.174,155,4.407]],["title/components/BatteryLevelComponent.html",[52,0.868,71,1.131]],["body/components/BatteryLevelComponent.html",[3,0.22,4,0.22,5,0.194,7,0.147,9,0.194,10,0.711,11,0.677,14,0.833,15,0.035,16,0.825,20,0.303,23,1.333,25,1.065,27,1.379,30,0.393,32,0.368,33,1.011,40,0.064,44,1.462,45,1.107,46,1.214,49,1.214,50,0.014,51,0.014,52,0.893,53,0.575,54,1.214,55,0.829,56,0.829,58,0.829,59,2.467,60,1.868,62,1.336,63,0.687,64,1.336,65,1.214,66,0.829,67,1.924,68,0.829,69,0.772,70,0.829,71,1.333,72,1.594,73,0.829,74,0.575,75,0.829,76,0.575,77,0.829,78,0.575,79,0.829,80,0.575,81,0.753,82,0.829,83,0.829,120,1.336,121,3.101,123,0.918,124,0.918,127,0.753,128,0.628,143,0.539,146,1.071,148,0.957,154,2.343,156,1.857,157,4.117,158,1.158,159,1.214,160,2.073,161,2.073,162,2.073,163,2.073,164,2.786,165,4.372,166,3.253,167,3.556,168,3.253,169,3.253,170,3.148,171,3.148,172,2.704,173,3.634,174,3.634,175,2.704,176,3.148,177,3.148,178,3.148,179,3.253,180,2.343,181,2.704,182,2.073,183,3.253,184,3.253,185,3.148,186,3.253,187,3.253,188,1.857,189,2.704,190,2.343,191,2.704,192,3.253,193,1.727,194,2.704,195,3.253,196,3.253,197,1.928,198,3.4,199,3.253,200,3.253,201,1.431,202,2.606,203,2.073,204,2.073,205,1.333,206,3.73,207,1.651,208,2.377,209,2.377,210,2.377,211,2.073,212,1.651,213,1.597,214,0.848,215,1.024,216,2.043,217,2.606,218,1.608,219,0.745,220,1.608,221,1.505,222,1.608,223,1.651,224,1.262,225,1.608,226,1.524,227,1.608,228,1.608,229,1.608,230,1.024,231,2.894,232,1.214,233,1.608,234,1.563,235,1.678,236,1.608,237,1.608,238,2.93,239,2.256,240,1.608,241,3.253,242,3.73,243,1.608,244,1.608,245,1.608,246,1.608,247,2.377,248,1.608,249,1.608,250,0.829,251,1.608,252,0.918,253,1.024,254,1.39,255,1.336,256,1.479,257,1.479,258,0.918,259,0.918,260,0.918,261,0.918,262,1.024,263,0.918,264,1.024,265,1.024,266,1.024,267,1.024,268,0.575,269,1.024,270,1.336,271,0.753,272,1.336,273,1.608,274,1.024,275,1.336,276,1.524,277,1.608,278,1.608,279,1.608,280,1.608,281,2.59,282,1.024,283,3.253,284,1.608,285,1.924,286,0.829,287,1.608,288,1.158,289,1.024,290,1.336,291,0.918,292,1.024,293,1.024,294,1.024,295,1.024,296,1.158,297,1.608,298,1.024,299,1.024,300,1.608,301,1.024,302,1.024,303,1.024,304,1.608,305,1.608,306,1.608]],["title/injectables/BleService.html",[216,1.352,307,0.868]],["body/injectables/BleService.html",[3,0.459,4,0.459,5,0.406,7,0.307,9,0.406,10,1.226,11,0.93,14,0.852,15,0.035,16,0.948,20,0.635,23,1.991,30,0.406,32,1.149,35,2.551,40,0.133,50,0.024,51,0.024,60,2.089,61,1.575,69,0.948,127,1.575,128,1.312,143,0.93,146,1.12,148,1.16,193,1.717,197,1.745,201,1.463,214,1.1,216,1.909,219,1.023,221,1.463,224,1.226,231,1.919,234,1.201,250,2.759,268,1.201,271,2.094,291,1.919,307,1.226,308,1.734,309,2.421,310,2.589,311,5.019,312,3.714,313,4.447,314,4.447,315,3.361,316,4.468,317,4.468,318,4.124,319,3.361,320,3.361,321,3.361,322,3.361,323,3.361,324,3.361,325,2.794,326,3.361,327,2.794,328,3.361,329,1.919,330,2.794,331,2.794,332,2.794,333,1.575,334,3.361,335,2.794,336,2.794,337,3.361,338,3.361,339,4.468,340,2.421,341,3.361,342,3.361,343,2.794,344,2.794]],["title/injectables/BrowserWebBluetooth.html",[25,1.036,307,0.868]],["body/injectables/BrowserWebBluetooth.html",[3,0.559,4,0.559,5,0.495,6,1.318,7,0.527,9,0.495,10,1.392,11,0.853,14,0.627,15,0.034,16,0.773,20,0.773,25,1.661,30,0.495,32,0.937,33,1.599,35,2.338,40,0.162,50,0.027,51,0.027,60,2.152,69,0.773,128,1.599,137,2.113,143,1.056,146,1.041,148,0.853,149,4.217,214,1.805,219,0.937,307,1.392,308,2.113,310,2.843,340,3.654,345,3.405,346,5.073,347,5.073,348,5.073,349,5.511,350,4.095,351,4.095,352,4.095,353,4.095,354,3.405,355,4.095,356,4.095,357,4.095,358,3.405,359,4.095,360,4.095]],["title/injectables/ConsoleLoggerService.html",[27,0.949,307,0.868]],["body/injectables/ConsoleLoggerService.html",[0,1.621,3,0.518,4,0.518,5,0.458,6,1.282,7,0.512,9,0.458,11,1.108,14,0.815,15,0.035,16,0.716,20,0.716,27,1.45,28,1.778,30,0.643,40,0.191,50,0.026,51,0.026,61,2.265,69,1.005,143,1.007,146,1.005,148,1.108,159,2.265,219,1.218,221,1.937,224,1.461,226,2.265,282,3.081,307,1.461,308,1.957,329,2.761,361,2.418,362,3.482,363,3.833,364,3.794,365,4.262,366,3.833,367,3.794,368,3.833,369,3.794,370,3.038,371,2.732,372,2.732,373,2.732,374,2.732,375,2.732,376,2.732]],["title/components/DashboardComponent.html",[52,0.868,74,1.131]],["body/components/DashboardComponent.html",[3,0.406,4,0.406,5,0.359,7,0.376,9,0.359,15,0.035,16,0.561,20,0.561,30,0.359,40,0.118,50,0.022,51,0.022,52,1.294,53,1.063,54,1.927,55,1.534,56,1.534,58,1.534,59,2.975,60,2.315,62,1.534,63,1.27,64,2.121,65,1.927,66,1.534,67,2.623,68,1.534,69,0.776,70,1.534,71,1.063,72,2.014,73,1.534,74,1.818,75,1.534,76,1.063,77,1.534,78,1.063,79,1.534,80,1.063,81,2.208,82,1.534,83,1.534,146,0.561,154,2.141,156,1.698,162,3.24,167,2.141,170,2.141,171,2.141,176,3.394,177,2.961,178,3.394,180,2.961,185,2.961,188,1.698,189,2.472,190,2.141,191,2.472,205,2.062,214,1.543,235,1.534,247,3.518,358,2.472,377,2.472,378,5.085,379,4.111,380,4.713,381,4.111,382,4.111,383,2.973,384,3.418,385,4.111,386,5.768,387,5.768,388,3.293,389,5.768,390,5.768,391,2.961,392,4.111,393,2.973,394,2.973,395,2.973,396,2.472,397,2.973,398,3.662,399,2.973,400,2.973,401,2.973,402,2.973,403,1.895,404,2.141,405,2.973,406,2.973,407,4.111,408,5.085,409,3.418,410,2.973,411,4.713,412,2.973,413,2.973]],["title/classes/FakeBluetoothDevice.html",[40,0.125,414,1.632]],["body/classes/FakeBluetoothDevice.html",[3,0.351,4,0.351,5,0.311,6,1.296,7,0.518,9,0.311,10,1.309,11,0.773,13,1.327,14,0.851,15,0.035,30,0.576,32,1.091,40,0.189,50,0.02,51,0.02,69,1.025,139,0.92,141,1.327,143,0.773,146,1.049,148,0.907,193,1.43,197,2.12,201,0.842,205,1.807,213,1.45,214,0.842,219,0.85,221,1.426,224,1.654,232,1.206,234,1.327,235,1.327,239,2.037,254,1.586,268,1.704,276,2.041,285,2.247,286,1.327,310,2.608,333,2.041,388,1.469,414,1.915,415,1.469,416,2.487,417,3.038,418,3.038,419,3.086,420,2.887,421,2.573,422,2.573,423,2.12,424,2.573,425,3.712,426,2.775,427,2.573,428,2.775,429,3.357,430,3.357,431,2.573,432,2.573,433,2.573,434,3.038,435,2.366,436,2.366,437,2.366,438,1.64,439,2.366,440,1.915,441,1.64,442,1.64,443,2.366,444,1.327,445,1.586,446,1.64,447,1.64,448,2.366,449,1.64,450,1.64,451,1.64,452,1.64,453,1.64,454,1.327,455,1.469,456,1.64,457,1.64,458,1.64,459,1.64,460,1.327,461,2.366,462,2.366,463,1.469,464,3.038,465,2.366,466,1.64,467,1.64,468,2.366,469,1.64,470,1.64,471,1.64,472,1.64]],["title/classes/FakeBluetoothRemoteGATTCharacteristic.html",[40,0.125,460,1.632]],["body/classes/FakeBluetoothRemoteGATTCharacteristic.html",[3,0.344,4,0.344,5,0.304,6,1.309,7,0.523,9,0.304,10,1.481,11,0.896,13,1.298,14,0.862,15,0.035,30,0.57,32,1.08,40,0.187,50,0.02,51,0.02,69,0.891,139,0.9,141,1.298,143,0.761,146,1.063,148,0.983,193,1.568,197,1.68,201,0.824,205,1.306,213,1.427,214,0.824,219,0.984,221,1.408,224,1.546,232,1.179,234,0.9,235,1.298,239,1.561,254,1.561,268,2.045,276,2.016,285,2.219,286,1.298,310,2.782,333,2.016,388,1.437,414,1.298,415,1.437,416,1.437,417,1.604,418,3.008,419,3.038,420,2.862,423,1.437,426,2.328,428,2.741,429,3.331,430,3.331,434,3.008,435,2.328,436,2.328,437,2.328,438,1.604,439,2.328,440,1.885,441,1.604,442,1.604,443,2.328,444,1.298,445,1.561,446,1.604,447,1.604,448,2.328,449,1.604,450,1.604,451,1.604,452,1.604,453,1.604,454,1.298,455,1.437,456,1.604,457,1.604,458,1.604,459,1.604,460,1.885,461,3.008,462,3.194,463,2.456,464,3.521,465,2.741,466,2.328,467,1.604,468,2.328,469,3.008,470,1.604,471,2.328,472,1.604,473,3.654,474,2.517,475,2.517,476,2.517,477,2.517,478,2.517,479,2.517,480,2.517,481,2.517,482,2.517,483,2.517]],["title/classes/FakeBluetoothRemoteGATTServer.html",[40,0.125,444,1.632]],["body/classes/FakeBluetoothRemoteGATTServer.html",[3,0.367,4,0.367,5,0.324,6,1.287,7,0.514,9,0.324,10,1.335,11,0.797,13,1.385,14,0.842,15,0.035,30,0.587,32,1.113,40,0.192,50,0.021,51,0.021,69,0.842,139,0.96,141,1.385,143,0.797,146,1.038,148,0.929,193,1.338,197,2.147,201,1.253,205,1.837,213,2.007,214,0.879,219,0.876,221,0.879,224,1.509,232,2.09,234,0.96,235,1.385,239,1.635,254,1.635,268,1.738,276,2.09,285,2.301,286,2.301,310,2.301,333,2.09,388,2.776,414,1.385,415,1.533,416,1.533,417,1.711,418,2.439,420,2.185,423,1.533,426,2.439,428,2.439,429,3.098,430,3.098,434,3.098,435,2.439,436,2.439,437,2.439,438,1.711,439,2.439,440,1.974,441,1.711,442,1.711,443,2.439,444,1.974,445,1.905,446,3.275,447,1.711,448,2.439,449,1.711,450,2.439,451,2.842,452,1.711,453,1.711,454,1.385,455,1.533,456,1.711,457,1.711,458,1.711,459,1.711,460,1.385,461,2.439,462,2.439,463,1.533,464,3.098,465,2.439,466,1.711,467,1.711,468,2.439,469,1.711,470,1.711,471,1.711,472,1.711,484,3.827,485,2.232,486,3.827,487,3.827,488,2.685,489,2.685,490,2.685]],["title/classes/FakeBluetoothRemoteGATTService.html",[40,0.125,454,1.632]],["body/classes/FakeBluetoothRemoteGATTService.html",[3,0.386,4,0.386,5,0.342,6,1.2,7,0.479,9,0.342,10,1.366,11,0.827,13,1.459,14,0.762,15,0.035,30,0.601,32,1.139,40,0.197,50,0.021,51,0.021,69,0.866,139,1.011,141,1.459,143,0.827,146,0.939,148,0.589,193,1.191,197,2.18,201,0.926,205,1.419,213,2.047,214,0.926,219,0.909,224,1.532,235,1.459,239,1.696,254,1.696,268,1.779,271,1.325,276,2.15,285,2.367,286,1.459,310,2.367,333,2.15,388,1.615,414,1.459,415,1.615,416,1.615,417,1.802,418,2.53,420,2.267,423,1.615,426,2.53,428,2.53,429,3.171,430,3.171,434,3.171,435,2.53,436,2.53,437,2.53,438,1.802,439,2.53,440,2.048,441,1.802,442,1.802,443,2.53,444,1.459,445,1.696,446,1.802,447,1.802,448,2.53,449,1.802,450,1.802,451,1.802,452,1.802,453,1.802,454,2.048,455,2.993,456,1.802,457,2.53,458,2.924,459,1.802,460,1.459,461,2.53,462,2.53,463,1.615,464,3.171,465,2.53,466,1.802,467,1.802,468,2.53,469,1.802,470,1.802,471,1.802,472,1.802,485,2.351,491,3.971,492,2.828,493,3.971,494,2.828]],["title/components/HumidityComponent.html",[52,0.868,76,1.131]],["body/components/HumidityComponent.html",[3,0.26,4,0.26,5,0.23,7,0.174,9,0.23,10,0.813,11,0.757,14,0.844,15,0.035,16,0.888,20,0.36,23,1.466,25,1.19,27,1.09,30,0.439,32,0.436,33,1.602,40,0.075,42,1.528,44,1.588,45,1.266,46,1.388,49,1.388,50,0.016,51,0.016,52,0.998,53,0.681,54,1.388,55,0.982,56,0.982,58,0.982,59,2.619,60,1.983,62,1.528,63,0.814,64,1.528,65,1.388,66,0.982,67,2.116,68,0.982,69,0.839,70,0.982,71,0.681,72,0.814,73,0.982,74,0.681,75,0.982,76,1.466,77,0.982,78,0.681,79,0.982,80,0.681,81,0.892,82,0.982,83,0.982,123,1.088,124,1.088,127,0.892,128,0.744,139,1.3,143,0.617,146,1.088,148,1.022,156,2.076,159,1.388,160,2.317,161,2.317,163,2.317,164,2.317,182,2.317,188,2.076,193,1.599,197,1.837,201,1.54,202,2.831,203,2.317,204,2.317,205,1.466,207,1.888,208,2.614,209,2.614,210,2.614,211,1.888,212,1.888,213,1.42,214,0.97,215,1.214,216,2.169,217,2.831,219,0.832,221,1.608,223,1.888,224,1.22,226,1.388,230,1.888,231,2.804,232,1.388,234,1.588,238,2.831,239,2.544,250,0.982,252,1.088,253,1.214,254,1.752,255,1.528,256,1.691,257,1.691,258,1.088,259,1.088,260,1.088,261,1.088,262,1.214,263,1.088,264,1.214,265,1.214,266,1.214,267,1.214,268,0.681,269,1.214,271,0.892,274,1.214,276,1.388,289,1.214,291,1.691,292,1.214,293,1.214,294,1.214,295,1.214,296,1.372,298,1.214,299,1.214,301,1.888,302,1.214,303,1.214,330,1.583,331,2.463,391,2.618,396,1.583,398,2.618,403,1.214,404,1.372,445,0.814,495,1.372,496,3.41,497,3.022,498,3.022,499,3.022,500,3.022,501,3.41,502,1.905,503,1.905,504,1.905,505,1.905,506,1.905,507,1.905,508,1.905,509,1.905,510,3.022,511,1.905,512,3.022,513,1.583,514,2.463,515,1.905,516,3.41,517,1.905,518,1.905,519,1.905,520,1.905,521,1.905,522,1.905,523,1.583,524,1.372,525,1.583,526,2.134,527,2.134,528,2.134,529,2.134,530,1.905,531,1.583,532,1.583,533,2.463,534,1.583,535,1.583,536,1.583,537,1.905,538,1.583,539,1.583,540,1.583,541,1.372,542,3.022,543,1.583,544,2.463,545,1.583,546,1.583,547,1.583,548,1.583,549,1.583,550,1.583,551,1.583,552,1.583,553,1.583,554,1.583,555,1.583,556,1.583,557,2.463,558,1.583,559,1.905,560,1.372,561,1.583,562,1.583,563,1.583,564,1.372]],["title/interfaces/Logger.html",[0,1.352,370,1.806]],["body/interfaces/Logger.html",[0,1.601,2,2.699,3,0.512,4,0.512,5,0.453,6,1.277,7,0.51,9,0.453,11,1.102,14,0.81,15,0.035,16,0.708,20,0.708,27,1.124,28,1.756,30,0.639,40,0.19,50,0.026,51,0.026,61,2.248,69,0.999,143,0.999,146,0.999,148,1.102,159,2.248,219,1.211,221,1.931,224,1.683,226,2.248,282,3.057,307,1.452,329,2.739,361,2.388,362,3.455,363,3.455,365,4.248,366,3.455,368,3.455,370,3.185,371,3.455,372,3.455,373,3.455,374,2.699,375,2.699,376,2.699,565,3.748,566,3.748,567,3.748]],["title/injectables/NoLoggerService.html",[28,1.482,307,0.868]],["body/injectables/NoLoggerService.html",[0,1.621,3,0.518,4,0.518,5,0.458,6,1.282,7,0.512,9,0.458,11,1.108,14,0.815,15,0.035,16,0.716,20,0.716,27,1.138,28,2.265,30,0.643,40,0.191,50,0.026,51,0.026,61,2.265,69,1.005,143,1.007,146,1.005,148,1.108,159,2.265,219,1.218,221,1.937,224,1.461,226,2.265,282,3.081,307,1.461,308,1.957,329,2.761,361,2.418,362,3.482,363,3.833,365,4.262,366,3.833,368,3.833,370,3.038,371,2.732,372,2.732,373,2.732,374,2.732,375,2.732,376,2.732,568,3.794,569,3.794,570,3.794]],["title/injectables/ServerWebBluetooth.html",[307,0.868,571,2.279]],["body/injectables/ServerWebBluetooth.html",[3,0.615,4,0.615,5,0.544,6,1.23,7,0.492,9,0.544,15,0.034,16,0.85,20,0.85,30,0.544,32,1.031,40,0.178,42,2.963,50,0.029,51,0.029,143,1.119,146,0.85,148,0.938,263,3.397,307,1.475,308,2.323,571,3.871,572,3.744,573,4.503,574,4.503,575,3.744,576,4.503]],["title/components/StepCounterComponent.html",[52,0.868,78,1.131]],["body/components/StepCounterComponent.html",[3,0.274,4,0.274,5,0.243,7,0.184,9,0.243,10,0.848,11,0.783,14,0.791,15,0.035,16,0.86,20,0.379,23,1.509,25,1.231,27,1.128,30,0.454,32,0.707,33,1.206,40,0.08,44,1.628,45,1.319,46,1.447,49,1.447,50,0.017,51,0.017,52,1.032,53,0.718,54,1.447,55,1.037,56,1.037,58,1.037,59,2.665,60,2.018,62,1.593,63,0.859,64,1.593,65,1.447,66,1.037,67,2.177,68,1.037,69,0.86,70,1.037,71,0.718,72,0.859,73,1.037,74,0.718,75,1.037,76,0.718,77,1.037,78,1.509,79,1.037,80,0.718,81,0.942,82,1.037,83,1.037,123,1.148,124,1.148,127,0.942,128,0.785,139,1.104,143,0.643,146,1.068,148,1.001,156,2.147,159,1.447,160,2.396,161,2.396,163,2.396,164,3.064,167,2.709,170,2.709,171,2.709,172,3.126,173,3.997,174,3.997,175,3.126,176,2.709,177,2.709,178,2.709,180,3.463,181,3.126,182,3.064,185,2.709,188,2.147,190,2.709,193,1.696,194,3.126,197,1.878,201,1.574,202,2.902,203,2.396,204,2.396,205,1.509,207,1.968,208,2.689,209,2.689,210,2.689,211,1.968,212,1.968,213,1.469,214,1.011,215,1.281,216,2.208,217,2.902,219,0.861,221,1.574,223,1.968,224,1.032,226,1.762,230,1.968,231,2.6,234,1.344,238,2.902,239,2.264,247,1.968,250,1.037,252,1.148,253,1.281,254,1.946,255,1.593,256,1.763,257,1.763,258,1.148,259,1.148,260,1.148,261,1.148,262,1.281,263,1.148,264,1.281,265,1.281,266,1.281,267,1.281,268,0.718,271,0.942,274,1.281,285,1.037,288,1.448,289,1.281,291,1.148,292,1.281,293,1.281,294,1.281,295,1.281,298,1.281,299,1.281,301,1.968,302,1.281,303,1.281,526,2.224,527,2.224,528,2.224,529,2.224,532,1.671,533,2.567,541,1.448,558,1.671,560,1.448,564,1.448,577,1.448,578,3.088,579,3.761,580,3.761,581,3.761,582,3.997,583,3.761,584,3.761,585,2.01,586,2.01,587,2.01,588,2.01,589,2.01,590,2.01,591,2.01,592,2.01,593,2.01,594,2.01,595,2.01,596,2.01,597,2.01,598,3.088,599,2.01,600,2.01,601,2.01,602,2.01,603,2.01,604,2.01]],["title/components/TemperatureComponent.html",[52,0.868,80,1.131]],["body/components/TemperatureComponent.html",[3,0.257,4,0.257,5,0.228,7,0.172,9,0.228,10,0.807,11,0.752,14,0.842,15,0.035,16,0.884,20,0.356,23,1.458,25,1.183,27,1.083,30,0.436,32,0.673,33,1.593,40,0.075,42,1.516,44,1.581,45,1.256,46,1.377,49,1.377,50,0.016,51,0.016,52,0.991,53,0.674,54,1.377,55,0.972,56,0.972,58,0.972,59,2.61,60,1.976,62,1.516,63,0.805,64,1.516,65,1.377,66,0.972,67,2.104,68,0.972,69,0.835,70,0.972,71,0.674,72,0.805,73,0.972,74,0.674,75,0.972,76,0.674,77,0.972,78,0.674,79,0.972,80,1.458,81,1.911,82,0.972,83,0.972,123,1.076,124,1.076,127,0.883,128,0.736,139,1.291,143,0.612,146,1.086,148,1.019,156,2.062,159,1.377,160,2.302,161,2.302,163,2.302,164,2.302,182,2.302,188,2.062,193,1.594,197,1.727,201,1.534,202,2.818,203,2.302,204,2.302,205,1.458,207,1.873,208,2.599,209,2.599,210,2.599,211,1.873,212,1.873,213,1.41,214,0.617,215,1.201,216,2.162,217,2.818,219,0.827,221,1.602,223,1.873,224,1.214,226,1.692,230,1.873,231,2.793,232,1.377,234,1.581,238,2.818,239,2.54,250,0.972,252,1.076,253,1.201,254,2.001,255,1.516,256,1.678,257,1.678,258,1.076,259,1.076,260,1.076,261,1.076,262,1.201,263,1.076,264,1.201,265,1.201,266,1.201,267,1.201,268,0.674,269,1.201,271,0.883,274,1.201,275,1.567,276,1.377,288,1.358,289,1.201,290,1.567,291,1.076,292,1.201,293,1.201,294,1.201,295,1.201,296,1.358,298,1.201,299,1.201,301,1.873,302,1.201,303,1.201,333,0.883,398,2.601,403,1.201,404,1.358,445,0.805,496,3.391,497,3.003,498,3.003,499,3.003,500,3.003,501,3.391,510,3.003,512,3.003,513,1.567,514,2.443,516,3.391,523,1.567,524,1.358,525,1.567,526,2.117,527,2.117,528,2.117,529,2.117,531,1.567,534,1.567,535,1.567,536,1.567,538,1.567,539,1.567,540,1.567,541,1.358,542,3.003,543,1.567,544,2.443,545,1.567,546,1.567,547,1.567,548,1.567,549,1.567,550,1.567,551,1.567,552,1.567,553,1.567,554,1.567,555,1.567,556,1.567,557,2.443,560,1.358,561,1.567,562,1.567,563,1.567,564,1.358,582,1.567,605,1.358,606,1.885,607,1.885,608,1.885,609,1.885,610,1.885,611,1.885,612,1.885,613,1.885,614,1.885,615,1.885,616,1.885,617,2.939,618,1.885,619,1.885,620,1.885,621,1.885,622,2.939,623,2.939,624,1.885]],["title/modules/WebBluetoothModule.html",[41,1.482,84,1.806]],["body/modules/WebBluetoothModule.html",[0,1.539,1,3.252,3,0.492,4,0.492,5,0.435,6,1.07,7,0.428,8,2.296,11,0.974,12,2.296,13,1.858,14,0.551,15,0.035,16,1.075,17,3.309,18,4.317,19,2.995,20,0.68,21,3.888,22,2.595,23,1.672,24,2.995,25,1.865,26,2.995,27,1.557,28,2.191,29,2.995,30,0.688,31,3.74,32,1.303,33,2.146,34,2.595,35,2.965,36,2.995,37,3.309,38,2.995,39,2.296,40,0.143,41,2.433,42,2.412,43,3.888,44,1.288,45,2.218,46,2.191,47,2.995,48,2.296,49,1.688,50,0.025,51,0.025,69,0.68,86,2.057,143,0.75,146,0.68,148,0.75,193,1.08,219,0.824,234,1.288,625,3.602,626,3.602]],["title/coverage.html",[627,3.567]],["body/coverage.html",[0,1.691,1,1.607,5,0.34,6,1.411,7,0.564,8,3.165,14,0.701,15,0.035,23,1.006,25,1.296,27,0.844,28,1.319,31,3.297,33,1.099,37,1.794,40,0.207,44,1.775,48,1.794,50,0.021,51,0.021,52,1.49,53,1.006,57,2.34,71,1.006,74,1.006,76,1.006,78,1.006,80,1.006,140,2.028,142,2.34,157,3.577,158,3.577,216,2.236,247,4.102,255,2.562,307,1.49,309,2.851,318,2.028,332,5.103,345,2.34,361,2.917,370,1.607,377,2.34,414,1.452,415,2.835,444,1.452,454,1.452,460,1.452,495,3.577,571,2.028,572,2.34,577,3.577,605,3.577,627,2.34,628,2.028,629,2.815,630,2.815,631,2.815,632,4.577,633,6.273,634,3.29,635,2.815,636,2.815,637,3.958,638,2.34,639,3.29,640,3.29,641,2.34,642,2.34,643,4.966,644,3.958,645,2.815,646,2.815,647,2.815,648,2.815,649,3.958,650,2.815,651,2.34,652,3.29,653,2.34,654,2.815,655,2.815]],["title/dependencies.html",[87,2.42,656,1.913]],["body/dependencies.html",[15,0.035,20,0.83,22,3.166,50,0.028,51,0.028,87,2.802,104,4.404,128,1.717,137,2.732,252,2.51,524,3.166,657,4.396,658,6.259,659,4.396,660,5.297,661,4.396,662,4.396,663,4.396,664,4.396,665,4.396,666,3.655,667,4.396,668,4.396,669,4.396,670,4.396,671,4.396,672,4.396,673,4.396,674,4.396,675,4.396,676,4.396]],["title/miscellaneous/functions.html",[677,1.37,678,3.157]],["body/miscellaneous/functions.html",[1,3.151,6,1.078,7,0.431,8,3.001,9,0.569,11,0.981,14,0.721,15,0.031,25,1.917,34,3.391,35,2.689,37,3.73,48,3.516,50,0.03,51,0.03,69,0.889,219,1.078,677,2.429,678,3.915,679,5.853]],["title/index.html",[9,0.321,680,1.913,681,1.913]],["body/index.html",[7,0.455,12,1.399,15,0.035,16,1.026,17,2.105,20,0.75,23,1.779,30,0.48,32,1.287,39,1.399,40,0.157,41,1.548,42,1.704,45,0.938,50,0.018,51,0.018,60,1.29,61,1.548,72,1.696,84,1.886,85,1.254,97,1.399,127,2.069,128,2.074,137,1.132,138,1.825,139,1.181,162,2.53,193,1.548,198,1.825,201,1.739,205,0.785,213,1.943,250,1.704,260,1.254,261,1.254,268,1.693,269,1.399,270,2.746,271,2.219,272,2.746,286,1.704,307,1.212,313,2.746,314,3.671,325,2.746,327,2.746,329,1.886,333,1.548,335,2.746,336,1.825,340,2.379,343,1.825,344,2.746,384,1.825,403,2.105,409,1.825,416,1.254,420,1.254,423,1.254,440,1.132,445,0.938,455,1.254,463,1.254,628,2.859,656,1.581,666,2.746,680,1.581,681,1.581,682,2.195,683,3.303,684,5.162,685,3.303,686,2.195,687,2.195,688,2.195,689,2.195,690,2.195,691,2.195,692,2.195,693,2.195,694,2.195,695,3.937,696,3.303,697,2.195,698,3.303,699,4.416,700,3.303,701,3.303,702,3.303,703,4.975,704,5.162,705,3.303,706,3.303,707,2.195,708,3.303,709,2.195,710,2.195,711,2.195,712,3.303,713,2.195,714,2.195,715,2.195,716,2.195,717,2.195,718,2.195,719,3.303,720,2.195,721,3.303,722,2.195,723,2.195,724,2.195,725,2.195,726,2.746,727,2.195,728,2.195,729,2.195,730,2.195,731,3.303,732,2.195,733,2.195,734,2.195,735,2.195,736,2.195,737,3.303,738,1.825,739,2.195,740,2.195,741,2.195,742,2.195,743,2.195,744,2.195,745,2.195,746,2.195,747,2.195,748,2.195,749,2.195,750,2.195,751,1.825,752,3.303,753,2.195,754,2.195,755,3.303,756,3.303,757,2.195,758,2.195,759,2.195,760,2.746,761,2.195,762,2.195,763,3.303,764,2.195,765,2.195,766,2.195,767,2.195,768,2.195,769,2.195,770,2.195,771,2.195,772,2.195,773,2.195,774,2.195,775,2.195,776,2.379,777,2.746,778,3.3,779,1.825,780,1.825,781,1.825,782,1.825,783,2.746,784,1.825,785,1.825,786,1.825,787,1.825,788,1.825,789,2.746,790,4.518,791,1.825,792,1.825,793,1.825,794,3.3,795,1.825,796,2.746,797,1.825,798,1.825,799,1.825,800,1.825,801,1.825,802,1.825,803,1.825,804,1.825,805,1.825,806,2.746,807,1.825,808,1.825,809,1.825,810,1.825,811,1.825,812,1.825,813,2.746,814,2.746,815,1.825,816,1.825,817,1.825,818,1.825,819,1.825,820,1.825,821,1.825,822,1.825,823,1.825,824,1.825,825,1.825,826,1.825,827,1.825,828,1.825,829,1.825,830,1.825,831,1.825,832,1.825,833,1.825,834,1.825,835,1.825,836,1.825,837,1.825,838,1.825,839,1.825,840,1.825,841,1.825,842,1.825,843,1.825]],["title/license.html",[680,1.913,681,1.913,776,1.913]],["body/license.html",[15,0.027,50,0.027,51,0.027,97,2.559,440,2.071,628,2.892,695,4.166,726,3.338,760,3.338,776,2.892,777,4.166,778,4.541,779,3.338,780,3.338,781,3.338,782,3.338,783,4.166,784,3.338,785,3.338,786,3.338,787,3.338,788,3.338,789,4.166,790,5.161,791,3.338,792,3.338,793,3.338,794,4.541,795,3.338,796,4.166,797,3.338,798,3.338,799,3.338,800,3.338,801,3.338,802,3.338,803,3.338,804,3.338,805,3.338,806,4.166,807,3.338,808,3.338,809,3.338,810,3.338,811,3.338,812,3.338,813,4.166,814,4.166,815,3.338,816,3.338,817,3.338,818,3.338,819,3.338,820,3.338,821,3.338,822,3.338,823,3.338,824,3.338,825,3.338,826,3.338,827,3.338,828,3.338,829,3.338,830,3.338,831,3.338,832,3.338,833,3.338,834,3.338,835,3.338,836,3.338,837,3.338,838,3.338,839,3.338,840,3.338,841,3.338,842,3.338,843,3.338]],["title/modules.html",[86,2.45]],["body/modules.html",[15,0.03,41,2.3,50,0.03,51,0.03,85,2.803,86,2.803,137,2.532,354,4.08,844,4.908,845,5.652,846,4.908,847,4.08]],["title/overview.html",[848,3.567]],["body/overview.html",[2,3.009,15,0.034,41,2.606,44,1.494,50,0.028,51,0.028,53,2.195,54,1.958,63,1.785,71,1.988,74,1.988,76,1.988,78,1.988,80,1.988,84,2.386,85,3.676,86,2.386,87,2.663,88,3.474,89,3.474,90,3.474,91,3.474,92,3.474,93,3.474,94,3.474,95,4.27,96,3.474,97,2.663,141,2.155,308,2.155,738,4.27,751,3.474,848,3.474,849,5.136]],["title/properties.html",[10,1.042,656,1.913]],["body/properties.html",[10,1.369,15,0.032,50,0.031,51,0.031,850,4.987,851,4.987]],["title/miscellaneous/typealiases.html",[677,1.37,852,3.798]],["body/miscellaneous/typealiases.html",[6,1.1,7,0.44,9,0.581,14,0.904,15,0.03,50,0.03,51,0.03,232,2.617,309,3.462,318,4.022,634,3.996,638,4.642,677,2.479,853,4.806,854,4.806,855,4.806]],["title/miscellaneous/variables.html",[677,1.37,856,3.157]],["body/miscellaneous/variables.html",[6,0.362,7,0.145,9,0.191,14,0.728,15,0.035,23,1.879,25,1.556,27,1.426,33,1.856,44,1.699,45,2.031,46,2.227,49,2.227,50,0.014,51,0.014,72,0.676,81,0.741,139,0.565,157,1.139,158,2.661,162,1.008,193,1.664,201,1.851,216,2.371,224,0.702,234,1.983,255,2.711,256,2.714,257,2.714,258,2.11,259,2.11,312,1.315,391,1.139,445,0.676,495,1.139,575,2.675,577,1.139,605,1.139,639,1.315,640,2.675,641,2.125,642,2.675,651,1.315,652,3.072,653,1.315,677,0.816,847,2.675,856,1.315,857,3.217,858,3.217,859,3.217,860,3.217,861,1.581,862,1.581,863,2.556,864,2.556,865,1.581,866,1.581,867,1.581,868,1.581,869,6.334,870,6.334,871,6.334,872,6.334,873,1.581,874,1.581,875,1.581,876,1.581,877,1.581,878,1.581,879,1.581,880,1.581,881,1.581,882,1.581,883,1.581,884,1.581,885,1.581,886,1.581,887,1.581,888,1.581,889,1.581,890,1.581,891,1.581,892,1.581,893,1.581,894,5.043,895,1.581,896,4.754,897,1.581,898,4.754,899,1.581,900,1.581,901,1.581,902,1.581,903,1.581,904,1.581,905,1.581,906,1.581,907,1.581,908,1.581,909,3.217,910,3.217,911,1.581,912,1.581,913,1.581,914,1.581,915,1.581,916,1.581,917,1.581,918,1.581,919,1.581,920,1.581,921,1.581,922,1.581,923,1.581,924,1.581,925,1.581,926,1.581,927,1.581,928,1.581,929,1.581,930,1.581,931,1.581,932,1.581,933,1.581,934,1.581,935,1.581,936,1.581,937,1.581,938,1.581,939,1.581,940,1.581,941,1.581,942,1.581,943,1.581,944,1.581,945,1.581,946,1.581,947,1.581,948,1.581,949,1.581,950,1.581,951,1.581,952,1.581,953,1.581,954,1.581,955,1.581,956,1.581,957,1.581,958,1.581,959,1.581,960,1.581,961,1.581,962,1.581,963,1.581,964,1.581,965,1.581,966,1.581,967,1.581,968,1.581]]],"invertedIndex":[["",{"_index":15,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/functions.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"properties.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["0",{"_index":247,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{},"coverage.html":{}}}],["0.0.6",{"_index":667,"title":{},"body":{"dependencies.html":{}}}],["0.14.3",{"_index":676,"title":{},"body":{"dependencies.html":{}}}],["0/1",{"_index":633,"title":{},"body":{"coverage.html":{}}}],["0/10",{"_index":645,"title":{},"body":{"coverage.html":{}}}],["0/13",{"_index":650,"title":{},"body":{"coverage.html":{}}}],["0/16",{"_index":649,"title":{},"body":{"coverage.html":{}}}],["0/18",{"_index":648,"title":{},"body":{"coverage.html":{}}}],["0/2",{"_index":632,"title":{},"body":{"coverage.html":{}}}],["0/3",{"_index":631,"title":{},"body":{"coverage.html":{}}}],["0/4",{"_index":643,"title":{},"body":{"coverage.html":{}}}],["0/5",{"_index":647,"title":{},"body":{"coverage.html":{}}}],["0/8",{"_index":646,"title":{},"body":{"coverage.html":{}}}],["0/9",{"_index":644,"title":{},"body":{"coverage.html":{}}}],["000",{"_index":194,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/StepCounterComponent.html":{}}}],["000000",{"_index":548,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["000000000000",{"_index":872,"title":{},"body":{"miscellaneous/variables.html":{}}}],["0451",{"_index":869,"title":{},"body":{"miscellaneous/variables.html":{}}}],["1",{"_index":403,"title":{},"body":{"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["1.35.0",{"_index":669,"title":{},"body":{"dependencies.html":{}}}],["100",{"_index":582,"title":{},"body":{"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["10px",{"_index":411,"title":{},"body":{"components/DashboardComponent.html":{}}}],["112px",{"_index":579,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["11em",{"_index":581,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["120px",{"_index":181,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/StepCounterComponent.html":{}}}],["15px",{"_index":408,"title":{},"body":{"components/DashboardComponent.html":{}}}],["16px",{"_index":497,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["17",{"_index":550,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["17.1.0",{"_index":851,"title":{},"body":{"properties.html":{}}}],["17.1.2",{"_index":660,"title":{},"body":{"dependencies.html":{}}}],["17.1.3",{"_index":658,"title":{},"body":{"dependencies.html":{}}}],["2",{"_index":738,"title":{},"body":{"index.html":{},"overview.html":{}}}],["2.3.0",{"_index":674,"title":{},"body":{"dependencies.html":{}}}],["2.a",{"_index":694,"title":{},"body":{"index.html":{}}}],["2.b",{"_index":713,"title":{},"body":{"index.html":{}}}],["2017",{"_index":780,"title":{},"body":{"index.html":{},"license.html":{}}}],["20px",{"_index":406,"title":{},"body":{"components/DashboardComponent.html":{}}}],["21/31",{"_index":636,"title":{},"body":{"coverage.html":{}}}],["214px",{"_index":580,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["222px",{"_index":179,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["24px",{"_index":184,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["255px",{"_index":192,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["29.0.5",{"_index":672,"title":{},"body":{"dependencies.html":{}}}],["3",{"_index":741,"title":{},"body":{"index.html":{}}}],["32px",{"_index":413,"title":{},"body":{"components/DashboardComponent.html":{}}}],["4",{"_index":746,"title":{},"body":{"index.html":{}}}],["4000",{"_index":870,"title":{},"body":{"miscellaneous/variables.html":{}}}],["40px",{"_index":395,"title":{},"body":{"components/DashboardComponent.html":{}}}],["4933",{"_index":527,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["5",{"_index":751,"title":{},"body":{"index.html":{},"overview.html":{}}}],["52ffa9740042",{"_index":529,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["5em",{"_index":175,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/StepCounterComponent.html":{}}}],["5px",{"_index":189,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{}}}],["6",{"_index":849,"title":{},"body":{"overview.html":{}}}],["67",{"_index":635,"title":{},"body":{"coverage.html":{}}}],["7.8.0",{"_index":668,"title":{},"body":{"dependencies.html":{}}}],["700px",{"_index":397,"title":{},"body":{"components/DashboardComponent.html":{}}}],["90px",{"_index":187,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["9b10",{"_index":528,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["9b35",{"_index":526,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["__register__",{"_index":940,"title":{},"body":{"miscellaneous/variables.html":{}}}],["_config",{"_index":311,"title":{},"body":{"injectables/BleService.html":{}}}],["above",{"_index":812,"title":{},"body":{"index.html":{},"license.html":{}}}],["absolute",{"_index":177,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["abstract",{"_index":723,"title":{},"body":{"index.html":{}}}],["accelerometer",{"_index":911,"title":{},"body":{"miscellaneous/variables.html":{}}}],["acceptalldevices",{"_index":735,"title":{},"body":{"index.html":{}}}],["accessors",{"_index":212,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["action",{"_index":837,"title":{},"body":{"index.html":{},"license.html":{}}}],["actual_component",{"_index":83,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["addeventlistener",{"_index":419,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["addeventlistener(type",{"_index":428,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["address",{"_index":943,"title":{},"body":{"miscellaneous/variables.html":{}}}],["advanced",{"_index":714,"title":{},"body":{"index.html":{}}}],["alias",{"_index":637,"title":{},"body":{"coverage.html":{}}}],["aliases",{"_index":853,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["align",{"_index":171,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["and/or",{"_index":804,"title":{},"body":{"index.html":{},"license.html":{}}}],["angular",{"_index":384,"title":{},"body":{"components/DashboardComponent.html":{},"index.html":{}}}],["angular/animations",{"_index":657,"title":{},"body":{"dependencies.html":{}}}],["angular/cdk",{"_index":659,"title":{},"body":{"dependencies.html":{}}}],["angular/cdk/layout",{"_index":100,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/common",{"_index":22,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{},"dependencies.html":{}}}],["angular/compiler",{"_index":661,"title":{},"body":{"dependencies.html":{}}}],["angular/core",{"_index":20,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"dependencies.html":{},"index.html":{}}}],["angular/forms",{"_index":662,"title":{},"body":{"dependencies.html":{}}}],["angular/material",{"_index":663,"title":{},"body":{"dependencies.html":{}}}],["angular/material/button",{"_index":102,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/material/card",{"_index":107,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/material/expansion",{"_index":109,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/material/grid",{"_index":111,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/material/icon",{"_index":114,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/material/list",{"_index":116,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/material/menu",{"_index":118,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/material/progress",{"_index":120,"title":{},"body":{"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{}}}],["angular/material/snack",{"_index":123,"title":{},"body":{"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["angular/material/toolbar",{"_index":126,"title":{},"body":{"modules/AppModule.html":{}}}],["angular/platform",{"_index":104,"title":{},"body":{"modules/AppModule.html":{},"dependencies.html":{}}}],["angular/router",{"_index":665,"title":{},"body":{"dependencies.html":{}}}],["annotated",{"_index":700,"title":{},"body":{"index.html":{}}}],["any)[key].service",{"_index":866,"title":{},"body":{"miscellaneous/variables.html":{}}}],["api",{"_index":752,"title":{},"body":{"index.html":{}}}],["app",{"_index":768,"title":{},"body":{"index.html":{}}}],["app.component",{"_index":129,"title":{},"body":{"modules/AppModule.html":{}}}],["appcomponent",{"_index":53,"title":{"components/AppComponent.html":{}},"body":{"components/AppComponent.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{},"overview.html":{}}}],["appmodule",{"_index":85,"title":{"modules/AppModule.html":{}},"body":{"modules/AppModule.html":{},"index.html":{},"modules.html":{},"overview.html":{}}}],["apppage",{"_index":140,"title":{"classes/AppPage.html":{}},"body":{"classes/AppPage.html":{},"coverage.html":{}}}],["args",{"_index":365,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["arising",{"_index":841,"title":{},"body":{"index.html":{},"license.html":{}}}],["ask",{"_index":747,"title":{},"body":{"index.html":{}}}],["associated",{"_index":791,"title":{},"body":{"index.html":{},"license.html":{}}}],["authors",{"_index":830,"title":{},"body":{"index.html":{},"license.html":{}}}],["auto",{"_index":399,"title":{},"body":{"components/DashboardComponent.html":{}}}],["available",{"_index":847,"title":{},"body":{"modules.html":{},"miscellaneous/variables.html":{}}}],["awboptions",{"_index":1,"title":{"interfaces/AWBOptions.html":{}},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/functions.html":{}}}],["b",{"_index":256,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"miscellaneous/variables.html":{}}}],["b000",{"_index":871,"title":{},"body":{"miscellaneous/variables.html":{}}}],["bar",{"_index":124,"title":{},"body":{"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["barometer",{"_index":904,"title":{},"body":{"miscellaneous/variables.html":{}}}],["battery",{"_index":72,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["battery_charging_full",{"_index":195,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["battery_level",{"_index":272,"title":{},"body":{"components/BatteryLevelComponent.html":{},"index.html":{}}}],["battery_service",{"_index":270,"title":{},"body":{"components/BatteryLevelComponent.html":{},"index.html":{}}}],["batterylevelcomponent",{"_index":71,"title":{"components/BatteryLevelComponent.html":{}},"body":{"components/AppComponent.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{},"overview.html":{}}}],["batterylevelservice",{"_index":702,"title":{},"body":{"index.html":{}}}],["batterylevelservice.gatt_characteristic_battery_level",{"_index":745,"title":{},"body":{"index.html":{}}}],["batterylevelservice.gatt_primary_service",{"_index":737,"title":{},"body":{"index.html":{}}}],["ble",{"_index":60,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["ble.service",{"_index":253,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["blecore",{"_index":255,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["bleservice",{"_index":216,"title":{"injectables/BleService.html":{}},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["bleservice(b",{"_index":259,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"miscellaneous/variables.html":{}}}],["block",{"_index":182,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["blog",{"_index":766,"title":{},"body":{"index.html":{}}}],["bluetooth",{"_index":128,"title":{},"body":{"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"dependencies.html":{},"index.html":{}}}],["bluetooth.service",{"_index":24,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["bluetooth/src/lib/bluetooth.module.ts",{"_index":8,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/functions.html":{}}}],["bluetooth/src/lib/bluetooth.module.ts:32",{"_index":626,"title":{},"body":{"modules/WebBluetoothModule.html":{}}}],["bluetooth/src/lib/bluetooth.service.ts",{"_index":634,"title":{},"body":{"coverage.html":{},"miscellaneous/typealiases.html":{}}}],["bluetooth/src/lib/lang/uuids/ti",{"_index":639,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["bluetooth/src/lib/logger.service.ts",{"_index":361,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"coverage.html":{}}}],["bluetooth/src/lib/logger.service.ts:13",{"_index":367,"title":{},"body":{"injectables/ConsoleLoggerService.html":{}}}],["bluetooth/src/lib/logger.service.ts:16",{"_index":364,"title":{},"body":{"injectables/ConsoleLoggerService.html":{}}}],["bluetooth/src/lib/logger.service.ts:19",{"_index":369,"title":{},"body":{"injectables/ConsoleLoggerService.html":{}}}],["bluetooth/src/lib/logger.service.ts:28",{"_index":569,"title":{},"body":{"injectables/NoLoggerService.html":{}}}],["bluetooth/src/lib/logger.service.ts:29",{"_index":568,"title":{},"body":{"injectables/NoLoggerService.html":{}}}],["bluetooth/src/lib/logger.service.ts:30",{"_index":570,"title":{},"body":{"injectables/NoLoggerService.html":{}}}],["bluetooth/src/lib/logger.service.ts:4",{"_index":566,"title":{},"body":{"interfaces/Logger.html":{}}}],["bluetooth/src/lib/logger.service.ts:5",{"_index":565,"title":{},"body":{"interfaces/Logger.html":{}}}],["bluetooth/src/lib/logger.service.ts:6",{"_index":567,"title":{},"body":{"interfaces/Logger.html":{}}}],["bluetooth/src/lib/platform/browser.ts",{"_index":345,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{},"coverage.html":{}}}],["bluetooth/src/lib/platform/browser.ts:14",{"_index":350,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["bluetooth/src/lib/platform/browser.ts:5",{"_index":347,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["bluetooth/src/lib/platform/server.ts",{"_index":572,"title":{},"body":{"injectables/ServerWebBluetooth.html":{},"coverage.html":{}}}],["bluetooth/src/lib/platform/server.ts:5",{"_index":573,"title":{},"body":{"injectables/ServerWebBluetooth.html":{}}}],["bluetooth/src/lib/test.utils.ts",{"_index":415,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"coverage.html":{}}}],["bluetooth/src/lib/test.utils.ts:103",{"_index":482,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth/src/lib/test.utils.ts:12",{"_index":422,"title":{},"body":{"classes/FakeBluetoothDevice.html":{}}}],["bluetooth/src/lib/test.utils.ts:14",{"_index":425,"title":{},"body":{"classes/FakeBluetoothDevice.html":{}}}],["bluetooth/src/lib/test.utils.ts:17",{"_index":431,"title":{},"body":{"classes/FakeBluetoothDevice.html":{}}}],["bluetooth/src/lib/test.utils.ts:24",{"_index":433,"title":{},"body":{"classes/FakeBluetoothDevice.html":{}}}],["bluetooth/src/lib/test.utils.ts:29",{"_index":432,"title":{},"body":{"classes/FakeBluetoothDevice.html":{}}}],["bluetooth/src/lib/test.utils.ts:39",{"_index":486,"title":{},"body":{"classes/FakeBluetoothRemoteGATTServer.html":{}}}],["bluetooth/src/lib/test.utils.ts:41",{"_index":487,"title":{},"body":{"classes/FakeBluetoothRemoteGATTServer.html":{}}}],["bluetooth/src/lib/test.utils.ts:45",{"_index":488,"title":{},"body":{"classes/FakeBluetoothRemoteGATTServer.html":{}}}],["bluetooth/src/lib/test.utils.ts:50",{"_index":490,"title":{},"body":{"classes/FakeBluetoothRemoteGATTServer.html":{}}}],["bluetooth/src/lib/test.utils.ts:54",{"_index":489,"title":{},"body":{"classes/FakeBluetoothRemoteGATTServer.html":{}}}],["bluetooth/src/lib/test.utils.ts:60",{"_index":492,"title":{},"body":{"classes/FakeBluetoothRemoteGATTService.html":{}}}],["bluetooth/src/lib/test.utils.ts:61",{"_index":493,"title":{},"body":{"classes/FakeBluetoothRemoteGATTService.html":{}}}],["bluetooth/src/lib/test.utils.ts:65",{"_index":494,"title":{},"body":{"classes/FakeBluetoothRemoteGATTService.html":{}}}],["bluetooth/src/lib/test.utils.ts:7",{"_index":424,"title":{},"body":{"classes/FakeBluetoothDevice.html":{}}}],["bluetooth/src/lib/test.utils.ts:71",{"_index":479,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth/src/lib/test.utils.ts:72",{"_index":478,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth/src/lib/test.utils.ts:73",{"_index":476,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth/src/lib/test.utils.ts:74",{"_index":477,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth/src/lib/test.utils.ts:78",{"_index":474,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth/src/lib/test.utils.ts:8",{"_index":427,"title":{},"body":{"classes/FakeBluetoothDevice.html":{}}}],["bluetooth/src/lib/test.utils.ts:86",{"_index":483,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth/src/lib/test.utils.ts:90",{"_index":480,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth/src/lib/test.utils.ts:97",{"_index":481,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["bluetooth_disabled",{"_index":389,"title":{},"body":{"components/DashboardComponent.html":{}}}],["bluetooth_searching",{"_index":387,"title":{},"body":{"components/DashboardComponent.html":{}}}],["bluetoothcharacteristicproperties",{"_index":462,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["bluetoothcharacteristicuuid",{"_index":458,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["bluetoothcore",{"_index":23,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["bluetoothcore(b",{"_index":258,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"miscellaneous/variables.html":{}}}],["bluetoothremotegattcharacteristic",{"_index":749,"title":{},"body":{"index.html":{}}}],["bluetoothremotegattserver",{"_index":423,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"index.html":{}}}],["bluetoothremotegattservice",{"_index":743,"title":{},"body":{"index.html":{}}}],["bluetoothserviceuuid",{"_index":451,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["boolean",{"_index":13,"title":{},"body":{"interfaces/AWBOptions.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"modules/WebBluetoothModule.html":{}}}],["bootstrap",{"_index":89,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["bordervisible",{"_index":546,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["bottom",{"_index":191,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{}}}],["browse",{"_index":845,"title":{},"body":{"modules.html":{}}}],["browser",{"_index":137,"title":{},"body":{"modules/AppModule.html":{},"classes/AppPage.html":{},"injectables/BrowserWebBluetooth.html":{},"dependencies.html":{},"index.html":{},"modules.html":{}}}],["browser's",{"_index":693,"title":{},"body":{"index.html":{}}}],["browser.get(browser.baseurl",{"_index":152,"title":{},"body":{"classes/AppPage.html":{}}}],["browser/animations",{"_index":105,"title":{},"body":{"modules/AppModule.html":{}}}],["browseranimationsmodule",{"_index":103,"title":{},"body":{"modules/AppModule.html":{}}}],["browsermodule",{"_index":136,"title":{},"body":{"modules/AppModule.html":{}}}],["browserwebbluetooth",{"_index":25,"title":{"injectables/BrowserWebBluetooth.html":{}},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"injectables/BrowserWebBluetooth.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["button",{"_index":410,"title":{},"body":{"components/DashboardComponent.html":{}}}],["c",{"_index":779,"title":{},"body":{"index.html":{},"license.html":{}}}],["call",{"_index":703,"title":{},"body":{"index.html":{}}}],["can't",{"_index":722,"title":{},"body":{"index.html":{}}}],["canvas",{"_index":496,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["card",{"_index":407,"title":{},"body":{"components/DashboardComponent.html":{}}}],["cc2650",{"_index":910,"title":{},"body":{"miscellaneous/variables.html":{}}}],["center",{"_index":167,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["changevalue",{"_index":473,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["changevalue(value",{"_index":471,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["characteristic",{"_index":271,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["characteristics",{"_index":455,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"index.html":{}}}],["characteristicvaluechanged",{"_index":465,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["charge",{"_index":786,"title":{},"body":{"index.html":{},"license.html":{}}}],["chart",{"_index":498,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["chartref",{"_index":499,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["checkout",{"_index":764,"title":{},"body":{"index.html":{}}}],["chegham",{"_index":782,"title":{},"body":{"index.html":{},"license.html":{}}}],["claim",{"_index":833,"title":{},"body":{"index.html":{},"license.html":{}}}],["class",{"_index":40,"title":{"classes/AppPage.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"index.html":{}}}],["classes",{"_index":141,"title":{},"body":{"classes/AppPage.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"overview.html":{}}}],["clear",{"_index":420,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"index.html":{}}}],["close",{"_index":303,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["cluster_appmodule",{"_index":91,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["cluster_appmodule_bootstrap",{"_index":93,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["cluster_appmodule_declarations",{"_index":94,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["cluster_appmodule_imports",{"_index":92,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["color",{"_index":196,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["command",{"_index":761,"title":{},"body":{"index.html":{}}}],["commonmodule",{"_index":21,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["component",{"_index":52,"title":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{}}}],["component_template",{"_index":68,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["components",{"_index":54,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"overview.html":{}}}],["conditions",{"_index":811,"title":{},"body":{"index.html":{},"license.html":{}}}],["config",{"_index":312,"title":{},"body":{"injectables/BleService.html":{},"miscellaneous/variables.html":{}}}],["config(options",{"_index":317,"title":{},"body":{"injectables/BleService.html":{}}}],["configuration",{"_index":896,"title":{},"body":{"miscellaneous/variables.html":{}}}],["connect",{"_index":388,"title":{},"body":{"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["connected",{"_index":286,"title":{},"body":{"components/BatteryLevelComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"index.html":{}}}],["connection",{"_index":842,"title":{},"body":{"index.html":{},"license.html":{}}}],["console",{"_index":198,"title":{},"body":{"components/BatteryLevelComponent.html":{},"index.html":{}}}],["console.error.apply(console",{"_index":375,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["console.log('getting",{"_index":712,"title":{},"body":{"index.html":{}}}],["console.log('reading",{"_index":560,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["console.log(value",{"_index":338,"title":{},"body":{"injectables/BleService.html":{}}}],["console.log.apply(console",{"_index":374,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["console.warn.apply(console",{"_index":376,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["consoleloggerservice",{"_index":27,"title":{"injectables/ConsoleLoggerService.html":{}},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"injectables/ConsoleLoggerService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["consoleloggerserviceconfig",{"_index":48,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/functions.html":{}}}],["consoleloggerserviceconfig(options",{"_index":34,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{},"miscellaneous/functions.html":{}}}],["const",{"_index":254,"title":{},"body":{"components/BatteryLevelComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["constructor",{"_index":214,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["constructor(ble",{"_index":315,"title":{},"body":{"injectables/BleService.html":{}}}],["constructor(device",{"_index":485,"title":{},"body":{"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["constructor(id",{"_index":421,"title":{},"body":{"classes/FakeBluetoothDevice.html":{}}}],["constructor(properties",{"_index":466,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["constructor(public",{"_index":333,"title":{},"body":{"injectables/BleService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["constructor(service",{"_index":215,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["container",{"_index":405,"title":{},"body":{"components/DashboardComponent.html":{}}}],["content",{"_index":154,"title":{},"body":{"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{}}}],["contract",{"_index":838,"title":{},"body":{"index.html":{},"license.html":{}}}],["contributions",{"_index":770,"title":{},"body":{"index.html":{}}}],["control",{"_index":947,"title":{},"body":{"miscellaneous/variables.html":{}}}],["copies",{"_index":806,"title":{},"body":{"index.html":{},"license.html":{}}}],["copy",{"_index":789,"title":{},"body":{"index.html":{},"license.html":{}}}],["copyright",{"_index":778,"title":{},"body":{"index.html":{},"license.html":{}}}],["correctly",{"_index":689,"title":{},"body":{"index.html":{}}}],["count",{"_index":598,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["counter",{"_index":604,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["coverage",{"_index":627,"title":{"coverage.html":{}},"body":{"coverage.html":{}}}],["current_used_parameters",{"_index":949,"title":{},"body":{"miscellaneous/variables.html":{}}}],["d",{"_index":298,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["damages",{"_index":834,"title":{},"body":{"index.html":{},"license.html":{}}}],["dashboard",{"_index":378,"title":{},"body":{"components/DashboardComponent.html":{}}}],["dashboard'},{'name",{"_index":75,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["dashboard.component.css",{"_index":380,"title":{},"body":{"components/DashboardComponent.html":{}}}],["dashboard.component.html",{"_index":382,"title":{},"body":{"components/DashboardComponent.html":{}}}],["dashboard/dashboard.component",{"_index":132,"title":{},"body":{"modules/AppModule.html":{}}}],["dashboardcomponent",{"_index":74,"title":{"components/DashboardComponent.html":{}},"body":{"components/AppComponent.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{},"overview.html":{}}}],["data",{"_index":894,"title":{},"body":{"miscellaneous/variables.html":{}}}],["dataview",{"_index":268,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["deal",{"_index":793,"title":{},"body":{"index.html":{},"license.html":{}}}],["dealings",{"_index":843,"title":{},"body":{"index.html":{},"license.html":{}}}],["decimal",{"_index":623,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["declarations",{"_index":88,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["decoder",{"_index":267,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["decoder(value",{"_index":328,"title":{},"body":{"injectables/BleService.html":{}}}],["decorators",{"_index":513,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["default",{"_index":234,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"miscellaneous/variables.html":{}}}],["defined",{"_index":146,"title":{},"body":{"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{}}}],["demo",{"_index":385,"title":{},"body":{"components/DashboardComponent.html":{}}}],["dependencies",{"_index":87,"title":{"dependencies.html":{}},"body":{"modules/AppModule.html":{},"dependencies.html":{},"overview.html":{}}}],["deps",{"_index":49,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"miscellaneous/variables.html":{}}}],["details",{"_index":359,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["determinate",{"_index":242,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["dev.to",{"_index":767,"title":{},"body":{"index.html":{}}}],["developer",{"_index":725,"title":{},"body":{"index.html":{}}}],["device",{"_index":213,"title":{},"body":{"components/BatteryLevelComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["device.gatt",{"_index":447,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["device.name",{"_index":390,"title":{},"body":{"components/DashboardComponent.html":{}}}],["device_id",{"_index":945,"title":{},"body":{"miscellaneous/variables.html":{}}}],["device_information",{"_index":867,"title":{},"body":{"miscellaneous/variables.html":{}}}],["devicesubscription",{"_index":199,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["direction",{"_index":168,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["directions_walk",{"_index":584,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["directive",{"_index":66,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["directives",{"_index":82,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["disconnect",{"_index":205,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["disconnect_request",{"_index":953,"title":{},"body":{"miscellaneous/variables.html":{}}}],["disconnectdevice",{"_index":313,"title":{},"body":{"injectables/BleService.html":{},"index.html":{}}}],["disconnected",{"_index":287,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["discover",{"_index":731,"title":{},"body":{"index.html":{}}}],["discovery",{"_index":733,"title":{},"body":{"index.html":{}}}],["display",{"_index":164,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["distribute",{"_index":802,"title":{},"body":{"index.html":{},"license.html":{}}}],["documentation",{"_index":628,"title":{},"body":{"coverage.html":{},"index.html":{},"license.html":{}}}],["dom",{"_index":55,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["dynamic",{"_index":664,"title":{},"body":{"dependencies.html":{}}}],["e2e/src/app.po.ts",{"_index":142,"title":{},"body":{"classes/AppPage.html":{},"coverage.html":{}}}],["e2e/src/app.po.ts:4",{"_index":150,"title":{},"body":{"classes/AppPage.html":{}}}],["e2e/src/app.po.ts:8",{"_index":147,"title":{},"body":{"classes/AppPage.html":{}}}],["each",{"_index":264,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["easiest",{"_index":697,"title":{},"body":{"index.html":{}}}],["ef680200",{"_index":525,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["ef680201",{"_index":621,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["ef680203",{"_index":530,"title":{},"body":{"components/HumidityComponent.html":{}}}],["ef680400",{"_index":602,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["ef680405",{"_index":603,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["element",{"_index":65,"title":{},"body":{"components/AppComponent.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["element(by.css('app",{"_index":153,"title":{},"body":{"classes/AppPage.html":{}}}],["elementref",{"_index":512,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["elsewhere",{"_index":724,"title":{},"body":{"index.html":{}}}],["emites",{"_index":728,"title":{},"body":{"index.html":{}}}],["emitted",{"_index":706,"title":{},"body":{"index.html":{}}}],["enable",{"_index":691,"title":{},"body":{"index.html":{}}}],["enabletracing",{"_index":12,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/AppModule.html":{},"modules/WebBluetoothModule.html":{},"index.html":{}}}],["environment",{"_index":652,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["err",{"_index":294,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["error",{"_index":226,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/ConsoleLoggerService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["error('your",{"_index":353,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["error(...args",{"_index":363,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["error(args",{"_index":372,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["event",{"_index":440,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"index.html":{},"license.html":{}}}],["eventlistener",{"_index":430,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["example",{"_index":684,"title":{},"body":{"index.html":{}}}],["export",{"_index":30,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"index.html":{}}}],["exports",{"_index":90,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["express",{"_index":821,"title":{},"body":{"index.html":{},"license.html":{}}}],["f000180a",{"_index":868,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000180f",{"_index":891,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a19",{"_index":892,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a23",{"_index":874,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a24",{"_index":876,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a25",{"_index":878,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a26",{"_index":880,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a27",{"_index":882,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a28",{"_index":884,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a29",{"_index":886,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a2a",{"_index":888,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f0002a50",{"_index":890,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa00",{"_index":893,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa01",{"_index":895,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa02",{"_index":897,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa03",{"_index":899,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa10",{"_index":912,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa11",{"_index":913,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa12",{"_index":914,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa13",{"_index":915,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa20",{"_index":900,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa21",{"_index":901,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa22",{"_index":902,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa23",{"_index":903,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa30",{"_index":917,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa31",{"_index":918,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa32",{"_index":919,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa33",{"_index":920,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa40",{"_index":905,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa41",{"_index":906,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa42",{"_index":907,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa44",{"_index":908,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa50",{"_index":922,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa51",{"_index":923,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa52",{"_index":924,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa53",{"_index":925,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa64",{"_index":966,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa65",{"_index":967,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa66",{"_index":968,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa70",{"_index":932,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa71",{"_index":933,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa72",{"_index":934,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa73",{"_index":935,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa80",{"_index":927,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa81",{"_index":928,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa82",{"_index":929,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000aa83",{"_index":930,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ac00",{"_index":941,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ac01",{"_index":942,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ac02",{"_index":944,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ac03",{"_index":946,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ccc0",{"_index":948,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ccc1",{"_index":950,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ccc2",{"_index":952,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ccc3",{"_index":954,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ffc0",{"_index":956,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ffc1",{"_index":958,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ffc2",{"_index":960,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ffc3",{"_index":962,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ffc4",{"_index":964,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ffe0",{"_index":937,"title":{},"body":{"miscellaneous/variables.html":{}}}],["f000ffe1",{"_index":939,"title":{},"body":{"miscellaneous/variables.html":{}}}],["fakebluetoothdevice",{"_index":414,"title":{"classes/FakeBluetoothDevice.html":{}},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"coverage.html":{}}}],["fakebluetoothremotegattcharacteristic",{"_index":460,"title":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"coverage.html":{}}}],["fakebluetoothremotegattserver",{"_index":444,"title":{"classes/FakeBluetoothRemoteGATTServer.html":{}},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"coverage.html":{}}}],["fakebluetoothremotegattservice",{"_index":454,"title":{"classes/FakeBluetoothRemoteGATTService.html":{}},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"coverage.html":{}}}],["false",{"_index":445,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["few",{"_index":772,"title":{},"body":{"index.html":{}}}],["ff0000",{"_index":554,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["ffffff",{"_index":543,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["file",{"_index":5,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{}}}],["files",{"_index":792,"title":{},"body":{"index.html":{},"license.html":{}}}],["fillstyle",{"_index":542,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["firmware_rev",{"_index":879,"title":{},"body":{"miscellaneous/variables.html":{}}}],["fitness",{"_index":826,"title":{},"body":{"index.html":{},"license.html":{}}}],["flex",{"_index":165,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["following",{"_index":760,"title":{},"body":{"index.html":{},"license.html":{}}}],["font",{"_index":173,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/StepCounterComponent.html":{}}}],["fontsize",{"_index":549,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["forroot",{"_index":625,"title":{},"body":{"modules/WebBluetoothModule.html":{}}}],["forroot(options",{"_index":43,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["found",{"_index":753,"title":{},"body":{"index.html":{}}}],["free",{"_index":726,"title":{},"body":{"index.html":{},"license.html":{}}}],["full",{"_index":765,"title":{},"body":{"index.html":{}}}],["function",{"_index":31,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{}}}],["functions",{"_index":678,"title":{"miscellaneous/functions.html":{}},"body":{"miscellaneous/functions.html":{}}}],["furnished",{"_index":809,"title":{},"body":{"index.html":{},"license.html":{}}}],["gatt",{"_index":416,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"index.html":{}}}],["gatt_characteristic_battery_level",{"_index":716,"title":{},"body":{"index.html":{}}}],["gatt_primary_service",{"_index":717,"title":{},"body":{"index.html":{}}}],["gattserverdisconnected",{"_index":426,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["getcharacteristic",{"_index":491,"title":{},"body":{"classes/FakeBluetoothRemoteGATTService.html":{}}}],["getcharacteristic(characteristic",{"_index":457,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["getdevice",{"_index":250,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["getdevicestatus",{"_index":206,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["getprimaryservice",{"_index":484,"title":{},"body":{"classes/FakeBluetoothRemoteGATTServer.html":{}}}],["getprimaryservice(service",{"_index":450,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["getting",{"_index":680,"title":{"index.html":{},"license.html":{}},"body":{"index.html":{}}}],["gettitletext",{"_index":144,"title":{},"body":{"classes/AppPage.html":{}}}],["given",{"_index":707,"title":{},"body":{"index.html":{}}}],["granted",{"_index":785,"title":{},"body":{"index.html":{},"license.html":{}}}],["graph",{"_index":846,"title":{},"body":{"modules.html":{}}}],["grid",{"_index":404,"title":{},"body":{"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["gyroscope",{"_index":921,"title":{},"body":{"miscellaneous/variables.html":{}}}],["hardware_rev",{"_index":881,"title":{},"body":{"miscellaneous/variables.html":{}}}],["haserror",{"_index":207,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["haserror(error",{"_index":223,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["height",{"_index":583,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["help",{"_index":775,"title":{},"body":{"index.html":{}}}],["here",{"_index":699,"title":{},"body":{"index.html":{}}}],["hereby",{"_index":784,"title":{},"body":{"index.html":{},"license.html":{}}}],["holders",{"_index":831,"title":{},"body":{"index.html":{},"license.html":{}}}],["host",{"_index":163,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["html",{"_index":64,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["http://caniuse.com/#search=bluetooth",{"_index":357,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["https://manekinekko.github.io/angular",{"_index":754,"title":{},"body":{"index.html":{}}}],["humidity",{"_index":391,"title":{},"body":{"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"miscellaneous/variables.html":{}}}],["humidity'},{'name",{"_index":77,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["humiditycomponent",{"_index":76,"title":{"components/HumidityComponent.html":{}},"body":{"components/AppComponent.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{},"overview.html":{}}}],["icon",{"_index":190,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["id",{"_index":417,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["identifier",{"_index":629,"title":{},"body":{"coverage.html":{}}}],["ieee11073",{"_index":887,"title":{},"body":{"miscellaneous/variables.html":{}}}],["image_block_request",{"_index":959,"title":{},"body":{"miscellaneous/variables.html":{}}}],["image_count",{"_index":961,"title":{},"body":{"miscellaneous/variables.html":{}}}],["image_notify",{"_index":957,"title":{},"body":{"miscellaneous/variables.html":{}}}],["image_status",{"_index":963,"title":{},"body":{"miscellaneous/variables.html":{}}}],["img",{"_index":412,"title":{},"body":{"components/DashboardComponent.html":{}}}],["implements",{"_index":159,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/ConsoleLoggerService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["implied",{"_index":822,"title":{},"body":{"index.html":{},"license.html":{}}}],["import",{"_index":16,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"index.html":{}}}],["imports",{"_index":39,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/AppModule.html":{},"modules/WebBluetoothModule.html":{},"index.html":{}}}],["included",{"_index":815,"title":{},"body":{"index.html":{},"license.html":{}}}],["including",{"_index":796,"title":{},"body":{"index.html":{},"license.html":{}}}],["indeterminate",{"_index":284,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["index",{"_index":9,"title":{"index.html":{}},"body":{"interfaces/AWBOptions.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["info",{"_index":3,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{}}}],["initchart",{"_index":501,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["initialvalue",{"_index":464,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["injectable",{"_index":307,"title":{"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{}},"body":{"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"coverage.html":{},"index.html":{}}}],["injectables",{"_index":308,"title":{},"body":{"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"overview.html":{}}}],["injectiontoken",{"_index":19,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["injectiontoken('awboptions",{"_index":38,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["install",{"_index":683,"title":{},"body":{"index.html":{}}}],["installed",{"_index":688,"title":{},"body":{"index.html":{}}}],["instance",{"_index":263,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["integer",{"_index":622,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["interface",{"_index":0,"title":{"interfaces/AWBOptions.html":{},"interfaces/Logger.html":{}},"body":{"interfaces/AWBOptions.html":{},"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{}}}],["interfaces",{"_index":2,"title":{},"body":{"interfaces/AWBOptions.html":{},"interfaces/Logger.html":{},"overview.html":{}}}],["interpolation",{"_index":540,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["io",{"_index":965,"title":{},"body":{"miscellaneous/variables.html":{}}}],["issues",{"_index":774,"title":{},"body":{"index.html":{}}}],["jest",{"_index":671,"title":{},"body":{"dependencies.html":{}}}],["justify",{"_index":166,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["key",{"_index":276,"title":{},"body":{"components/BatteryLevelComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["keypress",{"_index":936,"title":{},"body":{"miscellaneous/variables.html":{}}}],["kind",{"_index":820,"title":{},"body":{"index.html":{},"license.html":{}}}],["l",{"_index":257,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"miscellaneous/variables.html":{}}}],["labels",{"_index":547,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["layoutmodule",{"_index":99,"title":{},"body":{"modules/AppModule.html":{}}}],["left",{"_index":188,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["legend",{"_index":63,"title":{},"body":{"components/AppComponent.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"overview.html":{}}}],["length",{"_index":537,"title":{},"body":{"components/HumidityComponent.html":{}}}],["level",{"_index":162,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["level'},{'name",{"_index":73,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["level.component",{"_index":131,"title":{},"body":{"modules/AppModule.html":{}}}],["level.component.ts",{"_index":158,"title":{},"body":{"components/BatteryLevelComponent.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["level.component.ts:116",{"_index":222,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:131",{"_index":229,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:144",{"_index":233,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:162",{"_index":220,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:168",{"_index":225,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:172",{"_index":227,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:76",{"_index":248,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:77",{"_index":243,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:78",{"_index":236,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:79",{"_index":249,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:80",{"_index":246,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:81",{"_index":240,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:83",{"_index":251,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:85",{"_index":218,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:88",{"_index":244,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:89",{"_index":245,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:90",{"_index":237,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["level.component.ts:99",{"_index":228,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["liability",{"_index":835,"title":{},"body":{"index.html":{},"license.html":{}}}],["liable",{"_index":832,"title":{},"body":{"index.html":{},"license.html":{}}}],["license",{"_index":776,"title":{"license.html":{}},"body":{"index.html":{},"license.html":{}}}],["light",{"_index":931,"title":{},"body":{"miscellaneous/variables.html":{}}}],["limitation",{"_index":797,"title":{},"body":{"index.html":{},"license.html":{}}}],["limited",{"_index":823,"title":{},"body":{"index.html":{},"license.html":{}}}],["line",{"_index":331,"title":{},"body":{"injectables/BleService.html":{},"components/HumidityComponent.html":{}}}],["linewidth",{"_index":553,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["list",{"_index":112,"title":{},"body":{"modules/AppModule.html":{}}}],["listener",{"_index":429,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["listener(mockedevent",{"_index":439,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["listeners",{"_index":418,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["literal",{"_index":232,"title":{},"body":{"components/BatteryLevelComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{},"miscellaneous/typealiases.html":{}}}],["log",{"_index":362,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["log(...args",{"_index":366,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["log(args",{"_index":371,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["logger",{"_index":370,"title":{"interfaces/Logger.html":{}},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"coverage.html":{}}}],["logger.service",{"_index":29,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["logic",{"_index":720,"title":{},"body":{"index.html":{}}}],["logs",{"_index":692,"title":{},"body":{"index.html":{}}}],["magnetometer",{"_index":916,"title":{},"body":{"miscellaneous/variables.html":{}}}],["make",{"_index":260,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["makemetokeninjector",{"_index":37,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/functions.html":{}}}],["manekinekko/angular",{"_index":127,"title":{},"body":{"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["manifacturer",{"_index":885,"title":{},"body":{"miscellaneous/variables.html":{}}}],["map",{"_index":325,"title":{},"body":{"injectables/BleService.html":{},"index.html":{}}}],["map((value",{"_index":708,"title":{},"body":{"index.html":{}}}],["map(this._config.decoder",{"_index":339,"title":{},"body":{"injectables/BleService.html":{}}}],["margin",{"_index":398,"title":{},"body":{"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["mat",{"_index":185,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["matbuttonmodule",{"_index":101,"title":{},"body":{"modules/AppModule.html":{}}}],["matcardmodule",{"_index":106,"title":{},"body":{"modules/AppModule.html":{}}}],["matching",{"_index":51,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/functions.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"properties.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["matexpansionmodule",{"_index":108,"title":{},"body":{"modules/AppModule.html":{}}}],["matgridlistmodule",{"_index":110,"title":{},"body":{"modules/AppModule.html":{}}}],["maticonmodule",{"_index":113,"title":{},"body":{"modules/AppModule.html":{}}}],["matlistmodule",{"_index":115,"title":{},"body":{"modules/AppModule.html":{}}}],["matmenumodule",{"_index":117,"title":{},"body":{"modules/AppModule.html":{}}}],["matprogressspinnermodule",{"_index":119,"title":{},"body":{"modules/AppModule.html":{}}}],["matsnackbar",{"_index":217,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["matsnackbarmodule",{"_index":122,"title":{},"body":{"modules/AppModule.html":{}}}],["mattoolbarmodule",{"_index":125,"title":{},"body":{"modules/AppModule.html":{}}}],["max",{"_index":396,"title":{},"body":{"components/DashboardComponent.html":{},"components/HumidityComponent.html":{}}}],["merchantability",{"_index":825,"title":{},"body":{"index.html":{},"license.html":{}}}],["merge",{"_index":800,"title":{},"body":{"index.html":{},"license.html":{}}}],["mergemap",{"_index":715,"title":{},"body":{"index.html":{}}}],["mergemap((characteristic",{"_index":748,"title":{},"body":{"index.html":{}}}],["mergemap((gatt",{"_index":739,"title":{},"body":{"index.html":{}}}],["mergemap((primaryservice",{"_index":742,"title":{},"body":{"index.html":{}}}],["metadata",{"_index":58,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["method",{"_index":704,"title":{},"body":{"index.html":{}}}],["methods",{"_index":143,"title":{},"body":{"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{}}}],["miscellaneous",{"_index":677,"title":{"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}},"body":{"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["missing",{"_index":682,"title":{},"body":{"index.html":{}}}],["mit",{"_index":777,"title":{},"body":{"index.html":{},"license.html":{}}}],["mocked",{"_index":574,"title":{},"body":{"injectables/ServerWebBluetooth.html":{}}}],["mockedevent",{"_index":435,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["mode",{"_index":200,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["model",{"_index":909,"title":{},"body":{"miscellaneous/variables.html":{}}}],["model_number",{"_index":875,"title":{},"body":{"miscellaneous/variables.html":{}}}],["modify",{"_index":799,"title":{},"body":{"index.html":{},"license.html":{}}}],["module",{"_index":84,"title":{"modules/AppModule.html":{},"modules/WebBluetoothModule.html":{}},"body":{"modules/AppModule.html":{},"index.html":{},"overview.html":{}}}],["modules",{"_index":86,"title":{"modules.html":{}},"body":{"modules/AppModule.html":{},"modules/WebBluetoothModule.html":{},"modules.html":{},"overview.html":{}}}],["modulewithproviders",{"_index":18,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["more",{"_index":358,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{},"components/DashboardComponent.html":{}}}],["more_vert",{"_index":386,"title":{},"body":{"components/DashboardComponent.html":{}}}],["movement",{"_index":926,"title":{},"body":{"miscellaneous/variables.html":{}}}],["name",{"_index":69,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"miscellaneous/functions.html":{}}}],["navigateto",{"_index":145,"title":{},"body":{"classes/AppPage.html":{}}}],["navigator.bluetooth",{"_index":351,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["need",{"_index":755,"title":{},"body":{"index.html":{}}}],["new",{"_index":33,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"injectables/BrowserWebBluetooth.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["next",{"_index":291,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["ngmodule",{"_index":17,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/AppModule.html":{},"modules/WebBluetoothModule.html":{},"index.html":{}}}],["ngondestroy",{"_index":208,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["ngoninit",{"_index":209,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["node_modules",{"_index":690,"title":{},"body":{"index.html":{}}}],["nologgerservice",{"_index":28,"title":{"injectables/NoLoggerService.html":{}},"body":{"interfaces/AWBOptions.html":{},"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{}}}],["noninfringement",{"_index":829,"title":{},"body":{"index.html":{},"license.html":{}}}],["note",{"_index":687,"title":{},"body":{"index.html":{}}}],["notice",{"_index":813,"title":{},"body":{"index.html":{},"license.html":{}}}],["notifications",{"_index":711,"title":{},"body":{"index.html":{}}}],["now",{"_index":576,"title":{},"body":{"injectables/ServerWebBluetooth.html":{}}}],["npm",{"_index":685,"title":{},"body":{"index.html":{}}}],["null",{"_index":239,"title":{},"body":{"components/BatteryLevelComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["number",{"_index":231,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["oad",{"_index":955,"title":{},"body":{"miscellaneous/variables.html":{}}}],["object",{"_index":575,"title":{},"body":{"injectables/ServerWebBluetooth.html":{},"miscellaneous/variables.html":{}}}],["object.keys(titag).map((key",{"_index":865,"title":{},"body":{"miscellaneous/variables.html":{}}}],["obtaining",{"_index":788,"title":{},"body":{"index.html":{},"license.html":{}}}],["of(this.haserror.bind(this",{"_index":559,"title":{},"body":{"components/HumidityComponent.html":{}}}],["ondestroy",{"_index":161,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["oninit",{"_index":160,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["open",{"_index":773,"title":{},"body":{"index.html":{}}}],["optional",{"_index":11,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"miscellaneous/functions.html":{}}}],["optionalservices",{"_index":736,"title":{},"body":{"index.html":{}}}],["options",{"_index":35,"title":{},"body":{"interfaces/AWBOptions.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"modules/WebBluetoothModule.html":{},"miscellaneous/functions.html":{}}}],["options.enabletracing",{"_index":36,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["otherwise",{"_index":840,"title":{},"body":{"index.html":{},"license.html":{}}}],["out",{"_index":97,"title":{},"body":{"modules/AppModule.html":{},"index.html":{},"license.html":{},"overview.html":{}}}],["overview",{"_index":848,"title":{"overview.html":{}},"body":{"overview.html":{}}}],["package",{"_index":656,"title":{"dependencies.html":{},"properties.html":{}},"body":{"index.html":{}}}],["padding",{"_index":394,"title":{},"body":{"components/DashboardComponent.html":{}}}],["parameters",{"_index":219,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"miscellaneous/functions.html":{}}}],["particular",{"_index":827,"title":{},"body":{"index.html":{},"license.html":{}}}],["period",{"_index":898,"title":{},"body":{"miscellaneous/variables.html":{}}}],["permission",{"_index":783,"title":{},"body":{"index.html":{},"license.html":{}}}],["permit",{"_index":807,"title":{},"body":{"index.html":{},"license.html":{}}}],["person",{"_index":787,"title":{},"body":{"index.html":{},"license.html":{}}}],["persons",{"_index":808,"title":{},"body":{"index.html":{},"license.html":{}}}],["pipe",{"_index":343,"title":{},"body":{"injectables/BleService.html":{},"index.html":{}}}],["platform/browser",{"_index":26,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["pnp_id",{"_index":889,"title":{},"body":{"miscellaneous/variables.html":{}}}],["portions",{"_index":817,"title":{},"body":{"index.html":{},"license.html":{}}}],["position",{"_index":176,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["post",{"_index":763,"title":{},"body":{"index.html":{}}}],["pr",{"_index":769,"title":{},"body":{"index.html":{}}}],["primary",{"_index":235,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["private",{"_index":310,"title":{},"body":{"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["process",{"_index":734,"title":{},"body":{"index.html":{}}}],["production",{"_index":864,"title":{},"body":{"miscellaneous/variables.html":{}}}],["progress",{"_index":186,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["progressspinnermode",{"_index":241,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["project",{"_index":757,"title":{},"body":{"index.html":{}}}],["projects/.../bluetooth.module.ts",{"_index":679,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/.../bluetooth.service.ts",{"_index":854,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["projects/.../ti",{"_index":863,"title":{},"body":{"miscellaneous/variables.html":{}}}],["projects/manekinekko/angular",{"_index":6,"title":{},"body":{"interfaces/AWBOptions.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["promise",{"_index":149,"title":{},"body":{"classes/AppPage.html":{},"injectables/BrowserWebBluetooth.html":{}}}],["promise.resolve(this",{"_index":449,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["promise.resolve(this.characteristics[characteristic",{"_index":459,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["promise.resolve(this.services[service].service",{"_index":452,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["promise.resolve(this.value",{"_index":470,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["properties",{"_index":10,"title":{"properties.html":{}},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"properties.html":{}}}],["protractor",{"_index":151,"title":{},"body":{"classes/AppPage.html":{}}}],["provide",{"_index":45,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["provided",{"_index":818,"title":{},"body":{"index.html":{},"license.html":{}}}],["providedin",{"_index":329,"title":{},"body":{"injectables/BleService.html":{},"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"index.html":{}}}],["providers",{"_index":44,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"overview.html":{},"miscellaneous/variables.html":{}}}],["public",{"_index":197,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["publish",{"_index":801,"title":{},"body":{"index.html":{},"license.html":{}}}],["purpose",{"_index":828,"title":{},"body":{"index.html":{},"license.html":{}}}],["read",{"_index":730,"title":{},"body":{"index.html":{}}}],["readonly",{"_index":463,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"index.html":{}}}],["readvalue",{"_index":469,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["readvalueoptions",{"_index":638,"title":{},"body":{"coverage.html":{},"miscellaneous/typealiases.html":{}}}],["request_new_parameters",{"_index":951,"title":{},"body":{"miscellaneous/variables.html":{}}}],["requestdevice",{"_index":346,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["requestdevice(options",{"_index":348,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["requestdeviceoptions",{"_index":349,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["requested",{"_index":729,"title":{},"body":{"index.html":{}}}],["requestvalue",{"_index":210,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["reset",{"_index":96,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["restriction",{"_index":795,"title":{},"body":{"index.html":{},"license.html":{}}}],["results",{"_index":50,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/functions.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"properties.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["return",{"_index":32,"title":{},"body":{"interfaces/AWBOptions.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"index.html":{}}}],["returns",{"_index":148,"title":{},"body":{"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{}}}],["rgba(119,119,119,0.18",{"_index":545,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["rgba(255,161,161,0.30",{"_index":555,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["right",{"_index":409,"title":{},"body":{"components/DashboardComponent.html":{},"index.html":{}}}],["rights",{"_index":798,"title":{},"body":{"index.html":{},"license.html":{}}}],["root",{"_index":61,"title":{},"body":{"components/AppComponent.html":{},"classes/AppPage.html":{},"injectables/BleService.html":{},"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"index.html":{}}}],["root'},{'name",{"_index":70,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["row",{"_index":169,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["run",{"_index":759,"title":{},"body":{"index.html":{}}}],["rxjs",{"_index":252,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"dependencies.html":{}}}],["rxjs/operators",{"_index":327,"title":{},"body":{"injectables/BleService.html":{},"index.html":{}}}],["s",{"_index":686,"title":{},"body":{"index.html":{}}}],["section",{"_index":393,"title":{},"body":{"components/DashboardComponent.html":{}}}],["see",{"_index":356,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["selector",{"_index":59,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["sell",{"_index":805,"title":{},"body":{"index.html":{},"license.html":{}}}],["sensortag2.ts",{"_index":640,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["serial_number",{"_index":877,"title":{},"body":{"miscellaneous/variables.html":{}}}],["series",{"_index":500,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["serverwebbluetooth",{"_index":571,"title":{"injectables/ServerWebBluetooth.html":{}},"body":{"injectables/ServerWebBluetooth.html":{},"coverage.html":{}}}],["serves",{"_index":758,"title":{},"body":{"index.html":{}}}],["service",{"_index":201,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["service.config",{"_index":266,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["service/component",{"_index":696,"title":{},"body":{"index.html":{}}}],["serviceoptions",{"_index":318,"title":{},"body":{"injectables/BleService.html":{},"coverage.html":{},"miscellaneous/typealiases.html":{}}}],["services",{"_index":446,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["shall",{"_index":814,"title":{},"body":{"index.html":{},"license.html":{}}}],["singleton",{"_index":262,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["size",{"_index":174,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/StepCounterComponent.html":{}}}],["smart",{"_index":355,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["smoothie",{"_index":524,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{},"dependencies.html":{}}}],["smoothiechart",{"_index":510,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["snackbar",{"_index":202,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["software",{"_index":790,"title":{},"body":{"index.html":{},"license.html":{}}}],["software_rev",{"_index":883,"title":{},"body":{"miscellaneous/variables.html":{}}}],["source",{"_index":4,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/AppComponent.html":{},"modules/AppModule.html":{},"classes/AppPage.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{}}}],["span",{"_index":172,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/StepCounterComponent.html":{}}}],["span')).gettext",{"_index":155,"title":{},"body":{"classes/AppPage.html":{}}}],["specific",{"_index":721,"title":{},"body":{"index.html":{}}}],["spinner",{"_index":121,"title":{},"body":{"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{}}}],["src/.../battery",{"_index":857,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../ble.service.ts",{"_index":855,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["src/.../environment.prod.ts",{"_index":861,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../environment.ts",{"_index":862,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../humidity.component.ts",{"_index":858,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../stepcounter.component.ts",{"_index":859,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/.../temperature.component.ts",{"_index":860,"title":{},"body":{"miscellaneous/variables.html":{}}}],["src/app/app.component.ts",{"_index":57,"title":{},"body":{"components/AppComponent.html":{},"coverage.html":{}}}],["src/app/app.module.ts",{"_index":98,"title":{},"body":{"modules/AppModule.html":{}}}],["src/app/ble.service.ts",{"_index":309,"title":{},"body":{"injectables/BleService.html":{},"coverage.html":{},"miscellaneous/typealiases.html":{}}}],["src/app/ble.service.ts:17",{"_index":316,"title":{},"body":{"injectables/BleService.html":{}}}],["src/app/ble.service.ts:19",{"_index":324,"title":{},"body":{"injectables/BleService.html":{}}}],["src/app/ble.service.ts:21",{"_index":319,"title":{},"body":{"injectables/BleService.html":{}}}],["src/app/ble.service.ts:25",{"_index":321,"title":{},"body":{"injectables/BleService.html":{}}}],["src/app/ble.service.ts:29",{"_index":322,"title":{},"body":{"injectables/BleService.html":{}}}],["src/app/ble.service.ts:36",{"_index":323,"title":{},"body":{"injectables/BleService.html":{}}}],["src/app/ble.service.ts:47",{"_index":320,"title":{},"body":{"injectables/BleService.html":{}}}],["src/app/dashboard/dashboard.component.ts",{"_index":377,"title":{},"body":{"components/DashboardComponent.html":{},"coverage.html":{}}}],["src/app/dashboard/dashboard.component.ts:8",{"_index":383,"title":{},"body":{"components/DashboardComponent.html":{}}}],["src/app/thingy52/battery",{"_index":157,"title":{},"body":{"components/BatteryLevelComponent.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/app/thingy52/humidity.component.ts",{"_index":495,"title":{},"body":{"components/HumidityComponent.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/app/thingy52/humidity.component.ts:101",{"_index":503,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:108",{"_index":504,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:112",{"_index":506,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:38",{"_index":517,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:39",{"_index":511,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:40",{"_index":521,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:41",{"_index":520,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:44",{"_index":515,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:46",{"_index":522,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:48",{"_index":502,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:51",{"_index":518,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:52",{"_index":519,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:61",{"_index":507,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:71",{"_index":505,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:81",{"_index":508,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/humidity.component.ts:90",{"_index":509,"title":{},"body":{"components/HumidityComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts",{"_index":577,"title":{},"body":{"components/StepCounterComponent.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/app/thingy52/stepcounter.component.ts:49",{"_index":596,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:50",{"_index":594,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:51",{"_index":595,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:53",{"_index":597,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:55",{"_index":585,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:58",{"_index":592,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:59",{"_index":593,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:72",{"_index":589,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:80",{"_index":590,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:85",{"_index":591,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:90",{"_index":586,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:95",{"_index":587,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/stepcounter.component.ts:99",{"_index":588,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["src/app/thingy52/temperature.component.ts",{"_index":605,"title":{},"body":{"components/TemperatureComponent.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/app/thingy52/temperature.component.ts:110",{"_index":612,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:117",{"_index":613,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:126",{"_index":607,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:133",{"_index":608,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:137",{"_index":610,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:52",{"_index":616,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:53",{"_index":614,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:54",{"_index":619,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:55",{"_index":618,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:58",{"_index":615,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:60",{"_index":620,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:62",{"_index":606,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:64",{"_index":617,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:76",{"_index":611,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/app/thingy52/temperature.component.ts:85",{"_index":609,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["src/environments/environment.prod.ts",{"_index":651,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["src/environments/environment.ts",{"_index":653,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["startblog",{"_index":762,"title":{},"body":{"index.html":{}}}],["started",{"_index":681,"title":{"index.html":{},"license.html":{}},"body":{"index.html":{}}}],["starter",{"_index":756,"title":{},"body":{"index.html":{}}}],["state",{"_index":938,"title":{},"body":{"miscellaneous/variables.html":{}}}],["statements",{"_index":630,"title":{},"body":{"coverage.html":{}}}],["static",{"_index":42,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/HumidityComponent.html":{},"injectables/ServerWebBluetooth.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"index.html":{}}}],["step",{"_index":541,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["stepcounter",{"_index":578,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["stepcounter'},{'name",{"_index":79,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["stepcountercomponent",{"_index":78,"title":{"components/StepCounterComponent.html":{}},"body":{"components/AppComponent.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{},"overview.html":{}}}],["stepper",{"_index":392,"title":{},"body":{"components/DashboardComponent.html":{}}}],["sticky",{"_index":401,"title":{},"body":{"components/DashboardComponent.html":{}}}],["stop",{"_index":709,"title":{},"body":{"index.html":{}}}],["stream",{"_index":314,"title":{},"body":{"injectables/BleService.html":{},"index.html":{}}}],["streamsubscription",{"_index":203,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["string",{"_index":224,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/ConsoleLoggerService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"miscellaneous/variables.html":{}}}],["strokestyle",{"_index":544,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["styles",{"_index":156,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["styleurls",{"_index":379,"title":{},"body":{"components/DashboardComponent.html":{}}}],["subject",{"_index":810,"title":{},"body":{"index.html":{},"license.html":{}}}],["sublicense",{"_index":803,"title":{},"body":{"index.html":{},"license.html":{}}}],["subscribe",{"_index":533,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{}}}],["subscribed",{"_index":710,"title":{},"body":{"index.html":{}}}],["subscription",{"_index":238,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["substantial",{"_index":816,"title":{},"body":{"index.html":{},"license.html":{}}}],["sup",{"_index":183,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["support",{"_index":354,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{},"modules.html":{}}}],["sure",{"_index":261,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["svg",{"_index":844,"title":{},"body":{"modules.html":{}}}],["system_id",{"_index":873,"title":{},"body":{"miscellaneous/variables.html":{}}}],["table",{"_index":655,"title":{},"body":{"coverage.html":{}}}],["tablesort(document.getelementbyid('coverage",{"_index":654,"title":{},"body":{"coverage.html":{}}}],["tap",{"_index":326,"title":{},"body":{"injectables/BleService.html":{}}}],["tap(value",{"_index":337,"title":{},"body":{"injectables/BleService.html":{}}}],["target",{"_index":436,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["temperature",{"_index":81,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"miscellaneous/variables.html":{}}}],["temperaturecomponent",{"_index":80,"title":{"components/TemperatureComponent.html":{}},"body":{"components/AppComponent.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"coverage.html":{},"overview.html":{}}}],["template",{"_index":62,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["templateurl",{"_index":381,"title":{},"body":{"components/DashboardComponent.html":{}}}],["text",{"_index":170,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["thingy52/battery",{"_index":130,"title":{},"body":{"modules/AppModule.html":{}}}],["thingy52/humidity.component",{"_index":133,"title":{},"body":{"modules/AppModule.html":{}}}],["thingy52/stepcounter.component",{"_index":134,"title":{},"body":{"modules/AppModule.html":{}}}],["thingy52/temperature.component",{"_index":135,"title":{},"body":{"modules/AppModule.html":{}}}],["this._config",{"_index":334,"title":{},"body":{"injectables/BleService.html":{}}}],["this._config.characteristic",{"_index":342,"title":{},"body":{"injectables/BleService.html":{}}}],["this._config.service",{"_index":341,"title":{},"body":{"injectables/BleService.html":{}}}],["this.ble",{"_index":340,"title":{},"body":{"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"index.html":{}}}],["this.ble.disconnectdevice",{"_index":344,"title":{},"body":{"injectables/BleService.html":{},"index.html":{}}}],["this.ble.getcharacteristic$(primaryservice",{"_index":744,"title":{},"body":{"index.html":{}}}],["this.ble.getdevice",{"_index":335,"title":{},"body":{"injectables/BleService.html":{},"index.html":{}}}],["this.ble.getprimaryservice$(gatt",{"_index":740,"title":{},"body":{"index.html":{}}}],["this.ble.readvalue$(characteristic",{"_index":750,"title":{},"body":{"index.html":{}}}],["this.ble.requestdevice(options",{"_index":360,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["this.ble.streamvalues$().pipe",{"_index":336,"title":{},"body":{"injectables/BleService.html":{},"index.html":{}}}],["this.ble.streamvalues$().pipe(map((value",{"_index":718,"title":{},"body":{"index.html":{}}}],["this.characteristics.service",{"_index":456,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.chart",{"_index":538,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.chart!.addtimeseries(this.series",{"_index":552,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.chart!.start",{"_index":562,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.chart!.stop",{"_index":557,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.chart!.streamto(canvas",{"_index":556,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.chartref!.nativeelement",{"_index":536,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.color",{"_index":281,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.connected",{"_index":448,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.console.log('reading",{"_index":297,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.device.disconnect",{"_index":453,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.devicesubscription",{"_index":279,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.devicesubscription!.unsubscribe",{"_index":300,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.devicesubscription?.unsubscribe",{"_index":305,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.getdevicestatus",{"_index":273,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.haserror(err",{"_index":295,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.haserror(error",{"_index":278,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.haserror.bind(this",{"_index":288,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.id",{"_index":441,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.initchart",{"_index":531,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.initialvalue",{"_index":468,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.listeners",{"_index":443,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.listeners['characteristicvaluechanged'].foreach(listener",{"_index":472,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.listeners['gattserverdisconnected'].foreach(listener",{"_index":438,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.listeners[type",{"_index":434,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.mode",{"_index":283,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.name",{"_index":442,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.properties",{"_index":467,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["this.series",{"_index":534,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.series!.append(date.now",{"_index":561,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.series!.clear",{"_index":563,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.service.disconnectdevice",{"_index":299,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.service.getdevice",{"_index":265,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.service.getdevice().subscribe((device",{"_index":280,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.service.stream",{"_index":532,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{}}}],["this.service.stream().subscribe",{"_index":275,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.service.value",{"_index":558,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{}}}],["this.service.value().subscribe",{"_index":290,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.snackbar.open(error",{"_index":302,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.streamsubscription",{"_index":274,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.streamsubscription!.unsubscribe",{"_index":564,"title":{},"body":{"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.streamsubscription?.unsubscribe",{"_index":306,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.updatevalue(val",{"_index":293,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.updatevalue(value",{"_index":277,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["this.value",{"_index":285,"title":{},"body":{"components/BatteryLevelComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/StepCounterComponent.html":{}}}],["this.valuessubscription",{"_index":289,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.valuessubscription!.unsubscribe",{"_index":301,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["this.valuessubscription?.unsubscribe",{"_index":304,"title":{},"body":{"components/BatteryLevelComponent.html":{}}}],["throw",{"_index":352,"title":{},"body":{"injectables/BrowserWebBluetooth.html":{}}}],["ti_sensorag_services",{"_index":641,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["time",{"_index":600,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["timeseries",{"_index":516,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["titag",{"_index":642,"title":{},"body":{"coverage.html":{},"miscellaneous/variables.html":{}}}],["toolbar.mat",{"_index":400,"title":{},"body":{"components/DashboardComponent.html":{}}}],["tooltip",{"_index":551,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["top",{"_index":178,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["tort",{"_index":839,"title":{},"body":{"index.html":{},"license.html":{}}}],["tree",{"_index":56,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["trigger",{"_index":732,"title":{},"body":{"index.html":{}}}],["true",{"_index":139,"title":{},"body":{"modules/AppModule.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["ts",{"_index":670,"title":{},"body":{"dependencies.html":{}}}],["tslib",{"_index":673,"title":{},"body":{"dependencies.html":{}}}],["tslint:disable",{"_index":330,"title":{},"body":{"injectables/BleService.html":{},"components/HumidityComponent.html":{}}}],["type",{"_index":14,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["typealiases",{"_index":852,"title":{"miscellaneous/typealiases.html":{}},"body":{}}],["typeof",{"_index":296,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["types/web",{"_index":666,"title":{},"body":{"dependencies.html":{},"index.html":{}}}],["undefined",{"_index":461,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["unknown",{"_index":437,"title":{},"body":{"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{}}}],["updatevalue",{"_index":211,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["updatevalue(value",{"_index":230,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["use",{"_index":695,"title":{},"body":{"index.html":{},"license.html":{}}}],["usefactory",{"_index":46,"title":{},"body":{"interfaces/AWBOptions.html":{},"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"miscellaneous/variables.html":{}}}],["usevalue",{"_index":47,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/WebBluetoothModule.html":{}}}],["using",{"_index":701,"title":{},"body":{"index.html":{}}}],["val",{"_index":292,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["value",{"_index":193,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["value.getint8(0",{"_index":269,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{},"index.html":{}}}],["value.getuint32(0",{"_index":599,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["value.getuint32(4",{"_index":601,"title":{},"body":{"components/StepCounterComponent.html":{}}}],["value.getuint8(0",{"_index":719,"title":{},"body":{"index.html":{}}}],["value.getuint8(1",{"_index":624,"title":{},"body":{"components/TemperatureComponent.html":{}}}],["values",{"_index":705,"title":{},"body":{"index.html":{}}}],["valuessubscription",{"_index":204,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["var",{"_index":67,"title":{},"body":{"components/AppComponent.html":{},"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/HumidityComponent.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["variable",{"_index":332,"title":{},"body":{"injectables/BleService.html":{},"coverage.html":{}}}],["variables",{"_index":856,"title":{"miscellaneous/variables.html":{}},"body":{"miscellaneous/variables.html":{}}}],["version",{"_index":850,"title":{},"body":{"properties.html":{}}}],["viewchild",{"_index":523,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["viewchild('chart",{"_index":514,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["void",{"_index":221,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/ConsoleLoggerService.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{}}}],["want",{"_index":727,"title":{},"body":{"index.html":{}}}],["warn",{"_index":282,"title":{},"body":{"components/BatteryLevelComponent.html":{},"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["warn(...args",{"_index":368,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["warn(args",{"_index":373,"title":{},"body":{"injectables/ConsoleLoggerService.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{}}}],["warranties",{"_index":824,"title":{},"body":{"index.html":{},"license.html":{}}}],["warranty",{"_index":819,"title":{},"body":{"index.html":{},"license.html":{}}}],["wassim",{"_index":781,"title":{},"body":{"index.html":{},"license.html":{}}}],["way",{"_index":698,"title":{},"body":{"index.html":{}}}],["web",{"_index":7,"title":{},"body":{"interfaces/AWBOptions.html":{},"modules/AppModule.html":{},"components/BatteryLevelComponent.html":{},"injectables/BleService.html":{},"injectables/BrowserWebBluetooth.html":{},"injectables/ConsoleLoggerService.html":{},"components/DashboardComponent.html":{},"classes/FakeBluetoothDevice.html":{},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{},"classes/FakeBluetoothRemoteGATTServer.html":{},"classes/FakeBluetoothRemoteGATTService.html":{},"components/HumidityComponent.html":{},"interfaces/Logger.html":{},"injectables/NoLoggerService.html":{},"injectables/ServerWebBluetooth.html":{},"components/StepCounterComponent.html":{},"components/TemperatureComponent.html":{},"modules/WebBluetoothModule.html":{},"coverage.html":{},"miscellaneous/functions.html":{},"index.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["webbluetoothmodule",{"_index":41,"title":{"modules/WebBluetoothModule.html":{}},"body":{"interfaces/AWBOptions.html":{},"modules/AppModule.html":{},"modules/WebBluetoothModule.html":{},"index.html":{},"modules.html":{},"overview.html":{}}}],["webbluetoothmodule.forroot",{"_index":138,"title":{},"body":{"modules/AppModule.html":{},"index.html":{}}}],["welcome",{"_index":771,"title":{},"body":{"index.html":{}}}],["whether",{"_index":836,"title":{},"body":{"index.html":{},"license.html":{}}}],["width",{"_index":180,"title":{},"body":{"components/BatteryLevelComponent.html":{},"components/DashboardComponent.html":{},"components/StepCounterComponent.html":{}}}],["window.smoothiechart",{"_index":539,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["window.timeseries",{"_index":535,"title":{},"body":{"components/HumidityComponent.html":{},"components/TemperatureComponent.html":{}}}],["without",{"_index":794,"title":{},"body":{"index.html":{},"license.html":{}}}],["yes",{"_index":475,"title":{},"body":{"classes/FakeBluetoothRemoteGATTCharacteristic.html":{}}}],["z",{"_index":402,"title":{},"body":{"components/DashboardComponent.html":{}}}],["zone.js",{"_index":675,"title":{},"body":{"dependencies.html":{}}}],["zoom",{"_index":95,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}]],"pipeline":["stemmer"]},
+ "store": {"interfaces/AWBOptions.html":{"url":"interfaces/AWBOptions.html","title":"interface - AWBOptions","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n AWBOptions\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n \n enableTracing\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n enableTracing\n \n \n \n \n \n \n \n \n enableTracing: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n\n\n \n import { NgModule, ModuleWithProviders, InjectionToken, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BluetoothCore } from './bluetooth.service';\nimport { BrowserWebBluetooth } from './platform/browser';\n\nimport { ConsoleLoggerService, NoLoggerService } from './logger.service';\n\nexport interface AWBOptions {\n enableTracing?: boolean;\n}\n\nexport function browserWebBluetooth() {\n return new BrowserWebBluetooth();\n}\n\nexport function consoleLoggerServiceConfig(options: AWBOptions) {\n if (options && options.enableTracing) {\n return new ConsoleLoggerService();\n } else {\n return new NoLoggerService();\n }\n}\nexport function makeMeTokenInjector() {\n return new InjectionToken('AWBOptions');\n}\n\n@NgModule({\n imports: [CommonModule]\n})\nexport class WebBluetoothModule {\n static forRoot(options: AWBOptions = {}): ModuleWithProviders {\n return {\n ngModule: WebBluetoothModule,\n providers: [\n BluetoothCore,\n {\n provide: BrowserWebBluetooth,\n useFactory: browserWebBluetooth\n },\n {\n provide: makeMeTokenInjector,\n useValue: options\n },\n {\n provide: ConsoleLoggerService,\n useFactory: consoleLoggerServiceConfig,\n deps: [makeMeTokenInjector]\n }\n ]\n };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/AppComponent.html":{"url":"components/AppComponent.html","title":"component - AppComponent","body":"\n \n\n\n\n\n\n Components\n \n AppComponent\n\n\n\n \n Info\n \n \n Source\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/app.component.ts\n\n\n\n\n\n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n selector\n ble-root\n \n\n\n\n\n\n \n template\n \n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n import { Component } from '@angular/core';\n\n@Component({\n selector: 'ble-root',\n template: `\n \n `\n})\nexport class AppComponent {}\n\n \n\n\n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ''\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'ble-root'},{'name': 'BatteryLevelComponent', 'selector': 'ble-battery-level'},{'name': 'DashboardComponent', 'selector': 'ble-dashboard'},{'name': 'HumidityComponent', 'selector': 'ble-humidity'},{'name': 'StepCounterComponent', 'selector': 'ble-stepcounter'},{'name': 'TemperatureComponent', 'selector': 'ble-temperature'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'AppComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules/AppModule.html":{"url":"modules/AppModule.html","title":"module - AppModule","body":"\n \n\n\n\n\n Modules\n AppModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_AppModule\n\n\n\ncluster_AppModule_imports\n\n\n\ncluster_AppModule_bootstrap\n\n\n\ncluster_AppModule_declarations\n\n\n\n\nAppComponent\n\nAppComponent\n\n\n\nAppModule\n\nAppModule\n\nAppModule -->\n\nAppComponent->AppModule\n\n\n\n\n\nBatteryLevelComponent\n\nBatteryLevelComponent\n\nAppModule -->\n\nBatteryLevelComponent->AppModule\n\n\n\n\n\nDashboardComponent\n\nDashboardComponent\n\nAppModule -->\n\nDashboardComponent->AppModule\n\n\n\n\n\nHumidityComponent\n\nHumidityComponent\n\nAppModule -->\n\nHumidityComponent->AppModule\n\n\n\n\n\nStepCounterComponent\n\nStepCounterComponent\n\nAppModule -->\n\nStepCounterComponent->AppModule\n\n\n\n\n\nTemperatureComponent\n\nTemperatureComponent\n\nAppModule -->\n\nTemperatureComponent->AppModule\n\n\n\n\n\nAppComponent \n\nAppComponent \n\nAppComponent -->\n\nAppModule->AppComponent \n\n\n\n\n\nWebBluetoothModule\n\nWebBluetoothModule\n\nAppModule -->\n\nWebBluetoothModule->AppModule\n\n\n\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n src/app/app.module.ts\n \n\n\n\n\n\n \n \n \n Declarations\n \n \n AppComponent\n \n \n BatteryLevelComponent\n \n \n DashboardComponent\n \n \n HumidityComponent\n \n \n StepCounterComponent\n \n \n TemperatureComponent\n \n \n \n \n Imports\n \n \n WebBluetoothModule\n \n \n \n \n Bootstrap\n \n \n AppComponent\n \n \n \n \n \n\n\n \n\n\n \n import { LayoutModule } from '@angular/cdk/layout';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatToolbarModule } from '@angular/material/toolbar';\n\nimport { WebBluetoothModule } from '@manekinekko/angular-web-bluetooth';\nimport { AppComponent } from './app.component';\nimport { BatteryLevelComponent } from './thingy52/battery-level.component';\nimport { DashboardComponent } from './dashboard/dashboard.component';\nimport { HumidityComponent } from './thingy52/humidity.component';\nimport { StepCounterComponent } from './thingy52/stepcounter.component';\nimport { TemperatureComponent } from './thingy52/temperature.component';\nimport { BrowserModule } from '@angular/platform-browser';\n\n@NgModule({\n declarations: [\n AppComponent,\n BatteryLevelComponent,\n TemperatureComponent,\n HumidityComponent,\n StepCounterComponent,\n DashboardComponent\n ],\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n WebBluetoothModule.forRoot({\n enableTracing: true\n }),\n LayoutModule,\n MatToolbarModule,\n MatButtonModule,\n MatIconModule,\n MatListModule,\n MatExpansionModule,\n MatSnackBarModule,\n MatProgressSpinnerModule,\n MatGridListModule,\n MatCardModule,\n MatMenuModule\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule {}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/AppPage.html":{"url":"classes/AppPage.html","title":"class - AppPage","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n AppPage\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n e2e/src/app.po.ts\n \n\n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n getTitleText\n \n \n navigateTo\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getTitleText\n \n \n \n \n \n \ngetTitleText()\n \n \n\n\n \n \n Defined in e2e/src/app.po.ts:8\n \n \n\n\n \n \n\n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n \n \n \n navigateTo\n \n \n \n \n \n \nnavigateTo()\n \n \n\n\n \n \n Defined in e2e/src/app.po.ts:4\n \n \n\n\n \n \n\n \n Returns : Promise<>\n\n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { browser, by, element } from 'protractor';\n\nexport class AppPage {\n navigateTo(): Promise {\n return browser.get(browser.baseUrl) as Promise;\n }\n\n getTitleText(): Promise {\n return element(by.css('app-root .content span')).getText() as Promise;\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/BatteryLevelComponent.html":{"url":"components/BatteryLevelComponent.html","title":"component - BatteryLevelComponent","body":"\n \n\n\n\n\n\n Components\n \n BatteryLevelComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/thingy52/battery-level.component.ts\n\n\n\n\n\n \n Implements\n \n \n OnInit\n OnDestroy\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n \n providers\n \n PROVIDERS\n \n \n\n\n \n selector\n ble-battery-level\n \n\n\n\n\n \n styles\n \n :host {\n display: flex;\n justify-content: center;\n flex-direction: row;\n text-align: center;\n }\n span {\n font-size: 5em;\n position: absolute;\n top: 222px;\n width: 120px;\n display: block;\n text-align: center;\n }\n sup {\n font-size: 24px;\n }\n mat-progress-spinner {\n top: 90px;\n left: 5px;\n }\n mat-icon {\n position: absolute;\n bottom: 255px;\n }\n \n \n\n \n template\n {{ value || '000' }}%\n\n\nbattery_charging_full\n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n color\n \n \n Public\n console\n \n \n deviceSubscription\n \n \n mode\n \n \n Public\n service\n \n \n Public\n snackBar\n \n \n streamSubscription\n \n \n value\n \n \n valuesSubscription\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n disconnect\n \n \n getDeviceStatus\n \n \n hasError\n \n \n ngOnDestroy\n \n \n ngOnInit\n \n \n requestValue\n \n \n updateValue\n \n \n \n \n\n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n device\n \n \n \n \n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(service: BleService, snackBar: MatSnackBar, console: ConsoleLoggerService)\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:85\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n service\n \n \n BleService\n \n \n \n No\n \n \n \n \n snackBar\n \n \n MatSnackBar\n \n \n \n No\n \n \n \n \n console\n \n \n ConsoleLoggerService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n disconnect\n \n \n \n \n \n \ndisconnect()\n \n \n\n\n \n \n Defined in src/app/thingy52/battery-level.component.ts:162\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n getDeviceStatus\n \n \n \n \n \n \ngetDeviceStatus()\n \n \n\n\n \n \n Defined in src/app/thingy52/battery-level.component.ts:116\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n hasError\n \n \n \n \n \n \nhasError(error: string)\n \n \n\n\n \n \n Defined in src/app/thingy52/battery-level.component.ts:168\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n error\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ngOnDestroy\n \n \n \n \n \n \nngOnDestroy()\n \n \n\n\n \n \n Defined in src/app/thingy52/battery-level.component.ts:172\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n ngOnInit\n \n \n \n \n \n \nngOnInit()\n \n \n\n\n \n \n Defined in src/app/thingy52/battery-level.component.ts:99\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n requestValue\n \n \n \n \n \n \nrequestValue()\n \n \n\n\n \n \n Defined in src/app/thingy52/battery-level.component.ts:131\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n updateValue\n \n \n \n \n \n \nupdateValue(value: number | literal type)\n \n \n\n\n \n \n Defined in src/app/thingy52/battery-level.component.ts:144\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n number | literal type\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n color\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Default value : 'primary'\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:78\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n console\n \n \n \n \n \n \n Type : ConsoleLoggerService\n\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:90\n \n \n\n\n \n \n \n \n \n \n \n \n deviceSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:81\n \n \n\n\n \n \n \n \n \n \n \n \n mode\n \n \n \n \n \n \n Type : ProgressSpinnerMode\n\n \n \n \n \n Default value : 'determinate'\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:77\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n service\n \n \n \n \n \n \n Type : BleService\n\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:88\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n snackBar\n \n \n \n \n \n \n Type : MatSnackBar\n\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:89\n \n \n\n\n \n \n \n \n \n \n \n \n streamSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:80\n \n \n\n\n \n \n \n \n \n \n \n \n value\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Default value : 0\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:76\n \n \n\n\n \n \n \n \n \n \n \n \n valuesSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:79\n \n \n\n\n \n \n\n\n \n \n Accessors\n \n \n \n \n \n \n device\n \n \n\n \n \n getdevice()\n \n \n \n \n Defined in src/app/thingy52/battery-level.component.ts:83\n \n \n\n \n \n\n\n\n\n \n import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n BluetoothCore,\n BrowserWebBluetooth,\n ConsoleLoggerService,\n} from '@manekinekko/angular-web-bluetooth';\nimport { Subscription } from 'rxjs';\nimport { BleService } from '../ble.service';\nimport { ProgressSpinnerMode } from '@angular/material/progress-spinner';\n\nexport const bleCore = (b: BrowserWebBluetooth, l: ConsoleLoggerService) =>\n new BluetoothCore(b, l);\nexport const bleService = (b: BluetoothCore) => new BleService(b);\n\n// make sure we get a singleton instance of each service\nconst PROVIDERS = [\n {\n provide: BluetoothCore,\n useFactory: bleCore,\n deps: [BrowserWebBluetooth, ConsoleLoggerService],\n },\n {\n provide: BleService,\n useFactory: bleService,\n deps: [BluetoothCore],\n },\n];\n\n@Component({\n selector: 'ble-battery-level',\n template: `\n {{ value || '000' }}%\n \n \n battery_charging_full\n `,\n styles: [\n `\n :host {\n display: flex;\n justify-content: center;\n flex-direction: row;\n text-align: center;\n }\n span {\n font-size: 5em;\n position: absolute;\n top: 222px;\n width: 120px;\n display: block;\n text-align: center;\n }\n sup {\n font-size: 24px;\n }\n mat-progress-spinner {\n top: 90px;\n left: 5px;\n }\n mat-icon {\n position: absolute;\n bottom: 255px;\n }\n `,\n ],\n providers: PROVIDERS,\n})\nexport class BatteryLevelComponent implements OnInit, OnDestroy {\n value = 0;\n mode: ProgressSpinnerMode = 'determinate';\n color = 'primary';\n valuesSubscription: Subscription | null = null;\n streamSubscription: Subscription | null = null;\n deviceSubscription: Subscription | null = null;\n\n get device() {\n return this.service.getDevice();\n }\n\n constructor(\n public service: BleService,\n public snackBar: MatSnackBar,\n public console: ConsoleLoggerService\n ) {\n service.config({\n decoder: (value: DataView) => value.getInt8(0),\n service: 'battery_service',\n characteristic: 'battery_level',\n });\n }\n\n ngOnInit() {\n this.getDeviceStatus();\n\n this.streamSubscription = this.service.stream().subscribe(\n (\n value:\n | number\n | {\n [key: string]: number;\n }\n ) => {\n this.updateValue(value);\n },\n (error) => this.hasError(error)\n );\n }\n\n getDeviceStatus() {\n this.deviceSubscription = this.service.getDevice().subscribe((device) => {\n if (device) {\n this.color = 'warn';\n this.mode = 'indeterminate';\n this.value = 0;\n } else {\n // device not connected or disconnected\n this.value = 0;\n this.mode = 'determinate';\n this.color = 'primary';\n }\n }, this.hasError.bind(this));\n }\n\n requestValue() {\n this.valuesSubscription = this.service.value().subscribe({\n next: (\n val:\n | number\n | {\n [key: string]: number;\n }\n ) => this.updateValue(val),\n error: (err) => this.hasError(err),\n });\n }\n\n updateValue(\n value:\n | number\n | {\n [key: string]: number;\n }\n ) {\n\n if (typeof value === 'number') {\n this.value = value;\n } else {\n this.value = value[''];\n }\n\n this.console.log('Reading battery level %d', value);\n this.mode = 'determinate';\n }\n\n disconnect() {\n this.service.disconnectDevice();\n this.deviceSubscription!.unsubscribe();\n this.valuesSubscription!.unsubscribe();\n }\n\n hasError(error: string) {\n this.snackBar.open(error, 'Close');\n }\n\n ngOnDestroy() {\n this.valuesSubscription?.unsubscribe();\n this.deviceSubscription?.unsubscribe();\n this.streamSubscription?.unsubscribe();\n }\n}\n\n \n\n\n \n \n :host {\n display: flex;\n justify-content: center;\n flex-direction: row;\n text-align: center;\n }\n span {\n font-size: 5em;\n position: absolute;\n top: 222px;\n width: 120px;\n display: block;\n text-align: center;\n }\n sup {\n font-size: 24px;\n }\n mat-progress-spinner {\n top: 90px;\n left: 5px;\n }\n mat-icon {\n position: absolute;\n bottom: 255px;\n }\n \n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = '{{ value || \\'000\\' }}%battery_charging_full'\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'ble-root'},{'name': 'BatteryLevelComponent', 'selector': 'ble-battery-level'},{'name': 'DashboardComponent', 'selector': 'ble-dashboard'},{'name': 'HumidityComponent', 'selector': 'ble-humidity'},{'name': 'StepCounterComponent', 'selector': 'ble-stepcounter'},{'name': 'TemperatureComponent', 'selector': 'ble-temperature'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'BatteryLevelComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/BleService.html":{"url":"injectables/BleService.html","title":"injectable - BleService","body":"\n \n\n\n\n\n\n\n\n\n\n Injectables\n BleService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/ble.service.ts\n \n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Private\n _config\n \n \n Public\n ble\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n config\n \n \n disconnectDevice\n \n \n getDevice\n \n \n stream\n \n \n value\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(ble: BluetoothCore)\n \n \n \n \n Defined in src/app/ble.service.ts:17\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n ble\n \n \n BluetoothCore\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n config\n \n \n \n \n \n \nconfig(options: ServiceOptions)\n \n \n\n\n \n \n Defined in src/app/ble.service.ts:21\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n options\n \n ServiceOptions\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n disconnectDevice\n \n \n \n \n \n \ndisconnectDevice()\n \n \n\n\n \n \n Defined in src/app/ble.service.ts:47\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n getDevice\n \n \n \n \n \n \ngetDevice()\n \n \n\n\n \n \n Defined in src/app/ble.service.ts:25\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n stream\n \n \n \n \n \n \nstream()\n \n \n\n\n \n \n Defined in src/app/ble.service.ts:29\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n value\n \n \n \n \n \n \nvalue()\n \n \n\n\n \n \n Defined in src/app/ble.service.ts:36\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Private\n _config\n \n \n \n \n \n \n Type : ServiceOptions\n\n \n \n \n \n Default value : {} as any\n \n \n \n \n Defined in src/app/ble.service.ts:17\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n ble\n \n \n \n \n \n \n Type : BluetoothCore\n\n \n \n \n \n Defined in src/app/ble.service.ts:19\n \n \n\n\n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\nimport { BluetoothCore } from '@manekinekko/angular-web-bluetooth';\nimport { map, tap } from 'rxjs/operators';\n\ntype ServiceOptions = {\n characteristic: string;\n service: string,\n decoder(value: DataView): number\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BleService {\n\n // tslint:disable-next-line: variable-name\n private _config: ServiceOptions = {} as any;\n\n constructor(public ble: BluetoothCore) {}\n\n config(options: ServiceOptions) {\n this._config = options;\n }\n\n getDevice() {\n return this.ble.getDevice$();\n }\n\n stream() {\n return this.ble.streamValues$().pipe(\n tap(value => console.log(value)),\n map(this._config.decoder)\n );\n }\n\n value() {\n return this.ble\n .value$({\n service: this._config.service,\n characteristic: this._config.characteristic\n })\n .pipe(\n map(this._config.decoder)\n );\n }\n\n disconnectDevice() {\n this.ble.disconnectDevice();\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/BrowserWebBluetooth.html":{"url":"injectables/BrowserWebBluetooth.html","title":"injectable - BrowserWebBluetooth","body":"\n \n\n\n\n\n\n\n\n\n\n Injectables\n BrowserWebBluetooth\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/platform/browser.ts\n \n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Private\n ble\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n requestDevice\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/platform/browser.ts:5\n \n \n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n requestDevice\n \n \n \n \n \n \nrequestDevice(options: RequestDeviceOptions)\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/platform/browser.ts:14\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n options\n \n RequestDeviceOptions\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Private\n ble\n \n \n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/platform/browser.ts:5\n \n \n\n\n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class BrowserWebBluetooth {\n private ble;\n\n constructor() {\n this.ble = navigator.bluetooth;\n if (!this.ble) {\n throw new Error('Your browser does not support Smart Bluetooth. See http://caniuse.com/#search=Bluetooth for more details.');\n }\n }\n\n requestDevice(options: RequestDeviceOptions): Promise {\n return this.ble.requestDevice(options);\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/ConsoleLoggerService.html":{"url":"injectables/ConsoleLoggerService.html","title":"injectable - ConsoleLoggerService","body":"\n \n\n\n\n\n\n\n\n\n\n Injectables\n ConsoleLoggerService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n error\n \n \n log\n \n \n warn\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n error\n \n \n \n \n \n \nerror(...args: any[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:16\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n log\n \n \n \n \n \n \nlog(...args: any[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:13\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n warn\n \n \n \n \n \n \nwarn(...args: any[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:19\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\nexport interface Logger {\n log(args: string[]): void;\n error(args: string[]): void;\n warn(args: string[]): void;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConsoleLoggerService implements Logger {\n log(...args: any[]) {\n console.log.apply(console, args);\n }\n error(...args: any[]) {\n console.error.apply(console, args);\n }\n warn(...args: any[]) {\n console.warn.apply(console, args);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NoLoggerService implements Logger {\n log(...args: any[]) {}\n error(...args: any[]) {}\n warn(...args: any[]) {}\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/DashboardComponent.html":{"url":"components/DashboardComponent.html","title":"component - DashboardComponent","body":"\n \n\n\n\n\n\n Components\n \n DashboardComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/dashboard/dashboard.component.ts\n\n\n\n\n\n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n selector\n ble-dashboard\n \n\n\n\n \n styleUrls\n ./dashboard.component.css\n \n\n\n\n \n templateUrl\n ./dashboard.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/app/dashboard/dashboard.component.ts:8\n \n \n\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n import { Component } from '@angular/core';\n\n@Component({\n selector: 'ble-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.css'],\n})\nexport class DashboardComponent {\n\n constructor() {}\n}\n\n \n\n \n \n \n Angular Web BLE Demo\n\n\n\n \n\n \n\n \n \n \n \n Battery Level\n \n more_vert\n \n \n \n bluetooth_searching\n Connect\n \n \n bluetooth_disabled\n Disconnect\n \n \n \n \n {{ device.name }}\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n Humidity Level\n \n more_vert\n \n \n \n bluetooth_searching\n Connect\n \n \n bluetooth_disabled\n Disconnect\n \n \n \n \n {{ device.name }}\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n Temperature\n \n more_vert\n \n \n \n bluetooth_searching\n Connect\n \n \n bluetooth_disabled\n Disconnect\n \n \n \n \n {{ device.name }}\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n Stepper\n \n more_vert\n \n \n \n bluetooth_searching\n Connect\n \n \n bluetooth_disabled\n Disconnect\n \n \n \n \n {{ device.name }}\n \n \n \n \n \n \n \n\n \n\n\n \n\n \n \n ./dashboard.component.css\n \n section {\n padding: 40px;\n max-width: 700px;\n margin: 0 auto;\n}\n\n.mat-toolbar.mat-primary {\n position: sticky;\n top: 0;\n z-index: 1;\n}\n\n.grid-container {\n margin: 20px;\n}\n\n.dashboard-card {\n position: absolute;\n top: 15px;\n left: 15px;\n right: 15px;\n bottom: 15px;\n}\n\n.more-button {\n position: absolute;\n top: 5px;\n right: 10px;\n}\n\n.dashboard-card-content {\n text-align: center;\n}\n\n\nimg {\n width: 32px;\n margin: 0 10px;\n}\n\n.mat-icon {\n margin: 0 10px 0 0;\n}\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' Angular Web BLE Demo Battery Level more_vert bluetooth_searching Connect bluetooth_disabled Disconnect {{ device.name }} Humidity Level more_vert bluetooth_searching Connect bluetooth_disabled Disconnect {{ device.name }} Temperature more_vert bluetooth_searching Connect bluetooth_disabled Disconnect {{ device.name }} Stepper more_vert bluetooth_searching Connect bluetooth_disabled Disconnect {{ device.name }} '\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'ble-root'},{'name': 'BatteryLevelComponent', 'selector': 'ble-battery-level'},{'name': 'DashboardComponent', 'selector': 'ble-dashboard'},{'name': 'HumidityComponent', 'selector': 'ble-humidity'},{'name': 'StepCounterComponent', 'selector': 'ble-stepcounter'},{'name': 'TemperatureComponent', 'selector': 'ble-temperature'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'DashboardComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/FakeBluetoothDevice.html":{"url":"classes/FakeBluetoothDevice.html","title":"class - FakeBluetoothDevice","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n FakeBluetoothDevice\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n gatt\n \n \n Public\n id\n \n \n Private\n listeners\n \n \n Public\n name\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n addEventListener\n \n \n clear\n \n \n disconnect\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(id: string, name: string)\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:12\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n id\n \n \n string\n \n \n \n No\n \n \n \n \n name\n \n \n string\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n gatt\n \n \n \n \n \n \n Type : BluetoothRemoteGATTServer | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:7\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:14\n \n \n\n\n \n \n \n \n \n \n \n \n Private\n listeners\n \n \n \n \n \n \n Type : literal type\n\n \n \n \n \n Default value : {\n gattserverdisconnected: []\n }\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:8\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n name\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:14\n \n \n\n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n addEventListener\n \n \n \n \n \n \naddEventListener(type: string, listener: EventListener)\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:17\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n type\n \n string\n \n\n \n No\n \n\n\n \n \n listener\n \n EventListener\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n clear\n \n \n \n \n \n \nclear()\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:29\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n disconnect\n \n \n \n \n \n \ndisconnect()\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:24\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n export class FakeBluetoothDevice {\n gatt: BluetoothRemoteGATTServer | null = null;\n private listeners: {\n [key: string]: EventListener[]\n } = {\n gattserverdisconnected: []\n };\n\n constructor(public id: string, public name: string) {\n }\n\n addEventListener(type: string, listener: EventListener) {\n this.listeners[type] = [\n ...this.listeners[type],\n listener\n ];\n }\n\n disconnect() {\n const mockedEvent = {target: this} as unknown;\n this.listeners['gattserverdisconnected'].forEach(listener => listener(mockedEvent as Event));\n }\n\n clear() {\n this.id = \"\";\n this.name = \"\";\n this.listeners = {\n gattserverdisconnected: []\n };\n }\n}\n\nexport class FakeBluetoothRemoteGATTServer {\n connected = false;\n\n constructor(public device: any, public services: { [key: string]: { service: any, primary: boolean } }) {\n device.gatt = this;\n }\n\n connect() {\n this.connected = true;\n return Promise.resolve(this);\n }\n\n getPrimaryService(service: BluetoothServiceUUID) {\n return Promise.resolve(this.services[service].service);\n }\n\n disconnect() {\n this.device.disconnect();\n this.connected = false;\n }\n}\n\nexport class FakeBluetoothRemoteGATTService {\n constructor(public device: any, public characteristics: any) {\n this.characteristics.service = this;\n }\n\n getCharacteristic(characteristic: BluetoothCharacteristicUUID) {\n return Promise.resolve(this.characteristics[characteristic]);\n }\n}\n\nexport class FakeBluetoothRemoteGATTCharacteristic {\n value: DataView | undefined;\n properties: BluetoothCharacteristicProperties;\n private readonly initialValue: DataView | undefined;\n private listeners: {\n [key: string]: EventListener[]\n } = {\n characteristicvaluechanged: []\n };\n\n constructor(properties: BluetoothCharacteristicProperties, initialValue?: DataView) {\n this.properties = properties;\n this.value = initialValue;\n this.initialValue = initialValue;\n }\n\n readValue() {\n return Promise.resolve(this.value);\n }\n\n addEventListener(type: string, listener: EventListener) {\n this.listeners[type] = [\n ...this.listeners[type],\n listener\n ];\n }\n\n changeValue(value: DataView) {\n this.value = value;\n const mockedEvent = {target: this} as unknown;\n this.listeners['characteristicvaluechanged'].forEach(listener => listener(mockedEvent as Event));\n }\n\n clear() {\n this.value = this.initialValue;\n this.listeners = {\n characteristicvaluechanged: []\n };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/FakeBluetoothRemoteGATTCharacteristic.html":{"url":"classes/FakeBluetoothRemoteGATTCharacteristic.html","title":"class - FakeBluetoothRemoteGATTCharacteristic","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n FakeBluetoothRemoteGATTCharacteristic\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Private\n Readonly\n initialValue\n \n \n Private\n listeners\n \n \n properties\n \n \n value\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n addEventListener\n \n \n changeValue\n \n \n clear\n \n \n readValue\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(properties: BluetoothCharacteristicProperties, initialValue?: DataView)\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:78\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n properties\n \n \n BluetoothCharacteristicProperties\n \n \n \n No\n \n \n \n \n initialValue\n \n \n DataView\n \n \n \n Yes\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Private\n Readonly\n initialValue\n \n \n \n \n \n \n Type : DataView | undefined\n\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:73\n \n \n\n\n \n \n \n \n \n \n \n \n Private\n listeners\n \n \n \n \n \n \n Type : literal type\n\n \n \n \n \n Default value : {\n characteristicvaluechanged: []\n }\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:74\n \n \n\n\n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n \n Type : BluetoothCharacteristicProperties\n\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:72\n \n \n\n\n \n \n \n \n \n \n \n \n value\n \n \n \n \n \n \n Type : DataView | undefined\n\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:71\n \n \n\n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n addEventListener\n \n \n \n \n \n \naddEventListener(type: string, listener: EventListener)\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:90\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n type\n \n string\n \n\n \n No\n \n\n\n \n \n listener\n \n EventListener\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n changeValue\n \n \n \n \n \n \nchangeValue(value: DataView)\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:97\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n DataView\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n clear\n \n \n \n \n \n \nclear()\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:103\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n readValue\n \n \n \n \n \n \nreadValue()\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:86\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n export class FakeBluetoothDevice {\n gatt: BluetoothRemoteGATTServer | null = null;\n private listeners: {\n [key: string]: EventListener[]\n } = {\n gattserverdisconnected: []\n };\n\n constructor(public id: string, public name: string) {\n }\n\n addEventListener(type: string, listener: EventListener) {\n this.listeners[type] = [\n ...this.listeners[type],\n listener\n ];\n }\n\n disconnect() {\n const mockedEvent = {target: this} as unknown;\n this.listeners['gattserverdisconnected'].forEach(listener => listener(mockedEvent as Event));\n }\n\n clear() {\n this.id = \"\";\n this.name = \"\";\n this.listeners = {\n gattserverdisconnected: []\n };\n }\n}\n\nexport class FakeBluetoothRemoteGATTServer {\n connected = false;\n\n constructor(public device: any, public services: { [key: string]: { service: any, primary: boolean } }) {\n device.gatt = this;\n }\n\n connect() {\n this.connected = true;\n return Promise.resolve(this);\n }\n\n getPrimaryService(service: BluetoothServiceUUID) {\n return Promise.resolve(this.services[service].service);\n }\n\n disconnect() {\n this.device.disconnect();\n this.connected = false;\n }\n}\n\nexport class FakeBluetoothRemoteGATTService {\n constructor(public device: any, public characteristics: any) {\n this.characteristics.service = this;\n }\n\n getCharacteristic(characteristic: BluetoothCharacteristicUUID) {\n return Promise.resolve(this.characteristics[characteristic]);\n }\n}\n\nexport class FakeBluetoothRemoteGATTCharacteristic {\n value: DataView | undefined;\n properties: BluetoothCharacteristicProperties;\n private readonly initialValue: DataView | undefined;\n private listeners: {\n [key: string]: EventListener[]\n } = {\n characteristicvaluechanged: []\n };\n\n constructor(properties: BluetoothCharacteristicProperties, initialValue?: DataView) {\n this.properties = properties;\n this.value = initialValue;\n this.initialValue = initialValue;\n }\n\n readValue() {\n return Promise.resolve(this.value);\n }\n\n addEventListener(type: string, listener: EventListener) {\n this.listeners[type] = [\n ...this.listeners[type],\n listener\n ];\n }\n\n changeValue(value: DataView) {\n this.value = value;\n const mockedEvent = {target: this} as unknown;\n this.listeners['characteristicvaluechanged'].forEach(listener => listener(mockedEvent as Event));\n }\n\n clear() {\n this.value = this.initialValue;\n this.listeners = {\n characteristicvaluechanged: []\n };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/FakeBluetoothRemoteGATTServer.html":{"url":"classes/FakeBluetoothRemoteGATTServer.html","title":"class - FakeBluetoothRemoteGATTServer","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n FakeBluetoothRemoteGATTServer\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n connected\n \n \n Public\n device\n \n \n Public\n services\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n connect\n \n \n disconnect\n \n \n getPrimaryService\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(device: any, services: literal type)\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:39\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n device\n \n \n any\n \n \n \n No\n \n \n \n \n services\n \n \n literal type\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n connected\n \n \n \n \n \n \n Default value : false\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:39\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n device\n \n \n \n \n \n \n Type : any\n\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:41\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n services\n \n \n \n \n \n \n Type : literal type\n\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:41\n \n \n\n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n connect\n \n \n \n \n \n \nconnect()\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:45\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n disconnect\n \n \n \n \n \n \ndisconnect()\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:54\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n getPrimaryService\n \n \n \n \n \n \ngetPrimaryService(service: BluetoothServiceUUID)\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:50\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n service\n \n BluetoothServiceUUID\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n export class FakeBluetoothDevice {\n gatt: BluetoothRemoteGATTServer | null = null;\n private listeners: {\n [key: string]: EventListener[]\n } = {\n gattserverdisconnected: []\n };\n\n constructor(public id: string, public name: string) {\n }\n\n addEventListener(type: string, listener: EventListener) {\n this.listeners[type] = [\n ...this.listeners[type],\n listener\n ];\n }\n\n disconnect() {\n const mockedEvent = {target: this} as unknown;\n this.listeners['gattserverdisconnected'].forEach(listener => listener(mockedEvent as Event));\n }\n\n clear() {\n this.id = \"\";\n this.name = \"\";\n this.listeners = {\n gattserverdisconnected: []\n };\n }\n}\n\nexport class FakeBluetoothRemoteGATTServer {\n connected = false;\n\n constructor(public device: any, public services: { [key: string]: { service: any, primary: boolean } }) {\n device.gatt = this;\n }\n\n connect() {\n this.connected = true;\n return Promise.resolve(this);\n }\n\n getPrimaryService(service: BluetoothServiceUUID) {\n return Promise.resolve(this.services[service].service);\n }\n\n disconnect() {\n this.device.disconnect();\n this.connected = false;\n }\n}\n\nexport class FakeBluetoothRemoteGATTService {\n constructor(public device: any, public characteristics: any) {\n this.characteristics.service = this;\n }\n\n getCharacteristic(characteristic: BluetoothCharacteristicUUID) {\n return Promise.resolve(this.characteristics[characteristic]);\n }\n}\n\nexport class FakeBluetoothRemoteGATTCharacteristic {\n value: DataView | undefined;\n properties: BluetoothCharacteristicProperties;\n private readonly initialValue: DataView | undefined;\n private listeners: {\n [key: string]: EventListener[]\n } = {\n characteristicvaluechanged: []\n };\n\n constructor(properties: BluetoothCharacteristicProperties, initialValue?: DataView) {\n this.properties = properties;\n this.value = initialValue;\n this.initialValue = initialValue;\n }\n\n readValue() {\n return Promise.resolve(this.value);\n }\n\n addEventListener(type: string, listener: EventListener) {\n this.listeners[type] = [\n ...this.listeners[type],\n listener\n ];\n }\n\n changeValue(value: DataView) {\n this.value = value;\n const mockedEvent = {target: this} as unknown;\n this.listeners['characteristicvaluechanged'].forEach(listener => listener(mockedEvent as Event));\n }\n\n clear() {\n this.value = this.initialValue;\n this.listeners = {\n characteristicvaluechanged: []\n };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/FakeBluetoothRemoteGATTService.html":{"url":"classes/FakeBluetoothRemoteGATTService.html","title":"class - FakeBluetoothRemoteGATTService","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n FakeBluetoothRemoteGATTService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n characteristics\n \n \n Public\n device\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getCharacteristic\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(device: any, characteristics: any)\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:60\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n device\n \n \n any\n \n \n \n No\n \n \n \n \n characteristics\n \n \n any\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n characteristics\n \n \n \n \n \n \n Type : any\n\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:61\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n device\n \n \n \n \n \n \n Type : any\n\n \n \n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:61\n \n \n\n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getCharacteristic\n \n \n \n \n \n \ngetCharacteristic(characteristic: BluetoothCharacteristicUUID)\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts:65\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n characteristic\n \n BluetoothCharacteristicUUID\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n export class FakeBluetoothDevice {\n gatt: BluetoothRemoteGATTServer | null = null;\n private listeners: {\n [key: string]: EventListener[]\n } = {\n gattserverdisconnected: []\n };\n\n constructor(public id: string, public name: string) {\n }\n\n addEventListener(type: string, listener: EventListener) {\n this.listeners[type] = [\n ...this.listeners[type],\n listener\n ];\n }\n\n disconnect() {\n const mockedEvent = {target: this} as unknown;\n this.listeners['gattserverdisconnected'].forEach(listener => listener(mockedEvent as Event));\n }\n\n clear() {\n this.id = \"\";\n this.name = \"\";\n this.listeners = {\n gattserverdisconnected: []\n };\n }\n}\n\nexport class FakeBluetoothRemoteGATTServer {\n connected = false;\n\n constructor(public device: any, public services: { [key: string]: { service: any, primary: boolean } }) {\n device.gatt = this;\n }\n\n connect() {\n this.connected = true;\n return Promise.resolve(this);\n }\n\n getPrimaryService(service: BluetoothServiceUUID) {\n return Promise.resolve(this.services[service].service);\n }\n\n disconnect() {\n this.device.disconnect();\n this.connected = false;\n }\n}\n\nexport class FakeBluetoothRemoteGATTService {\n constructor(public device: any, public characteristics: any) {\n this.characteristics.service = this;\n }\n\n getCharacteristic(characteristic: BluetoothCharacteristicUUID) {\n return Promise.resolve(this.characteristics[characteristic]);\n }\n}\n\nexport class FakeBluetoothRemoteGATTCharacteristic {\n value: DataView | undefined;\n properties: BluetoothCharacteristicProperties;\n private readonly initialValue: DataView | undefined;\n private listeners: {\n [key: string]: EventListener[]\n } = {\n characteristicvaluechanged: []\n };\n\n constructor(properties: BluetoothCharacteristicProperties, initialValue?: DataView) {\n this.properties = properties;\n this.value = initialValue;\n this.initialValue = initialValue;\n }\n\n readValue() {\n return Promise.resolve(this.value);\n }\n\n addEventListener(type: string, listener: EventListener) {\n this.listeners[type] = [\n ...this.listeners[type],\n listener\n ];\n }\n\n changeValue(value: DataView) {\n this.value = value;\n const mockedEvent = {target: this} as unknown;\n this.listeners['characteristicvaluechanged'].forEach(listener => listener(mockedEvent as Event));\n }\n\n clear() {\n this.value = this.initialValue;\n this.listeners = {\n characteristicvaluechanged: []\n };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/HumidityComponent.html":{"url":"components/HumidityComponent.html","title":"component - HumidityComponent","body":"\n \n\n\n\n\n\n Components\n \n HumidityComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/thingy52/humidity.component.ts\n\n\n\n\n\n \n Implements\n \n \n OnInit\n OnDestroy\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n \n providers\n \n PROVIDERS\n \n \n\n\n \n selector\n ble-humidity\n \n\n\n\n\n \n styles\n \n :host {\n display: block;\n }\n canvas {\n margin-left: -16px;\n }\n \n\n \n template\n \n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n chart\n \n \n \n chartRef\n \n \n series\n \n \n Public\n service\n \n \n Public\n snackBar\n \n \n streamSubscription\n \n \n valuesSubscription\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n disconnect\n \n \n hasError\n \n \n initChart\n \n \n ngOnDestroy\n \n \n ngOnInit\n \n \n requestValue\n \n \n updateValue\n \n \n \n \n\n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n device\n \n \n \n \n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(service: BleService, snackBar: MatSnackBar)\n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:48\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n service\n \n \n BleService\n \n \n \n No\n \n \n \n \n snackBar\n \n \n MatSnackBar\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n disconnect\n \n \n \n \n \n \ndisconnect()\n \n \n\n\n \n \n Defined in src/app/thingy52/humidity.component.ts:101\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n hasError\n \n \n \n \n \n \nhasError(error: string)\n \n \n\n\n \n \n Defined in src/app/thingy52/humidity.component.ts:108\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n error\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n initChart\n \n \n \n \n \n \ninitChart()\n \n \n\n\n \n \n Defined in src/app/thingy52/humidity.component.ts:71\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n ngOnDestroy\n \n \n \n \n \n \nngOnDestroy()\n \n \n\n\n \n \n Defined in src/app/thingy52/humidity.component.ts:112\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n ngOnInit\n \n \n \n \n \n \nngOnInit()\n \n \n\n\n \n \n Defined in src/app/thingy52/humidity.component.ts:61\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n requestValue\n \n \n \n \n \n \nrequestValue()\n \n \n\n\n \n \n Defined in src/app/thingy52/humidity.component.ts:81\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n updateValue\n \n \n \n \n \n \nupdateValue(value: number | literal type)\n \n \n\n\n \n \n Defined in src/app/thingy52/humidity.component.ts:90\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n number | literal type\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n chart\n \n \n \n \n \n \n Type : SmoothieChart | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:39\n \n \n\n\n \n \n \n \n \n \n \n \n \n chartRef\n \n \n \n \n \n \n Type : ElementRef | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Decorators : \n \n \n @ViewChild('chart', {static: true})\n \n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:44\n \n \n\n\n \n \n \n \n \n \n \n \n series\n \n \n \n \n \n \n Type : TimeSeries | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:38\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n service\n \n \n \n \n \n \n Type : BleService\n\n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:51\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n snackBar\n \n \n \n \n \n \n Type : MatSnackBar\n\n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:52\n \n \n\n\n \n \n \n \n \n \n \n \n streamSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:41\n \n \n\n\n \n \n \n \n \n \n \n \n valuesSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:40\n \n \n\n\n \n \n\n\n \n \n Accessors\n \n \n \n \n \n \n device\n \n \n\n \n \n getdevice()\n \n \n \n \n Defined in src/app/thingy52/humidity.component.ts:46\n \n \n\n \n \n\n\n\n\n \n import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { BluetoothCore, BrowserWebBluetooth, ConsoleLoggerService } from '@manekinekko/angular-web-bluetooth';\nimport { of, Subscription } from 'rxjs';\nimport { SmoothieChart, TimeSeries } from 'smoothie';\nimport { BleService } from '../ble.service';\n\nexport const bleCore = (b: BrowserWebBluetooth, l: ConsoleLoggerService) => new BluetoothCore(b, l);\nexport const bleService = (b: BluetoothCore) => new BleService(b);\n\n\n// make sure we get a singleton instance of each service\nconst PROVIDERS = [{\n provide: BluetoothCore,\n useFactory: bleCore,\n deps: [BrowserWebBluetooth, ConsoleLoggerService]\n}, {\n provide: BleService,\n useFactory: bleService,\n deps: [BluetoothCore]\n}];\n\n@Component({\n selector: 'ble-humidity',\n template: `\n \n `,\n styles: [`\n :host {\n display: block;\n }\n canvas {\n margin-left: -16px;\n }`],\n providers: PROVIDERS\n})\nexport class HumidityComponent implements OnInit, OnDestroy {\n series: TimeSeries | null = null;\n chart: SmoothieChart | null = null;\n valuesSubscription: Subscription | null = null;\n streamSubscription: Subscription | null = null;\n\n @ViewChild('chart', { static: true })\n chartRef: ElementRef | null = null;\n\n get device() {\n return this.service.getDevice();\n }\n\n constructor(\n public service: BleService,\n public snackBar: MatSnackBar) {\n\n service.config({\n decoder: (value: DataView) => value.getInt8(0),\n service: 'ef680200-9b35-4933-9b10-52ffa9740042',\n characteristic: 'ef680203-9b35-4933-9b10-52ffa9740042'\n });\n }\n\n ngOnInit() {\n this.initChart();\n\n this.streamSubscription = this.service.stream()\n .subscribe({\n next: (val: number | { [key: string]: number; }) => this.updateValue(val),\n error: (err) => this.hasError(err)\n });\n }\n\n initChart() {\n this.series = new window.TimeSeries() as TimeSeries;\n const canvas = this.chartRef!.nativeElement;\n // tslint:disable-next-line: max-line-length\n this.chart = new window.SmoothieChart({ interpolation: 'step', grid: { fillStyle: '#ffffff', strokeStyle: 'rgba(119,119,119,0.18)', borderVisible: false }, labels: { fillStyle: '#000000', fontSize: 17 }, tooltip: true });\n this.chart!.addTimeSeries(this.series, { lineWidth: 1, strokeStyle: '#ff0000', fillStyle: 'rgba(255,161,161,0.30)' });\n this.chart!.streamTo(canvas);\n this.chart!.stop();\n }\n\n requestValue() {\n this.valuesSubscription = this.service.value()\n .subscribe(\n () => null,\n () => of(this.hasError.bind(this)),\n );\n }\n\n\n updateValue(value: number | { [key: string]: number; }) {\n console.log('Reading humidity %d', value);\n\n if (typeof value === 'number') {\n this.series!.append(Date.now(), value);\n this.chart!.start();\n }\n\n }\n\n\n disconnect() {\n this.service.disconnectDevice();\n this.series!.clear();\n this.chart!.stop();\n this.valuesSubscription!.unsubscribe();\n }\n\n hasError(error: string) {\n this.snackBar.open(error, 'Close');\n }\n\n ngOnDestroy() {\n this.valuesSubscription!.unsubscribe();\n this.streamSubscription!.unsubscribe();\n }\n}\n\n \n\n\n \n \n :host {\n display: block;\n }\n canvas {\n margin-left: -16px;\n }\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ''\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'ble-root'},{'name': 'BatteryLevelComponent', 'selector': 'ble-battery-level'},{'name': 'DashboardComponent', 'selector': 'ble-dashboard'},{'name': 'HumidityComponent', 'selector': 'ble-humidity'},{'name': 'StepCounterComponent', 'selector': 'ble-stepcounter'},{'name': 'TemperatureComponent', 'selector': 'ble-temperature'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'HumidityComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/Logger.html":{"url":"interfaces/Logger.html","title":"interface - Logger","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n Logger\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Methods\n \n \n \n \n \n \n \n error\n \n \n \n \n log\n \n \n \n \n warn\n \n \n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n \n \n error\n \n \n \n \n \n \nerror(args: string[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:5\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n string[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n log\n \n \n \n \n \n \nlog(args: string[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:4\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n string[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n warn\n \n \n \n \n \n \nwarn(args: string[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:6\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n string[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\nexport interface Logger {\n log(args: string[]): void;\n error(args: string[]): void;\n warn(args: string[]): void;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConsoleLoggerService implements Logger {\n log(...args: any[]) {\n console.log.apply(console, args);\n }\n error(...args: any[]) {\n console.error.apply(console, args);\n }\n warn(...args: any[]) {\n console.warn.apply(console, args);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NoLoggerService implements Logger {\n log(...args: any[]) {}\n error(...args: any[]) {}\n warn(...args: any[]) {}\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/NoLoggerService.html":{"url":"injectables/NoLoggerService.html","title":"injectable - NoLoggerService","body":"\n \n\n\n\n\n\n\n\n\n\n Injectables\n NoLoggerService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n error\n \n \n log\n \n \n warn\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n error\n \n \n \n \n \n \nerror(...args: any[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:29\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n log\n \n \n \n \n \n \nlog(...args: any[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:28\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n warn\n \n \n \n \n \n \nwarn(...args: any[])\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts:30\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n args\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\nexport interface Logger {\n log(args: string[]): void;\n error(args: string[]): void;\n warn(args: string[]): void;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConsoleLoggerService implements Logger {\n log(...args: any[]) {\n console.log.apply(console, args);\n }\n error(...args: any[]) {\n console.error.apply(console, args);\n }\n warn(...args: any[]) {\n console.warn.apply(console, args);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NoLoggerService implements Logger {\n log(...args: any[]) {}\n error(...args: any[]) {}\n warn(...args: any[]) {}\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/ServerWebBluetooth.html":{"url":"injectables/ServerWebBluetooth.html","title":"injectable - ServerWebBluetooth","body":"\n \n\n\n\n\n\n\n\n\n\n Injectables\n ServerWebBluetooth\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/platform/server.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Static\n instance\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Static\n instance\n \n \n \n \n \n \n \n instance()\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/platform/server.ts:5\n \n \n\n\n \n \n\n \n Returns : {}\n\n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ServerWebBluetooth {\n static instance() {\n // mocked object for now\n return {};\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/StepCounterComponent.html":{"url":"components/StepCounterComponent.html","title":"component - StepCounterComponent","body":"\n \n\n\n\n\n\n Components\n \n StepCounterComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/thingy52/stepcounter.component.ts\n\n\n\n\n\n \n Implements\n \n \n OnInit\n OnDestroy\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n \n providers\n \n PROVIDERS\n \n \n\n\n \n selector\n ble-stepcounter\n \n\n\n\n\n \n styles\n \n :host {\n display: block;\n }\n span {\n font-size: 5em;\n position: absolute;\n top: 112px;\n left: 214px;\n width: 120px;\n display: block;\n text-align: center;\n }\n mat-icon {\n font-size: 11em;\n width: 100%;\n height: 100%;\n }\n \n\n \n template\n {{ value || \"000\" }}\ndirections_walk\n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n service\n \n \n Public\n snackBar\n \n \n streamSubscription\n \n \n value\n \n \n valuesSubscription\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n disconnect\n \n \n hasError\n \n \n ngOnDestroy\n \n \n ngOnInit\n \n \n requestValue\n \n \n updateValue\n \n \n \n \n\n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n device\n \n \n \n \n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(service: BleService, snackBar: MatSnackBar)\n \n \n \n \n Defined in src/app/thingy52/stepcounter.component.ts:55\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n service\n \n \n BleService\n \n \n \n No\n \n \n \n \n snackBar\n \n \n MatSnackBar\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n disconnect\n \n \n \n \n \n \ndisconnect()\n \n \n\n\n \n \n Defined in src/app/thingy52/stepcounter.component.ts:90\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n hasError\n \n \n \n \n \n \nhasError(error: string)\n \n \n\n\n \n \n Defined in src/app/thingy52/stepcounter.component.ts:95\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n error\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ngOnDestroy\n \n \n \n \n \n \nngOnDestroy()\n \n \n\n\n \n \n Defined in src/app/thingy52/stepcounter.component.ts:99\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n ngOnInit\n \n \n \n \n \n \nngOnInit()\n \n \n\n\n \n \n Defined in src/app/thingy52/stepcounter.component.ts:72\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n requestValue\n \n \n \n \n \n \nrequestValue()\n \n \n\n\n \n \n Defined in src/app/thingy52/stepcounter.component.ts:80\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n updateValue\n \n \n \n \n \n \nupdateValue(value: number)\n \n \n\n\n \n \n Defined in src/app/thingy52/stepcounter.component.ts:85\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n number\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n service\n \n \n \n \n \n \n Type : BleService\n\n \n \n \n \n Defined in src/app/thingy52/stepcounter.component.ts:58\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n snackBar\n \n \n \n \n \n \n Type : MatSnackBar\n\n \n \n \n \n Defined in src/app/thingy52/stepcounter.component.ts:59\n \n \n\n\n \n \n \n \n \n \n \n \n streamSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/stepcounter.component.ts:50\n \n \n\n\n \n \n \n \n \n \n \n \n value\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Default value : 0\n \n \n \n \n Defined in src/app/thingy52/stepcounter.component.ts:51\n \n \n\n\n \n \n \n \n \n \n \n \n valuesSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/stepcounter.component.ts:49\n \n \n\n\n \n \n\n\n \n \n Accessors\n \n \n \n \n \n \n device\n \n \n\n \n \n getdevice()\n \n \n \n \n Defined in src/app/thingy52/stepcounter.component.ts:53\n \n \n\n \n \n\n\n\n\n \n import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { BluetoothCore, BrowserWebBluetooth, ConsoleLoggerService } from '@manekinekko/angular-web-bluetooth';\nimport { Subscription } from 'rxjs';\nimport { BleService } from '../ble.service';\n\nexport const bleCore = (b: BrowserWebBluetooth, l: ConsoleLoggerService) => new BluetoothCore(b, l);\nexport const bleService = (b: BluetoothCore) => new BleService(b);\n\n\n// make sure we get a singleton instance of each service\nconst PROVIDERS = [{\n provide: BluetoothCore,\n useFactory: bleCore,\n deps: [BrowserWebBluetooth, ConsoleLoggerService]\n}, {\n provide: BleService,\n useFactory: bleService,\n deps: [BluetoothCore]\n}];\n\n@Component({\n selector: 'ble-stepcounter',\n template: `\n {{ value || \"000\" }}\n directions_walk\n `,\n styles: [`\n :host {\n display: block;\n }\n span {\n font-size: 5em;\n position: absolute;\n top: 112px;\n left: 214px;\n width: 120px;\n display: block;\n text-align: center;\n }\n mat-icon {\n font-size: 11em;\n width: 100%;\n height: 100%;\n }`],\n providers: PROVIDERS\n})\nexport class StepCounterComponent implements OnInit, OnDestroy {\n valuesSubscription: Subscription | null = null;\n streamSubscription: Subscription | null = null;\n value = 0;\n\n get device() {\n return this.service.getDevice();\n }\n\n constructor(\n public service: BleService,\n public snackBar: MatSnackBar) {\n\n service.config({\n decoder: (value: DataView) => {\n const count = value.getUint32(0, true);\n const time = value.getUint32(4, true);\n return count;\n },\n service: 'ef680400-9b35-4933-9b10-52ffa9740042',\n characteristic: 'ef680405-9b35-4933-9b10-52ffa9740042'\n });\n }\n\n ngOnInit() {\n this.streamSubscription = this.service.stream()\n .subscribe({\n next: (val: number) => this.updateValue(val),\n error: (err) => this.hasError(err)\n });\n }\n\n requestValue() {\n this.valuesSubscription = this.service.value()\n .subscribe(() => null, error => this.hasError.bind(this));\n }\n\n updateValue(value: number) {\n console.log('Reading step counter %d', value);\n this.value = value;\n }\n\n disconnect() {\n this.service.disconnectDevice();\n this.valuesSubscription!.unsubscribe();\n }\n\n hasError(error: string) {\n this.snackBar.open(error, 'Close');\n }\n\n ngOnDestroy() {\n this.valuesSubscription!.unsubscribe();\n this.streamSubscription!.unsubscribe();\n }\n}\n\n\n\n \n\n\n \n \n :host {\n display: block;\n }\n span {\n font-size: 5em;\n position: absolute;\n top: 112px;\n left: 214px;\n width: 120px;\n display: block;\n text-align: center;\n }\n mat-icon {\n font-size: 11em;\n width: 100%;\n height: 100%;\n }\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = '{{ value || \"000\" }}directions_walk'\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'ble-root'},{'name': 'BatteryLevelComponent', 'selector': 'ble-battery-level'},{'name': 'DashboardComponent', 'selector': 'ble-dashboard'},{'name': 'HumidityComponent', 'selector': 'ble-humidity'},{'name': 'StepCounterComponent', 'selector': 'ble-stepcounter'},{'name': 'TemperatureComponent', 'selector': 'ble-temperature'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'StepCounterComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TemperatureComponent.html":{"url":"components/TemperatureComponent.html","title":"component - TemperatureComponent","body":"\n \n\n\n\n\n\n Components\n \n TemperatureComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/thingy52/temperature.component.ts\n\n\n\n\n\n \n Implements\n \n \n OnInit\n OnDestroy\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n \n providers\n \n PROVIDERS\n \n \n\n\n \n selector\n ble-temperature\n \n\n\n\n\n \n styles\n \n :host {\n display: block;\n }\n canvas {\n margin-left: -16px;\n }\n \n \n\n \n template\n \n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n chart\n \n \n \n chartRef\n \n \n series\n \n \n Public\n service\n \n \n Public\n snackBar\n \n \n streamSubscription\n \n \n valuesSubscription\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n disconnect\n \n \n hasError\n \n \n initChart\n \n \n ngOnDestroy\n \n \n ngOnInit\n \n \n requestValue\n \n \n updateValue\n \n \n \n \n\n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n device\n \n \n \n \n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(service: BleService, snackBar: MatSnackBar)\n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:62\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n service\n \n \n BleService\n \n \n \n No\n \n \n \n \n snackBar\n \n \n MatSnackBar\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n disconnect\n \n \n \n \n \n \ndisconnect()\n \n \n\n\n \n \n Defined in src/app/thingy52/temperature.component.ts:126\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n hasError\n \n \n \n \n \n \nhasError(error: string)\n \n \n\n\n \n \n Defined in src/app/thingy52/temperature.component.ts:133\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n error\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n initChart\n \n \n \n \n \n \ninitChart()\n \n \n\n\n \n \n Defined in src/app/thingy52/temperature.component.ts:85\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n ngOnDestroy\n \n \n \n \n \n \nngOnDestroy()\n \n \n\n\n \n \n Defined in src/app/thingy52/temperature.component.ts:137\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n ngOnInit\n \n \n \n \n \n \nngOnInit()\n \n \n\n\n \n \n Defined in src/app/thingy52/temperature.component.ts:76\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n requestValue\n \n \n \n \n \n \nrequestValue()\n \n \n\n\n \n \n Defined in src/app/thingy52/temperature.component.ts:110\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n updateValue\n \n \n \n \n \n \nupdateValue(value: number | literal type)\n \n \n\n\n \n \n Defined in src/app/thingy52/temperature.component.ts:117\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n number | literal type\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n chart\n \n \n \n \n \n \n Type : SmoothieChart | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:53\n \n \n\n\n \n \n \n \n \n \n \n \n \n chartRef\n \n \n \n \n \n \n Type : ElementRef | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Decorators : \n \n \n @ViewChild('chart', {static: true})\n \n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:58\n \n \n\n\n \n \n \n \n \n \n \n \n series\n \n \n \n \n \n \n Type : TimeSeries | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:52\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n service\n \n \n \n \n \n \n Type : BleService\n\n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:64\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n snackBar\n \n \n \n \n \n \n Type : MatSnackBar\n\n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:64\n \n \n\n\n \n \n \n \n \n \n \n \n streamSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:55\n \n \n\n\n \n \n \n \n \n \n \n \n valuesSubscription\n \n \n \n \n \n \n Type : Subscription | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:54\n \n \n\n\n \n \n\n\n \n \n Accessors\n \n \n \n \n \n \n device\n \n \n\n \n \n getdevice()\n \n \n \n \n Defined in src/app/thingy52/temperature.component.ts:60\n \n \n\n \n \n\n\n\n\n \n import {\n Component,\n ElementRef,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n BluetoothCore,\n BrowserWebBluetooth,\n ConsoleLoggerService,\n} from '@manekinekko/angular-web-bluetooth';\nimport { Subscription } from 'rxjs';\nimport { SmoothieChart, TimeSeries } from 'smoothie';\nimport { BleService } from '../ble.service';\n\nexport const bleCore = (b: BrowserWebBluetooth, l: ConsoleLoggerService) =>\n new BluetoothCore(b, l);\nexport const bleService = (b: BluetoothCore) => new BleService(b);\n\n// make sure we get a singleton instance of each service\nconst PROVIDERS = [\n {\n provide: BluetoothCore,\n useFactory: bleCore,\n deps: [BrowserWebBluetooth, ConsoleLoggerService],\n },\n {\n provide: BleService,\n useFactory: bleService,\n deps: [BluetoothCore],\n },\n];\n\n@Component({\n selector: 'ble-temperature',\n template: ` `,\n styles: [\n `\n :host {\n display: block;\n }\n canvas {\n margin-left: -16px;\n }\n `,\n ],\n providers: PROVIDERS,\n})\nexport class TemperatureComponent implements OnInit, OnDestroy {\n series: TimeSeries | null = null;\n chart: SmoothieChart | null = null;\n valuesSubscription: Subscription | null = null;\n streamSubscription: Subscription | null = null;\n\n @ViewChild('chart', { static: true })\n chartRef: ElementRef | null = null;\n\n get device() {\n return this.service.getDevice();\n }\n\n constructor(public service: BleService, public snackBar: MatSnackBar) {\n service.config({\n characteristic: 'ef680201-9b35-4933-9b10-52ffa9740042',\n service: 'ef680200-9b35-4933-9b10-52ffa9740042',\n decoder: (value: DataView) => {\n const integer = value.getInt8(0);\n const decimal = value.getUint8(1);\n return integer + decimal / 100;\n },\n });\n }\n\n ngOnInit() {\n this.initChart();\n\n this.streamSubscription = this.service.stream().subscribe({\n next: (val: number | { [key: string]: number; }) => this.updateValue(val),\n error: (err) => this.hasError(err),\n });\n }\n\n initChart() {\n this.series = new window.TimeSeries() as TimeSeries;\n const canvas = this.chartRef!.nativeElement;\n this.chart = new window.SmoothieChart({\n interpolation: 'step',\n grid: {\n fillStyle: '#ffffff',\n strokeStyle: 'rgba(119,119,119,0.18)',\n borderVisible: false,\n },\n labels: {\n fillStyle: '#000000',\n fontSize: 17,\n },\n tooltip: true,\n });\n this.chart!.addTimeSeries(this.series, {\n lineWidth: 1,\n strokeStyle: '#ff0000',\n fillStyle: 'rgba(255,161,161,0.30)',\n });\n this.chart!.streamTo(canvas);\n this.chart!.stop();\n }\n\n requestValue() {\n this.valuesSubscription = this.service.value().subscribe(\n () => null,\n (error) => this.hasError.bind(this)\n );\n }\n\n updateValue(value: number | { [key: string]: number; }) {\n console.log('Reading temperature %d', value);\n\n if (typeof value === 'number') {\n this.series!.append(Date.now(), value);\n this.chart!.start();\n }\n }\n\n disconnect() {\n this.service.disconnectDevice();\n this.series!.clear();\n this.chart!.stop();\n this.valuesSubscription!.unsubscribe();\n }\n\n hasError(error: string) {\n this.snackBar.open(error, 'Close');\n }\n\n ngOnDestroy() {\n this.valuesSubscription!.unsubscribe();\n this.streamSubscription!.unsubscribe();\n }\n}\n\n \n\n\n \n \n :host {\n display: block;\n }\n canvas {\n margin-left: -16px;\n }\n \n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ''\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'ble-root'},{'name': 'BatteryLevelComponent', 'selector': 'ble-battery-level'},{'name': 'DashboardComponent', 'selector': 'ble-dashboard'},{'name': 'HumidityComponent', 'selector': 'ble-humidity'},{'name': 'StepCounterComponent', 'selector': 'ble-stepcounter'},{'name': 'TemperatureComponent', 'selector': 'ble-temperature'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TemperatureComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules/WebBluetoothModule.html":{"url":"modules/WebBluetoothModule.html","title":"module - WebBluetoothModule","body":"\n \n\n\n\n\n Modules\n WebBluetoothModule\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts\n \n\n\n\n\n\n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n \n \n Static\n forRoot\n \n \n \n \n \n \n \n forRoot(options: AWBOptions)\n \n \n\n\n \n \n Defined in projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts:32\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n Default value\n \n \n \n \n options\n \n AWBOptions\n \n\n \n No\n \n\n \n {}\n \n\n \n \n \n \n \n Returns : ModuleWithProviders\n\n \n \n \n \n \n \n \n \n\n \n\n\n \n import { NgModule, ModuleWithProviders, InjectionToken, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BluetoothCore } from './bluetooth.service';\nimport { BrowserWebBluetooth } from './platform/browser';\n\nimport { ConsoleLoggerService, NoLoggerService } from './logger.service';\n\nexport interface AWBOptions {\n enableTracing?: boolean;\n}\n\nexport function browserWebBluetooth() {\n return new BrowserWebBluetooth();\n}\n\nexport function consoleLoggerServiceConfig(options: AWBOptions) {\n if (options && options.enableTracing) {\n return new ConsoleLoggerService();\n } else {\n return new NoLoggerService();\n }\n}\nexport function makeMeTokenInjector() {\n return new InjectionToken('AWBOptions');\n}\n\n@NgModule({\n imports: [CommonModule]\n})\nexport class WebBluetoothModule {\n static forRoot(options: AWBOptions = {}): ModuleWithProviders {\n return {\n ngModule: WebBluetoothModule,\n providers: [\n BluetoothCore,\n {\n provide: BrowserWebBluetooth,\n useFactory: browserWebBluetooth\n },\n {\n provide: makeMeTokenInjector,\n useValue: options\n },\n {\n provide: ConsoleLoggerService,\n useFactory: consoleLoggerServiceConfig,\n deps: [makeMeTokenInjector]\n }\n ]\n };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"coverage.html":{"url":"coverage.html","title":"coverage - coverage","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Documentation coverage\n\n\n\n \n\n\n\n \n \n File\n Type\n Identifier\n Statements\n \n \n \n \n \n \n e2e/src/app.po.ts\n \n class\n AppPage\n \n 0 %\n (0/3)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts\n \n interface\n AWBOptions\n \n 0 %\n (0/2)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts\n \n function\n browserWebBluetooth\n \n 0 %\n (0/1)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts\n \n function\n consoleLoggerServiceConfig\n \n 0 %\n (0/1)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts\n \n function\n makeMeTokenInjector\n \n 0 %\n (0/1)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.service.ts\n \n injectable\n BluetoothCore\n \n 67 %\n (21/31)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.service.ts\n \n type alias\n ReadValueOptions\n \n 0 %\n (0/1)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/lang/uuids/ti-sensortag2.ts\n \n variable\n TI_SENSORAG_SERVICES\n \n 0 %\n (0/1)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/lang/uuids/ti-sensortag2.ts\n \n variable\n TiTag\n \n 0 %\n (0/1)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts\n \n injectable\n ConsoleLoggerService\n \n 0 %\n (0/4)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts\n \n injectable\n NoLoggerService\n \n 0 %\n (0/4)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/logger.service.ts\n \n interface\n Logger\n \n 0 %\n (0/4)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/platform/browser.ts\n \n injectable\n BrowserWebBluetooth\n \n 0 %\n (0/4)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/platform/server.ts\n \n injectable\n ServerWebBluetooth\n \n 0 %\n (0/2)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts\n \n class\n FakeBluetoothDevice\n \n 0 %\n (0/9)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts\n \n class\n FakeBluetoothRemoteGATTCharacteristic\n \n 0 %\n (0/10)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts\n \n class\n FakeBluetoothRemoteGATTServer\n \n 0 %\n (0/8)\n \n \n \n \n \n projects/manekinekko/angular-web-bluetooth/src/lib/test.utils.ts\n \n class\n FakeBluetoothRemoteGATTService\n \n 0 %\n (0/5)\n \n \n \n \n \n src/app/app.component.ts\n \n component\n AppComponent\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/ble.service.ts\n \n injectable\n BleService\n \n 0 %\n (0/9)\n \n \n \n \n \n src/app/ble.service.ts\n \n type alias\n ServiceOptions\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/dashboard/dashboard.component.ts\n \n component\n DashboardComponent\n \n 0 %\n (0/2)\n \n \n \n \n \n src/app/thingy52/battery-level.component.ts\n \n component\n BatteryLevelComponent\n \n 0 %\n (0/18)\n \n \n \n \n \n src/app/thingy52/battery-level.component.ts\n \n variable\n bleCore\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/battery-level.component.ts\n \n variable\n bleService\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/battery-level.component.ts\n \n variable\n PROVIDERS\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/humidity.component.ts\n \n component\n HumidityComponent\n \n 0 %\n (0/16)\n \n \n \n \n \n src/app/thingy52/humidity.component.ts\n \n variable\n bleCore\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/humidity.component.ts\n \n variable\n bleService\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/humidity.component.ts\n \n variable\n PROVIDERS\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/stepcounter.component.ts\n \n component\n StepCounterComponent\n \n 0 %\n (0/13)\n \n \n \n \n \n src/app/thingy52/stepcounter.component.ts\n \n variable\n bleCore\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/stepcounter.component.ts\n \n variable\n bleService\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/stepcounter.component.ts\n \n variable\n PROVIDERS\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/temperature.component.ts\n \n component\n TemperatureComponent\n \n 0 %\n (0/16)\n \n \n \n \n \n src/app/thingy52/temperature.component.ts\n \n variable\n bleCore\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/temperature.component.ts\n \n variable\n bleService\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app/thingy52/temperature.component.ts\n \n variable\n PROVIDERS\n \n 0 %\n (0/1)\n \n \n \n \n \n src/environments/environment.prod.ts\n \n variable\n environment\n \n 0 %\n (0/1)\n \n \n \n \n \n src/environments/environment.ts\n \n variable\n environment\n \n 0 %\n (0/1)\n \n \n \n\n\n\n\n\n new Tablesort(document.getElementById('coverage-table'));\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"dependencies.html":{"url":"dependencies.html","title":"package-dependencies - dependencies","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n Dependencies\n \n \n \n @angular/animations : ^17.1.3\n \n @angular/cdk : ^17.1.2\n \n @angular/common : ^17.1.3\n \n @angular/compiler : ^17.1.3\n \n @angular/core : ^17.1.3\n \n @angular/forms : ^17.1.3\n \n @angular/material : ^17.1.2\n \n @angular/platform-browser : ^17.1.3\n \n @angular/platform-browser-dynamic : ^17.1.3\n \n @angular/router : ^17.1.3\n \n @types/web-bluetooth : 0.0.6\n \n rxjs : ~7.8.0\n \n smoothie : ^1.35.0\n \n ts-jest : ^29.0.5\n \n tslib : ^2.3.0\n \n zone.js : ~0.14.3\n \n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/functions.html":{"url":"miscellaneous/functions.html","title":"miscellaneous-functions - functions","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Miscellaneous\n Functions\n\n\n\n Index\n \n \n \n \n \n \n browserWebBluetooth   (projects/.../bluetooth.module.ts)\n \n \n consoleLoggerServiceConfig   (projects/.../bluetooth.module.ts)\n \n \n makeMeTokenInjector   (projects/.../bluetooth.module.ts)\n \n \n \n \n \n \n\n\n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.module.ts\n \n \n \n \n \n \n \n browserWebBluetooth\n \n \n \n \n \n \nbrowserWebBluetooth()\n \n \n\n\n\n\n \n \n \n \n \n \n \n \n consoleLoggerServiceConfig\n \n \n \n \n \n \nconsoleLoggerServiceConfig(options: AWBOptions)\n \n \n\n\n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n options\n \n AWBOptions\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n makeMeTokenInjector\n \n \n \n \n \n \nmakeMeTokenInjector()\n \n \n\n\n\n\n \n \n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"index.html":{"url":"index.html","title":"getting-started - index","body":"\n \n\n\n \n\nThe missing Web Bluetooth module for Angular\n\n\nInstall\nExample :npm install -S @manekinekko/angular-web-bluetooth @types/web-bluetooth\nNote: Make also sure the @types/web-bluetooth is installed correctly in your node_modules.\n\nGetting started\n1) import the WebBluetoothModule module\nExample :import { NgModule } from '@angular/core';\nimport { WebBluetoothModule } from '@manekinekko/angular-web-bluetooth';\n\n@NgModule({\n imports: [\n //...,\n WebBluetoothModule.forRoot({\n enableTracing: true // or false, this will enable logs in the browser's console\n })\n ]\n //...\n})\nexport class AppModule {}2.a) use it in your service/component (the easiest way)\nHere is an annotated example using the BluetoothCore service:\nExample :import { Injectable } from '@angular/core';\nimport { BluetoothCore } from '@manekinekko/angular-web-bluetooth';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BatteryLevelService {\n\n constructor(public readonly ble: BluetoothCore) {}\n\n getDevice() {\n // call this method to get the connected device\n return this.ble.getDevice$();\n }\n\n stream() {\n // call this method to get a stream of values emitted by the device for a given characteristic\n return this.ble.streamValues$().pipe(\n map((value: DataView) => value.getInt8(0))\n );\n }\n\n disconnectDevice() {\n // call this method to disconnect from the device. This method will also stop clear all subscribed notifications\n this.ble.disconnectDevice();\n }\n\n value() {\n console.log('Getting Battery level...');\n\n return this.ble\n .value$({\n service: 'battery_service',\n characteristic: 'battery_level'\n });\n }\n\n}2.b) use it in your service/component (the advanced way)\nHere is an annotated example using the BluetoothCore service:\nExample :import { Injectable } from '@angular/core';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { BluetoothCore } from '@manekinekko/angular-web-bluetooth';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BatteryLevelService {\n static GATT_CHARACTERISTIC_BATTERY_LEVEL = 'battery_level';\n static GATT_PRIMARY_SERVICE = 'battery_service';\n\n constructor(public ble: BluetoothCore) {}\n\n getDevice() {\n // call this method to get the connected device\n return this.ble.getDevice$();\n }\n\n stream() {\n // call this method to get a stream of values emitted by the device\n return this.ble.streamValues$().pipe(map((value: DataView) => value.getUint8(0)));\n }\n\n disconnectDevice() {\n this.ble.disconnectDevice();\n }\n\n /**\n * Get Battery Level GATT Characteristic value.\n * This logic is specific to this service, this is why we can't abstract it elsewhere.\n * The developer is free to provide any service, and characteristics they want.\n *\n * @return Emites the value of the requested service read from the device\n */\n value() {\n console.log('Getting Battery level...');\n\n return this.ble\n\n // 1) call the discover method will trigger the discovery process (by the browser)\n .discover$({\n acceptAllDevices: true,\n optionalServices: [BatteryLevelService.GATT_PRIMARY_SERVICE]\n })\n .pipe(\n\n // 2) get that service\n mergeMap((gatt: BluetoothRemoteGATTServer) => {\n return this.ble.getPrimaryService$(gatt, BatteryLevelService.GATT_PRIMARY_SERVICE);\n }),\n\n // 3) get a specific characteristic on that service\n mergeMap((primaryService: BluetoothRemoteGATTService) => {\n return this.ble.getCharacteristic$(primaryService, BatteryLevelService.GATT_CHARACTERISTIC_BATTERY_LEVEL);\n }),\n\n // 4) ask for the value of that characteristic (will return a DataView)\n mergeMap((characteristic: BluetoothRemoteGATTCharacteristic) => {\n return this.ble.readValue$(characteristic);\n }),\n\n // 5) on that DataView, get the right value\n map((value: DataView) => value.getUint8(0))\n )\n }\n}API documentation\nThe API documentation can be found here: https://manekinekko.github.io/angular-web-bluetooth/\nNeed a starter?\n\n\nThis project serves also as a starter. Run the following command:\nExample :npm startBlog post\nCheckout my full blog post on dev.to about how to use this package in your app.\nHave a PR?\nAll contributions are welcome. Here are few open issues that I need help with ;)\nLicense\nThe MIT License (MIT) Copyright (c) 2017 - Wassim CHEGHAM\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"license.html":{"url":"license.html","title":"getting-started - license","body":"\n \n\nThe MIT License (MIT) Copyright (c) 2017 - Wassim CHEGHAM\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules.html":{"url":"modules.html","title":"modules - modules","body":"\n \n\n\n\n\n Modules\n\n\n \n \n \n \n AppModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n WebBluetoothModule\n \n \n \n No graph available.\n \n \n Browse\n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"overview.html":{"url":"overview.html","title":"overview - overview","body":"\n \n\n\n\n Overview\n\n \n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_AppModule\n\n\n\ncluster_AppModule_declarations\n\n\n\ncluster_AppModule_imports\n\n\n\ncluster_AppModule_bootstrap\n\n\n\n\nAppComponent\n\nAppComponent\n\n\n\nAppModule\n\nAppModule\n\nAppModule -->\n\nAppComponent->AppModule\n\n\n\n\n\nBatteryLevelComponent\n\nBatteryLevelComponent\n\nAppModule -->\n\nBatteryLevelComponent->AppModule\n\n\n\n\n\nDashboardComponent\n\nDashboardComponent\n\nAppModule -->\n\nDashboardComponent->AppModule\n\n\n\n\n\nHumidityComponent\n\nHumidityComponent\n\nAppModule -->\n\nHumidityComponent->AppModule\n\n\n\n\n\nStepCounterComponent\n\nStepCounterComponent\n\nAppModule -->\n\nStepCounterComponent->AppModule\n\n\n\n\n\nTemperatureComponent\n\nTemperatureComponent\n\nAppModule -->\n\nTemperatureComponent->AppModule\n\n\n\n\n\nAppComponent \n\nAppComponent \n\nAppComponent -->\n\nAppModule->AppComponent \n\n\n\n\n\nWebBluetoothModule\n\nWebBluetoothModule\n\nAppModule -->\n\nWebBluetoothModule->AppModule\n\n\n\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n \n\n \n \n \n \n \n \n 2 Modules\n \n \n \n \n \n \n \n \n 6 Components\n \n \n \n \n \n \n \n 6 Injectables\n \n \n \n \n \n \n \n 5 Classes\n \n \n \n \n \n \n \n 2 Interfaces\n \n \n \n \n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"properties.html":{"url":"properties.html","title":"package-properties - properties","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n Properties\n \n \n \n Version : 17.1.0\n \n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/typealiases.html":{"url":"miscellaneous/typealiases.html","title":"miscellaneous-typealiases - typealiases","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Miscellaneous\n Type aliases\n\n\n\n Index\n \n \n \n \n \n \n ReadValueOptions   (projects/.../bluetooth.service.ts)\n \n \n ServiceOptions   (src/.../ble.service.ts)\n \n \n \n \n \n \n\n\n projects/manekinekko/angular-web-bluetooth/src/lib/bluetooth.service.ts\n \n \n \n \n \n \n ReadValueOptions\n \n \n \n \n literal type\n\n \n \n \n \n src/app/ble.service.ts\n \n \n \n \n \n \n ServiceOptions\n \n \n \n \n literal type\n\n \n \n \n \n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/variables.html":{"url":"miscellaneous/variables.html","title":"miscellaneous-variables - variables","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Miscellaneous\n Variables\n\n\n\n Index\n \n \n \n \n \n \n bleCore   (src/.../battery-level.component.ts)\n \n \n bleCore   (src/.../humidity.component.ts)\n \n \n bleCore   (src/.../stepcounter.component.ts)\n \n \n bleCore   (src/.../temperature.component.ts)\n \n \n bleService   (src/.../battery-level.component.ts)\n \n \n bleService   (src/.../humidity.component.ts)\n \n \n bleService   (src/.../stepcounter.component.ts)\n \n \n bleService   (src/.../temperature.component.ts)\n \n \n environment   (src/.../environment.prod.ts)\n \n \n environment   (src/.../environment.ts)\n \n \n PROVIDERS   (src/.../battery-level.component.ts)\n \n \n PROVIDERS   (src/.../humidity.component.ts)\n \n \n PROVIDERS   (src/.../stepcounter.component.ts)\n \n \n PROVIDERS   (src/.../temperature.component.ts)\n \n \n TI_SENSORAG_SERVICES   (projects/.../ti-sensortag2.ts)\n \n \n TiTag   (projects/.../ti-sensortag2.ts)\n \n \n \n \n \n \n\n\n src/app/thingy52/battery-level.component.ts\n \n \n \n \n \n \n \n bleCore\n \n \n \n \n \n \n Default value : (b: BrowserWebBluetooth, l: ConsoleLoggerService) =>\n new BluetoothCore(b, l)\n \n \n\n\n \n \n \n \n \n \n \n \n bleService\n \n \n \n \n \n \n Default value : (b: BluetoothCore) => new BleService(b)\n \n \n\n\n \n \n \n \n \n \n \n \n PROVIDERS\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : [\n {\n provide: BluetoothCore,\n useFactory: bleCore,\n deps: [BrowserWebBluetooth, ConsoleLoggerService],\n },\n {\n provide: BleService,\n useFactory: bleService,\n deps: [BluetoothCore],\n },\n]\n \n \n\n\n \n \n\n src/app/thingy52/humidity.component.ts\n \n \n \n \n \n \n \n bleCore\n \n \n \n \n \n \n Default value : (b: BrowserWebBluetooth, l: ConsoleLoggerService) => new BluetoothCore(b, l)\n \n \n\n\n \n \n \n \n \n \n \n \n bleService\n \n \n \n \n \n \n Default value : (b: BluetoothCore) => new BleService(b)\n \n \n\n\n \n \n \n \n \n \n \n \n PROVIDERS\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : [{\n provide: BluetoothCore,\n useFactory: bleCore,\n deps: [BrowserWebBluetooth, ConsoleLoggerService]\n}, {\n provide: BleService,\n useFactory: bleService,\n deps: [BluetoothCore]\n}]\n \n \n\n\n \n \n\n src/app/thingy52/stepcounter.component.ts\n \n \n \n \n \n \n \n bleCore\n \n \n \n \n \n \n Default value : (b: BrowserWebBluetooth, l: ConsoleLoggerService) => new BluetoothCore(b, l)\n \n \n\n\n \n \n \n \n \n \n \n \n bleService\n \n \n \n \n \n \n Default value : (b: BluetoothCore) => new BleService(b)\n \n \n\n\n \n \n \n \n \n \n \n \n PROVIDERS\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : [{\n provide: BluetoothCore,\n useFactory: bleCore,\n deps: [BrowserWebBluetooth, ConsoleLoggerService]\n}, {\n provide: BleService,\n useFactory: bleService,\n deps: [BluetoothCore]\n}]\n \n \n\n\n \n \n\n src/app/thingy52/temperature.component.ts\n \n \n \n \n \n \n \n bleCore\n \n \n \n \n \n \n Default value : (b: BrowserWebBluetooth, l: ConsoleLoggerService) =>\n new BluetoothCore(b, l)\n \n \n\n\n \n \n \n \n \n \n \n \n bleService\n \n \n \n \n \n \n Default value : (b: BluetoothCore) => new BleService(b)\n \n \n\n\n \n \n \n \n \n \n \n \n PROVIDERS\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : [\n {\n provide: BluetoothCore,\n useFactory: bleCore,\n deps: [BrowserWebBluetooth, ConsoleLoggerService],\n },\n {\n provide: BleService,\n useFactory: bleService,\n deps: [BluetoothCore],\n },\n]\n \n \n\n\n \n \n\n src/environments/environment.prod.ts\n \n \n \n \n \n \n \n environment\n \n \n \n \n \n \n Type : object\n\n \n \n \n \n Default value : {\n production: true\n}\n \n \n\n\n \n \n\n src/environments/environment.ts\n \n \n \n \n \n \n \n environment\n \n \n \n \n \n \n Type : object\n\n \n \n \n \n Default value : {\n production: false\n}\n \n \n\n\n \n \n\n projects/manekinekko/angular-web-bluetooth/src/lib/lang/uuids/ti-sensortag2.ts\n \n \n \n \n \n \n \n TI_SENSORAG_SERVICES\n \n \n \n \n \n \n Type : string[]\n\n \n \n \n \n Default value : Object.keys(TiTag).map((key: string) => (TiTag as any)[key].SERVICE)\n \n \n\n\n \n \n \n \n \n \n \n \n TiTag\n \n \n \n \n \n \n Type : object\n\n \n \n \n \n Default value : {\n\n DEVICE_INFORMATION : {\n SERVICE : 'f000180a-0451-4000-b000-000000000000',\n SYSTEM_ID : 'f0002a23-0451-4000-b000-000000000000',\n MODEL_NUMBER : 'f0002a24-0451-4000-b000-000000000000',\n SERIAL_NUMBER : 'f0002a25-0451-4000-b000-000000000000',\n FIRMWARE_REV : 'f0002a26-0451-4000-b000-000000000000',\n HARDWARE_REV : 'f0002a27-0451-4000-b000-000000000000',\n SOFTWARE_REV : 'f0002a28-0451-4000-b000-000000000000',\n MANIFACTURER : 'f0002a29-0451-4000-b000-000000000000',\n IEEE11073 : 'f0002a2a-0451-4000-b000-000000000000',\n PNP_ID : 'f0002a50-0451-4000-b000-000000000000'\n },\n\n BATTERY : {\n SERVICE : 'f000180f-0451-4000-b000-000000000000',\n LEVEL : 'f0002a19-0451-4000-b000-000000000000'\n },\n\n TEMPERATURE : {\n SERVICE : 'f000aa00-0451-4000-b000-000000000000',\n DATA : 'f000aa01-0451-4000-b000-000000000000',\n CONFIGURATION : 'f000aa02-0451-4000-b000-000000000000',\n PERIOD : 'f000aa03-0451-4000-b000-000000000000'\n },\n\n HUMIDITY : {\n SERVICE : 'f000aa20-0451-4000-b000-000000000000',\n DATA : 'f000aa21-0451-4000-b000-000000000000',\n CONFIGURATION : 'f000aa22-0451-4000-b000-000000000000',\n PERIOD : 'f000aa23-0451-4000-b000-000000000000'\n },\n\n BAROMETER : {\n SERVICE : 'f000aa40-0451-4000-b000-000000000000',\n DATA : 'f000aa41-0451-4000-b000-000000000000',\n CONFIGURATION : 'f000aa42-0451-4000-b000-000000000000',\n PERIOD : 'f000aa44-0451-4000-b000-000000000000'\n },\n\n // service not available in model CC2650\n // ACCELEROMETER : {\n // SERVICE : 'f000aa10-0451-4000-b000-000000000000',\n // DATA : 'f000aa11-0451-4000-b000-000000000000',\n // CONFIGURATION : 'f000aa12-0451-4000-b000-000000000000',\n // PERIOD : 'f000aa13-0451-4000-b000-000000000000'\n // },\n\n // service not available in model CC2650\n // MAGNETOMETER : {\n // SERVICE : 'f000aa30-0451-4000-b000-000000000000',\n // DATA : 'f000aa31-0451-4000-b000-000000000000',\n // CONFIGURATION : 'f000aa32-0451-4000-b000-000000000000',\n // PERIOD : 'f000aa33-0451-4000-b000-000000000000'\n // },\n\n // service not available in model CC2650\n // GYROSCOPE : {\n // SERVICE : 'f000aa50-0451-4000-b000-000000000000',\n // DATA : 'f000aa51-0451-4000-b000-000000000000',\n // CONFIGURATION : 'f000aa52-0451-4000-b000-000000000000',\n // PERIOD : 'f000aa53-0451-4000-b000-000000000000'\n // },\n\n MOVEMENT : {\n SERVICE : 'f000aa80-0451-4000-b000-000000000000',\n DATA : 'f000aa81-0451-4000-b000-000000000000',\n CONFIGURATION : 'f000aa82-0451-4000-b000-000000000000',\n PERIOD : 'f000aa83-0451-4000-b000-000000000000'\n },\n\n LIGHT : {\n SERVICE : 'f000aa70-0451-4000-b000-000000000000',\n DATA : 'f000aa71-0451-4000-b000-000000000000',\n CONFIGURATION : 'f000aa72-0451-4000-b000-000000000000',\n PERIOD : 'f000aa73-0451-4000-b000-000000000000'\n },\n\n KEYPRESS : {\n SERVICE : 'f000ffe0-0451-4000-b000-000000000000',\n STATE : 'f000ffe1-0451-4000-b000-000000000000'\n },\n\n __REGISTER__ : {\n SERVICE : 'f000ac00-0451-4000-b000-000000000000',\n DATA : 'f000ac01-0451-4000-b000-000000000000',\n ADDRESS : 'f000ac02-0451-4000-b000-000000000000',\n DEVICE_ID : 'f000ac03-0451-4000-b000-000000000000'\n },\n\n CONTROL : {\n SERVICE : 'f000ccc0-0451-4000-b000-000000000000',\n CURRENT_USED_PARAMETERS : 'f000ccc1-0451-4000-b000-000000000000',\n REQUEST_NEW_PARAMETERS : 'f000ccc2-0451-4000-b000-000000000000',\n DISCONNECT_REQUEST : 'f000ccc3-0451-4000-b000-000000000000'\n },\n\n OAD : {\n SERVICE : 'f000ffc0-0451-4000-b000-000000000000',\n IMAGE_NOTIFY : 'f000ffc1-0451-4000-b000-000000000000',\n IMAGE_BLOCK_REQUEST : 'f000ffc2-0451-4000-b000-000000000000',\n IMAGE_COUNT : 'f000ffc3-0451-4000-b000-000000000000',\n IMAGE_STATUS : 'f000ffc4-0451-4000-b000-000000000000'\n },\n\n IO : {\n SERVICE : 'f000aa64-0451-4000-b000-000000000000',\n DATA : 'f000aa65-0451-4000-b000-000000000000',\n CONFIG : 'f000aa66-0451-4000-b000-000000000000'\n }\n}\n \n \n\n\n \n \n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"}}
}
diff --git a/docs/license.html b/docs/license.html
index c327333..3175f5d 100644
--- a/docs/license.html
+++ b/docs/license.html
@@ -14,7 +14,7 @@
-
- angular-web-bluetooth-starter documentation
-
+
@@ -83,7 +76,7 @@
-
+