From 7d9b8eeb68d1f06eab8f5f5ddd3c5d2b1404fc69 Mon Sep 17 00:00:00 2001 From: Home Assistant Version Control Date: Sat, 10 Oct 2026 00:13:34 +0000 Subject: [PATCH] 4 files --- .storage/lovelace_resources | 2 +- .../sensor-bar-card-plus.js | 12655 ++-------------- .../sensor-bar-card-plus.js.gz | Bin 99523 -> 99508 bytes zigbee2mqtt/state.json | 20 +- 4 files changed, 1357 insertions(+), 11320 deletions(-) diff --git a/.storage/lovelace_resources b/.storage/lovelace_resources index 339dd7c8..fcefc76a 100644 --- a/.storage/lovelace_resources +++ b/.storage/lovelace_resources @@ -76,7 +76,7 @@ }, { "id": "3996b960ca1a49cd81de517c5e1b658a", - "url": "/hacsfiles/sensor-bar-card-plus/sensor-bar-card-plus.js?hacstag=1183027678171", + "url": "/hacsfiles/sensor-bar-card-plus/sensor-bar-card-plus.js?hacstag=1183027678180", "type": "module" }, { diff --git a/www/community/sensor-bar-card-plus/sensor-bar-card-plus.js b/www/community/sensor-bar-card-plus/sensor-bar-card-plus.js index f77c0f37..4e7a28b7 100644 --- a/www/community/sensor-bar-card-plus/sensor-bar-card-plus.js +++ b/www/community/sensor-bar-card-plus/sensor-bar-card-plus.js @@ -1,2933 +1,366 @@ -(() => { - var __getOwnPropNames = Object.getOwnPropertyNames; - var __esm = (fn, res, err) => function __init() { - if (err) throw err[0]; - try { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; - } catch (e) { - throw err = [e], e; - } - }; - var __commonJS = (cb, mod) => function __require() { - try { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - } catch (e) { - throw mod = 0, e; - } - }; - - // src/utils/extrema.js - function getLocalBoundaryTimestamp(date, unit) { - if (!(date instanceof Date) || Number.isNaN(date.getTime())) return null; - const year = date.getFullYear(); - const month = date.getMonth(); - const day = date.getDate(); - const hour = date.getHours(); - if (unit === "quarterly") { - return new Date(year, month, day, hour, Math.floor(date.getMinutes() / 15) * 15, 0, 0).getTime(); - } - if (unit === "hourly") { - return new Date(year, month, day, hour, 0, 0, 0).getTime(); - } - if (unit === "daily") { - return new Date(year, month, day, 0, 0, 0, 0).getTime(); - } - if (unit === "weekly") { - const daysSinceMonday = (date.getDay() + 6) % 7; - return new Date(year, month, day - daysSinceMonday, 0, 0, 0, 0).getTime(); - } - if (unit === "monthly") { - return new Date(year, month, 1, 0, 0, 0, 0).getTime(); - } - if (unit === "yearly") { - return new Date(year, 0, 1, 0, 0, 0, 0).getTime(); - } - return null; - } - function normalizeReset(value) { - if (value === void 0) value = "never"; - if (typeof value !== "string") return { kind: "never" }; - const normalized = value.trim().toLowerCase(); - if (normalized === "never") return { kind: "never" }; - if (CALENDAR_RESETS.has(normalized)) { - return { kind: "calendar", unit: normalized }; - } - const durationMatch = normalized.match(/^(\d+)(m|h)$/); - if (!durationMatch) return { kind: "never" }; - const amount = Number(durationMatch[1]); - const unit = durationMatch[2]; - if (!Number.isInteger(amount) || amount < 1 || unit === "m" && amount > 59 || unit === "h" && amount > 23) { - return { kind: "never" }; - } - return unit === "m" ? { kind: "duration", minutes: amount } : { kind: "duration", hours: amount }; - } - function isValidReset(value) { - if (typeof value !== "string") return false; - const normalized = value.trim().toLowerCase(); - if (normalized === "never" || CALENDAR_RESETS.has(normalized)) return true; - const match = normalized.match(/^(\d+)(m|h)$/); - if (!match) return false; - const amount = Number(match[1]); - return Number.isInteger(amount) && amount >= 1 && (match[2] === "m" ? amount <= 59 : amount <= 23); - } - function getResetWindowKey(reset, timestamp) { - if ((reset == null ? void 0 : reset.kind) !== "calendar") return null; - const boundary = getLocalBoundaryTimestamp(new Date(timestamp), reset.unit); - return Number.isFinite(boundary) ? String(boundary) : null; - } - function getDurationMs(reset) { - if ((reset == null ? void 0 : reset.kind) !== "duration") return null; - if (Number.isInteger(reset.minutes)) return reset.minutes * 60 * 1e3; - if (Number.isInteger(reset.hours)) return reset.hours * 60 * 60 * 1e3; - return null; - } - function initializeExtremum(sample, reset, timestamp) { - if ((reset == null ? void 0 : reset.kind) === "duration") { - return { - value: sample, - startedAtMs: Number.isFinite(timestamp) ? timestamp : null, - windowKey: null - }; - } - if ((reset == null ? void 0 : reset.kind) === "calendar") { - return { - value: sample, - startedAtMs: null, - windowKey: getResetWindowKey(reset, timestamp) - }; - } - return { - value: sample, - startedAtMs: null, - windowKey: null - }; - } - function updateExtremum(previous, sample, reset, direction, timestamp) { - if (!Number.isFinite(sample)) return previous != null ? previous : null; - const durationMs = getDurationMs(reset); - if (!previous) return initializeExtremum(sample, reset, timestamp); - if (durationMs !== null && Number.isFinite(previous.startedAtMs) && Number.isFinite(timestamp) && timestamp - previous.startedAtMs >= durationMs) { - return initializeExtremum(sample, reset, timestamp); - } - if ((reset == null ? void 0 : reset.kind) === "calendar") { - const windowKey = getResetWindowKey(reset, timestamp); - if (windowKey !== null && windowKey !== previous.windowKey) { - return initializeExtremum(sample, reset, timestamp); - } - } - const shouldReplace = direction === "min" ? sample < previous.value : sample > previous.value; - return shouldReplace ? { ...previous, value: sample } : previous; - } - var CALENDAR_RESETS; - var init_extrema = __esm({ - "src/utils/extrema.js"() { - CALENDAR_RESETS = /* @__PURE__ */ new Set([ - "quarterly", - "hourly", - "daily", - "weekly", - "monthly", - "yearly" - ]); - } - }); - - // src/config/normalize.js - function normalizeResolvableValue(value, entityValue, percentValue = null) { - const normalized = { - fixed: value != null ? value : null, - entity: entityValue != null ? entityValue : null - }; - if (Number.isFinite(percentValue)) { - normalized.percent = percentValue; - } - return normalized; - } - function looksLikeEntityId(value) { - return typeof value === "string" && /^[a-z0-9_]+\.[a-z0-9_]+$/i.test(value.trim()); - } - function parsePercentLiteral(value) { - if (typeof value !== "string") return null; - const match = value.match(/^\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*%\s*$/); - if (!match) return null; - const percent = parseFloat(match[1]); - return Number.isFinite(percent) ? percent : null; - } - function getFiniteNumber(value) { - if (typeof value === "number") { - return Number.isFinite(value) ? value : null; - } - if (typeof value === "string") { - const trimmed = value.trim(); - if (!trimmed) return null; - const num = Number(trimmed); - return Number.isFinite(num) ? num : null; - } - return null; - } - function normalizeStructuredResolvableValue(input, inheritedResolvable = null, defaultValue = null, options = {}) { - var _a, _b, _c, _d, _e, _f; - const { allowPercent = false } = options; - const inherited = inheritedResolvable != null ? inheritedResolvable : normalizeResolvableValue(defaultValue, null); - if (input === void 0) { - return { ...inherited }; - } - if (input === null) { - return normalizeResolvableValue(null, null); - } - if (typeof input === "object" && !Array.isArray(input)) { - const value = (_b = (_a = input.fixed) != null ? _a : input.value) != null ? _b : null; - const entity = (_c = input.entity) != null ? _c : null; - const percent = allowPercent ? getFiniteNumber(input.percent) : null; - return normalizeResolvableValue(value, entity, percent); - } - if (looksLikeEntityId(input)) { - return normalizeResolvableValue( - (_e = (_d = inherited.fixed) != null ? _d : defaultValue) != null ? _e : null, - input, - (_f = inherited.percent) != null ? _f : null - ); - } - if (allowPercent) { - const percent = parsePercentLiteral(input); - if (Number.isFinite(percent)) { - return normalizeResolvableValue(null, null, percent); - } - } - return normalizeResolvableValue(input, null); - } - function hasConfiguredMarkerSource(source) { - var _a; - return !!source && (getFiniteNumber((_a = source.fixed) != null ? _a : source.value) !== null || Number.isFinite(source.percent) || !!source.entity); - } - function applyGenericMarkerCapacity(markers, config) { - var _a, _b, _c, _d; - const occupied = { - above: ((_a = config == null ? void 0 : config.peak_marker) == null ? void 0 : _a.show) === true ? 1 : 0, - below: (((_b = config == null ? void 0 : config.floor_marker) == null ? void 0 : _b.show) === true ? 1 : 0) + (((_c = config == null ? void 0 : config.target_marker) == null ? void 0 : _c.enabled) !== false && hasConfiguredMarkerSource((_d = config == null ? void 0 : config.target_marker) == null ? void 0 : _d.source) ? 1 : 0) - }; - return markers.map((marker) => { - const accepted = marker.valid && occupied[marker.lane] < 4; - if (accepted) occupied[marker.lane] += 1; - return { ...marker, accepted }; - }); - } - function normalizeGenericMarkerList(input, capacityConfig = null) { - if (!Array.isArray(input)) { - return { markers: [], invalidList: input !== void 0 }; - } - const markers = input.map((rawMarker, index) => { - var _a; - if (!rawMarker || typeof rawMarker !== "object" || Array.isArray(rawMarker)) { - return { id: `generic-${index}`, index, valid: false, accepted: false, malformed: true }; - } - const rawAt = rawMarker.at; - const hasUnsupportedPercentField = rawAt && typeof rawAt === "object" && Object.prototype.hasOwnProperty.call(rawAt, "percent"); - const atInput = typeof rawAt === "string" ? rawAt.trim() : rawAt; - const source = normalizeStructuredResolvableValue(atInput, null, null, { allowPercent: true }); - const explicitEntity = rawAt && typeof rawAt === "object" && rawAt.entity !== void 0 ? rawAt.entity : typeof atInput === "string" && looksLikeEntityId(atInput) ? atInput : null; - const invalidEntity = explicitEntity !== null && explicitEntity !== void 0 && explicitEntity !== "" && !looksLikeEntityId(explicitEntity); - const invalidFixed = rawAt && typeof rawAt === "object" && rawAt.fixed !== void 0 && rawAt.fixed !== null && getFiniteNumber(rawAt.fixed) === null; - const hasSource = !!source.entity || getFiniteNumber(source.fixed) !== null || Number.isFinite(source.percent); - const invalidPercentage = Number.isFinite(source.percent) && (source.percent < 0 || source.percent > 100); - const validSource = rawAt !== void 0 && rawAt !== null && !hasUnsupportedPercentField && !invalidEntity && !invalidFixed && hasSource && !invalidPercentage; - const lane = rawMarker.lane === void 0 ? "below" : rawMarker.lane; - const validLane = lane === "above" || lane === "below"; - const supportedShapes = ["circle", "diamond", "triangle", "chevron", "arrow", "pin"]; - const validShape = rawMarker.shape === void 0 || supportedShapes.includes(rawMarker.shape); - const direction = normalizeMarkerDirection(rawMarker.direction); - const invalidDirection = rawMarker.direction !== void 0 && !["inward", "outward"].includes( - typeof rawMarker.direction === "string" ? rawMarker.direction.trim().toLowerCase() : "" - ); - const label = rawMarker.label && typeof rawMarker.label === "object" && !Array.isArray(rawMarker.label) ? rawMarker.label : {}; - const labelConfig = normalizeMarkerLabelConfig(label); - const labelEntityInput = label.entity; - const labelEntity = typeof labelEntityInput === "string" ? labelEntityInput.trim() : ""; - const invalidLabelEntity = labelEntityInput !== void 0 && labelEntityInput !== null && labelEntityInput !== "" && !looksLikeEntityId(labelEntity); - const validLabelEntity = labelEntity && looksLikeEntityId(labelEntity) ? labelEntity : null; - const showMarker = typeof rawMarker.show_marker === "boolean" ? rawMarker.show_marker : true; - return { - id: `generic-${index}`, - index, - source: { - ...source, - entity: typeof source.entity === "string" ? source.entity.trim() : source.entity - }, - lane: validLane ? lane : null, - shape: validShape ? (_a = rawMarker.shape) != null ? _a : "circle" : "circle", - direction, - invalidDirection, - showMarker, - invalidShowMarker: rawMarker.show_marker !== void 0 && typeof rawMarker.show_marker !== "boolean", - color: typeof rawMarker.color === "string" && rawMarker.color.trim() ? rawMarker.color : "#888888", - label: { - show: label.show === true, - text: labelConfig.label_text, - entity: validLabelEntity, - showValue: labelConfig.label_show_value, - showUnit: labelConfig.label_show_unit, - precision: labelConfig.label_precision, - invalidShow: labelConfig.label_invalid_show, - invalidText: labelConfig.label_invalid_text, - invalidShowValue: labelConfig.label_invalid_show_value, - invalidShowUnit: labelConfig.label_invalid_show_unit, - invalidPrecision: labelConfig.label_invalid_precision, - invalidPrecisionKey: labelConfig.label_precision_key, - unsupportedUnit: labelConfig.label_unsupported_unit, - invalidEntity: invalidLabelEntity - }, - valid: validSource && validLane, - invalidSource: !validSource, - invalidPercentage, - unsupportedPercentField: hasUnsupportedPercentField, - invalidLane: !validLane, - invalidShape: !validShape, - accepted: false - }; - }); - return { markers: applyGenericMarkerCapacity(markers, capacityConfig), invalidList: false }; - } - function normalizeBaselineDirectionConfig(input, inheritedDirection = null) { - var _a; - const inherited = inheritedDirection != null ? inheritedDirection : { color: null }; - if (input === void 0) { - return { ...inherited }; - } - if (input === null) { - return { color: null }; - } - if (typeof input === "object" && !Array.isArray(input)) { - return { - color: (_a = input.color) != null ? _a : null - }; - } - return { - color: input - }; - } - function normalizeOptionalEnabled(value) { - return value === true ? true : value === false ? false : null; - } - function normalizeBaselineConfig(entityConfig, cardConfig) { - var _a; - const cardBaseline = cardConfig == null ? void 0 : cardConfig.baseline; - const rawBaseline = entityConfig == null ? void 0 : entityConfig.baseline; - const inherited = { - enabled: normalizeOptionalEnabled(cardBaseline == null ? void 0 : cardBaseline.enabled), - at: (cardBaseline == null ? void 0 : cardBaseline.at) ? { ...cardBaseline.at } : normalizeResolvableValue(null, null), - above: normalizeBaselineDirectionConfig(void 0, cardBaseline == null ? void 0 : cardBaseline.above), - below: normalizeBaselineDirectionConfig(void 0, cardBaseline == null ? void 0 : cardBaseline.below) - }; - if (rawBaseline === void 0) { - return inherited; - } - if (rawBaseline === null) { - return { - enabled: null, - at: normalizeResolvableValue(null, null), - above: { color: null }, - below: { color: null } - }; - } - if (typeof rawBaseline !== "object" || Array.isArray(rawBaseline)) { - return { - enabled: inherited.enabled, - at: normalizeStructuredResolvableValue(rawBaseline, inherited.at, null), - above: inherited.above, - below: inherited.below - }; - } - return { - enabled: (_a = normalizeOptionalEnabled(rawBaseline.enabled)) != null ? _a : inherited.enabled, - at: normalizeStructuredResolvableValue(rawBaseline.at, inherited.at, null, { allowPercent: true }), - above: normalizeBaselineDirectionConfig(rawBaseline.above, inherited.above), - below: normalizeBaselineDirectionConfig(rawBaseline.below, inherited.below) - }; - } - function inferSegmentEndValues(segments, fallbackEnd = null) { - const sorted = [...segments].sort((a, b) => a.from - b.from); - return sorted.map((segment, index) => { - var _a; - let to = Number.isFinite(segment.to) ? segment.to : null; - if (!Number.isFinite(to) && index < sorted.length - 1) { - to = sorted[index + 1].from; - } - if (!Number.isFinite(to) && Number.isFinite(fallbackEnd)) { - to = fallbackEnd; - } - return { - from: segment.from, - to, - color: segment.color, - label: (_a = segment.label) != null ? _a : null - }; - }); - } - function normalizeSeverityToSegments(input) { - if (!Array.isArray(input)) return null; - const segments = input.filter((segment) => Number.isFinite(segment == null ? void 0 : segment.from) && (segment == null ? void 0 : segment.color)).map((segment) => { - var _a; - return { - from: segment.from, - to: Number.isFinite(segment == null ? void 0 : segment.to) ? segment.to : null, - color: segment.color, - label: (_a = segment.label) != null ? _a : null - }; - }); - return inferSegmentEndValues(segments, 100); - } - function normalizeSegmentBoundary(input, legacySegmentSpace = null) { - var _a; - if (input === void 0) return { value: null, issue: null }; - if (input === null) return { value: null, issue: "malformed" }; - if (input && typeof input === "object" && !Array.isArray(input)) { - if (input.entity !== void 0 && input.entity !== null && input.entity !== "") { - return { value: null, issue: "entity" }; - } - if (Object.prototype.hasOwnProperty.call(input, "percent")) { - const percent = getFiniteNumber(input.percent); - return Number.isFinite(percent) ? { value: normalizeResolvableValue(null, null, percent), issue: null } : { value: null, issue: "malformed" }; - } - const fixed = getFiniteNumber((_a = input.fixed) != null ? _a : input.value); - return Number.isFinite(fixed) ? { value: normalizeResolvableValue(fixed, null), issue: null } : { value: null, issue: "malformed" }; - } - if (typeof input === "string") { - const trimmed = input.trim(); - if (looksLikeEntityId(trimmed)) return { value: null, issue: "entity" }; - if (trimmed.includes("%")) { - const percent = parsePercentLiteral(trimmed); - return Number.isFinite(percent) ? { value: normalizeResolvableValue(null, null, percent), issue: null } : { value: null, issue: "malformed_percent" }; - } - } - const numeric = getFiniteNumber(input); - if (!Number.isFinite(numeric)) return { value: null, issue: "malformed" }; - return legacySegmentSpace === "percent" ? { value: normalizeResolvableValue(null, null, numeric), issue: null } : { value: normalizeResolvableValue(numeric, null), issue: null }; - } - function normalizeGaugeSegments(input, options = {}) { - if (!Array.isArray(input)) return null; - const { legacySegmentSpace = null } = options; - const segments = input.map((segment) => { - var _a, _b; - const from = (segment == null ? void 0 : segment.from) === void 0 ? { value: null, issue: "malformed" } : normalizeSegmentBoundary(segment.from, legacySegmentSpace); - const to = (segment == null ? void 0 : segment.to) === void 0 ? { value: null, issue: null } : segment.to === null ? { value: null, issue: null } : normalizeSegmentBoundary(segment.to, legacySegmentSpace); - if (!(segment == null ? void 0 : segment.color)) { - return null; - } - return { - from: from.value, - to: to.value, - invalidBoundary: (_a = from.issue) != null ? _a : to.issue, - color: segment.color, - label: (_b = segment.label) != null ? _b : null - }; - }).filter(Boolean); - return segments.map((segment, index) => { - var _a; - const nextValid = segments.slice(index + 1).find((candidate) => !candidate.invalidBoundary); - return { - from: segment.from ? { ...segment.from } : null, - to: segment.to ? { ...segment.to } : (nextValid == null ? void 0 : nextValid.from) ? { ...nextValid.from } : null, - ...segment.invalidBoundary ? { invalidBoundary: segment.invalidBoundary } : {}, - color: segment.color, - label: (_a = segment.label) != null ? _a : null - }; - }); - } - function normalizeScaleBound(entityConfig, cardConfig, key, defaultValue) { - var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j; - const cardScale = cardConfig == null ? void 0 : cardConfig.scale; - const entityScale = entityConfig == null ? void 0 : entityConfig.scale; - const entityKey = `${key}_entity`; - const cardBound = cardScale == null ? void 0 : cardScale[key]; - const inherited = cardBound ? normalizeResolvableValue( - (_b = (_a = cardBound.fixed) != null ? _a : cardBound.value) != null ? _b : null, - (_c = cardBound.entity) != null ? _c : null - ) : normalizeResolvableValue( - (_d = cardConfig == null ? void 0 : cardConfig[key]) != null ? _d : defaultValue, - (_e = cardConfig == null ? void 0 : cardConfig[entityKey]) != null ? _e : null - ); - const inheritedFixedExplicit = cardBound ? cardBound.fixed_explicit !== false && cardBound.fixed !== null && cardBound.fixed !== void 0 : (cardConfig == null ? void 0 : cardConfig[key]) !== null && (cardConfig == null ? void 0 : cardConfig[key]) !== void 0; - const withFixedExplicit = (bound, explicit) => { - Object.defineProperty(bound, "fixed_explicit", { value: explicit }); - return bound; - }; - if ((entityScale == null ? void 0 : entityScale[key]) !== void 0) { - const input = entityScale[key]; - const fixedExplicit = looksLikeEntityId(input) ? inheritedFixedExplicit : typeof input === "object" && input !== null ? ((_f = input.fixed) != null ? _f : input.value) !== null && ((_g = input.fixed) != null ? _g : input.value) !== void 0 : input !== null; - return withFixedExplicit(normalizeStructuredResolvableValue( - entityScale[key], - inherited, - defaultValue - ), fixedExplicit); - } - const entityOverride = entityConfig[entityKey]; - const hasEntityOverride = entityOverride !== void 0 && entityOverride !== null; - const value = (_i = (_h = entityConfig[key]) != null ? _h : hasEntityOverride ? null : inherited.fixed) != null ? _i : inherited.entity ? null : defaultValue; - const entity = (_j = entityOverride != null ? entityOverride : inherited.entity) != null ? _j : null; - return withFixedExplicit( - normalizeResolvableValue(value, entity), - entityConfig[key] !== null && entityConfig[key] !== void 0 || !hasEntityOverride && inheritedFixedExplicit - ); - } - function normalizeScaleConfig(entityConfig, cardConfig) { - return { - min: normalizeScaleBound(entityConfig, cardConfig, "min", 0), - max: normalizeScaleBound(entityConfig, cardConfig, "max", 100) - }; - } - function fillStyleToColorMode(fillStyle) { - switch (fillStyle) { - case "solid": - return "single"; - case "gradient": - return "gradient"; - case "bands": - return "severity"; - case "soft_bands": - return "severity"; - case "band_gradient": - return "severity_gradient"; - default: - return null; - } - } - function colorModeToFillStyle(colorMode) { - switch (colorMode) { - case "single": - return "solid"; - case "gradient": - return "gradient"; - case "severity": - return "bands"; - case "severity_gradient": - return "band_gradient"; - default: - return null; - } - } - function hasOwnConfigValue(config, key) { - return config !== null && config !== void 0 && Object.prototype.hasOwnProperty.call(config, key); - } - function hasExplicitColor(config) { - const values = [ - hasOwnConfigValue(config, "color") ? config.color : void 0, - hasOwnConfigValue(config == null ? void 0 : config.bar, "color") ? config.bar.color : void 0 - ]; - return values.some((value) => value !== void 0 && value !== null); - } - function getPaintExplicitness(config) { - const bar = config == null ? void 0 : config.bar; - const explicitPaintKeys = [ - [config, "color_mode"], - [bar, "color_mode"], - [bar, "fill_style"], - [config, "severity"], - [config, "segments"], - [bar, "segments"], - [config, "gradient_stops"], - [bar, "gradient_stops"], - [bar, "solid_fill"] - ]; - return { - color: hasExplicitColor(config), - paint: explicitPaintKeys.some(([source, key]) => hasOwnConfigValue(source, key)) - }; - } - function normalizeBarModeConfig(barConfig = null, flatColorMode = null) { - var _a, _b, _c, _d, _e, _f; - const fillStyle = (_a = barConfig == null ? void 0 : barConfig.fill_style) != null ? _a : null; - const colorMode = (_c = (_b = barConfig == null ? void 0 : barConfig.color_mode) != null ? _b : flatColorMode) != null ? _c : null; - const normalizedColorMode = (_e = (_d = fillStyleToColorMode(fillStyle)) != null ? _d : colorMode) != null ? _e : "severity"; - return { - fill_style: (_f = fillStyle != null ? fillStyle : colorModeToFillStyle(normalizedColorMode)) != null ? _f : "bands", - color_mode: normalizedColorMode - }; - } - function resolveNormalizedBarMode(entityBar, entityConfig, cardBar, cardConfig, { scopeExplicitness = null, inheritedExplicitness = null, isCardScope = false } = {}) { - const colorOnlyScope = (scopeExplicitness == null ? void 0 : scopeExplicitness.color) === true && scopeExplicitness.paint !== true; - const inheritedPaintIsExplicit = (inheritedExplicitness == null ? void 0 : inheritedExplicitness.paint) === true; - if (colorOnlyScope && (isCardScope || !inheritedPaintIsExplicit)) { - return normalizeBarModeConfig({ fill_style: "solid" }, null); - } - if ((entityBar == null ? void 0 : entityBar.fill_style) !== void 0 || (entityBar == null ? void 0 : entityBar.color_mode) !== void 0 || entityConfig.color_mode !== void 0) { - return normalizeBarModeConfig(entityBar, entityConfig.color_mode); - } - if ((cardBar == null ? void 0 : cardBar.fill_style) !== void 0 || (cardBar == null ? void 0 : cardBar.color_mode) !== void 0 || (cardConfig == null ? void 0 : cardConfig.color_mode) !== void 0) { - return normalizeBarModeConfig(cardBar, cardConfig == null ? void 0 : cardConfig.color_mode); - } - return normalizeBarModeConfig(null, null); - } - function normalizeGradientStops(input) { - if (!Array.isArray(input)) return input != null ? input : null; - return input.map((stop) => { - if (!stop || typeof stop !== "object" || Array.isArray(stop)) { - return stop; - } - const percentPos = parsePercentLiteral(stop.pos); - const numericPos = Number.isFinite(percentPos) ? percentPos : getFiniteNumber(stop.pos); - return { - ...stop, - pos: Number.isFinite(numericPos) ? numericPos : stop.pos - }; - }); - } - function normalizeNeedleConfig(input, inheritedNeedle = null) { - var _a, _b, _c, _d; - const base = inheritedNeedle ? { show: (_a = inheritedNeedle.show) != null ? _a : false, color: (_b = inheritedNeedle.color) != null ? _b : "#ffffff" } : { show: false, color: "#ffffff" }; - if (input === void 0) { - return { ...base }; - } - if (typeof input === "boolean") { - return { - show: input, - color: "#ffffff" - }; - } - if (input && typeof input === "object" && !Array.isArray(input)) { - return { - show: (_c = input.show) != null ? _c : base.show, - color: (_d = input.color) != null ? _d : base.color - }; - } - return { ...base }; - } - function normalizeBarConfig(entityConfig, cardConfig, options = {}) { - var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A; - const scopeExplicitness = (_a = options.scopeExplicitness) != null ? _a : getPaintExplicitness(entityConfig); - const inheritedExplicitness = (_c = (_b = options.inheritedExplicitness) != null ? _b : cardConfig == null ? void 0 : cardConfig[PAINT_EXPLICITNESS]) != null ? _c : getPaintExplicitness(cardConfig); - const isCardScope = (_d = options.isCardScope) != null ? _d : cardConfig == null; - const cardBar = cardConfig == null ? void 0 : cardConfig.bar; - const entityBar = entityConfig == null ? void 0 : entityConfig.bar; - const inheritedSegmentSpace = hasOwnConfigValue(cardBar, EXPLICIT_SEGMENT_SPACE) ? cardBar[EXPLICIT_SEGMENT_SPACE] : ["percent", "scale"].includes(cardBar == null ? void 0 : cardBar.segment_space) ? cardBar.segment_space : null; - const explicitSegmentSpace = ["percent", "scale"].includes(entityBar == null ? void 0 : entityBar.segment_space) ? entityBar.segment_space : inheritedSegmentSpace; - const entityStructuredSegments = entityBar == null ? void 0 : entityBar.segments; - const entityTopLevelSegments = entityConfig.segments; - const entityLegacySeverity = entityConfig.severity; - const cardStructuredSegments = (_e = cardBar == null ? void 0 : cardBar.segments) != null ? _e : null; - const cardTopLevelSegments = (_f = cardConfig == null ? void 0 : cardConfig.segments) != null ? _f : null; - const cardLegacySeverity = (_g = cardConfig == null ? void 0 : cardConfig.severity) != null ? _g : null; - let segments = null; - let segment_space = (cardBar == null ? void 0 : cardBar.segment_space) === "percent" || (cardBar == null ? void 0 : cardBar.segment_space) === "scale" ? cardBar.segment_space : null; - if (entityStructuredSegments !== void 0 && entityStructuredSegments !== null) { - segment_space = explicitSegmentSpace; - segments = normalizeGaugeSegments(entityStructuredSegments, { legacySegmentSpace: segment_space }); - } else if (entityTopLevelSegments !== void 0 && entityTopLevelSegments !== null) { - segments = normalizeGaugeSegments(entityTopLevelSegments); - } else if (entityLegacySeverity !== void 0 && entityLegacySeverity !== null) { - segments = normalizeSeverityToSegments(entityLegacySeverity); - segment_space = "percent"; - } else if (cardStructuredSegments !== null && cardStructuredSegments !== void 0) { - segments = cardStructuredSegments.map((segment) => ({ ...segment })); - } else if (cardTopLevelSegments !== null && cardTopLevelSegments !== void 0) { - segments = normalizeGaugeSegments(cardTopLevelSegments); - } else if (cardLegacySeverity !== null && cardLegacySeverity !== void 0) { - segments = normalizeSeverityToSegments(cardLegacySeverity); - segment_space = "percent"; - } - const structuredAboveTargetColor = (entityConfig == null ? void 0 : entityConfig.target) && typeof entityConfig.target === "object" && !Array.isArray(entityConfig.target) ? (_h = entityConfig.target.when_exceeded) == null ? void 0 : _h.fill_color : void 0; - const inheritedStructuredAboveTargetColor = (cardConfig == null ? void 0 : cardConfig.target) && typeof cardConfig.target === "object" && !Array.isArray(cardConfig.target) ? (_i = cardConfig.target.when_exceeded) == null ? void 0 : _i.fill_color : void 0; - const normalizedMode = resolveNormalizedBarMode( - entityBar, - entityConfig, - cardBar, - cardConfig, - { scopeExplicitness, inheritedExplicitness, isCardScope } - ); - const normalizedBar = { - fill_style: normalizedMode.fill_style, - color_mode: normalizedMode.color_mode, - needle: normalizeNeedleConfig(entityBar == null ? void 0 : entityBar.needle, cardBar == null ? void 0 : cardBar.needle), - solid_fill: (_k = (_j = entityBar == null ? void 0 : entityBar.solid_fill) != null ? _j : cardBar == null ? void 0 : cardBar.solid_fill) != null ? _k : false, - color: (_o = (_n = (_m = (_l = entityBar == null ? void 0 : entityBar.color) != null ? _l : entityConfig.color) != null ? _m : cardBar == null ? void 0 : cardBar.color) != null ? _n : cardConfig == null ? void 0 : cardConfig.color) != null ? _o : "#4a9eff", - gradient_stops: normalizeGradientStops( - (_s = (_r = (_q = (_p = entityBar == null ? void 0 : entityBar.gradient_stops) != null ? _p : entityConfig.gradient_stops) != null ? _q : cardBar == null ? void 0 : cardBar.gradient_stops) != null ? _r : cardConfig == null ? void 0 : cardConfig.gradient_stops) != null ? _s : null - ), - severity: segments, - segments, - segment_space, - animated: (_w = (_v = (_u = (_t = entityBar == null ? void 0 : entityBar.animated) != null ? _t : entityConfig.animated) != null ? _u : cardBar == null ? void 0 : cardBar.animated) != null ? _v : cardConfig == null ? void 0 : cardConfig.animated) != null ? _w : true, - above_target_color: (_A = (_z = (_y = (_x = structuredAboveTargetColor != null ? structuredAboveTargetColor : entityConfig.above_target_color) != null ? _x : cardBar == null ? void 0 : cardBar.above_target_color) != null ? _y : inheritedStructuredAboveTargetColor) != null ? _z : cardConfig == null ? void 0 : cardConfig.above_target_color) != null ? _A : null - }; - Object.defineProperty(normalizedBar, EXPLICIT_SEGMENT_SPACE, { value: explicitSegmentSpace }); - return normalizedBar; - } - function clampSupportedRowHeight(height) { - return Math.max(24, height); - } - function normalizeLabelPosition(position, fallback = "left") { - const normalized = typeof position === "string" ? position.trim().toLowerCase() : ""; - return ["left", "above", "inside", "off", "hero"].includes(normalized) ? normalized : fallback; - } - function normalizeHeroSize(size, fallback = "medium") { - const normalized = typeof size === "string" ? size.trim().toLowerCase() : ""; - return ["small", "medium", "large"].includes(normalized) ? normalized : fallback; - } - function normalizeHeroFontSize(value) { - if (!Number.isFinite(value)) return null; - return Math.min(112, Math.max(12, value)); - } - function normalizeLayoutConfig(entityConfig, cardConfig) { - var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y; - const cardLayout = cardConfig == null ? void 0 : cardConfig.layout; - const entityLayout = entityConfig == null ? void 0 : entityConfig.layout; - const entityLabel = entityLayout == null ? void 0 : entityLayout.label; - const entityHero = entityLayout == null ? void 0 : entityLayout.hero; - const cardLabel = cardLayout == null ? void 0 : cardLayout.label; - const cardHero = cardLayout == null ? void 0 : cardLayout.hero; - const isCardLevelNormalization = !cardConfig; - const rawHeight = (_d = (_c = (_b = (_a = entityLayout == null ? void 0 : entityLayout.height) != null ? _a : entityConfig.height) != null ? _b : cardLayout == null ? void 0 : cardLayout.height) != null ? _c : cardConfig == null ? void 0 : cardConfig.height) != null ? _d : 38; - const heightExplicit = (entityLayout == null ? void 0 : entityLayout.height) !== void 0 || entityConfig._height_explicit === true || !isCardLevelNormalization && entityConfig.height !== void 0 || (cardLayout == null ? void 0 : cardLayout.height_explicit) === true || (cardConfig == null ? void 0 : cardConfig._height_explicit) === true; - const labelPosition = normalizeLabelPosition( - (_h = (_g = (_f = (_e = entityLabel == null ? void 0 : entityLabel.position) != null ? _e : entityConfig.label_position) != null ? _f : cardLabel == null ? void 0 : cardLabel.position) != null ? _g : cardLayout == null ? void 0 : cardLayout.label_position) != null ? _h : cardConfig == null ? void 0 : cardConfig.label_position, - "left" - ); - const heroFontSize = labelPosition === "hero" ? normalizeHeroFontSize((_i = entityHero == null ? void 0 : entityHero.value_size) != null ? _i : cardHero == null ? void 0 : cardHero.value_size) : null; - return { - label: { - position: labelPosition, - width: (_n = (_m = (_l = (_k = (_j = entityLabel == null ? void 0 : entityLabel.width) != null ? _j : entityConfig.label_width) != null ? _k : cardLabel == null ? void 0 : cardLabel.width) != null ? _l : cardLayout == null ? void 0 : cardLayout.label_width) != null ? _m : cardConfig == null ? void 0 : cardConfig.label_width) != null ? _n : 100 - }, - hero: { - size: normalizeHeroSize( - (_y = (_x = (_w = (_v = (_u = (_t = (_s = (_r = (_q = (_p = (_o = entityHero == null ? void 0 : entityHero.size) != null ? _o : entityLabel == null ? void 0 : entityLabel.hero_size) != null ? _p : entityLabel == null ? void 0 : entityLabel.heroSize) != null ? _q : entityConfig.hero_size) != null ? _r : entityConfig.heroSize) != null ? _s : cardHero == null ? void 0 : cardHero.size) != null ? _t : cardLabel == null ? void 0 : cardLabel.hero_size) != null ? _u : cardLabel == null ? void 0 : cardLabel.heroSize) != null ? _v : cardLayout == null ? void 0 : cardLayout.hero_size) != null ? _w : cardLayout == null ? void 0 : cardLayout.heroSize) != null ? _x : cardConfig == null ? void 0 : cardConfig.hero_size) != null ? _y : cardConfig == null ? void 0 : cardConfig.heroSize, - "medium" - ), - value_size: heroFontSize - }, - height: clampSupportedRowHeight(rawHeight), - height_explicit: heightExplicit - }; - } - function normalizeFormattingConfig(entityConfig, cardConfig) { - var _a, _b, _c, _d, _e, _f, _g, _h; - const cardFormatting = cardConfig == null ? void 0 : cardConfig.formatting; - const entityFormatting = entityConfig == null ? void 0 : entityConfig.formatting; - return { - decimal: (_d = (_c = (_b = (_a = entityFormatting == null ? void 0 : entityFormatting.decimal) != null ? _a : entityConfig.decimal) != null ? _b : cardFormatting == null ? void 0 : cardFormatting.decimal) != null ? _c : cardConfig == null ? void 0 : cardConfig.decimal) != null ? _d : null, - unit: (_h = (_g = (_f = (_e = entityFormatting == null ? void 0 : entityFormatting.unit) != null ? _e : entityConfig.unit) != null ? _f : cardFormatting == null ? void 0 : cardFormatting.unit) != null ? _g : cardConfig == null ? void 0 : cardConfig.unit) != null ? _h : null - }; - } - function normalizeTargetMarkerShape(value) { - const normalized = String(value != null ? value : "").trim().toLowerCase(); - return normalized === "triangle" || normalized === "diamond" ? normalized : "diamond"; - } - function normalizeMarkerDirection(value) { - const normalized = typeof value === "string" ? value.trim().toLowerCase() : ""; - return normalized === "outward" ? "outward" : "inward"; - } - function normalizeMarkerLabelConfig(rawLabel, inherited = {}) { - var _a, _b, _c; - const label = rawLabel && typeof rawLabel === "object" && !Array.isArray(rawLabel) ? rawLabel : {}; - const hasText = Object.prototype.hasOwnProperty.call(label, "text"); - const textValue = hasText ? typeof label.text === "string" ? label.text.replace(/\s+/g, " ").trim() : inherited.label_text : inherited.label_text; - const hasPrecision = Object.prototype.hasOwnProperty.call(label, "precision"); - const hasDecimal = Object.prototype.hasOwnProperty.call(label, "decimal"); - const precisionValue = hasPrecision ? label.precision : label.decimal; - const precisionSet = hasPrecision || hasDecimal; - const precision = precisionSet ? getFiniteNumber(precisionValue) : (_a = inherited.label_precision) != null ? _a : null; - const precisionInvalid = precisionSet && precisionValue !== null && precisionValue !== "" && !(Number.isInteger(precision) && precision >= 0); - return { - label_text: textValue != null ? textValue : null, - label_show_value: typeof label.show_value === "boolean" ? label.show_value : (_b = inherited.label_show_value) != null ? _b : true, - label_show_unit: typeof label.show_unit === "boolean" ? label.show_unit : (_c = inherited.label_show_unit) != null ? _c : true, - label_precision: precisionInvalid ? null : precision, - label_invalid_show: label.show !== void 0 && typeof label.show !== "boolean", - label_invalid_text: hasText && typeof label.text !== "string", - label_invalid_show_value: label.show_value !== void 0 && typeof label.show_value !== "boolean", - label_invalid_show_unit: label.show_unit !== void 0 && typeof label.show_unit !== "boolean", - label_invalid_precision: precisionInvalid, - label_precision_key: precisionInvalid ? hasPrecision ? "precision" : "decimal" : void 0, - label_unsupported_unit: Object.prototype.hasOwnProperty.call(label, "unit") - }; - } - function builtinMarkerLabelFields(options) { - const fields = {}; - if (options.label_text !== null && options.label_text !== void 0) fields.label_text = options.label_text; - if (options.label_show_value === false) fields.label_show_value = false; - if (options.label_show_unit === false) fields.label_show_unit = false; - if (options.label_precision !== null && options.label_precision !== void 0) fields.label_precision = options.label_precision; - if (options.label_invalid_text) fields.label_invalid_text = true; - if (options.label_invalid_show_value) fields.label_invalid_show_value = true; - if (options.label_invalid_show_unit) fields.label_invalid_show_unit = true; - if (options.label_invalid_show) fields.label_invalid_show = true; - if (options.label_invalid_precision) fields.label_invalid_precision = true; - if (options.label_invalid_precision && options.label_precision_key) fields.label_precision_key = options.label_precision_key; - if (options.label_unsupported_unit) fields.label_unsupported_unit = true; - return fields; - } - function isInvalidMarkerDirection(value) { - return value !== void 0 && !["inward", "outward"].includes( - typeof value === "string" ? value.trim().toLowerCase() : "" - ); - } - function normalizeTargetMarkerConfig(entityConfig, cardConfig) { - var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I; - const cardTarget = cardConfig == null ? void 0 : cardConfig.target_marker; - const rawTarget = entityConfig == null ? void 0 : entityConfig.target; - const legacyCardTarget = (cardConfig == null ? void 0 : cardConfig.target) && typeof cardConfig.target === "object" && !Array.isArray(cardConfig.target) ? null : (_a = cardConfig == null ? void 0 : cardConfig.target) != null ? _a : null; - const inheritedTarget = cardTarget ? { - ...cardTarget, - shape: normalizeTargetMarkerShape(cardTarget.shape), - direction: normalizeMarkerDirection(cardTarget.direction) - } : { - enabled: null, - source: normalizeResolvableValue(null, null), - color: (_b = cardConfig == null ? void 0 : cardConfig.target_color) != null ? _b : "#888", - show_label: (_c = cardConfig == null ? void 0 : cardConfig.show_target_label) != null ? _c : false, - ...builtinMarkerLabelFields(normalizeMarkerLabelConfig((_d = cardConfig == null ? void 0 : cardConfig.target) == null ? void 0 : _d.label)), - label_decimal: (_j = (_i = (_f = (_e = cardConfig == null ? void 0 : cardConfig.target) == null ? void 0 : _e.label) == null ? void 0 : _f.precision) != null ? _i : (_h = (_g = cardConfig == null ? void 0 : cardConfig.target) == null ? void 0 : _g.label) == null ? void 0 : _h.decimal) != null ? _j : null, - shape: "diamond", - direction: "inward" - }; - if (rawTarget && typeof rawTarget === "object" && !Array.isArray(rawTarget)) { - const labelOptions = normalizeMarkerLabelConfig(rawTarget.label, inheritedTarget); - const normalizedTarget2 = { - enabled: (_l = (_k = normalizeOptionalEnabled(rawTarget.enabled)) != null ? _k : inheritedTarget.enabled) != null ? _l : null, - source: normalizeStructuredResolvableValue(rawTarget.at, inheritedTarget.source, null, { allowPercent: true }), - color: (_n = (_m = rawTarget.color) != null ? _m : entityConfig.target_color) != null ? _n : inheritedTarget.color, - show_label: (_q = (_p = (_o = rawTarget.label) == null ? void 0 : _o.show) != null ? _p : entityConfig.show_target_label) != null ? _q : inheritedTarget.show_label, - shape: Object.prototype.hasOwnProperty.call(rawTarget, "shape") ? normalizeTargetMarkerShape(rawTarget.shape) : inheritedTarget.shape, - direction: Object.prototype.hasOwnProperty.call(rawTarget, "direction") ? normalizeMarkerDirection(rawTarget.direction) : inheritedTarget.direction, - ...isInvalidMarkerDirection(rawTarget.direction) ? { direction_invalid: true } : {}, - ...builtinMarkerLabelFields(labelOptions) - }; - const labelDecimal2 = labelOptions.label_precision; - if (labelDecimal2 !== null && labelDecimal2 !== void 0) { - normalizedTarget2.label_decimal = labelDecimal2; - normalizedTarget2.label_precision = labelDecimal2; - } - return normalizedTarget2; - } - const value = (_v = (_u = (_s = entityConfig.target) != null ? _s : (_r = inheritedTarget.source) == null ? void 0 : _r.fixed) != null ? _u : (_t = inheritedTarget.source) == null ? void 0 : _t.value) != null ? _v : legacyCardTarget; - const entity = (_z = (_y = (_x = entityConfig.target_entity) != null ? _x : (_w = inheritedTarget.source) == null ? void 0 : _w.entity) != null ? _y : cardConfig == null ? void 0 : cardConfig.target_entity) != null ? _z : null; - const percent = entityConfig.target === void 0 && entityConfig.target_entity === void 0 ? (_B = (_A = inheritedTarget.source) == null ? void 0 : _A.percent) != null ? _B : null : null; - const normalizedTarget = { - enabled: (_C = inheritedTarget.enabled) != null ? _C : null, - source: normalizeResolvableValue(value, entity, percent), - color: (_F = (_E = (_D = entityConfig.target_color) != null ? _D : inheritedTarget.color) != null ? _E : cardConfig == null ? void 0 : cardConfig.target_color) != null ? _F : "#888", - show_label: (_I = (_H = (_G = entityConfig.show_target_label) != null ? _G : inheritedTarget.show_label) != null ? _H : cardConfig == null ? void 0 : cardConfig.show_target_label) != null ? _I : false, - shape: inheritedTarget.shape, - direction: inheritedTarget.direction, - ...builtinMarkerLabelFields(inheritedTarget) - }; - const labelDecimal = normalizedTarget.label_precision; - if (labelDecimal !== null && labelDecimal !== void 0) { - normalizedTarget.label_decimal = labelDecimal; - } - return normalizedTarget; - } - function getRawExtremumConfig(config, key) { - const value = config == null ? void 0 : config[key]; - if (value && typeof value === "object" && !Array.isArray(value)) return value; - const markerValue = config == null ? void 0 : config[`${key}_marker`]; - return markerValue && typeof markerValue === "object" && !Array.isArray(markerValue) ? markerValue : null; - } - function normalizeLabelConfig(rawConfig, inheritedConfig) { - var _a, _b, _c; - const rawLabel = rawConfig == null ? void 0 : rawConfig.label; - const hasRawLabel = rawLabel && typeof rawLabel === "object" && !Array.isArray(rawLabel); - const options = normalizeMarkerLabelConfig(rawLabel, inheritedConfig); - return { - show: hasRawLabel && typeof rawLabel.show === "boolean" ? rawLabel.show : (_a = inheritedConfig.show_label) != null ? _a : false, - text: options.label_text, - invalidShow: options.label_invalid_show, - showValue: options.label_show_value, - showUnit: options.label_show_unit, - precision: options.label_invalid_precision ? null : (_c = (_b = options.label_precision) != null ? _b : inheritedConfig.label_decimal) != null ? _c : null, - invalidText: options.label_invalid_text, - invalidShowValue: options.label_invalid_show_value, - invalidShowUnit: options.label_invalid_show_unit, - invalidPrecision: options.label_invalid_precision, - precisionKey: options.label_precision_key, - unsupportedUnit: options.label_unsupported_unit - }; - } - function normalizeExtremumMarkerConfig(entityConfig, cardConfig, key, options = {}) { - var _a, _b, _c, _d, _e, _f, _g, _h, _i; - const { legacy = false, defaultColor = "#888888" } = options; - const cardMarker = cardConfig == null ? void 0 : cardConfig[`${key}_marker`]; - const rawMarker = getRawExtremumConfig(entityConfig, key); - const inherited = cardMarker != null ? cardMarker : { - show: legacy ? (_a = cardConfig == null ? void 0 : cardConfig.show_peak) != null ? _a : false : false, - color: legacy ? (_b = cardConfig == null ? void 0 : cardConfig.peak_color) != null ? _b : defaultColor : defaultColor, - show_label: false, - label_decimal: null, - label_text: null, - label_show_value: true, - label_show_unit: true, - label_precision: null, - reset: { kind: "never" }, - direction: "inward" - }; - const hasReset = rawMarker && Object.prototype.hasOwnProperty.call(rawMarker, "reset"); - const rawReset = hasReset ? rawMarker.reset : void 0; - const reset = hasReset ? normalizeReset(rawReset) : (_c = inherited.reset) != null ? _c : { kind: "never" }; - const rawLabel = rawMarker == null ? void 0 : rawMarker.label; - const label = normalizeLabelConfig(rawMarker, inherited); - const normalized = { - show: (_f = (_e = (_d = rawMarker == null ? void 0 : rawMarker.enabled) != null ? _d : legacy ? entityConfig.show_peak : void 0) != null ? _e : inherited.show) != null ? _f : false, - color: (_i = (_h = (_g = rawMarker == null ? void 0 : rawMarker.color) != null ? _g : legacy ? entityConfig.peak_color : void 0) != null ? _h : inherited.color) != null ? _i : defaultColor, - direction: rawMarker && Object.prototype.hasOwnProperty.call(rawMarker, "direction") ? normalizeMarkerDirection(rawMarker.direction) : normalizeMarkerDirection(inherited.direction), - ...isInvalidMarkerDirection(rawMarker == null ? void 0 : rawMarker.direction) ? { direction_invalid: true } : {} - }; - const inheritedAdvanced = cardMarker && (Object.prototype.hasOwnProperty.call(cardMarker, "show_label") || Object.prototype.hasOwnProperty.call(cardMarker, "label_decimal") || Object.prototype.hasOwnProperty.call(cardMarker, "label_text") || Object.prototype.hasOwnProperty.call(cardMarker, "label_show_value") || Object.prototype.hasOwnProperty.call(cardMarker, "label_show_unit") || Object.prototype.hasOwnProperty.call(cardMarker, "label_precision") || Object.prototype.hasOwnProperty.call(cardMarker, "reset")); - const hasAdvancedConfig = key === "floor" || hasReset || rawLabel !== void 0 || inheritedAdvanced; - if (hasAdvancedConfig) { - normalized.show_label = label.show; - normalized.label_decimal = label.precision; - normalized.reset = reset; - } - Object.assign(normalized, builtinMarkerLabelFields({ - label_text: label.text, - label_show_value: label.showValue === true ? void 0 : label.showValue, - label_show_unit: label.showUnit === true ? void 0 : label.showUnit, - label_precision: label.precision, - label_invalid_text: label.invalidText, - label_invalid_show: label.invalidShow, - label_invalid_show_value: label.invalidShowValue, - label_invalid_show_unit: label.invalidShowUnit, - label_invalid_precision: label.invalidPrecision, - label_precision_key: label.precisionKey, - label_unsupported_unit: label.unsupportedUnit - })); - if (hasReset && !isValidReset(rawReset)) { - normalized.reset_invalid = true; - } - return normalized; - } - function normalizePeakMarkerConfig(entityConfig, cardConfig) { - return normalizeExtremumMarkerConfig(entityConfig, cardConfig, "peak", { legacy: true, defaultColor: "#888888" }); - } - function normalizeFloorMarkerConfig(entityConfig, cardConfig) { - return normalizeExtremumMarkerConfig(entityConfig, cardConfig, "floor", { defaultColor: "#888888" }); - } - function normalizeEntityConfig(entityConfig, cardConfig) { - var _a, _b, _c; - const normalizedEntity = { - ...entityConfig, - _normalized: true, - entity: entityConfig.entity, - name: (_a = entityConfig.name) != null ? _a : null, - icon: entityConfig.icon - }; - normalizedEntity.layout = normalizeLayoutConfig(entityConfig, cardConfig); - normalizedEntity.scale = normalizeScaleConfig(entityConfig, cardConfig); - normalizedEntity.bar = normalizeBarConfig(entityConfig, cardConfig, { - scopeExplicitness: getPaintExplicitness(entityConfig), - inheritedExplicitness: (_b = cardConfig == null ? void 0 : cardConfig[PAINT_EXPLICITNESS]) != null ? _b : getPaintExplicitness(cardConfig), - isCardScope: false - }); - normalizedEntity.baseline = normalizeBaselineConfig(entityConfig, cardConfig); - normalizedEntity.formatting = normalizeFormattingConfig(entityConfig, cardConfig); - normalizedEntity.target_marker = normalizeTargetMarkerConfig(entityConfig, cardConfig); - normalizedEntity.peak_marker = normalizePeakMarkerConfig(entityConfig, cardConfig); - normalizedEntity.floor_marker = normalizeFloorMarkerConfig(entityConfig, cardConfig); - const normalizedMarkers = entityConfig.markers === void 0 ? { - markers: applyGenericMarkerCapacity((_c = cardConfig == null ? void 0 : cardConfig.generic_markers) != null ? _c : [], normalizedEntity), - invalidList: (cardConfig == null ? void 0 : cardConfig.generic_markers_invalid) === true - } : normalizeGenericMarkerList(entityConfig.markers, normalizedEntity); - normalizedEntity.generic_markers = normalizedMarkers.markers; - normalizedEntity.generic_markers_invalid = normalizedMarkers.invalidList; - normalizedEntity.min = normalizedEntity.scale.min.fixed; - normalizedEntity.min_entity = normalizedEntity.scale.min.entity; - normalizedEntity.max = normalizedEntity.scale.max.fixed; - normalizedEntity.max_entity = normalizedEntity.scale.max.entity; - normalizedEntity.height = normalizedEntity.layout.height; - normalizedEntity.label_position = normalizedEntity.layout.label.position; - normalizedEntity.label_width = normalizedEntity.layout.label.width; - normalizedEntity.color_mode = normalizedEntity.bar.color_mode; - normalizedEntity.fill_style = normalizedEntity.bar.fill_style; - normalizedEntity.solid_fill = normalizedEntity.bar.solid_fill; - normalizedEntity.color = normalizedEntity.bar.color; - normalizedEntity.gradient_stops = normalizedEntity.bar.gradient_stops; - normalizedEntity.severity = normalizedEntity.bar.severity; - normalizedEntity.animated = normalizedEntity.bar.animated; - normalizedEntity.above_target_color = normalizedEntity.bar.above_target_color; - normalizedEntity.decimal = normalizedEntity.formatting.decimal; - normalizedEntity.unit = normalizedEntity.formatting.unit; - normalizedEntity.target = normalizedEntity.target_marker.source.fixed; - normalizedEntity.target_entity = normalizedEntity.target_marker.source.entity; - normalizedEntity.target_color = normalizedEntity.target_marker.color; - normalizedEntity.show_target_label = normalizedEntity.target_marker.show_label; - normalizedEntity.show_peak = normalizedEntity.peak_marker.show; - normalizedEntity.peak_color = normalizedEntity.peak_marker.color; - return normalizedEntity; - } - function normalizeCardConfig(rawConfig) { - var _a; - const cardPaintExplicitness = getPaintExplicitness(rawConfig); - const baseConfig = { - title: "", - label_position: "left", - color_mode: "severity", - color: "#4a9eff", - animated: true, - show_peak: false, - peak_color: "#888888", - target: null, - target_entity: null, - target_color: "#888", - show_target_label: false, - above_target_color: null, - baseline: null, - decimal: null, - gradient_stops: null, - min: 0, - min_entity: null, - max: 100, - max_entity: null, - height: 38, - label_width: 100, - severity: [ - { from: 0, to: 33, color: "#4CAF50" }, - { from: 33, to: 75, color: "#FF9800" }, - { from: 75, to: 100, color: "#F44336" } - ], - ...rawConfig - }; - baseConfig._height_explicit = ((_a = rawConfig == null ? void 0 : rawConfig.layout) == null ? void 0 : _a.height) !== void 0 || (rawConfig == null ? void 0 : rawConfig.height) !== void 0; - if (baseConfig.entity && !baseConfig.entities) { - baseConfig.entities = [{ - entity: baseConfig.entity, - ...baseConfig.name !== void 0 ? { name: baseConfig.name } : {} - }]; - } - baseConfig.entities = baseConfig.entities.map( - (e) => typeof e === "string" ? { entity: e } : e - ); - const normalizedCard = { - ...baseConfig, - _normalized: true - }; - Object.defineProperty(normalizedCard, PAINT_EXPLICITNESS, { - value: cardPaintExplicitness, - enumerable: false - }); - normalizedCard.layout = normalizeLayoutConfig(baseConfig, null); - normalizedCard.scale = normalizeScaleConfig(rawConfig, null); - normalizedCard.bar = normalizeBarConfig(baseConfig, null, { - scopeExplicitness: cardPaintExplicitness, - inheritedExplicitness: null, - isCardScope: true - }); - normalizedCard.baseline = normalizeBaselineConfig(baseConfig, null); - normalizedCard.formatting = normalizeFormattingConfig(baseConfig, null); - normalizedCard.target_marker = normalizeTargetMarkerConfig(baseConfig, null); - normalizedCard.peak_marker = normalizePeakMarkerConfig(baseConfig, null); - normalizedCard.floor_marker = normalizeFloorMarkerConfig(baseConfig, null); - const normalizedMarkers = normalizeGenericMarkerList(baseConfig.markers, normalizedCard); - normalizedCard.generic_markers = normalizedMarkers.markers; - normalizedCard.generic_markers_invalid = normalizedMarkers.invalidList; - normalizedCard.entities = baseConfig.entities.map( - (entityCfg) => normalizeEntityConfig(entityCfg, normalizedCard) - ); - return normalizedCard; - } - var PAINT_EXPLICITNESS, EXPLICIT_SEGMENT_SPACE; - var init_normalize = __esm({ - "src/config/normalize.js"() { - init_extrema(); - PAINT_EXPLICITNESS = /* @__PURE__ */ Symbol("sbcp.paintExplicitness"); - EXPLICIT_SEGMENT_SPACE = /* @__PURE__ */ Symbol("sbcp.explicitSegmentSpace"); - } - }); - - // src/config/resolve.js - function getEntityNumericValue(hass, entityId) { - var _a; - if (!entityId || !((_a = hass == null ? void 0 : hass.states) == null ? void 0 : _a[entityId])) return null; - const raw = hass.states[entityId].state; - const num = parseFloat(raw); - return Number.isFinite(num) ? num : null; - } - function getNumericValue(hass, value, entityId = null) { - const entityValue = getEntityNumericValue(hass, entityId); - if (entityValue !== null) return entityValue; - if (value === null || value === void 0 || value === "") return null; - const num = parseFloat(value); - return Number.isFinite(num) ? num : null; - } - function resolvePercentValue(percent, minValue, maxValue) { - if (!Number.isFinite(percent)) return null; - const safeMin = Number.isFinite(minValue) ? minValue : 0; - const safeMax = Number.isFinite(maxValue) ? maxValue : 100; - return safeMin + percent / 100 * (safeMax - safeMin); - } - function getNormalizedResolvableNumericValue(hass, resolvable, minValue = null, maxValue = null) { - var _a; - if (!resolvable) return null; - const entityValue = getEntityNumericValue(hass, resolvable.entity); - if (entityValue !== null) return entityValue; - const fixedValue = getNumericValue(hass, (_a = resolvable.fixed) != null ? _a : resolvable.value, null); - if (fixedValue !== null) return fixedValue; - if (Number.isFinite(resolvable.percent)) { - return resolvePercentValue(resolvable.percent, minValue, maxValue); - } - return null; - } - function getResolvedScale(hass, scale, previousScale = null) { - var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l; - const isValid = (bounds) => Number.isFinite(bounds == null ? void 0 : bounds.min) && Number.isFinite(bounds == null ? void 0 : bounds.max) && bounds.min < bounds.max; - const fixed = { - min: getNumericValue(null, (_c = (_a = scale == null ? void 0 : scale.min) == null ? void 0 : _a.fixed) != null ? _c : (_b = scale == null ? void 0 : scale.min) == null ? void 0 : _b.value), - max: getNumericValue(null, (_f = (_d = scale == null ? void 0 : scale.max) == null ? void 0 : _d.fixed) != null ? _f : (_e = scale == null ? void 0 : scale.max) == null ? void 0 : _e.value) - }; - if (((_g = scale == null ? void 0 : scale.min) == null ? void 0 : _g.entity) && ((_h = scale == null ? void 0 : scale.max) == null ? void 0 : _h.entity)) { - const dynamic = { - min: getEntityNumericValue(hass, scale.min.entity), - max: getEntityNumericValue(hass, scale.max.entity) - }; - if (isValid(dynamic)) return dynamic; - if (Number.isFinite(dynamic.min) && Number.isFinite(dynamic.max) && isValid(previousScale)) { - return previousScale; - } - return scale.min.fixed_explicit !== false && scale.max.fixed_explicit !== false && isValid(fixed) ? fixed : { min: 0, max: 100 }; - } - const resolved = { - min: (_i = getNormalizedResolvableNumericValue(hass, scale == null ? void 0 : scale.min)) != null ? _i : 0, - max: (_j = getNormalizedResolvableNumericValue(hass, scale == null ? void 0 : scale.max)) != null ? _j : 100 - }; - if (isValid(resolved)) return resolved; - const fallback = { - min: (_k = fixed.min) != null ? _k : 0, - max: (_l = fixed.max) != null ? _l : 100 - }; - return isValid(fallback) ? fallback : { min: 0, max: 100 }; - } - var init_resolve = __esm({ - "src/config/resolve.js"() { - init_normalize(); - } - }); - - // src/config/validate.js - function createDiagnostic(code, message, path, entity = null) { - return { code, message, path, entity }; - } - function getStaticFixedValue(resolvable) { - var _a; - if (!resolvable || resolvable.entity || Number.isFinite(resolvable.percent)) { - return null; - } - return getFiniteNumber((_a = resolvable.fixed) != null ? _a : resolvable.value); - } - function addWarning(diagnostics, code, message, path, entity = null) { - diagnostics.warnings.push(createDiagnostic(code, message, path, entity)); - } - function validateScaleBounds(diagnostics, scale, path, entity = null) { - var _a, _b; - if (((_a = scale == null ? void 0 : scale.min) == null ? void 0 : _a.entity) && ((_b = scale == null ? void 0 : scale.max) == null ? void 0 : _b.entity)) { - const hasFixed = (bound) => { - var _a2, _b2; - return bound.fixed_explicit !== false && ((_a2 = bound.fixed) != null ? _a2 : bound.value) !== null && ((_b2 = bound.fixed) != null ? _b2 : bound.value) !== void 0; - }; - if (hasFixed(scale.min) !== hasFixed(scale.max)) { - addWarning( - diagnostics, - "scale.orphan_fixed_fallback", - "Both dynamic scale bounds require a complete fixed fallback pair. The single fixed fallback will not be used if the dynamic pair becomes unavailable.", - `${path}.scale`, - entity - ); - } - } - const min = getStaticFixedValue(scale == null ? void 0 : scale.min); - const max = getStaticFixedValue(scale == null ? void 0 : scale.max); - if (Number.isFinite(min) && Number.isFinite(max) && min > max) { - addWarning(diagnostics, "scale.min_gt_max", "Scale minimum is greater than maximum.", path, entity); - } - return { min, max }; - } - function validateTargetRange(diagnostics, config, scaleBounds, path, entity = null) { - var _a; - const target = getStaticFixedValue((_a = config == null ? void 0 : config.target_marker) == null ? void 0 : _a.source); - if (!Number.isFinite(target)) return; - const { min, max } = scaleBounds; - if (Number.isFinite(min) && Number.isFinite(max) && (target < min || target > max)) { - addWarning(diagnostics, "target.outside_scale", "Fixed target value is outside the fixed scale range.", path, entity); - } - } - function validateBaselineRange(diagnostics, config, scaleBounds, path, entity = null) { - var _a; - const baseline = getStaticFixedValue((_a = config == null ? void 0 : config.baseline) == null ? void 0 : _a.at); - if (!Number.isFinite(baseline)) return; - const { min, max } = scaleBounds; - if (Number.isFinite(min) && Number.isFinite(max) && (baseline < min || baseline > max)) { - addWarning(diagnostics, "baseline.outside_scale", "Fixed baseline value is outside the fixed scale range.", path, entity); - } - } - function hasConfiguredResolvableValue(resolvable) { - var _a; - return !!resolvable && (Number.isFinite(getFiniteNumber((_a = resolvable.fixed) != null ? _a : resolvable.value)) || Number.isFinite(resolvable.percent) || !!resolvable.entity); - } - function validateBaselineSuppressesNeedle(diagnostics, config, path, entity = null) { - var _a, _b, _c, _d; - const needleEnabled = ((_b = (_a = config == null ? void 0 : config.bar) == null ? void 0 : _a.needle) == null ? void 0 : _b.show) === true; - const baselineConfigured = ((_c = config == null ? void 0 : config.baseline) == null ? void 0 : _c.enabled) !== false && hasConfiguredResolvableValue((_d = config == null ? void 0 : config.baseline) == null ? void 0 : _d.at); - if (needleEnabled && baselineConfigured) { - addWarning( - diagnostics, - "baseline-suppresses-needle", - "Baseline rendering suppresses the needle marker.", - path, - entity - ); - } - } - function validateExtremumReset(diagnostics, config, path, entity = null) { - var _a; - for (const marker of ["peak_marker", "floor_marker"]) { - if ((_a = config == null ? void 0 : config[marker]) == null ? void 0 : _a.reset_invalid) { - addWarning( - diagnostics, - `${marker}.invalid_reset`, - "Invalid marker reset; using never.", - `${path}.${marker}.reset`, - entity - ); - } - } - } - function validateMarkerDirections(diagnostics, config, path, entity = null) { - var _a; - for (const marker of ["target_marker", "peak_marker", "floor_marker"]) { - if ((_a = config == null ? void 0 : config[marker]) == null ? void 0 : _a.direction_invalid) { - addWarning( - diagnostics, - `${marker}.invalid_direction`, - "Invalid marker direction; using inward.", - `${path}.${marker === "target_marker" ? "target" : marker.replace("_marker", "")}.direction`, - entity - ); - } - } - } - function validateBuiltinMarkerLabels(diagnostics, config, path, entity = null) { - var _a; - for (const [key, publicKey] of [["target_marker", "target"], ["peak_marker", "peak"], ["floor_marker", "floor"]]) { - const marker = config == null ? void 0 : config[key]; - const labelPath = `${path}.${publicKey}.label`; - if (marker == null ? void 0 : marker.label_invalid_show) addWarning(diagnostics, "markers.invalid_label_show", "Marker label show must be a boolean; using the existing fallback.", `${labelPath}.show`, entity); - if (marker == null ? void 0 : marker.label_invalid_text) addWarning(diagnostics, "markers.invalid_label_text", "Marker label text must be a string; ignoring it.", `${labelPath}.text`, entity); - if (marker == null ? void 0 : marker.label_invalid_show_value) addWarning(diagnostics, "markers.invalid_label_show_value", "Marker label show_value must be a boolean; using the inherited or default value.", `${labelPath}.show_value`, entity); - if (marker == null ? void 0 : marker.label_invalid_show_unit) addWarning(diagnostics, "markers.invalid_label_show_unit", "Marker label show_unit must be a boolean; using the inherited or default value.", `${labelPath}.show_unit`, entity); - if (marker == null ? void 0 : marker.label_invalid_precision) addWarning(diagnostics, "markers.invalid_label_precision", "Marker label precision must be a non-negative integer; using the inherited or row precision.", `${labelPath}.${(_a = marker.label_precision_key) != null ? _a : "precision"}`, entity); - if (marker == null ? void 0 : marker.label_unsupported_unit) addWarning(diagnostics, "markers.unsupported_label_unit", "Marker label unit is no longer supported; use show_unit instead.", `${labelPath}.unit`, entity); - } - } - function validateGenericMarkers(diagnostics, markers, invalidList, path, entity = null) { - var _a, _b, _c, _d, _e, _f, _g, _h; - if (invalidList) { - addWarning(diagnostics, "markers.invalid_list", "Markers must be a list; ignoring the malformed value.", path, entity); - } - for (const marker of markers != null ? markers : []) { - const markerPath = `${path}[${marker.index}]`; - if (marker.malformed) { - addWarning(diagnostics, "markers.invalid_item", "Marker must be an object; ignoring this item.", markerPath, entity); - continue; - } - if (marker.invalidSource && !marker.invalidPercentage && !marker.unsupportedPercentField) { - addWarning(diagnostics, "markers.invalid_source", "Marker requires a valid fixed value, percentage, or entity source.", `${markerPath}.at`, entity); - } - if (marker.invalidPercentage) { - addWarning(diagnostics, "markers.invalid_percentage", "Marker percentage must be between 0 and 100 inclusive.", `${markerPath}.at`, entity); - } - if (marker.unsupportedPercentField) { - addWarning(diagnostics, "markers.invalid_source", 'Use a percentage string such as "35%" instead of an at.percent field.', `${markerPath}.at`, entity); - } - if (marker.invalidLane) { - addWarning(diagnostics, "markers.invalid_lane", "Marker lane must be above or below; ignoring this marker.", `${markerPath}.lane`, entity); - } - if (marker.invalidShape) { - addWarning(diagnostics, "markers.invalid_shape", "Invalid marker shape; using circle.", `${markerPath}.shape`, entity); - } - if (marker.invalidDirection) { - addWarning(diagnostics, "markers.invalid_direction", "Invalid marker direction; using inward.", `${markerPath}.direction`, entity); - } - if (marker.invalidShowMarker) addWarning(diagnostics, "markers.invalid_show_marker", "Marker show_marker must be a boolean; using true.", `${markerPath}.show_marker`, entity); - if ((_a = marker.label) == null ? void 0 : _a.invalidEntity) addWarning(diagnostics, "markers.invalid_label_entity", "Marker label entity must be a valid entity ID; ignoring it.", `${markerPath}.label.entity`, entity); - if ((_b = marker.label) == null ? void 0 : _b.invalidShow) addWarning(diagnostics, "markers.invalid_label_show", "Marker label show must be a boolean; using the existing fallback.", `${markerPath}.label.show`, entity); - if ((_c = marker.label) == null ? void 0 : _c.invalidText) addWarning(diagnostics, "markers.invalid_label_text", "Marker label text must be a string; ignoring it.", `${markerPath}.label.text`, entity); - if ((_d = marker.label) == null ? void 0 : _d.invalidShowValue) addWarning(diagnostics, "markers.invalid_label_show_value", "Marker label show_value must be a boolean; using the inherited or default value.", `${markerPath}.label.show_value`, entity); - if ((_e = marker.label) == null ? void 0 : _e.invalidShowUnit) addWarning(diagnostics, "markers.invalid_label_show_unit", "Marker label show_unit must be a boolean; using the inherited or default value.", `${markerPath}.label.show_unit`, entity); - if ((_f = marker.label) == null ? void 0 : _f.invalidPrecision) addWarning(diagnostics, "markers.invalid_label_precision", "Marker label precision must be a non-negative integer; using the inherited or row precision.", `${markerPath}.label.${(_g = marker.label.invalidPrecisionKey) != null ? _g : "precision"}`, entity); - if ((_h = marker.label) == null ? void 0 : _h.unsupportedUnit) addWarning(diagnostics, "markers.unsupported_label_unit", "Marker label unit is no longer supported; use show_unit instead.", `${markerPath}.label.unit`, entity); - if (marker.valid && !marker.accepted) { - addWarning(diagnostics, "markers.excess_capacity", "This marker is not rendered because its lane already has four markers.", markerPath, entity); - } - } - } - function getStaticSegmentBound(boundary) { - var _a; - if (!boundary || boundary.entity || Number.isFinite(boundary.percent)) return null; - return getFiniteNumber((_a = boundary.fixed) != null ? _a : boundary.value); - } - function validateSegments(diagnostics, segments, scaleBounds, path, entity = null) { - if (!Array.isArray(segments) || !segments.length) return; - const staticSegments = []; - const { min, max } = scaleBounds; - for (let index = 0; index < segments.length; index += 1) { - const segment = segments[index]; - const from = getStaticSegmentBound(segment == null ? void 0 : segment.from); - const to = getStaticSegmentBound(segment == null ? void 0 : segment.to); - const segmentPath = `${path}.segments[${index}]`; - if ((segment == null ? void 0 : segment.invalidBoundary) === "entity") { - addWarning(diagnostics, "segments.unsupported_entity_boundary", "Entity-backed segment boundaries are not supported; ignoring this segment.", segmentPath, entity); - continue; - } - if ((segment == null ? void 0 : segment.invalidBoundary) === "malformed_percent") { - addWarning(diagnostics, "segments.invalid_percentage", "Malformed percentage segment boundary; ignoring this segment.", segmentPath, entity); - continue; - } - if (segment == null ? void 0 : segment.invalidBoundary) { - addWarning(diagnostics, "segments.invalid_boundary", 'Segment boundary must be a numeric value or a percentage such as "35%"; ignoring this segment.', segmentPath, entity); - continue; - } - if (Number.isFinite(from) && Number.isFinite(to) && from > to) { - addWarning(diagnostics, "segments.from_gt_to", "Segment start is greater than segment end.", segmentPath, entity); - } - if (Number.isFinite(min) && Number.isFinite(max)) { - if (Number.isFinite(from) && (from < min || from > max)) { - addWarning(diagnostics, "segments.outside_scale", "Segment boundary is outside the fixed scale range.", segmentPath, entity); +(()=>{var U=(n,e,t)=>()=>{if(t)throw t[0];try{return n&&(e=n(n=0)),e}catch(r){throw t=[r],r}};var Ss=(n,e)=>()=>{try{return e||n((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}};function Pr(n){return` + ${n} .bar-fill-reveal, + ${n} .needle-marker, + ${n} .target-marker, + ${n} .peak-marker, + ${n} .floor-marker, + ${n} .generic-marker, + ${n} .baseline-indicator { + transition: none; } - if (Number.isFinite(to) && (to < min || to > max)) { - addWarning(diagnostics, "segments.outside_scale", "Segment boundary is outside the fixed scale range.", segmentPath, entity); +`}var Fr,Er,Ni=U(()=>{Fr=` + .bar-track { + position: relative; + width: 100%; + height: var(--sbcp-row-height); + border-radius: 6px; + background: var(--secondary-background-color, #e8e8e8); + overflow: hidden; } - } - if (Number.isFinite(from) && Number.isFinite(to)) { - staticSegments.push({ from, to, path: segmentPath }); - } - } - const sorted = [...staticSegments].sort((a, b) => a.from - b.from); - for (let index = 1; index < sorted.length; index += 1) { - const previous = sorted[index - 1]; - const current = sorted[index]; - if (current.from < previous.to) { - addWarning(diagnostics, "segments.overlap", "Fixed segments overlap.", current.path, entity); - } - } - } - function validateGradientStops(diagnostics, stops, path, entity = null) { - var _a; - if (!Array.isArray(stops)) return; - const seenPositions = /* @__PURE__ */ new Set(); - for (let index = 0; index < stops.length; index += 1) { - const pos = getFiniteNumber((_a = stops[index]) == null ? void 0 : _a.pos); - const stopPath = `${path}.gradient_stops[${index}]`; - if (Number.isFinite(pos) && (pos < 0 || pos > 100)) { - addWarning( - diagnostics, - "gradient_stops.outside_range", - "Gradient stop position is outside 0..100.", - stopPath, - entity - ); - } - if (Number.isFinite(pos)) { - if (seenPositions.has(pos)) { - addWarning( - diagnostics, - "duplicate-gradient-stop-position", - "Multiple gradient stops use the same position value.", - stopPath, - entity + .bar-fill-reveal { + position: absolute; + inset: 0; + pointer-events: none; + transition: clip-path var(--sbcp-reveal-duration, 600ms) cubic-bezier(0.4,0,0.2,1); + z-index: 1; + } + .bar-paint-layer { + position: absolute; + inset: 0; + pointer-events: none; + z-index: 1; + } + .bar-paint-layer[data-layer="above-target"] { + z-index: 2; + } + .bar-fill-reveal.no-anim { + transition: none; + } + .baseline-indicator { + position: absolute; + top: 0; + bottom: 0; + width: 1px; + transform: translateX(-50%); + background-color: var(--primary-text-color, currentColor); + opacity: 0.6; + pointer-events: none; + transition: left 0.6s cubic-bezier(0.4,0,0.2,1); + z-index: 3; + } +`,Er=` + /* \u2500\u2500 Shared marker base \u2500\u2500 */ + .peak-marker, .target-marker, .floor-marker, .generic-marker { + position: absolute; + top: 0; + bottom: 0; + width: 0; + transform: translateX(-50%); + pointer-events: none; + transition: left 0.6s cubic-bezier(0.4,0,0.2,1); + --marker-color: #888; + --marker-contrast-color: #f3f4f6; + } + .peak-marker .peak-inset, + .peak-marker .peak-outset, + .target-marker .target-inset, + .target-marker .target-outset, + .floor-marker .floor-inset, + .floor-marker .floor-outset, + .generic-marker .peak-inset, + .generic-marker .peak-outset, + .generic-marker .target-inset, + .generic-marker .target-outset { + pointer-events: auto; + } + .peak-marker .peak-inset:hover, + .peak-marker .peak-outset:hover, + .target-marker .target-inset:hover, + .target-marker .target-outset:hover, + .floor-marker .floor-inset:hover, + .floor-marker .floor-outset:hover, + .generic-marker .peak-inset:hover, + .generic-marker .peak-outset:hover, + .generic-marker .target-inset:hover, + .generic-marker .target-outset:hover, + .marker-shape-svg path[data-shape]:hover { + cursor: none; + } + .target-marker { + z-index: 6; + } + .floor-marker { + z-index: 6; + } + .generic-marker[data-lane="below"] { + z-index: 6; + } + .peak-marker { + z-index: 7; + } + .generic-marker[data-lane="above"] { + z-index: 7; + } + .needle-layer { + position: absolute; + inset: 0; + overflow: hidden; + border-radius: inherit; + pointer-events: none; + z-index: 5; + } + .needle-marker { + position: absolute; + top: 0; + bottom: 0; + width: 7px; + transform: translateX(-50%); + pointer-events: none; + transition: left 0.6s cubic-bezier(0.4,0,0.2,1); + background: linear-gradient( + to right, + var(--needle-border-color, #000000) 0 1px, + var(--needle-color, #ffffff) 1px 6px, + var(--needle-border-color, #000000) 6px 7px ); - } else { - seenPositions.add(pos); + border-radius: 0; + box-shadow: + 0 0 3px var(--needle-color, #ffffff), + 0 0 6px var(--needle-color, #ffffff); } - } - } - } - function validateConfigScope(diagnostics, config, path, entity = null) { - var _a, _b; - const scaleBounds = validateScaleBounds(diagnostics, config == null ? void 0 : config.scale, path, entity); - validateTargetRange(diagnostics, config, scaleBounds, path, entity); - validateBaselineRange(diagnostics, config, scaleBounds, path, entity); - validateBaselineSuppressesNeedle(diagnostics, config, path, entity); - validateExtremumReset(diagnostics, config, path, entity); - validateMarkerDirections(diagnostics, config, path, entity); - validateBuiltinMarkerLabels(diagnostics, config, path, entity); - validateSegments(diagnostics, (_a = config == null ? void 0 : config.bar) == null ? void 0 : _a.segments, scaleBounds, `${path}.bar`, entity); - validateGradientStops(diagnostics, (_b = config == null ? void 0 : config.bar) == null ? void 0 : _b.gradient_stops, `${path}.bar`, entity); - } - function validateNormalizedConfig(config) { - var _a, _b; - const diagnostics = { - warnings: [], - errors: [] - }; - if (!config || typeof config !== "object") { - return diagnostics; - } - validateConfigScope(diagnostics, config, "card"); - validateGenericMarkers(diagnostics, config.generic_markers, config.generic_markers_invalid, "markers"); - const seenEntities = /* @__PURE__ */ new Set(); - const entities = Array.isArray(config.entities) ? config.entities : []; - for (let index = 0; index < entities.length; index += 1) { - const entityConfig = entities[index]; - const entityId = (_a = entityConfig == null ? void 0 : entityConfig.entity) != null ? _a : null; - const path = `entities[${index}]`; - if (!entityId) { - addWarning(diagnostics, "entities.missing_entity", "Entity row is missing an entity id.", path, null); - continue; - } - if (seenEntities.has(entityId)) { - addWarning(diagnostics, "entities.duplicate_entity", "Duplicate entity id in the same card config.", path, entityId); - } else { - seenEntities.add(entityId); - } - validateConfigScope(diagnostics, entityConfig, path, entityId); - if (Object.prototype.hasOwnProperty.call(entityConfig, "markers")) { - validateGenericMarkers( - diagnostics, - entityConfig.generic_markers, - entityConfig.generic_markers_invalid, - `${path}.markers`, - entityId - ); - } else { - const inheritedOverflow = ((_b = entityConfig.generic_markers) != null ? _b : []).filter( - (marker) => { - var _a2, _b2; - return marker.valid && !marker.accepted && ((_b2 = (_a2 = config.generic_markers) == null ? void 0 : _a2[marker.index]) == null ? void 0 : _b2.accepted) === true; - } - ); - if (inheritedOverflow.length) { - validateGenericMarkers(diagnostics, inheritedOverflow, false, `${path}.markers`, entityId); + .needle-layer .needle-marker[data-edge="right"] { + transform: translateX(-100%); + } + .peak-marker .peak-inset, + .peak-marker .peak-outset, + .target-marker .target-inset, + .target-marker .target-outset, + .floor-marker .floor-inset, + .floor-marker .floor-outset, + .generic-marker[data-lane="above"] .peak-inset, + .generic-marker[data-lane="above"] .peak-outset, + .generic-marker[data-lane="below"] .target-inset, + .generic-marker[data-lane="below"] .target-outset { + position: absolute; + left: 50%; + transform: translateX(-50%); + width: 0; + height: 0; + } + /* Peak marker: large triangle intrudes into the bar, small one sits just above it. */ + .peak-marker .peak-inset, + .generic-marker[data-lane="above"] .peak-inset { + top: 0; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-top: 11px solid var(--marker-color); + z-index: 2; + filter: + drop-shadow(0 0 1.2px var(--marker-contrast-color)) + drop-shadow(0 0 3px color-mix(in srgb, var(--marker-contrast-color) 78%, transparent)); + } + .peak-marker[data-direction="outward"] .peak-inset, + .generic-marker[data-lane="above"][data-direction="outward"] .peak-inset { + border-top-width: 0; + border-top-color: transparent; + border-bottom: 11px solid var(--marker-color); + } + .peak-marker .peak-outset, + .generic-marker[data-lane="above"] .peak-outset { + top: -4px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 4px solid var(--marker-color); + z-index: 3; + } + /* Target marker: large triangle intrudes into the bar, small one sits just below it. */ + .target-marker .target-inset, + .generic-marker[data-lane="below"] .target-inset { + bottom: 0; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 11px solid var(--marker-color); + z-index: 2; + filter: + drop-shadow(0 0 1.2px var(--marker-contrast-color)) + drop-shadow(0 0 3px color-mix(in srgb, var(--marker-contrast-color) 78%, transparent)); + } + .target-marker .target-outset, + .generic-marker[data-lane="below"] .target-outset { + bottom: -4px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 4px solid var(--marker-color); + z-index: 3; + } + .floor-marker .floor-inset { + bottom: 0; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 11px solid var(--marker-color); + z-index: 2; + filter: + drop-shadow(0 0 1.2px var(--marker-contrast-color)) + drop-shadow(0 0 3px color-mix(in srgb, var(--marker-contrast-color) 78%, transparent)); + } + .target-marker[data-direction="outward"] .target-inset, + .floor-marker[data-direction="outward"] .floor-inset, + .generic-marker[data-lane="below"][data-direction="outward"] .target-inset { + border-bottom-width: 0; + border-bottom-color: transparent; + border-top: 11px solid var(--marker-color); + } + .floor-marker .floor-outset { + bottom: -4px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 4px solid var(--marker-color); + z-index: 3; + } + /* Shared non-triangle marker shapes. Triangle keeps the original CSS geometry. */ + .marker-shape-svg { + display: none; + position: absolute; + left: 50%; + width: 16px; + height: 16px; + overflow: visible; + color: var(--marker-color); + pointer-events: none; + z-index: 2; + transform: translateX(-50%); + filter: + drop-shadow(0 0 1.2px var(--marker-contrast-color)) + drop-shadow(0 0 3px color-mix(in srgb, var(--marker-contrast-color) 78%, transparent)); + } + .peak-marker .marker-shape-svg { + top: 0; + } + .target-marker .marker-shape-svg { + bottom: 0; + } + .floor-marker .marker-shape-svg { + bottom: 0; + } + .generic-marker[data-lane="above"] .marker-shape-svg { + top: 0; + } + .generic-marker[data-lane="below"] .marker-shape-svg { + bottom: 0; + } + .marker-shape-svg[data-lane="above"] { + transform-origin: 50% 0; + } + .marker-shape-svg[data-lane="below"] { + transform-origin: 50% 100%; + } + .marker-shape-svg[data-shape="diamond"], + .marker-shape-svg[data-shape="arrow"], + .marker-shape-svg[data-shape="chevron"], + .marker-shape-svg[data-shape="pin"] { + transform: translateX(-50%) scale(0.75); + } + .marker-shape-svg[data-shape="circle"] { + transform: translateX(-50%) scale(0.64); + } + .peak-marker[data-shape]:not([data-shape="triangle"]) .peak-inset, + .peak-marker[data-shape]:not([data-shape="triangle"]) .peak-outset, + .target-marker[data-shape]:not([data-shape="triangle"]) .target-inset, + .target-marker[data-shape]:not([data-shape="triangle"]) .target-outset, + .floor-marker[data-shape]:not([data-shape="triangle"]) .floor-inset, + .floor-marker[data-shape]:not([data-shape="triangle"]) .floor-outset, + .generic-marker[data-shape]:not([data-shape="triangle"]) .peak-inset, + .generic-marker[data-shape]:not([data-shape="triangle"]) .peak-outset, + .generic-marker[data-shape]:not([data-shape="triangle"]) .target-inset, + .generic-marker[data-shape]:not([data-shape="triangle"]) .target-outset { + display: none; + } + .peak-marker[data-shape]:not([data-shape="triangle"]) .marker-shape-svg, + .target-marker[data-shape]:not([data-shape="triangle"]) .marker-shape-svg { + display: block; + } + .floor-marker[data-shape]:not([data-shape="triangle"]) .marker-shape-svg { + display: block; + } + .generic-marker[data-shape]:not([data-shape="triangle"]) .marker-shape-svg { + display: block; + } + .generic-marker[data-show-marker="false"][data-shape] .peak-inset, + .generic-marker[data-show-marker="false"][data-shape] .peak-outset, + .generic-marker[data-show-marker="false"][data-shape] .target-inset, + .generic-marker[data-show-marker="false"][data-shape] .target-outset, + .generic-marker[data-show-marker="false"][data-shape] .marker-shape-svg { + display: none; + } + .marker-shape-svg path { + display: none; + fill: currentColor; + } + .marker-shape-svg path[data-shape] { + pointer-events: visiblePainted; + } + .marker-shape-svg[data-shape="circle"] path[data-shape="circle"], + .marker-shape-svg[data-shape="diamond"] path[data-shape="diamond"], + .marker-shape-svg[data-shape="chevron"] path[data-shape="chevron"], + .marker-shape-svg[data-shape="arrow"] path[data-shape="arrow"], + .marker-shape-svg[data-shape="pin"] path[data-shape="pin"] { + display: block; + } + .marker-shape-svg[data-shape="chevron"] path[data-shape="chevron"] { + fill: none; + } + .marker-shape-svg[data-shape="chevron"][data-lane="below"][data-direction="inward"] .marker-shape-paths, + .marker-shape-svg[data-shape="arrow"][data-lane="below"][data-direction="inward"] .marker-shape-paths, + .marker-shape-svg[data-shape="pin"][data-lane="below"][data-direction="inward"] .marker-shape-paths, + .marker-shape-svg[data-shape="chevron"][data-lane="above"][data-direction="outward"] .marker-shape-paths, + .marker-shape-svg[data-shape="arrow"][data-lane="above"][data-direction="outward"] .marker-shape-paths, + .marker-shape-svg[data-shape="pin"][data-lane="above"][data-direction="outward"] .marker-shape-paths { + transform-box: view-box; + transform-origin: 0 0; + transform: translateY(16px) scaleY(-1); } - } - } - return diagnostics; - } - var init_validate = __esm({ - "src/config/validate.js"() { - init_normalize(); - } - }); - // src/utils/format.js - function formatNumericDisplay(rawVal, decimal = null) { - if (!Number.isFinite(rawVal)) return String(rawVal); - if (decimal !== null) { - return rawVal.toLocaleString(void 0, { - minimumFractionDigits: decimal, - maximumFractionDigits: decimal - }); - } - return rawVal.toLocaleString(); - } - function isTightUnit(unit) { - return ["h", "m", "s"].includes(String(unit || "").trim()); - } - function formatDisplayWithUnit(display, unit) { - if (!unit) return String(display); - const cleanUnit = String(unit); - return `${display}${isTightUnit(cleanUnit) ? "" : " "}${cleanUnit}`; - } - function createNumericPresentation(value, unit, decimal = null) { - const number = formatNumericDisplay(value, decimal); - const cleanUnit = unit ? String(unit) : ""; - return { - value, - number, - unit: cleanUnit, - text: formatDisplayWithUnit(number, cleanUnit) - }; - } - function createMarkerLabelPresentation(value, unit, precision = null, options = {}) { - const semanticText = typeof options.text === "string" ? options.text : ""; - const number = options.showValue === false || value === null || value === void 0 || value === "" ? "" : Number.isFinite(value) ? formatNumericDisplay(value, precision) : String(value); - const cleanUnit = options.showUnit === false ? "" : String(unit != null ? unit : "").trim(); - const text = [semanticText, number, cleanUnit].filter(Boolean).join(" "); - return { - value: Number.isFinite(value) ? value : null, - semanticText, - number, - unit: cleanUnit, - showValue: options.showValue !== false, - showUnit: options.showUnit !== false, - text - }; - } - function createTextPresentation(text) { - const value = String(text); - return { - value: null, - number: value, - unit: "", - text: value - }; - } - var init_format = __esm({ - "src/utils/format.js"() { - } - }); - - // src/view-model/marker-view-model.js - function hasConfiguredSource(source) { - if (!source) return false; - return source.entity !== null && source.entity !== void 0 && source.entity !== "" || source.fixed !== null && source.fixed !== void 0 && source.fixed !== "" || Number.isFinite(source.percent); - } - function normalizeMarkerShape(value, fallback = "circle") { - return MARKER_SHAPES.has(value) ? value : fallback; - } - function createMarkerModel({ - id, - type, - value = null, - position = null, - lane, - visible = false, - color = null, - label = null, - labelVisible = false, - shape = "circle", - direction = "inward", - showMarker = true - }) { - return { - id, - type, - value, - position, - lane, - visible: visible === true, - color, - label, - labelVisible: labelVisible === true, - shape: normalizeMarkerShape(shape), - direction, - showMarker: showMarker !== false - }; - } - function hasMarkerLabelContent(label) { - return !!(typeof (label == null ? void 0 : label.text) === "string" && label.text.trim()) || (label == null ? void 0 : label.showValue) !== false || (label == null ? void 0 : label.showUnit) !== false; - } - function getMarkerLaneOccupancy(entityConfig) { - var _a; - const targetConfig = entityConfig == null ? void 0 : entityConfig.target_marker; - const peakConfig = entityConfig == null ? void 0 : entityConfig.peak_marker; - const floorConfig = entityConfig == null ? void 0 : entityConfig.floor_marker; - const genericMarkers = ((_a = entityConfig == null ? void 0 : entityConfig.generic_markers) != null ? _a : []).filter((marker) => marker.accepted); - return { - below: (targetConfig == null ? void 0 : targetConfig.enabled) !== false && hasConfiguredSource(targetConfig == null ? void 0 : targetConfig.source) || (floorConfig == null ? void 0 : floorConfig.show) === true || genericMarkers.some((marker) => marker.lane === "below"), - above: (peakConfig == null ? void 0 : peakConfig.show) === true || genericMarkers.some((marker) => marker.lane === "above") - }; - } - function getMarkerLabelLaneOccupancy(entityConfig) { - var _a; - const targetConfig = entityConfig == null ? void 0 : entityConfig.target_marker; - const peakConfig = entityConfig == null ? void 0 : entityConfig.peak_marker; - const floorConfig = entityConfig == null ? void 0 : entityConfig.floor_marker; - const genericMarkers = ((_a = entityConfig == null ? void 0 : entityConfig.generic_markers) != null ? _a : []).filter((marker) => marker.accepted); - return { - below: (targetConfig == null ? void 0 : targetConfig.enabled) !== false && hasConfiguredSource(targetConfig == null ? void 0 : targetConfig.source) && (targetConfig == null ? void 0 : targetConfig.show_label) === true && hasMarkerLabelContent({ text: targetConfig.label_text, showValue: targetConfig.label_show_value, showUnit: targetConfig.label_show_unit }) || (floorConfig == null ? void 0 : floorConfig.show) === true && (floorConfig == null ? void 0 : floorConfig.show_label) === true && hasMarkerLabelContent({ text: floorConfig.label_text, showValue: floorConfig.label_show_value, showUnit: floorConfig.label_show_unit }) || genericMarkers.some((marker) => { - var _a2; - return marker.lane === "below" && ((_a2 = marker.label) == null ? void 0 : _a2.show) === true && hasMarkerLabelContent(marker.label); - }), - above: (peakConfig == null ? void 0 : peakConfig.show) === true && (peakConfig == null ? void 0 : peakConfig.show_label) === true && hasMarkerLabelContent({ text: peakConfig.label_text, showValue: peakConfig.label_show_value, showUnit: peakConfig.label_show_unit }) || genericMarkers.some((marker) => { - var _a2; - return marker.lane === "above" && ((_a2 = marker.label) == null ? void 0 : _a2.show) === true && hasMarkerLabelContent(marker.label); - }) - }; - } - function buildMarkerModels({ - entityConfig, - targetValue = null, - targetPosition = null, - targetPresentation = null, - targetLabelPresentation = null, - targetVisible = Number.isFinite(targetPosition), - peakValue = null, - peakPosition = null, - peakPresentation = null, - peakLabelPresentation = null, - peakVisible = Number.isFinite(peakPosition), - floorValue = null, - floorPosition = null, - floorPresentation = null, - floorLabelPresentation = null, - floorVisible = Number.isFinite(floorPosition), - genericMarkers = [] - }) { - var _a, _b, _c, _d, _e, _f, _g; - const targetConfig = entityConfig == null ? void 0 : entityConfig.target_marker; - const peakConfig = entityConfig == null ? void 0 : entityConfig.peak_marker; - const floorConfig = entityConfig == null ? void 0 : entityConfig.floor_marker; - const targetEnabled = (targetConfig == null ? void 0 : targetConfig.enabled) !== false; - return [ - createMarkerModel({ - id: "target", - type: "target", - value: targetValue, - position: targetPosition, - lane: "below", - visible: targetEnabled && targetVisible, - color: (_a = targetConfig == null ? void 0 : targetConfig.color) != null ? _a : null, - label: targetLabelPresentation != null ? targetLabelPresentation : targetPresentation, - labelVisible: targetEnabled && (targetConfig == null ? void 0 : targetConfig.show_label) === true && hasMarkerLabelContent({ text: targetConfig.label_text, showValue: targetConfig.label_show_value, showUnit: targetConfig.label_show_unit }), - shape: (_b = targetConfig == null ? void 0 : targetConfig.shape) != null ? _b : "diamond", - direction: (_c = targetConfig == null ? void 0 : targetConfig.direction) != null ? _c : "inward" - }), - createMarkerModel({ - id: "floor", - type: "floor", - value: floorValue, - position: floorPosition, - lane: "below", - visible: (floorConfig == null ? void 0 : floorConfig.show) === true && floorVisible, - color: (_d = floorConfig == null ? void 0 : floorConfig.color) != null ? _d : null, - label: floorLabelPresentation != null ? floorLabelPresentation : floorPresentation, - labelVisible: (floorConfig == null ? void 0 : floorConfig.show) === true && (floorConfig == null ? void 0 : floorConfig.show_label) === true && hasMarkerLabelContent({ text: floorConfig.label_text, showValue: floorConfig.label_show_value, showUnit: floorConfig.label_show_unit }), - shape: "triangle", - direction: (_e = floorConfig == null ? void 0 : floorConfig.direction) != null ? _e : "inward" - }), - createMarkerModel({ - id: "peak", - type: "peak", - value: peakValue, - position: peakPosition, - lane: "above", - visible: (peakConfig == null ? void 0 : peakConfig.show) === true && peakVisible, - color: (_f = peakConfig == null ? void 0 : peakConfig.color) != null ? _f : null, - label: peakLabelPresentation != null ? peakLabelPresentation : peakPresentation, - labelVisible: (peakConfig == null ? void 0 : peakConfig.show) === true && (peakConfig == null ? void 0 : peakConfig.show_label) === true && hasMarkerLabelContent({ text: peakConfig.label_text, showValue: peakConfig.label_show_value, showUnit: peakConfig.label_show_unit }), - shape: "triangle", - direction: (_g = peakConfig == null ? void 0 : peakConfig.direction) != null ? _g : "inward" - }), - ...genericMarkers.map((marker) => createMarkerModel({ - id: marker.id, - type: "generic", - value: marker.value, - position: marker.position, - lane: marker.lane, - visible: marker.visible, - color: marker.color, - label: marker.label, - labelVisible: marker.labelVisible && hasMarkerLabelContent(marker.label), - shape: marker.shape, - direction: marker.direction, - showMarker: marker.showMarker - })) - ]; - } - var MARKER_SHAPES; - var init_marker_view_model = __esm({ - "src/view-model/marker-view-model.js"() { - MARKER_SHAPES = /* @__PURE__ */ new Set(["circle", "diamond", "triangle", "chevron", "arrow", "pin"]); - } - }); - - // src/view-model/row-view-model.js - function getDefaultEntityIcon(stateObj, entityId = "") { - var _a, _b, _c; - const deviceClass = String((_b = (_a = stateObj == null ? void 0 : stateObj.attributes) == null ? void 0 : _a.device_class) != null ? _b : "").trim(); - if (deviceClass) { - const deviceClassIcons = { - apparent_power: "mdi:flash", - battery: "mdi:battery", - carbon_dioxide: "mdi:molecule-co2", - current: "mdi:current-ac", - energy: "mdi:lightning-bolt", - gas: "mdi:meter-gas", - humidity: "mdi:water-percent", - monetary: "mdi:cash", - power: "mdi:flash", - pressure: "mdi:gauge", - temperature: "mdi:thermometer", - voltage: "mdi:sine-wave", - water: "mdi:water", - weight: "mdi:weight", - wind_speed: "mdi:weather-windy" - }; - if (deviceClassIcons[deviceClass]) { - return deviceClassIcons[deviceClass]; - } - } - const domain = String(entityId || "").split(".")[0]; - const domainIcons = { - sensor: "mdi:eye", - binary_sensor: "mdi:radiobox-marked", - switch: "mdi:toggle-switch-variant", - light: "mdi:lightbulb" - }; - return (_c = domainIcons[domain]) != null ? _c : null; - } - function toScalePct(value, minValue, maxValue) { - if (!Number.isFinite(value)) return null; - const safeMin = Number.isFinite(minValue) ? minValue : 0; - const safeMax = Number.isFinite(maxValue) ? maxValue : 100; - const range = safeMax - safeMin || 1; - return Math.min(100, Math.max(0, (value - safeMin) / range * 100)); - } - function parseColorToRgb(color) { - const value = String(color || "").trim(); - if (!value) return null; - const hexMatch = value.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/i); - if (hexMatch) { - const hex = hexMatch[1]; - const full = hex.length === 3 ? hex.split("").map((char) => char + char).join("") : hex; - return { - r: parseInt(full.slice(0, 2), 16), - g: parseInt(full.slice(2, 4), 16), - b: parseInt(full.slice(4, 6), 16) - }; - } - const rgbMatch = value.match(/^rgba?\(([^)]+)\)$/i); - if (rgbMatch) { - const parts = rgbMatch[1].split(",").map((part) => part.trim()); - if (parts.length >= 3) { - return { - r: Math.max(0, Math.min(255, parseFloat(parts[0]))), - g: Math.max(0, Math.min(255, parseFloat(parts[1]))), - b: Math.max(0, Math.min(255, parseFloat(parts[2]))) - }; - } - } - return null; - } - function getNeedleBorderColor(color) { - const rgb = parseColorToRgb(color); - if (!rgb) return "#000000"; - const toLinear = (channel) => { - const srgb = channel / 255; - return srgb <= 0.04045 ? srgb / 12.92 : ((srgb + 0.055) / 1.055) ** 2.4; - }; - const luminance = 0.2126 * toLinear(rgb.r) + 0.7152 * toLinear(rgb.g) + 0.0722 * toLinear(rgb.b); - return luminance < 0.22 ? "#ffffff" : "#000000"; - } - function getNeedleState(entityConfig, numericValue, minValue, maxValue, baselinePercent) { - var _a, _b, _c; - const needle = (_a = entityConfig == null ? void 0 : entityConfig.bar) == null ? void 0 : _a.needle; - if (!(needle == null ? void 0 : needle.show) || Number.isFinite(baselinePercent) || !Number.isFinite(numericValue)) { - const color2 = (_b = needle == null ? void 0 : needle.color) != null ? _b : "#ffffff"; - return { - show: false, - percent: null, - pct: null, - color: color2, - borderColor: getNeedleBorderColor(color2), - edge: "middle" - }; - } - const color = (_c = needle.color) != null ? _c : "#ffffff"; - const percent = Math.min(100, Math.max(0, toScalePct(numericValue, minValue, maxValue))); - return { - show: true, - percent, - pct: percent, - color, - borderColor: getNeedleBorderColor(color), - edge: percent <= 0 ? "left" : percent >= 100 ? "right" : "middle" - }; - } - function getExtremumState(numericValue, minValue, maxValue, tracker, direction, enabled) { - if (!enabled) { - return { - value: null, - percent: null, - display: null, - visible: false - }; - } - const existingValue = getFiniteNumber(tracker == null ? void 0 : tracker.value); - if (!Number.isFinite(existingValue) && !Number.isFinite(numericValue)) { - return { - value: null, - percent: null, - visible: false - }; - } - const value = Number.isFinite(existingValue) ? Number.isFinite(numericValue) ? direction === "min" ? Math.min(existingValue, numericValue) : Math.max(existingValue, numericValue) : existingValue : numericValue; - return { - value, - percent: toScalePct(value, minValue, maxValue), - visible: true - }; - } - function buildRowViewModel(options) { - var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y, _Z, __, _$, _aa, _ba, _ca, _da, _ea, _fa, _ga, _ha; - const { - hass, - cardConfig, - entityConfig, - entityState, - peaks, - extrema, - previousScale - } = options; - void cardConfig; - const entityId = (_a = entityConfig == null ? void 0 : entityConfig.entity) != null ? _a : null; - const rawState = (_b = entityState == null ? void 0 : entityState.state) != null ? _b : ""; - const numericValue = getFiniteNumber(rawState); - const rawUnit = (_d = (_c = entityState == null ? void 0 : entityState.attributes) == null ? void 0 : _c.unit_of_measurement) != null ? _d : ""; - const configuredUnit = (_e = entityConfig == null ? void 0 : entityConfig.formatting) == null ? void 0 : _e.unit; - const targetUnit = (_f = configuredUnit != null ? configuredUnit : rawUnit) != null ? _f : ""; - const displayUnit = numericValue !== null ? targetUnit : ""; - const { min: safeMin, max: safeMax } = getResolvedScale(hass, entityConfig == null ? void 0 : entityConfig.scale, previousScale); - const percent = numericValue !== null ? toScalePct(numericValue, safeMin, safeMax) : 0; - const decimal = (_h = (_g = entityConfig == null ? void 0 : entityConfig.formatting) == null ? void 0 : _g.decimal) != null ? _h : null; - const primaryPresentation = numericValue === null ? createTextPresentation(rawState) : createNumericPresentation(numericValue, displayUnit, decimal); - const targetValue = ((_i = entityConfig == null ? void 0 : entityConfig.target_marker) == null ? void 0 : _i.enabled) === false ? null : getNormalizedResolvableNumericValue(hass, (_j = entityConfig == null ? void 0 : entityConfig.target_marker) == null ? void 0 : _j.source, safeMin, safeMax); - const targetPercent = targetValue !== null ? toScalePct(targetValue, safeMin, safeMax) : null; - const targetVisible = targetValue !== null; - const targetDecimal = (_l = (_k = entityConfig == null ? void 0 : entityConfig.target_marker) == null ? void 0 : _k.label_decimal) != null ? _l : decimal; - const targetPresentation = targetValue !== null ? createNumericPresentation(targetValue, targetUnit, targetDecimal) : null; - const targetLabelPresentation = targetValue !== null ? createMarkerLabelPresentation(targetValue, targetUnit, (_n = (_m = entityConfig == null ? void 0 : entityConfig.target_marker) == null ? void 0 : _m.label_precision) != null ? _n : targetDecimal, { - text: (_o = entityConfig == null ? void 0 : entityConfig.target_marker) == null ? void 0 : _o.label_text, - showValue: (_p = entityConfig == null ? void 0 : entityConfig.target_marker) == null ? void 0 : _p.label_show_value, - showUnit: (_q = entityConfig == null ? void 0 : entityConfig.target_marker) == null ? void 0 : _q.label_show_unit - }) : null; - const baselineValue = ((_r = entityConfig == null ? void 0 : entityConfig.baseline) == null ? void 0 : _r.enabled) === false ? null : getNormalizedResolvableNumericValue(hass, (_s = entityConfig == null ? void 0 : entityConfig.baseline) == null ? void 0 : _s.at, safeMin, safeMax); - const baselinePercent = Number.isFinite(baselineValue) ? toScalePct(baselineValue, safeMin, safeMax) : null; - const baselineVisible = Number.isFinite(baselineValue); - const legacyPeak = Number.isFinite(getFiniteNumber(peaks == null ? void 0 : peaks[entityId])) ? { value: getFiniteNumber(peaks == null ? void 0 : peaks[entityId]) } : null; - const peakState = getExtremumState( - numericValue, - safeMin, - safeMax, - (_t = extrema == null ? void 0 : extrema.peak) != null ? _t : legacyPeak, - "max", - ((_u = entityConfig == null ? void 0 : entityConfig.peak_marker) == null ? void 0 : _u.show) === true - ); - const floorState = getExtremumState( - numericValue, - safeMin, - safeMax, - extrema == null ? void 0 : extrema.floor, - "min", - ((_v = entityConfig == null ? void 0 : entityConfig.floor_marker) == null ? void 0 : _v.show) === true - ); - const peakDecimal = (_x = (_w = entityConfig == null ? void 0 : entityConfig.peak_marker) == null ? void 0 : _w.label_decimal) != null ? _x : decimal; - const floorDecimal = (_z = (_y = entityConfig == null ? void 0 : entityConfig.floor_marker) == null ? void 0 : _y.label_decimal) != null ? _z : decimal; - const peakLabelPrecision = (_B = (_A = entityConfig == null ? void 0 : entityConfig.peak_marker) == null ? void 0 : _A.label_precision) != null ? _B : peakDecimal; - const floorLabelPrecision = (_D = (_C = entityConfig == null ? void 0 : entityConfig.floor_marker) == null ? void 0 : _C.label_precision) != null ? _D : floorDecimal; - const peakPresentation = peakState.visible ? createNumericPresentation(peakState.value, targetUnit, peakDecimal) : null; - const floorPresentation = floorState.visible ? createNumericPresentation(floorState.value, targetUnit, floorDecimal) : null; - const peakLabelPresentation = peakState.visible ? createMarkerLabelPresentation(peakState.value, targetUnit, peakLabelPrecision, { - text: (_E = entityConfig == null ? void 0 : entityConfig.peak_marker) == null ? void 0 : _E.label_text, - showValue: (_F = entityConfig == null ? void 0 : entityConfig.peak_marker) == null ? void 0 : _F.label_show_value, - showUnit: (_G = entityConfig == null ? void 0 : entityConfig.peak_marker) == null ? void 0 : _G.label_show_unit - }) : null; - const floorLabelPresentation = floorState.visible ? createMarkerLabelPresentation(floorState.value, targetUnit, floorLabelPrecision, { - text: (_H = entityConfig == null ? void 0 : entityConfig.floor_marker) == null ? void 0 : _H.label_text, - showValue: (_I = entityConfig == null ? void 0 : entityConfig.floor_marker) == null ? void 0 : _I.label_show_value, - showUnit: (_J = entityConfig == null ? void 0 : entityConfig.floor_marker) == null ? void 0 : _J.label_show_unit - }) : null; - const genericMarkers = ((_K = entityConfig == null ? void 0 : entityConfig.generic_markers) != null ? _K : []).filter((marker) => marker.accepted).map((marker) => { - var _a2, _b2, _c2, _d2, _e2; - const value = getNormalizedResolvableNumericValue(hass, marker.source, safeMin, safeMax); - const visible = Number.isFinite(value); - const markerPrecision = (_a2 = marker.label.precision) != null ? _a2 : decimal; - const labelStateObj = marker.label.entity ? (_b2 = hass == null ? void 0 : hass.states) == null ? void 0 : _b2[marker.label.entity] : null; - const rawLabelState = labelStateObj == null ? void 0 : labelStateObj.state; - const cleanLabelState = typeof rawLabelState === "string" ? rawLabelState.trim() : ""; - const usableLabelState = labelStateObj && cleanLabelState && !["unknown", "unavailable"].includes(cleanLabelState.toLowerCase()); - const labelValue = marker.label.entity ? usableLabelState ? (_c2 = getFiniteNumber(cleanLabelState)) != null ? _c2 : cleanLabelState : null : value; - const labelUnit = marker.label.entity ? usableLabelState ? (_e2 = (_d2 = labelStateObj == null ? void 0 : labelStateObj.attributes) == null ? void 0 : _d2.unit_of_measurement) != null ? _e2 : "" : "" : targetUnit; - const label = marker.label.show ? createMarkerLabelPresentation(labelValue, labelUnit, markerPrecision, { - text: marker.label.text, - showValue: marker.label.showValue, - showUnit: marker.label.showUnit - }) : null; - return { - id: marker.id, - value, - position: visible ? toScalePct(value, safeMin, safeMax) : null, - lane: marker.lane, - visible, - color: marker.color, - shape: marker.shape, - direction: marker.direction, - showMarker: marker.showMarker, - label, - labelVisible: marker.label.show - }; - }); - const markers = buildMarkerModels({ - entityConfig, - targetValue, - targetPosition: targetPercent, - targetPresentation, - targetLabelPresentation, - targetVisible, - peakValue: peakState.value, - peakPosition: peakState.percent, - peakPresentation, - peakLabelPresentation, - peakVisible: peakState.visible, - floorValue: floorState.value, - floorPosition: floorState.percent, - floorPresentation, - floorLabelPresentation, - floorVisible: floorState.visible, - genericMarkers - }); - return { - entityId, - name: (_N = (_M = entityConfig == null ? void 0 : entityConfig.name) != null ? _M : (_L = entityState == null ? void 0 : entityState.attributes) == null ? void 0 : _L.friendly_name) != null ? _N : entityId, - icon: (entityConfig == null ? void 0 : entityConfig.icon) === false ? false : (_Q = (_P = entityConfig == null ? void 0 : entityConfig.icon) != null ? _P : (_O = entityState == null ? void 0 : entityState.attributes) == null ? void 0 : _O.icon) != null ? _Q : getDefaultEntityIcon(entityState, entityId), - state: rawState, - numericValue, - rawUnit, - min: safeMin, - max: safeMax, - percent, - displayValue: primaryPresentation.number, - displayUnit: primaryPresentation.unit, - primaryPresentation, - unit: primaryPresentation.unit, - barColor: (_S = (_R = entityConfig == null ? void 0 : entityConfig.bar) == null ? void 0 : _R.color) != null ? _S : null, - fillStyle: (_U = (_T = entityConfig == null ? void 0 : entityConfig.bar) == null ? void 0 : _T.fill_style) != null ? _U : null, - target: targetValue, - targetPercent, - targetDisplay: (_V = targetPresentation == null ? void 0 : targetPresentation.text) != null ? _V : null, - targetPresentation, - targetLabelPresentation, - targetVisible, - baseline: baselineValue, - baselinePercent, - baselineVisible, - peak: peakState.value, - peakPercent: peakState.percent, - peakDisplay: (_W = peakPresentation == null ? void 0 : peakPresentation.number) != null ? _W : null, - peakPresentation, - peakLabelPresentation, - peakVisible: peakState.visible, - floor: floorState.value, - floorPercent: floorState.percent, - floorDisplay: (_X = floorPresentation == null ? void 0 : floorPresentation.number) != null ? _X : null, - floorPresentation, - floorLabelPresentation, - floorVisible: floorState.visible, - markers, - markerLaneOccupancy: getMarkerLaneOccupancy(entityConfig), - markerLabelLaneOccupancy: getMarkerLabelLaneOccupancy(entityConfig), - segments: (_Z = (_Y = entityConfig == null ? void 0 : entityConfig.bar) == null ? void 0 : _Y.segments) != null ? _Z : null, - gradientStops: (_$ = (__ = entityConfig == null ? void 0 : entityConfig.bar) == null ? void 0 : __.gradient_stops) != null ? _$ : null, - needle: getNeedleState(entityConfig, numericValue, safeMin, safeMax, baselinePercent), - classes: { - labelPosition: (_ca = (_ba = (_aa = entityConfig == null ? void 0 : entityConfig.layout) == null ? void 0 : _aa.label) == null ? void 0 : _ba.position) != null ? _ca : "left", - animated: ((_da = entityConfig == null ? void 0 : entityConfig.bar) == null ? void 0 : _da.animated) !== false - }, - attributes: { - entity: entityId, - baseHeight: (_fa = (_ea = entityConfig == null ? void 0 : entityConfig.layout) == null ? void 0 : _ea.height) != null ? _fa : 38, - heightExplicit: ((_ga = entityConfig == null ? void 0 : entityConfig.layout) == null ? void 0 : _ga.height_explicit) === true, - barAnimated: ((_ha = entityConfig == null ? void 0 : entityConfig.bar) == null ? void 0 : _ha.animated) !== false - } - }; - } - var init_row_view_model = __esm({ - "src/view-model/row-view-model.js"() { - init_resolve(); - init_normalize(); - init_format(); - init_marker_view_model(); - } - }); - - // src/utils/dom.js - function escapeHtml(value) { - if (value == null) return ""; - return String(value).replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g, "'"); - } - var init_dom = __esm({ - "src/utils/dom.js"() { - } - }); - - // src/card/SensorBarCard.js - function getRevealTransitionDuration(previousGeometry, nextGeometry) { - if (!previousGeometry || !nextGeometry || !Number.isFinite(previousGeometry.valuePercent) || !Number.isFinite(nextGeometry.valuePercent)) { - return 600; - } - const previousBaseline = Number.isFinite(previousGeometry.baselinePercent) ? previousGeometry.baselinePercent : 0; - const nextBaseline = Number.isFinite(nextGeometry.baselinePercent) ? nextGeometry.baselinePercent : 0; - const delta = Math.max( - Math.abs(nextGeometry.valuePercent - previousGeometry.valuePercent), - Math.abs(nextBaseline - previousBaseline) - ); - const ordinaryDuration = Math.round(Math.min(600, Math.max(150, 600 - 15 * Math.max(0, delta - 5)))); - const crossesBaseline = Number.isFinite(previousGeometry.baselinePercent) && Number.isFinite(nextGeometry.baselinePercent) && (previousGeometry.valuePercent - previousGeometry.baselinePercent) * (nextGeometry.valuePercent - nextGeometry.baselinePercent) < 0; - return crossesBaseline ? Math.min(ordinaryDuration, 300) : ordinaryDuration; - } - var SensorBarCard; - var init_SensorBarCard = __esm({ - "src/card/SensorBarCard.js"() { - init_normalize(); - init_resolve(); - init_validate(); - init_row_view_model(); - init_marker_view_model(); - init_dom(); - init_format(); - init_extrema(); - SensorBarCard = class extends HTMLElement { - static getConfigElement() { - return document.createElement("sensor-bar-card-plus-editor"); - } - constructor() { - super(); - this.attachShadow({ mode: "open" }); - this._baseDomReady = false; - this._config = {}; - this._diagnostics = { warnings: [], errors: [] }; - this._lastDiagnosticsSignature = null; - this._hass = null; - this._extrema = /* @__PURE__ */ new WeakMap(); - this._rowScales = /* @__PURE__ */ new WeakMap(); - this._rowGeneration = 0; - this._rowPresence = []; - this._leftModeResponsiveHistory = /* @__PURE__ */ new WeakMap(); - this._rendered = false; - this._resizeObserver = null; - this._densityPassScheduled = false; - this._densityPassDirty = false; - this._densityPassFrame = null; - this._densityPassRetries = 0; - this._boundWindowResize = () => this._schedulePostLayoutDensityPass(); - this._markerHover = null; - this._boundMarkerPointerOver = (event) => this._handleMarkerPointerOver(event); - this._boundMarkerPointerOut = (event) => this._handleMarkerPointerOut(event); - this._ensureBaseDom(); - } - connectedCallback() { - window.addEventListener("resize", this._boundWindowResize, { passive: true }); - this._setupResizeObserver(); - this._schedulePostLayoutDensityPass(); - } - disconnectedCallback() { - this._rowGeneration += 1; - window.removeEventListener("resize", this._boundWindowResize); - this._clearMarkerHover(); - this._disconnectResizeObserver(); - if (this._densityPassFrame) { - cancelAnimationFrame(this._densityPassFrame); - this._densityPassFrame = null; - } - this._densityPassScheduled = false; - this._densityPassDirty = false; - } - setConfig(config) { - var _a; - if (!config.entities && !config.entity) { - throw new Error("You must define entities or entity"); - } - this._rendered = false; - this._rowGeneration += 1; - const previousConfig = this._config; - this._config = this.normalizeCardConfig(config); - this._rowScales = /* @__PURE__ */ new WeakMap(); - this._reconcileRowHistory((_a = previousConfig == null ? void 0 : previousConfig.entities) != null ? _a : []); - this._diagnostics = validateNormalizedConfig(this._config); - this._logDiagnostics(); - this._render(); - } - _reconcileRowHistory(previousRows) { - var _a, _b, _c, _d; - const canonical = (value, key = "") => { - if (Array.isArray(value)) return value.map(canonical); - if (value && typeof value === "object") return Object.fromEntries(Object.keys(value).sort().filter((name) => !["severity", "segment_space", "label_precision_key"].includes(name)).map((name) => [name, canonical(value[name], name)])); - if (key === "fixed") return getNumericValue(null, value); - if (/color/i.test(key) && typeof value === "string" && /^#(?:[\da-f]{3}|[\da-f]{6})$/i.test(value.trim())) { - const hex = value.trim().slice(1).toLowerCase(); - return `#${hex.length === 3 ? hex.split("").map((char) => char + char).join("") : hex}`; - } - return value; - }; - const signature = (row) => { - var _a2; - return JSON.stringify(canonical({ - entity: row.entity, - name: row.name, - icon: (_a2 = row.icon) != null ? _a2 : null, - layout: row.layout, - scale: Object.fromEntries(["min", "max"].map((key) => [key, { - ...row.scale[key], - fixed_explicit: row.scale[key].fixed_explicit !== false - }])), - bar: row.bar, - baseline: row.baseline, - formatting: row.formatting, - target_marker: row.target_marker, - peak_marker: row.peak_marker, - floor_marker: row.floor_marker, - generic_markers: row.generic_markers - })); - }; - const unmatchedOld = new Set(previousRows); - const matches = /* @__PURE__ */ new Map(); - const oldSignatures = new Map(previousRows.map((row) => [row, signature(row)])); - for (const row of this._config.entities) { - const key = signature(row); - const previous = [...unmatchedOld].find((old) => oldSignatures.get(old) === key); - if (!previous) continue; - matches.set(row, previous); - unmatchedOld.delete(previous); - } - const unmatchedNew = this._config.entities.filter((row) => !matches.has(row)); - for (const row of unmatchedNew) { - const old = [...unmatchedOld].filter((previous) => previous.entity === row.entity); - const next = unmatchedNew.filter((current) => current.entity === row.entity); - if (old.length !== 1 || next.length !== 1) continue; - matches.set(row, old[0]); - unmatchedOld.delete(old[0]); - } - const extrema = /* @__PURE__ */ new WeakMap(); - const responsive = /* @__PURE__ */ new WeakMap(); - for (const [row, previous] of matches) { - const stored = this._extrema.get(previous); - const retained = {}; - for (const key of ["peak", "floor"]) { - const before = previous[`${key}_marker`]; - const after = row[`${key}_marker`]; - if ((stored == null ? void 0 : stored[key]) && (before == null ? void 0 : before.show) === true && (after == null ? void 0 : after.show) === true && JSON.stringify(before.reset) === JSON.stringify(after.reset)) { - retained[key] = { ...stored[key] }; - } - } - if (retained.peak || retained.floor) extrema.set(row, retained); - if (((_b = (_a = previous.layout) == null ? void 0 : _a.label) == null ? void 0 : _b.position) === "left" && ((_d = (_c = row.layout) == null ? void 0 : _c.label) == null ? void 0 : _d.position) === "left" && this._leftModeResponsiveHistory.has(previous)) { - responsive.set(row, this._leftModeResponsiveHistory.get(previous)); - } - } - this._extrema = extrema; - this._leftModeResponsiveHistory = responsive; - } - _logDiagnostics() { - var _a; - const diagnostics = (_a = this._diagnostics) != null ? _a : { warnings: [], errors: [] }; - const signature = JSON.stringify(diagnostics); - if (signature === this._lastDiagnosticsSignature) return; - this._lastDiagnosticsSignature = signature; - diagnostics.warnings.forEach((diagnostic) => { - console.warn(`[sensor-bar-card-plus] ${diagnostic.message}`, diagnostic); - }); - diagnostics.errors.forEach((diagnostic) => { - console.warn(`[sensor-bar-card-plus] ${diagnostic.message}`, diagnostic); - }); - } - // The normalized model is internal only. It preserves today's flat YAML - // while giving future work one structured compatibility layer to build on. - normalizeCardConfig(rawConfig) { - return normalizeCardConfig(rawConfig); - } - normalizeEntityConfig(entityConfig, cardConfig) { - return normalizeEntityConfig(entityConfig, cardConfig); - } - // Internal resolvable shape preserves today's flat `value + *_entity` - // behavior while canonicalizing the normalized form to `fixed + entity`. - normalizeResolvableValue(value, entityValue, percentValue = null) { - return normalizeResolvableValue(value, entityValue, percentValue); - } - _looksLikeEntityId(value) { - return looksLikeEntityId(value); - } - _parsePercentLiteral(value) { - return parsePercentLiteral(value); - } - _getFiniteNumber(value) { - return getFiniteNumber(value); - } - normalizeStructuredResolvableValue(input, inheritedResolvable = null, defaultValue = null, options = {}) { - return normalizeStructuredResolvableValue(input, inheritedResolvable, defaultValue, options); - } - normalizeBaselineDirectionConfig(input, inheritedDirection = null) { - return normalizeBaselineDirectionConfig(input, inheritedDirection); - } - normalizeBaselineConfig(entityConfig, cardConfig) { - return normalizeBaselineConfig(entityConfig, cardConfig); - } - inferSegmentEndValues(segments, fallbackEnd = null) { - const sorted = [...segments].sort((a, b) => a.from - b.from); - return sorted.map((segment, index) => { - var _a; - let to = Number.isFinite(segment.to) ? segment.to : null; - if (!Number.isFinite(to) && index < sorted.length - 1) { - to = sorted[index + 1].from; - } - if (!Number.isFinite(to) && Number.isFinite(fallbackEnd)) { - to = fallbackEnd; - } - return { - from: segment.from, - to, - color: segment.color, - label: (_a = segment.label) != null ? _a : null - }; - }); - } - normalizeSeverityToSegments(input) { - return normalizeSeverityToSegments(input); - } - _hasResolvableMagnitude(resolvable) { - return !!resolvable && (Number.isFinite(this._getFiniteNumber(resolvable.fixed)) || Number.isFinite(resolvable.percent)); - } - normalizeGaugeSegments(input) { - return normalizeGaugeSegments(input); - } - normalizeScaleBound(entityConfig, cardConfig, key, defaultValue) { - return normalizeScaleBound(entityConfig, cardConfig, key, defaultValue); - } - normalizeScaleConfig(entityConfig, cardConfig) { - return normalizeScaleConfig(entityConfig, cardConfig); - } - _fillStyleToColorMode(fillStyle) { - return fillStyleToColorMode(fillStyle); - } - _colorModeToFillStyle(colorMode) { - return colorModeToFillStyle(colorMode); - } - _normalizeBarModeConfig(barConfig = null, flatColorMode = null) { - return normalizeBarModeConfig(barConfig, flatColorMode); - } - _resolveNormalizedBarMode(entityBar, entityConfig, cardBar, cardConfig) { - return resolveNormalizedBarMode(entityBar, entityConfig, cardBar, cardConfig); - } - _normalizeGradientStops(input) { - return normalizeGradientStops(input); - } - normalizeNeedleConfig(input, inheritedNeedle = null) { - return normalizeNeedleConfig(input, inheritedNeedle); - } - normalizeBarConfig(entityConfig, cardConfig) { - return normalizeBarConfig(entityConfig, cardConfig); - } - normalizeLayoutConfig(entityConfig, cardConfig) { - return normalizeLayoutConfig(entityConfig, cardConfig); - } - _clampSupportedRowHeight(height) { - return clampSupportedRowHeight(height); - } - normalizeFormattingConfig(entityConfig, cardConfig) { - return normalizeFormattingConfig(entityConfig, cardConfig); - } - normalizeTargetMarkerConfig(entityConfig, cardConfig) { - return normalizeTargetMarkerConfig(entityConfig, cardConfig); - } - normalizePeakMarkerConfig(entityConfig, cardConfig) { - return normalizePeakMarkerConfig(entityConfig, cardConfig); - } - _normalizeOptionalEnabled(value) { - return normalizeOptionalEnabled(value); - } - set hass(hass) { - const oldHass = this._hass; - this._hass = hass; - if (!this._config.entities) return; - if (!oldHass) { - this._update(); - return; - } - if (this._shouldUpdate(oldHass, hass)) { - this._update(oldHass); - } - } - // Merge global config with per-entity overrides - _resolve(entityCfg) { - var _a, _b, _c, _d, _e, _f, _g; - const ecfg = (entityCfg == null ? void 0 : entityCfg._normalized) ? entityCfg : this.normalizeEntityConfig(entityCfg, this._config); - const stateObj = (_c = (_b = (_a = this._hass) == null ? void 0 : _a.states) == null ? void 0 : _b[ecfg.entity]) != null ? _c : null; - return { - ...ecfg, - icon: ecfg.icon === false ? false : (_f = (_e = ecfg.icon) != null ? _e : (_d = stateObj == null ? void 0 : stateObj.attributes) == null ? void 0 : _d.icon) != null ? _f : this._getDefaultEntityIcon(stateObj, ecfg.entity), - name: (_g = ecfg.name) != null ? _g : null - }; - } - _getStateTimestamp(stateObj) { - var _a; - const rawTimestamp = (_a = stateObj == null ? void 0 : stateObj.last_updated) != null ? _a : stateObj == null ? void 0 : stateObj.last_changed; - const timestamp = rawTimestamp instanceof Date ? rawTimestamp.getTime() : Date.parse(String(rawTimestamp != null ? rawTimestamp : "")); - return Number.isFinite(timestamp) ? timestamp : Date.now(); - } - _updateExtrema(entityCfg, normalizedEntity, stateObj) { - var _a, _b, _c; - const sample = getFiniteNumber(stateObj == null ? void 0 : stateObj.state); - if (!Number.isFinite(sample)) return; - const current = (_a = this._extrema.get(entityCfg)) != null ? _a : {}; - const timestamp = this._getStateTimestamp(stateObj); - for (const key of ["peak", "floor"]) { - const marker = normalizedEntity == null ? void 0 : normalizedEntity[`${key}_marker`]; - if ((marker == null ? void 0 : marker.show) !== true) { - delete current[key]; - continue; - } - current[key] = updateExtremum( - (_b = current[key]) != null ? _b : null, - sample, - (_c = marker.reset) != null ? _c : { kind: "never" }, - key === "floor" ? "min" : "max", - timestamp - ); - } - if (current.peak || current.floor) { - this._extrema.set(entityCfg, current); - } else { - this._extrema.delete(entityCfg); - } - } - _getDefaultEntityIcon(stateObj, entityId = "") { - var _a, _b, _c; - const deviceClass = String((_b = (_a = stateObj == null ? void 0 : stateObj.attributes) == null ? void 0 : _a.device_class) != null ? _b : "").trim(); - if (deviceClass) { - const deviceClassIcons = { - apparent_power: "mdi:flash", - battery: "mdi:battery", - carbon_dioxide: "mdi:molecule-co2", - current: "mdi:current-ac", - energy: "mdi:lightning-bolt", - gas: "mdi:meter-gas", - humidity: "mdi:water-percent", - monetary: "mdi:cash", - power: "mdi:flash", - pressure: "mdi:gauge", - temperature: "mdi:thermometer", - voltage: "mdi:sine-wave", - water: "mdi:water", - weight: "mdi:weight", - wind_speed: "mdi:weather-windy" - }; - if (deviceClassIcons[deviceClass]) { - return deviceClassIcons[deviceClass]; - } - } - const domain = String(entityId || "").split(".")[0]; - const domainIcons = { - sensor: "mdi:eye", - binary_sensor: "mdi:radiobox-marked", - switch: "mdi:toggle-switch-variant", - light: "mdi:lightbulb" - }; - return (_c = domainIcons[domain]) != null ? _c : null; - } - _shouldUpdate(oldHass, newHass) { - var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k; - if (!this._config || !this._config.entities) return true; - for (const entityCfg of this._config.entities) { - const ecfg = this._resolve(entityCfg); - const entitiesToWatch = [ - entityCfg.entity, - (_b = (_a = ecfg.scale) == null ? void 0 : _a.min) == null ? void 0 : _b.entity, - (_d = (_c = ecfg.scale) == null ? void 0 : _c.max) == null ? void 0 : _d.entity, - (_f = (_e = ecfg.baseline) == null ? void 0 : _e.at) == null ? void 0 : _f.entity, - (_h = (_g = ecfg.target_marker) == null ? void 0 : _g.source) == null ? void 0 : _h.entity, - ...((_i = ecfg.generic_markers) != null ? _i : []).filter((marker) => marker.accepted).flatMap((marker) => { - var _a2, _b2; - return [(_a2 = marker.source) == null ? void 0 : _a2.entity, (_b2 = marker.label) == null ? void 0 : _b2.entity]; - }) - ].filter(Boolean); - for (const ent of entitiesToWatch) { - const oldState = (_j = oldHass.states[ent]) != null ? _j : null; - const newState = (_k = newHass.states[ent]) != null ? _k : null; - if (oldState !== newState) { - return true; - } - } - } - return false; - } - _setStyleIfChanged(el, prop, value) { - var _a, _b; - if (!(el == null ? void 0 : el.style)) return false; - const nextValue = value == null ? "" : String(value); - if (prop.startsWith("--")) { - const currentValue2 = typeof el.style.getPropertyValue === "function" ? el.style.getPropertyValue(prop) : (_a = el.style[prop]) != null ? _a : ""; - if (currentValue2 === nextValue) return false; - if (typeof el.style.setProperty === "function") { - el.style.setProperty(prop, nextValue); - } else { - el.style[prop] = nextValue; - } - return true; - } - const currentValue = (_b = el.style[prop]) != null ? _b : ""; - if (currentValue === nextValue) return false; - el.style[prop] = nextValue; - return true; - } - _setStyleTextIfChanged(el, value) { - var _a; - if (!(el == null ? void 0 : el.style)) return false; - const nextValue = value == null ? "" : String(value); - const currentValue = (_a = el.style.cssText) != null ? _a : ""; - if (currentValue === nextValue) return false; - el.style.cssText = nextValue; - return true; - } - _setTextIfChanged(el, value) { - var _a; - if (!el) return false; - const nextValue = value == null ? "" : String(value); - if (((_a = el.textContent) != null ? _a : "") === nextValue) return false; - el.textContent = nextValue; - return true; - } - _setDatasetIfChanged(el, key, value) { - var _a; - if (!(el == null ? void 0 : el.dataset)) return false; - const nextValue = value == null ? "" : String(value); - const currentValue = (_a = el.dataset[key]) != null ? _a : ""; - if (currentValue === nextValue) return false; - el.dataset[key] = nextValue; - return true; - } - _setClassNameIfChanged(el, value) { - var _a; - if (!el) return false; - const nextValue = value == null ? "" : String(value); - if (((_a = el.className) != null ? _a : "") === nextValue) return false; - el.className = nextValue; - return true; - } - _repositionAllTargetLabels() { - if (!this.shadowRoot) return; - this.shadowRoot.querySelectorAll(".row[data-entity]").forEach((row) => { - this._positionTargetLabel(row); - this._positionMarkerValueLabel(row, ".peak-value-label", ".peak-marker"); - this._positionMarkerValueLabel(row, ".floor-value-label", ".floor-marker"); - this._positionGenericMarkerLabels(row); - }); - } - _positionGenericMarkerLabels(row) { - var _a, _b; - ((_b = (_a = row.querySelectorAll) == null ? void 0 : _a.call(row, ".generic-value-label[data-marker-id]")) != null ? _b : []).forEach((label) => { - const id = label.dataset.markerId; - this._positionMarkerValueLabel( - row, - `.generic-value-label[data-marker-id="${id}"]`, - `.generic-marker[data-marker-id="${id}"]` - ); - }); - } - _positionTargetLabel(row) { - this._positionMarkerValueLabel(row, ".target-value-label", ".target-marker"); - } - _getMarkerLabel(markerEl) { - var _a; - const row = markerEl == null ? void 0 : markerEl.closest(".row"); - if (!row) return null; - if (markerEl.matches(".generic-marker[data-marker-id]")) { - const markerId = markerEl.dataset.markerId; - return (_a = [...row.querySelectorAll(".generic-value-label[data-marker-id]")].find((label) => label.dataset.markerId === markerId)) != null ? _a : null; - } - const labelSelector = markerEl.matches(".target-marker") ? ".target-value-label" : markerEl.matches(".peak-marker") ? ".peak-value-label" : markerEl.matches(".floor-marker") ? ".floor-value-label" : null; - return labelSelector ? row.querySelector(labelSelector) : null; - } - _getGenericMarkerForLabel(labelEl) { - var _a, _b; - const row = labelEl == null ? void 0 : labelEl.closest(".row"); - const markerId = (_a = labelEl == null ? void 0 : labelEl.dataset) == null ? void 0 : _a.markerId; - if (!row || !markerId) return null; - return (_b = [...row.querySelectorAll(".generic-marker[data-marker-id]")].find((marker) => marker.dataset.markerId === markerId)) != null ? _b : null; - } - _setMarkerHover(markerEl) { - var _a; - const label = this._getMarkerLabel(markerEl); - if (!label || markerEl.style.display === "none" || getComputedStyle(label).visibility !== "visible") { - this._clearMarkerHover(markerEl); - return; - } - if (((_a = this._markerHover) == null ? void 0 : _a.label) === label) return; - this._clearMarkerHover(); - label.dataset.markerHovered = "true"; - this._markerHover = { marker: markerEl, label }; - } - _clearMarkerHover(markerEl = null) { - if (!this._markerHover || markerEl && this._markerHover.marker !== markerEl) return; - delete this._markerHover.label.dataset.markerHovered; - this._markerHover = null; - } - _handleMarkerPointerOver(event) { - var _a, _b, _c; - if (event.pointerType === "touch") return; - const target = (_b = (_a = event.target) == null ? void 0 : _a.closest) == null ? void 0 : _b.call(_a, '.generic-value-label[data-show-marker="false"], .generic-marker, .target-marker, .peak-marker, .floor-marker'); - const markerEl = ((_c = target == null ? void 0 : target.matches) == null ? void 0 : _c.call(target, ".generic-value-label")) ? this._getGenericMarkerForLabel(target) : target; - if (markerEl) this._setMarkerHover(markerEl); - } - _handleMarkerPointerOut(event) { - var _a, _b; - if (event.pointerType === "touch") return; - const target = (_b = (_a = event.target) == null ? void 0 : _a.closest) == null ? void 0 : _b.call(_a, '.generic-value-label[data-show-marker="false"], .generic-marker, .target-marker, .peak-marker, .floor-marker'); - if (!target || target.contains(event.relatedTarget)) return; - const markerEl = target.matches(".generic-value-label") ? this._getGenericMarkerForLabel(target) : target; - if (!markerEl) return; - this._clearMarkerHover(markerEl); - } - _positionMarkerValueLabel(row, labelSelector, markerSelector) { - const track = row.querySelector(".bar-track"); - const label = row.querySelector(labelSelector); - const marker = row.querySelector(markerSelector); - if (!track || !label || !marker) return; - if (marker.style.display === "none" || !label.textContent.trim()) { - this._setStyleIfChanged(label, "visibility", "hidden"); - return; - } - const trackRect = track.getBoundingClientRect(); - const maxLabelWidth = Math.max(0, Math.floor(trackRect.width - 4)); - this._setStyleIfChanged(label, "maxWidth", `${maxLabelWidth}px`); - const labelRect = label.getBoundingClientRect(); - const markerPercent = parseFloat(marker.style.left); - if (!Number.isFinite(markerPercent) || trackRect.width <= 0 || labelRect.width <= 0 || maxLabelWidth <= 10) { - this._setStyleIfChanged(label, "visibility", "hidden"); - return; - } - const markerX = markerPercent / 100 * trackRect.width; - const halfLabel = labelRect.width / 2; - const clampedX = Math.max(halfLabel, Math.min(trackRect.width - halfLabel, markerX)); - this._setStyleIfChanged(label, "left", `${clampedX}px`); - this._setStyleIfChanged(label, "transform", "translateX(-50%)"); - this._setStyleIfChanged(label, "visibility", "visible"); - } - _getEntityNumericValue(entityId) { - return getEntityNumericValue(this._hass, entityId); - } - _getNumericValue(value, entityId = null) { - return getNumericValue(this._hass, value, entityId); - } - _resolvePercentValue(percent, minValue, maxValue) { - return resolvePercentValue(percent, minValue, maxValue); - } - _getNormalizedResolvableNumericValue(resolvable, minValue = null, maxValue = null) { - return getNormalizedResolvableNumericValue(this._hass, resolvable, minValue, maxValue); - } - _hexToRgb(color) { - if (!color || typeof color !== "string") return null; - const hex = color.replace("#", "").trim(); - const full = hex.length === 3 ? hex.split("").map((c) => c + c).join("") : hex; - if (!/^[0-9a-fA-F]{6}$/.test(full)) return null; - return { - r: parseInt(full.slice(0, 2), 16), - g: parseInt(full.slice(2, 4), 16), - b: parseInt(full.slice(4, 6), 16) - }; - } - _getSeverityInterpolationStops(ecfg, minValue = 0, maxValue = 100) { - const bands = this._getSegmentsForRendering(ecfg, minValue, maxValue); - const sorted = bands.filter((s) => Number.isFinite(s == null ? void 0 : s.from) && Number.isFinite(s == null ? void 0 : s.to) && (s == null ? void 0 : s.color)).sort((a, b) => a.from - b.from); - if (!sorted.length) return []; - const stops = []; - for (let i = 0; i < sorted.length; i++) { - const band = sorted[i]; - const rgb = this._hexToRgb(band.color); - if (!rgb) continue; - let anchor; - if (i === 0) { - anchor = band.from; - } else if (i === sorted.length - 1) { - anchor = band.to; - } else { - anchor = band.from + (band.to - band.from) / 2; - } - if (!stops.length || stops[stops.length - 1].p !== anchor) { - stops.push({ p: anchor, ...rgb }); - } - } - return stops; - } - _getSeverityBandGradientCss(ecfg, minValue = 0, maxValue = 100) { - const bands = this._getSegmentsForRendering(ecfg, minValue, maxValue); - const sorted = bands.filter((s) => Number.isFinite(s == null ? void 0 : s.from) && Number.isFinite(s == null ? void 0 : s.to) && (s == null ? void 0 : s.color)).sort((a, b) => a.from - b.from); - if (!sorted.length) return null; - const stops = []; - for (const band of sorted) { - stops.push(`${band.color} ${band.from}%`, `${band.color} ${band.to}%`); - } - return `linear-gradient(to right, ${stops.join(", ")})`; - } - _getSoftBandBlendWidthPct() { - return 1.5; - } - _pushGradientColorStop(stops, pos, color) { - if (!Array.isArray(stops) || !color) return; - const clampedPos = Math.min(100, Math.max(0, pos)); - const last = stops[stops.length - 1]; - if (last && last.color === color && Math.abs(last.p - clampedPos) < 1e-4) return; - stops.push({ p: clampedPos, color }); - } - _getSoftBandGradientStops(ecfg, minValue = 0, maxValue = 100) { - const bands = this._getSegmentsForRendering(ecfg, minValue, maxValue); - const sorted = bands.filter((s) => Number.isFinite(s == null ? void 0 : s.from) && Number.isFinite(s == null ? void 0 : s.to) && (s == null ? void 0 : s.color)).sort((a, b) => a.from - b.from); - if (!sorted.length) return []; - const blendWidth = this._getSoftBandBlendWidthPct(); - const blendHalf = blendWidth / 2; - const stops = []; - this._pushGradientColorStop(stops, sorted[0].from, sorted[0].color); - for (let i = 0; i < sorted.length - 1; i++) { - const current = sorted[i]; - const next = sorted[i + 1]; - const boundary = current.to; - const currentWidth = current.to - current.from; - const nextWidth = next.to - next.from; - const soften = currentWidth >= blendWidth && nextWidth >= blendWidth; - if (soften) { - this._pushGradientColorStop(stops, Math.max(current.from, boundary - blendHalf), current.color); - this._pushGradientColorStop(stops, Math.min(next.to, boundary + blendHalf), next.color); - } else { - this._pushGradientColorStop(stops, boundary, current.color); - this._pushGradientColorStop(stops, boundary, next.color); - } - } - this._pushGradientColorStop(stops, sorted[sorted.length - 1].to, sorted[sorted.length - 1].color); - return stops; - } - _getSoftBandGradientCss(ecfg, minValue = 0, maxValue = 100) { - const stops = this._getSoftBandGradientStops(ecfg, minValue, maxValue); - if (!stops.length) return null; - return `linear-gradient(to right, ${stops.map((stop) => `${stop.color} ${stop.p}%`).join(", ")})`; - } - _resolveSegmentBoundaryPct(boundary, minValue, maxValue) { - if (boundary === null || boundary === void 0) return null; - if (typeof boundary === "object" && !Array.isArray(boundary)) { - const fixed2 = this._getFiniteNumber(boundary.fixed); - if (Number.isFinite(fixed2)) { - return this._toScalePct(fixed2, minValue, maxValue); - } - if (Number.isFinite(boundary.percent)) { - return boundary.percent; - } - return null; - } - const percent = this._parsePercentLiteral(boundary); - if (Number.isFinite(percent)) { - return percent; - } - const fixed = this._getFiniteNumber(boundary); - return Number.isFinite(fixed) ? this._toScalePct(fixed, minValue, maxValue) : null; - } - _getEffectiveFillStyle(ecfg) { - var _a, _b, _c, _d; - return (_d = (_c = (_a = ecfg == null ? void 0 : ecfg.bar) == null ? void 0 : _a.fill_style) != null ? _c : this._colorModeToFillStyle((_b = ecfg == null ? void 0 : ecfg.bar) == null ? void 0 : _b.color_mode)) != null ? _d : "bands"; - } - _segmentsNeedBoundaryResolution(segments) { - return Array.isArray(segments) && segments.some((segment) => (segment == null ? void 0 : segment.from) && typeof segment.from === "object" && !Array.isArray(segment.from) || (segment == null ? void 0 : segment.to) && typeof segment.to === "object" && !Array.isArray(segment.to)); - } - _getSegmentsForRendering(ecfg, minValue = 0, maxValue = 100) { - var _a, _b; - const safeMin = Number.isFinite(minValue) ? minValue : 0; - const safeMax = Number.isFinite(maxValue) ? maxValue : 100; - const rawSegments = (Array.isArray((_a = ecfg.bar) == null ? void 0 : _a.segments) ? ecfg.bar.segments : []).filter((segment) => !(segment == null ? void 0 : segment.invalidBoundary)); - if (((_b = ecfg.bar) == null ? void 0 : _b.segment_space) === "scale" || this._segmentsNeedBoundaryResolution(rawSegments)) { - const resolvedSegments = rawSegments.map((segment) => { - var _a2; - return { - from: this._resolveSegmentBoundaryPct(segment.from, safeMin, safeMax), - to: this._resolveSegmentBoundaryPct(segment.to, safeMin, safeMax), - color: segment.color, - label: (_a2 = segment.label) != null ? _a2 : null - }; - }).filter((segment) => Number.isFinite(segment.from) && segment.color); - return this.inferSegmentEndValues(resolvedSegments, 100).filter((segment) => Number.isFinite(segment.from) && Number.isFinite(segment.to) && segment.color); - } - return this.inferSegmentEndValues(rawSegments, 100).filter((segment) => Number.isFinite(segment.from) && Number.isFinite(segment.to) && segment.color); - } - _getColor(pct, ecfg, minValue = 0, maxValue = 100) { - const fillStyle = this._getEffectiveFillStyle(ecfg); - if (fillStyle === "solid") return ecfg.bar.color; - if (fillStyle === "gradient" || fillStyle === "band_gradient" || fillStyle === "soft_bands") { - let stops; - if (fillStyle === "band_gradient") { - stops = this._getSeverityInterpolationStops(ecfg, minValue, maxValue); - } else if (fillStyle === "soft_bands") { - stops = this._getSoftBandGradientStops(ecfg, minValue, maxValue).map((stop) => { - const rgb = this._hexToRgb(stop.color); - return rgb ? { p: stop.p, ...rgb } : null; - }).filter(Boolean); - } else if (ecfg.bar.gradient_stops && ecfg.bar.gradient_stops.length >= 2) { - stops = ecfg.bar.gradient_stops.map((s) => { - const hex = s.color.replace("#", ""); - const full = hex.length === 3 ? hex.split("").map((c) => c + c).join("") : hex; - return { p: s.pos, r: parseInt(full.slice(0, 2), 16), g: parseInt(full.slice(2, 4), 16), b: parseInt(full.slice(4, 6), 16) }; - }); - stops.sort((a, b) => a.p - b.p); - } else { - stops = [ - { p: 0, r: 76, g: 175, b: 80 }, - { p: 50, r: 255, g: 152, b: 0 }, - { p: 100, r: 244, g: 67, b: 54 } - ]; - } - if (!stops || !stops.length) return ecfg.bar.color; - let lo = stops[0], hi = stops[stops.length - 1]; - for (let i = 0; i < stops.length - 1; i++) { - if (pct >= stops[i].p && pct <= stops[i + 1].p) { - lo = stops[i]; - hi = stops[i + 1]; - break; - } - } - const t = lo.p === hi.p ? 0 : (pct - lo.p) / (hi.p - lo.p); - return `rgb(${Math.round(lo.r + t * (hi.r - lo.r))},${Math.round(lo.g + t * (hi.g - lo.g))},${Math.round(lo.b + t * (hi.b - lo.b))})`; - } - for (const s of this._getSegmentsForRendering(ecfg, minValue, maxValue)) { - if (pct >= s.from && pct <= s.to) return s.color; - } - return ecfg.bar.color; - } - _buildFullScaleGradientStyle(stops) { - if (!Array.isArray(stops) || !stops.length) return null; - const cssStops = stops.map((stop) => { - var _a; - const cssColor = (_a = stop.color) != null ? _a : this._rgbToCss(stop); - return cssColor ? `${cssColor} ${stop.p}%` : null; - }).filter(Boolean); - if (!cssStops.length) return null; - return `background:linear-gradient(to right,${cssStops.join(",")});background-repeat:no-repeat;`; - } - _getGradientInterpolationStops(ecfg, minValue = 0, maxValue = 100) { - const fillStyle = this._getEffectiveFillStyle(ecfg); - if (fillStyle === "band_gradient") { - return this._getSeverityInterpolationStops(ecfg, minValue, maxValue); - } - if (fillStyle === "soft_bands") { - return this._getSoftBandGradientStops(ecfg, minValue, maxValue).map((stop) => { - const rgb = this._hexToRgb(stop.color); - return rgb ? { p: stop.p, ...rgb } : null; - }).filter(Boolean).sort((a, b) => a.p - b.p); - } - if (ecfg.bar.gradient_stops && ecfg.bar.gradient_stops.length >= 2) { - return ecfg.bar.gradient_stops.map((s) => { - const rgb = this._hexToRgb(s.color); - return rgb ? { p: s.pos, ...rgb } : null; - }).filter(Boolean).sort((a, b) => a.p - b.p); - } - return [ - { p: 0, r: 76, g: 175, b: 80 }, - { p: 50, r: 255, g: 152, b: 0 }, - { p: 100, r: 244, g: 67, b: 54 } - ]; - } - _rgbToCss(rgb) { - if (!rgb) return null; - return `rgb(${rgb.r},${rgb.g},${rgb.b})`; - } - _buildSolidGradientStyle(color) { - return `linear-gradient(to right,${color} 0%,${color} 100%)`; - } - _getBasePaintGradient(color, ecfg, minValue = 0, maxValue = 100) { - var _a; - const fillStyle = this._getEffectiveFillStyle(ecfg); - if (ecfg.bar.solid_fill) { - return this._buildSolidGradientStyle(color); - } - if (fillStyle === "bands") { - return this._getSeverityBandGradientCss(ecfg, minValue, maxValue); - } - if (fillStyle === "soft_bands") { - return this._getSoftBandGradientCss(ecfg, minValue, maxValue); - } - if (fillStyle === "gradient" || fillStyle === "band_gradient") { - const stops = this._getGradientInterpolationStops(ecfg, minValue, maxValue); - return (_a = this._buildFullScaleGradientStyle(stops)) == null ? void 0 : _a.replace(/^background:/, "").replace(/;background-repeat:no-repeat;$/, ""); - } - return this._buildSolidGradientStyle(color); - } - _getOverlayGradient(startPct, endPct, color) { - if (!color) return null; - const start = Math.min(100, Math.max(0, startPct)); - const end = Math.min(100, Math.max(0, endPct)); - if (end <= start) return null; - return `linear-gradient(to right,transparent 0%,transparent ${start}%,${color} ${start}%,${color} ${end}%,transparent ${end}%,transparent 100%)`; - } - _toScalePct(value, minValue, maxValue) { - if (!Number.isFinite(value)) return null; - const safeMin = Number.isFinite(minValue) ? minValue : 0; - const safeMax = Number.isFinite(maxValue) ? maxValue : 100; - const range = safeMax - safeMin || 1; - return Math.min(100, Math.max(0, (value - safeMin) / range * 100)); - } - _getRevealTransitionDuration(previousGeometry, nextGeometry) { - return getRevealTransitionDuration(previousGeometry, nextGeometry); - } - _resolveBaselinePct(ecfg, safeMin, safeMax) { - var _a, _b; - if (((_a = ecfg.baseline) == null ? void 0 : _a.enabled) === false) return null; - const baselineValue = this._getNormalizedResolvableNumericValue((_b = ecfg.baseline) == null ? void 0 : _b.at, safeMin, safeMax); - if (!Number.isFinite(baselineValue)) return null; - return this._toScalePct(baselineValue, safeMin, safeMax); - } - _formatNumericDisplay(rawVal, decimal = null) { - return formatNumericDisplay(rawVal, decimal); - } - _getNormalizedPercent(valuePct, baselinePct = null) { - const clampedValue = Math.min(100, Math.max(0, valuePct)); - if (!Number.isFinite(baselinePct)) { - return { - usesBaseline: false, - start: 0, - end: clampedValue, - positive: true, - baseline: null, - hidden: clampedValue <= 0 - }; - } - const clampedBaseline = Math.min(100, Math.max(0, baselinePct)); - return { - usesBaseline: true, - start: Math.min(clampedValue, clampedBaseline), - end: Math.max(clampedValue, clampedBaseline), - positive: clampedValue >= clampedBaseline, - baseline: clampedBaseline, - hidden: clampedValue === clampedBaseline - }; - } - _getEndpointSemantics(geometry) { - if (geometry == null ? void 0 : geometry.endpointSemantics) { - return geometry.endpointSemantics; - } - if (!(geometry == null ? void 0 : geometry.usesBaseline)) { - return { - left: "scale", - right: "value" - }; - } - return geometry.positive ? { left: "baseline", right: "value" } : { left: "value", right: "baseline" }; - } - _getRevealCornerRadii(geometry) { - const endpoints = this._getEndpointSemantics(geometry); - const isRounded = (endpointType) => endpointType === "value" || endpointType === "range" || endpointType === "scale"; - const leftRadius = isRounded(endpoints.left) ? "6px" : "0"; - const rightRadius = isRounded(endpoints.right) ? "6px" : "0"; - return `${leftRadius} ${rightRadius} ${rightRadius} ${leftRadius}`; - } - _getAboveTargetOverlayInterval(targetPct = null) { - if (!Number.isFinite(targetPct)) return null; - const start = Math.min(100, Math.max(0, targetPct)); - if (start >= 100) return null; - return { - start, - end: 100 - }; - } - _getAboveTargetLayerGeometry(targetPct = null) { - const interval = this._getAboveTargetOverlayInterval(targetPct); - if (!interval) return null; - return { - start: interval.start, - end: interval.end, - hidden: false - }; - } - _getFullScalePaintStyle(ecfg, color, targetPct = null, baselinePct = null, minValue = 0, maxValue = 100) { - var _a, _b, _c, _d, _e, _f; - const layers = []; - const basePaint = this._getBasePaintGradient(color, ecfg, minValue, maxValue); - const clampedBaseline = Number.isFinite(baselinePct) ? Math.min(100, Math.max(0, baselinePct)) : null; - if (Number.isFinite(clampedBaseline)) { - const belowColor = (_c = (_b = (_a = ecfg.baseline) == null ? void 0 : _a.below) == null ? void 0 : _b.color) != null ? _c : null; - const aboveColor = (_f = (_e = (_d = ecfg.baseline) == null ? void 0 : _d.above) == null ? void 0 : _e.color) != null ? _f : null; - const belowOverlay = this._getOverlayGradient(0, clampedBaseline, belowColor); - const aboveOverlay = this._getOverlayGradient(clampedBaseline, 100, aboveColor); - if (belowOverlay) layers.push(belowOverlay); - if (aboveOverlay) layers.push(aboveOverlay); - } - if (basePaint) layers.push(basePaint); - if (!layers.length) return "display:none;"; - return `display:block;inset:0;background-image:${layers.join(",")};background-repeat:no-repeat;background-size:100% 100%;`; - } - _getRevealShapeStyle(geometry, h) { - var _a, _b; - const heightValue = typeof h === "number" ? `${h}px` : h; - const start = Math.min(100, Math.max(0, (_a = geometry == null ? void 0 : geometry.start) != null ? _a : 0)); - const end = Math.min(100, Math.max(0, (_b = geometry == null ? void 0 : geometry.end) != null ? _b : 0)); - if (geometry == null ? void 0 : geometry.hidden) { - return `display:none;height:${heightValue};clip-path:inset(0 100% 0 0 round 0);`; - } - const topInset = "0"; - const rightInset = `${Math.max(0, 100 - end)}%`; - const bottomInset = "0"; - const leftInset = `${start}%`; - const radii = this._getRevealCornerRadii(geometry); - return `display:block;height:${heightValue};clip-path:inset(${topInset} ${rightInset} ${bottomInset} ${leftInset} round ${radii});`; - } - _getStaticLayerRevealStyle(geometry) { - if (!(geometry == null ? void 0 : geometry.hidden) && Number.isFinite(geometry == null ? void 0 : geometry.start) && Number.isFinite(geometry == null ? void 0 : geometry.end) && geometry.end > geometry.start) { - const start = Math.min(100, Math.max(0, geometry.start)); - const end = Math.min(100, Math.max(0, geometry.end)); - return `display:block;clip-path:inset(0 ${Math.max(0, 100 - end)}% 0 ${start}% round 0);`; - } - return "display:none;clip-path:inset(0 100% 0 0 round 0);"; - } - _getFillPaintLayers(geometry, h, ecfg, color, targetPct = null, baselinePct = null, minValue = 0, maxValue = 100) { - var _a, _b; - const basePaintStyle = this._getFullScalePaintStyle(ecfg, color, targetPct, baselinePct, minValue, maxValue); - const baseLayer = { - id: "base", - zIndex: 1, - visible: true, - paintStyle: basePaintStyle, - revealStyle: "display:block;" - }; - const aboveTargetGeometry = this._getAboveTargetLayerGeometry(targetPct); - const aboveTargetLayer = { - id: "above-target", - zIndex: 2, - visible: !!(((_a = ecfg == null ? void 0 : ecfg.bar) == null ? void 0 : _a.above_target_color) && aboveTargetGeometry), - paintStyle: ((_b = ecfg == null ? void 0 : ecfg.bar) == null ? void 0 : _b.above_target_color) ? `display:block;inset:0;background:${ecfg.bar.above_target_color};` : "display:none;", - revealStyle: aboveTargetGeometry ? this._getStaticLayerRevealStyle(aboveTargetGeometry) : this._getStaticLayerRevealStyle({ start: 0, end: 0, hidden: true }) - }; - return [baseLayer, aboveTargetLayer]; - } - _getFillRenderState(pct, h, ecfg, color, targetPct = null, baselinePct = null, minValue = 0, maxValue = 100, needleActive = false) { - var _a, _b; - const geometry = needleActive ? this._getNormalizedPercent(100, null) : this._getNormalizedPercent(pct, baselinePct); - const paintLayers = this._getFillPaintLayers(geometry, h, ecfg, color, targetPct, baselinePct, minValue, maxValue); - return { - geometry, - paintLayers, - paintStyle: (_b = (_a = paintLayers[0]) == null ? void 0 : _a.paintStyle) != null ? _b : "display:none;", - revealStyle: this._getRevealShapeStyle(geometry, h) - }; - } - _getNeedleRenderState(rawValue, ecfg, minValue = 0, maxValue = 100, baselinePct = null) { - var _a, _b, _c, _d, _e, _f, _g, _h, _i; - const needle = (_a = ecfg == null ? void 0 : ecfg.bar) == null ? void 0 : _a.needle; - if (!(needle == null ? void 0 : needle.show)) { - return { - show: false, - pct: null, - color: (_b = needle == null ? void 0 : needle.color) != null ? _b : "#ffffff", - borderColor: this._getNeedleBorderColor((_c = needle == null ? void 0 : needle.color) != null ? _c : "#ffffff"), - edge: "middle" - }; - } - if (Number.isFinite(baselinePct)) { - return { - show: false, - pct: null, - color: (_d = needle.color) != null ? _d : "#ffffff", - borderColor: this._getNeedleBorderColor((_e = needle.color) != null ? _e : "#ffffff"), - edge: "middle" - }; - } - if (!Number.isFinite(rawValue)) { - return { - show: false, - pct: null, - color: (_f = needle.color) != null ? _f : "#ffffff", - borderColor: this._getNeedleBorderColor((_g = needle.color) != null ? _g : "#ffffff"), - edge: "middle" - }; - } - const pct = Math.min(100, Math.max(0, this._toScalePct(rawValue, minValue, maxValue))); - return { - show: true, - pct, - color: (_h = needle.color) != null ? _h : "#ffffff", - borderColor: this._getNeedleBorderColor((_i = needle.color) != null ? _i : "#ffffff"), - edge: pct <= 0 ? "left" : pct >= 100 ? "right" : "middle" - }; - } - _ensureBaseDom() { - if (this._baseDomReady) return; - if (this.shadowRoot.querySelector("ha-card")) { - this._baseDomReady = true; - return; - } - this.shadowRoot.innerHTML = ` +`});function xs(n,e){if(!(n instanceof Date)||Number.isNaN(n.getTime()))return null;let t=n.getFullYear(),r=n.getMonth(),i=n.getDate(),a=n.getHours();if(e==="quarterly")return new Date(t,r,i,a,Math.floor(n.getMinutes()/15)*15,0,0).getTime();if(e==="hourly")return new Date(t,r,i,a,0,0,0).getTime();if(e==="daily")return new Date(t,r,i,0,0,0,0).getTime();if(e==="weekly"){let s=(n.getDay()+6)%7;return new Date(t,r,i-s,0,0,0,0).getTime()}return e==="monthly"?new Date(t,r,1,0,0,0,0).getTime():e==="yearly"?new Date(t,0,1,0,0,0,0).getTime():null}function $n(n){if(n===void 0&&(n="never"),typeof n!="string")return{kind:"never"};let e=n.trim().toLowerCase();if(e==="never")return{kind:"never"};if(kn.has(e))return{kind:"calendar",unit:e};let t=e.match(/^(\d+)(m|h)$/);if(!t)return{kind:"never"};let r=Number(t[1]),i=t[2];return!Number.isInteger(r)||r<1||i==="m"&&r>59||i==="h"&&r>23?{kind:"never"}:i==="m"?{kind:"duration",minutes:r}:{kind:"duration",hours:r}}function Tr(n){if(typeof n!="string")return!1;let e=n.trim().toLowerCase();if(e==="never"||kn.has(e))return!0;let t=e.match(/^(\d+)(m|h)$/);if(!t)return!1;let r=Number(t[1]);return Number.isInteger(r)&&r>=1&&(t[2]==="m"?r<=59:r<=23)}function Mn(n,e){if((n==null?void 0:n.kind)!=="calendar")return null;let t=xs(new Date(e),n.unit);return Number.isFinite(t)?String(t):null}function ws(n){return(n==null?void 0:n.kind)!=="duration"?null:Number.isInteger(n.minutes)?n.minutes*60*1e3:Number.isInteger(n.hours)?n.hours*60*60*1e3:null}function Ai(n,e,t){return(e==null?void 0:e.kind)==="duration"?{value:n,startedAtMs:Number.isFinite(t)?t:null,windowKey:null}:(e==null?void 0:e.kind)==="calendar"?{value:n,startedAtMs:null,windowKey:Mn(e,t)}:{value:n,startedAtMs:null,windowKey:null}}function Rr(n,e,t,r,i){if(!Number.isFinite(e))return n!=null?n:null;let a=ws(t);if(!n||a!==null&&Number.isFinite(n.startedAtMs)&&Number.isFinite(i)&&i-n.startedAtMs>=a)return Ai(e,t,i);if((t==null?void 0:t.kind)==="calendar"){let l=Mn(t,i);if(l!==null&&l!==n.windowKey)return Ai(e,t,i)}return(r==="min"?en.value)?{...n,value:e}:n}var kn,ir=U(()=>{kn=new Set(["quarterly","hourly","daily","weekly","monthly","yearly"])});function ce(n,e,t=null){let r={fixed:n!=null?n:null,entity:e!=null?e:null};return Number.isFinite(t)&&(r.percent=t),r}function ke(n){return typeof n=="string"&&/^[a-z0-9_]+\.[a-z0-9_]+$/i.test(n.trim())}function Me(n){if(typeof n!="string")return null;let e=n.match(/^\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*%\s*$/);if(!e)return null;let t=parseFloat(e[1]);return Number.isFinite(t)?t:null}function J(n){if(typeof n=="number")return Number.isFinite(n)?n:null;if(typeof n=="string"){let e=n.trim();if(!e)return null;let t=Number(e);return Number.isFinite(t)?t:null}return null}function $e(n,e=null,t=null,r={}){var s,l,o,d,c,u;let{allowPercent:i=!1}=r,a=e!=null?e:ce(t,null);if(n===void 0)return{...a};if(n===null)return ce(null,null);if(typeof n=="object"&&!Array.isArray(n)){let h=(l=(s=n.fixed)!=null?s:n.value)!=null?l:null,p=(o=n.entity)!=null?o:null,f=i?J(n.percent):null;return ce(h,p,f)}if(ke(n))return ce((c=(d=a.fixed)!=null?d:t)!=null?c:null,n,(u=a.percent)!=null?u:null);if(i){let h=Me(n);if(Number.isFinite(h))return ce(null,null,h)}return ce(n,null)}function ks(n){var e;return!!n&&(J((e=n.fixed)!=null?e:n.value)!==null||Number.isFinite(n.percent)||!!n.entity)}function Fn(n,e){var r,i,a,s;let t={above:((r=e==null?void 0:e.peak_marker)==null?void 0:r.show)===!0?1:0,below:(((i=e==null?void 0:e.floor_marker)==null?void 0:i.show)===!0?1:0)+(((a=e==null?void 0:e.target_marker)==null?void 0:a.enabled)!==!1&&ks((s=e==null?void 0:e.target_marker)==null?void 0:s.source)?1:0)};return n.map(l=>{let o=l.valid&&t[l.lane]<4;return o&&(t[l.lane]+=1),{...l,accepted:o}})}function En(n,e=null){if(!Array.isArray(n))return{markers:[],invalidList:n!==void 0};let t=n.map((r,i)=>{var E;if(!r||typeof r!="object"||Array.isArray(r))return{id:`generic-${i}`,index:i,valid:!1,accepted:!1,malformed:!0};let a=r.at,s=a&&typeof a=="object"&&Object.prototype.hasOwnProperty.call(a,"percent"),l=typeof a=="string"?a.trim():a,o=$e(l,null,null,{allowPercent:!0}),d=a&&typeof a=="object"&&a.entity!==void 0?a.entity:typeof l=="string"&&ke(l)?l:null,c=d!=null&&d!==""&&!ke(d),u=a&&typeof a=="object"&&a.fixed!==void 0&&a.fixed!==null&&J(a.fixed)===null,h=!!o.entity||J(o.fixed)!==null||Number.isFinite(o.percent),p=Number.isFinite(o.percent)&&(o.percent<0||o.percent>100),f=a!=null&&!s&&!c&&!u&&h&&!p,b=r.lane===void 0?"below":r.lane,g=b==="above"||b==="below",_=["circle","diamond","triangle","chevron","arrow","pin"],y=r.shape===void 0||_.includes(r.shape),m=ye(r.direction),v=r.direction!==void 0&&!["inward","outward"].includes(typeof r.direction=="string"?r.direction.trim().toLowerCase():""),S=r.label&&typeof r.label=="object"&&!Array.isArray(r.label)?r.label:{},w=Br(S),k=S.entity,M=typeof k=="string"?k.trim():"",$=k!=null&&k!==""&&!ke(M),T=M&&ke(M)?M:null,B=typeof r.show_marker=="boolean"?r.show_marker:!0;return{id:`generic-${i}`,index:i,source:{...o,entity:typeof o.entity=="string"?o.entity.trim():o.entity},lane:g?b:null,shape:y&&(E=r.shape)!=null?E:"circle",direction:m,invalidDirection:v,showMarker:B,invalidShowMarker:r.show_marker!==void 0&&typeof r.show_marker!="boolean",color:typeof r.color=="string"&&r.color.trim()?r.color:"#888888",label:{show:S.show===!0,text:w.label_text,entity:T,showValue:w.label_show_value,showUnit:w.label_show_unit,precision:w.label_precision,invalidShow:w.label_invalid_show,invalidText:w.label_invalid_text,invalidShowValue:w.label_invalid_show_value,invalidShowUnit:w.label_invalid_show_unit,invalidPrecision:w.label_invalid_precision,invalidPrecisionKey:w.label_precision_key,unsupportedUnit:w.label_unsupported_unit,invalidEntity:$},valid:f&&g,invalidSource:!f,invalidPercentage:p,unsupportedPercentField:s,invalidLane:!g,invalidShape:!y,accepted:!1}});return{markers:Fn(t,e),invalidList:!1}}function Ye(n,e=null){var r;let t=e!=null?e:{color:null};return n===void 0?{...t}:n===null?{color:null}:typeof n=="object"&&!Array.isArray(n)?{color:(r=n.color)!=null?r:null}:{color:n}}function ar(n){return n===!0?!0:n===!1?!1:null}function Gr(n,e){var a;let t=e==null?void 0:e.baseline,r=n==null?void 0:n.baseline,i={enabled:ar(t==null?void 0:t.enabled),at:t!=null&&t.at?{...t.at}:ce(null,null),above:Ye(void 0,t==null?void 0:t.above),below:Ye(void 0,t==null?void 0:t.below)};return r===void 0?i:r===null?{enabled:null,at:ce(null,null),above:{color:null},below:{color:null}}:typeof r!="object"||Array.isArray(r)?{enabled:i.enabled,at:$e(r,i.at,null),above:i.above,below:i.below}:{enabled:(a=ar(r.enabled))!=null?a:i.enabled,at:$e(r.at,i.at,null,{allowPercent:!0}),above:Ye(r.above,i.above),below:Ye(r.below,i.below)}}function $s(n,e=null){let t=[...n].sort((r,i)=>r.from-i.from);return t.map((r,i)=>{var s;let a=Number.isFinite(r.to)?r.to:null;return!Number.isFinite(a)&&iNumber.isFinite(t==null?void 0:t.from)&&(t==null?void 0:t.color)).map(t=>{var r;return{from:t.from,to:Number.isFinite(t==null?void 0:t.to)?t.to:null,color:t.color,label:(r=t.label)!=null?r:null}});return $s(e,100)}function Vn(n,e=null){var r;if(n===void 0)return{value:null,issue:null};if(n===null)return{value:null,issue:"malformed"};if(n&&typeof n=="object"&&!Array.isArray(n)){if(n.entity!==void 0&&n.entity!==null&&n.entity!=="")return{value:null,issue:"entity"};if(Object.prototype.hasOwnProperty.call(n,"percent")){let a=J(n.percent);return Number.isFinite(a)?{value:ce(null,null,a),issue:null}:{value:null,issue:"malformed"}}let i=J((r=n.fixed)!=null?r:n.value);return Number.isFinite(i)?{value:ce(i,null),issue:null}:{value:null,issue:"malformed"}}if(typeof n=="string"){let i=n.trim();if(ke(i))return{value:null,issue:"entity"};if(i.includes("%")){let a=Me(i);return Number.isFinite(a)?{value:ce(null,null,a),issue:null}:{value:null,issue:"malformed_percent"}}}let t=J(n);return Number.isFinite(t)?e==="percent"?{value:ce(null,null,t),issue:null}:{value:ce(t,null),issue:null}:{value:null,issue:"malformed"}}function Ue(n,e={}){if(!Array.isArray(n))return null;let{legacySegmentSpace:t=null}=e,r=n.map(i=>{var l,o;let a=(i==null?void 0:i.from)===void 0?{value:null,issue:"malformed"}:Vn(i.from,t),s=(i==null?void 0:i.to)===void 0?{value:null,issue:null}:i.to===null?{value:null,issue:null}:Vn(i.to,t);return i!=null&&i.color?{from:a.value,to:s.value,invalidBoundary:(l=a.issue)!=null?l:s.issue,color:i.color,label:(o=i.label)!=null?o:null}:null}).filter(Boolean);return r.map((i,a)=>{var l;let s=r.slice(a+1).find(o=>!o.invalidBoundary);return{from:i.from?{...i.from}:null,to:i.to?{...i.to}:s!=null&&s.from?{...s.from}:null,...i.invalidBoundary?{invalidBoundary:i.invalidBoundary}:{},color:i.color,label:(l=i.label)!=null?l:null}})}function zr(n,e,t,r){var b,g,_,y,m,v,S,w,k,M;let i=e==null?void 0:e.scale,a=n==null?void 0:n.scale,s=`${t}_entity`,l=i==null?void 0:i[t],o=l?ce((g=(b=l.fixed)!=null?b:l.value)!=null?g:null,(_=l.entity)!=null?_:null):ce((y=e==null?void 0:e[t])!=null?y:r,(m=e==null?void 0:e[s])!=null?m:null),d=l?l.fixed_explicit!==!1&&l.fixed!==null&&l.fixed!==void 0:(e==null?void 0:e[t])!==null&&(e==null?void 0:e[t])!==void 0,c=($,T)=>(Object.defineProperty($,"fixed_explicit",{value:T}),$);if((a==null?void 0:a[t])!==void 0){let $=a[t],T=ke($)?d:typeof $=="object"&&$!==null?((v=$.fixed)!=null?v:$.value)!==null&&((S=$.fixed)!=null?S:$.value)!==void 0:$!==null;return c($e(a[t],o,r),T)}let u=n[s],h=u!=null,p=(k=(w=n[t])!=null?w:h?null:o.fixed)!=null?k:o.entity?null:r,f=(M=u!=null?u:o.entity)!=null?M:null;return c(ce(p,f),n[t]!==null&&n[t]!==void 0||!h&&d)}function We(n,e){return{min:zr(n,e,"min",0),max:zr(n,e,"max",100)}}function Li(n){switch(n){case"solid":return"single";case"gradient":return"gradient";case"bands":return"severity";case"soft_bands":return"severity";case"band_gradient":return"severity_gradient";default:return null}}function sr(n){switch(n){case"single":return"solid";case"gradient":return"gradient";case"severity":return"bands";case"severity_gradient":return"band_gradient";default:return null}}function Or(n,e){return n!=null&&Object.prototype.hasOwnProperty.call(n,e)}function Ms(n){return[Or(n,"color")?n.color:void 0,Or(n==null?void 0:n.bar,"color")?n.bar.color:void 0].some(t=>t!=null)}function nr(n){let e=n==null?void 0:n.bar,t=[[n,"color_mode"],[e,"color_mode"],[e,"fill_style"],[n,"severity"],[n,"segments"],[e,"segments"],[n,"gradient_stops"],[e,"gradient_stops"],[e,"solid_fill"]];return{color:Ms(n),paint:t.some(([r,i])=>Or(r,i))}}function Ze(n=null,e=null){var a,s,l,o,d,c;let t=(a=n==null?void 0:n.fill_style)!=null?a:null,r=(l=(s=n==null?void 0:n.color_mode)!=null?s:e)!=null?l:null,i=(d=(o=Li(t))!=null?o:r)!=null?d:"severity";return{fill_style:(c=t!=null?t:sr(i))!=null?c:"bands",color_mode:i}}function Ui(n,e,t,r,{scopeExplicitness:i=null,inheritedExplicitness:a=null,isCardScope:s=!1}={}){let l=(i==null?void 0:i.color)===!0&&i.paint!==!0,o=(a==null?void 0:a.paint)===!0;return l&&(s||!o)?Ze({fill_style:"solid"},null):(n==null?void 0:n.fill_style)!==void 0||(n==null?void 0:n.color_mode)!==void 0||e.color_mode!==void 0?Ze(n,e.color_mode):(t==null?void 0:t.fill_style)!==void 0||(t==null?void 0:t.color_mode)!==void 0||(r==null?void 0:r.color_mode)!==void 0?Ze(t,r==null?void 0:r.color_mode):Ze(null,null)}function qi(n){return Array.isArray(n)?n.map(e=>{if(!e||typeof e!="object"||Array.isArray(e))return e;let t=Me(e.pos),r=Number.isFinite(t)?t:J(e.pos);return{...e,pos:Number.isFinite(r)?r:e.pos}}):n!=null?n:null}function Wi(n,e=null){var r,i,a,s;let t=e?{show:(r=e.show)!=null?r:!1,color:(i=e.color)!=null?i:"#ffffff"}:{show:!1,color:"#ffffff"};return n===void 0?{...t}:typeof n=="boolean"?{show:n,color:"#ffffff"}:n&&typeof n=="object"&&!Array.isArray(n)?{show:(a=n.show)!=null?a:t.show,color:(s=n.color)!=null?s:t.color}:{...t}}function Fe(n,e,t={}){var w,k,M,$,T,B,E,z,C,O,A,I,X,Y,Z,Q,he,se,le,W,ee,H,te,oe,ae,_e,de;let r=(w=t.scopeExplicitness)!=null?w:nr(n),i=(M=(k=t.inheritedExplicitness)!=null?k:e==null?void 0:e[ji])!=null?M:nr(e),a=($=t.isCardScope)!=null?$:e==null,s=e==null?void 0:e.bar,l=n==null?void 0:n.bar,o=Or(s,Ii)?s[Ii]:["percent","scale"].includes(s==null?void 0:s.segment_space)?s.segment_space:null,d=["percent","scale"].includes(l==null?void 0:l.segment_space)?l.segment_space:o,c=l==null?void 0:l.segments,u=n.segments,h=n.severity,p=(T=s==null?void 0:s.segments)!=null?T:null,f=(B=e==null?void 0:e.segments)!=null?B:null,b=(E=e==null?void 0:e.severity)!=null?E:null,g=null,_=(s==null?void 0:s.segment_space)==="percent"||(s==null?void 0:s.segment_space)==="scale"?s.segment_space:null;c!=null?(_=d,g=Ue(c,{legacySegmentSpace:_})):u!=null?g=Ue(u):h!=null?(g=Cr(h),_="percent"):p!=null?g=p.map(Ve=>({...Ve})):f!=null?g=Ue(f):b!=null&&(g=Cr(b),_="percent");let y=n!=null&&n.target&&typeof n.target=="object"&&!Array.isArray(n.target)?(z=n.target.when_exceeded)==null?void 0:z.fill_color:void 0,m=e!=null&&e.target&&typeof e.target=="object"&&!Array.isArray(e.target)?(C=e.target.when_exceeded)==null?void 0:C.fill_color:void 0,v=Ui(l,n,s,e,{scopeExplicitness:r,inheritedExplicitness:i,isCardScope:a}),S={fill_style:v.fill_style,color_mode:v.color_mode,needle:Wi(l==null?void 0:l.needle,s==null?void 0:s.needle),solid_fill:(A=(O=l==null?void 0:l.solid_fill)!=null?O:s==null?void 0:s.solid_fill)!=null?A:!1,color:(Z=(Y=(X=(I=l==null?void 0:l.color)!=null?I:n.color)!=null?X:s==null?void 0:s.color)!=null?Y:e==null?void 0:e.color)!=null?Z:"#4a9eff",gradient_stops:qi((le=(se=(he=(Q=l==null?void 0:l.gradient_stops)!=null?Q:n.gradient_stops)!=null?he:s==null?void 0:s.gradient_stops)!=null?se:e==null?void 0:e.gradient_stops)!=null?le:null),severity:g,segments:g,segment_space:_,animated:(te=(H=(ee=(W=l==null?void 0:l.animated)!=null?W:n.animated)!=null?ee:s==null?void 0:s.animated)!=null?H:e==null?void 0:e.animated)!=null?te:!0,above_target_color:(de=(_e=(ae=(oe=y!=null?y:n.above_target_color)!=null?oe:s==null?void 0:s.above_target_color)!=null?ae:m)!=null?_e:e==null?void 0:e.above_target_color)!=null?de:null};return Object.defineProperty(S,Ii,{value:d}),S}function Hi(n){return Math.max(24,n)}function Vs(n,e="left"){let t=typeof n=="string"?n.trim().toLowerCase():"";return["left","above","inside","off","hero"].includes(t)?t:e}function Fs(n,e="medium"){let t=typeof n=="string"?n.trim().toLowerCase():"";return["small","medium","large"].includes(t)?t:e}function Es(n){return Number.isFinite(n)?Math.min(112,Math.max(12,n)):null}function Nr(n,e){var p,f,b,g,_,y,m,v,S,w,k,M,$,T,B,E,z,C,O,A,I,X,Y,Z,Q;let t=e==null?void 0:e.layout,r=n==null?void 0:n.layout,i=r==null?void 0:r.label,a=r==null?void 0:r.hero,s=t==null?void 0:t.label,l=t==null?void 0:t.hero,o=!e,d=(g=(b=(f=(p=r==null?void 0:r.height)!=null?p:n.height)!=null?f:t==null?void 0:t.height)!=null?b:e==null?void 0:e.height)!=null?g:38,c=(r==null?void 0:r.height)!==void 0||n._height_explicit===!0||!o&&n.height!==void 0||(t==null?void 0:t.height_explicit)===!0||(e==null?void 0:e._height_explicit)===!0,u=Vs((v=(m=(y=(_=i==null?void 0:i.position)!=null?_:n.label_position)!=null?y:s==null?void 0:s.position)!=null?m:t==null?void 0:t.label_position)!=null?v:e==null?void 0:e.label_position,"left"),h=u==="hero"?Es((S=a==null?void 0:a.value_size)!=null?S:l==null?void 0:l.value_size):null;return{label:{position:u,width:(T=($=(M=(k=(w=i==null?void 0:i.width)!=null?w:n.label_width)!=null?k:s==null?void 0:s.width)!=null?M:t==null?void 0:t.label_width)!=null?$:e==null?void 0:e.label_width)!=null?T:100},hero:{size:Fs((Q=(Z=(Y=(X=(I=(A=(O=(C=(z=(E=(B=a==null?void 0:a.size)!=null?B:i==null?void 0:i.hero_size)!=null?E:i==null?void 0:i.heroSize)!=null?z:n.hero_size)!=null?C:n.heroSize)!=null?O:l==null?void 0:l.size)!=null?A:s==null?void 0:s.hero_size)!=null?I:s==null?void 0:s.heroSize)!=null?X:t==null?void 0:t.hero_size)!=null?Y:t==null?void 0:t.heroSize)!=null?Z:e==null?void 0:e.hero_size)!=null?Q:e==null?void 0:e.heroSize,"medium"),value_size:h},height:Hi(d),height_explicit:c}}function Ar(n,e){var i,a,s,l,o,d,c,u;let t=e==null?void 0:e.formatting,r=n==null?void 0:n.formatting;return{decimal:(l=(s=(a=(i=r==null?void 0:r.decimal)!=null?i:n.decimal)!=null?a:t==null?void 0:t.decimal)!=null?s:e==null?void 0:e.decimal)!=null?l:null,unit:(u=(c=(d=(o=r==null?void 0:r.unit)!=null?o:n.unit)!=null?d:t==null?void 0:t.unit)!=null?c:e==null?void 0:e.unit)!=null?u:null}}function qe(n){let e=String(n!=null?n:"").trim().toLowerCase();return e==="triangle"||e==="diamond"?e:"diamond"}function ye(n){return(typeof n=="string"?n.trim().toLowerCase():"")==="outward"?"outward":"inward"}function Br(n,e={}){var u,h,p;let t=n&&typeof n=="object"&&!Array.isArray(n)?n:{},r=Object.prototype.hasOwnProperty.call(t,"text"),i=r&&typeof t.text=="string"?t.text.replace(/\s+/g," ").trim():e.label_text,a=Object.prototype.hasOwnProperty.call(t,"precision"),s=Object.prototype.hasOwnProperty.call(t,"decimal"),l=a?t.precision:t.decimal,o=a||s,d=o?J(l):(u=e.label_precision)!=null?u:null,c=o&&l!==null&&l!==""&&!(Number.isInteger(d)&&d>=0);return{label_text:i!=null?i:null,label_show_value:typeof t.show_value=="boolean"?t.show_value:(h=e.label_show_value)!=null?h:!0,label_show_unit:typeof t.show_unit=="boolean"?t.show_unit:(p=e.label_show_unit)!=null?p:!0,label_precision:c?null:d,label_invalid_show:t.show!==void 0&&typeof t.show!="boolean",label_invalid_text:r&&typeof t.text!="string",label_invalid_show_value:t.show_value!==void 0&&typeof t.show_value!="boolean",label_invalid_show_unit:t.show_unit!==void 0&&typeof t.show_unit!="boolean",label_invalid_precision:c,label_precision_key:c?a?"precision":"decimal":void 0,label_unsupported_unit:Object.prototype.hasOwnProperty.call(t,"unit")}}function Dr(n){let e={};return n.label_text!==null&&n.label_text!==void 0&&(e.label_text=n.label_text),n.label_show_value===!1&&(e.label_show_value=!1),n.label_show_unit===!1&&(e.label_show_unit=!1),n.label_precision!==null&&n.label_precision!==void 0&&(e.label_precision=n.label_precision),n.label_invalid_text&&(e.label_invalid_text=!0),n.label_invalid_show_value&&(e.label_invalid_show_value=!0),n.label_invalid_show_unit&&(e.label_invalid_show_unit=!0),n.label_invalid_show&&(e.label_invalid_show=!0),n.label_invalid_precision&&(e.label_invalid_precision=!0),n.label_invalid_precision&&n.label_precision_key&&(e.label_precision_key=n.label_precision_key),n.label_unsupported_unit&&(e.label_unsupported_unit=!0),e}function Pn(n){return n!==void 0&&!["inward","outward"].includes(typeof n=="string"?n.trim().toLowerCase():"")}function Ir(n,e){var u,h,p,f,b,g,_,y,m,v,S,w,k,M,$,T,B,E,z,C,O,A,I,X,Y,Z,Q,he,se,le,W,ee,H,te,oe;let t=e==null?void 0:e.target_marker,r=n==null?void 0:n.target,i=e!=null&&e.target&&typeof e.target=="object"&&!Array.isArray(e.target)?null:(u=e==null?void 0:e.target)!=null?u:null,a=t?{...t,shape:qe(t.shape),direction:ye(t.direction)}:{enabled:null,source:ce(null,null),color:(h=e==null?void 0:e.target_color)!=null?h:"#888",show_label:(p=e==null?void 0:e.show_target_label)!=null?p:!1,...Dr(Br((f=e==null?void 0:e.target)==null?void 0:f.label)),label_decimal:(v=(m=(g=(b=e==null?void 0:e.target)==null?void 0:b.label)==null?void 0:g.precision)!=null?m:(y=(_=e==null?void 0:e.target)==null?void 0:_.label)==null?void 0:y.decimal)!=null?v:null,shape:"diamond",direction:"inward"};if(r&&typeof r=="object"&&!Array.isArray(r)){let ae=Br(r.label,a),_e={enabled:(w=(S=ar(r.enabled))!=null?S:a.enabled)!=null?w:null,source:$e(r.at,a.source,null,{allowPercent:!0}),color:(M=(k=r.color)!=null?k:n.target_color)!=null?M:a.color,show_label:(B=(T=($=r.label)==null?void 0:$.show)!=null?T:n.show_target_label)!=null?B:a.show_label,shape:Object.prototype.hasOwnProperty.call(r,"shape")?qe(r.shape):a.shape,direction:Object.prototype.hasOwnProperty.call(r,"direction")?ye(r.direction):a.direction,...Pn(r.direction)?{direction_invalid:!0}:{},...Dr(ae)},de=ae.label_precision;return de!=null&&(_e.label_decimal=de,_e.label_precision=de),_e}let s=(A=(O=(z=n.target)!=null?z:(E=a.source)==null?void 0:E.fixed)!=null?O:(C=a.source)==null?void 0:C.value)!=null?A:i,l=(Z=(Y=(X=n.target_entity)!=null?X:(I=a.source)==null?void 0:I.entity)!=null?Y:e==null?void 0:e.target_entity)!=null?Z:null,o=n.target===void 0&&n.target_entity===void 0&&(he=(Q=a.source)==null?void 0:Q.percent)!=null?he:null,d={enabled:(se=a.enabled)!=null?se:null,source:ce(s,l,o),color:(ee=(W=(le=n.target_color)!=null?le:a.color)!=null?W:e==null?void 0:e.target_color)!=null?ee:"#888",show_label:(oe=(te=(H=n.show_target_label)!=null?H:a.show_label)!=null?te:e==null?void 0:e.show_target_label)!=null?oe:!1,shape:a.shape,direction:a.direction,...Dr(a)},c=d.label_precision;return c!=null&&(d.label_decimal=c),d}function Ps(n,e){let t=n==null?void 0:n[e];if(t&&typeof t=="object"&&!Array.isArray(t))return t;let r=n==null?void 0:n[`${e}_marker`];return r&&typeof r=="object"&&!Array.isArray(r)?r:null}function Ts(n,e){var a,s,l;let t=n==null?void 0:n.label,r=t&&typeof t=="object"&&!Array.isArray(t),i=Br(t,e);return{show:r&&typeof t.show=="boolean"?t.show:(a=e.show_label)!=null?a:!1,text:i.label_text,invalidShow:i.label_invalid_show,showValue:i.label_show_value,showUnit:i.label_show_unit,precision:i.label_invalid_precision?null:(l=(s=i.label_precision)!=null?s:e.label_decimal)!=null?l:null,invalidText:i.label_invalid_text,invalidShowValue:i.label_invalid_show_value,invalidShowUnit:i.label_invalid_show_unit,invalidPrecision:i.label_invalid_precision,precisionKey:i.label_precision_key,unsupportedUnit:i.label_unsupported_unit}}function Tn(n,e,t,r={}){var _,y,m,v,S,w,k,M,$;let{legacy:i=!1,defaultColor:a="#888888"}=r,s=e==null?void 0:e[`${t}_marker`],l=Ps(n,t),o=s!=null?s:{show:i&&(_=e==null?void 0:e.show_peak)!=null?_:!1,color:i&&(y=e==null?void 0:e.peak_color)!=null?y:a,show_label:!1,label_decimal:null,label_text:null,label_show_value:!0,label_show_unit:!0,label_precision:null,reset:{kind:"never"},direction:"inward"},d=l&&Object.prototype.hasOwnProperty.call(l,"reset"),c=d?l.reset:void 0,u=d?$n(c):(m=o.reset)!=null?m:{kind:"never"},h=l==null?void 0:l.label,p=Ts(l,o),f={show:(w=(S=(v=l==null?void 0:l.enabled)!=null?v:i?n.show_peak:void 0)!=null?S:o.show)!=null?w:!1,color:($=(M=(k=l==null?void 0:l.color)!=null?k:i?n.peak_color:void 0)!=null?M:o.color)!=null?$:a,direction:l&&Object.prototype.hasOwnProperty.call(l,"direction")?ye(l.direction):ye(o.direction),...Pn(l==null?void 0:l.direction)?{direction_invalid:!0}:{}},b=s&&(Object.prototype.hasOwnProperty.call(s,"show_label")||Object.prototype.hasOwnProperty.call(s,"label_decimal")||Object.prototype.hasOwnProperty.call(s,"label_text")||Object.prototype.hasOwnProperty.call(s,"label_show_value")||Object.prototype.hasOwnProperty.call(s,"label_show_unit")||Object.prototype.hasOwnProperty.call(s,"label_precision")||Object.prototype.hasOwnProperty.call(s,"reset"));return(t==="floor"||d||h!==void 0||b)&&(f.show_label=p.show,f.label_decimal=p.precision,f.reset=u),Object.assign(f,Dr({label_text:p.text,label_show_value:p.showValue===!0?void 0:p.showValue,label_show_unit:p.showUnit===!0?void 0:p.showUnit,label_precision:p.precision,label_invalid_text:p.invalidText,label_invalid_show:p.invalidShow,label_invalid_show_value:p.invalidShowValue,label_invalid_show_unit:p.invalidShowUnit,label_invalid_precision:p.invalidPrecision,label_precision_key:p.precisionKey,label_unsupported_unit:p.unsupportedUnit})),d&&!Tr(c)&&(f.reset_invalid=!0),f}function Lr(n,e){return Tn(n,e,"peak",{legacy:!0,defaultColor:"#888888"})}function Rn(n,e){return Tn(n,e,"floor",{defaultColor:"#888888"})}function Ki(n,e){var i,a,s;let t={...n,_normalized:!0,entity:n.entity,name:(i=n.name)!=null?i:null,icon:n.icon};t.layout=Nr(n,e),t.scale=We(n,e),t.bar=Fe(n,e,{scopeExplicitness:nr(n),inheritedExplicitness:(a=e==null?void 0:e[ji])!=null?a:nr(e),isCardScope:!1}),t.baseline=Gr(n,e),t.formatting=Ar(n,e),t.target_marker=Ir(n,e),t.peak_marker=Lr(n,e),t.floor_marker=Rn(n,e);let r=n.markers===void 0?{markers:Fn((s=e==null?void 0:e.generic_markers)!=null?s:[],t),invalidList:(e==null?void 0:e.generic_markers_invalid)===!0}:En(n.markers,t);return t.generic_markers=r.markers,t.generic_markers_invalid=r.invalidList,t.min=t.scale.min.fixed,t.min_entity=t.scale.min.entity,t.max=t.scale.max.fixed,t.max_entity=t.scale.max.entity,t.height=t.layout.height,t.label_position=t.layout.label.position,t.label_width=t.layout.label.width,t.color_mode=t.bar.color_mode,t.fill_style=t.bar.fill_style,t.solid_fill=t.bar.solid_fill,t.color=t.bar.color,t.gradient_stops=t.bar.gradient_stops,t.severity=t.bar.severity,t.animated=t.bar.animated,t.above_target_color=t.bar.above_target_color,t.decimal=t.formatting.decimal,t.unit=t.formatting.unit,t.target=t.target_marker.source.fixed,t.target_entity=t.target_marker.source.entity,t.target_color=t.target_marker.color,t.show_target_label=t.target_marker.show_label,t.show_peak=t.peak_marker.show,t.peak_color=t.peak_marker.color,t}function Qe(n){var a;let e=nr(n),t={title:"",label_position:"left",color_mode:"severity",color:"#4a9eff",animated:!0,show_peak:!1,peak_color:"#888888",target:null,target_entity:null,target_color:"#888",show_target_label:!1,above_target_color:null,baseline:null,decimal:null,gradient_stops:null,min:0,min_entity:null,max:100,max_entity:null,height:38,label_width:100,severity:[{from:0,to:33,color:"#4CAF50"},{from:33,to:75,color:"#FF9800"},{from:75,to:100,color:"#F44336"}],...n};t._height_explicit=((a=n==null?void 0:n.layout)==null?void 0:a.height)!==void 0||(n==null?void 0:n.height)!==void 0,t.entity&&!t.entities&&(t.entities=[{entity:t.entity,...t.name!==void 0?{name:t.name}:{}}]),t.entities=t.entities.map(s=>typeof s=="string"?{entity:s}:s);let r={...t,_normalized:!0};Object.defineProperty(r,ji,{value:e,enumerable:!1}),r.layout=Nr(t,null),r.scale=We(n,null),r.bar=Fe(t,null,{scopeExplicitness:e,inheritedExplicitness:null,isCardScope:!0}),r.baseline=Gr(t,null),r.formatting=Ar(t,null),r.target_marker=Ir(t,null),r.peak_marker=Lr(t,null),r.floor_marker=Rn(t,null);let i=En(t.markers,r);return r.generic_markers=i.markers,r.generic_markers_invalid=i.invalidList,r.entities=t.entities.map(s=>Ki(s,r)),r}var ji,Ii,xe=U(()=>{ir();ji=Symbol("sbcp.paintExplicitness"),Ii=Symbol("sbcp.explicitSegmentSpace")});function et(n,e){var i;if(!e||!((i=n==null?void 0:n.states)!=null&&i[e]))return null;let t=n.states[e].state,r=parseFloat(t);return Number.isFinite(r)?r:null}function ze(n,e,t=null){let r=et(n,t);if(r!==null)return r;if(e==null||e==="")return null;let i=parseFloat(e);return Number.isFinite(i)?i:null}function Ji(n,e,t){if(!Number.isFinite(n))return null;let r=Number.isFinite(e)?e:0,i=Number.isFinite(t)?t:100;return r+n/100*(i-r)}function Oe(n,e,t=null,r=null){var s;if(!e)return null;let i=et(n,e.entity);if(i!==null)return i;let a=ze(n,(s=e.fixed)!=null?s:e.value,null);return a!==null?a:Number.isFinite(e.percent)?Ji(e.percent,t,r):null}function jr(n,e,t=null){var l,o,d,c,u,h,p,f,b,g,_,y;let r=m=>Number.isFinite(m==null?void 0:m.min)&&Number.isFinite(m==null?void 0:m.max)&&m.min{xe()});function Rs(n,e,t,r=null){return{code:n,message:e,path:t,entity:r}}function Ur(n){var e;return!n||n.entity||Number.isFinite(n.percent)?null:J((e=n.fixed)!=null?e:n.value)}function L(n,e,t,r,i=null){n.warnings.push(Rs(e,t,r,i))}function Ds(n,e,t,r=null){var s,l;if((s=e==null?void 0:e.min)!=null&&s.entity&&((l=e==null?void 0:e.max)!=null&&l.entity)){let o=d=>{var c,u;return d.fixed_explicit!==!1&&((c=d.fixed)!=null?c:d.value)!==null&&((u=d.fixed)!=null?u:d.value)!==void 0};o(e.min)!==o(e.max)&&L(n,"scale.orphan_fixed_fallback","Both dynamic scale bounds require a complete fixed fallback pair. The single fixed fallback will not be used if the dynamic pair becomes unavailable.",`${t}.scale`,r)}let i=Ur(e==null?void 0:e.min),a=Ur(e==null?void 0:e.max);return Number.isFinite(i)&&Number.isFinite(a)&&i>a&&L(n,"scale.min_gt_max","Scale minimum is greater than maximum.",t,r),{min:i,max:a}}function Cs(n,e,t,r,i=null){var o;let a=Ur((o=e==null?void 0:e.target_marker)==null?void 0:o.source);if(!Number.isFinite(a))return;let{min:s,max:l}=t;Number.isFinite(s)&&Number.isFinite(l)&&(al)&&L(n,"target.outside_scale","Fixed target value is outside the fixed scale range.",r,i)}function zs(n,e,t,r,i=null){var o;let a=Ur((o=e==null?void 0:e.baseline)==null?void 0:o.at);if(!Number.isFinite(a))return;let{min:s,max:l}=t;Number.isFinite(s)&&Number.isFinite(l)&&(al)&&L(n,"baseline.outside_scale","Fixed baseline value is outside the fixed scale range.",r,i)}function Os(n){var e;return!!n&&(Number.isFinite(J((e=n.fixed)!=null?e:n.value))||Number.isFinite(n.percent)||!!n.entity)}function Bs(n,e,t,r=null){var s,l,o,d;let i=((l=(s=e==null?void 0:e.bar)==null?void 0:s.needle)==null?void 0:l.show)===!0,a=((o=e==null?void 0:e.baseline)==null?void 0:o.enabled)!==!1&&Os((d=e==null?void 0:e.baseline)==null?void 0:d.at);i&&a&&L(n,"baseline-suppresses-needle","Baseline rendering suppresses the needle marker.",t,r)}function Gs(n,e,t,r=null){var i;for(let a of["peak_marker","floor_marker"])(i=e==null?void 0:e[a])!=null&&i.reset_invalid&&L(n,`${a}.invalid_reset`,"Invalid marker reset; using never.",`${t}.${a}.reset`,r)}function Ns(n,e,t,r=null){var i;for(let a of["target_marker","peak_marker","floor_marker"])(i=e==null?void 0:e[a])!=null&&i.direction_invalid&&L(n,`${a}.invalid_direction`,"Invalid marker direction; using inward.",`${t}.${a==="target_marker"?"target":a.replace("_marker","")}.direction`,r)}function As(n,e,t,r=null){var i;for(let[a,s]of[["target_marker","target"],["peak_marker","peak"],["floor_marker","floor"]]){let l=e==null?void 0:e[a],o=`${t}.${s}.label`;l!=null&&l.label_invalid_show&&L(n,"markers.invalid_label_show","Marker label show must be a boolean; using the existing fallback.",`${o}.show`,r),l!=null&&l.label_invalid_text&&L(n,"markers.invalid_label_text","Marker label text must be a string; ignoring it.",`${o}.text`,r),l!=null&&l.label_invalid_show_value&&L(n,"markers.invalid_label_show_value","Marker label show_value must be a boolean; using the inherited or default value.",`${o}.show_value`,r),l!=null&&l.label_invalid_show_unit&&L(n,"markers.invalid_label_show_unit","Marker label show_unit must be a boolean; using the inherited or default value.",`${o}.show_unit`,r),l!=null&&l.label_invalid_precision&&L(n,"markers.invalid_label_precision","Marker label precision must be a non-negative integer; using the inherited or row precision.",`${o}.${(i=l.label_precision_key)!=null?i:"precision"}`,r),l!=null&&l.label_unsupported_unit&&L(n,"markers.unsupported_label_unit","Marker label unit is no longer supported; use show_unit instead.",`${o}.unit`,r)}}function Xi(n,e,t,r,i=null){var a,s,l,o,d,c,u,h;t&&L(n,"markers.invalid_list","Markers must be a list; ignoring the malformed value.",r,i);for(let p of e!=null?e:[]){let f=`${r}[${p.index}]`;if(p.malformed){L(n,"markers.invalid_item","Marker must be an object; ignoring this item.",f,i);continue}p.invalidSource&&!p.invalidPercentage&&!p.unsupportedPercentField&&L(n,"markers.invalid_source","Marker requires a valid fixed value, percentage, or entity source.",`${f}.at`,i),p.invalidPercentage&&L(n,"markers.invalid_percentage","Marker percentage must be between 0 and 100 inclusive.",`${f}.at`,i),p.unsupportedPercentField&&L(n,"markers.invalid_source",'Use a percentage string such as "35%" instead of an at.percent field.',`${f}.at`,i),p.invalidLane&&L(n,"markers.invalid_lane","Marker lane must be above or below; ignoring this marker.",`${f}.lane`,i),p.invalidShape&&L(n,"markers.invalid_shape","Invalid marker shape; using circle.",`${f}.shape`,i),p.invalidDirection&&L(n,"markers.invalid_direction","Invalid marker direction; using inward.",`${f}.direction`,i),p.invalidShowMarker&&L(n,"markers.invalid_show_marker","Marker show_marker must be a boolean; using true.",`${f}.show_marker`,i),(a=p.label)!=null&&a.invalidEntity&&L(n,"markers.invalid_label_entity","Marker label entity must be a valid entity ID; ignoring it.",`${f}.label.entity`,i),(s=p.label)!=null&&s.invalidShow&&L(n,"markers.invalid_label_show","Marker label show must be a boolean; using the existing fallback.",`${f}.label.show`,i),(l=p.label)!=null&&l.invalidText&&L(n,"markers.invalid_label_text","Marker label text must be a string; ignoring it.",`${f}.label.text`,i),(o=p.label)!=null&&o.invalidShowValue&&L(n,"markers.invalid_label_show_value","Marker label show_value must be a boolean; using the inherited or default value.",`${f}.label.show_value`,i),(d=p.label)!=null&&d.invalidShowUnit&&L(n,"markers.invalid_label_show_unit","Marker label show_unit must be a boolean; using the inherited or default value.",`${f}.label.show_unit`,i),(c=p.label)!=null&&c.invalidPrecision&&L(n,"markers.invalid_label_precision","Marker label precision must be a non-negative integer; using the inherited or row precision.",`${f}.label.${(u=p.label.invalidPrecisionKey)!=null?u:"precision"}`,i),(h=p.label)!=null&&h.unsupportedUnit&&L(n,"markers.unsupported_label_unit","Marker label unit is no longer supported; use show_unit instead.",`${f}.label.unit`,i),p.valid&&!p.accepted&&L(n,"markers.excess_capacity","This marker is not rendered because its lane already has four markers.",f,i)}}function Dn(n){var e;return!n||n.entity||Number.isFinite(n.percent)?null:J((e=n.fixed)!=null?e:n.value)}function Is(n,e,t,r,i=null){if(!Array.isArray(e)||!e.length)return;let a=[],{min:s,max:l}=t;for(let d=0;dh&&L(n,"segments.from_gt_to","Segment start is greater than segment end.",p,i),Number.isFinite(s)&&Number.isFinite(l)&&(Number.isFinite(u)&&(ul)&&L(n,"segments.outside_scale","Segment boundary is outside the fixed scale range.",p,i),Number.isFinite(h)&&(hl)&&L(n,"segments.outside_scale","Segment boundary is outside the fixed scale range.",p,i)),Number.isFinite(u)&&Number.isFinite(h)&&a.push({from:u,to:h,path:p})}let o=[...a].sort((d,c)=>d.from-c.from);for(let d=1;d100)&&L(n,"gradient_stops.outside_range","Gradient stop position is outside 0..100.",o,r),Number.isFinite(l)&&(i.has(l)?L(n,"duplicate-gradient-stop-position","Multiple gradient stops use the same position value.",o,r):i.add(l))}}function Cn(n,e,t,r=null){var a,s;let i=Ds(n,e==null?void 0:e.scale,t,r);Cs(n,e,i,t,r),zs(n,e,i,t,r),Bs(n,e,t,r),Gs(n,e,t,r),Ns(n,e,t,r),As(n,e,t,r),Is(n,(a=e==null?void 0:e.bar)==null?void 0:a.segments,i,`${t}.bar`,r),Ls(n,(s=e==null?void 0:e.bar)==null?void 0:s.gradient_stops,`${t}.bar`,r)}function qr(n){var i,a;let e={warnings:[],errors:[]};if(!n||typeof n!="object")return e;Cn(e,n,"card"),Xi(e,n.generic_markers,n.generic_markers_invalid,"markers");let t=new Set,r=Array.isArray(n.entities)?n.entities:[];for(let s=0;s{var h,p;return u.valid&&!u.accepted&&((p=(h=n.generic_markers)==null?void 0:h[u.index])==null?void 0:p.accepted)===!0});c.length&&Xi(e,c,!1,`${d}.markers`,o)}}return e}var Yi=U(()=>{xe()});function Be(n,e=null){return Number.isFinite(n)?e!==null?n.toLocaleString(void 0,{minimumFractionDigits:e,maximumFractionDigits:e}):n.toLocaleString():String(n)}function Zi(n){return["h","m","s"].includes(String(n||"").trim())}function Qi(n,e){if(!e)return String(n);let t=String(e);return`${n}${Zi(t)?"":" "}${t}`}function or(n,e,t=null){let r=Be(n,t),i=e?String(e):"";return{value:n,number:r,unit:i,text:Qi(r,i)}}function dr(n,e,t=null,r={}){let i=typeof r.text=="string"?r.text:"",a=r.showValue===!1||n===null||n===void 0||n===""?"":Number.isFinite(n)?Be(n,t):String(n),s=r.showUnit===!1?"":String(e!=null?e:"").trim(),l=[i,a,s].filter(Boolean).join(" ");return{value:Number.isFinite(n)?n:null,semanticText:i,number:a,unit:s,showValue:r.showValue!==!1,showUnit:r.showUnit!==!1,text:l}}function zn(n){let e=String(n);return{value:null,number:e,unit:"",text:e}}var Wr=U(()=>{});function On(n){return n?n.entity!==null&&n.entity!==void 0&&n.entity!==""||n.fixed!==null&&n.fixed!==void 0&&n.fixed!==""||Number.isFinite(n.percent):!1}function Kr(n,e="circle"){return js.has(n)?n:e}function Hr({id:n,type:e,value:t=null,position:r=null,lane:i,visible:a=!1,color:s=null,label:l=null,labelVisible:o=!1,shape:d="circle",direction:c="inward",showMarker:u=!0}){return{id:n,type:e,value:t,position:r,lane:i,visible:a===!0,color:s,label:l,labelVisible:o===!0,shape:Kr(d),direction:c,showMarker:u!==!1}}function Re(n){return!!(typeof(n==null?void 0:n.text)=="string"&&n.text.trim())||(n==null?void 0:n.showValue)!==!1||(n==null?void 0:n.showUnit)!==!1}function Jr(n){var a;let e=n==null?void 0:n.target_marker,t=n==null?void 0:n.peak_marker,r=n==null?void 0:n.floor_marker,i=((a=n==null?void 0:n.generic_markers)!=null?a:[]).filter(s=>s.accepted);return{below:(e==null?void 0:e.enabled)!==!1&&On(e==null?void 0:e.source)||(r==null?void 0:r.show)===!0||i.some(s=>s.lane==="below"),above:(t==null?void 0:t.show)===!0||i.some(s=>s.lane==="above")}}function Xr(n){var a;let e=n==null?void 0:n.target_marker,t=n==null?void 0:n.peak_marker,r=n==null?void 0:n.floor_marker,i=((a=n==null?void 0:n.generic_markers)!=null?a:[]).filter(s=>s.accepted);return{below:(e==null?void 0:e.enabled)!==!1&&On(e==null?void 0:e.source)&&(e==null?void 0:e.show_label)===!0&&Re({text:e.label_text,showValue:e.label_show_value,showUnit:e.label_show_unit})||(r==null?void 0:r.show)===!0&&(r==null?void 0:r.show_label)===!0&&Re({text:r.label_text,showValue:r.label_show_value,showUnit:r.label_show_unit})||i.some(s=>{var l;return s.lane==="below"&&((l=s.label)==null?void 0:l.show)===!0&&Re(s.label)}),above:(t==null?void 0:t.show)===!0&&(t==null?void 0:t.show_label)===!0&&Re({text:t.label_text,showValue:t.label_show_value,showUnit:t.label_show_unit})||i.some(s=>{var l;return s.lane==="above"&&((l=s.label)==null?void 0:l.show)===!0&&Re(s.label)})}}function Yr({entityConfig:n,targetValue:e=null,targetPosition:t=null,targetPresentation:r=null,targetLabelPresentation:i=null,targetVisible:a=Number.isFinite(t),peakValue:s=null,peakPosition:l=null,peakPresentation:o=null,peakLabelPresentation:d=null,peakVisible:c=Number.isFinite(l),floorValue:u=null,floorPosition:h=null,floorPresentation:p=null,floorLabelPresentation:f=null,floorVisible:b=Number.isFinite(h),genericMarkers:g=[]}){var S,w,k,M,$,T,B;let _=n==null?void 0:n.target_marker,y=n==null?void 0:n.peak_marker,m=n==null?void 0:n.floor_marker,v=(_==null?void 0:_.enabled)!==!1;return[Hr({id:"target",type:"target",value:e,position:t,lane:"below",visible:v&&a,color:(S=_==null?void 0:_.color)!=null?S:null,label:i!=null?i:r,labelVisible:v&&(_==null?void 0:_.show_label)===!0&&Re({text:_.label_text,showValue:_.label_show_value,showUnit:_.label_show_unit}),shape:(w=_==null?void 0:_.shape)!=null?w:"diamond",direction:(k=_==null?void 0:_.direction)!=null?k:"inward"}),Hr({id:"floor",type:"floor",value:u,position:h,lane:"below",visible:(m==null?void 0:m.show)===!0&&b,color:(M=m==null?void 0:m.color)!=null?M:null,label:f!=null?f:p,labelVisible:(m==null?void 0:m.show)===!0&&(m==null?void 0:m.show_label)===!0&&Re({text:m.label_text,showValue:m.label_show_value,showUnit:m.label_show_unit}),shape:"triangle",direction:($=m==null?void 0:m.direction)!=null?$:"inward"}),Hr({id:"peak",type:"peak",value:s,position:l,lane:"above",visible:(y==null?void 0:y.show)===!0&&c,color:(T=y==null?void 0:y.color)!=null?T:null,label:d!=null?d:o,labelVisible:(y==null?void 0:y.show)===!0&&(y==null?void 0:y.show_label)===!0&&Re({text:y.label_text,showValue:y.label_show_value,showUnit:y.label_show_unit}),shape:"triangle",direction:(B=y==null?void 0:y.direction)!=null?B:"inward"}),...g.map(E=>Hr({id:E.id,type:"generic",value:E.value,position:E.position,lane:E.lane,visible:E.visible,color:E.color,label:E.label,labelVisible:E.labelVisible&&Re(E.label),shape:E.shape,direction:E.direction,showMarker:E.showMarker}))]}var js,Zr=U(()=>{js=new Set(["circle","diamond","triangle","chevron","arrow","pin"])});function Us(n,e=""){var a,s,l;let t=String((s=(a=n==null?void 0:n.attributes)==null?void 0:a.device_class)!=null?s:"").trim();if(t){let o={apparent_power:"mdi:flash",battery:"mdi:battery",carbon_dioxide:"mdi:molecule-co2",current:"mdi:current-ac",energy:"mdi:lightning-bolt",gas:"mdi:meter-gas",humidity:"mdi:water-percent",monetary:"mdi:cash",power:"mdi:flash",pressure:"mdi:gauge",temperature:"mdi:thermometer",voltage:"mdi:sine-wave",water:"mdi:water",weight:"mdi:weight",wind_speed:"mdi:weather-windy"};if(o[t])return o[t]}let r=String(e||"").split(".")[0];return(l={sensor:"mdi:eye",binary_sensor:"mdi:radiobox-marked",switch:"mdi:toggle-switch-variant",light:"mdi:lightbulb"}[r])!=null?l:null}function tt(n,e,t){if(!Number.isFinite(n))return null;let r=Number.isFinite(e)?e:0,a=(Number.isFinite(t)?t:100)-r||1;return Math.min(100,Math.max(0,(n-r)/a*100))}function qs(n){let e=String(n||"").trim();if(!e)return null;let t=e.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/i);if(t){let i=t[1],a=i.length===3?i.split("").map(s=>s+s).join(""):i;return{r:parseInt(a.slice(0,2),16),g:parseInt(a.slice(2,4),16),b:parseInt(a.slice(4,6),16)}}let r=e.match(/^rgba?\(([^)]+)\)$/i);if(r){let i=r[1].split(",").map(a=>a.trim());if(i.length>=3)return{r:Math.max(0,Math.min(255,parseFloat(i[0]))),g:Math.max(0,Math.min(255,parseFloat(i[1]))),b:Math.max(0,Math.min(255,parseFloat(i[2])))}}return null}function Bn(n){let e=qs(n);if(!e)return"#000000";let t=i=>{let a=i/255;return a<=.04045?a/12.92:((a+.055)/1.055)**2.4};return .2126*t(e.r)+.7152*t(e.g)+.0722*t(e.b)<.22?"#ffffff":"#000000"}function Ws(n,e,t,r,i){var o,d,c;let a=(o=n==null?void 0:n.bar)==null?void 0:o.needle;if(!(a!=null&&a.show)||Number.isFinite(i)||!Number.isFinite(e)){let u=(d=a==null?void 0:a.color)!=null?d:"#ffffff";return{show:!1,percent:null,pct:null,color:u,borderColor:Bn(u),edge:"middle"}}let s=(c=a.color)!=null?c:"#ffffff",l=Math.min(100,Math.max(0,tt(e,t,r)));return{show:!0,percent:l,pct:l,color:s,borderColor:Bn(s),edge:l<=0?"left":l>=100?"right":"middle"}}function Gn(n,e,t,r,i,a){if(!a)return{value:null,percent:null,display:null,visible:!1};let s=J(r==null?void 0:r.value);if(!Number.isFinite(s)&&!Number.isFinite(n))return{value:null,percent:null,visible:!1};let l=Number.isFinite(s)?Number.isFinite(n)?i==="min"?Math.min(s,n):Math.max(s,n):s:n;return{value:l,percent:tt(l,e,t),visible:!0}}function cr(n){var ee,H,te,oe,ae,_e,de,Ve,Ce,Ie,Le,$r,Et,Pt,Tt,Rt,Dt,Ct,zt,Ot,Bt,Gt,Nt,At,It,Lt,jt,Ut,qt,Wt,Ht,Kt,Jt,Xt,Yt,Zt,Qt,er,pe,tr,rr,Ka,Ja,Xa,Ya,Za,Qa,en,tn,rn,an,nn,sn,ln,on,dn,cn,un,hn,fn,pn,mn;let{hass:e,cardConfig:t,entityConfig:r,entityState:i,peaks:a,extrema:s,previousScale:l}=n,o=(ee=r==null?void 0:r.entity)!=null?ee:null,d=(H=i==null?void 0:i.state)!=null?H:"",c=J(d),u=(oe=(te=i==null?void 0:i.attributes)==null?void 0:te.unit_of_measurement)!=null?oe:"",h=(ae=r==null?void 0:r.formatting)==null?void 0:ae.unit,p=(_e=h!=null?h:u)!=null?_e:"",f=c!==null?p:"",{min:b,max:g}=jr(e,r==null?void 0:r.scale,l),_=c!==null?tt(c,b,g):0,y=(Ve=(de=r==null?void 0:r.formatting)==null?void 0:de.decimal)!=null?Ve:null,m=c===null?zn(d):or(c,f,y),v=((Ce=r==null?void 0:r.target_marker)==null?void 0:Ce.enabled)===!1?null:Oe(e,(Ie=r==null?void 0:r.target_marker)==null?void 0:Ie.source,b,g),S=v!==null?tt(v,b,g):null,w=v!==null,k=($r=(Le=r==null?void 0:r.target_marker)==null?void 0:Le.label_decimal)!=null?$r:y,M=v!==null?or(v,p,k):null,$=v!==null?dr(v,p,(Pt=(Et=r==null?void 0:r.target_marker)==null?void 0:Et.label_precision)!=null?Pt:k,{text:(Tt=r==null?void 0:r.target_marker)==null?void 0:Tt.label_text,showValue:(Rt=r==null?void 0:r.target_marker)==null?void 0:Rt.label_show_value,showUnit:(Dt=r==null?void 0:r.target_marker)==null?void 0:Dt.label_show_unit}):null,T=((Ct=r==null?void 0:r.baseline)==null?void 0:Ct.enabled)===!1?null:Oe(e,(zt=r==null?void 0:r.baseline)==null?void 0:zt.at,b,g),B=Number.isFinite(T)?tt(T,b,g):null,E=Number.isFinite(T),z=Number.isFinite(J(a==null?void 0:a[o]))?{value:J(a==null?void 0:a[o])}:null,C=Gn(c,b,g,(Ot=s==null?void 0:s.peak)!=null?Ot:z,"max",((Bt=r==null?void 0:r.peak_marker)==null?void 0:Bt.show)===!0),O=Gn(c,b,g,s==null?void 0:s.floor,"min",((Gt=r==null?void 0:r.floor_marker)==null?void 0:Gt.show)===!0),A=(At=(Nt=r==null?void 0:r.peak_marker)==null?void 0:Nt.label_decimal)!=null?At:y,I=(Lt=(It=r==null?void 0:r.floor_marker)==null?void 0:It.label_decimal)!=null?Lt:y,X=(Ut=(jt=r==null?void 0:r.peak_marker)==null?void 0:jt.label_precision)!=null?Ut:A,Y=(Wt=(qt=r==null?void 0:r.floor_marker)==null?void 0:qt.label_precision)!=null?Wt:I,Z=C.visible?or(C.value,p,A):null,Q=O.visible?or(O.value,p,I):null,he=C.visible?dr(C.value,p,X,{text:(Ht=r==null?void 0:r.peak_marker)==null?void 0:Ht.label_text,showValue:(Kt=r==null?void 0:r.peak_marker)==null?void 0:Kt.label_show_value,showUnit:(Jt=r==null?void 0:r.peak_marker)==null?void 0:Jt.label_show_unit}):null,se=O.visible?dr(O.value,p,Y,{text:(Xt=r==null?void 0:r.floor_marker)==null?void 0:Xt.label_text,showValue:(Yt=r==null?void 0:r.floor_marker)==null?void 0:Yt.label_show_value,showUnit:(Zt=r==null?void 0:r.floor_marker)==null?void 0:Zt.label_show_unit}):null,le=((Qt=r==null?void 0:r.generic_markers)!=null?Qt:[]).filter(fe=>fe.accepted).map(fe=>{var yn,vn,Sn,xn,wn;let Mr=Oe(e,fe.source,b,g),bn=Number.isFinite(Mr),_s=(yn=fe.label.precision)!=null?yn:y,je=fe.label.entity?(vn=e==null?void 0:e.states)==null?void 0:vn[fe.label.entity]:null,_n=je==null?void 0:je.state,Vr=typeof _n=="string"?_n.trim():"",gn=je&&Vr&&!["unknown","unavailable"].includes(Vr.toLowerCase()),gs=fe.label.entity?gn?(Sn=J(Vr))!=null?Sn:Vr:null:Mr,ys=fe.label.entity?gn&&(wn=(xn=je==null?void 0:je.attributes)==null?void 0:xn.unit_of_measurement)!=null?wn:"":p,vs=fe.label.show?dr(gs,ys,_s,{text:fe.label.text,showValue:fe.label.showValue,showUnit:fe.label.showUnit}):null;return{id:fe.id,value:Mr,position:bn?tt(Mr,b,g):null,lane:fe.lane,visible:bn,color:fe.color,shape:fe.shape,direction:fe.direction,showMarker:fe.showMarker,label:vs,labelVisible:fe.label.show}}),W=Yr({entityConfig:r,targetValue:v,targetPosition:S,targetPresentation:M,targetLabelPresentation:$,targetVisible:w,peakValue:C.value,peakPosition:C.percent,peakPresentation:Z,peakLabelPresentation:he,peakVisible:C.visible,floorValue:O.value,floorPosition:O.percent,floorPresentation:Q,floorLabelPresentation:se,floorVisible:O.visible,genericMarkers:le});return{entityId:o,name:(tr=(pe=r==null?void 0:r.name)!=null?pe:(er=i==null?void 0:i.attributes)==null?void 0:er.friendly_name)!=null?tr:o,icon:(r==null?void 0:r.icon)===!1?!1:(Ja=(Ka=r==null?void 0:r.icon)!=null?Ka:(rr=i==null?void 0:i.attributes)==null?void 0:rr.icon)!=null?Ja:Us(i,o),state:d,numericValue:c,rawUnit:u,min:b,max:g,percent:_,displayValue:m.number,displayUnit:m.unit,primaryPresentation:m,unit:m.unit,barColor:(Ya=(Xa=r==null?void 0:r.bar)==null?void 0:Xa.color)!=null?Ya:null,fillStyle:(Qa=(Za=r==null?void 0:r.bar)==null?void 0:Za.fill_style)!=null?Qa:null,target:v,targetPercent:S,targetDisplay:(en=M==null?void 0:M.text)!=null?en:null,targetPresentation:M,targetLabelPresentation:$,targetVisible:w,baseline:T,baselinePercent:B,baselineVisible:E,peak:C.value,peakPercent:C.percent,peakDisplay:(tn=Z==null?void 0:Z.number)!=null?tn:null,peakPresentation:Z,peakLabelPresentation:he,peakVisible:C.visible,floor:O.value,floorPercent:O.percent,floorDisplay:(rn=Q==null?void 0:Q.number)!=null?rn:null,floorPresentation:Q,floorLabelPresentation:se,floorVisible:O.visible,markers:W,markerLaneOccupancy:Jr(r),markerLabelLaneOccupancy:Xr(r),segments:(nn=(an=r==null?void 0:r.bar)==null?void 0:an.segments)!=null?nn:null,gradientStops:(ln=(sn=r==null?void 0:r.bar)==null?void 0:sn.gradient_stops)!=null?ln:null,needle:Ws(r,c,b,g,B),classes:{labelPosition:(cn=(dn=(on=r==null?void 0:r.layout)==null?void 0:on.label)==null?void 0:dn.position)!=null?cn:"left",animated:((un=r==null?void 0:r.bar)==null?void 0:un.animated)!==!1},attributes:{entity:o,baseHeight:(fn=(hn=r==null?void 0:r.layout)==null?void 0:hn.height)!=null?fn:38,heightExplicit:((pn=r==null?void 0:r.layout)==null?void 0:pn.height_explicit)===!0,barAnimated:((mn=r==null?void 0:r.bar)==null?void 0:mn.animated)!==!1}}}var ea=U(()=>{lr();xe();Wr();Zr()});function me(n){return n==null?"":String(n).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function ue(n,e,t){var a,s;if(!(n!=null&&n.style))return!1;let r=t==null?"":String(t);return e.startsWith("--")?(typeof n.style.getPropertyValue=="function"?n.style.getPropertyValue(e):(a=n.style[e])!=null?a:"")===r?!1:(typeof n.style.setProperty=="function"?n.style.setProperty(e,r):n.style[e]=r,!0):((s=n.style[e])!=null?s:"")===r?!1:(n.style[e]=r,!0)}function rt(n,e){var i;if(!(n!=null&&n.style))return!1;let t=e==null?"":String(e);return((i=n.style.cssText)!=null?i:"")===t?!1:(n.style.cssText=t,!0)}function Ee(n,e,t){var a;if(!(n!=null&&n.dataset))return!1;let r=t==null?"":String(t);return((a=n.dataset[e])!=null?a:"")===r?!1:(n.dataset[e]=r,!0)}function Qr(n,e){var r;if(!n)return!1;let t=e==null?"":String(e);return((r=n.className)!=null?r:"")===t?!1:(n.className=t,!0)}var ei=U(()=>{});function li(n,e){if(!n||!e||!Number.isFinite(n.valuePercent)||!Number.isFinite(e.valuePercent))return 600;let t=Number.isFinite(n.baselinePercent)?n.baselinePercent:0,r=Number.isFinite(e.baselinePercent)?e.baselinePercent:0,i=Math.max(Math.abs(e.valuePercent-n.valuePercent),Math.abs(r-t)),a=Math.round(Math.min(600,Math.max(150,600-15*Math.max(0,i-5))));return Number.isFinite(n.baselinePercent)&&Number.isFinite(e.baselinePercent)&&(n.valuePercent-n.baselinePercent)*(e.valuePercent-e.baselinePercent)<0?Math.min(a,300):a}function ti(n,e=null){let t=[...n].sort((r,i)=>r.from-i.from);return t.map((r,i)=>{var s;let a=Number.isFinite(r.to)?r.to:null;return!Number.isFinite(a)&&ir+r).join(""):e;return/^[0-9a-fA-F]{6}$/.test(t)?{r:parseInt(t.slice(0,2),16),g:parseInt(t.slice(2,4),16),b:parseInt(t.slice(4,6),16)}:null}function oi(n,e=0,t=100,r=!1){let a=Ne(n,e,t).filter(l=>Number.isFinite(l==null?void 0:l.from)&&Number.isFinite(l==null?void 0:l.to)&&(l==null?void 0:l.color)).sort((l,o)=>l.from-o.from);if(!a.length)return[];let s=[];for(let l=0;lNumber.isFinite(s==null?void 0:s.from)&&Number.isFinite(s==null?void 0:s.to)&&(s==null?void 0:s.color)).sort((s,l)=>s.from-l.from);if(!i.length)return null;let a=[];for(let s of i)a.push(`${s.color} ${s.from}%`,`${s.color} ${s.to}%`);return`linear-gradient(to right, ${a.join(", ")})`}function ra(){return 1.5}function Ge(n,e,t){if(!Array.isArray(n)||!t)return;let r=Math.min(100,Math.max(0,e)),i=n[n.length-1];i&&i.color===t&&Math.abs(i.p-r)<1e-4||n.push({p:r,color:t})}function hr(n,e=0,t=100){let i=Ne(n,e,t).filter(o=>Number.isFinite(o==null?void 0:o.from)&&Number.isFinite(o==null?void 0:o.to)&&(o==null?void 0:o.color)).sort((o,d)=>o.from-d.from);if(!i.length)return[];let a=ra(),s=a/2,l=[];Ge(l,i[0].from,i[0].color);for(let o=0;o=a&&p>=a?(Ge(l,Math.max(d.from,u-s),d.color),Ge(l,Math.min(c.to,u+s),c.color)):(Ge(l,u,d.color),Ge(l,u,c.color))}return Ge(l,i[i.length-1].to,i[i.length-1].color),l}function ia(n,e=0,t=100){let r=hr(n,e,t);return r.length?`linear-gradient(to right, ${r.map(i=>`${i.color} ${i.p}%`).join(", ")})`:null}function ri(n,e,t){if(n==null)return null;if(typeof n=="object"&&!Array.isArray(n)){let a=J(n.fixed);return Number.isFinite(a)?ur(a,e,t):Number.isFinite(n.percent)?n.percent:null}let r=Me(n);if(Number.isFinite(r))return r;let i=J(n);return Number.isFinite(i)?ur(i,e,t):null}function fr(n){var e,t,r,i;return(i=(r=(e=n==null?void 0:n.bar)==null?void 0:e.fill_style)!=null?r:sr((t=n==null?void 0:n.bar)==null?void 0:t.color_mode))!=null?i:"bands"}function aa(n){return Array.isArray(n)&&n.some(e=>(e==null?void 0:e.from)&&typeof e.from=="object"&&!Array.isArray(e.from)||(e==null?void 0:e.to)&&typeof e.to=="object"&&!Array.isArray(e.to))}function Ne(n,e=0,t=100){var s,l;let r=Number.isFinite(e)?e:0,i=Number.isFinite(t)?t:100,a=(Array.isArray((s=n.bar)==null?void 0:s.segments)?n.bar.segments:[]).filter(o=>!(o!=null&&o.invalidBoundary));if(((l=n.bar)==null?void 0:l.segment_space)==="scale"||aa(a)){let o=a.map(d=>{var c;return{from:ri(d.from,r,i),to:ri(d.to,r,i),color:d.color,label:(c=d.label)!=null?c:null}}).filter(d=>Number.isFinite(d.from)&&d.color);return ti(o,100).filter(d=>Number.isFinite(d.from)&&Number.isFinite(d.to)&&d.color)}return ti(a,100).filter(o=>Number.isFinite(o.from)&&Number.isFinite(o.to)&&o.color)}function na(n,e,t=0,r=100){let i=fr(e);if(i==="solid")return e.bar.color;if(i==="gradient"||i==="band_gradient"||i==="soft_bands"){let a;if(i==="band_gradient"?a=oi(e,t,r):i==="soft_bands"?a=hr(e,t,r).map(d=>{let c=at(d.color);return c?{p:d.p,...c}:null}).filter(Boolean):e.bar.gradient_stops&&e.bar.gradient_stops.length>=2?(a=e.bar.gradient_stops.map(d=>{let c=d.color.replace("#",""),u=c.length===3?c.split("").map(h=>h+h).join(""):c;return{p:d.pos,r:parseInt(u.slice(0,2),16),g:parseInt(u.slice(2,4),16),b:parseInt(u.slice(4,6),16)}}),a.sort((d,c)=>d.p-c.p)):a=[{p:0,r:76,g:175,b:80},{p:50,r:255,g:152,b:0},{p:100,r:244,g:67,b:54}],!a||!a.length)return e.bar.color;let s=a[0],l=a[a.length-1];for(let d=0;d=a[d].p&&n<=a[d+1].p){s=a[d],l=a[d+1];break}let o=s.p===l.p?0:(n-s.p)/(l.p-s.p);return`rgb(${Math.round(s.r+o*(l.r-s.r))},${Math.round(s.g+o*(l.g-s.g))},${Math.round(s.b+o*(l.b-s.b))})`}for(let a of Ne(e,t,r))if(n>=a.from&&n<=a.to)return a.color;return e.bar.color}function sa(n){if(!Array.isArray(n)||!n.length)return null;let e=n.map(t=>{var i;let r=(i=t.color)!=null?i:oa(t);return r?`${r} ${t.p}%`:null}).filter(Boolean);return e.length?`background:linear-gradient(to right,${e.join(",")});background-repeat:no-repeat;`:null}function la(n,e=0,t=100){let r=fr(n);return r==="band_gradient"?oi(n,e,t,!0):r==="soft_bands"?hr(n,e,t).map(i=>{let a=at(i.color);return a?{p:i.p,...a}:null}).filter(Boolean).sort((i,a)=>i.p-a.p):n.bar.gradient_stops&&n.bar.gradient_stops.length>=2?n.bar.gradient_stops.map(i=>{let a=at(i.color);return a?{p:i.pos,...a}:null}).filter(Boolean).sort((i,a)=>i.p-a.p):[{p:0,r:76,g:175,b:80},{p:50,r:255,g:152,b:0},{p:100,r:244,g:67,b:54}]}function oa(n){return n?`rgb(${n.r},${n.g},${n.b})`:null}function ii(n){return`linear-gradient(to right,${n} 0%,${n} 100%)`}function da(n,e,t=0,r=100){var a;let i=fr(e);if(e.bar.solid_fill)return ii(n);if(i==="bands")return ta(e,t,r);if(i==="soft_bands")return ia(e,t,r);if(i==="gradient"||i==="band_gradient"){let s=la(e,t,r);return(a=sa(s))==null?void 0:a.replace(/^background:/,"").replace(/;background-repeat:no-repeat;$/,"")}return ii(n)}function ai(n,e,t){if(!t)return null;let r=Math.min(100,Math.max(0,n)),i=Math.min(100,Math.max(0,e));return i<=r?null:`linear-gradient(to right,transparent 0%,transparent ${r}%,${t} ${r}%,${t} ${i}%,transparent ${i}%,transparent 100%)`}function ur(n,e,t){if(!Number.isFinite(n))return null;let r=Number.isFinite(e)?e:0,a=(Number.isFinite(t)?t:100)-r||1;return Math.min(100,Math.max(0,(n-r)/a*100))}function ni(n,e=null){let t=Math.min(100,Math.max(0,n));if(!Number.isFinite(e))return{usesBaseline:!1,start:0,end:t,positive:!0,baseline:null,hidden:t<=0};let r=Math.min(100,Math.max(0,e));return{usesBaseline:!0,start:Math.min(t,r),end:Math.max(t,r),positive:t>=r,baseline:r,hidden:t===r}}function ca(n){return n!=null&&n.endpointSemantics?n.endpointSemantics:n!=null&&n.usesBaseline?n.positive?{left:"baseline",right:"value"}:{left:"value",right:"baseline"}:{left:"scale",right:"value"}}function ua(n){let e=ca(n),t=a=>a==="value"||a==="range"||a==="scale",r=t(e.left)?"6px":"0",i=t(e.right)?"6px":"0";return`${r} ${i} ${i} ${r}`}function ha(n=null){if(!Number.isFinite(n))return null;let e=Math.min(100,Math.max(0,n));return e>=100?null:{start:e,end:100}}function fa(n=null){let e=ha(n);return e?{start:e.start,end:e.end,hidden:!1}:null}function pa(n,e,t=null,r=null,i=0,a=100){var d,c,u,h,p,f;let s=[],l=da(e,n,i,a),o=Number.isFinite(r)?Math.min(100,Math.max(0,r)):null;if(Number.isFinite(o)){let b=(u=(c=(d=n.baseline)==null?void 0:d.below)==null?void 0:c.color)!=null?u:null,g=(f=(p=(h=n.baseline)==null?void 0:h.above)==null?void 0:p.color)!=null?f:null,_=ai(0,o,b),y=ai(o,100,g);_&&s.push(_),y&&s.push(y)}return l&&s.push(l),s.length?`display:block;inset:0;background-image:${s.join(",")};background-repeat:no-repeat;background-size:100% 100%;`:"display:none;"}function ma(n,e){var c,u;let t=typeof e=="number"?`${e}px`:e,r=Math.min(100,Math.max(0,(c=n==null?void 0:n.start)!=null?c:0)),i=Math.min(100,Math.max(0,(u=n==null?void 0:n.end)!=null?u:0));if(n!=null&&n.hidden)return`display:none;height:${t};clip-path:inset(0 100% 0 0 round 0);`;let a="0",s=`${Math.max(0,100-i)}%`,l="0",o=`${r}%`,d=ua(n);return`display:block;height:${t};clip-path:inset(${a} ${s} ${l} ${o} round ${d});`}function si(n){if(!(n!=null&&n.hidden)&&Number.isFinite(n==null?void 0:n.start)&&Number.isFinite(n==null?void 0:n.end)&&n.end>n.start){let e=Math.min(100,Math.max(0,n.start)),t=Math.min(100,Math.max(0,n.end));return`display:block;clip-path:inset(0 ${Math.max(0,100-t)}% 0 ${e}% round 0);`}return"display:none;clip-path:inset(0 100% 0 0 round 0);"}function ba(n,e,t,r,i=null,a=null,s=0,l=100){var h,p;let d={id:"base",zIndex:1,visible:!0,paintStyle:pa(t,r,i,a,s,l),revealStyle:"display:block;"},c=fa(i),u={id:"above-target",zIndex:2,visible:!!((h=t==null?void 0:t.bar)!=null&&h.above_target_color&&c),paintStyle:(p=t==null?void 0:t.bar)!=null&&p.above_target_color?`display:block;inset:0;background:${t.bar.above_target_color};`:"display:none;",revealStyle:si(c||{start:0,end:0,hidden:!0})};return[d,u]}function _a(n,e,t,r,i=null,a=null,s=0,l=100,o=!1){var u,h;let d=o?ni(100,null):ni(n,a),c=ba(d,e,t,r,i,a,s,l);return{geometry:d,paintLayers:c,paintStyle:(h=(u=c[0])==null?void 0:u.paintStyle)!=null?h:"display:none;",revealStyle:ma(d,e)}}function Nn(n,e,t=0,r=100,i=null){var l,o,d,c,u,h,p,f,b;let a=(l=e==null?void 0:e.bar)==null?void 0:l.needle;if(!(a!=null&&a.show))return{show:!1,pct:null,color:(o=a==null?void 0:a.color)!=null?o:"#ffffff",borderColor:it((d=a==null?void 0:a.color)!=null?d:"#ffffff"),edge:"middle"};if(Number.isFinite(i))return{show:!1,pct:null,color:(c=a.color)!=null?c:"#ffffff",borderColor:it((u=a.color)!=null?u:"#ffffff"),edge:"middle"};if(!Number.isFinite(n))return{show:!1,pct:null,color:(h=a.color)!=null?h:"#ffffff",borderColor:it((p=a.color)!=null?p:"#ffffff"),edge:"middle"};let s=Math.min(100,Math.max(0,ur(n,t,r)));return{show:!0,pct:s,color:(f=a.color)!=null?f:"#ffffff",borderColor:it((b=a.color)!=null?b:"#ffffff"),edge:s<=0?"left":s>=100?"right":"middle"}}function di(n){let e=String(n||"").trim();if(!e)return null;let t=e.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/i);if(t){let i=t[1],a=i.length===3?i.split("").map(s=>s+s).join(""):i;return{r:parseInt(a.slice(0,2),16),g:parseInt(a.slice(2,4),16),b:parseInt(a.slice(4,6),16)}}let r=e.match(/^rgba?\(([^)]+)\)$/i);if(r){let i=r[1].split(",").map(a=>a.trim());if(i.length>=3)return{r:Math.max(0,Math.min(255,parseFloat(i[0]))),g:Math.max(0,Math.min(255,parseFloat(i[1]))),b:Math.max(0,Math.min(255,parseFloat(i[2])))}}return null}function ga({r:n,g:e,b:t}){let r=n/255,i=e/255,a=t/255,s=Math.max(r,i,a),l=Math.min(r,i,a),o=(s+l)/2;if(s===l)return{h:0,s:0,l:o*100};let d=s-l,c=o>.5?d/(2-s-l):d/(s+l),u;switch(s){case r:u=((i-a)/d+(i=Math.abs(i-10)?90:10,s=Math.max(40,Math.min(100,r));return`hsl(${Math.round(t)} ${Math.round(s)}% ${Math.round(a)}%)`}function He(n){var e;return(e=n==null?void 0:n.color)!=null?e:"#888888"}function it(n){let e=di(n);if(!e)return"#000000";let t=i=>{let a=i/255;return a<=.04045?a/12.92:((a+.055)/1.055)**2.4};return .2126*t(e.r)+.7152*t(e.g)+.0722*t(e.b)<.22?"#ffffff":"#000000"}function mr(n,e,{height:t,color:r=na(n.percent,e,n.min,n.max)}={}){var l,o,d,c;let i=n.baselinePercent,a=(l=e.baseline)==null?void 0:l.at,s=((o=e.baseline)==null?void 0:o.enabled)!==!1&&(Number.isFinite(i)||!!(a!=null&&a.entity)||(a==null?void 0:a.fixed)!==null&&(a==null?void 0:a.fixed)!==void 0||Number.isFinite(a==null?void 0:a.percent));return{animated:e.bar.animated,fill:_a(n.percent,t,e,r,n.targetPercent,i,n.min,n.max,n.needle.show),baseline:{configured:s,percent:i},needle:{...n.needle,configured:((c=(d=e.bar)==null?void 0:d.needle)==null?void 0:c.show)&&!Number.isFinite(i)},markers:n.markers}}var br=U(()=>{xe()});function nt(n){var d,c,u,h,p,f,b;if(!n)return"";let e=Number.isFinite(n.position)?n.position:0,t=He(n),r=pr(t),i=n.visible?"":"none",a=n.type==="target"?"diamond":n.type==="generic"?"circle":"triangle",s=Kr(n.shape,a),l=(d=n.lane)!=null?d:n.type==="peak"?"above":"below",o=` + + + + + + `;if(n.type==="generic"){let g=l==="above"?["peak-inset","peak-outset"]:["target-inset","target-outset"];return` +
+
+
+ +
`}return n.type==="target"||n.type==="floor"?` +
+
+
+ +
`:` +
+
+
+ +
`}function st(n,e){var s,l,o,d,c;if(!n||!e)return;let t=e.type==="generic"?"circle":e.type==="peak"||e.type==="floor"?"triangle":"diamond",r=Kr(e.shape,t);Ee(n,"shape",r),Ee(n,"lane",(s=e.lane)!=null?s:e.type==="peak"?"above":"below"),Ee(n,"direction",(l=e.direction)!=null?l:"inward"),e.type==="generic"&&Ee(n,"showMarker",e.showMarker===!1?"false":"true");let i=(o=n.querySelector)==null?void 0:o.call(n,".marker-shape-svg");i&&(Ee(i,"shape",r),Ee(i,"lane",(d=e.lane)!=null?d:e.type==="peak"?"above":"below"),Ee(i,"direction",(c=e.direction)!=null?c:"inward")),ue(n,"display",e.visible?"":"none"),e.visible&&Number.isFinite(e.position)&&ue(n,"left",`${e.position}%`);let a=He(e);ue(n,"--marker-color",a),ue(n,"--marker-contrast-color",pr(a))}function ci(n,e,{revealDuration:t=600}={}){var c,u,h;let r=n.querySelector(".bar-fill-reveal"),i=n.querySelector(".baseline-indicator"),a=n.querySelector('.bar-paint-layer[data-layer="base"]');if(r&&(rt(r,`${e.fill.revealStyle};--sbcp-reveal-duration:${t}ms`),Qr(r,`bar-fill-reveal${e.animated?"":" no-anim"}`)),i&&(ue(i,"display",Number.isFinite(e.baseline.percent)?"block":"none"),Number.isFinite(e.baseline.percent)&&ue(i,"left",`${e.baseline.percent}%`)),a){let p=e.fill.paintLayers.find(f=>f.id==="base");p&&rt(a,`z-index:${p.zIndex};${p.paintStyle}${p.revealStyle}`)}let s=n.querySelector('.bar-paint-layer[data-layer="above-target"]');if(s){let p=e.fill.paintLayers.find(f=>f.id==="above-target");p&&rt(s,`z-index:${p.zIndex};${p.paintStyle}${p.revealStyle}`)}let l=n.querySelector(".needle-marker");l&&(ue(l,"display",e.needle.show?"block":"none"),ue(l,"left",`${(c=e.needle.pct)!=null?c:0}%`),ue(l,"--needle-color",e.needle.color),ue(l,"--needle-border-color",e.needle.borderColor),Ee(l,"edge",e.needle.edge));let o=e.markers,d=p=>{var f;return(f=o.find(b=>b.id===p||b.type===p))!=null?f:null};st(n.querySelector(".target-marker"),d("target")),st(n.querySelector(".peak-marker"),d("peak")),st(n.querySelector(".floor-marker"),d("floor")),((h=(u=n.querySelectorAll)==null?void 0:u.call(n,".generic-marker[data-marker-id]"))!=null?h:[]).forEach(p=>{st(p,d(p.dataset.markerId))})}function ui(n,{insideContent:e=""}={}){var p;let t=n.fill,r=n.baseline.percent,i=n.needle,a=n.baseline.configured?``:"",s=f=>{var b;return(b=n.markers.find(g=>g.id===f||g.type===f))!=null?b:null},l=nt(s("peak")),o=nt(s("target")),d=nt(s("floor")),c=n.markers.filter(f=>f.type==="generic").map(nt).join(""),u=i.configured?` +
+
+
`:"",h=t.paintLayers.map(f=>` +
`).join("");return`
+
+${h} +
+ ${a} + ${e} + ${l} + ${o} + ${d} + ${c} + ${u} +
`}var ya=U(()=>{Zr();br();ei()});var hi,An=U(()=>{Ni();xe();lr();Yi();ea();Zr();ei();Wr();ir();br();ya();hi=class extends HTMLElement{static getConfigElement(){return document.createElement("sensor-bar-card-plus-editor")}constructor(){super(),this.attachShadow({mode:"open"}),this._baseDomReady=!1,this._config={},this._diagnostics={warnings:[],errors:[]},this._lastDiagnosticsSignature=null,this._hass=null,this._extrema=new WeakMap,this._rowScales=new WeakMap,this._rowGeneration=0,this._rowPresence=[],this._leftModeResponsiveHistory=new WeakMap,this._rendered=!1,this._resizeObserver=null,this._densityPassScheduled=!1,this._densityPassDirty=!1,this._densityPassFrame=null,this._densityPassRetries=0,this._boundWindowResize=()=>this._schedulePostLayoutDensityPass(),this._markerHover=null,this._boundMarkerPointerOver=e=>this._handleMarkerPointerOver(e),this._boundMarkerPointerOut=e=>this._handleMarkerPointerOut(e),this._ensureBaseDom()}connectedCallback(){window.addEventListener("resize",this._boundWindowResize,{passive:!0}),this._setupResizeObserver(),this._schedulePostLayoutDensityPass()}disconnectedCallback(){this._rowGeneration+=1,window.removeEventListener("resize",this._boundWindowResize),this._clearMarkerHover(),this._disconnectResizeObserver(),this._densityPassFrame&&(cancelAnimationFrame(this._densityPassFrame),this._densityPassFrame=null),this._densityPassScheduled=!1,this._densityPassDirty=!1}setConfig(e){var r;if(!e.entities&&!e.entity)throw new Error("You must define entities or entity");this._rendered=!1,this._rowGeneration+=1;let t=this._config;this._config=this.normalizeCardConfig(e),this._rowScales=new WeakMap,this._reconcileRowHistory((r=t==null?void 0:t.entities)!=null?r:[]),this._diagnostics=qr(this._config),this._logDiagnostics(),this._render()}_reconcileRowHistory(e){var c,u,h,p;let t=(f,b="")=>{if(Array.isArray(f))return f.map(t);if(f&&typeof f=="object")return Object.fromEntries(Object.keys(f).sort().filter(g=>!["severity","segment_space","label_precision_key"].includes(g)).map(g=>[g,t(f[g],g)]));if(b==="fixed")return ze(null,f);if(/color/i.test(b)&&typeof f=="string"&&/^#(?:[\da-f]{3}|[\da-f]{6})$/i.test(f.trim())){let g=f.trim().slice(1).toLowerCase();return`#${g.length===3?g.split("").map(_=>_+_).join(""):g}`}return f},r=f=>{var b;return JSON.stringify(t({entity:f.entity,name:f.name,icon:(b=f.icon)!=null?b:null,layout:f.layout,scale:Object.fromEntries(["min","max"].map(g=>[g,{...f.scale[g],fixed_explicit:f.scale[g].fixed_explicit!==!1}])),bar:f.bar,baseline:f.baseline,formatting:f.formatting,target_marker:f.target_marker,peak_marker:f.peak_marker,floor_marker:f.floor_marker,generic_markers:f.generic_markers}))},i=new Set(e),a=new Map,s=new Map(e.map(f=>[f,r(f)]));for(let f of this._config.entities){let b=r(f),g=[...i].find(_=>s.get(_)===b);g&&(a.set(f,g),i.delete(g))}let l=this._config.entities.filter(f=>!a.has(f));for(let f of l){let b=[...i].filter(_=>_.entity===f.entity),g=l.filter(_=>_.entity===f.entity);b.length!==1||g.length!==1||(a.set(f,b[0]),i.delete(b[0]))}let o=new WeakMap,d=new WeakMap;for(let[f,b]of a){let g=this._extrema.get(b),_={};for(let y of["peak","floor"]){let m=b[`${y}_marker`],v=f[`${y}_marker`];g!=null&&g[y]&&(m==null?void 0:m.show)===!0&&(v==null?void 0:v.show)===!0&&JSON.stringify(m.reset)===JSON.stringify(v.reset)&&(_[y]={...g[y]})}(_.peak||_.floor)&&o.set(f,_),((u=(c=b.layout)==null?void 0:c.label)==null?void 0:u.position)==="left"&&((p=(h=f.layout)==null?void 0:h.label)==null?void 0:p.position)==="left"&&this._leftModeResponsiveHistory.has(b)&&d.set(f,this._leftModeResponsiveHistory.get(b))}this._extrema=o,this._leftModeResponsiveHistory=d}_logDiagnostics(){var r;let e=(r=this._diagnostics)!=null?r:{warnings:[],errors:[]},t=JSON.stringify(e);t!==this._lastDiagnosticsSignature&&(this._lastDiagnosticsSignature=t,e.warnings.forEach(i=>{console.warn(`[sensor-bar-card-plus] ${i.message}`,i)}),e.errors.forEach(i=>{console.warn(`[sensor-bar-card-plus] ${i.message}`,i)}))}normalizeCardConfig(e){return Qe(e)}normalizeEntityConfig(e,t){return Ki(e,t)}normalizeResolvableValue(e,t,r=null){return ce(e,t,r)}_looksLikeEntityId(e){return ke(e)}_parsePercentLiteral(e){return Me(e)}_getFiniteNumber(e){return J(e)}normalizeStructuredResolvableValue(e,t=null,r=null,i={}){return $e(e,t,r,i)}normalizeBaselineDirectionConfig(e,t=null){return Ye(e,t)}normalizeBaselineConfig(e,t){return Gr(e,t)}inferSegmentEndValues(e,t=null){return ti(e,t)}normalizeSeverityToSegments(e){return Cr(e)}_hasResolvableMagnitude(e){return!!e&&(Number.isFinite(this._getFiniteNumber(e.fixed))||Number.isFinite(e.percent))}normalizeGaugeSegments(e){return Ue(e)}normalizeScaleBound(e,t,r,i){return zr(e,t,r,i)}normalizeScaleConfig(e,t){return We(e,t)}_fillStyleToColorMode(e){return Li(e)}_colorModeToFillStyle(e){return sr(e)}_normalizeBarModeConfig(e=null,t=null){return Ze(e,t)}_resolveNormalizedBarMode(e,t,r,i){return Ui(e,t,r,i)}_normalizeGradientStops(e){return qi(e)}normalizeNeedleConfig(e,t=null){return Wi(e,t)}normalizeBarConfig(e,t){return Fe(e,t)}normalizeLayoutConfig(e,t){return Nr(e,t)}_clampSupportedRowHeight(e){return Hi(e)}normalizeFormattingConfig(e,t){return Ar(e,t)}normalizeTargetMarkerConfig(e,t){return Ir(e,t)}normalizePeakMarkerConfig(e,t){return Lr(e,t)}_normalizeOptionalEnabled(e){return ar(e)}set hass(e){let t=this._hass;if(this._hass=e,!!this._config.entities){if(!t){this._update();return}this._shouldUpdate(t,e)&&this._update(t)}}_resolve(e){var i,a,s,l,o,d,c;let t=e!=null&&e._normalized?e:this.normalizeEntityConfig(e,this._config),r=(s=(a=(i=this._hass)==null?void 0:i.states)==null?void 0:a[t.entity])!=null?s:null;return{...t,icon:t.icon===!1?!1:(d=(o=t.icon)!=null?o:(l=r==null?void 0:r.attributes)==null?void 0:l.icon)!=null?d:this._getDefaultEntityIcon(r,t.entity),name:(c=t.name)!=null?c:null}}_getStateTimestamp(e){var i;let t=(i=e==null?void 0:e.last_updated)!=null?i:e==null?void 0:e.last_changed,r=t instanceof Date?t.getTime():Date.parse(String(t!=null?t:""));return Number.isFinite(r)?r:Date.now()}_updateExtrema(e,t,r){var l,o,d;let i=J(r==null?void 0:r.state);if(!Number.isFinite(i))return;let a=(l=this._extrema.get(e))!=null?l:{},s=this._getStateTimestamp(r);for(let c of["peak","floor"]){let u=t==null?void 0:t[`${c}_marker`];if((u==null?void 0:u.show)!==!0){delete a[c];continue}a[c]=Rr((o=a[c])!=null?o:null,i,(d=u.reset)!=null?d:{kind:"never"},c==="floor"?"min":"max",s)}a.peak||a.floor?this._extrema.set(e,a):this._extrema.delete(e)}_getDefaultEntityIcon(e,t=""){var s,l,o;let r=String((l=(s=e==null?void 0:e.attributes)==null?void 0:s.device_class)!=null?l:"").trim();if(r){let d={apparent_power:"mdi:flash",battery:"mdi:battery",carbon_dioxide:"mdi:molecule-co2",current:"mdi:current-ac",energy:"mdi:lightning-bolt",gas:"mdi:meter-gas",humidity:"mdi:water-percent",monetary:"mdi:cash",power:"mdi:flash",pressure:"mdi:gauge",temperature:"mdi:thermometer",voltage:"mdi:sine-wave",water:"mdi:water",weight:"mdi:weight",wind_speed:"mdi:weather-windy"};if(d[r])return d[r]}let i=String(t||"").split(".")[0];return(o={sensor:"mdi:eye",binary_sensor:"mdi:radiobox-marked",switch:"mdi:toggle-switch-variant",light:"mdi:lightbulb"}[i])!=null?o:null}_shouldUpdate(e,t){var r,i,a,s,l,o,d,c,u,h,p;if(!this._config||!this._config.entities)return!0;for(let f of this._config.entities){let b=this._resolve(f),g=[f.entity,(i=(r=b.scale)==null?void 0:r.min)==null?void 0:i.entity,(s=(a=b.scale)==null?void 0:a.max)==null?void 0:s.entity,(o=(l=b.baseline)==null?void 0:l.at)==null?void 0:o.entity,(c=(d=b.target_marker)==null?void 0:d.source)==null?void 0:c.entity,...((u=b.generic_markers)!=null?u:[]).filter(_=>_.accepted).flatMap(_=>{var y,m;return[(y=_.source)==null?void 0:y.entity,(m=_.label)==null?void 0:m.entity]})].filter(Boolean);for(let _ of g){let y=(h=e.states[_])!=null?h:null,m=(p=t.states[_])!=null?p:null;if(y!==m)return!0}}return!1}_setStyleIfChanged(e,t,r){return ue(e,t,r)}_setStyleTextIfChanged(e,t){return rt(e,t)}_setTextIfChanged(e,t){var i;if(!e)return!1;let r=t==null?"":String(t);return((i=e.textContent)!=null?i:"")===r?!1:(e.textContent=r,!0)}_setDatasetIfChanged(e,t,r){return Ee(e,t,r)}_setClassNameIfChanged(e,t){return Qr(e,t)}_repositionAllTargetLabels(){this.shadowRoot&&this.shadowRoot.querySelectorAll(".row[data-entity]").forEach(e=>{this._positionTargetLabel(e),this._positionMarkerValueLabel(e,".peak-value-label",".peak-marker"),this._positionMarkerValueLabel(e,".floor-value-label",".floor-marker"),this._positionGenericMarkerLabels(e)})}_positionGenericMarkerLabels(e){var t,r;((r=(t=e.querySelectorAll)==null?void 0:t.call(e,".generic-value-label[data-marker-id]"))!=null?r:[]).forEach(i=>{let a=i.dataset.markerId;this._positionMarkerValueLabel(e,`.generic-value-label[data-marker-id="${a}"]`,`.generic-marker[data-marker-id="${a}"]`)})}_positionTargetLabel(e){this._positionMarkerValueLabel(e,".target-value-label",".target-marker")}_getMarkerLabel(e){var i;let t=e==null?void 0:e.closest(".row");if(!t)return null;if(e.matches(".generic-marker[data-marker-id]")){let a=e.dataset.markerId;return(i=[...t.querySelectorAll(".generic-value-label[data-marker-id]")].find(s=>s.dataset.markerId===a))!=null?i:null}let r=e.matches(".target-marker")?".target-value-label":e.matches(".peak-marker")?".peak-value-label":e.matches(".floor-marker")?".floor-value-label":null;return r?t.querySelector(r):null}_getGenericMarkerForLabel(e){var i,a;let t=e==null?void 0:e.closest(".row"),r=(i=e==null?void 0:e.dataset)==null?void 0:i.markerId;return!t||!r?null:(a=[...t.querySelectorAll(".generic-marker[data-marker-id]")].find(s=>s.dataset.markerId===r))!=null?a:null}_setMarkerHover(e){var r;let t=this._getMarkerLabel(e);if(!t||e.style.display==="none"||getComputedStyle(t).visibility!=="visible"){this._clearMarkerHover(e);return}((r=this._markerHover)==null?void 0:r.label)!==t&&(this._clearMarkerHover(),t.dataset.markerHovered="true",this._markerHover={marker:e,label:t})}_clearMarkerHover(e=null){!this._markerHover||e&&this._markerHover.marker!==e||(delete this._markerHover.label.dataset.markerHovered,this._markerHover=null)}_handleMarkerPointerOver(e){var i,a,s;if(e.pointerType==="touch")return;let t=(a=(i=e.target)==null?void 0:i.closest)==null?void 0:a.call(i,'.generic-value-label[data-show-marker="false"], .generic-marker, .target-marker, .peak-marker, .floor-marker'),r=(s=t==null?void 0:t.matches)!=null&&s.call(t,".generic-value-label")?this._getGenericMarkerForLabel(t):t;r&&this._setMarkerHover(r)}_handleMarkerPointerOut(e){var i,a;if(e.pointerType==="touch")return;let t=(a=(i=e.target)==null?void 0:i.closest)==null?void 0:a.call(i,'.generic-value-label[data-show-marker="false"], .generic-marker, .target-marker, .peak-marker, .floor-marker');if(!t||t.contains(e.relatedTarget))return;let r=t.matches(".generic-value-label")?this._getGenericMarkerForLabel(t):t;r&&this._clearMarkerHover(r)}_positionMarkerValueLabel(e,t,r){let i=e.querySelector(".bar-track"),a=e.querySelector(t),s=e.querySelector(r);if(!i||!a||!s)return;if(s.style.display==="none"||!a.textContent.trim()){this._setStyleIfChanged(a,"visibility","hidden");return}let l=i.getBoundingClientRect(),o=Math.max(0,Math.floor(l.width-4));this._setStyleIfChanged(a,"maxWidth",`${o}px`);let d=a.getBoundingClientRect(),c=parseFloat(s.style.left);if(!Number.isFinite(c)||l.width<=0||d.width<=0||o<=10){this._setStyleIfChanged(a,"visibility","hidden");return}let u=c/100*l.width,h=d.width/2,p=Math.max(h,Math.min(l.width-h,u));this._setStyleIfChanged(a,"left",`${p}px`),this._setStyleIfChanged(a,"transform","translateX(-50%)"),this._setStyleIfChanged(a,"visibility","visible")}_getEntityNumericValue(e){return et(this._hass,e)}_getNumericValue(e,t=null){return ze(this._hass,e,t)}_resolvePercentValue(e,t,r){return Ji(e,t,r)}_getNormalizedResolvableNumericValue(e,t=null,r=null){return Oe(this._hass,e,t,r)}_hexToRgb(e){return at(e)}_getSeverityInterpolationStops(e,t=0,r=100){return oi(e,t,r)}_getSeverityBandGradientCss(e,t=0,r=100){return ta(e,t,r)}_getSoftBandBlendWidthPct(){return ra()}_pushGradientColorStop(e,t,r){return Ge(e,t,r)}_getSoftBandGradientStops(e,t=0,r=100){return hr(e,t,r)}_getSoftBandGradientCss(e,t=0,r=100){return ia(e,t,r)}_resolveSegmentBoundaryPct(e,t,r){return ri(e,t,r)}_getEffectiveFillStyle(e){return fr(e)}_segmentsNeedBoundaryResolution(e){return aa(e)}_getSegmentsForRendering(e,t=0,r=100){return Ne(e,t,r)}_getColor(e,t,r=0,i=100){return na(e,t,r,i)}_buildFullScaleGradientStyle(e){return sa(e)}_getGradientInterpolationStops(e,t=0,r=100){return la(e,t,r)}_rgbToCss(e){return oa(e)}_buildSolidGradientStyle(e){return ii(e)}_getBasePaintGradient(e,t,r=0,i=100){return da(e,t,r,i)}_getOverlayGradient(e,t,r){return ai(e,t,r)}_toScalePct(e,t,r){return ur(e,t,r)}_getRevealTransitionDuration(e,t){return li(e,t)}_resolveBaselinePct(e,t,r){var a,s;if(((a=e.baseline)==null?void 0:a.enabled)===!1)return null;let i=this._getNormalizedResolvableNumericValue((s=e.baseline)==null?void 0:s.at,t,r);return Number.isFinite(i)?this._toScalePct(i,t,r):null}_formatNumericDisplay(e,t=null){return Be(e,t)}_getNormalizedPercent(e,t=null){return ni(e,t)}_getEndpointSemantics(e){return ca(e)}_getRevealCornerRadii(e){return ua(e)}_getAboveTargetOverlayInterval(e=null){return ha(e)}_getAboveTargetLayerGeometry(e=null){return fa(e)}_getFullScalePaintStyle(e,t,r=null,i=null,a=0,s=100){return pa(e,t,r,i,a,s)}_getRevealShapeStyle(e,t){return ma(e,t)}_getStaticLayerRevealStyle(e){return si(e)}_getFillPaintLayers(e,t,r,i,a=null,s=null,l=0,o=100){return ba(e,t,r,i,a,s,l,o)}_getFillRenderState(e,t,r,i,a=null,s=null,l=0,o=100,d=!1){return _a(e,t,r,i,a,s,l,o,d)}_getNeedleRenderState(e,t,r=0,i=100,a=null){return Nn(e,t,r,i,a)}_ensureBaseDom(){if(!this._baseDomReady){if(this.shadowRoot.querySelector("ha-card")){this._baseDomReady=!0;return}this.shadowRoot.innerHTML=` + `});function yi({group:n,title:e,summary:t,content:r,inactive:i=!1},a){return` +
+ +
+ ${r} +
+
+ `}function vi({renderGroup:n,target:e,peak:t,floor:r,references:i}){return`
+
+

Markers

+
Configure Target, Peak, Floor, and custom reference markers.
+
+
+ ${n({group:"marker-target",title:"Target",...e})} + ${n({group:"marker-peak",title:"Peak",...t})} + ${n({group:"marker-floor",title:"Floor",...r})} + ${n({group:"generic-markers",title:"Generic Reference Markers",...i})} +
+
`}var xa=U(()=>{ve()});var ct,wa=U(()=>{re();ct=class{constructor(){this.values=new Map}reset(){this.values.clear()}handle(e,t=!1){var u,h,p,f,b,g;let r=e.target;if(t&&(r==null?void 0:r.type)==="number")return!0;let i=(f=(p=(u=r==null?void 0:r.dataset)==null?void 0:u.field)!=null?p:(h=r==null?void 0:r.dataset)==null?void 0:h.kind)!=null?f:"";if(i==="generic-marker-source-mode"&&r.id)for(let _ of["fixed","fallback","percent"])this.values.delete(r.id.replace(/source-mode$/,_));if((r==null?void 0:r.type)!=="number"||!r.id||/^(?:entity-)?gradient-/.test(i)||/^(?:target|baseline)-percent$/.test(i))return!1;if(r.isConnected===!1)return!0;let a=r.value,s=i==="generic-marker-percent",o=/(?:precision|decimal)$/.test(i)?Te(a):ne(a),d=o!==null&&!((b=r.validity)!=null&&b.badInput)&&(!/(?:layout-height|override-height)$/.test(i)||o>=24),c=e.type==="change"&&a===""&&!((g=r.validity)!=null&&g.badInput)&&!s;return d||c?(this.values.delete(r.id),!1):(this.values.set(r.id,a),!0)}captureFocus(e){let t=e.activeElement;return t&&this.values.has(t.id)?t.id:null}apply(e,t=null){var r,i,a,s,l,o;for(let[d,c]of this.values){let u=(i=(r=e.getElementById)==null?void 0:r.call(e,d))!=null?i:e.querySelector(`#${d}`);if(!u){this.values.delete(d);continue}u!==e.activeElement&&(u.value=c)}t&&((o=(l=(s=(a=e.getElementById)==null?void 0:a.call(e,t))!=null?s:e.querySelector(`#${t}`))==null?void 0:l.focus)==null||o.call(l,{preventScroll:!0}))}}});function Je(n,e,t,r=!1){return n.source(e,t,r)}function Si(n,e){return Je(n,{type:"card"},e).fixed}function xi(n,e){return Je(n,{type:"card"},e).entity}function vr(n,e,t,r,i){return n.setSource(e,t,r,i)}function Js(n,e){let t=r=>r!==""&&r!==void 0&&r!==null;return["min","max"].some(r=>{let i=Je(n,e,r);return t(i==null?void 0:i.fixed)||t(i==null?void 0:i.entity)})}function qn(n,e){let t=[],r=Je(n,e,"min"),i=Je(n,e,"max");return r.entity?t.push("Min entity"):r.fixed!==""&&r.fixed!==void 0&&t.push(`Min ${r.fixed}`),i.entity?t.push("Max entity"):i.fixed!==""&&i.fixed!==void 0&&t.push(`Max ${i.fixed}`),t.length?t.join(" \u2022 "):"Inherited"}function ka(n,e){return n.mutate(e,t=>{let r=x(t,["scale","min"]);return r=x(r,["scale","max"]),r=x(r,["min"]),r=x(r,["max"]),r=x(r,["min_entity"]),r=x(r,["max_entity"]),G(r,["scale"])},{rerender:!0})}function ut(n,{field:e,kind:t,index:r,value:i}){if(e==="scale-min"||e==="scale-max")return vr(n,{type:"card"},e.slice(6),"fixed",i),!0;if(t==="scale-min-entity-source"||t==="scale-max-entity-source")return vr(n,{type:"card"},t.split("-")[1],"entity",i),!0;let a={type:"entity",index:Number(r)};return t==="entity-scale-inherit"?(i&&ka(n,a),!0):["entity-override-min","entity-override-max","entity-override-min-entity-source","entity-override-max-entity-source"].includes(t)?(vr(n,a,t.split("-")[2],t.endsWith("-entity-source")?"entity":"fixed",i),!0):!1}function wi(n,e){if((e==null?void 0:e.type)==="entity"){let s=e.index,l=Je(n,e,"min",!0),o=Je(n,e,"max",!0),d=!Js(n,e);return` +
+
+ + +
+
+
Fixed values are used as fallback when entity values are unavailable.
+
+ + +
+
+ + ${be("entity-override-min-entity-source",s,l.entity,"inherit card default")} +
+
+ + +
+
+ + ${be("entity-override-max-entity-source",s,o.entity,"inherit card default")} +
+ `}let t=Si(n,"min"),r=Si(n,"max"),i=xi(n,"min"),a=xi(n,"max");return`
+
+

Scale

+
Entity values take precedence. Fixed values are used as fallback.
+
+
+
+ + +
+
+ + ${be("scale-min-entity-source","card",i)} +
+
+ + +
+
+ + ${be("scale-max-entity-source","card",a)} +
+
+
`}var $a=U(()=>{re();ve()});function De(n,e,t){var r,i;return(i=(r=n.read(e,["formatting",t]))!=null?r:n.read(e,[t]))!=null?i:""}function ki(n,e,t){let r=[["formatting",t],[t]];for(let i of r){let a=n.read(e,i);if(a!=null&&a!=="")return a}if((e==null?void 0:e.type)==="entity")for(let i of r){let a=n.read({type:"card"},i);if(a!=null&&a!=="")return a}return""}function $i(n,e,t){let r=N(t).trim();return n.mutate(e,i=>{let a=r?P(i,["formatting","unit"],r):x(i,["formatting","unit"]);return a=x(a,["unit"]),G(a,["formatting"])})}function Mi(n,e,t){let r=Te(t),i=t===""||t===null||t===void 0;return!i&&r===null?!1:n.mutate(e,a=>{let s=i?x(a,["formatting","decimal"]):P(a,["formatting","decimal"],r);return s=x(s,["decimal"]),G(s,["formatting"])})}function Ma(n,e){return n.mutate(e,t=>{let r=Pe(t,[["formatting","unit"],["formatting","decimal"],["unit"],["decimal"]]);return G(r,["formatting"])},{rerender:!0})}function Va(n,e){var r;let t=(r=n.read(e,["formatting"]))!=null?r:{};return V(t)&&(Object.prototype.hasOwnProperty.call(t,"unit")||Object.prototype.hasOwnProperty.call(t,"decimal"))?!0:n.read(e,["unit"])!==void 0||n.read(e,["decimal"])!==void 0}function Wn(n,e){let t=[],r=De(n,e,"unit"),i=De(n,e,"decimal");return r!==""&&t.push(`Unit ${r}`),i!==""&&t.push(`${i} ${Number(i)===1?"decimal":"decimals"}`),t.length?t.join(" \u2022 "):"Inherited"}function Sr(n,{field:e,kind:t,index:r,value:i}){if(e==="formatting-unit"||e==="formatting-decimal")return(e==="formatting-unit"?$i:Mi)(n,{type:"card"},i),!0;let a={type:"entity",index:Number(r)};return t==="entity-formatting-inherit"?(i&&Ma(n,a),!0):t==="entity-formatting-unit"||t==="entity-formatting-decimal"?((t==="entity-formatting-unit"?$i:Mi)(n,a,i),!0):!1}function Vi(n,e){if((e==null?void 0:e.type)==="entity"){let i=e.index,a=!Va(n,e);return` +
+
+ + +
+
+
+ + +
+
+ + +
+ `}let t=De(n,{type:"card"},"unit"),r=De(n,{type:"card"},"decimal");return`
+
+

Formatting

+
+
+
+ + +
+
+ + +
+
+
`}var Fa=U(()=>{re();ve()});function Ea(n){switch(n){case"single":return"solid";case"gradient":return"gradient";case"severity":return"bands";case"severity_gradient":return"band_gradient";default:return"bands"}}function Pa(n,e){var i;let t=n.read(e,["bar","fill_style"]);if(t)return t;let r=(i=n.read(e,["bar","color_mode"]))!=null?i:n.read(e,["color_mode"]);return Ea(r)}function Se(n,e){return(e==null?void 0:e.type)==="entity"?Fe(n.read(e,[]),n.read({type:"card"},[]),{isCardScope:!1}).fill_style:Fe(n.read({type:"card"},[]),null,{isCardScope:!0}).fill_style}function xr(n,e){var t,r;return(r=(t=n.read(e,["bar","color"]))!=null?t:n.read(e,["color"]))!=null?r:"#4a9eff"}function Ta(n,e){let t=[["bar","color"],["color"]];for(let r of t){let i=n.read(e,r);if(i!=null&&i!=="")return i||"#4a9eff"}if((e==null?void 0:e.type)==="entity")for(let r of t){let i=n.read({type:"card"},r);if(i!=null&&i!=="")return i||"#4a9eff"}return"#4a9eff"}function Ti(n,e,t,r,i=[]){let a={deprecatedKeys:i,prunePaths:[["bar"]]};return n.mutate(e,s=>{let l=r===void 0?x(s,["bar",t]):P(s,["bar",t],r);return l=Pe(l,i),G(l,["bar"])},a)}function Fi(n,e,t){let r=N(t).trim();return Ti(n,e,"fill_style",r||void 0,[["color_mode"]])}function Ei(n,e,t,r={}){let i=ie(t,r.cssText),a=!i||j(i)===j("#4a9eff");return Ti(n,e,"color",a?void 0:i,[["color"]])}function Xe(n,e){return!!n.read(e,["bar","solid_fill"])}function Ra(n,e){if((e==null?void 0:e.type)!=="entity")return Xe(n,e);let t=n.read(e,["bar","solid_fill"]);return t!==void 0?!!t:Xe(n,{type:"card"})}function Pi(n,e,t){return Ti(n,e,"solid_fill",t?!0:void 0)}function Da(n,e){return!!Fe(n.read(e,[]),(e==null?void 0:e.type)==="entity"?n.read({type:"card"},[]):null).animated}function Xs(n,e,t){var i;let r=(i=n.read(e,["animated"]))!=null?i:(e==null?void 0:e.type)==="entity"?Fe(n.read({type:"card"},[]),null).animated:!0;return Ti(n,e,"animated",t?r?void 0:!0:!1)}function Ca(n,e){return n.mutate(e,t=>{let r=Pe(t,[["bar","fill_style"],["bar","color"],["bar","solid_fill"],["color_mode"],["color"]]);return G(r,["bar"])},{rerender:!0})}function za(n,e){var r;let t=(r=n.read(e,["bar"]))!=null?r:{};return V(t)&&(Object.prototype.hasOwnProperty.call(t,"fill_style")||Object.prototype.hasOwnProperty.call(t,"color")||Object.prototype.hasOwnProperty.call(t,"solid_fill"))?!0:n.read(e,["color_mode"])!==void 0||n.read(e,["color"])!==void 0}function Hn(n,e){var a;let t=[],r=Pa(n,e),i=(a=n.read(e,["bar","color"]))!=null?a:n.read(e,["color"]);return r&&r!=="bands"&&t.push(r.replace(/_/g," ")),i&&j(i)!==j("#4a9eff")&&t.push("Custom color"),t.length?t.join(" \u2022 "):"Inherited"}function ht(n,{field:e,kind:t,index:r,value:i},a={}){if(a.animation&&e==="bar-animated")return Xs(n,{type:"card"},i),!0;let s={"bar-fill-style":Fi,"bar-color":Ei,"bar-solid-fill":Pi};if(Object.prototype.hasOwnProperty.call(s,e))return s[e](n,{type:"card"},i,a),!0;let l={type:"entity",index:Number(r)};if(t==="entity-bar-inherit")return i&&Ca(n,l),!0;let o={"entity-bar-fill-style":Fi,"entity-bar-color":Ei,"entity-bar-solid-fill":Pi};return Object.prototype.hasOwnProperty.call(o,t)?(o[t](n,l,i),!0):!1}function wr(n,e,t=()=>"",r={}){if((e==null?void 0:e.type)==="entity"){let l=e.index,o=!za(n,e);return` +
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + ${K({id:`entity-${l}-bar-color`,kind:"entity-bar-color",index:l,value:Ta(n,e),fallbackHex:"#4a9eff",placeholder:"inherit card default"})} +
+ `}let i=Se(n,{type:"card"}),a=xr(n,{type:"card"}),s=Xe(n,{type:"card"});return`
+
+

Bar Appearance

+
Choose the bar rendering mode and base bar colors.
+
+
+
+ + +
+
+
+ + +
+
+ ${r.animation?`
+ + +
`:""}
+ + ${K({cssText:r.cssText,label:"Bar color",id:"bar-color",field:"bar-color",value:a,fallbackHex:"#4a9eff",placeholder:"#4a9eff"})} +
+
${t()} +
`}var Ri=U(()=>{xe();re();ve()});var ft,Oa=U(()=>{Ri();re();ft=class{constructor(e,t,r){this.context=e,this.ui=t,this.array=r}get shadowRoot(){return this.ui.root()}fillStyle(e){return Se(this.context,e)}_getShadowElementById(e){var t,r,i,a;return(a=(r=(t=this.shadowRoot)==null?void 0:t.getElementById)==null?void 0:r.call(t,e))!=null?a:(i=this.shadowRoot)==null?void 0:i.querySelector(`#${e}`)}_renderListRows(e,t){return e.map(t).join("")}handle(e,t=e.type){var w,k,M,$,T,B,E,z;let r=e.target;if(t==="input"&&(r==null?void 0:r.type)==="checkbox")return!1;let i=(w=r==null?void 0:r.dataset)==null?void 0:w.kind,a=i==null?void 0:i.replace(/-text-fallback$/,""),s=(k=r==null?void 0:r.dataset)==null?void 0:k.action,l=!!this._getScopedSegmentsValue,o=l?"segment":"gradient",d=(M=t==="click"?s:a)==null?void 0:M.includes("entity-"),c=d?{type:"entity",index:Number(r.dataset.index)}:{type:"card"},u=a==null?void 0:a.replace(/^entity-/,""),h=Number(d?r.dataset[l?"segmentIndex":"stopIndex"]:($=r==null?void 0:r.dataset)==null?void 0:$.index),p=()=>l?this._getScopedSegmentsValue(c):this._getScopedGradientStopsValue(c),f=(C,O,A)=>l?this._setScopedSegments(c,C,O,A):this._setScopedGradientStops(c,C,O,A),b=()=>l?this._commitSegmentDraft(c):this._commitGradientStopDraft(c),g=()=>l?this._refreshSegmentUi(c):this._refreshGradientDraftUi(c);if(t==="click")return!["add-segment","remove-segment","add-entity-segment","remove-entity-segment","add-gradient-stop","remove-gradient-stop","add-entity-gradient-stop","remove-entity-gradient-stop"].includes(s)||!s.includes(o)?!1:(s.startsWith("add-")?(this.ui.focus(`#${d?`entity-${c.index}-`:""}${o}-draft-${l?"from":"pos"}`),b()):f(p().filter((C,O)=>O!==h),{rerender:!0,...l?{sort:!0}:{}},{type:"remove",index:h}),!0);if(a===`entity-${l?"segments":"gradient-stops"}-inherit`)return r.checked&&(l?this._clearSegmentsOverride(c):this._clearGradientStopsOverride(c)),!0;if(!(u!=null&&u.startsWith(`${o}-`)))return!1;let _=u.startsWith(`${o}-draft-`),y=u.slice((_?`${o}-draft-`:`${o}-`).length),m=(B=(T=e.detail)==null?void 0:T.value)!=null?B:r.value;if(t==="keydown")return e.key==="Escape"&&_?((E=e.preventDefault)==null||E.call(e),l?this._segmentDrafts.set(this._getSegmentsScopeKey(c),this._createSegmentDraftState(c)):this._gradientStopsDrafts.set(this._getGradientStopsDraftKey(c),this._createGradientStopDraftState(c)),this.ui.render()):e.key==="Enter"&&((z=e.preventDefault)==null||z.call(e),_?b():l&&["from","to"].includes(y)?this._commitSegmentBoundaryEdit(c,h,y,m,r):!l&&y==="pos"&&this._commitGradientStopPosEdit(c,h,m,r)),!0;if(_)return l?this._setSegmentDraftField(c,y,m):this._setGradientStopsDraftField(c,y,m),!0;if(l&&["from","to"].includes(y)||!l&&y==="pos")return t==="input"?l?(this._setSegmentBoundaryText(c,h,y,m),g()):this._setGradientStopPosText(c,h,m):t==="change"&&(l?this._commitSegmentBoundaryEdit(c,h,y,m,r):this._commitGradientStopPosEdit(c,h,m,r)),!0;let v=p(),S=v.map((C,O)=>{var A,I;return O!==h?C:l?{...C,color:m}:{...C,pos:(A=this._normalizeGradientStopPosValue(C==null?void 0:C.pos))!=null?A:0,color:y==="color"?m:(I=C==null?void 0:C.color)!=null?I:"#4a9eff"}});return(l||ge(S)!==ge(this._sanitizeGradientStopsForEmit(v)))&&f(S,l?{sort:!1}:{},{type:"edit",index:h,field:"color",value:m}),!0}}});var pt,Ba=U(()=>{re();ve();xe();lr();br();Oa();pt=class extends ft{constructor(e,t,r){super(e,t,r),this.reset()}reset(){this._segmentDrafts=new Map,this._segmentUiRows=new Map,this._segmentBoundaryTexts=new Map}_setSegments(e,t={}){return this._setScopedSegments({type:"card"},e,t)}_clearSegmentsOverride(e){return this._segmentDrafts.delete(this._getSegmentsScopeKey(e)),this._segmentUiRows.delete(this._getSegmentsScopeKey(e)),this._clearSegmentScopeTextState(e),this.context.mutate(e,t=>{let r=x(t,["bar","segments"]);return r=x(r,["segments"]),r=x(r,["severity"]),r=G(r,["bar"]),r},{rerender:!0})}_getSegmentsValue(){return this._getScopedSegmentsValue({type:"card"})}_getSegmentsScopeKey(e={type:"card"}){return(e==null?void 0:e.type)==="entity"?`entity:${e.index}`:"card"}_getSegmentBoundaryTextKey(e,t,r){return`${this._getSegmentsScopeKey(e)}:${t}:${r}`}_getSegmentBoundaryText(e={type:"card"},t,r,i=""){let a=this._getSegmentBoundaryTextKey(e,t,r);return this._segmentBoundaryTexts.has(a)?this._segmentBoundaryTexts.get(a):this._formatSegmentBoundaryValue(i)}_setSegmentBoundaryText(e,t,r,i){this._segmentBoundaryTexts.set(this._getSegmentBoundaryTextKey(e,t,r),N(i))}_clearSegmentBoundaryText(e,t,r){this._segmentBoundaryTexts.delete(this._getSegmentBoundaryTextKey(e,t,r))}_clearSegmentScopeTextState(e){let t=`${this._getSegmentsScopeKey(e)}:`;for(let r of this._segmentBoundaryTexts.keys())r.startsWith(t)&&this._segmentBoundaryTexts.delete(r)}_getSegmentsUiRows(e={type:"card"}){let t=this._getSegmentsScopeKey(e);return this._segmentUiRows.has(t)?D(this._segmentUiRows.get(t)):null}_setSegmentsUiRows(e,t){this._segmentUiRows.set(this._getSegmentsScopeKey(e),D(t))}_getSegmentDraftState(e={type:"card"}){let t=this._getSegmentsScopeKey(e);return this._segmentDrafts.has(t)||this._segmentDrafts.set(t,this._createSegmentDraftState(e)),D(this._segmentDrafts.get(t))}_setSegmentDraftState(e,t,r={}){var i,a,s;if(this._segmentDrafts.set(this._getSegmentsScopeKey(e),{from:(i=t==null?void 0:t.from)!=null?i:"",to:(a=t==null?void 0:t.to)!=null?a:"",color:(s=t==null?void 0:t.color)!=null?s:this._getSegmentDraftColorDefault(e)}),r!=null&&r.refreshOnly){this._refreshSegmentUi(e);return}this.ui.render()}_setSegmentDraftField(e,t,r){let i=this._getSegmentDraftState(e),a=t==="color"?ie(r,this.array.cssText):N(r);this._setSegmentDraftState(e,{...i,[t]:a},{refreshOnly:!0})}_isSegmentFillStyle(e){return["bands","soft_bands","band_gradient"].includes(e)}_getDefaultSegments(){return[{from:"0%",to:"33%",color:"#4CAF50"},{from:"33%",to:"75%",color:"#FF9800"},{from:"75%",to:"100%",color:"#F44336"}]}_getStoredScopedSegments(e={type:"card"}){let t=this.context.read(e,["bar","segments"]);if(t!==void 0)return t;let r=this.context.read(e,["segments"]);if(r!==void 0)return r;let i=this.context.read(e,["severity"]);return i!==void 0?i:null}_parseSegmentBoundaryInput(e){let t=N(e).trim();if(!t)return null;let r=t.match(/^\s*([+-]?(?:\d+(?:\.\d+)?|\.\d+))\s*%\s*$/),i=r?parseFloat(r[1]):null;if(Number.isFinite(i))return`${i}%`;let a=ne(t);return a===null?null:a}_formatSegmentBoundaryValue(e){if(typeof e=="string")return e;if(typeof e=="number"&&Number.isFinite(e))return String(e);if(V(e)){if(Number.isFinite(e.percent))return`${e.percent}%`;if(Number.isFinite(this._getFiniteNumber(e.fixed)))return String(this._getFiniteNumber(e.fixed))}return""}_getSegmentDraftColorDefault(e={type:"card"}){var r;let t=this._getScopedSegmentsValue(e);return t.length?N((r=t[t.length-1])==null?void 0:r.color).trim()||"#4a9eff":"#4CAF50"}_getNewSegmentDefaults(e={type:"card"}){var a;let t=this._getScopedSegmentsValue(e),r=t[t.length-1],i=(a=r==null?void 0:r.to)!=null?a:null;return{from:i!=null?i:"0%",to:"100%",color:"#4a9eff"}}_createSegmentDraftState(e={type:"card"}){var l;let t=this._getNewSegmentDefaults(e),r=this._formatSegmentBoundaryValue(t.from),i=this._formatSegmentBoundaryValue(t.to),a=r==="100%"||r==="100"?"":r;return{from:a,to:a?i:"",color:(l=t.color)!=null?l:this._getSegmentDraftColorDefault(e)}}_normalizeSegmentForEditorComparison(e){if(!V(e))return null;let t=this._formatSegmentBoundaryValue(e.from).trim(),r=this._formatSegmentBoundaryValue(e.to).trim(),i=j(e.color);return!t||!r||!i?null:{from:t,to:r,color:i}}_segmentsEqualForEditor(e,t){let r=Array.isArray(e)?e.map(a=>this._normalizeSegmentForEditorComparison(a)).filter(Boolean):[],i=Array.isArray(t)?t.map(a=>this._normalizeSegmentForEditorComparison(a)).filter(Boolean):[];return r.length!==i.length?!1:r.every((a,s)=>a.from===i[s].from&&a.to===i[s].to&&a.color===i[s].color)}_getFallbackSegments(e={type:"card"}){return(e==null?void 0:e.type)==="entity"&&this._getStoredScopedSegments({type:"card"})!==null?D(this._getScopedSegmentsValue({type:"card"})):this._isSegmentFillStyle(this.fillStyle(e))?D(this._getDefaultSegments()):[]}_parseSegmentBoundaryText(e){let t=N(e).trim();if(!t)return{state:"empty",value:null};let r=this._parseSegmentBoundaryInput(t);return r===null?{state:"invalid",value:null}:{state:"valid",value:r}}_compareSegmentBoundaries(e,t){let r=this._getSegmentPreviewBoundaryValue(e),i=this._getSegmentPreviewBoundaryValue(t);return r===null||i===null?null:ri?1:0}_buildSegmentValidationRows(e={type:"card"}){var r;return((r=this._getSegmentsUiRows(e))!=null?r:this._getScopedSegmentsValue(e)).map((i,a)=>{let s=this._getSegmentBoundaryText(e,a,"from",i==null?void 0:i.from),l=this._getSegmentBoundaryText(e,a,"to",i==null?void 0:i.to),o=this._parseSegmentBoundaryText(s),d=this._parseSegmentBoundaryText(l);return{index:a,rawFrom:s,rawTo:l,parsedFrom:o,parsedTo:d}})}_getAutomaticEndInputRows(e){return this._getScopedSegmentsValue(e).map((t,r)=>{let i=this._getSegmentBoundaryText(e,r,"from",t==null?void 0:t.from),a=this._getSegmentBoundaryText(e,r,"to",t==null?void 0:t.to);return{...t,from:i,...a.trim()?{to:a}:{to:void 0}}})}_resolveAutomaticEndRows(e,t){var o,d,c,u;let r=this.context.read({type:"card"},[]),i=(e==null?void 0:e.type)==="entity"?this.context.read(e,[]):{},a=We(r,null),s=jr((d=(o=this.ui).hass)==null?void 0:d.call(o),(e==null?void 0:e.type)==="entity"?We(i,{scale:a}):a),l=Ue(t.map((h,p)=>({...h,to:typeof h.to=="string"&&!h.to.trim()?void 0:h.to,label:p})),{legacySegmentSpace:(u=(c=this.array).segmentSpace)==null?void 0:u.call(c)});return Ne({bar:{segments:l}},s.min,s.max)}_getAutomaticEndValidationMessage(e,t,r){let i=t[r];if(!i)return"";let a=this._parseSegmentBoundaryText(i.from),s=this._parseSegmentBoundaryText(i.to);if(a.state!=="valid"||s.state==="invalid")return"Enter valid from/to values.";let l=this._resolveAutomaticEndRows(e,t),o=l.find(d=>d.label===r);if(!o||o.from>=o.to)return"From must be below To.";for(let d of l)if(!(d.label===r||d.from>=d.to)){if(o.from===d.from)return"Duplicate segment start.";if(o.fromd.from)return"Segments overlap."}return""}_getSegmentRowValidationMessage(e={type:"card"},t){if(this.array.autoEnds)return this._getAutomaticEndValidationMessage(e,this._getAutomaticEndInputRows(e),t);let r=this._buildSegmentValidationRows(e),i=r[t];if(!i)return"";if(i.parsedFrom.state==="invalid"||i.parsedTo.state==="invalid"||i.parsedFrom.state==="empty"||i.parsedTo.state==="empty")return"Enter valid from/to values.";if(this._compareSegmentBoundaries(i.parsedFrom.value,i.parsedTo.value)!==-1)return"From must be below To.";let a=this._getSegmentPreviewBoundaryValue(i.parsedFrom.value),s=this._getSegmentPreviewBoundaryValue(i.parsedTo.value);for(let l of r){if(l.index===t||l.parsedFrom.state!=="valid"||l.parsedTo.state!=="valid")continue;let o=this._getSegmentPreviewBoundaryValue(l.parsedFrom.value),d=this._getSegmentPreviewBoundaryValue(l.parsedTo.value);if(a===o)return"Duplicate segment start.";if(ao)return"Segments overlap."}return""}_getValidSegmentDraft(e={type:"card"}){let t=this._getSegmentDraftState(e);if(this.array.autoEnds){if(!t.color.trim()||!CSS.supports("color",t.color))return null;let d=[...this._getAutomaticEndInputRows(e),t];if(this._getAutomaticEndValidationMessage(e,d,d.length-1))return null;let c=this._parseSegmentBoundaryInput(t.from),u=this._parseSegmentBoundaryInput(t.to);return{from:c,...t.to.trim()?{to:u}:{},color:t.color}}let r=this._parseSegmentBoundaryText(t.from),i=this._parseSegmentBoundaryText(t.to),a=N(t.color).trim();if(r.state!=="valid"||i.state!=="valid"||!a||this._compareSegmentBoundaries(r.value,i.value)!==-1)return null;let s=this._getSegmentPreviewBoundaryValue(r.value),l=this._getSegmentPreviewBoundaryValue(i.value),o=this._buildSegmentValidationRows(e);for(let d of o){if(d.parsedFrom.state!=="valid"||d.parsedTo.state!=="valid")continue;let c=this._getSegmentPreviewBoundaryValue(d.parsedFrom.value),u=this._getSegmentPreviewBoundaryValue(d.parsedTo.value);if(s===c||sc)return null}return{from:r.value,to:i.value,color:a}}_canAddSegment(e={type:"card"}){return!!this._getValidSegmentDraft(e)}_getSegmentDraftValidationMessage(e={type:"card"}){let t=this._getSegmentDraftState(e);if(this.array.autoEnds){if(!t.from.trim())return"Enter a start value to add a segment.";if(!t.color.trim()||!CSS.supports("color",t.color))return"Enter a valid CSS color.";let d=[...this._getAutomaticEndInputRows(e),t];return this._getAutomaticEndValidationMessage(e,d,d.length-1)}let r=this._parseSegmentBoundaryText(t.from),i=this._parseSegmentBoundaryText(t.to),a=N(t.color).trim();if(!N(t.from).trim()&&!N(t.to).trim())return"";if(r.state!=="valid"||i.state!=="valid")return"Enter valid from/to values.";if(this._compareSegmentBoundaries(r.value,i.value)!==-1)return"From must be below To.";if(!a)return"Choose a color to add a segment.";let s=this._getSegmentPreviewBoundaryValue(r.value),l=this._getSegmentPreviewBoundaryValue(i.value),o=this._buildSegmentValidationRows(e);for(let d of o){if(d.parsedFrom.state!=="valid"||d.parsedTo.state!=="valid")continue;let c=this._getSegmentPreviewBoundaryValue(d.parsedFrom.value),u=this._getSegmentPreviewBoundaryValue(d.parsedTo.value);if(s===c)return"Duplicate segment start.";if(sc)return"Segments overlap."}return""}_getSegmentPreviewBoundaryValue(e){if(typeof e=="string"){let t=e.trim().match(/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))%$/);if(t){let r=parseFloat(t[1]);return Number.isFinite(r)?r:null}}if(typeof e=="number"&&Number.isFinite(e))return e;if(V(e)){if(Number.isFinite(e.percent))return e.percent;let t=this._getFiniteNumber(e.fixed);if(Number.isFinite(t))return t}return null}_sortSegmentsForEditor(e){return Array.isArray(e)?D(e).sort((t,r)=>{let i=this._getSegmentPreviewBoundaryValue(t==null?void 0:t.from),a=this._getSegmentPreviewBoundaryValue(r==null?void 0:r.from);return i===null&&a===null?0:i===null?1:a===null?-1:i-a}):[]}_getSegmentPreviewRows(e={type:"card"}){var a;if(this.array.autoEnds){let s=this._getValidSegmentDraft(e);return this._resolveAutomaticEndRows(e,[...this._getAutomaticEndInputRows(e),...s?[s]:[]])}let t=(a=this._getSegmentsUiRows(e))!=null?a:this._getScopedSegmentsValue(e),r=this._sortSegmentsForEditor(t),i=this._getValidSegmentDraft(e);return i&&r.push(i),this._sortSegmentsForEditor(r).filter(s=>{let l=this._getSegmentPreviewBoundaryValue(s==null?void 0:s.from),o=this._getSegmentPreviewBoundaryValue(s==null?void 0:s.to);return l!==null&&o!==null&&typeof(s==null?void 0:s.color)=="string"&&s.color.trim()})}_buildEditorSegmentPreviewStyle(e={type:"card"}){let t=this._getSegmentPreviewRows(e);if(!t.length)return"";let r=this.fillStyle(e),i=[];return t.forEach(a=>{let s=Math.max(0,Math.min(100,this._getSegmentPreviewBoundaryValue(a.from))),l=Math.max(0,Math.min(100,this._getSegmentPreviewBoundaryValue(a.to)));i.push(`${a.color} ${s}%`,`${a.color} ${l}%`)}),r==="bands"?`background:linear-gradient(to right,${i.join(",")});background-repeat:no-repeat;`:`background:linear-gradient(to right,${i.join(",")});background-repeat:no-repeat;`}_getSegmentPreviewDomIds(e={type:"card"}){return(e==null?void 0:e.type)==="entity"?{previewId:`entity-${e.index}-segment-preview`,trackId:`entity-${e.index}-segment-preview-track`}:{previewId:"card-segment-preview",trackId:"card-segment-preview-track"}}_renderSegmentPreview(e={type:"card"}){var l;let{previewId:t,trackId:r}=this._getSegmentPreviewDomIds(e),i=this._getSegmentPreviewRows(e),a=[];i.forEach(o=>{let d=this._getSegmentPreviewBoundaryValue(o.from),c=this._getSegmentPreviewBoundaryValue(o.to);d!==null&&a.push(d),c!==null&&a.push(c)});let s=[...new Set(a)].sort((o,d)=>o-d);return` +
+
+ ${s.map((o,d)=>` + + `).join("")} +
+
+ `}_refreshSegmentPreview(e={type:"card"}){var o;let{previewId:t,trackId:r}=this._getSegmentPreviewDomIds(e),i=this._getShadowElementById(r);if(!i)return;i.setAttribute("style",(o=this._buildEditorSegmentPreviewStyle(e))!=null?o:"");let a=this._getSegmentPreviewRows(e),s=[];a.forEach(d=>{let c=this._getSegmentPreviewBoundaryValue(d.from),u=this._getSegmentPreviewBoundaryValue(d.to);c!==null&&s.push(c),u!==null&&s.push(u)});let l=[...new Set(s)].sort((d,c)=>d-c);i.innerHTML=l.map((d,c)=>` + + `).join("")}_getSegmentDomIds(e={type:"card"}){return(e==null?void 0:e.type)==="entity"?{hintPrefix:`entity-${e.index}-segment-row-hint-`,draftHintId:`entity-${e.index}-segment-draft-hint`,addSelector:`button[data-action="add-entity-segment"][data-index="${e.index}"]`}:{hintPrefix:"segment-row-hint-",draftHintId:"segment-draft-hint",addSelector:'button[data-action="add-segment"]'}}_refreshSegmentUi(e={type:"card"}){var o,d;if(this._refreshSegmentPreview(e),!this.shadowRoot)return;let{hintPrefix:t,draftHintId:r,addSelector:i}=this._getSegmentDomIds(e),a=this.shadowRoot.querySelector(i);a&&(a.disabled=!this._canAddSegment(e)),((o=this._getSegmentsUiRows(e))!=null?o:this._getScopedSegmentsValue(e)).forEach((c,u)=>{var f;let h=this._getShadowElementById(`${t}${u}`),p=this._getSegmentRowValidationMessage(e,u);h&&(h.textContent=p,(f=h.setAttribute)==null||f.call(h,"style",p?"":"display:none"))});let l=this._getShadowElementById(r);if(l){let c=this._getSegmentDraftValidationMessage(e);l.textContent=c,(d=l.setAttribute)==null||d.call(l,"style",c?"":"display:none")}}_commitSegmentDraft(e={type:"card"}){var s;let t=this._getValidSegmentDraft(e);if(!t)return this._refreshSegmentUi(e),!1;let r=(s=this._getSegmentsUiRows(e))!=null?s:this._getScopedSegmentsValue(e),i=this._sortSegmentsForEditor([...r,t]),a=this._setScopedSegments(e,i,{rerender:!0},{type:"add",item:t});return a!==!1&&this._segmentDrafts.set(this._getSegmentsScopeKey(e),this._createSegmentDraftState(e)),a}_commitSegmentBoundaryEdit(e={type:"card"},t,r,i,a=null){var f,b,g,_,y;this._setSegmentBoundaryText(e,t,r,i);let s=this._parseSegmentBoundaryText(i);if(s.state!=="valid"&&!(this.array.autoEnds&&r==="to"&&s.state==="empty"))return(f=a==null?void 0:a.setCustomValidity)==null||f.call(a,"Enter a valid boundary value."),this._refreshSegmentUi(e),!1;if(this.array.patchOnly){let m=this._getSegmentRowValidationMessage(e,t);if(m)return(b=a==null?void 0:a.setCustomValidity)==null||b.call(a,m),(g=a==null?void 0:a.reportValidity)==null||g.call(a),this._refreshSegmentUi(e),!1}let l=N(i).trim(),o=this._parseSegmentBoundaryInput(i),d=this.array.autoEnds&&r==="to"&&!l?void 0:o===null?l:o,u=((_=this._getSegmentsUiRows(e))!=null?_:this._getScopedSegmentsValue(e)).map((m,v)=>v===t?{...m,[r]:d}:m);this._clearSegmentBoundaryText(e,t,r);let h=this._setScopedSegments(e,u,{rerender:!0},{type:"edit",index:t,field:r,value:d}),p=this._getSegmentRowValidationMessage(e,t);return a!=null&&a.setCustomValidity&&(a.setCustomValidity(p||""),p&&((y=a.reportValidity)==null||y.call(a))),h}_getScopedSegmentsValue(e){if(this.array.rows)return this.array.rows(e,this);let t=this._getSegmentsUiRows(e);if(t!==null)return D(t);let r=this._getStoredScopedSegments(e);return r!==null?this._sortSegmentsForEditor(r):this._sortSegmentsForEditor(this._getFallbackSegments(e))}_hasSegmentsOverride(e){return this._getStoredScopedSegments(e)!==null}_getSegmentsSummary(e){let t=this._getScopedSegmentsValue(e);return!Array.isArray(t)||t.length===0?"Inherited":(e==null?void 0:e.type)!=="entity"&&!this._hasSegmentsOverride(e)&&this._isSegmentFillStyle(this.fillStyle(e))?"Default bands":`${t.length} segments`}_setScopedSegments(e,t,r={},i){return this.array.write(e,t,r,i)}render(e={type:"card"},t=({content:r})=>r){if((e==null?void 0:e.type)==="entity"){let s=e.index,l=this._getScopedSegmentsValue(e),o=!this._hasSegmentsOverride(e);return` +
+
+ + +
+
+ ${this._isSegmentFillStyle(this.fillStyle(e))?"":'
Only used with segment-based fill styles.
'} + ${this._renderSegmentPreview(e)} +
+ +
+ ${this._renderListRows(l,(d,c)=>{var u;return` +
+
+ + + + +
+ +
+ `})} +
+
+ + + + +
+ +
+
+
+ `}let r=this.fillStyle(e),i=this._getScopedSegmentsValue(e),a=!this._hasSegmentsOverride(e)&&this._isSegmentFillStyle(r);return`
+
+

Segments

+
Segments define colored value ranges.
+
+ ${t({group:"segments",title:"Segments",summary:this._getSegmentsSummary({type:"card"}),inactive:!this._isSegmentFillStyle(r),content:` + ${this._isSegmentFillStyle(r)?"":'
Only used with segment-based fill styles.
'} + ${this._renderSegmentPreview({type:"card"})} +
+ +
+ ${a?'
Default bands
':""} + ${this._renderListRows(i,(s,l)=>{var o,d;return` +
+
+ + + ${this.array.cssText?K({id:`segment-color-${l}`,kind:"segment-color",index:l,value:(o=s==null?void 0:s.color)!=null?o:"#4a9eff",fallbackHex:"#4a9eff",cssText:!0,label:`Segment ${l+1} color`}):``} + +
+ +
+ `})} +
+
+ + + ${this.array.cssText?K({id:"segment-draft-color",kind:"segment-draft-color",value:this._getSegmentDraftState({type:"card"}).color||"#4a9eff",fallbackHex:"#4a9eff",cssText:!0,label:"New segment color"}):``} + +
+ +
+
+
+ `})} +
`}}});var mt,Ga=U(()=>{xe();re();ve();Oa();mt=class extends ft{constructor(e,t,r){super(e,t,r),this.reset()}reset(){this._gradientStopsDrafts=new Map,this._gradientStopsUiRows=new Map,this._gradientStopPosTexts=new Map,this._gradientStopValidationMessages=new Map}_setGradientStops(e,t={}){return this._setScopedGradientStops({type:"card"},e,t)}_getDefaultGradientStops(){return[{pos:0,color:"#4CAF50"},{pos:50,color:"#FF9800"},{pos:100,color:"#F44336"}]}_normalizeGradientStopPosValue(e){let t=Me(e),r=Number.isFinite(t)?t:ne(e);return r===null||!Number.isFinite(r)||r<0||r>100?null:r}_sanitizeGradientStopsForEmit(e){return Array.isArray(e)?e.map(t=>{if(!V(t))return null;let r=this._normalizeGradientStopPosValue(t.pos),i=N(t.color).trim();return r===null||!i?null:{...t,pos:r,color:i}}).filter(Boolean).sort((t,r)=>t.pos-r.pos):[]}_getGradientStopDraftColorDefault(e={type:"card"}){var r;let t=this._sanitizeGradientStopsForEmit(this._getScopedGradientStopsValue(e));return t.length?(r=t[t.length-1].color)!=null?r:"#4CAF50":this._getDefaultGradientStops()[0].color}_getNextSuggestedGradientStopPos(e={type:"card"}){let t=this._sanitizeGradientStopsForEmit(this._getScopedGradientStopsValue(e));if(!t.length)return 0;let r=t[t.length-1];if(r.pos>=100)return"";let i;if(t.length===1)i=r.pos+25;else{let s=t[t.length-2];i=r.pos+(r.pos-s.pos)}let a=Math.min(100,Math.max(0,i));return t.some(s=>s.pos===a)?"":a}_getGradientStopsDraftKey(e){return(e==null?void 0:e.type)==="entity"?`entity:${e.index}`:"card"}_getGradientStopPosTextKey(e,t){return`${this._getGradientStopsDraftKey(e)}:pos:${t}`}_getGradientStopPosText(e={type:"card"},t,r=""){let i=this._getGradientStopPosTextKey(e,t);return this._gradientStopPosTexts.has(i)?this._gradientStopPosTexts.get(i):r===""||r===null||r===void 0?"":String(r)}_setGradientStopPosText(e,t,r){this._gradientStopPosTexts.set(this._getGradientStopPosTextKey(e,t),N(r))}_clearGradientStopPosText(e,t){this._gradientStopPosTexts.delete(this._getGradientStopPosTextKey(e,t))}_clearGradientStopScopeTextState(e){let t=`${this._getGradientStopsDraftKey(e)}:pos:`;for(let r of this._gradientStopPosTexts.keys())r.startsWith(t)&&this._gradientStopPosTexts.delete(r);for(let r of this._gradientStopValidationMessages.keys())r.startsWith(t)&&this._gradientStopValidationMessages.delete(r)}_getGradientStopsUiRows(e={type:"card"}){let t=this._getGradientStopsDraftKey(e);return this._gradientStopsUiRows.has(t)?D(this._gradientStopsUiRows.get(t)):null}_setGradientStopsUiRows(e,t){this._gradientStopsUiRows.set(this._getGradientStopsDraftKey(e),D(t))}_getStoredScopedGradientStops(e={type:"card"}){let t=this.context.read(e,["bar","gradient_stops"]);if(t!==void 0)return t;let r=this.context.read(e,["gradient_stops"]);return r!==void 0?r:null}_getFallbackGradientStops(e={type:"card"}){if((e==null?void 0:e.type)==="entity"){let t=this._sanitizeGradientStopsForEmit(this._getScopedGradientStopsValue({type:"card"}));return t.length?t:this._getDefaultGradientStops()}return this._getDefaultGradientStops()}_createGradientStopDraftState(e={type:"card"}){let t=this._getNextSuggestedGradientStopPos(e);return{pos:t===""?"":String(t),color:this._getGradientStopDraftColorDefault(e)}}_getGradientStopsDraftState(e={type:"card"}){let t=this._getGradientStopsDraftKey(e);return this._gradientStopsDrafts.has(t)||this._gradientStopsDrafts.set(t,this._createGradientStopDraftState(e)),D(this._gradientStopsDrafts.get(t))}_setGradientStopsDraftState(e,t,r={}){var i,a;if(this._gradientStopsDrafts.set(this._getGradientStopsDraftKey(e),{pos:(i=t==null?void 0:t.pos)!=null?i:"",color:(a=t==null?void 0:t.color)!=null?a:this._getGradientStopDraftColorDefault(e)}),r!=null&&r.refreshOnly){this._refreshGradientDraftUi(e);return}this.ui.render()}_setGradientStopsDraftField(e,t,r){let i=this._getGradientStopsDraftState(e),a=t==="color"?N(r).trim():N(r);this._setGradientStopsDraftState(e,{...i,[t]:a},{refreshOnly:t==="pos"})}_getValidGradientDraftStop(e={type:"card"}){let t=this._getGradientStopsDraftState(e),r=this._normalizeGradientStopPosValue(t.pos),i=N(t.color).trim();return r===null||!i?null:{pos:r,color:i}}_hasGradientStopDuplicate(e={type:"card"},t,r=null){return this.array.patchOnly?this._getScopedGradientStopsValue(e).some((i,a)=>a!==r&&this._normalizeGradientStopPosValue(i==null?void 0:i.pos)===t):this._sanitizeGradientStopsForEmit(this._getScopedGradientStopsValue(e)).some((i,a)=>a!==r&&i.pos===t)}_canAddGradientStop(e={type:"card"}){let t=this._getValidGradientDraftStop(e);return t?!this._hasGradientStopDuplicate(e,t.pos):!1}_getGradientDraftValidationMessage(e={type:"card"}){let t=this._getGradientStopsDraftState(e),r=N(t.pos).trim(),i=N(t.color).trim();return r?this._normalizeGradientStopPosValue(t.pos)===null?"Enter a value from 0 to 100.":i?this._hasGradientStopDuplicate(e,this._normalizeGradientStopPosValue(t.pos))?"Position already exists.":"":"Choose a color to add a stop.":"Enter a position to add a stop."}_isDefaultGradientStops(e){let t=this._sanitizeGradientStopsForEmit(e),r=this._getDefaultGradientStops();return t.length!==r.length?!1:t.every((i,a)=>i.pos===r[a].pos&&j(i.color)===j(r[a].color))}_clearGradientStopsOverride(e){var i;let t=ge((i=this._getGradientStopsUiRows(e))!=null?i:[]);this._gradientStopsDrafts.delete(this._getGradientStopsDraftKey(e)),this._gradientStopsUiRows.delete(this._getGradientStopsDraftKey(e)),this._clearGradientStopScopeTextState(e);let r=this.context.mutate(e,a=>{let s=x(a,["bar","gradient_stops"]);return s=x(s,["gradient_stops"]),s=G(s,["bar"]),s},{rerender:!0});return r===!1&&t!==ge([])&&this.ui.render(),r}_getGradientStopsValue(){return this._getScopedGradientStopsValue({type:"card"})}_commitGradientStopDraft(e={type:"card"}){let t=this._getValidGradientDraftStop(e);if(!t||this._hasGradientStopDuplicate(e,t.pos))return this._refreshGradientDraftUi(e),!1;let i=[...this._sanitizeGradientStopsForEmit(this._getScopedGradientStopsValue(e)),t].sort((s,l)=>s.pos-l.pos),a=this._setScopedGradientStops(e,i,{rerender:!0},{type:"add",item:t});return a!==!1&&this._gradientStopsDrafts.set(this._getGradientStopsDraftKey(e),{pos:(()=>{let s=this._getNextSuggestedGradientStopPos(e);return s===""?"":String(s)})(),color:t.color}),a}_getGradientPreviewDomIds(e={type:"card"}){return(e==null?void 0:e.type)==="entity"?{previewId:`entity-${e.index}-gradient-preview`,trackId:`entity-${e.index}-gradient-preview-track`,hintId:`entity-${e.index}-gradient-draft-hint`,addSelector:`button[data-action="add-entity-gradient-stop"][data-index="${e.index}"]`,draftInputId:`entity-${e.index}-gradient-draft-pos`}:{previewId:"card-gradient-preview",trackId:"card-gradient-preview-track",hintId:"gradient-draft-hint",addSelector:'button[data-action="add-gradient-stop"]',draftInputId:"gradient-draft-pos"}}_refreshGradientDraftUi(e={type:"card"}){var _,y,m;if(!this.shadowRoot)return;let t=(y=(_=this.shadowRoot.getElementById)==null?void 0:_.bind(this.shadowRoot))!=null?y:(v=>{var S,w,k;return(k=(w=(S=this.shadowRoot).querySelector)==null?void 0:w.call(S,`#${v}`))!=null?k:null}),{previewId:r,trackId:i,hintId:a,addSelector:s,draftInputId:l}=this._getGradientPreviewDomIds(e),o=this.shadowRoot.querySelector(s);o&&(o.disabled=!this._canAddGradientStop(e));let d=t(l);if(d&&typeof d.closest!="function"){this.ui.render();return}let c=d==null?void 0:d.closest(".gradient-stop-draft"),u=this._getGradientDraftValidationMessage(e),h=t(a);if(u){if(h)h.textContent=u;else if(c){let v=document.createElement("div");v.id=a,v.className="section-note",v.textContent=u,c.appendChild(v)}}else h&&h.remove();let p=t(r),f=t(i);if(!p||!f)return;f.setAttribute("style",(m=this._getGradientPreviewStyle(e))!=null?m:"");let b=this._buildGradientPreviewEffectiveStops(e),g=b.length?b:this._getDefaultGradientStops();f.innerHTML=g.map((v,S)=>` + + `).join("")}_commitGradientStopPosEdit(e={type:"card"},t,r,i=null){let a=this._normalizeGradientStopPosValue(r);if(a===null||this._hasGradientStopDuplicate(e,a,t))return i!=null&&i.setCustomValidity&&(i.setCustomValidity(a===null?"Enter a value from 0 to 100.":"Position already exists."),i.reportValidity&&i.reportValidity()),!1;i!=null&&i.setCustomValidity&&i.setCustomValidity("");let l=this._getScopedGradientStopsValue(e).map((o,d)=>d===t?{...o,pos:a}:o);return this._clearGradientStopPosText(e,t),this._setScopedGradientStops(e,l,{rerender:!0},{type:"edit",index:t,field:"pos",value:a})}_getScopedGradientStopsValue(e){if(this.array.rows)return this.array.rows(e,this);let t=this._getGradientStopsUiRows(e);if(Array.isArray(t))return t;let r=this._getStoredScopedGradientStops(e);return r!==null?this._sanitizeGradientStopsForEmit(r):D(this._getFallbackGradientStops(e))}_hasGradientStopsOverride(e){if(this._getStoredScopedGradientStops(e)!==null)return!0;let t=this._getGradientStopsUiRows(e);return Array.isArray(t)?ge(this._sanitizeGradientStopsForEmit(t))!==ge(this._sanitizeGradientStopsForEmit(this._getFallbackGradientStops(e))):!1}_getGradientStopsSummary(e){if((e==null?void 0:e.type)==="entity"&&!this._hasGradientStopsOverride(e))return"Inherited";let t=this._sanitizeGradientStopsForEmit(this._getScopedGradientStopsValue(e));return this.fillStyle(e)!=="gradient"?"Inactive fill style":t.length?this._isDefaultGradientStops(t)?"Default gradient":`${t.length} stops`:(e==null?void 0:e.type)==="entity"?"Inherited":"Default gradient"}_buildGradientPreviewEffectiveStops(e={type:"card"}){let t=this._sanitizeGradientStopsForEmit(this._getScopedGradientStopsValue(e)),r=this._getValidGradientDraftStop(e),i=[...t];return r&&!this._hasGradientStopDuplicate(e,r.pos)&&i.push(r),i.sort((a,s)=>a.pos-s.pos)}_buildEditorGradientPreviewStyle(e){if(!Array.isArray(e)||!e.length)return"";let t=e.map(r=>{var s;let i=N(r.color).trim(),a=this._normalizeGradientStopPosValue((s=r.p)!=null?s:r.pos);return!i||a===null?null:`${i} ${a}%`}).filter(Boolean);return t.length?`background:linear-gradient(to right,${t.join(",")});background-repeat:no-repeat;`:""}_getGradientPreviewStyle(e={type:"card"}){let t=this._buildGradientPreviewEffectiveStops(e),r=t.length>=2?t.map(i=>({p:i.pos,color:i.color})):this._getDefaultGradientStops().map(i=>({p:i.pos,color:i.color}));return this._buildEditorGradientPreviewStyle(r)}_renderGradientPreview(e={type:"card"},t={}){var l,o,d;let r=(l=t.previewId)!=null?l:"gradient-preview",i=(o=t.trackId)!=null?o:`${r}-track`,a=this._buildGradientPreviewEffectiveStops(e),s=a.length?a:this._getDefaultGradientStops();return` +
+
+ ${s.map((c,u)=>` + + `).join("")} +
+
+ `}_setScopedGradientStops(e,t,r={},i){return this.array.write(e,t,r,i)}render(e={type:"card"},t=({content:r})=>r){if((e==null?void 0:e.type)==="entity"){let o=e.index,d=this._getScopedGradientStopsValue(e),c=this._getGradientStopsDraftState(e),u=this._getGradientDraftValidationMessage(e),h=!this._hasGradientStopsOverride(e);return` +
+
+ + +
+
+ ${this.fillStyle(e)!=="gradient"?'
Only used with Gradient fill style
':""} + ${this._renderGradientPreview(e,{previewId:`entity-${o}-gradient-preview`,trackId:`entity-${o}-gradient-preview-track`})} +
+ +
+ ${this._renderListRows(d,(p,f)=>{var b,g;return` +
+ + ${K({id:`entity-${o}-gradient-color-${f}`,kind:"entity-gradient-color",index:o,value:(g=p==null?void 0:p.color)!=null?g:"#4a9eff",fallbackHex:"#4CAF50",placeholder:"CSS color value",extraDataset:{"stop-index":f}})} + +
+ `})} +
+
+ + ${K({id:`entity-${o}-gradient-draft-color`,kind:"entity-gradient-draft-color",index:o,value:c.color,fallbackHex:"#4CAF50",placeholder:"CSS color value"})} + +
+ ${u?`
${F(u)}
`:""} +
+
+
+ `}let r=this._getScopedGradientStopsValue(e),i=this._getGradientStopsDraftState(e),a=this._getGradientDraftValidationMessage(e),s=this._getGradientStopsSummary(e),l=this.fillStyle(e)!=="gradient";return`
+
+

Gradient Stops

+
Gradient stops define a smooth color transition from 0 to 100%.
+
+ ${t({group:"gradient-stops",title:"Gradient Stops",summary:s,inactive:l,content:` + ${l?'
Only used with Gradient fill style
':""} + ${this._renderGradientPreview({type:"card"},{previewId:"card-gradient-preview",trackId:"card-gradient-preview-track"})} +
+ +
+ ${this._renderListRows(r,(o,d)=>{var c,u;return` +
+ + ${K({id:`gradient-color-${d}`,kind:"gradient-color",index:d,value:(u=o==null?void 0:o.color)!=null?u:"#4a9eff",fallbackHex:"#4CAF50",placeholder:"CSS color value"})} + +
+ `})} +
+
+ + ${K({id:"gradient-draft-color",kind:"gradient-draft-color",index:"card",value:i.color,fallbackHex:"#4CAF50",placeholder:"CSS color value"})} + +
+ ${a?`
${F(a)}
`:""} +
+
+
+ `})} +
`}}});var bt,Na=U(()=>{re();ve();bt=class{constructor(e,t={}){this.options=t,this.context=e}_setNeedle(e){return this._setScopedNeedleMode({type:"card"},e?"enabled":"disabled")}_getScopedNeedleConfig(e){var s;let t=this.context.read(e,["bar","needle"]),r="#ffffff",i=(e==null?void 0:e.type)==="entity"?"inherit":"disabled",a="";return typeof t=="boolean"?i=t?"enabled":"disabled":V(t)&&(t.show===!0?i="enabled":(t.show===!1||(e==null?void 0:e.type)!=="entity")&&(i="disabled"),a=(s=t.color)!=null?s:""),a===r&&(a=""),{mode:i,color:a}}_hasNeedleOverride(e){return this.context.read(e,["bar","needle"])!==void 0}_getEffectiveScopedNeedleConfig(e){let t=this._getScopedNeedleConfig(e);if((e==null?void 0:e.type)!=="entity")return t;if(!this._hasNeedleOverride(e))return this._getScopedNeedleConfig({type:"card"});let r=this._getScopedNeedleConfig({type:"card"});return{mode:t.mode==="inherit"?r.mode:t.mode,color:t.color||r.color}}_setScopedNeedleMode(e,t){return this.context.mutate(e,r=>{let i=D(r),a=q(i,["bar","needle"]),s=V(a)?a.color:void 0;if(i=x(i,["bar","needle"]),(e==null?void 0:e.type)==="entity"&&t==="inherit")return i=G(i,["bar"]),i;if(t==="disabled")return(e==null?void 0:e.type)==="entity"&&(i=P(i,["bar","needle"],{show:!1})),i=G(i,["bar"]),i;let l={show:!0};return s&&s!=="#ffffff"&&(l.color=s),i=P(i,["bar","needle"],l),i=G(i,["bar"]),i},{needleEdit:{field:"mode",value:t}})}_setScopedNeedleColor(e,t){let r=ie(t,this.options.cssText);return this.context.mutate(e,i=>{let a=D(i),s=this._getScopedNeedleConfig(e),l=r&&j(r)!==j("#ffffff");if(a=x(a,["bar","needle","color"]),(e==null?void 0:e.type)!=="entity"&&s.mode==="disabled")return a=G(a,["bar","needle"]),a=G(a,["bar"]),a;let o=s.mode==="enabled"?!0:s.mode==="disabled"?!1:void 0,d={};return o!==void 0&&(d.show=o),l&&(d.color=r),Object.keys(d).length?a=P(a,["bar","needle"],d):a=x(a,["bar","needle"]),a=G(a,["bar","needle"]),a=G(a,["bar"]),a},{needleEdit:{field:"color",value:r}})}_getNeedleValue(){return this._getScopedNeedleConfig({type:"card"}).mode==="enabled"}_removeScopedNeedle(e){return this.context.mutate(e,t=>{let r=x(t,["bar","needle"]);return r=G(r,["bar"]),r})}_getNeedleSummary(e){if((e==null?void 0:e.type)==="entity"&&!this._hasNeedleOverride(e))return"Inherited";let t=this._getScopedNeedleConfig(e);return t.mode==="disabled"?t.color?"Disabled \u2022 Custom color":"Disabled":t.mode==="enabled"?t.color?"Enabled \u2022 Custom color":"Enabled":t.color?"Custom color":"Inherited"}handleField({field:e,kind:t,index:r,value:i}){let a=t!=null&&t.startsWith("entity-")?{type:"entity",index:Number(r)}:{type:"card"},s=e!=null?e:t==null?void 0:t.replace(/^entity-/,"");return t==="entity-needle-inherit"?(i&&this._removeScopedNeedle(a),!0):["bar-needle-mode","needle-mode"].includes(s)?(this._setScopedNeedleMode(a,i),!0):["bar-needle-color","needle-color"].includes(s)?(this._setScopedNeedleColor(a,i),!0):!1}render(e={type:"card"},t=({content:r})=>r){if((e==null?void 0:e.type)==="entity"){let i=e.index,a=!this._hasNeedleOverride(e),s=this._getEffectiveScopedNeedleConfig(e);return` +
+
+ + +
+
+
+ + +
+
+ + ${K({cssText:this.options.cssText,label:"Needle color",id:`entity-${i}-needle-color`,kind:"entity-needle-color",index:i,value:s.color,fallbackHex:"#ffffff",placeholder:"#ffffff"})} +
+ `}let r=this._getScopedNeedleConfig(e);return`
+
+ + +
+
+ + ${K({cssText:this.options.cssText,label:"Needle color",id:"bar-needle-color",field:"bar-needle-color",value:r.color,fallbackHex:"#ffffff",placeholder:"#ffffff"})} +
+
`}}});var _t,Aa=U(()=>{re();ve();_t=class{constructor(e,t={}){this.options=t,this.context=e,this.reset()}reset(){this._baselineColorDrafts=new Map,this._sourceMode=void 0,this._percentageDraft=void 0}_getBaselineColorDraftKey(e={type:"card"},t="above"){return`${(e==null?void 0:e.type)==="entity"?`entity:${e.index}`:"card"}:${t}`}_setBaselineColorDraft(e,t,r){let i=ie(r,this.options.cssText),a=this._getBaselineColorDraftKey(e,t);i?this._baselineColorDrafts.set(a,i):this._baselineColorDrafts.delete(a)}_getBaselineColorDraft(e,t){var r;return(r=this._baselineColorDrafts.get(this._getBaselineColorDraftKey(e,t)))!=null?r:""}_isBaselineDirectionalColorEnabled(e,t){return!!N(this._getBaselineDirectionalColorValue(e,t)).trim()}_setBaselineDirectionalColorEnabled(e,t,r){let i=ie(this._getBaselineDirectionalColorValue(e,t),this.options.cssText);if(!r)return i&&this._setBaselineColorDraft(e,t,i),this._removeColor(e,["baseline",t,"color"],{prunePaths:[["baseline",t],["baseline"]]});let a=this._getBaselineColorDraft(e,t)||ie(this._getEffectiveBaselineDirectionalColorValue(e,t),this.options.cssText)||i||"#000000";return this._setColor(e,["baseline",t,"color"],a,{prunePaths:[["baseline",t],["baseline"]]})}_getSourceMode(){var e;return(e=this._sourceMode)!=null?e:bi(this.context.source({type:"card"},"baseline"))}_handlePercentageField(e,t,r){if(!this.options.percentSources)return!1;if(e==="baseline-source-mode")return this._sourceMode=t,this._percentageDraft=void 0,this.context.setSource(r,"baseline","mode",t),!0;if(e!=="baseline-percent")return!1;let i=dt(t);return this._percentageDraft=i===null?t:void 0,i!==null&&this.context.setSource(r,"baseline","percent",i),!0}_getBaselineResolvableValue(e){return this.context.source(e,"baseline")}_getEffectiveBaselineResolvableValue(e){return this.context.source(e,"baseline",!0)}_getBaselineMode(e){let t=this.context.read(e,["baseline","enabled"]);return(e==null?void 0:e.type)==="entity"?t===!1?"disabled":t===!0||this._hasBaselineOverride(e)?"enabled":"inherit":t===!0?"enabled":t===!1?"disabled":"auto"}_getEffectiveBaselineMode(e){let t=this._getBaselineMode(e);if((e==null?void 0:e.type)!=="entity"||t!=="inherit")return t;let r=this._getBaselineMode({type:"card"});if(r==="disabled")return"disabled";if(r==="enabled")return"enabled";let i=this._getBaselineResolvableValue({type:"card"});return lt(i)||this._getBaselineDirectionalColorValue({type:"card"},"above")||this._getBaselineDirectionalColorValue({type:"card"},"below")?"enabled":"disabled"}_setBaselineMode(e,t){return(e==null?void 0:e.type)==="entity"&&t==="inherit"?this._clearBaselineOverride(e):this.context.mutate(e,r=>{let i=D(r);return t==="auto"?i=x(i,["baseline","enabled"]):i=P(i,["baseline","enabled"],t==="enabled"),i=G(i,["baseline"]),i},{baselineEdit:{path:["enabled"],value:t==="auto"?void 0:t==="enabled"}})}_setBaselineDirectionalColor(e,t,r){let i=ie(r,this.options.cssText);this._setBaselineColorDraft(e,t,i);let a=["baseline",t,"color"];return i?this._isBaselineDirectionalColorEnabled(e,t)?this.context.mutate(e,s=>P(s,a,i),{baselineEdit:{path:[t,"color"],value:i}}):this._setBaselineDirectionalColorEnabled(e,t,!0):this._removeColor(e,a,{prunePaths:[["baseline",t],["baseline"]]})}_getBaselineDirectionalColorValue(e,t){var r;return(r=this.context.read(e,["baseline",t,"color"]))!=null?r:""}_getEffectiveBaselineDirectionalColorValue(e,t){var i;let r=this.context.read(e,["baseline",t,"color"]);return r!=null&&r!==""?r:(e==null?void 0:e.type)==="entity"&&(i=this.context.read({type:"card"},["baseline",t,"color"]))!=null?i:""}_clearBaselineOverride(e){return this.context.mutate(e,t=>{let r=D(t),i=q(r,["baseline"]);return V(i)?(r=x(r,["baseline","enabled"]),r=x(r,["baseline","at"]),r=x(r,["baseline","above","color"]),r=x(r,["baseline","below","color"])):r=x(r,["baseline"]),r=G(r,["baseline","above"]),r=G(r,["baseline","below"]),r=G(r,["baseline"]),r},{rerender:!0})}_removeBaseline(e){return this.context.mutate(e,t=>x(t,["baseline"]),{rerender:!0})}_hasBaselineOverride(e){let t=this.context.read(e,["baseline"]);return V(t)&&Object.keys(t).length?!0:!V(t)&&t!==void 0&&t!==null&&t!==""}_getBaselineOverrideSummary(e){if(this._getBaselineMode(e)==="disabled")return"Disabled";let r=[],i=this._getBaselineResolvableValue(e);return i.fixed!==""&&i.fixed!==void 0&&r.push(`Baseline ${i.fixed}`),i.entity&&r.push("Entity"),this._getBaselineDirectionalColorValue(e,"above")&&r.push("Above"),this._getBaselineDirectionalColorValue(e,"below")&&r.push("Below"),r.length?r.join(" \u2022 "):"Inherited"}_getCardBaselineSummary(){let e=this._getBaselineMode({type:"card"});if(e==="disabled")return"Disabled";let t=this._getBaselineResolvableValue({type:"card"}),r=t.entity||(t.fixed!==""&&t.fixed!==void 0?t.fixed:""),i=e==="enabled"?"Enabled":"Auto";return r!==""?`${i} \xB7 ${r}`:i}_setBaselineResolvablePart(e,t,r){return this.context.setSource(e,"baseline",t,r)}_setColor(e,t,r,i={}){return this.context.mutate(e,a=>{var l;let s=r===void 0?x(a,t):P(a,t,r);for(let o of(l=i.prunePaths)!=null?l:[])s=G(s,o);return s},{...i,baselineEdit:{path:t.slice(1),value:r}})}_removeColor(e,t,r){return this._setColor(e,t,void 0,r)}handleField({field:e,kind:t,index:r,value:i}){let a=t!=null&&t.startsWith("entity-")?{type:"entity",index:Number(r)}:{type:"card"},s=e!=null?e:t==null?void 0:t.replace(/^entity-/,"");if(this._handlePercentageField(s,i,a))return!0;if(t==="entity-baseline-inherit")return i&&this._clearBaselineOverride(a),!0;if(s==="baseline-mode")return this._setBaselineMode(a,i),!0;if(s==="baseline-value")return this._setBaselineResolvablePart(a,"fixed",i),!0;if(s==="baseline-entity-source")return this._setBaselineResolvablePart(a,"entity",i),!0;for(let l of["above","below"]){if(s===`baseline-${l}-color`)return this._setBaselineDirectionalColor(a,l,i),!0;if(s===`baseline-${l}-color-enabled`)return this._setBaselineDirectionalColorEnabled(a,l,i),!0}return!1}handleClick(e){var t,r;return this.options.percentSources&&((t=e==null?void 0:e.dataset)==null?void 0:t.action)==="baseline-clear-percent"?(this._percentageDraft=void 0,this.context.setSource({type:"card"},"baseline","percent",null),!0):((r=e==null?void 0:e.dataset)==null?void 0:r.action)!=="remove-baseline"?!1:(this._removeBaseline(e.dataset.scopeType==="entity"?{type:"entity",index:Number(e.dataset.index)}:{type:"card"}),!0)}render(e={type:"card"},t=({content:r})=>r){var l,o;if((e==null?void 0:e.type)==="entity"){let d=e.index,c=!this._hasBaselineOverride(e),u=this._getEffectiveBaselineResolvableValue(e),h=this._getEffectiveBaselineMode(e);return` +
+
+ + +
+
+
+ +
+
+ + +
+
+ + +
+
+ + ${be("entity-baseline-entity-source",d,u.entity,"inherit card default")} +
+
+
+ + +
+
+
+ + ${K({cssText:this.options.cssText,label:"Baseline color",id:`entity-${d}-baseline-above-color`,kind:"entity-baseline-above-color",index:d,value:this._getEffectiveBaselineDirectionalColorValue(e,"above"),fallbackHex:"#000000",placeholder:"inherit card default"})} +
+
+
+ + +
+
+
+ + ${K({cssText:this.options.cssText,label:"Baseline color",id:`entity-${d}-baseline-below-color`,kind:"entity-baseline-below-color",index:d,value:this._getEffectiveBaselineDirectionalColorValue(e,"below"),fallbackHex:"#000000",placeholder:"inherit card default"})} +
+ `}let r=this._getBaselineResolvableValue(e),i=this._getBaselineMode(e),a=this._getBaselineDirectionalColorValue(e,"above"),s=this._getBaselineDirectionalColorValue(e,"below");return` + ${t({group:"baseline",title:"Baseline",summary:this._getCardBaselineSummary(),content:` +
+
+ +
+
+ + +
+
+
Auto shows the baseline when a baseline value is configured.
+
+ ${this.options.percentSources?_i("baseline",this._getSourceMode(),(o=(l=this._percentageDraft)!=null?l:r.percent)!=null?o:""):""}
+ + +
+
+ + ${be("baseline-entity-source","card",r.entity)} +
+
+
+ + +
+
+
+ + ${K({cssText:this.options.cssText,label:"Baseline color",id:"baseline-above-color",field:"baseline-above-color",value:a,fallbackHex:"#000000"})} +
+
+
+ + +
+
+
+ + ${K({cssText:this.options.cssText,label:"Baseline color",id:"baseline-below-color",field:"baseline-below-color",value:s,fallbackHex:"#000000"})} +
+
`})} +`}}});function Ia(n,e){return n==="text"?N(e).replace(/\s+/g," ").trim():n==="entity"?N(e).trim():["show","showValue","showUnit","show_value","show_unit"].includes(n)?e===!0:Te(e)}function gt(n,e,t,r){var c;let i=n.read(e,[t]),a=V(i==null?void 0:i.label)?i.label:{},s=(e==null?void 0:e.type)==="entity"?(c=n.read({type:"card"},[t,"label"]))!=null?c:{}:{},l=u=>Object.prototype.hasOwnProperty.call(a,u),o=(u,h)=>{var p;return l(u)?a[u]:(p=s[u])!=null?p:h},d=o("precision",o("decimal",""));return{show:r,text:o("text",""),showValue:o("show_value",!0)!==!1,showUnit:o("show_unit",!0)!==!1,precision:d===null?"":d}}function yt(n,e,t,r,i){let a=r==="showValue"?"show_value":r==="showUnit"?"show_unit":r==="precision"?"precision":r,s=r==="text",l=Ia(r,i);return r==="precision"&&i!==""&&l===null?!1:n.mutate(e,o=>{var f,b,g,_;let d=D(o);t==="target"&&r==="show"&&(d=x(d,["show_target_label"]));let c=V(q(d,[t]))?D(q(d,[t])):{},u=V(c.label)?D(c.label):{},h=(e==null?void 0:e.type)==="entity"?(f=n.read({type:"card"},[t,"label"]))!=null?f:{}:{},p=r==="precision"?(g=(b=h.precision)!=null?b:h.decimal)!=null?g:null:(_=h[a])!=null?_:r==="show"?!1:r==="showValue"||r==="showUnit"?!0:void 0;return l===null||s&&!l?s&&(e==null?void 0:e.type)==="entity"&&typeof h.text=="string"&&h.text.trim()?u[a]="":delete u[a]:(e==null?void 0:e.type)==="entity"&&l===p||(r==="show"||r==="showValue"||r==="showUnit")&&(e==null?void 0:e.type)!=="entity"&&l===(r!=="show")?delete u[a]:u[a]=l,r==="precision"&&delete u.decimal,Object.keys(u).length?c.label=u:delete c.label,Object.keys(c).length?d=P(d,[t],c):d=x(d,[t]),d},{markerEdit:{key:t,path:["label",a],value:l,field:r}})}function Ae(n,e,t){let r=n.read(e,[t,"direction"]),i=r!==void 0?r:n.read(e,[`${t}_marker`,"direction"]);return(e==null?void 0:e.type)==="entity"&&i===void 0?Ae(n,{type:"card"},t):ye(i)}function vt(n,e,t,r){let i=ye(r),a=Ae(n,{type:"card"},t),s=(e==null?void 0:e.type)!=="entity"&&i==="inward"||(e==null?void 0:e.type)==="entity"&&i===a?void 0:i;return n.mutate(e,l=>G(s===void 0?x(l,[t,"direction"]):P(l,[t,"direction"],s),[t]),{prunePaths:[[t]],markerEdit:{key:t,path:["direction"],value:i}})}var kr=U(()=>{xe();re()});var St,La=U(()=>{xe();re();ve();kr();St=class{constructor(e,t={}){this.options=t,this.context=e,this.reset()}reset(){this._targetAboveFillDrafts=new Map,this._sourceMode=void 0,this._percentageDraft=void 0}_getCardTargetMarkerSummary(){let e=this._getTargetMode({type:"card"});if(e==="disabled")return"Disabled";let t=this._getTargetResolvableValue({type:"card"}),r=[];e==="enabled"&&r.push("Enabled");let i=t.fixed!==""&&t.fixed!==void 0||!!t.entity;return t.fixed!==""&&t.fixed!==void 0&&r.push(String(t.fixed)),t.entity&&r.push(t.entity),(i||this._hasTargetShape({type:"card"}))&&r.push(this._getEffectiveTargetShapeValue({type:"card"})==="triangle"?"Triangle":"Diamond"),r.length?r.join(" \xB7 "):"Automatic"}_getSourceMode(){var e;return(e=this._sourceMode)!=null?e:bi(this.context.source({type:"card"},"target"))}_handlePercentageField(e,t,r){if(!this.options.percentSources)return!1;if(e==="target-source-mode")return this._sourceMode=t,this._percentageDraft=void 0,this.context.setSource(r,"target","mode",t),!0;if(e!=="target-percent")return!1;let i=dt(t);return this._percentageDraft=i===null?t:void 0,i!==null&&this.context.setSource(r,"target","percent",i),!0}_getTargetResolvableValue(e){return this.context.source(e,"target")}_getEffectiveTargetResolvableValue(e){return this.context.source(e,"target",!0)}_getTargetMode(e){let t=this.context.read(e,["target","enabled"]);return(e==null?void 0:e.type)==="entity"?t===!1?"disabled":t===!0||this._hasTargetOverride(e)?"enabled":"inherit":t===!0?"enabled":t===!1?"disabled":"auto"}_getTargetShapeValue(e){var t;return(t=this.context.read(e,["target","shape"]))!=null?t:""}_hasTargetShape(e){let t=this.context.read(e,["target"]);return V(t)&&Object.prototype.hasOwnProperty.call(t,"shape")}_getEffectiveTargetShapeValue(e){return(e==null?void 0:e.type)==="entity"&&!this._hasTargetShape(e)?this._getEffectiveTargetShapeValue({type:"card"}):qe(this._getTargetShapeValue(e))}_setTargetShape(e,t){let r=qe(t);return(e==null?void 0:e.type)!=="entity"&&r==="diamond"?this._remove(e,["target","shape"],{prunePaths:[["target"]]}):this._setText(e,["target","shape"],r,{prunePaths:[["target"]]})}_getEffectiveTargetMode(e){let t=this._getTargetMode(e);if((e==null?void 0:e.type)!=="entity"||t!=="inherit")return t;let r=this._getTargetMode({type:"card"});if(r==="disabled")return"disabled";if(r==="enabled")return"enabled";let i=this._getTargetResolvableValue({type:"card"});return lt(i)||this._hasCustomTargetColor({type:"card"})||this._getTargetLabelShowValue({type:"card"})||this._getTargetAboveFillColorValue({type:"card"})?"enabled":"disabled"}_setTargetMode(e,t){return(e==null?void 0:e.type)==="entity"&&t==="inherit"?this._clearTargetOverride(e):t==="auto"?this._remove(e,["target","enabled"],{prunePaths:[["target"]]}):this._write(e,["target","enabled"],t==="enabled",{prunePaths:[["target"]]})}_setTargetResolvablePart(e,t,r){return this.context.setSource(e,"target",t,r)}_clearTargetOverride(e){return this.context.mutate(e,t=>{let r=D(t),i=q(r,["target"]);return V(i)?(r=x(r,["target","enabled"]),r=x(r,["target","at"]),r=x(r,["target","color"]),r=x(r,["target","shape"]),r=x(r,["target","direction"]),r=x(r,["target","label","show"]),r=x(r,["target","label","decimal"]),r=x(r,["target","when_exceeded","fill_color"])):r=x(r,["target"]),r=x(r,["target_entity"]),r=x(r,["target_color"]),r=x(r,["show_target_label"]),r=x(r,["above_target_color"]),r=G(r,["target","label"]),r=G(r,["target","when_exceeded"]),r=G(r,["target"]),r},{rerender:!0})}_getTargetColorValue(e){var t,r;return(r=(t=this.context.read(e,["target","color"]))!=null?t:this.context.read(e,["target_color"]))!=null?r:""}_getEffectiveTargetColorValue(e){return this._effectiveDisplay(e,["target","color"],[["target_color"]])}_hasCustomTargetColor(e){let t=this._getTargetColorValue(e);return!!t&&j(t)!==j("#888")}_setTargetColor(e,t){let r=ie(t,this.options.cssText);return!r||j(r)===j("#888")?this._remove(e,["target","color"],{deprecatedKeys:[["target_color"]],prunePaths:[["target"]]}):this._setText(e,["target","color"],r,{deprecatedKeys:[["target_color"]],prunePaths:[["target"]]})}_getTargetLabelShowValue(e){let t=this.context.read(e,["target","label","show"]);return t!==void 0?!!t:!!this.context.read(e,["show_target_label"])}_getEffectiveTargetLabelShowValue(e){let t=this.context.read(e,["target","label","show"]);if(t!==void 0)return!!t;let r=this.context.read(e,["show_target_label"]);return r!==void 0?!!r:(e==null?void 0:e.type)==="entity"?this._getTargetLabelShowValue({type:"card"}):!1}_setTargetLabelShow(e,t){return t?this._write(e,["target","label","show"],!0,{deprecatedKeys:[["show_target_label"]],prunePaths:[["target","label"],["target"]]}):this._remove(e,["target","label","show"],{deprecatedKeys:[["show_target_label"]],prunePaths:[["target","label"],["target"]]})}_getTargetLabelDecimalValue(e){var t,r;return(r=(t=this.context.read(e,["target","label","precision"]))!=null?t:this.context.read(e,["target","label","decimal"]))!=null?r:""}_getEffectiveTargetLabelDecimalValue(e){let t=this._getTargetLabelDecimalValue(e);return t!==""&&t!==null&&t!==void 0?t:(e==null?void 0:e.type)==="entity"?this._getTargetLabelDecimalValue({type:"card"}):""}_setTargetLabelDecimal(e,t){let r=Te(t);return t===""||t===null||t===void 0?this._remove(e,["target","label","decimal"],{prunePaths:[["target","label"],["target"]]}):r===null?!1:this._write(e,["target","label","decimal"],r,{prunePaths:[["target","label"],["target"]]})}_getTargetAboveFillColorValue(e){var t,r;return(r=(t=this.context.read(e,["target","when_exceeded","fill_color"]))!=null?t:this.context.read(e,["above_target_color"]))!=null?r:""}_getTargetAboveFillDraftKey(e={type:"card"}){return(e==null?void 0:e.type)==="entity"?`entity:${e.index}`:"card"}_setTargetAboveFillDraft(e,t){let r=ie(t,this.options.cssText),i=this._getTargetAboveFillDraftKey(e);r?this._targetAboveFillDrafts.set(i,r):this._targetAboveFillDrafts.delete(i)}_getTargetAboveFillDraft(e){var t;return(t=this._targetAboveFillDrafts.get(this._getTargetAboveFillDraftKey(e)))!=null?t:""}_getEffectiveTargetAboveFillColorValue(e){return this._effectiveDisplay(e,["target","when_exceeded","fill_color"],[["above_target_color"]])}_setTargetAboveFillColor(e,t){let r=ie(t,this.options.cssText);return this._setTargetAboveFillDraft(e,r),this._isTargetAboveFillEnabled(e)?r?this._setText(e,["target","when_exceeded","fill_color"],r,{deprecatedKeys:[["above_target_color"]],prunePaths:[["target","when_exceeded"],["target"]]}):this._remove(e,["target","when_exceeded","fill_color"],{deprecatedKeys:[["above_target_color"]],prunePaths:[["target","when_exceeded"],["target"]]}):!1}_isTargetAboveFillEnabled(e){return!!N(this._getTargetAboveFillColorValue(e)).trim()}_setTargetAboveFillEnabled(e,t){let r=ie(this._getTargetAboveFillColorValue(e),this.options.cssText);if(!t)return r&&this._setTargetAboveFillDraft(e,r),this._remove(e,["target","when_exceeded","fill_color"],{deprecatedKeys:[["above_target_color"]],prunePaths:[["target","when_exceeded"],["target"]]});let i=this._getTargetAboveFillDraft(e)||ie(this._getEffectiveTargetAboveFillColorValue(e),this.options.cssText)||r||"#000000";return this._setText(e,["target","when_exceeded","fill_color"],i,{deprecatedKeys:[["above_target_color"]],prunePaths:[["target","when_exceeded"],["target"]]})}_hasTargetOverride(e){let t=this.context.read(e,["target"]);return V(t)&&Object.keys(t).length||!V(t)&&t!==void 0&&t!==null&&t!==""?!0:["target_entity","target_color","show_target_label","above_target_color"].some(r=>{let i=this.context.read(e,[r]);return i!=null&&i!==""&&i!==!1})||this._getTargetLabelDecimalValue(e)!==""}_getTargetOverrideSummary(e){if(this._getTargetMode(e)==="disabled")return"Disabled";let r=[],i=this._getTargetResolvableValue(e);i.fixed!==""&&i.fixed!==void 0&&r.push(`Target ${i.fixed}`),i.entity&&r.push("Entity"),this._hasTargetShape(e)&&r.push(this._getEffectiveTargetShapeValue(e)==="triangle"?"Triangle":"Diamond"),this._hasCustomTargetColor(e)&&r.push("Custom color"),this._getTargetLabelShowValue(e)&&r.push("Label");let a=this._getTargetLabelDecimalValue(e);return a!==""&&r.push(`Label ${a} ${Number(a)===1?"decimal":"decimals"}`),this._getTargetAboveFillColorValue(e)&&r.push("Above"),r.length?r.join(" \u2022 "):"Inherited"}_write(e,t,r,i={}){var a;return this.context.mutate(e,s=>{var o,d;let l=r===void 0?x(s,t):P(s,t,r);l=Pe(l,(o=i.deprecatedKeys)!=null?o:[]);for(let c of(d=i.prunePaths)!=null?d:[])l=G(l,c);return l},{...i,targetEdit:{path:t.slice(1),value:r,deprecatedKeys:(a=i.deprecatedKeys)!=null?a:[]}})}_remove(e,t,r){return this._write(e,t,void 0,r)}_setText(e,t,r,i){return this._write(e,t,ie(r,this.options.cssText)||void 0,i)}_effectiveDisplay(e,t,r){return mi(this.context,e,t,r)}_getEffectiveMarkerDirection(e,t){return Ae(this.context,e,t)}_setMarkerDirection(e,t,r){return vt(this.context,e,t,r)}_getBuiltinMarkerLabelOptions(e,t){return gt(this.context,e,t,this._getEffectiveTargetLabelShowValue(e))}_renderBuiltinMarkerLabelControls(e,t,r){return ot(e,t,r,this._getBuiltinMarkerLabelOptions(e,t))}_setBuiltinMarkerLabelField(e,t,r,i){return yt(this.context,e,t,r,i)}handleField({field:e,kind:t,index:r,value:i}){let a=t!=null&&t.startsWith("entity-")?{type:"entity",index:Number(r)}:{type:"card"},s=e!=null?e:t==null?void 0:t.replace(/^entity-/,"");if(this._handlePercentageField(s,i,a))return!0;if(s==="target-inherit")return i&&this._clearTargetOverride(a),!0;if(s==="target-mode")return this._setTargetMode(a,i),!0;if(s==="target-value")return this._setTargetResolvablePart(a,"fixed",i),!0;if(s==="target-entity-source")return this._setTargetResolvablePart(a,"entity",i),!0;if(s==="target-shape")return this._setTargetShape(a,i),!0;if(s==="target-direction")return this._setMarkerDirection(a,"target",i),!0;if(s==="target-color")return this._setTargetColor(a,i),!0;let l=s==null?void 0:s.match(/^target-label-(show|text|show-value|show-unit|precision)$/);if(l){let o=l[1];return this._setBuiltinMarkerLabelField(a,"target",o==="show-value"?"showValue":o==="show-unit"?"showUnit":o,i),!0}return s==="target-above-fill-enabled"?(this._setTargetAboveFillEnabled(a,i),!0):s==="target-above-fill-color"?(this._setTargetAboveFillColor(a,i),!0):!1}handleClick(e){var t;return this.options.percentSources&&((t=e==null?void 0:e.dataset)==null?void 0:t.action)==="target-clear-percent"?(this._percentageDraft=void 0,this.context.setSource({type:"card"},"target","percent",null),!0):!1}render(e={type:"card"}){var o,d;if((e==null?void 0:e.type)==="entity"){let c=e.index,u=!this._hasTargetOverride(e),h=this._getEffectiveTargetResolvableValue(e),p=this._getEffectiveTargetMode(e),f=this._getEffectiveTargetShapeValue(e),b=this._getEffectiveMarkerDirection(e,"target");return` +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + ${be("entity-target-entity-source",c,h.entity,"inherit card default")} +
+
+ + ${K({cssText:this.options.cssText,label:"Target color",id:`entity-${c}-target-color`,kind:"entity-target-color",index:c,value:this._getEffectiveTargetColorValue(e),fallbackHex:"#888",placeholder:"inherit card default"})} +
+ ${this._renderBuiltinMarkerLabelControls(e,"target","Target")} +
+
+ + +
+
+
+ + ${K({cssText:this.options.cssText,label:"Target color",id:`entity-${c}-target-above-fill`,kind:"entity-target-above-fill-color",index:c,value:this._getEffectiveTargetAboveFillColorValue(e),fallbackHex:"#000000",placeholder:"inherit card default"})} +
+ `}let t=this._getTargetResolvableValue(e),r=this._getTargetMode(e),i=this._getEffectiveTargetShapeValue(e),a=this._getEffectiveMarkerDirection(e,"target"),s=this._getTargetColorValue(e),l=this._getTargetAboveFillColorValue(e);return` +
+
+ + +
+ ${this.options.percentSources?_i("target",this._getSourceMode(),(d=(o=this._percentageDraft)!=null?o:t.percent)!=null?d:""):""}
+ + +
+
+ + +
+
+ + +
+
+ + ${be("target-entity-source","card",t.entity)} +
+
+ + ${K({cssText:this.options.cssText,label:"Target color",id:"target-color",field:"target-color",value:s,fallbackHex:"#888",placeholder:"#888"})} +
+ ${this._renderBuiltinMarkerLabelControls({type:"card"},"target","Target")} +
+
+ + +
+
+
+ + ${K({cssText:this.options.cssText,label:"Target color",id:"target-above-fill-color",field:"target-above-fill-color",value:l,fallbackHex:"#000000"})} +
+
`}}});var xt,ja=U(()=>{re();ve();kr();xt=class{constructor(e,t={}){this.options=t,this.context=e}_getScopedPeakConfig(e){var d,c;let t=this.context.read(e,["peak"]),r=this.context.read(e,["peak_marker"]),i=this.context.read(e,["show_peak"]),a=this.context.read(e,["peak_color"]),s="#888",l=(e==null?void 0:e.type)==="entity"?"inherit":"disabled",o="";return V(t)&&(t.enabled===!0?l="enabled":t.enabled===!1&&(l="disabled"),o=(d=t.color)!=null?d:o),V(r)&&(r.show===!0?l="enabled":(r.show===!1||(e==null?void 0:e.type)!=="entity")&&(l="disabled"),o=(c=r.color)!=null?c:o),i===!0?l="enabled":i===!1&&(l="disabled"),o=o||a||"",o&&j(o)===j(s)&&(o=""),{mode:l,color:o}}_getEffectiveScopedPeakConfig(e){let t=this._getScopedPeakConfig(e);if((e==null?void 0:e.type)!=="entity")return t;if(!this._hasPeakOverride(e))return this._getScopedPeakConfig({type:"card"});let r=this._getScopedPeakConfig({type:"card"});return{mode:t.mode==="inherit"?r.mode:t.mode,color:t.color||r.color}}_hasPeakOverride(e){var i,a;let t=(i=this.context.read(e,["peak"]))!=null?i:{};if(V(t)&&(Object.prototype.hasOwnProperty.call(t,"enabled")||Object.prototype.hasOwnProperty.call(t,"color")||Object.prototype.hasOwnProperty.call(t,"reset")||Object.prototype.hasOwnProperty.call(t,"label")||Object.prototype.hasOwnProperty.call(t,"direction")))return!0;let r=(a=this.context.read(e,["peak_marker"]))!=null?a:{};return V(r)&&(Object.prototype.hasOwnProperty.call(r,"show")||Object.prototype.hasOwnProperty.call(r,"color")||Object.prototype.hasOwnProperty.call(r,"direction"))?!0:this.context.read(e,["show_peak"])!==void 0||this.context.read(e,["peak_color"])!==void 0}_getPeakSummary(e){if((e==null?void 0:e.type)==="entity"&&!this._hasPeakOverride(e))return"Inherited";let t=this._getScopedPeakConfig(e);return t.mode==="disabled"?t.color?"Disabled \u2022 Custom color":"Disabled":t.mode==="enabled"?t.color?"Enabled \u2022 Custom color":"Enabled":t.color?"Custom color":"Inherited"}_clearPeakOverride(e){return this.context.mutate(e,t=>{let r=x(t,["peak","enabled"]);return r=x(r,["peak","color"]),r=x(r,["peak","reset"]),r=x(r,["peak","label"]),r=x(r,["peak","direction"]),r=x(r,["show_peak"]),r=x(r,["peak_color"]),r=x(r,["peak_marker"]),r=G(r,["peak"]),r},{rerender:!0})}_setScopedPeakEnabled(e,t){let r=!!t,i="#888";return this.context.mutate(e,a=>{var d,c,u;let s=D(a),l=V(q(s,["peak"]))?D(q(s,["peak"])):{},o=(u=(c=(d=l.color)!=null?d:V(q(s,["peak_marker"]))?q(s,["peak_marker","color"]):void 0)!=null?c:q(s,["peak_color"]))!=null?u:i;return(e==null?void 0:e.type)==="entity"||r?l.enabled=r:delete l.enabled,o&&j(o)!==j(i)?l.color=o:delete l.color,Object.keys(l).length?s=P(s,["peak"],l):s=x(s,["peak"]),s=x(s,["show_peak"]),s=x(s,["peak_color"]),s=x(s,["peak_marker"]),s=G(s,["peak"]),s},{extremumEdit:{key:"peak",path:["enabled"],value:r}})}_setScopedPeakColor(e,t){let r=ie(t,this.options.cssText),i="#888";return this.context.mutate(e,a=>{let s=D(a),l=V(q(s,["peak"]))?D(q(s,["peak"])):{},o=this._getScopedPeakConfig(e);return delete l.color,r&&j(r)!==j(i)&&(l.color=r),(e==null?void 0:e.type)==="entity"?(o.mode==="enabled"&&(l.enabled=!0),o.mode==="disabled"&&(l.enabled=!1)):o.mode==="enabled"&&(l.enabled=!0),Object.keys(l).length?s=P(s,["peak"],l):s=x(s,["peak"]),s=x(s,["show_peak"]),s=x(s,["peak_color"]),s=x(s,["peak_marker"]),s=G(s,["peak"]),s},{extremumEdit:{key:"peak",path:["color"],value:r&&j(r)!==j(i)?r:void 0}})}_getScopedMarkerExtras(e,t){var s,l,o,d;let r=this.context.read(e,[t]),i=V(r)?r:{},a=V(i.label)?i.label:{};return{reset:Object.prototype.hasOwnProperty.call(i,"reset")?N(i.reset).trim().toLowerCase():null,labelShow:typeof a.show=="boolean"?a.show:null,labelText:typeof a.text=="string"?a.text.replace(/\s+/g," ").trim():null,labelShowValue:typeof a.show_value=="boolean"?a.show_value:null,labelShowUnit:typeof a.show_unit=="boolean"?a.show_unit:null,labelPrecision:((s=a.precision)!=null?s:a.decimal)===void 0||((l=a.precision)!=null?l:a.decimal)===null||((o=a.precision)!=null?o:a.decimal)===""?null:ne((d=a.precision)!=null?d:a.decimal)}}_hasExtremumOverride(e,t){let r=this.context.read(e,[t]);return V(r)?["enabled","color","reset","label","direction"].some(i=>Object.prototype.hasOwnProperty.call(r,i)):!1}_getEffectiveMarkerExtras(e,t){var a,s,l,o,d,c,u,h,p,f,b,g,_,y,m,v,S,w;let r=this._getScopedMarkerExtras(e,t);if((e==null?void 0:e.type)!=="entity")return{reset:(a=r.reset)!=null?a:"never",labelShow:(s=r.labelShow)!=null?s:!1,labelText:r.labelText,labelShowValue:(l=r.labelShowValue)!=null?l:!0,labelShowUnit:(o=r.labelShowUnit)!=null?o:!0,labelPrecision:r.labelPrecision};let i=this._getScopedMarkerExtras({type:"card"},t);return this._hasExtremumOverride(e,t)?{reset:(f=(p=r.reset)!=null?p:i.reset)!=null?f:"never",labelShow:(g=(b=r.labelShow)!=null?b:i.labelShow)!=null?g:!1,labelText:Object.prototype.hasOwnProperty.call((_=this.context.read(e,[t,"label"]))!=null?_:{},"text")?r.labelText:i.labelText,labelShowValue:(m=(y=r.labelShowValue)!=null?y:i.labelShowValue)!=null?m:!0,labelShowUnit:(S=(v=r.labelShowUnit)!=null?v:i.labelShowUnit)!=null?S:!0,labelPrecision:(w=r.labelPrecision)!=null?w:i.labelPrecision}:{reset:(d=i.reset)!=null?d:"never",labelShow:(c=i.labelShow)!=null?c:!1,labelText:i.labelText,labelShowValue:(u=i.labelShowValue)!=null?u:!0,labelShowUnit:(h=i.labelShowUnit)!=null?h:!0,labelPrecision:i.labelPrecision}}_getScopedFloorConfig(e){let t=this.context.read(e,["floor"]),r=V(t)?t:{},i=(e==null?void 0:e.type)==="entity"?"inherit":"disabled";r.enabled===!0&&(i="enabled"),r.enabled===!1&&(i="disabled");let a=r.color&&j(r.color)!==j("#888888")?r.color:"";return{mode:i,color:a}}_getEffectiveScopedFloorConfig(e){let t=this._getScopedFloorConfig(e),r=this._getEffectiveMarkerExtras(e,"floor");if((e==null?void 0:e.type)!=="entity")return{...t,...r};if(!this._hasExtremumOverride(e,"floor"))return{...this._getScopedFloorConfig({type:"card"}),...r};let i=this._getEffectiveScopedFloorConfig({type:"card"});return{mode:t.mode==="inherit"?i.mode:t.mode,color:t.color||i.color,...r}}_getFloorSummary(e){if((e==null?void 0:e.type)==="entity"&&!this._hasExtremumOverride(e,"floor"))return"Inherited";let t=this._getEffectiveScopedFloorConfig(e);return t.mode==="enabled"?t.color?"Enabled \u2022 Custom color":"Enabled":t.color?"Disabled \u2022 Custom color":"Disabled"}_getMarkerResetSummary(e){var s;let t={type:"card"},i=(e==="peak"?this._getScopedPeakConfig(t):this._getEffectiveScopedFloorConfig(t)).mode==="enabled",a=(s=this._getEffectiveMarkerExtras(t,e).reset)!=null?s:"never";return`${i?"Enabled":"Disabled"} \xB7 ${a==="never"?"no reset":`${a} reset`}`}_setScopedExtremumEnabled(e,t,r){let i=!!r,a="#888888";return this.context.mutate(e,s=>{var c;let l=D(s),o=V(q(l,[t]))?D(q(l,[t])):{},d=(c=o.color)!=null?c:a;return(e==null?void 0:e.type)==="entity"||i?o.enabled=i:delete o.enabled,d&&j(d)!==j(a)?o.color=d:delete o.color,Object.keys(o).length?l=P(l,[t],o):l=x(l,[t]),l},{extremumEdit:{key:t,path:["enabled"],value:i}})}_setScopedExtremumColor(e,t,r){let i=ie(r,this.options.cssText),a="#888888";return this.context.mutate(e,s=>{let l=D(s),o=V(q(l,[t]))?D(q(l,[t])):{};delete o.color,i&&j(i)!==j(a)&&(o.color=i);let d=this._getScopedFloorConfig(e).mode;return t==="floor"&&((e==null?void 0:e.type)==="entity"&&d!=="inherit"||(e==null?void 0:e.type)!=="entity"&&d==="enabled")&&(o.enabled=d==="enabled"),Object.keys(o).length?l=P(l,[t],o):l=x(l,[t]),t==="peak"&&(l=x(l,["show_peak"]),l=x(l,["peak_color"]),l=x(l,["peak_marker"])),l},{extremumEdit:{key:t,path:["color"],value:i&&j(i)!==j(a)?i:void 0}})}_setScopedExtremumReset(e,t,r){let i=N(r).trim().toLowerCase();return this.context.mutate(e,a=>{let s=D(a),l=V(q(s,[t]))?D(q(s,[t])):{};return i&&((e==null?void 0:e.type)==="entity"||i!=="never")?l.reset=i:delete l.reset,Object.keys(l).length?s=P(s,[t],l):s=x(s,[t]),t==="peak"&&(s=x(s,["show_peak"]),s=x(s,["peak_color"]),s=x(s,["peak_marker"])),s},{extremumEdit:{key:t,path:["reset"],value:i}})}_setScopedExtremumLabelShow(e,t,r){let i=!!r;return this.context.mutate(e,a=>{let s=D(a),l=V(q(s,[t]))?D(q(s,[t])):{},o=V(l.label)?D(l.label):{};return(e==null?void 0:e.type)==="entity"||i?o.show=i:delete o.show,Object.keys(o).length?l.label=o:delete l.label,Object.keys(l).length?s=P(s,[t],l):s=x(s,[t]),t==="peak"&&(s=x(s,["show_peak"]),s=x(s,["peak_color"]),s=x(s,["peak_marker"])),s},{extremumEdit:{key:t,path:["label","show"],value:i}})}_setScopedExtremumLabelDecimal(e,t,r){let i=ne(r);return this.context.mutate(e,a=>{let s=D(a),l=V(q(s,[t]))?D(q(s,[t])):{},o=V(l.label)?D(l.label):{};return i!==null?o.decimal=i:delete o.decimal,Object.keys(o).length?l.label=o:delete l.label,Object.keys(l).length?s=P(s,[t],l):s=x(s,[t]),s},{extremumEdit:{key:t,path:["label","decimal"],value:i}})}_clearFloorOverride(e){return this.context.mutate(e,t=>{let r=D(t),i=V(q(r,["floor"]))?D(q(r,["floor"])):{};return["enabled","color","reset","label","direction"].forEach(a=>delete i[a]),Object.keys(i).length?r=P(r,["floor"],i):r=x(r,["floor"]),r=x(r,["floor_marker"]),r},{rerender:!0})}_setPeakShow(e){return this._setScopedPeakEnabled({type:"card"},e)}_getPeakShowValue(){return this._getScopedPeakConfig({type:"card"}).mode==="enabled"}_getMarkerConfig(e,t){return t==="peak"?this._getEffectiveScopedPeakConfig(e):this._getEffectiveScopedFloorConfig(e)}_getBuiltinMarkerLabelOptions(e,t){return gt(this.context,e,t,this._getEffectiveMarkerExtras(e,t).labelShow)}_renderBuiltinMarkerLabelControls(e,t,r){return ot(e,t,r,this._getBuiltinMarkerLabelOptions(e,t))}_getEffectiveMarkerDirection(e,t){return Ae(this.context,e,t)}render(e={type:"card"},t="peak"){let r=t==="peak"?"Peak":"Floor",i=t==="peak"?"#888":"#888888",a={...this._getMarkerConfig(e,t),...this._getEffectiveMarkerExtras(e,t)};if((e==null?void 0:e.type)==="entity"){let s=e.index,l=!(t==="peak"?this._hasPeakOverride(e):this._hasExtremumOverride(e,t)),o=t==="peak"?" ":"";return` +${o}
+${o}
+${o} + +
+
+
+
+ + +
+
+
+ + ${K({cssText:this.options.cssText,label:"Marker color",id:`entity-${s}-${t}-color`,kind:`entity-${t}-color`,index:s,value:a.color,fallbackHex:i,placeholder:"inherit card default"})} +
+
+ + +
+
+ + +
+ ${this._renderBuiltinMarkerLabelControls(e,t,r)} +${o} `}return` +
+
+
+ + +
+
+
+ + ${K({cssText:this.options.cssText,label:"Marker color",id:`${t}-color`,field:`${t}-color`,value:a.color,fallbackHex:i,placeholder:i})} +
+
+ + +
+
+ + +
+ ${this._renderBuiltinMarkerLabelControls({type:"card"},t,r)} +
`}handleField({field:e,kind:t,index:r,value:i}){let a=t!=null&&t.startsWith("entity-")?{type:"entity",index:Number(r)}:{type:"card"},s=e!=null?e:t==null?void 0:t.replace(/^entity-/,""),l=s==null?void 0:s.match(/^(peak|floor)-(.*)$/);if(!l)return!1;let[,o,d]=l;if(d==="inherit")return i&&(o==="peak"?this._clearPeakOverride(a):this._clearFloorOverride(a)),!0;if(d==="show"||d==="enabled")return o==="peak"?this._setScopedPeakEnabled(a,i):this._setScopedExtremumEnabled(a,o,i),!0;if(d==="color")return o==="peak"?this._setScopedPeakColor(a,i):this._setScopedExtremumColor(a,o,i),!0;if(d==="reset")return this._setScopedExtremumReset(a,o,i),!0;if(d==="direction")return vt(this.context,a,o,i),!0;let c=d.match(/^label-(show|text|show-value|show-unit|precision)$/);if(c){let u=c[1];return yt(this.context,a,o,u==="show-value"?"showValue":u==="show-unit"?"showUnit":u,i),!0}return!1}}});function kt(n){var r,i,a;let e=n==null?void 0:n.at;if(typeof e=="string"&&/^\s*[+-]?(?:\d+(?:\.\d+)?|\.\d+)\s*%\s*$/.test(e))return{mode:"percent",percent:e.replace(/%/g,"").trim()};if(typeof e=="string"&&/^[a-z0-9_]+\.[a-z0-9_]+$/i.test(e.trim()))return{mode:"entity",entity:e.trim(),fixed:""};let t=V(e)?e:{};return Object.prototype.hasOwnProperty.call(t,"entity")?{mode:t.fixed!==void 0&&t.fixed!==null&&t.fixed!==""?"entity-fallback":"entity",entity:(r=t.entity)!=null?r:"",fixed:(i=t.fixed)!=null?i:""}:{mode:"fixed",fixed:(a=t.fixed)!=null?a:""}}var wt,Di=U(()=>{xe();re();ve();kr();wt=class{constructor(e,t,r={}){this.options=r,this.context=e,this.ui=t,this._genericMarkerUiIds=new Map,this._expandedGenericMarkerUiIds=new Set,this._nextGenericMarkerUiId=0}reset(){this._genericMarkerUiIds.clear(),this._expandedGenericMarkerUiIds.clear()}_getShadowElementById(e){var t,r,i,a;return(a=(r=(t=this.ui.root())==null?void 0:t.getElementById)==null?void 0:r.call(t,e))!=null?a:(i=this.ui.root())==null?void 0:i.querySelector(`#${e}`)}render(e={type:"card"}){return this._renderGenericMarkersEditor(e)}_hasMarkersOverride(e){return(e==null?void 0:e.type)==="entity"&&this.context.read(e,["markers"])!==void 0}_getGenericMarkers(e,t=!0){let r=this.context.read(e,["markers"]);if((e==null?void 0:e.type)==="entity"&&r===void 0&&t){let i=this.context.read({type:"card"},["markers"]);return Array.isArray(i)?D(i):[]}return Array.isArray(r)?D(r):[]}_getGenericMarkersSummary(e){if((e==null?void 0:e.type)==="entity"&&!this._hasMarkersOverride(e))return"Inherited";let t=this._getGenericMarkers(e,!1).length;return t===0?"No reference markers":`${t} reference marker${t===1?"":"s"}`}_getGenericMarkerScopeKey(e){return(e==null?void 0:e.type)==="entity"?`entity:${e.index}`:"card"}_getGenericMarkerUiIds(e,t){var a;let r=this._getGenericMarkerScopeKey(e),i=(a=this._genericMarkerUiIds.get(r))!=null?a:[];for(;i.lengththis._expandedGenericMarkerUiIds.delete(a)),this._genericMarkerUiIds.delete(t)}_getGenericMarkerSummary(e){var s;let t=this._getGenericMarkerSource(e),r=(e==null?void 0:e.lane)==="above"?"Above":"Below",i=(s=e==null?void 0:e.shape)!=null?s:"circle",a;return t.mode==="percent"?a=t.percent===""?"Percentage":`${t.percent}%`:t.mode==="entity"||t.mode==="entity-fallback"?a=t.entity||"Entity":a=t.fixed===""?"Fixed value":String(t.fixed),`${r} \xB7 ${i.charAt(0).toUpperCase()}${i.slice(1)} \xB7 ${a}`}_refreshGenericMarkerSummary(e,t){let r=this._getGenericMarkers(e),i=r[t],a=this._getGenericMarkerUiIds(e,r.length)[t],s=this._getShadowElementById(`generic-${a}-summary`);if(i&&s){let l=this._getGenericMarkerSummary(i);s.textContent!==l&&(s.textContent=l),s.setAttribute("title",l)}}_getGenericMarkerSource(e){return this.context.source({type:"card"},{type:"reference-marker",marker:e})}_renderGenericMarkersEditor(e){let t=e.type,r=t==="entity"?e.index:"card",i=this._getGenericMarkers(e),a=this._getGenericMarkerUiIds(e,i.length),s=this._hasMarkersOverride(e),l=i.map((c,u)=>{var y,m,v,S,w,k,M,$,T,B,E,z,C,O;let h=this._getGenericMarkerSource(c),p=a[u],f=`${t}-${r}-generic-${p}`,b=this._expandedGenericMarkerUiIds.has(p),g=h.mode==="entity"||h.mode==="entity-fallback"?be("generic-marker-entity",r,h.entity,"sensor.reference",{"scope-type":t,"marker-index":u}):"",_=be("generic-marker-label-entity",r,(m=(y=c==null?void 0:c.label)==null?void 0:y.entity)!=null?m:"","sensor.information",{"scope-type":t,"marker-index":u});return` +
+
+ +
+ + + +
+
+
+
+ + +
+ ${h.mode==="fixed"?` +
+ + +
`:""} + ${h.mode==="entity"||h.mode==="entity-fallback"?` +
+ + ${g} +
`:""} + ${h.mode==="entity-fallback"?` +
+ + +
`:""} + ${h.mode==="percent"?` +
+ + ${va(`${f}-percent`,`data-kind="generic-marker-percent" data-scope-type="${t}" data-index="${r}" data-marker-index="${u}"`,h.percent)} +
`:""} +
+
+ + +
+
+ + +
+
+
+ + +
+
+ + ${K({cssText:this.options.cssText,label:"Reference marker color",id:`${f}-color`,kind:"generic-marker-color",index:r,value:(w=c==null?void 0:c.color)!=null?w:"#888888",fallbackHex:"#888888",placeholder:"#888888",extraDataset:{"scope-type":t,"marker-index":u}})} +
+
+ + +
+
+ + +
+
+ +
+
+ + ${_} +
+
+
+ + +
+
+ + +
+
+ +
+
+
+
`}).join("");return` + ${t==="entity"?` +
+
+ + +
+
`:""} + ${t==="entity"&&!s?'
Enable the override to replace the card marker list. An empty override clears all card markers.
':""} + ${t==="card"||s?` +
Up to four markers render in each lane, including Peak, Floor, and Target. Excess generic markers remain editable and show a warning. Unresolved markers still reserve a slot and lane.
+
${l}
+ `:""} + `}_getGenericMarkerScope(e){var t;return((t=e==null?void 0:e.dataset)==null?void 0:t.scopeType)==="entity"?{type:"entity",index:Number(e.dataset.index)}:{type:"card"}}_setGenericMarkerList(e,t,r={}){let i=this.context.mutate(e,a=>P(a,["markers"],t),{...r,rerender:!1});return i&&r.rerender&&this.ui.render(e),i}_updateGenericMarker(e,t,r,i={}){var d;let a=this._getGenericMarkers(e);if(!a[t])return!1;let s=V(a[t])?D(a[t]):{},l=(d=r(s))!=null?d:s;a[t]=l;let o=this._setGenericMarkerList(e,a,i);return o&&this._refreshGenericMarkerSummary(e,t),o}_setGenericMarkerSourceMode(e,t,r){return this._updateGenericMarker(e,t,i=>{if(r==="percent")return i.at="50%",i;let a=V(i.at)?D(i.at):{};return r==="fixed"?(delete a.entity,delete a.percent,a.fixed===void 0&&(a.fixed=50)):(delete a.percent,a.entity||(a.entity=""),r==="entity"&&delete a.fixed,r==="entity-fallback"&&a.fixed===void 0&&(a.fixed=50)),i.at=a,i},{rerender:!0,referenceMarkerEdit:{type:"mode",index:t,value:r}})}_toggleGenericMarkerExpanded(e){var r;this._expandedGenericMarkerUiIds.has(e)?this._expandedGenericMarkerUiIds.delete(e):this._expandedGenericMarkerUiIds.add(e);let t=(r=this.ui.root())==null?void 0:r.querySelector(`.generic-marker-item[data-marker-ui-id="${e}"]`);if(t!=null&&t.querySelector){let i=this._expandedGenericMarkerUiIds.has(e);t.setAttribute("data-expanded",String(i)),t.querySelector(".generic-marker-toggle").setAttribute("aria-expanded",String(i)),t.querySelector(".generic-marker-body").style.display=i?"grid":"none"}else this.ui.render()}_setGenericMarkerSourcePart(e,t,r,i){return this._updateGenericMarker(e,t,a=>{var o;let s=r==="entity"?N(i).trim()||void 0:(o=ne(i))!=null?o:void 0;if(r==="percent")return a.at=s===void 0?null:`${s}%`,a;let l=V(a.at)?D(a.at):{};return s===void 0?delete l[r]:l[r]=s,a.at=Object.keys(l).length?l:null,a})}_setGenericMarkerField(e,t,r,i){let a=r.replace(/^generic-marker-/,"");if(a==="source-mode")return this._setGenericMarkerSourceMode(e,t,i);if(["fixed","fallback","entity","percent"].includes(a))return this.context.setSource(e,{type:"reference-marker",index:t},a==="fallback"?"fixed":a,i);let s,l;if(a==="show-marker")s=["show_marker"],l=i===!1?!1:void 0;else if(["lane","shape","direction"].includes(a))s=[a],l=a==="direction"?ye(i):i;else if(a==="color")s=["color"],l=ie(i,this.options.cssText);else if(a.startsWith("label-")){let o=a.slice(6).replace("show-value","show_value").replace("show-unit","show_unit");if(!["show","text","entity","show_value","show_unit","precision"].includes(o))return!1;s=["label",o],l=Ia(o,i),(["text","entity"].includes(o)&&!l||l===null)&&(l=void 0)}else return!1;return this._updateGenericMarker(e,t,o=>{if(s[0]==="label"){let d=V(o.label)?D(o.label):{};l===void 0?delete d[s[1]]:d[s[1]]=l,s[1]==="precision"&&delete d.decimal,o.label=d}else l===void 0?delete o[s[0]]:o[s[0]]=l;return o},{referenceMarkerEdit:{type:"field",index:t,path:s,value:l}})}handleField({target:e,kind:t,value:r}){if(t==="entity-markers-inherit"){let i={type:"entity",index:Number(e.dataset.index)};return this._resetGenericMarkerUiScope(i),r?this.context.mutate(i,a=>x(a,["markers"]),{rerender:!0}):this._setGenericMarkerList(i,this._getGenericMarkers(i),{rerender:!0}),!0}return t!=null&&t.startsWith("generic-marker-")?(this._setGenericMarkerField(this._getGenericMarkerScope(e),Number(e.dataset.markerIndex),t,r),!0):!1}handleClick(e){var r;let t=(r=e==null?void 0:e.dataset)==null?void 0:r.action;if(e!=null&&e.disabled)return!1;if(t==="toggle-generic-marker")return this._toggleGenericMarkerExpanded(e.dataset.markerUiId),!0;if(t==="add-generic-marker"){let i=this._getGenericMarkerScope(e),a=this._getGenericMarkers(i),s=this._getGenericMarkerUiIds(i,a.length);a.push({at:{fixed:50}});let l=`marker-${++this._nextGenericMarkerUiId}`;return s.push(l),this._expandedGenericMarkerUiIds.add(l),this._setGenericMarkerList(i,a,{rerender:!0,referenceMarkerEdit:{type:"add"}}),!0}if(t==="remove-generic-marker"||t==="move-generic-marker-up"||t==="move-generic-marker-down"){let i=this._getGenericMarkerScope(e),a=Number(e.dataset.markerIndex),s=this._getGenericMarkers(i),l=this._getGenericMarkerUiIds(i,s.length);if(t==="remove-generic-marker")s.splice(a,1),this._expandedGenericMarkerUiIds.delete(l[a]),l.splice(a,1);else{let o=a+(t==="move-generic-marker-up"?-1:1);if(o<0||o>=s.length)return!0;[s[a],s[o]]=[s[o],s[a]],[l[a],l[o]]=[l[o],l[a]]}return this._setGenericMarkerList(i,s,{rerender:!0,referenceMarkerEdit:{type:t==="add-generic-marker"?"add":t==="remove-generic-marker"?"remove":"move",index:Number(e.dataset.markerIndex),delta:t==="move-generic-marker-up"?-1:1}}),!0}return!1}syncStructure(e={type:"card"}){var f,b,g,_,y;let t=this.ui.root(),r=t==null?void 0:t.querySelector(e.type==="entity"?`.entity-shell[data-entity-shell-index="${e.index}"] .override-group[data-group="markers"]`:'.card-subgroup[data-group="generic-markers"]'),i=(f=r==null?void 0:r.querySelector)==null?void 0:f.call(r,".generic-marker-list");if(!(i!=null&&i.ownerDocument))return!1;let a=this._getGenericMarkers(e),s=this._getGenericMarkerUiIds(e,a.length),l=i.ownerDocument.createElement("template");l.innerHTML=this.render(e);let o=l.content.querySelectorAll(".generic-marker-item"),d=new Map(Array.from(i.children,m=>[m.dataset.markerUiId,m])),c=t.activeElement,u=(b=c==null?void 0:c.closest)==null?void 0:b.call(c,".generic-marker-item"),h=u&&{id:u.dataset.markerUiId,kind:c.dataset.kind,action:c.dataset.action},p=i.firstElementChild;for(let m of o){let v=m.dataset.markerUiId,S=(g=d.get(v))!=null?g:m;if(d.delete(v),S!==m){S.querySelector(".generic-marker-title").textContent=m.querySelector(".generic-marker-title").textContent;for(let E of S.querySelectorAll(".generic-marker-actions button")){let z=m.querySelector(`[data-action="${E.dataset.action}"]`);E.dataset.markerIndex=z.dataset.markerIndex,E.disabled=z.disabled}let M=S.querySelector(".generic-marker-body"),$=E=>{var z;return(z=E.querySelector("[data-kind]"))==null?void 0:z.dataset.kind},T=new Map(Array.from(M.children,E=>[$(E),E])),B=M.firstElementChild;for(let E of Array.from(m.querySelector(".generic-marker-body").children)){let z=$(E),C=(_=T.get(z))!=null?_:E,O=C.querySelector("[data-kind]"),A=E.querySelector("[data-kind]"),I=(O==null?void 0:O.tagName)===(A==null?void 0:A.tagName)?C:E;T.delete(z),I!==B&&M.insertBefore(I,B),I!==C&&C.remove(),B=I.nextElementSibling}for(let E of T.values())E.remove()}let w=s.indexOf(v);for(let M of S.querySelectorAll("[data-marker-index]"))M.dataset.markerIndex=String(w);let k=this._expandedGenericMarkerUiIds.has(v);S.setAttribute("data-expanded",String(k)),S.querySelector(".generic-marker-toggle").setAttribute("aria-expanded",String(k)),S.querySelector(".generic-marker-body").style.display=k?"grid":"none",S!==p&&i.insertBefore(S,p),p=S.nextElementSibling}for(let m of d.values())m.remove();if(h&&c!==t.activeElement){let m=i.querySelector(`[data-marker-ui-id="${h.id}"]`),v=h.kind?m==null?void 0:m.querySelector(`[data-kind="${h.kind}"]`):h.action?m==null?void 0:m.querySelector(`[data-action="${h.action}"]`):null;(y=v==null?void 0:v.focus)==null||y.call(v,{preventScroll:!0})}return!0}syncControls(e,t=!1,r={type:"card"}){let i=this.ui.root(),a=`${r.type}-${r.type==="entity"?r.index:"card"}-generic-`;if(!i)return;let s=this._getGenericMarkers(r),l=this._getGenericMarkerUiIds(r,s.length);s.forEach((o,d)=>{var p,f,b,g,_,y,m,v,S,w,k,M;let c=this._getGenericMarkerSource(o),u=(p=o==null?void 0:o.label)!=null?p:{},h={"source-mode":c.mode,fixed:(f=c.fixed)!=null?f:"",fallback:(b=c.fixed)!=null?b:"",percent:(g=c.percent)!=null?g:"",lane:(_=o==null?void 0:o.lane)!=null?_:"below",shape:(y=o==null?void 0:o.shape)!=null?y:"circle",direction:ye(o==null?void 0:o.direction),color:we(o==null?void 0:o.color,"#888888"),"color-text-fallback":(m=o==null?void 0:o.color)!=null?m:"#888888","label-text":(v=u.text)!=null?v:"","label-precision":(w=(S=u.precision)!=null?S:u.decimal)!=null?w:""};for(let[$,T]of Object.entries(h)){let B=i.querySelector(`#${a}${l[d]}-${$}`);B&&(B!==i.activeElement||t)&&(B.value=String(T))}for(let[$,T]of[["show-marker",(o==null?void 0:o.show_marker)!==!1],["label-show",u.show===!0],["label-show-value",u.show_value!==!1],["label-show-unit",u.show_unit!==!1]]){let B=i.querySelector(`#${a}${l[d]}-${$}`);B&&(B.checked=T)}for(let[$,T,B]of[["entity",(k=c.entity)!=null?k:"","Reference marker entity"],["label-entity",(M=u.entity)!=null?M:"","Label content entity"]])for(let E of["input","ha-entity-picker"])for(let z of Array.from(i.querySelectorAll(`${E}[data-kind="generic-marker-${$}"]`)).filter(C=>Number(C.dataset.markerIndex)===d&&C.dataset.scopeType===r.type&&String(C.dataset.index)===String(r.type==="entity"?r.index:"card")))z.id=`${a}${l[d]}-${$}`,z.setAttribute("aria-label",B),(z!==i.activeElement||t)&&(z.value=T),E==="ha-entity-picker"&&(z.hass=e,z.label=B,z.allowCustomEntity=!0);this._refreshGenericMarkerSummary(r,d)})}}});var Ci,Kn=U(()=>{xe();lr();re();ve();Sa();xa();wa();$a();Fa();Ri();Ba();Ga();Na();Aa();La();ja();Di();kr();Ci=class extends HTMLElement{get _gradientStopValidationMessages(){return this._gradientStopsSection._gradientStopValidationMessages}get _gradientStopPosTexts(){return this._gradientStopsSection._gradientStopPosTexts}get _gradientStopsUiRows(){return this._gradientStopsSection._gradientStopsUiRows}get _gradientStopsDrafts(){return this._gradientStopsSection._gradientStopsDrafts}get _segmentBoundaryTexts(){return this._segmentsSection._segmentBoundaryTexts}get _segmentUiRows(){return this._segmentsSection._segmentUiRows}get _segmentDrafts(){return this._segmentsSection._segmentDrafts}get _baselineColorDrafts(){return this._baselineSection._baselineColorDrafts}get _targetAboveFillDrafts(){return this._targetSection._targetAboveFillDrafts}get _genericMarkerUiIds(){return this._referenceMarkersSection._genericMarkerUiIds}get _expandedGenericMarkerUiIds(){return this._referenceMarkersSection._expandedGenericMarkerUiIds}get _nextGenericMarkerUiId(){return this._referenceMarkersSection._nextGenericMarkerUiId}set _nextGenericMarkerUiId(e){this._referenceMarkersSection._nextGenericMarkerUiId=e}constructor(){super(),this.attachShadow({mode:"open"}),this._segmentsSection=new pt(this._createSectionContext(),this._paletteUi(),{write:(e,t,r)=>this._setScopedSegments(e,t,r)}),this._gradientStopsSection=new mt(this._createSectionContext(),this._paletteUi(),{write:(e,t,r)=>this._setScopedGradientStops(e,t,r)}),this._needleSection=new bt(this._createSectionContext()),this._baselineSection=new _t(this._createSectionContext()),this._targetSection=new St(this._createSectionContext()),this._extremaSection=new xt(this._createSectionContext()),this._referenceMarkersSection=new wt(this._createSectionContext(),{...this._paletteUi(),render:(e={type:"card"})=>{let t;this._isRendering=!0;try{t=this._referenceMarkersSection.syncStructure(e)}finally{this._isRendering=!1}if(!t){this._render();return}this._referenceMarkersSection.syncControls(this._hass,!1,e),this._syncEntityPickers(),this._numericDrafts.apply(this.shadowRoot)}}),this._config={},this._numericDrafts=new ct,this._draftConfig={},this._hass=null,this._isRendering=!1,this._renderScheduled=!1,this._lastRenderedConfigJson=null,this._lastEmittedConfigJson=null,this._shadowListenersAttached=!1,this._expandedEntityOverrides=new Set,this._expandedOverrideGroups=new Set,this._expandedCardGroups=new Set,this._targetSection.reset(),this._baselineSection.reset(),this._pendingFocusSelector=null,this._boundHandleClick=e=>this._handleClick(e),this._boundHandleChange=e=>this._handleChange(e),this._boundHandleInput=e=>this._handleInput(e),this._boundHandleValueChanged=e=>this._handleValueChanged(e),this._boundHandleKeydown=e=>this._handleKeydown(e)}setConfig(e){var l;let t=this._cloneDeep(e!=null?e:{}),r=this._serializeConfig(t),i=this._serializeConfig(this._config),a=this._serializeConfig(this._draftConfig);if(r===i)return;if(r===a){this._config=t;return}if(r===this._lastEmittedConfigJson){this._config=t;return}if(this._getEmittedConfigJson(t)===this._getEmittedConfigJson(this._draftConfig)){this._config=t;return}let s=!((l=this.shadowRoot)!=null&&l.innerHTML)||r!==this._lastRenderedConfigJson;this._lastEmittedConfigJson=null,this._config=t,this._draftConfig=this._cloneDeep(t),this._segmentsSection.reset(),this._gradientStopsSection.reset(),this._targetSection.reset(),this._baselineSection.reset(),this._referenceMarkersSection.reset(),this._numericDrafts.reset(),s&&this._render()}set hass(e){var t;if(this._hass=e,!((t=this.shadowRoot)!=null&&t.innerHTML)){this._render();return}this._syncEntityPickers()}_cloneContainer(e){return _r(e)}_cloneDeep(e){return D(e)}_serializeConfig(e){return ge(e)}_getEmittedConfigJson(e){return this._serializeConfig(e)}_isObject(e){return V(e)}_setPathValue(e,t,r){return P(e,t,r)}_deletePathValue(e,t){return x(e,t)}_getPathValue(e,t){return q(e,t)}_hasPath(e,t){return In(e,t)}_normalizeTextValue(e){return N(e)}_normalizeOptionalEnabled(e){return Ln(e)}_normalizeNumberValue(e){return ne(e)}_normalizeDecimalValue(e){return Te(e)}_preferStructuredPath(e,t=null){return this._hasPath(this._draftConfig,e.slice(0,-1))||this._hasPath(this._draftConfig,e)?e:t&&this._hasPath(this._draftConfig,t)?t:e}_getEntitiesValue(){var e,t;return Array.isArray(this._draftConfig.entities)?this._draftConfig.entities.map(r=>{var i,a,s;return typeof r=="string"?{entity:r}:{entity:(i=r==null?void 0:r.entity)!=null?i:"",name:(a=r==null?void 0:r.name)!=null?a:"",icon:(s=r==null?void 0:r.icon)!=null?s:""}}):this._draftConfig.entity?[{entity:this._draftConfig.entity,name:(e=this._draftConfig.name)!=null?e:"",icon:(t=this._draftConfig.icon)!=null?t:""}]:[]}_getRawEntityRows(){return Array.isArray(this._draftConfig.entities)?this._cloneDeep(this._draftConfig.entities):this._draftConfig.entity!==void 0?this._draftConfig.name!==void 0||this._draftConfig.icon!==void 0?[{entity:this._draftConfig.entity,...this._draftConfig.name!==void 0?{name:this._draftConfig.name}:{},...this._draftConfig.icon!==void 0?{icon:this._draftConfig.icon}:{}}]:[this._draftConfig.entity]:[]}_buildEntityConfigEntries(e){let t=!Array.isArray(this._draftConfig.entities)&&this._draftConfig.entity!==void 0,r=Array.isArray(this._draftConfig.entities)?this._draftConfig.entities:this._draftConfig.entity!==void 0?[{entity:this._draftConfig.entity,...this._draftConfig.name!==void 0?{name:this._draftConfig.name}:{},...this._draftConfig.icon!==void 0?{icon:this._draftConfig.icon}:{}}]:[],i=e.map((a,s)=>{let l=r[s];if(this._isObject(l)){let u={...l,entity:a.entity},h=this._normalizeTextValue(a.name).trim();h?u.name=h:delete u.name;let p=a==null?void 0:a.icon,f=typeof p=="string"?p.trim():p;return f===!1?u.icon=!1:typeof f=="string"&&f?u.icon=f:l.icon===!1?u.icon=!1:delete u.icon,u}let o={entity:a.entity},d=this._normalizeTextValue(a.name).trim();d&&(o.name=d);let c=typeof(a==null?void 0:a.icon)=="string"?a.icon.trim():a==null?void 0:a.icon;return c===!1?o.icon=!1:typeof c=="string"&&c&&(o.icon=c),o});return t?i:i.map(a=>this._isObject(a)&&Object.keys(a).length===1&&a.entity!==void 0?a.entity:a)}_updateConfig(e){this._draftConfig=this._cloneDeep(e)}_emitConfigChanged(){let e=this._cleanupEditorEmittedConfig(this._cloneDeep(this._draftConfig)),t=this._serializeConfig(e);return t===this._lastEmittedConfigJson?!1:(this._lastEmittedConfigJson=t,this.dispatchEvent(new CustomEvent("config-changed",{detail:{config:e},bubbles:!0,composed:!0})),!0)}_scheduleRender(){this._renderScheduled||this._isRendering||(this._renderScheduled=!0,setTimeout(()=>{this._renderScheduled=!1,this._render()},0))}_applyUserConfig(e,t={}){let{rerender:r=!1}=t,i=this._serializeConfig(e),a=this._serializeConfig(this._draftConfig);return i===a?!1:(this._updateConfig(e),this._emitConfigChanged(),this._refreshDerivedEditorUi(),r&&this._scheduleRender(),!0)}_getShadowElementById(e){var t,r,i,a,s,l;return this.shadowRoot&&(l=(s=(r=(t=this.shadowRoot).getElementById)==null?void 0:r.call(t,e))!=null?s:(a=(i=this.shadowRoot).querySelector)==null?void 0:a.call(i,`#${e}`))!=null?l:null}_setElementChecked(e,t){let r=this._getShadowElementById(e);r&&(r.checked=!!t)}_setElementText(e,t){let r=this._getShadowElementById(e);r&&(r.textContent=t)}_refreshDerivedEditorUi(){this.shadowRoot&&(this._refreshCardDerivedUi(),this._refreshEntityDerivedUi())}_refreshCardDerivedUi(){this._setElementText("card-group-marker-target-summary",this._getCardTargetMarkerSummary()),this._setElementText("card-group-marker-peak-summary",this._getMarkerResetSummary("peak")),this._setElementText("card-group-marker-floor-summary",this._getMarkerResetSummary("floor")),this._setElementText("card-group-baseline-summary",this._getCardBaselineSummary()),this._setElementText("card-group-generic-markers-summary",this._getGenericMarkersSummary({type:"card"})),this._setElementText("card-group-segments-summary",this._getSegmentsSummary({type:"card"})),this._setElementText("card-group-gradient-stops-summary",this._getGradientStopsSummary({type:"card"})),this._setElementChecked("target-above-fill-enabled",this._isTargetAboveFillEnabled({type:"card"})),this._setElementChecked("baseline-above-color-enabled",this._isBaselineDirectionalColorEnabled({type:"card"},"above")),this._setElementChecked("baseline-below-color-enabled",this._isBaselineDirectionalColorEnabled({type:"card"},"below")),this._refreshSegmentUi({type:"card"})}_refreshEntityDerivedUi(){let e=this._getEntitiesValue().length;for(let t=0;t{var r,i;let t=(i=(r=this.shadowRoot)==null?void 0:r.querySelector)==null?void 0:i.call(r,e);if(!(!t||typeof t.focus!="function"))try{t.focus({preventScroll:!0})}catch(a){t.focus()}},0)}_setValueAtPath(e,t,r={}){let i=t===void 0?this._deletePathValue(this._draftConfig,e):this._setPathValue(this._draftConfig,e,t);return this._applyUserConfig(i,r)}_setTitle(e){this._setValueAtPath(["title"],e)}_setEntityField(e,t,r){let i=this._normalizeTextValue(r);if(!Array.isArray(this._draftConfig.entities)&&this._draftConfig.entity!==void 0&&e===0)return i.trim()?this._setValueAtPath([t],i.trim()):this._setValueAtPath([t],void 0);let a=this._withEntityScopeConfig(s=>{var d;let l=s[e],o=this._isObject(l)?this._cloneDeep(l):{entity:(d=l==null?void 0:l.entity)!=null?d:""};return i.trim()?o[t]=i.trim():delete o[t],s[e]=o,s});return this._applyUserConfig(a)}_cleanupEntityIdentityForEmit(e){if(!this._isObject(e))return e;let t=this._cloneDeep(e),r=this._normalizeTextValue(t.name).trim();if(r?t.name=r:delete t.name,t.icon===!1)return t;let i=this._normalizeTextValue(t.icon).trim();return i?t.icon=i:delete t.icon,t}_cleanupNeedleForEmit(e,t={type:"card"}){var l;if(!this._isObject(e)||!this._isObject(e.bar))return e;let r=this._cloneDeep(e),i=(l=r.bar)==null?void 0:l.needle;if(i===void 0)return r;let a=this._normalizeColorComparisonValue("#ffffff"),s=null;if(i===!0)s={show:!0};else if(i===!1)s=(t==null?void 0:t.type)==="entity"?{show:!1}:null;else if(this._isObject(i)){let o=this._normalizeTextValue(i.color).trim();i.show===!0?s={show:!0}:i.show===!1?s=(t==null?void 0:t.type)==="entity"?{show:!1}:null:(t==null?void 0:t.type)==="entity"&&o&&this._normalizeColorComparisonValue(o)!==a&&(s={}),s&&o&&this._normalizeColorComparisonValue(o)!==a&&(s.color=o)}else s=null;return s?r.bar.needle=s:(delete r.bar.needle,Object.keys(r.bar).length||delete r.bar),r}_cleanupResolvableValueForEmit(e){if(this._isObject(e)||e===null||typeof e=="string"&&this._normalizeNumberValue(e)===null)return this._cloneDeep(e);let t=this._normalizeNumberValue(e);return t===null?null:{fixed:t}}_cleanupScaleForEmit(e){if(!this._isObject(e)||!this._isObject(e.scale))return e;let t=this._cloneDeep(e),r=this._cloneDeep(t.scale);return["min","max"].forEach(i=>{if(!Object.prototype.hasOwnProperty.call(r,i))return;let a=this._cleanupResolvableValueForEmit(r[i]);a||r[i]===null?(r[i]=a,delete t[i],delete t[`${i}_entity`]):delete r[i]}),Object.keys(r).length?t.scale=r:delete t.scale,t}_cleanupFormattingForEmit(e){if(!this._isObject(e)||!this._isObject(e.formatting))return e;let t=this._cloneDeep(e),r=this._cloneDeep(t.formatting),i=this._normalizeTextValue(r.unit).trim(),a=this._normalizeDecimalValue(r.decimal);return i?(r.unit=i,delete t.unit):delete r.unit,a!==null?(r.decimal=a,delete t.decimal):delete r.decimal,Object.keys(r).length?t.formatting=r:delete t.formatting,t}_cleanupLayoutForEmit(e){if(!this._isObject(e)||!this._isObject(e.layout))return e;let t=this._cloneDeep(e),r=this._cloneDeep(t.layout),i=this._isObject(r.label)?this._cloneDeep(r.label):null,a=this._isObject(r.hero)?this._cloneDeep(r.hero):null,s=this._normalizeNumberValue(r.height),l=this._normalizeNumberValue(i==null?void 0:i.width),o=this._normalizeHeroValueSizeValue(a==null?void 0:a.value_size),d=this._normalizeTextValue(i==null?void 0:i.position).trim();return s!==null&&s>=24?(r.height=s,delete t.height):delete r.height,i&&(d?(i.position=d,delete t.label_position):delete i.position,l!==null?(i.width=l,delete t.label_width):delete i.width,Object.keys(i).length?r.label=i:delete r.label),a&&(o!==null?a.value_size=o:delete a.value_size,Object.keys(a).length?r.hero=a:delete r.hero),Object.keys(r).length?t.layout=r:delete t.layout,t}_cleanupTargetForEmit(e,t={type:"card"}){var h;if(!this._isObject(e)||!this._isObject(e.target))return e;let r=this._cloneDeep(e),i=this._cloneDeep(r.target),a=this._cleanupResolvableValueForEmit(i.at),s=this._normalizeTextValue(i.color).trim(),l=this._cleanBuiltinMarkerLabelForEmit(i.label,t,"target"),o=this._normalizeTextValue((h=i.when_exceeded)==null?void 0:h.fill_color).trim(),c=Object.prototype.hasOwnProperty.call(i,"shape")?qe(i.shape):null,u=Object.prototype.hasOwnProperty.call(i,"direction")?ye(i.direction):null;return typeof i.enabled!="boolean"&&delete i.enabled,a||i.at===null?(i.at=a,delete r.target_entity):delete i.at,s&&this._normalizeColorComparisonValue(s)!==this._normalizeColorComparisonValue("#888")?(i.color=s,delete r.target_color):delete i.color,Object.keys(l).length?(i.label=l,l.show===!0&&delete r.show_target_label):(delete i.label,delete r.show_target_label),o?(i.when_exceeded={...this._isObject(i.when_exceeded)?i.when_exceeded:{},fill_color:o},delete r.above_target_color):delete i.when_exceeded,(t==null?void 0:t.type)==="card"&&c==="diamond"?delete i.shape:c?i.shape=c:delete i.shape,u==="inward"&&((t==null?void 0:t.type)!=="entity"||u===this._getEffectiveMarkerDirection({type:"card"},"target"))?delete i.direction:u&&(i.direction=u),Object.keys(i).length?r.target=i:delete r.target,r}_cleanupBaselineForEmit(e){if(!this._isObject(e)||!this._isObject(e.baseline))return e;let t=this._cloneDeep(e),r=this._cloneDeep(t.baseline),i=this._cleanupResolvableValueForEmit(r.at);return typeof r.enabled!="boolean"&&delete r.enabled,i||r.at===null?r.at=i:delete r.at,["above","below"].forEach(a=>{if(!this._isObject(r[a])){delete r[a];return}let s=this._normalizeTextValue(r[a].color).trim();s?r[a]={...r[a],color:s}:delete r[a]}),Object.keys(r).length?t.baseline=r:delete t.baseline,t}_cleanupPeakForEmit(e,t={type:"card"}){if(!this._isObject(e)||!this._isObject(e.peak))return e;let r=this._cloneDeep(e),i=this._cloneDeep(r.peak),a=this._normalizeTextValue(i.color).trim(),s=Object.prototype.hasOwnProperty.call(i,"direction")?ye(i.direction):null;return typeof i.enabled!="boolean"&&delete i.enabled,(t==null?void 0:t.type)!=="entity"&&i.reset==="never"&&delete i.reset,s==="inward"&&((t==null?void 0:t.type)!=="entity"||s===this._getEffectiveMarkerDirection({type:"card"},"peak"))?delete i.direction:s&&(i.direction=s),a&&this._normalizeColorComparisonValue(a)!==this._normalizeColorComparisonValue("#888")?(i.color=a,delete r.peak_color):delete i.color,i.label=this._cleanBuiltinMarkerLabelForEmit(i.label,t,"peak"),Object.keys(i.label).length||delete i.label,Object.keys(i).length?r.peak=i:delete r.peak,r}_cleanupFloorForEmit(e,t={type:"card"}){if(!this._isObject(e)||!this._isObject(e.floor))return e;let r=this._cloneDeep(e),i=this._cloneDeep(r.floor),a=this._normalizeTextValue(i.color).trim(),s=Object.prototype.hasOwnProperty.call(i,"direction")?ye(i.direction):null;return typeof i.enabled!="boolean"&&delete i.enabled,a&&this._normalizeColorComparisonValue(a)!==this._normalizeColorComparisonValue("#888888")?i.color=a:delete i.color,this._isObject(i.label)&&(i.label=this._cleanBuiltinMarkerLabelForEmit(i.label,t,"floor"),Object.keys(i.label).length||delete i.label),((t==null?void 0:t.type)!=="entity"&&i.reset==="never"||i.reset===void 0||i.reset===null||i.reset==="")&&delete i.reset,s==="inward"&&((t==null?void 0:t.type)!=="entity"||s===this._getEffectiveMarkerDirection({type:"card"},"floor"))?delete i.direction:s&&(i.direction=s),Object.keys(i).length?r.floor=i:delete r.floor,r}_cleanBuiltinMarkerLabelForEmit(e,t,r){var l,o,d;let i=this._isObject(e)?this._cloneDeep(e):{},a=(t==null?void 0:t.type)==="entity"?(l=this._getScopedValue({type:"card"},[r,"label"]))!=null?l:{}:{};i.show===!1&&(t==null?void 0:t.type)!=="entity"&&delete i.show,i.show===!1&&(t==null?void 0:t.type)==="entity"&&a.show!==!0&&delete i.show,i.show_value===!0&&((t==null?void 0:t.type)!=="entity"||a.show_value!==!1)&&delete i.show_value,i.show_unit===!0&&((t==null?void 0:t.type)!=="entity"||a.show_unit!==!1)&&delete i.show_unit,typeof i.text=="string"&&(i.text=i.text.replace(/\s+/g," ").trim(),!i.text&&(t==null?void 0:t.type)!=="entity"&&delete i.text);let s=this._normalizeDecimalValue((o=i.precision)!=null?o:i.decimal);return delete i.decimal,s===null||(t==null?void 0:t.type)==="entity"&&s===((d=a.precision)!=null?d:a.decimal)?delete i.precision:i.precision=s,i}_cleanupBarForEmit(e,t={type:"card"},r=null,i=null){if(!this._isObject(e)||!this._isObject(e.bar))return e;let a=this._cloneDeep(e),s=this._cloneDeep(a.bar),o=["percent","scale"].includes(s.segment_space)?s.segment_space:(t==null?void 0:t.type)==="entity"&&["percent","scale"].includes(i)?i:null;if(o==="percent"&&Array.isArray(s.segments)){let p=f=>typeof f=="number"&&Number.isFinite(f)?`${f}%`:typeof f=="string"&&f.trim()!==""&&!f.includes("%")&&Number.isFinite(Number(f.trim()))?`${Number(f.trim())}%`:f;s.segments=s.segments.map(f=>({...f,from:p(f==null?void 0:f.from),...Object.prototype.hasOwnProperty.call(f!=null?f:{},"to")?{to:p(f.to)}:{}}))}delete s.segment_space;let d=this._normalizeTextValue(s.fill_style).trim(),c=this._normalizeTextValue(s.color).trim(),u=Array.isArray(s.segments)?s.segments:null,h=Array.isArray(s.gradient_stops)?s.gradient_stops:null;if(d){let p=this._cloneDeep(a);delete p.bar.fill_style;let f=Fe(p,(t==null?void 0:t.type)==="entity"?r:null,{isCardScope:(t==null?void 0:t.type)!=="entity"}).fill_style;d==="bands"&&f==="bands"?delete s.fill_style:s.fill_style=d,delete a.color_mode}else delete s.fill_style;return c&&this._normalizeColorComparisonValue(c)!==this._normalizeColorComparisonValue("#4a9eff")?(s.color=c,delete a.color):delete s.color,s.solid_fill===!0?s.solid_fill=!0:delete s.solid_fill,u&&(!u.length||o||!this._segmentsEqualForEditor(u,this._getDefaultSegments()))?(s.segments=u,delete a.segments,delete a.severity):delete s.segments,h&&(!h.length||h.length>=2&&!this._isDefaultGradientStops(h))?(s.gradient_stops=this._sanitizeGradientStopsForEmit(h),delete a.gradient_stops):delete s.gradient_stops,Object.keys(s).length?a.bar=s:delete a.bar,a}_getEditorKnownKeyOrder(e=[]){switch(e.join(".")){case"":return["type","title","entities","scale","target","baseline","peak","floor","layout","formatting","bar"];case"entities.*":return["entity","name","icon","scale","target","baseline","peak","floor","layout","formatting","bar"];case"scale":return["min","max"];case"scale.min":case"scale.max":case"target.at":case"baseline.at":return["fixed","entity"];case"target":return["enabled","at","shape","color","label","when_exceeded"];case"target.label":return["show","decimal"];case"target.when_exceeded":return["fill_color"];case"baseline":return["enabled","at","above","below"];case"baseline.above":case"baseline.below":return["color"];case"peak":return["enabled","color","reset","label"];case"floor":return["enabled","color","reset","label"];case"peak.label":case"floor.label":return["show","decimal"];case"layout":return["height","label","hero"];case"layout.label":return["position","hero_size","width"];case"layout.hero":return["size","value_size"];case"formatting":return["unit","decimal"];case"bar":return["fill_style","color","solid_fill","needle","segments","gradient_stops"];case"bar.needle":return["show","color"];default:return null}}_orderEditorConfigKeys(e,t=[]){var s;if(Array.isArray(e)){let l=t[0]==="entities"?["entities","*"]:t;return e.map(o=>this._orderEditorConfigKeys(o,l))}if(!this._isObject(e))return e;let r={},i=(s=this._getEditorKnownKeyOrder(t))!=null?s:[],a=new Set;return i.forEach(l=>{Object.prototype.hasOwnProperty.call(e,l)&&(r[l]=this._orderEditorConfigKeys(e[l],[...t,l]),a.add(l))}),Object.keys(e).forEach(l=>{a.has(l)||(r[l]=this._orderEditorConfigKeys(e[l],[...t,l]))}),r}_cleanupEditorEmittedConfig(e){var a;if(!this._isObject(e))return e;let t=(a=e.bar)==null?void 0:a.segment_space,r=this._cleanupEntityIdentityForEmit(e);r=this._cleanupScaleForEmit(r),r=this._cleanupTargetForEmit(r,{type:"card"}),r=this._cleanupBaselineForEmit(r),r=this._cleanupPeakForEmit(r,{type:"card"}),r=this._cleanupFloorForEmit(r,{type:"card"}),r=this._cleanupGenericMarkersForEmit(r),r=this._cleanupLayoutForEmit(r),r=this._cleanupFormattingForEmit(r),r=this._cleanupNeedleForEmit(r,{type:"card"}),r=this._cleanupBarForEmit(r,{type:"card"}),Array.isArray(r.entities)&&(r.entities=r.entities.map((s,l)=>{if(!this._isObject(s))return s;let o=this._cleanupEntityIdentityForEmit(s);return o=this._cleanupScaleForEmit(o),o=this._cleanupTargetForEmit(o,{type:"entity",index:l}),o=this._cleanupBaselineForEmit(o),o=this._cleanupPeakForEmit(o,{type:"entity",index:l}),o=this._cleanupFloorForEmit(o,{type:"entity",index:l}),o=this._cleanupGenericMarkersForEmit(o),o=this._cleanupLayoutForEmit(o),o=this._cleanupFormattingForEmit(o),o=this._cleanupNeedleForEmit(o,{type:"entity"}),o=this._cleanupBarForEmit(o,{type:"entity",index:l},r,t),o}));let i=s=>{let l=Qe({...s,...!s.entities&&!s.entity?{entities:[]}:{}}),o=["layout","scale","bar","baseline","formatting","target_marker","peak_marker","floor_marker","generic_markers"],d=u=>({...Object.fromEntries(o.map(h=>[h,u[h]])),scale:Object.fromEntries(["min","max"].map(h=>[h,{...u.scale[h],fixed_explicit:u.scale[h].fixed_explicit!==!1}]))}),c=(u,h="")=>Array.isArray(u)?u.map(p=>c(p)):this._isObject(u)?Object.fromEntries(Object.entries(u).filter(([p])=>!["severity","segment_space","label_precision_key"].includes(p)&&!/invalid/i.test(p)).map(([p,f])=>[p,c(f,p)])):h==="fixed"?ze(null,u):/color/i.test(h)&&typeof u=="string"?this._normalizeColorComparisonValue(u):u;return this._serializeConfig(c({card:d(l),entities:l.entities.map(u=>({entity:u.entity,name:u.name,icon:u.icon,...d(u)}))}))};try{i(e)!==i(r)&&(r=this._cloneDeep(e))}catch(s){r=this._cloneDeep(e)}return this._orderEditorConfigKeys(r)}_getScopedPath(e,t){return jn(e,t)}_normalizePath(e){return pi(e)}_getEntityRawEntries(){return Array.isArray(this._draftConfig.entities)?this._draftConfig.entities.map(e=>this._isObject(e)?this._cloneDeep(e):{entity:e}):this._draftConfig.entity!==void 0?[{entity:this._draftConfig.entity,...this._draftConfig.name!==void 0?{name:this._draftConfig.name}:{},...this._draftConfig.icon!==void 0?{icon:this._draftConfig.icon}:{}}]:[]}_withEntityScopeConfig(e){let t=this._getEntityRawEntries(),r=e(t.map(a=>this._cloneDeep(a))),i=this._setPathValue(this._draftConfig,["entities"],r);return!Array.isArray(this._draftConfig.entities)&&this._draftConfig.entity!==void 0&&(i=this._deletePathValue(i,["entity"]),this._draftConfig.name!==void 0&&(i=this._deletePathValue(i,["name"])),this._draftConfig.icon!==void 0&&(i=this._deletePathValue(i,["icon"]))),i}_setEntityRowsRaw(e,t={}){var s;let r=this._cloneDeep(e);if(Array.isArray(this._draftConfig.entities)||this._draftConfig.entity===void 0||r.length!==1){let l=this._setPathValue(this._draftConfig,["entities"],r);return!Array.isArray(this._draftConfig.entities)&&this._draftConfig.entity!==void 0&&(l=this._deletePathValue(l,["entity"]),l=this._deletePathValue(l,["name"]),l=this._deletePathValue(l,["icon"])),this._applyUserConfig(l,t)}let[i]=r;if(typeof i=="string"){let l=this._setPathValue(this._draftConfig,["entity"],i);return l=this._deletePathValue(l,["name"]),l=this._deletePathValue(l,["icon"]),this._applyUserConfig(l,t)}let a=this._setPathValue(this._draftConfig,["entity"],(s=i==null?void 0:i.entity)!=null?s:"");return i&&Object.prototype.hasOwnProperty.call(i,"name")?a=this._setPathValue(a,["name"],i.name):a=this._deletePathValue(a,["name"]),i&&Object.prototype.hasOwnProperty.call(i,"icon")?a=this._setPathValue(a,["icon"],i.icon):a=this._deletePathValue(a,["icon"]),this._applyUserConfig(a,t)}_moveEntityRow(e,t){let r=this._getRawEntityRows(),i=e+t;if(e<0||e>=r.length||i<0||i>=r.length)return!1;let a=this._cloneDeep(r);return[a[e],a[i]]=[a[i],a[e]],this._setEntityRowsRaw(a,{rerender:!0})}_duplicateEntityRow(e){let t=this._getRawEntityRows();if(e<0||e>=t.length)return!1;let r=this._cloneDeep(t[e]),i=typeof r=="string"?{entity:r}:this._cloneDeep(r);this._isObject(i)&&typeof i.name=="string"&&i.name.trim()&&(i.name=`${i.name.trim()} copy`);let a=this._cloneDeep(t);return a.splice(e+1,0,i),this._setEntityRowsRaw(a,{rerender:!0})}_removeEntityRow(e){let t=this._getRawEntityRows();if(t.length<=1||e<0||e>=t.length)return!1;let r=t.filter((i,a)=>a!==e);return this._setEntityRowsRaw(r,{rerender:!0})}_getScopedValue(e,t){if((e==null?void 0:e.type)==="entity"){let r=this._getEntityRawEntries()[e.index];return this._getPathValue(r,this._normalizePath(t))}return this._getPathValue(this._draftConfig,this._getScopedPath(e,t))}_removeScopedValue(e,t,r={}){if((e==null?void 0:e.type)==="entity"){let i=this._withEntityScopeConfig(a=>{var l,o;let s=this._isObject(a[e.index])?{...a[e.index]}:{entity:(o=(l=a[e.index])==null?void 0:l.entity)!=null?o:""};return a[e.index]=this._deletePathValue(s,this._normalizePath(t)),a});return this._applyUserConfig(i,r)}return this._setValueAtPath(this._getScopedPath(e,t),void 0,r)}_applyScopedMutation(e,t,r={}){if((e==null?void 0:e.type)==="entity"){let a=this._withEntityScopeConfig(s=>{var d;let l=s[e.index],o=this._isObject(l)?this._cloneDeep(l):{entity:(d=l==null?void 0:l.entity)!=null?d:""};return s[e.index]=t(o),s});return this._applyUserConfig(a,r)}let i=t(this._cloneDeep(this._draftConfig));return this._applyUserConfig(i,r)}_setScopedValue(e,t,r,i={}){return this._applyScopedMutation(e,a=>this._setPathValue(a,this._normalizePath(t),r),i)}_removePathsFromTarget(e,t=[]){return Pe(e,t)}_pruneEmptyObjectsInTarget(e,t){return G(e,t)}_setCanonicalScopedValue(e,t,r,i={}){let{deprecatedKeys:a=[],prunePaths:s=[]}=i;return this._applyScopedMutation(e,l=>{let o=this._setPathValue(l,this._normalizePath(t),r);return o=this._removePathsFromTarget(o,a),[this._normalizePath(t).slice(0,-1),...s.map(c=>this._normalizePath(c))].forEach(c=>{c.length&&(o=this._pruneEmptyObjectsInTarget(o,c))}),o},i)}_removeCanonicalScopedValue(e,t,r={}){let{deprecatedKeys:i=[],prunePaths:a=[]}=r;return this._applyScopedMutation(e,s=>{let l=this._deletePathValue(s,this._normalizePath(t));return l=this._removePathsFromTarget(l,i),[this._normalizePath(t).slice(0,-1),...a.map(d=>this._normalizePath(d))].forEach(d=>{d.length&&(l=this._pruneEmptyObjectsInTarget(l,d))}),l},r)}_setScopedNumericOverride(e,t,r,i={}){let a=this._normalizeNumberValue(r);return r===""||r===null||r===void 0?this._removeScopedValue(e,t,i):a===null?!1:this._setScopedValue(e,t,a,i)}_setScopedTextOverride(e,t,r,i={}){let a=this._normalizeTextValue(r).trim();return a?this._setScopedValue(e,t,a,i):this._removeScopedValue(e,t,i)}_setCanonicalScopedNumericOverride(e,t,r,i={}){let a=this._normalizeNumberValue(r);return r===""||r===null||r===void 0||a===null?this._removeCanonicalScopedValue(e,t,i):this._setCanonicalScopedValue(e,t,a,i)}_setCanonicalScopedTextOverride(e,t,r,i={}){let a=this._normalizeTextValue(r).trim();return a?this._setCanonicalScopedValue(e,t,a,i):this._removeCanonicalScopedValue(e,t,i)}_getResolvablePartsFromTarget(e,t,r={}){var c,u,h,p,f,b;let i=(c=r.canonicalBasePath)!=null?c:["scale",t],a=(u=r.legacyFixedPath)!=null?u:[t],s=(h=r.legacyEntityPath)!=null?h:[`${t}_entity`],l=this._getPathValue(e,i),o=this._getPathValue(e,a),d=this._getPathValue(e,s);if(l!==void 0){let g=$e(l,(p=r.inheritedSource)!=null?p:null,null,{allowPercent:["target","baseline"].includes(i[0])});return{fixed:(f=g.fixed)!=null?f:"",entity:(b=g.entity)!=null?b:"",...Number.isFinite(g.percent)?{percent:g.percent}:{}}}return{fixed:!this._isObject(o)&&o!==void 0?o:"",entity:d!=null?d:""}}_getResolvableScopedValue(e,t,r={}){let i=(e==null?void 0:e.type)==="entity"?this._getEntityRawEntries()[e.index]:this._draftConfig;return this._getResolvablePartsFromTarget(i!=null?i:{},t,r)}_getEffectiveResolvableScopedValue(e,t,r={}){var l,o;let i=this._getResolvableScopedValue(e,t,r);if((e==null?void 0:e.type)!=="entity")return i;let a=this._getResolvableScopedValue({type:"card"},t,r),s=this._getEntityRawEntries()[e.index];return this._getPathValue(s,(l=r.canonicalBasePath)!=null?l:["scale",t])!==void 0?this._getResolvablePartsFromTarget(s,t,{...r,inheritedSource:{fixed:a.fixed===""?null:a.fixed,entity:a.entity||null,percent:(o=a.percent)!=null?o:null}}):{fixed:this._hasExplicitOverrideValue(i.fixed)?i.fixed:a.fixed,entity:this._hasExplicitOverrideValue(i.entity)?i.entity:a.entity}}_setCanonicalResolvablePart(e,t,r,i,a={}){var u,h,p,f;let s=(u=a.canonicalBasePath)!=null?u:["scale",t],l=(h=a.legacyFixedPath)!=null?h:[t],o=(p=a.legacyEntityPath)!=null?p:[`${t}_entity`],d=(f=a.prunePaths)!=null?f:[s,s.slice(0,-1)],c=r==="fixed"?this._normalizeNumberValue(i):this._normalizeTextValue(i).trim();return this._applyScopedMutation(e,b=>{let _={...this._getResolvablePartsFromTarget(b!=null?b:{},t,{canonicalBasePath:s,legacyFixedPath:l,legacyEntityPath:o})};r==="fixed"?i===""||i===null||i===void 0||c===null?delete _.fixed:_.fixed=c:c?_.entity=c:delete _.entity;let y=this._cloneDeep(b);y=this._deletePathValue(y,o);let m=this._getPathValue(y,l);this._isObject(m)||(y=this._deletePathValue(y,l)),y=this._deletePathValue(y,s);let v=_.fixed!==void 0&&_.fixed!==null&&_.fixed!=="",S=_.entity!==void 0&&_.entity!==null&&_.entity!=="",w=Number.isFinite(_.percent);if(v||S||w){let k={};v&&(k.fixed=_.fixed),S&&(k.entity=_.entity),w&&(k.percent=_.percent),y=this._setPathValue(y,s,k)}return d.forEach(k=>{k.length&&(y=this._pruneEmptyObjectsInTarget(y,k))}),y},a)}_clearCanonicalResolvableValue(e,t,r={}){var o,d,c,u;let i=(o=r.canonicalBasePath)!=null?o:["scale",t],a=(d=r.legacyFixedPath)!=null?d:[t],s=(c=r.legacyEntityPath)!=null?c:[`${t}_entity`],l=(u=r.prunePaths)!=null?u:[i,i.slice(0,-1)];return this._applyScopedMutation(e,h=>{let p=this._deletePathValue(h,i);p=this._deletePathValue(p,s);let f=this._getPathValue(p,a);return this._isObject(f)||(p=this._deletePathValue(p,a)),l.forEach(b=>{b.length&&(p=this._pruneEmptyObjectsInTarget(p,b))}),p},r)}_getScopedDisplayValue(e,t,r=[]){let i=[t,...r];for(let a of i){let s=this._getScopedValue(e,a);if(s!=null&&s!=="")return s}return""}_getEffectiveScopedDisplayValue(...e){return mi(this._createSectionContext(),...e)}_paletteUi(){return{root:()=>this.shadowRoot,render:()=>this._render(),focus:e=>this._queuePostRenderFocus(e)}}_applySectionMutation(e,t,r){var i;return((i=r==null?void 0:r.needleEdit)==null?void 0:i.field)!=="mode"||r.needleEdit.value==="disabled"||(e==null?void 0:e.type)==="entity"&&r.needleEdit.value==="inherit"?this._applyScopedMutation(e,t,r):this._applyScopedMutation(e,a=>{let s=t(a),l=this._getPathValue(s,["baseline","enabled"]),o=this._getResolvablePartsFromTarget(s!=null?s:{},"baseline",{canonicalBasePath:["baseline","at"],legacyFixedPath:["baseline"],legacyEntityPath:["baseline","at","entity"]});return(l===!0||l!==!1&&this._hasResolvableOverride(o))&&(s=this._deletePathValue(s,["baseline"])),s},r)}_createSectionContext(){return{read:(e,t)=>this._getScopedValue(e,t),mutate:(e,t,r)=>this._applySectionMutation(e,t,r),source:(e,t,r=!1)=>{if((t==null?void 0:t.type)==="reference-marker")return kt(t.marker);let i=["baseline","target"].includes(t)?{canonicalBasePath:[t,"at"],legacyFixedPath:[t],legacyEntityPath:t==="target"?["target_entity"]:["baseline","at","entity"]}:{};return r?this._getEffectiveResolvableScopedValue(e,t,i):this._getResolvableScopedValue(e,t,i)},setSource:(e,t,r,i)=>(t==null?void 0:t.type)==="reference-marker"?this._referenceMarkersSection._setGenericMarkerSourcePart(e,t.index,r,i):t==="baseline"?this._persistBaselineSourcePart(e,r,i):this._setCanonicalResolvablePart(e,t,r,i,t==="target"?{canonicalBasePath:["target","at"],legacyFixedPath:["target"],legacyEntityPath:["target_entity"],prunePaths:[["target","at"],["target"]]}:{})}}_renderScaleSection(e){return wi(this._createSectionContext(),e)}_renderFormattingSection(e){return Vi(this._createSectionContext(),e)}_getScopedFormattingValue(e,t){return De(this._createSectionContext(),e,t)}_getEffectiveScopedFormattingValue(e,t){return ki(this._createSectionContext(),e,t)}_setScopedFormattingUnit(e,t){return $i(this._createSectionContext(),e,t)}_setScopedFormattingDecimal(e,t){return Mi(this._createSectionContext(),e,t)}_clearFormattingOverride(e){return Ma(this._createSectionContext(),e)}_hasFormattingOverride(e){return Va(this._createSectionContext(),e)}_getScopedLayoutValue(e,t){var r,i,a,s,l,o,d,c,u;return t==="height"?(i=(r=this._getScopedValue(e,["layout","height"]))!=null?r:this._getScopedValue(e,["height"]))!=null?i:"":t==="position"?(s=(a=this._getScopedValue(e,["layout","label","position"]))!=null?a:this._getScopedValue(e,["label_position"]))!=null?s:"":t==="width"?(o=(l=this._getScopedValue(e,["layout","label","width"]))!=null?l:this._getScopedValue(e,["label_width"]))!=null?o:"":t==="hero_size"?(c=(d=this._getScopedValue(e,["layout","hero","size"]))!=null?d:this._getScopedValue(e,["layout","label","hero_size"]))!=null?c:"":t==="value_size"&&(u=this._getScopedValue(e,["layout","hero","value_size"]))!=null?u:""}_getEffectiveScopedLayoutValue(e,t){return t==="height"?this._getEffectiveScopedDisplayValue(e,["layout","height"],[["height"]]):t==="position"?this._getEffectiveScopedDisplayValue(e,["layout","label","position"],[["label_position"]]):t==="width"?this._getEffectiveScopedDisplayValue(e,["layout","label","width"],[["label_width"]]):t==="hero_size"?this._getEffectiveScopedDisplayValue(e,["layout","hero","size"],[["layout","label","hero_size"]]):t==="value_size"?this._getEffectiveScopedDisplayValue(e,["layout","hero","value_size"]):""}_setScopedLayoutLabelPosition(e,t){if(!t)return this._removeCanonicalScopedValue(e,["layout","label","position"],{deprecatedKeys:[["label_position"]],prunePaths:[["layout","label"],["layout"]],rerender:!0});let r=this._setCanonicalScopedValue(e,["layout","label","position"],t,{deprecatedKeys:[["label_position"]],prunePaths:[["layout","label"],["layout"]],rerender:!0});return!r||t==="hero"?r:(this._removeCanonicalScopedValue(e,["layout","label","hero_size"],{prunePaths:[["layout","label"],["layout"]],rerender:!0}),this._removeCanonicalScopedValue(e,["layout","hero"],{prunePaths:[["layout"]],rerender:!0}),!0)}_setLayoutLabelPosition(e){return this._setScopedLayoutLabelPosition({type:"card"},e)}_setScopedLayoutHeroSize(e,t){return t?this._setCanonicalScopedValue(e,["layout","hero","size"],t,{deprecatedKeys:[["layout","label","hero_size"]],prunePaths:[["layout","hero"],["layout"]]}):this._removeCanonicalScopedValue(e,["layout","hero","size"],{deprecatedKeys:[["layout","label","hero_size"]],prunePaths:[["layout","hero"],["layout"]]})}_setLayoutHeroSize(e){return this._setScopedLayoutHeroSize({type:"card"},e)}_normalizeHeroValueSizeValue(e){let t=this._normalizeNumberValue(e);return t===null?null:Math.min(112,Math.max(12,t))}_setScopedLayoutHeroValueSize(e,t){if(t===""||t===null||t===void 0)return this._removeCanonicalScopedValue(e,["layout","hero","value_size"],{prunePaths:[["layout","hero"],["layout"]]});let r=this._normalizeHeroValueSizeValue(t);return r===null?!1:this._setCanonicalScopedValue(e,["layout","hero","value_size"],r,{prunePaths:[["layout","hero"],["layout"]]})}_setLayoutHeroValueSize(e){return this._setScopedLayoutHeroValueSize({type:"card"},e)}_setScopedLayoutHeight(e,t){let r=this._normalizeNumberValue(t);return t===""||t===null||t===void 0?this._removeCanonicalScopedValue(e,["layout","height"],{deprecatedKeys:[["height"]],prunePaths:[["layout"]]}):r===null||r<24?!1:this._setCanonicalScopedValue(e,["layout","height"],r,{deprecatedKeys:[["height"]],prunePaths:[["layout"]]})}_setLayoutHeight(e){return this._setScopedLayoutHeight({type:"card"},e)}_setScopedLayoutLabelWidth(e,t){let r=this._normalizeNumberValue(t);return t===""||t===null||t===void 0?this._removeCanonicalScopedValue(e,["layout","label","width"],{deprecatedKeys:[["label_width"]],prunePaths:[["layout","label"],["layout"]]}):r===null?!1:this._setCanonicalScopedValue(e,["layout","label","width"],r,{deprecatedKeys:[["label_width"]],prunePaths:[["layout","label"],["layout"]]})}_clearLayoutOverride(e){return this._applyScopedMutation(e,t=>{let r=this._deletePathValue(t,["layout","height"]);return r=this._deletePathValue(r,["layout","label","position"]),r=this._deletePathValue(r,["layout","label","hero_size"]),r=this._deletePathValue(r,["layout","label","width"]),r=this._deletePathValue(r,["layout","hero"]),r=this._deletePathValue(r,["height"]),r=this._deletePathValue(r,["label_position"]),r=this._deletePathValue(r,["label_width"]),r=this._pruneEmptyObjectsInTarget(r,["layout","label"]),r=this._pruneEmptyObjectsInTarget(r,["layout"]),r},{rerender:!0})}_hasLayoutOverride(e){var i,a;let t=(i=this._getScopedValue(e,["layout"]))!=null?i:{},r=this._isObject(t)?(a=t.label)!=null?a:{}:{};return this._isObject(t)&&(Object.prototype.hasOwnProperty.call(t,"height")||this._isObject(r)&&(Object.prototype.hasOwnProperty.call(r,"position")||Object.prototype.hasOwnProperty.call(r,"hero_size")||Object.prototype.hasOwnProperty.call(r,"width")))||this._isObject(t)&&this._isObject(t.hero)&&Object.keys(t.hero).length?!0:this._getScopedValue(e,["height"])!==void 0||this._getScopedValue(e,["label_position"])!==void 0||this._getScopedValue(e,["label_width"])!==void 0}_setScaleBound(e,t){return vr(this._createSectionContext(),{type:"card"},e,"fixed",t)}_clearScaleOverride(e){return ka(this._createSectionContext(),e)}_setBarFillStyle(e){return this._setScopedBarFillStyle({type:"card"},e)}_setBarColor(e){return this._setScopedBarColor({type:"card"},e)}_setGradientStops(...e){return this._gradientStopsSection._setGradientStops(...e)}_setSegments(...e){return this._segmentsSection._setSegments(...e)}_getDefaultGradientStops(...e){return this._gradientStopsSection._getDefaultGradientStops(...e)}_normalizeGradientStopPosValue(...e){return this._gradientStopsSection._normalizeGradientStopPosValue(...e)}_sanitizeGradientStopsForEmit(...e){return this._gradientStopsSection._sanitizeGradientStopsForEmit(...e)}_getGradientStopDraftColorDefault(...e){return this._gradientStopsSection._getGradientStopDraftColorDefault(...e)}_getNextSuggestedGradientStopPos(...e){return this._gradientStopsSection._getNextSuggestedGradientStopPos(...e)}_getGradientStopsDraftKey(...e){return this._gradientStopsSection._getGradientStopsDraftKey(...e)}_getGradientStopPosTextKey(...e){return this._gradientStopsSection._getGradientStopPosTextKey(...e)}_getGradientStopPosText(...e){return this._gradientStopsSection._getGradientStopPosText(...e)}_setGradientStopPosText(...e){return this._gradientStopsSection._setGradientStopPosText(...e)}_clearGradientStopPosText(...e){return this._gradientStopsSection._clearGradientStopPosText(...e)}_clearGradientStopScopeTextState(...e){return this._gradientStopsSection._clearGradientStopScopeTextState(...e)}_getGradientStopsUiRows(...e){return this._gradientStopsSection._getGradientStopsUiRows(...e)}_setGradientStopsUiRows(...e){return this._gradientStopsSection._setGradientStopsUiRows(...e)}_getStoredScopedGradientStops(...e){return this._gradientStopsSection._getStoredScopedGradientStops(...e)}_getFallbackGradientStops(...e){return this._gradientStopsSection._getFallbackGradientStops(...e)}_createGradientStopDraftState(...e){return this._gradientStopsSection._createGradientStopDraftState(...e)}_getGradientStopsDraftState(...e){return this._gradientStopsSection._getGradientStopsDraftState(...e)}_setGradientStopsDraftState(...e){return this._gradientStopsSection._setGradientStopsDraftState(...e)}_setGradientStopsDraftField(...e){return this._gradientStopsSection._setGradientStopsDraftField(...e)}_getValidGradientDraftStop(...e){return this._gradientStopsSection._getValidGradientDraftStop(...e)}_hasGradientStopDuplicate(...e){return this._gradientStopsSection._hasGradientStopDuplicate(...e)}_canAddGradientStop(...e){return this._gradientStopsSection._canAddGradientStop(...e)}_getGradientDraftValidationMessage(...e){return this._gradientStopsSection._getGradientDraftValidationMessage(...e)}_isDefaultGradientStops(...e){return this._gradientStopsSection._isDefaultGradientStops(...e)}_setScopedGradientStops(e,t,r={}){var o;let i=this._sanitizeGradientStopsForEmit(t),a=i.length<2||this._isDefaultGradientStops(i),s=this._serializeConfig((o=this._getGradientStopsUiRows(e))!=null?o:[]);this._clearGradientStopScopeTextState(e),this._setGradientStopsUiRows(e,i);let l=this._applyScopedMutation(e,d=>{let c=this._deletePathValue(d,["gradient_stops"]);return c=this._deletePathValue(c,["bar","gradient_stops"]),a||(c=this._setPathValue(c,["bar","gradient_stops"],i)),c=this._pruneEmptyObjectsInTarget(c,["bar"]),c},r);return l===!1&&(r!=null&&r.rerender)&&this._serializeConfig(i)!==s&&this._render(),l!==!1&&!(r!=null&&r.rerender)&&this._refreshGradientDraftUi(e),l}_clearGradientStopsOverride(...e){return this._gradientStopsSection._clearGradientStopsOverride(...e)}_setScopedSegments(e,t,r={}){let i=(r==null?void 0:r.sort)===!1?this._cloneDeep(t):this._sortSegmentsForEditor(t),a=this._getFallbackSegments(e),s=!Array.isArray(i)||!i.length||a.length>0&&this._segmentsEqualForEditor(i,a);this._setSegmentsUiRows(e,i);let l=this._applyScopedMutation(e,o=>{let d=this._deletePathValue(o,["bar","segments"]);return d=this._deletePathValue(d,["segments"]),d=this._deletePathValue(d,["severity"]),s||(d=this._setPathValue(d,["bar","segments"],i)),d=this._pruneEmptyObjectsInTarget(d,["bar"]),d},r);return l!==!1&&this._refreshSegmentUi(e),l}_clearSegmentsOverride(...e){return this._segmentsSection._clearSegmentsOverride(...e)}_setNeedle(...e){return this._needleSection._setNeedle(...e)}_getScopedPeakConfig(...e){return this._extremaSection._getScopedPeakConfig(...e)}_getEffectiveScopedPeakConfig(...e){return this._extremaSection._getEffectiveScopedPeakConfig(...e)}_hasPeakOverride(...e){return this._extremaSection._hasPeakOverride(...e)}_getPeakSummary(...e){return this._extremaSection._getPeakSummary(...e)}_clearPeakOverride(...e){return this._extremaSection._clearPeakOverride(...e)}_setScopedPeakEnabled(...e){return this._extremaSection._setScopedPeakEnabled(...e)}_setScopedPeakColor(...e){return this._extremaSection._setScopedPeakColor(...e)}_getScopedMarkerExtras(...e){return this._extremaSection._getScopedMarkerExtras(...e)}_hasExtremumOverride(...e){return this._extremaSection._hasExtremumOverride(...e)}_getEffectiveMarkerExtras(...e){return this._extremaSection._getEffectiveMarkerExtras(...e)}_getScopedFloorConfig(...e){return this._extremaSection._getScopedFloorConfig(...e)}_getEffectiveScopedFloorConfig(...e){return this._extremaSection._getEffectiveScopedFloorConfig(...e)}_getFloorSummary(...e){return this._extremaSection._getFloorSummary(...e)}_getMarkerResetSummary(...e){return this._extremaSection._getMarkerResetSummary(...e)}_getCardTargetMarkerSummary(...e){return this._targetSection._getCardTargetMarkerSummary(...e)}_setScopedExtremumEnabled(...e){return this._extremaSection._setScopedExtremumEnabled(...e)}_setScopedExtremumColor(...e){return this._extremaSection._setScopedExtremumColor(...e)}_setScopedExtremumReset(...e){return this._extremaSection._setScopedExtremumReset(...e)}_setScopedExtremumLabelShow(...e){return this._extremaSection._setScopedExtremumLabelShow(...e)}_setScopedExtremumLabelDecimal(...e){return this._extremaSection._setScopedExtremumLabelDecimal(...e)}_getBuiltinMarkerLabelOptions(e,t){let r=t==="target"?this._getEffectiveTargetLabelShowValue(e):this._getEffectiveMarkerExtras(e,t).labelShow;return gt(this._createSectionContext(),e,t,r)}_renderBuiltinMarkerLabelControls(e,t,r){return ot(e,t,r,this._getBuiltinMarkerLabelOptions(e,t))}_setBuiltinMarkerLabelField(...e){return yt(this._createSectionContext(),...e)}_clearFloorOverride(...e){return this._extremaSection._clearFloorOverride(...e)}_setFixedMarkerValue(e,t,r){let i=this._normalizeNumberValue(r);return!t||i===null?this._removeCanonicalScopedValue({type:"card"},[e,"at","fixed"],{deprecatedKeys:e==="target"?[["target_entity"]]:[],prunePaths:[[e,"at"],[e]]}):this._setCanonicalScopedValue({type:"card"},[e,"at","fixed"],i,{deprecatedKeys:e==="target"?[["target_entity"]]:[],prunePaths:[[e,"at"],[e]]})}_setPeakShow(...e){return this._extremaSection._setPeakShow(...e)}_readFixedMarker(e){let t=this._draftConfig[e];if(this._isObject(t)){let r=this._isObject(t==null?void 0:t.at)?t.at.fixed:t==null?void 0:t.at;return{enabled:r!=null&&r!=="",value:r!=null?r:""}}return{enabled:t!=null&&t!=="",value:t!=null?t:""}}_getGradientStopsValue(...e){return this._gradientStopsSection._getGradientStopsValue(...e)}_getSegmentsValue(...e){return this._segmentsSection._getSegmentsValue(...e)}_getSegmentsScopeKey(...e){return this._segmentsSection._getSegmentsScopeKey(...e)}_getSegmentBoundaryTextKey(...e){return this._segmentsSection._getSegmentBoundaryTextKey(...e)}_getSegmentBoundaryText(...e){return this._segmentsSection._getSegmentBoundaryText(...e)}_setSegmentBoundaryText(...e){return this._segmentsSection._setSegmentBoundaryText(...e)}_clearSegmentBoundaryText(...e){return this._segmentsSection._clearSegmentBoundaryText(...e)}_clearSegmentScopeTextState(...e){return this._segmentsSection._clearSegmentScopeTextState(...e)}_getSegmentsUiRows(...e){return this._segmentsSection._getSegmentsUiRows(...e)}_setSegmentsUiRows(...e){return this._segmentsSection._setSegmentsUiRows(...e)}_getSegmentDraftState(...e){return this._segmentsSection._getSegmentDraftState(...e)}_setSegmentDraftState(...e){return this._segmentsSection._setSegmentDraftState(...e)}_setSegmentDraftField(...e){return this._segmentsSection._setSegmentDraftField(...e)}_isSegmentFillStyle(...e){return this._segmentsSection._isSegmentFillStyle(...e)}_getDefaultSegments(...e){return this._segmentsSection._getDefaultSegments(...e)}_getStoredScopedSegments(...e){return this._segmentsSection._getStoredScopedSegments(...e)}_parseSegmentBoundaryInput(...e){return this._segmentsSection._parseSegmentBoundaryInput(...e)}_formatSegmentBoundaryValue(...e){return this._segmentsSection._formatSegmentBoundaryValue(...e)}_getSegmentDraftColorDefault(...e){return this._segmentsSection._getSegmentDraftColorDefault(...e)}_getNewSegmentDefaults(...e){return this._segmentsSection._getNewSegmentDefaults(...e)}_createSegmentDraftState(...e){return this._segmentsSection._createSegmentDraftState(...e)}_normalizeSegmentForEditorComparison(...e){return this._segmentsSection._normalizeSegmentForEditorComparison(...e)}_segmentsEqualForEditor(...e){return this._segmentsSection._segmentsEqualForEditor(...e)}_getFallbackSegments(...e){return this._segmentsSection._getFallbackSegments(...e)}_parseSegmentBoundaryText(...e){return this._segmentsSection._parseSegmentBoundaryText(...e)}_compareSegmentBoundaries(...e){return this._segmentsSection._compareSegmentBoundaries(...e)}_buildSegmentValidationRows(...e){return this._segmentsSection._buildSegmentValidationRows(...e)}_getSegmentRowValidationMessage(...e){return this._segmentsSection._getSegmentRowValidationMessage(...e)}_getValidSegmentDraft(...e){return this._segmentsSection._getValidSegmentDraft(...e)}_canAddSegment(...e){return this._segmentsSection._canAddSegment(...e)}_getSegmentDraftValidationMessage(...e){return this._segmentsSection._getSegmentDraftValidationMessage(...e)}_getSegmentPreviewBoundaryValue(...e){return this._segmentsSection._getSegmentPreviewBoundaryValue(...e)}_sortSegmentsForEditor(...e){return this._segmentsSection._sortSegmentsForEditor(...e)}_getSegmentPreviewRows(...e){return this._segmentsSection._getSegmentPreviewRows(...e)}_buildEditorSegmentPreviewStyle(...e){return this._segmentsSection._buildEditorSegmentPreviewStyle(...e)}_getSegmentPreviewDomIds(...e){return this._segmentsSection._getSegmentPreviewDomIds(...e)}_renderSegmentPreview(...e){return this._segmentsSection._renderSegmentPreview(...e)}_refreshSegmentPreview(...e){return this._segmentsSection._refreshSegmentPreview(...e)}_getSegmentDomIds(...e){return this._segmentsSection._getSegmentDomIds(...e)}_refreshSegmentUi(...e){return this._segmentsSection._refreshSegmentUi(...e)}_commitSegmentDraft(...e){return this._segmentsSection._commitSegmentDraft(...e)}_commitSegmentBoundaryEdit(...e){return this._segmentsSection._commitSegmentBoundaryEdit(...e)}_commitGradientStopDraft(...e){return this._gradientStopsSection._commitGradientStopDraft(...e)}_getGradientPreviewDomIds(...e){return this._gradientStopsSection._getGradientPreviewDomIds(...e)}_refreshGradientDraftUi(...e){return this._gradientStopsSection._refreshGradientDraftUi(...e)}_commitGradientStopPosEdit(...e){return this._gradientStopsSection._commitGradientStopPosEdit(...e)}_getFillStyleValue(){return Se(this._createSectionContext(),{type:"card"})}_getFillStyleFromColorMode(e){return Ea(e)}_getScopedFillStyleValue(e){return Pa(this._createSectionContext(),e)}_getEffectiveScopedFillStyleValue(e){return Se(this._createSectionContext(),e)}_setScopedBarFillStyle(e,t){return Fi(this._createSectionContext(),e,t)}_getScopedBarColorValue(e){return xr(this._createSectionContext(),e)}_getEffectiveScopedBarColorValue(e){return Ta(this._createSectionContext(),e)}_setScopedBarColor(e,t){return Ei(this._createSectionContext(),e,t)}_getScopedBarSolidFillValue(e){return Xe(this._createSectionContext(),e)}_getEffectiveScopedBarSolidFillValue(e){return Ra(this._createSectionContext(),e)}_setScopedBarSolidFill(e,t){return Pi(this._createSectionContext(),e,t)}_clearEntityBarAppearance(e){return Ca(this._createSectionContext(),e)}_hasEntityBarAppearanceOverride(e){return za(this._createSectionContext(),e)}_getScopedNeedleConfig(...e){return this._needleSection._getScopedNeedleConfig(...e)}_hasNeedleOverride(...e){return this._needleSection._hasNeedleOverride(...e)}_getEffectiveScopedNeedleConfig(...e){return this._needleSection._getEffectiveScopedNeedleConfig(...e)}_setScopedNeedleMode(...e){return this._needleSection._setScopedNeedleMode(...e)}_setScopedNeedleColor(...e){return this._needleSection._setScopedNeedleColor(...e)}_getNeedleValue(...e){return this._needleSection._getNeedleValue(...e)}_getPeakShowValue(...e){return this._extremaSection._getPeakShowValue(...e)}_getScaleFixedValue(e,t){return Si(this._createSectionContext(),e)}_getScaleEntityValue(e){return xi(this._createSectionContext(),e)}_getTargetResolvableValue(...e){return this._targetSection._getTargetResolvableValue(...e)}_getEffectiveTargetResolvableValue(...e){return this._targetSection._getEffectiveTargetResolvableValue(...e)}_getTargetMode(...e){return this._targetSection._getTargetMode(...e)}_getTargetShapeValue(...e){return this._targetSection._getTargetShapeValue(...e)}_getEffectiveMarkerDirection(...e){return Ae(this._createSectionContext(),...e)}_setMarkerDirection(...e){return vt(this._createSectionContext(),...e)}_hasTargetShape(...e){return this._targetSection._hasTargetShape(...e)}_getEffectiveTargetShapeValue(...e){return this._targetSection._getEffectiveTargetShapeValue(...e)}_setTargetShape(...e){return this._targetSection._setTargetShape(...e)}_getEffectiveTargetMode(...e){return this._targetSection._getEffectiveTargetMode(...e)}_setTargetMode(...e){return this._targetSection._setTargetMode(...e)}_setTargetResolvablePart(...e){return this._targetSection._setTargetResolvablePart(...e)}_clearTargetOverride(...e){return this._targetSection._clearTargetOverride(...e)}_getTargetColorValue(...e){return this._targetSection._getTargetColorValue(...e)}_getEffectiveTargetColorValue(...e){return this._targetSection._getEffectiveTargetColorValue(...e)}_hasCustomTargetColor(...e){return this._targetSection._hasCustomTargetColor(...e)}_setTargetColor(...e){return this._targetSection._setTargetColor(...e)}_getTargetLabelShowValue(...e){return this._targetSection._getTargetLabelShowValue(...e)}_getEffectiveTargetLabelShowValue(...e){return this._targetSection._getEffectiveTargetLabelShowValue(...e)}_setTargetLabelShow(...e){return this._targetSection._setTargetLabelShow(...e)}_getTargetLabelDecimalValue(...e){return this._targetSection._getTargetLabelDecimalValue(...e)}_getEffectiveTargetLabelDecimalValue(...e){return this._targetSection._getEffectiveTargetLabelDecimalValue(...e)}_setTargetLabelDecimal(...e){return this._targetSection._setTargetLabelDecimal(...e)}_getTargetAboveFillColorValue(...e){return this._targetSection._getTargetAboveFillColorValue(...e)}_getTargetAboveFillDraftKey(...e){return this._targetSection._getTargetAboveFillDraftKey(...e)}_setTargetAboveFillDraft(...e){return this._targetSection._setTargetAboveFillDraft(...e)}_getTargetAboveFillDraft(...e){return this._targetSection._getTargetAboveFillDraft(...e)}_getBaselineColorDraftKey(...e){return this._baselineSection._getBaselineColorDraftKey(...e)}_setBaselineColorDraft(...e){return this._baselineSection._setBaselineColorDraft(...e)}_getBaselineColorDraft(...e){return this._baselineSection._getBaselineColorDraft(...e)}_getEffectiveTargetAboveFillColorValue(...e){return this._targetSection._getEffectiveTargetAboveFillColorValue(...e)}_setTargetAboveFillColor(...e){return this._targetSection._setTargetAboveFillColor(...e)}_isTargetAboveFillEnabled(...e){return this._targetSection._isTargetAboveFillEnabled(...e)}_setTargetAboveFillEnabled(...e){return this._targetSection._setTargetAboveFillEnabled(...e)}_isBaselineDirectionalColorEnabled(...e){return this._baselineSection._isBaselineDirectionalColorEnabled(...e)}_setBaselineDirectionalColorEnabled(...e){return this._baselineSection._setBaselineDirectionalColorEnabled(...e)}_hasTargetOverride(...e){return this._targetSection._hasTargetOverride(...e)}_getBaselineResolvableValue(...e){return this._baselineSection._getBaselineResolvableValue(...e)}_getEffectiveBaselineResolvableValue(...e){return this._baselineSection._getEffectiveBaselineResolvableValue(...e)}_getBaselineMode(...e){return this._baselineSection._getBaselineMode(...e)}_getEffectiveBaselineMode(...e){return this._baselineSection._getEffectiveBaselineMode(...e)}_setBaselineMode(...e){return this._baselineSection._setBaselineMode(...e)}_persistBaselineSourcePart(e,t,r){let i=t==="fixed"?this._normalizeNumberValue(r):this._normalizeTextValue(r).trim();return this._applyScopedMutation(e,a=>{let l={...this._getResolvablePartsFromTarget(a!=null?a:{},"baseline",{canonicalBasePath:["baseline","at"],legacyFixedPath:["baseline"],legacyEntityPath:["baseline","at","entity"]})};t==="fixed"?r===""||r===null||r===void 0||i===null?delete l.fixed:l.fixed=i:i?l.entity=i:delete l.entity;let o=this._cloneDeep(a);o=this._deletePathValue(o,["baseline","at"]);let d=l.fixed!==void 0&&l.fixed!==null&&l.fixed!=="",c=l.entity!==void 0&&l.entity!==null&&l.entity!=="";if(d||c){let u={};d&&(u.fixed=l.fixed),c&&(u.entity=l.entity),o=this._setPathValue(o,["baseline","at"],u)}return o=this._pruneEmptyObjectsInTarget(o,["baseline","at"]),o=this._pruneEmptyObjectsInTarget(o,["baseline"]),o})}_setBaselineResolvablePart(...e){return this._baselineSection._setBaselineResolvablePart(...e)}_removeScopedNeedle(...e){return this._needleSection._removeScopedNeedle(...e)}_setBaselineDirectionalColor(...e){return this._baselineSection._setBaselineDirectionalColor(...e)}_getBaselineDirectionalColorValue(...e){return this._baselineSection._getBaselineDirectionalColorValue(...e)}_getEffectiveBaselineDirectionalColorValue(...e){return this._baselineSection._getEffectiveBaselineDirectionalColorValue(...e)}_clearBaselineOverride(...e){return this._baselineSection._clearBaselineOverride(...e)}_removeBaseline(...e){return this._baselineSection._removeBaseline(...e)}_hasBaselineOverride(...e){return this._baselineSection._hasBaselineOverride(...e)}_isEntityOverrideExpanded(e){return this._expandedEntityOverrides.has(e)}_toggleEntityOverrideExpanded(e){this._expandedEntityOverrides.has(e)?this._expandedEntityOverrides.delete(e):this._expandedEntityOverrides.add(e),this._render()}_syncExpandedEntityOverrides(e){let t=new Set;this._expandedEntityOverrides.forEach(i=>{i{let[a,s]=String(i).split(":"),l=Number(a);Number.isInteger(l)&&l + +
+ ${a} +
+ + `}_renderCardGroup(e){return yi(e,this._isCardGroupExpanded(e.group))}_renderEntityInput(e,t){return Un(e,t)}_renderEntitySourceInput(e,t,r,i="sensor.example",a={}){return be(e,t,r,i,a)}_hasMarkersOverride(...e){return this._referenceMarkersSection._hasMarkersOverride(...e)}_getGenericMarkers(...e){return this._referenceMarkersSection._getGenericMarkers(...e)}_getGenericMarkersSummary(...e){return this._referenceMarkersSection._getGenericMarkersSummary(...e)}_getGenericMarkerScopeKey(...e){return this._referenceMarkersSection._getGenericMarkerScopeKey(...e)}_getGenericMarkerUiIds(...e){return this._referenceMarkersSection._getGenericMarkerUiIds(...e)}_resetGenericMarkerUiScope(...e){return this._referenceMarkersSection._resetGenericMarkerUiScope(...e)}_getGenericMarkerSummary(...e){return this._referenceMarkersSection._getGenericMarkerSummary(...e)}_refreshGenericMarkerSummary(...e){return this._referenceMarkersSection._refreshGenericMarkerSummary(...e)}_getGenericMarkerSource(...e){return this._referenceMarkersSection._getGenericMarkerSource(...e)}_renderGenericMarkersEditor(...e){return this._referenceMarkersSection._renderGenericMarkersEditor(...e)}_getGenericMarkerScope(...e){return this._referenceMarkersSection._getGenericMarkerScope(...e)}_setGenericMarkerList(...e){return this._referenceMarkersSection._setGenericMarkerList(...e)}_updateGenericMarker(...e){return this._referenceMarkersSection._updateGenericMarker(...e)}_setGenericMarkerSourceMode(...e){return this._referenceMarkersSection._setGenericMarkerSourceMode(...e)}_setGenericMarkerField(...e){return this._referenceMarkersSection._setGenericMarkerField(...e)}_cleanupGenericMarkersForEmit(e){if(!this._isObject(e)||!Array.isArray(e.markers))return e;let t=this._cloneDeep(e);return t.markers=t.markers.map(r=>{var a;if(!this._isObject(r))return r;let i=this._cloneDeep(r);if(i.show_marker===!0&&delete i.show_marker,this._isObject(i.at)){let s=this._cloneDeep(i.at),l=this._normalizeNumberValue(s.fixed),o=this._normalizeTextValue(s.entity).trim();l!==null?s.fixed=l:delete s.fixed,o?s.entity=o:delete s.entity,Object.keys(s).length?i.at=s:delete i.at}if(i.lane==="below"&&delete i.lane,i.shape==="circle"&&delete i.shape,i.direction==="inward"&&delete i.direction,this._normalizeColorComparisonValue(i.color)===this._normalizeColorComparisonValue("#888888")&&delete i.color,this._isObject(i.label)){let s=this._cloneDeep(i.label);s.show===!1&&delete s.show,s.show_value===!0&&delete s.show_value,s.show_unit===!0&&delete s.show_unit,typeof s.text=="string"&&(s.text=s.text.replace(/\s+/g," ").trim(),s.text||delete s.text);let l=this._normalizeDecimalValue((a=s.precision)!=null?a:s.decimal);delete s.decimal,l===null?delete s.precision:s.precision=l,delete s.unit,Object.keys(s).length?i.label=s:delete i.label}return i}),t}_renderResetOptions(e){return yr(e)}_escapeAttribute(e){return F(e)}_isHexColorValue(e){return Ke(e)}_expandHexColor(e){return gr(e)}_normalizeColorComparisonValue(e){return j(e)}_getColorPickerValue(e,t="#000000"){return we(e,t)}_renderColorInput(e){return K(e)}_renderListRows(e,t){return e.map((r,i)=>t(r,i)).join("")}_render(){var t;if(!this.shadowRoot||this._isRendering)return;let e=this._numericDrafts.captureFocus(this.shadowRoot);this._isRendering=!0;try{let r=this._getEntitiesValue(),i=this._getFillStyleValue(),a=this._getScopedLayoutValue({type:"card"},"position")||"left",s=this._getScopedLayoutValue({type:"card"},"hero_size")||"medium",l=this._getScopedLayoutValue({type:"card"},"value_size"),o=this._getScopedLayoutValue({type:"card"},"height"),d=this._getScopedLayoutValue({type:"card"},"width");this._syncExpandedEntityOverrides(r.length),this.shadowRoot.innerHTML=` +
@@ -10839,7 +2508,7 @@ ${paintLayers}
- +
@@ -10851,994 +2520,104 @@ ${paintLayers}
- ${this._renderListRows(entities, (entry, index) => { - var _a2, _b; - return ` -
+ ${this._renderListRows(r,(c,u)=>{var h,p;return` +
-
Entity ${index + 1}
-
${this._escapeAttribute(entry.entity || "Configure entity")}
+
Entity ${u+1}
+
${this._escapeAttribute(c.entity||"Configure entity")}
- - - - + + + +
- ${this._renderEntityInput(entry, index)} - - + ${this._renderEntityInput(c,u)} + +
- -
+
Overrides replace card defaults only for this entity.
- ${(() => { - var _a3, _b2; - const scope = { type: "entity", index }; - const minParts = this._getEffectiveResolvableScopedValue(scope, "min"); - const maxParts = this._getEffectiveResolvableScopedValue(scope, "max"); - const barAppearanceInherited = !this._hasEntityBarAppearanceOverride(scope); - const needleInherited = !this._hasNeedleOverride(scope); - const entityNeedle = this._getEffectiveScopedNeedleConfig(scope); - const baselineInherited = !this._hasBaselineOverride(scope); - const baselineParts = this._getEffectiveBaselineResolvableValue(scope); - const baselineMode2 = this._getEffectiveBaselineMode(scope); - const targetInherited = !this._hasTargetOverride(scope); - const targetParts = this._getEffectiveTargetResolvableValue(scope); - const targetMode2 = this._getEffectiveTargetMode(scope); - const targetShape2 = this._getEffectiveTargetShapeValue(scope); - const targetDirection2 = this._getEffectiveMarkerDirection(scope, "target"); - const formattingInherited = !this._hasFormattingOverride(scope); - const layoutInherited = !this._hasLayoutOverride(scope); - const peakInherited = !this._hasPeakOverride(scope); - const gradientStopsInherited = !this._hasGradientStopsOverride(scope); - const segmentsInherited = !this._hasSegmentsOverride(scope); - const scaleInherited = !this._hasResolvableOverride(this._getResolvableScopedValue(scope, "min")) && !this._hasResolvableOverride(this._getResolvableScopedValue(scope, "max")); - const entityPeak = this._getEffectiveScopedPeakConfig(scope); - const entityPeakExtras = this._getEffectiveMarkerExtras(scope, "peak"); - const floorInherited = !this._hasExtremumOverride(scope, "floor"); - const entityFloor = this._getEffectiveScopedFloorConfig(scope); - const entityGradientStops = this._getScopedGradientStopsValue(scope); - const entityGradientDraft = this._getGradientStopsDraftState(scope); - const entityGradientDraftMessage = this._getGradientDraftValidationMessage(scope); - const entitySegments = this._getScopedSegmentsValue(scope); - const scaleGroup = this._renderOverrideGroup({ - index, - group: "scale", - title: "Scale", - summary: this._getScaleOverrideSummary(scope), - content: ` + ${(()=>{let f={type:"entity",index:u},b=!this._hasTargetOverride(f),g=!this._hasLayoutOverride(f),_=!this._hasPeakOverride(f),y=!this._hasExtremumOverride(f,"floor"),m=this._renderOverrideGroup({index:u,group:"scale",title:"Scale",summary:this._getScaleOverrideSummary(f),content:this._renderScaleSection(f)}),v=this._renderOverrideGroup({index:u,group:"layout",title:"Layout",summary:this._getLayoutSummary(f),content:`
- - -
-
-
Fixed values are used as fallback when entity values are unavailable.
-
- - -
-
- - ${this._renderEntitySourceInput("entity-override-min-entity-source", index, minParts.entity, "inherit card default")} -
-
- - -
-
- - ${this._renderEntitySourceInput("entity-override-max-entity-source", index, maxParts.entity, "inherit card default")} -
- ` - }); - const layoutGroup = this._renderOverrideGroup({ - index, - group: "layout", - title: "Layout", - summary: this._getLayoutSummary(scope), - content: ` -
-
- - + +
- - + +
- - + + + + + +
- ${(this._getEffectiveScopedLayoutValue(scope, "position") || "") === "hero" ? ` + ${(this._getEffectiveScopedLayoutValue(f,"position")||"")==="hero"?`
- - + + +
- - + +
The hero value may render smaller when needed to fit. A custom value overrides the Hero size preset.
- ` : ""} + `:""}
- - + +
- ` - }); - const barGroup = this._renderOverrideGroup({ - index, - group: "bar", - title: "Bar Appearance", - summary: this._getBarAppearanceSummary(scope), - content: ` -
-
- - -
-
-
- - -
-
-
- - -
-
-
- - ${this._renderColorInput({ - id: `entity-${index}-bar-color`, - kind: "entity-bar-color", - index, - value: this._getEffectiveScopedBarColorValue(scope), - fallbackHex: "#4a9eff", - placeholder: "inherit card default" - })} -
- ` - }); - const needleGroup = this._renderOverrideGroup({ - index, - group: "needle", - title: "Needle", - summary: this._getNeedleSummary(scope), - content: ` -
-
- - -
-
-
- - -
-
- - ${this._renderColorInput({ - id: `entity-${index}-needle-color`, - kind: "entity-needle-color", - index, - value: entityNeedle.color, - fallbackHex: "#ffffff", - placeholder: "#ffffff" - })} -
- ` - }); - const formattingGroup = this._renderOverrideGroup({ - index, - group: "formatting", - title: "Formatting", - summary: this._getFormattingSummary(scope), - content: ` -
-
- - -
-
-
- - -
-
- - -
- ` - }); - const peakGroup = this._renderOverrideGroup({ - index, - group: "peak", - title: "Peak", - summary: this._getPeakSummary(scope), - content: ` -
-
- - -
-
-
-
- - -
-
-
- - ${this._renderColorInput({ - id: `entity-${index}-peak-color`, - kind: "entity-peak-color", - index, - value: entityPeak.color, - fallbackHex: "#888", - placeholder: "inherit card default" - })} -
-
- - -
-
- - -
- ${this._renderBuiltinMarkerLabelControls(scope, "peak", "Peak")} - ` - }); - const floorGroup = this._renderOverrideGroup({ - index, - group: "floor", - title: "Floor", - summary: this._getFloorSummary(scope), - content: ` -
-
- - -
-
-
-
- - -
-
-
- - ${this._renderColorInput({ - id: `entity-${index}-floor-color`, - kind: "entity-floor-color", - index, - value: entityFloor.color, - fallbackHex: "#888888", - placeholder: "inherit card default" - })} -
-
- - -
-
- - -
- ${this._renderBuiltinMarkerLabelControls(scope, "floor", "Floor")} - ` - }); - const markersGroup = this._renderOverrideGroup({ - index, - group: "markers", - title: "Reference markers", - summary: this._getGenericMarkersSummary(scope), - content: this._renderGenericMarkersEditor(scope) - }); - const segmentsGroup = this._renderOverrideGroup({ - index, - group: "segments", - title: "Segments", - summary: this._getSegmentsSummary(scope), - content: ` -
-
- - -
-
- ${this._isSegmentFillStyle(this._getEffectiveFillStyleValue(scope)) ? "" : '
Only used with segment-based fill styles.
'} - ${this._renderSegmentPreview(scope)} -
- -
- ${this._renderListRows(entitySegments, (segment, segmentIndex) => { - var _a4; - return ` -
-
- - - - -
- -
- `; - })} -
-
- - - - -
- -
-
-
- ` - }); - const gradientStopsGroup = this._renderOverrideGroup({ - index, - group: "gradient-stops", - title: "Gradient Stops", - summary: this._getGradientStopsSummary(scope), - content: ` -
-
- - -
-
- ${this._getEffectiveFillStyleValue(scope) !== "gradient" ? '
Only used with Gradient fill style
' : ""} - ${this._renderGradientPreview(scope, { - previewId: `entity-${index}-gradient-preview`, - trackId: `entity-${index}-gradient-preview-track` - })} -
- -
- ${this._renderListRows(entityGradientStops, (stop, stopIndex) => { - var _a4, _b3; - return ` -
- - ${this._renderColorInput({ - id: `entity-${index}-gradient-color-${stopIndex}`, - kind: "entity-gradient-color", - index, - value: (_b3 = stop == null ? void 0 : stop.color) != null ? _b3 : "#4a9eff", - fallbackHex: "#4CAF50", - placeholder: "CSS color value", - extraDataset: { "stop-index": stopIndex } - })} - -
- `; - })} -
-
- - ${this._renderColorInput({ - id: `entity-${index}-gradient-draft-color`, - kind: "entity-gradient-draft-color", - index, - value: entityGradientDraft.color, - fallbackHex: "#4CAF50", - placeholder: "CSS color value" - })} - -
- ${entityGradientDraftMessage ? `
${this._escapeAttribute(entityGradientDraftMessage)}
` : ""} -
-
-
- ` - }); - const baselineGroup = this._renderOverrideGroup({ - index, - group: "baseline", - title: "Baseline", - summary: this._getBaselineOverrideSummary(scope), - content: ` -
-
- - -
-
-
- -
-
- - -
-
- - -
-
- - ${this._renderEntitySourceInput("entity-baseline-entity-source", index, baselineParts.entity, "inherit card default")} -
-
-
- - -
-
-
- - ${this._renderColorInput({ - id: `entity-${index}-baseline-above-color`, - kind: "entity-baseline-above-color", - index, - value: this._getEffectiveBaselineDirectionalColorValue(scope, "above"), - fallbackHex: "#000000", - placeholder: "inherit card default" - })} -
-
-
- - -
-
-
- - ${this._renderColorInput({ - id: `entity-${index}-baseline-below-color`, - kind: "entity-baseline-below-color", - index, - value: this._getEffectiveBaselineDirectionalColorValue(scope, "below"), - fallbackHex: "#000000", - placeholder: "inherit card default" - })} -
- ` - }); - const targetGroup = this._renderOverrideGroup({ - index, - group: "target", - title: "Target", - summary: this._getTargetOverrideSummary(scope), - content: ` -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - ${this._renderEntitySourceInput("entity-target-entity-source", index, targetParts.entity, "inherit card default")} -
-
- - ${this._renderColorInput({ - id: `entity-${index}-target-color`, - kind: "entity-target-color", - index, - value: this._getEffectiveTargetColorValue(scope), - fallbackHex: "#888", - placeholder: "inherit card default" - })} -
- ${this._renderBuiltinMarkerLabelControls(scope, "target", "Target")} -
-
- - -
-
-
- - ${this._renderColorInput({ - id: `entity-${index}-target-above-fill`, - kind: "entity-target-above-fill-color", - index, - value: this._getEffectiveTargetAboveFillColorValue(scope), - fallbackHex: "#000000", - placeholder: "inherit card default" - })} -
- ` - }); - return ` - ${scaleGroup} - ${targetGroup} - ${peakGroup} - ${floorGroup} - ${markersGroup} - ${barGroup} - ${baselineGroup} - ${needleGroup} - ${segmentsGroup} - ${gradientStopsGroup} - ${layoutGroup} - ${formattingGroup} - `; - })()} + `}),S=this._renderOverrideGroup({index:u,group:"bar",title:"Bar Appearance",summary:this._getBarAppearanceSummary(f),content:wr(this._createSectionContext(),f)}),w=this._renderOverrideGroup({index:u,group:"needle",title:"Needle",summary:this._getNeedleSummary(f),content:this._needleSection.render(f)}),k=this._renderOverrideGroup({index:u,group:"formatting",title:"Formatting",summary:this._getFormattingSummary(f),content:this._renderFormattingSection(f)}),M=this._renderOverrideGroup({index:u,group:"peak",title:"Peak",summary:this._getPeakSummary(f),content:this._extremaSection.render(f,"peak")}),$=this._renderOverrideGroup({index:u,group:"floor",title:"Floor",summary:this._getFloorSummary(f),content:this._extremaSection.render(f,"floor")}),T=this._renderOverrideGroup({index:u,group:"markers",title:"Reference markers",summary:this._getGenericMarkersSummary(f),content:this._renderGenericMarkersEditor(f)}),B=this._renderOverrideGroup({index:u,group:"segments",title:"Segments",summary:this._getSegmentsSummary(f),content:this._segmentsSection.render(f)}),E=this._renderOverrideGroup({index:u,group:"gradient-stops",title:"Gradient Stops",summary:this._getGradientStopsSummary(f),content:this._gradientStopsSection.render(f)}),z=this._renderOverrideGroup({index:u,group:"baseline",title:"Baseline",summary:this._getBaselineOverrideSummary(f),content:this._baselineSection.render(f)}),C=this._renderOverrideGroup({index:u,group:"target",title:"Target",summary:this._getTargetOverrideSummary(f),content:this._targetSection.render(f)});return` + ${m} + ${C} + ${M} + ${$} + ${T} + ${S} + ${z} + ${w} + ${B} + ${E} + ${v} + ${k} + `})()}
- `; - })} + `})}
-
-
-

Scale

-
Entity values take precedence. Fixed values are used as fallback.
-
-
-
- - -
-
- - ${this._renderEntitySourceInput("scale-min-entity-source", "card", scaleMinEntity)} -
-
- - -
-
- - ${this._renderEntitySourceInput("scale-max-entity-source", "card", scaleMaxEntity)} -
-
-
+${this._renderScaleSection({type:"card"})} -
-
-

Markers

-
Configure Target, Peak, Floor, and custom reference markers.
-
-
- ${this._renderCardGroup({ - group: "marker-target", - title: "Target", - summary: this._getCardTargetMarkerSummary(), - content: ` -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - ${this._renderEntitySourceInput("target-entity-source", "card", target.entity)} -
-
- - ${this._renderColorInput({ - id: "target-color", - field: "target-color", - value: targetColor, - fallbackHex: "#888", - placeholder: "#888" - })} -
- ${this._renderBuiltinMarkerLabelControls({ type: "card" }, "target", "Target")} -
-
- - -
-
-
- - ${this._renderColorInput({ - id: "target-above-fill-color", - field: "target-above-fill-color", - value: targetAboveFillColor, - fallbackHex: "#000000" - })} -
-
` - })} - ${this._renderCardGroup({ - group: "marker-peak", - title: "Peak", - summary: this._getMarkerResetSummary("peak"), - content: ` -
-
-
- - -
-
-
- - ${this._renderColorInput({ - id: "peak-color", - field: "peak-color", - value: cardPeak.color, - fallbackHex: "#888", - placeholder: "#888" - })} -
-
- - -
-
- - -
- ${this._renderBuiltinMarkerLabelControls({ type: "card" }, "peak", "Peak")} -
` - })} - ${this._renderCardGroup({ - group: "marker-floor", - title: "Floor", - summary: this._getMarkerResetSummary("floor"), - content: ` -
-
-
- - -
-
-
- - ${this._renderColorInput({ - id: "floor-color", - field: "floor-color", - value: cardFloor.color, - fallbackHex: "#888888", - placeholder: "#888888" - })} -
-
- - -
-
- - -
- ${this._renderBuiltinMarkerLabelControls({ type: "card" }, "floor", "Floor")} -
` - })} - ${this._renderCardGroup({ - group: "generic-markers", - title: "Generic Reference Markers", - summary: this._getGenericMarkersSummary({ type: "card" }), - content: this._renderGenericMarkersEditor({ type: "card" }) - })} -
-
+${vi({renderGroup:c=>this._renderCardGroup(c),target:{summary:this._getCardTargetMarkerSummary(),content:this._targetSection.render({type:"card"})},peak:{summary:this._getMarkerResetSummary("peak"),content:this._extremaSection.render({type:"card"},"peak")},floor:{summary:this._getMarkerResetSummary("floor"),content:this._extremaSection.render({type:"card"},"floor")},references:{summary:this._getGenericMarkersSummary({type:"card"}),content:this._renderGenericMarkersEditor({type:"card"})}})} -
-
-

Bar Appearance

-
Choose the bar rendering mode and base bar colors.
-
-
-
- - -
-
-
- - -
-
-
- - ${this._renderColorInput({ - id: "bar-color", - field: "bar-color", - value: barColor, - fallbackHex: "#4a9eff", - placeholder: "#4a9eff" - })} -
-
- ${this._renderCardGroup({ - group: "baseline", - title: "Baseline", - summary: this._getCardBaselineSummary(), - content: ` -
-
- -
-
- - -
-
-
Auto shows the baseline when a baseline value is configured.
-
-
- - -
-
- - ${this._renderEntitySourceInput("baseline-entity-source", "card", baseline.entity)} -
-
-
- - -
-
-
- - ${this._renderColorInput({ - id: "baseline-above-color", - field: "baseline-above-color", - value: baselineAboveColor, - fallbackHex: "#000000" - })} -
-
-
- - -
-
-
- - ${this._renderColorInput({ - id: "baseline-below-color", - field: "baseline-below-color", - value: baselineBelowColor, - fallbackHex: "#000000" - })} -
-
` - })} -
-
- - -
-
- - ${this._renderColorInput({ - id: "bar-needle-color", - field: "bar-needle-color", - value: cardNeedle.color, - fallbackHex: "#ffffff", - placeholder: "#ffffff" - })} -
-
-
+${wr(this._createSectionContext(),{type:"card"},()=>`${this._baselineSection.render({type:"card"},c=>this._renderCardGroup(c))}${this._needleSection.render({type:"card"})}`)} -
-
-

Segments

-
Segments define colored value ranges.
-
- ${this._renderCardGroup({ - group: "segments", - title: "Segments", - summary: this._getSegmentsSummary({ type: "card" }), - inactive: !this._isSegmentFillStyle(fillStyle), - content: ` - ${this._isSegmentFillStyle(fillStyle) ? "" : '
Only used with segment-based fill styles.
'} - ${this._renderSegmentPreview({ type: "card" })} -
- -
- ${defaultSegmentsVisible ? '
Default bands
' : ""} - ${this._renderListRows(segments, (segment, index) => { - var _a2; - return ` -
-
- - - - -
- -
- `; - })} -
-
- - - - -
- -
-
-
- ` - })} -
+${this._segmentsSection.render({type:"card"},c=>this._renderCardGroup(c))} -
-
-

Gradient Stops

-
Gradient stops define a smooth color transition from 0 to 100%.
-
- ${this._renderCardGroup({ - group: "gradient-stops", - title: "Gradient Stops", - summary: gradientStopsSummary, - inactive: gradientStopsInactive, - content: ` - ${gradientStopsInactive ? '
Only used with Gradient fill style
' : ""} - ${this._renderGradientPreview({ type: "card" }, { - previewId: "card-gradient-preview", - trackId: "card-gradient-preview-track" - })} -
- -
- ${this._renderListRows(gradientStops, (stop, index) => { - var _a2, _b; - return ` -
- - ${this._renderColorInput({ - id: `gradient-color-${index}`, - kind: "gradient-color", - index, - value: (_b = stop == null ? void 0 : stop.color) != null ? _b : "#4a9eff", - fallbackHex: "#4CAF50", - placeholder: "CSS color value" - })} - -
- `; - })} -
-
- - ${this._renderColorInput({ - id: "gradient-draft-color", - kind: "gradient-draft-color", - index: "card", - value: gradientDraft.color, - fallbackHex: "#4CAF50", - placeholder: "CSS color value" - })} - -
- ${gradientDraftMessage ? `
${this._escapeAttribute(gradientDraftMessage)}
` : ""} -
-
-
- ` - })} -
+${this._gradientStopsSection.render({type:"card"},c=>this._renderCardGroup(c))}
@@ -11847,884 +2626,142 @@ ${paintLayers}
- +
- + + + + +
- ${layoutLabelPosition === "hero" ? ` + ${a==="hero"?`
- + + +
- +
The hero value may render smaller when needed to fit. A custom value overrides the Hero size preset.
- ` : ""} + `:""}
- +
-
-
-

Formatting

-
-
-
- - -
-
- - -
-
-
+${this._renderFormattingSection({type:"card"})}
- `; - this._bindShadowListeners(); - this._syncEntityPickers(); - this._lastRenderedConfigJson = this._serializeConfig(this._draftConfig); - this._applyPendingFocus(); - } finally { - this._isRendering = false; + `,this._bindShadowListeners(),this._syncEntityPickers(),this._numericDrafts.apply(this.shadowRoot,e),this._lastRenderedConfigJson=this._serializeConfig(this._draftConfig),this._applyPendingFocus()}finally{this._isRendering=!1}}_bindShadowListeners(){!this.shadowRoot||this._shadowListenersAttached||(this.shadowRoot.addEventListener("click",this._boundHandleClick),this.shadowRoot.addEventListener("change",this._boundHandleChange),this.shadowRoot.addEventListener("input",this._boundHandleInput),this.shadowRoot.addEventListener("value-changed",this._boundHandleValueChanged),this.shadowRoot.addEventListener("keydown",this._boundHandleKeydown),this._shadowListenersAttached=!0)}_syncEntityPickers(){if(!this.shadowRoot)return;let e=this._getEntitiesValue(),t=r=>{var l,o,d,c;let i=r.dataset.kind,a=r.dataset.index,s=Number(a);if(r.hass=this._hass,r.allowCustomEntity=!0,i==="entity-picker"){let u=e[s];r.value=(l=u==null?void 0:u.entity)!=null?l:"",r.label=`Entity ${s+1}`;return}if(i==="scale-min-entity-source"){r.value=this._getScaleEntityValue("min"),r.label="Min entity";return}if(i==="scale-max-entity-source"){r.value=this._getScaleEntityValue("max"),r.label="Max entity";return}if(i==="baseline-entity-source"){r.value=this._getBaselineResolvableValue({type:"card"}).entity,r.label="Baseline entity";return}if(i==="target-entity-source"){r.value=this._getTargetResolvableValue({type:"card"}).entity,r.label="Target entity";return}if(i==="entity-override-min-entity-source"){r.value=this._getEffectiveResolvableScopedValue({type:"entity",index:s},"min").entity,r.label=`Entity ${s+1} min entity`;return}if(i==="entity-override-max-entity-source"){r.value=this._getEffectiveResolvableScopedValue({type:"entity",index:s},"max").entity,r.label=`Entity ${s+1} max entity`;return}if(i==="entity-baseline-entity-source"){r.value=this._getEffectiveBaselineResolvableValue({type:"entity",index:s}).entity,r.label=`Entity ${s+1} baseline entity`;return}if(i==="entity-target-entity-source"){r.value=this._getEffectiveTargetResolvableValue({type:"entity",index:s}).entity,r.label=`Entity ${s+1} target entity`;return}if(i==="generic-marker-entity"){let u=this._getGenericMarkerScope(r),h=this._getGenericMarkers(u)[Number(r.dataset.markerIndex)];r.value=(o=this._getGenericMarkerSource(h).entity)!=null?o:"",r.label="Reference marker entity"}if(i==="generic-marker-label-entity"){let u=this._getGenericMarkerScope(r),h=this._getGenericMarkers(u)[Number(r.dataset.markerIndex)];r.value=(c=(d=h==null?void 0:h.label)==null?void 0:d.entity)!=null?c:"",r.label="Label content entity"}};['ha-entity-picker[data-kind="entity-picker"]','ha-entity-picker[data-kind="scale-min-entity-source"]','ha-entity-picker[data-kind="scale-max-entity-source"]','ha-entity-picker[data-kind="baseline-entity-source"]','ha-entity-picker[data-kind="target-entity-source"]','ha-entity-picker[data-kind="entity-override-min-entity-source"]','ha-entity-picker[data-kind="entity-override-max-entity-source"]','ha-entity-picker[data-kind="entity-baseline-entity-source"]','ha-entity-picker[data-kind="entity-target-entity-source"]','ha-entity-picker[data-kind="generic-marker-entity"]','ha-entity-picker[data-kind="generic-marker-label-entity"]'].forEach(r=>{this.shadowRoot.querySelectorAll(r).forEach(t)}),customElements.whenDefined&&customElements.whenDefined("ha-entity-picker").then(()=>{['ha-entity-picker[data-kind="entity-picker"]','ha-entity-picker[data-kind="scale-min-entity-source"]','ha-entity-picker[data-kind="scale-max-entity-source"]','ha-entity-picker[data-kind="baseline-entity-source"]','ha-entity-picker[data-kind="target-entity-source"]','ha-entity-picker[data-kind="entity-override-min-entity-source"]','ha-entity-picker[data-kind="entity-override-max-entity-source"]','ha-entity-picker[data-kind="entity-baseline-entity-source"]','ha-entity-picker[data-kind="entity-target-entity-source"]','ha-entity-picker[data-kind="generic-marker-entity"]','ha-entity-picker[data-kind="generic-marker-label-entity"]'].forEach(r=>{var i;(i=this.shadowRoot)==null||i.querySelectorAll(r).forEach(t)})}).catch(()=>{})}_handleClick(e){var i,a,s,l,o,d;if(this._segmentsSection.handle(e,"click")||this._gradientStopsSection.handle(e,"click"))return;let t=(s=(a=(i=e.target)==null?void 0:i.closest)==null?void 0:a.call(i,"[data-action]"))!=null?s:e.target,r=(l=t==null?void 0:t.dataset)==null?void 0:l.action;if(r&&!(t!=null&&t.disabled)){if(["move-entity-up","move-entity-down","duplicate-entity","remove-entity"].includes(r)&&this._numericDrafts.reset(),r==="add-entity"){let c=[...this._getEntitiesValue(),{entity:""}],u=this._buildEntityConfigEntries(c);if(this._queuePostRenderFocus(`[data-kind="entity-picker"][data-index="${c.length-1}"], [data-kind="entity-input"][data-index="${c.length-1}"]`),Array.isArray(this._draftConfig.entities)||u.length>1||!this._draftConfig.entity){let h=this._setPathValue(this._draftConfig,["entities"],u);!Array.isArray(this._draftConfig.entities)&&this._draftConfig.entity!==void 0&&(h=this._deletePathValue(h,["entity"]),this._draftConfig.name!==void 0&&(h=this._deletePathValue(h,["name"])),this._draftConfig.icon!==void 0&&(h=this._deletePathValue(h,["icon"]))),this._applyUserConfig(h,{rerender:!0})}else this._setValueAtPath(["entity"],(d=(o=c[0])==null?void 0:o.entity)!=null?d:"",{rerender:!0});return}if(r==="move-entity-up"){this._moveEntityRow(Number(t.dataset.index),-1);return}if(r==="move-entity-down"){this._moveEntityRow(Number(t.dataset.index),1);return}if(r==="duplicate-entity"){let c=Number(t.dataset.index);this._queuePostRenderFocus(`[data-kind="entity-name"][data-index="${c+1}"], [data-kind="entity-picker"][data-index="${c+1}"], [data-kind="entity-input"][data-index="${c+1}"]`),this._duplicateEntityRow(c);return}if(r==="toggle-entity-overrides"){this._toggleEntityOverrideExpanded(Number(t.dataset.index));return}if(r==="toggle-override-group"){this._toggleOverrideGroupExpanded(Number(t.dataset.index),t.dataset.group);return}if(r==="toggle-card-group"){this._toggleCardGroupExpanded(t.dataset.group);return}if(r==="remove-entity"){this._removeEntityRow(Number(t.dataset.index));return}this._baselineSection.handleClick(t)||this._referenceMarkersSection.handleClick(t)}}_handleChange(e){var r,i;if(this._numericDrafts.handle(e,this._isRendering)||this._segmentsSection.handle(e,"change")||this._gradientStopsSection.handle(e,"change"))return;let t=(i=(r=e.target)==null?void 0:r.dataset)==null?void 0:i.kind;this._handleFieldEvent(e)}_handleInput(e){var i;if(this._numericDrafts.handle(e,this._isRendering)||this._segmentsSection.handle(e,"input")||this._gradientStopsSection.handle(e,"input"))return;let t=e.target;if(!t||t.tagName==="HA-ENTITY-PICKER"||t.tagName==="INPUT"&&t.type==="checkbox")return;let r=(i=t.dataset)==null?void 0:i.kind;this._handleFieldEvent(e)}_handleValueChanged(e){var t;((t=e.target)==null?void 0:t.tagName)==="HA-ENTITY-PICKER"&&this._handleFieldEvent(e)}_handleKeydown(e){this._segmentsSection.handle(e,"keydown")||this._gradientStopsSection.handle(e,"keydown")}_handleFieldEvent(e){var d,c,u,h,p,f,b,g,_,y,m;if(this._segmentsSection.handle(e,"field")||this._gradientStopsSection.handle(e,"field"))return;let t=e.target,r=(d=t==null?void 0:t.dataset)==null?void 0:d.field,i=(c=t==null?void 0:t.dataset)==null?void 0:c.kind,a=r!=null&&r.endsWith("-text-fallback")?r.slice(0,-14):r,s=i!=null&&i.endsWith("-text-fallback")?i.slice(0,-14):i,l=(u=e.detail)==null?void 0:u.value,o=l!=null?l:(t==null?void 0:t.type)==="checkbox"?t.checked:t==null?void 0:t.value;if(!this._referenceMarkersSection.handleField({target:t,kind:s,value:o})){if(a==="title")return void this._setTitle(o);if(!Sr(this._createSectionContext(),{field:a,value:o})){if(a==="layout-label-position")return void this._setLayoutLabelPosition(o);if(a==="layout-label-hero-size")return void this._setLayoutHeroSize(o);if(a==="layout-hero-value-size")return void this._setLayoutHeroValueSize(o);if(a==="layout-height")return void this._setLayoutHeight(o);if(a==="layout-label-width")return void this._setScopedLayoutLabelWidth({type:"card"},o);if(!ut(this._createSectionContext(),{field:a,value:o})&&!ht(this._createSectionContext(),{field:a,value:o})&&!(this._needleSection.handleField({field:a,kind:s,index:(h=t.dataset)==null?void 0:h.index,value:o})||this._baselineSection.handleField({field:a,kind:s,index:(p=t.dataset)==null?void 0:p.index,value:o})||this._targetSection.handleField({field:a,kind:s,index:(f=t.dataset)==null?void 0:f.index,value:o})||this._extremaSection.handleField({field:a,kind:s,index:(b=t.dataset)==null?void 0:b.index,value:o}))){if(s==="entity-picker"||s==="entity-input"){let v=Number(t.dataset.index),S=this._getEntitiesValue().map((k,M)=>M===v?{...k,entity:this._normalizeTextValue(o)}:k),w=this._buildEntityConfigEntries(S);Array.isArray(this._draftConfig.entities)||w.length>1||!this._draftConfig.entity?this._setValueAtPath(["entities"],w):this._setValueAtPath(["entity"],(_=(g=S[0])==null?void 0:g.entity)!=null?_:"");return}if(s==="entity-name")return void this._setEntityField(Number(t.dataset.index),"name",o);if(s==="entity-icon")return void this._setEntityField(Number(t.dataset.index),"icon",o);if(!ut(this._createSectionContext(),{kind:s!=null&&s.startsWith("scale-")?s:void 0,value:o})&&!ut(this._createSectionContext(),{kind:s,index:(y=t==null?void 0:t.dataset)==null?void 0:y.index,value:o})){if(s==="entity-override-height")return void this._setScopedLayoutHeight({type:"entity",index:Number(t.dataset.index)},o);if(s==="entity-layout-inherit")return o?void this._clearLayoutOverride({type:"entity",index:Number(t.dataset.index)}):void 0;if(s==="entity-layout-label-position")return void this._setScopedLayoutLabelPosition({type:"entity",index:Number(t.dataset.index)},o);if(s==="entity-layout-label-hero-size")return void this._setScopedLayoutHeroSize({type:"entity",index:Number(t.dataset.index)},o);if(s==="entity-layout-hero-value-size")return void this._setScopedLayoutHeroValueSize({type:"entity",index:Number(t.dataset.index)},o);if(s==="entity-layout-label-width")return void this._setScopedLayoutLabelWidth({type:"entity",index:Number(t.dataset.index)},o);Sr(this._createSectionContext(),{kind:s,index:(m=t==null?void 0:t.dataset)==null?void 0:m.index,value:o})||s==="entity-bar-inherit"&&ht(this._createSectionContext(),{kind:s,index:t.dataset.index,value:o})||ht(this._createSectionContext(),{kind:s,index:t.dataset.index,value:o})}}}}}}});function Ua(n,e={}){let t=e.above?10:0,r=e.below?10:0,i=Math.max(0,n-t-r);return{above:t,below:r,railHeight:i,aboveY:0,belowY:n-9,compactGlyphs:t>0||r>0}}function Jn(n,e,t){let r=[];for(let i of["above","below"]){let a=n.filter(s=>{var l,o;return s.lane===i&&s.visible&&s.labelVisible&&Number.isFinite(s.position)&&((o=(l=s.label)==null?void 0:l.text)==null?void 0:o.trim())}).map(s=>({marker:s,anchor:Math.max(0,Math.min(100,s.position))*e/100})).sort((s,l)=>s.anchor-l.anchor);a.forEach(({marker:s,anchor:l},o)=>{var g;let d=o?(a[o-1].anchor+l)/2+2:0,c=o+1u&&(p=[h.showValue!==!1?h.number:"",h.showUnit!==!1?h.unit:""].filter(Boolean).join(" "),f="value",b=p?t(p)+4:1/0,!p&&!h.number&&!h.unit)){let _=Array.from((g=h.semanticText)!=null?g:"");for(;_.length>=3;){if(p=`${_.join("").trimEnd()}\u2026`,b=t(p)+4,b<=u){f="text";break}_.pop()}}!p||b>u||e<=0?r.push({id:s.id,lane:i,mode:"hidden",text:"",left:0,width:0}):r.push({id:s.id,lane:i,mode:f,text:p,left:Math.max(d,Math.min(l-b/2,c-b)),width:b})})}return r}var Xn=U(()=>{});function Yn(n,e){return ke(e==null?void 0:e.entity_id)||typeof(e==null?void 0:e.area_id)=="string"&&e.area_id.trim().length>0}var zi,Zn=U(()=>{xe();Yi();ea();br();ya();Ni();ir();Wr();ei();Xn();zi=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this._extrema={},this._scaleHistory=null,this._previousRow=null,this._labelNodes=new Map,this._onLabelResize=()=>this._scheduleLabelLayout(!0),this._updateComplete=Promise.resolve()}static getStubConfig(){return{type:"custom:sensor-bar-card-plus-feature"}}static getConfigElement(){return document.createElement("sensor-bar-card-plus-feature-editor")}setConfig(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Invalid Sensor Bar Card Plus feature configuration");if(e.entities!==void 0)throw new Error("The feature displays one entity; use entity instead of entities");if(e.entity!=null&&e.entity!==""&&!ke(e.entity))throw new Error("Feature entity must be a valid entity id");let t=JSON.stringify(e);t!==this._configKey&&(this._configKey=t,this._config={...e,...typeof e.entity=="string"?{entity:e.entity.trim()}:{}},this._configChanged=!0,this._requestUpdate())}set hass(e){this._hass=e,this._requestUpdate()}get hass(){return this._hass}set context(e){this._context=e,this._requestUpdate()}get context(){return this._context}set color(e){this._color=e,this._requestUpdate()}get color(){return this._color}set position(e){this._position=e,this._requestUpdate()}get position(){return this._position}get updateComplete(){return this._updateComplete}connectedCallback(){this._requestUpdate()}disconnectedCallback(){this._stopLabelLayout()}_requestUpdate(){this._updateScheduled||(this._updateScheduled=!0,this._updateComplete=Promise.resolve().then(()=>{this._updateScheduled=!1,this._reconcile()}))}_reconcile(){var a,s,l,o,d,c,u;let e=((a=this._config)==null?void 0:a.entity)||((s=this._context)==null?void 0:s.entity_id)||null;(this._configChanged||e!==this._entity)&&(this._entity=e,this._configChanged=!1,this._extrema={},this._scaleHistory=null,this._sampleState=null,this._previousRow=null,this._structureKey=null,this._labelLayoutKey=null,this._normalized=this._config?Qe({...this._config,type:"custom:sensor-bar-card-plus",entity:void 0,entities:e?[{entity:e}]:[]}):null,this._diagnostics=qr(this._normalized));let t=(o=(l=this._hass)==null?void 0:l.states)==null?void 0:o[e],r=null,i=this._config?e?this._hass?t?null:"Entity not found":"Waiting for Home Assistant":"Configure an entity":"Not configured";if(t&&((d=this._normalized)!=null&&d.entities[0])){let h=this._normalized.entities[0],p=J(t.state);if(p!==null&&(t!==this._sampleState||p!==this._sampleValue)){this._sampleState=t,this._sampleValue=p;let f=(c=t.last_updated)!=null?c:t.last_changed,b=f instanceof Date?f.getTime():Date.parse(String(f!=null?f:"")),g=Number.isFinite(b)?b:Date.now();for(let _ of["peak","floor"]){let y=h[`${_}_marker`];y.show&&(this._extrema[_]=Rr(this._extrema[_],p,(u=y.reset)!=null?u:{kind:"never"},_==="peak"?"max":"min",g))}}r=cr({hass:this._hass,entityConfig:h,entityState:t,extrema:this._extrema,previousScale:this._scaleHistory}),this._scaleHistory={min:r.min,max:r.max},r.numericValue===null&&(i=t.state==="unknown"?"Unknown":t.state==="unavailable"?"Unavailable":"Not numeric")}this._row=r,this._status=i,this._render(r,i),this._previousRow=i?null:r}_ensureDom(){this._surface||(this.shadowRoot.innerHTML=` + + `,this._surface=this.shadowRoot.querySelector("#surface"),this._bar=this.shadowRoot.querySelector("#bar"),this._labels=this.shadowRoot.querySelector("#labels"),this._statusEl=this.shadowRoot.querySelector("#status"))}_render(e,t){var c,u;this._ensureDom(),typeof this._color=="string"&&this._color?this.style.setProperty("--feature-color",this._color):this.style.removeProperty("--feature-color"),this._bar.hidden=!!t,this._statusEl.hidden=!t,this._statusEl.textContent=t!=null?t:"",this._surface.dataset.state=t?"unavailable":"numeric";let r=(c=e==null?void 0:e.markerLabelLaneOccupancy)!=null?c:{},i=Ua(0,r);ue(this._surface,"--label-above",`${i.above}px`),ue(this._surface,"--label-below",`${i.below}px`),this._syncLabels(e,t);let a=(e==null?void 0:e.name)||this._entity||"Sensor Bar Card Plus",s=((u=e==null?void 0:e.markers)!=null?u:[]).filter(h=>h.visible&&(h.showMarker||h.labelVisible)).map(h=>{var b;let p=h.type==="generic"?"Reference marker":`${h.type[0].toUpperCase()}${h.type.slice(1)}`,f=`${Be(h.value)}${e.displayUnit?` ${e.displayUnit}`:""}`;return`${p} at ${f}${h.labelVisible&&((b=h.label)!=null&&b.text)?`; label ${h.label.text}`:""}.`}).join(" ");if(this._surface.setAttribute("aria-label",t?`${a}${this._entity&&a!==this._entity?` (${this._entity})`:""}: ${t}${e?` (${e.state})`:""}`:`${a} (${this._entity}): ${e.primaryPresentation.text}. Range ${Be(e.min)} to ${Be(e.max)}${e.displayUnit?` ${e.displayUnit}`:""}.${s?` ${s}`:""}`),t)return;let l=mr(e,this._normalized.entities[0],{height:"var(--sbcp-row-height)"});l.animated=l.animated&&!!this._previousRow,this._surface.dataset.barAnimated=l.animated?"true":"false";let o=JSON.stringify(l),d=JSON.stringify([l.baseline.configured,l.needle.configured,l.markers.map(h=>[h.type,h.id])]);d!==this._structureKey?(this._bar.innerHTML=ui(l),this._structureKey=d):o!==this._barRenderKey&&ci(this._bar,l,{revealDuration:li(this._previousRow?{valuePercent:this._previousRow.percent,baselinePercent:this._previousRow.baselinePercent}:null,{valuePercent:e.percent,baselinePercent:e.baselinePercent})}),this._barRenderKey=o,this._labelAnimated=l.animated,this._scheduleLabelLayout()}_syncLabels(e,t){var s,l,o;let r=((s=e==null?void 0:e.markers)!=null?s:[]).filter(d=>d.labelVisible),i=new Set(r.map(d=>d.id));for(let[d,c]of this._labelNodes)i.has(d)||(c.remove(),this._labelNodes.delete(d));for(let d of r){if(!this._labelNodes.has(d.id)){let u=document.createElement("span");u.className="compact-marker-label",u.dataset.markerId=d.id,u.hidden=!0,this._labels.append(u),this._labelNodes.set(d.id,u)}let c=this._labelNodes.get(d.id);c.dataset.lane=d.lane,ue(c,"--marker-color",He(d))}if(this._labels.hidden=!!t,!(((l=e==null?void 0:e.markerLabelLaneOccupancy)==null?void 0:l.above)||((o=e==null?void 0:e.markerLabelLaneOccupancy)==null?void 0:o.below)))this._stopLabelLayout(),this._surface.dataset.compactGlyphs="false";else if(this.isConnected&&!this._labelObserver){this._labelObserver=new ResizeObserver(this._onLabelResize),this._labelObserver.observe(this._surface),this._labelFonts=document.fonts,this._labelFonts.addEventListener("loadingdone",this._onLabelResize);let d=this._labelFonts;d.ready.then(()=>{this._labelFonts===d&&this._scheduleLabelLayout(!0)})}}_stopLabelLayout(){var e,t;(e=this._labelObserver)==null||e.disconnect(),this._labelObserver=null,(t=this._labelFonts)==null||t.removeEventListener("loadingdone",this._onLabelResize),this._labelFonts=null,this._labelFrame&&cancelAnimationFrame(this._labelFrame),this._labelFrame=null,this._labelLayoutKey=null}_scheduleLabelLayout(e=!1){this._labelObserver&&(this._snapLabels=this._snapLabels||e,!this._labelFrame&&(this._labelFrame=requestAnimationFrame(()=>{this._labelFrame=null,this._layoutLabels()})))}_layoutLabels(){var l,o,d,c;let{width:e,height:t}=this._surface.getBoundingClientRect(),r=Ua(t,(l=this._row)==null?void 0:l.markerLabelLaneOccupancy);this._surface.dataset.compactGlyphs=String(r.compactGlyphs),(o=this._labelMeasure)!=null||(this._labelMeasure=document.createElement("canvas").getContext("2d")),this._labelMeasure.font=getComputedStyle(this._labels).font;let i=Jn((c=(d=this._row)==null?void 0:d.markers)!=null?c:[],e,u=>this._labelMeasure.measureText(u).width),a=JSON.stringify([e,t,r.above,r.below,this._labelMeasure.font,i.map(u=>[u.id,u.lane,u.mode,u.width])]),s=this._labelAnimated&&!this._snapLabels&&a===this._labelLayoutKey;for(let u of this._labelNodes.values())u.hidden=!0;for(let u of i){let h=this._labelNodes.get(u.id);h.hidden=u.mode==="hidden",h.dataset.mode=u.mode,h.textContent!==u.text&&(h.textContent=u.text),ue(h,"transition",s?"left 0.6s cubic-bezier(0.4,0,0.2,1)":"none"),ue(h,"left",`${u.left}px`),ue(h,"width",`${u.width}px`)}this._labelLayoutKey=a,this._snapLabels=!1}}});function $t(n,e){var r,i,a,s,l;let t=(r=n.scale)==null?void 0:r[e];if(t!==void 0){let o=$e(t);return{fixed:(i=o.fixed)!=null?i:"",entity:(a=o.entity)!=null?a:""}}return{fixed:(s=n[e])!=null?s:"",entity:(l=n[`${e}_entity`])!=null?l:""}}function Mt(n,e,t,r,i,a,s=!1){let l=(o,d)=>a?x(o,d):P(o,d,i);if(V(t)){if(r==="fixed"&&a)return x(x(n,[...e,"fixed"]),[...e,"value"]);let o=r==="fixed"&&t.fixed===void 0&&t.value!==void 0?"value":r;return l(n,[...e,o])}if(t!=null){let o=s?Me(t):null,d=ke(t)?"entity":Number.isFinite(o)?"percent":"fixed";return r===d?l(n,e):a?n:P(n,e,{[d]:d==="percent"?o:t,[r]:i})}return a?n:P(n,[...e,r],i)}function Qn(n,e,t,r){var l;let i=t==="fixed"?ne(r):N(r).trim(),a=t==="fixed"?i===null:!i,s=(l=n.scale)==null?void 0:l[e];if(s===void 0&&(n[e]!==void 0||n[`${e}_entity`]!==void 0)){let o=[t==="fixed"?e:`${e}_entity`];return a?x(n,o):P(n,o,i)}return Mt(n,["scale",e],s,t,i,a)}function Vt(n){var r,i;let e=n.baseline;if(!V(e))return{fixed:e!=null?e:"",entity:""};let t=$e(e.at,null,null,{allowPercent:!0});return{fixed:(r=t.fixed)!=null?r:"",entity:(i=t.entity)!=null?i:"",...Number.isFinite(t.percent)?{percent:t.percent}:{}}}function es(n,e,t){var s;if(e==="mode")return rs(n,"baseline",t);if(e==="percent")return is(n,"baseline",t);let r=e==="fixed"?ne(t):N(t).trim(),i=e==="fixed"?r===null:!r,a=n.baseline;if(!V(a)&&a!==void 0&&a!==null){if(e==="fixed")return i?x(n,["baseline"]):P(n,["baseline"],r);if(i)return n;n=P(n,["baseline"],{at:a})}return Mt(n,["baseline","at"],(s=n.baseline)==null?void 0:s.at,e,r,i,!0)}function Ft(n){var t,r,i;let e=n.target;if(V(e)&&e.at!==void 0){let a=$e(e.at,null,null,{allowPercent:!0});return{fixed:(t=a.fixed)!=null?t:"",entity:(r=a.entity)!=null?r:"",...Number.isFinite(a.percent)?{percent:a.percent}:{}}}return{fixed:V(e)?"":e!=null?e:"",entity:(i=n.target_entity)!=null?i:""}}function Oi(n){if(V(n.target))return n;let e=n.target,t=n.target_entity,r=t!==void 0?{...e!=null?{fixed:e}:{},entity:t}:e;return P(n,["target"],r==null?{}:{at:r})}function ts(n,e,t){if(e==="mode")return rs(n,"target",t);if(e==="percent")return is(n,"target",t);let r=e==="fixed"?ne(t):N(t).trim(),i=e==="fixed"?r===null:!r,a=n.target;if((!V(a)||a.at===void 0)&&(a!==void 0&&!V(a)||n.target_entity!==void 0))return e==="entity"?i?x(n,["target_entity"]):P(n,["target_entity"],r):V(a)?i?n:P(n,["target","at"],{entity:n.target_entity,fixed:r}):i?x(n,["target"]):P(n,["target"],r);let s=Mt(n,["target","at"],a==null?void 0:a.at,e,r,i,!0);return e==="entity"&&(s=x(s,["target_entity"])),s}function rs(n,e,t){var o;if(!["fixed","entity","entity-fallback","percent"].includes(t))return n;let i=(e==="target"?Ft:Vt)(n),a=(o=n[e])==null?void 0:o.at,s=e==="target"?Oi(n):V(n.baseline)?n:P(n,["baseline"],{at:n.baseline}),l=V(a)?{...a}:{};for(let d of["fixed","value","entity","percent"])delete l[d];if(t==="percent"){let d=Number.isFinite(i.percent)?i.percent:50;l=V(a)?{...l,percent:d}:`${d}%`}else t!=="entity"&&(l.fixed=i.fixed!==""&&i.fixed!==void 0?i.fixed:50),t!=="fixed"&&(l.entity=i.entity||""),!V(a)&&t==="fixed"&&(l=l.fixed),!V(a)&&t==="entity"&&l.entity&&(l=l.entity);return s=P(s,[e,"at"],l),e==="target"?x(s,["target_entity"]):s}function is(n,e,t){var o,d;let r=t===null,i=dt(t);if(!r&&i===null)return n;let a=(o=n[e])==null?void 0:o.at,s=[e,"at"];if(V(a))return r?x(n,[...s,"percent"]):P(n,[...s,"percent"],i);if(Number.isFinite(Me(a)))return r?x(n,s):P(n,s,`${i}%`);if(r)return n;let l=e==="target"?Oi(n):V(n.baseline)?n:P(n,["baseline"],{at:n.baseline});return Mt(l,s,(d=l[e])==null?void 0:d.at,"percent",i,!1,!0)}var Bi=U(()=>{xe();re();ve()});function qa(n,e){var r;let t=[["bar",e],[e],...e==="segments"?[["severity"]]:[]];return(r=t.find(i=>q(n,i)!==void 0))!=null?r:t[0]}function as(n){var e;return V(n)?Number.isFinite(n.percent)?`${n.percent}%`:(e=n.fixed)!=null?e:n.value:n}function Wa(n,e){let t,r=()=>{let i=n.read({type:"card"},[]),a=q(i,qa(i,e));return a!==void 0?Array.isArray(a)?a:[]:e==="segments"?t._getFallbackSegments({type:"card"}):t._getDefaultGradientStops()};return{patchOnly:!0,autoEnds:e==="segments",cssText:e==="segments",segmentSpace:()=>{var s,l;let i=n.read({type:"card"},[]),a=qa(i,e);return a[0]==="severity"?"percent":a[0]==="bar"&&(l=(s=i.bar)==null?void 0:s.segment_space)!=null?l:null},rows(i,a){return t=a,r().map(s=>{var l;return e==="segments"?{...s,from:as(s==null?void 0:s.from),to:as(s==null?void 0:s.to)}:{...s,pos:(l=a._normalizeGradientStopPosValue(s==null?void 0:s.pos))!=null?l:s==null?void 0:s.pos}})},write(i,a,s,l){if(!l)throw new Error("Feature palette writes require an explicit item operation");let o=n.mutate(i,d=>{let c=qa(d,e),u=[...r()];if(l.type==="edit"){if(l.index<0||l.index>=u.length)return d;let h={...u[l.index],[l.field]:l.value};l.value===void 0&&delete h[l.field],u[l.index]=h}else if(l.type==="add")u.push(D(l.item));else if(l.type==="remove")u.splice(l.index,1);else throw new Error("Unsupported palette operation");return P(d,c,u)});return o!==!1&&l.type!=="edit"&&(e==="segments"?t._clearSegmentScopeTextState(i):t._clearGradientStopScopeTextState(i)),o}}}var ns=U(()=>{re()});function Ha(n){let e=n==null?void 0:n.at;return typeof e=="number"?kt({at:{fixed:e}}):V(e)&&e.fixed===void 0&&e.value!==void 0?kt({at:{...e,fixed:e.value}}):kt(n)}function ss(n,e,t,r){var d;if(!Array.isArray(n.markers)||!n.markers[e])return n;let i=["markers",e,"at"],a=(d=n.markers[e])==null?void 0:d.at,s=t==="entity"?N(r).trim():ne(r),l=t==="entity"?!s:s===null;if(t==="percent")return P(n,i,l?null:`${s}%`);let o=Mt(n.markers[e],["at"],a,t,s,l);return P(n,["markers",e],o)}function ls(n,e){var l;let t=Array.isArray(n.markers)?[...n.markers]:[],{type:r,index:i,path:a,value:s}=e;if(r==="add")t.push({at:{fixed:50}});else{if(i<0||i>=t.length||!Number.isInteger(i))return n;if(r==="remove")t.splice(i,1);else if(r==="move"){let o=i+e.delta;if(o<0||o>=t.length)return n;[t[i],t[o]]=[t[o],t[i]]}else if(r==="field"){let o=s===void 0?x(t[i],a):P(t[i],a,s);a[0]==="label"&&a[1]==="precision"&&(o=x(o,["label","decimal"])),t[i]=a[0]==="label"?G(o,["label"]):o}else if(r==="mode"){let o;if(s==="percent")o="50%";else{let d=Ha(t[i]);o=V((l=t[i])==null?void 0:l.at)?D(t[i].at):{...d.entity?{entity:d.entity}:{},...d.fixed!==""&&d.fixed!==void 0?{fixed:d.fixed}:{}},delete o.percent,s==="fixed"?(delete o.entity,o.fixed===void 0&&o.value===void 0&&(o.fixed=50)):(o.entity||(o.entity=""),s==="entity"&&(delete o.fixed,delete o.value),s==="entity-fallback"&&o.fixed===void 0&&o.value===void 0&&(o.fixed=50))}t[i]=P(t[i],["at"],o)}}return P(n,["markers"],t)}var os=U(()=>{Di();re();Bi()});function ds(n,{key:e,path:t,value:r,field:i}){if(t[0]==="reset"&&r&&!Tr(r))return n;(i==="text"&&!r||r===null||t[0]==="reset"&&!r)&&(r=void 0);let a=r===void 0?x(n,[e,...t]):P(n,[e,...t],r);return i==="precision"&&(a=x(a,[e,"label","decimal"])),e==="peak"&&t[0]==="enabled"&&(a=x(a,["show_peak"]),V(n.peak_marker)&&(a=P(a,["peak_marker","show"],r))),e==="peak"&&t[0]==="color"&&(a=x(a,["peak_color"]),a=x(a,["peak_marker","color"]),a=G(a,["peak_marker"])),G(a,[e,...t.slice(0,-1)])}var cs=U(()=>{re();ir()});function us(n,{path:e,value:t,deprecatedKeys:r=[],field:i}){(i==="text"&&!t||t===null)&&(t=void 0);let a=t===void 0?n:Oi(n);return a=t===void 0?x(a,["target",...e]):P(a,["target",...e],t),a=Pe(a,r),i==="show"&&(a=x(a,["show_target_label"])),i==="precision"&&(a=x(a,["target","label","decimal"])),G(a,["target",...e.slice(0,-1)])}var hs=U(()=>{re();Bi()});function fs(n,{field:e,value:t}){var l;let r=["bar","needle"],i=(l=n.bar)==null?void 0:l.needle;if(e==="mode"){let o=t==="enabled";return i===void 0&&!o?n:P(n,V(i)?[...r,"show"]:r,o)}if(!t||j(t)===j("#ffffff"))return G(x(n,[...r,"color"]),r);let s=V(i)?i:typeof i=="boolean"?{show:i}:{};return P(n,r,{...s,color:t})}function ps(n,{path:e,value:t}){let r=n.baseline;if(!V(r)&&r!==void 0&&r!==null){if(t===void 0)return n;n=P(n,["baseline"],{at:r})}let i=["baseline",...e],a=t===void 0?x(n,i):P(n,i,t);return t===void 0&&(e.length>1&&(a=G(a,["baseline",e[0]])),a=G(a,["baseline"])),a}var ms=U(()=>{re();ve()});var R,Gi,bs=U(()=>{re();ve();Sa();xa();wa();$a();Fa();Ri();Bi();Ba();Ga();ns();Na();Aa();La();ja();Di();os();cs();hs();ms();R={type:"card"},Gi=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this._config={},this._context={},this._chooseEntity=!1,this._renderEpoch=0,this._updateComplete=Promise.resolve(),this._cssColorDrafts=new Map,this._numericDrafts=new ct,this._expandedCardGroups=new Set;let e=this._createSectionContext(),t={cssText:!0,percentSources:!0};this._needleSection=new bt(e,t),this._baselineSection=new _t(e,t),this._targetSection=new St(e,t),this._extremaSection=new xt(e,t);let r={root:()=>this.shadowRoot,render:()=>{this._paletteRenderRequested=!0,this._requestRender()},focus:a=>{this._pendingPaletteFocus=a},hass:()=>this._hass};this._referenceMarkersSection=new wt(e,{root:r.root,render:()=>this._requestRender()},t),this._segmentsSection=new pt(e,r,Wa(e,"segments")),this._gradientStopsSection=new mt(e,r,Wa(e,"gradient_stops"));for(let a of["click","keydown"])this.shadowRoot.addEventListener(a,s=>{var l,o,d,c,u;if(a==="click"){let h=(d=(o=(l=s.target)==null?void 0:l.closest)==null?void 0:o.call(l,"[data-action]"))!=null?d:s.target;if(((c=h==null?void 0:h.dataset)==null?void 0:c.action)==="toggle-card-group"){this._toggleCardGroup(h.dataset.group);return}if(this._baselineSection.handleClick(h)||this._targetSection.handleClick(h)){this._requestRender();return}if(this._referenceMarkersSection.handleClick(h)){if(((u=h==null?void 0:h.dataset)==null?void 0:u.action)==="add-generic-marker"){let p=this._referenceMarkersSection._getGenericMarkers(R);this._pendingReferenceFocusId=this._referenceMarkersSection._getGenericMarkerUiIds(R,p.length).at(-1)}this._requestRender();return}}this._segmentsSection.handle(s)||this._gradientStopsSection.handle(s)});let i=a=>this._handleField(a);for(let a of["input","change","value-changed"])this.shadowRoot.addEventListener(a,i);this.shadowRoot.addEventListener("focusout",a=>{var s,l;(l=(s=a.target)==null?void 0:s.matches)!=null&&l.call(s,"input, select, ha-entity-picker")&&this._requestRender()}),customElements.whenDefined("ha-entity-picker").then(()=>{this.isConnected&&this._requestRender()})}setConfig(e){if(!V(e))throw new Error("Invalid Sensor Bar Card Plus feature configuration");ge(e)!==ge(this._config)&&(this._paletteRenderRequested||(this._paletteRenderRequested=["bar.segments","bar.gradient_stops","segments","severity","gradient_stops"].some(t=>ge(q(e,t.split(".")))!==ge(q(this._config,t.split("."))))),this._config=D(e),this._cssColorDrafts.clear(),this._numericDrafts.reset(),this._baselineSection.reset(),this._targetSection.reset(),this._referenceMarkersSection.reset(),this._segmentsSection.reset(),this._gradientStopsSection.reset(),this._chooseEntity=!1,this._configReplaced=!0),this._requestRender()}set hass(e){this._hass=e,this._requestRender()}get hass(){return this._hass}set context(e){this._context=e!=null?e:{},this._requestRender()}get context(){return this._context}get updateComplete(){return this._updateComplete}get _explicitEntity(){return typeof this._config.entity=="string"?this._config.entity.trim():""}get _effectiveEntity(){return this._explicitEntity||this._context.entity_id||""}get _showEntityPicker(){return!!this._explicitEntity||this._chooseEntity||!this._context.entity_id}connectedCallback(){this._requestRender()}disconnectedCallback(){this._renderEpoch+=1,this._renderScheduled=!1}_requestRender(){if(this._renderScheduled)return;this._renderScheduled=!0;let e=this._renderEpoch;this._updateComplete=Promise.resolve().then(()=>{e===this._renderEpoch&&(this._renderScheduled=!1,this._render())})}_createSectionContext(){return{read:(e,t)=>q(this._config,t),mutate:(e,t,r)=>this._mutate(i=>{var a,s,l,o;return r!=null&&r.referenceMarkerEdit?ls(i,r.referenceMarkerEdit):r!=null&&r.needleEdit?fs(i,r.needleEdit):r!=null&&r.baselineEdit?ps(i,r.baselineEdit):r!=null&&r.targetEdit||((a=r==null?void 0:r.markerEdit)==null?void 0:a.key)==="target"?us(i,(s=r.targetEdit)!=null?s:r.markerEdit):r!=null&&r.extremumEdit||["peak","floor"].includes((l=r==null?void 0:r.markerEdit)==null?void 0:l.key)?ds(i,(o=r.extremumEdit)!=null?o:r.markerEdit):t(i)}),source:(e,t)=>(t==null?void 0:t.type)==="reference-marker"?Ha(t.marker):t==="baseline"?Vt(this._config):t==="target"?Ft(this._config):$t(this._config,t),setSource:(e,t,r,i)=>this._mutate(a=>(t==null?void 0:t.type)==="reference-marker"?ss(a,t.index,r,i):t==="baseline"?es(a,r,i):t==="target"?ts(a,r,i):Qn(a,t,r,i))}}_mutate(e){var r,i,a,s,l,o,d,c;let t=e(this._config);if(ge(t)===ge(this._config))return!1;if(((i=(r=t.bar)==null?void 0:r.segments)==null?void 0:i.length)!==((s=(a=this._config.bar)==null?void 0:a.segments)==null?void 0:s.length)||((l=t.segments)==null?void 0:l.length)!==((o=this._config.segments)==null?void 0:o.length)||((d=t.severity)==null?void 0:d.length)!==((c=this._config.severity)==null?void 0:c.length))for(let u of this._cssColorDrafts.keys())u.startsWith("segment-")&&this._cssColorDrafts.delete(u);return this._config=t,this._requestRender(),this.dispatchEvent(new CustomEvent("config-changed",{bubbles:!0,composed:!0,detail:{config:D(t)}})),!0}_handleField(e){var l,o,d,c,u,h,p,f,b,g;let t=e.target;if(this._configReplaced||(t==null?void 0:t.isConnected)===!1||(t==null?void 0:t.tagName)==="HA-ENTITY-PICKER"&&e.type!=="value-changed"||this._numericDrafts.handle(e,this._isRendering))return;let r=(o=(l=t==null?void 0:t.dataset)==null?void 0:l.field)==null?void 0:o.replace(/-text-fallback$/,""),i=(c=(d=t==null?void 0:t.dataset)==null?void 0:d.kind)==null?void 0:c.replace(/-text-fallback$/,""),a=e.type==="value-changed"?(u=e.detail)==null?void 0:u.value:(t==null?void 0:t.type)==="checkbox"?t.checked:t==null?void 0:t.value;if((t==null?void 0:t.type)==="color"&&this._cssColorDrafts.delete(`${t.id}-text-fallback`),((h=t==null?void 0:t.dataset)==null?void 0:h.cssColor)==="true"){let _=!a.trim()||CSS.supports("color",a);if((p=t.setCustomValidity)==null||p.call(t,_?"":"Enter a valid CSS color."),t.setAttribute("aria-invalid",_?"false":"true"),_?this._cssColorDrafts.delete(t.id):this._cssColorDrafts.set(t.id,a),!_&&i!=="segment-draft-color")return}if(r==="feature-entity-override"){this._chooseEntity=!!a,a||this._mutate(_=>x(_,["entity"])),this._requestRender();return}if(i==="feature-entity-source"){let _=typeof a=="string"?a.trim():"";this._chooseEntity=!1,this._mutate(y=>_?P(y,["entity"],_):x(y,["entity"])),this._requestRender();return}if(i!=null&&i.startsWith("generic-marker-")){let _=(g=(b=(f=t.closest)==null?void 0:f.call(t,".generic-marker-item"))==null?void 0:b.dataset)==null?void 0:g.markerUiId,y=this._referenceMarkersSection._getGenericMarkerUiIds(R,this._referenceMarkersSection._getGenericMarkers(R).length);if(_&&_!==y[Number(t.dataset.markerIndex)])return}if(this._referenceMarkersSection.handleField({target:t,kind:i,value:a}))return;if(this._segmentsSection.handle(e)||this._gradientStopsSection.handle(e)){this._requestRender();return}if(this._needleSection.handleField({field:r,kind:i,value:a})||this._baselineSection.handleField({field:r,kind:i,value:a})||this._targetSection.handleField({field:r,kind:i,value:a})||this._extremaSection.handleField({field:r,kind:i,value:a}))return;let s=this._createSectionContext();ut(s,{field:r,kind:i,value:a})||Sr(s,{field:r,kind:i,value:a})||ht(s,{field:r,kind:i,value:a},{animation:!0,cssText:!0})}_entityDescription(){return this._explicitEntity?`Using explicit entity: ${this._explicitEntity}`:this._context.entity_id?`Using parent card entity: ${this._context.entity_id}`:"An entity is required. Select an entity below."}_renderEntitySection(){return`
+

Entities

+
${F(this._entityDescription())}
+ ${this._context.entity_id||this._explicitEntity?`
+ + +
`:""} + ${this._showEntityPicker?`
+ + ${be("feature-entity-source","feature",this._explicitEntity)} +
`:""} +
`}_renderCardGroup(e){return yi(e,this._expandedCardGroups.has(e.group))}_toggleCardGroup(e){this._expandedCardGroups.has(e)?this._expandedCardGroups.delete(e):this._expandedCardGroups.add(e),this._syncDisclosures()}_syncDisclosures(){var t;let e={"marker-target":this._targetSection._getCardTargetMarkerSummary(),"marker-peak":this._extremaSection._getMarkerResetSummary("peak"),"marker-floor":this._extremaSection._getMarkerResetSummary("floor"),"generic-markers":this._referenceMarkersSection._getGenericMarkersSummary(R),baseline:this._baselineSection._getCardBaselineSummary(),segments:this._segmentsSection._getSegmentsSummary(R),"gradient-stops":this._gradientStopsSection._getGradientStopsSummary(R)};for(let[r,i]of Object.entries(e)){let a=this.shadowRoot.querySelector(`#card-group-${r}`),s=(t=a==null?void 0:a.closest)==null?void 0:t.call(a,".override-group"),l=this._expandedCardGroups.has(r);a==null||a.setAttribute("aria-expanded",String(l)),s==null||s.setAttribute("data-expanded",String(l));let o=this.shadowRoot.querySelector(`#card-group-${r}-title`);o!=null&&o.textContent&&(o.textContent=`${l?"\u25BE":"\u25B8"} ${o.textContent.slice(2)}`);let d=this.shadowRoot.querySelector(`#card-group-${r}-summary`);d&&(d.textContent=i);let c=s==null?void 0:s.querySelector(".override-group-body");c&&(c.style.display=l?"grid":"none")}for(let r of this.shadowRoot.querySelectorAll(".generic-marker-item")){let i=this._referenceMarkersSection._expandedGenericMarkerUiIds.has(r.dataset.markerUiId);r.setAttribute("data-expanded",String(i)),r.querySelector(".generic-marker-toggle").setAttribute("aria-expanded",String(i)),r.querySelector(".generic-marker-body").style.display=i?"grid":"none"}}_captureFocus(){var s,l,o,d,c;let e=this.shadowRoot.activeElement;if(!e)return null;let t=(o=(l=(s=e.closest)==null?void 0:s.call(e,".generic-marker-item"))==null?void 0:l.dataset)==null?void 0:o.markerUiId,r=e.id?`#${e.id}`:e.dataset.field?`[data-field="${e.dataset.field}"]`:e.dataset.kind?`[data-kind="${e.dataset.kind}"]`:t&&e.dataset.action?`.generic-marker-item[data-marker-ui-id="${t}"] [data-action="${e.dataset.action}"]`:e.dataset.action?`[data-action="${e.dataset.action}"]`:null,i=(c=(d=e.dataset.segmentIndex)!=null?d:e.dataset.stopIndex)!=null?c:e.dataset.index,a=r&&e.dataset.kind&&i!==void 0?`${r}[data-${e.dataset.segmentIndex!==void 0?"segment-index":e.dataset.stopIndex!==void 0?"stop-index":"index"}="${i}"]`:r;return a?{selector:a,start:e.selectionStart,end:e.selectionEnd}:null}_render(){var h,p,f,b,g,_,y,m,v,S;let e=Se(this._createSectionContext(),R),t=this._segmentsSection._getScopedSegmentsValue(R),r=this._gradientStopsSection._getScopedGradientStopsValue(R),i=this._referenceMarkersSection._getGenericMarkers(R),a=this._referenceMarkersSection._getGenericMarkerUiIds(R,i.length),s=JSON.stringify(i.map((w,k)=>[a[k],this._referenceMarkersSection._getGenericMarkerSource(w).mode])),l=JSON.stringify([!!(this._context.entity_id||this._explicitEntity),this._showEntityPicker,e,t.length,r.length,!Ke(this._gradientStopsSection._getGradientStopsDraftState(R).color),...r.map(w=>!Ke(w.color)),!!customElements.get("ha-entity-picker")]),o=(p=(h=this.shadowRoot.activeElement)==null?void 0:h.dataset)==null?void 0:p.field,d=(b=(f=this.shadowRoot.activeElement)==null?void 0:f.dataset)==null?void 0:b.kind,c=(d==null?void 0:d.endsWith("-text-fallback"))||(o==null?void 0:o.endsWith("-text-fallback"))||o==="feature-entity-override"&&!this._context.entity_id&&!this._explicitEntity||((_=(g=this.shadowRoot.activeElement)==null?void 0:g.validity)==null?void 0:_.badInput)&&this._numericDrafts.captureFocus(this.shadowRoot),u=!1;if(s!==this._referenceStructureSignature&&!c){this._isRendering=!0;try{u=!this._referenceMarkersSection.syncStructure(R)}finally{this._isRendering=!1}}if((l!==this._structureSignature||this._paletteRenderRequested||u)&&!c){let w=this._captureFocus(),k=this._createSectionContext();this._isRendering=!0;try{this.shadowRoot.innerHTML=`
+ ${this._renderEntitySection()} + ${wi(k,R)} + ${vi({renderGroup:$=>this._renderCardGroup($),target:{summary:this._targetSection._getCardTargetMarkerSummary(),content:this._targetSection.render(R)},peak:{summary:this._extremaSection._getMarkerResetSummary("peak"),content:this._extremaSection.render(R,"peak")},floor:{summary:this._extremaSection._getMarkerResetSummary("floor"),content:this._extremaSection.render(R,"floor")},references:{summary:this._referenceMarkersSection._getGenericMarkersSummary(R),content:this._referenceMarkersSection.render(R)}})} + ${wr(k,R,()=>`${this._baselineSection.render(R,$=>this._renderCardGroup($))}${this._needleSection.render(R)}`,{animation:!0,cssText:!0})} + ${this._segmentsSection.render(R,$=>this._renderCardGroup($))} + ${this._gradientStopsSection.render(R,$=>this._renderCardGroup($))} + ${Vi(k,R)} +
`}finally{this._isRendering=!1}this._structureSignature=l,this._paletteRenderRequested=!1,this._syncControls();let M=w&&this.shadowRoot.querySelector(w.selector);(y=M==null?void 0:M.focus)==null||y.call(M,{preventScroll:!0}),(M==null?void 0:M.type)==="text"&&w.start!=null&&((m=M.setSelectionRange)==null||m.call(M,w.start,w.end))}else this._syncControls();if(c||(this._referenceStructureSignature=s),this._pendingPaletteFocus&&((S=(v=this.shadowRoot.querySelector(this._pendingPaletteFocus))==null?void 0:v.focus)==null||S.call(v,{preventScroll:!0}),this._pendingPaletteFocus=null),this._pendingReferenceFocusId){let w=this.shadowRoot.querySelector(`.generic-marker-item[data-marker-ui-id="${this._pendingReferenceFocusId}"] .generic-marker-toggle`);w==null||w.focus({preventScroll:!0}),w==null||w.scrollIntoView({block:"nearest",inline:"nearest"}),this._pendingReferenceFocusId=null}this._configReplaced=!1}_syncControls(){var d,c,u,h,p,f,b,g,_,y;let e=this._createSectionContext(),t=xr(e,R),r={"scale-min":$t(this._config,"min").fixed,"scale-max":$t(this._config,"max").fixed,"bar-fill-style":Se(e,R),"bar-color":we(t,"#4a9eff"),"bar-color-text-fallback":t,"bar-needle-mode":this._needleSection._getScopedNeedleConfig(R).mode,"bar-needle-color":we(this._needleSection._getScopedNeedleConfig(R).color,"#ffffff"),"bar-needle-color-text-fallback":this._needleSection._getScopedNeedleConfig(R).color,"baseline-mode":this._baselineSection._getBaselineMode(R),"baseline-value":Vt(this._config).fixed,"baseline-source-mode":this._baselineSection._getSourceMode(),"baseline-percent":(c=(d=this._baselineSection._percentageDraft)!=null?d:Vt(this._config).percent)!=null?c:"","baseline-above-color":we(this._baselineSection._getBaselineDirectionalColorValue(R,"above"),"#000000"),"baseline-above-color-text-fallback":this._baselineSection._getBaselineDirectionalColorValue(R,"above"),"baseline-below-color":we(this._baselineSection._getBaselineDirectionalColorValue(R,"below"),"#000000"),"baseline-below-color-text-fallback":this._baselineSection._getBaselineDirectionalColorValue(R,"below"),"target-mode":this._targetSection._getTargetMode(R),"target-value":Ft(this._config).fixed,"target-source-mode":this._targetSection._getSourceMode(),"target-percent":(h=(u=this._targetSection._percentageDraft)!=null?u:Ft(this._config).percent)!=null?h:"","target-shape":this._targetSection._getEffectiveTargetShapeValue(R),"target-direction":this._targetSection._getEffectiveMarkerDirection(R,"target"),"target-color":we(this._targetSection._getTargetColorValue(R),"#888"),"target-color-text-fallback":this._targetSection._getTargetColorValue(R),"target-above-fill-color":we(this._targetSection._getTargetAboveFillColorValue(R),"#000000"),"target-above-fill-color-text-fallback":this._targetSection._getTargetAboveFillColorValue(R),"target-label-text":this._targetSection._getBuiltinMarkerLabelOptions(R,"target").text,"target-label-precision":this._targetSection._getBuiltinMarkerLabelOptions(R,"target").precision,"formatting-unit":De(e,R,"unit"),"formatting-decimal":De(e,R,"decimal")};for(let m of["peak","floor"]){let v=this._extremaSection._getMarkerConfig(R,m),S=this._extremaSection._getBuiltinMarkerLabelOptions(R,m);Object.assign(r,{[`${m}-color`]:we(v.color,"#888888"),[`${m}-color-text-fallback`]:v.color,[`${m}-reset`]:this._extremaSection._getEffectiveMarkerExtras(R,m).reset,[`${m}-direction`]:this._extremaSection._getEffectiveMarkerDirection(R,m),[`${m}-label-text`]:S.text,[`${m}-label-precision`]:S.precision});for(let[w,k]of[["show",v.mode==="enabled"],["label-show",S.show],["label-show-value",S.showValue],["label-show-unit",S.showUnit]]){let M=this.shadowRoot.querySelector(`#${m}-${w}`);M&&(M.checked=k)}}for(let[m,v]of Object.entries(r)){let S=this.shadowRoot.querySelector(`[data-field="${m}"]`);S&&(S!==this.shadowRoot.activeElement||this._configReplaced)&&(S.value=String(v)),m==="bar-color-text-fallback"&&(S==null||S.setAttribute("aria-label","Bar color (CSS value)"))}for(let m of[this._segmentsSection,this._gradientStopsSection]){let v=m===this._segmentsSection,S=v?m._getScopedSegmentsValue(R):m._getScopedGradientStopsValue(R);for(let w of v?["from","to","color","color-text-fallback"]:["pos","color"])for(let k of this.shadowRoot.querySelectorAll(`input[data-kind="${v?"segment":"gradient"}-${w}"]`)){let M=Number(k.dataset.index),$=S[M],T=v&&!w.startsWith("color")?m._getSegmentBoundaryText(R,M,w,$==null?void 0:$[w]):!v&&w==="pos"?m._getGradientStopPosText(R,M,(p=$==null?void 0:$.pos)!=null?p:""):$==null?void 0:$.color;(k!==this.shadowRoot.activeElement||this._configReplaced)&&(k.value=v&&k.type==="color"?we(T,"#4a9eff"):T!=null?T:"")}if(v||this._configReplaced){let w=v?m._getSegmentDraftState(R):m._getGradientStopsDraftState(R);for(let k of Object.keys(w))for(let M of["","-text-fallback"])for(let $ of this.shadowRoot.querySelectorAll(`input[data-kind="${v?"segment":"gradient"}-draft-${k}${M}"]`))($!==this.shadowRoot.activeElement||this._configReplaced)&&($.value=k==="color"&&$.type==="color"?we(w[k],"#4CAF50"):w[k])}v?m._refreshSegmentUi(R):(f=this.shadowRoot.querySelector("#gradient-draft-pos"))!=null&&f.closest&&m._refreshGradientDraftUi(R)}for(let m of["above","below"]){let v=this.shadowRoot.querySelector(`#baseline-${m}-color-enabled`);v&&(v.checked=this._baselineSection._isBaselineDirectionalColorEnabled(R,m))}this._referenceMarkersSection.syncControls(this._hass,this._configReplaced);let i=this._targetSection._getBuiltinMarkerLabelOptions(R,"target");for(let[m,v]of[["target-label-show",i.show],["target-label-show-value",i.showValue],["target-label-show-unit",i.showUnit],["target-above-fill-enabled",this._targetSection._isTargetAboveFillEnabled(R)]]){let S=this.shadowRoot.querySelector(`#${m}`);S&&(S.checked=v)}let a=this.shadowRoot.querySelector("#bar-solid-fill");a&&(a.checked=Xe(e,R));let s=this.shadowRoot.querySelector("#bar-animated");s&&(s.checked=Da(e,R));let l=this.shadowRoot.querySelector("#feature-entity-override");l&&(l.checked=!!this._explicitEntity||this._chooseEntity);let o=this.shadowRoot.querySelector("#feature-entity-status");o&&(o.textContent=this._entityDescription());for(let[m,v,S,w]of[["feature-entity-source",this._explicitEntity,"Entity override","feature-entity"],["scale-min-entity-source",$t(this._config,"min").entity,"Min entity","feature-scale-min-entity"],["baseline-entity-source",Vt(this._config).entity,"Baseline entity","feature-baseline-entity"],["target-entity-source",Ft(this._config).entity,"Target entity","feature-target-entity"],["scale-max-entity-source",$t(this._config,"max").entity,"Max entity","feature-scale-max-entity"]])for(let k of["input","ha-entity-picker"])for(let M of this.shadowRoot.querySelectorAll(`${k}[data-kind="${m}"]`))M.id=w,M.setAttribute("aria-label",S),m==="feature-entity-source"&&(M.setAttribute("aria-describedby","feature-entity-status"),M.setAttribute("aria-required",this._effectiveEntity?"false":"true")),(M!==this.shadowRoot.activeElement||this._configReplaced)&&(M.value=v),k==="ha-entity-picker"&&(M.hass=this._hass,M.label=S,M.allowCustomEntity=!0);this._syncDisclosures(),this._numericDrafts.apply(this.shadowRoot);for(let m of this.shadowRoot.querySelectorAll('input[data-css-color="true"]')){let v=this._cssColorDrafts.get(m.id);v!==void 0&&(m.value=v),m.setAttribute("aria-invalid",v===void 0?"false":"true"),(b=m.setCustomValidity)==null||b.call(m,v===void 0?"":"Enter a valid CSS color.");let S=(y=(_=(g=this.shadowRoot.querySelector(`#${m.id.replace(/-text-fallback$/,"")}`))==null?void 0:g.labels)==null?void 0:_[0])==null?void 0:y.textContent;S&&m.setAttribute("aria-label",`${S} (CSS value)`)}}}});var Ys=Ss(()=>{An();Kn();Zn();bs();for(let[n,e]of[["sensor-bar-card-plus",hi],["sensor-bar-card-plus-editor",Ci],["sensor-bar-card-plus-feature",zi],["sensor-bar-card-plus-feature-editor",Gi]])customElements.get(n)||customElements.define(n,e);window.customCards=window.customCards||[];window.customCards.some(n=>n.type==="sensor-bar-card-plus")||window.customCards.push({type:"sensor-bar-card-plus",name:"Sensor Bar Card Plus",description:"Animated, colour-coded horizontal bar card for Home Assistant with extended target and layout features."});window.customCardFeatures=window.customCardFeatures||[];window.customCardFeatures.some(n=>n.type==="sensor-bar-card-plus-feature")||window.customCardFeatures.push({type:"sensor-bar-card-plus-feature",name:"Sensor Bar Card Plus",isSupported:Yn,configurable:!0})});Ys();})(); diff --git a/www/community/sensor-bar-card-plus/sensor-bar-card-plus.js.gz b/www/community/sensor-bar-card-plus/sensor-bar-card-plus.js.gz index 6356f7ac2413a553eb4ec4c425d993e4c418c51a..0e9a17e60f92ba2764bee6b28a0e8ce9c5383da4 100644 GIT binary patch literal 99508 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 U!M(5w;m_~>ANuE%!`m1K03W}xbN~PV literal 99523 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 diff --git a/zigbee2mqtt/state.json b/zigbee2mqtt/state.json index c1c13468..cc8068bf 100644 --- a/zigbee2mqtt/state.json +++ b/zigbee2mqtt/state.json @@ -27,7 +27,7 @@ "led_brightness": 100, "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, - "power": 2.4, + "power": 2.2, "current": 0.1, "energy": 54.36, "power_factor": 0.17, @@ -45,7 +45,7 @@ "state": "ON", "led_brightness": 100, "countdown_to_turn_off": 0, - "voltage": 120.1, + "voltage": 120, "countdown_to_turn_on": 0, "energy": 104.73, "power_factor": 0.9, @@ -58,8 +58,8 @@ "latest_release_notes": null }, "linkquality": 145, - "power": 85.1, - "current": 0.85, + "power": 85.2, + "current": 0.8, "power_on_behavior": "on" }, "0xb40e060fffe031e3": { @@ -74,7 +74,7 @@ "led_brightness": 100, "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, - "voltage": 119.8, + "voltage": 119.7, "state": "ON", "ac_frequency": 60, "energy": 212.49, @@ -98,8 +98,8 @@ "voltage": 120.5, "energy": 101.12, "state": "ON", - "power": 33.4, - "current": 0.5, + "power": 50.9, + "current": 0.67, "ac_frequency": 60, "power_factor": 0.61, "update": { @@ -114,7 +114,7 @@ }, "0xffffb40e060895b3": { "state": "ON", - "voltage": 121, + "voltage": 120.5, "ac_frequency": 60, "energy": 14.41, "current": 0.01, @@ -136,7 +136,7 @@ "0xffffb40e0608864e": { "led_brightness": 100, "countdown_to_turn_off": 0, - "voltage": 121.5, + "voltage": 121.2, "energy": 34.94, "countdown_to_turn_on": 0, "state": "ON", @@ -224,7 +224,7 @@ }, "0xb40e060fffe717c5": { "battery": 100, - "occupancy": false, + "occupancy": true, "tamper": false, "battery_low": false, "linkquality": 145,