feat: Rename the card to advanced-camera-card (#1873)

Whilst the Frigate support in this card is the best among camera
engines, the name incorrectly suggests that Frigate is a requirement.
Instead, to broaden the appeal, change to more camera agnostic name.
This does not suggest any change in priority, role or support for
Frigate.

This change is likely to be bug prone, due to the size of the rename --
the code contains 1500+ references to "Frigate" most of which make sense
to rename, some which do not, all of which needed human assessment.

- Closes #1298


BREAKING CHANGE: References to `frigate-card` in all kinds of
configuration need to be updated to `advanced-camera-card`. An automated
config upgrade should take care of the majority of usecases (click `Edit
-> Upgrade -> Save`), though may not be perfect.
This commit is contained in:
Dermot Duffy
2025-02-06 19:32:32 -08:00
committed by GitHub
parent 43947b49dc
commit cc376a8be1
305 changed files with 4270 additions and 3686 deletions
@@ -67,9 +67,9 @@ export class ActionsManager {
if (
config &&
interaction &&
// Don't call frigateCardHandleActionConfig() unless there is explicitly an
// action defined (as it uses a default that is unhelpful for views that
// have default tap/click actions).
// Don't execute unless there is explicitly an action defined (as it uses
// a default that is unhelpful for views that have default tap/click
// actions).
actionConfig
) {
this.executeActions(actionConfig, config);
@@ -91,8 +91,8 @@ export class ActionsManager {
};
/**
* This method handles actions requested by components of the Frigate card
* itself (e.g. menu, PTZ controller).
* This method handles actions requested by components of the Advanced Camera
* Card itself (e.g. menu, PTZ controller).
*/
public handleActionExecutionRequestEvent = async (
ev: CustomEvent<ActionExecutionRequest>,
+3 -3
View File
@@ -1,5 +1,5 @@
import { ActionContext } from 'action';
import { FrigateCardCustomAction } from '../../../config/types';
import { AdvancedCameraCardCustomAction } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { Action, AuxillaryActionConfig } from '../types';
@@ -24,6 +24,6 @@ export class BaseAction<T> implements Action {
}
}
export class FrigateCardAction<
T extends FrigateCardCustomAction,
export class AdvancedCameraCardAction<
T extends AdvancedCameraCardCustomAction,
> extends BaseAction<T> {}
@@ -1,8 +1,8 @@
import { CameraSelectActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class CameraSelectAction extends FrigateCardAction<CameraSelectActionConfig> {
export class CameraSelectAction extends AdvancedCameraCardAction<CameraSelectActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
const selectCameraID =
this._action.camera ??
@@ -1,8 +1,8 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class CameraUIAction extends FrigateCardAction<GeneralActionConfig> {
export class CameraUIAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
api.getCameraURLManager().openURL();
}
@@ -1,8 +1,8 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class DefaultAction extends FrigateCardAction<GeneralActionConfig> {
export class DefaultAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
await api.getViewManager().setViewDefaultWithNewQuery();
}
@@ -1,8 +1,8 @@
import { DisplayModeActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class DisplayModeSelectAction extends FrigateCardAction<DisplayModeActionConfig> {
export class DisplayModeSelectAction extends AdvancedCameraCardAction<DisplayModeActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
await api.getViewManager().setViewByParametersWithNewQuery({
params: {
@@ -1,8 +1,8 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class DownloadAction extends FrigateCardAction<GeneralActionConfig> {
export class DownloadAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
await api.getDownloadManager().downloadViewerMedia();
}
@@ -1,8 +1,8 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class ExpandAction extends FrigateCardAction<GeneralActionConfig> {
export class ExpandAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
api.getExpandManager().toggleExpanded();
}
@@ -1,8 +1,8 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class FullscreenAction extends FrigateCardAction<GeneralActionConfig> {
export class FullscreenAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
api.getFullscreenManager().toggleFullscreen();
}
@@ -3,7 +3,7 @@ import { CardActionsAPI } from '../../types';
import { BaseAction } from './base';
/**
* Handles generic HA (non-Frigate) actions (e.g. 'more-info')
* Handles generic HA actions (e.g. 'more-info')
*/
export class GenericAction extends BaseAction<ActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
+2 -2
View File
@@ -1,8 +1,8 @@
import { LogActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class LogAction extends FrigateCardAction<LogActionConfig> {
export class LogAction extends AdvancedCameraCardAction<LogActionConfig> {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public async execute(_api: CardActionsAPI): Promise<void> {
console[this._action.level](this._action.message);
@@ -1,9 +1,9 @@
import { MediaPlayerActionConfig } from '../../../config/types';
import { getStreamCameraID } from '../../../utils/substream';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class MediaPlayerAction extends FrigateCardAction<MediaPlayerActionConfig> {
export class MediaPlayerAction extends AdvancedCameraCardAction<MediaPlayerActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
const mediaPlayer = this._action.media_player;
const mediaPlayerController = api.getMediaPlayerManager();
@@ -1,8 +1,8 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class MenuToggleAction extends FrigateCardAction<GeneralActionConfig> {
export class MenuToggleAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
api.getCardElementManager().toggleMenu();
}
@@ -1,8 +1,8 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class MicrophoneConnectAction extends FrigateCardAction<GeneralActionConfig> {
export class MicrophoneConnectAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
await api.getMicrophoneManager().connect();
}
@@ -1,8 +1,8 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class MicrophoneDisconnectAction extends FrigateCardAction<GeneralActionConfig> {
export class MicrophoneDisconnectAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
api.getMicrophoneManager().disconnect();
}
@@ -1,8 +1,8 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class MicrophoneMuteAction extends FrigateCardAction<GeneralActionConfig> {
export class MicrophoneMuteAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
api.getMicrophoneManager().mute();
}
@@ -1,8 +1,8 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class MicrophoneUnmuteAction extends FrigateCardAction<GeneralActionConfig> {
export class MicrophoneUnmuteAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
await api.getMicrophoneManager().unmute();
}
+2 -2
View File
@@ -1,8 +1,8 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class MuteAction extends FrigateCardAction<GeneralActionConfig> {
export class MuteAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
await api.getMediaLoadedInfoManager().get()?.player?.mute();
}
+2 -2
View File
@@ -1,8 +1,8 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class PauseAction extends FrigateCardAction<GeneralActionConfig> {
export class PauseAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
await api.getMediaLoadedInfoManager().get()?.player?.pause();
}
+2 -2
View File
@@ -1,8 +1,8 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class PlayAction extends FrigateCardAction<GeneralActionConfig> {
export class PlayAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
await api.getMediaLoadedInfoManager().get()?.player?.play();
}
@@ -1,8 +1,8 @@
import { PTZControlsActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class PTZControlsAction extends FrigateCardAction<PTZControlsActionConfig> {
export class PTZControlsAction extends AdvancedCameraCardAction<PTZControlsActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
api.getViewManager().setViewWithMergedContext({
ptzControls: { enabled: this._action.enabled },
@@ -10,12 +10,12 @@ import { PTZDigitialActionConfig, ZOOM_MAX, ZOOM_MIN } from '../../../config/typ
import { getPTZTarget } from '../../../utils/ptz';
import { Timer } from '../../../utils/timer';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { TargetedActionContext } from '../types';
import {
setInProgressForThisTarget,
stopInProgressForThisTarget,
} from '../utils/action-state';
import { AdvancedCameraCardAction } from './base';
const STEP_DELAY_SECONDS = 0.1;
const STEP_ZOOM = 0.1;
@@ -27,7 +27,7 @@ declare module 'action' {
}
}
export class PTZDigitalAction extends FrigateCardAction<PTZDigitialActionConfig> {
export class PTZDigitalAction extends AdvancedCameraCardAction<PTZDigitialActionConfig> {
protected _timer = new Timer();
protected async _stepChange(api: CardActionsAPI, targetID: string): Promise<void> {
@@ -2,11 +2,11 @@ import { PTZMultiActionConfig } from '../../../config/types';
import { createPTZAction, createPTZDigitalAction } from '../../../utils/action';
import { PTZType, getPTZTarget, hasCameraTruePTZ } from '../../../utils/ptz';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
import { PTZAction } from './ptz';
import { PTZDigitalAction } from './ptz-digital';
export class PTZMultiAction extends FrigateCardAction<PTZMultiActionConfig> {
export class PTZMultiAction extends AdvancedCameraCardAction<PTZMultiActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
const view = api.getViewManager().getView();
let targetID: string | null = null;
+2 -2
View File
@@ -6,7 +6,7 @@ import {
setInProgressForThisTarget,
stopInProgressForThisTarget,
} from '../utils/action-state';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
interface PTZContext {
[cameraID: string]: {
@@ -20,7 +20,7 @@ declare module 'action' {
}
}
export class PTZAction extends FrigateCardAction<PTZActionConfig> {
export class PTZAction extends AdvancedCameraCardAction<PTZActionConfig> {
protected _timer = new Timer();
public async stop(): Promise<void> {
@@ -1,8 +1,8 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class ScreenshotAction extends FrigateCardAction<GeneralActionConfig> {
export class ScreenshotAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
await api.getDownloadManager().downloadScreenshot();
}
+2 -2
View File
@@ -2,9 +2,9 @@ import { SleepActionConfig } from '../../../config/types';
import { sleep } from '../../../utils/basic';
import { CardActionsAPI } from '../../types';
import { timeDeltaToSeconds } from '../utils/time-delta';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class SleepAction extends FrigateCardAction<SleepActionConfig> {
export class SleepAction extends AdvancedCameraCardAction<SleepActionConfig> {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public async execute(_api: CardActionsAPI): Promise<void> {
await sleep(timeDeltaToSeconds(this._action.duration));
@@ -1,8 +1,8 @@
import { StatusBarActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class StatusBarAction extends FrigateCardAction<StatusBarActionConfig> {
export class StatusBarAction extends AdvancedCameraCardAction<StatusBarActionConfig> {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public async execute(api: CardActionsAPI): Promise<void> {
switch (this._action.status_bar_action) {
@@ -1,9 +1,9 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { SubstreamOffViewModifier } from '../../view/modifiers/substream-off';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class SubstreamOffAction extends FrigateCardAction<GeneralActionConfig> {
export class SubstreamOffAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
api.getViewManager().setViewByParameters({
modifiers: [new SubstreamOffViewModifier()],
@@ -1,9 +1,9 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { SubstreamOnViewModifier } from '../../view/modifiers/substream-on';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class SubstreamOnAction extends FrigateCardAction<GeneralActionConfig> {
export class SubstreamOnAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
api.getViewManager().setViewByParameters({
modifiers: [new SubstreamOnViewModifier(api)],
@@ -1,9 +1,9 @@
import { SubstreamSelectActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { SubstreamSelectViewModifier } from '../../view/modifiers/substream-select';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class SubstreamSelectAction extends FrigateCardAction<SubstreamSelectActionConfig> {
export class SubstreamSelectAction extends AdvancedCameraCardAction<SubstreamSelectActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
api.getViewManager().setViewByParameters({
modifiers: [new SubstreamSelectViewModifier(this._action.camera)],
@@ -1,8 +1,8 @@
import { GeneralActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class UnmuteAction extends FrigateCardAction<GeneralActionConfig> {
export class UnmuteAction extends AdvancedCameraCardAction<GeneralActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
await api.getMediaLoadedInfoManager().get()?.player?.unmute();
}
+3 -3
View File
@@ -1,12 +1,12 @@
import { ViewActionConfig } from '../../../config/types';
import { CardActionsAPI } from '../../types';
import { FrigateCardAction } from './base';
import { AdvancedCameraCardAction } from './base';
export class ViewAction extends FrigateCardAction<ViewActionConfig> {
export class ViewAction extends AdvancedCameraCardAction<ViewActionConfig> {
public async execute(api: CardActionsAPI): Promise<void> {
await api.getViewManager().setViewByParametersWithNewQuery({
params: {
view: this._action.frigate_card_action,
view: this._action.advanced_camera_card_action,
},
});
}
+35 -35
View File
@@ -43,8 +43,8 @@ export class ActionFactory {
cardID?: string;
},
): Action | null {
const frigateCardAction = convertActionToCardCustomAction(action);
if (action.action !== 'fire-dom-event' || !frigateCardAction) {
const cardCustomAction = convertActionToCardCustomAction(action);
if (action.action !== 'fire-dom-event' || !cardCustomAction) {
// * There is a slight typing (but not functional) difference between
// ActionType in this card and ActionConfig in `custom-card-helpers`. See
// `ExtendedConfirmationRestrictionConfig` in `types.ts` for the source and
@@ -54,15 +54,15 @@ export class ActionFactory {
if (
// Command not intended for this card (e.g. query string command).
frigateCardAction.card_id &&
frigateCardAction.card_id !== options?.cardID
cardCustomAction.card_id &&
cardCustomAction.card_id !== options?.cardID
) {
return null;
}
switch (frigateCardAction.frigate_card_action) {
switch (cardCustomAction.advanced_camera_card_action) {
case 'default':
return new DefaultAction(context, frigateCardAction, options?.config);
return new DefaultAction(context, cardCustomAction, options?.config);
case 'clip':
case 'clips':
case 'image':
@@ -73,70 +73,70 @@ export class ActionFactory {
case 'snapshots':
case 'timeline':
case 'diagnostics':
return new ViewAction(context, frigateCardAction, options?.config);
return new ViewAction(context, cardCustomAction, options?.config);
case 'sleep':
return new SleepAction(context, frigateCardAction, options?.config);
return new SleepAction(context, cardCustomAction, options?.config);
case 'download':
return new DownloadAction(context, frigateCardAction, options?.config);
return new DownloadAction(context, cardCustomAction, options?.config);
case 'camera_ui':
return new CameraUIAction(context, frigateCardAction, options?.config);
return new CameraUIAction(context, cardCustomAction, options?.config);
case 'expand':
return new ExpandAction(context, frigateCardAction, options?.config);
return new ExpandAction(context, cardCustomAction, options?.config);
case 'fullscreen':
return new FullscreenAction(context, frigateCardAction, options?.config);
return new FullscreenAction(context, cardCustomAction, options?.config);
case 'menu_toggle':
return new MenuToggleAction(context, frigateCardAction, options?.config);
return new MenuToggleAction(context, cardCustomAction, options?.config);
case 'camera_select':
return new CameraSelectAction(context, frigateCardAction, options?.config);
return new CameraSelectAction(context, cardCustomAction, options?.config);
case 'live_substream_select':
return new SubstreamSelectAction(context, frigateCardAction, options?.config);
return new SubstreamSelectAction(context, cardCustomAction, options?.config);
case 'live_substream_off':
return new SubstreamOffAction(context, frigateCardAction, options?.config);
return new SubstreamOffAction(context, cardCustomAction, options?.config);
case 'live_substream_on':
return new SubstreamOnAction(context, frigateCardAction, options?.config);
return new SubstreamOnAction(context, cardCustomAction, options?.config);
case 'media_player':
return new MediaPlayerAction(context, frigateCardAction, options?.config);
return new MediaPlayerAction(context, cardCustomAction, options?.config);
case 'microphone_connect':
return new MicrophoneConnectAction(context, frigateCardAction, options?.config);
return new MicrophoneConnectAction(context, cardCustomAction, options?.config);
case 'microphone_disconnect':
return new MicrophoneDisconnectAction(
context,
frigateCardAction,
cardCustomAction,
options?.config,
);
case 'microphone_mute':
return new MicrophoneMuteAction(context, frigateCardAction, options?.config);
return new MicrophoneMuteAction(context, cardCustomAction, options?.config);
case 'microphone_unmute':
return new MicrophoneUnmuteAction(context, frigateCardAction, options?.config);
return new MicrophoneUnmuteAction(context, cardCustomAction, options?.config);
case 'mute':
return new MuteAction(context, frigateCardAction, options?.config);
return new MuteAction(context, cardCustomAction, options?.config);
case 'unmute':
return new UnmuteAction(context, frigateCardAction, options?.config);
return new UnmuteAction(context, cardCustomAction, options?.config);
case 'play':
return new PlayAction(context, frigateCardAction, options?.config);
return new PlayAction(context, cardCustomAction, options?.config);
case 'pause':
return new PauseAction(context, frigateCardAction, options?.config);
return new PauseAction(context, cardCustomAction, options?.config);
case 'screenshot':
return new ScreenshotAction(context, frigateCardAction, options?.config);
return new ScreenshotAction(context, cardCustomAction, options?.config);
case 'display_mode_select':
return new DisplayModeSelectAction(context, frigateCardAction, options?.config);
return new DisplayModeSelectAction(context, cardCustomAction, options?.config);
case 'ptz':
return new PTZAction(context, frigateCardAction, options?.config);
return new PTZAction(context, cardCustomAction, options?.config);
case 'ptz_digital':
return new PTZDigitalAction(context, frigateCardAction, options?.config);
return new PTZDigitalAction(context, cardCustomAction, options?.config);
case 'ptz_multi':
return new PTZMultiAction(context, frigateCardAction, options?.config);
return new PTZMultiAction(context, cardCustomAction, options?.config);
case 'ptz_controls':
return new PTZControlsAction(context, frigateCardAction, options?.config);
return new PTZControlsAction(context, cardCustomAction, options?.config);
case 'log':
return new LogAction(context, frigateCardAction, options?.config);
return new LogAction(context, cardCustomAction, options?.config);
case 'status_bar':
return new StatusBarAction(context, frigateCardAction, options?.config);
return new StatusBarAction(context, cardCustomAction, options?.config);
}
/* istanbul ignore next: this path cannot be reached -- @preserve */
console.warn(
`Frigate card received unknown card action: ${frigateCardAction['frigate_card_action']}`,
`Advanced Camera Card received unknown card action: ${cardCustomAction['advanced_camera_card_action']}`,
);
/* istanbul ignore next: this path cannot be reached -- @preserve */
return null;
@@ -1,16 +1,16 @@
import { dispatchFrigateCardEvent } from '../../../utils/basic';
import { dispatchAdvancedCameraCardEvent } from '../../../utils/basic';
import { ActionExecutionRequest } from '../types';
export const dispatchActionExecutionRequest = (
element: HTMLElement,
request: ActionExecutionRequest,
) => {
dispatchFrigateCardEvent(element, 'action:execution-request', request);
dispatchAdvancedCameraCardEvent(element, 'action:execution-request', request);
};
export interface ActionExecutionRequestEventTarget extends EventTarget {
addEventListener(
event: 'frigate-card:action:execution-request',
event: 'advanced-camera-card:action:execution-request',
listener: (
this: ActionExecutionRequestEventTarget,
ev: CustomEvent<ActionExecutionRequest>,
@@ -23,7 +23,7 @@ export interface ActionExecutionRequestEventTarget extends EventTarget {
options?: AddEventListenerOptions | boolean,
): void;
removeEventListener(
event: 'frigate-card:action:execution-request',
event: 'advanced-camera-card:action:execution-request',
listener: (
this: ActionExecutionRequestEventTarget,
ev: CustomEvent<ActionExecutionRequest>,