igniteui-react-core
Version:
Ignite UI React Core.
1,545 lines • 54 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 { __extends } from "tslib";
import { Base, runOn, delegateCombine, markType, INotifyPropertyChanged_$type, PropertyChangedEventArgs, enumGetBox, Point_$type, Boolean_$type } from "./type";
import { IScrollerView_$type } from "./IScrollerView";
import { CanvasGestureDOMEventProxy } from "./CanvasGestureDOMEventProxy";
import { Brush } from "./Brush";
import { DOMExecutionContext } from "./DOMExecutionContext";
import { BaseDOMEventProxy } from "./BaseDOMEventProxy";
import { DoubleAnimator } from "./DoubleAnimator";
import { Rect } from "./Rect";
import { ScrollbarStyle_$type } from "./ScrollbarStyle";
import { truncate, isNaN_ } from "./number";
import { List$1 } from "./List$1";
import { EasingFunctions } from "./EasingFunctions";
import { ScrollerScrollingEventArgs } from "./ScrollerScrollingEventArgs";
/**
* @hidden
*/
var ScrollerView = /** @class */ /*@__PURE__*/ (function (_super) {
__extends(ScrollerView, _super);
function ScrollerView(a) {
var _this = _super.call(this) || this;
_this.i = false;
_this.k = false;
_this.ad = null;
_this.ae = null;
_this.af = null;
_this.c = null;
_this.ag = null;
_this.ak = null;
_this.b = null;
_this.ac = null;
_this.a = null;
_this.aj = null;
_this.ah = null;
_this.ai = null;
_this.al = null;
_this.e = false;
_this.d = null;
_this.j = false;
_this.h = false;
_this.y = 0;
_this.v = 0;
_this.z = -1;
_this.w = -1;
_this.g = false;
_this.f = false;
_this.x = 0;
_this.u = 0;
_this.onDocumentKeyDown = _this.onDocumentKeyDown.bind(_this);
_this.onDocumentKeyUp = _this.onDocumentKeyUp.bind(_this);
_this.onDocumentMouseDown = _this.onDocumentMouseDown.bind(_this);
_this.c = a;
return _this;
}
ScrollerView.prototype.getDefaultScrollbarBrush = function () {
return ((function () {
var $ret = new Brush();
$ret.fill = "#666666";
return $ret;
})());
};
ScrollerView.prototype.provideContainer = function (a) {
var _this = this;
if (a == null) {
if (this.ag != null) {
this.ag = null;
}
if (this.a != null) {
this.a.aq = null;
this.a.ax();
}
return;
}
this.ag = a;
this.c.executionContext = new DOMExecutionContext(this.ag);
var b = Math.round(this.ag.rootWrapper.width());
var c = Math.round(this.ag.rootWrapper.height());
this.aj = this.ag.rootWrapper;
this.aj.setStyleProperty("position", "relative");
this.ak = this.ag.createElement("div");
this.ak.setStyleProperty("position", "relative");
this.ak.setStyleProperty("width", "100%");
this.ak.setStyleProperty("height", "100%");
this.ak.setStyleProperty("overflow", "hidden");
this.ak.addClass("ig-scroll-container");
this.aj.append(this.ak);
this.ai = this.ag.createElement("div");
this.ai.setStyleProperty("position", "absolute");
this.ai.setStyleProperty("height", this.c.scrollbarSpan + "px");
this.ai.setStyleProperty("width", this.c.minScrollbarSize + "px");
this.ai.setStyleProperty("background-color", this.c.scrollbarBrush._fill);
this.ai.setStyleProperty("display", "none");
this.ai.setStyleProperty("border-radius", "5px");
this.ai.setStyleProperty("z-index", "10000");
this.ai.setStyleProperty("bottom", "0px");
this.aj.append(this.ai);
this.al = this.ag.createElement("div");
this.al.setStyleProperty("position", "absolute");
this.al.setStyleProperty("width", this.c.scrollbarSpan + "px");
this.al.setStyleProperty("height", this.c.minScrollbarSize + "px");
this.al.setStyleProperty("background-color", this.c.scrollbarBrush._fill);
this.al.setStyleProperty("display", "none");
this.al.setStyleProperty("border-radius", "5px");
this.al.setStyleProperty("z-index", "10000");
this.al.setStyleProperty("right", "0px");
this.aj.append(this.al);
this.updateScrollbarStatus(false);
this.ac = this.ak.getNativeElement();
this.a = new CanvasGestureDOMEventProxy(this.ag.rootWrapper, this.ag, true);
this.ag.rootWrapper.setProperty("tabIndex", 0);
this.ag.rootWrapper.setRawStyleProperty("outline", "none");
this.a.dc = true;
this.a.by = true;
var d = this.a;
d.onMouseWheel = delegateCombine(d.onMouseWheel, runOn(this, this.n));
var e = this.a;
e.onMouseWheelHorizontal = delegateCombine(e.onMouseWheelHorizontal, runOn(this, this.o));
var f = this.a;
f.onMouseLeave = delegateCombine(f.onMouseLeave, runOn(this, this.at));
var g = this.a;
g.onDragStarted = delegateCombine(g.onDragStarted, runOn(this, this.ar));
var h = this.a;
h.onDragDelta = delegateCombine(h.onDragDelta, runOn(this, this.aq));
var i = this.a;
i.onDragCompleted = delegateCombine(i.onDragCompleted, runOn(this, this.ap));
var j = this.a;
j.onFlingStarted = delegateCombine(j.onFlingStarted, runOn(this, this.l));
var k = this.a;
k.onContactStarted = delegateCombine(k.onContactStarted, runOn(this, this.ao));
var l = this.a;
l.onContactMoved = delegateCombine(l.onContactMoved, runOn(this, this.an));
var m = this.a;
m.onContactCompleted = delegateCombine(m.onContactCompleted, runOn(this, this.am));
this.a.ac = true;
this.a.as = runOn(this, this.t);
var n = this.a;
n.onKeyDown = delegateCombine(n.onKeyDown, runOn(this, this.m));
var o = this.a;
o.onGotFocus = delegateCombine(o.onGotFocus, runOn(this, this.as));
this.ad = runOn(this, this.onDocumentKeyDown);
this.ae = runOn(this, this.onDocumentKeyUp);
this.af = runOn(this, this.onDocumentMouseDown);
document.addEventListener("keydown", this.ad, false);
document.addEventListener("keyup", this.ae, false);
document.addEventListener("mousedown", this.af, false);
this.a.at = function (p) {
var e_ = p.originalEvent;
var q = (e_.type);
if (q == "pointerdown" && !_this.a.bu(p)) {
return false;
}
return true;
};
this.c.onViewportSizeChanged(b, c);
this.c.horizontalAnimation.u(this.ag);
this.c.verticalAnimation.u(this.ag);
this.attachNativeScroll();
};
ScrollerView.prototype.m = function (a) {
return this.c.ap(a, (this.a.bl & 4) != 0, (this.a.bl & 2) != 0);
};
ScrollerView.prototype.as = function (a) {
var b = a.originalEvent ? a.originalEvent.relatedTarget : a.relatedTarget;
var c = this.ag.rootWrapper.getNativeElement();
var d = (b instanceof Node && c.contains(b));
if (d) {
return;
}
this.c.dg(this.i, this.k);
};
ScrollerView.prototype.onDocumentKeyDown = function (a) {
var b = a;
this.i = b.shiftKey;
var c = BaseDOMEventProxy.c4(b);
if (c == 2) {
this.k = true;
}
};
ScrollerView.prototype.onDocumentKeyUp = function (a) {
var b = a;
this.i = b.shiftKey;
};
ScrollerView.prototype.onDocumentMouseDown = function (a) {
this.k = false;
};
ScrollerView.prototype.t = function (a, b, c) {
if (this.f || this.g) {
return true;
}
if (c || b) {
return true;
}
if (this.p(a, b)) {
this.c.c4();
return true;
}
else if (this.c.isHorizontalActive) {
this.c.c8();
}
if (this.q(a, b)) {
this.c.c5();
return true;
}
else if (this.c.isVerticalActive) {
this.c.c9();
}
return false;
};
ScrollerView.prototype.am = function (a, b) {
this.f = false;
this.g = false;
this.c.isDraggingVBar = false;
this.c.isDraggingHBar = false;
};
ScrollerView.prototype.an = function (a, b) {
if (this.g) {
var c = a.y - this.x;
this.x = a.y;
this.c.dj(c);
}
else if (this.f) {
var d = a.x - this.u;
this.u = a.x;
this.c.dh(d);
}
};
ScrollerView.prototype.ao = function (a, b) {
this.e = false;
this.cancelInertia();
var c = this.s(a, b);
var d = this.r(a, b);
if (c) {
this.c.isDraggingVBar = true;
this.g = true;
this.x = a.y;
this.focus();
}
else if (d) {
this.c.isDraggingHBar = true;
this.f = true;
this.u = a.x;
this.focus();
}
};
ScrollerView.prototype.r = function (a, b) {
if (!this.h) {
return false;
}
if (a.y >= this.c.viewportHeight - this.c.scrollbarSpan && a.y <= this.c.viewportHeight && a.x >= this.w - this.v / 2 && a.x <= this.w + this.v / 2) {
return true;
}
return false;
};
ScrollerView.prototype.s = function (a, b) {
if (!this.j) {
return false;
}
if (a.x >= this.c.viewportWidth - this.c.scrollbarSpan && a.x <= this.c.viewportWidth && a.y >= this.z - this.y / 2 && a.y <= this.z + this.y / 2) {
return true;
}
return false;
};
ScrollerView.prototype.p = function (a, b) {
if (!this.h) {
return false;
}
return a.y >= this.c.viewportHeight - this.c.scrollbarSpan - 40 && a.y <= this.c.viewportHeight;
};
ScrollerView.prototype.q = function (a, b) {
if (!this.j) {
return false;
}
return a.x >= this.c.viewportWidth - this.c.scrollbarSpan - 40 && a.x <= this.c.viewportWidth;
};
ScrollerView.prototype.l = function (a, b, c) {
this.e = true;
return true;
};
ScrollerView.prototype.onViewportHeightChanged = function (a) {
this.a.bo = new Rect(0, 0, 0, this.c.viewportWidth, this.c.viewportHeight);
};
ScrollerView.prototype.onViewportWidthChanged = function (a) {
this.a.bo = new Rect(0, 0, 0, this.c.viewportWidth, this.c.viewportHeight);
};
ScrollerView.prototype.onContentHeightChanged = function (a) {
if (this.ah != null) {
this.ah.setStyleProperty("height", a + "px");
}
};
ScrollerView.prototype.onContentWidthChanged = function (a) {
if (this.ah != null) {
this.ah.setStyleProperty("width", a + "px");
}
};
ScrollerView.prototype.cancelInertia = function () {
};
ScrollerView.prototype.ap = function (a) {
if (this.f || this.g) {
return;
}
this.e = false;
this.c.dd(a);
};
ScrollerView.prototype.aq = function (a) {
if (this.f || this.g) {
return;
}
this.c.de(a);
};
ScrollerView.prototype.updateScrollTop = function (a) {
this.ac.scrollTop = truncate(a);
};
ScrollerView.prototype.ar = function (a) {
if (this.f || this.g) {
return;
}
this.e = false;
this.c.df(a);
};
ScrollerView.prototype.getInitialScrollLeft = function () {
return this.ac.scrollLeft;
};
ScrollerView.prototype.getInitialScrollTop = function () {
return this.ac.scrollTop;
};
ScrollerView.prototype.n = function (a, b) {
this.e = false;
this.cancelInertia();
return this.c.ar(a, 0, b);
};
ScrollerView.prototype.o = function (a, b) {
this.e = false;
this.cancelInertia();
return this.c.ar(a, b, 0);
};
ScrollerView.prototype.at = function (a) {
if (this.c.horizontalScrollbarStatus > 0) {
this.c.c8();
}
if (this.c.verticalScrollbarStatus > 0) {
this.c.c9();
}
};
ScrollerView.prototype.updateScrollLeft = function (a) {
this.ac.scrollLeft = truncate(a);
};
ScrollerView.prototype.provideContent = function (a) {
this.ah = a;
this.ak.append(this.ah);
};
ScrollerView.prototype.requestWork = function (a) {
if (this.ag == null) {
return;
}
if (this.d == null) {
this.d = this.ag.getRequestAnimationFrame();
}
if (this.e) {
a();
}
else {
this.d(function () { return a(); });
}
};
ScrollerView.prototype.hideVScrollbar = function () {
if (this.j) {
this.j = false;
this.al.setStyleProperty("display", "none");
}
};
ScrollerView.prototype.hideHScrollbar = function () {
if (this.h) {
this.h = false;
this.ai.setStyleProperty("display", "none");
}
};
ScrollerView.prototype.updateVScrollbar = function (a, b) {
var c = false;
if (!this.j) {
c = true;
this.j = true;
this.al.setStyleProperty("display", "block");
}
if (a != this.z || c) {
this.z = a;
if (this.j) {
this.al.setRawYPosition(a - b / 2);
}
}
if (b != this.y || c) {
this.y = b;
if (this.j) {
this.al.setRawSize(this.ab(), b);
}
}
};
ScrollerView.prototype.updateHScrollbar = function (a, b) {
var c = false;
if (!this.h) {
c = true;
this.h = true;
this.ai.setStyleProperty("display", "block");
}
if (a != this.w || c) {
this.w = a;
if (this.h) {
this.ai.setRawXPosition(a - b / 2);
}
}
if (b != this.v || c) {
this.v = b;
if (this.h) {
this.ai.setRawSize(b, this.aa());
}
}
};
ScrollerView.prototype.updateScrollbarBrush = function () {
if (this.ai != null) {
this.ai.setStyleProperty("background-color", this.c.scrollbarBrush._fill);
}
if (this.al != null) {
this.al.setStyleProperty("background-color", this.c.scrollbarBrush._fill);
}
};
ScrollerView.prototype.updateScrollbarStatus = function (a) {
if (this.ai != null && this.al != null) {
switch (this.c.scrollbarStyle) {
case 0:
if (a) {
this.ai.setStyleProperty("opacity", "1");
this.al.setStyleProperty("opacity", "1");
this.ai.setRawSize(this.v, this.aa());
this.al.setRawSize(this.ab(), this.y);
}
break;
case 1:
if (a) {
this.ai.setRawSize(this.v, this.aa());
this.al.setRawSize(this.ab(), this.y);
}
this.ai.setStyleProperty("opacity", this.c.horizontalScrollbarStatus.toString());
this.al.setStyleProperty("opacity", this.c.verticalScrollbarStatus.toString());
break;
case 2:
if (a) {
this.ai.setStyleProperty("opacity", "1");
this.al.setStyleProperty("opacity", "1");
}
this.ai.setRawSize(this.v, this.aa());
this.al.setRawSize(this.ab(), this.y);
break;
case 3:
this.ai.setStyleProperty("opacity", "0");
this.al.setStyleProperty("opacity", "0");
break;
}
}
};
ScrollerView.prototype.aa = function () {
if (this.c.scrollbarStyle == 2) {
return this.c.horizontalScrollbarStatus * (this.c.scrollbarSpan - 2) + 2;
}
return this.c.scrollbarSpan;
};
ScrollerView.prototype.ab = function () {
if (this.c.scrollbarStyle == 2) {
return this.c.verticalScrollbarStatus * (this.c.scrollbarSpan - 2) + 2;
}
return this.c.scrollbarSpan;
};
ScrollerView.prototype.focus = function () {
this.ag.rootWrapper.focus(true);
};
ScrollerView.prototype.onDetachedFromUI = function () {
if (this.a != null && this.ag != null) {
this.a.bk(this.ag.rootWrapper, "");
}
if (this.ad != null) {
document.removeEventListener("keydown", this.ad, false);
this.ad = null;
}
if (this.ae != null) {
document.removeEventListener("keyup", this.ae, false);
this.ae = null;
}
if (this.af != null) {
document.removeEventListener("mousedown", this.af, false);
this.af = null;
}
};
ScrollerView.prototype.onAttachedToUI = function () {
if (this.a != null) {
this.a.av(this.ag.rootWrapper, "");
}
};
ScrollerView.prototype.attachNativeScroll = function () {
var a = this.ak.getNativeElement();
a.addEventListener("scroll", runOn(this, this.onNativeScroll));
};
ScrollerView.prototype.detachNativeScroll = function () {
var a = this.ak.getNativeElement();
a.removeEventListener("scroll", runOn(this, this.onNativeScroll));
};
ScrollerView.prototype.onNativeScroll = function (a) {
};
ScrollerView.$t = markType(ScrollerView, 'ScrollerView', Base.$, [IScrollerView_$type]);
return ScrollerView;
}(Base));
export { ScrollerView };
/**
* @hidden
*/
var Scroller = /** @class */ /*@__PURE__*/ (function (_super) {
__extends(Scroller, _super);
function Scroller() {
var _this = _super.call(this) || this;
_this.bi = 49;
_this._keyboardListener = null;
_this.ba = NaN;
_this.a4 = 49;
_this.a2 = NaN;
_this.bh = 48;
_this.a9 = NaN;
_this.a3 = 48;
_this.a1 = NaN;
_this.a7 = 0;
_this.bb = 20;
_this.be = 8;
_this.bk = 0;
_this.dz = null;
_this.x = false;
_this.a6 = 0;
_this.bm = 0;
_this.bl = 0;
_this.bg = 0;
_this.bf = 0;
_this.c = null;
_this.v = true;
_this.ab = false;
_this.a5 = 0;
_this.a0 = 0;
_this.h = 0;
_this.a8 = 0;
_this.bj = 0;
_this.j = null;
_this.k = null;
_this.bv = 0;
_this.b6 = 0;
_this.bw = 0;
_this.b7 = 0;
_this._executionContext = null;
_this._isDraggingVBar = false;
_this._isDraggingHBar = false;
_this.s = false;
_this.q = false;
_this.r = false;
_this.d1 = null;
_this.p = false;
_this.propertyChanged = null;
_this.onScrolling = null;
_this.onScrollStart = null;
_this.onScrollStop = null;
_this._isScrolling = false;
_this.bc = 0;
_this.bd = 0;
_this.w = false;
_this.az = new List$1(Boolean_$type, 0);
_this.cc = 500;
_this.cd = 0;
_this.ce = 0;
_this.o = false;
_this.z = false;
_this.n = false;
_this.y = false;
_this.t = true;
_this.u = true;
_this.dz = _this.view.getDefaultScrollbarBrush();
_this.j = new DoubleAnimator(0, 1, 400);
_this.k = new DoubleAnimator(0, 1, 400);
_this.j.b = EasingFunctions.cubicEase;
_this.k.b = EasingFunctions.cubicEase;
var a = _this.j;
a.propertyChanged = delegateCombine(a.propertyChanged, runOn(_this, _this.c2));
var b = _this.k;
b.propertyChanged = delegateCombine(b.propertyChanged, runOn(_this, _this.c3));
return _this;
}
Object.defineProperty(Scroller.prototype, "smallVerticalChange", {
get: function () {
return this.bi;
},
set: function (a) {
var b = this.bi;
this.bi = a;
if (b != this.bi) {
this.di("SmallVerticalChange", b, this.bi);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "keyboardListener", {
get: function () {
return this._keyboardListener;
},
set: function (a) {
this._keyboardListener = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "largeVerticalChange", {
get: function () {
return this.ba;
},
set: function (a) {
var b = this.ba;
this.ba = a;
if (b != this.ba) {
this.di("LargeVerticalChange", b, this.ba);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "br", {
get: function () {
return this.a4;
},
set: function (a) {
var b = this.a4;
this.a4 = a;
if (b != this.a4) {
this.di("ActualSmallVerticalChange", b, this.a4);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "bp", {
get: function () {
return this.a2;
},
set: function (a) {
var b = this.a2;
this.a2 = a;
if (b != this.a2) {
this.di("ActualLargeVerticalChange", b, this.a2);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "smallHorizontalChange", {
get: function () {
return this.bh;
},
set: function (a) {
var b = this.bh;
this.bh = a;
if (b != this.bh) {
this.di("SmallHorizontalChange", b, this.bh);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "largeHorizontalChange", {
get: function () {
return this.a9;
},
set: function (a) {
var b = this.a9;
this.a9 = a;
if (b != this.a9) {
this.di("LargeHorizontalChange", b, this.a9);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "bq", {
get: function () {
return this.a3;
},
set: function (a) {
var b = this.a3;
this.a3 = a;
if (b != this.a3) {
this.di("ActualSmallHorizontalChange", b, this.a3);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "bo", {
get: function () {
return this.a1;
},
set: function (a) {
var b = this.a1;
this.a1 = a;
if (b != this.a1) {
this.di("ActualLargeHorizontalChange", b, this.a1);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "contentWidth", {
get: function () {
return this.a7;
},
set: function (a) {
var b = this.a7;
this.a7 = a;
if (b != this.a7) {
this.di("ContentWidth", b, this.a7);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "minScrollbarSize", {
get: function () {
return this.bb;
},
set: function (a) {
var b = this.bb;
this.bb = a;
if (b != this.bb) {
this.di("MinScrollbarSize", b, this.bb);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "scrollbarSpan", {
get: function () {
return this.be;
},
set: function (a) {
var b = this.be;
this.be = a;
if (b != this.be) {
this.di("ScrollbarSpan", b, this.be);
}
},
enumerable: false,
configurable: true
});
Scroller.prototype.ap = function (a, b, c) {
switch (a) {
case 11: return this.as(b, c);
case 10: return this.at(b, c);
case 17: return this.ai(b, c);
case 15: return this.ax(b, c);
case 14: return this.aq(b, c);
case 16: return this.au(b, c);
case 13: return this.an(b, c);
case 12: return this.aj(b, c);
case 2: return this.aw(b, c);
case 3: return this.ak(b, c);
case 8: return this.al();
case 57: return this.am();
case 9: return this.av(b, c);
default: return this.ao(a, b, c);
}
return false;
};
Scroller.prototype.av = function (a, b) {
if (this.keyboardListener != null) {
if (this.keyboardListener.onSpace(a, b)) {
return true;
}
}
return false;
};
Scroller.prototype.am = function () {
if (this.keyboardListener != null) {
if (this.keyboardListener.onF2()) {
return true;
}
}
return false;
};
Scroller.prototype.al = function () {
if (this.keyboardListener != null) {
if (this.keyboardListener.onEscape()) {
return true;
}
}
return false;
};
Scroller.prototype.aw = function (a, b) {
if (this.keyboardListener != null) {
if (this.keyboardListener.onTab(a, b)) {
return true;
}
}
return false;
};
Scroller.prototype.dg = function (a, b) {
if (this.keyboardListener != null) {
this.keyboardListener.onGotFocus(a, b);
}
};
Scroller.prototype.aj = function (a, b) {
if (this.keyboardListener != null) {
if (this.keyboardListener.onEnd(a, b)) {
return true;
}
}
if (this.scrollTop + this.viewportHeight >= this.contentHeight) {
return false;
}
this.dq(0, this.contentHeight - this.viewportHeight - this.scrollTop);
return false;
};
Scroller.prototype.an = function (a, b) {
if (this.keyboardListener != null) {
if (this.keyboardListener.onHome(a, b)) {
return true;
}
}
if (this.scrollTop <= 0) {
return false;
}
this.dq(0, -this.scrollTop);
return false;
};
Scroller.prototype.au = function (a, b) {
if (this.keyboardListener != null) {
if (this.keyboardListener.onRightArrow(a, b)) {
return true;
}
}
if (this.scrollLeft + this.viewportWidth >= this.contentWidth) {
return false;
}
this.dq(this.bq, 0);
return true;
};
Scroller.prototype.aq = function (a, b) {
if (this.keyboardListener != null) {
if (this.keyboardListener.onLeftArrow(a, b)) {
return true;
}
}
if (this.scrollLeft <= 0) {
return false;
}
this.dq(this.bq * -1, 0);
return true;
};
Scroller.prototype.ax = function (a, b) {
if (this.keyboardListener != null) {
if (this.keyboardListener.onUpArrow(a, b)) {
return true;
}
}
if (this.scrollTop <= 0) {
return false;
}
this.dq(0, this.br * -1);
return true;
};
Scroller.prototype.ai = function (a, b) {
if (this.keyboardListener != null) {
if (this.keyboardListener.onDownArrow(a, b)) {
return true;
}
}
if (this.scrollTop + this.viewportHeight >= this.contentHeight) {
return false;
}
this.dq(0, this.br);
return true;
};
Scroller.prototype.at = function (a, b) {
if (this.keyboardListener != null) {
if (this.keyboardListener.onPageUp(a, b)) {
return true;
}
}
if (this.scrollTop < 0) {
return false;
}
this.dq(0, this.bp * -1);
return true;
};
Scroller.prototype.as = function (a, b) {
if (this.keyboardListener != null) {
if (this.keyboardListener.onPageDown(a, b)) {
return true;
}
}
if (this.scrollTop + this.viewportHeight >= this.contentHeight) {
return false;
}
this.dq(0, this.bp);
return true;
};
Scroller.prototype.ak = function (a, b) {
if (this.keyboardListener != null) {
if (this.keyboardListener.onEnter(a, b)) {
return true;
}
}
return false;
};
Scroller.prototype.ao = function (a, b, c) {
if (this.keyboardListener != null) {
return this.keyboardListener.onKeyDown(a, b, c);
}
return false;
};
Object.defineProperty(Scroller.prototype, "verticalTrackStartInset", {
get: function () {
return this.bk;
},
set: function (a) {
var b = this.bk;
this.bk = a;
if (b != this.bk) {
this.di("VerticalTrackStartInset", b, this.bk);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "scrollbarBrush", {
get: function () {
return this.dz;
},
set: function (a) {
var b = this.dz;
this.dz = a;
if (b != this.dz) {
this.di("ScrollbarBrush", b, this.dz);
}
},
enumerable: false,
configurable: true
});
Scroller.prototype.di = function (a, b, c) {
if (this.propertyChanged != null) {
this.propertyChanged(this, new PropertyChangedEventArgs(a));
}
this.dl(a, b, c);
};
Object.defineProperty(Scroller.prototype, "ay", {
get: function () {
return this.x;
},
set: function (a) {
this.x = a;
if (!this.x) {
this.view.updateScrollTop(this.scrollTop);
this.view.updateScrollLeft(this.scrollLeft);
}
},
enumerable: false,
configurable: true
});
Scroller.prototype.dl = function (a, b, c) {
switch (a) {
case "ContentWidth":
this.view.onContentWidthChanged(this.contentWidth);
var d = c;
var e = b;
if (d < e && this.scrollLeft + this.viewportWidth >= d) {
this.dr(d - (this.scrollLeft + this.viewportWidth), 0);
}
this.dw();
break;
case "ContentHeight":
this.view.onContentHeightChanged(this.contentHeight);
var f = c;
var g = b;
if (f < g && this.scrollTop > 0 && this.scrollTop + this.viewportHeight >= f) {
this.dr(0, f - (this.scrollTop + this.viewportHeight));
}
this.dy();
break;
case "ScrollTop":
if (!this.ay) {
this.view.updateScrollTop(this.scrollTop);
}
break;
case "ScrollLeft":
if (!this.ay) {
this.view.updateScrollLeft(this.scrollLeft);
}
break;
case "ViewportWidth":
this.view.onViewportWidthChanged(this.viewportWidth);
if (isNaN_(this.largeVerticalChange)) {
this.bo = this.viewportWidth;
}
if (this.contentWidth > 0 && this.scrollLeft + this.viewportWidth > this.contentWidth) {
this.dr(this.contentWidth - this.viewportWidth - this.scrollLeft, 0);
}
this.dw();
if (this.view.getInitialScrollLeft() != this.scrollLeft) {
this.view.updateScrollLeft(this.scrollLeft);
}
break;
case "ViewportHeight":
this.view.onViewportHeightChanged(this.viewportHeight);
if (isNaN_(this.largeVerticalChange)) {
this.bp = this.viewportHeight;
}
this.dy();
if (this.view.getInitialScrollTop() != this.scrollTop) {
this.view.updateScrollTop(this.scrollTop);
}
break;
case "ScrollbarBrush":
this.view.updateScrollbarBrush();
break;
case "ScrollbarSpan":
case "MinScrollbarSize":
case "VerticalTrackStartInset":
this.dy();
this.dw();
break;
case "HorizontalScrollbarStatus":
case "VerticalOpacity":
this.view.updateScrollbarStatus(false);
break;
case "ScrollbarStyle":
this.view.updateScrollbarStatus(true);
break;
}
};
Object.defineProperty(Scroller.prototype, "contentHeight", {
get: function () {
return this.a6;
},
set: function (a) {
var b = this.a6;
this.a6 = a;
if (b != this.a6) {
this.di("ContentHeight", b, this.a6);
}
},
enumerable: false,
configurable: true
});
Scroller.prototype.dj = function (a) {
var b = Math.max(this.minScrollbarSize, this.actualVerticalScrollbarHeight);
var c = this.verticalTrackStartInset + (b / 2);
var d = this.viewportHeight - (b / 2);
var e = a / (d - c);
var f = e * (this.contentHeight - this.viewportHeight);
this.dq(0, f);
};
Scroller.prototype.dh = function (a) {
var b = Math.max(this.minScrollbarSize, this.actualHorizontalScrollbarWidth);
var c = 0 + (b / 2);
var d = this.viewportWidth - (b / 2);
var e = a / (d - c);
var f = e * (this.contentWidth - this.viewportWidth);
this.dq(f, 0);
};
Scroller.prototype.onViewportSizeChanged = function (a, b, c) {
if (c === void 0) {
c = false;
}
var d = this.bm;
var e = this.bl;
this.bm = a;
this.bl = b;
if (!isNaN_(this.contentWidth) && this.contentWidth != 0 && this.scrollLeft > 0 && this.scrollLeft + this.bm > this.contentWidth) {
this.dq(0, 0);
}
if (!isNaN_(this.contentHeight) && this.contentHeight != 0 && this.scrollTop > 0 && this.scrollTop + this.bl > this.contentHeight) {
this.dq(0, 0);
}
if (c && (d != a || e != b)) {
this.di("ViewportWidth", d, a);
this.di("ViewportHeight", e, b);
}
};
Object.defineProperty(Scroller.prototype, "viewportWidth", {
get: function () {
return this.bm;
},
set: function (a) {
var b = this.bm;
this.bm = a;
if (b != this.bm) {
this.di("ViewportWidth", b, this.bm);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "viewportHeight", {
get: function () {
return this.bl;
},
set: function (a) {
var b = this.bl;
this.bl = a;
if (b != this.bl) {
this.di("ViewportHeight", b, this.bl);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "scrollTop", {
get: function () {
return this.bg;
},
set: function (a) {
var b = this.bg;
this.bg = a;
if (b != this.bg) {
this.di("ScrollTop", b, this.bg);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "scrollLeft", {
get: function () {
return this.bf;
},
set: function (a) {
var b = this.bf;
this.bf = a;
if (b != this.bf) {
this.di("ScrollLeft", b, this.bf);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "view", {
get: function () {
if (this.c == null) {
this.c = new ScrollerView(this);
}
return this.c;
},
set: function (a) {
this.c = a;
},
enumerable: false,
configurable: true
});
Scroller.prototype.provideContainer = function (a) {
this.view.provideContainer(a);
this.bg = this.view.getInitialScrollTop();
this.bf = this.view.getInitialScrollLeft();
this.dw();
this.dy();
};
Scroller.prototype.onDetachedFromUI = function () {
this.view.onDetachedFromUI();
};
Scroller.prototype.onAttachedToUI = function () {
this.view.onAttachedToUI();
};
Scroller.prototype.provideContent = function (a) {
this.view.provideContent(a);
};
Scroller.prototype.ar = function (a, b, c) {
this.r = false;
this.q = false;
this.s = false;
this.view.cancelInertia();
if (this.keyboardListener != null) {
this.keyboardListener.onWheel();
}
this.dq(b, c);
return true;
};
Object.defineProperty(Scroller.prototype, "lockScrollDirection", {
get: function () {
return this.v;
},
set: function (a) {
this.v = true;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "actualVerticalScrollbarHeight", {
get: function () {
return this.a5;
},
set: function (a) {
var b = this.a5;
this.a5 = a;
if (b != this.a5) {
this.di("ActualVerticalScrollbarHeight", b, this.a5);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "actualHorizontalScrollbarWidth", {
get: function () {
return this.a0;
},
set: function (a) {
var b = this.a0;
this.a0 = a;
if (b != this.a0) {
this.di("ActualHorizontalScrollbarWidth", b, this.a0);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "scrollbarStyle", {
get: function () {
return this.h;
},
set: function (a) {
var b = this.h;
this.h = a;
if (b != this.h) {
this.di("ScrollbarStyle", enumGetBox(ScrollbarStyle_$type, b), enumGetBox(ScrollbarStyle_$type, this.h));
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "horizontalScrollbarStatus", {
get: function () {
return this.a8;
},
set: function (a) {
var b = this.a8;
this.a8 = a;
if (b != this.a8) {
this.di("HorizontalScrollbarStatus", b, this.a8);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "verticalScrollbarStatus", {
get: function () {
return this.bj;
},
set: function (a) {
var b = this.bj;
this.bj = a;
if (b != this.bj) {
this.di("VerticalOpacity", b, this.bj);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "horizontalAnimation", {
get: function () {
return this.j;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "verticalAnimation", {
get: function () {
return this.k;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "executionContext", {
get: function () {
return this._executionContext;
},
set: function (a) {
this._executionContext = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "isVerticalActive", {
get: function () {
return this.y;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "isHorizontalActive", {
get: function () {
return this.n;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "isDraggingVBar", {
get: function () {
return this._isDraggingVBar;
},
set: function (a) {
this._isDraggingVBar = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Scroller.prototype, "isDraggingHBar", {
get: function () {
return this._isDraggingHBar;
},
set: function (a) {
this._isDraggingHBar = a;
},
enumerable: false,
configurable: true
});
Scroller.prototype.focus = function () {
this.view.focus();
};
Scroller.prototype.df = function (a) {
this.view.focus();
this.s = false;
this.q = false;
this.r = false;
this.p = true;
this.d1 = { $type: Point_$type, x: a.x, y: a.y };
};
Scroller.prototype.de = function (a) {
if (this.p) {
var b = a.y - this.d1.y;
var c = a.x - this.d1.x;
if (this.lockScrollDirection && !this.r) {
this.r = true;
if (b > 0 || c > 0) {
if (b > c) {
this.s = true;
}
else {
this.s = true;
}
}
}
this.d1 = { $type: Point_$type, x: a.x, y: a.y };
this.dq(-c, -b);
}
};
Object.defineProperty(Scroller.prototype, "isScrolling", {
get: function () {
return this._isScrolling;
},
set: function (a) {
this._isScrolling = a;
},
enumerable: false,
configurable: true
});
Scroller.prototype.scrollTo = function (a, b) {
this.view.detachNativeScroll();
this.bc = a - this.scrollLeft;
this.bd = b - this.scrollTop;
this.dp();
};
Scroller.prototype.dq = function (a, b) {
this.view.detachNativeScroll();
this.bc += a;
this.bd += b;
this.dp();
};
Scroller.prototype.dr = function (a, b) {
this.view.detachNativeScroll();
this.bc += a;
this.bd += b;
this.dv();
};
Scroller.prototype.dp = function () {
if (this.w) {
return;
}
this.w = true;
this.view.requestWork(runOn(this, this.dv));
};
Scroller.prototype.dv = function () {
var _this = this;
this.w = false;
var a = this.bc;
var b = this.bd;
this.bc = 0;
this.bd = 0;
if (this.r) {
if (this.s) {
a = 0;
}
if (this.q) {
b = 0;
}
}
if (a != 0) {
this.t = false;
this.c4();
this.c8();
this.t = true;
}
if (b != 0) {
this.u = false;
this.c5();
this.c9();
this.u = true;
}
var c = Math.round(this.scrollTop + b);
var d = Math.round(this.scrollLeft + a);
if (c < 0) {
c = 0;
if (b == 0) {
this.view.cancelInertia();
}
}
if (d < 0) {
d = 0;
if (a == 0) {
this.view.cancelInertia();
}
}
if (c + this.viewportHeight > this.contentHeight) {
c = this.contentHeight - this.viewportHeight;
if (c < 0) {
c = 0;
}
if (a == 0) {
this.view.cancelInertia();
}
}
if (d + this.viewportWidth > this.contentWidth) {
d = this.contentWidth - this.viewportWidth;
if (d < 0) {
d = 0;
}
if (b == 0) {
this.view.cancelInertia();
}
}
b = c - this.scrollTop;
a = d - this.scrollLeft;
if (b != 0 || a != 0) {
try {
this.ay = true;
this.ab = true;
this.scrollTop = c;
this.scrollLeft = d;
this.dy();
this.dw();
this.ab = false;
if (!this.isScrolling) {
this.isScrolling = true;
if (this.onScrollStart != null) {
this.onScrollStart(this, ((function () {
var $ret = new ScrollerScrollingEventArgs();
$ret.deltaX = a;
$ret.deltaY = b;
return $ret;
})()));
}
}
if (this.onScrolling != null) {
this.onScrolling(this, ((function () {
var $ret = new ScrollerScrollingEventArgs();
$ret.deltaX = a;
$ret.deltaY = b;
return $ret;
})()));
}
if (this.az.count > 0) {
this.az._inner[this.az.count - 1] = false;
}
this.az.add(true);
this.executionContext.executeDelayed(function () {
if (_this.az._inner[0]) {
if (_this.onScrollStop != null) {
_this.onScrollStop(_this, ((function () {
var $ret = new ScrollerScrollingEventArgs();
$ret.deltaX = a;
$ret.deltaY = b;
return $ret;
})()));
}
_this.isScrolling = false;
_this.view.attachNativeScroll();
}
_this.az.removeAt(0);
}, 50);
}
finally {
this.ay = false;
}
}
};
Scroller.prototype.dy = function () {
if (isNaN_(this.contentHeight)) {
return;
}
this.dx(this.contentHeight, this.viewportHeight, this.scrollTop, true);
};
Scroller.prototype.dw = function () {
if (isNaN_(this.contentWidth)) {
return;
}
this.dx(this.contentWidth, this.viewportWidth, this.scrollLeft, false);
};
Scroller.prototype.aa = function (a, b) {
if (Math.abs(a - b) <= 2) {
return true;
}
return false;
};
Scroller.prototype.dx = function (a, b, c, d) {
if (b == 0 || a == 0) {
return;
}
var e = Math.round((b / a) * b);
var f = d ? this.verticalTrackStartInset : 0;
e = e - f;
if (e < this.minScrollbarSize) {
e = this.minScrollbarSize;
}
if (e >= (b - f) || this.aa(e, b - f)) {
if (d) {
this.view.hideVScrollbar();
}
else {
this.view.hideHScrollbar();
}
return;
}
var g = f + (e / 2);
var h = b - (e / 2);
var i = c / (a - b);
var j = Math.roun