From 2c4ae43e688a9873e86211ea0e7aeb9ba770dd77 Mon Sep 17 00:00:00 2001
From: Minteck <contact@minteck.org>
Date: Tue, 18 Oct 2022 08:59:09 +0200
Subject: Update

---
 alarm/node_modules/symbol-tree/lib/TreeIterator.js | 69 ++++++++++++++++++++++
 1 file changed, 69 insertions(+)
 create mode 100644 alarm/node_modules/symbol-tree/lib/TreeIterator.js

(limited to 'alarm/node_modules/symbol-tree/lib/TreeIterator.js')

diff --git a/alarm/node_modules/symbol-tree/lib/TreeIterator.js b/alarm/node_modules/symbol-tree/lib/TreeIterator.js
new file mode 100644
index 0000000..f9d6217
--- /dev/null
+++ b/alarm/node_modules/symbol-tree/lib/TreeIterator.js
@@ -0,0 +1,69 @@
+'use strict';
+
+const TREE = Symbol();
+const ROOT = Symbol();
+const NEXT = Symbol();
+const ITERATE_FUNC = Symbol();
+
+class TreeIterator {
+        constructor(tree, root, firstResult, iterateFunction) {
+                this[TREE] = tree;
+                this[ROOT] = root;
+                this[NEXT] = firstResult;
+                this[ITERATE_FUNC] = iterateFunction;
+        }
+
+        next() {
+                const tree = this[TREE];
+                const iterateFunc = this[ITERATE_FUNC];
+                const root = this[ROOT];
+
+                if (!this[NEXT]) {
+                        return {
+                                done: true,
+                                value: root,
+                        };
+                }
+
+                const value = this[NEXT];
+
+                if (iterateFunc === 1) {
+                        this[NEXT] = tree._node(value).previousSibling;
+                }
+                else if (iterateFunc === 2) {
+                        this[NEXT] = tree._node(value).nextSibling;
+                }
+                else if (iterateFunc === 3) {
+                        this[NEXT] = tree._node(value).parent;
+                }
+                else if (iterateFunc === 4) {
+                        this[NEXT] = tree.preceding(value, {root: root});
+                }
+                else /* if (iterateFunc === 5)*/ {
+                        this[NEXT] = tree.following(value, {root: root});
+                }
+
+                return {
+                        done: false,
+                        value: value,
+                };
+        }
+}
+
+Object.defineProperty(TreeIterator.prototype, Symbol.iterator, {
+        value: function() {
+                return this;
+        },
+        writable: false,
+});
+
+TreeIterator.PREV = 1;
+TreeIterator.NEXT = 2;
+TreeIterator.PARENT = 3;
+TreeIterator.PRECEDING = 4;
+TreeIterator.FOLLOWING = 5;
+
+Object.freeze(TreeIterator);
+Object.freeze(TreeIterator.prototype);
+
+module.exports = TreeIterator;
-- 
cgit