UNPKG

igniteui-angular-core

Version:

Ignite UI Angular Core logic used in multiple UI components.

1,508 lines 53.4 kB
/* 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 { 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.c = null; _this.ab = null; _this.af = null; _this.b = null; _this.aa = null; _this.a = null; _this.ae = null; _this.ac = null; _this.ad = null; _this.ag = null; _this.e = false; _this.d = null; _this.i = false; _this.h = false; _this.w = 0; _this.t = 0; _this.x = -1; _this.u = -1; _this.g = false; _this.f = false; _this.v = 0; _this.s = 0; _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.ab != null) { this.ab = null; } if (this.a != null) { this.a.ao = null; this.a.av(); } return; } this.ab = a; this.c.executionContext = new DOMExecutionContext(this.ab); var b = Math.round(this.ab.rootWrapper.width()); var c = Math.round(this.ab.rootWrapper.height()); this.ae = this.ab.rootWrapper; this.ae.setStyleProperty("position", "relative"); this.af = this.ab.createElement("div"); this.af.setStyleProperty("position", "relative"); this.af.setStyleProperty("width", "100%"); this.af.setStyleProperty("height", "100%"); this.af.setStyleProperty("overflow", "hidden"); this.ae.append(this.af); this.ad = this.ab.createElement("div"); this.ad.setStyleProperty("position", "absolute"); this.ad.setStyleProperty("height", this.c.scrollbarSpan + "px"); this.ad.setStyleProperty("width", this.c.minScrollbarSize + "px"); this.ad.setStyleProperty("background-color", this.c.scrollbarBrush._fill); this.ad.setStyleProperty("display", "none"); this.ad.setStyleProperty("border-radius", "5px"); this.ad.setStyleProperty("z-index", "10000"); this.ad.setStyleProperty("bottom", "0px"); this.ae.append(this.ad); this.ag = this.ab.createElement("div"); this.ag.setStyleProperty("position", "absolute"); this.ag.setStyleProperty("width", this.c.scrollbarSpan + "px"); this.ag.setStyleProperty("height", this.c.minScrollbarSize + "px"); this.ag.setStyleProperty("background-color", this.c.scrollbarBrush._fill); this.ag.setStyleProperty("display", "none"); this.ag.setStyleProperty("border-radius", "5px"); this.ag.setStyleProperty("z-index", "10000"); this.ag.setStyleProperty("right", "0px"); this.ae.append(this.ag); this.updateScrollbarStatus(false); this.aa = this.af.getNativeElement(); this.a = new CanvasGestureDOMEventProxy(this.ab.rootWrapper, this.ab, true); this.ab.rootWrapper.setProperty("tabIndex", 1000); this.ab.rootWrapper.setRawStyleProperty("outline", "none"); this.a.c8 = true; this.a.bv = true; var d = this.a; d.onMouseWheel = delegateCombine(d.onMouseWheel, runOn(this, this.l)); var e = this.a; e.onMouseWheelHorizontal = delegateCombine(e.onMouseWheelHorizontal, runOn(this, this.m)); var f = this.a; f.onMouseLeave = delegateCombine(f.onMouseLeave, runOn(this, this.an)); var g = this.a; g.onDragStarted = delegateCombine(g.onDragStarted, runOn(this, this.am)); var h = this.a; h.onDragDelta = delegateCombine(h.onDragDelta, runOn(this, this.al)); var i = this.a; i.onDragCompleted = delegateCombine(i.onDragCompleted, runOn(this, this.ak)); var j = this.a; j.onFlingStarted = delegateCombine(j.onFlingStarted, runOn(this, this.j)); var k = this.a; k.onContactStarted = delegateCombine(k.onContactStarted, runOn(this, this.aj)); var l = this.a; l.onContactMoved = delegateCombine(l.onContactMoved, runOn(this, this.ai)); var m = this.a; m.onContactCompleted = delegateCombine(m.onContactCompleted, runOn(this, this.ah)); this.a.ab = true; this.a.aq = runOn(this, this.r); var n = this.a; n.onKeyDown = delegateCombine(n.onKeyDown, runOn(this, this.k)); this.a.ar = function (o) { var e_ = o.originalEvent; var p = (e_.type); if (p == "pointerdown" && !_this.a.br(o)) { return false; } return true; }; this.c.onViewportSizeChanged(b, c); this.c.horizontalAnimation.u(this.ab); this.c.verticalAnimation.u(this.ab); this.attachNativeScroll(); }; ScrollerView.prototype.k = function (a) { return this.c.ap(a, (this.a.bi & 4) != 0, (this.a.bi & 2) != 0); }; ScrollerView.prototype.r = function (a, b, c) { if (this.f || this.g) { return true; } if (c || b) { return true; } if (this.n(a, b)) { this.c.c4(); return true; } else if (this.c.isHorizontalActive) { this.c.c8(); } if (this.o(a, b)) { this.c.c5(); return true; } else if (this.c.isVerticalActive) { this.c.c9(); } return false; }; ScrollerView.prototype.ah = function (a, b) { this.f = false; this.g = false; this.c.isDraggingVBar = false; this.c.isDraggingHBar = false; }; ScrollerView.prototype.ai = function (a, b) { if (this.g) { var c = a.y - this.v; this.v = a.y; this.c.di(c); } else if (this.f) { var d = a.x - this.s; this.s = a.x; this.c.dg(d); } }; ScrollerView.prototype.aj = function (a, b) { this.e = false; this.cancelInertia(); var c = this.q(a, b); var d = this.p(a, b); if (c) { this.c.isDraggingVBar = true; this.g = true; this.v = a.y; this.focus(); } else if (d) { this.c.isDraggingHBar = true; this.f = true; this.s = a.x; this.focus(); } }; ScrollerView.prototype.p = 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.u - this.t / 2 && a.x <= this.u + this.t / 2) { return true; } return false; }; ScrollerView.prototype.q = function (a, b) { if (!this.i) { return false; } if (a.x >= this.c.viewportWidth - this.c.scrollbarSpan && a.x <= this.c.viewportWidth && a.y >= this.x - this.w / 2 && a.y <= this.x + this.w / 2) { return true; } return false; }; ScrollerView.prototype.n = 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.o = function (a, b) { if (!this.i) { return false; } return a.x >= this.c.viewportWidth - this.c.scrollbarSpan - 40 && a.x <= this.c.viewportWidth; }; ScrollerView.prototype.j = function (a, b, c) { this.e = true; return true; }; ScrollerView.prototype.onViewportHeightChanged = function (a) { this.a.bl = new Rect(0, 0, 0, this.c.viewportWidth, this.c.viewportHeight); }; ScrollerView.prototype.onViewportWidthChanged = function (a) { this.a.bl = new Rect(0, 0, 0, this.c.viewportWidth, this.c.viewportHeight); }; ScrollerView.prototype.onContentHeightChanged = function (a) { if (this.ac != null) { this.ac.setStyleProperty("height", a + "px"); } }; ScrollerView.prototype.onContentWidthChanged = function (a) { if (this.ac != null) { this.ac.setStyleProperty("width", a + "px"); } }; ScrollerView.prototype.cancelInertia = function () { }; ScrollerView.prototype.ak = function (a) { if (this.f || this.g) { return; } this.e = false; this.c.dd(a); }; ScrollerView.prototype.al = function (a) { if (this.f || this.g) { return; } this.c.de(a); }; ScrollerView.prototype.updateScrollTop = function (a) { this.aa.scrollTop = truncate(a); }; ScrollerView.prototype.am = function (a) { if (this.f || this.g) { return; } this.e = false; this.c.df(a); }; ScrollerView.prototype.getInitialScrollLeft = function () { return this.aa.scrollLeft; }; ScrollerView.prototype.getInitialScrollTop = function () { return this.aa.scrollTop; }; ScrollerView.prototype.l = function (a, b) { this.e = false; this.cancelInertia(); return this.c.ar(a, 0, b); }; ScrollerView.prototype.m = function (a, b) { this.e = false; this.cancelInertia(); return this.c.ar(a, b, 0); }; ScrollerView.prototype.an = function (a) { if (this.c.horizontalScrollbarStatus > 0) { this.c.c8(); } if (this.c.verticalScrollbarStatus > 0) { this.c.c9(); } }; ScrollerView.prototype.updateScrollLeft = function (a) { this.aa.scrollLeft = truncate(a); }; ScrollerView.prototype.provideContent = function (a) { this.ac = a; this.af.append(this.ac); }; ScrollerView.prototype.requestWork = function (a) { if (this.ab == null) { return; } if (this.d == null) { this.d = this.ab.getRequestAnimationFrame(); } if (this.e) { a(); } else { this.d(function () { return a(); }); } }; ScrollerView.prototype.hideVScrollbar = function () { if (this.i) { this.i = false; this.ag.setStyleProperty("display", "none"); } }; ScrollerView.prototype.hideHScrollbar = function () { if (this.h) { this.h = false; this.ad.setStyleProperty("display", "none"); } }; ScrollerView.prototype.updateVScrollbar = function (a, b) { var c = false; if (!this.i) { c = true; this.i = true; this.ag.setStyleProperty("display", "block"); } if (a != this.x || c) { this.x = a; if (this.i) { this.ag.setRawYPosition(a - b / 2); } } if (b != this.w || c) { this.w = b; if (this.i) { this.ag.setRawSize(this.z(), b); } } }; ScrollerView.prototype.updateHScrollbar = function (a, b) { var c = false; if (!this.h) { c = true; this.h = true; this.ad.setStyleProperty("display", "block"); } if (a != this.u || c) { this.u = a; if (this.h) { this.ad.setRawXPosition(a - b / 2); } } if (b != this.t || c) { this.t = b; if (this.h) { this.ad.setRawSize(b, this.y()); } } }; ScrollerView.prototype.updateScrollbarBrush = function () { if (this.ad != null) { this.ad.setStyleProperty("background-color", this.c.scrollbarBrush._fill); } if (this.ag != null) { this.ag.setStyleProperty("background-color", this.c.scrollbarBrush._fill); } }; ScrollerView.prototype.updateScrollbarStatus = function (a) { if (this.ad != null && this.ag != null) { switch (this.c.scrollbarStyle) { case 0: if (a) { this.ad.setStyleProperty("opacity", "1"); this.ag.setStyleProperty("opacity", "1"); this.ad.setRawSize(this.t, this.y()); this.ag.setRawSize(this.z(), this.w); } break; case 1: if (a) { this.ad.setRawSize(this.t, this.y()); this.ag.setRawSize(this.z(), this.w); } this.ad.setStyleProperty("opacity", this.c.horizontalScrollbarStatus.toString()); this.ag.setStyleProperty("opacity", this.c.verticalScrollbarStatus.toString()); break; case 2: if (a) { this.ad.setStyleProperty("opacity", "1"); this.ag.setStyleProperty("opacity", "1"); } this.ad.setRawSize(this.t, this.y()); this.ag.setRawSize(this.z(), this.w); break; case 3: this.ad.setStyleProperty("opacity", "0"); this.ag.setStyleProperty("opacity", "0"); break; } } }; ScrollerView.prototype.y = function () { if (this.c.scrollbarStyle == 2) { return this.c.horizontalScrollbarStatus * (this.c.scrollbarSpan - 2) + 2; } return this.c.scrollbarSpan; }; ScrollerView.prototype.z = function () { if (this.c.scrollbarStyle == 2) { return this.c.verticalScrollbarStatus * (this.c.scrollbarSpan - 2) + 2; } return this.c.scrollbarSpan; }; ScrollerView.prototype.focus = function () { this.ab.rootWrapper.focus(true); }; ScrollerView.prototype.onDetachedFromUI = function () { if (this.a != null && this.ab != null) { this.a.bh(this.ab.rootWrapper, ""); } }; ScrollerView.prototype.onAttachedToUI = function () { if (this.a != null) { this.a.at(this.ab.rootWrapper, ""); } }; ScrollerView.prototype.attachNativeScroll = function () { var a = this.af.getNativeElement(); a.addEventListener("scroll", runOn(this, this.onNativeScroll)); }; ScrollerView.prototype.detachNativeScroll = function () { var a = this.af.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.dy = 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.d0 = 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.dy = _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.dh("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.dh("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.dh("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.dh("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.dh("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.dh("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.dh("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.dh("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.dh("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.dh("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.dh("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.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.dp(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.dp(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.dp(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.dp(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.dp(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.dp(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.dp(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.dp(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.dh("VerticalTrackStartInset", b, this.bk); } }, enumerable: false, configurable: true }); Object.defineProperty(Scroller.prototype, "scrollbarBrush", { get: function () { return this.dy; }, set: function (a) { var b = this.dy; this.dy = a; if (b != this.dy) { this.dh("ScrollbarBrush", b, this.dy); } }, enumerable: false, configurable: true }); Scroller.prototype.dh = function (a, b, c) { if (this.propertyChanged != null) { this.propertyChanged(this, new PropertyChangedEventArgs(a)); } this.dk(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.dk = 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.dq(d - (this.scrollLeft + this.viewportWidth), 0); } this.dv(); 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.dq(0, f - (this.scrollTop + this.viewportHeight)); } this.dx(); 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.dq(this.contentWidth - this.viewportWidth - this.scrollLeft, 0); } this.dv(); 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.dx(); 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.dx(); this.dv(); 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.dh("ContentHeight", b, this.a6); } }, enumerable: false, configurable: true }); Scroller.prototype.di = 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.dp(0, f); }; Scroller.prototype.dg = 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.dp(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.dp(0, 0); } if (!isNaN_(this.contentHeight) && this.contentHeight != 0 && this.scrollTop > 0 && this.scrollTop + this.bl > this.contentHeight) { this.dp(0, 0); } if (c && (d != a || e != b)) { this.dh("ViewportWidth", d, a); this.dh("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.dh("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.dh("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.dh("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.dh("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.dv(); this.dx(); }; 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.dp(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.dh("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.dh("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.dh("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.dh("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.dh("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.d0 = { $type: Point_$type, x: a.x, y: a.y }; }; Scroller.prototype.de = function (a) { if (this.p) { var b = a.y - this.d0.y; var c = a.x - this.d0.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.d0 = { $type: Point_$type, x: a.x, y: a.y }; this.dp(-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.dn(); }; Scroller.prototype.dp = function (a, b) { this.view.detachNativeScroll(); this.bc += a; this.bd += b; this.dn(); }; Scroller.prototype.dq = function (a, b) { this.view.detachNativeScroll(); this.bc += a; this.bd += b; this.du(); }; Scroller.prototype.dn = function () { if (this.w) { return; } this.w = true; this.view.requestWork(runOn(this, this.du)); }; Scroller.prototype.du = 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.dx(); this.dv(); 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.dx = function () { if (isNaN_(this.contentHeight)) { return; } this.dw(this.contentHeight, this.viewportHeight, this.scrollTop, true); }; Scroller.prototype.dv = function () { if (isNaN_(this.contentWidth)) { return; } this.dw(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.dw = 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.round(g + (h - g) * i); if (d) { this.actualVerticalScrollbarHeight = e; this.view.updateVScrollbar(j, e); } else { this.actualHorizontalScrollbarWidth = e; this.view.updateHScrollbar(j, e); } }; Scroller.prototype.dd = function (a) { this.r = false; this.q = false; this.s = false; this.p = false; }; Scroller.prototype.c2 = function (a, b) { this.horizontalScrollbarStatus = this.bv + this.j.o * (this.b6 - this.bv); }; Scroller.prototype.c3 = function (a, b) { this.verticalScrollbarStatus = this.bw + this.k.o * (this.b7 - this.bw); }; Scroller.prototype.c4 = funct