From ad248ece6bbe00d264b88c12e92303cf1de739fd Mon Sep 17 00:00:00 2001
From: dragonwocky <thedragonring.bod@gmail.com>
Date: Thu, 10 Mar 2022 22:36:21 +1100
Subject: [PATCH] indentation lines: fix #51, full support for toggle headers

---
 repo/indentation-lines/client.css | 12 +++++-------
 repo/indentation-lines/client.mjs | 26 +++++++++++++++-----------
 2 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/repo/indentation-lines/client.css b/repo/indentation-lines/client.css
index c7ab6b5..bcb867a 100644
--- a/repo/indentation-lines/client.css
+++ b/repo/indentation-lines/client.css
@@ -9,9 +9,7 @@
 .notion-page-content .notion-numbered_list-block > div > div:last-child,
 .notion-page-content .notion-to_do-block > div > div:last-child,
 .notion-page-content .notion-toggle-block > div > div:last-child,
-.notion-page-content .notion-selectable.notion-sub_header-block > div > div > div:last-child,
-.notion-page-content .notion-selectable.notion-sub_sub_header-block > div > div > div:last-child,
-.notion-page-content .notion-selectable.notion-sub_sub_sub_header-block > div > div > div:last-child,
+.notion-page-content [class$='header-block'] > div > div > div:last-child,
 .notion-page-content .notion-table_of_contents-block > div > div > a > div > div {
   position: relative;
 }
@@ -20,9 +18,7 @@
 .notion-page-content .notion-numbered_list-block > div > div:last-child::before,
 .notion-page-content .notion-to_do-block > div > div:last-child::before,
 .notion-page-content .notion-toggle-block > div > div:last-child::before,
-.notion-page-content .notion-selectable.notion-sub_header-block > div > div > div:last-child::before,
-.notion-page-content .notion-selectable.notion-sub_sub_header-block > div > div > div:last-child::before,
-.notion-page-content .notion-selectable.notion-sub_sub_sub_header-block > div > div > div:last-child::before,
+.notion-page-content [class$='header-block'] > div > div > div:last-child::before,
 .notion-page-content .pseudoSelection > div > div:last-child::before {
   content: '';
   position: absolute;
@@ -30,6 +26,9 @@
   top: 2em;
   margin-inline-start: -14.48px;
 }
+.notion-page-content [class$='header-block'] > div > div > div:last-child::before {
+  margin-inline-start: -15.48px;
+}
 
 .notion-page-content
   .notion-table_of_contents-block
@@ -100,4 +99,3 @@
   > .plus:hover {
   background: var(--theme--ui_interactive-hover) !important;
 }
-
diff --git a/repo/indentation-lines/client.mjs b/repo/indentation-lines/client.mjs
index 865b119..3cb8736 100644
--- a/repo/indentation-lines/client.mjs
+++ b/repo/indentation-lines/client.mjs
@@ -48,22 +48,26 @@ export default async function ({ web }, db) {
       }
     }
   }
+
   if (await db.get(['toggle_header'])) {
     css += `
-      .notion-page-content .notion-selectable.notion-sub_sub_header-block > div > div > div:last-child::before {
-        border-left: 1px ${style} var(--indentation_lines--color, currentColor);
-        opacity: ${opacity};
-      }
-      .notion-page-content .notion-selectable.notion-sub_header-block > div > div > div:last-child::before {
-        border-left: 1px ${style} var(--indentation_lines--color, currentColor);
-        opacity: ${opacity};
-      }
-      .notion-page-content .notion-selectable.notion-sub_sub_sub_header-block > div > div > div:last-child::before {
+      .notion-page-content [class$=header-block] > div > div > div:last-child::before {
         border-left: 1px ${style} var(--indentation_lines--color, currentColor);
         opacity: ${opacity};
       }`;
+
+    if (rainbow) {
+      for (let i = 0; i < colors.length; i++) {
+        css += `
+        .notion-page-content ${`[class$=header-block] `.repeat(i + 1)}
+          > div > div > div:last-child::before{
+          --indentation_lines--color: var(--theme--text_${colors[i]});
+        }`;
+      }
+    }
   }
-  if (db.get(['table_of_contents'])) {
+
+  if (await db.get(['table_of_contents'])) {
     css += `
       .notion-page-content .notion-table_of_contents-block > div > div > a > div
         > div:not([style*='margin-left: 0px']) > div::before {
@@ -84,7 +88,7 @@ export default async function ({ web }, db) {
     }
   }
 
-  if (db.get(['outliner'])) {
+  if (await db.get(['outliner'])) {
     css += `
       .outliner--header:not([style='--outliner--indent:0px;'])::before {
         border-left: 1px ${style} var(--indentation_lines--color, currentColor);