/*!
 * better-scroll / core
 * (c) 2016-2023 ustbhuangyi
 * Released under the MIT License.
 */
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
var z = function(o, t) {
  return z = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(e, r) {
    e.__proto__ = r;
  } || function(e, r) {
    for (var i in r)
      Object.prototype.hasOwnProperty.call(r, i) && (e[i] = r[i]);
  }, z(o, t);
};
function O(o, t) {
  z(o, t);
  function e() {
    this.constructor = o;
  }
  o.prototype = t === null ? Object.create(t) : (e.prototype = t.prototype, new e());
}
var E = function() {
  return E = Object.assign || function(t) {
    for (var e, r = 1, i = arguments.length; r < i; r++) {
      e = arguments[r];
      for (var n in e)
        Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
    }
    return t;
  }, E.apply(this, arguments);
};
function et() {
  for (var o = 0, t = 0, e = arguments.length; t < e; t++)
    o += arguments[t].length;
  for (var r = Array(o), i = 0, t = 0; t < e; t++)
    for (var n = arguments[t], s = 0, a = n.length; s < a; s++, i++)
      r[i] = n[s];
  return r;
}
var ut = [
  {
    sourceKey: "scroller.scrollBehaviorX.currentPos",
    key: "x"
  },
  {
    sourceKey: "scroller.scrollBehaviorY.currentPos",
    key: "y"
  },
  {
    sourceKey: "scroller.scrollBehaviorX.hasScroll",
    key: "hasHorizontalScroll"
  },
  {
    sourceKey: "scroller.scrollBehaviorY.hasScroll",
    key: "hasVerticalScroll"
  },
  {
    sourceKey: "scroller.scrollBehaviorX.contentSize",
    key: "scrollerWidth"
  },
  {
    sourceKey: "scroller.scrollBehaviorY.contentSize",
    key: "scrollerHeight"
  },
  {
    sourceKey: "scroller.scrollBehaviorX.maxScrollPos",
    key: "maxScrollX"
  },
  {
    sourceKey: "scroller.scrollBehaviorY.maxScrollPos",
    key: "maxScrollY"
  },
  {
    sourceKey: "scroller.scrollBehaviorX.minScrollPos",
    key: "minScrollX"
  },
  {
    sourceKey: "scroller.scrollBehaviorY.minScrollPos",
    key: "minScrollY"
  },
  {
    sourceKey: "scroller.scrollBehaviorX.movingDirection",
    key: "movingDirectionX"
  },
  {
    sourceKey: "scroller.scrollBehaviorY.movingDirection",
    key: "movingDirectionY"
  },
  {
    sourceKey: "scroller.scrollBehaviorX.direction",
    key: "directionX"
  },
  {
    sourceKey: "scroller.scrollBehaviorY.direction",
    key: "directionY"
  },
  {
    sourceKey: "scroller.actions.enabled",
    key: "enabled"
  },
  {
    sourceKey: "scroller.animater.pending",
    key: "pending"
  },
  {
    sourceKey: "scroller.animater.stop",
    key: "stop"
  },
  {
    sourceKey: "scroller.scrollTo",
    key: "scrollTo"
  },
  {
    sourceKey: "scroller.scrollBy",
    key: "scrollBy"
  },
  {
    sourceKey: "scroller.scrollToElement",
    key: "scrollToElement"
  },
  {
    sourceKey: "scroller.resetPosition",
    key: "resetPosition"
  }
];
function M(o) {
  console.error("[BScroll warn]: " + o);
}
var v = typeof window < "u", w = v && navigator.userAgent.toLowerCase(), pt = !!(w && /wechatdevtools/.test(w)), ft = w && w.indexOf("android") > 0, vt = function() {
  if (typeof w == "string") {
    var o = /os (\d\d?_\d(_\d)?)/, t = o.exec(w);
    if (!t)
      return !1;
    var e = t[1].split("_").map(function(r) {
      return parseInt(r, 10);
    });
    return e[0] === 13 && e[1] >= 4;
  }
  return !1;
}(), ot = !1;
if (v) {
  var dt = "test-passive";
  try {
    var U = {};
    Object.defineProperty(U, "passive", {
      get: function() {
        ot = !0;
      }
    }), window.addEventListener(dt, function() {
    }, U);
  } catch {
  }
}
function b() {
  return window.performance && window.performance.now && window.performance.timing ? window.performance.now() + window.performance.timing.navigationStart : +/* @__PURE__ */ new Date();
}
var K = function(o, t) {
  for (var e in t)
    o[e] = t[e];
  return o;
};
function R(o) {
  return o == null;
}
function V(o, t, e) {
  return o < t ? t : o > e ? e : o;
}
var W = v && document.createElement("div").style, P = function() {
  if (!v)
    return !1;
  for (var o = [
    {
      key: "standard",
      value: "transform"
    },
    {
      key: "webkit",
      value: "webkitTransform"
    },
    {
      key: "Moz",
      value: "MozTransform"
    },
    {
      key: "O",
      value: "OTransform"
    },
    {
      key: "ms",
      value: "msTransform"
    }
  ], t = 0, e = o; t < e.length; t++) {
    var r = e[t];
    if (W[r.value] !== void 0)
      return r.key;
  }
  return !1;
}();
function d(o) {
  return P === !1 ? o : P === "standard" ? o === "transitionEnd" ? "transitionend" : o : P + o.charAt(0).toUpperCase() + o.substr(1);
}
function rt(o) {
  return typeof o == "string" ? document.querySelector(o) : o;
}
function yt(o, t, e, r) {
  var i = ot ? {
    passive: !1,
    capture: !!r
  } : !!r;
  o.addEventListener(t, e, i);
}
function mt(o, t, e, r) {
  o.removeEventListener(t, e, {
    capture: !!r
  });
}
function it(o) {
  o.cancelable && o.preventDefault();
}
function j(o) {
  for (var t = 0, e = 0; o; )
    t -= o.offsetLeft, e -= o.offsetTop, o = o.offsetParent;
  return {
    left: t,
    top: e
  };
}
P && P !== "standard" && "" + P.toLowerCase();
var gt = d("transform"), nt = d("transition"), kt = v && d("perspective") in W, q = v && ("ontouchstart" in window || pt), Tt = v && nt in W, T = {
  transform: gt,
  transition: nt,
  transitionTimingFunction: d("transitionTimingFunction"),
  transitionDuration: d("transitionDuration"),
  transitionDelay: d("transitionDelay"),
  transformOrigin: d("transformOrigin"),
  transitionEnd: d("transitionEnd"),
  transitionProperty: d("transitionProperty")
}, F = {
  touchstart: 1,
  touchmove: 1,
  touchend: 1,
  touchcancel: 1,
  mousedown: 2,
  mousemove: 2,
  mouseup: 2
};
function Z(o) {
  if (o instanceof window.SVGElement) {
    var t = o.getBoundingClientRect();
    return {
      top: t.top,
      left: t.left,
      width: t.width,
      height: t.height
    };
  } else
    return {
      top: o.offsetTop,
      left: o.offsetLeft,
      width: o.offsetWidth,
      height: o.offsetHeight
    };
}
function B(o, t) {
  for (var e in t)
    if (t[e].test(o[e]))
      return !0;
  return !1;
}
var bt = B;
function St(o, t) {
  var e = document.createEvent("Event");
  e.initEvent(t, !0, !0), e.pageX = o.pageX, e.pageY = o.pageY, o.target.dispatchEvent(e);
}
function st(o, t) {
  t === void 0 && (t = "click");
  var e;
  o.type === "mouseup" ? e = o : (o.type === "touchend" || o.type === "touchcancel") && (e = o.changedTouches[0]);
  var r = {};
  e && (r.screenX = e.screenX || 0, r.screenY = e.screenY || 0, r.clientX = e.clientX || 0, r.clientY = e.clientY || 0);
  var i, n = !0, s = !0, a = o.ctrlKey, c = o.shiftKey, h = o.altKey, l = o.metaKey, u = {
    ctrlKey: a,
    shiftKey: c,
    altKey: h,
    metaKey: l
  };
  if (typeof MouseEvent < "u")
    try {
      i = new MouseEvent(t, K(E({
        bubbles: n,
        cancelable: s
      }, u), r));
    } catch {
      p();
    }
  else
    p();
  function p() {
    i = document.createEvent("Event"), i.initEvent(t, n, s), K(i, r);
  }
  i.forwardedTouchEvent = !0, i._constructed = !0, o.target.dispatchEvent(i);
}
function Pt(o) {
  st(o, "dblclick");
}
var k = {
  // easeOutQuint
  swipe: {
    style: "cubic-bezier(0.23, 1, 0.32, 1)",
    fn: function(o) {
      return 1 + --o * o * o * o * o;
    }
  },
  // easeOutQuard
  swipeBounce: {
    style: "cubic-bezier(0.25, 0.46, 0.45, 0.94)",
    fn: function(o) {
      return o * (2 - o);
    }
  },
  // easeOutQuart
  bounce: {
    style: "cubic-bezier(0.165, 0.84, 0.44, 1)",
    fn: function(o) {
      return 1 - --o * o * o * o;
    }
  }
}, wt = 1e3 / 60, m = v && window;
function at() {
}
var ht = function() {
  return v ? m.requestAnimationFrame || m.webkitRequestAnimationFrame || m.mozRequestAnimationFrame || m.oRequestAnimationFrame || // if all else fails, use setTimeout
  function(o) {
    return window.setTimeout(o, o.interval || wt);
  } : at;
}(), S = function() {
  return v ? m.cancelAnimationFrame || m.webkitCancelAnimationFrame || m.mozCancelAnimationFrame || m.oCancelAnimationFrame || function(o) {
    window.clearTimeout(o);
  } : at;
}(), G = function(o) {
}, H = {
  enumerable: !0,
  configurable: !0,
  get: G,
  set: G
}, Et = function(o, t) {
  for (var e = t.split("."), r = 0; r < e.length - 1; r++)
    if (o = o[e[r]], typeof o != "object" || !o)
      return;
  var i = e.pop();
  return typeof o[i] == "function" ? function() {
    return o[i].apply(o, arguments);
  } : o[i];
}, Bt = function(o, t, e) {
  for (var r = t.split("."), i, n = 0; n < r.length - 1; n++)
    i = r[n], o[i] || (o[i] = {}), o = o[i];
  o[r.pop()] = e;
};
function Ct(o, t, e) {
  H.get = function() {
    return Et(this, t);
  }, H.set = function(i) {
    Bt(this, t, i);
  }, Object.defineProperty(o, e, H);
}
var g = (
  /** @class */
  function() {
    function o(t) {
      this.events = {}, this.eventTypes = {}, this.registerType(t);
    }
    return o.prototype.on = function(t, e, r) {
      return r === void 0 && (r = this), this.hasType(t), this.events[t] || (this.events[t] = []), this.events[t].push([e, r]), this;
    }, o.prototype.once = function(t, e, r) {
      var i = this;
      r === void 0 && (r = this), this.hasType(t);
      var n = function() {
        for (var s = [], a = 0; a < arguments.length; a++)
          s[a] = arguments[a];
        i.off(t, n);
        var c = e.apply(r, s);
        if (c === !0)
          return c;
      };
      return n.fn = e, this.on(t, n), this;
    }, o.prototype.off = function(t, e) {
      if (!t && !e)
        return this.events = {}, this;
      if (t) {
        if (this.hasType(t), !e)
          return this.events[t] = [], this;
        var r = this.events[t];
        if (!r)
          return this;
        for (var i = r.length; i--; )
          (r[i][0] === e || r[i][0] && r[i][0].fn === e) && r.splice(i, 1);
        return this;
      }
    }, o.prototype.trigger = function(t) {
      for (var e = [], r = 1; r < arguments.length; r++)
        e[r - 1] = arguments[r];
      this.hasType(t);
      var i = this.events[t];
      if (i)
        for (var n = i.length, s = et(i), a, c = 0; c < n; c++) {
          var h = s[c], l = h[0], u = h[1];
          if (l && (a = l.apply(u, e), a === !0))
            return a;
        }
    }, o.prototype.registerType = function(t) {
      var e = this;
      t.forEach(function(r) {
        e.eventTypes[r] = r;
      });
    }, o.prototype.destroy = function() {
      this.events = {}, this.eventTypes = {};
    }, o.prototype.hasType = function(t) {
      var e = this.eventTypes, r = e[t] === t;
      r || M('EventEmitter has used unknown event type: "' + t + '", should be oneof [' + ("" + Object.keys(e).map(function(i) {
        return JSON.stringify(i);
      })) + "]");
    }, o;
  }()
), Y = (
  /** @class */
  function() {
    function o(t, e) {
      this.wrapper = t, this.events = e, this.addDOMEvents();
    }
    return o.prototype.destroy = function() {
      this.removeDOMEvents(), this.events = [];
    }, o.prototype.addDOMEvents = function() {
      this.handleDOMEvents(yt);
    }, o.prototype.removeDOMEvents = function() {
      this.handleDOMEvents(mt);
    }, o.prototype.handleDOMEvents = function(t) {
      var e = this, r = this.wrapper;
      this.events.forEach(function(i) {
        t(r, i.name, e, !!i.capture);
      });
    }, o.prototype.handleEvent = function(t) {
      var e = t.type;
      this.events.some(function(r) {
        return r.name === e ? (r.handler(t), !0) : !1;
      });
    }, o;
  }()
), Dt = (
  /** @class */
  function() {
    function o() {
    }
    return o;
  }()
), xt = (
  /** @class */
  function(o) {
    O(t, o);
    function t() {
      var e = o.call(this) || this;
      return e.startX = 0, e.startY = 0, e.scrollX = !1, e.scrollY = !0, e.freeScroll = !1, e.directionLockThreshold = 0, e.eventPassthrough = "", e.click = !1, e.dblclick = !1, e.tap = "", e.bounce = {
        top: !0,
        bottom: !0,
        left: !0,
        right: !0
      }, e.bounceTime = 800, e.momentum = !0, e.momentumLimitTime = 300, e.momentumLimitDistance = 15, e.swipeTime = 2500, e.swipeBounceTime = 500, e.deceleration = 15e-4, e.flickLimitTime = 200, e.flickLimitDistance = 100, e.resizePolling = 60, e.probeType = 0, e.stopPropagation = !1, e.preventDefault = !0, e.preventDefaultException = {
        tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT|AUDIO)$/
      }, e.tagException = {
        tagName: /^TEXTAREA$/
      }, e.HWCompositing = !0, e.useTransition = !0, e.bindToWrapper = !1, e.bindToTarget = !1, e.disableMouse = q, e.disableTouch = !q, e.autoBlur = !0, e.autoEndDistance = 5, e.outOfBoundaryDampingFactor = 1 / 3, e.specifiedIndexAsContent = 0, e.quadrant = 1, e;
    }
    return t.prototype.merge = function(e) {
      if (!e)
        return this;
      for (var r in e) {
        if (r === "bounce") {
          this.bounce = this.resolveBounce(e[r]);
          continue;
        }
        this[r] = e[r];
      }
      return this;
    }, t.prototype.process = function() {
      return this.translateZ = this.HWCompositing && kt ? " translateZ(1px)" : "", this.useTransition = this.useTransition && Tt, this.preventDefault = !this.eventPassthrough && this.preventDefault, this.scrollX = this.eventPassthrough === "horizontal" ? !1 : this.scrollX, this.scrollY = this.eventPassthrough === "vertical" ? !1 : this.scrollY, this.freeScroll = this.freeScroll && !this.eventPassthrough, this.scrollX = this.freeScroll ? !0 : this.scrollX, this.scrollY = this.freeScroll ? !0 : this.scrollY, this.directionLockThreshold = this.eventPassthrough ? 0 : this.directionLockThreshold, this;
    }, t.prototype.resolveBounce = function(e) {
      var r = {
        top: !0,
        right: !0,
        bottom: !0,
        left: !0
      }, i = {
        top: !1,
        right: !1,
        bottom: !1,
        left: !1
      }, n;
      return typeof e == "object" ? n = K(r, e) : n = e ? r : i, n;
    }, t;
  }(Dt)
), Xt = (
  /** @class */
  function() {
    function o(t, e) {
      this.wrapper = t, this.options = e, this.hooks = new g([
        "beforeStart",
        "start",
        "move",
        "end",
        "click"
      ]), this.handleDOMEvents();
    }
    return o.prototype.handleDOMEvents = function() {
      var t = this.options, e = t.bindToWrapper, r = t.disableMouse, i = t.disableTouch, n = t.click, s = this.wrapper, a = e ? s : window, c = [], h = [], l = !i, u = !r;
      n && c.push({
        name: "click",
        handler: this.click.bind(this),
        capture: !0
      }), l && (c.push({
        name: "touchstart",
        handler: this.start.bind(this)
      }), h.push({
        name: "touchmove",
        handler: this.move.bind(this)
      }, {
        name: "touchend",
        handler: this.end.bind(this)
      }, {
        name: "touchcancel",
        handler: this.end.bind(this)
      })), u && (c.push({
        name: "mousedown",
        handler: this.start.bind(this)
      }), h.push({
        name: "mousemove",
        handler: this.move.bind(this)
      }, {
        name: "mouseup",
        handler: this.end.bind(this)
      })), this.wrapperEventRegister = new Y(s, c), this.targetEventRegister = new Y(a, h);
    }, o.prototype.beforeHandler = function(t, e) {
      var r = this.options, i = r.preventDefault, n = r.stopPropagation, s = r.preventDefaultException, a = {
        start: function() {
          return i && !B(t.target, s);
        },
        end: function() {
          return i && !B(t.target, s);
        },
        move: function() {
          return i;
        }
      };
      a[e]() && t.preventDefault(), n && t.stopPropagation();
    }, o.prototype.setInitiated = function(t) {
      t === void 0 && (t = 0), this.initiated = t;
    }, o.prototype.start = function(t) {
      var e = F[t.type];
      if (!(this.initiated && this.initiated !== e)) {
        if (this.setInitiated(e), bt(t.target, this.options.tagException)) {
          this.setInitiated();
          return;
        }
        if (!(e === 2 && t.button !== 0) && !this.hooks.trigger(this.hooks.eventTypes.beforeStart, t)) {
          this.beforeHandler(t, "start");
          var r = t.touches ? t.touches[0] : t;
          this.pointX = r.pageX, this.pointY = r.pageY, this.hooks.trigger(this.hooks.eventTypes.start, t);
        }
      }
    }, o.prototype.move = function(t) {
      if (F[t.type] === this.initiated) {
        this.beforeHandler(t, "move");
        var e = t.touches ? t.touches[0] : t, r = e.pageX - this.pointX, i = e.pageY - this.pointY;
        if (this.pointX = e.pageX, this.pointY = e.pageY, !this.hooks.trigger(this.hooks.eventTypes.move, {
          deltaX: r,
          deltaY: i,
          e: t
        })) {
          var n = document.documentElement.scrollLeft || window.pageXOffset || document.body.scrollLeft, s = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop, a = this.pointX - n, c = this.pointY - s, h = this.options.autoEndDistance;
          (a > document.documentElement.clientWidth - h || c > document.documentElement.clientHeight - h || a < h || c < h) && this.end(t);
        }
      }
    }, o.prototype.end = function(t) {
      F[t.type] === this.initiated && (this.setInitiated(), this.beforeHandler(t, "end"), this.hooks.trigger(this.hooks.eventTypes.end, t));
    }, o.prototype.click = function(t) {
      this.hooks.trigger(this.hooks.eventTypes.click, t);
    }, o.prototype.setContent = function(t) {
      t !== this.wrapper && (this.wrapper = t, this.rebindDOMEvents());
    }, o.prototype.rebindDOMEvents = function() {
      this.wrapperEventRegister.destroy(), this.targetEventRegister.destroy(), this.handleDOMEvents();
    }, o.prototype.destroy = function() {
      this.wrapperEventRegister.destroy(), this.targetEventRegister.destroy(), this.hooks.destroy();
    }, o;
  }()
), _ = {
  x: ["translateX", "px"],
  y: ["translateY", "px"]
}, Mt = (
  /** @class */
  function() {
    function o(t) {
      this.setContent(t), this.hooks = new g(["beforeTranslate", "translate"]);
    }
    return o.prototype.getComputedPosition = function() {
      var t = window.getComputedStyle(this.content, null), e = t[T.transform].split(")")[0].split(", "), r = +(e[12] || e[4]) || 0, i = +(e[13] || e[5]) || 0;
      return {
        x: r,
        y: i
      };
    }, o.prototype.translate = function(t) {
      var e = [];
      Object.keys(t).forEach(function(r) {
        if (_[r]) {
          var i = _[r][0];
          if (i) {
            var n = _[r][1], s = t[r];
            e.push(i + "(" + s + n + ")");
          }
        }
      }), this.hooks.trigger(this.hooks.eventTypes.beforeTranslate, e, t), this.style[T.transform] = e.join(" "), this.hooks.trigger(this.hooks.eventTypes.translate, t);
    }, o.prototype.setContent = function(t) {
      this.content !== t && (this.content = t, this.style = t.style);
    }, o.prototype.destroy = function() {
      this.hooks.destroy();
    }, o;
  }()
), ct = (
  /** @class */
  function() {
    function o(t, e, r) {
      this.translater = e, this.options = r, this.timer = 0, this.hooks = new g([
        "move",
        "end",
        "beforeForceStop",
        "forceStop",
        "callStop",
        "time",
        "timeFunction"
      ]), this.setContent(t);
    }
    return o.prototype.translate = function(t) {
      this.translater.translate(t);
    }, o.prototype.setPending = function(t) {
      this.pending = t;
    }, o.prototype.setForceStopped = function(t) {
      this.forceStopped = t;
    }, o.prototype.setCallStop = function(t) {
      this.callStopWhenPending = t;
    }, o.prototype.setContent = function(t) {
      this.content !== t && (this.content = t, this.style = t.style, this.stop());
    }, o.prototype.clearTimer = function() {
      this.timer && (S(this.timer), this.timer = 0);
    }, o.prototype.destroy = function() {
      this.hooks.destroy(), S(this.timer);
    }, o;
  }()
), Yt = function(o, t, e, r) {
  var i = function(h, l) {
    var u = h - l, p = u > 0 ? -1 : u < 0 ? 1 : 0;
    return p;
  }, n = i(t.x, o.x), s = i(t.y, o.y), a = e.x - r.x, c = e.y - r.y;
  return n * a <= 0 && s * c <= 0;
}, Ot = (
  /** @class */
  function(o) {
    O(t, o);
    function t() {
      return o !== null && o.apply(this, arguments) || this;
    }
    return t.prototype.startProbe = function(e, r) {
      var i = this, n = e, s = function() {
        var a = i.translater.getComputedPosition();
        Yt(e, r, a, n) && i.hooks.trigger(i.hooks.eventTypes.move, a), i.pending || (i.callStopWhenPending ? i.callStopWhenPending = !1 : i.hooks.trigger(i.hooks.eventTypes.end, a)), n = a, i.pending && (i.timer = ht(s));
      };
      this.callStopWhenPending && this.setCallStop(!1), S(this.timer), s();
    }, t.prototype.transitionTime = function(e) {
      e === void 0 && (e = 0), this.style[T.transitionDuration] = e + "ms", this.hooks.trigger(this.hooks.eventTypes.time, e);
    }, t.prototype.transitionTimingFunction = function(e) {
      this.style[T.transitionTimingFunction] = e, this.hooks.trigger(this.hooks.eventTypes.timeFunction, e);
    }, t.prototype.transitionProperty = function() {
      this.style[T.transitionProperty] = T.transform;
    }, t.prototype.move = function(e, r, i, n) {
      this.setPending(i > 0), this.transitionTimingFunction(n), this.transitionProperty(), this.transitionTime(i), this.translate(r);
      var s = this.options.probeType === 3;
      i && s && this.startProbe(e, r), i || (this._reflow = this.content.offsetHeight, s && this.hooks.trigger(this.hooks.eventTypes.move, r), this.hooks.trigger(this.hooks.eventTypes.end, r));
    }, t.prototype.doStop = function() {
      var e = this.pending;
      if (this.setForceStopped(!1), this.setCallStop(!1), e) {
        this.setPending(!1), S(this.timer);
        var r = this.translater.getComputedPosition(), i = r.x, n = r.y;
        this.transitionTime(), this.translate({ x: i, y: n }), this.setForceStopped(!0), this.setCallStop(!0), this.hooks.trigger(this.hooks.eventTypes.forceStop, { x: i, y: n });
      }
      return e;
    }, t.prototype.stop = function() {
      var e = this.doStop();
      e && this.hooks.trigger(this.hooks.eventTypes.callStop);
    }, t;
  }(ct)
), At = (
  /** @class */
  function(o) {
    O(t, o);
    function t() {
      return o !== null && o.apply(this, arguments) || this;
    }
    return t.prototype.move = function(e, r, i, n) {
      if (!i) {
        this.translate(r), this.options.probeType === 3 && this.hooks.trigger(this.hooks.eventTypes.move, r), this.hooks.trigger(this.hooks.eventTypes.end, r);
        return;
      }
      this.animate(e, r, i, n);
    }, t.prototype.animate = function(e, r, i, n) {
      var s = this, a = b(), c = a + i, h = this.options.probeType === 3, l = function() {
        var u = b();
        if (u >= c) {
          s.translate(r), h && s.hooks.trigger(s.hooks.eventTypes.move, r), s.hooks.trigger(s.hooks.eventTypes.end, r);
          return;
        }
        u = (u - a) / i;
        var p = n(u), y = {};
        Object.keys(r).forEach(function(f) {
          var N = e[f], lt = r[f];
          y[f] = (lt - N) * p + N;
        }), s.translate(y), h && s.hooks.trigger(s.hooks.eventTypes.move, y), s.pending && (s.timer = ht(l)), s.pending || (s.callStopWhenPending ? s.callStopWhenPending = !1 : s.hooks.trigger(s.hooks.eventTypes.end, r));
      };
      this.setPending(!0), this.callStopWhenPending && this.setCallStop(!1), S(this.timer), l();
    }, t.prototype.doStop = function() {
      var e = this.pending;
      if (this.setForceStopped(!1), this.setCallStop(!1), e) {
        this.setPending(!1), S(this.timer);
        var r = this.translater.getComputedPosition();
        this.setForceStopped(!0), this.setCallStop(!0), this.hooks.trigger(this.hooks.eventTypes.forceStop, r);
      }
      return e;
    }, t.prototype.stop = function() {
      var e = this.doStop();
      e && this.hooks.trigger(this.hooks.eventTypes.callStop);
    }, t;
  }(ct)
);
function Lt(o, t, e) {
  var r = e.useTransition, i = {};
  return Object.defineProperty(i, "probeType", {
    enumerable: !0,
    configurable: !1,
    get: function() {
      return e.probeType;
    }
  }), r ? new Ot(o, t, i) : new At(o, t, i);
}
var $ = (
  /** @class */
  function() {
    function o(t, e, r) {
      this.wrapper = t, this.options = r, this.hooks = new g([
        "beforeComputeBoundary",
        "computeBoundary",
        "momentum",
        "end",
        "ignoreHasScroll"
      ]), this.refresh(e);
    }
    return o.prototype.start = function() {
      this.dist = 0, this.setMovingDirection(
        0
        /* Default */
      ), this.setDirection(
        0
        /* Default */
      );
    }, o.prototype.move = function(t) {
      return t = this.hasScroll ? t : 0, this.setMovingDirection(t), this.performDampingAlgorithm(t, this.options.outOfBoundaryDampingFactor);
    }, o.prototype.setMovingDirection = function(t) {
      this.movingDirection = t > 0 ? -1 : t < 0 ? 1 : 0;
    }, o.prototype.setDirection = function(t) {
      this.direction = t > 0 ? -1 : t < 0 ? 1 : 0;
    }, o.prototype.performDampingAlgorithm = function(t, e) {
      var r = this.currentPos + t;
      return (r > this.minScrollPos || r < this.maxScrollPos) && (r > this.minScrollPos && this.options.bounces[0] || r < this.maxScrollPos && this.options.bounces[1] ? r = this.currentPos + t * e : r = r > this.minScrollPos ? this.minScrollPos : this.maxScrollPos), r;
    }, o.prototype.end = function(t) {
      var e = {
        duration: 0
      }, r = Math.abs(this.currentPos - this.startPos);
      if (this.options.momentum && t < this.options.momentumLimitTime && r > this.options.momentumLimitDistance) {
        var i = this.direction === -1 && this.options.bounces[0] || this.direction === 1 && this.options.bounces[1] ? this.wrapperSize : 0;
        e = this.hasScroll ? this.momentum(this.currentPos, this.startPos, t, this.maxScrollPos, this.minScrollPos, i, this.options) : { destination: this.currentPos, duration: 0 };
      } else
        this.hooks.trigger(this.hooks.eventTypes.end, e);
      return e;
    }, o.prototype.momentum = function(t, e, r, i, n, s, a) {
      a === void 0 && (a = this.options);
      var c = t - e, h = Math.abs(c) / r, l = a.deceleration, u = a.swipeBounceTime, p = a.swipeTime, y = Math.min(p, h * 2 / l), f = {
        destination: t + h * h / l * (c < 0 ? -1 : 1),
        duration: y,
        rate: 15
      };
      return this.hooks.trigger(this.hooks.eventTypes.momentum, f, c), f.destination < i ? (f.destination = s ? Math.max(i - s / 4, i - s / f.rate * h) : i, f.duration = u) : f.destination > n && (f.destination = s ? Math.min(n + s / 4, n + s / f.rate * h) : n, f.duration = u), f.destination = Math.round(f.destination), f;
    }, o.prototype.updateDirection = function() {
      var t = this.currentPos - this.absStartPos;
      this.setDirection(t);
    }, o.prototype.refresh = function(t) {
      var e = this.options.rect, r = e.size, i = e.position, n = window.getComputedStyle(this.wrapper, null).position === "static", s = Z(this.wrapper);
      this.wrapperSize = this.wrapper[r === "width" ? "clientWidth" : "clientHeight"], this.setContent(t);
      var a = Z(this.content);
      this.contentSize = a[r], this.relativeOffset = a[i], n && (this.relativeOffset -= s[i]), this.computeBoundary(), this.setDirection(
        0
        /* Default */
      );
    }, o.prototype.setContent = function(t) {
      t !== this.content && (this.content = t, this.resetState());
    }, o.prototype.resetState = function() {
      this.currentPos = 0, this.startPos = 0, this.dist = 0, this.setDirection(
        0
        /* Default */
      ), this.setMovingDirection(
        0
        /* Default */
      ), this.resetStartPos();
    }, o.prototype.computeBoundary = function() {
      this.hooks.trigger(this.hooks.eventTypes.beforeComputeBoundary);
      var t = {
        minScrollPos: 0,
        maxScrollPos: this.wrapperSize - this.contentSize
      };
      t.maxScrollPos < 0 && (t.maxScrollPos -= this.relativeOffset, this.options.specifiedIndexAsContent === 0 && (t.minScrollPos = -this.relativeOffset)), this.hooks.trigger(this.hooks.eventTypes.computeBoundary, t), this.minScrollPos = t.minScrollPos, this.maxScrollPos = t.maxScrollPos, this.hasScroll = this.options.scrollable && this.maxScrollPos < this.minScrollPos, !this.hasScroll && this.minScrollPos < this.maxScrollPos && (this.maxScrollPos = this.minScrollPos, this.contentSize = this.wrapperSize);
    }, o.prototype.updatePosition = function(t) {
      this.currentPos = t;
    }, o.prototype.getCurrentPos = function() {
      return this.currentPos;
    }, o.prototype.checkInBoundary = function() {
      var t = this.adjustPosition(this.currentPos), e = t === this.getCurrentPos();
      return {
        position: t,
        inBoundary: e
      };
    }, o.prototype.adjustPosition = function(t) {
      return !this.hasScroll && !this.hooks.trigger(this.hooks.eventTypes.ignoreHasScroll) ? t = this.minScrollPos : t > this.minScrollPos ? t = this.minScrollPos : t < this.maxScrollPos && (t = this.maxScrollPos), t;
    }, o.prototype.updateStartPos = function() {
      this.startPos = this.currentPos;
    }, o.prototype.updateAbsStartPos = function() {
      this.absStartPos = this.currentPos;
    }, o.prototype.resetStartPos = function() {
      this.updateStartPos(), this.updateAbsStartPos();
    }, o.prototype.getAbsDist = function(t) {
      return this.dist += t, Math.abs(this.dist);
    }, o.prototype.destroy = function() {
      this.hooks.destroy();
    }, o;
  }()
), C, D, x, X, J = (C = {}, C.yes = function(o) {
  return !0;
}, C.no = function(o) {
  return it(o), !1;
}, C), Ft = (D = {}, D.horizontal = (x = {}, x.yes = "horizontal", x.no = "vertical", x), D.vertical = (X = {}, X.yes = "vertical", X.no = "horizontal", X), D), Ht = (
  /** @class */
  function() {
    function o(t, e, r) {
      this.directionLockThreshold = t, this.freeScroll = e, this.eventPassthrough = r, this.reset();
    }
    return o.prototype.reset = function() {
      this.directionLocked = "";
    }, o.prototype.checkMovingDirection = function(t, e, r) {
      return this.computeDirectionLock(t, e), this.handleEventPassthrough(r);
    }, o.prototype.adjustDelta = function(t, e) {
      return this.directionLocked === "horizontal" ? e = 0 : this.directionLocked === "vertical" && (t = 0), {
        deltaX: t,
        deltaY: e
      };
    }, o.prototype.computeDirectionLock = function(t, e) {
      this.directionLocked === "" && !this.freeScroll && (t > e + this.directionLockThreshold ? this.directionLocked = "horizontal" : e >= t + this.directionLockThreshold ? this.directionLocked = "vertical" : this.directionLocked = "none");
    }, o.prototype.handleEventPassthrough = function(t) {
      var e = Ft[this.directionLocked];
      if (e) {
        if (this.eventPassthrough === e.yes)
          return J.yes(t);
        if (this.eventPassthrough === e.no)
          return J.no(t);
      }
      return !1;
    }, o;
  }()
), _t = function(o, t, e) {
  return e === 2 ? [t, -o] : e === 3 ? [-o, -t] : e === 4 ? [-t, o] : [o, t];
}, zt = (
  /** @class */
  function() {
    function o(t, e, r, i, n) {
      this.hooks = new g([
        "start",
        "beforeMove",
        "scrollStart",
        "scroll",
        "beforeEnd",
        "end",
        "scrollEnd",
        "contentNotMoved",
        "detectMovingDirection",
        "coordinateTransformation"
      ]), this.scrollBehaviorX = t, this.scrollBehaviorY = e, this.actionsHandler = r, this.animater = i, this.options = n, this.directionLockAction = new Ht(n.directionLockThreshold, n.freeScroll, n.eventPassthrough), this.enabled = !0, this.bindActionsHandler();
    }
    return o.prototype.bindActionsHandler = function() {
      var t = this;
      this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.start, function(e) {
        return t.enabled ? t.handleStart(e) : !0;
      }), this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.move, function(e) {
        var r = e.deltaX, i = e.deltaY, n = e.e;
        if (!t.enabled)
          return !0;
        var s = _t(r, i, t.options.quadrant), a = s[0], c = s[1], h = {
          deltaX: a,
          deltaY: c
        };
        return t.hooks.trigger(t.hooks.eventTypes.coordinateTransformation, h), t.handleMove(h.deltaX, h.deltaY, n);
      }), this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.end, function(e) {
        return t.enabled ? t.handleEnd(e) : !0;
      }), this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.click, function(e) {
        t.enabled && !e._constructed && t.handleClick(e);
      });
    }, o.prototype.handleStart = function(t) {
      var e = b();
      this.fingerMoved = !1, this.contentMoved = !1, this.startTime = e, this.directionLockAction.reset(), this.scrollBehaviorX.start(), this.scrollBehaviorY.start(), this.animater.doStop(), this.scrollBehaviorX.resetStartPos(), this.scrollBehaviorY.resetStartPos(), this.hooks.trigger(this.hooks.eventTypes.start, t);
    }, o.prototype.handleMove = function(t, e, r) {
      if (!this.hooks.trigger(this.hooks.eventTypes.beforeMove, r)) {
        var i = this.scrollBehaviorX.getAbsDist(t), n = this.scrollBehaviorY.getAbsDist(e), s = b();
        if (this.checkMomentum(i, n, s))
          return !0;
        if (this.directionLockAction.checkMovingDirection(i, n, r))
          return this.actionsHandler.setInitiated(), !0;
        var a = this.directionLockAction.adjustDelta(t, e), c = this.scrollBehaviorX.getCurrentPos(), h = this.scrollBehaviorX.move(a.deltaX), l = this.scrollBehaviorY.getCurrentPos(), u = this.scrollBehaviorY.move(a.deltaY);
        if (!this.hooks.trigger(this.hooks.eventTypes.detectMovingDirection)) {
          this.fingerMoved || (this.fingerMoved = !0);
          var p = h !== c || u !== l;
          !this.contentMoved && !p && this.hooks.trigger(this.hooks.eventTypes.contentNotMoved), !this.contentMoved && p && (this.contentMoved = !0, this.hooks.trigger(this.hooks.eventTypes.scrollStart)), this.contentMoved && p && (this.animater.translate({
            x: h,
            y: u
          }), this.dispatchScroll(s));
        }
      }
    }, o.prototype.dispatchScroll = function(t) {
      t - this.startTime > this.options.momentumLimitTime && (this.startTime = t, this.scrollBehaviorX.updateStartPos(), this.scrollBehaviorY.updateStartPos(), this.options.probeType === 1 && this.hooks.trigger(this.hooks.eventTypes.scroll, this.getCurrentPos())), this.options.probeType > 1 && this.hooks.trigger(this.hooks.eventTypes.scroll, this.getCurrentPos());
    }, o.prototype.checkMomentum = function(t, e, r) {
      return r - this.endTime > this.options.momentumLimitTime && e < this.options.momentumLimitDistance && t < this.options.momentumLimitDistance;
    }, o.prototype.handleEnd = function(t) {
      if (!this.hooks.trigger(this.hooks.eventTypes.beforeEnd, t)) {
        var e = this.getCurrentPos();
        if (this.scrollBehaviorX.updateDirection(), this.scrollBehaviorY.updateDirection(), this.hooks.trigger(this.hooks.eventTypes.end, t, e))
          return !0;
        e = this.ensureIntegerPos(e), this.animater.translate(e), this.endTime = b();
        var r = this.endTime - this.startTime;
        this.hooks.trigger(this.hooks.eventTypes.scrollEnd, e, r);
      }
    }, o.prototype.ensureIntegerPos = function(t) {
      this.ensuringInteger = !0;
      var e = t.x, r = t.y, i = this.scrollBehaviorX, n = i.minScrollPos, s = i.maxScrollPos, a = this.scrollBehaviorY, c = a.minScrollPos, h = a.maxScrollPos;
      return e = e > 0 ? Math.ceil(e) : Math.floor(e), r = r > 0 ? Math.ceil(r) : Math.floor(r), e = V(e, s, n), r = V(r, h, c), { x: e, y: r };
    }, o.prototype.handleClick = function(t) {
      B(t.target, this.options.preventDefaultException) || (it(t), t.stopPropagation());
    }, o.prototype.getCurrentPos = function() {
      return {
        x: this.scrollBehaviorX.getCurrentPos(),
        y: this.scrollBehaviorY.getCurrentPos()
      };
    }, o.prototype.refresh = function() {
      this.endTime = 0;
    }, o.prototype.destroy = function() {
      this.hooks.destroy();
    }, o;
  }()
);
function Kt(o) {
  var t = [
    "click",
    "bindToWrapper",
    "disableMouse",
    "disableTouch",
    "preventDefault",
    "stopPropagation",
    "tagException",
    "preventDefaultException",
    "autoEndDistance"
  ].reduce(function(e, r) {
    return e[r] = o[r], e;
  }, {});
  return t;
}
function Q(o, t, e, r) {
  var i = [
    "momentum",
    "momentumLimitTime",
    "momentumLimitDistance",
    "deceleration",
    "swipeBounceTime",
    "swipeTime",
    "outOfBoundaryDampingFactor",
    "specifiedIndexAsContent"
  ].reduce(function(n, s) {
    return n[s] = o[s], n;
  }, {});
  return i.scrollable = !!o[t], i.bounces = e, i.rect = r, i;
}
function I(o, t, e) {
  e.forEach(function(r) {
    var i, n;
    typeof r == "string" ? i = n = r : (i = r.source, n = r.target), o.on(i, function() {
      for (var s = [], a = 0; a < arguments.length; a++)
        s[a] = arguments[a];
      return t.trigger.apply(t, et([n], s));
    });
  });
}
function Rt(o, t) {
  for (var e = Object.keys(o), r = 0, i = e; r < i.length; r++) {
    var n = i[r];
    if (o[n] !== t[n])
      return !1;
  }
  return !0;
}
var tt = 1, It = (
  /** @class */
  function() {
    function o(t, e, r) {
      this.wrapper = t, this.content = e, this.resizeTimeout = 0, this.hooks = new g([
        "beforeStart",
        "beforeMove",
        "beforeScrollStart",
        "scrollStart",
        "scroll",
        "beforeEnd",
        "scrollEnd",
        "resize",
        "touchEnd",
        "end",
        "flick",
        "scrollCancel",
        "momentum",
        "scrollTo",
        "minDistanceScroll",
        "scrollToElement",
        "beforeRefresh"
      ]), this.options = r;
      var i = this.options.bounce, n = i.left, s = i.right, a = i.top, c = i.bottom;
      this.scrollBehaviorX = new $(t, e, Q(r, "scrollX", [n, s], {
        size: "width",
        position: "left"
      })), this.scrollBehaviorY = new $(t, e, Q(r, "scrollY", [a, c], {
        size: "height",
        position: "top"
      })), this.translater = new Mt(this.content), this.animater = Lt(this.content, this.translater, this.options), this.actionsHandler = new Xt(this.options.bindToTarget ? this.content : t, Kt(this.options)), this.actions = new zt(this.scrollBehaviorX, this.scrollBehaviorY, this.actionsHandler, this.animater, this.options);
      var h = this.resize.bind(this);
      this.resizeRegister = new Y(window, [
        {
          name: "orientationchange",
          handler: h
        },
        {
          name: "resize",
          handler: h
        }
      ]), this.registerTransitionEnd(), this.init();
    }
    return o.prototype.init = function() {
      var t = this;
      this.bindTranslater(), this.bindAnimater(), this.bindActions(), this.hooks.on(this.hooks.eventTypes.scrollEnd, function() {
        t.togglePointerEvents(!0);
      });
    }, o.prototype.registerTransitionEnd = function() {
      this.transitionEndRegister = new Y(this.content, [
        {
          name: T.transitionEnd,
          handler: this.transitionEnd.bind(this)
        }
      ]);
    }, o.prototype.bindTranslater = function() {
      var t = this, e = this.translater.hooks;
      e.on(e.eventTypes.beforeTranslate, function(r) {
        t.options.translateZ && r.push(t.options.translateZ);
      }), e.on(e.eventTypes.translate, function(r) {
        var i = t.getCurrentPos();
        if (t.updatePositions(r), t.actions.ensuringInteger === !0) {
          t.actions.ensuringInteger = !1;
          return;
        }
        (r.x !== i.x || r.y !== i.y) && t.togglePointerEvents(!1);
      });
    }, o.prototype.bindAnimater = function() {
      var t = this;
      this.animater.hooks.on(this.animater.hooks.eventTypes.end, function(e) {
        t.resetPosition(t.options.bounceTime) || (t.animater.setPending(!1), t.hooks.trigger(t.hooks.eventTypes.scrollEnd, e));
      }), I(this.animater.hooks, this.hooks, [
        {
          source: this.animater.hooks.eventTypes.move,
          target: this.hooks.eventTypes.scroll
        },
        {
          source: this.animater.hooks.eventTypes.forceStop,
          target: this.hooks.eventTypes.scrollEnd
        }
      ]);
    }, o.prototype.bindActions = function() {
      var t = this, e = this.actions;
      I(e.hooks, this.hooks, [
        {
          source: e.hooks.eventTypes.start,
          target: this.hooks.eventTypes.beforeStart
        },
        {
          source: e.hooks.eventTypes.start,
          target: this.hooks.eventTypes.beforeScrollStart
        },
        {
          source: e.hooks.eventTypes.beforeMove,
          target: this.hooks.eventTypes.beforeMove
        },
        {
          source: e.hooks.eventTypes.scrollStart,
          target: this.hooks.eventTypes.scrollStart
        },
        {
          source: e.hooks.eventTypes.scroll,
          target: this.hooks.eventTypes.scroll
        },
        {
          source: e.hooks.eventTypes.beforeEnd,
          target: this.hooks.eventTypes.beforeEnd
        }
      ]), e.hooks.on(e.hooks.eventTypes.end, function(r, i) {
        if (t.hooks.trigger(t.hooks.eventTypes.touchEnd, i), t.hooks.trigger(t.hooks.eventTypes.end, i) || !e.fingerMoved && (t.hooks.trigger(t.hooks.eventTypes.scrollCancel), t.checkClick(r)))
          return !0;
        if (t.resetPosition(t.options.bounceTime, k.bounce))
          return t.animater.setForceStopped(!1), !0;
      }), e.hooks.on(e.hooks.eventTypes.scrollEnd, function(r, i) {
        var n = Math.abs(r.x - t.scrollBehaviorX.startPos), s = Math.abs(r.y - t.scrollBehaviorY.startPos);
        if (t.checkFlick(i, n, s)) {
          t.animater.setForceStopped(!1), t.hooks.trigger(t.hooks.eventTypes.flick);
          return;
        }
        if (t.momentum(r, i)) {
          t.animater.setForceStopped(!1);
          return;
        }
        e.contentMoved && t.hooks.trigger(t.hooks.eventTypes.scrollEnd, r), t.animater.forceStopped && t.animater.setForceStopped(!1);
      });
    }, o.prototype.checkFlick = function(t, e, r) {
      var i = 1;
      if (this.hooks.events.flick.length > 1 && t < this.options.flickLimitTime && e < this.options.flickLimitDistance && r < this.options.flickLimitDistance && (r > i || e > i))
        return !0;
    }, o.prototype.momentum = function(t, e) {
      var r = {
        time: 0,
        easing: k.swiper,
        newX: t.x,
        newY: t.y
      }, i = this.scrollBehaviorX.end(e), n = this.scrollBehaviorY.end(e);
      if (r.newX = R(i.destination) ? r.newX : i.destination, r.newY = R(n.destination) ? r.newY : n.destination, r.time = Math.max(i.duration, n.duration), this.hooks.trigger(this.hooks.eventTypes.momentum, r, this), r.newX !== t.x || r.newY !== t.y)
        return (r.newX > this.scrollBehaviorX.minScrollPos || r.newX < this.scrollBehaviorX.maxScrollPos || r.newY > this.scrollBehaviorY.minScrollPos || r.newY < this.scrollBehaviorY.maxScrollPos) && (r.easing = k.swipeBounce), this.scrollTo(r.newX, r.newY, r.time, r.easing), !0;
    }, o.prototype.checkClick = function(t) {
      var e = {
        preventClick: this.animater.forceStopped
      };
      if (this.hooks.trigger(this.hooks.eventTypes.checkClick))
        return this.animater.setForceStopped(!1), !0;
      if (!e.preventClick) {
        var r = this.options.dblclick, i = !1;
        if (r && this.lastClickTime) {
          var n = r.delay, s = n === void 0 ? 300 : n;
          b() - this.lastClickTime < s && (i = !0, Pt(t));
        }
        return this.options.tap && St(t, this.options.tap), this.options.click && !B(t.target, this.options.preventDefaultException) && st(t), this.lastClickTime = i ? null : b(), !0;
      }
      return !1;
    }, o.prototype.resize = function() {
      var t = this;
      this.actions.enabled && (ft && (this.wrapper.scrollTop = 0), clearTimeout(this.resizeTimeout), this.resizeTimeout = window.setTimeout(function() {
        t.hooks.trigger(t.hooks.eventTypes.resize);
      }, this.options.resizePolling));
    }, o.prototype.transitionEnd = function(t) {
      if (!(t.target !== this.content || !this.animater.pending)) {
        var e = this.animater;
        e.transitionTime(), this.resetPosition(this.options.bounceTime, k.bounce) || (this.animater.setPending(!1), this.options.probeType !== 3 && this.hooks.trigger(this.hooks.eventTypes.scrollEnd, this.getCurrentPos()));
      }
    }, o.prototype.togglePointerEvents = function(t) {
      t === void 0 && (t = !0);
      for (var e = this.content.children.length ? this.content.children : [this.content], r = t ? "auto" : "none", i = 0; i < e.length; i++) {
        var n = e[i];
        n.isBScrollContainer || (n.style.pointerEvents = r);
      }
    }, o.prototype.refresh = function(t) {
      var e = this.setContent(t);
      this.hooks.trigger(this.hooks.eventTypes.beforeRefresh), this.scrollBehaviorX.refresh(t), this.scrollBehaviorY.refresh(t), e && (this.translater.setContent(t), this.animater.setContent(t), this.transitionEndRegister.destroy(), this.registerTransitionEnd(), this.options.bindToTarget && this.actionsHandler.setContent(t)), this.actions.refresh(), this.wrapperOffset = j(this.wrapper);
    }, o.prototype.setContent = function(t) {
      var e = t !== this.content;
      return e && (this.content = t), e;
    }, o.prototype.scrollBy = function(t, e, r, i) {
      r === void 0 && (r = 0);
      var n = this.getCurrentPos(), s = n.x, a = n.y;
      i = i || k.bounce, t += s, e += a, this.scrollTo(t, e, r, i);
    }, o.prototype.scrollTo = function(t, e, r, i, n) {
      r === void 0 && (r = 0), i === void 0 && (i = k.bounce), n === void 0 && (n = {
        start: {},
        end: {}
      });
      var s = this.options.useTransition ? i.style : i.fn, a = this.getCurrentPos(), c = E({ x: a.x, y: a.y }, n.start), h = E({
        x: t,
        y: e
      }, n.end);
      if (this.hooks.trigger(this.hooks.eventTypes.scrollTo, h), !Rt(c, h)) {
        var l = Math.abs(h.x - c.x), u = Math.abs(h.y - c.y);
        l < tt && u < tt && (r = 0, this.hooks.trigger(this.hooks.eventTypes.minDistanceScroll)), this.animater.move(c, h, r, s);
      }
    }, o.prototype.scrollToElement = function(t, e, r, i, n) {
      var s = rt(t), a = j(s), c = function(l, u, p) {
        return typeof l == "number" ? l : l ? Math.round(u / 2 - p / 2) : 0;
      };
      r = c(r, s.offsetWidth, this.wrapper.offsetWidth), i = c(i, s.offsetHeight, this.wrapper.offsetHeight);
      var h = function(l, u, p, y) {
        return l -= u, l = y.adjustPosition(l - p), l;
      };
      a.left = h(a.left, this.wrapperOffset.left, r, this.scrollBehaviorX), a.top = h(a.top, this.wrapperOffset.top, i, this.scrollBehaviorY), !this.hooks.trigger(this.hooks.eventTypes.scrollToElement, s, a) && this.scrollTo(a.left, a.top, e, n);
    }, o.prototype.resetPosition = function(t, e) {
      t === void 0 && (t = 0), e === void 0 && (e = k.bounce);
      var r = this.scrollBehaviorX.checkInBoundary(), i = r.position, n = r.inBoundary, s = this.scrollBehaviorY.checkInBoundary(), a = s.position, c = s.inBoundary;
      return n && c ? !1 : (vt && this.reflow(), this.scrollTo(i, a, t, e), !0);
    }, o.prototype.reflow = function() {
      this._reflow = this.content.offsetHeight;
    }, o.prototype.updatePositions = function(t) {
      this.scrollBehaviorX.updatePosition(t.x), this.scrollBehaviorY.updatePosition(t.y);
    }, o.prototype.getCurrentPos = function() {
      return this.actions.getCurrentPos();
    }, o.prototype.enable = function() {
      this.actions.enabled = !0;
    }, o.prototype.disable = function() {
      S(this.animater.timer), this.actions.enabled = !1;
    }, o.prototype.destroy = function() {
      var t = this, e = [
        "resizeRegister",
        "transitionEndRegister",
        "actionsHandler",
        "actions",
        "hooks",
        "animater",
        "translater",
        "scrollBehaviorX",
        "scrollBehaviorY"
      ];
      e.forEach(function(r) {
        return t[r].destroy();
      });
    }, o;
  }()
), A = (
  /** @class */
  function(o) {
    O(t, o);
    function t(e, r) {
      var i = o.call(this, [
        "refresh",
        "contentChanged",
        "enable",
        "disable",
        "beforeScrollStart",
        "scrollStart",
        "scroll",
        "scrollEnd",
        "scrollCancel",
        "touchEnd",
        "flick",
        "destroy"
      ]) || this, n = rt(e);
      return n ? (i.plugins = {}, i.options = new xt().merge(r).process(), i.setContent(n).valid && (i.hooks = new g([
        "refresh",
        "enable",
        "disable",
        "destroy",
        "beforeInitialScrollTo",
        "contentChanged"
      ]), i.init(n)), i) : (M("Can not resolve the wrapper DOM."), i);
    }
    return t.use = function(e) {
      var r = e.pluginName, i = t.plugins.some(function(n) {
        return e === n.ctor;
      });
      return i ? t : R(r) ? (M("Plugin Class must specify plugin's name in static property by 'pluginName' field."), t) : (t.pluginsMap[r] = !0, t.plugins.push({
        name: r,
        applyOrder: e.applyOrder,
        ctor: e
      }), t);
    }, t.prototype.setContent = function(e) {
      var r = !1, i = !0, n = e.children[this.options.specifiedIndexAsContent];
      return n ? (r = this.content !== n, r && (this.content = n)) : (M("The wrapper need at least one child element to be content element to scroll."), i = !1), {
        valid: i,
        contentChanged: r
      };
    }, t.prototype.init = function(e) {
      var r = this;
      this.wrapper = e, e.isBScrollContainer = !0, this.scroller = new It(e, this.content, this.options), this.scroller.hooks.on(this.scroller.hooks.eventTypes.resize, function() {
        r.refresh();
      }), this.eventBubbling(), this.handleAutoBlur(), this.enable(), this.proxy(ut), this.applyPlugins(), this.refreshWithoutReset(this.content);
      var i = this.options, n = i.startX, s = i.startY, a = {
        x: n,
        y: s
      };
      this.hooks.trigger(this.hooks.eventTypes.beforeInitialScrollTo, a) || this.scroller.scrollTo(a.x, a.y);
    }, t.prototype.applyPlugins = function() {
      var e = this, r = this.options;
      t.plugins.sort(function(i, n) {
        var s, a = (s = {}, s.pre = -1, s.post = 1, s), c = i.applyOrder ? a[i.applyOrder] : 0, h = n.applyOrder ? a[n.applyOrder] : 0;
        return c - h;
      }).forEach(function(i) {
        var n = i.ctor;
        r[i.name] && typeof n == "function" && (e.plugins[i.name] = new n(e));
      });
    }, t.prototype.handleAutoBlur = function() {
      this.options.autoBlur && this.on(this.eventTypes.beforeScrollStart, function() {
        var e = document.activeElement;
        e && (e.tagName === "INPUT" || e.tagName === "TEXTAREA") && e.blur();
      });
    }, t.prototype.eventBubbling = function() {
      I(this.scroller.hooks, this, [
        this.eventTypes.beforeScrollStart,
        this.eventTypes.scrollStart,
        this.eventTypes.scroll,
        this.eventTypes.scrollEnd,
        this.eventTypes.scrollCancel,
        this.eventTypes.touchEnd,
        this.eventTypes.flick
      ]);
    }, t.prototype.refreshWithoutReset = function(e) {
      this.scroller.refresh(e), this.hooks.trigger(this.hooks.eventTypes.refresh, e), this.trigger(this.eventTypes.refresh, e);
    }, t.prototype.proxy = function(e) {
      var r = this;
      e.forEach(function(i) {
        var n = i.key, s = i.sourceKey;
        Ct(r, s, n);
      });
    }, t.prototype.refresh = function() {
      var e = this.setContent(this.wrapper), r = e.contentChanged, i = e.valid;
      if (i) {
        var n = this.content;
        this.refreshWithoutReset(n), r && (this.hooks.trigger(this.hooks.eventTypes.contentChanged, n), this.trigger(this.eventTypes.contentChanged, n)), this.scroller.resetPosition();
      }
    }, t.prototype.enable = function() {
      this.scroller.enable(), this.hooks.trigger(this.hooks.eventTypes.enable), this.trigger(this.eventTypes.enable);
    }, t.prototype.disable = function() {
      this.scroller.disable(), this.hooks.trigger(this.hooks.eventTypes.disable), this.trigger(this.eventTypes.disable);
    }, t.prototype.destroy = function() {
      this.hooks.trigger(this.hooks.eventTypes.destroy), this.trigger(this.eventTypes.destroy), this.scroller.destroy();
    }, t.prototype.eventRegister = function(e) {
      this.registerType(e);
    }, t.plugins = [], t.pluginsMap = {}, t;
  }(g)
);
function L(o, t) {
  var e = new A(o, t);
  return e;
}
L.use = A.use;
L.plugins = A.plugins;
L.pluginsMap = A.pluginsMap;
var Wt = L;
export {
  $ as Behavior,
  Dt as CustomOptions,
  L as createBScroll,
  Wt as default
};
