Compare commits

..

1 Commits

Author SHA1 Message Date
Paul Bottein
36f5e50ccc Display label inside field for entity picker and area picker 2025-11-03 17:07:22 +01:00
20 changed files with 267 additions and 181 deletions

View File

@@ -111,7 +111,7 @@
"fuse.js": "7.1.0",
"google-timezones-json": "1.2.0",
"gulp-zopfli-green": "6.0.2",
"hls.js": "1.6.14",
"hls.js": "1.6.13",
"home-assistant-js-websocket": "9.5.0",
"idb-keyval": "6.2.2",
"intl-messageformat": "10.7.18",
@@ -156,7 +156,7 @@
"@lokalise/node-api": "15.3.1",
"@octokit/auth-oauth-device": "8.0.3",
"@octokit/plugin-retry": "8.0.3",
"@octokit/rest": "22.0.1",
"@octokit/rest": "22.0.0",
"@rsdoctor/rspack-plugin": "1.3.7",
"@rspack/core": "1.6.0",
"@rspack/dev-server": "1.1.4",
@@ -178,7 +178,7 @@
"@types/tar": "6.1.13",
"@types/ua-parser-js": "0.7.39",
"@types/webspeechapi": "0.0.29",
"@vitest/coverage-v8": "4.0.6",
"@vitest/coverage-v8": "4.0.5",
"babel-loader": "10.0.0",
"babel-plugin-template-html-minifier": "4.1.0",
"browserslist-useragent-regexp": "4.1.3",
@@ -219,7 +219,7 @@
"typescript": "5.9.3",
"typescript-eslint": "8.46.2",
"vite-tsconfig-paths": "5.1.4",
"vitest": "4.0.6",
"vitest": "4.0.5",
"webpack-stats-plugin": "1.1.3",
"webpackbar": "7.0.0",
"workbox-build": "patch:workbox-build@npm%3A7.1.1#~/.yarn/patches/workbox-build-npm-7.1.1-a854f3faae.patch"
@@ -231,7 +231,7 @@
"clean-css": "5.3.3",
"@lit/reactive-element": "2.1.1",
"@fullcalendar/daygrid": "6.1.19",
"globals": "16.5.0",
"globals": "16.4.0",
"tslib": "2.8.1",
"@material/mwc-list@^0.27.0": "patch:@material/mwc-list@npm%3A0.27.0#~/.yarn/patches/@material-mwc-list-npm-0.27.0-5344fc9de4.patch"
},

View File

@@ -652,13 +652,6 @@ export class HaChartBase extends LitElement {
textBorderWidth: 2,
},
},
pie: {
label: {
color: style.getPropertyValue("--primary-text-color"),
textBorderColor: style.getPropertyValue("--primary-background-color"),
textBorderWidth: 2,
},
},
sankey: {
label: {
color: style.getPropertyValue("--primary-text-color"),

View File

@@ -87,8 +87,6 @@ export class StateHistoryChartLine extends LitElement {
private _previousYAxisLabelValue = 0;
private _yAxisMaximumFractionDigits = 0;
protected render() {
return html`
<ha-chart-base
@@ -759,12 +757,8 @@ export class StateHistoryChartLine extends LitElement {
Math.log10(Math.abs(value - this._previousYAxisLabelValue || 1))
)
);
this._yAxisMaximumFractionDigits = Math.max(
this._yAxisMaximumFractionDigits,
maximumFractionDigits
);
const label = formatNumber(value, this.hass.locale, {
maximumFractionDigits: this._yAxisMaximumFractionDigits,
maximumFractionDigits,
});
const width = measureTextWidth(label, 12) + 5;
if (width > this._yWidth) {

View File

@@ -357,7 +357,11 @@ export class HaAreaPicker extends LitElement {
protected render(): TemplateResult {
const placeholder =
this.placeholder ?? this.hass.localize("ui.components.area-picker.area");
this.placeholder ??
this.hass.localize("ui.components.area-picker.placeholder");
const notFoundLabel = this.hass.localize(
"ui.components.area-picker.no_match"
);
const valueRenderer = this._computeValueRenderer(this.hass.areas);
@@ -367,9 +371,7 @@ export class HaAreaPicker extends LitElement {
.autofocus=${this.autofocus}
.label=${this.label}
.helper=${this.helper}
.notFoundLabel=${this.hass.localize(
"ui.components.area-picker.no_match"
)}
.notFoundLabel=${notFoundLabel}
.placeholder=${placeholder}
.value=${this.value}
.getItems=${this._getItems}

View File

@@ -3,7 +3,6 @@ import type { RenderItemFunction } from "@lit-labs/virtualizer/virtualize";
import { mdiPlaylistPlus } from "@mdi/js";
import { css, html, LitElement, nothing, type CSSResultGroup } from "lit";
import { customElement, property, query, state } from "lit/decorators";
import { ifDefined } from "lit/directives/if-defined";
import { tinykeys } from "tinykeys";
import { fireEvent } from "../common/dom/fire_event";
import type { HomeAssistant } from "../types";
@@ -107,9 +106,6 @@ export class HaGenericPicker extends LitElement {
protected render() {
return html`
${this.label
? html`<label ?disabled=${this.disabled}>${this.label}</label>`
: nothing}
<div class="container">
<div id="picker">
<slot name="field">
@@ -130,7 +126,7 @@ export class HaGenericPicker extends LitElement {
type="button"
class=${this._opened ? "opened" : ""}
compact
aria-label=${ifDefined(this.label)}
.label=${this.label}
@click=${this.open}
@clear=${this._clear}
.placeholder=${this.placeholder}

View File

@@ -8,6 +8,7 @@ import {
type TemplateResult,
} from "lit";
import { customElement, property, query } from "lit/decorators";
import { ifDefined } from "lit/directives/if-defined";
import { fireEvent } from "../common/dom/fire_event";
import "./ha-combo-box-item";
import type { HaComboBoxItem } from "./ha-combo-box-item";
@@ -33,6 +34,8 @@ export class HaPickerField extends LitElement {
@property() public placeholder?: string;
@property() public label?: string;
@property({ attribute: "hide-clear-icon", type: Boolean })
public hideClearIcon = false;
@@ -51,15 +54,35 @@ export class HaPickerField extends LitElement {
!!this.value && !this.required && !this.disabled && !this.hideClearIcon;
return html`
<ha-combo-box-item .disabled=${this.disabled} type="button" compact>
<ha-combo-box-item
.disabled=${this.disabled}
type="button"
compact
aria-label=${ifDefined(this.label)}
>
${this.value
? this.valueRenderer
? this.valueRenderer(this.value)
: html`<slot name="headline">${this.value}</slot>`
: html`<span slot="headline">${this.value}</span>`
: html`
<span slot="headline" class="placeholder">
${this.placeholder}
</span>
${this.label
? html`
<span
slot="headline"
class="label ${this.placeholder
? "with-placeholder"
: ""}"
>${this.label}</span
>
`
: nothing}
${this.placeholder
? html`
<span slot="headline" class="placeholder">
${this.placeholder}
</span>
`
: nothing}
`}
${showClearIcon
? html`
@@ -152,9 +175,24 @@ export class HaPickerField extends LitElement {
width: 32px;
}
.label {
padding: 0 8px;
color: var(--secondary-text-color);
line-height: var(--ha-line-height-normal);
font-size: var(--ha-font-size-m);
white-space: nowrap;
}
.label.with-placeholder {
line-height: var(--ha-line-height-condensed);
font-size: var(--ha-font-size-xs);
}
.placeholder {
color: var(--secondary-text-color);
padding: 0 8px;
line-height: var(--ha-line-height-normal);
font-size: var(--ha-font-size-m);
}
`,
];

View File

@@ -9,7 +9,7 @@ export class HaTooltip extends Tooltip {
@property({ attribute: "show-delay", type: Number }) showDelay = 150;
/** The amount of time to wait before hiding the tooltip when the user mouses out.. */
@property({ attribute: "hide-delay", type: Number }) hideDelay = 150;
@property({ attribute: "hide-delay", type: Number }) hideDelay = 400;
static get styles(): CSSResultGroup {
return [

View File

@@ -1,5 +1,3 @@
import { isComponentLoaded } from "../common/config/is_component_loaded";
import { atLeastVersion } from "../common/config/version";
import type { HomeAssistant } from "../types";
export interface LogProvider {
@@ -10,8 +8,4 @@ export interface LogProvider {
export const fetchErrorLog = (hass: HomeAssistant) =>
hass.callApi<string>("GET", "error_log");
export const getErrorLogDownloadUrl = (hass: HomeAssistant) =>
isComponentLoaded(hass, "hassio") &&
atLeastVersion(hass.config.version, 2025, 10)
? "/api/hassio/core/logs/latest"
: "/api/error_log";
export const getErrorLogDownloadUrl = "/api/error_log";

View File

@@ -1137,11 +1137,11 @@ class DialogAddAutomationElement
}
.groups .selected {
background-color: var(--ha-color-fill-primary-normal-active);
--md-list-item-label-text-color: var(--ha-color-on-primary-normal);
--icon-primary-color: var(--ha-color-on-primary-normal);
--md-list-item-label-text-color: var(--primary-color);
--icon-primary-color: var(--primary-color);
}
.groups .selected ha-svg-icon {
color: var(--ha-color-on-primary-normal);
color: var(--primary-color);
}
.collection-title {

View File

@@ -1,3 +1,4 @@
import { consume } from "@lit/context";
import {
mdiAppleKeyboardCommand,
mdiContentCopy,
@@ -13,6 +14,7 @@ import {
import { html, LitElement, nothing } from "lit";
import { customElement, property, query, state } from "lit/decorators";
import { keyed } from "lit/directives/keyed";
import { capitalizeFirstLetter } from "../../../../common/string/capitalize-first-letter";
import { fireEvent } from "../../../../common/dom/fire_event";
import { handleStructError } from "../../../../common/structs/handle-errors";
import type { LocalizeKeys } from "../../../../common/translations/localize";
@@ -20,7 +22,16 @@ import "../../../../components/ha-md-divider";
import "../../../../components/ha-md-menu-item";
import { ACTION_BUILDING_BLOCKS } from "../../../../data/action";
import type { ActionSidebarConfig } from "../../../../data/automation";
import {
floorsContext,
fullEntitiesContext,
labelsContext,
} from "../../../../data/context";
import type { EntityRegistryEntry } from "../../../../data/entity_registry";
import type { FloorRegistryEntry } from "../../../../data/floor_registry";
import type { LabelRegistryEntry } from "../../../../data/label_registry";
import type { RepeatAction } from "../../../../data/script";
import { describeAction } from "../../../../data/script_i18n";
import type { HomeAssistant } from "../../../../types";
import { isMac } from "../../../../util/is_mac";
import type HaAutomationConditionEditor from "../action/ha-automation-action-editor";
@@ -49,6 +60,18 @@ export default class HaAutomationSidebarAction extends LitElement {
@state() private _warnings?: string[];
@state()
@consume({ context: fullEntitiesContext, subscribe: true })
_entityReg!: EntityRegistryEntry[];
@state()
@consume({ context: labelsContext, subscribe: true })
_labelReg!: LabelRegistryEntry[];
@state()
@consume({ context: floorsContext, subscribe: true })
_floorReg!: Record<string, FloorRegistryEntry>;
@query(".sidebar-editor")
public editor?: HaAutomationConditionEditor;
@@ -79,15 +102,20 @@ export default class HaAutomationSidebarAction extends LitElement {
const isBuildingBlock = ACTION_BUILDING_BLOCKS.includes(type || "");
const title = capitalizeFirstLetter(
describeAction(
this.hass,
this._entityReg,
this._labelReg,
this._floorReg,
actionConfig
)
);
const subtitle = this.hass.localize(
"ui.panel.config.automation.editor.actions.action"
);
const title =
this.hass.localize(
`ui.panel.config.automation.editor.actions.type.${type}.label` as LocalizeKeys
) || type;
const description = isBuildingBlock
? this.hass.localize(
`ui.panel.config.automation.editor.actions.type.${type}.description.picker` as LocalizeKeys

View File

@@ -125,6 +125,8 @@ class HaConfigBackupBackups extends SubscribeMixin(LitElement) {
@query("#overflow-menu") private _overflowMenu?: HaMdMenu;
private _overflowBackup?: BackupContent;
public connectedCallback() {
super.connectedCallback();
window.addEventListener("location-changed", this._locationChanged);
@@ -260,7 +262,7 @@ class HaConfigBackupBackups extends SubscribeMixin(LitElement) {
type: "overflow-menu",
template: (backup) => html`
<ha-icon-button
.backup=${backup}
.selected=${backup}
.label=${this.hass.localize("ui.common.overflow_menu")}
.path=${mdiDotsVertical}
@click=${this._toggleOverflowMenu}
@@ -292,6 +294,7 @@ class HaConfigBackupBackups extends SubscribeMixin(LitElement) {
this._overflowMenu.close();
return;
}
this._overflowBackup = ev.target.selected;
this._overflowMenu.anchorElement = ev.target;
this._overflowMenu.show();
};
@@ -569,17 +572,15 @@ class HaConfigBackupBackups extends SubscribeMixin(LitElement) {
navigate(`/config/backup/details/${id}`);
}
private async _downloadBackup(ev): Promise<void> {
const backup = ev.parentElement.anchorElement.backup;
if (!backup) {
private async _downloadBackup(): Promise<void> {
if (!this._overflowBackup) {
return;
}
downloadBackup(this.hass, this, backup, this.config);
downloadBackup(this.hass, this, this._overflowBackup, this.config);
}
private async _deleteBackup(ev): Promise<void> {
const backup = ev.parentElement.anchorElement.backup;
if (!backup) {
private async _deleteBackup(): Promise<void> {
if (!this._overflowBackup) {
return;
}
@@ -595,9 +596,11 @@ class HaConfigBackupBackups extends SubscribeMixin(LitElement) {
}
try {
await deleteBackup(this.hass, backup.backup_id);
if (this._selected.includes(backup.backup_id)) {
this._selected = this._selected.filter((id) => id !== backup.backup_id);
await deleteBackup(this.hass, this._overflowBackup.backup_id);
if (this._selected.includes(this._overflowBackup.backup_id)) {
this._selected = this._selected.filter(
(id) => id !== this._overflowBackup!.backup_id
);
}
} catch (err: any) {
showAlertDialog(this, {

View File

@@ -790,10 +790,7 @@ class HaConfigIntegrationPage extends SubscribeMixin(LitElement) {
);
const timeString = new Date().toISOString().replace(/:/g, "-");
const logFileName = `home-assistant_${integration}_${timeString}.log`;
const signedUrl = await getSignedPath(
this.hass,
getErrorLogDownloadUrl(this.hass)
);
const signedUrl = await getSignedPath(this.hass, getErrorLogDownloadUrl);
fileDownload(signedUrl.path, logFileName);
}

View File

@@ -415,7 +415,7 @@ class ErrorLogCard extends LitElement {
const downloadUrl =
this.provider && this.provider !== "core"
? getHassioLogDownloadUrl(this.provider)
: getErrorLogDownloadUrl(this.hass);
: getErrorLogDownloadUrl;
const logFileName =
this.provider && this.provider !== "core"
? `${this.provider}_${timeString}.log`

View File

@@ -2,6 +2,8 @@ import { mdiDotsVertical, mdiDownload, mdiRefresh, mdiText } from "@mdi/js";
import { css, html, LitElement, nothing } from "lit";
import { customElement, property, state } from "lit/decorators";
import memoizeOne from "memoize-one";
import { isComponentLoaded } from "../../../common/config/is_component_loaded";
import { atLeastVersion } from "../../../common/config/version";
import { fireEvent } from "../../../common/dom/fire_event";
import type { LocalizeFunc } from "../../../common/translations/localize";
import "../../../components/buttons/ha-call-service-button";
@@ -13,6 +15,7 @@ import "../../../components/ha-list-item";
import "../../../components/ha-spinner";
import { getSignedPath } from "../../../data/auth";
import { getErrorLogDownloadUrl } from "../../../data/error_log";
import { coreLatestLogsUrl } from "../../../data/hassio/supervisor";
import { domainToName } from "../../../data/integration";
import type { LoggedError } from "../../../data/system_log";
import {
@@ -228,7 +231,11 @@ export class SystemLogCard extends LitElement {
private async _downloadLogs() {
const timeString = new Date().toISOString().replace(/:/g, "-");
const downloadUrl = getErrorLogDownloadUrl(this.hass);
const downloadUrl =
isComponentLoaded(this.hass, "hassio") &&
atLeastVersion(this.hass.config.version, 2025, 10)
? coreLatestLogsUrl
: getErrorLogDownloadUrl;
const logFileName = `home-assistant_${timeString}.log`;
const signedUrl = await getSignedPath(this.hass, downloadUrl);
fileDownload(signedUrl.path, logFileName);

View File

@@ -419,15 +419,13 @@ class HuiEnergySankeyCard
};
deviceNodes.forEach((deviceNode) => {
const entity = this.hass.states[deviceNode.id];
const { area, floor } = entity
? getEntityContext(
entity,
this.hass.entities,
this.hass.devices,
this.hass.areas,
this.hass.floors
)
: { area: null, floor: null };
const { area, floor } = getEntityContext(
entity,
this.hass.entities,
this.hass.devices,
this.hass.areas,
this.hass.floors
);
if (area) {
if (area.area_id in areas) {
areas[area.area_id].value += deviceNode.value;

View File

@@ -61,6 +61,8 @@ export class HuiCalendarCard extends LitElement implements LovelaceCard {
@state() private _calendars: Calendar[] = [];
@state() private _eventDisplay = "list-item";
@state() private _narrow = false;
@state() private _error?: string = undefined;
@@ -142,6 +144,7 @@ export class HuiCalendarCard extends LitElement implements LovelaceCard {
.hass=${this.hass}
.views=${views}
.initialView=${this._config.initial_view!}
.eventDisplay=${this._eventDisplay}
.error=${this._error}
@view-changed=${this._handleViewChanged}
></ha-full-calendar>
@@ -171,6 +174,8 @@ export class HuiCalendarCard extends LitElement implements LovelaceCard {
}
private _handleViewChanged(ev: HASSDomEvent<CalendarViewChanged>): void {
this._eventDisplay =
ev.detail.view === "dayGridMonth" ? "list-item" : "auto";
this._startDate = ev.detail.start;
this._endDate = ev.detail.end;
this._fetchCalendarEvents();

View File

@@ -218,9 +218,6 @@ export class HuiGraphHeaderFooter
}
static styles = css`
:host {
display: block;
}
ha-spinner {
position: absolute;
top: calc(50% - 14px);

View File

@@ -391,11 +391,12 @@ class HUIRoot extends LitElement {
slot="trigger"
id="dashboardmenu"
.path=${mdiDotsVertical}
.label=${this.hass!.localize("ui.panel.lovelace.editor.menu.open")}
hide-title
></ha-icon-button>
${listItems}
</ha-button-menu>
<ha-tooltip placement="bottom" for="dashboardmenu">
${this.hass!.localize("ui.panel.lovelace.editor.menu.open")}
</ha-tooltip>
`);
}
return html`${result}`;

View File

@@ -824,6 +824,7 @@
"add_new": "Add new area…",
"no_areas": "You don't have any areas",
"no_match": "No matching areas found",
"placeholder": "Select an area",
"unassigned_areas": "Unassigned areas",
"failed_create_area": "Failed to create area."
},

234
yarn.lock
View File

@@ -3446,18 +3446,18 @@ __metadata:
languageName: node
linkType: hard
"@octokit/core@npm:^7.0.6":
version: 7.0.6
resolution: "@octokit/core@npm:7.0.6"
"@octokit/core@npm:^7.0.2":
version: 7.0.4
resolution: "@octokit/core@npm:7.0.4"
dependencies:
"@octokit/auth-token": "npm:^6.0.0"
"@octokit/graphql": "npm:^9.0.3"
"@octokit/request": "npm:^10.0.6"
"@octokit/request-error": "npm:^7.0.2"
"@octokit/types": "npm:^16.0.0"
"@octokit/graphql": "npm:^9.0.1"
"@octokit/request": "npm:^10.0.2"
"@octokit/request-error": "npm:^7.0.0"
"@octokit/types": "npm:^15.0.0"
before-after-hook: "npm:^4.0.0"
universal-user-agent: "npm:^7.0.0"
checksum: 10/852d41fc3150d2a891156427dd0575c77889f1c7a109894ee541594e3fd47c0d4e0a93fee22966c507dfd6158b522e42846c2ac46b9d896078194c95fa81f4ae
checksum: 10/d691df211ba9a2941ec97dc32e1c34e26e7c8161425fb573425cfc2727f548bf2a2445eec9d36748b4b469478feb21de4bec1c00a34aa02eedf5b7625ca52189
languageName: node
linkType: hard
@@ -3471,14 +3471,14 @@ __metadata:
languageName: node
linkType: hard
"@octokit/graphql@npm:^9.0.3":
version: 9.0.3
resolution: "@octokit/graphql@npm:9.0.3"
"@octokit/graphql@npm:^9.0.1":
version: 9.0.1
resolution: "@octokit/graphql@npm:9.0.1"
dependencies:
"@octokit/request": "npm:^10.0.6"
"@octokit/types": "npm:^16.0.0"
"@octokit/request": "npm:^10.0.2"
"@octokit/types": "npm:^14.0.0"
universal-user-agent: "npm:^7.0.0"
checksum: 10/7b16f281f8571dce55280b3986fbb8d15465a7236164a5f6497ded7597ff9ee95d5796924555b979903fe8c6706fe6be1b3e140d807297f85ac8edeadc28f9fe
checksum: 10/02d7ea4e2c17a4d4b7311150d0326318c756aff6cf955d9ba443a4bf26b32784832060379fc74f4537657415b262c10adb7f4a1655e15b143d19c2f099b87f16
languageName: node
linkType: hard
@@ -3501,6 +3501,20 @@ __metadata:
languageName: node
linkType: hard
"@octokit/openapi-types@npm:^25.1.0":
version: 25.1.0
resolution: "@octokit/openapi-types@npm:25.1.0"
checksum: 10/91989a4cec12250e6b3226e9aa931c05c27d46a946725d01e6a831af3890f157210a7032f07641a156c608cc6bf6cf55a28f07179910b644966358d6d559dec6
languageName: node
linkType: hard
"@octokit/openapi-types@npm:^26.0.0":
version: 26.0.0
resolution: "@octokit/openapi-types@npm:26.0.0"
checksum: 10/b9e1b1230b0a3d280b48902a927ce4e7df0d51096c928e2ee929035b0bce779fe7748a1ae58696f1c3080bf8338b6388d5caba5b0dbf254e9713303ed3abf7c2
languageName: node
linkType: hard
"@octokit/openapi-types@npm:^27.0.0":
version: 27.0.0
resolution: "@octokit/openapi-types@npm:27.0.0"
@@ -3508,14 +3522,14 @@ __metadata:
languageName: node
linkType: hard
"@octokit/plugin-paginate-rest@npm:^14.0.0":
version: 14.0.0
resolution: "@octokit/plugin-paginate-rest@npm:14.0.0"
"@octokit/plugin-paginate-rest@npm:^13.0.1":
version: 13.1.1
resolution: "@octokit/plugin-paginate-rest@npm:13.1.1"
dependencies:
"@octokit/types": "npm:^16.0.0"
"@octokit/types": "npm:^14.1.0"
peerDependencies:
"@octokit/core": ">=6"
checksum: 10/57ddd857528dad9c02431bc6254c2374c06057872cf9656a4a88b162ebe1c2bc9f34fbec360f2ccff72c940f29b120758ce14e8135bd027223d381eb1b8b6579
checksum: 10/26b9b7a233b77fff31d31469879a281e651417df86799387d6563446f037c9969061b833ab0698857c9797ea856f2ef7ed6970d8fb471239879c9298bbabe200
languageName: node
linkType: hard
@@ -3528,14 +3542,14 @@ __metadata:
languageName: node
linkType: hard
"@octokit/plugin-rest-endpoint-methods@npm:^17.0.0":
version: 17.0.0
resolution: "@octokit/plugin-rest-endpoint-methods@npm:17.0.0"
"@octokit/plugin-rest-endpoint-methods@npm:^16.0.0":
version: 16.1.0
resolution: "@octokit/plugin-rest-endpoint-methods@npm:16.1.0"
dependencies:
"@octokit/types": "npm:^16.0.0"
"@octokit/types": "npm:^15.0.0"
peerDependencies:
"@octokit/core": ">=6"
checksum: 10/e9d9ad4d9755cc7fb82fdcbfa870ddea8a432180f0f76c8469095557fd1e26f8caea8cae58401209be17c4f3d8cc48c0e16a3643e37e48f4d23c39e058bf2c55
checksum: 10/9b62d1ddf3435d77cbf11f36abf951b755cf2033dfd5f1875d35f97ad4ab9391e7d0e008ae5b813b7fe0b6c537ab38240b4911c61b53cf8fb8d9957a3d898e09
languageName: node
linkType: hard
@@ -3552,7 +3566,7 @@ __metadata:
languageName: node
linkType: hard
"@octokit/request-error@npm:^7.0.2":
"@octokit/request-error@npm:^7.0.0, @octokit/request-error@npm:^7.0.2":
version: 7.0.2
resolution: "@octokit/request-error@npm:7.0.2"
dependencies:
@@ -3561,7 +3575,7 @@ __metadata:
languageName: node
linkType: hard
"@octokit/request@npm:^10.0.6":
"@octokit/request@npm:^10.0.2, @octokit/request@npm:^10.0.6":
version: 10.0.6
resolution: "@octokit/request@npm:10.0.6"
dependencies:
@@ -3574,15 +3588,33 @@ __metadata:
languageName: node
linkType: hard
"@octokit/rest@npm:22.0.1":
version: 22.0.1
resolution: "@octokit/rest@npm:22.0.1"
"@octokit/rest@npm:22.0.0":
version: 22.0.0
resolution: "@octokit/rest@npm:22.0.0"
dependencies:
"@octokit/core": "npm:^7.0.6"
"@octokit/plugin-paginate-rest": "npm:^14.0.0"
"@octokit/core": "npm:^7.0.2"
"@octokit/plugin-paginate-rest": "npm:^13.0.1"
"@octokit/plugin-request-log": "npm:^6.0.0"
"@octokit/plugin-rest-endpoint-methods": "npm:^17.0.0"
checksum: 10/ec2e94cfa8766716faeb3ca18527d9af746482d35aaa6e4265a30cb669ae3f31f4ebb6235edebe5ae62bc2cec2b8e88902584f698df2e7cabac3a15fd27da665
"@octokit/plugin-rest-endpoint-methods": "npm:^16.0.0"
checksum: 10/d2b80fefd6aed307cb728980cb1d94cb484d48fabf0055198664287a7fb50544d312b005e4fb8dec2a6e97a153ec0ad7654d62f59898e1077a4cfba64e6d5c3e
languageName: node
linkType: hard
"@octokit/types@npm:^14.0.0, @octokit/types@npm:^14.1.0":
version: 14.1.0
resolution: "@octokit/types@npm:14.1.0"
dependencies:
"@octokit/openapi-types": "npm:^25.1.0"
checksum: 10/ea5549ca6176bd1184427141a77bca88c68f07d252d3ea1db7f9b58ec16b66391218a75a99927efb1e36a2cb00e8ed37a79b71fdc95a1117a9982516156fd997
languageName: node
linkType: hard
"@octokit/types@npm:^15.0.0":
version: 15.0.0
resolution: "@octokit/types@npm:15.0.0"
dependencies:
"@octokit/openapi-types": "npm:^26.0.0"
checksum: 10/c9207551ea0a56f7b740d7fed7f0eb3801abfc39b67ece6f914ffc41484879342cf909300c601ccb1ea5735737491f539c9a1464ddbc35acad323f6d78b6f17f
languageName: node
linkType: hard
@@ -5368,12 +5400,12 @@ __metadata:
languageName: node
linkType: hard
"@vitest/coverage-v8@npm:4.0.6":
version: 4.0.6
resolution: "@vitest/coverage-v8@npm:4.0.6"
"@vitest/coverage-v8@npm:4.0.5":
version: 4.0.5
resolution: "@vitest/coverage-v8@npm:4.0.5"
dependencies:
"@bcoe/v8-coverage": "npm:^1.0.2"
"@vitest/utils": "npm:4.0.6"
"@vitest/utils": "npm:4.0.5"
ast-v8-to-istanbul: "npm:^0.3.5"
debug: "npm:^4.4.3"
istanbul-lib-coverage: "npm:^3.2.2"
@@ -5384,34 +5416,34 @@ __metadata:
std-env: "npm:^3.9.0"
tinyrainbow: "npm:^3.0.3"
peerDependencies:
"@vitest/browser": 4.0.6
vitest: 4.0.6
"@vitest/browser": 4.0.5
vitest: 4.0.5
peerDependenciesMeta:
"@vitest/browser":
optional: true
checksum: 10/76b765a30178fe61937da242b72b4e931e0bcb39a03ed5f1d945ff0acc3828b517d976755b0d02866416a0b042db5fbbfd0bad3c49d2175716f2f1c22365518b
checksum: 10/ab007685e99950bf6768f8e9f1941306934c341cb7772c2b5cd5efb554791beda0622a40e603ff1b57d537c8c8bbbab0b6b9393dbc39ac2e5fe9155dd47f7be1
languageName: node
linkType: hard
"@vitest/expect@npm:4.0.6":
version: 4.0.6
resolution: "@vitest/expect@npm:4.0.6"
"@vitest/expect@npm:4.0.5":
version: 4.0.5
resolution: "@vitest/expect@npm:4.0.5"
dependencies:
"@standard-schema/spec": "npm:^1.0.0"
"@types/chai": "npm:^5.2.2"
"@vitest/spy": "npm:4.0.6"
"@vitest/utils": "npm:4.0.6"
"@vitest/spy": "npm:4.0.5"
"@vitest/utils": "npm:4.0.5"
chai: "npm:^6.0.1"
tinyrainbow: "npm:^3.0.3"
checksum: 10/70d6e03d413d208df722461ff7136a41249a0f8c34f985b4e7104f85e85583f272c3a92c4d7c9ea0ebd40ad77b64cb3b66d7ecd628210333ebd6813659a3422f
checksum: 10/c578034ec5db2fc6c2d7cc29551fe523a5516ca24f13e1c379f9c2d4d06f9c4a2ec87a53f797554281d5a002b50e3bb9dddf0e48c149efcf00dfed612f25ddd0
languageName: node
linkType: hard
"@vitest/mocker@npm:4.0.6":
version: 4.0.6
resolution: "@vitest/mocker@npm:4.0.6"
"@vitest/mocker@npm:4.0.5":
version: 4.0.5
resolution: "@vitest/mocker@npm:4.0.5"
dependencies:
"@vitest/spy": "npm:4.0.6"
"@vitest/spy": "npm:4.0.5"
estree-walker: "npm:^3.0.3"
magic-string: "npm:^0.30.19"
peerDependencies:
@@ -5422,54 +5454,54 @@ __metadata:
optional: true
vite:
optional: true
checksum: 10/82a1726ea7589a33e0a598cbe8c614ebd49900d3470b597e02a315a3a57c3fc9dcf84ea01a61df7cf1f9a23e273213b059cc721fc3a9b7fa87f49f4604f024d4
checksum: 10/999b562e84f06a712c311041bffcfff8ac0d4ebf8b61a0e5229266fe5d93047adc172c7340d6e946480a64c8e1919d8e394be6f97c9161dcae4bf5bd419854df
languageName: node
linkType: hard
"@vitest/pretty-format@npm:4.0.6":
version: 4.0.6
resolution: "@vitest/pretty-format@npm:4.0.6"
"@vitest/pretty-format@npm:4.0.5":
version: 4.0.5
resolution: "@vitest/pretty-format@npm:4.0.5"
dependencies:
tinyrainbow: "npm:^3.0.3"
checksum: 10/34e7c423233fefdb9c45d4873d38dde0641121e0639cd5109fea9d57d298a70b4a516284ff7a044db6373e2b39e98ed1d18f8ad55471a3d774bc96eac3de4560
checksum: 10/ac09db54a575b4a65f53b9fd3aed95766cd9833080cb62c932e5c067d43ed6e4f01c97b77b44f3191e01c1587b2af4c0b0d742e1287f556cbf8b241f77db6f75
languageName: node
linkType: hard
"@vitest/runner@npm:4.0.6":
version: 4.0.6
resolution: "@vitest/runner@npm:4.0.6"
"@vitest/runner@npm:4.0.5":
version: 4.0.5
resolution: "@vitest/runner@npm:4.0.5"
dependencies:
"@vitest/utils": "npm:4.0.6"
"@vitest/utils": "npm:4.0.5"
pathe: "npm:^2.0.3"
checksum: 10/40abea31fa33985d13d0eff46abd25f139c6634d34164642e48a9359e2469d592ca985d95d9df9ab9b3bec9857f9d5abbcf9865473a5e942e650487eb36a00be
checksum: 10/2631996bc031491c25be02706e395df88b6a8334ce99663694c40cd2f6343b13aa903e2229b75a12ce3686fe94fb3d535de1d17d4a0839f898c61a3bbdf760b2
languageName: node
linkType: hard
"@vitest/snapshot@npm:4.0.6":
version: 4.0.6
resolution: "@vitest/snapshot@npm:4.0.6"
"@vitest/snapshot@npm:4.0.5":
version: 4.0.5
resolution: "@vitest/snapshot@npm:4.0.5"
dependencies:
"@vitest/pretty-format": "npm:4.0.6"
"@vitest/pretty-format": "npm:4.0.5"
magic-string: "npm:^0.30.19"
pathe: "npm:^2.0.3"
checksum: 10/3477e1ab6a5ce23f4bf24c44a5d55f3e44448e9f4564022b3e0a4aaa0de6eef9cc4c913989a092a05345b4dd92e7545b681eb394d94f064be74479ac78911c7c
checksum: 10/f7c1b8ab75675a94bb6b74303ec8bf50108b18feff1343a57fbff97886dcca7e585b8daddb4b01825bb344bbf557deb0904ce3f0b1250769a0178047d8090ea3
languageName: node
linkType: hard
"@vitest/spy@npm:4.0.6":
version: 4.0.6
resolution: "@vitest/spy@npm:4.0.6"
checksum: 10/ddbb1aff00719f90b051e86c49071e74af780c9536c03987d5e89bf139fd6f6c00f7927efc8f894252ec60db5b16dfeb0235f98f038779a39c1b62dcba1a6b44
"@vitest/spy@npm:4.0.5":
version: 4.0.5
resolution: "@vitest/spy@npm:4.0.5"
checksum: 10/9fd0eff868715171ffaebe43126d89fd78256b6b0f7e12f7f865c7210e4c8f03310dcd4b34009fbb2962fda121310f611b22f8cf85d650fa5d2d2c39ea0b95f6
languageName: node
linkType: hard
"@vitest/utils@npm:4.0.6":
version: 4.0.6
resolution: "@vitest/utils@npm:4.0.6"
"@vitest/utils@npm:4.0.5":
version: 4.0.5
resolution: "@vitest/utils@npm:4.0.5"
dependencies:
"@vitest/pretty-format": "npm:4.0.6"
"@vitest/pretty-format": "npm:4.0.5"
tinyrainbow: "npm:^3.0.3"
checksum: 10/cb556e63e3f0f98a0eba21ec03793b44182bf343a5fdfd8ac2a70c5dfb3b14fbacf0de2aa5df0c3a14b2b4b634ce86f40077b8503e7486e79caffee2f07840e0
checksum: 10/1d2d71a94237c227928c16dabca300a05277918df58c63294771fb5a3d2f41538e21d4b75b2cc7421ff15443d1e496225c684dd32818601641be32affba09a74
languageName: node
linkType: hard
@@ -8939,10 +8971,10 @@ __metadata:
languageName: node
linkType: hard
"globals@npm:16.5.0":
version: 16.5.0
resolution: "globals@npm:16.5.0"
checksum: 10/f9e8a2a13f50222c127030a619e283e7bbfe32966316bdde0715af1d15a7e40cb9c24ff52cad59671f97762ed8b515353c2f8674f560c63d9385f19ee26735a6
"globals@npm:16.4.0":
version: 16.4.0
resolution: "globals@npm:16.4.0"
checksum: 10/1627a9f42fb4c82d7af6a0c8b6cd616e00110908304d5f1ddcdf325998f3aed45a4b29d8a1e47870f328817805263e31e4f1673f00022b9c2b210552767921cf
languageName: node
linkType: hard
@@ -9184,10 +9216,10 @@ __metadata:
languageName: node
linkType: hard
"hls.js@npm:1.6.14":
version: 1.6.14
resolution: "hls.js@npm:1.6.14"
checksum: 10/56eedf163912abf72bd5ca0eac44dbaa442cff59bb8d1ff3303614bf18d21dfa3ec7b85db5b71449986c52c63b7efb6bd5392b048bf22c61549f71a001fa94cd
"hls.js@npm:1.6.13":
version: 1.6.13
resolution: "hls.js@npm:1.6.13"
checksum: 10/4de045fddbeb6edc3859021ff60b268a642aa87e83347a3a764e53299b616d57f36eecef0b91eab240ffde84f75d1ab5f7cc0916a929de265707d0f0b27d1c71
languageName: node
linkType: hard
@@ -9261,7 +9293,7 @@ __metadata:
"@mdi/svg": "npm:7.4.47"
"@octokit/auth-oauth-device": "npm:8.0.3"
"@octokit/plugin-retry": "npm:8.0.3"
"@octokit/rest": "npm:22.0.1"
"@octokit/rest": "npm:22.0.0"
"@replit/codemirror-indentation-markers": "npm:6.5.3"
"@rsdoctor/rspack-plugin": "npm:1.3.7"
"@rspack/core": "npm:1.6.0"
@@ -9291,7 +9323,7 @@ __metadata:
"@vaadin/combo-box": "npm:24.9.4"
"@vaadin/vaadin-themable-mixin": "npm:24.9.4"
"@vibrant/color": "npm:4.0.0"
"@vitest/coverage-v8": "npm:4.0.6"
"@vitest/coverage-v8": "npm:4.0.5"
"@vue/web-component-wrapper": "npm:1.3.0"
"@webcomponents/scoped-custom-element-registry": "npm:0.0.10"
"@webcomponents/webcomponentsjs": "npm:2.8.0"
@@ -9331,7 +9363,7 @@ __metadata:
gulp-json-transform: "npm:0.5.0"
gulp-rename: "npm:2.1.0"
gulp-zopfli-green: "npm:6.0.2"
hls.js: "npm:1.6.14"
hls.js: "npm:1.6.13"
home-assistant-js-websocket: "npm:9.5.0"
html-minifier-terser: "npm:7.2.0"
husky: "npm:9.1.7"
@@ -9376,7 +9408,7 @@ __metadata:
typescript-eslint: "npm:8.46.2"
ua-parser-js: "npm:2.0.6"
vite-tsconfig-paths: "npm:5.1.4"
vitest: "npm:4.0.6"
vitest: "npm:4.0.5"
vue: "npm:2.7.16"
vue2-daterange-picker: "npm:0.6.8"
webpack-stats-plugin: "npm:1.1.3"
@@ -14751,17 +14783,17 @@ __metadata:
languageName: node
linkType: hard
"vitest@npm:4.0.6":
version: 4.0.6
resolution: "vitest@npm:4.0.6"
"vitest@npm:4.0.5":
version: 4.0.5
resolution: "vitest@npm:4.0.5"
dependencies:
"@vitest/expect": "npm:4.0.6"
"@vitest/mocker": "npm:4.0.6"
"@vitest/pretty-format": "npm:4.0.6"
"@vitest/runner": "npm:4.0.6"
"@vitest/snapshot": "npm:4.0.6"
"@vitest/spy": "npm:4.0.6"
"@vitest/utils": "npm:4.0.6"
"@vitest/expect": "npm:4.0.5"
"@vitest/mocker": "npm:4.0.5"
"@vitest/pretty-format": "npm:4.0.5"
"@vitest/runner": "npm:4.0.5"
"@vitest/snapshot": "npm:4.0.5"
"@vitest/spy": "npm:4.0.5"
"@vitest/utils": "npm:4.0.5"
debug: "npm:^4.4.3"
es-module-lexer: "npm:^1.7.0"
expect-type: "npm:^1.2.2"
@@ -14779,10 +14811,10 @@ __metadata:
"@edge-runtime/vm": "*"
"@types/debug": ^4.1.12
"@types/node": ^20.0.0 || ^22.0.0 || >=24.0.0
"@vitest/browser-playwright": 4.0.6
"@vitest/browser-preview": 4.0.6
"@vitest/browser-webdriverio": 4.0.6
"@vitest/ui": 4.0.6
"@vitest/browser-playwright": 4.0.5
"@vitest/browser-preview": 4.0.5
"@vitest/browser-webdriverio": 4.0.5
"@vitest/ui": 4.0.5
happy-dom: "*"
jsdom: "*"
peerDependenciesMeta:
@@ -14806,7 +14838,7 @@ __metadata:
optional: true
bin:
vitest: vitest.mjs
checksum: 10/79c723a7a76130af3ed4a08a1a073200fa28ec80431e431b3a88d5b91d6683be8909e2f05b286aae7f7671d5fae136294e06fc34a6e4d1b266970c4892e07182
checksum: 10/ed9800ad0310dbbb2c23dba26c4cbc9ecf667d5b681f1379cb042ef6f7343646ce8487e594e3d98bbe9c0c7553613d479f14151250e510fe5d4552290a6d93e8
languageName: node
linkType: hard