@marineyachtradar/signalk-plugin 0.2.1 → 0.5.0-beta.2

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 (55) hide show
  1. package/README.md +48 -70
  2. package/package.json +42 -6
  3. package/plugin/config/schema.d.ts +13 -0
  4. package/plugin/config/schema.d.ts.map +1 -0
  5. package/plugin/config/schema.js +48 -0
  6. package/plugin/config/schema.js.map +1 -0
  7. package/plugin/index.d.ts +2 -0
  8. package/plugin/index.d.ts.map +1 -0
  9. package/plugin/index.js +359 -289
  10. package/plugin/index.js.map +1 -0
  11. package/plugin/mayara-client.d.ts +28 -0
  12. package/plugin/mayara-client.d.ts.map +1 -0
  13. package/plugin/mayara-client.js +102 -194
  14. package/plugin/mayara-client.js.map +1 -0
  15. package/plugin/radar-provider.d.ts +5 -0
  16. package/plugin/radar-provider.d.ts.map +1 -0
  17. package/plugin/radar-provider.js +192 -305
  18. package/plugin/radar-provider.js.map +1 -0
  19. package/plugin/spoke-forwarder.d.ts +30 -0
  20. package/plugin/spoke-forwarder.d.ts.map +1 -0
  21. package/plugin/spoke-forwarder.js +104 -136
  22. package/plugin/spoke-forwarder.js.map +1 -0
  23. package/plugin/types.d.ts +21 -0
  24. package/plugin/types.d.ts.map +1 -0
  25. package/plugin/types.js +3 -0
  26. package/plugin/types.js.map +1 -0
  27. package/public/540.js +2 -0
  28. package/public/540.js.LICENSE.txt +9 -0
  29. package/public/805.js +1 -0
  30. package/public/index.html +27 -39
  31. package/public/main.js +1 -0
  32. package/public/remoteEntry.js +1 -0
  33. package/public/api.js +0 -402
  34. package/public/assets/mayara_logo.png +0 -0
  35. package/public/base.css +0 -91
  36. package/public/control.html +0 -23
  37. package/public/control.js +0 -1155
  38. package/public/controls.css +0 -538
  39. package/public/discovery.css +0 -478
  40. package/public/favicon.ico +0 -0
  41. package/public/layout.css +0 -87
  42. package/public/mayara.js +0 -510
  43. package/public/proto/RadarMessage.proto +0 -41
  44. package/public/protobuf/protobuf.js +0 -9112
  45. package/public/protobuf/protobuf.js.map +0 -1
  46. package/public/protobuf/protobuf.min.js +0 -8
  47. package/public/protobuf/protobuf.min.js.map +0 -1
  48. package/public/radar.svg +0 -29
  49. package/public/render_webgpu.js +0 -886
  50. package/public/responsive.css +0 -29
  51. package/public/van-1.5.2.debug.js +0 -126
  52. package/public/van-1.5.2.js +0 -140
  53. package/public/van-1.5.2.min.js +0 -1
  54. package/public/viewer.html +0 -30
  55. package/public/viewer.js +0 -797
@@ -1,538 +0,0 @@
1
- /* ============================================
2
- Controls - All interactive radar controls
3
- ============================================ */
4
-
5
- /* Basic control wrappers */
6
- div.myr_control {
7
- display: block;
8
- border-style: solid;
9
- border-width: 1px;
10
- margin: 2px;
11
- border-radius: 1px;
12
- border-color: white;
13
- }
14
-
15
- div.myr_readonly {
16
- color: rgb(124, 124, 237);
17
- }
18
-
19
- div.myr_description {
20
- z-index: 10;
21
- display: block;
22
- float: right;
23
- right:0;
24
- top:0;
25
- }
26
-
27
- div.myr_button {
28
- display: block;
29
- }
30
-
31
- div.myr_button::after {
32
- content: "";
33
- clear: both;
34
- display: table;
35
- }
36
-
37
- label.myr_auto_label,label.myr_enabled_label,input.myr_auto,input.myr_enabled {
38
- float: left;
39
- }
40
-
41
- /* Power buttons container */
42
- div.myr_power_buttons {
43
- display: flex;
44
- gap: 8px;
45
- margin: 8px 2px;
46
- padding: 4px;
47
- box-sizing: border-box;
48
- max-width: 100%;
49
- }
50
-
51
- /* Power buttons styling */
52
- .myr_power_button {
53
- flex: 1;
54
- min-width: 0;
55
- padding: 10px 6px;
56
- font-size: 13px;
57
- font-weight: bold;
58
- border: 2px solid #444;
59
- border-radius: 4px;
60
- cursor: pointer;
61
- transition: all 0.2s ease;
62
- background-color: #222;
63
- color: #888;
64
- box-sizing: border-box;
65
- overflow: hidden;
66
- text-overflow: ellipsis;
67
- white-space: nowrap;
68
- }
69
-
70
- .myr_power_button:hover {
71
- border-color: #666;
72
- background-color: #333;
73
- }
74
-
75
- .myr_power_button_transmit.myr_power_active {
76
- background-color: #1a4d1a;
77
- border-color: #2d8a2d;
78
- color: #4dff4d;
79
- }
80
-
81
- .myr_power_button_standby.myr_power_active {
82
- background-color: #4d4d1a;
83
- border-color: #8a8a2d;
84
- color: #ffff4d;
85
- }
86
-
87
- /* Range buttons container */
88
- div.myr_range_buttons {
89
- display: flex;
90
- gap: 8px;
91
- margin: 8px 2px;
92
- padding: 4px;
93
- box-sizing: border-box;
94
- max-width: 100%;
95
- }
96
-
97
- /* Range buttons styling */
98
- .myr_range_button {
99
- flex: 1;
100
- min-width: 0;
101
- padding: 10px 6px;
102
- font-size: 13px;
103
- font-weight: bold;
104
- border: 2px solid #446;
105
- border-radius: 4px;
106
- cursor: pointer;
107
- transition: all 0.2s ease;
108
- background-color: #224;
109
- color: #8af;
110
- box-sizing: border-box;
111
- overflow: hidden;
112
- text-overflow: ellipsis;
113
- white-space: nowrap;
114
- }
115
-
116
- .myr_range_button:hover {
117
- border-color: #668;
118
- background-color: #336;
119
- }
120
-
121
- .myr_range_button:active {
122
- background-color: #448;
123
- }
124
-
125
- /* Range display */
126
- .myr_range_display {
127
- flex: 1;
128
- text-align: center;
129
- font-size: 16px;
130
- font-weight: bold;
131
- color: #8cf;
132
- padding: 8px;
133
- }
134
-
135
- /* Clutter controls (Gain/Sea/Rain) */
136
- .myr_clutter_control {
137
- margin: 8px 2px;
138
- padding: 6px 8px;
139
- border: 1px solid #446;
140
- border-radius: 4px;
141
- background-color: #112;
142
- }
143
-
144
- .myr_clutter_header {
145
- display: flex;
146
- justify-content: space-between;
147
- align-items: center;
148
- margin-bottom: 6px;
149
- }
150
-
151
- .myr_clutter_label {
152
- font-weight: bold;
153
- color: #8cf;
154
- font-size: 13px;
155
- }
156
-
157
- .myr_auto_checkbox {
158
- display: flex;
159
- align-items: center;
160
- gap: 4px;
161
- font-size: 12px;
162
- color: #888;
163
- cursor: pointer;
164
- }
165
-
166
- .myr_auto_checkbox input[type="checkbox"] {
167
- width: 16px;
168
- height: 16px;
169
- cursor: pointer;
170
- accent-color: #4a8;
171
- }
172
-
173
- .myr_clutter_slider {
174
- width: 100%;
175
- height: 20px;
176
- background-color: #224;
177
- border-radius: 4px;
178
- cursor: pointer;
179
- accent-color: #4a8;
180
- }
181
-
182
- .myr_clutter_slider:disabled {
183
- opacity: 0.4;
184
- cursor: not-allowed;
185
- }
186
-
187
- /* ============================================
188
- Capabilities-Driven Control Panel v5
189
- ============================================ */
190
-
191
- /* Control sections */
192
- .myr_control_section {
193
- margin: 8px 0;
194
- padding: 4px;
195
- }
196
-
197
- .myr_section_header {
198
- font-size: 13px;
199
- font-weight: bold;
200
- color: rgb(100, 200, 180);
201
- padding: 8px 4px;
202
- border-bottom: 1px solid rgba(100, 200, 180, 0.3);
203
- margin-bottom: 8px;
204
- }
205
-
206
- .myr_extended_section {
207
- margin-top: 16px;
208
- padding-top: 8px;
209
- border-top: 1px solid rgba(100, 200, 180, 0.2);
210
- }
211
-
212
- .myr_info_section {
213
- margin-top: 16px;
214
- padding-top: 8px;
215
- border-top: 1px solid rgba(100, 200, 180, 0.2);
216
- }
217
-
218
- /* Generic control wrapper */
219
- .myr_control {
220
- margin: 8px 2px;
221
- padding: 8px;
222
- border: 1px solid #446;
223
- border-radius: 4px;
224
- background-color: #112;
225
- }
226
-
227
- .myr_control_header {
228
- display: flex;
229
- justify-content: space-between;
230
- align-items: center;
231
- margin-bottom: 6px;
232
- }
233
-
234
- .myr_control_label {
235
- font-weight: bold;
236
- color: #8cf;
237
- font-size: 13px;
238
- }
239
-
240
- .myr_control_value {
241
- font-size: 13px;
242
- color: #adf;
243
- font-weight: bold;
244
- }
245
-
246
- /* Range control with display */
247
- .myr_range_control {
248
- margin: 8px 2px;
249
- }
250
-
251
- /* Generic slider */
252
- .myr_slider {
253
- width: 100%;
254
- height: 24px;
255
- background-color: #224;
256
- border-radius: 4px;
257
- cursor: pointer;
258
- accent-color: #4a8;
259
- -webkit-appearance: none;
260
- appearance: none;
261
- }
262
-
263
- .myr_slider::-webkit-slider-thumb {
264
- -webkit-appearance: none;
265
- width: 24px;
266
- height: 24px;
267
- background: #4a8;
268
- border-radius: 50%;
269
- cursor: pointer;
270
- }
271
-
272
- .myr_slider::-moz-range-thumb {
273
- width: 24px;
274
- height: 24px;
275
- background: #4a8;
276
- border-radius: 50%;
277
- cursor: pointer;
278
- border: none;
279
- }
280
-
281
- .myr_slider:disabled {
282
- opacity: 0.4;
283
- cursor: not-allowed;
284
- }
285
-
286
- /* Boolean toggle button */
287
- .myr_boolean_control {
288
- display: flex;
289
- flex-direction: column;
290
- align-items: center;
291
- gap: 6px;
292
- text-align: center;
293
- }
294
-
295
- .myr_boolean_control .myr_toggle_button {
296
- align-self: center;
297
- }
298
-
299
- .myr_toggle_button {
300
- padding: 8px 16px;
301
- font-size: 13px;
302
- font-weight: bold;
303
- border: 2px solid #444;
304
- border-radius: 4px;
305
- cursor: pointer;
306
- transition: all 0.2s ease;
307
- background-color: #222;
308
- color: #888;
309
- min-width: 60px;
310
- }
311
-
312
- .myr_toggle_button:hover {
313
- border-color: #666;
314
- background-color: #333;
315
- }
316
-
317
- .myr_toggle_button.myr_toggle_active {
318
- background-color: #1a4d1a;
319
- border-color: #2d8a2d;
320
- color: #4dff4d;
321
- }
322
-
323
- /* Enum control - button group */
324
- .myr_enum_control {
325
- display: flex;
326
- flex-direction: column;
327
- gap: 6px;
328
- }
329
-
330
- .myr_button_group {
331
- display: flex;
332
- flex-wrap: wrap;
333
- gap: 4px;
334
- }
335
-
336
- .myr_enum_button {
337
- flex: 1;
338
- min-width: 50px;
339
- padding: 8px 6px;
340
- font-size: 12px;
341
- font-weight: bold;
342
- border: 2px solid #446;
343
- border-radius: 4px;
344
- cursor: pointer;
345
- transition: all 0.2s ease;
346
- background-color: #223;
347
- color: #8af;
348
- }
349
-
350
- .myr_enum_button:hover {
351
- border-color: #668;
352
- background-color: #334;
353
- }
354
-
355
- .myr_enum_button.myr_enum_active {
356
- background-color: #246;
357
- border-color: #48c;
358
- color: #adf;
359
- }
360
-
361
- /* Compound control (e.g., gain with auto/manual) */
362
- .myr_compound_control {
363
- display: flex;
364
- flex-direction: column;
365
- }
366
-
367
- .myr_compound_header {
368
- display: flex;
369
- justify-content: space-between;
370
- align-items: center;
371
- margin-bottom: 8px;
372
- }
373
-
374
- .myr_compound_body {
375
- display: flex;
376
- flex-direction: column;
377
- gap: 8px;
378
- }
379
-
380
- .myr_mode_buttons {
381
- display: flex;
382
- flex-wrap: nowrap;
383
- gap: 4px;
384
- }
385
-
386
- /* 3-button mode selector (e.g., Doppler: Off/Target/Rain) - wrap to 2 rows */
387
- .myr_mode_buttons_3 {
388
- flex-wrap: wrap;
389
- }
390
-
391
- .myr_mode_buttons_3 .myr_mode_button {
392
- flex: 1 1 calc(50% - 2px);
393
- }
394
-
395
- .myr_mode_button {
396
- flex: 1 1 auto;
397
- min-width: 60px;
398
- padding: 8px 10px;
399
- font-size: 12px;
400
- font-weight: bold;
401
- border: 2px solid #454;
402
- border-radius: 4px;
403
- cursor: pointer;
404
- transition: all 0.2s ease;
405
- background-color: #232;
406
- color: #8a8;
407
- }
408
-
409
- .myr_mode_button:hover {
410
- border-color: #676;
411
- background-color: #343;
412
- }
413
-
414
- .myr_mode_button.myr_mode_active {
415
- background-color: #254;
416
- border-color: #4a8;
417
- color: #8f8;
418
- }
419
-
420
- .myr_compound_slider {
421
- margin-top: 4px;
422
- }
423
-
424
- /* Info control (read-only) */
425
- .myr_info_control {
426
- display: flex;
427
- justify-content: space-between;
428
- align-items: center;
429
- background-color: #0a0a12;
430
- border-color: #334;
431
- }
432
-
433
- .myr_info_value {
434
- font-size: 13px;
435
- color: rgb(124, 124, 237);
436
- font-family: 'Consolas', 'Monaco', monospace;
437
- }
438
-
439
- /* Number control */
440
- .myr_number_control {
441
- display: flex;
442
- flex-direction: column;
443
- }
444
-
445
- /* Radar info header */
446
- .myr_radar_info_header {
447
- display: flex;
448
- flex-wrap: wrap;
449
- gap: 8px 16px;
450
- padding: 8px;
451
- margin-bottom: 8px;
452
- background-color: #0a0a12;
453
- border: 1px solid #334;
454
- border-radius: 4px;
455
- font-size: 12px;
456
- }
457
-
458
- .myr_radar_info_item {
459
- display: flex;
460
- gap: 4px;
461
- }
462
-
463
- .myr_info_label {
464
- color: #888;
465
- }
466
-
467
- /* No-Transmit Zones control */
468
- .myr_ntz_control {
469
- display: flex;
470
- flex-direction: column;
471
- }
472
-
473
- .myr_ntz_zones {
474
- display: flex;
475
- flex-direction: column;
476
- gap: 8px;
477
- margin-top: 8px;
478
- }
479
-
480
- .myr_ntz_zone {
481
- padding: 8px;
482
- background-color: #1a1a24;
483
- border-radius: 4px;
484
- border: 1px solid #334;
485
- }
486
-
487
- .myr_ntz_zone_header {
488
- margin-bottom: 8px;
489
- }
490
-
491
- .myr_checkbox_label {
492
- display: flex;
493
- align-items: center;
494
- gap: 6px;
495
- font-size: 13px;
496
- color: #8cf;
497
- cursor: pointer;
498
- }
499
-
500
- .myr_checkbox_label input[type="checkbox"] {
501
- width: 18px;
502
- height: 18px;
503
- cursor: pointer;
504
- accent-color: #4a8;
505
- }
506
-
507
- .myr_ntz_angles {
508
- display: flex;
509
- gap: 12px;
510
- }
511
-
512
- .myr_ntz_angle {
513
- display: flex;
514
- flex-direction: column;
515
- gap: 4px;
516
- flex: 1;
517
- }
518
-
519
- .myr_ntz_angle label {
520
- font-size: 11px;
521
- color: #888;
522
- }
523
-
524
- .myr_ntz_angle input[type="number"] {
525
- width: 100%;
526
- padding: 6px 8px;
527
- font-size: 14px;
528
- background-color: #224;
529
- border: 1px solid #446;
530
- border-radius: 4px;
531
- color: #adf;
532
- box-sizing: border-box;
533
- }
534
-
535
- .myr_ntz_angle input[type="number"]:disabled {
536
- opacity: 0.4;
537
- cursor: not-allowed;
538
- }