@mxtommy/kip 3.10.0 → 3.10.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -59
- package/dist/out-tsc/kip-plugin/src/index.js +223 -0
- package/dist/out-tsc/kip-plugin/src/index.js.map +1 -0
- package/dist/out-tsc/kip-plugin/src/openApi.json +367 -0
- package/dist/out-tsc/package.json +118 -0
- package/dist/out-tsc/schematics/widget/index.js +70 -0
- package/dist/out-tsc/schematics/widget/index.js.map +1 -0
- package/dist/out-tsc/src/app/app.component.js +286 -0
- package/dist/out-tsc/src/app/app.component.js.map +1 -0
- package/dist/out-tsc/src/app/app.component.spec.js +26 -0
- package/dist/out-tsc/src/app/app.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/app.routes.js +35 -0
- package/dist/out-tsc/src/app/app.routes.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/app-help/app-help.component.js +60 -0
- package/dist/out-tsc/src/app/core/components/app-help/app-help.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/app-help/app-help.component.spec.js +150 -0
- package/dist/out-tsc/src/app/core/components/app-help/app-help.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/dashboard/dashboard.component.js +361 -0
- package/dist/out-tsc/src/app/core/components/dashboard/dashboard.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/dashboard/dashboard.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/dashboard/dashboard.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/dashboard-scroller/dashboard-scroller.component.js +33 -0
- package/dist/out-tsc/src/app/core/components/dashboard-scroller/dashboard-scroller.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/dashboard-scroller/dashboard-scroller.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/dashboard-scroller/dashboard-scroller.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/dashboards-editor/dashboards-editor.component.js +183 -0
- package/dist/out-tsc/src/app/core/components/dashboards-editor/dashboards-editor.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/dashboards-editor/dashboards-editor.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/dashboards-editor/dashboards-editor.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/dashboards-manage-bottom-sheet/dashboards-manage-bottom-sheet.component.js +28 -0
- package/dist/out-tsc/src/app/core/components/dashboards-manage-bottom-sheet/dashboards-manage-bottom-sheet.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/dashboards-manage-bottom-sheet/dashboards-manage-bottom-sheet.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/dashboards-manage-bottom-sheet/dashboards-manage-bottom-sheet.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/data-inspector/data-inspector.component.js +130 -0
- package/dist/out-tsc/src/app/core/components/data-inspector/data-inspector.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/data-inspector/data-inspector.component.spec.js +21 -0
- package/dist/out-tsc/src/app/core/components/data-inspector/data-inspector.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/data-inspector-row/data-inspector-row.component.js +82 -0
- package/dist/out-tsc/src/app/core/components/data-inspector-row/data-inspector-row.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/datasets/datasets.component.js +168 -0
- package/dist/out-tsc/src/app/core/components/datasets/datasets.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/datasets/datasets.component.spec.js +21 -0
- package/dist/out-tsc/src/app/core/components/datasets/datasets.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/dialog-confirmation/dialog-confirmation.component.js +24 -0
- package/dist/out-tsc/src/app/core/components/dialog-confirmation/dialog-confirmation.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/dialog-confirmation/dialog-confirmation.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/dialog-confirmation/dialog-confirmation.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/dialog-dashboard-page-editor/dialog-dashboard-page-editor.component.js +45 -0
- package/dist/out-tsc/src/app/core/components/dialog-dashboard-page-editor/dialog-dashboard-page-editor.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/dialog-dashboard-page-editor/dialog-dashboard-page-editor.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/dialog-dashboard-page-editor/dialog-dashboard-page-editor.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/dialog-frame/dialog-frame.component.js +25 -0
- package/dist/out-tsc/src/app/core/components/dialog-frame/dialog-frame.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/dialog-frame/dialog-frame.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/dialog-frame/dialog-frame.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/dialog-name/dialog-name.component.js +31 -0
- package/dist/out-tsc/src/app/core/components/dialog-name/dialog-name.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/dialog-name/dialog-name.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/dialog-name/dialog-name.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/menu-actions/menu-actions.component.js +100 -0
- package/dist/out-tsc/src/app/core/components/menu-actions/menu-actions.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/menu-actions/menu-actions.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/menu-actions/menu-actions.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/menu-notifications/menu-notifications.component.js +60 -0
- package/dist/out-tsc/src/app/core/components/menu-notifications/menu-notifications.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/menu-notifications/menu-notifications.component.spec.js +21 -0
- package/dist/out-tsc/src/app/core/components/menu-notifications/menu-notifications.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/modal-user-credential/modal-user-credential.component.js +32 -0
- package/dist/out-tsc/src/app/core/components/modal-user-credential/modal-user-credential.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/modal-user-credential/modal-user-credential.component.spec.js +21 -0
- package/dist/out-tsc/src/app/core/components/modal-user-credential/modal-user-credential.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/notification-badge/notification-badge.component.js +51 -0
- package/dist/out-tsc/src/app/core/components/notification-badge/notification-badge.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/notification-badge/notification-badge.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/notification-badge/notification-badge.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/options/configuration/config.component.js +228 -0
- package/dist/out-tsc/src/app/core/components/options/configuration/config.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/options/configuration/config.component.spec.js +21 -0
- package/dist/out-tsc/src/app/core/components/options/configuration/config.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/options/display/display.component.js +142 -0
- package/dist/out-tsc/src/app/core/components/options/display/display.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/options/display/display.component.spec.js +21 -0
- package/dist/out-tsc/src/app/core/components/options/display/display.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/options/notifications/notifications.component.js +66 -0
- package/dist/out-tsc/src/app/core/components/options/notifications/notifications.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/options/notifications/notifications.component.spec.js +21 -0
- package/dist/out-tsc/src/app/core/components/options/notifications/notifications.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/options/signalk/signalk.component.js +255 -0
- package/dist/out-tsc/src/app/core/components/options/signalk/signalk.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/options/signalk/signalk.component.spec.js +21 -0
- package/dist/out-tsc/src/app/core/components/options/signalk/signalk.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/options/tabs/tabs.component.js +44 -0
- package/dist/out-tsc/src/app/core/components/options/tabs/tabs.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/options/tabs/tabs.component.spec.js +21 -0
- package/dist/out-tsc/src/app/core/components/options/tabs/tabs.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/options/units/units.component.js +55 -0
- package/dist/out-tsc/src/app/core/components/options/units/units.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/options/units/units.component.spec.js +21 -0
- package/dist/out-tsc/src/app/core/components/options/units/units.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/page-header/page-header.component.js +31 -0
- package/dist/out-tsc/src/app/core/components/page-header/page-header.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/page-header/page-header.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/page-header/page-header.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/remote-control/remote-control.component.js +63 -0
- package/dist/out-tsc/src/app/core/components/remote-control/remote-control.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/remote-control/remote-control.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/remote-control/remote-control.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/select-icon/select-icon.component.js +75 -0
- package/dist/out-tsc/src/app/core/components/select-icon/select-icon.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/select-icon/select-icon.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/select-icon/select-icon.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/settings/settings.component.js +56 -0
- package/dist/out-tsc/src/app/core/components/settings/settings.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/settings/settings.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/settings/settings.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/tile-large-icon/tile-large-icon.component.js +28 -0
- package/dist/out-tsc/src/app/core/components/tile-large-icon/tile-large-icon.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/tile-large-icon/tile-large-icon.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/tile-large-icon/tile-large-icon.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/upgrade-config/upgrade-config.component.js +336 -0
- package/dist/out-tsc/src/app/core/components/upgrade-config/upgrade-config.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/upgrade-config/upgrade-config.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/upgrade-config/upgrade-config.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/upgrade-config/v10-config-interface.js +2 -0
- package/dist/out-tsc/src/app/core/components/upgrade-config/v10-config-interface.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/widget-host/widget-host.component.js +77 -0
- package/dist/out-tsc/src/app/core/components/widget-host/widget-host.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/widget-host/widget-host.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/widget-host/widget-host.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/widget-host-bottom-sheet/widget-host-bottom-sheet.component.js +29 -0
- package/dist/out-tsc/src/app/core/components/widget-host-bottom-sheet/widget-host-bottom-sheet.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/widget-host-bottom-sheet/widget-host-bottom-sheet.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/widget-host-bottom-sheet/widget-host-bottom-sheet.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/widget-list-card/widget-list-card.component.js +34 -0
- package/dist/out-tsc/src/app/core/components/widget-list-card/widget-list-card.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/widget-list-card/widget-list-card.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/widget-list-card/widget-list-card.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/widget-title/widget-title.component.js +70 -0
- package/dist/out-tsc/src/app/core/components/widget-title/widget-title.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/widget-title/widget-title.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/widget-title/widget-title.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/widgets-list/widgets-list.component.js +61 -0
- package/dist/out-tsc/src/app/core/components/widgets-list/widgets-list.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/components/widgets-list/widgets-list.component.spec.js +19 -0
- package/dist/out-tsc/src/app/core/components/widgets-list/widgets-list.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/directives/gesture.directive.js +457 -0
- package/dist/out-tsc/src/app/core/directives/gesture.directive.js.map +1 -0
- package/dist/out-tsc/src/app/core/interceptors/authentication-interceptor.js +43 -0
- package/dist/out-tsc/src/app/core/interceptors/authentication-interceptor.js.map +1 -0
- package/dist/out-tsc/src/app/core/interceptors/authentication-interceptor.spec.js +7 -0
- package/dist/out-tsc/src/app/core/interceptors/authentication-interceptor.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/interfaces/app-interfaces.js +8 -0
- package/dist/out-tsc/src/app/core/interfaces/app-interfaces.js.map +1 -0
- package/dist/out-tsc/src/app/core/interfaces/app-settings.interfaces.js +2 -0
- package/dist/out-tsc/src/app/core/interfaces/app-settings.interfaces.js.map +1 -0
- package/dist/out-tsc/src/app/core/interfaces/dialog-data.js +2 -0
- package/dist/out-tsc/src/app/core/interfaces/dialog-data.js.map +1 -0
- package/dist/out-tsc/src/app/core/interfaces/signalk-autopilot-interfaces.js +11 -0
- package/dist/out-tsc/src/app/core/interfaces/signalk-autopilot-interfaces.js.map +1 -0
- package/dist/out-tsc/src/app/core/interfaces/signalk-interfaces.js +45 -0
- package/dist/out-tsc/src/app/core/interfaces/signalk-interfaces.js.map +1 -0
- package/dist/out-tsc/src/app/core/interfaces/widgets-interface.js +7 -0
- package/dist/out-tsc/src/app/core/interfaces/widgets-interface.js.map +1 -0
- package/dist/out-tsc/src/app/core/pipes/filter-self.pipe.js +24 -0
- package/dist/out-tsc/src/app/core/pipes/filter-self.pipe.js.map +1 -0
- package/dist/out-tsc/src/app/core/pipes/filter-self.pipe.spec.js +8 -0
- package/dist/out-tsc/src/app/core/pipes/filter-self.pipe.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/pipes/object-keys.pipe.js +20 -0
- package/dist/out-tsc/src/app/core/pipes/object-keys.pipe.js.map +1 -0
- package/dist/out-tsc/src/app/core/pipes/object-keys.pipe.spec.js +8 -0
- package/dist/out-tsc/src/app/core/pipes/object-keys.pipe.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/pipes/safe.pipe.js +22 -0
- package/dist/out-tsc/src/app/core/pipes/safe.pipe.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/app-initNetwork.service.js +199 -0
- package/dist/out-tsc/src/app/core/services/app-initNetwork.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/app-initNetwork.service.spec.js +13 -0
- package/dist/out-tsc/src/app/core/services/app-initNetwork.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/app-service.js +249 -0
- package/dist/out-tsc/src/app/core/services/app-service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/app-service.spec.js +13 -0
- package/dist/out-tsc/src/app/core/services/app-service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/app-settings.service.js +566 -0
- package/dist/out-tsc/src/app/core/services/app-settings.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/app-settings.service.spec.js +13 -0
- package/dist/out-tsc/src/app/core/services/app-settings.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/authentication.service.js +308 -0
- package/dist/out-tsc/src/app/core/services/authentication.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/authentication.service.spec.js +13 -0
- package/dist/out-tsc/src/app/core/services/authentication.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/canvas.service.js +566 -0
- package/dist/out-tsc/src/app/core/services/canvas.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/canvas.service.spec.js +13 -0
- package/dist/out-tsc/src/app/core/services/canvas.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/connection-state-machine.service.js +325 -0
- package/dist/out-tsc/src/app/core/services/connection-state-machine.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/dashboard.service.js +273 -0
- package/dist/out-tsc/src/app/core/services/dashboard.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/dashboard.service.spec.js +13 -0
- package/dist/out-tsc/src/app/core/services/dashboard.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/data-set.service.js +515 -0
- package/dist/out-tsc/src/app/core/services/data-set.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/data-set.service.spec.js +13 -0
- package/dist/out-tsc/src/app/core/services/data-set.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/data.service.js +425 -0
- package/dist/out-tsc/src/app/core/services/data.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/data.service.spec.js +13 -0
- package/dist/out-tsc/src/app/core/services/data.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/dialog.service.js +73 -0
- package/dist/out-tsc/src/app/core/services/dialog.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/dialog.service.spec.js +13 -0
- package/dist/out-tsc/src/app/core/services/dialog.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/notification-overlay.service.js +106 -0
- package/dist/out-tsc/src/app/core/services/notification-overlay.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/notifications.service.js +322 -0
- package/dist/out-tsc/src/app/core/services/notifications.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/notifications.service.spec.js +10 -0
- package/dist/out-tsc/src/app/core/services/notifications.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/remote-dashboards.service.js +125 -0
- package/dist/out-tsc/src/app/core/services/remote-dashboards.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/remote-dashboards.service.spec.js +13 -0
- package/dist/out-tsc/src/app/core/services/remote-dashboards.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/signalk-connection.service.js +283 -0
- package/dist/out-tsc/src/app/core/services/signalk-connection.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/signalk-delta.service.js +486 -0
- package/dist/out-tsc/src/app/core/services/signalk-delta.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/signalk-delta.service.spec.js +13 -0
- package/dist/out-tsc/src/app/core/services/signalk-delta.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/signalk-plugins.service.js +121 -0
- package/dist/out-tsc/src/app/core/services/signalk-plugins.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/signalk-plugins.service.spec.js +13 -0
- package/dist/out-tsc/src/app/core/services/signalk-plugins.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/signalk-requests.service.js +232 -0
- package/dist/out-tsc/src/app/core/services/signalk-requests.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/signalk-requests.service.spec.js +10 -0
- package/dist/out-tsc/src/app/core/services/signalk-requests.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/storage.service.js +390 -0
- package/dist/out-tsc/src/app/core/services/storage.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/storage.service.spec.js +13 -0
- package/dist/out-tsc/src/app/core/services/storage.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/timers.service.js +107 -0
- package/dist/out-tsc/src/app/core/services/timers.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/timers.service.spec.js +13 -0
- package/dist/out-tsc/src/app/core/services/timers.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/uiEvent.service.js +256 -0
- package/dist/out-tsc/src/app/core/services/uiEvent.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/uiEvent.service.spec.js +13 -0
- package/dist/out-tsc/src/app/core/services/uiEvent.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/units.service.js +630 -0
- package/dist/out-tsc/src/app/core/services/units.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/widget.service.js +405 -0
- package/dist/out-tsc/src/app/core/services/widget.service.js.map +1 -0
- package/dist/out-tsc/src/app/core/services/widget.service.spec.js +13 -0
- package/dist/out-tsc/src/app/core/services/widget.service.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/utils/app-overlay-container.js +30 -0
- package/dist/out-tsc/src/app/core/utils/app-overlay-container.js.map +1 -0
- package/dist/out-tsc/src/app/core/utils/base-widget.component.js +291 -0
- package/dist/out-tsc/src/app/core/utils/base-widget.component.js.map +1 -0
- package/dist/out-tsc/src/app/core/utils/base-widget.component.spec.js +88 -0
- package/dist/out-tsc/src/app/core/utils/base-widget.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/core/utils/dataScales.util.js +127 -0
- package/dist/out-tsc/src/app/core/utils/dataScales.util.js.map +1 -0
- package/dist/out-tsc/src/app/core/utils/dataTransforms.util.js +138 -0
- package/dist/out-tsc/src/app/core/utils/dataTransforms.util.js.map +1 -0
- package/dist/out-tsc/src/app/core/utils/iframe-inputs-inject.utils.js +55 -0
- package/dist/out-tsc/src/app/core/utils/iframe-inputs-inject.utils.js.map +1 -0
- package/dist/out-tsc/src/app/core/utils/svg-animate.util.js +303 -0
- package/dist/out-tsc/src/app/core/utils/svg-animate.util.js.map +1 -0
- package/dist/out-tsc/src/app/core/utils/themeColors.utils.js +34 -0
- package/dist/out-tsc/src/app/core/utils/themeColors.utils.js.map +1 -0
- package/dist/out-tsc/src/app/core/utils/uuid.util.js +17 -0
- package/dist/out-tsc/src/app/core/utils/uuid.util.js.map +1 -0
- package/dist/out-tsc/src/app/core/utils/zones-highlight.utils.js +87 -0
- package/dist/out-tsc/src/app/core/utils/zones-highlight.utils.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/boolean-control-config/boolean-control-config.component.js +49 -0
- package/dist/out-tsc/src/app/widget-config/boolean-control-config/boolean-control-config.component.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/boolean-control-config/boolean-control-config.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widget-config/boolean-control-config/boolean-control-config.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/boolean-multicontrol-options/boolean-multicontrol-options.component.js +100 -0
- package/dist/out-tsc/src/app/widget-config/boolean-multicontrol-options/boolean-multicontrol-options.component.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/boolean-multicontrol-options/boolean-multicontrol-options.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widget-config/boolean-multicontrol-options/boolean-multicontrol-options.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/dataset-chart-options/dataset-chart-options.component.js +54 -0
- package/dist/out-tsc/src/app/widget-config/dataset-chart-options/dataset-chart-options.component.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/dataset-chart-options/dataset-chart-options.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widget-config/dataset-chart-options/dataset-chart-options.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/display-chart-options/display-chart-options.component.js +89 -0
- package/dist/out-tsc/src/app/widget-config/display-chart-options/display-chart-options.component.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/display-chart-options/display-chart-options.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widget-config/display-chart-options/display-chart-options.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/display-datetime/display-datetime.component.js +1760 -0
- package/dist/out-tsc/src/app/widget-config/display-datetime/display-datetime.component.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/display-datetime/display-datetime.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widget-config/display-datetime/display-datetime.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/modal-widget-config/modal-widget-config.component.js +327 -0
- package/dist/out-tsc/src/app/widget-config/modal-widget-config/modal-widget-config.component.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/modal-widget-config/modal-widget-config.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widget-config/modal-widget-config/modal-widget-config.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/path-control-config/path-control-config.component.js +268 -0
- package/dist/out-tsc/src/app/widget-config/path-control-config/path-control-config.component.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/path-control-config/path-control-config.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widget-config/path-control-config/path-control-config.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/paths-options/paths-options.component.js +81 -0
- package/dist/out-tsc/src/app/widget-config/paths-options/paths-options.component.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/paths-options/paths-options.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widget-config/paths-options/paths-options.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/select-autopilot/select-autopilot.component.js +266 -0
- package/dist/out-tsc/src/app/widget-config/select-autopilot/select-autopilot.component.js.map +1 -0
- package/dist/out-tsc/src/app/widget-config/select-autopilot/select-autopilot.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widget-config/select-autopilot/select-autopilot.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/gauge-steel/gauge-steel.component.js +309 -0
- package/dist/out-tsc/src/app/widgets/gauge-steel/gauge-steel.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/gauge-steel/gauge-steel.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/gauge-steel/gauge-steel.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/minichart/minichart.component.js +512 -0
- package/dist/out-tsc/src/app/widgets/minichart/minichart.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/minichart/minichart.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widgets/minichart/minichart.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/svg-autopilot/svg-autopilot.component.js +227 -0
- package/dist/out-tsc/src/app/widgets/svg-autopilot/svg-autopilot.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/svg-autopilot/svg-autopilot.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/svg-autopilot/svg-autopilot.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/svg-boolean-button/svg-boolean-button.component.js +163 -0
- package/dist/out-tsc/src/app/widgets/svg-boolean-button/svg-boolean-button.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/svg-boolean-button/svg-boolean-button.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widgets/svg-boolean-button/svg-boolean-button.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/svg-boolean-light/svg-boolean-light.component.js +97 -0
- package/dist/out-tsc/src/app/widgets/svg-boolean-light/svg-boolean-light.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/svg-boolean-light/svg-boolean-light.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widgets/svg-boolean-light/svg-boolean-light.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/svg-boolean-switch/svg-boolean-switch.component.js +122 -0
- package/dist/out-tsc/src/app/widgets/svg-boolean-switch/svg-boolean-switch.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/svg-boolean-switch/svg-boolean-switch.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widgets/svg-boolean-switch/svg-boolean-switch.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/svg-racesteer/svg-racesteer.component.js +389 -0
- package/dist/out-tsc/src/app/widgets/svg-racesteer/svg-racesteer.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/svg-racesteer/svg-racesteer.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/svg-racesteer/svg-racesteer.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/svg-simple-linear-gauge/svg-simple-linear-gauge.component.js +76 -0
- package/dist/out-tsc/src/app/widgets/svg-simple-linear-gauge/svg-simple-linear-gauge.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/svg-simple-linear-gauge/svg-simple-linear-gauge.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/svg-simple-linear-gauge/svg-simple-linear-gauge.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/svg-windsteer/svg-windsteer.component.js +429 -0
- package/dist/out-tsc/src/app/widgets/svg-windsteer/svg-windsteer.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/svg-windsteer/svg-windsteer.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/svg-windsteer/svg-windsteer.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-autopilot/widget-autopilot.component.js +1128 -0
- package/dist/out-tsc/src/app/widgets/widget-autopilot/widget-autopilot.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-autopilot/widget-autopilot.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-autopilot/widget-autopilot.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-boolean-switch/widget-boolean-switch.component.js +140 -0
- package/dist/out-tsc/src/app/widgets/widget-boolean-switch/widget-boolean-switch.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-boolean-switch/widget-boolean-switch.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widgets/widget-boolean-switch/widget-boolean-switch.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-data-chart/widget-data-chart.component.js +678 -0
- package/dist/out-tsc/src/app/widgets/widget-data-chart/widget-data-chart.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-data-chart/widget-data-chart.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widgets/widget-data-chart/widget-data-chart.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-datetime/widget-datetime.component.js +177 -0
- package/dist/out-tsc/src/app/widgets/widget-datetime/widget-datetime.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-datetime/widget-datetime.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-datetime/widget-datetime.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-freeboardsk/widget-freeboardsk.component.js +146 -0
- package/dist/out-tsc/src/app/widgets/widget-freeboardsk/widget-freeboardsk.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-freeboardsk/widget-freeboardsk.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widgets/widget-freeboardsk/widget-freeboardsk.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-gauge-ng-compass/widget-gauge-ng-compass.component.js +301 -0
- package/dist/out-tsc/src/app/widgets/widget-gauge-ng-compass/widget-gauge-ng-compass.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-gauge-ng-compass/widget-gauge-ng-compass.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widgets/widget-gauge-ng-compass/widget-gauge-ng-compass.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-gauge-ng-linear/widget-gauge-ng-linear.component.js +413 -0
- package/dist/out-tsc/src/app/widgets/widget-gauge-ng-linear/widget-gauge-ng-linear.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-gauge-ng-linear/widget-gauge-ng-linear.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-gauge-ng-linear/widget-gauge-ng-linear.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-gauge-ng-radial/widget-gauge-ng-radial.component.js +360 -0
- package/dist/out-tsc/src/app/widgets/widget-gauge-ng-radial/widget-gauge-ng-radial.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-gauge-ng-radial/widget-gauge-ng-radial.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-gauge-ng-radial/widget-gauge-ng-radial.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-gauge-steel/widget-gauge-steel.component.js +119 -0
- package/dist/out-tsc/src/app/widgets/widget-gauge-steel/widget-gauge-steel.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-gauge-steel/widget-gauge-steel.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-gauge-steel/widget-gauge-steel.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-heel-gauge/widget-heel-gauge.component.js +205 -0
- package/dist/out-tsc/src/app/widgets/widget-heel-gauge/widget-heel-gauge.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-heel-gauge/widget-heel-gauge.component.spec.js +15 -0
- package/dist/out-tsc/src/app/widgets/widget-heel-gauge/widget-heel-gauge.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-horizon/widget-horizon.component.js +196 -0
- package/dist/out-tsc/src/app/widgets/widget-horizon/widget-horizon.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-horizon/widget-horizon.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-horizon/widget-horizon.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-iframe/widget-iframe.component.js +173 -0
- package/dist/out-tsc/src/app/widgets/widget-iframe/widget-iframe.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-iframe/widget-iframe.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-iframe/widget-iframe.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-label/widget-label.component.js +128 -0
- package/dist/out-tsc/src/app/widgets/widget-label/widget-label.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-label/widget-label.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widgets/widget-label/widget-label.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-login/login.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-login/login.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-login/widget-login.component.js +78 -0
- package/dist/out-tsc/src/app/widgets/widget-login/widget-login.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-numeric/widget-numeric.component.js +303 -0
- package/dist/out-tsc/src/app/widgets/widget-numeric/widget-numeric.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-numeric/widget-numeric.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-numeric/widget-numeric.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-position/widget-position.component.js +177 -0
- package/dist/out-tsc/src/app/widgets/widget-position/widget-position.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-position/widget-position.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-position/widget-position.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-race-timer/widget-race-timer.component.js +275 -0
- package/dist/out-tsc/src/app/widgets/widget-race-timer/widget-race-timer.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-race-timer/widget-race-timer.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-race-timer/widget-race-timer.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-racer-line/widget-racer-line.component.js +319 -0
- package/dist/out-tsc/src/app/widgets/widget-racer-line/widget-racer-line.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-racer-line/widget-racer-line.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-racer-line/widget-racer-line.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-racer-timer/widget-racer-timer.component.js +365 -0
- package/dist/out-tsc/src/app/widgets/widget-racer-timer/widget-racer-timer.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-racer-timer/widget-racer-timer.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-racer-timer/widget-racer-timer.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-racesteer/widget-racesteer.component.js +321 -0
- package/dist/out-tsc/src/app/widgets/widget-racesteer/widget-racesteer.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-racesteer/widget-racesteer.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-racesteer/widget-racesteer.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-simple-linear/widget-simple-linear.component.js +189 -0
- package/dist/out-tsc/src/app/widgets/widget-simple-linear/widget-simple-linear.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-simple-linear/widget-simple-linear.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-simple-linear/widget-simple-linear.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-slider/widget-slider.component.js +248 -0
- package/dist/out-tsc/src/app/widgets/widget-slider/widget-slider.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-slider/widget-slider.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widgets/widget-slider/widget-slider.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-text/widget-text.component.js +138 -0
- package/dist/out-tsc/src/app/widgets/widget-text/widget-text.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-text/widget-text.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-text/widget-text.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-tutorial/widget-tutorial.component.js +43 -0
- package/dist/out-tsc/src/app/widgets/widget-tutorial/widget-tutorial.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-tutorial/widget-tutorial.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-tutorial/widget-tutorial.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-windsteer/widget-windsteer.component.js +483 -0
- package/dist/out-tsc/src/app/widgets/widget-windsteer/widget-windsteer.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-windsteer/widget-windsteer.component.spec.js +21 -0
- package/dist/out-tsc/src/app/widgets/widget-windsteer/widget-windsteer.component.spec.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-windtrends-chart/widget-windtrends-chart.component.js +1067 -0
- package/dist/out-tsc/src/app/widgets/widget-windtrends-chart/widget-windtrends-chart.component.js.map +1 -0
- package/dist/out-tsc/src/app/widgets/widget-windtrends-chart/widget-windtrends-chart.component.spec.js +19 -0
- package/dist/out-tsc/src/app/widgets/widget-windtrends-chart/widget-windtrends-chart.component.spec.js.map +1 -0
- package/dist/out-tsc/src/default-config/config.blank.const.js +35 -0
- package/dist/out-tsc/src/default-config/config.blank.const.js.map +1 -0
- package/dist/out-tsc/src/default-config/config.blank.notification.const.js +22 -0
- package/dist/out-tsc/src/default-config/config.blank.notification.const.js.map +1 -0
- package/dist/out-tsc/src/default-config/config.blank.units.const.js +24 -0
- package/dist/out-tsc/src/default-config/config.blank.units.const.js.map +1 -0
- package/dist/out-tsc/src/default-config/config.demo.const.js +739 -0
- package/dist/out-tsc/src/default-config/config.demo.const.js.map +1 -0
- package/dist/out-tsc/src/environments/environment.js +8 -0
- package/dist/out-tsc/src/environments/environment.js.map +1 -0
- package/dist/out-tsc/src/environments/environment.prod.js +4 -0
- package/dist/out-tsc/src/environments/environment.prod.js.map +1 -0
- package/dist/out-tsc/src/main.js +111 -0
- package/dist/out-tsc/src/main.js.map +1 -0
- package/dist/out-tsc/src/polyfills.js +67 -0
- package/dist/out-tsc/src/polyfills.js.map +1 -0
- package/dist/out-tsc/src/test-setup.js +1 -0
- package/dist/out-tsc/src/test-setup.js.map +1 -0
- package/dist/out-tsc/src/test-shims/steelseries-shim.js +44 -0
- package/dist/out-tsc/src/test-shims/steelseries-shim.js.map +1 -0
- package/dist/out-tsc/src/test.js +84 -0
- package/dist/out-tsc/src/test.js.map +1 -0
- package/images/ActionSidenav.png +0 -0
- package/images/KipBrightness-1024.png +0 -0
- package/images/KipNightMode-1024.png +0 -0
- package/images/Options.png +0 -0
- package/images/exterior_user_installs.png +0 -0
- package/package.json +1 -1
- package/plugin/index.js +2 -1
- package/public/{chunk-TTNX7JB6.js → chunk-AAENY2CA.js} +1 -1
- package/public/{chunk-YPVFGYWU.js → chunk-BQ27NXSF.js} +1 -1
- package/public/chunk-DAFXHRNH.js +1 -0
- package/public/{chunk-TSNRNW3D.js → chunk-R6Z4XAJE.js} +1 -1
- package/public/{chunk-CCEKSCJH.js → chunk-SMG4DK42.js} +1 -1
- package/public/index.html +1 -1
- package/public/{main-JN6ENHFX.js → main-4CBSJEBR.js} +2 -2
- package/public/chunk-G5U7W6LL.js +0 -1
package/README.md
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
# About KIP
|
|
2
2
|
|
|
3
|
-
KIP is a powerful and versatile marine instrumentation package designed to display Signal K data. It replicates the functionality of modern Multi-Function Displays (MFDs) similar to most commercial products, while offering unmatched flexibility and customization. KIP can be tailored to any arrangement, displaying all kinds of data available from the Signal K server.
|
|
3
|
+
KIP is a powerful and versatile marine instrumentation package designed to display [Signal K](https://signalk.org) data ([GitHub Projet](https://github.com/SignalK/signalk-server)). It replicates the functionality of modern Multi-Function Displays (MFDs) similar to most commercial products, while offering unmatched flexibility and customization. KIP can be tailored to any arrangement, displaying all kinds of data available from the [Signal K](https://signalk.org) server.
|
|
4
4
|
|
|
5
|
-
With its responsive design, KIP works seamlessly across phones, tablets, Raspberry Pi, and computers, ensuring an optimal user experience on any device. It supports touchscreen gestures, night/day modes,
|
|
5
|
+
With its responsive design, KIP works seamlessly across phones, tablets, Raspberry Pi, and computers, ensuring an optimal user experience on any device. It supports touchscreen gestures, night/day modes, Progressive Web App (PWA) functionality for a full-screen, app-like experience or Kiosk mode as a dedicate hardware solution.
|
|
6
6
|
|
|
7
7
|

|
|
8
8
|
|
|
9
|
-

|
|
10
|
-
|
|
11
9
|
Key features include:
|
|
12
10
|
- **Flexible Layouts**: Build purposeful dashboards with an easy-to-use and intuitive grid layout system. Drag widgets into place and make adjustments with simple gestures or clicks.
|
|
13
11
|
- **Reusable Widget Library**: A wide range of widgets for numerical, textual, and graphical data, as well as advanced controls like switches, sliders, and autopilot operation.
|
|
@@ -15,14 +13,19 @@ Key features include:
|
|
|
15
13
|
- **Data State Notifications**: Stay informed with visual and audio alerts for critical data thresholds.
|
|
16
14
|
- **Multiple User Profiles**: Tailor configurations for different roles, devices, or use cases.
|
|
17
15
|
- **Cross-Device Compatibility**: Access KIP remotely on any device by navigating to `http://<Signal K Server URL>:<port>/@mxtommy/kip`.
|
|
16
|
+
- **Remote Control**: Control which dashboard is shown on another KIP instance (e.g., a mast display, hard-to-reach screen, or a non‑touch device).
|
|
17
|
+
- **Kiosk Mode**: Run as a single full-screen application; mast, helm, portable display used as a dedicated instrument panel, a chartplotter, etc.
|
|
18
|
+
|
|
19
|
+
KIP is open-source under the MIT license, built by the community and 100% free. [Join the community](https://discord.gg/AMDYT2DQga) on Discord or contribute to the project on GitHub!
|
|
18
20
|
|
|
19
|
-
|
|
21
|
+
## Installations Showcase
|
|
22
|
+

|
|
23
|
+
In addition to the obvious navstation, tablet and phone use cases, users have taken KIP outside using Raspberry Pi and Pi Zero computers, rugged tablets and all kinds of cheap to expensive touch screens.
|
|
20
24
|
|
|
21
25
|
## Read the Help introduction How-to
|
|
22
|
-
|
|
26
|
+
You just installed KIP and your stuck; read the [Introduction](https://github.com/mxtommy/Kip/blob/master/src/assets/help-docs/welcome.md) help file.
|
|
23
27
|
|
|
24
28
|
# Design Goal
|
|
25
|
-
|
|
26
29
|
The goal is to replicate and enhance the functionality of modern marine instrumentation displays while providing unmatched customization and flexibility. The design principles include:
|
|
27
30
|
|
|
28
31
|
- **Full-Screen Utilization**: Ensure the display uses the entire screen without requiring scrolling, maximizing visibility and usability.
|
|
@@ -31,6 +34,8 @@ The goal is to replicate and enhance the functionality of modern marine instrume
|
|
|
31
34
|
- **Cross-Device Compatibility**: Guarantee a consistent and responsive experience across phones, tablets, computers, and other devices.
|
|
32
35
|
- **Modern Browser Support**: Include support for the latest versions of Chromium and other modern web browsers to ensure optimal performance and compatibility.
|
|
33
36
|
|
|
37
|
+

|
|
38
|
+
|
|
34
39
|
## Features
|
|
35
40
|
|
|
36
41
|
### Intuitive Controls
|
|
@@ -38,6 +43,9 @@ The goal is to replicate and enhance the functionality of modern marine instrume
|
|
|
38
43
|
- Swipe left and right to access notifications and other system features quickly.
|
|
39
44
|
- Use keyboard shortcuts for essential features, ensuring fast and efficient navigation across devices.
|
|
40
45
|
|
|
46
|
+

|
|
47
|
+
Sidenav for quick access to all important features.
|
|
48
|
+
|
|
41
49
|
### Progressive Web App (PWA) Support
|
|
42
50
|
Run KIP in full-screen mode without browser controls, just like a native mobile app. This feature is supported on most mobile operating systems. Follow your browser's instructions to install KIP as a PWA for quick and easy access. It's usually just a few clicks, such as "Add to Home Screen".
|
|
43
51
|
|
|
@@ -51,15 +59,14 @@ Run KIP in full-screen mode without browser controls, just like a native mobile
|
|
|
51
59
|
### Multiple User Profiles
|
|
52
60
|
Create and manage profiles for different roles, devices, or use cases. Each profile can have its own dashboard configurations and settings.
|
|
53
61
|
|
|
54
|
-
### Open Source and Community-Driven
|
|
55
|
-
KIP is built with modern web technologies and is open-source under the MIT license. Like many others, join the community on Discord or contribute to the project on GitHub to help shape its future.
|
|
56
|
-
|
|
57
62
|
## User Experience
|
|
58
63
|
|
|
59
64
|
### Flexible and Easy
|
|
60
|
-
Meant to build purposeful
|
|
65
|
+
Meant to build purposeful dashboards with however many widgets you want, wherever you want them.
|
|
61
66
|
|
|
62
67
|
Add, resize, and position the widgets of your choosing. Need more? Add as many additional dashboards as you wish to keep your display purposeful. Simply swipe up and down to quickly cycle through dashboards.
|
|
68
|
+
|
|
69
|
+
Add widget lists sorted by category
|
|
63
70
|

|
|
64
71
|
|
|
65
72
|
Intuitive widget configuration.
|
|
@@ -71,6 +78,9 @@ See what Signal K has to offer that you can leverage with widgets. Select it and
|
|
|
71
78
|
Many units are supported. Choose your preferred app defaults, then tweak them widget-by-widget as necessary. KIP will automatically convert the units for you.
|
|
72
79
|

|
|
73
80
|
|
|
81
|
+
Organize your dashboards and access tools
|
|
82
|
+

|
|
83
|
+
|
|
74
84
|
## Reusable Widget Library
|
|
75
85
|
All KIP widgets are visual presentation controls that are very versatile, with multiple advanced configuration options available to suit your needs:
|
|
76
86
|
- **Numeric display**: Create gauges to display any numerical data sent by your system: SOG, depth, wind speed, VMG, refrigerator temperature, weather data, etc.
|
|
@@ -98,22 +108,24 @@ All KIP widgets are visual presentation controls that are very versatile, with m
|
|
|
98
108
|
Get the latest version of KIP to see what's new!
|
|
99
109
|
|
|
100
110
|
### Widget Samples
|
|
101
|
-
|
|
111
|
+
Gauges
|
|
102
112
|

|
|
103
113
|
|
|
104
|
-
|
|
114
|
+
Various
|
|
105
115
|

|
|
106
116
|
|
|
107
|
-
Freeboard-SK Integration
|
|
117
|
+
Freeboard-SK Integration with Autopilot
|
|
108
118
|

|
|
109
119
|
|
|
110
120
|
Grafana Integration
|
|
111
121
|

|
|
112
122
|
|
|
113
|
-
## Night
|
|
114
|
-
Keep your night vision with automatic or manual day and night switching. The
|
|
123
|
+
## Night Modes
|
|
124
|
+
Keep your night vision with automatic or manual day and night switching to a color preserving dim mode or an all Red theme. The images below look very dark, but at night... they are perfect!
|
|
115
125
|
|
|
116
|
-

|
|
126
|
+

|
|
127
|
+
|
|
128
|
+

|
|
117
129
|
|
|
118
130
|
## Harness the Power of Data State Notifications
|
|
119
131
|
Stay informed with notifications about the state of the data you are interested in.
|
|
@@ -131,20 +143,7 @@ Use cases
|
|
|
131
143
|
- Non‑touch/no input: select dashboards when no keyboard/mouse is connected or touch is not supported/disabled.
|
|
132
144
|
|
|
133
145
|
## Dedicated Fullscreen instrument display (Kiosk Mode)
|
|
134
|
-
Runs KIP on Raspberry Pi as a single
|
|
135
|
-
|
|
136
|
-
## Complementary Components
|
|
137
|
-
Typical complementary components you may install (many are often bundled with Signal K distributions):
|
|
138
|
-
|
|
139
|
-
**Navigation & Charting**
|
|
140
|
-
- **Freeboard‑SK** – Multi‑station, web chart plotter dedicated to Signal K: routes, waypoints, charts, alarms, weather layers, and instrument overlays.
|
|
141
|
-
|
|
142
|
-
**Visual Flow / Automation**
|
|
143
|
-
- **Node‑RED** – Low‑code, flow‑based wiring of devices, APIs, online services, and custom logic (alert escalation, device control automation, data enrichment, protocol bridging).
|
|
144
|
-
|
|
145
|
-
**Data Storage & Analytics**
|
|
146
|
-
- **InfluxDB / other TSDB** – High‑resolution historical storage of sensor & performance metrics beyond what lightweight widget charts should retain.
|
|
147
|
-
- **Grafana** – Rich exploratory / comparative dashboards, ad‑hoc queries, alert rules on stored metrics, correlation across heterogeneous data sources.
|
|
146
|
+
Runs KIP on Raspberry Pi as a single full-screen application, suppresses desktop UI and stays on screen like a dedicated instrument display at a fraction of the cost. Read the [Kiosk Mode](https://github.com/mxtommy/Kip/blob/master/src/assets/help-docs/kiosk.md) help file.
|
|
148
147
|
|
|
149
148
|
## Complementary Components
|
|
150
149
|
Typical complementary components you may install (many are often bundled with Signal K distributions):
|
|
@@ -187,35 +186,15 @@ Those domains already have excellent, specialized open‑source tools. Instead o
|
|
|
187
186
|
- **Signal K Plugins** – Domain‑specific enrichment (polars, performance calculations, derived environmental data, routing aids) published directly into the Signal K data model that KIP can then display.
|
|
188
187
|
|
|
189
188
|
**Why this separation matters**
|
|
190
|
-
Keeping KIP focused preserves responsiveness (lower CPU / memory), reduces UI clutter, and accelerates iteration on core sailing UX. Heavy analytics, complex workflow logic, and broad third‑party embedding stay where they are strongest—outside—but still feed KIP through the common Signal K data fabric.
|
|
191
|
-
|
|
192
|
-
In short: use KIP to see & act on live sailing information; use the complementary tools to store it long‑term, analyze it deeply, automate decisions, or build advanced integrations.
|
|
193
|
-
|
|
194
|
-
## Project Scope
|
|
195
|
-
What KIP IS about:
|
|
196
|
-
- Real‑time presentation of vessel & environment data (navigation, performance, systems) pulled from Signal K.
|
|
197
|
-
- Fast, legible, touchscreen‑friendly dashboards for underway decision making.
|
|
198
|
-
- Configurable widgets (gauges, charts, timers, controls) tuned for sailing operations.
|
|
199
|
-
|
|
200
|
-
What KIP deliberately IS NOT trying to become:
|
|
201
|
-
- A full data lake / long‑term time‑series historian.
|
|
202
|
-
- A general purpose automation / rules / orchestration engine.
|
|
203
|
-
- A universal external web‑app embedding or mash‑up framework.
|
|
204
|
-
- A low‑code integration hub for arbitrarily wiring protocols and services.
|
|
205
|
-
|
|
206
|
-
Those domains already have excellent, specialized open‑source tools. Instead of re‑implementing them, KIP plays nicely alongside them within a Signal K based onboard stack.
|
|
207
189
|
|
|
208
|
-
|
|
209
|
-
- **Signal K Plugins** – Domain‑specific enrichment (polars, performance calculations, derived environmental data, routing aids) published directly into the Signal K data model that KIP can then display.
|
|
210
|
-
|
|
211
|
-
**Why this separation matters**
|
|
212
|
-
Keeping KIP focused preserves responsiveness (lower CPU / memory), reduces UI clutter, and accelerates iteration on core sailing UX. Heavy analytics, complex workflow logic, and broad third‑party embedding stay where they are strongest—outside—but still feed KIP through the common Signal K data fabric.
|
|
190
|
+
Keeping KIP focused preserves responsiveness (lower CPU / memory), reduces UI clutter, and accelerates core sailing user experience development. Heavy analytics, complex workflow logic, and broad third‑party embedding stay where they are strongest—outside—but still feed KIP through the common Signal K data fabric.
|
|
213
191
|
|
|
214
192
|
In short: use KIP to see & act on live sailing information; use the complementary tools to store it long‑term, analyze it deeply, automate decisions, or build advanced integrations.
|
|
215
193
|
|
|
216
194
|
**Tools**
|
|
195
|
+
|
|
217
196
|
Linux, Mac, RPi, or Windows dev platform supported
|
|
218
|
-
1. Install the latest Node version (
|
|
197
|
+
1. Install the latest Node version (v20+)
|
|
219
198
|
2. Download your favorite coding IDE (we use the free Visual Studio Code)
|
|
220
199
|
3. Create your own GitHub KIP fork.
|
|
221
200
|
4. Configure your IDE's source control to point to your forked KIP instance (with Visual Studio Code, GitHub support is built-in) and get the fork's master branch locally.
|
|
@@ -227,12 +206,12 @@ Linux, Mac, RPi, or Windows dev platform supported
|
|
|
227
206
|
2. Check out this new branch.
|
|
228
207
|
3. In a command shell (or in the Visual Studio Code Terminal window), go to the root of your local project branch folder, if not done automatically by your IDE.
|
|
229
208
|
4. Install project dependencies using the NPM package and dependency manager: run `npm install`. NPM will read the Kip project dependencies, download, and install everything automatically for you.
|
|
230
|
-
5. Build the app locally using Angular CLI: from that same project root folder, run `
|
|
209
|
+
5. Build the app locally using Angular CLI: from that same project root folder, run `npm run build:all`. The CLI tool will build KIP.
|
|
231
210
|
|
|
232
211
|
**Setup**
|
|
233
212
|
1. Fire up your local dev instance with `npm run dev`.
|
|
234
|
-
2. Hit Run/Start Debugging in Visual Studio Code or point your favorite browser to `http://localhost:4200/@mxtommy/kip`. Alternatively, to start the dev server and
|
|
235
|
-
`ng serve --configuration=dev --serve-path=/@mxtommy/kip/ --host=<your computer's IP> --port=4200
|
|
213
|
+
2. Hit Run/Start Debugging in Visual Studio Code or point your favorite browser to `http://localhost:4200/@mxtommy/kip`. Alternatively, to start the dev server and allow remote devices connections, such as with your phone or RPi:
|
|
214
|
+
`ng serve --configuration=dev --serve-path=/@mxtommy/kip/ --host=<your computer's IP> --port=4200`
|
|
236
215
|
3. Voila!
|
|
237
216
|
|
|
238
217
|
*As you work on source code and save files, the app will automatically reload in the browser with your latest changes.*
|
|
@@ -243,7 +222,8 @@ Use the following tool and command line:
|
|
|
243
222
|
`npx pwa-asset-generator ./src/assets/favicon.svg ./src/assets/ -i ./src/index.html -m ./src manifest.json -b "linear-gradient(to bottom, rgba(255,255,255,0.15) 0%, rgba(0,0,0,0.15) 100%), radial-gradient(at top center, rgba(255,255,255,0.40) 0%, rgba(0,0,0,0.40) 120%) #989898" -p 5%`
|
|
244
223
|
|
|
245
224
|
**Share**
|
|
246
|
-
|
|
225
|
+
|
|
226
|
+
Once done with your work, from your fork's working branch, make a GitHub pull request to have your code reviewed, merged, and included in the next release. It's always optimal to sync with us prior to engaging in extensive new development work.
|
|
247
227
|
|
|
248
228
|
## Development Instructions & Guidelines
|
|
249
229
|
|
|
@@ -265,4 +245,4 @@ For guidance on high-performance widget animations (e.g., wind dial rotations, l
|
|
|
265
245
|
- **Widget Development**: Always extend `BaseWidgetComponent` (see COPILOT.md).
|
|
266
246
|
- **Angular Patterns**: Use signals, standalone components, and modern control flow.
|
|
267
247
|
- **Theming**: Follow KIP's theme system for consistent UI.
|
|
268
|
-
- **Code Quality**: Run `npm run lint` before commits
|
|
248
|
+
- **Code Quality**: Run `npm run lint` before commits.
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { SKVersion } from '@signalk/server-api';
|
|
2
|
+
import * as openapi from './openApi.json';
|
|
3
|
+
export default (server) => {
|
|
4
|
+
const API_PATHS = {
|
|
5
|
+
DISPLAYS: `/displays`,
|
|
6
|
+
INSTANCE: `/displays/:displayId`,
|
|
7
|
+
ACTIVE_SCREEN: `/displays/:displayId/activeScreen`
|
|
8
|
+
};
|
|
9
|
+
// Helpers
|
|
10
|
+
function getDisplaySelfPath(displayId, suffix) {
|
|
11
|
+
const tail = suffix ? `.${suffix}` : '';
|
|
12
|
+
const want = `displays.${displayId}${tail}`;
|
|
13
|
+
const full = server.getSelfPath(want);
|
|
14
|
+
server.debug(`getDisplaySelfPath: displayId: ${displayId}, suffix: ${suffix}, want=${want}, fullPath=${JSON.stringify(full)}`);
|
|
15
|
+
return full ? full : undefined;
|
|
16
|
+
}
|
|
17
|
+
function getAvailableDisplays() {
|
|
18
|
+
const fullPath = server.getSelfPath('displays');
|
|
19
|
+
server.debug(`getAvailableDisplays: fullPath=${JSON.stringify(fullPath)}`);
|
|
20
|
+
return fullPath ? fullPath : undefined;
|
|
21
|
+
}
|
|
22
|
+
function pathToDotNotation(path) {
|
|
23
|
+
const dottedPath = path.replace(/\//g, '.').replace(/^\./, '');
|
|
24
|
+
server.debug(`pathToDotNotation: input path=${path}, dottedPath=${dottedPath}`);
|
|
25
|
+
return dottedPath;
|
|
26
|
+
}
|
|
27
|
+
function sendOk(res, body) {
|
|
28
|
+
if (body === undefined)
|
|
29
|
+
return res.status(204).end();
|
|
30
|
+
return res.status(200).json(body);
|
|
31
|
+
}
|
|
32
|
+
function sendFail(res, statusCode, message) {
|
|
33
|
+
return res.status(statusCode).json({ state: 'FAILED', statusCode, message });
|
|
34
|
+
}
|
|
35
|
+
const plugin = {
|
|
36
|
+
id: 'kip',
|
|
37
|
+
name: 'KIP',
|
|
38
|
+
description: 'KIP server plugin',
|
|
39
|
+
start: (settings) => {
|
|
40
|
+
server.debug(`Starting plugin with settings: ${JSON.stringify(settings)}`);
|
|
41
|
+
server.setPluginStatus(`Starting...`);
|
|
42
|
+
},
|
|
43
|
+
stop: () => {
|
|
44
|
+
server.debug(`Stopping plugin`);
|
|
45
|
+
const msg = 'Stopped.';
|
|
46
|
+
server.setPluginStatus(msg);
|
|
47
|
+
},
|
|
48
|
+
schema: () => {
|
|
49
|
+
return {
|
|
50
|
+
type: "object",
|
|
51
|
+
properties: {}
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
registerWithRouter(router) {
|
|
55
|
+
server.debug(`Registering plugin routes: ${API_PATHS.DISPLAYS}, ${API_PATHS.INSTANCE}, ${API_PATHS.ACTIVE_SCREEN}`);
|
|
56
|
+
// Validate/normalize :displayId where present
|
|
57
|
+
router.param('displayId', (req, res, next, displayId) => {
|
|
58
|
+
if (displayId == null)
|
|
59
|
+
return sendFail(res, 400, 'Missing displayId parameter');
|
|
60
|
+
try {
|
|
61
|
+
let id = String(displayId);
|
|
62
|
+
// Decode percent-encoding if present
|
|
63
|
+
try {
|
|
64
|
+
id = decodeURIComponent(id);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// ignore decode errors, keep original id
|
|
68
|
+
}
|
|
69
|
+
// If someone sent JSON as the path segment, try to recover {"displayId":"..."}
|
|
70
|
+
if (id.trim().startsWith('{')) {
|
|
71
|
+
try {
|
|
72
|
+
const parsed = JSON.parse(id);
|
|
73
|
+
if (parsed && typeof parsed.displayId === 'string') {
|
|
74
|
+
id = parsed.displayId;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
return sendFail(res, 400, 'Invalid displayId format in JSON');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return sendFail(res, 400, 'Invalid displayId JSON');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Basic safety: allow UUID-like strings (alphanum + dash)
|
|
85
|
+
if (!/^[A-Za-z0-9-]+$/.test(id)) {
|
|
86
|
+
return sendFail(res, 400, 'Invalid displayId format');
|
|
87
|
+
}
|
|
88
|
+
req.displayId = id;
|
|
89
|
+
next();
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return sendFail(res, 400, 'Missing or invalid displayId parameter');
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
router.put(`${API_PATHS.INSTANCE}`, async (req, res) => {
|
|
96
|
+
server.debug(`** PUT ${API_PATHS.INSTANCE}. Params: ${JSON.stringify(req.params)} Body: ${JSON.stringify(req.body)}`);
|
|
97
|
+
try {
|
|
98
|
+
const dottedPath = pathToDotNotation(req.path);
|
|
99
|
+
server.debug(`Updating SK path ${dottedPath}`);
|
|
100
|
+
server.handleMessage(plugin.id, {
|
|
101
|
+
updates: [
|
|
102
|
+
{
|
|
103
|
+
values: [
|
|
104
|
+
{
|
|
105
|
+
path: dottedPath,
|
|
106
|
+
value: req.body ?? null
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
]
|
|
111
|
+
}, SKVersion.v1);
|
|
112
|
+
return res.status(200).json({ state: 'SUCCESS', statusCode: 200 });
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
const msg = `HandleMessage failed with errors!`;
|
|
116
|
+
server.setPluginError(msg);
|
|
117
|
+
server.error(`Error in HandleMessage: ${error}`);
|
|
118
|
+
return sendFail(res, 400, error.message);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
router.put(`${API_PATHS.ACTIVE_SCREEN}`, async (req, res) => {
|
|
122
|
+
server.debug(`** PUT ${API_PATHS.ACTIVE_SCREEN}. Params: ${JSON.stringify(req.params)} Body: ${JSON.stringify(req.body)}`);
|
|
123
|
+
try {
|
|
124
|
+
const dottedPath = pathToDotNotation(req.path);
|
|
125
|
+
server.debug(`Updating SK path ${dottedPath} with body.screenIdx`);
|
|
126
|
+
server.handleMessage(plugin.id, {
|
|
127
|
+
updates: [
|
|
128
|
+
{
|
|
129
|
+
values: [
|
|
130
|
+
{
|
|
131
|
+
path: dottedPath,
|
|
132
|
+
value: req.body.screenIdx !== undefined ? req.body.screenIdx : null
|
|
133
|
+
}
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
]
|
|
137
|
+
}, SKVersion.v1);
|
|
138
|
+
return res.status(200).json({ state: 'SUCCESS', statusCode: 200 });
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
const msg = `HandleMessage failed with errors!`;
|
|
142
|
+
server.setPluginError(msg);
|
|
143
|
+
server.error(`Error in HandleMessage: ${error}`);
|
|
144
|
+
return sendFail(res, 400, error.message);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
router.get(API_PATHS.DISPLAYS, (req, res) => {
|
|
148
|
+
server.debug(`** GET ${API_PATHS.DISPLAYS}. Params: ${JSON.stringify(req.params)}`);
|
|
149
|
+
try {
|
|
150
|
+
const displays = getAvailableDisplays();
|
|
151
|
+
const items = displays && typeof displays === 'object'
|
|
152
|
+
? Object.entries(displays)
|
|
153
|
+
.filter(([, v]) => v && typeof v === 'object')
|
|
154
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
155
|
+
.map(([displayId, v]) => ({
|
|
156
|
+
displayId,
|
|
157
|
+
displayName: v?.value?.displayName ?? null
|
|
158
|
+
}))
|
|
159
|
+
: [];
|
|
160
|
+
server.debug(`getAvailableDisplays returned: ${JSON.stringify(displays)}`);
|
|
161
|
+
server.debug(`Found ${items.length} displays: ${JSON.stringify(items)}`);
|
|
162
|
+
return res.status(200).json(items);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
server.error(`Error reading displays: ${String(error.message || error)}`);
|
|
166
|
+
return sendFail(res, 400, error.message);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
router.get(`${API_PATHS.INSTANCE}`, (req, res) => {
|
|
170
|
+
server.debug(`** GET ${API_PATHS.INSTANCE}. Params: ${JSON.stringify(req.params)}`);
|
|
171
|
+
try {
|
|
172
|
+
const displayId = req.displayId;
|
|
173
|
+
if (!displayId) {
|
|
174
|
+
return sendFail(res, 400, 'Missing displayId parameter');
|
|
175
|
+
}
|
|
176
|
+
const node = getDisplaySelfPath(displayId);
|
|
177
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
178
|
+
const screens = node?.value?.screens ?? null;
|
|
179
|
+
if (screens === undefined) {
|
|
180
|
+
return sendFail(res, 404, `Display ${displayId} not found`);
|
|
181
|
+
}
|
|
182
|
+
return sendOk(res, screens);
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
server.error(`Error reading display ${req.params?.displayId}: ${String(error.message || error)}`);
|
|
186
|
+
return sendFail(res, 400, error.message);
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
router.get(`${API_PATHS.ACTIVE_SCREEN}`, (req, res) => {
|
|
190
|
+
server.debug(`** GET ${API_PATHS.ACTIVE_SCREEN}. Params: ${JSON.stringify(req.params)}`);
|
|
191
|
+
try {
|
|
192
|
+
const displayId = req.displayId;
|
|
193
|
+
if (!displayId) {
|
|
194
|
+
return sendFail(res, 400, 'Missing displayId parameter');
|
|
195
|
+
}
|
|
196
|
+
const node = getDisplaySelfPath(displayId, 'activeScreen');
|
|
197
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
198
|
+
const idx = node?.value ?? null;
|
|
199
|
+
if (idx === undefined) {
|
|
200
|
+
return sendFail(res, 404, `Active screen for display ${displayId} not found`);
|
|
201
|
+
}
|
|
202
|
+
return sendOk(res, idx);
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
server.error(`Error reading activeScreen for ${req.params?.displayId}: ${String(error.message || error)}`);
|
|
206
|
+
return sendFail(res, 400, error.message);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
// List all registered routes for debugging
|
|
210
|
+
if (router.stack) {
|
|
211
|
+
router.stack.forEach((layer) => {
|
|
212
|
+
if (layer.route && layer.route.path) {
|
|
213
|
+
server.debug(`Registered route: ${layer.route.stack[0].method.toUpperCase()} ${layer.route.path}`);
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
server.setPluginStatus(`Providing remote display screen control`);
|
|
218
|
+
},
|
|
219
|
+
getOpenApi: () => openapi
|
|
220
|
+
};
|
|
221
|
+
return plugin;
|
|
222
|
+
};
|
|
223
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../kip-plugin/src/index.ts"],"names":[],"mappings":"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"}
|