chore: Enforce import order via @ianvs/prettier-plugin-sort-imports (#2542)

This commit is contained in:
Dermot Duffy
2026-06-30 17:45:13 -07:00
committed by dermotduffy
parent 95f35bd326
commit a96dc2e863
668 changed files with 1035 additions and 101 deletions
+4 -3
View File
@@ -1,9 +1,10 @@
import { defineConfig } from 'eslint/config';
import tsParser from '@typescript-eslint/parser';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import js from '@eslint/js';
import { FlatCompat } from '@eslint/eslintrc';
import js from '@eslint/js';
import tsParser from '@typescript-eslint/parser';
import { defineConfig } from 'eslint/config';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
+1
View File
@@ -56,6 +56,7 @@
"@babel/core": "^7.24.7",
"@babel/plugin-proposal-decorators": "^7.24.7",
"@babel/plugin-transform-class-properties": "^7.24.7",
"@ianvs/prettier-plugin-sort-imports": "^4.7.1",
"@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-commonjs": "^26.0.1",
"@rollup/plugin-image": "^3.0.3",
+16
View File
@@ -11,6 +11,22 @@ const config = {
printWidth: 89,
tabWidth: 2,
embeddedLanguageFormatting: 'auto',
// Sort imports as part of formatting so editor-on-save and CI agree. Three groups
// separated by a blank line: node built-ins, then non-relative (third-party), then
// relative. Empty strings insert the blank line between groups; sort is
// case-insensitive. Side-effect imports are left in place as sort barriers to
// preserve their evaluation order. Setting the TypeScript version lets same-module
// type and value imports combine into a single statement with an inline `type`.
plugins: ['@ianvs/prettier-plugin-sort-imports'],
importOrder: ['<BUILTIN_MODULES>', '', '<THIRD_PARTY_MODULES>', '', '^[.]'],
importOrderTypeScriptVersion: '5.8.3',
// The codebase compiles with tsconfig `experimentalDecorators` (Lit's
// `@customElement`/`@property`/etc.), so babel must parse the legacy decorator
// proposal; without this it throws on decorated classes and silently skips sorting
// those files.
importOrderParserPlugins: ['typescript', 'decorators-legacy'],
};
export default config;
+2 -1
View File
@@ -2,9 +2,10 @@ import { noChange } from 'lit';
import {
AttributePart,
Directive,
DirectiveParameters,
directive,
DirectiveParameters,
} from 'lit/directive.js';
import { fireHASSEvent } from './ha/fire-hass-event.js';
import { ActionHandlerDetail, ActionHandlerOptions } from './ha/types.js';
import { stopEventFromActivatingCardWideActions } from './utils/action.js';
+1 -1
View File
@@ -1,5 +1,5 @@
import { CacheInterface } from './types';
import { EqualityCache } from './equality-cache';
import { CacheInterface } from './types';
interface ExpiringValue<Value> {
value: Value;
+1
View File
@@ -1,4 +1,5 @@
import QuickLRU from 'quick-lru';
import { CacheBase } from './base';
export class LRUCache<Key, Value> extends CacheBase<Key, Value> {
+1
View File
@@ -1,4 +1,5 @@
import { orderBy, sortedUniqBy } from 'lodash-es';
import { DateRange, MemoryRangeSet } from './range';
import { RecordingSegment } from './types';
+1
View File
@@ -1,4 +1,5 @@
import { uniq } from 'lodash-es';
import { ActionsExecutor } from '../card-controller/actions/types';
import { EventSubscriptionRequest } from '../card-controller/hass/event-watcher';
import { HASSManagerReadonlyInterface } from '../card-controller/hass/types';
+1
View File
@@ -1,4 +1,5 @@
import { format } from 'date-fns';
import { ActionsExecutor } from '../../card-controller/actions/types';
import { PTZAction, PTZActionPhase } from '../../config/schema/actions/custom/ptz';
import { CameraConfig } from '../../config/schema/cameras';
+5 -4
View File
@@ -1,11 +1,12 @@
import { add, endOfHour, fromUnixTime, startOfHour } from 'date-fns';
import { isEqual, orderBy, throttle, uniqWith } from 'lodash-es';
import { HASSManagerReadonlyInterface } from '../../card-controller/hass/types';
import { CameraConfig } from '../../config/schema/cameras';
import { getEntityTitle } from '../../ha/get-entity-title';
import { EntityRegistryManager } from '../../ha/registry/entity/types';
import { HomeAssistant } from '../../ha/types';
import { QuerySource, hasUnsupportedFilters } from '../../query-source.js';
import { hasUnsupportedFilters, QuerySource } from '../../query-source.js';
import { Endpoint } from '../../types';
import {
allPromises,
@@ -60,13 +61,13 @@ import { FrigateCamera, isBirdseye } from './camera';
import { FrigateViewMediaFactory } from './media';
import { FrigateViewMediaClassifier } from './media-classifier';
import {
NativeFrigateEventQuery,
NativeFrigateRecordingSegmentsQuery,
getEventSummary,
getEvents,
getEventSummary,
getRecordingSegments,
getRecordingsSummary,
getReviews,
NativeFrigateEventQuery,
NativeFrigateRecordingSegmentsQuery,
retainEvent,
setReviewsReviewed,
} from './requests';
+1
View File
@@ -1,5 +1,6 @@
import { fromUnixTime } from 'date-fns';
import { isEqual } from 'lodash-es';
import { CameraConfig } from '../../config/schema/cameras';
import { Severity } from '../../severity';
import {
+1
View File
@@ -1,4 +1,5 @@
import { z } from 'zod';
import { dayToDate } from '../../utils/basic';
import {
Engine,
+2 -1
View File
@@ -1,10 +1,11 @@
import { z } from 'zod';
import { HASSConnectionSubscriptionManager } from '../../ha/connection/subscription-manager';
import { HASSSource } from '../../ha/source';
import {
FrigateEventChange,
FrigateReviewChange,
frigateEventChangeSchema,
FrigateReviewChange,
frigateReviewChangeSchema,
} from './types';
+1
View File
@@ -1,6 +1,7 @@
import { add } from 'date-fns';
import { cloneDeep, omit, sum } from 'lodash-es';
import PQueue from 'p-queue';
import { EqualityMap } from '../cache/equality-map.js';
import { CardCameraAPI } from '../card-controller/types.js';
import { sortItems } from '../card-controller/view/sort.js';
@@ -1,5 +1,6 @@
import { add, endOfDay, parse, startOfDay } from 'date-fns';
import { orderBy } from 'lodash-es';
import { CameraConfig } from '../../config/schema/cameras';
import { getViewMediaFromBrowseMediaArray } from '../../ha/browse-media/browse-media-to-view-media';
import {
@@ -1,5 +1,6 @@
import { add, endOfDay, parse, startOfDay } from 'date-fns';
import { orderBy } from 'lodash-es';
import { HASSManagerReadonlyInterface } from '../../card-controller/hass/types';
import { CameraConfig } from '../../config/schema/cameras';
import { getViewMediaFromBrowseMediaArray } from '../../ha/browse-media/browse-media-to-view-media';
@@ -1,4 +1,5 @@
import { endOfDay, endOfHour, endOfMinute, startOfDay, startOfHour } from 'date-fns';
import { DateRange } from '../range';
import { capEndDate } from './cap-end-date';
@@ -1,5 +1,6 @@
import { ActionContext } from 'action';
import { z } from 'zod';
import { TriggerData } from '../../condition-trigger/triggers/types.js';
import {
ActionConfig,
@@ -1,4 +1,5 @@
import { ActionContext } from 'action';
import {
ActionConfig,
AuxillaryActionConfig,
@@ -1,4 +1,5 @@
import { ActionContext } from 'action';
import { createConditionEvaluator } from '../../../condition-trigger/conditions/factory';
import { TriggerData } from '../../../condition-trigger/triggers/types';
import {
@@ -1,4 +1,5 @@
import { clamp } from 'lodash-es';
import {
PartialZoomSettings,
ZOOM_DEFAULT_PAN_X,
@@ -1,6 +1,6 @@
import { PTZMultiActionConfig } from '../../../config/schema/actions/custom/ptz-multi';
import { createPTZAction, createPTZDigitalAction } from '../../../utils/action';
import { PTZType, getPTZTarget, hasCameraTruePTZ } from '../../../utils/ptz';
import { getPTZTarget, hasCameraTruePTZ, PTZType } from '../../../utils/ptz';
import { CardActionsAPI } from '../../types';
import { AdvancedCameraCardAction } from './base';
import { PTZAction } from './ptz';
@@ -1,4 +1,5 @@
import { ActionContext } from 'action';
import { ActionConfig } from '../../../config/schema/actions/types';
import { arrayify } from '../../../utils/basic';
import { CardActionsAPI } from '../../types';
+1
View File
@@ -1,4 +1,5 @@
import { ActionContext } from 'action';
import { TriggerData } from '../../condition-trigger/triggers/types';
import { INTERNAL_CALLBACK_ACTION } from '../../config/schema/actions/custom/internal';
import { ActionConfig, AuxillaryActionConfig } from '../../config/schema/actions/types';
@@ -1,6 +1,7 @@
import { merge } from 'lodash-es';
import { Action, TargetedActionContext } from '../types';
import { ActionContext } from 'action';
import { merge } from 'lodash-es';
import { Action, TargetedActionContext } from '../types';
export const stopInProgressForThisTarget = async (
targetID: string,
@@ -1,4 +1,5 @@
import { maxBy, throttle } from 'lodash-es';
import { CameraEvent } from '../camera-manager/types';
import { isTriggeredState } from '../ha/is-triggered-state';
import { Timer } from '../utils/timer';
@@ -1,4 +1,5 @@
import { LitElement, ReactiveControllerHost } from 'lit';
import { ActionEventTarget } from '../action-handler-directive';
import { isCardInPanel } from '../ha/panel';
import { LovelaceCard } from '../ha/types';
+3 -2
View File
@@ -1,17 +1,18 @@
import { isEqual } from 'lodash-es';
import { ConfigParseError } from './error.js';
import { copyConfig, isConfigUpgradeable } from '../../config/management.js';
import { setProfiles } from '../../config/profiles/set-profiles.js';
import {
AdvancedCameraCardConfig,
CardWideConfig,
advancedCameraCardConfigSchema,
CardWideConfig,
} from '../../config/schema/types.js';
import { 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 { ConfigParseError } from './error.js';
import { setAutomationsFromConfig } from './load-automations.js';
import { setRemoteControlEntityFromConfig } from './load-control-entities.js';
import { setFoldersFromConfig } from './load-folders.js';
@@ -1,4 +1,5 @@
import { isEqual } from 'lodash-es';
import { RemoteControlEntityPriority } from '../../config/schema/remote-control';
import { createCameraAction, createInternalCallbackAction } from '../../utils/action';
import { CardActionsAPI, CardConfigLoaderAPI, TaggedAutomation } from '../types';
@@ -1,4 +1,5 @@
import { get, merge } from 'lodash-es';
import { ConditionsManager } from '../../condition-trigger/conditions/conditions-manager';
import { ConditionStateManagerReadonlyInterface } from '../../condition-trigger/conditions/types';
import {
+1
View File
@@ -1,4 +1,5 @@
import { ReactiveController } from 'lit';
import { CameraManager } from '../camera-manager/manager';
import { ConditionStateManager } from '../condition-trigger/conditions/state-manager';
import { AdvancedCameraCardConfig } from '../config/schema/types';
+1
View File
@@ -1,4 +1,5 @@
import { isEqual } from 'lodash-es';
import { AdvancedCameraCardConfig } from '../config/schema/types';
import { createGeneralAction } from '../utils/action';
import { isActionAllowedBasedOnInteractionState } from '../utils/interaction-mode';
+1 -1
View File
@@ -1,5 +1,6 @@
import { sub } from 'date-fns';
import { NonEmptyTuple } from 'type-fest';
import { ConditionState } from '../../../condition-trigger/conditions/types';
import {
FolderConfig,
@@ -25,7 +26,6 @@ import { getMediaDownloadPath } from '../../../ha/download';
import { HomeAssistant } from '../../../ha/types';
import { QuerySource } from '../../../query-source.js';
import { Endpoint } from '../../../types';
import { ViewFolder, ViewItem } from '../../../view/item';
import { ViewItemClassifier } from '../../../view/item-classifier';
import { ViewItemCapabilities } from '../../../view/types';
@@ -1,4 +1,5 @@
import { sub } from 'date-fns';
import { ConditionState } from '../../../condition-trigger/conditions/types';
import {
DateMatcher,
@@ -1,12 +1,12 @@
import type parser from 'any-date-parser';
import { parse } from 'date-fns';
import { Parser } from '../../../config/schema/folders';
import {
BrowseMedia,
BrowseMediaMetadata,
RichBrowseMedia,
} from '../../../ha/browse-media/types';
import type parser from 'any-date-parser';
import { isValidDate } from '../../../utils/basic';
import { regexpExtract } from '../../../utils/regexp-extract';
import { REGEXP_GROUP_VALUE_KEY } from './types';
+1
View File
@@ -1,4 +1,5 @@
import { cloneDeep } from 'lodash-es';
import { ConditionState } from '../../condition-trigger/conditions/types';
import { FolderConfig, FolderConfigWithoutID } from '../../config/schema/folders';
import { localize } from '../../localize/localize';
+1
View File
@@ -1,4 +1,5 @@
import { NonEmptyTuple } from 'type-fest';
import { ConditionState } from '../../condition-trigger/conditions/types';
import { FolderConfig, HAFolderPathComponent } from '../../config/schema/folders';
import { ResolvedMediaCache } from '../../ha/resolved-media';
@@ -1,4 +1,5 @@
import screenfull from 'screenfull';
import { WebkitHTMLVideoElement } from '../../types';
import { CardFullscreenAPI } from '../types';
import { ScreenfullFullScreenProvider } from './screenfull';
@@ -1,4 +1,5 @@
import screenfull from 'screenfull';
import { FullscreenProviderBase } from '../provider';
import { FullscreenProvider } from '../types';
@@ -1,4 +1,5 @@
import { HassEvent } from 'home-assistant-js-websocket';
import {
SubscriptionHealthInterface,
SubscriptionHealthMonitor,
@@ -1,5 +1,6 @@
import { STATE_RUNNING } from 'home-assistant-js-websocket';
import PQueue from 'p-queue';
import { isHassReady } from '../ha/is-hass-ready';
import { sideLoadHomeAssistantElements } from '../ha/side-load-ha-elements';
import { loadLanguages } from '../localize/localize';
@@ -1,4 +1,5 @@
import { throttle } from 'lodash-es';
import { Timer } from '../utils/timer';
import { CardInteractionAPI } from './types';
@@ -1,4 +1,5 @@
import type { IssueTriggerContext } from 'issue';
import { ConditionStateChange } from '../../condition-trigger/conditions/types';
import { isActionAllowedBasedOnInteractionState } from '../../utils/interaction-mode';
import { RetryTimer } from '../../utils/retry-timer';
@@ -1,4 +1,5 @@
import { STATE_RUNNING } from 'home-assistant-js-websocket';
import { ConditionState } from '../../../condition-trigger/conditions/types.js';
import { localize } from '../../../localize/localize.js';
import { Issue, IssueDescription } from '../types.js';
@@ -1,4 +1,5 @@
import { z } from 'zod';
import { TROUBLESHOOTING_LEGACY_RESOURCE_URL } from '../../../const.js';
import { HomeAssistant } from '../../../ha/types';
import { localize } from '../../../localize/localize';
@@ -1,4 +1,5 @@
import type { IssueTriggerContext } from 'issue';
import { ConditionState } from '../../../condition-trigger/conditions/types.js';
import { Notification } from '../../../config/schema/actions/types.js';
import { TROUBLESHOOTING_MEDIA_URL } from '../../../const.js';
@@ -1,4 +1,5 @@
import type { IssueTriggerContext } from 'issue';
import { summarizeNotification } from '../../components-lib/notification/summarize';
import { ConditionState } from '../../condition-trigger/conditions/types';
import { Notification } from '../../config/schema/actions/types';
+1
View File
@@ -1,4 +1,5 @@
import type { IssueTriggerContext } from 'issue';
import { ConditionState } from '../../condition-trigger/conditions/types';
import { Notification } from '../../config/schema/actions/types';
import { HomeAssistant } from '../../ha/types';
@@ -1,6 +1,7 @@
import { CardKeyboardStateAPI, KeysState } from './types';
import { isEqual } from 'lodash-es';
import { CardKeyboardStateAPI, KeysState } from './types';
export class KeyboardStateManager {
private _api: CardKeyboardStateAPI;
private _state: KeysState = {};
@@ -1,4 +1,5 @@
import { isEqual } from 'lodash-es';
import { CameraManager } from '../camera-manager/manager';
import { StatusBarItem } from '../config/schema/actions/types';
import { StatusBarConfig } from '../config/schema/status-bar';
+1
View File
@@ -1,4 +1,5 @@
import { StyleInfo } from 'lit/directives/style-map';
import { AdvancedCameraCardConfig, configDefaults } from '../config/schema/types';
import { ThemeConfig, ThemeName } from '../config/schema/view';
import {
+1
View File
@@ -1,4 +1,5 @@
import { HASS, renderTemplate } from 'ha-nunjucks/dist';
import { ConditionState } from '../../condition-trigger/conditions/types';
import { TriggerData } from '../../condition-trigger/triggers/types';
import { HomeAssistant } from '../../ha/types';
+1
View File
@@ -1,4 +1,5 @@
import { format } from 'date-fns';
import { createNotificationFromError } from '../../components-lib/notification/factory';
import { homeAssistantGetSignedURLIfNecessary } from '../../ha/sign-path';
import { localize } from '../../localize/localize';
@@ -1,4 +1,5 @@
import { ViewContext } from 'view';
import { View } from '../../../view/view';
import { ViewModifier } from '../types';
@@ -1,4 +1,5 @@
import { ViewContext } from 'view';
import { View } from '../../../view/view';
import { ViewModifier } from '../types';
@@ -1,4 +1,5 @@
import { ViewContext } from 'view';
import { View } from '../../../view/view';
import { ViewModifier } from '../types';
+1
View File
@@ -1,4 +1,5 @@
import { orderBy, uniqBy } from 'lodash-es';
import { ViewItem } from '../../view/item';
import { ViewItemClassifier } from '../../view/item-classifier';
+2 -2
View File
@@ -1,9 +1,9 @@
import { ViewContext } from 'view';
import { AdvancedCameraCardUserSpecifiedView } from '../../config/schema/common/const.js';
import { AdvancedCameraCardError } from '../../types.js';
import { ViewItem } from '../../view/item.js';
import { QueryResults } from '../../view/query-results.js';
import { AdvancedCameraCardUserSpecifiedView } from '../../config/schema/common/const.js';
import { View, ViewParameters } from '../../view/view.js';
export interface ViewModifier {
+1
View File
@@ -1,4 +1,5 @@
import { ViewContext } from 'view';
import { log } from '../../utils/debug';
import { getStreamCameraID } from '../../view/substream';
import { getViewTargetID } from '../../view/target-id';
@@ -1,4 +1,5 @@
import { sub } from 'date-fns';
import { MEDIA_CHUNK_SIZE_DEFAULT } from '../../const';
import { findBestMediaTimeIndex } from '../../utils/find-best-media-time-index';
import { QueryResults } from '../../view/query-results';
+14 -2
View File
@@ -1,29 +1,41 @@
import { CSSResultGroup, LitElement, TemplateResult, html, unsafeCSS } from 'lit';
import { CSSResultGroup, html, LitElement, TemplateResult, unsafeCSS } from 'lit';
import { customElement } from 'lit/decorators.js';
import { classMap } from 'lit/directives/class-map.js';
import { ifDefined } from 'lit/directives/if-defined.js';
import { Ref, createRef, ref } from 'lit/directives/ref.js';
import { createRef, Ref, ref } from 'lit/directives/ref.js';
import { styleMap } from 'lit/directives/style-map.js';
import 'web-dialog';
import { actionHandler } from './action-handler-directive.js';
import { CardController } from './card-controller/controller';
import type { IssueKey, IssueTriggerEventData } from './card-controller/issues/types.js';
import { resolveAutoHideState, type AutoHideState } from './components-lib/auto-hide.js';
import { MenuButtonController } from './components-lib/menu-button-controller';
import './components/effects/effects';
import './components/elements.js';
import { AdvancedCameraCardElements } from './components/elements.js';
import './components/loading.js';
import './components/menu.js';
import { AdvancedCameraCardMenu } from './components/menu.js';
import './components/notification/block.js';
import { renderNotificationBlock } from './components/notification/block.js';
import './components/notification/popup.js';
import './components/overlay.js';
import { AdvancedCameraCardOverlay } from './components/overlay.js';
import './components/status-bar';
import './components/thumbnail-carousel.js';
import './components/views.js';
import { AdvancedCameraCardViews } from './components/views.js';
import { ConditionStateManagerGetEvent } from './condition-trigger/conditions/state-manager-via-event.js';
import { StatusBarItem } from './config/schema/actions/types.js';
@@ -1,4 +1,5 @@
import { ReactiveController, ReactiveControllerHost } from 'lit';
import { Timer } from '../utils/timer';
export class CachedValueController<T> implements ReactiveController {
@@ -1,5 +1,6 @@
import { LitElement, ReactiveController } from 'lit';
import { throttle } from 'lodash-es';
import { GalleryExtendEvent } from '../../components/gallery/types';
import { fireAdvancedCameraCardEvent } from '../../utils/fire-advanced-camera-card-event';
import { scrollIntoView } from '../../utils/scroll';
+1
View File
@@ -1,4 +1,5 @@
import { HassEntity } from 'home-assistant-js-websocket';
import frigateSVG from '../camera-manager/frigate/assets/frigate.svg';
import motioneyeSVG from '../camera-manager/motioneye/assets/motioneye.svg';
import reolinkSVG from '../camera-manager/reolink/assets/reolink.svg';
@@ -1,5 +1,6 @@
import { LitElement, ReactiveController } from 'lit';
import { isEqual } from 'lodash-es';
import { KeyboardShortcut } from '../config/schema/view';
export class KeyAssignerController implements ReactiveController {
@@ -1,4 +1,5 @@
import { ReactiveController, ReactiveControllerHost } from 'lit';
import { LazyUnloadCondition } from '../config/schema/common/media-actions';
type LazyLoadListener = (loaded: boolean) => void;
@@ -1,5 +1,6 @@
import { ReactiveController, ReactiveControllerHost } from 'lit';
import { debounce } from 'lodash-es';
import { CameraDimensionsConfig } from '../config/schema/cameras';
import { MediaLoadedInfoEventDetail } from '../types';
import { aspectRatioToString, setOrRemoveStyleProperty } from '../utils/basic';
@@ -12,6 +12,7 @@ import {
} from 'date-fns';
import { LitElement } from 'lit';
import { isEqual, orderBy } from 'lodash-es';
import { CameraManager, CameraQueryClassifier } from '../camera-manager/manager';
import { DateRange, PartialDateRange } from '../camera-manager/range';
import {
@@ -1,5 +1,6 @@
import { isEqual, throttle } from 'lodash-es';
import Masonry from 'masonry-layout';
import { ViewDisplayConfig } from '../config/schema/common/display';
import {
forceReflow,
@@ -1,4 +1,5 @@
import { ReactiveController, ReactiveControllerHost } from 'lit';
import { MediaLoadedInfo, MediaLoadedInfoEventDetail } from '../types';
import { onAbort } from '../utils/abort-signal';
@@ -1,5 +1,6 @@
import { ReactiveController, ReactiveControllerHost } from 'lit';
import { isEqual, omit } from 'lodash-es';
import {
MediaLoadedInfo,
MediaLoadedInfoEventDetail,
+1
View File
@@ -1,4 +1,5 @@
import { LitElement } from 'lit';
import { FullscreenElement, MediaPlayerController, PIPElement } from '../../types';
import { screenshotImage } from '../../utils/screenshot';
@@ -1,5 +1,6 @@
import JSMpeg from '@cycjimmy/jsmpeg-player';
import { LitElement } from 'lit';
import { FullscreenElement, MediaPlayerController, PIPElement } from '../../types';
export class JSMPEGMediaPlayerController implements MediaPlayerController {
@@ -1,4 +1,5 @@
import { LitElement } from 'lit';
import { FullscreenElement, MediaPlayerController, PIPElement } from '../../types';
import { CachedValueController } from '../cached-value-controller';
+1
View File
@@ -1,4 +1,5 @@
import { LitElement } from 'lit';
import { FullscreenElement, MediaPlayerController, PIPElement } from '../../types';
import { hideMediaControlsTemporarily, setControlsOnVideo } from '../../utils/controls';
import { screenshotVideo } from '../../utils/screenshot';
@@ -1,4 +1,5 @@
import { format } from 'date-fns';
import { CameraManager } from '../../camera-manager/manager';
import { CameraManagerCameraMetadata } from '../../camera-manager/types';
import { ViewItemManager } from '../../card-controller/view/item-manager';
@@ -1,4 +1,5 @@
import { StyleInfo } from 'lit/directives/style-map';
import { CameraManager } from '../camera-manager/manager';
import { CallManager } from '../card-controller/call/manager';
import { FoldersManager } from '../card-controller/folders/manager';
+1
View File
@@ -1,5 +1,6 @@
import { LitElement } from 'lit';
import { isEqual, orderBy } from 'lodash-es';
import { dispatchActionExecutionRequest } from '../card-controller/actions/utils/execution-request.js';
import type { LockManagerEpoch } from '../card-controller/lock/types';
import type { SubmenuInteraction } from '../components/submenu/types.js';
+1
View File
@@ -1,4 +1,5 @@
import { NonEmptyTuple } from 'type-fest';
import { FolderPathComponent, FolderQuery } from '../card-controller/folders/types';
import { ViewManagerEpoch, ViewModifier } from '../card-controller/view/types';
import { localize } from '../localize/localize';
+2 -1
View File
@@ -1,11 +1,12 @@
import type { Handler } from '@use-gesture/vanilla';
import {
createGesture,
dragAction,
pinchAction,
wheelAction,
type Handler,
} from '@use-gesture/vanilla';
import { ReactiveController, ReactiveControllerHost } from 'lit';
import { dispatchActionExecutionRequest } from '../../card-controller/actions/utils/execution-request.js';
import {
PTZAction,
+2 -1
View File
@@ -1,11 +1,12 @@
import { ReactiveController, ReactiveControllerHost } from 'lit';
import { isEqual } from 'lodash-es';
import { EnabledProxyConfig } from '../config/schema/common/proxy.js';
import { homeAssistantGetSignedURLIfNecessary } from '../ha/sign-path.js';
import { HomeAssistant } from '../ha/types.js';
import {
CreateProxiedEndpointOptions,
createProxiedEndpointIfNecessary,
CreateProxiedEndpointOptions,
} from '../ha/web-proxy.js';
import { Endpoint } from '../types.js';
import { errorToConsole } from '../utils/basic.js';
@@ -1,5 +1,6 @@
import { LitElement } from 'lit';
import { isEqual, orderBy } from 'lodash-es';
import { dispatchActionExecutionRequest } from '../card-controller/actions/utils/execution-request';
import { ActionsConfig, StatusBarItem } from '../config/schema/actions/types';
import { STATUS_BAR_PRIORITY_DEFAULT } from '../config/schema/common/const';
@@ -1,4 +1,5 @@
import { format } from 'date-fns';
import { CameraManager } from '../../../camera-manager/manager';
import { CameraManagerCameraMetadata } from '../../../camera-manager/types';
import {
@@ -12,6 +12,7 @@ import {
TimelineOptionsCluster,
TimelineWindow,
} from 'vis-timeline';
import { CameraManager } from '../../camera-manager/manager';
import { rangesOverlap } from '../../camera-manager/range';
import { convertRangeToCacheFriendlyTimes } from '../../camera-manager/utils/range-to-cache-friendly';
+1
View File
@@ -1,6 +1,7 @@
import { add, sub } from 'date-fns';
import { DataSet } from 'vis-data';
import { IdType, TimelineItem, TimelineWindow } from 'vis-timeline/esnext';
import { CameraManager } from '../../camera-manager/manager';
import {
compressRanges,
+1
View File
@@ -1,4 +1,5 @@
import { DateType, IdType, Timeline, TimelineWindow } from 'vis-timeline';
import { CameraManager } from '../../camera-manager/manager';
import { ViewItemManager } from '../../card-controller/view/item-manager';
import { ViewManagerEpoch } from '../../card-controller/view/types';
+2 -1
View File
@@ -1,15 +1,16 @@
import Panzoom, { PanzoomEventDetail, PanzoomObject } from '@dermotduffy/panzoom';
import { round, throttle } from 'lodash-es';
import { arefloatsApproximatelyEqual, isHoverableDevice } from '../../utils/basic';
import { fireAdvancedCameraCardEvent } from '../../utils/fire-advanced-camera-card-event';
import {
isZoomEmpty,
PartialZoomSettings,
ZOOM_DEFAULT_PAN_X,
ZOOM_DEFAULT_PAN_Y,
ZOOM_DEFAULT_SCALE,
ZOOM_PRECISION,
ZoomSettingsObserved,
isZoomEmpty,
} from './types';
export class ZoomController {
@@ -1,4 +1,5 @@
import { ViewContext } from 'view';
import { MergeContextViewModifier } from '../../card-controller/view/modifiers/merge-context.js';
import { ViewManagerInterface } from '../../card-controller/view/types.js';
import { PartialZoomSettings, ZoomSettingsObserved } from './types.js';
+1
View File
@@ -8,6 +8,7 @@ import {
} from 'lit';
import { customElement, property, state } from 'lit/decorators.js';
import { classMap } from 'lit/directives/class-map.js';
import { dispatchActionExecutionRequest } from '../card-controller/actions/utils/execution-request.js';
import { MicrophoneState } from '../card-controller/types.js';
import { ActionConfig } from '../config/schema/actions/types.js';
+3 -2
View File
@@ -1,14 +1,15 @@
import { CreatePluginType, LoosePluginType } from 'embla-carousel/components/Plugins';
import {
CSSResultGroup,
html,
LitElement,
PropertyValues,
TemplateResult,
html,
unsafeCSS,
} from 'lit';
import { customElement, property } from 'lit/decorators.js';
import { Ref, createRef, ref } from 'lit/directives/ref.js';
import { createRef, Ref, ref } from 'lit/directives/ref.js';
import { TransitionEffect } from '../config/schema/common/transition-effect';
import carouselStyle from '../scss/carousel.scss';
import {
+2
View File
@@ -1,10 +1,12 @@
import { CSSResultGroup, html, LitElement, TemplateResult, unsafeCSS } from 'lit';
import { customElement, property } from 'lit/decorators.js';
import { createRef, ref, Ref } from 'lit/directives/ref.js';
import { localize } from '../localize/localize';
import datePickerStyle from '../scss/date-picker.scss';
import { stopEventFromActivatingCardWideActions } from '../utils/action';
import { fireAdvancedCameraCardEvent } from '../utils/fire-advanced-camera-card-event';
import './icon';
export interface DatePickerEvent {
+2
View File
@@ -1,6 +1,7 @@
import { CSSResultGroup, html, LitElement, TemplateResult, unsafeCSS } from 'lit';
import { customElement, property } from 'lit/decorators.js';
import { until } from 'lit/directives/until.js';
import { IssuePresence } from '../card-controller/issues/types';
import { RawAdvancedCameraCardConfig } from '../config/types';
import { DeviceRegistryManager } from '../ha/registry/device';
@@ -9,6 +10,7 @@ import { localize } from '../localize/localize';
import basicBlockStyle from '../scss/basic-block.scss';
import { getDiagnostics } from '../utils/diagnostics';
import { renderNotificationBlockFromText } from './notification/block';
@customElement('advanced-camera-card-diagnostics')
export class AdvancedCameraCardDiagnostics extends LitElement {
// Not a reactive property to avoid multiple diagnostics fetches.
+4
View File
@@ -8,8 +8,11 @@ import {
} from 'lit';
import { customElement, property } from 'lit/decorators.js';
import { createRef, ref, Ref } from 'lit/directives/ref.js';
import 'side-drawer';
import { SideDrawer } from 'side-drawer';
import drawerInjectStyle from '../scss/drawer-inject.scss';
import drawerStyle from '../scss/drawer.scss';
import { stopEventFromActivatingCardWideActions } from '../utils/action.js';
@@ -18,6 +21,7 @@ import {
getChildrenFromElement,
isHoverableDevice,
} from '../utils/basic.js';
import './icon.js';
export interface DrawerIcons {
+1
View File
@@ -1,5 +1,6 @@
import { CSSResultGroup, LitElement, PropertyValues, unsafeCSS } from 'lit';
import { property } from 'lit/decorators.js';
import effectBaseStyle from '../../scss/effect-base.scss';
import { forceReflow } from '../../utils/basic';
+1
View File
@@ -1,6 +1,7 @@
import { CSSResultGroup, html, TemplateResult, unsafeCSS } from 'lit';
import { customElement } from 'lit/decorators.js';
import { unsafeHTML } from 'lit/directives/unsafe-html.js';
import checkCircleSVG from '../../images/check-circle.svg';
import checkStyle from '../../scss/check.scss';
import { BaseEffectComponent } from './base';
+1
View File
@@ -1,5 +1,6 @@
import { LitElement, PropertyValues, unsafeCSS } from 'lit';
import { customElement, property } from 'lit/decorators.js';
import { EffectsManager } from '../../card-controller/effects/effects-manager';
import effectsStyle from '../../scss/effects.scss';
+2
View File
@@ -1,7 +1,9 @@
import { CSSResultGroup, html, LitElement, TemplateResult, unsafeCSS } from 'lit';
import { customElement, property } from 'lit/decorators.js';
import { repeat } from 'lit/directives/repeat.js';
import fireworkBurstStyle from '../../scss/firework-burst.scss';
import './firework-particle';
const BASE_PARTICLE_COUNT = 36;
@@ -1,5 +1,6 @@
import { CSSResultGroup, html, LitElement, TemplateResult, unsafeCSS } from 'lit';
import { customElement, property } from 'lit/decorators.js';
import fireworkParticleStyle from '../../scss/firework-particle.scss';
@customElement('advanced-camera-card-firework-particle')
+2
View File
@@ -1,8 +1,10 @@
import { html, TemplateResult } from 'lit';
import { customElement, state } from 'lit/decorators.js';
import { repeat } from 'lit/directives/repeat.js';
import { Timer } from '../../utils/timer';
import { BaseEffectComponent } from './base';
import './firework-burst';
const INITIAL_BURST_COUNT = 3;
+2 -1
View File
@@ -1,7 +1,8 @@
import { CSSResultGroup, html, TemplateResult, unsafeCSS } from 'lit';
import { customElement } from 'lit/decorators.js';
import { BaseEffectComponent } from './base';
import ghostStyle from '../../scss/ghost.scss';
import { BaseEffectComponent } from './base';
@customElement('advanced-camera-card-effect-ghost')
export class AdvancedCameraCardEffectGhost extends BaseEffectComponent {

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