@mxtommy/kip 3.10.0 → 3.10.3

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.
Files changed (486) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/README.md +39 -59
  3. package/dist/out-tsc/kip-plugin/src/index.js +223 -0
  4. package/dist/out-tsc/kip-plugin/src/index.js.map +1 -0
  5. package/dist/out-tsc/kip-plugin/src/openApi.json +367 -0
  6. package/dist/out-tsc/package.json +118 -0
  7. package/dist/out-tsc/schematics/widget/index.js +70 -0
  8. package/dist/out-tsc/schematics/widget/index.js.map +1 -0
  9. package/dist/out-tsc/src/app/app.component.js +286 -0
  10. package/dist/out-tsc/src/app/app.component.js.map +1 -0
  11. package/dist/out-tsc/src/app/app.component.spec.js +26 -0
  12. package/dist/out-tsc/src/app/app.component.spec.js.map +1 -0
  13. package/dist/out-tsc/src/app/app.routes.js +35 -0
  14. package/dist/out-tsc/src/app/app.routes.js.map +1 -0
  15. package/dist/out-tsc/src/app/core/components/app-help/app-help.component.js +60 -0
  16. package/dist/out-tsc/src/app/core/components/app-help/app-help.component.js.map +1 -0
  17. package/dist/out-tsc/src/app/core/components/app-help/app-help.component.spec.js +150 -0
  18. package/dist/out-tsc/src/app/core/components/app-help/app-help.component.spec.js.map +1 -0
  19. package/dist/out-tsc/src/app/core/components/dashboard/dashboard.component.js +361 -0
  20. package/dist/out-tsc/src/app/core/components/dashboard/dashboard.component.js.map +1 -0
  21. package/dist/out-tsc/src/app/core/components/dashboard/dashboard.component.spec.js +19 -0
  22. package/dist/out-tsc/src/app/core/components/dashboard/dashboard.component.spec.js.map +1 -0
  23. package/dist/out-tsc/src/app/core/components/dashboard-scroller/dashboard-scroller.component.js +33 -0
  24. package/dist/out-tsc/src/app/core/components/dashboard-scroller/dashboard-scroller.component.js.map +1 -0
  25. package/dist/out-tsc/src/app/core/components/dashboard-scroller/dashboard-scroller.component.spec.js +19 -0
  26. package/dist/out-tsc/src/app/core/components/dashboard-scroller/dashboard-scroller.component.spec.js.map +1 -0
  27. package/dist/out-tsc/src/app/core/components/dashboards-editor/dashboards-editor.component.js +183 -0
  28. package/dist/out-tsc/src/app/core/components/dashboards-editor/dashboards-editor.component.js.map +1 -0
  29. package/dist/out-tsc/src/app/core/components/dashboards-editor/dashboards-editor.component.spec.js +19 -0
  30. package/dist/out-tsc/src/app/core/components/dashboards-editor/dashboards-editor.component.spec.js.map +1 -0
  31. package/dist/out-tsc/src/app/core/components/dashboards-manage-bottom-sheet/dashboards-manage-bottom-sheet.component.js +28 -0
  32. package/dist/out-tsc/src/app/core/components/dashboards-manage-bottom-sheet/dashboards-manage-bottom-sheet.component.js.map +1 -0
  33. package/dist/out-tsc/src/app/core/components/dashboards-manage-bottom-sheet/dashboards-manage-bottom-sheet.component.spec.js +19 -0
  34. package/dist/out-tsc/src/app/core/components/dashboards-manage-bottom-sheet/dashboards-manage-bottom-sheet.component.spec.js.map +1 -0
  35. package/dist/out-tsc/src/app/core/components/data-inspector/data-inspector.component.js +130 -0
  36. package/dist/out-tsc/src/app/core/components/data-inspector/data-inspector.component.js.map +1 -0
  37. package/dist/out-tsc/src/app/core/components/data-inspector/data-inspector.component.spec.js +21 -0
  38. package/dist/out-tsc/src/app/core/components/data-inspector/data-inspector.component.spec.js.map +1 -0
  39. package/dist/out-tsc/src/app/core/components/data-inspector-row/data-inspector-row.component.js +82 -0
  40. package/dist/out-tsc/src/app/core/components/data-inspector-row/data-inspector-row.component.js.map +1 -0
  41. package/dist/out-tsc/src/app/core/components/datasets/datasets.component.js +168 -0
  42. package/dist/out-tsc/src/app/core/components/datasets/datasets.component.js.map +1 -0
  43. package/dist/out-tsc/src/app/core/components/datasets/datasets.component.spec.js +21 -0
  44. package/dist/out-tsc/src/app/core/components/datasets/datasets.component.spec.js.map +1 -0
  45. package/dist/out-tsc/src/app/core/components/dialog-confirmation/dialog-confirmation.component.js +24 -0
  46. package/dist/out-tsc/src/app/core/components/dialog-confirmation/dialog-confirmation.component.js.map +1 -0
  47. package/dist/out-tsc/src/app/core/components/dialog-confirmation/dialog-confirmation.component.spec.js +19 -0
  48. package/dist/out-tsc/src/app/core/components/dialog-confirmation/dialog-confirmation.component.spec.js.map +1 -0
  49. package/dist/out-tsc/src/app/core/components/dialog-dashboard-page-editor/dialog-dashboard-page-editor.component.js +45 -0
  50. package/dist/out-tsc/src/app/core/components/dialog-dashboard-page-editor/dialog-dashboard-page-editor.component.js.map +1 -0
  51. package/dist/out-tsc/src/app/core/components/dialog-dashboard-page-editor/dialog-dashboard-page-editor.component.spec.js +19 -0
  52. package/dist/out-tsc/src/app/core/components/dialog-dashboard-page-editor/dialog-dashboard-page-editor.component.spec.js.map +1 -0
  53. package/dist/out-tsc/src/app/core/components/dialog-frame/dialog-frame.component.js +25 -0
  54. package/dist/out-tsc/src/app/core/components/dialog-frame/dialog-frame.component.js.map +1 -0
  55. package/dist/out-tsc/src/app/core/components/dialog-frame/dialog-frame.component.spec.js +19 -0
  56. package/dist/out-tsc/src/app/core/components/dialog-frame/dialog-frame.component.spec.js.map +1 -0
  57. package/dist/out-tsc/src/app/core/components/dialog-name/dialog-name.component.js +31 -0
  58. package/dist/out-tsc/src/app/core/components/dialog-name/dialog-name.component.js.map +1 -0
  59. package/dist/out-tsc/src/app/core/components/dialog-name/dialog-name.component.spec.js +19 -0
  60. package/dist/out-tsc/src/app/core/components/dialog-name/dialog-name.component.spec.js.map +1 -0
  61. package/dist/out-tsc/src/app/core/components/menu-actions/menu-actions.component.js +100 -0
  62. package/dist/out-tsc/src/app/core/components/menu-actions/menu-actions.component.js.map +1 -0
  63. package/dist/out-tsc/src/app/core/components/menu-actions/menu-actions.component.spec.js +19 -0
  64. package/dist/out-tsc/src/app/core/components/menu-actions/menu-actions.component.spec.js.map +1 -0
  65. package/dist/out-tsc/src/app/core/components/menu-notifications/menu-notifications.component.js +60 -0
  66. package/dist/out-tsc/src/app/core/components/menu-notifications/menu-notifications.component.js.map +1 -0
  67. package/dist/out-tsc/src/app/core/components/menu-notifications/menu-notifications.component.spec.js +21 -0
  68. package/dist/out-tsc/src/app/core/components/menu-notifications/menu-notifications.component.spec.js.map +1 -0
  69. package/dist/out-tsc/src/app/core/components/modal-user-credential/modal-user-credential.component.js +32 -0
  70. package/dist/out-tsc/src/app/core/components/modal-user-credential/modal-user-credential.component.js.map +1 -0
  71. package/dist/out-tsc/src/app/core/components/modal-user-credential/modal-user-credential.component.spec.js +21 -0
  72. package/dist/out-tsc/src/app/core/components/modal-user-credential/modal-user-credential.component.spec.js.map +1 -0
  73. package/dist/out-tsc/src/app/core/components/notification-badge/notification-badge.component.js +51 -0
  74. package/dist/out-tsc/src/app/core/components/notification-badge/notification-badge.component.js.map +1 -0
  75. package/dist/out-tsc/src/app/core/components/notification-badge/notification-badge.component.spec.js +19 -0
  76. package/dist/out-tsc/src/app/core/components/notification-badge/notification-badge.component.spec.js.map +1 -0
  77. package/dist/out-tsc/src/app/core/components/options/configuration/config.component.js +228 -0
  78. package/dist/out-tsc/src/app/core/components/options/configuration/config.component.js.map +1 -0
  79. package/dist/out-tsc/src/app/core/components/options/configuration/config.component.spec.js +21 -0
  80. package/dist/out-tsc/src/app/core/components/options/configuration/config.component.spec.js.map +1 -0
  81. package/dist/out-tsc/src/app/core/components/options/display/display.component.js +142 -0
  82. package/dist/out-tsc/src/app/core/components/options/display/display.component.js.map +1 -0
  83. package/dist/out-tsc/src/app/core/components/options/display/display.component.spec.js +21 -0
  84. package/dist/out-tsc/src/app/core/components/options/display/display.component.spec.js.map +1 -0
  85. package/dist/out-tsc/src/app/core/components/options/notifications/notifications.component.js +66 -0
  86. package/dist/out-tsc/src/app/core/components/options/notifications/notifications.component.js.map +1 -0
  87. package/dist/out-tsc/src/app/core/components/options/notifications/notifications.component.spec.js +21 -0
  88. package/dist/out-tsc/src/app/core/components/options/notifications/notifications.component.spec.js.map +1 -0
  89. package/dist/out-tsc/src/app/core/components/options/signalk/signalk.component.js +255 -0
  90. package/dist/out-tsc/src/app/core/components/options/signalk/signalk.component.js.map +1 -0
  91. package/dist/out-tsc/src/app/core/components/options/signalk/signalk.component.spec.js +21 -0
  92. package/dist/out-tsc/src/app/core/components/options/signalk/signalk.component.spec.js.map +1 -0
  93. package/dist/out-tsc/src/app/core/components/options/tabs/tabs.component.js +44 -0
  94. package/dist/out-tsc/src/app/core/components/options/tabs/tabs.component.js.map +1 -0
  95. package/dist/out-tsc/src/app/core/components/options/tabs/tabs.component.spec.js +21 -0
  96. package/dist/out-tsc/src/app/core/components/options/tabs/tabs.component.spec.js.map +1 -0
  97. package/dist/out-tsc/src/app/core/components/options/units/units.component.js +55 -0
  98. package/dist/out-tsc/src/app/core/components/options/units/units.component.js.map +1 -0
  99. package/dist/out-tsc/src/app/core/components/options/units/units.component.spec.js +21 -0
  100. package/dist/out-tsc/src/app/core/components/options/units/units.component.spec.js.map +1 -0
  101. package/dist/out-tsc/src/app/core/components/page-header/page-header.component.js +31 -0
  102. package/dist/out-tsc/src/app/core/components/page-header/page-header.component.js.map +1 -0
  103. package/dist/out-tsc/src/app/core/components/page-header/page-header.component.spec.js +19 -0
  104. package/dist/out-tsc/src/app/core/components/page-header/page-header.component.spec.js.map +1 -0
  105. package/dist/out-tsc/src/app/core/components/remote-control/remote-control.component.js +63 -0
  106. package/dist/out-tsc/src/app/core/components/remote-control/remote-control.component.js.map +1 -0
  107. package/dist/out-tsc/src/app/core/components/remote-control/remote-control.component.spec.js +19 -0
  108. package/dist/out-tsc/src/app/core/components/remote-control/remote-control.component.spec.js.map +1 -0
  109. package/dist/out-tsc/src/app/core/components/select-icon/select-icon.component.js +75 -0
  110. package/dist/out-tsc/src/app/core/components/select-icon/select-icon.component.js.map +1 -0
  111. package/dist/out-tsc/src/app/core/components/select-icon/select-icon.component.spec.js +19 -0
  112. package/dist/out-tsc/src/app/core/components/select-icon/select-icon.component.spec.js.map +1 -0
  113. package/dist/out-tsc/src/app/core/components/settings/settings.component.js +56 -0
  114. package/dist/out-tsc/src/app/core/components/settings/settings.component.js.map +1 -0
  115. package/dist/out-tsc/src/app/core/components/settings/settings.component.spec.js +19 -0
  116. package/dist/out-tsc/src/app/core/components/settings/settings.component.spec.js.map +1 -0
  117. package/dist/out-tsc/src/app/core/components/tile-large-icon/tile-large-icon.component.js +28 -0
  118. package/dist/out-tsc/src/app/core/components/tile-large-icon/tile-large-icon.component.js.map +1 -0
  119. package/dist/out-tsc/src/app/core/components/tile-large-icon/tile-large-icon.component.spec.js +19 -0
  120. package/dist/out-tsc/src/app/core/components/tile-large-icon/tile-large-icon.component.spec.js.map +1 -0
  121. package/dist/out-tsc/src/app/core/components/upgrade-config/upgrade-config.component.js +336 -0
  122. package/dist/out-tsc/src/app/core/components/upgrade-config/upgrade-config.component.js.map +1 -0
  123. package/dist/out-tsc/src/app/core/components/upgrade-config/upgrade-config.component.spec.js +19 -0
  124. package/dist/out-tsc/src/app/core/components/upgrade-config/upgrade-config.component.spec.js.map +1 -0
  125. package/dist/out-tsc/src/app/core/components/upgrade-config/v10-config-interface.js +2 -0
  126. package/dist/out-tsc/src/app/core/components/upgrade-config/v10-config-interface.js.map +1 -0
  127. package/dist/out-tsc/src/app/core/components/widget-host/widget-host.component.js +77 -0
  128. package/dist/out-tsc/src/app/core/components/widget-host/widget-host.component.js.map +1 -0
  129. package/dist/out-tsc/src/app/core/components/widget-host/widget-host.component.spec.js +19 -0
  130. package/dist/out-tsc/src/app/core/components/widget-host/widget-host.component.spec.js.map +1 -0
  131. package/dist/out-tsc/src/app/core/components/widget-host-bottom-sheet/widget-host-bottom-sheet.component.js +29 -0
  132. package/dist/out-tsc/src/app/core/components/widget-host-bottom-sheet/widget-host-bottom-sheet.component.js.map +1 -0
  133. package/dist/out-tsc/src/app/core/components/widget-host-bottom-sheet/widget-host-bottom-sheet.component.spec.js +19 -0
  134. package/dist/out-tsc/src/app/core/components/widget-host-bottom-sheet/widget-host-bottom-sheet.component.spec.js.map +1 -0
  135. package/dist/out-tsc/src/app/core/components/widget-list-card/widget-list-card.component.js +34 -0
  136. package/dist/out-tsc/src/app/core/components/widget-list-card/widget-list-card.component.js.map +1 -0
  137. package/dist/out-tsc/src/app/core/components/widget-list-card/widget-list-card.component.spec.js +19 -0
  138. package/dist/out-tsc/src/app/core/components/widget-list-card/widget-list-card.component.spec.js.map +1 -0
  139. package/dist/out-tsc/src/app/core/components/widget-title/widget-title.component.js +70 -0
  140. package/dist/out-tsc/src/app/core/components/widget-title/widget-title.component.js.map +1 -0
  141. package/dist/out-tsc/src/app/core/components/widget-title/widget-title.component.spec.js +19 -0
  142. package/dist/out-tsc/src/app/core/components/widget-title/widget-title.component.spec.js.map +1 -0
  143. package/dist/out-tsc/src/app/core/components/widgets-list/widgets-list.component.js +61 -0
  144. package/dist/out-tsc/src/app/core/components/widgets-list/widgets-list.component.js.map +1 -0
  145. package/dist/out-tsc/src/app/core/components/widgets-list/widgets-list.component.spec.js +19 -0
  146. package/dist/out-tsc/src/app/core/components/widgets-list/widgets-list.component.spec.js.map +1 -0
  147. package/dist/out-tsc/src/app/core/directives/gesture.directive.js +457 -0
  148. package/dist/out-tsc/src/app/core/directives/gesture.directive.js.map +1 -0
  149. package/dist/out-tsc/src/app/core/interceptors/authentication-interceptor.js +43 -0
  150. package/dist/out-tsc/src/app/core/interceptors/authentication-interceptor.js.map +1 -0
  151. package/dist/out-tsc/src/app/core/interceptors/authentication-interceptor.spec.js +7 -0
  152. package/dist/out-tsc/src/app/core/interceptors/authentication-interceptor.spec.js.map +1 -0
  153. package/dist/out-tsc/src/app/core/interfaces/app-interfaces.js +8 -0
  154. package/dist/out-tsc/src/app/core/interfaces/app-interfaces.js.map +1 -0
  155. package/dist/out-tsc/src/app/core/interfaces/app-settings.interfaces.js +2 -0
  156. package/dist/out-tsc/src/app/core/interfaces/app-settings.interfaces.js.map +1 -0
  157. package/dist/out-tsc/src/app/core/interfaces/dialog-data.js +2 -0
  158. package/dist/out-tsc/src/app/core/interfaces/dialog-data.js.map +1 -0
  159. package/dist/out-tsc/src/app/core/interfaces/signalk-autopilot-interfaces.js +11 -0
  160. package/dist/out-tsc/src/app/core/interfaces/signalk-autopilot-interfaces.js.map +1 -0
  161. package/dist/out-tsc/src/app/core/interfaces/signalk-interfaces.js +45 -0
  162. package/dist/out-tsc/src/app/core/interfaces/signalk-interfaces.js.map +1 -0
  163. package/dist/out-tsc/src/app/core/interfaces/widgets-interface.js +7 -0
  164. package/dist/out-tsc/src/app/core/interfaces/widgets-interface.js.map +1 -0
  165. package/dist/out-tsc/src/app/core/pipes/filter-self.pipe.js +24 -0
  166. package/dist/out-tsc/src/app/core/pipes/filter-self.pipe.js.map +1 -0
  167. package/dist/out-tsc/src/app/core/pipes/filter-self.pipe.spec.js +8 -0
  168. package/dist/out-tsc/src/app/core/pipes/filter-self.pipe.spec.js.map +1 -0
  169. package/dist/out-tsc/src/app/core/pipes/object-keys.pipe.js +20 -0
  170. package/dist/out-tsc/src/app/core/pipes/object-keys.pipe.js.map +1 -0
  171. package/dist/out-tsc/src/app/core/pipes/object-keys.pipe.spec.js +8 -0
  172. package/dist/out-tsc/src/app/core/pipes/object-keys.pipe.spec.js.map +1 -0
  173. package/dist/out-tsc/src/app/core/pipes/safe.pipe.js +22 -0
  174. package/dist/out-tsc/src/app/core/pipes/safe.pipe.js.map +1 -0
  175. package/dist/out-tsc/src/app/core/services/app-initNetwork.service.js +199 -0
  176. package/dist/out-tsc/src/app/core/services/app-initNetwork.service.js.map +1 -0
  177. package/dist/out-tsc/src/app/core/services/app-initNetwork.service.spec.js +13 -0
  178. package/dist/out-tsc/src/app/core/services/app-initNetwork.service.spec.js.map +1 -0
  179. package/dist/out-tsc/src/app/core/services/app-service.js +249 -0
  180. package/dist/out-tsc/src/app/core/services/app-service.js.map +1 -0
  181. package/dist/out-tsc/src/app/core/services/app-service.spec.js +13 -0
  182. package/dist/out-tsc/src/app/core/services/app-service.spec.js.map +1 -0
  183. package/dist/out-tsc/src/app/core/services/app-settings.service.js +566 -0
  184. package/dist/out-tsc/src/app/core/services/app-settings.service.js.map +1 -0
  185. package/dist/out-tsc/src/app/core/services/app-settings.service.spec.js +13 -0
  186. package/dist/out-tsc/src/app/core/services/app-settings.service.spec.js.map +1 -0
  187. package/dist/out-tsc/src/app/core/services/authentication.service.js +308 -0
  188. package/dist/out-tsc/src/app/core/services/authentication.service.js.map +1 -0
  189. package/dist/out-tsc/src/app/core/services/authentication.service.spec.js +13 -0
  190. package/dist/out-tsc/src/app/core/services/authentication.service.spec.js.map +1 -0
  191. package/dist/out-tsc/src/app/core/services/canvas.service.js +566 -0
  192. package/dist/out-tsc/src/app/core/services/canvas.service.js.map +1 -0
  193. package/dist/out-tsc/src/app/core/services/canvas.service.spec.js +13 -0
  194. package/dist/out-tsc/src/app/core/services/canvas.service.spec.js.map +1 -0
  195. package/dist/out-tsc/src/app/core/services/connection-state-machine.service.js +325 -0
  196. package/dist/out-tsc/src/app/core/services/connection-state-machine.service.js.map +1 -0
  197. package/dist/out-tsc/src/app/core/services/dashboard.service.js +273 -0
  198. package/dist/out-tsc/src/app/core/services/dashboard.service.js.map +1 -0
  199. package/dist/out-tsc/src/app/core/services/dashboard.service.spec.js +13 -0
  200. package/dist/out-tsc/src/app/core/services/dashboard.service.spec.js.map +1 -0
  201. package/dist/out-tsc/src/app/core/services/data-set.service.js +515 -0
  202. package/dist/out-tsc/src/app/core/services/data-set.service.js.map +1 -0
  203. package/dist/out-tsc/src/app/core/services/data-set.service.spec.js +13 -0
  204. package/dist/out-tsc/src/app/core/services/data-set.service.spec.js.map +1 -0
  205. package/dist/out-tsc/src/app/core/services/data.service.js +425 -0
  206. package/dist/out-tsc/src/app/core/services/data.service.js.map +1 -0
  207. package/dist/out-tsc/src/app/core/services/data.service.spec.js +13 -0
  208. package/dist/out-tsc/src/app/core/services/data.service.spec.js.map +1 -0
  209. package/dist/out-tsc/src/app/core/services/dialog.service.js +73 -0
  210. package/dist/out-tsc/src/app/core/services/dialog.service.js.map +1 -0
  211. package/dist/out-tsc/src/app/core/services/dialog.service.spec.js +13 -0
  212. package/dist/out-tsc/src/app/core/services/dialog.service.spec.js.map +1 -0
  213. package/dist/out-tsc/src/app/core/services/notification-overlay.service.js +106 -0
  214. package/dist/out-tsc/src/app/core/services/notification-overlay.service.js.map +1 -0
  215. package/dist/out-tsc/src/app/core/services/notifications.service.js +322 -0
  216. package/dist/out-tsc/src/app/core/services/notifications.service.js.map +1 -0
  217. package/dist/out-tsc/src/app/core/services/notifications.service.spec.js +10 -0
  218. package/dist/out-tsc/src/app/core/services/notifications.service.spec.js.map +1 -0
  219. package/dist/out-tsc/src/app/core/services/remote-dashboards.service.js +125 -0
  220. package/dist/out-tsc/src/app/core/services/remote-dashboards.service.js.map +1 -0
  221. package/dist/out-tsc/src/app/core/services/remote-dashboards.service.spec.js +13 -0
  222. package/dist/out-tsc/src/app/core/services/remote-dashboards.service.spec.js.map +1 -0
  223. package/dist/out-tsc/src/app/core/services/signalk-connection.service.js +283 -0
  224. package/dist/out-tsc/src/app/core/services/signalk-connection.service.js.map +1 -0
  225. package/dist/out-tsc/src/app/core/services/signalk-delta.service.js +486 -0
  226. package/dist/out-tsc/src/app/core/services/signalk-delta.service.js.map +1 -0
  227. package/dist/out-tsc/src/app/core/services/signalk-delta.service.spec.js +13 -0
  228. package/dist/out-tsc/src/app/core/services/signalk-delta.service.spec.js.map +1 -0
  229. package/dist/out-tsc/src/app/core/services/signalk-plugins.service.js +121 -0
  230. package/dist/out-tsc/src/app/core/services/signalk-plugins.service.js.map +1 -0
  231. package/dist/out-tsc/src/app/core/services/signalk-plugins.service.spec.js +13 -0
  232. package/dist/out-tsc/src/app/core/services/signalk-plugins.service.spec.js.map +1 -0
  233. package/dist/out-tsc/src/app/core/services/signalk-requests.service.js +232 -0
  234. package/dist/out-tsc/src/app/core/services/signalk-requests.service.js.map +1 -0
  235. package/dist/out-tsc/src/app/core/services/signalk-requests.service.spec.js +10 -0
  236. package/dist/out-tsc/src/app/core/services/signalk-requests.service.spec.js.map +1 -0
  237. package/dist/out-tsc/src/app/core/services/storage.service.js +390 -0
  238. package/dist/out-tsc/src/app/core/services/storage.service.js.map +1 -0
  239. package/dist/out-tsc/src/app/core/services/storage.service.spec.js +13 -0
  240. package/dist/out-tsc/src/app/core/services/storage.service.spec.js.map +1 -0
  241. package/dist/out-tsc/src/app/core/services/timers.service.js +107 -0
  242. package/dist/out-tsc/src/app/core/services/timers.service.js.map +1 -0
  243. package/dist/out-tsc/src/app/core/services/timers.service.spec.js +13 -0
  244. package/dist/out-tsc/src/app/core/services/timers.service.spec.js.map +1 -0
  245. package/dist/out-tsc/src/app/core/services/uiEvent.service.js +256 -0
  246. package/dist/out-tsc/src/app/core/services/uiEvent.service.js.map +1 -0
  247. package/dist/out-tsc/src/app/core/services/uiEvent.service.spec.js +13 -0
  248. package/dist/out-tsc/src/app/core/services/uiEvent.service.spec.js.map +1 -0
  249. package/dist/out-tsc/src/app/core/services/units.service.js +630 -0
  250. package/dist/out-tsc/src/app/core/services/units.service.js.map +1 -0
  251. package/dist/out-tsc/src/app/core/services/widget.service.js +405 -0
  252. package/dist/out-tsc/src/app/core/services/widget.service.js.map +1 -0
  253. package/dist/out-tsc/src/app/core/services/widget.service.spec.js +13 -0
  254. package/dist/out-tsc/src/app/core/services/widget.service.spec.js.map +1 -0
  255. package/dist/out-tsc/src/app/core/utils/app-overlay-container.js +30 -0
  256. package/dist/out-tsc/src/app/core/utils/app-overlay-container.js.map +1 -0
  257. package/dist/out-tsc/src/app/core/utils/base-widget.component.js +291 -0
  258. package/dist/out-tsc/src/app/core/utils/base-widget.component.js.map +1 -0
  259. package/dist/out-tsc/src/app/core/utils/base-widget.component.spec.js +88 -0
  260. package/dist/out-tsc/src/app/core/utils/base-widget.component.spec.js.map +1 -0
  261. package/dist/out-tsc/src/app/core/utils/dataScales.util.js +127 -0
  262. package/dist/out-tsc/src/app/core/utils/dataScales.util.js.map +1 -0
  263. package/dist/out-tsc/src/app/core/utils/dataTransforms.util.js +138 -0
  264. package/dist/out-tsc/src/app/core/utils/dataTransforms.util.js.map +1 -0
  265. package/dist/out-tsc/src/app/core/utils/iframe-inputs-inject.utils.js +55 -0
  266. package/dist/out-tsc/src/app/core/utils/iframe-inputs-inject.utils.js.map +1 -0
  267. package/dist/out-tsc/src/app/core/utils/svg-animate.util.js +303 -0
  268. package/dist/out-tsc/src/app/core/utils/svg-animate.util.js.map +1 -0
  269. package/dist/out-tsc/src/app/core/utils/themeColors.utils.js +34 -0
  270. package/dist/out-tsc/src/app/core/utils/themeColors.utils.js.map +1 -0
  271. package/dist/out-tsc/src/app/core/utils/uuid.util.js +17 -0
  272. package/dist/out-tsc/src/app/core/utils/uuid.util.js.map +1 -0
  273. package/dist/out-tsc/src/app/core/utils/zones-highlight.utils.js +87 -0
  274. package/dist/out-tsc/src/app/core/utils/zones-highlight.utils.js.map +1 -0
  275. package/dist/out-tsc/src/app/widget-config/boolean-control-config/boolean-control-config.component.js +49 -0
  276. package/dist/out-tsc/src/app/widget-config/boolean-control-config/boolean-control-config.component.js.map +1 -0
  277. package/dist/out-tsc/src/app/widget-config/boolean-control-config/boolean-control-config.component.spec.js +19 -0
  278. package/dist/out-tsc/src/app/widget-config/boolean-control-config/boolean-control-config.component.spec.js.map +1 -0
  279. package/dist/out-tsc/src/app/widget-config/boolean-multicontrol-options/boolean-multicontrol-options.component.js +100 -0
  280. package/dist/out-tsc/src/app/widget-config/boolean-multicontrol-options/boolean-multicontrol-options.component.js.map +1 -0
  281. package/dist/out-tsc/src/app/widget-config/boolean-multicontrol-options/boolean-multicontrol-options.component.spec.js +19 -0
  282. package/dist/out-tsc/src/app/widget-config/boolean-multicontrol-options/boolean-multicontrol-options.component.spec.js.map +1 -0
  283. package/dist/out-tsc/src/app/widget-config/dataset-chart-options/dataset-chart-options.component.js +54 -0
  284. package/dist/out-tsc/src/app/widget-config/dataset-chart-options/dataset-chart-options.component.js.map +1 -0
  285. package/dist/out-tsc/src/app/widget-config/dataset-chart-options/dataset-chart-options.component.spec.js +19 -0
  286. package/dist/out-tsc/src/app/widget-config/dataset-chart-options/dataset-chart-options.component.spec.js.map +1 -0
  287. package/dist/out-tsc/src/app/widget-config/display-chart-options/display-chart-options.component.js +89 -0
  288. package/dist/out-tsc/src/app/widget-config/display-chart-options/display-chart-options.component.js.map +1 -0
  289. package/dist/out-tsc/src/app/widget-config/display-chart-options/display-chart-options.component.spec.js +19 -0
  290. package/dist/out-tsc/src/app/widget-config/display-chart-options/display-chart-options.component.spec.js.map +1 -0
  291. package/dist/out-tsc/src/app/widget-config/display-datetime/display-datetime.component.js +1760 -0
  292. package/dist/out-tsc/src/app/widget-config/display-datetime/display-datetime.component.js.map +1 -0
  293. package/dist/out-tsc/src/app/widget-config/display-datetime/display-datetime.component.spec.js +19 -0
  294. package/dist/out-tsc/src/app/widget-config/display-datetime/display-datetime.component.spec.js.map +1 -0
  295. package/dist/out-tsc/src/app/widget-config/modal-widget-config/modal-widget-config.component.js +327 -0
  296. package/dist/out-tsc/src/app/widget-config/modal-widget-config/modal-widget-config.component.js.map +1 -0
  297. package/dist/out-tsc/src/app/widget-config/modal-widget-config/modal-widget-config.component.spec.js +21 -0
  298. package/dist/out-tsc/src/app/widget-config/modal-widget-config/modal-widget-config.component.spec.js.map +1 -0
  299. package/dist/out-tsc/src/app/widget-config/path-control-config/path-control-config.component.js +268 -0
  300. package/dist/out-tsc/src/app/widget-config/path-control-config/path-control-config.component.js.map +1 -0
  301. package/dist/out-tsc/src/app/widget-config/path-control-config/path-control-config.component.spec.js +21 -0
  302. package/dist/out-tsc/src/app/widget-config/path-control-config/path-control-config.component.spec.js.map +1 -0
  303. package/dist/out-tsc/src/app/widget-config/paths-options/paths-options.component.js +81 -0
  304. package/dist/out-tsc/src/app/widget-config/paths-options/paths-options.component.js.map +1 -0
  305. package/dist/out-tsc/src/app/widget-config/paths-options/paths-options.component.spec.js +19 -0
  306. package/dist/out-tsc/src/app/widget-config/paths-options/paths-options.component.spec.js.map +1 -0
  307. package/dist/out-tsc/src/app/widget-config/select-autopilot/select-autopilot.component.js +266 -0
  308. package/dist/out-tsc/src/app/widget-config/select-autopilot/select-autopilot.component.js.map +1 -0
  309. package/dist/out-tsc/src/app/widget-config/select-autopilot/select-autopilot.component.spec.js +19 -0
  310. package/dist/out-tsc/src/app/widget-config/select-autopilot/select-autopilot.component.spec.js.map +1 -0
  311. package/dist/out-tsc/src/app/widgets/gauge-steel/gauge-steel.component.js +309 -0
  312. package/dist/out-tsc/src/app/widgets/gauge-steel/gauge-steel.component.js.map +1 -0
  313. package/dist/out-tsc/src/app/widgets/gauge-steel/gauge-steel.component.spec.js +21 -0
  314. package/dist/out-tsc/src/app/widgets/gauge-steel/gauge-steel.component.spec.js.map +1 -0
  315. package/dist/out-tsc/src/app/widgets/minichart/minichart.component.js +512 -0
  316. package/dist/out-tsc/src/app/widgets/minichart/minichart.component.js.map +1 -0
  317. package/dist/out-tsc/src/app/widgets/minichart/minichart.component.spec.js +19 -0
  318. package/dist/out-tsc/src/app/widgets/minichart/minichart.component.spec.js.map +1 -0
  319. package/dist/out-tsc/src/app/widgets/svg-autopilot/svg-autopilot.component.js +227 -0
  320. package/dist/out-tsc/src/app/widgets/svg-autopilot/svg-autopilot.component.js.map +1 -0
  321. package/dist/out-tsc/src/app/widgets/svg-autopilot/svg-autopilot.component.spec.js +21 -0
  322. package/dist/out-tsc/src/app/widgets/svg-autopilot/svg-autopilot.component.spec.js.map +1 -0
  323. package/dist/out-tsc/src/app/widgets/svg-boolean-button/svg-boolean-button.component.js +163 -0
  324. package/dist/out-tsc/src/app/widgets/svg-boolean-button/svg-boolean-button.component.js.map +1 -0
  325. package/dist/out-tsc/src/app/widgets/svg-boolean-button/svg-boolean-button.component.spec.js +19 -0
  326. package/dist/out-tsc/src/app/widgets/svg-boolean-button/svg-boolean-button.component.spec.js.map +1 -0
  327. package/dist/out-tsc/src/app/widgets/svg-boolean-light/svg-boolean-light.component.js +97 -0
  328. package/dist/out-tsc/src/app/widgets/svg-boolean-light/svg-boolean-light.component.js.map +1 -0
  329. package/dist/out-tsc/src/app/widgets/svg-boolean-light/svg-boolean-light.component.spec.js +19 -0
  330. package/dist/out-tsc/src/app/widgets/svg-boolean-light/svg-boolean-light.component.spec.js.map +1 -0
  331. package/dist/out-tsc/src/app/widgets/svg-boolean-switch/svg-boolean-switch.component.js +122 -0
  332. package/dist/out-tsc/src/app/widgets/svg-boolean-switch/svg-boolean-switch.component.js.map +1 -0
  333. package/dist/out-tsc/src/app/widgets/svg-boolean-switch/svg-boolean-switch.component.spec.js +19 -0
  334. package/dist/out-tsc/src/app/widgets/svg-boolean-switch/svg-boolean-switch.component.spec.js.map +1 -0
  335. package/dist/out-tsc/src/app/widgets/svg-racesteer/svg-racesteer.component.js +389 -0
  336. package/dist/out-tsc/src/app/widgets/svg-racesteer/svg-racesteer.component.js.map +1 -0
  337. package/dist/out-tsc/src/app/widgets/svg-racesteer/svg-racesteer.component.spec.js +21 -0
  338. package/dist/out-tsc/src/app/widgets/svg-racesteer/svg-racesteer.component.spec.js.map +1 -0
  339. package/dist/out-tsc/src/app/widgets/svg-simple-linear-gauge/svg-simple-linear-gauge.component.js +76 -0
  340. package/dist/out-tsc/src/app/widgets/svg-simple-linear-gauge/svg-simple-linear-gauge.component.js.map +1 -0
  341. package/dist/out-tsc/src/app/widgets/svg-simple-linear-gauge/svg-simple-linear-gauge.component.spec.js +21 -0
  342. package/dist/out-tsc/src/app/widgets/svg-simple-linear-gauge/svg-simple-linear-gauge.component.spec.js.map +1 -0
  343. package/dist/out-tsc/src/app/widgets/svg-windsteer/svg-windsteer.component.js +429 -0
  344. package/dist/out-tsc/src/app/widgets/svg-windsteer/svg-windsteer.component.js.map +1 -0
  345. package/dist/out-tsc/src/app/widgets/svg-windsteer/svg-windsteer.component.spec.js +21 -0
  346. package/dist/out-tsc/src/app/widgets/svg-windsteer/svg-windsteer.component.spec.js.map +1 -0
  347. package/dist/out-tsc/src/app/widgets/widget-autopilot/widget-autopilot.component.js +1128 -0
  348. package/dist/out-tsc/src/app/widgets/widget-autopilot/widget-autopilot.component.js.map +1 -0
  349. package/dist/out-tsc/src/app/widgets/widget-autopilot/widget-autopilot.component.spec.js +21 -0
  350. package/dist/out-tsc/src/app/widgets/widget-autopilot/widget-autopilot.component.spec.js.map +1 -0
  351. package/dist/out-tsc/src/app/widgets/widget-boolean-switch/widget-boolean-switch.component.js +140 -0
  352. package/dist/out-tsc/src/app/widgets/widget-boolean-switch/widget-boolean-switch.component.js.map +1 -0
  353. package/dist/out-tsc/src/app/widgets/widget-boolean-switch/widget-boolean-switch.component.spec.js +19 -0
  354. package/dist/out-tsc/src/app/widgets/widget-boolean-switch/widget-boolean-switch.component.spec.js.map +1 -0
  355. package/dist/out-tsc/src/app/widgets/widget-data-chart/widget-data-chart.component.js +678 -0
  356. package/dist/out-tsc/src/app/widgets/widget-data-chart/widget-data-chart.component.js.map +1 -0
  357. package/dist/out-tsc/src/app/widgets/widget-data-chart/widget-data-chart.component.spec.js +19 -0
  358. package/dist/out-tsc/src/app/widgets/widget-data-chart/widget-data-chart.component.spec.js.map +1 -0
  359. package/dist/out-tsc/src/app/widgets/widget-datetime/widget-datetime.component.js +177 -0
  360. package/dist/out-tsc/src/app/widgets/widget-datetime/widget-datetime.component.js.map +1 -0
  361. package/dist/out-tsc/src/app/widgets/widget-datetime/widget-datetime.component.spec.js +21 -0
  362. package/dist/out-tsc/src/app/widgets/widget-datetime/widget-datetime.component.spec.js.map +1 -0
  363. package/dist/out-tsc/src/app/widgets/widget-freeboardsk/widget-freeboardsk.component.js +146 -0
  364. package/dist/out-tsc/src/app/widgets/widget-freeboardsk/widget-freeboardsk.component.js.map +1 -0
  365. package/dist/out-tsc/src/app/widgets/widget-freeboardsk/widget-freeboardsk.component.spec.js +19 -0
  366. package/dist/out-tsc/src/app/widgets/widget-freeboardsk/widget-freeboardsk.component.spec.js.map +1 -0
  367. package/dist/out-tsc/src/app/widgets/widget-gauge-ng-compass/widget-gauge-ng-compass.component.js +301 -0
  368. package/dist/out-tsc/src/app/widgets/widget-gauge-ng-compass/widget-gauge-ng-compass.component.js.map +1 -0
  369. package/dist/out-tsc/src/app/widgets/widget-gauge-ng-compass/widget-gauge-ng-compass.component.spec.js +19 -0
  370. package/dist/out-tsc/src/app/widgets/widget-gauge-ng-compass/widget-gauge-ng-compass.component.spec.js.map +1 -0
  371. package/dist/out-tsc/src/app/widgets/widget-gauge-ng-linear/widget-gauge-ng-linear.component.js +413 -0
  372. package/dist/out-tsc/src/app/widgets/widget-gauge-ng-linear/widget-gauge-ng-linear.component.js.map +1 -0
  373. package/dist/out-tsc/src/app/widgets/widget-gauge-ng-linear/widget-gauge-ng-linear.component.spec.js +21 -0
  374. package/dist/out-tsc/src/app/widgets/widget-gauge-ng-linear/widget-gauge-ng-linear.component.spec.js.map +1 -0
  375. package/dist/out-tsc/src/app/widgets/widget-gauge-ng-radial/widget-gauge-ng-radial.component.js +360 -0
  376. package/dist/out-tsc/src/app/widgets/widget-gauge-ng-radial/widget-gauge-ng-radial.component.js.map +1 -0
  377. package/dist/out-tsc/src/app/widgets/widget-gauge-ng-radial/widget-gauge-ng-radial.component.spec.js +21 -0
  378. package/dist/out-tsc/src/app/widgets/widget-gauge-ng-radial/widget-gauge-ng-radial.component.spec.js.map +1 -0
  379. package/dist/out-tsc/src/app/widgets/widget-gauge-steel/widget-gauge-steel.component.js +119 -0
  380. package/dist/out-tsc/src/app/widgets/widget-gauge-steel/widget-gauge-steel.component.js.map +1 -0
  381. package/dist/out-tsc/src/app/widgets/widget-gauge-steel/widget-gauge-steel.component.spec.js +21 -0
  382. package/dist/out-tsc/src/app/widgets/widget-gauge-steel/widget-gauge-steel.component.spec.js.map +1 -0
  383. package/dist/out-tsc/src/app/widgets/widget-heel-gauge/widget-heel-gauge.component.js +205 -0
  384. package/dist/out-tsc/src/app/widgets/widget-heel-gauge/widget-heel-gauge.component.js.map +1 -0
  385. package/dist/out-tsc/src/app/widgets/widget-heel-gauge/widget-heel-gauge.component.spec.js +15 -0
  386. package/dist/out-tsc/src/app/widgets/widget-heel-gauge/widget-heel-gauge.component.spec.js.map +1 -0
  387. package/dist/out-tsc/src/app/widgets/widget-horizon/widget-horizon.component.js +196 -0
  388. package/dist/out-tsc/src/app/widgets/widget-horizon/widget-horizon.component.js.map +1 -0
  389. package/dist/out-tsc/src/app/widgets/widget-horizon/widget-horizon.component.spec.js +21 -0
  390. package/dist/out-tsc/src/app/widgets/widget-horizon/widget-horizon.component.spec.js.map +1 -0
  391. package/dist/out-tsc/src/app/widgets/widget-iframe/widget-iframe.component.js +173 -0
  392. package/dist/out-tsc/src/app/widgets/widget-iframe/widget-iframe.component.js.map +1 -0
  393. package/dist/out-tsc/src/app/widgets/widget-iframe/widget-iframe.component.spec.js +21 -0
  394. package/dist/out-tsc/src/app/widgets/widget-iframe/widget-iframe.component.spec.js.map +1 -0
  395. package/dist/out-tsc/src/app/widgets/widget-label/widget-label.component.js +128 -0
  396. package/dist/out-tsc/src/app/widgets/widget-label/widget-label.component.js.map +1 -0
  397. package/dist/out-tsc/src/app/widgets/widget-label/widget-label.component.spec.js +19 -0
  398. package/dist/out-tsc/src/app/widgets/widget-label/widget-label.component.spec.js.map +1 -0
  399. package/dist/out-tsc/src/app/widgets/widget-login/login.component.spec.js +21 -0
  400. package/dist/out-tsc/src/app/widgets/widget-login/login.component.spec.js.map +1 -0
  401. package/dist/out-tsc/src/app/widgets/widget-login/widget-login.component.js +78 -0
  402. package/dist/out-tsc/src/app/widgets/widget-login/widget-login.component.js.map +1 -0
  403. package/dist/out-tsc/src/app/widgets/widget-numeric/widget-numeric.component.js +303 -0
  404. package/dist/out-tsc/src/app/widgets/widget-numeric/widget-numeric.component.js.map +1 -0
  405. package/dist/out-tsc/src/app/widgets/widget-numeric/widget-numeric.spec.js +21 -0
  406. package/dist/out-tsc/src/app/widgets/widget-numeric/widget-numeric.spec.js.map +1 -0
  407. package/dist/out-tsc/src/app/widgets/widget-position/widget-position.component.js +177 -0
  408. package/dist/out-tsc/src/app/widgets/widget-position/widget-position.component.js.map +1 -0
  409. package/dist/out-tsc/src/app/widgets/widget-position/widget-position.component.spec.js +21 -0
  410. package/dist/out-tsc/src/app/widgets/widget-position/widget-position.component.spec.js.map +1 -0
  411. package/dist/out-tsc/src/app/widgets/widget-race-timer/widget-race-timer.component.js +275 -0
  412. package/dist/out-tsc/src/app/widgets/widget-race-timer/widget-race-timer.component.js.map +1 -0
  413. package/dist/out-tsc/src/app/widgets/widget-race-timer/widget-race-timer.component.spec.js +21 -0
  414. package/dist/out-tsc/src/app/widgets/widget-race-timer/widget-race-timer.component.spec.js.map +1 -0
  415. package/dist/out-tsc/src/app/widgets/widget-racer-line/widget-racer-line.component.js +319 -0
  416. package/dist/out-tsc/src/app/widgets/widget-racer-line/widget-racer-line.component.js.map +1 -0
  417. package/dist/out-tsc/src/app/widgets/widget-racer-line/widget-racer-line.component.spec.js +21 -0
  418. package/dist/out-tsc/src/app/widgets/widget-racer-line/widget-racer-line.component.spec.js.map +1 -0
  419. package/dist/out-tsc/src/app/widgets/widget-racer-timer/widget-racer-timer.component.js +365 -0
  420. package/dist/out-tsc/src/app/widgets/widget-racer-timer/widget-racer-timer.component.js.map +1 -0
  421. package/dist/out-tsc/src/app/widgets/widget-racer-timer/widget-racer-timer.component.spec.js +21 -0
  422. package/dist/out-tsc/src/app/widgets/widget-racer-timer/widget-racer-timer.component.spec.js.map +1 -0
  423. package/dist/out-tsc/src/app/widgets/widget-racesteer/widget-racesteer.component.js +321 -0
  424. package/dist/out-tsc/src/app/widgets/widget-racesteer/widget-racesteer.component.js.map +1 -0
  425. package/dist/out-tsc/src/app/widgets/widget-racesteer/widget-racesteer.component.spec.js +21 -0
  426. package/dist/out-tsc/src/app/widgets/widget-racesteer/widget-racesteer.component.spec.js.map +1 -0
  427. package/dist/out-tsc/src/app/widgets/widget-simple-linear/widget-simple-linear.component.js +189 -0
  428. package/dist/out-tsc/src/app/widgets/widget-simple-linear/widget-simple-linear.component.js.map +1 -0
  429. package/dist/out-tsc/src/app/widgets/widget-simple-linear/widget-simple-linear.component.spec.js +21 -0
  430. package/dist/out-tsc/src/app/widgets/widget-simple-linear/widget-simple-linear.component.spec.js.map +1 -0
  431. package/dist/out-tsc/src/app/widgets/widget-slider/widget-slider.component.js +248 -0
  432. package/dist/out-tsc/src/app/widgets/widget-slider/widget-slider.component.js.map +1 -0
  433. package/dist/out-tsc/src/app/widgets/widget-slider/widget-slider.component.spec.js +19 -0
  434. package/dist/out-tsc/src/app/widgets/widget-slider/widget-slider.component.spec.js.map +1 -0
  435. package/dist/out-tsc/src/app/widgets/widget-text/widget-text.component.js +138 -0
  436. package/dist/out-tsc/src/app/widgets/widget-text/widget-text.component.js.map +1 -0
  437. package/dist/out-tsc/src/app/widgets/widget-text/widget-text.component.spec.js +21 -0
  438. package/dist/out-tsc/src/app/widgets/widget-text/widget-text.component.spec.js.map +1 -0
  439. package/dist/out-tsc/src/app/widgets/widget-tutorial/widget-tutorial.component.js +43 -0
  440. package/dist/out-tsc/src/app/widgets/widget-tutorial/widget-tutorial.component.js.map +1 -0
  441. package/dist/out-tsc/src/app/widgets/widget-tutorial/widget-tutorial.component.spec.js +21 -0
  442. package/dist/out-tsc/src/app/widgets/widget-tutorial/widget-tutorial.component.spec.js.map +1 -0
  443. package/dist/out-tsc/src/app/widgets/widget-windsteer/widget-windsteer.component.js +483 -0
  444. package/dist/out-tsc/src/app/widgets/widget-windsteer/widget-windsteer.component.js.map +1 -0
  445. package/dist/out-tsc/src/app/widgets/widget-windsteer/widget-windsteer.component.spec.js +21 -0
  446. package/dist/out-tsc/src/app/widgets/widget-windsteer/widget-windsteer.component.spec.js.map +1 -0
  447. package/dist/out-tsc/src/app/widgets/widget-windtrends-chart/widget-windtrends-chart.component.js +1067 -0
  448. package/dist/out-tsc/src/app/widgets/widget-windtrends-chart/widget-windtrends-chart.component.js.map +1 -0
  449. package/dist/out-tsc/src/app/widgets/widget-windtrends-chart/widget-windtrends-chart.component.spec.js +19 -0
  450. package/dist/out-tsc/src/app/widgets/widget-windtrends-chart/widget-windtrends-chart.component.spec.js.map +1 -0
  451. package/dist/out-tsc/src/default-config/config.blank.const.js +35 -0
  452. package/dist/out-tsc/src/default-config/config.blank.const.js.map +1 -0
  453. package/dist/out-tsc/src/default-config/config.blank.notification.const.js +22 -0
  454. package/dist/out-tsc/src/default-config/config.blank.notification.const.js.map +1 -0
  455. package/dist/out-tsc/src/default-config/config.blank.units.const.js +24 -0
  456. package/dist/out-tsc/src/default-config/config.blank.units.const.js.map +1 -0
  457. package/dist/out-tsc/src/default-config/config.demo.const.js +739 -0
  458. package/dist/out-tsc/src/default-config/config.demo.const.js.map +1 -0
  459. package/dist/out-tsc/src/environments/environment.js +8 -0
  460. package/dist/out-tsc/src/environments/environment.js.map +1 -0
  461. package/dist/out-tsc/src/environments/environment.prod.js +4 -0
  462. package/dist/out-tsc/src/environments/environment.prod.js.map +1 -0
  463. package/dist/out-tsc/src/main.js +111 -0
  464. package/dist/out-tsc/src/main.js.map +1 -0
  465. package/dist/out-tsc/src/polyfills.js +67 -0
  466. package/dist/out-tsc/src/polyfills.js.map +1 -0
  467. package/dist/out-tsc/src/test-setup.js +1 -0
  468. package/dist/out-tsc/src/test-setup.js.map +1 -0
  469. package/dist/out-tsc/src/test-shims/steelseries-shim.js +44 -0
  470. package/dist/out-tsc/src/test-shims/steelseries-shim.js.map +1 -0
  471. package/dist/out-tsc/src/test.js +84 -0
  472. package/dist/out-tsc/src/test.js.map +1 -0
  473. package/images/ActionSidenav.png +0 -0
  474. package/images/KipBrightness-1024.png +0 -0
  475. package/images/KipNightMode-1024.png +0 -0
  476. package/images/Options.png +0 -0
  477. package/images/exterior_user_installs.png +0 -0
  478. package/package.json +1 -1
  479. package/plugin/index.js +2 -1
  480. package/public/{chunk-YPVFGYWU.js → chunk-4APSKT6I.js} +1 -1
  481. package/public/{chunk-CCEKSCJH.js → chunk-HHR4WMHS.js} +1 -1
  482. package/public/{chunk-TTNX7JB6.js → chunk-JDDRJMPN.js} +1 -1
  483. package/public/{chunk-TSNRNW3D.js → chunk-MRF22PVK.js} +1 -1
  484. package/public/{chunk-G5U7W6LL.js → chunk-RNSD64U3.js} +1 -1
  485. package/public/index.html +1 -1
  486. package/public/{main-JN6ENHFX.js → main-5QLZ4ZUU.js} +2 -2
@@ -0,0 +1,325 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Injectable } from '@angular/core';
11
+ import { BehaviorSubject } from 'rxjs';
12
+ /**
13
+ * Connection state enumeration
14
+ */
15
+ export var ConnectionState;
16
+ (function (ConnectionState) {
17
+ ConnectionState["Disconnected"] = "Disconnected";
18
+ ConnectionState["HTTPDiscovering"] = "HTTPDiscovering";
19
+ ConnectionState["HTTPConnected"] = "HTTPConnected";
20
+ ConnectionState["HTTPError"] = "HTTPError";
21
+ ConnectionState["HTTPRetrying"] = "HTTPRetrying";
22
+ ConnectionState["WebSocketConnecting"] = "WebSocketConnecting";
23
+ ConnectionState["Connected"] = "Connected";
24
+ ConnectionState["WebSocketError"] = "WebSocketError";
25
+ ConnectionState["WebSocketRetrying"] = "WebSocketRetrying";
26
+ ConnectionState["PermanentFailure"] = "PermanentFailure";
27
+ })(ConnectionState || (ConnectionState = {}));
28
+ let ConnectionStateMachine = class ConnectionStateMachine {
29
+ config = {
30
+ httpRetryCount: 3,
31
+ webSocketRetryCount: 5,
32
+ retryIntervals: [2000, 3000, 5000], // Exponential backoff: 2s, 3s, 5s
33
+ notificationDebounceMs: 0
34
+ };
35
+ // State management
36
+ _currentState$ = new BehaviorSubject(ConnectionState.Disconnected);
37
+ _status$ = new BehaviorSubject(this.createStatus(ConnectionState.Disconnected, 'Not connected'));
38
+ // Retry tracking
39
+ _httpRetryCount = 0;
40
+ _webSocketRetryCount = 0;
41
+ _retryTimeout = null;
42
+ _notificationTimeout = null;
43
+ // Retry callback for HTTP requests
44
+ _httpRetryCallback = null;
45
+ // Retry callback for WebSocket requests
46
+ _webSocketRetryCallback = null;
47
+ // Mode tracking for APP_INITIALIZER compatibility
48
+ _isInitializationMode = true;
49
+ constructor() {
50
+ console.log('[ConnectionStateMachine] Service initialized');
51
+ }
52
+ /**
53
+ * Get current connection state as observable
54
+ */
55
+ get state$() {
56
+ return this._currentState$.asObservable();
57
+ }
58
+ /**
59
+ * Get current connection status as observable (for notifications)
60
+ */
61
+ get status$() {
62
+ return this._status$.asObservable();
63
+ }
64
+ /**
65
+ * Get current state value
66
+ */
67
+ get currentState() {
68
+ return this._currentState$.getValue();
69
+ }
70
+ /**
71
+ * Enable full functionality after APP_INITIALIZER completes
72
+ */
73
+ enableWebSocketMode() {
74
+ this._isInitializationMode = false;
75
+ console.log('[ConnectionStateMachine] WebSocket mode enabled');
76
+ // Ensure current status is emitted for components that start after initialization
77
+ const currentStatus = this._status$.getValue();
78
+ console.log(`[ConnectionStateMachine] Current status when enabling WebSocket mode: ${currentStatus.state} - ${currentStatus.message}`);
79
+ this._status$.next(currentStatus);
80
+ }
81
+ /**
82
+ * Set the HTTP retry callback function
83
+ */
84
+ setHTTPRetryCallback(callback) {
85
+ this._httpRetryCallback = callback;
86
+ }
87
+ /**
88
+ * Set the WebSocket retry callback function
89
+ */
90
+ setWebSocketRetryCallback(callback) {
91
+ this._webSocketRetryCallback = callback;
92
+ }
93
+ /**
94
+ * Start HTTP discovery process
95
+ */
96
+ startHTTPDiscovery(reason = 'Connection request') {
97
+ console.log(`[ConnectionStateMachine] Starting HTTP discovery: ${reason}`);
98
+ this._httpRetryCount = 0;
99
+ this.setState(ConnectionState.HTTPDiscovering, 'Discovering Signal K server...');
100
+ }
101
+ /**
102
+ * HTTP discovery succeeded
103
+ */
104
+ onHTTPDiscoverySuccess() {
105
+ console.log('[ConnectionStateMachine] HTTP discovery successful');
106
+ this._httpRetryCount = 0;
107
+ this.setState(ConnectionState.HTTPConnected, 'Signal K server discovered');
108
+ // Only proceed to WebSocket if not in initialization mode
109
+ if (!this._isInitializationMode) {
110
+ this.startWebSocketConnection();
111
+ }
112
+ }
113
+ /**
114
+ * HTTP discovery failed
115
+ */
116
+ onHTTPDiscoveryError(error) {
117
+ console.log(`[ConnectionStateMachine] HTTP discovery failed: ${error}`);
118
+ if (this._httpRetryCount < this.config.httpRetryCount) {
119
+ this._httpRetryCount++;
120
+ this.setState(ConnectionState.HTTPRetrying, `HTTP connection failed. Retrying (${this._httpRetryCount}/${this.config.httpRetryCount})...`, this._httpRetryCount, this.config.httpRetryCount);
121
+ this.scheduleHTTPRetry();
122
+ }
123
+ else {
124
+ this.setState(ConnectionState.PermanentFailure, `HTTP connection failed after ${this.config.httpRetryCount} attempts. Check server URL.`, this.config.httpRetryCount, this.config.httpRetryCount);
125
+ }
126
+ }
127
+ /**
128
+ * Start WebSocket connection (only called after HTTP success and not in init mode)
129
+ */
130
+ startWebSocketConnection() {
131
+ // Allow WebSocket start if HTTP is connected or we're already in WebSocket retry mode
132
+ const canStartWebSocket = this.currentState === ConnectionState.HTTPConnected ||
133
+ this.currentState === ConnectionState.WebSocketRetrying ||
134
+ this.currentState === ConnectionState.WebSocketConnecting ||
135
+ this.currentState === ConnectionState.Connected;
136
+ if (!canStartWebSocket) {
137
+ // If we're still discovering HTTP, this is expected
138
+ if (this.currentState === ConnectionState.HTTPDiscovering) {
139
+ return;
140
+ }
141
+ // For other states, this might be unexpected
142
+ return;
143
+ }
144
+ console.log('[ConnectionStateMachine] Starting WebSocket connection');
145
+ this._webSocketRetryCount = 0;
146
+ this.setState(ConnectionState.WebSocketConnecting, 'Connecting to Signal K Websocket...');
147
+ }
148
+ /**
149
+ * WebSocket connection succeeded
150
+ */
151
+ onWebSocketConnected() {
152
+ console.log('[ConnectionStateMachine] WebSocket connected');
153
+ this._webSocketRetryCount = 0;
154
+ this.setState(ConnectionState.Connected, 'Connected to Signal K server');
155
+ }
156
+ /**
157
+ * WebSocket connection failed
158
+ */
159
+ onWebSocketError(error) {
160
+ console.log(`[ConnectionStateMachine] WebSocket error: ${error}`);
161
+ // Check if HTTP is still connected
162
+ if (this.currentState !== ConnectionState.HTTPConnected &&
163
+ this.currentState !== ConnectionState.WebSocketConnecting &&
164
+ this.currentState !== ConnectionState.Connected &&
165
+ this.currentState !== ConnectionState.WebSocketRetrying) {
166
+ console.log('[ConnectionStateMachine] HTTP connection lost, restarting HTTP discovery');
167
+ this.startHTTPDiscovery('HTTP connection lost during WebSocket operation');
168
+ return;
169
+ }
170
+ this._webSocketRetryCount++;
171
+ this.setState(ConnectionState.WebSocketRetrying, `WebSocket connection failed. Retry attempt ${this._webSocketRetryCount}...`, this._webSocketRetryCount, this.config.webSocketRetryCount);
172
+ this.scheduleWebSocketRetry();
173
+ }
174
+ /**
175
+ * Gracefully shutdown all connections before app restart
176
+ */
177
+ shutdown(reason = 'App shutdown') {
178
+ console.log(`[ConnectionStateMachine] Shutting down all connections: ${reason}`);
179
+ this.clearRetryTimer();
180
+ this.clearNotificationTimeout();
181
+ this._httpRetryCount = 0;
182
+ this._webSocketRetryCount = 0;
183
+ // Set to disconnected state to trigger cleanup in dependent services
184
+ this.setState(ConnectionState.Disconnected, 'Application restarting...');
185
+ }
186
+ /**
187
+ * Check if HTTP discovery is complete and successful
188
+ */
189
+ isHTTPConnected() {
190
+ return this.currentState === ConnectionState.HTTPConnected ||
191
+ this.currentState === ConnectionState.WebSocketConnecting ||
192
+ this.currentState === ConnectionState.Connected ||
193
+ this.currentState === ConnectionState.WebSocketRetrying;
194
+ }
195
+ /**
196
+ * Check if fully connected (WebSocket active)
197
+ */
198
+ isFullyConnected() {
199
+ return this.currentState === ConnectionState.Connected;
200
+ }
201
+ /**
202
+ * Check if currently connected (HTTP or WebSocket)
203
+ */
204
+ setState(state, message, retryCount, maxRetries) {
205
+ this._currentState$.next(state);
206
+ const status = this.createStatus(state, message, retryCount, maxRetries);
207
+ // Handle notification timing
208
+ if (state === ConnectionState.HTTPDiscovering || state === ConnectionState.WebSocketConnecting) {
209
+ // Show connecting immediately
210
+ this._status$.next(status);
211
+ }
212
+ else if (state === ConnectionState.Connected) {
213
+ // Debounce connected status for stability
214
+ this.clearNotificationTimeout();
215
+ this._notificationTimeout = setTimeout(() => {
216
+ this._status$.next(status);
217
+ }, this.config.notificationDebounceMs);
218
+ }
219
+ else {
220
+ // Show other states immediately
221
+ this.clearNotificationTimeout();
222
+ this._status$.next(status);
223
+ }
224
+ }
225
+ createStatus(state, message, retryCount, maxRetries) {
226
+ return {
227
+ state,
228
+ operation: this.stateToOperationCode(state),
229
+ message,
230
+ retryCount: retryCount || 0,
231
+ maxRetries: maxRetries || 0,
232
+ timestamp: new Date()
233
+ };
234
+ }
235
+ stateToOperationCode(state) {
236
+ switch (state) {
237
+ case ConnectionState.Disconnected:
238
+ return 0;
239
+ case ConnectionState.HTTPDiscovering:
240
+ case ConnectionState.WebSocketConnecting:
241
+ return 1; // Connecting
242
+ case ConnectionState.Connected:
243
+ return 2; // Connected
244
+ case ConnectionState.HTTPError:
245
+ case ConnectionState.WebSocketError:
246
+ case ConnectionState.HTTPRetrying:
247
+ case ConnectionState.WebSocketRetrying:
248
+ return 3; // Error/Retrying
249
+ case ConnectionState.HTTPConnected:
250
+ return 2; // Connected (HTTP level)
251
+ case ConnectionState.PermanentFailure:
252
+ return 5; // Permanent failure
253
+ default:
254
+ return 0;
255
+ }
256
+ }
257
+ scheduleHTTPRetry() {
258
+ this.clearRetryTimer();
259
+ const retryIndex = Math.min(this._httpRetryCount - 1, this.config.retryIntervals.length - 1);
260
+ const delay = this.config.retryIntervals[retryIndex];
261
+ console.log(`[ConnectionStateMachine] Scheduling HTTP retry in ${delay}ms`);
262
+ this._retryTimeout = setTimeout(() => {
263
+ // Trigger the actual HTTP request via callback
264
+ // Don't change state here - let the HTTP result determine the new state
265
+ if (this._httpRetryCallback) {
266
+ console.log(`[ConnectionStateMachine] Executing HTTP retry ${this._httpRetryCount}/${this.config.httpRetryCount}`);
267
+ this._httpRetryCallback();
268
+ }
269
+ else {
270
+ console.error('[ConnectionStateMachine] No HTTP retry callback set!');
271
+ this.setState(ConnectionState.Disconnected, 'HTTP retry callback not configured');
272
+ }
273
+ }, delay);
274
+ }
275
+ scheduleWebSocketRetry() {
276
+ this.clearRetryTimer();
277
+ console.log(`[ConnectionStateMachine] Scheduling WebSocket retry in ${this.config.retryIntervals[1]}ms`);
278
+ this._retryTimeout = setTimeout(() => {
279
+ // Trigger WebSocket reconnection attempt via callback
280
+ // Don't change state here - let the WebSocket result determine the new state
281
+ if (this._webSocketRetryCallback) {
282
+ console.log(`[ConnectionStateMachine] Executing WebSocket retry ${this._webSocketRetryCount}/${this.config.webSocketRetryCount}`);
283
+ this._webSocketRetryCallback();
284
+ }
285
+ else {
286
+ // Fallback to the old behavior if no callback is set
287
+ console.log(`[ConnectionStateMachine] No WebSocket retry callback - using state change method`);
288
+ this.setState(ConnectionState.WebSocketConnecting, `Retrying WebSocket connection (${this._webSocketRetryCount}/${this.config.webSocketRetryCount})...`, this._webSocketRetryCount, this.config.webSocketRetryCount);
289
+ }
290
+ }, this.config.retryIntervals[1]);
291
+ }
292
+ clearRetryTimer() {
293
+ if (this._retryTimeout) {
294
+ clearTimeout(this._retryTimeout);
295
+ this._retryTimeout = null;
296
+ }
297
+ }
298
+ clearNotificationTimeout() {
299
+ if (this._notificationTimeout) {
300
+ clearTimeout(this._notificationTimeout);
301
+ this._notificationTimeout = null;
302
+ }
303
+ }
304
+ /**
305
+ * Ensure any scheduled retries / notifications are cancelled when the injector
306
+ * disposes this service (e.g. app shutdown / HMR replacement) to avoid stray
307
+ * callbacks retaining references.
308
+ */
309
+ ngOnDestroy() {
310
+ this.clearRetryTimer();
311
+ this.clearNotificationTimeout();
312
+ this._httpRetryCallback = null;
313
+ this._webSocketRetryCallback = null;
314
+ this._currentState$?.complete();
315
+ this._status$?.complete();
316
+ }
317
+ };
318
+ ConnectionStateMachine = __decorate([
319
+ Injectable({
320
+ providedIn: 'root'
321
+ }),
322
+ __metadata("design:paramtypes", [])
323
+ ], ConnectionStateMachine);
324
+ export { ConnectionStateMachine };
325
+ //# sourceMappingURL=connection-state-machine.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-state-machine.service.js","sourceRoot":"","sources":["../../../../../../src/app/core/services/connection-state-machine.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,273 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { AppSettingsService } from './app-settings.service';
11
+ import { effect, inject, Injectable, signal } from '@angular/core';
12
+ import { Router } from '@angular/router';
13
+ import isEqual from 'lodash-es/isEqual';
14
+ import cloneDeep from 'lodash-es/cloneDeep';
15
+ import { UUID } from '../utils/uuid.util';
16
+ import { BehaviorSubject } from 'rxjs';
17
+ import { toSignal } from '@angular/core/rxjs-interop';
18
+ let DashboardService = class DashboardService {
19
+ _settings = inject(AppSettingsService);
20
+ _router = inject(Router);
21
+ dashboards = signal([], { equal: isEqual });
22
+ activeDashboard = signal(0);
23
+ _widgetAction = new BehaviorSubject(null);
24
+ widgetAction$ = this._widgetAction.asObservable();
25
+ _isDashboardStatic = new BehaviorSubject(true);
26
+ isDashboardStatic$ = this._isDashboardStatic.asObservable();
27
+ isDashboardStatic = toSignal(this.isDashboardStatic$);
28
+ blankDashboard = [{ id: null, name: 'Dashboard 1', icon: 'dashboard-dashboard', configuration: [
29
+ {
30
+ "w": 12,
31
+ "h": 12,
32
+ "id": "d1d58e6f-f8b4-4a72-9597-7f92aa6776fc",
33
+ "selector": "widget-tutorial",
34
+ "input": {
35
+ "widgetProperties": {
36
+ "type": "widget-tutorial",
37
+ "uuid": "d1d58e6f-f8b4-4a72-9597-7f92aa6776fc"
38
+ }
39
+ },
40
+ "x": 0,
41
+ "y": 0
42
+ }
43
+ ] }];
44
+ constructor() {
45
+ const dashboards = this._settings.getDashboardConfig();
46
+ if (!dashboards || dashboards.length === 0) {
47
+ console.warn('[Dashboard Service] No dashboards found in settings, creating blank dashboard');
48
+ const newBlankDashboard = this.blankDashboard.map(dashboard => ({
49
+ ...dashboard,
50
+ id: UUID.create()
51
+ }));
52
+ this.dashboards.set([...newBlankDashboard]);
53
+ }
54
+ else {
55
+ this.dashboards.set(this._settings.getDashboardConfig());
56
+ }
57
+ effect(() => {
58
+ this._settings.saveDashboards(this.dashboards());
59
+ });
60
+ }
61
+ /**
62
+ * Toggles the static/fixed state of the dashboard layout.
63
+ */
64
+ toggleStaticDashboard() {
65
+ this._isDashboardStatic.next(!this._isDashboardStatic.value);
66
+ }
67
+ /**
68
+ * Adds a new dashboard with the given name, widget configuration, and optional icon.
69
+ * @param name The name of the new dashboard.
70
+ * @param configuration The widget configuration array.
71
+ * @param icon The optional icon for the dashboard.
72
+ */
73
+ add(name, configuration, icon) {
74
+ this.dashboards.update(dashboards => [...dashboards, { id: UUID.create(), name: name, icon: icon, configuration: configuration }]);
75
+ }
76
+ /**
77
+ * Updates the name and icon of a dashboard at the specified index.
78
+ * @param itemIndex The index of the dashboard to update.
79
+ * @param name The new name for the dashboard.
80
+ * @param icon The new icon for the dashboard (defaults to "dashboard").
81
+ */
82
+ update(itemIndex, name, icon) {
83
+ this.dashboards.update(dashboards => dashboards.map((dashboard, i) => i === itemIndex ? { ...dashboard, name: name, icon: icon } : dashboard));
84
+ }
85
+ /**
86
+ * Deletes the dashboard at the specified index.
87
+ * If no dashboards remain, creates a new blank dashboard.
88
+ * @param itemIndex The index of the dashboard to delete.
89
+ */
90
+ delete(itemIndex) {
91
+ this.dashboards.update(dashboards => dashboards.filter((_, i) => i !== itemIndex));
92
+ if (this.dashboards().length === 0) {
93
+ this.add('Dashboard ' + (this.dashboards().length + 1), []);
94
+ this.activeDashboard.set(0);
95
+ }
96
+ else if (this.activeDashboard() > this.dashboards().length - 1) {
97
+ this.activeDashboard.set(this.dashboards().length - 1);
98
+ }
99
+ }
100
+ /**
101
+ * Duplicates the dashboard at the specified index with a new name and optional icon.
102
+ * All widget and dashboard IDs are regenerated.
103
+ * @param itemIndex The index of the dashboard to duplicate.
104
+ * @param newName The name for the duplicated dashboard.
105
+ * @param newIcon The optional icon for the duplicated dashboard.
106
+ */
107
+ duplicate(itemIndex, newName, newIcon) {
108
+ if (itemIndex < 0 || itemIndex >= this.dashboards().length) {
109
+ console.error(`[Dashboard Service] Invalid itemIndex: ${itemIndex}`);
110
+ return;
111
+ }
112
+ const originalDashboard = this.dashboards()[itemIndex];
113
+ const newDashboard = cloneDeep(originalDashboard);
114
+ newDashboard.id = UUID.create();
115
+ newDashboard.name = newName;
116
+ newDashboard.icon = newIcon || 'dashboard-dashboard';
117
+ if (Array.isArray(newDashboard.configuration)) {
118
+ newDashboard.configuration.forEach((widget) => {
119
+ if (widget && widget.input?.widgetProperties) {
120
+ widget.id = UUID.create();
121
+ widget.input.widgetProperties.uuid = widget.id;
122
+ }
123
+ else {
124
+ console.error("Dashboard Service] Widget configuration is missing required properties:", widget);
125
+ }
126
+ });
127
+ }
128
+ else {
129
+ console.error("Dashboard Service] Dashboard configuration is not an array:", newDashboard.configuration);
130
+ newDashboard.configuration = [];
131
+ }
132
+ this.dashboards.update(dashboards => [
133
+ ...dashboards,
134
+ newDashboard
135
+ ]);
136
+ }
137
+ /**
138
+ * Updates the widget configuration for the dashboard at the specified index.
139
+ * Only updates if the configuration has changed.
140
+ * @param itemIndex The index of the dashboard to update.
141
+ * @param configuration The new widget configuration array.
142
+ */
143
+ updateConfiguration(itemIndex, configuration) {
144
+ this.dashboards.update(dashboards => dashboards.map((dashboard, i) => {
145
+ if (i === itemIndex) {
146
+ // Only update if the configuration has changed
147
+ if (isEqual(dashboard.configuration, configuration)) {
148
+ return dashboard; // No changes, return the same reference
149
+ }
150
+ return { ...dashboard, configuration: configuration }; // Update with new configuration
151
+ }
152
+ return dashboard; // No changes for other dashboards
153
+ }));
154
+ }
155
+ /**
156
+ * Switches to the previous dashboard in the list.
157
+ * Wraps to the last dashboard if at the beginning.
158
+ * This only updates the internal state and does NOT trigger navigation or URL changes.
159
+ */
160
+ previousDashboard() {
161
+ if ((this.activeDashboard() + 1) > (this.dashboards().length) - 1) {
162
+ this.activeDashboard.set(0);
163
+ }
164
+ else {
165
+ this.activeDashboard.set(this.activeDashboard() + 1);
166
+ }
167
+ }
168
+ /**
169
+ * Switches to the next dashboard in the list.
170
+ * Wraps to the first dashboard if at the end.
171
+ * This only updates the internal state and does NOT trigger navigation or URL changes.
172
+ */
173
+ nextDashboard() {
174
+ if ((this.activeDashboard() - 1) < 0) {
175
+ this.activeDashboard.set(this.dashboards().length - 1);
176
+ }
177
+ else {
178
+ this.activeDashboard.set(this.activeDashboard() - 1);
179
+ }
180
+ }
181
+ /**
182
+ * Sets the active dashboard index in the service.
183
+ * This only updates the internal state and does NOT trigger navigation or URL changes.
184
+ * @param itemIndex The index of the dashboard to activate.
185
+ */
186
+ setActiveDashboard(itemIndex) {
187
+ if (itemIndex >= 0 && itemIndex < this.dashboards().length) {
188
+ this.activeDashboard.set(itemIndex);
189
+ }
190
+ else {
191
+ console.error(`[Dashboard Service] Invalid dashboard ID: ${itemIndex}`);
192
+ }
193
+ }
194
+ /**
195
+ * Navigates the router to the currently active dashboard.
196
+ * This updates the browser URL and triggers Angular routing.
197
+ */
198
+ navigateToActive() {
199
+ this._router.navigate(['/dashboard', this.activeDashboard()]);
200
+ }
201
+ /**
202
+ * Navigates the router to the dashboard at the specified index.
203
+ * This updates the browser URL and triggers Angular routing.
204
+ * @param itemIndex The index of the dashboard to navigate to.
205
+ */
206
+ navigateTo(itemIndex) {
207
+ if (itemIndex >= 0 && itemIndex < this.dashboards().length) {
208
+ this._router.navigate(['/dashboard', itemIndex]);
209
+ }
210
+ else {
211
+ console.error(`[Dashboard Service] Invalid dashboard ID: ${itemIndex}`);
212
+ }
213
+ }
214
+ /**
215
+ * Navigates to the next dashboard in the list.
216
+ * If the current dashboard is the first one, wraps around to the last dashboard.
217
+ * This updates the browser URL and triggers Angular routing.
218
+ */
219
+ navigateToNextDashboard() {
220
+ let nextDashboard = null;
221
+ if ((this.activeDashboard() - 1) < 0) {
222
+ nextDashboard = this.dashboards().length - 1;
223
+ }
224
+ else {
225
+ nextDashboard = this.activeDashboard() - 1;
226
+ }
227
+ this._router.navigate(['/dashboard', nextDashboard]);
228
+ }
229
+ /**
230
+ * Navigates to the previous dashboard in the list.
231
+ * If the current dashboard is the last one, wraps around to the first dashboard.
232
+ * This updates the browser URL and triggers Angular routing.
233
+ */
234
+ navigateToPreviousDashboard() {
235
+ let nextDashboard = null;
236
+ if ((this.activeDashboard() + 1) >= this.dashboards().length) {
237
+ nextDashboard = 0;
238
+ }
239
+ else {
240
+ nextDashboard = this.activeDashboard() + 1;
241
+ }
242
+ this._router.navigate(['/dashboard', nextDashboard]);
243
+ }
244
+ /**
245
+ * Emits a widget delete operation for the widget with the given ID.
246
+ * @param id The widget ID to delete.
247
+ */
248
+ deleteWidget(id) {
249
+ this._widgetAction.next({ id: id, operation: 'delete' });
250
+ }
251
+ /**
252
+ * Emits a widget duplicate operation for the widget with the given ID.
253
+ * @param id The widget ID to duplicate.
254
+ */
255
+ duplicateWidget(id) {
256
+ this._widgetAction.next({ id: id, operation: 'duplicate' });
257
+ }
258
+ /**
259
+ * Sets the static/fixed state of the dashboard layout.
260
+ * @param isStatic Whether the dashboard should be static.
261
+ */
262
+ setStaticDashboard(isStatic) {
263
+ this._isDashboardStatic.next(isStatic);
264
+ }
265
+ };
266
+ DashboardService = __decorate([
267
+ Injectable({
268
+ providedIn: 'root'
269
+ }),
270
+ __metadata("design:paramtypes", [])
271
+ ], DashboardService);
272
+ export { DashboardService };
273
+ //# sourceMappingURL=dashboard.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.service.js","sourceRoot":"","sources":["../../../../../../src/app/core/services/dashboard.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { TestBed } from '@angular/core/testing';
2
+ import { DashboardService } from './dashboard.service';
3
+ describe('DashboardService', () => {
4
+ let service;
5
+ beforeEach(() => {
6
+ TestBed.configureTestingModule({});
7
+ service = TestBed.inject(DashboardService);
8
+ });
9
+ it('should be created', () => {
10
+ expect(service).toBeTruthy();
11
+ });
12
+ });
13
+ //# sourceMappingURL=dashboard.service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.service.spec.js","sourceRoot":"","sources":["../../../../../../src/app/core/services/dashboard.service.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,OAAyB,CAAC;IAE9B,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}