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[]; + } }