mirror of
https://github.com/home-assistant/frontend.git
synced 2025-11-11 12:01:07 +00:00
Compare commits
2 Commits
copilot/fi
...
refactor-c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2c95409ebd | ||
|
|
01a86b313a |
2
.github/workflows/relative-ci.yaml
vendored
2
.github/workflows/relative-ci.yaml
vendored
@@ -17,7 +17,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Send bundle stats and build information to RelativeCI
|
- name: Send bundle stats and build information to RelativeCI
|
||||||
uses: relative-ci/agent-action@feb19ddc698445db27401f1490f6ac182da0816f # v3.2.0
|
uses: relative-ci/agent-action@8504826a02078b05756e4c07e380023cc2c4274a # v3.1.0
|
||||||
with:
|
with:
|
||||||
key: ${{ secrets[format('RELATIVE_CI_KEY_{0}_{1}', matrix.bundle, matrix.build)] }}
|
key: ${{ secrets[format('RELATIVE_CI_KEY_{0}_{1}', matrix.bundle, matrix.build)] }}
|
||||||
token: ${{ github.token }}
|
token: ${{ github.token }}
|
||||||
|
|||||||
6
.github/workflows/release.yaml
vendored
6
.github/workflows/release.yaml
vendored
@@ -55,7 +55,7 @@ jobs:
|
|||||||
script/release
|
script/release
|
||||||
|
|
||||||
- name: Upload release assets
|
- name: Upload release assets
|
||||||
uses: softprops/action-gh-release@5be0e66d93ac7ed76da52eca8bb058f665c3a5fe # v2.4.2
|
uses: softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2.4.1
|
||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
dist/*.whl
|
dist/*.whl
|
||||||
@@ -108,7 +108,7 @@ jobs:
|
|||||||
- name: Tar folder
|
- name: Tar folder
|
||||||
run: tar -czf landing-page/home_assistant_frontend_landingpage-${{ github.event.release.tag_name }}.tar.gz -C landing-page/dist .
|
run: tar -czf landing-page/home_assistant_frontend_landingpage-${{ github.event.release.tag_name }}.tar.gz -C landing-page/dist .
|
||||||
- name: Upload release asset
|
- name: Upload release asset
|
||||||
uses: softprops/action-gh-release@5be0e66d93ac7ed76da52eca8bb058f665c3a5fe # v2.4.2
|
uses: softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2.4.1
|
||||||
with:
|
with:
|
||||||
files: landing-page/home_assistant_frontend_landingpage-${{ github.event.release.tag_name }}.tar.gz
|
files: landing-page/home_assistant_frontend_landingpage-${{ github.event.release.tag_name }}.tar.gz
|
||||||
|
|
||||||
@@ -137,6 +137,6 @@ jobs:
|
|||||||
- name: Tar folder
|
- name: Tar folder
|
||||||
run: tar -czf hassio/home_assistant_frontend_supervisor-${{ github.event.release.tag_name }}.tar.gz -C hassio/build .
|
run: tar -czf hassio/home_assistant_frontend_supervisor-${{ github.event.release.tag_name }}.tar.gz -C hassio/build .
|
||||||
- name: Upload release asset
|
- name: Upload release asset
|
||||||
uses: softprops/action-gh-release@5be0e66d93ac7ed76da52eca8bb058f665c3a5fe # v2.4.2
|
uses: softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2.4.1
|
||||||
with:
|
with:
|
||||||
files: hassio/home_assistant_frontend_supervisor-${{ github.event.release.tag_name }}.tar.gz
|
files: hassio/home_assistant_frontend_supervisor-${{ github.event.release.tag_name }}.tar.gz
|
||||||
|
|||||||
10
package.json
10
package.json
@@ -122,7 +122,7 @@
|
|||||||
"lit": "3.3.1",
|
"lit": "3.3.1",
|
||||||
"lit-html": "3.3.1",
|
"lit-html": "3.3.1",
|
||||||
"luxon": "3.7.2",
|
"luxon": "3.7.2",
|
||||||
"marked": "16.4.2",
|
"marked": "16.4.1",
|
||||||
"memoize-one": "6.0.0",
|
"memoize-one": "6.0.0",
|
||||||
"node-vibrant": "4.0.3",
|
"node-vibrant": "4.0.3",
|
||||||
"object-hash": "3.0.0",
|
"object-hash": "3.0.0",
|
||||||
@@ -157,8 +157,8 @@
|
|||||||
"@octokit/auth-oauth-device": "8.0.3",
|
"@octokit/auth-oauth-device": "8.0.3",
|
||||||
"@octokit/plugin-retry": "8.0.3",
|
"@octokit/plugin-retry": "8.0.3",
|
||||||
"@octokit/rest": "22.0.1",
|
"@octokit/rest": "22.0.1",
|
||||||
"@rsdoctor/rspack-plugin": "1.3.8",
|
"@rsdoctor/rspack-plugin": "1.3.7",
|
||||||
"@rspack/core": "1.6.1",
|
"@rspack/core": "1.6.0",
|
||||||
"@rspack/dev-server": "1.1.4",
|
"@rspack/dev-server": "1.1.4",
|
||||||
"@types/babel__plugin-transform-runtime": "7.9.5",
|
"@types/babel__plugin-transform-runtime": "7.9.5",
|
||||||
"@types/chromecast-caf-receiver": "6.0.22",
|
"@types/chromecast-caf-receiver": "6.0.22",
|
||||||
@@ -178,7 +178,7 @@
|
|||||||
"@types/tar": "6.1.13",
|
"@types/tar": "6.1.13",
|
||||||
"@types/ua-parser-js": "0.7.39",
|
"@types/ua-parser-js": "0.7.39",
|
||||||
"@types/webspeechapi": "0.0.29",
|
"@types/webspeechapi": "0.0.29",
|
||||||
"@vitest/coverage-v8": "4.0.7",
|
"@vitest/coverage-v8": "4.0.6",
|
||||||
"babel-loader": "10.0.0",
|
"babel-loader": "10.0.0",
|
||||||
"babel-plugin-template-html-minifier": "4.1.0",
|
"babel-plugin-template-html-minifier": "4.1.0",
|
||||||
"browserslist-useragent-regexp": "4.1.3",
|
"browserslist-useragent-regexp": "4.1.3",
|
||||||
@@ -219,7 +219,7 @@
|
|||||||
"typescript": "5.9.3",
|
"typescript": "5.9.3",
|
||||||
"typescript-eslint": "8.46.3",
|
"typescript-eslint": "8.46.3",
|
||||||
"vite-tsconfig-paths": "5.1.4",
|
"vite-tsconfig-paths": "5.1.4",
|
||||||
"vitest": "4.0.7",
|
"vitest": "4.0.6",
|
||||||
"webpack-stats-plugin": "1.1.3",
|
"webpack-stats-plugin": "1.1.3",
|
||||||
"webpackbar": "7.0.0",
|
"webpackbar": "7.0.0",
|
||||||
"workbox-build": "patch:workbox-build@npm%3A7.1.1#~/.yarn/patches/workbox-build-npm-7.1.1-a854f3faae.patch"
|
"workbox-build": "patch:workbox-build@npm%3A7.1.1#~/.yarn/patches/workbox-build-npm-7.1.1-a854f3faae.patch"
|
||||||
|
|||||||
16
src/common/condition/extract.ts
Normal file
16
src/common/condition/extract.ts
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import type { Condition } from "../../panels/lovelace/common/validate-condition";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extract media queries from conditions recursively
|
||||||
|
*/
|
||||||
|
export function extractMediaQueries(conditions: Condition[]): string[] {
|
||||||
|
return conditions.reduce<string[]>((array, c) => {
|
||||||
|
if ("conditions" in c && c.conditions) {
|
||||||
|
array.push(...extractMediaQueries(c.conditions));
|
||||||
|
}
|
||||||
|
if (c.condition === "screen" && c.media_query) {
|
||||||
|
array.push(c.media_query);
|
||||||
|
}
|
||||||
|
return array;
|
||||||
|
}, []);
|
||||||
|
}
|
||||||
37
src/common/condition/listeners.ts
Normal file
37
src/common/condition/listeners.ts
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import { listenMediaQuery } from "../dom/media_query";
|
||||||
|
import type { HomeAssistant } from "../../types";
|
||||||
|
import type { Condition } from "../../panels/lovelace/common/validate-condition";
|
||||||
|
import { checkConditionsMet } from "../../panels/lovelace/common/validate-condition";
|
||||||
|
import { extractMediaQueries } from "./extract";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper to setup media query listeners for conditional visibility
|
||||||
|
*/
|
||||||
|
export function setupMediaQueryListeners(
|
||||||
|
conditions: Condition[],
|
||||||
|
hass: HomeAssistant,
|
||||||
|
addListener: (unsub: () => void) => void,
|
||||||
|
onUpdate: (conditionsMet: boolean) => void
|
||||||
|
): void {
|
||||||
|
const mediaQueries = extractMediaQueries(conditions);
|
||||||
|
|
||||||
|
if (mediaQueries.length === 0) return;
|
||||||
|
|
||||||
|
// Optimization for single media query
|
||||||
|
const hasOnlyMediaQuery =
|
||||||
|
conditions.length === 1 &&
|
||||||
|
conditions[0].condition === "screen" &&
|
||||||
|
!!conditions[0].media_query;
|
||||||
|
|
||||||
|
mediaQueries.forEach((mediaQuery) => {
|
||||||
|
const unsub = listenMediaQuery(mediaQuery, (matches) => {
|
||||||
|
if (hasOnlyMediaQuery) {
|
||||||
|
onUpdate(matches);
|
||||||
|
} else {
|
||||||
|
const conditionsMet = checkConditionsMet(conditions, hass);
|
||||||
|
onUpdate(conditionsMet);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
addListener(unsub);
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -627,10 +627,6 @@ export class HaChartBase extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _createTheme(style: CSSStyleDeclaration) {
|
private _createTheme(style: CSSStyleDeclaration) {
|
||||||
const textBorderColor =
|
|
||||||
style.getPropertyValue("--ha-card-background") ||
|
|
||||||
style.getPropertyValue("--card-background-color");
|
|
||||||
const textBorderWidth = 2;
|
|
||||||
return {
|
return {
|
||||||
color: getAllGraphColors(style),
|
color: getAllGraphColors(style),
|
||||||
backgroundColor: "transparent",
|
backgroundColor: "transparent",
|
||||||
@@ -654,22 +650,22 @@ export class HaChartBase extends LitElement {
|
|||||||
graph: {
|
graph: {
|
||||||
label: {
|
label: {
|
||||||
color: style.getPropertyValue("--primary-text-color"),
|
color: style.getPropertyValue("--primary-text-color"),
|
||||||
textBorderColor,
|
textBorderColor: style.getPropertyValue("--primary-background-color"),
|
||||||
textBorderWidth,
|
textBorderWidth: 2,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
pie: {
|
pie: {
|
||||||
label: {
|
label: {
|
||||||
color: style.getPropertyValue("--primary-text-color"),
|
color: style.getPropertyValue("--primary-text-color"),
|
||||||
textBorderColor,
|
textBorderColor: style.getPropertyValue("--primary-background-color"),
|
||||||
textBorderWidth,
|
textBorderWidth: 2,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
sankey: {
|
sankey: {
|
||||||
label: {
|
label: {
|
||||||
color: style.getPropertyValue("--primary-text-color"),
|
color: style.getPropertyValue("--primary-text-color"),
|
||||||
textBorderColor,
|
textBorderColor: style.getPropertyValue("--primary-background-color"),
|
||||||
textBorderWidth,
|
textBorderWidth: 2,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
categoryAxis: {
|
categoryAxis: {
|
||||||
|
|||||||
@@ -157,8 +157,7 @@ export const computePanels = memoizeOne(
|
|||||||
Object.values(panels).forEach((panel) => {
|
Object.values(panels).forEach((panel) => {
|
||||||
if (
|
if (
|
||||||
hiddenPanels.includes(panel.url_path) ||
|
hiddenPanels.includes(panel.url_path) ||
|
||||||
(!panel.title && panel.url_path !== defaultPanel) ||
|
(!panel.title && panel.url_path !== defaultPanel)
|
||||||
(!panel.default_visible && !panelsOrder.includes(panel.url_path))
|
|
||||||
) {
|
) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -222,7 +222,6 @@ export interface StopAction extends BaseAction {
|
|||||||
|
|
||||||
export interface SequenceAction extends BaseAction {
|
export interface SequenceAction extends BaseAction {
|
||||||
sequence: (ManualScriptConfig | Action)[];
|
sequence: (ManualScriptConfig | Action)[];
|
||||||
metadata?: {};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ParallelAction extends BaseAction {
|
export interface ParallelAction extends BaseAction {
|
||||||
@@ -480,7 +479,6 @@ export const migrateAutomationAction = (
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (typeof action === "object" && action !== null && "sequence" in action) {
|
if (typeof action === "object" && action !== null && "sequence" in action) {
|
||||||
delete (action as SequenceAction).metadata;
|
|
||||||
for (const sequenceAction of (action as SequenceAction).sequence) {
|
for (const sequenceAction of (action as SequenceAction).sequence) {
|
||||||
migrateAutomationAction(sequenceAction);
|
migrateAutomationAction(sequenceAction);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -102,17 +102,6 @@ class DialogEditSidebar extends LitElement {
|
|||||||
this.hass.locale
|
this.hass.locale
|
||||||
);
|
);
|
||||||
|
|
||||||
// Add default hidden panels that are missing in hidden
|
|
||||||
for (const panel of panels) {
|
|
||||||
if (
|
|
||||||
!panel.default_visible &&
|
|
||||||
!this._order.includes(panel.url_path) &&
|
|
||||||
!this._hidden.includes(panel.url_path)
|
|
||||||
) {
|
|
||||||
this._hidden.push(panel.url_path);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const items = [
|
const items = [
|
||||||
...beforeSpacer,
|
...beforeSpacer,
|
||||||
...panels.filter((panel) => this._hidden!.includes(panel.url_path)),
|
...panels.filter((panel) => this._hidden!.includes(panel.url_path)),
|
||||||
|
|||||||
@@ -1,73 +1,25 @@
|
|||||||
import type { ReactiveElement } from "lit";
|
import type { ReactiveElement } from "lit";
|
||||||
import { listenMediaQuery } from "../common/dom/media_query";
|
|
||||||
import type { HomeAssistant } from "../types";
|
import type { HomeAssistant } from "../types";
|
||||||
import type { Condition } from "../panels/lovelace/common/validate-condition";
|
import { setupMediaQueryListeners } from "../common/condition/listeners";
|
||||||
import { checkConditionsMet } from "../panels/lovelace/common/validate-condition";
|
|
||||||
|
|
||||||
type Constructor<T> = abstract new (...args: any[]) => T;
|
type Constructor<T> = abstract new (...args: any[]) => T;
|
||||||
|
|
||||||
/**
|
|
||||||
* Extract media queries from conditions recursively
|
|
||||||
*/
|
|
||||||
export function extractMediaQueries(conditions: Condition[]): string[] {
|
|
||||||
return conditions.reduce<string[]>((array, c) => {
|
|
||||||
if ("conditions" in c && c.conditions) {
|
|
||||||
array.push(...extractMediaQueries(c.conditions));
|
|
||||||
}
|
|
||||||
if (c.condition === "screen" && c.media_query) {
|
|
||||||
array.push(c.media_query);
|
|
||||||
}
|
|
||||||
return array;
|
|
||||||
}, []);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper to setup media query listeners for conditional visibility
|
|
||||||
*/
|
|
||||||
export function setupMediaQueryListeners(
|
|
||||||
conditions: Condition[],
|
|
||||||
hass: HomeAssistant,
|
|
||||||
addListener: (unsub: () => void) => void,
|
|
||||||
onUpdate: (conditionsMet: boolean) => void
|
|
||||||
): void {
|
|
||||||
const mediaQueries = extractMediaQueries(conditions);
|
|
||||||
|
|
||||||
if (mediaQueries.length === 0) return;
|
|
||||||
|
|
||||||
// Optimization for single media query
|
|
||||||
const hasOnlyMediaQuery =
|
|
||||||
conditions.length === 1 &&
|
|
||||||
conditions[0].condition === "screen" &&
|
|
||||||
!!conditions[0].media_query;
|
|
||||||
|
|
||||||
mediaQueries.forEach((mediaQuery) => {
|
|
||||||
const unsub = listenMediaQuery(mediaQuery, (matches) => {
|
|
||||||
if (hasOnlyMediaQuery) {
|
|
||||||
onUpdate(matches);
|
|
||||||
} else {
|
|
||||||
const conditionsMet = checkConditionsMet(conditions, hass);
|
|
||||||
onUpdate(conditionsMet);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
addListener(unsub);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mixin to handle conditional listeners for visibility control
|
* Mixin to handle conditional listeners for visibility control
|
||||||
*
|
*
|
||||||
* Provides lifecycle management for listeners (media queries, time-based, state changes, etc.)
|
* Provides lifecycle management for listeners that control conditional
|
||||||
* that control conditional visibility of components.
|
* visibility of components.
|
||||||
*
|
*
|
||||||
* Usage:
|
* Usage:
|
||||||
* 1. Extend your component with ConditionalListenerMixin(ReactiveElement)
|
* 1. Extend your component with ConditionalListenerMixin(ReactiveElement)
|
||||||
* 2. Override setupConditionalListeners() to setup your listeners
|
* 2. Ensure component has config.visibility or _config.visibility property with conditions
|
||||||
* 3. Use addConditionalListener() to register unsubscribe functions
|
* 3. Ensure component has _updateVisibility() or _updateElement() method
|
||||||
* 4. Call clearConditionalListeners() and setupConditionalListeners() when config changes
|
* 4. Override setupConditionalListeners() if custom behavior needed (e.g., filter conditions)
|
||||||
*
|
*
|
||||||
* The mixin automatically:
|
* The mixin automatically:
|
||||||
* - Sets up listeners when component connects to DOM
|
* - Sets up listeners when component connects to DOM
|
||||||
* - Cleans up listeners when component disconnects from DOM
|
* - Cleans up listeners when component disconnects from DOM
|
||||||
|
* - Handles conditional visibility based on defined conditions
|
||||||
*/
|
*/
|
||||||
export const ConditionalListenerMixin = <
|
export const ConditionalListenerMixin = <
|
||||||
T extends Constructor<ReactiveElement>,
|
T extends Constructor<ReactiveElement>,
|
||||||
@@ -77,6 +29,9 @@ export const ConditionalListenerMixin = <
|
|||||||
abstract class ConditionalListenerClass extends superClass {
|
abstract class ConditionalListenerClass extends superClass {
|
||||||
private __listeners: (() => void)[] = [];
|
private __listeners: (() => void)[] = [];
|
||||||
|
|
||||||
|
// Type hint for hass property (should be provided by subclass)
|
||||||
|
abstract hass?: HomeAssistant;
|
||||||
|
|
||||||
public connectedCallback() {
|
public connectedCallback() {
|
||||||
super.connectedCallback();
|
super.connectedCallback();
|
||||||
this.setupConditionalListeners();
|
this.setupConditionalListeners();
|
||||||
@@ -96,8 +51,44 @@ export const ConditionalListenerMixin = <
|
|||||||
this.__listeners.push(unsubscribe);
|
this.__listeners.push(unsubscribe);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected setupConditionalListeners(): void {
|
/**
|
||||||
// Override in subclass
|
* Setup conditional listeners for visibility control
|
||||||
|
*
|
||||||
|
* Default implementation:
|
||||||
|
* - Checks config.visibility or _config.visibility for conditions (if not provided)
|
||||||
|
* - Sets up appropriate listeners based on condition types
|
||||||
|
* - Calls _updateVisibility() or _updateElement() when conditions change
|
||||||
|
*
|
||||||
|
* Override this method to customize behavior (e.g., filter conditions first)
|
||||||
|
* and call super.setupConditionalListeners(customConditions) to reuse the base implementation
|
||||||
|
*
|
||||||
|
* @param conditions - Optional conditions array. If not provided, will check config.visibility or _config.visibility
|
||||||
|
*/
|
||||||
|
protected setupConditionalListeners(conditions?: any[]): void {
|
||||||
|
const component = this as any;
|
||||||
|
const finalConditions =
|
||||||
|
conditions ||
|
||||||
|
component.config?.visibility ||
|
||||||
|
component._config?.visibility;
|
||||||
|
|
||||||
|
if (!finalConditions || !this.hass) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const onUpdate = (conditionsMet: boolean) => {
|
||||||
|
if (component._updateVisibility) {
|
||||||
|
component._updateVisibility(conditionsMet);
|
||||||
|
} else if (component._updateElement) {
|
||||||
|
component._updateElement(conditionsMet);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
setupMediaQueryListeners(
|
||||||
|
finalConditions,
|
||||||
|
this.hass,
|
||||||
|
(unsub) => this.addConditionalListener(unsub),
|
||||||
|
onUpdate
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ConditionalListenerClass;
|
return ConditionalListenerClass;
|
||||||
|
|||||||
@@ -588,11 +588,7 @@ export default class HaAutomationActionRow extends LitElement {
|
|||||||
...this._clipboard,
|
...this._clipboard,
|
||||||
action: deepClone(this.action),
|
action: deepClone(this.action),
|
||||||
};
|
};
|
||||||
let action = this.action;
|
copyToClipboard(dump(this.action));
|
||||||
if ("sequence" in action) {
|
|
||||||
action = { ...this.action, metadata: {} };
|
|
||||||
}
|
|
||||||
copyToClipboard(dump(action));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private _onDisable = () => {
|
private _onDisable = () => {
|
||||||
|
|||||||
@@ -372,14 +372,16 @@ class HaConfigBackupBackups extends SubscribeMixin(LitElement) {
|
|||||||
clickable
|
clickable
|
||||||
id="backup_id"
|
id="backup_id"
|
||||||
has-filters
|
has-filters
|
||||||
.filters=${Object.values(this._filters).filter((filter) =>
|
.filters=${
|
||||||
|
Object.values(this._filters).filter((filter) =>
|
||||||
Array.isArray(filter)
|
Array.isArray(filter)
|
||||||
? filter.length
|
? filter.length
|
||||||
: filter &&
|
: filter &&
|
||||||
Object.values(filter).some((val) =>
|
Object.values(filter).some((val) =>
|
||||||
Array.isArray(val) ? val.length : val
|
Array.isArray(val) ? val.length : val
|
||||||
)
|
)
|
||||||
).length}
|
).length
|
||||||
|
}
|
||||||
selectable
|
selectable
|
||||||
.selected=${this._selected.length}
|
.selected=${this._selected.length}
|
||||||
.initialGroupColumn=${this._activeGrouping}
|
.initialGroupColumn=${this._activeGrouping}
|
||||||
@@ -421,7 +423,8 @@ class HaConfigBackupBackups extends SubscribeMixin(LitElement) {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div slot="selection-bar">
|
<div slot="selection-bar">
|
||||||
${!this.narrow
|
${
|
||||||
|
!this.narrow
|
||||||
? html`
|
? html`
|
||||||
<ha-button
|
<ha-button
|
||||||
appearance="plain"
|
appearance="plain"
|
||||||
@@ -442,7 +445,8 @@ class HaConfigBackupBackups extends SubscribeMixin(LitElement) {
|
|||||||
class="warning"
|
class="warning"
|
||||||
@click=${this._deleteSelected}
|
@click=${this._deleteSelected}
|
||||||
></ha-icon-button>
|
></ha-icon-button>
|
||||||
`}
|
`
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ha-filter-states
|
<ha-filter-states
|
||||||
@@ -455,7 +459,8 @@ class HaConfigBackupBackups extends SubscribeMixin(LitElement) {
|
|||||||
expanded
|
expanded
|
||||||
.narrow=${this.narrow}
|
.narrow=${this.narrow}
|
||||||
></ha-filter-states>
|
></ha-filter-states>
|
||||||
${!this._needsOnboarding
|
${
|
||||||
|
!this._needsOnboarding
|
||||||
? html`
|
? html`
|
||||||
<ha-fab
|
<ha-fab
|
||||||
slot="fab"
|
slot="fab"
|
||||||
@@ -476,7 +481,8 @@ class HaConfigBackupBackups extends SubscribeMixin(LitElement) {
|
|||||||
></ha-svg-icon>`}
|
></ha-svg-icon>`}
|
||||||
</ha-fab>
|
</ha-fab>
|
||||||
`
|
`
|
||||||
: nothing}
|
: nothing
|
||||||
|
}
|
||||||
</hass-tabs-subpage-data-table>
|
</hass-tabs-subpage-data-table>
|
||||||
<ha-md-menu id="overflow-menu" positioning="fixed">
|
<ha-md-menu id="overflow-menu" positioning="fixed">
|
||||||
<ha-md-menu-item .clickAction=${this._downloadBackup}>
|
<ha-md-menu-item .clickAction=${this._downloadBackup}>
|
||||||
@@ -488,6 +494,8 @@ class HaConfigBackupBackups extends SubscribeMixin(LitElement) {
|
|||||||
${this.hass.localize("ui.common.delete")}
|
${this.hass.localize("ui.common.delete")}
|
||||||
</ha-md-menu-item>
|
</ha-md-menu-item>
|
||||||
</ha-md-menu>
|
</ha-md-menu>
|
||||||
|
>
|
||||||
|
</ha-icon-overflow-menu>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -320,9 +320,9 @@ export class HaConfigLovelaceDashboards extends LitElement {
|
|||||||
|
|
||||||
if (this.hass.panels.light) {
|
if (this.hass.panels.light) {
|
||||||
result.push({
|
result.push({
|
||||||
icon: this.hass.panels.light.icon || "mdi:lamps",
|
icon: "mdi:lamps",
|
||||||
title: this.hass.localize("panel.light"),
|
title: this.hass.localize("panel.light"),
|
||||||
show_in_sidebar: true,
|
show_in_sidebar: false,
|
||||||
mode: "storage",
|
mode: "storage",
|
||||||
url_path: "light",
|
url_path: "light",
|
||||||
filename: "",
|
filename: "",
|
||||||
@@ -334,9 +334,9 @@ export class HaConfigLovelaceDashboards extends LitElement {
|
|||||||
|
|
||||||
if (this.hass.panels.security) {
|
if (this.hass.panels.security) {
|
||||||
result.push({
|
result.push({
|
||||||
icon: this.hass.panels.security.icon || "mdi:security",
|
icon: "mdi:security",
|
||||||
title: this.hass.localize("panel.security"),
|
title: this.hass.localize("panel.security"),
|
||||||
show_in_sidebar: true,
|
show_in_sidebar: false,
|
||||||
mode: "storage",
|
mode: "storage",
|
||||||
url_path: "security",
|
url_path: "security",
|
||||||
filename: "",
|
filename: "",
|
||||||
@@ -348,9 +348,9 @@ export class HaConfigLovelaceDashboards extends LitElement {
|
|||||||
|
|
||||||
if (this.hass.panels.climate) {
|
if (this.hass.panels.climate) {
|
||||||
result.push({
|
result.push({
|
||||||
icon: this.hass.panels.climate.icon || "mdi:home-thermometer",
|
icon: "mdi:home-thermometer",
|
||||||
title: this.hass.localize("panel.climate"),
|
title: this.hass.localize("panel.climate"),
|
||||||
show_in_sidebar: true,
|
show_in_sidebar: false,
|
||||||
mode: "storage",
|
mode: "storage",
|
||||||
url_path: "climate",
|
url_path: "climate",
|
||||||
filename: "",
|
filename: "",
|
||||||
|
|||||||
@@ -371,11 +371,7 @@ export class HaManualScriptEditor extends LitElement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const actionType = getActionType(config);
|
if (!["sequence", "unknown"].includes(getActionType(config))) {
|
||||||
if (
|
|
||||||
!["sequence", "unknown"].includes(actionType) ||
|
|
||||||
(actionType === "sequence" && "metadata" in config)
|
|
||||||
) {
|
|
||||||
config = { sequence: [config] };
|
config = { sequence: [config] };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,10 +5,7 @@ import { fireEvent } from "../../../common/dom/fire_event";
|
|||||||
import "../../../components/ha-svg-icon";
|
import "../../../components/ha-svg-icon";
|
||||||
import type { LovelaceBadgeConfig } from "../../../data/lovelace/config/badge";
|
import type { LovelaceBadgeConfig } from "../../../data/lovelace/config/badge";
|
||||||
import type { HomeAssistant } from "../../../types";
|
import type { HomeAssistant } from "../../../types";
|
||||||
import {
|
import { ConditionalListenerMixin } from "../../../mixins/conditional-listener-mixin";
|
||||||
ConditionalListenerMixin,
|
|
||||||
setupMediaQueryListeners,
|
|
||||||
} from "../../../mixins/conditional-listener-mixin";
|
|
||||||
import { checkConditionsMet } from "../common/validate-condition";
|
import { checkConditionsMet } from "../common/validate-condition";
|
||||||
import { createBadgeElement } from "../create-element/create-badge-element";
|
import { createBadgeElement } from "../create-element/create-badge-element";
|
||||||
import { createErrorBadgeConfig } from "../create-element/create-element-base";
|
import { createErrorBadgeConfig } from "../create-element/create-element-base";
|
||||||
@@ -133,21 +130,6 @@ export class HuiBadge extends ConditionalListenerMixin(ReactiveElement) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected setupConditionalListeners() {
|
|
||||||
if (!this.config?.visibility || !this.hass) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
setupMediaQueryListeners(
|
|
||||||
this.config.visibility,
|
|
||||||
this.hass,
|
|
||||||
(unsub) => this.addConditionalListener(unsub),
|
|
||||||
(conditionsMet) => {
|
|
||||||
this._updateVisibility(conditionsMet);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private _updateVisibility(ignoreConditions?: boolean) {
|
private _updateVisibility(ignoreConditions?: boolean) {
|
||||||
if (!this._element || !this.hass) {
|
if (!this._element || !this.hass) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import memoizeOne from "memoize-one";
|
|||||||
import type { BarSeriesOption, PieSeriesOption } from "echarts/charts";
|
import type { BarSeriesOption, PieSeriesOption } from "echarts/charts";
|
||||||
import { PieChart } from "echarts/charts";
|
import { PieChart } from "echarts/charts";
|
||||||
import type { ECElementEvent } from "echarts/types/dist/shared";
|
import type { ECElementEvent } from "echarts/types/dist/shared";
|
||||||
import type { PieDataItemOption } from "echarts/types/src/chart/pie/PieSeries";
|
|
||||||
import { filterXSS } from "../../../../common/util/xss";
|
import { filterXSS } from "../../../../common/util/xss";
|
||||||
import { getGraphColorByIndex } from "../../../../common/color/colors";
|
import { getGraphColorByIndex } from "../../../../common/color/colors";
|
||||||
import { formatNumber } from "../../../../common/number/format_number";
|
import { formatNumber } from "../../../../common/number/format_number";
|
||||||
@@ -388,7 +387,6 @@ export class HuiEnergyDevicesGraphCard
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (this._chartType === "pie") {
|
if (this._chartType === "pie") {
|
||||||
const pieChartData = chartData as NonNullable<PieSeriesOption["data"]>;
|
|
||||||
const { summedData, compareSummedData } = getSummedData(energyData);
|
const { summedData, compareSummedData } = getSummedData(energyData);
|
||||||
const { consumption, compareConsumption } = computeConsumptionData(
|
const { consumption, compareConsumption } = computeConsumptionData(
|
||||||
summedData,
|
summedData,
|
||||||
@@ -401,10 +399,7 @@ export class HuiEnergyDevicesGraphCard
|
|||||||
"from_battery" in summedData;
|
"from_battery" in summedData;
|
||||||
const untracked = showUntracked
|
const untracked = showUntracked
|
||||||
? totalUsed -
|
? totalUsed -
|
||||||
pieChartData.reduce(
|
chartData.reduce((acc: number, d: any) => acc + d.value[0], 0)
|
||||||
(acc: number, d) => acc + (d as PieDataItemOption).value![0],
|
|
||||||
0
|
|
||||||
)
|
|
||||||
: 0;
|
: 0;
|
||||||
if (untracked > 0) {
|
if (untracked > 0) {
|
||||||
const color = getEnergyColor(
|
const color = getEnergyColor(
|
||||||
@@ -414,7 +409,7 @@ export class HuiEnergyDevicesGraphCard
|
|||||||
false,
|
false,
|
||||||
"--history-unknown-color"
|
"--history-unknown-color"
|
||||||
);
|
);
|
||||||
pieChartData.push({
|
chartData.push({
|
||||||
id: "untracked",
|
id: "untracked",
|
||||||
value: [untracked, "untracked"] as any,
|
value: [untracked, "untracked"] as any,
|
||||||
name: this.hass.localize(
|
name: this.hass.localize(
|
||||||
@@ -447,20 +442,13 @@ export class HuiEnergyDevicesGraphCard
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const totalChart = pieChartData.reduce(
|
|
||||||
(acc: number, d) =>
|
|
||||||
this._hiddenStats.includes((d as PieDataItemOption).id as string)
|
|
||||||
? acc
|
|
||||||
: acc + (d as PieDataItemOption).value![0],
|
|
||||||
0
|
|
||||||
);
|
|
||||||
datasets.push({
|
datasets.push({
|
||||||
type: "pie",
|
type: "pie",
|
||||||
radius: ["0%", compareData ? "30%" : "40%"],
|
radius: ["0%", compareData ? "30%" : "40%"],
|
||||||
name: this.hass.localize(
|
name: this.hass.localize(
|
||||||
"ui.panel.lovelace.cards.energy.energy_devices_graph.total_energy_usage"
|
"ui.panel.lovelace.cards.energy.energy_devices_graph.total_energy_usage"
|
||||||
),
|
),
|
||||||
data: [totalChart],
|
data: [totalUsed],
|
||||||
label: {
|
label: {
|
||||||
show: true,
|
show: true,
|
||||||
position: "center",
|
position: "center",
|
||||||
@@ -468,7 +456,7 @@ export class HuiEnergyDevicesGraphCard
|
|||||||
fontSize: computedStyle.getPropertyValue("--ha-font-size-l"),
|
fontSize: computedStyle.getPropertyValue("--ha-font-size-l"),
|
||||||
lineHeight: 24,
|
lineHeight: 24,
|
||||||
fontWeight: "bold",
|
fontWeight: "bold",
|
||||||
formatter: `{a}\n${formatNumber(totalChart, this.hass.locale)} kWh`,
|
formatter: `{a}\n${formatNumber(totalUsed, this.hass.locale)} kWh`,
|
||||||
},
|
},
|
||||||
cursor: "default",
|
cursor: "default",
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
|
|||||||
@@ -5,10 +5,7 @@ import { fireEvent } from "../../../common/dom/fire_event";
|
|||||||
import "../../../components/ha-svg-icon";
|
import "../../../components/ha-svg-icon";
|
||||||
import type { LovelaceCardConfig } from "../../../data/lovelace/config/card";
|
import type { LovelaceCardConfig } from "../../../data/lovelace/config/card";
|
||||||
import type { HomeAssistant } from "../../../types";
|
import type { HomeAssistant } from "../../../types";
|
||||||
import {
|
import { ConditionalListenerMixin } from "../../../mixins/conditional-listener-mixin";
|
||||||
ConditionalListenerMixin,
|
|
||||||
setupMediaQueryListeners,
|
|
||||||
} from "../../../mixins/conditional-listener-mixin";
|
|
||||||
import { migrateLayoutToGridOptions } from "../common/compute-card-grid-size";
|
import { migrateLayoutToGridOptions } from "../common/compute-card-grid-size";
|
||||||
import { computeCardSize } from "../common/compute-card-size";
|
import { computeCardSize } from "../common/compute-card-size";
|
||||||
import { checkConditionsMet } from "../common/validate-condition";
|
import { checkConditionsMet } from "../common/validate-condition";
|
||||||
@@ -247,21 +244,6 @@ export class HuiCard extends ConditionalListenerMixin(ReactiveElement) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected setupConditionalListeners() {
|
|
||||||
if (!this.config?.visibility || !this.hass) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
setupMediaQueryListeners(
|
|
||||||
this.config.visibility,
|
|
||||||
this.hass,
|
|
||||||
(unsub) => this.addConditionalListener(unsub),
|
|
||||||
(conditionsMet) => {
|
|
||||||
this._updateVisibility(conditionsMet);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private _updateVisibility(ignoreConditions?: boolean) {
|
private _updateVisibility(ignoreConditions?: boolean) {
|
||||||
if (!this._element || !this.hass) {
|
if (!this._element || !this.hass) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -79,11 +79,6 @@ export abstract class HuiStackCard<T extends StackCardConfig = StackCardConfig>
|
|||||||
this._errorCard.preview = this.preview;
|
this._errorCard.preview = this.preview;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (changedProperties.has("layout")) {
|
|
||||||
this._cards.forEach((card) => {
|
|
||||||
card.layout = this.layout;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (changedProperties.has("layout")) {
|
if (changedProperties.has("layout")) {
|
||||||
@@ -95,7 +90,6 @@ export abstract class HuiStackCard<T extends StackCardConfig = StackCardConfig>
|
|||||||
const element = document.createElement("hui-card");
|
const element = document.createElement("hui-card");
|
||||||
element.hass = this.hass;
|
element.hass = this.hass;
|
||||||
element.preview = this.preview;
|
element.preview = this.preview;
|
||||||
element.layout = this.layout;
|
|
||||||
element.config = cardConfig;
|
element.config = cardConfig;
|
||||||
element.load();
|
element.load();
|
||||||
return element;
|
return element;
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
import { ensureArray } from "../../../common/array/ensure-array";
|
import type { HomeAssistant } from "../../../types";
|
||||||
|
|
||||||
import { isValidEntityId } from "../../../common/entity/valid_entity_id";
|
|
||||||
import { UNKNOWN } from "../../../data/entity";
|
import { UNKNOWN } from "../../../data/entity";
|
||||||
import { getUserPerson } from "../../../data/person";
|
import { getUserPerson } from "../../../data/person";
|
||||||
import type { HomeAssistant } from "../../../types";
|
import { ensureArray } from "../../../common/array/ensure-array";
|
||||||
|
import { isValidEntityId } from "../../../common/entity/valid_entity_id";
|
||||||
|
|
||||||
export type Condition =
|
export type Condition =
|
||||||
| LocationCondition
|
| LocationCondition
|
||||||
|
|||||||
@@ -2,10 +2,7 @@ import type { PropertyValues } from "lit";
|
|||||||
import { ReactiveElement } from "lit";
|
import { ReactiveElement } from "lit";
|
||||||
import { customElement, property, state } from "lit/decorators";
|
import { customElement, property, state } from "lit/decorators";
|
||||||
import type { HomeAssistant } from "../../../types";
|
import type { HomeAssistant } from "../../../types";
|
||||||
import {
|
import { ConditionalListenerMixin } from "../../../mixins/conditional-listener-mixin";
|
||||||
ConditionalListenerMixin,
|
|
||||||
setupMediaQueryListeners,
|
|
||||||
} from "../../../mixins/conditional-listener-mixin";
|
|
||||||
import type { HuiCard } from "../cards/hui-card";
|
import type { HuiCard } from "../cards/hui-card";
|
||||||
import type { ConditionalCardConfig } from "../cards/types";
|
import type { ConditionalCardConfig } from "../cards/types";
|
||||||
import type { Condition } from "../common/validate-condition";
|
import type { Condition } from "../common/validate-condition";
|
||||||
@@ -73,18 +70,13 @@ export class HuiConditionalBase extends ConditionalListenerMixin(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Filter to supported conditions (those with 'condition' property)
|
||||||
const supportedConditions = this._config.conditions.filter(
|
const supportedConditions = this._config.conditions.filter(
|
||||||
(c) => "condition" in c
|
(c) => "condition" in c
|
||||||
) as Condition[];
|
) as Condition[];
|
||||||
|
|
||||||
setupMediaQueryListeners(
|
// Pass filtered conditions to parent implementation
|
||||||
supportedConditions,
|
super.setupConditionalListeners(supportedConditions);
|
||||||
this.hass,
|
|
||||||
(unsub) => this.addConditionalListener(unsub),
|
|
||||||
(conditionsMet) => {
|
|
||||||
this.setVisibility(conditionsMet);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected update(changed: PropertyValues): void {
|
protected update(changed: PropertyValues): void {
|
||||||
@@ -102,17 +94,15 @@ export class HuiConditionalBase extends ConditionalListenerMixin(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private _updateVisibility() {
|
private _updateVisibility(conditionsMet?: boolean) {
|
||||||
if (!this._element || !this.hass || !this._config) {
|
if (!this._element || !this.hass || !this._config) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._element.preview = this.preview;
|
this._element.preview = this.preview;
|
||||||
|
|
||||||
const conditionMet = checkConditionsMet(
|
const conditionMet =
|
||||||
this._config!.conditions,
|
conditionsMet ?? checkConditionsMet(this._config.conditions, this.hass);
|
||||||
this.hass!
|
|
||||||
);
|
|
||||||
|
|
||||||
this.setVisibility(conditionMet);
|
this.setVisibility(conditionMet);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,10 +4,7 @@ import { customElement, property } from "lit/decorators";
|
|||||||
import { fireEvent } from "../../../common/dom/fire_event";
|
import { fireEvent } from "../../../common/dom/fire_event";
|
||||||
import "../../../components/ha-svg-icon";
|
import "../../../components/ha-svg-icon";
|
||||||
import type { HomeAssistant } from "../../../types";
|
import type { HomeAssistant } from "../../../types";
|
||||||
import {
|
import { ConditionalListenerMixin } from "../../../mixins/conditional-listener-mixin";
|
||||||
ConditionalListenerMixin,
|
|
||||||
setupMediaQueryListeners,
|
|
||||||
} from "../../../mixins/conditional-listener-mixin";
|
|
||||||
import { checkConditionsMet } from "../common/validate-condition";
|
import { checkConditionsMet } from "../common/validate-condition";
|
||||||
import { createHeadingBadgeElement } from "../create-element/create-heading-badge-element";
|
import { createHeadingBadgeElement } from "../create-element/create-heading-badge-element";
|
||||||
import type { LovelaceHeadingBadge } from "../types";
|
import type { LovelaceHeadingBadge } from "../types";
|
||||||
@@ -133,21 +130,6 @@ export class HuiHeadingBadge extends ConditionalListenerMixin(ReactiveElement) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected setupConditionalListeners() {
|
|
||||||
if (!this.config?.visibility || !this.hass) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
setupMediaQueryListeners(
|
|
||||||
this.config.visibility,
|
|
||||||
this.hass,
|
|
||||||
(unsub) => this.addConditionalListener(unsub),
|
|
||||||
(conditionsMet) => {
|
|
||||||
this._updateVisibility(conditionsMet);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private _updateVisibility(forceVisible?: boolean) {
|
private _updateVisibility(forceVisible?: boolean) {
|
||||||
if (!this._element || !this.hass) {
|
if (!this._element || !this.hass) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -13,10 +13,7 @@ import type {
|
|||||||
} from "../../../data/lovelace/config/section";
|
} from "../../../data/lovelace/config/section";
|
||||||
import { isStrategySection } from "../../../data/lovelace/config/section";
|
import { isStrategySection } from "../../../data/lovelace/config/section";
|
||||||
import type { HomeAssistant } from "../../../types";
|
import type { HomeAssistant } from "../../../types";
|
||||||
import {
|
import { ConditionalListenerMixin } from "../../../mixins/conditional-listener-mixin";
|
||||||
ConditionalListenerMixin,
|
|
||||||
setupMediaQueryListeners,
|
|
||||||
} from "../../../mixins/conditional-listener-mixin";
|
|
||||||
import "../cards/hui-card";
|
import "../cards/hui-card";
|
||||||
import type { HuiCard } from "../cards/hui-card";
|
import type { HuiCard } from "../cards/hui-card";
|
||||||
import { checkConditionsMet } from "../common/validate-condition";
|
import { checkConditionsMet } from "../common/validate-condition";
|
||||||
@@ -152,21 +149,6 @@ export class HuiSection extends ConditionalListenerMixin(ReactiveElement) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected setupConditionalListeners() {
|
|
||||||
if (!this._config?.visibility || !this.hass) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
setupMediaQueryListeners(
|
|
||||||
this._config.visibility,
|
|
||||||
this.hass,
|
|
||||||
(unsub) => this.addConditionalListener(unsub),
|
|
||||||
(conditionsMet) => {
|
|
||||||
this._updateElement(conditionsMet);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private async _initializeConfig() {
|
private async _initializeConfig() {
|
||||||
let sectionConfig = { ...this.config };
|
let sectionConfig = { ...this.config };
|
||||||
let isStrategy = false;
|
let isStrategy = false;
|
||||||
|
|||||||
@@ -684,10 +684,10 @@
|
|||||||
},
|
},
|
||||||
"target-picker": {
|
"target-picker": {
|
||||||
"expand": "Expand",
|
"expand": "Expand",
|
||||||
"expand_floor_id": "Split this floor into separate areas",
|
"expand_floor_id": "Split this floor into separate areas.",
|
||||||
"expand_area_id": "Split this area into separate devices and entities",
|
"expand_area_id": "Split this area into separate devices and entities.",
|
||||||
"expand_device_id": "Split this device into separate entities",
|
"expand_device_id": "Split this device into separate entities.",
|
||||||
"expand_label_id": "Split this label into separate areas, devices and entities",
|
"expand_label_id": "Split this label into separate areas, devices and entities.",
|
||||||
"add_target": "Add target",
|
"add_target": "Add target",
|
||||||
"remove": "Remove",
|
"remove": "Remove",
|
||||||
"remove_floor_id": "Remove floor",
|
"remove_floor_id": "Remove floor",
|
||||||
|
|||||||
@@ -138,7 +138,6 @@ export interface PanelInfo<T = Record<string, any> | null> {
|
|||||||
title: string | null;
|
title: string | null;
|
||||||
url_path: string;
|
url_path: string;
|
||||||
config_panel_domain?: string;
|
config_panel_domain?: string;
|
||||||
default_visible?: boolean;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export type Panels = Record<string, PanelInfo>;
|
export type Panels = Record<string, PanelInfo>;
|
||||||
|
|||||||
316
yarn.lock
316
yarn.lock
@@ -3893,22 +3893,22 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rsdoctor/client@npm:1.3.8":
|
"@rsdoctor/client@npm:1.3.7":
|
||||||
version: 1.3.8
|
version: 1.3.7
|
||||||
resolution: "@rsdoctor/client@npm:1.3.8"
|
resolution: "@rsdoctor/client@npm:1.3.7"
|
||||||
checksum: 10/e5f967e3563a96c11e153e07f5ca4d69febe9cf4970b6a13a09b77116f30853081867e0e74a82eff6f123fb738efe1aa96fe62a8224ebbf9868d653157e8dbb8
|
checksum: 10/70c4870f4ece2236a09bac30339b730768573a39292c677b2a976ce4a5e694ba3e702672b2bad55374dd7686714ba7e22d1bda3267bc1c2311251cfe47d507e0
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rsdoctor/core@npm:1.3.8":
|
"@rsdoctor/core@npm:1.3.7":
|
||||||
version: 1.3.8
|
version: 1.3.7
|
||||||
resolution: "@rsdoctor/core@npm:1.3.8"
|
resolution: "@rsdoctor/core@npm:1.3.7"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@rsbuild/plugin-check-syntax": "npm:1.5.0"
|
"@rsbuild/plugin-check-syntax": "npm:1.5.0"
|
||||||
"@rsdoctor/graph": "npm:1.3.8"
|
"@rsdoctor/graph": "npm:1.3.7"
|
||||||
"@rsdoctor/sdk": "npm:1.3.8"
|
"@rsdoctor/sdk": "npm:1.3.7"
|
||||||
"@rsdoctor/types": "npm:1.3.8"
|
"@rsdoctor/types": "npm:1.3.7"
|
||||||
"@rsdoctor/utils": "npm:1.3.8"
|
"@rsdoctor/utils": "npm:1.3.7"
|
||||||
browserslist-load-config: "npm:^1.0.1"
|
browserslist-load-config: "npm:^1.0.1"
|
||||||
enhanced-resolve: "npm:5.12.0"
|
enhanced-resolve: "npm:5.12.0"
|
||||||
es-toolkit: "npm:^1.41.0"
|
es-toolkit: "npm:^1.41.0"
|
||||||
@@ -3916,59 +3916,59 @@ __metadata:
|
|||||||
fs-extra: "npm:^11.1.1"
|
fs-extra: "npm:^11.1.1"
|
||||||
semver: "npm:^7.7.3"
|
semver: "npm:^7.7.3"
|
||||||
source-map: "npm:^0.7.6"
|
source-map: "npm:^0.7.6"
|
||||||
checksum: 10/7a86f5362cc8bf4bf1625d20c433f10264f8098b5c3f94cb721217818986ff3f913fce57ca038eda1c0190396f0255165caea7627e7150252375e4884603d834
|
checksum: 10/3374b49c3782a978c3ef041c95bef3dbd578419f602d45ad9687444e755a5bb38b6e7e1f532132f770ada48ee3025bebc0188dbc34d8f02cd37d68c5de84d741
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rsdoctor/graph@npm:1.3.8":
|
"@rsdoctor/graph@npm:1.3.7":
|
||||||
version: 1.3.8
|
version: 1.3.7
|
||||||
resolution: "@rsdoctor/graph@npm:1.3.8"
|
resolution: "@rsdoctor/graph@npm:1.3.7"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@rsdoctor/types": "npm:1.3.8"
|
"@rsdoctor/types": "npm:1.3.7"
|
||||||
"@rsdoctor/utils": "npm:1.3.8"
|
"@rsdoctor/utils": "npm:1.3.7"
|
||||||
es-toolkit: "npm:^1.41.0"
|
es-toolkit: "npm:^1.41.0"
|
||||||
path-browserify: "npm:1.0.1"
|
path-browserify: "npm:1.0.1"
|
||||||
source-map: "npm:^0.7.6"
|
source-map: "npm:^0.7.6"
|
||||||
checksum: 10/a0841bb60bc37776fbe19686243a155b808ea61dc2c0513c9e5af3f68a1f5b3d3d6fa75ac4ce7be2da55e4a142762914a6de5f8e77983cd6f7381c94a0be4fdf
|
checksum: 10/4aea28d3dc97895b91826803ece0712ed1eddca9b2d3620a561f5895e3648a80135a8285b63285e093128b4762869798ea8a39ad594f2ac7621ae1649901e83f
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rsdoctor/rspack-plugin@npm:1.3.8":
|
"@rsdoctor/rspack-plugin@npm:1.3.7":
|
||||||
version: 1.3.8
|
version: 1.3.7
|
||||||
resolution: "@rsdoctor/rspack-plugin@npm:1.3.8"
|
resolution: "@rsdoctor/rspack-plugin@npm:1.3.7"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@rsdoctor/core": "npm:1.3.8"
|
"@rsdoctor/core": "npm:1.3.7"
|
||||||
"@rsdoctor/graph": "npm:1.3.8"
|
"@rsdoctor/graph": "npm:1.3.7"
|
||||||
"@rsdoctor/sdk": "npm:1.3.8"
|
"@rsdoctor/sdk": "npm:1.3.7"
|
||||||
"@rsdoctor/types": "npm:1.3.8"
|
"@rsdoctor/types": "npm:1.3.7"
|
||||||
"@rsdoctor/utils": "npm:1.3.8"
|
"@rsdoctor/utils": "npm:1.3.7"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
"@rspack/core": "*"
|
"@rspack/core": "*"
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
"@rspack/core":
|
"@rspack/core":
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/ea792a5e8c688bb9abf3459f9fa1fa0356941b314d9bcd85b8a1df5bb3451cfb3eebab8df5de8774c092e7db7ef1b1cda30e881d3a82d336bbc258ded7b6a25c
|
checksum: 10/12a795d92047246c7dbf7aa5e705928a6715278939a7bd1279f259ad91c302a1336caf5cb335ed7ba2ac0f290f3db2e21426a5d9b32d0778c61b45f1fce5f76c
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rsdoctor/sdk@npm:1.3.8":
|
"@rsdoctor/sdk@npm:1.3.7":
|
||||||
version: 1.3.8
|
version: 1.3.7
|
||||||
resolution: "@rsdoctor/sdk@npm:1.3.8"
|
resolution: "@rsdoctor/sdk@npm:1.3.7"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@rsdoctor/client": "npm:1.3.8"
|
"@rsdoctor/client": "npm:1.3.7"
|
||||||
"@rsdoctor/graph": "npm:1.3.8"
|
"@rsdoctor/graph": "npm:1.3.7"
|
||||||
"@rsdoctor/types": "npm:1.3.8"
|
"@rsdoctor/types": "npm:1.3.7"
|
||||||
"@rsdoctor/utils": "npm:1.3.8"
|
"@rsdoctor/utils": "npm:1.3.7"
|
||||||
safer-buffer: "npm:2.1.2"
|
safer-buffer: "npm:2.1.2"
|
||||||
socket.io: "npm:4.8.1"
|
socket.io: "npm:4.8.1"
|
||||||
tapable: "npm:2.2.3"
|
tapable: "npm:2.2.3"
|
||||||
checksum: 10/720c49e385edd9ff30ea97ab19aa8c18408bde4f577c496b10113b38f31965be1c2cc9c7287b9a485ffa386e164714dd9e4bd78ace4725b40d6ee49d9bb8a8d6
|
checksum: 10/355d2c1b4923569937564040daafe41e516dcde566f8a97885d90b27acf118f211024688ef9f1f6198b78fe08e55c58fbe6ae687891e83f48468979034e7ac7f
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rsdoctor/types@npm:1.3.8":
|
"@rsdoctor/types@npm:1.3.7":
|
||||||
version: 1.3.8
|
version: 1.3.7
|
||||||
resolution: "@rsdoctor/types@npm:1.3.8"
|
resolution: "@rsdoctor/types@npm:1.3.7"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/connect": "npm:3.4.38"
|
"@types/connect": "npm:3.4.38"
|
||||||
"@types/estree": "npm:1.0.5"
|
"@types/estree": "npm:1.0.5"
|
||||||
@@ -3982,16 +3982,16 @@ __metadata:
|
|||||||
optional: true
|
optional: true
|
||||||
webpack:
|
webpack:
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/f7702766dd420989d213fe9455409c839315d87d8031ec5f103214363970bde2b6f8c6ef6a81b73535c9c40a4413642b4f3cd459b6901feb6485a0bdbb81fda9
|
checksum: 10/f2864261c6e0b7bd89baa8dd7e222aeb2e433573fc4f52afc9a3bbd128ac8a275208ebc7eb47b5bfb31bc94b3acacda4144635ca0737f2bdbb136fb45d3ab563
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rsdoctor/utils@npm:1.3.8":
|
"@rsdoctor/utils@npm:1.3.7":
|
||||||
version: 1.3.8
|
version: 1.3.7
|
||||||
resolution: "@rsdoctor/utils@npm:1.3.8"
|
resolution: "@rsdoctor/utils@npm:1.3.7"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/code-frame": "npm:7.26.2"
|
"@babel/code-frame": "npm:7.26.2"
|
||||||
"@rsdoctor/types": "npm:1.3.8"
|
"@rsdoctor/types": "npm:1.3.7"
|
||||||
"@types/estree": "npm:1.0.5"
|
"@types/estree": "npm:1.0.5"
|
||||||
acorn: "npm:^8.10.0"
|
acorn: "npm:^8.10.0"
|
||||||
acorn-import-attributes: "npm:^1.9.5"
|
acorn-import-attributes: "npm:^1.9.5"
|
||||||
@@ -4005,96 +4005,96 @@ __metadata:
|
|||||||
picocolors: "npm:^1.1.1"
|
picocolors: "npm:^1.1.1"
|
||||||
rslog: "npm:^1.2.11"
|
rslog: "npm:^1.2.11"
|
||||||
strip-ansi: "npm:^6.0.1"
|
strip-ansi: "npm:^6.0.1"
|
||||||
checksum: 10/8ff731164f754094d16a5616aa08b70b6f6000701335a5eec93e03d5f376f1f68bbd20be9de0904f90d65271030c8b04acc785df8dfb19c30bf737d84ecc8877
|
checksum: 10/e5805c6b0a3f52fc98fa37c6f62179fc123db61feab32bde34949282609b6b37ad0184b82840b2d99585af90c56bc4d0b09c5ba2aa5eaba87f91ae68e73abdba
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rspack/binding-darwin-arm64@npm:1.6.1":
|
"@rspack/binding-darwin-arm64@npm:1.6.0":
|
||||||
version: 1.6.1
|
version: 1.6.0
|
||||||
resolution: "@rspack/binding-darwin-arm64@npm:1.6.1"
|
resolution: "@rspack/binding-darwin-arm64@npm:1.6.0"
|
||||||
conditions: os=darwin & cpu=arm64
|
conditions: os=darwin & cpu=arm64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rspack/binding-darwin-x64@npm:1.6.1":
|
"@rspack/binding-darwin-x64@npm:1.6.0":
|
||||||
version: 1.6.1
|
version: 1.6.0
|
||||||
resolution: "@rspack/binding-darwin-x64@npm:1.6.1"
|
resolution: "@rspack/binding-darwin-x64@npm:1.6.0"
|
||||||
conditions: os=darwin & cpu=x64
|
conditions: os=darwin & cpu=x64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rspack/binding-linux-arm64-gnu@npm:1.6.1":
|
"@rspack/binding-linux-arm64-gnu@npm:1.6.0":
|
||||||
version: 1.6.1
|
version: 1.6.0
|
||||||
resolution: "@rspack/binding-linux-arm64-gnu@npm:1.6.1"
|
resolution: "@rspack/binding-linux-arm64-gnu@npm:1.6.0"
|
||||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rspack/binding-linux-arm64-musl@npm:1.6.1":
|
"@rspack/binding-linux-arm64-musl@npm:1.6.0":
|
||||||
version: 1.6.1
|
version: 1.6.0
|
||||||
resolution: "@rspack/binding-linux-arm64-musl@npm:1.6.1"
|
resolution: "@rspack/binding-linux-arm64-musl@npm:1.6.0"
|
||||||
conditions: os=linux & cpu=arm64 & libc=musl
|
conditions: os=linux & cpu=arm64 & libc=musl
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rspack/binding-linux-x64-gnu@npm:1.6.1":
|
"@rspack/binding-linux-x64-gnu@npm:1.6.0":
|
||||||
version: 1.6.1
|
version: 1.6.0
|
||||||
resolution: "@rspack/binding-linux-x64-gnu@npm:1.6.1"
|
resolution: "@rspack/binding-linux-x64-gnu@npm:1.6.0"
|
||||||
conditions: os=linux & cpu=x64 & libc=glibc
|
conditions: os=linux & cpu=x64 & libc=glibc
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rspack/binding-linux-x64-musl@npm:1.6.1":
|
"@rspack/binding-linux-x64-musl@npm:1.6.0":
|
||||||
version: 1.6.1
|
version: 1.6.0
|
||||||
resolution: "@rspack/binding-linux-x64-musl@npm:1.6.1"
|
resolution: "@rspack/binding-linux-x64-musl@npm:1.6.0"
|
||||||
conditions: os=linux & cpu=x64 & libc=musl
|
conditions: os=linux & cpu=x64 & libc=musl
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rspack/binding-wasm32-wasi@npm:1.6.1":
|
"@rspack/binding-wasm32-wasi@npm:1.6.0":
|
||||||
version: 1.6.1
|
version: 1.6.0
|
||||||
resolution: "@rspack/binding-wasm32-wasi@npm:1.6.1"
|
resolution: "@rspack/binding-wasm32-wasi@npm:1.6.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@napi-rs/wasm-runtime": "npm:1.0.7"
|
"@napi-rs/wasm-runtime": "npm:1.0.7"
|
||||||
conditions: cpu=wasm32
|
conditions: cpu=wasm32
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rspack/binding-win32-arm64-msvc@npm:1.6.1":
|
"@rspack/binding-win32-arm64-msvc@npm:1.6.0":
|
||||||
version: 1.6.1
|
version: 1.6.0
|
||||||
resolution: "@rspack/binding-win32-arm64-msvc@npm:1.6.1"
|
resolution: "@rspack/binding-win32-arm64-msvc@npm:1.6.0"
|
||||||
conditions: os=win32 & cpu=arm64
|
conditions: os=win32 & cpu=arm64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rspack/binding-win32-ia32-msvc@npm:1.6.1":
|
"@rspack/binding-win32-ia32-msvc@npm:1.6.0":
|
||||||
version: 1.6.1
|
version: 1.6.0
|
||||||
resolution: "@rspack/binding-win32-ia32-msvc@npm:1.6.1"
|
resolution: "@rspack/binding-win32-ia32-msvc@npm:1.6.0"
|
||||||
conditions: os=win32 & cpu=ia32
|
conditions: os=win32 & cpu=ia32
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rspack/binding-win32-x64-msvc@npm:1.6.1":
|
"@rspack/binding-win32-x64-msvc@npm:1.6.0":
|
||||||
version: 1.6.1
|
version: 1.6.0
|
||||||
resolution: "@rspack/binding-win32-x64-msvc@npm:1.6.1"
|
resolution: "@rspack/binding-win32-x64-msvc@npm:1.6.0"
|
||||||
conditions: os=win32 & cpu=x64
|
conditions: os=win32 & cpu=x64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rspack/binding@npm:1.6.1":
|
"@rspack/binding@npm:1.6.0":
|
||||||
version: 1.6.1
|
version: 1.6.0
|
||||||
resolution: "@rspack/binding@npm:1.6.1"
|
resolution: "@rspack/binding@npm:1.6.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@rspack/binding-darwin-arm64": "npm:1.6.1"
|
"@rspack/binding-darwin-arm64": "npm:1.6.0"
|
||||||
"@rspack/binding-darwin-x64": "npm:1.6.1"
|
"@rspack/binding-darwin-x64": "npm:1.6.0"
|
||||||
"@rspack/binding-linux-arm64-gnu": "npm:1.6.1"
|
"@rspack/binding-linux-arm64-gnu": "npm:1.6.0"
|
||||||
"@rspack/binding-linux-arm64-musl": "npm:1.6.1"
|
"@rspack/binding-linux-arm64-musl": "npm:1.6.0"
|
||||||
"@rspack/binding-linux-x64-gnu": "npm:1.6.1"
|
"@rspack/binding-linux-x64-gnu": "npm:1.6.0"
|
||||||
"@rspack/binding-linux-x64-musl": "npm:1.6.1"
|
"@rspack/binding-linux-x64-musl": "npm:1.6.0"
|
||||||
"@rspack/binding-wasm32-wasi": "npm:1.6.1"
|
"@rspack/binding-wasm32-wasi": "npm:1.6.0"
|
||||||
"@rspack/binding-win32-arm64-msvc": "npm:1.6.1"
|
"@rspack/binding-win32-arm64-msvc": "npm:1.6.0"
|
||||||
"@rspack/binding-win32-ia32-msvc": "npm:1.6.1"
|
"@rspack/binding-win32-ia32-msvc": "npm:1.6.0"
|
||||||
"@rspack/binding-win32-x64-msvc": "npm:1.6.1"
|
"@rspack/binding-win32-x64-msvc": "npm:1.6.0"
|
||||||
dependenciesMeta:
|
dependenciesMeta:
|
||||||
"@rspack/binding-darwin-arm64":
|
"@rspack/binding-darwin-arm64":
|
||||||
optional: true
|
optional: true
|
||||||
@@ -4116,23 +4116,23 @@ __metadata:
|
|||||||
optional: true
|
optional: true
|
||||||
"@rspack/binding-win32-x64-msvc":
|
"@rspack/binding-win32-x64-msvc":
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/374f234febba8305821f61645257278dd8fdf5961ca49b1605ea4535a8e40102db2afa96474464cec98bfa321bcb9beded78e7c1a9c130b1321a516a7c36ef7e
|
checksum: 10/4f6efedd28341bd4737992112d66daaa563450f7b653acecd5c531fe4b8edf32108424fe45bcccb46c0ab85f1c2e00c64241aa4e175e7e0ec5f08d9239ee5432
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@rspack/core@npm:1.6.1":
|
"@rspack/core@npm:1.6.0":
|
||||||
version: 1.6.1
|
version: 1.6.0
|
||||||
resolution: "@rspack/core@npm:1.6.1"
|
resolution: "@rspack/core@npm:1.6.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@module-federation/runtime-tools": "npm:0.21.2"
|
"@module-federation/runtime-tools": "npm:0.21.2"
|
||||||
"@rspack/binding": "npm:1.6.1"
|
"@rspack/binding": "npm:1.6.0"
|
||||||
"@rspack/lite-tapable": "npm:1.0.1"
|
"@rspack/lite-tapable": "npm:1.0.1"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
"@swc/helpers": ">=0.5.1"
|
"@swc/helpers": ">=0.5.1"
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
"@swc/helpers":
|
"@swc/helpers":
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/6ba8ffff547e0185b9ab397d13d19304130e08050a82ebbf11d86b6b557b6a3cff2adc2bfeb21a737801cfcc0ba9391f2efccd3149409f22a0218b87e6af0951
|
checksum: 10/4017688a47725956d21f852eecbc60b0038cac4ca6ebf2b8785dfe3583b96ebb3f6e78af259f3d07d25a61d37c59e4ca267898e4aac9da987a4ea2a00ae110fc
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@@ -5368,12 +5368,12 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@vitest/coverage-v8@npm:4.0.7":
|
"@vitest/coverage-v8@npm:4.0.6":
|
||||||
version: 4.0.7
|
version: 4.0.6
|
||||||
resolution: "@vitest/coverage-v8@npm:4.0.7"
|
resolution: "@vitest/coverage-v8@npm:4.0.6"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@bcoe/v8-coverage": "npm:^1.0.2"
|
"@bcoe/v8-coverage": "npm:^1.0.2"
|
||||||
"@vitest/utils": "npm:4.0.7"
|
"@vitest/utils": "npm:4.0.6"
|
||||||
ast-v8-to-istanbul: "npm:^0.3.5"
|
ast-v8-to-istanbul: "npm:^0.3.5"
|
||||||
debug: "npm:^4.4.3"
|
debug: "npm:^4.4.3"
|
||||||
istanbul-lib-coverage: "npm:^3.2.2"
|
istanbul-lib-coverage: "npm:^3.2.2"
|
||||||
@@ -5384,34 +5384,34 @@ __metadata:
|
|||||||
std-env: "npm:^3.9.0"
|
std-env: "npm:^3.9.0"
|
||||||
tinyrainbow: "npm:^3.0.3"
|
tinyrainbow: "npm:^3.0.3"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
"@vitest/browser": 4.0.7
|
"@vitest/browser": 4.0.6
|
||||||
vitest: 4.0.7
|
vitest: 4.0.6
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
"@vitest/browser":
|
"@vitest/browser":
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/eab89e5da9e8b3ebc0abe08419adfcd2cd54a9cd203252a8cf739017f3a3bbd87a7a6e2dd1ea50105f2edca36618c5f0a394c6f88790d9dc4523440a3588f166
|
checksum: 10/76b765a30178fe61937da242b72b4e931e0bcb39a03ed5f1d945ff0acc3828b517d976755b0d02866416a0b042db5fbbfd0bad3c49d2175716f2f1c22365518b
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@vitest/expect@npm:4.0.7":
|
"@vitest/expect@npm:4.0.6":
|
||||||
version: 4.0.7
|
version: 4.0.6
|
||||||
resolution: "@vitest/expect@npm:4.0.7"
|
resolution: "@vitest/expect@npm:4.0.6"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@standard-schema/spec": "npm:^1.0.0"
|
"@standard-schema/spec": "npm:^1.0.0"
|
||||||
"@types/chai": "npm:^5.2.2"
|
"@types/chai": "npm:^5.2.2"
|
||||||
"@vitest/spy": "npm:4.0.7"
|
"@vitest/spy": "npm:4.0.6"
|
||||||
"@vitest/utils": "npm:4.0.7"
|
"@vitest/utils": "npm:4.0.6"
|
||||||
chai: "npm:^6.0.1"
|
chai: "npm:^6.0.1"
|
||||||
tinyrainbow: "npm:^3.0.3"
|
tinyrainbow: "npm:^3.0.3"
|
||||||
checksum: 10/d64fa5e17b3fd1894200263c36584673e4e9f8ff055158a4fc5339a00e5132038533e8f7aa45f4f4daf0bfbedd9ccb1de2a543e11eac8c4fd507768874dbd11f
|
checksum: 10/70d6e03d413d208df722461ff7136a41249a0f8c34f985b4e7104f85e85583f272c3a92c4d7c9ea0ebd40ad77b64cb3b66d7ecd628210333ebd6813659a3422f
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@vitest/mocker@npm:4.0.7":
|
"@vitest/mocker@npm:4.0.6":
|
||||||
version: 4.0.7
|
version: 4.0.6
|
||||||
resolution: "@vitest/mocker@npm:4.0.7"
|
resolution: "@vitest/mocker@npm:4.0.6"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vitest/spy": "npm:4.0.7"
|
"@vitest/spy": "npm:4.0.6"
|
||||||
estree-walker: "npm:^3.0.3"
|
estree-walker: "npm:^3.0.3"
|
||||||
magic-string: "npm:^0.30.19"
|
magic-string: "npm:^0.30.19"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -5422,54 +5422,54 @@ __metadata:
|
|||||||
optional: true
|
optional: true
|
||||||
vite:
|
vite:
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/cdba9cb3808b6944b9533c9b4152c33b731b89c8204390f2e29ae5851eccb1241a12a02223d4934bf25607e967c17b89ad9fa153d939ea42c9b5171552044df7
|
checksum: 10/82a1726ea7589a33e0a598cbe8c614ebd49900d3470b597e02a315a3a57c3fc9dcf84ea01a61df7cf1f9a23e273213b059cc721fc3a9b7fa87f49f4604f024d4
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@vitest/pretty-format@npm:4.0.7":
|
"@vitest/pretty-format@npm:4.0.6":
|
||||||
version: 4.0.7
|
version: 4.0.6
|
||||||
resolution: "@vitest/pretty-format@npm:4.0.7"
|
resolution: "@vitest/pretty-format@npm:4.0.6"
|
||||||
dependencies:
|
dependencies:
|
||||||
tinyrainbow: "npm:^3.0.3"
|
tinyrainbow: "npm:^3.0.3"
|
||||||
checksum: 10/c936c0d503c665bd9565348c52280f10c990da43504fa7da027521b298bab16a6c83866d0eb91c82d7c53ba4aa299042b34a94a6545f1b7b999bf40a1d8b9c13
|
checksum: 10/34e7c423233fefdb9c45d4873d38dde0641121e0639cd5109fea9d57d298a70b4a516284ff7a044db6373e2b39e98ed1d18f8ad55471a3d774bc96eac3de4560
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@vitest/runner@npm:4.0.7":
|
"@vitest/runner@npm:4.0.6":
|
||||||
version: 4.0.7
|
version: 4.0.6
|
||||||
resolution: "@vitest/runner@npm:4.0.7"
|
resolution: "@vitest/runner@npm:4.0.6"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vitest/utils": "npm:4.0.7"
|
"@vitest/utils": "npm:4.0.6"
|
||||||
pathe: "npm:^2.0.3"
|
pathe: "npm:^2.0.3"
|
||||||
checksum: 10/9dedaefc0c33736cfe721e1e53ecea05bb6bc9b32611bd55ca486555814aac319f0d7c6df155cebc6ece54f8c7870d810a6285c30006b49b6e511eb68a173873
|
checksum: 10/40abea31fa33985d13d0eff46abd25f139c6634d34164642e48a9359e2469d592ca985d95d9df9ab9b3bec9857f9d5abbcf9865473a5e942e650487eb36a00be
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@vitest/snapshot@npm:4.0.7":
|
"@vitest/snapshot@npm:4.0.6":
|
||||||
version: 4.0.7
|
version: 4.0.6
|
||||||
resolution: "@vitest/snapshot@npm:4.0.7"
|
resolution: "@vitest/snapshot@npm:4.0.6"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vitest/pretty-format": "npm:4.0.7"
|
"@vitest/pretty-format": "npm:4.0.6"
|
||||||
magic-string: "npm:^0.30.19"
|
magic-string: "npm:^0.30.19"
|
||||||
pathe: "npm:^2.0.3"
|
pathe: "npm:^2.0.3"
|
||||||
checksum: 10/df9b0c736d1a7a063eea9b9527e37acb53acaf8158469db49b1deb8b64229db30219bf0596e1981e1d7beec194085c07b06f34c466fc5b5cf114cdfa7b04de47
|
checksum: 10/3477e1ab6a5ce23f4bf24c44a5d55f3e44448e9f4564022b3e0a4aaa0de6eef9cc4c913989a092a05345b4dd92e7545b681eb394d94f064be74479ac78911c7c
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@vitest/spy@npm:4.0.7":
|
"@vitest/spy@npm:4.0.6":
|
||||||
version: 4.0.7
|
version: 4.0.6
|
||||||
resolution: "@vitest/spy@npm:4.0.7"
|
resolution: "@vitest/spy@npm:4.0.6"
|
||||||
checksum: 10/44f17971c1e8f4aaa4dcc8b26e86bcc9249a4ce8a131baac515980f3befede719494b548e2e48f871060ce2b22b8959fc85bf49db51ba4785fb6c025785b1a7b
|
checksum: 10/ddbb1aff00719f90b051e86c49071e74af780c9536c03987d5e89bf139fd6f6c00f7927efc8f894252ec60db5b16dfeb0235f98f038779a39c1b62dcba1a6b44
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@vitest/utils@npm:4.0.7":
|
"@vitest/utils@npm:4.0.6":
|
||||||
version: 4.0.7
|
version: 4.0.6
|
||||||
resolution: "@vitest/utils@npm:4.0.7"
|
resolution: "@vitest/utils@npm:4.0.6"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vitest/pretty-format": "npm:4.0.7"
|
"@vitest/pretty-format": "npm:4.0.6"
|
||||||
tinyrainbow: "npm:^3.0.3"
|
tinyrainbow: "npm:^3.0.3"
|
||||||
checksum: 10/82110c390309d3bac0ecf314f0428873db8d1df93e0a0bbc5214dca9ec820eb767666ccf2f66593d0b82bfe455ee9037727d2eb310fe24bacb3f71c45a107497
|
checksum: 10/cb556e63e3f0f98a0eba21ec03793b44182bf343a5fdfd8ac2a70c5dfb3b14fbacf0de2aa5df0c3a14b2b4b634ce86f40077b8503e7486e79caffee2f07840e0
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@@ -9263,8 +9263,8 @@ __metadata:
|
|||||||
"@octokit/plugin-retry": "npm:8.0.3"
|
"@octokit/plugin-retry": "npm:8.0.3"
|
||||||
"@octokit/rest": "npm:22.0.1"
|
"@octokit/rest": "npm:22.0.1"
|
||||||
"@replit/codemirror-indentation-markers": "npm:6.5.3"
|
"@replit/codemirror-indentation-markers": "npm:6.5.3"
|
||||||
"@rsdoctor/rspack-plugin": "npm:1.3.8"
|
"@rsdoctor/rspack-plugin": "npm:1.3.7"
|
||||||
"@rspack/core": "npm:1.6.1"
|
"@rspack/core": "npm:1.6.0"
|
||||||
"@rspack/dev-server": "npm:1.1.4"
|
"@rspack/dev-server": "npm:1.1.4"
|
||||||
"@swc/helpers": "npm:0.5.17"
|
"@swc/helpers": "npm:0.5.17"
|
||||||
"@thomasloven/round-slider": "npm:0.6.0"
|
"@thomasloven/round-slider": "npm:0.6.0"
|
||||||
@@ -9291,7 +9291,7 @@ __metadata:
|
|||||||
"@vaadin/combo-box": "npm:24.9.4"
|
"@vaadin/combo-box": "npm:24.9.4"
|
||||||
"@vaadin/vaadin-themable-mixin": "npm:24.9.4"
|
"@vaadin/vaadin-themable-mixin": "npm:24.9.4"
|
||||||
"@vibrant/color": "npm:4.0.0"
|
"@vibrant/color": "npm:4.0.0"
|
||||||
"@vitest/coverage-v8": "npm:4.0.7"
|
"@vitest/coverage-v8": "npm:4.0.6"
|
||||||
"@vue/web-component-wrapper": "npm:1.3.0"
|
"@vue/web-component-wrapper": "npm:1.3.0"
|
||||||
"@webcomponents/scoped-custom-element-registry": "npm:0.0.10"
|
"@webcomponents/scoped-custom-element-registry": "npm:0.0.10"
|
||||||
"@webcomponents/webcomponentsjs": "npm:2.8.0"
|
"@webcomponents/webcomponentsjs": "npm:2.8.0"
|
||||||
@@ -9351,7 +9351,7 @@ __metadata:
|
|||||||
lodash.template: "npm:4.5.0"
|
lodash.template: "npm:4.5.0"
|
||||||
luxon: "npm:3.7.2"
|
luxon: "npm:3.7.2"
|
||||||
map-stream: "npm:0.0.7"
|
map-stream: "npm:0.0.7"
|
||||||
marked: "npm:16.4.2"
|
marked: "npm:16.4.1"
|
||||||
memoize-one: "npm:6.0.0"
|
memoize-one: "npm:6.0.0"
|
||||||
node-vibrant: "npm:4.0.3"
|
node-vibrant: "npm:4.0.3"
|
||||||
object-hash: "npm:3.0.0"
|
object-hash: "npm:3.0.0"
|
||||||
@@ -9376,7 +9376,7 @@ __metadata:
|
|||||||
typescript-eslint: "npm:8.46.3"
|
typescript-eslint: "npm:8.46.3"
|
||||||
ua-parser-js: "npm:2.0.6"
|
ua-parser-js: "npm:2.0.6"
|
||||||
vite-tsconfig-paths: "npm:5.1.4"
|
vite-tsconfig-paths: "npm:5.1.4"
|
||||||
vitest: "npm:4.0.7"
|
vitest: "npm:4.0.6"
|
||||||
vue: "npm:2.7.16"
|
vue: "npm:2.7.16"
|
||||||
vue2-daterange-picker: "npm:0.6.8"
|
vue2-daterange-picker: "npm:0.6.8"
|
||||||
webpack-stats-plugin: "npm:1.1.3"
|
webpack-stats-plugin: "npm:1.1.3"
|
||||||
@@ -10984,12 +10984,12 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"marked@npm:16.4.2":
|
"marked@npm:16.4.1":
|
||||||
version: 16.4.2
|
version: 16.4.1
|
||||||
resolution: "marked@npm:16.4.2"
|
resolution: "marked@npm:16.4.1"
|
||||||
bin:
|
bin:
|
||||||
marked: bin/marked.js
|
marked: bin/marked.js
|
||||||
checksum: 10/6e40e40661dce97e271198daa2054fc31e6445892a735e416c248fba046bdfa4573cafa08dc254529f105e7178a34485eb7f82573979cfb377a4530f66e79187
|
checksum: 10/b5f475dbe297162dc988b7f345b559d03248fde1023822b9f2a68f50cbca0981c78c42f380c3aa5e133b5f5c069a2c6cd683413c12c83710e983a7bc46cdf4a2
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@@ -14751,17 +14751,17 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"vitest@npm:4.0.7":
|
"vitest@npm:4.0.6":
|
||||||
version: 4.0.7
|
version: 4.0.6
|
||||||
resolution: "vitest@npm:4.0.7"
|
resolution: "vitest@npm:4.0.6"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vitest/expect": "npm:4.0.7"
|
"@vitest/expect": "npm:4.0.6"
|
||||||
"@vitest/mocker": "npm:4.0.7"
|
"@vitest/mocker": "npm:4.0.6"
|
||||||
"@vitest/pretty-format": "npm:4.0.7"
|
"@vitest/pretty-format": "npm:4.0.6"
|
||||||
"@vitest/runner": "npm:4.0.7"
|
"@vitest/runner": "npm:4.0.6"
|
||||||
"@vitest/snapshot": "npm:4.0.7"
|
"@vitest/snapshot": "npm:4.0.6"
|
||||||
"@vitest/spy": "npm:4.0.7"
|
"@vitest/spy": "npm:4.0.6"
|
||||||
"@vitest/utils": "npm:4.0.7"
|
"@vitest/utils": "npm:4.0.6"
|
||||||
debug: "npm:^4.4.3"
|
debug: "npm:^4.4.3"
|
||||||
es-module-lexer: "npm:^1.7.0"
|
es-module-lexer: "npm:^1.7.0"
|
||||||
expect-type: "npm:^1.2.2"
|
expect-type: "npm:^1.2.2"
|
||||||
@@ -14779,10 +14779,10 @@ __metadata:
|
|||||||
"@edge-runtime/vm": "*"
|
"@edge-runtime/vm": "*"
|
||||||
"@types/debug": ^4.1.12
|
"@types/debug": ^4.1.12
|
||||||
"@types/node": ^20.0.0 || ^22.0.0 || >=24.0.0
|
"@types/node": ^20.0.0 || ^22.0.0 || >=24.0.0
|
||||||
"@vitest/browser-playwright": 4.0.7
|
"@vitest/browser-playwright": 4.0.6
|
||||||
"@vitest/browser-preview": 4.0.7
|
"@vitest/browser-preview": 4.0.6
|
||||||
"@vitest/browser-webdriverio": 4.0.7
|
"@vitest/browser-webdriverio": 4.0.6
|
||||||
"@vitest/ui": 4.0.7
|
"@vitest/ui": 4.0.6
|
||||||
happy-dom: "*"
|
happy-dom: "*"
|
||||||
jsdom: "*"
|
jsdom: "*"
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
@@ -14806,7 +14806,7 @@ __metadata:
|
|||||||
optional: true
|
optional: true
|
||||||
bin:
|
bin:
|
||||||
vitest: vitest.mjs
|
vitest: vitest.mjs
|
||||||
checksum: 10/23f872860f2f8ef7aa4a44830ff52fb385ee7879bd6952a116013cada7cc6bad7a2b72d9034d0bbf0134028b662bd00e8827021e5ff4ef6e232e8108e4f4851d
|
checksum: 10/79c723a7a76130af3ed4a08a1a073200fa28ec80431e431b3a88d5b91d6683be8909e2f05b286aae7f7671d5fae136294e06fc34a6e4d1b266970c4892e07182
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user