From 88fde797212261125a99886bcb1df0d0bf6650bc Mon Sep 17 00:00:00 2001 From: Dermot Duffy Date: Sat, 23 May 2026 18:42:03 -0700 Subject: [PATCH] feat: Add easy access to card from JS console for user debugging (#2502) --- src/card.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/card.ts b/src/card.ts index d5a9b535..b0f8b16c 100644 --- a/src/card.ts +++ b/src/card.ts @@ -81,6 +81,11 @@ console.info( documentationURL: REPO_URL, }); +// Expose currently-connected card instances on `window.advancedCameraCards` for +// console-based debugging and user support. `??=` so a double-loaded card +// shares one array (same pattern as `customCards` above). +const advancedCameraCards: AdvancedCameraCard[] = (window.advancedCameraCards ??= []); + // *************************************************************************** // Main AdvancedCameraCard WebComponent // @@ -157,6 +162,19 @@ class AdvancedCameraCard extends LitElement { this._controller.getConfigManager().setConfig(config); } + public connectedCallback(): void { + super.connectedCallback(); + advancedCameraCards.push(this); + } + + public disconnectedCallback(): void { + const i = advancedCameraCards.indexOf(this); + if (i >= 0) { + advancedCameraCards.splice(i, 1); + } + super.disconnectedCallback(); + } + protected shouldUpdate(): boolean { // Do not allow a disconnected element to update, as it may cause cameras to // reinitialize/subscribe for an element that is no longer part of the @@ -525,4 +543,7 @@ declare global { 'advanced-camera-card': AdvancedCameraCard; 'frigate-card': FrigateCard; } + interface Window { + advancedCameraCards?: AdvancedCameraCard[]; + } }