@oicl/openbridge-webcomponents-full-bundle 2.0.0-next.110 → 2.0.0-next.112

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 (103) hide show
  1. package/bundle/openbridge-webcomponents.bundle.js +2370 -1522
  2. package/bundle/openbridge-webcomponents.bundle.js.map +1 -1
  3. package/custom-elements.json +641 -7
  4. package/dist/automation/indicator-battery/indicator-battery.css.js +52 -0
  5. package/dist/automation/indicator-battery/indicator-battery.css.js.map +1 -0
  6. package/dist/automation/indicator-battery/indicator-battery.d.ts +65 -0
  7. package/dist/automation/indicator-battery/indicator-battery.d.ts.map +1 -0
  8. package/dist/automation/indicator-battery/indicator-battery.js +119 -0
  9. package/dist/automation/indicator-battery/indicator-battery.js.map +1 -0
  10. package/dist/automation/indicator-engine/indicator-engine.css.js +45 -0
  11. package/dist/automation/indicator-engine/indicator-engine.css.js.map +1 -0
  12. package/dist/automation/indicator-engine/indicator-engine.d.ts +34 -0
  13. package/dist/automation/indicator-engine/indicator-engine.d.ts.map +1 -0
  14. package/dist/automation/indicator-engine/indicator-engine.js +73 -0
  15. package/dist/automation/indicator-engine/indicator-engine.js.map +1 -0
  16. package/dist/automation/indicator-generator/indicator-generator-geometry.d.ts +30 -0
  17. package/dist/automation/indicator-generator/indicator-generator-geometry.d.ts.map +1 -0
  18. package/dist/automation/indicator-generator/indicator-generator-geometry.js +61 -0
  19. package/dist/automation/indicator-generator/indicator-generator-geometry.js.map +1 -0
  20. package/dist/automation/indicator-generator/indicator-generator.css.js +121 -0
  21. package/dist/automation/indicator-generator/indicator-generator.css.js.map +1 -0
  22. package/dist/automation/indicator-generator/indicator-generator.d.ts +57 -0
  23. package/dist/automation/indicator-generator/indicator-generator.d.ts.map +1 -0
  24. package/dist/automation/indicator-generator/indicator-generator.js +136 -0
  25. package/dist/automation/indicator-generator/indicator-generator.js.map +1 -0
  26. package/dist/automation/indicator-shared/linear-indicator.d.ts +46 -0
  27. package/dist/automation/indicator-shared/linear-indicator.d.ts.map +1 -0
  28. package/dist/automation/indicator-shared/linear-indicator.js +175 -0
  29. package/dist/automation/indicator-shared/linear-indicator.js.map +1 -0
  30. package/dist/automation/indicator-tank-atmospheric/indicator-tank-atmospheric.css.js +48 -0
  31. package/dist/automation/indicator-tank-atmospheric/indicator-tank-atmospheric.css.js.map +1 -0
  32. package/dist/automation/indicator-tank-atmospheric/indicator-tank-atmospheric.d.ts +65 -0
  33. package/dist/automation/indicator-tank-atmospheric/indicator-tank-atmospheric.d.ts.map +1 -0
  34. package/dist/automation/indicator-tank-atmospheric/indicator-tank-atmospheric.js +105 -0
  35. package/dist/automation/indicator-tank-atmospheric/indicator-tank-atmospheric.js.map +1 -0
  36. package/dist/navigation-instruments/compass/compass.d.ts +1 -1
  37. package/dist/navigation-instruments/compass/compass.d.ts.map +1 -1
  38. package/dist/navigation-instruments/compass/compass.js +1 -1
  39. package/dist/navigation-instruments/compass/compass.js.map +1 -1
  40. package/dist/navigation-instruments/current/current.d.ts +25 -0
  41. package/dist/navigation-instruments/current/current.d.ts.map +1 -1
  42. package/dist/navigation-instruments/current/current.js +25 -4
  43. package/dist/navigation-instruments/current/current.js.map +1 -1
  44. package/dist/navigation-instruments/heading/heading.js +1 -1
  45. package/dist/navigation-instruments/heading/heading.js.map +1 -1
  46. package/dist/navigation-instruments/pitch-roll-heave/pitch-roll-heave.d.ts +6 -0
  47. package/dist/navigation-instruments/pitch-roll-heave/pitch-roll-heave.d.ts.map +1 -1
  48. package/dist/navigation-instruments/pitch-roll-heave/pitch-roll-heave.js +8 -1
  49. package/dist/navigation-instruments/pitch-roll-heave/pitch-roll-heave.js.map +1 -1
  50. package/dist/navigation-instruments/rate-of-turn/rate-of-turn.d.ts +5 -2
  51. package/dist/navigation-instruments/rate-of-turn/rate-of-turn.d.ts.map +1 -1
  52. package/dist/navigation-instruments/rate-of-turn/rate-of-turn.js.map +1 -1
  53. package/dist/navigation-instruments/top-view-propulsion/top-view-propulsion.d.ts +6 -0
  54. package/dist/navigation-instruments/top-view-propulsion/top-view-propulsion.d.ts.map +1 -1
  55. package/dist/navigation-instruments/top-view-propulsion/top-view-propulsion.js +19 -4
  56. package/dist/navigation-instruments/top-view-propulsion/top-view-propulsion.js.map +1 -1
  57. package/dist/navigation-instruments/watch/environment.d.ts +8 -0
  58. package/dist/navigation-instruments/watch/environment.d.ts.map +1 -1
  59. package/dist/navigation-instruments/watch/environment.js +3 -0
  60. package/dist/navigation-instruments/watch/environment.js.map +1 -1
  61. package/dist/navigation-instruments/watch/force-pattern.d.ts +20 -2
  62. package/dist/navigation-instruments/watch/force-pattern.d.ts.map +1 -1
  63. package/dist/navigation-instruments/watch/force-pattern.js +12 -5
  64. package/dist/navigation-instruments/watch/force-pattern.js.map +1 -1
  65. package/dist/navigation-instruments/watch/watch.d.ts.map +1 -1
  66. package/dist/navigation-instruments/watch/watch.js +6 -4
  67. package/dist/navigation-instruments/watch/watch.js.map +1 -1
  68. package/dist/navigation-instruments/wind/wind.d.ts +5 -2
  69. package/dist/navigation-instruments/wind/wind.d.ts.map +1 -1
  70. package/dist/navigation-instruments/wind/wind.js +5 -1
  71. package/dist/navigation-instruments/wind/wind.js.map +1 -1
  72. package/package.json +1 -1
  73. package/src/automation/indicator-battery/indicator-battery.css +42 -0
  74. package/src/automation/indicator-battery/indicator-battery.stories.ts +94 -0
  75. package/src/automation/indicator-battery/indicator-battery.ts +149 -0
  76. package/src/automation/indicator-engine/indicator-engine.css +35 -0
  77. package/src/automation/indicator-engine/indicator-engine.stories.ts +48 -0
  78. package/src/automation/indicator-engine/indicator-engine.ts +78 -0
  79. package/src/automation/indicator-generator/indicator-generator-geometry.spec.ts +62 -0
  80. package/src/automation/indicator-generator/indicator-generator-geometry.ts +63 -0
  81. package/src/automation/indicator-generator/indicator-generator.css +111 -0
  82. package/src/automation/indicator-generator/indicator-generator.stories.ts +103 -0
  83. package/src/automation/indicator-generator/indicator-generator.ts +184 -0
  84. package/src/automation/indicator-shared/linear-indicator.spec.ts +90 -0
  85. package/src/automation/indicator-shared/linear-indicator.ts +230 -0
  86. package/src/automation/indicator-tank-atmospheric/indicator-tank-atmospheric.css +38 -0
  87. package/src/automation/indicator-tank-atmospheric/indicator-tank-atmospheric.stories.ts +94 -0
  88. package/src/automation/indicator-tank-atmospheric/indicator-tank-atmospheric.ts +138 -0
  89. package/src/navigation-instruments/compass/compass.ts +2 -2
  90. package/src/navigation-instruments/current/current.stories.ts +33 -0
  91. package/src/navigation-instruments/current/current.ts +37 -3
  92. package/src/navigation-instruments/heading/heading.stories.ts +6 -4
  93. package/src/navigation-instruments/heading/heading.ts +1 -1
  94. package/src/navigation-instruments/pitch-roll-heave/pitch-roll-heave.ts +8 -1
  95. package/src/navigation-instruments/rate-of-turn/rate-of-turn.stories.ts +3 -3
  96. package/src/navigation-instruments/rate-of-turn/rate-of-turn.ts +5 -2
  97. package/src/navigation-instruments/top-view-propulsion/top-view-propulsion.ts +20 -2
  98. package/src/navigation-instruments/watch/environment.ts +10 -0
  99. package/src/navigation-instruments/watch/force-pattern.spec.ts +42 -0
  100. package/src/navigation-instruments/watch/force-pattern.ts +44 -7
  101. package/src/navigation-instruments/watch/watch.ts +20 -5
  102. package/src/navigation-instruments/wind/wind.spec.ts +3 -1
  103. package/src/navigation-instruments/wind/wind.ts +12 -3
@@ -55,6 +55,7 @@ import {
55
55
  renderCurrent,
56
56
  renderCurrentCentered,
57
57
  renderWind,
58
+ WIND_ICON_TIP_TO_BOX_INNER,
58
59
  } from './environment.js';
59
60
  import {customElement} from '../../decorator.js';
60
61
  import {type ZoomToFitArcFrame} from '../../svghelpers/arc-frame.js';
@@ -130,6 +131,17 @@ export function innerRingRadiusFor(type: WatchCircleType): number {
130
131
 
131
132
  const RADIAL_SETPOINT_INWARD_ADJUST = 4;
132
133
 
134
+ /**
135
+ * Default anchors for the wind/current icons outside the outer ring (the
136
+ * compass layout): the 48-unit icon box sits 4 units off the ring, spanning
137
+ * 188–236 (OpenBridge 6.1 compass, node 19846-157200). The current chevron
138
+ * anchors by its tip at the box inner edge; the wind anchor adds the glyph's
139
+ * inward overhang so its box starts at the same edge.
140
+ */
141
+ const CURRENT_ICON_OUTSIDE_RADIUS = OUTER_RING_RADIUS + 4;
142
+ const WIND_ICON_OUTSIDE_RADIUS =
143
+ CURRENT_ICON_OUTSIDE_RADIUS + WIND_ICON_TIP_TO_BOX_INNER;
144
+
133
145
  /**
134
146
  * `<obc-watch>` - Core SVG renderer for circular/radial watch-based instruments.
135
147
  *
@@ -966,10 +978,13 @@ export class ObcWatch extends LitElement {
966
978
  : nothing;
967
979
 
968
980
  // Compute label positions once – used for both rendering and crosshair
969
- // knockout. NSWE labels and the north arrow are px-fixed outside decor,
970
- // so they follow the same labelsHidden degradation as tick label texts.
981
+ // knockout. NSWE labels are px-fixed outside decor, so they follow the
982
+ // same labelsHidden degradation as tick label texts. The north arrow is
983
+ // exempt: below the small-scale threshold it renders as a compact
984
+ // triangle at the ring that scales with the face, so it stays visible
985
+ // on the smallest faces without clipping.
971
986
  const showNsweLabels = this.showLabels && !this._labelsHidden;
972
- const showNorthArrow = this.northArrow && !this._labelsHidden;
987
+ const showNorthArrow = this.northArrow;
973
988
  const insideLabels = this.tickmarksInside && showNsweLabels;
974
989
  const includeNorth = !this.northArrow;
975
990
  const labelPositions = showNsweLabels
@@ -1006,7 +1021,7 @@ export class ObcWatch extends LitElement {
1006
1021
  ? svg`<g transform="scale(${this.scaleWindIcon})">${renderWind({
1007
1022
  windKnots: this.windKnots,
1008
1023
  fromDirectionDeg: this.windFromDirectionDeg,
1009
- radius: this.windSymbolRadius ?? 192,
1024
+ radius: this.windSymbolRadius ?? WIND_ICON_OUTSIDE_RADIUS,
1010
1025
  color: this.windColor,
1011
1026
  })}</g>`
1012
1027
  : nothing;
@@ -1022,7 +1037,7 @@ export class ObcWatch extends LitElement {
1022
1037
  : renderCurrent({
1023
1038
  current: this.current,
1024
1039
  fromDirectionDeg: this.currentFromDirectionDeg,
1025
- radius: this.currentSymbolRadius ?? 192,
1040
+ radius: this.currentSymbolRadius ?? CURRENT_ICON_OUTSIDE_RADIUS,
1026
1041
  color: this.currentColor,
1027
1042
  })
1028
1043
  : nothing;
@@ -3,8 +3,10 @@ import {resolveWindArrowPlacement, WindVariant} from './wind.js';
3
3
 
4
4
  describe('resolveWindArrowPlacement', () => {
5
5
  it('matches the OpenBridge 6.1 design values (effective tip = radius × scale)', () => {
6
+ // Large: 48-unit icon box fills the double-face track band (112–160);
7
+ // tip anchor = 112 + inward overhang 3.1094 of the 2× glyph.
6
8
  expect(resolveWindArrowPlacement(WindVariant.large)).toEqual({
7
- windSymbolRadius: 119,
9
+ windSymbolRadius: 112 + (24 - 22.4453) * 2,
8
10
  scaleWindIcon: 1.0,
9
11
  });
10
12
  expect(resolveWindArrowPlacement(WindVariant.medium)).toEqual({
@@ -7,6 +7,7 @@ import {
7
7
  WatchCircleType,
8
8
  innerRingRadiusFor,
9
9
  } from '../watch/watch.js';
10
+ import {WIND_ICON_TIP_TO_BOX_INNER} from '../watch/environment.js';
10
11
  import {renderWindForcePattern} from '../watch/force-pattern.js';
11
12
  import {Priority} from '../types.js';
12
13
  import {customElement} from '../../decorator.js';
@@ -320,8 +321,11 @@ function resolveHistogramMaxRadius(variant: ResolvedWindVariant): number {
320
321
  * `scaleWindIcon` scales the arrow glyph — and, because the scale group wraps
321
322
  * the translated glyph, the effective tip radius is `radius × scale`.
322
323
  *
323
- * Values measured from the OpenBridge 6.1 Figma (node 6552-102891):
324
- * large tip ≈119 (inner-ring edge), medium ≈93, small ≈8 (touching center).
324
+ * Large places the 48-unit icon box exactly inside the double-face track
325
+ * band (112–160), per the OpenBridge 6.1 design (the icon box spans the
326
+ * band, node 19663-140867); the tip anchor is the box inner edge plus the
327
+ * glyph's inward overhang. Medium ≈93 and small ≈8 (touching center) are
328
+ * measured from the Figma variants (node 6552-102891).
325
329
  */
326
330
  export function resolveWindArrowPlacement(variant: ResolvedWindVariant): {
327
331
  windSymbolRadius: number;
@@ -329,7 +333,12 @@ export function resolveWindArrowPlacement(variant: ResolvedWindVariant): {
329
333
  } {
330
334
  switch (variant) {
331
335
  case WindVariant.large:
332
- return {windSymbolRadius: 119, scaleWindIcon: 1.0};
336
+ return {
337
+ windSymbolRadius:
338
+ innerRingRadiusFor(WatchCircleType.double) +
339
+ WIND_ICON_TIP_TO_BOX_INNER,
340
+ scaleWindIcon: 1.0,
341
+ };
333
342
  case WindVariant.medium:
334
343
  return {windSymbolRadius: 62, scaleWindIcon: 1.5};
335
344
  case WindVariant.small: