Refactor main types.ts .

This commit is contained in:
Dermot Duffy
2023-10-02 22:35:58 -07:00
parent 5ebd85e5e8
commit 9b72dd8089
77 changed files with 2268 additions and 1819 deletions
+1 -1
View File
@@ -11,7 +11,7 @@ import {
FrigateCardCustomAction,
frigateCardCustomActionSchema,
ViewDisplayMode,
} from '../types.js';
} from '../config/types.js';
/**
* Convert a generic Action to a FrigateCardCustomAction if it parses correctly.
+1 -1
View File
@@ -1,5 +1,5 @@
import { CameraManager } from '../camera-manager/manager.js';
import { CameraConfig, RawFrigateCardConfig } from '../types.js';
import { CameraConfig, RawFrigateCardConfig } from '../config/types.js';
/**
* Get a camera id.
+6 -2
View File
@@ -1,7 +1,9 @@
import {
Actions,
ActionsConfig, FrigateCardCustomAction, FRIGATE_CARD_VIEW_DEFAULT
} from '../../types.js';
ActionsConfig,
FRIGATE_CARD_VIEW_DEFAULT,
FrigateCardCustomAction
} from '../../config/types.js';
import {
convertActionToFrigateCardCustomAction,
frigateCardHandleActionConfig,
@@ -9,6 +11,8 @@ import {
} from '../action.js';
import { getStreamCameraID } from '../substream.js';
import { CardActionsManagerAPI } from './types.js';
import { getStreamCameraID } from '../substream.js';
import { CardActionsManagerAPI } from './types.js';
export class ActionsManager {
protected _api: CardActionsManagerAPI;
@@ -1,9 +1,5 @@
import { Automation, AutomationActions, Automations } from '../../config/types.js';
import { localize } from '../../localize/localize.js';
import {
Automation,
AutomationActions,
Automations,
} from '../../types.js';
import { frigateCardHandleAction } from '../action.js';
import { CardAutomationsAPI } from './types.js';
@@ -6,8 +6,8 @@ import {
frigateConditionalSchema,
OverrideConfigurationKey,
RawFrigateCardConfig,
ViewDisplayMode,
} from '../../types';
ViewDisplayMode
} from '../../config/types';
import { CardConditionAPI } from './types';
interface ConditionState {
+4 -4
View File
@@ -1,13 +1,13 @@
import isEqual from 'lodash-es/isEqual';
import { isConfigUpgradeable } from '../../config-mgmt';
import { localize } from '../../localize/localize';
import { setLowPerformanceProfile } from '../../performance.js';
import {
CardWideConfig,
FrigateCardConfig,
frigateCardConfigSchema,
RawFrigateCardConfig,
} from '../../types';
RawFrigateCardConfig
} from '../../config/types';
import { localize } from '../../localize/localize';
import { setLowPerformanceProfile } from '../../performance.js';
import { getParseErrorPaths } from '../zod.js';
import { getOverriddenConfig } from './conditions-manager';
import { InitializationAspect } from './initialization-manager';
+2 -5
View File
@@ -1,10 +1,7 @@
// TODO: executeMediaQueryForView should not need a HTMLElement host parameter see the view-manager.ts call in particular.
// TODO: Split out zod schema and add tests for config parsing (e.g. view.scan.show_status argument was missing)
import { LovelaceCardEditor } from 'custom-card-helpers';
import { ReactiveController } from 'lit';
import { CameraManager } from '../../camera-manager/manager';
import { FrigateCardConfig } from '../../types';
import { FrigateCardConfig } from '../../config/types';
import { EntityRegistryManager } from '../ha/entity-registry';
import { EntityCache } from '../ha/entity-registry/cache';
import { ResolvedMediaCache } from '../ha/resolved-media';
@@ -35,8 +32,8 @@ import { StyleManager } from './style-manager';
import { TriggersManager } from './triggers-manager';
import {
CardActionsManagerAPI,
CardAutomationsAPI,
CardAutoRefreshAPI,
CardAutomationsAPI,
CardCameraAPI,
CardCameraURLAPI,
CardConditionAPI,
+2 -1
View File
@@ -1,5 +1,6 @@
import { CameraConfig } from '../../config/types';
import { localize } from '../../localize/localize';
import { CameraConfig, ExtendedHomeAssistant } from '../../types';
import { ExtendedHomeAssistant } from '../../types';
import { hasHAConnectionStateChanged, isHassDifferent } from '../ha';
import { CardHASSAPI } from './types';
@@ -1,4 +1,4 @@
import { FrigateCardCustomAction, FrigateCardViewAction } from '../../types';
import { FrigateCardCustomAction, FrigateCardViewAction } from '../../config/types';
import { createFrigateCardCustomAction } from '../action.js';
import { CardQueryStringAPI } from './types';
import { ViewManagerSetViewParameters } from './view-manager';
+1 -1
View File
@@ -1,5 +1,5 @@
import { FrigateCardConfig } from '../../config/types';
import { setPerformanceCSSStyles } from '../../performance';
import { FrigateCardConfig } from '../../types';
import { View } from '../../view/view';
import { setOrRemoveAttribute } from '../basic';
import { CardStyleAPI } from './types';
+1 -1
View File
@@ -1,5 +1,5 @@
import { ViewContext } from 'view';
import { FrigateCardConfig, FrigateCardView, ViewDisplayMode } from '../../types';
import { FrigateCardConfig, FrigateCardView, ViewDisplayMode } from '../../config/types';
import { View } from '../../view/view';
import { getAllDependentCameras } from '../camera';
import { log } from '../debug';
+1 -1
View File
@@ -1,4 +1,4 @@
import { CardWideConfig } from '../types';
import { CardWideConfig } from '../config/types';
export const log = (cardWideConfig?: CardWideConfig | null, ...args: unknown[]) => {
if (cardWideConfig?.debug?.logging) {
+1 -1
View File
@@ -1,7 +1,7 @@
import { HomeAssistant } from 'custom-card-helpers';
import pkg from '../../package.json';
import { RawFrigateCardConfig } from '../config/types';
import { getLanguage } from '../localize/localize';
import { RawFrigateCardConfig } from '../types';
import { DeviceList, getAllDevices } from './ha/device-registry';
type FrigateVersions = Record<string, string>;
+1 -1
View File
@@ -2,7 +2,7 @@ import EmblaCarousel, { EmblaCarouselType } from 'embla-carousel';
import { WheelGesturesPlugin } from 'embla-carousel-wheel-gestures';
import { CreatePluginType, LoosePluginType } from 'embla-carousel/components/Plugins';
import isEqual from 'lodash-es/isEqual';
import { TransitionEffect } from '../../types';
import { TransitionEffect } from '../../config/types';
import { dispatchFrigateCardEvent, getChildrenFromElement } from '../basic.js';
export interface CarouselSelected {
@@ -2,7 +2,7 @@ import { EmblaCarouselType, EmblaEventType } from 'embla-carousel';
import { CreateOptionsType } from 'embla-carousel/components/Options';
import { OptionsHandlerType } from 'embla-carousel/components/OptionsHandler';
import { CreatePluginType, LoosePluginType } from 'embla-carousel/components/Plugins';
import { LazyUnloadCondition } from '../../../../types';
import { LazyUnloadCondition } from '../../../../config/types';
declare module 'embla-carousel/components/Plugins' {
interface EmblaPluginsType {
@@ -7,8 +7,8 @@ import {
AutoPauseCondition,
AutoPlayCondition,
AutoUnmuteCondition,
FrigateCardMediaPlayer,
} from '../../../../types.js';
} from '../../../../config/types.js';
import { FrigateCardMediaPlayer } from '../../../../types.js';
declare module 'embla-carousel/components/Plugins' {
interface EmblaPluginsType {
+2 -1
View File
@@ -1,7 +1,8 @@
import isEqual from 'lodash-es/isEqual';
import throttle from 'lodash-es/throttle';
import Masonry from 'masonry-layout';
import { MediaLoadedInfo, ViewDisplayConfig } from '../types';
import { ViewDisplayConfig } from '../config/types';
import { MediaLoadedInfo } from '../types';
import {
dispatchFrigateCardEvent,
getChildrenFromElement,
+1 -1
View File
@@ -1,4 +1,4 @@
import { MediaLayoutConfig } from '../types';
import { MediaLayoutConfig } from '../config/types';
/**
* Update element style from a media configuration.
+2 -1
View File
@@ -2,8 +2,9 @@ import { ViewContext } from 'view';
import { CameraManager } from '../camera-manager/manager';
import { MediaQuery } from '../camera-manager/types';
import { dispatchFrigateCardErrorEvent } from '../components/message';
import { CardWideConfig, FrigateCardView } from '../config/types';
import { MEDIA_CHUNK_SIZE_DEFAULT } from '../const';
import { CardWideConfig, ClipsOrSnapshotsOrAll, FrigateCardView } from '../types';
import { ClipsOrSnapshotsOrAll } from '../types';
import { ViewMedia } from '../view/media';
import {
EventMediaQueries,
+13 -12
View File
@@ -1,23 +1,24 @@
import { HomeAssistant } from 'custom-card-helpers';
import { StyleInfo } from 'lit/directives/style-map';
import { CameraManager } from '../camera-manager/manager';
import {
FRIGATE_CARD_VIEWS_USER_SPECIFIED,
FrigateCardConfig,
FrigateCardCustomAction,
MenuItem
} from '../config/types';
import { FRIGATE_BUTTON_MENU_ICON } from '../const';
import { localize } from '../localize/localize.js';
import {
FrigateCardConfig,
FrigateCardCustomAction,
FRIGATE_CARD_VIEWS_USER_SPECIFIED,
MediaLoadedInfo,
MenuButton,
} from '../types';
import { View } from '../view/view';
import { createFrigateCardCustomAction } from './action';
import { getAllDependentCameras } from './camera';
import { getEntityIcon, getEntityTitle } from './ha';
import { MediaPlayerManager } from './card-controller/media-player-manager';
import { MicrophoneManager } from './card-controller/microphone-manager';
import { getEntityIcon, getEntityTitle } from './ha';
import { hasSubstream } from './substream';
export interface MenuButtonControllerOptions {
currentMediaLoadedInfo?: MediaLoadedInfo | null;
showCameraUIButton?: boolean;
@@ -29,15 +30,15 @@ export interface MenuButtonControllerOptions {
export class MenuButtonController {
// Array of dynamic menu buttons to be added to menu.
protected _dynamicMenuButtons: MenuButton[] = [];
protected _dynamicMenuButtons: MenuItem[] = [];
public addDynamicMenuButton(button: MenuButton): void {
public addDynamicMenuButton(button: MenuItem): void {
if (!this._dynamicMenuButtons.includes(button)) {
this._dynamicMenuButtons.push(button);
}
}
public removeDynamicMenuButton(button: MenuButton): void {
public removeDynamicMenuButton(button: MenuItem): void {
this._dynamicMenuButtons = this._dynamicMenuButtons.filter(
(existingButton) => existingButton != button,
);
@@ -53,7 +54,7 @@ export class MenuButtonController {
cameraManager: CameraManager,
view: View,
options?: MenuButtonControllerOptions,
): MenuButton[] {
): MenuItem[] {
const visibleCameras = cameraManager.getStore().getVisibleCameras();
const selectedCameraID = view.camera;
const selectedCameraConfig = cameraManager
@@ -68,7 +69,7 @@ export class MenuButtonController {
? cameraManager?.getMediaCapabilities(selectedMedia)
: null;
const buttons: MenuButton[] = [];
const buttons: MenuItem[] = [];
buttons.push({
// Use a magic icon value that the menu will use to render the custom
// Frigate icon.
@@ -451,7 +452,7 @@ export class MenuButtonController {
protected _getStyleFromActions(
config: FrigateCardConfig,
view: View,
button: MenuButton,
button: MenuItem,
options?: MenuButtonControllerOptions,
): StyleInfo {
for (const actionSet of [
+1 -1
View File
@@ -4,7 +4,7 @@ import {
dispatchFrigateCardErrorEvent,
renderProgressIndicator,
} from '../components/message';
import { CardWideConfig } from '../types';
import { CardWideConfig } from '../config/types';
import { errorToConsole } from './basic';
/**