@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
@@ -1,4 +1,4 @@
1
- import{a as bn,b as Cn,c as kn,d as id,e as nd,f as ad,g as od}from"./chunk-CCEKSCJH.js";import{A as hd,B as ud,C as En,D as Pi,E as wt,F as Mn,G as Dn,H as An,I as no,J as ao,K as md,L as Pn,M as On,a as tt,b as Mi,c as Di,d as Xa,e as $i,f as ca,g as Xt,h as Ai,i as Wt,j as Za,k as Ja,l as xn,m as Yi,n as eo,o as to,p as Zt,q as yr,r as io,s as ha,t as cd,u as br,v as wr,w as _r,x as Sr,y as Tn,z as ua}from"./chunk-EOXCM3IV.js";import{f as At}from"./chunk-SVI34QP4.js";import{a as yd,b as bd,c as wd,d as _d}from"./chunk-AREYGJLO.js";import{a as ed,b as td,c as rd,d as sd,e as ld,f as dd,g as Ka,h as Qa,i as pd}from"./chunk-QZO4362R.js";import{b as Sd,g as Cd}from"./chunk-4N6AW5Y5.js";import{a as gd,b as fd,c as vd}from"./chunk-ZGO25KK6.js";import{c as hi}from"./chunk-B6IRZFL5.js";import"./chunk-5NKFZDV5.js";import{a as nt,b as Dt}from"./chunk-G5U7W6LL.js";import{a as Jl}from"./chunk-KABAIECE.js";import{A as Zl,a as Nt,b as _n,c as J,d as Sn,e as Ti,f as Bl,g as Ei,m as $l}from"./chunk-WUFURHSA.js";import{K as Xl,a as di,b as vl,c as yl,e as wn,f as Fa,h as Ft,i as Ha,j as Mt,l as Yl,q as Kl,x as Ql}from"./chunk-ZOYXBB55.js";import{a as da,b as Fl,c as Hl,f as fr,j as Ul,k as Ya,n as Gl,o as ql,p as jl,s as vr}from"./chunk-O2GGGUBC.js";import{$b as li,$c as Pl,$d as ft,Ab as gi,Ac as ml,Ba as Ia,Bb as fi,C as rr,Ca as Na,D as Ra,Da as Ks,Db as te,Dc as pl,Dd as Vl,Ea as ur,Eb as be,F as Hs,Fa as k,Fb as al,Fc as gl,Ga as Qs,Gb as we,Gc as fl,Gd as gr,Ha as Xs,Hb as ki,Hd as bt,Ia as Zs,Ib as ol,Id as pt,J as Us,Ja as Et,Jb as qi,Jc as bl,Kb as b,Kc as wl,La as mr,Lb as He,Lc as _l,M as sr,Ma as Js,Mb as rt,Mc as Sl,Md as ja,Nb as rl,O as Gs,Oa as F,Oc as mt,Od as la,P as qs,Pa as ri,Pb as ge,Pc as St,Qa as si,Qb as fe,Qc as Cl,R as lr,Ra as el,Rb as ve,Rc as kl,S as hn,Sa as ce,Sb as sl,Sc as xl,Tb as ll,Tc as Ua,Ua as Wa,Ub as dl,Uc as Tl,Va as tl,Vb as xi,Vc as El,Wa as _t,Wc as Ml,Wd as zl,X as js,Xa as Je,Xc as ci,Ya as oa,Yd as gt,Z as dr,Zc as Dl,Zd as $a,_a as il,_c as Al,a as $,aa as qe,ab as ae,ac as Ba,b as Ze,bb as De,bc as fn,c as Vs,ca as st,cb as Ae,cc as pr,d as Bs,da as ai,db as Si,dc as Ke,e as Aa,ea as cr,ec as ct,f as Ui,fa as un,fb as Bt,fc as ne,g as Pa,ga as E,gb as zt,gc as cl,gd as Ol,ha as $s,hb as z,ib as v,j as Qt,ja as P,jb as _,jc as vn,ka as O,kb as G,kc as B,l as _i,la as re,lb as A,lc as ie,ma as et,mb as W,na as Gi,nb as Q,nc as ji,nd as Rl,oa as mn,ob as La,oc as yn,od as Il,pa as oi,pb as Va,q as zs,qc as za,qd as Ga,r as ar,ra as K,rb as Y,t as Oa,tb as I,td as Nl,ua as pn,ub as ra,uc as hl,v as or,va as Ys,vb as U,vd as Wl,w as pi,wa as Ye,wb as sa,wd as Ll,x as Fs,xb as gn,xc as ul,xd as qa,yb as nl,za as hr,zb as Ci}from"./chunk-DSWRNQDG.js";var jr=Bs((ES,To)=>{(function(a){"use strict";function n(u){if(Array.isArray(u)){for(var h=0,g=Array(u.length);h<u.length;h++)g[h]=u[h];return g}return Array.from(u)}function e(u,h){if(!u)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!h||typeof h!="object"&&typeof h!="function"?u:h}function t(u,h){if(typeof h!="function"&&h!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof h);u.prototype=Object.create(h&&h.prototype,{constructor:{value:u,enumerable:!1,writable:!0,configurable:!0}}),h&&(Object.setPrototypeOf?Object.setPrototypeOf(u,h):u.__proto__=h)}function i(u,h){if(!(u instanceof h))throw new TypeError("Cannot call a class as a function")}function o(u,h){if(h||(h=typeof window>"u"?global:window),h[u]!==void 0)return h[u];if(Da===null){var g=window.getComputedStyle(document.documentElement,"");Da=(Array.prototype.slice.call(g).join("").match(/-(moz|webkit|ms)-/)||g.OLink===""&&["","o"]||["",""])[1]}if(Da==="")return null;var w=u.charAt(0).toUpperCase()+u.substr(1),C=h[Da+w];return C!==void 0?C:null}function r(u,h,g,w,C,T,D){if(typeof w!="function")throw new TypeError("Invalid animation rule:",w);var N=u-g,R=N/C,L=0;R>1&&(R=1),R!==1&&(L=w(R),isFinite(L)&&!isNaN(L)&&(R=L)),h&&h(R),N<C?D.frame=Rs(function(q){return r(q,h,g,w,C,T,D)}):(T&&T(),D.inProgress=!1)}function l(){Array.prototype.constructor.apply(this,arguments)}function d(u){if(!(u instanceof DOMException&&u.result===2152923147))throw u}function p(u,h){return h.replace(Hu,function(g,w){var C=u[w];return C!==void 0?C:g})}function s(u){return u.majorTicks instanceof Array||(u.majorTicks=u.majorTicks?[u.majorTicks]:[]),u.majorTicks.length||(u.majorTicks.push(oe.formatMajorTickNumber(u.minValue,u)),u.majorTicks.push(oe.formatMajorTickNumber(u.maxValue,u))),[u.tickSide!=="right",u.tickSide!=="left"]}function c(u,h,g,w,C,T){u.beginPath(),u.moveTo(h+T,g),u.lineTo(h+w-T,g),u.quadraticCurveTo(h+w,g,h+w,g+T),u.lineTo(h+w,g+C-T),u.quadraticCurveTo(h+w,g+C,h+w-T,g+C),u.lineTo(h+T,g+C),u.quadraticCurveTo(h,g+C,h,g+C-T),u.lineTo(h,g+T),u.quadraticCurveTo(h,g,h+T,g),u.closePath()}function m(u,h){var g=h.valueDec,w=h.valueInt,C=0,T=void 0,D=void 0,N=void 0;if(u=parseFloat(u),N=u<0,u=Math.abs(u),g>0){for(D=u.toFixed(g).toString().split("."),T=w-D[0].length;C<T;++C)D[0]="0"+D[0];D=(N?"-":"")+D[0]+"."+D[1]}else{for(D=Math.round(u).toString(),T=w-D.length;C<T;++C)D="0"+D;D=(N?"-":"")+D}return D}function f(u,h){var g=void 0,w=!1;return g=h.majorTicksDec===0?Math.round(u).toString():u.toFixed(h.majorTicksDec),h.majorTicksInt>1?(w=~g.indexOf("."),~g.indexOf("-")?"-"+[h.majorTicksInt+h.majorTicksDec+2+(w?1:0)-g.length].join("0")+g.replace("-",""):[h.majorTicksInt+h.majorTicksDec+1+(w?1:0)-g.length].join("0")+g):g}function y(u){return u*Math.PI/180}function S(u,h){return{x:-u*Math.sin(h),y:u*Math.cos(h)}}function x(u,h,g,w){var C=!(arguments.length>4&&arguments[4]!==void 0)||arguments[4],T=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0,D=u.createLinearGradient(C?0:T,C?T:0,C?0:w,C?w:0);return D.addColorStop(0,h),D.addColorStop(1,g),D}function V(u,h){h.needleShadow&&(u.shadowOffsetX=2,u.shadowOffsetY=2,u.shadowBlur=10,u.shadowColor=h.colorNeedleShadowDown)}function H(u,h,g){return u["font"+h+"Style"]+" "+u["font"+h+"Weight"]+" "+u["font"+h+"Size"]*g+"px "+u["font"+h]}function Z(u){u.shadowOffsetX=null,u.shadowOffsetY=null,u.shadowBlur=null,u.shadowColor="",u.strokeStyle=null,u.lineWidth=0,u.save()}function me(u,h,g,w){h.valueTextShadow&&(u.shadowOffsetX=g,u.shadowOffsetY=g,u.shadowBlur=w,u.shadowColor=h.colorValueTextShadow)}function Oe(u,h,g,w,C,T){if(h.valueBox){Z(u);var D=h.valueDec?1+h.valueDec:0,N="9".repeat(Math.max.apply(null,[String(parseInt(g)).length+D].concat(h.majorTicks.map(function(Ve){return String(parseInt(Ve,10)).length+D})))),R=h.valueText||m(g,h),L=T/200,q=T/100,j=.4*q,ue=1.2*q;u.font=H(h,"Value",L),me(u,h,j,ue);var _e=u.measureText(h.valueText?R:"-"+m(Number(N),h)).width;Z(u);var Ee=parseFloat(h.fontValueSize)*L+j+ue,Ge=q*parseFloat(h.valueBoxStroke),xe=2*T-2*Ge,ze=_e+10*q,Fe=1.1*Ee+j+ue,je=q*h.valueBoxBorderRadius,Ne=(parseFloat(h.valueBoxWidth)||0)/100*xe;Ne>ze&&(ze=Ne),ze>xe&&(ze=xe);var Le=w-ze/2,Ie=C-Fe/2,ke=C-5.75*q;if(u.beginPath(),je?c(u,Le,Ie,ze,Fe,je):u.rect(Le,Ie,ze,Fe),Ge){var Me=u.createRadialGradient(w,ke,10*q,w,ke,20*q);Me.addColorStop(0,h.colorValueBoxRect),Me.addColorStop(1,h.colorValueBoxRectEnd),u.strokeStyle=Me,u.lineWidth=Ge,u.stroke()}h.colorValueBoxShadow&&(u.shadowBlur=1.2*q,u.shadowColor=h.colorValueBoxShadow),h.colorValueBoxBackground&&(u.fillStyle=h.colorValueBoxBackground,u.fill()),u.closePath(),u.restore(),me(u,h,j,ue),u.fillStyle=h.colorValueText,u.textAlign="center",u.textBaseline="alphabetic",u.fillText(R,Le+ze/2,C+Fe/2-Ee/3),u.restore()}}function Be(u){var h=u.value,g=u.minValue,w=u.maxValue,C=.01*(w-g);return{normal:h<g?g:h>w?w:h,indented:h<g?g-C:h>w?w+C:h}}function ye(u,h,g,w,C){g.beginPath(),g.arc(0,0,Kt(u),0,2*na,!0),g.lineWidth=h,g.strokeStyle=C?oe.linearGradient(g,w,C,u):w,g.stroke(),g.closePath()}function X(u,h){var g=Yt.pixelRatio;return u.maxRadius||(u.maxRadius=u.max-h.borderShadowWidth-h.borderOuterWidth*g-h.borderMiddleWidth*g-h.borderInnerWidth*g+(h.borderOuterWidth?.5:0)+(h.borderMiddleWidth?.5:0)+(h.borderInnerWidth?.5:0)),u.maxRadius}function Te(u,h){function g(j,ue,_e,Ee,Ge,xe){return ue&&(!xe&&h.borderShadowWidth&&(_e.save(),_e.shadowBlur=h.borderShadowWidth,_e.shadowColor=h.colorBorderShadow),ye(j,ue*w,_e,Ee,Ge),!xe&&h.borderShadowWidth&&(xe=!0,_e.restore())),xe}var w=Yt.pixelRatio,C=h.borderShadowWidth*w,T=u.max-C-h.borderOuterWidth*w/2,D=T-h.borderOuterWidth*w/2-h.borderMiddleWidth*w/2+.5,N=D-h.borderMiddleWidth*w/2-h.borderInnerWidth*w/2+.5,R=X(u,h),L=void 0,q=!1;u.save(),q=g(T,h.borderOuterWidth,u,h.colorBorderOuter,h.colorBorderOuterEnd,q),q=g(D,h.borderMiddleWidth,u,h.colorBorderMiddle,h.colorBorderMiddleEnd,q),q=g(N,h.borderInnerWidth,u,h.colorBorderInner,h.colorBorderInnerEnd,q),!q&&h.borderShadowWidth&&(u.shadowBlur=h.borderShadowWidth,u.shadowColor=h.colorBorderShadow),u.beginPath(),u.arc(0,0,Kt(R),0,2*na,!0),h.colorPlateEnd?(L=u.createRadialGradient(0,0,R/2,0,0,R),L.addColorStop(0,h.colorPlate),L.addColorStop(1,h.colorPlateEnd)):L=h.colorPlate,u.fillStyle=L,u.fill(),u.closePath(),u.restore()}function Ue(u,h){if(h.highlights!=="false"&&h.highlights.length&&h.highlightsWidth!==0){var g=u.max*(parseFloat(h.highlightsWidth)||0)/100,w=Kt(Qe(u,h)-g/2),C=h.highlights.length,T=(h.maxValue-h.minValue)/h.ticksAngle;u.save();for(var D=0;D<C;D++){var N=h.highlights[D];u.lineWidth=g,u.lineCap=h.highlightsLineCap,u.strokeStyle=N.color,u.beginPath(),u.rotate(nr),u.arc(0,0,w,oe.radians(h.startAngle+(N.from-h.minValue)/T),oe.radians(h.startAngle+(N.to-h.minValue)/T),!1),u.stroke(),u.closePath(),u.restore(),u.save()}u.restore()}}function ht(u,h){var g=Qe(u,h),w=void 0,C=void 0,T=void 0,D=0,N=Math.abs(h.minorTicks)||0,R=h.ticksAngle/(h.maxValue-h.minValue);h.exactTicks?(C=h.maxValue-h.minValue,w=N?C/N:0,D=(ni.mod(h.majorTicks[0],N)||0)*R):w=N*(h.majorTicks.length-1),u.lineWidth=Yt.pixelRatio,u.strokeStyle=h.colorMinorTicks||h.colorStrokeTicks,u.save();for(var L=0;L<w;++L)(T=h.startAngle+D+L*(h.ticksAngle/w))<=h.ticksAngle+h.startAngle&&(u.rotate(oe.radians(T)),u.beginPath(),u.moveTo(0,g),u.lineTo(0,g-.075*u.max),ti(u));u.restore()}function Qe(u,h){var g=u.max/100;return X(u,h)-5*g-(h.barWidth?2*(parseFloat(h.barStrokeWidth)||0)+((parseFloat(h.barWidth)||0)+5)*g:0)}function Xe(u,h){oe.prepareTicks(h);var g=Kt(Qe(u,h)),w=void 0,C=h.majorTicks.length,T=Yt.pixelRatio;u.lineWidth=2*T,w=h.colorMajorTicks instanceof Array?h.colorMajorTicks:new Array(C).fill(h.colorStrokeTicks||h.colorMajorTicks);for(var D=0;D<C;++D)u.save(),u.strokeStyle=w[D],u.rotate(oe.radians(lt(h,h.exactTicks?h.majorTicks[D]:D,C))),u.beginPath(),u.moveTo(0,g),u.lineTo(0,g-.15*u.max),u.stroke(),u.closePath(),u.restore();h.strokeTicks&&(u.save(),u.strokeStyle=h.colorStrokeTicks||w[0],u.rotate(nr),u.beginPath(),u.arc(0,0,g,oe.radians(h.startAngle),oe.radians(h.startAngle+h.ticksAngle),!1),u.stroke(),u.closePath(),u.restore())}function lt(u,h,g){if(u.exactTicks){var w=u.ticksAngle/(u.maxValue-u.minValue);return u.startAngle+w*(h-u.minValue)}return u.startAngle+h*(u.ticksAngle/(g-1))}function ti(u){u.stroke(),u.restore(),u.closePath(),u.save()}function ee(u,h){var g=Qe(u,h)-.15*u.max,w={},C=0,T=h.majorTicks.length,D=h.animationTarget!=="needle",N=h.colorNumbers instanceof Array?h.colorNumbers:new Array(T).fill(h.colorNumbers),R=D?-(h.value-h.minValue)/(h.maxValue-h.minValue)*h.ticksAngle:0;for(D&&(u.save(),u.rotate(-oe.radians(R))),u.font=oe.font(h,"Numbers",u.max/200),u.lineWidth=0,u.textAlign="center",u.textBaseline="middle";C<T;++C){var L=R+lt(h,h.exactTicks?h.majorTicks[C]:C,T),q=u.measureText(h.majorTicks[C]).width,j=h.fontNumbersSize,ue=Math.sqrt(q*q+j*j)/2,_e=oe.radialPoint(g-ue-h.numbersMargin/100*u.max,oe.radians(L));L===360&&(L=0),w[L]||(w[L]=!0,u.fillStyle=N[C],u.fillText(h.majorTicks[C],_e.x,_e.y))}D&&u.restore()}function de(u,h){h.title&&(u.save(),u.font=oe.font(h,"Title",u.max/200),u.fillStyle=h.colorTitle,u.textAlign="center",u.fillText(h.title,0,-u.max/4.25,.8*u.max),u.restore())}function pe(u,h){h.units&&(u.save(),u.font=oe.font(h,"Units",u.max/200),u.fillStyle=h.colorUnits,u.textAlign="center",u.fillText(oe.formatContext(h,h.units),0,u.max/3.25,.8*u.max),u.restore())}function We(u,h){if(h.needle){var g=h.animationTarget!=="needle",w=h.ticksAngle<360?oe.normalizedValue(h).indented:h.value,C=g?h.startAngle:h.startAngle+(w-h.minValue)/(h.maxValue-h.minValue)*h.ticksAngle;h.barStartPosition==="right"&&(C=h.startAngle+h.ticksAngle-(w-h.minValue)/(h.maxValue-h.minValue)*h.ticksAngle);var T=X(u,h),D=Kt(T/100*h.needleCircleSize),N=Kt(T/100*h.needleCircleSize*.75),R=Kt(T/100*h.needleEnd),L=Kt(h.needleStart?T/100*h.needleStart:0),q=T/100*h.needleWidth,j=T/100*h.needleWidth/2,ue=Yt.pixelRatio;u.save(),oe.drawNeedleShadow(u,h),u.rotate(oe.radians(C)),u.fillStyle=oe.linearGradient(u,h.colorNeedle,h.colorNeedleEnd,R-L),h.needleType==="arrow"?(u.beginPath(),u.moveTo(-j,-L),u.lineTo(-q,0),u.lineTo(-1*ue,R),u.lineTo(ue,R),u.lineTo(q,0),u.lineTo(j,-L),u.closePath(),u.fill(),u.beginPath(),u.lineTo(-.5*ue,R),u.lineTo(-1*ue,R),u.lineTo(-q,0),u.lineTo(-j,-L),u.lineTo(j/2*ue-2*ue,-L),u.closePath(),u.fillStyle=h.colorNeedleShadowUp,u.fill()):(u.beginPath(),u.moveTo(-j,R),u.lineTo(-j,L),u.lineTo(j,L),u.lineTo(j,R),u.closePath(),u.fill()),u.restore(),h.needleCircleSize&&(u.save(),oe.drawNeedleShadow(u,h),h.needleCircleOuter&&(u.beginPath(),u.arc(0,0,D,0,2*na,!0),u.fillStyle=oe.linearGradient(u,h.colorNeedleCircleOuter,h.colorNeedleCircleOuterEnd,D),u.fill(),u.closePath()),h.needleCircleInner&&(u.beginPath(),u.arc(0,0,N,0,2*na,!0),u.fillStyle=oe.linearGradient(u,h.colorNeedleCircleInner,h.colorNeedleCircleInnerEnd,N),u.fill(),u.closePath()),u.restore())}}function dt(u,h,g){oe.drawValueBox(u,h,g,0,u.max-.33*u.max,u.max)}function Lt(u){var h=u.startAngle,g=u.startAngle+u.ticksAngle,w=h,C=h+(oe.normalizedValue(u).normal-u.minValue)/(u.maxValue-u.minValue)*u.ticksAngle;if(u.barStartPosition==="middle"){var T=.5*(u.minValue+u.maxValue);u.value<T?(w=180-(T-oe.normalizedValue(u).normal)/(u.maxValue-u.minValue)*u.ticksAngle,C=180):(w=180,C=180+(oe.normalizedValue(u).normal-T)/(u.maxValue-u.minValue)*u.ticksAngle)}else u.barStartPosition==="right"&&(w=g-C+h,C=g);return{startAngle:w,endAngle:C}}function yt(u,h){var g=u.max/100,w=X(u,h)-5*g,C=parseFloat(h.barStrokeWidth+"")||0,T=(parseFloat(h.barWidth+"")||0)*g,D=w-2*C-T,N=(w-D)/2,R=D+N,L=C/R,q=h.startAngle,j=h.startAngle+h.ticksAngle;if(u.save(),u.rotate(nr),C&&(u.beginPath(),u.arc(0,0,R,oe.radians(q)-L,oe.radians(j)+L,!1),u.strokeStyle=h.colorBarStroke,u.lineWidth=2*N,u.stroke(),u.closePath()),T&&(u.beginPath(),u.arc(0,0,R,oe.radians(q),oe.radians(j),!1),u.strokeStyle=h.colorBar,u.lineWidth=T,u.stroke(),u.closePath(),h.barShadow&&(u.save(),u.beginPath(),u.arc(0,0,w,oe.radians(q),oe.radians(j),!1),u.clip(),u.beginPath(),u.strokeStyle=h.colorBar,u.lineWidth=1,u.shadowBlur=h.barShadow,u.shadowColor=h.colorBarShadow,u.shadowOffsetX=0,u.shadowOffsetY=0,u.arc(0,0,w,oe.radians(h.startAngle),oe.radians(h.startAngle+h.ticksAngle),!1),u.stroke(),u.closePath(),u.restore()),h.barProgress)){var ue=Lt(h),_e=ue.startAngle,Ee=ue.endAngle;u.beginPath(),u.arc(0,0,R,oe.radians(_e),oe.radians(Ee),!1),u.strokeStyle=h.colorBarProgress,u.lineWidth=T,u.stroke(),u.closePath()}u.restore()}function $t(u){return u.options.animatedValue?u.options.value:u.value}function at(u,h,g,w,C,T,D,N){u.beginPath(),u.fillStyle=N?oe.linearGradient(u,D,N,C>T?C:T,T>C,C>T?g:w):D,h>0?oe.roundRect(u,g,w,C,T,h):u.rect(g,w,C,T),u.fill(),u.closePath()}function Ta(u,h,g,w,C,T,D,N,R){u.beginPath(),u.lineWidth=h,u.strokeStyle=R?oe.linearGradient(u,N,R,D,!0,C):N,g>0?oe.roundRect(u,w,C,T,D,g):u.rect(w,C,T,D),u.stroke(),u.closePath()}function Zo(u,h,g,w,C,T){function D(Ve,$e,ot,Tt){return Ve&&(!Tt&&h.borderShadowWidth&&(u.save(),u.shadowBlur=h.borderShadowWidth,u.shadowColor=h.colorBorderShadow),Ta(u,Ve*N,R,g+Ve*N/2-ke,w+Ve*N/2-ke,L,_e,$e,ot),ke+=.5*N,!Tt&&h.borderShadowWidth&&(Tt=!0,u.restore())),Tt}var N=Yt.pixelRatio,R=h.borderRadius*N,L=C-h.borderShadowWidth-h.borderOuterWidth*N,q=L-h.borderOuterWidth*N-h.borderMiddleWidth*N,j=q-h.borderMiddleWidth*N-h.borderInnerWidth*N,ue=j-h.borderInnerWidth*N,_e=T-h.borderShadowWidth-h.borderOuterWidth*N,Ee=_e-h.borderOuterWidth*N-h.borderMiddleWidth*N,Ge=Ee-h.borderMiddleWidth*N-h.borderInnerWidth*N,xe=Ge-h.borderInnerWidth*N,ze=g-(q-L)/2,Fe=ze-(j-q)/2,je=Fe-(ue-j)/2,Ne=w-(Ee-_e)/2,Le=Ne-(Ge-Ee)/2,Ie=Le-(xe-Ge)/2,ke=0,Me=!1;return u.save(),Me=D(h.borderOuterWidth,h.colorBorderOuter,h.colorBorderOuterEnd,Me),Me=D(h.borderMiddleWidth,h.colorBorderMiddle,h.colorBorderMiddleEnd,Me),Me=D(h.borderInnerWidth,h.colorBorderInner,h.colorBorderInnerEnd,Me),!Me&&h.borderShadowWidth&&(u.shadowBlur=h.borderShadowWidth,u.shadowColor=h.colorBorderShadow),at(u,R,je,Ie,ue+2*ke,xe+2*ke,h.colorPlate,h.colorPlateEnd),u.restore(),[je,Ie,ue,xe]}function ut(u,h,g,w,C,T){var D=Yt.pixelRatio,N=T>=C,R=N?.85*C:T,L=N?T:C;g=N?Re(g+(C-R)/2):g;var q=!!h.title,j=!!h.units,ue=!!h.valueBox,_e=void 0,Ee=void 0,Ge=void 0;N?(Ee=Re(.05*L),_e=Re(.075*L),Ge=Re(.11*L),q&&(L-=_e,w+=_e),j&&(L-=Ee),ue&&(L-=Ge)):(Ee=_e=Re(.15*R),q&&(R-=_e,w+=_e),j&&(R-=Ee));var xe=2*h.barStrokeWidth,ze=h.barBeginCircle?Re(R*h.barBeginCircle/200-xe/2):0,Fe=Re(R*h.barWidth/100-xe),je=Re(L*h.barLength/100-xe),Ne=Re((L-je)/2),Le=Re(g+(N?R/2:Ne+ze)),Ie=Re(w+(N?L-Ne-ze+xe/2:R/2)),ke=!N||h.hasLeft&&h.hasRight?0:(h.hasRight?-1:1)*h.ticksWidth/100*R,Me=N||h.hasLeft&&h.hasRight?0:(h.hasRight?-1:1)*h.ticksWidth/100*R;return u.barDimensions={isVertical:N,width:R,length:L,barWidth:Fe,barLength:je,strokeWidth:xe,barMargin:Ne,radius:ze,pixelRatio:D,barOffset:null,titleMargin:q?_e:0,unitsMargin:j?Ee:0,get ticksLength(){return this.barLength-this.barOffset-this.strokeWidth},X:g+ke,Y:w+Me,x0:Le+ke,y0:Ie+Me,baseX:g,baseY:w,ticksPadding:h.ticksPadding/100},u.barDimensions}function ii(u,h,g,w,C,T,D){var N=ut(u,h,w,C,T,D),R=N.isVertical,L=N.width,q=N.barWidth,j=N.barLength,ue=N.strokeWidth,_e=N.barMargin,Ee=N.radius,Ge=N.x0,xe=N.y0,ze=N.X,Fe=N.Y,je=j;u.save(),u.beginPath();var Ne=null;if(h.barBeginCircle){var Le=oe.radians(R?270:0),Ie=Math.asin(q/2/Ee),ke=Math.cos(Ie),Me=Math.sin(Ie),Ve=Ge+(R?Ee*Me:Ee*ke-ue/2),$e=R?xe-Ee*ke:xe+Ee*Me,ot=Kt(R?$e-xe:Ve-Ge);Ne=Re(ot+Ee);var Tt=R?Re(Ge-Ee*Me):Ve,Vt=R?$e:Re(xe-Ee*Me);g==="progress"&&(j=Ne+(j-Ne)*(oe.normalizedValue(h).normal-h.minValue)/(h.maxValue-h.minValue));var aa=Re(Ve+j-Ne+ue/2),Hi=Re($e-j+Ne-ue/2);u.arc(Ge,xe,Ee,Le+Ie,Le-Ie),R?(u.moveTo(Ve,Vt),u.lineTo(Ve,Hi),u.lineTo(Tt,Hi),u.lineTo(Tt,Vt)):(u.moveTo(Ve,Vt),u.lineTo(aa,Vt),u.lineTo(aa,$e),u.lineTo(Ve,$e))}else{var Ws=Re(R?ze+(L-q)/2:ze+_e),Ls=Re(R?Fe+j+_e:Fe+(L-q)/2);g==="progress"&&(j*=(h.value-h.minValue)/(h.maxValue-h.minValue)),R?u.rect(Ws,Ls,q,-j):u.rect(Ws,Ls,j,q)}g!=="progress"&&h.barStrokeWidth&&(u.lineWidth=ue,u.strokeStyle=h.colorBarStroke,u.stroke()),g!=="progress"&&h.colorBar?(u.fillStyle=h.colorBarEnd?oe.linearGradient(u,h.colorBar,h.colorBarEnd,j,R,R?Fe:ze):h.colorBar,u.fill()):g==="progress"&&h.colorBarProgress&&(u.fillStyle=h.colorBarProgressEnd?oe.linearGradient(u,h.colorBarProgress,h.colorBarProgressEnd,je,R,R?Fe:ze):h.colorBarProgress,u.fill()),u.closePath(),u.restore(),h.barBeginCircle&&(u.barDimensions.radius+=ue),u.barDimensions.barOffset=Ne,u.barDimensions.barWidth+=ue,u.barDimensions.barLength+=ue}function xt(u,h,g,w,C,T){ii(u,h,"",g,w,C,T)}function zi(u,h){return h.needleSide!==u||h.tickSide!==u||h.numberSide!==u}function ea(u,h,g,w,C,T){h.barProgress&&ii(u,h,"progress",g,w,C,T)}function Au(u,h){var g=u.barDimensions,w=g.isVertical,C=g.width,T=g.length,D=g.barWidth,N=g.barOffset,R=g.barMargin,L=g.X,q=g.Y,j=g.ticksLength,ue=g.ticksPadding,_e=C*(parseFloat(h.highlightsWidth)||0)/100;if(h.highlights&&_e){var Ee=h.tickSide!=="right",Ge=h.tickSide!=="left",xe=0,ze=h.highlights.length,Fe=(C-D)/2,je=h.maxValue-h.minValue,Ne=Re(w?L+Fe:L+R+N),Le=_e,Ie=w?q+T-R-N:q+Fe,ke=Re((h.ticksWidth/100+ue)*C)+(_e-h.ticksWidth/100*C),Me=Re(D+ue*C);for(u.save();xe<ze;xe++){var Ve=h.highlights[xe],$e=j*Kt(h.minValue-Ve.from)/je,ot=j*Kt((Ve.to-Ve.from)/je);u.beginPath(),u.fillStyle=Ve.color,w?(Ee&&u.rect(Ne-ke,Ie-$e,Le,-ot),Ge&&u.rect(Ne+Me,Ie-$e,Le,-ot)):(Ee&&u.rect(Ne+$e,Ie-ke,ot,Le),Ge&&u.rect(Ne+$e,Ie+Me,ot,Le)),u.fill(),u.closePath()}u.restore()}}function Ea(u,h,g,w,C){u.beginPath(),u.moveTo(h,g),u.lineTo(w,C),u.stroke(),u.closePath()}function As(u,h,g,w,C,T,D,N,R){var L=u.barDimensions,q=L.isVertical,j=L.length,ue=L.barWidth,_e=L.barOffset,Ee=L.barMargin,Ge=L.pixelRatio,xe=L.width,ze=L.X,Fe=L.Y,je=L.ticksLength,Ne=L.ticksPadding,Le=(xe-ue)/2,Ie=void 0,ke=void 0,Me=0,Ve=g.length,$e=void 0,ot=R*xe,Tt=Le-Ne*xe,Vt=Le+ue+ot+Ne*xe,aa=h instanceof Array?h:new Array(g.length).fill(h);u.save(),u.lineWidth=N*Ge;for(var Hi=je/(C-w);Me<Ve;Me++)$e=g[Me],u.strokeStyle=aa[Me],q?(ke=Fe+j-Ee-_e+(w-$e)*Hi,T&&(Ie=ze+Tt,Ea(u,Ie,ke,Re(Ie-ot),ke)),D&&(Ie=ze+Vt,Ea(u,Ie,ke,Re(Ie-ot),ke))):(Ie=ze+Ee+_e-(w-$e)*Hi,T&&(ke=Fe+Tt,Ea(u,Ie,ke,Ie,Re(ke-ot))),D&&(ke=Fe+Vt,Ea(u,Ie,Re(ke),Ie,ke-ot)));u.restore()}function Pu(u,h){var g=oe.prepareTicks(h),w=Os(g,2),C=w[0],T=w[1],D=2,N=(h.maxValue-h.minValue)/(h.majorTicks.length-1),R=h.colorMajorTicks instanceof Array?h.colorMajorTicks:new Array(h.majorTicks.length).fill(h.colorStrokeTicks||h.colorMajorTicks);if(As(u,R,h.exactTicks?h.majorTicks:h.majorTicks.map(function(ot,Tt){return h.minValue+N*Tt}),h.minValue,h.maxValue,C,T,D,h.ticksWidth/100),h.strokeTicks){var L=u.barDimensions,q=L.isVertical,j=L.length,ue=L.width,_e=L.barWidth,Ee=L.barMargin,Ge=L.barOffset,xe=L.X,ze=L.Y,Fe=L.ticksLength,je=L.pixelRatio,Ne=L.ticksPadding,Le=(ue-_e)/2+_e+Ne*ue,Ie=(ue-_e)/2-Ne*ue,ke=void 0,Me=void 0,Ve=void 0,$e=void 0;u.strokeStyle=h.colorStrokeTicks||R[0],D*=je,q?(Me=ze+j-Ee-Ge+D/2,$e=Me-Fe-D,C&&(Ve=ke=Re(xe+Ie),Ma(u,ke,Me,Ve,$e)),T&&(Ve=ke=Re(xe+Le),Ma(u,ke,Me,Ve,$e))):(ke=xe+Ee+Ge-D/2,Ve=ke+Fe+D,C&&($e=Me=Re(ze+Ie),Ma(u,ke,Me,Ve,$e)),T&&($e=Me=Re(ze+Le),Ma(u,ke,Me,Ve,$e)))}}function Ma(u,h,g,w,C){u.beginPath(),u.moveTo(h,g),u.lineTo(w,C),u.stroke(),u.closePath()}function Ou(u,h){var g=oe.prepareTicks(h),w=Os(g,2),C=w[0],T=w[1],D=[],N=h.minValue,R=Math.abs(h.minorTicks)||0,L=R?(h.maxValue-h.minValue)/(R*(h.majorTicks.length-1)):0;if(R)if(h.exactTicks)for(var q=ni.mod(h.majorTicks[0],R)||0;N<h.maxValue;N+=R)q+N<h.maxValue&&D.push(q+N);else for(;N<h.maxValue;N+=L)D.push(N);As(u,h.colorMinorTicks||h.colorStrokeTicks,D,h.minValue,h.maxValue,C,T,1,h.ticksWidthMinor/100)}function Ru(u,h){var g=u.barDimensions,w=g.isVertical,C=g.length,T=g.width,D=g.barWidth,N=g.barMargin,R=g.barOffset,L=g.X,q=g.Y,j=g.ticksLength,ue=g.ticksPadding,_e=h.maxValue-h.minValue,Ee=_e/(h.majorTicks.length-1),Ge=h.exactTicks?h.majorTicks:h.majorTicks.map(function(aa,Hi){return h.minValue+Ee*Hi}),xe=Ge.length,ze=h.numberSide!=="right",Fe=h.numberSide!=="left",je=h.fontNumbersSize*T/200,Ne=0,Le=(h.ticksWidth/100+2*ue)*T,Ie=(T-D)/2-Le,ke=(T-D)/2+D+Le,Me=void 0,Ve=void 0,$e=void 0,ot=void 0,Tt=h.colorNumbers instanceof Array?h.colorNumbers:new Array(xe).fill(h.colorNumbers),Vt=h.numbersMargin/100*T;for(u.font=oe.font(h,"Numbers",T/200),u.lineWidth=0,u.textAlign="center";Ne<xe;Ne++)u.fillStyle=Tt[Ne],ot=h.majorTicks[Ne],$e=h.exactTicks?j*((Ge[Ne]-h.minValue)/_e):Ne*j/(xe-1),w?(Ve=q+C-N-R-$e+je/3,ze&&(u.textAlign="right",u.fillText(ot,L+Ie-Vt,Ve)),Fe&&(u.textAlign="left",u.fillText(ot,L+ke+Vt,Ve))):(u.measureText(ot).width,Me=L+N+R+$e,ze&&u.fillText(ot,Me,q+Ie-Vt),Fe&&u.fillText(ot,Me,q+ke+je+Vt))}function Iu(u,h){if(h.title){var g=u.barDimensions,w=g.isVertical,C=g.width,T=g.length,D=g.baseX,N=g.baseY,R=g.titleMargin,L=h.fontTitleSize*C/200,q=Re(D+(w?C:T)/2),j=Re(N+R/2-(w?L:L/2)-.025*(w?T:C));u.save(),u.textAlign="center",u.fillStyle=h.colorTitle,u.font=oe.font(h,"Title",C/200),u.lineWidth=0,u.fillText(h.title,q,j,w?C:T),u.restore()}}function Nu(u,h){if(h.units){var g=u.barDimensions,w=g.isVertical,C=g.width,T=g.length,D=g.baseX,N=g.baseY,R=g.unitsMargin,L=h.fontUnitsSize*C/200,q=Re(D+(w?C:T)/2),j=Re(N+(w?T:C)+R/2-L/2);u.save(),u.textAlign="center",u.fillStyle=h.colorUnits,u.font=oe.font(h,"Units",C/200),u.lineWidth=0,u.fillText(oe.formatContext(h,h.units),q,j,w?C:T),u.restore()}}function Wu(u,h){if(h.needle){var g=u.barDimensions,w=g.isVertical,C=g.width,T=g.length,D=g.barWidth,N=g.barOffset,R=g.barMargin,L=g.ticksLength,q=g.X,j=g.Y,ue=g.ticksPadding,_e=h.needleSide!=="right",Ee=h.needleSide!=="left",Ge=L*(oe.normalizedValue(h).indented-h.minValue)/(h.maxValue-h.minValue),xe=(h.ticksWidth/100+ue)*C,ze=D/2+xe,Fe=ze*(h.needleEnd/100),je=void 0,Ne=void 0,Le=void 0,Ie=void 0,ke=h.needleType.toLowerCase()==="arrow"?Vu:Lu,Me=(C-D)/2,Ve=ze*(h.needleStart/100),$e=Me-xe-Ve,ot=Me+D+xe+Ve;u.save(),oe.drawNeedleShadow(u,h),w?(Le=Re(j+T-R-N-Ge),_e&&(je=Re(q+$e),Ne=je+Fe,ke(u,h,je,Le,Ne,Le,Fe)),Ee&&(je=Re(q+ot),Ne=je-Fe,ke(u,h,je,Le,Ne,Le,Fe,!0))):(je=Re(q+R+N+Ge),_e&&(Le=Re(j+$e),Ie=Le+Fe,ke(u,h,je,Le,je,Ie,Fe)),Ee&&(Le=Re(j+ot),Ie=Le-Fe,ke(u,h,je,Le,je,Ie,Fe,!0))),u.restore()}}function Ps(u,h,g,w){return h.colorNeedleEnd?oe.linearGradient(u,w?h.colorNeedleEnd:h.colorNeedle,w?h.colorNeedle:h.colorNeedleEnd,g,!u.barDimensions.isVertical):h.colorNeedle}function Lu(u,h,g,w,C,T,D,N){u.lineWidth=h.needleWidth,u.strokeStyle=Ps(u,h,D,N),u.beginPath(),u.moveTo(g,w),u.lineTo(C,T),u.stroke(),u.closePath()}function Vu(u,h,g,w,C,T,D,N){var R=Re(.4*D),L=D-R,q=g===C,j=h.needleWidth/2;u.fillStyle=Ps(u,h,D,N),u.beginPath(),q?(w>T&&(L*=-1),u.moveTo(g-j,w),u.lineTo(g+j,w),u.lineTo(g+j,w+L),u.lineTo(g,T),u.lineTo(g-j,w+L),u.lineTo(g-j,w)):(g>C&&(L*=-1),u.moveTo(g,w-j),u.lineTo(g,w+j),u.lineTo(g+L,w+j),u.lineTo(C,w),u.lineTo(g+L,w-j),u.lineTo(g,w-j)),u.fill(),u.closePath()}function Bu(u,h,g,w,C,T,D){var N=(parseFloat(h.fontValueSize)||0)*T/200,R=(.11*D-N)/2;u.barDimensions.isVertical&&oe.drawValueBox(u,h,g,w+T/2,C+D-N-R,T)}var Os=(function(){function u(h,g){var w=[],C=!0,T=!1,D=void 0;try{for(var N,R=h[Symbol.iterator]();!(C=(N=R.next()).done)&&(w.push(N.value),!g||w.length!==g);C=!0);}catch(L){T=!0,D=L}finally{try{!C&&R.return&&R.return()}finally{if(T)throw D}}return w}return function(h,g){if(Array.isArray(h))return h;if(Symbol.iterator in Object(h))return u(h,g);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),Jo=function u(h,g,w){h===null&&(h=Function.prototype);var C=Object.getOwnPropertyDescriptor(h,g);if(C===void 0){var T=Object.getPrototypeOf(h);return T===null?void 0:u(T,g,w)}if("value"in C)return C.value;var D=C.get;if(D!==void 0)return D.call(w)},zu=function u(h,g,w,C){var T=Object.getOwnPropertyDescriptor(h,g);if(T===void 0){var D=Object.getPrototypeOf(h);D!==null&&u(D,g,w,C)}else if("value"in T&&T.writable)T.value=w;else{var N=T.set;N!==void 0&&N.call(C,w)}return w},Fi=(function(){function u(h,g){for(var w=0;w<g.length;w++){var C=g[w];C.enumerable=C.enumerable||!1,C.configurable=!0,"value"in C&&(C.writable=!0),Object.defineProperty(h,C.key,C)}}return function(h,g,w){return g&&u(h.prototype,g),w&&u(h,w),h}})(),Da=null,Fu=(function(){function u(){i(this,u),this._events={},this.addListener=this.on,this.removeListener=this.off}return Fi(u,[{key:"emit",value:function(h){if(this._events[h]){for(var g=0,w=this._events[h].length,C=arguments.length,T=Array(C>1?C-1:0),D=1;D<C;D++)T[D-1]=arguments[D];for(;g<w;g++)this._events[h][g]&&this._events[h][g].apply(this,T)}}},{key:"once",value:function(h){for(var g=arguments.length,w=Array(g>1?g-1:0),C=1;C<g;C++)w[C-1]=arguments[C];for(var T=0,D=w.length,N=this;T<D;T++)(function(){var R=w[T],L=function q(){N.off(h,q),R.apply(N,arguments)};w[T]=L})();this.on.apply(this,[h].concat(w))}},{key:"on",value:function(h){this._events[h]||(this._events[h]=[]);for(var g=0,w=arguments.length<=1?0:arguments.length-1;g<w;g++)this._events[h].push(arguments.length<=g+1?void 0:arguments[g+1])}},{key:"off",value:function(h){if(this._events[h])for(var g=0,w=arguments.length<=1?0:arguments.length-1;g<w;g++)for(var C=arguments.length<=g+1?void 0:arguments[g+1],T=void 0;~(T=this._events[h].indexOf(C));)this._events[h].splice(T,1)}},{key:"removeAllListeners",value:function(h){delete this._events[h]}},{key:"listeners",get:function(){return this._events}}]),u})(),Rs=o("requestAnimationFrame")||function(u){return setTimeout(function(){return u(new Date().getTime())},1e3/60)},ta={linear:function(u){return u},quad:function(u){return Math.pow(u,2)},dequad:function(u){return 1-ta.quad(1-u)},quint:function(u){return Math.pow(u,5)},dequint:function(u){return 1-Math.pow(1-u,5)},cycle:function(u){return 1-Math.sin(Math.acos(u))},decycle:function(u){return Math.sin(Math.acos(1-u))},bounce:function(u){return 1-ta.debounce(1-u)},debounce:function(u){for(var h=0,g=1;;h+=g,g/=2)if(u>=(7-4*h)/11)return-Math.pow((11-6*h-11*u)/4,2)+Math.pow(g,2)},elastic:function(u){return 1-ta.delastic(1-u)},delastic:function(u){return Math.pow(2,10*(u-1))*Math.cos(20*Math.PI*1.5/3*u)}},er=(function(){function u(){var h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"linear",g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:250,w=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},C=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){};if(i(this,u),this.duration=g,this.rule=h,this.draw=w,this.end=C,typeof this.draw!="function")throw new TypeError("Invalid animation draw callback:",w);if(typeof this.end!="function")throw new TypeError("Invalid animation end callback:",C)}return Fi(u,[{key:"animate",value:function(h,g){var w=this;this.frame&&this.cancel();var C=window.performance&&window.performance.now?window.performance.now():o("animationStartTime")||Date.now();h=h||this.draw,g=g||this.end,this.draw=h,this.end=g,this.frame=Rs(function(T){return r(T,h,C,ta[w.rule]||w.rule,w.duration,g,w)})}},{key:"cancel",value:function(){this.frame&&((o("cancelAnimationFrame")||function(h){})(this.frame),this.frame=null)}},{key:"destroy",value:function(){this.cancel(),this.draw=null,this.end=null}}]),u})();er.rules=ta;var cn=(function(){function u(h,g,w){i(this,u),this.options=h,this.element=g.toLowerCase(),this.type=u.toDashed(w),this.Type=a[w],this.mutationsObserved=!1,this.isObservable=!!window.MutationObserver,window.GAUGES_NO_AUTO_INIT||u.domReady(this.traverse.bind(this))}return Fi(u,[{key:"isValidNode",value:function(h){return!(!h.tagName||h.tagName.toLowerCase()!==this.element||h.getAttribute("data-type")!==this.type)}},{key:"traverse",value:function(){for(var h=document.getElementsByTagName(this.element),g=0,w=h.length;g<w;g++)this.process(h[g]);this.isObservable&&!this.mutationsObserved&&(new MutationObserver(this.observe.bind(this)).observe(document.body,{childList:!0,subtree:!0,attributes:!0,characterData:!0,attributeOldValue:!0,characterDataOldValue:!0}),this.mutationsObserved=!0)}},{key:"observe",value:function(h){for(var g=0,w=h.length;g<w;g++){var C=h[g];if(C.type==="attributes"&&C.attributeName==="data-type"&&this.isValidNode(C.target)&&C.oldValue!==this.type)setTimeout(this.process.bind(this,C.target));else if(C.addedNodes&&C.addedNodes.length)for(var T=0,D=C.addedNodes.length;T<D;T++)setTimeout(this.process.bind(this,C.addedNodes[T]))}}},{key:"process",value:function(h){var g=this;if(!this.isValidNode(h))return null;var w=void 0,C=JSON.parse(JSON.stringify(this.options)),T=null;for(w in C)if(C.hasOwnProperty(w)){var D=u.toAttributeName(w),N=u.parse(h.getAttribute(D));N!=null&&(C[w]=N)}return C.renderTo=h,T=new this.Type(C),T.draw&&T.draw(),this.isObservable&&(T.observer=new MutationObserver(function(R){R.forEach(function(L){if(L.type==="attributes"){var q=L.attributeName.toLowerCase(),j=h.getAttribute(q).toLowerCase();if(q==="data-type"&&j&&j!==g.type)T.observer.disconnect(),delete T.observer,T.destroy&&T.destroy();else if(q.substr(0,5)==="data-"){var ue=q.substr(5).split("-").map(function(Ee,Ge){return Ge?Ee.charAt(0).toUpperCase()+Ee.substr(1):Ee}).join(""),_e={};_e[ue]=u.parse(h.getAttribute(L.attributeName)),ue==="value"?T&&(T.value=_e[ue]):T.update&&T.update(_e)}}})}),T.observer.observe(h,{attributes:!0})),T}}],[{key:"parse",value:function(h){if(h==="true")return!0;if(h==="false")return!1;if(h!=="undefined"){if(h==="null")return null;if(/^[-+#.\w\d\s]+(?:,[-+#.\w\d\s]*)+$/.test(h))return h.split(",");try{return JSON.parse(h)}catch{}return h}}},{key:"toDashed",value:function(h){for(var g=h.split(/(?=[A-Z])/),w=1,C=g.length,T=g[0].toLowerCase();w<C;w++)T+="-"+g[w].toLowerCase();return T}},{key:"toCamelCase",value:function(h){for(var g=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],w=h.split(/-/),C=0,T=w.length,D="";C<T;C++)D+=C||g?w[C][0].toUpperCase()+w[C].substr(1).toLowerCase():w[C].toLowerCase();return D}},{key:"toAttributeName",value:function(h){return"data-"+u.toDashed(h)}},{key:"domReady",value:function(h){if(/comp|inter|loaded/.test((window.document||{}).readyState+""))return h();window.addEventListener?window.addEventListener("DOMContentLoaded",h,!1):window.attachEvent&&window.attachEvent("onload",h)}}]),u})(),Yt=(function(){function u(h,g,w){i(this,u),u.collection.push(this),this.width=g||0,this.height=w||0,this.element=h,this.init()}return Fi(u,[{key:"init",value:function(){var h=u.pixelRatio;this.element.width=this.width*h,this.element.height=this.height*h,this.element.style.width=this.width+"px",this.element.style.height=this.height+"px",this.elementClone=this.element.cloneNode(!0),this.context=this.element.getContext("2d"),this.contextClone=this.elementClone.getContext("2d"),this.drawWidth=this.element.width,this.drawHeight=this.element.height,this.drawX=this.drawWidth/2,this.drawY=this.drawHeight/2,this.minSide=this.drawX<this.drawY?this.drawX:this.drawY,this.contextClone.translate(this.drawX,this.drawY),this.elementClone.initialized=!1,this.context.translate(this.drawX,this.drawY),this.context.max=this.contextClone.max=this.minSide,this.context.maxRadius=this.contextClone.maxRadius=null}},{key:"destroy",value:function(){var h=u.collection.indexOf(this);~h&&u.collection.splice(h,1),this.context.clearRect(-this.drawX,-this.drawY,this.drawWidth,this.drawHeight),this.context.max=null,delete this.context.max,this.context.maxRadius=null,delete this.context.maxRadius,this.context=null,this.contextClone=null,this.elementClone=null,this.element=null,this.onRedraw=null}},{key:"commit",value:function(){var h=u.pixelRatio;return h!==1&&this.contextClone.scale(h,h),this}},{key:"redraw",value:function(){return this.init(),this.onRedraw&&this.onRedraw(),this}}],[{key:"redraw",value:function(){for(var h=0,g=u.collection.length;h<g;h++)u.collection[h].redraw()}},{key:"pixelRatio",get:function(){return window.devicePixelRatio||1}}]),u})();Yt.collection=[],window.matchMedia&&window.matchMedia("screen and (min-resolution: 2dppx)").addListener(Yt.redraw);var tr={renderTo:null,width:0,height:0,minValue:0,maxValue:100,value:0,units:!1,exactTicks:!1,majorTicks:[0,20,40,60,80,100],minorTicks:10,strokeTicks:!0,animatedValue:!1,animateOnInit:!1,title:!1,borders:!0,numbersMargin:1,listeners:null,valueInt:3,valueDec:2,majorTicksInt:1,majorTicksDec:0,animation:!0,animationDuration:500,animationRule:"cycle",colorPlate:"#fff",colorPlateEnd:"",colorMajorTicks:"#444",colorMinorTicks:"#666",colorStrokeTicks:"",colorTitle:"#888",colorUnits:"#888",colorNumbers:"#444",colorNeedle:"rgba(240,128,128,1)",colorNeedleEnd:"rgba(255,160,122,.9)",colorValueText:"#444",colorValueTextShadow:"rgba(0,0,0,0.3)",colorBorderShadow:"rgba(0,0,0,0.5)",colorBorderOuter:"#ddd",colorBorderOuterEnd:"#aaa",colorBorderMiddle:"#eee",colorBorderMiddleEnd:"#f0f0f0",colorBorderInner:"#fafafa",colorBorderInnerEnd:"#ccc",colorValueBoxRect:"#888",colorValueBoxRectEnd:"#666",colorValueBoxBackground:"#babab2",colorValueBoxShadow:"rgba(0,0,0,1)",colorNeedleShadowUp:"rgba(2,255,255,0.2)",colorNeedleShadowDown:"rgba(188,143,143,0.45)",colorBarStroke:"#222",colorBar:"#ccc",colorBarProgress:"#888",colorBarShadow:"#000",fontNumbers:"Arial",fontTitle:"Arial",fontUnits:"Arial",fontValue:"Arial",fontNumbersSize:20,fontTitleSize:24,fontUnitsSize:22,fontValueSize:26,fontNumbersStyle:"normal",fontTitleStyle:"normal",fontUnitsStyle:"normal",fontValueStyle:"normal",fontNumbersWeight:"normal",fontTitleWeight:"normal",fontUnitsWeight:"normal",fontValueWeight:"normal",needle:!0,needleShadow:!0,needleType:"arrow",needleStart:5,needleEnd:85,needleWidth:4,borderOuterWidth:3,borderMiddleWidth:3,borderInnerWidth:3,borderShadowWidth:3,valueBox:!0,valueBoxStroke:5,valueBoxWidth:0,valueText:"",valueTextShadow:!0,valueBoxBorderRadius:2.5,highlights:[{from:20,to:60,color:"#eee"},{from:60,to:80,color:"#ccc"},{from:80,to:100,color:"#999"}],highlightsWidth:15,highlightsLineCap:"butt",barWidth:20,barStrokeWidth:0,barProgress:!0,barShadow:0};l.prototype=Object.create(Array.prototype),l.prototype.constructor=l,l.prototype.get=function(u){if(typeof u=="string")for(var h=0,g=this.length;h<g;h++){var w=this[h].options.renderTo.tagName?this[h].options.renderTo:document.getElementById(this[h].options.renderTo||"");if(w.getAttribute("id")===u)return this[h]}else if(typeof u=="number")return this[u];return null};var ir="2.2.1",Re=Math.round,Kt=Math.abs,ia=new l;ia.version=ir;var ni=(function(u){function h(g){i(this,h);var w=e(this,(h.__proto__||Object.getPrototypeOf(h)).call(this)),C=w.constructor.name;if(C==="BaseGauge")throw new TypeError("Attempt to instantiate abstract class!");if(ia.push(w),g.listeners&&Object.keys(g.listeners).forEach(function(D){(g.listeners[D]instanceof Array?g.listeners[D]:[g.listeners[D]]).forEach(function(N){w.on(D,N)})}),w.version=ir,w.type=a[C]||h,w.initialized=!1,g.minValue=parseFloat(g.minValue),g.maxValue=parseFloat(g.maxValue),g.value=parseFloat(g.value)||0,g.borders||(g.borderInnerWidth=g.borderMiddleWidth=g.borderOuterWidth=0),!g.renderTo)throw TypeError("Canvas element was not specified when creating the Gauge object!");var T=g.renderTo.tagName?g.renderTo:document.getElementById(g.renderTo);if(!(T instanceof HTMLCanvasElement))throw TypeError("Given gauge canvas element is invalid!");return g.width=parseFloat(g.width)||0,g.height=parseFloat(g.height)||0,g.width&&g.height||(g.width||(g.width=T.parentNode?T.parentNode.offsetWidth:T.offsetWidth),g.height||(g.height=T.parentNode?T.parentNode.offsetHeight:T.offsetHeight)),w.options=g||{},w.options.animateOnInit&&(w._value=w.options.value,w.options.value=w.options.minValue),w.canvas=new Yt(T,g.width,g.height),w.canvas.onRedraw=w.draw.bind(w),w.animation=new er(g.animationRule,g.animationDuration),w}return t(h,u),Fi(h,[{key:"update",value:function(g){return Object.assign(this.options,this.type.configure(g||{})),this.canvas.width=this.options.width,this.canvas.height=this.options.height,this.animation.rule=this.options.animationRule,this.animation.duration=this.options.animationDuration,this.canvas.redraw(),this}},{key:"destroy",value:function(){var g=ia.indexOf(this);~g&&ia.splice(g,1),this.canvas.destroy(),this.canvas=null,this.animation.destroy(),this.animation=null,this.emit("destroy")}},{key:"draw",value:function(){return this.options.animateOnInit&&!this.initialized&&(this.value=this._value,this.initialized=!0,this.emit("init")),this.emit("render"),this}},{key:"value",set:function(g){var w=this;g=h.ensureValue(g,this.options.minValue);var C=this.options.value;if(g!==C)if(this.options.animation){if(this.animation.frame&&(this.options.value=this._value,this._value===g))return this.animation.cancel(),void delete this._value;this._value===void 0&&(this._value=g),this.emit("animationStart"),this.animation.animate(function(T){var D=C+(g-C)*T;w.options.animatedValue&&w.emit("value",D,w.value),w.options.value=D,w.draw(),w.emit("animate",T,w.options.value)},function(){w._value!==void 0&&(w.emit("value",w._value,w.value),w.options.value=w._value,delete w._value),w.draw(),w.emit("animationEnd"),w.animation.frame=null})}else this.emit("value",g,this.value),this.options.value=g,this.draw()},get:function(){return this._value===void 0?this.options.value:this._value}}],[{key:"configure",value:function(g){return g}},{key:"initialize",value:function(g,w){return new cn(w,"canvas",g)}},{key:"fromElement",value:function(g){var w=cn.toCamelCase(g.getAttribute("data-type")),C=g.attributes,T=0,D=C.length,N={};if(w){for(/Gauge$/.test(w)||(w+="Gauge");T<D;T++)N[cn.toCamelCase(C[T].name.replace(/^data-/,""),!1)]=cn.parse(C[T].value);new cn(N,g.tagName,w).process(g)}}},{key:"ensureValue",value:function(g){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return g=parseFloat(g),!isNaN(g)&&isFinite(g)||(g=parseFloat(w)||0),g}},{key:"mod",value:function(g,w){return(g%w+w)%w}},{key:"version",get:function(){return ir}}]),h})(Fu);a!==void 0&&(a.BaseGauge=ni,a.gauges=(window.document||{}).gauges=ia);var Hu=/{([_a-zA-Z]+[_a-zA-Z0-9]*)}/g,oe={roundRect:c,padValue:m,formatMajorTickNumber:f,radians:y,radialPoint:S,linearGradient:x,drawNeedleShadow:V,drawValueBox:Oe,verifyError:d,prepareTicks:s,font:H,normalizedValue:Be,formatContext:p},na=Math.PI,nr=na/2,Is=Object.assign({},tr,{ticksAngle:270,startAngle:45,colorNeedleCircleOuter:"#f0f0f0",colorNeedleCircleOuterEnd:"#ccc",colorNeedleCircleInner:"#e8e8e8",colorNeedleCircleInnerEnd:"#f5f5f5",needleCircleSize:10,needleCircleInner:!0,needleCircleOuter:!0,needleStart:20,animationTarget:"needle",useMinPath:!1,barWidth:0,barStartPosition:"left"}),Uu=(function(u){function h(g){return i(this,h),g=Object.assign({},Is,g||{}),e(this,(h.__proto__||Object.getPrototypeOf(h)).call(this,h.configure(g)))}return t(h,u),Fi(h,[{key:"draw",value:function(){try{var g=this.canvas,w=[-g.drawX,-g.drawY,g.drawWidth,g.drawHeight],C=w[0],T=w[1],D=w[2],N=w[3],R=this.options;if(R.animationTarget==="needle"){if(!g.elementClone.initialized){var L=g.contextClone;L.clearRect(C,T,D,N),this.emit("beforePlate"),Te(L,R),this.emit("beforeHighlights"),Ue(L,R),this.emit("beforeMinorTicks"),ht(L,R),this.emit("beforeMajorTicks"),Xe(L,R),this.emit("beforeNumbers"),ee(L,R),this.emit("beforeTitle"),de(L,R),this.emit("beforeUnits"),pe(L,R),g.elementClone.initialized=!0}this.canvas.commit(),g.context.clearRect(C,T,D,N),g.context.drawImage(g.elementClone,C,T,D,N),this.emit("beforeProgressBar"),yt(g.context,R),this.emit("beforeValueBox"),dt(g.context,R,$t(this)),this.emit("beforeNeedle"),We(g.context,R)}else{var q=-oe.radians((R.value-R.minValue)/(R.maxValue-R.minValue)*R.ticksAngle);if(g.context.clearRect(C,T,D,N),this.emit("beforePlate"),Te(g.context,R),g.context.rotate(q),this.emit("beforeHighlights"),Ue(g.context,R),this.emit("beforeMinorTicks"),ht(g.context,R),this.emit("beforeMajorTicks"),Xe(g.context,R),this.emit("beforeNumbers"),ee(g.context,R),this.emit("beforeProgressBar"),yt(g.context,R),g.context.rotate(-q),!g.elementClone.initialized){var j=g.contextClone;j.clearRect(C,T,D,N),this.emit("beforeTitle"),de(j,R),this.emit("beforeUnits"),pe(j,R),this.emit("beforeNeedle"),We(j,R),g.elementClone.initialized=!0}g.context.drawImage(g.elementClone,C,T,D,N)}this.emit("beforeValueBox"),dt(g.context,R,$t(this)),Jo(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"draw",this).call(this)}catch(ue){oe.verifyError(ue)}return this}},{key:"value",set:function(g){g=ni.ensureValue(g,this.options.minValue),this.options.animation&&this.options.ticksAngle===360&&this.options.useMinPath&&(this._value=g,g=this.options.value+((g-this.options.value)%360+540)%360-180),zu(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"value",g,this)},get:function(){return Jo(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"value",this)}}],[{key:"configure",value:function(g){return g.barWidth>50&&(g.barWidth=50),isNaN(g.startAngle)&&(g.startAngle=45),isNaN(g.ticksAngle)&&(g.ticksAngle=270),g.ticksAngle>360&&(g.ticksAngle=360),g.ticksAngle<0&&(g.ticksAngle=0),g.startAngle<0&&(g.startAngle=0),g.startAngle>360&&(g.startAngle=360),g}}]),h})(ni);a!==void 0&&(a.RadialGauge=Uu),ni.initialize("RadialGauge",Is);var Ns=Object.assign({},tr,{borderRadius:0,barBeginCircle:30,colorBarEnd:"",colorBarProgressEnd:"",needleWidth:6,tickSide:"both",needleSide:"both",numberSide:"both",ticksWidth:10,ticksWidthMinor:5,ticksPadding:5,barLength:85,fontTitleSize:26,highlightsWidth:10}),Gu=(function(u){function h(g){return i(this,h),g=Object.assign({},Ns,g||{}),e(this,(h.__proto__||Object.getPrototypeOf(h)).call(this,h.configure(g)))}return t(h,u),Fi(h,[{key:"draw",value:function(){try{var g=this.canvas,w=[-g.drawX,-g.drawY,g.drawWidth,g.drawHeight],C=w[0],T=w[1],D=w[2],N=w[3],R=this.options;if(!g.elementClone.initialized){var L=g.contextClone;L.clearRect(C,T,D,N),this.emit("beforePlate"),this.drawBox=Zo(L,R,C,T,D,N),this.emit("beforeBar"),xt.apply(void 0,[L,R].concat(n(this.drawBox))),g.contextClone.barDimensions=L.barDimensions,this.emit("beforeHighlights"),Au(L,R),this.emit("beforeMinorTicks"),Ou(L,R),this.emit("beforeMajorTicks"),Pu(L,R),this.emit("beforeNumbers"),Ru(L,R),this.emit("beforeTitle"),Iu(L,R),this.emit("beforeUnits"),Nu(L,R),g.elementClone.initialized=!0}this.canvas.commit(),g.context.clearRect(C,T,D,N),g.context.drawImage(g.elementClone,C,T,D,N),this.emit("beforeProgressBar"),ea.apply(void 0,[g.context,R].concat(n(this.drawBox))),this.emit("beforeNeedle"),Wu(g.context,R),this.emit("beforeValueBox"),Bu.apply(void 0,[g.context,R,R.animatedValue?this.options.value:this.value].concat(n(this.drawBox))),Jo(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"draw",this).call(this)}catch(q){oe.verifyError(q)}return this}}],[{key:"configure",value:function(g){return g.barStrokeWidth>=g.barWidth&&(g.barStrokeWidth=Re(g.barWidth/2)),g.hasLeft=zi("right",g),g.hasRight=zi("left",g),g.value>g.maxValue&&(g.value=g.maxValue),g.value<g.minValue&&(g.value=g.minValue),ni.configure(g)}}]),h})(ni);a!==void 0&&(a.LinearGauge=Gu),ni.initialize("LinearGauge",Ns),typeof To<"u"&&Object.assign(a,{Collection:l,GenericOptions:tr,Animation:er,BaseGauge:ni,drawings:oe,SmartCanvas:Yt,DomObserver:cn,vendorize:o})})(typeof To<"u"?To.exports:window)});var Zr=Bs(Po=>{(function(){"use strict";var a=function(){this.init()};a.prototype={init:function(){var s=this||n;return s._counter=1e3,s._html5AudioPool=[],s.html5PoolSize=10,s._codecs={},s._howls=[],s._muted=!1,s._volume=1,s._canPlayEvent="canplaythrough",s._navigator=typeof window<"u"&&window.navigator?window.navigator:null,s.masterGain=null,s.noAudio=!1,s.usingWebAudio=!0,s.autoSuspend=!0,s.ctx=null,s.autoUnlock=!0,s._setup(),s},volume:function(s){var c=this||n;if(s=parseFloat(s),c.ctx||p(),typeof s<"u"&&s>=0&&s<=1){if(c._volume=s,c._muted)return c;c.usingWebAudio&&c.masterGain.gain.setValueAtTime(s,n.ctx.currentTime);for(var m=0;m<c._howls.length;m++)if(!c._howls[m]._webAudio)for(var f=c._howls[m]._getSoundIds(),y=0;y<f.length;y++){var S=c._howls[m]._soundById(f[y]);S&&S._node&&(S._node.volume=S._volume*s)}return c}return c._volume},mute:function(s){var c=this||n;c.ctx||p(),c._muted=s,c.usingWebAudio&&c.masterGain.gain.setValueAtTime(s?0:c._volume,n.ctx.currentTime);for(var m=0;m<c._howls.length;m++)if(!c._howls[m]._webAudio)for(var f=c._howls[m]._getSoundIds(),y=0;y<f.length;y++){var S=c._howls[m]._soundById(f[y]);S&&S._node&&(S._node.muted=s?!0:S._muted)}return c},stop:function(){for(var s=this||n,c=0;c<s._howls.length;c++)s._howls[c].stop();return s},unload:function(){for(var s=this||n,c=s._howls.length-1;c>=0;c--)s._howls[c].unload();return s.usingWebAudio&&s.ctx&&typeof s.ctx.close<"u"&&(s.ctx.close(),s.ctx=null,p()),s},codecs:function(s){return(this||n)._codecs[s.replace(/^x-/,"")]},_setup:function(){var s=this||n;if(s.state=s.ctx&&s.ctx.state||"suspended",s._autoSuspend(),!s.usingWebAudio)if(typeof Audio<"u")try{var c=new Audio;typeof c.oncanplaythrough>"u"&&(s._canPlayEvent="canplay")}catch{s.noAudio=!0}else s.noAudio=!0;try{var c=new Audio;c.muted&&(s.noAudio=!0)}catch{}return s.noAudio||s._setupCodecs(),s},_setupCodecs:function(){var s=this||n,c=null;try{c=typeof Audio<"u"?new Audio:null}catch{return s}if(!c||typeof c.canPlayType!="function")return s;var m=c.canPlayType("audio/mpeg;").replace(/^no$/,""),f=s._navigator?s._navigator.userAgent:"",y=f.match(/OPR\/(\d+)/g),S=y&&parseInt(y[0].split("/")[1],10)<33,x=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,V=f.match(/Version\/(.*?) /),H=x&&V&&parseInt(V[1],10)<15;return s._codecs={mp3:!!(!S&&(m||c.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!m,opus:!!c.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!c.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!c.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(c.canPlayType('audio/wav; codecs="1"')||c.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!c.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!c.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(c.canPlayType("audio/x-m4a;")||c.canPlayType("audio/m4a;")||c.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(c.canPlayType("audio/x-m4b;")||c.canPlayType("audio/m4b;")||c.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(c.canPlayType("audio/x-mp4;")||c.canPlayType("audio/mp4;")||c.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!H&&c.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!H&&c.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!c.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(c.canPlayType("audio/x-flac;")||c.canPlayType("audio/flac;")).replace(/^no$/,"")},s},_unlockAudio:function(){var s=this||n;if(!(s._audioUnlocked||!s.ctx)){s._audioUnlocked=!1,s.autoUnlock=!1,!s._mobileUnloaded&&s.ctx.sampleRate!==44100&&(s._mobileUnloaded=!0,s.unload()),s._scratchBuffer=s.ctx.createBuffer(1,1,22050);var c=function(m){for(;s._html5AudioPool.length<s.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,s._releaseHtml5Audio(f)}catch{s.noAudio=!0;break}for(var y=0;y<s._howls.length;y++)if(!s._howls[y]._webAudio)for(var S=s._howls[y]._getSoundIds(),x=0;x<S.length;x++){var V=s._howls[y]._soundById(S[x]);V&&V._node&&!V._node._unlocked&&(V._node._unlocked=!0,V._node.load())}s._autoResume();var H=s.ctx.createBufferSource();H.buffer=s._scratchBuffer,H.connect(s.ctx.destination),typeof H.start>"u"?H.noteOn(0):H.start(0),typeof s.ctx.resume=="function"&&s.ctx.resume(),H.onended=function(){H.disconnect(0),s._audioUnlocked=!0,document.removeEventListener("touchstart",c,!0),document.removeEventListener("touchend",c,!0),document.removeEventListener("click",c,!0),document.removeEventListener("keydown",c,!0);for(var Z=0;Z<s._howls.length;Z++)s._howls[Z]._emit("unlock")}};return document.addEventListener("touchstart",c,!0),document.addEventListener("touchend",c,!0),document.addEventListener("click",c,!0),document.addEventListener("keydown",c,!0),s}},_obtainHtml5Audio:function(){var s=this||n;if(s._html5AudioPool.length)return s._html5AudioPool.pop();var c=new Audio().play();return c&&typeof Promise<"u"&&(c instanceof Promise||typeof c.then=="function")&&c.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(s){var c=this||n;return s._unlocked&&c._html5AudioPool.push(s),c},_autoSuspend:function(){var s=this;if(!(!s.autoSuspend||!s.ctx||typeof s.ctx.suspend>"u"||!n.usingWebAudio)){for(var c=0;c<s._howls.length;c++)if(s._howls[c]._webAudio){for(var m=0;m<s._howls[c]._sounds.length;m++)if(!s._howls[c]._sounds[m]._paused)return s}return s._suspendTimer&&clearTimeout(s._suspendTimer),s._suspendTimer=setTimeout(function(){if(s.autoSuspend){s._suspendTimer=null,s.state="suspending";var f=function(){s.state="suspended",s._resumeAfterSuspend&&(delete s._resumeAfterSuspend,s._autoResume())};s.ctx.suspend().then(f,f)}},3e4),s}},_autoResume:function(){var s=this;if(!(!s.ctx||typeof s.ctx.resume>"u"||!n.usingWebAudio))return s.state==="running"&&s.ctx.state!=="interrupted"&&s._suspendTimer?(clearTimeout(s._suspendTimer),s._suspendTimer=null):s.state==="suspended"||s.state==="running"&&s.ctx.state==="interrupted"?(s.ctx.resume().then(function(){s.state="running";for(var c=0;c<s._howls.length;c++)s._howls[c]._emit("resume")}),s._suspendTimer&&(clearTimeout(s._suspendTimer),s._suspendTimer=null)):s.state==="suspending"&&(s._resumeAfterSuspend=!0),s}};var n=new a,e=function(s){var c=this;if(!s.src||s.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}c.init(s)};e.prototype={init:function(s){var c=this;return n.ctx||p(),c._autoplay=s.autoplay||!1,c._format=typeof s.format!="string"?s.format:[s.format],c._html5=s.html5||!1,c._muted=s.mute||!1,c._loop=s.loop||!1,c._pool=s.pool||5,c._preload=typeof s.preload=="boolean"||s.preload==="metadata"?s.preload:!0,c._rate=s.rate||1,c._sprite=s.sprite||{},c._src=typeof s.src!="string"?s.src:[s.src],c._volume=s.volume!==void 0?s.volume:1,c._xhr={method:s.xhr&&s.xhr.method?s.xhr.method:"GET",headers:s.xhr&&s.xhr.headers?s.xhr.headers:null,withCredentials:s.xhr&&s.xhr.withCredentials?s.xhr.withCredentials:!1},c._duration=0,c._state="unloaded",c._sounds=[],c._endTimers={},c._queue=[],c._playLock=!1,c._onend=s.onend?[{fn:s.onend}]:[],c._onfade=s.onfade?[{fn:s.onfade}]:[],c._onload=s.onload?[{fn:s.onload}]:[],c._onloaderror=s.onloaderror?[{fn:s.onloaderror}]:[],c._onplayerror=s.onplayerror?[{fn:s.onplayerror}]:[],c._onpause=s.onpause?[{fn:s.onpause}]:[],c._onplay=s.onplay?[{fn:s.onplay}]:[],c._onstop=s.onstop?[{fn:s.onstop}]:[],c._onmute=s.onmute?[{fn:s.onmute}]:[],c._onvolume=s.onvolume?[{fn:s.onvolume}]:[],c._onrate=s.onrate?[{fn:s.onrate}]:[],c._onseek=s.onseek?[{fn:s.onseek}]:[],c._onunlock=s.onunlock?[{fn:s.onunlock}]:[],c._onresume=[],c._webAudio=n.usingWebAudio&&!c._html5,typeof n.ctx<"u"&&n.ctx&&n.autoUnlock&&n._unlockAudio(),n._howls.push(c),c._autoplay&&c._queue.push({event:"play",action:function(){c.play()}}),c._preload&&c._preload!=="none"&&c.load(),c},load:function(){var s=this,c=null;if(n.noAudio){s._emit("loaderror",null,"No audio support.");return}typeof s._src=="string"&&(s._src=[s._src]);for(var m=0;m<s._src.length;m++){var f,y;if(s._format&&s._format[m])f=s._format[m];else{if(y=s._src[m],typeof y!="string"){s._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(y),f||(f=/\.([^.]+)$/.exec(y.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&n.codecs(f)){c=s._src[m];break}}if(!c){s._emit("loaderror",null,"No codec support for selected audio sources.");return}return s._src=c,s._state="loading",window.location.protocol==="https:"&&c.slice(0,5)==="http:"&&(s._html5=!0,s._webAudio=!1),new t(s),s._webAudio&&o(s),s},play:function(s,c){var m=this,f=null;if(typeof s=="number")f=s,s=null;else{if(typeof s=="string"&&m._state==="loaded"&&!m._sprite[s])return null;if(typeof s>"u"&&(s="__default",!m._playLock)){for(var y=0,S=0;S<m._sounds.length;S++)m._sounds[S]._paused&&!m._sounds[S]._ended&&(y++,f=m._sounds[S]._id);y===1?s=null:f=null}}var x=f?m._soundById(f):m._inactiveSound();if(!x)return null;if(f&&!s&&(s=x._sprite||"__default"),m._state!=="loaded"){x._sprite=s,x._ended=!1;var V=x._id;return m._queue.push({event:"play",action:function(){m.play(V)}}),V}if(f&&!x._paused)return c||m._loadQueue("play"),x._id;m._webAudio&&n._autoResume();var H=Math.max(0,x._seek>0?x._seek:m._sprite[s][0]/1e3),Z=Math.max(0,(m._sprite[s][0]+m._sprite[s][1])/1e3-H),me=Z*1e3/Math.abs(x._rate),Oe=m._sprite[s][0]/1e3,Be=(m._sprite[s][0]+m._sprite[s][1])/1e3;x._sprite=s,x._ended=!1;var ye=function(){x._paused=!1,x._seek=H,x._start=Oe,x._stop=Be,x._loop=!!(x._loop||m._sprite[s][2])};if(H>=Be){m._ended(x);return}var X=x._node;if(m._webAudio){var Te=function(){m._playLock=!1,ye(),m._refreshBuffer(x);var Xe=x._muted||m._muted?0:x._volume;X.gain.setValueAtTime(Xe,n.ctx.currentTime),x._playStart=n.ctx.currentTime,typeof X.bufferSource.start>"u"?x._loop?X.bufferSource.noteGrainOn(0,H,86400):X.bufferSource.noteGrainOn(0,H,Z):x._loop?X.bufferSource.start(0,H,86400):X.bufferSource.start(0,H,Z),me!==1/0&&(m._endTimers[x._id]=setTimeout(m._ended.bind(m,x),me)),c||setTimeout(function(){m._emit("play",x._id),m._loadQueue()},0)};n.state==="running"&&n.ctx.state!=="interrupted"?Te():(m._playLock=!0,m.once("resume",Te),m._clearTimer(x._id))}else{var Ue=function(){X.currentTime=H,X.muted=x._muted||m._muted||n._muted||X.muted,X.volume=x._volume*n.volume(),X.playbackRate=x._rate;try{var Xe=X.play();if(Xe&&typeof Promise<"u"&&(Xe instanceof Promise||typeof Xe.then=="function")?(m._playLock=!0,ye(),Xe.then(function(){m._playLock=!1,X._unlocked=!0,c?m._loadQueue():m._emit("play",x._id)}).catch(function(){m._playLock=!1,m._emit("playerror",x._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),x._ended=!0,x._paused=!0})):c||(m._playLock=!1,ye(),m._emit("play",x._id)),X.playbackRate=x._rate,X.paused){m._emit("playerror",x._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}s!=="__default"||x._loop?m._endTimers[x._id]=setTimeout(m._ended.bind(m,x),me):(m._endTimers[x._id]=function(){m._ended(x),X.removeEventListener("ended",m._endTimers[x._id],!1)},X.addEventListener("ended",m._endTimers[x._id],!1))}catch(lt){m._emit("playerror",x._id,lt)}};X.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(X.src=m._src,X.load());var ht=window&&window.ejecta||!X.readyState&&n._navigator.isCocoonJS;if(X.readyState>=3||ht)Ue();else{m._playLock=!0,m._state="loading";var Qe=function(){m._state="loaded",Ue(),X.removeEventListener(n._canPlayEvent,Qe,!1)};X.addEventListener(n._canPlayEvent,Qe,!1),m._clearTimer(x._id)}}return x._id},pause:function(s){var c=this;if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"pause",action:function(){c.pause(s)}}),c;for(var m=c._getSoundIds(s),f=0;f<m.length;f++){c._clearTimer(m[f]);var y=c._soundById(m[f]);if(y&&!y._paused&&(y._seek=c.seek(m[f]),y._rateSeek=0,y._paused=!0,c._stopFade(m[f]),y._node))if(c._webAudio){if(!y._node.bufferSource)continue;typeof y._node.bufferSource.stop>"u"?y._node.bufferSource.noteOff(0):y._node.bufferSource.stop(0),c._cleanBuffer(y._node)}else(!isNaN(y._node.duration)||y._node.duration===1/0)&&y._node.pause();arguments[1]||c._emit("pause",y?y._id:null)}return c},stop:function(s,c){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"stop",action:function(){m.stop(s)}}),m;for(var f=m._getSoundIds(s),y=0;y<f.length;y++){m._clearTimer(f[y]);var S=m._soundById(f[y]);S&&(S._seek=S._start||0,S._rateSeek=0,S._paused=!0,S._ended=!0,m._stopFade(f[y]),S._node&&(m._webAudio?S._node.bufferSource&&(typeof S._node.bufferSource.stop>"u"?S._node.bufferSource.noteOff(0):S._node.bufferSource.stop(0),m._cleanBuffer(S._node)):(!isNaN(S._node.duration)||S._node.duration===1/0)&&(S._node.currentTime=S._start||0,S._node.pause(),S._node.duration===1/0&&m._clearSound(S._node))),c||m._emit("stop",S._id))}return m},mute:function(s,c){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"mute",action:function(){m.mute(s,c)}}),m;if(typeof c>"u")if(typeof s=="boolean")m._muted=s;else return m._muted;for(var f=m._getSoundIds(c),y=0;y<f.length;y++){var S=m._soundById(f[y]);S&&(S._muted=s,S._interval&&m._stopFade(S._id),m._webAudio&&S._node?S._node.gain.setValueAtTime(s?0:S._volume,n.ctx.currentTime):S._node&&(S._node.muted=n._muted?!0:s),m._emit("mute",S._id))}return m},volume:function(){var s=this,c=arguments,m,f;if(c.length===0)return s._volume;if(c.length===1||c.length===2&&typeof c[1]>"u"){var y=s._getSoundIds(),S=y.indexOf(c[0]);S>=0?f=parseInt(c[0],10):m=parseFloat(c[0])}else c.length>=2&&(m=parseFloat(c[0]),f=parseInt(c[1],10));var x;if(typeof m<"u"&&m>=0&&m<=1){if(s._state!=="loaded"||s._playLock)return s._queue.push({event:"volume",action:function(){s.volume.apply(s,c)}}),s;typeof f>"u"&&(s._volume=m),f=s._getSoundIds(f);for(var V=0;V<f.length;V++)x=s._soundById(f[V]),x&&(x._volume=m,c[2]||s._stopFade(f[V]),s._webAudio&&x._node&&!x._muted?x._node.gain.setValueAtTime(m,n.ctx.currentTime):x._node&&!x._muted&&(x._node.volume=m*n.volume()),s._emit("volume",x._id))}else return x=f?s._soundById(f):s._sounds[0],x?x._volume:0;return s},fade:function(s,c,m,f){var y=this;if(y._state!=="loaded"||y._playLock)return y._queue.push({event:"fade",action:function(){y.fade(s,c,m,f)}}),y;s=Math.min(Math.max(0,parseFloat(s)),1),c=Math.min(Math.max(0,parseFloat(c)),1),m=parseFloat(m),y.volume(s,f);for(var S=y._getSoundIds(f),x=0;x<S.length;x++){var V=y._soundById(S[x]);if(V){if(f||y._stopFade(S[x]),y._webAudio&&!V._muted){var H=n.ctx.currentTime,Z=H+m/1e3;V._volume=s,V._node.gain.setValueAtTime(s,H),V._node.gain.linearRampToValueAtTime(c,Z)}y._startFadeInterval(V,s,c,m,S[x],typeof f>"u")}}return y},_startFadeInterval:function(s,c,m,f,y,S){var x=this,V=c,H=m-c,Z=Math.abs(H/.01),me=Math.max(4,Z>0?f/Z:f),Oe=Date.now();s._fadeTo=m,s._interval=setInterval(function(){var Be=(Date.now()-Oe)/f;Oe=Date.now(),V+=H*Be,V=Math.round(V*100)/100,H<0?V=Math.max(m,V):V=Math.min(m,V),x._webAudio?s._volume=V:x.volume(V,s._id,!0),S&&(x._volume=V),(m<c&&V<=m||m>c&&V>=m)&&(clearInterval(s._interval),s._interval=null,s._fadeTo=null,x.volume(m,s._id),x._emit("fade",s._id))},me)},_stopFade:function(s){var c=this,m=c._soundById(s);return m&&m._interval&&(c._webAudio&&m._node.gain.cancelScheduledValues(n.ctx.currentTime),clearInterval(m._interval),m._interval=null,c.volume(m._fadeTo,s),m._fadeTo=null,c._emit("fade",s)),c},loop:function(){var s=this,c=arguments,m,f,y;if(c.length===0)return s._loop;if(c.length===1)if(typeof c[0]=="boolean")m=c[0],s._loop=m;else return y=s._soundById(parseInt(c[0],10)),y?y._loop:!1;else c.length===2&&(m=c[0],f=parseInt(c[1],10));for(var S=s._getSoundIds(f),x=0;x<S.length;x++)y=s._soundById(S[x]),y&&(y._loop=m,s._webAudio&&y._node&&y._node.bufferSource&&(y._node.bufferSource.loop=m,m&&(y._node.bufferSource.loopStart=y._start||0,y._node.bufferSource.loopEnd=y._stop,s.playing(S[x])&&(s.pause(S[x],!0),s.play(S[x],!0)))));return s},rate:function(){var s=this,c=arguments,m,f;if(c.length===0)f=s._sounds[0]._id;else if(c.length===1){var y=s._getSoundIds(),S=y.indexOf(c[0]);S>=0?f=parseInt(c[0],10):m=parseFloat(c[0])}else c.length===2&&(m=parseFloat(c[0]),f=parseInt(c[1],10));var x;if(typeof m=="number"){if(s._state!=="loaded"||s._playLock)return s._queue.push({event:"rate",action:function(){s.rate.apply(s,c)}}),s;typeof f>"u"&&(s._rate=m),f=s._getSoundIds(f);for(var V=0;V<f.length;V++)if(x=s._soundById(f[V]),x){s.playing(f[V])&&(x._rateSeek=s.seek(f[V]),x._playStart=s._webAudio?n.ctx.currentTime:x._playStart),x._rate=m,s._webAudio&&x._node&&x._node.bufferSource?x._node.bufferSource.playbackRate.setValueAtTime(m,n.ctx.currentTime):x._node&&(x._node.playbackRate=m);var H=s.seek(f[V]),Z=(s._sprite[x._sprite][0]+s._sprite[x._sprite][1])/1e3-H,me=Z*1e3/Math.abs(x._rate);(s._endTimers[f[V]]||!x._paused)&&(s._clearTimer(f[V]),s._endTimers[f[V]]=setTimeout(s._ended.bind(s,x),me)),s._emit("rate",x._id)}}else return x=s._soundById(f),x?x._rate:s._rate;return s},seek:function(){var s=this,c=arguments,m,f;if(c.length===0)s._sounds.length&&(f=s._sounds[0]._id);else if(c.length===1){var y=s._getSoundIds(),S=y.indexOf(c[0]);S>=0?f=parseInt(c[0],10):s._sounds.length&&(f=s._sounds[0]._id,m=parseFloat(c[0]))}else c.length===2&&(m=parseFloat(c[0]),f=parseInt(c[1],10));if(typeof f>"u")return 0;if(typeof m=="number"&&(s._state!=="loaded"||s._playLock))return s._queue.push({event:"seek",action:function(){s.seek.apply(s,c)}}),s;var x=s._soundById(f);if(x)if(typeof m=="number"&&m>=0){var V=s.playing(f);V&&s.pause(f,!0),x._seek=m,x._ended=!1,s._clearTimer(f),!s._webAudio&&x._node&&!isNaN(x._node.duration)&&(x._node.currentTime=m);var H=function(){V&&s.play(f,!0),s._emit("seek",f)};if(V&&!s._webAudio){var Z=function(){s._playLock?setTimeout(Z,0):H()};setTimeout(Z,0)}else H()}else if(s._webAudio){var me=s.playing(f)?n.ctx.currentTime-x._playStart:0,Oe=x._rateSeek?x._rateSeek-x._seek:0;return x._seek+(Oe+me*Math.abs(x._rate))}else return x._node.currentTime;return s},playing:function(s){var c=this;if(typeof s=="number"){var m=c._soundById(s);return m?!m._paused:!1}for(var f=0;f<c._sounds.length;f++)if(!c._sounds[f]._paused)return!0;return!1},duration:function(s){var c=this,m=c._duration,f=c._soundById(s);return f&&(m=c._sprite[f._sprite][1]/1e3),m},state:function(){return this._state},unload:function(){for(var s=this,c=s._sounds,m=0;m<c.length;m++)c[m]._paused||s.stop(c[m]._id),s._webAudio||(s._clearSound(c[m]._node),c[m]._node.removeEventListener("error",c[m]._errorFn,!1),c[m]._node.removeEventListener(n._canPlayEvent,c[m]._loadFn,!1),c[m]._node.removeEventListener("ended",c[m]._endFn,!1),n._releaseHtml5Audio(c[m]._node)),delete c[m]._node,s._clearTimer(c[m]._id);var f=n._howls.indexOf(s);f>=0&&n._howls.splice(f,1);var y=!0;for(m=0;m<n._howls.length;m++)if(n._howls[m]._src===s._src||s._src.indexOf(n._howls[m]._src)>=0){y=!1;break}return i&&y&&delete i[s._src],n.noAudio=!1,s._state="unloaded",s._sounds=[],s=null,null},on:function(s,c,m,f){var y=this,S=y["_on"+s];return typeof c=="function"&&S.push(f?{id:m,fn:c,once:f}:{id:m,fn:c}),y},off:function(s,c,m){var f=this,y=f["_on"+s],S=0;if(typeof c=="number"&&(m=c,c=null),c||m)for(S=0;S<y.length;S++){var x=m===y[S].id;if(c===y[S].fn&&x||!c&&x){y.splice(S,1);break}}else if(s)f["_on"+s]=[];else{var V=Object.keys(f);for(S=0;S<V.length;S++)V[S].indexOf("_on")===0&&Array.isArray(f[V[S]])&&(f[V[S]]=[])}return f},once:function(s,c,m){var f=this;return f.on(s,c,m,1),f},_emit:function(s,c,m){for(var f=this,y=f["_on"+s],S=y.length-1;S>=0;S--)(!y[S].id||y[S].id===c||s==="load")&&(setTimeout((function(x){x.call(this,c,m)}).bind(f,y[S].fn),0),y[S].once&&f.off(s,y[S].fn,y[S].id));return f._loadQueue(s),f},_loadQueue:function(s){var c=this;if(c._queue.length>0){var m=c._queue[0];m.event===s&&(c._queue.shift(),c._loadQueue()),s||m.action()}return c},_ended:function(s){var c=this,m=s._sprite;if(!c._webAudio&&s._node&&!s._node.paused&&!s._node.ended&&s._node.currentTime<s._stop)return setTimeout(c._ended.bind(c,s),100),c;var f=!!(s._loop||c._sprite[m][2]);if(c._emit("end",s._id),!c._webAudio&&f&&c.stop(s._id,!0).play(s._id),c._webAudio&&f){c._emit("play",s._id),s._seek=s._start||0,s._rateSeek=0,s._playStart=n.ctx.currentTime;var y=(s._stop-s._start)*1e3/Math.abs(s._rate);c._endTimers[s._id]=setTimeout(c._ended.bind(c,s),y)}return c._webAudio&&!f&&(s._paused=!0,s._ended=!0,s._seek=s._start||0,s._rateSeek=0,c._clearTimer(s._id),c._cleanBuffer(s._node),n._autoSuspend()),!c._webAudio&&!f&&c.stop(s._id,!0),c},_clearTimer:function(s){var c=this;if(c._endTimers[s]){if(typeof c._endTimers[s]!="function")clearTimeout(c._endTimers[s]);else{var m=c._soundById(s);m&&m._node&&m._node.removeEventListener("ended",c._endTimers[s],!1)}delete c._endTimers[s]}return c},_soundById:function(s){for(var c=this,m=0;m<c._sounds.length;m++)if(s===c._sounds[m]._id)return c._sounds[m];return null},_inactiveSound:function(){var s=this;s._drain();for(var c=0;c<s._sounds.length;c++)if(s._sounds[c]._ended)return s._sounds[c].reset();return new t(s)},_drain:function(){var s=this,c=s._pool,m=0,f=0;if(!(s._sounds.length<c)){for(f=0;f<s._sounds.length;f++)s._sounds[f]._ended&&m++;for(f=s._sounds.length-1;f>=0;f--){if(m<=c)return;s._sounds[f]._ended&&(s._webAudio&&s._sounds[f]._node&&s._sounds[f]._node.disconnect(0),s._sounds.splice(f,1),m--)}}},_getSoundIds:function(s){var c=this;if(typeof s>"u"){for(var m=[],f=0;f<c._sounds.length;f++)m.push(c._sounds[f]._id);return m}else return[s]},_refreshBuffer:function(s){var c=this;return s._node.bufferSource=n.ctx.createBufferSource(),s._node.bufferSource.buffer=i[c._src],s._panner?s._node.bufferSource.connect(s._panner):s._node.bufferSource.connect(s._node),s._node.bufferSource.loop=s._loop,s._loop&&(s._node.bufferSource.loopStart=s._start||0,s._node.bufferSource.loopEnd=s._stop||0),s._node.bufferSource.playbackRate.setValueAtTime(s._rate,n.ctx.currentTime),c},_cleanBuffer:function(s){var c=this,m=n._navigator&&n._navigator.vendor.indexOf("Apple")>=0;if(!s.bufferSource)return c;if(n._scratchBuffer&&s.bufferSource&&(s.bufferSource.onended=null,s.bufferSource.disconnect(0),m))try{s.bufferSource.buffer=n._scratchBuffer}catch{}return s.bufferSource=null,c},_clearSound:function(s){var c=/MSIE |Trident\//.test(n._navigator&&n._navigator.userAgent);c||(s.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(s){this._parent=s,this.init()};t.prototype={init:function(){var s=this,c=s._parent;return s._muted=c._muted,s._loop=c._loop,s._volume=c._volume,s._rate=c._rate,s._seek=0,s._paused=!0,s._ended=!0,s._sprite="__default",s._id=++n._counter,c._sounds.push(s),s.create(),s},create:function(){var s=this,c=s._parent,m=n._muted||s._muted||s._parent._muted?0:s._volume;return c._webAudio?(s._node=typeof n.ctx.createGain>"u"?n.ctx.createGainNode():n.ctx.createGain(),s._node.gain.setValueAtTime(m,n.ctx.currentTime),s._node.paused=!0,s._node.connect(n.masterGain)):n.noAudio||(s._node=n._obtainHtml5Audio(),s._errorFn=s._errorListener.bind(s),s._node.addEventListener("error",s._errorFn,!1),s._loadFn=s._loadListener.bind(s),s._node.addEventListener(n._canPlayEvent,s._loadFn,!1),s._endFn=s._endListener.bind(s),s._node.addEventListener("ended",s._endFn,!1),s._node.src=c._src,s._node.preload=c._preload===!0?"auto":c._preload,s._node.volume=m*n.volume(),s._node.load()),s},reset:function(){var s=this,c=s._parent;return s._muted=c._muted,s._loop=c._loop,s._volume=c._volume,s._rate=c._rate,s._seek=0,s._rateSeek=0,s._paused=!0,s._ended=!0,s._sprite="__default",s._id=++n._counter,s},_errorListener:function(){var s=this;s._parent._emit("loaderror",s._id,s._node.error?s._node.error.code:0),s._node.removeEventListener("error",s._errorFn,!1)},_loadListener:function(){var s=this,c=s._parent;c._duration=Math.ceil(s._node.duration*10)/10,Object.keys(c._sprite).length===0&&(c._sprite={__default:[0,c._duration*1e3]}),c._state!=="loaded"&&(c._state="loaded",c._emit("load"),c._loadQueue()),s._node.removeEventListener(n._canPlayEvent,s._loadFn,!1)},_endListener:function(){var s=this,c=s._parent;c._duration===1/0&&(c._duration=Math.ceil(s._node.duration*10)/10,c._sprite.__default[1]===1/0&&(c._sprite.__default[1]=c._duration*1e3),c._ended(s)),s._node.removeEventListener("ended",s._endFn,!1)}};var i={},o=function(s){var c=s._src;if(i[c]){s._duration=i[c].duration,d(s);return}if(/^data:[^;]+;base64,/.test(c)){for(var m=atob(c.split(",")[1]),f=new Uint8Array(m.length),y=0;y<m.length;++y)f[y]=m.charCodeAt(y);l(f.buffer,s)}else{var S=new XMLHttpRequest;S.open(s._xhr.method,c,!0),S.withCredentials=s._xhr.withCredentials,S.responseType="arraybuffer",s._xhr.headers&&Object.keys(s._xhr.headers).forEach(function(x){S.setRequestHeader(x,s._xhr.headers[x])}),S.onload=function(){var x=(S.status+"")[0];if(x!=="0"&&x!=="2"&&x!=="3"){s._emit("loaderror",null,"Failed loading audio file with status: "+S.status+".");return}l(S.response,s)},S.onerror=function(){s._webAudio&&(s._html5=!0,s._webAudio=!1,s._sounds=[],delete i[c],s.load())},r(S)}},r=function(s){try{s.send()}catch{s.onerror()}},l=function(s,c){var m=function(){c._emit("loaderror",null,"Decoding audio data failed.")},f=function(y){y&&c._sounds.length>0?(i[c._src]=y,d(c,y)):m()};typeof Promise<"u"&&n.ctx.decodeAudioData.length===1?n.ctx.decodeAudioData(s).then(f).catch(m):n.ctx.decodeAudioData(s,f,m)},d=function(s,c){c&&!s._duration&&(s._duration=c.duration),Object.keys(s._sprite).length===0&&(s._sprite={__default:[0,s._duration*1e3]}),s._state!=="loaded"&&(s._state="loaded",s._emit("load"),s._loadQueue())},p=function(){if(n.usingWebAudio){try{typeof AudioContext<"u"?n.ctx=new AudioContext:typeof webkitAudioContext<"u"?n.ctx=new webkitAudioContext:n.usingWebAudio=!1}catch{n.usingWebAudio=!1}n.ctx||(n.usingWebAudio=!1);var s=/iP(hone|od|ad)/.test(n._navigator&&n._navigator.platform),c=n._navigator&&n._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),m=c?parseInt(c[1],10):null;if(s&&m&&m<9){var f=/safari/.test(n._navigator&&n._navigator.userAgent.toLowerCase());n._navigator&&!f&&(n.usingWebAudio=!1)}n.usingWebAudio&&(n.masterGain=typeof n.ctx.createGain>"u"?n.ctx.createGainNode():n.ctx.createGain(),n.masterGain.gain.setValueAtTime(n._muted?0:n._volume,n.ctx.currentTime),n.masterGain.connect(n.ctx.destination)),n._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:n,Howl:e}}),typeof Po<"u"&&(Po.Howler=n,Po.Howl=e),typeof global<"u"?(global.HowlerGlobal=a,global.Howler=n,global.Howl=e,global.Sound=t):typeof window<"u"&&(window.HowlerGlobal=a,window.Howler=n,window.Howl=e,window.Sound=t)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(n){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var t=e._howls.length-1;t>=0;t--)e._howls[t].stereo(n);return e},HowlerGlobal.prototype.pos=function(n,e,t){var i=this;if(!i.ctx||!i.ctx.listener)return i;if(e=typeof e!="number"?i._pos[1]:e,t=typeof t!="number"?i._pos[2]:t,typeof n=="number")i._pos=[n,e,t],typeof i.ctx.listener.positionX<"u"?(i.ctx.listener.positionX.setTargetAtTime(i._pos[0],Howler.ctx.currentTime,.1),i.ctx.listener.positionY.setTargetAtTime(i._pos[1],Howler.ctx.currentTime,.1),i.ctx.listener.positionZ.setTargetAtTime(i._pos[2],Howler.ctx.currentTime,.1)):i.ctx.listener.setPosition(i._pos[0],i._pos[1],i._pos[2]);else return i._pos;return i},HowlerGlobal.prototype.orientation=function(n,e,t,i,o,r){var l=this;if(!l.ctx||!l.ctx.listener)return l;var d=l._orientation;if(e=typeof e!="number"?d[1]:e,t=typeof t!="number"?d[2]:t,i=typeof i!="number"?d[3]:i,o=typeof o!="number"?d[4]:o,r=typeof r!="number"?d[5]:r,typeof n=="number")l._orientation=[n,e,t,i,o,r],typeof l.ctx.listener.forwardX<"u"?(l.ctx.listener.forwardX.setTargetAtTime(n,Howler.ctx.currentTime,.1),l.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),l.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1),l.ctx.listener.upX.setTargetAtTime(i,Howler.ctx.currentTime,.1),l.ctx.listener.upY.setTargetAtTime(o,Howler.ctx.currentTime,.1),l.ctx.listener.upZ.setTargetAtTime(r,Howler.ctx.currentTime,.1)):l.ctx.listener.setOrientation(n,e,t,i,o,r);else return d;return l},Howl.prototype.init=(function(n){return function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],n.call(this,e)}})(Howl.prototype.init),Howl.prototype.stereo=function(n,e){var t=this;if(!t._webAudio)return t;if(t._state!=="loaded")return t._queue.push({event:"stereo",action:function(){t.stereo(n,e)}}),t;var i=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof n=="number")t._stereo=n,t._pos=[n,0,0];else return t._stereo;for(var o=t._getSoundIds(e),r=0;r<o.length;r++){var l=t._soundById(o[r]);if(l)if(typeof n=="number")l._stereo=n,l._pos=[n,0,0],l._node&&(l._pannerAttr.panningModel="equalpower",(!l._panner||!l._panner.pan)&&a(l,i),i==="spatial"?typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(n,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):l._panner.setPosition(n,0,0):l._panner.pan.setValueAtTime(n,Howler.ctx.currentTime)),t._emit("stereo",l._id);else return l._stereo}return t},Howl.prototype.pos=function(n,e,t,i){var o=this;if(!o._webAudio)return o;if(o._state!=="loaded")return o._queue.push({event:"pos",action:function(){o.pos(n,e,t,i)}}),o;if(e=typeof e!="number"?0:e,t=typeof t!="number"?-.5:t,typeof i>"u")if(typeof n=="number")o._pos=[n,e,t];else return o._pos;for(var r=o._getSoundIds(i),l=0;l<r.length;l++){var d=o._soundById(r[l]);if(d)if(typeof n=="number")d._pos=[n,e,t],d._node&&((!d._panner||d._panner.pan)&&a(d,"spatial"),typeof d._panner.positionX<"u"?(d._panner.positionX.setValueAtTime(n,Howler.ctx.currentTime),d._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),d._panner.positionZ.setValueAtTime(t,Howler.ctx.currentTime)):d._panner.setPosition(n,e,t)),o._emit("pos",d._id);else return d._pos}return o},Howl.prototype.orientation=function(n,e,t,i){var o=this;if(!o._webAudio)return o;if(o._state!=="loaded")return o._queue.push({event:"orientation",action:function(){o.orientation(n,e,t,i)}}),o;if(e=typeof e!="number"?o._orientation[1]:e,t=typeof t!="number"?o._orientation[2]:t,typeof i>"u")if(typeof n=="number")o._orientation=[n,e,t];else return o._orientation;for(var r=o._getSoundIds(i),l=0;l<r.length;l++){var d=o._soundById(r[l]);if(d)if(typeof n=="number")d._orientation=[n,e,t],d._node&&(d._panner||(d._pos||(d._pos=o._pos||[0,0,-.5]),a(d,"spatial")),typeof d._panner.orientationX<"u"?(d._panner.orientationX.setValueAtTime(n,Howler.ctx.currentTime),d._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),d._panner.orientationZ.setValueAtTime(t,Howler.ctx.currentTime)):d._panner.setOrientation(n,e,t)),o._emit("orientation",d._id);else return d._orientation}return o},Howl.prototype.pannerAttr=function(){var n=this,e=arguments,t,i,o;if(!n._webAudio)return n;if(e.length===0)return n._pannerAttr;if(e.length===1)if(typeof e[0]=="object")t=e[0],typeof i>"u"&&(t.pannerAttr||(t.pannerAttr={coneInnerAngle:t.coneInnerAngle,coneOuterAngle:t.coneOuterAngle,coneOuterGain:t.coneOuterGain,distanceModel:t.distanceModel,maxDistance:t.maxDistance,refDistance:t.refDistance,rolloffFactor:t.rolloffFactor,panningModel:t.panningModel}),n._pannerAttr={coneInnerAngle:typeof t.pannerAttr.coneInnerAngle<"u"?t.pannerAttr.coneInnerAngle:n._coneInnerAngle,coneOuterAngle:typeof t.pannerAttr.coneOuterAngle<"u"?t.pannerAttr.coneOuterAngle:n._coneOuterAngle,coneOuterGain:typeof t.pannerAttr.coneOuterGain<"u"?t.pannerAttr.coneOuterGain:n._coneOuterGain,distanceModel:typeof t.pannerAttr.distanceModel<"u"?t.pannerAttr.distanceModel:n._distanceModel,maxDistance:typeof t.pannerAttr.maxDistance<"u"?t.pannerAttr.maxDistance:n._maxDistance,refDistance:typeof t.pannerAttr.refDistance<"u"?t.pannerAttr.refDistance:n._refDistance,rolloffFactor:typeof t.pannerAttr.rolloffFactor<"u"?t.pannerAttr.rolloffFactor:n._rolloffFactor,panningModel:typeof t.pannerAttr.panningModel<"u"?t.pannerAttr.panningModel:n._panningModel});else return o=n._soundById(parseInt(e[0],10)),o?o._pannerAttr:n._pannerAttr;else e.length===2&&(t=e[0],i=parseInt(e[1],10));for(var r=n._getSoundIds(i),l=0;l<r.length;l++)if(o=n._soundById(r[l]),o){var d=o._pannerAttr;d={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:d.coneInnerAngle,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:d.coneOuterAngle,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:d.coneOuterGain,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:d.distanceModel,maxDistance:typeof t.maxDistance<"u"?t.maxDistance:d.maxDistance,refDistance:typeof t.refDistance<"u"?t.refDistance:d.refDistance,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:d.rolloffFactor,panningModel:typeof t.panningModel<"u"?t.panningModel:d.panningModel};var p=o._panner;p||(o._pos||(o._pos=n._pos||[0,0,-.5]),a(o,"spatial"),p=o._panner),p.coneInnerAngle=d.coneInnerAngle,p.coneOuterAngle=d.coneOuterAngle,p.coneOuterGain=d.coneOuterGain,p.distanceModel=d.distanceModel,p.maxDistance=d.maxDistance,p.refDistance=d.refDistance,p.rolloffFactor=d.rolloffFactor,p.panningModel=d.panningModel}return n},Sound.prototype.init=(function(n){return function(){var e=this,t=e._parent;e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,n.call(this),e._stereo?t.stereo(e._stereo):e._pos&&t.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}})(Sound.prototype.init),Sound.prototype.reset=(function(n){return function(){var e=this,t=e._parent;return e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,e._stereo?t.stereo(e._stereo):e._pos?t.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,t._refreshBuffer(e)),n.call(this)}})(Sound.prototype.reset);var a=function(n,e){e=e||"spatial",e==="spatial"?(n._panner=Howler.ctx.createPanner(),n._panner.coneInnerAngle=n._pannerAttr.coneInnerAngle,n._panner.coneOuterAngle=n._pannerAttr.coneOuterAngle,n._panner.coneOuterGain=n._pannerAttr.coneOuterGain,n._panner.distanceModel=n._pannerAttr.distanceModel,n._panner.maxDistance=n._pannerAttr.maxDistance,n._panner.refDistance=n._pannerAttr.refDistance,n._panner.rolloffFactor=n._pannerAttr.rolloffFactor,n._panner.panningModel=n._pannerAttr.panningModel,typeof n._panner.positionX<"u"?(n._panner.positionX.setValueAtTime(n._pos[0],Howler.ctx.currentTime),n._panner.positionY.setValueAtTime(n._pos[1],Howler.ctx.currentTime),n._panner.positionZ.setValueAtTime(n._pos[2],Howler.ctx.currentTime)):n._panner.setPosition(n._pos[0],n._pos[1],n._pos[2]),typeof n._panner.orientationX<"u"?(n._panner.orientationX.setValueAtTime(n._orientation[0],Howler.ctx.currentTime),n._panner.orientationY.setValueAtTime(n._orientation[1],Howler.ctx.currentTime),n._panner.orientationZ.setValueAtTime(n._orientation[2],Howler.ctx.currentTime)):n._panner.setOrientation(n._orientation[0],n._orientation[1],n._orientation[2])):(n._panner=Howler.ctx.createStereoPanner(),n._panner.pan.setValueAtTime(n._stereo,Howler.ctx.currentTime)),n._panner.connect(n._node),n._paused||n._parent.pause(n._id,!0).play(n._id,!0)}})()});function kd(a,n,e,t,i){let o=(...r)=>(console.warn("gridstack.js: Function `"+e+"` is deprecated in "+i+" and has been replaced with `"+t+"`. It will be **removed** in a future release"),n.apply(a,r));return o.prototype=n.prototype,o}var M=class a{static getElements(n,e=document){if(typeof n=="string"){let t="getElementById"in e?e:void 0;if(t&&!isNaN(+n[0])){let o=t.getElementById(n);return o?[o]:[]}let i=e.querySelectorAll(n);return!i.length&&n[0]!=="."&&n[0]!=="#"&&(i=e.querySelectorAll("."+n),i.length||(i=e.querySelectorAll("#"+n))),Array.from(i)}return[n]}static getElement(n,e=document){if(typeof n=="string"){let t="getElementById"in e?e:void 0;if(!n.length)return null;if(t&&n[0]==="#")return t.getElementById(n.substring(1));if(n[0]==="#"||n[0]==="."||n[0]==="[")return e.querySelector(n);if(t&&!isNaN(+n[0]))return t.getElementById(n);let i=e.querySelector(n);return t&&!i&&(i=t.getElementById(n)),i||(i=e.querySelector("."+n)),i}return n}static lazyLoad(n){return n.lazyLoad||n.grid?.opts?.lazyLoad&&n.lazyLoad!==!1}static createDiv(n,e){let t=document.createElement("div");return n.forEach(i=>{i&&t.classList.add(i)}),e?.appendChild(t),t}static shouldSizeToContent(n,e=!1){return n?.grid&&(e?n.sizeToContent===!0||n.grid.opts.sizeToContent===!0&&n.sizeToContent===void 0:!!n.sizeToContent||n.grid.opts.sizeToContent&&n.sizeToContent!==!1)}static isIntercepted(n,e){return!(n.y>=e.y+e.h||n.y+n.h<=e.y||n.x+n.w<=e.x||n.x>=e.x+e.w)}static isTouching(n,e){return a.isIntercepted(n,{x:e.x-.5,y:e.y-.5,w:e.w+1,h:e.h+1})}static areaIntercept(n,e){let t=n.x>e.x?n.x:e.x,i=n.x+n.w<e.x+e.w?n.x+n.w:e.x+e.w;if(i<=t)return 0;let o=n.y>e.y?n.y:e.y,r=n.y+n.h<e.y+e.h?n.y+n.h:e.y+e.h;return r<=o?0:(i-t)*(r-o)}static area(n){return n.w*n.h}static sort(n,e=1){return n.sort((i,o)=>{let r=e*((i.y??1e4)-(o.y??1e4));return r===0?e*((i.x??1e4)-(o.x??1e4)):r})}static find(n,e){return e?n.find(t=>t.id===e):void 0}static createStylesheet(n,e,t){let i=document.createElement("style"),o=t?.nonce;return o&&(i.nonce=o),i.setAttribute("type","text/css"),i.setAttribute("gs-style-id",n),i.styleSheet?i.styleSheet.cssText="":i.appendChild(document.createTextNode("")),e?e.insertBefore(i,e.firstChild):(e=document.getElementsByTagName("head")[0],e.appendChild(i)),i}static removeStylesheet(n,e){let i=(e||document).querySelector("STYLE[gs-style-id="+n+"]");i&&i.parentNode&&i.remove()}static addCSSRule(n,e,t){n.textContent+=`${e} { ${t} } `}static toBool(n){return typeof n=="boolean"?n:typeof n=="string"?(n=n.toLowerCase(),!(n===""||n==="no"||n==="false"||n==="0")):!!n}static toNumber(n){return n===null||n.length===0?void 0:Number(n)}static parseHeight(n){let e,t="px";if(typeof n=="string")if(n==="auto"||n==="")e=0;else{let i=n.match(/^(-[0-9]+\.[0-9]+|[0-9]*\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%|cm|mm)?$/);if(!i)throw new Error(`Invalid height val = ${n}`);t=i[2]||"px",e=parseFloat(i[1])}else e=n;return{h:e,unit:t}}static defaults(n,...e){return e.forEach(t=>{for(let i in t){if(!t.hasOwnProperty(i))return;n[i]===null||n[i]===void 0?n[i]=t[i]:typeof t[i]=="object"&&typeof n[i]=="object"&&this.defaults(n[i],t[i])}}),n}static same(n,e){if(typeof n!="object")return n==e;if(typeof n!=typeof e||Object.keys(n).length!==Object.keys(e).length)return!1;for(let t in n)if(n[t]!==e[t])return!1;return!0}static copyPos(n,e,t=!1){return e.x!==void 0&&(n.x=e.x),e.y!==void 0&&(n.y=e.y),e.w!==void 0&&(n.w=e.w),e.h!==void 0&&(n.h=e.h),t&&(e.minW&&(n.minW=e.minW),e.minH&&(n.minH=e.minH),e.maxW&&(n.maxW=e.maxW),e.maxH&&(n.maxH=e.maxH)),n}static samePos(n,e){return n&&e&&n.x===e.x&&n.y===e.y&&(n.w||1)===(e.w||1)&&(n.h||1)===(e.h||1)}static sanitizeMinMax(n){n.minW||delete n.minW,n.minH||delete n.minH,n.maxW||delete n.maxW,n.maxH||delete n.maxH}static removeInternalAndSame(n,e){if(!(typeof n!="object"||typeof e!="object"))for(let t in n){let i=n[t],o=e[t];t[0]==="_"||i===o?delete n[t]:i&&typeof i=="object"&&o!==void 0&&(a.removeInternalAndSame(i,o),Object.keys(i).length||delete n[t])}}static removeInternalForSave(n,e=!0){for(let t in n)(t[0]==="_"||n[t]===null||n[t]===void 0)&&delete n[t];delete n.grid,e&&delete n.el,n.autoPosition||delete n.autoPosition,n.noResize||delete n.noResize,n.noMove||delete n.noMove,n.locked||delete n.locked,(n.w===1||n.w===n.minW)&&delete n.w,(n.h===1||n.h===n.minH)&&delete n.h}static throttle(n,e){let t=!1;return(...i)=>{t||(t=!0,setTimeout(()=>{n(...i),t=!1},e))}}static removePositioningStyles(n){let e=n.style;e.position&&e.removeProperty("position"),e.left&&e.removeProperty("left"),e.top&&e.removeProperty("top"),e.width&&e.removeProperty("width"),e.height&&e.removeProperty("height")}static getScrollElement(n){if(!n)return document.scrollingElement||document.documentElement;let e=getComputedStyle(n);return/(auto|scroll)/.test(e.overflow+e.overflowY)?n:this.getScrollElement(n.parentElement)}static updateScrollPosition(n,e,t){let i=n.getBoundingClientRect(),o=window.innerHeight||document.documentElement.clientHeight;if(i.top<0||i.bottom>o){let r=i.bottom-o,l=i.top,d=this.getScrollElement(n);if(d!==null){let p=d.scrollTop;i.top<0&&t<0?n.offsetHeight>o?d.scrollTop+=t:d.scrollTop+=Math.abs(l)>Math.abs(t)?t:l:t>0&&(n.offsetHeight>o?d.scrollTop+=t:d.scrollTop+=r>t?t:r),e.top+=d.scrollTop-p}}}static updateScrollResize(n,e,t){let i=this.getScrollElement(e),o=i.clientHeight,r=i===this.getScrollElement()?0:i.getBoundingClientRect().top,l=n.clientY-r,d=l<t,p=l>o-t;d?i.scrollBy({behavior:"smooth",top:l-t}):p&&i.scrollBy({behavior:"smooth",top:t-(o-l)})}static clone(n){return n==null||typeof n!="object"?n:n instanceof Array?[...n]:$({},n)}static cloneDeep(n){let e=["parentGrid","el","grid","subGrid","engine"],t=a.clone(n);for(let i in t)t.hasOwnProperty(i)&&typeof t[i]=="object"&&i.substring(0,2)!=="__"&&!e.find(o=>o===i)&&(t[i]=a.cloneDeep(n[i]));return t}static cloneNode(n){let e=n.cloneNode(!0);return e.removeAttribute("id"),e}static appendTo(n,e){let t;typeof e=="string"?t=a.getElement(e):t=e,t&&t.appendChild(n)}static addElStyles(n,e){if(e instanceof Object)for(let t in e)e.hasOwnProperty(t)&&(Array.isArray(e[t])?e[t].forEach(i=>{n.style[t]=i}):n.style[t]=e[t])}static initEvent(n,e){let t={type:e.type},i={button:0,which:0,buttons:1,bubbles:!0,cancelable:!0,target:e.target?e.target:n.target};return["altKey","ctrlKey","metaKey","shiftKey"].forEach(o=>t[o]=n[o]),["pageX","pageY","clientX","clientY","screenX","screenY"].forEach(o=>t[o]=n[o]),$($({},t),i)}static simulateMouseEvent(n,e,t){let i=n,o=new MouseEvent(e,{bubbles:!0,composed:!0,cancelable:!0,view:window,detail:1,screenX:n.screenX,screenY:n.screenY,clientX:n.clientX,clientY:n.clientY,ctrlKey:i.ctrlKey??!1,altKey:i.altKey??!1,shiftKey:i.shiftKey??!1,metaKey:i.metaKey??!1,button:0,relatedTarget:n.target});(t||n.target).dispatchEvent(o)}static getValuesFromTransformedElement(n){let e=document.createElement("div");a.addElStyles(e,{opacity:"0",position:"fixed",top:"0px",left:"0px",width:"1px",height:"1px",zIndex:"-999999"}),n.appendChild(e);let t=e.getBoundingClientRect();return n.removeChild(e),e.remove(),{xScale:1/t.width,yScale:1/t.height,xOffset:t.left,yOffset:t.top}}static swap(n,e,t){if(!n)return;let i=n[e];n[e]=n[t],n[t]=i}static canBeRotated(n){return!(!n||n.w===n.h||n.locked||n.noResize||n.grid?.opts.disableResize||n.minW&&n.minW===n.maxW||n.minH&&n.minH===n.maxH)}};var oo=(()=>{class a{constructor(e={}){this.addedNodes=[],this.removedNodes=[],this.defaultColumn=12,this.column=e.column||this.defaultColumn,this.column>this.defaultColumn&&(this.defaultColumn=this.column),this.maxRow=e.maxRow,this._float=e.float,this.nodes=e.nodes||[],this.onChange=e.onChange}batchUpdate(e=!0,t=!0){return!!this.batchMode===e?this:(this.batchMode=e,e?(this._prevFloat=this._float,this._float=!0,this.cleanNodes(),this.saveInitial()):(this._float=this._prevFloat,delete this._prevFloat,t&&this._packNodes(),this._notify()),this)}_useEntireRowArea(e,t){return(!this.float||this.batchMode&&!this._prevFloat)&&!this._hasLocked&&(!e._moving||e._skipDown||t.y<=e.y)}_fixCollisions(e,t=e,i,o={}){if(this.sortNodes(-1),i=i||this.collide(e,t),!i)return!1;if(e._moving&&!o.nested&&!this.float&&this.swap(e,i))return!0;let r=t;!this._loading&&this._useEntireRowArea(e,t)&&(r={x:0,w:this.column,y:t.y,h:t.h},i=this.collide(e,r,o.skip));let l=!1,d={nested:!0,pack:!1},p=0;for(;i=i||this.collide(e,r,o.skip);){if(p++>this.nodes.length*2)throw new Error("Infinite collide check");let s;if(i.locked||this._loading||e._moving&&!e._skipDown&&t.y>e.y&&!this.float&&(!this.collide(i,Ze($({},i),{y:e.y}),e)||!this.collide(i,Ze($({},i),{y:t.y-i.h}),e))){e._skipDown=e._skipDown||t.y>e.y;let c=$(Ze($({},t),{y:i.y+i.h}),d);s=this._loading&&M.samePos(e,c)?!0:this.moveNode(e,c),(i.locked||this._loading)&&s?M.copyPos(t,e):!i.locked&&s&&o.pack&&(this._packNodes(),t.y=i.y+i.h,M.copyPos(e,t)),l=l||s}else s=this.moveNode(i,$(Ze($({},i),{y:t.y+t.h,skip:e}),d));if(!s)return l;i=void 0}return l}collide(e,t=e,i){let o=e._id,r=i?._id;return this.nodes.find(l=>l._id!==o&&l._id!==r&&M.isIntercepted(l,t))}collideAll(e,t=e,i){let o=e._id,r=i?._id;return this.nodes.filter(l=>l._id!==o&&l._id!==r&&M.isIntercepted(l,t))}directionCollideCoverage(e,t,i){if(!t.rect||!e._rect)return;let o=e._rect,r=$({},t.rect);r.y>o.y?(r.h+=r.y-o.y,r.y=o.y):r.h+=o.y-r.y,r.x>o.x?(r.w+=r.x-o.x,r.x=o.x):r.w+=o.x-r.x;let l,d=.5;for(let p of i){if(p.locked||!p._rect)break;let s=p._rect,c=Number.MAX_VALUE,m=Number.MAX_VALUE;o.y<s.y?c=(r.y+r.h-s.y)/s.h:o.y+o.h>s.y+s.h&&(c=(s.y+s.h-r.y)/s.h),o.x<s.x?m=(r.x+r.w-s.x)/s.w:o.x+o.w>s.x+s.w&&(m=(s.x+s.w-r.x)/s.w);let f=Math.min(m,c);f>d&&(d=f,l=p)}return t.collide=l,l}cacheRects(e,t,i,o,r,l){return this.nodes.forEach(d=>d._rect={y:d.y*t+i,x:d.x*e+l,w:d.w*e-l-o,h:d.h*t-i-r}),this}swap(e,t){if(!t||t.locked||!e||e.locked)return!1;function i(){let r=t.x,l=t.y;return t.x=e.x,t.y=e.y,e.h!=t.h?(e.x=r,e.y=t.y+t.h):e.w!=t.w?(e.x=t.x+t.w,e.y=l):(e.x=r,e.y=l),e._dirty=t._dirty=!0,!0}let o;if(e.w===t.w&&e.h===t.h&&(e.x===t.x||e.y===t.y)&&(o=M.isTouching(e,t)))return i();if(o!==!1){if(e.w===t.w&&e.x===t.x&&(o||(o=M.isTouching(e,t)))){if(t.y<e.y){let r=e;e=t,t=r}return i()}if(o!==!1){if(e.h===t.h&&e.y===t.y&&(o||(o=M.isTouching(e,t)))){if(t.x<e.x){let r=e;e=t,t=r}return i()}return!1}}}isAreaEmpty(e,t,i,o){let r={x:e||0,y:t||0,w:i||1,h:o||1};return!this.collide(r)}compact(e="compact",t=!0){if(this.nodes.length===0)return this;t&&this.sortNodes();let i=this.batchMode;i||this.batchUpdate();let o=this._inColumnResize;o||(this._inColumnResize=!0);let r=this.nodes;return this.nodes=[],r.forEach((l,d,p)=>{let s;l.locked||(l.autoPosition=!0,e==="list"&&d&&(s=p[d-1])),this.addNode(l,!1,s)}),o||delete this._inColumnResize,i||this.batchUpdate(!1),this}set float(e){this._float!==e&&(this._float=e||!1,e||this._packNodes()._notify())}get float(){return this._float||!1}sortNodes(e=1){return this.nodes=M.sort(this.nodes,e),this}_packNodes(){return this.batchMode?this:(this.sortNodes(),this.float?this.nodes.forEach(e=>{if(e._updating||e._orig===void 0||e.y===e._orig.y)return;let t=e.y;for(;t>e._orig.y;)--t,this.collide(e,{x:e.x,y:t,w:e.w,h:e.h})||(e._dirty=!0,e.y=t)}):this.nodes.forEach((e,t)=>{if(!e.locked)for(;e.y>0;){let i=t===0?0:e.y-1;if(!(t===0||!this.collide(e,{x:e.x,y:i,w:e.w,h:e.h})))break;e._dirty=e.y!==i,e.y=i}}),this)}prepareNode(e,t){e._id=e._id??a._idSeq++;let i=e.id;if(i){let r=1;for(;this.nodes.find(l=>l.id===e.id&&l!==e);)e.id=i+"_"+r++}(e.x===void 0||e.y===void 0||e.x===null||e.y===null)&&(e.autoPosition=!0);let o={x:0,y:0,w:1,h:1};return M.defaults(e,o),e.autoPosition||delete e.autoPosition,e.noResize||delete e.noResize,e.noMove||delete e.noMove,M.sanitizeMinMax(e),typeof e.x=="string"&&(e.x=Number(e.x)),typeof e.y=="string"&&(e.y=Number(e.y)),typeof e.w=="string"&&(e.w=Number(e.w)),typeof e.h=="string"&&(e.h=Number(e.h)),isNaN(e.x)&&(e.x=o.x,e.autoPosition=!0),isNaN(e.y)&&(e.y=o.y,e.autoPosition=!0),isNaN(e.w)&&(e.w=o.w),isNaN(e.h)&&(e.h=o.h),this.nodeBoundFix(e,t),e}nodeBoundFix(e,t){let i=e._orig||M.copyPos({},e);if(e.maxW&&(e.w=Math.min(e.w||1,e.maxW)),e.maxH&&(e.h=Math.min(e.h||1,e.maxH)),e.minW&&(e.w=Math.max(e.w||1,e.minW)),e.minH&&(e.h=Math.max(e.h||1,e.minH)),(e.x||0)+(e.w||1)>this.column&&this.column<this.defaultColumn&&!this._inColumnResize&&!this.skipCacheUpdate&&e._id&&this.findCacheLayout(e,this.defaultColumn)===-1){let r=$({},e);r.autoPosition||r.x===void 0?(delete r.x,delete r.y):r.x=Math.min(this.defaultColumn-1,r.x),r.w=Math.min(this.defaultColumn,r.w||1),this.cacheOneLayout(r,this.defaultColumn)}return e.w>this.column?e.w=this.column:e.w<1&&(e.w=1),this.maxRow&&e.h>this.maxRow?e.h=this.maxRow:e.h<1&&(e.h=1),e.x<0&&(e.x=0),e.y<0&&(e.y=0),e.x+e.w>this.column&&(t?e.w=this.column-e.x:e.x=this.column-e.w),this.maxRow&&e.y+e.h>this.maxRow&&(t?e.h=this.maxRow-e.y:e.y=this.maxRow-e.h),M.samePos(e,i)||(e._dirty=!0),this}getDirtyNodes(e){return e?this.nodes.filter(t=>t._dirty&&!M.samePos(t,t._orig)):this.nodes.filter(t=>t._dirty)}_notify(e){if(this.batchMode||!this.onChange)return this;let t=(e||[]).concat(this.getDirtyNodes());return this.onChange(t),this}cleanNodes(){return this.batchMode?this:(this.nodes.forEach(e=>{delete e._dirty,delete e._lastTried}),this)}saveInitial(){return this.nodes.forEach(e=>{e._orig=M.copyPos({},e),delete e._dirty}),this._hasLocked=this.nodes.some(e=>e.locked),this}restoreInitial(){return this.nodes.forEach(e=>{!e._orig||M.samePos(e,e._orig)||(M.copyPos(e,e._orig),e._dirty=!0)}),this._notify(),this}findEmptyPosition(e,t=this.nodes,i=this.column,o){let r=o?o.y*i+(o.x+o.w):0,l=!1;for(let d=r;!l;++d){let p=d%i,s=Math.floor(d/i);if(p+e.w>i)continue;let c={x:p,y:s,w:e.w,h:e.h};t.find(m=>M.isIntercepted(c,m))||((e.x!==p||e.y!==s)&&(e._dirty=!0),e.x=p,e.y=s,delete e.autoPosition,l=!0)}return l}addNode(e,t=!1,i){let o=this.nodes.find(l=>l._id===e._id);if(o)return o;this._inColumnResize?this.nodeBoundFix(e):this.prepareNode(e),delete e._temporaryRemoved,delete e._removeDOM;let r;return e.autoPosition&&this.findEmptyPosition(e,this.nodes,this.column,i)&&(delete e.autoPosition,r=!0),this.nodes.push(e),t&&this.addedNodes.push(e),r||this._fixCollisions(e),this.batchMode||this._packNodes()._notify(),e}removeNode(e,t=!0,i=!1){return this.nodes.find(o=>o._id===e._id)?(i&&this.removedNodes.push(e),t&&(e._removeDOM=!0),this.nodes=this.nodes.filter(o=>o._id!==e._id),e._isAboutToRemove||this._packNodes(),this._notify([e]),this):this}removeAll(e=!0,t=!0){if(delete this._layouts,!this.nodes.length)return this;e&&this.nodes.forEach(o=>o._removeDOM=!0);let i=this.nodes;return this.removedNodes=t?i:[],this.nodes=[],this._notify(i)}moveNodeCheck(e,t){if(!this.changedPosConstrain(e,t))return!1;if(t.pack=!0,!this.maxRow)return this.moveNode(e,t);let i,o=new a({column:this.column,float:this.float,nodes:this.nodes.map(l=>l._id===e._id?(i=$({},l),i):$({},l))});if(!i)return!1;let r=o.moveNode(i,t)&&o.getRow()<=Math.max(this.getRow(),this.maxRow);if(!r&&!t.resizing&&t.collide){let l=t.collide.el.gridstackNode;if(this.swap(e,l))return this._notify(),!0}return r?(o.nodes.filter(l=>l._dirty).forEach(l=>{let d=this.nodes.find(p=>p._id===l._id);d&&(M.copyPos(d,l),d._dirty=!0)}),this._notify(),!0):!1}willItFit(e){if(delete e._willFitPos,!this.maxRow)return!0;let t=new a({column:this.column,float:this.float,nodes:this.nodes.map(o=>$({},o))}),i=$({},e);return this.cleanupNode(i),delete i.el,delete i._id,delete i.content,delete i.grid,t.addNode(i),t.getRow()<=this.maxRow?(e._willFitPos=M.copyPos({},i),!0):!1}changedPosConstrain(e,t){return t.w=t.w||e.w,t.h=t.h||e.h,e.x!==t.x||e.y!==t.y?!0:(e.maxW&&(t.w=Math.min(t.w,e.maxW)),e.maxH&&(t.h=Math.min(t.h,e.maxH)),e.minW&&(t.w=Math.max(t.w,e.minW)),e.minH&&(t.h=Math.max(t.h,e.minH)),e.w!==t.w||e.h!==t.h)}moveNode(e,t){if(!e||!t)return!1;let i;t.pack===void 0&&!this.batchMode&&(i=t.pack=!0),typeof t.x!="number"&&(t.x=e.x),typeof t.y!="number"&&(t.y=e.y),typeof t.w!="number"&&(t.w=e.w),typeof t.h!="number"&&(t.h=e.h);let o=e.w!==t.w||e.h!==t.h,r=M.copyPos({},e,!0);if(M.copyPos(r,t),this.nodeBoundFix(r,o),M.copyPos(t,r),!t.forceCollide&&M.samePos(e,t))return!1;let l=M.copyPos({},e),d=this.collideAll(e,r,t.skip),p=!0;if(d.length){let s=e._moving&&!t.nested,c=s?this.directionCollideCoverage(e,t,d):d[0];if(s&&c&&e.grid?.opts?.subGridDynamic&&!e.grid._isTemp){let m=M.areaIntercept(t.rect,c._rect),f=M.area(t.rect),y=M.area(c._rect);m/(f<y?f:y)>.8&&(c.grid.makeSubGrid(c.el,void 0,e),c=void 0)}c?p=!this._fixCollisions(e,r,c,t):(p=!1,i&&delete t.pack)}return p&&!M.samePos(e,r)&&(e._dirty=!0,M.copyPos(e,r)),t.pack&&this._packNodes()._notify(),!M.samePos(e,l)}getRow(){return this.nodes.reduce((e,t)=>Math.max(e,t.y+t.h),0)}beginUpdate(e){return e._updating||(e._updating=!0,delete e._skipDown,this.batchMode||this.saveInitial()),this}endUpdate(){let e=this.nodes.find(t=>t._updating);return e&&(delete e._updating,delete e._skipDown),this}save(e=!0,t){let i=this._layouts?.length,o=i&&this.column!==i-1?this._layouts[i-1]:null,r=[];return this.sortNodes(),this.nodes.forEach(l=>{let d=o?.find(s=>s._id===l._id),p=$($({},l),d||{});M.removeInternalForSave(p,!e),t&&t(l,p),r.push(p)}),r}layoutsNodesChange(e){return!this._layouts||this._inColumnResize?this:(this._layouts.forEach((t,i)=>{if(!t||i===this.column)return this;if(i<this.column)this._layouts[i]=void 0;else{let o=i/this.column;e.forEach(r=>{if(!r._orig)return;let l=t.find(d=>d._id===r._id);l&&(l.y>=0&&r.y!==r._orig.y&&(l.y+=r.y-r._orig.y),r.x!==r._orig.x&&(l.x=Math.round(r.x*o)),r.w!==r._orig.w&&(l.w=Math.round(r.w*o)))})}}),this)}columnChanged(e,t,i="moveScale"){if(!this.nodes.length||!t||e===t)return this;let o=i==="compact"||i==="list";o&&this.sortNodes(1),t<e&&this.cacheLayout(this.nodes,e),this.batchUpdate();let r=[],l=o?this.nodes:M.sort(this.nodes,-1);if(t>e&&this._layouts){let d=this._layouts[t]||[],p=this._layouts.length-1;!d.length&&e!==p&&this._layouts[p]?.length&&(e=p,this._layouts[p].forEach(s=>{let c=l.find(m=>m._id===s._id);c&&(!o&&!s.autoPosition&&(c.x=s.x??c.x,c.y=s.y??c.y),c.w=s.w??c.w,(s.x==null||s.y===void 0)&&(c.autoPosition=!0))})),d.forEach(s=>{let c=l.findIndex(m=>m._id===s._id);if(c!==-1){let m=l[c];if(o){m.w=s.w;return}(s.autoPosition||isNaN(s.x)||isNaN(s.y))&&this.findEmptyPosition(s,r),s.autoPosition||(m.x=s.x??m.x,m.y=s.y??m.y,m.w=s.w??m.w,r.push(m)),l.splice(c,1)}})}if(o)this.compact(i,!1);else{if(l.length)if(typeof i=="function")i(t,e,r,l);else{let d=o||i==="none"?1:t/e,p=i==="move"||i==="moveScale",s=i==="scale"||i==="moveScale";l.forEach(c=>{c.x=t===1?0:p?Math.round(c.x*d):Math.min(c.x,t-1),c.w=t===1||e===1?1:s?Math.round(c.w*d)||1:Math.min(c.w,t),r.push(c)}),l=[]}r=M.sort(r,-1),this._inColumnResize=!0,this.nodes=[],r.forEach(d=>{this.addNode(d,!1),delete d._orig})}return this.nodes.forEach(d=>delete d._orig),this.batchUpdate(!1,!o),delete this._inColumnResize,this}cacheLayout(e,t,i=!1){let o=[];return e.forEach((r,l)=>{if(r._id===void 0){let d=r.id?this.nodes.find(p=>p.id===r.id):void 0;r._id=d?._id??a._idSeq++}o[l]={x:r.x,y:r.y,w:r.w,_id:r._id}}),this._layouts=i?[]:this._layouts||[],this._layouts[t]=o,this}cacheOneLayout(e,t){e._id=e._id??a._idSeq++;let i={x:e.x,y:e.y,w:e.w,_id:e._id};(e.autoPosition||e.x===void 0)&&(delete i.x,delete i.y,e.autoPosition&&(i.autoPosition=!0)),this._layouts=this._layouts||[],this._layouts[t]=this._layouts[t]||[];let o=this.findCacheLayout(e,t);return o===-1?this._layouts[t].push(i):this._layouts[t][o]=i,this}findCacheLayout(e,t){return this._layouts?.[t]?.findIndex(i=>i._id===e._id)??-1}removeNodeFromLayoutCache(e){if(this._layouts)for(let t=0;t<this._layouts.length;t++){let i=this.findCacheLayout(e,t);i!==-1&&this._layouts[t].splice(i,1)}}cleanupNode(e){for(let t in e)t[0]==="_"&&t!=="_id"&&delete e[t];return this}}return a._idSeq=0,a})();var Pt={alwaysShowResizeHandle:"mobile",animate:!0,auto:!0,cellHeight:"auto",cellHeightThrottle:100,cellHeightUnit:"px",column:12,draggable:{handle:".grid-stack-item-content",appendTo:"body",scroll:!0},handle:".grid-stack-item-content",itemClass:"grid-stack-item",margin:10,marginUnit:"px",maxRow:0,minRow:0,placeholderClass:"grid-stack-placeholder",placeholderText:"",removableOptions:{accept:"grid-stack-item",decline:"grid-stack-non-removable"},resizable:{handles:"se"},rtl:"auto"};var se=class{};var Ct=typeof window<"u"&&typeof document<"u"&&("ontouchstart"in document||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0),Ht=class{};function ro(a,n){a.touches.length>1||(a.cancelable&&a.preventDefault(),M.simulateMouseEvent(a.changedTouches[0],n))}function xd(a,n){a.cancelable&&a.preventDefault(),M.simulateMouseEvent(a,n)}function Rn(a){Ht.touchHandled||(Ht.touchHandled=!0,ro(a,"mousedown"))}function In(a){Ht.touchHandled&&ro(a,"mousemove")}function Nn(a){if(!Ht.touchHandled)return;Ht.pointerLeaveTimeout&&(window.clearTimeout(Ht.pointerLeaveTimeout),delete Ht.pointerLeaveTimeout);let n=!!se.dragElement;ro(a,"mouseup"),n||ro(a,"click"),Ht.touchHandled=!1}function Wn(a){a.pointerType!=="mouse"&&a.target.releasePointerCapture(a.pointerId)}function Cr(a){se.dragElement&&a.pointerType!=="mouse"&&xd(a,"mouseenter")}function kr(a){se.dragElement&&a.pointerType!=="mouse"&&(Ht.pointerLeaveTimeout=window.setTimeout(()=>{delete Ht.pointerLeaveTimeout,xd(a,"mouseleave")},10))}var Td=(()=>{class a{constructor(e,t,i){this.host=e,this.dir=t,this.option=i,this.moving=!1,this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this._keyEvent=this._keyEvent.bind(this),this._init()}_init(){let e=this.el=document.createElement("div");return e.classList.add("ui-resizable-handle"),e.classList.add(`${a.prefix}${this.dir}`),e.style.zIndex="100",e.style.userSelect="none",this.host.appendChild(this.el),this.el.addEventListener("mousedown",this._mouseDown),Ct&&(this.el.addEventListener("touchstart",Rn),this.el.addEventListener("pointerdown",Wn)),this}destroy(){return this.moving&&this._mouseUp(this.mouseDownEvent),this.el.removeEventListener("mousedown",this._mouseDown),Ct&&(this.el.removeEventListener("touchstart",Rn),this.el.removeEventListener("pointerdown",Wn)),this.host.removeChild(this.el),delete this.el,delete this.host,this}_mouseDown(e){this.mouseDownEvent=e,document.addEventListener("mousemove",this._mouseMove,{capture:!0,passive:!0}),document.addEventListener("mouseup",this._mouseUp,!0),Ct&&(this.el.addEventListener("touchmove",In),this.el.addEventListener("touchend",Nn)),e.stopPropagation(),e.preventDefault()}_mouseMove(e){let t=this.mouseDownEvent;this.moving?this._triggerEvent("move",e):Math.abs(e.x-t.x)+Math.abs(e.y-t.y)>2&&(this.moving=!0,this._triggerEvent("start",this.mouseDownEvent),this._triggerEvent("move",e),document.addEventListener("keydown",this._keyEvent)),e.stopPropagation()}_mouseUp(e){this.moving&&(this._triggerEvent("stop",e),document.removeEventListener("keydown",this._keyEvent)),document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),Ct&&(this.el.removeEventListener("touchmove",In),this.el.removeEventListener("touchend",Nn)),delete this.moving,delete this.mouseDownEvent,e.stopPropagation(),e.preventDefault()}_keyEvent(e){e.key==="Escape"&&(this.host.gridstackNode?.grid?.engine.restoreInitial(),this._mouseUp(this.mouseDownEvent))}_triggerEvent(e,t){return this.option[e]&&this.option[e](t),this}}return a.prefix="ui-resizable-",a})();var Oi=class{constructor(){this._eventRegister={}}get disabled(){return this._disabled}on(n,e){this._eventRegister[n]=e}off(n){delete this._eventRegister[n]}enable(){this._disabled=!1}disable(){this._disabled=!0}destroy(){delete this._eventRegister}triggerEvent(n,e){if(!this.disabled&&this._eventRegister&&this._eventRegister[n])return this._eventRegister[n](e)}};var Ed=(()=>{class a extends Oi{constructor(e,t={}){super(),this.el=e,this.option=t,this.rectScale={x:1,y:1},this._ui=()=>{let o=this.el.parentElement.getBoundingClientRect(),r={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},l=this.temporalRect||r;return{position:{left:(l.left-o.left)*this.rectScale.x,top:(l.top-o.top)*this.rectScale.y},size:{width:l.width*this.rectScale.x,height:l.height*this.rectScale.y}}},this._mouseOver=this._mouseOver.bind(this),this._mouseOut=this._mouseOut.bind(this),this.enable(),this._setupAutoHide(this.option.autoHide),this._setupHandlers()}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){super.enable(),this.el.classList.remove("ui-resizable-disabled"),this._setupAutoHide(this.option.autoHide)}disable(){super.disable(),this.el.classList.add("ui-resizable-disabled"),this._setupAutoHide(!1)}destroy(){this._removeHandlers(),this._setupAutoHide(!1),delete this.el,super.destroy()}updateOption(e){let t=e.handles&&e.handles!==this.option.handles,i=e.autoHide&&e.autoHide!==this.option.autoHide;return Object.keys(e).forEach(o=>this.option[o]=e[o]),t&&(this._removeHandlers(),this._setupHandlers()),i&&this._setupAutoHide(this.option.autoHide),this}_setupAutoHide(e){return e?(this.el.classList.add("ui-resizable-autohide"),this.el.addEventListener("mouseover",this._mouseOver),this.el.addEventListener("mouseout",this._mouseOut)):(this.el.classList.remove("ui-resizable-autohide"),this.el.removeEventListener("mouseover",this._mouseOver),this.el.removeEventListener("mouseout",this._mouseOut),se.overResizeElement===this&&delete se.overResizeElement),this}_mouseOver(e){se.overResizeElement||se.dragElement||(se.overResizeElement=this,this.el.classList.remove("ui-resizable-autohide"))}_mouseOut(e){se.overResizeElement===this&&(delete se.overResizeElement,this.el.classList.add("ui-resizable-autohide"))}_setupHandlers(){return this.handlers=this.option.handles.split(",").map(e=>e.trim()).map(e=>new Td(this.el,e,{start:t=>{this._resizeStart(t)},stop:t=>{this._resizeStop(t)},move:t=>{this._resizing(t,e)}})),this}_resizeStart(e){this.sizeToContent=M.shouldSizeToContent(this.el.gridstackNode,!0),this.originalRect=this.el.getBoundingClientRect(),this.scrollEl=M.getScrollElement(this.el),this.scrollY=this.scrollEl.scrollTop,this.scrolled=0,this.startEvent=e,this._setupHelper(),this._applyChange();let t=M.initEvent(e,{type:"resizestart",target:this.el});return this.option.start&&this.option.start(t,this._ui()),this.el.classList.add("ui-resizable-resizing"),this.triggerEvent("resizestart",t),this}_resizing(e,t){this.scrolled=this.scrollEl.scrollTop-this.scrollY,this.temporalRect=this._getChange(e,t),this._applyChange();let i=M.initEvent(e,{type:"resize",target:this.el});return this.option.resize&&this.option.resize(i,this._ui()),this.triggerEvent("resize",i),this}_resizeStop(e){let t=M.initEvent(e,{type:"resizestop",target:this.el});return this.option.stop&&this.option.stop(t),this.el.classList.remove("ui-resizable-resizing"),this.triggerEvent("resizestop",t),this._cleanHelper(),delete this.startEvent,delete this.originalRect,delete this.temporalRect,delete this.scrollY,delete this.scrolled,this}_setupHelper(){this.elOriginStyleVal=a._originStyleProp.map(i=>this.el.style[i]),this.parentOriginStylePosition=this.el.parentElement.style.position;let e=this.el.parentElement,t=M.getValuesFromTransformedElement(e);return this.rectScale={x:t.xScale,y:t.yScale},getComputedStyle(this.el.parentElement).position.match(/static/)&&(this.el.parentElement.style.position="relative"),this.el.style.position="absolute",this.el.style.opacity="0.8",this}_cleanHelper(){return a._originStyleProp.forEach((e,t)=>{this.el.style[e]=this.elOriginStyleVal[t]||null}),this.el.parentElement.style.position=this.parentOriginStylePosition||null,this}_getChange(e,t){let i=this.startEvent,o={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},r=e.clientX-i.clientX,l=this.sizeToContent?0:e.clientY-i.clientY,d,p;t.indexOf("e")>-1?o.width+=r:t.indexOf("w")>-1&&(o.width-=r,o.left+=r,d=!0),t.indexOf("s")>-1?o.height+=l:t.indexOf("n")>-1&&(o.height-=l,o.top+=l,p=!0);let s=this._constrainSize(o.width,o.height,d,p);return Math.round(o.width)!==Math.round(s.width)&&(t.indexOf("w")>-1&&(o.left+=o.width-s.width),o.width=s.width),Math.round(o.height)!==Math.round(s.height)&&(t.indexOf("n")>-1&&(o.top+=o.height-s.height),o.height=s.height),o}_constrainSize(e,t,i,o){let r=this.option,l=(i?r.maxWidthMoveLeft:r.maxWidth)||Number.MAX_SAFE_INTEGER,d=r.minWidth/this.rectScale.x||e,p=(o?r.maxHeightMoveUp:r.maxHeight)||Number.MAX_SAFE_INTEGER,s=r.minHeight/this.rectScale.y||t,c=Math.min(l,Math.max(d,e)),m=Math.min(p,Math.max(s,t));return{width:c,height:m}}_applyChange(){let e={left:0,top:0,width:0,height:0};if(this.el.style.position==="absolute"){let t=this.el.parentElement,{left:i,top:o}=t.getBoundingClientRect();e={left:i,top:o,width:0,height:0}}return this.temporalRect?(Object.keys(this.temporalRect).forEach(t=>{let i=this.temporalRect[t],o=t==="width"||t==="left"?this.rectScale.x:t==="height"||t==="top"?this.rectScale.y:1;this.el.style[t]=(i-e[t])*o+"px"}),this):this}_removeHandlers(){return this.handlers.forEach(e=>e.destroy()),delete this.handlers,this}}return a._originStyleProp=["width","height","position","left","top","opacity","zIndex"],a})();var qu='input,textarea,button,select,option,[contenteditable="true"],.ui-resizable-handle',Md=(()=>{class a extends Oi{constructor(e,t={}){super(),this.el=e,this.option=t,this.dragTransform={xScale:1,yScale:1,xOffset:0,yOffset:0};let i=t?.handle?.substring(1),o=e.gridstackNode;this.dragEls=!i||e.classList.contains(i)?[e]:o?.subGrid?[e.querySelector(t.handle)||e]:Array.from(e.querySelectorAll(t.handle)),this.dragEls.length===0&&(this.dragEls=[e]),this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this._keyEvent=this._keyEvent.bind(this),this.enable()}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){this.disabled!==!1&&(super.enable(),this.dragEls.forEach(e=>{e.addEventListener("mousedown",this._mouseDown),Ct&&(e.addEventListener("touchstart",Rn),e.addEventListener("pointerdown",Wn))}),this.el.classList.remove("ui-draggable-disabled"))}disable(e=!1){this.disabled!==!0&&(super.disable(),this.dragEls.forEach(t=>{t.removeEventListener("mousedown",this._mouseDown),Ct&&(t.removeEventListener("touchstart",Rn),t.removeEventListener("pointerdown",Wn))}),e||this.el.classList.add("ui-draggable-disabled"))}destroy(){this.dragTimeout&&window.clearTimeout(this.dragTimeout),delete this.dragTimeout,this.mouseDownEvent&&this._mouseUp(this.mouseDownEvent),this.disable(!0),delete this.el,delete this.helper,delete this.option,super.destroy()}updateOption(e){return Object.keys(e).forEach(t=>this.option[t]=e[t]),this}_mouseDown(e){if(!se.mouseHandled)return e.button!==0||!this.dragEls.find(t=>t===e.target)&&e.target.closest(qu)||this.option.cancel&&e.target.closest(this.option.cancel)||(this.mouseDownEvent=e,delete this.dragging,delete se.dragElement,delete se.dropElement,document.addEventListener("mousemove",this._mouseMove,{capture:!0,passive:!0}),document.addEventListener("mouseup",this._mouseUp,!0),Ct&&(e.currentTarget.addEventListener("touchmove",In),e.currentTarget.addEventListener("touchend",Nn)),e.preventDefault(),document.activeElement&&document.activeElement.blur(),se.mouseHandled=!0),!0}_callDrag(e){if(!this.dragging)return;let t=M.initEvent(e,{target:this.el,type:"drag"});this.option.drag&&this.option.drag(t,this.ui()),this.triggerEvent("drag",t)}_mouseMove(e){let t=this.mouseDownEvent;if(this.lastDrag=e,this.dragging)if(this._dragFollow(e),se.pauseDrag){let i=Number.isInteger(se.pauseDrag)?se.pauseDrag:100;this.dragTimeout&&window.clearTimeout(this.dragTimeout),this.dragTimeout=window.setTimeout(()=>this._callDrag(e),i)}else this._callDrag(e);else if(Math.abs(e.x-t.x)+Math.abs(e.y-t.y)>3){this.dragging=!0,se.dragElement=this;let i=this.el.gridstackNode?.grid;i?se.dropElement=i.el.ddElement.ddDroppable:delete se.dropElement,this.helper=this._createHelper(),this._setupHelperContainmentStyle(),this.dragTransform=M.getValuesFromTransformedElement(this.helperContainment),this.dragOffset=this._getDragOffset(e,this.el,this.helperContainment),this._setupHelperStyle(e);let o=M.initEvent(e,{target:this.el,type:"dragstart"});this.option.start&&this.option.start(o,this.ui()),this.triggerEvent("dragstart",o),document.addEventListener("keydown",this._keyEvent)}return!0}_mouseUp(e){if(document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),Ct&&e.currentTarget&&(e.currentTarget.removeEventListener("touchmove",In,!0),e.currentTarget.removeEventListener("touchend",Nn,!0)),this.dragging){delete this.dragging,delete this.el.gridstackNode?._origRotate,document.removeEventListener("keydown",this._keyEvent),se.dropElement?.el===this.el.parentElement&&delete se.dropElement,this.helperContainment.style.position=this.parentOriginStylePosition||null,this.helper!==this.el&&this.helper.remove(),this._removeHelperStyle();let t=M.initEvent(e,{target:this.el,type:"dragstop"});this.option.stop&&this.option.stop(t),this.triggerEvent("dragstop",t),se.dropElement&&se.dropElement.drop(e)}delete this.helper,delete this.mouseDownEvent,delete se.dragElement,delete se.dropElement,delete se.mouseHandled,e.preventDefault()}_keyEvent(e){let t=this.el.gridstackNode,i=t?.grid||se.dropElement?.el?.gridstack;if(e.key==="Escape")t&&t._origRotate&&(t._orig=t._origRotate,delete t._origRotate),i?.cancelDrag(),this._mouseUp(this.mouseDownEvent);else if(t&&i&&(e.key==="r"||e.key==="R")){if(!M.canBeRotated(t))return;t._origRotate=t._origRotate||$({},t._orig),delete t._moving,i.setAnimation(!1).rotate(t.el,{top:-this.dragOffset.offsetTop,left:-this.dragOffset.offsetLeft}).setAnimation(),t._moving=!0,this.dragOffset=this._getDragOffset(this.lastDrag,t.el,this.helperContainment),this.helper.style.width=this.dragOffset.width+"px",this.helper.style.height=this.dragOffset.height+"px",M.swap(t._orig,"w","h"),delete t._rect,this._mouseMove(this.lastDrag)}}_createHelper(){let e=this.el;return typeof this.option.helper=="function"?e=this.option.helper(this.el):this.option.helper==="clone"&&(e=M.cloneNode(this.el)),e.parentElement||M.appendTo(e,this.option.appendTo==="parent"?this.el.parentElement:this.option.appendTo),this.dragElementOriginStyle=a.originStyleProp.map(t=>this.el.style[t]),e}_setupHelperStyle(e){this.helper.classList.add("ui-draggable-dragging");let t=this.helper.style;return t.pointerEvents="none",t.width=this.dragOffset.width+"px",t.height=this.dragOffset.height+"px",t.willChange="left, top",t.position="fixed",this._dragFollow(e),t.transition="none",setTimeout(()=>{this.helper&&(t.transition=null)},0),this}_removeHelperStyle(){if(this.helper.classList.remove("ui-draggable-dragging"),!this.helper?.gridstackNode?._isAboutToRemove&&this.dragElementOriginStyle){let t=this.helper,i=this.dragElementOriginStyle.transition||null;t.style.transition=this.dragElementOriginStyle.transition="none",a.originStyleProp.forEach(o=>t.style[o]=this.dragElementOriginStyle[o]||null),setTimeout(()=>t.style.transition=i,50)}return delete this.dragElementOriginStyle,this}_dragFollow(e){let t={left:0,top:0},i=this.helper.style,o=this.dragOffset;i.left=(e.clientX+o.offsetLeft-t.left)*this.dragTransform.xScale+"px",i.top=(e.clientY+o.offsetTop-t.top)*this.dragTransform.yScale+"px"}_setupHelperContainmentStyle(){return this.helperContainment=this.helper.parentElement,this.helper.style.position!=="fixed"&&(this.parentOriginStylePosition=this.helperContainment.style.position,getComputedStyle(this.helperContainment).position.match(/static/)&&(this.helperContainment.style.position="relative")),this}_getDragOffset(e,t,i){let o=0,r=0;i&&(o=this.dragTransform.xOffset,r=this.dragTransform.yOffset);let l=t.getBoundingClientRect();return{left:l.left,top:l.top,offsetLeft:-e.clientX+l.left-o,offsetTop:-e.clientY+l.top-r,width:l.width*this.dragTransform.xScale,height:l.height*this.dragTransform.yScale}}ui(){let t=this.el.parentElement.getBoundingClientRect(),i=this.helper.getBoundingClientRect();return{position:{top:(i.top-t.top)*this.dragTransform.yScale,left:(i.left-t.left)*this.dragTransform.xScale}}}}return a.originStyleProp=["width","height","transform","transform-origin","transition","pointerEvents","position","left","top","minWidth","willChange"],a})();var so=class extends Oi{constructor(n,e={}){super(),this.el=n,this.option=e,this._mouseEnter=this._mouseEnter.bind(this),this._mouseLeave=this._mouseLeave.bind(this),this.enable(),this._setupAccept()}on(n,e){super.on(n,e)}off(n){super.off(n)}enable(){this.disabled!==!1&&(super.enable(),this.el.classList.add("ui-droppable"),this.el.classList.remove("ui-droppable-disabled"),this.el.addEventListener("mouseenter",this._mouseEnter),this.el.addEventListener("mouseleave",this._mouseLeave),Ct&&(this.el.addEventListener("pointerenter",Cr),this.el.addEventListener("pointerleave",kr)))}disable(n=!1){this.disabled!==!0&&(super.disable(),this.el.classList.remove("ui-droppable"),n||this.el.classList.add("ui-droppable-disabled"),this.el.removeEventListener("mouseenter",this._mouseEnter),this.el.removeEventListener("mouseleave",this._mouseLeave),Ct&&(this.el.removeEventListener("pointerenter",Cr),this.el.removeEventListener("pointerleave",kr)))}destroy(){this.disable(!0),this.el.classList.remove("ui-droppable"),this.el.classList.remove("ui-droppable-disabled"),super.destroy()}updateOption(n){return Object.keys(n).forEach(e=>this.option[e]=n[e]),this._setupAccept(),this}_mouseEnter(n){if(!se.dragElement||!this._canDrop(se.dragElement.el))return;n.preventDefault(),n.stopPropagation(),se.dropElement&&se.dropElement!==this&&se.dropElement._mouseLeave(n,!0),se.dropElement=this;let e=M.initEvent(n,{target:this.el,type:"dropover"});this.option.over&&this.option.over(e,this._ui(se.dragElement)),this.triggerEvent("dropover",e),this.el.classList.add("ui-droppable-over")}_mouseLeave(n,e=!1){if(!se.dragElement||se.dropElement!==this)return;n.preventDefault(),n.stopPropagation();let t=M.initEvent(n,{target:this.el,type:"dropout"});if(this.option.out&&this.option.out(t,this._ui(se.dragElement)),this.triggerEvent("dropout",t),se.dropElement===this&&(delete se.dropElement,!e)){let i,o=this.el.parentElement;for(;!i&&o;)i=o.ddElement?.ddDroppable,o=o.parentElement;i&&i._mouseEnter(n)}}drop(n){n.preventDefault();let e=M.initEvent(n,{target:this.el,type:"drop"});this.option.drop&&this.option.drop(e,this._ui(se.dragElement)),this.triggerEvent("drop",e)}_canDrop(n){return n&&(!this.accept||this.accept(n))}_setupAccept(){return this.option.accept?(typeof this.option.accept=="string"?this.accept=n=>n.classList.contains(this.option.accept)||n.matches(this.option.accept):this.accept=this.option.accept,this):this}_ui(n){return $({draggable:n.el},n.ui())}};var lo=class a{static init(n){return n.ddElement||(n.ddElement=new a(n)),n.ddElement}constructor(n){this.el=n}on(n,e){return this.ddDraggable&&["drag","dragstart","dragstop"].indexOf(n)>-1?this.ddDraggable.on(n,e):this.ddDroppable&&["drop","dropover","dropout"].indexOf(n)>-1?this.ddDroppable.on(n,e):this.ddResizable&&["resizestart","resize","resizestop"].indexOf(n)>-1&&this.ddResizable.on(n,e),this}off(n){return this.ddDraggable&&["drag","dragstart","dragstop"].indexOf(n)>-1?this.ddDraggable.off(n):this.ddDroppable&&["drop","dropover","dropout"].indexOf(n)>-1?this.ddDroppable.off(n):this.ddResizable&&["resizestart","resize","resizestop"].indexOf(n)>-1&&this.ddResizable.off(n),this}setupDraggable(n){return this.ddDraggable?this.ddDraggable.updateOption(n):this.ddDraggable=new Md(this.el,n),this}cleanDraggable(){return this.ddDraggable&&(this.ddDraggable.destroy(),delete this.ddDraggable),this}setupResizable(n){return this.ddResizable?this.ddResizable.updateOption(n):this.ddResizable=new Ed(this.el,n),this}cleanResizable(){return this.ddResizable&&(this.ddResizable.destroy(),delete this.ddResizable),this}setupDroppable(n){return this.ddDroppable?this.ddDroppable.updateOption(n):this.ddDroppable=new so(this.el,n),this}cleanDroppable(){return this.ddDroppable&&(this.ddDroppable.destroy(),delete this.ddDroppable),this}};var co=class{resizable(n,e,t,i){return this._getDDElements(n,e).forEach(o=>{if(e==="disable"||e==="enable")o.ddResizable&&o.ddResizable[e]();else if(e==="destroy")o.ddResizable&&o.cleanResizable();else if(e==="option")o.setupResizable({[t]:i});else{let l=o.el.gridstackNode.grid,d=o.el.getAttribute("gs-resize-handles")||l.opts.resizable.handles||"e,s,se";d==="all"&&(d="n,e,s,w,se,sw,ne,nw");let p=!l.opts.alwaysShowResizeHandle;o.setupResizable(Ze($({},l.opts.resizable),{handles:d,autoHide:p,start:e.start,stop:e.stop,resize:e.resize}))}}),this}draggable(n,e,t,i){return this._getDDElements(n,e).forEach(o=>{if(e==="disable"||e==="enable")o.ddDraggable&&o.ddDraggable[e]();else if(e==="destroy")o.ddDraggable&&o.cleanDraggable();else if(e==="option")o.setupDraggable({[t]:i});else{let r=o.el.gridstackNode.grid;o.setupDraggable(Ze($({},r.opts.draggable),{start:e.start,stop:e.stop,drag:e.drag}))}}),this}dragIn(n,e){return this._getDDElements(n).forEach(t=>t.setupDraggable(e)),this}droppable(n,e,t,i){return typeof e.accept=="function"&&!e._accept&&(e._accept=e.accept,e.accept=o=>e._accept(o)),this._getDDElements(n,e).forEach(o=>{e==="disable"||e==="enable"?o.ddDroppable&&o.ddDroppable[e]():e==="destroy"?o.ddDroppable&&o.cleanDroppable():e==="option"?o.setupDroppable({[t]:i}):o.setupDroppable(e)}),this}isDroppable(n){return!!(n?.ddElement?.ddDroppable&&!n.ddElement.ddDroppable.disabled)}isDraggable(n){return!!(n?.ddElement?.ddDraggable&&!n.ddElement.ddDraggable.disabled)}isResizable(n){return!!(n?.ddElement?.ddResizable&&!n.ddElement.ddResizable.disabled)}on(n,e,t){return this._getDDElements(n).forEach(i=>i.on(e,o=>{t(o,se.dragElement?se.dragElement.el:o.target,se.dragElement?se.dragElement.helper:null)})),this}off(n,e){return this._getDDElements(n).forEach(t=>t.off(e)),this}_getDDElements(n,e){let t=n.gridstack||e!=="destroy"&&e!=="disable",i=M.getElements(n);return i.length?i.map(r=>r.ddElement||(t?lo.init(r):null)).filter(r=>r):[]}};var kt=new co,Ln=(()=>{class a{static init(e={},t=".grid-stack"){if(typeof document>"u")return null;let i=a.getGridElement(t);return i?(i.gridstack||(i.gridstack=new a(i,M.cloneDeep(e))),i.gridstack):(console.error(typeof t=="string"?'GridStack.initAll() no grid was found with selector "'+t+`" - element missing or wrong selector ?
1
+ import{a as bn,b as Cn,c as kn,d as id,e as nd,f as ad,g as od}from"./chunk-HHR4WMHS.js";import{A as hd,B as ud,C as En,D as Pi,E as wt,F as Mn,G as Dn,H as An,I as no,J as ao,K as md,L as Pn,M as On,a as tt,b as Mi,c as Di,d as Xa,e as $i,f as ca,g as Xt,h as Ai,i as Wt,j as Za,k as Ja,l as xn,m as Yi,n as eo,o as to,p as Zt,q as yr,r as io,s as ha,t as cd,u as br,v as wr,w as _r,x as Sr,y as Tn,z as ua}from"./chunk-EOXCM3IV.js";import{f as At}from"./chunk-SVI34QP4.js";import{a as yd,b as bd,c as wd,d as _d}from"./chunk-AREYGJLO.js";import{a as ed,b as td,c as rd,d as sd,e as ld,f as dd,g as Ka,h as Qa,i as pd}from"./chunk-QZO4362R.js";import{b as Sd,g as Cd}from"./chunk-4N6AW5Y5.js";import{a as gd,b as fd,c as vd}from"./chunk-ZGO25KK6.js";import{c as hi}from"./chunk-B6IRZFL5.js";import"./chunk-5NKFZDV5.js";import{a as nt,b as Dt}from"./chunk-RNSD64U3.js";import{a as Jl}from"./chunk-KABAIECE.js";import{A as Zl,a as Nt,b as _n,c as J,d as Sn,e as Ti,f as Bl,g as Ei,m as $l}from"./chunk-WUFURHSA.js";import{K as Xl,a as di,b as vl,c as yl,e as wn,f as Fa,h as Ft,i as Ha,j as Mt,l as Yl,q as Kl,x as Ql}from"./chunk-ZOYXBB55.js";import{a as da,b as Fl,c as Hl,f as fr,j as Ul,k as Ya,n as Gl,o as ql,p as jl,s as vr}from"./chunk-O2GGGUBC.js";import{$b as li,$c as Pl,$d as ft,Ab as gi,Ac as ml,Ba as Ia,Bb as fi,C as rr,Ca as Na,D as Ra,Da as Ks,Db as te,Dc as pl,Dd as Vl,Ea as ur,Eb as be,F as Hs,Fa as k,Fb as al,Fc as gl,Ga as Qs,Gb as we,Gc as fl,Gd as gr,Ha as Xs,Hb as ki,Hd as bt,Ia as Zs,Ib as ol,Id as pt,J as Us,Ja as Et,Jb as qi,Jc as bl,Kb as b,Kc as wl,La as mr,Lb as He,Lc as _l,M as sr,Ma as Js,Mb as rt,Mc as Sl,Md as ja,Nb as rl,O as Gs,Oa as F,Oc as mt,Od as la,P as qs,Pa as ri,Pb as ge,Pc as St,Qa as si,Qb as fe,Qc as Cl,R as lr,Ra as el,Rb as ve,Rc as kl,S as hn,Sa as ce,Sb as sl,Sc as xl,Tb as ll,Tc as Ua,Ua as Wa,Ub as dl,Uc as Tl,Va as tl,Vb as xi,Vc as El,Wa as _t,Wc as Ml,Wd as zl,X as js,Xa as Je,Xc as ci,Ya as oa,Yd as gt,Z as dr,Zc as Dl,Zd as $a,_a as il,_c as Al,a as $,aa as qe,ab as ae,ac as Ba,b as Ze,bb as De,bc as fn,c as Vs,ca as st,cb as Ae,cc as pr,d as Bs,da as ai,db as Si,dc as Ke,e as Aa,ea as cr,ec as ct,f as Ui,fa as un,fb as Bt,fc as ne,g as Pa,ga as E,gb as zt,gc as cl,gd as Ol,ha as $s,hb as z,ib as v,j as Qt,ja as P,jb as _,jc as vn,ka as O,kb as G,kc as B,l as _i,la as re,lb as A,lc as ie,ma as et,mb as W,na as Gi,nb as Q,nc as ji,nd as Rl,oa as mn,ob as La,oc as yn,od as Il,pa as oi,pb as Va,q as zs,qc as za,qd as Ga,r as ar,ra as K,rb as Y,t as Oa,tb as I,td as Nl,ua as pn,ub as ra,uc as hl,v as or,va as Ys,vb as U,vd as Wl,w as pi,wa as Ye,wb as sa,wd as Ll,x as Fs,xb as gn,xc as ul,xd as qa,yb as nl,za as hr,zb as Ci}from"./chunk-DSWRNQDG.js";var jr=Bs((ES,To)=>{(function(a){"use strict";function n(u){if(Array.isArray(u)){for(var h=0,g=Array(u.length);h<u.length;h++)g[h]=u[h];return g}return Array.from(u)}function e(u,h){if(!u)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!h||typeof h!="object"&&typeof h!="function"?u:h}function t(u,h){if(typeof h!="function"&&h!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof h);u.prototype=Object.create(h&&h.prototype,{constructor:{value:u,enumerable:!1,writable:!0,configurable:!0}}),h&&(Object.setPrototypeOf?Object.setPrototypeOf(u,h):u.__proto__=h)}function i(u,h){if(!(u instanceof h))throw new TypeError("Cannot call a class as a function")}function o(u,h){if(h||(h=typeof window>"u"?global:window),h[u]!==void 0)return h[u];if(Da===null){var g=window.getComputedStyle(document.documentElement,"");Da=(Array.prototype.slice.call(g).join("").match(/-(moz|webkit|ms)-/)||g.OLink===""&&["","o"]||["",""])[1]}if(Da==="")return null;var w=u.charAt(0).toUpperCase()+u.substr(1),C=h[Da+w];return C!==void 0?C:null}function r(u,h,g,w,C,T,D){if(typeof w!="function")throw new TypeError("Invalid animation rule:",w);var N=u-g,R=N/C,L=0;R>1&&(R=1),R!==1&&(L=w(R),isFinite(L)&&!isNaN(L)&&(R=L)),h&&h(R),N<C?D.frame=Rs(function(q){return r(q,h,g,w,C,T,D)}):(T&&T(),D.inProgress=!1)}function l(){Array.prototype.constructor.apply(this,arguments)}function d(u){if(!(u instanceof DOMException&&u.result===2152923147))throw u}function p(u,h){return h.replace(Hu,function(g,w){var C=u[w];return C!==void 0?C:g})}function s(u){return u.majorTicks instanceof Array||(u.majorTicks=u.majorTicks?[u.majorTicks]:[]),u.majorTicks.length||(u.majorTicks.push(oe.formatMajorTickNumber(u.minValue,u)),u.majorTicks.push(oe.formatMajorTickNumber(u.maxValue,u))),[u.tickSide!=="right",u.tickSide!=="left"]}function c(u,h,g,w,C,T){u.beginPath(),u.moveTo(h+T,g),u.lineTo(h+w-T,g),u.quadraticCurveTo(h+w,g,h+w,g+T),u.lineTo(h+w,g+C-T),u.quadraticCurveTo(h+w,g+C,h+w-T,g+C),u.lineTo(h+T,g+C),u.quadraticCurveTo(h,g+C,h,g+C-T),u.lineTo(h,g+T),u.quadraticCurveTo(h,g,h+T,g),u.closePath()}function m(u,h){var g=h.valueDec,w=h.valueInt,C=0,T=void 0,D=void 0,N=void 0;if(u=parseFloat(u),N=u<0,u=Math.abs(u),g>0){for(D=u.toFixed(g).toString().split("."),T=w-D[0].length;C<T;++C)D[0]="0"+D[0];D=(N?"-":"")+D[0]+"."+D[1]}else{for(D=Math.round(u).toString(),T=w-D.length;C<T;++C)D="0"+D;D=(N?"-":"")+D}return D}function f(u,h){var g=void 0,w=!1;return g=h.majorTicksDec===0?Math.round(u).toString():u.toFixed(h.majorTicksDec),h.majorTicksInt>1?(w=~g.indexOf("."),~g.indexOf("-")?"-"+[h.majorTicksInt+h.majorTicksDec+2+(w?1:0)-g.length].join("0")+g.replace("-",""):[h.majorTicksInt+h.majorTicksDec+1+(w?1:0)-g.length].join("0")+g):g}function y(u){return u*Math.PI/180}function S(u,h){return{x:-u*Math.sin(h),y:u*Math.cos(h)}}function x(u,h,g,w){var C=!(arguments.length>4&&arguments[4]!==void 0)||arguments[4],T=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0,D=u.createLinearGradient(C?0:T,C?T:0,C?0:w,C?w:0);return D.addColorStop(0,h),D.addColorStop(1,g),D}function V(u,h){h.needleShadow&&(u.shadowOffsetX=2,u.shadowOffsetY=2,u.shadowBlur=10,u.shadowColor=h.colorNeedleShadowDown)}function H(u,h,g){return u["font"+h+"Style"]+" "+u["font"+h+"Weight"]+" "+u["font"+h+"Size"]*g+"px "+u["font"+h]}function Z(u){u.shadowOffsetX=null,u.shadowOffsetY=null,u.shadowBlur=null,u.shadowColor="",u.strokeStyle=null,u.lineWidth=0,u.save()}function me(u,h,g,w){h.valueTextShadow&&(u.shadowOffsetX=g,u.shadowOffsetY=g,u.shadowBlur=w,u.shadowColor=h.colorValueTextShadow)}function Oe(u,h,g,w,C,T){if(h.valueBox){Z(u);var D=h.valueDec?1+h.valueDec:0,N="9".repeat(Math.max.apply(null,[String(parseInt(g)).length+D].concat(h.majorTicks.map(function(Ve){return String(parseInt(Ve,10)).length+D})))),R=h.valueText||m(g,h),L=T/200,q=T/100,j=.4*q,ue=1.2*q;u.font=H(h,"Value",L),me(u,h,j,ue);var _e=u.measureText(h.valueText?R:"-"+m(Number(N),h)).width;Z(u);var Ee=parseFloat(h.fontValueSize)*L+j+ue,Ge=q*parseFloat(h.valueBoxStroke),xe=2*T-2*Ge,ze=_e+10*q,Fe=1.1*Ee+j+ue,je=q*h.valueBoxBorderRadius,Ne=(parseFloat(h.valueBoxWidth)||0)/100*xe;Ne>ze&&(ze=Ne),ze>xe&&(ze=xe);var Le=w-ze/2,Ie=C-Fe/2,ke=C-5.75*q;if(u.beginPath(),je?c(u,Le,Ie,ze,Fe,je):u.rect(Le,Ie,ze,Fe),Ge){var Me=u.createRadialGradient(w,ke,10*q,w,ke,20*q);Me.addColorStop(0,h.colorValueBoxRect),Me.addColorStop(1,h.colorValueBoxRectEnd),u.strokeStyle=Me,u.lineWidth=Ge,u.stroke()}h.colorValueBoxShadow&&(u.shadowBlur=1.2*q,u.shadowColor=h.colorValueBoxShadow),h.colorValueBoxBackground&&(u.fillStyle=h.colorValueBoxBackground,u.fill()),u.closePath(),u.restore(),me(u,h,j,ue),u.fillStyle=h.colorValueText,u.textAlign="center",u.textBaseline="alphabetic",u.fillText(R,Le+ze/2,C+Fe/2-Ee/3),u.restore()}}function Be(u){var h=u.value,g=u.minValue,w=u.maxValue,C=.01*(w-g);return{normal:h<g?g:h>w?w:h,indented:h<g?g-C:h>w?w+C:h}}function ye(u,h,g,w,C){g.beginPath(),g.arc(0,0,Kt(u),0,2*na,!0),g.lineWidth=h,g.strokeStyle=C?oe.linearGradient(g,w,C,u):w,g.stroke(),g.closePath()}function X(u,h){var g=Yt.pixelRatio;return u.maxRadius||(u.maxRadius=u.max-h.borderShadowWidth-h.borderOuterWidth*g-h.borderMiddleWidth*g-h.borderInnerWidth*g+(h.borderOuterWidth?.5:0)+(h.borderMiddleWidth?.5:0)+(h.borderInnerWidth?.5:0)),u.maxRadius}function Te(u,h){function g(j,ue,_e,Ee,Ge,xe){return ue&&(!xe&&h.borderShadowWidth&&(_e.save(),_e.shadowBlur=h.borderShadowWidth,_e.shadowColor=h.colorBorderShadow),ye(j,ue*w,_e,Ee,Ge),!xe&&h.borderShadowWidth&&(xe=!0,_e.restore())),xe}var w=Yt.pixelRatio,C=h.borderShadowWidth*w,T=u.max-C-h.borderOuterWidth*w/2,D=T-h.borderOuterWidth*w/2-h.borderMiddleWidth*w/2+.5,N=D-h.borderMiddleWidth*w/2-h.borderInnerWidth*w/2+.5,R=X(u,h),L=void 0,q=!1;u.save(),q=g(T,h.borderOuterWidth,u,h.colorBorderOuter,h.colorBorderOuterEnd,q),q=g(D,h.borderMiddleWidth,u,h.colorBorderMiddle,h.colorBorderMiddleEnd,q),q=g(N,h.borderInnerWidth,u,h.colorBorderInner,h.colorBorderInnerEnd,q),!q&&h.borderShadowWidth&&(u.shadowBlur=h.borderShadowWidth,u.shadowColor=h.colorBorderShadow),u.beginPath(),u.arc(0,0,Kt(R),0,2*na,!0),h.colorPlateEnd?(L=u.createRadialGradient(0,0,R/2,0,0,R),L.addColorStop(0,h.colorPlate),L.addColorStop(1,h.colorPlateEnd)):L=h.colorPlate,u.fillStyle=L,u.fill(),u.closePath(),u.restore()}function Ue(u,h){if(h.highlights!=="false"&&h.highlights.length&&h.highlightsWidth!==0){var g=u.max*(parseFloat(h.highlightsWidth)||0)/100,w=Kt(Qe(u,h)-g/2),C=h.highlights.length,T=(h.maxValue-h.minValue)/h.ticksAngle;u.save();for(var D=0;D<C;D++){var N=h.highlights[D];u.lineWidth=g,u.lineCap=h.highlightsLineCap,u.strokeStyle=N.color,u.beginPath(),u.rotate(nr),u.arc(0,0,w,oe.radians(h.startAngle+(N.from-h.minValue)/T),oe.radians(h.startAngle+(N.to-h.minValue)/T),!1),u.stroke(),u.closePath(),u.restore(),u.save()}u.restore()}}function ht(u,h){var g=Qe(u,h),w=void 0,C=void 0,T=void 0,D=0,N=Math.abs(h.minorTicks)||0,R=h.ticksAngle/(h.maxValue-h.minValue);h.exactTicks?(C=h.maxValue-h.minValue,w=N?C/N:0,D=(ni.mod(h.majorTicks[0],N)||0)*R):w=N*(h.majorTicks.length-1),u.lineWidth=Yt.pixelRatio,u.strokeStyle=h.colorMinorTicks||h.colorStrokeTicks,u.save();for(var L=0;L<w;++L)(T=h.startAngle+D+L*(h.ticksAngle/w))<=h.ticksAngle+h.startAngle&&(u.rotate(oe.radians(T)),u.beginPath(),u.moveTo(0,g),u.lineTo(0,g-.075*u.max),ti(u));u.restore()}function Qe(u,h){var g=u.max/100;return X(u,h)-5*g-(h.barWidth?2*(parseFloat(h.barStrokeWidth)||0)+((parseFloat(h.barWidth)||0)+5)*g:0)}function Xe(u,h){oe.prepareTicks(h);var g=Kt(Qe(u,h)),w=void 0,C=h.majorTicks.length,T=Yt.pixelRatio;u.lineWidth=2*T,w=h.colorMajorTicks instanceof Array?h.colorMajorTicks:new Array(C).fill(h.colorStrokeTicks||h.colorMajorTicks);for(var D=0;D<C;++D)u.save(),u.strokeStyle=w[D],u.rotate(oe.radians(lt(h,h.exactTicks?h.majorTicks[D]:D,C))),u.beginPath(),u.moveTo(0,g),u.lineTo(0,g-.15*u.max),u.stroke(),u.closePath(),u.restore();h.strokeTicks&&(u.save(),u.strokeStyle=h.colorStrokeTicks||w[0],u.rotate(nr),u.beginPath(),u.arc(0,0,g,oe.radians(h.startAngle),oe.radians(h.startAngle+h.ticksAngle),!1),u.stroke(),u.closePath(),u.restore())}function lt(u,h,g){if(u.exactTicks){var w=u.ticksAngle/(u.maxValue-u.minValue);return u.startAngle+w*(h-u.minValue)}return u.startAngle+h*(u.ticksAngle/(g-1))}function ti(u){u.stroke(),u.restore(),u.closePath(),u.save()}function ee(u,h){var g=Qe(u,h)-.15*u.max,w={},C=0,T=h.majorTicks.length,D=h.animationTarget!=="needle",N=h.colorNumbers instanceof Array?h.colorNumbers:new Array(T).fill(h.colorNumbers),R=D?-(h.value-h.minValue)/(h.maxValue-h.minValue)*h.ticksAngle:0;for(D&&(u.save(),u.rotate(-oe.radians(R))),u.font=oe.font(h,"Numbers",u.max/200),u.lineWidth=0,u.textAlign="center",u.textBaseline="middle";C<T;++C){var L=R+lt(h,h.exactTicks?h.majorTicks[C]:C,T),q=u.measureText(h.majorTicks[C]).width,j=h.fontNumbersSize,ue=Math.sqrt(q*q+j*j)/2,_e=oe.radialPoint(g-ue-h.numbersMargin/100*u.max,oe.radians(L));L===360&&(L=0),w[L]||(w[L]=!0,u.fillStyle=N[C],u.fillText(h.majorTicks[C],_e.x,_e.y))}D&&u.restore()}function de(u,h){h.title&&(u.save(),u.font=oe.font(h,"Title",u.max/200),u.fillStyle=h.colorTitle,u.textAlign="center",u.fillText(h.title,0,-u.max/4.25,.8*u.max),u.restore())}function pe(u,h){h.units&&(u.save(),u.font=oe.font(h,"Units",u.max/200),u.fillStyle=h.colorUnits,u.textAlign="center",u.fillText(oe.formatContext(h,h.units),0,u.max/3.25,.8*u.max),u.restore())}function We(u,h){if(h.needle){var g=h.animationTarget!=="needle",w=h.ticksAngle<360?oe.normalizedValue(h).indented:h.value,C=g?h.startAngle:h.startAngle+(w-h.minValue)/(h.maxValue-h.minValue)*h.ticksAngle;h.barStartPosition==="right"&&(C=h.startAngle+h.ticksAngle-(w-h.minValue)/(h.maxValue-h.minValue)*h.ticksAngle);var T=X(u,h),D=Kt(T/100*h.needleCircleSize),N=Kt(T/100*h.needleCircleSize*.75),R=Kt(T/100*h.needleEnd),L=Kt(h.needleStart?T/100*h.needleStart:0),q=T/100*h.needleWidth,j=T/100*h.needleWidth/2,ue=Yt.pixelRatio;u.save(),oe.drawNeedleShadow(u,h),u.rotate(oe.radians(C)),u.fillStyle=oe.linearGradient(u,h.colorNeedle,h.colorNeedleEnd,R-L),h.needleType==="arrow"?(u.beginPath(),u.moveTo(-j,-L),u.lineTo(-q,0),u.lineTo(-1*ue,R),u.lineTo(ue,R),u.lineTo(q,0),u.lineTo(j,-L),u.closePath(),u.fill(),u.beginPath(),u.lineTo(-.5*ue,R),u.lineTo(-1*ue,R),u.lineTo(-q,0),u.lineTo(-j,-L),u.lineTo(j/2*ue-2*ue,-L),u.closePath(),u.fillStyle=h.colorNeedleShadowUp,u.fill()):(u.beginPath(),u.moveTo(-j,R),u.lineTo(-j,L),u.lineTo(j,L),u.lineTo(j,R),u.closePath(),u.fill()),u.restore(),h.needleCircleSize&&(u.save(),oe.drawNeedleShadow(u,h),h.needleCircleOuter&&(u.beginPath(),u.arc(0,0,D,0,2*na,!0),u.fillStyle=oe.linearGradient(u,h.colorNeedleCircleOuter,h.colorNeedleCircleOuterEnd,D),u.fill(),u.closePath()),h.needleCircleInner&&(u.beginPath(),u.arc(0,0,N,0,2*na,!0),u.fillStyle=oe.linearGradient(u,h.colorNeedleCircleInner,h.colorNeedleCircleInnerEnd,N),u.fill(),u.closePath()),u.restore())}}function dt(u,h,g){oe.drawValueBox(u,h,g,0,u.max-.33*u.max,u.max)}function Lt(u){var h=u.startAngle,g=u.startAngle+u.ticksAngle,w=h,C=h+(oe.normalizedValue(u).normal-u.minValue)/(u.maxValue-u.minValue)*u.ticksAngle;if(u.barStartPosition==="middle"){var T=.5*(u.minValue+u.maxValue);u.value<T?(w=180-(T-oe.normalizedValue(u).normal)/(u.maxValue-u.minValue)*u.ticksAngle,C=180):(w=180,C=180+(oe.normalizedValue(u).normal-T)/(u.maxValue-u.minValue)*u.ticksAngle)}else u.barStartPosition==="right"&&(w=g-C+h,C=g);return{startAngle:w,endAngle:C}}function yt(u,h){var g=u.max/100,w=X(u,h)-5*g,C=parseFloat(h.barStrokeWidth+"")||0,T=(parseFloat(h.barWidth+"")||0)*g,D=w-2*C-T,N=(w-D)/2,R=D+N,L=C/R,q=h.startAngle,j=h.startAngle+h.ticksAngle;if(u.save(),u.rotate(nr),C&&(u.beginPath(),u.arc(0,0,R,oe.radians(q)-L,oe.radians(j)+L,!1),u.strokeStyle=h.colorBarStroke,u.lineWidth=2*N,u.stroke(),u.closePath()),T&&(u.beginPath(),u.arc(0,0,R,oe.radians(q),oe.radians(j),!1),u.strokeStyle=h.colorBar,u.lineWidth=T,u.stroke(),u.closePath(),h.barShadow&&(u.save(),u.beginPath(),u.arc(0,0,w,oe.radians(q),oe.radians(j),!1),u.clip(),u.beginPath(),u.strokeStyle=h.colorBar,u.lineWidth=1,u.shadowBlur=h.barShadow,u.shadowColor=h.colorBarShadow,u.shadowOffsetX=0,u.shadowOffsetY=0,u.arc(0,0,w,oe.radians(h.startAngle),oe.radians(h.startAngle+h.ticksAngle),!1),u.stroke(),u.closePath(),u.restore()),h.barProgress)){var ue=Lt(h),_e=ue.startAngle,Ee=ue.endAngle;u.beginPath(),u.arc(0,0,R,oe.radians(_e),oe.radians(Ee),!1),u.strokeStyle=h.colorBarProgress,u.lineWidth=T,u.stroke(),u.closePath()}u.restore()}function $t(u){return u.options.animatedValue?u.options.value:u.value}function at(u,h,g,w,C,T,D,N){u.beginPath(),u.fillStyle=N?oe.linearGradient(u,D,N,C>T?C:T,T>C,C>T?g:w):D,h>0?oe.roundRect(u,g,w,C,T,h):u.rect(g,w,C,T),u.fill(),u.closePath()}function Ta(u,h,g,w,C,T,D,N,R){u.beginPath(),u.lineWidth=h,u.strokeStyle=R?oe.linearGradient(u,N,R,D,!0,C):N,g>0?oe.roundRect(u,w,C,T,D,g):u.rect(w,C,T,D),u.stroke(),u.closePath()}function Zo(u,h,g,w,C,T){function D(Ve,$e,ot,Tt){return Ve&&(!Tt&&h.borderShadowWidth&&(u.save(),u.shadowBlur=h.borderShadowWidth,u.shadowColor=h.colorBorderShadow),Ta(u,Ve*N,R,g+Ve*N/2-ke,w+Ve*N/2-ke,L,_e,$e,ot),ke+=.5*N,!Tt&&h.borderShadowWidth&&(Tt=!0,u.restore())),Tt}var N=Yt.pixelRatio,R=h.borderRadius*N,L=C-h.borderShadowWidth-h.borderOuterWidth*N,q=L-h.borderOuterWidth*N-h.borderMiddleWidth*N,j=q-h.borderMiddleWidth*N-h.borderInnerWidth*N,ue=j-h.borderInnerWidth*N,_e=T-h.borderShadowWidth-h.borderOuterWidth*N,Ee=_e-h.borderOuterWidth*N-h.borderMiddleWidth*N,Ge=Ee-h.borderMiddleWidth*N-h.borderInnerWidth*N,xe=Ge-h.borderInnerWidth*N,ze=g-(q-L)/2,Fe=ze-(j-q)/2,je=Fe-(ue-j)/2,Ne=w-(Ee-_e)/2,Le=Ne-(Ge-Ee)/2,Ie=Le-(xe-Ge)/2,ke=0,Me=!1;return u.save(),Me=D(h.borderOuterWidth,h.colorBorderOuter,h.colorBorderOuterEnd,Me),Me=D(h.borderMiddleWidth,h.colorBorderMiddle,h.colorBorderMiddleEnd,Me),Me=D(h.borderInnerWidth,h.colorBorderInner,h.colorBorderInnerEnd,Me),!Me&&h.borderShadowWidth&&(u.shadowBlur=h.borderShadowWidth,u.shadowColor=h.colorBorderShadow),at(u,R,je,Ie,ue+2*ke,xe+2*ke,h.colorPlate,h.colorPlateEnd),u.restore(),[je,Ie,ue,xe]}function ut(u,h,g,w,C,T){var D=Yt.pixelRatio,N=T>=C,R=N?.85*C:T,L=N?T:C;g=N?Re(g+(C-R)/2):g;var q=!!h.title,j=!!h.units,ue=!!h.valueBox,_e=void 0,Ee=void 0,Ge=void 0;N?(Ee=Re(.05*L),_e=Re(.075*L),Ge=Re(.11*L),q&&(L-=_e,w+=_e),j&&(L-=Ee),ue&&(L-=Ge)):(Ee=_e=Re(.15*R),q&&(R-=_e,w+=_e),j&&(R-=Ee));var xe=2*h.barStrokeWidth,ze=h.barBeginCircle?Re(R*h.barBeginCircle/200-xe/2):0,Fe=Re(R*h.barWidth/100-xe),je=Re(L*h.barLength/100-xe),Ne=Re((L-je)/2),Le=Re(g+(N?R/2:Ne+ze)),Ie=Re(w+(N?L-Ne-ze+xe/2:R/2)),ke=!N||h.hasLeft&&h.hasRight?0:(h.hasRight?-1:1)*h.ticksWidth/100*R,Me=N||h.hasLeft&&h.hasRight?0:(h.hasRight?-1:1)*h.ticksWidth/100*R;return u.barDimensions={isVertical:N,width:R,length:L,barWidth:Fe,barLength:je,strokeWidth:xe,barMargin:Ne,radius:ze,pixelRatio:D,barOffset:null,titleMargin:q?_e:0,unitsMargin:j?Ee:0,get ticksLength(){return this.barLength-this.barOffset-this.strokeWidth},X:g+ke,Y:w+Me,x0:Le+ke,y0:Ie+Me,baseX:g,baseY:w,ticksPadding:h.ticksPadding/100},u.barDimensions}function ii(u,h,g,w,C,T,D){var N=ut(u,h,w,C,T,D),R=N.isVertical,L=N.width,q=N.barWidth,j=N.barLength,ue=N.strokeWidth,_e=N.barMargin,Ee=N.radius,Ge=N.x0,xe=N.y0,ze=N.X,Fe=N.Y,je=j;u.save(),u.beginPath();var Ne=null;if(h.barBeginCircle){var Le=oe.radians(R?270:0),Ie=Math.asin(q/2/Ee),ke=Math.cos(Ie),Me=Math.sin(Ie),Ve=Ge+(R?Ee*Me:Ee*ke-ue/2),$e=R?xe-Ee*ke:xe+Ee*Me,ot=Kt(R?$e-xe:Ve-Ge);Ne=Re(ot+Ee);var Tt=R?Re(Ge-Ee*Me):Ve,Vt=R?$e:Re(xe-Ee*Me);g==="progress"&&(j=Ne+(j-Ne)*(oe.normalizedValue(h).normal-h.minValue)/(h.maxValue-h.minValue));var aa=Re(Ve+j-Ne+ue/2),Hi=Re($e-j+Ne-ue/2);u.arc(Ge,xe,Ee,Le+Ie,Le-Ie),R?(u.moveTo(Ve,Vt),u.lineTo(Ve,Hi),u.lineTo(Tt,Hi),u.lineTo(Tt,Vt)):(u.moveTo(Ve,Vt),u.lineTo(aa,Vt),u.lineTo(aa,$e),u.lineTo(Ve,$e))}else{var Ws=Re(R?ze+(L-q)/2:ze+_e),Ls=Re(R?Fe+j+_e:Fe+(L-q)/2);g==="progress"&&(j*=(h.value-h.minValue)/(h.maxValue-h.minValue)),R?u.rect(Ws,Ls,q,-j):u.rect(Ws,Ls,j,q)}g!=="progress"&&h.barStrokeWidth&&(u.lineWidth=ue,u.strokeStyle=h.colorBarStroke,u.stroke()),g!=="progress"&&h.colorBar?(u.fillStyle=h.colorBarEnd?oe.linearGradient(u,h.colorBar,h.colorBarEnd,j,R,R?Fe:ze):h.colorBar,u.fill()):g==="progress"&&h.colorBarProgress&&(u.fillStyle=h.colorBarProgressEnd?oe.linearGradient(u,h.colorBarProgress,h.colorBarProgressEnd,je,R,R?Fe:ze):h.colorBarProgress,u.fill()),u.closePath(),u.restore(),h.barBeginCircle&&(u.barDimensions.radius+=ue),u.barDimensions.barOffset=Ne,u.barDimensions.barWidth+=ue,u.barDimensions.barLength+=ue}function xt(u,h,g,w,C,T){ii(u,h,"",g,w,C,T)}function zi(u,h){return h.needleSide!==u||h.tickSide!==u||h.numberSide!==u}function ea(u,h,g,w,C,T){h.barProgress&&ii(u,h,"progress",g,w,C,T)}function Au(u,h){var g=u.barDimensions,w=g.isVertical,C=g.width,T=g.length,D=g.barWidth,N=g.barOffset,R=g.barMargin,L=g.X,q=g.Y,j=g.ticksLength,ue=g.ticksPadding,_e=C*(parseFloat(h.highlightsWidth)||0)/100;if(h.highlights&&_e){var Ee=h.tickSide!=="right",Ge=h.tickSide!=="left",xe=0,ze=h.highlights.length,Fe=(C-D)/2,je=h.maxValue-h.minValue,Ne=Re(w?L+Fe:L+R+N),Le=_e,Ie=w?q+T-R-N:q+Fe,ke=Re((h.ticksWidth/100+ue)*C)+(_e-h.ticksWidth/100*C),Me=Re(D+ue*C);for(u.save();xe<ze;xe++){var Ve=h.highlights[xe],$e=j*Kt(h.minValue-Ve.from)/je,ot=j*Kt((Ve.to-Ve.from)/je);u.beginPath(),u.fillStyle=Ve.color,w?(Ee&&u.rect(Ne-ke,Ie-$e,Le,-ot),Ge&&u.rect(Ne+Me,Ie-$e,Le,-ot)):(Ee&&u.rect(Ne+$e,Ie-ke,ot,Le),Ge&&u.rect(Ne+$e,Ie+Me,ot,Le)),u.fill(),u.closePath()}u.restore()}}function Ea(u,h,g,w,C){u.beginPath(),u.moveTo(h,g),u.lineTo(w,C),u.stroke(),u.closePath()}function As(u,h,g,w,C,T,D,N,R){var L=u.barDimensions,q=L.isVertical,j=L.length,ue=L.barWidth,_e=L.barOffset,Ee=L.barMargin,Ge=L.pixelRatio,xe=L.width,ze=L.X,Fe=L.Y,je=L.ticksLength,Ne=L.ticksPadding,Le=(xe-ue)/2,Ie=void 0,ke=void 0,Me=0,Ve=g.length,$e=void 0,ot=R*xe,Tt=Le-Ne*xe,Vt=Le+ue+ot+Ne*xe,aa=h instanceof Array?h:new Array(g.length).fill(h);u.save(),u.lineWidth=N*Ge;for(var Hi=je/(C-w);Me<Ve;Me++)$e=g[Me],u.strokeStyle=aa[Me],q?(ke=Fe+j-Ee-_e+(w-$e)*Hi,T&&(Ie=ze+Tt,Ea(u,Ie,ke,Re(Ie-ot),ke)),D&&(Ie=ze+Vt,Ea(u,Ie,ke,Re(Ie-ot),ke))):(Ie=ze+Ee+_e-(w-$e)*Hi,T&&(ke=Fe+Tt,Ea(u,Ie,ke,Ie,Re(ke-ot))),D&&(ke=Fe+Vt,Ea(u,Ie,Re(ke),Ie,ke-ot)));u.restore()}function Pu(u,h){var g=oe.prepareTicks(h),w=Os(g,2),C=w[0],T=w[1],D=2,N=(h.maxValue-h.minValue)/(h.majorTicks.length-1),R=h.colorMajorTicks instanceof Array?h.colorMajorTicks:new Array(h.majorTicks.length).fill(h.colorStrokeTicks||h.colorMajorTicks);if(As(u,R,h.exactTicks?h.majorTicks:h.majorTicks.map(function(ot,Tt){return h.minValue+N*Tt}),h.minValue,h.maxValue,C,T,D,h.ticksWidth/100),h.strokeTicks){var L=u.barDimensions,q=L.isVertical,j=L.length,ue=L.width,_e=L.barWidth,Ee=L.barMargin,Ge=L.barOffset,xe=L.X,ze=L.Y,Fe=L.ticksLength,je=L.pixelRatio,Ne=L.ticksPadding,Le=(ue-_e)/2+_e+Ne*ue,Ie=(ue-_e)/2-Ne*ue,ke=void 0,Me=void 0,Ve=void 0,$e=void 0;u.strokeStyle=h.colorStrokeTicks||R[0],D*=je,q?(Me=ze+j-Ee-Ge+D/2,$e=Me-Fe-D,C&&(Ve=ke=Re(xe+Ie),Ma(u,ke,Me,Ve,$e)),T&&(Ve=ke=Re(xe+Le),Ma(u,ke,Me,Ve,$e))):(ke=xe+Ee+Ge-D/2,Ve=ke+Fe+D,C&&($e=Me=Re(ze+Ie),Ma(u,ke,Me,Ve,$e)),T&&($e=Me=Re(ze+Le),Ma(u,ke,Me,Ve,$e)))}}function Ma(u,h,g,w,C){u.beginPath(),u.moveTo(h,g),u.lineTo(w,C),u.stroke(),u.closePath()}function Ou(u,h){var g=oe.prepareTicks(h),w=Os(g,2),C=w[0],T=w[1],D=[],N=h.minValue,R=Math.abs(h.minorTicks)||0,L=R?(h.maxValue-h.minValue)/(R*(h.majorTicks.length-1)):0;if(R)if(h.exactTicks)for(var q=ni.mod(h.majorTicks[0],R)||0;N<h.maxValue;N+=R)q+N<h.maxValue&&D.push(q+N);else for(;N<h.maxValue;N+=L)D.push(N);As(u,h.colorMinorTicks||h.colorStrokeTicks,D,h.minValue,h.maxValue,C,T,1,h.ticksWidthMinor/100)}function Ru(u,h){var g=u.barDimensions,w=g.isVertical,C=g.length,T=g.width,D=g.barWidth,N=g.barMargin,R=g.barOffset,L=g.X,q=g.Y,j=g.ticksLength,ue=g.ticksPadding,_e=h.maxValue-h.minValue,Ee=_e/(h.majorTicks.length-1),Ge=h.exactTicks?h.majorTicks:h.majorTicks.map(function(aa,Hi){return h.minValue+Ee*Hi}),xe=Ge.length,ze=h.numberSide!=="right",Fe=h.numberSide!=="left",je=h.fontNumbersSize*T/200,Ne=0,Le=(h.ticksWidth/100+2*ue)*T,Ie=(T-D)/2-Le,ke=(T-D)/2+D+Le,Me=void 0,Ve=void 0,$e=void 0,ot=void 0,Tt=h.colorNumbers instanceof Array?h.colorNumbers:new Array(xe).fill(h.colorNumbers),Vt=h.numbersMargin/100*T;for(u.font=oe.font(h,"Numbers",T/200),u.lineWidth=0,u.textAlign="center";Ne<xe;Ne++)u.fillStyle=Tt[Ne],ot=h.majorTicks[Ne],$e=h.exactTicks?j*((Ge[Ne]-h.minValue)/_e):Ne*j/(xe-1),w?(Ve=q+C-N-R-$e+je/3,ze&&(u.textAlign="right",u.fillText(ot,L+Ie-Vt,Ve)),Fe&&(u.textAlign="left",u.fillText(ot,L+ke+Vt,Ve))):(u.measureText(ot).width,Me=L+N+R+$e,ze&&u.fillText(ot,Me,q+Ie-Vt),Fe&&u.fillText(ot,Me,q+ke+je+Vt))}function Iu(u,h){if(h.title){var g=u.barDimensions,w=g.isVertical,C=g.width,T=g.length,D=g.baseX,N=g.baseY,R=g.titleMargin,L=h.fontTitleSize*C/200,q=Re(D+(w?C:T)/2),j=Re(N+R/2-(w?L:L/2)-.025*(w?T:C));u.save(),u.textAlign="center",u.fillStyle=h.colorTitle,u.font=oe.font(h,"Title",C/200),u.lineWidth=0,u.fillText(h.title,q,j,w?C:T),u.restore()}}function Nu(u,h){if(h.units){var g=u.barDimensions,w=g.isVertical,C=g.width,T=g.length,D=g.baseX,N=g.baseY,R=g.unitsMargin,L=h.fontUnitsSize*C/200,q=Re(D+(w?C:T)/2),j=Re(N+(w?T:C)+R/2-L/2);u.save(),u.textAlign="center",u.fillStyle=h.colorUnits,u.font=oe.font(h,"Units",C/200),u.lineWidth=0,u.fillText(oe.formatContext(h,h.units),q,j,w?C:T),u.restore()}}function Wu(u,h){if(h.needle){var g=u.barDimensions,w=g.isVertical,C=g.width,T=g.length,D=g.barWidth,N=g.barOffset,R=g.barMargin,L=g.ticksLength,q=g.X,j=g.Y,ue=g.ticksPadding,_e=h.needleSide!=="right",Ee=h.needleSide!=="left",Ge=L*(oe.normalizedValue(h).indented-h.minValue)/(h.maxValue-h.minValue),xe=(h.ticksWidth/100+ue)*C,ze=D/2+xe,Fe=ze*(h.needleEnd/100),je=void 0,Ne=void 0,Le=void 0,Ie=void 0,ke=h.needleType.toLowerCase()==="arrow"?Vu:Lu,Me=(C-D)/2,Ve=ze*(h.needleStart/100),$e=Me-xe-Ve,ot=Me+D+xe+Ve;u.save(),oe.drawNeedleShadow(u,h),w?(Le=Re(j+T-R-N-Ge),_e&&(je=Re(q+$e),Ne=je+Fe,ke(u,h,je,Le,Ne,Le,Fe)),Ee&&(je=Re(q+ot),Ne=je-Fe,ke(u,h,je,Le,Ne,Le,Fe,!0))):(je=Re(q+R+N+Ge),_e&&(Le=Re(j+$e),Ie=Le+Fe,ke(u,h,je,Le,je,Ie,Fe)),Ee&&(Le=Re(j+ot),Ie=Le-Fe,ke(u,h,je,Le,je,Ie,Fe,!0))),u.restore()}}function Ps(u,h,g,w){return h.colorNeedleEnd?oe.linearGradient(u,w?h.colorNeedleEnd:h.colorNeedle,w?h.colorNeedle:h.colorNeedleEnd,g,!u.barDimensions.isVertical):h.colorNeedle}function Lu(u,h,g,w,C,T,D,N){u.lineWidth=h.needleWidth,u.strokeStyle=Ps(u,h,D,N),u.beginPath(),u.moveTo(g,w),u.lineTo(C,T),u.stroke(),u.closePath()}function Vu(u,h,g,w,C,T,D,N){var R=Re(.4*D),L=D-R,q=g===C,j=h.needleWidth/2;u.fillStyle=Ps(u,h,D,N),u.beginPath(),q?(w>T&&(L*=-1),u.moveTo(g-j,w),u.lineTo(g+j,w),u.lineTo(g+j,w+L),u.lineTo(g,T),u.lineTo(g-j,w+L),u.lineTo(g-j,w)):(g>C&&(L*=-1),u.moveTo(g,w-j),u.lineTo(g,w+j),u.lineTo(g+L,w+j),u.lineTo(C,w),u.lineTo(g+L,w-j),u.lineTo(g,w-j)),u.fill(),u.closePath()}function Bu(u,h,g,w,C,T,D){var N=(parseFloat(h.fontValueSize)||0)*T/200,R=(.11*D-N)/2;u.barDimensions.isVertical&&oe.drawValueBox(u,h,g,w+T/2,C+D-N-R,T)}var Os=(function(){function u(h,g){var w=[],C=!0,T=!1,D=void 0;try{for(var N,R=h[Symbol.iterator]();!(C=(N=R.next()).done)&&(w.push(N.value),!g||w.length!==g);C=!0);}catch(L){T=!0,D=L}finally{try{!C&&R.return&&R.return()}finally{if(T)throw D}}return w}return function(h,g){if(Array.isArray(h))return h;if(Symbol.iterator in Object(h))return u(h,g);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),Jo=function u(h,g,w){h===null&&(h=Function.prototype);var C=Object.getOwnPropertyDescriptor(h,g);if(C===void 0){var T=Object.getPrototypeOf(h);return T===null?void 0:u(T,g,w)}if("value"in C)return C.value;var D=C.get;if(D!==void 0)return D.call(w)},zu=function u(h,g,w,C){var T=Object.getOwnPropertyDescriptor(h,g);if(T===void 0){var D=Object.getPrototypeOf(h);D!==null&&u(D,g,w,C)}else if("value"in T&&T.writable)T.value=w;else{var N=T.set;N!==void 0&&N.call(C,w)}return w},Fi=(function(){function u(h,g){for(var w=0;w<g.length;w++){var C=g[w];C.enumerable=C.enumerable||!1,C.configurable=!0,"value"in C&&(C.writable=!0),Object.defineProperty(h,C.key,C)}}return function(h,g,w){return g&&u(h.prototype,g),w&&u(h,w),h}})(),Da=null,Fu=(function(){function u(){i(this,u),this._events={},this.addListener=this.on,this.removeListener=this.off}return Fi(u,[{key:"emit",value:function(h){if(this._events[h]){for(var g=0,w=this._events[h].length,C=arguments.length,T=Array(C>1?C-1:0),D=1;D<C;D++)T[D-1]=arguments[D];for(;g<w;g++)this._events[h][g]&&this._events[h][g].apply(this,T)}}},{key:"once",value:function(h){for(var g=arguments.length,w=Array(g>1?g-1:0),C=1;C<g;C++)w[C-1]=arguments[C];for(var T=0,D=w.length,N=this;T<D;T++)(function(){var R=w[T],L=function q(){N.off(h,q),R.apply(N,arguments)};w[T]=L})();this.on.apply(this,[h].concat(w))}},{key:"on",value:function(h){this._events[h]||(this._events[h]=[]);for(var g=0,w=arguments.length<=1?0:arguments.length-1;g<w;g++)this._events[h].push(arguments.length<=g+1?void 0:arguments[g+1])}},{key:"off",value:function(h){if(this._events[h])for(var g=0,w=arguments.length<=1?0:arguments.length-1;g<w;g++)for(var C=arguments.length<=g+1?void 0:arguments[g+1],T=void 0;~(T=this._events[h].indexOf(C));)this._events[h].splice(T,1)}},{key:"removeAllListeners",value:function(h){delete this._events[h]}},{key:"listeners",get:function(){return this._events}}]),u})(),Rs=o("requestAnimationFrame")||function(u){return setTimeout(function(){return u(new Date().getTime())},1e3/60)},ta={linear:function(u){return u},quad:function(u){return Math.pow(u,2)},dequad:function(u){return 1-ta.quad(1-u)},quint:function(u){return Math.pow(u,5)},dequint:function(u){return 1-Math.pow(1-u,5)},cycle:function(u){return 1-Math.sin(Math.acos(u))},decycle:function(u){return Math.sin(Math.acos(1-u))},bounce:function(u){return 1-ta.debounce(1-u)},debounce:function(u){for(var h=0,g=1;;h+=g,g/=2)if(u>=(7-4*h)/11)return-Math.pow((11-6*h-11*u)/4,2)+Math.pow(g,2)},elastic:function(u){return 1-ta.delastic(1-u)},delastic:function(u){return Math.pow(2,10*(u-1))*Math.cos(20*Math.PI*1.5/3*u)}},er=(function(){function u(){var h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"linear",g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:250,w=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},C=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){};if(i(this,u),this.duration=g,this.rule=h,this.draw=w,this.end=C,typeof this.draw!="function")throw new TypeError("Invalid animation draw callback:",w);if(typeof this.end!="function")throw new TypeError("Invalid animation end callback:",C)}return Fi(u,[{key:"animate",value:function(h,g){var w=this;this.frame&&this.cancel();var C=window.performance&&window.performance.now?window.performance.now():o("animationStartTime")||Date.now();h=h||this.draw,g=g||this.end,this.draw=h,this.end=g,this.frame=Rs(function(T){return r(T,h,C,ta[w.rule]||w.rule,w.duration,g,w)})}},{key:"cancel",value:function(){this.frame&&((o("cancelAnimationFrame")||function(h){})(this.frame),this.frame=null)}},{key:"destroy",value:function(){this.cancel(),this.draw=null,this.end=null}}]),u})();er.rules=ta;var cn=(function(){function u(h,g,w){i(this,u),this.options=h,this.element=g.toLowerCase(),this.type=u.toDashed(w),this.Type=a[w],this.mutationsObserved=!1,this.isObservable=!!window.MutationObserver,window.GAUGES_NO_AUTO_INIT||u.domReady(this.traverse.bind(this))}return Fi(u,[{key:"isValidNode",value:function(h){return!(!h.tagName||h.tagName.toLowerCase()!==this.element||h.getAttribute("data-type")!==this.type)}},{key:"traverse",value:function(){for(var h=document.getElementsByTagName(this.element),g=0,w=h.length;g<w;g++)this.process(h[g]);this.isObservable&&!this.mutationsObserved&&(new MutationObserver(this.observe.bind(this)).observe(document.body,{childList:!0,subtree:!0,attributes:!0,characterData:!0,attributeOldValue:!0,characterDataOldValue:!0}),this.mutationsObserved=!0)}},{key:"observe",value:function(h){for(var g=0,w=h.length;g<w;g++){var C=h[g];if(C.type==="attributes"&&C.attributeName==="data-type"&&this.isValidNode(C.target)&&C.oldValue!==this.type)setTimeout(this.process.bind(this,C.target));else if(C.addedNodes&&C.addedNodes.length)for(var T=0,D=C.addedNodes.length;T<D;T++)setTimeout(this.process.bind(this,C.addedNodes[T]))}}},{key:"process",value:function(h){var g=this;if(!this.isValidNode(h))return null;var w=void 0,C=JSON.parse(JSON.stringify(this.options)),T=null;for(w in C)if(C.hasOwnProperty(w)){var D=u.toAttributeName(w),N=u.parse(h.getAttribute(D));N!=null&&(C[w]=N)}return C.renderTo=h,T=new this.Type(C),T.draw&&T.draw(),this.isObservable&&(T.observer=new MutationObserver(function(R){R.forEach(function(L){if(L.type==="attributes"){var q=L.attributeName.toLowerCase(),j=h.getAttribute(q).toLowerCase();if(q==="data-type"&&j&&j!==g.type)T.observer.disconnect(),delete T.observer,T.destroy&&T.destroy();else if(q.substr(0,5)==="data-"){var ue=q.substr(5).split("-").map(function(Ee,Ge){return Ge?Ee.charAt(0).toUpperCase()+Ee.substr(1):Ee}).join(""),_e={};_e[ue]=u.parse(h.getAttribute(L.attributeName)),ue==="value"?T&&(T.value=_e[ue]):T.update&&T.update(_e)}}})}),T.observer.observe(h,{attributes:!0})),T}}],[{key:"parse",value:function(h){if(h==="true")return!0;if(h==="false")return!1;if(h!=="undefined"){if(h==="null")return null;if(/^[-+#.\w\d\s]+(?:,[-+#.\w\d\s]*)+$/.test(h))return h.split(",");try{return JSON.parse(h)}catch{}return h}}},{key:"toDashed",value:function(h){for(var g=h.split(/(?=[A-Z])/),w=1,C=g.length,T=g[0].toLowerCase();w<C;w++)T+="-"+g[w].toLowerCase();return T}},{key:"toCamelCase",value:function(h){for(var g=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],w=h.split(/-/),C=0,T=w.length,D="";C<T;C++)D+=C||g?w[C][0].toUpperCase()+w[C].substr(1).toLowerCase():w[C].toLowerCase();return D}},{key:"toAttributeName",value:function(h){return"data-"+u.toDashed(h)}},{key:"domReady",value:function(h){if(/comp|inter|loaded/.test((window.document||{}).readyState+""))return h();window.addEventListener?window.addEventListener("DOMContentLoaded",h,!1):window.attachEvent&&window.attachEvent("onload",h)}}]),u})(),Yt=(function(){function u(h,g,w){i(this,u),u.collection.push(this),this.width=g||0,this.height=w||0,this.element=h,this.init()}return Fi(u,[{key:"init",value:function(){var h=u.pixelRatio;this.element.width=this.width*h,this.element.height=this.height*h,this.element.style.width=this.width+"px",this.element.style.height=this.height+"px",this.elementClone=this.element.cloneNode(!0),this.context=this.element.getContext("2d"),this.contextClone=this.elementClone.getContext("2d"),this.drawWidth=this.element.width,this.drawHeight=this.element.height,this.drawX=this.drawWidth/2,this.drawY=this.drawHeight/2,this.minSide=this.drawX<this.drawY?this.drawX:this.drawY,this.contextClone.translate(this.drawX,this.drawY),this.elementClone.initialized=!1,this.context.translate(this.drawX,this.drawY),this.context.max=this.contextClone.max=this.minSide,this.context.maxRadius=this.contextClone.maxRadius=null}},{key:"destroy",value:function(){var h=u.collection.indexOf(this);~h&&u.collection.splice(h,1),this.context.clearRect(-this.drawX,-this.drawY,this.drawWidth,this.drawHeight),this.context.max=null,delete this.context.max,this.context.maxRadius=null,delete this.context.maxRadius,this.context=null,this.contextClone=null,this.elementClone=null,this.element=null,this.onRedraw=null}},{key:"commit",value:function(){var h=u.pixelRatio;return h!==1&&this.contextClone.scale(h,h),this}},{key:"redraw",value:function(){return this.init(),this.onRedraw&&this.onRedraw(),this}}],[{key:"redraw",value:function(){for(var h=0,g=u.collection.length;h<g;h++)u.collection[h].redraw()}},{key:"pixelRatio",get:function(){return window.devicePixelRatio||1}}]),u})();Yt.collection=[],window.matchMedia&&window.matchMedia("screen and (min-resolution: 2dppx)").addListener(Yt.redraw);var tr={renderTo:null,width:0,height:0,minValue:0,maxValue:100,value:0,units:!1,exactTicks:!1,majorTicks:[0,20,40,60,80,100],minorTicks:10,strokeTicks:!0,animatedValue:!1,animateOnInit:!1,title:!1,borders:!0,numbersMargin:1,listeners:null,valueInt:3,valueDec:2,majorTicksInt:1,majorTicksDec:0,animation:!0,animationDuration:500,animationRule:"cycle",colorPlate:"#fff",colorPlateEnd:"",colorMajorTicks:"#444",colorMinorTicks:"#666",colorStrokeTicks:"",colorTitle:"#888",colorUnits:"#888",colorNumbers:"#444",colorNeedle:"rgba(240,128,128,1)",colorNeedleEnd:"rgba(255,160,122,.9)",colorValueText:"#444",colorValueTextShadow:"rgba(0,0,0,0.3)",colorBorderShadow:"rgba(0,0,0,0.5)",colorBorderOuter:"#ddd",colorBorderOuterEnd:"#aaa",colorBorderMiddle:"#eee",colorBorderMiddleEnd:"#f0f0f0",colorBorderInner:"#fafafa",colorBorderInnerEnd:"#ccc",colorValueBoxRect:"#888",colorValueBoxRectEnd:"#666",colorValueBoxBackground:"#babab2",colorValueBoxShadow:"rgba(0,0,0,1)",colorNeedleShadowUp:"rgba(2,255,255,0.2)",colorNeedleShadowDown:"rgba(188,143,143,0.45)",colorBarStroke:"#222",colorBar:"#ccc",colorBarProgress:"#888",colorBarShadow:"#000",fontNumbers:"Arial",fontTitle:"Arial",fontUnits:"Arial",fontValue:"Arial",fontNumbersSize:20,fontTitleSize:24,fontUnitsSize:22,fontValueSize:26,fontNumbersStyle:"normal",fontTitleStyle:"normal",fontUnitsStyle:"normal",fontValueStyle:"normal",fontNumbersWeight:"normal",fontTitleWeight:"normal",fontUnitsWeight:"normal",fontValueWeight:"normal",needle:!0,needleShadow:!0,needleType:"arrow",needleStart:5,needleEnd:85,needleWidth:4,borderOuterWidth:3,borderMiddleWidth:3,borderInnerWidth:3,borderShadowWidth:3,valueBox:!0,valueBoxStroke:5,valueBoxWidth:0,valueText:"",valueTextShadow:!0,valueBoxBorderRadius:2.5,highlights:[{from:20,to:60,color:"#eee"},{from:60,to:80,color:"#ccc"},{from:80,to:100,color:"#999"}],highlightsWidth:15,highlightsLineCap:"butt",barWidth:20,barStrokeWidth:0,barProgress:!0,barShadow:0};l.prototype=Object.create(Array.prototype),l.prototype.constructor=l,l.prototype.get=function(u){if(typeof u=="string")for(var h=0,g=this.length;h<g;h++){var w=this[h].options.renderTo.tagName?this[h].options.renderTo:document.getElementById(this[h].options.renderTo||"");if(w.getAttribute("id")===u)return this[h]}else if(typeof u=="number")return this[u];return null};var ir="2.2.1",Re=Math.round,Kt=Math.abs,ia=new l;ia.version=ir;var ni=(function(u){function h(g){i(this,h);var w=e(this,(h.__proto__||Object.getPrototypeOf(h)).call(this)),C=w.constructor.name;if(C==="BaseGauge")throw new TypeError("Attempt to instantiate abstract class!");if(ia.push(w),g.listeners&&Object.keys(g.listeners).forEach(function(D){(g.listeners[D]instanceof Array?g.listeners[D]:[g.listeners[D]]).forEach(function(N){w.on(D,N)})}),w.version=ir,w.type=a[C]||h,w.initialized=!1,g.minValue=parseFloat(g.minValue),g.maxValue=parseFloat(g.maxValue),g.value=parseFloat(g.value)||0,g.borders||(g.borderInnerWidth=g.borderMiddleWidth=g.borderOuterWidth=0),!g.renderTo)throw TypeError("Canvas element was not specified when creating the Gauge object!");var T=g.renderTo.tagName?g.renderTo:document.getElementById(g.renderTo);if(!(T instanceof HTMLCanvasElement))throw TypeError("Given gauge canvas element is invalid!");return g.width=parseFloat(g.width)||0,g.height=parseFloat(g.height)||0,g.width&&g.height||(g.width||(g.width=T.parentNode?T.parentNode.offsetWidth:T.offsetWidth),g.height||(g.height=T.parentNode?T.parentNode.offsetHeight:T.offsetHeight)),w.options=g||{},w.options.animateOnInit&&(w._value=w.options.value,w.options.value=w.options.minValue),w.canvas=new Yt(T,g.width,g.height),w.canvas.onRedraw=w.draw.bind(w),w.animation=new er(g.animationRule,g.animationDuration),w}return t(h,u),Fi(h,[{key:"update",value:function(g){return Object.assign(this.options,this.type.configure(g||{})),this.canvas.width=this.options.width,this.canvas.height=this.options.height,this.animation.rule=this.options.animationRule,this.animation.duration=this.options.animationDuration,this.canvas.redraw(),this}},{key:"destroy",value:function(){var g=ia.indexOf(this);~g&&ia.splice(g,1),this.canvas.destroy(),this.canvas=null,this.animation.destroy(),this.animation=null,this.emit("destroy")}},{key:"draw",value:function(){return this.options.animateOnInit&&!this.initialized&&(this.value=this._value,this.initialized=!0,this.emit("init")),this.emit("render"),this}},{key:"value",set:function(g){var w=this;g=h.ensureValue(g,this.options.minValue);var C=this.options.value;if(g!==C)if(this.options.animation){if(this.animation.frame&&(this.options.value=this._value,this._value===g))return this.animation.cancel(),void delete this._value;this._value===void 0&&(this._value=g),this.emit("animationStart"),this.animation.animate(function(T){var D=C+(g-C)*T;w.options.animatedValue&&w.emit("value",D,w.value),w.options.value=D,w.draw(),w.emit("animate",T,w.options.value)},function(){w._value!==void 0&&(w.emit("value",w._value,w.value),w.options.value=w._value,delete w._value),w.draw(),w.emit("animationEnd"),w.animation.frame=null})}else this.emit("value",g,this.value),this.options.value=g,this.draw()},get:function(){return this._value===void 0?this.options.value:this._value}}],[{key:"configure",value:function(g){return g}},{key:"initialize",value:function(g,w){return new cn(w,"canvas",g)}},{key:"fromElement",value:function(g){var w=cn.toCamelCase(g.getAttribute("data-type")),C=g.attributes,T=0,D=C.length,N={};if(w){for(/Gauge$/.test(w)||(w+="Gauge");T<D;T++)N[cn.toCamelCase(C[T].name.replace(/^data-/,""),!1)]=cn.parse(C[T].value);new cn(N,g.tagName,w).process(g)}}},{key:"ensureValue",value:function(g){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return g=parseFloat(g),!isNaN(g)&&isFinite(g)||(g=parseFloat(w)||0),g}},{key:"mod",value:function(g,w){return(g%w+w)%w}},{key:"version",get:function(){return ir}}]),h})(Fu);a!==void 0&&(a.BaseGauge=ni,a.gauges=(window.document||{}).gauges=ia);var Hu=/{([_a-zA-Z]+[_a-zA-Z0-9]*)}/g,oe={roundRect:c,padValue:m,formatMajorTickNumber:f,radians:y,radialPoint:S,linearGradient:x,drawNeedleShadow:V,drawValueBox:Oe,verifyError:d,prepareTicks:s,font:H,normalizedValue:Be,formatContext:p},na=Math.PI,nr=na/2,Is=Object.assign({},tr,{ticksAngle:270,startAngle:45,colorNeedleCircleOuter:"#f0f0f0",colorNeedleCircleOuterEnd:"#ccc",colorNeedleCircleInner:"#e8e8e8",colorNeedleCircleInnerEnd:"#f5f5f5",needleCircleSize:10,needleCircleInner:!0,needleCircleOuter:!0,needleStart:20,animationTarget:"needle",useMinPath:!1,barWidth:0,barStartPosition:"left"}),Uu=(function(u){function h(g){return i(this,h),g=Object.assign({},Is,g||{}),e(this,(h.__proto__||Object.getPrototypeOf(h)).call(this,h.configure(g)))}return t(h,u),Fi(h,[{key:"draw",value:function(){try{var g=this.canvas,w=[-g.drawX,-g.drawY,g.drawWidth,g.drawHeight],C=w[0],T=w[1],D=w[2],N=w[3],R=this.options;if(R.animationTarget==="needle"){if(!g.elementClone.initialized){var L=g.contextClone;L.clearRect(C,T,D,N),this.emit("beforePlate"),Te(L,R),this.emit("beforeHighlights"),Ue(L,R),this.emit("beforeMinorTicks"),ht(L,R),this.emit("beforeMajorTicks"),Xe(L,R),this.emit("beforeNumbers"),ee(L,R),this.emit("beforeTitle"),de(L,R),this.emit("beforeUnits"),pe(L,R),g.elementClone.initialized=!0}this.canvas.commit(),g.context.clearRect(C,T,D,N),g.context.drawImage(g.elementClone,C,T,D,N),this.emit("beforeProgressBar"),yt(g.context,R),this.emit("beforeValueBox"),dt(g.context,R,$t(this)),this.emit("beforeNeedle"),We(g.context,R)}else{var q=-oe.radians((R.value-R.minValue)/(R.maxValue-R.minValue)*R.ticksAngle);if(g.context.clearRect(C,T,D,N),this.emit("beforePlate"),Te(g.context,R),g.context.rotate(q),this.emit("beforeHighlights"),Ue(g.context,R),this.emit("beforeMinorTicks"),ht(g.context,R),this.emit("beforeMajorTicks"),Xe(g.context,R),this.emit("beforeNumbers"),ee(g.context,R),this.emit("beforeProgressBar"),yt(g.context,R),g.context.rotate(-q),!g.elementClone.initialized){var j=g.contextClone;j.clearRect(C,T,D,N),this.emit("beforeTitle"),de(j,R),this.emit("beforeUnits"),pe(j,R),this.emit("beforeNeedle"),We(j,R),g.elementClone.initialized=!0}g.context.drawImage(g.elementClone,C,T,D,N)}this.emit("beforeValueBox"),dt(g.context,R,$t(this)),Jo(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"draw",this).call(this)}catch(ue){oe.verifyError(ue)}return this}},{key:"value",set:function(g){g=ni.ensureValue(g,this.options.minValue),this.options.animation&&this.options.ticksAngle===360&&this.options.useMinPath&&(this._value=g,g=this.options.value+((g-this.options.value)%360+540)%360-180),zu(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"value",g,this)},get:function(){return Jo(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"value",this)}}],[{key:"configure",value:function(g){return g.barWidth>50&&(g.barWidth=50),isNaN(g.startAngle)&&(g.startAngle=45),isNaN(g.ticksAngle)&&(g.ticksAngle=270),g.ticksAngle>360&&(g.ticksAngle=360),g.ticksAngle<0&&(g.ticksAngle=0),g.startAngle<0&&(g.startAngle=0),g.startAngle>360&&(g.startAngle=360),g}}]),h})(ni);a!==void 0&&(a.RadialGauge=Uu),ni.initialize("RadialGauge",Is);var Ns=Object.assign({},tr,{borderRadius:0,barBeginCircle:30,colorBarEnd:"",colorBarProgressEnd:"",needleWidth:6,tickSide:"both",needleSide:"both",numberSide:"both",ticksWidth:10,ticksWidthMinor:5,ticksPadding:5,barLength:85,fontTitleSize:26,highlightsWidth:10}),Gu=(function(u){function h(g){return i(this,h),g=Object.assign({},Ns,g||{}),e(this,(h.__proto__||Object.getPrototypeOf(h)).call(this,h.configure(g)))}return t(h,u),Fi(h,[{key:"draw",value:function(){try{var g=this.canvas,w=[-g.drawX,-g.drawY,g.drawWidth,g.drawHeight],C=w[0],T=w[1],D=w[2],N=w[3],R=this.options;if(!g.elementClone.initialized){var L=g.contextClone;L.clearRect(C,T,D,N),this.emit("beforePlate"),this.drawBox=Zo(L,R,C,T,D,N),this.emit("beforeBar"),xt.apply(void 0,[L,R].concat(n(this.drawBox))),g.contextClone.barDimensions=L.barDimensions,this.emit("beforeHighlights"),Au(L,R),this.emit("beforeMinorTicks"),Ou(L,R),this.emit("beforeMajorTicks"),Pu(L,R),this.emit("beforeNumbers"),Ru(L,R),this.emit("beforeTitle"),Iu(L,R),this.emit("beforeUnits"),Nu(L,R),g.elementClone.initialized=!0}this.canvas.commit(),g.context.clearRect(C,T,D,N),g.context.drawImage(g.elementClone,C,T,D,N),this.emit("beforeProgressBar"),ea.apply(void 0,[g.context,R].concat(n(this.drawBox))),this.emit("beforeNeedle"),Wu(g.context,R),this.emit("beforeValueBox"),Bu.apply(void 0,[g.context,R,R.animatedValue?this.options.value:this.value].concat(n(this.drawBox))),Jo(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"draw",this).call(this)}catch(q){oe.verifyError(q)}return this}}],[{key:"configure",value:function(g){return g.barStrokeWidth>=g.barWidth&&(g.barStrokeWidth=Re(g.barWidth/2)),g.hasLeft=zi("right",g),g.hasRight=zi("left",g),g.value>g.maxValue&&(g.value=g.maxValue),g.value<g.minValue&&(g.value=g.minValue),ni.configure(g)}}]),h})(ni);a!==void 0&&(a.LinearGauge=Gu),ni.initialize("LinearGauge",Ns),typeof To<"u"&&Object.assign(a,{Collection:l,GenericOptions:tr,Animation:er,BaseGauge:ni,drawings:oe,SmartCanvas:Yt,DomObserver:cn,vendorize:o})})(typeof To<"u"?To.exports:window)});var Zr=Bs(Po=>{(function(){"use strict";var a=function(){this.init()};a.prototype={init:function(){var s=this||n;return s._counter=1e3,s._html5AudioPool=[],s.html5PoolSize=10,s._codecs={},s._howls=[],s._muted=!1,s._volume=1,s._canPlayEvent="canplaythrough",s._navigator=typeof window<"u"&&window.navigator?window.navigator:null,s.masterGain=null,s.noAudio=!1,s.usingWebAudio=!0,s.autoSuspend=!0,s.ctx=null,s.autoUnlock=!0,s._setup(),s},volume:function(s){var c=this||n;if(s=parseFloat(s),c.ctx||p(),typeof s<"u"&&s>=0&&s<=1){if(c._volume=s,c._muted)return c;c.usingWebAudio&&c.masterGain.gain.setValueAtTime(s,n.ctx.currentTime);for(var m=0;m<c._howls.length;m++)if(!c._howls[m]._webAudio)for(var f=c._howls[m]._getSoundIds(),y=0;y<f.length;y++){var S=c._howls[m]._soundById(f[y]);S&&S._node&&(S._node.volume=S._volume*s)}return c}return c._volume},mute:function(s){var c=this||n;c.ctx||p(),c._muted=s,c.usingWebAudio&&c.masterGain.gain.setValueAtTime(s?0:c._volume,n.ctx.currentTime);for(var m=0;m<c._howls.length;m++)if(!c._howls[m]._webAudio)for(var f=c._howls[m]._getSoundIds(),y=0;y<f.length;y++){var S=c._howls[m]._soundById(f[y]);S&&S._node&&(S._node.muted=s?!0:S._muted)}return c},stop:function(){for(var s=this||n,c=0;c<s._howls.length;c++)s._howls[c].stop();return s},unload:function(){for(var s=this||n,c=s._howls.length-1;c>=0;c--)s._howls[c].unload();return s.usingWebAudio&&s.ctx&&typeof s.ctx.close<"u"&&(s.ctx.close(),s.ctx=null,p()),s},codecs:function(s){return(this||n)._codecs[s.replace(/^x-/,"")]},_setup:function(){var s=this||n;if(s.state=s.ctx&&s.ctx.state||"suspended",s._autoSuspend(),!s.usingWebAudio)if(typeof Audio<"u")try{var c=new Audio;typeof c.oncanplaythrough>"u"&&(s._canPlayEvent="canplay")}catch{s.noAudio=!0}else s.noAudio=!0;try{var c=new Audio;c.muted&&(s.noAudio=!0)}catch{}return s.noAudio||s._setupCodecs(),s},_setupCodecs:function(){var s=this||n,c=null;try{c=typeof Audio<"u"?new Audio:null}catch{return s}if(!c||typeof c.canPlayType!="function")return s;var m=c.canPlayType("audio/mpeg;").replace(/^no$/,""),f=s._navigator?s._navigator.userAgent:"",y=f.match(/OPR\/(\d+)/g),S=y&&parseInt(y[0].split("/")[1],10)<33,x=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,V=f.match(/Version\/(.*?) /),H=x&&V&&parseInt(V[1],10)<15;return s._codecs={mp3:!!(!S&&(m||c.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!m,opus:!!c.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!c.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!c.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(c.canPlayType('audio/wav; codecs="1"')||c.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!c.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!c.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(c.canPlayType("audio/x-m4a;")||c.canPlayType("audio/m4a;")||c.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(c.canPlayType("audio/x-m4b;")||c.canPlayType("audio/m4b;")||c.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(c.canPlayType("audio/x-mp4;")||c.canPlayType("audio/mp4;")||c.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!H&&c.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!H&&c.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!c.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(c.canPlayType("audio/x-flac;")||c.canPlayType("audio/flac;")).replace(/^no$/,"")},s},_unlockAudio:function(){var s=this||n;if(!(s._audioUnlocked||!s.ctx)){s._audioUnlocked=!1,s.autoUnlock=!1,!s._mobileUnloaded&&s.ctx.sampleRate!==44100&&(s._mobileUnloaded=!0,s.unload()),s._scratchBuffer=s.ctx.createBuffer(1,1,22050);var c=function(m){for(;s._html5AudioPool.length<s.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,s._releaseHtml5Audio(f)}catch{s.noAudio=!0;break}for(var y=0;y<s._howls.length;y++)if(!s._howls[y]._webAudio)for(var S=s._howls[y]._getSoundIds(),x=0;x<S.length;x++){var V=s._howls[y]._soundById(S[x]);V&&V._node&&!V._node._unlocked&&(V._node._unlocked=!0,V._node.load())}s._autoResume();var H=s.ctx.createBufferSource();H.buffer=s._scratchBuffer,H.connect(s.ctx.destination),typeof H.start>"u"?H.noteOn(0):H.start(0),typeof s.ctx.resume=="function"&&s.ctx.resume(),H.onended=function(){H.disconnect(0),s._audioUnlocked=!0,document.removeEventListener("touchstart",c,!0),document.removeEventListener("touchend",c,!0),document.removeEventListener("click",c,!0),document.removeEventListener("keydown",c,!0);for(var Z=0;Z<s._howls.length;Z++)s._howls[Z]._emit("unlock")}};return document.addEventListener("touchstart",c,!0),document.addEventListener("touchend",c,!0),document.addEventListener("click",c,!0),document.addEventListener("keydown",c,!0),s}},_obtainHtml5Audio:function(){var s=this||n;if(s._html5AudioPool.length)return s._html5AudioPool.pop();var c=new Audio().play();return c&&typeof Promise<"u"&&(c instanceof Promise||typeof c.then=="function")&&c.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(s){var c=this||n;return s._unlocked&&c._html5AudioPool.push(s),c},_autoSuspend:function(){var s=this;if(!(!s.autoSuspend||!s.ctx||typeof s.ctx.suspend>"u"||!n.usingWebAudio)){for(var c=0;c<s._howls.length;c++)if(s._howls[c]._webAudio){for(var m=0;m<s._howls[c]._sounds.length;m++)if(!s._howls[c]._sounds[m]._paused)return s}return s._suspendTimer&&clearTimeout(s._suspendTimer),s._suspendTimer=setTimeout(function(){if(s.autoSuspend){s._suspendTimer=null,s.state="suspending";var f=function(){s.state="suspended",s._resumeAfterSuspend&&(delete s._resumeAfterSuspend,s._autoResume())};s.ctx.suspend().then(f,f)}},3e4),s}},_autoResume:function(){var s=this;if(!(!s.ctx||typeof s.ctx.resume>"u"||!n.usingWebAudio))return s.state==="running"&&s.ctx.state!=="interrupted"&&s._suspendTimer?(clearTimeout(s._suspendTimer),s._suspendTimer=null):s.state==="suspended"||s.state==="running"&&s.ctx.state==="interrupted"?(s.ctx.resume().then(function(){s.state="running";for(var c=0;c<s._howls.length;c++)s._howls[c]._emit("resume")}),s._suspendTimer&&(clearTimeout(s._suspendTimer),s._suspendTimer=null)):s.state==="suspending"&&(s._resumeAfterSuspend=!0),s}};var n=new a,e=function(s){var c=this;if(!s.src||s.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}c.init(s)};e.prototype={init:function(s){var c=this;return n.ctx||p(),c._autoplay=s.autoplay||!1,c._format=typeof s.format!="string"?s.format:[s.format],c._html5=s.html5||!1,c._muted=s.mute||!1,c._loop=s.loop||!1,c._pool=s.pool||5,c._preload=typeof s.preload=="boolean"||s.preload==="metadata"?s.preload:!0,c._rate=s.rate||1,c._sprite=s.sprite||{},c._src=typeof s.src!="string"?s.src:[s.src],c._volume=s.volume!==void 0?s.volume:1,c._xhr={method:s.xhr&&s.xhr.method?s.xhr.method:"GET",headers:s.xhr&&s.xhr.headers?s.xhr.headers:null,withCredentials:s.xhr&&s.xhr.withCredentials?s.xhr.withCredentials:!1},c._duration=0,c._state="unloaded",c._sounds=[],c._endTimers={},c._queue=[],c._playLock=!1,c._onend=s.onend?[{fn:s.onend}]:[],c._onfade=s.onfade?[{fn:s.onfade}]:[],c._onload=s.onload?[{fn:s.onload}]:[],c._onloaderror=s.onloaderror?[{fn:s.onloaderror}]:[],c._onplayerror=s.onplayerror?[{fn:s.onplayerror}]:[],c._onpause=s.onpause?[{fn:s.onpause}]:[],c._onplay=s.onplay?[{fn:s.onplay}]:[],c._onstop=s.onstop?[{fn:s.onstop}]:[],c._onmute=s.onmute?[{fn:s.onmute}]:[],c._onvolume=s.onvolume?[{fn:s.onvolume}]:[],c._onrate=s.onrate?[{fn:s.onrate}]:[],c._onseek=s.onseek?[{fn:s.onseek}]:[],c._onunlock=s.onunlock?[{fn:s.onunlock}]:[],c._onresume=[],c._webAudio=n.usingWebAudio&&!c._html5,typeof n.ctx<"u"&&n.ctx&&n.autoUnlock&&n._unlockAudio(),n._howls.push(c),c._autoplay&&c._queue.push({event:"play",action:function(){c.play()}}),c._preload&&c._preload!=="none"&&c.load(),c},load:function(){var s=this,c=null;if(n.noAudio){s._emit("loaderror",null,"No audio support.");return}typeof s._src=="string"&&(s._src=[s._src]);for(var m=0;m<s._src.length;m++){var f,y;if(s._format&&s._format[m])f=s._format[m];else{if(y=s._src[m],typeof y!="string"){s._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(y),f||(f=/\.([^.]+)$/.exec(y.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&n.codecs(f)){c=s._src[m];break}}if(!c){s._emit("loaderror",null,"No codec support for selected audio sources.");return}return s._src=c,s._state="loading",window.location.protocol==="https:"&&c.slice(0,5)==="http:"&&(s._html5=!0,s._webAudio=!1),new t(s),s._webAudio&&o(s),s},play:function(s,c){var m=this,f=null;if(typeof s=="number")f=s,s=null;else{if(typeof s=="string"&&m._state==="loaded"&&!m._sprite[s])return null;if(typeof s>"u"&&(s="__default",!m._playLock)){for(var y=0,S=0;S<m._sounds.length;S++)m._sounds[S]._paused&&!m._sounds[S]._ended&&(y++,f=m._sounds[S]._id);y===1?s=null:f=null}}var x=f?m._soundById(f):m._inactiveSound();if(!x)return null;if(f&&!s&&(s=x._sprite||"__default"),m._state!=="loaded"){x._sprite=s,x._ended=!1;var V=x._id;return m._queue.push({event:"play",action:function(){m.play(V)}}),V}if(f&&!x._paused)return c||m._loadQueue("play"),x._id;m._webAudio&&n._autoResume();var H=Math.max(0,x._seek>0?x._seek:m._sprite[s][0]/1e3),Z=Math.max(0,(m._sprite[s][0]+m._sprite[s][1])/1e3-H),me=Z*1e3/Math.abs(x._rate),Oe=m._sprite[s][0]/1e3,Be=(m._sprite[s][0]+m._sprite[s][1])/1e3;x._sprite=s,x._ended=!1;var ye=function(){x._paused=!1,x._seek=H,x._start=Oe,x._stop=Be,x._loop=!!(x._loop||m._sprite[s][2])};if(H>=Be){m._ended(x);return}var X=x._node;if(m._webAudio){var Te=function(){m._playLock=!1,ye(),m._refreshBuffer(x);var Xe=x._muted||m._muted?0:x._volume;X.gain.setValueAtTime(Xe,n.ctx.currentTime),x._playStart=n.ctx.currentTime,typeof X.bufferSource.start>"u"?x._loop?X.bufferSource.noteGrainOn(0,H,86400):X.bufferSource.noteGrainOn(0,H,Z):x._loop?X.bufferSource.start(0,H,86400):X.bufferSource.start(0,H,Z),me!==1/0&&(m._endTimers[x._id]=setTimeout(m._ended.bind(m,x),me)),c||setTimeout(function(){m._emit("play",x._id),m._loadQueue()},0)};n.state==="running"&&n.ctx.state!=="interrupted"?Te():(m._playLock=!0,m.once("resume",Te),m._clearTimer(x._id))}else{var Ue=function(){X.currentTime=H,X.muted=x._muted||m._muted||n._muted||X.muted,X.volume=x._volume*n.volume(),X.playbackRate=x._rate;try{var Xe=X.play();if(Xe&&typeof Promise<"u"&&(Xe instanceof Promise||typeof Xe.then=="function")?(m._playLock=!0,ye(),Xe.then(function(){m._playLock=!1,X._unlocked=!0,c?m._loadQueue():m._emit("play",x._id)}).catch(function(){m._playLock=!1,m._emit("playerror",x._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),x._ended=!0,x._paused=!0})):c||(m._playLock=!1,ye(),m._emit("play",x._id)),X.playbackRate=x._rate,X.paused){m._emit("playerror",x._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}s!=="__default"||x._loop?m._endTimers[x._id]=setTimeout(m._ended.bind(m,x),me):(m._endTimers[x._id]=function(){m._ended(x),X.removeEventListener("ended",m._endTimers[x._id],!1)},X.addEventListener("ended",m._endTimers[x._id],!1))}catch(lt){m._emit("playerror",x._id,lt)}};X.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(X.src=m._src,X.load());var ht=window&&window.ejecta||!X.readyState&&n._navigator.isCocoonJS;if(X.readyState>=3||ht)Ue();else{m._playLock=!0,m._state="loading";var Qe=function(){m._state="loaded",Ue(),X.removeEventListener(n._canPlayEvent,Qe,!1)};X.addEventListener(n._canPlayEvent,Qe,!1),m._clearTimer(x._id)}}return x._id},pause:function(s){var c=this;if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"pause",action:function(){c.pause(s)}}),c;for(var m=c._getSoundIds(s),f=0;f<m.length;f++){c._clearTimer(m[f]);var y=c._soundById(m[f]);if(y&&!y._paused&&(y._seek=c.seek(m[f]),y._rateSeek=0,y._paused=!0,c._stopFade(m[f]),y._node))if(c._webAudio){if(!y._node.bufferSource)continue;typeof y._node.bufferSource.stop>"u"?y._node.bufferSource.noteOff(0):y._node.bufferSource.stop(0),c._cleanBuffer(y._node)}else(!isNaN(y._node.duration)||y._node.duration===1/0)&&y._node.pause();arguments[1]||c._emit("pause",y?y._id:null)}return c},stop:function(s,c){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"stop",action:function(){m.stop(s)}}),m;for(var f=m._getSoundIds(s),y=0;y<f.length;y++){m._clearTimer(f[y]);var S=m._soundById(f[y]);S&&(S._seek=S._start||0,S._rateSeek=0,S._paused=!0,S._ended=!0,m._stopFade(f[y]),S._node&&(m._webAudio?S._node.bufferSource&&(typeof S._node.bufferSource.stop>"u"?S._node.bufferSource.noteOff(0):S._node.bufferSource.stop(0),m._cleanBuffer(S._node)):(!isNaN(S._node.duration)||S._node.duration===1/0)&&(S._node.currentTime=S._start||0,S._node.pause(),S._node.duration===1/0&&m._clearSound(S._node))),c||m._emit("stop",S._id))}return m},mute:function(s,c){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"mute",action:function(){m.mute(s,c)}}),m;if(typeof c>"u")if(typeof s=="boolean")m._muted=s;else return m._muted;for(var f=m._getSoundIds(c),y=0;y<f.length;y++){var S=m._soundById(f[y]);S&&(S._muted=s,S._interval&&m._stopFade(S._id),m._webAudio&&S._node?S._node.gain.setValueAtTime(s?0:S._volume,n.ctx.currentTime):S._node&&(S._node.muted=n._muted?!0:s),m._emit("mute",S._id))}return m},volume:function(){var s=this,c=arguments,m,f;if(c.length===0)return s._volume;if(c.length===1||c.length===2&&typeof c[1]>"u"){var y=s._getSoundIds(),S=y.indexOf(c[0]);S>=0?f=parseInt(c[0],10):m=parseFloat(c[0])}else c.length>=2&&(m=parseFloat(c[0]),f=parseInt(c[1],10));var x;if(typeof m<"u"&&m>=0&&m<=1){if(s._state!=="loaded"||s._playLock)return s._queue.push({event:"volume",action:function(){s.volume.apply(s,c)}}),s;typeof f>"u"&&(s._volume=m),f=s._getSoundIds(f);for(var V=0;V<f.length;V++)x=s._soundById(f[V]),x&&(x._volume=m,c[2]||s._stopFade(f[V]),s._webAudio&&x._node&&!x._muted?x._node.gain.setValueAtTime(m,n.ctx.currentTime):x._node&&!x._muted&&(x._node.volume=m*n.volume()),s._emit("volume",x._id))}else return x=f?s._soundById(f):s._sounds[0],x?x._volume:0;return s},fade:function(s,c,m,f){var y=this;if(y._state!=="loaded"||y._playLock)return y._queue.push({event:"fade",action:function(){y.fade(s,c,m,f)}}),y;s=Math.min(Math.max(0,parseFloat(s)),1),c=Math.min(Math.max(0,parseFloat(c)),1),m=parseFloat(m),y.volume(s,f);for(var S=y._getSoundIds(f),x=0;x<S.length;x++){var V=y._soundById(S[x]);if(V){if(f||y._stopFade(S[x]),y._webAudio&&!V._muted){var H=n.ctx.currentTime,Z=H+m/1e3;V._volume=s,V._node.gain.setValueAtTime(s,H),V._node.gain.linearRampToValueAtTime(c,Z)}y._startFadeInterval(V,s,c,m,S[x],typeof f>"u")}}return y},_startFadeInterval:function(s,c,m,f,y,S){var x=this,V=c,H=m-c,Z=Math.abs(H/.01),me=Math.max(4,Z>0?f/Z:f),Oe=Date.now();s._fadeTo=m,s._interval=setInterval(function(){var Be=(Date.now()-Oe)/f;Oe=Date.now(),V+=H*Be,V=Math.round(V*100)/100,H<0?V=Math.max(m,V):V=Math.min(m,V),x._webAudio?s._volume=V:x.volume(V,s._id,!0),S&&(x._volume=V),(m<c&&V<=m||m>c&&V>=m)&&(clearInterval(s._interval),s._interval=null,s._fadeTo=null,x.volume(m,s._id),x._emit("fade",s._id))},me)},_stopFade:function(s){var c=this,m=c._soundById(s);return m&&m._interval&&(c._webAudio&&m._node.gain.cancelScheduledValues(n.ctx.currentTime),clearInterval(m._interval),m._interval=null,c.volume(m._fadeTo,s),m._fadeTo=null,c._emit("fade",s)),c},loop:function(){var s=this,c=arguments,m,f,y;if(c.length===0)return s._loop;if(c.length===1)if(typeof c[0]=="boolean")m=c[0],s._loop=m;else return y=s._soundById(parseInt(c[0],10)),y?y._loop:!1;else c.length===2&&(m=c[0],f=parseInt(c[1],10));for(var S=s._getSoundIds(f),x=0;x<S.length;x++)y=s._soundById(S[x]),y&&(y._loop=m,s._webAudio&&y._node&&y._node.bufferSource&&(y._node.bufferSource.loop=m,m&&(y._node.bufferSource.loopStart=y._start||0,y._node.bufferSource.loopEnd=y._stop,s.playing(S[x])&&(s.pause(S[x],!0),s.play(S[x],!0)))));return s},rate:function(){var s=this,c=arguments,m,f;if(c.length===0)f=s._sounds[0]._id;else if(c.length===1){var y=s._getSoundIds(),S=y.indexOf(c[0]);S>=0?f=parseInt(c[0],10):m=parseFloat(c[0])}else c.length===2&&(m=parseFloat(c[0]),f=parseInt(c[1],10));var x;if(typeof m=="number"){if(s._state!=="loaded"||s._playLock)return s._queue.push({event:"rate",action:function(){s.rate.apply(s,c)}}),s;typeof f>"u"&&(s._rate=m),f=s._getSoundIds(f);for(var V=0;V<f.length;V++)if(x=s._soundById(f[V]),x){s.playing(f[V])&&(x._rateSeek=s.seek(f[V]),x._playStart=s._webAudio?n.ctx.currentTime:x._playStart),x._rate=m,s._webAudio&&x._node&&x._node.bufferSource?x._node.bufferSource.playbackRate.setValueAtTime(m,n.ctx.currentTime):x._node&&(x._node.playbackRate=m);var H=s.seek(f[V]),Z=(s._sprite[x._sprite][0]+s._sprite[x._sprite][1])/1e3-H,me=Z*1e3/Math.abs(x._rate);(s._endTimers[f[V]]||!x._paused)&&(s._clearTimer(f[V]),s._endTimers[f[V]]=setTimeout(s._ended.bind(s,x),me)),s._emit("rate",x._id)}}else return x=s._soundById(f),x?x._rate:s._rate;return s},seek:function(){var s=this,c=arguments,m,f;if(c.length===0)s._sounds.length&&(f=s._sounds[0]._id);else if(c.length===1){var y=s._getSoundIds(),S=y.indexOf(c[0]);S>=0?f=parseInt(c[0],10):s._sounds.length&&(f=s._sounds[0]._id,m=parseFloat(c[0]))}else c.length===2&&(m=parseFloat(c[0]),f=parseInt(c[1],10));if(typeof f>"u")return 0;if(typeof m=="number"&&(s._state!=="loaded"||s._playLock))return s._queue.push({event:"seek",action:function(){s.seek.apply(s,c)}}),s;var x=s._soundById(f);if(x)if(typeof m=="number"&&m>=0){var V=s.playing(f);V&&s.pause(f,!0),x._seek=m,x._ended=!1,s._clearTimer(f),!s._webAudio&&x._node&&!isNaN(x._node.duration)&&(x._node.currentTime=m);var H=function(){V&&s.play(f,!0),s._emit("seek",f)};if(V&&!s._webAudio){var Z=function(){s._playLock?setTimeout(Z,0):H()};setTimeout(Z,0)}else H()}else if(s._webAudio){var me=s.playing(f)?n.ctx.currentTime-x._playStart:0,Oe=x._rateSeek?x._rateSeek-x._seek:0;return x._seek+(Oe+me*Math.abs(x._rate))}else return x._node.currentTime;return s},playing:function(s){var c=this;if(typeof s=="number"){var m=c._soundById(s);return m?!m._paused:!1}for(var f=0;f<c._sounds.length;f++)if(!c._sounds[f]._paused)return!0;return!1},duration:function(s){var c=this,m=c._duration,f=c._soundById(s);return f&&(m=c._sprite[f._sprite][1]/1e3),m},state:function(){return this._state},unload:function(){for(var s=this,c=s._sounds,m=0;m<c.length;m++)c[m]._paused||s.stop(c[m]._id),s._webAudio||(s._clearSound(c[m]._node),c[m]._node.removeEventListener("error",c[m]._errorFn,!1),c[m]._node.removeEventListener(n._canPlayEvent,c[m]._loadFn,!1),c[m]._node.removeEventListener("ended",c[m]._endFn,!1),n._releaseHtml5Audio(c[m]._node)),delete c[m]._node,s._clearTimer(c[m]._id);var f=n._howls.indexOf(s);f>=0&&n._howls.splice(f,1);var y=!0;for(m=0;m<n._howls.length;m++)if(n._howls[m]._src===s._src||s._src.indexOf(n._howls[m]._src)>=0){y=!1;break}return i&&y&&delete i[s._src],n.noAudio=!1,s._state="unloaded",s._sounds=[],s=null,null},on:function(s,c,m,f){var y=this,S=y["_on"+s];return typeof c=="function"&&S.push(f?{id:m,fn:c,once:f}:{id:m,fn:c}),y},off:function(s,c,m){var f=this,y=f["_on"+s],S=0;if(typeof c=="number"&&(m=c,c=null),c||m)for(S=0;S<y.length;S++){var x=m===y[S].id;if(c===y[S].fn&&x||!c&&x){y.splice(S,1);break}}else if(s)f["_on"+s]=[];else{var V=Object.keys(f);for(S=0;S<V.length;S++)V[S].indexOf("_on")===0&&Array.isArray(f[V[S]])&&(f[V[S]]=[])}return f},once:function(s,c,m){var f=this;return f.on(s,c,m,1),f},_emit:function(s,c,m){for(var f=this,y=f["_on"+s],S=y.length-1;S>=0;S--)(!y[S].id||y[S].id===c||s==="load")&&(setTimeout((function(x){x.call(this,c,m)}).bind(f,y[S].fn),0),y[S].once&&f.off(s,y[S].fn,y[S].id));return f._loadQueue(s),f},_loadQueue:function(s){var c=this;if(c._queue.length>0){var m=c._queue[0];m.event===s&&(c._queue.shift(),c._loadQueue()),s||m.action()}return c},_ended:function(s){var c=this,m=s._sprite;if(!c._webAudio&&s._node&&!s._node.paused&&!s._node.ended&&s._node.currentTime<s._stop)return setTimeout(c._ended.bind(c,s),100),c;var f=!!(s._loop||c._sprite[m][2]);if(c._emit("end",s._id),!c._webAudio&&f&&c.stop(s._id,!0).play(s._id),c._webAudio&&f){c._emit("play",s._id),s._seek=s._start||0,s._rateSeek=0,s._playStart=n.ctx.currentTime;var y=(s._stop-s._start)*1e3/Math.abs(s._rate);c._endTimers[s._id]=setTimeout(c._ended.bind(c,s),y)}return c._webAudio&&!f&&(s._paused=!0,s._ended=!0,s._seek=s._start||0,s._rateSeek=0,c._clearTimer(s._id),c._cleanBuffer(s._node),n._autoSuspend()),!c._webAudio&&!f&&c.stop(s._id,!0),c},_clearTimer:function(s){var c=this;if(c._endTimers[s]){if(typeof c._endTimers[s]!="function")clearTimeout(c._endTimers[s]);else{var m=c._soundById(s);m&&m._node&&m._node.removeEventListener("ended",c._endTimers[s],!1)}delete c._endTimers[s]}return c},_soundById:function(s){for(var c=this,m=0;m<c._sounds.length;m++)if(s===c._sounds[m]._id)return c._sounds[m];return null},_inactiveSound:function(){var s=this;s._drain();for(var c=0;c<s._sounds.length;c++)if(s._sounds[c]._ended)return s._sounds[c].reset();return new t(s)},_drain:function(){var s=this,c=s._pool,m=0,f=0;if(!(s._sounds.length<c)){for(f=0;f<s._sounds.length;f++)s._sounds[f]._ended&&m++;for(f=s._sounds.length-1;f>=0;f--){if(m<=c)return;s._sounds[f]._ended&&(s._webAudio&&s._sounds[f]._node&&s._sounds[f]._node.disconnect(0),s._sounds.splice(f,1),m--)}}},_getSoundIds:function(s){var c=this;if(typeof s>"u"){for(var m=[],f=0;f<c._sounds.length;f++)m.push(c._sounds[f]._id);return m}else return[s]},_refreshBuffer:function(s){var c=this;return s._node.bufferSource=n.ctx.createBufferSource(),s._node.bufferSource.buffer=i[c._src],s._panner?s._node.bufferSource.connect(s._panner):s._node.bufferSource.connect(s._node),s._node.bufferSource.loop=s._loop,s._loop&&(s._node.bufferSource.loopStart=s._start||0,s._node.bufferSource.loopEnd=s._stop||0),s._node.bufferSource.playbackRate.setValueAtTime(s._rate,n.ctx.currentTime),c},_cleanBuffer:function(s){var c=this,m=n._navigator&&n._navigator.vendor.indexOf("Apple")>=0;if(!s.bufferSource)return c;if(n._scratchBuffer&&s.bufferSource&&(s.bufferSource.onended=null,s.bufferSource.disconnect(0),m))try{s.bufferSource.buffer=n._scratchBuffer}catch{}return s.bufferSource=null,c},_clearSound:function(s){var c=/MSIE |Trident\//.test(n._navigator&&n._navigator.userAgent);c||(s.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(s){this._parent=s,this.init()};t.prototype={init:function(){var s=this,c=s._parent;return s._muted=c._muted,s._loop=c._loop,s._volume=c._volume,s._rate=c._rate,s._seek=0,s._paused=!0,s._ended=!0,s._sprite="__default",s._id=++n._counter,c._sounds.push(s),s.create(),s},create:function(){var s=this,c=s._parent,m=n._muted||s._muted||s._parent._muted?0:s._volume;return c._webAudio?(s._node=typeof n.ctx.createGain>"u"?n.ctx.createGainNode():n.ctx.createGain(),s._node.gain.setValueAtTime(m,n.ctx.currentTime),s._node.paused=!0,s._node.connect(n.masterGain)):n.noAudio||(s._node=n._obtainHtml5Audio(),s._errorFn=s._errorListener.bind(s),s._node.addEventListener("error",s._errorFn,!1),s._loadFn=s._loadListener.bind(s),s._node.addEventListener(n._canPlayEvent,s._loadFn,!1),s._endFn=s._endListener.bind(s),s._node.addEventListener("ended",s._endFn,!1),s._node.src=c._src,s._node.preload=c._preload===!0?"auto":c._preload,s._node.volume=m*n.volume(),s._node.load()),s},reset:function(){var s=this,c=s._parent;return s._muted=c._muted,s._loop=c._loop,s._volume=c._volume,s._rate=c._rate,s._seek=0,s._rateSeek=0,s._paused=!0,s._ended=!0,s._sprite="__default",s._id=++n._counter,s},_errorListener:function(){var s=this;s._parent._emit("loaderror",s._id,s._node.error?s._node.error.code:0),s._node.removeEventListener("error",s._errorFn,!1)},_loadListener:function(){var s=this,c=s._parent;c._duration=Math.ceil(s._node.duration*10)/10,Object.keys(c._sprite).length===0&&(c._sprite={__default:[0,c._duration*1e3]}),c._state!=="loaded"&&(c._state="loaded",c._emit("load"),c._loadQueue()),s._node.removeEventListener(n._canPlayEvent,s._loadFn,!1)},_endListener:function(){var s=this,c=s._parent;c._duration===1/0&&(c._duration=Math.ceil(s._node.duration*10)/10,c._sprite.__default[1]===1/0&&(c._sprite.__default[1]=c._duration*1e3),c._ended(s)),s._node.removeEventListener("ended",s._endFn,!1)}};var i={},o=function(s){var c=s._src;if(i[c]){s._duration=i[c].duration,d(s);return}if(/^data:[^;]+;base64,/.test(c)){for(var m=atob(c.split(",")[1]),f=new Uint8Array(m.length),y=0;y<m.length;++y)f[y]=m.charCodeAt(y);l(f.buffer,s)}else{var S=new XMLHttpRequest;S.open(s._xhr.method,c,!0),S.withCredentials=s._xhr.withCredentials,S.responseType="arraybuffer",s._xhr.headers&&Object.keys(s._xhr.headers).forEach(function(x){S.setRequestHeader(x,s._xhr.headers[x])}),S.onload=function(){var x=(S.status+"")[0];if(x!=="0"&&x!=="2"&&x!=="3"){s._emit("loaderror",null,"Failed loading audio file with status: "+S.status+".");return}l(S.response,s)},S.onerror=function(){s._webAudio&&(s._html5=!0,s._webAudio=!1,s._sounds=[],delete i[c],s.load())},r(S)}},r=function(s){try{s.send()}catch{s.onerror()}},l=function(s,c){var m=function(){c._emit("loaderror",null,"Decoding audio data failed.")},f=function(y){y&&c._sounds.length>0?(i[c._src]=y,d(c,y)):m()};typeof Promise<"u"&&n.ctx.decodeAudioData.length===1?n.ctx.decodeAudioData(s).then(f).catch(m):n.ctx.decodeAudioData(s,f,m)},d=function(s,c){c&&!s._duration&&(s._duration=c.duration),Object.keys(s._sprite).length===0&&(s._sprite={__default:[0,s._duration*1e3]}),s._state!=="loaded"&&(s._state="loaded",s._emit("load"),s._loadQueue())},p=function(){if(n.usingWebAudio){try{typeof AudioContext<"u"?n.ctx=new AudioContext:typeof webkitAudioContext<"u"?n.ctx=new webkitAudioContext:n.usingWebAudio=!1}catch{n.usingWebAudio=!1}n.ctx||(n.usingWebAudio=!1);var s=/iP(hone|od|ad)/.test(n._navigator&&n._navigator.platform),c=n._navigator&&n._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),m=c?parseInt(c[1],10):null;if(s&&m&&m<9){var f=/safari/.test(n._navigator&&n._navigator.userAgent.toLowerCase());n._navigator&&!f&&(n.usingWebAudio=!1)}n.usingWebAudio&&(n.masterGain=typeof n.ctx.createGain>"u"?n.ctx.createGainNode():n.ctx.createGain(),n.masterGain.gain.setValueAtTime(n._muted?0:n._volume,n.ctx.currentTime),n.masterGain.connect(n.ctx.destination)),n._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:n,Howl:e}}),typeof Po<"u"&&(Po.Howler=n,Po.Howl=e),typeof global<"u"?(global.HowlerGlobal=a,global.Howler=n,global.Howl=e,global.Sound=t):typeof window<"u"&&(window.HowlerGlobal=a,window.Howler=n,window.Howl=e,window.Sound=t)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(n){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var t=e._howls.length-1;t>=0;t--)e._howls[t].stereo(n);return e},HowlerGlobal.prototype.pos=function(n,e,t){var i=this;if(!i.ctx||!i.ctx.listener)return i;if(e=typeof e!="number"?i._pos[1]:e,t=typeof t!="number"?i._pos[2]:t,typeof n=="number")i._pos=[n,e,t],typeof i.ctx.listener.positionX<"u"?(i.ctx.listener.positionX.setTargetAtTime(i._pos[0],Howler.ctx.currentTime,.1),i.ctx.listener.positionY.setTargetAtTime(i._pos[1],Howler.ctx.currentTime,.1),i.ctx.listener.positionZ.setTargetAtTime(i._pos[2],Howler.ctx.currentTime,.1)):i.ctx.listener.setPosition(i._pos[0],i._pos[1],i._pos[2]);else return i._pos;return i},HowlerGlobal.prototype.orientation=function(n,e,t,i,o,r){var l=this;if(!l.ctx||!l.ctx.listener)return l;var d=l._orientation;if(e=typeof e!="number"?d[1]:e,t=typeof t!="number"?d[2]:t,i=typeof i!="number"?d[3]:i,o=typeof o!="number"?d[4]:o,r=typeof r!="number"?d[5]:r,typeof n=="number")l._orientation=[n,e,t,i,o,r],typeof l.ctx.listener.forwardX<"u"?(l.ctx.listener.forwardX.setTargetAtTime(n,Howler.ctx.currentTime,.1),l.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),l.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1),l.ctx.listener.upX.setTargetAtTime(i,Howler.ctx.currentTime,.1),l.ctx.listener.upY.setTargetAtTime(o,Howler.ctx.currentTime,.1),l.ctx.listener.upZ.setTargetAtTime(r,Howler.ctx.currentTime,.1)):l.ctx.listener.setOrientation(n,e,t,i,o,r);else return d;return l},Howl.prototype.init=(function(n){return function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],n.call(this,e)}})(Howl.prototype.init),Howl.prototype.stereo=function(n,e){var t=this;if(!t._webAudio)return t;if(t._state!=="loaded")return t._queue.push({event:"stereo",action:function(){t.stereo(n,e)}}),t;var i=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof n=="number")t._stereo=n,t._pos=[n,0,0];else return t._stereo;for(var o=t._getSoundIds(e),r=0;r<o.length;r++){var l=t._soundById(o[r]);if(l)if(typeof n=="number")l._stereo=n,l._pos=[n,0,0],l._node&&(l._pannerAttr.panningModel="equalpower",(!l._panner||!l._panner.pan)&&a(l,i),i==="spatial"?typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(n,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):l._panner.setPosition(n,0,0):l._panner.pan.setValueAtTime(n,Howler.ctx.currentTime)),t._emit("stereo",l._id);else return l._stereo}return t},Howl.prototype.pos=function(n,e,t,i){var o=this;if(!o._webAudio)return o;if(o._state!=="loaded")return o._queue.push({event:"pos",action:function(){o.pos(n,e,t,i)}}),o;if(e=typeof e!="number"?0:e,t=typeof t!="number"?-.5:t,typeof i>"u")if(typeof n=="number")o._pos=[n,e,t];else return o._pos;for(var r=o._getSoundIds(i),l=0;l<r.length;l++){var d=o._soundById(r[l]);if(d)if(typeof n=="number")d._pos=[n,e,t],d._node&&((!d._panner||d._panner.pan)&&a(d,"spatial"),typeof d._panner.positionX<"u"?(d._panner.positionX.setValueAtTime(n,Howler.ctx.currentTime),d._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),d._panner.positionZ.setValueAtTime(t,Howler.ctx.currentTime)):d._panner.setPosition(n,e,t)),o._emit("pos",d._id);else return d._pos}return o},Howl.prototype.orientation=function(n,e,t,i){var o=this;if(!o._webAudio)return o;if(o._state!=="loaded")return o._queue.push({event:"orientation",action:function(){o.orientation(n,e,t,i)}}),o;if(e=typeof e!="number"?o._orientation[1]:e,t=typeof t!="number"?o._orientation[2]:t,typeof i>"u")if(typeof n=="number")o._orientation=[n,e,t];else return o._orientation;for(var r=o._getSoundIds(i),l=0;l<r.length;l++){var d=o._soundById(r[l]);if(d)if(typeof n=="number")d._orientation=[n,e,t],d._node&&(d._panner||(d._pos||(d._pos=o._pos||[0,0,-.5]),a(d,"spatial")),typeof d._panner.orientationX<"u"?(d._panner.orientationX.setValueAtTime(n,Howler.ctx.currentTime),d._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),d._panner.orientationZ.setValueAtTime(t,Howler.ctx.currentTime)):d._panner.setOrientation(n,e,t)),o._emit("orientation",d._id);else return d._orientation}return o},Howl.prototype.pannerAttr=function(){var n=this,e=arguments,t,i,o;if(!n._webAudio)return n;if(e.length===0)return n._pannerAttr;if(e.length===1)if(typeof e[0]=="object")t=e[0],typeof i>"u"&&(t.pannerAttr||(t.pannerAttr={coneInnerAngle:t.coneInnerAngle,coneOuterAngle:t.coneOuterAngle,coneOuterGain:t.coneOuterGain,distanceModel:t.distanceModel,maxDistance:t.maxDistance,refDistance:t.refDistance,rolloffFactor:t.rolloffFactor,panningModel:t.panningModel}),n._pannerAttr={coneInnerAngle:typeof t.pannerAttr.coneInnerAngle<"u"?t.pannerAttr.coneInnerAngle:n._coneInnerAngle,coneOuterAngle:typeof t.pannerAttr.coneOuterAngle<"u"?t.pannerAttr.coneOuterAngle:n._coneOuterAngle,coneOuterGain:typeof t.pannerAttr.coneOuterGain<"u"?t.pannerAttr.coneOuterGain:n._coneOuterGain,distanceModel:typeof t.pannerAttr.distanceModel<"u"?t.pannerAttr.distanceModel:n._distanceModel,maxDistance:typeof t.pannerAttr.maxDistance<"u"?t.pannerAttr.maxDistance:n._maxDistance,refDistance:typeof t.pannerAttr.refDistance<"u"?t.pannerAttr.refDistance:n._refDistance,rolloffFactor:typeof t.pannerAttr.rolloffFactor<"u"?t.pannerAttr.rolloffFactor:n._rolloffFactor,panningModel:typeof t.pannerAttr.panningModel<"u"?t.pannerAttr.panningModel:n._panningModel});else return o=n._soundById(parseInt(e[0],10)),o?o._pannerAttr:n._pannerAttr;else e.length===2&&(t=e[0],i=parseInt(e[1],10));for(var r=n._getSoundIds(i),l=0;l<r.length;l++)if(o=n._soundById(r[l]),o){var d=o._pannerAttr;d={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:d.coneInnerAngle,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:d.coneOuterAngle,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:d.coneOuterGain,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:d.distanceModel,maxDistance:typeof t.maxDistance<"u"?t.maxDistance:d.maxDistance,refDistance:typeof t.refDistance<"u"?t.refDistance:d.refDistance,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:d.rolloffFactor,panningModel:typeof t.panningModel<"u"?t.panningModel:d.panningModel};var p=o._panner;p||(o._pos||(o._pos=n._pos||[0,0,-.5]),a(o,"spatial"),p=o._panner),p.coneInnerAngle=d.coneInnerAngle,p.coneOuterAngle=d.coneOuterAngle,p.coneOuterGain=d.coneOuterGain,p.distanceModel=d.distanceModel,p.maxDistance=d.maxDistance,p.refDistance=d.refDistance,p.rolloffFactor=d.rolloffFactor,p.panningModel=d.panningModel}return n},Sound.prototype.init=(function(n){return function(){var e=this,t=e._parent;e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,n.call(this),e._stereo?t.stereo(e._stereo):e._pos&&t.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}})(Sound.prototype.init),Sound.prototype.reset=(function(n){return function(){var e=this,t=e._parent;return e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,e._stereo?t.stereo(e._stereo):e._pos?t.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,t._refreshBuffer(e)),n.call(this)}})(Sound.prototype.reset);var a=function(n,e){e=e||"spatial",e==="spatial"?(n._panner=Howler.ctx.createPanner(),n._panner.coneInnerAngle=n._pannerAttr.coneInnerAngle,n._panner.coneOuterAngle=n._pannerAttr.coneOuterAngle,n._panner.coneOuterGain=n._pannerAttr.coneOuterGain,n._panner.distanceModel=n._pannerAttr.distanceModel,n._panner.maxDistance=n._pannerAttr.maxDistance,n._panner.refDistance=n._pannerAttr.refDistance,n._panner.rolloffFactor=n._pannerAttr.rolloffFactor,n._panner.panningModel=n._pannerAttr.panningModel,typeof n._panner.positionX<"u"?(n._panner.positionX.setValueAtTime(n._pos[0],Howler.ctx.currentTime),n._panner.positionY.setValueAtTime(n._pos[1],Howler.ctx.currentTime),n._panner.positionZ.setValueAtTime(n._pos[2],Howler.ctx.currentTime)):n._panner.setPosition(n._pos[0],n._pos[1],n._pos[2]),typeof n._panner.orientationX<"u"?(n._panner.orientationX.setValueAtTime(n._orientation[0],Howler.ctx.currentTime),n._panner.orientationY.setValueAtTime(n._orientation[1],Howler.ctx.currentTime),n._panner.orientationZ.setValueAtTime(n._orientation[2],Howler.ctx.currentTime)):n._panner.setOrientation(n._orientation[0],n._orientation[1],n._orientation[2])):(n._panner=Howler.ctx.createStereoPanner(),n._panner.pan.setValueAtTime(n._stereo,Howler.ctx.currentTime)),n._panner.connect(n._node),n._paused||n._parent.pause(n._id,!0).play(n._id,!0)}})()});function kd(a,n,e,t,i){let o=(...r)=>(console.warn("gridstack.js: Function `"+e+"` is deprecated in "+i+" and has been replaced with `"+t+"`. It will be **removed** in a future release"),n.apply(a,r));return o.prototype=n.prototype,o}var M=class a{static getElements(n,e=document){if(typeof n=="string"){let t="getElementById"in e?e:void 0;if(t&&!isNaN(+n[0])){let o=t.getElementById(n);return o?[o]:[]}let i=e.querySelectorAll(n);return!i.length&&n[0]!=="."&&n[0]!=="#"&&(i=e.querySelectorAll("."+n),i.length||(i=e.querySelectorAll("#"+n))),Array.from(i)}return[n]}static getElement(n,e=document){if(typeof n=="string"){let t="getElementById"in e?e:void 0;if(!n.length)return null;if(t&&n[0]==="#")return t.getElementById(n.substring(1));if(n[0]==="#"||n[0]==="."||n[0]==="[")return e.querySelector(n);if(t&&!isNaN(+n[0]))return t.getElementById(n);let i=e.querySelector(n);return t&&!i&&(i=t.getElementById(n)),i||(i=e.querySelector("."+n)),i}return n}static lazyLoad(n){return n.lazyLoad||n.grid?.opts?.lazyLoad&&n.lazyLoad!==!1}static createDiv(n,e){let t=document.createElement("div");return n.forEach(i=>{i&&t.classList.add(i)}),e?.appendChild(t),t}static shouldSizeToContent(n,e=!1){return n?.grid&&(e?n.sizeToContent===!0||n.grid.opts.sizeToContent===!0&&n.sizeToContent===void 0:!!n.sizeToContent||n.grid.opts.sizeToContent&&n.sizeToContent!==!1)}static isIntercepted(n,e){return!(n.y>=e.y+e.h||n.y+n.h<=e.y||n.x+n.w<=e.x||n.x>=e.x+e.w)}static isTouching(n,e){return a.isIntercepted(n,{x:e.x-.5,y:e.y-.5,w:e.w+1,h:e.h+1})}static areaIntercept(n,e){let t=n.x>e.x?n.x:e.x,i=n.x+n.w<e.x+e.w?n.x+n.w:e.x+e.w;if(i<=t)return 0;let o=n.y>e.y?n.y:e.y,r=n.y+n.h<e.y+e.h?n.y+n.h:e.y+e.h;return r<=o?0:(i-t)*(r-o)}static area(n){return n.w*n.h}static sort(n,e=1){return n.sort((i,o)=>{let r=e*((i.y??1e4)-(o.y??1e4));return r===0?e*((i.x??1e4)-(o.x??1e4)):r})}static find(n,e){return e?n.find(t=>t.id===e):void 0}static createStylesheet(n,e,t){let i=document.createElement("style"),o=t?.nonce;return o&&(i.nonce=o),i.setAttribute("type","text/css"),i.setAttribute("gs-style-id",n),i.styleSheet?i.styleSheet.cssText="":i.appendChild(document.createTextNode("")),e?e.insertBefore(i,e.firstChild):(e=document.getElementsByTagName("head")[0],e.appendChild(i)),i}static removeStylesheet(n,e){let i=(e||document).querySelector("STYLE[gs-style-id="+n+"]");i&&i.parentNode&&i.remove()}static addCSSRule(n,e,t){n.textContent+=`${e} { ${t} } `}static toBool(n){return typeof n=="boolean"?n:typeof n=="string"?(n=n.toLowerCase(),!(n===""||n==="no"||n==="false"||n==="0")):!!n}static toNumber(n){return n===null||n.length===0?void 0:Number(n)}static parseHeight(n){let e,t="px";if(typeof n=="string")if(n==="auto"||n==="")e=0;else{let i=n.match(/^(-[0-9]+\.[0-9]+|[0-9]*\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%|cm|mm)?$/);if(!i)throw new Error(`Invalid height val = ${n}`);t=i[2]||"px",e=parseFloat(i[1])}else e=n;return{h:e,unit:t}}static defaults(n,...e){return e.forEach(t=>{for(let i in t){if(!t.hasOwnProperty(i))return;n[i]===null||n[i]===void 0?n[i]=t[i]:typeof t[i]=="object"&&typeof n[i]=="object"&&this.defaults(n[i],t[i])}}),n}static same(n,e){if(typeof n!="object")return n==e;if(typeof n!=typeof e||Object.keys(n).length!==Object.keys(e).length)return!1;for(let t in n)if(n[t]!==e[t])return!1;return!0}static copyPos(n,e,t=!1){return e.x!==void 0&&(n.x=e.x),e.y!==void 0&&(n.y=e.y),e.w!==void 0&&(n.w=e.w),e.h!==void 0&&(n.h=e.h),t&&(e.minW&&(n.minW=e.minW),e.minH&&(n.minH=e.minH),e.maxW&&(n.maxW=e.maxW),e.maxH&&(n.maxH=e.maxH)),n}static samePos(n,e){return n&&e&&n.x===e.x&&n.y===e.y&&(n.w||1)===(e.w||1)&&(n.h||1)===(e.h||1)}static sanitizeMinMax(n){n.minW||delete n.minW,n.minH||delete n.minH,n.maxW||delete n.maxW,n.maxH||delete n.maxH}static removeInternalAndSame(n,e){if(!(typeof n!="object"||typeof e!="object"))for(let t in n){let i=n[t],o=e[t];t[0]==="_"||i===o?delete n[t]:i&&typeof i=="object"&&o!==void 0&&(a.removeInternalAndSame(i,o),Object.keys(i).length||delete n[t])}}static removeInternalForSave(n,e=!0){for(let t in n)(t[0]==="_"||n[t]===null||n[t]===void 0)&&delete n[t];delete n.grid,e&&delete n.el,n.autoPosition||delete n.autoPosition,n.noResize||delete n.noResize,n.noMove||delete n.noMove,n.locked||delete n.locked,(n.w===1||n.w===n.minW)&&delete n.w,(n.h===1||n.h===n.minH)&&delete n.h}static throttle(n,e){let t=!1;return(...i)=>{t||(t=!0,setTimeout(()=>{n(...i),t=!1},e))}}static removePositioningStyles(n){let e=n.style;e.position&&e.removeProperty("position"),e.left&&e.removeProperty("left"),e.top&&e.removeProperty("top"),e.width&&e.removeProperty("width"),e.height&&e.removeProperty("height")}static getScrollElement(n){if(!n)return document.scrollingElement||document.documentElement;let e=getComputedStyle(n);return/(auto|scroll)/.test(e.overflow+e.overflowY)?n:this.getScrollElement(n.parentElement)}static updateScrollPosition(n,e,t){let i=n.getBoundingClientRect(),o=window.innerHeight||document.documentElement.clientHeight;if(i.top<0||i.bottom>o){let r=i.bottom-o,l=i.top,d=this.getScrollElement(n);if(d!==null){let p=d.scrollTop;i.top<0&&t<0?n.offsetHeight>o?d.scrollTop+=t:d.scrollTop+=Math.abs(l)>Math.abs(t)?t:l:t>0&&(n.offsetHeight>o?d.scrollTop+=t:d.scrollTop+=r>t?t:r),e.top+=d.scrollTop-p}}}static updateScrollResize(n,e,t){let i=this.getScrollElement(e),o=i.clientHeight,r=i===this.getScrollElement()?0:i.getBoundingClientRect().top,l=n.clientY-r,d=l<t,p=l>o-t;d?i.scrollBy({behavior:"smooth",top:l-t}):p&&i.scrollBy({behavior:"smooth",top:t-(o-l)})}static clone(n){return n==null||typeof n!="object"?n:n instanceof Array?[...n]:$({},n)}static cloneDeep(n){let e=["parentGrid","el","grid","subGrid","engine"],t=a.clone(n);for(let i in t)t.hasOwnProperty(i)&&typeof t[i]=="object"&&i.substring(0,2)!=="__"&&!e.find(o=>o===i)&&(t[i]=a.cloneDeep(n[i]));return t}static cloneNode(n){let e=n.cloneNode(!0);return e.removeAttribute("id"),e}static appendTo(n,e){let t;typeof e=="string"?t=a.getElement(e):t=e,t&&t.appendChild(n)}static addElStyles(n,e){if(e instanceof Object)for(let t in e)e.hasOwnProperty(t)&&(Array.isArray(e[t])?e[t].forEach(i=>{n.style[t]=i}):n.style[t]=e[t])}static initEvent(n,e){let t={type:e.type},i={button:0,which:0,buttons:1,bubbles:!0,cancelable:!0,target:e.target?e.target:n.target};return["altKey","ctrlKey","metaKey","shiftKey"].forEach(o=>t[o]=n[o]),["pageX","pageY","clientX","clientY","screenX","screenY"].forEach(o=>t[o]=n[o]),$($({},t),i)}static simulateMouseEvent(n,e,t){let i=n,o=new MouseEvent(e,{bubbles:!0,composed:!0,cancelable:!0,view:window,detail:1,screenX:n.screenX,screenY:n.screenY,clientX:n.clientX,clientY:n.clientY,ctrlKey:i.ctrlKey??!1,altKey:i.altKey??!1,shiftKey:i.shiftKey??!1,metaKey:i.metaKey??!1,button:0,relatedTarget:n.target});(t||n.target).dispatchEvent(o)}static getValuesFromTransformedElement(n){let e=document.createElement("div");a.addElStyles(e,{opacity:"0",position:"fixed",top:"0px",left:"0px",width:"1px",height:"1px",zIndex:"-999999"}),n.appendChild(e);let t=e.getBoundingClientRect();return n.removeChild(e),e.remove(),{xScale:1/t.width,yScale:1/t.height,xOffset:t.left,yOffset:t.top}}static swap(n,e,t){if(!n)return;let i=n[e];n[e]=n[t],n[t]=i}static canBeRotated(n){return!(!n||n.w===n.h||n.locked||n.noResize||n.grid?.opts.disableResize||n.minW&&n.minW===n.maxW||n.minH&&n.minH===n.maxH)}};var oo=(()=>{class a{constructor(e={}){this.addedNodes=[],this.removedNodes=[],this.defaultColumn=12,this.column=e.column||this.defaultColumn,this.column>this.defaultColumn&&(this.defaultColumn=this.column),this.maxRow=e.maxRow,this._float=e.float,this.nodes=e.nodes||[],this.onChange=e.onChange}batchUpdate(e=!0,t=!0){return!!this.batchMode===e?this:(this.batchMode=e,e?(this._prevFloat=this._float,this._float=!0,this.cleanNodes(),this.saveInitial()):(this._float=this._prevFloat,delete this._prevFloat,t&&this._packNodes(),this._notify()),this)}_useEntireRowArea(e,t){return(!this.float||this.batchMode&&!this._prevFloat)&&!this._hasLocked&&(!e._moving||e._skipDown||t.y<=e.y)}_fixCollisions(e,t=e,i,o={}){if(this.sortNodes(-1),i=i||this.collide(e,t),!i)return!1;if(e._moving&&!o.nested&&!this.float&&this.swap(e,i))return!0;let r=t;!this._loading&&this._useEntireRowArea(e,t)&&(r={x:0,w:this.column,y:t.y,h:t.h},i=this.collide(e,r,o.skip));let l=!1,d={nested:!0,pack:!1},p=0;for(;i=i||this.collide(e,r,o.skip);){if(p++>this.nodes.length*2)throw new Error("Infinite collide check");let s;if(i.locked||this._loading||e._moving&&!e._skipDown&&t.y>e.y&&!this.float&&(!this.collide(i,Ze($({},i),{y:e.y}),e)||!this.collide(i,Ze($({},i),{y:t.y-i.h}),e))){e._skipDown=e._skipDown||t.y>e.y;let c=$(Ze($({},t),{y:i.y+i.h}),d);s=this._loading&&M.samePos(e,c)?!0:this.moveNode(e,c),(i.locked||this._loading)&&s?M.copyPos(t,e):!i.locked&&s&&o.pack&&(this._packNodes(),t.y=i.y+i.h,M.copyPos(e,t)),l=l||s}else s=this.moveNode(i,$(Ze($({},i),{y:t.y+t.h,skip:e}),d));if(!s)return l;i=void 0}return l}collide(e,t=e,i){let o=e._id,r=i?._id;return this.nodes.find(l=>l._id!==o&&l._id!==r&&M.isIntercepted(l,t))}collideAll(e,t=e,i){let o=e._id,r=i?._id;return this.nodes.filter(l=>l._id!==o&&l._id!==r&&M.isIntercepted(l,t))}directionCollideCoverage(e,t,i){if(!t.rect||!e._rect)return;let o=e._rect,r=$({},t.rect);r.y>o.y?(r.h+=r.y-o.y,r.y=o.y):r.h+=o.y-r.y,r.x>o.x?(r.w+=r.x-o.x,r.x=o.x):r.w+=o.x-r.x;let l,d=.5;for(let p of i){if(p.locked||!p._rect)break;let s=p._rect,c=Number.MAX_VALUE,m=Number.MAX_VALUE;o.y<s.y?c=(r.y+r.h-s.y)/s.h:o.y+o.h>s.y+s.h&&(c=(s.y+s.h-r.y)/s.h),o.x<s.x?m=(r.x+r.w-s.x)/s.w:o.x+o.w>s.x+s.w&&(m=(s.x+s.w-r.x)/s.w);let f=Math.min(m,c);f>d&&(d=f,l=p)}return t.collide=l,l}cacheRects(e,t,i,o,r,l){return this.nodes.forEach(d=>d._rect={y:d.y*t+i,x:d.x*e+l,w:d.w*e-l-o,h:d.h*t-i-r}),this}swap(e,t){if(!t||t.locked||!e||e.locked)return!1;function i(){let r=t.x,l=t.y;return t.x=e.x,t.y=e.y,e.h!=t.h?(e.x=r,e.y=t.y+t.h):e.w!=t.w?(e.x=t.x+t.w,e.y=l):(e.x=r,e.y=l),e._dirty=t._dirty=!0,!0}let o;if(e.w===t.w&&e.h===t.h&&(e.x===t.x||e.y===t.y)&&(o=M.isTouching(e,t)))return i();if(o!==!1){if(e.w===t.w&&e.x===t.x&&(o||(o=M.isTouching(e,t)))){if(t.y<e.y){let r=e;e=t,t=r}return i()}if(o!==!1){if(e.h===t.h&&e.y===t.y&&(o||(o=M.isTouching(e,t)))){if(t.x<e.x){let r=e;e=t,t=r}return i()}return!1}}}isAreaEmpty(e,t,i,o){let r={x:e||0,y:t||0,w:i||1,h:o||1};return!this.collide(r)}compact(e="compact",t=!0){if(this.nodes.length===0)return this;t&&this.sortNodes();let i=this.batchMode;i||this.batchUpdate();let o=this._inColumnResize;o||(this._inColumnResize=!0);let r=this.nodes;return this.nodes=[],r.forEach((l,d,p)=>{let s;l.locked||(l.autoPosition=!0,e==="list"&&d&&(s=p[d-1])),this.addNode(l,!1,s)}),o||delete this._inColumnResize,i||this.batchUpdate(!1),this}set float(e){this._float!==e&&(this._float=e||!1,e||this._packNodes()._notify())}get float(){return this._float||!1}sortNodes(e=1){return this.nodes=M.sort(this.nodes,e),this}_packNodes(){return this.batchMode?this:(this.sortNodes(),this.float?this.nodes.forEach(e=>{if(e._updating||e._orig===void 0||e.y===e._orig.y)return;let t=e.y;for(;t>e._orig.y;)--t,this.collide(e,{x:e.x,y:t,w:e.w,h:e.h})||(e._dirty=!0,e.y=t)}):this.nodes.forEach((e,t)=>{if(!e.locked)for(;e.y>0;){let i=t===0?0:e.y-1;if(!(t===0||!this.collide(e,{x:e.x,y:i,w:e.w,h:e.h})))break;e._dirty=e.y!==i,e.y=i}}),this)}prepareNode(e,t){e._id=e._id??a._idSeq++;let i=e.id;if(i){let r=1;for(;this.nodes.find(l=>l.id===e.id&&l!==e);)e.id=i+"_"+r++}(e.x===void 0||e.y===void 0||e.x===null||e.y===null)&&(e.autoPosition=!0);let o={x:0,y:0,w:1,h:1};return M.defaults(e,o),e.autoPosition||delete e.autoPosition,e.noResize||delete e.noResize,e.noMove||delete e.noMove,M.sanitizeMinMax(e),typeof e.x=="string"&&(e.x=Number(e.x)),typeof e.y=="string"&&(e.y=Number(e.y)),typeof e.w=="string"&&(e.w=Number(e.w)),typeof e.h=="string"&&(e.h=Number(e.h)),isNaN(e.x)&&(e.x=o.x,e.autoPosition=!0),isNaN(e.y)&&(e.y=o.y,e.autoPosition=!0),isNaN(e.w)&&(e.w=o.w),isNaN(e.h)&&(e.h=o.h),this.nodeBoundFix(e,t),e}nodeBoundFix(e,t){let i=e._orig||M.copyPos({},e);if(e.maxW&&(e.w=Math.min(e.w||1,e.maxW)),e.maxH&&(e.h=Math.min(e.h||1,e.maxH)),e.minW&&(e.w=Math.max(e.w||1,e.minW)),e.minH&&(e.h=Math.max(e.h||1,e.minH)),(e.x||0)+(e.w||1)>this.column&&this.column<this.defaultColumn&&!this._inColumnResize&&!this.skipCacheUpdate&&e._id&&this.findCacheLayout(e,this.defaultColumn)===-1){let r=$({},e);r.autoPosition||r.x===void 0?(delete r.x,delete r.y):r.x=Math.min(this.defaultColumn-1,r.x),r.w=Math.min(this.defaultColumn,r.w||1),this.cacheOneLayout(r,this.defaultColumn)}return e.w>this.column?e.w=this.column:e.w<1&&(e.w=1),this.maxRow&&e.h>this.maxRow?e.h=this.maxRow:e.h<1&&(e.h=1),e.x<0&&(e.x=0),e.y<0&&(e.y=0),e.x+e.w>this.column&&(t?e.w=this.column-e.x:e.x=this.column-e.w),this.maxRow&&e.y+e.h>this.maxRow&&(t?e.h=this.maxRow-e.y:e.y=this.maxRow-e.h),M.samePos(e,i)||(e._dirty=!0),this}getDirtyNodes(e){return e?this.nodes.filter(t=>t._dirty&&!M.samePos(t,t._orig)):this.nodes.filter(t=>t._dirty)}_notify(e){if(this.batchMode||!this.onChange)return this;let t=(e||[]).concat(this.getDirtyNodes());return this.onChange(t),this}cleanNodes(){return this.batchMode?this:(this.nodes.forEach(e=>{delete e._dirty,delete e._lastTried}),this)}saveInitial(){return this.nodes.forEach(e=>{e._orig=M.copyPos({},e),delete e._dirty}),this._hasLocked=this.nodes.some(e=>e.locked),this}restoreInitial(){return this.nodes.forEach(e=>{!e._orig||M.samePos(e,e._orig)||(M.copyPos(e,e._orig),e._dirty=!0)}),this._notify(),this}findEmptyPosition(e,t=this.nodes,i=this.column,o){let r=o?o.y*i+(o.x+o.w):0,l=!1;for(let d=r;!l;++d){let p=d%i,s=Math.floor(d/i);if(p+e.w>i)continue;let c={x:p,y:s,w:e.w,h:e.h};t.find(m=>M.isIntercepted(c,m))||((e.x!==p||e.y!==s)&&(e._dirty=!0),e.x=p,e.y=s,delete e.autoPosition,l=!0)}return l}addNode(e,t=!1,i){let o=this.nodes.find(l=>l._id===e._id);if(o)return o;this._inColumnResize?this.nodeBoundFix(e):this.prepareNode(e),delete e._temporaryRemoved,delete e._removeDOM;let r;return e.autoPosition&&this.findEmptyPosition(e,this.nodes,this.column,i)&&(delete e.autoPosition,r=!0),this.nodes.push(e),t&&this.addedNodes.push(e),r||this._fixCollisions(e),this.batchMode||this._packNodes()._notify(),e}removeNode(e,t=!0,i=!1){return this.nodes.find(o=>o._id===e._id)?(i&&this.removedNodes.push(e),t&&(e._removeDOM=!0),this.nodes=this.nodes.filter(o=>o._id!==e._id),e._isAboutToRemove||this._packNodes(),this._notify([e]),this):this}removeAll(e=!0,t=!0){if(delete this._layouts,!this.nodes.length)return this;e&&this.nodes.forEach(o=>o._removeDOM=!0);let i=this.nodes;return this.removedNodes=t?i:[],this.nodes=[],this._notify(i)}moveNodeCheck(e,t){if(!this.changedPosConstrain(e,t))return!1;if(t.pack=!0,!this.maxRow)return this.moveNode(e,t);let i,o=new a({column:this.column,float:this.float,nodes:this.nodes.map(l=>l._id===e._id?(i=$({},l),i):$({},l))});if(!i)return!1;let r=o.moveNode(i,t)&&o.getRow()<=Math.max(this.getRow(),this.maxRow);if(!r&&!t.resizing&&t.collide){let l=t.collide.el.gridstackNode;if(this.swap(e,l))return this._notify(),!0}return r?(o.nodes.filter(l=>l._dirty).forEach(l=>{let d=this.nodes.find(p=>p._id===l._id);d&&(M.copyPos(d,l),d._dirty=!0)}),this._notify(),!0):!1}willItFit(e){if(delete e._willFitPos,!this.maxRow)return!0;let t=new a({column:this.column,float:this.float,nodes:this.nodes.map(o=>$({},o))}),i=$({},e);return this.cleanupNode(i),delete i.el,delete i._id,delete i.content,delete i.grid,t.addNode(i),t.getRow()<=this.maxRow?(e._willFitPos=M.copyPos({},i),!0):!1}changedPosConstrain(e,t){return t.w=t.w||e.w,t.h=t.h||e.h,e.x!==t.x||e.y!==t.y?!0:(e.maxW&&(t.w=Math.min(t.w,e.maxW)),e.maxH&&(t.h=Math.min(t.h,e.maxH)),e.minW&&(t.w=Math.max(t.w,e.minW)),e.minH&&(t.h=Math.max(t.h,e.minH)),e.w!==t.w||e.h!==t.h)}moveNode(e,t){if(!e||!t)return!1;let i;t.pack===void 0&&!this.batchMode&&(i=t.pack=!0),typeof t.x!="number"&&(t.x=e.x),typeof t.y!="number"&&(t.y=e.y),typeof t.w!="number"&&(t.w=e.w),typeof t.h!="number"&&(t.h=e.h);let o=e.w!==t.w||e.h!==t.h,r=M.copyPos({},e,!0);if(M.copyPos(r,t),this.nodeBoundFix(r,o),M.copyPos(t,r),!t.forceCollide&&M.samePos(e,t))return!1;let l=M.copyPos({},e),d=this.collideAll(e,r,t.skip),p=!0;if(d.length){let s=e._moving&&!t.nested,c=s?this.directionCollideCoverage(e,t,d):d[0];if(s&&c&&e.grid?.opts?.subGridDynamic&&!e.grid._isTemp){let m=M.areaIntercept(t.rect,c._rect),f=M.area(t.rect),y=M.area(c._rect);m/(f<y?f:y)>.8&&(c.grid.makeSubGrid(c.el,void 0,e),c=void 0)}c?p=!this._fixCollisions(e,r,c,t):(p=!1,i&&delete t.pack)}return p&&!M.samePos(e,r)&&(e._dirty=!0,M.copyPos(e,r)),t.pack&&this._packNodes()._notify(),!M.samePos(e,l)}getRow(){return this.nodes.reduce((e,t)=>Math.max(e,t.y+t.h),0)}beginUpdate(e){return e._updating||(e._updating=!0,delete e._skipDown,this.batchMode||this.saveInitial()),this}endUpdate(){let e=this.nodes.find(t=>t._updating);return e&&(delete e._updating,delete e._skipDown),this}save(e=!0,t){let i=this._layouts?.length,o=i&&this.column!==i-1?this._layouts[i-1]:null,r=[];return this.sortNodes(),this.nodes.forEach(l=>{let d=o?.find(s=>s._id===l._id),p=$($({},l),d||{});M.removeInternalForSave(p,!e),t&&t(l,p),r.push(p)}),r}layoutsNodesChange(e){return!this._layouts||this._inColumnResize?this:(this._layouts.forEach((t,i)=>{if(!t||i===this.column)return this;if(i<this.column)this._layouts[i]=void 0;else{let o=i/this.column;e.forEach(r=>{if(!r._orig)return;let l=t.find(d=>d._id===r._id);l&&(l.y>=0&&r.y!==r._orig.y&&(l.y+=r.y-r._orig.y),r.x!==r._orig.x&&(l.x=Math.round(r.x*o)),r.w!==r._orig.w&&(l.w=Math.round(r.w*o)))})}}),this)}columnChanged(e,t,i="moveScale"){if(!this.nodes.length||!t||e===t)return this;let o=i==="compact"||i==="list";o&&this.sortNodes(1),t<e&&this.cacheLayout(this.nodes,e),this.batchUpdate();let r=[],l=o?this.nodes:M.sort(this.nodes,-1);if(t>e&&this._layouts){let d=this._layouts[t]||[],p=this._layouts.length-1;!d.length&&e!==p&&this._layouts[p]?.length&&(e=p,this._layouts[p].forEach(s=>{let c=l.find(m=>m._id===s._id);c&&(!o&&!s.autoPosition&&(c.x=s.x??c.x,c.y=s.y??c.y),c.w=s.w??c.w,(s.x==null||s.y===void 0)&&(c.autoPosition=!0))})),d.forEach(s=>{let c=l.findIndex(m=>m._id===s._id);if(c!==-1){let m=l[c];if(o){m.w=s.w;return}(s.autoPosition||isNaN(s.x)||isNaN(s.y))&&this.findEmptyPosition(s,r),s.autoPosition||(m.x=s.x??m.x,m.y=s.y??m.y,m.w=s.w??m.w,r.push(m)),l.splice(c,1)}})}if(o)this.compact(i,!1);else{if(l.length)if(typeof i=="function")i(t,e,r,l);else{let d=o||i==="none"?1:t/e,p=i==="move"||i==="moveScale",s=i==="scale"||i==="moveScale";l.forEach(c=>{c.x=t===1?0:p?Math.round(c.x*d):Math.min(c.x,t-1),c.w=t===1||e===1?1:s?Math.round(c.w*d)||1:Math.min(c.w,t),r.push(c)}),l=[]}r=M.sort(r,-1),this._inColumnResize=!0,this.nodes=[],r.forEach(d=>{this.addNode(d,!1),delete d._orig})}return this.nodes.forEach(d=>delete d._orig),this.batchUpdate(!1,!o),delete this._inColumnResize,this}cacheLayout(e,t,i=!1){let o=[];return e.forEach((r,l)=>{if(r._id===void 0){let d=r.id?this.nodes.find(p=>p.id===r.id):void 0;r._id=d?._id??a._idSeq++}o[l]={x:r.x,y:r.y,w:r.w,_id:r._id}}),this._layouts=i?[]:this._layouts||[],this._layouts[t]=o,this}cacheOneLayout(e,t){e._id=e._id??a._idSeq++;let i={x:e.x,y:e.y,w:e.w,_id:e._id};(e.autoPosition||e.x===void 0)&&(delete i.x,delete i.y,e.autoPosition&&(i.autoPosition=!0)),this._layouts=this._layouts||[],this._layouts[t]=this._layouts[t]||[];let o=this.findCacheLayout(e,t);return o===-1?this._layouts[t].push(i):this._layouts[t][o]=i,this}findCacheLayout(e,t){return this._layouts?.[t]?.findIndex(i=>i._id===e._id)??-1}removeNodeFromLayoutCache(e){if(this._layouts)for(let t=0;t<this._layouts.length;t++){let i=this.findCacheLayout(e,t);i!==-1&&this._layouts[t].splice(i,1)}}cleanupNode(e){for(let t in e)t[0]==="_"&&t!=="_id"&&delete e[t];return this}}return a._idSeq=0,a})();var Pt={alwaysShowResizeHandle:"mobile",animate:!0,auto:!0,cellHeight:"auto",cellHeightThrottle:100,cellHeightUnit:"px",column:12,draggable:{handle:".grid-stack-item-content",appendTo:"body",scroll:!0},handle:".grid-stack-item-content",itemClass:"grid-stack-item",margin:10,marginUnit:"px",maxRow:0,minRow:0,placeholderClass:"grid-stack-placeholder",placeholderText:"",removableOptions:{accept:"grid-stack-item",decline:"grid-stack-non-removable"},resizable:{handles:"se"},rtl:"auto"};var se=class{};var Ct=typeof window<"u"&&typeof document<"u"&&("ontouchstart"in document||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0),Ht=class{};function ro(a,n){a.touches.length>1||(a.cancelable&&a.preventDefault(),M.simulateMouseEvent(a.changedTouches[0],n))}function xd(a,n){a.cancelable&&a.preventDefault(),M.simulateMouseEvent(a,n)}function Rn(a){Ht.touchHandled||(Ht.touchHandled=!0,ro(a,"mousedown"))}function In(a){Ht.touchHandled&&ro(a,"mousemove")}function Nn(a){if(!Ht.touchHandled)return;Ht.pointerLeaveTimeout&&(window.clearTimeout(Ht.pointerLeaveTimeout),delete Ht.pointerLeaveTimeout);let n=!!se.dragElement;ro(a,"mouseup"),n||ro(a,"click"),Ht.touchHandled=!1}function Wn(a){a.pointerType!=="mouse"&&a.target.releasePointerCapture(a.pointerId)}function Cr(a){se.dragElement&&a.pointerType!=="mouse"&&xd(a,"mouseenter")}function kr(a){se.dragElement&&a.pointerType!=="mouse"&&(Ht.pointerLeaveTimeout=window.setTimeout(()=>{delete Ht.pointerLeaveTimeout,xd(a,"mouseleave")},10))}var Td=(()=>{class a{constructor(e,t,i){this.host=e,this.dir=t,this.option=i,this.moving=!1,this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this._keyEvent=this._keyEvent.bind(this),this._init()}_init(){let e=this.el=document.createElement("div");return e.classList.add("ui-resizable-handle"),e.classList.add(`${a.prefix}${this.dir}`),e.style.zIndex="100",e.style.userSelect="none",this.host.appendChild(this.el),this.el.addEventListener("mousedown",this._mouseDown),Ct&&(this.el.addEventListener("touchstart",Rn),this.el.addEventListener("pointerdown",Wn)),this}destroy(){return this.moving&&this._mouseUp(this.mouseDownEvent),this.el.removeEventListener("mousedown",this._mouseDown),Ct&&(this.el.removeEventListener("touchstart",Rn),this.el.removeEventListener("pointerdown",Wn)),this.host.removeChild(this.el),delete this.el,delete this.host,this}_mouseDown(e){this.mouseDownEvent=e,document.addEventListener("mousemove",this._mouseMove,{capture:!0,passive:!0}),document.addEventListener("mouseup",this._mouseUp,!0),Ct&&(this.el.addEventListener("touchmove",In),this.el.addEventListener("touchend",Nn)),e.stopPropagation(),e.preventDefault()}_mouseMove(e){let t=this.mouseDownEvent;this.moving?this._triggerEvent("move",e):Math.abs(e.x-t.x)+Math.abs(e.y-t.y)>2&&(this.moving=!0,this._triggerEvent("start",this.mouseDownEvent),this._triggerEvent("move",e),document.addEventListener("keydown",this._keyEvent)),e.stopPropagation()}_mouseUp(e){this.moving&&(this._triggerEvent("stop",e),document.removeEventListener("keydown",this._keyEvent)),document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),Ct&&(this.el.removeEventListener("touchmove",In),this.el.removeEventListener("touchend",Nn)),delete this.moving,delete this.mouseDownEvent,e.stopPropagation(),e.preventDefault()}_keyEvent(e){e.key==="Escape"&&(this.host.gridstackNode?.grid?.engine.restoreInitial(),this._mouseUp(this.mouseDownEvent))}_triggerEvent(e,t){return this.option[e]&&this.option[e](t),this}}return a.prefix="ui-resizable-",a})();var Oi=class{constructor(){this._eventRegister={}}get disabled(){return this._disabled}on(n,e){this._eventRegister[n]=e}off(n){delete this._eventRegister[n]}enable(){this._disabled=!1}disable(){this._disabled=!0}destroy(){delete this._eventRegister}triggerEvent(n,e){if(!this.disabled&&this._eventRegister&&this._eventRegister[n])return this._eventRegister[n](e)}};var Ed=(()=>{class a extends Oi{constructor(e,t={}){super(),this.el=e,this.option=t,this.rectScale={x:1,y:1},this._ui=()=>{let o=this.el.parentElement.getBoundingClientRect(),r={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},l=this.temporalRect||r;return{position:{left:(l.left-o.left)*this.rectScale.x,top:(l.top-o.top)*this.rectScale.y},size:{width:l.width*this.rectScale.x,height:l.height*this.rectScale.y}}},this._mouseOver=this._mouseOver.bind(this),this._mouseOut=this._mouseOut.bind(this),this.enable(),this._setupAutoHide(this.option.autoHide),this._setupHandlers()}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){super.enable(),this.el.classList.remove("ui-resizable-disabled"),this._setupAutoHide(this.option.autoHide)}disable(){super.disable(),this.el.classList.add("ui-resizable-disabled"),this._setupAutoHide(!1)}destroy(){this._removeHandlers(),this._setupAutoHide(!1),delete this.el,super.destroy()}updateOption(e){let t=e.handles&&e.handles!==this.option.handles,i=e.autoHide&&e.autoHide!==this.option.autoHide;return Object.keys(e).forEach(o=>this.option[o]=e[o]),t&&(this._removeHandlers(),this._setupHandlers()),i&&this._setupAutoHide(this.option.autoHide),this}_setupAutoHide(e){return e?(this.el.classList.add("ui-resizable-autohide"),this.el.addEventListener("mouseover",this._mouseOver),this.el.addEventListener("mouseout",this._mouseOut)):(this.el.classList.remove("ui-resizable-autohide"),this.el.removeEventListener("mouseover",this._mouseOver),this.el.removeEventListener("mouseout",this._mouseOut),se.overResizeElement===this&&delete se.overResizeElement),this}_mouseOver(e){se.overResizeElement||se.dragElement||(se.overResizeElement=this,this.el.classList.remove("ui-resizable-autohide"))}_mouseOut(e){se.overResizeElement===this&&(delete se.overResizeElement,this.el.classList.add("ui-resizable-autohide"))}_setupHandlers(){return this.handlers=this.option.handles.split(",").map(e=>e.trim()).map(e=>new Td(this.el,e,{start:t=>{this._resizeStart(t)},stop:t=>{this._resizeStop(t)},move:t=>{this._resizing(t,e)}})),this}_resizeStart(e){this.sizeToContent=M.shouldSizeToContent(this.el.gridstackNode,!0),this.originalRect=this.el.getBoundingClientRect(),this.scrollEl=M.getScrollElement(this.el),this.scrollY=this.scrollEl.scrollTop,this.scrolled=0,this.startEvent=e,this._setupHelper(),this._applyChange();let t=M.initEvent(e,{type:"resizestart",target:this.el});return this.option.start&&this.option.start(t,this._ui()),this.el.classList.add("ui-resizable-resizing"),this.triggerEvent("resizestart",t),this}_resizing(e,t){this.scrolled=this.scrollEl.scrollTop-this.scrollY,this.temporalRect=this._getChange(e,t),this._applyChange();let i=M.initEvent(e,{type:"resize",target:this.el});return this.option.resize&&this.option.resize(i,this._ui()),this.triggerEvent("resize",i),this}_resizeStop(e){let t=M.initEvent(e,{type:"resizestop",target:this.el});return this.option.stop&&this.option.stop(t),this.el.classList.remove("ui-resizable-resizing"),this.triggerEvent("resizestop",t),this._cleanHelper(),delete this.startEvent,delete this.originalRect,delete this.temporalRect,delete this.scrollY,delete this.scrolled,this}_setupHelper(){this.elOriginStyleVal=a._originStyleProp.map(i=>this.el.style[i]),this.parentOriginStylePosition=this.el.parentElement.style.position;let e=this.el.parentElement,t=M.getValuesFromTransformedElement(e);return this.rectScale={x:t.xScale,y:t.yScale},getComputedStyle(this.el.parentElement).position.match(/static/)&&(this.el.parentElement.style.position="relative"),this.el.style.position="absolute",this.el.style.opacity="0.8",this}_cleanHelper(){return a._originStyleProp.forEach((e,t)=>{this.el.style[e]=this.elOriginStyleVal[t]||null}),this.el.parentElement.style.position=this.parentOriginStylePosition||null,this}_getChange(e,t){let i=this.startEvent,o={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},r=e.clientX-i.clientX,l=this.sizeToContent?0:e.clientY-i.clientY,d,p;t.indexOf("e")>-1?o.width+=r:t.indexOf("w")>-1&&(o.width-=r,o.left+=r,d=!0),t.indexOf("s")>-1?o.height+=l:t.indexOf("n")>-1&&(o.height-=l,o.top+=l,p=!0);let s=this._constrainSize(o.width,o.height,d,p);return Math.round(o.width)!==Math.round(s.width)&&(t.indexOf("w")>-1&&(o.left+=o.width-s.width),o.width=s.width),Math.round(o.height)!==Math.round(s.height)&&(t.indexOf("n")>-1&&(o.top+=o.height-s.height),o.height=s.height),o}_constrainSize(e,t,i,o){let r=this.option,l=(i?r.maxWidthMoveLeft:r.maxWidth)||Number.MAX_SAFE_INTEGER,d=r.minWidth/this.rectScale.x||e,p=(o?r.maxHeightMoveUp:r.maxHeight)||Number.MAX_SAFE_INTEGER,s=r.minHeight/this.rectScale.y||t,c=Math.min(l,Math.max(d,e)),m=Math.min(p,Math.max(s,t));return{width:c,height:m}}_applyChange(){let e={left:0,top:0,width:0,height:0};if(this.el.style.position==="absolute"){let t=this.el.parentElement,{left:i,top:o}=t.getBoundingClientRect();e={left:i,top:o,width:0,height:0}}return this.temporalRect?(Object.keys(this.temporalRect).forEach(t=>{let i=this.temporalRect[t],o=t==="width"||t==="left"?this.rectScale.x:t==="height"||t==="top"?this.rectScale.y:1;this.el.style[t]=(i-e[t])*o+"px"}),this):this}_removeHandlers(){return this.handlers.forEach(e=>e.destroy()),delete this.handlers,this}}return a._originStyleProp=["width","height","position","left","top","opacity","zIndex"],a})();var qu='input,textarea,button,select,option,[contenteditable="true"],.ui-resizable-handle',Md=(()=>{class a extends Oi{constructor(e,t={}){super(),this.el=e,this.option=t,this.dragTransform={xScale:1,yScale:1,xOffset:0,yOffset:0};let i=t?.handle?.substring(1),o=e.gridstackNode;this.dragEls=!i||e.classList.contains(i)?[e]:o?.subGrid?[e.querySelector(t.handle)||e]:Array.from(e.querySelectorAll(t.handle)),this.dragEls.length===0&&(this.dragEls=[e]),this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this._keyEvent=this._keyEvent.bind(this),this.enable()}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){this.disabled!==!1&&(super.enable(),this.dragEls.forEach(e=>{e.addEventListener("mousedown",this._mouseDown),Ct&&(e.addEventListener("touchstart",Rn),e.addEventListener("pointerdown",Wn))}),this.el.classList.remove("ui-draggable-disabled"))}disable(e=!1){this.disabled!==!0&&(super.disable(),this.dragEls.forEach(t=>{t.removeEventListener("mousedown",this._mouseDown),Ct&&(t.removeEventListener("touchstart",Rn),t.removeEventListener("pointerdown",Wn))}),e||this.el.classList.add("ui-draggable-disabled"))}destroy(){this.dragTimeout&&window.clearTimeout(this.dragTimeout),delete this.dragTimeout,this.mouseDownEvent&&this._mouseUp(this.mouseDownEvent),this.disable(!0),delete this.el,delete this.helper,delete this.option,super.destroy()}updateOption(e){return Object.keys(e).forEach(t=>this.option[t]=e[t]),this}_mouseDown(e){if(!se.mouseHandled)return e.button!==0||!this.dragEls.find(t=>t===e.target)&&e.target.closest(qu)||this.option.cancel&&e.target.closest(this.option.cancel)||(this.mouseDownEvent=e,delete this.dragging,delete se.dragElement,delete se.dropElement,document.addEventListener("mousemove",this._mouseMove,{capture:!0,passive:!0}),document.addEventListener("mouseup",this._mouseUp,!0),Ct&&(e.currentTarget.addEventListener("touchmove",In),e.currentTarget.addEventListener("touchend",Nn)),e.preventDefault(),document.activeElement&&document.activeElement.blur(),se.mouseHandled=!0),!0}_callDrag(e){if(!this.dragging)return;let t=M.initEvent(e,{target:this.el,type:"drag"});this.option.drag&&this.option.drag(t,this.ui()),this.triggerEvent("drag",t)}_mouseMove(e){let t=this.mouseDownEvent;if(this.lastDrag=e,this.dragging)if(this._dragFollow(e),se.pauseDrag){let i=Number.isInteger(se.pauseDrag)?se.pauseDrag:100;this.dragTimeout&&window.clearTimeout(this.dragTimeout),this.dragTimeout=window.setTimeout(()=>this._callDrag(e),i)}else this._callDrag(e);else if(Math.abs(e.x-t.x)+Math.abs(e.y-t.y)>3){this.dragging=!0,se.dragElement=this;let i=this.el.gridstackNode?.grid;i?se.dropElement=i.el.ddElement.ddDroppable:delete se.dropElement,this.helper=this._createHelper(),this._setupHelperContainmentStyle(),this.dragTransform=M.getValuesFromTransformedElement(this.helperContainment),this.dragOffset=this._getDragOffset(e,this.el,this.helperContainment),this._setupHelperStyle(e);let o=M.initEvent(e,{target:this.el,type:"dragstart"});this.option.start&&this.option.start(o,this.ui()),this.triggerEvent("dragstart",o),document.addEventListener("keydown",this._keyEvent)}return!0}_mouseUp(e){if(document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),Ct&&e.currentTarget&&(e.currentTarget.removeEventListener("touchmove",In,!0),e.currentTarget.removeEventListener("touchend",Nn,!0)),this.dragging){delete this.dragging,delete this.el.gridstackNode?._origRotate,document.removeEventListener("keydown",this._keyEvent),se.dropElement?.el===this.el.parentElement&&delete se.dropElement,this.helperContainment.style.position=this.parentOriginStylePosition||null,this.helper!==this.el&&this.helper.remove(),this._removeHelperStyle();let t=M.initEvent(e,{target:this.el,type:"dragstop"});this.option.stop&&this.option.stop(t),this.triggerEvent("dragstop",t),se.dropElement&&se.dropElement.drop(e)}delete this.helper,delete this.mouseDownEvent,delete se.dragElement,delete se.dropElement,delete se.mouseHandled,e.preventDefault()}_keyEvent(e){let t=this.el.gridstackNode,i=t?.grid||se.dropElement?.el?.gridstack;if(e.key==="Escape")t&&t._origRotate&&(t._orig=t._origRotate,delete t._origRotate),i?.cancelDrag(),this._mouseUp(this.mouseDownEvent);else if(t&&i&&(e.key==="r"||e.key==="R")){if(!M.canBeRotated(t))return;t._origRotate=t._origRotate||$({},t._orig),delete t._moving,i.setAnimation(!1).rotate(t.el,{top:-this.dragOffset.offsetTop,left:-this.dragOffset.offsetLeft}).setAnimation(),t._moving=!0,this.dragOffset=this._getDragOffset(this.lastDrag,t.el,this.helperContainment),this.helper.style.width=this.dragOffset.width+"px",this.helper.style.height=this.dragOffset.height+"px",M.swap(t._orig,"w","h"),delete t._rect,this._mouseMove(this.lastDrag)}}_createHelper(){let e=this.el;return typeof this.option.helper=="function"?e=this.option.helper(this.el):this.option.helper==="clone"&&(e=M.cloneNode(this.el)),e.parentElement||M.appendTo(e,this.option.appendTo==="parent"?this.el.parentElement:this.option.appendTo),this.dragElementOriginStyle=a.originStyleProp.map(t=>this.el.style[t]),e}_setupHelperStyle(e){this.helper.classList.add("ui-draggable-dragging");let t=this.helper.style;return t.pointerEvents="none",t.width=this.dragOffset.width+"px",t.height=this.dragOffset.height+"px",t.willChange="left, top",t.position="fixed",this._dragFollow(e),t.transition="none",setTimeout(()=>{this.helper&&(t.transition=null)},0),this}_removeHelperStyle(){if(this.helper.classList.remove("ui-draggable-dragging"),!this.helper?.gridstackNode?._isAboutToRemove&&this.dragElementOriginStyle){let t=this.helper,i=this.dragElementOriginStyle.transition||null;t.style.transition=this.dragElementOriginStyle.transition="none",a.originStyleProp.forEach(o=>t.style[o]=this.dragElementOriginStyle[o]||null),setTimeout(()=>t.style.transition=i,50)}return delete this.dragElementOriginStyle,this}_dragFollow(e){let t={left:0,top:0},i=this.helper.style,o=this.dragOffset;i.left=(e.clientX+o.offsetLeft-t.left)*this.dragTransform.xScale+"px",i.top=(e.clientY+o.offsetTop-t.top)*this.dragTransform.yScale+"px"}_setupHelperContainmentStyle(){return this.helperContainment=this.helper.parentElement,this.helper.style.position!=="fixed"&&(this.parentOriginStylePosition=this.helperContainment.style.position,getComputedStyle(this.helperContainment).position.match(/static/)&&(this.helperContainment.style.position="relative")),this}_getDragOffset(e,t,i){let o=0,r=0;i&&(o=this.dragTransform.xOffset,r=this.dragTransform.yOffset);let l=t.getBoundingClientRect();return{left:l.left,top:l.top,offsetLeft:-e.clientX+l.left-o,offsetTop:-e.clientY+l.top-r,width:l.width*this.dragTransform.xScale,height:l.height*this.dragTransform.yScale}}ui(){let t=this.el.parentElement.getBoundingClientRect(),i=this.helper.getBoundingClientRect();return{position:{top:(i.top-t.top)*this.dragTransform.yScale,left:(i.left-t.left)*this.dragTransform.xScale}}}}return a.originStyleProp=["width","height","transform","transform-origin","transition","pointerEvents","position","left","top","minWidth","willChange"],a})();var so=class extends Oi{constructor(n,e={}){super(),this.el=n,this.option=e,this._mouseEnter=this._mouseEnter.bind(this),this._mouseLeave=this._mouseLeave.bind(this),this.enable(),this._setupAccept()}on(n,e){super.on(n,e)}off(n){super.off(n)}enable(){this.disabled!==!1&&(super.enable(),this.el.classList.add("ui-droppable"),this.el.classList.remove("ui-droppable-disabled"),this.el.addEventListener("mouseenter",this._mouseEnter),this.el.addEventListener("mouseleave",this._mouseLeave),Ct&&(this.el.addEventListener("pointerenter",Cr),this.el.addEventListener("pointerleave",kr)))}disable(n=!1){this.disabled!==!0&&(super.disable(),this.el.classList.remove("ui-droppable"),n||this.el.classList.add("ui-droppable-disabled"),this.el.removeEventListener("mouseenter",this._mouseEnter),this.el.removeEventListener("mouseleave",this._mouseLeave),Ct&&(this.el.removeEventListener("pointerenter",Cr),this.el.removeEventListener("pointerleave",kr)))}destroy(){this.disable(!0),this.el.classList.remove("ui-droppable"),this.el.classList.remove("ui-droppable-disabled"),super.destroy()}updateOption(n){return Object.keys(n).forEach(e=>this.option[e]=n[e]),this._setupAccept(),this}_mouseEnter(n){if(!se.dragElement||!this._canDrop(se.dragElement.el))return;n.preventDefault(),n.stopPropagation(),se.dropElement&&se.dropElement!==this&&se.dropElement._mouseLeave(n,!0),se.dropElement=this;let e=M.initEvent(n,{target:this.el,type:"dropover"});this.option.over&&this.option.over(e,this._ui(se.dragElement)),this.triggerEvent("dropover",e),this.el.classList.add("ui-droppable-over")}_mouseLeave(n,e=!1){if(!se.dragElement||se.dropElement!==this)return;n.preventDefault(),n.stopPropagation();let t=M.initEvent(n,{target:this.el,type:"dropout"});if(this.option.out&&this.option.out(t,this._ui(se.dragElement)),this.triggerEvent("dropout",t),se.dropElement===this&&(delete se.dropElement,!e)){let i,o=this.el.parentElement;for(;!i&&o;)i=o.ddElement?.ddDroppable,o=o.parentElement;i&&i._mouseEnter(n)}}drop(n){n.preventDefault();let e=M.initEvent(n,{target:this.el,type:"drop"});this.option.drop&&this.option.drop(e,this._ui(se.dragElement)),this.triggerEvent("drop",e)}_canDrop(n){return n&&(!this.accept||this.accept(n))}_setupAccept(){return this.option.accept?(typeof this.option.accept=="string"?this.accept=n=>n.classList.contains(this.option.accept)||n.matches(this.option.accept):this.accept=this.option.accept,this):this}_ui(n){return $({draggable:n.el},n.ui())}};var lo=class a{static init(n){return n.ddElement||(n.ddElement=new a(n)),n.ddElement}constructor(n){this.el=n}on(n,e){return this.ddDraggable&&["drag","dragstart","dragstop"].indexOf(n)>-1?this.ddDraggable.on(n,e):this.ddDroppable&&["drop","dropover","dropout"].indexOf(n)>-1?this.ddDroppable.on(n,e):this.ddResizable&&["resizestart","resize","resizestop"].indexOf(n)>-1&&this.ddResizable.on(n,e),this}off(n){return this.ddDraggable&&["drag","dragstart","dragstop"].indexOf(n)>-1?this.ddDraggable.off(n):this.ddDroppable&&["drop","dropover","dropout"].indexOf(n)>-1?this.ddDroppable.off(n):this.ddResizable&&["resizestart","resize","resizestop"].indexOf(n)>-1&&this.ddResizable.off(n),this}setupDraggable(n){return this.ddDraggable?this.ddDraggable.updateOption(n):this.ddDraggable=new Md(this.el,n),this}cleanDraggable(){return this.ddDraggable&&(this.ddDraggable.destroy(),delete this.ddDraggable),this}setupResizable(n){return this.ddResizable?this.ddResizable.updateOption(n):this.ddResizable=new Ed(this.el,n),this}cleanResizable(){return this.ddResizable&&(this.ddResizable.destroy(),delete this.ddResizable),this}setupDroppable(n){return this.ddDroppable?this.ddDroppable.updateOption(n):this.ddDroppable=new so(this.el,n),this}cleanDroppable(){return this.ddDroppable&&(this.ddDroppable.destroy(),delete this.ddDroppable),this}};var co=class{resizable(n,e,t,i){return this._getDDElements(n,e).forEach(o=>{if(e==="disable"||e==="enable")o.ddResizable&&o.ddResizable[e]();else if(e==="destroy")o.ddResizable&&o.cleanResizable();else if(e==="option")o.setupResizable({[t]:i});else{let l=o.el.gridstackNode.grid,d=o.el.getAttribute("gs-resize-handles")||l.opts.resizable.handles||"e,s,se";d==="all"&&(d="n,e,s,w,se,sw,ne,nw");let p=!l.opts.alwaysShowResizeHandle;o.setupResizable(Ze($({},l.opts.resizable),{handles:d,autoHide:p,start:e.start,stop:e.stop,resize:e.resize}))}}),this}draggable(n,e,t,i){return this._getDDElements(n,e).forEach(o=>{if(e==="disable"||e==="enable")o.ddDraggable&&o.ddDraggable[e]();else if(e==="destroy")o.ddDraggable&&o.cleanDraggable();else if(e==="option")o.setupDraggable({[t]:i});else{let r=o.el.gridstackNode.grid;o.setupDraggable(Ze($({},r.opts.draggable),{start:e.start,stop:e.stop,drag:e.drag}))}}),this}dragIn(n,e){return this._getDDElements(n).forEach(t=>t.setupDraggable(e)),this}droppable(n,e,t,i){return typeof e.accept=="function"&&!e._accept&&(e._accept=e.accept,e.accept=o=>e._accept(o)),this._getDDElements(n,e).forEach(o=>{e==="disable"||e==="enable"?o.ddDroppable&&o.ddDroppable[e]():e==="destroy"?o.ddDroppable&&o.cleanDroppable():e==="option"?o.setupDroppable({[t]:i}):o.setupDroppable(e)}),this}isDroppable(n){return!!(n?.ddElement?.ddDroppable&&!n.ddElement.ddDroppable.disabled)}isDraggable(n){return!!(n?.ddElement?.ddDraggable&&!n.ddElement.ddDraggable.disabled)}isResizable(n){return!!(n?.ddElement?.ddResizable&&!n.ddElement.ddResizable.disabled)}on(n,e,t){return this._getDDElements(n).forEach(i=>i.on(e,o=>{t(o,se.dragElement?se.dragElement.el:o.target,se.dragElement?se.dragElement.helper:null)})),this}off(n,e){return this._getDDElements(n).forEach(t=>t.off(e)),this}_getDDElements(n,e){let t=n.gridstack||e!=="destroy"&&e!=="disable",i=M.getElements(n);return i.length?i.map(r=>r.ddElement||(t?lo.init(r):null)).filter(r=>r):[]}};var kt=new co,Ln=(()=>{class a{static init(e={},t=".grid-stack"){if(typeof document>"u")return null;let i=a.getGridElement(t);return i?(i.gridstack||(i.gridstack=new a(i,M.cloneDeep(e))),i.gridstack):(console.error(typeof t=="string"?'GridStack.initAll() no grid was found with selector "'+t+`" - element missing or wrong selector ?
2
2
  Note: ".grid-stack" is required for proper CSS styling and drag/drop, and is the default selector.`:"GridStack.init() no grid element was passed."),null)}static initAll(e={},t=".grid-stack"){let i=[];return typeof document>"u"||(a.getGridElements(t).forEach(o=>{o.gridstack||(o.gridstack=new a(o,M.cloneDeep(e))),i.push(o.gridstack)}),i.length===0&&console.error('GridStack.initAll() no grid was found with selector "'+t+`" - element missing or wrong selector ?
3
3
  Note: ".grid-stack" is required for proper CSS styling and drag/drop, and is the default selector.`)),i}static addGrid(e,t={}){if(!e)return null;let i=e;if(i.gridstack){let l=i.gridstack;return t&&(l.opts=$($({},l.opts),t)),t.children!==void 0&&l.load(t.children),l}return(!e.classList.contains("grid-stack")||a.addRemoveCB)&&(a.addRemoveCB?i=a.addRemoveCB(e,t,!0,!0):i=M.createDiv(["grid-stack",t.class],e)),a.init(t,i)}static registerEngine(e){a.engineClass=e}get placeholder(){if(!this._placeholder){this._placeholder=M.createDiv([this.opts.placeholderClass,Pt.itemClass,this.opts.itemClass]);let e=M.createDiv(["placeholder-content"],this._placeholder);this.opts.placeholderText&&(e.textContent=this.opts.placeholderText)}return this._placeholder}constructor(e,t={}){this.el=e,this.opts=t,this.animationDelay=310,this._gsEventHandler={},this._extraDragRow=0,this.dragTransform={xScale:1,yScale:1,xOffset:0,yOffset:0},e.gridstack=this,this.opts=t=t||{},e.classList.contains("grid-stack")||this.el.classList.add("grid-stack"),t.row&&(t.minRow=t.maxRow=t.row,delete t.row);let i=M.toNumber(e.getAttribute("gs-row"));t.column==="auto"&&delete t.column,t.alwaysShowResizeHandle!==void 0&&(t._alwaysShowResizeHandle=t.alwaysShowResizeHandle);let o=t.columnOpts?.breakpoints,r=t;if(r.oneColumnModeDomSort&&(delete r.oneColumnModeDomSort,console.log("warning: Gridstack oneColumnModeDomSort no longer supported. Use GridStackOptions.columnOpts instead.")),r.oneColumnSize||r.disableOneColumnMode===!1){let m=r.oneColumnSize||768;delete r.oneColumnSize,delete r.disableOneColumnMode,t.columnOpts=t.columnOpts||{},o=t.columnOpts.breakpoints=t.columnOpts.breakpoints||[];let f=o.find(y=>y.c===1);f?f.w=m:(f={c:1,w:m},o.push(f,{c:12,w:m+1}))}let l=t.columnOpts;l&&(!l.columnWidth&&!l.breakpoints?.length?(delete t.columnOpts,o=void 0):l.columnMax=l.columnMax||12),o?.length>1&&o.sort((m,f)=>(f.w||0)-(m.w||0));let d=Ze($({},M.cloneDeep(Pt)),{column:M.toNumber(e.getAttribute("gs-column"))||Pt.column,minRow:i||M.toNumber(e.getAttribute("gs-min-row"))||Pt.minRow,maxRow:i||M.toNumber(e.getAttribute("gs-max-row"))||Pt.maxRow,staticGrid:M.toBool(e.getAttribute("gs-static"))||Pt.staticGrid,sizeToContent:M.toBool(e.getAttribute("gs-size-to-content"))||void 0,draggable:{handle:(t.handleClass?"."+t.handleClass:t.handle?t.handle:"")||Pt.draggable.handle},removableOptions:{accept:t.itemClass||Pt.removableOptions.accept,decline:Pt.removableOptions.decline}});e.getAttribute("gs-animate")&&(d.animate=M.toBool(e.getAttribute("gs-animate"))),t=M.defaults(t,d),this._initMargin(),this.checkDynamicColumn(),this.el.classList.add("gs-"+t.column),t.rtl==="auto"&&(t.rtl=e.style.direction==="rtl"),t.rtl&&this.el.classList.add("grid-stack-rtl");let s=this.el.closest("."+Pt.itemClass)?.gridstackNode;s&&(s.subGrid=this,this.parentGridNode=s,this.el.classList.add("grid-stack-nested"),s.el.classList.add("grid-stack-sub-grid")),this._isAutoCellHeight=t.cellHeight==="auto",this._isAutoCellHeight||t.cellHeight==="initial"?this.cellHeight(void 0,!1):(typeof t.cellHeight=="number"&&t.cellHeightUnit&&t.cellHeightUnit!==Pt.cellHeightUnit&&(t.cellHeight=t.cellHeight+t.cellHeightUnit,delete t.cellHeightUnit),this.cellHeight(t.cellHeight,!1)),t.alwaysShowResizeHandle==="mobile"&&(t.alwaysShowResizeHandle=Ct),this._styleSheetClass="gs-id-"+oo._idSeq++,this.el.classList.add(this._styleSheetClass),this._setStaticClass();let c=t.engineClass||a.engineClass||oo;if(this.engine=new c({column:this.getColumn(),float:t.float,maxRow:t.maxRow,onChange:m=>{let f=0;this.engine.nodes.forEach(y=>{f=Math.max(f,y.y+y.h)}),m.forEach(y=>{let S=y.el;S&&(y._removeDOM?(S&&S.remove(),delete y._removeDOM):this._writePosAttr(S,y))}),this._updateStyles(!1,f)}}),this._updateStyles(!1,0),t.auto&&(this.batchUpdate(),this.engine._loading=!0,this.getGridItems().forEach(m=>this._prepareElement(m)),delete this.engine._loading,this.batchUpdate(!1)),t.children){let m=t.children;delete t.children,m.length&&this.load(m)}this.setAnimation(),t.subGridDynamic&&!se.pauseDrag&&(se.pauseDrag=!0),t.draggable?.pause!==void 0&&(se.pauseDrag=t.draggable.pause),this._setupRemoveDrop(),this._setupAcceptWidget(),this._updateResizeEvent()}addWidget(e){if(typeof e=="string"){console.error("V11: GridStack.addWidget() does not support string anymore. see #2736");return}if(e.ELEMENT_NODE)return console.error("V11: GridStack.addWidget() does not support HTMLElement anymore. use makeWidget()"),this.makeWidget(e);let t,i=e;if(i.grid=this,i?.el?t=i.el:a.addRemoveCB?t=a.addRemoveCB(this.el,e,!0,!1):t=this.createWidgetDivs(i),!t)return;if(i=t.gridstackNode,i&&t.parentElement===this.el&&this.engine.nodes.find(r=>r._id===i._id))return t;let o=this._readAttr(t);return M.defaults(e,o),this.engine.prepareNode(e),this.el.appendChild(t),this.makeWidget(t,e),t}createWidgetDivs(e){let t=M.createDiv(["grid-stack-item",this.opts.itemClass]),i=M.createDiv(["grid-stack-item-content"],t);return M.lazyLoad(e)?e.visibleObservable||(e.visibleObservable=new IntersectionObserver(([o])=>{o.isIntersecting&&(e.visibleObservable?.disconnect(),delete e.visibleObservable,a.renderCB(i,e),e.grid?.prepareDragDrop(e.el))}),window.setTimeout(()=>e.visibleObservable?.observe(t))):a.renderCB(i,e),t}makeSubGrid(e,t,i,o=!0){let r=e.gridstackNode;if(r||(r=this.makeWidget(e).gridstackNode),r.subGrid?.el)return r.subGrid;let l,d=this;for(;d&&!l;)l=d.opts?.subGridOpts,d=d.parentGridNode?.grid;t=M.cloneDeep($($(Ze($({},this.opts),{id:void 0,children:void 0,column:"auto",columnOpts:void 0,layout:"list",subGridOpts:void 0}),l||{}),t||r.subGridOpts||{})),r.subGridOpts=t;let p;t.column==="auto"&&(p=!0,t.column=Math.max(r.w||1,i?.w||1),delete t.columnOpts);let s=r.el.querySelector(".grid-stack-item-content"),c,m;if(o&&(this._removeDD(r.el),m=Ze($({},r),{x:0,y:0}),M.removeInternalForSave(m),delete m.subGridOpts,r.content&&(m.content=r.content,delete r.content),a.addRemoveCB?c=a.addRemoveCB(this.el,m,!0,!1):(c=M.createDiv(["grid-stack-item"]),c.appendChild(s),s=M.createDiv(["grid-stack-item-content"],r.el)),this.prepareDragDrop(r.el)),i){let y=p?t.column:r.w,S=r.h+i.h,x=r.el.style;x.transition="none",this.update(r.el,{w:y,h:S}),setTimeout(()=>x.transition=null)}let f=r.subGrid=a.addGrid(s,t);return i?._moving&&(f._isTemp=!0),p&&(f._autoColumn=!0),o&&f.makeWidget(c,m),i&&(i._moving?window.setTimeout(()=>M.simulateMouseEvent(i._event,"mouseenter",f.el),0):f.makeWidget(r.el,r)),this.resizeToContentCheck(!1,r),f}removeAsSubGrid(e){let t=this.parentGridNode?.grid;t&&(t.batchUpdate(),t.removeWidget(this.parentGridNode.el,!0,!0),this.engine.nodes.forEach(i=>{i.x+=this.parentGridNode.x,i.y+=this.parentGridNode.y,t.makeWidget(i.el,i)}),t.batchUpdate(!1),this.parentGridNode&&delete this.parentGridNode.subGrid,delete this.parentGridNode,e&&window.setTimeout(()=>M.simulateMouseEvent(e._event,"mouseenter",t.el),0))}save(e=!0,t=!1,i=a.saveCB){let o=this.engine.save(e,i);if(o.forEach(r=>{if(e&&r.el&&!r.subGrid&&!i){let l=r.el.querySelector(".grid-stack-item-content");r.content=l?.innerHTML,r.content||delete r.content}else if(!e&&!i&&delete r.content,r.subGrid?.el){let l=r.subGrid.save(e,t,i);r.subGridOpts=t?l:{children:l},delete r.subGrid}delete r.el}),t){let r=M.cloneDeep(this.opts);r.marginBottom===r.marginTop&&r.marginRight===r.marginLeft&&r.marginTop===r.marginRight&&(r.margin=r.marginTop,delete r.marginTop,delete r.marginRight,delete r.marginBottom,delete r.marginLeft),r.rtl===(this.el.style.direction==="rtl")&&(r.rtl="auto"),this._isAutoCellHeight&&(r.cellHeight="auto"),this._autoColumn&&(r.column="auto");let l=r._alwaysShowResizeHandle;return delete r._alwaysShowResizeHandle,l!==void 0?r.alwaysShowResizeHandle=l:delete r.alwaysShowResizeHandle,M.removeInternalAndSame(r,Pt),r.children=o,r}return o}load(e,t=a.addRemoveCB||!0){e=M.cloneDeep(e);let i=this.getColumn();e.forEach(s=>{s.w=s.w||1,s.h=s.h||1}),e=M.sort(e),this.engine.skipCacheUpdate=this._ignoreLayoutsNodeChange=!0;let o=0;e.forEach(s=>{o=Math.max(o,(s.x||0)+s.w)}),o>this.engine.defaultColumn&&(this.engine.defaultColumn=o),o>i&&this.engine.cacheLayout(e,o,!0);let r=a.addRemoveCB;typeof t=="function"&&(a.addRemoveCB=t);let l=[];this.batchUpdate();let d=!this.engine.nodes.length;d&&this.setAnimation(!1),!d&&t&&[...this.engine.nodes].forEach(c=>{if(!c.id)return;M.find(e,c.id)||(a.addRemoveCB&&a.addRemoveCB(this.el,c,!1,!1),l.push(c),this.removeWidget(c.el,!0,!1))}),this.engine._loading=!0;let p=[];return this.engine.nodes=this.engine.nodes.filter(s=>M.find(e,s.id)?(p.push(s),!1):!0),e.forEach(s=>{let c=M.find(p,s.id);if(c){if(M.shouldSizeToContent(c)&&(s.h=c.h),this.engine.nodeBoundFix(s),(s.autoPosition||s.x===void 0||s.y===void 0)&&(s.w=s.w||c.w,s.h=s.h||c.h,this.engine.findEmptyPosition(s)),this.engine.nodes.push(c),M.samePos(c,s)&&this.engine.nodes.length>1&&(this.moveNode(c,Ze($({},s),{forceCollide:!0})),M.copyPos(s,c)),this.update(c.el,s),s.subGridOpts?.children){let m=c.el.querySelector(".grid-stack");m&&m.gridstack&&m.gridstack.load(s.subGridOpts.children)}}else t&&this.addWidget(s)}),delete this.engine._loading,this.engine.removedNodes=l,this.batchUpdate(!1),delete this._ignoreLayoutsNodeChange,delete this.engine.skipCacheUpdate,r?a.addRemoveCB=r:delete a.addRemoveCB,d&&this.opts?.animate&&this.setAnimation(this.opts.animate,!0),this}batchUpdate(e=!0){return this.engine.batchUpdate(e),e||(this._updateContainerHeight(),this._triggerRemoveEvent(),this._triggerAddEvent(),this._triggerChangeEvent()),this}getCellHeight(e=!1){if(this.opts.cellHeight&&this.opts.cellHeight!=="auto"&&(!e||!this.opts.cellHeightUnit||this.opts.cellHeightUnit==="px"))return this.opts.cellHeight;if(this.opts.cellHeightUnit==="rem")return this.opts.cellHeight*parseFloat(getComputedStyle(document.documentElement).fontSize);if(this.opts.cellHeightUnit==="em")return this.opts.cellHeight*parseFloat(getComputedStyle(this.el).fontSize);if(this.opts.cellHeightUnit==="cm")return this.opts.cellHeight*(96/2.54);if(this.opts.cellHeightUnit==="mm")return this.opts.cellHeight*(96/2.54)/10;let t=this.el.querySelector("."+this.opts.itemClass);if(t){let o=M.toNumber(t.getAttribute("gs-h"))||1;return Math.round(t.offsetHeight/o)}let i=parseInt(this.el.getAttribute("gs-current-row"));return i?Math.round(this.el.getBoundingClientRect().height/i):this.opts.cellHeight}cellHeight(e,t=!0){if(t&&e!==void 0&&this._isAutoCellHeight!==(e==="auto")&&(this._isAutoCellHeight=e==="auto",this._updateResizeEvent()),(e==="initial"||e==="auto")&&(e=void 0),e===void 0){let o=-this.opts.marginRight-this.opts.marginLeft+this.opts.marginTop+this.opts.marginBottom;e=this.cellWidth()+o}let i=M.parseHeight(e);return this.opts.cellHeightUnit===i.unit&&this.opts.cellHeight===i.h?this:(this.opts.cellHeightUnit=i.unit,this.opts.cellHeight=i.h,this.resizeToContentCheck(),t&&this._updateStyles(!0),this)}cellWidth(){return this._widthOrContainer()/this.getColumn()}_widthOrContainer(e=!1){return e&&this.opts.columnOpts?.breakpointForWindow?window.innerWidth:this.el.clientWidth||this.el.parentElement.clientWidth||window.innerWidth}checkDynamicColumn(){let e=this.opts.columnOpts;if(!e||!e.columnWidth&&!e.breakpoints?.length)return!1;let t=this.getColumn(),i=t,o=this._widthOrContainer(!0);if(e.columnWidth)i=Math.min(Math.round(o/e.columnWidth)||1,e.columnMax);else{i=e.columnMax;let r=0;for(;r<e.breakpoints.length&&o<=e.breakpoints[r].w;)i=e.breakpoints[r++].c||t}if(i!==t){let r=e.breakpoints?.find(l=>l.c===i);return this.column(i,r?.layout||e.layout),!0}return!1}compact(e="compact",t=!0){return this.engine.compact(e,t),this._triggerChangeEvent(),this}column(e,t="moveScale"){if(!e||e<1||this.opts.column===e)return this;let i=this.getColumn();return this.opts.column=e,this.engine?(this.engine.column=e,this.el.classList.remove("gs-"+i),this.el.classList.add("gs-"+e),this.engine.columnChanged(i,e,t),this._isAutoCellHeight&&this.cellHeight(),this.resizeToContentCheck(!0),this._ignoreLayoutsNodeChange=!0,this._triggerChangeEvent(),delete this._ignoreLayoutsNodeChange,this):this}getColumn(){return this.opts.column}getGridItems(){return Array.from(this.el.children).filter(e=>e.matches("."+this.opts.itemClass)&&!e.matches("."+this.opts.placeholderClass))}isIgnoreChangeCB(){return this._ignoreLayoutsNodeChange}destroy(e=!0){if(this.el)return this.offAll(),this._updateResizeEvent(!0),this.setStatic(!0,!1),this.setAnimation(!1),e?this.el.parentNode.removeChild(this.el):(this.removeAll(e),this.el.classList.remove(this._styleSheetClass),this.el.removeAttribute("gs-current-row")),this._removeStylesheet(),delete this.parentGridNode?.subGrid,delete this.parentGridNode,delete this.opts,delete this._placeholder?.gridstackNode,delete this._placeholder,delete this.engine,delete this.el.gridstack,delete this.el,this}float(e){return this.opts.float!==e&&(this.opts.float=this.engine.float=e,this._triggerChangeEvent()),this}getFloat(){return this.engine.float}getCellFromPixel(e,t=!1){let i=this.el.getBoundingClientRect(),o;t?o={top:i.top+document.documentElement.scrollTop,left:i.left}:o={top:this.el.offsetTop,left:this.el.offsetLeft};let r=e.left-o.left,l=e.top-o.top,d=i.width/this.getColumn(),p=i.height/parseInt(this.el.getAttribute("gs-current-row"));return{x:Math.floor(r/d),y:Math.floor(l/p)}}getRow(){return Math.max(this.engine.getRow(),this.opts.minRow)}isAreaEmpty(e,t,i,o){return this.engine.isAreaEmpty(e,t,i,o)}makeWidget(e,t){let i=a.getElement(e);if(!i)return;i.parentElement||this.el.appendChild(i),this._prepareElement(i,!0,t);let o=i.gridstackNode;this._updateContainerHeight(),o.subGridOpts&&this.makeSubGrid(i,o.subGridOpts,void 0,!1);let r;return this.opts.column===1&&!this._ignoreLayoutsNodeChange&&(r=this._ignoreLayoutsNodeChange=!0),this._triggerAddEvent(),this._triggerChangeEvent(),r&&delete this._ignoreLayoutsNodeChange,i}on(e,t){return e.indexOf(" ")!==-1?(e.split(" ").forEach(o=>this.on(o,t)),this):(e==="change"||e==="added"||e==="removed"||e==="enable"||e==="disable"?(e==="enable"||e==="disable"?this._gsEventHandler[e]=o=>t(o):this._gsEventHandler[e]=o=>{o.detail&&t(o,o.detail)},this.el.addEventListener(e,this._gsEventHandler[e])):e==="drag"||e==="dragstart"||e==="dragstop"||e==="resizestart"||e==="resize"||e==="resizestop"||e==="dropped"||e==="resizecontent"?this._gsEventHandler[e]=t:console.error("GridStack.on("+e+") event not supported"),this)}off(e){return e.indexOf(" ")!==-1?(e.split(" ").forEach(i=>this.off(i)),this):((e==="change"||e==="added"||e==="removed"||e==="enable"||e==="disable")&&this._gsEventHandler[e]&&this.el.removeEventListener(e,this._gsEventHandler[e]),delete this._gsEventHandler[e],this)}offAll(){return Object.keys(this._gsEventHandler).forEach(e=>this.off(e)),this}removeWidget(e,t=!0,i=!0){return e?(a.getElements(e).forEach(o=>{if(o.parentElement&&o.parentElement!==this.el)return;let r=o.gridstackNode;r||(r=this.engine.nodes.find(l=>o===l.el)),r&&(t&&a.addRemoveCB&&a.addRemoveCB(this.el,r,!1,!1),delete o.gridstackNode,this._removeDD(o),this.engine.removeNode(r,t,i),t&&o.parentElement&&o.remove())}),i&&(this._triggerRemoveEvent(),this._triggerChangeEvent()),this):(console.error("Error: GridStack.removeWidget(undefined) called"),this)}removeAll(e=!0,t=!0){return this.engine.nodes.forEach(i=>{e&&a.addRemoveCB&&a.addRemoveCB(this.el,i,!1,!1),delete i.el.gridstackNode,this.opts.staticGrid||this._removeDD(i.el)}),this.engine.removeAll(e,t),t&&this._triggerRemoveEvent(),this}setAnimation(e=this.opts.animate,t){return t?setTimeout(()=>{this.opts&&this.setAnimation(e)}):e?this.el.classList.add("grid-stack-animate"):this.el.classList.remove("grid-stack-animate"),this}hasAnimationCSS(){return this.el.classList.contains("grid-stack-animate")}setStatic(e,t=!0,i=!0){return!!this.opts.staticGrid===e?this:(e?this.opts.staticGrid=!0:delete this.opts.staticGrid,this._setupRemoveDrop(),this._setupAcceptWidget(),this.engine.nodes.forEach(o=>{this.prepareDragDrop(o.el),o.subGrid&&i&&o.subGrid.setStatic(e,t,i)}),t&&this._setStaticClass(),this)}updateOptions(e){let t=this.opts;return e.acceptWidgets!==void 0&&this._setupAcceptWidget(),e.animate!==void 0&&this.setAnimation(),e.cellHeight&&(this.cellHeight(e.cellHeight,!0),delete e.cellHeight),e.class&&e.class!==t.class&&(t.class&&this.el.classList.remove(t.class),this.el.classList.add(e.class)),typeof e.column=="number"&&!e.columnOpts&&(this.column(e.column),delete e.column),e.margin!==void 0&&this.margin(e.margin),e.staticGrid!==void 0&&this.setStatic(e.staticGrid),e.disableDrag!==void 0&&!e.staticGrid&&this.enableMove(!e.disableDrag),e.disableResize!==void 0&&!e.staticGrid&&this.enableResize(!e.disableResize),e.float!==void 0&&this.float(e.float),e.row!==void 0&&(t.minRow=t.maxRow=e.row),e.children?.length&&(this.load(e.children),delete e.children),this.opts=$($({},this.opts),e),this}update(e,t){return a.getElements(e).forEach(i=>{let o=i?.gridstackNode;if(!o)return;let r=$($({},M.copyPos({},o)),M.cloneDeep(t));this.engine.nodeBoundFix(r),delete r.autoPosition;let l=["x","y","w","h"],d;if(l.some(c=>r[c]!==void 0&&r[c]!==o[c])&&(d={},l.forEach(c=>{d[c]=r[c]!==void 0?r[c]:o[c],delete r[c]})),!d&&(r.minW||r.minH||r.maxW||r.maxH)&&(d={}),r.content!==void 0){let c=i.querySelector(".grid-stack-item-content");c&&c.textContent!==r.content&&(o.content=r.content,a.renderCB(c,r),o.subGrid?.el&&(c.appendChild(o.subGrid.el),o.subGrid.opts.styleInHead||o.subGrid._updateStyles(!0))),delete r.content}let p=!1,s=!1;for(let c in r)c[0]!=="_"&&o[c]!==r[c]&&(o[c]=r[c],p=!0,s=s||!this.opts.staticGrid&&(c==="noResize"||c==="noMove"||c==="locked"));if(M.sanitizeMinMax(o),d){let c=d.w!==void 0&&d.w!==o.w;this.moveNode(o,d),c&&o.subGrid?o.subGrid.onResize(this.hasAnimationCSS()?o.w:void 0):this.resizeToContentCheck(c,o),delete o._orig}(d||p)&&this._writeAttr(i,o),s&&this.prepareDragDrop(o.el)}),this}moveNode(e,t){let i=e._updating;i||this.engine.cleanNodes().beginUpdate(e),this.engine.moveNode(e,t),this._updateContainerHeight(),i||(this._triggerChangeEvent(),this.engine.endUpdate())}resizeToContent(e){if(!e||(e.classList.remove("size-to-content-max"),!e.clientHeight))return;let t=e.gridstackNode;if(!t)return;let i=t.grid;if(!i||e.parentElement!==i.el)return;let o=i.getCellHeight(!0);if(!o)return;let r=t.h?t.h*o:e.clientHeight,l;if(t.resizeToContentParent&&(l=e.querySelector(t.resizeToContentParent)),l||(l=e.querySelector(a.resizeToContentParent)),!l)return;let d=e.clientHeight-l.clientHeight,p=t.h?t.h*o-d:l.clientHeight,s;if(t.subGrid){s=t.subGrid.getRow()*t.subGrid.getCellHeight(!0);let f=t.subGrid.el.getBoundingClientRect(),y=t.subGrid.el.parentElement.getBoundingClientRect();s+=f.top-y.top}else{if(t.subGridOpts?.children?.length)return;{let f=l.firstElementChild;if(!f){console.error(`Error: GridStack.resizeToContent() widget id:${t.id} '${a.resizeToContentParent}'.firstElementChild is null, make sure to have a div like container. Skipping sizing.`);return}s=f.getBoundingClientRect().height||p}}if(p===s)return;r+=s-p;let c=Math.ceil(r/o),m=Number.isInteger(t.sizeToContent)?t.sizeToContent:0;m&&c>m&&(c=m,e.classList.add("size-to-content-max")),t.minH&&c<t.minH?c=t.minH:t.maxH&&c>t.maxH&&(c=t.maxH),c!==t.h&&(i._ignoreLayoutsNodeChange=!0,i.moveNode(t,{h:c}),delete i._ignoreLayoutsNodeChange)}resizeToContentCBCheck(e){a.resizeToContentCB?a.resizeToContentCB(e):this.resizeToContent(e)}rotate(e,t){return a.getElements(e).forEach(i=>{let o=i.gridstackNode;if(!M.canBeRotated(o))return;let r={w:o.h,h:o.w,minH:o.minW,minW:o.minH,maxH:o.maxW,maxW:o.maxH};if(t){let d=t.left>0?Math.floor(t.left/this.cellWidth()):0,p=t.top>0?Math.floor(t.top/this.opts.cellHeight):0;r.x=o.x+d-(o.h-(p+1)),r.y=o.y+p-d}Object.keys(r).forEach(d=>{r[d]===void 0&&delete r[d]});let l=o._orig;this.update(i,r),o._orig=l}),this}margin(e){if(!(typeof e=="string"&&e.split(" ").length>1)){let i=M.parseHeight(e);if(this.opts.marginUnit===i.unit&&this.opts.margin===i.h)return}return this.opts.margin=e,this.opts.marginTop=this.opts.marginBottom=this.opts.marginLeft=this.opts.marginRight=void 0,this._initMargin(),this._updateStyles(!0),this}getMargin(){return this.opts.margin}willItFit(e){if(arguments.length>1){console.warn("gridstack.ts: `willItFit(x,y,w,h,autoPosition)` is deprecated. Use `willItFit({x, y,...})`. It will be removed soon");let t=arguments,i=0,o={x:t[i++],y:t[i++],w:t[i++],h:t[i++],autoPosition:t[i++]};return this.willItFit(o)}return this.engine.willItFit(e)}_triggerChangeEvent(){if(this.engine.batchMode)return this;let e=this.engine.getDirtyNodes(!0);return e&&e.length&&(this._ignoreLayoutsNodeChange||this.engine.layoutsNodesChange(e),this._triggerEvent("change",e)),this.engine.saveInitial(),this}_triggerAddEvent(){if(this.engine.batchMode)return this;if(this.engine.addedNodes?.length){this._ignoreLayoutsNodeChange||this.engine.layoutsNodesChange(this.engine.addedNodes),this.engine.addedNodes.forEach(t=>{delete t._dirty});let e=[...this.engine.addedNodes];this.engine.addedNodes=[],this._triggerEvent("added",e)}return this}_triggerRemoveEvent(){if(this.engine.batchMode)return this;if(this.engine.removedNodes?.length){let e=[...this.engine.removedNodes];this.engine.removedNodes=[],this._triggerEvent("removed",e)}return this}_triggerEvent(e,t){let i=t?new CustomEvent(e,{bubbles:!1,detail:t}):new Event(e);return this.el.dispatchEvent(i),this}_removeStylesheet(){if(this._styles){let e=this.opts.styleInHead?void 0:this.el.parentNode;M.removeStylesheet(this._styleSheetClass,e),delete this._styles}return this}_updateStyles(e=!1,t){if(e&&this._removeStylesheet(),t===void 0&&(t=this.getRow()),this._updateContainerHeight(),this.opts.cellHeight===0)return this;let i=this.opts.cellHeight,o=this.opts.cellHeightUnit,r=`.${this._styleSheetClass} > .${this.opts.itemClass}`;if(!this._styles){let l=this.opts.styleInHead?void 0:this.el.parentNode;if(this._styles=M.createStylesheet(this._styleSheetClass,l,{nonce:this.opts.nonce}),!this._styles)return this;this._styles._max=0,M.addCSSRule(this._styles,r,`height: ${i}${o}`);let d=this.opts.marginTop+this.opts.marginUnit,p=this.opts.marginBottom+this.opts.marginUnit,s=this.opts.marginRight+this.opts.marginUnit,c=this.opts.marginLeft+this.opts.marginUnit,m=`${r} > .grid-stack-item-content`,f=`.${this._styleSheetClass} > .grid-stack-placeholder > .placeholder-content`;M.addCSSRule(this._styles,m,`top: ${d}; right: ${s}; bottom: ${p}; left: ${c};`),M.addCSSRule(this._styles,f,`top: ${d}; right: ${s}; bottom: ${p}; left: ${c};`),M.addCSSRule(this._styles,`${r} > .ui-resizable-n`,`top: ${d};`),M.addCSSRule(this._styles,`${r} > .ui-resizable-s`,`bottom: ${p}`),M.addCSSRule(this._styles,`${r} > .ui-resizable-ne`,`right: ${s}; top: ${d}`),M.addCSSRule(this._styles,`${r} > .ui-resizable-e`,`right: ${s}`),M.addCSSRule(this._styles,`${r} > .ui-resizable-se`,`right: ${s}; bottom: ${p}`),M.addCSSRule(this._styles,`${r} > .ui-resizable-nw`,`left: ${c}; top: ${d}`),M.addCSSRule(this._styles,`${r} > .ui-resizable-w`,`left: ${c}`),M.addCSSRule(this._styles,`${r} > .ui-resizable-sw`,`left: ${c}; bottom: ${p}`)}if(t=t||this._styles._max,t>this._styles._max){let l=d=>i*d+o;for(let d=this._styles._max+1;d<=t;d++)M.addCSSRule(this._styles,`${r}[gs-y="${d}"]`,`top: ${l(d)}`),M.addCSSRule(this._styles,`${r}[gs-h="${d+1}"]`,`height: ${l(d+1)}`);this._styles._max=t}return this}_updateContainerHeight(){if(!this.engine||this.engine.batchMode)return this;let e=this.parentGridNode,t=this.getRow()+this._extraDragRow,i=this.opts.cellHeight,o=this.opts.cellHeightUnit;if(!i)return this;if(!e){let r=M.parseHeight(getComputedStyle(this.el).minHeight);if(r.h>0&&r.unit===o){let l=Math.floor(r.h/i);t<l&&(t=l)}}return this.el.setAttribute("gs-current-row",String(t)),this.el.style.removeProperty("min-height"),this.el.style.removeProperty("height"),t&&(this.el.style[e?"minHeight":"height"]=t*i+o),e&&!e.grid.engine.batchMode&&M.shouldSizeToContent(e)&&e.grid.resizeToContentCBCheck(e.el),this}_prepareElement(e,t=!1,i){i=i||this._readAttr(e),e.gridstackNode=i,i.el=e,i.grid=this,i=this.engine.addNode(i,t),this._writeAttr(e,i),e.classList.add(Pt.itemClass,this.opts.itemClass);let o=M.shouldSizeToContent(i);return o?e.classList.add("size-to-content"):e.classList.remove("size-to-content"),o&&this.resizeToContentCheck(!1,i),M.lazyLoad(i)||this.prepareDragDrop(i.el),this}_writePosAttr(e,t){return t.x!==void 0&&t.x!==null&&e.setAttribute("gs-x",String(t.x)),t.y!==void 0&&t.y!==null&&e.setAttribute("gs-y",String(t.y)),t.w>1?e.setAttribute("gs-w",String(t.w)):e.removeAttribute("gs-w"),t.h>1?e.setAttribute("gs-h",String(t.h)):e.removeAttribute("gs-h"),this}_writeAttr(e,t){if(!t)return this;this._writePosAttr(e,t);let i={noResize:"gs-no-resize",noMove:"gs-no-move",locked:"gs-locked",id:"gs-id",sizeToContent:"gs-size-to-content"};for(let o in i)t[o]?e.setAttribute(i[o],String(t[o])):e.removeAttribute(i[o]);return this}_readAttr(e,t=!0){let i={};i.x=M.toNumber(e.getAttribute("gs-x")),i.y=M.toNumber(e.getAttribute("gs-y")),i.w=M.toNumber(e.getAttribute("gs-w")),i.h=M.toNumber(e.getAttribute("gs-h")),i.autoPosition=M.toBool(e.getAttribute("gs-auto-position")),i.noResize=M.toBool(e.getAttribute("gs-no-resize")),i.noMove=M.toBool(e.getAttribute("gs-no-move")),i.locked=M.toBool(e.getAttribute("gs-locked"));let o=e.getAttribute("gs-size-to-content");o&&(o==="true"||o==="false"?i.sizeToContent=M.toBool(o):i.sizeToContent=parseInt(o,10)),i.id=e.getAttribute("gs-id"),i.maxW=M.toNumber(e.getAttribute("gs-max-w")),i.minW=M.toNumber(e.getAttribute("gs-min-w")),i.maxH=M.toNumber(e.getAttribute("gs-max-h")),i.minH=M.toNumber(e.getAttribute("gs-min-h")),t&&(i.w===1&&e.removeAttribute("gs-w"),i.h===1&&e.removeAttribute("gs-h"),i.maxW&&e.removeAttribute("gs-max-w"),i.minW&&e.removeAttribute("gs-min-w"),i.maxH&&e.removeAttribute("gs-max-h"),i.minH&&e.removeAttribute("gs-min-h"));for(let r in i){if(!i.hasOwnProperty(r))return;!i[r]&&i[r]!==0&&r!=="gs-size-to-content"&&delete i[r]}return i}_setStaticClass(){let e=["grid-stack-static"];return this.opts.staticGrid?(this.el.classList.add(...e),this.el.setAttribute("gs-static","true")):(this.el.classList.remove(...e),this.el.removeAttribute("gs-static")),this}onResize(e=this.el?.clientWidth){if(!e||this.prevWidth===e)return;this.prevWidth=e,this.batchUpdate();let t=!1;return this._autoColumn&&this.parentGridNode?this.opts.column!==this.parentGridNode.w&&(this.column(this.parentGridNode.w,this.opts.layout||"list"),t=!0):t=this.checkDynamicColumn(),this._isAutoCellHeight&&this.cellHeight(),this.engine.nodes.forEach(i=>{i.subGrid&&i.subGrid.onResize()}),this._skipInitialResize||this.resizeToContentCheck(t),delete this._skipInitialResize,this.batchUpdate(!1),this}resizeToContentCheck(e=!1,t=void 0){if(this.engine){if(e&&this.hasAnimationCSS())return setTimeout(()=>this.resizeToContentCheck(!1,t),this.animationDelay);if(t)M.shouldSizeToContent(t)&&this.resizeToContentCBCheck(t.el);else if(this.engine.nodes.some(i=>M.shouldSizeToContent(i))){let i=[...this.engine.nodes];this.batchUpdate(),i.forEach(o=>{M.shouldSizeToContent(o)&&this.resizeToContentCBCheck(o.el)}),this.batchUpdate(!1)}this._gsEventHandler.resizecontent&&this._gsEventHandler.resizecontent(null,t?[t]:this.engine.nodes)}}_updateResizeEvent(e=!1){let t=!this.parentGridNode&&(this._isAutoCellHeight||this.opts.sizeToContent||this.opts.columnOpts||this.engine.nodes.find(i=>i.sizeToContent));return!e&&t&&!this.resizeObserver?(this._sizeThrottle=M.throttle(()=>this.onResize(),this.opts.cellHeightThrottle),this.resizeObserver=new ResizeObserver(()=>this._sizeThrottle()),this.resizeObserver.observe(this.el),this._skipInitialResize=!0):(e||!t)&&this.resizeObserver&&(this.resizeObserver.disconnect(),delete this.resizeObserver,delete this._sizeThrottle),this}static getElement(e=".grid-stack-item"){return M.getElement(e)}static getElements(e=".grid-stack-item"){return M.getElements(e)}static getGridElement(e){return a.getElement(e)}static getGridElements(e){return M.getElements(e)}_initMargin(){let e,t=0,i=[];return typeof this.opts.margin=="string"&&(i=this.opts.margin.split(" ")),i.length===2?(this.opts.marginTop=this.opts.marginBottom=i[0],this.opts.marginLeft=this.opts.marginRight=i[1]):i.length===4?(this.opts.marginTop=i[0],this.opts.marginRight=i[1],this.opts.marginBottom=i[2],this.opts.marginLeft=i[3]):(e=M.parseHeight(this.opts.margin),this.opts.marginUnit=e.unit,t=this.opts.margin=e.h),this.opts.marginTop===void 0?this.opts.marginTop=t:(e=M.parseHeight(this.opts.marginTop),this.opts.marginTop=e.h,delete this.opts.margin),this.opts.marginBottom===void 0?this.opts.marginBottom=t:(e=M.parseHeight(this.opts.marginBottom),this.opts.marginBottom=e.h,delete this.opts.margin),this.opts.marginRight===void 0?this.opts.marginRight=t:(e=M.parseHeight(this.opts.marginRight),this.opts.marginRight=e.h,delete this.opts.margin),this.opts.marginLeft===void 0?this.opts.marginLeft=t:(e=M.parseHeight(this.opts.marginLeft),this.opts.marginLeft=e.h,delete this.opts.margin),this.opts.marginUnit=e.unit,this.opts.marginTop===this.opts.marginBottom&&this.opts.marginLeft===this.opts.marginRight&&this.opts.marginTop===this.opts.marginRight&&(this.opts.margin=this.opts.marginTop),this}static getDD(){return kt}static setupDragIn(e,t,i,o=document){t?.pause!==void 0&&(se.pauseDrag=t.pause),t=$({appendTo:"body",helper:"clone"},t||{}),(typeof e=="string"?M.getElements(e,o):e).forEach((l,d)=>{kt.isDraggable(l)||kt.dragIn(l,t),i?.[d]&&(l.gridstackNode=i[d])})}movable(e,t){return this.opts.staticGrid?this:(a.getElements(e).forEach(i=>{let o=i.gridstackNode;o&&(t?delete o.noMove:o.noMove=!0,this.prepareDragDrop(o.el))}),this)}resizable(e,t){return this.opts.staticGrid?this:(a.getElements(e).forEach(i=>{let o=i.gridstackNode;o&&(t?delete o.noResize:o.noResize=!0,this.prepareDragDrop(o.el))}),this)}disable(e=!0){if(!this.opts.staticGrid)return this.enableMove(!1,e),this.enableResize(!1,e),this._triggerEvent("disable"),this}enable(e=!0){if(!this.opts.staticGrid)return this.enableMove(!0,e),this.enableResize(!0,e),this._triggerEvent("enable"),this}enableMove(e,t=!0){return this.opts.staticGrid?this:(e?delete this.opts.disableDrag:this.opts.disableDrag=!0,this.engine.nodes.forEach(i=>{this.prepareDragDrop(i.el),i.subGrid&&t&&i.subGrid.enableMove(e,t)}),this)}enableResize(e,t=!0){return this.opts.staticGrid?this:(e?delete this.opts.disableResize:this.opts.disableResize=!0,this.engine.nodes.forEach(i=>{this.prepareDragDrop(i.el),i.subGrid&&t&&i.subGrid.enableResize(e,t)}),this)}cancelDrag(){let e=this._placeholder?.gridstackNode;e&&(e._isExternal?(e._isAboutToRemove=!0,this.engine.removeNode(e)):e._isAboutToRemove&&a._itemRemoving(e.el,!1),this.engine.restoreInitial())}_removeDD(e){return kt.draggable(e,"destroy").resizable(e,"destroy"),e.gridstackNode&&delete e.gridstackNode._initDD,delete e.ddElement,this}_setupAcceptWidget(){if(this.opts.staticGrid||!this.opts.acceptWidgets&&!this.opts.removable)return kt.droppable(this.el,"destroy"),this;let e,t,i=(o,r,l)=>{l=l||r;let d=l.gridstackNode;if(!d)return;if(!d.grid?.el){l.style.transform=`scale(${1/this.dragTransform.xScale},${1/this.dragTransform.yScale})`;let f=l.getBoundingClientRect();l.style.left=f.x+(this.dragTransform.xScale-1)*(o.clientX-f.x)/this.dragTransform.xScale+"px",l.style.top=f.y+(this.dragTransform.yScale-1)*(o.clientY-f.y)/this.dragTransform.yScale+"px",l.style.transformOrigin="0px 0px"}let{top:p,left:s}=l.getBoundingClientRect(),c=this.el.getBoundingClientRect();s-=c.left,p-=c.top;let m={position:{top:p*this.dragTransform.xScale,left:s*this.dragTransform.yScale}};if(d._temporaryRemoved){if(d.x=Math.max(0,Math.round(s/t)),d.y=Math.max(0,Math.round(p/e)),delete d.autoPosition,this.engine.nodeBoundFix(d),!this.engine.willItFit(d)){if(d.autoPosition=!0,!this.engine.willItFit(d)){kt.off(r,"drag");return}d._willFitPos&&(M.copyPos(d,d._willFitPos),delete d._willFitPos)}this._onStartMoving(l,o,m,d,t,e)}else this._dragOrResize(l,o,m,d,t,e)};return kt.droppable(this.el,{accept:o=>{let r=o.gridstackNode||this._readAttr(o,!1);if(r?.grid===this)return!0;if(!this.opts.acceptWidgets)return!1;let l=!0;if(typeof this.opts.acceptWidgets=="function")l=this.opts.acceptWidgets(o);else{let d=this.opts.acceptWidgets===!0?".grid-stack-item":this.opts.acceptWidgets;l=o.matches(d)}if(l&&r&&this.opts.maxRow){let d={w:r.w,h:r.h,minW:r.minW,minH:r.minH};l=this.engine.willItFit(d)}return l}}).on(this.el,"dropover",(o,r,l)=>{let d=l?.gridstackNode||r.gridstackNode;if(d?.grid===this&&!d._temporaryRemoved)return!1;if(d?._sidebarOrig&&(d.w=d._sidebarOrig.w,d.h=d._sidebarOrig.h),d?.grid&&d.grid!==this&&!d._temporaryRemoved&&d.grid._leave(r,l),l=l||r,t=this.cellWidth(),e=this.getCellHeight(!0),!d){let c=l.getAttribute("data-gs-widget")||l.getAttribute("gridstacknode");if(c){try{d=JSON.parse(c)}catch{console.error("Gridstack dropover: Bad JSON format: ",c)}l.removeAttribute("data-gs-widget"),l.removeAttribute("gridstacknode")}d||(d=this._readAttr(l)),d._sidebarOrig={w:d.w,h:d.h}}d.grid||(d.el||(d=$({},d)),d._isExternal=!0,l.gridstackNode=d);let p=d.w||Math.round(l.offsetWidth/t)||1,s=d.h||Math.round(l.offsetHeight/e)||1;return d.grid&&d.grid!==this?(r._gridstackNodeOrig||(r._gridstackNodeOrig=d),r.gridstackNode=d=Ze($({},d),{w:p,h:s,grid:this}),delete d.x,delete d.y,this.engine.cleanupNode(d).nodeBoundFix(d),d._initDD=d._isExternal=d._temporaryRemoved=!0):(d.w=p,d.h=s,d._temporaryRemoved=!0),a._itemRemoving(d.el,!1),kt.on(r,"drag",i),i(o,r,l),!1}).on(this.el,"dropout",(o,r,l)=>{let d=l?.gridstackNode||r.gridstackNode;return d&&(!d.grid||d.grid===this)&&(this._leave(r,l),this._isTemp&&this.removeAsSubGrid(d)),!1}).on(this.el,"drop",(o,r,l)=>{let d=l?.gridstackNode||r.gridstackNode;if(d?.grid===this&&!d._isExternal)return!1;let p=!!this.placeholder.parentElement,s=r!==l;this.placeholder.remove(),delete this.placeholder.gridstackNode;let c=p&&this.opts.animate;c&&this.setAnimation(!1);let m=r._gridstackNodeOrig;if(delete r._gridstackNodeOrig,p&&m?.grid&&m.grid!==this){let y=m.grid;y.engine.removeNodeFromLayoutCache(m),y.engine.removedNodes.push(m),y._triggerRemoveEvent()._triggerChangeEvent(),y.parentGridNode&&!y.engine.nodes.length&&y.opts.subGridDynamic&&y.removeAsSubGrid()}if(!d||(p&&(this.engine.cleanupNode(d),d.grid=this),delete d.grid?._isTemp,kt.off(r,"drag"),l!==r?(l.remove(),r=l):r.remove(),this._removeDD(r),!p))return!1;let f=d.subGrid?.el?.gridstack;return M.copyPos(d,this._readAttr(this.placeholder)),M.removePositioningStyles(r),s&&(d.content||d.subGridOpts||a.addRemoveCB)?(delete d.el,r=this.addWidget(d)):(this._prepareElement(r,!0,d),this.el.appendChild(r),this.resizeToContentCheck(!1,d),f&&(f.parentGridNode=d,f.opts.styleInHead||f._updateStyles(!0)),this._updateContainerHeight()),this.engine.addedNodes.push(d),this._triggerAddEvent(),this._triggerChangeEvent(),this.engine.endUpdate(),this._gsEventHandler.dropped&&this._gsEventHandler.dropped(Ze($({},o),{type:"dropped"}),m&&m.grid?m:void 0,d),c&&this.setAnimation(this.opts.animate,!0),!1}),this}static _itemRemoving(e,t){if(!e)return;let i=e?e.gridstackNode:void 0;!i?.grid||e.classList.contains(i.grid.opts.removableOptions.decline)||(t?i._isAboutToRemove=!0:delete i._isAboutToRemove,t?e.classList.add("grid-stack-item-removing"):e.classList.remove("grid-stack-item-removing"))}_setupRemoveDrop(){if(typeof this.opts.removable!="string")return this;let e=document.querySelector(this.opts.removable);return e?(!this.opts.staticGrid&&!kt.isDroppable(e)&&kt.droppable(e,this.opts.removableOptions).on(e,"dropover",(t,i)=>a._itemRemoving(i,!0)).on(e,"dropout",(t,i)=>a._itemRemoving(i,!1)),this):this}prepareDragDrop(e,t=!1){let i=e?.gridstackNode;if(!i)return;let o=i.noMove||this.opts.disableDrag,r=i.noResize||this.opts.disableResize,l=this.opts.staticGrid||o&&r;if((t||l)&&(i._initDD&&(this._removeDD(e),delete i._initDD),l&&e.classList.add("ui-draggable-disabled","ui-resizable-disabled"),!t))return this;if(!i._initDD){let d,p,s=(f,y)=>{this._gsEventHandler[f.type]&&this._gsEventHandler[f.type](f,f.target),d=this.cellWidth(),p=this.getCellHeight(!0),this._onStartMoving(e,f,y,i,d,p)},c=(f,y)=>{this._dragOrResize(e,f,y,i,d,p)},m=f=>{this.placeholder.remove(),delete this.placeholder.gridstackNode,delete i._moving,delete i._event,delete i._lastTried;let y=i.w!==i._orig.w,S=f.target;if(!(!S.gridstackNode||S.gridstackNode.grid!==this)){if(i.el=S,i._isAboutToRemove){let x=e.gridstackNode.grid;x._gsEventHandler[f.type]&&x._gsEventHandler[f.type](f,S),x.engine.nodes.push(i),x.removeWidget(e,!0,!0)}else M.removePositioningStyles(S),i._temporaryRemoved?(M.copyPos(i,i._orig),this._writePosAttr(S,i),this.engine.addNode(i)):this._writePosAttr(S,i),this._gsEventHandler[f.type]&&this._gsEventHandler[f.type](f,S);this._extraDragRow=0,this._updateContainerHeight(),this._triggerChangeEvent(),this.engine.endUpdate(),f.type==="resizestop"&&(Number.isInteger(i.sizeToContent)&&(i.sizeToContent=i.h),this.resizeToContentCheck(y,i))}};kt.draggable(e,{start:s,stop:m,drag:c}).resizable(e,{start:s,stop:m,resize:c}),i._initDD=!0}return kt.draggable(e,o?"disable":"enable").resizable(e,r?"disable":"enable"),this}_onStartMoving(e,t,i,o,r,l){if(this.engine.cleanNodes().beginUpdate(o),this._writePosAttr(this.placeholder,o),this.el.appendChild(this.placeholder),this.placeholder.gridstackNode=o,o.grid?.el)this.dragTransform=M.getValuesFromTransformedElement(e);else if(this.placeholder&&this.placeholder.closest(".grid-stack")){let d=this.placeholder.closest(".grid-stack");this.dragTransform=M.getValuesFromTransformedElement(d)}else this.dragTransform={xScale:1,xOffset:0,yScale:1,yOffset:0};if(o.el=this.placeholder,o._lastUiPosition=i.position,o._prevYPix=i.position.top,o._moving=t.type==="dragstart",delete o._lastTried,t.type==="dropover"&&o._temporaryRemoved&&(this.engine.addNode(o),o._moving=!0),this.engine.cacheRects(r,l,this.opts.marginTop,this.opts.marginRight,this.opts.marginBottom,this.opts.marginLeft),t.type==="resizestart"){let d=this.getColumn()-o.x,p=(this.opts.maxRow||Number.MAX_SAFE_INTEGER)-o.y;kt.resizable(e,"option","minWidth",r*Math.min(o.minW||1,d)).resizable(e,"option","minHeight",l*Math.min(o.minH||1,p)).resizable(e,"option","maxWidth",r*Math.min(o.maxW||Number.MAX_SAFE_INTEGER,d)).resizable(e,"option","maxWidthMoveLeft",r*Math.min(o.maxW||Number.MAX_SAFE_INTEGER,o.x+o.w)).resizable(e,"option","maxHeight",l*Math.min(o.maxH||Number.MAX_SAFE_INTEGER,p)).resizable(e,"option","maxHeightMoveUp",l*Math.min(o.maxH||Number.MAX_SAFE_INTEGER,o.y+o.h))}}_dragOrResize(e,t,i,o,r,l){let d=$({},o._orig),p,s=this.opts.marginLeft,c=this.opts.marginRight,m=this.opts.marginTop,f=this.opts.marginBottom,y=Math.round(l*.1),S=Math.round(r*.1);if(s=Math.min(s,S),c=Math.min(c,S),m=Math.min(m,y),f=Math.min(f,y),t.type==="drag"){if(o._temporaryRemoved)return;let V=i.position.top-o._prevYPix;o._prevYPix=i.position.top,this.opts.draggable.scroll!==!1&&M.updateScrollPosition(e,i.position,V);let H=i.position.left+(i.position.left>o._lastUiPosition.left?-c:s),Z=i.position.top+(i.position.top>o._lastUiPosition.top?-f:m);d.x=Math.round(H/r),d.y=Math.round(Z/l);let me=this._extraDragRow;if(this.engine.collide(o,d)){let Oe=this.getRow(),Be=Math.max(0,d.y+o.h-Oe);this.opts.maxRow&&Oe+Be>this.opts.maxRow&&(Be=Math.max(0,this.opts.maxRow-Oe)),this._extraDragRow=Be}else this._extraDragRow=0;if(this._extraDragRow!==me&&this._updateContainerHeight(),o.x===d.x&&o.y===d.y)return}else if(t.type==="resize"){if(d.x<0||(M.updateScrollResize(t,e,l),d.w=Math.round((i.size.width-s)/r),d.h=Math.round((i.size.height-m)/l),o.w===d.w&&o.h===d.h)||o._lastTried&&o._lastTried.w===d.w&&o._lastTried.h===d.h)return;let V=i.position.left+s,H=i.position.top+m;d.x=Math.round(V/r),d.y=Math.round(H/l),p=!0}o._event=t,o._lastTried=d;let x={x:i.position.left+s,y:i.position.top+m,w:(i.size?i.size.width:o.w*r)-s-c,h:(i.size?i.size.height:o.h*l)-m-f};if(this.engine.moveNodeCheck(o,Ze($({},d),{cellWidth:r,cellHeight:l,rect:x,resizing:p}))){o._lastUiPosition=i.position,this.engine.cacheRects(r,l,m,c,f,s),delete o._skipDown,p&&o.subGrid&&o.subGrid.onResize(),this._extraDragRow=0,this._updateContainerHeight();let V=t.target;o._sidebarOrig||this._writePosAttr(V,o),this._gsEventHandler[t.type]&&this._gsEventHandler[t.type](t,V)}}_leave(e,t){t=t||e;let i=t.gridstackNode;if(!i||(t.style.transform=t.style.transformOrigin=null,kt.off(e,"drag"),i._temporaryRemoved))return;i._temporaryRemoved=!0,this.engine.removeNode(i),i.el=i._isExternal&&t?t:e;let o=i._sidebarOrig;i._isExternal&&this.engine.cleanupNode(i),i._sidebarOrig=o,this.opts.removable===!0&&a._itemRemoving(e,!0),e._gridstackNodeOrig?(e.gridstackNode=e._gridstackNodeOrig,delete e._gridstackNodeOrig):i._isExternal&&this.engine.restoreInitial()}commit(){return kd(this,this.batchUpdate(!1),"commit","batchUpdate","5.2"),this}}return a.renderCB=(n,e)=>{n&&e?.content&&(n.textContent=e.content)},a.resizeToContentParent=".grid-stack-item-content",a.Utils=M,a.Engine=oo,a.GDRev="11.5.1",a})();var Dd=["container"],ju=["*"];function $u(a,n){}var Yu=["*",[["","empty-content",""]]],Ku=["*","[empty-content]"];function Qu(a,n){a&1&&gn(0,1,["*ngIf","isEmpty"])}function Xu(a,n){}var Ad=(()=>{class a{serialize(){}deserialize(e){this.widgetItem=e,e&&e.input&&Object.assign(this,e.input)}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=st({token:a,factory:a.\u0275fac}),a})(),xr=(()=>{class a{constructor(e){this.elementRef=e,this.el._gridItemComp=this}set options(e){let t=this.el.gridstackNode?.grid;t?t.update(this.el,e):this._options=Ze($({},e),{el:this.el})}get options(){return this.el.gridstackNode||this._options||{el:this.el}}get el(){return this.elementRef.nativeElement}clearOptions(){delete this._options}ngOnDestroy(){this.clearOptions(),delete this.childWidget,delete this.el._gridItemComp,delete this.container,delete this.ref}}return a.\u0275fac=function(e){return new(e||a)(Et(Ye))},a.\u0275cmp=F({type:a,selectors:[["gridstack-item"]],viewQuery:function(e,t){if(e&1&&Ci(Dd,7,mr),e&2){let i;gi(i=fi())&&(t.container=i.first)}},inputs:{options:"options"},ngContentSelectors:ju,decls:5,vars:1,consts:[["container",""],[1,"grid-stack-item-content"]],template:function(e,t){e&1&&(sa(),A(0,"div",1),tl(1,$u,0,0,"ng-template",null,0,pr),gn(3),b(4),W()),e&2&&(k(4),rt(" ",t.options.content," "))},styles:["[_nghost-%COMP%]{display:block}"]}),a})(),Ki=(()=>{class a{constructor(e){this.elementRef=e,this.addedCB=new _t,this.changeCB=new _t,this.disableCB=new _t,this.dragCB=new _t,this.dragStartCB=new _t,this.dragStopCB=new _t,this.droppedCB=new _t,this.enableCB=new _t,this.removedCB=new _t,this.resizeCB=new _t,this.resizeStartCB=new _t,this.resizeStopCB=new _t,Ln.addRemoveCB||(Ln.addRemoveCB=Zu),Ln.saveCB||(Ln.saveCB=Ju),this.el._gridComp=this}set options(e){this._grid?this._grid.updateOptions(e):this._options=e}get options(){return this._grid?.opts||this._options||{}}get el(){return this.elementRef.nativeElement}get grid(){return this._grid}static addComponentToSelectorType(e){e.forEach(t=>a.selectorToType[a.getSelector(t)]=t)}static getSelector(e){return hl(e).selector}ngOnInit(){this.loaded=!!this.options?.children?.length,this._grid=Ln.init(this._options,this.el),delete this._options,this.checkEmpty()}ngAfterContentInit(){this._sub=this.gridstackItems?.changes.subscribe(()=>this.updateAll()),this.loaded||this.updateAll(),this.hookEvents(this.grid)}ngOnDestroy(){this.unhookEvents(this._grid),this._sub?.unsubscribe(),this._grid?.destroy(),delete this._grid,delete this.el._gridComp,delete this.container,delete this.ref}updateAll(){if(!this.grid)return;let e=[];this.gridstackItems?.forEach(t=>{e.push(t.options),t.clearOptions()}),this.grid.load(e)}checkEmpty(){this.grid&&(this.isEmpty=!this.grid.engine.nodes.length)}hookEvents(e){e&&e.on("added",(t,i)=>{this.checkEmpty(),this.addedCB.emit({event:t,nodes:i})}).on("change",(t,i)=>this.changeCB.emit({event:t,nodes:i})).on("disable",t=>this.disableCB.emit({event:t})).on("drag",(t,i)=>this.dragCB.emit({event:t,el:i})).on("dragstart",(t,i)=>this.dragStartCB.emit({event:t,el:i})).on("dragstop",(t,i)=>this.dragStopCB.emit({event:t,el:i})).on("dropped",(t,i,o)=>this.droppedCB.emit({event:t,previousNode:i,newNode:o})).on("enable",t=>this.enableCB.emit({event:t})).on("removed",(t,i)=>{this.checkEmpty(),this.removedCB.emit({event:t,nodes:i})}).on("resize",(t,i)=>this.resizeCB.emit({event:t,el:i})).on("resizestart",(t,i)=>this.resizeStartCB.emit({event:t,el:i})).on("resizestop",(t,i)=>this.resizeStopCB.emit({event:t,el:i}))}unhookEvents(e){e&&e.off("added change disable drag dragstart dragstop dropped enable removed resize resizestart resizestop")}}return a.selectorToType={},a.\u0275fac=function(e){return new(e||a)(Et(Ye))},a.\u0275cmp=F({type:a,selectors:[["gridstack"]],contentQueries:function(e,t,i){if(e&1&&nl(i,xr,4),e&2){let o;gi(o=fi())&&(t.gridstackItems=o)}},viewQuery:function(e,t){if(e&1&&Ci(Dd,7,mr),e&2){let i;gi(i=fi())&&(t.container=i.first)}},inputs:{options:"options",isEmpty:"isEmpty"},outputs:{addedCB:"addedCB",changeCB:"changeCB",disableCB:"disableCB",dragCB:"dragCB",dragStartCB:"dragStartCB",dragStopCB:"dragStopCB",droppedCB:"droppedCB",enableCB:"enableCB",removedCB:"removedCB",resizeCB:"resizeCB",resizeStartCB:"resizeStartCB",resizeStopCB:"resizeStopCB"},ngContentSelectors:Ku,decls:4,vars:1,consts:[["container",""],[4,"ngIf"]],template:function(e,t){e&1&&(sa(Yu),Wa(0,Qu,1,0,"ng-content",1)(1,Xu,0,0,"ng-template",null,0,pr),gn(3)),e&2&&z("ngIf",t.isEmpty)},dependencies:[ml],styles:["[_nghost-%COMP%]{display:block}"]}),a})();function Zu(a,n,e,t){if(e){if(!a)return;if(t){let i=a.parentElement?._gridItemComp;if(!i)return;let r=(i.childWidget?.container||i.container)?.createComponent(Ki),l=r?.instance;return l?(l.ref=r,l.options=n,l.el):void 0}else{let o=a._gridComp?.container?.createComponent(xr),r=o?.instance;if(!r)return;r.ref=o;let l=n.selector,d=l?Ki.selectorToType[l]:void 0;if(d){let p=()=>{let c=r.container?.createComponent(d)?.instance;c&&typeof c.serialize=="function"&&typeof c.deserialize=="function"&&(r.childWidget=c,c.deserialize(n))};n.lazyLoad||n.grid?.opts?.lazyLoad&&n.lazyLoad!==!1?n.visibleObservable||(n.visibleObservable=new IntersectionObserver(([c])=>{c.isIntersecting&&(n.visibleObservable?.disconnect(),delete n.visibleObservable,p())}),window.setTimeout(()=>n.visibleObservable?.observe(r.el))):p()}return r.el}}else if(t){let i=n.el?._gridComp;i?.ref?i.ref.destroy():i?.ngOnDestroy()}else{let i=n.el?._gridItemComp;i?.ref?i.ref.destroy():i?.ngOnDestroy()}}function Ju(a,n){let e=a.el?._gridItemComp;if(e){let i=e.childWidget?.serialize();i&&(n.input=i);return}let t=a.el?._gridComp}var Pd=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=ri({type:a}),a.\u0275inj=ai({imports:[xr,Ki]}),a})();var Pe=(function(a){return a[a.State=0]="State",a[a.Transition=1]="Transition",a[a.Sequence=2]="Sequence",a[a.Group=3]="Group",a[a.Animate=4]="Animate",a[a.Keyframes=5]="Keyframes",a[a.Style=6]="Style",a[a.Trigger=7]="Trigger",a[a.Reference=8]="Reference",a[a.AnimateChild=9]="AnimateChild",a[a.AnimateRef=10]="AnimateRef",a[a.Query=11]="Query",a[a.Stagger=12]="Stagger",a})(Pe||{}),Ut="*";function Tr(a,n){return{type:Pe.Trigger,name:a,definitions:n,options:{}}}function ho(a,n=null){return{type:Pe.Animate,styles:n,timings:a}}function Od(a,n=null){return{type:Pe.Sequence,steps:a,options:n}}function vi(a){return{type:Pe.Style,styles:a,offset:null}}function Er(a,n,e=null){return{type:Pe.Transition,expr:a,animation:n,options:e}}var ui=class{_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_originalOnDoneFns=[];_originalOnStartFns=[];_started=!1;_destroyed=!1;_finished=!1;_position=0;parentPlayer=null;totalTime;constructor(n=0,e=0){this.totalTime=n+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(n=>n()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(n){this._position=this.totalTime?n*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(n){let e=n=="start"?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}},Qi=class{_onDoneFns=[];_onStartFns=[];_finished=!1;_started=!1;_destroyed=!1;_onDestroyFns=[];parentPlayer=null;totalTime=0;players;constructor(n){this.players=n;let e=0,t=0,i=0,o=this.players.length;o==0?queueMicrotask(()=>this._onFinish()):this.players.forEach(r=>{r.onDone(()=>{++e==o&&this._onFinish()}),r.onDestroy(()=>{++t==o&&this._onDestroy()}),r.onStart(()=>{++i==o&&this._onStart()})}),this.totalTime=this.players.reduce((r,l)=>Math.max(r,l.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this.players.forEach(n=>n.init())}onStart(n){this._onStartFns.push(n)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(n=>n()),this._onStartFns=[])}onDone(n){this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(n=>n.play())}pause(){this.players.forEach(n=>n.pause())}restart(){this.players.forEach(n=>n.restart())}finish(){this._onFinish(),this.players.forEach(n=>n.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(n=>n.destroy()),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this.players.forEach(n=>n.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(n){let e=n*this.totalTime;this.players.forEach(t=>{let i=t.totalTime?Math.min(1,e/t.totalTime):1;t.setPosition(i)})}getPosition(){let n=this.players.reduce((e,t)=>e===null||t.totalTime>e.totalTime?t:e,null);return n!=null?n.getPosition():0}beforeDestroy(){this.players.forEach(n=>{n.beforeDestroy&&n.beforeDestroy()})}triggerCallback(n){let e=n=="start"?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}},Vn="!";var tm=(a,n)=>n.id;function im(a,n){if(a&1&&Q(0,"div",4),a&2){let e=n.$index;U();let t=dl(0);we("background-color",t===e?"var(--mat-sys-on-surface)":"var(--mat-sys-inverse-on-surface)")}}var Rd=(()=>{class a{activePage=B();dashboards=B();static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["dashboard-scroller"]],inputs:{activePage:[1,"activePage"],dashboards:[1,"dashboards"]},decls:7,vars:4,consts:[[1,"page-scroll-title","page-scroll-container"],[1,"page-label"],[1,"page-scroll-page-number","page-scroll-container"],[1,"page-marker",3,"background-color"],[1,"page-marker"]],template:function(t,i){if(t&1&&(sl(0),A(1,"div",0)(2,"span",1),b(3),W()(),A(4,"div",2),Bt(5,im,1,2,"div",3,tm),W()),t&2){let o=i.dashboards(),r=ll(i.activePage());k(),z("@fadeInOut",r),k(2),He(o[r].name),k(),z("@fadeInOut",r),k(),zt(o)}},styles:["[_nghost-%COMP%]{pointer-events:none}.page-scroll-title[_ngcontent-%COMP%]{position:absolute;top:50%;right:54px;transform:translateY(-50%);z-index:100;cursor:default;text-align:center;padding:10px;color:var(--mat-sys-inverse-surface)}.page-scroll-page-number[_ngcontent-%COMP%]{position:absolute;top:50%;right:15px;transform:translateY(-50%);z-index:100;cursor:default;display:grid;padding:0}.page-scroll-container[_ngcontent-%COMP%]{opacity:0;background-color:var(--mat-sys-tertiary-fixed-dim);border-radius:10px;border:1px solid var(--mat-sys-inverse-surface)}.page-label[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface);text-shadow:1px 1px 0 var(--mat-sys-outline),-1px 1px 0 var(--mat-sys-outline),-1px -1px 0 var(--mat-sys-outline),1px -1px 0 var(--mat-sys-outline);font-size:x-large}.page-marker[_ngcontent-%COMP%]{height:20px;width:20px;margin:4px;border-radius:50%;border:1px solid var(--mat-sys-outline)}"],data:{animation:[Tr("fadeInOut",[Er(":increment, :decrement",[vi({opacity:0}),ho(100,vi({opacity:1})),vi({opacity:1}),ho("250ms 1000ms",vi({opacity:0}))])])]}})}return a})();var Se=(()=>{class a extends Ad{widgetProperties;zones$=new _i([]);DataService=E(Ei);unitsService=E(hi);app=E(Dt);theme=St(this.app.cssThemeColorRoles$,{requireSync:!0});defaultConfig=void 0;dataStream=void 0;dataSubscriptions=void 0;metaSubscriptions=void 0;constructor(){super()}serialize(){return{widgetProperties:this.widgetProperties}}observeMetaStream(){if(this.widgetProperties&&this.widgetProperties.config.paths&&Object.keys(this.widgetProperties.config.paths).length>0){let e=Object.keys(this.widgetProperties.config.paths)[0],t=this.widgetProperties.config.paths[e].path;this.metaSubscriptions=this.DataService.getPathMetaObservable(t).subscribe(i=>{i?i.zones?this.zones$.next(i.zones):this.zones$.next([]):this.zones$.next([])})}}unsubscribeMetaStream(){this.metaSubscriptions?.unsubscribe(),this.metaSubscriptions=void 0}validateConfig(){this.widgetProperties.config=_n(Bl(this.defaultConfig,this.widgetProperties.config))}createDataObservable(){if(this.widgetProperties!==void 0){if(Object.keys(this.widgetProperties.config.paths).length==0){this.dataStream=void 0;return}else this.dataStream=[];Object.keys(this.widgetProperties.config.paths).forEach(e=>{typeof this.widgetProperties.config.paths[e].path!="string"||this.widgetProperties.config.paths[e].path==""||this.widgetProperties.config.paths[e].path==null||this.dataStream.push({pathName:e,observable:this.DataService.subscribePath(this.widgetProperties.config.paths[e].path,this.widgetProperties.config.paths[e].source)})})}}observeDataStream(e,t){(this.dataStream===void 0||this.dataStream.length==0)&&this.createDataObservable();let i=this.widgetProperties.config.paths[e].pathType,o=this.widgetProperties.config.paths[e].path,r=this.widgetProperties.config.paths[e].convertUnitTo,l=this.widgetProperties.config.paths[e].sampleTime,d=this.widgetProperties.config.dataTimeout*1e3,p=5e3,s=`[Widget] ${this.widgetProperties.config.displayName} - ${d/1e3} second data update timeout reached for `,c=`[Widget] ${this.widgetProperties.config.displayName} - Retrying in ${p/1e3} secondes`,m=this.buildObserver(e,t),f=this.dataStream.find(S=>S.pathName===e);if(f===void 0)return;let y;i=="number"?this.widgetProperties.config.enableTimeout?y=f.observable.pipe(pi(S=>({data:{value:this.unitsService.convertToUnit(r,S.data.value),timestamp:S.data.timestamp},state:S.state})),hn(l),or({each:d,with:()=>ar(()=>{console.log(s+o),this.DataService.timeoutPathObservable(o,i)})}),lr(S=>S.pipe(dr(()=>console.log(c)),sr(()=>rr(p))))):y=f.observable.pipe(pi(S=>({data:{value:this.unitsService.convertToUnit(r,S.data.value),timestamp:S.data.timestamp},state:S.state})),hn(l)):i=="string"||i=="Date"?this.widgetProperties.config.enableTimeout?y=f.observable.pipe(hn(l),or({each:d,with:()=>ar(()=>{console.log(s+o),this.DataService.timeoutPathObservable(o,i)})}),lr(S=>S.pipe(dr(()=>console.log(c)),sr(()=>rr(p))))):y=f.observable.pipe(hn(l)):y=f.observable.pipe(hn(l)),this.dataSubscriptions===void 0?this.dataSubscriptions=y.subscribe(m):this.dataSubscriptions.add(y.subscribe(m))}unsubscribeDataStream(){this.dataSubscriptions?.unsubscribe(),this.dataSubscriptions=void 0,this.dataStream=void 0}buildObserver(e,t){return{next:o=>t(o),error:o=>console.error("[Widget] Observer got an error: "+o),complete:()=>console.log("[Widget] Observer got a complete notification: "+e)}}formatWidgetNumberValue(e){return typeof e!="number"||e==null?"":(e=Math.min(Math.max(e,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper),e.toFixed(this.widgetProperties.config.numDecimal))}destroyDataStreams(){this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.zones$.complete()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["ng-component"]],inputs:{widgetProperties:"widgetProperties"},features:[ce],decls:0,vars:0,template:function(t,i){},encapsulation:2})}return a})();function am(a,n){if(a&1){let e=Y();v(0,"button",0),I("click",function(){P(e);let i=U();return O(i.clickAction("cancel"))}),v(1,"mat-icon",1),b(2,"close"),_(),v(3,"span"),b(4,"Close"),_()()}}var Id=(()=>{class a{_bottomSheetRef=E(nd);data=E(id);showCancel=!!(this.data&&this.data.showCancel);clickAction(e){this._bottomSheetRef.dismiss(e)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-host-bottom-sheet"]],decls:12,vars:1,consts:[["mat-list-item","",3,"click"],["matListItemIcon",""],["mat-list-item",""]],template:function(t,i){t&1&&(v(0,"mat-action-list")(1,"button",0),I("click",function(){return i.clickAction("duplicate")}),v(2,"mat-icon",1),b(3,"content_copy"),_(),v(4,"span"),b(5,"Duplicate"),_()(),v(6,"button",0),I("click",function(){return i.clickAction("delete")}),v(7,"mat-icon",1),b(8,"delete_forever"),_(),v(9,"span"),b(10,"Delete"),_()(),De(11,am,5,0,"button",2),_()),t&2&&(k(11),Ae(i.showCancel?11:-1))},dependencies:[Qa,ld,Ka,sd,pt,bt],encapsulation:2})}return a})();var om=["*"],Ce=(()=>{class a{config=ji.required();id=B.required();_dialog=E(Cn);_dashboard=E(nt);_bottomSheet=E(ad);constructor(){}openWidgetOptions(e){if(e.stopPropagation(),!this._dashboard.isDashboardStatic()){if(!this.config())return;this._dialog.openWidgetOptions({title:"Widget Options",config:this.config(),confirmBtnText:"Save",cancelBtnText:"Cancel"}).afterClosed().subscribe(t=>{t&&this.config.set(t)})}}openBottomSheet(e){if(e.stopPropagation(),!this._dashboard.isDashboardStatic()){let t=typeof navigator<"u"&&/Linux/.test(navigator.platform)&&/Firefox/.test(navigator.userAgent);this._bottomSheet.open(Id,t?{disableClose:!0,data:{showCancel:!0}}:{}).afterDismissed().subscribe(o=>{switch(o){case"delete":this._dashboard.deleteWidget(this.id());break;case"duplicate":this._dashboard.duplicateWidget(this.id());break;default:break}})}}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-host"]],inputs:{config:[1,"config"],id:[1,"id"]},outputs:{config:"configChange"},ngContentSelectors:om,decls:2,vars:2,consts:[["kipGestures","","appearance","raised",1,"widget-container","kip-widget-card-colors",3,"doubletap","press"]],template:function(t,i){t&1&&(sa(),v(0,"mat-card",0),I("doubletap",function(r){return i.openWidgetOptions(r)})("press",function(r){return i.openBottomSheet(r)}),gn(1),_()),t&2&&we("border",i._dashboard.isDashboardStatic()?"":"1px dashed var(--mat-sys-outline)")},dependencies:[td,ed,od,bn],styles:["[_nghost-%COMP%]{width:100%;height:100%;display:block}.widget-container[_ngcontent-%COMP%]{display:block;width:100%;height:100%;margin:0;padding:0}.kip-widget-card-colors[_ngcontent-%COMP%]{background-color:var(--kip-widget-card-background-color)}"]})}return a})();var Nd=(()=>{let n=class n{constructor(t){this.ngZone=t,this.count=0,this.elementMap=new Map,this.observer=null}ngOnDestroy(){this.observer&&this.clearObserver()}observe(t,i,o){this.observer||(this.observer=new ResizeObserver(r=>{for(let l of r){let d=this.elementMap.get(l.target);d&&this.ngZone.run(()=>{d(l)})}})),o==="border-box"?this.observer.observe(t,{box:"border-box"}):this.observer.observe(t),this.count+=1,this.elementMap.set(t,i)}unobserve(t){this.elementMap.get(t)&&this.observer&&(this.observer.unobserve(t),this.elementMap.delete(t),this.count-=1,this.count===0&&this.clearObserver())}clearObserver(){this.observer&&this.observer.disconnect(),this.observer=null,this.count=0,this.elementMap=new Map}};n.\u0275fac=function(i){return new(i||n)(un(Je))},n.\u0275prov=st({token:n,factory:n.\u0275fac});let a=n;return a})(),Ot=(()=>{let n=class n{constructor(t,i,o){this.elementRef=t,this.ngxResizeObserverService=i,this.ngZone=o,this.resizeBoxModel="",this.onResize=new _t,this.observing=!1,oa(()=>{this.observe()})}ngOnChanges(t){this.observing&&(t.resizeBoxModel||t.onResize)&&(this.unobserve(),this.observe())}ngOnDestroy(){this.unobserve()}observe(){this.observing||(this.ngxResizeObserverService.observe(this.elementRef.nativeElement,t=>{this.ngZone.run(()=>{this.onResize.emit(t)})},this.resizeBoxModel),this.observing=!0)}unobserve(){this.observing&&(this.ngxResizeObserverService.unobserve(this.elementRef.nativeElement),this.observing=!1)}};n.\u0275fac=function(i){return new(i||n)(Et(Ye),Et(Nd),Et(Je))},n.\u0275dir=si({type:n,selectors:[["","onResize",""]],inputs:{resizeBoxModel:"resizeBoxModel"},outputs:{onResize:"onResize"},features:[pn]});let a=n;return a})(),it=(()=>{let n=class n{};n.\u0275fac=function(i){return new(i||n)},n.\u0275mod=ri({type:n}),n.\u0275inj=ai({providers:[Nd]});let a=n;return a})();function he(a,n){return{contrast:{color:n.contrast,dim:n.contrastDim,dimmer:n.contrastDimmer},blue:{color:n.blue,dim:n.blueDim,dimmer:n.blueDimmer},green:{color:n.green,dim:n.greenDim,dimmer:n.greenDimmer},pink:{color:n.pink,dim:n.pinkDim,dimmer:n.pinkDimmer},orange:{color:n.orange,dim:n.orangeDim,dimmer:n.orangeDimmer},purple:{color:n.purple,dim:n.purpleDim,dimmer:n.purpleDimmer},yellow:{color:n.yellow,dim:n.yellowDim,dimmer:n.yellowDimmer},grey:{color:n.grey,dim:n.greyDim,dimmer:n.greyDimmer}}[a]}var rm=["canvasMainRef"],Wd=(()=>{class a extends Se{canvasMainRef=ie.required("canvasMainRef");canvasElement;canvasCtx;titleBitmap=null;titleBitmapText=null;canvas=E(tt);cssWidth=0;cssHeight=0;dataValue=null;labelColor=K(void 0);valueColor=void 0;isDestroyed=!1;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{stringPath:{description:"String Data",path:null,source:null,pathType:"string",isPathConfigurable:!0,sampleTime:500}},color:"contrast",enableTimeout:!1,dataTimeout:5},ne(()=>{this.theme()&&(this.setColors(),this.drawWidget())})}ngOnInit(){this.validateConfig()}ngAfterViewInit(){this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.drawWidget()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),!this.isDestroyed&&this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.setColors(),this.observeDataStream("stringPath",e=>{this.dataValue=e.data.value,this.drawWidget()})}setColors(){this.labelColor.set(he(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=he(this.widgetProperties.config.color,this.theme()).color}updateConfig(e){this.widgetProperties.config=e,this.startWidget(),this.drawWidget()}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams();try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}drawWidget(){if(!this.canvasCtx)return;let e=Math.floor(this.cssHeight*.1);(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==this.widgetProperties.config.displayName)&&(this.titleBitmap=this.canvas.createTitleBitmap(this.widgetProperties.config.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=this.widgetProperties.config.displayName),this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.titleBitmap.width>0&&this.titleBitmap.height>0&&this.canvasCtx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight);let t=this.dataValue===null?"--":this.dataValue,i=this.canvas.EDGE_BUFFER||10,o=Math.max(0,this.cssHeight-e-2*i),r=Math.max(0,Math.floor(this.cssWidth-2*i)),l=Math.max(0,Math.floor(o)),d=Math.floor(this.cssWidth/2),p=Math.floor(e+i+o/2);this.canvas.drawText(this.canvasCtx,t,d,p,r,l,"bold",this.valueColor,"center","middle")}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-text"]],viewQuery:function(t,i){t&1&&te(i.canvasMainRef,rm,5),t&2&&be()},features:[ce],decls:3,vars:2,consts:[["canvasMainRef",""],[1,"text-wrapper",3,"configChange","config","id"],[1,"text-canvas"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),G(1,"canvas",2,0),_()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid))},dependencies:[Ce,it],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.text-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.text-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;display:block}"]})}return a})();var sm=["widgetDataChart"];wt.register(On,Pn,En,Dn,Mn,An,md);var uo=(()=>{class a{theme=B.required();color=null;dataPath=null;dataSource=null;convertUnitTo=null;numDecimal=null;yScaleMin=null;yScaleMax=null;inverseYAxis=!1;verticalChart=null;datasetUUID=null;unitsService=E(hi);dsService=E(At);ngZone=E(Je);canvasService=E(tt);widgetDataChart=ie("widgetDataChart",{read:Ye});lineChartData={datasets:[]};lineChartOptions={parsing:!1,datasets:{line:{pointRadius:0,pointHoverRadius:0,tension:.4}},animations:{tension:{easing:"easeInOutCubic"}}};lineChartType="line";chart;dsServiceSub=null;datasetConfig=null;dataSourceInfo=null;config={datasetAverageArray:"sma",showAverageData:!1,trackAgainstAverage:!1,startScaleAtZero:!1,yScaleSuggestedMin:null,yScaleSuggestedMax:null,enableMinMaxScaleLimit:!1};constructor(){ne(()=>{this.theme()&&this.datasetConfig&&(this.setChartOptions(),this.setDatasetsColors())})}startChart(){this.datasetUUID&&(this.datasetConfig=this.dsService.getDatasetConfig(this.datasetUUID),this.dataSourceInfo=this.dsService.getDataSourceInfo(this.datasetUUID),this.datasetConfig&&(this.setChartOptions(),this.createDatasets(),this.chart?this.chart.update():this.chart=new wt(this.widgetDataChart().nativeElement.getContext("2d"),{type:this.lineChartType,data:this.lineChartData,options:this.lineChartOptions}),this.startStreaming()))}setChartOptions(){this.lineChartOptions.maintainAspectRatio=!1,this.lineChartOptions.animation=!1,this.lineChartOptions.indexAxis=this.verticalChart?"y":"x",this.verticalChart?this.lineChartOptions.scales={x:{display:!1,position:"right",suggestedMin:this.config.enableMinMaxScaleLimit?null:this.yScaleMin,suggestedMax:this.config.enableMinMaxScaleLimit?null:this.yScaleMax,min:this.config.enableMinMaxScaleLimit?this.yScaleMin:null,max:this.config.enableMinMaxScaleLimit?this.yScaleMax:null,beginAtZero:this.config.startScaleAtZero,reverse:this.inverseYAxis,title:{display:!1,text:"Value Axis",align:"center"},ticks:{maxTicksLimit:8,precision:this.numDecimal,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!1,color:this.theme().contrastDimmer}},y:{type:"time",display:!1,title:{display:!1},time:{unit:this.datasetConfig.timeScaleFormat,minUnit:"second",round:"second",displayFormats:{hour:"k:mm''",minute:"mm''",second:'ss"',millisecond:"SSS"}},ticks:{autoSkip:!1,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!1,color:this.theme().contrastDimmer}}}:this.lineChartOptions.scales={x:{type:"time",display:!1,title:{display:!1},time:{unit:this.datasetConfig.timeScaleFormat,minUnit:"second",round:"second",displayFormats:{hour:"k:mm''",minute:"mm''",second:'ss"',millisecond:"SSS"}},ticks:{autoSkip:!1,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!1,color:this.theme().contrastDimmer}},y:{display:!1,position:"right",suggestedMin:this.config.enableMinMaxScaleLimit?null:this.yScaleMin,suggestedMax:this.config.enableMinMaxScaleLimit?null:this.yScaleMax,min:this.config.enableMinMaxScaleLimit?this.yScaleMin:null,max:this.config.enableMinMaxScaleLimit?this.yScaleMax:null,beginAtZero:this.config.startScaleAtZero,reverse:this.inverseYAxis,title:{display:!1,text:"Value Axis",align:"center"},ticks:{maxTicksLimit:8,precision:this.numDecimal,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!1,color:this.theme().contrastDimmer}}},this.lineChartOptions.plugins={legend:{display:!1}}}createDatasets(){let e=this.lineChartOptions.scales?.y?.reverse?"start":!0;this.lineChartData.datasets=[],this.lineChartData.datasets.push({label:"Value",data:[],order:0,parsing:!1,tension:.4,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:3,fill:e}),this.lineChartData.datasets.push({label:"Average",data:[],order:1,parsing:!1,tension:.4,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:3,fill:e}),this.setDatasetsColors()}setDatasetsColors(){this.lineChartData.datasets.forEach(e=>{e.borderColor=this.getThemeColors().averageLine,e.backgroundColor=this.getThemeColors().averageFill})}getThemeColors(){let e=this.color,t={valueLine:null,valueFill:null,averageLine:null,averageFill:null,averageChartLine:null,chartLabel:null,chartValue:null};switch(e){case"contrast":this.config.trackAgainstAverage?(t.valueLine=this.theme().contrastDimmer,t.valueFill=this.theme().contrastDimmer,t.averageLine=this.theme().contrast,t.averageFill=this.theme().contrast,t.chartValue=t.averageLine):(t.valueLine=this.theme().contrast,t.valueFill=this.theme().contrast,t.averageLine=this.theme().contrastDimmer,t.averageFill=this.theme().contrastDimmer,t.chartValue=this.theme().contrast),t.averageChartLine=this.theme().contrastDim,t.chartLabel=this.theme().contrastDim;break;case"blue":this.config.trackAgainstAverage?(t.valueLine=this.theme().blueDimmer,t.valueFill=this.theme().blueDimmer,t.averageLine=this.theme().blue,t.averageFill=this.theme().blue,t.chartValue=t.averageLine):(t.valueLine=this.theme().blue,t.valueFill=this.theme().blue,t.averageLine=this.theme().blueDimmer,t.averageFill=this.theme().blueDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().blueDim,t.chartLabel=this.theme().contrastDim;break;case"green":this.config.trackAgainstAverage?(t.valueLine=this.theme().greenDimmer,t.valueFill=this.theme().greenDimmer,t.averageLine=this.theme().green,t.averageFill=this.theme().green,t.chartValue=t.averageLine):(t.valueLine=this.theme().green,t.valueFill=this.theme().green,t.averageLine=this.theme().greenDimmer,t.averageFill=this.theme().greenDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().greenDim,t.chartLabel=this.theme().contrastDim;break;case"pink":this.config.trackAgainstAverage?(t.valueLine=this.theme().pinkDimmer,t.valueFill=this.theme().pinkDimmer,t.averageLine=this.theme().pink,t.averageFill=this.theme().pink,t.chartValue=t.averageLine):(t.valueLine=this.theme().pink,t.valueFill=this.theme().pink,t.averageLine=this.theme().pinkDimmer,t.averageFill=this.theme().pinkDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().pinkDim,t.chartLabel=this.theme().contrastDim;break;case"orange":this.config.trackAgainstAverage?(t.valueLine=this.theme().orangeDimmer,t.valueFill=this.theme().orangeDimmer,t.averageLine=this.theme().orange,t.averageFill=this.theme().orange,t.chartValue=t.averageLine):(t.valueLine=this.theme().orange,t.valueFill=this.theme().orange,t.averageLine=this.theme().orangeDimmer,t.averageFill=this.theme().orangeDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().orangeDim,t.chartLabel=this.theme().contrastDim;break;case"purple":this.config.trackAgainstAverage?(t.valueLine=this.theme().purpleDimmer,t.valueFill=this.theme().purpleDimmer,t.averageLine=this.theme().purple,t.averageFill=this.theme().purple,t.chartValue=t.averageLine):(t.valueLine=this.theme().purple,t.valueFill=this.theme().purple,t.averageLine=this.theme().purpleDimmer,t.averageFill=this.theme().purpleDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().purpleDim,t.chartLabel=this.theme().contrastDim;break;case"grey":this.config.trackAgainstAverage?(t.valueLine=this.theme().greyDimmer,t.valueFill=this.theme().greyDimmer,t.averageLine=this.theme().grey,t.averageFill=this.theme().grey,t.chartValue=t.averageLine):(t.valueLine=this.theme().grey,t.valueFill=this.theme().grey,t.averageLine=this.theme().greyDimmer,t.averageFill=this.theme().greyDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().greyDim,t.chartLabel=this.theme().contrastDim;break;case"yellow":this.config.trackAgainstAverage?(t.valueLine=this.theme().yellowDimmer,t.valueFill=this.theme().yellowDimmer,t.averageLine=this.theme().yellow,t.averageFill=this.theme().yellow,t.chartValue=t.averageLine):(t.valueLine=this.theme().yellow,t.valueFill=this.theme().yellow,t.averageLine=this.theme().yellowDimmer,t.averageFill=this.theme().yellowDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().yellowDim,t.chartLabel=this.theme().contrastDim;break}return t}startStreaming(){this.dsServiceSub?.unsubscribe();let e=this.dsService.getDatasetBatchThenLiveObservable(this.datasetUUID);this.dsServiceSub=e?.subscribe(t=>{if(Array.isArray(t)){let i=this.transformDatasetRows(t,0);if(this.chart.data.datasets[0].data.push(...i),this.config.showAverageData){let o=this.transformDatasetRows(t,this.config.datasetAverageArray);this.chart.data.datasets[1].data.push(...o)}}else{let i=this.transformDatasetRows([t],0)[0];if(this.chart.data.datasets[0].data.push(i),this.chart.data.datasets[0].data.length>this.dataSourceInfo.maxDataPoints&&this.chart.data.datasets[0].data.shift(),this.config.showAverageData){let o=this.transformDatasetRows([t],this.config.datasetAverageArray)[0];this.chart.data.datasets[1].data.push(o),this.chart.data.datasets[1].data.length>this.dataSourceInfo.maxDataPoints&&this.chart.data.datasets[1].data.shift()}}this.ngZone.runOutsideAngular(()=>{this.chart?.update("quiet")})})}transformDatasetRows(e,t){let i=l=>this.unitsService.convertToUnit(this.convertUnitTo,l),o=this.verticalChart,r=this.config.datasetAverageArray;return e.map(l=>{if(o){if(t===0)return{x:i(l.data.value),y:l.timestamp};{let d={sma:l.data.sma,ema:l.data.ema,dema:l.data.doubleEma,avg:l.data.lastAverage};return{x:i(d[r]),y:l.timestamp}}}else{if(t===0)return{x:l.timestamp,y:i(l.data.value)};{let d={sma:l.data.sma,ema:l.data.ema,dema:l.data.doubleEma,avg:l.data.lastAverage};return{x:l.timestamp,y:i(d[r])}}}})}ngOnDestroy(){this.dsServiceSub?.unsubscribe(),this.chart?.destroy();let e=this.widgetDataChart?.()?.nativeElement;this.canvasService.releaseCanvas(e,{clear:!0,removeFromDom:!0})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["minichart"]],viewQuery:function(t,i){t&1&&te(i.widgetDataChart,sm,5,Ye),t&2&&be()},inputs:{theme:[1,"theme"]},decls:2,vars:0,consts:[["widgetDataChart",""],[2,"z-index","inherit"]],template:function(t,i){t&1&&Q(0,"canvas",1,0)},styles:["[_nghost-%COMP%]{display:block;width:100%;height:calc(90% - 10px);position:absolute;bottom:0;border-radius:17px;overflow:hidden}"]})}return a})();var lm=["canvasMainRef"];function dm(a,n){if(a&1&&G(0,"minichart",2),a&2){let e=U();z("theme",e.theme())}}var mo=(()=>{class a extends Se{miniChart=ie(uo);canvasMainRef=ie.required("canvasMainRef");canvasElement;canvasCtx;cssWidth=0;cssHeight=0;backgroundBitmap=null;backgroundBitmapText=null;showMiniChart=K(!1);canvas=E(tt);_dataset=E(At);dataValue=null;maxValue=null;minValue=null;labelColor=K(void 0);valueColor=void 0;valueStateColor=void 0;maxValueTextWidth=0;maxValueTextHeight=0;maxMinMaxTextWidth=0;maxMinMaxTextHeight=0;flashInterval=null;isDestroyed=!1;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{numericPath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,convertUnitTo:"unitless",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500}},showMax:!1,showMin:!1,numDecimal:1,showMiniChart:!1,yScaleMin:0,yScaleMax:10,inverseYAxis:!1,verticalChart:!1,color:"contrast",enableTimeout:!1,dataTimeout:5,ignoreZones:!1},ne(()=>{this.theme()&&(this.setColors(),this.drawWidget())})}ngOnInit(){this.validateConfig(),this.showMiniChart.set(this.widgetProperties.config.showMiniChart)}ngAfterViewInit(){this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.calculateMaxMinTextDimensions(),this.drawWidget()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.calculateMaxMinTextDimensions(),!this.isDestroyed&&(this.manageDatasetAndChart(),this.showMiniChart()&&this.miniChart()&&this.setMiniChart(),this.startWidget())}calculateMaxMinTextDimensions(){this.maxValueTextWidth=Math.floor(this.cssWidth*.85),this.maxValueTextHeight=Math.floor(this.cssHeight*.7),this.maxMinMaxTextWidth=Math.floor(this.cssWidth*.57),this.maxMinMaxTextHeight=Math.floor(this.cssHeight*.1)}startWidget(){this.showMiniChart()&&this.miniChart()&&this.miniChart().startChart(),this.unsubscribeDataStream(),this.minValue=null,this.maxValue=null,this.dataValue=null,this.setColors(),this.observeDataStream("numericPath",e=>{if(this.dataValue=e.data.value,this.minValue===null||this.dataValue<this.minValue?this.minValue=this.dataValue:(this.maxValue===null||this.dataValue>this.maxValue)&&(this.maxValue=this.dataValue),!this.widgetProperties.config.ignoreZones)switch(e.state){case J.Alarm:this.valueStateColor=this.theme().zoneAlarm;break;case J.Warn:this.valueStateColor=this.theme().zoneWarn;break;case J.Alert:this.valueStateColor=this.theme().zoneAlert;break;default:this.valueStateColor=this.valueColor;break}this.drawWidget()})}updateConfig(e){this.widgetProperties.config=e,this.manageDatasetAndChart(),setTimeout(()=>{this.showMiniChart()&&this.miniChart()&&this.setMiniChart(),this.startWidget(),this.drawWidget()})}manageDatasetAndChart(){let e=this.widgetProperties.config.paths.numericPath;!e||!e.path||!e.source||(this.widgetProperties.config.showMiniChart?this._dataset.list().filter(t=>t.uuid===this.widgetProperties.uuid).length===0&&this._dataset.create(e.path,e.source,"minute",.2,`simple-chart-${this.widgetProperties.uuid}`,!0,!1,this.widgetProperties.uuid):this._dataset.list().filter(t=>t.uuid===this.widgetProperties.uuid).forEach(t=>this._dataset.remove(t.uuid)),this.showMiniChart.set(this.widgetProperties.config.showMiniChart))}setMiniChart(){this.miniChart().dataPath=this.widgetProperties.config.paths.numericPath.path,this.miniChart().dataSource=this.widgetProperties.config.paths.numericPath.source,this.miniChart().color=this.widgetProperties.config.color,this.miniChart().convertUnitTo=this.widgetProperties.config.paths.numericPath.convertUnitTo,this.miniChart().numDecimal=this.widgetProperties.config.numDecimal,this.miniChart().yScaleMin=this.widgetProperties.config.yScaleMin,this.miniChart().yScaleMax=this.widgetProperties.config.yScaleMax,this.miniChart().inverseYAxis=this.widgetProperties.config.inverseYAxis,this.miniChart().verticalChart=this.widgetProperties.config.verticalChart,this.miniChart().datasetUUID=this.widgetProperties.uuid}setColors(){this.labelColor.set(he(this.widgetProperties.config.color,this.theme()).dim),this.valueStateColor=this.valueColor=he(this.widgetProperties.config.color,this.theme()).color}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams(),this.flashInterval&&(clearInterval(this.flashInterval),this.flashInterval=null),this._dataset.removeIfExists(this.widgetProperties?.uuid,!0);try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}drawWidget(){if(!this.canvasCtx)return;let e=this.widgetProperties.config.paths.numericPath.convertUnitTo,t=10*this.canvas.scaleFactor,i=5*this.canvas.scaleFactor;(!this.backgroundBitmap||this.backgroundBitmap.width!==this.canvasElement.width||this.backgroundBitmap.height!==this.canvasElement.height||this.backgroundBitmapText!==this.widgetProperties.config.displayName+"|"+e)&&(this.backgroundBitmap=this.canvas.renderStaticToBitmap(this.canvasCtx,this.cssWidth,this.cssHeight,o=>{this.canvas.drawTitleInternal(o,this.widgetProperties.config.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight,.1),["unitless","percent","ratio","latitudeSec","latitudeMin","longitudeSec","longitudeMin"].includes(e)||this.canvas.drawText(o,e,this.cssWidth-t,this.cssHeight-i,Math.floor(this.cssWidth*.25),Math.floor(this.cssHeight*.15),"bold",this.valueColor,"end","bottom")}),this.backgroundBitmapText=this.widgetProperties.config.displayName+"|"+e),this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.backgroundBitmap&&this.backgroundBitmap.width>0&&this.backgroundBitmap.height>0&&this.canvasCtx.drawImage(this.backgroundBitmap,0,0,this.cssWidth,this.cssHeight),this.drawValue(),(this.widgetProperties.config.showMax||this.widgetProperties.config.showMin)&&this.drawMinMax()}drawValue(){let e=this.getValueText();this.canvas.drawText(this.canvasCtx,e,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.15),this.maxValueTextWidth,this.maxValueTextHeight,"bold",this.valueStateColor)}getValueText(){if(this.dataValue===null)return"--";let e=this.widgetProperties.config.paths.numericPath.convertUnitTo;return["latitudeSec","latitudeMin","longitudeSec","longitudeMin","D HH:MM:SS"].includes(e)?this.dataValue.toString():this.applyDecorations(this.dataValue.toFixed(this.widgetProperties.config.numDecimal))}drawMinMax(){if(!this.widgetProperties.config.showMin&&!this.widgetProperties.config.showMax)return;let e="";this.widgetProperties.config.showMin&&(e=this.minValue!=null?` Min: ${this.applyDecorations(this.minValue.toFixed(this.widgetProperties.config.numDecimal))}`:" Min: --"),this.widgetProperties.config.showMax&&(e+=this.maxValue!=null?` Max: ${this.applyDecorations(this.maxValue.toFixed(this.widgetProperties.config.numDecimal))}`:" Max: --"),e=e.trim();let t=10*this.canvas.scaleFactor,i=5*this.canvas.scaleFactor,o=this.cssHeight;this.canvas.drawText(this.canvasCtx,e,t,Math.floor(o-i),this.maxMinMaxTextWidth,this.maxMinMaxTextHeight,"normal",this.valueColor,"start","bottom")}applyDecorations(e){switch(this.widgetProperties.config.paths.numericPath.convertUnitTo){case"percent":case"percentraw":e+="%";break;default:break}return e}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-numeric"]],viewQuery:function(t,i){t&1&&(te(i.miniChart,uo,5),te(i.canvasMainRef,lm,5)),t&2&&be(2)},features:[ce],decls:4,vars:3,consts:[["canvasMainRef",""],[1,"numeric-wrapper",3,"configChange","config","id"],[3,"theme"],[1,"numeric-canvas"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),De(1,dm,1,1,"minichart",2),G(2,"canvas",3,0),_()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),Ae(i.showMiniChart()?1:-1))},dependencies:[Ce,it,uo],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.numeric-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.numeric-canvas[_ngcontent-%COMP%]{position:relative;width:100%!important;height:100%!important;display:block}"]})}return a})();var cm=["canvasMainRef"],po=(()=>{class a extends Se{canvasMainRef=ie.required("canvasMainRef");canvasElement;canvasCtx;titleBitmap=null;titleBitmapText=null;canvas=E(tt);cssWidth=0;cssHeight=0;dataValue=null;_timeZoneGTM="";isDestroyed=!1;labelColor=K(void 0);valueColor=void 0;maxTextWidth=0;maxTextHeight=0;constructor(){super(),this.defaultConfig={displayName:"Time Label",filterSelfPaths:!0,paths:{gaugePath:{description:"String Data",path:null,source:null,pathType:"Date",isPathConfigurable:!0,sampleTime:500}},dateFormat:"dd/MM/yyyy HH:mm:ss",dateTimezone:"Atlantic/Azores",color:"contrast",enableTimeout:!1,dataTimeout:5},ne(()=>{this.theme()&&(this.setColors(),this.drawWidget())})}ngOnInit(){this.validateConfig()}ngAfterViewInit(){this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.maxTextWidth=Math.floor(this.cssWidth*.85),this.maxTextHeight=Math.floor(this.cssHeight*.7),this.drawWidget()}}),!this.isDestroyed&&(this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.maxTextWidth=Math.floor(this.canvasElement.width*.85),this.maxTextHeight=Math.floor(this.canvasElement.height*.7),this.startWidget())}startWidget(){this._timeZoneGTM=this.getGMTOffset(this.widgetProperties.config.dateTimezone),this.unsubscribeDataStream(),this.setColors(),this.observeDataStream("gaugePath",e=>{this.dataValue=e.data.value,this.drawWidget()})}updateConfig(e){this.widgetProperties.config=e,this.startWidget(),this.drawWidget()}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams();try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}getGMTOffset(e){try{if(e==="System Timezone -")return"";let o=new Intl.DateTimeFormat("en-US",{timeZone:e,timeZoneName:"short"}).formatToParts(new Date).find(r=>r.type==="timeZoneName");return o?o.value:"GMT"}catch(t){return console.error(`Error getting GMT offset for timezone "${e}":`,t),"GMT"}}setColors(){this.labelColor.set(he(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=he(this.widgetProperties.config.color,this.theme()).color}drawWidget(){if(!this.canvasCtx)return;(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==this.widgetProperties.config.displayName)&&(this.titleBitmap=this.canvas.createTitleBitmap(this.widgetProperties.config.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=this.widgetProperties.config.displayName),this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.titleBitmap.width>0&&this.titleBitmap.height>0&&this.canvasCtx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight);let e;if(isNaN(Date.parse(this.dataValue)))e="--";else try{e=ul(this.dataValue,this.widgetProperties.config.dateFormat,"en-US",this._timeZoneGTM)}catch(t){e=t,console.log("[Date Time Widget]: "+t)}this.canvas.drawText(this.canvasCtx,e,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.15),this.maxTextWidth,this.maxTextHeight,"bold",this.valueColor)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-datetime"]],viewQuery:function(t,i){t&1&&te(i.canvasMainRef,cm,5),t&2&&be()},features:[ce],decls:3,vars:2,consts:[["canvasMainRef",""],[1,"date-wrapper",3,"configChange","config","id"],[1,"date-canvas"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),G(1,"canvas",2,0),_()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid))},dependencies:[Ce,it],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}.date-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;display:block}.date-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}"]})}return a})();var Mr={200:"The request was successfully.",202:"Request accepted and pending completion.",400:"Something is wrong with the client's request.",401:"Login failed. Your User ID or Password is incorrect.",403:"DENIED: Authorization with R/W or Admin permission level is required to send commands. Configure Sign In credential.",405:"The server does not support the request.",500:"The request failed.",502:"Something went wrong carrying out the request on the server.",504:"Timeout on the server side trying to carry out the request."},Gt=(()=>{class a{signalKDeltaService=E(Ti);appSettingsService=E(Mt);appService=E(Dt);auth=E(Ft);requestStatus$=new Qt;requests=[];constructor(){this.signalKDeltaService.subscribeRequestUpdates().pipe(mt()).subscribe(e=>{this.updateRequest(e)})}requestDeviceAccessToken(){let e=di.create(),t={requestId:e,accessRequest:{clientId:this.appSettingsService.KipUUID,description:"KIP Instrument MDF",permissions:"admin"}};console.log("[Request Service] Requesting Device Authorization Token"),this.signalKDeltaService.publishDelta(t);let i={requestId:e,state:null,statusCode:null};return this.requests.push(i),e}requestUserLogin(e,t){let i=di.create(),o={requestId:i,login:{username:e,password:t}};console.log("[Request Service] Requesting User Login"),this.signalKDeltaService.publishDelta(o);let r={requestId:i,state:null,statusCode:null};return this.requests.push(r),i}putRequest(e,t,i){if(typeof t>"u")return console.error("[Request Service] Undefined value for PUT request"),null;if(!e)return console.error("[Request Service] Path is required for PUT request"),null;let o=di.create(),r=e.replace(/^(self\.)/,""),d={context:"vessels.self",requestId:o,put:{path:r,value:t}};this.signalKDeltaService.publishDelta(d);let p={requestId:o,state:null,statusCode:null,widgetUUID:i};return this.requests.push(p),o}updateRequest(e){let t=this.requests.findIndex(i=>i.requestId==e.requestId);if(t>-1){this.requests[t].state=e.state,this.requests[t].statusCode=e.statusCode,this.requests[t].message=e.message;let i=Mr[e.statusCode];if(typeof i<"u"&&(this.requests[t].statusCode==200||this.requests[t].statusCode==202||this.requests[t].statusCode==400||this.requests[t].statusCode==401||this.requests[t].statusCode==403||this.requests[t].statusCode==405)){if(this.requests[t].statusCodeDescription=i,this.requests[t].statusCode==202){console.log("[Request Service] Async 202 response received");return}this.requests[t].statusCode==400&&(this.appService.sendSnackbarNotification(this.requests[t].message),console.log("[Request Service] "+this.requests[t].message)),this.requests[t].statusCode==403&&console.warn("[Request Service] Status Code: "+this.requests[t].statusCode+" - "+this.requests[t].statusCodeDescription),this.requests[t].statusCode==405&&console.error("[Request Service] Status Code: "+this.requests[t].statusCode+" - "+this.requests[t].message),e.accessRequest!==void 0&&e.accessRequest.token!==void 0?(this.appService.sendSnackbarNotification(e.accessRequest.permission+": Device Access Token received from server."),console.log(`[Request Service] ${e.accessRequest.permission}: Device Access Token received`),this.auth.setDeviceAccessToken(e.accessRequest.token)):e.login!==void 0&&e.login.token}else this.appService.sendSnackbarNotification("ERROR: Unknown Request Status Code received: "+this.requests[t].statusCode+" - "+Mr[this.requests[t].statusCode]+" - "+this.requests[t].message),console.error("[Request Service] Unknown Request Status Code received: "+this.requests[t].statusCode+" - "+Mr[this.requests[t].statusCode]+" - "+this.requests[t].message);try{this.requestStatus$.next(this.requests[t]),this.requests.splice(t,1)}catch(o){this.requestStatus$.error(o),console.error("[Request Service] "+o),this.requests=[]}}else this.appService.sendSnackbarNotification(`ERROR: A request message that contains an unknown Request ID was received. Request Delta:
4
4
  `+JSON.stringify(e)),console.error(`[Request Service] A Request message that contains an unknown Request ID was received. from delta:
@@ -44,7 +44,7 @@ Note: ".grid-stack" is required for proper CSS styling and drag/drop, and is the
44
44
  window.parent.postMessage({ type:'keydown', keyEventData:{ key:event.key, ctrlKey:event.ctrlKey, shiftKey:event.shiftKey, instanceId }}, '*');
45
45
  }
46
46
  });
47
- })();`}var ag=["freeboardSkIframe"];function og(a,n){a&1&&G(0,"div",3)}var Fc=(()=>{class a extends Se{appSettings=E(Mt);auth=E(Ft);_dashboard=E(nt);iframe=ie.required("freeboardSkIframe");widgetUrl=null;_authTokenSubscription=null;dashboard=E(nt);constructor(){super()}ngOnInit(){let e=null;this._authTokenSubscription=this.auth.authToken$.subscribe(t=>{e=t?.token}),this.widgetUrl=e?`${this.appSettings.signalkUrl.url}/@signalk/freeboard-sk/?token=${e}`:`${this.appSettings.signalkUrl.url}/@signalk/freeboard-sk/`,window.addEventListener("message",this.handleIframeGesture)}ngAfterViewInit(){this.iframe&&(this.iframe().nativeElement.onload=()=>this.injectSwipeScript())}startWidget(){}updateConfig(){}handleIframeGesture=e=>{if(e.data){if(e.data.gesture&&e.data.eventData.instanceId===this.widgetProperties.uuid)switch(e.data.gesture){case"swipeup":this.dashboard.isDashboardStatic()&&this.dashboard.navigateToPreviousDashboard();break;case"swipedown":this.dashboard.isDashboardStatic()&&this.dashboard.navigateToNextDashboard();break;case"swipeleft":{let t=new Event("openLeftSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(t);break}case"swiperight":{let t=new Event("openRightSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(t);break}default:break}if(e.data.type==="keydown"&&e.data.keyEventData.instanceId===this.widgetProperties.uuid){let{key:t,ctrlKey:i,shiftKey:o}=e.data.keyEventData,r=new KeyboardEvent("keydown",{key:t,ctrlKey:i,shiftKey:o,bubbles:!0,cancelable:!0});document.dispatchEvent(r)}}};injectSwipeScript(){let e=this.iframe().nativeElement.contentWindow,t=this.iframe().nativeElement.contentDocument;if(!t||!e){console.error("[FSK Widget] Iframe contentDocument or contentWindow is undefined. Possible cross-origin issue or iframe not fully loaded.");return}try{let i=`kip-gesture-inject-${this.widgetProperties.uuid}`;if(t.getElementById(i))return;let o=xo({instanceId:this.widgetProperties.uuid}),r=t.createElement("script");r.id=i,r.textContent=o,t.body.appendChild(r)}catch(i){console.warn("[FSK Widget] Failed to inject swipe script into iframe:",i)}}ngOnDestroy(){if(window.removeEventListener("message",this.handleIframeGesture),this._authTokenSubscription?.unsubscribe(),this.destroyDataStreams(),this.iframe){try{this.iframe().nativeElement.onload=null}catch(e){}try{let e=this.iframe()?.nativeElement.contentDocument;if(e){let t=`kip-gesture-inject-${this.widgetProperties.uuid}`,i=e.getElementById(t);i&&i.parentNode&&i.parentNode.removeChild(i)}}catch{}}}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-freeboardsk"]],viewQuery:function(t,i){t&1&&te(i.iframe,ag,5),t&2&&be()},features:[ce],decls:5,vars:6,consts:[["freeboardSkIframe",""],[2,"overflow","clip",3,"configChange","config","id"],["width","100%","height","100%","frameborder","0","sandbox","allow-same-origin allow-scripts allow-forms",3,"src"],[1,"widgetOverlay"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(){return P(o),O(i.updateConfig())}),G(1,"iframe",2,0),li(3,"safe"),De(4,og,1,0,"div",3),_()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),z("src",Ba(3,4,i.widgetUrl),Na),k(3),Ae(i.dashboard.isDashboardStatic()?-1:4))},dependencies:[Ce,zc],styles:[".widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent}"]})}return a})();var Li=Aa(jr(),1),Gc=Aa(jr(),1);var rg=["gauge"],sg=a=>a.replace(/(\-\w)/g,n=>n[1].toUpperCase()),lg=a=>a.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Hc=a=>sg(a),Uc=(()=>{class a{el;zone;canvas;gauge;isInited=!1;preInitValue;preInitOptions;domListener;constructor(e,t){this.el=e,this.zone=t}get options(){let e={};e.renderTo=this.canvas.nativeElement;for(let t of this.el.nativeElement.attributes){let i=Hc(t.name);e[i]=Li.DomObserver.parse(t.value)}for(let t in this.preInitOptions)e[t]=this.preInitOptions[t];return this.isInited&&(this.preInitOptions=null),e}set options(e){if(!this.isInited){this.preInitOptions=e;return}this.update(e)}set value(e){if(!this.isInited){this.preInitValue=e;return}this.zone.runOutsideAngular(()=>{this.gauge.value=e})}update(e){if(e)for(let t in e){let i=e[t].toString();if(t==="value")this.value=Li.DomObserver.parse(i);else{let o=lg(t);this.el.nativeElement.setAttribute(o,i)}}}ngOnDestroy(){this.destroy(),this.cleanup()}cleanup(){}destroy(){this.stopListeningForDOMEvents(),this.gauge.destroy()}ngAfterViewInit(){this.initGauge(),this.listenForDOMEvents(),this.isInited=!0,this.preInitValue&&(this.value=this.preInitValue)}listenForDOMEvents(){this.domListener=new MutationObserver(e=>{let t={};e.forEach(i=>{i.type==="attributes"&&(t[Hc(i.attributeName)]=Li.DomObserver.parse(this.el.nativeElement.getAttribute(i.attributeName)))}),this.basicUpdate(t)}),this.domListener.observe(this.el.nativeElement,{attributes:!0})}stopListeningForDOMEvents(){this.domListener&&(this.domListener.disconnect(),this.domListener=null)}initGauge(){let e=this.options;(!e.hasOwnProperty("renderTo")||!e.renderTo)&&(e.renderTo=this.canvas.nativeElement),this.basicUpdate(e)}basicUpdate(e){typeof e.value=="number"&&(this.value=e.value,delete e.value),Object.keys(e).length&&this.gauge.update(e)}static \u0275fac=function(t){return new(t||a)(Et(Ye),Et(Je))};static \u0275dir=si({type:a,viewQuery:function(t,i){if(t&1&&Ci(rg,7),t&2){let o;gi(o=fi())&&(i.canvas=o.first)}},inputs:{options:"options",value:"value"}})}return a})();var va=(()=>{class a extends Uc{constructor(e,t){super(e,t)}ngOnInit(){this.gauge=new Li.LinearGauge(this.options).draw()}static \u0275fac=function(t){return new(t||a)(Et(Ye),Et(Je))};static \u0275cmp=F({type:a,selectors:[["linear-gauge"]],features:[ce],decls:2,vars:0,consts:[["gauge",""]],template:function(t,i){t&1&&G(0,"canvas",null,0)},encapsulation:2})}return a})();var Eo=(()=>{class a extends Uc{constructor(e,t){super(e,t)}ngOnInit(){this.gauge=new Li.RadialGauge(this.options).draw()}static \u0275fac=function(t){return new(t||a)(Et(Ye),Et(Je))};static \u0275cmp=F({type:a,selectors:[["radial-gauge"]],features:[ce],decls:2,vars:0,consts:[["gauge",""]],template:function(t,i){t&1&&G(0,"canvas",null,0)},encapsulation:2})}return a})(),$n=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275mod=ri({type:a});static \u0275inj=ai({})}return a})();var qc=["compassGauge"];function Yr(a){let n=a.match(/(\d+(\.\d+)?|\.\d+)/g);if(!n||n.length<3)throw new Error("Invalid RGBA format");let[e,t,i,o=1]=n.map(Number),r=o===1?"":Math.round(o*255).toString(16).padStart(2,"0").toUpperCase();return"#"+((1<<24)+(e<<16)+(t<<8)+i).toString(16).slice(1).toUpperCase()+r}function dg(a){return a<0&&(a=360+a),a}var jc=(()=>{class a extends Se{DEG="deg";LINE="line";NEEDLE_START=40;NEEDLE_END=100;NEEDLE_CIRCLE_SIZE=15;BORDER_MIDDLE_WIDTH=2;BORDER_INNER_WIDTH=2;ANIMATION_TARGET_PLATE="plate";ANIMATION_TARGET_NEEDLE="needle";textValue="--";value=0;ngGauge=ie("compassGauge");gauge=ie("compassGauge",{read:Ye});initCompleted=!1;gaugeOptions={};colorStrokeTicks="";unitName=null;state=J.Normal;negToPortPaths=["self.environment.wind.angleApparent","self.environment.wind.angleTrueGround","self.environment.wind.angleTrueWater"];constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",showConvertUnitTo:!1,convertUnitTo:this.DEG,sampleTime:500}},gauge:{type:"ngRadial",subType:"baseplateCompass",enableTicks:!0,compassUseNumbers:!1,showValueBox:!1},enableTimeout:!1,color:"contrast",dataTimeout:5},ne(()=>{if(this.theme()){if(!this.initCompleted)return;this.startWidget()}})}ngOnInit(){this.validateConfig()}startWidget(){this.setGaugeConfig(),this.ngGauge().update(this.gaugeOptions),this.unsubscribeDataStream(),this.observeDataStream("gaugePath",e=>{if(!e||!e.data||e.data.value===null)e={data:{value:0,timestamp:new Date},state:J.Normal},this.value=0,this.textValue="--";else{let t=this.negToPortPaths.includes(this.widgetProperties.config.paths.gaugePath.path)?dg(e.data.value):e.data.value;this.value=Math.min(Math.max(t,0),360),this.textValue=this.value.toFixed(0)}if(e.state==null&&(e.state=J.Normal),this.state!==e.state){this.state=e.state;let t={};switch(e.state){case J.Emergency:t.colorValueText=this.theme().zoneEmergency;break;case J.Alarm:t.colorValueText=this.theme().zoneAlarm;break;case J.Warn:t.colorValueText=this.theme().zoneWarn;break;case J.Alert:t.colorValueText=this.theme().zoneAlert;break;default:t.colorValueText=this.theme().contrast}this.ngGauge().update(t)}})}updateConfig(e){this.widgetProperties.config=e,this.setCanvasHight(),this.startWidget()}setCanvasHight(){let e=this.gauge().nativeElement.getBoundingClientRect(),t={};t.height=e.height,t.width=e.width,this.ngGauge().update(t)}ngAfterViewInit(){this.setCanvasHight(),this.startWidget(),this.initCompleted=!0}onResized(e){let t={};t.height=e.contentRect.height,t.width=e.contentRect.width,this.ngGauge().update(t)}setGaugeConfig(){this.gaugeOptions.title=this.widgetProperties.config.displayName?this.widgetProperties.config.displayName:"",this.gaugeOptions.minValue=0,this.gaugeOptions.maxValue=360,this.gaugeOptions.valueDec=0,this.gaugeOptions.valueInt=1,this.gaugeOptions.units="",this.gaugeOptions.barProgress=!1,this.gaugeOptions.barWidth=0,this.gaugeOptions.valueBox=this.widgetProperties.config.gauge.showValueBox,this.gaugeOptions.fontValueSize=60,this.gaugeOptions.valueBoxWidth=26,this.gaugeOptions.valueBoxBorderRadius=10,this.gaugeOptions.valueBoxStroke=0,this.gaugeOptions.ticksAngle=360,this.gaugeOptions.startAngle=180,this.gaugeOptions.exactTicks=!1,this.gaugeOptions.strokeTicks="",this.gaugeOptions.majorTicks=this.widgetProperties.config.gauge.compassUseNumbers?["N","30","60","E","120","150","S","210","240","W","300","330","N"]:["N","NE","E","SE","S","SW","W","NW","N"],this.gaugeOptions.majorTicksDec=0,this.gaugeOptions.majorTicksInt=1,this.gaugeOptions.numbersMargin=5,this.gaugeOptions.fontNumbersSize=25,this.gaugeOptions.minorTicks=this.widgetProperties.config.gauge.compassUseNumbers?3:2,this.gaugeOptions.needle=!0,this.gaugeOptions.needleType=this.LINE,this.gaugeOptions.needleStart=this.NEEDLE_START,this.gaugeOptions.needleEnd=this.NEEDLE_END,this.gaugeOptions.needleCircleSize=this.NEEDLE_CIRCLE_SIZE,this.gaugeOptions.needleWidth=4,this.gaugeOptions.needleShadow=!1,this.gaugeOptions.needleCircleInner=!1,this.gaugeOptions.needleCircleOuter=!1,this.gaugeOptions.borders=!0,this.gaugeOptions.borderOuterWidth=0,this.gaugeOptions.borderMiddleWidth=this.BORDER_MIDDLE_WIDTH,this.gaugeOptions.borderInnerWidth=this.BORDER_INNER_WIDTH,this.gaugeOptions.borderShadowWidth=0,this.gaugeOptions.highlights=[],this.gaugeOptions.fontTitle="Roboto",this.gaugeOptions.fontTitleWeight="normal",this.gaugeOptions.fontTitleSize=25,this.gaugeOptions.fontUnits="Roboto",this.gaugeOptions.fontUnitsSize=25,this.gaugeOptions.fontUnitsWeight="normal",this.gaugeOptions.barStrokeWidth=0,this.gaugeOptions.barShadow=0,this.gaugeOptions.fontValue="Roboto",this.gaugeOptions.fontValueWeight="bold",this.gaugeOptions.valueTextShadow=!1,this.gaugeOptions.colorValueBoxShadow="",this.gaugeOptions.fontNumbers="Roboto",this.gaugeOptions.fontNumbersWeight="bold",this.gaugeOptions.highlightsWidth=0,this.widgetProperties.config.gauge.subType==="marineCompass"?(this.gaugeOptions.animationTarget=this.ANIMATION_TARGET_PLATE,this.gaugeOptions.useMinPath=!0):this.widgetProperties.config.gauge.subType==="baseplateCompass"&&(this.gaugeOptions.animationTarget=this.ANIMATION_TARGET_NEEDLE,this.gaugeOptions.useMinPath=!0),this.gaugeOptions.animation=!0,this.gaugeOptions.animateOnInit=!0,this.gaugeOptions.animatedValue=!0,this.gaugeOptions.animationRule="linear",this.gaugeOptions.animationDuration=this.widgetProperties.config.paths.gaugePath.sampleTime-50,this.setGaugeOptions(he(this.widgetProperties.config.color,this.theme()).color,Yr(he(this.widgetProperties.config.color,this.theme()).dim),Yr(he(this.widgetProperties.config.color,this.theme()).dimmer))}setGaugeOptions(e,t,i){let o=Yr(he("contrast",this.theme()).dim);this.gaugeOptions.colorBarProgress=e,this.gaugeOptions.colorBorderMiddle=t,this.gaugeOptions.colorBorderMiddleEnd=t,this.gaugeOptions.colorNeedle=e,this.gaugeOptions.colorNeedleEnd=e,this.gaugeOptions.colorTitle=o,this.gaugeOptions.colorUnits=o,this.gaugeOptions.colorValueText=e,this.gaugeOptions.colorMinorTicks=o,this.gaugeOptions.colorNumbers=this.widgetProperties.config.gauge.compassUseNumbers?[this.theme().port,o,o,t,o,o,t,o,o,t,o,o,this.theme().port]:[this.theme().port,t,t,t,t,t,t,t,this.theme().port],this.gaugeOptions.colorMajorTicks=this.widgetProperties.config.gauge.compassUseNumbers?[this.theme().port,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().port]:[this.theme().port,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().port],this.gaugeOptions.colorPlate=this.gaugeOptions.colorPlateEnd=this.gaugeOptions.colorBorderInner=this.gaugeOptions.colorBorderInnerEnd=this.theme().cardColor,this.gaugeOptions.colorBar=this.theme().background,this.gaugeOptions.colorBarStroke="",this.gaugeOptions.colorValueBoxBackground=this.theme().background,this.gaugeOptions.colorNeedleShadowUp="",this.gaugeOptions.colorNeedleShadowDown="",this.gaugeOptions.colorNeedleCircleInner=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleInnerEnd=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleOuter=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleOuterEnd=this.gaugeOptions.colorPlate}ngOnDestroy(){this.destroyDataStreams()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-gauge-ng-compass"]],viewQuery:function(t,i){t&1&&(te(i.ngGauge,qc,5),te(i.gauge,qc,5,Ye)),t&2&&be(2)},features:[ce],decls:3,vars:8,consts:[["compassGauge",""],[3,"configChange","config","id"],[3,"onResize","id","options","value"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),v(1,"radial-gauge",2,0),I("onResize",function(l){return P(o),O(i.onResized(l))}),_()()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),z("id",xi(i.widgetProperties.uuid))("options",i.gaugeOptions)("value",i.value),ae("value-text",i.textValue)("color-stroke-ticks",i.colorStrokeTicks))},dependencies:[Ce,it,Ot,$n,Eo],styles:["radial-gauge{display:block;position:relative;width:100%;height:100%;overflow:clip} radial-gauge>canvas{display:block;position:absolute;height:100%;width:100%;left:50%;top:50%;transform:translate(-50%,-50%);padding:10px}"]})}return a})();function Mo(a,n,e=!1){let t=[],i=n-a,o=0,r=10;i=$c(n-a,!1),o=$c(i/(r-1),!0);let l=Math.floor(a/o)*o,d=Math.ceil(n/o)*o;t.push(l);let p=i/o;for(let s=0;s<p;s++)if(t[s]<d){let c=(Number(t[s].toFixed(2))*100+Number(o.toFixed(2))*100)/100;t.push(c)}if(t[t.length-1]!==d&&t.push(d),e){let s=[...t].reverse();return{min:l,max:d,majorTicks:s}}return{min:l,max:d,majorTicks:t}}function $c(a,n){let e=Math.floor(Math.log10(a)),t=a/Math.pow(10,e),i=null;return n?1.5>t?i=1:3>t?i=2:7>t?i=5:i=10:1>=t?i=1:2>=t?i=2:5>=t?i=5:i=10,i*Math.pow(10,e)}function Yn(a,n,e,t,i,o,r=!1){let l=[],d=[...a].sort((p,s)=>p.lower-s.lower);for(let p of d){let s=null,c=null,m;switch(p.state){case J.Emergency:m=n.zoneEmergency;break;case J.Alarm:m=n.zoneAlarm;break;case J.Warn:m=n.zoneWarn;break;case J.Alert:m=n.zoneAlert;break;case J.Nominal:m=n.zoneNominal;break;default:m="rgba(0,0,0,0)"}if(s=t.convertToUnit(e,p.lower),c=t.convertToUnit(e,p.upper),!(c<i||s>o)){if(s=s!==null?s:i,c=c!==null?c:o,s=Math.max(s,i),c>o){c=o,l.push({from:s,to:c,color:m});break}l.push({from:s,to:c,color:m})}}return r&&(l=l.map(p=>({from:o-p.to,to:o-p.from,color:p.color}))),l}var Yc=["linearGauge"],Kc=(()=>{class a extends Se{ngGauge=ie("linearGauge",{read:va});gauge=ie("linearGauge",{read:Ye});initCompleted=!1;textValue="";value=0;gaugeOptions={};isGaugeVertical=!0;adjustedScale;metaSub;state=J.Normal;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,convertUnitTo:"unitless",sampleTime:500}},displayScale:{lower:0,upper:100,type:"linear"},gauge:{type:"ngLinear",subType:"vertical",enableTicks:!1,highlightsWidth:5,useNeedle:!1},numInt:1,numDecimal:0,color:"contrast",enableTimeout:!1,dataTimeout:5,ignoreZones:!1},ne(()=>{if(this.theme()){if(!this.initCompleted)return;this.startWidget()}})}ngOnInit(){this.validateConfig()}startWidget(){this.setGaugeConfig(),this.ngGauge().update(this.gaugeOptions),this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe(),this.observeDataStream("gaugePath",t=>{if(!t||!t.data||t.data.value===null?(t={data:{value:0,timestamp:new Date},state:J.Normal},this.textValue="--"):this.textValue==="--"&&(this.textValue=""),this.value=Math.min(Math.max(t.data.value,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper),t.state==null&&(t.state=J.Normal),this.state!==t.state){this.state=t.state;let i={};if(!this.widgetProperties.config.ignoreZones)switch(t.state){case J.Emergency:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=this.theme().zoneEmergency,i.colorValueText=this.theme().zoneEmergency):(i.colorBarProgress=this.theme().zoneEmergency,i.colorValueText=this.theme().zoneEmergency);break;case J.Alarm:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=this.theme().zoneAlarm,i.colorValueText=this.theme().zoneAlarm):(i.colorBarProgress=this.theme().zoneAlarm,i.colorValueText=this.theme().zoneAlarm);break;case J.Warn:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=this.theme().zoneWarn,i.colorValueText=this.theme().zoneWarn):(i.colorBarProgress=this.theme().zoneWarn,i.colorValueText=this.theme().zoneWarn);break;case J.Alert:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=this.theme().zoneAlert,i.colorValueText=this.theme().zoneAlert):(i.colorBarProgress=this.theme().zoneAlert,i.colorValueText=this.theme().zoneAlert);break;default:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=he(this.widgetProperties.config.color,this.theme()).color,i.colorValueText=he(this.widgetProperties.config.color,this.theme()).color):(i.colorBarProgress=he(this.widgetProperties.config.color,this.theme()).color,i.colorValueText=he(this.widgetProperties.config.color,this.theme()).color)}this.ngGauge().update(i)}});let e={};e.highlights=[],this.widgetProperties.config.ignoreZones?this.ngGauge().update(e):(this.observeMetaStream(),this.metaSub=this.zones$.subscribe(t=>{if(t&&t.length>0){let i=Yn(t,this.theme(),this.widgetProperties.config.paths.gaugePath.convertUnitTo,this.unitsService,this.adjustedScale.min,this.adjustedScale.max);e.highlightsWidth=this.widgetProperties.config.gauge.highlightsWidth,e.highlights=JSON.stringify(i,null,1)}else e.highlights=[];this.ngGauge().update(e)}))}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}ngAfterViewInit(){this.setCanvasHight(),this.startWidget(),this.initCompleted=!0}onResized(e){let t={};this.widgetProperties.config.gauge.subType==="vertical"?(t.height=e.contentRect.height,t.width=t.height*.3,t.width>e.contentRect.width&&(t.width=e.contentRect.width,t.height=t.width/.3)):(t.width=e.contentRect.width,t.height=t.width*.3,t.height>e.contentRect.height&&(t.height=e.contentRect.height,t.width=t.height/.3)),t.height-=10,this.ngGauge().update(t)}setCanvasHight(){let e=this.gauge().nativeElement.getBoundingClientRect(),t={};t.height=e.height,t.width=e.width,this.ngGauge().update(t)}setGaugeConfig(){let e=this.widgetProperties.config.gauge.subType==="vertical",t=this.widgetProperties.config.gauge.useNeedle,i=this.widgetProperties.config.gauge.enableTicks;this.adjustedScale={min:this.widgetProperties.config.displayScale.lower,max:this.widgetProperties.config.displayScale.upper,majorTicks:[]};let o=this.gauge().nativeElement.getBoundingClientRect(),r=null,l=null;this.widgetProperties.config.gauge.subType==="vertical"?(r=o.height,l=o.height*.3):(r=o.width*.3,l=o.width),i&&(this.adjustedScale=Mo(this.widgetProperties.config.displayScale.lower,this.widgetProperties.config.displayScale.upper));let d={height:r,width:l,minValue:this.adjustedScale.min,maxValue:this.adjustedScale.max,valueInt:this.widgetProperties.config.numInt!==void 0&&this.widgetProperties.config.numInt!==null?this.widgetProperties.config.numInt:1,valueDec:this.widgetProperties.config.numDecimal!==void 0&&this.widgetProperties.config.numDecimal!==null?this.widgetProperties.config.numDecimal:2,title:this.widgetProperties.config.displayName,fontTitleSize:40,fontTitle:"Roboto",fontTitleWeight:"bold",barLength:e?80:90,barWidth:i?t?0:30:60,barProgress:!0,barBeginCircle:0,barStrokeWidth:0,barShadow:0,needle:t,needleType:this.widgetProperties.config.gauge.useNeedle?"arrow":"line",needleShadow:!0,needleSide:"both",needleStart:this.widgetProperties.config.gauge.useNeedle?e?200:155:-45,needleEnd:this.widgetProperties.config.gauge.useNeedle?e?175:180:55,colorNeedleEnd:he(this.widgetProperties.config.color,this.theme()).color,colorNeedleShadowUp:he(this.widgetProperties.config.color,this.theme()).color,colorNeedleShadowDown:he(this.widgetProperties.config.color,this.theme()).color,units:this.widgetProperties.config.paths.gaugePath.convertUnitTo,fontUnits:"Roboto",fontUnitsWeight:"normal",borders:!1,borderOuterWidth:0,colorBorderOuter:"red",colorBorderOuterEnd:"red",borderMiddleWidth:0,colorBorderMiddle:"#63afdf",colorBorderMiddleEnd:"#63afdf",borderInnerWidth:0,colorBorderInner:"red",colorBorderInnerEnd:"#121212",borderShadowWidth:0,borderRadius:0,colorBarEnd:"",colorBarStroke:"0",valueBoxStroke:0,colorValueBoxRect:"",colorValueBoxRectEnd:"",colorValueBoxBackground:this.theme().background,fontValueSize:50,fontValue:"Roboto",fontValueWeight:"bold",valueTextShadow:!1,colorValueBoxShadow:"",fontNumbers:"Roboto",fontNumbersWeight:"normal",fontUnitsSize:this.isGaugeVertical?40:35,colorTitle:he("contrast",this.theme()).dim,colorUnits:he("contrast",this.theme()).dim,colorValueText:he(this.widgetProperties.config.color,this.theme()).color,colorPlate:this.theme().cardColor,colorBar:this.theme().background,colorMajorTicks:he("contrast",this.theme()).dim,colorMinorTicks:he("contrast",this.theme()).dim,colorNumbers:he("contrast",this.theme()).dim,majorTicks:i?this.adjustedScale.majorTicks:[],majorTicksInt:this.widgetProperties.config.numInt!==void 0&&this.widgetProperties.config.numInt!==null?this.widgetProperties.config.numInt:1,majorTicksDec:this.widgetProperties.config.numDecimal!==void 0&&this.widgetProperties.config.numDecimal!==null?this.widgetProperties.config.numDecimal:2,numberSide:t?"right":"left",fontNumbersSize:i?e?22:30:0,numbersMargin:e?t?-7:-3:t?-33:-5,tickSide:"left",ticksWidth:i?t&&e?15:10:0,ticksPadding:i?e?t?0:5:t?9:8:0,strokeTicks:i,minorTicks:i?2:0,ticksWidthMinor:i?6:0,valueBox:!0,valueBoxWidth:35,valueBoxBorderRadius:10,highlights:[],highlightsWidth:this.widgetProperties.config.gauge.highlightsWidth,animation:!0,animationRule:"linear",animatedValue:!1,animateOnInit:!1,animationDuration:this.widgetProperties.config.paths.gaugePath.sampleTime-25};Object.assign(this.gaugeOptions,d),this.setThemePaletteColor()}setThemePaletteColor(){let e="",t="";switch(this.widgetProperties.config.color){case"contrast":e=this.theme().contrast,t=this.theme().contrastDim;break;case"blue":e=this.theme().blue,t=this.theme().blueDim;break;case"green":e=this.theme().green,t=this.theme().greenDim;break;case"pink":e=this.theme().pink,t=this.theme().pinkDim;break;case"orange":e=this.theme().orange,t=this.theme().orangeDim;break;case"purple":e=this.theme().purple,t=this.theme().purpleDim;break;case"grey":e=this.theme().grey,t=this.theme().greyDim;break;case"yellow":e=this.theme().yellow,t=this.theme().yellowDim;break;default:e=this.theme().contrast,t=this.theme().contrastDim;break}Object.assign(this.gaugeOptions,{colorBarProgress:this.widgetProperties.config.gauge.useNeedle?"":e,colorBarProgressEnd:"",colorNeedle:this.widgetProperties.config.gauge.useNeedle?e:t,needleWidth:this.widgetProperties.config.gauge.useNeedle?45:0})}ngOnDestroy(){this.destroyDataStreams(),this.metaSub?.unsubscribe()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-gauge-ng-linear"]],viewQuery:function(t,i){t&1&&(te(i.ngGauge,Yc,5,va),te(i.gauge,Yc,5,Ye)),t&2&&be(2)},features:[ce],decls:4,vars:7,consts:[["host",""],["linearGauge",""],[3,"configChange","config","id"],[1,"linearGauge",3,"onResize","id","options","value"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",2,0),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),v(2,"linear-gauge",3,1),I("onResize",function(l){return P(o),O(i.onResized(l))}),_()()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(2),z("id",xi(i.widgetProperties.uuid))("options",i.gaugeOptions)("value",i.value),ae("value-text",i.textValue))},dependencies:[Ce,it,Ot,$n,va],styles:["linear-gauge{display:block;position:relative;width:100%;height:100%;overflow:clip} linear-gauge>canvas{display:block;position:absolute;height:100%;width:100%;left:50%;top:50%;transform:translate(-50%,-50%);margin-top:5px}"]})}return a})();var Qc=["radialGauge"],Xc=(()=>{class a extends Se{LINE="line";ANIMATION_TARGET_NEEDLE="needle";ngGauge=ie("radialGauge");gauge=ie("radialGauge",{read:Ye});initCompleted=!1;textValue="";value=null;adjustedScale;gaugeOptions={};colorStrokeTicks="";unitName=null;metaSub;state=J.Normal;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,convertUnitTo:"unitless",sampleTime:500}},displayScale:{lower:0,upper:100,type:"linear"},gauge:{type:"ngRadial",subType:"measuring",enableTicks:!0,compassUseNumbers:!1,highlightsWidth:5,scaleStart:180,barStartPosition:"left"},numInt:1,numDecimal:0,enableTimeout:!1,color:"contrast",dataTimeout:5,ignoreZones:!1},ne(()=>{if(this.theme()){if(!this.initCompleted)return;this.startWidget()}})}ngOnInit(){this.validateConfig()}startWidget(){this.setGaugeConfig(),this.ngGauge().update(this.gaugeOptions),this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe(),this.observeDataStream("gaugePath",t=>{if(!t||!t.data||t.data.value===null?(t={data:{value:0,timestamp:new Date},state:J.Normal},this.textValue="--"):this.textValue==="--"&&(this.textValue=""),this.value=Math.min(Math.max(t.data.value,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper),t.state==null&&(t.state=J.Normal),this.state!==t.state){this.state=t.state;let i={};if(!this.widgetProperties.config.ignoreZones)switch(t.state){case J.Alarm:i.colorBorderMiddle=this.theme().cardColor,i.colorBarProgress=this.theme().zoneAlarm,i.colorValueText=this.theme().zoneAlarm;break;case J.Warn:i.colorBorderMiddle=this.theme().cardColor,i.colorBarProgress=this.theme().zoneWarn,i.colorValueText=this.theme().zoneWarn;break;case J.Alert:i.colorBorderMiddle=this.theme().cardColor,i.colorBarProgress=this.theme().zoneAlert,i.colorValueText=this.theme().zoneAlert;break;default:i.colorBorderMiddle=this.theme().cardColor,i.colorBarProgress=this.widgetProperties.config.gauge.subType=="measuring"?he(this.widgetProperties.config.color,this.theme()).color:he(this.widgetProperties.config.color,this.theme()).dim,i.colorValueText=he(this.widgetProperties.config.color,this.theme()).color}this.ngGauge().update(i)}});let e={};e.highlights=[],this.widgetProperties.config.ignoreZones?this.ngGauge().update(e):(this.observeMetaStream(),this.metaSub=this.zones$.subscribe(t=>{if(t&&t.length>0&&this.widgetProperties.config.gauge.subType=="measuring"){let i=this.widgetProperties.config.gauge.barStartPosition==="right",o=Yn(t,this.theme(),this.widgetProperties.config.paths.gaugePath.convertUnitTo,this.unitsService,this.adjustedScale.min,this.adjustedScale.max,i);e.highlightsWidth=this.widgetProperties.config.gauge.highlightsWidth,e.highlights=JSON.stringify(o,null,1)}else e.highlights=[];this.ngGauge().update(e)}))}updateConfig(e){this.widgetProperties.config=e,this.setCanvasHight(),this.startWidget()}setCanvasHight(){let e=this.gauge().nativeElement.getBoundingClientRect(),t={};t.height=e.height,t.width=e.width,this.ngGauge().update(t)}ngAfterViewInit(){this.setCanvasHight(),this.startWidget(),this.initCompleted=!0}onResized(e){let t={};t.height=e.contentRect.height,t.width=e.contentRect.width,this.ngGauge().update(t)}setGaugeConfig(){switch(this.gaugeOptions.title=this.widgetProperties.config.displayName?this.widgetProperties.config.displayName:"",this.gaugeOptions.highlights=[],this.gaugeOptions.fontTitle="Roboto",this.gaugeOptions.fontTitleWeight="bold",this.gaugeOptions.fontUnits="Roboto",this.gaugeOptions.fontUnitsSize=25,this.gaugeOptions.fontUnitsWeight="normal",this.gaugeOptions.barStrokeWidth=0,this.gaugeOptions.barShadow=0,this.gaugeOptions.colorBarStroke="",this.gaugeOptions.fontValue="Roboto",this.gaugeOptions.fontValueWeight="bold",this.gaugeOptions.valueTextShadow=!1,this.gaugeOptions.colorValueBoxShadow="",this.gaugeOptions.fontNumbers="Roboto",this.gaugeOptions.fontNumbersWeight="bold",this.gaugeOptions.valueInt=this.widgetProperties.config.numInt!==void 0&&this.widgetProperties.config.numInt!==null?this.widgetProperties.config.numInt:1,this.gaugeOptions.valueDec=this.widgetProperties.config.numDecimal!==void 0&&this.widgetProperties.config.numDecimal!==null?this.widgetProperties.config.numDecimal:2,this.gaugeOptions.majorTicksInt=this.widgetProperties.config.numInt!==void 0&&this.widgetProperties.config.numInt!==null?this.widgetProperties.config.numInt:1,this.gaugeOptions.majorTicksDec=this.widgetProperties.config.numDecimal!==void 0&&this.widgetProperties.config.numDecimal!==null?this.widgetProperties.config.numDecimal:2,this.gaugeOptions.highlightsWidth=this.widgetProperties.config.gauge.highlightsWidth,this.gaugeOptions.animation=!0,this.gaugeOptions.animateOnInit=!1,this.gaugeOptions.animatedValue=!1,this.gaugeOptions.animationRule="linear",this.gaugeOptions.animationDuration=this.widgetProperties.config.paths.gaugePath.sampleTime-25,this.gaugeOptions.colorBorderShadow=!1,this.gaugeOptions.colorBorderOuter=this.theme().cardColor,this.gaugeOptions.colorBorderOuterEnd="",this.gaugeOptions.colorBorderMiddle=this.theme().cardColor,this.gaugeOptions.colorBorderMiddleEnd="",this.gaugeOptions.colorBarProgress=he(this.widgetProperties.config.color,this.theme()).color,this.gaugeOptions.colorNeedle=he(this.widgetProperties.config.color,this.theme()).dim,this.gaugeOptions.colorNeedleEnd=he(this.widgetProperties.config.color,this.theme()).dim,this.gaugeOptions.colorTitle=this.theme().contrastDim,this.gaugeOptions.colorUnits=this.theme().contrastDim,this.gaugeOptions.colorValueText=he(this.widgetProperties.config.color,this.theme()).color,this.colorStrokeTicks=this.theme().contrastDim,this.gaugeOptions.colorMinorTicks=this.theme().contrastDim,this.gaugeOptions.colorNumbers=this.theme().contrastDim,this.gaugeOptions.colorMajorTicks=this.theme().contrastDim,this.gaugeOptions.colorPlate=this.gaugeOptions.colorPlateEnd=this.theme().cardColor,this.gaugeOptions.colorBar=this.theme().background,this.gaugeOptions.colorNeedleShadowUp="",this.gaugeOptions.colorNeedleShadowDown="black",this.gaugeOptions.colorNeedleCircleInner=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleInnerEnd=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleOuter=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleOuterEnd=this.gaugeOptions.colorPlate,this.widgetProperties.config.gauge.subType){case"capacity":this.configureCapacityGauge();break;case"measuring":this.configureMeasuringGauge();break;default:}}configureCapacityGauge(){this.gaugeOptions.minValue=this.widgetProperties.config.displayScale.lower,this.gaugeOptions.maxValue=this.widgetProperties.config.displayScale.upper,this.gaugeOptions.units=this.widgetProperties.config.paths.gaugePath.convertUnitTo,this.gaugeOptions.fontTitleSize=40,this.gaugeOptions.barProgress=!0,this.gaugeOptions.barWidth=20,this.gaugeOptions.colorBarProgress=he(this.widgetProperties.config.color,this.theme()).dim,this.gaugeOptions.valueBox=!0,this.gaugeOptions.fontValueSize=60,this.gaugeOptions.valueBoxWidth=10,this.gaugeOptions.valueBoxBorderRadius=5,this.gaugeOptions.valueBoxStroke=0,this.gaugeOptions.colorValueBoxBackground="",this.gaugeOptions.colorValueBoxRect="",this.gaugeOptions.colorValueBoxRectEnd="",this.gaugeOptions.ticksAngle=360,this.gaugeOptions.startAngle=this.widgetProperties.config.gauge.scaleStart||180,this.gaugeOptions.majorTicks=0,this.gaugeOptions.exactTicks=!0,this.gaugeOptions.strokeTicks=!1,this.gaugeOptions.minorTicks=0,this.gaugeOptions.numbersMargin=0,this.gaugeOptions.fontNumbersSize=0,this.gaugeOptions.colorMajorTicks=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNumbers=this.gaugeOptions.colorMinorTicks="",this.gaugeOptions.needle=!0,this.gaugeOptions.needleType=this.LINE,this.gaugeOptions.needleWidth=2,this.gaugeOptions.needleShadow=!1,this.gaugeOptions.needleStart=75,this.gaugeOptions.needleEnd=95,this.gaugeOptions.needleCircleSize=1,this.gaugeOptions.needleCircleInner=!1,this.gaugeOptions.needleCircleOuter=!1,this.gaugeOptions.borders=!0,this.gaugeOptions.borderOuterWidth=2,this.gaugeOptions.borderMiddleWidth=1,this.gaugeOptions.borderInnerWidth=0,this.gaugeOptions.borderShadowWidth=0,this.gaugeOptions.animationTarget=this.ANIMATION_TARGET_NEEDLE,this.gaugeOptions.useMinPath=!1}configureMeasuringGauge(){this.adjustedScale=Mo(this.widgetProperties.config.displayScale.lower,this.widgetProperties.config.displayScale.upper,this.widgetProperties.config.gauge.barStartPosition==="right"),this.gaugeOptions.minValue=this.adjustedScale.min,this.gaugeOptions.maxValue=this.adjustedScale.max,this.gaugeOptions.units=this.widgetProperties.config.paths.gaugePath.convertUnitTo,this.gaugeOptions.fontTitleSize=24,this.gaugeOptions.barProgress=!0,this.gaugeOptions.barWidth=15,this.gaugeOptions.valueBox=!0,this.gaugeOptions.fontValueSize=60,this.gaugeOptions.valueBoxWidth=100,this.gaugeOptions.valueBoxBorderRadius=0,this.gaugeOptions.valueBoxStroke=0,this.gaugeOptions.colorValueBoxBackground="",this.gaugeOptions.exactTicks=!1,this.gaugeOptions.majorTicks=this.adjustedScale.majorTicks,this.gaugeOptions.minorTicks=2,this.gaugeOptions.ticksAngle=270,this.gaugeOptions.startAngle=45,this.gaugeOptions.barStartPosition=this.widgetProperties.config.gauge.barStartPosition||"left",this.gaugeOptions.strokeTicks=!0,this.gaugeOptions.numbersMargin=3,this.gaugeOptions.fontNumbersSize=15,this.gaugeOptions.needle=!0,this.gaugeOptions.needleType=this.LINE,this.gaugeOptions.needleWidth=2,this.gaugeOptions.needleShadow=!1,this.gaugeOptions.needleStart=0,this.gaugeOptions.needleEnd=95,this.gaugeOptions.needleCircleSize=10,this.gaugeOptions.needleCircleInner=!1,this.gaugeOptions.needleCircleOuter=!1,this.gaugeOptions.borders=!0,this.gaugeOptions.borderOuterWidth=2,this.gaugeOptions.borderMiddleWidth=1,this.gaugeOptions.borderInnerWidth=0,this.gaugeOptions.borderShadowWidth=0,this.gaugeOptions.animationTarget=this.ANIMATION_TARGET_NEEDLE,this.gaugeOptions.useMinPath=!1}ngOnDestroy(){this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-gauge-ng-radial"]],viewQuery:function(t,i){t&1&&(te(i.ngGauge,Qc,5),te(i.gauge,Qc,5,Ye)),t&2&&be(2)},features:[ce],decls:3,vars:7,consts:[["radialGauge",""],[3,"configChange","config","id"],[3,"onResize","id","options","value"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),v(1,"radial-gauge",2,0),I("onResize",function(l){return P(o),O(i.onResized(l))}),_()()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),z("id",xi(i.widgetProperties.uuid))("options",i.gaugeOptions)("value",i.value),ae("value-text",i.textValue))},dependencies:[Ce,it,Ot,$n,Eo],styles:["radial-gauge{display:block;position:relative;width:100%;height:100%;overflow:clip} radial-gauge>canvas{display:block;position:absolute;height:100%;width:100%;left:50%;top:50%;transform:translate(-50%,-50%);padding:0}"]})}return a})();var cg=["gaugeCanvas"];typeof steelseries>"u"&&(globalThis.steelseries={BackgroundColor:{DARK_GRAY:"darkGray",SATIN_GRAY:"satinGray",LIGHT_GRAY:"lightGray",WHITE:"white",BLACK:"black",BEIGE:"beige",BROWN:"brown",RED:"red",GREEN:"green",BLUE:"blue",ANTHRACITE:"anthracite",MUD:"mud",PUNCHED_SHEET:"punchedSheet",CARBON:"carbon",STAINLESS:"stainless",BRUSHED_METAL:"brushedMetal",BRUSHED_STAINLESS:"brushedStainless",TURNED:"turned"},FrameDesign:{BLACK_METAL:"blackMetal",METAL:"metal",SHINY_METAL:"shinyMetal",BRASS:"brass",STEEL:"steel",CHROME:"chrome",GOLD:"gold",ANTHRACITE:"anthracite",TILTED_GRAY:"tiltedGray",TILTED_BLACK:"tiltedBlack",GLOSSY_METAL:"glossyMetal"}});var Kr={darkGray:steelseries.BackgroundColor.DARK_GRAY,satinGray:steelseries.BackgroundColor.SATIN_GRAY,lightGray:steelseries.BackgroundColor.LIGHT_GRAY,white:steelseries.BackgroundColor.WHITE,black:steelseries.BackgroundColor.BLACK,beige:steelseries.BackgroundColor.BEIGE,brown:steelseries.BackgroundColor.BROWN,red:steelseries.BackgroundColor.RED,green:steelseries.BackgroundColor.GREEN,blue:steelseries.BackgroundColor.BLUE,anthracite:steelseries.BackgroundColor.ANTHRACITE,mud:steelseries.BackgroundColor.MUD,punchedSheet:steelseries.BackgroundColor.PUNCHED_SHEET,carbon:steelseries.BackgroundColor.CARBON,stainless:steelseries.BackgroundColor.STAINLESS,brushedMetal:steelseries.BackgroundColor.BRUSHED_METAL,brushedStainless:steelseries.BackgroundColor.BRUSHED_STAINLESS,turned:steelseries.BackgroundColor.TURNED},Qr={blackMetal:steelseries.FrameDesign.BLACK_METAL,metal:steelseries.FrameDesign.METAL,shinyMetal:steelseries.FrameDesign.SHINY_METAL,brass:steelseries.FrameDesign.BRASS,steel:steelseries.FrameDesign.STEEL,chrome:steelseries.FrameDesign.CHROME,gold:steelseries.FrameDesign.GOLD,anthracite:steelseries.FrameDesign.ANTHRACITE,tiltedGray:steelseries.FrameDesign.TILTED_GRAY,tiltedBlack:steelseries.FrameDesign.TILTED_BLACK,glossyMetal:steelseries.FrameDesign.GLOSSY_METAL},Zc=(()=>{class a{unitsService=E(hi);canvasService=E(tt);canvasRef=ie("gaugeCanvas");widgetUUID=B(void 0);subType=B(void 0);barGauge=B(void 0);radialSize=B(void 0);backgroundColor=B(void 0);frameColor=B(void 0);minValue=B(void 0);maxValue=B(void 0);decimals=B(void 0);zones=B(void 0);title=B(void 0);units=B(void 0);value=B(void 0);theme=B(void 0,{alias:"themeColors"});gaugeStarted=!1;gauge;gaugeOptions={};paddingTop=0;lastSizeSignature="";resizeTimer=null;pendingStructuralRebuild=!1;ngOnInit(){this.buildOptions()}buildOptions(){this.gaugeOptions.minValue=this.minValue(),this.gaugeOptions.maxValue=this.maxValue();let e=this.decimals();this.gaugeOptions.lcdDecimals=e??2,this.gaugeOptions.titleString=this.title(),this.gaugeOptions.unitString=this.units(),this.subType()=="radial"&&(this.gaugeOptions.gaugeType=this.setGaugeType(this.radialSize()));let t=this.zones();if(t){let i=[],o=[],r=[...t].sort((l,d)=>l.lower-d.lower);for(let l of r){let d=null,p=null,s;switch(l.state){case J.Emergency:s=this.theme().zoneEmergency;break;case J.Alarm:s=this.theme().zoneAlarm;break;case J.Warn:s=this.theme().zoneWarn;break;case J.Alert:s=this.theme().zoneAlert;break;case J.Nominal:s=this.theme().zoneNominal;break;default:s="rgba(0,0,0,0)"}let c=this.units();if(c=="ratio"?(d=l.lower,p=l.upper):(d=this.unitsService.convertToUnit(c,l.lower),p=this.unitsService.convertToUnit(c,l.upper)),!(p<this.minValue()||d>this.maxValue())){if(d=d!==null?d:this.minValue(),p=p!==null?p:this.maxValue(),d=Math.max(d,this.minValue()),p>this.maxValue()){p=this.maxValue(),i.push(steelseries.Section(d,p,s));break}i.push(steelseries.Section(d,p,s))}}this.gaugeOptions.section=i,this.gaugeOptions.area=o,this.gaugeOptions.useSectionColors=!0}Kr[this.backgroundColor()]&&(this.gaugeOptions.backgroundColor=Kr[this.backgroundColor()]),Qr[this.frameColor()]&&(this.gaugeOptions.frameDesign=Qr[this.frameColor()]),this.barGauge()&&(this.gaugeOptions.valueColor=steelseries.ColorDef.GREEN),this.gaugeOptions.lcdVisible=!0,this.gaugeOptions.thresholdVisible=!1,this.gaugeOptions.threshold=this.maxValue(),this.gaugeOptions.ledVisible=!1}setGaugeType(e){switch(e){case"quarter":return steelseries.GaugeType.TYPE1;case"half":return steelseries.GaugeType.TYPE2;case"three-quarter":return steelseries.GaugeType.TYPE3;case"full":default:return steelseries.GaugeType.TYPE4}}startGauge(e=!1){this.buildOptions();let t=this.widgetUUID();if(!t)return;let i=e||this.pendingStructuralRebuild;if(this.gauge&&!i){this.gauge.setValueAnimated&&this.value()!=null,this.gaugeStarted=!0;return}this.pendingStructuralRebuild=!1,this.gaugeStarted=!0;let o=this.subType();o==="radial"?this.gauge=new steelseries.Radial(t,this.gaugeOptions):o==="linear"&&(this.barGauge()?this.gauge=new steelseries.LinearBargraph(t,this.gaugeOptions):this.gauge=new steelseries.Linear(t,this.gaugeOptions))}onResized(e){if(e.contentRect.height<50||e.contentRect.width<50)return;let t;if(this.subType()==="radial"){let i=Math.min(e.contentRect.height,e.contentRect.width);this.gaugeOptions.size=i,t="radial:"+i}else{let i=Math.floor(e.contentRect.width),o=Math.floor(e.contentRect.height);this.gaugeOptions.width=i,this.gaugeOptions.height=o,t=`linear:${i}x${o}`}t!==this.lastSizeSignature&&(this.lastSizeSignature=t,this.resizeTimer&&window.clearTimeout(this.resizeTimer),this.resizeTimer=window.setTimeout(()=>{this.startGauge(!0),this.resizeTimer=null},120))}ngOnChanges(e){this.gaugeStarted&&(e.value&&!e.value.firstChange&&this.gauge.setValueAnimated(e.value.currentValue),e.zones&&(this.pendingStructuralRebuild=!0,this.startGauge(!0)),e.title&&this.gauge.setTitleString(e.title.currentValue),e.backgroundColor&&this.gauge.setBackgroundColor(Kr[e.backgroundColor.currentValue]),e.frameColor&&this.gauge.setFrameDesign(Qr[e.frameColor.currentValue]),e.radialSize&&(this.pendingStructuralRebuild=!0,this.startGauge(!0)),e.minValue&&this.gauge.setMinValue(e.minValue.currentValue),e.maxValue&&this.gauge.setMaxValue(e.maxValue.currentValue))}ngOnDestroy(){if(this.gauge&&this.gauge.setValue){let t=this.gauge.getValue?this.gauge.getValue():this.value();this.gauge.setValue(t)}let e=this.widgetUUID();if(e){let t=document.getElementById(e);this.canvasService.releaseCanvas(t,{clear:!0,removeFromDom:!0})}this.gauge=null}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["gauge-steel"]],viewQuery:function(t,i){t&1&&te(i.canvasRef,cg,5),t&2&&be()},inputs:{widgetUUID:[1,"widgetUUID"],subType:[1,"subType"],barGauge:[1,"barGauge"],radialSize:[1,"radialSize"],backgroundColor:[1,"backgroundColor"],frameColor:[1,"frameColor"],minValue:[1,"minValue"],maxValue:[1,"maxValue"],decimals:[1,"decimals"],zones:[1,"zones"],title:[1,"title"],units:[1,"units"],value:[1,"value"],theme:[1,"themeColors","theme"]},features:[pn],decls:4,vars:2,consts:[["gaugeCanvas",""],[1,"wrapper",3,"onResize"],[2,"z-index","inherit",3,"id"]],template:function(t,i){if(t&1){let o=Y();v(0,"div",1),I("onResize",function(l){return P(o),O(i.onResized(l))}),v(1,"canvas",2,0),b(3," Browser does not support canvas element. "),_()()}t&2&&(k(),z("id",xi(i.widgetUUID())))},dependencies:[it,Ot],styles:[".sgWrapper[_ngcontent-%COMP%]{height:100%;width:100%;text-align:center}"]})}return a})();var Jc=(()=>{class a extends Se{dataValue=0;zones=[];metaSub;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,convertUnitTo:"unitless",sampleTime:500}},displayScale:{type:"linear",lower:0,upper:100},gauge:{type:"steel",subType:"radial",backgroundColor:"carbon",faceColor:"anthracite",radialSize:"full",rotateFace:!1,digitalMeter:!1},numDecimal:2,enableTimeout:!1,dataTimeout:5,ignoreZones:!1}}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe(),this.observeDataStream("gaugePath",e=>{(!e||!e.data)&&(e={data:{value:0,timestamp:new Date},state:"normal"}),this.dataValue=Math.min(Math.max(e.data.value,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper)}),this.widgetProperties.config.ignoreZones?this.zones=[]:(this.observeMetaStream(),this.metaSub=this.zones$.subscribe(e=>{e?e.length>0?this.zones=e:this.zones=[]:this.zones=[]}))}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}ngOnDestroy(){this.destroyDataStreams(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-gauge-steel"]],features:[ce],decls:2,vars:16,consts:[[3,"configChange","config","id"],[3,"widgetUUID","subType","barGauge","radialSize","backgroundColor","frameColor","minValue","maxValue","decimals","zones","title","units","value","themeColors"]],template:function(t,i){t&1&&(v(0,"widget-host",0),ve("configChange",function(r){return fe(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),G(1,"gauge-steel",1),_()),t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),z("widgetUUID",i.widgetProperties.uuid)("subType",i.widgetProperties.config.gauge.subType)("barGauge",i.widgetProperties.config.gauge.digitalMeter)("radialSize",i.widgetProperties.config.gauge.radialSize)("backgroundColor",i.widgetProperties.config.gauge.backgroundColor)("frameColor",i.widgetProperties.config.gauge.faceColor)("minValue",i.widgetProperties.config.displayScale.lower)("maxValue",i.widgetProperties.config.displayScale.upper)("decimals",i.widgetProperties.config.numDecimal)("zones",i.zones)("title",i.widgetProperties.config.displayName)("units",i.widgetProperties.config.paths.gaugePath.convertUnitTo)("value",i.dataValue)("themeColors",i.theme()))},dependencies:[Ce,Zc],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}gauge-steel[_ngcontent-%COMP%]{display:block;position:relative;width:100%;height:100%} .wrapper{display:block;position:relative;width:100%;height:100%;padding:10px} .wrapper>canvas{display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}"]})}return a})();var hg=["plainIframe"];function ug(a,n){if(a&1&&G(0,"iframe",2,0),a&2){let e=U();z("src",e.widgetUrl,Na)}}function mg(a,n){a&1&&(v(0,"div",3)(1,"h2"),b(2,"Empty or bad URL"),_(),v(3,"p"),b(4," IMPORTANT: cross-domain security rules (CORS) apply to this widget. "),_(),v(5,"p"),b(6,"Typically, you can load Grafana graphs, Signal K apps or other related tools. "),_()())}var eh=(()=>{class a extends Se{_sanitizer=E(Ua);_dashboard=E(nt);iframe=ie.required("plainIframe");widgetUrl=null;displayTransparentOverlay=K("block");constructor(){super(),this.defaultConfig={widgetUrl:null,allowInput:!1},ne(()=>{this._dashboard.isDashboardStatic()?this.displayTransparentOverlay.set(this.widgetProperties.config.allowInput?"none":"block"):this.displayTransparentOverlay.set("block")})}ngOnInit(){this.validateConfig(),window.addEventListener("message",this.handleIframeGesture),this.displayTransparentOverlay.set(this.widgetProperties.config.allowInput?"none":"block"),this.widgetUrl=this.resolveUrl(this.widgetProperties.config.widgetUrl)}ngAfterViewInit(){this.iframe()&&(this.iframe().nativeElement.onload=()=>this.injectSwipeScript())}startWidget(){}ngOnDestroy(){window.removeEventListener("message",this.handleIframeGesture),this.iframe()&&(this.iframe().nativeElement.onload=null);try{let e=this.iframe()?.nativeElement.contentDocument;if(e){let t=`kip-gesture-inject-${this.widgetProperties.uuid}`,i=e.getElementById(t);i&&i.parentNode&&i.parentNode.removeChild(i)}}catch{}try{this.destroyDataStreams()}catch{}}handleIframeGesture=e=>{if(e.data){if(e.data.gesture&&e.data.eventData.instanceId===this.widgetProperties.uuid)switch(e.data.gesture){case"swipeup":this._dashboard.navigateToPreviousDashboard();break;case"swipedown":this._dashboard.navigateToNextDashboard();break;case"swipeleft":{let t=new Event("openLeftSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(t);break}case"swiperight":{let t=new Event("openRightSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(t);break}default:break}if(e.data.type==="keydown"&&e.data.keyEventData.instanceId===this.widgetProperties.uuid){let{key:t,ctrlKey:i,shiftKey:o}=e.data.keyEventData,r=new KeyboardEvent("keydown",{key:t,ctrlKey:i,shiftKey:o,bubbles:!0,cancelable:!0});document.dispatchEvent(r)}}};injectSwipeScript(){let e=this.iframe().nativeElement.contentWindow,t=this.iframe().nativeElement.contentDocument;if(!t||!e){console.error("[WidgetIframe] Iframe contentDocument or contentWindow is undefined. Possible cross-origin issue or iframe not fully loaded.");return}try{let i=`kip-gesture-inject-${this.widgetProperties.uuid}`;if(t.getElementById(i))return;let o=xo({instanceId:this.widgetProperties.uuid}),r=t.createElement("script");r.id=i,r.textContent=o,t.body.appendChild(r)}catch(i){console.warn("[WidgetIframe] Failed to inject swipe script into iframe:",i)}}updateConfig(e){this.widgetUrl=this.resolveUrl(e.widgetUrl)}isValidProtocol(e){try{let t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"}catch(t){return console.warn(`[Embed Widget] Invalid Url: ${e}, Error: ${t}`),!1}}resolveUrl(e){if(!e)return null;try{let t=new URL(e,window.location.origin);return this.isValidProtocol(t.href)?this._sanitizer.bypassSecurityTrustResourceUrl(t.href):null}catch(t){return console.warn(`[Embed Widget] Can't resolve Url: ${e}, Error: ${t}`),null}}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-iframe"]],viewQuery:function(t,i){t&1&&te(i.iframe,hg,5),t&2&&be()},features:[ce],decls:4,vars:5,consts:[["plainIframe",""],[2,"overflow","hidden",3,"configChange","config","id"],["width","100%","height","100%","frameborder","0",1,"widgetIframe",3,"src"],[2,"padding","15px"],[1,"widgetOverlay"]],template:function(t,i){t&1&&(v(0,"widget-host",1),ve("configChange",function(r){return fe(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),De(1,ug,2,1,"iframe",2)(2,mg,7,0,"div",3),G(3,"div",4),_()),t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),Ae(i.widgetUrl?1:2),k(2),we("display",i.displayTransparentOverlay()))},dependencies:[Ce],styles:[".widgetIframe[_ngcontent-%COMP%]{background-color:#fff;border-radius:var(--mat-card-elevated-container-shape, var(--mat-sys-corner-medium))}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent}"]})}return a})();var Do=(()=>{class a{kipTimers={};constructor(){}createTimer(e,t,i){return e in this.kipTimers?this.kipTimers[e].currentValue.asObservable():(this.kipTimers[e]={currentValue:new _i(t),timeoutID:null,intervalMS:i},this.kipTimers[e].currentValue.asObservable())}startTimer(e){Object.prototype.hasOwnProperty.call(this.kipTimers,e)&&this.kipTimers[e].timeoutID===null&&(this.kipTimers[e].timeoutID=setInterval(()=>{this.kipTimers[e].currentValue.next(this.kipTimers[e].currentValue.value+1)},this.kipTimers[e].intervalMS))}stopTimer(e){Object.prototype.hasOwnProperty.call(this.kipTimers,e)&&this.kipTimers[e].timeoutID!==null&&(clearInterval(this.kipTimers[e].timeoutID),this.kipTimers[e].timeoutID=null)}setTimer(e,t){Object.prototype.hasOwnProperty.call(this.kipTimers,e)&&this.kipTimers[e].currentValue.next(t)}deleteTimer(e){Object.prototype.hasOwnProperty.call(this.kipTimers,e)&&(this.stopTimer(e),this.kipTimers[e].currentValue.complete(),delete this.kipTimers[e])}isRunning(e){let t=!1;return e in this.kipTimers&&(t=this.kipTimers[e].timeoutID!==null),t}ngOnDestroy(){Object.keys(this.kipTimers).forEach(e=>{this.kipTimers[e].timeoutID&&(clearInterval(this.kipTimers[e].timeoutID),this.kipTimers[e].timeoutID=null),this.kipTimers[e].currentValue.complete()}),this.kipTimers={}}static \u0275fac=function(t){return new(t||a)};static \u0275prov=st({token:a,factory:a.\u0275fac,providedIn:"root"})}return a})();var pg=["canvasMainRef"];function gg(a,n){if(a&1){let e=Y();v(0,"button",11),I("click",function(){P(e);let i=U();return O(i.startTimer())}),b(1," Start "),_()}}function fg(a,n){if(a&1){let e=Y();v(0,"button",12),I("click",function(){P(e);let i=U();return O(i.pauseTimer())}),b(1," Pause "),_()}}var th=(()=>{class a extends Se{canvas=E(tt);canvasMainRef=ie.required("canvasMainRef");canvasElement;canvasCtx;cssWidth=0;cssHeight=0;maxTextWidth=0;maxTextHeight=0;TimersService=E(Do);dataValue=null;zoneState=null;currentValueLength=0;valueFontSize=1;flashOn=!1;flashInterval=null;timerRunning=!1;timeName="race";warnColor=null;warmContrast=null;textColor=null;timerSub=null;constructor(){super(),this.defaultConfig={timerLength:300,color:"contrast"},ne(()=>{this.theme()&&(this.getColors(this.widgetProperties.config.color),this.drawWidget())})}ngOnInit(){this.validateConfig(),this.subscribeTimer()}ngAfterViewInit(){this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.maxTextWidth=Math.floor(this.cssWidth*.95),this.maxTextHeight=Math.floor(this.cssHeight),this.drawWidget()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.startWidget()}startWidget(){this.getColors(this.widgetProperties.config.color)}updateConfig(e){this.widgetProperties.config=e,this.startWidget(),this.drawWidget()}subscribeTimer(){this.timerRunning=this.TimersService.isRunning(this.timeName),this.timerSub=this.TimersService.createTimer(this.timeName,-3e3,100).subscribe(e=>{this.dataValue=e,e>0?this.zoneState=J.Normal:e>-100?this.zoneState=J.Alarm:e>-300?this.zoneState=J.Warn:this.zoneState=J.Normal,this.zoneState==J.Alarm&&!this.flashInterval?this.flashInterval=setInterval(()=>{this.flashOn=!this.flashOn,this.drawWidget()},500):this.zoneState!=J.Alarm&&(clearInterval(this.flashInterval),this.flashInterval=null),this.drawWidget()})}startTimer(){this.TimersService.startTimer(this.timeName),this.timerRunning=!0}resetTimer(){this.unsubscribeTimer(),this.TimersService.deleteTimer(this.timeName),this.timerRunning=!1,this.subscribeTimer()}pauseTimer(){this.TimersService.stopTimer(this.timeName),this.timerRunning=!1}roundToMin(){let e=this.dataValue;this.dataValue<0&&(e=e*-1);let t=e%600;this.dataValue>0?t>300?this.TimersService.setTimer(this.timeName,this.dataValue+(600-t)):this.TimersService.setTimer(this.timeName,this.dataValue-t):t>300?this.TimersService.setTimer(this.timeName,this.dataValue-(600-t)):this.TimersService.setTimer(this.timeName,this.dataValue+t)}addOneMin(){this.TimersService.setTimer(this.timeName,this.dataValue+600)}remOneMin(){this.TimersService.setTimer(this.timeName,this.dataValue-600)}getColors(e){switch(e){case"contrast":this.textColor=this.theme().contrast,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"blue":this.textColor=this.theme().blue,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"green":this.textColor=this.theme().green,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"pink":this.textColor=this.theme().pink,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"orange":this.textColor=this.theme().orange,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"purple":this.textColor=this.theme().purple,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"grey":this.textColor=this.theme().grey,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"yellow":this.textColor=this.theme().yellow,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;default:this.textColor=this.theme().contrast,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break}}unsubscribeTimer(){this.timerSub?.unsubscribe()}ngOnDestroy(){this.timerSub?.unsubscribe();try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}clearInterval(this.flashInterval),this.flashInterval=null,this.destroyDataStreams()}drawWidget(){if(!this.canvasCtx)return;this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight);let e;if(this.dataValue!=null){let t=Math.abs(this.dataValue),i=Math.floor(t/600),o=Math.floor(t%600/10),r=Math.floor(t%10);e=`${i}:${("0"+o).slice(-2)}.${r}`,this.dataValue<0&&(e=`-${e}`)}else e="--";switch(this.currentValueLength!==e.length&&(this.currentValueLength=e.length,this.valueFontSize=this.canvas.calculateOptimalFontSize(this.canvasCtx,e,this.maxTextWidth,this.maxTextHeight,"bold")),this.zoneState){case J.Alarm:this.flashOn?this.canvasCtx.fillStyle=this.textColor:(this.canvas.drawRectangle(this.canvasCtx,0,0,this.cssWidth,this.cssHeight,this.warnColor),this.canvasCtx.fillStyle=this.textColor);break;case J.Warn:this.canvasCtx.fillStyle=this.warnColor;break;default:this.canvasCtx.fillStyle=this.textColor}this.canvas.drawText(this.canvasCtx,e,this.cssWidth/2,this.cssHeight/2,this.maxTextWidth,this.maxTextHeight,"bold",this.canvasCtx.fillStyle,"center","middle")}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-racetimer"]],viewQuery:function(t,i){t&1&&te(i.canvasMainRef,pg,5),t&2&&be()},features:[ce],decls:16,vars:4,consts:[["canvasMainRef",""],[1,"racetimer-wrapper",3,"configChange","config","id"],[1,"racetimer-canvas"],[1,"timerBarContainer"],[1,"timer-button-groups","timer-adjusters-group"],["mat-flat-button","",1,"timer-adjust-buttons",3,"click"],["mat-flat-button","",1,"timer-reset-button",3,"click"],[1,"timer-button-groups","timer-countdown-group"],["mat-flat-button","",1,"timer-start-button","button-color-red"],["mat-flat-button","",1,"timer-start-button"],["mat-flat-button","",1,"timer-synch-button","button-color-red",3,"click"],["mat-flat-button","",1,"timer-start-button","button-color-red",3,"click"],["mat-flat-button","",1,"timer-start-button",3,"click"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),G(1,"canvas",2,0),v(3,"div",3)(4,"div",4)(5,"button",5),I("click",function(){return P(o),O(i.remOneMin())}),b(6," -1 "),_(),v(7,"button",6),I("click",function(){return P(o),O(i.resetTimer())}),b(8," Reset "),_(),v(9,"button",5),I("click",function(){return P(o),O(i.addOneMin())}),b(10," +1 "),_()(),v(11,"div",7),De(12,gg,2,0,"button",8),De(13,fg,2,0,"button",9),v(14,"button",10),I("click",function(){return P(o),O(i.roundToMin())}),b(15," Synch "),_()()()()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(12),Ae(i.timerRunning?-1:12),k(),Ae(i.timerRunning?13:-1))},dependencies:[Ce,gt],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.racetimer-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.racetimer-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;display:block}.button-color-red[_ngcontent-%COMP%]{--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.timerBarContainer[_ngcontent-%COMP%]{position:absolute;left:0;bottom:8%;height:auto;width:calc(100% - 20px);margin:0 10px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:stretch;align-content:stretch;gap:20px}.timer-button-groups[_ngcontent-%COMP%]{min-width:247px;max-width:100%;--mat-button-filled-container-shape: 5px}.timer-adjusters-group[_ngcontent-%COMP%]{flex-grow:1;flex-shrink:1}.timer-countdown-group[_ngcontent-%COMP%]{flex-grow:3;flex-shrink:3}.timer-synch-button[_ngcontent-%COMP%]{width:calc(50% - 5px);margin-left:5px}.timer-start-button[_ngcontent-%COMP%]{width:calc(50% - 5px);margin-right:5px}.timer-reset-button[_ngcontent-%COMP%]{width:calc(40% + -0px);margin:0 10px}.timer-adjust-buttons[_ngcontent-%COMP%]{width:calc(30% - 10px)}"]})}return a})();var vg=["canvasMainRef"];function yg(a,n){if(a&1&&(v(0,"div",10),re(),v(1,"svg",11)(2,"text",12),b(3),_()()(),et(),v(4,"div",13),re(),v(5,"svg",14)(6,"text",15)(7,"tspan",16),b(8,"\u2691"),_(),b(9),v(10,"tspan",17),b(11,"\u2691"),_()()()(),et(),v(12,"div",18),re(),v(13,"svg",19)(14,"text",12),b(15),_()()()),a&2){let e=U();k(3),He(e.portBiasValue()),k(6),He(e.lineLengthValue()),k(6),He(e.stbBiasValue())}}function bg(a,n){if(a&1){let e=Y();v(0,"button",20),I("click",function(){P(e);let i=U();return O(i.setLineEnd("port"))}),v(1,"mat-icon",6),re(),v(2,"svg",7)(3,"text",21),b(4,"Port End"),_()()()(),et(),v(5,"button",22),I("click",function(){P(e);let i=U();return O(i.setLineEnd("stb"))}),v(6,"mat-icon",6),re(),v(7,"svg",7)(8,"text",21),b(9,"Stbd End"),_()()()()}}function wg(a,n){if(a&1){let e=Y();v(0,"button",23),I("click",function(){P(e);let i=U();return O(i.adjustLineEnd("port",5,0))}),v(1,"mat-icon",6),re(),v(2,"svg",7)(3,"text",24),b(4,"+5m"),_()()()(),et(),v(5,"button",23),I("click",function(){P(e);let i=U();return O(i.adjustLineEnd("port",-5,0))}),v(6,"mat-icon",6),re(),v(7,"svg",7)(8,"text",24),b(9,"-5m"),_()()()(),et(),v(10,"button",25),I("click",function(){P(e);let i=U();return O(i.adjustLineEnd("stb",5,0))}),v(11,"mat-icon",6),re(),v(12,"svg",7)(13,"text",24),b(14,"-5m"),_()()()(),et(),v(15,"button",25),I("click",function(){P(e);let i=U();return O(i.adjustLineEnd("stb",-5,0))}),v(16,"mat-icon",6),re(),v(17,"svg",7)(18,"text",24),b(19,"+5m"),_()()()()}}function _g(a,n){if(a&1){let e=Y();v(0,"button",23),I("click",function(){P(e);let i=U();return O(i.adjustLineEnd("port",0,i.toRadians(1)))}),v(1,"mat-icon",6),re(),v(2,"svg",7)(3,"text",24),b(4,"\u21911\xB0"),_()()()(),et(),v(5,"button",23),I("click",function(){P(e);let i=U();return O(i.adjustLineEnd("port",0,i.toRadians(-1)))}),v(6,"mat-icon",6),re(),v(7,"svg",7)(8,"text",24),b(9,"\u21931\xB0"),_()()()(),et(),v(10,"button",25),I("click",function(){P(e);let i=U();return O(i.adjustLineEnd("stb",0,i.toRadians(1)))}),v(11,"mat-icon",6),re(),v(12,"svg",7)(13,"text",24),b(14,"\u21911\xB0"),_()()()(),et(),v(15,"button",25),I("click",function(){P(e);let i=U();return O(i.adjustLineEnd("stb",0,i.toRadians(-1)))}),v(16,"mat-icon",6),re(),v(17,"svg",7)(18,"text",24),b(19,"\u21931\xB0"),_()()()()}}function Sg(a,n){a&1&&G(0,"div",9)}var ih=(()=>{class a extends Se{signalk=E(Gt);dashboard=E(nt);canvas=E(tt);canvasMainRef=ie.required("canvasMainRef");canvasElement;canvasCtx;cssWidth=0;cssHeight=0;titleBitmap=null;titleBitmapText=null;dtsValue=null;lengthValue=null;biasValue=null;labelColor=K(void 0);valueColor=void 0;dtsColor=void 0;maxValueTextWidth=0;maxValueTextHeight=0;portBiasValue=K("");lineLengthValue=K("");stbBiasValue=K("");infoFontSize="1em";initCompleted=!1;isDestroyed=!1;mode=0;destroyRef=E(oi);constructor(){super(),this.defaultConfig={displayName:"DTS",filterSelfPaths:!0,playBeeps:!0,convertUnitTo:"m",convertUnitToGroup:"Length",numDecimal:0,ignoreZones:!0,color:"contrast",enableTimeout:!1,dataTimeout:5,paths:{dtsPath:{description:"Distance to Start Line",path:"self.navigation.racing.distanceStartline",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!0,pathSkUnitsFilter:"m",sampleTime:500},lineLengthPath:{description:"Length of the start line",path:"self.navigation.racing.startLineLength",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!0,pathSkUnitsFilter:"m",sampleTime:1e3},lineBiasPath:{description:"Bias of the start line to starboard end",path:"self.navigation.racing.stbLineBias",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!0,pathSkUnitsFilter:"m",sampleTime:1e3}}},ne(()=>{if(this.theme()){if(!this.initCompleted)return;Ke(()=>{this.labelColor.set(he(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=he(this.widgetProperties.config.color,this.theme()).color,this.drawWidget()})}})}ngOnInit(){this.validateConfig(),this.labelColor.set(he(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=he(this.widgetProperties.config.color,this.theme()).color}ngAfterViewInit(){this.initCompleted=!0,this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.maxValueTextWidth=Math.floor(this.cssWidth*.95),this.maxValueTextHeight=Math.floor(this.cssHeight*.95),this.drawWidget()}}),!this.isDestroyed&&(this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.maxValueTextWidth=Math.floor(this.cssWidth*.95),this.maxValueTextHeight=Math.floor(this.cssHeight*.95),this.startWidget())}startWidget(){this.widgetProperties.config.paths.dtsPath.convertUnitTo=this.widgetProperties.config.convertUnitTo||"m",this.widgetProperties.config.paths.lineLengthPath.convertUnitTo=this.widgetProperties.config.convertUnitTo||"m",this.widgetProperties.config.paths.lineBiasPath.convertUnitTo=this.widgetProperties.config.convertUnitTo||"m",this.unsubscribeDataStream(),this.dtsValue=null,this.lengthValue=null,this.biasValue=null,this.drawUnit(),this.observeDataStream("dtsPath",e=>{if(this.dtsValue=e.data.value,this.widgetProperties.config.ignoreZones)this.dtsValue?this.dtsValue<0?this.dtsColor=this.theme().zoneAlarm:this.dtsValue<10?this.dtsColor=this.theme().zoneWarn:this.dtsValue<20?this.dtsColor=this.theme().zoneAlert:this.dtsColor=this.valueColor:this.dtsColor=this.valueColor;else switch(e.state){case J.Alarm:this.dtsColor=this.theme().zoneAlarm;break;case J.Warn:this.dtsColor=this.theme().zoneWarn;break;case J.Alert:this.dtsColor=this.theme().zoneAlert;break;default:this.dtsColor=this.valueColor;break}this.drawWidget()}),this.observeDataStream("lineLengthPath",e=>{this.lengthValue=e.data.value,this.drawWidget()}),this.observeDataStream("lineBiasPath",e=>{this.biasValue=e.data.value,this.drawLenBias()}),this.signalk.subscribeRequest().pipe(mt(this.destroyRef)).subscribe(e=>{e.widgetUUID===this.widgetProperties.uuid&&(e.statusCode===200?this.beep(600,20):this.app.sendSnackbarNotification(`Please check the Signalk-racer plugin installation/configuration. Error: ${e.message}`,0,!1))})}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}beep(e=440,t=100){if(this.widgetProperties.config.playBeeps){let i=new(window.AudioContext||window.webkitAudioContext),o=i.createOscillator(),r=i.createGain();o.connect(r),r.connect(i.destination),o.type="sine",o.frequency.value=e,r.gain.value=.1,o.start(),o.stop(i.currentTime+t/1e3)}}drawWidget(){this.canvasCtx&&((!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==this.widgetProperties.config.displayName)&&(this.titleBitmap=this.canvas.createTitleBitmap(this.widgetProperties.config.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=this.widgetProperties.config.displayName),this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.titleBitmap.width>0&&this.titleBitmap.height>0&&this.canvasCtx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight),this.drawDToLine(),this.drawLenBias(),this.drawUnit())}drawDToLine(){let e=this.getValueText();this.canvas.drawText(this.canvasCtx,e,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.3),this.maxValueTextWidth,this.maxValueTextHeight,"bold",this.dtsColor)}getValueText(){return this.dtsValue===null?"--":this.dtsValue.toFixed(this.widgetProperties.config.numDecimal)}drawUnit(){let e=this.widgetProperties.config.paths.dtsPath.convertUnitTo;this.canvas.drawText(this.canvasCtx,e,Math.floor(this.cssWidth-10*this.canvas.scaleFactor),Math.floor(this.cssHeight-7*this.canvas.scaleFactor),Math.floor(this.cssWidth*.25),Math.floor(this.cssHeight*.15),"bold",this.dtsColor,"end","alphabetic")}drawLenBias(){if(this.widgetProperties.config.paths.lineLengthPath.path!==""&&this.lengthValue){let e=this.widgetProperties.config.paths.lineLengthPath.convertUnitTo;e==="feet"&&(e="\u2032"),this.lineLengthValue.set(`\u2015${this.applyDecorations(this.lengthValue.toFixed(this.widgetProperties.config.numDecimal))}${e}\u2015`)}if(this.widgetProperties.config.paths.lineBiasPath.path!==""&&this.biasValue){let e=this.widgetProperties.config.paths.lineBiasPath.convertUnitTo;e==="feet"&&(e="\u2032"),this.biasValue<0?(this.portBiasValue.set("+"+(-this.biasValue).toFixed(this.widgetProperties.config.numDecimal)+e),this.stbBiasValue.set(this.biasValue.toFixed(this.widgetProperties.config.numDecimal)+e)):(this.portBiasValue.set(" "+(-this.biasValue).toFixed(this.widgetProperties.config.numDecimal)+e),this.stbBiasValue.set(" +"+this.biasValue.toFixed(this.widgetProperties.config.numDecimal)+e))}}applyDecorations(e){switch(this.widgetProperties.config.paths.dtsPath.convertUnitTo){case"percent":case"percentraw":e+="%";break;default:break}return e}toggleMode(){this.mode=(this.mode+1)%4,this.drawWidget()}setLineEnd(e){return this.signalk.putRequest("navigation.racing.setStartLine",{end:e,position:"bow"},this.widgetProperties.uuid)}adjustLineEnd(e,t,i){return this.signalk.putRequest("navigation.racing.setStartLine",{end:e,delta:t,rotate:i||null},this.widgetProperties.uuid)}toRadians(e){return e?e*(Math.PI/180):null}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams(),this.canvas.releaseCanvas(this.canvasElement,{clear:!0,removeFromDom:!0})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-racer-line"]],viewQuery:function(t,i){t&1&&te(i.canvasMainRef,vg,5),t&2&&be()},features:[ce],decls:15,vars:4,consts:[["canvasMainRef",""],[1,"line-wrapper",3,"configChange","config","id"],[1,"filler"],[1,"line-canvas"],[1,"buttons-container"],["mat-flat-button","",1,"button","select-button",3,"click"],[1,"buttons-svg-icon"],["width","100%","height","100%","viewBox","0 0 100 14","preserveAspectRatio","xMidYMid meet",1,"svg-content"],[0,"xml","space","preserve","x","50","y","9"],[1,"widgetOverlay"],[1,"pin-container"],["width","100%","height","100%","viewBox","0 0 70 18","preserveAspectRatio","xMidYMid meet",1,"svg-content","pin"],[0,"xml","space","preserve","x","33","y","14"],[1,"len-bias-container"],["width","100%","height","100%","viewBox","0 0 90 12","preserveAspectRatio","xMidYMid meet",1,"svg-content","len-bias"],[0,"xml","space","preserve","x","45","y","9"],[1,"pin"],[1,"boat"],[1,"boat-container"],["width","100%","height","100%","viewBox","0 0 70 18","preserveAspectRatio","xMidYMid meet",1,"svg-content","boat"],["mat-flat-button","",1,"button","port-button",3,"click"],[0,"xml","space","preserve","x","50","y","11"],["mat-flat-button","",1,"button","starboard-button",3,"click"],["mat-flat-button","",1,"button","port-small-button",3,"click"],[0,"xml","space","preserve","x","50","y","12"],["mat-flat-button","",1,"button","starboard-small-button",3,"click"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),v(1,"div",2),G(2,"canvas",3,0),_(),v(4,"div",4)(5,"button",5),I("click",function(){return P(o),O(i.toggleMode())}),v(6,"mat-icon",6),re(),v(7,"svg",7)(8,"text",8),b(9,"\u22EE"),_()()()(),De(10,yg,16,3)(11,bg,10,0)(12,wg,20,0)(13,_g,20,0),_(),De(14,Sg,1,0,"div",9),_()}if(t&2){let o;ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(10),Ae((o=i.mode)===0?10:o===1?11:o===2?12:o===3?13:-1),k(4),Ae(i.dashboard.isDashboardStatic()?-1:14)}},dependencies:[Ce,it,ft,gt,pt,bt],styles:["[_nghost-%COMP%]{overflow:clip;display:block;height:100%;width:100%}.line-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.line-canvas[_ngcontent-%COMP%]{position:absolute;width:100%!important;height:76%!important;display:block;top:0;left:0}.filler[_ngcontent-%COMP%]{width:100%;height:76%}.buttons-container[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;justify-content:space-between;column-gap:2%;position:relative;height:24%;width:100%;padding:0 10px 14px;z-index:20;pointer-events:auto;align-items:center}.button[_ngcontent-%COMP%]{min-width:0px;width:100%;border-radius:12px;align-items:center;justify-content:center;cursor:pointer;--mat-button-filled-container-height: 100%;--mat-button-filled-horizontal-padding: 0px;--mat-button-filled-icon-spacing: 0px}.select-button[_ngcontent-%COMP%]{flex:none;width:18%;--mat-button-filled-container-color: var(--kip-blue-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.port-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.starboard-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-starboard-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.port-small-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.starboard-small-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-starboard-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.buttons-svg-icon[_ngcontent-%COMP%]{width:100%;height:100%;margin:0;padding:0}.svg-content[_ngcontent-%COMP%]{width:100%;height:100%;padding:0;margin:0}.svg-content[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-family:Roboto;font-size:15px;font-weight:700;text-align:center;text-anchor:middle;font-style:normal;font-variant:normal;font-stretch:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke:none}.pin-container[_ngcontent-%COMP%]{flex-basis:18%}.pin[_ngcontent-%COMP%]{fill:var(--kip-port-color)}.pin[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-size:19px}.len-bias-container[_ngcontent-%COMP%]{flex-basis:35%}.len-bias[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.len-bias[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-size:12px}.boat-container[_ngcontent-%COMP%]{flex-basis:18%}.boat[_ngcontent-%COMP%]{fill:var(--kip-starboard-color)}.boat[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-size:19px}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent;z-index:21}"]})}return a})();var Cg=["canvasMainRef"];function kg(a,n){if(a&1&&(v(0,"div",9),re(),v(1,"svg",12)(2,"text",13),b(3),_()()()),a&2){let e=U();k(3),rt("Start at: ",e.startAtTime())}}function xg(a,n){if(a&1){let e=Y();v(0,"button",14),I("click",function(){P(e);let i=U();return O(i.sendStartTimerCommand("start"))}),v(1,"mat-icon",6),re(),v(2,"svg",7)(3,"text",15),b(4,"Start"),_()()()(),et(),v(5,"button",16),I("click",function(){P(e);let i=U();return O(i.adjustStartTime(-60))}),v(6,"mat-icon",6),re(),v(7,"svg",7)(8,"text",15),b(9,"-1m"),_()()()(),et(),v(10,"button",16),I("click",function(){P(e);let i=U();return O(i.adjustStartTime(60))}),v(11,"mat-icon",6),re(),v(12,"svg",7)(13,"text",15),b(14,"+1m"),_()()()()}}function Tg(a,n){if(a&1){let e=Y();v(0,"button",14),I("click",function(){P(e);let i=U();return O(i.sendStartTimerCommand("sync"))}),v(1,"mat-icon",6),re(),v(2,"svg",7)(3,"text",15),b(4,"Sync"),_()()()(),et(),v(5,"button",17),I("click",function(){P(e);let i=U();return O(i.sendStartTimerCommand("reset"))}),v(6,"mat-icon",6),re(),v(7,"svg",7)(8,"text",15),b(9,"Reset"),_()()()()}}function Eg(a,n){if(a&1){let e=Y();v(0,"button",18),I("click",function(){P(e);let i=U();return O(i.adjustStartTime(-60))}),v(1,"mat-icon",6),re(),v(2,"svg",7)(3,"text",15),b(4,"-1m"),_()()()(),et(),v(5,"button",16),I("click",function(){P(e);let i=U();return O(i.adjustStartTime(-1))}),v(6,"mat-icon",6),re(),v(7,"svg",7)(8,"text",15),b(9,"-1s"),_()()()(),et(),v(10,"button",16),I("click",function(){P(e);let i=U();return O(i.adjustStartTime(1))}),v(11,"mat-icon",6),re(),v(12,"svg",7)(13,"text",15),b(14,"+1s"),_()()()(),et(),v(15,"button",18),I("click",function(){P(e);let i=U();return O(i.adjustStartTime(60))}),v(16,"mat-icon",6),re(),v(17,"svg",7)(18,"text",15),b(19,"+1m"),_()()()()}}function Mg(a,n){if(a&1){let e=Y();v(0,"input",19),ve("ngModelChange",function(i){P(e);let o=U();return fe(o.startAtTimeEdit,i)||(o.startAtTimeEdit=i),O(i)}),I("change",function(){P(e);let i=U();return O(i.setStartTime())}),_()}if(a&2){let e=U();ge("ngModel",e.startAtTimeEdit)}}function Dg(a,n){a&1&&G(0,"div",11)}var nh=(()=>{class a extends Se{signalk=E(Gt);router=E(ci);dashboard=E(nt);canvas=E(tt);canvasMainRef=ie.required("canvasMainRef");canvasElement;canvasCtx;cssWidth=0;cssHeight=0;titleBitmap=null;titleBitmapText=null;ttsValue=null;dtsValue=null;labelColor=K(void 0);valueColor=void 0;valueStateColor=void 0;maxValueTextWidth=0;maxValueTextHeight=0;flashInterval=null;isDestroyed=!1;mode=K(1);destroyRef=E(oi);startAtTime=K("00:00:00");startAtTimeEdit=ji("");constructor(){super(),this.defaultConfig={displayName:"TTS",nextDashboard:0,playBeeps:!0,filterSelfPaths:!0,paths:{ttsPath:{description:"Time to the Start in seconds",path:"self.navigation.racing.timeToStart",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"s",showConvertUnitTo:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"s",sampleTime:500},startTimePath:{description:"Time of the start",path:"self.navigation.racing.startTime",source:"default",pathType:"Date",pathRequired:!1,isPathConfigurable:!1,sampleTime:500},dtsPath:{description:"Distance to Start Line path, used to determine OCS",path:"self.navigation.racing.distanceStartline",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m",sampleTime:500}},color:"contrast",enableTimeout:!1,dataTimeout:5,ignoreZones:!0},ne(()=>{this.theme()&&Ke(()=>{this.labelColor.set(he(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=he(this.widgetProperties.config.color,this.theme()).color,this.drawWidget()})})}ngOnInit(){this.validateConfig()}ngAfterViewInit(){this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.maxValueTextWidth=Math.floor(this.cssWidth*.95),this.maxValueTextHeight=Math.floor(this.cssHeight*.95),this.drawWidget()}}),!this.isDestroyed&&(this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.maxValueTextWidth=Math.floor(this.cssWidth*.95),this.maxValueTextHeight=Math.floor(this.cssHeight*.95),this.startWidget(),this.drawWidget())}beep(e=440,t=100){if(this.widgetProperties.config.playBeeps){let i=new(window.AudioContext||window.webkitAudioContext),o=i.createOscillator(),r=i.createGain();o.connect(r),r.connect(i.destination),o.type="sine",o.frequency.value=e,r.gain.value=.1,o.start(),o.stop(i.currentTime+t/1e3)}}startWidget(){this.unsubscribeDataStream(),this.ttsValue=null,this.dtsValue=null,this.labelColor.set(he(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=he(this.widgetProperties.config.color,this.theme()).color,this.observeDataStream("ttsPath",e=>{let t=this.ttsValue;if(this.ttsValue=e.data.value,this.widgetProperties.config.ignoreZones)this.ttsValue?this.ttsValue===0?this.valueStateColor=this.valueColor:this.ttsValue<10?this.valueStateColor=this.dtsValue<0?this.theme().zoneAlarm:this.theme().zoneWarn:this.ttsValue<60?this.valueStateColor=this.theme().zoneAlert:this.valueStateColor=this.valueColor:this.valueStateColor=this.valueColor;else switch(e.state){case J.Alarm:this.valueStateColor=this.theme().zoneAlarm;break;case J.Warn:this.valueStateColor=this.theme().zoneWarn;break;case J.Alert:this.valueStateColor=this.theme().zoneAlert;break;default:this.valueStateColor=this.valueColor;break}this.ttsValue===0?(this.mode.set(2),this.dtsValue<0&&(this.valueStateColor=this.theme().zoneAlarm)):this.mode()===1&&this.isStartTimerRunning()&&this.mode.set(2),this.drawWidget(),this.startAtTime()!==null&&this.startAtTime()!=="HH:MM:SS"&&t!==0&&(this.ttsValue===0?this.beep(500,1e3):this.ttsValue<10?this.beep(450,100):this.ttsValue<60&&this.ttsValue%10===0?this.beep(400,150):this.ttsValue%60===0&&this.beep(350,200)),this.widgetProperties.config.nextDashboard>=0&&t===1&&this.ttsValue===0&&(!this.dtsValue||this.dtsValue>=0)&&this.router.navigate(["/dashboard",this.widgetProperties.config.nextDashboard])}),this.observeDataStream("startTimePath",e=>{if(!e.data.value)this.startAtTime.set("HH:MM:SS"),this.startAtTimeEdit.set("HH:MM:SS"),this.mode()===2&&this.mode.set(1);else{let t=new Date(e.data.value);this.startAtTimeEdit.set(t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})),this.startAtTime.set(this.startAtTimeEdit())}this.drawWidget()}),this.observeDataStream("dtsPath",e=>{this.dtsValue=e.data.value}),this.signalk.subscribeRequest().pipe(mt(this.destroyRef)).subscribe(e=>{e.widgetUUID===this.widgetProperties.uuid&&(e.statusCode===200?this.beep(600,20):this.app.sendSnackbarNotification(`Please check the Signalk-racer plugin installation/configuration. Error: ${e.message}`,0,!1))})}isStartTimerRunning(){return this.ttsValue>0&&this.startAtTime()!==null&&this.startAtTime()!=="HH:MM:SS"}updateConfig(e){this.widgetProperties.config=e,this.startWidget(),this.drawWidget()}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams(),this.flashInterval&&(clearInterval(this.flashInterval),this.flashInterval=null);try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}drawWidget(){if(!this.canvasCtx)return;(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==this.widgetProperties.config.displayName)&&(this.titleBitmap=this.canvas.createTitleBitmap(this.widgetProperties.config.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=this.widgetProperties.config.displayName),this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.titleBitmap.width>0&&this.titleBitmap.height>0&&this.canvasCtx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight);let e=this.getValueText();this.canvas.drawText(this.canvasCtx,e,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.3),this.maxValueTextWidth,this.maxValueTextHeight,"bold",this.valueStateColor)}getValueText(){if(this.ttsValue===null)return"--";let e=this.ttsValue,t=Math.floor(e/60);if(t>=60){let i=Math.floor(t/60),o=Math.floor(t%60),r=Math.floor(e%60);return`${i.toString()}:${o.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}else{let i=Math.floor(t%60),o=Math.floor(e%60);return`${i.toString().padStart(1,"0")}:${o.toString().padStart(2,"0")}`}}toggleMode(){switch(this.mode.update(e=>(e+1)%5),this.mode()){case 1:this.isStartTimerRunning()&&this.mode.set(2);break;case 2:this.ttsValue!==0&&!this.isStartTimerRunning()&&this.mode.set(3);break;default:}this.drawWidget()}sendStartTimerCommand(e){let t=this.signalk.putRequest("navigation.racing.setStartTime",{command:e},this.widgetProperties.uuid);switch(e){case"start":this.mode.set(0);break;case"reset":this.startAtTime.set("HH:MM:SS"),this.mode.set(1);break;default:}return t}adjustStartTime(e){return this.signalk.putRequest("navigation.racing.setStartTime",{command:"adjust",delta:e},this.widgetProperties.uuid)}setStartTime(){let e=new Date,t=this.startAtTimeEdit().split(":").map(Number),i=t[0],o=t[1],r=t.length>=3?t[2]:0,l=new Date(e);l.setHours(i,o,r,0),l<=e&&l.setDate(l.getDate()+1),this.mode.set(0),this.signalk.putRequest("navigation.racing.setStartTime",{command:"set",startTime:l.toISOString()},this.widgetProperties.uuid)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-racer-timer"]],viewQuery:function(t,i){t&1&&te(i.canvasMainRef,Cg,5),t&2&&be()},inputs:{startAtTimeEdit:[1,"startAtTimeEdit"]},outputs:{startAtTimeEdit:"startAtTimeEditChange"},features:[ce],decls:16,vars:4,consts:[["canvasMainRef",""],[1,"timer-wrapper",3,"configChange","config","id"],[1,"filler"],[1,"timer-canvas"],[1,"buttons-container"],["mat-flat-button","",1,"button","select-button",3,"click"],[1,"buttons-svg-icon"],["width","100%","height","100%","viewBox","0 0 100 14","preserveAspectRatio","xMidYMid meet",1,"svg-content"],[0,"xml","space","preserve","x","50","y","9"],[1,"start-at"],["matInput","","type","time","step","1",1,"set-start-at",3,"ngModel"],[1,"widgetOverlay"],["width","100%","height","100%","viewBox","0 0 90 12","preserveAspectRatio","xMidYMid meet",1,"svg-content","svg-start-at"],[0,"xml","space","preserve","x","45","y","10"],["mat-flat-button","",1,"button","main-button",3,"click"],[0,"xml","space","preserve","x","50","y","11"],["mat-flat-button","",1,"button","other-small-button",3,"click"],["mat-flat-button","",1,"button","other-button",3,"click"],["mat-flat-button","",1,"button","main-small-button",3,"click"],["matInput","","type","time","step","1",1,"set-start-at",3,"ngModelChange","change","ngModel"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),v(1,"div",2),G(2,"canvas",3,0),_(),v(4,"div",4)(5,"button",5),I("click",function(){return P(o),O(i.toggleMode())}),v(6,"mat-icon",6),re(),v(7,"svg",7)(8,"text",8),b(9,"\u22EE"),_()()()(),De(10,kg,4,1,"div",9)(11,xg,15,0)(12,Tg,10,0)(13,Eg,20,0)(14,Mg,1,1,"input",10),_(),De(15,Dg,1,0,"div",11),_()}if(t&2){let o;ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(10),Ae((o=i.mode())===0?10:o===1?11:o===2?12:o===3?13:o===4?14:-1),k(5),Ae(i.dashboard.isDashboardStatic()?-1:15)}},dependencies:[Ce,it,ft,gt,pt,bt,Xl,Yl,Kl,Ql],styles:["[_nghost-%COMP%]{overflow:clip;display:block;height:100%;width:100%}.timer-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.timer-canvas[_ngcontent-%COMP%]{width:100%!important;height:76%!important;display:block}.filler[_ngcontent-%COMP%]{width:100%;height:76%}.buttons-container[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;justify-content:space-between;column-gap:2%;position:relative;height:24%;width:100%;padding:0 10px 14px;z-index:20;pointer-events:auto;align-items:center}.button[_ngcontent-%COMP%]{min-width:0px;width:100%;border-radius:12px;align-items:center;justify-content:center;cursor:pointer;--mat-button-filled-container-height: 100%;--mat-button-filled-horizontal-padding: 0px;--mat-button-filled-icon-spacing: 0px}.select-button[_ngcontent-%COMP%]{flex:none;width:18%;--mat-button-filled-container-color: var(--kip-blue-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.main-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.other-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-blue-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.main-small-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.other-small-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-blue-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.set-start-at[_ngcontent-%COMP%]{flex:1 1 auto;background-color:var(--kip-contrast-color)}.start-at[_ngcontent-%COMP%]{height:100%;width:100%;flex:1 1 auto}.start-at[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.start-at[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-family:Roboto;font-size:9px;font-weight:400;text-align:center;text-anchor:middle;font-style:normal;font-variant:normal;font-stretch:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke:none}.buttons-svg-icon[_ngcontent-%COMP%]{width:100%;height:100%;margin:0;padding:0}.svg-content[_ngcontent-%COMP%]{width:100%;height:100%;padding:0;margin:0}.svg-content[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-family:Roboto;font-size:15px;font-weight:700;text-align:center;text-anchor:middle;font-style:normal;font-variant:normal;font-stretch:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke:none}.svg-start-at[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{fill:var(--kip-contrast-dim-color)}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent;z-index:21}"]})}return a})();var Ag=["gaugeBarAnimate"];function Pg(a,n){if(a&1&&(re(),Q(0,"rect",14)),a&2){let e=n.$implicit,t=U();ae("fill",e.color)("x",5+(e.from-t.gaugeMinValue())*t.scaleSliceValue())("width",(e.to-e.from)*t.scaleSliceValue())}}var ah=(()=>{class a{gaugeBarAnimate=ie("gaugeBarAnimate");displayName=B.required();displayNameColor=B.required();dataValue=B.required();dataValueLabel=B.required();unitLabel=B.required();barColor=B.required();barColorGradient=B.required();barColorBackground=B.required();gaugeMinValue=B.required();gaugeMaxValue=B.required();highlights=B.required();scaleSliceValue=ct(()=>{let e=this.gaugeMaxValue()-this.gaugeMinValue();return e!==0?195/e:0});newGaugeValue=K(null);oldGaugeValue=K(null);scheduleRafId=null;constructor(){ne(()=>{let e=this.gaugeMinValue(),t=this.dataValue();t===null&&(t=e),Ke(()=>{this.oldGaugeValue.set(this.newGaugeValue()!==null?this.newGaugeValue():e),this.newGaugeValue.set(this.dataValue()!==null?(t-e)*this.scaleSliceValue():e),this.gaugeBarAnimate()?.nativeElement&&(this.scheduleRafId!==null&&cancelAnimationFrame(this.scheduleRafId),this.scheduleRafId=requestAnimationFrame(()=>{let i=this.gaugeBarAnimate();i?.nativeElement&&i.nativeElement.beginElement(),this.scheduleRafId=null}))})})}ngOnDestroy(){this.scheduleRafId!==null&&(cancelAnimationFrame(this.scheduleRafId),this.scheduleRafId=null)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["svg-simple-linear-gauge"]],viewQuery:function(t,i){t&1&&te(i.gaugeBarAnimate,Ag,5),t&2&&be()},inputs:{displayName:[1,"displayName"],displayNameColor:[1,"displayNameColor"],dataValue:[1,"dataValue"],dataValueLabel:[1,"dataValueLabel"],unitLabel:[1,"unitLabel"],barColor:[1,"barColor"],barColorGradient:[1,"barColorGradient"],barColorBackground:[1,"barColorBackground"],gaugeMinValue:[1,"gaugeMinValue"],gaugeMaxValue:[1,"gaugeMaxValue"],highlights:[1,"highlights"]},decls:26,vars:11,consts:[["gaugeBarAnimate",""],["viewBox","0 0 205 50","preserveAspectRatio","xMidYMid","version","1.1","id","svg8",1,"svg-simple-linear"],["id","defs2"],["id","gaugeBarGradient"],["id","stop849","offset","0",2,"stop-opacity","1"],["id","stop851","offset","0.40",2,"stop-opacity","0"],["id","linearGradient855","gradientTransform","translate(5,-30)","gradientUnits","userSpaceOnUse","y2","34.5","x2","-5","y1","34.5","x1","-6","href","#gaugeBarGradient"],["id","layer1",2,"display","inline"],["id","GaugeBackground","width","195","height","9","x","5","y","30","ry","0",2,"opacity","1","fill-opacity","1","stroke","none","stroke-width","0.265899","stroke-miterlimit","4","stroke-dasharray","none","stroke-opacity","1"],["id","gaugeBar"],["id","gaugeValue","width","1","height","9","x","0","y","0","ry","0",2,"mix-blend-mode","normal","fill-opacity","1","stroke","none"],["id","gaugeValueGradient","transform","scale(-1,1)","width","1","height","9","x","-1","y","0","ry","0",2,"display","inline","opacity","1","mix-blend-mode","multiply","fill","url(#linearGradient855)","stroke","none"],[0,"xlink","href","#gaugeBar","transform","translate(5,30)"],["attributeName","transform","type","scale","begin","indefinite","dur","0.5s","additive","sum","fill","freeze"],["y","39.5","height","0.75","ry","0",2,"opacity","1","fill-opacity","1","stroke","none","stroke-width","0.265899","stroke-miterlimit","4","stroke-dasharray","none","stroke-opacity","1"],["id","layer2",2,"display","inline"],[0,"xml","space","preserve","x","4.1731763","y","25.413595","id","displayNameText",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","12.7px","line-height","1.25","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","letter-spacing","0px","word-spacing","0px"],["id","tspan1945","x","4.1731763","y","25.413595",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","12.7px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal"],["text-anchor","end","id","gaugeTexts","y","25.293016","x","200.37138",0,"xml","space","preserve",1,"simpleLinear-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","22.5778px","line-height","1.25","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","letter-spacing","0px","word-spacing","0px"],["y","25.293016","x","200.37138","id","valueText",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","22.5778px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal"],["dy","-9","id","unitText",2,"text-transform","capitalize","font-size","9.87778px"]],template:function(t,i){t&1&&(re(),A(0,"svg",1)(1,"defs",2)(2,"linearGradient",3),Q(3,"stop",4)(4,"stop",5),W(),Q(5,"linearGradient",6),W(),A(6,"g",7),Q(7,"rect",8),A(8,"defs")(9,"g",9),Q(10,"rect",10)(11,"rect",11),W()(),A(12,"use",12),Q(13,"animateTransform",13,0),W(),Bt(15,Pg,1,3,":svg:rect",14,Si),W(),A(17,"g",15)(18,"text",16)(19,"tspan",17),b(20),W()(),A(21,"text",18)(22,"tspan",19),b(23),W(),A(24,"tspan",20),b(25),W()()()()),t&2&&(k(3),ae("stop-color",i.barColorGradient()),k(),ae("stop-color",i.barColorGradient()),k(3),ae("fill",i.barColorBackground()),k(5),we("fill",i.barColor()),k(),ae("from",i.oldGaugeValue()+" 1")("to",i.newGaugeValue()+" 1"),k(2),zt(i.highlights()),k(4),ae("fill",i.displayNameColor()),k(),rt(" ",i.displayName()),k(3),He(i.dataValueLabel()),k(2),He(i.unitLabel()))},styles:["svg[_ngcontent-%COMP%]{position:absolute;height:100%;width:100%;left:0;top:0}.simpleLinear-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}"]})}return a})();var oh=(()=>{class a extends Se{_units=E(hi);unitsLabel=K("");dataLabelValue=K("0");dataValue=K(null);barColor=K("");barColorGradient=K("");barColorBackground=K("");highlights=K([],{equal:Nt});zonesSub;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:"V",convertUnitTo:"V",sampleTime:500}},displayScale:{lower:0,upper:15,type:"linear"},gauge:{type:"simpleLinear",unitLabelFormat:"full"},numInt:1,numDecimal:2,ignoreZones:!1,color:"contrast",enableTimeout:!1,dataTimeout:5},ne(()=>{this.theme()&&(this.updateGaugeSettings(),this.startWidget())})}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.zonesSub?.unsubscribe(),this.widgetProperties.config.gauge.unitLabelFormat=="abr"?this.unitsLabel.set(this.widgetProperties.config.paths.gaugePath.convertUnitTo.substr(0,1)):this.unitsLabel.set(this.widgetProperties.config.paths.gaugePath.convertUnitTo),this.observeDataStream("gaugePath",e=>{if(e.data.value==null?(this.dataValue.set(this.widgetProperties.config.displayScale.lower),this.dataLabelValue.set("--")):(this.dataValue.set(Math.min(Math.max(e.data.value,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper)),this.dataLabelValue.set(this.dataValue().toFixed(this.widgetProperties.config.numDecimal))),!this.widgetProperties.config.ignoreZones)switch(e.state){case J.Alarm:this.barColor.set(this.theme().zoneAlarm);break;case J.Warn:this.barColor.set(this.theme().zoneWarn);break;case J.Alert:this.barColor.set(this.theme().zoneAlert);break;case J.Nominal:this.barColor.set(this.theme().zoneNominal);break;default:this.barColor.set(he(this.widgetProperties.config.color,this.theme()).color)}}),this.widgetProperties.config.ignoreZones?this.highlights.set([]):(this.observeMetaStream(),this.zonesSub=this.zones$.subscribe(e=>{e&&e.length>0?this.highlights.set(Yn(e,this.theme(),this.widgetProperties.config.paths.gaugePath.convertUnitTo,this._units,this.widgetProperties.config.displayScale.lower,this.widgetProperties.config.displayScale.upper)):this.highlights.set([])}))}updateConfig(e){this.widgetProperties.config=e,this.updateGaugeSettings(),this.startWidget()}updateGaugeSettings(){switch(this.barColorBackground.set(this.theme().background),this.widgetProperties.config.color){case"contrast":this.barColor.set(this.theme().contrast),this.barColorGradient.set(this.theme().contrastDimmer);break;case"blue":this.barColor.set(this.theme().blue),this.barColorGradient.set(this.theme().blueDimmer);break;case"green":this.barColor.set(this.theme().green),this.barColorGradient.set(this.theme().greenDimmer);break;case"pink":this.barColor.set(this.theme().pink),this.barColorGradient.set(this.theme().pinkDimmer);break;case"orange":this.barColor.set(this.theme().orange),this.barColorGradient.set(this.theme().orangeDimmer);break;case"purple":this.barColor.set(this.theme().purple),this.barColorGradient.set(this.theme().purpleDimmer);break;case"grey":this.barColor.set(this.theme().grey),this.barColorGradient.set(this.theme().greyDimmer);break;case"yellow":this.barColor.set(this.theme().yellow),this.barColorGradient.set(this.theme().yellowDimmer);break;default:this.barColor.set(this.theme().contrast),this.barColorGradient.set(this.theme().contrastDimmer)}}ngOnDestroy(){this.destroyDataStreams(),this.unsubscribeMetaStream(),this.zonesSub?.unsubscribe()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-simple-linear"]],features:[ce],decls:2,vars:13,consts:[[3,"configChange","config","id"],[1,"simpleLinearGaugeContainer",3,"displayName","displayNameColor","unitLabel","dataValue","dataValueLabel","barColor","barColorGradient","barColorBackground","gaugeMaxValue","gaugeMinValue","highlights"]],template:function(t,i){t&1&&(v(0,"widget-host",0),ve("configChange",function(r){return fe(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),G(1,"svg-simple-linear-gauge",1),_()),t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),z("displayName",i.widgetProperties.config.displayName)("displayNameColor",i.theme().contrastDim)("unitLabel",i.unitsLabel())("dataValue",i.dataValue())("dataValueLabel",i.dataLabelValue())("barColor",i.barColor())("barColorGradient",i.barColorGradient())("barColorBackground",i.barColorBackground())("gaugeMaxValue",i.widgetProperties.config.displayScale.upper)("gaugeMinValue",i.widgetProperties.config.displayScale.lower)("highlights",i.highlights()))},dependencies:[Ce,ah],styles:[".simpleLinearGaugeContainer[_ngcontent-%COMP%]{display:block;position:relative;height:100%;width:100%;padding:0}"]})}return a})();function Og(a,n){if(a&1){let e=Y();v(0,"h3"),b(1,"Getting Started"),_(),v(2,"p"),b(3,"Welcome to KIP! Here are some basic gestures to help you navigate the application:"),_(),v(4,"table",2)(5,"thead")(6,"tr")(7,"th"),b(8,"Actions"),_(),v(9,"th"),b(10,"Touch"),_(),v(11,"th"),b(12,"Mouse"),_(),v(13,"th"),b(14,"Keyboard Shortcuts"),_()()(),v(15,"tbody")(16,"tr")(17,"td"),b(18,"Open Actions menu"),_(),v(19,"td"),b(20,"Swipe left"),_(),v(21,"td"),b(22,"Click, drag left, and release"),_(),v(23,"td")(24,"kbd"),b(25,"Shift"),_(),b(26," + "),v(27,"kbd"),b(28,"Ctrl"),_(),b(29," + "),v(30,"kbd",3),b(31,"\u2190"),_(),b(32," (Left Arrow)"),_()(),v(33,"tr")(34,"td"),b(35,"Open Notification menu"),_(),v(36,"td"),b(37,"Swipe right"),_(),v(38,"td"),b(39,"Click, drag right, and release"),_(),v(40,"td")(41,"kbd"),b(42,"Shift"),_(),b(43," + "),v(44,"kbd"),b(45,"Ctrl"),_(),b(46," + "),v(47,"kbd",3),b(48,"\u2192"),_(),b(49," (Right Arrow)"),_()(),v(50,"tr")(51,"td"),b(52,"Cycle through dashboards"),_(),v(53,"td"),b(54,"Swipe up/down"),_(),v(55,"td"),b(56,"Click, drag up/down, and release"),_(),v(57,"td")(58,"kbd"),b(59,"Shift"),_(),b(60," + "),v(61,"kbd"),b(62,"Ctrl"),_(),b(63," + "),v(64,"kbd",3),b(65,"\u2191"),_(),b(66,"/"),v(67,"kbd",3),b(68,"\u2193"),_(),b(69," (Up/Down Arrow)"),_()(),v(70,"tr")(71,"td"),b(72,"Toggle Fullscreen"),_(),v(73,"td"),b(74,"N/A"),_(),v(75,"td"),b(76,"N/A"),_(),v(77,"td")(78,"kbd"),b(79,"Shift"),_(),b(80," + "),v(81,"kbd"),b(82,"Ctrl"),_(),b(83," + "),v(84,"kbd"),b(85,"F"),_()()(),v(86,"tr")(87,"td"),b(88,"Toggle Night mode"),_(),v(89,"td"),b(90,"N/A"),_(),v(91,"td"),b(92,"N/A"),_(),v(93,"td")(94,"kbd"),b(95,"Shift"),_(),b(96," + "),v(97,"kbd"),b(98,"Ctrl"),_(),b(99," + "),v(100,"kbd"),b(101,"N"),_()()(),v(102,"tr")(103,"td"),b(104,"Toggle dashboard edit mode"),_(),v(105,"td"),b(106,"N/A"),_(),v(107,"td"),b(108,"N/A"),_(),v(109,"td")(110,"kbd"),b(111,"Shift"),_(),b(112," + "),v(113,"kbd"),b(114,"Ctrl"),_(),b(115," + "),v(116,"kbd"),b(117,"E"),_()()()()(),v(118,"i"),b(119,"Note that the words Touch and Tap are synonymous with mouse click."),_(),G(120,"br")(121,"br"),v(122,"h3"),b(123,"Log in to Signal K"),_(),v(124,"p"),b(125," The first step is to configure Signal K server authentication ("),v(126,"i"),b(127,"a pre-existing Signal K server username and password is required"),_(),b(128,"). Use the table above to find the gesture, mouse or keyboard shortcut to open the Actions menu, then select "),v(129,"strong"),b(130,"Settings"),_(),b(131,". Toggle "),v(132,"strong"),b(133,"Login to server"),_(),b(134," and enter your Signal K credentials. "),_(),v(135,"ul")(136,"li")(137,"strong"),b(138,"Why log in?"),_(),b(139," Logging in allows KIP to do two things: 1) to send commands to Signal K and 2) to save its configuration on the server so it can be shared between multiple devices. It is the recommended method to use KIP. "),_(),v(140,"li"),b(141," If you don\u2019t have a Signal K account, ask your Signal K administrator, access the Signal K Admin Settings / Users page and create a user or check your server\u2019s documentation for setup instructions. "),_(),v(142,"li"),b(143," After entering your credentials, select "),v(144,"strong"),b(145,"Login"),_(),b(146," or "),v(147,"strong"),b(148,"Connect"),_(),b(149,". If successful, your connection status will update and live data will appear in KIP. "),_(),v(150,"li"),b(151," If you see an error, double-check your username and password, and make sure your device is on the same network as your Signal K server. "),_()(),v(152,"h3"),b(153,"Option 1: Load Demonstration Dashboards"),_(),v(154,"p"),b(155," Try the sample dashboards using data from your server: "),G(156,"br"),v(157,"button",4),I("click",function(){P(e);let i=U();return O(i.loadDemoConfig())}),b(158,"Load Demo"),_()(),v(159,"h3"),b(160,"Option 2: Create Your Own Layout"),_(),v(161,"p"),b(162,' The text you are reading is actually a full screen widget in a dashboard. Dashboards are "Locked" by default to prevent accidental modifications. To edit a dashboard, swipe left and hit the bottom unlock menu button. You can later add and manage dashboards using the Dashboards page from the Actions menu. '),_(),v(163,"p")(164,"strong"),b(165,"Try editing the Dashboard now to receive further instructions!"),_()()}}function Rg(a,n){a&1&&(v(0,"h2"),b(1,"Changing Layouts"),_(),b(2," Follow these simple steps to learn how to change your dashboard layout: "),v(3,"ol")(4,"li"),b(5,"Resize this Tutorial widget using the now visible dashed borders or corners arrows. Resize it so it does not take up all the screen. You need free space in your dashboard to add more widgets. You can delete this Tutorial widget later when you are done with the instructions."),_(),v(6,"li"),b(7,"Touch & Hold or Click & Hold in an empty area to open the Add Widget selection panel."),_(),v(8,"li"),b(9,"Choose a widget from the selection panel to add it to the dashboard."),_()(),v(10,"h3"),b(11,"Possible widget operations"),_(),v(12,"ul")(13,"li")(14,"strong"),b(15,"Touch and drag"),_(),b(16," to move widgets"),_(),v(17,"li")(18,"strong"),b(19,"Drag corners and sides"),_(),b(20," to resize widgets"),_(),v(21,"li")(22,"strong"),b(23,"Double Tap"),_(),b(24," on a widget to configure it"),_(),v(25,"li")(26,"strong"),b(27,"Press and Hold"),_(),b(28," on a widget to delete or duplicate widgets"),_()(),v(29,"h2"),b(30,"Exiting dashboard edit mode"),_(),v(31,"p"),b(32,"Use the Save or Cancel buttons in the lower right corner to either persist your changes or revert changes."),_(),v(33,"h2"),b(34,"Adding more dashboards"),_(),v(35,"p"),b(36,"Swipe left and hit the Dashboards button. From this page you can add, rename, order, delete, and duplicate entire dashboards."),_())}var rh=(()=>{class a extends Se{dashboard=E(nt);settings=E(Mt);constructor(){super()}loadDemoConfig(){this.settings.loadDemoConfig()}startWidget(){}updateConfig(){}ngOnDestroy(){this.destroyDataStreams()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-tutorial"]],features:[ce],decls:4,vars:3,consts:[[3,"configChange","config","id"],[1,"tutorial-container"],[1,"nav-table"],[2,"font-size","x-large"],["mat-raised-button","",2,"margin-left","15px",3,"click"]],template:function(t,i){t&1&&(v(0,"widget-host",0),ve("configChange",function(r){return fe(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(){return i.updateConfig()}),v(1,"div",1),De(2,Og,166,0)(3,Rg,37,0),_()()),t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(2),Ae(i.dashboard.isDashboardStatic()?2:3))},dependencies:[Ce,gt],styles:[".tutorial-container[_ngcontent-%COMP%]{position:absolute;top:0;left:0;display:block;height:100%;width:100%;overflow:none}.tutorial-container[_ngcontent-%COMP%]{padding:0 15px}.nav-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;margin-bottom:2em}.nav-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .nav-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border:1px solid #bbb;padding:.5em 1em;text-align:center}.nav-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{background:#ddd;color:#222;font-weight:700}.nav-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(2n){background:#242424}.warning[_ngcontent-%COMP%]{color:#b71c1c}.button-group[_ngcontent-%COMP%]{margin-top:2em;display:flex;gap:20px}"]})}return a})();var Ig=["rotatingDial"],Ng=["awaIndicator"],Wg=["twaIndicator"],Lg=["wptIndicator"],Vg=["setIndicator"],Bg=["cogIndicator"],sh=([a,n],[e,t],[i,o])=>(Math.atan2(o-t,i-e)-Math.atan2(n-t,a-e)+3*Math.PI)%(2*Math.PI)-Math.PI,lh=(()=>{class a{rotatingDial=ie.required("rotatingDial");awaIndicator=ie.required("awaIndicator");twaIndicator=ie.required("twaIndicator");wptIndicator=ie.required("wptIndicator");setIndicator=ie.required("setIndicator");cogIndicator=ie.required("cogIndicator");compassHeading=B.required();courseOverGroundAngle=B(void 0);courseOverGroundEnabled=B.required();trueWindAngle=B.required();twsEnabled=B.required();twaEnabled=B.required();trueWindSpeed=B.required();trueWindSpeedUnit=B.required();appWindAngle=B.required();awsEnabled=B.required();appWindSpeed=B.required();appWindSpeedUnit=B.required();laylineAngle=B(void 0);closeHauledLineEnabled=B.required();sailSetupEnabled=B.required();windSectorEnabled=B.required();driftEnabled=B.required();driftSet=B(void 0);driftFlow=B(void 0);waypointAngle=B(void 0);waypointEnabled=B.required();trueWindMinHistoric=B(void 0);trueWindMidHistoric=B(void 0);trueWindMaxHistoric=B(void 0);compass={oldValue:0,newValue:0};twa={oldValue:0,newValue:0};awa={oldValue:0,newValue:0};wpt={oldValue:0,newValue:0};cog={oldValue:0,newValue:0};set={oldValue:0,newValue:0};headingValue="--";trueWindHeading=0;waypointActive=K(!1);portLaylinePrev=0;stbdLaylinePrev=0;portLaylineAnimId=null;stbdLaylineAnimId=null;closeHauledLinePortPath="M 500,500 500,500";closeHauledLineStbdPath="M 500,500 500,500";portSectorPrev={min:0,mid:0,max:0};stbdSectorPrev={min:0,mid:0,max:0};portSectorAnimId=null;stbdSectorAnimId=null;portWindSectorPath="";stbdWindSectorPath="";animationFrameIds=new WeakMap;CENTER=500;RADIUS=350;ANIMATION_DURATION=900;EPS_ANGLE=1;ngZone=E(Je);constructor(){ne(()=>{let e=this.waypointEnabled();Ke(()=>{this.waypointActive.set(e)})}),ne(()=>{let e=this.compassHeading(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&Ke(()=>{this.compass.oldValue=this.compass.newValue,this.compass.newValue=t,this.headingValue=t.toString(),this.rotatingDial()?.nativeElement&&(vt(this.rotatingDial().nativeElement,-this.compass.oldValue,-this.compass.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines(!1),this.updateWindSectors(!1))})}),ne(()=>{let e=this.courseOverGroundAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&Ke(()=>{this.cog.oldValue=this.cog.newValue,this.cog.newValue=t-this.compass.newValue,this.cogIndicator()?.nativeElement&&vt(this.cogIndicator().nativeElement,this.cog.oldValue,this.cog.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),ne(()=>{let e=this.waypointAngle();Ke(()=>{if(!e){this.waypointActive.set(!1);return}this.waypointEnabled()?this.waypointActive.set(!0):this.waypointActive.set(!1),this.wpt.oldValue=this.wpt.newValue,this.wpt.newValue=e,this.wptIndicator()?.nativeElement&&vt(this.wptIndicator().nativeElement,this.wpt.oldValue,this.wpt.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),ne(()=>{let e=this.appWindAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&Ke(()=>{this.awa.oldValue=this.awa.newValue,this.awa.newValue=t,this.awaIndicator()?.nativeElement&&vt(this.awaIndicator().nativeElement,this.awa.oldValue,this.awa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines()})}),ne(()=>{let e=this.trueWindAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&Ke(()=>{this.twa.oldValue=this.twa.newValue,this.trueWindHeading=t,this.twa.newValue=this.addHeading(this.trueWindHeading,this.compass.newValue*-1),this.twaIndicator()?.nativeElement&&vt(this.twaIndicator().nativeElement,this.twa.oldValue,this.twa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),ne(()=>{this.laylineAngle(),this.closeHauledLineEnabled()&&Ke(()=>this.updateCloseHauledLines())}),ne(()=>{let e=this.driftSet(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&Ke(()=>{this.set.oldValue=this.set.newValue,this.set.newValue=t,this.setIndicator()?.nativeElement&&vt(this.setIndicator().nativeElement,this.set.oldValue,this.set.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),ne(()=>{let e=this.windSectorEnabled();this.trueWindMinHistoric(),this.trueWindMidHistoric(),this.trueWindMaxHistoric(),this.laylineAngle(),Ke(()=>{if(!e){this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null,this.portWindSectorPath="none",this.stbdWindSectorPath="none";return}this.updateWindSectors(!0)})})}updateCloseHauledLines(e=!0){if(!this.closeHauledLineEnabled())return;let t=Number(this.compass.newValue)||0,i=Number(this.awa.newValue)||0,o=Number(this.laylineAngle())||0,r=this.addHeading(t,this.addHeading(i,o*-1));this.animateLayline(this.portLaylinePrev,r,!0,e),this.portLaylinePrev=r;let l=this.addHeading(t,this.addHeading(i,o));this.animateLayline(this.stbdLaylinePrev,l,!1,e),this.stbdLaylinePrev=l}animateLayline(e,t,i,o=!0){if(i&&this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),!i&&this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId),this.angleDelta(e,t)<this.EPS_ANGLE){this.drawLayline(t,i),i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null;return}if(!o){this.drawLayline(t,i),i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null;return}let r=Gd(e,t,this.ANIMATION_DURATION,l=>this.drawLayline(l,i),()=>{i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null},this.ngZone);i?this.portLaylineAnimId=r:this.stbdLaylineAnimId=r}drawLayline(e,t){let i=e*Math.PI/180,o=Math.floor(this.RADIUS*Math.sin(i)+this.CENTER),r=Math.floor(this.RADIUS*Math.cos(i)*-1+this.CENTER);t?this.closeHauledLinePortPath=`M ${this.CENTER},${this.CENTER} L ${o},${r}`:this.closeHauledLineStbdPath=`M ${this.CENTER},${this.CENTER} L ${o},${r}`}windSectorsInitialized=!1;updateWindSectors(e=!0){if(!this.windSectorEnabled()||this.trueWindMinHistoric()==null||this.trueWindMidHistoric()==null||this.trueWindMaxHistoric()==null)return;let t={min:this.trueWindMinHistoric(),mid:this.trueWindMidHistoric(),max:this.trueWindMaxHistoric()},i={min:this.trueWindMinHistoric(),mid:this.trueWindMidHistoric(),max:this.trueWindMaxHistoric()};if(!this.windSectorsInitialized){this.windSectorsInitialized=!0,e?(this.animateWindSector(t,t,!0),this.animateWindSector(i,i,!1)):(this.portWindSectorPath=this.computeSectorPath(t,!0),this.stbdWindSectorPath=this.computeSectorPath(i,!1)),this.portSectorPrev=t,this.stbdSectorPrev=i;return}e?this.angleDelta(this.portSectorPrev.min,t.min)<this.EPS_ANGLE&&this.angleDelta(this.portSectorPrev.mid,t.mid)<this.EPS_ANGLE&&this.angleDelta(this.portSectorPrev.max,t.max)<this.EPS_ANGLE?(this.portWindSectorPath=this.computeSectorPath(t,!0),this.stbdWindSectorPath=this.computeSectorPath(i,!1)):(this.animateWindSector(this.portSectorPrev,t,!0),this.animateWindSector(this.stbdSectorPrev,i,!1)):(this.portWindSectorPath=this.computeSectorPath(t,!0),this.stbdWindSectorPath=this.computeSectorPath(i,!1)),this.portSectorPrev=t,this.stbdSectorPrev=i}animateWindSector(e,t,i){if(i&&this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),!i&&this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.angleDelta(e.min,t.min)<this.EPS_ANGLE&&this.angleDelta(e.mid,t.mid)<this.EPS_ANGLE&&this.angleDelta(e.max,t.max)<this.EPS_ANGLE){let l=this.computeSectorPath(t,i);i?this.portWindSectorPath=l:this.stbdWindSectorPath=l,i?this.portSectorAnimId=null:this.stbdSectorAnimId=null;return}let r=qd(e,t,this.ANIMATION_DURATION,l=>{let d=this.computeSectorPath(l,i);i?this.portWindSectorPath=d:this.stbdWindSectorPath=d},()=>{i?this.portSectorAnimId=null:this.stbdSectorAnimId=null},this.ngZone);i?this.portSectorAnimId=r:this.stbdSectorAnimId=r}addHeading(e=0,t=0){let i=(e+t)%360;return i<0&&(i+=360),i}ngOnDestroy(){this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId),this.portLaylineAnimId=null,this.stbdLaylineAnimId=null,this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null;let e=[this.rotatingDial(),this.awaIndicator(),this.twaIndicator(),this.wptIndicator(),this.setIndicator(),this.cogIndicator()];for(let t of e){let i=t?.nativeElement;if(!i)continue;let o=this.animationFrameIds.get(i);o&&cancelAnimationFrame(o),this.animationFrameIds.delete(i)}}angleDelta(e,t){let i=(t-e+540)%360-180;return Math.abs(i)}computeSectorPath(e,t){let o=(Number(this.laylineAngle())||0)*(t?-1:1),r=Number(this.compass.newValue)||0,l=this.addHeading(r,this.addHeading(e.min,o)),d=this.addHeading(r,this.addHeading(e.mid,o)),p=this.addHeading(r,this.addHeading(e.max,o)),s=this.RADIUS*Math.sin(l*Math.PI/180)+this.CENTER,c=this.RADIUS*Math.cos(l*Math.PI/180)*-1+this.CENTER,m=this.RADIUS*Math.sin(d*Math.PI/180)+this.CENTER,f=this.RADIUS*Math.cos(d*Math.PI/180)*-1+this.CENTER,y=this.RADIUS*Math.sin(p*Math.PI/180)+this.CENTER,S=this.RADIUS*Math.cos(p*Math.PI/180)*-1+this.CENTER,x=Math.abs(sh([s,c],[m,f],[y,S]))>Math.PI/2?0:1,V=sh([y,S],[s,c],[m,f])>0?0:1;return`M ${this.CENTER},${this.CENTER} L ${s},${c} A ${this.RADIUS},${this.RADIUS} 0 ${x} ${V} ${y},${S} z`}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["svg-windsteer"]],viewQuery:function(t,i){t&1&&(te(i.rotatingDial,Ig,5),te(i.awaIndicator,Ng,5),te(i.twaIndicator,Wg,5),te(i.wptIndicator,Lg,5),te(i.setIndicator,Vg,5),te(i.cogIndicator,Bg,5)),t&2&&be(6)},inputs:{compassHeading:[1,"compassHeading"],courseOverGroundAngle:[1,"courseOverGroundAngle"],courseOverGroundEnabled:[1,"courseOverGroundEnabled"],trueWindAngle:[1,"trueWindAngle"],twsEnabled:[1,"twsEnabled"],twaEnabled:[1,"twaEnabled"],trueWindSpeed:[1,"trueWindSpeed"],trueWindSpeedUnit:[1,"trueWindSpeedUnit"],appWindAngle:[1,"appWindAngle"],awsEnabled:[1,"awsEnabled"],appWindSpeed:[1,"appWindSpeed"],appWindSpeedUnit:[1,"appWindSpeedUnit"],laylineAngle:[1,"laylineAngle"],closeHauledLineEnabled:[1,"closeHauledLineEnabled"],sailSetupEnabled:[1,"sailSetupEnabled"],windSectorEnabled:[1,"windSectorEnabled"],driftEnabled:[1,"driftEnabled"],driftSet:[1,"driftSet"],driftFlow:[1,"driftFlow"],waypointAngle:[1,"waypointAngle"],waypointEnabled:[1,"waypointEnabled"],trueWindMinHistoric:[1,"trueWindMinHistoric"],trueWindMidHistoric:[1,"trueWindMidHistoric"],trueWindMaxHistoric:[1,"trueWindMaxHistoric"]},decls:158,vars:43,consts:[["rotatingDial",""],["wptIndicator",""],["setIndicator",""],["cogIndicator",""],["awaIndicator",""],["twaIndicator",""],["viewBox","0 0 1000 1000"],["id","defs1"],["id","linearGradient18"],["offset","0",1,"boat",2,"stop-opacity","0.71372495"],["offset","1",1,"boat",2,"stop-opacity","0"],["id","linearGradient16"],["id","linearGradient13"],["offset","0.41176471",1,"drift-arrow",2,"stop-opacity","1"],["offset","1",1,"drift-arrow",2,"stop-opacity","0"],["id","swatch4"],["offset","0","id","stop4",2,"stop-color","#000000","stop-opacity","1"],["clipPathUnits","userSpaceOnUse","id","clipPath16"],["id","ellipse16","cx","311.24539","cy","-1516.3778","rx","194.27342","ry","181.83022",2,"display","inline","fill","#9a9300","fill-opacity","1","stroke","none","stroke-width","55","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],[0,"xlink","href","#linearGradient13","id","linearGradient14","x1","453.48047","y1","583.62891","x2","638.11328","y2","583.62891","gradientUnits","userSpaceOnUse","gradientTransform","matrix(0.00723393,1.2388183,-1.0538241,0.00615367,1111.2051,-179.73465)"],[0,"xlink","href","#linearGradient16","id","linearGradient17","x1","-502.04896","y1","439.35551","x2","-316","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],[0,"xlink","href","#linearGradient18","id","linearGradient19","x1","495.83999","y1","439.35551","x2","681.88895","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],["id","layerBackground",2,"display","inline"],["id","boat",2,"display","inline"],["id","portSide","d","M 498.75049,208.89453 A 267.09439,554.67401 0 0 1 678.45974,767.81661",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient19)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","starboardSide","d","m -499.13846,208.89453 a 267.09439,554.67401 0 0 1 179.70925,558.92208","transform","scale(-1,1)",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient17)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","layerCompass"],["id","fixedDial"],["id","portStarboardBackground","d","M 499.99997,10.520805 A 489.47916,489.47916 0 0 0 10.520805,499.99997 489.47916,489.47916 0 0 0 499.99997,989.47913 489.47916,489.47916 0 0 0 989.47913,499.99997 489.47916,489.47916 0 0 0 499.99997,10.520805 Z m 0,132.291665 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"fixed-dial-background",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","port","d","M 93.283801,265.18231 A 469.63541,469.63541 0 0 1 339.37522,58.687079",1,"port",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","starboard","d","M 660.62476,58.687069 A 469.63541,469.63541 0 0 1 906.71619,265.18228",1,"starboard",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","barsAndText",1,"contrast-stroke",2,"display","inline"],["d","m 416.35095,19.837399 2.78142,15.77426","id","path199",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 334.23173,41.658798 5.47834,15.051615","id","path200",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 260.27336,81.806174 12.55151,21.739856","id","path37",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 187.44581,126.00035 10.29591,12.2702","id","path197",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 127.23918,185.95785 12.27019,10.29591","id","path198",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 83.252815,257.66724 21.739865,12.55151","id","path166",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 42.289518,332.39273 15.05162,5.47835","id","path195",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 20.127799,414.42077 15.774251,2.78142","id","path196",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 17.879075,498.47765 H 42.982096","id","path167",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 19.776759,583.71187 15.77426,-2.78142","id","path193",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 41.598167,665.8311 15.051615,-5.47834","id","path194",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 81.668963,739.71246 103.40883,727.16095","id","path168",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 125.93981,812.61701 12.2702,-10.29591","id","path191",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 185.89732,872.82365 10.29591,-12.27019","id","path192",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 257.53004,916.73298 12.55151,-21.73985","id","path169",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 332.33219,957.7732 5.47835,-15.05162","id","path189",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 414.36024,979.93493 2.78142,-15.77425","id","path190",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 498.34046,982.10672 V 957.0037","id","path170",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 583.65133,980.28596 580.86991,964.5117","id","path187",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 665.77057,958.46456 -5.47834,-15.05161","id","path188",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 739.57526,918.31683 727.02375,896.57698","id","path171",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 812.55647,874.12301 802.26056,861.85282","id","path185",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 872.76312,814.16551 860.49293,803.8696","id","path186",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 916.59579,742.45577 894.85593,729.90426","id","path172",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 957.71266,667.73063 -15.05161,-5.47834","id","path183",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 979.8744,585.70259 -15.77425,-2.78142","id","path184",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 981.96954,501.64535 -25.10304,10e-6","id","path173",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 980.22542,416.41149 -15.77425,2.78143","id","path181",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 958.40403,334.29226 -15.05161,5.47834","id","path182",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 918.17964,260.41055 -21.73986,12.55151","id","path174",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 874.06247,187.50636 -12.27018,10.29591","id","path180",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 817.34594,130.05494 -10.40259,12.17987","id","path179",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 742.31857,83.390025 729.76706,105.12988","id","path175",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 667.6701,42.350172 -5.47834,15.051615","id","path178",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 585.64206,20.188432 -2.78142,15.77425","id","path176",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 501.50816,18.016286 V 43.119307","id","path177",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","rotatingDialBackplate","d","M 499.99997,50.208304 A 449.79166,449.79166 0 0 0 50.208304,499.99997 449.79166,449.79166 0 0 0 499.99997,949.79163 449.79166,449.79166 0 0 0 949.79163,499.99997 449.79166,449.79166 0 0 0 499.99997,50.208304 Z m 0,92.604166 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"rotating-dial-Backplate",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],[0,"xml","space","preserve","x","181.91386","y","284.25186","id","text3","transform","rotate(-30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan3","x","181.91386","y","284.25186",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-183.53558","y","283.74811","id","text14","transform","rotate(-60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan14","x","-183.53558","y","283.74811",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-499.70761","y","100.95312","id","text15","transform","rotate(-90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan15","x","-499.70761","y","100.95312",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.66119","y","-216.36243","id","text16","transform","rotate(-120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["x","-681.66119","y","-216.36243","id","tspan25",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.06616","y","-581.71271","id","text17","transform","rotate(-150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan17","x","-681.06616","y","-581.71271",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-498.3313","y","-897.40875","id","text18","transform","scale(-1)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan18","x","-498.3313","y","-897.40875",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-184.41313","y","-1080.8452","id","text19","transform","rotate(150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan19","x","-184.41313","y","-1080.8452",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","181.57225","y","-1080.8853","id","text20","transform","rotate(120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan20","x","181.57225","y","-1080.8853",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","501.42661","y","-896.93701","id","text21","transform","rotate(90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan21","x","501.42661","y","-896.93701",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","682.35815","y","-579.63336","id","text22","transform","rotate(60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan22","x","682.35815","y","-579.63336",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","681.81525","y","-214.27321","id","text23","transform","rotate(30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan23","x","681.81525","y","-214.27321",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","500.15503","y","101.96342","id","text24",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan24","x","500.15503","y","101.96342",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],["id","LayerLayline"],["id","PortLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","StbdLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","LayerWindShift"],["id","portSectorShift",1,"wind-sector-port",2,"fill-opacity","0.5","stroke","none"],["id","StbdSectorShift",1,"wind-sector-stbd",2,"fill-opacity","0.5","stroke","none"],["clip-path","url(#clipPath16)","d","m 416.36313,-1521.3937 c 371.15015,24.6522 731.95257,192.9774 983.98757,467.456 227.2972,244.24389 363.1732,572.3808 369.4045,906.42978 15.9331,499.10271 -269.2071,986.17861 -700.5178,1232.88522 -485.08308,290.4843 -1134.555606,269.7346 -1599.2788,-52.7169 -404.5062,-269.24461 -653.2224,-759.35388 -614.1746,-1245.84043 30.2148,-487.61814 344.18931,-937.89997 780.52695,-1152.15867 176.96718,-89.2092 371.8823084,-142.3103 569.54914,-156.0363","transform","matrix(0.28310615,0,0,0.32000828,411.88452,661.64815)",1,"next-waypoint-bar",2,"display","inline","fill","none","stroke-width","30","stroke-miterlimit","0"],["id","path6341","cx","500","cy","175.00002","rx","17.361122","ry","17.361118",1,"next-waypoint",2,"display","inline","fill","none","stroke-width","15.2778","stroke-dasharray","none"],["id","setArrow","d","m 563.93337,480.60403 -64.4901,-94.9673 -63.37665,95.71396 58.48691,-30.71299 0.77713,133.08346 c 0.0992,16.99331 2.52916,30.65913 5.44822,30.64209 2.91911,-0.0171 5.18926,-13.71032 5.09001,-30.70362 l -0.77782,-133.20444 z",2,"fill","url(#linearGradient14)","stroke","none","stroke-width","1.18648"],["id","layerCounter"],["id","twsCounter"],[0,"xml","space","preserve","x","904.27722","y","150.88913","id","text43",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","903.84814","y","114.73512","id","text42",1,"true-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","905.25897","y","52.894646","id","text41",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","awsCounter"],[0,"xml","space","preserve","x","94.554222","y","150.88913","id","text39",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","94.580925","y","114.63747","id","text40",1,"app-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","95.967644","y","52.894646","id","text39-7",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","layerCurrent"],["id","text11",0,"xml","space","preserve","x","499.78842","y","523.55145",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],["id","layerIndicators",2,"display","inline"],["d","m 506.20767,172.99458 a 6.3888631,8.8250643 0 0 1 -6.38888,8.82508 6.3888631,8.8250643 0 0 1 -6.38888,-8.82508 6.3888631,8.8250643 0 0 1 6.38888,-8.82509 6.3888631,8.8250643 0 0 1 6.38888,8.82509 z M 476.25472,30.811298 493.47058,13.265068 c 3.6173,-3.6867571 9.44162,-3.6867571 13.05892,0 l 17.21586,17.546106 c 3.6173,3.686743 3.6173,9.622786 0,13.309544 l -17.21595,17.54623 c -3.61721,3.686757 -9.44153,3.686757 -13.05893,0 L 476.25472,44.120841 c -3.6174,-3.686743 -3.6174,-9.622924 0,-13.309543 z m 17.20533,-16.510116 h 12.77766 V 173.26408 h -12.77766 z",1,"course-over-ground",2,"stroke-width","14.7329","stroke-linecap","square"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.7935953,0,0,0.92686935,101.84848,11.000842)",1,"app-wind",2,"display","inline","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110",1,"card-color",2,"font-weight","bold","font-size","70px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.60410307,0,0,0.70555435,196.91787,21.152867)",1,"true-wind",2,"display","inline","stroke","none","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110","id","text10",1,"card-color",2,"font-weight","bold","font-size","60px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["id","layerHeading",2,"display","inline"],["id","rect1","width","256.47919","height","108.5428","x","371.76041","y","10.805443","rx","23.757372",1,"heading-background",2,"stroke-width","4.43107","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","0.509946"],["x","511.29395","y","102.86786",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","106.667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","5","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"]],template:function(t,i){t&1&&(re(),A(0,"svg",6)(1,"defs",7)(2,"linearGradient",8),Q(3,"stop",9)(4,"stop",10),W(),A(5,"linearGradient",11),Q(6,"stop",9)(7,"stop",10),W(),A(8,"linearGradient",12),Q(9,"stop",13)(10,"stop",14),W(),A(11,"linearGradient",15),Q(12,"stop",16),W(),A(13,"clipPath",17),Q(14,"ellipse",18),W(),Q(15,"linearGradient",19)(16,"linearGradient",20)(17,"linearGradient",21),W(),A(18,"g",22)(19,"g",23),Q(20,"path",24)(21,"path",25),W()(),A(22,"g",26)(23,"g",27),Q(24,"path",28)(25,"path",29)(26,"path",30),W(),A(27,"g",null,0)(29,"g",31),Q(30,"path",32)(31,"path",33)(32,"path",34)(33,"path",35)(34,"path",36)(35,"path",37)(36,"path",38)(37,"path",39)(38,"path",40)(39,"path",41)(40,"path",42)(41,"path",43)(42,"path",44)(43,"path",45)(44,"path",46)(45,"path",47)(46,"path",48)(47,"path",49)(48,"path",50)(49,"path",51)(50,"path",52)(51,"path",53)(52,"path",54)(53,"path",55)(54,"path",56)(55,"path",57)(56,"path",58)(57,"path",59)(58,"path",60)(59,"path",61)(60,"path",62)(61,"path",63)(62,"path",64)(63,"path",65)(64,"path",66)(65,"path",67)(66,"path",68),A(67,"text",69)(68,"tspan",70),b(69,"330"),W()(),A(70,"text",71)(71,"tspan",72),b(72,"300"),W()(),A(73,"text",73)(74,"tspan",74),b(75,"W"),W()(),A(76,"text",75)(77,"tspan",76),b(78,"240"),W()(),A(79,"text",77)(80,"tspan",78),b(81,"210"),W()(),A(82,"text",79)(83,"tspan",80),b(84,"S"),W()(),A(85,"text",81)(86,"tspan",82),b(87,"150"),W()(),A(88,"text",83)(89,"tspan",84),b(90,"120"),W()(),A(91,"text",85)(92,"tspan",86),b(93,"E"),W()(),A(94,"text",87)(95,"tspan",88),b(96,"60"),W()(),A(97,"text",89)(98,"tspan",90),b(99,"30"),W()(),A(100,"text",91)(101,"tspan",92),b(102,"N"),W()()(),A(103,"g",93),Q(104,"path",94)(105,"path",95),W(),A(106,"g",96),Q(107,"path",97)(108,"path",98),W(),A(109,"g",null,1),Q(111,"path",99)(112,"ellipse",100),W(),A(113,"g",null,2),Q(115,"path",101),W()()(),A(116,"g",102)(117,"g",103)(118,"text",104),b(119),W(),A(120,"text",105),b(121),li(122,"number"),W(),A(123,"text",106),b(124,"TWS"),W()(),A(125,"g",107)(126,"text",108),b(127),W(),A(128,"text",109),b(129),li(130,"number"),W(),A(131,"text",110),b(132,"AWS"),W()()(),A(133,"g",111)(134,"text",112),b(135),li(136,"number"),W()(),A(137,"g",113)(138,"g",null,3),Q(140,"path",114),W(),A(141,"g",null,4),Q(143,"path",115),A(144,"text",116),b(145,"A"),W()(),A(146,"g",null,5),Q(148,"path",117),A(149,"text",118),b(150,"T"),W()()(),A(151,"g",119),Q(152,"rect",120),A(153,"text",121)(154,"tspan"),b(155),A(156,"tspan"),b(157,"\xB0"),W()()()()()),t&2&&(k(103),we("display",i.closeHauledLineEnabled()?"inline":"none"),k(),we("display",i.appWindAngle()!=null?"inline":"none"),ae("d",i.closeHauledLineStbdPath),k(),we("display",i.appWindAngle()!=null?"inline":"none"),ae("d",i.closeHauledLinePortPath),k(),we("display",i.windSectorEnabled()?"inline":"none"),k(),we("display",i.portWindSectorPath!="none"?"inline":"none"),ae("d",i.portWindSectorPath),k(),we("display",i.stbdWindSectorPath!="none"?"inline":"none"),ae("d",i.stbdWindSectorPath),k(),ae("display",i.waypointActive()?"inline":"none"),k(4),we("display",i.driftEnabled()?"inline":"none"),k(4),we("display",i.twsEnabled()?"inline":"none"),k(2),He(i.trueWindSpeedUnit()),k(2),He(fn(122,34,i.trueWindSpeed(),"1.1-1")??"--"),k(4),we("display",i.awsEnabled()?"inline":"none"),k(2),He(i.appWindSpeedUnit()),k(2),He(fn(130,37,i.appWindSpeed(),"1.1-1")??"--"),k(4),we("display",i.driftEnabled()?"inline":"none"),k(2),He(fn(136,40,i.driftFlow(),"1.1-1")??"--"),k(3),ae("display",i.courseOverGroundEnabled()?"inline":"none"),k(8),we("display",i.twaEnabled()?"inline":"none"),k(9),He(i.headingValue))},dependencies:[gl],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}svg[_ngcontent-%COMP%]{position:absolute;height:100%;width:100%;left:0;top:0}.fixed-dial-background[_ngcontent-%COMP%]{fill:var(--kip-grey-color)}.rotating-dial-Backplate[_ngcontent-%COMP%]{fill:var(--mat-sys-background)}.starboard[_ngcontent-%COMP%]{stroke:var(--kip-starboard-color)}.port[_ngcontent-%COMP%]{stroke:var(--kip-port-color)}.heading-background[_ngcontent-%COMP%]{stroke:var(--kip-grey-color);fill:var(--kip-widget-card-background-color)}.boat[_ngcontent-%COMP%]{stop-color:var(--kip-grey-color)!important}.contrast-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.contrast-stroke[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.card-color[_ngcontent-%COMP%]{fill:var(--kip-widget-card-background-color)}.true-wind[_ngcontent-%COMP%]{fill:var(--kip-yellow-color)}.true-wind-label[_ngcontent-%COMP%]{fill:var(--kip-yellow-dim-color)}.app-wind[_ngcontent-%COMP%]{fill:var(--kip-orange-color)}.app-wind-label[_ngcontent-%COMP%]{fill:var(--kip-orange-dim-color)}.course-over-ground[_ngcontent-%COMP%]{fill:var(--kip-pink-color)}.next-waypoint[_ngcontent-%COMP%]{stroke:var(--kip-green-color)}.next-waypoint-bar[_ngcontent-%COMP%]{stroke:var(--kip-grey-color)}.laylines[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.wind-sector-port[_ngcontent-%COMP%]{fill:var(--kip-port-color)}.wind-sector-stbd[_ngcontent-%COMP%]{fill:var(--kip-starboard-color)}.drift-arrow[_ngcontent-%COMP%]{stop-color:var(--kip-blue-color)}"],changeDetection:0})}return a})();var dh=(()=>{class a extends Se{zones=E(Je);cdr=E(yn);markScheduled=!1;scheduleRafId=null;DEG_EPSILON=1;SPEED_EPSILON=.1;hasHeading=!1;hasCOG=!1;hasAWA=!1;hasAWS=!1;hasTWA=!1;hasTWS=!1;hasSet=!1;hasDrift=!1;hasWPT=!1;currentHeading=0;courseOverGroundAngle=0;appWindAngle=0;appWindSpeed=0;appWindSpeedUnit="";trueWindAngle=0;trueWindSpeed=0;trueWindSpeedUnit="";driftFlow=0;driftSet=0;waypointAngle=0;historicalWindDirection=[];trueWindMinHistoric;trueWindMidHistoric;trueWindMaxHistoric;windSectorObservableSub=null;windSamples=[];windMinDeque=[];windMaxDeque=[];windSampleIndex=0;lastUnwrapped=null;lastSector={};constructor(){super(),this.defaultConfig={filterSelfPaths:!0,paths:{headingPath:{description:"True Heading",path:"self.navigation.headingTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},appWindAngle:{description:"Apparent Wind Angle",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},appWindSpeed:{description:"Apparent Wind Speed",path:"self.environment.wind.speedApparent",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3},trueWindAngle:{description:"True Wind Angle",path:"self.environment.wind.angleTrueWater",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},trueWindSpeed:{description:"True Wind Speed",path:"self.environment.wind.speedTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3},courseOverGround:{description:"True Course Over Ground",path:"self.navigation.courseOverGroundTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",showConvertUnitTo:!1,convertUnitTo:"deg",sampleTime:1e3},nextWaypointBearing:{description:"Next Waypoint True Bearing",path:"self.navigation.courseGreatCircle.nextPoint.bearingTrue",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},set:{description:"True Drift Set",path:"self.environment.current.setTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},drift:{description:"Drift Speed Impact",path:"self.environment.current.drift",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3}},windSectorEnable:!0,windSectorWindowSeconds:5,laylineEnable:!0,laylineAngle:40,waypointEnable:!0,courseOverGroundEnable:!0,driftEnable:!0,awsEnable:!0,twsEnable:!0,twaEnable:!0,sailSetupEnable:!1,enableTimeout:!1,dataTimeout:5}}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.stopWindSectors();let e=this.widgetProperties.config.paths.appWindSpeed.convertUnitTo,t=this.widgetProperties.config.paths.trueWindSpeed.convertUnitTo;this.appWindSpeedUnit!==e&&(this.appWindSpeedUnit=e),this.trueWindSpeedUnit!==t&&(this.trueWindSpeedUnit=t),this.zones.runOutsideAngular(()=>{this.observeDataStream("headingPath",i=>{i.data.value==null&&(i.data.value=0);let o=this.normalizeAngle(i.data.value);(!this.hasHeading||this.angleDelta(this.currentHeading,o)>=this.DEG_EPSILON)&&(this.currentHeading=o,this.hasHeading=!0,this.scheduleMarkForCheck())}),this.observeDataStream("courseOverGround",i=>{i.data.value==null&&(i.data.value=0);let o=this.normalizeAngle(i.data.value);(!this.hasCOG||this.angleDelta(this.courseOverGroundAngle,o)>=this.DEG_EPSILON)&&(this.courseOverGroundAngle=o,this.hasCOG=!0,this.scheduleMarkForCheck())}),this.observeDataStream("drift",i=>{i.data.value==null&&(i.data.value=0);let o=i.data.value;(!this.hasDrift||Math.abs(this.driftFlow-o)>=this.SPEED_EPSILON)&&(this.driftFlow=o,this.hasDrift=!0,this.scheduleMarkForCheck())}),this.observeDataStream("set",i=>{i.data.value==null&&(i.data.value=0);let o=this.normalizeAngle(i.data.value);(!this.hasSet||this.angleDelta(this.driftSet,o)>=this.DEG_EPSILON)&&(this.driftSet=o,this.hasSet=!0,this.scheduleMarkForCheck())}),this.observeDataStream("nextWaypointBearing",i=>{let o=i.data.value,r=this.normalizeAngle(o);(!this.hasWPT||this.angleDelta(this.waypointAngle,r)>=this.DEG_EPSILON)&&(this.waypointAngle=r,this.hasWPT=!0,this.scheduleMarkForCheck())}),this.observeDataStream("appWindAngle",i=>{i.data.value==null&&(i.data.value=0);let o=i.data.value,r=this.normalizeAngle(o);(!this.hasAWA||this.angleDelta(this.appWindAngle,r)>=this.DEG_EPSILON)&&(this.appWindAngle=r,this.hasAWA=!0,this.widgetProperties.config.windSectorEnable&&this.addHistoricalWindDirection(this.normalizeAngle(o)),this.scheduleMarkForCheck())}),this.observeDataStream("appWindSpeed",i=>{i.data.value==null&&(i.data.value=0);let o=i.data.value;(!this.hasAWS||Math.abs(this.appWindSpeed-o)>=this.SPEED_EPSILON)&&(this.appWindSpeed=o,this.hasAWS=!0,this.scheduleMarkForCheck())}),this.observeDataStream("trueWindSpeed",i=>{i.data.value==null&&(i.data.value=0);let o=i.data.value;(!this.hasTWS||Math.abs(this.trueWindSpeed-o)>=this.SPEED_EPSILON)&&(this.trueWindSpeed=o,this.hasTWS=!0,this.scheduleMarkForCheck())}),this.observeDataStream("trueWindAngle",i=>{i.data.value==null&&(i.data.value=0);let o=this.widgetProperties.config.paths.trueWindAngle.path,r=o.includes("angleTrueWater")||o.includes("angleTrueGround")?this.addHeading(this.currentHeading,i.data.value):i.data.value,l=this.normalizeAngle(r);(!this.hasTWA||this.angleDelta(this.trueWindAngle,l)>=this.DEG_EPSILON)&&(this.trueWindAngle=l,this.hasTWA=!0,this.scheduleMarkForCheck())})}),this.startWindSectors()}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}ngOnDestroy(){this.destroyDataStreams(),this.stopWindSectors(),this.scheduleRafId!=null&&(cancelAnimationFrame(this.scheduleRafId),this.scheduleRafId=null)}startWindSectors(){if(this.windSamples=[],this.windMinDeque=[],this.windMaxDeque=[],this.windSampleIndex=0,this.lastUnwrapped=null,this.lastSector={},!this.widgetProperties.config.windSectorEnable){this.trueWindMinHistoric=void 0,this.trueWindMidHistoric=void 0,this.trueWindMaxHistoric=void 0,this.scheduleMarkForCheck();return}this.zones.runOutsideAngular(()=>{this.windSectorObservableSub=Ra(1e3).subscribe(()=>{this.historicalCleanup()})})}addHistoricalWindDirection(e){let t=Date.now(),i=this.unwrapAngle(e),o=this.windSampleIndex++;for(this.windSamples.push({t,u:i,i:o});this.windMinDeque.length&&this.windMinDeque[this.windMinDeque.length-1].u>=i;)this.windMinDeque.pop();for(this.windMinDeque.push({i:o,u:i});this.windMaxDeque.length&&this.windMaxDeque[this.windMaxDeque.length-1].u<=i;)this.windMaxDeque.pop();this.windMaxDeque.push({i:o,u:i})}arcForAngles(e){return!e||e.length===0?{min:0,max:0,mid:0}:e.slice(1).reduce((i,o)=>{let r=o;for(;r<i.min-180;)r+=360;for(;r>i.max+180;)r-=360;return i.min=Math.min(i.min,r),i.max=Math.max(i.max,r),i.mid=(i.max-i.min)/2+i.min,i},{min:e[0],max:e[0],mid:e[0]})}historicalCleanup(){if(!this.widgetProperties.config.windSectorEnable)return;let e=Date.now()-this.widgetProperties.config.windSectorWindowSeconds*1e3;for(;this.windSamples.length&&this.windSamples[0].t<e;){let s=this.windSamples.shift();if(!s)break;this.windMinDeque.length&&this.windMinDeque[0].i===s.i&&this.windMinDeque.shift(),this.windMaxDeque.length&&this.windMaxDeque[0].i===s.i&&this.windMaxDeque.shift()}if(!this.windSamples.length||!this.windMinDeque.length||!this.windMaxDeque.length){(this.trueWindMinHistoric!==void 0||this.trueWindMidHistoric!==void 0||this.trueWindMaxHistoric!==void 0)&&(this.trueWindMinHistoric=void 0,this.trueWindMidHistoric=void 0,this.trueWindMaxHistoric=void 0,this.lastSector={},this.scheduleMarkForCheck());return}let t=this.windMinDeque[0].u,i=this.windMaxDeque[0].u,o=(t+i)/2,r=this.normalizeAngle(t),l=this.normalizeAngle(o),d=this.normalizeAngle(i);(this.lastSector.min===void 0||this.angleDelta(this.lastSector.min,r)>=this.DEG_EPSILON||this.lastSector.mid===void 0||this.angleDelta(this.lastSector.mid,l)>=this.DEG_EPSILON||this.lastSector.max===void 0||this.angleDelta(this.lastSector.max,d)>=this.DEG_EPSILON)&&(this.trueWindMinHistoric=r,this.trueWindMidHistoric=l,this.trueWindMaxHistoric=d,this.lastSector={min:r,mid:l,max:d},this.scheduleMarkForCheck())}stopWindSectors(){this.windSectorObservableSub?.unsubscribe()}unwrapAngle(e){if(this.lastUnwrapped==null)return this.lastUnwrapped=e,e;let t=this.lastUnwrapped,i=(t%360+360)%360,o=(e-i+540)%360-180,r=t+o;return this.lastUnwrapped=r,r}normalizeAngle(e){return(e%360+360)%360}addHeading(e,t){let i=(e+t)%360;return i<0&&(i+=360),i}angleDelta(e,t){let i=(t-e+540)%360-180;return Math.abs(i)}scheduleMarkForCheck(){this.markScheduled||(this.markScheduled=!0,this.zones.runOutsideAngular(()=>{this.scheduleRafId=requestAnimationFrame(()=>{this.zones.run(()=>{this.cdr.markForCheck()}),this.markScheduled=!1,this.scheduleRafId=null})}))}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-wind-steer"]],features:[ce],decls:2,vars:26,consts:[[3,"configChange","config","id"],[3,"compassHeading","courseOverGroundAngle","courseOverGroundEnabled","trueWindAngle","twsEnabled","twaEnabled","trueWindSpeed","trueWindSpeedUnit","appWindAngle","awsEnabled","appWindSpeed","appWindSpeedUnit","laylineAngle","closeHauledLineEnabled","windSectorEnabled","driftEnabled","driftFlow","driftSet","waypointAngle","waypointEnabled","trueWindMinHistoric","trueWindMidHistoric","trueWindMaxHistoric","sailSetupEnabled"]],template:function(t,i){t&1&&(v(0,"widget-host",0),ve("configChange",function(r){return fe(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),G(1,"svg-windsteer",1),_()),t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),z("compassHeading",i.currentHeading)("courseOverGroundAngle",i.courseOverGroundAngle)("courseOverGroundEnabled",i.widgetProperties.config.courseOverGroundEnable)("trueWindAngle",i.trueWindAngle)("twsEnabled",i.widgetProperties.config.twsEnable)("twaEnabled",i.widgetProperties.config.twaEnable)("trueWindSpeed",i.trueWindSpeed)("trueWindSpeedUnit",i.trueWindSpeedUnit)("appWindAngle",i.appWindAngle)("awsEnabled",i.widgetProperties.config.awsEnable)("appWindSpeed",i.appWindSpeed)("appWindSpeedUnit",i.appWindSpeedUnit)("laylineAngle",i.widgetProperties.config.laylineAngle)("closeHauledLineEnabled",i.widgetProperties.config.laylineEnable)("windSectorEnabled",i.widgetProperties.config.windSectorEnable)("driftEnabled",i.widgetProperties.config.driftEnable)("driftFlow",i.driftFlow)("driftSet",i.driftSet)("waypointAngle",i.waypointAngle)("waypointEnabled",i.widgetProperties.config.waypointEnable)("trueWindMinHistoric",i.trueWindMinHistoric)("trueWindMidHistoric",i.trueWindMidHistoric)("trueWindMaxHistoric",i.trueWindMaxHistoric)("sailSetupEnabled",i.defaultConfig.sailSetupEnable))},dependencies:[lh,Ce],encapsulation:2,changeDetection:0})}return a})();var zg=["canvasMainRef"],ch=(()=>{class a extends Se{canvasMainRef=ie.required("canvasMainRef");canvasElement;canvasCtx;canvas=E(tt);cssWidth=0;cssHeight=0;isDestroyed=!1;maxTextWidth=0;maxTextHeight=0;constructor(){super(),this.defaultConfig={displayName:"Static Label",color:"green",bgColor:"grey",noColor:!1,noBgColor:!0},ne(()=>{this.theme()&&(this.getColors(this.widgetProperties.config.color),this.drawWidget())})}ngOnInit(){this.validateConfig()}ngAfterViewInit(){this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.maxTextWidth=this.cssWidth-40,this.maxTextHeight=this.cssHeight-40,this.drawWidget()}}),!this.isDestroyed&&(this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.maxTextWidth=this.canvasElement.width-40,this.maxTextHeight=this.canvasElement.height-40,this.startWidget())}ngOnDestroy(){this.isDestroyed=!0;try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}startWidget(){}updateConfig(e){e.displayName?this.widgetProperties.config.displayName=e.displayName:this.widgetProperties.config.displayName="",this.drawWidget()}getColors(e){switch(e){case"contrast":return this.theme().contrast;case"blue":return this.theme().blue;case"green":return this.theme().green;case"pink":return this.theme().pink;case"orange":return this.theme().orange;case"purple":return this.theme().purple;case"grey":return this.theme().grey;case"yellow":return this.theme().yellow;default:return this.theme().contrast}}drawWidget(){this.canvasCtx&&(this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.widgetProperties.config.noBgColor||this.canvas.drawRectangle(this.canvasCtx,0,0,this.canvasElement.width,this.canvasElement.height,this.getColors(this.widgetProperties.config.bgColor)),this.canvas.drawText(this.canvasCtx,this.widgetProperties.config.displayName,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2+10),this.maxTextWidth,this.maxTextHeight,"bold",this.getColors(this.widgetProperties.config.color)))}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-label"]],viewQuery:function(t,i){t&1&&te(i.canvasMainRef,zg,5),t&2&&be()},features:[ce],decls:3,vars:2,consts:[["canvasMainRef",""],[1,"label-wrapper",3,"configChange","config","id"],[1,"label-canvas"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),G(1,"canvas",2,0),_()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid))},dependencies:[Ce],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}.label-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.label-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;display:block;border-radius:var(--mat-card-elevated-container-shape, var(--mat-sys-corner-medium))}"]})}return a})();var Fg=["svgSlider"];function Hg(a,n){a&1&&G(0,"div",11)}var hh=(()=>{class a extends Se{svgElement=ie.required("svgSlider");dashboard=E(nt);signalkRequestsService=E(Gt);appService=E(Dt);labelColor=K(void 0);barColor=K(void 0);skRequestSub=new Pa;lineStartPx;lineWidthPx;lineEndPx;resizeTimeout;debounceTimeout;handlePosition=20;pathValue=0;lineStart=this.handlePosition;isDragStarted=!1;lineWidth="0px";VIEWBOX_WIDTH=200;LINE_START=20;LINE_WIDTH=160;colorMap=new Map([["contrast",{label:this.theme().contrastDim,bar:this.theme().contrast}],["blue",{label:this.theme().blueDim,bar:this.theme().blue}],["green",{label:this.theme().greenDim,bar:this.theme().green}],["pink",{label:this.theme().pinkDim,bar:this.theme().pink}],["orange",{label:this.theme().orangeDim,bar:this.theme().orange}],["purple",{label:this.theme().purpleDim,bar:this.theme().purple}],["grey",{label:this.theme().greyDim,bar:this.theme().grey}],["yellow",{label:this.theme().yellowDim,bar:this.theme().yellow}]]);valueChange$=new Qt;constructor(){super(),this.defaultConfig={displayName:"Slider Label",filterSelfPaths:!0,paths:{gaugePath:{description:"PUT Supported Numeric Path. IMPORTANT: Format must be set to (base)",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:null,showConvertUnitTo:!1,convertUnitTo:null,supportsPut:!0,sampleTime:500}},displayScale:{lower:0,upper:1,type:"linear"},enableTimeout:!1,dataTimeout:5,color:"contrast"},ne(()=>{this.theme()&&this.getColors(this.widgetProperties.config.color)})}ngOnInit(){this.validateConfig(),this.valueChange$.pipe(pi(e=>this.isWithinMargin(e,this.widgetProperties.config.displayScale.lower)?this.widgetProperties.config.displayScale.lower:this.isWithinMargin(e,this.widgetProperties.config.displayScale.upper)?this.widgetProperties.config.displayScale.upper:parseFloat(e.toFixed(2))),Us(200),Gs()).subscribe(e=>{this.sendValue(e)})}ngAfterViewInit(){this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.observeDataStream("gaugePath",e=>{if(!e||!e.data){this.handlePosition=this.mapValueToPosition(this.widgetProperties.config.displayScale.lower);return}this.updateHandlePosition(this.mapValueToPosition(e.data.value))}),this.skRequestSub?.unsubscribe(),this.subscribeSKRequest()}mapValueToPosition(e){let t=this.widgetProperties.config.displayScale.upper-this.widgetProperties.config.displayScale.lower,i=this.LINE_WIDTH;return(e-this.widgetProperties.config.displayScale.lower)/t*i+this.LINE_START}mapPositionToValue(e){let t=this.widgetProperties.config.displayScale.upper-this.widgetProperties.config.displayScale.lower,i=this.LINE_WIDTH;return(e-this.LINE_START)/i*t+this.widgetProperties.config.displayScale.lower}isWithinMargin(e,t){let i=(this.widgetProperties.config.displayScale.upper-this.widgetProperties.config.displayScale.lower)*.01;return Math.abs(e-t)<=i}subscribeSKRequest(){this.skRequestSub=this.signalkRequestsService.subscribeRequest().subscribe(e=>{if(e.widgetUUID==this.widgetProperties.uuid){let t=`Toggle Widget ${this.widgetProperties.config.displayName}: `;e.statusCode!=200&&(e.message?t+=e.message:t+=e.statusCode+" - "+e.statusCodeDescription,this.appService.sendSnackbarNotification(t,0))}})}sendValue(e){let t=this.widgetProperties.config.paths.gaugePath.path;this.signalkRequestsService.putRequest(t,e,this.widgetProperties.uuid)}updateConfig(e){this.widgetProperties.config=e,this.getColors(this.widgetProperties.config.color),this.calculateLineBounds(),this.startWidget()}onResized(){clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{this.calculateLineBounds()},200)}calculateLineBounds(){if(!this.svgElement()?.nativeElement){console.warn("[Slider Widget] SVG element is not initialized yet.");return}let e=this.svgElement().nativeElement.getBoundingClientRect(),t=this.LINE_START/this.VIEWBOX_WIDTH*e.width,i=this.LINE_WIDTH/this.VIEWBOX_WIDTH*e.width;this.lineStartPx=t,this.lineWidthPx=i,this.lineEndPx=this.lineStartPx+this.lineWidthPx}updateHandlePosition(e){this.handlePosition=e,this.lineWidth=`${e-this.lineStart}px`}getPointerX(e){return e.clientX-this.svgElement().nativeElement.getBoundingClientRect().left}onPointerDown(e){this.isDragStarted=!0,this.onPointerMove(e),e.stopPropagation(),e.preventDefault()}onPointerMove(e){if(this.isDragStarted){let t=this.getPointerX(e);if(t>=this.lineStartPx&&t<=this.lineEndPx){let i=(t-this.lineStartPx)/this.lineWidthPx*this.LINE_WIDTH+this.LINE_START;this.updateHandlePosition(i),this.handlePosition<=this.LINE_START?this.pathValue=this.widgetProperties.config.displayScale.lower:this.handlePosition>=this.LINE_START+this.LINE_WIDTH?this.pathValue=this.widgetProperties.config.displayScale.upper:this.pathValue=this.mapPositionToValue(this.handlePosition),this.valueChange$.next(this.pathValue)}}}onPointerUp(){this.isDragStarted=!1,this.valueChange$.next(this.pathValue)}onPointerLeave(){this.isDragStarted&&(this.isDragStarted=!1,this.valueChange$.next(this.pathValue))}getColors(e){let t=this.colorMap.get(e)||this.colorMap.get("contrast");this.labelColor.set(t.label),this.barColor.set(t.bar)}ngOnDestroy(){this.destroyDataStreams(),this.skRequestSub?.unsubscribe(),this.valueChange$.complete(),clearTimeout(this.debounceTimeout),clearTimeout(this.resizeTimeout)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-slider"]],viewQuery:function(t,i){t&1&&te(i.svgElement,Fg,5),t&2&&be()},features:[ce],decls:12,vars:9,consts:[["svgSlider",""],[3,"configChange","config","id"],[3,"text","color"],[1,"widgets-container",3,"onResize"],["width","100%","height","100%","viewBox","0 40 200 40"],["width","160","height","8","rx","4.5","id","rect3","x","20","y","56",1,"slider-bg-bar",2,"display","inline","stroke-width","1.57144"],["height","8","rx","4.5","id","rect3","x","20","y","56",2,"display","inline","stroke-width","1.57144"],["id","g22"],["cy","60","fill","#ffffff","id","circle3","r","19.549999",2,"display","inline","fill","#4d4d4d","fill-opacity","1","stroke","#8c8c8c","stroke-width","0.9","stroke-dasharray","none","stroke-opacity","1"],["cy","60","fill","#ffffff","id","circle3-3","r","17.950001",2,"display","inline","fill","#ffffff","fill-opacity","1","stroke","#e6e6e6","stroke-width","1.8","stroke-dasharray","none","stroke-opacity","0.97"],["cursor","pointer","width","200","height","40","x","0","y","40",2,"display","inline","fill","rgba(0, 0, 0, 0)","stroke","none","stroke-width","0.3","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0",3,"pointerdown","pointerup","pointermove","pointerleave"],[1,"widgetOverlay"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),G(1,"widget-title",2),v(2,"div",3),I("onResize",function(){return P(o),O(i.onResized())}),re(),v(3,"svg",4),G(4,"rect",5)(5,"rect",6),v(6,"g",7),G(7,"circle",8)(8,"circle",9),_(),v(9,"rect",10,0),I("pointerdown",function(l){return P(o),O(i.onPointerDown(l))})("pointerup",function(){return P(o),O(i.onPointerUp())})("pointermove",function(l){return P(o),O(i.onPointerMove(l))})("pointerleave",function(){return P(o),O(i.onPointerLeave())}),_()()(),De(11,Hg,1,0,"div",11),_()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),z("text",i.widgetProperties.config.displayName)("color",i.labelColor()),k(4),ae("width",i.lineWidth)("fill",i.barColor()),k(2),ae("cx",i.handlePosition),k(),ae("cx",i.handlePosition),k(3),Ae(i.dashboard.isDashboardStatic()?-1:11))},dependencies:[Ce,it,Ot,go],styles:[".widgets-container[_ngcontent-%COMP%]{display:block;position:absolute;left:0;right:0;top:15%;height:85%;width:100%;overflow:hidden;z-index:20;padding:0 20px}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent;z-index:21}.slider-bg-bar[_ngcontent-%COMP%]{fill:var(--mat-sys-inverse-on-surface)}"]})}return a})();var Ug=["rotatingDial"],Gg=["awaIndicator"],qg=["twaIndicator"],jg=["wptIndicator"],$g=["setIndicator"],Yg=["cogIndicator"],uh=([a,n],[e,t],[i,o])=>(Math.atan2(o-t,i-e)-Math.atan2(n-t,a-e)+3*Math.PI)%(2*Math.PI)-Math.PI,mh=(()=>{class a{rotatingDial=ie.required("rotatingDial");awaIndicator=ie.required("awaIndicator");twaIndicator=ie.required("twaIndicator");wptIndicator=ie.required("wptIndicator");setIndicator=ie.required("setIndicator");cogIndicator=ie.required("cogIndicator");compassHeading=B.required();courseOverGroundAngle=B(void 0);courseOverGroundEnabled=B.required();trueWindAngle=B.required();twsEnabled=B.required();trueWindSpeed=B.required();trueWindSpeedUnit=B.required();appWindAngle=B.required();awsEnabled=B.required();appWindSpeed=B.required();appWindSpeedUnit=B.required();laylineAngle=B(void 0);closeHauledLineEnabled=B.required();sailSetupEnabled=B.required();windSectorEnabled=B.required();driftEnabled=B.required();driftSet=B(void 0);driftFlow=B(void 0);waypointAngle=B(void 0);waypointEnabled=B.required();trueWindMinHistoric=B(void 0);trueWindMidHistoric=B(void 0);trueWindMaxHistoric=B(void 0);compass={oldValue:0,newValue:0};twa={oldValue:0,newValue:0};awa={oldValue:0,newValue:0};wpt={oldValue:0,newValue:0};cog={oldValue:0,newValue:0};set={oldValue:0,newValue:0};headingValue="--";appWindSpeedDisplay=ct(()=>{let e=this.appWindSpeed();return e==null?"--":e.toFixed(1)});trueWindSpeedDisplay=ct(()=>{let e=this.trueWindSpeed();return e==null?"--":e.toFixed(1)});trueWindHeading=0;waypointActive=K(!1);flow=ct(()=>{let e=this.driftFlow();return e==null?"--":e.toFixed(1)});portLaylinePrev=0;stbdLaylinePrev=0;portLaylineAnimId=null;stbdLaylineAnimId=null;closeHauledLinePortPath="M 500,500 500,500";closeHauledLineStbdPath="M 500,500 500,500";portSectorPrev={min:0,mid:0,max:0};stbdSectorPrev={min:0,mid:0,max:0};portSectorAnimId=null;stbdSectorAnimId=null;portWindSectorPath="";stbdWindSectorPath="";animationFrameIds=new WeakMap;ngZone=E(Je);CENTER=500;RADIUS=350;ANIMATION_DURATION=1e3;constructor(){ne(()=>{let e=this.waypointEnabled();Ke(()=>{this.waypointActive.set(e)})}),ne(()=>{let e=parseFloat(this.compassHeading().toFixed(0));e!==null&&Ke(()=>{this.compass.oldValue=this.compass.newValue,this.compass.newValue=e,this.headingValue=e.toString(),this.rotatingDial()?.nativeElement&&(vt(this.rotatingDial().nativeElement,-this.compass.oldValue,-this.compass.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines(),this.updateWindSectors())})}),ne(()=>{let e=parseFloat(this.courseOverGroundAngle().toFixed(0));e!=null&&Ke(()=>{this.cog.oldValue=this.cog.newValue,this.cog.newValue=e-this.compass.newValue,this.cogIndicator()?.nativeElement&&vt(this.cogIndicator().nativeElement,this.cog.oldValue,this.cog.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),ne(()=>{let e=this.waypointAngle();Ke(()=>{if(!e){this.waypointActive.set(!1);return}this.waypointEnabled()?this.waypointActive.set(!0):this.waypointActive.set(!1),this.wpt.oldValue=this.wpt.newValue,this.wpt.newValue=e,this.wptIndicator()?.nativeElement&&vt(this.wptIndicator().nativeElement,this.wpt.oldValue,this.wpt.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),ne(()=>{let e=parseFloat(this.appWindAngle().toFixed(0));e!=null&&Ke(()=>{this.awa.oldValue=this.awa.newValue,this.awa.newValue=e,this.awaIndicator()?.nativeElement&&vt(this.awaIndicator().nativeElement,this.awa.oldValue,this.awa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),ne(()=>{let e=parseFloat(this.trueWindAngle().toFixed(0));e!=null&&Ke(()=>{this.twa.oldValue=this.twa.newValue,this.trueWindHeading=e,this.twa.newValue=this.addHeading(this.trueWindHeading,this.compass.newValue*-1),this.twaIndicator()?.nativeElement&&(vt(this.twaIndicator().nativeElement,this.twa.oldValue,this.twa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines())})}),ne(()=>{let e=parseFloat(this.driftSet().toFixed(0));e!=null&&Ke(()=>{this.set.oldValue=this.set.newValue,this.set.newValue=e,this.setIndicator()?.nativeElement&&vt(this.setIndicator().nativeElement,this.set.oldValue,this.set.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})})}updateCloseHauledLines(){if(!this.closeHauledLineEnabled())return;let e=this.addHeading(Number(this.awa.newValue),this.laylineAngle()*-1);this.animateLayline(this.portLaylinePrev,e,!0),this.portLaylinePrev=e;let t=this.addHeading(Number(this.awa.newValue),this.laylineAngle());this.animateLayline(this.stbdLaylinePrev,t,!1),this.stbdLaylinePrev=t}animateLayline(e,t,i){i&&this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),!i&&this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId);let o=this.ANIMATION_DURATION,r=performance.now(),l=s=>s<.5?4*s*s*s:1-Math.pow(-2*s+2,3)/2,d=s=>{let c=s-r,m=Math.min(c/o,1),f=l(m),y=t-e;y>180&&(y-=360),y<-180&&(y+=360);let x=(e+y*f+360)%360*Math.PI/180,V=Math.floor(this.RADIUS*Math.sin(x)+this.CENTER),H=Math.floor(this.RADIUS*Math.cos(x)*-1+this.CENTER);if(i?this.closeHauledLinePortPath=`M ${this.CENTER},${this.CENTER} L ${V},${H}`:this.closeHauledLineStbdPath=`M ${this.CENTER},${this.CENTER} L ${V},${H}`,m<1){let Z=requestAnimationFrame(d);i?this.portLaylineAnimId=Z:this.stbdLaylineAnimId=Z}else i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null},p=requestAnimationFrame(d);i?this.portLaylineAnimId=p:this.stbdLaylineAnimId=p}windSectorsInitialized=!1;updateWindSectors(){if(!this.windSectorEnabled()||this.trueWindMinHistoric()==null||this.trueWindMidHistoric()==null||this.trueWindMaxHistoric()==null)return;let e={min:this.trueWindMinHistoric(),mid:this.trueWindMidHistoric(),max:this.trueWindMaxHistoric()},t={min:this.trueWindMinHistoric(),mid:this.trueWindMidHistoric(),max:this.trueWindMaxHistoric()};if(!this.windSectorsInitialized){this.portSectorPrev=e,this.stbdSectorPrev=t,this.windSectorsInitialized=!0,this.animateWindSector(e,e,!0),this.animateWindSector(t,t,!1);return}this.animateWindSector(this.portSectorPrev,e,!0),this.animateWindSector(this.stbdSectorPrev,t,!1),this.portSectorPrev=e,this.stbdSectorPrev=t}animateWindSector(e,t,i){i&&this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),!i&&this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId);let o=this.ANIMATION_DURATION,r=performance.now(),l=s=>s<.5?4*s*s*s:1-Math.pow(-2*s+2,3)/2,d=s=>{let c=s-r,m=Math.min(c/o,1),f=l(m),y=(lt,ti)=>lt+(ti-lt)*f,S=y(e.min,t.min),x=y(e.mid,t.mid),V=y(e.max,t.max),H=this.addHeading(this.addHeading(S,Number(this.compass.newValue)*-1),this.laylineAngle()*(i?-1:1)),Z=this.addHeading(this.addHeading(x,Number(this.compass.newValue)*-1),this.laylineAngle()*(i?-1:1)),me=this.addHeading(this.addHeading(V,Number(this.compass.newValue)*-1),this.laylineAngle()*(i?-1:1)),Oe=this.RADIUS*Math.sin(H*Math.PI/180)+this.CENTER,Be=this.RADIUS*Math.cos(H*Math.PI/180)*-1+this.CENTER,ye=this.RADIUS*Math.sin(Z*Math.PI/180)+this.CENTER,X=this.RADIUS*Math.cos(Z*Math.PI/180)*-1+this.CENTER,Te=this.RADIUS*Math.sin(me*Math.PI/180)+this.CENTER,Ue=this.RADIUS*Math.cos(me*Math.PI/180)*-1+this.CENTER,ht=Math.abs(uh([Oe,Be],[ye,X],[Te,Ue]))>Math.PI/2?0:1,Qe=uh([Te,Ue],[Oe,Be],[ye,X])>0?0:1,Xe=`M ${this.CENTER},${this.CENTER} L ${Oe},${Be} A ${this.RADIUS},${this.RADIUS} 0 ${ht} ${Qe} ${Te},${Ue} z`;if(i?this.portWindSectorPath=Xe:this.stbdWindSectorPath=Xe,m<1){let lt=requestAnimationFrame(d);i?this.portSectorAnimId=lt:this.stbdSectorAnimId=lt}else i?this.portSectorAnimId=null:this.stbdSectorAnimId=null},p=requestAnimationFrame(d);i?this.portSectorAnimId=p:this.stbdSectorAnimId=p}addHeading(e=0,t=0){let i=e+t;for(;i>359;)i=i-359;for(;i<0;)i=i+359;return i}ngOnDestroy(){this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId),this.portLaylineAnimId=null,this.stbdLaylineAnimId=null,this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null;let e=[this.rotatingDial(),this.awaIndicator(),this.twaIndicator(),this.wptIndicator(),this.setIndicator(),this.cogIndicator()];for(let t of e){let i=t?.nativeElement;if(!i)continue;let o=this.animationFrameIds.get(i);o&&cancelAnimationFrame(o),this.animationFrameIds.delete(i)}}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["svg-racesteer"]],viewQuery:function(t,i){t&1&&(te(i.rotatingDial,Ug,5),te(i.awaIndicator,Gg,5),te(i.twaIndicator,qg,5),te(i.wptIndicator,jg,5),te(i.setIndicator,$g,5),te(i.cogIndicator,Yg,5)),t&2&&be(6)},inputs:{compassHeading:[1,"compassHeading"],courseOverGroundAngle:[1,"courseOverGroundAngle"],courseOverGroundEnabled:[1,"courseOverGroundEnabled"],trueWindAngle:[1,"trueWindAngle"],twsEnabled:[1,"twsEnabled"],trueWindSpeed:[1,"trueWindSpeed"],trueWindSpeedUnit:[1,"trueWindSpeedUnit"],appWindAngle:[1,"appWindAngle"],awsEnabled:[1,"awsEnabled"],appWindSpeed:[1,"appWindSpeed"],appWindSpeedUnit:[1,"appWindSpeedUnit"],laylineAngle:[1,"laylineAngle"],closeHauledLineEnabled:[1,"closeHauledLineEnabled"],sailSetupEnabled:[1,"sailSetupEnabled"],windSectorEnabled:[1,"windSectorEnabled"],driftEnabled:[1,"driftEnabled"],driftSet:[1,"driftSet"],driftFlow:[1,"driftFlow"],waypointAngle:[1,"waypointAngle"],waypointEnabled:[1,"waypointEnabled"],trueWindMinHistoric:[1,"trueWindMinHistoric"],trueWindMidHistoric:[1,"trueWindMidHistoric"],trueWindMaxHistoric:[1,"trueWindMaxHistoric"]},decls:156,vars:32,consts:[["rotatingDial",""],["wptIndicator",""],["setIndicator",""],["cogIndicator",""],["awaIndicator",""],["twaIndicator",""],["viewBox","0 0 1000 1000"],["id","defs1"],["id","linearGradient18"],["offset","0",1,"boat",2,"stop-opacity","0.71372495"],["offset","1",1,"boat",2,"stop-opacity","0"],["id","linearGradient16"],["id","linearGradient13"],["offset","0.41176471",1,"drift-arrow",2,"stop-opacity","1"],["offset","1",1,"drift-arrow",2,"stop-opacity","0"],["id","swatch4"],["offset","0","id","stop4",2,"stop-color","#000000","stop-opacity","1"],["clipPathUnits","userSpaceOnUse","id","clipPath16"],["id","ellipse16","cx","311.24539","cy","-1516.3778","rx","194.27342","ry","181.83022",2,"display","inline","fill","#9a9300","fill-opacity","1","stroke","none","stroke-width","55","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],[0,"xlink","href","#linearGradient13","id","linearGradient14","x1","453.48047","y1","583.62891","x2","638.11328","y2","583.62891","gradientUnits","userSpaceOnUse","gradientTransform","matrix(0.00723393,1.2388183,-1.0538241,0.00615367,1111.2051,-179.73465)"],[0,"xlink","href","#linearGradient16","id","linearGradient17","x1","-502.04896","y1","439.35551","x2","-316","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],[0,"xlink","href","#linearGradient18","id","linearGradient19","x1","495.83999","y1","439.35551","x2","681.88895","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],["id","layerBackground",2,"display","inline"],["id","boat",2,"display","inline"],["id","portSide","d","M 498.75049,208.89453 A 267.09439,554.67401 0 0 1 678.45974,767.81661",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient19)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","starboardSide","d","m -499.13846,208.89453 a 267.09439,554.67401 0 0 1 179.70925,558.92208","transform","scale(-1,1)",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient17)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","LayerLayline"],["id","PortLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","StbdLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","LayerWindShift"],["id","portSectorShift",1,"wind-sector-port",2,"fill-opacity","0.5","stroke","none"],["id","StbdSectorShift",1,"wind-sector-stbd",2,"fill-opacity","0.5","stroke","none"],["id","layerCompass"],["id","fixedDial"],["id","portStarboardBackground","d","M 499.99997,10.520805 A 489.47916,489.47916 0 0 0 10.520805,499.99997 489.47916,489.47916 0 0 0 499.99997,989.47913 489.47916,489.47916 0 0 0 989.47913,499.99997 489.47916,489.47916 0 0 0 499.99997,10.520805 Z m 0,132.291665 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"fixed-dial-background",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","port","d","M 93.283801,265.18231 A 469.63541,469.63541 0 0 1 339.37522,58.687079",1,"port",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","starboard","d","M 660.62476,58.687069 A 469.63541,469.63541 0 0 1 906.71619,265.18228",1,"starboard",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","barsAndText",1,"contrast-stroke",2,"display","inline"],["d","m 416.35095,19.837399 2.78142,15.77426","id","path199",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 334.23173,41.658798 5.47834,15.051615","id","path200",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 260.27336,81.806174 12.55151,21.739856","id","path37",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 187.44581,126.00035 10.29591,12.2702","id","path197",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 127.23918,185.95785 12.27019,10.29591","id","path198",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 83.252815,257.66724 21.739865,12.55151","id","path166",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 42.289518,332.39273 15.05162,5.47835","id","path195",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 20.127799,414.42077 15.774251,2.78142","id","path196",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 17.879075,498.47765 H 42.982096","id","path167",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 19.776759,583.71187 15.77426,-2.78142","id","path193",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 41.598167,665.8311 15.051615,-5.47834","id","path194",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 81.668963,739.71246 103.40883,727.16095","id","path168",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 125.93981,812.61701 12.2702,-10.29591","id","path191",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 185.89732,872.82365 10.29591,-12.27019","id","path192",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 257.53004,916.73298 12.55151,-21.73985","id","path169",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 332.33219,957.7732 5.47835,-15.05162","id","path189",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 414.36024,979.93493 2.78142,-15.77425","id","path190",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 498.34046,982.10672 V 957.0037","id","path170",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 583.65133,980.28596 580.86991,964.5117","id","path187",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 665.77057,958.46456 -5.47834,-15.05161","id","path188",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 739.57526,918.31683 727.02375,896.57698","id","path171",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 812.55647,874.12301 802.26056,861.85282","id","path185",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 872.76312,814.16551 860.49293,803.8696","id","path186",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 916.59579,742.45577 894.85593,729.90426","id","path172",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 957.71266,667.73063 -15.05161,-5.47834","id","path183",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 979.8744,585.70259 -15.77425,-2.78142","id","path184",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 981.96954,501.64535 -25.10304,10e-6","id","path173",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 980.22542,416.41149 -15.77425,2.78143","id","path181",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 958.40403,334.29226 -15.05161,5.47834","id","path182",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 918.17964,260.41055 -21.73986,12.55151","id","path174",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 874.06247,187.50636 -12.27018,10.29591","id","path180",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 817.34594,130.05494 -10.40259,12.17987","id","path179",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 742.31857,83.390025 729.76706,105.12988","id","path175",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 667.6701,42.350172 -5.47834,15.051615","id","path178",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 585.64206,20.188432 -2.78142,15.77425","id","path176",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 501.50816,18.016286 V 43.119307","id","path177",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","rotatingDialBackplate","d","M 499.99997,50.208304 A 449.79166,449.79166 0 0 0 50.208304,499.99997 449.79166,449.79166 0 0 0 499.99997,949.79163 449.79166,449.79166 0 0 0 949.79163,499.99997 449.79166,449.79166 0 0 0 499.99997,50.208304 Z m 0,92.604166 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"rotating-dial-Backplate",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],[0,"xml","space","preserve","x","181.91386","y","284.25186","id","text3","transform","rotate(-30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan3","x","181.91386","y","284.25186",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-183.53558","y","283.74811","id","text14","transform","rotate(-60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan14","x","-183.53558","y","283.74811",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-499.70761","y","100.95312","id","text15","transform","rotate(-90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan15","x","-499.70761","y","100.95312",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.66119","y","-216.36243","id","text16","transform","rotate(-120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["x","-681.66119","y","-216.36243","id","tspan25",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.06616","y","-581.71271","id","text17","transform","rotate(-150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan17","x","-681.06616","y","-581.71271",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-498.3313","y","-897.40875","id","text18","transform","scale(-1)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan18","x","-498.3313","y","-897.40875",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-184.41313","y","-1080.8452","id","text19","transform","rotate(150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan19","x","-184.41313","y","-1080.8452",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","181.57225","y","-1080.8853","id","text20","transform","rotate(120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan20","x","181.57225","y","-1080.8853",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","501.42661","y","-896.93701","id","text21","transform","rotate(90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan21","x","501.42661","y","-896.93701",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","682.35815","y","-579.63336","id","text22","transform","rotate(60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan22","x","682.35815","y","-579.63336",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","681.81525","y","-214.27321","id","text23","transform","rotate(30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan23","x","681.81525","y","-214.27321",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","500.15503","y","101.96342","id","text24",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan24","x","500.15503","y","101.96342",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],["clip-path","url(#clipPath16)","d","m 416.36313,-1521.3937 c 371.15015,24.6522 731.95257,192.9774 983.98757,467.456 227.2972,244.24389 363.1732,572.3808 369.4045,906.42978 15.9331,499.10271 -269.2071,986.17861 -700.5178,1232.88522 -485.08308,290.4843 -1134.555606,269.7346 -1599.2788,-52.7169 -404.5062,-269.24461 -653.2224,-759.35388 -614.1746,-1245.84043 30.2148,-487.61814 344.18931,-937.89997 780.52695,-1152.15867 176.96718,-89.2092 371.8823084,-142.3103 569.54914,-156.0363","transform","matrix(0.28310615,0,0,0.32000828,411.88452,661.64815)",1,"next-waypoint-bar",2,"display","inline","fill","none","stroke-width","30","stroke-miterlimit","0"],["id","path6341","cx","500","cy","175.00002","rx","17.361122","ry","17.361118",1,"next-waypoint",2,"display","inline","fill","none","stroke-width","15.2778","stroke-dasharray","none"],["id","setArrow","d","m 563.93337,480.60403 -64.4901,-94.9673 -63.37665,95.71396 58.48691,-30.71299 0.77713,133.08346 c 0.0992,16.99331 2.52916,30.65913 5.44822,30.64209 2.91911,-0.0171 5.18926,-13.71032 5.09001,-30.70362 l -0.77782,-133.20444 z",2,"fill","url(#linearGradient14)","stroke","none","stroke-width","1.18648"],["id","layerCounter"],["id","twsCounter"],[0,"xml","space","preserve","x","904.27722","y","150.88913","id","text43",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","903.84814","y","114.73512","id","text42",1,"true-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","905.25897","y","52.894646","id","text41",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","awsCounter"],[0,"xml","space","preserve","x","94.554222","y","150.88913","id","text39",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","94.580925","y","114.63747","id","text40",1,"app-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","95.967644","y","52.894646","id","text39-7",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","layerCurrent"],["id","text11",0,"xml","space","preserve","x","499.78842","y","523.55145",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],["id","layerIndicators",2,"display","inline"],["d","m 506.20767,172.99458 a 6.3888631,8.8250643 0 0 1 -6.38888,8.82508 6.3888631,8.8250643 0 0 1 -6.38888,-8.82508 6.3888631,8.8250643 0 0 1 6.38888,-8.82509 6.3888631,8.8250643 0 0 1 6.38888,8.82509 z M 476.25472,30.811298 493.47058,13.265068 c 3.6173,-3.6867571 9.44162,-3.6867571 13.05892,0 l 17.21586,17.546106 c 3.6173,3.686743 3.6173,9.622786 0,13.309544 l -17.21595,17.54623 c -3.61721,3.686757 -9.44153,3.686757 -13.05893,0 L 476.25472,44.120841 c -3.6174,-3.686743 -3.6174,-9.622924 0,-13.309543 z m 17.20533,-16.510116 h 12.77766 V 173.26408 h -12.77766 z",1,"course-over-ground",2,"stroke-width","14.7329","stroke-linecap","square"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.7935953,0,0,0.92686935,101.84848,11.000842)",1,"app-wind",2,"display","inline","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110",1,"card-color",2,"font-weight","bold","font-size","70px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.60410307,0,0,0.70555435,196.91787,21.152867)",1,"true-wind",2,"display","inline","stroke","none","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110","id","text10",1,"card-color",2,"font-weight","bold","font-size","60px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["id","layerHeading",2,"display","inline"],["id","rect1","width","256.47919","height","108.5428","x","371.76041","y","10.805443","rx","23.757372",1,"heading-background",2,"stroke-width","4.43107","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","0.509946"],["x","511.29395","y","102.86786",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","106.667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","5","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"]],template:function(t,i){t&1&&(re(),A(0,"svg",6)(1,"defs",7)(2,"linearGradient",8),Q(3,"stop",9)(4,"stop",10),W(),A(5,"linearGradient",11),Q(6,"stop",9)(7,"stop",10),W(),A(8,"linearGradient",12),Q(9,"stop",13)(10,"stop",14),W(),A(11,"linearGradient",15),Q(12,"stop",16),W(),A(13,"clipPath",17),Q(14,"ellipse",18),W(),Q(15,"linearGradient",19)(16,"linearGradient",20)(17,"linearGradient",21),W(),A(18,"g",22)(19,"g",23),Q(20,"path",24)(21,"path",25),W()(),A(22,"g",26),Q(23,"path",27)(24,"path",28),W(),A(25,"g",29),Q(26,"path",30)(27,"path",31),W(),A(28,"g",32)(29,"g",33),Q(30,"path",34)(31,"path",35)(32,"path",36),W(),A(33,"g",null,0)(35,"g",37),Q(36,"path",38)(37,"path",39)(38,"path",40)(39,"path",41)(40,"path",42)(41,"path",43)(42,"path",44)(43,"path",45)(44,"path",46)(45,"path",47)(46,"path",48)(47,"path",49)(48,"path",50)(49,"path",51)(50,"path",52)(51,"path",53)(52,"path",54)(53,"path",55)(54,"path",56)(55,"path",57)(56,"path",58)(57,"path",59)(58,"path",60)(59,"path",61)(60,"path",62)(61,"path",63)(62,"path",64)(63,"path",65)(64,"path",66)(65,"path",67)(66,"path",68)(67,"path",69)(68,"path",70)(69,"path",71)(70,"path",72)(71,"path",73)(72,"path",74),A(73,"text",75)(74,"tspan",76),b(75,"330"),W()(),A(76,"text",77)(77,"tspan",78),b(78,"300"),W()(),A(79,"text",79)(80,"tspan",80),b(81,"W"),W()(),A(82,"text",81)(83,"tspan",82),b(84,"240"),W()(),A(85,"text",83)(86,"tspan",84),b(87,"210"),W()(),A(88,"text",85)(89,"tspan",86),b(90,"S"),W()(),A(91,"text",87)(92,"tspan",88),b(93,"150"),W()(),A(94,"text",89)(95,"tspan",90),b(96,"120"),W()(),A(97,"text",91)(98,"tspan",92),b(99,"E"),W()(),A(100,"text",93)(101,"tspan",94),b(102,"60"),W()(),A(103,"text",95)(104,"tspan",96),b(105,"30"),W()(),A(106,"text",97)(107,"tspan",98),b(108,"N"),W()()(),A(109,"g",null,1),Q(111,"path",99)(112,"ellipse",100),W(),A(113,"g",null,2),Q(115,"path",101),W()()(),A(116,"g",102)(117,"g",103)(118,"text",104),b(119),W(),A(120,"text",105),b(121),W(),A(122,"text",106),b(123,"TWS"),W()(),A(124,"g",107)(125,"text",108),b(126),W(),A(127,"text",109),b(128),W(),A(129,"text",110),b(130,"AWS"),W()()(),A(131,"g",111)(132,"text",112),b(133),W()(),A(134,"g",113)(135,"g",null,3),Q(137,"path",114),W(),A(138,"g",null,4),Q(140,"path",115),A(141,"text",116),b(142,"A"),W()(),A(143,"g",null,5),Q(145,"path",117),A(146,"text",118),b(147,"T"),W(),b(148,` attributeName="transform" type="rotate" [attr.from]="trueWind.oldDegreeIndicator+' 500 500'" [attr.to]="trueWind.newDegreeIndicator+' 500 500'" begin="indefinite" dur="0.5s" keySplines="0.25 0.1 0.25 1" keyTimes="0;1" calcMode="spline" additive="replace" fill="freeze" /> `),W()(),A(149,"g",119),Q(150,"rect",120),A(151,"text",121)(152,"tspan"),b(153),A(154,"tspan"),b(155,"\xB0"),W()()()()()),t&2&&(k(22),we("display",i.closeHauledLineEnabled()?"inline":"none"),k(),we("display",i.trueWindAngle()!=null?"inline":"none"),ae("d",i.closeHauledLineStbdPath),k(),we("display",i.trueWindAngle()!=null?"inline":"none"),ae("d",i.closeHauledLinePortPath),k(),we("display",i.windSectorEnabled()?"inline":"none"),k(),we("display",i.portWindSectorPath!="none"?"inline":"none"),ae("d",i.portWindSectorPath),k(),we("display",i.portWindSectorPath!="none"?"inline":"none"),ae("d",i.stbdWindSectorPath),k(82),ae("display",i.waypointActive()?"inline":"none"),k(4),we("display",i.driftEnabled()?"inline":"none"),k(4),we("display",i.twsEnabled()?"inline":"none"),k(2),He(i.trueWindSpeedUnit()),k(2),He(i.trueWindSpeedDisplay()),k(3),we("display",i.awsEnabled()?"inline":"none"),k(2),He(i.appWindSpeedUnit()),k(2),He(i.appWindSpeedDisplay()),k(3),we("display",i.driftEnabled()?"inline":"none"),k(2),He(i.flow()),k(2),ae("display",i.courseOverGroundEnabled()?"inline":"none"),k(18),He(i.headingValue))},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}svg[_ngcontent-%COMP%]{position:absolute;height:100%;width:100%;left:0;top:0}.fixed-dial-background[_ngcontent-%COMP%]{fill:var(--kip-grey-color)}.rotating-dial-Backplate[_ngcontent-%COMP%]{fill:var(--mat-sys-background)}.starboard[_ngcontent-%COMP%]{stroke:var(--kip-starboard-color)}.port[_ngcontent-%COMP%]{stroke:var(--kip-port-color)}.heading-background[_ngcontent-%COMP%]{stroke:var(--kip-grey-color);fill:var(--kip-widget-card-background-color)}.boat[_ngcontent-%COMP%]{stop-color:var(--kip-grey-color)!important}.contrast-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.contrast-stroke[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.card-color[_ngcontent-%COMP%]{fill:var(--kip-widget-card-background-color)}.true-wind[_ngcontent-%COMP%]{fill:var(--kip-yellow-color)}.true-wind-label[_ngcontent-%COMP%]{fill:var(--kip-yellow-dim-color)}.app-wind[_ngcontent-%COMP%]{fill:var(--kip-orange-color)}.app-wind-label[_ngcontent-%COMP%]{fill:var(--kip-orange-dim-color)}.course-over-ground[_ngcontent-%COMP%]{fill:var(--kip-pink-color)}.next-waypoint[_ngcontent-%COMP%]{stroke:var(--kip-green-color)}.next-waypoint-bar[_ngcontent-%COMP%]{stroke:var(--kip-grey-color)}.laylines[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.wind-sector-port[_ngcontent-%COMP%]{fill:var(--kip-port-color)}.wind-sector-stbd[_ngcontent-%COMP%]{fill:var(--kip-starboard-color)}.drift-arrow[_ngcontent-%COMP%]{stop-color:var(--kip-blue-color)}"]})}return a})();var ph=(()=>{class a extends Se{zones=E(Je);currentHeading=0;courseOverGroundAngle=0;appWindAngle=0;appWindSpeed=0;appWindSpeedUnit="";trueWindAngle=0;trueWindSpeed=0;trueWindSpeedUnit="";driftFlow=0;driftSet=0;waypointAngle=0;historicalWindDirection=[];trueWindMinHistoric;trueWindMidHistoric;trueWindMaxHistoric;windSectorObservableSub=null;constructor(){super(),this.defaultConfig={filterSelfPaths:!0,paths:{headingPath:{description:"True Heading",path:"self.navigation.headingTrue",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},appWindAngle:{description:"Apparent Wind Angle",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},appWindSpeed:{description:"Apparent Wind Speed",path:"self.environment.wind.speedApparent",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500},trueWindAngle:{description:"True Wind Angle",path:"self.environment.wind.angleTrueWater",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},trueWindSpeed:{description:"True Wind Speed",path:"self.environment.wind.speedTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500},courseOverGround:{description:"True Course Over Ground",path:"self.navigation.courseOverGroundTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",showConvertUnitTo:!1,convertUnitTo:"deg",sampleTime:500},nextWaypointBearing:{description:"Next Waypoint True Bearing",path:"self.navigation.courseGreatCircle.nextPoint.bearingTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},set:{description:"True Drift Set",path:"self.environment.current.setTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},drift:{description:"Drift Speed Impact",path:"self.environment.current.drift",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500}},windSectorEnable:!0,windSectorWindowSeconds:5,laylineEnable:!0,laylineAngle:40,waypointEnable:!0,courseOverGroundEnable:!0,driftEnable:!0,awsEnable:!0,twsEnable:!0,sailSetupEnable:!1,enableTimeout:!1,dataTimeout:5}}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.stopWindSectors(),this.appWindSpeedUnit=this.widgetProperties.config.paths.trueWindSpeed.convertUnitTo,this.trueWindSpeedUnit=this.widgetProperties.config.paths.appWindSpeed.convertUnitTo,this.observeDataStream("headingPath",e=>{e.data.value==null&&(e.data.value=0),this.currentHeading=e.data.value}),this.observeDataStream("courseOverGround",e=>{e.data.value==null&&(e.data.value=0),this.courseOverGroundAngle=e.data.value}),this.observeDataStream("drift",e=>{e.data.value==null&&(e.data.value=0),this.driftFlow=e.data.value}),this.observeDataStream("set",e=>{e.data.value==null&&(e.data.value=0),this.driftSet=e.data.value}),this.observeDataStream("nextWaypointBearing",e=>{e.data.value<0?this.waypointAngle=360+e.data.value:this.waypointAngle=e.data.value}),this.observeDataStream("appWindAngle",e=>{if(e.data.value==null&&(e.data.value=0),e.data.value<0?this.appWindAngle=360+e.data.value:this.appWindAngle=e.data.value,this.widgetProperties.config.windSectorEnable){let t=this.addHeading(this.currentHeading,e.data.value);this.addHistoricalWindDirection(t)}}),this.observeDataStream("appWindSpeed",e=>{e.data.value==null&&(e.data.value=0),this.appWindSpeed=e.data.value}),this.observeDataStream("trueWindSpeed",e=>{e.data.value==null&&(e.data.value=0),this.trueWindSpeed=e.data.value}),this.observeDataStream("trueWindAngle",e=>{e.data.value==null&&(e.data.value=0);let t=this.widgetProperties.config.paths.trueWindAngle.path;t.includes("angleTrueWater")||t.includes("angleTrueGround")?this.trueWindAngle=this.addHeading(this.currentHeading,e.data.value):this.trueWindAngle=e.data.value}),this.startWindSectors()}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}ngOnDestroy(){this.destroyDataStreams(),this.stopWindSectors()}startWindSectors(){this.zones.runOutsideAngular(()=>{this.windSectorObservableSub=Ra(500).subscribe(()=>{this.historicalCleanup()})})}addHistoricalWindDirection(e){this.historicalWindDirection.push({timestamp:Date.now(),windDirection:e});let t=this.arcForAngles(this.historicalWindDirection.map(i=>i.windDirection));this.trueWindMinHistoric=t.min,this.trueWindMaxHistoric=t.max,this.trueWindMidHistoric=t.mid}arcForAngles(e){return!e||e.length===0?{min:0,max:0,mid:0}:e.slice(1).reduce((i,o)=>{let r=o;for(;r<i.min-180;)r+=360;for(;r>i.max+180;)r-=360;return i.min=Math.min(i.min,r),i.max=Math.max(i.max,r),i.mid=(i.max-i.min)/2+i.min,i},{min:e[0],max:e[0],mid:e[0]})}historicalCleanup(){let e=Date.now()-this.widgetProperties.config.windSectorWindowSeconds*1e3;this.historicalWindDirection=this.historicalWindDirection.filter(t=>t.timestamp>=e)}stopWindSectors(){this.windSectorObservableSub?.unsubscribe()}addHeading(e,t){let i=(e+t)%360;return i<0&&(i+=360),i}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-racesteer"]],features:[ce],decls:2,vars:25,consts:[[3,"configChange","config","id"],[3,"compassHeading","courseOverGroundAngle","courseOverGroundEnabled","trueWindAngle","twsEnabled","trueWindSpeed","trueWindSpeedUnit","appWindAngle","awsEnabled","appWindSpeed","appWindSpeedUnit","laylineAngle","closeHauledLineEnabled","windSectorEnabled","driftEnabled","driftFlow","driftSet","waypointAngle","waypointEnabled","trueWindMinHistoric","trueWindMidHistoric","trueWindMaxHistoric","sailSetupEnabled"]],template:function(t,i){t&1&&(v(0,"widget-host",0),ve("configChange",function(r){return fe(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),G(1,"svg-racesteer",1),_()),t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),z("compassHeading",i.currentHeading)("courseOverGroundAngle",i.courseOverGroundAngle)("courseOverGroundEnabled",i.widgetProperties.config.courseOverGroundEnable)("trueWindAngle",i.trueWindAngle)("twsEnabled",i.widgetProperties.config.twsEnable)("trueWindSpeed",i.trueWindSpeed)("trueWindSpeedUnit",i.trueWindSpeedUnit)("appWindAngle",i.appWindAngle)("awsEnabled",i.widgetProperties.config.awsEnable)("appWindSpeed",i.appWindSpeed)("appWindSpeedUnit",i.appWindSpeedUnit)("laylineAngle",i.widgetProperties.config.laylineAngle)("closeHauledLineEnabled",i.widgetProperties.config.laylineEnable)("windSectorEnabled",i.widgetProperties.config.windSectorEnable)("driftEnabled",i.widgetProperties.config.driftEnable)("driftFlow",i.driftFlow)("driftSet",i.driftSet)("waypointAngle",i.waypointAngle)("waypointEnabled",i.widgetProperties.config.waypointEnable)("trueWindMinHistoric",i.trueWindMinHistoric)("trueWindMidHistoric",i.trueWindMidHistoric)("trueWindMaxHistoric",i.trueWindMaxHistoric)("sailSetupEnabled",i.defaultConfig.sailSetupEnable))},dependencies:[mh,Ce],encapsulation:2})}return a})();var Kg=["widgetDataChart"];wt.register(On,Pn,En,Dn,Mn,An,no,ao);var gh=(()=>{class a extends Se{ngZone=E(Je);_dataset=E(At);canvasService=E(tt);widgetDataChart=ie("widgetDataChart",{read:Ye});lineChartData={datasets:[]};lineChartOptions={parsing:!1,datasets:{line:{pointRadius:0,pointHoverRadius:0,tension:.3}},animations:{tension:{easing:"easeInOutCubic"}}};lineChartType="line";chart;_dsDirectionSub=null;_dsSpeedSub=null;datasetConfig=null;dataSourceInfo=null;xCenter=null;xStep=null;xCenterSpeed=null;xStepSpeed=null;CENTER_LINE_WIDTH=4;GRID_LINE_WIDTH=1;EDGE_EXTEND_UP_PX=42;EDGE_SPEED_LABEL_OFFSET=5;EDGE_DIR_LABEL_OFFSET=5;TICK_LABEL_FONT_SIZE=20;CENTER_LABEL_FONT_SIZE=22;SPEED_VALUE_FONT_SIZE=62;TOP_VALUE_Y_OFFSET=62;TOP_UNIT_Y_OFFSET=51;UNIT_FONT_SIZE=28;UNIT_PADDING=8;nearlyEqual(e,t,i=1e-6){if(!Number.isFinite(e)||!Number.isFinite(t))return!1;let o=Math.max(1,Math.max(Math.abs(e),Math.abs(t)));return Math.abs(e-t)<=i*o}resolveTickColor(e,t,i){let r=t.options.ticks?.color;return typeof r=="function"?r({chart:e,scale:t,tick:{value:i}})??wt.defaults.color:typeof r=="string"?r:wt.defaults.color}axisTopLabelY(e){return e.options?.position==="top"?e.top+4:e.bottom+2}gridBackgroundPlugin={id:"xSpeedGridBackground",beforeDraw:e=>{let t=e.chartArea;if(!t)return;let i=e.ctx,o=this.theme();i.save(),i.globalCompositeOperation="destination-over",i.fillStyle=o.background,i.fillRect(t.left,t.top,t.width/2,t.height),i.restore()}};centerTickPlugin={id:"centerTickStyle",afterDraw:e=>{let t=e.ctx,i=e.chartArea,o=this.theme(),r=this.getThemeColors(),l=wt.defaults.font,d=e.scales,p=e.options?.scales,s=e.data?.datasets?.[0]?.data,c=e.data?.datasets?.[5]?.data,m=(s?.length??0)>=2&&(c?.length??0)>=2,f=(ye,X)=>{let Te=d?.[ye],Ue=p;if(!Te)return;let ht=Te,Qe=Ue?.[ye]?.min??ht.min,Xe=Ue?.[ye]?.max??ht.max;if(typeof Qe!="number"||typeof Xe!="number"||!isFinite(Qe)||!isFinite(Xe))return;let lt=(Qe+Xe)/2,ti=Te.getPixelForValue(lt);t.save(),t.strokeStyle=o.contrastDim,t.lineWidth=this.CENTER_LINE_WIDTH,t.beginPath(),t.moveTo(ti,i.top),t.lineTo(ti,i.bottom),t.stroke(),t.restore(),t.save(),t.fillStyle=o.contrastDim,t.font=`bold ${this.CENTER_LABEL_FONT_SIZE}px ${l.family}`,t.textAlign="center",t.textBaseline="top";let ee=this.axisTopLabelY(Te);t.fillText(X(lt),ti,ee),t.restore()};f("x",ye=>`${((ye%360+360)%360).toFixed(0)}\xB0`),f("xSpeed",ye=>`${ye.toFixed(1)}`);let y=d?.xSpeed;if(y){let ye=p,X=y,Te=ye?.xSpeed?.max??X.max;if(typeof Te=="number"&&isFinite(Te)){let Ue=y.getPixelForValue(Te);t.save(),t.fillStyle=this.resolveTickColor(e,y,Te),t.font=`normal ${this.TICK_LABEL_FONT_SIZE}px ${l.family}`,t.textAlign="right",t.textBaseline="top";let ht=this.axisTopLabelY(y),Qe=this.xStepSpeed??1,Xe=Math.max(0,Math.min(3,Math.ceil(-Math.log10(Qe))));t.fillText(`${Te.toFixed(Xe)}`,Ue-this.EDGE_SPEED_LABEL_OFFSET,ht),t.restore(),t.save(),t.strokeStyle=o.contrastDim,t.lineWidth=this.GRID_LINE_WIDTH,t.beginPath();let lt=Math.round(Ue)+.5;t.moveTo(lt,i.bottom),t.lineTo(lt,i.top-this.EDGE_EXTEND_UP_PX),t.stroke(),t.restore()}}let S=d?.x;if(S){let ye=p,X=S,Te=ye?.x?.min??X.min;if(typeof Te=="number"&&isFinite(Te)){let Ue=S.getPixelForValue(Te);t.save(),t.fillStyle=this.resolveTickColor(e,S,Te),t.font=`normal ${this.TICK_LABEL_FONT_SIZE}px ${l.family}`,t.textAlign="left",t.textBaseline="top";let ht=this.axisTopLabelY(S),Qe=this.normalizeAngle(Te);t.fillText(`${Qe.toFixed(0)}\xB0`,Ue+this.EDGE_DIR_LABEL_OFFSET,ht),t.restore()}}let x=e.data?.datasets,V=x?.[5]?.data,H=V?.length?V.length-1:-1,Z=H>=0?V[H]?.x:void 0;if(typeof Z=="number"&&isFinite(Z)){t.save(),t.fillStyle=r.chartValue,t.font=`bold ${this.SPEED_VALUE_FONT_SIZE}px ${l.family}`,t.textAlign="center",t.textBaseline="middle";let ye=`${Z.toFixed(1)}`,X=i.left+i.width/4,Te=i.top-this.TOP_VALUE_Y_OFFSET;t.fillText(ye,X,Te);let Ue=t.measureText(ye),ht=X+Ue.width/2+this.UNIT_PADDING,Qe=i.top-this.TOP_UNIT_Y_OFFSET;t.font=`bold ${this.UNIT_FONT_SIZE}px ${l.family}`,t.textAlign="left",t.fillText("kts",ht,Qe),t.restore()}let me=x?.[0]?.data,Oe=me?.length?me.length-1:-1,Be=Oe>=0?me[Oe]?.x:void 0;if(typeof Be=="number"&&isFinite(Be)){let ye=this.normalizeAngle(Be);t.save(),t.fillStyle=r.chartValue,t.font=`bold ${this.SPEED_VALUE_FONT_SIZE}px ${l.family}`,t.textAlign="center",t.textBaseline="middle",t.fillText(`${ye.toFixed(0)}\xB0`,i.left+3*i.width/4,i.top-this.TOP_VALUE_Y_OFFSET),t.restore()}if(!m){let ye=Math.min(i.width*.7,420),X=90,Te=i.left+(i.width-ye)/2,Ue=i.top+(i.height-X)/2;t.save(),t.globalAlpha=.82,t.fillStyle=o.background,t.fillRect(Te,Ue,ye,X),t.restore(),t.save(),t.strokeStyle=o.contrastDim,t.lineWidth=2,t.strokeRect(Te,Ue,ye,X),t.restore(),t.save(),t.fillStyle=this.getThemeColors().chartLabel,t.textAlign="center",t.textBaseline="middle",t.font=`bold 18px ${l.family}`,t.fillText("Data acquisition...",Te+ye/2,Ue+X/2),t.restore()}}};constructor(){super(),this.defaultConfig={filterSelfPaths:!0,color:"contrast",timeScale:"Last 30 Minutes"},ne(()=>{this.theme()&&this.datasetConfig&&(this.setChartOptions(),this.setDatasetsColors())})}ngOnInit(){this.validateConfig(),this.createServiceDataset()}ngAfterViewInit(){this.startWidget()}startWidget(){this.datasetConfig=this._dataset.getDatasetConfig(`${this.widgetProperties.uuid}-twd`),this.dataSourceInfo=this._dataset.getDataSourceInfo(`${this.widgetProperties.uuid}-twd`),this.datasetConfig&&(this.createDatasets(),this.setChartOptions(),this.chart?this.ngZone.runOutsideAngular(()=>{this.chart?.update("quiet")}):(this.chart=new wt(this.widgetDataChart().nativeElement.getContext("2d"),{type:this.lineChartType,data:this.lineChartData,options:this.lineChartOptions,plugins:[this.gridBackgroundPlugin,this.centerTickPlugin]}),this.ngZone.runOutsideAngular(()=>{this.chart?.update()})),this.startStreaming())}updateConfig(e){this.widgetProperties.config=e,this._dataset.list().filter(t=>t.uuid===`${this.widgetProperties.uuid}-twd`).length>0&&this._dataset.remove(`${this.widgetProperties.uuid}-twd`),this._dataset.list().filter(t=>t.uuid===`${this.widgetProperties.uuid}-tws`).length>0&&this._dataset.remove(`${this.widgetProperties.uuid}-tws`),this.createServiceDataset(),this.startWidget()}createServiceDataset(){if(this.widgetProperties.config.timeScale==="")return;let e="self.environment.wind.directionTrue",t="self.environment.wind.speedTrue",i="default";this._dataset.list().filter(o=>o.uuid===`${this.widgetProperties.uuid}-twd`).length===0&&this._dataset.create(e,i,this.widgetProperties.config.timeScale,30,`windtrends-${this.widgetProperties.uuid}`,!0,!1,`${this.widgetProperties.uuid}-twd`),this._dataset.list().filter(o=>o.uuid===`${this.widgetProperties.uuid}-tws`).length===0&&this._dataset.create(t,i,this.widgetProperties.config.timeScale,30,`speedtrends-${this.widgetProperties.uuid}`,!0,!1,`${this.widgetProperties.uuid}-tws`)}setChartOptions(){this.lineChartOptions.maintainAspectRatio=!1,this.lineChartOptions.animation=!1,this.lineChartOptions.indexAxis="y";let e=0,t=360,i=(t-e)/4,o=0,r=20,l=(r-o)/4;this.lineChartOptions.scales={y:{type:"linear",display:!0,position:"right",reverse:!0,title:{display:!0,text:`${this.datasetConfig.timeScaleFormat}`,align:"center"},ticks:{count:6,autoSkip:!1,includeBounds:!0,align:"inner",major:{enabled:!0},font:{size:16},callback:d=>{let p=Number(d),s=this.datasetConfig?.timeScaleFormat,c=this.getWindowMs(s);return s==="Last 5 Minutes"?`${Math.round(p/6e4)}'`:c>=10*6e4?`${Math.round(p/6e4)}'`:`${Math.round(p/1e3)}"`}},grid:{display:!0,color:this.theme().contrastDimmer}},x:{type:"linear",position:"top",stack:"trends",beginAtZero:!1,bounds:"ticks",min:e,max:t,title:{display:!1},ticks:{count:5,align:"inner",autoSkip:!1,includeBounds:!0,stepSize:i,minRotation:0,maxRotation:0,callback:d=>{let p=this.xCenter??Number.NaN;if(this.nearlyEqual(d,p))return"";let c=this.chart?.options?.scales?.x?.min;return typeof c=="number"&&this.nearlyEqual(d,c)?"":`${((d%360+360)%360).toFixed(0)}\xB0`},font:d=>{let p=d.tick?.value??Number.NaN,s=this.xCenter??Number.NaN;return{size:20,weight:this.nearlyEqual(p,s)?"bold":"normal"}},color:d=>{let p=d.tick?.value??Number.NaN,s=this.xCenter??Number.NaN;return this.nearlyEqual(p,s)?this.theme().contrast:void 0}},grid:{display:!0,color:d=>{let p=d.tick?.value??Number.NaN,s=d.scale,c=this.chart?.options?.scales,m=s,f=c?.x?.min??m.min;return this.nearlyEqual(p,f)?"rgba(0,0,0,0)":this.theme().contrastDimmer},lineWidth:1}},xSpeed:{type:"linear",position:"top",stack:"trends",beginAtZero:!1,bounds:"ticks",min:o,max:r,title:{display:!1},ticks:{count:5,align:"inner",autoSkip:!1,includeBounds:!0,stepSize:l,minRotation:0,maxRotation:0,callback:d=>{let p=this.xCenterSpeed??Number.NaN;if(this.nearlyEqual(d,p))return"";let c=this.chart?.options?.scales?.xSpeed?.max;if(typeof c=="number"&&this.nearlyEqual(d,c))return"";let m=this.xStepSpeed??Number.NaN,f=Number.isFinite(m)?m:1,y=Math.max(0,Math.min(3,Math.ceil(-Math.log10(f))));return`${d.toFixed(y)}`},font:d=>{let p=d.tick?.value??Number.NaN,s=this.xCenterSpeed??Number.NaN;return{size:20,weight:this.nearlyEqual(p,s)?"bold":"normal"}},color:d=>{let p=d.tick?.value??Number.NaN,s=this.xCenterSpeed??Number.NaN;return this.nearlyEqual(p,s)?this.theme().contrast:void 0}},grid:{display:!0,color:d=>{let p=d.tick?.value??Number.NaN,s=d.scale,c=this.chart?.options?.scales,m=s,f=c?.xSpeed?.max??m.max;return this.nearlyEqual(p,f)?"rgba(0,0,0,0)":this.theme().contrastDimmer},lineWidth:1}}},this.lineChartOptions.plugins={title:{display:!0,align:"end",padding:{top:3,bottom:0},text:"TWD ",font:{size:35,weight:"normal"},color:this.getThemeColors().chartLabel},subtitle:{display:!0,align:"start",padding:{top:-41,bottom:12},text:" TWS",font:{size:35},color:this.getThemeColors().chartLabel},annotation:{},legend:{display:!1}},this.xCenter=(e+t)/2,this.xStep=i,this.xCenterSpeed=(o+r)/2,this.xStepSpeed=l}createDatasets(){this.lineChartData.datasets=[],this.lineChartData.datasets.push({label:"Value",data:[],order:2,parsing:!1,normalized:!0,tension:0,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:1,fill:!1,xAxisID:"x"},{label:"SMA",data:[],order:0,parsing:!1,normalized:!0,tension:.3,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:10,fill:!1,borderColor:e=>{let t=e.chart,{ctx:i}=t;return this.lineGradientForAxis(i,t,"x")},backgroundColor:"red",xAxisID:"x"},{label:"lastAverage",data:[],order:1,parsing:!1,normalized:!0,tension:0,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:0,borderColor:"",fill:!1,hidden:!0,xAxisID:"x"},{label:"lastMinimum",data:[],order:3,parsing:!1,normalized:!0,hidden:!0,xAxisID:"x"},{label:"lastMaximum",data:[],order:4,parsing:!1,normalized:!0,hidden:!0,xAxisID:"x"},{label:"Value Speed",data:[],order:2,parsing:!1,normalized:!0,tension:0,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:1,fill:!1,xAxisID:"xSpeed"},{label:"SMA Speed",data:[],order:0,parsing:!1,normalized:!0,tension:.2,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:3,fill:!1,borderColor:e=>{let t=e.chart,{ctx:i}=t;return this.lineGradientForAxis(i,t,"xSpeed")},xAxisID:"xSpeed"},{label:"lastAverage Speed",data:[],order:1,parsing:!1,normalized:!0,tension:0,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:0,borderColor:"",fill:!1,hidden:!0,xAxisID:"xSpeed"},{label:"lastMinimum Speed",data:[],order:3,parsing:!1,normalized:!0,hidden:!0,xAxisID:"xSpeed"},{label:"lastMaximum Speed",data:[],order:4,parsing:!1,normalized:!0,hidden:!0,xAxisID:"xSpeed"}),this.setDatasetsColors()}startStreaming(){this._dsDirectionSub?.unsubscribe(),this._dsSpeedSub?.unsubscribe();let e=this._dataset.getDatasetBatchThenLiveObservable(`${this.widgetProperties.uuid}-twd`),t=this._dataset.getDatasetBatchThenLiveObservable(`${this.widgetProperties.uuid}-tws`);this._dsDirectionSub=e?.subscribe(i=>{if(Array.isArray(i))this.pushRowsToDatasets(i);else if(this.pushRowsToDatasets([i]),this.chart.data.datasets[0].data.length>this.dataSourceInfo.maxDataPoints)for(let o=0;o<=4;o++)this.chart.data.datasets[o].data.shift();this.updateChartAfterDataChange(),this.ngZone.runOutsideAngular(()=>{this.chart?.update("quiet")})}),this._dsSpeedSub=t?.subscribe(i=>{if(Array.isArray(i))this.pushRowsToSpeedDatasets(i);else if(this.pushRowsToSpeedDatasets([i]),this.chart.data.datasets[5].data.length>this.dataSourceInfo.maxDataPoints)for(let o=5;o<=9;o++)this.chart.data.datasets[o].data.shift();this.updateChartAfterDataChange(),this.ngZone.runOutsideAngular(()=>{this.chart?.update("quiet")})})}unwrapAngles(e){if(e.length===0)return[];let t=[],i=null;for(let o of e){if(o==null){t.push(null);continue}if(i==null){t.push(o),i=o;continue}let r=o-i;r>180&&(r-=360),r<-180&&(r+=360),t.push(t[t.length-1]+r),i=o}return t}pushRowsToDatasets(e){this.pushRowsGeneric(e,0,"deg",!0)}pushRowsToSpeedDatasets(e){this.pushRowsGeneric(e,5,"knots",!1)}getRowValue(e,t){switch(t){case"value":return e.data.value??null;case"sma":return e.data.sma??null;case"ema":return e.data.ema??null;case"dema":return e.data.doubleEma??null;case"avg":return e.data.lastAverage??null;case"min":return e.data.lastMinimum??null;case"max":return e.data.lastMaximum??null;default:return null}}transformRows(e,t,i,o){let r=e.map(d=>{let p=this.getRowValue(d,t);return p==null?null:this.unitsService.convertToUnit(i,p)}),l=o?this.unwrapAngles(r):r;return e.map((d,p)=>({x:l[p],y:d.timestamp,ts:d.timestamp}))}pushRowsGeneric(e,t,i,o){["value","sma","avg","min","max"].forEach((l,d)=>{this.chart.data.datasets[t+d].data.push(...this.transformRows(e,l,i,o))})}normalizeAngle(e){return(e%360+360)%360}angularDiff(e,t){let i=(e-t+540)%360-180;return Math.abs(i)}niceStepFromMantissas(e,t){if(!isFinite(e)||e<=0)return 1;let i=Math.floor(Math.log10(e)),o=e/Math.pow(10,i);return(t.find(l=>o<=l)??t[t.length-1])*Math.pow(10,i)}updateChartAfterDataChange(){let e=this.chart.data.datasets[2]?.data,t=this.chart.data.datasets[1]?.data,i=this.chart.data.datasets[0]?.data,o=!!e?.length,r=!!t?.length,l=!!i?.length,d=o?e[e.length-1].x:r?t[t.length-1].x:l?i[i.length-1].x:void 0;if(typeof d=="number"&&isFinite(d)){let m=this.chart.data.datasets[3]?.data,f=this.chart.data.datasets[4]?.data,y=m?.length?m[m.length-1].x:void 0,S=f?.length?f[f.length-1].x:void 0,x=typeof y=="number"&&isFinite(y)?this.angularDiff(d,y):Number.NaN,V=typeof S=="number"&&isFinite(S)?this.angularDiff(d,S):Number.NaN,H=Number.isFinite(x)||Number.isFinite(V)?Math.max(Number.isFinite(x)?x:0,Number.isFinite(V)?V:0):Number.NaN;if(!Number.isFinite(H)){let Te=o?e:r?t:i,Ue=Math.min(30,Te?.length??0);if(Ue>1){let Qe=Te.slice(Te.length-Ue).map(Xe=>Xe.x).filter(Xe=>typeof Xe=="number"&&isFinite(Xe));Qe.length&&(H=Qe.reduce((Xe,lt)=>Math.max(Xe,this.angularDiff(d,lt)),0))}}H=Math.max(H||0,15);let me=2*H/4,Oe=this.niceStepFromMantissas(me,[1,1.5,2,2.5,5,7.5,10]),Be=d-2*Oe,ye=d+2*Oe;this.chart.options.scales.x.min=Be,this.chart.options.scales.x.max=ye;let X=this.chart.options.scales;X.x.ticks=Ze($({},X.x.ticks??{}),{stepSize:Oe}),this.xCenter=d,this.xStep=Oe}let p=this.chart.data.datasets[7]?.data;if(p&&p.length){let m=p.length-1,f=p[m]?.x??0,y=this.chart.data.datasets[8].data[m]?.x??f,S=this.chart.data.datasets[9].data[m]?.x??f,x=Math.abs(f-y),V=Math.abs(S-f),H=Math.max(x,V);H=Math.max(H,.5);let me=2*H/4,Oe=this.niceStepFromMantissas(me,[1,2,2.5,5,10]),Be=f-2*Oe,ye=f+2*Oe,X=this.chart.options.scales;X.xSpeed.min=Be,X.xSpeed.max=ye,X.xSpeed.ticks=Ze($({},X.xSpeed.ticks??{}),{stepSize:Oe}),this.xCenterSpeed=f,this.xStepSpeed=Oe}let s=this.getWindowMs(this.datasetConfig?.timeScaleFormat);if(this.chart.data.datasets[0].data.length>0){let m=Date.now();this.chart.data.datasets.forEach(V=>{V.data.forEach(H=>{let Z=H.ts??H.y;H.y=Math.max(0,Math.min(s,m-Z))})}),this.chart.options.scales.y.min=0,this.chart.options.scales.y.max=s;let f;switch(this.datasetConfig?.timeScaleFormat){case"Last Minute":f=15e3;break;case"Last 5 Minutes":f=6e4;break;case"Last 30 Minutes":f=5*6e4;break;default:f=s/5;break}let S=this.chart.options.scales,x=$({},S.y.ticks??{});delete x.count,x.stepSize=f,S.y.ticks=x}}getWindowMs(e){switch(e){case"Last 30 Minutes":return 30*6e4;case"Last 5 Minutes":return 5*6e4;case"Last Minute":return 6e4;default:return 6e4}}lineGradientForAxis(e,t,i){let o=t.chartArea;if(!o)return null;let r=t.scales?.[i];if(!r)return null;let l=t.options?.scales,d=r,p=l?.[i]?.min??d.min,s=l?.[i]?.max??d.max;if(typeof p!="number"||typeof s!="number"||!isFinite(p)||!isFinite(s))return null;let c=(p+s)/2,m=r.getPixelForValue(c),f=Math.max(0,Math.min(1,(m-o.left)/o.width)),y=e.createLinearGradient(o.left,0,o.right,0);return y.addColorStop(0,this.theme().port),y.addColorStop(f,this.theme().port),y.addColorStop(f,this.theme().starboard),y.addColorStop(1,this.theme().starboard),y}setDatasetsColors(){this.lineChartData.datasets.forEach(e=>{e.label==="Value"&&(e.borderColor=this.getThemeColors().valueLine,e.backgroundColor=this.getThemeColors().valueFill),e.label==="Value Speed"&&(e.borderColor=this.getThemeColors().valueLine,e.backgroundColor=this.getThemeColors().valueFill)})}getThemeColors(){let e=this.widgetProperties.config.color,t={valueLine:null,valueFill:null,averageLine:null,averageFill:null,averageChartLine:null,chartLabel:null,chartValue:null};switch(e){case"contrast":t.valueLine=this.theme().contrastDim,t.valueFill=this.theme().contrastDimmer,t.averageLine=this.theme().contrast,t.averageFill=this.theme().contrast,t.chartValue=this.theme().contrast,t.averageChartLine=this.theme().contrast,t.chartLabel=this.theme().contrastDim;break;case"blue":t.valueLine=this.theme().blueDim,t.valueFill=this.theme().blueDimmer,t.averageLine=this.theme().blue,t.averageFill=this.theme().blue,t.chartValue=this.theme().blue,t.averageChartLine=this.theme().blueDim,t.chartLabel=this.theme().blueDim;break;case"green":t.valueLine=this.theme().greenDim,t.valueFill=this.theme().greenDimmer,t.averageLine=this.theme().green,t.averageFill=this.theme().green,t.chartValue=this.theme().green,t.averageChartLine=this.theme().greenDim,t.chartLabel=this.theme().greenDim;break;case"pink":t.valueLine=this.theme().pinkDim,t.valueFill=this.theme().pinkDimmer,t.averageLine=this.theme().pink,t.averageFill=this.theme().pink,t.chartValue=this.theme().pink,t.averageChartLine=this.theme().pinkDim,t.chartLabel=this.theme().pinkDim;break;case"orange":t.valueLine=this.theme().orangeDim,t.valueFill=this.theme().orangeDimmer,t.averageLine=this.theme().orange,t.averageFill=this.theme().orange,t.chartValue=this.theme().orange,t.averageChartLine=this.theme().orangeDim,t.chartLabel=this.theme().orangeDim;break;case"purple":t.valueLine=this.theme().purpleDim,t.valueFill=this.theme().purpleDimmer,t.averageLine=this.theme().purple,t.averageFill=this.theme().purple,t.chartValue=this.theme().purple,t.averageChartLine=this.theme().purpleDim,t.chartLabel=this.theme().purpleDim;break;case"grey":t.valueLine=this.theme().greyDim,t.valueFill=this.theme().greyDimmer,t.averageLine=this.theme().grey,t.averageFill=this.theme().grey,t.chartValue=this.theme().grey,t.averageChartLine=this.theme().greyDim,t.chartLabel=this.theme().greyDim;break;case"yellow":t.valueLine=this.theme().yellowDim,t.valueFill=this.theme().yellowDimmer,t.averageLine=this.theme().yellow,t.averageFill=this.theme().yellow,t.chartValue=this.theme().yellow,t.averageChartLine=this.theme().yellowDim,t.chartLabel=this.theme().yellowDim;break}return t}ngOnDestroy(){this.destroyDataStreams(),this._dsDirectionSub?.unsubscribe(),this._dsSpeedSub?.unsubscribe(),this.chart?.destroy();let e=this.widgetDataChart?.()?.nativeElement;this.canvasService.releaseCanvas(e,{clear:!0,removeFromDom:!0})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-windtrends-chart"]],viewQuery:function(t,i){t&1&&te(i.widgetDataChart,Kg,5,Ye),t&2&&be()},features:[ce],decls:3,vars:2,consts:[["widgetDataChart",""],[3,"configChange","config","id"],[2,"z-index","inherit"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),G(1,"canvas",2,0),_()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid))},dependencies:[Ce],encapsulation:2})}return a})();typeof steelseries>"u"&&(globalThis.steelseries={});var Ao=globalThis.steelseries;Ao.ColorDef=Ao.ColorDef||{RED:"red",GREEN:"green",BLUE:"blue",ORANGE:"orange",YELLOW:"yellow",CYAN:"cyan",MAGENTA:"magenta",WHITE:"white",GRAY:"gray",BLACK:"black",RAITH:"raith",GREEN_LCD:"greenLcd",JUG_GREEN:"jugGreen"};Ao.FrameDesign=Ao.FrameDesign||{BLACK_METAL:"blackMetal",METAL:"metal",SHINY_METAL:"shinyMetal",BRASS:"brass",STEEL:"steel",CHROME:"chrome",GOLD:"gold",ANTHRACITE:"anthracite",TILTED_GRAY:"tiltedGray",TILTED_BLACK:"tiltedBlack",GLOSSY_METAL:"glossyMetal"};var Qg={Red:steelseries.ColorDef.RED,Green:steelseries.ColorDef.GREEN,Blue:steelseries.ColorDef.BLUE,Orange:steelseries.ColorDef.ORANGE,Yellow:steelseries.ColorDef.YELLOW,Cyan:steelseries.ColorDef.CYAN,Magenta:steelseries.ColorDef.MAGENTA,White:steelseries.ColorDef.WHITE,Gray:steelseries.ColorDef.GRAY,Black:steelseries.ColorDef.BLACK,Raith:steelseries.ColorDef.RAITH,"Green LCD":steelseries.ColorDef.GREEN_LCD,"JUG Green":steelseries.ColorDef.JUG_GREEN},Xg={blackMetal:steelseries.FrameDesign.BLACK_METAL,metal:steelseries.FrameDesign.METAL,shinyMetal:steelseries.FrameDesign.SHINY_METAL,brass:steelseries.FrameDesign.BRASS,steel:steelseries.FrameDesign.STEEL,chrome:steelseries.FrameDesign.CHROME,gold:steelseries.FrameDesign.GOLD,anthracite:steelseries.FrameDesign.ANTHRACITE,tiltedGray:steelseries.FrameDesign.TILTED_GRAY,tiltedBlack:steelseries.FrameDesign.TILTED_BLACK,glossyMetal:steelseries.FrameDesign.GLOSSY_METAL},fh=(()=>{class a extends Se{cdr=E(yn);canvasService=E(tt);gaugeOptions={};gauge=null;streamsInitialized=!1;lastSizeSignature="";resizeTimer=null;pendingStructuralRebuild=!1;constructor(){super(),this.defaultConfig={filterSelfPaths:!0,paths:{gaugePitchPath:{description:"Attitude Pitch Data",path:"self.navigation.attitude.pitch",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:1e3},gaugeRollPath:{description:"Attitude Roll Data",path:"self.navigation.attitude.roll",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:1e3}},gauge:{type:"horizon",noFrameVisible:!1,faceColor:"anthracite",invertPitch:!1,invertRoll:!1},enableTimeout:!1,dataTimeout:5}}ngOnInit(){this.validateConfig()}ngAfterContentInit(){this.cdr.detectChanges(),this.startWidget();let t=document.getElementById(this.widgetProperties.uuid+"-canvas")?.parentElement;if(t){let i=t.getBoundingClientRect();this.onResized({contentRect:{width:i.width,height:i.height}})}}startWidget(e=!1){this.buildOptions();let t=this.widgetProperties.uuid+"-canvas";t&&(this.gauge&&!e&&!this.pendingStructuralRebuild||(this.pendingStructuralRebuild=!1,this.gauge=new steelseries.Horizon(t,this.gaugeOptions)),this.streamsInitialized||(this.observeDataStream("gaugePitchPath",i=>{let o=i.data.value??0;this.gauge.setPitchAnimated(this.widgetProperties.config.gauge.invertPitch?-o:o)}),this.observeDataStream("gaugeRollPath",i=>{let o=i.data.value??0;this.gauge.setRollAnimated(this.widgetProperties.config.gauge.invertRoll?-o:o)}),this.streamsInitialized=!0))}updateConfig(e){this.widgetProperties.config=e,this.pendingStructuralRebuild=!0,this.startWidget(!0)}buildOptions(){this.gaugeOptions.pointerColor=Qg.Red,this.gaugeOptions.frameVisible=this.widgetProperties.config.gauge.noFrameVisible??!1,this.gaugeOptions.frameDesign=Xg[this.widgetProperties.config.gauge.faceColor??"anthracite"],this.gaugeOptions.foregroundVisible=!1}onResized(e){if(e.contentRect.height<50||e.contentRect.width<50)return;let t=Math.min(e.contentRect.height,e.contentRect.width),i="horizon:"+t;i!==this.lastSizeSignature&&(this.lastSizeSignature=i,this.gaugeOptions.size=t,this.resizeTimer&&window.clearTimeout(this.resizeTimer),this.resizeTimer=window.setTimeout(()=>{this.startWidget(!0),this.resizeTimer=null},120))}ngOnDestroy(){this.destroyDataStreams(),this.gauge&&(this.gauge=null);let e=document.getElementById(this.widgetProperties.uuid+"-canvas");this.canvasService.releaseCanvas(e,{clear:!0,removeFromDom:!0})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-horizon"]],features:[ce],decls:4,vars:5,consts:[[3,"configChange","config","id"],[1,"canvas-wrap",3,"onResize"],[2,"z-index","inherit",3,"id"]],template:function(t,i){t&1&&(v(0,"widget-host",0),ve("configChange",function(r){return fe(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),v(1,"div",1),I("onResize",function(r){return i.onResized(r)}),v(2,"canvas",2),b(3," Browser does not support canvas element. "),_()()()),t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),ol(i.gaugeOptions.frameVisible===!0?"padding: 10px;":""),k(),z("id",i.widgetProperties.uuid+"-canvas"))},dependencies:[Ce,it,Ot],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.canvas-wrap[_ngcontent-%COMP%]{position:relative;display:block;width:100%;height:100%;padding:0}.canvas-wrap[_ngcontent-%COMP%] > canvas[_ngcontent-%COMP%]{display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}"]})}return a})();var Zg=["grid"];function Jg(a,n){a&1&&(v(0,"p",8)(1,"strong"),b(2,"Long press/click and hold anywhere"),_(),b(3," to add widgets"),_(),v(4,"mat-icon",9),b(5,"touch_app"),_())}function ef(a,n){if(a&1){let e=Y();v(0,"p",8),b(1,"This empty dashboard is ready to be customized."),_(),v(2,"button",10),I("click",function(){P(e);let i=U();return O(i.editDashboard())}),v(3,"mat-icon"),b(4,"lock_open"),_(),b(5," Unlock and Customize "),_(),v(6,"div",11)(7,"button",12),I("click",function(){P(e);let i=U();return O(i.navigateToHelp())}),v(8,"mat-icon"),b(9,"help"),_(),b(10," Get Help "),_()()}}function tf(a,n){if(a&1){let e=Y();v(0,"div",6)(1,"button",13),I("click",function(){P(e);let i=U();return O(i.saveLayoutChanges())}),v(2,"mat-icon"),b(3,"done"),_()(),v(4,"button",14),I("click",function(){P(e);let i=U();return O(i.cancelLayoutChanges())}),v(5,"mat-icon"),b(6,"close"),_()()()}}function nf(a,n){if(a&1&&G(0,"dashboard-scroller",7),a&2){let e=U();z("activePage",e.dashboard.activeDashboard())("dashboards",e.dashboard.dashboards())}}var Xr=(()=>{class a{activatedRoute=E(El);_app=E(Dt);_dialog=E(Cn);dashboard=E(nt);_destroyRef=E(oi);_uiEvent=E(kn);_dataset=E(At);_router=E(ci);isDashboardStatic=St(this.dashboard.isDashboardStatic$);_gridstack=ie.required("grid");_previousIsStaticState=!0;_suppressDrag=!1;gridOptions=K({margin:4,minRow:12,maxRow:12,float:!0,acceptWidgets:!1,resizable:{handles:"all"}});_boundHandleKeyDown=this.handleKeyDown.bind(this);constructor(){Ki.addComponentToSelectorType([mo,Wd,po,zd,oh,Kc,Xc,jc,Jc,Fc,$d,Bc,ih,nh,th,eh,rh,dh,ph,vo,ch,hh,gh,fh])}ngAfterViewInit(){this.resizeGridColumns(),this._uiEvent.addHotkeyListener(this._boundHandleKeyDown,{ctrlKey:!0,keys:["arrowdown","arrowup"]});try{let e=this._gridstack().grid;e&&typeof e.on=="function"&&(e.on("dragstart",()=>{this._uiEvent.isDragging.set(!0)}),e.on("dragstop",()=>{setTimeout(()=>this._uiEvent.isDragging.set(!1),0)}),e.on("resizestart",()=>{this._uiEvent.isDragging.set(!0)}),e.on("resizestop",()=>{setTimeout(()=>this._uiEvent.isDragging.set(!1),0)}))}catch{}this.dashboard.isDashboardStatic$.pipe(mt(this._destroyRef)).subscribe(e=>{e?(this._gridstack().grid.setStatic(e),e!==this._previousIsStaticState&&(this.saveDashboard(),this._previousIsStaticState=e)):(this._gridstack().grid.setStatic(e),this._previousIsStaticState=e)}),this.dashboard.widgetAction$.pipe(mt(this._destroyRef)).subscribe(e=>{e&&this._gridstack().grid.getGridItems().forEach(t=>{if(t.gridstackNode.id===e.id)switch(e.operation){case"delete":this.deleteWidget(t);break;case"duplicate":this.duplicateWidget(t);break;default:break}})}),this.activatedRoute.params.pipe(mt(this._destroyRef)).subscribe(e=>{let t=e.id,i=null;t!=null&&t!==""&&!isNaN(Number(t))&&(i=Number(t)),this.dashboard.setActiveDashboard(i??this.dashboard.activeDashboard()),this.loadDashboard(this.dashboard.activeDashboard())})}ngOnDestroy(){let e=this._gridstack();e?.grid&&e.grid.destroy(!0),this._uiEvent.removeHotkeyListener(this._boundHandleKeyDown)}handleKeyDown(e,t){e==="arrowdown"?this.previousDashboard(t):e==="arrowup"&&this.nextDashboard(t)}resizeGridColumns(){this._gridstack().grid.cellHeight(window.innerHeight/this._gridstack().grid.getRow())}loadDashboard(e){let t=this.dashboard.dashboards()[e],i=this._gridstack();i?.grid&&setTimeout(()=>{i.grid.batchUpdate(),i.grid.load(t.configuration),i.grid.commit()},0)}saveDashboard(){let e=this._gridstack().grid.save(!1,!1)||null;this.dashboard.updateConfiguration(this.dashboard.activeDashboard(),e)}saveLayoutChanges(){this.dashboard.setStaticDashboard(!0)}cancelLayoutChanges(){this.loadDashboard(this.dashboard.activeDashboard()),this.dashboard.setStaticDashboard(!0)}addNewWidget(e){if(!this.dashboard.isDashboardStatic()&&e.detail!==void 0){let t=e.detail||{},i=t.center?.x??t.x??0,o=t.center?.y??t.y??0,r=this._gridstack().grid.getCellFromPixel({left:i,top:o});this._gridstack().grid.isAreaEmpty(r.x,r.y,1,1)&&(this._gridstack().grid.willItFit({x:r.x,y:r.y,w:2,h:3})?this._dialog.openFrameDialog({title:"Add Widget",component:"select-widget"},!0).subscribe(d=>{if(!d||typeof d!="object")return;let p=di.create(),s=d,c={x:r.x,y:r.y,w:s.defaultWidth,h:s.defaultHeight,minW:s.minWidth,minH:s.minHeight,id:p,selector:s.selector,input:{widgetProperties:{type:s.selector,uuid:p}}};this._gridstack().grid.addWidget(c)}):this._app.sendSnackbarNotification("Error Adding Widget: Not enough space at the selected location. Please reorganize the dashboard to free up space or choose a larger empty area.",0))}}cancelPointerSequence(){if(!this._suppressDrag){this._suppressDrag=!0;try{this._gridstack().grid.setStatic(!0)}catch{}["pointerup","mouseup","touchend"].forEach(e=>{document.dispatchEvent(new Event(e,{bubbles:!0}))})}}_onPointerRelease(){if(this._suppressDrag&&(this._suppressDrag=!1,!this.dashboard.isDashboardStatic()))try{this._gridstack().grid.setStatic(!1)}catch{}}duplicateWidget(e){let t=di.create(),i=e.gridstackNode,o={w:i.w,h:i.h,id:t,selector:i.selector,input:{widgetProperties:{type:i.input.widgetProperties.type,uuid:t,config:_n(i.input.widgetProperties.config)}}},r=this._gridstack();r.grid.willItFit(o)?r.grid.addWidget(o):(o.h=2,o.w=2,r.grid.willItFit(o)?r.grid.addWidget(o):this._app.sendSnackbarNotification("Duplication failed: Insufficient space on the dashboard. Please reorganize to free up space.",0))}deleteWidget(e){let t=e.gridstackNode;switch(this._gridstack().grid.removeWidget(e),t.selector){case"widget-numeric-chart":case"widget-windtrends-chart":{(this._dataset.list()?.filter(r=>r.uuid===t.id||r.uuid?.startsWith(`${t.id}-`))||[]).forEach(r=>this._dataset.remove(r.uuid));break}}}nextDashboard(e){e.preventDefault(),this.dashboard.isDashboardStatic()&&this.dashboard.navigateToNextDashboard()}previousDashboard(e){e.preventDefault(),this.dashboard.isDashboardStatic()&&this.dashboard.navigateToPreviousDashboard()}editDashboard(){this.dashboard.toggleStaticDashboard()}navigateToHelp(){this._router.navigate(["/help"])}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["dashboard"]],viewQuery:function(t,i){t&1&&te(i._gridstack,Zg,5),t&2&&be()},hostBindings:function(t,i){t&1&&I("mouseup",function(){return i._onPointerRelease()},ur)("touchend",function(){return i._onPointerRelease()},ur)},decls:11,vars:3,consts:[["grid",""],["kipGestures","",3,"swipeup","swipedown","press","resize","options"],["empty-content","",1,"dashboard-empty-state"],[1,"empty-state-content"],[1,"empty-state-actions"],[1,"empty-state-icon"],[1,"edit-layout-close-icon"],[3,"activePage","dashboards"],[1,"empty-state-text"],[1,"touch-icon"],["mat-flat-button","",1,"empty-state-button",3,"click"],[1,"empty-state-help"],["mat-button","",1,"empty-state-help-button",3,"click"],["mat-fab","",1,"layout-action-btn",2,"margin-right","10px",3,"click"],["mat-fab","",1,"layout-action-btn",3,"click"]],template:function(t,i){if(t&1){let o=Y();v(0,"gridstack",1,0),I("swipeup",function(l){return P(o),O(i.previousDashboard(l))})("swipedown",function(l){return P(o),O(i.nextDashboard(l))})("press",function(l){return P(o),O(i.addNewWidget(l))})("resize",function(){return P(o),O(i.resizeGridColumns())},Ks),v(2,"div",2)(3,"div",3)(4,"div",4)(5,"mat-icon",5),b(6,"dashboard"),_(),De(7,Jg,6,0)(8,ef,11,0),_()()()(),De(9,tf,7,0,"div",6)(10,nf,1,2,"dashboard-scroller",7)}t&2&&(z("options",i.gridOptions()),k(7),Ae(i.dashboard.isDashboardStatic()?8:7),k(2),Ae(i.dashboard.isDashboardStatic()?10:9))},dependencies:[Pd,Ki,Rd,pt,bt,ft,gt,$a,bn],styles:["[_nghost-%COMP%]{display:flex;flex-direction:row;flex-wrap:nowrap;height:100%;width:100%;overflow:hidden}.grid-stack[_ngcontent-%COMP%]{width:100%}.edit-layout-close-icon[_ngcontent-%COMP%]{position:absolute;bottom:20px;right:20px;cursor:pointer;z-index:100}.layout-action-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary);background-color:var(--mat-sys-primary)}.dashboard-empty-state[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;min-height:80vh;width:100%;padding:2rem;text-align:center}.empty-state-content[_ngcontent-%COMP%]{max-width:500px;color:var(--mat-sys-outline-variant)}.empty-state-icon[_ngcontent-%COMP%]{font-size:4rem;width:4rem;height:4rem;color:var(--mat-sys-outline-variant);margin-bottom:1rem}.empty-state-actions[_ngcontent-%COMP%] .touch-icon[_ngcontent-%COMP%]{font-size:2rem;width:2rem;height:2rem;color:var(--mat-sys-outline-variant);margin-top:.5rem;animation:_ngcontent-%COMP%_bounce 2s infinite}.empty-state-button[_ngcontent-%COMP%]{--mat-button-filled-label-text-color: var(--kip-widget-card-background-color);--mat-button-filled-container-color: var(--mat-sys-outline-variant);--mat-button-filled-hover-state-layer-opacity: .7;--mat-button-filled-state-layer-color: var(--mat-sys-primary-fixed-dim)}.empty-state-help[_ngcontent-%COMP%]{position:fixed;left:50%;bottom:10%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center}.empty-state-help-button[_ngcontent-%COMP%]{--mat-button-text-label-text-color: var(--mat-sys-outline-variant);--mat-button-text-hover-state-layer-opacity: .7;--mat-button-text-state-layer-color: var(--mat-sys-primary-fixed-dim)}.empty-state-text[_ngcontent-%COMP%]{color:var(--mat-sys-outline-variant);font-style:italic}@keyframes _ngcontent-%COMP%_bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}"]})}return a})();var vh=[{path:"dashboard/:id",component:Xr},{path:"settings",loadComponent:()=>import("./chunk-TSNRNW3D.js").then(a=>a.SettingsComponent),title:"KIP - Settings"},{path:"options",loadComponent:()=>import("./chunk-TTNX7JB6.js").then(a=>a.TabsComponent),title:"KIP - Options"},{path:"remote",loadComponent:()=>import("./chunk-X45MUE6N.js").then(a=>a.RemoteControlComponent),title:"KIP - Remote Control"},{path:"help",loadComponent:()=>import("./chunk-2XB2ZNXV.js").then(a=>a.AppHelpComponent),title:"KIP - Help"},{path:"data",loadComponent:()=>import("./chunk-JHI7SSDT.js").then(a=>a.DataInspectorComponent),title:"KIP - Data Inspector"},{path:"login",loadComponent:()=>import("./chunk-YPVFGYWU.js").then(a=>a.WidgetLoginComponent),title:"Login"},{path:"**",component:Xr,title:"KIP"}];var yh={production:!0};var Th=Aa(Zr());function af(a,n){if(a&1){let e=Y();v(0,"div",1)(1,"button",2),I("click",function(){P(e);let i=U();return O(i.action())}),b(2),_()()}if(a&2){let e=U();k(2),rt(" ",e.data.action," ")}}var of=["label"];function rf(a,n){}var sf=Math.pow(2,31)-1,ya=class{_overlayRef;instance;containerInstance;_afterDismissed=new Qt;_afterOpened=new Qt;_onAction=new Qt;_durationTimeoutId;_dismissedByAction=!1;constructor(n,e){this._overlayRef=e,this.containerInstance=n,n._onExit.subscribe(()=>this._finishDismiss())}dismiss(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}dismissWithAction(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete(),this.dismiss()),clearTimeout(this._durationTimeoutId)}closeWithAction(){this.dismissWithAction()}_dismissAfter(n){this._durationTimeoutId=setTimeout(()=>this.dismiss(),Math.min(n,sf))}_open(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}_finishDismiss(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}afterDismissed(){return this._afterDismissed}afterOpened(){return this.containerInstance._onEnter}onAction(){return this._onAction}},bh=new cr("MatSnackBarData"),Kn=class{politeness="polite";announcementMessage="";viewContainerRef;duration=0;panelClass;direction;data=null;horizontalPosition="center";verticalPosition="bottom"},lf=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275dir=si({type:a,selectors:[["","matSnackBarLabel",""]],hostAttrs:[1,"mat-mdc-snack-bar-label","mdc-snackbar__label"]})}return a})(),df=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275dir=si({type:a,selectors:[["","matSnackBarActions",""]],hostAttrs:[1,"mat-mdc-snack-bar-actions","mdc-snackbar__actions"]})}return a})(),cf=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275dir=si({type:a,selectors:[["","matSnackBarAction",""]],hostAttrs:[1,"mat-mdc-snack-bar-action","mdc-snackbar__action"]})}return a})(),hf=(()=>{class a{snackBarRef=E(ya);data=E(bh);constructor(){}action(){this.snackBarRef.dismissWithAction()}get hasAction(){return!!this.data.action}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["simple-snack-bar"]],hostAttrs:[1,"mat-mdc-simple-snack-bar"],exportAs:["matSnackBar"],decls:3,vars:2,consts:[["matSnackBarLabel",""],["matSnackBarActions",""],["matButton","","matSnackBarAction","",3,"click"]],template:function(t,i){t&1&&(v(0,"div",0),b(1),_(),De(2,af,3,1,"div",1)),t&2&&(k(),rt(" ",i.data.message,`
47
+ })();`}var ag=["freeboardSkIframe"];function og(a,n){a&1&&G(0,"div",3)}var Fc=(()=>{class a extends Se{appSettings=E(Mt);auth=E(Ft);_dashboard=E(nt);iframe=ie.required("freeboardSkIframe");widgetUrl=null;_authTokenSubscription=null;dashboard=E(nt);constructor(){super()}ngOnInit(){let e=null;this._authTokenSubscription=this.auth.authToken$.subscribe(t=>{e=t?.token}),this.widgetUrl=e?`${this.appSettings.signalkUrl.url}/@signalk/freeboard-sk/?token=${e}`:`${this.appSettings.signalkUrl.url}/@signalk/freeboard-sk/`,window.addEventListener("message",this.handleIframeGesture)}ngAfterViewInit(){this.iframe&&(this.iframe().nativeElement.onload=()=>this.injectSwipeScript())}startWidget(){}updateConfig(){}handleIframeGesture=e=>{if(e.data){if(e.data.gesture&&e.data.eventData.instanceId===this.widgetProperties.uuid)switch(e.data.gesture){case"swipeup":this.dashboard.isDashboardStatic()&&this.dashboard.navigateToPreviousDashboard();break;case"swipedown":this.dashboard.isDashboardStatic()&&this.dashboard.navigateToNextDashboard();break;case"swipeleft":{let t=new Event("openLeftSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(t);break}case"swiperight":{let t=new Event("openRightSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(t);break}default:break}if(e.data.type==="keydown"&&e.data.keyEventData.instanceId===this.widgetProperties.uuid){let{key:t,ctrlKey:i,shiftKey:o}=e.data.keyEventData,r=new KeyboardEvent("keydown",{key:t,ctrlKey:i,shiftKey:o,bubbles:!0,cancelable:!0});document.dispatchEvent(r)}}};injectSwipeScript(){let e=this.iframe().nativeElement.contentWindow,t=this.iframe().nativeElement.contentDocument;if(!t||!e){console.error("[FSK Widget] Iframe contentDocument or contentWindow is undefined. Possible cross-origin issue or iframe not fully loaded.");return}try{let i=`kip-gesture-inject-${this.widgetProperties.uuid}`;if(t.getElementById(i))return;let o=xo({instanceId:this.widgetProperties.uuid}),r=t.createElement("script");r.id=i,r.textContent=o,t.body.appendChild(r)}catch(i){console.warn("[FSK Widget] Failed to inject swipe script into iframe:",i)}}ngOnDestroy(){if(window.removeEventListener("message",this.handleIframeGesture),this._authTokenSubscription?.unsubscribe(),this.destroyDataStreams(),this.iframe){try{this.iframe().nativeElement.onload=null}catch(e){}try{let e=this.iframe()?.nativeElement.contentDocument;if(e){let t=`kip-gesture-inject-${this.widgetProperties.uuid}`,i=e.getElementById(t);i&&i.parentNode&&i.parentNode.removeChild(i)}}catch{}}}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-freeboardsk"]],viewQuery:function(t,i){t&1&&te(i.iframe,ag,5),t&2&&be()},features:[ce],decls:5,vars:6,consts:[["freeboardSkIframe",""],[2,"overflow","clip",3,"configChange","config","id"],["width","100%","height","100%","frameborder","0","sandbox","allow-same-origin allow-scripts allow-forms",3,"src"],[1,"widgetOverlay"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(){return P(o),O(i.updateConfig())}),G(1,"iframe",2,0),li(3,"safe"),De(4,og,1,0,"div",3),_()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),z("src",Ba(3,4,i.widgetUrl),Na),k(3),Ae(i.dashboard.isDashboardStatic()?-1:4))},dependencies:[Ce,zc],styles:[".widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent}"]})}return a})();var Li=Aa(jr(),1),Gc=Aa(jr(),1);var rg=["gauge"],sg=a=>a.replace(/(\-\w)/g,n=>n[1].toUpperCase()),lg=a=>a.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Hc=a=>sg(a),Uc=(()=>{class a{el;zone;canvas;gauge;isInited=!1;preInitValue;preInitOptions;domListener;constructor(e,t){this.el=e,this.zone=t}get options(){let e={};e.renderTo=this.canvas.nativeElement;for(let t of this.el.nativeElement.attributes){let i=Hc(t.name);e[i]=Li.DomObserver.parse(t.value)}for(let t in this.preInitOptions)e[t]=this.preInitOptions[t];return this.isInited&&(this.preInitOptions=null),e}set options(e){if(!this.isInited){this.preInitOptions=e;return}this.update(e)}set value(e){if(!this.isInited){this.preInitValue=e;return}this.zone.runOutsideAngular(()=>{this.gauge.value=e})}update(e){if(e)for(let t in e){let i=e[t].toString();if(t==="value")this.value=Li.DomObserver.parse(i);else{let o=lg(t);this.el.nativeElement.setAttribute(o,i)}}}ngOnDestroy(){this.destroy(),this.cleanup()}cleanup(){}destroy(){this.stopListeningForDOMEvents(),this.gauge.destroy()}ngAfterViewInit(){this.initGauge(),this.listenForDOMEvents(),this.isInited=!0,this.preInitValue&&(this.value=this.preInitValue)}listenForDOMEvents(){this.domListener=new MutationObserver(e=>{let t={};e.forEach(i=>{i.type==="attributes"&&(t[Hc(i.attributeName)]=Li.DomObserver.parse(this.el.nativeElement.getAttribute(i.attributeName)))}),this.basicUpdate(t)}),this.domListener.observe(this.el.nativeElement,{attributes:!0})}stopListeningForDOMEvents(){this.domListener&&(this.domListener.disconnect(),this.domListener=null)}initGauge(){let e=this.options;(!e.hasOwnProperty("renderTo")||!e.renderTo)&&(e.renderTo=this.canvas.nativeElement),this.basicUpdate(e)}basicUpdate(e){typeof e.value=="number"&&(this.value=e.value,delete e.value),Object.keys(e).length&&this.gauge.update(e)}static \u0275fac=function(t){return new(t||a)(Et(Ye),Et(Je))};static \u0275dir=si({type:a,viewQuery:function(t,i){if(t&1&&Ci(rg,7),t&2){let o;gi(o=fi())&&(i.canvas=o.first)}},inputs:{options:"options",value:"value"}})}return a})();var va=(()=>{class a extends Uc{constructor(e,t){super(e,t)}ngOnInit(){this.gauge=new Li.LinearGauge(this.options).draw()}static \u0275fac=function(t){return new(t||a)(Et(Ye),Et(Je))};static \u0275cmp=F({type:a,selectors:[["linear-gauge"]],features:[ce],decls:2,vars:0,consts:[["gauge",""]],template:function(t,i){t&1&&G(0,"canvas",null,0)},encapsulation:2})}return a})();var Eo=(()=>{class a extends Uc{constructor(e,t){super(e,t)}ngOnInit(){this.gauge=new Li.RadialGauge(this.options).draw()}static \u0275fac=function(t){return new(t||a)(Et(Ye),Et(Je))};static \u0275cmp=F({type:a,selectors:[["radial-gauge"]],features:[ce],decls:2,vars:0,consts:[["gauge",""]],template:function(t,i){t&1&&G(0,"canvas",null,0)},encapsulation:2})}return a})(),$n=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275mod=ri({type:a});static \u0275inj=ai({})}return a})();var qc=["compassGauge"];function Yr(a){let n=a.match(/(\d+(\.\d+)?|\.\d+)/g);if(!n||n.length<3)throw new Error("Invalid RGBA format");let[e,t,i,o=1]=n.map(Number),r=o===1?"":Math.round(o*255).toString(16).padStart(2,"0").toUpperCase();return"#"+((1<<24)+(e<<16)+(t<<8)+i).toString(16).slice(1).toUpperCase()+r}function dg(a){return a<0&&(a=360+a),a}var jc=(()=>{class a extends Se{DEG="deg";LINE="line";NEEDLE_START=40;NEEDLE_END=100;NEEDLE_CIRCLE_SIZE=15;BORDER_MIDDLE_WIDTH=2;BORDER_INNER_WIDTH=2;ANIMATION_TARGET_PLATE="plate";ANIMATION_TARGET_NEEDLE="needle";textValue="--";value=0;ngGauge=ie("compassGauge");gauge=ie("compassGauge",{read:Ye});initCompleted=!1;gaugeOptions={};colorStrokeTicks="";unitName=null;state=J.Normal;negToPortPaths=["self.environment.wind.angleApparent","self.environment.wind.angleTrueGround","self.environment.wind.angleTrueWater"];constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",showConvertUnitTo:!1,convertUnitTo:this.DEG,sampleTime:500}},gauge:{type:"ngRadial",subType:"baseplateCompass",enableTicks:!0,compassUseNumbers:!1,showValueBox:!1},enableTimeout:!1,color:"contrast",dataTimeout:5},ne(()=>{if(this.theme()){if(!this.initCompleted)return;this.startWidget()}})}ngOnInit(){this.validateConfig()}startWidget(){this.setGaugeConfig(),this.ngGauge().update(this.gaugeOptions),this.unsubscribeDataStream(),this.observeDataStream("gaugePath",e=>{if(!e||!e.data||e.data.value===null)e={data:{value:0,timestamp:new Date},state:J.Normal},this.value=0,this.textValue="--";else{let t=this.negToPortPaths.includes(this.widgetProperties.config.paths.gaugePath.path)?dg(e.data.value):e.data.value;this.value=Math.min(Math.max(t,0),360),this.textValue=this.value.toFixed(0)}if(e.state==null&&(e.state=J.Normal),this.state!==e.state){this.state=e.state;let t={};switch(e.state){case J.Emergency:t.colorValueText=this.theme().zoneEmergency;break;case J.Alarm:t.colorValueText=this.theme().zoneAlarm;break;case J.Warn:t.colorValueText=this.theme().zoneWarn;break;case J.Alert:t.colorValueText=this.theme().zoneAlert;break;default:t.colorValueText=this.theme().contrast}this.ngGauge().update(t)}})}updateConfig(e){this.widgetProperties.config=e,this.setCanvasHight(),this.startWidget()}setCanvasHight(){let e=this.gauge().nativeElement.getBoundingClientRect(),t={};t.height=e.height,t.width=e.width,this.ngGauge().update(t)}ngAfterViewInit(){this.setCanvasHight(),this.startWidget(),this.initCompleted=!0}onResized(e){let t={};t.height=e.contentRect.height,t.width=e.contentRect.width,this.ngGauge().update(t)}setGaugeConfig(){this.gaugeOptions.title=this.widgetProperties.config.displayName?this.widgetProperties.config.displayName:"",this.gaugeOptions.minValue=0,this.gaugeOptions.maxValue=360,this.gaugeOptions.valueDec=0,this.gaugeOptions.valueInt=1,this.gaugeOptions.units="",this.gaugeOptions.barProgress=!1,this.gaugeOptions.barWidth=0,this.gaugeOptions.valueBox=this.widgetProperties.config.gauge.showValueBox,this.gaugeOptions.fontValueSize=60,this.gaugeOptions.valueBoxWidth=26,this.gaugeOptions.valueBoxBorderRadius=10,this.gaugeOptions.valueBoxStroke=0,this.gaugeOptions.ticksAngle=360,this.gaugeOptions.startAngle=180,this.gaugeOptions.exactTicks=!1,this.gaugeOptions.strokeTicks="",this.gaugeOptions.majorTicks=this.widgetProperties.config.gauge.compassUseNumbers?["N","30","60","E","120","150","S","210","240","W","300","330","N"]:["N","NE","E","SE","S","SW","W","NW","N"],this.gaugeOptions.majorTicksDec=0,this.gaugeOptions.majorTicksInt=1,this.gaugeOptions.numbersMargin=5,this.gaugeOptions.fontNumbersSize=25,this.gaugeOptions.minorTicks=this.widgetProperties.config.gauge.compassUseNumbers?3:2,this.gaugeOptions.needle=!0,this.gaugeOptions.needleType=this.LINE,this.gaugeOptions.needleStart=this.NEEDLE_START,this.gaugeOptions.needleEnd=this.NEEDLE_END,this.gaugeOptions.needleCircleSize=this.NEEDLE_CIRCLE_SIZE,this.gaugeOptions.needleWidth=4,this.gaugeOptions.needleShadow=!1,this.gaugeOptions.needleCircleInner=!1,this.gaugeOptions.needleCircleOuter=!1,this.gaugeOptions.borders=!0,this.gaugeOptions.borderOuterWidth=0,this.gaugeOptions.borderMiddleWidth=this.BORDER_MIDDLE_WIDTH,this.gaugeOptions.borderInnerWidth=this.BORDER_INNER_WIDTH,this.gaugeOptions.borderShadowWidth=0,this.gaugeOptions.highlights=[],this.gaugeOptions.fontTitle="Roboto",this.gaugeOptions.fontTitleWeight="normal",this.gaugeOptions.fontTitleSize=25,this.gaugeOptions.fontUnits="Roboto",this.gaugeOptions.fontUnitsSize=25,this.gaugeOptions.fontUnitsWeight="normal",this.gaugeOptions.barStrokeWidth=0,this.gaugeOptions.barShadow=0,this.gaugeOptions.fontValue="Roboto",this.gaugeOptions.fontValueWeight="bold",this.gaugeOptions.valueTextShadow=!1,this.gaugeOptions.colorValueBoxShadow="",this.gaugeOptions.fontNumbers="Roboto",this.gaugeOptions.fontNumbersWeight="bold",this.gaugeOptions.highlightsWidth=0,this.widgetProperties.config.gauge.subType==="marineCompass"?(this.gaugeOptions.animationTarget=this.ANIMATION_TARGET_PLATE,this.gaugeOptions.useMinPath=!0):this.widgetProperties.config.gauge.subType==="baseplateCompass"&&(this.gaugeOptions.animationTarget=this.ANIMATION_TARGET_NEEDLE,this.gaugeOptions.useMinPath=!0),this.gaugeOptions.animation=!0,this.gaugeOptions.animateOnInit=!0,this.gaugeOptions.animatedValue=!0,this.gaugeOptions.animationRule="linear",this.gaugeOptions.animationDuration=this.widgetProperties.config.paths.gaugePath.sampleTime-50,this.setGaugeOptions(he(this.widgetProperties.config.color,this.theme()).color,Yr(he(this.widgetProperties.config.color,this.theme()).dim),Yr(he(this.widgetProperties.config.color,this.theme()).dimmer))}setGaugeOptions(e,t,i){let o=Yr(he("contrast",this.theme()).dim);this.gaugeOptions.colorBarProgress=e,this.gaugeOptions.colorBorderMiddle=t,this.gaugeOptions.colorBorderMiddleEnd=t,this.gaugeOptions.colorNeedle=e,this.gaugeOptions.colorNeedleEnd=e,this.gaugeOptions.colorTitle=o,this.gaugeOptions.colorUnits=o,this.gaugeOptions.colorValueText=e,this.gaugeOptions.colorMinorTicks=o,this.gaugeOptions.colorNumbers=this.widgetProperties.config.gauge.compassUseNumbers?[this.theme().port,o,o,t,o,o,t,o,o,t,o,o,this.theme().port]:[this.theme().port,t,t,t,t,t,t,t,this.theme().port],this.gaugeOptions.colorMajorTicks=this.widgetProperties.config.gauge.compassUseNumbers?[this.theme().port,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().port]:[this.theme().port,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().port],this.gaugeOptions.colorPlate=this.gaugeOptions.colorPlateEnd=this.gaugeOptions.colorBorderInner=this.gaugeOptions.colorBorderInnerEnd=this.theme().cardColor,this.gaugeOptions.colorBar=this.theme().background,this.gaugeOptions.colorBarStroke="",this.gaugeOptions.colorValueBoxBackground=this.theme().background,this.gaugeOptions.colorNeedleShadowUp="",this.gaugeOptions.colorNeedleShadowDown="",this.gaugeOptions.colorNeedleCircleInner=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleInnerEnd=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleOuter=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleOuterEnd=this.gaugeOptions.colorPlate}ngOnDestroy(){this.destroyDataStreams()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-gauge-ng-compass"]],viewQuery:function(t,i){t&1&&(te(i.ngGauge,qc,5),te(i.gauge,qc,5,Ye)),t&2&&be(2)},features:[ce],decls:3,vars:8,consts:[["compassGauge",""],[3,"configChange","config","id"],[3,"onResize","id","options","value"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),v(1,"radial-gauge",2,0),I("onResize",function(l){return P(o),O(i.onResized(l))}),_()()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),z("id",xi(i.widgetProperties.uuid))("options",i.gaugeOptions)("value",i.value),ae("value-text",i.textValue)("color-stroke-ticks",i.colorStrokeTicks))},dependencies:[Ce,it,Ot,$n,Eo],styles:["radial-gauge{display:block;position:relative;width:100%;height:100%;overflow:clip} radial-gauge>canvas{display:block;position:absolute;height:100%;width:100%;left:50%;top:50%;transform:translate(-50%,-50%);padding:10px}"]})}return a})();function Mo(a,n,e=!1){let t=[],i=n-a,o=0,r=10;i=$c(n-a,!1),o=$c(i/(r-1),!0);let l=Math.floor(a/o)*o,d=Math.ceil(n/o)*o;t.push(l);let p=i/o;for(let s=0;s<p;s++)if(t[s]<d){let c=(Number(t[s].toFixed(2))*100+Number(o.toFixed(2))*100)/100;t.push(c)}if(t[t.length-1]!==d&&t.push(d),e){let s=[...t].reverse();return{min:l,max:d,majorTicks:s}}return{min:l,max:d,majorTicks:t}}function $c(a,n){let e=Math.floor(Math.log10(a)),t=a/Math.pow(10,e),i=null;return n?1.5>t?i=1:3>t?i=2:7>t?i=5:i=10:1>=t?i=1:2>=t?i=2:5>=t?i=5:i=10,i*Math.pow(10,e)}function Yn(a,n,e,t,i,o,r=!1){let l=[],d=[...a].sort((p,s)=>p.lower-s.lower);for(let p of d){let s=null,c=null,m;switch(p.state){case J.Emergency:m=n.zoneEmergency;break;case J.Alarm:m=n.zoneAlarm;break;case J.Warn:m=n.zoneWarn;break;case J.Alert:m=n.zoneAlert;break;case J.Nominal:m=n.zoneNominal;break;default:m="rgba(0,0,0,0)"}if(s=t.convertToUnit(e,p.lower),c=t.convertToUnit(e,p.upper),!(c<i||s>o)){if(s=s!==null?s:i,c=c!==null?c:o,s=Math.max(s,i),c>o){c=o,l.push({from:s,to:c,color:m});break}l.push({from:s,to:c,color:m})}}return r&&(l=l.map(p=>({from:o-p.to,to:o-p.from,color:p.color}))),l}var Yc=["linearGauge"],Kc=(()=>{class a extends Se{ngGauge=ie("linearGauge",{read:va});gauge=ie("linearGauge",{read:Ye});initCompleted=!1;textValue="";value=0;gaugeOptions={};isGaugeVertical=!0;adjustedScale;metaSub;state=J.Normal;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,convertUnitTo:"unitless",sampleTime:500}},displayScale:{lower:0,upper:100,type:"linear"},gauge:{type:"ngLinear",subType:"vertical",enableTicks:!1,highlightsWidth:5,useNeedle:!1},numInt:1,numDecimal:0,color:"contrast",enableTimeout:!1,dataTimeout:5,ignoreZones:!1},ne(()=>{if(this.theme()){if(!this.initCompleted)return;this.startWidget()}})}ngOnInit(){this.validateConfig()}startWidget(){this.setGaugeConfig(),this.ngGauge().update(this.gaugeOptions),this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe(),this.observeDataStream("gaugePath",t=>{if(!t||!t.data||t.data.value===null?(t={data:{value:0,timestamp:new Date},state:J.Normal},this.textValue="--"):this.textValue==="--"&&(this.textValue=""),this.value=Math.min(Math.max(t.data.value,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper),t.state==null&&(t.state=J.Normal),this.state!==t.state){this.state=t.state;let i={};if(!this.widgetProperties.config.ignoreZones)switch(t.state){case J.Emergency:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=this.theme().zoneEmergency,i.colorValueText=this.theme().zoneEmergency):(i.colorBarProgress=this.theme().zoneEmergency,i.colorValueText=this.theme().zoneEmergency);break;case J.Alarm:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=this.theme().zoneAlarm,i.colorValueText=this.theme().zoneAlarm):(i.colorBarProgress=this.theme().zoneAlarm,i.colorValueText=this.theme().zoneAlarm);break;case J.Warn:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=this.theme().zoneWarn,i.colorValueText=this.theme().zoneWarn):(i.colorBarProgress=this.theme().zoneWarn,i.colorValueText=this.theme().zoneWarn);break;case J.Alert:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=this.theme().zoneAlert,i.colorValueText=this.theme().zoneAlert):(i.colorBarProgress=this.theme().zoneAlert,i.colorValueText=this.theme().zoneAlert);break;default:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=he(this.widgetProperties.config.color,this.theme()).color,i.colorValueText=he(this.widgetProperties.config.color,this.theme()).color):(i.colorBarProgress=he(this.widgetProperties.config.color,this.theme()).color,i.colorValueText=he(this.widgetProperties.config.color,this.theme()).color)}this.ngGauge().update(i)}});let e={};e.highlights=[],this.widgetProperties.config.ignoreZones?this.ngGauge().update(e):(this.observeMetaStream(),this.metaSub=this.zones$.subscribe(t=>{if(t&&t.length>0){let i=Yn(t,this.theme(),this.widgetProperties.config.paths.gaugePath.convertUnitTo,this.unitsService,this.adjustedScale.min,this.adjustedScale.max);e.highlightsWidth=this.widgetProperties.config.gauge.highlightsWidth,e.highlights=JSON.stringify(i,null,1)}else e.highlights=[];this.ngGauge().update(e)}))}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}ngAfterViewInit(){this.setCanvasHight(),this.startWidget(),this.initCompleted=!0}onResized(e){let t={};this.widgetProperties.config.gauge.subType==="vertical"?(t.height=e.contentRect.height,t.width=t.height*.3,t.width>e.contentRect.width&&(t.width=e.contentRect.width,t.height=t.width/.3)):(t.width=e.contentRect.width,t.height=t.width*.3,t.height>e.contentRect.height&&(t.height=e.contentRect.height,t.width=t.height/.3)),t.height-=10,this.ngGauge().update(t)}setCanvasHight(){let e=this.gauge().nativeElement.getBoundingClientRect(),t={};t.height=e.height,t.width=e.width,this.ngGauge().update(t)}setGaugeConfig(){let e=this.widgetProperties.config.gauge.subType==="vertical",t=this.widgetProperties.config.gauge.useNeedle,i=this.widgetProperties.config.gauge.enableTicks;this.adjustedScale={min:this.widgetProperties.config.displayScale.lower,max:this.widgetProperties.config.displayScale.upper,majorTicks:[]};let o=this.gauge().nativeElement.getBoundingClientRect(),r=null,l=null;this.widgetProperties.config.gauge.subType==="vertical"?(r=o.height,l=o.height*.3):(r=o.width*.3,l=o.width),i&&(this.adjustedScale=Mo(this.widgetProperties.config.displayScale.lower,this.widgetProperties.config.displayScale.upper));let d={height:r,width:l,minValue:this.adjustedScale.min,maxValue:this.adjustedScale.max,valueInt:this.widgetProperties.config.numInt!==void 0&&this.widgetProperties.config.numInt!==null?this.widgetProperties.config.numInt:1,valueDec:this.widgetProperties.config.numDecimal!==void 0&&this.widgetProperties.config.numDecimal!==null?this.widgetProperties.config.numDecimal:2,title:this.widgetProperties.config.displayName,fontTitleSize:40,fontTitle:"Roboto",fontTitleWeight:"bold",barLength:e?80:90,barWidth:i?t?0:30:60,barProgress:!0,barBeginCircle:0,barStrokeWidth:0,barShadow:0,needle:t,needleType:this.widgetProperties.config.gauge.useNeedle?"arrow":"line",needleShadow:!0,needleSide:"both",needleStart:this.widgetProperties.config.gauge.useNeedle?e?200:155:-45,needleEnd:this.widgetProperties.config.gauge.useNeedle?e?175:180:55,colorNeedleEnd:he(this.widgetProperties.config.color,this.theme()).color,colorNeedleShadowUp:he(this.widgetProperties.config.color,this.theme()).color,colorNeedleShadowDown:he(this.widgetProperties.config.color,this.theme()).color,units:this.widgetProperties.config.paths.gaugePath.convertUnitTo,fontUnits:"Roboto",fontUnitsWeight:"normal",borders:!1,borderOuterWidth:0,colorBorderOuter:"red",colorBorderOuterEnd:"red",borderMiddleWidth:0,colorBorderMiddle:"#63afdf",colorBorderMiddleEnd:"#63afdf",borderInnerWidth:0,colorBorderInner:"red",colorBorderInnerEnd:"#121212",borderShadowWidth:0,borderRadius:0,colorBarEnd:"",colorBarStroke:"0",valueBoxStroke:0,colorValueBoxRect:"",colorValueBoxRectEnd:"",colorValueBoxBackground:this.theme().background,fontValueSize:50,fontValue:"Roboto",fontValueWeight:"bold",valueTextShadow:!1,colorValueBoxShadow:"",fontNumbers:"Roboto",fontNumbersWeight:"normal",fontUnitsSize:this.isGaugeVertical?40:35,colorTitle:he("contrast",this.theme()).dim,colorUnits:he("contrast",this.theme()).dim,colorValueText:he(this.widgetProperties.config.color,this.theme()).color,colorPlate:this.theme().cardColor,colorBar:this.theme().background,colorMajorTicks:he("contrast",this.theme()).dim,colorMinorTicks:he("contrast",this.theme()).dim,colorNumbers:he("contrast",this.theme()).dim,majorTicks:i?this.adjustedScale.majorTicks:[],majorTicksInt:this.widgetProperties.config.numInt!==void 0&&this.widgetProperties.config.numInt!==null?this.widgetProperties.config.numInt:1,majorTicksDec:this.widgetProperties.config.numDecimal!==void 0&&this.widgetProperties.config.numDecimal!==null?this.widgetProperties.config.numDecimal:2,numberSide:t?"right":"left",fontNumbersSize:i?e?22:30:0,numbersMargin:e?t?-7:-3:t?-33:-5,tickSide:"left",ticksWidth:i?t&&e?15:10:0,ticksPadding:i?e?t?0:5:t?9:8:0,strokeTicks:i,minorTicks:i?2:0,ticksWidthMinor:i?6:0,valueBox:!0,valueBoxWidth:35,valueBoxBorderRadius:10,highlights:[],highlightsWidth:this.widgetProperties.config.gauge.highlightsWidth,animation:!0,animationRule:"linear",animatedValue:!1,animateOnInit:!1,animationDuration:this.widgetProperties.config.paths.gaugePath.sampleTime-25};Object.assign(this.gaugeOptions,d),this.setThemePaletteColor()}setThemePaletteColor(){let e="",t="";switch(this.widgetProperties.config.color){case"contrast":e=this.theme().contrast,t=this.theme().contrastDim;break;case"blue":e=this.theme().blue,t=this.theme().blueDim;break;case"green":e=this.theme().green,t=this.theme().greenDim;break;case"pink":e=this.theme().pink,t=this.theme().pinkDim;break;case"orange":e=this.theme().orange,t=this.theme().orangeDim;break;case"purple":e=this.theme().purple,t=this.theme().purpleDim;break;case"grey":e=this.theme().grey,t=this.theme().greyDim;break;case"yellow":e=this.theme().yellow,t=this.theme().yellowDim;break;default:e=this.theme().contrast,t=this.theme().contrastDim;break}Object.assign(this.gaugeOptions,{colorBarProgress:this.widgetProperties.config.gauge.useNeedle?"":e,colorBarProgressEnd:"",colorNeedle:this.widgetProperties.config.gauge.useNeedle?e:t,needleWidth:this.widgetProperties.config.gauge.useNeedle?45:0})}ngOnDestroy(){this.destroyDataStreams(),this.metaSub?.unsubscribe()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-gauge-ng-linear"]],viewQuery:function(t,i){t&1&&(te(i.ngGauge,Yc,5,va),te(i.gauge,Yc,5,Ye)),t&2&&be(2)},features:[ce],decls:4,vars:7,consts:[["host",""],["linearGauge",""],[3,"configChange","config","id"],[1,"linearGauge",3,"onResize","id","options","value"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",2,0),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),v(2,"linear-gauge",3,1),I("onResize",function(l){return P(o),O(i.onResized(l))}),_()()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(2),z("id",xi(i.widgetProperties.uuid))("options",i.gaugeOptions)("value",i.value),ae("value-text",i.textValue))},dependencies:[Ce,it,Ot,$n,va],styles:["linear-gauge{display:block;position:relative;width:100%;height:100%;overflow:clip} linear-gauge>canvas{display:block;position:absolute;height:100%;width:100%;left:50%;top:50%;transform:translate(-50%,-50%);margin-top:5px}"]})}return a})();var Qc=["radialGauge"],Xc=(()=>{class a extends Se{LINE="line";ANIMATION_TARGET_NEEDLE="needle";ngGauge=ie("radialGauge");gauge=ie("radialGauge",{read:Ye});initCompleted=!1;textValue="";value=null;adjustedScale;gaugeOptions={};colorStrokeTicks="";unitName=null;metaSub;state=J.Normal;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,convertUnitTo:"unitless",sampleTime:500}},displayScale:{lower:0,upper:100,type:"linear"},gauge:{type:"ngRadial",subType:"measuring",enableTicks:!0,compassUseNumbers:!1,highlightsWidth:5,scaleStart:180,barStartPosition:"left"},numInt:1,numDecimal:0,enableTimeout:!1,color:"contrast",dataTimeout:5,ignoreZones:!1},ne(()=>{if(this.theme()){if(!this.initCompleted)return;this.startWidget()}})}ngOnInit(){this.validateConfig()}startWidget(){this.setGaugeConfig(),this.ngGauge().update(this.gaugeOptions),this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe(),this.observeDataStream("gaugePath",t=>{if(!t||!t.data||t.data.value===null?(t={data:{value:0,timestamp:new Date},state:J.Normal},this.textValue="--"):this.textValue==="--"&&(this.textValue=""),this.value=Math.min(Math.max(t.data.value,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper),t.state==null&&(t.state=J.Normal),this.state!==t.state){this.state=t.state;let i={};if(!this.widgetProperties.config.ignoreZones)switch(t.state){case J.Alarm:i.colorBorderMiddle=this.theme().cardColor,i.colorBarProgress=this.theme().zoneAlarm,i.colorValueText=this.theme().zoneAlarm;break;case J.Warn:i.colorBorderMiddle=this.theme().cardColor,i.colorBarProgress=this.theme().zoneWarn,i.colorValueText=this.theme().zoneWarn;break;case J.Alert:i.colorBorderMiddle=this.theme().cardColor,i.colorBarProgress=this.theme().zoneAlert,i.colorValueText=this.theme().zoneAlert;break;default:i.colorBorderMiddle=this.theme().cardColor,i.colorBarProgress=this.widgetProperties.config.gauge.subType=="measuring"?he(this.widgetProperties.config.color,this.theme()).color:he(this.widgetProperties.config.color,this.theme()).dim,i.colorValueText=he(this.widgetProperties.config.color,this.theme()).color}this.ngGauge().update(i)}});let e={};e.highlights=[],this.widgetProperties.config.ignoreZones?this.ngGauge().update(e):(this.observeMetaStream(),this.metaSub=this.zones$.subscribe(t=>{if(t&&t.length>0&&this.widgetProperties.config.gauge.subType=="measuring"){let i=this.widgetProperties.config.gauge.barStartPosition==="right",o=Yn(t,this.theme(),this.widgetProperties.config.paths.gaugePath.convertUnitTo,this.unitsService,this.adjustedScale.min,this.adjustedScale.max,i);e.highlightsWidth=this.widgetProperties.config.gauge.highlightsWidth,e.highlights=JSON.stringify(o,null,1)}else e.highlights=[];this.ngGauge().update(e)}))}updateConfig(e){this.widgetProperties.config=e,this.setCanvasHight(),this.startWidget()}setCanvasHight(){let e=this.gauge().nativeElement.getBoundingClientRect(),t={};t.height=e.height,t.width=e.width,this.ngGauge().update(t)}ngAfterViewInit(){this.setCanvasHight(),this.startWidget(),this.initCompleted=!0}onResized(e){let t={};t.height=e.contentRect.height,t.width=e.contentRect.width,this.ngGauge().update(t)}setGaugeConfig(){switch(this.gaugeOptions.title=this.widgetProperties.config.displayName?this.widgetProperties.config.displayName:"",this.gaugeOptions.highlights=[],this.gaugeOptions.fontTitle="Roboto",this.gaugeOptions.fontTitleWeight="bold",this.gaugeOptions.fontUnits="Roboto",this.gaugeOptions.fontUnitsSize=25,this.gaugeOptions.fontUnitsWeight="normal",this.gaugeOptions.barStrokeWidth=0,this.gaugeOptions.barShadow=0,this.gaugeOptions.colorBarStroke="",this.gaugeOptions.fontValue="Roboto",this.gaugeOptions.fontValueWeight="bold",this.gaugeOptions.valueTextShadow=!1,this.gaugeOptions.colorValueBoxShadow="",this.gaugeOptions.fontNumbers="Roboto",this.gaugeOptions.fontNumbersWeight="bold",this.gaugeOptions.valueInt=this.widgetProperties.config.numInt!==void 0&&this.widgetProperties.config.numInt!==null?this.widgetProperties.config.numInt:1,this.gaugeOptions.valueDec=this.widgetProperties.config.numDecimal!==void 0&&this.widgetProperties.config.numDecimal!==null?this.widgetProperties.config.numDecimal:2,this.gaugeOptions.majorTicksInt=this.widgetProperties.config.numInt!==void 0&&this.widgetProperties.config.numInt!==null?this.widgetProperties.config.numInt:1,this.gaugeOptions.majorTicksDec=this.widgetProperties.config.numDecimal!==void 0&&this.widgetProperties.config.numDecimal!==null?this.widgetProperties.config.numDecimal:2,this.gaugeOptions.highlightsWidth=this.widgetProperties.config.gauge.highlightsWidth,this.gaugeOptions.animation=!0,this.gaugeOptions.animateOnInit=!1,this.gaugeOptions.animatedValue=!1,this.gaugeOptions.animationRule="linear",this.gaugeOptions.animationDuration=this.widgetProperties.config.paths.gaugePath.sampleTime-25,this.gaugeOptions.colorBorderShadow=!1,this.gaugeOptions.colorBorderOuter=this.theme().cardColor,this.gaugeOptions.colorBorderOuterEnd="",this.gaugeOptions.colorBorderMiddle=this.theme().cardColor,this.gaugeOptions.colorBorderMiddleEnd="",this.gaugeOptions.colorBarProgress=he(this.widgetProperties.config.color,this.theme()).color,this.gaugeOptions.colorNeedle=he(this.widgetProperties.config.color,this.theme()).dim,this.gaugeOptions.colorNeedleEnd=he(this.widgetProperties.config.color,this.theme()).dim,this.gaugeOptions.colorTitle=this.theme().contrastDim,this.gaugeOptions.colorUnits=this.theme().contrastDim,this.gaugeOptions.colorValueText=he(this.widgetProperties.config.color,this.theme()).color,this.colorStrokeTicks=this.theme().contrastDim,this.gaugeOptions.colorMinorTicks=this.theme().contrastDim,this.gaugeOptions.colorNumbers=this.theme().contrastDim,this.gaugeOptions.colorMajorTicks=this.theme().contrastDim,this.gaugeOptions.colorPlate=this.gaugeOptions.colorPlateEnd=this.theme().cardColor,this.gaugeOptions.colorBar=this.theme().background,this.gaugeOptions.colorNeedleShadowUp="",this.gaugeOptions.colorNeedleShadowDown="black",this.gaugeOptions.colorNeedleCircleInner=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleInnerEnd=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleOuter=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleOuterEnd=this.gaugeOptions.colorPlate,this.widgetProperties.config.gauge.subType){case"capacity":this.configureCapacityGauge();break;case"measuring":this.configureMeasuringGauge();break;default:}}configureCapacityGauge(){this.gaugeOptions.minValue=this.widgetProperties.config.displayScale.lower,this.gaugeOptions.maxValue=this.widgetProperties.config.displayScale.upper,this.gaugeOptions.units=this.widgetProperties.config.paths.gaugePath.convertUnitTo,this.gaugeOptions.fontTitleSize=40,this.gaugeOptions.barProgress=!0,this.gaugeOptions.barWidth=20,this.gaugeOptions.colorBarProgress=he(this.widgetProperties.config.color,this.theme()).dim,this.gaugeOptions.valueBox=!0,this.gaugeOptions.fontValueSize=60,this.gaugeOptions.valueBoxWidth=10,this.gaugeOptions.valueBoxBorderRadius=5,this.gaugeOptions.valueBoxStroke=0,this.gaugeOptions.colorValueBoxBackground="",this.gaugeOptions.colorValueBoxRect="",this.gaugeOptions.colorValueBoxRectEnd="",this.gaugeOptions.ticksAngle=360,this.gaugeOptions.startAngle=this.widgetProperties.config.gauge.scaleStart||180,this.gaugeOptions.majorTicks=0,this.gaugeOptions.exactTicks=!0,this.gaugeOptions.strokeTicks=!1,this.gaugeOptions.minorTicks=0,this.gaugeOptions.numbersMargin=0,this.gaugeOptions.fontNumbersSize=0,this.gaugeOptions.colorMajorTicks=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNumbers=this.gaugeOptions.colorMinorTicks="",this.gaugeOptions.needle=!0,this.gaugeOptions.needleType=this.LINE,this.gaugeOptions.needleWidth=2,this.gaugeOptions.needleShadow=!1,this.gaugeOptions.needleStart=75,this.gaugeOptions.needleEnd=95,this.gaugeOptions.needleCircleSize=1,this.gaugeOptions.needleCircleInner=!1,this.gaugeOptions.needleCircleOuter=!1,this.gaugeOptions.borders=!0,this.gaugeOptions.borderOuterWidth=2,this.gaugeOptions.borderMiddleWidth=1,this.gaugeOptions.borderInnerWidth=0,this.gaugeOptions.borderShadowWidth=0,this.gaugeOptions.animationTarget=this.ANIMATION_TARGET_NEEDLE,this.gaugeOptions.useMinPath=!1}configureMeasuringGauge(){this.adjustedScale=Mo(this.widgetProperties.config.displayScale.lower,this.widgetProperties.config.displayScale.upper,this.widgetProperties.config.gauge.barStartPosition==="right"),this.gaugeOptions.minValue=this.adjustedScale.min,this.gaugeOptions.maxValue=this.adjustedScale.max,this.gaugeOptions.units=this.widgetProperties.config.paths.gaugePath.convertUnitTo,this.gaugeOptions.fontTitleSize=24,this.gaugeOptions.barProgress=!0,this.gaugeOptions.barWidth=15,this.gaugeOptions.valueBox=!0,this.gaugeOptions.fontValueSize=60,this.gaugeOptions.valueBoxWidth=100,this.gaugeOptions.valueBoxBorderRadius=0,this.gaugeOptions.valueBoxStroke=0,this.gaugeOptions.colorValueBoxBackground="",this.gaugeOptions.exactTicks=!1,this.gaugeOptions.majorTicks=this.adjustedScale.majorTicks,this.gaugeOptions.minorTicks=2,this.gaugeOptions.ticksAngle=270,this.gaugeOptions.startAngle=45,this.gaugeOptions.barStartPosition=this.widgetProperties.config.gauge.barStartPosition||"left",this.gaugeOptions.strokeTicks=!0,this.gaugeOptions.numbersMargin=3,this.gaugeOptions.fontNumbersSize=15,this.gaugeOptions.needle=!0,this.gaugeOptions.needleType=this.LINE,this.gaugeOptions.needleWidth=2,this.gaugeOptions.needleShadow=!1,this.gaugeOptions.needleStart=0,this.gaugeOptions.needleEnd=95,this.gaugeOptions.needleCircleSize=10,this.gaugeOptions.needleCircleInner=!1,this.gaugeOptions.needleCircleOuter=!1,this.gaugeOptions.borders=!0,this.gaugeOptions.borderOuterWidth=2,this.gaugeOptions.borderMiddleWidth=1,this.gaugeOptions.borderInnerWidth=0,this.gaugeOptions.borderShadowWidth=0,this.gaugeOptions.animationTarget=this.ANIMATION_TARGET_NEEDLE,this.gaugeOptions.useMinPath=!1}ngOnDestroy(){this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-gauge-ng-radial"]],viewQuery:function(t,i){t&1&&(te(i.ngGauge,Qc,5),te(i.gauge,Qc,5,Ye)),t&2&&be(2)},features:[ce],decls:3,vars:7,consts:[["radialGauge",""],[3,"configChange","config","id"],[3,"onResize","id","options","value"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),v(1,"radial-gauge",2,0),I("onResize",function(l){return P(o),O(i.onResized(l))}),_()()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),z("id",xi(i.widgetProperties.uuid))("options",i.gaugeOptions)("value",i.value),ae("value-text",i.textValue))},dependencies:[Ce,it,Ot,$n,Eo],styles:["radial-gauge{display:block;position:relative;width:100%;height:100%;overflow:clip} radial-gauge>canvas{display:block;position:absolute;height:100%;width:100%;left:50%;top:50%;transform:translate(-50%,-50%);padding:0}"]})}return a})();var cg=["gaugeCanvas"];typeof steelseries>"u"&&(globalThis.steelseries={BackgroundColor:{DARK_GRAY:"darkGray",SATIN_GRAY:"satinGray",LIGHT_GRAY:"lightGray",WHITE:"white",BLACK:"black",BEIGE:"beige",BROWN:"brown",RED:"red",GREEN:"green",BLUE:"blue",ANTHRACITE:"anthracite",MUD:"mud",PUNCHED_SHEET:"punchedSheet",CARBON:"carbon",STAINLESS:"stainless",BRUSHED_METAL:"brushedMetal",BRUSHED_STAINLESS:"brushedStainless",TURNED:"turned"},FrameDesign:{BLACK_METAL:"blackMetal",METAL:"metal",SHINY_METAL:"shinyMetal",BRASS:"brass",STEEL:"steel",CHROME:"chrome",GOLD:"gold",ANTHRACITE:"anthracite",TILTED_GRAY:"tiltedGray",TILTED_BLACK:"tiltedBlack",GLOSSY_METAL:"glossyMetal"}});var Kr={darkGray:steelseries.BackgroundColor.DARK_GRAY,satinGray:steelseries.BackgroundColor.SATIN_GRAY,lightGray:steelseries.BackgroundColor.LIGHT_GRAY,white:steelseries.BackgroundColor.WHITE,black:steelseries.BackgroundColor.BLACK,beige:steelseries.BackgroundColor.BEIGE,brown:steelseries.BackgroundColor.BROWN,red:steelseries.BackgroundColor.RED,green:steelseries.BackgroundColor.GREEN,blue:steelseries.BackgroundColor.BLUE,anthracite:steelseries.BackgroundColor.ANTHRACITE,mud:steelseries.BackgroundColor.MUD,punchedSheet:steelseries.BackgroundColor.PUNCHED_SHEET,carbon:steelseries.BackgroundColor.CARBON,stainless:steelseries.BackgroundColor.STAINLESS,brushedMetal:steelseries.BackgroundColor.BRUSHED_METAL,brushedStainless:steelseries.BackgroundColor.BRUSHED_STAINLESS,turned:steelseries.BackgroundColor.TURNED},Qr={blackMetal:steelseries.FrameDesign.BLACK_METAL,metal:steelseries.FrameDesign.METAL,shinyMetal:steelseries.FrameDesign.SHINY_METAL,brass:steelseries.FrameDesign.BRASS,steel:steelseries.FrameDesign.STEEL,chrome:steelseries.FrameDesign.CHROME,gold:steelseries.FrameDesign.GOLD,anthracite:steelseries.FrameDesign.ANTHRACITE,tiltedGray:steelseries.FrameDesign.TILTED_GRAY,tiltedBlack:steelseries.FrameDesign.TILTED_BLACK,glossyMetal:steelseries.FrameDesign.GLOSSY_METAL},Zc=(()=>{class a{unitsService=E(hi);canvasService=E(tt);canvasRef=ie("gaugeCanvas");widgetUUID=B(void 0);subType=B(void 0);barGauge=B(void 0);radialSize=B(void 0);backgroundColor=B(void 0);frameColor=B(void 0);minValue=B(void 0);maxValue=B(void 0);decimals=B(void 0);zones=B(void 0);title=B(void 0);units=B(void 0);value=B(void 0);theme=B(void 0,{alias:"themeColors"});gaugeStarted=!1;gauge;gaugeOptions={};paddingTop=0;lastSizeSignature="";resizeTimer=null;pendingStructuralRebuild=!1;ngOnInit(){this.buildOptions()}buildOptions(){this.gaugeOptions.minValue=this.minValue(),this.gaugeOptions.maxValue=this.maxValue();let e=this.decimals();this.gaugeOptions.lcdDecimals=e??2,this.gaugeOptions.titleString=this.title(),this.gaugeOptions.unitString=this.units(),this.subType()=="radial"&&(this.gaugeOptions.gaugeType=this.setGaugeType(this.radialSize()));let t=this.zones();if(t){let i=[],o=[],r=[...t].sort((l,d)=>l.lower-d.lower);for(let l of r){let d=null,p=null,s;switch(l.state){case J.Emergency:s=this.theme().zoneEmergency;break;case J.Alarm:s=this.theme().zoneAlarm;break;case J.Warn:s=this.theme().zoneWarn;break;case J.Alert:s=this.theme().zoneAlert;break;case J.Nominal:s=this.theme().zoneNominal;break;default:s="rgba(0,0,0,0)"}let c=this.units();if(c=="ratio"?(d=l.lower,p=l.upper):(d=this.unitsService.convertToUnit(c,l.lower),p=this.unitsService.convertToUnit(c,l.upper)),!(p<this.minValue()||d>this.maxValue())){if(d=d!==null?d:this.minValue(),p=p!==null?p:this.maxValue(),d=Math.max(d,this.minValue()),p>this.maxValue()){p=this.maxValue(),i.push(steelseries.Section(d,p,s));break}i.push(steelseries.Section(d,p,s))}}this.gaugeOptions.section=i,this.gaugeOptions.area=o,this.gaugeOptions.useSectionColors=!0}Kr[this.backgroundColor()]&&(this.gaugeOptions.backgroundColor=Kr[this.backgroundColor()]),Qr[this.frameColor()]&&(this.gaugeOptions.frameDesign=Qr[this.frameColor()]),this.barGauge()&&(this.gaugeOptions.valueColor=steelseries.ColorDef.GREEN),this.gaugeOptions.lcdVisible=!0,this.gaugeOptions.thresholdVisible=!1,this.gaugeOptions.threshold=this.maxValue(),this.gaugeOptions.ledVisible=!1}setGaugeType(e){switch(e){case"quarter":return steelseries.GaugeType.TYPE1;case"half":return steelseries.GaugeType.TYPE2;case"three-quarter":return steelseries.GaugeType.TYPE3;case"full":default:return steelseries.GaugeType.TYPE4}}startGauge(e=!1){this.buildOptions();let t=this.widgetUUID();if(!t)return;let i=e||this.pendingStructuralRebuild;if(this.gauge&&!i){this.gauge.setValueAnimated&&this.value()!=null,this.gaugeStarted=!0;return}this.pendingStructuralRebuild=!1,this.gaugeStarted=!0;let o=this.subType();o==="radial"?this.gauge=new steelseries.Radial(t,this.gaugeOptions):o==="linear"&&(this.barGauge()?this.gauge=new steelseries.LinearBargraph(t,this.gaugeOptions):this.gauge=new steelseries.Linear(t,this.gaugeOptions))}onResized(e){if(e.contentRect.height<50||e.contentRect.width<50)return;let t;if(this.subType()==="radial"){let i=Math.min(e.contentRect.height,e.contentRect.width);this.gaugeOptions.size=i,t="radial:"+i}else{let i=Math.floor(e.contentRect.width),o=Math.floor(e.contentRect.height);this.gaugeOptions.width=i,this.gaugeOptions.height=o,t=`linear:${i}x${o}`}t!==this.lastSizeSignature&&(this.lastSizeSignature=t,this.resizeTimer&&window.clearTimeout(this.resizeTimer),this.resizeTimer=window.setTimeout(()=>{this.startGauge(!0),this.resizeTimer=null},120))}ngOnChanges(e){this.gaugeStarted&&(e.value&&!e.value.firstChange&&this.gauge.setValueAnimated(e.value.currentValue),e.zones&&(this.pendingStructuralRebuild=!0,this.startGauge(!0)),e.title&&this.gauge.setTitleString(e.title.currentValue),e.backgroundColor&&this.gauge.setBackgroundColor(Kr[e.backgroundColor.currentValue]),e.frameColor&&this.gauge.setFrameDesign(Qr[e.frameColor.currentValue]),e.radialSize&&(this.pendingStructuralRebuild=!0,this.startGauge(!0)),e.minValue&&this.gauge.setMinValue(e.minValue.currentValue),e.maxValue&&this.gauge.setMaxValue(e.maxValue.currentValue))}ngOnDestroy(){if(this.gauge&&this.gauge.setValue){let t=this.gauge.getValue?this.gauge.getValue():this.value();this.gauge.setValue(t)}let e=this.widgetUUID();if(e){let t=document.getElementById(e);this.canvasService.releaseCanvas(t,{clear:!0,removeFromDom:!0})}this.gauge=null}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["gauge-steel"]],viewQuery:function(t,i){t&1&&te(i.canvasRef,cg,5),t&2&&be()},inputs:{widgetUUID:[1,"widgetUUID"],subType:[1,"subType"],barGauge:[1,"barGauge"],radialSize:[1,"radialSize"],backgroundColor:[1,"backgroundColor"],frameColor:[1,"frameColor"],minValue:[1,"minValue"],maxValue:[1,"maxValue"],decimals:[1,"decimals"],zones:[1,"zones"],title:[1,"title"],units:[1,"units"],value:[1,"value"],theme:[1,"themeColors","theme"]},features:[pn],decls:4,vars:2,consts:[["gaugeCanvas",""],[1,"wrapper",3,"onResize"],[2,"z-index","inherit",3,"id"]],template:function(t,i){if(t&1){let o=Y();v(0,"div",1),I("onResize",function(l){return P(o),O(i.onResized(l))}),v(1,"canvas",2,0),b(3," Browser does not support canvas element. "),_()()}t&2&&(k(),z("id",xi(i.widgetUUID())))},dependencies:[it,Ot],styles:[".sgWrapper[_ngcontent-%COMP%]{height:100%;width:100%;text-align:center}"]})}return a})();var Jc=(()=>{class a extends Se{dataValue=0;zones=[];metaSub;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,convertUnitTo:"unitless",sampleTime:500}},displayScale:{type:"linear",lower:0,upper:100},gauge:{type:"steel",subType:"radial",backgroundColor:"carbon",faceColor:"anthracite",radialSize:"full",rotateFace:!1,digitalMeter:!1},numDecimal:2,enableTimeout:!1,dataTimeout:5,ignoreZones:!1}}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe(),this.observeDataStream("gaugePath",e=>{(!e||!e.data)&&(e={data:{value:0,timestamp:new Date},state:"normal"}),this.dataValue=Math.min(Math.max(e.data.value,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper)}),this.widgetProperties.config.ignoreZones?this.zones=[]:(this.observeMetaStream(),this.metaSub=this.zones$.subscribe(e=>{e?e.length>0?this.zones=e:this.zones=[]:this.zones=[]}))}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}ngOnDestroy(){this.destroyDataStreams(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-gauge-steel"]],features:[ce],decls:2,vars:16,consts:[[3,"configChange","config","id"],[3,"widgetUUID","subType","barGauge","radialSize","backgroundColor","frameColor","minValue","maxValue","decimals","zones","title","units","value","themeColors"]],template:function(t,i){t&1&&(v(0,"widget-host",0),ve("configChange",function(r){return fe(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),G(1,"gauge-steel",1),_()),t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),z("widgetUUID",i.widgetProperties.uuid)("subType",i.widgetProperties.config.gauge.subType)("barGauge",i.widgetProperties.config.gauge.digitalMeter)("radialSize",i.widgetProperties.config.gauge.radialSize)("backgroundColor",i.widgetProperties.config.gauge.backgroundColor)("frameColor",i.widgetProperties.config.gauge.faceColor)("minValue",i.widgetProperties.config.displayScale.lower)("maxValue",i.widgetProperties.config.displayScale.upper)("decimals",i.widgetProperties.config.numDecimal)("zones",i.zones)("title",i.widgetProperties.config.displayName)("units",i.widgetProperties.config.paths.gaugePath.convertUnitTo)("value",i.dataValue)("themeColors",i.theme()))},dependencies:[Ce,Zc],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}gauge-steel[_ngcontent-%COMP%]{display:block;position:relative;width:100%;height:100%} .wrapper{display:block;position:relative;width:100%;height:100%;padding:10px} .wrapper>canvas{display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}"]})}return a})();var hg=["plainIframe"];function ug(a,n){if(a&1&&G(0,"iframe",2,0),a&2){let e=U();z("src",e.widgetUrl,Na)}}function mg(a,n){a&1&&(v(0,"div",3)(1,"h2"),b(2,"Empty or bad URL"),_(),v(3,"p"),b(4," IMPORTANT: cross-domain security rules (CORS) apply to this widget. "),_(),v(5,"p"),b(6,"Typically, you can load Grafana graphs, Signal K apps or other related tools. "),_()())}var eh=(()=>{class a extends Se{_sanitizer=E(Ua);_dashboard=E(nt);iframe=ie.required("plainIframe");widgetUrl=null;displayTransparentOverlay=K("block");constructor(){super(),this.defaultConfig={widgetUrl:null,allowInput:!1},ne(()=>{this._dashboard.isDashboardStatic()?this.displayTransparentOverlay.set(this.widgetProperties.config.allowInput?"none":"block"):this.displayTransparentOverlay.set("block")})}ngOnInit(){this.validateConfig(),window.addEventListener("message",this.handleIframeGesture),this.displayTransparentOverlay.set(this.widgetProperties.config.allowInput?"none":"block"),this.widgetUrl=this.resolveUrl(this.widgetProperties.config.widgetUrl)}ngAfterViewInit(){this.iframe()&&(this.iframe().nativeElement.onload=()=>this.injectSwipeScript())}startWidget(){}ngOnDestroy(){window.removeEventListener("message",this.handleIframeGesture),this.iframe()&&(this.iframe().nativeElement.onload=null);try{let e=this.iframe()?.nativeElement.contentDocument;if(e){let t=`kip-gesture-inject-${this.widgetProperties.uuid}`,i=e.getElementById(t);i&&i.parentNode&&i.parentNode.removeChild(i)}}catch{}try{this.destroyDataStreams()}catch{}}handleIframeGesture=e=>{if(e.data){if(e.data.gesture&&e.data.eventData.instanceId===this.widgetProperties.uuid)switch(e.data.gesture){case"swipeup":this._dashboard.navigateToPreviousDashboard();break;case"swipedown":this._dashboard.navigateToNextDashboard();break;case"swipeleft":{let t=new Event("openLeftSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(t);break}case"swiperight":{let t=new Event("openRightSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(t);break}default:break}if(e.data.type==="keydown"&&e.data.keyEventData.instanceId===this.widgetProperties.uuid){let{key:t,ctrlKey:i,shiftKey:o}=e.data.keyEventData,r=new KeyboardEvent("keydown",{key:t,ctrlKey:i,shiftKey:o,bubbles:!0,cancelable:!0});document.dispatchEvent(r)}}};injectSwipeScript(){let e=this.iframe().nativeElement.contentWindow,t=this.iframe().nativeElement.contentDocument;if(!t||!e){console.error("[WidgetIframe] Iframe contentDocument or contentWindow is undefined. Possible cross-origin issue or iframe not fully loaded.");return}try{let i=`kip-gesture-inject-${this.widgetProperties.uuid}`;if(t.getElementById(i))return;let o=xo({instanceId:this.widgetProperties.uuid}),r=t.createElement("script");r.id=i,r.textContent=o,t.body.appendChild(r)}catch(i){console.warn("[WidgetIframe] Failed to inject swipe script into iframe:",i)}}updateConfig(e){this.widgetUrl=this.resolveUrl(e.widgetUrl)}isValidProtocol(e){try{let t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"}catch(t){return console.warn(`[Embed Widget] Invalid Url: ${e}, Error: ${t}`),!1}}resolveUrl(e){if(!e)return null;try{let t=new URL(e,window.location.origin);return this.isValidProtocol(t.href)?this._sanitizer.bypassSecurityTrustResourceUrl(t.href):null}catch(t){return console.warn(`[Embed Widget] Can't resolve Url: ${e}, Error: ${t}`),null}}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-iframe"]],viewQuery:function(t,i){t&1&&te(i.iframe,hg,5),t&2&&be()},features:[ce],decls:4,vars:5,consts:[["plainIframe",""],[2,"overflow","hidden",3,"configChange","config","id"],["width","100%","height","100%","frameborder","0",1,"widgetIframe",3,"src"],[2,"padding","15px"],[1,"widgetOverlay"]],template:function(t,i){t&1&&(v(0,"widget-host",1),ve("configChange",function(r){return fe(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),De(1,ug,2,1,"iframe",2)(2,mg,7,0,"div",3),G(3,"div",4),_()),t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),Ae(i.widgetUrl?1:2),k(2),we("display",i.displayTransparentOverlay()))},dependencies:[Ce],styles:[".widgetIframe[_ngcontent-%COMP%]{background-color:#fff;border-radius:var(--mat-card-elevated-container-shape, var(--mat-sys-corner-medium))}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent}"]})}return a})();var Do=(()=>{class a{kipTimers={};constructor(){}createTimer(e,t,i){return e in this.kipTimers?this.kipTimers[e].currentValue.asObservable():(this.kipTimers[e]={currentValue:new _i(t),timeoutID:null,intervalMS:i},this.kipTimers[e].currentValue.asObservable())}startTimer(e){Object.prototype.hasOwnProperty.call(this.kipTimers,e)&&this.kipTimers[e].timeoutID===null&&(this.kipTimers[e].timeoutID=setInterval(()=>{this.kipTimers[e].currentValue.next(this.kipTimers[e].currentValue.value+1)},this.kipTimers[e].intervalMS))}stopTimer(e){Object.prototype.hasOwnProperty.call(this.kipTimers,e)&&this.kipTimers[e].timeoutID!==null&&(clearInterval(this.kipTimers[e].timeoutID),this.kipTimers[e].timeoutID=null)}setTimer(e,t){Object.prototype.hasOwnProperty.call(this.kipTimers,e)&&this.kipTimers[e].currentValue.next(t)}deleteTimer(e){Object.prototype.hasOwnProperty.call(this.kipTimers,e)&&(this.stopTimer(e),this.kipTimers[e].currentValue.complete(),delete this.kipTimers[e])}isRunning(e){let t=!1;return e in this.kipTimers&&(t=this.kipTimers[e].timeoutID!==null),t}ngOnDestroy(){Object.keys(this.kipTimers).forEach(e=>{this.kipTimers[e].timeoutID&&(clearInterval(this.kipTimers[e].timeoutID),this.kipTimers[e].timeoutID=null),this.kipTimers[e].currentValue.complete()}),this.kipTimers={}}static \u0275fac=function(t){return new(t||a)};static \u0275prov=st({token:a,factory:a.\u0275fac,providedIn:"root"})}return a})();var pg=["canvasMainRef"];function gg(a,n){if(a&1){let e=Y();v(0,"button",11),I("click",function(){P(e);let i=U();return O(i.startTimer())}),b(1," Start "),_()}}function fg(a,n){if(a&1){let e=Y();v(0,"button",12),I("click",function(){P(e);let i=U();return O(i.pauseTimer())}),b(1," Pause "),_()}}var th=(()=>{class a extends Se{canvas=E(tt);canvasMainRef=ie.required("canvasMainRef");canvasElement;canvasCtx;cssWidth=0;cssHeight=0;maxTextWidth=0;maxTextHeight=0;TimersService=E(Do);dataValue=null;zoneState=null;currentValueLength=0;valueFontSize=1;flashOn=!1;flashInterval=null;timerRunning=!1;timeName="race";warnColor=null;warmContrast=null;textColor=null;timerSub=null;constructor(){super(),this.defaultConfig={timerLength:300,color:"contrast"},ne(()=>{this.theme()&&(this.getColors(this.widgetProperties.config.color),this.drawWidget())})}ngOnInit(){this.validateConfig(),this.subscribeTimer()}ngAfterViewInit(){this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.maxTextWidth=Math.floor(this.cssWidth*.95),this.maxTextHeight=Math.floor(this.cssHeight),this.drawWidget()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.startWidget()}startWidget(){this.getColors(this.widgetProperties.config.color)}updateConfig(e){this.widgetProperties.config=e,this.startWidget(),this.drawWidget()}subscribeTimer(){this.timerRunning=this.TimersService.isRunning(this.timeName),this.timerSub=this.TimersService.createTimer(this.timeName,-3e3,100).subscribe(e=>{this.dataValue=e,e>0?this.zoneState=J.Normal:e>-100?this.zoneState=J.Alarm:e>-300?this.zoneState=J.Warn:this.zoneState=J.Normal,this.zoneState==J.Alarm&&!this.flashInterval?this.flashInterval=setInterval(()=>{this.flashOn=!this.flashOn,this.drawWidget()},500):this.zoneState!=J.Alarm&&(clearInterval(this.flashInterval),this.flashInterval=null),this.drawWidget()})}startTimer(){this.TimersService.startTimer(this.timeName),this.timerRunning=!0}resetTimer(){this.unsubscribeTimer(),this.TimersService.deleteTimer(this.timeName),this.timerRunning=!1,this.subscribeTimer()}pauseTimer(){this.TimersService.stopTimer(this.timeName),this.timerRunning=!1}roundToMin(){let e=this.dataValue;this.dataValue<0&&(e=e*-1);let t=e%600;this.dataValue>0?t>300?this.TimersService.setTimer(this.timeName,this.dataValue+(600-t)):this.TimersService.setTimer(this.timeName,this.dataValue-t):t>300?this.TimersService.setTimer(this.timeName,this.dataValue-(600-t)):this.TimersService.setTimer(this.timeName,this.dataValue+t)}addOneMin(){this.TimersService.setTimer(this.timeName,this.dataValue+600)}remOneMin(){this.TimersService.setTimer(this.timeName,this.dataValue-600)}getColors(e){switch(e){case"contrast":this.textColor=this.theme().contrast,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"blue":this.textColor=this.theme().blue,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"green":this.textColor=this.theme().green,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"pink":this.textColor=this.theme().pink,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"orange":this.textColor=this.theme().orange,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"purple":this.textColor=this.theme().purple,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"grey":this.textColor=this.theme().grey,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"yellow":this.textColor=this.theme().yellow,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;default:this.textColor=this.theme().contrast,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break}}unsubscribeTimer(){this.timerSub?.unsubscribe()}ngOnDestroy(){this.timerSub?.unsubscribe();try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}clearInterval(this.flashInterval),this.flashInterval=null,this.destroyDataStreams()}drawWidget(){if(!this.canvasCtx)return;this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight);let e;if(this.dataValue!=null){let t=Math.abs(this.dataValue),i=Math.floor(t/600),o=Math.floor(t%600/10),r=Math.floor(t%10);e=`${i}:${("0"+o).slice(-2)}.${r}`,this.dataValue<0&&(e=`-${e}`)}else e="--";switch(this.currentValueLength!==e.length&&(this.currentValueLength=e.length,this.valueFontSize=this.canvas.calculateOptimalFontSize(this.canvasCtx,e,this.maxTextWidth,this.maxTextHeight,"bold")),this.zoneState){case J.Alarm:this.flashOn?this.canvasCtx.fillStyle=this.textColor:(this.canvas.drawRectangle(this.canvasCtx,0,0,this.cssWidth,this.cssHeight,this.warnColor),this.canvasCtx.fillStyle=this.textColor);break;case J.Warn:this.canvasCtx.fillStyle=this.warnColor;break;default:this.canvasCtx.fillStyle=this.textColor}this.canvas.drawText(this.canvasCtx,e,this.cssWidth/2,this.cssHeight/2,this.maxTextWidth,this.maxTextHeight,"bold",this.canvasCtx.fillStyle,"center","middle")}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-racetimer"]],viewQuery:function(t,i){t&1&&te(i.canvasMainRef,pg,5),t&2&&be()},features:[ce],decls:16,vars:4,consts:[["canvasMainRef",""],[1,"racetimer-wrapper",3,"configChange","config","id"],[1,"racetimer-canvas"],[1,"timerBarContainer"],[1,"timer-button-groups","timer-adjusters-group"],["mat-flat-button","",1,"timer-adjust-buttons",3,"click"],["mat-flat-button","",1,"timer-reset-button",3,"click"],[1,"timer-button-groups","timer-countdown-group"],["mat-flat-button","",1,"timer-start-button","button-color-red"],["mat-flat-button","",1,"timer-start-button"],["mat-flat-button","",1,"timer-synch-button","button-color-red",3,"click"],["mat-flat-button","",1,"timer-start-button","button-color-red",3,"click"],["mat-flat-button","",1,"timer-start-button",3,"click"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),G(1,"canvas",2,0),v(3,"div",3)(4,"div",4)(5,"button",5),I("click",function(){return P(o),O(i.remOneMin())}),b(6," -1 "),_(),v(7,"button",6),I("click",function(){return P(o),O(i.resetTimer())}),b(8," Reset "),_(),v(9,"button",5),I("click",function(){return P(o),O(i.addOneMin())}),b(10," +1 "),_()(),v(11,"div",7),De(12,gg,2,0,"button",8),De(13,fg,2,0,"button",9),v(14,"button",10),I("click",function(){return P(o),O(i.roundToMin())}),b(15," Synch "),_()()()()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(12),Ae(i.timerRunning?-1:12),k(),Ae(i.timerRunning?13:-1))},dependencies:[Ce,gt],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.racetimer-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.racetimer-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;display:block}.button-color-red[_ngcontent-%COMP%]{--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.timerBarContainer[_ngcontent-%COMP%]{position:absolute;left:0;bottom:8%;height:auto;width:calc(100% - 20px);margin:0 10px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:stretch;align-content:stretch;gap:20px}.timer-button-groups[_ngcontent-%COMP%]{min-width:247px;max-width:100%;--mat-button-filled-container-shape: 5px}.timer-adjusters-group[_ngcontent-%COMP%]{flex-grow:1;flex-shrink:1}.timer-countdown-group[_ngcontent-%COMP%]{flex-grow:3;flex-shrink:3}.timer-synch-button[_ngcontent-%COMP%]{width:calc(50% - 5px);margin-left:5px}.timer-start-button[_ngcontent-%COMP%]{width:calc(50% - 5px);margin-right:5px}.timer-reset-button[_ngcontent-%COMP%]{width:calc(40% + -0px);margin:0 10px}.timer-adjust-buttons[_ngcontent-%COMP%]{width:calc(30% - 10px)}"]})}return a})();var vg=["canvasMainRef"];function yg(a,n){if(a&1&&(v(0,"div",10),re(),v(1,"svg",11)(2,"text",12),b(3),_()()(),et(),v(4,"div",13),re(),v(5,"svg",14)(6,"text",15)(7,"tspan",16),b(8,"\u2691"),_(),b(9),v(10,"tspan",17),b(11,"\u2691"),_()()()(),et(),v(12,"div",18),re(),v(13,"svg",19)(14,"text",12),b(15),_()()()),a&2){let e=U();k(3),He(e.portBiasValue()),k(6),He(e.lineLengthValue()),k(6),He(e.stbBiasValue())}}function bg(a,n){if(a&1){let e=Y();v(0,"button",20),I("click",function(){P(e);let i=U();return O(i.setLineEnd("port"))}),v(1,"mat-icon",6),re(),v(2,"svg",7)(3,"text",21),b(4,"Port End"),_()()()(),et(),v(5,"button",22),I("click",function(){P(e);let i=U();return O(i.setLineEnd("stb"))}),v(6,"mat-icon",6),re(),v(7,"svg",7)(8,"text",21),b(9,"Stbd End"),_()()()()}}function wg(a,n){if(a&1){let e=Y();v(0,"button",23),I("click",function(){P(e);let i=U();return O(i.adjustLineEnd("port",5,0))}),v(1,"mat-icon",6),re(),v(2,"svg",7)(3,"text",24),b(4,"+5m"),_()()()(),et(),v(5,"button",23),I("click",function(){P(e);let i=U();return O(i.adjustLineEnd("port",-5,0))}),v(6,"mat-icon",6),re(),v(7,"svg",7)(8,"text",24),b(9,"-5m"),_()()()(),et(),v(10,"button",25),I("click",function(){P(e);let i=U();return O(i.adjustLineEnd("stb",5,0))}),v(11,"mat-icon",6),re(),v(12,"svg",7)(13,"text",24),b(14,"-5m"),_()()()(),et(),v(15,"button",25),I("click",function(){P(e);let i=U();return O(i.adjustLineEnd("stb",-5,0))}),v(16,"mat-icon",6),re(),v(17,"svg",7)(18,"text",24),b(19,"+5m"),_()()()()}}function _g(a,n){if(a&1){let e=Y();v(0,"button",23),I("click",function(){P(e);let i=U();return O(i.adjustLineEnd("port",0,i.toRadians(1)))}),v(1,"mat-icon",6),re(),v(2,"svg",7)(3,"text",24),b(4,"\u21911\xB0"),_()()()(),et(),v(5,"button",23),I("click",function(){P(e);let i=U();return O(i.adjustLineEnd("port",0,i.toRadians(-1)))}),v(6,"mat-icon",6),re(),v(7,"svg",7)(8,"text",24),b(9,"\u21931\xB0"),_()()()(),et(),v(10,"button",25),I("click",function(){P(e);let i=U();return O(i.adjustLineEnd("stb",0,i.toRadians(1)))}),v(11,"mat-icon",6),re(),v(12,"svg",7)(13,"text",24),b(14,"\u21911\xB0"),_()()()(),et(),v(15,"button",25),I("click",function(){P(e);let i=U();return O(i.adjustLineEnd("stb",0,i.toRadians(-1)))}),v(16,"mat-icon",6),re(),v(17,"svg",7)(18,"text",24),b(19,"\u21931\xB0"),_()()()()}}function Sg(a,n){a&1&&G(0,"div",9)}var ih=(()=>{class a extends Se{signalk=E(Gt);dashboard=E(nt);canvas=E(tt);canvasMainRef=ie.required("canvasMainRef");canvasElement;canvasCtx;cssWidth=0;cssHeight=0;titleBitmap=null;titleBitmapText=null;dtsValue=null;lengthValue=null;biasValue=null;labelColor=K(void 0);valueColor=void 0;dtsColor=void 0;maxValueTextWidth=0;maxValueTextHeight=0;portBiasValue=K("");lineLengthValue=K("");stbBiasValue=K("");infoFontSize="1em";initCompleted=!1;isDestroyed=!1;mode=0;destroyRef=E(oi);constructor(){super(),this.defaultConfig={displayName:"DTS",filterSelfPaths:!0,playBeeps:!0,convertUnitTo:"m",convertUnitToGroup:"Length",numDecimal:0,ignoreZones:!0,color:"contrast",enableTimeout:!1,dataTimeout:5,paths:{dtsPath:{description:"Distance to Start Line",path:"self.navigation.racing.distanceStartline",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!0,pathSkUnitsFilter:"m",sampleTime:500},lineLengthPath:{description:"Length of the start line",path:"self.navigation.racing.startLineLength",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!0,pathSkUnitsFilter:"m",sampleTime:1e3},lineBiasPath:{description:"Bias of the start line to starboard end",path:"self.navigation.racing.stbLineBias",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!0,pathSkUnitsFilter:"m",sampleTime:1e3}}},ne(()=>{if(this.theme()){if(!this.initCompleted)return;Ke(()=>{this.labelColor.set(he(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=he(this.widgetProperties.config.color,this.theme()).color,this.drawWidget()})}})}ngOnInit(){this.validateConfig(),this.labelColor.set(he(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=he(this.widgetProperties.config.color,this.theme()).color}ngAfterViewInit(){this.initCompleted=!0,this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.maxValueTextWidth=Math.floor(this.cssWidth*.95),this.maxValueTextHeight=Math.floor(this.cssHeight*.95),this.drawWidget()}}),!this.isDestroyed&&(this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.maxValueTextWidth=Math.floor(this.cssWidth*.95),this.maxValueTextHeight=Math.floor(this.cssHeight*.95),this.startWidget())}startWidget(){this.widgetProperties.config.paths.dtsPath.convertUnitTo=this.widgetProperties.config.convertUnitTo||"m",this.widgetProperties.config.paths.lineLengthPath.convertUnitTo=this.widgetProperties.config.convertUnitTo||"m",this.widgetProperties.config.paths.lineBiasPath.convertUnitTo=this.widgetProperties.config.convertUnitTo||"m",this.unsubscribeDataStream(),this.dtsValue=null,this.lengthValue=null,this.biasValue=null,this.drawUnit(),this.observeDataStream("dtsPath",e=>{if(this.dtsValue=e.data.value,this.widgetProperties.config.ignoreZones)this.dtsValue?this.dtsValue<0?this.dtsColor=this.theme().zoneAlarm:this.dtsValue<10?this.dtsColor=this.theme().zoneWarn:this.dtsValue<20?this.dtsColor=this.theme().zoneAlert:this.dtsColor=this.valueColor:this.dtsColor=this.valueColor;else switch(e.state){case J.Alarm:this.dtsColor=this.theme().zoneAlarm;break;case J.Warn:this.dtsColor=this.theme().zoneWarn;break;case J.Alert:this.dtsColor=this.theme().zoneAlert;break;default:this.dtsColor=this.valueColor;break}this.drawWidget()}),this.observeDataStream("lineLengthPath",e=>{this.lengthValue=e.data.value,this.drawWidget()}),this.observeDataStream("lineBiasPath",e=>{this.biasValue=e.data.value,this.drawLenBias()}),this.signalk.subscribeRequest().pipe(mt(this.destroyRef)).subscribe(e=>{e.widgetUUID===this.widgetProperties.uuid&&(e.statusCode===200?this.beep(600,20):this.app.sendSnackbarNotification(`Please check the Signalk-racer plugin installation/configuration. Error: ${e.message}`,0,!1))})}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}beep(e=440,t=100){if(this.widgetProperties.config.playBeeps){let i=new(window.AudioContext||window.webkitAudioContext),o=i.createOscillator(),r=i.createGain();o.connect(r),r.connect(i.destination),o.type="sine",o.frequency.value=e,r.gain.value=.1,o.start(),o.stop(i.currentTime+t/1e3)}}drawWidget(){this.canvasCtx&&((!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==this.widgetProperties.config.displayName)&&(this.titleBitmap=this.canvas.createTitleBitmap(this.widgetProperties.config.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=this.widgetProperties.config.displayName),this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.titleBitmap.width>0&&this.titleBitmap.height>0&&this.canvasCtx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight),this.drawDToLine(),this.drawLenBias(),this.drawUnit())}drawDToLine(){let e=this.getValueText();this.canvas.drawText(this.canvasCtx,e,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.3),this.maxValueTextWidth,this.maxValueTextHeight,"bold",this.dtsColor)}getValueText(){return this.dtsValue===null?"--":this.dtsValue.toFixed(this.widgetProperties.config.numDecimal)}drawUnit(){let e=this.widgetProperties.config.paths.dtsPath.convertUnitTo;this.canvas.drawText(this.canvasCtx,e,Math.floor(this.cssWidth-10*this.canvas.scaleFactor),Math.floor(this.cssHeight-7*this.canvas.scaleFactor),Math.floor(this.cssWidth*.25),Math.floor(this.cssHeight*.15),"bold",this.dtsColor,"end","alphabetic")}drawLenBias(){if(this.widgetProperties.config.paths.lineLengthPath.path!==""&&this.lengthValue){let e=this.widgetProperties.config.paths.lineLengthPath.convertUnitTo;e==="feet"&&(e="\u2032"),this.lineLengthValue.set(`\u2015${this.applyDecorations(this.lengthValue.toFixed(this.widgetProperties.config.numDecimal))}${e}\u2015`)}if(this.widgetProperties.config.paths.lineBiasPath.path!==""&&this.biasValue){let e=this.widgetProperties.config.paths.lineBiasPath.convertUnitTo;e==="feet"&&(e="\u2032"),this.biasValue<0?(this.portBiasValue.set("+"+(-this.biasValue).toFixed(this.widgetProperties.config.numDecimal)+e),this.stbBiasValue.set(this.biasValue.toFixed(this.widgetProperties.config.numDecimal)+e)):(this.portBiasValue.set(" "+(-this.biasValue).toFixed(this.widgetProperties.config.numDecimal)+e),this.stbBiasValue.set(" +"+this.biasValue.toFixed(this.widgetProperties.config.numDecimal)+e))}}applyDecorations(e){switch(this.widgetProperties.config.paths.dtsPath.convertUnitTo){case"percent":case"percentraw":e+="%";break;default:break}return e}toggleMode(){this.mode=(this.mode+1)%4,this.drawWidget()}setLineEnd(e){return this.signalk.putRequest("navigation.racing.setStartLine",{end:e,position:"bow"},this.widgetProperties.uuid)}adjustLineEnd(e,t,i){return this.signalk.putRequest("navigation.racing.setStartLine",{end:e,delta:t,rotate:i||null},this.widgetProperties.uuid)}toRadians(e){return e?e*(Math.PI/180):null}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams(),this.canvas.releaseCanvas(this.canvasElement,{clear:!0,removeFromDom:!0})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-racer-line"]],viewQuery:function(t,i){t&1&&te(i.canvasMainRef,vg,5),t&2&&be()},features:[ce],decls:15,vars:4,consts:[["canvasMainRef",""],[1,"line-wrapper",3,"configChange","config","id"],[1,"filler"],[1,"line-canvas"],[1,"buttons-container"],["mat-flat-button","",1,"button","select-button",3,"click"],[1,"buttons-svg-icon"],["width","100%","height","100%","viewBox","0 0 100 14","preserveAspectRatio","xMidYMid meet",1,"svg-content"],[0,"xml","space","preserve","x","50","y","9"],[1,"widgetOverlay"],[1,"pin-container"],["width","100%","height","100%","viewBox","0 0 70 18","preserveAspectRatio","xMidYMid meet",1,"svg-content","pin"],[0,"xml","space","preserve","x","33","y","14"],[1,"len-bias-container"],["width","100%","height","100%","viewBox","0 0 90 12","preserveAspectRatio","xMidYMid meet",1,"svg-content","len-bias"],[0,"xml","space","preserve","x","45","y","9"],[1,"pin"],[1,"boat"],[1,"boat-container"],["width","100%","height","100%","viewBox","0 0 70 18","preserveAspectRatio","xMidYMid meet",1,"svg-content","boat"],["mat-flat-button","",1,"button","port-button",3,"click"],[0,"xml","space","preserve","x","50","y","11"],["mat-flat-button","",1,"button","starboard-button",3,"click"],["mat-flat-button","",1,"button","port-small-button",3,"click"],[0,"xml","space","preserve","x","50","y","12"],["mat-flat-button","",1,"button","starboard-small-button",3,"click"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),v(1,"div",2),G(2,"canvas",3,0),_(),v(4,"div",4)(5,"button",5),I("click",function(){return P(o),O(i.toggleMode())}),v(6,"mat-icon",6),re(),v(7,"svg",7)(8,"text",8),b(9,"\u22EE"),_()()()(),De(10,yg,16,3)(11,bg,10,0)(12,wg,20,0)(13,_g,20,0),_(),De(14,Sg,1,0,"div",9),_()}if(t&2){let o;ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(10),Ae((o=i.mode)===0?10:o===1?11:o===2?12:o===3?13:-1),k(4),Ae(i.dashboard.isDashboardStatic()?-1:14)}},dependencies:[Ce,it,ft,gt,pt,bt],styles:["[_nghost-%COMP%]{overflow:clip;display:block;height:100%;width:100%}.line-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.line-canvas[_ngcontent-%COMP%]{position:absolute;width:100%!important;height:76%!important;display:block;top:0;left:0}.filler[_ngcontent-%COMP%]{width:100%;height:76%}.buttons-container[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;justify-content:space-between;column-gap:2%;position:relative;height:24%;width:100%;padding:0 10px 14px;z-index:20;pointer-events:auto;align-items:center}.button[_ngcontent-%COMP%]{min-width:0px;width:100%;border-radius:12px;align-items:center;justify-content:center;cursor:pointer;--mat-button-filled-container-height: 100%;--mat-button-filled-horizontal-padding: 0px;--mat-button-filled-icon-spacing: 0px}.select-button[_ngcontent-%COMP%]{flex:none;width:18%;--mat-button-filled-container-color: var(--kip-blue-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.port-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.starboard-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-starboard-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.port-small-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.starboard-small-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-starboard-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.buttons-svg-icon[_ngcontent-%COMP%]{width:100%;height:100%;margin:0;padding:0}.svg-content[_ngcontent-%COMP%]{width:100%;height:100%;padding:0;margin:0}.svg-content[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-family:Roboto;font-size:15px;font-weight:700;text-align:center;text-anchor:middle;font-style:normal;font-variant:normal;font-stretch:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke:none}.pin-container[_ngcontent-%COMP%]{flex-basis:18%}.pin[_ngcontent-%COMP%]{fill:var(--kip-port-color)}.pin[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-size:19px}.len-bias-container[_ngcontent-%COMP%]{flex-basis:35%}.len-bias[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.len-bias[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-size:12px}.boat-container[_ngcontent-%COMP%]{flex-basis:18%}.boat[_ngcontent-%COMP%]{fill:var(--kip-starboard-color)}.boat[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-size:19px}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent;z-index:21}"]})}return a})();var Cg=["canvasMainRef"];function kg(a,n){if(a&1&&(v(0,"div",9),re(),v(1,"svg",12)(2,"text",13),b(3),_()()()),a&2){let e=U();k(3),rt("Start at: ",e.startAtTime())}}function xg(a,n){if(a&1){let e=Y();v(0,"button",14),I("click",function(){P(e);let i=U();return O(i.sendStartTimerCommand("start"))}),v(1,"mat-icon",6),re(),v(2,"svg",7)(3,"text",15),b(4,"Start"),_()()()(),et(),v(5,"button",16),I("click",function(){P(e);let i=U();return O(i.adjustStartTime(-60))}),v(6,"mat-icon",6),re(),v(7,"svg",7)(8,"text",15),b(9,"-1m"),_()()()(),et(),v(10,"button",16),I("click",function(){P(e);let i=U();return O(i.adjustStartTime(60))}),v(11,"mat-icon",6),re(),v(12,"svg",7)(13,"text",15),b(14,"+1m"),_()()()()}}function Tg(a,n){if(a&1){let e=Y();v(0,"button",14),I("click",function(){P(e);let i=U();return O(i.sendStartTimerCommand("sync"))}),v(1,"mat-icon",6),re(),v(2,"svg",7)(3,"text",15),b(4,"Sync"),_()()()(),et(),v(5,"button",17),I("click",function(){P(e);let i=U();return O(i.sendStartTimerCommand("reset"))}),v(6,"mat-icon",6),re(),v(7,"svg",7)(8,"text",15),b(9,"Reset"),_()()()()}}function Eg(a,n){if(a&1){let e=Y();v(0,"button",18),I("click",function(){P(e);let i=U();return O(i.adjustStartTime(-60))}),v(1,"mat-icon",6),re(),v(2,"svg",7)(3,"text",15),b(4,"-1m"),_()()()(),et(),v(5,"button",16),I("click",function(){P(e);let i=U();return O(i.adjustStartTime(-1))}),v(6,"mat-icon",6),re(),v(7,"svg",7)(8,"text",15),b(9,"-1s"),_()()()(),et(),v(10,"button",16),I("click",function(){P(e);let i=U();return O(i.adjustStartTime(1))}),v(11,"mat-icon",6),re(),v(12,"svg",7)(13,"text",15),b(14,"+1s"),_()()()(),et(),v(15,"button",18),I("click",function(){P(e);let i=U();return O(i.adjustStartTime(60))}),v(16,"mat-icon",6),re(),v(17,"svg",7)(18,"text",15),b(19,"+1m"),_()()()()}}function Mg(a,n){if(a&1){let e=Y();v(0,"input",19),ve("ngModelChange",function(i){P(e);let o=U();return fe(o.startAtTimeEdit,i)||(o.startAtTimeEdit=i),O(i)}),I("change",function(){P(e);let i=U();return O(i.setStartTime())}),_()}if(a&2){let e=U();ge("ngModel",e.startAtTimeEdit)}}function Dg(a,n){a&1&&G(0,"div",11)}var nh=(()=>{class a extends Se{signalk=E(Gt);router=E(ci);dashboard=E(nt);canvas=E(tt);canvasMainRef=ie.required("canvasMainRef");canvasElement;canvasCtx;cssWidth=0;cssHeight=0;titleBitmap=null;titleBitmapText=null;ttsValue=null;dtsValue=null;labelColor=K(void 0);valueColor=void 0;valueStateColor=void 0;maxValueTextWidth=0;maxValueTextHeight=0;flashInterval=null;isDestroyed=!1;mode=K(1);destroyRef=E(oi);startAtTime=K("00:00:00");startAtTimeEdit=ji("");constructor(){super(),this.defaultConfig={displayName:"TTS",nextDashboard:0,playBeeps:!0,filterSelfPaths:!0,paths:{ttsPath:{description:"Time to the Start in seconds",path:"self.navigation.racing.timeToStart",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"s",showConvertUnitTo:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"s",sampleTime:500},startTimePath:{description:"Time of the start",path:"self.navigation.racing.startTime",source:"default",pathType:"Date",pathRequired:!1,isPathConfigurable:!1,sampleTime:500},dtsPath:{description:"Distance to Start Line path, used to determine OCS",path:"self.navigation.racing.distanceStartline",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m",sampleTime:500}},color:"contrast",enableTimeout:!1,dataTimeout:5,ignoreZones:!0},ne(()=>{this.theme()&&Ke(()=>{this.labelColor.set(he(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=he(this.widgetProperties.config.color,this.theme()).color,this.drawWidget()})})}ngOnInit(){this.validateConfig()}ngAfterViewInit(){this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.maxValueTextWidth=Math.floor(this.cssWidth*.95),this.maxValueTextHeight=Math.floor(this.cssHeight*.95),this.drawWidget()}}),!this.isDestroyed&&(this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.maxValueTextWidth=Math.floor(this.cssWidth*.95),this.maxValueTextHeight=Math.floor(this.cssHeight*.95),this.startWidget(),this.drawWidget())}beep(e=440,t=100){if(this.widgetProperties.config.playBeeps){let i=new(window.AudioContext||window.webkitAudioContext),o=i.createOscillator(),r=i.createGain();o.connect(r),r.connect(i.destination),o.type="sine",o.frequency.value=e,r.gain.value=.1,o.start(),o.stop(i.currentTime+t/1e3)}}startWidget(){this.unsubscribeDataStream(),this.ttsValue=null,this.dtsValue=null,this.labelColor.set(he(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=he(this.widgetProperties.config.color,this.theme()).color,this.observeDataStream("ttsPath",e=>{let t=this.ttsValue;if(this.ttsValue=e.data.value,this.widgetProperties.config.ignoreZones)this.ttsValue?this.ttsValue===0?this.valueStateColor=this.valueColor:this.ttsValue<10?this.valueStateColor=this.dtsValue<0?this.theme().zoneAlarm:this.theme().zoneWarn:this.ttsValue<60?this.valueStateColor=this.theme().zoneAlert:this.valueStateColor=this.valueColor:this.valueStateColor=this.valueColor;else switch(e.state){case J.Alarm:this.valueStateColor=this.theme().zoneAlarm;break;case J.Warn:this.valueStateColor=this.theme().zoneWarn;break;case J.Alert:this.valueStateColor=this.theme().zoneAlert;break;default:this.valueStateColor=this.valueColor;break}this.ttsValue===0?(this.mode.set(2),this.dtsValue<0&&(this.valueStateColor=this.theme().zoneAlarm)):this.mode()===1&&this.isStartTimerRunning()&&this.mode.set(2),this.drawWidget(),this.startAtTime()!==null&&this.startAtTime()!=="HH:MM:SS"&&t!==0&&(this.ttsValue===0?this.beep(500,1e3):this.ttsValue<10?this.beep(450,100):this.ttsValue<60&&this.ttsValue%10===0?this.beep(400,150):this.ttsValue%60===0&&this.beep(350,200)),this.widgetProperties.config.nextDashboard>=0&&t===1&&this.ttsValue===0&&(!this.dtsValue||this.dtsValue>=0)&&this.router.navigate(["/dashboard",this.widgetProperties.config.nextDashboard])}),this.observeDataStream("startTimePath",e=>{if(!e.data.value)this.startAtTime.set("HH:MM:SS"),this.startAtTimeEdit.set("HH:MM:SS"),this.mode()===2&&this.mode.set(1);else{let t=new Date(e.data.value);this.startAtTimeEdit.set(t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})),this.startAtTime.set(this.startAtTimeEdit())}this.drawWidget()}),this.observeDataStream("dtsPath",e=>{this.dtsValue=e.data.value}),this.signalk.subscribeRequest().pipe(mt(this.destroyRef)).subscribe(e=>{e.widgetUUID===this.widgetProperties.uuid&&(e.statusCode===200?this.beep(600,20):this.app.sendSnackbarNotification(`Please check the Signalk-racer plugin installation/configuration. Error: ${e.message}`,0,!1))})}isStartTimerRunning(){return this.ttsValue>0&&this.startAtTime()!==null&&this.startAtTime()!=="HH:MM:SS"}updateConfig(e){this.widgetProperties.config=e,this.startWidget(),this.drawWidget()}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams(),this.flashInterval&&(clearInterval(this.flashInterval),this.flashInterval=null);try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}drawWidget(){if(!this.canvasCtx)return;(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==this.widgetProperties.config.displayName)&&(this.titleBitmap=this.canvas.createTitleBitmap(this.widgetProperties.config.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=this.widgetProperties.config.displayName),this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.titleBitmap.width>0&&this.titleBitmap.height>0&&this.canvasCtx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight);let e=this.getValueText();this.canvas.drawText(this.canvasCtx,e,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.3),this.maxValueTextWidth,this.maxValueTextHeight,"bold",this.valueStateColor)}getValueText(){if(this.ttsValue===null)return"--";let e=this.ttsValue,t=Math.floor(e/60);if(t>=60){let i=Math.floor(t/60),o=Math.floor(t%60),r=Math.floor(e%60);return`${i.toString()}:${o.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}else{let i=Math.floor(t%60),o=Math.floor(e%60);return`${i.toString().padStart(1,"0")}:${o.toString().padStart(2,"0")}`}}toggleMode(){switch(this.mode.update(e=>(e+1)%5),this.mode()){case 1:this.isStartTimerRunning()&&this.mode.set(2);break;case 2:this.ttsValue!==0&&!this.isStartTimerRunning()&&this.mode.set(3);break;default:}this.drawWidget()}sendStartTimerCommand(e){let t=this.signalk.putRequest("navigation.racing.setStartTime",{command:e},this.widgetProperties.uuid);switch(e){case"start":this.mode.set(0);break;case"reset":this.startAtTime.set("HH:MM:SS"),this.mode.set(1);break;default:}return t}adjustStartTime(e){return this.signalk.putRequest("navigation.racing.setStartTime",{command:"adjust",delta:e},this.widgetProperties.uuid)}setStartTime(){let e=new Date,t=this.startAtTimeEdit().split(":").map(Number),i=t[0],o=t[1],r=t.length>=3?t[2]:0,l=new Date(e);l.setHours(i,o,r,0),l<=e&&l.setDate(l.getDate()+1),this.mode.set(0),this.signalk.putRequest("navigation.racing.setStartTime",{command:"set",startTime:l.toISOString()},this.widgetProperties.uuid)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-racer-timer"]],viewQuery:function(t,i){t&1&&te(i.canvasMainRef,Cg,5),t&2&&be()},inputs:{startAtTimeEdit:[1,"startAtTimeEdit"]},outputs:{startAtTimeEdit:"startAtTimeEditChange"},features:[ce],decls:16,vars:4,consts:[["canvasMainRef",""],[1,"timer-wrapper",3,"configChange","config","id"],[1,"filler"],[1,"timer-canvas"],[1,"buttons-container"],["mat-flat-button","",1,"button","select-button",3,"click"],[1,"buttons-svg-icon"],["width","100%","height","100%","viewBox","0 0 100 14","preserveAspectRatio","xMidYMid meet",1,"svg-content"],[0,"xml","space","preserve","x","50","y","9"],[1,"start-at"],["matInput","","type","time","step","1",1,"set-start-at",3,"ngModel"],[1,"widgetOverlay"],["width","100%","height","100%","viewBox","0 0 90 12","preserveAspectRatio","xMidYMid meet",1,"svg-content","svg-start-at"],[0,"xml","space","preserve","x","45","y","10"],["mat-flat-button","",1,"button","main-button",3,"click"],[0,"xml","space","preserve","x","50","y","11"],["mat-flat-button","",1,"button","other-small-button",3,"click"],["mat-flat-button","",1,"button","other-button",3,"click"],["mat-flat-button","",1,"button","main-small-button",3,"click"],["matInput","","type","time","step","1",1,"set-start-at",3,"ngModelChange","change","ngModel"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),v(1,"div",2),G(2,"canvas",3,0),_(),v(4,"div",4)(5,"button",5),I("click",function(){return P(o),O(i.toggleMode())}),v(6,"mat-icon",6),re(),v(7,"svg",7)(8,"text",8),b(9,"\u22EE"),_()()()(),De(10,kg,4,1,"div",9)(11,xg,15,0)(12,Tg,10,0)(13,Eg,20,0)(14,Mg,1,1,"input",10),_(),De(15,Dg,1,0,"div",11),_()}if(t&2){let o;ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(10),Ae((o=i.mode())===0?10:o===1?11:o===2?12:o===3?13:o===4?14:-1),k(5),Ae(i.dashboard.isDashboardStatic()?-1:15)}},dependencies:[Ce,it,ft,gt,pt,bt,Xl,Yl,Kl,Ql],styles:["[_nghost-%COMP%]{overflow:clip;display:block;height:100%;width:100%}.timer-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.timer-canvas[_ngcontent-%COMP%]{width:100%!important;height:76%!important;display:block}.filler[_ngcontent-%COMP%]{width:100%;height:76%}.buttons-container[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;justify-content:space-between;column-gap:2%;position:relative;height:24%;width:100%;padding:0 10px 14px;z-index:20;pointer-events:auto;align-items:center}.button[_ngcontent-%COMP%]{min-width:0px;width:100%;border-radius:12px;align-items:center;justify-content:center;cursor:pointer;--mat-button-filled-container-height: 100%;--mat-button-filled-horizontal-padding: 0px;--mat-button-filled-icon-spacing: 0px}.select-button[_ngcontent-%COMP%]{flex:none;width:18%;--mat-button-filled-container-color: var(--kip-blue-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.main-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.other-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-blue-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.main-small-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.other-small-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-blue-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.set-start-at[_ngcontent-%COMP%]{flex:1 1 auto;background-color:var(--kip-contrast-color)}.start-at[_ngcontent-%COMP%]{height:100%;width:100%;flex:1 1 auto}.start-at[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.start-at[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-family:Roboto;font-size:9px;font-weight:400;text-align:center;text-anchor:middle;font-style:normal;font-variant:normal;font-stretch:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke:none}.buttons-svg-icon[_ngcontent-%COMP%]{width:100%;height:100%;margin:0;padding:0}.svg-content[_ngcontent-%COMP%]{width:100%;height:100%;padding:0;margin:0}.svg-content[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-family:Roboto;font-size:15px;font-weight:700;text-align:center;text-anchor:middle;font-style:normal;font-variant:normal;font-stretch:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke:none}.svg-start-at[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{fill:var(--kip-contrast-dim-color)}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent;z-index:21}"]})}return a})();var Ag=["gaugeBarAnimate"];function Pg(a,n){if(a&1&&(re(),Q(0,"rect",14)),a&2){let e=n.$implicit,t=U();ae("fill",e.color)("x",5+(e.from-t.gaugeMinValue())*t.scaleSliceValue())("width",(e.to-e.from)*t.scaleSliceValue())}}var ah=(()=>{class a{gaugeBarAnimate=ie("gaugeBarAnimate");displayName=B.required();displayNameColor=B.required();dataValue=B.required();dataValueLabel=B.required();unitLabel=B.required();barColor=B.required();barColorGradient=B.required();barColorBackground=B.required();gaugeMinValue=B.required();gaugeMaxValue=B.required();highlights=B.required();scaleSliceValue=ct(()=>{let e=this.gaugeMaxValue()-this.gaugeMinValue();return e!==0?195/e:0});newGaugeValue=K(null);oldGaugeValue=K(null);scheduleRafId=null;constructor(){ne(()=>{let e=this.gaugeMinValue(),t=this.dataValue();t===null&&(t=e),Ke(()=>{this.oldGaugeValue.set(this.newGaugeValue()!==null?this.newGaugeValue():e),this.newGaugeValue.set(this.dataValue()!==null?(t-e)*this.scaleSliceValue():e),this.gaugeBarAnimate()?.nativeElement&&(this.scheduleRafId!==null&&cancelAnimationFrame(this.scheduleRafId),this.scheduleRafId=requestAnimationFrame(()=>{let i=this.gaugeBarAnimate();i?.nativeElement&&i.nativeElement.beginElement(),this.scheduleRafId=null}))})})}ngOnDestroy(){this.scheduleRafId!==null&&(cancelAnimationFrame(this.scheduleRafId),this.scheduleRafId=null)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["svg-simple-linear-gauge"]],viewQuery:function(t,i){t&1&&te(i.gaugeBarAnimate,Ag,5),t&2&&be()},inputs:{displayName:[1,"displayName"],displayNameColor:[1,"displayNameColor"],dataValue:[1,"dataValue"],dataValueLabel:[1,"dataValueLabel"],unitLabel:[1,"unitLabel"],barColor:[1,"barColor"],barColorGradient:[1,"barColorGradient"],barColorBackground:[1,"barColorBackground"],gaugeMinValue:[1,"gaugeMinValue"],gaugeMaxValue:[1,"gaugeMaxValue"],highlights:[1,"highlights"]},decls:26,vars:11,consts:[["gaugeBarAnimate",""],["viewBox","0 0 205 50","preserveAspectRatio","xMidYMid","version","1.1","id","svg8",1,"svg-simple-linear"],["id","defs2"],["id","gaugeBarGradient"],["id","stop849","offset","0",2,"stop-opacity","1"],["id","stop851","offset","0.40",2,"stop-opacity","0"],["id","linearGradient855","gradientTransform","translate(5,-30)","gradientUnits","userSpaceOnUse","y2","34.5","x2","-5","y1","34.5","x1","-6","href","#gaugeBarGradient"],["id","layer1",2,"display","inline"],["id","GaugeBackground","width","195","height","9","x","5","y","30","ry","0",2,"opacity","1","fill-opacity","1","stroke","none","stroke-width","0.265899","stroke-miterlimit","4","stroke-dasharray","none","stroke-opacity","1"],["id","gaugeBar"],["id","gaugeValue","width","1","height","9","x","0","y","0","ry","0",2,"mix-blend-mode","normal","fill-opacity","1","stroke","none"],["id","gaugeValueGradient","transform","scale(-1,1)","width","1","height","9","x","-1","y","0","ry","0",2,"display","inline","opacity","1","mix-blend-mode","multiply","fill","url(#linearGradient855)","stroke","none"],[0,"xlink","href","#gaugeBar","transform","translate(5,30)"],["attributeName","transform","type","scale","begin","indefinite","dur","0.5s","additive","sum","fill","freeze"],["y","39.5","height","0.75","ry","0",2,"opacity","1","fill-opacity","1","stroke","none","stroke-width","0.265899","stroke-miterlimit","4","stroke-dasharray","none","stroke-opacity","1"],["id","layer2",2,"display","inline"],[0,"xml","space","preserve","x","4.1731763","y","25.413595","id","displayNameText",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","12.7px","line-height","1.25","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","letter-spacing","0px","word-spacing","0px"],["id","tspan1945","x","4.1731763","y","25.413595",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","12.7px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal"],["text-anchor","end","id","gaugeTexts","y","25.293016","x","200.37138",0,"xml","space","preserve",1,"simpleLinear-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","22.5778px","line-height","1.25","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","letter-spacing","0px","word-spacing","0px"],["y","25.293016","x","200.37138","id","valueText",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","22.5778px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal"],["dy","-9","id","unitText",2,"text-transform","capitalize","font-size","9.87778px"]],template:function(t,i){t&1&&(re(),A(0,"svg",1)(1,"defs",2)(2,"linearGradient",3),Q(3,"stop",4)(4,"stop",5),W(),Q(5,"linearGradient",6),W(),A(6,"g",7),Q(7,"rect",8),A(8,"defs")(9,"g",9),Q(10,"rect",10)(11,"rect",11),W()(),A(12,"use",12),Q(13,"animateTransform",13,0),W(),Bt(15,Pg,1,3,":svg:rect",14,Si),W(),A(17,"g",15)(18,"text",16)(19,"tspan",17),b(20),W()(),A(21,"text",18)(22,"tspan",19),b(23),W(),A(24,"tspan",20),b(25),W()()()()),t&2&&(k(3),ae("stop-color",i.barColorGradient()),k(),ae("stop-color",i.barColorGradient()),k(3),ae("fill",i.barColorBackground()),k(5),we("fill",i.barColor()),k(),ae("from",i.oldGaugeValue()+" 1")("to",i.newGaugeValue()+" 1"),k(2),zt(i.highlights()),k(4),ae("fill",i.displayNameColor()),k(),rt(" ",i.displayName()),k(3),He(i.dataValueLabel()),k(2),He(i.unitLabel()))},styles:["svg[_ngcontent-%COMP%]{position:absolute;height:100%;width:100%;left:0;top:0}.simpleLinear-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}"]})}return a})();var oh=(()=>{class a extends Se{_units=E(hi);unitsLabel=K("");dataLabelValue=K("0");dataValue=K(null);barColor=K("");barColorGradient=K("");barColorBackground=K("");highlights=K([],{equal:Nt});zonesSub;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:"V",convertUnitTo:"V",sampleTime:500}},displayScale:{lower:0,upper:15,type:"linear"},gauge:{type:"simpleLinear",unitLabelFormat:"full"},numInt:1,numDecimal:2,ignoreZones:!1,color:"contrast",enableTimeout:!1,dataTimeout:5},ne(()=>{this.theme()&&(this.updateGaugeSettings(),this.startWidget())})}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.zonesSub?.unsubscribe(),this.widgetProperties.config.gauge.unitLabelFormat=="abr"?this.unitsLabel.set(this.widgetProperties.config.paths.gaugePath.convertUnitTo.substr(0,1)):this.unitsLabel.set(this.widgetProperties.config.paths.gaugePath.convertUnitTo),this.observeDataStream("gaugePath",e=>{if(e.data.value==null?(this.dataValue.set(this.widgetProperties.config.displayScale.lower),this.dataLabelValue.set("--")):(this.dataValue.set(Math.min(Math.max(e.data.value,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper)),this.dataLabelValue.set(this.dataValue().toFixed(this.widgetProperties.config.numDecimal))),!this.widgetProperties.config.ignoreZones)switch(e.state){case J.Alarm:this.barColor.set(this.theme().zoneAlarm);break;case J.Warn:this.barColor.set(this.theme().zoneWarn);break;case J.Alert:this.barColor.set(this.theme().zoneAlert);break;case J.Nominal:this.barColor.set(this.theme().zoneNominal);break;default:this.barColor.set(he(this.widgetProperties.config.color,this.theme()).color)}}),this.widgetProperties.config.ignoreZones?this.highlights.set([]):(this.observeMetaStream(),this.zonesSub=this.zones$.subscribe(e=>{e&&e.length>0?this.highlights.set(Yn(e,this.theme(),this.widgetProperties.config.paths.gaugePath.convertUnitTo,this._units,this.widgetProperties.config.displayScale.lower,this.widgetProperties.config.displayScale.upper)):this.highlights.set([])}))}updateConfig(e){this.widgetProperties.config=e,this.updateGaugeSettings(),this.startWidget()}updateGaugeSettings(){switch(this.barColorBackground.set(this.theme().background),this.widgetProperties.config.color){case"contrast":this.barColor.set(this.theme().contrast),this.barColorGradient.set(this.theme().contrastDimmer);break;case"blue":this.barColor.set(this.theme().blue),this.barColorGradient.set(this.theme().blueDimmer);break;case"green":this.barColor.set(this.theme().green),this.barColorGradient.set(this.theme().greenDimmer);break;case"pink":this.barColor.set(this.theme().pink),this.barColorGradient.set(this.theme().pinkDimmer);break;case"orange":this.barColor.set(this.theme().orange),this.barColorGradient.set(this.theme().orangeDimmer);break;case"purple":this.barColor.set(this.theme().purple),this.barColorGradient.set(this.theme().purpleDimmer);break;case"grey":this.barColor.set(this.theme().grey),this.barColorGradient.set(this.theme().greyDimmer);break;case"yellow":this.barColor.set(this.theme().yellow),this.barColorGradient.set(this.theme().yellowDimmer);break;default:this.barColor.set(this.theme().contrast),this.barColorGradient.set(this.theme().contrastDimmer)}}ngOnDestroy(){this.destroyDataStreams(),this.unsubscribeMetaStream(),this.zonesSub?.unsubscribe()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-simple-linear"]],features:[ce],decls:2,vars:13,consts:[[3,"configChange","config","id"],[1,"simpleLinearGaugeContainer",3,"displayName","displayNameColor","unitLabel","dataValue","dataValueLabel","barColor","barColorGradient","barColorBackground","gaugeMaxValue","gaugeMinValue","highlights"]],template:function(t,i){t&1&&(v(0,"widget-host",0),ve("configChange",function(r){return fe(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),G(1,"svg-simple-linear-gauge",1),_()),t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),z("displayName",i.widgetProperties.config.displayName)("displayNameColor",i.theme().contrastDim)("unitLabel",i.unitsLabel())("dataValue",i.dataValue())("dataValueLabel",i.dataLabelValue())("barColor",i.barColor())("barColorGradient",i.barColorGradient())("barColorBackground",i.barColorBackground())("gaugeMaxValue",i.widgetProperties.config.displayScale.upper)("gaugeMinValue",i.widgetProperties.config.displayScale.lower)("highlights",i.highlights()))},dependencies:[Ce,ah],styles:[".simpleLinearGaugeContainer[_ngcontent-%COMP%]{display:block;position:relative;height:100%;width:100%;padding:0}"]})}return a})();function Og(a,n){if(a&1){let e=Y();v(0,"h3"),b(1,"Getting Started"),_(),v(2,"p"),b(3,"Welcome to KIP! Here are some basic gestures to help you navigate the application:"),_(),v(4,"table",2)(5,"thead")(6,"tr")(7,"th"),b(8,"Actions"),_(),v(9,"th"),b(10,"Touch"),_(),v(11,"th"),b(12,"Mouse"),_(),v(13,"th"),b(14,"Keyboard Shortcuts"),_()()(),v(15,"tbody")(16,"tr")(17,"td"),b(18,"Open Actions menu"),_(),v(19,"td"),b(20,"Swipe left"),_(),v(21,"td"),b(22,"Click, drag left, and release"),_(),v(23,"td")(24,"kbd"),b(25,"Shift"),_(),b(26," + "),v(27,"kbd"),b(28,"Ctrl"),_(),b(29," + "),v(30,"kbd",3),b(31,"\u2190"),_(),b(32," (Left Arrow)"),_()(),v(33,"tr")(34,"td"),b(35,"Open Notification menu"),_(),v(36,"td"),b(37,"Swipe right"),_(),v(38,"td"),b(39,"Click, drag right, and release"),_(),v(40,"td")(41,"kbd"),b(42,"Shift"),_(),b(43," + "),v(44,"kbd"),b(45,"Ctrl"),_(),b(46," + "),v(47,"kbd",3),b(48,"\u2192"),_(),b(49," (Right Arrow)"),_()(),v(50,"tr")(51,"td"),b(52,"Cycle through dashboards"),_(),v(53,"td"),b(54,"Swipe up/down"),_(),v(55,"td"),b(56,"Click, drag up/down, and release"),_(),v(57,"td")(58,"kbd"),b(59,"Shift"),_(),b(60," + "),v(61,"kbd"),b(62,"Ctrl"),_(),b(63," + "),v(64,"kbd",3),b(65,"\u2191"),_(),b(66,"/"),v(67,"kbd",3),b(68,"\u2193"),_(),b(69," (Up/Down Arrow)"),_()(),v(70,"tr")(71,"td"),b(72,"Toggle Fullscreen"),_(),v(73,"td"),b(74,"N/A"),_(),v(75,"td"),b(76,"N/A"),_(),v(77,"td")(78,"kbd"),b(79,"Shift"),_(),b(80," + "),v(81,"kbd"),b(82,"Ctrl"),_(),b(83," + "),v(84,"kbd"),b(85,"F"),_()()(),v(86,"tr")(87,"td"),b(88,"Toggle Night mode"),_(),v(89,"td"),b(90,"N/A"),_(),v(91,"td"),b(92,"N/A"),_(),v(93,"td")(94,"kbd"),b(95,"Shift"),_(),b(96," + "),v(97,"kbd"),b(98,"Ctrl"),_(),b(99," + "),v(100,"kbd"),b(101,"N"),_()()(),v(102,"tr")(103,"td"),b(104,"Toggle dashboard edit mode"),_(),v(105,"td"),b(106,"N/A"),_(),v(107,"td"),b(108,"N/A"),_(),v(109,"td")(110,"kbd"),b(111,"Shift"),_(),b(112," + "),v(113,"kbd"),b(114,"Ctrl"),_(),b(115," + "),v(116,"kbd"),b(117,"E"),_()()()()(),v(118,"i"),b(119,"Note that the words Touch and Tap are synonymous with mouse click."),_(),G(120,"br")(121,"br"),v(122,"h3"),b(123,"Log in to Signal K"),_(),v(124,"p"),b(125," The first step is to configure Signal K server authentication ("),v(126,"i"),b(127,"a pre-existing Signal K server username and password is required"),_(),b(128,"). Use the table above to find the gesture, mouse or keyboard shortcut to open the Actions menu, then select "),v(129,"strong"),b(130,"Settings"),_(),b(131,". Toggle "),v(132,"strong"),b(133,"Login to server"),_(),b(134," and enter your Signal K credentials. "),_(),v(135,"ul")(136,"li")(137,"strong"),b(138,"Why log in?"),_(),b(139," Logging in allows KIP to do two things: 1) to send commands to Signal K and 2) to save its configuration on the server so it can be shared between multiple devices. It is the recommended method to use KIP. "),_(),v(140,"li"),b(141," If you don\u2019t have a Signal K account, ask your Signal K administrator, access the Signal K Admin Settings / Users page and create a user or check your server\u2019s documentation for setup instructions. "),_(),v(142,"li"),b(143," After entering your credentials, select "),v(144,"strong"),b(145,"Login"),_(),b(146," or "),v(147,"strong"),b(148,"Connect"),_(),b(149,". If successful, your connection status will update and live data will appear in KIP. "),_(),v(150,"li"),b(151," If you see an error, double-check your username and password, and make sure your device is on the same network as your Signal K server. "),_()(),v(152,"h3"),b(153,"Option 1: Load Demonstration Dashboards"),_(),v(154,"p"),b(155," Try the sample dashboards using data from your server: "),G(156,"br"),v(157,"button",4),I("click",function(){P(e);let i=U();return O(i.loadDemoConfig())}),b(158,"Load Demo"),_()(),v(159,"h3"),b(160,"Option 2: Create Your Own Layout"),_(),v(161,"p"),b(162,' The text you are reading is actually a full screen widget in a dashboard. Dashboards are "Locked" by default to prevent accidental modifications. To edit a dashboard, swipe left and hit the bottom unlock menu button. You can later add and manage dashboards using the Dashboards page from the Actions menu. '),_(),v(163,"p")(164,"strong"),b(165,"Try editing the Dashboard now to receive further instructions!"),_()()}}function Rg(a,n){a&1&&(v(0,"h2"),b(1,"Changing Layouts"),_(),b(2," Follow these simple steps to learn how to change your dashboard layout: "),v(3,"ol")(4,"li"),b(5,"Resize this Tutorial widget using the now visible dashed borders or corners arrows. Resize it so it does not take up all the screen. You need free space in your dashboard to add more widgets. You can delete this Tutorial widget later when you are done with the instructions."),_(),v(6,"li"),b(7,"Touch & Hold or Click & Hold in an empty area to open the Add Widget selection panel."),_(),v(8,"li"),b(9,"Choose a widget from the selection panel to add it to the dashboard."),_()(),v(10,"h3"),b(11,"Possible widget operations"),_(),v(12,"ul")(13,"li")(14,"strong"),b(15,"Touch and drag"),_(),b(16," to move widgets"),_(),v(17,"li")(18,"strong"),b(19,"Drag corners and sides"),_(),b(20," to resize widgets"),_(),v(21,"li")(22,"strong"),b(23,"Double Tap"),_(),b(24," on a widget to configure it"),_(),v(25,"li")(26,"strong"),b(27,"Press and Hold"),_(),b(28," on a widget to delete or duplicate widgets"),_()(),v(29,"h2"),b(30,"Exiting dashboard edit mode"),_(),v(31,"p"),b(32,"Use the Save or Cancel buttons in the lower right corner to either persist your changes or revert changes."),_(),v(33,"h2"),b(34,"Adding more dashboards"),_(),v(35,"p"),b(36,"Swipe left and hit the Dashboards button. From this page you can add, rename, order, delete, and duplicate entire dashboards."),_())}var rh=(()=>{class a extends Se{dashboard=E(nt);settings=E(Mt);constructor(){super()}loadDemoConfig(){this.settings.loadDemoConfig()}startWidget(){}updateConfig(){}ngOnDestroy(){this.destroyDataStreams()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-tutorial"]],features:[ce],decls:4,vars:3,consts:[[3,"configChange","config","id"],[1,"tutorial-container"],[1,"nav-table"],[2,"font-size","x-large"],["mat-raised-button","",2,"margin-left","15px",3,"click"]],template:function(t,i){t&1&&(v(0,"widget-host",0),ve("configChange",function(r){return fe(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(){return i.updateConfig()}),v(1,"div",1),De(2,Og,166,0)(3,Rg,37,0),_()()),t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(2),Ae(i.dashboard.isDashboardStatic()?2:3))},dependencies:[Ce,gt],styles:[".tutorial-container[_ngcontent-%COMP%]{position:absolute;top:0;left:0;display:block;height:100%;width:100%;overflow:none}.tutorial-container[_ngcontent-%COMP%]{padding:0 15px}.nav-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;margin-bottom:2em}.nav-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .nav-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border:1px solid #bbb;padding:.5em 1em;text-align:center}.nav-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{background:#ddd;color:#222;font-weight:700}.nav-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(2n){background:#242424}.warning[_ngcontent-%COMP%]{color:#b71c1c}.button-group[_ngcontent-%COMP%]{margin-top:2em;display:flex;gap:20px}"]})}return a})();var Ig=["rotatingDial"],Ng=["awaIndicator"],Wg=["twaIndicator"],Lg=["wptIndicator"],Vg=["setIndicator"],Bg=["cogIndicator"],sh=([a,n],[e,t],[i,o])=>(Math.atan2(o-t,i-e)-Math.atan2(n-t,a-e)+3*Math.PI)%(2*Math.PI)-Math.PI,lh=(()=>{class a{rotatingDial=ie.required("rotatingDial");awaIndicator=ie.required("awaIndicator");twaIndicator=ie.required("twaIndicator");wptIndicator=ie.required("wptIndicator");setIndicator=ie.required("setIndicator");cogIndicator=ie.required("cogIndicator");compassHeading=B.required();courseOverGroundAngle=B(void 0);courseOverGroundEnabled=B.required();trueWindAngle=B.required();twsEnabled=B.required();twaEnabled=B.required();trueWindSpeed=B.required();trueWindSpeedUnit=B.required();appWindAngle=B.required();awsEnabled=B.required();appWindSpeed=B.required();appWindSpeedUnit=B.required();laylineAngle=B(void 0);closeHauledLineEnabled=B.required();sailSetupEnabled=B.required();windSectorEnabled=B.required();driftEnabled=B.required();driftSet=B(void 0);driftFlow=B(void 0);waypointAngle=B(void 0);waypointEnabled=B.required();trueWindMinHistoric=B(void 0);trueWindMidHistoric=B(void 0);trueWindMaxHistoric=B(void 0);compass={oldValue:0,newValue:0};twa={oldValue:0,newValue:0};awa={oldValue:0,newValue:0};wpt={oldValue:0,newValue:0};cog={oldValue:0,newValue:0};set={oldValue:0,newValue:0};headingValue="--";trueWindHeading=0;waypointActive=K(!1);portLaylinePrev=0;stbdLaylinePrev=0;portLaylineAnimId=null;stbdLaylineAnimId=null;closeHauledLinePortPath="M 500,500 500,500";closeHauledLineStbdPath="M 500,500 500,500";portSectorPrev={min:0,mid:0,max:0};stbdSectorPrev={min:0,mid:0,max:0};portSectorAnimId=null;stbdSectorAnimId=null;portWindSectorPath="";stbdWindSectorPath="";animationFrameIds=new WeakMap;CENTER=500;RADIUS=350;ANIMATION_DURATION=900;EPS_ANGLE=1;ngZone=E(Je);constructor(){ne(()=>{let e=this.waypointEnabled();Ke(()=>{this.waypointActive.set(e)})}),ne(()=>{let e=this.compassHeading(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&Ke(()=>{this.compass.oldValue=this.compass.newValue,this.compass.newValue=t,this.headingValue=t.toString(),this.rotatingDial()?.nativeElement&&(vt(this.rotatingDial().nativeElement,-this.compass.oldValue,-this.compass.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines(!1),this.updateWindSectors(!1))})}),ne(()=>{let e=this.courseOverGroundAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&Ke(()=>{this.cog.oldValue=this.cog.newValue,this.cog.newValue=t-this.compass.newValue,this.cogIndicator()?.nativeElement&&vt(this.cogIndicator().nativeElement,this.cog.oldValue,this.cog.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),ne(()=>{let e=this.waypointAngle();Ke(()=>{if(!e){this.waypointActive.set(!1);return}this.waypointEnabled()?this.waypointActive.set(!0):this.waypointActive.set(!1),this.wpt.oldValue=this.wpt.newValue,this.wpt.newValue=e,this.wptIndicator()?.nativeElement&&vt(this.wptIndicator().nativeElement,this.wpt.oldValue,this.wpt.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),ne(()=>{let e=this.appWindAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&Ke(()=>{this.awa.oldValue=this.awa.newValue,this.awa.newValue=t,this.awaIndicator()?.nativeElement&&vt(this.awaIndicator().nativeElement,this.awa.oldValue,this.awa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines()})}),ne(()=>{let e=this.trueWindAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&Ke(()=>{this.twa.oldValue=this.twa.newValue,this.trueWindHeading=t,this.twa.newValue=this.addHeading(this.trueWindHeading,this.compass.newValue*-1),this.twaIndicator()?.nativeElement&&vt(this.twaIndicator().nativeElement,this.twa.oldValue,this.twa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),ne(()=>{this.laylineAngle(),this.closeHauledLineEnabled()&&Ke(()=>this.updateCloseHauledLines())}),ne(()=>{let e=this.driftSet(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&Ke(()=>{this.set.oldValue=this.set.newValue,this.set.newValue=t,this.setIndicator()?.nativeElement&&vt(this.setIndicator().nativeElement,this.set.oldValue,this.set.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),ne(()=>{let e=this.windSectorEnabled();this.trueWindMinHistoric(),this.trueWindMidHistoric(),this.trueWindMaxHistoric(),this.laylineAngle(),Ke(()=>{if(!e){this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null,this.portWindSectorPath="none",this.stbdWindSectorPath="none";return}this.updateWindSectors(!0)})})}updateCloseHauledLines(e=!0){if(!this.closeHauledLineEnabled())return;let t=Number(this.compass.newValue)||0,i=Number(this.awa.newValue)||0,o=Number(this.laylineAngle())||0,r=this.addHeading(t,this.addHeading(i,o*-1));this.animateLayline(this.portLaylinePrev,r,!0,e),this.portLaylinePrev=r;let l=this.addHeading(t,this.addHeading(i,o));this.animateLayline(this.stbdLaylinePrev,l,!1,e),this.stbdLaylinePrev=l}animateLayline(e,t,i,o=!0){if(i&&this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),!i&&this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId),this.angleDelta(e,t)<this.EPS_ANGLE){this.drawLayline(t,i),i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null;return}if(!o){this.drawLayline(t,i),i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null;return}let r=Gd(e,t,this.ANIMATION_DURATION,l=>this.drawLayline(l,i),()=>{i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null},this.ngZone);i?this.portLaylineAnimId=r:this.stbdLaylineAnimId=r}drawLayline(e,t){let i=e*Math.PI/180,o=Math.floor(this.RADIUS*Math.sin(i)+this.CENTER),r=Math.floor(this.RADIUS*Math.cos(i)*-1+this.CENTER);t?this.closeHauledLinePortPath=`M ${this.CENTER},${this.CENTER} L ${o},${r}`:this.closeHauledLineStbdPath=`M ${this.CENTER},${this.CENTER} L ${o},${r}`}windSectorsInitialized=!1;updateWindSectors(e=!0){if(!this.windSectorEnabled()||this.trueWindMinHistoric()==null||this.trueWindMidHistoric()==null||this.trueWindMaxHistoric()==null)return;let t={min:this.trueWindMinHistoric(),mid:this.trueWindMidHistoric(),max:this.trueWindMaxHistoric()},i={min:this.trueWindMinHistoric(),mid:this.trueWindMidHistoric(),max:this.trueWindMaxHistoric()};if(!this.windSectorsInitialized){this.windSectorsInitialized=!0,e?(this.animateWindSector(t,t,!0),this.animateWindSector(i,i,!1)):(this.portWindSectorPath=this.computeSectorPath(t,!0),this.stbdWindSectorPath=this.computeSectorPath(i,!1)),this.portSectorPrev=t,this.stbdSectorPrev=i;return}e?this.angleDelta(this.portSectorPrev.min,t.min)<this.EPS_ANGLE&&this.angleDelta(this.portSectorPrev.mid,t.mid)<this.EPS_ANGLE&&this.angleDelta(this.portSectorPrev.max,t.max)<this.EPS_ANGLE?(this.portWindSectorPath=this.computeSectorPath(t,!0),this.stbdWindSectorPath=this.computeSectorPath(i,!1)):(this.animateWindSector(this.portSectorPrev,t,!0),this.animateWindSector(this.stbdSectorPrev,i,!1)):(this.portWindSectorPath=this.computeSectorPath(t,!0),this.stbdWindSectorPath=this.computeSectorPath(i,!1)),this.portSectorPrev=t,this.stbdSectorPrev=i}animateWindSector(e,t,i){if(i&&this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),!i&&this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.angleDelta(e.min,t.min)<this.EPS_ANGLE&&this.angleDelta(e.mid,t.mid)<this.EPS_ANGLE&&this.angleDelta(e.max,t.max)<this.EPS_ANGLE){let l=this.computeSectorPath(t,i);i?this.portWindSectorPath=l:this.stbdWindSectorPath=l,i?this.portSectorAnimId=null:this.stbdSectorAnimId=null;return}let r=qd(e,t,this.ANIMATION_DURATION,l=>{let d=this.computeSectorPath(l,i);i?this.portWindSectorPath=d:this.stbdWindSectorPath=d},()=>{i?this.portSectorAnimId=null:this.stbdSectorAnimId=null},this.ngZone);i?this.portSectorAnimId=r:this.stbdSectorAnimId=r}addHeading(e=0,t=0){let i=(e+t)%360;return i<0&&(i+=360),i}ngOnDestroy(){this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId),this.portLaylineAnimId=null,this.stbdLaylineAnimId=null,this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null;let e=[this.rotatingDial(),this.awaIndicator(),this.twaIndicator(),this.wptIndicator(),this.setIndicator(),this.cogIndicator()];for(let t of e){let i=t?.nativeElement;if(!i)continue;let o=this.animationFrameIds.get(i);o&&cancelAnimationFrame(o),this.animationFrameIds.delete(i)}}angleDelta(e,t){let i=(t-e+540)%360-180;return Math.abs(i)}computeSectorPath(e,t){let o=(Number(this.laylineAngle())||0)*(t?-1:1),r=Number(this.compass.newValue)||0,l=this.addHeading(r,this.addHeading(e.min,o)),d=this.addHeading(r,this.addHeading(e.mid,o)),p=this.addHeading(r,this.addHeading(e.max,o)),s=this.RADIUS*Math.sin(l*Math.PI/180)+this.CENTER,c=this.RADIUS*Math.cos(l*Math.PI/180)*-1+this.CENTER,m=this.RADIUS*Math.sin(d*Math.PI/180)+this.CENTER,f=this.RADIUS*Math.cos(d*Math.PI/180)*-1+this.CENTER,y=this.RADIUS*Math.sin(p*Math.PI/180)+this.CENTER,S=this.RADIUS*Math.cos(p*Math.PI/180)*-1+this.CENTER,x=Math.abs(sh([s,c],[m,f],[y,S]))>Math.PI/2?0:1,V=sh([y,S],[s,c],[m,f])>0?0:1;return`M ${this.CENTER},${this.CENTER} L ${s},${c} A ${this.RADIUS},${this.RADIUS} 0 ${x} ${V} ${y},${S} z`}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["svg-windsteer"]],viewQuery:function(t,i){t&1&&(te(i.rotatingDial,Ig,5),te(i.awaIndicator,Ng,5),te(i.twaIndicator,Wg,5),te(i.wptIndicator,Lg,5),te(i.setIndicator,Vg,5),te(i.cogIndicator,Bg,5)),t&2&&be(6)},inputs:{compassHeading:[1,"compassHeading"],courseOverGroundAngle:[1,"courseOverGroundAngle"],courseOverGroundEnabled:[1,"courseOverGroundEnabled"],trueWindAngle:[1,"trueWindAngle"],twsEnabled:[1,"twsEnabled"],twaEnabled:[1,"twaEnabled"],trueWindSpeed:[1,"trueWindSpeed"],trueWindSpeedUnit:[1,"trueWindSpeedUnit"],appWindAngle:[1,"appWindAngle"],awsEnabled:[1,"awsEnabled"],appWindSpeed:[1,"appWindSpeed"],appWindSpeedUnit:[1,"appWindSpeedUnit"],laylineAngle:[1,"laylineAngle"],closeHauledLineEnabled:[1,"closeHauledLineEnabled"],sailSetupEnabled:[1,"sailSetupEnabled"],windSectorEnabled:[1,"windSectorEnabled"],driftEnabled:[1,"driftEnabled"],driftSet:[1,"driftSet"],driftFlow:[1,"driftFlow"],waypointAngle:[1,"waypointAngle"],waypointEnabled:[1,"waypointEnabled"],trueWindMinHistoric:[1,"trueWindMinHistoric"],trueWindMidHistoric:[1,"trueWindMidHistoric"],trueWindMaxHistoric:[1,"trueWindMaxHistoric"]},decls:158,vars:43,consts:[["rotatingDial",""],["wptIndicator",""],["setIndicator",""],["cogIndicator",""],["awaIndicator",""],["twaIndicator",""],["viewBox","0 0 1000 1000"],["id","defs1"],["id","linearGradient18"],["offset","0",1,"boat",2,"stop-opacity","0.71372495"],["offset","1",1,"boat",2,"stop-opacity","0"],["id","linearGradient16"],["id","linearGradient13"],["offset","0.41176471",1,"drift-arrow",2,"stop-opacity","1"],["offset","1",1,"drift-arrow",2,"stop-opacity","0"],["id","swatch4"],["offset","0","id","stop4",2,"stop-color","#000000","stop-opacity","1"],["clipPathUnits","userSpaceOnUse","id","clipPath16"],["id","ellipse16","cx","311.24539","cy","-1516.3778","rx","194.27342","ry","181.83022",2,"display","inline","fill","#9a9300","fill-opacity","1","stroke","none","stroke-width","55","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],[0,"xlink","href","#linearGradient13","id","linearGradient14","x1","453.48047","y1","583.62891","x2","638.11328","y2","583.62891","gradientUnits","userSpaceOnUse","gradientTransform","matrix(0.00723393,1.2388183,-1.0538241,0.00615367,1111.2051,-179.73465)"],[0,"xlink","href","#linearGradient16","id","linearGradient17","x1","-502.04896","y1","439.35551","x2","-316","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],[0,"xlink","href","#linearGradient18","id","linearGradient19","x1","495.83999","y1","439.35551","x2","681.88895","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],["id","layerBackground",2,"display","inline"],["id","boat",2,"display","inline"],["id","portSide","d","M 498.75049,208.89453 A 267.09439,554.67401 0 0 1 678.45974,767.81661",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient19)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","starboardSide","d","m -499.13846,208.89453 a 267.09439,554.67401 0 0 1 179.70925,558.92208","transform","scale(-1,1)",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient17)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","layerCompass"],["id","fixedDial"],["id","portStarboardBackground","d","M 499.99997,10.520805 A 489.47916,489.47916 0 0 0 10.520805,499.99997 489.47916,489.47916 0 0 0 499.99997,989.47913 489.47916,489.47916 0 0 0 989.47913,499.99997 489.47916,489.47916 0 0 0 499.99997,10.520805 Z m 0,132.291665 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"fixed-dial-background",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","port","d","M 93.283801,265.18231 A 469.63541,469.63541 0 0 1 339.37522,58.687079",1,"port",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","starboard","d","M 660.62476,58.687069 A 469.63541,469.63541 0 0 1 906.71619,265.18228",1,"starboard",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","barsAndText",1,"contrast-stroke",2,"display","inline"],["d","m 416.35095,19.837399 2.78142,15.77426","id","path199",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 334.23173,41.658798 5.47834,15.051615","id","path200",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 260.27336,81.806174 12.55151,21.739856","id","path37",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 187.44581,126.00035 10.29591,12.2702","id","path197",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 127.23918,185.95785 12.27019,10.29591","id","path198",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 83.252815,257.66724 21.739865,12.55151","id","path166",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 42.289518,332.39273 15.05162,5.47835","id","path195",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 20.127799,414.42077 15.774251,2.78142","id","path196",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 17.879075,498.47765 H 42.982096","id","path167",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 19.776759,583.71187 15.77426,-2.78142","id","path193",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 41.598167,665.8311 15.051615,-5.47834","id","path194",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 81.668963,739.71246 103.40883,727.16095","id","path168",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 125.93981,812.61701 12.2702,-10.29591","id","path191",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 185.89732,872.82365 10.29591,-12.27019","id","path192",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 257.53004,916.73298 12.55151,-21.73985","id","path169",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 332.33219,957.7732 5.47835,-15.05162","id","path189",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 414.36024,979.93493 2.78142,-15.77425","id","path190",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 498.34046,982.10672 V 957.0037","id","path170",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 583.65133,980.28596 580.86991,964.5117","id","path187",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 665.77057,958.46456 -5.47834,-15.05161","id","path188",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 739.57526,918.31683 727.02375,896.57698","id","path171",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 812.55647,874.12301 802.26056,861.85282","id","path185",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 872.76312,814.16551 860.49293,803.8696","id","path186",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 916.59579,742.45577 894.85593,729.90426","id","path172",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 957.71266,667.73063 -15.05161,-5.47834","id","path183",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 979.8744,585.70259 -15.77425,-2.78142","id","path184",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 981.96954,501.64535 -25.10304,10e-6","id","path173",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 980.22542,416.41149 -15.77425,2.78143","id","path181",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 958.40403,334.29226 -15.05161,5.47834","id","path182",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 918.17964,260.41055 -21.73986,12.55151","id","path174",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 874.06247,187.50636 -12.27018,10.29591","id","path180",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 817.34594,130.05494 -10.40259,12.17987","id","path179",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 742.31857,83.390025 729.76706,105.12988","id","path175",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 667.6701,42.350172 -5.47834,15.051615","id","path178",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 585.64206,20.188432 -2.78142,15.77425","id","path176",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 501.50816,18.016286 V 43.119307","id","path177",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","rotatingDialBackplate","d","M 499.99997,50.208304 A 449.79166,449.79166 0 0 0 50.208304,499.99997 449.79166,449.79166 0 0 0 499.99997,949.79163 449.79166,449.79166 0 0 0 949.79163,499.99997 449.79166,449.79166 0 0 0 499.99997,50.208304 Z m 0,92.604166 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"rotating-dial-Backplate",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],[0,"xml","space","preserve","x","181.91386","y","284.25186","id","text3","transform","rotate(-30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan3","x","181.91386","y","284.25186",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-183.53558","y","283.74811","id","text14","transform","rotate(-60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan14","x","-183.53558","y","283.74811",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-499.70761","y","100.95312","id","text15","transform","rotate(-90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan15","x","-499.70761","y","100.95312",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.66119","y","-216.36243","id","text16","transform","rotate(-120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["x","-681.66119","y","-216.36243","id","tspan25",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.06616","y","-581.71271","id","text17","transform","rotate(-150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan17","x","-681.06616","y","-581.71271",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-498.3313","y","-897.40875","id","text18","transform","scale(-1)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan18","x","-498.3313","y","-897.40875",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-184.41313","y","-1080.8452","id","text19","transform","rotate(150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan19","x","-184.41313","y","-1080.8452",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","181.57225","y","-1080.8853","id","text20","transform","rotate(120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan20","x","181.57225","y","-1080.8853",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","501.42661","y","-896.93701","id","text21","transform","rotate(90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan21","x","501.42661","y","-896.93701",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","682.35815","y","-579.63336","id","text22","transform","rotate(60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan22","x","682.35815","y","-579.63336",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","681.81525","y","-214.27321","id","text23","transform","rotate(30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan23","x","681.81525","y","-214.27321",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","500.15503","y","101.96342","id","text24",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan24","x","500.15503","y","101.96342",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],["id","LayerLayline"],["id","PortLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","StbdLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","LayerWindShift"],["id","portSectorShift",1,"wind-sector-port",2,"fill-opacity","0.5","stroke","none"],["id","StbdSectorShift",1,"wind-sector-stbd",2,"fill-opacity","0.5","stroke","none"],["clip-path","url(#clipPath16)","d","m 416.36313,-1521.3937 c 371.15015,24.6522 731.95257,192.9774 983.98757,467.456 227.2972,244.24389 363.1732,572.3808 369.4045,906.42978 15.9331,499.10271 -269.2071,986.17861 -700.5178,1232.88522 -485.08308,290.4843 -1134.555606,269.7346 -1599.2788,-52.7169 -404.5062,-269.24461 -653.2224,-759.35388 -614.1746,-1245.84043 30.2148,-487.61814 344.18931,-937.89997 780.52695,-1152.15867 176.96718,-89.2092 371.8823084,-142.3103 569.54914,-156.0363","transform","matrix(0.28310615,0,0,0.32000828,411.88452,661.64815)",1,"next-waypoint-bar",2,"display","inline","fill","none","stroke-width","30","stroke-miterlimit","0"],["id","path6341","cx","500","cy","175.00002","rx","17.361122","ry","17.361118",1,"next-waypoint",2,"display","inline","fill","none","stroke-width","15.2778","stroke-dasharray","none"],["id","setArrow","d","m 563.93337,480.60403 -64.4901,-94.9673 -63.37665,95.71396 58.48691,-30.71299 0.77713,133.08346 c 0.0992,16.99331 2.52916,30.65913 5.44822,30.64209 2.91911,-0.0171 5.18926,-13.71032 5.09001,-30.70362 l -0.77782,-133.20444 z",2,"fill","url(#linearGradient14)","stroke","none","stroke-width","1.18648"],["id","layerCounter"],["id","twsCounter"],[0,"xml","space","preserve","x","904.27722","y","150.88913","id","text43",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","903.84814","y","114.73512","id","text42",1,"true-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","905.25897","y","52.894646","id","text41",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","awsCounter"],[0,"xml","space","preserve","x","94.554222","y","150.88913","id","text39",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","94.580925","y","114.63747","id","text40",1,"app-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","95.967644","y","52.894646","id","text39-7",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","layerCurrent"],["id","text11",0,"xml","space","preserve","x","499.78842","y","523.55145",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],["id","layerIndicators",2,"display","inline"],["d","m 506.20767,172.99458 a 6.3888631,8.8250643 0 0 1 -6.38888,8.82508 6.3888631,8.8250643 0 0 1 -6.38888,-8.82508 6.3888631,8.8250643 0 0 1 6.38888,-8.82509 6.3888631,8.8250643 0 0 1 6.38888,8.82509 z M 476.25472,30.811298 493.47058,13.265068 c 3.6173,-3.6867571 9.44162,-3.6867571 13.05892,0 l 17.21586,17.546106 c 3.6173,3.686743 3.6173,9.622786 0,13.309544 l -17.21595,17.54623 c -3.61721,3.686757 -9.44153,3.686757 -13.05893,0 L 476.25472,44.120841 c -3.6174,-3.686743 -3.6174,-9.622924 0,-13.309543 z m 17.20533,-16.510116 h 12.77766 V 173.26408 h -12.77766 z",1,"course-over-ground",2,"stroke-width","14.7329","stroke-linecap","square"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.7935953,0,0,0.92686935,101.84848,11.000842)",1,"app-wind",2,"display","inline","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110",1,"card-color",2,"font-weight","bold","font-size","70px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.60410307,0,0,0.70555435,196.91787,21.152867)",1,"true-wind",2,"display","inline","stroke","none","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110","id","text10",1,"card-color",2,"font-weight","bold","font-size","60px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["id","layerHeading",2,"display","inline"],["id","rect1","width","256.47919","height","108.5428","x","371.76041","y","10.805443","rx","23.757372",1,"heading-background",2,"stroke-width","4.43107","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","0.509946"],["x","511.29395","y","102.86786",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","106.667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","5","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"]],template:function(t,i){t&1&&(re(),A(0,"svg",6)(1,"defs",7)(2,"linearGradient",8),Q(3,"stop",9)(4,"stop",10),W(),A(5,"linearGradient",11),Q(6,"stop",9)(7,"stop",10),W(),A(8,"linearGradient",12),Q(9,"stop",13)(10,"stop",14),W(),A(11,"linearGradient",15),Q(12,"stop",16),W(),A(13,"clipPath",17),Q(14,"ellipse",18),W(),Q(15,"linearGradient",19)(16,"linearGradient",20)(17,"linearGradient",21),W(),A(18,"g",22)(19,"g",23),Q(20,"path",24)(21,"path",25),W()(),A(22,"g",26)(23,"g",27),Q(24,"path",28)(25,"path",29)(26,"path",30),W(),A(27,"g",null,0)(29,"g",31),Q(30,"path",32)(31,"path",33)(32,"path",34)(33,"path",35)(34,"path",36)(35,"path",37)(36,"path",38)(37,"path",39)(38,"path",40)(39,"path",41)(40,"path",42)(41,"path",43)(42,"path",44)(43,"path",45)(44,"path",46)(45,"path",47)(46,"path",48)(47,"path",49)(48,"path",50)(49,"path",51)(50,"path",52)(51,"path",53)(52,"path",54)(53,"path",55)(54,"path",56)(55,"path",57)(56,"path",58)(57,"path",59)(58,"path",60)(59,"path",61)(60,"path",62)(61,"path",63)(62,"path",64)(63,"path",65)(64,"path",66)(65,"path",67)(66,"path",68),A(67,"text",69)(68,"tspan",70),b(69,"330"),W()(),A(70,"text",71)(71,"tspan",72),b(72,"300"),W()(),A(73,"text",73)(74,"tspan",74),b(75,"W"),W()(),A(76,"text",75)(77,"tspan",76),b(78,"240"),W()(),A(79,"text",77)(80,"tspan",78),b(81,"210"),W()(),A(82,"text",79)(83,"tspan",80),b(84,"S"),W()(),A(85,"text",81)(86,"tspan",82),b(87,"150"),W()(),A(88,"text",83)(89,"tspan",84),b(90,"120"),W()(),A(91,"text",85)(92,"tspan",86),b(93,"E"),W()(),A(94,"text",87)(95,"tspan",88),b(96,"60"),W()(),A(97,"text",89)(98,"tspan",90),b(99,"30"),W()(),A(100,"text",91)(101,"tspan",92),b(102,"N"),W()()(),A(103,"g",93),Q(104,"path",94)(105,"path",95),W(),A(106,"g",96),Q(107,"path",97)(108,"path",98),W(),A(109,"g",null,1),Q(111,"path",99)(112,"ellipse",100),W(),A(113,"g",null,2),Q(115,"path",101),W()()(),A(116,"g",102)(117,"g",103)(118,"text",104),b(119),W(),A(120,"text",105),b(121),li(122,"number"),W(),A(123,"text",106),b(124,"TWS"),W()(),A(125,"g",107)(126,"text",108),b(127),W(),A(128,"text",109),b(129),li(130,"number"),W(),A(131,"text",110),b(132,"AWS"),W()()(),A(133,"g",111)(134,"text",112),b(135),li(136,"number"),W()(),A(137,"g",113)(138,"g",null,3),Q(140,"path",114),W(),A(141,"g",null,4),Q(143,"path",115),A(144,"text",116),b(145,"A"),W()(),A(146,"g",null,5),Q(148,"path",117),A(149,"text",118),b(150,"T"),W()()(),A(151,"g",119),Q(152,"rect",120),A(153,"text",121)(154,"tspan"),b(155),A(156,"tspan"),b(157,"\xB0"),W()()()()()),t&2&&(k(103),we("display",i.closeHauledLineEnabled()?"inline":"none"),k(),we("display",i.appWindAngle()!=null?"inline":"none"),ae("d",i.closeHauledLineStbdPath),k(),we("display",i.appWindAngle()!=null?"inline":"none"),ae("d",i.closeHauledLinePortPath),k(),we("display",i.windSectorEnabled()?"inline":"none"),k(),we("display",i.portWindSectorPath!="none"?"inline":"none"),ae("d",i.portWindSectorPath),k(),we("display",i.stbdWindSectorPath!="none"?"inline":"none"),ae("d",i.stbdWindSectorPath),k(),ae("display",i.waypointActive()?"inline":"none"),k(4),we("display",i.driftEnabled()?"inline":"none"),k(4),we("display",i.twsEnabled()?"inline":"none"),k(2),He(i.trueWindSpeedUnit()),k(2),He(fn(122,34,i.trueWindSpeed(),"1.1-1")??"--"),k(4),we("display",i.awsEnabled()?"inline":"none"),k(2),He(i.appWindSpeedUnit()),k(2),He(fn(130,37,i.appWindSpeed(),"1.1-1")??"--"),k(4),we("display",i.driftEnabled()?"inline":"none"),k(2),He(fn(136,40,i.driftFlow(),"1.1-1")??"--"),k(3),ae("display",i.courseOverGroundEnabled()?"inline":"none"),k(8),we("display",i.twaEnabled()?"inline":"none"),k(9),He(i.headingValue))},dependencies:[gl],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}svg[_ngcontent-%COMP%]{position:absolute;height:100%;width:100%;left:0;top:0}.fixed-dial-background[_ngcontent-%COMP%]{fill:var(--kip-grey-color)}.rotating-dial-Backplate[_ngcontent-%COMP%]{fill:var(--mat-sys-background)}.starboard[_ngcontent-%COMP%]{stroke:var(--kip-starboard-color)}.port[_ngcontent-%COMP%]{stroke:var(--kip-port-color)}.heading-background[_ngcontent-%COMP%]{stroke:var(--kip-grey-color);fill:var(--kip-widget-card-background-color)}.boat[_ngcontent-%COMP%]{stop-color:var(--kip-grey-color)!important}.contrast-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.contrast-stroke[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.card-color[_ngcontent-%COMP%]{fill:var(--kip-widget-card-background-color)}.true-wind[_ngcontent-%COMP%]{fill:var(--kip-yellow-color)}.true-wind-label[_ngcontent-%COMP%]{fill:var(--kip-yellow-dim-color)}.app-wind[_ngcontent-%COMP%]{fill:var(--kip-orange-color)}.app-wind-label[_ngcontent-%COMP%]{fill:var(--kip-orange-dim-color)}.course-over-ground[_ngcontent-%COMP%]{fill:var(--kip-pink-color)}.next-waypoint[_ngcontent-%COMP%]{stroke:var(--kip-green-color)}.next-waypoint-bar[_ngcontent-%COMP%]{stroke:var(--kip-grey-color)}.laylines[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.wind-sector-port[_ngcontent-%COMP%]{fill:var(--kip-port-color)}.wind-sector-stbd[_ngcontent-%COMP%]{fill:var(--kip-starboard-color)}.drift-arrow[_ngcontent-%COMP%]{stop-color:var(--kip-blue-color)}"],changeDetection:0})}return a})();var dh=(()=>{class a extends Se{zones=E(Je);cdr=E(yn);markScheduled=!1;scheduleRafId=null;DEG_EPSILON=1;SPEED_EPSILON=.1;hasHeading=!1;hasCOG=!1;hasAWA=!1;hasAWS=!1;hasTWA=!1;hasTWS=!1;hasSet=!1;hasDrift=!1;hasWPT=!1;currentHeading=0;courseOverGroundAngle=0;appWindAngle=0;appWindSpeed=0;appWindSpeedUnit="";trueWindAngle=0;trueWindSpeed=0;trueWindSpeedUnit="";driftFlow=0;driftSet=0;waypointAngle=0;historicalWindDirection=[];trueWindMinHistoric;trueWindMidHistoric;trueWindMaxHistoric;windSectorObservableSub=null;windSamples=[];windMinDeque=[];windMaxDeque=[];windSampleIndex=0;lastUnwrapped=null;lastSector={};constructor(){super(),this.defaultConfig={filterSelfPaths:!0,paths:{headingPath:{description:"True Heading",path:"self.navigation.headingTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},appWindAngle:{description:"Apparent Wind Angle",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},appWindSpeed:{description:"Apparent Wind Speed",path:"self.environment.wind.speedApparent",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3},trueWindAngle:{description:"True Wind Angle",path:"self.environment.wind.angleTrueWater",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},trueWindSpeed:{description:"True Wind Speed",path:"self.environment.wind.speedTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3},courseOverGround:{description:"True Course Over Ground",path:"self.navigation.courseOverGroundTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",showConvertUnitTo:!1,convertUnitTo:"deg",sampleTime:1e3},nextWaypointBearing:{description:"Next Waypoint True Bearing",path:"self.navigation.courseGreatCircle.nextPoint.bearingTrue",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},set:{description:"True Drift Set",path:"self.environment.current.setTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},drift:{description:"Drift Speed Impact",path:"self.environment.current.drift",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3}},windSectorEnable:!0,windSectorWindowSeconds:5,laylineEnable:!0,laylineAngle:40,waypointEnable:!0,courseOverGroundEnable:!0,driftEnable:!0,awsEnable:!0,twsEnable:!0,twaEnable:!0,sailSetupEnable:!1,enableTimeout:!1,dataTimeout:5}}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.stopWindSectors();let e=this.widgetProperties.config.paths.appWindSpeed.convertUnitTo,t=this.widgetProperties.config.paths.trueWindSpeed.convertUnitTo;this.appWindSpeedUnit!==e&&(this.appWindSpeedUnit=e),this.trueWindSpeedUnit!==t&&(this.trueWindSpeedUnit=t),this.zones.runOutsideAngular(()=>{this.observeDataStream("headingPath",i=>{i.data.value==null&&(i.data.value=0);let o=this.normalizeAngle(i.data.value);(!this.hasHeading||this.angleDelta(this.currentHeading,o)>=this.DEG_EPSILON)&&(this.currentHeading=o,this.hasHeading=!0,this.scheduleMarkForCheck())}),this.observeDataStream("courseOverGround",i=>{i.data.value==null&&(i.data.value=0);let o=this.normalizeAngle(i.data.value);(!this.hasCOG||this.angleDelta(this.courseOverGroundAngle,o)>=this.DEG_EPSILON)&&(this.courseOverGroundAngle=o,this.hasCOG=!0,this.scheduleMarkForCheck())}),this.observeDataStream("drift",i=>{i.data.value==null&&(i.data.value=0);let o=i.data.value;(!this.hasDrift||Math.abs(this.driftFlow-o)>=this.SPEED_EPSILON)&&(this.driftFlow=o,this.hasDrift=!0,this.scheduleMarkForCheck())}),this.observeDataStream("set",i=>{i.data.value==null&&(i.data.value=0);let o=this.normalizeAngle(i.data.value);(!this.hasSet||this.angleDelta(this.driftSet,o)>=this.DEG_EPSILON)&&(this.driftSet=o,this.hasSet=!0,this.scheduleMarkForCheck())}),this.observeDataStream("nextWaypointBearing",i=>{let o=i.data.value,r=this.normalizeAngle(o);(!this.hasWPT||this.angleDelta(this.waypointAngle,r)>=this.DEG_EPSILON)&&(this.waypointAngle=r,this.hasWPT=!0,this.scheduleMarkForCheck())}),this.observeDataStream("appWindAngle",i=>{i.data.value==null&&(i.data.value=0);let o=i.data.value,r=this.normalizeAngle(o);(!this.hasAWA||this.angleDelta(this.appWindAngle,r)>=this.DEG_EPSILON)&&(this.appWindAngle=r,this.hasAWA=!0,this.widgetProperties.config.windSectorEnable&&this.addHistoricalWindDirection(this.normalizeAngle(o)),this.scheduleMarkForCheck())}),this.observeDataStream("appWindSpeed",i=>{i.data.value==null&&(i.data.value=0);let o=i.data.value;(!this.hasAWS||Math.abs(this.appWindSpeed-o)>=this.SPEED_EPSILON)&&(this.appWindSpeed=o,this.hasAWS=!0,this.scheduleMarkForCheck())}),this.observeDataStream("trueWindSpeed",i=>{i.data.value==null&&(i.data.value=0);let o=i.data.value;(!this.hasTWS||Math.abs(this.trueWindSpeed-o)>=this.SPEED_EPSILON)&&(this.trueWindSpeed=o,this.hasTWS=!0,this.scheduleMarkForCheck())}),this.observeDataStream("trueWindAngle",i=>{i.data.value==null&&(i.data.value=0);let o=this.widgetProperties.config.paths.trueWindAngle.path,r=o.includes("angleTrueWater")||o.includes("angleTrueGround")?this.addHeading(this.currentHeading,i.data.value):i.data.value,l=this.normalizeAngle(r);(!this.hasTWA||this.angleDelta(this.trueWindAngle,l)>=this.DEG_EPSILON)&&(this.trueWindAngle=l,this.hasTWA=!0,this.scheduleMarkForCheck())})}),this.startWindSectors()}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}ngOnDestroy(){this.destroyDataStreams(),this.stopWindSectors(),this.scheduleRafId!=null&&(cancelAnimationFrame(this.scheduleRafId),this.scheduleRafId=null)}startWindSectors(){if(this.windSamples=[],this.windMinDeque=[],this.windMaxDeque=[],this.windSampleIndex=0,this.lastUnwrapped=null,this.lastSector={},!this.widgetProperties.config.windSectorEnable){this.trueWindMinHistoric=void 0,this.trueWindMidHistoric=void 0,this.trueWindMaxHistoric=void 0,this.scheduleMarkForCheck();return}this.zones.runOutsideAngular(()=>{this.windSectorObservableSub=Ra(1e3).subscribe(()=>{this.historicalCleanup()})})}addHistoricalWindDirection(e){let t=Date.now(),i=this.unwrapAngle(e),o=this.windSampleIndex++;for(this.windSamples.push({t,u:i,i:o});this.windMinDeque.length&&this.windMinDeque[this.windMinDeque.length-1].u>=i;)this.windMinDeque.pop();for(this.windMinDeque.push({i:o,u:i});this.windMaxDeque.length&&this.windMaxDeque[this.windMaxDeque.length-1].u<=i;)this.windMaxDeque.pop();this.windMaxDeque.push({i:o,u:i})}arcForAngles(e){return!e||e.length===0?{min:0,max:0,mid:0}:e.slice(1).reduce((i,o)=>{let r=o;for(;r<i.min-180;)r+=360;for(;r>i.max+180;)r-=360;return i.min=Math.min(i.min,r),i.max=Math.max(i.max,r),i.mid=(i.max-i.min)/2+i.min,i},{min:e[0],max:e[0],mid:e[0]})}historicalCleanup(){if(!this.widgetProperties.config.windSectorEnable)return;let e=Date.now()-this.widgetProperties.config.windSectorWindowSeconds*1e3;for(;this.windSamples.length&&this.windSamples[0].t<e;){let s=this.windSamples.shift();if(!s)break;this.windMinDeque.length&&this.windMinDeque[0].i===s.i&&this.windMinDeque.shift(),this.windMaxDeque.length&&this.windMaxDeque[0].i===s.i&&this.windMaxDeque.shift()}if(!this.windSamples.length||!this.windMinDeque.length||!this.windMaxDeque.length){(this.trueWindMinHistoric!==void 0||this.trueWindMidHistoric!==void 0||this.trueWindMaxHistoric!==void 0)&&(this.trueWindMinHistoric=void 0,this.trueWindMidHistoric=void 0,this.trueWindMaxHistoric=void 0,this.lastSector={},this.scheduleMarkForCheck());return}let t=this.windMinDeque[0].u,i=this.windMaxDeque[0].u,o=(t+i)/2,r=this.normalizeAngle(t),l=this.normalizeAngle(o),d=this.normalizeAngle(i);(this.lastSector.min===void 0||this.angleDelta(this.lastSector.min,r)>=this.DEG_EPSILON||this.lastSector.mid===void 0||this.angleDelta(this.lastSector.mid,l)>=this.DEG_EPSILON||this.lastSector.max===void 0||this.angleDelta(this.lastSector.max,d)>=this.DEG_EPSILON)&&(this.trueWindMinHistoric=r,this.trueWindMidHistoric=l,this.trueWindMaxHistoric=d,this.lastSector={min:r,mid:l,max:d},this.scheduleMarkForCheck())}stopWindSectors(){this.windSectorObservableSub?.unsubscribe()}unwrapAngle(e){if(this.lastUnwrapped==null)return this.lastUnwrapped=e,e;let t=this.lastUnwrapped,i=(t%360+360)%360,o=(e-i+540)%360-180,r=t+o;return this.lastUnwrapped=r,r}normalizeAngle(e){return(e%360+360)%360}addHeading(e,t){let i=(e+t)%360;return i<0&&(i+=360),i}angleDelta(e,t){let i=(t-e+540)%360-180;return Math.abs(i)}scheduleMarkForCheck(){this.markScheduled||(this.markScheduled=!0,this.zones.runOutsideAngular(()=>{this.scheduleRafId=requestAnimationFrame(()=>{this.zones.run(()=>{this.cdr.markForCheck()}),this.markScheduled=!1,this.scheduleRafId=null})}))}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-wind-steer"]],features:[ce],decls:2,vars:26,consts:[[3,"configChange","config","id"],[3,"compassHeading","courseOverGroundAngle","courseOverGroundEnabled","trueWindAngle","twsEnabled","twaEnabled","trueWindSpeed","trueWindSpeedUnit","appWindAngle","awsEnabled","appWindSpeed","appWindSpeedUnit","laylineAngle","closeHauledLineEnabled","windSectorEnabled","driftEnabled","driftFlow","driftSet","waypointAngle","waypointEnabled","trueWindMinHistoric","trueWindMidHistoric","trueWindMaxHistoric","sailSetupEnabled"]],template:function(t,i){t&1&&(v(0,"widget-host",0),ve("configChange",function(r){return fe(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),G(1,"svg-windsteer",1),_()),t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),z("compassHeading",i.currentHeading)("courseOverGroundAngle",i.courseOverGroundAngle)("courseOverGroundEnabled",i.widgetProperties.config.courseOverGroundEnable)("trueWindAngle",i.trueWindAngle)("twsEnabled",i.widgetProperties.config.twsEnable)("twaEnabled",i.widgetProperties.config.twaEnable)("trueWindSpeed",i.trueWindSpeed)("trueWindSpeedUnit",i.trueWindSpeedUnit)("appWindAngle",i.appWindAngle)("awsEnabled",i.widgetProperties.config.awsEnable)("appWindSpeed",i.appWindSpeed)("appWindSpeedUnit",i.appWindSpeedUnit)("laylineAngle",i.widgetProperties.config.laylineAngle)("closeHauledLineEnabled",i.widgetProperties.config.laylineEnable)("windSectorEnabled",i.widgetProperties.config.windSectorEnable)("driftEnabled",i.widgetProperties.config.driftEnable)("driftFlow",i.driftFlow)("driftSet",i.driftSet)("waypointAngle",i.waypointAngle)("waypointEnabled",i.widgetProperties.config.waypointEnable)("trueWindMinHistoric",i.trueWindMinHistoric)("trueWindMidHistoric",i.trueWindMidHistoric)("trueWindMaxHistoric",i.trueWindMaxHistoric)("sailSetupEnabled",i.defaultConfig.sailSetupEnable))},dependencies:[lh,Ce],encapsulation:2,changeDetection:0})}return a})();var zg=["canvasMainRef"],ch=(()=>{class a extends Se{canvasMainRef=ie.required("canvasMainRef");canvasElement;canvasCtx;canvas=E(tt);cssWidth=0;cssHeight=0;isDestroyed=!1;maxTextWidth=0;maxTextHeight=0;constructor(){super(),this.defaultConfig={displayName:"Static Label",color:"green",bgColor:"grey",noColor:!1,noBgColor:!0},ne(()=>{this.theme()&&(this.getColors(this.widgetProperties.config.color),this.drawWidget())})}ngOnInit(){this.validateConfig()}ngAfterViewInit(){this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.maxTextWidth=this.cssWidth-40,this.maxTextHeight=this.cssHeight-40,this.drawWidget()}}),!this.isDestroyed&&(this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.maxTextWidth=this.canvasElement.width-40,this.maxTextHeight=this.canvasElement.height-40,this.startWidget())}ngOnDestroy(){this.isDestroyed=!0;try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}startWidget(){}updateConfig(e){e.displayName?this.widgetProperties.config.displayName=e.displayName:this.widgetProperties.config.displayName="",this.drawWidget()}getColors(e){switch(e){case"contrast":return this.theme().contrast;case"blue":return this.theme().blue;case"green":return this.theme().green;case"pink":return this.theme().pink;case"orange":return this.theme().orange;case"purple":return this.theme().purple;case"grey":return this.theme().grey;case"yellow":return this.theme().yellow;default:return this.theme().contrast}}drawWidget(){this.canvasCtx&&(this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.widgetProperties.config.noBgColor||this.canvas.drawRectangle(this.canvasCtx,0,0,this.canvasElement.width,this.canvasElement.height,this.getColors(this.widgetProperties.config.bgColor)),this.canvas.drawText(this.canvasCtx,this.widgetProperties.config.displayName,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2+10),this.maxTextWidth,this.maxTextHeight,"bold",this.getColors(this.widgetProperties.config.color)))}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-label"]],viewQuery:function(t,i){t&1&&te(i.canvasMainRef,zg,5),t&2&&be()},features:[ce],decls:3,vars:2,consts:[["canvasMainRef",""],[1,"label-wrapper",3,"configChange","config","id"],[1,"label-canvas"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),G(1,"canvas",2,0),_()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid))},dependencies:[Ce],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}.label-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.label-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;display:block;border-radius:var(--mat-card-elevated-container-shape, var(--mat-sys-corner-medium))}"]})}return a})();var Fg=["svgSlider"];function Hg(a,n){a&1&&G(0,"div",11)}var hh=(()=>{class a extends Se{svgElement=ie.required("svgSlider");dashboard=E(nt);signalkRequestsService=E(Gt);appService=E(Dt);labelColor=K(void 0);barColor=K(void 0);skRequestSub=new Pa;lineStartPx;lineWidthPx;lineEndPx;resizeTimeout;debounceTimeout;handlePosition=20;pathValue=0;lineStart=this.handlePosition;isDragStarted=!1;lineWidth="0px";VIEWBOX_WIDTH=200;LINE_START=20;LINE_WIDTH=160;colorMap=new Map([["contrast",{label:this.theme().contrastDim,bar:this.theme().contrast}],["blue",{label:this.theme().blueDim,bar:this.theme().blue}],["green",{label:this.theme().greenDim,bar:this.theme().green}],["pink",{label:this.theme().pinkDim,bar:this.theme().pink}],["orange",{label:this.theme().orangeDim,bar:this.theme().orange}],["purple",{label:this.theme().purpleDim,bar:this.theme().purple}],["grey",{label:this.theme().greyDim,bar:this.theme().grey}],["yellow",{label:this.theme().yellowDim,bar:this.theme().yellow}]]);valueChange$=new Qt;constructor(){super(),this.defaultConfig={displayName:"Slider Label",filterSelfPaths:!0,paths:{gaugePath:{description:"PUT Supported Numeric Path. IMPORTANT: Format must be set to (base)",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:null,showConvertUnitTo:!1,convertUnitTo:null,supportsPut:!0,sampleTime:500}},displayScale:{lower:0,upper:1,type:"linear"},enableTimeout:!1,dataTimeout:5,color:"contrast"},ne(()=>{this.theme()&&this.getColors(this.widgetProperties.config.color)})}ngOnInit(){this.validateConfig(),this.valueChange$.pipe(pi(e=>this.isWithinMargin(e,this.widgetProperties.config.displayScale.lower)?this.widgetProperties.config.displayScale.lower:this.isWithinMargin(e,this.widgetProperties.config.displayScale.upper)?this.widgetProperties.config.displayScale.upper:parseFloat(e.toFixed(2))),Us(200),Gs()).subscribe(e=>{this.sendValue(e)})}ngAfterViewInit(){this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.observeDataStream("gaugePath",e=>{if(!e||!e.data){this.handlePosition=this.mapValueToPosition(this.widgetProperties.config.displayScale.lower);return}this.updateHandlePosition(this.mapValueToPosition(e.data.value))}),this.skRequestSub?.unsubscribe(),this.subscribeSKRequest()}mapValueToPosition(e){let t=this.widgetProperties.config.displayScale.upper-this.widgetProperties.config.displayScale.lower,i=this.LINE_WIDTH;return(e-this.widgetProperties.config.displayScale.lower)/t*i+this.LINE_START}mapPositionToValue(e){let t=this.widgetProperties.config.displayScale.upper-this.widgetProperties.config.displayScale.lower,i=this.LINE_WIDTH;return(e-this.LINE_START)/i*t+this.widgetProperties.config.displayScale.lower}isWithinMargin(e,t){let i=(this.widgetProperties.config.displayScale.upper-this.widgetProperties.config.displayScale.lower)*.01;return Math.abs(e-t)<=i}subscribeSKRequest(){this.skRequestSub=this.signalkRequestsService.subscribeRequest().subscribe(e=>{if(e.widgetUUID==this.widgetProperties.uuid){let t=`Toggle Widget ${this.widgetProperties.config.displayName}: `;e.statusCode!=200&&(e.message?t+=e.message:t+=e.statusCode+" - "+e.statusCodeDescription,this.appService.sendSnackbarNotification(t,0))}})}sendValue(e){let t=this.widgetProperties.config.paths.gaugePath.path;this.signalkRequestsService.putRequest(t,e,this.widgetProperties.uuid)}updateConfig(e){this.widgetProperties.config=e,this.getColors(this.widgetProperties.config.color),this.calculateLineBounds(),this.startWidget()}onResized(){clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{this.calculateLineBounds()},200)}calculateLineBounds(){if(!this.svgElement()?.nativeElement){console.warn("[Slider Widget] SVG element is not initialized yet.");return}let e=this.svgElement().nativeElement.getBoundingClientRect(),t=this.LINE_START/this.VIEWBOX_WIDTH*e.width,i=this.LINE_WIDTH/this.VIEWBOX_WIDTH*e.width;this.lineStartPx=t,this.lineWidthPx=i,this.lineEndPx=this.lineStartPx+this.lineWidthPx}updateHandlePosition(e){this.handlePosition=e,this.lineWidth=`${e-this.lineStart}px`}getPointerX(e){return e.clientX-this.svgElement().nativeElement.getBoundingClientRect().left}onPointerDown(e){this.isDragStarted=!0,this.onPointerMove(e),e.stopPropagation(),e.preventDefault()}onPointerMove(e){if(this.isDragStarted){let t=this.getPointerX(e);if(t>=this.lineStartPx&&t<=this.lineEndPx){let i=(t-this.lineStartPx)/this.lineWidthPx*this.LINE_WIDTH+this.LINE_START;this.updateHandlePosition(i),this.handlePosition<=this.LINE_START?this.pathValue=this.widgetProperties.config.displayScale.lower:this.handlePosition>=this.LINE_START+this.LINE_WIDTH?this.pathValue=this.widgetProperties.config.displayScale.upper:this.pathValue=this.mapPositionToValue(this.handlePosition),this.valueChange$.next(this.pathValue)}}}onPointerUp(){this.isDragStarted=!1,this.valueChange$.next(this.pathValue)}onPointerLeave(){this.isDragStarted&&(this.isDragStarted=!1,this.valueChange$.next(this.pathValue))}getColors(e){let t=this.colorMap.get(e)||this.colorMap.get("contrast");this.labelColor.set(t.label),this.barColor.set(t.bar)}ngOnDestroy(){this.destroyDataStreams(),this.skRequestSub?.unsubscribe(),this.valueChange$.complete(),clearTimeout(this.debounceTimeout),clearTimeout(this.resizeTimeout)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-slider"]],viewQuery:function(t,i){t&1&&te(i.svgElement,Fg,5),t&2&&be()},features:[ce],decls:12,vars:9,consts:[["svgSlider",""],[3,"configChange","config","id"],[3,"text","color"],[1,"widgets-container",3,"onResize"],["width","100%","height","100%","viewBox","0 40 200 40"],["width","160","height","8","rx","4.5","id","rect3","x","20","y","56",1,"slider-bg-bar",2,"display","inline","stroke-width","1.57144"],["height","8","rx","4.5","id","rect3","x","20","y","56",2,"display","inline","stroke-width","1.57144"],["id","g22"],["cy","60","fill","#ffffff","id","circle3","r","19.549999",2,"display","inline","fill","#4d4d4d","fill-opacity","1","stroke","#8c8c8c","stroke-width","0.9","stroke-dasharray","none","stroke-opacity","1"],["cy","60","fill","#ffffff","id","circle3-3","r","17.950001",2,"display","inline","fill","#ffffff","fill-opacity","1","stroke","#e6e6e6","stroke-width","1.8","stroke-dasharray","none","stroke-opacity","0.97"],["cursor","pointer","width","200","height","40","x","0","y","40",2,"display","inline","fill","rgba(0, 0, 0, 0)","stroke","none","stroke-width","0.3","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0",3,"pointerdown","pointerup","pointermove","pointerleave"],[1,"widgetOverlay"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),G(1,"widget-title",2),v(2,"div",3),I("onResize",function(){return P(o),O(i.onResized())}),re(),v(3,"svg",4),G(4,"rect",5)(5,"rect",6),v(6,"g",7),G(7,"circle",8)(8,"circle",9),_(),v(9,"rect",10,0),I("pointerdown",function(l){return P(o),O(i.onPointerDown(l))})("pointerup",function(){return P(o),O(i.onPointerUp())})("pointermove",function(l){return P(o),O(i.onPointerMove(l))})("pointerleave",function(){return P(o),O(i.onPointerLeave())}),_()()(),De(11,Hg,1,0,"div",11),_()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),z("text",i.widgetProperties.config.displayName)("color",i.labelColor()),k(4),ae("width",i.lineWidth)("fill",i.barColor()),k(2),ae("cx",i.handlePosition),k(),ae("cx",i.handlePosition),k(3),Ae(i.dashboard.isDashboardStatic()?-1:11))},dependencies:[Ce,it,Ot,go],styles:[".widgets-container[_ngcontent-%COMP%]{display:block;position:absolute;left:0;right:0;top:15%;height:85%;width:100%;overflow:hidden;z-index:20;padding:0 20px}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent;z-index:21}.slider-bg-bar[_ngcontent-%COMP%]{fill:var(--mat-sys-inverse-on-surface)}"]})}return a})();var Ug=["rotatingDial"],Gg=["awaIndicator"],qg=["twaIndicator"],jg=["wptIndicator"],$g=["setIndicator"],Yg=["cogIndicator"],uh=([a,n],[e,t],[i,o])=>(Math.atan2(o-t,i-e)-Math.atan2(n-t,a-e)+3*Math.PI)%(2*Math.PI)-Math.PI,mh=(()=>{class a{rotatingDial=ie.required("rotatingDial");awaIndicator=ie.required("awaIndicator");twaIndicator=ie.required("twaIndicator");wptIndicator=ie.required("wptIndicator");setIndicator=ie.required("setIndicator");cogIndicator=ie.required("cogIndicator");compassHeading=B.required();courseOverGroundAngle=B(void 0);courseOverGroundEnabled=B.required();trueWindAngle=B.required();twsEnabled=B.required();trueWindSpeed=B.required();trueWindSpeedUnit=B.required();appWindAngle=B.required();awsEnabled=B.required();appWindSpeed=B.required();appWindSpeedUnit=B.required();laylineAngle=B(void 0);closeHauledLineEnabled=B.required();sailSetupEnabled=B.required();windSectorEnabled=B.required();driftEnabled=B.required();driftSet=B(void 0);driftFlow=B(void 0);waypointAngle=B(void 0);waypointEnabled=B.required();trueWindMinHistoric=B(void 0);trueWindMidHistoric=B(void 0);trueWindMaxHistoric=B(void 0);compass={oldValue:0,newValue:0};twa={oldValue:0,newValue:0};awa={oldValue:0,newValue:0};wpt={oldValue:0,newValue:0};cog={oldValue:0,newValue:0};set={oldValue:0,newValue:0};headingValue="--";appWindSpeedDisplay=ct(()=>{let e=this.appWindSpeed();return e==null?"--":e.toFixed(1)});trueWindSpeedDisplay=ct(()=>{let e=this.trueWindSpeed();return e==null?"--":e.toFixed(1)});trueWindHeading=0;waypointActive=K(!1);flow=ct(()=>{let e=this.driftFlow();return e==null?"--":e.toFixed(1)});portLaylinePrev=0;stbdLaylinePrev=0;portLaylineAnimId=null;stbdLaylineAnimId=null;closeHauledLinePortPath="M 500,500 500,500";closeHauledLineStbdPath="M 500,500 500,500";portSectorPrev={min:0,mid:0,max:0};stbdSectorPrev={min:0,mid:0,max:0};portSectorAnimId=null;stbdSectorAnimId=null;portWindSectorPath="";stbdWindSectorPath="";animationFrameIds=new WeakMap;ngZone=E(Je);CENTER=500;RADIUS=350;ANIMATION_DURATION=1e3;constructor(){ne(()=>{let e=this.waypointEnabled();Ke(()=>{this.waypointActive.set(e)})}),ne(()=>{let e=parseFloat(this.compassHeading().toFixed(0));e!==null&&Ke(()=>{this.compass.oldValue=this.compass.newValue,this.compass.newValue=e,this.headingValue=e.toString(),this.rotatingDial()?.nativeElement&&(vt(this.rotatingDial().nativeElement,-this.compass.oldValue,-this.compass.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines(),this.updateWindSectors())})}),ne(()=>{let e=parseFloat(this.courseOverGroundAngle().toFixed(0));e!=null&&Ke(()=>{this.cog.oldValue=this.cog.newValue,this.cog.newValue=e-this.compass.newValue,this.cogIndicator()?.nativeElement&&vt(this.cogIndicator().nativeElement,this.cog.oldValue,this.cog.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),ne(()=>{let e=this.waypointAngle();Ke(()=>{if(!e){this.waypointActive.set(!1);return}this.waypointEnabled()?this.waypointActive.set(!0):this.waypointActive.set(!1),this.wpt.oldValue=this.wpt.newValue,this.wpt.newValue=e,this.wptIndicator()?.nativeElement&&vt(this.wptIndicator().nativeElement,this.wpt.oldValue,this.wpt.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),ne(()=>{let e=parseFloat(this.appWindAngle().toFixed(0));e!=null&&Ke(()=>{this.awa.oldValue=this.awa.newValue,this.awa.newValue=e,this.awaIndicator()?.nativeElement&&vt(this.awaIndicator().nativeElement,this.awa.oldValue,this.awa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),ne(()=>{let e=parseFloat(this.trueWindAngle().toFixed(0));e!=null&&Ke(()=>{this.twa.oldValue=this.twa.newValue,this.trueWindHeading=e,this.twa.newValue=this.addHeading(this.trueWindHeading,this.compass.newValue*-1),this.twaIndicator()?.nativeElement&&(vt(this.twaIndicator().nativeElement,this.twa.oldValue,this.twa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines())})}),ne(()=>{let e=parseFloat(this.driftSet().toFixed(0));e!=null&&Ke(()=>{this.set.oldValue=this.set.newValue,this.set.newValue=e,this.setIndicator()?.nativeElement&&vt(this.setIndicator().nativeElement,this.set.oldValue,this.set.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})})}updateCloseHauledLines(){if(!this.closeHauledLineEnabled())return;let e=this.addHeading(Number(this.awa.newValue),this.laylineAngle()*-1);this.animateLayline(this.portLaylinePrev,e,!0),this.portLaylinePrev=e;let t=this.addHeading(Number(this.awa.newValue),this.laylineAngle());this.animateLayline(this.stbdLaylinePrev,t,!1),this.stbdLaylinePrev=t}animateLayline(e,t,i){i&&this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),!i&&this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId);let o=this.ANIMATION_DURATION,r=performance.now(),l=s=>s<.5?4*s*s*s:1-Math.pow(-2*s+2,3)/2,d=s=>{let c=s-r,m=Math.min(c/o,1),f=l(m),y=t-e;y>180&&(y-=360),y<-180&&(y+=360);let x=(e+y*f+360)%360*Math.PI/180,V=Math.floor(this.RADIUS*Math.sin(x)+this.CENTER),H=Math.floor(this.RADIUS*Math.cos(x)*-1+this.CENTER);if(i?this.closeHauledLinePortPath=`M ${this.CENTER},${this.CENTER} L ${V},${H}`:this.closeHauledLineStbdPath=`M ${this.CENTER},${this.CENTER} L ${V},${H}`,m<1){let Z=requestAnimationFrame(d);i?this.portLaylineAnimId=Z:this.stbdLaylineAnimId=Z}else i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null},p=requestAnimationFrame(d);i?this.portLaylineAnimId=p:this.stbdLaylineAnimId=p}windSectorsInitialized=!1;updateWindSectors(){if(!this.windSectorEnabled()||this.trueWindMinHistoric()==null||this.trueWindMidHistoric()==null||this.trueWindMaxHistoric()==null)return;let e={min:this.trueWindMinHistoric(),mid:this.trueWindMidHistoric(),max:this.trueWindMaxHistoric()},t={min:this.trueWindMinHistoric(),mid:this.trueWindMidHistoric(),max:this.trueWindMaxHistoric()};if(!this.windSectorsInitialized){this.portSectorPrev=e,this.stbdSectorPrev=t,this.windSectorsInitialized=!0,this.animateWindSector(e,e,!0),this.animateWindSector(t,t,!1);return}this.animateWindSector(this.portSectorPrev,e,!0),this.animateWindSector(this.stbdSectorPrev,t,!1),this.portSectorPrev=e,this.stbdSectorPrev=t}animateWindSector(e,t,i){i&&this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),!i&&this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId);let o=this.ANIMATION_DURATION,r=performance.now(),l=s=>s<.5?4*s*s*s:1-Math.pow(-2*s+2,3)/2,d=s=>{let c=s-r,m=Math.min(c/o,1),f=l(m),y=(lt,ti)=>lt+(ti-lt)*f,S=y(e.min,t.min),x=y(e.mid,t.mid),V=y(e.max,t.max),H=this.addHeading(this.addHeading(S,Number(this.compass.newValue)*-1),this.laylineAngle()*(i?-1:1)),Z=this.addHeading(this.addHeading(x,Number(this.compass.newValue)*-1),this.laylineAngle()*(i?-1:1)),me=this.addHeading(this.addHeading(V,Number(this.compass.newValue)*-1),this.laylineAngle()*(i?-1:1)),Oe=this.RADIUS*Math.sin(H*Math.PI/180)+this.CENTER,Be=this.RADIUS*Math.cos(H*Math.PI/180)*-1+this.CENTER,ye=this.RADIUS*Math.sin(Z*Math.PI/180)+this.CENTER,X=this.RADIUS*Math.cos(Z*Math.PI/180)*-1+this.CENTER,Te=this.RADIUS*Math.sin(me*Math.PI/180)+this.CENTER,Ue=this.RADIUS*Math.cos(me*Math.PI/180)*-1+this.CENTER,ht=Math.abs(uh([Oe,Be],[ye,X],[Te,Ue]))>Math.PI/2?0:1,Qe=uh([Te,Ue],[Oe,Be],[ye,X])>0?0:1,Xe=`M ${this.CENTER},${this.CENTER} L ${Oe},${Be} A ${this.RADIUS},${this.RADIUS} 0 ${ht} ${Qe} ${Te},${Ue} z`;if(i?this.portWindSectorPath=Xe:this.stbdWindSectorPath=Xe,m<1){let lt=requestAnimationFrame(d);i?this.portSectorAnimId=lt:this.stbdSectorAnimId=lt}else i?this.portSectorAnimId=null:this.stbdSectorAnimId=null},p=requestAnimationFrame(d);i?this.portSectorAnimId=p:this.stbdSectorAnimId=p}addHeading(e=0,t=0){let i=e+t;for(;i>359;)i=i-359;for(;i<0;)i=i+359;return i}ngOnDestroy(){this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId),this.portLaylineAnimId=null,this.stbdLaylineAnimId=null,this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null;let e=[this.rotatingDial(),this.awaIndicator(),this.twaIndicator(),this.wptIndicator(),this.setIndicator(),this.cogIndicator()];for(let t of e){let i=t?.nativeElement;if(!i)continue;let o=this.animationFrameIds.get(i);o&&cancelAnimationFrame(o),this.animationFrameIds.delete(i)}}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["svg-racesteer"]],viewQuery:function(t,i){t&1&&(te(i.rotatingDial,Ug,5),te(i.awaIndicator,Gg,5),te(i.twaIndicator,qg,5),te(i.wptIndicator,jg,5),te(i.setIndicator,$g,5),te(i.cogIndicator,Yg,5)),t&2&&be(6)},inputs:{compassHeading:[1,"compassHeading"],courseOverGroundAngle:[1,"courseOverGroundAngle"],courseOverGroundEnabled:[1,"courseOverGroundEnabled"],trueWindAngle:[1,"trueWindAngle"],twsEnabled:[1,"twsEnabled"],trueWindSpeed:[1,"trueWindSpeed"],trueWindSpeedUnit:[1,"trueWindSpeedUnit"],appWindAngle:[1,"appWindAngle"],awsEnabled:[1,"awsEnabled"],appWindSpeed:[1,"appWindSpeed"],appWindSpeedUnit:[1,"appWindSpeedUnit"],laylineAngle:[1,"laylineAngle"],closeHauledLineEnabled:[1,"closeHauledLineEnabled"],sailSetupEnabled:[1,"sailSetupEnabled"],windSectorEnabled:[1,"windSectorEnabled"],driftEnabled:[1,"driftEnabled"],driftSet:[1,"driftSet"],driftFlow:[1,"driftFlow"],waypointAngle:[1,"waypointAngle"],waypointEnabled:[1,"waypointEnabled"],trueWindMinHistoric:[1,"trueWindMinHistoric"],trueWindMidHistoric:[1,"trueWindMidHistoric"],trueWindMaxHistoric:[1,"trueWindMaxHistoric"]},decls:156,vars:32,consts:[["rotatingDial",""],["wptIndicator",""],["setIndicator",""],["cogIndicator",""],["awaIndicator",""],["twaIndicator",""],["viewBox","0 0 1000 1000"],["id","defs1"],["id","linearGradient18"],["offset","0",1,"boat",2,"stop-opacity","0.71372495"],["offset","1",1,"boat",2,"stop-opacity","0"],["id","linearGradient16"],["id","linearGradient13"],["offset","0.41176471",1,"drift-arrow",2,"stop-opacity","1"],["offset","1",1,"drift-arrow",2,"stop-opacity","0"],["id","swatch4"],["offset","0","id","stop4",2,"stop-color","#000000","stop-opacity","1"],["clipPathUnits","userSpaceOnUse","id","clipPath16"],["id","ellipse16","cx","311.24539","cy","-1516.3778","rx","194.27342","ry","181.83022",2,"display","inline","fill","#9a9300","fill-opacity","1","stroke","none","stroke-width","55","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],[0,"xlink","href","#linearGradient13","id","linearGradient14","x1","453.48047","y1","583.62891","x2","638.11328","y2","583.62891","gradientUnits","userSpaceOnUse","gradientTransform","matrix(0.00723393,1.2388183,-1.0538241,0.00615367,1111.2051,-179.73465)"],[0,"xlink","href","#linearGradient16","id","linearGradient17","x1","-502.04896","y1","439.35551","x2","-316","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],[0,"xlink","href","#linearGradient18","id","linearGradient19","x1","495.83999","y1","439.35551","x2","681.88895","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],["id","layerBackground",2,"display","inline"],["id","boat",2,"display","inline"],["id","portSide","d","M 498.75049,208.89453 A 267.09439,554.67401 0 0 1 678.45974,767.81661",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient19)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","starboardSide","d","m -499.13846,208.89453 a 267.09439,554.67401 0 0 1 179.70925,558.92208","transform","scale(-1,1)",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient17)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","LayerLayline"],["id","PortLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","StbdLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","LayerWindShift"],["id","portSectorShift",1,"wind-sector-port",2,"fill-opacity","0.5","stroke","none"],["id","StbdSectorShift",1,"wind-sector-stbd",2,"fill-opacity","0.5","stroke","none"],["id","layerCompass"],["id","fixedDial"],["id","portStarboardBackground","d","M 499.99997,10.520805 A 489.47916,489.47916 0 0 0 10.520805,499.99997 489.47916,489.47916 0 0 0 499.99997,989.47913 489.47916,489.47916 0 0 0 989.47913,499.99997 489.47916,489.47916 0 0 0 499.99997,10.520805 Z m 0,132.291665 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"fixed-dial-background",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","port","d","M 93.283801,265.18231 A 469.63541,469.63541 0 0 1 339.37522,58.687079",1,"port",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","starboard","d","M 660.62476,58.687069 A 469.63541,469.63541 0 0 1 906.71619,265.18228",1,"starboard",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","barsAndText",1,"contrast-stroke",2,"display","inline"],["d","m 416.35095,19.837399 2.78142,15.77426","id","path199",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 334.23173,41.658798 5.47834,15.051615","id","path200",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 260.27336,81.806174 12.55151,21.739856","id","path37",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 187.44581,126.00035 10.29591,12.2702","id","path197",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 127.23918,185.95785 12.27019,10.29591","id","path198",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 83.252815,257.66724 21.739865,12.55151","id","path166",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 42.289518,332.39273 15.05162,5.47835","id","path195",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 20.127799,414.42077 15.774251,2.78142","id","path196",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 17.879075,498.47765 H 42.982096","id","path167",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 19.776759,583.71187 15.77426,-2.78142","id","path193",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 41.598167,665.8311 15.051615,-5.47834","id","path194",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 81.668963,739.71246 103.40883,727.16095","id","path168",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 125.93981,812.61701 12.2702,-10.29591","id","path191",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 185.89732,872.82365 10.29591,-12.27019","id","path192",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 257.53004,916.73298 12.55151,-21.73985","id","path169",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 332.33219,957.7732 5.47835,-15.05162","id","path189",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 414.36024,979.93493 2.78142,-15.77425","id","path190",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 498.34046,982.10672 V 957.0037","id","path170",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 583.65133,980.28596 580.86991,964.5117","id","path187",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 665.77057,958.46456 -5.47834,-15.05161","id","path188",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 739.57526,918.31683 727.02375,896.57698","id","path171",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 812.55647,874.12301 802.26056,861.85282","id","path185",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 872.76312,814.16551 860.49293,803.8696","id","path186",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 916.59579,742.45577 894.85593,729.90426","id","path172",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 957.71266,667.73063 -15.05161,-5.47834","id","path183",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 979.8744,585.70259 -15.77425,-2.78142","id","path184",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 981.96954,501.64535 -25.10304,10e-6","id","path173",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 980.22542,416.41149 -15.77425,2.78143","id","path181",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 958.40403,334.29226 -15.05161,5.47834","id","path182",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 918.17964,260.41055 -21.73986,12.55151","id","path174",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 874.06247,187.50636 -12.27018,10.29591","id","path180",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 817.34594,130.05494 -10.40259,12.17987","id","path179",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 742.31857,83.390025 729.76706,105.12988","id","path175",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 667.6701,42.350172 -5.47834,15.051615","id","path178",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 585.64206,20.188432 -2.78142,15.77425","id","path176",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 501.50816,18.016286 V 43.119307","id","path177",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","rotatingDialBackplate","d","M 499.99997,50.208304 A 449.79166,449.79166 0 0 0 50.208304,499.99997 449.79166,449.79166 0 0 0 499.99997,949.79163 449.79166,449.79166 0 0 0 949.79163,499.99997 449.79166,449.79166 0 0 0 499.99997,50.208304 Z m 0,92.604166 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"rotating-dial-Backplate",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],[0,"xml","space","preserve","x","181.91386","y","284.25186","id","text3","transform","rotate(-30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan3","x","181.91386","y","284.25186",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-183.53558","y","283.74811","id","text14","transform","rotate(-60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan14","x","-183.53558","y","283.74811",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-499.70761","y","100.95312","id","text15","transform","rotate(-90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan15","x","-499.70761","y","100.95312",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.66119","y","-216.36243","id","text16","transform","rotate(-120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["x","-681.66119","y","-216.36243","id","tspan25",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.06616","y","-581.71271","id","text17","transform","rotate(-150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan17","x","-681.06616","y","-581.71271",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-498.3313","y","-897.40875","id","text18","transform","scale(-1)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan18","x","-498.3313","y","-897.40875",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-184.41313","y","-1080.8452","id","text19","transform","rotate(150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan19","x","-184.41313","y","-1080.8452",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","181.57225","y","-1080.8853","id","text20","transform","rotate(120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan20","x","181.57225","y","-1080.8853",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","501.42661","y","-896.93701","id","text21","transform","rotate(90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan21","x","501.42661","y","-896.93701",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","682.35815","y","-579.63336","id","text22","transform","rotate(60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan22","x","682.35815","y","-579.63336",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","681.81525","y","-214.27321","id","text23","transform","rotate(30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan23","x","681.81525","y","-214.27321",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","500.15503","y","101.96342","id","text24",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan24","x","500.15503","y","101.96342",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],["clip-path","url(#clipPath16)","d","m 416.36313,-1521.3937 c 371.15015,24.6522 731.95257,192.9774 983.98757,467.456 227.2972,244.24389 363.1732,572.3808 369.4045,906.42978 15.9331,499.10271 -269.2071,986.17861 -700.5178,1232.88522 -485.08308,290.4843 -1134.555606,269.7346 -1599.2788,-52.7169 -404.5062,-269.24461 -653.2224,-759.35388 -614.1746,-1245.84043 30.2148,-487.61814 344.18931,-937.89997 780.52695,-1152.15867 176.96718,-89.2092 371.8823084,-142.3103 569.54914,-156.0363","transform","matrix(0.28310615,0,0,0.32000828,411.88452,661.64815)",1,"next-waypoint-bar",2,"display","inline","fill","none","stroke-width","30","stroke-miterlimit","0"],["id","path6341","cx","500","cy","175.00002","rx","17.361122","ry","17.361118",1,"next-waypoint",2,"display","inline","fill","none","stroke-width","15.2778","stroke-dasharray","none"],["id","setArrow","d","m 563.93337,480.60403 -64.4901,-94.9673 -63.37665,95.71396 58.48691,-30.71299 0.77713,133.08346 c 0.0992,16.99331 2.52916,30.65913 5.44822,30.64209 2.91911,-0.0171 5.18926,-13.71032 5.09001,-30.70362 l -0.77782,-133.20444 z",2,"fill","url(#linearGradient14)","stroke","none","stroke-width","1.18648"],["id","layerCounter"],["id","twsCounter"],[0,"xml","space","preserve","x","904.27722","y","150.88913","id","text43",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","903.84814","y","114.73512","id","text42",1,"true-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","905.25897","y","52.894646","id","text41",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","awsCounter"],[0,"xml","space","preserve","x","94.554222","y","150.88913","id","text39",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","94.580925","y","114.63747","id","text40",1,"app-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","95.967644","y","52.894646","id","text39-7",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","layerCurrent"],["id","text11",0,"xml","space","preserve","x","499.78842","y","523.55145",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],["id","layerIndicators",2,"display","inline"],["d","m 506.20767,172.99458 a 6.3888631,8.8250643 0 0 1 -6.38888,8.82508 6.3888631,8.8250643 0 0 1 -6.38888,-8.82508 6.3888631,8.8250643 0 0 1 6.38888,-8.82509 6.3888631,8.8250643 0 0 1 6.38888,8.82509 z M 476.25472,30.811298 493.47058,13.265068 c 3.6173,-3.6867571 9.44162,-3.6867571 13.05892,0 l 17.21586,17.546106 c 3.6173,3.686743 3.6173,9.622786 0,13.309544 l -17.21595,17.54623 c -3.61721,3.686757 -9.44153,3.686757 -13.05893,0 L 476.25472,44.120841 c -3.6174,-3.686743 -3.6174,-9.622924 0,-13.309543 z m 17.20533,-16.510116 h 12.77766 V 173.26408 h -12.77766 z",1,"course-over-ground",2,"stroke-width","14.7329","stroke-linecap","square"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.7935953,0,0,0.92686935,101.84848,11.000842)",1,"app-wind",2,"display","inline","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110",1,"card-color",2,"font-weight","bold","font-size","70px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.60410307,0,0,0.70555435,196.91787,21.152867)",1,"true-wind",2,"display","inline","stroke","none","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110","id","text10",1,"card-color",2,"font-weight","bold","font-size","60px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["id","layerHeading",2,"display","inline"],["id","rect1","width","256.47919","height","108.5428","x","371.76041","y","10.805443","rx","23.757372",1,"heading-background",2,"stroke-width","4.43107","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","0.509946"],["x","511.29395","y","102.86786",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","106.667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","5","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"]],template:function(t,i){t&1&&(re(),A(0,"svg",6)(1,"defs",7)(2,"linearGradient",8),Q(3,"stop",9)(4,"stop",10),W(),A(5,"linearGradient",11),Q(6,"stop",9)(7,"stop",10),W(),A(8,"linearGradient",12),Q(9,"stop",13)(10,"stop",14),W(),A(11,"linearGradient",15),Q(12,"stop",16),W(),A(13,"clipPath",17),Q(14,"ellipse",18),W(),Q(15,"linearGradient",19)(16,"linearGradient",20)(17,"linearGradient",21),W(),A(18,"g",22)(19,"g",23),Q(20,"path",24)(21,"path",25),W()(),A(22,"g",26),Q(23,"path",27)(24,"path",28),W(),A(25,"g",29),Q(26,"path",30)(27,"path",31),W(),A(28,"g",32)(29,"g",33),Q(30,"path",34)(31,"path",35)(32,"path",36),W(),A(33,"g",null,0)(35,"g",37),Q(36,"path",38)(37,"path",39)(38,"path",40)(39,"path",41)(40,"path",42)(41,"path",43)(42,"path",44)(43,"path",45)(44,"path",46)(45,"path",47)(46,"path",48)(47,"path",49)(48,"path",50)(49,"path",51)(50,"path",52)(51,"path",53)(52,"path",54)(53,"path",55)(54,"path",56)(55,"path",57)(56,"path",58)(57,"path",59)(58,"path",60)(59,"path",61)(60,"path",62)(61,"path",63)(62,"path",64)(63,"path",65)(64,"path",66)(65,"path",67)(66,"path",68)(67,"path",69)(68,"path",70)(69,"path",71)(70,"path",72)(71,"path",73)(72,"path",74),A(73,"text",75)(74,"tspan",76),b(75,"330"),W()(),A(76,"text",77)(77,"tspan",78),b(78,"300"),W()(),A(79,"text",79)(80,"tspan",80),b(81,"W"),W()(),A(82,"text",81)(83,"tspan",82),b(84,"240"),W()(),A(85,"text",83)(86,"tspan",84),b(87,"210"),W()(),A(88,"text",85)(89,"tspan",86),b(90,"S"),W()(),A(91,"text",87)(92,"tspan",88),b(93,"150"),W()(),A(94,"text",89)(95,"tspan",90),b(96,"120"),W()(),A(97,"text",91)(98,"tspan",92),b(99,"E"),W()(),A(100,"text",93)(101,"tspan",94),b(102,"60"),W()(),A(103,"text",95)(104,"tspan",96),b(105,"30"),W()(),A(106,"text",97)(107,"tspan",98),b(108,"N"),W()()(),A(109,"g",null,1),Q(111,"path",99)(112,"ellipse",100),W(),A(113,"g",null,2),Q(115,"path",101),W()()(),A(116,"g",102)(117,"g",103)(118,"text",104),b(119),W(),A(120,"text",105),b(121),W(),A(122,"text",106),b(123,"TWS"),W()(),A(124,"g",107)(125,"text",108),b(126),W(),A(127,"text",109),b(128),W(),A(129,"text",110),b(130,"AWS"),W()()(),A(131,"g",111)(132,"text",112),b(133),W()(),A(134,"g",113)(135,"g",null,3),Q(137,"path",114),W(),A(138,"g",null,4),Q(140,"path",115),A(141,"text",116),b(142,"A"),W()(),A(143,"g",null,5),Q(145,"path",117),A(146,"text",118),b(147,"T"),W(),b(148,` attributeName="transform" type="rotate" [attr.from]="trueWind.oldDegreeIndicator+' 500 500'" [attr.to]="trueWind.newDegreeIndicator+' 500 500'" begin="indefinite" dur="0.5s" keySplines="0.25 0.1 0.25 1" keyTimes="0;1" calcMode="spline" additive="replace" fill="freeze" /> `),W()(),A(149,"g",119),Q(150,"rect",120),A(151,"text",121)(152,"tspan"),b(153),A(154,"tspan"),b(155,"\xB0"),W()()()()()),t&2&&(k(22),we("display",i.closeHauledLineEnabled()?"inline":"none"),k(),we("display",i.trueWindAngle()!=null?"inline":"none"),ae("d",i.closeHauledLineStbdPath),k(),we("display",i.trueWindAngle()!=null?"inline":"none"),ae("d",i.closeHauledLinePortPath),k(),we("display",i.windSectorEnabled()?"inline":"none"),k(),we("display",i.portWindSectorPath!="none"?"inline":"none"),ae("d",i.portWindSectorPath),k(),we("display",i.portWindSectorPath!="none"?"inline":"none"),ae("d",i.stbdWindSectorPath),k(82),ae("display",i.waypointActive()?"inline":"none"),k(4),we("display",i.driftEnabled()?"inline":"none"),k(4),we("display",i.twsEnabled()?"inline":"none"),k(2),He(i.trueWindSpeedUnit()),k(2),He(i.trueWindSpeedDisplay()),k(3),we("display",i.awsEnabled()?"inline":"none"),k(2),He(i.appWindSpeedUnit()),k(2),He(i.appWindSpeedDisplay()),k(3),we("display",i.driftEnabled()?"inline":"none"),k(2),He(i.flow()),k(2),ae("display",i.courseOverGroundEnabled()?"inline":"none"),k(18),He(i.headingValue))},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}svg[_ngcontent-%COMP%]{position:absolute;height:100%;width:100%;left:0;top:0}.fixed-dial-background[_ngcontent-%COMP%]{fill:var(--kip-grey-color)}.rotating-dial-Backplate[_ngcontent-%COMP%]{fill:var(--mat-sys-background)}.starboard[_ngcontent-%COMP%]{stroke:var(--kip-starboard-color)}.port[_ngcontent-%COMP%]{stroke:var(--kip-port-color)}.heading-background[_ngcontent-%COMP%]{stroke:var(--kip-grey-color);fill:var(--kip-widget-card-background-color)}.boat[_ngcontent-%COMP%]{stop-color:var(--kip-grey-color)!important}.contrast-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.contrast-stroke[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.card-color[_ngcontent-%COMP%]{fill:var(--kip-widget-card-background-color)}.true-wind[_ngcontent-%COMP%]{fill:var(--kip-yellow-color)}.true-wind-label[_ngcontent-%COMP%]{fill:var(--kip-yellow-dim-color)}.app-wind[_ngcontent-%COMP%]{fill:var(--kip-orange-color)}.app-wind-label[_ngcontent-%COMP%]{fill:var(--kip-orange-dim-color)}.course-over-ground[_ngcontent-%COMP%]{fill:var(--kip-pink-color)}.next-waypoint[_ngcontent-%COMP%]{stroke:var(--kip-green-color)}.next-waypoint-bar[_ngcontent-%COMP%]{stroke:var(--kip-grey-color)}.laylines[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.wind-sector-port[_ngcontent-%COMP%]{fill:var(--kip-port-color)}.wind-sector-stbd[_ngcontent-%COMP%]{fill:var(--kip-starboard-color)}.drift-arrow[_ngcontent-%COMP%]{stop-color:var(--kip-blue-color)}"]})}return a})();var ph=(()=>{class a extends Se{zones=E(Je);currentHeading=0;courseOverGroundAngle=0;appWindAngle=0;appWindSpeed=0;appWindSpeedUnit="";trueWindAngle=0;trueWindSpeed=0;trueWindSpeedUnit="";driftFlow=0;driftSet=0;waypointAngle=0;historicalWindDirection=[];trueWindMinHistoric;trueWindMidHistoric;trueWindMaxHistoric;windSectorObservableSub=null;constructor(){super(),this.defaultConfig={filterSelfPaths:!0,paths:{headingPath:{description:"True Heading",path:"self.navigation.headingTrue",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},appWindAngle:{description:"Apparent Wind Angle",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},appWindSpeed:{description:"Apparent Wind Speed",path:"self.environment.wind.speedApparent",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500},trueWindAngle:{description:"True Wind Angle",path:"self.environment.wind.angleTrueWater",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},trueWindSpeed:{description:"True Wind Speed",path:"self.environment.wind.speedTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500},courseOverGround:{description:"True Course Over Ground",path:"self.navigation.courseOverGroundTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",showConvertUnitTo:!1,convertUnitTo:"deg",sampleTime:500},nextWaypointBearing:{description:"Next Waypoint True Bearing",path:"self.navigation.courseGreatCircle.nextPoint.bearingTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},set:{description:"True Drift Set",path:"self.environment.current.setTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},drift:{description:"Drift Speed Impact",path:"self.environment.current.drift",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500}},windSectorEnable:!0,windSectorWindowSeconds:5,laylineEnable:!0,laylineAngle:40,waypointEnable:!0,courseOverGroundEnable:!0,driftEnable:!0,awsEnable:!0,twsEnable:!0,sailSetupEnable:!1,enableTimeout:!1,dataTimeout:5}}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.stopWindSectors(),this.appWindSpeedUnit=this.widgetProperties.config.paths.trueWindSpeed.convertUnitTo,this.trueWindSpeedUnit=this.widgetProperties.config.paths.appWindSpeed.convertUnitTo,this.observeDataStream("headingPath",e=>{e.data.value==null&&(e.data.value=0),this.currentHeading=e.data.value}),this.observeDataStream("courseOverGround",e=>{e.data.value==null&&(e.data.value=0),this.courseOverGroundAngle=e.data.value}),this.observeDataStream("drift",e=>{e.data.value==null&&(e.data.value=0),this.driftFlow=e.data.value}),this.observeDataStream("set",e=>{e.data.value==null&&(e.data.value=0),this.driftSet=e.data.value}),this.observeDataStream("nextWaypointBearing",e=>{e.data.value<0?this.waypointAngle=360+e.data.value:this.waypointAngle=e.data.value}),this.observeDataStream("appWindAngle",e=>{if(e.data.value==null&&(e.data.value=0),e.data.value<0?this.appWindAngle=360+e.data.value:this.appWindAngle=e.data.value,this.widgetProperties.config.windSectorEnable){let t=this.addHeading(this.currentHeading,e.data.value);this.addHistoricalWindDirection(t)}}),this.observeDataStream("appWindSpeed",e=>{e.data.value==null&&(e.data.value=0),this.appWindSpeed=e.data.value}),this.observeDataStream("trueWindSpeed",e=>{e.data.value==null&&(e.data.value=0),this.trueWindSpeed=e.data.value}),this.observeDataStream("trueWindAngle",e=>{e.data.value==null&&(e.data.value=0);let t=this.widgetProperties.config.paths.trueWindAngle.path;t.includes("angleTrueWater")||t.includes("angleTrueGround")?this.trueWindAngle=this.addHeading(this.currentHeading,e.data.value):this.trueWindAngle=e.data.value}),this.startWindSectors()}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}ngOnDestroy(){this.destroyDataStreams(),this.stopWindSectors()}startWindSectors(){this.zones.runOutsideAngular(()=>{this.windSectorObservableSub=Ra(500).subscribe(()=>{this.historicalCleanup()})})}addHistoricalWindDirection(e){this.historicalWindDirection.push({timestamp:Date.now(),windDirection:e});let t=this.arcForAngles(this.historicalWindDirection.map(i=>i.windDirection));this.trueWindMinHistoric=t.min,this.trueWindMaxHistoric=t.max,this.trueWindMidHistoric=t.mid}arcForAngles(e){return!e||e.length===0?{min:0,max:0,mid:0}:e.slice(1).reduce((i,o)=>{let r=o;for(;r<i.min-180;)r+=360;for(;r>i.max+180;)r-=360;return i.min=Math.min(i.min,r),i.max=Math.max(i.max,r),i.mid=(i.max-i.min)/2+i.min,i},{min:e[0],max:e[0],mid:e[0]})}historicalCleanup(){let e=Date.now()-this.widgetProperties.config.windSectorWindowSeconds*1e3;this.historicalWindDirection=this.historicalWindDirection.filter(t=>t.timestamp>=e)}stopWindSectors(){this.windSectorObservableSub?.unsubscribe()}addHeading(e,t){let i=(e+t)%360;return i<0&&(i+=360),i}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-racesteer"]],features:[ce],decls:2,vars:25,consts:[[3,"configChange","config","id"],[3,"compassHeading","courseOverGroundAngle","courseOverGroundEnabled","trueWindAngle","twsEnabled","trueWindSpeed","trueWindSpeedUnit","appWindAngle","awsEnabled","appWindSpeed","appWindSpeedUnit","laylineAngle","closeHauledLineEnabled","windSectorEnabled","driftEnabled","driftFlow","driftSet","waypointAngle","waypointEnabled","trueWindMinHistoric","trueWindMidHistoric","trueWindMaxHistoric","sailSetupEnabled"]],template:function(t,i){t&1&&(v(0,"widget-host",0),ve("configChange",function(r){return fe(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),G(1,"svg-racesteer",1),_()),t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),z("compassHeading",i.currentHeading)("courseOverGroundAngle",i.courseOverGroundAngle)("courseOverGroundEnabled",i.widgetProperties.config.courseOverGroundEnable)("trueWindAngle",i.trueWindAngle)("twsEnabled",i.widgetProperties.config.twsEnable)("trueWindSpeed",i.trueWindSpeed)("trueWindSpeedUnit",i.trueWindSpeedUnit)("appWindAngle",i.appWindAngle)("awsEnabled",i.widgetProperties.config.awsEnable)("appWindSpeed",i.appWindSpeed)("appWindSpeedUnit",i.appWindSpeedUnit)("laylineAngle",i.widgetProperties.config.laylineAngle)("closeHauledLineEnabled",i.widgetProperties.config.laylineEnable)("windSectorEnabled",i.widgetProperties.config.windSectorEnable)("driftEnabled",i.widgetProperties.config.driftEnable)("driftFlow",i.driftFlow)("driftSet",i.driftSet)("waypointAngle",i.waypointAngle)("waypointEnabled",i.widgetProperties.config.waypointEnable)("trueWindMinHistoric",i.trueWindMinHistoric)("trueWindMidHistoric",i.trueWindMidHistoric)("trueWindMaxHistoric",i.trueWindMaxHistoric)("sailSetupEnabled",i.defaultConfig.sailSetupEnable))},dependencies:[mh,Ce],encapsulation:2})}return a})();var Kg=["widgetDataChart"];wt.register(On,Pn,En,Dn,Mn,An,no,ao);var gh=(()=>{class a extends Se{ngZone=E(Je);_dataset=E(At);canvasService=E(tt);widgetDataChart=ie("widgetDataChart",{read:Ye});lineChartData={datasets:[]};lineChartOptions={parsing:!1,datasets:{line:{pointRadius:0,pointHoverRadius:0,tension:.3}},animations:{tension:{easing:"easeInOutCubic"}}};lineChartType="line";chart;_dsDirectionSub=null;_dsSpeedSub=null;datasetConfig=null;dataSourceInfo=null;xCenter=null;xStep=null;xCenterSpeed=null;xStepSpeed=null;CENTER_LINE_WIDTH=4;GRID_LINE_WIDTH=1;EDGE_EXTEND_UP_PX=42;EDGE_SPEED_LABEL_OFFSET=5;EDGE_DIR_LABEL_OFFSET=5;TICK_LABEL_FONT_SIZE=20;CENTER_LABEL_FONT_SIZE=22;SPEED_VALUE_FONT_SIZE=62;TOP_VALUE_Y_OFFSET=62;TOP_UNIT_Y_OFFSET=51;UNIT_FONT_SIZE=28;UNIT_PADDING=8;nearlyEqual(e,t,i=1e-6){if(!Number.isFinite(e)||!Number.isFinite(t))return!1;let o=Math.max(1,Math.max(Math.abs(e),Math.abs(t)));return Math.abs(e-t)<=i*o}resolveTickColor(e,t,i){let r=t.options.ticks?.color;return typeof r=="function"?r({chart:e,scale:t,tick:{value:i}})??wt.defaults.color:typeof r=="string"?r:wt.defaults.color}axisTopLabelY(e){return e.options?.position==="top"?e.top+4:e.bottom+2}gridBackgroundPlugin={id:"xSpeedGridBackground",beforeDraw:e=>{let t=e.chartArea;if(!t)return;let i=e.ctx,o=this.theme();i.save(),i.globalCompositeOperation="destination-over",i.fillStyle=o.background,i.fillRect(t.left,t.top,t.width/2,t.height),i.restore()}};centerTickPlugin={id:"centerTickStyle",afterDraw:e=>{let t=e.ctx,i=e.chartArea,o=this.theme(),r=this.getThemeColors(),l=wt.defaults.font,d=e.scales,p=e.options?.scales,s=e.data?.datasets?.[0]?.data,c=e.data?.datasets?.[5]?.data,m=(s?.length??0)>=2&&(c?.length??0)>=2,f=(ye,X)=>{let Te=d?.[ye],Ue=p;if(!Te)return;let ht=Te,Qe=Ue?.[ye]?.min??ht.min,Xe=Ue?.[ye]?.max??ht.max;if(typeof Qe!="number"||typeof Xe!="number"||!isFinite(Qe)||!isFinite(Xe))return;let lt=(Qe+Xe)/2,ti=Te.getPixelForValue(lt);t.save(),t.strokeStyle=o.contrastDim,t.lineWidth=this.CENTER_LINE_WIDTH,t.beginPath(),t.moveTo(ti,i.top),t.lineTo(ti,i.bottom),t.stroke(),t.restore(),t.save(),t.fillStyle=o.contrastDim,t.font=`bold ${this.CENTER_LABEL_FONT_SIZE}px ${l.family}`,t.textAlign="center",t.textBaseline="top";let ee=this.axisTopLabelY(Te);t.fillText(X(lt),ti,ee),t.restore()};f("x",ye=>`${((ye%360+360)%360).toFixed(0)}\xB0`),f("xSpeed",ye=>`${ye.toFixed(1)}`);let y=d?.xSpeed;if(y){let ye=p,X=y,Te=ye?.xSpeed?.max??X.max;if(typeof Te=="number"&&isFinite(Te)){let Ue=y.getPixelForValue(Te);t.save(),t.fillStyle=this.resolveTickColor(e,y,Te),t.font=`normal ${this.TICK_LABEL_FONT_SIZE}px ${l.family}`,t.textAlign="right",t.textBaseline="top";let ht=this.axisTopLabelY(y),Qe=this.xStepSpeed??1,Xe=Math.max(0,Math.min(3,Math.ceil(-Math.log10(Qe))));t.fillText(`${Te.toFixed(Xe)}`,Ue-this.EDGE_SPEED_LABEL_OFFSET,ht),t.restore(),t.save(),t.strokeStyle=o.contrastDim,t.lineWidth=this.GRID_LINE_WIDTH,t.beginPath();let lt=Math.round(Ue)+.5;t.moveTo(lt,i.bottom),t.lineTo(lt,i.top-this.EDGE_EXTEND_UP_PX),t.stroke(),t.restore()}}let S=d?.x;if(S){let ye=p,X=S,Te=ye?.x?.min??X.min;if(typeof Te=="number"&&isFinite(Te)){let Ue=S.getPixelForValue(Te);t.save(),t.fillStyle=this.resolveTickColor(e,S,Te),t.font=`normal ${this.TICK_LABEL_FONT_SIZE}px ${l.family}`,t.textAlign="left",t.textBaseline="top";let ht=this.axisTopLabelY(S),Qe=this.normalizeAngle(Te);t.fillText(`${Qe.toFixed(0)}\xB0`,Ue+this.EDGE_DIR_LABEL_OFFSET,ht),t.restore()}}let x=e.data?.datasets,V=x?.[5]?.data,H=V?.length?V.length-1:-1,Z=H>=0?V[H]?.x:void 0;if(typeof Z=="number"&&isFinite(Z)){t.save(),t.fillStyle=r.chartValue,t.font=`bold ${this.SPEED_VALUE_FONT_SIZE}px ${l.family}`,t.textAlign="center",t.textBaseline="middle";let ye=`${Z.toFixed(1)}`,X=i.left+i.width/4,Te=i.top-this.TOP_VALUE_Y_OFFSET;t.fillText(ye,X,Te);let Ue=t.measureText(ye),ht=X+Ue.width/2+this.UNIT_PADDING,Qe=i.top-this.TOP_UNIT_Y_OFFSET;t.font=`bold ${this.UNIT_FONT_SIZE}px ${l.family}`,t.textAlign="left",t.fillText("kts",ht,Qe),t.restore()}let me=x?.[0]?.data,Oe=me?.length?me.length-1:-1,Be=Oe>=0?me[Oe]?.x:void 0;if(typeof Be=="number"&&isFinite(Be)){let ye=this.normalizeAngle(Be);t.save(),t.fillStyle=r.chartValue,t.font=`bold ${this.SPEED_VALUE_FONT_SIZE}px ${l.family}`,t.textAlign="center",t.textBaseline="middle",t.fillText(`${ye.toFixed(0)}\xB0`,i.left+3*i.width/4,i.top-this.TOP_VALUE_Y_OFFSET),t.restore()}if(!m){let ye=Math.min(i.width*.7,420),X=90,Te=i.left+(i.width-ye)/2,Ue=i.top+(i.height-X)/2;t.save(),t.globalAlpha=.82,t.fillStyle=o.background,t.fillRect(Te,Ue,ye,X),t.restore(),t.save(),t.strokeStyle=o.contrastDim,t.lineWidth=2,t.strokeRect(Te,Ue,ye,X),t.restore(),t.save(),t.fillStyle=this.getThemeColors().chartLabel,t.textAlign="center",t.textBaseline="middle",t.font=`bold 18px ${l.family}`,t.fillText("Data acquisition...",Te+ye/2,Ue+X/2),t.restore()}}};constructor(){super(),this.defaultConfig={filterSelfPaths:!0,color:"contrast",timeScale:"Last 30 Minutes"},ne(()=>{this.theme()&&this.datasetConfig&&(this.setChartOptions(),this.setDatasetsColors())})}ngOnInit(){this.validateConfig(),this.createServiceDataset()}ngAfterViewInit(){this.startWidget()}startWidget(){this.datasetConfig=this._dataset.getDatasetConfig(`${this.widgetProperties.uuid}-twd`),this.dataSourceInfo=this._dataset.getDataSourceInfo(`${this.widgetProperties.uuid}-twd`),this.datasetConfig&&(this.createDatasets(),this.setChartOptions(),this.chart?this.ngZone.runOutsideAngular(()=>{this.chart?.update("quiet")}):(this.chart=new wt(this.widgetDataChart().nativeElement.getContext("2d"),{type:this.lineChartType,data:this.lineChartData,options:this.lineChartOptions,plugins:[this.gridBackgroundPlugin,this.centerTickPlugin]}),this.ngZone.runOutsideAngular(()=>{this.chart?.update()})),this.startStreaming())}updateConfig(e){this.widgetProperties.config=e,this._dataset.list().filter(t=>t.uuid===`${this.widgetProperties.uuid}-twd`).length>0&&this._dataset.remove(`${this.widgetProperties.uuid}-twd`),this._dataset.list().filter(t=>t.uuid===`${this.widgetProperties.uuid}-tws`).length>0&&this._dataset.remove(`${this.widgetProperties.uuid}-tws`),this.createServiceDataset(),this.startWidget()}createServiceDataset(){if(this.widgetProperties.config.timeScale==="")return;let e="self.environment.wind.directionTrue",t="self.environment.wind.speedTrue",i="default";this._dataset.list().filter(o=>o.uuid===`${this.widgetProperties.uuid}-twd`).length===0&&this._dataset.create(e,i,this.widgetProperties.config.timeScale,30,`windtrends-${this.widgetProperties.uuid}`,!0,!1,`${this.widgetProperties.uuid}-twd`),this._dataset.list().filter(o=>o.uuid===`${this.widgetProperties.uuid}-tws`).length===0&&this._dataset.create(t,i,this.widgetProperties.config.timeScale,30,`speedtrends-${this.widgetProperties.uuid}`,!0,!1,`${this.widgetProperties.uuid}-tws`)}setChartOptions(){this.lineChartOptions.maintainAspectRatio=!1,this.lineChartOptions.animation=!1,this.lineChartOptions.indexAxis="y";let e=0,t=360,i=(t-e)/4,o=0,r=20,l=(r-o)/4;this.lineChartOptions.scales={y:{type:"linear",display:!0,position:"right",reverse:!0,title:{display:!0,text:`${this.datasetConfig.timeScaleFormat}`,align:"center"},ticks:{count:6,autoSkip:!1,includeBounds:!0,align:"inner",major:{enabled:!0},font:{size:16},callback:d=>{let p=Number(d),s=this.datasetConfig?.timeScaleFormat,c=this.getWindowMs(s);return s==="Last 5 Minutes"?`${Math.round(p/6e4)}'`:c>=10*6e4?`${Math.round(p/6e4)}'`:`${Math.round(p/1e3)}"`}},grid:{display:!0,color:this.theme().contrastDimmer}},x:{type:"linear",position:"top",stack:"trends",beginAtZero:!1,bounds:"ticks",min:e,max:t,title:{display:!1},ticks:{count:5,align:"inner",autoSkip:!1,includeBounds:!0,stepSize:i,minRotation:0,maxRotation:0,callback:d=>{let p=this.xCenter??Number.NaN;if(this.nearlyEqual(d,p))return"";let c=this.chart?.options?.scales?.x?.min;return typeof c=="number"&&this.nearlyEqual(d,c)?"":`${((d%360+360)%360).toFixed(0)}\xB0`},font:d=>{let p=d.tick?.value??Number.NaN,s=this.xCenter??Number.NaN;return{size:20,weight:this.nearlyEqual(p,s)?"bold":"normal"}},color:d=>{let p=d.tick?.value??Number.NaN,s=this.xCenter??Number.NaN;return this.nearlyEqual(p,s)?this.theme().contrast:void 0}},grid:{display:!0,color:d=>{let p=d.tick?.value??Number.NaN,s=d.scale,c=this.chart?.options?.scales,m=s,f=c?.x?.min??m.min;return this.nearlyEqual(p,f)?"rgba(0,0,0,0)":this.theme().contrastDimmer},lineWidth:1}},xSpeed:{type:"linear",position:"top",stack:"trends",beginAtZero:!1,bounds:"ticks",min:o,max:r,title:{display:!1},ticks:{count:5,align:"inner",autoSkip:!1,includeBounds:!0,stepSize:l,minRotation:0,maxRotation:0,callback:d=>{let p=this.xCenterSpeed??Number.NaN;if(this.nearlyEqual(d,p))return"";let c=this.chart?.options?.scales?.xSpeed?.max;if(typeof c=="number"&&this.nearlyEqual(d,c))return"";let m=this.xStepSpeed??Number.NaN,f=Number.isFinite(m)?m:1,y=Math.max(0,Math.min(3,Math.ceil(-Math.log10(f))));return`${d.toFixed(y)}`},font:d=>{let p=d.tick?.value??Number.NaN,s=this.xCenterSpeed??Number.NaN;return{size:20,weight:this.nearlyEqual(p,s)?"bold":"normal"}},color:d=>{let p=d.tick?.value??Number.NaN,s=this.xCenterSpeed??Number.NaN;return this.nearlyEqual(p,s)?this.theme().contrast:void 0}},grid:{display:!0,color:d=>{let p=d.tick?.value??Number.NaN,s=d.scale,c=this.chart?.options?.scales,m=s,f=c?.xSpeed?.max??m.max;return this.nearlyEqual(p,f)?"rgba(0,0,0,0)":this.theme().contrastDimmer},lineWidth:1}}},this.lineChartOptions.plugins={title:{display:!0,align:"end",padding:{top:3,bottom:0},text:"TWD ",font:{size:35,weight:"normal"},color:this.getThemeColors().chartLabel},subtitle:{display:!0,align:"start",padding:{top:-41,bottom:12},text:" TWS",font:{size:35},color:this.getThemeColors().chartLabel},annotation:{},legend:{display:!1}},this.xCenter=(e+t)/2,this.xStep=i,this.xCenterSpeed=(o+r)/2,this.xStepSpeed=l}createDatasets(){this.lineChartData.datasets=[],this.lineChartData.datasets.push({label:"Value",data:[],order:2,parsing:!1,normalized:!0,tension:0,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:1,fill:!1,xAxisID:"x"},{label:"SMA",data:[],order:0,parsing:!1,normalized:!0,tension:.3,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:10,fill:!1,borderColor:e=>{let t=e.chart,{ctx:i}=t;return this.lineGradientForAxis(i,t,"x")},backgroundColor:"red",xAxisID:"x"},{label:"lastAverage",data:[],order:1,parsing:!1,normalized:!0,tension:0,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:0,borderColor:"",fill:!1,hidden:!0,xAxisID:"x"},{label:"lastMinimum",data:[],order:3,parsing:!1,normalized:!0,hidden:!0,xAxisID:"x"},{label:"lastMaximum",data:[],order:4,parsing:!1,normalized:!0,hidden:!0,xAxisID:"x"},{label:"Value Speed",data:[],order:2,parsing:!1,normalized:!0,tension:0,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:1,fill:!1,xAxisID:"xSpeed"},{label:"SMA Speed",data:[],order:0,parsing:!1,normalized:!0,tension:.2,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:3,fill:!1,borderColor:e=>{let t=e.chart,{ctx:i}=t;return this.lineGradientForAxis(i,t,"xSpeed")},xAxisID:"xSpeed"},{label:"lastAverage Speed",data:[],order:1,parsing:!1,normalized:!0,tension:0,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:0,borderColor:"",fill:!1,hidden:!0,xAxisID:"xSpeed"},{label:"lastMinimum Speed",data:[],order:3,parsing:!1,normalized:!0,hidden:!0,xAxisID:"xSpeed"},{label:"lastMaximum Speed",data:[],order:4,parsing:!1,normalized:!0,hidden:!0,xAxisID:"xSpeed"}),this.setDatasetsColors()}startStreaming(){this._dsDirectionSub?.unsubscribe(),this._dsSpeedSub?.unsubscribe();let e=this._dataset.getDatasetBatchThenLiveObservable(`${this.widgetProperties.uuid}-twd`),t=this._dataset.getDatasetBatchThenLiveObservable(`${this.widgetProperties.uuid}-tws`);this._dsDirectionSub=e?.subscribe(i=>{if(Array.isArray(i))this.pushRowsToDatasets(i);else if(this.pushRowsToDatasets([i]),this.chart.data.datasets[0].data.length>this.dataSourceInfo.maxDataPoints)for(let o=0;o<=4;o++)this.chart.data.datasets[o].data.shift();this.updateChartAfterDataChange(),this.ngZone.runOutsideAngular(()=>{this.chart?.update("quiet")})}),this._dsSpeedSub=t?.subscribe(i=>{if(Array.isArray(i))this.pushRowsToSpeedDatasets(i);else if(this.pushRowsToSpeedDatasets([i]),this.chart.data.datasets[5].data.length>this.dataSourceInfo.maxDataPoints)for(let o=5;o<=9;o++)this.chart.data.datasets[o].data.shift();this.updateChartAfterDataChange(),this.ngZone.runOutsideAngular(()=>{this.chart?.update("quiet")})})}unwrapAngles(e){if(e.length===0)return[];let t=[],i=null;for(let o of e){if(o==null){t.push(null);continue}if(i==null){t.push(o),i=o;continue}let r=o-i;r>180&&(r-=360),r<-180&&(r+=360),t.push(t[t.length-1]+r),i=o}return t}pushRowsToDatasets(e){this.pushRowsGeneric(e,0,"deg",!0)}pushRowsToSpeedDatasets(e){this.pushRowsGeneric(e,5,"knots",!1)}getRowValue(e,t){switch(t){case"value":return e.data.value??null;case"sma":return e.data.sma??null;case"ema":return e.data.ema??null;case"dema":return e.data.doubleEma??null;case"avg":return e.data.lastAverage??null;case"min":return e.data.lastMinimum??null;case"max":return e.data.lastMaximum??null;default:return null}}transformRows(e,t,i,o){let r=e.map(d=>{let p=this.getRowValue(d,t);return p==null?null:this.unitsService.convertToUnit(i,p)}),l=o?this.unwrapAngles(r):r;return e.map((d,p)=>({x:l[p],y:d.timestamp,ts:d.timestamp}))}pushRowsGeneric(e,t,i,o){["value","sma","avg","min","max"].forEach((l,d)=>{this.chart.data.datasets[t+d].data.push(...this.transformRows(e,l,i,o))})}normalizeAngle(e){return(e%360+360)%360}angularDiff(e,t){let i=(e-t+540)%360-180;return Math.abs(i)}niceStepFromMantissas(e,t){if(!isFinite(e)||e<=0)return 1;let i=Math.floor(Math.log10(e)),o=e/Math.pow(10,i);return(t.find(l=>o<=l)??t[t.length-1])*Math.pow(10,i)}updateChartAfterDataChange(){let e=this.chart.data.datasets[2]?.data,t=this.chart.data.datasets[1]?.data,i=this.chart.data.datasets[0]?.data,o=!!e?.length,r=!!t?.length,l=!!i?.length,d=o?e[e.length-1].x:r?t[t.length-1].x:l?i[i.length-1].x:void 0;if(typeof d=="number"&&isFinite(d)){let m=this.chart.data.datasets[3]?.data,f=this.chart.data.datasets[4]?.data,y=m?.length?m[m.length-1].x:void 0,S=f?.length?f[f.length-1].x:void 0,x=typeof y=="number"&&isFinite(y)?this.angularDiff(d,y):Number.NaN,V=typeof S=="number"&&isFinite(S)?this.angularDiff(d,S):Number.NaN,H=Number.isFinite(x)||Number.isFinite(V)?Math.max(Number.isFinite(x)?x:0,Number.isFinite(V)?V:0):Number.NaN;if(!Number.isFinite(H)){let Te=o?e:r?t:i,Ue=Math.min(30,Te?.length??0);if(Ue>1){let Qe=Te.slice(Te.length-Ue).map(Xe=>Xe.x).filter(Xe=>typeof Xe=="number"&&isFinite(Xe));Qe.length&&(H=Qe.reduce((Xe,lt)=>Math.max(Xe,this.angularDiff(d,lt)),0))}}H=Math.max(H||0,15);let me=2*H/4,Oe=this.niceStepFromMantissas(me,[1,1.5,2,2.5,5,7.5,10]),Be=d-2*Oe,ye=d+2*Oe;this.chart.options.scales.x.min=Be,this.chart.options.scales.x.max=ye;let X=this.chart.options.scales;X.x.ticks=Ze($({},X.x.ticks??{}),{stepSize:Oe}),this.xCenter=d,this.xStep=Oe}let p=this.chart.data.datasets[7]?.data;if(p&&p.length){let m=p.length-1,f=p[m]?.x??0,y=this.chart.data.datasets[8].data[m]?.x??f,S=this.chart.data.datasets[9].data[m]?.x??f,x=Math.abs(f-y),V=Math.abs(S-f),H=Math.max(x,V);H=Math.max(H,.5);let me=2*H/4,Oe=this.niceStepFromMantissas(me,[1,2,2.5,5,10]),Be=f-2*Oe,ye=f+2*Oe,X=this.chart.options.scales;X.xSpeed.min=Be,X.xSpeed.max=ye,X.xSpeed.ticks=Ze($({},X.xSpeed.ticks??{}),{stepSize:Oe}),this.xCenterSpeed=f,this.xStepSpeed=Oe}let s=this.getWindowMs(this.datasetConfig?.timeScaleFormat);if(this.chart.data.datasets[0].data.length>0){let m=Date.now();this.chart.data.datasets.forEach(V=>{V.data.forEach(H=>{let Z=H.ts??H.y;H.y=Math.max(0,Math.min(s,m-Z))})}),this.chart.options.scales.y.min=0,this.chart.options.scales.y.max=s;let f;switch(this.datasetConfig?.timeScaleFormat){case"Last Minute":f=15e3;break;case"Last 5 Minutes":f=6e4;break;case"Last 30 Minutes":f=5*6e4;break;default:f=s/5;break}let S=this.chart.options.scales,x=$({},S.y.ticks??{});delete x.count,x.stepSize=f,S.y.ticks=x}}getWindowMs(e){switch(e){case"Last 30 Minutes":return 30*6e4;case"Last 5 Minutes":return 5*6e4;case"Last Minute":return 6e4;default:return 6e4}}lineGradientForAxis(e,t,i){let o=t.chartArea;if(!o)return null;let r=t.scales?.[i];if(!r)return null;let l=t.options?.scales,d=r,p=l?.[i]?.min??d.min,s=l?.[i]?.max??d.max;if(typeof p!="number"||typeof s!="number"||!isFinite(p)||!isFinite(s))return null;let c=(p+s)/2,m=r.getPixelForValue(c),f=Math.max(0,Math.min(1,(m-o.left)/o.width)),y=e.createLinearGradient(o.left,0,o.right,0);return y.addColorStop(0,this.theme().port),y.addColorStop(f,this.theme().port),y.addColorStop(f,this.theme().starboard),y.addColorStop(1,this.theme().starboard),y}setDatasetsColors(){this.lineChartData.datasets.forEach(e=>{e.label==="Value"&&(e.borderColor=this.getThemeColors().valueLine,e.backgroundColor=this.getThemeColors().valueFill),e.label==="Value Speed"&&(e.borderColor=this.getThemeColors().valueLine,e.backgroundColor=this.getThemeColors().valueFill)})}getThemeColors(){let e=this.widgetProperties.config.color,t={valueLine:null,valueFill:null,averageLine:null,averageFill:null,averageChartLine:null,chartLabel:null,chartValue:null};switch(e){case"contrast":t.valueLine=this.theme().contrastDim,t.valueFill=this.theme().contrastDimmer,t.averageLine=this.theme().contrast,t.averageFill=this.theme().contrast,t.chartValue=this.theme().contrast,t.averageChartLine=this.theme().contrast,t.chartLabel=this.theme().contrastDim;break;case"blue":t.valueLine=this.theme().blueDim,t.valueFill=this.theme().blueDimmer,t.averageLine=this.theme().blue,t.averageFill=this.theme().blue,t.chartValue=this.theme().blue,t.averageChartLine=this.theme().blueDim,t.chartLabel=this.theme().blueDim;break;case"green":t.valueLine=this.theme().greenDim,t.valueFill=this.theme().greenDimmer,t.averageLine=this.theme().green,t.averageFill=this.theme().green,t.chartValue=this.theme().green,t.averageChartLine=this.theme().greenDim,t.chartLabel=this.theme().greenDim;break;case"pink":t.valueLine=this.theme().pinkDim,t.valueFill=this.theme().pinkDimmer,t.averageLine=this.theme().pink,t.averageFill=this.theme().pink,t.chartValue=this.theme().pink,t.averageChartLine=this.theme().pinkDim,t.chartLabel=this.theme().pinkDim;break;case"orange":t.valueLine=this.theme().orangeDim,t.valueFill=this.theme().orangeDimmer,t.averageLine=this.theme().orange,t.averageFill=this.theme().orange,t.chartValue=this.theme().orange,t.averageChartLine=this.theme().orangeDim,t.chartLabel=this.theme().orangeDim;break;case"purple":t.valueLine=this.theme().purpleDim,t.valueFill=this.theme().purpleDimmer,t.averageLine=this.theme().purple,t.averageFill=this.theme().purple,t.chartValue=this.theme().purple,t.averageChartLine=this.theme().purpleDim,t.chartLabel=this.theme().purpleDim;break;case"grey":t.valueLine=this.theme().greyDim,t.valueFill=this.theme().greyDimmer,t.averageLine=this.theme().grey,t.averageFill=this.theme().grey,t.chartValue=this.theme().grey,t.averageChartLine=this.theme().greyDim,t.chartLabel=this.theme().greyDim;break;case"yellow":t.valueLine=this.theme().yellowDim,t.valueFill=this.theme().yellowDimmer,t.averageLine=this.theme().yellow,t.averageFill=this.theme().yellow,t.chartValue=this.theme().yellow,t.averageChartLine=this.theme().yellowDim,t.chartLabel=this.theme().yellowDim;break}return t}ngOnDestroy(){this.destroyDataStreams(),this._dsDirectionSub?.unsubscribe(),this._dsSpeedSub?.unsubscribe(),this.chart?.destroy();let e=this.widgetDataChart?.()?.nativeElement;this.canvasService.releaseCanvas(e,{clear:!0,removeFromDom:!0})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-windtrends-chart"]],viewQuery:function(t,i){t&1&&te(i.widgetDataChart,Kg,5,Ye),t&2&&be()},features:[ce],decls:3,vars:2,consts:[["widgetDataChart",""],[3,"configChange","config","id"],[2,"z-index","inherit"]],template:function(t,i){if(t&1){let o=Y();v(0,"widget-host",1),ve("configChange",function(l){return P(o),fe(i.widgetProperties.config,l)||(i.widgetProperties.config=l),O(l)}),I("configChange",function(l){return P(o),O(i.updateConfig(l))}),G(1,"canvas",2,0),_()}t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid))},dependencies:[Ce],encapsulation:2})}return a})();typeof steelseries>"u"&&(globalThis.steelseries={});var Ao=globalThis.steelseries;Ao.ColorDef=Ao.ColorDef||{RED:"red",GREEN:"green",BLUE:"blue",ORANGE:"orange",YELLOW:"yellow",CYAN:"cyan",MAGENTA:"magenta",WHITE:"white",GRAY:"gray",BLACK:"black",RAITH:"raith",GREEN_LCD:"greenLcd",JUG_GREEN:"jugGreen"};Ao.FrameDesign=Ao.FrameDesign||{BLACK_METAL:"blackMetal",METAL:"metal",SHINY_METAL:"shinyMetal",BRASS:"brass",STEEL:"steel",CHROME:"chrome",GOLD:"gold",ANTHRACITE:"anthracite",TILTED_GRAY:"tiltedGray",TILTED_BLACK:"tiltedBlack",GLOSSY_METAL:"glossyMetal"};var Qg={Red:steelseries.ColorDef.RED,Green:steelseries.ColorDef.GREEN,Blue:steelseries.ColorDef.BLUE,Orange:steelseries.ColorDef.ORANGE,Yellow:steelseries.ColorDef.YELLOW,Cyan:steelseries.ColorDef.CYAN,Magenta:steelseries.ColorDef.MAGENTA,White:steelseries.ColorDef.WHITE,Gray:steelseries.ColorDef.GRAY,Black:steelseries.ColorDef.BLACK,Raith:steelseries.ColorDef.RAITH,"Green LCD":steelseries.ColorDef.GREEN_LCD,"JUG Green":steelseries.ColorDef.JUG_GREEN},Xg={blackMetal:steelseries.FrameDesign.BLACK_METAL,metal:steelseries.FrameDesign.METAL,shinyMetal:steelseries.FrameDesign.SHINY_METAL,brass:steelseries.FrameDesign.BRASS,steel:steelseries.FrameDesign.STEEL,chrome:steelseries.FrameDesign.CHROME,gold:steelseries.FrameDesign.GOLD,anthracite:steelseries.FrameDesign.ANTHRACITE,tiltedGray:steelseries.FrameDesign.TILTED_GRAY,tiltedBlack:steelseries.FrameDesign.TILTED_BLACK,glossyMetal:steelseries.FrameDesign.GLOSSY_METAL},fh=(()=>{class a extends Se{cdr=E(yn);canvasService=E(tt);gaugeOptions={};gauge=null;streamsInitialized=!1;lastSizeSignature="";resizeTimer=null;pendingStructuralRebuild=!1;constructor(){super(),this.defaultConfig={filterSelfPaths:!0,paths:{gaugePitchPath:{description:"Attitude Pitch Data",path:"self.navigation.attitude.pitch",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:1e3},gaugeRollPath:{description:"Attitude Roll Data",path:"self.navigation.attitude.roll",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:1e3}},gauge:{type:"horizon",noFrameVisible:!1,faceColor:"anthracite",invertPitch:!1,invertRoll:!1},enableTimeout:!1,dataTimeout:5}}ngOnInit(){this.validateConfig()}ngAfterContentInit(){this.cdr.detectChanges(),this.startWidget();let t=document.getElementById(this.widgetProperties.uuid+"-canvas")?.parentElement;if(t){let i=t.getBoundingClientRect();this.onResized({contentRect:{width:i.width,height:i.height}})}}startWidget(e=!1){this.buildOptions();let t=this.widgetProperties.uuid+"-canvas";t&&(this.gauge&&!e&&!this.pendingStructuralRebuild||(this.pendingStructuralRebuild=!1,this.gauge=new steelseries.Horizon(t,this.gaugeOptions)),this.streamsInitialized||(this.observeDataStream("gaugePitchPath",i=>{let o=i.data.value??0;this.gauge.setPitchAnimated(this.widgetProperties.config.gauge.invertPitch?-o:o)}),this.observeDataStream("gaugeRollPath",i=>{let o=i.data.value??0;this.gauge.setRollAnimated(this.widgetProperties.config.gauge.invertRoll?-o:o)}),this.streamsInitialized=!0))}updateConfig(e){this.widgetProperties.config=e,this.pendingStructuralRebuild=!0,this.startWidget(!0)}buildOptions(){this.gaugeOptions.pointerColor=Qg.Red,this.gaugeOptions.frameVisible=this.widgetProperties.config.gauge.noFrameVisible??!1,this.gaugeOptions.frameDesign=Xg[this.widgetProperties.config.gauge.faceColor??"anthracite"],this.gaugeOptions.foregroundVisible=!1}onResized(e){if(e.contentRect.height<50||e.contentRect.width<50)return;let t=Math.min(e.contentRect.height,e.contentRect.width),i="horizon:"+t;i!==this.lastSizeSignature&&(this.lastSizeSignature=i,this.gaugeOptions.size=t,this.resizeTimer&&window.clearTimeout(this.resizeTimer),this.resizeTimer=window.setTimeout(()=>{this.startWidget(!0),this.resizeTimer=null},120))}ngOnDestroy(){this.destroyDataStreams(),this.gauge&&(this.gauge=null);let e=document.getElementById(this.widgetProperties.uuid+"-canvas");this.canvasService.releaseCanvas(e,{clear:!0,removeFromDom:!0})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["widget-horizon"]],features:[ce],decls:4,vars:5,consts:[[3,"configChange","config","id"],[1,"canvas-wrap",3,"onResize"],[2,"z-index","inherit",3,"id"]],template:function(t,i){t&1&&(v(0,"widget-host",0),ve("configChange",function(r){return fe(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),v(1,"div",1),I("onResize",function(r){return i.onResized(r)}),v(2,"canvas",2),b(3," Browser does not support canvas element. "),_()()()),t&2&&(ge("config",i.widgetProperties.config),z("id",i.widgetProperties.uuid),k(),ol(i.gaugeOptions.frameVisible===!0?"padding: 10px;":""),k(),z("id",i.widgetProperties.uuid+"-canvas"))},dependencies:[Ce,it,Ot],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.canvas-wrap[_ngcontent-%COMP%]{position:relative;display:block;width:100%;height:100%;padding:0}.canvas-wrap[_ngcontent-%COMP%] > canvas[_ngcontent-%COMP%]{display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}"]})}return a})();var Zg=["grid"];function Jg(a,n){a&1&&(v(0,"p",8)(1,"strong"),b(2,"Long press/click and hold anywhere"),_(),b(3," to add widgets"),_(),v(4,"mat-icon",9),b(5,"touch_app"),_())}function ef(a,n){if(a&1){let e=Y();v(0,"p",8),b(1,"This empty dashboard is ready to be customized."),_(),v(2,"button",10),I("click",function(){P(e);let i=U();return O(i.editDashboard())}),v(3,"mat-icon"),b(4,"lock_open"),_(),b(5," Unlock and Customize "),_(),v(6,"div",11)(7,"button",12),I("click",function(){P(e);let i=U();return O(i.navigateToHelp())}),v(8,"mat-icon"),b(9,"help"),_(),b(10," Get Help "),_()()}}function tf(a,n){if(a&1){let e=Y();v(0,"div",6)(1,"button",13),I("click",function(){P(e);let i=U();return O(i.saveLayoutChanges())}),v(2,"mat-icon"),b(3,"done"),_()(),v(4,"button",14),I("click",function(){P(e);let i=U();return O(i.cancelLayoutChanges())}),v(5,"mat-icon"),b(6,"close"),_()()()}}function nf(a,n){if(a&1&&G(0,"dashboard-scroller",7),a&2){let e=U();z("activePage",e.dashboard.activeDashboard())("dashboards",e.dashboard.dashboards())}}var Xr=(()=>{class a{activatedRoute=E(El);_app=E(Dt);_dialog=E(Cn);dashboard=E(nt);_destroyRef=E(oi);_uiEvent=E(kn);_dataset=E(At);_router=E(ci);isDashboardStatic=St(this.dashboard.isDashboardStatic$);_gridstack=ie.required("grid");_previousIsStaticState=!0;_suppressDrag=!1;gridOptions=K({margin:4,minRow:12,maxRow:12,float:!0,acceptWidgets:!1,resizable:{handles:"all"}});_boundHandleKeyDown=this.handleKeyDown.bind(this);constructor(){Ki.addComponentToSelectorType([mo,Wd,po,zd,oh,Kc,Xc,jc,Jc,Fc,$d,Bc,ih,nh,th,eh,rh,dh,ph,vo,ch,hh,gh,fh])}ngAfterViewInit(){this.resizeGridColumns(),this._uiEvent.addHotkeyListener(this._boundHandleKeyDown,{ctrlKey:!0,keys:["arrowdown","arrowup"]});try{let e=this._gridstack().grid;e&&typeof e.on=="function"&&(e.on("dragstart",()=>{this._uiEvent.isDragging.set(!0)}),e.on("dragstop",()=>{setTimeout(()=>this._uiEvent.isDragging.set(!1),0)}),e.on("resizestart",()=>{this._uiEvent.isDragging.set(!0)}),e.on("resizestop",()=>{setTimeout(()=>this._uiEvent.isDragging.set(!1),0)}))}catch{}this.dashboard.isDashboardStatic$.pipe(mt(this._destroyRef)).subscribe(e=>{e?(this._gridstack().grid.setStatic(e),e!==this._previousIsStaticState&&(this.saveDashboard(),this._previousIsStaticState=e)):(this._gridstack().grid.setStatic(e),this._previousIsStaticState=e)}),this.dashboard.widgetAction$.pipe(mt(this._destroyRef)).subscribe(e=>{e&&this._gridstack().grid.getGridItems().forEach(t=>{if(t.gridstackNode.id===e.id)switch(e.operation){case"delete":this.deleteWidget(t);break;case"duplicate":this.duplicateWidget(t);break;default:break}})}),this.activatedRoute.params.pipe(mt(this._destroyRef)).subscribe(e=>{let t=e.id,i=null;t!=null&&t!==""&&!isNaN(Number(t))&&(i=Number(t)),this.dashboard.setActiveDashboard(i??this.dashboard.activeDashboard()),this.loadDashboard(this.dashboard.activeDashboard())})}ngOnDestroy(){let e=this._gridstack();e?.grid&&e.grid.destroy(!0),this._uiEvent.removeHotkeyListener(this._boundHandleKeyDown)}handleKeyDown(e,t){e==="arrowdown"?this.previousDashboard(t):e==="arrowup"&&this.nextDashboard(t)}resizeGridColumns(){this._gridstack().grid.cellHeight(window.innerHeight/this._gridstack().grid.getRow())}loadDashboard(e){let t=this.dashboard.dashboards()[e],i=this._gridstack();i?.grid&&setTimeout(()=>{i.grid.batchUpdate(),i.grid.load(t.configuration),i.grid.commit()},0)}saveDashboard(){let e=this._gridstack().grid.save(!1,!1)||null;this.dashboard.updateConfiguration(this.dashboard.activeDashboard(),e)}saveLayoutChanges(){this.dashboard.setStaticDashboard(!0)}cancelLayoutChanges(){this.loadDashboard(this.dashboard.activeDashboard()),this.dashboard.setStaticDashboard(!0)}addNewWidget(e){if(!this.dashboard.isDashboardStatic()&&e.detail!==void 0){let t=e.detail||{},i=t.center?.x??t.x??0,o=t.center?.y??t.y??0,r=this._gridstack().grid.getCellFromPixel({left:i,top:o});this._gridstack().grid.isAreaEmpty(r.x,r.y,1,1)&&(this._gridstack().grid.willItFit({x:r.x,y:r.y,w:2,h:3})?this._dialog.openFrameDialog({title:"Add Widget",component:"select-widget"},!0).subscribe(d=>{if(!d||typeof d!="object")return;let p=di.create(),s=d,c={x:r.x,y:r.y,w:s.defaultWidth,h:s.defaultHeight,minW:s.minWidth,minH:s.minHeight,id:p,selector:s.selector,input:{widgetProperties:{type:s.selector,uuid:p}}};this._gridstack().grid.addWidget(c)}):this._app.sendSnackbarNotification("Error Adding Widget: Not enough space at the selected location. Please reorganize the dashboard to free up space or choose a larger empty area.",0))}}cancelPointerSequence(){if(!this._suppressDrag){this._suppressDrag=!0;try{this._gridstack().grid.setStatic(!0)}catch{}["pointerup","mouseup","touchend"].forEach(e=>{document.dispatchEvent(new Event(e,{bubbles:!0}))})}}_onPointerRelease(){if(this._suppressDrag&&(this._suppressDrag=!1,!this.dashboard.isDashboardStatic()))try{this._gridstack().grid.setStatic(!1)}catch{}}duplicateWidget(e){let t=di.create(),i=e.gridstackNode,o={w:i.w,h:i.h,id:t,selector:i.selector,input:{widgetProperties:{type:i.input.widgetProperties.type,uuid:t,config:_n(i.input.widgetProperties.config)}}},r=this._gridstack();r.grid.willItFit(o)?r.grid.addWidget(o):(o.h=2,o.w=2,r.grid.willItFit(o)?r.grid.addWidget(o):this._app.sendSnackbarNotification("Duplication failed: Insufficient space on the dashboard. Please reorganize to free up space.",0))}deleteWidget(e){let t=e.gridstackNode;switch(this._gridstack().grid.removeWidget(e),t.selector){case"widget-numeric-chart":case"widget-windtrends-chart":{(this._dataset.list()?.filter(r=>r.uuid===t.id||r.uuid?.startsWith(`${t.id}-`))||[]).forEach(r=>this._dataset.remove(r.uuid));break}}}nextDashboard(e){e.preventDefault(),this.dashboard.isDashboardStatic()&&this.dashboard.navigateToNextDashboard()}previousDashboard(e){e.preventDefault(),this.dashboard.isDashboardStatic()&&this.dashboard.navigateToPreviousDashboard()}editDashboard(){this.dashboard.toggleStaticDashboard()}navigateToHelp(){this._router.navigate(["/help"])}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["dashboard"]],viewQuery:function(t,i){t&1&&te(i._gridstack,Zg,5),t&2&&be()},hostBindings:function(t,i){t&1&&I("mouseup",function(){return i._onPointerRelease()},ur)("touchend",function(){return i._onPointerRelease()},ur)},decls:11,vars:3,consts:[["grid",""],["kipGestures","",3,"swipeup","swipedown","press","resize","options"],["empty-content","",1,"dashboard-empty-state"],[1,"empty-state-content"],[1,"empty-state-actions"],[1,"empty-state-icon"],[1,"edit-layout-close-icon"],[3,"activePage","dashboards"],[1,"empty-state-text"],[1,"touch-icon"],["mat-flat-button","",1,"empty-state-button",3,"click"],[1,"empty-state-help"],["mat-button","",1,"empty-state-help-button",3,"click"],["mat-fab","",1,"layout-action-btn",2,"margin-right","10px",3,"click"],["mat-fab","",1,"layout-action-btn",3,"click"]],template:function(t,i){if(t&1){let o=Y();v(0,"gridstack",1,0),I("swipeup",function(l){return P(o),O(i.previousDashboard(l))})("swipedown",function(l){return P(o),O(i.nextDashboard(l))})("press",function(l){return P(o),O(i.addNewWidget(l))})("resize",function(){return P(o),O(i.resizeGridColumns())},Ks),v(2,"div",2)(3,"div",3)(4,"div",4)(5,"mat-icon",5),b(6,"dashboard"),_(),De(7,Jg,6,0)(8,ef,11,0),_()()()(),De(9,tf,7,0,"div",6)(10,nf,1,2,"dashboard-scroller",7)}t&2&&(z("options",i.gridOptions()),k(7),Ae(i.dashboard.isDashboardStatic()?8:7),k(2),Ae(i.dashboard.isDashboardStatic()?10:9))},dependencies:[Pd,Ki,Rd,pt,bt,ft,gt,$a,bn],styles:["[_nghost-%COMP%]{display:flex;flex-direction:row;flex-wrap:nowrap;height:100%;width:100%;overflow:hidden}.grid-stack[_ngcontent-%COMP%]{width:100%}.edit-layout-close-icon[_ngcontent-%COMP%]{position:absolute;bottom:20px;right:20px;cursor:pointer;z-index:100}.layout-action-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary);background-color:var(--mat-sys-primary)}.dashboard-empty-state[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;min-height:80vh;width:100%;padding:2rem;text-align:center}.empty-state-content[_ngcontent-%COMP%]{max-width:500px;color:var(--mat-sys-outline-variant)}.empty-state-icon[_ngcontent-%COMP%]{font-size:4rem;width:4rem;height:4rem;color:var(--mat-sys-outline-variant);margin-bottom:1rem}.empty-state-actions[_ngcontent-%COMP%] .touch-icon[_ngcontent-%COMP%]{font-size:2rem;width:2rem;height:2rem;color:var(--mat-sys-outline-variant);margin-top:.5rem;animation:_ngcontent-%COMP%_bounce 2s infinite}.empty-state-button[_ngcontent-%COMP%]{--mat-button-filled-label-text-color: var(--kip-widget-card-background-color);--mat-button-filled-container-color: var(--mat-sys-outline-variant);--mat-button-filled-hover-state-layer-opacity: .7;--mat-button-filled-state-layer-color: var(--mat-sys-primary-fixed-dim)}.empty-state-help[_ngcontent-%COMP%]{position:fixed;left:50%;bottom:10%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center}.empty-state-help-button[_ngcontent-%COMP%]{--mat-button-text-label-text-color: var(--mat-sys-outline-variant);--mat-button-text-hover-state-layer-opacity: .7;--mat-button-text-state-layer-color: var(--mat-sys-primary-fixed-dim)}.empty-state-text[_ngcontent-%COMP%]{color:var(--mat-sys-outline-variant);font-style:italic}@keyframes _ngcontent-%COMP%_bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}"]})}return a})();var vh=[{path:"dashboard/:id",component:Xr},{path:"settings",loadComponent:()=>import("./chunk-MRF22PVK.js").then(a=>a.SettingsComponent),title:"KIP - Settings"},{path:"options",loadComponent:()=>import("./chunk-JDDRJMPN.js").then(a=>a.TabsComponent),title:"KIP - Options"},{path:"remote",loadComponent:()=>import("./chunk-X45MUE6N.js").then(a=>a.RemoteControlComponent),title:"KIP - Remote Control"},{path:"help",loadComponent:()=>import("./chunk-2XB2ZNXV.js").then(a=>a.AppHelpComponent),title:"KIP - Help"},{path:"data",loadComponent:()=>import("./chunk-JHI7SSDT.js").then(a=>a.DataInspectorComponent),title:"KIP - Data Inspector"},{path:"login",loadComponent:()=>import("./chunk-4APSKT6I.js").then(a=>a.WidgetLoginComponent),title:"Login"},{path:"**",component:Xr,title:"KIP"}];var yh={production:!0};var Th=Aa(Zr());function af(a,n){if(a&1){let e=Y();v(0,"div",1)(1,"button",2),I("click",function(){P(e);let i=U();return O(i.action())}),b(2),_()()}if(a&2){let e=U();k(2),rt(" ",e.data.action," ")}}var of=["label"];function rf(a,n){}var sf=Math.pow(2,31)-1,ya=class{_overlayRef;instance;containerInstance;_afterDismissed=new Qt;_afterOpened=new Qt;_onAction=new Qt;_durationTimeoutId;_dismissedByAction=!1;constructor(n,e){this._overlayRef=e,this.containerInstance=n,n._onExit.subscribe(()=>this._finishDismiss())}dismiss(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}dismissWithAction(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete(),this.dismiss()),clearTimeout(this._durationTimeoutId)}closeWithAction(){this.dismissWithAction()}_dismissAfter(n){this._durationTimeoutId=setTimeout(()=>this.dismiss(),Math.min(n,sf))}_open(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}_finishDismiss(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}afterDismissed(){return this._afterDismissed}afterOpened(){return this.containerInstance._onEnter}onAction(){return this._onAction}},bh=new cr("MatSnackBarData"),Kn=class{politeness="polite";announcementMessage="";viewContainerRef;duration=0;panelClass;direction;data=null;horizontalPosition="center";verticalPosition="bottom"},lf=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275dir=si({type:a,selectors:[["","matSnackBarLabel",""]],hostAttrs:[1,"mat-mdc-snack-bar-label","mdc-snackbar__label"]})}return a})(),df=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275dir=si({type:a,selectors:[["","matSnackBarActions",""]],hostAttrs:[1,"mat-mdc-snack-bar-actions","mdc-snackbar__actions"]})}return a})(),cf=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275dir=si({type:a,selectors:[["","matSnackBarAction",""]],hostAttrs:[1,"mat-mdc-snack-bar-action","mdc-snackbar__action"]})}return a})(),hf=(()=>{class a{snackBarRef=E(ya);data=E(bh);constructor(){}action(){this.snackBarRef.dismissWithAction()}get hasAction(){return!!this.data.action}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["simple-snack-bar"]],hostAttrs:[1,"mat-mdc-simple-snack-bar"],exportAs:["matSnackBar"],decls:3,vars:2,consts:[["matSnackBarLabel",""],["matSnackBarActions",""],["matButton","","matSnackBarAction","",3,"click"]],template:function(t,i){t&1&&(v(0,"div",0),b(1),_(),De(2,af,3,1,"div",1)),t&2&&(k(),rt(" ",i.data.message,`
48
48
  `),k(),Ae(i.hasAction?2:-1))},dependencies:[gt,lf,df,cf],styles:[`.mat-mdc-simple-snack-bar{display:flex}
49
49
  `],encapsulation:2,changeDetection:0})}return a})(),Jr="_mat-snack-bar-enter",es="_mat-snack-bar-exit",uf=(()=>{class a extends Hl{_ngZone=E(Je);_elementRef=E(Ye);_changeDetectorRef=E(yn);_platform=E(Ol);_animationsDisabled=la();snackBarConfig=E(Kn);_document=E(mn);_trackedModals=new Set;_enterFallback;_exitFallback;_injector=E(Gi);_announceDelay=150;_announceTimeoutId;_destroyed=!1;_portalOutlet;_onAnnounce=new Qt;_onExit=new Qt;_onEnter=new Qt;_animationState="void";_live;_label;_role;_liveElementId=E(qa).getId("mat-snack-bar-container-live-");constructor(){super();let e=this.snackBarConfig;e.politeness==="assertive"&&!e.announcementMessage?this._live="assertive":e.politeness==="off"?this._live="off":this._live="polite",this._platform.FIREFOX&&(this._live==="polite"&&(this._role="status"),this._live==="assertive"&&(this._role="alert"))}attachComponentPortal(e){this._assertNotAttached();let t=this._portalOutlet.attachComponentPortal(e);return this._afterPortalAttached(),t}attachTemplatePortal(e){this._assertNotAttached();let t=this._portalOutlet.attachTemplatePortal(e);return this._afterPortalAttached(),t}attachDomPortal=e=>{this._assertNotAttached();let t=this._portalOutlet.attachDomPortal(e);return this._afterPortalAttached(),t};onAnimationEnd(e){e===es?this._completeExit():e===Jr&&(clearTimeout(this._enterFallback),this._ngZone.run(()=>{this._onEnter.next(),this._onEnter.complete()}))}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.markForCheck(),this._changeDetectorRef.detectChanges(),this._screenReaderAnnounce(),this._animationsDisabled?oa(()=>{this._ngZone.run(()=>queueMicrotask(()=>this.onAnimationEnd(Jr)))},{injector:this._injector}):(clearTimeout(this._enterFallback),this._enterFallback=setTimeout(()=>{this._elementRef.nativeElement.classList.add("mat-snack-bar-fallback-visible"),this.onAnimationEnd(Jr)},200)))}exit(){return this._destroyed?zs(void 0):(this._ngZone.run(()=>{this._animationState="hidden",this._changeDetectorRef.markForCheck(),this._elementRef.nativeElement.setAttribute("mat-exit",""),clearTimeout(this._announceTimeoutId),this._animationsDisabled?oa(()=>{this._ngZone.run(()=>queueMicrotask(()=>this.onAnimationEnd(es)))},{injector:this._injector}):(clearTimeout(this._exitFallback),this._exitFallback=setTimeout(()=>this.onAnimationEnd(es),200))}),this._onExit)}ngOnDestroy(){this._destroyed=!0,this._clearFromModals(),this._completeExit()}_completeExit(){clearTimeout(this._exitFallback),queueMicrotask(()=>{this._onExit.next(),this._onExit.complete()})}_afterPortalAttached(){let e=this._elementRef.nativeElement,t=this.snackBarConfig.panelClass;t&&(Array.isArray(t)?t.forEach(r=>e.classList.add(r)):e.classList.add(t)),this._exposeToModals();let i=this._label.nativeElement,o="mdc-snackbar__label";i.classList.toggle(o,!i.querySelector(`.${o}`))}_exposeToModals(){let e=this._liveElementId,t=this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal="true"]');for(let i=0;i<t.length;i++){let o=t[i],r=o.getAttribute("aria-owns");this._trackedModals.add(o),r?r.indexOf(e)===-1&&o.setAttribute("aria-owns",r+" "+e):o.setAttribute("aria-owns",e)}}_clearFromModals(){this._trackedModals.forEach(e=>{let t=e.getAttribute("aria-owns");if(t){let i=t.replace(this._liveElementId,"").trim();i.length>0?e.setAttribute("aria-owns",i):e.removeAttribute("aria-owns")}}),this._trackedModals.clear()}_assertNotAttached(){this._portalOutlet.hasAttached()}_screenReaderAnnounce(){this._announceTimeoutId||this._ngZone.runOutsideAngular(()=>{this._announceTimeoutId=setTimeout(()=>{if(this._destroyed)return;let e=this._elementRef.nativeElement,t=e.querySelector("[aria-hidden]"),i=e.querySelector("[aria-live]");if(t&&i){let o=null;this._platform.isBrowser&&document.activeElement instanceof HTMLElement&&t.contains(document.activeElement)&&(o=document.activeElement),t.removeAttribute("aria-hidden"),i.appendChild(t),o?.focus(),this._onAnnounce.next(),this._onAnnounce.complete()}},this._announceDelay)})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["mat-snack-bar-container"]],viewQuery:function(t,i){if(t&1&&(Ci(fr,7),Ci(of,7)),t&2){let o;gi(o=fi())&&(i._portalOutlet=o.first),gi(o=fi())&&(i._label=o.first)}},hostAttrs:[1,"mdc-snackbar","mat-mdc-snack-bar-container"],hostVars:6,hostBindings:function(t,i){t&1&&I("animationend",function(r){return i.onAnimationEnd(r.animationName)})("animationcancel",function(r){return i.onAnimationEnd(r.animationName)}),t&2&&ki("mat-snack-bar-container-enter",i._animationState==="visible")("mat-snack-bar-container-exit",i._animationState==="hidden")("mat-snack-bar-container-animations-enabled",!i._animationsDisabled)},features:[ce],decls:6,vars:3,consts:[["label",""],[1,"mdc-snackbar__surface","mat-mdc-snackbar-surface"],[1,"mat-mdc-snack-bar-label"],["aria-hidden","true"],["cdkPortalOutlet",""]],template:function(t,i){t&1&&(v(0,"div",1)(1,"div",2,0)(3,"div",3),Wa(4,rf,0,0,"ng-template",4),_(),G(5,"div"),_()()),t&2&&(k(5),ae("aria-live",i._live)("role",i._role)("id",i._liveElementId))},dependencies:[fr],styles:[`@keyframes _mat-snack-bar-enter{from{transform:scale(0.8);opacity:0}to{transform:scale(1);opacity:1}}@keyframes _mat-snack-bar-exit{from{opacity:1}to{opacity:0}}.mat-mdc-snack-bar-container{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);margin:8px}.mat-mdc-snack-bar-handset .mat-mdc-snack-bar-container{width:100vw}.mat-snack-bar-container-animations-enabled{opacity:0}.mat-snack-bar-container-animations-enabled.mat-snack-bar-fallback-visible{opacity:1}.mat-snack-bar-container-animations-enabled.mat-snack-bar-container-enter{animation:_mat-snack-bar-enter 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-snack-bar-container-animations-enabled.mat-snack-bar-container-exit{animation:_mat-snack-bar-exit 75ms cubic-bezier(0.4, 0, 1, 1) forwards}.mat-mdc-snackbar-surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;padding-left:0;padding-right:8px}[dir=rtl] .mat-mdc-snackbar-surface{padding-right:0;padding-left:8px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{min-width:344px;max-width:672px}.mat-mdc-snack-bar-handset .mat-mdc-snackbar-surface{width:100%;min-width:0}@media(forced-colors: active){.mat-mdc-snackbar-surface{outline:solid 1px}}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{color:var(--mat-snack-bar-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mat-snack-bar-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-snack-bar-container-color, var(--mat-sys-inverse-surface))}.mdc-snackbar__label{width:100%;flex-grow:1;box-sizing:border-box;margin:0;padding:14px 8px 14px 16px}[dir=rtl] .mdc-snackbar__label{padding-left:8px;padding-right:16px}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-family:var(--mat-snack-bar-supporting-text-font, var(--mat-sys-body-medium-font));font-size:var(--mat-snack-bar-supporting-text-size, var(--mat-sys-body-medium-size));font-weight:var(--mat-snack-bar-supporting-text-weight, var(--mat-sys-body-medium-weight));line-height:var(--mat-snack-bar-supporting-text-line-height, var(--mat-sys-body-medium-line-height))}.mat-mdc-snack-bar-actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){--mat-button-text-state-layer-color: currentColor;--mat-button-text-ripple-color: currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled).mat-unthemed{color:var(--mat-snack-bar-button-color, var(--mat-sys-inverse-primary))}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{opacity:.1}
50
50
  `],encapsulation:2})}return a})();function mf(){return new Kn}var pf=new cr("mat-snack-bar-default-options",{providedIn:"root",factory:mf}),wh=(()=>{class a{_live=E(Wl);_injector=E(Gi);_breakpointObserver=E(Ga);_parentSnackBar=E(a,{optional:!0,skipSelf:!0});_defaultConfig=E(pf);_animationsDisabled=la();_snackBarRefAtThisLevel=null;simpleSnackBarComponent=hf;snackBarContainerComponent=uf;handsetCssClass="mat-mdc-snack-bar-handset";get _openedSnackBarRef(){let e=this._parentSnackBar;return e?e._openedSnackBarRef:this._snackBarRefAtThisLevel}set _openedSnackBarRef(e){this._parentSnackBar?this._parentSnackBar._openedSnackBarRef=e:this._snackBarRefAtThisLevel=e}constructor(){}openFromComponent(e,t){return this._attach(e,t)}openFromTemplate(e,t){return this._attach(e,t)}open(e,t="",i){let o=$($({},this._defaultConfig),i);return o.data={message:e,action:t},o.announcementMessage===e&&(o.announcementMessage=void 0),this.openFromComponent(this.simpleSnackBarComponent,o)}dismiss(){this._openedSnackBarRef&&this._openedSnackBarRef.dismiss()}ngOnDestroy(){this._snackBarRefAtThisLevel&&this._snackBarRefAtThisLevel.dismiss()}_attachSnackBarContainer(e,t){let i=t&&t.viewContainerRef&&t.viewContainerRef.injector,o=Gi.create({parent:i||this._injector,providers:[{provide:Kn,useValue:t}]}),r=new da(this.snackBarContainerComponent,t.viewContainerRef,o),l=e.attach(r);return l.instance.snackBarConfig=t,l.instance}_attach(e,t){let i=$($($({},new Kn),this._defaultConfig),t),o=this._createOverlay(i),r=this._attachSnackBarContainer(o,i),l=new ya(r,o);if(e instanceof Qs){let d=new Fl(e,null,{$implicit:i.data,snackBarRef:l});l.instance=r.attachTemplatePortal(d)}else{let d=this._createInjector(i,l),p=new da(e,void 0,d),s=r.attachComponentPortal(p);l.instance=s.instance}return this._breakpointObserver.observe(ja.HandsetPortrait).pipe(js(o.detachments())).subscribe(d=>{o.overlayElement.classList.toggle(this.handsetCssClass,d.matches)}),i.announcementMessage&&r._onAnnounce.subscribe(()=>{this._live.announce(i.announcementMessage,i.politeness)}),this._animateSnackBar(l,i),this._openedSnackBarRef=l,this._openedSnackBarRef}_animateSnackBar(e,t){e.afterDismissed().subscribe(()=>{this._openedSnackBarRef==e&&(this._openedSnackBarRef=null),t.announcementMessage&&this._live.clear()}),t.duration&&t.duration>0&&e.afterOpened().subscribe(()=>e._dismissAfter(t.duration)),this._openedSnackBarRef?(this._openedSnackBarRef.afterDismissed().subscribe(()=>{e.containerInstance.enter()}),this._openedSnackBarRef.dismiss()):e.containerInstance.enter()}_createOverlay(e){let t=new Ul;t.direction=e.direction;let i=Gl(this._injector),o=e.direction==="rtl",r=e.horizontalPosition==="left"||e.horizontalPosition==="start"&&!o||e.horizontalPosition==="end"&&o,l=!r&&e.horizontalPosition!=="center";return r?i.left("0"):l?i.right("0"):i.centerHorizontally(),e.verticalPosition==="top"?i.top("0"):i.bottom("0"),t.positionStrategy=i,t.disableAnimations=this._animationsDisabled,ql(this._injector,t)}_createInjector(e,t){let i=e&&e.viewContainerRef&&e.viewContainerRef.injector;return Gi.create({parent:i||this._injector,providers:[{provide:ya,useValue:t},{provide:bh,useValue:e.data}]})}static \u0275fac=function(t){return new(t||a)};static \u0275prov=st({token:a,factory:a.\u0275fac,providedIn:"root"})}return a})();var _h=Aa(Zr());var gf={1e3:"notification",1001:"alert",1002:"warn",1003:"alarm",1004:"emergency"},Vi=(()=>{class a{settings=E(Mt);data=E(Ei);requests=E(Gt);static ALARM_SEVERITIES={normal:{sound:0,visual:0},nominal:{sound:0,visual:0},alert:{sound:1,visual:0},warn:{sound:2,visual:1},alarm:{sound:3,visual:2},emergency:{sound:4,visual:2}};_notificationSettingsSubscription=null;_notificationDataStreamSubscription=null;_notificationMetaStreamSubscription=null;_resetServiceSubscription=null;_notificationConfig;_notificationConfig$=new _i(vl);_notifications=[];_notifications$=new _i([]);_alarmsInfo$=new _i({audioSev:0,visualSev:0,alarmCount:0,isMuted:!1});_players=new Map;_activeAlarmSoundtrack=null;_activeHowlId=null;_isHowlIdMuted=!1;_lastEmittedValue=null;constructor(){this._notificationSettingsSubscription=this.settings.getNotificationServiceConfigAsO().subscribe(e=>{this._notificationConfig=e,this.reset(),this._notificationConfig$.next(e),this._notificationConfig.disableNotifications&&!this._notificationDataStreamSubscription?.closed&&this.stopNotificationStream(),!this._notificationConfig.disableNotifications&&(this._notificationDataStreamSubscription===null||this._notificationDataStreamSubscription?.closed)&&this.startNotificationStream(),this._notificationConfig.sound.disableSound?this.playAlarm(1e3):this.updateNotificationsState()}),this._resetServiceSubscription=this.data.isResetService().subscribe(e=>{e&&this.reset()}),this.getPlayer(1e3)}startNotificationStream(){this._notificationDataStreamSubscription=this.data.getNotificationMsgObservable().subscribe(e=>this.processNotificationDeltaMsg(e)),this._notificationMetaStreamSubscription=this.data.getNotificationMetaObservable().subscribe(e=>this.processNotificationDeltaMeta(e))}stopNotificationStream(){this._notificationDataStreamSubscription?.unsubscribe(),this._notificationMetaStreamSubscription?.unsubscribe(),this.reset()}reset(){this._notificationConfig.disableNotifications&&(this._notifications=[],this._notifications$.next([])),this.updateNotificationsState()}observeNotifications(){return this._notifications$}addValue(e){this._notifications.push({path:e.path,value:e.value}),this.updateNotificationsState(),this._notifications$.next(this._notifications)}updateValue(e){let t=this._notifications.find(i=>i.path==e.path);t?(t.value=$({},e.value),this.updateNotificationsState(),this._notifications$.next(this._notifications)):console.log("[Notification Service] Update path not found for: "+e.path)}deleteValue(e){let t=this._notifications.find(i=>i.path==e);t?(delete t.value,this.updateNotificationsState(),this._notifications$.next(this._notifications)):console.log("[Notification Service] Notification to delete not found for: "+e)}updateNotificationsState(){let e=0,t=0,i=0;for(let r of this._notifications){if(!r.value||!("method"in r.value)||r.value.method.length===0||r.value.state===J.Normal&&!this._notificationConfig.devices.showNormalState||r.value.state===J.Nominal&&!this._notificationConfig.devices.showNominalState)continue;i++;let{aSev:l,vSev:d}=this.getNotificationSeverity(r);e=Math.max(e,l),t=Math.max(t,d)}this._notificationConfig.sound.disableSound||this.playAlarm(1e3+e);let o={audioSev:e,visualSev:t,alarmCount:i,isMuted:this._isHowlIdMuted};Nt(o,this._lastEmittedValue)||(this._alarmsInfo$.next(o),this._lastEmittedValue=o)}processNotificationDeltaMsg(e){if(!e.path.startsWith("notifications.security"))if(e.value===null)this.deleteValue(e.path);else{let t=this._notifications.find(i=>i.path==e.path);t?(!t.value||t.value.state!==e.value.state||t.value.message!==e.value.message||!Nt(t.value.method,e.value.method))&&this.updateValue(e):this.addValue(e)}}processNotificationDeltaMeta(e){let t=this._notifications.find(i=>i.path==e.path);t?t.meta=e.meta:this._notifications.push({path:e.path,meta:e.meta}),this._notifications$.next(this._notifications)}getNotificationSeverity(e){let t=e.value.state,i=a.ALARM_SEVERITIES[t];if(!i)return console.log(`[Notification Service] Unknown Notification State