igniteui-react-core
Version:
Ignite UI React Core.
1,466 lines (1,465 loc) • 48.4 kB
JavaScript
/*
THIS INFRAGISTICS ULTIMATE SOFTWARE LICENSE AGREEMENT ("AGREEMENT") LOCATED HERE:
https://www.infragistics.com/legal/license/igultimate-la
https://www.infragistics.com/legal/license/igultimate-eula
GOVERNS THE LICENSING, INSTALLATION AND USE OF INFRAGISTICS SOFTWARE. BY DOWNLOADING AND/OR INSTALLING AND USING INFRAGISTICS SOFTWARE: you are indicating that you have read and understand this Agreement, and agree to be legally bound by it on behalf of the yourself and your company.
*/
import { Base, runOn, 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.onViewportSizeChanged(b, c);
this.c.horizontalAnimation.u(this.ab);
this.c.verticalAnimation.u(this.ab);
this.attachNativeScroll();
}
k(a) {
return this.c.ap(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.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;
}
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.di(c);
}
else if (this.f) {
let d = a.x - this.s;
this.s = a.x;
this.c.dg(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.dd(a);
}
al(a) {
if (this.f || this.g) {
return;
}
this.c.de(a);
}
updateScrollTop(a) {
this.aa.scrollTop = truncate(a);
}
am(a) {
if (this.f || this.g) {
return;
}
this.e = false;
this.c.df(a);
}
getInitialScrollLeft() {
return this.aa.scrollLeft;
}
getInitialScrollTop() {
return this.aa.scrollTop;
}
l(a, b) {
this.e = false;
this.cancelInertia();
return this.c.ar(a, 0, b);
}
m(a, b) {
this.e = false;
this.cancelInertia();
return this.c.ar(a, b, 0);
}
an(a) {
if (this.c.horizontalScrollbarStatus > 0) {
this.c.c8();
}
if (this.c.verticalScrollbarStatus > 0) {
this.c.c9();
}
}
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;
case 3:
this.ad.setStyleProperty("opacity", "0");
this.ag.setStyleProperty("opacity", "0");
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.ab != 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 = /*@__PURE__*/ markType(ScrollerView, 'ScrollerView', Base.$, [IScrollerView_$type]);
return ScrollerView;
})();
/**
* @hidden
*/
export let Scroller = /*@__PURE__*/ (() => {
class Scroller extends Base {
constructor() {
super();
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;
let a = this.j;
a.propertyChanged = delegateCombine(a.propertyChanged, runOn(this, this.c2));
let b = this.k;
b.propertyChanged = delegateCombine(b.propertyChanged, runOn(this, this.c3));
}
get smallVerticalChange() {
return this.bi;
}
set smallVerticalChange(a) {
let b = this.bi;
this.bi = a;
if (b != this.bi) {
this.dh("SmallVerticalChange", b, this.bi);
}
}
get keyboardListener() {
return this._keyboardListener;
}
set keyboardListener(a) {
this._keyboardListener = a;
}
get largeVerticalChange() {
return this.ba;
}
set largeVerticalChange(a) {
let b = this.ba;
this.ba = a;
if (b != this.ba) {
this.dh("LargeVerticalChange", b, this.ba);
}
}
get br() {
return this.a4;
}
set br(a) {
let b = this.a4;
this.a4 = a;
if (b != this.a4) {
this.dh("ActualSmallVerticalChange", b, this.a4);
}
}
get bp() {
return this.a2;
}
set bp(a) {
let b = this.a2;
this.a2 = a;
if (b != this.a2) {
this.dh("ActualLargeVerticalChange", b, this.a2);
}
}
get smallHorizontalChange() {
return this.bh;
}
set smallHorizontalChange(a) {
let b = this.bh;
this.bh = a;
if (b != this.bh) {
this.dh("SmallHorizontalChange", b, this.bh);
}
}
get largeHorizontalChange() {
return this.a9;
}
set largeHorizontalChange(a) {
let b = this.a9;
this.a9 = a;
if (b != this.a9) {
this.dh("LargeHorizontalChange", b, this.a9);
}
}
get bq() {
return this.a3;
}
set bq(a) {
let b = this.a3;
this.a3 = a;
if (b != this.a3) {
this.dh("ActualSmallHorizontalChange", b, this.a3);
}
}
get bo() {
return this.a1;
}
set bo(a) {
let b = this.a1;
this.a1 = a;
if (b != this.a1) {
this.dh("ActualLargeHorizontalChange", b, this.a1);
}
}
get contentWidth() {
return this.a7;
}
set contentWidth(a) {
let b = this.a7;
this.a7 = a;
if (b != this.a7) {
this.dh("ContentWidth", b, this.a7);
}
}
get minScrollbarSize() {
return this.bb;
}
set minScrollbarSize(a) {
let b = this.bb;
this.bb = a;
if (b != this.bb) {
this.dh("MinScrollbarSize", b, this.bb);
}
}
get scrollbarSpan() {
return this.be;
}
set scrollbarSpan(a) {
let b = this.be;
this.be = a;
if (b != this.be) {
this.dh("ScrollbarSpan", b, this.be);
}
}
ap(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;
}
av(a, b) {
if (this.keyboardListener != null) {
if (this.keyboardListener.onSpace(a, b)) {
return true;
}
}
return false;
}
am() {
if (this.keyboardListener != null) {
if (this.keyboardListener.onF2()) {
return true;
}
}
return false;
}
al() {
if (this.keyboardListener != null) {
if (this.keyboardListener.onEscape()) {
return true;
}
}
return false;
}
aw(a, b) {
if (this.keyboardListener != null) {
if (this.keyboardListener.onTab(a, b)) {
return true;
}
}
return false;
}
aj(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;
}
an(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;
}
au(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;
}
aq(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;
}
ax(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;
}
ai(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;
}
at(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;
}
as(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;
}
ak(a, b) {
if (this.keyboardListener != null) {
if (this.keyboardListener.onEnter(a, b)) {
return true;
}
}
return false;
}
ao(a, b, c) {
if (this.keyboardListener != null) {
return this.keyboardListener.onKeyDown(a, b, c);
}
return false;
}
get verticalTrackStartInset() {
return this.bk;
}
set verticalTrackStartInset(a) {
let b = this.bk;
this.bk = a;
if (b != this.bk) {
this.dh("VerticalTrackStartInset", b, this.bk);
}
}
get scrollbarBrush() {
return this.dy;
}
set scrollbarBrush(a) {
let b = this.dy;
this.dy = a;
if (b != this.dy) {
this.dh("ScrollbarBrush", b, this.dy);
}
}
dh(a, b, c) {
if (this.propertyChanged != null) {
this.propertyChanged(this, new PropertyChangedEventArgs(a));
}
this.dk(a, b, c);
}
get ay() {
return this.x;
}
set ay(a) {
this.x = a;
if (!this.x) {
this.view.updateScrollTop(this.scrollTop);
this.view.updateScrollLeft(this.scrollLeft);
}
}
dk(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.dq(d - (this.scrollLeft + this.viewportWidth), 0);
}
this.dv();
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.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;
}
}
get contentHeight() {
return this.a6;
}
set contentHeight(a) {
let b = this.a6;
this.a6 = a;
if (b != this.a6) {
this.dh("ContentHeight", b, this.a6);
}
}
di(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.dp(0, f);
}
dg(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.dp(f, 0);
}
onViewportSizeChanged(a, b, c = false) {
let d = this.bm;
let 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);
}
}
get viewportWidth() {
return this.bm;
}
set viewportWidth(a) {
let b = this.bm;
this.bm = a;
if (b != this.bm) {
this.dh("ViewportWidth", b, this.bm);
}
}
get viewportHeight() {
return this.bl;
}
set viewportHeight(a) {
let b = this.bl;
this.bl = a;
if (b != this.bl) {
this.dh("ViewportHeight", b, this.bl);
}
}
get scrollTop() {
return this.bg;
}
set scrollTop(a) {
let b = this.bg;
this.bg = a;
if (b != this.bg) {
this.dh("ScrollTop", b, this.bg);
}
}
get scrollLeft() {
return this.bf;
}
set scrollLeft(a) {
let b = this.bf;
this.bf = a;
if (b != this.bf) {
this.dh("ScrollLeft", b, this.bf);
}
}
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.bg = this.view.getInitialScrollTop();
this.bf = this.view.getInitialScrollLeft();
this.dv();
this.dx();
}
onDetachedFromUI() {
this.view.onDetachedFromUI();
}
onAttachedToUI() {
this.view.onAttachedToUI();
}
provideContent(a) {
this.view.provideContent(a);
}
ar(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;
}
get lockScrollDirection() {
return this.v;
}
set lockScrollDirection(a) {
this.v = true;
}
get actualVerticalScrollbarHeight() {
return this.a5;
}
set actualVerticalScrollbarHeight(a) {
let b = this.a5;
this.a5 = a;
if (b != this.a5) {
this.dh("ActualVerticalScrollbarHeight", b, this.a5);
}
}
get actualHorizontalScrollbarWidth() {
return this.a0;
}
set actualHorizontalScrollbarWidth(a) {
let b = this.a0;
this.a0 = a;
if (b != this.a0) {
this.dh("ActualHorizontalScrollbarWidth", b, this.a0);
}
}
get scrollbarStyle() {
return this.h;
}
set scrollbarStyle(a) {
let b = this.h;
this.h = a;
if (b != this.h) {
this.dh("ScrollbarStyle", enumGetBox(ScrollbarStyle_$type, b), enumGetBox(ScrollbarStyle_$type, this.h));
}
}
get horizontalScrollbarStatus() {
return this.a8;
}
set horizontalScrollbarStatus(a) {
let b = this.a8;
this.a8 = a;
if (b != this.a8) {
this.dh("HorizontalScrollbarStatus", b, this.a8);
}
}
get verticalScrollbarStatus() {
return this.bj;
}
set verticalScrollbarStatus(a) {
let b = this.bj;
this.bj = a;
if (b != this.bj) {
this.dh("VerticalOpacity", b, this.bj);
}
}
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();
}
df(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 };
}
de(a) {
if (this.p) {
let b = a.y - this.d0.y;
let 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);
}
}
get isScrolling() {
return this._isScrolling;
}
set isScrolling(a) {
this._isScrolling = a;
}
scrollTo(a, b) {
this.view.detachNativeScroll();
this.bc = a - this.scrollLeft;
this.bd = b - this.scrollTop;
this.dn();
}
dp(a, b) {
this.view.detachNativeScroll();
this.bc += a;
this.bd += b;
this.dn();
}
dq(a, b) {
this.view.detachNativeScroll();
this.bc += a;
this.bd += b;
this.du();
}
dn() {
if (this.w) {
return;
}
this.w = true;
this.view.requestWork(runOn(this, this.du));
}
du() {
this.w = false;
let a = this.bc;
let 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;
}
let c = Math.round(this.scrollTop + b);
let 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, ((() => {
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.az.count > 0) {
this.az._inner[this.az.count - 1] = false;
}
this.az.add(true);
this.executionContext.executeDelayed(() => {
if (this.az._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.az.removeAt(0);
}, 50);
}
finally {
this.ay = false;
}
}
}
dx() {
if (isNaN_(this.contentHeight)) {
return;
}
this.dw(this.contentHeight, this.viewportHeight, this.scrollTop, true);
}
dv() {
if (isNaN_(this.contentWidth)) {
return;
}
this.dw(this.contentWidth, this.viewportWidth, this.scrollLeft, false);
}
aa(a, b) {
if (Math.abs(a - b) <= 2) {
return true;
}
return false;
}
dw(a, b, c, d) {
if (b == 0 || a == 0) {
return;
}
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) || this.aa(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);
}
}
dd(a) {
this.r = false;
this.q = false;
this.s = false;
this.p = false;
}
c2(a, b) {
this.horizontalScrollbarStatus = this.bv + this.j.o * (this.b6 - this.bv);
}
c3(a, b) {
this.verticalScrollbarStatus = this.bw + this.k.o * (this.b7 - this.bw);
}
c4() {
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;
}
c5() {
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;
}
c8() {
if (!this.n || this.isDraggingHBar) {
return;
}
if (this.scrollbarStyle == 1 || this.scrollbarStyle == 2) {
this.ds();
}
this.n = false;
}
c9() {
if (!this.y || this.isDraggingVBar) {
return;
}
if (this.scrollbarStyle == 1 || this.scrollbarStyle == 2) {
this.dt();
}
this.y = false;
}
ds() {
if (!this.o) {
this.o = true;
this.cd = this.executionContext.getCurrentRelativeTime();
this.executionContext.executeDelayed(runOn(this, this.c6), this.cc);
}
else {
this.cd = this.executionContext.getCurrentRelativeTime();
}
}
dt() {
if (!this.z) {
this.z = true;
this.ce = this.executionContext.getCurrentRelativeTime();
this.executionContext.executeDelayed(runOn(this, this.c7), this.cc);
}
else {
this.ce = this.executionContext.getCurrentRelativeTime();
}
}
c6() {
if (!this.o) {
return;
}
let a = this.executionContext.getCurrentRelativeTime();
if (a - this.cd >= this.cc) {
if (!this.j.f() && this.horizontalScrollbarStatus != 0) {
this.bv = this.horizontalScrollbarStatus;
this.b6 = 0;
this.j.v();
}
this.o = false;
}
else {
this.executionContext.executeDelayed(runOn(this, this.c6), (this.cc - (a - this.cd)));
}
}
c7() {
if (!this.z) {
return;
}
let a = this.executionContext.getCurrentRelativeTime();
if (a - this.ce >= this.cc) {
if (!this.k.f() && this.verticalScrollbarStatus != 0) {
this.bw = this.verticalScrollbarStatus;
this.b7 = 0;
this.k.v();
}
this.z = false;
}
else {
this.executionContext.executeDelayed(runOn(this, this.c7), (this.cc - (a - this.ce)));
}
}
}
Scroller.$t = /*@__PURE__*/ markType(Scroller, 'Scroller', Base.$, [INotifyPropertyChanged_$type]);
return Scroller;
})();