UNPKG

igniteui-angular-core

Version:

Ignite UI Angular Core logic used in multiple UI components.

1,425 lines (1,424 loc) 48.3 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 { 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 */ export let ScrollerView = /*@__PURE__*/ (() => { class ScrollerView extends Base { constructor(a) { super(); 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; } getDefaultScrollbarBrush() { return ((() => { let $ret = new Brush(); $ret.fill = "#666666"; return $ret; })()); } provideContainer(a) { 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); let b = Math.round(this.ab.rootWrapper.width()); let 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; let d = this.a; d.onMouseWheel = delegateCombine(d.onMouseWheel, runOn(this, this.l)); let e = this.a; e.onMouseWheelHorizontal = delegateCombine(e.onMouseWheelHorizontal, runOn(this, this.m)); let f = this.a; f.onMouseLeave = delegateCombine(f.onMouseLeave, runOn(this, this.an)); let g = this.a; g.onDragStarted = delegateCombine(g.onDragStarted, runOn(this, this.am)); let h = this.a; h.onDragDelta = delegateCombine(h.onDragDelta, runOn(this, this.al)); let i = this.a; i.onDragCompleted = delegateCombine(i.onDragCompleted, runOn(this, this.ak)); let j = this.a; j.onFlingStarted = delegateCombine(j.onFlingStarted, runOn(this, this.j)); let k = this.a; k.onContactStarted = delegateCombine(k.onContactStarted, runOn(this, this.aj)); let l = this.a; l.onContactMoved = delegateCombine(l.onContactMoved, runOn(this, this.ai)); let m = this.a; m.onContactCompleted = delegateCombine(m.onContactCompleted, runOn(this, this.ah)); this.a.ab = true; this.a.aq = runOn(this, this.r); let n = this.a; n.onKeyDown = delegateCombine(n.onKeyDown, runOn(this, this.k)); this.a.ar = (o) => { let e_ = o.originalEvent; let p = (e_.type); if (p == "pointerdown" && !this.a.br(o)) { return false; } return true; }; this.c.di(b, c); this.c.horizontalAnimation.u(this.ab); this.c.verticalAnimation.u(this.ab); this.attachNativeScroll(); } k(a) { return this.c.ao(a, (this.a.bi & 4) != 0, (this.a.bi & 2) != 0); } r(a, b, c) { if (this.f || this.g) { return true; } if (c || b) { return true; } if (this.n(a, b)) { this.c.c3(); return true; } else if (this.c.isHorizontalActive) { this.c.c7(); } if (this.o(a, b)) { this.c.c4(); return true; } else if (this.c.isVerticalActive) { this.c.c8(); } return false; } ah(a, b) { this.f = false; this.g = false; this.c.isDraggingVBar = false; this.c.isDraggingHBar = false; } ai(a, b) { if (this.g) { let c = a.y - this.v; this.v = a.y; this.c.dh(c); } else if (this.f) { let d = a.x - this.s; this.s = a.x; this.c.df(d); } } aj(a, b) { this.e = false; this.cancelInertia(); let c = this.q(a, b); let 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(); } } p(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; } q(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; } n(a, b) { if (!this.h) { return false; } return a.y >= this.c.viewportHeight - this.c.scrollbarSpan - 40 && a.y <= this.c.viewportHeight; } o(a, b) { if (!this.i) { return false; } return a.x >= this.c.viewportWidth - this.c.scrollbarSpan - 40 && a.x <= this.c.viewportWidth; } j(a, b, c) { this.e = true; return true; } onViewportHeightChanged(a) { this.a.bl = new Rect(0, 0, 0, this.c.viewportWidth, this.c.viewportHeight); } onViewportWidthChanged(a) { this.a.bl = new Rect(0, 0, 0, this.c.viewportWidth, this.c.viewportHeight); } onContentHeightChanged(a) { if (this.ac != null) { this.ac.setStyleProperty("height", a + "px"); } } onContentWidthChanged(a) { if (this.ac != null) { this.ac.setStyleProperty("width", a + "px"); } } cancelInertia() { } ak(a) { if (this.f || this.g) { return; } this.e = false; this.c.dc(a); } al(a) { if (this.f || this.g) { return; } this.c.dd(a); } updateScrollTop(a) { this.aa.scrollTop = truncate(a); } am(a) { if (this.f || this.g) { return; } this.e = false; this.c.de(a); } getInitialScrollLeft() { return this.aa.scrollLeft; } getInitialScrollTop() { return this.aa.scrollTop; } l(a, b) { this.e = false; this.cancelInertia(); return this.c.aq(a, 0, b); } m(a, b) { this.e = false; this.cancelInertia(); return this.c.aq(a, b, 0); } an(a) { if (this.c.horizontalScrollbarStatus > 0) { this.c.c7(); } if (this.c.verticalScrollbarStatus > 0) { this.c.c8(); } } updateScrollLeft(a) { this.aa.scrollLeft = truncate(a); } provideContent(a) { this.ac = a; this.af.append(this.ac); } requestWork(a) { if (this.ab == null) { return; } if (this.d == null) { this.d = this.ab.getRequestAnimationFrame(); } if (this.e) { a(); } else { this.d(() => a()); } } hideVScrollbar() { if (this.i) { this.i = false; this.ag.setStyleProperty("display", "none"); } } hideHScrollbar() { if (this.h) { this.h = false; this.ad.setStyleProperty("display", "none"); } } updateVScrollbar(a, b) { let 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); } } } updateHScrollbar(a, b) { let 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()); } } } updateScrollbarBrush() { 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); } } updateScrollbarStatus(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; } } } y() { if (this.c.scrollbarStyle == 2) { return this.c.horizontalScrollbarStatus * (this.c.scrollbarSpan - 2) + 2; } return this.c.scrollbarSpan; } z() { if (this.c.scrollbarStyle == 2) { return this.c.verticalScrollbarStatus * (this.c.scrollbarSpan - 2) + 2; } return this.c.scrollbarSpan; } focus() { this.ab.rootWrapper.focus(true); } onDetachedFromUI() { if (this.a != null) { this.a.bh(this.ab.rootWrapper, ""); } } onAttachedToUI() { if (this.a != null) { this.a.at(this.ab.rootWrapper, ""); } } attachNativeScroll() { let a = this.af.getNativeElement(); a.addEventListener("scroll", runOn(this, this.onNativeScroll)); } detachNativeScroll() { let a = this.af.getNativeElement(); a.removeEventListener("scroll", runOn(this, this.onNativeScroll)); } onNativeScroll(a) { } } ScrollerView.$t = markType(ScrollerView, 'ScrollerView', Base.$, [IScrollerView_$type]); return ScrollerView; })(); /** * @hidden */ export let Scroller = /*@__PURE__*/ (() => { class Scroller extends Base { constructor() { super(); this.bh = 49; this._keyboardListener = null; this.a9 = NaN; this.a3 = 49; this.a1 = NaN; this.bg = 48; this.a8 = NaN; this.a2 = 48; this.a0 = NaN; this.a6 = 0; this.ba = 20; this.bd = 8; this.bj = 0; this.dx = null; this.x = false; this.a5 = 0; this.bl = 0; this.bk = 0; this.bf = 0; this.be = 0; this.c = null; this.v = true; this.aa = false; this.a4 = 0; this.az = 0; this.h = 0; this.a7 = 0; this.bi = 0; this.j = null; this.k = null; this.bu = 0; this.b5 = 0; this.bv = 0; this.b6 = 0; this._executionContext = null; this._isDraggingVBar = false; this._isDraggingHBar = false; this.s = false; this.q = false; this.r = false; this.dz = null; this.p = false; this.propertyChanged = null; this.onScrolling = null; this.onScrollStart = null; this.onScrollStop = null; this._isScrolling = false; this.bb = 0; this.bc = 0; this.w = false; this.ay = new List$1(Boolean_$type, 0); this.cb = 500; this.cc = 0; this.cd = 0; this.o = false; this.z = false; this.n = false; this.y = false; this.t = true; this.u = true; this.dx = 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; let a = this.j; a.propertyChanged = delegateCombine(a.propertyChanged, runOn(this, this.c1)); let b = this.k; b.propertyChanged = delegateCombine(b.propertyChanged, runOn(this, this.c2)); } get smallVerticalChange() { return this.bh; } set smallVerticalChange(a) { let b = this.bh; this.bh = a; if (b != this.bh) { this.dg("SmallVerticalChange", b, this.bh); } } get keyboardListener() { return this._keyboardListener; } set keyboardListener(a) { this._keyboardListener = a; } get largeVerticalChange() { return this.a9; } set largeVerticalChange(a) { let b = this.a9; this.a9 = a; if (b != this.a9) { this.dg("LargeVerticalChange", b, this.a9); } } get bq() { return this.a3; } set bq(a) { let b = this.a3; this.a3 = a; if (b != this.a3) { this.dg("ActualSmallVerticalChange", b, this.a3); } } get bo() { return this.a1; } set bo(a) { let b = this.a1; this.a1 = a; if (b != this.a1) { this.dg("ActualLargeVerticalChange", b, this.a1); } } get smallHorizontalChange() { return this.bg; } set smallHorizontalChange(a) { let b = this.bg; this.bg = a; if (b != this.bg) { this.dg("SmallHorizontalChange", b, this.bg); } } get largeHorizontalChange() { return this.a8; } set largeHorizontalChange(a) { let b = this.a8; this.a8 = a; if (b != this.a8) { this.dg("LargeHorizontalChange", b, this.a8); } } get bp() { return this.a2; } set bp(a) { let b = this.a2; this.a2 = a; if (b != this.a2) { this.dg("ActualSmallHorizontalChange", b, this.a2); } } get bn() { return this.a0; } set bn(a) { let b = this.a0; this.a0 = a; if (b != this.a0) { this.dg("ActualLargeHorizontalChange", b, this.a0); } } get contentWidth() { return this.a6; } set contentWidth(a) { let b = this.a6; this.a6 = a; if (b != this.a6) { this.dg("ContentWidth", b, this.a6); } } get minScrollbarSize() { return this.ba; } set minScrollbarSize(a) { let b = this.ba; this.ba = a; if (b != this.ba) { this.dg("MinScrollbarSize", b, this.ba); } } get scrollbarSpan() { return this.bd; } set scrollbarSpan(a) { let b = this.bd; this.bd = a; if (b != this.bd) { this.dg("ScrollbarSpan", b, this.bd); } } ao(a, b, c) { switch (a) { case 11: return this.ar(b, c); case 10: return this.as(b, c); case 17: return this.ah(b, c); case 15: return this.aw(b, c); case 14: return this.ap(b, c); case 16: return this.at(b, c); case 13: return this.am(b, c); case 12: return this.ai(b, c); case 2: return this.av(b, c); case 3: return this.aj(b, c); case 8: return this.ak(); case 57: return this.al(); case 9: return this.au(b, c); default: return this.an(a, b, c); } return false; } au(a, b) { if (this.keyboardListener != null) { if (this.keyboardListener.onSpace(a, b)) { return true; } } return false; } al() { if (this.keyboardListener != null) { if (this.keyboardListener.onF2()) { return true; } } return false; } ak() { if (this.keyboardListener != null) { if (this.keyboardListener.onEscape()) { return true; } } return false; } av(a, b) { if (this.keyboardListener != null) { if (this.keyboardListener.onTab(a, b)) { return true; } } return false; } ai(a, b) { if (this.keyboardListener != null) { if (this.keyboardListener.onEnd(a, b)) { return true; } } return false; } am(a, b) { if (this.keyboardListener != null) { if (this.keyboardListener.onHome(a, b)) { return true; } } return false; } at(a, b) { if (this.keyboardListener != null) { if (this.keyboardListener.onRightArrow(a, b)) { return true; } } if (this.scrollLeft + this.viewportWidth >= this.contentWidth) { return false; } this.dn(this.bp, 0); return true; } ap(a, b) { if (this.keyboardListener != null) { if (this.keyboardListener.onLeftArrow(a, b)) { return true; } } if (this.scrollLeft <= 0) { return false; } this.dn(this.bp * -1, 0); return true; } aw(a, b) { if (this.keyboardListener != null) { if (this.keyboardListener.onUpArrow(a, b)) { return true; } } if (this.scrollTop <= 0) { return false; } this.dn(0, this.bq * -1); return true; } ah(a, b) { if (this.keyboardListener != null) { if (this.keyboardListener.onDownArrow(a, b)) { return true; } } if (this.scrollTop + this.viewportHeight >= this.contentHeight) { return false; } this.dn(0, this.bq); return true; } as(a, b) { if (this.keyboardListener != null) { if (this.keyboardListener.onPageUp(a, b)) { return true; } } if (this.scrollTop < 0) { return false; } this.dn(0, this.bo * -1); return true; } ar(a, b) { if (this.keyboardListener != null) { if (this.keyboardListener.onPageDown(a, b)) { return true; } } if (this.scrollTop + this.viewportHeight >= this.contentHeight) { return false; } this.dn(0, this.bo); return true; } aj(a, b) { if (this.keyboardListener != null) { if (this.keyboardListener.onEnter(a, b)) { return true; } } return false; } an(a, b, c) { if (this.keyboardListener != null) { return this.keyboardListener.onKeyDown(a, b, c); } return false; } get verticalTrackStartInset() { return this.bj; } set verticalTrackStartInset(a) { let b = this.bj; this.bj = a; if (b != this.bj) { this.dg("VerticalTrackStartInset", b, this.bj); } } get scrollbarBrush() { return this.dx; } set scrollbarBrush(a) { let b = this.dx; this.dx = a; if (b != this.dx) { this.dg("ScrollbarBrush", b, this.dx); } } dg(a, b, c) { if (this.propertyChanged != null) { this.propertyChanged(this, new PropertyChangedEventArgs(a)); } this.dj(a, b, c); } get ax() { return this.x; } set ax(a) { this.x = a; if (!this.x) { this.view.updateScrollTop(this.scrollTop); this.view.updateScrollLeft(this.scrollLeft); } } dj(a, b, c) { switch (a) { case "ContentWidth": this.view.onContentWidthChanged(this.contentWidth); let d = c; let e = b; if (d < e && this.scrollLeft + this.viewportWidth >= d) { this.dp(d - (this.scrollLeft + this.viewportWidth), 0); } this.du(); break; case "ContentHeight": this.view.onContentHeightChanged(this.contentHeight); let f = c; let g = b; if (f < g && this.scrollTop > 0 && this.scrollTop + this.viewportHeight >= f) { this.dp(0, f - (this.scrollTop + this.viewportHeight)); } this.dw(); break; case "ScrollTop": if (!this.ax) { this.view.updateScrollTop(this.scrollTop); } break; case "ScrollLeft": if (!this.ax) { this.view.updateScrollLeft(this.scrollLeft); } break; case "ViewportWidth": this.view.onViewportWidthChanged(this.viewportWidth); if (isNaN_(this.largeVerticalChange)) { this.bn = this.viewportWidth; } if (this.contentWidth > 0 && this.scrollLeft + this.viewportWidth > this.contentWidth) { this.dp(this.contentWidth - this.viewportWidth - this.scrollLeft, 0); } this.du(); if (this.view.getInitialScrollLeft() != this.scrollLeft) { this.view.updateScrollLeft(this.scrollLeft); } break; case "ViewportHeight": this.view.onViewportHeightChanged(this.viewportHeight); if (isNaN_(this.largeVerticalChange)) { this.bo = this.viewportHeight; } this.dw(); 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.dw(); this.du(); break; case "HorizontalScrollbarStatus": case "VerticalOpacity": this.view.updateScrollbarStatus(false); break; case "ScrollbarStyle": this.view.updateScrollbarStatus(true); break; } } get contentHeight() { return this.a5; } set contentHeight(a) { let b = this.a5; this.a5 = a; if (b != this.a5) { this.dg("ContentHeight", b, this.a5); } } dh(a) { let b = Math.max(this.minScrollbarSize, this.actualVerticalScrollbarHeight); let c = this.verticalTrackStartInset + (b / 2); let d = this.viewportHeight - (b / 2); let e = a / (d - c); let f = e * (this.contentHeight - this.viewportHeight); this.dn(0, f); } df(a) { let b = Math.max(this.minScrollbarSize, this.actualHorizontalScrollbarWidth); let c = 0 + (b / 2); let d = this.viewportWidth - (b / 2); let e = a / (d - c); let f = e * (this.contentWidth - this.viewportWidth); this.dn(f, 0); } di(a, b, c = false) { let d = this.bl; let e = this.bk; this.bl = a; this.bk = b; if (c && (d != a || e != b)) { this.dg("ViewportWidth", d, a); this.dg("ViewportHeight", e, b); } } get viewportWidth() { return this.bl; } set viewportWidth(a) { let b = this.bl; this.bl = a; if (b != this.bl) { this.dg("ViewportWidth", b, this.bl); } } get viewportHeight() { return this.bk; } set viewportHeight(a) { let b = this.bk; this.bk = a; if (b != this.bk) { this.dg("ViewportHeight", b, this.bk); } } get scrollTop() { return this.bf; } set scrollTop(a) { let b = this.bf; this.bf = a; if (b != this.bf) { this.dg("ScrollTop", b, this.bf); } } get scrollLeft() { return this.be; } set scrollLeft(a) { let b = this.be; this.be = a; if (b != this.be) { this.dg("ScrollLeft", b, this.be); } } get view() { if (this.c == null) { this.c = new ScrollerView(this); } return this.c; } set view(a) { this.c = a; } provideContainer(a) { this.view.provideContainer(a); this.bf = this.view.getInitialScrollTop(); this.be = this.view.getInitialScrollLeft(); this.du(); this.dw(); } onDetachedFromUI() { this.view.onDetachedFromUI(); } onAttachedToUI() { this.view.onAttachedToUI(); } provideContent(a) { this.view.provideContent(a); } aq(a, b, c) { this.r = false; this.q = false; this.s = false; this.view.cancelInertia(); if (this.keyboardListener != null) { this.keyboardListener.onWheel(); } this.dn(b, c); return true; } get lockScrollDirection() { return this.v; } set lockScrollDirection(a) { this.v = true; } get actualVerticalScrollbarHeight() { return this.a4; } set actualVerticalScrollbarHeight(a) { let b = this.a4; this.a4 = a; if (b != this.a4) { this.dg("ActualVerticalScrollbarHeight", b, this.a4); } } get actualHorizontalScrollbarWidth() { return this.az; } set actualHorizontalScrollbarWidth(a) { let b = this.az; this.az = a; if (b != this.az) { this.dg("ActualHorizontalScrollbarWidth", b, this.az); } } get scrollbarStyle() { return this.h; } set scrollbarStyle(a) { let b = this.h; this.h = a; if (b != this.h) { this.dg("ScrollbarStyle", enumGetBox(ScrollbarStyle_$type, b), enumGetBox(ScrollbarStyle_$type, this.h)); } } get horizontalScrollbarStatus() { return this.a7; } set horizontalScrollbarStatus(a) { let b = this.a7; this.a7 = a; if (b != this.a7) { this.dg("HorizontalScrollbarStatus", b, this.a7); } } get verticalScrollbarStatus() { return this.bi; } set verticalScrollbarStatus(a) { let b = this.bi; this.bi = a; if (b != this.bi) { this.dg("VerticalOpacity", b, this.bi); } } get horizontalAnimation() { return this.j; } get verticalAnimation() { return this.k; } get executionContext() { return this._executionContext; } set executionContext(a) { this._executionContext = a; } get isVerticalActive() { return this.y; } get isHorizontalActive() { return this.n; } get isDraggingVBar() { return this._isDraggingVBar; } set isDraggingVBar(a) { this._isDraggingVBar = a; } get isDraggingHBar() { return this._isDraggingHBar; } set isDraggingHBar(a) { this._isDraggingHBar = a; } focus() { this.view.focus(); } de(a) { this.view.focus(); this.s = false; this.q = false; this.r = false; this.p = true; this.dz = { $type: Point_$type, x: a.x, y: a.y }; } dd(a) { if (this.p) { let b = a.y - this.dz.y; let c = a.x - this.dz.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.dz = { $type: Point_$type, x: a.x, y: a.y }; this.dn(-c, -b); } } get isScrolling() { return this._isScrolling; } set isScrolling(a) { this._isScrolling = a; } scrollTo(a, b) { this.view.detachNativeScroll(); this.bb = a - this.scrollLeft; this.bc = b - this.scrollTop; this.dm(); } dn(a, b) { this.view.detachNativeScroll(); this.bb += a; this.bc += b; this.dm(); } dp(a, b) { this.view.detachNativeScroll(); this.bb += a; this.bc += b; this.dt(); } dm() { if (this.w) { return; } this.w = true; this.view.requestWork(runOn(this, this.dt)); } dt() { this.w = false; let a = this.bb; let b = this.bc; this.bb = 0; this.bc = 0; if (this.r) { if (this.s) { a = 0; } if (this.q) { b = 0; } } if (a != 0) { this.t = false; this.c3(); this.c7(); this.t = true; } if (b != 0) { this.u = false; this.c4(); this.c8(); this.u = true; } let c = Math.round(this.scrollTop + b); let d = Math.round(this.scrollLeft + a); if (c < 0) { c = 0; this.view.cancelInertia(); } if (d < 0) { d = 0; this.view.cancelInertia(); } if (c + this.viewportHeight > this.contentHeight) { c = this.contentHeight - this.viewportHeight; if (c < 0) { c = 0; } this.view.cancelInertia(); } if (d + this.viewportWidth > this.contentWidth) { d = this.contentWidth - this.viewportWidth; if (d < 0) { d = 0; } this.view.cancelInertia(); } b = c - this.scrollTop; a = d - this.scrollLeft; if (b != 0 || a != 0) { try { this.ax = true; this.aa = true; this.scrollTop = c; this.scrollLeft = d; this.dw(); this.du(); this.aa = false; if (!this.isScrolling) { this.isScrolling = true; if (this.onScrollStart != null) { this.onScrollStart(this, ((() => { let $ret = new ScrollerScrollingEventArgs(); $ret.deltaX = a; $ret.deltaY = b; return $ret; })())); } } if (this.onScrolling != null) { this.onScrolling(this, ((() => { let $ret = new ScrollerScrollingEventArgs(); $ret.deltaX = a; $ret.deltaY = b; return $ret; })())); } if (this.ay.count > 0) { this.ay._inner[this.ay.count - 1] = false; } this.ay.add(true); this.executionContext.executeDelayed(() => { if (this.ay._inner[0]) { if (this.onScrollStop != null) { this.onScrollStop(this, ((() => { let $ret = new ScrollerScrollingEventArgs(); $ret.deltaX = a; $ret.deltaY = b; return $ret; })())); } this.isScrolling = false; this.view.attachNativeScroll(); } this.ay.removeAt(0); }, 50); } finally { this.ax = false; } } } dw() { this.dv(this.contentHeight, this.viewportHeight, this.scrollTop, true); } du() { this.dv(this.contentWidth, this.viewportWidth, this.scrollLeft, false); } dv(a, b, c, d) { let e = Math.round((b / a) * b); let f = d ? this.verticalTrackStartInset : 0; e = e - f; if (e < this.minScrollbarSize) { e = this.minScrollbarSize; } if (e >= (b - f)) { if (d) { this.view.hideVScrollbar(); } else { this.view.hideHScrollbar(); } return; } let g = f + (e / 2); let h = b - (e / 2); let i = c / (a - b); let 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); } } dc(a) { this.r = false; this.q = false; this.s = false; this.p = false; } c1(a, b) { this.horizontalScrollbarStatus = this.bu + this.j.o * (this.b5 - this.bu); } c2(a, b) { this.verticalScrollbarStatus = this.bv + this.k.o * (this.b6 - this.bv); } c3() { if (this.n) { return; } if (this.scrollbarStyle == 1 || this.scrollbarStyle == 2) { if (this.j.f()) { this.j.w(); } this.horizontalScrollbarStatus = 1; if (this.o && this.t) { this.o = false; } } this.n = true; } c4() { if (this.y) { return; } if (this.scrollbarStyle == 1 || this.scrollbarStyle == 2) { if (this.k.f()) { this.k.w(); } this.verticalScrollbarStatus = 1; if (this.z && this.u) { this.z = false; } } this.y = true; } c7() { if (!this.n || this.isDraggingHBar) { return; } if (this.scrollbarStyle == 1 || this.scrollbarStyle == 2) { this.dr(); } this.n = false; } c8() { if (!this.y || this.isDraggingVBar) { return; } if (this.scrollbarStyle == 1 || this.scrollbarStyle == 2) { this.ds(); } this.y = false; } dr() { if (!this.o) { this.o = true; this.cc = this.executionContext.getCurrentRelativeTime(); this.executionContext.executeDelayed(runOn(this, this.c5), this.cb); } else { this.cc = this.executionContext.getCurrentRelativeTime(); } } ds() { if (!this.z) { this.z = true; this.cd = this.executionContext.getCurrentRelativeTime(); this.executionContext.executeDelayed(runOn(this, this.c6), this.cb); } else { this.cd = this.executionContext.getCurrentRelativeTime(); } } c5() { if (!this.o) { return; } let a = this.executionContext.getCurrentRelativeTime(); if (a - this.cc >= this.cb) { if (!this.j.f() && this.horizontalScrollbarStatus != 0) { this.bu = this.horizontalScrollbarStatus; this.b5 = 0; this.j.v(); } this.o = false; } else { this.executionContext.executeDelayed(runOn(this, this.c5), (this.cb - (a - this.cc))); } } c6() { if (!this.z) { return; } let a = this.executionContext.getCurrentRelativeTime(); if (a - this.cd >= this.cb) { if (!this.k.f() && this.verticalScrollbarStatus != 0) { this.bv = this.verticalScrollbarStatus; this.b6 = 0; this.k.v(); } this.z = false; } else { this.executionContext.executeDelayed(runOn(this, this.c6), (this.cb - (a - this.cd))); } } } Scroller.$t = markType(Scroller, 'Scroller', Base.$, [INotifyPropertyChanged_$type]); return Scroller; })();