@oicl/openbridge-webcomponents 2.0.0-next.57 → 2.0.0-next.59

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 (133) hide show
  1. package/bundle/openbridge-webcomponents.bundle.js +6585 -4581
  2. package/bundle/openbridge-webcomponents.bundle.js.map +1 -1
  3. package/custom-elements.json +1047 -83
  4. package/dist/alert-severity.d.ts +38 -0
  5. package/dist/alert-severity.d.ts.map +1 -0
  6. package/dist/alert-severity.js +176 -0
  7. package/dist/alert-severity.js.map +1 -0
  8. package/dist/ar/building-blocks/poi-header/poi-header.css.js +38 -7
  9. package/dist/ar/building-blocks/poi-header/poi-header.css.js.map +1 -1
  10. package/dist/ar/building-blocks/poi-header/poi-header.d.ts +7 -2
  11. package/dist/ar/building-blocks/poi-header/poi-header.d.ts.map +1 -1
  12. package/dist/ar/building-blocks/poi-header/poi-header.js +5 -0
  13. package/dist/ar/building-blocks/poi-header/poi-header.js.map +1 -1
  14. package/dist/ar/poi-button/poi-button.css.js +110 -32
  15. package/dist/ar/poi-button/poi-button.css.js.map +1 -1
  16. package/dist/ar/poi-button/poi-button.d.ts +7 -2
  17. package/dist/ar/poi-button/poi-button.d.ts.map +1 -1
  18. package/dist/ar/poi-button/poi-button.js +15 -0
  19. package/dist/ar/poi-button/poi-button.js.map +1 -1
  20. package/dist/ar/types.d.ts +6 -1
  21. package/dist/ar/types.d.ts.map +1 -1
  22. package/dist/ar/types.js +5 -0
  23. package/dist/ar/types.js.map +1 -1
  24. package/dist/automation/automation-badge/automation-badge.d.ts +9 -1
  25. package/dist/automation/automation-badge/automation-badge.d.ts.map +1 -1
  26. package/dist/automation/automation-badge/automation-badge.js +119 -12
  27. package/dist/automation/automation-badge/automation-badge.js.map +1 -1
  28. package/dist/automation/automation-button/abstract-automation-button-storybook-helpers.d.ts +25 -1
  29. package/dist/automation/automation-button/abstract-automation-button-storybook-helpers.d.ts.map +1 -1
  30. package/dist/automation/automation-button/abstract-automation-button-storybook-helpers.js +7 -2
  31. package/dist/automation/automation-button/abstract-automation-button-storybook-helpers.js.map +1 -1
  32. package/dist/automation/automation-button/abstract-automation-button.d.ts +10 -3
  33. package/dist/automation/automation-button/abstract-automation-button.d.ts.map +1 -1
  34. package/dist/automation/automation-button/abstract-automation-button.js +23 -2
  35. package/dist/automation/automation-button/abstract-automation-button.js.map +1 -1
  36. package/dist/automation/automation-button/automation-button.css.js +9 -4
  37. package/dist/automation/automation-button/automation-button.css.js.map +1 -1
  38. package/dist/automation/automation-button/automation-button.d.ts +4 -2
  39. package/dist/automation/automation-button/automation-button.d.ts.map +1 -1
  40. package/dist/automation/automation-button/automation-button.js +24 -6
  41. package/dist/automation/automation-button/automation-button.js.map +1 -1
  42. package/dist/automation/automation-tank/automation-tank.d.ts +3 -2
  43. package/dist/automation/automation-tank/automation-tank.d.ts.map +1 -1
  44. package/dist/automation/automation-tank/automation-tank.js +13 -2
  45. package/dist/automation/automation-tank/automation-tank.js.map +1 -1
  46. package/dist/building-blocks/instrument-radial/instrument-radial.d.ts +10 -0
  47. package/dist/building-blocks/instrument-radial/instrument-radial.d.ts.map +1 -1
  48. package/dist/building-blocks/instrument-radial/instrument-radial.js +86 -21
  49. package/dist/building-blocks/instrument-radial/instrument-radial.js.map +1 -1
  50. package/dist/components/accordion-card/accordion-card.css.js +34 -0
  51. package/dist/components/accordion-card/accordion-card.css.js.map +1 -1
  52. package/dist/components/accordion-card/accordion-card.d.ts +3 -2
  53. package/dist/components/accordion-card/accordion-card.d.ts.map +1 -1
  54. package/dist/components/accordion-card/accordion-card.js +4 -3
  55. package/dist/components/accordion-card/accordion-card.js.map +1 -1
  56. package/dist/components/alert-button/alert-button.css.js +744 -7
  57. package/dist/components/alert-button/alert-button.css.js.map +1 -1
  58. package/dist/components/alert-button/alert-button.d.ts +3 -1
  59. package/dist/components/alert-button/alert-button.d.ts.map +1 -1
  60. package/dist/components/alert-button/alert-button.js +33 -31
  61. package/dist/components/alert-button/alert-button.js.map +1 -1
  62. package/dist/components/alert-frame/alert-frame.css.js +116 -29
  63. package/dist/components/alert-frame/alert-frame.css.js.map +1 -1
  64. package/dist/components/alert-frame/alert-frame.d.ts +42 -15
  65. package/dist/components/alert-frame/alert-frame.d.ts.map +1 -1
  66. package/dist/components/alert-frame/alert-frame.js +68 -17
  67. package/dist/components/alert-frame/alert-frame.js.map +1 -1
  68. package/dist/components/alert-frame/critical-badge.d.ts +12 -0
  69. package/dist/components/alert-frame/critical-badge.d.ts.map +1 -0
  70. package/dist/components/alert-frame/critical-badge.js +47 -0
  71. package/dist/components/alert-frame/critical-badge.js.map +1 -0
  72. package/dist/components/alert-frame/diagnostic-badge.d.ts +12 -0
  73. package/dist/components/alert-frame/diagnostic-badge.d.ts.map +1 -0
  74. package/dist/components/alert-frame/diagnostic-badge.js +60 -0
  75. package/dist/components/alert-frame/diagnostic-badge.js.map +1 -0
  76. package/dist/components/alert-icon/alert-icon.d.ts +6 -1
  77. package/dist/components/alert-icon/alert-icon.d.ts.map +1 -1
  78. package/dist/components/alert-icon/alert-icon.js +96 -38
  79. package/dist/components/alert-icon/alert-icon.js.map +1 -1
  80. package/dist/components/alert-icon/icons/icon-critical.d.ts +3 -0
  81. package/dist/components/alert-icon/icons/icon-critical.d.ts.map +1 -0
  82. package/dist/components/alert-icon/icons/icon-critical.js +26 -0
  83. package/dist/components/alert-icon/icons/icon-critical.js.map +1 -0
  84. package/dist/components/alert-list-details/alert-list-details.d.ts.map +1 -1
  85. package/dist/components/alert-list-details/alert-list-details.js +6 -7
  86. package/dist/components/alert-list-details/alert-list-details.js.map +1 -1
  87. package/dist/components/badge/badge.css.js +50 -2
  88. package/dist/components/badge/badge.css.js.map +1 -1
  89. package/dist/components/badge/badge.d.ts +13 -2
  90. package/dist/components/badge/badge.d.ts.map +1 -1
  91. package/dist/components/badge/badge.js +54 -0
  92. package/dist/components/badge/badge.js.map +1 -1
  93. package/dist/index.js +2 -1
  94. package/dist/manual-icon/icon-alerts-critical-twotone.d.ts +30 -0
  95. package/dist/manual-icon/icon-alerts-critical-twotone.d.ts.map +1 -0
  96. package/dist/manual-icon/icon-alerts-critical-twotone.js +55 -0
  97. package/dist/manual-icon/icon-alerts-critical-twotone.js.map +1 -0
  98. package/dist/manual-icon/icon-alerts-diagnostic-twotone.d.ts +30 -0
  99. package/dist/manual-icon/icon-alerts-diagnostic-twotone.d.ts.map +1 -0
  100. package/dist/manual-icon/icon-alerts-diagnostic-twotone.js +55 -0
  101. package/dist/manual-icon/icon-alerts-diagnostic-twotone.js.map +1 -0
  102. package/dist/navigation-instruments/gauge-radial/gauge-radial.css.js +99 -0
  103. package/dist/navigation-instruments/gauge-radial/gauge-radial.css.js.map +1 -0
  104. package/dist/navigation-instruments/gauge-radial/gauge-radial.d.ts +42 -7
  105. package/dist/navigation-instruments/gauge-radial/gauge-radial.d.ts.map +1 -1
  106. package/dist/navigation-instruments/gauge-radial/gauge-radial.js +178 -31
  107. package/dist/navigation-instruments/gauge-radial/gauge-radial.js.map +1 -1
  108. package/dist/navigation-instruments/readout/readout.css.js +7 -18
  109. package/dist/navigation-instruments/readout/readout.css.js.map +1 -1
  110. package/dist/navigation-instruments/readout/readout.d.ts +6 -7
  111. package/dist/navigation-instruments/readout/readout.d.ts.map +1 -1
  112. package/dist/navigation-instruments/readout/readout.js +54 -52
  113. package/dist/navigation-instruments/readout/readout.js.map +1 -1
  114. package/dist/navigation-instruments/readout-list-item/readout-list-item.css.js +9 -36
  115. package/dist/navigation-instruments/readout-list-item/readout-list-item.css.js.map +1 -1
  116. package/dist/navigation-instruments/readout-list-item/readout-list-item.d.ts +8 -8
  117. package/dist/navigation-instruments/readout-list-item/readout-list-item.d.ts.map +1 -1
  118. package/dist/navigation-instruments/readout-list-item/readout-list-item.js +49 -42
  119. package/dist/navigation-instruments/readout-list-item/readout-list-item.js.map +1 -1
  120. package/dist/navigation-instruments/watch/tickmark.d.ts +2 -1
  121. package/dist/navigation-instruments/watch/tickmark.d.ts.map +1 -1
  122. package/dist/navigation-instruments/watch/tickmark.js +24 -4
  123. package/dist/navigation-instruments/watch/tickmark.js.map +1 -1
  124. package/dist/navigation-instruments/watch/watch.d.ts +23 -1
  125. package/dist/navigation-instruments/watch/watch.d.ts.map +1 -1
  126. package/dist/navigation-instruments/watch/watch.js +48 -20
  127. package/dist/navigation-instruments/watch/watch.js.map +1 -1
  128. package/dist/openbridge.css +155 -0
  129. package/dist/types.d.ts +7 -1
  130. package/dist/types.d.ts.map +1 -1
  131. package/dist/types.js +18 -7
  132. package/dist/types.js.map +1 -1
  133. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"readout.js","sources":["../../../src/navigation-instruments/readout/readout.ts"],"sourcesContent":["import {LitElement, html, nothing, unsafeCSS} from 'lit';\nimport {property, query, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport componentStyle from './readout.css?inline';\nimport {customElement} from '../../decorator.js';\nimport '../../components/context-menu-input/context-menu-input.js';\nimport {\n ContextMenuType,\n type ContextMenuOption,\n type ObcContextMenuInputItemClickEvent,\n} from '../../components/context-menu-input/context-menu-input.js';\nimport {Priority} from '../types.js';\nimport '../../icons/icon-input-right.js';\nimport '../../icons/icon-placeholder.js';\nimport {\n ReadoutAdviceState,\n ReadoutAdviceFormat,\n} from '../readout-advice/readout-advice.js';\nimport '../readout-advice/readout-advice.js';\nimport {\n renderReadoutLabelZone,\n renderReadoutMetaZone,\n renderReadoutUnitZone,\n} from './readout-meta.js';\nimport {\n ReadoutSourceType,\n renderReadoutSource,\n supportsReadoutSourcePicker,\n} from './readout-source.js';\nimport {\n ReadoutSetpointMode,\n ReadoutSetpointFormat,\n ReadoutSetpointVariant,\n ReadoutSetpointSize,\n} from '../readout-setpoint/readout-setpoint.js';\nimport '../readout-setpoint/readout-setpoint.js';\n\nexport enum ReadoutVariant {\n regular = 'regular',\n enhanced = 'enhanced',\n stack = 'stack',\n}\n\nexport enum ReadoutAlertState {\n none = 'none',\n lowIntegrity = 'low-integrity',\n invalid = 'invalid',\n caution = 'caution',\n warning = 'warning',\n alarm = 'alarm',\n}\n\nexport enum ReadoutSetpointInteraction {\n alwaysVisible = 'always-visible',\n flipFlop = 'flip-flop',\n popUp = 'pop-up',\n}\n\nexport enum ReadoutDirection {\n vertical = 'vertical',\n horizontal = 'horizontal',\n}\n\nexport enum ReadoutStackVerticalAlignment {\n left = 'left',\n center = 'center',\n vertical = 'vertical',\n}\n\nexport {ReadoutSourceType};\n\n/**\n * `<obc-readout>` – A component for displaying navigation instrument data.\n *\n * This component is used to show a primary value, optional advice and setpoint segments, units, a label, and a source (e.g., GPS, Gyro).\n * It supports different readout styles, horizontal/vertical layouts, and configurable numeric formatting.\n *\n * ### Features\n * - **Readout Styles:** Supports `regular`, `enhanced`, and `stack` presentations.\n * - **Segments:** Optional advice, setpoint, and leading icon display in addition to the main value.\n * - **Source:** Optional source display with `small`, `regular`, `delta`, and `flyout` variants.\n * - **Source Picker:** Optional source selection with a dropdown and context menu.\n * - **Formatting:** Customizable integer and fraction digits, dashed fallback values, and optional zero padding.\n * - **Layouts:** Can be oriented horizontally or vertically, with optional dividers and segment spacing controls.\n *\n * ### Slots\n * | Slot Name | Purpose |\n * |---------------------|----------------------------------------------------------------------------|\n * | advice | Replaces the fallback advice segment when `hasAdvice` is true. |\n * | advice-icon | Replaces the fallback advice icon when `hasAdvice` is true. |\n * | setpoint | Replaces the fallback setpoint segment when `hasSetpoint` is true. |\n * | setpoint-icon | Replaces the fallback setpoint icon when `hasSetpoint` is true. |\n * | leading-icon | Replaces the fallback leading icon beside the main value. |\n * | value | Replaces the formatted main value content. |\n * | label | Replaces the label content. |\n * | unit | Replaces the unit content. |\n * | source | Replaces the source row content. |\n * | src-picker-content | Content for the source picker context menu (e.g., a list of sources). |\n *\n * @fires source-flyout-click {CustomEvent<{src: string, sourceType?: ReadoutSourceType}>} Fired when the source row is clicked while `sourceType=\"flyout\"`.\n * @fires source-change {CustomEvent<{value: string, label?: string}>} Fired when a source picker option is selected.\n *\n * @slot advice - Replaces the fallback advice segment.\n * @slot advice-icon - Replaces the fallback advice icon.\n * @slot setpoint - Replaces the fallback setpoint segment.\n * @slot setpoint-icon - Replaces the fallback setpoint icon.\n * @slot leading-icon - Replaces the fallback leading icon beside the value.\n * @slot value - Replaces the formatted main value content.\n * @slot label - Replaces the label content.\n * @slot unit - Replaces the unit content.\n * @slot source - Replaces the source row content.\n * @slot src-picker-content - Provides the source picker context menu content.\n */\n@customElement('obc-readout')\nexport class ObcReadout extends LitElement {\n @property({type: Number}) value?: number;\n @property({type: Boolean}) hasSetpoint = false;\n @property({type: Number}) setpointValue?: number;\n @property({type: String}) variant: ReadoutVariant = ReadoutVariant.regular;\n @property({type: Boolean}) hasDegree = false;\n @property({type: String}) label = '';\n @property({type: String}) unit?: string;\n @property({type: String}) src?: string;\n @property({type: Boolean}) off = false;\n @property({type: String}) valuePriority?: Priority;\n @property({type: String}) alertState: ReadoutAlertState =\n ReadoutAlertState.none;\n @property({type: String}) setpointInteraction: ReadoutSetpointInteraction =\n ReadoutSetpointInteraction.alwaysVisible;\n @property({type: String}) direction: ReadoutDirection =\n ReadoutDirection.vertical;\n\n /**\n * Override the size of the setpoint segment (when `hasSetpoint` is true).\n *\n * - In `alwaysVisible` and `popUp` interaction modes: any size value applies.\n * - In `flipFlop` mode: the override is honored only when strictly smaller\n * than the variant's base size (medium for `regular`, large for\n * `enhanced`/`stack`). Larger overrides are ignored, falling back to the\n * default secondary size to preserve the flip-flop visual effect and\n * prevent setpoint/value overlap.\n *\n * When unset, the setpoint size is derived from `variant` (and adjusted for\n * multi-line formats).\n */\n @property({type: String}) setpointSize?: ReadoutSetpointSize;\n @property({type: String})\n alignment: ReadoutStackVerticalAlignment =\n ReadoutStackVerticalAlignment.vertical;\n @property({type: Boolean}) hug = false;\n @property({type: Boolean}) hasSetpointDivider = false;\n @property({type: Boolean}) hasSourceDivider = false;\n @property({type: Boolean}) showZeroPadding = false;\n @property({type: Number}) fractionDigits = 0;\n @property({type: Number}) minValueLength = 0;\n @property({type: Boolean}) valueHasHintedZeros = false;\n\n @property({type: Boolean}) labelOnly = false;\n @property({type: Boolean}) hasSrcPicker = false;\n @property({type: Number}) sourceDeltaValue = 0;\n @property({type: String}) sourceType?: ReadoutSourceType;\n @property({type: Boolean}) hasLeadingIcon = false;\n\n @property({type: Boolean, attribute: false}) sourceHug = true;\n @property({type: Boolean}) hasSourceLeadingIcon = false;\n @property({type: Boolean, attribute: false}) hasSourceTrailingIcon = true;\n @property({type: Boolean}) hasAdvice = false;\n @property({type: Number}) adviceValue?: number;\n @property({type: String}) adviceFormat: ReadoutAdviceFormat =\n ReadoutAdviceFormat.regular;\n @property({type: String}) adviceState: ReadoutAdviceState =\n ReadoutAdviceState.enabled;\n @property({type: Number}) adviceSecondaryValue: number | undefined =\n undefined;\n @property({type: String}) adviceDescription = '';\n @property({type: Boolean}) adviceHasHintedZeros = false;\n @property({type: String}) setpointFormat: ReadoutSetpointFormat =\n ReadoutSetpointFormat.regular;\n @property({type: Number}) setpointSecondaryValue: number | undefined =\n undefined;\n @property({type: String}) setpointDescription = '';\n @property({type: Boolean}) setpointHasHintedZeros = false;\n\n @state()\n private deferredSetpointHidePhase: 'none' | 'hiding' | 'hidden' = 'none';\n @state() private sourcePickerContentVisible = false;\n @state() private sourcePickerOptions: ContextMenuOption[] = [];\n\n @query('slot[name=\"src-picker-content\"]')\n private sourcePickerSlot?: HTMLSlotElement;\n\n private readonly onWindowPointerDown = (event: PointerEvent) => {\n if (!this.sourcePickerContentVisible) {\n return;\n }\n\n const path = event.composedPath();\n if (path.includes(this)) {\n return;\n }\n\n this.sourcePickerContentVisible = false;\n };\n\n private deferredSetpointHideTimer: number | undefined;\n\n private hasCompletedFirstUpdate = false;\n\n private get isHorizontal() {\n return this.direction === ReadoutDirection.horizontal;\n }\n\n private get isVertical() {\n return this.direction === ReadoutDirection.vertical;\n }\n\n private get isEnhanced() {\n return this.variant === ReadoutVariant.enhanced;\n }\n\n private get isStack() {\n return this.variant === ReadoutVariant.stack;\n }\n\n private get hasSrc() {\n return this.src !== undefined && this.src.trim() !== '';\n }\n\n private get showAdviceDivider() {\n return this.isHorizontal && this.hasAdvice && this.hasSetpoint;\n }\n\n private get showSetpointDivider() {\n return (\n this.hasSetpointDivider &&\n this.hasSetpoint &&\n (this.setpointRendered || this.setpointLayoutReserved)\n );\n }\n\n private get showSourceDivider() {\n return this.hasSourceDivider && this.hasSrc;\n }\n\n private get showUnitZone() {\n return this.variant === ReadoutVariant.regular && this.isHorizontal;\n }\n\n private get shouldRenderReadoutMetaZone(): boolean {\n return Boolean(this.label || this.unit || this.labelOnly);\n }\n\n private resolvedValueMode(): ReadoutSetpointMode | undefined {\n if (!this.setpointInteractionRendered) {\n return undefined;\n }\n\n if (!this.isHorizontal) {\n return undefined;\n }\n\n if (this.interactionMode === ReadoutSetpointInteraction.alwaysVisible) {\n return ReadoutSetpointMode.setpoint;\n }\n\n if (this.interactionMode === ReadoutSetpointInteraction.popUp) {\n return undefined;\n }\n\n return undefined;\n }\n\n private resolvedSetpointModeForInteraction():\n | ReadoutSetpointMode\n | undefined {\n if (this.isHorizontal) {\n if (this.interactionMode === ReadoutSetpointInteraction.alwaysVisible) {\n return undefined;\n }\n\n if (this.interactionMode === ReadoutSetpointInteraction.popUp) {\n return ReadoutSetpointMode.setpoint;\n }\n }\n\n return undefined;\n }\n\n private resolveSetpointFormat(): ReadoutSetpointFormat | undefined {\n return this.setpointFormat;\n }\n\n private get interactionMode(): ReadoutSetpointInteraction {\n return this.setpointInteraction;\n }\n\n private get isSetpointReached(): boolean {\n return this.value === this.setpointValue;\n }\n\n private get flipFlopValueFocused(): boolean {\n return (\n this.interactionMode === ReadoutSetpointInteraction.flipFlop &&\n this.isSetpointReached\n );\n }\n\n private get flipFlopSetpointFocused(): boolean {\n return (\n this.interactionMode === ReadoutSetpointInteraction.flipFlop &&\n !this.isSetpointReached\n );\n }\n\n private get shouldHideSetpointForInteraction(): boolean {\n if (!this.setpointInteractionEnabled) {\n return false;\n }\n\n if (this.interactionMode === ReadoutSetpointInteraction.alwaysVisible) {\n return false;\n }\n\n if (this.interactionMode === ReadoutSetpointInteraction.popUp) {\n return (\n this.isSetpointReached && this.deferredSetpointHidePhase === 'hidden'\n );\n }\n\n return false;\n }\n\n private resolvedSetpointVisible(): boolean {\n if (!this.hasSetpoint) {\n return false;\n }\n\n return true;\n }\n\n private get setpointInteractionEnabled(): boolean {\n return this.resolvedSetpointVisible();\n }\n\n private get setpointRendered(): boolean {\n return (\n this.resolvedSetpointVisible() && !this.shouldHideSetpointForInteraction\n );\n }\n\n private get setpointInteractionRendered(): boolean {\n return this.setpointInteractionEnabled && this.setpointRendered;\n }\n\n private get setpointLayoutReserved(): boolean {\n if (\n !this.setpointInteractionEnabled ||\n this.interactionMode !== ReadoutSetpointInteraction.popUp\n ) {\n return false;\n }\n\n if (this.isHorizontal && this.deferredSetpointHidePhase === 'hidden') {\n return false;\n }\n\n return true;\n }\n\n private get hasInteractiveSetpointContext(): boolean {\n if (this.interactionMode === ReadoutSetpointInteraction.flipFlop) {\n return this.hasSetpoint;\n }\n\n if (this.setpointInteractionRendered || this.setpointLayoutReserved) {\n return true;\n }\n\n return (\n this.setpointInteractionEnabled &&\n this.isHorizontal &&\n this.interactionMode === ReadoutSetpointInteraction.popUp &&\n this.deferredSetpointHidePhase === 'hidden'\n );\n }\n\n private get resolvedSetpointPriority(): Priority {\n return this.resolvedValuePriority ?? Priority.regular;\n }\n\n private get baseSize(): ReadoutSetpointSize {\n return this.variant === ReadoutVariant.regular\n ? ReadoutSetpointSize.medium\n : ReadoutSetpointSize.large;\n }\n\n private stepDownSize(size: ReadoutSetpointSize): ReadoutSetpointSize {\n switch (size) {\n case ReadoutSetpointSize.large:\n return ReadoutSetpointSize.medium;\n case ReadoutSetpointSize.medium:\n return ReadoutSetpointSize.regular;\n case ReadoutSetpointSize.regular:\n return ReadoutSetpointSize.small;\n default:\n return ReadoutSetpointSize.small;\n }\n }\n\n private static readonly READOUT_SETPOINT_SIZE_ORDER: ReadoutSetpointSize[] = [\n ReadoutSetpointSize.small,\n ReadoutSetpointSize.regular,\n ReadoutSetpointSize.medium,\n ReadoutSetpointSize.large,\n ];\n\n private sizeRank(size: ReadoutSetpointSize): number {\n return ObcReadout.READOUT_SETPOINT_SIZE_ORDER.indexOf(size);\n }\n\n private get isMultiLineSetpointFormat(): boolean {\n return (\n this.setpointFormat === ReadoutSetpointFormat.description ||\n this.setpointFormat === ReadoutSetpointFormat.range\n );\n }\n\n private get resolvedSetpointSegmentSize(): ReadoutSetpointSize {\n if (this.interactionMode === ReadoutSetpointInteraction.flipFlop) {\n if (this.flipFlopSetpointFocused) {\n return this.baseSize;\n }\n\n const secondarySize =\n this.variant === ReadoutVariant.regular\n ? ReadoutSetpointSize.small\n : this.stepDownSize(this.baseSize);\n\n if (\n this.setpointSize &&\n this.sizeRank(this.setpointSize) < this.sizeRank(this.baseSize)\n ) {\n return this.setpointSize;\n }\n\n return secondarySize;\n }\n\n if (this.setpointSize) {\n return this.setpointSize;\n }\n\n if (\n this.isMultiLineSetpointFormat &&\n this.variant !== ReadoutVariant.regular\n ) {\n return this.stepDownSize(this.baseSize);\n }\n\n return this.baseSize;\n }\n\n private get resolvedValueSetpointSize(): ReadoutSetpointSize {\n if (this.interactionMode === ReadoutSetpointInteraction.flipFlop) {\n const secondarySize =\n this.variant === ReadoutVariant.regular\n ? ReadoutSetpointSize.small\n : this.stepDownSize(this.baseSize);\n return this.flipFlopValueFocused ? this.baseSize : secondarySize;\n }\n\n return this.baseSize;\n }\n\n private get resolvedValuePriority(): Priority | undefined {\n if (this.valuePriority) {\n return this.valuePriority;\n }\n\n if (!this.hasInteractiveSetpointContext) {\n return this.variant === ReadoutVariant.enhanced\n ? Priority.enhanced\n : undefined;\n }\n\n if (this.interactionMode === ReadoutSetpointInteraction.alwaysVisible) {\n return Priority.enhanced;\n }\n\n if (this.interactionMode === ReadoutSetpointInteraction.flipFlop) {\n return Priority.enhanced;\n }\n\n if (this.interactionMode === ReadoutSetpointInteraction.popUp) {\n return Priority.enhanced;\n }\n\n if (this.variant === ReadoutVariant.enhanced) {\n return Priority.enhanced;\n }\n\n return undefined;\n }\n\n /**\n * Segment size mapping for nested setpoint/advice segments.\n *\n * Mapping table (variant × direction):\n * - regular × vertical → regular\n * - regular × horizontal → regular\n * - enhanced × vertical → medium\n * - enhanced × horizontal→ medium\n * - stack × vertical → medium\n * - stack × horizontal → medium\n *\n * Rationale:\n * - Container must not rely on segment defaults (which are `small`).\n * - `regular` presentation uses regular-sized segments.\n * - `enhanced/stack` presentations use a larger segment baseline.\n */\n private get resolvedSegmentSize(): ReadoutSetpointSize {\n return this.variant === ReadoutVariant.regular\n ? ReadoutSetpointSize.regular\n : ReadoutSetpointSize.medium;\n }\n\n /**\n * Container-level layout decision for nested setpoint/advice segments.\n *\n * - **Enhanced**: nested segments use full-width layout (`hugContent` off)\n * regardless of readout `hug` (icon at the left edge, value at the right).\n * - **Regular / stack**: nested segments follow readout `hug` — compact when\n * `hug` is true, stretched when `hug` is false.\n */\n private get shouldHugNestedSegments(): boolean {\n if (this.variant === ReadoutVariant.enhanced) {\n return false;\n }\n\n return this.hug;\n }\n\n private get resolvedSourceType(): ReadoutSourceType {\n if (this.sourceType) {\n return this.sourceType;\n }\n\n return this.variant === ReadoutVariant.regular ||\n ((this.variant === ReadoutVariant.enhanced ||\n this.variant === ReadoutVariant.stack) &&\n this.isVertical)\n ? ReadoutSourceType.small\n : ReadoutSourceType.regular;\n }\n\n private getSourcePickerNavigationItems() {\n const assignedElements =\n this.sourcePickerSlot?.assignedElements({flatten: true}) ?? [];\n\n return assignedElements.flatMap((element) => {\n if (!(element instanceof HTMLElement)) {\n return [];\n }\n\n if (element.localName === 'obc-navigation-item') {\n return [element];\n }\n\n return Array.from(element.querySelectorAll('obc-navigation-item'));\n });\n }\n\n private createSourcePickerOptionIcon(element: HTMLElement) {\n const iconElement = element.querySelector('[slot=\"icon\"]');\n\n if (!(iconElement instanceof HTMLElement)) {\n return undefined;\n }\n\n return html`${iconElement.cloneNode(true)}`;\n }\n\n private getSourcePickerItemInfo(item: HTMLElement, index: number) {\n const itemWithValues = item as HTMLElement & {\n label?: string;\n value?: string;\n };\n const itemLabel = itemWithValues.label || item.getAttribute('label') || '';\n const itemValue =\n item.getAttribute('data-value') ||\n itemWithValues.value ||\n item.getAttribute('value') ||\n itemLabel ||\n `source-option-${index}`;\n\n return {itemLabel, itemValue};\n }\n\n private findSourcePickerOptionElement(value: string) {\n const navigationItems = this.getSourcePickerNavigationItems();\n for (const [index, item] of navigationItems.entries()) {\n const {itemValue} = this.getSourcePickerItemInfo(item, index);\n if (itemValue === value) {\n return item;\n }\n }\n return undefined;\n }\n\n private syncSourcePickerOptions() {\n const navigationItems = this.getSourcePickerNavigationItems();\n\n this.sourcePickerOptions = navigationItems.map((item, index) => {\n const {itemLabel, itemValue} = this.getSourcePickerItemInfo(item, index);\n\n return {\n value: itemValue,\n label: itemLabel,\n icon: this.createSourcePickerOptionIcon(item),\n };\n });\n }\n\n private handleSourcePickerItemClick(\n event: ObcContextMenuInputItemClickEvent\n ) {\n this.dispatchEvent(\n new CustomEvent('source-change', {\n bubbles: true,\n composed: true,\n detail: {\n value: event.detail.value,\n label: event.detail.option?.label,\n },\n })\n );\n this.findSourcePickerOptionElement(event.detail.value)?.click();\n this.sourcePickerContentVisible = false;\n }\n\n override updated(changedProperties: Map<string, unknown>) {\n super.updated(changedProperties);\n\n if (changedProperties.has('sourcePickerContentVisible')) {\n // TODO: Implement this in html instead.\n if (this.sourcePickerContentVisible) {\n window.addEventListener('pointerdown', this.onWindowPointerDown, true);\n } else {\n window.removeEventListener(\n 'pointerdown',\n this.onWindowPointerDown,\n true\n );\n }\n }\n\n if (\n !(\n changedProperties.has('value') ||\n changedProperties.has('setpointValue') ||\n changedProperties.has('hasSetpoint') ||\n changedProperties.has('setpointInteraction')\n )\n ) {\n return;\n }\n\n if (this.interactionMode !== ReadoutSetpointInteraction.popUp) {\n this.deferredSetpointHidePhase = 'none';\n window.clearTimeout(this.deferredSetpointHideTimer);\n this.deferredSetpointHideTimer = undefined;\n return;\n }\n\n const shouldHideSetpoint = this.hasSetpoint && this.isSetpointReached;\n\n if (!this.hasCompletedFirstUpdate) {\n this.deferredSetpointHidePhase = shouldHideSetpoint ? 'hidden' : 'none';\n return;\n }\n\n if (!shouldHideSetpoint) {\n this.deferredSetpointHidePhase = 'none';\n window.clearTimeout(this.deferredSetpointHideTimer);\n this.deferredSetpointHideTimer = undefined;\n return;\n }\n\n if (this.deferredSetpointHidePhase !== 'none') {\n return;\n }\n\n this.deferredSetpointHidePhase = 'hiding';\n window.clearTimeout(this.deferredSetpointHideTimer);\n this.deferredSetpointHideTimer = window.setTimeout(() => {\n this.deferredSetpointHidePhase = 'hidden';\n this.deferredSetpointHideTimer = undefined;\n }, 160);\n }\n\n override firstUpdated() {\n this.hasCompletedFirstUpdate = true;\n }\n\n private renderAdvice() {\n if (!this.hasAdvice) {\n return nothing;\n }\n\n const adviceSegmentSize =\n this.variant === ReadoutVariant.regular && this.isHorizontal\n ? this.resolvedSetpointSegmentSize\n : this.resolvedSegmentSize;\n\n return html`\n <div class=\"readout-segment-wrapper readout-advice\" part=\"advice-wrapper\">\n <slot name=\"advice\">\n <obc-readout-advice\n data-obc-value-typography=${this.variant ===\n ReadoutVariant.regular && this.isVertical\n ? 'medium'\n : nothing}\n .readoutStyle=${this.variant}\n .direction=${this.direction}\n .size=${adviceSegmentSize}\n .hugContent=${this.shouldHugNestedSegments}\n .priority=${this.resolvedValuePriority}\n .format=${this.adviceFormat}\n .state=${this.adviceState}\n .value=${this.adviceValue}\n .secondaryValue=${this.adviceSecondaryValue}\n .description=${this.adviceDescription}\n .minValueLength=${this.minValueLength}\n .hasHintedZeros=${this.adviceHasHintedZeros}\n .fractionDigits=${this.fractionDigits}\n .hasDegree=${this.hasDegree}\n >\n <slot name=\"advice-icon\" slot=\"icon\">\n <obi-placeholder slot=\"icon\"></obi-placeholder>\n </slot>\n </obc-readout-advice>\n </slot>\n </div>\n `;\n }\n\n private renderSetpoint() {\n if (!this.hasSetpoint) {\n return nothing;\n }\n\n if (!this.setpointRendered && !this.setpointLayoutReserved) {\n return nothing;\n }\n\n const setpointReadoutStyle =\n this.isHorizontal &&\n this.interactionMode === ReadoutSetpointInteraction.alwaysVisible\n ? ReadoutVariant.regular\n : this.variant;\n const setpointMode = this.resolvedSetpointModeForInteraction();\n\n return html`\n <div\n class=${classMap({\n 'readout-segment-wrapper': true,\n 'readout-setpoint': true,\n 'setpoint-hiding':\n this.interactionMode === ReadoutSetpointInteraction.popUp &&\n this.deferredSetpointHidePhase === 'hiding',\n 'setpoint-hidden':\n this.interactionMode === ReadoutSetpointInteraction.popUp &&\n this.deferredSetpointHidePhase === 'hidden',\n 'setpoint-active':\n this.setpointInteractionEnabled &&\n this.interactionMode === ReadoutSetpointInteraction.popUp,\n })}\n part=\"setpoint-wrapper\"\n >\n <slot name=\"setpoint\">\n <obc-readout-setpoint\n .reserveSpaceForIcon=${this.alignment !==\n ReadoutStackVerticalAlignment.center}\n data-obc-value-typography=${this.variant ===\n ReadoutVariant.regular &&\n this.isVertical &&\n this.resolvedSetpointSegmentSize === ReadoutSetpointSize.medium\n ? 'medium'\n : nothing}\n ?data-obc-tabular-nums=${this.interactionMode ===\n ReadoutSetpointInteraction.flipFlop}\n .readoutStyle=${setpointReadoutStyle}\n .direction=${this.direction}\n .size=${this.resolvedSetpointSegmentSize}\n .format=${this.resolveSetpointFormat()}\n .mode=${setpointMode}\n .priority=${this.resolvedSetpointPriority}\n .hugContent=${this.shouldHugNestedSegments}\n .value=${this.setpointValue}\n .secondaryValue=${this.setpointSecondaryValue}\n .description=${this.setpointDescription}\n .minValueLength=${this.minValueLength}\n .hasHintedZeros=${this.setpointHasHintedZeros}\n .fractionDigits=${this.fractionDigits}\n .hasDegree=${this.hasDegree}\n >\n <slot name=\"setpoint-icon\" slot=\"icon\">\n <obi-input-right slot=\"icon\"></obi-input-right>\n </slot>\n </obc-readout-setpoint>\n </slot>\n </div>\n `;\n }\n\n private renderSetpointDivider() {\n if (!this.showSetpointDivider) {\n return nothing;\n }\n\n return html`<div class=\"setpoint-divider\" part=\"setpoint-divider\"></div>`;\n }\n\n private renderAdviceDivider() {\n if (!this.showAdviceDivider) {\n return nothing;\n }\n\n return html`<div class=\"advice-divider\" part=\"advice-divider\"></div>`;\n }\n\n private renderSourceDivider() {\n if (!this.showSourceDivider) {\n return nothing;\n }\n\n return html`<div class=\"source-divider\" part=\"source-divider\"></div>`;\n }\n\n private renderValueZone() {\n return html`\n <div\n class=${classMap({\n 'readout-segment-wrapper': true,\n 'readout-value-wrapper': true,\n 'value-active':\n this.setpointInteractionRendered &&\n (this.interactionMode ===\n ReadoutSetpointInteraction.alwaysVisible ||\n this.flipFlopValueFocused),\n })}\n part=\"value-wrapper\"\n >\n ${this.renderValueInput()}\n </div>\n `;\n }\n\n private renderSource() {\n if (!this.hasSrc) {\n return nothing;\n }\n\n return renderReadoutSource({\n hasSrc: this.hasSrc,\n hasSrcPicker:\n this.hasSrcPicker &&\n supportsReadoutSourcePicker(this.resolvedSourceType),\n src: this.src ?? '',\n sourceDeltaValue: this.sourceDeltaValue,\n sourceType: this.resolvedSourceType,\n readoutType: this.variant,\n readoutDirection: this.direction,\n sourceHug: this.sourceHug,\n hasSourceLeadingIcon: this.hasSourceLeadingIcon,\n hasSourceTrailingIcon: this.hasSourceTrailingIcon,\n fractionDigits: this.fractionDigits,\n onTogglePicker: () => {\n this.sourcePickerContentVisible = !this.sourcePickerContentVisible;\n },\n onFlyoutClick: () => {\n this.dispatchEvent(\n new CustomEvent('source-flyout-click', {\n bubbles: true,\n composed: true,\n detail: {\n src: this.src ?? '',\n sourceType: this.resolvedSourceType,\n },\n })\n );\n },\n });\n }\n\n private renderSourcePickerContent() {\n if (\n !(\n this.hasSrcPicker &&\n supportsReadoutSourcePicker(this.resolvedSourceType)\n ) ||\n !this.sourcePickerContentVisible\n ) {\n return nothing;\n }\n\n return html`\n <obc-context-menu-input\n .type=${ContextMenuType.Regular}\n .options=${this.sourcePickerOptions}\n .selectedValues=${this.src ? [this.src] : []}\n class=\"source-picker-content\"\n @item-click=${this.handleSourcePickerItemClick}\n @close=${() => {\n this.sourcePickerContentVisible = false;\n }}\n ></obc-context-menu-input>\n `;\n }\n\n private renderSourcePickerSlot() {\n return html`\n <slot\n name=\"src-picker-content\"\n hidden\n @slotchange=${this.syncSourcePickerOptions}\n ></slot>\n `;\n }\n\n private renderValueInput() {\n const elevateValueTypography =\n this.variant === ReadoutVariant.regular && this.isVertical;\n const valuePriority = this.resolvedValuePriority;\n const scopeValuePriority = valuePriority === Priority.enhanced;\n const valueReadoutStyle =\n (this.hasInteractiveSetpointContext &&\n this.interactionMode === ReadoutSetpointInteraction.flipFlop) ||\n (this.hasInteractiveSetpointContext &&\n this.isHorizontal &&\n this.interactionMode === ReadoutSetpointInteraction.popUp)\n ? ReadoutVariant.regular\n : this.variant;\n const valueMode = this.resolvedValueMode();\n\n return html`\n <obc-readout-setpoint\n .variant=${ReadoutSetpointVariant.value}\n .readoutStyle=${valueReadoutStyle}\n .direction=${this.direction}\n .size=${this.resolvedValueSetpointSize}\n .mode=${valueMode}\n .hugContent=${this.shouldHugNestedSegments}\n data-obc-value-typography=${elevateValueTypography ? 'medium' : nothing}\n ?data-obc-tabular-nums=${this.interactionMode ===\n ReadoutSetpointInteraction.flipFlop}\n ?data-obc-priority-scoped=${scopeValuePriority}\n .priority=${valuePriority}\n .value=${this.value}\n .showZeroPadding=${this.showZeroPadding}\n .minValueLength=${this.minValueLength}\n .fractionDigits=${this.fractionDigits}\n .hasHintedZeros=${this.valueHasHintedZeros}\n .hasDegree=${this.hasDegree}\n .off=${this.off}\n >\n ${this.hasLeadingIcon\n ? html`\n <slot name=\"leading-icon\" slot=\"icon\">\n <obi-placeholder slot=\"icon\"></obi-placeholder>\n </slot>\n `\n : nothing}\n ${this.querySelector('[slot=\"value\"]') !== null\n ? html`<slot name=\"value\" slot=\"value\"></slot>`\n : nothing}\n </obc-readout-setpoint>\n `;\n }\n\n private renderHorizontalValueUnitZone(hasUnit: boolean) {\n return html`\n <div\n class=\"readout-segment-wrapper readout-value-unit-wrapper\"\n part=\"value-unit-wrapper\"\n >\n ${this.renderValueInput()}\n ${hasUnit && this.unit ? renderReadoutUnitZone(this.unit) : nothing}\n </div>\n `;\n }\n\n private renderHorizontalLayout() {\n return html`\n <div\n class=\"readout-segment-wrapper readout-horizontal-layout\"\n part=\"horizontal-layout\"\n >\n ${this.variant === ReadoutVariant.regular && this.isHorizontal\n ? renderReadoutLabelZone(this.label)\n : nothing}\n ${this.isEnhanced &&\n this.isHorizontal &&\n this.shouldRenderReadoutMetaZone\n ? renderReadoutMetaZone({\n labelValue: this.label,\n unitValue: this.unit,\n })\n : nothing}\n <div\n class=\"readout-segment-wrapper readout-inline-value-wrapper\"\n part=\"inline-value-wrapper\"\n >\n ${this.hasAdvice ? this.renderAdvice() : nothing}\n ${this.hasAdvice ? this.renderAdviceDivider() : nothing}\n ${this.renderSetpoint()} ${this.renderSetpointDivider()}\n ${this.showUnitZone\n ? this.renderHorizontalValueUnitZone(true)\n : html`${this.renderValueInput()}`}\n ${this.isStack &&\n this.isHorizontal &&\n this.shouldRenderReadoutMetaZone\n ? renderReadoutMetaZone({\n labelValue: this.label,\n unitValue: this.unit,\n })\n : nothing}\n ${this.hasSrc ? this.renderSourceDivider() : nothing}\n ${this.hasSrc ? this.renderSource() : nothing}\n </div>\n </div>\n `;\n }\n\n override render() {\n return html`\n <div\n class=${classMap({\n readout: true,\n [this.variant]: true,\n [this.direction]: true,\n 'alignment-left': this.alignment === 'left',\n 'alignment-center': this.alignment === 'center',\n 'alignment-vertical': this.alignment === 'vertical',\n 'interaction-always-visible':\n this.interactionMode === ReadoutSetpointInteraction.alwaysVisible,\n 'interaction-flip-flop':\n this.setpointInteractionEnabled &&\n this.interactionMode === ReadoutSetpointInteraction.flipFlop,\n 'interaction-pop-up':\n this.setpointInteractionEnabled &&\n this.interactionMode === ReadoutSetpointInteraction.popUp,\n 'focus-setpoint':\n this.setpointInteractionEnabled && this.flipFlopSetpointFocused,\n 'focus-value':\n this.setpointInteractionEnabled && this.flipFlopValueFocused,\n 'alert-none': this.alertState === ReadoutAlertState.none,\n 'alert-low-integrity':\n this.alertState === ReadoutAlertState.lowIntegrity,\n 'alert-invalid': this.alertState === ReadoutAlertState.invalid,\n 'alert-caution': this.alertState === ReadoutAlertState.caution,\n 'alert-warning': this.alertState === ReadoutAlertState.warning,\n 'alert-alarm': this.alertState === ReadoutAlertState.alarm,\n 'has-source': this.hasSrc,\n 'has-setpoint': this.hasSetpoint,\n 'has-setpoint-button':\n this.isHorizontal &&\n this.setpointFormat === ReadoutSetpointFormat.button,\n 'no-hug': !this.hug,\n 'label-only': this.labelOnly,\n })}\n >\n ${!this.labelOnly && this.isVertical ? this.renderAdvice() : nothing}\n ${!this.labelOnly && this.isVertical ? this.renderSetpoint() : nothing}\n ${!this.labelOnly && this.isVertical ? this.renderValueZone() : nothing}\n ${(this.labelOnly || this.isVertical) &&\n this.shouldRenderReadoutMetaZone\n ? renderReadoutMetaZone({\n labelValue: this.label,\n unitValue: this.unit,\n })\n : nothing}\n ${!this.labelOnly && this.hasSrc && this.isVertical\n ? this.renderSource()\n : nothing}\n ${!this.labelOnly && this.isHorizontal\n ? this.renderHorizontalLayout()\n : nothing}\n ${this.renderSourcePickerSlot()}\n </div>\n ${this.renderSourcePickerContent()}\n `;\n }\n\n static override styles = unsafeCSS(componentStyle);\n\n override disconnectedCallback() {\n window.removeEventListener('pointerdown', this.onWindowPointerDown, true);\n window.clearTimeout(this.deferredSetpointHideTimer);\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-readout': ObcReadout;\n }\n}\n"],"names":["ReadoutVariant","ReadoutAlertState","ReadoutSetpointInteraction","ReadoutDirection","ReadoutStackVerticalAlignment"],"mappings":"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"}
1
+ {"version":3,"file":"readout.js","sources":["../../../src/navigation-instruments/readout/readout.ts"],"sourcesContent":["import {LitElement, html, nothing, unsafeCSS} from 'lit';\nimport {property, query, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport componentStyle from './readout.css?inline';\nimport {customElement} from '../../decorator.js';\nimport '../../components/context-menu-input/context-menu-input.js';\nimport {\n ContextMenuType,\n type ContextMenuOption,\n type ObcContextMenuInputItemClickEvent,\n} from '../../components/context-menu-input/context-menu-input.js';\nimport {Priority} from '../types.js';\nimport '../../icons/icon-input-right.js';\nimport '../../icons/icon-placeholder.js';\nimport {\n ReadoutAdviceState,\n ReadoutAdviceFormat,\n} from '../readout-advice/readout-advice.js';\nimport '../readout-advice/readout-advice.js';\nimport {\n renderReadoutLabelZone,\n renderReadoutMetaZone,\n renderReadoutUnitZone,\n} from './readout-meta.js';\nimport {\n ReadoutSourceType,\n renderReadoutSource,\n supportsReadoutSourcePicker,\n} from './readout-source.js';\nimport {\n ReadoutSetpointMode,\n ReadoutSetpointFormat,\n ReadoutSetpointVariant,\n ReadoutSetpointSize,\n} from '../readout-setpoint/readout-setpoint.js';\nimport '../readout-setpoint/readout-setpoint.js';\nimport {\n type AlertFrameConfig,\n wrapWithAlertFrame,\n} from '../../components/alert-frame/alert-frame.js';\n\nexport enum ReadoutVariant {\n regular = 'regular',\n enhanced = 'enhanced',\n stack = 'stack',\n}\n\nexport enum ReadoutDataState {\n none = 'none',\n lowIntegrity = 'low-integrity',\n invalid = 'invalid',\n}\n\nexport enum ReadoutSetpointInteraction {\n alwaysVisible = 'always-visible',\n flipFlop = 'flip-flop',\n popUp = 'pop-up',\n}\n\nexport enum ReadoutDirection {\n vertical = 'vertical',\n horizontal = 'horizontal',\n}\n\nexport enum ReadoutStackVerticalAlignment {\n left = 'left',\n center = 'center',\n vertical = 'vertical',\n}\n\nexport {ReadoutSourceType};\n\n/**\n * `<obc-readout>` – A component for displaying navigation instrument data.\n *\n * This component is used to show a primary value, optional advice and setpoint segments, units, a label, and a source (e.g., GPS, Gyro).\n * It supports different readout styles, horizontal/vertical layouts, and configurable numeric formatting.\n *\n * ### Features\n * - **Readout Styles:** Supports `regular`, `enhanced`, and `stack` presentations.\n * - **Segments:** Optional advice, setpoint, and leading icon display in addition to the main value.\n * - **Source:** Optional source display with `small`, `regular`, `delta`, and `flyout` variants.\n * - **Source Picker:** Optional source selection with a dropdown and context menu.\n * - **Formatting:** Customizable integer and fraction digits, dashed fallback values, and optional zero padding.\n * - **Layouts:** Can be oriented horizontally or vertically, with optional dividers and segment spacing controls.\n *\n * ### Slots\n * | Slot Name | Purpose |\n * |---------------------|----------------------------------------------------------------------------|\n * | advice | Replaces the fallback advice segment when `hasAdvice` is true. |\n * | advice-icon | Replaces the fallback advice icon when `hasAdvice` is true. |\n * | setpoint | Replaces the fallback setpoint segment when `hasSetpoint` is true. |\n * | setpoint-icon | Replaces the fallback setpoint icon when `hasSetpoint` is true. |\n * | leading-icon | Replaces the fallback leading icon beside the main value. |\n * | value | Replaces the formatted main value content. |\n * | label | Replaces the label content. |\n * | unit | Replaces the unit content. |\n * | source | Replaces the source row content. |\n * | src-picker-content | Content for the source picker context menu (e.g., a list of sources). |\n *\n * @fires source-flyout-click {CustomEvent<{src: string, sourceType?: ReadoutSourceType}>} Fired when the source row is clicked while `sourceType=\"flyout\"`.\n * @fires source-change {CustomEvent<{value: string, label?: string}>} Fired when a source picker option is selected.\n *\n * @slot advice - Replaces the fallback advice segment.\n * @slot advice-icon - Replaces the fallback advice icon.\n * @slot setpoint - Replaces the fallback setpoint segment.\n * @slot setpoint-icon - Replaces the fallback setpoint icon.\n * @slot leading-icon - Replaces the fallback leading icon beside the value.\n * @slot value - Replaces the formatted main value content.\n * @slot label - Replaces the label content.\n * @slot unit - Replaces the unit content.\n * @slot source - Replaces the source row content.\n * @slot src-picker-content - Provides the source picker context menu content.\n */\n@customElement('obc-readout')\nexport class ObcReadout extends LitElement {\n @property({type: Number}) value?: number;\n @property({type: Boolean}) hasSetpoint = false;\n @property({type: Number}) setpointValue?: number;\n @property({type: String}) variant: ReadoutVariant = ReadoutVariant.regular;\n @property({type: Boolean}) hasDegree = false;\n @property({type: String}) label = '';\n @property({type: String}) unit?: string;\n @property({type: String}) src?: string;\n @property({type: Boolean}) off = false;\n @property({type: String}) valuePriority?: Priority;\n @property({type: String}) dataState: ReadoutDataState = ReadoutDataState.none;\n @property({type: String}) setpointInteraction: ReadoutSetpointInteraction =\n ReadoutSetpointInteraction.alwaysVisible;\n @property({type: String}) direction: ReadoutDirection =\n ReadoutDirection.vertical;\n\n /**\n * Override the size of the setpoint segment (when `hasSetpoint` is true).\n *\n * - In `alwaysVisible` and `popUp` interaction modes: any size value applies.\n * - In `flipFlop` mode: the override is honored only when strictly smaller\n * than the variant's base size (medium for `regular`, large for\n * `enhanced`/`stack`). Larger overrides are ignored, falling back to the\n * default secondary size to preserve the flip-flop visual effect and\n * prevent setpoint/value overlap.\n *\n * When unset, the setpoint size is derived from `variant` (and adjusted for\n * multi-line formats).\n */\n @property({type: String}) setpointSize?: ReadoutSetpointSize;\n @property({type: String})\n alignment: ReadoutStackVerticalAlignment =\n ReadoutStackVerticalAlignment.vertical;\n @property({type: Boolean}) hug = false;\n @property({type: Boolean}) hasSetpointDivider = false;\n @property({type: Boolean}) hasSourceDivider = false;\n @property({type: Boolean}) showZeroPadding = false;\n @property({type: Number}) fractionDigits = 0;\n @property({type: Number}) minValueLength = 0;\n @property({type: Boolean}) valueHasHintedZeros = false;\n\n @property({type: Boolean}) labelOnly = false;\n @property({type: Boolean}) hasSrcPicker = false;\n @property({type: Number}) sourceDeltaValue = 0;\n @property({type: String}) sourceType?: ReadoutSourceType;\n @property({type: Boolean}) hasLeadingIcon = false;\n\n @property({type: Object}) alert: AlertFrameConfig | boolean = false;\n\n @property({type: Boolean, attribute: false}) sourceHug = true;\n @property({type: Boolean}) hasSourceLeadingIcon = false;\n @property({type: Boolean, attribute: false}) hasSourceTrailingIcon = true;\n @property({type: Boolean}) hasAdvice = false;\n @property({type: Number}) adviceValue?: number;\n @property({type: String}) adviceFormat: ReadoutAdviceFormat =\n ReadoutAdviceFormat.regular;\n @property({type: String}) adviceState: ReadoutAdviceState =\n ReadoutAdviceState.enabled;\n @property({type: Number}) adviceSecondaryValue: number | undefined =\n undefined;\n @property({type: String}) adviceDescription = '';\n @property({type: Boolean}) adviceHasHintedZeros = false;\n @property({type: String}) setpointFormat: ReadoutSetpointFormat =\n ReadoutSetpointFormat.regular;\n @property({type: Number}) setpointSecondaryValue: number | undefined =\n undefined;\n @property({type: String}) setpointDescription = '';\n @property({type: Boolean}) setpointHasHintedZeros = false;\n\n @state()\n private deferredSetpointHidePhase: 'none' | 'hiding' | 'hidden' = 'none';\n @state() private sourcePickerContentVisible = false;\n @state() private sourcePickerOptions: ContextMenuOption[] = [];\n\n @query('slot[name=\"src-picker-content\"]')\n private sourcePickerSlot?: HTMLSlotElement;\n\n private readonly onWindowPointerDown = (event: PointerEvent) => {\n if (!this.sourcePickerContentVisible) {\n return;\n }\n\n const path = event.composedPath();\n if (path.includes(this)) {\n return;\n }\n\n this.sourcePickerContentVisible = false;\n };\n\n private deferredSetpointHideTimer: number | undefined;\n\n private hasCompletedFirstUpdate = false;\n\n private get isHorizontal() {\n return this.direction === ReadoutDirection.horizontal;\n }\n\n private get isVertical() {\n return this.direction === ReadoutDirection.vertical;\n }\n\n private get isEnhanced() {\n return this.variant === ReadoutVariant.enhanced;\n }\n\n private get isStack() {\n return this.variant === ReadoutVariant.stack;\n }\n\n private get hasSrc() {\n return this.src !== undefined && this.src.trim() !== '';\n }\n\n private get showAdviceDivider() {\n return this.isHorizontal && this.hasAdvice && this.hasSetpoint;\n }\n\n private get showSetpointDivider() {\n return (\n this.hasSetpointDivider &&\n this.hasSetpoint &&\n (this.setpointRendered || this.setpointLayoutReserved)\n );\n }\n\n private get showSourceDivider() {\n return this.hasSourceDivider && this.hasSrc;\n }\n\n private get showUnitZone() {\n return this.variant === ReadoutVariant.regular && this.isHorizontal;\n }\n\n private get shouldRenderReadoutMetaZone(): boolean {\n return Boolean(this.label || this.unit || this.labelOnly);\n }\n\n private resolvedValueMode(): ReadoutSetpointMode | undefined {\n if (!this.setpointInteractionRendered) {\n return undefined;\n }\n\n if (!this.isHorizontal) {\n return undefined;\n }\n\n if (this.interactionMode === ReadoutSetpointInteraction.alwaysVisible) {\n return ReadoutSetpointMode.setpoint;\n }\n\n if (this.interactionMode === ReadoutSetpointInteraction.popUp) {\n return undefined;\n }\n\n return undefined;\n }\n\n private resolvedSetpointModeForInteraction():\n | ReadoutSetpointMode\n | undefined {\n if (this.isHorizontal) {\n if (this.interactionMode === ReadoutSetpointInteraction.alwaysVisible) {\n return undefined;\n }\n\n if (this.interactionMode === ReadoutSetpointInteraction.popUp) {\n return ReadoutSetpointMode.setpoint;\n }\n }\n\n return undefined;\n }\n\n private resolveSetpointFormat(): ReadoutSetpointFormat | undefined {\n return this.setpointFormat;\n }\n\n private get interactionMode(): ReadoutSetpointInteraction {\n return this.setpointInteraction;\n }\n\n private get isSetpointReached(): boolean {\n return this.value === this.setpointValue;\n }\n\n private get flipFlopValueFocused(): boolean {\n return (\n this.interactionMode === ReadoutSetpointInteraction.flipFlop &&\n this.isSetpointReached\n );\n }\n\n private get flipFlopSetpointFocused(): boolean {\n return (\n this.interactionMode === ReadoutSetpointInteraction.flipFlop &&\n !this.isSetpointReached\n );\n }\n\n private get shouldHideSetpointForInteraction(): boolean {\n if (!this.setpointInteractionEnabled) {\n return false;\n }\n\n if (this.interactionMode === ReadoutSetpointInteraction.alwaysVisible) {\n return false;\n }\n\n if (this.interactionMode === ReadoutSetpointInteraction.popUp) {\n return (\n this.isSetpointReached && this.deferredSetpointHidePhase === 'hidden'\n );\n }\n\n return false;\n }\n\n private resolvedSetpointVisible(): boolean {\n if (!this.hasSetpoint) {\n return false;\n }\n\n return true;\n }\n\n private get setpointInteractionEnabled(): boolean {\n return this.resolvedSetpointVisible();\n }\n\n private get setpointRendered(): boolean {\n return (\n this.resolvedSetpointVisible() && !this.shouldHideSetpointForInteraction\n );\n }\n\n private get setpointInteractionRendered(): boolean {\n return this.setpointInteractionEnabled && this.setpointRendered;\n }\n\n private get setpointLayoutReserved(): boolean {\n if (\n !this.setpointInteractionEnabled ||\n this.interactionMode !== ReadoutSetpointInteraction.popUp\n ) {\n return false;\n }\n\n if (this.isHorizontal && this.deferredSetpointHidePhase === 'hidden') {\n return false;\n }\n\n return true;\n }\n\n private get hasInteractiveSetpointContext(): boolean {\n if (this.interactionMode === ReadoutSetpointInteraction.flipFlop) {\n return this.hasSetpoint;\n }\n\n if (this.setpointInteractionRendered || this.setpointLayoutReserved) {\n return true;\n }\n\n return (\n this.setpointInteractionEnabled &&\n this.isHorizontal &&\n this.interactionMode === ReadoutSetpointInteraction.popUp &&\n this.deferredSetpointHidePhase === 'hidden'\n );\n }\n\n private get resolvedSetpointPriority(): Priority {\n return this.resolvedValuePriority ?? Priority.regular;\n }\n\n private get baseSize(): ReadoutSetpointSize {\n return this.variant === ReadoutVariant.regular\n ? ReadoutSetpointSize.medium\n : ReadoutSetpointSize.large;\n }\n\n private stepDownSize(size: ReadoutSetpointSize): ReadoutSetpointSize {\n switch (size) {\n case ReadoutSetpointSize.large:\n return ReadoutSetpointSize.medium;\n case ReadoutSetpointSize.medium:\n return ReadoutSetpointSize.regular;\n case ReadoutSetpointSize.regular:\n return ReadoutSetpointSize.small;\n default:\n return ReadoutSetpointSize.small;\n }\n }\n\n private static readonly READOUT_SETPOINT_SIZE_ORDER: ReadoutSetpointSize[] = [\n ReadoutSetpointSize.small,\n ReadoutSetpointSize.regular,\n ReadoutSetpointSize.medium,\n ReadoutSetpointSize.large,\n ];\n\n private sizeRank(size: ReadoutSetpointSize): number {\n return ObcReadout.READOUT_SETPOINT_SIZE_ORDER.indexOf(size);\n }\n\n private get isMultiLineSetpointFormat(): boolean {\n return (\n this.setpointFormat === ReadoutSetpointFormat.description ||\n this.setpointFormat === ReadoutSetpointFormat.range\n );\n }\n\n private get resolvedSetpointSegmentSize(): ReadoutSetpointSize {\n if (this.interactionMode === ReadoutSetpointInteraction.flipFlop) {\n if (this.flipFlopSetpointFocused) {\n return this.baseSize;\n }\n\n const secondarySize =\n this.variant === ReadoutVariant.regular\n ? ReadoutSetpointSize.small\n : this.stepDownSize(this.baseSize);\n\n if (\n this.setpointSize &&\n this.sizeRank(this.setpointSize) < this.sizeRank(this.baseSize)\n ) {\n return this.setpointSize;\n }\n\n return secondarySize;\n }\n\n if (this.setpointSize) {\n return this.setpointSize;\n }\n\n if (\n this.isMultiLineSetpointFormat &&\n this.variant !== ReadoutVariant.regular\n ) {\n return this.stepDownSize(this.baseSize);\n }\n\n return this.baseSize;\n }\n\n private get resolvedValueSetpointSize(): ReadoutSetpointSize {\n if (this.interactionMode === ReadoutSetpointInteraction.flipFlop) {\n const secondarySize =\n this.variant === ReadoutVariant.regular\n ? ReadoutSetpointSize.small\n : this.stepDownSize(this.baseSize);\n return this.flipFlopValueFocused ? this.baseSize : secondarySize;\n }\n\n return this.baseSize;\n }\n\n private get resolvedValuePriority(): Priority | undefined {\n if (this.valuePriority) {\n return this.valuePriority;\n }\n\n if (!this.hasInteractiveSetpointContext) {\n return this.variant === ReadoutVariant.enhanced\n ? Priority.enhanced\n : undefined;\n }\n\n if (this.interactionMode === ReadoutSetpointInteraction.alwaysVisible) {\n return Priority.enhanced;\n }\n\n if (this.interactionMode === ReadoutSetpointInteraction.flipFlop) {\n return Priority.enhanced;\n }\n\n if (this.interactionMode === ReadoutSetpointInteraction.popUp) {\n return Priority.enhanced;\n }\n\n if (this.variant === ReadoutVariant.enhanced) {\n return Priority.enhanced;\n }\n\n return undefined;\n }\n\n /**\n * Segment size mapping for nested setpoint/advice segments.\n *\n * Mapping table (variant × direction):\n * - regular × vertical → regular\n * - regular × horizontal → regular\n * - enhanced × vertical → medium\n * - enhanced × horizontal→ medium\n * - stack × vertical → medium\n * - stack × horizontal → medium\n *\n * Rationale:\n * - Container must not rely on segment defaults (which are `small`).\n * - `regular` presentation uses regular-sized segments.\n * - `enhanced/stack` presentations use a larger segment baseline.\n */\n private get resolvedSegmentSize(): ReadoutSetpointSize {\n return this.variant === ReadoutVariant.regular\n ? ReadoutSetpointSize.regular\n : ReadoutSetpointSize.medium;\n }\n\n /**\n * Container-level layout decision for nested setpoint/advice segments.\n *\n * - **Enhanced**: nested segments use full-width layout (`hugContent` off)\n * regardless of readout `hug` (icon at the left edge, value at the right).\n * - **Regular / stack**: nested segments follow readout `hug` — compact when\n * `hug` is true, stretched when `hug` is false.\n */\n private get shouldHugNestedSegments(): boolean {\n if (this.variant === ReadoutVariant.enhanced) {\n return false;\n }\n\n return this.hug;\n }\n\n private get resolvedSourceType(): ReadoutSourceType {\n if (this.sourceType) {\n return this.sourceType;\n }\n\n return this.variant === ReadoutVariant.regular ||\n ((this.variant === ReadoutVariant.enhanced ||\n this.variant === ReadoutVariant.stack) &&\n this.isVertical)\n ? ReadoutSourceType.small\n : ReadoutSourceType.regular;\n }\n\n private getSourcePickerNavigationItems() {\n const assignedElements =\n this.sourcePickerSlot?.assignedElements({flatten: true}) ?? [];\n\n return assignedElements.flatMap((element) => {\n if (!(element instanceof HTMLElement)) {\n return [];\n }\n\n if (element.localName === 'obc-navigation-item') {\n return [element];\n }\n\n return Array.from(element.querySelectorAll('obc-navigation-item'));\n });\n }\n\n private createSourcePickerOptionIcon(element: HTMLElement) {\n const iconElement = element.querySelector('[slot=\"icon\"]');\n\n if (!(iconElement instanceof HTMLElement)) {\n return undefined;\n }\n\n return html`${iconElement.cloneNode(true)}`;\n }\n\n private getSourcePickerItemInfo(item: HTMLElement, index: number) {\n const itemWithValues = item as HTMLElement & {\n label?: string;\n value?: string;\n };\n const itemLabel = itemWithValues.label || item.getAttribute('label') || '';\n const itemValue =\n item.getAttribute('data-value') ||\n itemWithValues.value ||\n item.getAttribute('value') ||\n itemLabel ||\n `source-option-${index}`;\n\n return {itemLabel, itemValue};\n }\n\n private findSourcePickerOptionElement(value: string) {\n const navigationItems = this.getSourcePickerNavigationItems();\n for (const [index, item] of navigationItems.entries()) {\n const {itemValue} = this.getSourcePickerItemInfo(item, index);\n if (itemValue === value) {\n return item;\n }\n }\n return undefined;\n }\n\n private syncSourcePickerOptions() {\n const navigationItems = this.getSourcePickerNavigationItems();\n\n this.sourcePickerOptions = navigationItems.map((item, index) => {\n const {itemLabel, itemValue} = this.getSourcePickerItemInfo(item, index);\n\n return {\n value: itemValue,\n label: itemLabel,\n icon: this.createSourcePickerOptionIcon(item),\n };\n });\n }\n\n private handleSourcePickerItemClick(\n event: ObcContextMenuInputItemClickEvent\n ) {\n this.dispatchEvent(\n new CustomEvent('source-change', {\n bubbles: true,\n composed: true,\n detail: {\n value: event.detail.value,\n label: event.detail.option?.label,\n },\n })\n );\n this.findSourcePickerOptionElement(event.detail.value)?.click();\n this.sourcePickerContentVisible = false;\n }\n\n override updated(changedProperties: Map<string, unknown>) {\n super.updated(changedProperties);\n\n if (changedProperties.has('sourcePickerContentVisible')) {\n // TODO: Implement this in html instead.\n if (this.sourcePickerContentVisible) {\n window.addEventListener('pointerdown', this.onWindowPointerDown, true);\n } else {\n window.removeEventListener(\n 'pointerdown',\n this.onWindowPointerDown,\n true\n );\n }\n }\n\n if (\n !(\n changedProperties.has('value') ||\n changedProperties.has('setpointValue') ||\n changedProperties.has('hasSetpoint') ||\n changedProperties.has('setpointInteraction')\n )\n ) {\n return;\n }\n\n if (this.interactionMode !== ReadoutSetpointInteraction.popUp) {\n this.deferredSetpointHidePhase = 'none';\n window.clearTimeout(this.deferredSetpointHideTimer);\n this.deferredSetpointHideTimer = undefined;\n return;\n }\n\n const shouldHideSetpoint = this.hasSetpoint && this.isSetpointReached;\n\n if (!this.hasCompletedFirstUpdate) {\n this.deferredSetpointHidePhase = shouldHideSetpoint ? 'hidden' : 'none';\n return;\n }\n\n if (!shouldHideSetpoint) {\n this.deferredSetpointHidePhase = 'none';\n window.clearTimeout(this.deferredSetpointHideTimer);\n this.deferredSetpointHideTimer = undefined;\n return;\n }\n\n if (this.deferredSetpointHidePhase !== 'none') {\n return;\n }\n\n this.deferredSetpointHidePhase = 'hiding';\n window.clearTimeout(this.deferredSetpointHideTimer);\n this.deferredSetpointHideTimer = window.setTimeout(() => {\n this.deferredSetpointHidePhase = 'hidden';\n this.deferredSetpointHideTimer = undefined;\n }, 160);\n }\n\n override firstUpdated() {\n this.hasCompletedFirstUpdate = true;\n }\n\n private renderAdvice() {\n if (!this.hasAdvice) {\n return nothing;\n }\n\n const adviceSegmentSize =\n this.variant === ReadoutVariant.regular && this.isHorizontal\n ? this.resolvedSetpointSegmentSize\n : this.resolvedSegmentSize;\n\n return html`\n <div class=\"readout-segment-wrapper readout-advice\" part=\"advice-wrapper\">\n <slot name=\"advice\">\n <obc-readout-advice\n data-obc-value-typography=${this.variant ===\n ReadoutVariant.regular && this.isVertical\n ? 'medium'\n : nothing}\n .readoutStyle=${this.variant}\n .direction=${this.direction}\n .size=${adviceSegmentSize}\n .hugContent=${this.shouldHugNestedSegments}\n .priority=${this.resolvedValuePriority}\n .format=${this.adviceFormat}\n .state=${this.adviceState}\n .value=${this.adviceValue}\n .secondaryValue=${this.adviceSecondaryValue}\n .description=${this.adviceDescription}\n .minValueLength=${this.minValueLength}\n .hasHintedZeros=${this.adviceHasHintedZeros}\n .fractionDigits=${this.fractionDigits}\n .hasDegree=${this.hasDegree}\n >\n <slot name=\"advice-icon\" slot=\"icon\">\n <obi-placeholder slot=\"icon\"></obi-placeholder>\n </slot>\n </obc-readout-advice>\n </slot>\n </div>\n `;\n }\n\n private renderSetpoint() {\n if (!this.hasSetpoint) {\n return nothing;\n }\n\n if (!this.setpointRendered && !this.setpointLayoutReserved) {\n return nothing;\n }\n\n const setpointReadoutStyle =\n this.isHorizontal &&\n this.interactionMode === ReadoutSetpointInteraction.alwaysVisible\n ? ReadoutVariant.regular\n : this.variant;\n const setpointMode = this.resolvedSetpointModeForInteraction();\n\n return html`\n <div\n class=${classMap({\n 'readout-segment-wrapper': true,\n 'readout-setpoint': true,\n 'setpoint-hiding':\n this.interactionMode === ReadoutSetpointInteraction.popUp &&\n this.deferredSetpointHidePhase === 'hiding',\n 'setpoint-hidden':\n this.interactionMode === ReadoutSetpointInteraction.popUp &&\n this.deferredSetpointHidePhase === 'hidden',\n 'setpoint-active':\n this.setpointInteractionEnabled &&\n this.interactionMode === ReadoutSetpointInteraction.popUp,\n })}\n part=\"setpoint-wrapper\"\n >\n <slot name=\"setpoint\">\n <obc-readout-setpoint\n .reserveSpaceForIcon=${this.alignment !==\n ReadoutStackVerticalAlignment.center}\n data-obc-value-typography=${this.variant ===\n ReadoutVariant.regular &&\n this.isVertical &&\n this.resolvedSetpointSegmentSize === ReadoutSetpointSize.medium\n ? 'medium'\n : nothing}\n ?data-obc-tabular-nums=${this.interactionMode ===\n ReadoutSetpointInteraction.flipFlop}\n .readoutStyle=${setpointReadoutStyle}\n .direction=${this.direction}\n .size=${this.resolvedSetpointSegmentSize}\n .format=${this.resolveSetpointFormat()}\n .mode=${setpointMode}\n .priority=${this.resolvedSetpointPriority}\n .hugContent=${this.shouldHugNestedSegments}\n .value=${this.setpointValue}\n .secondaryValue=${this.setpointSecondaryValue}\n .description=${this.setpointDescription}\n .minValueLength=${this.minValueLength}\n .hasHintedZeros=${this.setpointHasHintedZeros}\n .fractionDigits=${this.fractionDigits}\n .hasDegree=${this.hasDegree}\n >\n <slot name=\"setpoint-icon\" slot=\"icon\">\n <obi-input-right slot=\"icon\"></obi-input-right>\n </slot>\n </obc-readout-setpoint>\n </slot>\n </div>\n `;\n }\n\n private renderSetpointDivider() {\n if (!this.showSetpointDivider) {\n return nothing;\n }\n\n return html`<div class=\"setpoint-divider\" part=\"setpoint-divider\"></div>`;\n }\n\n private renderAdviceDivider() {\n if (!this.showAdviceDivider) {\n return nothing;\n }\n\n return html`<div class=\"advice-divider\" part=\"advice-divider\"></div>`;\n }\n\n private renderSourceDivider() {\n if (!this.showSourceDivider) {\n return nothing;\n }\n\n return html`<div class=\"source-divider\" part=\"source-divider\"></div>`;\n }\n\n private renderValueZone() {\n return html`\n <div\n class=${classMap({\n 'readout-segment-wrapper': true,\n 'readout-value-wrapper': true,\n 'value-active':\n this.setpointInteractionRendered &&\n (this.interactionMode ===\n ReadoutSetpointInteraction.alwaysVisible ||\n this.flipFlopValueFocused),\n })}\n part=\"value-wrapper\"\n >\n ${this.renderValueInput()}\n </div>\n `;\n }\n\n private renderSource() {\n if (!this.hasSrc) {\n return nothing;\n }\n\n return renderReadoutSource({\n hasSrc: this.hasSrc,\n hasSrcPicker:\n this.hasSrcPicker &&\n supportsReadoutSourcePicker(this.resolvedSourceType),\n src: this.src ?? '',\n sourceDeltaValue: this.sourceDeltaValue,\n sourceType: this.resolvedSourceType,\n readoutType: this.variant,\n readoutDirection: this.direction,\n sourceHug: this.sourceHug,\n hasSourceLeadingIcon: this.hasSourceLeadingIcon,\n hasSourceTrailingIcon: this.hasSourceTrailingIcon,\n fractionDigits: this.fractionDigits,\n onTogglePicker: () => {\n this.sourcePickerContentVisible = !this.sourcePickerContentVisible;\n },\n onFlyoutClick: () => {\n this.dispatchEvent(\n new CustomEvent('source-flyout-click', {\n bubbles: true,\n composed: true,\n detail: {\n src: this.src ?? '',\n sourceType: this.resolvedSourceType,\n },\n })\n );\n },\n });\n }\n\n private renderSourcePickerContent() {\n if (\n !(\n this.hasSrcPicker &&\n supportsReadoutSourcePicker(this.resolvedSourceType)\n ) ||\n !this.sourcePickerContentVisible\n ) {\n return nothing;\n }\n\n return html`\n <obc-context-menu-input\n .type=${ContextMenuType.Regular}\n .options=${this.sourcePickerOptions}\n .selectedValues=${this.src ? [this.src] : []}\n class=\"source-picker-content\"\n @item-click=${this.handleSourcePickerItemClick}\n @close=${() => {\n this.sourcePickerContentVisible = false;\n }}\n ></obc-context-menu-input>\n `;\n }\n\n private renderSourcePickerSlot() {\n return html`\n <slot\n name=\"src-picker-content\"\n hidden\n @slotchange=${this.syncSourcePickerOptions}\n ></slot>\n `;\n }\n\n private renderValueInput() {\n const elevateValueTypography =\n this.variant === ReadoutVariant.regular && this.isVertical;\n const valuePriority = this.resolvedValuePriority;\n const scopeValuePriority = valuePriority === Priority.enhanced;\n const valueReadoutStyle =\n (this.hasInteractiveSetpointContext &&\n this.interactionMode === ReadoutSetpointInteraction.flipFlop) ||\n (this.hasInteractiveSetpointContext &&\n this.isHorizontal &&\n this.interactionMode === ReadoutSetpointInteraction.popUp)\n ? ReadoutVariant.regular\n : this.variant;\n const valueMode = this.resolvedValueMode();\n\n return html`\n <obc-readout-setpoint\n .variant=${ReadoutSetpointVariant.value}\n .readoutStyle=${valueReadoutStyle}\n .direction=${this.direction}\n .size=${this.resolvedValueSetpointSize}\n .mode=${valueMode}\n .hugContent=${this.shouldHugNestedSegments}\n data-obc-value-typography=${elevateValueTypography ? 'medium' : nothing}\n ?data-obc-tabular-nums=${this.interactionMode ===\n ReadoutSetpointInteraction.flipFlop}\n ?data-obc-priority-scoped=${scopeValuePriority}\n .priority=${valuePriority}\n .value=${this.value}\n .showZeroPadding=${this.showZeroPadding}\n .minValueLength=${this.minValueLength}\n .fractionDigits=${this.fractionDigits}\n .hasHintedZeros=${this.valueHasHintedZeros}\n .hasDegree=${this.hasDegree}\n .off=${this.off}\n >\n ${this.hasLeadingIcon\n ? html`\n <slot name=\"leading-icon\" slot=\"icon\">\n <obi-placeholder slot=\"icon\"></obi-placeholder>\n </slot>\n `\n : nothing}\n ${this.querySelector('[slot=\"value\"]') !== null\n ? html`<slot name=\"value\" slot=\"value\"></slot>`\n : nothing}\n </obc-readout-setpoint>\n `;\n }\n\n private renderHorizontalValueUnitZone(hasUnit: boolean) {\n return html`\n <div\n class=\"readout-segment-wrapper readout-value-unit-wrapper\"\n part=\"value-unit-wrapper\"\n >\n ${this.renderValueInput()}\n ${hasUnit && this.unit ? renderReadoutUnitZone(this.unit) : nothing}\n </div>\n `;\n }\n\n private renderHorizontalLayout() {\n return html`\n <div\n class=\"readout-segment-wrapper readout-horizontal-layout\"\n part=\"horizontal-layout\"\n >\n ${this.variant === ReadoutVariant.regular && this.isHorizontal\n ? renderReadoutLabelZone(this.label)\n : nothing}\n ${this.isEnhanced &&\n this.isHorizontal &&\n this.shouldRenderReadoutMetaZone\n ? renderReadoutMetaZone({\n labelValue: this.label,\n unitValue: this.unit,\n })\n : nothing}\n <div\n class=\"readout-segment-wrapper readout-inline-value-wrapper\"\n part=\"inline-value-wrapper\"\n >\n ${this.hasAdvice ? this.renderAdvice() : nothing}\n ${this.hasAdvice ? this.renderAdviceDivider() : nothing}\n ${this.renderSetpoint()} ${this.renderSetpointDivider()}\n ${this.showUnitZone\n ? this.renderHorizontalValueUnitZone(true)\n : html`${this.renderValueInput()}`}\n ${this.isStack &&\n this.isHorizontal &&\n this.shouldRenderReadoutMetaZone\n ? renderReadoutMetaZone({\n labelValue: this.label,\n unitValue: this.unit,\n })\n : nothing}\n ${this.hasSrc ? this.renderSourceDivider() : nothing}\n ${this.hasSrc ? this.renderSource() : nothing}\n </div>\n </div>\n `;\n }\n\n override render() {\n return wrapWithAlertFrame(\n this.alert,\n html`\n <div\n class=${classMap({\n readout: true,\n [this.variant]: true,\n [this.direction]: true,\n 'alignment-left': this.alignment === 'left',\n 'alignment-center': this.alignment === 'center',\n 'alignment-vertical': this.alignment === 'vertical',\n 'interaction-always-visible':\n this.interactionMode === ReadoutSetpointInteraction.alwaysVisible,\n 'interaction-flip-flop':\n this.setpointInteractionEnabled &&\n this.interactionMode === ReadoutSetpointInteraction.flipFlop,\n 'interaction-pop-up':\n this.setpointInteractionEnabled &&\n this.interactionMode === ReadoutSetpointInteraction.popUp,\n 'focus-setpoint':\n this.setpointInteractionEnabled && this.flipFlopSetpointFocused,\n 'focus-value':\n this.setpointInteractionEnabled && this.flipFlopValueFocused,\n 'data-none': this.dataState === ReadoutDataState.none,\n 'data-low-integrity':\n this.dataState === ReadoutDataState.lowIntegrity,\n 'data-invalid': this.dataState === ReadoutDataState.invalid,\n 'has-source': this.hasSrc,\n 'has-setpoint': this.hasSetpoint,\n 'has-setpoint-button':\n this.isHorizontal &&\n this.setpointFormat === ReadoutSetpointFormat.button,\n 'no-hug': !this.hug,\n 'label-only': this.labelOnly,\n })}\n >\n ${!this.labelOnly && this.isVertical ? this.renderAdvice() : nothing}\n ${!this.labelOnly && this.isVertical\n ? this.renderSetpoint()\n : nothing}\n ${!this.labelOnly && this.isVertical\n ? this.renderValueZone()\n : nothing}\n ${(this.labelOnly || this.isVertical) &&\n this.shouldRenderReadoutMetaZone\n ? renderReadoutMetaZone({\n labelValue: this.label,\n unitValue: this.unit,\n })\n : nothing}\n ${!this.labelOnly && this.hasSrc && this.isVertical\n ? this.renderSource()\n : nothing}\n ${!this.labelOnly && this.isHorizontal\n ? this.renderHorizontalLayout()\n : nothing}\n ${this.renderSourcePickerSlot()}\n </div>\n ${this.renderSourcePickerContent()}\n `\n );\n }\n\n static override styles = unsafeCSS(componentStyle);\n\n override disconnectedCallback() {\n window.removeEventListener('pointerdown', this.onWindowPointerDown, true);\n window.clearTimeout(this.deferredSetpointHideTimer);\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-readout': ObcReadout;\n }\n}\n"],"names":["ReadoutVariant","ReadoutDataState","ReadoutSetpointInteraction","ReadoutDirection","ReadoutStackVerticalAlignment"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyCO,IAAK,mCAAAA,oBAAL;AACLA,kBAAA,SAAA,IAAU;AACVA,kBAAA,UAAA,IAAW;AACXA,kBAAA,OAAA,IAAQ;AAHE,SAAAA;AAAA,GAAA,kBAAA,CAAA,CAAA;AAML,IAAK,qCAAAC,sBAAL;AACLA,oBAAA,MAAA,IAAO;AACPA,oBAAA,cAAA,IAAe;AACfA,oBAAA,SAAA,IAAU;AAHA,SAAAA;AAAA,GAAA,oBAAA,CAAA,CAAA;AAML,IAAK,+CAAAC,gCAAL;AACLA,8BAAA,eAAA,IAAgB;AAChBA,8BAAA,UAAA,IAAW;AACXA,8BAAA,OAAA,IAAQ;AAHE,SAAAA;AAAA,GAAA,8BAAA,CAAA,CAAA;AAML,IAAK,qCAAAC,sBAAL;AACLA,oBAAA,UAAA,IAAW;AACXA,oBAAA,YAAA,IAAa;AAFH,SAAAA;AAAA,GAAA,oBAAA,CAAA,CAAA;AAKL,IAAK,kDAAAC,mCAAL;AACLA,iCAAA,MAAA,IAAO;AACPA,iCAAA,QAAA,IAAS;AACTA,iCAAA,UAAA,IAAW;AAHD,SAAAA;AAAA,GAAA,iCAAA,CAAA,CAAA;AAmDL,IAAM,aAAN,cAAyB,WAAW;AAAA,EAApC,cAAA;AAAA,UAAA,GAAA,SAAA;AAEsB,SAAA,cAAc;AAEf,SAAA,UAA0B;AACzB,SAAA,YAAY;AACb,SAAA,QAAQ;AAGP,SAAA,MAAM;AAEP,SAAA,YAA8B;AAC9B,SAAA,sBACxB;AACwB,SAAA,YACxB;AAiBF,SAAA,YACE;AACyB,SAAA,MAAM;AACN,SAAA,qBAAqB;AACrB,SAAA,mBAAmB;AACnB,SAAA,kBAAkB;AACnB,SAAA,iBAAiB;AACjB,SAAA,iBAAiB;AAChB,SAAA,sBAAsB;AAEtB,SAAA,YAAY;AACZ,SAAA,eAAe;AAChB,SAAA,mBAAmB;AAElB,SAAA,iBAAiB;AAElB,SAAA,QAAoC;AAEjB,SAAA,YAAY;AAC9B,SAAA,uBAAuB;AACL,SAAA,wBAAwB;AAC1C,SAAA,YAAY;AAEb,SAAA,eACxB,oBAAoB;AACI,SAAA,cACxB,mBAAmB;AACK,SAAA,uBACxB;AACwB,SAAA,oBAAoB;AACnB,SAAA,uBAAuB;AACxB,SAAA,iBACxB,sBAAsB;AACE,SAAA,yBACxB;AACwB,SAAA,sBAAsB;AACrB,SAAA,yBAAyB;AAGpD,SAAQ,4BAA0D;AACzD,SAAQ,6BAA6B;AACrC,SAAQ,sBAA2C,CAAA;AAK5D,SAAiB,sBAAsB,CAAC,UAAwB;AAC9D,UAAI,CAAC,KAAK,4BAA4B;AACpC;AAAA,MACF;AAEA,YAAM,OAAO,MAAM,aAAA;AACnB,UAAI,KAAK,SAAS,IAAI,GAAG;AACvB;AAAA,MACF;AAEA,WAAK,6BAA6B;AAAA,IACpC;AAIA,SAAQ,0BAA0B;AAAA,EAAA;AAAA,EAElC,IAAY,eAAe;AACzB,WAAO,KAAK,cAAc;AAAA,EAC5B;AAAA,EAEA,IAAY,aAAa;AACvB,WAAO,KAAK,cAAc;AAAA,EAC5B;AAAA,EAEA,IAAY,aAAa;AACvB,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,IAAY,UAAU;AACpB,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,IAAY,SAAS;AACnB,WAAO,KAAK,QAAQ,UAAa,KAAK,IAAI,WAAW;AAAA,EACvD;AAAA,EAEA,IAAY,oBAAoB;AAC9B,WAAO,KAAK,gBAAgB,KAAK,aAAa,KAAK;AAAA,EACrD;AAAA,EAEA,IAAY,sBAAsB;AAChC,WACE,KAAK,sBACL,KAAK,gBACJ,KAAK,oBAAoB,KAAK;AAAA,EAEnC;AAAA,EAEA,IAAY,oBAAoB;AAC9B,WAAO,KAAK,oBAAoB,KAAK;AAAA,EACvC;AAAA,EAEA,IAAY,eAAe;AACzB,WAAO,KAAK,YAAY,aAA0B,KAAK;AAAA,EACzD;AAAA,EAEA,IAAY,8BAAuC;AACjD,WAAO,QAAQ,KAAK,SAAS,KAAK,QAAQ,KAAK,SAAS;AAAA,EAC1D;AAAA,EAEQ,oBAAqD;AAC3D,QAAI,CAAC,KAAK,6BAA6B;AACrC,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,KAAK,cAAc;AACtB,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,oBAAoB,kBAA0C;AACrE,aAAO,oBAAoB;AAAA,IAC7B;AAEA,QAAI,KAAK,oBAAoB,UAAkC;AAC7D,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,qCAEM;AACZ,QAAI,KAAK,cAAc;AACrB,UAAI,KAAK,oBAAoB,kBAA0C;AACrE,eAAO;AAAA,MACT;AAEA,UAAI,KAAK,oBAAoB,UAAkC;AAC7D,eAAO,oBAAoB;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,wBAA2D;AACjE,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAY,kBAA8C;AACxD,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAY,oBAA6B;AACvC,WAAO,KAAK,UAAU,KAAK;AAAA,EAC7B;AAAA,EAEA,IAAY,uBAAgC;AAC1C,WACE,KAAK,oBAAoB,eACzB,KAAK;AAAA,EAET;AAAA,EAEA,IAAY,0BAAmC;AAC7C,WACE,KAAK,oBAAoB,eACzB,CAAC,KAAK;AAAA,EAEV;AAAA,EAEA,IAAY,mCAA4C;AACtD,QAAI,CAAC,KAAK,4BAA4B;AACpC,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,oBAAoB,kBAA0C;AACrE,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,oBAAoB,UAAkC;AAC7D,aACE,KAAK,qBAAqB,KAAK,8BAA8B;AAAA,IAEjE;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,0BAAmC;AACzC,QAAI,CAAC,KAAK,aAAa;AACrB,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,IAAY,6BAAsC;AAChD,WAAO,KAAK,wBAAA;AAAA,EACd;AAAA,EAEA,IAAY,mBAA4B;AACtC,WACE,KAAK,6BAA6B,CAAC,KAAK;AAAA,EAE5C;AAAA,EAEA,IAAY,8BAAuC;AACjD,WAAO,KAAK,8BAA8B,KAAK;AAAA,EACjD;AAAA,EAEA,IAAY,yBAAkC;AAC5C,QACE,CAAC,KAAK,8BACN,KAAK,oBAAoB,UACzB;AACA,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,gBAAgB,KAAK,8BAA8B,UAAU;AACpE,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,IAAY,gCAAyC;AACnD,QAAI,KAAK,oBAAoB,aAAqC;AAChE,aAAO,KAAK;AAAA,IACd;AAEA,QAAI,KAAK,+BAA+B,KAAK,wBAAwB;AACnE,aAAO;AAAA,IACT;AAEA,WACE,KAAK,8BACL,KAAK,gBACL,KAAK,oBAAoB,YACzB,KAAK,8BAA8B;AAAA,EAEvC;AAAA,EAEA,IAAY,2BAAqC;AAC/C,WAAO,KAAK,yBAAyB,SAAS;AAAA,EAChD;AAAA,EAEA,IAAY,WAAgC;AAC1C,WAAO,KAAK,YAAY,YACpB,oBAAoB,SACpB,oBAAoB;AAAA,EAC1B;AAAA,EAEQ,aAAa,MAAgD;AACnE,YAAQ,MAAA;AAAA,MACN,KAAK,oBAAoB;AACvB,eAAO,oBAAoB;AAAA,MAC7B,KAAK,oBAAoB;AACvB,eAAO,oBAAoB;AAAA,MAC7B,KAAK,oBAAoB;AACvB,eAAO,oBAAoB;AAAA,MAC7B;AACE,eAAO,oBAAoB;AAAA,IAAA;AAAA,EAEjC;AAAA,EASQ,SAAS,MAAmC;AAClD,WAAO,WAAW,4BAA4B,QAAQ,IAAI;AAAA,EAC5D;AAAA,EAEA,IAAY,4BAAqC;AAC/C,WACE,KAAK,mBAAmB,sBAAsB,eAC9C,KAAK,mBAAmB,sBAAsB;AAAA,EAElD;AAAA,EAEA,IAAY,8BAAmD;AAC7D,QAAI,KAAK,oBAAoB,aAAqC;AAChE,UAAI,KAAK,yBAAyB;AAChC,eAAO,KAAK;AAAA,MACd;AAEA,YAAM,gBACJ,KAAK,YAAY,YACb,oBAAoB,QACpB,KAAK,aAAa,KAAK,QAAQ;AAErC,UACE,KAAK,gBACL,KAAK,SAAS,KAAK,YAAY,IAAI,KAAK,SAAS,KAAK,QAAQ,GAC9D;AACA,eAAO,KAAK;AAAA,MACd;AAEA,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,cAAc;AACrB,aAAO,KAAK;AAAA,IACd;AAEA,QACE,KAAK,6BACL,KAAK,YAAY,WACjB;AACA,aAAO,KAAK,aAAa,KAAK,QAAQ;AAAA,IACxC;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAY,4BAAiD;AAC3D,QAAI,KAAK,oBAAoB,aAAqC;AAChE,YAAM,gBACJ,KAAK,YAAY,YACb,oBAAoB,QACpB,KAAK,aAAa,KAAK,QAAQ;AACrC,aAAO,KAAK,uBAAuB,KAAK,WAAW;AAAA,IACrD;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAY,wBAA8C;AACxD,QAAI,KAAK,eAAe;AACtB,aAAO,KAAK;AAAA,IACd;AAEA,QAAI,CAAC,KAAK,+BAA+B;AACvC,aAAO,KAAK,YAAY,aACpB,SAAS,WACT;AAAA,IACN;AAEA,QAAI,KAAK,oBAAoB,kBAA0C;AACrE,aAAO,SAAS;AAAA,IAClB;AAEA,QAAI,KAAK,oBAAoB,aAAqC;AAChE,aAAO,SAAS;AAAA,IAClB;AAEA,QAAI,KAAK,oBAAoB,UAAkC;AAC7D,aAAO,SAAS;AAAA,IAClB;AAEA,QAAI,KAAK,YAAY,YAAyB;AAC5C,aAAO,SAAS;AAAA,IAClB;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,IAAY,sBAA2C;AACrD,WAAO,KAAK,YAAY,YACpB,oBAAoB,UACpB,oBAAoB;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,IAAY,0BAAmC;AAC7C,QAAI,KAAK,YAAY,YAAyB;AAC5C,aAAO;AAAA,IACT;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAY,qBAAwC;AAClD,QAAI,KAAK,YAAY;AACnB,aAAO,KAAK;AAAA,IACd;AAEA,WAAO,KAAK,YAAY,cACpB,KAAK,YAAY,cACjB,KAAK,YAAY,YACjB,KAAK,aACL,kBAAkB,QAClB,kBAAkB;AAAA,EACxB;AAAA,EAEQ,iCAAiC;AACvC,UAAM,mBACJ,KAAK,kBAAkB,iBAAiB,EAAC,SAAS,KAAA,CAAK,KAAK,CAAA;AAE9D,WAAO,iBAAiB,QAAQ,CAAC,YAAY;AAC3C,UAAI,EAAE,mBAAmB,cAAc;AACrC,eAAO,CAAA;AAAA,MACT;AAEA,UAAI,QAAQ,cAAc,uBAAuB;AAC/C,eAAO,CAAC,OAAO;AAAA,MACjB;AAEA,aAAO,MAAM,KAAK,QAAQ,iBAAiB,qBAAqB,CAAC;AAAA,IACnE,CAAC;AAAA,EACH;AAAA,EAEQ,6BAA6B,SAAsB;AACzD,UAAM,cAAc,QAAQ,cAAc,eAAe;AAEzD,QAAI,EAAE,uBAAuB,cAAc;AACzC,aAAO;AAAA,IACT;AAEA,WAAO,OAAO,YAAY,UAAU,IAAI,CAAC;AAAA,EAC3C;AAAA,EAEQ,wBAAwB,MAAmB,OAAe;AAChE,UAAM,iBAAiB;AAIvB,UAAM,YAAY,eAAe,SAAS,KAAK,aAAa,OAAO,KAAK;AACxE,UAAM,YACJ,KAAK,aAAa,YAAY,KAC9B,eAAe,SACf,KAAK,aAAa,OAAO,KACzB,aACA,iBAAiB,KAAK;AAExB,WAAO,EAAC,WAAW,UAAA;AAAA,EACrB;AAAA,EAEQ,8BAA8B,OAAe;AACnD,UAAM,kBAAkB,KAAK,+BAAA;AAC7B,eAAW,CAAC,OAAO,IAAI,KAAK,gBAAgB,WAAW;AACrD,YAAM,EAAC,UAAA,IAAa,KAAK,wBAAwB,MAAM,KAAK;AAC5D,UAAI,cAAc,OAAO;AACvB,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,0BAA0B;AAChC,UAAM,kBAAkB,KAAK,+BAAA;AAE7B,SAAK,sBAAsB,gBAAgB,IAAI,CAAC,MAAM,UAAU;AAC9D,YAAM,EAAC,WAAW,UAAA,IAAa,KAAK,wBAAwB,MAAM,KAAK;AAEvE,aAAO;AAAA,QACL,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM,KAAK,6BAA6B,IAAI;AAAA,MAAA;AAAA,IAEhD,CAAC;AAAA,EACH;AAAA,EAEQ,4BACN,OACA;AACA,SAAK;AAAA,MACH,IAAI,YAAY,iBAAiB;AAAA,QAC/B,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,UACN,OAAO,MAAM,OAAO;AAAA,UACpB,OAAO,MAAM,OAAO,QAAQ;AAAA,QAAA;AAAA,MAC9B,CACD;AAAA,IAAA;AAEH,SAAK,8BAA8B,MAAM,OAAO,KAAK,GAAG,MAAA;AACxD,SAAK,6BAA6B;AAAA,EACpC;AAAA,EAES,QAAQ,mBAAyC;AACxD,UAAM,QAAQ,iBAAiB;AAE/B,QAAI,kBAAkB,IAAI,4BAA4B,GAAG;AAEvD,UAAI,KAAK,4BAA4B;AACnC,eAAO,iBAAiB,eAAe,KAAK,qBAAqB,IAAI;AAAA,MACvE,OAAO;AACL,eAAO;AAAA,UACL;AAAA,UACA,KAAK;AAAA,UACL;AAAA,QAAA;AAAA,MAEJ;AAAA,IACF;AAEA,QACE,EACE,kBAAkB,IAAI,OAAO,KAC7B,kBAAkB,IAAI,eAAe,KACrC,kBAAkB,IAAI,aAAa,KACnC,kBAAkB,IAAI,qBAAqB,IAE7C;AACA;AAAA,IACF;AAEA,QAAI,KAAK,oBAAoB,UAAkC;AAC7D,WAAK,4BAA4B;AACjC,aAAO,aAAa,KAAK,yBAAyB;AAClD,WAAK,4BAA4B;AACjC;AAAA,IACF;AAEA,UAAM,qBAAqB,KAAK,eAAe,KAAK;AAEpD,QAAI,CAAC,KAAK,yBAAyB;AACjC,WAAK,4BAA4B,qBAAqB,WAAW;AACjE;AAAA,IACF;AAEA,QAAI,CAAC,oBAAoB;AACvB,WAAK,4BAA4B;AACjC,aAAO,aAAa,KAAK,yBAAyB;AAClD,WAAK,4BAA4B;AACjC;AAAA,IACF;AAEA,QAAI,KAAK,8BAA8B,QAAQ;AAC7C;AAAA,IACF;AAEA,SAAK,4BAA4B;AACjC,WAAO,aAAa,KAAK,yBAAyB;AAClD,SAAK,4BAA4B,OAAO,WAAW,MAAM;AACvD,WAAK,4BAA4B;AACjC,WAAK,4BAA4B;AAAA,IACnC,GAAG,GAAG;AAAA,EACR;AAAA,EAES,eAAe;AACtB,SAAK,0BAA0B;AAAA,EACjC;AAAA,EAEQ,eAAe;AACrB,QAAI,CAAC,KAAK,WAAW;AACnB,aAAO;AAAA,IACT;AAEA,UAAM,oBACJ,KAAK,YAAY,aAA0B,KAAK,eAC5C,KAAK,8BACL,KAAK;AAEX,WAAO;AAAA;AAAA;AAAA;AAAA,wCAI6B,KAAK,YAC/B,aAA0B,KAAK,aAC7B,WACA,OAAO;AAAA,4BACK,KAAK,OAAO;AAAA,yBACf,KAAK,SAAS;AAAA,oBACnB,iBAAiB;AAAA,0BACX,KAAK,uBAAuB;AAAA,wBAC9B,KAAK,qBAAqB;AAAA,sBAC5B,KAAK,YAAY;AAAA,qBAClB,KAAK,WAAW;AAAA,qBAChB,KAAK,WAAW;AAAA,8BACP,KAAK,oBAAoB;AAAA,2BAC5B,KAAK,iBAAiB;AAAA,8BACnB,KAAK,cAAc;AAAA,8BACnB,KAAK,oBAAoB;AAAA,8BACzB,KAAK,cAAc;AAAA,yBACxB,KAAK,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASrC;AAAA,EAEQ,iBAAiB;AACvB,QAAI,CAAC,KAAK,aAAa;AACrB,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,KAAK,oBAAoB,CAAC,KAAK,wBAAwB;AAC1D,aAAO;AAAA,IACT;AAEA,UAAM,uBACJ,KAAK,gBACL,KAAK,oBAAoB,mBACrB,YACA,KAAK;AACX,UAAM,eAAe,KAAK,mCAAA;AAE1B,WAAO;AAAA;AAAA,gBAEK,SAAS;AAAA,MACf,2BAA2B;AAAA,MAC3B,oBAAoB;AAAA,MACpB,mBACE,KAAK,oBAAoB,YACzB,KAAK,8BAA8B;AAAA,MACrC,mBACE,KAAK,oBAAoB,YACzB,KAAK,8BAA8B;AAAA,MACrC,mBACE,KAAK,8BACL,KAAK,oBAAoB;AAAA;AAAA,IAAA,CAC5B,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,mCAKyB,KAAK,cAC5B,QAAA;AAAA,wCAC4B,KAAK,YAC/B,aACF,KAAK,cACL,KAAK,gCAAgC,oBAAoB,SACrD,WACA,OAAO;AAAA,qCACc,KAAK,oBAC9B,WAAA;AAAA,4BACgB,oBAAoB;AAAA,yBACvB,KAAK,SAAS;AAAA,oBACnB,KAAK,2BAA2B;AAAA,sBAC9B,KAAK,uBAAuB;AAAA,oBAC9B,YAAY;AAAA,wBACR,KAAK,wBAAwB;AAAA,0BAC3B,KAAK,uBAAuB;AAAA,qBACjC,KAAK,aAAa;AAAA,8BACT,KAAK,sBAAsB;AAAA,2BAC9B,KAAK,mBAAmB;AAAA,8BACrB,KAAK,cAAc;AAAA,8BACnB,KAAK,sBAAsB;AAAA,8BAC3B,KAAK,cAAc;AAAA,yBACxB,KAAK,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASrC;AAAA,EAEQ,wBAAwB;AAC9B,QAAI,CAAC,KAAK,qBAAqB;AAC7B,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,sBAAsB;AAC5B,QAAI,CAAC,KAAK,mBAAmB;AAC3B,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,sBAAsB;AAC5B,QAAI,CAAC,KAAK,mBAAmB;AAC3B,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,kBAAkB;AACxB,WAAO;AAAA;AAAA,gBAEK,SAAS;AAAA,MACf,2BAA2B;AAAA,MAC3B,yBAAyB;AAAA,MACzB,gBACE,KAAK,gCACJ,KAAK,oBACJ,oBACA,KAAK;AAAA,IAAA,CACV,CAAC;AAAA;AAAA;AAAA,UAGA,KAAK,kBAAkB;AAAA;AAAA;AAAA,EAG/B;AAAA,EAEQ,eAAe;AACrB,QAAI,CAAC,KAAK,QAAQ;AAChB,aAAO;AAAA,IACT;AAEA,WAAO,oBAAoB;AAAA,MACzB,QAAQ,KAAK;AAAA,MACb,cACE,KAAK,gBACL,4BAA4B,KAAK,kBAAkB;AAAA,MACrD,KAAK,KAAK,OAAO;AAAA,MACjB,kBAAkB,KAAK;AAAA,MACvB,YAAY,KAAK;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB,kBAAkB,KAAK;AAAA,MACvB,WAAW,KAAK;AAAA,MAChB,sBAAsB,KAAK;AAAA,MAC3B,uBAAuB,KAAK;AAAA,MAC5B,gBAAgB,KAAK;AAAA,MACrB,gBAAgB,MAAM;AACpB,aAAK,6BAA6B,CAAC,KAAK;AAAA,MAC1C;AAAA,MACA,eAAe,MAAM;AACnB,aAAK;AAAA,UACH,IAAI,YAAY,uBAAuB;AAAA,YACrC,SAAS;AAAA,YACT,UAAU;AAAA,YACV,QAAQ;AAAA,cACN,KAAK,KAAK,OAAO;AAAA,cACjB,YAAY,KAAK;AAAA,YAAA;AAAA,UACnB,CACD;AAAA,QAAA;AAAA,MAEL;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EAEQ,4BAA4B;AAClC,QACE,EACE,KAAK,gBACL,4BAA4B,KAAK,kBAAkB,MAErD,CAAC,KAAK,4BACN;AACA,aAAO;AAAA,IACT;AAEA,WAAO;AAAA;AAAA,gBAEK,gBAAgB,OAAO;AAAA,mBACpB,KAAK,mBAAmB;AAAA,0BACjB,KAAK,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA,CAAE;AAAA;AAAA,sBAE9B,KAAK,2BAA2B;AAAA,iBACrC,MAAM;AACb,WAAK,6BAA6B;AAAA,IACpC,CAAC;AAAA;AAAA;AAAA,EAGP;AAAA,EAEQ,yBAAyB;AAC/B,WAAO;AAAA;AAAA;AAAA;AAAA,sBAIW,KAAK,uBAAuB;AAAA;AAAA;AAAA,EAGhD;AAAA,EAEQ,mBAAmB;AACzB,UAAM,yBACJ,KAAK,YAAY,aAA0B,KAAK;AAClD,UAAM,gBAAgB,KAAK;AAC3B,UAAM,qBAAqB,kBAAkB,SAAS;AACtD,UAAM,oBACH,KAAK,iCACJ,KAAK,oBAAoB,eAC1B,KAAK,iCACJ,KAAK,gBACL,KAAK,oBAAoB,WACvB,YACA,KAAK;AACX,UAAM,YAAY,KAAK,kBAAA;AAEvB,WAAO;AAAA;AAAA,mBAEQ,uBAAuB,KAAK;AAAA,wBACvB,iBAAiB;AAAA,qBACpB,KAAK,SAAS;AAAA,gBACnB,KAAK,yBAAyB;AAAA,gBAC9B,SAAS;AAAA,sBACH,KAAK,uBAAuB;AAAA,oCACd,yBAAyB,WAAW,OAAO;AAAA,iCAC9C,KAAK,oBAC9B,WAAA;AAAA,oCAC4B,kBAAkB;AAAA,oBAClC,aAAa;AAAA,iBAChB,KAAK,KAAK;AAAA,2BACA,KAAK,eAAe;AAAA,0BACrB,KAAK,cAAc;AAAA,0BACnB,KAAK,cAAc;AAAA,0BACnB,KAAK,mBAAmB;AAAA,qBAC7B,KAAK,SAAS;AAAA,eACpB,KAAK,GAAG;AAAA;AAAA,UAEb,KAAK,iBACH;AAAA;AAAA;AAAA;AAAA,gBAKA,OAAO;AAAA,UACT,KAAK,cAAc,gBAAgB,MAAM,OACvC,gDACA,OAAO;AAAA;AAAA;AAAA,EAGjB;AAAA,EAEQ,8BAA8B,SAAkB;AACtD,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA,UAKD,KAAK,kBAAkB;AAAA,UACvB,WAAW,KAAK,OAAO,sBAAsB,KAAK,IAAI,IAAI,OAAO;AAAA;AAAA;AAAA,EAGzE;AAAA,EAEQ,yBAAyB;AAC/B,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA,UAKD,KAAK,YAAY,aAA0B,KAAK,eAC9C,uBAAuB,KAAK,KAAK,IACjC,OAAO;AAAA,UACT,KAAK,cACP,KAAK,gBACL,KAAK,8BACD,sBAAsB;AAAA,MACpB,YAAY,KAAK;AAAA,MACjB,WAAW,KAAK;AAAA,IAAA,CACjB,IACD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,YAKP,KAAK,YAAY,KAAK,aAAA,IAAiB,OAAO;AAAA,YAC9C,KAAK,YAAY,KAAK,oBAAA,IAAwB,OAAO;AAAA,YACrD,KAAK,eAAA,CAAgB,IAAI,KAAK,uBAAuB;AAAA,YACrD,KAAK,eACH,KAAK,8BAA8B,IAAI,IACvC,OAAO,KAAK,iBAAA,CAAkB,EAAE;AAAA,YAClC,KAAK,WACP,KAAK,gBACL,KAAK,8BACD,sBAAsB;AAAA,MACpB,YAAY,KAAK;AAAA,MACjB,WAAW,KAAK;AAAA,IAAA,CACjB,IACD,OAAO;AAAA,YACT,KAAK,SAAS,KAAK,oBAAA,IAAwB,OAAO;AAAA,YAClD,KAAK,SAAS,KAAK,aAAA,IAAiB,OAAO;AAAA;AAAA;AAAA;AAAA,EAIrD;AAAA,EAES,SAAS;AAChB,WAAO;AAAA,MACL,KAAK;AAAA,MACL;AAAA;AAAA,kBAEY,SAAS;AAAA,QACf,SAAS;AAAA,QACT,CAAC,KAAK,OAAO,GAAG;AAAA,QAChB,CAAC,KAAK,SAAS,GAAG;AAAA,QAClB,kBAAkB,KAAK,cAAc;AAAA,QACrC,oBAAoB,KAAK,cAAc;AAAA,QACvC,sBAAsB,KAAK,cAAc;AAAA,QACzC,8BACE,KAAK,oBAAoB;AAAA,QAC3B,yBACE,KAAK,8BACL,KAAK,oBAAoB;AAAA,QAC3B,sBACE,KAAK,8BACL,KAAK,oBAAoB;AAAA,QAC3B,kBACE,KAAK,8BAA8B,KAAK;AAAA,QAC1C,eACE,KAAK,8BAA8B,KAAK;AAAA,QAC1C,aAAa,KAAK,cAAc;AAAA,QAChC,sBACE,KAAK,cAAc;AAAA,QACrB,gBAAgB,KAAK,cAAc;AAAA,QACnC,cAAc,KAAK;AAAA,QACnB,gBAAgB,KAAK;AAAA,QACrB,uBACE,KAAK,gBACL,KAAK,mBAAmB,sBAAsB;AAAA,QAChD,UAAU,CAAC,KAAK;AAAA,QAChB,cAAc,KAAK;AAAA,MAAA,CACpB,CAAC;AAAA;AAAA,YAEA,CAAC,KAAK,aAAa,KAAK,aAAa,KAAK,aAAA,IAAiB,OAAO;AAAA,YAClE,CAAC,KAAK,aAAa,KAAK,aACtB,KAAK,eAAA,IACL,OAAO;AAAA,YACT,CAAC,KAAK,aAAa,KAAK,aACtB,KAAK,gBAAA,IACL,OAAO;AAAA,aACR,KAAK,aAAa,KAAK,eAC1B,KAAK,8BACD,sBAAsB;AAAA,QACpB,YAAY,KAAK;AAAA,QACjB,WAAW,KAAK;AAAA,MAAA,CACjB,IACD,OAAO;AAAA,YACT,CAAC,KAAK,aAAa,KAAK,UAAU,KAAK,aACrC,KAAK,aAAA,IACL,OAAO;AAAA,YACT,CAAC,KAAK,aAAa,KAAK,eACtB,KAAK,uBAAA,IACL,OAAO;AAAA,YACT,KAAK,wBAAwB;AAAA;AAAA,UAE/B,KAAK,2BAA2B;AAAA;AAAA,IAAA;AAAA,EAGxC;AAAA,EAIS,uBAAuB;AAC9B,WAAO,oBAAoB,eAAe,KAAK,qBAAqB,IAAI;AACxE,WAAO,aAAa,KAAK,yBAAyB;AAClD,UAAM,qBAAA;AAAA,EACR;AACF;AAh+Ba,WAwSa,8BAAqD;AAAA,EAC3E,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,oBAAoB;AACtB;AA7SW,WAy9BK,SAAS,UAAU,cAAc;AAx9BvB,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GADb,WACe,WAAA,SAAA,CAAA;AACC,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAFd,WAEgB,WAAA,eAAA,CAAA;AACD,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAHb,WAGe,WAAA,iBAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAJb,WAIe,WAAA,WAAA,CAAA;AACC,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GALd,WAKgB,WAAA,aAAA,CAAA;AACD,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GANb,WAMe,WAAA,SAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAPb,WAOe,WAAA,QAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GARb,WAQe,WAAA,OAAA,CAAA;AACC,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GATd,WASgB,WAAA,OAAA,CAAA;AACD,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAVb,WAUe,WAAA,iBAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAXb,WAWe,WAAA,aAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAZb,WAYe,WAAA,uBAAA,CAAA;AAEA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAdb,WAce,WAAA,aAAA,CAAA;AAgBA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GA9Bb,WA8Be,WAAA,gBAAA,CAAA;AAE1B,gBAAA;AAAA,EADC,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GA/Bb,WAgCX,WAAA,aAAA,CAAA;AAE2B,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAlCd,WAkCgB,WAAA,OAAA,CAAA;AACA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAnCd,WAmCgB,WAAA,sBAAA,CAAA;AACA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GApCd,WAoCgB,WAAA,oBAAA,CAAA;AACA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GArCd,WAqCgB,WAAA,mBAAA,CAAA;AACD,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAtCb,WAsCe,WAAA,kBAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAvCb,WAuCe,WAAA,kBAAA,CAAA;AACC,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAxCd,WAwCgB,WAAA,uBAAA,CAAA;AAEA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GA1Cd,WA0CgB,WAAA,aAAA,CAAA;AACA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GA3Cd,WA2CgB,WAAA,gBAAA,CAAA;AACD,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GA5Cb,WA4Ce,WAAA,oBAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GA7Cb,WA6Ce,WAAA,cAAA,CAAA;AACC,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GA9Cd,WA8CgB,WAAA,kBAAA,CAAA;AAED,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAhDb,WAgDe,WAAA,SAAA,CAAA;AAEmB,gBAAA;AAAA,EAA5C,SAAS,EAAC,MAAM,SAAS,WAAW,OAAM;AAAA,GAlDhC,WAkDkC,WAAA,aAAA,CAAA;AAClB,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAnDd,WAmDgB,WAAA,wBAAA,CAAA;AACkB,gBAAA;AAAA,EAA5C,SAAS,EAAC,MAAM,SAAS,WAAW,OAAM;AAAA,GApDhC,WAoDkC,WAAA,yBAAA,CAAA;AAClB,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GArDd,WAqDgB,WAAA,aAAA,CAAA;AACD,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAtDb,WAsDe,WAAA,eAAA,CAAA;AACA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAvDb,WAuDe,WAAA,gBAAA,CAAA;AAEA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAzDb,WAyDe,WAAA,eAAA,CAAA;AAEA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GA3Db,WA2De,WAAA,wBAAA,CAAA;AAEA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GA7Db,WA6De,WAAA,qBAAA,CAAA;AACC,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GA9Dd,WA8DgB,WAAA,wBAAA,CAAA;AACD,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GA/Db,WA+De,WAAA,kBAAA,CAAA;AAEA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAjEb,WAiEe,WAAA,0BAAA,CAAA;AAEA,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAnEb,WAmEe,WAAA,uBAAA,CAAA;AACC,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GApEd,WAoEgB,WAAA,0BAAA,CAAA;AAGnB,gBAAA;AAAA,EADP,MAAA;AAAM,GAtEI,WAuEH,WAAA,6BAAA,CAAA;AACS,gBAAA;AAAA,EAAhB,MAAA;AAAM,GAxEI,WAwEM,WAAA,8BAAA,CAAA;AACA,gBAAA;AAAA,EAAhB,MAAA;AAAM,GAzEI,WAyEM,WAAA,uBAAA,CAAA;AAGT,gBAAA;AAAA,EADP,MAAM,iCAAiC;AAAA,GA3E7B,WA4EH,WAAA,oBAAA,CAAA;AA5EG,aAAN,gBAAA;AAAA,EADN,cAAc,aAAa;AAAA,GACf,UAAA;"}
@@ -250,53 +250,26 @@ const componentStyle = css`
250
250
  display: none;
251
251
  }
252
252
 
253
- .root:is(.alert-low-integrity,.alert-invalid,.alert-caution,.alert-warning,.alert-alarm) {
254
- background: var(--_obc-readout-list-item-alert-background);
255
- border: 1px solid var(--_obc-readout-list-item-alert-border);
253
+ .root:is(.data-low-integrity,.data-invalid) {
254
+ background: var(--_obc-readout-list-item-data-background);
255
+ border: 1px solid var(--_obc-readout-list-item-data-border);
256
256
  border-radius: 4px;
257
257
  }
258
258
 
259
- .root.alert-low-integrity {
260
- --_obc-readout-list-item-alert-background: var(
259
+ .root.data-low-integrity {
260
+ --_obc-readout-list-item-data-background: var(
261
261
  --alert-low-integrity-background-color
262
262
  );
263
- --_obc-readout-list-item-alert-border: var(
263
+ --_obc-readout-list-item-data-border: var(
264
264
  --alert-low-integrity-border-color
265
265
  );
266
266
  }
267
267
 
268
- .root.alert-invalid {
269
- --_obc-readout-list-item-alert-background: var(
268
+ .root.data-invalid {
269
+ --_obc-readout-list-item-data-background: var(
270
270
  --alert-invalid-background-color
271
271
  );
272
- --_obc-readout-list-item-alert-border: var(--alert-invalid-border-color);
273
- }
274
-
275
- .root.alert-caution {
276
- --_obc-readout-list-item-alert-background: var(
277
- --alert-caution-container-background-color
278
- );
279
- --_obc-readout-list-item-alert-border: var(
280
- --alert-caution-container-border-color
281
- );
282
- }
283
-
284
- .root.alert-warning {
285
- --_obc-readout-list-item-alert-background: var(
286
- --alert-warning-container-background-color
287
- );
288
- --_obc-readout-list-item-alert-border: var(
289
- --alert-warning-container-border-color
290
- );
291
- }
292
-
293
- .root.alert-alarm {
294
- --_obc-readout-list-item-alert-background: var(
295
- --alert-alarm-container-background-color
296
- );
297
- --_obc-readout-list-item-alert-border: var(
298
- --alert-alarm-container-border-color
299
- );
272
+ --_obc-readout-list-item-data-border: var(--alert-invalid-border-color);
300
273
  }
301
274
  `;
302
275
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"readout-list-item.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"readout-list-item.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,13 +1,11 @@
1
1
  import { LitElement } from 'lit';
2
+ import { AlertFrameConfig } from '../../components/alert-frame/alert-frame.js';
2
3
  import '../readout-setpoint/readout-setpoint.js';
3
4
  import '../../icons/icon-input-right.js';
4
- export declare enum ReadoutListItemAlertState {
5
+ export declare enum ReadoutListItemDataState {
5
6
  none = "none",
6
7
  lowIntegrity = "low-integrity",
7
- invalid = "invalid",
8
- caution = "caution",
9
- warning = "warning",
10
- alarm = "alarm"
8
+ invalid = "invalid"
11
9
  }
12
10
  export declare enum ReadoutListItemSize {
13
11
  base = "base",
@@ -34,7 +32,8 @@ export declare enum ReadoutListItemPriority {
34
32
  * - **Sizes:** `base`, `priority`, and `enhanced` typography/padding scales.
35
33
  * - **Stacking modes:** `trailing-unit`, `leading-unit`, and `leading-src` control where unit/source appear relative to the label/value.
36
34
  * - **Priority styling:** `priority` controls emphasis and setpoint presentation (`regular`, `enhanced`, `setpoint`, `setpoint-flip-flop`).
37
- * - **Alert states:** Supports `alertState` styling for integrity/invalid and attention states (`caution`, `warning`, `alarm`).
35
+ * - **Data states:** Supports `dataState` styling for `low-integrity` and `invalid` data quality.
36
+ * - **Alert frame:** Optional `alert` wrapper for caution, warning, alarm, and other alert-frame statuses.
38
37
  * - **Formatting:** Supports numeric formatting, fixed-length width templates, hinted zeros, and optional degree suffix (`°`).
39
38
  *
40
39
  * ### Usage Guidelines
@@ -53,7 +52,8 @@ export declare class ObcReadoutListItem extends LitElement {
53
52
  size: ReadoutListItemSize;
54
53
  stacking: ReadoutListItemStacking;
55
54
  priority: ReadoutListItemPriority;
56
- alertState: ReadoutListItemAlertState;
55
+ dataState: ReadoutListItemDataState;
56
+ alert: AlertFrameConfig | boolean;
57
57
  label: string;
58
58
  unit: string;
59
59
  src: string;
@@ -89,7 +89,7 @@ export declare class ObcReadoutListItem extends LitElement {
89
89
  private renderValue;
90
90
  private renderTrailingUnit;
91
91
  private renderTrailingSource;
92
- render(): import('lit-html').TemplateResult<1>;
92
+ render(): import('lit-html').HTMLTemplateResult;
93
93
  static styles: import('lit').CSSResult;
94
94
  }
95
95
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"readout-list-item.d.ts","sourceRoot":"","sources":["../../../src/navigation-instruments/readout-list-item/readout-list-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAA2B,MAAM,KAAK,CAAC;AAQzD,OAAO,yCAAyC,CAAC;AACjD,OAAO,iCAAiC,CAAC;AAGzC,oBAAY,yBAAyB;IACnC,IAAI,SAAS;IACb,YAAY,kBAAkB;IAC9B,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,oBAAY,mBAAmB;IAC7B,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAED,oBAAY,uBAAuB;IACjC,YAAY,kBAAkB;IAC9B,WAAW,iBAAiB;IAC5B,UAAU,gBAAgB;CAC3B;AAED,oBAAY,uBAAuB;IACjC,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,gBAAgB,uBAAuB;CACxC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBACa,kBAAmB,SAAQ,UAAU;IACtB,IAAI,EAAE,mBAAmB,CACxB;IAE3B,QAAQ,EAAE,uBAAuB,CAAwC;IAEzE,QAAQ,EAAE,uBAAuB,CAAmC;IAEpE,UAAU,EAAE,yBAAyB,CAAkC;IAE7C,KAAK,SAAM;IACX,IAAI,SAAM;IACV,GAAG,SAAM;IAET,KAAK,EAAE,MAAM,GAAG,SAAS,CAAa;IACtC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAa;IAE7C,WAAW,UAAS;IAEpB,SAAS,UAAS;IAClB,OAAO,UAAS;IAChB,QAAQ,UAAS;IACjB,SAAS,UAAS;IAClB,cAAc,UAAS;IACvB,YAAY,UAAS;IAEtB,cAAc,SAAK;IAClB,eAAe,UAAS;IAEzB,cAAc,SAAK;IAClB,cAAc,UAAS;IAEvB,SAAS,UAAS;IAE7C,OAAO,KAAK,qBAAqB,GAMhC;IAED,OAAO,KAAK,iBAAiB,GAe5B;IAED,OAAO,KAAK,uBAAuB,GA0BlC;IAED,OAAO,KAAK,oBAAoB,GAa/B;IAED,OAAO,KAAK,sBAAsB,GAWjC;IAED,OAAO,KAAK,kBAAkB,GAI7B;IAED,OAAO,KAAK,wBAAwB,GASnC;IAED,OAAO,KAAK,oBAAoB,GAQ/B;IAED,OAAO,KAAK,mBAAmB,GAI9B;IAED,OAAO,KAAK,2BAA2B,GAKtC;IAED,OAAO,KAAK,0BAA0B,GAKrC;IAED,OAAO,CAAC,oBAAoB;IA+C5B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,oBAAoB;IAanB,MAAM;IA2Cf,OAAgB,MAAM,0BAA6B;CACpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,uBAAuB,EAAE,kBAAkB,CAAC;KAC7C;CACF"}
1
+ {"version":3,"file":"readout-list-item.d.ts","sourceRoot":"","sources":["../../../src/navigation-instruments/readout-list-item/readout-list-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAA2B,MAAM,KAAK,CAAC;AAQzD,OAAO,yCAAyC,CAAC;AACjD,OAAO,iCAAiC,CAAC;AAEzC,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,6CAA6C,CAAC;AAErD,oBAAY,wBAAwB;IAClC,IAAI,SAAS;IACb,YAAY,kBAAkB;IAC9B,OAAO,YAAY;CACpB;AAED,oBAAY,mBAAmB;IAC7B,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAED,oBAAY,uBAAuB;IACjC,YAAY,kBAAkB;IAC9B,WAAW,iBAAiB;IAC5B,UAAU,gBAAgB;CAC3B;AAED,oBAAY,uBAAuB;IACjC,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,gBAAgB,uBAAuB;CACxC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBACa,kBAAmB,SAAQ,UAAU;IACtB,IAAI,EAAE,mBAAmB,CACxB;IAE3B,QAAQ,EAAE,uBAAuB,CAAwC;IAEzE,QAAQ,EAAE,uBAAuB,CAAmC;IAEpE,SAAS,EAAE,wBAAwB,CAAiC;IAE1C,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAS;IAE1C,KAAK,SAAM;IACX,IAAI,SAAM;IACV,GAAG,SAAM;IAET,KAAK,EAAE,MAAM,GAAG,SAAS,CAAa;IACtC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAa;IAE7C,WAAW,UAAS;IAEpB,SAAS,UAAS;IAClB,OAAO,UAAS;IAChB,QAAQ,UAAS;IACjB,SAAS,UAAS;IAClB,cAAc,UAAS;IACvB,YAAY,UAAS;IAEtB,cAAc,SAAK;IAClB,eAAe,UAAS;IAEzB,cAAc,SAAK;IAClB,cAAc,UAAS;IAEvB,SAAS,UAAS;IAE7C,OAAO,KAAK,qBAAqB,GAMhC;IAED,OAAO,KAAK,iBAAiB,GAe5B;IAED,OAAO,KAAK,uBAAuB,GA0BlC;IAED,OAAO,KAAK,oBAAoB,GAa/B;IAED,OAAO,KAAK,sBAAsB,GAWjC;IAED,OAAO,KAAK,kBAAkB,GAI7B;IAED,OAAO,KAAK,wBAAwB,GASnC;IAED,OAAO,KAAK,oBAAoB,GAQ/B;IAED,OAAO,KAAK,mBAAmB,GAI9B;IAED,OAAO,KAAK,2BAA2B,GAKtC;IAED,OAAO,KAAK,0BAA0B,GAKrC;IAED,OAAO,CAAC,oBAAoB;IA+C5B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,oBAAoB;IAanB,MAAM;IAiDf,OAAgB,MAAM,0BAA6B;CACpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,uBAAuB,EAAE,kBAAkB,CAAC;KAC7C;CACF"}
@@ -6,6 +6,7 @@ import { customElement } from "../../decorator.js";
6
6
  import { ReadoutSetpointSize, ReadoutSetpointValueTypography, ReadoutSetpointMode } from "../readout-setpoint/readout-setpoint.js";
7
7
  import { Priority } from "../types.js";
8
8
  import "../../icons/icon-input-right.js";
9
+ import { wrapWithAlertFrame } from "../../components/alert-frame/alert-frame.js";
9
10
  var __defProp = Object.defineProperty;
10
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11
12
  var __decorateClass = (decorators, target, key, kind) => {
@@ -16,15 +17,12 @@ var __decorateClass = (decorators, target, key, kind) => {
16
17
  if (kind && result) __defProp(target, key, result);
17
18
  return result;
18
19
  };
19
- var ReadoutListItemAlertState = /* @__PURE__ */ ((ReadoutListItemAlertState2) => {
20
- ReadoutListItemAlertState2["none"] = "none";
21
- ReadoutListItemAlertState2["lowIntegrity"] = "low-integrity";
22
- ReadoutListItemAlertState2["invalid"] = "invalid";
23
- ReadoutListItemAlertState2["caution"] = "caution";
24
- ReadoutListItemAlertState2["warning"] = "warning";
25
- ReadoutListItemAlertState2["alarm"] = "alarm";
26
- return ReadoutListItemAlertState2;
27
- })(ReadoutListItemAlertState || {});
20
+ var ReadoutListItemDataState = /* @__PURE__ */ ((ReadoutListItemDataState2) => {
21
+ ReadoutListItemDataState2["none"] = "none";
22
+ ReadoutListItemDataState2["lowIntegrity"] = "low-integrity";
23
+ ReadoutListItemDataState2["invalid"] = "invalid";
24
+ return ReadoutListItemDataState2;
25
+ })(ReadoutListItemDataState || {});
28
26
  var ReadoutListItemSize = /* @__PURE__ */ ((ReadoutListItemSize2) => {
29
27
  ReadoutListItemSize2["base"] = "base";
30
28
  ReadoutListItemSize2["priority"] = "priority";
@@ -50,7 +48,8 @@ let ObcReadoutListItem = class extends LitElement {
50
48
  this.size = "base";
51
49
  this.stacking = "trailing-unit";
52
50
  this.priority = "regular";
53
- this.alertState = "none";
51
+ this.dataState = "none";
52
+ this.alert = false;
54
53
  this.label = "";
55
54
  this.unit = "";
56
55
  this.src = "";
@@ -261,39 +260,44 @@ let ObcReadoutListItem = class extends LitElement {
261
260
  `;
262
261
  }
263
262
  render() {
264
- return html`
265
- <div
266
- class=${classMap({
267
- root: true,
268
- [`size-${this.size}`]: true,
269
- [`stacking-${this.stacking}`]: true,
270
- "priority-enhanced": this.priority === "enhanced",
271
- "priority-setpoint": this.priority === "setpoint",
272
- "priority-setpoint-flip-flop": this.priority === "setpoint-flip-flop",
273
- [`alert-${this.alertState}`]: true,
274
- "has-leading-icon": this.hasLeadingIcon,
275
- "has-value-icon": this.hasValueIcon
276
- })}
277
- part="root"
278
- >
279
- <div class="content" part="content">
280
- <div class="label-container" part="label-container">
281
- ${this.hasLeadingIcon ? html`<span class="leading-icon" aria-hidden="true"
282
- ><slot name="leading-icon"></slot
283
- ></span>` : nothing}
284
- ${this.renderLabelContainer()}
285
- </div>
263
+ return wrapWithAlertFrame(
264
+ this.alert,
265
+ html`
266
+ <div
267
+ class=${classMap({
268
+ root: true,
269
+ [`size-${this.size}`]: true,
270
+ [`stacking-${this.stacking}`]: true,
271
+ "priority-enhanced": this.priority === "enhanced",
272
+ "priority-setpoint": this.priority === "setpoint",
273
+ "priority-setpoint-flip-flop": this.priority === "setpoint-flip-flop",
274
+ "data-none": this.dataState === "none",
275
+ "data-low-integrity": this.dataState === "low-integrity",
276
+ "data-invalid": this.dataState === "invalid",
277
+ "has-leading-icon": this.hasLeadingIcon,
278
+ "has-value-icon": this.hasValueIcon
279
+ })}
280
+ part="root"
281
+ >
282
+ <div class="content" part="content">
283
+ <div class="label-container" part="label-container">
284
+ ${this.hasLeadingIcon ? html`<span class="leading-icon" aria-hidden="true"
285
+ ><slot name="leading-icon"></slot
286
+ ></span>` : nothing}
287
+ ${this.renderLabelContainer()}
288
+ </div>
286
289
 
287
- ${this.labelOnly ? nothing : html`
288
- <div class="value-container" part="value-container">
289
- ${this.renderValue()} ${this.renderTrailingUnit()}
290
- </div>
290
+ ${this.labelOnly ? nothing : html`
291
+ <div class="value-container" part="value-container">
292
+ ${this.renderValue()} ${this.renderTrailingUnit()}
293
+ </div>
291
294
 
292
- ${this.renderTrailingSource()}
293
- `}
295
+ ${this.renderTrailingSource()}
296
+ `}
297
+ </div>
294
298
  </div>
295
- </div>
296
- `;
299
+ `
300
+ );
297
301
  }
298
302
  };
299
303
  ObcReadoutListItem.styles = unsafeCSS(componentStyle);
@@ -308,7 +312,10 @@ __decorateClass([
308
312
  ], ObcReadoutListItem.prototype, "priority", 2);
309
313
  __decorateClass([
310
314
  property({ type: String })
311
- ], ObcReadoutListItem.prototype, "alertState", 2);
315
+ ], ObcReadoutListItem.prototype, "dataState", 2);
316
+ __decorateClass([
317
+ property({ type: Object })
318
+ ], ObcReadoutListItem.prototype, "alert", 2);
312
319
  __decorateClass([
313
320
  property({ type: String })
314
321
  ], ObcReadoutListItem.prototype, "label", 2);
@@ -365,7 +372,7 @@ ObcReadoutListItem = __decorateClass([
365
372
  ], ObcReadoutListItem);
366
373
  export {
367
374
  ObcReadoutListItem,
368
- ReadoutListItemAlertState,
375
+ ReadoutListItemDataState,
369
376
  ReadoutListItemPriority,
370
377
  ReadoutListItemSize,
371
378
  ReadoutListItemStacking