Compare commits

...

17 Commits

Author SHA1 Message Date
Paul Bottein
0b065799bf Add column option to grid section config
Add column density option to the grid section

Fix translations

Rename to grid density

Limit card size with the grid size

Rename function

Fix types
2024-10-14 19:40:42 +02:00
Wendelin
ca94267c44 Fix tooltip firefox bug in persistent-notification-item (#22363) 2024-10-14 15:47:12 +02:00
renovate[bot]
df1f26cee7 Update dependency magic-string to v0.30.12 (#22362)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-14 12:00:18 +02:00
renovate[bot]
24a4e075e6 Update babel monorepo to v7.25.8 (#22355)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-14 11:48:23 +02:00
dependabot[bot]
43fcc6238e Bump actions/upload-artifact from 4.4.0 to 4.4.3 (#22359)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-14 09:29:29 +02:00
dependabot[bot]
b40b96248b Bump actions/cache from 4.1.0 to 4.1.1 (#22358)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-14 09:17:16 +02:00
dependabot[bot]
c7ac4c7490 Bump actions/checkout from 4.2.0 to 4.2.1 (#22360)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-14 09:17:03 +02:00
Abdulrasheed Abdulsalam
6cd8471b91 Fix: correct some typos in translation file (#22353) 2024-10-13 10:11:27 +00:00
Marc Mueller
940eaa26e0 Update build-system (#22348) 2024-10-13 07:41:03 +02:00
renovate[bot]
79e68ce125 Update dependency typescript to v5.6.3 (#22340)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-12 11:13:22 +02:00
renovate[bot]
e581d35432 Update formatjs monorepo (#22342)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-12 09:14:19 +02:00
Paul Bottein
d3d578e0f4 Hide fields section when all fields inside are filtered (#22277)
Hide field section when all fields inside are filtered
2024-10-11 21:52:44 +02:00
karwosts
79c71cbe48 Add sensor offset to time trigger UI (#21957)
* Add sensor offset to time trigger UI

* refactor long expression

* memoize data

* fix for trigger platform migration
2024-10-11 21:36:44 +02:00
karwosts
82b50a1c5d Refine automation action search with ignoreLocation (#22332) 2024-10-11 21:34:43 +02:00
karwosts
6cfda78aa1 Fix a case where developer-tools/action can get stuck in an error loop (#22334) 2024-10-11 20:37:49 +02:00
renovate[bot]
f9ff938775 Update dependency @formatjs/intl-datetimeformat to v6.12.6 (#22335)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-11 20:24:26 +02:00
Bram Kragten
778fcab90d Fix entity id setting on newly created scripts, handle update of enti… (#22272)
Fix entity id setting on newly created scripts, handle update of entity id
2024-10-11 13:13:17 +02:00
26 changed files with 518 additions and 493 deletions

View File

@@ -21,7 +21,7 @@ jobs:
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
steps:
- name: Check out files from GitHub
uses: actions/checkout@v4.2.0
uses: actions/checkout@v4.2.1
with:
ref: dev
@@ -57,7 +57,7 @@ jobs:
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
steps:
- name: Check out files from GitHub
uses: actions/checkout@v4.2.0
uses: actions/checkout@v4.2.1
with:
ref: master

View File

@@ -24,7 +24,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
uses: actions/checkout@v4.2.0
uses: actions/checkout@v4.2.1
- name: Setup Node
uses: actions/setup-node@v4.0.4
with:
@@ -37,7 +37,7 @@ jobs:
- name: Build resources
run: ./node_modules/.bin/gulp gen-icons-json build-translations build-locale-data gather-gallery-pages
- name: Setup lint cache
uses: actions/cache@v4.1.0
uses: actions/cache@v4.1.1
with:
path: |
node_modules/.cache/prettier
@@ -58,7 +58,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
uses: actions/checkout@v4.2.0
uses: actions/checkout@v4.2.1
- name: Setup Node
uses: actions/setup-node@v4.0.4
with:
@@ -76,7 +76,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
uses: actions/checkout@v4.2.0
uses: actions/checkout@v4.2.1
- name: Setup Node
uses: actions/setup-node@v4.0.4
with:
@@ -89,7 +89,7 @@ jobs:
env:
IS_TEST: "true"
- name: Upload bundle stats
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.4.3
with:
name: frontend-bundle-stats
path: build/stats/*.json
@@ -100,7 +100,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
uses: actions/checkout@v4.2.0
uses: actions/checkout@v4.2.1
- name: Setup Node
uses: actions/setup-node@v4.0.4
with:
@@ -113,7 +113,7 @@ jobs:
env:
IS_TEST: "true"
- name: Upload bundle stats
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.4.3
with:
name: supervisor-bundle-stats
path: build/stats/*.json

View File

@@ -23,7 +23,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4.2.0
uses: actions/checkout@v4.2.1
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.

View File

@@ -22,7 +22,7 @@ jobs:
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
steps:
- name: Check out files from GitHub
uses: actions/checkout@v4.2.0
uses: actions/checkout@v4.2.1
with:
ref: dev
@@ -58,7 +58,7 @@ jobs:
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
steps:
- name: Check out files from GitHub
uses: actions/checkout@v4.2.0
uses: actions/checkout@v4.2.1
with:
ref: master

View File

@@ -16,7 +16,7 @@ jobs:
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
steps:
- name: Check out files from GitHub
uses: actions/checkout@v4.2.0
uses: actions/checkout@v4.2.1
- name: Setup Node
uses: actions/setup-node@v4.0.4

View File

@@ -21,7 +21,7 @@ jobs:
if: github.repository == 'home-assistant/frontend' && contains(github.event.pull_request.labels.*.name, 'needs design preview')
steps:
- name: Check out files from GitHub
uses: actions/checkout@v4.2.0
uses: actions/checkout@v4.2.1
- name: Setup Node
uses: actions/setup-node@v4.0.4

View File

@@ -20,7 +20,7 @@ jobs:
contents: write
steps:
- name: Checkout the repository
uses: actions/checkout@v4.2.0
uses: actions/checkout@v4.2.1
- name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@v5
@@ -57,14 +57,14 @@ jobs:
run: tar -czvf translations.tar.gz translations
- name: Upload build artifacts
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.4.3
with:
name: wheels
path: dist/home_assistant_frontend*.whl
if-no-files-found: error
- name: Upload translations
uses: actions/upload-artifact@v4.4.0
uses: actions/upload-artifact@v4.4.3
with:
name: translations
path: translations.tar.gz

View File

@@ -23,7 +23,7 @@ jobs:
contents: write # Required to upload release assets
steps:
- name: Checkout the repository
uses: actions/checkout@v4.2.0
uses: actions/checkout@v4.2.1
- name: Verify version
uses: home-assistant/actions/helpers/verify-version@master

View File

@@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v4.2.0
uses: actions/checkout@v4.2.1
- name: Upload Translations
run: |

View File

@@ -35,14 +35,14 @@
"@codemirror/state": "6.4.1",
"@codemirror/view": "6.34.1",
"@egjs/hammerjs": "2.0.17",
"@formatjs/intl-datetimeformat": "6.12.5",
"@formatjs/intl-displaynames": "6.6.8",
"@formatjs/intl-datetimeformat": "6.13.0",
"@formatjs/intl-displaynames": "6.6.9",
"@formatjs/intl-getcanonicallocales": "2.3.0",
"@formatjs/intl-listformat": "7.5.7",
"@formatjs/intl-locale": "4.0.0",
"@formatjs/intl-numberformat": "8.10.3",
"@formatjs/intl-pluralrules": "5.2.14",
"@formatjs/intl-relativetimeformat": "11.2.14",
"@formatjs/intl-listformat": "7.5.8",
"@formatjs/intl-locale": "4.0.1",
"@formatjs/intl-numberformat": "8.11.0",
"@formatjs/intl-pluralrules": "5.2.15",
"@formatjs/intl-relativetimeformat": "11.2.15",
"@fullcalendar/core": "6.1.15",
"@fullcalendar/daygrid": "6.1.15",
"@fullcalendar/interaction": "6.1.15",
@@ -114,7 +114,7 @@
"hls.js": "patch:hls.js@npm%3A1.5.7#~/.yarn/patches/hls.js-npm-1.5.7-f5bbd3d060.patch",
"home-assistant-js-websocket": "9.4.0",
"idb-keyval": "6.2.1",
"intl-messageformat": "10.5.14",
"intl-messageformat": "10.6.0",
"js-yaml": "4.1.0",
"leaflet": "1.9.4",
"leaflet-draw": "patch:leaflet-draw@npm%3A1.0.4#./.yarn/patches/leaflet-draw-npm-1.0.4-0ca0ebcf65.patch",
@@ -151,11 +151,11 @@
"xss": "1.0.15"
},
"devDependencies": {
"@babel/core": "7.25.7",
"@babel/core": "7.25.8",
"@babel/helper-define-polyfill-provider": "0.6.2",
"@babel/plugin-proposal-decorators": "7.25.7",
"@babel/plugin-transform-runtime": "7.25.7",
"@babel/preset-env": "7.25.7",
"@babel/preset-env": "7.25.8",
"@babel/preset-typescript": "7.25.7",
"@bundle-stats/plugin-webpack-filter": "4.15.1",
"@koa/cors": "5.0.0",
@@ -222,7 +222,7 @@
"lit-analyzer": "2.0.3",
"lodash.merge": "4.6.2",
"lodash.template": "4.5.0",
"magic-string": "0.30.11",
"magic-string": "0.30.12",
"map-stream": "0.0.7",
"mocha": "10.5.0",
"object-hash": "3.0.0",
@@ -240,7 +240,7 @@
"terser-webpack-plugin": "5.3.10",
"transform-async-modules-webpack-plugin": "1.1.1",
"ts-lit-plugin": "2.0.2",
"typescript": "5.6.2",
"typescript": "5.6.3",
"webpack": "5.95.0",
"webpack-cli": "5.1.4",
"webpack-dev-server": "5.1.0",

View File

@@ -1,5 +1,5 @@
[build-system]
requires = ["setuptools~=68.0", "wheel~=0.40.0"]
requires = ["setuptools~=75.1"]
build-backend = "setuptools.build_meta"
[project]

View File

@@ -499,8 +499,23 @@ export class HaServiceControl extends LitElement {
.defaultValue=${this._value?.data}
@value-changed=${this._dataChanged}
></ha-yaml-editor>`
: serviceData?.fields.map((dataField) =>
dataField.fields
: serviceData?.fields.map((dataField) => {
if (!dataField.fields) {
return this._renderField(
dataField,
hasOptional,
domain,
serviceName,
targetEntities
);
}
const fields = Object.entries(dataField.fields).map(
([key, field]) => ({ key, ...field })
);
return fields.length &&
this._hasFilteredFields(fields, targetEntities)
? html`<ha-expansion-panel
leftChevron
.expanded=${!dataField.collapsed}
@@ -531,14 +546,8 @@ export class HaServiceControl extends LitElement {
)
)}
</ha-expansion-panel>`
: this._renderField(
dataField,
hasOptional,
domain,
serviceName,
targetEntities
)
)} `;
: nothing;
})} `;
}
private _getSectionDescription(
@@ -551,6 +560,16 @@ export class HaServiceControl extends LitElement {
);
}
private _hasFilteredFields(
dataFields: ExtHassService["fields"],
targetEntities: string[]
) {
return dataFields.some(
(dataField) =>
!dataField.filter || this._filterField(dataField.filter, targetEntities)
);
}
private _renderField = (
dataField: ExtHassService["fields"][number],
hasOptional: boolean,

View File

@@ -167,7 +167,7 @@ export interface TagTrigger extends BaseTrigger {
export interface TimeTrigger extends BaseTrigger {
trigger: "time";
at: string;
at: string | { entity_id: string; offset?: string };
}
export interface TemplateTrigger extends BaseTrigger {

View File

@@ -8,6 +8,7 @@ import {
import secondsToDuration from "../common/datetime/seconds_to_duration";
import { computeAttributeNameDisplay } from "../common/entity/compute_attribute_display";
import { computeStateName } from "../common/entity/compute_state_name";
import { isValidEntityId } from "../common/entity/valid_entity_id";
import type { HomeAssistant } from "../types";
import { Condition, ForDict, Trigger } from "./automation";
import {
@@ -371,13 +372,22 @@ const tryDescribeTrigger = (
// Time Trigger
if (trigger.trigger === "time" && trigger.at) {
const result = ensureArray(trigger.at).map((at) =>
typeof at !== "string"
? at
: at.includes(".")
? `entity ${hass.states[at] ? computeStateName(hass.states[at]) : at}`
: localizeTimeString(at, hass.locale, hass.config)
);
const result = ensureArray(trigger.at).map((at) => {
if (typeof at === "string") {
if (isValidEntityId(at)) {
return `entity ${hass.states[at] ? computeStateName(hass.states[at]) : at}`;
}
return localizeTimeString(at, hass.locale, hass.config);
}
const entityStr = `entity ${hass.states[at.entity_id] ? computeStateName(hass.states[at.entity_id]) : at.entity_id}`;
const offsetStr = at.offset
? " " +
hass.localize(`${triggerTranslationBaseKey}.time.offset_by`, {
offset: describeDuration(hass.locale, at.offset),
})
: "";
return `${entityStr}${offsetStr}`;
});
return hass.localize(`${triggerTranslationBaseKey}.time.description.full`, {
time: formatListWithOrs(hass.locale, result),

View File

@@ -17,6 +17,10 @@ export interface LovelaceSectionConfig extends LovelaceBaseSectionConfig {
cards?: LovelaceCardConfig[];
}
export interface LovelaceGridSectionConfig extends LovelaceSectionConfig {
grid_base?: number;
}
export interface LovelaceStrategySectionConfig
extends LovelaceBaseSectionConfig {
strategy: LovelaceStrategyConfig;

View File

@@ -51,6 +51,7 @@ export class HuiPersistentNotificationItem extends LitElement {
static get styles(): CSSResultGroup {
return css`
.time {
position: relative;
display: flex;
justify-content: flex-end;
margin-top: 6px;

View File

@@ -208,6 +208,7 @@ class DialogAddAutomationElement extends LitElement implements HassDialog {
const options: IFuseOptions<ListItem> = {
keys: ["key", "name", "description"],
isCaseSensitive: false,
ignoreLocation: true,
minMatchCharLength: Math.min(filter.length, 2),
threshold: 0.2,
getFn: getStripDiacriticsFn,

View File

@@ -9,6 +9,9 @@ import type { TimeTrigger } from "../../../../../data/automation";
import type { HomeAssistant } from "../../../../../types";
import type { TriggerElement } from "../ha-automation-trigger-row";
const MODE_TIME = "time";
const MODE_ENTITY = "entity";
@customElement("ha-automation-trigger-time")
export class HaTimeTrigger extends LitElement implements TriggerElement {
@property({ attribute: false }) public hass!: HomeAssistant;
@@ -17,48 +20,60 @@ export class HaTimeTrigger extends LitElement implements TriggerElement {
@property({ type: Boolean }) public disabled = false;
@state() private _inputMode?: boolean;
@state() private _inputMode:
| undefined
| typeof MODE_TIME
| typeof MODE_ENTITY;
public static get defaultConfig(): TimeTrigger {
return { trigger: "time", at: "" };
}
private _schema = memoizeOne(
(localize: LocalizeFunc, inputMode?: boolean) => {
const atSelector = inputMode
? {
entity: {
filter: [
{ domain: "input_datetime" },
{ domain: "sensor", device_class: "timestamp" },
],
},
}
: { time: {} };
return [
(
localize: LocalizeFunc,
inputMode: typeof MODE_TIME | typeof MODE_ENTITY,
showOffset: boolean
) =>
[
{
name: "mode",
type: "select",
required: true,
options: [
[
"value",
MODE_TIME,
localize(
"ui.panel.config.automation.editor.triggers.type.time.type_value"
),
],
[
"input",
MODE_ENTITY,
localize(
"ui.panel.config.automation.editor.triggers.type.time.type_input"
),
],
],
},
{ name: "at", selector: atSelector },
] as const;
}
...(inputMode === MODE_TIME
? ([{ name: "time", selector: { time: {} } }] as const)
: ([
{
name: "entity",
selector: {
entity: {
filter: [
{ domain: "input_datetime" },
{ domain: "sensor", device_class: "timestamp" },
],
},
},
},
] as const)),
...(showOffset
? ([{ name: "offset", selector: { text: {} } }] as const)
: ([] as const)),
] as const
);
public willUpdate(changedProperties: PropertyValues) {
@@ -75,23 +90,46 @@ export class HaTimeTrigger extends LitElement implements TriggerElement {
}
}
private _data = memoizeOne(
(
inputMode: undefined | typeof MODE_ENTITY | typeof MODE_TIME,
at:
| string
| { entity_id: string | undefined; offset?: string | undefined }
): {
mode: typeof MODE_TIME | typeof MODE_ENTITY;
entity: string | undefined;
time: string | undefined;
offset: string | undefined;
} => {
const entity =
typeof at === "object"
? at.entity_id
: at?.startsWith("input_datetime.") || at?.startsWith("sensor.")
? at
: undefined;
const time = entity ? undefined : (at as string | undefined);
const offset = typeof at === "object" ? at.offset : undefined;
const mode = inputMode ?? (entity ? MODE_ENTITY : MODE_TIME);
return {
mode,
entity,
time,
offset,
};
}
);
protected render() {
const at = this.trigger.at;
if (Array.isArray(at)) {
return nothing;
}
const inputMode =
this._inputMode ??
(at?.startsWith("input_datetime.") || at?.startsWith("sensor."));
const schema = this._schema(this.hass.localize, inputMode);
const data = {
mode: inputMode ? "input" : "value",
...this.trigger,
};
const data = this._data(this._inputMode, at);
const showOffset =
data.mode === MODE_ENTITY && data.entity?.startsWith("sensor.");
const schema = this._schema(this.hass.localize, data.mode, !!showOffset);
return html`
<ha-form
@@ -107,26 +145,43 @@ export class HaTimeTrigger extends LitElement implements TriggerElement {
private _valueChanged(ev: CustomEvent): void {
ev.stopPropagation();
const newValue = ev.detail.value;
this._inputMode = newValue.mode === "input";
delete newValue.mode;
Object.keys(newValue).forEach((key) =>
newValue[key] === undefined || newValue[key] === ""
? delete newValue[key]
: {}
);
fireEvent(this, "value-changed", { value: newValue });
const newValue = { ...ev.detail.value };
this._inputMode = newValue.mode;
if (newValue.mode === MODE_TIME) {
delete newValue.entity;
delete newValue.offset;
} else {
delete newValue.time;
if (!newValue.entity?.startsWith("sensor.")) {
delete newValue.offset;
}
}
fireEvent(this, "value-changed", {
value: {
...this.trigger,
at: newValue.offset
? {
entity_id: newValue.entity,
offset: newValue.offset,
}
: newValue.entity || newValue.time,
},
});
}
private _computeLabelCallback = (
schema: SchemaUnion<ReturnType<typeof this._schema>>
): string =>
this.hass.localize(
): string => {
switch (schema.name) {
case "time":
return this.hass.localize(
`ui.panel.config.automation.editor.triggers.type.time.at`
);
}
return this.hass.localize(
`ui.panel.config.automation.editor.triggers.type.time.${schema.name}`
);
};
}
declare global {

View File

@@ -83,8 +83,6 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) {
@state() private _config?: ScriptConfig;
@state() private _idError = false;
@state() private _dirty = false;
@state() private _errors?: string;
@@ -414,6 +412,18 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) {
this._loadConfig();
}
if (
(changedProps.has("scriptId") || changedProps.has("entityRegistry")) &&
this.scriptId &&
this.entityRegistry
) {
// find entity for when script entity id changed
const entity = this.entityRegistry.find(
(ent) => ent.platform === "script" && ent.unique_id === this.scriptId
);
this._entityId = entity?.entity_id;
}
if (changedProps.has("scriptId") && !this.scriptId && this.hass) {
const initData = getScriptEditorInitData();
this._dirty = !!initData;
@@ -448,15 +458,6 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) {
}
}
private _setEntityId(id?: string) {
this._entityId = id;
if (this.hass.states[`script.${this._entityId}`]) {
this._idError = true;
} else {
this._idError = false;
}
}
private async _checkValidation() {
this._validationErrors = undefined;
if (!this._entityId || !this._config) {
@@ -766,28 +767,12 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) {
}
private async _saveScript(): Promise<void> {
if (this._idError) {
showToast(this, {
message: this.hass.localize(
"ui.panel.config.script.editor.id_already_exists_save_error"
),
dismissable: false,
duration: -1,
action: {
action: () => {},
text: this.hass.localize("ui.dialogs.generic.ok"),
},
});
return;
}
if (!this.scriptId) {
const saved = await this._promptScriptAlias();
if (!saved) {
return;
}
const entityId = this._computeEntityIdFromAlias(this._config!.alias);
this._setEntityId(entityId);
this._entityId = this._computeEntityIdFromAlias(this._config!.alias);
}
const id = this.scriptId || this._entityId || Date.now();

View File

@@ -68,6 +68,16 @@ class HaPanelDevAction extends LitElement {
@query("#yaml-editor") private _yamlEditor?: HaYamlEditor;
protected willUpdate() {
if (
!this.hasUpdated &&
this._serviceData?.action &&
typeof this._serviceData.action !== "string"
) {
this._serviceData.action = "";
}
}
protected firstUpdated(params) {
super.firstUpdated(params);
this.hass.loadBackendTranslation("services");

View File

@@ -3,12 +3,15 @@ import "@material/mwc-tab/mwc-tab";
import { CSSResultGroup, TemplateResult, css, html, nothing } from "lit";
import { customElement, property, state } from "lit/decorators";
import { LovelaceCardConfig } from "../../../../data/lovelace/config/card";
import {
LovelaceGridSectionConfig,
LovelaceSectionConfig,
} from "../../../../data/lovelace/config/section";
import { getCardElementClass } from "../../create-element/create-card-element";
import type { LovelaceCardEditor, LovelaceConfigForm } from "../../types";
import { HuiTypedElementEditor } from "../hui-typed-element-editor";
import "./hui-card-layout-editor";
import "./hui-card-visibility-editor";
import { LovelaceSectionConfig } from "../../../../data/lovelace/config/section";
const tabs = ["config", "visibility", "layout"] as const;
@@ -59,7 +62,7 @@ export class HuiCardElementEditor extends HuiTypedElementEditor<LovelaceCardConf
protected renderConfigElement(): TemplateResult {
const displayedTabs: string[] = ["config"];
if (this.showVisibilityTab) displayedTabs.push("visibility");
if (this._showLayoutTab) displayedTabs.push("layout");
if (this.sectionConfig?.type === "grid") displayedTabs.push("layout");
if (displayedTabs.length === 1) return super.renderConfigElement();
@@ -83,8 +86,8 @@ export class HuiCardElementEditor extends HuiTypedElementEditor<LovelaceCardConf
<hui-card-layout-editor
.hass=${this.hass}
.config=${this.value}
.sectionConfig=${this.sectionConfig!}
@value-changed=${this._configChanged}
.sectionConfig=${this.sectionConfig as LovelaceGridSectionConfig}
>
</hui-card-layout-editor>
`;

View File

@@ -19,7 +19,10 @@ import "../../../../components/ha-switch";
import "../../../../components/ha-yaml-editor";
import type { HaYamlEditor } from "../../../../components/ha-yaml-editor";
import { LovelaceCardConfig } from "../../../../data/lovelace/config/card";
import { LovelaceSectionConfig } from "../../../../data/lovelace/config/section";
import {
LovelaceGridSectionConfig,
LovelaceSectionConfig,
} from "../../../../data/lovelace/config/section";
import { haStyle } from "../../../../resources/styles";
import { HomeAssistant } from "../../../../types";
import { HuiCard } from "../../cards/hui-card";
@@ -27,6 +30,7 @@ import {
CardGridSize,
computeCardGridSize,
} from "../../common/compute-card-grid-size";
import { DEFAULT_GRID_BASE } from "../../sections/hui-grid-section";
import { LovelaceLayoutOptions } from "../../types";
@customElement("hui-card-layout-editor")
@@ -72,7 +76,10 @@ export class HuiCardLayoutEditor extends LitElement {
const value = this._computeCardGridSize(options);
const totalColumns = (this.sectionConfig.column_span ?? 1) * 4;
const totalColumns =
(this.sectionConfig.column_span ?? 1) *
((this.sectionConfig as LovelaceGridSectionConfig).grid_base ||
DEFAULT_GRID_BASE);
return html`
<div class="header">

View File

@@ -1,4 +1,4 @@
import { LitElement, html } from "lit";
import { html, LitElement } from "lit";
import { customElement, property } from "lit/decorators";
import memoizeOne from "memoize-one";
import { fireEvent } from "../../../../common/dom/fire_event";
@@ -6,12 +6,21 @@ import {
HaFormSchema,
SchemaUnion,
} from "../../../../components/ha-form/types";
import { LovelaceSectionRawConfig } from "../../../../data/lovelace/config/section";
import {
isStrategySection,
LovelaceGridSectionConfig,
LovelaceSectionRawConfig,
} from "../../../../data/lovelace/config/section";
import { LovelaceViewConfig } from "../../../../data/lovelace/config/view";
import { HomeAssistant } from "../../../../types";
import { LocalizeFunc } from "../../../../common/translations/localize";
import { DEFAULT_GRID_BASE } from "../../sections/hui-grid-section";
type GridDensity = "default" | "dense" | "custom";
type SettingsData = {
column_span?: number;
grid_density?: GridDensity;
};
@customElement("hui-section-settings-editor")
@@ -23,27 +32,89 @@ export class HuiDialogEditSection extends LitElement {
@property({ attribute: false }) public viewConfig!: LovelaceViewConfig;
private _schema = memoizeOne(
(maxColumns: number) =>
(
maxColumns: number,
localize: LocalizeFunc,
type?: string | undefined,
columnDensity?: GridDensity,
columnBase?: number
) =>
[
{
name: "column_span",
selector: {
number: {
min: 1,
max: maxColumns,
slider_ticks: true,
},
},
name: "title",
selector: { text: {} },
},
...(type === "grid"
? ([
{
name: "grid_density",
default: "default",
selector: {
select: {
mode: "list",
options: [
{
label: localize(
`ui.panel.lovelace.editor.edit_section.settings.grid_density_options.default`,
{ count: 4 }
),
value: "default",
},
{
label: localize(
`ui.panel.lovelace.editor.edit_section.settings.grid_density_options.dense`,
{ count: 6 }
),
value: "dense",
},
...(columnDensity === "custom" && columnBase
? [
{
label: localize(
`ui.panel.lovelace.editor.edit_section.settings.grid_density_options.custom`,
{ count: columnBase }
),
value: "custom",
},
]
: []),
],
},
},
},
] as const satisfies readonly HaFormSchema[])
: []),
] as const satisfies HaFormSchema[]
);
private _isGridSectionConfig(
config: LovelaceSectionRawConfig
): config is LovelaceGridSectionConfig {
return !isStrategySection(config) && config.type === "grid";
}
render() {
const gridBase = this._isGridSectionConfig(this.config)
? this.config.grid_base || DEFAULT_GRID_BASE
: undefined;
const columnDensity =
gridBase === 6 ? "dense" : gridBase === 4 ? "default" : "custom";
const data: SettingsData = {
column_span: this.config.column_span || 1,
grid_density: columnDensity,
};
const schema = this._schema(this.viewConfig.max_columns || 4);
const type = "type" in this.config ? this.config.type : undefined;
const schema = this._schema(
this.viewConfig.max_columns || 4,
this.hass.localize,
type,
columnDensity,
gridBase
);
return html`
<ha-form
@@ -75,11 +146,26 @@ export class HuiDialogEditSection extends LitElement {
ev.stopPropagation();
const newData = ev.detail.value as SettingsData;
const { column_span, grid_density } = newData;
const newConfig: LovelaceSectionRawConfig = {
...this.config,
column_span: newData.column_span,
column_span: column_span,
};
if (this._isGridSectionConfig(newConfig)) {
const gridBase =
grid_density === "default"
? 4
: grid_density === "dense"
? 6
: undefined;
if (gridBase) {
(newConfig as LovelaceGridSectionConfig).grid_base = gridBase;
}
}
fireEvent(this, "value-changed", { value: newConfig });
}
}

View File

@@ -8,7 +8,7 @@ import { fireEvent } from "../../../common/dom/fire_event";
import type { HaSortableOptions } from "../../../components/ha-sortable";
import { LovelaceSectionElement } from "../../../data/lovelace";
import { LovelaceCardConfig } from "../../../data/lovelace/config/card";
import type { LovelaceSectionConfig } from "../../../data/lovelace/config/section";
import type { LovelaceGridSectionConfig } from "../../../data/lovelace/config/section";
import { haStyle } from "../../../resources/styles";
import type { HomeAssistant } from "../../../types";
import { HuiCard } from "../cards/hui-card";
@@ -24,6 +24,8 @@ const CARD_SORTABLE_OPTIONS: HaSortableOptions = {
invertedSwapThreshold: 0.7,
} as HaSortableOptions;
export const DEFAULT_GRID_BASE = 4;
export class GridSection extends LitElement implements LovelaceSectionElement {
@property({ attribute: false }) public hass!: HomeAssistant;
@@ -37,11 +39,11 @@ export class GridSection extends LitElement implements LovelaceSectionElement {
@property({ attribute: false }) public cards: HuiCard[] = [];
@state() _config?: LovelaceSectionConfig;
@state() _config?: LovelaceGridSectionConfig;
@state() _dragging = false;
public setConfig(config: LovelaceSectionConfig): void {
public setConfig(config: LovelaceGridSectionConfig): void {
this._config = config;
}
@@ -64,6 +66,8 @@ export class GridSection extends LitElement implements LovelaceSectionElement {
const editMode = Boolean(this.lovelace?.editMode && !this.isStrategy);
const columnCount = this._config.grid_base ?? DEFAULT_GRID_BASE;
return html`
<ha-sortable
.disabled=${!editMode}
@@ -77,7 +81,10 @@ export class GridSection extends LitElement implements LovelaceSectionElement {
.options=${CARD_SORTABLE_OPTIONS}
invert-swap
>
<div class="container ${classMap({ "edit-mode": editMode })}">
<div
class="container ${classMap({ "edit-mode": editMode })}"
style=${styleMap({ "--column-count": columnCount })}
>
${repeat(
cardsConfig,
(cardConfig) => this._getKey(cardConfig),
@@ -165,7 +172,6 @@ export class GridSection extends LitElement implements LovelaceSectionElement {
haStyle,
css`
:host {
--base-column-count: 4;
--row-gap: var(--ha-section-grid-row-gap, 8px);
--column-gap: var(--ha-section-grid-column-gap, 8px);
--row-height: var(--ha-section-grid-row-height, 56px);
@@ -175,7 +181,7 @@ export class GridSection extends LitElement implements LovelaceSectionElement {
}
.container {
--grid-column-count: calc(
var(--base-column-count) * var(--column-span, 1)
var(--column-count, 4) * var(--column-span, 1)
);
display: grid;
grid-template-columns: repeat(

View File

@@ -2811,7 +2811,7 @@
"migrate": "Migrate",
"duplicate": "[%key:ui::common::duplicate%]",
"take_control": "Take control",
"confirm_take_control": "Your are viewing a preview of the automation config, do you want to take control?",
"confirm_take_control": "You are viewing a preview of the automation config, do you want to take control?",
"run": "[%key:ui::panel::config::automation::editor::actions::run%]",
"rename": "[%key:ui::panel::config::automation::editor::triggers::rename%]",
"show_trace": "Traces",
@@ -3054,6 +3054,9 @@
"type_input": "Value of a date/time helper or timestamp-class sensor",
"label": "Time",
"at": "At time",
"offset": "[%key:ui::panel::config::automation::editor::triggers::type::sun::offset%]",
"entity": "Entity with timestamp",
"offset_by": "offset by {offset}",
"mode": "Mode",
"description": {
"picker": "At a specific time, or on a specific date.",
@@ -3685,16 +3688,13 @@
"editor": {
"alias": "Name",
"icon": "Icon",
"id": "Entity ID",
"id_already_exists_save_error": "You can't save this script because the ID is not unique, pick another ID or leave it blank to automatically generate one.",
"id_already_exists": "This ID already exists",
"introduction": "Use scripts to run a sequence of actions.",
"show_trace": "[%key:ui::panel::config::automation::editor::show_trace%]",
"show_info": "[%key:ui::panel::config::automation::editor::show_info%]",
"rename": "[%key:ui::panel::config::automation::editor::triggers::rename%]",
"change_mode": "[%key:ui::panel::config::automation::editor::change_mode%]",
"take_control": "[%key:ui::panel::config::automation::editor::take_control%]",
"confirm_take_control": "Your are viewing a preview of the script config, do you want to take control?",
"confirm_take_control": "You are viewing a preview of the script config, do you want to take control?",
"read_only": "This script cannot be edited from the UI, because it is not stored in the ''scripts.yaml'' file.",
"unavailable": "Script is unavailable",
"migrate": "Migrate",
@@ -5714,7 +5714,13 @@
"title": "Title",
"title_helper": "The title will appear at the top of section. Leave empty to hide the title.",
"column_span": "Width",
"column_span_helper": "Larger sections will be made smaller to fit the display. (e.g. on mobile devices)"
"column_span_helper": "Larger sections will be made smaller to fit the display. (e.g. on mobile devices)",
"grid_density": "Grid density",
"grid_density_options": {
"default": "Default ({count} columns)",
"dense": "Dense ({count} columns)",
"custom": "Custom ({count} {count, plural,\n one {column}\n other {columns}\n})"
}
},
"visibility": {
"explanation": "The section will be shown when ALL conditions below are fulfilled. If no conditions are set, the section will always be shown."

514
yarn.lock
View File

@@ -38,16 +38,16 @@ __metadata:
languageName: node
linkType: hard
"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/compat-data@npm:7.25.7"
checksum: 10/8fdc451e0ed9e22d1324d504b84d4452ba6f4a806b0f5c364996ee4c2a77293f79ecf4da03033acb625c90bac115c61617eb6c894c2b88486724bcbe3af1a6eb
"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.7, @babel/compat-data@npm:^7.25.8":
version: 7.25.8
resolution: "@babel/compat-data@npm:7.25.8"
checksum: 10/269fcb0d89e02e36c8a11e0c1b960a6b4204e88f59f20c374d28f8e318f4cd5ded42dfedc4b54162065e6a10f71c0de651f5ed3f9b45d3a4b52240196df85726
languageName: node
linkType: hard
"@babel/core@npm:7.25.7, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.0, @babel/core@npm:^7.24.4":
version: 7.25.7
resolution: "@babel/core@npm:7.25.7"
"@babel/core@npm:7.25.8, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.0, @babel/core@npm:^7.24.4":
version: 7.25.8
resolution: "@babel/core@npm:7.25.8"
dependencies:
"@ampproject/remapping": "npm:^2.2.0"
"@babel/code-frame": "npm:^7.25.7"
@@ -55,16 +55,16 @@ __metadata:
"@babel/helper-compilation-targets": "npm:^7.25.7"
"@babel/helper-module-transforms": "npm:^7.25.7"
"@babel/helpers": "npm:^7.25.7"
"@babel/parser": "npm:^7.25.7"
"@babel/parser": "npm:^7.25.8"
"@babel/template": "npm:^7.25.7"
"@babel/traverse": "npm:^7.25.7"
"@babel/types": "npm:^7.25.7"
"@babel/types": "npm:^7.25.8"
convert-source-map: "npm:^2.0.0"
debug: "npm:^4.1.0"
gensync: "npm:^1.0.0-beta.2"
json5: "npm:^2.2.3"
semver: "npm:^6.3.1"
checksum: 10/f5fb7fb1e3ce357485cb33fe7984051a2d416472370b33144ae809df86a4663192b58cf0d828d40674d30f485790f3dd5aaf72eb659487673a4dc4be47cb3575
checksum: 10/31eb1a8ca1a3cc0026060720eb290e68205d95c5c00fbd831e69ddc0810f5920b8eb2749db1889ac0a0312b6eddbf321d18a996a88858f3b75c9582bef9ec1e4
languageName: node
linkType: hard
@@ -200,7 +200,7 @@ __metadata:
languageName: node
linkType: hard
"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.7, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3":
"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/helper-plugin-utils@npm:7.25.7"
checksum: 10/e1b0ea5e67b05378d6360e3fc370e99bfb247eed9f68145b5cce541da703424e1887fb6fc60ab2f7f743c72dcbfbed79d3032af43f2c251c229c734dc2572a5b
@@ -307,14 +307,14 @@ __metadata:
languageName: node
linkType: hard
"@babel/parser@npm:^7.23.5, @babel/parser@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/parser@npm:7.25.7"
"@babel/parser@npm:^7.23.5, @babel/parser@npm:^7.25.7, @babel/parser@npm:^7.25.8":
version: 7.25.8
resolution: "@babel/parser@npm:7.25.8"
dependencies:
"@babel/types": "npm:^7.25.7"
"@babel/types": "npm:^7.25.8"
bin:
parser: ./bin/babel-parser.js
checksum: 10/98eaa81bd378734a5f2790f02c7c076ecaba0839217445b4b84f45a7b391d640c34034253231a5bb2b2daf8204796f03584c3f94c10d46b004369bbb426a418f
checksum: 10/0396eb71e379903cedb43862f84ebb1bec809c41e82b4894d2e6e83b8e8bc636ba6eff45382e615baefdb2399ede76ca82247ecc3a9877ac16eb3140074a3276
languageName: node
linkType: hard
@@ -399,17 +399,6 @@ __metadata:
languageName: node
linkType: hard
"@babel/plugin-syntax-async-generators@npm:^7.8.4":
version: 7.8.4
resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.8.0"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367
languageName: node
linkType: hard
"@babel/plugin-syntax-class-properties@npm:^7.12.13":
version: 7.12.13
resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13"
@@ -421,17 +410,6 @@ __metadata:
languageName: node
linkType: hard
"@babel/plugin-syntax-class-static-block@npm:^7.14.5":
version: 7.14.5
resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.14.5"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/3e80814b5b6d4fe17826093918680a351c2d34398a914ce6e55d8083d72a9bdde4fbaf6a2dcea0e23a03de26dc2917ae3efd603d27099e2b98380345703bf948
languageName: node
linkType: hard
"@babel/plugin-syntax-decorators@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/plugin-syntax-decorators@npm:7.25.7"
@@ -443,28 +421,6 @@ __metadata:
languageName: node
linkType: hard
"@babel/plugin-syntax-dynamic-import@npm:^7.8.3":
version: 7.8.3
resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.8.0"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/ce307af83cf433d4ec42932329fad25fa73138ab39c7436882ea28742e1c0066626d224e0ad2988724c82644e41601cef607b36194f695cb78a1fcdc959637bd
languageName: node
linkType: hard
"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3":
version: 7.8.3
resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/85740478be5b0de185228e7814451d74ab8ce0a26fcca7613955262a26e99e8e15e9da58f60c754b84515d4c679b590dbd3f2148f0f58025f4ae706f1c5a5d4a
languageName: node
linkType: hard
"@babel/plugin-syntax-import-assertions@npm:^7.12.1, @babel/plugin-syntax-import-assertions@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/plugin-syntax-import-assertions@npm:7.25.7"
@@ -487,28 +443,6 @@ __metadata:
languageName: node
linkType: hard
"@babel/plugin-syntax-import-meta@npm:^7.10.4":
version: 7.10.4
resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.10.4"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/166ac1125d10b9c0c430e4156249a13858c0366d38844883d75d27389621ebe651115cb2ceb6dc011534d5055719fa1727b59f39e1ab3ca97820eef3dcab5b9b
languageName: node
linkType: hard
"@babel/plugin-syntax-json-strings@npm:^7.8.3":
version: 7.8.3
resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.8.0"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a
languageName: node
linkType: hard
"@babel/plugin-syntax-jsx@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/plugin-syntax-jsx@npm:7.25.7"
@@ -520,84 +454,7 @@ __metadata:
languageName: node
linkType: hard
"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4":
version: 7.10.4
resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.10.4"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886
languageName: node
linkType: hard
"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3":
version: 7.8.3
resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.8.0"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1
languageName: node
linkType: hard
"@babel/plugin-syntax-numeric-separator@npm:^7.10.4":
version: 7.10.4
resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.10.4"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1
languageName: node
linkType: hard
"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3":
version: 7.8.3
resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.8.0"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf
languageName: node
linkType: hard
"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3":
version: 7.8.3
resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.8.0"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9
languageName: node
linkType: hard
"@babel/plugin-syntax-optional-chaining@npm:^7.8.3":
version: 7.8.3
resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.8.0"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30
languageName: node
linkType: hard
"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5":
version: 7.14.5
resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.14.5"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda
languageName: node
linkType: hard
"@babel/plugin-syntax-top-level-await@npm:^7.12.1, @babel/plugin-syntax-top-level-await@npm:^7.14.5":
"@babel/plugin-syntax-top-level-await@npm:^7.12.1":
version: 7.14.5
resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5"
dependencies:
@@ -642,17 +499,16 @@ __metadata:
languageName: node
linkType: hard
"@babel/plugin-transform-async-generator-functions@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.7"
"@babel/plugin-transform-async-generator-functions@npm:^7.25.8":
version: 7.25.8
resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.8"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.25.7"
"@babel/helper-remap-async-to-generator": "npm:^7.25.7"
"@babel/plugin-syntax-async-generators": "npm:^7.8.4"
"@babel/traverse": "npm:^7.25.7"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/f5e14796bcb04db7f045833d695e49bb1178162c74754f67f25fd6934ebbd0e57a59784d76a23b3f472bbd3e5a0c33d433ab60e7c6a5c7ca240b54d8ca231baa
checksum: 10/ab3f74664fc03af357e8450711de60ec77149be668059dbc0c0d616d85253117aec0e5ffb2eccda3449d0099d5fba5ef32f0e6e12a52af5f72fbca437372ece5
languageName: node
linkType: hard
@@ -703,16 +559,15 @@ __metadata:
languageName: node
linkType: hard
"@babel/plugin-transform-class-static-block@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/plugin-transform-class-static-block@npm:7.25.7"
"@babel/plugin-transform-class-static-block@npm:^7.25.8":
version: 7.25.8
resolution: "@babel/plugin-transform-class-static-block@npm:7.25.8"
dependencies:
"@babel/helper-create-class-features-plugin": "npm:^7.25.7"
"@babel/helper-plugin-utils": "npm:^7.25.7"
"@babel/plugin-syntax-class-static-block": "npm:^7.14.5"
peerDependencies:
"@babel/core": ^7.12.0
checksum: 10/d6fa7132071860d4b6e58baa43c8efdd241d5b4ff3d31b0b6593390c7b39bf17ab549e427c08db550c84b0fb02eaad41fc96c2d299fbee4c0a6030315b0a5296
checksum: 10/160d5f9d1dbe4dc12c2998227b51b1ccfe9f4d11b1031d0698f34403961d5b9bb995cc86acf1855102b9be365370c97d8cea243802b73c7ba7b2b18b2ac3aae9
languageName: node
linkType: hard
@@ -790,15 +645,14 @@ __metadata:
languageName: node
linkType: hard
"@babel/plugin-transform-dynamic-import@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/plugin-transform-dynamic-import@npm:7.25.7"
"@babel/plugin-transform-dynamic-import@npm:^7.25.8":
version: 7.25.8
resolution: "@babel/plugin-transform-dynamic-import@npm:7.25.8"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.25.7"
"@babel/plugin-syntax-dynamic-import": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/a153f2a8b10a733f884a0ba0e680387d0ba643d40774885c26cceef90cc61b8e2f946a64e1764605189498a9a04e1d4da4e886c3e26a850e7c4e5ea5fb4b3f50
checksum: 10/cf2c105143461876f418d21893ac8f7f2b0a3c3cefb4374c3cd6338a19d3a0deed3565049f7436b94452c6471622958ef9248c7bdfeb34d2917710ac74431203
languageName: node
linkType: hard
@@ -814,15 +668,14 @@ __metadata:
languageName: node
linkType: hard
"@babel/plugin-transform-export-namespace-from@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.7"
"@babel/plugin-transform-export-namespace-from@npm:^7.25.8":
version: 7.25.8
resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.8"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.25.7"
"@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/e3ec589906380d1daa3349c358f8a56c9adc1c5003b4069321172e1e8160f2a497e9ae112ad1ac68e26dce33eb19019932cf938ad411493441ad202db0e72c2b
checksum: 10/439aac4ca1c7dbb63f021142e7abcd746049bf0d44cc5d2eb469ae3b75d90e076a43ff77190b74d8139402b53eea625b08c68651d3ce1d0a0915f5643450b3de
languageName: node
linkType: hard
@@ -851,15 +704,14 @@ __metadata:
languageName: node
linkType: hard
"@babel/plugin-transform-json-strings@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/plugin-transform-json-strings@npm:7.25.7"
"@babel/plugin-transform-json-strings@npm:^7.25.8":
version: 7.25.8
resolution: "@babel/plugin-transform-json-strings@npm:7.25.8"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.25.7"
"@babel/plugin-syntax-json-strings": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/99e7b19d5b8f0df78eb2eaef2c1c8734e634b08910b47d5c2f61e43e75bd94a9f8e51c8baf2d2fa181bf0a7424c08b0aee29a95ae5f9e59f50e51e188dc943a1
checksum: 10/adbc6a5a77b96db0f7e168c5fd2e56941df649808ce960f12447c1ba5d3893e9d458e7e14e3a5bd725ac5f3432ac1b3cf62b7413bbf7168a7c656dce51db711a
languageName: node
linkType: hard
@@ -874,15 +726,14 @@ __metadata:
languageName: node
linkType: hard
"@babel/plugin-transform-logical-assignment-operators@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.7"
"@babel/plugin-transform-logical-assignment-operators@npm:^7.25.8":
version: 7.25.8
resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.8"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.25.7"
"@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/28d00bae5637564243585e4fa044b9bc1da4b5c2ac2859e848e2db5f1c11c24dbc1ecc690755a00f593815a40d9cd99df2b31110ab68626840b22598ecf08d93
checksum: 10/7af0e4ad63c1a59f24894b64330040966204963b75287752a2d56703c7924d3a883a3c2497e1f03c4b1792f8664e0650cf6687010dc5483444c077de1daae9f5
languageName: node
linkType: hard
@@ -971,41 +822,38 @@ __metadata:
languageName: node
linkType: hard
"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.25.7"
"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.25.8":
version: 7.25.8
resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.25.8"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.25.7"
"@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/af4d2d17eb0bdfa4a0414eb02a402f65226363ea3cc6d781028fd0051893918eeb3cf13aaceef8ef58ef35b36362dbcc25cd018e0c24b5b441226e086bf3b58f
checksum: 10/d742fedc1abf404d7f40065cdff9afc521236607f0d06c48d1e471f43d3a7471010d1651ba4758d80c73347a39dc278d86c43a9c814382ded4e9c7c519ace021
languageName: node
linkType: hard
"@babel/plugin-transform-numeric-separator@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.7"
"@babel/plugin-transform-numeric-separator@npm:^7.25.8":
version: 7.25.8
resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.8"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.25.7"
"@babel/plugin-syntax-numeric-separator": "npm:^7.10.4"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/963ff47d27b7e61e0b346a29e2ff86ccf4fb779f7069b54c09e93376e6ed769523d81b9ef4ef60ae2d8fe35f3411a25d4b2e8d0a23850afa821f47f33c7b510c
checksum: 10/e27779a309dbc5fdba71d7eae0eac5506547632b0cbf8f0add8215797bbda4f4e61595750236fee3292600cc2d13892f133beccc52b2998534e0b10c668db857
languageName: node
linkType: hard
"@babel/plugin-transform-object-rest-spread@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.7"
"@babel/plugin-transform-object-rest-spread@npm:^7.25.8":
version: 7.25.8
resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.8"
dependencies:
"@babel/helper-compilation-targets": "npm:^7.25.7"
"@babel/helper-plugin-utils": "npm:^7.25.7"
"@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3"
"@babel/plugin-transform-parameters": "npm:^7.25.7"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/b831c56921cb4818956941fd6eb54ba75fa51e5e5c1dc00466d70c79fea2a73d166a6ff02e8a27d63e40238de49f966af2bd243a8b6d281f784672f1a285d47c
checksum: 10/38f0fab8321a0b1e44784b7371f8bd5601eb885a7e9d88d7904dedda33a72f500d84792758c47e1541336c1b7592b6d956a85c2fd8e2e294f34c0303cc73442c
languageName: node
linkType: hard
@@ -1021,28 +869,26 @@ __metadata:
languageName: node
linkType: hard
"@babel/plugin-transform-optional-catch-binding@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.25.7"
"@babel/plugin-transform-optional-catch-binding@npm:^7.25.8":
version: 7.25.8
resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.25.8"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.25.7"
"@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/b195680e047bd2e0e36debfb75e5649f0fd8c88185e33c627c5418c68f9990cb4d96faccfbf47a2fdf9ff848a9e013ca077647616aa9dc1f78fa250ef1521437
checksum: 10/9ecf32accc5b12b83ce2f6537c9eac87f2b0f89abfe91a8a8c87ea5ece05820988415271d0fdaf7f565e2c0c837afb24fc644779029b98b1401782d9c0d73642
languageName: node
linkType: hard
"@babel/plugin-transform-optional-chaining@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.7"
"@babel/plugin-transform-optional-chaining@npm:^7.25.7, @babel/plugin-transform-optional-chaining@npm:^7.25.8":
version: 7.25.8
resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.8"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.25.7"
"@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7"
"@babel/plugin-syntax-optional-chaining": "npm:^7.8.3"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/9c0a742eb3111f250b95065cd7d27b31c724d3f3c29b1de3c6655632172f69d5aa658d3ebff76d3b530b6792b6f4cf4845f4132ac8a1fea6e57ff19e3ec6f531
checksum: 10/ffb5d81e6dbb28907d5346c8e12a1ed1ea0e30170fbe609d48d0466cdbc9d11b5774c8781682693f7cf7bd39da6111980e54813af96c6b3086dc769369c67d28
languageName: node
linkType: hard
@@ -1069,17 +915,16 @@ __metadata:
languageName: node
linkType: hard
"@babel/plugin-transform-private-property-in-object@npm:^7.25.7":
version: 7.25.7
resolution: "@babel/plugin-transform-private-property-in-object@npm:7.25.7"
"@babel/plugin-transform-private-property-in-object@npm:^7.25.8":
version: 7.25.8
resolution: "@babel/plugin-transform-private-property-in-object@npm:7.25.8"
dependencies:
"@babel/helper-annotate-as-pure": "npm:^7.25.7"
"@babel/helper-create-class-features-plugin": "npm:^7.25.7"
"@babel/helper-plugin-utils": "npm:^7.25.7"
"@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/c23786b9c123cceb0f69ab074377236825d76db090413db0b92d1a412b0e488e7ebde3e6155883ddbce6616114c54693485274a5d2b8a9a280b40781f80bd343
checksum: 10/c612023879930c951e3a993104bbc3b78169aef6c38233758ee3358a7ab76954b41880bca67635df218dc6893aabad138f3783d508dc715419e62c8d1fad9088
languageName: node
linkType: hard
@@ -1251,11 +1096,11 @@ __metadata:
languageName: node
linkType: hard
"@babel/preset-env@npm:7.25.7, @babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.13.0":
version: 7.25.7
resolution: "@babel/preset-env@npm:7.25.7"
"@babel/preset-env@npm:7.25.8, @babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.13.0":
version: 7.25.8
resolution: "@babel/preset-env@npm:7.25.8"
dependencies:
"@babel/compat-data": "npm:^7.25.7"
"@babel/compat-data": "npm:^7.25.8"
"@babel/helper-compilation-targets": "npm:^7.25.7"
"@babel/helper-plugin-utils": "npm:^7.25.7"
"@babel/helper-validator-option": "npm:^7.25.7"
@@ -1265,45 +1110,30 @@ __metadata:
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.25.7"
"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.25.7"
"@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2"
"@babel/plugin-syntax-async-generators": "npm:^7.8.4"
"@babel/plugin-syntax-class-properties": "npm:^7.12.13"
"@babel/plugin-syntax-class-static-block": "npm:^7.14.5"
"@babel/plugin-syntax-dynamic-import": "npm:^7.8.3"
"@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3"
"@babel/plugin-syntax-import-assertions": "npm:^7.25.7"
"@babel/plugin-syntax-import-attributes": "npm:^7.25.7"
"@babel/plugin-syntax-import-meta": "npm:^7.10.4"
"@babel/plugin-syntax-json-strings": "npm:^7.8.3"
"@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4"
"@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3"
"@babel/plugin-syntax-numeric-separator": "npm:^7.10.4"
"@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3"
"@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3"
"@babel/plugin-syntax-optional-chaining": "npm:^7.8.3"
"@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5"
"@babel/plugin-syntax-top-level-await": "npm:^7.14.5"
"@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6"
"@babel/plugin-transform-arrow-functions": "npm:^7.25.7"
"@babel/plugin-transform-async-generator-functions": "npm:^7.25.7"
"@babel/plugin-transform-async-generator-functions": "npm:^7.25.8"
"@babel/plugin-transform-async-to-generator": "npm:^7.25.7"
"@babel/plugin-transform-block-scoped-functions": "npm:^7.25.7"
"@babel/plugin-transform-block-scoping": "npm:^7.25.7"
"@babel/plugin-transform-class-properties": "npm:^7.25.7"
"@babel/plugin-transform-class-static-block": "npm:^7.25.7"
"@babel/plugin-transform-class-static-block": "npm:^7.25.8"
"@babel/plugin-transform-classes": "npm:^7.25.7"
"@babel/plugin-transform-computed-properties": "npm:^7.25.7"
"@babel/plugin-transform-destructuring": "npm:^7.25.7"
"@babel/plugin-transform-dotall-regex": "npm:^7.25.7"
"@babel/plugin-transform-duplicate-keys": "npm:^7.25.7"
"@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.25.7"
"@babel/plugin-transform-dynamic-import": "npm:^7.25.7"
"@babel/plugin-transform-dynamic-import": "npm:^7.25.8"
"@babel/plugin-transform-exponentiation-operator": "npm:^7.25.7"
"@babel/plugin-transform-export-namespace-from": "npm:^7.25.7"
"@babel/plugin-transform-export-namespace-from": "npm:^7.25.8"
"@babel/plugin-transform-for-of": "npm:^7.25.7"
"@babel/plugin-transform-function-name": "npm:^7.25.7"
"@babel/plugin-transform-json-strings": "npm:^7.25.7"
"@babel/plugin-transform-json-strings": "npm:^7.25.8"
"@babel/plugin-transform-literals": "npm:^7.25.7"
"@babel/plugin-transform-logical-assignment-operators": "npm:^7.25.7"
"@babel/plugin-transform-logical-assignment-operators": "npm:^7.25.8"
"@babel/plugin-transform-member-expression-literals": "npm:^7.25.7"
"@babel/plugin-transform-modules-amd": "npm:^7.25.7"
"@babel/plugin-transform-modules-commonjs": "npm:^7.25.7"
@@ -1311,15 +1141,15 @@ __metadata:
"@babel/plugin-transform-modules-umd": "npm:^7.25.7"
"@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.25.7"
"@babel/plugin-transform-new-target": "npm:^7.25.7"
"@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.25.7"
"@babel/plugin-transform-numeric-separator": "npm:^7.25.7"
"@babel/plugin-transform-object-rest-spread": "npm:^7.25.7"
"@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.25.8"
"@babel/plugin-transform-numeric-separator": "npm:^7.25.8"
"@babel/plugin-transform-object-rest-spread": "npm:^7.25.8"
"@babel/plugin-transform-object-super": "npm:^7.25.7"
"@babel/plugin-transform-optional-catch-binding": "npm:^7.25.7"
"@babel/plugin-transform-optional-chaining": "npm:^7.25.7"
"@babel/plugin-transform-optional-catch-binding": "npm:^7.25.8"
"@babel/plugin-transform-optional-chaining": "npm:^7.25.8"
"@babel/plugin-transform-parameters": "npm:^7.25.7"
"@babel/plugin-transform-private-methods": "npm:^7.25.7"
"@babel/plugin-transform-private-property-in-object": "npm:^7.25.7"
"@babel/plugin-transform-private-property-in-object": "npm:^7.25.8"
"@babel/plugin-transform-property-literals": "npm:^7.25.7"
"@babel/plugin-transform-regenerator": "npm:^7.25.7"
"@babel/plugin-transform-reserved-words": "npm:^7.25.7"
@@ -1340,7 +1170,7 @@ __metadata:
semver: "npm:^6.3.1"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10/2d09aa2cb765a9a1c8a7566e22948e69d69de6b9b763322790bd72ec0bd5bcadf7b02abbc6ad1bab917e1f6d60b1a7f4606778d88cc7d7e1388cc52d292db97d
checksum: 10/501d78f56df8bf6f98a42da5db475db183048c4280b3292cf988b6baf01843915161f3b341ed525e2fcafcc47726798532b0e1dc7eb80aa29cc88c9d6f94ee6e
languageName: node
linkType: hard
@@ -1407,14 +1237,14 @@ __metadata:
languageName: node
linkType: hard
"@babel/types@npm:^7.25.7, @babel/types@npm:^7.4.4":
version: 7.25.7
resolution: "@babel/types@npm:7.25.7"
"@babel/types@npm:^7.25.7, @babel/types@npm:^7.25.8, @babel/types@npm:^7.4.4":
version: 7.25.8
resolution: "@babel/types@npm:7.25.8"
dependencies:
"@babel/helper-string-parser": "npm:^7.25.7"
"@babel/helper-validator-identifier": "npm:^7.25.7"
to-fast-properties: "npm:^2.0.0"
checksum: 10/4504e16a95b6a67d50cfaa389bcbc0621019084cff73784ad4797f82d1bb76c870cb0abb6d9881d5776eb06b4607419a2b1205a08c3e87b152d74bd0884b822a
checksum: 10/973108dbb189916bb87360f2beff43ae97f1b08f1c071bc6499d363cce48b3c71674bf3b59dfd617f8c5062d1c76dc2a64232bc07b6ccef831fd0c06162d44d9
languageName: node
linkType: hard
@@ -1582,13 +1412,14 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/ecma402-abstract@npm:2.0.0":
version: 2.0.0
resolution: "@formatjs/ecma402-abstract@npm:2.0.0"
"@formatjs/ecma402-abstract@npm:2.1.0":
version: 2.1.0
resolution: "@formatjs/ecma402-abstract@npm:2.1.0"
dependencies:
"@formatjs/fast-memoize": "npm:2.2.0"
"@formatjs/intl-localematcher": "npm:0.5.4"
tslib: "npm:^2.4.0"
checksum: 10/41543ba509ea3c7d6530d57b888115f7ca242f13462a951fae4d1d1f28bae10c999f4dea28a71d2f08366d4889a3f5276cae3a16c6f6417b841a84fd314c2234
checksum: 10/8e25d2739c03913c61f0ec12a71ab7baf03386cff540e7470bee73e78e4fe9f09c9dfa860223f1177acdcfd0fa341041d25b2fe4e0a77e7209d0680831982bac
languageName: node
linkType: hard
@@ -1601,55 +1432,56 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/icu-messageformat-parser@npm:2.7.8":
version: 2.7.8
resolution: "@formatjs/icu-messageformat-parser@npm:2.7.8"
"@formatjs/icu-messageformat-parser@npm:2.7.9":
version: 2.7.9
resolution: "@formatjs/icu-messageformat-parser@npm:2.7.9"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/icu-skeleton-parser": "npm:1.8.2"
"@formatjs/ecma402-abstract": "npm:2.1.0"
"@formatjs/icu-skeleton-parser": "npm:1.8.3"
tslib: "npm:^2.4.0"
checksum: 10/292fd36268ad84337c0e798fc73b58e8f3cf3f362cea031f710fd78053d29b420526ab766a95745e162ae4a11bf846bc2f7ae5c2c0a3288d3bc9daa97a3be8c1
checksum: 10/8bffac5e5b832e18786f383fb60966cfa53da7c94aa9bc5e1b19bb4772aacbfbccd128e599395d1a3a1642930debfc41c6198a178437d98b9a8804dd875c6755
languageName: node
linkType: hard
"@formatjs/icu-skeleton-parser@npm:1.8.2":
version: 1.8.2
resolution: "@formatjs/icu-skeleton-parser@npm:1.8.2"
"@formatjs/icu-skeleton-parser@npm:1.8.3":
version: 1.8.3
resolution: "@formatjs/icu-skeleton-parser@npm:1.8.3"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/ecma402-abstract": "npm:2.1.0"
tslib: "npm:^2.4.0"
checksum: 10/a06b61cf6c298bbbc23349e391bad8a1cf0a6a32dc4928a4681a3aa6f38dd8c6a181dc4067e228f67584d4dc181d862704095e65c38cfac077c984dc24ba54d3
checksum: 10/9105170d65d6793be39f5b085c295bd773e5254c781e5d2c3ad389f21c96afaee1fc7f126b7d36a75a044283458f1cd9a4abdd0b8cca9241e72161fa71e2020b
languageName: node
linkType: hard
"@formatjs/intl-datetimeformat@npm:6.12.5":
version: 6.12.5
resolution: "@formatjs/intl-datetimeformat@npm:6.12.5"
"@formatjs/intl-datetimeformat@npm:6.13.0":
version: 6.13.0
resolution: "@formatjs/intl-datetimeformat@npm:6.13.0"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/ecma402-abstract": "npm:2.1.0"
"@formatjs/intl-localematcher": "npm:0.5.4"
tslib: "npm:^2.4.0"
checksum: 10/9dd2409f077931270405c7f2d28e0996d7db849f69b7ed9aac85164092435da4054345f9522c03fbba390eeeeda2404b6843800624ba2896bed96632721be01a
checksum: 10/a9d2451b1c4a8fa12628d5645dc710a853796c686072407f3e313527c11a61129bf5c65de912dc8f3f30780e5cc25ae9f6739903ec7a36d17a070b56b33a7314
languageName: node
linkType: hard
"@formatjs/intl-displaynames@npm:6.6.8":
version: 6.6.8
resolution: "@formatjs/intl-displaynames@npm:6.6.8"
"@formatjs/intl-displaynames@npm:6.6.9":
version: 6.6.9
resolution: "@formatjs/intl-displaynames@npm:6.6.9"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/ecma402-abstract": "npm:2.1.0"
"@formatjs/intl-localematcher": "npm:0.5.4"
tslib: "npm:^2.4.0"
checksum: 10/d305787fe2a35f9725b1293f70a2ccc454310c5df48ad62613d674a648dd318bec2a3ccd8656047443d1e438bb1cf8140e354d9c4a4101ec38df00614e0244b7
checksum: 10/b235a85fb0295b64e9b7bb033309aff0652bd06695c08ead38a5c717464c59e99d2003a50b8e936a627dd7e772254b9fd5da165a24f42c3c5c292fdcf67cb9af
languageName: node
linkType: hard
"@formatjs/intl-enumerator@npm:1.4.7":
version: 1.4.7
resolution: "@formatjs/intl-enumerator@npm:1.4.7"
"@formatjs/intl-enumerator@npm:1.5.0":
version: 1.5.0
resolution: "@formatjs/intl-enumerator@npm:1.5.0"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.1.0"
tslib: "npm:^2.4.0"
checksum: 10/14234c9de2a5143d4839a032e2a876b3acd75c6107868b4d771969354c359f4fa2256d9385ca8bec196273ea7b844d7f6d598ca0ca3832c06e14573494aaf561
checksum: 10/92beee0112200d8d89838d048cdd489eb8f53ea0ff739ee7a7126f66468d6179b4fa98a95e3398efa981fffaac51faf7a3c06bcef2fc3f51ea8d4b33a25cd232
languageName: node
linkType: hard
@@ -1662,26 +1494,26 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/intl-listformat@npm:7.5.7":
version: 7.5.7
resolution: "@formatjs/intl-listformat@npm:7.5.7"
"@formatjs/intl-listformat@npm:7.5.8":
version: 7.5.8
resolution: "@formatjs/intl-listformat@npm:7.5.8"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/ecma402-abstract": "npm:2.1.0"
"@formatjs/intl-localematcher": "npm:0.5.4"
tslib: "npm:^2.4.0"
checksum: 10/ba7e1ee9c29f2a8cfc66d51c5f273f279ced048b427533aa3d502cf7d12d510e79965d0471a158fd41d7cc7314f688c56d863c3ebec8e5e550d687f64d210794
checksum: 10/761de6c738758550ea3007bac20cda648aaa45e114597c0ecdd30624c2eafbc76b5003ae011a6fe96c797b747a745aad4c88347a81aa0e5ab640e8636bd6fbb2
languageName: node
linkType: hard
"@formatjs/intl-locale@npm:4.0.0":
version: 4.0.0
resolution: "@formatjs/intl-locale@npm:4.0.0"
"@formatjs/intl-locale@npm:4.0.1":
version: 4.0.1
resolution: "@formatjs/intl-locale@npm:4.0.1"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/intl-enumerator": "npm:1.4.7"
"@formatjs/ecma402-abstract": "npm:2.1.0"
"@formatjs/intl-enumerator": "npm:1.5.0"
"@formatjs/intl-getcanonicallocales": "npm:2.3.0"
tslib: "npm:^2.4.0"
checksum: 10/5c7ba139800498ca381ca7df708b18127a2bc9187e7d9fce8234426e2e1a8552a6cc44d370e3998afad46a43cd082ccc5a4b00ef738167552c1756f56e7dd4ca
checksum: 10/6f3412064fc314d964a3196bd4b16fab677ffa8dd64e45e4324d108a4e177a10a60dddd5224deccb1d35405207f3e1ab4d2a626e8d77bf2c812fb8e752b21140
languageName: node
linkType: hard
@@ -1694,36 +1526,36 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/intl-numberformat@npm:8.10.3":
version: 8.10.3
resolution: "@formatjs/intl-numberformat@npm:8.10.3"
"@formatjs/intl-numberformat@npm:8.11.0":
version: 8.11.0
resolution: "@formatjs/intl-numberformat@npm:8.11.0"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/ecma402-abstract": "npm:2.1.0"
"@formatjs/intl-localematcher": "npm:0.5.4"
tslib: "npm:^2.4.0"
checksum: 10/7044fdef3cd8c51f801304342a28f31fa9f82b37cd3388bd7f45bea5b54f259a1e38769d628db2f17a27fb9faa9d8316e1ab0afc9d9dc85cd865f2c142666eb3
checksum: 10/ca08753068ae375f9c1a6be871005fe64b758005aa54ae8c083ea9efa7ae023a06312031d1bf03b9f022005e3aba2796c1fc183efe0c172bd4eea562301aec91
languageName: node
linkType: hard
"@formatjs/intl-pluralrules@npm:5.2.14":
version: 5.2.14
resolution: "@formatjs/intl-pluralrules@npm:5.2.14"
"@formatjs/intl-pluralrules@npm:5.2.15":
version: 5.2.15
resolution: "@formatjs/intl-pluralrules@npm:5.2.15"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/ecma402-abstract": "npm:2.1.0"
"@formatjs/intl-localematcher": "npm:0.5.4"
tslib: "npm:^2.4.0"
checksum: 10/831dfe6b8ad84472f836091c2da4d925fba238fa2b1c36befaca668ff399f43ac7d97d715842db7a1a3baccccf611b709e368b27875be86b471592276c00cd2b
checksum: 10/8a6c756afeca3d1cb5b9f93a479993e6f036341ea32264a4542e6f65488733f9c97dc8457ba6d3d049de7160177040e47bb51f8dbbc5268e22d6800ef5d90802
languageName: node
linkType: hard
"@formatjs/intl-relativetimeformat@npm:11.2.14":
version: 11.2.14
resolution: "@formatjs/intl-relativetimeformat@npm:11.2.14"
"@formatjs/intl-relativetimeformat@npm:11.2.15":
version: 11.2.15
resolution: "@formatjs/intl-relativetimeformat@npm:11.2.15"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/ecma402-abstract": "npm:2.1.0"
"@formatjs/intl-localematcher": "npm:0.5.4"
tslib: "npm:^2.4.0"
checksum: 10/a61febd0262c803b568598f64f734a3f2e5f06934b52d19ebd5cc48b8ad0b8e282868fb28cbceff49e6494ad924d86e5af1714a108b16c945bad349453cd58b8
checksum: 10/a7890892cd52e37c427982a700d7613cd6a68f73e9c0bf785e9841442b37ba491d1eded3fe6df8ad4ccba4754ad6b5e9b3cc082a5d227b2988a8b6709775bea5
languageName: node
linkType: hard
@@ -8867,11 +8699,11 @@ __metadata:
version: 0.0.0-use.local
resolution: "home-assistant-frontend@workspace:."
dependencies:
"@babel/core": "npm:7.25.7"
"@babel/core": "npm:7.25.8"
"@babel/helper-define-polyfill-provider": "npm:0.6.2"
"@babel/plugin-proposal-decorators": "npm:7.25.7"
"@babel/plugin-transform-runtime": "npm:7.25.7"
"@babel/preset-env": "npm:7.25.7"
"@babel/preset-env": "npm:7.25.8"
"@babel/preset-typescript": "npm:7.25.7"
"@babel/runtime": "npm:7.25.7"
"@braintree/sanitize-url": "npm:7.1.0"
@@ -8884,14 +8716,14 @@ __metadata:
"@codemirror/state": "npm:6.4.1"
"@codemirror/view": "npm:6.34.1"
"@egjs/hammerjs": "npm:2.0.17"
"@formatjs/intl-datetimeformat": "npm:6.12.5"
"@formatjs/intl-displaynames": "npm:6.6.8"
"@formatjs/intl-datetimeformat": "npm:6.13.0"
"@formatjs/intl-displaynames": "npm:6.6.9"
"@formatjs/intl-getcanonicallocales": "npm:2.3.0"
"@formatjs/intl-listformat": "npm:7.5.7"
"@formatjs/intl-locale": "npm:4.0.0"
"@formatjs/intl-numberformat": "npm:8.10.3"
"@formatjs/intl-pluralrules": "npm:5.2.14"
"@formatjs/intl-relativetimeformat": "npm:11.2.14"
"@formatjs/intl-listformat": "npm:7.5.8"
"@formatjs/intl-locale": "npm:4.0.1"
"@formatjs/intl-numberformat": "npm:8.11.0"
"@formatjs/intl-pluralrules": "npm:5.2.15"
"@formatjs/intl-relativetimeformat": "npm:11.2.15"
"@fullcalendar/core": "npm:6.1.15"
"@fullcalendar/daygrid": "npm:6.1.15"
"@fullcalendar/interaction": "npm:6.1.15"
@@ -9022,7 +8854,7 @@ __metadata:
husky: "npm:9.1.6"
idb-keyval: "npm:6.2.1"
instant-mocha: "npm:1.5.2"
intl-messageformat: "npm:10.5.14"
intl-messageformat: "npm:10.6.0"
js-yaml: "npm:4.1.0"
jszip: "npm:3.10.1"
leaflet: "npm:1.9.4"
@@ -9033,7 +8865,7 @@ __metadata:
lodash.merge: "npm:4.6.2"
lodash.template: "npm:4.5.0"
luxon: "npm:3.5.0"
magic-string: "npm:0.30.11"
magic-string: "npm:0.30.12"
map-stream: "npm:0.0.7"
marked: "npm:14.1.2"
memoize-one: "npm:6.0.0"
@@ -9066,7 +8898,7 @@ __metadata:
ts-lit-plugin: "npm:2.0.2"
tsparticles-engine: "npm:2.12.0"
tsparticles-preset-links: "npm:2.12.0"
typescript: "npm:5.6.2"
typescript: "npm:5.6.3"
ua-parser-js: "npm:1.0.39"
unfetch: "npm:5.0.0"
vis-data: "npm:7.1.9"
@@ -9472,15 +9304,15 @@ __metadata:
languageName: node
linkType: hard
"intl-messageformat@npm:10.5.14":
version: 10.5.14
resolution: "intl-messageformat@npm:10.5.14"
"intl-messageformat@npm:10.6.0":
version: 10.6.0
resolution: "intl-messageformat@npm:10.6.0"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.0.0"
"@formatjs/ecma402-abstract": "npm:2.1.0"
"@formatjs/fast-memoize": "npm:2.2.0"
"@formatjs/icu-messageformat-parser": "npm:2.7.8"
"@formatjs/icu-messageformat-parser": "npm:2.7.9"
tslib: "npm:^2.4.0"
checksum: 10/01692e92671b00d2423a7db405e6bb8e42bea52445dec931abaa8a8c47e3a7da17dddd3cd0faa33cb6a614370ea230b2c3980ae106cafa8b760e50ac4db0952f
checksum: 10/14e6eeaebfbbcd8c7032a6dab623438575aa4407b509cac5ee69b126209faf0f0717e566e223fa60608d7dd5f4ec5459d0dd9c6c89adda302cb008d67b536466
languageName: node
linkType: hard
@@ -10731,12 +10563,12 @@ __metadata:
languageName: node
linkType: hard
"magic-string@npm:0.30.11, magic-string@npm:^0.30.3":
version: 0.30.11
resolution: "magic-string@npm:0.30.11"
"magic-string@npm:0.30.12, magic-string@npm:^0.30.3":
version: 0.30.12
resolution: "magic-string@npm:0.30.12"
dependencies:
"@jridgewell/sourcemap-codec": "npm:^1.5.0"
checksum: 10/b784d2240252f5b1e755d487354ada4c672cbca16f045144f7185a75b059210e5fcca7be7be03ef1bac2ca754c4428b21d36ae64a9057ba429916f06b8c54eb2
checksum: 10/98016180a52b28efc1362152b45671067facccdaead6b70c1c14c566cba98491bc2e1336474b0996397730dca24400e85649da84d3da62b2560ed03c067573e6
languageName: node
linkType: hard
@@ -14203,13 +14035,13 @@ __metadata:
languageName: node
linkType: hard
"typescript@npm:5.6.2":
version: 5.6.2
resolution: "typescript@npm:5.6.2"
"typescript@npm:5.6.3":
version: 5.6.3
resolution: "typescript@npm:5.6.3"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: 10/f95365d4898f357823e93d334ecda9fcade54f009b397c7d05b7621cd9e865981033cf89ccde0f3e3a7b73b1fdbae18e92bc77db237b43e912f053fef0f9a53b
checksum: 10/c328e418e124b500908781d9f7b9b93cf08b66bf5936d94332b463822eea2f4e62973bfb3b8a745fdc038785cb66cf59d1092bac3ec2ac6a3e5854687f7833f1
languageName: node
linkType: hard
@@ -14223,13 +14055,13 @@ __metadata:
languageName: node
linkType: hard
"typescript@patch:typescript@npm%3A5.6.2#optional!builtin<compat/typescript>":
version: 5.6.2
resolution: "typescript@patch:typescript@npm%3A5.6.2#optional!builtin<compat/typescript>::version=5.6.2&hash=8c6c40"
"typescript@patch:typescript@npm%3A5.6.3#optional!builtin<compat/typescript>":
version: 5.6.3
resolution: "typescript@patch:typescript@npm%3A5.6.3#optional!builtin<compat/typescript>::version=5.6.3&hash=8c6c40"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: 10/8bfc7ca0d9feca4c3fcbd6c70741abfcd714197d6448e68225ae71e462447d904d3bfba49759a8fbe4956d87f054e2d346833c8349c222daa594a2626d4e1be8
checksum: 10/00504c01ee42d470c23495426af07512e25e6546bce7e24572e72a9ca2e6b2e9bea63de4286c3cfea644874da1467dcfca23f4f98f7caf20f8b03c0213bb6837
languageName: node
linkType: hard