Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo-mod-jslibs-dist.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'alpinejs/packages/alpinejs/src/utils/walk.js')
-rw-r--r--alpinejs/packages/alpinejs/src/utils/walk.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/alpinejs/packages/alpinejs/src/utils/walk.js b/alpinejs/packages/alpinejs/src/utils/walk.js
new file mode 100644
index 0000000..909df1a
--- /dev/null
+++ b/alpinejs/packages/alpinejs/src/utils/walk.js
@@ -0,0 +1,38 @@
+export function walk(el, callback) {
+ if (typeof ShadowRoot === 'function' && el instanceof ShadowRoot) {
+ Array.from(el.children).forEach(el => walk(el, callback))
+
+ return
+ }
+
+ let skip = false
+
+ callback(el, () => skip = true)
+
+ if (skip) return
+
+ let node = el.firstElementChild
+
+ while (node) {
+ walk(node, callback, false)
+
+ node = node.nextElementSibling
+ }
+}
+// export function walk(el, callback) {
+// if (el instanceof ShadowRoot || el instanceof DocumentFragment) {
+// Array.from(el.children).forEach(el => walk(el, callback))
+
+// return
+// }
+
+// callback(el, () => {
+// let node = el.firstElementChild
+
+// while (node) {
+// walk(node, callback)
+
+// node = node.nextElementSibling
+// }
+// })
+// }