mirror of
https://github.com/JasonYANG170/IOTConnect-Web.git
synced 2024-11-24 04:36:31 +00:00
601 lines
18 KiB
JavaScript
601 lines
18 KiB
JavaScript
var __extends = this && this.t || function() {
|
|
var extendStatics = function(e, r) {
|
|
extendStatics = Object.setPrototypeOf || {
|
|
__proto__: []
|
|
} instanceof Array && function(e, r) {
|
|
e.__proto__ = r;
|
|
} || function(e, r) {
|
|
for (var i in r) if (Object.prototype.hasOwnProperty.call(r, i)) e[i] = r[i];
|
|
};
|
|
return extendStatics(e, r);
|
|
};
|
|
return function(e, r) {
|
|
if (typeof r !== "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null");
|
|
extendStatics(e, r);
|
|
function __() {
|
|
this.constructor = e;
|
|
}
|
|
e.prototype = r === null ? Object.create(r) : (__.prototype = r.prototype, new __);
|
|
};
|
|
}();
|
|
|
|
var __read = this && this.q || function(e, r) {
|
|
var i = typeof Symbol === "function" && e[Symbol.iterator];
|
|
if (!i) return e;
|
|
var t = i.call(e), n, s = [], f;
|
|
try {
|
|
while ((r === void 0 || r-- > 0) && !(n = t.next()).done) s.push(n.value);
|
|
} catch (e) {
|
|
f = {
|
|
error: e
|
|
};
|
|
} finally {
|
|
try {
|
|
if (n && !n.done && (i = t["return"])) i.call(t);
|
|
} finally {
|
|
if (f) throw f.error;
|
|
}
|
|
}
|
|
return s;
|
|
};
|
|
|
|
var __values = this && this.V || function(e) {
|
|
var r = typeof Symbol === "function" && Symbol.iterator, i = r && e[r], t = 0;
|
|
if (i) return i.call(e);
|
|
if (e && typeof e.length === "number") return {
|
|
next: function() {
|
|
if (e && t >= e.length) e = void 0;
|
|
return {
|
|
value: e && e[t++],
|
|
done: !e
|
|
};
|
|
}
|
|
};
|
|
throw new TypeError(r ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
};
|
|
|
|
import { TreeNode, TreeNodeEnableIndex } from "./TreeNode";
|
|
|
|
import { Container } from "../../ContainerBase";
|
|
|
|
import { throwIteratorAccessError } from "../../../utils/throwError";
|
|
|
|
var TreeContainer = function(e) {
|
|
__extends(TreeContainer, e);
|
|
function TreeContainer(r, i) {
|
|
if (r === void 0) {
|
|
r = function(e, r) {
|
|
if (e < r) return -1;
|
|
if (e > r) return 1;
|
|
return 0;
|
|
};
|
|
}
|
|
if (i === void 0) {
|
|
i = false;
|
|
}
|
|
var t = e.call(this) || this;
|
|
t.W = undefined;
|
|
t.$ = r;
|
|
if (i) {
|
|
t.re = TreeNodeEnableIndex;
|
|
t.v = function(e, r, i) {
|
|
var t = this.se(e, r, i);
|
|
if (t) {
|
|
var n = t.rr;
|
|
while (n !== this.h) {
|
|
n.tr += 1;
|
|
n = n.rr;
|
|
}
|
|
var s = this.fe(t);
|
|
if (s) {
|
|
var f = s, h = f.parentNode, u = f.grandParent, a = f.curNode;
|
|
h.ie();
|
|
u.ie();
|
|
a.ie();
|
|
}
|
|
}
|
|
return this.M;
|
|
};
|
|
t.G = function(e) {
|
|
var r = this.he(e);
|
|
while (r !== this.h) {
|
|
r.tr -= 1;
|
|
r = r.rr;
|
|
}
|
|
};
|
|
} else {
|
|
t.re = TreeNode;
|
|
t.v = function(e, r, i) {
|
|
var t = this.se(e, r, i);
|
|
if (t) this.fe(t);
|
|
return this.M;
|
|
};
|
|
t.G = t.he;
|
|
}
|
|
t.h = new t.re;
|
|
return t;
|
|
}
|
|
TreeContainer.prototype.U = function(e, r) {
|
|
var i = this.h;
|
|
while (e) {
|
|
var t = this.$(e.u, r);
|
|
if (t < 0) {
|
|
e = e.N;
|
|
} else if (t > 0) {
|
|
i = e;
|
|
e = e.K;
|
|
} else return e;
|
|
}
|
|
return i;
|
|
};
|
|
TreeContainer.prototype.X = function(e, r) {
|
|
var i = this.h;
|
|
while (e) {
|
|
var t = this.$(e.u, r);
|
|
if (t <= 0) {
|
|
e = e.N;
|
|
} else {
|
|
i = e;
|
|
e = e.K;
|
|
}
|
|
}
|
|
return i;
|
|
};
|
|
TreeContainer.prototype.Y = function(e, r) {
|
|
var i = this.h;
|
|
while (e) {
|
|
var t = this.$(e.u, r);
|
|
if (t < 0) {
|
|
i = e;
|
|
e = e.N;
|
|
} else if (t > 0) {
|
|
e = e.K;
|
|
} else return e;
|
|
}
|
|
return i;
|
|
};
|
|
TreeContainer.prototype.Z = function(e, r) {
|
|
var i = this.h;
|
|
while (e) {
|
|
var t = this.$(e.u, r);
|
|
if (t < 0) {
|
|
i = e;
|
|
e = e.N;
|
|
} else {
|
|
e = e.K;
|
|
}
|
|
}
|
|
return i;
|
|
};
|
|
TreeContainer.prototype.ue = function(e) {
|
|
while (true) {
|
|
var r = e.rr;
|
|
if (r === this.h) return;
|
|
if (e.ee === 1) {
|
|
e.ee = 0;
|
|
return;
|
|
}
|
|
if (e === r.K) {
|
|
var i = r.N;
|
|
if (i.ee === 1) {
|
|
i.ee = 0;
|
|
r.ee = 1;
|
|
if (r === this.W) {
|
|
this.W = r.ne();
|
|
} else r.ne();
|
|
} else {
|
|
if (i.N && i.N.ee === 1) {
|
|
i.ee = r.ee;
|
|
r.ee = 0;
|
|
i.N.ee = 0;
|
|
if (r === this.W) {
|
|
this.W = r.ne();
|
|
} else r.ne();
|
|
return;
|
|
} else if (i.K && i.K.ee === 1) {
|
|
i.ee = 1;
|
|
i.K.ee = 0;
|
|
i.te();
|
|
} else {
|
|
i.ee = 1;
|
|
e = r;
|
|
}
|
|
}
|
|
} else {
|
|
var i = r.K;
|
|
if (i.ee === 1) {
|
|
i.ee = 0;
|
|
r.ee = 1;
|
|
if (r === this.W) {
|
|
this.W = r.te();
|
|
} else r.te();
|
|
} else {
|
|
if (i.K && i.K.ee === 1) {
|
|
i.ee = r.ee;
|
|
r.ee = 0;
|
|
i.K.ee = 0;
|
|
if (r === this.W) {
|
|
this.W = r.te();
|
|
} else r.te();
|
|
return;
|
|
} else if (i.N && i.N.ee === 1) {
|
|
i.ee = 1;
|
|
i.N.ee = 0;
|
|
i.ne();
|
|
} else {
|
|
i.ee = 1;
|
|
e = r;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
TreeContainer.prototype.he = function(e) {
|
|
var r, i;
|
|
if (this.M === 1) {
|
|
this.clear();
|
|
return this.h;
|
|
}
|
|
var t = e;
|
|
while (t.K || t.N) {
|
|
if (t.N) {
|
|
t = t.N;
|
|
while (t.K) t = t.K;
|
|
} else {
|
|
t = t.K;
|
|
}
|
|
r = __read([ t.u, e.u ], 2), e.u = r[0], t.u = r[1];
|
|
i = __read([ t.p, e.p ], 2), e.p = i[0], t.p = i[1];
|
|
e = t;
|
|
}
|
|
if (this.h.K === t) {
|
|
this.h.K = t.rr;
|
|
} else if (this.h.N === t) {
|
|
this.h.N = t.rr;
|
|
}
|
|
this.ue(t);
|
|
var n = t.rr;
|
|
if (t === n.K) {
|
|
n.K = undefined;
|
|
} else n.N = undefined;
|
|
this.M -= 1;
|
|
this.W.ee = 0;
|
|
return n;
|
|
};
|
|
TreeContainer.prototype.ae = function(e, r) {
|
|
if (e === undefined) return false;
|
|
var i = this.ae(e.K, r);
|
|
if (i) return true;
|
|
if (r(e)) return true;
|
|
return this.ae(e.N, r);
|
|
};
|
|
TreeContainer.prototype.fe = function(e) {
|
|
while (true) {
|
|
var r = e.rr;
|
|
if (r.ee === 0) return;
|
|
var i = r.rr;
|
|
if (r === i.K) {
|
|
var t = i.N;
|
|
if (t && t.ee === 1) {
|
|
t.ee = r.ee = 0;
|
|
if (i === this.W) return;
|
|
i.ee = 1;
|
|
e = i;
|
|
continue;
|
|
} else if (e === r.N) {
|
|
e.ee = 0;
|
|
if (e.K) e.K.rr = r;
|
|
if (e.N) e.N.rr = i;
|
|
r.N = e.K;
|
|
i.K = e.N;
|
|
e.K = r;
|
|
e.N = i;
|
|
if (i === this.W) {
|
|
this.W = e;
|
|
this.h.rr = e;
|
|
} else {
|
|
var n = i.rr;
|
|
if (n.K === i) {
|
|
n.K = e;
|
|
} else n.N = e;
|
|
}
|
|
e.rr = i.rr;
|
|
r.rr = e;
|
|
i.rr = e;
|
|
i.ee = 1;
|
|
return {
|
|
parentNode: r,
|
|
grandParent: i,
|
|
curNode: e
|
|
};
|
|
} else {
|
|
r.ee = 0;
|
|
if (i === this.W) {
|
|
this.W = i.te();
|
|
} else i.te();
|
|
i.ee = 1;
|
|
}
|
|
} else {
|
|
var t = i.K;
|
|
if (t && t.ee === 1) {
|
|
t.ee = r.ee = 0;
|
|
if (i === this.W) return;
|
|
i.ee = 1;
|
|
e = i;
|
|
continue;
|
|
} else if (e === r.K) {
|
|
e.ee = 0;
|
|
if (e.K) e.K.rr = i;
|
|
if (e.N) e.N.rr = r;
|
|
i.N = e.K;
|
|
r.K = e.N;
|
|
e.K = i;
|
|
e.N = r;
|
|
if (i === this.W) {
|
|
this.W = e;
|
|
this.h.rr = e;
|
|
} else {
|
|
var n = i.rr;
|
|
if (n.K === i) {
|
|
n.K = e;
|
|
} else n.N = e;
|
|
}
|
|
e.rr = i.rr;
|
|
r.rr = e;
|
|
i.rr = e;
|
|
i.ee = 1;
|
|
return {
|
|
parentNode: r,
|
|
grandParent: i,
|
|
curNode: e
|
|
};
|
|
} else {
|
|
r.ee = 0;
|
|
if (i === this.W) {
|
|
this.W = i.ne();
|
|
} else i.ne();
|
|
i.ee = 1;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
};
|
|
TreeContainer.prototype.se = function(e, r, i) {
|
|
if (this.W === undefined) {
|
|
this.M += 1;
|
|
this.W = new this.re(e, r);
|
|
this.W.ee = 0;
|
|
this.W.rr = this.h;
|
|
this.h.rr = this.W;
|
|
this.h.K = this.W;
|
|
this.h.N = this.W;
|
|
return;
|
|
}
|
|
var t;
|
|
var n = this.h.K;
|
|
var s = this.$(n.u, e);
|
|
if (s === 0) {
|
|
n.p = r;
|
|
return;
|
|
} else if (s > 0) {
|
|
n.K = new this.re(e, r);
|
|
n.K.rr = n;
|
|
t = n.K;
|
|
this.h.K = t;
|
|
} else {
|
|
var f = this.h.N;
|
|
var h = this.$(f.u, e);
|
|
if (h === 0) {
|
|
f.p = r;
|
|
return;
|
|
} else if (h < 0) {
|
|
f.N = new this.re(e, r);
|
|
f.N.rr = f;
|
|
t = f.N;
|
|
this.h.N = t;
|
|
} else {
|
|
if (i !== undefined) {
|
|
var u = i.o;
|
|
if (u !== this.h) {
|
|
var a = this.$(u.u, e);
|
|
if (a === 0) {
|
|
u.p = r;
|
|
return;
|
|
} else if (a > 0) {
|
|
var o = u.L();
|
|
var l = this.$(o.u, e);
|
|
if (l === 0) {
|
|
o.p = r;
|
|
return;
|
|
} else if (l < 0) {
|
|
t = new this.re(e, r);
|
|
if (o.N === undefined) {
|
|
o.N = t;
|
|
t.rr = o;
|
|
} else {
|
|
u.K = t;
|
|
t.rr = u;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (t === undefined) {
|
|
t = this.W;
|
|
while (true) {
|
|
var v = this.$(t.u, e);
|
|
if (v > 0) {
|
|
if (t.K === undefined) {
|
|
t.K = new this.re(e, r);
|
|
t.K.rr = t;
|
|
t = t.K;
|
|
break;
|
|
}
|
|
t = t.K;
|
|
} else if (v < 0) {
|
|
if (t.N === undefined) {
|
|
t.N = new this.re(e, r);
|
|
t.N.rr = t;
|
|
t = t.N;
|
|
break;
|
|
}
|
|
t = t.N;
|
|
} else {
|
|
t.p = r;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.M += 1;
|
|
return t;
|
|
};
|
|
TreeContainer.prototype.g = function(e, r) {
|
|
while (e) {
|
|
var i = this.$(e.u, r);
|
|
if (i < 0) {
|
|
e = e.N;
|
|
} else if (i > 0) {
|
|
e = e.K;
|
|
} else return e;
|
|
}
|
|
return e || this.h;
|
|
};
|
|
TreeContainer.prototype.clear = function() {
|
|
this.M = 0;
|
|
this.W = undefined;
|
|
this.h.rr = undefined;
|
|
this.h.K = this.h.N = undefined;
|
|
};
|
|
TreeContainer.prototype.updateKeyByIterator = function(e, r) {
|
|
var i = e.o;
|
|
if (i === this.h) {
|
|
throwIteratorAccessError();
|
|
}
|
|
if (this.M === 1) {
|
|
i.u = r;
|
|
return true;
|
|
}
|
|
if (i === this.h.K) {
|
|
if (this.$(i.m().u, r) > 0) {
|
|
i.u = r;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
if (i === this.h.N) {
|
|
if (this.$(i.L().u, r) < 0) {
|
|
i.u = r;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
var t = i.L().u;
|
|
if (this.$(t, r) >= 0) return false;
|
|
var n = i.m().u;
|
|
if (this.$(n, r) <= 0) return false;
|
|
i.u = r;
|
|
return true;
|
|
};
|
|
TreeContainer.prototype.eraseElementByPos = function(e) {
|
|
if (e < 0 || e > this.M - 1) {
|
|
throw new RangeError;
|
|
}
|
|
var r = 0;
|
|
var i = this;
|
|
this.ae(this.W, (function(t) {
|
|
if (e === r) {
|
|
i.G(t);
|
|
return true;
|
|
}
|
|
r += 1;
|
|
return false;
|
|
}));
|
|
return this.M;
|
|
};
|
|
TreeContainer.prototype.eraseElementByKey = function(e) {
|
|
if (this.M === 0) return false;
|
|
var r = this.g(this.W, e);
|
|
if (r === this.h) return false;
|
|
this.G(r);
|
|
return true;
|
|
};
|
|
TreeContainer.prototype.eraseElementByIterator = function(e) {
|
|
var r = e.o;
|
|
if (r === this.h) {
|
|
throwIteratorAccessError();
|
|
}
|
|
var i = r.N === undefined;
|
|
var t = e.iteratorType === 0;
|
|
if (t) {
|
|
if (i) e.next();
|
|
} else {
|
|
if (!i || r.K === undefined) e.next();
|
|
}
|
|
this.G(r);
|
|
return e;
|
|
};
|
|
TreeContainer.prototype.forEach = function(e) {
|
|
var r, i;
|
|
var t = 0;
|
|
try {
|
|
for (var n = __values(this), s = n.next(); !s.done; s = n.next()) {
|
|
var f = s.value;
|
|
e(f, t++, this);
|
|
}
|
|
} catch (e) {
|
|
r = {
|
|
error: e
|
|
};
|
|
} finally {
|
|
try {
|
|
if (s && !s.done && (i = n.return)) i.call(n);
|
|
} finally {
|
|
if (r) throw r.error;
|
|
}
|
|
}
|
|
};
|
|
TreeContainer.prototype.getElementByPos = function(e) {
|
|
var r, i;
|
|
if (e < 0 || e > this.M - 1) {
|
|
throw new RangeError;
|
|
}
|
|
var t;
|
|
var n = 0;
|
|
try {
|
|
for (var s = __values(this), f = s.next(); !f.done; f = s.next()) {
|
|
var h = f.value;
|
|
if (n === e) {
|
|
t = h;
|
|
break;
|
|
}
|
|
n += 1;
|
|
}
|
|
} catch (e) {
|
|
r = {
|
|
error: e
|
|
};
|
|
} finally {
|
|
try {
|
|
if (f && !f.done && (i = s.return)) i.call(s);
|
|
} finally {
|
|
if (r) throw r.error;
|
|
}
|
|
}
|
|
return t;
|
|
};
|
|
TreeContainer.prototype.getHeight = function() {
|
|
if (this.M === 0) return 0;
|
|
var traversal = function(e) {
|
|
if (!e) return 0;
|
|
return Math.max(traversal(e.K), traversal(e.N)) + 1;
|
|
};
|
|
return traversal(this.W);
|
|
};
|
|
return TreeContainer;
|
|
}(Container);
|
|
|
|
export default TreeContainer;
|
|
//# sourceMappingURL=index.js.map
|