Compare commits

..

1 Commits

Author SHA1 Message Date
Aidan Timson
8c2af96900 Remove technical messaging on dashboard error 2025-09-29 09:44:24 +01:00
18 changed files with 708 additions and 374 deletions

View File

@@ -75,7 +75,7 @@ jobs:
# home-assistant/wheels doesn't support SHA pinning
- name: Build wheels
uses: home-assistant/wheels@2025.09.1
uses: home-assistant/wheels@2025.07.0
with:
abi: cp313
tag: musllinux_1_2

View File

@@ -75,7 +75,7 @@ export const castDemoEntities: () => Entity[] = () =>
longitude: 4.8903147,
radius: 100,
friendly_name: "Home",
icon: "mdi:home",
icon: "hass:home",
},
},
"input_number.harmonyvolume": {
@@ -88,7 +88,7 @@ export const castDemoEntities: () => Entity[] = () =>
step: 1,
mode: "slider",
friendly_name: "Volume",
icon: "mdi:volume-high",
icon: "hass:volume-high",
},
},
"climate.upstairs": {

View File

@@ -56,7 +56,7 @@ export const castDemoLovelace: () => LovelaceConfig = () => {
type: "weblink",
url: "/lovelace/climate",
name: "Climate controls",
icon: "mdi:arrow-right",
icon: "hass:arrow-right",
},
],
},
@@ -76,7 +76,7 @@ export const castDemoLovelace: () => LovelaceConfig = () => {
type: "weblink",
url: "/lovelace/overview",
name: "Back",
icon: "mdi:arrow-left",
icon: "hass:arrow-left",
},
],
},

View File

@@ -143,7 +143,7 @@ export const demoEntitiesArsaboo: DemoConfig["entities"] = (localize) =>
state: "on",
attributes: {
friendly_name: "Home Automation",
icon: "mdi:home-automation",
icon: "hass:home-automation",
},
},
"input_boolean.tvtime": {

View File

@@ -4,7 +4,7 @@ export const demoLovelaceArsaboo: DemoConfig["lovelace"] = (localize) => ({
title: "Home Assistant",
views: [
{
icon: "mdi:home-assistant",
icon: "hass:home-assistant",
id: "home",
title: "Home",
cards: [

View File

@@ -1236,7 +1236,7 @@ export const demoLovelaceJimpower: DemoConfig["lovelace"] = () => ({
},
],
path: "security",
icon: "mdi:shield-home",
icon: "hass:shield-home",
name: "Security",
background:
'center / cover no-repeat url("/assets/jimpower/background-15.jpg") fixed',

View File

@@ -28,7 +28,7 @@
"dependencies": {
"@babel/runtime": "7.28.4",
"@braintree/sanitize-url": "7.1.1",
"@codemirror/autocomplete": "6.19.0",
"@codemirror/autocomplete": "6.18.7",
"@codemirror/commands": "6.8.1",
"@codemirror/language": "6.11.3",
"@codemirror/legacy-modes": "6.5.1",
@@ -157,7 +157,7 @@
"@octokit/auth-oauth-device": "8.0.1",
"@octokit/plugin-retry": "8.0.1",
"@octokit/rest": "22.0.0",
"@rsdoctor/rspack-plugin": "1.3.0",
"@rsdoctor/rspack-plugin": "1.2.3",
"@rspack/core": "1.5.7",
"@rspack/dev-server": "1.1.4",
"@types/babel__plugin-transform-runtime": "7.9.5",

View File

@@ -62,7 +62,7 @@ export class HaColorTempSelector extends LitElement {
"--ha-slider-background": `linear-gradient( to var(--float-end), ${gradient})`,
})}
labeled
icon="mdi:thermometer"
icon="hass:thermometer"
.caption=${this.label || ""}
.min=${min}
.max=${max}

View File

@@ -66,9 +66,9 @@ export const getPanelIcon = (panel: PanelInfo): string | null => {
if (!panel.icon) {
switch (panel.component_name) {
case "profile":
return "mdi:account";
return "hass:account";
case "lovelace":
return "mdi:view-dashboard";
return "hass:view-dashboard";
}
}

View File

@@ -110,7 +110,7 @@ class LightRgbColorPicker extends LitElement {
? html`<ha-labeled-slider
labeled
.caption=${this.hass.localize("ui.card.light.color_brightness")}
icon="mdi:brightness-7"
icon="hass:brightness-7"
min="0"
max="100"
.value=${this._colorBrightnessSliderValue}
@@ -122,7 +122,7 @@ class LightRgbColorPicker extends LitElement {
<ha-labeled-slider
labeled
.caption=${this.hass.localize("ui.card.light.white_value")}
icon="mdi:file-word-box"
icon="hass:file-word-box"
min="0"
max="100"
.name=${"wv"}
@@ -136,7 +136,7 @@ class LightRgbColorPicker extends LitElement {
<ha-labeled-slider
labeled
.caption=${this.hass.localize("ui.card.light.cold_white_value")}
icon="mdi:file-word-box-outline"
icon="hass:file-word-box-outline"
min="0"
max="100"
.name=${"cw"}
@@ -146,7 +146,7 @@ class LightRgbColorPicker extends LitElement {
<ha-labeled-slider
labeled
.caption=${this.hass.localize("ui.card.light.warm_white_value")}
icon="mdi:file-word-box"
icon="hass:file-word-box"
min="0"
max="100"
.name=${"ww"}

View File

@@ -60,28 +60,28 @@ export const demoPanels: Panels = {
// Uncomment when we are ready to stub the history API
// history: {
// component_name: "history",
// icon: "mdi:chart-box",
// icon: "hass:poll-box",
// title: "history",
// config: null,
// url_path: "history",
// },
map: {
component_name: "lovelace",
icon: "mdi:tooltip-account",
icon: "hass:tooltip-account",
title: "map",
config: { mode: "storage" },
url_path: "map",
},
energy: {
component_name: "energy",
icon: "mdi:lightning-bolt",
icon: "hass:lightning-bolt",
title: "energy",
config: null,
url_path: "energy",
},
// config: {
// component_name: "config",
// icon: "mdi:cog",
// icon: "hass:cog",
// title: "config",
// config: null,
// url_path: "config",

View File

@@ -283,7 +283,13 @@ export class DialogLovelaceDashboardDetail extends LitElement {
}
this.closeDialog();
} catch (err: any) {
this._error = { base: err?.message || "Unknown error" };
const errorMessage = err?.message;
if (errorMessage.includes(". Got")) {
const splitMessage = errorMessage.split(". Got");
this._error = { base: splitMessage[0] };
} else {
this._error = { base: errorMessage ?? "Unknown error" };
}
} finally {
this._submitting = false;
}

View File

@@ -275,7 +275,7 @@ export class HaConfigLovelaceDashboards extends LitElement {
const isDefault = defaultUrlPath === "lovelace";
const result: DataTableItem[] = [
{
icon: "mdi:view-dashboard",
icon: "hass:view-dashboard",
title: this.hass.localize("panel.states"),
default: isDefault,
show_in_sidebar: isDefault,
@@ -288,7 +288,7 @@ export class HaConfigLovelaceDashboards extends LitElement {
];
if (isComponentLoaded(this.hass, "energy")) {
result.push({
icon: "mdi:lightning-bolt",
icon: "hass:lightning-bolt",
title: this.hass.localize(`ui.panel.config.dashboard.energy.main`),
show_in_sidebar: true,
mode: "storage",

View File

@@ -1,17 +1,23 @@
import { html, LitElement, nothing } from "lit";
import { css, html, LitElement, nothing } from "lit";
import { customElement, property, state } from "lit/decorators";
import { classMap } from "lit/directives/class-map";
import { ifDefined } from "lit/directives/if-defined";
import { styleMap } from "lit/directives/style-map";
import { computeCssColor } from "../../../common/color/compute-color";
import { computeDomain } from "../../../common/entity/compute_domain";
import { generateEntityFilter } from "../../../common/entity/entity_filter";
import { formatNumber } from "../../../common/number/format_number";
import "../../../components/ha-card";
import "../../../components/ha-icon";
import "../../../components/ha-ripple";
import "../../../components/tile/ha-tile-icon";
import "../../../components/tile/ha-tile-info";
import type { ActionHandlerEvent } from "../../../data/lovelace/action_handler";
import "../../../state-display/state-display";
import type { HomeAssistant } from "../../../types";
import { actionHandler } from "../common/directives/action-handler-directive";
import { handleAction } from "../common/handle-action";
import { hasAction } from "../common/has-action";
import "../components/hui-tile";
import {
findEntities,
getSummaryLabel,
@@ -223,32 +229,140 @@ export class HuiHomeSummaryCard extends LitElement implements LovelaceCard {
return nothing;
}
const label = getSummaryLabel(this.hass.localize, this._config.summary);
const icon = HOME_SUMMARIES_ICONS[this._config.summary];
const contentClasses = { vertical: Boolean(this._config.vertical) };
const color = computeCssColor(COLORS[this._config.summary]);
const style = {
"--tile-color": color,
};
const secondary = this._computeSummaryState();
const label = getSummaryLabel(this.hass.localize, this._config.summary);
const icon = HOME_SUMMARIES_ICONS[this._config.summary];
return html`
<hui-tile
name=${label}
?vertical=${this._config.vertical}
color=${color}
.hasCardAction=${this._hasCardAction}
.onAction=${this._handleAction}
.tapAction=${this._config.tap_action}
.holdAction=${this._config.hold_action}
.doubleTapAction=${this._config.double_tap_action}
>
<ha-tile-icon slot="icon">
<ha-icon slot="icon" .icon=${icon}></ha-icon>
</ha-tile-icon>
<ha-tile-info slot="info" id="info">
<span slot="primary" class="primary">${label}</span>
<span slot="secondary">${secondary}</span>
</ha-tile-info>
</hui-tile>
<ha-card style=${styleMap(style)}>
<div
class="background"
@action=${this._handleAction}
.actionHandler=${actionHandler({
hasHold: hasAction(this._config!.hold_action),
hasDoubleClick: hasAction(this._config!.double_tap_action),
})}
role=${ifDefined(this._hasCardAction ? "button" : undefined)}
tabindex=${ifDefined(this._hasCardAction ? "0" : undefined)}
aria-labelledby="info"
>
<ha-ripple .disabled=${!this._hasCardAction}></ha-ripple>
</div>
<div class="container">
<div class="content ${classMap(contentClasses)}">
<ha-tile-icon>
<ha-icon slot="icon" .icon=${icon}></ha-icon>
</ha-tile-icon>
<ha-tile-info
id="info"
.primary=${label}
.secondary=${secondary}
></ha-tile-info>
</div>
</div>
</ha-card>
`;
}
static styles = css`
:host {
--tile-color: var(--state-inactive-color);
-webkit-tap-highlight-color: transparent;
}
ha-card:has(.background:focus-visible) {
--shadow-default: var(--ha-card-box-shadow, 0 0 0 0 transparent);
--shadow-focus: 0 0 0 1px var(--tile-color);
border-color: var(--tile-color);
box-shadow: var(--shadow-default), var(--shadow-focus);
}
ha-card {
--ha-ripple-color: var(--tile-color);
--ha-ripple-hover-opacity: 0.04;
--ha-ripple-pressed-opacity: 0.12;
height: 100%;
transition:
box-shadow 180ms ease-in-out,
border-color 180ms ease-in-out;
display: flex;
flex-direction: column;
justify-content: space-between;
}
ha-card.active {
--tile-color: var(--state-icon-color);
}
[role="button"] {
cursor: pointer;
pointer-events: auto;
}
[role="button"]:focus {
outline: none;
}
.background {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
border-radius: var(--ha-card-border-radius, 12px);
margin: calc(-1 * var(--ha-card-border-width, 1px));
overflow: hidden;
}
.container {
margin: calc(-1 * var(--ha-card-border-width, 1px));
display: flex;
flex-direction: column;
flex: 1;
}
.container.horizontal {
flex-direction: row;
}
.content {
position: relative;
display: flex;
flex-direction: row;
align-items: center;
padding: 10px;
flex: 1;
min-width: 0;
box-sizing: border-box;
pointer-events: none;
gap: 10px;
}
.vertical {
flex-direction: column;
text-align: center;
justify-content: center;
}
.vertical ha-tile-info {
width: 100%;
flex: none;
}
ha-tile-icon {
--tile-icon-color: var(--tile-color);
position: relative;
padding: 6px;
margin: -6px;
}
ha-tile-info {
position: relative;
min-width: 0;
transition: background-color 180ms ease-in-out;
box-sizing: border-box;
}
`;
}
declare global {

View File

@@ -3,6 +3,7 @@ import { LitElement, css, html, nothing } from "lit";
import { customElement, property, state } from "lit/decorators";
import { classMap } from "lit/directives/class-map";
import { ifDefined } from "lit/directives/if-defined";
import { styleMap } from "lit/directives/style-map";
import memoizeOne from "memoize-one";
import { computeCssColor } from "../../../common/color/compute-color";
import { hsv2rgb, rgb2hex, rgb2hsv } from "../../../common/color/convert-color";
@@ -11,15 +12,24 @@ import { computeDomain } from "../../../common/entity/compute_domain";
import { computeStateName } from "../../../common/entity/compute_state_name";
import { stateActive } from "../../../common/entity/state_active";
import { stateColorCss } from "../../../common/entity/state_color";
import "../../../components/ha-card";
import "../../../components/ha-ripple";
import "../../../components/ha-state-icon";
import "../../../components/ha-svg-icon";
import "../../../components/tile/ha-tile-badge";
import "../../../components/tile/ha-tile-icon";
import "../../../components/tile/ha-tile-info";
import { cameraUrlWithWidthHeight } from "../../../data/camera";
import type { ActionHandlerEvent } from "../../../data/lovelace/action_handler";
import "../../../state-display/state-display";
import type { HomeAssistant } from "../../../types";
import "../card-features/hui-card-features";
import type { LovelaceCardFeatureContext } from "../card-features/types";
import { actionHandler } from "../common/directives/action-handler-directive";
import { findEntities } from "../common/find-entities";
import { handleAction } from "../common/handle-action";
import { hasAction } from "../common/has-action";
import { createEntityNotFoundWarning } from "../components/hui-warning";
import "../components/hui-tile";
import type {
LovelaceCard,
LovelaceCardEditor,
@@ -27,7 +37,6 @@ import type {
} from "../types";
import { renderTileBadge } from "./tile/badges/tile-badge";
import type { TileCardConfig } from "./types";
import { actionHandler } from "../common/directives/action-handler-directive";
export const getEntityDefaultTileIconAction = (entityId: string) => {
const domain = computeDomain(entityId);
@@ -244,7 +253,10 @@ export class HuiTileCard extends LitElement implements LovelaceCard {
`;
}
const contentClasses = { vertical: Boolean(this._config.vertical) };
const name = this._config.name || computeStateName(stateObj);
const active = stateActive(stateObj);
const color = this._computeStateColor(stateObj, this._config.color);
const domain = computeDomain(stateObj.entity_id);
@@ -260,69 +272,162 @@ export class HuiTileCard extends LitElement implements LovelaceCard {
</state-display>
`;
const style = {
"--tile-color": color,
};
const imageUrl = this._config.show_entity_picture
? this._getImageUrl(stateObj)
: undefined;
const featurePosition = this._featurePosition(this._config);
const features = this._displayedFeatures(this._config);
const containerOrientationClass =
featurePosition === "inline" ? "horizontal" : "";
return html`
<hui-tile
?vertical=${this._config.vertical}
color=${ifDefined(color)}
.hasCardAction=${this._hasCardAction}
.hasIconAction=${this._hasIconAction}
.onAction=${this._handleAction}
.tapAction=${this._config.tap_action}
.holdAction=${this._config.hold_action}
.doubleTapAction=${this._config.double_tap_action}
.featurePosition=${this._featurePosition(this._config)}
>
<ha-tile-icon
slot="icon"
role=${ifDefined(this._hasIconAction ? "button" : undefined)}
tabindex=${ifDefined(this._hasIconAction ? "0" : undefined)}
@action=${this._handleIconAction}
<ha-card style=${styleMap(style)} class=${classMap({ active })}>
<div
class="background"
@action=${this._handleAction}
.actionHandler=${actionHandler({
hasHold: hasAction(this._config!.icon_hold_action),
hasDoubleClick: hasAction(this._config!.icon_double_tap_action),
hasHold: hasAction(this._config!.hold_action),
hasDoubleClick: hasAction(this._config!.double_tap_action),
})}
.interactive=${this._hasIconAction}
.imageUrl=${imageUrl}
data-domain=${ifDefined(domain)}
data-state=${ifDefined(stateObj?.state)}
class=${classMap({ image: Boolean(imageUrl) })}
role=${ifDefined(this._hasCardAction ? "button" : undefined)}
tabindex=${ifDefined(this._hasCardAction ? "0" : undefined)}
aria-labelledby="info"
>
<ha-state-icon
slot="icon"
.icon=${this._config.icon}
.stateObj=${stateObj}
.hass=${this.hass}
></ha-state-icon>
${renderTileBadge(stateObj, this.hass)}
</ha-tile-icon>
<ha-tile-info slot="info" id="info">
<span slot="primary" class="primary">${name}</span>
${stateDisplay
? html`<span slot="secondary">${stateDisplay}</span>`
: nothing}
</ha-tile-info>
${features.length
? html`
<hui-card-features
slot="features"
<ha-ripple .disabled=${!this._hasCardAction}></ha-ripple>
</div>
<div class="container ${containerOrientationClass}">
<div class="content ${classMap(contentClasses)}">
<ha-tile-icon
role=${ifDefined(this._hasIconAction ? "button" : undefined)}
tabindex=${ifDefined(this._hasIconAction ? "0" : undefined)}
@action=${this._handleIconAction}
.actionHandler=${actionHandler({
hasHold: hasAction(this._config!.icon_hold_action),
hasDoubleClick: hasAction(this._config!.icon_double_tap_action),
})}
.interactive=${this._hasIconAction}
.imageUrl=${imageUrl}
data-domain=${ifDefined(domain)}
data-state=${ifDefined(stateObj?.state)}
class=${classMap({ image: Boolean(imageUrl) })}
>
<ha-state-icon
slot="icon"
.icon=${this._config.icon}
.stateObj=${stateObj}
.hass=${this.hass}
.context=${this._featureContext}
.color=${this._config.color}
.features=${features}
></hui-card-features>
`
: nothing}
</hui-tile>
></ha-state-icon>
${renderTileBadge(stateObj, this.hass)}
</ha-tile-icon>
<ha-tile-info id="info">
<span slot="primary" class="primary">${name}</span>
${stateDisplay
? html`<span slot="secondary">${stateDisplay}</span>`
: nothing}
</ha-tile-info>
</div>
${features.length > 0
? html`
<hui-card-features
.hass=${this.hass}
.context=${this._featureContext}
.color=${this._config.color}
.features=${features}
></hui-card-features>
`
: nothing}
</div>
</ha-card>
`;
}
static styles = css`
:host {
--tile-color: var(--state-inactive-color);
-webkit-tap-highlight-color: transparent;
}
ha-card:has(.background:focus-visible) {
--shadow-default: var(--ha-card-box-shadow, 0 0 0 0 transparent);
--shadow-focus: 0 0 0 1px var(--tile-color);
border-color: var(--tile-color);
box-shadow: var(--shadow-default), var(--shadow-focus);
}
ha-card {
--ha-ripple-color: var(--tile-color);
--ha-ripple-hover-opacity: 0.04;
--ha-ripple-pressed-opacity: 0.12;
height: 100%;
transition:
box-shadow 180ms ease-in-out,
border-color 180ms ease-in-out;
display: flex;
flex-direction: column;
justify-content: space-between;
}
ha-card.active {
--tile-color: var(--state-icon-color);
}
[role="button"] {
cursor: pointer;
pointer-events: auto;
}
[role="button"]:focus {
outline: none;
}
.background {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
border-radius: var(--ha-card-border-radius, 12px);
margin: calc(-1 * var(--ha-card-border-width, 1px));
overflow: hidden;
}
.container {
margin: calc(-1 * var(--ha-card-border-width, 1px));
display: flex;
flex-direction: column;
flex: 1;
}
.container.horizontal {
flex-direction: row;
}
.content {
position: relative;
display: flex;
flex-direction: row;
align-items: center;
padding: 10px;
flex: 1;
min-width: 0;
box-sizing: border-box;
pointer-events: none;
gap: 10px;
}
.vertical {
flex-direction: column;
text-align: center;
justify-content: center;
}
.vertical ha-tile-info {
width: 100%;
flex: none;
}
ha-tile-icon {
--tile-icon-color: var(--tile-color);
position: relative;
padding: 6px;
margin: -6px;
}
ha-tile-badge {
position: absolute;
top: 3px;
@@ -330,6 +435,23 @@ export class HuiTileCard extends LitElement implements LovelaceCard {
inset-inline-end: 3px;
inset-inline-start: initial;
}
ha-tile-info {
position: relative;
min-width: 0;
transition: background-color 180ms ease-in-out;
box-sizing: border-box;
}
hui-card-features {
--feature-color: var(--tile-color);
padding: 0 12px 12px 12px;
}
.container.horizontal hui-card-features {
width: calc(50% - var(--column-gap, 0px) / 2 - 12px);
flex: none;
--feature-height: 36px;
padding: 0 12px;
padding-inline-start: 0;
}
ha-tile-icon[data-domain="alarm_control_panel"][data-state="pending"],
ha-tile-icon[data-domain="alarm_control_panel"][data-state="arming"],

View File

@@ -1,181 +0,0 @@
import { LitElement, css, html } from "lit";
import { customElement, property } from "lit/decorators";
import { classMap } from "lit/directives/class-map";
import { ifDefined } from "lit/directives/if-defined";
import { styleMap } from "lit/directives/style-map";
import "../../../components/ha-card";
import "../../../components/ha-ripple";
import type { ActionHandlerEvent } from "../../../data/lovelace/action_handler";
import { actionHandler } from "../common/directives/action-handler-directive";
import { hasAction } from "../common/has-action";
import type { LovelaceCardFeaturePosition } from "../card-features/types";
@customElement("hui-tile")
export class HuiTile extends LitElement {
@property({ type: Boolean }) public vertical = false;
@property() public color?: string;
@property({ attribute: false, type: Boolean }) public hasCardAction = false;
@property({ attribute: false, type: Boolean }) public hasIconAction = false;
@property({ attribute: false }) public onAction?: (
ev: ActionHandlerEvent
) => void;
@property({ attribute: false }) public tapAction?: any;
@property({ attribute: false }) public holdAction?: any;
@property({ attribute: false }) public doubleTapAction?: any;
@property({ attribute: false })
public featurePosition?: LovelaceCardFeaturePosition;
private _handleAction(ev: ActionHandlerEvent) {
this.onAction?.(ev);
}
protected render() {
const contentClasses = { vertical: Boolean(this.vertical) };
const style = {
"--tile-color": this.color,
};
const containerOrientationClass =
this.featurePosition === "inline" ? "horizontal" : "";
return html`
<ha-card style=${styleMap(style)}>
<div
class="background"
@action=${this._handleAction}
.actionHandler=${actionHandler({
hasHold: hasAction(this.holdAction),
hasDoubleClick: hasAction(this.doubleTapAction),
})}
role=${ifDefined(this.hasCardAction ? "button" : undefined)}
tabindex=${ifDefined(this.hasCardAction ? "0" : undefined)}
aria-labelledby="info"
>
<ha-ripple .disabled=${!this.hasCardAction}></ha-ripple>
</div>
<div class="container ${containerOrientationClass}">
<div class="content ${classMap(contentClasses)}">
<slot name="icon"></slot>
<slot name="info"></slot>
</div>
<slot name="features"></slot>
</div>
</ha-card>
`;
}
static styles = css`
:host {
--tile-color: var(--state-inactive-color);
-webkit-tap-highlight-color: transparent;
}
ha-card:has(.background:focus-visible) {
--shadow-default: var(--ha-card-box-shadow, 0 0 0 0 transparent);
--shadow-focus: 0 0 0 1px var(--tile-color);
border-color: var(--tile-color);
box-shadow: var(--shadow-default), var(--shadow-focus);
}
ha-card {
--ha-ripple-color: var(--tile-color);
--ha-ripple-hover-opacity: 0.04;
--ha-ripple-pressed-opacity: 0.12;
height: 100%;
transition:
box-shadow 180ms ease-in-out,
border-color 180ms ease-in-out;
display: flex;
flex-direction: column;
justify-content: space-between;
}
ha-card.active {
--tile-color: var(--state-icon-color);
}
[role="button"] {
cursor: pointer;
pointer-events: auto;
}
[role="button"]:focus {
outline: none;
}
.background {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
border-radius: var(--ha-card-border-radius, 12px);
margin: calc(-1 * var(--ha-card-border-width, 1px));
overflow: hidden;
}
.container {
margin: calc(-1 * var(--ha-card-border-width, 1px));
display: flex;
flex-direction: column;
flex: 1;
}
.container.horizontal {
flex-direction: row;
}
.content {
position: relative;
display: flex;
flex-direction: row;
align-items: center;
padding: 10px;
flex: 1;
min-width: 0;
box-sizing: border-box;
pointer-events: none;
gap: 10px;
}
.vertical {
flex-direction: column;
text-align: center;
justify-content: center;
}
.vertical ::slotted(ha-tile-info) {
width: 100%;
flex: none;
}
::slotted(ha-tile-icon) {
--tile-icon-color: var(--tile-color);
position: relative;
padding: 6px;
margin: -6px;
}
::slotted(ha-tile-info) {
position: relative;
min-width: 0;
transition: background-color 180ms ease-in-out;
box-sizing: border-box;
}
::slotted(features) {
--feature-color: var(--tile-color);
padding: 0 12px 12px 12px;
}
.container.horizontal ::slotted(hui-card-features) {
width: calc(50% - var(--column-gap, 0px) / 2 - 12px);
flex: none;
--feature-height: 36px;
padding: 0 12px;
padding-inline-start: 0;
}
`;
}
declare global {
interface HTMLElementTagNameMap {
"hui-tile": HuiTile;
}
}

View File

@@ -17,7 +17,7 @@ class HuiWeblinkRow extends LitElement implements LovelaceRow {
}
this._config = {
icon: "mdi:link",
icon: "hass:link",
name: config.url,
...config,
};

465
yarn.lock
View File

@@ -1217,15 +1217,15 @@ __metadata:
languageName: node
linkType: hard
"@codemirror/autocomplete@npm:6.19.0":
version: 6.19.0
resolution: "@codemirror/autocomplete@npm:6.19.0"
"@codemirror/autocomplete@npm:6.18.7":
version: 6.18.7
resolution: "@codemirror/autocomplete@npm:6.18.7"
dependencies:
"@codemirror/language": "npm:^6.0.0"
"@codemirror/state": "npm:^6.0.0"
"@codemirror/view": "npm:^6.17.0"
"@lezer/common": "npm:^1.0.0"
checksum: 10/791def23bcf5cc278e821a15462f73233b74c2c40db52a95c41f8b3bff693276e2ebaf0fdac892a44d86a6697a55c352efe3a608ccdf25ee7bbf7ac6cce179ea
checksum: 10/e50e3345d7d33e762d9abd2e6b1ea4ff54afe1630310464a5ddb42cab52fd5bac783ec0dc8a328cb746be6a7f9f711b6fcd8ef311af123511e8307b4c056cb9d
languageName: node
linkType: hard
@@ -3633,6 +3633,13 @@ __metadata:
languageName: node
linkType: hard
"@polka/url@npm:^1.0.0-next.24":
version: 1.0.0-next.29
resolution: "@polka/url@npm:1.0.0-next.29"
checksum: 10/69ca11ab15a4ffec7f0b07fcc4e1f01489b3d9683a7e1867758818386575c60c213401259ba3705b8a812228d17e2bfd18e6f021194d943fff4bca389c9d4f28
languageName: node
linkType: hard
"@polymer/polymer@npm:^3.0.0":
version: 3.5.2
resolution: "@polymer/polymer@npm:3.5.2"
@@ -3899,86 +3906,115 @@ __metadata:
languageName: node
linkType: hard
"@rsdoctor/client@npm:1.3.0":
"@rsbuild/plugin-check-syntax@npm:1.3.0":
version: 1.3.0
resolution: "@rsdoctor/client@npm:1.3.0"
checksum: 10/dca67aa80613ddd36b7bc43456e15633b632df91c7aca6ab05653b3fbb1d57887ffe9fa3a792a3812efc2e0d2c6f50cec9b5567ed182fd125c675cc9a4fa8ceb
resolution: "@rsbuild/plugin-check-syntax@npm:1.3.0"
dependencies:
acorn: "npm:^8.14.0"
browserslist-to-es-version: "npm:^1.0.0"
htmlparser2: "npm:10.0.0"
picocolors: "npm:^1.1.1"
source-map: "npm:^0.7.4"
peerDependencies:
"@rsbuild/core": 1.x
peerDependenciesMeta:
"@rsbuild/core":
optional: true
checksum: 10/8fc3729ba91324b936cb46eaeaf6dcc2d8b45d7d00f821af3fed3c14cb38e9174d61f199236658be3ef1046231d80ecc506404f577acc0c057f94711bf10d9da
languageName: node
linkType: hard
"@rsdoctor/core@npm:1.3.0":
version: 1.3.0
resolution: "@rsdoctor/core@npm:1.3.0"
"@rsdoctor/client@npm:1.2.3":
version: 1.2.3
resolution: "@rsdoctor/client@npm:1.2.3"
checksum: 10/4e02c72ded9f7cfa5dc9e224513d4f0cb4d36908fbd62353170148516ad742cd4c9573e2ee90b335d243f8c56f33b2bbd0cc51a3b65000f1a166c2b4c8dd9bd7
languageName: node
linkType: hard
"@rsdoctor/core@npm:1.2.3":
version: 1.2.3
resolution: "@rsdoctor/core@npm:1.2.3"
dependencies:
"@rsdoctor/graph": "npm:1.3.0"
"@rsdoctor/sdk": "npm:1.3.0"
"@rsdoctor/types": "npm:1.3.0"
"@rsdoctor/utils": "npm:1.3.0"
browserslist-load-config: "npm:^1.0.1"
"@rsbuild/plugin-check-syntax": "npm:1.3.0"
"@rsdoctor/graph": "npm:1.2.3"
"@rsdoctor/sdk": "npm:1.2.3"
"@rsdoctor/types": "npm:1.2.3"
"@rsdoctor/utils": "npm:1.2.3"
axios: "npm:^1.11.0"
browserslist-load-config: "npm:^1.0.0"
enhanced-resolve: "npm:5.12.0"
filesize: "npm:^10.1.6"
fs-extra: "npm:^11.1.1"
lodash-es: "npm:^4.17.21"
semver: "npm:^7.7.2"
source-map: "npm:^0.7.6"
checksum: 10/e990358b82a260242a27af9d93fa6f673c68fb0896b74888aa121b4060069e8b47079f929403a237a532da65f4566d6bfb1d824dae2266735e44294d2521b1e6
languageName: node
linkType: hard
"@rsdoctor/graph@npm:1.3.0":
version: 1.3.0
resolution: "@rsdoctor/graph@npm:1.3.0"
dependencies:
"@rsdoctor/types": "npm:1.3.0"
"@rsdoctor/utils": "npm:1.3.0"
lodash.unionby: "npm:^4.8.0"
lodash: "npm:^4.17.21"
path-browserify: "npm:1.0.1"
source-map: "npm:^0.7.6"
checksum: 10/64dd610819fd38beb0bb96cf7f2b85c47d2b40134150a8f07e71bc94ae1ad38b7be23a453b42d3692303f1c7b07c3f7ec78bca6b7e8b7f41c961e8b7dc479495
semver: "npm:^7.7.2"
source-map: "npm:^0.7.4"
checksum: 10/45c39b966fb879f8770ced60d47d16b42098fc6642064bc528c6b1a9cd0724210b0af5f17f031ae9738884c75b034ea402f34f3d2737e608ce3ebef08fb6909c
languageName: node
linkType: hard
"@rsdoctor/rspack-plugin@npm:1.3.0":
version: 1.3.0
resolution: "@rsdoctor/rspack-plugin@npm:1.3.0"
"@rsdoctor/graph@npm:1.2.3":
version: 1.2.3
resolution: "@rsdoctor/graph@npm:1.2.3"
dependencies:
"@rsdoctor/core": "npm:1.3.0"
"@rsdoctor/graph": "npm:1.3.0"
"@rsdoctor/sdk": "npm:1.3.0"
"@rsdoctor/types": "npm:1.3.0"
"@rsdoctor/utils": "npm:1.3.0"
lodash-es: "npm:^4.17.21"
"@rsdoctor/types": "npm:1.2.3"
"@rsdoctor/utils": "npm:1.2.3"
lodash.unionby: "npm:^4.8.0"
source-map: "npm:^0.7.4"
checksum: 10/fea12dfdad880f440ea2c3a06c95a92dcbcd78efac6ff03af50c56e40007239b63303ae267ca00e1360e2af559513173cdd0743c7635721cb8ac16e19cda170d
languageName: node
linkType: hard
"@rsdoctor/rspack-plugin@npm:1.2.3":
version: 1.2.3
resolution: "@rsdoctor/rspack-plugin@npm:1.2.3"
dependencies:
"@rsdoctor/core": "npm:1.2.3"
"@rsdoctor/graph": "npm:1.2.3"
"@rsdoctor/sdk": "npm:1.2.3"
"@rsdoctor/types": "npm:1.2.3"
"@rsdoctor/utils": "npm:1.2.3"
lodash: "npm:^4.17.21"
peerDependencies:
"@rspack/core": "*"
peerDependenciesMeta:
"@rspack/core":
optional: true
checksum: 10/8f9126f6ed8c0bc350e899da5a9104cbf74808ac51a98a0f6a95fddf6dfdcbfb9b338c696095c9b7960bbc378947e90895bdf531da959426f47f3d00e5402409
checksum: 10/59abb902046fb791a754e02b0eff5e1674417cfc3f6556d164fc6bed0af0eb0aa52bc087c0b0e8d1c42659d4cbaffd497550376799cbedbae4f4f76882b26924
languageName: node
linkType: hard
"@rsdoctor/sdk@npm:1.3.0":
version: 1.3.0
resolution: "@rsdoctor/sdk@npm:1.3.0"
"@rsdoctor/sdk@npm:1.2.3":
version: 1.2.3
resolution: "@rsdoctor/sdk@npm:1.2.3"
dependencies:
"@rsdoctor/client": "npm:1.3.0"
"@rsdoctor/graph": "npm:1.3.0"
"@rsdoctor/types": "npm:1.3.0"
"@rsdoctor/utils": "npm:1.3.0"
safer-buffer: "npm:2.1.2"
"@rsdoctor/client": "npm:1.2.3"
"@rsdoctor/graph": "npm:1.2.3"
"@rsdoctor/types": "npm:1.2.3"
"@rsdoctor/utils": "npm:1.2.3"
"@types/fs-extra": "npm:^11.0.4"
body-parser: "npm:1.20.3"
cors: "npm:2.8.5"
dayjs: "npm:1.11.13"
fs-extra: "npm:^11.1.1"
json-cycle: "npm:^1.5.0"
open: "npm:^8.4.2"
sirv: "npm:2.0.4"
socket.io: "npm:4.8.1"
tapable: "npm:2.2.3"
checksum: 10/c6183047ce5e7db1240b89c3d3890def9fc7ae2c1dcab8621ee3c0652b174e3facae6358cbd706317ae103af748d41e9c3187a519b082e1d249dcc18a9938a58
source-map: "npm:^0.7.4"
tapable: "npm:2.2.2"
checksum: 10/3d39ff6a4cd074080b517a6daccf480d88b4f75bd0148748b64f5bd074a05e30a1de74c526d1d6e764a7b7763abc83e53e9ac717eb09cf786eb721b411609a5c
languageName: node
linkType: hard
"@rsdoctor/types@npm:1.3.0":
version: 1.3.0
resolution: "@rsdoctor/types@npm:1.3.0"
"@rsdoctor/types@npm:1.2.3":
version: 1.2.3
resolution: "@rsdoctor/types@npm:1.2.3"
dependencies:
"@types/connect": "npm:3.4.38"
"@types/estree": "npm:1.0.5"
"@types/tapable": "npm:2.2.7"
source-map: "npm:^0.7.6"
source-map: "npm:^0.7.4"
peerDependencies:
"@rspack/core": "*"
webpack: 5.x
@@ -3987,30 +4023,32 @@ __metadata:
optional: true
webpack:
optional: true
checksum: 10/bc077915aa616844ee1d58b17ac34250f2174a0f5d2b8c83e2983a4c435855c85ec8317e7d2800ce62dcba225c2b493bca95c6cfa51c4f232a019e3390dd0ca4
checksum: 10/e2971d683ee0b138387e383f7d171c573e97ad2b91a906dc7a2e091a3b17cf83a4d5c921f69de6929d408c1c87cc9b2b409235ad5b02d7b8a15506137b04e568
languageName: node
linkType: hard
"@rsdoctor/utils@npm:1.3.0":
version: 1.3.0
resolution: "@rsdoctor/utils@npm:1.3.0"
"@rsdoctor/utils@npm:1.2.3":
version: 1.2.3
resolution: "@rsdoctor/utils@npm:1.2.3"
dependencies:
"@babel/code-frame": "npm:7.26.2"
"@rsdoctor/types": "npm:1.3.0"
"@rsdoctor/types": "npm:1.2.3"
"@types/estree": "npm:1.0.5"
acorn: "npm:^8.10.0"
acorn-import-attributes: "npm:^1.9.5"
acorn-walk: "npm:8.3.4"
connect: "npm:3.7.0"
deep-eql: "npm:4.1.4"
envinfo: "npm:7.14.0"
filesize: "npm:^10.1.6"
fs-extra: "npm:^11.1.1"
get-port: "npm:5.1.1"
json-stream-stringify: "npm:3.0.1"
lines-and-columns: "npm:2.0.4"
picocolors: "npm:^1.1.1"
rslog: "npm:^1.2.11"
rslog: "npm:^1.2.9"
strip-ansi: "npm:^6.0.1"
checksum: 10/d11ab54328d719542965af87fb843627850e26a48e49378ab4b0b02553cbf37b2ec185caa622f745bc27735738112f29b1d1f00656e8d0a8b4bd23103a320a9a
checksum: 10/4e6bcce13fd81872766e18eea97439d9bd117b2aba275e2a5a9ff7ec4d65c3ad44b8535ee3adcec70d16969865f4a53144dc692af6f66aaacedd656f63b2da57
languageName: node
linkType: hard
@@ -4609,6 +4647,16 @@ __metadata:
languageName: node
linkType: hard
"@types/fs-extra@npm:^11.0.4":
version: 11.0.4
resolution: "@types/fs-extra@npm:11.0.4"
dependencies:
"@types/jsonfile": "npm:*"
"@types/node": "npm:*"
checksum: 10/acc4c1eb0cde7b1f23f3fe6eb080a14832d8fa9dc1761aa444c5e2f0f6b6fa657ed46ebae32fb580a6700fc921b6165ce8ac3e3ba030c3dd15f10ad4dd4cae98
languageName: node
linkType: hard
"@types/geojson@npm:*":
version: 7946.0.16
resolution: "@types/geojson@npm:7946.0.16"
@@ -4674,6 +4722,15 @@ __metadata:
languageName: node
linkType: hard
"@types/jsonfile@npm:*":
version: 6.1.4
resolution: "@types/jsonfile@npm:6.1.4"
dependencies:
"@types/node": "npm:*"
checksum: 10/309fda20eb5f1cf68f2df28931afdf189c5e7e6bec64ac783ce737bb98908d57f6f58757ad5da9be37b815645a6f914e2d4f3ac66c574b8fe1ba6616284d0e97
languageName: node
linkType: hard
"@types/leaflet-draw@npm:1.0.13":
version: 1.0.13
resolution: "@types/leaflet-draw@npm:1.0.13"
@@ -5586,7 +5643,7 @@ __metadata:
languageName: node
linkType: hard
"acorn@npm:^8.10.0, acorn@npm:^8.11.0, acorn@npm:^8.15.0, acorn@npm:^8.5.0":
"acorn@npm:^8.10.0, acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.15.0, acorn@npm:^8.5.0":
version: 8.15.0
resolution: "acorn@npm:8.15.0"
bin:
@@ -6006,6 +6063,13 @@ __metadata:
languageName: node
linkType: hard
"asynckit@npm:^0.4.0":
version: 0.4.0
resolution: "asynckit@npm:0.4.0"
checksum: 10/3ce727cbc78f69d6a4722517a58ee926c8c21083633b1d3fdf66fd688f6c127a53a592141bd4866f9b63240a86e9d8e974b13919450bd17fa33c2d22c4558ad8
languageName: node
linkType: hard
"at-least-node@npm:^1.0.0":
version: 1.0.0
resolution: "at-least-node@npm:1.0.0"
@@ -6029,6 +6093,17 @@ __metadata:
languageName: node
linkType: hard
"axios@npm:^1.11.0":
version: 1.12.2
resolution: "axios@npm:1.12.2"
dependencies:
follow-redirects: "npm:^1.15.6"
form-data: "npm:^4.0.4"
proxy-from-env: "npm:^1.1.0"
checksum: 10/886a79770594eaad76493fecf90344b567bd956240609b5dcd09bd0afe8d3e6f1ad6d3257a93a483b6192b409d4b673d9515a34619e3e3ed1b2c0ec2a83b20ba
languageName: node
linkType: hard
"b4a@npm:^1.6.4":
version: 1.7.1
resolution: "b4a@npm:1.7.1"
@@ -6293,13 +6368,22 @@ __metadata:
languageName: node
linkType: hard
"browserslist-load-config@npm:^1.0.1":
"browserslist-load-config@npm:^1.0.0":
version: 1.0.1
resolution: "browserslist-load-config@npm:1.0.1"
checksum: 10/872d2978d2546eb02920b7124d8269e10b3a8d26c1426f1ca844c0d4db53929789d1df5acd0b322b464af18264b58d0f3038a54656fe160c6dc1ab18b2d9491f
languageName: node
linkType: hard
"browserslist-to-es-version@npm:^1.0.0":
version: 1.1.1
resolution: "browserslist-to-es-version@npm:1.1.1"
dependencies:
browserslist: "npm:^4.25.1"
checksum: 10/efce2f27e67bda030ee3957f6df5aaa8594ee5cf017d3567f1226f6abcea7c3840c1ba73105b6bd661c5f57339e44c6819804609e1f064cfdfb8d53894a9f777
languageName: node
linkType: hard
"browserslist-useragent-regexp@npm:4.1.3":
version: 4.1.3
resolution: "browserslist-useragent-regexp@npm:4.1.3"
@@ -6318,7 +6402,7 @@ __metadata:
languageName: node
linkType: hard
"browserslist@npm:^4.24.0, browserslist@npm:^4.25.3":
"browserslist@npm:^4.24.0, browserslist@npm:^4.25.1, browserslist@npm:^4.25.3":
version: 4.26.2
resolution: "browserslist@npm:4.26.2"
dependencies:
@@ -6750,6 +6834,15 @@ __metadata:
languageName: node
linkType: hard
"combined-stream@npm:^1.0.8":
version: 1.0.8
resolution: "combined-stream@npm:1.0.8"
dependencies:
delayed-stream: "npm:~1.0.0"
checksum: 10/2e969e637d05d09fa50b02d74c83a1186f6914aae89e6653b62595cc75a221464f884f55f231b8f4df7a49537fba60bdc0427acd2bf324c09a1dbb84837e36e4
languageName: node
linkType: hard
"comlink@npm:4.4.2":
version: 4.4.2
resolution: "comlink@npm:4.4.2"
@@ -6846,6 +6939,18 @@ __metadata:
languageName: node
linkType: hard
"connect@npm:3.7.0":
version: 3.7.0
resolution: "connect@npm:3.7.0"
dependencies:
debug: "npm:2.6.9"
finalhandler: "npm:1.1.2"
parseurl: "npm:~1.3.3"
utils-merge: "npm:1.0.1"
checksum: 10/f94818b198cc662092276ef6757dd825c59c8469c8064583525e7b81d39a3af86a01c7cb76107dfa0295dfc52b27a7ae1c40ea0e0a10189c3f8776cf08ce3a4e
languageName: node
linkType: hard
"consola@npm:^3.2.3":
version: 3.4.2
resolution: "consola@npm:3.4.2"
@@ -6937,7 +7042,7 @@ __metadata:
languageName: node
linkType: hard
"cors@npm:~2.8.5":
"cors@npm:2.8.5, cors@npm:~2.8.5":
version: 2.8.5
resolution: "cors@npm:2.8.5"
dependencies:
@@ -7071,6 +7176,13 @@ __metadata:
languageName: node
linkType: hard
"dayjs@npm:1.11.13":
version: 1.11.13
resolution: "dayjs@npm:1.11.13"
checksum: 10/7374d63ab179b8d909a95e74790def25c8986e329ae989840bacb8b1888be116d20e1c4eee75a69ea0dfbae13172efc50ef85619d304ee7ca3c01d5878b704f5
languageName: node
linkType: hard
"debug@npm:2.6.9":
version: 2.6.9
resolution: "debug@npm:2.6.9"
@@ -7215,6 +7327,13 @@ __metadata:
languageName: node
linkType: hard
"define-lazy-prop@npm:^2.0.0":
version: 2.0.0
resolution: "define-lazy-prop@npm:2.0.0"
checksum: 10/0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2
languageName: node
linkType: hard
"define-lazy-prop@npm:^3.0.0":
version: 3.0.0
resolution: "define-lazy-prop@npm:3.0.0"
@@ -7248,6 +7367,13 @@ __metadata:
languageName: node
linkType: hard
"delayed-stream@npm:~1.0.0":
version: 1.0.0
resolution: "delayed-stream@npm:1.0.0"
checksum: 10/46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020
languageName: node
linkType: hard
"depd@npm:2.0.0":
version: 2.0.0
resolution: "depd@npm:2.0.0"
@@ -7347,6 +7473,17 @@ __metadata:
languageName: node
linkType: hard
"dom-serializer@npm:^2.0.0":
version: 2.0.0
resolution: "dom-serializer@npm:2.0.0"
dependencies:
domelementtype: "npm:^2.3.0"
domhandler: "npm:^5.0.2"
entities: "npm:^4.2.0"
checksum: 10/e3bf9027a64450bca0a72297ecdc1e3abb7a2912268a9f3f5d33a2e29c1e2c3502c6e9f860fc6625940bfe0cfb57a44953262b9e94df76872fdfb8151097eeb3
languageName: node
linkType: hard
"dom5@npm:^3.0.1":
version: 3.0.1
resolution: "dom5@npm:3.0.1"
@@ -7358,6 +7495,33 @@ __metadata:
languageName: node
linkType: hard
"domelementtype@npm:^2.3.0":
version: 2.3.0
resolution: "domelementtype@npm:2.3.0"
checksum: 10/ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6
languageName: node
linkType: hard
"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3":
version: 5.0.3
resolution: "domhandler@npm:5.0.3"
dependencies:
domelementtype: "npm:^2.3.0"
checksum: 10/809b805a50a9c6884a29f38aec0a4e1b4537f40e1c861950ed47d10b049febe6b79ab72adaeeebb3cc8fc1cd33f34e97048a72a9265103426d93efafa78d3e96
languageName: node
linkType: hard
"domutils@npm:^3.2.1":
version: 3.2.2
resolution: "domutils@npm:3.2.2"
dependencies:
dom-serializer: "npm:^2.0.0"
domelementtype: "npm:^2.3.0"
domhandler: "npm:^5.0.3"
checksum: 10/2e08842151aa406f50fe5e6d494f4ec73c2373199fa00d1f77b56ec604e566b7f226312ae35ab8160bb7f27a27c7285d574c8044779053e499282ca9198be210
languageName: node
linkType: hard
"dot-case@npm:^3.0.4":
version: 3.0.4
resolution: "dot-case@npm:3.0.4"
@@ -7528,6 +7692,16 @@ __metadata:
languageName: node
linkType: hard
"enhanced-resolve@npm:5.12.0":
version: 5.12.0
resolution: "enhanced-resolve@npm:5.12.0"
dependencies:
graceful-fs: "npm:^4.2.4"
tapable: "npm:^2.2.0"
checksum: 10/ea5b49a0641827c6a083eaa3a625f953f4bd4e8f015bf70b9fb8cf60a35aaeb44e567df2da91ed28efaea3882845016e1d22a3152c2fdf773ea14f39cbe3d8a9
languageName: node
linkType: hard
"enhanced-resolve@npm:^0.9.1":
version: 0.9.1
resolution: "enhanced-resolve@npm:0.9.1"
@@ -7539,7 +7713,7 @@ __metadata:
languageName: node
linkType: hard
"entities@npm:^4.4.0":
"entities@npm:^4.2.0, entities@npm:^4.4.0":
version: 4.5.0
resolution: "entities@npm:4.5.0"
checksum: 10/ede2a35c9bce1aeccd055a1b445d41c75a14a2bb1cd22e242f20cf04d236cdcd7f9c859eb83f76885327bfae0c25bf03303665ee1ce3d47c5927b98b0e3e3d48
@@ -8441,6 +8615,21 @@ __metadata:
languageName: node
linkType: hard
"finalhandler@npm:1.1.2":
version: 1.1.2
resolution: "finalhandler@npm:1.1.2"
dependencies:
debug: "npm:2.6.9"
encodeurl: "npm:~1.0.2"
escape-html: "npm:~1.0.3"
on-finished: "npm:~2.3.0"
parseurl: "npm:~1.3.3"
statuses: "npm:~1.5.0"
unpipe: "npm:~1.0.0"
checksum: 10/351e99a889abf149eb3edb24568586469feeb3019f5eafb9b31e632a5ad886f12a5595a221508245e6a37da69ae866c9fb411eb541a844238e2c900f63ac1576
languageName: node
linkType: hard
"finalhandler@npm:1.3.1":
version: 1.3.1
resolution: "finalhandler@npm:1.3.1"
@@ -8532,7 +8721,7 @@ __metadata:
languageName: node
linkType: hard
"follow-redirects@npm:^1.0.0":
"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.15.6":
version: 1.15.11
resolution: "follow-redirects@npm:1.15.11"
peerDependenciesMeta:
@@ -8577,6 +8766,19 @@ __metadata:
languageName: node
linkType: hard
"form-data@npm:^4.0.4":
version: 4.0.4
resolution: "form-data@npm:4.0.4"
dependencies:
asynckit: "npm:^0.4.0"
combined-stream: "npm:^1.0.8"
es-set-tostringtag: "npm:^2.1.0"
hasown: "npm:^2.0.2"
mime-types: "npm:^2.1.12"
checksum: 10/a4b62e21932f48702bc468cc26fb276d186e6b07b557e3dd7cc455872bdbb82db7db066844a64ad3cf40eaf3a753c830538183570462d3649fdfd705601cbcfb
languageName: node
linkType: hard
"forwarded@npm:0.2.0":
version: 0.2.0
resolution: "forwarded@npm:0.2.0"
@@ -8969,7 +9171,7 @@ __metadata:
languageName: node
linkType: hard
"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.10, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.8":
"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.10, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.8":
version: 4.2.11
resolution: "graceful-fs@npm:4.2.11"
checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2
@@ -9171,7 +9373,7 @@ __metadata:
"@babel/runtime": "npm:7.28.4"
"@braintree/sanitize-url": "npm:7.1.1"
"@bundle-stats/plugin-webpack-filter": "npm:4.21.3"
"@codemirror/autocomplete": "npm:6.19.0"
"@codemirror/autocomplete": "npm:6.18.7"
"@codemirror/commands": "npm:6.8.1"
"@codemirror/language": "npm:6.11.3"
"@codemirror/legacy-modes": "npm:6.5.1"
@@ -9232,7 +9434,7 @@ __metadata:
"@octokit/plugin-retry": "npm:8.0.1"
"@octokit/rest": "npm:22.0.0"
"@replit/codemirror-indentation-markers": "npm:6.5.3"
"@rsdoctor/rspack-plugin": "npm:1.3.0"
"@rsdoctor/rspack-plugin": "npm:1.2.3"
"@rspack/core": "npm:1.5.7"
"@rspack/dev-server": "npm:1.1.4"
"@swc/helpers": "npm:0.5.17"
@@ -9440,6 +9642,18 @@ __metadata:
languageName: node
linkType: hard
"htmlparser2@npm:10.0.0":
version: 10.0.0
resolution: "htmlparser2@npm:10.0.0"
dependencies:
domelementtype: "npm:^2.3.0"
domhandler: "npm:^5.0.3"
domutils: "npm:^3.2.1"
entities: "npm:^6.0.0"
checksum: 10/768870f0e020dca19dc45df206cb6ac466c5dba6566c8fca4ca880347eed409f9977028d08644ac516bca8628ac9c7ded5a3847dc3ee1c043f049abf9e817154
languageName: node
linkType: hard
"http-cache-semantics@npm:^4.1.1":
version: 4.2.0
resolution: "http-cache-semantics@npm:4.2.0"
@@ -9841,7 +10055,7 @@ __metadata:
languageName: node
linkType: hard
"is-docker@npm:^2.0.0":
"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1":
version: 2.2.1
resolution: "is-docker@npm:2.2.1"
bin:
@@ -10433,6 +10647,13 @@ __metadata:
languageName: node
linkType: hard
"json-cycle@npm:^1.5.0":
version: 1.5.0
resolution: "json-cycle@npm:1.5.0"
checksum: 10/4ce7594eb8f42e820c708ceaed12759168c4d29f91e0f8e213909331f7fd12b765a3b9c4a5e8f0e72bc25d5ed2a380211ff3ec95c3ba1cbb2cb5c68ea396ae9f
languageName: node
linkType: hard
"json-schema-traverse@npm:^0.4.1":
version: 0.4.1
resolution: "json-schema-traverse@npm:0.4.1"
@@ -10757,13 +10978,6 @@ __metadata:
languageName: node
linkType: hard
"lodash-es@npm:^4.17.21":
version: 4.17.21
resolution: "lodash-es@npm:4.17.21"
checksum: 10/03f39878ea1e42b3199bd3f478150ab723f93cc8730ad86fec1f2804f4a07c6e30deaac73cad53a88e9c3db33348bb8ceeb274552390e7a75d7849021c02df43
languageName: node
linkType: hard
"lodash._reinterpolate@npm:^3.0.0":
version: 3.0.0
resolution: "lodash._reinterpolate@npm:3.0.0"
@@ -11088,6 +11302,15 @@ __metadata:
languageName: node
linkType: hard
"mime-types@npm:^2.1.12, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34":
version: 2.1.35
resolution: "mime-types@npm:2.1.35"
dependencies:
mime-db: "npm:1.52.0"
checksum: 10/89aa9651b67644035de2784a6e665fc685d79aba61857e02b9c8758da874a754aed4a9aced9265f5ed1171fd934331e5516b84a7f0218031b6fa0270eca1e51a
languageName: node
linkType: hard
"mime-types@npm:^3.0.1":
version: 3.0.1
resolution: "mime-types@npm:3.0.1"
@@ -11097,15 +11320,6 @@ __metadata:
languageName: node
linkType: hard
"mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34":
version: 2.1.35
resolution: "mime-types@npm:2.1.35"
dependencies:
mime-db: "npm:1.52.0"
checksum: 10/89aa9651b67644035de2784a6e665fc685d79aba61857e02b9c8758da874a754aed4a9aced9265f5ed1171fd934331e5516b84a7f0218031b6fa0270eca1e51a
languageName: node
linkType: hard
"mime@npm:1.6.0":
version: 1.6.0
resolution: "mime@npm:1.6.0"
@@ -11262,6 +11476,13 @@ __metadata:
languageName: node
linkType: hard
"mrmime@npm:^2.0.0":
version: 2.0.1
resolution: "mrmime@npm:2.0.1"
checksum: 10/1f966e2c05b7264209c4149ae50e8e830908eb64dd903535196f6ad72681fa109b794007288a3c2814f7a1ecf9ca192769909c0c374d974d604a8de5fc095d4a
languageName: node
linkType: hard
"ms@npm:2.0.0":
version: 2.0.0
resolution: "ms@npm:2.0.0"
@@ -11612,6 +11833,15 @@ __metadata:
languageName: node
linkType: hard
"on-finished@npm:~2.3.0":
version: 2.3.0
resolution: "on-finished@npm:2.3.0"
dependencies:
ee-first: "npm:1.1.1"
checksum: 10/1db595bd963b0124d6fa261d18320422407b8f01dc65863840f3ddaaf7bcad5b28ff6847286703ca53f4ec19595bd67a2f1253db79fc4094911ec6aa8df1671b
languageName: node
linkType: hard
"on-headers@npm:~1.1.0":
version: 1.1.0
resolution: "on-headers@npm:1.1.0"
@@ -11658,6 +11888,17 @@ __metadata:
languageName: node
linkType: hard
"open@npm:^8.4.2":
version: 8.4.2
resolution: "open@npm:8.4.2"
dependencies:
define-lazy-prop: "npm:^2.0.0"
is-docker: "npm:^2.1.1"
is-wsl: "npm:^2.2.0"
checksum: 10/acd81a1d19879c818acb3af2d2e8e9d81d17b5367561e623248133deb7dd3aefaed527531df2677d3e6aaf0199f84df57b6b2262babff8bf46ea0029aac536c9
languageName: node
linkType: hard
"optionator@npm:^0.9.3":
version: 0.9.4
resolution: "optionator@npm:0.9.4"
@@ -12182,6 +12423,13 @@ __metadata:
languageName: node
linkType: hard
"proxy-from-env@npm:^1.1.0":
version: 1.1.0
resolution: "proxy-from-env@npm:1.1.0"
checksum: 10/f0bb4a87cfd18f77bc2fba23ae49c3b378fb35143af16cc478171c623eebe181678f09439707ad80081d340d1593cd54a33a0113f3ccb3f4bc9451488780ee23
languageName: node
linkType: hard
"punycode@npm:2.3.1, punycode@npm:^2.1.0, punycode@npm:^2.3.1":
version: 2.3.1
resolution: "punycode@npm:2.3.1"
@@ -12756,7 +13004,7 @@ __metadata:
languageName: node
linkType: hard
"rslog@npm:^1.2.11":
"rslog@npm:^1.2.9":
version: 1.2.11
resolution: "rslog@npm:1.2.11"
checksum: 10/218e2e233cfc9944fd7635c3c90bd045abd4c08c54a649e9c44ebc5c06c239f3990fd9d946608f70af5eb69e1ccbf3a0fbd46933c405fae46849af976d55d53e
@@ -12841,7 +13089,7 @@ __metadata:
languageName: node
linkType: hard
"safer-buffer@npm:2.1.2, safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0":
"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0":
version: 2.1.2
resolution: "safer-buffer@npm:2.1.2"
checksum: 10/7eaf7a0cf37cc27b42fb3ef6a9b1df6e93a1c6d98c6c6702b02fe262d5fcbd89db63320793b99b21cb5348097d0a53de81bd5f4e8b86e20cc9412e3f1cfb4e83
@@ -13185,6 +13433,17 @@ __metadata:
languageName: node
linkType: hard
"sirv@npm:2.0.4":
version: 2.0.4
resolution: "sirv@npm:2.0.4"
dependencies:
"@polka/url": "npm:^1.0.0-next.24"
mrmime: "npm:^2.0.0"
totalist: "npm:^3.0.0"
checksum: 10/24f42cf06895017e589c9d16fc3f1c6c07fe8b0dbafce8a8b46322cfba67b7f2498610183954cb0e9d089c8cb60002a7ee7e8bca6a91a0d7042bfbc3473c95c3
languageName: node
linkType: hard
"slash@npm:^5.1.0":
version: 5.1.0
resolution: "slash@npm:5.1.0"
@@ -13328,7 +13587,7 @@ __metadata:
languageName: node
linkType: hard
"source-map@npm:^0.7.6":
"source-map@npm:^0.7.4":
version: 0.7.6
resolution: "source-map@npm:0.7.6"
checksum: 10/c8d2da7c57c14f3fd7568f764b39ad49bbf9dd7632b86df3542b31fed117d4af2fb74a4f886fc06baf7a510fee68e37998efc3080aacdac951c36211dc29a7a3
@@ -13445,7 +13704,7 @@ __metadata:
languageName: node
linkType: hard
"statuses@npm:>= 1.4.0 < 2":
"statuses@npm:>= 1.4.0 < 2, statuses@npm:~1.5.0":
version: 1.5.0
resolution: "statuses@npm:1.5.0"
checksum: 10/c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c
@@ -13799,10 +14058,10 @@ __metadata:
languageName: node
linkType: hard
"tapable@npm:2.2.3, tapable@npm:^2.2.0":
version: 2.2.3
resolution: "tapable@npm:2.2.3"
checksum: 10/15e0472f662e40ea865cee2664163d4809c14369777c6b6dec27e3163dd24f8f3e4f3bf59c629e772402aec9a45e7daf40f9df9606b7304722d3c81f3b49235d
"tapable@npm:2.2.2":
version: 2.2.2
resolution: "tapable@npm:2.2.2"
checksum: 10/065a0dc44aba1b32020faa1c27c719e8f76e5345347515d8494bf158524f36e9f22ad9eaa5b5494f9d5d67bf0640afdd5698505948c46d720b6b7e69d19349a6
languageName: node
linkType: hard
@@ -13813,6 +14072,13 @@ __metadata:
languageName: node
linkType: hard
"tapable@npm:^2.2.0":
version: 2.2.3
resolution: "tapable@npm:2.2.3"
checksum: 10/15e0472f662e40ea865cee2664163d4809c14369777c6b6dec27e3163dd24f8f3e4f3bf59c629e772402aec9a45e7daf40f9df9606b7304722d3c81f3b49235d
languageName: node
linkType: hard
"tar@npm:7.5.1, tar@npm:^7.4.3":
version: 7.5.1
resolution: "tar@npm:7.5.1"
@@ -14094,6 +14360,13 @@ __metadata:
languageName: node
linkType: hard
"totalist@npm:^3.0.0":
version: 3.0.1
resolution: "totalist@npm:3.0.1"
checksum: 10/5132d562cf88ff93fd710770a92f31dbe67cc19b5c6ccae2efc0da327f0954d211bbfd9456389655d726c624f284b4a23112f56d1da931ca7cfabbe1f45e778a
languageName: node
linkType: hard
"tough-cookie@npm:^6.0.0":
version: 6.0.0
resolution: "tough-cookie@npm:6.0.0"