chore: Enforce consistent type imports via @typescript-eslint/consistent-type-imports (#2545)

This commit is contained in:
Dermot Duffy
2026-06-30 17:45:13 -07:00
committed by dermotduffy
parent 8f4ebcc0de
commit 7dc29865b8
589 changed files with 2419 additions and 2103 deletions
@@ -1,8 +1,8 @@
import { ActionContext } from 'action';
import type { ActionContext } from 'action';
import { z } from 'zod';
import { TriggerData } from '../../condition-trigger/triggers/types.js';
import {
import type { TriggerData } from '../../condition-trigger/triggers/types.js';
import type {
ActionConfig,
Actions,
ActionsConfig,
@@ -13,10 +13,10 @@ import {
isAdvancedCameraCardCustomAction,
} from '../../utils/action.js';
import { allPromises, errorToConsole } from '../../utils/basic.js';
import { TemplateRenderer } from '../templates/index.js';
import { CardActionsManagerAPI } from '../types.js';
import type { TemplateRenderer } from '../templates/index.js';
import type { CardActionsManagerAPI } from '../types.js';
import { ActionSet } from './actions/set.js';
import {
import type {
ActionPrepareCallback,
ActionsExecutionRequest,
ActionsExecutor,
+4 -4
View File
@@ -1,13 +1,13 @@
import { ActionContext } from 'action';
import type { ActionContext } from 'action';
import {
import type {
ActionConfig,
AuxillaryActionConfig,
} from '../../../config/schema/actions/types.js';
import { localize } from '../../../localize/localize.js';
import { getActionName } from '../../../utils/action';
import { CardActionsAPI } from '../../types';
import { Action, ActionAbortError, ActionPrepareCallback } from '../types';
import type { CardActionsAPI } from '../../types';
import { ActionAbortError, type Action, type ActionPrepareCallback } from '../types';
export class BaseAction<T extends ActionConfig> implements Action {
protected _context: ActionContext;
@@ -1,5 +1,5 @@
import { CallAnswerActionConfig } from '../../../config/schema/actions/custom/call-answer';
import { CardActionsAPI } from '../../types';
import type { CallAnswerActionConfig } from '../../../config/schema/actions/custom/call-answer';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class CallAnswerAction extends AdvancedCameraCardAction<CallAnswerActionConfig> {
@@ -1,5 +1,5 @@
import { CallEndActionConfig } from '../../../config/schema/actions/custom/call-end';
import { CardActionsAPI } from '../../types';
import type { CallEndActionConfig } from '../../../config/schema/actions/custom/call-end';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class CallEndAction extends AdvancedCameraCardAction<CallEndActionConfig> {
@@ -1,5 +1,5 @@
import { CallServiceActionConfig } from '../../../config/schema/actions/stock/call-service';
import { CardActionsAPI } from '../../types';
import type { CallServiceActionConfig } from '../../../config/schema/actions/stock/call-service';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class CallServiceAction extends AdvancedCameraCardAction<CallServiceActionConfig> {
@@ -1,5 +1,5 @@
import { CallStartActionConfig } from '../../../config/schema/actions/custom/call-start';
import { CardActionsAPI } from '../../types';
import type { CallStartActionConfig } from '../../../config/schema/actions/custom/call-start';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class CallStartAction extends AdvancedCameraCardAction<CallStartActionConfig> {
@@ -1,5 +1,5 @@
import { CameraSelectActionConfig } from '../../../config/schema/actions/custom/camera-select';
import { CardActionsAPI } from '../../types';
import type { CameraSelectActionConfig } from '../../../config/schema/actions/custom/camera-select';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class CameraSelectAction extends AdvancedCameraCardAction<CameraSelectActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class CameraUIAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,6 +1,6 @@
import { CustomActionConfig } from '../../../config/schema/actions/stock/custom';
import type { CustomActionConfig } from '../../../config/schema/actions/stock/custom';
import { fireHASSEvent } from '../../../ha/fire-hass-event';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class CustomAction extends AdvancedCameraCardAction<CustomActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class DefaultAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { DisplayModeActionConfig } from '../../../config/schema/actions/custom/display-mode';
import { CardActionsAPI } from '../../types';
import type { DisplayModeActionConfig } from '../../../config/schema/actions/custom/display-mode';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class DisplayModeSelectAction extends AdvancedCameraCardAction<DisplayModeActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class DownloadAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { EffectActionConfig } from '../../../config/schema/actions/custom/effect';
import { CardActionsAPI } from '../../types';
import type { EffectActionConfig } from '../../../config/schema/actions/custom/effect';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class EffectAction extends AdvancedCameraCardAction<EffectActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class ExpandAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class FullscreenAction extends AdvancedCameraCardAction<GeneralActionConfig> {
+5 -5
View File
@@ -1,14 +1,14 @@
import { ActionContext } from 'action';
import type { ActionContext } from 'action';
import { createConditionEvaluator } from '../../../condition-trigger/conditions/factory';
import { TriggerData } from '../../../condition-trigger/triggers/types';
import {
import type { TriggerData } from '../../../condition-trigger/triggers/types';
import type {
AuxillaryActionConfig,
IfActionConfig,
} from '../../../config/schema/actions/types';
import { TemplateRenderer } from '../../templates/index';
import { CardActionsAPI } from '../../types';
import { ActionPrepareCallback } from '../types';
import type { CardActionsAPI } from '../../types';
import type { ActionPrepareCallback } from '../types';
import { BaseAction } from './base';
export class IfAction extends BaseAction<IfActionConfig> {
+2 -2
View File
@@ -1,7 +1,7 @@
import { MediaNotificationController } from '../../../components-lib/media/notification-controller';
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { ViewItemClassifier } from '../../../view/item-classifier';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class InfoAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { InternalCallbackActionConfig } from '../../../config/schema/actions/custom/internal';
import { CardActionsAPI } from '../../types';
import type { InternalCallbackActionConfig } from '../../../config/schema/actions/custom/internal';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class InternalCallbackAction extends AdvancedCameraCardAction<InternalCallbackActionConfig> {
+2 -2
View File
@@ -1,5 +1,5 @@
import { LogActionConfig } from '../../../config/schema/actions/custom/log';
import { CardActionsAPI } from '../../types';
import type { LogActionConfig } from '../../../config/schema/actions/custom/log';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class LogAction extends AdvancedCameraCardAction<LogActionConfig> {
@@ -1,7 +1,7 @@
import { MediaPlayerActionConfig } from '../../../config/schema/actions/custom/media-player';
import type { MediaPlayerActionConfig } from '../../../config/schema/actions/custom/media-player';
import { ViewItemClassifier } from '../../../view/item-classifier';
import { getStreamCameraID } from '../../../view/substream';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class MediaPlayerAction extends AdvancedCameraCardAction<MediaPlayerActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class MenuToggleAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class MicrophoneConnectAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class MicrophoneDisconnectAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class MicrophoneMuteAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class MicrophoneUnmuteAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,6 +1,6 @@
import { MoreInfoActionConfig } from '../../../config/schema/actions/stock/more-info';
import type { MoreInfoActionConfig } from '../../../config/schema/actions/stock/more-info';
import { fireHASSEvent } from '../../../ha/fire-hass-event';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class MoreInfoAction extends AdvancedCameraCardAction<MoreInfoActionConfig> {
+2 -2
View File
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class MuteAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,6 +1,6 @@
import { NavigateActionConfig } from '../../../config/schema/actions/stock/navigate';
import type { NavigateActionConfig } from '../../../config/schema/actions/stock/navigate';
import { fireHASSEvent } from '../../../ha/fire-hass-event';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class NavigateAction extends AdvancedCameraCardAction<NavigateActionConfig> {
+2 -2
View File
@@ -1,5 +1,5 @@
import { NoneActionConfig } from '../../../config/schema/actions/stock/none';
import { CardActionsAPI } from '../../types';
import type { NoneActionConfig } from '../../../config/schema/actions/stock/none';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class NoneAction extends AdvancedCameraCardAction<NoneActionConfig> {
@@ -1,5 +1,5 @@
import { NotificationActionConfig } from '../../../config/schema/actions/types';
import { CardActionsAPI } from '../../types';
import type { NotificationActionConfig } from '../../../config/schema/actions/types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class NotificationAction extends AdvancedCameraCardAction<NotificationActionConfig> {
+2 -2
View File
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class PauseAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { PerformActionActionConfig } from '../../../config/schema/actions/stock/perform-action';
import { CardActionsAPI } from '../../types';
import type { PerformActionActionConfig } from '../../../config/schema/actions/stock/perform-action';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class PerformActionAction extends AdvancedCameraCardAction<PerformActionActionConfig> {
+2 -2
View File
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class PIPAction extends AdvancedCameraCardAction<GeneralActionConfig> {
+2 -2
View File
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class PlayAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,5 +1,5 @@
import { PTZControlsActionConfig } from '../../../config/schema/actions/custom/ptz-controls';
import { CardActionsAPI } from '../../types';
import type { PTZControlsActionConfig } from '../../../config/schema/actions/custom/ptz-controls';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class PTZControlsAction extends AdvancedCameraCardAction<PTZControlsActionConfig> {
@@ -1,18 +1,18 @@
import { clamp } from 'lodash-es';
import {
PartialZoomSettings,
ZOOM_DEFAULT_PAN_X,
ZOOM_DEFAULT_PAN_Y,
ZOOM_DEFAULT_SCALE,
type PartialZoomSettings,
} from '../../../components-lib/zoom/types';
import { generateViewContextForZoom } from '../../../components-lib/zoom/zoom-view-context';
import { PTZDigitialActionConfig } from '../../../config/schema/actions/custom/ptz-digital';
import type { PTZDigitialActionConfig } from '../../../config/schema/actions/custom/ptz-digital';
import { ZOOM_MAX, ZOOM_MIN } from '../../../config/schema/common/zoom';
import { getPTZTarget } from '../../../utils/ptz';
import { Timer } from '../../../utils/timer';
import { CardActionsAPI } from '../../types';
import { TargetedActionContext } from '../types';
import type { CardActionsAPI } from '../../types';
import type { TargetedActionContext } from '../types';
import {
setInProgressForThisTarget,
stopInProgressForThisTarget,
@@ -1,7 +1,7 @@
import { PTZMultiActionConfig } from '../../../config/schema/actions/custom/ptz-multi';
import type { PTZMultiActionConfig } from '../../../config/schema/actions/custom/ptz-multi';
import { createPTZAction, createPTZDigitalAction } from '../../../utils/action';
import { getPTZTarget, hasCameraTruePTZ, PTZType } from '../../../utils/ptz';
import { CardActionsAPI } from '../../types';
import { getPTZTarget, hasCameraTruePTZ, type PTZType } from '../../../utils/ptz';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
import { PTZAction } from './ptz';
import { PTZDigitalAction } from './ptz-digital';
+2 -2
View File
@@ -1,8 +1,8 @@
import { PTZActionConfig } from '../../../config/schema/actions/custom/ptz';
import type { PTZActionConfig } from '../../../config/schema/actions/custom/ptz';
import { PTZMovementType } from '../../../types';
import { getPTZTarget, ptzActionToCapabilityKey } from '../../../utils/ptz';
import { Timer } from '../../../utils/timer';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import {
setInProgressForThisTarget,
stopInProgressForThisTarget,
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class ReloadAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,7 +1,7 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { downloadURL } from '../../../utils/download';
import { generateScreenshotFilename } from '../../../utils/screenshot';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class ScreenshotAction extends AdvancedCameraCardAction<GeneralActionConfig> {
@@ -1,8 +1,8 @@
import { SetReviewActionConfig } from '../../../config/schema/actions/custom/set-review';
import type { SetReviewActionConfig } from '../../../config/schema/actions/custom/set-review';
import { toggleReviewed } from '../../../utils/media-actions';
import { ViewItemClassifier } from '../../../view/item-classifier';
import { getReviewedQueryFilterFromQuery } from '../../../view/utils/query-filter';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class SetReviewAction extends AdvancedCameraCardAction<SetReviewActionConfig> {
+5 -5
View File
@@ -1,10 +1,10 @@
import { ActionContext } from 'action';
import type { ActionContext } from 'action';
import { ActionConfig } from '../../../config/schema/actions/types';
import type { ActionConfig } from '../../../config/schema/actions/types';
import { arrayify } from '../../../utils/basic';
import { CardActionsAPI } from '../../types';
import { ActionFactory, ActionFactoryOptions } from '../factory';
import { ActionPrepareCallback } from '../types';
import type { CardActionsAPI } from '../../types';
import { ActionFactory, type ActionFactoryOptions } from '../factory';
import type { ActionPrepareCallback } from '../types';
interface ActionSetOptions {
factoryOptions?: ActionFactoryOptions;
+2 -2
View File
@@ -1,6 +1,6 @@
import { SleepActionConfig } from '../../../config/schema/actions/custom/sleep';
import type { SleepActionConfig } from '../../../config/schema/actions/custom/sleep';
import { sleep } from '../../../utils/sleep';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { timeDeltaToSeconds } from '../utils/time-delta';
import { AdvancedCameraCardAction } from './base';
@@ -1,5 +1,5 @@
import { StatusBarActionConfig } from '../../../config/schema/actions/types';
import { CardActionsAPI } from '../../types';
import type { StatusBarActionConfig } from '../../../config/schema/actions/types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class StatusBarAction extends AdvancedCameraCardAction<StatusBarActionConfig> {
@@ -1,5 +1,5 @@
import { SubstreamOffActionConfig } from '../../../config/schema/actions/custom/substream-off';
import { CardActionsAPI } from '../../types';
import type { SubstreamOffActionConfig } from '../../../config/schema/actions/custom/substream-off';
import type { CardActionsAPI } from '../../types';
import { SubstreamViewModifier } from '../../view/modifiers/substream';
import { AdvancedCameraCardAction } from './base';
@@ -1,7 +1,7 @@
import { CameraManager } from '../../../camera-manager/manager';
import { SubstreamOnActionConfig } from '../../../config/schema/actions/custom/substream-on';
import { View } from '../../../view/view';
import { CardActionsAPI } from '../../types';
import type { CameraManager } from '../../../camera-manager/manager';
import type { SubstreamOnActionConfig } from '../../../config/schema/actions/custom/substream-on';
import type { View } from '../../../view/view';
import type { CardActionsAPI } from '../../types';
import { SubstreamViewModifier } from '../../view/modifiers/substream';
import { AdvancedCameraCardAction } from './base';
@@ -1,7 +1,7 @@
import { ToggleActionConfig } from '../../../config/schema/actions/stock/toggle';
import type { ToggleActionConfig } from '../../../config/schema/actions/stock/toggle';
import { computeDomain } from '../../../ha/compute-domain';
import { STATES_OFF } from '../../../ha/const';
import { CardActionsAPI } from '../../types';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class ToggleAction extends AdvancedCameraCardAction<ToggleActionConfig> {
@@ -1,5 +1,5 @@
import { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import { CardActionsAPI } from '../../types';
import type { GeneralActionConfig } from '../../../config/schema/actions/custom/general';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class UnmuteAction extends AdvancedCameraCardAction<GeneralActionConfig> {
+2 -2
View File
@@ -1,5 +1,5 @@
import { URLActionConfig } from '../../../config/schema/actions/stock/url';
import { CardActionsAPI } from '../../types';
import type { URLActionConfig } from '../../../config/schema/actions/stock/url';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class URLAction extends AdvancedCameraCardAction<URLActionConfig> {
+2 -2
View File
@@ -1,5 +1,5 @@
import { ViewActionConfig } from '../../../config/schema/actions/custom/view';
import { CardActionsAPI } from '../../types';
import type { ViewActionConfig } from '../../../config/schema/actions/custom/view';
import type { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
export class ViewAction extends AdvancedCameraCardAction<ViewActionConfig> {
+7 -4
View File
@@ -1,8 +1,11 @@
import { ActionContext } from 'action';
import type { ActionContext } from 'action';
import { TriggerData } from '../../condition-trigger/triggers/types';
import type { TriggerData } from '../../condition-trigger/triggers/types';
import { INTERNAL_CALLBACK_ACTION } from '../../config/schema/actions/custom/internal';
import { ActionConfig, AuxillaryActionConfig } from '../../config/schema/actions/types';
import type {
ActionConfig,
AuxillaryActionConfig,
} from '../../config/schema/actions/types';
import { isAdvancedCameraCardCustomAction, isIfAction } from '../../utils/action';
import { CallAnswerAction } from './actions/call-answer';
import { CallEndAction } from './actions/call-end';
@@ -51,7 +54,7 @@ import { ToggleAction } from './actions/toggle';
import { UnmuteAction } from './actions/unmute';
import { URLAction } from './actions/url';
import { ViewAction } from './actions/view';
import { Action } from './types';
import type { Action } from './types';
export interface ActionFactoryOptions {
config?: AuxillaryActionConfig;
+3 -3
View File
@@ -1,10 +1,10 @@
import { TriggerData } from '../../condition-trigger/triggers/types.js';
import {
import type { TriggerData } from '../../condition-trigger/triggers/types.js';
import type {
ActionConfig,
AuxillaryActionConfig,
} from '../../config/schema/actions/types.js';
import { AdvancedCameraCardError } from '../../types.js';
import { CardActionsAPI } from '../types';
import type { CardActionsAPI } from '../types';
// Renders a value's templates, returning a rendered copy. Generic so it
// preserves the value's type (the one cast lives in the renderer that supplies
@@ -1,7 +1,7 @@
import { ActionContext } from 'action';
import type { ActionContext } from 'action';
import { merge } from 'lodash-es';
import { Action, TargetedActionContext } from '../types';
import type { Action, TargetedActionContext } from '../types';
export const stopInProgressForThisTarget = async (
targetID: string,
@@ -1,5 +1,5 @@
import { fireAdvancedCameraCardEvent } from '../../../utils/fire-advanced-camera-card-event';
import { ActionsExecutionRequest } from '../types';
import type { ActionsExecutionRequest } from '../types';
export const dispatchActionExecutionRequest = (
element: HTMLElement,
@@ -1,4 +1,4 @@
import { TimeDelta } from '../../../config/schema/actions/custom/sleep';
import type { TimeDelta } from '../../../config/schema/actions/custom/sleep';
export const timeDeltaToSeconds = (timeDelta: TimeDelta): number => {
return (
+4 -4
View File
@@ -1,11 +1,11 @@
import { ConditionEvaluator } from '../condition-trigger/conditions/conditions/types.js';
import type { ConditionEvaluator } from '../condition-trigger/conditions/conditions/types.js';
import { createConditionEvaluator } from '../condition-trigger/conditions/factory.js';
import { TriggersManager } from '../condition-trigger/triggers/manager.js';
import { TriggerData } from '../condition-trigger/triggers/types.js';
import { Automation, AutomationActions } from '../config/schema/automations.js';
import type { TriggerData } from '../condition-trigger/triggers/types.js';
import type { Automation, AutomationActions } from '../config/schema/automations.js';
import { localize } from '../localize/localize.js';
import { TemplateRenderer } from './templates/index.js';
import { CardAutomationsAPI, TaggedAutomation } from './types.js';
import type { CardAutomationsAPI, TaggedAutomation } from './types.js';
const MAX_NESTED_AUTOMATION_EXECUTIONS = 10;
+4 -4
View File
@@ -1,13 +1,13 @@
import { createNotificationFromText } from '../../components-lib/notification/factory';
import { ConditionStateChange } from '../../condition-trigger/conditions/types';
import type { ConditionStateChange } from '../../condition-trigger/conditions/types';
import { localize } from '../../localize/localize';
import { Timer } from '../../utils/timer';
import { getStreamCameraID } from '../../view/substream';
import { View } from '../../view/view';
import { CardCallAPI } from '../types';
import type { View } from '../../view/view';
import type { CardCallAPI } from '../types';
import { SubstreamViewModifier } from '../view/modifiers/substream';
import { Ringtone } from './ringtone';
import { CallSession } from './types';
import type { CallSession } from './types';
export class CallManager {
private _api: CardCallAPI;
+2 -2
View File
@@ -1,9 +1,9 @@
import { RingtoneConfig } from '../../config/schema/live';
import type { RingtoneConfig } from '../../config/schema/live';
import { ArpeggioTone } from './tones/arpeggio';
import { ChimeTone } from './tones/chime';
import { CustomTone } from './tones/custom';
import { MelodyTone } from './tones/melody';
import { Tone } from './tones/types';
import type { Tone } from './tones/types';
import { WestminsterTone } from './tones/westminster';
// Module-level singleton lock: only one `Ringtone` plays at a time across all
+1 -1
View File
@@ -1,4 +1,4 @@
import { BellStrikeOptions, BellTone } from './bell';
import { BellTone, type BellStrikeOptions } from './bell';
const PLUCK: BellStrikeOptions = {
sparklePeak: 0.05,
+1 -1
View File
@@ -1,5 +1,5 @@
import { Timer } from '../../../utils/timer';
import { RingtoneFinishedHandler, Tone, ToneEnvelope } from './types';
import type { RingtoneFinishedHandler, Tone, ToneEnvelope } from './types';
// Shared scaffolding for tones generated via the Web Audio API: owns the
// AudioContext lifecycle, the repeat timer, and the bell-shaped note envelope.
+1 -1
View File
@@ -1,4 +1,4 @@
import { RingtoneFinishedHandler, Tone } from './types';
import type { RingtoneFinishedHandler, Tone } from './types';
export class CustomTone implements Tone {
private _audio: HTMLAudioElement | null = null;
+1 -1
View File
@@ -1,4 +1,4 @@
import { View } from '../../view/view';
import type { View } from '../../view/view';
export interface CallSession {
// The camera that owns the call.
@@ -1,9 +1,9 @@
import { maxBy, throttle } from 'lodash-es';
import { CameraEvent } from '../camera-manager/types';
import type { CameraEvent } from '../camera-manager/types';
import { isTriggeredState } from '../ha/is-triggered-state';
import { Timer } from '../utils/timer';
import { CardCameraTriggersAPI } from './types';
import type { CardCameraTriggersAPI } from './types';
interface CameraTriggerState {
// The time of the most recent trigger event. Used to determine the most
+1 -1
View File
@@ -1,5 +1,5 @@
import { ViewItemClassifier } from '../view/item-classifier';
import { CardCameraURLAPI } from './types';
import type { CardCameraURLAPI } from './types';
export class CameraURLManager {
private _api: CardCameraURLAPI;
+7 -7
View File
@@ -1,15 +1,15 @@
import { LitElement, ReactiveControllerHost } from 'lit';
import type { LitElement, ReactiveControllerHost } from 'lit';
import { ActionEventTarget } from '../action-handler-directive';
import type { ActionEventTarget } from '../action-handler-directive';
import { isCardInPanel } from '../ha/panel';
import { LovelaceCard } from '../ha/types';
import type { LovelaceCard } from '../ha/types';
import { isBeingCasted } from '../utils/casting';
import { isAncestorInEventPath } from '../utils/event-ancestor';
import { CardMediaReviewEventTarget } from '../utils/review';
import { ViewItem } from '../view/item';
import { ActionExecutionRequestEventTarget } from './actions/utils/execution-request';
import type { CardMediaReviewEventTarget } from '../utils/review';
import type { ViewItem } from '../view/item';
import type { ActionExecutionRequestEventTarget } from './actions/utils/execution-request';
import { InitializationAspect } from './initialization-manager';
import { CardElementAPI } from './types';
import type { CardElementAPI } from './types';
export type ScrollCallback = () => void;
export type MenuToggleCallback = () => void;
+4 -4
View File
@@ -3,15 +3,15 @@ import { isEqual } from 'lodash-es';
import { copyConfig, isConfigUpgradeable } from '../../config/management.js';
import { setProfiles } from '../../config/profiles/set-profiles.js';
import {
AdvancedCameraCardConfig,
advancedCameraCardConfigSchema,
CardWideConfig,
type AdvancedCameraCardConfig,
type CardWideConfig,
} from '../../config/schema/types.js';
import { RawAdvancedCameraCardConfig } from '../../config/types.js';
import type { RawAdvancedCameraCardConfig } from '../../config/types.js';
import { localize } from '../../localize/localize.js';
import { getParseError } from '../../utils/zod/parse-errors.js';
import { InitializationAspect } from '../initialization-manager.js';
import { CardConfigAPI } from '../types.js';
import type { CardConfigAPI } from '../types.js';
import { ConfigParseError } from './error.js';
import { setAutomationsFromConfig } from './load-automations.js';
import { setRemoteControlEntityFromConfig } from './load-control-entities.js';
@@ -1,4 +1,4 @@
import { CardConfigLoaderAPI } from '../types';
import type { CardConfigLoaderAPI } from '../types';
export const setAutomationsFromConfig = (api: CardConfigLoaderAPI): void => {
api.getAutomationsManager().deleteAutomations();
@@ -1,8 +1,8 @@
import { isEqual } from 'lodash-es';
import { RemoteControlEntityPriority } from '../../config/schema/remote-control';
import type { RemoteControlEntityPriority } from '../../config/schema/remote-control';
import { createCameraAction, createInternalCallbackAction } from '../../utils/action';
import { CardActionsAPI, CardConfigLoaderAPI, TaggedAutomation } from '../types';
import type { CardActionsAPI, CardConfigLoaderAPI, TaggedAutomation } from '../types';
export const setRemoteControlEntityFromConfig = (api: CardConfigLoaderAPI) => {
const automationTag = setRemoteControlEntityFromConfig;
+1 -1
View File
@@ -1,4 +1,4 @@
import { CardConfigLoaderAPI } from '../types';
import type { CardConfigLoaderAPI } from '../types';
export const setFoldersFromConfig = (api: CardConfigLoaderAPI): void => {
api.getFoldersManager().deleteFolders();
@@ -1,7 +1,10 @@
import { PTZAction } from '../../config/schema/actions/custom/ptz';
import { KeyboardShortcuts, PTZKeyboardShortcutName } from '../../config/schema/view';
import type { PTZAction } from '../../config/schema/actions/custom/ptz';
import type {
KeyboardShortcuts,
PTZKeyboardShortcutName,
} from '../../config/schema/view';
import { createPTZMultiAction } from '../../utils/action';
import { CardConfigLoaderAPI, TaggedAutomation } from '../types';
import type { CardConfigLoaderAPI, TaggedAutomation } from '../types';
export const setKeyboardShortcutsFromConfig = (api: CardConfigLoaderAPI) => {
const automationTag = setKeyboardShortcutsFromConfig;
@@ -1,17 +1,17 @@
import { get, merge } from 'lodash-es';
import { ConditionsManager } from '../../condition-trigger/conditions/conditions-manager';
import { ConditionStateManagerReadonlyInterface } from '../../condition-trigger/conditions/types';
import type { ConditionStateManagerReadonlyInterface } from '../../condition-trigger/conditions/types';
import {
copyConfig,
deleteConfigValue,
getConfigValue,
setConfigValue,
} from '../../config/management';
import { Override } from '../../config/schema/overrides';
import type { Override } from '../../config/schema/overrides';
import {
AdvancedCameraCardConfig,
advancedCameraCardConfigSchema,
type AdvancedCameraCardConfig,
} from '../../config/schema/types';
import { localize } from '../../localize/localize';
import { AdvancedCameraCardError } from '../../types';
+9 -9
View File
@@ -1,14 +1,14 @@
import { ReactiveController } from 'lit';
import type { ReactiveController } from 'lit';
import { CameraManager } from '../camera-manager/manager';
import { ConditionStateManager } from '../condition-trigger/conditions/state-manager';
import { AdvancedCameraCardConfig } from '../config/schema/types';
import type { AdvancedCameraCardConfig } from '../config/schema/types';
import { DeviceRegistryManager } from '../ha/registry/device';
import { DeviceCache } from '../ha/registry/device/types';
import { EntityRegistryManagerLive } from '../ha/registry/entity';
import { EntityCache, EntityRegistryManager } from '../ha/registry/entity/types';
import { EntityCache, type EntityRegistryManager } from '../ha/registry/entity/types';
import { ResolvedMediaCache } from '../ha/resolved-media';
import { LovelaceCardEditor } from '../ha/types';
import type { LovelaceCardEditor } from '../ha/types';
import { ActionsManager } from './actions/actions-manager';
import { AutomationsManager } from './automations-manager';
import { CallManager } from './call/manager';
@@ -16,9 +16,9 @@ import { CameraTriggersManager } from './camera-triggers-manager';
import { CameraURLManager } from './camera-url-manager';
import {
CardElementManager,
CardHTMLElement,
MenuToggleCallback,
ScrollCallback,
type CardHTMLElement,
type MenuToggleCallback,
type ScrollCallback,
} from './card-element-manager';
import { ConfigManager } from './config/config-manager';
import { DefaultManager } from './default-manager';
@@ -30,7 +30,7 @@ import { HASSManager } from './hass/hass-manager';
import { InitializationManager } from './initialization-manager';
import { InteractionManager } from './interaction-manager';
import { createIssueManager } from './issues/factory';
import { IssueManager } from './issues/issue-manager';
import type { IssueManager } from './issues/issue-manager';
import { KeyboardStateManager } from './keyboard-state-manager';
import { LockManager } from './lock/manager';
import { MediaLoadedInfoManager } from './media-info-manager';
@@ -42,7 +42,7 @@ import { QueryStringManager } from './query-string-manager';
import { StatusBarItemManager } from './status-bar-item-manager';
import { StyleManager } from './style-manager';
import { TemplateRenderer } from './templates';
import {
import type {
CardActionsManagerAPI,
CardAutomationsAPI,
CardCameraAPI,
+2 -2
View File
@@ -1,10 +1,10 @@
import { isEqual } from 'lodash-es';
import { AdvancedCameraCardConfig } from '../config/schema/types';
import type { AdvancedCameraCardConfig } from '../config/schema/types';
import { createGeneralAction } from '../utils/action';
import { isActionAllowedBasedOnInteractionState } from '../utils/interaction-mode';
import { Timer } from '../utils/timer';
import { CardDefaultManagerAPI } from './types';
import type { CardDefaultManagerAPI } from './types';
/**
* Manages automated resetting to the default view.
@@ -1,6 +1,6 @@
import { EffectName, EffectsContainer, EffectsManagerInterface } from '../../types';
import type { EffectName, EffectsContainer, EffectsManagerInterface } from '../../types';
import { Timer } from '../../utils/timer';
import { EffectComponent, EffectModule, EffectOptions } from './types';
import type { EffectComponent, EffectModule, EffectOptions } from './types';
const effectRegistry: Record<EffectName, () => Promise<EffectModule>> = {
check: async () => {
+1 -1
View File
@@ -1,4 +1,4 @@
import { CardExpandAPI } from './types';
import type { CardExpandAPI } from './types';
export class ExpandManager {
private _expanded = false;
+16 -7
View File
@@ -1,12 +1,21 @@
import { ConditionState } from '../../condition-trigger/conditions/types';
import { FolderConfig, FolderType, folderTypeSchema } from '../../config/schema/folders';
import { HomeAssistant } from '../../ha/types';
import { Endpoint } from '../../types';
import { ViewFolder, ViewItem } from '../../view/item';
import { ViewItemCapabilities } from '../../view/types';
import type { ConditionState } from '../../condition-trigger/conditions/types';
import {
folderTypeSchema,
type FolderConfig,
type FolderType,
} from '../../config/schema/folders';
import type { HomeAssistant } from '../../ha/types';
import type { Endpoint } from '../../types';
import type { ViewFolder, ViewItem } from '../../view/item';
import type { ViewItemCapabilities } from '../../view/types';
import { sortItems } from '../view/sort';
import { HAFoldersEngine } from './ha/engine';
import { DownloadHelpers, EngineOptions, FolderQuery, FoldersEngine } from './types';
import type {
DownloadHelpers,
EngineOptions,
FolderQuery,
FoldersEngine,
} from './types';
export class FoldersExecutor {
private _ha: FoldersEngine;
+14 -14
View File
@@ -1,35 +1,35 @@
import { sub } from 'date-fns';
import { NonEmptyTuple } from 'type-fest';
import type { NonEmptyTuple } from 'type-fest';
import { ConditionState } from '../../../condition-trigger/conditions/types';
import type { ConditionState } from '../../../condition-trigger/conditions/types';
import {
FolderConfig,
folderTypeSchema,
HA_MEDIA_SOURCE_ROOT,
HAFolderConfig,
HAFolderPathComponent,
type FolderConfig,
type HAFolderConfig,
type HAFolderPathComponent,
} from '../../../config/schema/folders';
import { getViewItemsFromBrowseMediaArray } from '../../../ha/browse-media/browse-media-to-view-media';
import { BrowseMediaViewFolder } from '../../../ha/browse-media/item';
import {
BROWSE_MEDIA_CACHE_SECONDS,
BrowseMediaCache,
BrowseMediaMetadata,
RichBrowseMedia,
type BrowseMediaMetadata,
type RichBrowseMedia,
} from '../../../ha/browse-media/types';
import {
BrowseMediaStep,
BrowseMediaTarget,
BrowseMediaWalker,
type BrowseMediaStep,
type BrowseMediaTarget,
} from '../../../ha/browse-media/walker';
import { getMediaDownloadPath } from '../../../ha/download';
import { HomeAssistant } from '../../../ha/types';
import type { HomeAssistant } from '../../../ha/types';
import { QuerySource } from '../../../query-source.js';
import { Endpoint } from '../../../types';
import { ViewFolder, ViewItem } from '../../../view/item';
import type { Endpoint } from '../../../types';
import type { ViewFolder, ViewItem } from '../../../view/item';
import { ViewItemClassifier } from '../../../view/item-classifier';
import { ViewItemCapabilities } from '../../../view/types';
import {
import type { ViewItemCapabilities } from '../../../view/types';
import type {
DownloadHelpers,
EngineOptions,
FolderPathComponent,
@@ -1,15 +1,18 @@
import { sub } from 'date-fns';
import { ConditionState } from '../../../condition-trigger/conditions/types';
import {
import type { ConditionState } from '../../../condition-trigger/conditions/types';
import type {
DateMatcher,
Matcher,
StartDateMatcher,
TemplateMatcher,
TitleMatcher,
} from '../../../config/schema/folders';
import { BrowseMediaMetadata, RichBrowseMedia } from '../../../ha/browse-media/types';
import { HomeAssistant } from '../../../ha/types';
import type {
BrowseMediaMetadata,
RichBrowseMedia,
} from '../../../ha/browse-media/types';
import type { HomeAssistant } from '../../../ha/types';
import { regexpExtract } from '../../../utils/regexp-extract';
import { TemplateRenderer } from '../../templates';
import { REGEXP_GROUP_VALUE_KEY } from './types';
@@ -1,8 +1,8 @@
import type parser from 'any-date-parser';
import { parse } from 'date-fns';
import { Parser } from '../../../config/schema/folders';
import {
import type { Parser } from '../../../config/schema/folders';
import type {
BrowseMedia,
BrowseMediaMetadata,
RichBrowseMedia,
+11 -7
View File
@@ -1,16 +1,20 @@
import { cloneDeep } from 'lodash-es';
import { ConditionState } from '../../condition-trigger/conditions/types';
import { FolderConfig, FolderConfigWithoutID } from '../../config/schema/folders';
import type { ConditionState } from '../../condition-trigger/conditions/types';
import type { FolderConfig, FolderConfigWithoutID } from '../../config/schema/folders';
import { localize } from '../../localize/localize';
import { hasUnsupportedFilters } from '../../query-source.js';
import { Endpoint } from '../../types';
import type { Endpoint } from '../../types';
import { getFolderID } from '../../utils/folder';
import { ViewFolder, ViewItem } from '../../view/item';
import { ViewItemCapabilities } from '../../view/types';
import { CardFoldersAPI } from '../types';
import type { ViewFolder, ViewItem } from '../../view/item';
import type { ViewItemCapabilities } from '../../view/types';
import type { CardFoldersAPI } from '../types';
import { FoldersExecutor } from './executor';
import { EngineOptions, FolderInitializationError, FolderQuery } from './types';
import {
FolderInitializationError,
type EngineOptions,
type FolderQuery,
} from './types';
export class FoldersManager {
private _api: CardFoldersAPI;
+9 -9
View File
@@ -1,14 +1,14 @@
import { NonEmptyTuple } from 'type-fest';
import type { NonEmptyTuple } from 'type-fest';
import { ConditionState } from '../../condition-trigger/conditions/types';
import { FolderConfig, HAFolderPathComponent } from '../../config/schema/folders';
import { ResolvedMediaCache } from '../../ha/resolved-media';
import { HomeAssistant } from '../../ha/types';
import { BaseQuery, QueryFilters, QuerySource } from '../../query-source';
import { Endpoint } from '../../types';
import type { ConditionState } from '../../condition-trigger/conditions/types';
import type { FolderConfig, HAFolderPathComponent } from '../../config/schema/folders';
import type { ResolvedMediaCache } from '../../ha/resolved-media';
import type { HomeAssistant } from '../../ha/types';
import type { BaseQuery, QueryFilters, QuerySource } from '../../query-source';
import type { Endpoint } from '../../types';
import { AdvancedCameraCardError } from '../../types.js';
import { ViewFolder, ViewItem } from '../../view/item';
import { ViewItemCapabilities } from '../../view/types';
import type { ViewFolder, ViewItem } from '../../view/item';
import type { ViewItemCapabilities } from '../../view/types';
// ====
// Base
+3 -3
View File
@@ -1,9 +1,9 @@
import screenfull from 'screenfull';
import { WebkitHTMLVideoElement } from '../../types';
import { CardFullscreenAPI } from '../types';
import type { WebkitHTMLVideoElement } from '../../types';
import type { CardFullscreenAPI } from '../types';
import { ScreenfullFullScreenProvider } from './screenfull';
import { FullscreenHandler, FullscreenProvider } from './types';
import type { FullscreenHandler, FullscreenProvider } from './types';
import { WebkitFullScreenProvider } from './webkit';
export class FullscreenProviderFactory {
@@ -1,7 +1,7 @@
import { isBeingCasted } from '../../utils/casting';
import { CardFullscreenAPI } from '../types';
import type { CardFullscreenAPI } from '../types';
import { FullscreenProviderFactory } from './factory';
import { FullscreenProvider } from './types';
import type { FullscreenProvider } from './types';
export class FullscreenManager {
private _api: CardFullscreenAPI;
+2 -2
View File
@@ -1,5 +1,5 @@
import { CardFullscreenAPI } from '../types';
import { FullscreenHandler } from './types';
import type { CardFullscreenAPI } from '../types';
import type { FullscreenHandler } from './types';
export class FullscreenProviderBase {
protected _api: CardFullscreenAPI;
@@ -1,7 +1,7 @@
import screenfull from 'screenfull';
import { FullscreenProviderBase } from '../provider';
import { FullscreenProvider } from '../types';
import type { FullscreenProvider } from '../types';
export class ScreenfullFullScreenProvider
extends FullscreenProviderBase
@@ -1,8 +1,8 @@
import { ConditionStateChange } from '../../../condition-trigger/conditions/types';
import { WebkitHTMLVideoElement } from '../../../types';
import type { ConditionStateChange } from '../../../condition-trigger/conditions/types';
import type { WebkitHTMLVideoElement } from '../../../types';
import { Timer } from '../../../utils/timer';
import { FullscreenProviderBase } from '../provider';
import { FullscreenProvider } from '../types';
import type { FullscreenProvider } from '../types';
const WEBKIT_PLAY_SECONDS = 0.5;
+3 -3
View File
@@ -1,11 +1,11 @@
import { HassEvent } from 'home-assistant-js-websocket';
import type { HassEvent } from 'home-assistant-js-websocket';
import {
SubscriptionHealthInterface,
SubscriptionHealthMonitor,
type SubscriptionHealthInterface,
} from '../../ha/connection/subscription-health-monitor';
import { HASSConnectionSubscriptionManager } from '../../ha/connection/subscription-manager';
import { HASSSource } from '../../ha/source';
import type { HASSSource } from '../../ha/source';
export interface EventSubscriptionRequest {
event_type: string;
+6 -6
View File
@@ -1,12 +1,12 @@
import { isHassReady } from '../../ha/is-hass-ready';
import { HASSListener, HASSUnlistenCallback } from '../../ha/source';
import { HomeAssistant } from '../../ha/types';
import type { HASSListener, HASSUnlistenCallback } from '../../ha/source';
import type { HomeAssistant } from '../../ha/types';
import { log } from '../../utils/debug';
import { InitializationAspect } from '../initialization-manager';
import { CardHASSAPI } from '../types';
import { EventWatcher, EventWatcherSubscriptionInterface } from './event-watcher';
import { StateWatcher, StateWatcherSubscriptionInterface } from './state-watcher';
import { HASSManagerReadonlyInterface } from './types';
import type { CardHASSAPI } from '../types';
import { EventWatcher, type EventWatcherSubscriptionInterface } from './event-watcher';
import { StateWatcher, type StateWatcherSubscriptionInterface } from './state-watcher';
import type { HASSManagerReadonlyInterface } from './types';
export class HASSManager implements HASSManagerReadonlyInterface {
private _hass: HomeAssistant | null = null;
+2 -2
View File
@@ -1,6 +1,6 @@
import { getHassDifferences } from '../../ha/get-hass-differences';
import { HASSSource, HASSUnlistenCallback } from '../../ha/source';
import { HassStateDifference, HomeAssistant } from '../../ha/types';
import type { HASSSource, HASSUnlistenCallback } from '../../ha/source';
import type { HassStateDifference, HomeAssistant } from '../../ha/types';
type StateWatcherCallback = (difference: HassStateDifference) => void;
+3 -3
View File
@@ -1,6 +1,6 @@
import { HASSSource } from '../../ha/source';
import { EventWatcherSubscriptionInterface } from './event-watcher';
import { StateWatcherSubscriptionInterface } from './state-watcher';
import type { HASSSource } from '../../ha/source';
import type { EventWatcherSubscriptionInterface } from './event-watcher';
import type { StateWatcherSubscriptionInterface } from './state-watcher';
export interface HASSManagerReadonlyInterface extends HASSSource {
getStateWatcher(): StateWatcherSubscriptionInterface;
@@ -6,7 +6,7 @@ import { sideLoadHomeAssistantElements } from '../ha/side-load-ha-elements';
import { loadLanguages } from '../localize/localize';
import { errorToConsole } from '../utils/basic';
import { Initializer } from '../utils/initializer/initializer';
import { CardInitializerAPI } from './types';
import type { CardInitializerAPI } from './types';
export enum InitializationAspect {
LANGUAGES = 'languages',
+1 -1
View File
@@ -1,7 +1,7 @@
import { throttle } from 'lodash-es';
import { Timer } from '../utils/timer';
import { CardInteractionAPI } from './types';
import type { CardInteractionAPI } from './types';
export class InteractionManager {
private _timer = new Timer();
+2 -2
View File
@@ -1,5 +1,5 @@
import { SubscriptionHealthInterface } from '../../ha/connection/subscription-health-monitor';
import { CardIssueManagerAPI } from '../types';
import type { SubscriptionHealthInterface } from '../../ha/connection/subscription-health-monitor';
import type { CardIssueManagerAPI } from '../types';
import { IssueManager } from './issue-manager';
import { ConfigErrorIssue } from './issues/config-error';
import { ConfigUpgradeIssue } from './issues/config-upgrade';
+8 -3
View File
@@ -1,11 +1,16 @@
import type { IssueTriggerContext } from 'issue';
import { ConditionStateChange } from '../../condition-trigger/conditions/types';
import type { ConditionStateChange } from '../../condition-trigger/conditions/types';
import { isActionAllowedBasedOnInteractionState } from '../../utils/interaction-mode';
import { RetryTimer } from '../../utils/retry-timer';
import { CardIssueManagerAPI } from '../types';
import type { CardIssueManagerAPI } from '../types';
import { IssueStateManager } from './state-manager';
import { Issue, IssueKey, IssueReadOnlyState, IssueTriggerContextKey } from './types';
import type {
Issue,
IssueKey,
IssueReadOnlyState,
IssueTriggerContextKey,
} from './types';
// Exponential backoff schedule for 'auto' retry. The base is set above the
// per-media retry threshold (~10s) so the issue-level backoff kicks in *after*
@@ -1,4 +1,4 @@
import { Issue, IssueDescription, IssueKey } from '../types.js';
import type { Issue, IssueDescription, IssueKey } from '../types.js';
// Shared base for issues whose only state is a single triggered error. Subclasses
// define the key and how an error renders; the base handles trigger/reset and
@@ -1,6 +1,6 @@
import { createNotificationFromError } from '../../../components-lib/notification/factory.js';
import { localize } from '../../../localize/localize.js';
import { IssueDescription } from '../types.js';
import type { IssueDescription } from '../types.js';
import { AbstractErrorIssue } from './abstract-error-issue.js';
declare module 'issue' {
@@ -1,8 +1,8 @@
import { hasConfigUpgradeFailures } from '../../../config/management.js';
import { TROUBLESHOOTING_CONFIG_UPGRADE_FAILURE_URL } from '../../../const.js';
import { localize } from '../../../localize/localize.js';
import { CardIssueManagerAPI } from '../../types';
import { Issue, IssueDescription } from '../types';
import type { CardIssueManagerAPI } from '../../types';
import type { Issue, IssueDescription } from '../types';
// Raised when the configuration upgrade could not faithfully upgrade part of
// the config.
@@ -1,8 +1,8 @@
import { isConfigUpgradeable } from '../../../config/management.js';
import { TROUBLESHOOTING_CONFIG_UPGRADE_URL } from '../../../const.js';
import { localize } from '../../../localize/localize.js';
import { CardIssueManagerAPI } from '../../types';
import { Issue, IssueDescription } from '../types';
import type { CardIssueManagerAPI } from '../../types';
import type { Issue, IssueDescription } from '../types';
export class ConfigUpgradeIssue implements Issue {
public readonly key = 'config_upgrade' as const;
@@ -1,8 +1,8 @@
import { STATE_RUNNING } from 'home-assistant-js-websocket';
import { ConditionState } from '../../../condition-trigger/conditions/types.js';
import type { ConditionState } from '../../../condition-trigger/conditions/types.js';
import { localize } from '../../../localize/localize.js';
import { Issue, IssueDescription } from '../types.js';
import type { Issue, IssueDescription } from '../types.js';
// Tracks "is HA fully ready to talk to". Active in two sub-states:
// - 'lost' : the WebSocket is disconnected
@@ -1,9 +1,9 @@
import { Notification } from '../../../config/schema/actions/types';
import { SubscriptionHealthInterface } from '../../../ha/connection/subscription-health-monitor';
import { UnlistenCallback } from '../../../health';
import type { Notification } from '../../../config/schema/actions/types';
import type { SubscriptionHealthInterface } from '../../../ha/connection/subscription-health-monitor';
import type { UnlistenCallback } from '../../../health';
import { localize } from '../../../localize/localize';
import { createRetryControl } from '../retry-control';
import { Issue, IssueDescription } from '../types';
import type { Issue, IssueDescription } from '../types';
const ISSUE_ICON = 'mdi:lan-disconnect';

Some files were not shown because too many files have changed in this diff Show More