Skip to content

Commit

Permalink
Added observeTree method
Browse files Browse the repository at this point in the history
  • Loading branch information
msarca committed Apr 9, 2022
1 parent 0ca243b commit 5150ceb
Show file tree
Hide file tree
Showing 8 changed files with 82 additions and 5 deletions.
15 changes: 15 additions & 0 deletions dist/assembler.cjs.js

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

15 changes: 15 additions & 0 deletions dist/assembler.es.js

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

34 changes: 32 additions & 2 deletions dist/assembler.js

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

2 changes: 1 addition & 1 deletion dist/assembler.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@asmcss/assembler",
"version": "0.7.0",
"version": "0.7.1",
"main": "dist/assembler.cjs.js",
"module": "dist/assembler.es.js",
"browser": "dist/assembler.js",
Expand Down
8 changes: 7 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/

import {generateStyles} from "./generators";
import {observeDocument, observeShadow} from "./observers";
import {observeDocument, observeShadow, observeTree} from "./observers";
import {getUserSettings} from "./helpers";
import {generateRootVariables} from "./variables";
import StyleHandler from "./StyleHandler";
Expand Down Expand Up @@ -86,6 +86,12 @@ export function init(options?: {[key: string]: string}): boolean {

observeDocument(document, styleHandler);

if (window) {
window.addEventListener('DOMContentLoaded', function () {
observeTree(document.body, styleHandler);
});
}

return true;
}

Expand Down
10 changes: 10 additions & 0 deletions src/observers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,16 @@ let _elementObserver:MutationObserver = null;
let _shadowRootObserver:MutationObserver = null;
const observedElements = new WeakMap<HTMLElement, any[]>();

export function observeTree(element: HTMLElement, handler: StyleHandler): void {
for (let e = element; e != null; e = e.nextElementSibling as HTMLElement) {
if (!observedElements.has(e)) {
observe(e, handler);
} else {
observeTree(e.firstElementChild as HTMLElement, handler);
}
}
}

export function observeDocument(document: Document, handler: StyleHandler): void {
if (_documentObserver === null) {
_documentObserver = new MutationObserver(function (mutations: MutationRecord[]): void {
Expand Down
1 change: 1 addition & 0 deletions types/observers.d.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import StyleHandler from "./StyleHandler";
export declare function observeTree(element: HTMLElement, handler: StyleHandler): void;
export declare function observeDocument(document: Document, handler: StyleHandler): void;
export declare function observeShadow(shadow: ShadowRoot, handler: StyleHandler): void;

0 comments on commit 5150ceb

Please sign in to comment.