aboutsummaryrefslogtreecommitdiff
path: root/extension/src/entries/contentScript/renderContent.js
diff options
context:
space:
mode:
authorLibravatar vnugent <public@vaughnnugent.com>2023-09-06 13:51:13 -0400
committerLibravatar vnugent <public@vaughnnugent.com>2023-09-06 13:51:13 -0400
commitcd8e865dad326f85ff2357ad90bbd6aa65dea68e (patch)
tree0d4a0bb8bafc4f807407e99c5e6bf4e1cb34217a /extension/src/entries/contentScript/renderContent.js
initial commit
Diffstat (limited to 'extension/src/entries/contentScript/renderContent.js')
-rw-r--r--extension/src/entries/contentScript/renderContent.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/extension/src/entries/contentScript/renderContent.js b/extension/src/entries/contentScript/renderContent.js
new file mode 100644
index 0000000..84c5b9f
--- /dev/null
+++ b/extension/src/entries/contentScript/renderContent.js
@@ -0,0 +1,48 @@
+// Copyright (C) 2023 Vaughn Nugent
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+
+import {runtime} from "webextension-polyfill";
+
+export default async function renderContent(
+ cssPaths,
+ render = (_appRoot) => {}
+) {
+ const appContainer = document.createElement("div");
+ const shadowRoot = appContainer.attachShadow({
+ mode: import.meta.env.DEV ? "open" : "closed",
+ });
+ const appRoot = document.createElement("div");
+
+ if (import.meta.hot) {
+ const { addViteStyleTarget } = await import(
+ "@samrum/vite-plugin-web-extension/client"
+ );
+
+ await addViteStyleTarget(shadowRoot);
+ } else {
+ cssPaths.forEach((cssPath) => {
+ const styleEl = document.createElement("link");
+ styleEl.setAttribute("rel", "stylesheet");
+ styleEl.setAttribute("href", runtime.getURL(cssPath));
+ shadowRoot.appendChild(styleEl);
+ });
+ }
+
+ shadowRoot.appendChild(appRoot);
+ document.body.appendChild(appContainer);
+
+ render(appRoot, shadowRoot);
+} \ No newline at end of file