@oicl/openbridge-webcomponents-full-bundle 2.0.0-next.120 → 2.0.0-next.122

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 (56) hide show
  1. package/bundle/openbridge-webcomponents.bundle.js +255 -67
  2. package/bundle/openbridge-webcomponents.bundle.js.map +1 -1
  3. package/custom-elements.json +67 -18
  4. package/dist/automation/automation-tank/automation-tank.css.js +94 -14
  5. package/dist/automation/automation-tank/automation-tank.css.js.map +1 -1
  6. package/dist/automation/automation-tank/automation-tank.d.ts +53 -5
  7. package/dist/automation/automation-tank/automation-tank.d.ts.map +1 -1
  8. package/dist/automation/automation-tank/automation-tank.js +39 -20
  9. package/dist/automation/automation-tank/automation-tank.js.map +1 -1
  10. package/dist/building-blocks/readout-block/readout-block.d.ts +27 -1
  11. package/dist/building-blocks/readout-block/readout-block.d.ts.map +1 -1
  12. package/dist/building-blocks/readout-block/readout-block.js +31 -10
  13. package/dist/building-blocks/readout-block/readout-block.js.map +1 -1
  14. package/dist/integration-systems/integration-button/integration-button.css.js +20 -13
  15. package/dist/integration-systems/integration-button/integration-button.css.js.map +1 -1
  16. package/dist/integration-systems/integration-button/integration-button.d.ts +1 -1
  17. package/dist/integration-systems/integration-button/integration-button.js +1 -1
  18. package/dist/integration-systems/integration-button/integration-button.js.map +1 -1
  19. package/dist/integration-systems/integration-dropdown-button/integration-dropdown-button.css.js +1 -0
  20. package/dist/integration-systems/integration-dropdown-button/integration-dropdown-button.css.js.map +1 -1
  21. package/dist/navigation-instruments/readout/readout-formatters.d.ts +61 -0
  22. package/dist/navigation-instruments/readout/readout-formatters.d.ts.map +1 -1
  23. package/dist/navigation-instruments/readout/readout-formatters.js +35 -2
  24. package/dist/navigation-instruments/readout/readout-formatters.js.map +1 -1
  25. package/dist/navigation-instruments/readout/readout.d.ts +19 -2
  26. package/dist/navigation-instruments/readout/readout.d.ts.map +1 -1
  27. package/dist/navigation-instruments/readout/readout.js +18 -4
  28. package/dist/navigation-instruments/readout/readout.js.map +1 -1
  29. package/dist/navigation-instruments/readout-list/readout-list.d.ts.map +1 -1
  30. package/dist/navigation-instruments/readout-list/readout-list.js +6 -3
  31. package/dist/navigation-instruments/readout-list/readout-list.js.map +1 -1
  32. package/dist/navigation-instruments/readout-list-item/readout-list-item.d.ts +19 -2
  33. package/dist/navigation-instruments/readout-list-item/readout-list-item.d.ts.map +1 -1
  34. package/dist/navigation-instruments/readout-list-item/readout-list-item.js +18 -4
  35. package/dist/navigation-instruments/readout-list-item/readout-list-item.js.map +1 -1
  36. package/package.json +4 -2
  37. package/script/agent-docs/emitters.ts +189 -0
  38. package/script/agent-docs/frontmatter.ts +118 -0
  39. package/script/check-slot-event-docs.ts +2 -2
  40. package/script/sync-agent-docs.test.ts +298 -0
  41. package/script/sync-agent-docs.ts +156 -0
  42. package/src/automation/automation-tank/automation-tank.css +70 -3
  43. package/src/automation/automation-tank/automation-tank.stories.ts +140 -1
  44. package/src/automation/automation-tank/automation-tank.ts +106 -27
  45. package/src/building-blocks/readout-block/readout-block.stories.ts +20 -0
  46. package/src/building-blocks/readout-block/readout-block.ts +56 -10
  47. package/src/icons/AGENTS.md +6 -0
  48. package/src/integration-systems/integration-button/integration-button.css +20 -13
  49. package/src/integration-systems/integration-button/integration-button.stories.ts +70 -44
  50. package/src/integration-systems/integration-button/integration-button.ts +2 -2
  51. package/src/integration-systems/integration-dropdown-button/integration-dropdown-button.css +1 -0
  52. package/src/navigation-instruments/readout/readout-formatters.spec.ts +205 -0
  53. package/src/navigation-instruments/readout/readout-formatters.ts +128 -2
  54. package/src/navigation-instruments/readout/readout.ts +38 -5
  55. package/src/navigation-instruments/readout-list/readout-list.ts +10 -2
  56. package/src/navigation-instruments/readout-list-item/readout-list-item.ts +38 -5
@@ -17,6 +17,9 @@ import {
17
17
  } from '../../building-blocks/readout-block/readout-block.js';
18
18
  import {
19
19
  assertReadoutValueType,
20
+ assertReadoutFractionDigits,
21
+ isReadoutDigitCountMissing,
22
+ resolveReadoutDigitCount,
20
23
  resolveReadoutNumericValue,
21
24
  ReadoutValueType,
22
25
  type ReadoutNumericFormatOptions,
@@ -289,13 +292,22 @@ export class ObcReadoutListItem extends LitElement {
289
292
  @property({type: Boolean}) hasDegreeSpacer = false;
290
293
  /**
291
294
  * Also formats the numeric setpoint / advice blocks, which stay numeric
292
- * even when the value is text.
295
+ * even when the value is text. Must be between 0 and 100 — the range
296
+ * `Number.prototype.toFixed` accepts; outside it throws a `RangeError`.
297
+ * A fractional count truncates (`2.7` → `2`). A count that never arrived
298
+ * (`NaN`, `null` or unset) renders the reading as the unavailable dash —
299
+ * formatting with a precision the author never chose would let a critical
300
+ * `0.4` pass for a healthy `0`.
293
301
  * @availableWhen valueType==number || hasSetpoint==true || hasAdvice==true
294
302
  */
295
303
  @property({type: Number}) fractionDigits = 0;
296
304
  /**
297
305
  * Also formats the numeric setpoint / advice blocks, which stay numeric
298
- * even when the value is text.
306
+ * even when the value is text. Bounded before use: a fractional count
307
+ * truncates (`2.7` → `2`), anything above 100 — including `Infinity` —
308
+ * caps at 100, and a negative count reserves nothing. A count that never
309
+ * arrived (`NaN`, `null` or unset) renders the reading as the unavailable
310
+ * dash, consistent with `fractionDigits`.
299
311
  * @availableWhen valueType==number || hasSetpoint==true || hasAdvice==true
300
312
  */
301
313
  @property({type: Number}) maxDigits = 0;
@@ -343,7 +355,21 @@ export class ObcReadoutListItem extends LitElement {
343
355
  }
344
356
 
345
357
  private get resolvedMaxDigits(): number {
346
- return this.maxDigits ?? 0;
358
+ return resolveReadoutDigitCount(this.maxDigits);
359
+ }
360
+
361
+ /**
362
+ * Whether a digit knob failed to arrive (`NaN` / `null` / `undefined`).
363
+ * The raw knobs are forwarded to the blocks, which render the reading as
364
+ * the unavailable dash (see `obc-readout-block.digitCountsMissing`); this
365
+ * getter only keeps the setpoint comparison in agreement with what is
366
+ * displayed.
367
+ */
368
+ private get digitCountsMissing(): boolean {
369
+ return (
370
+ isReadoutDigitCountMissing(this.fractionDigits) ||
371
+ isReadoutDigitCountMissing(this.maxDigits)
372
+ );
347
373
  }
348
374
 
349
375
  private get resolvedClickable(): false | Required<ReadoutListItemClickable> {
@@ -361,6 +387,12 @@ export class ObcReadoutListItem extends LitElement {
361
387
  if (!this.hasSetpoint) {
362
388
  return false;
363
389
  }
390
+ // A missing digit knob renders every numeric block as the dash; two
391
+ // dashes must not read as "at the setpoint", so the comparison stays off
392
+ // entirely while the configuration is untrustworthy.
393
+ if (this.digitCountsMissing) {
394
+ return false;
395
+ }
364
396
  // A text value never compares equal to a setpoint, so flip-flop / pop-up
365
397
  // stay dormant for `valueType="text"`.
366
398
  return isDisplayedAtSetpoint(
@@ -516,8 +548,8 @@ export class ObcReadoutListItem extends LitElement {
516
548
  .weight=${config.weight}
517
549
  .hasDegree=${config.hasDegree ?? false}
518
550
  .hasIcon=${config.hasIcon ?? false}
519
- .fractionDigits=${this.resolvedFractionDigits}
520
- .maxDigits=${this.resolvedMaxDigits}
551
+ .fractionDigits=${this.fractionDigits}
552
+ .maxDigits=${this.maxDigits}
521
553
  .hintedZeros=${config.hintedZeros}
522
554
  .spaceReserver=${config.spaceReserver}
523
555
  .off=${config.off ?? false}
@@ -869,6 +901,7 @@ export class ObcReadoutListItem extends LitElement {
869
901
  // `changed`, skip the check, and render the invalid value as a plain dash:
870
902
  // exactly the silent failure this assertion exists to prevent.
871
903
  assertReadoutValueType('obc-readout-list-item', this.value, this.valueType);
904
+ assertReadoutFractionDigits('obc-readout-list-item', this.fractionDigits);
872
905
  }
873
906
 
874
907
  override updated(changed: Map<string, unknown>): void {