@mxtommy/kip 3.9.0-beta.20 → 3.9.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/public/{chunk-EUIZ2AXR.js → chunk-3EWIS24B.js} +2 -2
- package/public/{chunk-OELNV3DP.js → chunk-NBF6SE6O.js} +2 -2
- package/public/{chunk-SGHFX2SF.js → chunk-QC7VGVAR.js} +2 -2
- package/public/{chunk-SGHFX2SF.js.map → chunk-QC7VGVAR.js.map} +1 -1
- package/public/{chunk-NYZ6SXFB.js → chunk-UHVNAEXC.js} +3 -3
- package/public/{chunk-X2FXU4ZV.js → chunk-ZEHRDSTB.js} +2 -2
- package/public/index.html +1 -1
- package/public/main.js +15 -15
- package/public/main.js.map +1 -1
- /package/public/{chunk-EUIZ2AXR.js.map → chunk-3EWIS24B.js.map} +0 -0
- /package/public/{chunk-OELNV3DP.js.map → chunk-NBF6SE6O.js.map} +0 -0
- /package/public/{chunk-NYZ6SXFB.js.map → chunk-UHVNAEXC.js.map} +0 -0
- /package/public/{chunk-X2FXU4ZV.js.map → chunk-ZEHRDSTB.js.map} +0 -0
package/package.json
CHANGED
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
} from "./chunk-U2DCSTRY.js";
|
|
40
40
|
import {
|
|
41
41
|
AppService
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-QC7VGVAR.js";
|
|
43
43
|
import {
|
|
44
44
|
MatDivider
|
|
45
45
|
} from "./chunk-MCEJWZB2.js";
|
|
@@ -5234,4 +5234,4 @@ var AppSettingsComponent = class _AppSettingsComponent {
|
|
|
5234
5234
|
export {
|
|
5235
5235
|
AppSettingsComponent
|
|
5236
5236
|
};
|
|
5237
|
-
//# sourceMappingURL=chunk-
|
|
5237
|
+
//# sourceMappingURL=chunk-3EWIS24B.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-U2DCSTRY.js";
|
|
4
4
|
import {
|
|
5
5
|
AppService
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-QC7VGVAR.js";
|
|
7
7
|
import "./chunk-MCEJWZB2.js";
|
|
8
8
|
import {
|
|
9
9
|
AppSettingsService,
|
|
@@ -86,4 +86,4 @@ var WidgetLoginComponent = class _WidgetLoginComponent {
|
|
|
86
86
|
export {
|
|
87
87
|
WidgetLoginComponent
|
|
88
88
|
};
|
|
89
|
-
//# sourceMappingURL=chunk-
|
|
89
|
+
//# sourceMappingURL=chunk-NBF6SE6O.js.map
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
// package.json
|
|
19
19
|
var package_default = {
|
|
20
20
|
name: "@mxtommy/kip",
|
|
21
|
-
version: "3.9.0-beta.
|
|
21
|
+
version: "3.9.0-beta.21",
|
|
22
22
|
description: "An advanced and versatile marine instrumentation package to display Signal K data.",
|
|
23
23
|
license: "MIT",
|
|
24
24
|
author: {
|
|
@@ -340,4 +340,4 @@ var AppService = class _AppService {
|
|
|
340
340
|
export {
|
|
341
341
|
AppService
|
|
342
342
|
};
|
|
343
|
-
//# sourceMappingURL=chunk-
|
|
343
|
+
//# sourceMappingURL=chunk-QC7VGVAR.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["package.json", "src/app/core/services/app-service.ts"],
|
|
4
|
-
"sourcesContent": ["{\n \"name\": \"@mxtommy/kip\",\n \"version\": \"3.9.0-beta.20\",\n \"description\": \"An advanced and versatile marine instrumentation package to display Signal K data.\",\n \"license\": \"MIT\",\n \"author\": {\n \"name\": \"Thomas St.Pierre, David Godin\"\n },\n \"contributors\": [\n {\n \"name\": \"David Godin\",\n \"email\": \"godind@hotmail.com\"\n },\n {\n \"name\": \"Thomas St.Pierre\",\n \"email\": \"thomas@samoht.ca\"\n }\n ],\n \"homepage\": \"https://github.com/mxtommy/Kip\",\n \"bugs\": \"https://github.com/mxtommy/Kip/issues\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/mxtommy/Kip.git\"\n },\n \"keywords\": [\n \"signalk-webapp\",\n \"signalk-category-instruments\",\n \"signal k\",\n \"signalk\",\n \"instruments\",\n \"dashboard\",\n \"marine\",\n \"nmea\"\n ],\n \"signalk\": {\n \"appIcon\": \"assets/icon-72x72.png\",\n \"displayName\": \"KIP Instrument MFD\"\n },\n \"scripts\": {\n \"dev\": \"ng serve --configuration=dev --serve-path=/@mxtommy/kip/\",\n \"build-dev\": \"ng build --configuration=dev\",\n \"build-prod\": \"ng build --configuration=production\",\n \"test\": \"ng test\",\n \"lint\": \"ng lint\",\n \"e2e\": \"ng e2e\"\n },\n \"devDependencies\": {\n \"@angular-devkit/build-angular\": \"^20.1.6\",\n \"@angular/animations\": \"20.1.7\",\n \"@angular/build\": \"^20.1.6\",\n \"@angular/cdk\": \"20.1.6\",\n \"@angular/cli\": \"^20.1.6\",\n \"@angular/common\": \"20.1.7\",\n \"@angular/compiler\": \"20.1.7\",\n \"@angular/compiler-cli\": \"20.1.7\",\n \"@angular/core\": \"20.1.7\",\n \"@angular/forms\": \"20.1.7\",\n \"@angular/language-service\": \"20.1.7\",\n \"@angular/material\": \"20.1.6\",\n \"@angular/platform-browser\": \"20.1.7\",\n \"@angular/platform-browser-dynamic\": \"20.1.7\",\n \"@angular/router\": \"20.1.7\",\n \"@godind/ng-canvas-gauges\": \"^6.2.1\",\n \"@robloche/chartjs-plugin-streaming\": \"^3.1.0\",\n \"@types/canvas-gauges\": \"^2.1.8\",\n \"@types/howler\": \"^2.2.10\",\n \"@types/jasmine\": \"~3.6.0\",\n \"@types/jasminewd2\": \"^2.0.9\",\n \"@types/js-quantities\": \"^1.6.6\",\n \"@types/lodash-es\": \"^4.17.9\",\n \"@types/node\": \"^24.1.0\",\n \"@zakj/no-sleep\": \"^0.13.5\",\n \"angular-eslint\": \"20.1.1\",\n \"chart.js\": \"^4.4.9\",\n \"chartjs-adapter-date-fns\": \"^3.0.0\",\n \"chartjs-plugin-annotation\": \"^3.0.1\",\n \"codelyzer\": \"^6.0.0\",\n \"compare-versions\": \"^6.1.1\",\n \"core-js\": \"^3.13.1\",\n \"date-fns\": \"^2.30.0\",\n \"eslint\": \"^9.29.0\",\n \"gridstack\": \"^11.4.0\",\n \"howler\": \"^2.2.4\",\n \"jasmine-core\": \"~4.0.1\",\n \"jasmine-spec-reporter\": \"~5.0.0\",\n \"js-quantities\": \"^1.8.0\",\n \"karma\": \"^6.4.4\",\n \"karma-chrome-launcher\": \"~3.1.0\",\n \"karma-cli\": \"~2.0.0\",\n \"karma-coverage-istanbul-reporter\": \"^3.0.3\",\n \"karma-jasmine\": \"~4.0.0\",\n \"karma-jasmine-html-reporter\": \"^1.6.0\",\n \"lodash-es\": \"^4.17.21\",\n \"ng-packagr\": \"^20.0.1\",\n \"ngx-markdown\": \"^20.0.0\",\n \"ngx-resize-observer\": \"^3.1.0\",\n \"protractor\": \"~7.0.0\",\n \"pwa-asset-generator\": \"^8.0.4\",\n \"rxjs\": \"^7.8.2\",\n \"sass\": \"^1.49.9\",\n \"screenfull\": \"^6.0.2\",\n \"steelseries\": \"^2.0.9\",\n \"ts-node\": \"^10.9.2\",\n \"tslib\": \"^2.6.2\",\n \"typescript\": \"^5.8.3\",\n \"zone.js\": \"^0.15.1\"\n }\n}\n", "import { effect, inject, Injectable, signal, untracked } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { AppSettingsService } from './app-settings.service';\nimport { DataService } from './data.service';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport packageInfo from '../../../../package.json';\n\n/**\n * Snack-bar notification message interface.\n */\nexport interface AppNotification {\n message: string;\n action?: string;\n duration: number;\n silent: boolean;\n}\n\n\n/**\n * Kip theme hex colors\n *\n * @export\n * @interface ITheme\n */\nexport interface ITheme {\n blue: string,\n blueDim: string,\n blueDimmer: string,\n green: string,\n greenDim: string,\n greenDimmer: string,\n purple: string,\n purpleDim: string,\n purpleDimmer: string,\n yellow: string,\n yellowDim: string,\n yellowDimmer: string,\n pink: string,\n pinkDim: string,\n pinkDimmer: string,\n orange: string,\n orangeDim: string,\n orangeDimmer: string,\n contrast: string,\n contrastDim: string,\n contrastDimmer: string,\n grey: string,\n greyDim: string,\n greyDimmer: string,\n port: string,\n starboard: string,\n zoneNominal: string,\n zoneAlert: string,\n zoneWarn: string,\n zoneAlarm: string,\n zoneEmergency: string,\n background: string,\n cardColor: string,\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppService {\n readonly MODE_PATH: string = 'self.environment.mode';\n public readonly configurableThemeColors: {label: string, value: string}[] = [\n {label: \"Contrast\", value: \"contrast\"},\n {label: \"Blue\", value: \"blue\"},\n {label: \"Green\", value: \"green\"},\n {label: \"Orange\", value: \"orange\"},\n {label: \"Yellow\", value: \"yellow\"},\n {label: \"Pink\", value: \"pink\"},\n {label: \"Purple\", value: \"purple\"},\n {label: \"Grey\", value: \"grey\"}\n ];\n public snackbarAppNotifications = new Subject<AppNotification>(); // for snackbar message\n public readonly cssThemeColorRoles$ = new BehaviorSubject<ITheme|null>(null);\n private _cssThemeColorRoles: ITheme = null;\n private _settings = inject(AppSettingsService);\n private _data = inject(DataService);\n public isNightMode = signal<boolean>(false);\n private _useAutoNightMode = toSignal(this._settings.getAutoNightModeAsO(), { requireSync: true });\n private _theme = toSignal(this._settings.getThemeNameAsO(), { requireSync: true });\n private _redNightMode = toSignal(this._settings.getRedNightModeAsO(), { requireSync: true });\n private _environmentMode = toSignal(this._data.subscribePath(this.MODE_PATH, 'default'));\n\n public readonly appVersion = signal<string>(packageInfo.version);\n public readonly browserVersion = signal<string>('Unknown');\n public readonly osVersion = signal<string>('Unknown');\n\n constructor() {\n effect(() => {\n if (this._theme() === 'light-theme') {\n document.body.classList.toggle('light-theme', this._theme() === 'light-theme');\n } else {\n // Remove the light theme class if it exists\n document.body.classList.remove('light-theme');\n }\n });\n\n effect(() => {\n const mode = this._environmentMode().data.value;\n if (this._useAutoNightMode()) {\n this.isNightMode.set(mode === \"night\");\n this.toggleDayNightMode();\n }\n });\n\n effect(() => {\n const redNightMode = this._redNightMode();\n\n untracked(() => {\n if (redNightMode) {\n this.toggleDayNightMode();\n } else {\n this.toggleDayNightMode();\n }\n });\n });\n\n this.readThemeCssRoleVariables();\n this._cssThemeColorRoles = this.cssThemeColorRoles$.getValue();\n\n this.browserVersion.set(this.getBrowserVersion());\n this.osVersion.set(this.getOSVersion());\n\n console.log(\"*********** KIP Version Information ***********\");\n console.log(`** App Version: ${this.appVersion()}`);\n console.log(`** Browser Version: ${this.browserVersion()}`);\n console.log(`** OS Version: ${this.osVersion()}`);\n console.log(\"***********************************************\");\n }\n\n /**\n * Display Kip Snackbar notification.\n *\n * @param message Text to be displayed.\n * @param duration Display duration in milliseconds before automatic dismissal.\n * Duration value of 0 is indefinite or until use clicks Dismiss button. Defaults\n * to 10000 of no value is provided.\n * @param silent A boolean that defines if the notification should make no sound.\n * Defaults false.\n */\n public sendSnackbarNotification(message: string, duration = 10000, silent = false, action = \"Dismiss\") {\n this.snackbarAppNotifications.next({ message: message, duration: duration, silent: silent, action: action });\n }\n\n /**\n * Observable to receive Kip app Snackbar notification. Use in app.component ONLY.\n *\n * @usageNotes To send a Snackbar notification, use sendSnackbarNotification().\n * Notifications are purely client side and have no relationship or\n * interactions with the Signal K server.\n */\n public getSnackbarAppNotifications() {\n return this.snackbarAppNotifications.asObservable();\n }\n\n private readThemeCssRoleVariables(): void {\n const root = document.body;\n const computedStyle = getComputedStyle(root);\n const cssThemeRolesColor: ITheme = {\n background: computedStyle.getPropertyValue('--mat-sys-background').trim(),\n cardColor: computedStyle.getPropertyValue('--kip-widget-card-background-color').trim(),\n blue: computedStyle.getPropertyValue('--kip-blue-color').trim(),\n blueDim: computedStyle.getPropertyValue('--kip-blue-dim-color').trim(),\n blueDimmer: computedStyle.getPropertyValue('--kip-blue-dimmer-color').trim(),\n green: computedStyle.getPropertyValue('--kip-green-color').trim(),\n greenDim: computedStyle.getPropertyValue('--kip-green-dim-color').trim(),\n greenDimmer: computedStyle.getPropertyValue('--kip-green-dimmer-color').trim(),\n grey: computedStyle.getPropertyValue('--kip-grey-color').trim(),\n greyDim: computedStyle.getPropertyValue('--kip-grey-dim-color').trim(),\n greyDimmer: computedStyle.getPropertyValue('--kip-grey-dimmer-color').trim(),\n orange: computedStyle.getPropertyValue('--kip-orange-color').trim(),\n orangeDim: computedStyle.getPropertyValue('--kip-orange-dim-color').trim(),\n orangeDimmer: computedStyle.getPropertyValue('--kip-orange-dimmer-color').trim(),\n pink: computedStyle.getPropertyValue('--kip-pink-color').trim(),\n pinkDim: computedStyle.getPropertyValue('--kip-pink-dim-color').trim(),\n pinkDimmer: computedStyle.getPropertyValue('--kip-pink-dimmer-color').trim(),\n purple: computedStyle.getPropertyValue('--kip-purple-color').trim(),\n purpleDim: computedStyle.getPropertyValue('--kip-purple-dim-color').trim(),\n purpleDimmer: computedStyle.getPropertyValue('--kip-purple-dimmer-color').trim(),\n contrast: computedStyle.getPropertyValue('--kip-contrast-color').trim(),\n contrastDim: computedStyle.getPropertyValue('--kip-contrast-dim-color').trim(),\n contrastDimmer: computedStyle.getPropertyValue('--kip-contrast-dimmer-color').trim(),\n yellow: computedStyle.getPropertyValue('--kip-yellow-color').trim(),\n yellowDim: computedStyle.getPropertyValue('--kip-yellow-dim-color').trim(),\n yellowDimmer: computedStyle.getPropertyValue('--kip-yellow-dimmer-color').trim(),\n port: computedStyle.getPropertyValue('--kip-port-color').trim(),\n starboard: computedStyle.getPropertyValue('--kip-starboard-color').trim(),\n zoneNominal: computedStyle.getPropertyValue('--kip-zone-nominal-color').trim(),\n zoneAlert: computedStyle.getPropertyValue('--kip-zone-alert-color').trim(),\n zoneWarn: computedStyle.getPropertyValue('--kip-zone-warn-color').trim(),\n zoneAlarm: computedStyle.getPropertyValue('--kip-zone-alarm-color').trim(),\n zoneEmergency: computedStyle.getPropertyValue('--kip-zone-emergency-color').trim(),\n };\n this.cssThemeColorRoles$.next(cssThemeRolesColor);\n }\n\n public get cssThemeColors() : ITheme {\n return this._cssThemeColorRoles;\n }\n\n public setBrightness(brightness: number, applyNightFilters = false): void {\n const appFilterWrapper = document.body;\n\n // Set the brightness level\n appFilterWrapper.style.setProperty('--kip-nightModeBrightness', `${brightness}`);\n\n // Apply sepia and hue-rotate filters if night mode is active\n const additionalFilters = applyNightFilters ? ' sepia(0.5) hue-rotate(-30deg)' : '';\n appFilterWrapper.style.setProperty('--kip-nightModeFilters', additionalFilters);\n }\n\n public toggleDayNightMode(): void {\n if (this.isNightMode()) {\n if (this._redNightMode()) {\n document.body.classList.toggle('night-theme', true);\n this.setBrightness(1, false);\n } else {\n this.setBrightness(this._settings.getNightModeBrightness(), true);\n document.body.classList.remove('night-theme');\n if (this._theme() === 'light-theme') {\n document.body.classList.toggle('light-theme', this._theme() === 'light-theme');\n } else {\n document.body.classList.remove('light-theme');\n }\n }\n\n } else {\n document.body.classList.remove('night-theme');\n if (this._theme() === 'light-theme') {\n document.body.classList.toggle('light-theme', this._theme() === 'light-theme');\n }\n this.setBrightness(1, false);\n }\n this.readThemeCssRoleVariables();\n this._cssThemeColorRoles = this.cssThemeColorRoles$.getValue();\n }\n\n /**\n * Helper method to get the browser version.\n */\n private getBrowserVersion(): string {\n const userAgent = navigator.userAgent;\n let browser = 'Unknown';\n\n if (userAgent.includes('Edg')) {\n browser = `Edge ${userAgent.match(/Edg\\/(\\d+)/)?.[1]}`;\n } else if (userAgent.includes('Chrome') && !userAgent.includes('Edg') && !userAgent.includes('Chromium')) {\n browser = `Chrome ${userAgent.match(/Chrome\\/(\\d+)/)?.[1]}`;\n } else if (userAgent.includes('Chromium')) {\n browser = `Chromium ${userAgent.match(/Chromium\\/(\\d+)/)?.[1]}`;\n } else if (userAgent.includes('Firefox')) {\n browser = `Firefox ${userAgent.match(/Firefox\\/(\\d+)/)?.[1]}`;\n } else if (userAgent.includes('Safari') && !userAgent.includes('Chrome') && !userAgent.includes('Chromium')) {\n browser = `Safari ${userAgent.match(/Version\\/(\\d+)/)?.[1]}`;\n } else if (userAgent.includes('Opera') || userAgent.includes('OPR')) {\n browser = `Opera ${userAgent.match(/(Opera|OPR)\\/(\\d+)/)?.[2]}`;\n }\n\n return browser;\n }\n\n /**\n * Helper method to get the OS version.\n */\n private getOSVersion(): string {\n const platform = navigator.platform;\n const userAgent = navigator.userAgent;\n\n if (platform.startsWith('Mac')) {\n return 'macOS';\n } else if (platform.startsWith('Win')) {\n return 'Windows';\n } else if (/Linux/.test(platform)) {\n // Check for Raspberry Pi identifiers in the userAgent or platform\n if (\n userAgent.includes('ARM') ||\n userAgent.includes('aarch64') ||\n userAgent.includes('Raspberry') ||\n platform.includes('armv7l') ||\n platform.includes('armv8l')\n ) {\n return 'Raspberry Pi';\n }\n return 'Linux';\n } else {\n return 'Unknown OS';\n }\n }\n}\n"],
|
|
4
|
+
"sourcesContent": ["{\n \"name\": \"@mxtommy/kip\",\n \"version\": \"3.9.0-beta.21\",\n \"description\": \"An advanced and versatile marine instrumentation package to display Signal K data.\",\n \"license\": \"MIT\",\n \"author\": {\n \"name\": \"Thomas St.Pierre, David Godin\"\n },\n \"contributors\": [\n {\n \"name\": \"David Godin\",\n \"email\": \"godind@hotmail.com\"\n },\n {\n \"name\": \"Thomas St.Pierre\",\n \"email\": \"thomas@samoht.ca\"\n }\n ],\n \"homepage\": \"https://github.com/mxtommy/Kip\",\n \"bugs\": \"https://github.com/mxtommy/Kip/issues\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/mxtommy/Kip.git\"\n },\n \"keywords\": [\n \"signalk-webapp\",\n \"signalk-category-instruments\",\n \"signal k\",\n \"signalk\",\n \"instruments\",\n \"dashboard\",\n \"marine\",\n \"nmea\"\n ],\n \"signalk\": {\n \"appIcon\": \"assets/icon-72x72.png\",\n \"displayName\": \"KIP Instrument MFD\"\n },\n \"scripts\": {\n \"dev\": \"ng serve --configuration=dev --serve-path=/@mxtommy/kip/\",\n \"build-dev\": \"ng build --configuration=dev\",\n \"build-prod\": \"ng build --configuration=production\",\n \"test\": \"ng test\",\n \"lint\": \"ng lint\",\n \"e2e\": \"ng e2e\"\n },\n \"devDependencies\": {\n \"@angular-devkit/build-angular\": \"^20.1.6\",\n \"@angular/animations\": \"20.1.7\",\n \"@angular/build\": \"^20.1.6\",\n \"@angular/cdk\": \"20.1.6\",\n \"@angular/cli\": \"^20.1.6\",\n \"@angular/common\": \"20.1.7\",\n \"@angular/compiler\": \"20.1.7\",\n \"@angular/compiler-cli\": \"20.1.7\",\n \"@angular/core\": \"20.1.7\",\n \"@angular/forms\": \"20.1.7\",\n \"@angular/language-service\": \"20.1.7\",\n \"@angular/material\": \"20.1.6\",\n \"@angular/platform-browser\": \"20.1.7\",\n \"@angular/platform-browser-dynamic\": \"20.1.7\",\n \"@angular/router\": \"20.1.7\",\n \"@godind/ng-canvas-gauges\": \"^6.2.1\",\n \"@robloche/chartjs-plugin-streaming\": \"^3.1.0\",\n \"@types/canvas-gauges\": \"^2.1.8\",\n \"@types/howler\": \"^2.2.10\",\n \"@types/jasmine\": \"~3.6.0\",\n \"@types/jasminewd2\": \"^2.0.9\",\n \"@types/js-quantities\": \"^1.6.6\",\n \"@types/lodash-es\": \"^4.17.9\",\n \"@types/node\": \"^24.1.0\",\n \"@zakj/no-sleep\": \"^0.13.5\",\n \"angular-eslint\": \"20.1.1\",\n \"chart.js\": \"^4.4.9\",\n \"chartjs-adapter-date-fns\": \"^3.0.0\",\n \"chartjs-plugin-annotation\": \"^3.0.1\",\n \"codelyzer\": \"^6.0.0\",\n \"compare-versions\": \"^6.1.1\",\n \"core-js\": \"^3.13.1\",\n \"date-fns\": \"^2.30.0\",\n \"eslint\": \"^9.29.0\",\n \"gridstack\": \"^11.4.0\",\n \"howler\": \"^2.2.4\",\n \"jasmine-core\": \"~4.0.1\",\n \"jasmine-spec-reporter\": \"~5.0.0\",\n \"js-quantities\": \"^1.8.0\",\n \"karma\": \"^6.4.4\",\n \"karma-chrome-launcher\": \"~3.1.0\",\n \"karma-cli\": \"~2.0.0\",\n \"karma-coverage-istanbul-reporter\": \"^3.0.3\",\n \"karma-jasmine\": \"~4.0.0\",\n \"karma-jasmine-html-reporter\": \"^1.6.0\",\n \"lodash-es\": \"^4.17.21\",\n \"ng-packagr\": \"^20.0.1\",\n \"ngx-markdown\": \"^20.0.0\",\n \"ngx-resize-observer\": \"^3.1.0\",\n \"protractor\": \"~7.0.0\",\n \"pwa-asset-generator\": \"^8.0.4\",\n \"rxjs\": \"^7.8.2\",\n \"sass\": \"^1.49.9\",\n \"screenfull\": \"^6.0.2\",\n \"steelseries\": \"^2.0.9\",\n \"ts-node\": \"^10.9.2\",\n \"tslib\": \"^2.6.2\",\n \"typescript\": \"^5.8.3\",\n \"zone.js\": \"^0.15.1\"\n }\n}\n", "import { effect, inject, Injectable, signal, untracked } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { AppSettingsService } from './app-settings.service';\nimport { DataService } from './data.service';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport packageInfo from '../../../../package.json';\n\n/**\n * Snack-bar notification message interface.\n */\nexport interface AppNotification {\n message: string;\n action?: string;\n duration: number;\n silent: boolean;\n}\n\n\n/**\n * Kip theme hex colors\n *\n * @export\n * @interface ITheme\n */\nexport interface ITheme {\n blue: string,\n blueDim: string,\n blueDimmer: string,\n green: string,\n greenDim: string,\n greenDimmer: string,\n purple: string,\n purpleDim: string,\n purpleDimmer: string,\n yellow: string,\n yellowDim: string,\n yellowDimmer: string,\n pink: string,\n pinkDim: string,\n pinkDimmer: string,\n orange: string,\n orangeDim: string,\n orangeDimmer: string,\n contrast: string,\n contrastDim: string,\n contrastDimmer: string,\n grey: string,\n greyDim: string,\n greyDimmer: string,\n port: string,\n starboard: string,\n zoneNominal: string,\n zoneAlert: string,\n zoneWarn: string,\n zoneAlarm: string,\n zoneEmergency: string,\n background: string,\n cardColor: string,\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppService {\n readonly MODE_PATH: string = 'self.environment.mode';\n public readonly configurableThemeColors: {label: string, value: string}[] = [\n {label: \"Contrast\", value: \"contrast\"},\n {label: \"Blue\", value: \"blue\"},\n {label: \"Green\", value: \"green\"},\n {label: \"Orange\", value: \"orange\"},\n {label: \"Yellow\", value: \"yellow\"},\n {label: \"Pink\", value: \"pink\"},\n {label: \"Purple\", value: \"purple\"},\n {label: \"Grey\", value: \"grey\"}\n ];\n public snackbarAppNotifications = new Subject<AppNotification>(); // for snackbar message\n public readonly cssThemeColorRoles$ = new BehaviorSubject<ITheme|null>(null);\n private _cssThemeColorRoles: ITheme = null;\n private _settings = inject(AppSettingsService);\n private _data = inject(DataService);\n public isNightMode = signal<boolean>(false);\n private _useAutoNightMode = toSignal(this._settings.getAutoNightModeAsO(), { requireSync: true });\n private _theme = toSignal(this._settings.getThemeNameAsO(), { requireSync: true });\n private _redNightMode = toSignal(this._settings.getRedNightModeAsO(), { requireSync: true });\n private _environmentMode = toSignal(this._data.subscribePath(this.MODE_PATH, 'default'));\n\n public readonly appVersion = signal<string>(packageInfo.version);\n public readonly browserVersion = signal<string>('Unknown');\n public readonly osVersion = signal<string>('Unknown');\n\n constructor() {\n effect(() => {\n if (this._theme() === 'light-theme') {\n document.body.classList.toggle('light-theme', this._theme() === 'light-theme');\n } else {\n // Remove the light theme class if it exists\n document.body.classList.remove('light-theme');\n }\n });\n\n effect(() => {\n const mode = this._environmentMode().data.value;\n if (this._useAutoNightMode()) {\n this.isNightMode.set(mode === \"night\");\n this.toggleDayNightMode();\n }\n });\n\n effect(() => {\n const redNightMode = this._redNightMode();\n\n untracked(() => {\n if (redNightMode) {\n this.toggleDayNightMode();\n } else {\n this.toggleDayNightMode();\n }\n });\n });\n\n this.readThemeCssRoleVariables();\n this._cssThemeColorRoles = this.cssThemeColorRoles$.getValue();\n\n this.browserVersion.set(this.getBrowserVersion());\n this.osVersion.set(this.getOSVersion());\n\n console.log(\"*********** KIP Version Information ***********\");\n console.log(`** App Version: ${this.appVersion()}`);\n console.log(`** Browser Version: ${this.browserVersion()}`);\n console.log(`** OS Version: ${this.osVersion()}`);\n console.log(\"***********************************************\");\n }\n\n /**\n * Display Kip Snackbar notification.\n *\n * @param message Text to be displayed.\n * @param duration Display duration in milliseconds before automatic dismissal.\n * Duration value of 0 is indefinite or until use clicks Dismiss button. Defaults\n * to 10000 of no value is provided.\n * @param silent A boolean that defines if the notification should make no sound.\n * Defaults false.\n */\n public sendSnackbarNotification(message: string, duration = 10000, silent = false, action = \"Dismiss\") {\n this.snackbarAppNotifications.next({ message: message, duration: duration, silent: silent, action: action });\n }\n\n /**\n * Observable to receive Kip app Snackbar notification. Use in app.component ONLY.\n *\n * @usageNotes To send a Snackbar notification, use sendSnackbarNotification().\n * Notifications are purely client side and have no relationship or\n * interactions with the Signal K server.\n */\n public getSnackbarAppNotifications() {\n return this.snackbarAppNotifications.asObservable();\n }\n\n private readThemeCssRoleVariables(): void {\n const root = document.body;\n const computedStyle = getComputedStyle(root);\n const cssThemeRolesColor: ITheme = {\n background: computedStyle.getPropertyValue('--mat-sys-background').trim(),\n cardColor: computedStyle.getPropertyValue('--kip-widget-card-background-color').trim(),\n blue: computedStyle.getPropertyValue('--kip-blue-color').trim(),\n blueDim: computedStyle.getPropertyValue('--kip-blue-dim-color').trim(),\n blueDimmer: computedStyle.getPropertyValue('--kip-blue-dimmer-color').trim(),\n green: computedStyle.getPropertyValue('--kip-green-color').trim(),\n greenDim: computedStyle.getPropertyValue('--kip-green-dim-color').trim(),\n greenDimmer: computedStyle.getPropertyValue('--kip-green-dimmer-color').trim(),\n grey: computedStyle.getPropertyValue('--kip-grey-color').trim(),\n greyDim: computedStyle.getPropertyValue('--kip-grey-dim-color').trim(),\n greyDimmer: computedStyle.getPropertyValue('--kip-grey-dimmer-color').trim(),\n orange: computedStyle.getPropertyValue('--kip-orange-color').trim(),\n orangeDim: computedStyle.getPropertyValue('--kip-orange-dim-color').trim(),\n orangeDimmer: computedStyle.getPropertyValue('--kip-orange-dimmer-color').trim(),\n pink: computedStyle.getPropertyValue('--kip-pink-color').trim(),\n pinkDim: computedStyle.getPropertyValue('--kip-pink-dim-color').trim(),\n pinkDimmer: computedStyle.getPropertyValue('--kip-pink-dimmer-color').trim(),\n purple: computedStyle.getPropertyValue('--kip-purple-color').trim(),\n purpleDim: computedStyle.getPropertyValue('--kip-purple-dim-color').trim(),\n purpleDimmer: computedStyle.getPropertyValue('--kip-purple-dimmer-color').trim(),\n contrast: computedStyle.getPropertyValue('--kip-contrast-color').trim(),\n contrastDim: computedStyle.getPropertyValue('--kip-contrast-dim-color').trim(),\n contrastDimmer: computedStyle.getPropertyValue('--kip-contrast-dimmer-color').trim(),\n yellow: computedStyle.getPropertyValue('--kip-yellow-color').trim(),\n yellowDim: computedStyle.getPropertyValue('--kip-yellow-dim-color').trim(),\n yellowDimmer: computedStyle.getPropertyValue('--kip-yellow-dimmer-color').trim(),\n port: computedStyle.getPropertyValue('--kip-port-color').trim(),\n starboard: computedStyle.getPropertyValue('--kip-starboard-color').trim(),\n zoneNominal: computedStyle.getPropertyValue('--kip-zone-nominal-color').trim(),\n zoneAlert: computedStyle.getPropertyValue('--kip-zone-alert-color').trim(),\n zoneWarn: computedStyle.getPropertyValue('--kip-zone-warn-color').trim(),\n zoneAlarm: computedStyle.getPropertyValue('--kip-zone-alarm-color').trim(),\n zoneEmergency: computedStyle.getPropertyValue('--kip-zone-emergency-color').trim(),\n };\n this.cssThemeColorRoles$.next(cssThemeRolesColor);\n }\n\n public get cssThemeColors() : ITheme {\n return this._cssThemeColorRoles;\n }\n\n public setBrightness(brightness: number, applyNightFilters = false): void {\n const appFilterWrapper = document.body;\n\n // Set the brightness level\n appFilterWrapper.style.setProperty('--kip-nightModeBrightness', `${brightness}`);\n\n // Apply sepia and hue-rotate filters if night mode is active\n const additionalFilters = applyNightFilters ? ' sepia(0.5) hue-rotate(-30deg)' : '';\n appFilterWrapper.style.setProperty('--kip-nightModeFilters', additionalFilters);\n }\n\n public toggleDayNightMode(): void {\n if (this.isNightMode()) {\n if (this._redNightMode()) {\n document.body.classList.toggle('night-theme', true);\n this.setBrightness(1, false);\n } else {\n this.setBrightness(this._settings.getNightModeBrightness(), true);\n document.body.classList.remove('night-theme');\n if (this._theme() === 'light-theme') {\n document.body.classList.toggle('light-theme', this._theme() === 'light-theme');\n } else {\n document.body.classList.remove('light-theme');\n }\n }\n\n } else {\n document.body.classList.remove('night-theme');\n if (this._theme() === 'light-theme') {\n document.body.classList.toggle('light-theme', this._theme() === 'light-theme');\n }\n this.setBrightness(1, false);\n }\n this.readThemeCssRoleVariables();\n this._cssThemeColorRoles = this.cssThemeColorRoles$.getValue();\n }\n\n /**\n * Helper method to get the browser version.\n */\n private getBrowserVersion(): string {\n const userAgent = navigator.userAgent;\n let browser = 'Unknown';\n\n if (userAgent.includes('Edg')) {\n browser = `Edge ${userAgent.match(/Edg\\/(\\d+)/)?.[1]}`;\n } else if (userAgent.includes('Chrome') && !userAgent.includes('Edg') && !userAgent.includes('Chromium')) {\n browser = `Chrome ${userAgent.match(/Chrome\\/(\\d+)/)?.[1]}`;\n } else if (userAgent.includes('Chromium')) {\n browser = `Chromium ${userAgent.match(/Chromium\\/(\\d+)/)?.[1]}`;\n } else if (userAgent.includes('Firefox')) {\n browser = `Firefox ${userAgent.match(/Firefox\\/(\\d+)/)?.[1]}`;\n } else if (userAgent.includes('Safari') && !userAgent.includes('Chrome') && !userAgent.includes('Chromium')) {\n browser = `Safari ${userAgent.match(/Version\\/(\\d+)/)?.[1]}`;\n } else if (userAgent.includes('Opera') || userAgent.includes('OPR')) {\n browser = `Opera ${userAgent.match(/(Opera|OPR)\\/(\\d+)/)?.[2]}`;\n }\n\n return browser;\n }\n\n /**\n * Helper method to get the OS version.\n */\n private getOSVersion(): string {\n const platform = navigator.platform;\n const userAgent = navigator.userAgent;\n\n if (platform.startsWith('Mac')) {\n return 'macOS';\n } else if (platform.startsWith('Win')) {\n return 'Windows';\n } else if (/Linux/.test(platform)) {\n // Check for Raspberry Pi identifiers in the userAgent or platform\n if (\n userAgent.includes('ARM') ||\n userAgent.includes('aarch64') ||\n userAgent.includes('Raspberry') ||\n platform.includes('armv7l') ||\n platform.includes('armv8l')\n ) {\n return 'Raspberry Pi';\n }\n return 'Linux';\n } else {\n return 'Unknown OS';\n }\n }\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
MatListModule,
|
|
13
13
|
TileLargeIconComponent,
|
|
14
14
|
uiEventService
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-ZEHRDSTB.js";
|
|
16
16
|
import "./chunk-D7ILNFDM.js";
|
|
17
17
|
import "./chunk-63ILPRXC.js";
|
|
18
18
|
import "./chunk-E24UNLSJ.js";
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
} from "./chunk-UQYTD5AC.js";
|
|
29
29
|
import {
|
|
30
30
|
AppService
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-QC7VGVAR.js";
|
|
32
32
|
import {
|
|
33
33
|
MatDividerModule
|
|
34
34
|
} from "./chunk-MCEJWZB2.js";
|
|
@@ -4749,4 +4749,4 @@ var HomeComponent = class _HomeComponent {
|
|
|
4749
4749
|
export {
|
|
4750
4750
|
HomeComponent
|
|
4751
4751
|
};
|
|
4752
|
-
//# sourceMappingURL=chunk-
|
|
4752
|
+
//# sourceMappingURL=chunk-UHVNAEXC.js.map
|
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
} from "./chunk-UQYTD5AC.js";
|
|
43
43
|
import {
|
|
44
44
|
AppService
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-QC7VGVAR.js";
|
|
46
46
|
import {
|
|
47
47
|
MatDivider,
|
|
48
48
|
MatDividerModule
|
|
@@ -13724,4 +13724,4 @@ export {
|
|
|
13724
13724
|
MatListModule,
|
|
13725
13725
|
TileLargeIconComponent
|
|
13726
13726
|
};
|
|
13727
|
-
//# sourceMappingURL=chunk-
|
|
13727
|
+
//# sourceMappingURL=chunk-ZEHRDSTB.js.map
|
package/public/index.html
CHANGED
|
@@ -62,5 +62,5 @@
|
|
|
62
62
|
</div>
|
|
63
63
|
</app-root>
|
|
64
64
|
</div>
|
|
65
|
-
<link rel="modulepreload" href="chunk-
|
|
65
|
+
<link rel="modulepreload" href="chunk-ZEHRDSTB.js"><link rel="modulepreload" href="chunk-Y6N6O2IP.js"><link rel="modulepreload" href="chunk-D7ILNFDM.js"><link rel="modulepreload" href="chunk-63ILPRXC.js"><link rel="modulepreload" href="chunk-YZXYVP72.js"><link rel="modulepreload" href="chunk-E24UNLSJ.js"><link rel="modulepreload" href="chunk-3VR3EA35.js"><link rel="modulepreload" href="chunk-65ZWQBS6.js"><link rel="modulepreload" href="chunk-J42S2ELC.js"><link rel="modulepreload" href="chunk-UQYTD5AC.js"><script src="polyfills.js" type="module"></script><script src="main.js" type="module"></script></body>
|
|
66
66
|
</html>
|
package/public/main.js
CHANGED
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
MatListModule,
|
|
17
17
|
TileLargeIconComponent,
|
|
18
18
|
uiEventService
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-ZEHRDSTB.js";
|
|
20
20
|
import {
|
|
21
21
|
Animations,
|
|
22
22
|
CanvasService,
|
|
@@ -94,7 +94,7 @@ import {
|
|
|
94
94
|
} from "./chunk-UQYTD5AC.js";
|
|
95
95
|
import {
|
|
96
96
|
AppService
|
|
97
|
-
} from "./chunk-
|
|
97
|
+
} from "./chunk-QC7VGVAR.js";
|
|
98
98
|
import {
|
|
99
99
|
MatDivider
|
|
100
100
|
} from "./chunk-MCEJWZB2.js";
|
|
@@ -14367,13 +14367,13 @@ var WidgetAutopilotComponent = class _WidgetAutopilotComponent extends BaseWidge
|
|
|
14367
14367
|
};
|
|
14368
14368
|
if (this.dodgeModeActive()) {
|
|
14369
14369
|
this.executeRestRequest("DELETE", targetCommand).then((response) => {
|
|
14370
|
-
if (response.
|
|
14370
|
+
if (response.statusCode !== 200) {
|
|
14371
14371
|
this.dodgeModeActive.set(false);
|
|
14372
14372
|
}
|
|
14373
14373
|
});
|
|
14374
14374
|
} else {
|
|
14375
14375
|
this.executeRestRequest("POST", targetCommand).then((response) => {
|
|
14376
|
-
if (response.
|
|
14376
|
+
if (response.statusCode !== 200) {
|
|
14377
14377
|
this.dodgeModeActive.set(true);
|
|
14378
14378
|
}
|
|
14379
14379
|
});
|
|
@@ -14432,11 +14432,11 @@ var WidgetAutopilotComponent = class _WidgetAutopilotComponent extends BaseWidge
|
|
|
14432
14432
|
default:
|
|
14433
14433
|
console.error("[Autopilot Widget] Unsupported REST method:", method);
|
|
14434
14434
|
}
|
|
14435
|
-
if (response && response.
|
|
14435
|
+
if (response && response.statusCode === 200) {
|
|
14436
14436
|
return response;
|
|
14437
14437
|
} else {
|
|
14438
14438
|
console.warn("[Autopilot Widget] V2 Command completed with non-success status:", JSON.stringify(response));
|
|
14439
|
-
return response || {
|
|
14439
|
+
return response || { statusCode: 0, message: "Unavailable", state: "not provided" };
|
|
14440
14440
|
}
|
|
14441
14441
|
} catch (error) {
|
|
14442
14442
|
console.error("[Autopilot Widget] REST operation failed:", error);
|
|
@@ -14447,9 +14447,9 @@ var WidgetAutopilotComponent = class _WidgetAutopilotComponent extends BaseWidge
|
|
|
14447
14447
|
widgetUUID: this.widgetProperties.uuid
|
|
14448
14448
|
});
|
|
14449
14449
|
return {
|
|
14450
|
-
|
|
14450
|
+
statusCode: 0,
|
|
14451
14451
|
message: error instanceof Error ? error.message : "REST operation failed",
|
|
14452
|
-
|
|
14452
|
+
state: null
|
|
14453
14453
|
};
|
|
14454
14454
|
}
|
|
14455
14455
|
});
|
|
@@ -14459,14 +14459,14 @@ var WidgetAutopilotComponent = class _WidgetAutopilotComponent extends BaseWidge
|
|
|
14459
14459
|
try {
|
|
14460
14460
|
const modeResp = yield this.executeRestRequest("PUT", { path: endpoints.mode, value: { value: mode } });
|
|
14461
14461
|
console.log("[Autopilot Widget] Set mode response:", modeResp);
|
|
14462
|
-
if (modeResp.
|
|
14463
|
-
console.error(`[Autopilot Widget] Failed to set mode '${mode}':`, modeResp
|
|
14462
|
+
if (modeResp.statusCode !== 200) {
|
|
14463
|
+
console.error(`[Autopilot Widget] Failed to set mode '${mode}':`, modeResp);
|
|
14464
14464
|
return;
|
|
14465
14465
|
}
|
|
14466
14466
|
const engageResp = yield this.executeRestRequest("PUT", { path: endpoints.state, value: { value: "enabled" } });
|
|
14467
14467
|
console.log("[Autopilot Widget] Engage response:", engageResp);
|
|
14468
|
-
if (engageResp.
|
|
14469
|
-
console.error(`[Autopilot Widget] Failed to engage after mode '${mode}':`, engageResp
|
|
14468
|
+
if (engageResp.statusCode !== 200) {
|
|
14469
|
+
console.error(`[Autopilot Widget] Failed to engage after mode '${mode}':`, engageResp);
|
|
14470
14470
|
}
|
|
14471
14471
|
} catch (err) {
|
|
14472
14472
|
console.error("[Autopilot Widget] setModeAndEngage unexpected error:", err);
|
|
@@ -28295,12 +28295,12 @@ var routes = [
|
|
|
28295
28295
|
},
|
|
28296
28296
|
{
|
|
28297
28297
|
path: "home",
|
|
28298
|
-
loadComponent: () => import("./chunk-
|
|
28298
|
+
loadComponent: () => import("./chunk-UHVNAEXC.js").then((m) => m.HomeComponent),
|
|
28299
28299
|
title: "KIP - Home"
|
|
28300
28300
|
},
|
|
28301
28301
|
{
|
|
28302
28302
|
path: "settings",
|
|
28303
|
-
loadComponent: () => import("./chunk-
|
|
28303
|
+
loadComponent: () => import("./chunk-3EWIS24B.js").then((m) => m.AppSettingsComponent),
|
|
28304
28304
|
title: "KIP - Settings"
|
|
28305
28305
|
},
|
|
28306
28306
|
{
|
|
@@ -28320,7 +28320,7 @@ var routes = [
|
|
|
28320
28320
|
},
|
|
28321
28321
|
{
|
|
28322
28322
|
path: "login",
|
|
28323
|
-
loadComponent: () => import("./chunk-
|
|
28323
|
+
loadComponent: () => import("./chunk-NBF6SE6O.js").then((m) => m.WidgetLoginComponent),
|
|
28324
28324
|
title: "Login"
|
|
28325
28325
|
},
|
|
28326
28326
|
{
|