20231208.1 (#18962)

This commit is contained in:
Paul Bottein 2023-12-08 10:36:45 +01:00 committed by GitHub
commit aa38e2d409
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 293 additions and 237 deletions

View File

@ -99,7 +99,7 @@
"@webcomponents/scoped-custom-element-registry": "0.0.9",
"@webcomponents/webcomponentsjs": "2.8.0",
"app-datepicker": "5.1.1",
"chart.js": "4.4.0",
"chart.js": "4.4.1",
"comlink": "4.4.1",
"core-js": "3.33.3",
"cropperjs": "1.6.1",
@ -176,7 +176,7 @@
"@types/js-yaml": "4.0.9",
"@types/leaflet": "1.9.8",
"@types/leaflet-draw": "1.0.11",
"@types/luxon": "3.3.6",
"@types/luxon": "3.3.7",
"@types/mocha": "10.0.6",
"@types/qrcode": "1.5.5",
"@types/serve-handler": "6.1.4",
@ -184,8 +184,8 @@
"@types/tar": "6.1.10",
"@types/ua-parser-js": "0.7.39",
"@types/webspeechapi": "0.0.29",
"@typescript-eslint/eslint-plugin": "6.13.1",
"@typescript-eslint/parser": "6.13.1",
"@typescript-eslint/eslint-plugin": "6.13.2",
"@typescript-eslint/parser": "6.13.2",
"@web/dev-server": "0.1.38",
"@web/dev-server-rollup": "0.4.1",
"babel-loader": "9.1.3",
@ -216,7 +216,7 @@
"husky": "8.0.3",
"instant-mocha": "1.5.2",
"jszip": "3.10.1",
"lint-staged": "15.1.0",
"lint-staged": "15.2.0",
"lit-analyzer": "2.0.1",
"lodash.template": "4.5.0",
"magic-string": "0.30.5",
@ -229,7 +229,7 @@
"rollup": "2.79.1",
"rollup-plugin-string": "3.0.0",
"rollup-plugin-terser": "7.0.2",
"rollup-plugin-visualizer": "5.9.3",
"rollup-plugin-visualizer": "5.10.0",
"serve-handler": "6.1.5",
"sinon": "17.0.1",
"source-map-url": "0.4.1",

View File

@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "home-assistant-frontend"
version = "20231206.0"
version = "20231208.1"
license = {text = "Apache-2.0"}
description = "The Home Assistant frontend"
readme = "README.md"

View File

@ -1,5 +1,6 @@
import { HassConfig, HassEntity } from "home-assistant-js-websocket";
import {
DOMAIN_ATTRIBUTES_FORMATERS,
DOMAIN_ATTRIBUTES_UNITS,
TEMPERATURE_ATTRIBUTES,
} from "../../data/entity_attributes";
@ -14,11 +15,10 @@ import { formatNumber } from "../number/format_number";
import { capitalizeFirstLetter } from "../string/capitalize-first-letter";
import { isDate } from "../string/is_date";
import { isTimestamp } from "../string/is_timestamp";
import { blankBeforePercent } from "../translations/blank_before_percent";
import { blankBeforeUnit } from "../translations/blank_before_unit";
import { LocalizeFunc } from "../translations/localize";
import { computeDomain } from "./compute_domain";
import { computeStateDomain } from "./compute_state_domain";
import { blankBeforeUnit } from "../translations/blank_before_unit";
export const computeAttributeValueDisplay = (
localize: LocalizeFunc,
@ -39,19 +39,18 @@ export const computeAttributeValueDisplay = (
// Number value, return formatted number
if (typeof attributeValue === "number") {
const formattedValue = formatNumber(attributeValue, locale);
const domain = computeStateDomain(stateObj);
const formatter = DOMAIN_ATTRIBUTES_FORMATERS[domain]?.[attribute];
const formattedValue = formatter
? formatter(attributeValue, locale)
: formatNumber(attributeValue, locale);
let unit = DOMAIN_ATTRIBUTES_UNITS[domain]?.[attribute] as
| string
| undefined;
if (domain === "light" && attribute === "brightness") {
const percentage = Math.round((attributeValue / 255) * 100);
return `${percentage}${blankBeforePercent(locale)}%`;
}
if (domain === "weather") {
unit = getWeatherUnit(config, stateObj as WeatherEntity, attribute);
}

View File

@ -10,7 +10,6 @@ import {
ScorableTextItem,
fuzzyFilterSort,
} from "../../common/string/filter/sequence-matching";
import { AreaRegistryEntry } from "../../data/area_registry";
import {
DeviceEntityDisplayLookup,
DeviceRegistryEntry,
@ -102,7 +101,7 @@ export class HaDevicePicker extends LitElement {
private _getDevices = memoizeOne(
(
devices: DeviceRegistryEntry[],
areas: AreaRegistryEntry[],
areas: HomeAssistant["areas"],
entities: EntityRegistryDisplayEntry[],
includeDomains: this["includeDomains"],
excludeDomains: this["excludeDomains"],
@ -133,8 +132,6 @@ export class HaDevicePicker extends LitElement {
deviceEntityLookup = getDeviceEntityDisplayLookup(entities);
}
const areaLookup = areas;
let inputDevices = devices.filter(
(device) => device.id === this.value || !device.disabled_by
);
@ -224,8 +221,8 @@ export class HaDevicePicker extends LitElement {
id: device.id,
name: name,
area:
device.area_id && areaLookup[device.area_id]
? areaLookup[device.area_id].name
device.area_id && areas[device.area_id]
? areas[device.area_id].name
: this.hass.localize("ui.components.device-picker.no_area"),
strings: [name || ""],
};
@ -267,7 +264,7 @@ export class HaDevicePicker extends LitElement {
this._init = true;
const devices = this._getDevices(
Object.values(this.hass.devices),
Object.values(this.hass.areas),
this.hass.areas,
Object.values(this.hass.entities),
this.includeDomains,
this.excludeDomains,

View File

@ -30,9 +30,9 @@ export class HaNumberSelector extends LitElement {
protected willUpdate(changedProps: PropertyValues) {
if (changedProps.has("value")) {
if (this.value !== Number(this._valueStr)) {
if (this._valueStr === "" || this.value !== Number(this._valueStr)) {
this._valueStr =
!this.value || isNaN(this.value) ? "" : this.value.toString();
this.value == null || isNaN(this.value) ? "" : this.value.toString();
}
}
}

View File

@ -1,3 +1,6 @@
import { formatDuration } from "../common/datetime/duration";
import { FrontendLocaleData } from "./translation";
export const STATE_ATTRIBUTES = [
"entity_id",
"assumed_state",
@ -64,6 +67,7 @@ export const DOMAIN_ATTRIBUTES_UNITS = {
color_temp_kelvin: "K",
min_color_temp_kelvin: "K",
max_color_temp_kelvin: "K",
brightness: "%",
},
sun: {
elevation: "°",
@ -74,4 +78,22 @@ export const DOMAIN_ATTRIBUTES_UNITS = {
sensor: {
battery_level: "%",
},
media_player: {
volume_level: "%",
},
} as const satisfies Record<string, Record<string, string>>;
type Formatter = (value: number, locale: FrontendLocaleData) => string;
export const DOMAIN_ATTRIBUTES_FORMATERS: Record<
string,
Record<string, Formatter>
> = {
light: {
brightness: (value) => Math.round((value / 255) * 100).toString(),
},
media_player: {
volume_level: (value) => Math.round(value * 100).toString(),
media_duration: (value) => formatDuration(value.toString(), "s"),
},
};

View File

@ -425,13 +425,6 @@ class DataEntryFlowDialog extends LitElement {
);
}
);
if (this._step?.flow_id) {
await this._unsubDataEntryFlowProgressed;
// fetch flow after we subscribe to the event, so we don't miss the first event
this._processStep(
this._params!.flowConfig.fetchFlow(this.hass, this._step.flow_id)
);
}
}
static get styles(): CSSResultGroup {

View File

@ -26,7 +26,8 @@
width: 100%;
max-width: 400px;
margin: 0 auto;
box-sizing: border-box;
padding: 0 16px;
box-sizing: content-box;
}
.header {
@ -40,12 +41,6 @@
height: 56px;
width: 56px;
}
@media (max-width: 592px) {
.content {
margin: 0 16px;
}
}
</style>
</head>
<body>

View File

@ -22,7 +22,8 @@
.content {
max-width: 560px;
margin: 0 auto;
box-sizing: border-box;
padding: 0 16px;
box-sizing: content-box;
}
.header {
@ -36,12 +37,6 @@
height: 56px;
width: 56px;
}
@media (max-width: 592px) {
.content {
margin: 0 16px;
}
}
</style>
</head>
<body id="particles">

View File

@ -310,24 +310,22 @@ export class HuiTileCard extends LitElement implements LovelaceCard {
if (!stateObj) {
return html`
<ha-card>
<div class="tile">
<div class="content ${classMap(contentClasses)}">
<div class="icon-container">
<ha-tile-icon class="icon" .iconPath=${mdiHelp}></ha-tile-icon>
<ha-tile-badge
class="badge"
.iconPath=${mdiExclamationThick}
style=${styleMap({
"--tile-badge-background-color": `var(--red-color)`,
})}
></ha-tile-badge>
</div>
<ha-tile-info
class="info"
.primary=${entityId}
secondary=${this.hass.localize("ui.card.tile.not_found")}
></ha-tile-info>
<div class="content ${classMap(contentClasses)}">
<div class="icon-container">
<ha-tile-icon class="icon" .iconPath=${mdiHelp}></ha-tile-icon>
<ha-tile-badge
class="badge"
.iconPath=${mdiExclamationThick}
style=${styleMap({
"--tile-badge-background-color": `var(--red-color)`,
})}
></ha-tile-badge>
</div>
<ha-tile-info
class="info"
.primary=${entityId}
secondary=${this.hass.localize("ui.card.tile.not_found")}
></ha-tile-info>
</div>
</ha-card>
`;
@ -359,73 +357,71 @@ export class HuiTileCard extends LitElement implements LovelaceCard {
return html`
<ha-card style=${styleMap(style)} class=${classMap({ active })}>
<div class="tile">
<div
class="background"
@action=${this._handleAction}
.actionHandler=${actionHandler({
hasHold: hasAction(this._config!.hold_action),
hasDoubleClick: hasAction(this._config!.double_tap_action),
})}
role="button"
tabindex="0"
aria-labelledby="info"
@mousedown=${this.handleRippleActivate}
@mouseup=${this.handleRippleDeactivate}
@mouseenter=${this.handleRippleMouseEnter}
@mouseleave=${this.handleRippleMouseLeave}
@touchstart=${this.handleRippleActivate}
@touchend=${this.handleRippleDeactivate}
@touchcancel=${this.handleRippleDeactivate}
>
${this._shouldRenderRipple
? html`<mwc-ripple></mwc-ripple>`
: nothing}
</div>
<div class="content ${classMap(contentClasses)}">
<div
class="background"
@action=${this._handleAction}
.actionHandler=${actionHandler({
hasHold: hasAction(this._config!.hold_action),
hasDoubleClick: hasAction(this._config!.double_tap_action),
})}
class="icon-container"
role="button"
tabindex="0"
aria-labelledby="info"
@mousedown=${this.handleRippleActivate}
@mouseup=${this.handleRippleDeactivate}
@mouseenter=${this.handleRippleMouseEnter}
@mouseleave=${this.handleRippleMouseLeave}
@touchstart=${this.handleRippleActivate}
@touchend=${this.handleRippleDeactivate}
@touchcancel=${this.handleRippleDeactivate}
@action=${this._handleIconAction}
.actionHandler=${actionHandler()}
>
${this._shouldRenderRipple
? html`<mwc-ripple></mwc-ripple>`
${imageUrl
? html`
<ha-tile-image
class="icon"
.imageUrl=${imageUrl}
></ha-tile-image>
`
: html`
<ha-tile-icon
data-domain=${ifDefined(domain)}
data-state=${ifDefined(stateObj?.state)}
class="icon"
.icon=${icon}
.iconPath=${iconPath}
></ha-tile-icon>
`}
${badge
? html`
<ha-tile-badge
class="badge"
.icon=${badge.icon}
.iconPath=${badge.iconPath}
style=${styleMap({
"--tile-badge-background-color": badge.color,
})}
></ha-tile-badge>
`
: nothing}
</div>
<div class="content ${classMap(contentClasses)}">
<div
class="icon-container"
role="button"
tabindex="0"
@action=${this._handleIconAction}
.actionHandler=${actionHandler()}
>
${imageUrl
? html`
<ha-tile-image
class="icon"
.imageUrl=${imageUrl}
></ha-tile-image>
`
: html`
<ha-tile-icon
data-domain=${ifDefined(domain)}
data-state=${ifDefined(stateObj?.state)}
class="icon"
.icon=${icon}
.iconPath=${iconPath}
></ha-tile-icon>
`}
${badge
? html`
<ha-tile-badge
class="badge"
.icon=${badge.icon}
.iconPath=${badge.iconPath}
style=${styleMap({
"--tile-badge-background-color": badge.color,
})}
></ha-tile-badge>
`
: nothing}
</div>
<ha-tile-info
id="info"
class="info"
.primary=${name}
.secondary=${localizedState}
></ha-tile-info>
</div>
<ha-tile-info
id="info"
class="info"
.primary=${name}
.secondary=${localizedState}
></ha-tile-info>
</div>
<hui-card-features
.hass=${this.hass}
@ -472,7 +468,7 @@ export class HuiTileCard extends LitElement implements LovelaceCard {
bottom: 0;
right: 0;
border-radius: var(--ha-card-border-radius, 12px);
inset: calc(-1 * var(--ha-card-border-width, 1px));
margin: calc(-1 * var(--ha-card-border-width, 1px));
overflow: hidden;
}
.content {

View File

@ -143,12 +143,23 @@ export const computeCards = (
const cardConfig: ThermostatCardConfig = {
type: "thermostat",
entity: entityId,
features: [
{
type: "climate-hvac-modes",
hvac_modes: states[entityId]?.attributes?.hvac_modes,
},
],
};
cards.push(cardConfig);
} else if (domain === "humidifier") {
const cardConfig: HumidifierCardConfig = {
type: "humidifier",
entity: entityId,
features: [
{
type: "humidifier-toggle",
},
],
};
cards.push(cardConfig);
} else if (domain === "media_player") {

272
yarn.lock
View File

@ -4322,10 +4322,10 @@ __metadata:
languageName: node
linkType: hard
"@types/luxon@npm:3.3.6":
version: 3.3.6
resolution: "@types/luxon@npm:3.3.6"
checksum: e44e9d856b69d6832572d136cc3ae9e859828be1bea076f78c3f5f3163ec52adfaecf3b2b4ed2b27139fd64e8baaeef7a1425051767b66bc46ea60356bbc1282
"@types/luxon@npm:3.3.7":
version: 3.3.7
resolution: "@types/luxon@npm:3.3.7"
checksum: 282ac72fd55da0c9d57f376ba9061ce83506cf6239c32259dacde0800964089f6183d2e449ef2ddd89b079fb8bfdffd7e5dbf187eb5c9f106aeaeca2aa60ed09
languageName: node
linkType: hard
@ -4567,15 +4567,15 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/eslint-plugin@npm:6.13.1":
version: 6.13.1
resolution: "@typescript-eslint/eslint-plugin@npm:6.13.1"
"@typescript-eslint/eslint-plugin@npm:6.13.2":
version: 6.13.2
resolution: "@typescript-eslint/eslint-plugin@npm:6.13.2"
dependencies:
"@eslint-community/regexpp": "npm:^4.5.1"
"@typescript-eslint/scope-manager": "npm:6.13.1"
"@typescript-eslint/type-utils": "npm:6.13.1"
"@typescript-eslint/utils": "npm:6.13.1"
"@typescript-eslint/visitor-keys": "npm:6.13.1"
"@typescript-eslint/scope-manager": "npm:6.13.2"
"@typescript-eslint/type-utils": "npm:6.13.2"
"@typescript-eslint/utils": "npm:6.13.2"
"@typescript-eslint/visitor-keys": "npm:6.13.2"
debug: "npm:^4.3.4"
graphemer: "npm:^1.4.0"
ignore: "npm:^5.2.4"
@ -4588,44 +4588,44 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
checksum: cae42c77404d8e6c149d68aca75bb3ce83cff5de8713d82e87e93bafae2839f29d261bc75b68f315b6b23858a85ea2f22ed8468cf5c7331e8330f7cee2129522
checksum: e6665fc5de0ae2b7ada9150d3d119157521a04208b8da385a4c39538b9471871efe6eef272dbcee4c76f599e09453b6f7317f3b3b80d89291f6b2ace4125c51b
languageName: node
linkType: hard
"@typescript-eslint/parser@npm:6.13.1":
version: 6.13.1
resolution: "@typescript-eslint/parser@npm:6.13.1"
"@typescript-eslint/parser@npm:6.13.2":
version: 6.13.2
resolution: "@typescript-eslint/parser@npm:6.13.2"
dependencies:
"@typescript-eslint/scope-manager": "npm:6.13.1"
"@typescript-eslint/types": "npm:6.13.1"
"@typescript-eslint/typescript-estree": "npm:6.13.1"
"@typescript-eslint/visitor-keys": "npm:6.13.1"
"@typescript-eslint/scope-manager": "npm:6.13.2"
"@typescript-eslint/types": "npm:6.13.2"
"@typescript-eslint/typescript-estree": "npm:6.13.2"
"@typescript-eslint/visitor-keys": "npm:6.13.2"
debug: "npm:^4.3.4"
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
peerDependenciesMeta:
typescript:
optional: true
checksum: cdc328d157a8b8a6babad88360451c177ea41666e2150f3822a474ed287a12336517dccf9f475f75a007d4aa622cb74f1442f17d17b87e19cc2c839784742351
checksum: a2b32d2ad1aa12ce31790e80e059fd5b0699265541f3799b58f2e5c8b40f2e21ac7010519802bc406f4b74c14a1f52081570fa6119b949f68392d0968628b3b8
languageName: node
linkType: hard
"@typescript-eslint/scope-manager@npm:6.13.1":
version: 6.13.1
resolution: "@typescript-eslint/scope-manager@npm:6.13.1"
"@typescript-eslint/scope-manager@npm:6.13.2":
version: 6.13.2
resolution: "@typescript-eslint/scope-manager@npm:6.13.2"
dependencies:
"@typescript-eslint/types": "npm:6.13.1"
"@typescript-eslint/visitor-keys": "npm:6.13.1"
checksum: f728dbd995c58fadfc390411fe31b1b8a729b1c85ecf0ae2fe70f97f613298feab78c05bc180e03612f595b24cf0090476a0b8234c617b3edf1dae568342a7cf
"@typescript-eslint/types": "npm:6.13.2"
"@typescript-eslint/visitor-keys": "npm:6.13.2"
checksum: a6505cc73e90dfed3b9b03816213610f05be58548f468ce24c05ce49a3c6d029ef02233db51cff3b780aa8d040a0c7b3268ea28244c704932c9ee6ef82088509
languageName: node
linkType: hard
"@typescript-eslint/type-utils@npm:6.13.1":
version: 6.13.1
resolution: "@typescript-eslint/type-utils@npm:6.13.1"
"@typescript-eslint/type-utils@npm:6.13.2":
version: 6.13.2
resolution: "@typescript-eslint/type-utils@npm:6.13.2"
dependencies:
"@typescript-eslint/typescript-estree": "npm:6.13.1"
"@typescript-eslint/utils": "npm:6.13.1"
"@typescript-eslint/typescript-estree": "npm:6.13.2"
"@typescript-eslint/utils": "npm:6.13.2"
debug: "npm:^4.3.4"
ts-api-utils: "npm:^1.0.1"
peerDependencies:
@ -4633,23 +4633,23 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
checksum: 484e5f74fc604b24687fe6426e650f40f679d62216ee5e45bf6d1f91edd60cd8deef747ca43f7dc3c22b2b76f030477603c82559e44c3f2fb5c8877a0c65aefa
checksum: c8de5ab94295980a378e4f22dd51dedb3838761969ad1a355386a801c9bc332837651747cdc2edf7f399c88d0bbd787d2233d09e14e4e2849fb01a57bd0cab00
languageName: node
linkType: hard
"@typescript-eslint/types@npm:6.13.1":
version: 6.13.1
resolution: "@typescript-eslint/types@npm:6.13.1"
checksum: 350c7f847052f7c24629d41645c02be152c512f3e5c21a79f53c04821b1fff3019416b18d9b72e5ca5c3c5f62f210301f2bb69080b84e67fe83af27751a7af18
"@typescript-eslint/types@npm:6.13.2":
version: 6.13.2
resolution: "@typescript-eslint/types@npm:6.13.2"
checksum: 3ed2622468b2c61bff0828a3675357b498360bada85740dd72e4ec3c80ee112bce8808d7688aa0104b9d0a655a30e2deb0fee69468474c7e046fc9285f549fe6
languageName: node
linkType: hard
"@typescript-eslint/typescript-estree@npm:6.13.1":
version: 6.13.1
resolution: "@typescript-eslint/typescript-estree@npm:6.13.1"
"@typescript-eslint/typescript-estree@npm:6.13.2":
version: 6.13.2
resolution: "@typescript-eslint/typescript-estree@npm:6.13.2"
dependencies:
"@typescript-eslint/types": "npm:6.13.1"
"@typescript-eslint/visitor-keys": "npm:6.13.1"
"@typescript-eslint/types": "npm:6.13.2"
"@typescript-eslint/visitor-keys": "npm:6.13.2"
debug: "npm:^4.3.4"
globby: "npm:^11.1.0"
is-glob: "npm:^4.0.3"
@ -4658,34 +4658,34 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
checksum: 1df965c5b202664da1a4a1ffc51bda3d85e581d8c206cd4be63653e2558775104258f6071e1f35a269619ebfb81bd18ee74e3fcb724fed15d3a2577d0ee5a34f
checksum: 8fa1344228858fa8171a9660e11eb0d5ed88de2ada343bce4a02a957724ccbeb9b67da1083eada29247f444aeba6908a4145d1758b528d320928abbb4e48dca7
languageName: node
linkType: hard
"@typescript-eslint/utils@npm:6.13.1":
version: 6.13.1
resolution: "@typescript-eslint/utils@npm:6.13.1"
"@typescript-eslint/utils@npm:6.13.2":
version: 6.13.2
resolution: "@typescript-eslint/utils@npm:6.13.2"
dependencies:
"@eslint-community/eslint-utils": "npm:^4.4.0"
"@types/json-schema": "npm:^7.0.12"
"@types/semver": "npm:^7.5.0"
"@typescript-eslint/scope-manager": "npm:6.13.1"
"@typescript-eslint/types": "npm:6.13.1"
"@typescript-eslint/typescript-estree": "npm:6.13.1"
"@typescript-eslint/scope-manager": "npm:6.13.2"
"@typescript-eslint/types": "npm:6.13.2"
"@typescript-eslint/typescript-estree": "npm:6.13.2"
semver: "npm:^7.5.4"
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
checksum: 6fab1122071c7a2da959dcf16cdd723a65bd8ba8e55af9cea11bb1707c4d047e94c3daaed2ab504cdbd2ca0d052f2a33de5290b28de0277ba00210569673ac9b
checksum: 934282b612e5f78423bc375122258c5aec65fcdf9c25fd0521e3984686d1e5b950500f093c5f1c21a267be164bc7025d8f629dcfaa60573ad98c6e3861092076
languageName: node
linkType: hard
"@typescript-eslint/visitor-keys@npm:6.13.1":
version: 6.13.1
resolution: "@typescript-eslint/visitor-keys@npm:6.13.1"
"@typescript-eslint/visitor-keys@npm:6.13.2":
version: 6.13.2
resolution: "@typescript-eslint/visitor-keys@npm:6.13.2"
dependencies:
"@typescript-eslint/types": "npm:6.13.1"
"@typescript-eslint/types": "npm:6.13.2"
eslint-visitor-keys: "npm:^3.4.1"
checksum: 27ccc4bfe940e50b0977838356b7feda95b68754fa544a988588a159a2619eb04d07c67e55d16bfea1b0dc6184a7fb5daff1366b266c9f5fd19d72831dea6163
checksum: eb6f3a3fa4dae6003533eac41bd2a8181a0353f352640e92b619e353b4bd5a5cd4c076018cbdf4b1ba45b826be0c1d15293d87e956fc9a8aa2fb8d8aa04a7c98
languageName: node
linkType: hard
@ -5480,12 +5480,12 @@ __metadata:
languageName: node
linkType: hard
"ansi-escapes@npm:^5.0.0":
version: 5.0.0
resolution: "ansi-escapes@npm:5.0.0"
"ansi-escapes@npm:^6.2.0":
version: 6.2.0
resolution: "ansi-escapes@npm:6.2.0"
dependencies:
type-fest: "npm:^1.0.2"
checksum: cbfb95f9f6d8a1ffc89f50fcda3313effae2d9ac2f357f89f626815b4d95fdc3f10f74e0887614ff850d01f805b7505eb1e7ebfdd26144bbfc26c5de08e19195
type-fest: "npm:^3.0.0"
checksum: 442f91b04650b35bc4815f47c20412d69ddbba5d4bf22f72ec03be352fca2de6819c7e3f4dfd17816ee4e0c6c965fe85e6f1b3f09683996a8d12fd366afd924e
languageName: node
linkType: hard
@ -5555,7 +5555,7 @@ __metadata:
languageName: node
linkType: hard
"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0":
"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1":
version: 6.2.1
resolution: "ansi-styles@npm:6.2.1"
checksum: 70fdf883b704d17a5dfc9cde206e698c16bcd74e7f196ab821511651aee4f9f76c9514bdfa6ca3a27b5e49138b89cb222a28caf3afe4567570139577f991df32
@ -6514,12 +6514,12 @@ __metadata:
languageName: node
linkType: hard
"chart.js@npm:4.4.0":
version: 4.4.0
resolution: "chart.js@npm:4.4.0"
"chart.js@npm:4.4.1":
version: 4.4.1
resolution: "chart.js@npm:4.4.1"
dependencies:
"@kurkle/color": "npm:^0.3.0"
checksum: 5d60ae67e2ad7ba1026531be3c965a83f4b4213146b131aa041fcac846bd98bdfc38aeadc0d19c58f3a3ef689fb6acc014b8687665d38d4776b38351bf991de1
checksum: bb58247349ed04b6a38c4c4b45d953d87dab40ecd70dd796da302cbcebf866dfc1ecf7bd32d95ecb44b89dccf9a4cfc6ff84f74ba69b024be9b5bd19b2930fbc
languageName: node
linkType: hard
@ -6634,13 +6634,13 @@ __metadata:
languageName: node
linkType: hard
"cli-truncate@npm:^3.1.0":
version: 3.1.0
resolution: "cli-truncate@npm:3.1.0"
"cli-truncate@npm:^4.0.0":
version: 4.0.0
resolution: "cli-truncate@npm:4.0.0"
dependencies:
slice-ansi: "npm:^5.0.0"
string-width: "npm:^5.0.0"
checksum: c3243e41974445691c63f8b405df1d5a24049dc33d324fe448dc572e561a7b772ae982692900b1a5960901cc4fc7def25a629b9c69a4208ee89d12ab3332617a
string-width: "npm:^7.0.0"
checksum: d5149175fd25ca985731bdeec46a55ec237475cf74c1a5e103baea696aceb45e372ac4acbaabf1316f06bd62e348123060f8191ffadfeedebd2a70a2a7fb199d
languageName: node
linkType: hard
@ -7612,7 +7612,7 @@ __metadata:
languageName: node
linkType: hard
"emoji-regex@npm:^10.2.1":
"emoji-regex@npm:^10.2.1, emoji-regex@npm:^10.3.0":
version: 10.3.0
resolution: "emoji-regex@npm:10.3.0"
checksum: b9b084ebe904f13bb4b66ee4c29fb41a7a4a1165adcc33c1ce8056c0194b882cc91ebdc782f1a779b5d7ea7375c5064643a7734893d7c657b44c5c6b9d7bf1e7
@ -9023,6 +9023,13 @@ __metadata:
languageName: node
linkType: hard
"get-east-asian-width@npm:^1.0.0":
version: 1.2.0
resolution: "get-east-asian-width@npm:1.2.0"
checksum: c9b280e7c7c67fb89fa17e867c4a9d1c9f1321aba2a9ee27bff37fb6ca9552bccda328c70a80c1f83a0e39ba1b7e3427e60f47823402d19e7a41b83417ec047a
languageName: node
linkType: hard
"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2":
version: 2.0.2
resolution: "get-func-name@npm:2.0.2"
@ -9675,7 +9682,7 @@ __metadata:
"@types/js-yaml": "npm:4.0.9"
"@types/leaflet": "npm:1.9.8"
"@types/leaflet-draw": "npm:1.0.11"
"@types/luxon": "npm:3.3.6"
"@types/luxon": "npm:3.3.7"
"@types/mocha": "npm:10.0.6"
"@types/qrcode": "npm:1.5.5"
"@types/serve-handler": "npm:6.1.4"
@ -9683,8 +9690,8 @@ __metadata:
"@types/tar": "npm:6.1.10"
"@types/ua-parser-js": "npm:0.7.39"
"@types/webspeechapi": "npm:0.0.29"
"@typescript-eslint/eslint-plugin": "npm:6.13.1"
"@typescript-eslint/parser": "npm:6.13.1"
"@typescript-eslint/eslint-plugin": "npm:6.13.2"
"@typescript-eslint/parser": "npm:6.13.2"
"@vaadin/combo-box": "npm:24.2.5"
"@vaadin/vaadin-themable-mixin": "npm:24.2.5"
"@vibrant/color": "npm:3.2.1-alpha.1"
@ -9699,7 +9706,7 @@ __metadata:
babel-loader: "npm:9.1.3"
babel-plugin-template-html-minifier: "npm:4.1.0"
chai: "npm:4.3.10"
chart.js: "npm:4.4.0"
chart.js: "npm:4.4.1"
comlink: "npm:4.4.1"
core-js: "npm:3.33.3"
cropperjs: "npm:1.6.1"
@ -9742,7 +9749,7 @@ __metadata:
jszip: "npm:3.10.1"
leaflet: "npm:1.9.4"
leaflet-draw: "npm:1.0.4"
lint-staged: "npm:15.1.0"
lint-staged: "npm:15.2.0"
lit: "npm:2.8.0"
lit-analyzer: "npm:2.0.1"
lodash.template: "npm:4.5.0"
@ -9765,7 +9772,7 @@ __metadata:
rollup: "npm:2.79.1"
rollup-plugin-string: "npm:3.0.0"
rollup-plugin-terser: "npm:7.0.2"
rollup-plugin-visualizer: "npm:5.9.3"
rollup-plugin-visualizer: "npm:5.10.0"
rrule: "npm:2.8.1"
serve-handler: "npm:6.1.5"
sinon: "npm:17.0.1"
@ -10494,6 +10501,15 @@ __metadata:
languageName: node
linkType: hard
"is-fullwidth-code-point@npm:^5.0.0":
version: 5.0.0
resolution: "is-fullwidth-code-point@npm:5.0.0"
dependencies:
get-east-asian-width: "npm:^1.0.0"
checksum: 8dfb2d2831b9e87983c136f5c335cd9d14c1402973e357a8ff057904612ed84b8cba196319fabedf9aefe4639e14fe3afe9d9966d1d006ebeb40fe1fed4babe5
languageName: node
linkType: hard
"is-function@npm:^1.0.1":
version: 1.0.2
resolution: "is-function@npm:1.0.2"
@ -11332,44 +11348,44 @@ __metadata:
languageName: node
linkType: hard
"lilconfig@npm:2.1.0":
version: 2.1.0
resolution: "lilconfig@npm:2.1.0"
checksum: b1314a2e55319013d5e7d7d08be39015829d2764a1eaee130129545d40388499d81b1c31b0f9b3417d4db12775a88008b72ec33dd06e0184cf7503b32ca7cc0b
"lilconfig@npm:3.0.0":
version: 3.0.0
resolution: "lilconfig@npm:3.0.0"
checksum: 55f60f4f9f7b41358cc33875e3696919412683a35aec30c6c60c4f6ecb16fb6d11f7ac856b8458b9b82b21d5f4629649fbfca1de034e8d5b0cc7a70836266db6
languageName: node
linkType: hard
"lint-staged@npm:15.1.0":
version: 15.1.0
resolution: "lint-staged@npm:15.1.0"
"lint-staged@npm:15.2.0":
version: 15.2.0
resolution: "lint-staged@npm:15.2.0"
dependencies:
chalk: "npm:5.3.0"
commander: "npm:11.1.0"
debug: "npm:4.3.4"
execa: "npm:8.0.1"
lilconfig: "npm:2.1.0"
listr2: "npm:7.0.2"
lilconfig: "npm:3.0.0"
listr2: "npm:8.0.0"
micromatch: "npm:4.0.5"
pidtree: "npm:0.6.0"
string-argv: "npm:0.3.2"
yaml: "npm:2.3.4"
bin:
lint-staged: bin/lint-staged.js
checksum: 77aacab303ebab8ef6781833d35d82405b73f0e3e8f8c585cdd95b0e1f42a638a12e853d7ef6227a85d77ed2ba233f92b0499124696a6872569c508e04d25ce3
checksum: 2a20e9b15f7e7419e92a2014afb01feb58798341a4a56aa1b9c8570297681cf54919f645df3c221e4348fd262df38c1e711a245a645d477bf870841e27c604f2
languageName: node
linkType: hard
"listr2@npm:7.0.2":
version: 7.0.2
resolution: "listr2@npm:7.0.2"
"listr2@npm:8.0.0":
version: 8.0.0
resolution: "listr2@npm:8.0.0"
dependencies:
cli-truncate: "npm:^3.1.0"
cli-truncate: "npm:^4.0.0"
colorette: "npm:^2.0.20"
eventemitter3: "npm:^5.0.1"
log-update: "npm:^5.0.1"
log-update: "npm:^6.0.0"
rfdc: "npm:^1.3.0"
wrap-ansi: "npm:^8.1.0"
checksum: 42cda5764906f9d298e3b0b0a684e71a3737533b2aef66f361265a3b938c4bc8f49bcea91536a8daa956833658d14108469b00c565c8e93ce4079795f6a06e07
wrap-ansi: "npm:^9.0.0"
checksum: d5a53b6d5feaa3a45c3750ebf10d242d42f11741b890edf8de7d68a002c36f15d0683f25742a0eb055763f04c005210a5cd61ef6c24ebac099d597cb21b06f29
languageName: node
linkType: hard
@ -11596,16 +11612,16 @@ __metadata:
languageName: node
linkType: hard
"log-update@npm:^5.0.1":
version: 5.0.1
resolution: "log-update@npm:5.0.1"
"log-update@npm:^6.0.0":
version: 6.0.0
resolution: "log-update@npm:6.0.0"
dependencies:
ansi-escapes: "npm:^5.0.0"
ansi-escapes: "npm:^6.2.0"
cli-cursor: "npm:^4.0.0"
slice-ansi: "npm:^5.0.0"
strip-ansi: "npm:^7.0.1"
wrap-ansi: "npm:^8.0.1"
checksum: 0e154e46744125b6d20c30289e90091794d58b83c2f01d7676da2afa2411c6ec2c3ee2c99753b9c6b896b9ee496a9a403a563330a2d5914a3bdb30e836f17cfb
slice-ansi: "npm:^7.0.0"
strip-ansi: "npm:^7.1.0"
wrap-ansi: "npm:^9.0.0"
checksum: b345f392c356087290918f1bdaae84ee38699c89c9274fafbb6f4cee2fe6f89f9737000111279a40e651fbe0e9c08803b0457c2a4800d8a405752804f73058a8
languageName: node
linkType: hard
@ -13921,9 +13937,9 @@ __metadata:
languageName: node
linkType: hard
"rollup-plugin-visualizer@npm:5.9.3":
version: 5.9.3
resolution: "rollup-plugin-visualizer@npm:5.9.3"
"rollup-plugin-visualizer@npm:5.10.0":
version: 5.10.0
resolution: "rollup-plugin-visualizer@npm:5.10.0"
dependencies:
open: "npm:^8.4.0"
picomatch: "npm:^2.3.1"
@ -13936,7 +13952,7 @@ __metadata:
optional: true
bin:
rollup-plugin-visualizer: dist/bin/cli.js
checksum: 569acbdf9401fb5e23456d889b1094e95a003331c63428732f94418eda59850fd74994587353f58c833a535cc24cdef56c06872996f76f98802ff22939ebbf0d
checksum: aa4ef8d2aae064b50a50168094db1337762d91bd0cd06206cfbc96a97adca45b7036dc1871eab7e70878111eeedb8164fe267f5cc56cd9eb4225ed71c8966aa6
languageName: node
linkType: hard
@ -14376,6 +14392,16 @@ __metadata:
languageName: node
linkType: hard
"slice-ansi@npm:^7.0.0":
version: 7.1.0
resolution: "slice-ansi@npm:7.1.0"
dependencies:
ansi-styles: "npm:^6.2.1"
is-fullwidth-code-point: "npm:^5.0.0"
checksum: 10313dd3cf7a2e4b265f527b1684c7c568210b09743fd1bd74f2194715ed13ffba653dc93a5fa79e3b1711518b8990a732cb7143aa01ddafe626e99dfa6474b2
languageName: node
linkType: hard
"smart-buffer@npm:^4.2.0":
version: 4.2.0
resolution: "smart-buffer@npm:4.2.0"
@ -14766,7 +14792,7 @@ __metadata:
languageName: node
linkType: hard
"string-width@npm:^5.0.0, string-width@npm:^5.0.1, string-width@npm:^5.1.2":
"string-width@npm:^5.0.1, string-width@npm:^5.1.2":
version: 5.1.2
resolution: "string-width@npm:5.1.2"
dependencies:
@ -14777,6 +14803,17 @@ __metadata:
languageName: node
linkType: hard
"string-width@npm:^7.0.0":
version: 7.0.0
resolution: "string-width@npm:7.0.0"
dependencies:
emoji-regex: "npm:^10.3.0"
get-east-asian-width: "npm:^1.0.0"
strip-ansi: "npm:^7.1.0"
checksum: bc0de5700a2690895169fce447ec4ed44bc62de80312c2093d5606bfd48319bb88e48a99e97f269dff2bc9577448b91c26b3804c16e7d9b389699795e4655c3b
languageName: node
linkType: hard
"string.prototype.matchall@npm:^4.0.6":
version: 4.0.10
resolution: "string.prototype.matchall@npm:4.0.10"
@ -14874,7 +14911,7 @@ __metadata:
languageName: node
linkType: hard
"strip-ansi@npm:^7.0.1":
"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0":
version: 7.1.0
resolution: "strip-ansi@npm:7.1.0"
dependencies:
@ -15489,10 +15526,10 @@ __metadata:
languageName: node
linkType: hard
"type-fest@npm:^1.0.2":
version: 1.4.0
resolution: "type-fest@npm:1.4.0"
checksum: 89875c247564601c2650bacad5ff80b859007fbdb6c9e43713ae3ffa3f584552eea60f33711dd762e16496a1ab4debd409822627be14097d9a17e39c49db591a
"type-fest@npm:^3.0.0":
version: 3.13.1
resolution: "type-fest@npm:3.13.1"
checksum: 9a8a2359ada34c9b3affcaf3a8f73ee14c52779e89950db337ce66fb74c3399776c697c99f2532e9b16e10e61cfdba3b1c19daffb93b338b742f0acd0117ce12
languageName: node
linkType: hard
@ -16713,7 +16750,7 @@ __metadata:
languageName: node
linkType: hard
"wrap-ansi@npm:^8.0.1, wrap-ansi@npm:^8.1.0":
"wrap-ansi@npm:^8.1.0":
version: 8.1.0
resolution: "wrap-ansi@npm:8.1.0"
dependencies:
@ -16724,6 +16761,17 @@ __metadata:
languageName: node
linkType: hard
"wrap-ansi@npm:^9.0.0":
version: 9.0.0
resolution: "wrap-ansi@npm:9.0.0"
dependencies:
ansi-styles: "npm:^6.2.1"
string-width: "npm:^7.0.0"
strip-ansi: "npm:^7.1.0"
checksum: b9d91564c091cf3978a7c18ca0f3e4d4606e83549dbe59cf76f5e77feefdd5ec91443155e8102630524d10a8c275efac8a7082c0f26fa43e6b989dc150d176ce
languageName: node
linkType: hard
"wrappy@npm:1":
version: 1.0.2
resolution: "wrappy@npm:1.0.2"