igniteui-react-core
Version:
Ignite UI React Core.
605 lines (604 loc) • 20.3 kB
JavaScript
/*
THIS INFRAGISTICS ULTIMATE SOFTWARE LICENSE AGREEMENT ("AGREEMENT") LOCATED HERE:
https://www.infragistics.com/legal/license/igultimate-la
https://www.infragistics.com/legal/license/igultimate-eula
GOVERNS THE LICENSING, INSTALLATION AND USE OF INFRAGISTICS SOFTWARE. BY DOWNLOADING AND/OR INSTALLING AND USING INFRAGISTICS SOFTWARE: you are indicating that you have read and understand this Agreement, and agree to be legally bound by it on behalf of the yourself and your company.
*/
import { Base, runOn, Boolean_$type, fromEnum, markType } from "./type";
import { IHighlightingManager_$type } from "./IHighlightingManager";
import { List$1 } from "./List$1";
import { HighlightingInfo } from "./HighlightingInfo";
import { HighlightingInfoComparer } from "./HighlightingInfoComparer";
import { Dictionary$2 } from "./Dictionary$2";
import { HighlightingData } from "./HighlightingData";
import { HighlightingState } from "./HighlightingState";
/**
* @hidden
*/
export let HighlightingManager = /*@__PURE__*/ (() => {
class HighlightingManager extends Base {
get executionContext() {
return this._executionContext;
}
set executionContext(a) {
this._executionContext = a;
}
get ensureAnimator() {
return this._ensureAnimator;
}
set ensureAnimator(a) {
this._ensureAnimator = a;
}
get maxHighlightingProgress() {
return this._maxHighlightingProgress;
}
set maxHighlightingProgress(a) {
this._maxHighlightingProgress = a;
}
get sumHighlightingProgress() {
return this._sumHighlightingProgress;
}
set sumHighlightingProgress(a) {
this._sumHighlightingProgress = a;
}
get maxMarkerHighlightingProgress() {
return this._maxMarkerHighlightingProgress;
}
set maxMarkerHighlightingProgress(a) {
this._maxMarkerHighlightingProgress = a;
}
get sumMarkerHighlightingProgress() {
return this._sumMarkerHighlightingProgress;
}
set sumMarkerHighlightingProgress(a) {
this._sumMarkerHighlightingProgress = a;
}
get totalHighlightingProgress() {
return this._totalHighlightingProgress;
}
set totalHighlightingProgress(a) {
this._totalHighlightingProgress = a;
}
get totalHighWaterMark() {
return this._totalHighWaterMark;
}
set totalHighWaterMark(a) {
this._totalHighWaterMark = a;
}
get inProgress() {
return this._inProgress;
}
set inProgress(a) {
this._inProgress = a;
}
get retainMainShapes() {
return this._retainMainShapes;
}
set retainMainShapes(a) {
this._retainMainShapes = a;
}
get isExclusiveHighlight() {
return this._isExclusiveHighlight;
}
set isExclusiveHighlight(a) {
this._isExclusiveHighlight = a;
}
constructor() {
super();
this._executionContext = null;
this._ensureAnimator = null;
this._maxHighlightingProgress = 0;
this._sumHighlightingProgress = 0;
this._maxMarkerHighlightingProgress = 0;
this._sumMarkerHighlightingProgress = 0;
this._totalHighlightingProgress = 0;
this._totalHighWaterMark = 0;
this._inProgress = false;
this._retainMainShapes = false;
this._isExclusiveHighlight = false;
this.n = 0;
this.p = 0;
this.o = 0;
this.d = new Dictionary$2(HighlightingInfo.$, HighlightingInfo.$, 2, new HighlightingInfoComparer());
this.h = new List$1(HighlightingInfo.$, 0);
this.g = new Dictionary$2(HighlightingInfo.$, HighlightingInfo.$, 2, new HighlightingInfoComparer());
this.i = new List$1(HighlightingInfo.$, 0);
this.b = false;
this.c = false;
this.r = 0;
this.q = 0;
this.k = new List$1(HighlightingInfo.$, 0);
this.m = 0;
this._dirtyContexts = null;
this._allDirty = false;
this.e = new Dictionary$2(Base.$, Boolean_$type, 0);
this.f = new Dictionary$2(Base.$, HighlightingData.$, 0);
this.j = new List$1(Base.$, 0);
this.dirtyContexts = new List$1(Base.$, 0);
this.q = 200;
this.n = 0;
}
get l() {
return this.h;
}
startHighlight(a) {
if (a == null) {
return;
}
this.a(a);
this.inProgress = true;
if (!this.d.containsKey(a)) {
a.a = HighlightingState.inward;
this.d.item(a, a);
this.h.add(a);
}
else {
a = this.d.item(a);
}
if (a.a == HighlightingState.outward) {
a.a = HighlightingState.inward;
}
}
a(a) {
let b = null;
if (this.g.containsKey(a)) {
a = this.g.item(a);
this.g.removeItem(a);
this.i.remove(a);
b = a;
}
let c = this.k;
for (let d = 0; d < this.i.count; d++) {
let e = this.i._inner[d];
if (e.c && a.c && a.i == e.i) {
if (b == null) {
this.g.removeItem(e);
this.i.remove(e);
let f = this.d.item(e);
this.d.removeItem(f);
this.h.remove(f);
f.g = a.g;
f.f = a.f;
f.b = a.b;
this.d.item(f, f);
this.h.add(f);
b = f;
}
else {
c.add(e);
}
}
if (this.isExclusiveHighlight && e.i != a.i) {
c.add(e);
}
if (e.i == a.i && e.d == a.d && !e.c && (e.g != a.g || e.f != a.f)) {
c.add(e);
}
}
for (let g = 0; g < c.count; g++) {
this.i.remove(c._inner[g]);
this.g.removeItem(c._inner[g]);
this.t(c._inner[g]);
}
c.clear();
if (b != null) {
return b;
}
return a;
}
endHighlight(a) {
if (a == null) {
return;
}
if (!this.d.containsKey(a)) {
return;
}
else {
a = this.d.item(a);
}
this.u(a);
}
u(a) {
if (this.g.containsKey(a)) {
let b = this.g.item(a);
}
else {
this.g.addItem(a, a);
this.i.add(a);
a.h = this.executionContext.getCurrentRelativeTime();
}
this.b = true;
if (!this.c) {
this.c = true;
this.executionContext.executeDelayed(runOn(this, this.s), this.q);
}
}
s() {
this.c = false;
if (!this.b) {
return;
}
let a = this.k;
let b = 0;
let c = this.executionContext.getCurrentRelativeTime();
for (let d = 0; d < this.i.count; d++) {
let e = this.i._inner[d];
if (c - e.h >= this.q) {
a.add(e);
}
else {
b = Math.max(b, this.q - (c - e.h));
}
}
for (let f = 0; f < a.count; f++) {
this.i.remove(a._inner[f]);
this.g.removeItem(a._inner[f]);
this.t(a._inner[f]);
}
if (a.count > 0) {
if (this.ensureAnimator != null) {
this.ensureAnimator();
}
}
a.clear();
if (b > 0) {
this.b = true;
this.c = true;
this.executionContext.executeDelayed(runOn(this, this.s), b);
}
}
t(a) {
if (a.a == HighlightingState.inward) {
a.a = HighlightingState.outward;
}
if (a.a == 2) {
a.a = HighlightingState.outward;
a.e = 1;
}
}
clear() {
this.i.clear();
this.g.clear();
this.b = false;
this.h.clear();
this.d.clear();
this.maxHighlightingProgress = 0;
this.sumHighlightingProgress = 0;
this.maxMarkerHighlightingProgress = 0;
this.sumMarkerHighlightingProgress = 0;
this.totalHighlightingProgress = 0;
}
getHighlightingInfo(a, b, c, d, e) {
for (let f = 0; f < this.h.count; f++) {
let g = this.h._inner[f];
let h = g.g;
let i = g.f;
if (((c >= h && d <= i) || g.c) && g.d == e && a == g.i && (g.a == HighlightingState.inward || g.a == 2)) {
return g;
}
}
for (let j = 0; j < this.h.count; j++) {
let k = this.h._inner[j];
let l = k.g;
let m = k.f;
if (((c >= l && d <= m) || k.c) && k.d == e && a == k.i && (k.a == HighlightingState.outward)) {
return k;
}
}
return null;
}
get dirtyContexts() {
return this._dirtyContexts;
}
set dirtyContexts(a) {
this._dirtyContexts = a;
}
get allDirty() {
return this._allDirty;
}
set allDirty(a) {
this._allDirty = a;
}
tick(a) {
this.e.clear();
this.dirtyContexts.clear();
this.f.clear();
this.allDirty = false;
let b = 0;
if (this.m > a) {
b = (1 - this.m) + a;
}
else {
b = a - this.m;
}
this.m = a;
let c = false;
let d = new List$1(HighlightingInfo.$, 0);
this.maxHighlightingProgress = 0;
this.sumHighlightingProgress = 0;
this.maxMarkerHighlightingProgress = 0;
this.sumMarkerHighlightingProgress = 0;
this.totalHighlightingProgress = 0;
let e = false;
let f = false;
let g = false;
let h = false;
let i = false;
let j = false;
let k = 0;
let l = 0;
let m = 0;
let n = 0;
let o = 0;
let p = 0;
for (let q = 0; q < this.h.count; q++) {
let r = this.h._inner[q];
if (r.a == 2) {
if (r.d) {
h = true;
}
else {
if (!this.isExclusiveHighlight && !r.c) {
j = true;
}
else {
i = true;
}
}
}
if (r.a == HighlightingState.inward) {
if (r.d) {
e = true;
m = m + Math.min(1 - r.e, b);
}
else {
if (!this.isExclusiveHighlight && !r.c) {
g = true;
o = o + Math.min(1 - r.e, b);
}
else {
f = true;
k = k + Math.min(1 - r.e, b);
}
}
}
if (r.a == HighlightingState.outward) {
if (r.d) {
n = n + Math.min(r.e, b);
}
else {
if (!this.isExclusiveHighlight && !r.c) {
p = p + Math.min(r.e, b);
}
else {
l = l + Math.min(r.e, b);
}
}
}
}
let s = 1;
let t = 1;
let u = 1;
if (f && l > k) {
let v = l - k;
s = k / l;
}
if (e && n > m) {
let w = n - m;
t = m / n;
}
if (g && p > o) {
let x = p - o;
u = o / p;
}
else {
u = s;
}
if (f || i) {
this.n += b;
if (this.n > 1) {
this.n = 1;
}
}
else {
this.n -= b;
if (this.n < 0) {
this.n = 0;
}
}
if (e || h) {
this.p += b;
if (this.p > 1) {
this.p = 1;
}
}
else {
this.p -= b;
if (this.p < 0) {
this.p = 0;
}
}
if (g || j) {
this.o += b;
if (this.o > 1) {
this.o = 1;
}
}
else {
this.o -= b;
if (this.o < 0) {
this.o = 0;
}
}
let y;
for (let z = 0; z < this.h.count; z++) {
let aa = this.h._inner[z];
if (!this.isContextValid(aa.i)) {
d.add(aa);
continue;
}
y = b;
if (aa.a == HighlightingState.outward) {
y = Math.min(y, aa.e);
if (aa.d) {
y = y * t;
}
else {
if (aa.c) {
y = y * s;
}
else {
y = y * u;
}
}
aa.e = aa.e - y;
}
else {
aa.e = aa.e + y;
}
if (aa.a == 2) {
aa.e = 1;
}
if (aa.e > 1) {
aa.e = 1;
}
if (aa.e < 0) {
aa.e = 0;
}
if (aa.d) {
this.maxMarkerHighlightingProgress = Math.max(aa.e, this.maxMarkerHighlightingProgress);
this.sumMarkerHighlightingProgress = this.sumMarkerHighlightingProgress + aa.e;
}
else {
this.maxHighlightingProgress = Math.max(aa.e, this.maxHighlightingProgress);
this.sumHighlightingProgress = this.sumHighlightingProgress + aa.e;
}
if (aa.a != HighlightingState.outward && aa.e != 1) {
c = true;
}
if (aa.a == HighlightingState.outward && aa.e != 0) {
c = true;
}
if (aa.e == 1 && aa.a == HighlightingState.inward) {
aa.a = 2;
}
if (aa.e == 0 && aa.a == HighlightingState.outward) {
d.add(aa);
}
if (this.isCrossContextHighlight(aa.i)) {
this.allDirty = true;
}
else {
if (!this.e.containsKey(aa.i)) {
this.e.addItem(aa.i, true);
this.dirtyContexts.add1(aa.i);
}
}
}
for (let ab of fromEnum(d)) {
this.d.removeItem(ab);
this.h.remove(ab);
}
if (this.d.count == 0) {
this.inProgress = false;
this.maxHighlightingProgress = 0;
this.sumHighlightingProgress = 0;
this.maxMarkerHighlightingProgress = 0;
this.sumMarkerHighlightingProgress = 0;
this.totalHighlightingProgress = 0;
this.n = 0;
this.totalHighWaterMark = 0;
this.o = 0;
this.p = 0;
}
this.j.clear();
for (let ac = 0; ac < this.h.count; ac++) {
let ad = this.h._inner[ac];
let ae = null;
if (this.f.containsKey(ad.i)) {
ae = this.f.item(ad.i);
}
else {
ae = new HighlightingData();
ae.a = 0;
ae.d = 0;
ae.e = ad.i;
ae.b = 0;
ae.c = 0;
this.f.addItem(ad.i, ae);
this.j.add1(ad.i);
}
if (ad.d) {
ae.b += ad.e;
}
else {
if (ad.c) {
if (ad.b) {
ae.c += ad.e;
}
else {
ae.d += ad.e;
}
}
else {
ae.a += ad.e;
}
}
}
if (this.isExclusiveHighlight) {
this.totalHighlightingProgress = Math.max(this.sumHighlightingProgress, this.sumMarkerHighlightingProgress);
this.totalHighWaterMark = Math.max(this.n, Math.max(this.p, this.o));
}
else {
let af = 0;
let ag = 0;
let ah = 0;
let ai = 0;
let aj = 0;
let ak = 0;
let al = 0;
for (let am = 0; am < this.j.count; am++) {
let an = this.f.item(this.j._inner[am]);
if (an.a > 0) {
ak++;
}
if (an.b > 0) {
al++;
}
if (an.d > 0) {
ah++;
}
af += an.a;
ag += an.d;
aj += an.c;
ai += an.b;
}
if (ak > 0) {
af = af / ak;
}
if (al > 0) {
ai = ai / al;
}
if (this.retainMainShapes) {
if (ah > 0) {
ag = ag / ah;
}
}
this.totalHighlightingProgress = Math.max(aj, Math.max(af, Math.max(ag, ai)));
this.totalHighWaterMark = Math.max(this.n, Math.max(this.p, this.o));
}
if (!c) {
this.m = 0;
}
return c;
}
isCrossContextHighlight(a) {
return false;
}
isContextValid(a) {
return a != null;
}
}
HighlightingManager.$t = /*@__PURE__*/ markType(HighlightingManager, 'HighlightingManager', Base.$, [IHighlightingManager_$type]);
return HighlightingManager;
})();