Skip to content

Commit

Permalink
feat: extract getLovelace and add backward compatibility
Browse files Browse the repository at this point in the history
  • Loading branch information
jcwillox committed Apr 10, 2023
1 parent 5fd0a36 commit f27d690
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 95 deletions.
5 changes: 0 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,5 @@
"packageManager": "pnpm@8.1.1",
"engines": {
"node": ">=16.x"
},
"pnpm": {
"patchedDependencies": {
"custom-card-helpers@1.9.0": "patches/custom-card-helpers@1.9.0.patch"
}
}
}
81 changes: 0 additions & 81 deletions patches/custom-card-helpers@1.9.0.patch

This file was deleted.

10 changes: 2 additions & 8 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

37 changes: 37 additions & 0 deletions src/get-lovelace.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { LovelaceConfig } from "custom-card-helpers";

type HuiRootElement = HTMLElement & {
lovelace: {
config: LovelaceConfig;
current_view: number;
[key: string]: unknown;
};
___curView: number;
};

declare global {
interface HTMLElementTagNameMap {
"hui-root": HuiRootElement;
}
}

export const getLovelace = (): HuiRootElement["lovelace"] | null => {
const root = document
.querySelector("home-assistant")
?.shadowRoot?.querySelector("home-assistant-main")?.shadowRoot;

const resolver =
root?.querySelector("ha-drawer partial-panel-resolver") ||
root?.querySelector("app-drawer-layout partial-panel-resolver");

const huiRoot = (resolver?.shadowRoot || resolver)
?.querySelector("ha-panel-lovelace")
?.shadowRoot?.querySelector("hui-root");

if (huiRoot) {
const ll = huiRoot.lovelace;
ll.current_view = huiRoot.___curView;
return ll;
}
return null;
};
12 changes: 11 additions & 1 deletion src/presets.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,17 @@
import { getLovelace } from "custom-card-helpers";
import deepmerge from "deepmerge";
import { getLovelace } from "./get-lovelace";
import { ButtonConfig, PaperButtonRowConfig } from "./types";

declare module "custom-card-helpers" {
interface LovelaceConfig {
paper_buttons_row?: {
presets?: {
[key: string]: ButtonConfig;
};
};
}
}

let lovelace = getLovelace();

export function handleButtonPreset(
Expand Down

0 comments on commit f27d690

Please sign in to comment.