import { getLovelace, HomeAssistant, LovelaceCardEditor } from 'custom-card-helpers'; import { CSSResultGroup, html, LitElement, PropertyValues, TemplateResult, unsafeCSS, } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { classMap } from 'lit/directives/class-map.js'; import { createRef, ref, Ref } from 'lit/directives/ref.js'; import { StyleInfo, styleMap } from 'lit/directives/style-map.js'; import cloneDeep from 'lodash-es/cloneDeep'; import isEqual from 'lodash-es/isEqual'; import merge from 'lodash-es/merge'; import throttle from 'lodash-es/throttle'; import screenfull from 'screenfull'; import { ViewContext } from 'view'; import 'web-dialog'; import { z } from 'zod'; import pkg from '../package.json'; import { actionHandler } from './action-handler-directive.js'; import { AutomationsController } from './automations'; import { CameraManagerEngineFactory } from './camera-manager/engine-factory.js'; import { CameraManager } from './camera-manager/manager.js'; import './components/elements.js'; import { FrigateCardElements } from './components/elements.js'; import './components/menu.js'; import { FRIGATE_BUTTON_MENU_ICON, FrigateCardMenu } from './components/menu.js'; import './components/message.js'; import { renderMessage, renderProgressIndicator } from './components/message.js'; import './components/thumbnail-carousel.js'; import './components/views.js'; import { FrigateCardViews } from './components/views.js'; import { ConditionController, ConditionEvaluateRequestEvent, getOverriddenConfig, } from './conditions.js'; import { isConfigUpgradeable } from './config-mgmt.js'; import { MEDIA_PLAYER_SUPPORT_BROWSE_MEDIA, REPO_URL } from './const.js'; import { getLanguage, loadLanguages, localize } from './localize/localize.js'; import { setLowPerformanceProfile, setPerformanceCSSStyles } from './performance.js'; import cardStyle from './scss/card.scss'; import { Actions, ActionsConfig, CameraConfig, CardWideConfig, ExtendedHomeAssistant, FRIGATE_CARD_VIEW_DEFAULT, FRIGATE_CARD_VIEWS_USER_SPECIFIED, FrigateCardConfig, frigateCardConfigSchema, FrigateCardCustomAction, FrigateCardError, FrigateCardView, MediaLoadedInfo, MenuButton, Message, MESSAGE_TYPE_PRIORITIES, RawFrigateCardConfig, } from './types.js'; import { convertActionToFrigateCardCustomAction, createFrigateCardCustomAction, frigateCardHandleActionConfig, frigateCardHasAction, getActionConfigGivenAction, } from './utils/action.js'; import { errorToConsole } from './utils/basic.js'; import { getAllDependentCameras } from './utils/camera.js'; import { log } from './utils/debug.js'; import { downloadMedia } from './utils/download.js'; import { getEntityIcon, getEntityTitle, getHassDifferences, isCardInPanel, isHassDifferent, isTriggeredState, sideLoadHomeAssistantElements, } from './utils/ha'; import { DeviceList, getAllDevices } from './utils/ha/device-registry.js'; import { EntityCache } from './utils/ha/entity-registry/cache.js'; import { EntityRegistryManager } from './utils/ha/entity-registry/index.js'; import { Entity } from './utils/ha/entity-registry/types.js'; import { ResolvedMediaCache } from './utils/ha/resolved-media.js'; import { supportsFeature } from './utils/ha/update.js'; import { FrigateCardInitializer } from './utils/initializer.js'; import { isValidMediaLoadedInfo } from './utils/media-info.js'; import { MicrophoneController } from './utils/microphone'; import { getActionsFromQueryString } from './utils/querystring.js'; import { createViewWithNextStream, createViewWithoutSubstream, createViewWithSelectedSubstream, hasSubstream, } from './utils/substream'; import { View } from './view/view.js'; /** A note on media callbacks: * * Media elements (e.g.